From 1577ee5525fedf63b32338142e111e0d70199062 Mon Sep 17 00:00:00 2001 From: vrubelroman Date: Wed, 13 May 2026 13:47:38 +0300 Subject: [PATCH] fix: use Recommends instead of Depends for ueberzugpp in deb, add Ubuntu install guide --- README.md | 6 +- scripts/build-deb.sh | 2 +- src/vcom-0.2.5.tar.gz | 1 + src/vcom-0.2.5/.codex | 0 src/vcom-0.2.5/.github/workflows/release.yml | 86 + src/vcom-0.2.5/.gitignore | 2 + src/vcom-0.2.5/LICENSE | 674 ++ src/vcom-0.2.5/PKGBUILD | 34 + src/vcom-0.2.5/README.md | 204 + src/vcom-0.2.5/docs/architecture.md | 196 + src/vcom-0.2.5/docs/project-description.md | 128 + src/vcom-0.2.5/docs/screen.png | Bin 0 -> 213704 bytes src/vcom-0.2.5/docs/screen2.png | Bin 0 -> 366042 bytes src/vcom-0.2.5/docs/screen3.png | Bin 0 -> 335261 bytes src/vcom-0.2.5/flake.lock | 61 + src/vcom-0.2.5/flake.nix | 59 + src/vcom-0.2.5/go.mod | 36 + src/vcom-0.2.5/go.sum | 63 + src/vcom-0.2.5/internal/config/config.go | 273 + src/vcom-0.2.5/internal/config/session.go | 84 + src/vcom-0.2.5/internal/fs/archive.go | 656 ++ src/vcom-0.2.5/internal/fs/entry.go | 156 + src/vcom-0.2.5/internal/fs/ops.go | 527 + src/vcom-0.2.5/internal/fs/ops_test.go | 135 + src/vcom-0.2.5/internal/fs/preview.go | 693 ++ src/vcom-0.2.5/internal/fs/remote/client.go | 751 ++ src/vcom-0.2.5/internal/fs/remote/config.go | 209 + src/vcom-0.2.5/internal/fs/remote/host.go | 311 + src/vcom-0.2.5/internal/fs/scan.go | 275 + src/vcom-0.2.5/internal/theme/theme.go | 836 ++ src/vcom-0.2.5/internal/ui/icon_mode.go | 37 + src/vcom-0.2.5/internal/ui/image_overlay.go | 416 + src/vcom-0.2.5/internal/ui/keymap.go | 97 + src/vcom-0.2.5/internal/ui/layout.go | 52 + src/vcom-0.2.5/internal/ui/model.go | 6742 ++++++++++++ src/vcom-0.2.5/internal/ui/pane.go | 850 ++ src/vcom-0.2.5/internal/ui/ssh.go | 244 + .../plans/extended-preview-feature.md | 497 + src/vcom-0.2.5/plans/feature-roadmap.md | 44 + .../plans/mirror-and-cursor-memory.md | 88 + src/vcom-0.2.5/plans/theme-selector-dialog.md | 193 + src/vcom-0.2.5/scripts/build-deb.sh | 37 + src/vcom-0.2.5/vcom.toml | 45 + .../alecthomas/chroma/v2/.editorconfig | 17 + .../alecthomas/chroma/v2/.gitignore | 28 + .../alecthomas/chroma/v2/.golangci.yml | 89 + .../alecthomas/chroma/v2/.goreleaser.yml | 34 + .../github.com/alecthomas/chroma/v2/AGENTS.md | 11 + .../github.com/alecthomas/chroma/v2/Bitfile | 24 + .../github.com/alecthomas/chroma/v2/COPYING | 19 + .../alecthomas/chroma/v2/Dockerfile | 64 + .../github.com/alecthomas/chroma/v2/Justfile | 55 + .../github.com/alecthomas/chroma/v2/README.md | 307 + .../alecthomas/chroma/v2/biome.json | 6 + .../alecthomas/chroma/v2/chroma.jpg | Bin 0 -> 80950 bytes .../alecthomas/chroma/v2/coalesce.go | 35 + .../github.com/alecthomas/chroma/v2/colour.go | 192 + .../alecthomas/chroma/v2/delegate.go | 161 + .../github.com/alecthomas/chroma/v2/doc.go | 7 + .../alecthomas/chroma/v2/emitters.go | 233 + .../alecthomas/chroma/v2/formatter.go | 43 + .../alecthomas/chroma/v2/formatters/api.go | 57 + .../chroma/v2/formatters/html/html.go | 648 ++ .../alecthomas/chroma/v2/formatters/json.go | 39 + .../v2/formatters/svg/font_liberation_mono.go | 51 + .../chroma/v2/formatters/svg/svg.go | 222 + .../alecthomas/chroma/v2/formatters/tokens.go | 18 + .../chroma/v2/formatters/tty_indexed.go | 284 + .../chroma/v2/formatters/tty_truecolour.go | 76 + .../alecthomas/chroma/v2/iterator.go | 93 + .../github.com/alecthomas/chroma/v2/lexer.go | 179 + .../alecthomas/chroma/v2/lexers/README.md | 46 + .../alecthomas/chroma/v2/lexers/caddyfile.go | 275 + .../alecthomas/chroma/v2/lexers/cl.go | 243 + .../alecthomas/chroma/v2/lexers/dns.go | 17 + .../alecthomas/chroma/v2/lexers/emacs.go | 533 + .../chroma/v2/lexers/embedded/abap.xml | 154 + .../chroma/v2/lexers/embedded/abnf.xml | 66 + .../v2/lexers/embedded/actionscript.xml | 68 + .../v2/lexers/embedded/actionscript_3.xml | 163 + .../chroma/v2/lexers/embedded/ada.xml | 321 + .../chroma/v2/lexers/embedded/agda.xml | 66 + .../chroma/v2/lexers/embedded/al.xml | 75 + .../chroma/v2/lexers/embedded/alloy.xml | 58 + .../chroma/v2/lexers/embedded/angular2.xml | 109 + .../chroma/v2/lexers/embedded/antlr.xml | 317 + .../chroma/v2/lexers/embedded/apacheconf.xml | 74 + .../chroma/v2/lexers/embedded/apl.xml | 59 + .../chroma/v2/lexers/embedded/applescript.xml | 151 + .../v2/lexers/embedded/arangodb_aql.xml | 174 + .../chroma/v2/lexers/embedded/arduino.xml | 322 + .../chroma/v2/lexers/embedded/armasm.xml | 126 + .../chroma/v2/lexers/embedded/atl.xml | 165 + .../chroma/v2/lexers/embedded/autohotkey.xml | 78 + .../chroma/v2/lexers/embedded/autoit.xml | 70 + .../chroma/v2/lexers/embedded/awk.xml | 95 + .../chroma/v2/lexers/embedded/ballerina.xml | 97 + .../chroma/v2/lexers/embedded/bash.xml | 222 + .../v2/lexers/embedded/bash_session.xml | 25 + .../chroma/v2/lexers/embedded/batchfile.xml | 660 ++ .../chroma/v2/lexers/embedded/beef.xml | 120 + .../chroma/v2/lexers/embedded/bibtex.xml | 152 + .../chroma/v2/lexers/embedded/bicep.xml | 84 + .../chroma/v2/lexers/embedded/blitzbasic.xml | 141 + .../chroma/v2/lexers/embedded/bnf.xml | 28 + .../chroma/v2/lexers/embedded/bqn.xml | 83 + .../chroma/v2/lexers/embedded/brainfuck.xml | 51 + .../chroma/v2/lexers/embedded/c#.xml | 121 + .../chroma/v2/lexers/embedded/c++.xml | 331 + .../chroma/v2/lexers/embedded/c.xml | 260 + .../chroma/v2/lexers/embedded/c3.xml | 374 + .../chroma/v2/lexers/embedded/cap_n_proto.xml | 122 + .../v2/lexers/embedded/cassandra_cql.xml | 137 + .../chroma/v2/lexers/embedded/ceylon.xml | 151 + .../chroma/v2/lexers/embedded/cfengine3.xml | 197 + .../chroma/v2/lexers/embedded/cfstatement.xml | 92 + .../chroma/v2/lexers/embedded/chaiscript.xml | 134 + .../chroma/v2/lexers/embedded/chapel.xml | 143 + .../chroma/v2/lexers/embedded/cheetah.xml | 55 + .../chroma/v2/lexers/embedded/clojure.xml | 71 + .../chroma/v2/lexers/embedded/cmake.xml | 90 + .../chroma/v2/lexers/embedded/cobol.xml | 90 + .../v2/lexers/embedded/coffeescript.xml | 210 + .../chroma/v2/lexers/embedded/common_lisp.xml | 184 + .../chroma/v2/lexers/embedded/coq.xml | 136 + .../chroma/v2/lexers/embedded/core.xml | 79 + .../chroma/v2/lexers/embedded/crystal.xml | 762 ++ .../chroma/v2/lexers/embedded/css.xml | 323 + .../chroma/v2/lexers/embedded/csv.xml | 53 + .../chroma/v2/lexers/embedded/cue.xml | 85 + .../chroma/v2/lexers/embedded/cython.xml | 372 + .../chroma/v2/lexers/embedded/d.xml | 133 + .../chroma/v2/lexers/embedded/dart.xml | 213 + .../chroma/v2/lexers/embedded/dax.xml | 39 + .../v2/lexers/embedded/desktop_entry.xml | 17 + .../chroma/v2/lexers/embedded/devicetree.xml | 251 + .../chroma/v2/lexers/embedded/diff.xml | 52 + .../v2/lexers/embedded/django_jinja.xml | 153 + .../chroma/v2/lexers/embedded/dns.xml | 44 + .../chroma/v2/lexers/embedded/docker.xml | 68 + .../chroma/v2/lexers/embedded/dtd.xml | 168 + .../chroma/v2/lexers/embedded/dylan.xml | 176 + .../chroma/v2/lexers/embedded/ebnf.xml | 90 + .../chroma/v2/lexers/embedded/elixir.xml | 744 ++ .../chroma/v2/lexers/embedded/elm.xml | 119 + .../chroma/v2/lexers/embedded/emacslisp.xml | 132 + .../chroma/v2/lexers/embedded/erlang.xml | 166 + .../chroma/v2/lexers/embedded/factor.xml | 412 + .../chroma/v2/lexers/embedded/fennel.xml | 68 + .../chroma/v2/lexers/embedded/fish.xml | 159 + .../chroma/v2/lexers/embedded/forth.xml | 78 + .../chroma/v2/lexers/embedded/fortran.xml | 102 + .../v2/lexers/embedded/fortranfixed.xml | 71 + .../chroma/v2/lexers/embedded/fsharp.xml | 245 + .../chroma/v2/lexers/embedded/gas.xml | 150 + .../chroma/v2/lexers/embedded/gdscript.xml | 259 + .../chroma/v2/lexers/embedded/gdscript3.xml | 270 + .../chroma/v2/lexers/embedded/gherkin.xml | 263 + .../chroma/v2/lexers/embedded/gleam.xml | 100 + .../chroma/v2/lexers/embedded/glsl.xml | 65 + .../chroma/v2/lexers/embedded/gnuplot.xml | 289 + .../chroma/v2/lexers/embedded/go_template.xml | 114 + .../chroma/v2/lexers/embedded/graphql.xml | 88 + .../chroma/v2/lexers/embedded/groff.xml | 90 + .../chroma/v2/lexers/embedded/groovy.xml | 135 + .../chroma/v2/lexers/embedded/handlebars.xml | 147 + .../chroma/v2/lexers/embedded/hare.xml | 98 + .../chroma/v2/lexers/embedded/haskell.xml | 275 + .../chroma/v2/lexers/embedded/hcl.xml | 143 + .../chroma/v2/lexers/embedded/hexdump.xml | 189 + .../chroma/v2/lexers/embedded/hlb.xml | 131 + .../chroma/v2/lexers/embedded/hlsl.xml | 110 + .../chroma/v2/lexers/embedded/holyc.xml | 252 + .../chroma/v2/lexers/embedded/html.xml | 159 + .../chroma/v2/lexers/embedded/hy.xml | 104 + .../chroma/v2/lexers/embedded/idris.xml | 216 + .../chroma/v2/lexers/embedded/igor.xml | 47 + .../chroma/v2/lexers/embedded/ini.xml | 52 + .../chroma/v2/lexers/embedded/io.xml | 71 + .../chroma/v2/lexers/embedded/iscdhcpd.xml | 96 + .../chroma/v2/lexers/embedded/j.xml | 157 + .../chroma/v2/lexers/embedded/janet.xml | 48 + .../chroma/v2/lexers/embedded/java.xml | 193 + .../chroma/v2/lexers/embedded/javascript.xml | 160 + .../chroma/v2/lexers/embedded/json.xml | 112 + .../chroma/v2/lexers/embedded/jsonata.xml | 83 + .../chroma/v2/lexers/embedded/jsonnet.xml | 138 + .../chroma/v2/lexers/embedded/julia.xml | 400 + .../chroma/v2/lexers/embedded/jungle.xml | 98 + .../chroma/v2/lexers/embedded/kakoune.xml | 96 + .../chroma/v2/lexers/embedded/kdl.xml | 75 + .../chroma/v2/lexers/embedded/kotlin.xml | 234 + .../chroma/v2/lexers/embedded/lean.xml | 56 + .../embedded/lighttpd_configuration_file.xml | 42 + .../chroma/v2/lexers/embedded/llvm.xml | 73 + .../chroma/v2/lexers/embedded/lox.xml | 78 + .../chroma/v2/lexers/embedded/lua.xml | 160 + .../chroma/v2/lexers/embedded/makefile.xml | 131 + .../chroma/v2/lexers/embedded/mako.xml | 120 + .../chroma/v2/lexers/embedded/mason.xml | 89 + .../embedded/materialize_sql_dialect.xml | 155 + .../chroma/v2/lexers/embedded/mathematica.xml | 60 + .../chroma/v2/lexers/embedded/matlab.xml | 114 + .../chroma/v2/lexers/embedded/mcfunction.xml | 138 + .../chroma/v2/lexers/embedded/meson.xml | 85 + .../chroma/v2/lexers/embedded/metal.xml | 270 + .../chroma/v2/lexers/embedded/microcad.xml | 139 + .../chroma/v2/lexers/embedded/minizinc.xml | 82 + .../chroma/v2/lexers/embedded/mlir.xml | 73 + .../chroma/v2/lexers/embedded/modelica.xml | 106 + .../chroma/v2/lexers/embedded/modula-2.xml | 245 + .../chroma/v2/lexers/embedded/mojo.xml | 228 + .../chroma/v2/lexers/embedded/monkeyc.xml | 153 + .../chroma/v2/lexers/embedded/moonbit.xml | 75 + .../chroma/v2/lexers/embedded/moonscript.xml | 83 + .../v2/lexers/embedded/morrowindscript.xml | 90 + .../chroma/v2/lexers/embedded/myghty.xml | 77 + .../chroma/v2/lexers/embedded/mysql.xml | 121 + .../chroma/v2/lexers/embedded/nasm.xml | 126 + .../chroma/v2/lexers/embedded/natural.xml | 143 + .../chroma/v2/lexers/embedded/ndisasm.xml | 123 + .../chroma/v2/lexers/embedded/newspeak.xml | 121 + .../embedded/nginx_configuration_file.xml | 101 + .../chroma/v2/lexers/embedded/nim.xml | 211 + .../chroma/v2/lexers/embedded/nix.xml | 258 + .../chroma/v2/lexers/embedded/nsis.xml | 59 + .../chroma/v2/lexers/embedded/nu.xml | 121 + .../chroma/v2/lexers/embedded/objective-c.xml | 510 + .../v2/lexers/embedded/objectpascal.xml | 142 + .../chroma/v2/lexers/embedded/ocaml.xml | 153 + .../chroma/v2/lexers/embedded/octave.xml | 101 + .../chroma/v2/lexers/embedded/odin.xml | 127 + .../v2/lexers/embedded/onesenterprise.xml | 92 + .../v2/lexers/embedded/openedge_abl.xml | 101 + .../chroma/v2/lexers/embedded/openscad.xml | 96 + .../chroma/v2/lexers/embedded/org_mode.xml | 329 + .../chroma/v2/lexers/embedded/pacmanconf.xml | 37 + .../chroma/v2/lexers/embedded/perl.xml | 400 + .../chroma/v2/lexers/embedded/php.xml | 212 + .../chroma/v2/lexers/embedded/pig.xml | 105 + .../chroma/v2/lexers/embedded/pkgconfig.xml | 73 + .../chroma/v2/lexers/embedded/pl_pgsql.xml | 119 + .../chroma/v2/lexers/embedded/plaintext.xml | 21 + .../chroma/v2/lexers/embedded/plutus_core.xml | 105 + .../chroma/v2/lexers/embedded/pony.xml | 135 + .../embedded/postgresql_sql_dialect.xml | 155 + .../chroma/v2/lexers/embedded/postscript.xml | 89 + .../chroma/v2/lexers/embedded/povray.xml | 58 + .../chroma/v2/lexers/embedded/powerquery.xml | 51 + .../chroma/v2/lexers/embedded/powershell.xml | 230 + .../chroma/v2/lexers/embedded/prolog.xml | 115 + .../chroma/v2/lexers/embedded/promela.xml | 119 + .../chroma/v2/lexers/embedded/promql.xml | 123 + .../chroma/v2/lexers/embedded/properties.xml | 45 + .../v2/lexers/embedded/protocol_buffer.xml | 118 + .../chroma/v2/lexers/embedded/prql.xml | 161 + .../chroma/v2/lexers/embedded/psl.xml | 213 + .../chroma/v2/lexers/embedded/puppet.xml | 100 + .../chroma/v2/lexers/embedded/python.xml | 595 ++ .../chroma/v2/lexers/embedded/python_2.xml | 356 + .../chroma/v2/lexers/embedded/qbasic.xml | 173 + .../chroma/v2/lexers/embedded/qml.xml | 113 + .../chroma/v2/lexers/embedded/r.xml | 128 + .../chroma/v2/lexers/embedded/racket.xml | 260 + .../chroma/v2/lexers/embedded/ragel.xml | 149 + .../chroma/v2/lexers/embedded/react.xml | 236 + .../chroma/v2/lexers/embedded/reasonml.xml | 147 + .../chroma/v2/lexers/embedded/reg.xml | 68 + .../chroma/v2/lexers/embedded/rego.xml | 94 + .../chroma/v2/lexers/embedded/rexx.xml | 127 + .../chroma/v2/lexers/embedded/rgbasm.xml | 239 + .../chroma/v2/lexers/embedded/ring.xml | 74 + .../chroma/v2/lexers/embedded/rpgle.xml | 176 + .../chroma/v2/lexers/embedded/rpm_spec.xml | 58 + .../chroma/v2/lexers/embedded/ruby.xml | 724 ++ .../chroma/v2/lexers/embedded/rust.xml | 375 + .../chroma/v2/lexers/embedded/sas.xml | 191 + .../chroma/v2/lexers/embedded/sass.xml | 362 + .../chroma/v2/lexers/embedded/scala.xml | 274 + .../chroma/v2/lexers/embedded/scheme.xml | 106 + .../chroma/v2/lexers/embedded/scilab.xml | 98 + .../chroma/v2/lexers/embedded/scss.xml | 373 + .../chroma/v2/lexers/embedded/sed.xml | 92 + .../chroma/v2/lexers/embedded/sieve.xml | 61 + .../chroma/v2/lexers/embedded/smali.xml | 73 + .../chroma/v2/lexers/embedded/smalltalk.xml | 294 + .../chroma/v2/lexers/embedded/smarty.xml | 79 + .../chroma/v2/lexers/embedded/snbt.xml | 58 + .../chroma/v2/lexers/embedded/snobol.xml | 95 + .../chroma/v2/lexers/embedded/solidity.xml | 291 + .../chroma/v2/lexers/embedded/sourcepawn.xml | 59 + .../chroma/v2/lexers/embedded/sparql.xml | 160 + .../chroma/v2/lexers/embedded/sql.xml | 90 + .../chroma/v2/lexers/embedded/squidconf.xml | 63 + .../chroma/v2/lexers/embedded/standard_ml.xml | 548 + .../chroma/v2/lexers/embedded/stas.xml | 85 + .../chroma/v2/lexers/embedded/stylus.xml | 132 + .../chroma/v2/lexers/embedded/swift.xml | 207 + .../chroma/v2/lexers/embedded/systemd.xml | 63 + .../v2/lexers/embedded/systemverilog.xml | 181 + .../chroma/v2/lexers/embedded/tablegen.xml | 69 + .../chroma/v2/lexers/embedded/tal.xml | 43 + .../chroma/v2/lexers/embedded/tasm.xml | 135 + .../chroma/v2/lexers/embedded/tcl.xml | 272 + .../chroma/v2/lexers/embedded/tcsh.xml | 121 + .../chroma/v2/lexers/embedded/termcap.xml | 75 + .../chroma/v2/lexers/embedded/terminfo.xml | 84 + .../chroma/v2/lexers/embedded/terraform.xml | 149 + .../chroma/v2/lexers/embedded/tex.xml | 113 + .../chroma/v2/lexers/embedded/thrift.xml | 154 + .../chroma/v2/lexers/embedded/toml.xml | 45 + .../chroma/v2/lexers/embedded/tradingview.xml | 81 + .../v2/lexers/embedded/transact-sql.xml | 137 + .../chroma/v2/lexers/embedded/turing.xml | 82 + .../chroma/v2/lexers/embedded/turtle.xml | 170 + .../chroma/v2/lexers/embedded/twig.xml | 155 + .../chroma/v2/lexers/embedded/txtpb.xml | 162 + .../chroma/v2/lexers/embedded/typescript.xml | 302 + .../chroma/v2/lexers/embedded/typoscript.xml | 178 + .../v2/lexers/embedded/typoscriptcssdata.xml | 52 + .../v2/lexers/embedded/typoscripthtmldata.xml | 52 + .../chroma/v2/lexers/embedded/typst.xml | 108 + .../chroma/v2/lexers/embedded/ucode.xml | 147 + .../chroma/v2/lexers/embedded/v.xml | 355 + .../chroma/v2/lexers/embedded/v_shell.xml | 365 + .../chroma/v2/lexers/embedded/vala.xml | 72 + .../chroma/v2/lexers/embedded/vb_net.xml | 162 + .../chroma/v2/lexers/embedded/verilog.xml | 158 + .../chroma/v2/lexers/embedded/vhdl.xml | 171 + .../chroma/v2/lexers/embedded/vhs.xml | 48 + .../chroma/v2/lexers/embedded/viml.xml | 85 + .../chroma/v2/lexers/embedded/vue.xml | 295 + .../chroma/v2/lexers/embedded/wat.xml | 149 + .../chroma/v2/lexers/embedded/wdte.xml | 43 + .../embedded/webgpu_shading_language.xml | 142 + .../chroma/v2/lexers/embedded/webvtt.xml | 283 + .../chroma/v2/lexers/embedded/whiley.xml | 57 + .../chroma/v2/lexers/embedded/xml.xml | 95 + .../chroma/v2/lexers/embedded/xorg.xml | 35 + .../chroma/v2/lexers/embedded/yaml.xml | 122 + .../chroma/v2/lexers/embedded/yang.xml | 99 + .../v2/lexers/embedded/z80_assembly.xml | 74 + .../chroma/v2/lexers/embedded/zed.xml | 51 + .../chroma/v2/lexers/embedded/zig.xml | 187 + .../alecthomas/chroma/v2/lexers/gemtext.go | 37 + .../alecthomas/chroma/v2/lexers/genshi.go | 118 + .../alecthomas/chroma/v2/lexers/go.go | 81 + .../alecthomas/chroma/v2/lexers/haxe.go | 647 ++ .../alecthomas/chroma/v2/lexers/html.go | 8 + .../alecthomas/chroma/v2/lexers/http.go | 131 + .../alecthomas/chroma/v2/lexers/lexers.go | 85 + .../alecthomas/chroma/v2/lexers/markdown.go | 46 + .../alecthomas/chroma/v2/lexers/markless.go | 168 + .../alecthomas/chroma/v2/lexers/mysql.go | 33 + .../alecthomas/chroma/v2/lexers/php.go | 37 + .../alecthomas/chroma/v2/lexers/raku.go | 1712 +++ .../alecthomas/chroma/v2/lexers/rst.go | 89 + .../alecthomas/chroma/v2/lexers/svelte.go | 70 + .../alecthomas/chroma/v2/lexers/typoscript.go | 85 + .../alecthomas/chroma/v2/lexers/zed.go | 24 + .../alecthomas/chroma/v2/mutators.go | 201 + .../alecthomas/chroma/v2/pygments-lexers.txt | 605 ++ .../github.com/alecthomas/chroma/v2/regexp.go | 530 + .../alecthomas/chroma/v2/registry.go | 228 + .../github.com/alecthomas/chroma/v2/remap.go | 94 + .../alecthomas/chroma/v2/renovate.json5 | 24 + .../alecthomas/chroma/v2/serialise.go | 483 + .../github.com/alecthomas/chroma/v2/style.go | 481 + .../alecthomas/chroma/v2/styles/abap.xml | 11 + .../alecthomas/chroma/v2/styles/algol.xml | 18 + .../alecthomas/chroma/v2/styles/algol_nu.xml | 18 + .../alecthomas/chroma/v2/styles/api.go | 65 + .../alecthomas/chroma/v2/styles/arduino.xml | 18 + .../alecthomas/chroma/v2/styles/ashen.xml | 69 + .../chroma/v2/styles/aura-theme-dark-soft.xml | 107 + .../chroma/v2/styles/aura-theme-dark.xml | 107 + .../alecthomas/chroma/v2/styles/autumn.xml | 36 + .../alecthomas/chroma/v2/styles/average.xml | 74 + .../chroma/v2/styles/base16-snazzy.xml | 74 + .../alecthomas/chroma/v2/styles/borland.xml | 26 + .../alecthomas/chroma/v2/styles/bw.xml | 23 + .../chroma/v2/styles/catppuccin-frappe.xml | 83 + .../chroma/v2/styles/catppuccin-latte.xml | 83 + .../chroma/v2/styles/catppuccin-macchiato.xml | 83 + .../chroma/v2/styles/catppuccin-mocha.xml | 83 + .../alecthomas/chroma/v2/styles/colorful.xml | 52 + .../alecthomas/chroma/v2/styles/compat.go | 66 + .../alecthomas/chroma/v2/styles/doom-one.xml | 51 + .../alecthomas/chroma/v2/styles/doom-one2.xml | 64 + .../alecthomas/chroma/v2/styles/dracula.xml | 74 + .../alecthomas/chroma/v2/styles/emacs.xml | 44 + .../chroma/v2/styles/evergarden.xml | 33 + .../alecthomas/chroma/v2/styles/friendly.xml | 44 + .../alecthomas/chroma/v2/styles/fruity.xml | 19 + .../chroma/v2/styles/github-dark.xml | 45 + .../alecthomas/chroma/v2/styles/github.xml | 39 + .../chroma/v2/styles/gruvbox-light.xml | 33 + .../alecthomas/chroma/v2/styles/gruvbox.xml | 33 + .../chroma/v2/styles/hr_high_contrast.xml | 12 + .../alecthomas/chroma/v2/styles/hrdark.xml | 10 + .../alecthomas/chroma/v2/styles/igor.xml | 9 + .../alecthomas/chroma/v2/styles/lovelace.xml | 53 + .../alecthomas/chroma/v2/styles/manni.xml | 44 + .../chroma/v2/styles/modus-operandi.xml | 13 + .../chroma/v2/styles/modus-vivendi.xml | 13 + .../alecthomas/chroma/v2/styles/monokai.xml | 29 + .../chroma/v2/styles/monokailight.xml | 26 + .../alecthomas/chroma/v2/styles/murphy.xml | 52 + .../alecthomas/chroma/v2/styles/native.xml | 35 + .../alecthomas/chroma/v2/styles/nord.xml | 46 + .../alecthomas/chroma/v2/styles/nordic.xml | 46 + .../alecthomas/chroma/v2/styles/onedark.xml | 25 + .../chroma/v2/styles/onesenterprise.xml | 10 + .../chroma/v2/styles/paraiso-dark.xml | 37 + .../chroma/v2/styles/paraiso-light.xml | 37 + .../alecthomas/chroma/v2/styles/pastie.xml | 45 + .../alecthomas/chroma/v2/styles/perldoc.xml | 37 + .../alecthomas/chroma/v2/styles/pygments.xml | 42 + .../chroma/v2/styles/rainbow_dash.xml | 40 + .../chroma/v2/styles/rose-pine-dawn.xml | 29 + .../chroma/v2/styles/rose-pine-moon.xml | 29 + .../alecthomas/chroma/v2/styles/rose-pine.xml | 29 + .../alecthomas/chroma/v2/styles/rpgle.xml | 30 + .../alecthomas/chroma/v2/styles/rrt.xml | 19 + .../chroma/v2/styles/solarized-dark.xml | 39 + .../chroma/v2/styles/solarized-dark256.xml | 41 + .../chroma/v2/styles/solarized-light.xml | 17 + .../alecthomas/chroma/v2/styles/swapoff.xml | 18 + .../alecthomas/chroma/v2/styles/tango.xml | 72 + .../chroma/v2/styles/tokyonight-day.xml | 83 + .../chroma/v2/styles/tokyonight-moon.xml | 83 + .../chroma/v2/styles/tokyonight-night.xml | 83 + .../chroma/v2/styles/tokyonight-storm.xml | 83 + .../alecthomas/chroma/v2/styles/trac.xml | 35 + .../alecthomas/chroma/v2/styles/vim.xml | 29 + .../alecthomas/chroma/v2/styles/vs.xml | 16 + .../alecthomas/chroma/v2/styles/vulcan.xml | 74 + .../chroma/v2/styles/witchhazel.xml | 31 + .../chroma/v2/styles/xcode-dark.xml | 31 + .../alecthomas/chroma/v2/styles/xcode.xml | 22 + .../github.com/alecthomas/chroma/v2/table.py | 31 + .../alecthomas/chroma/v2/tokentype_enumer.go | 583 + .../github.com/alecthomas/chroma/v2/types.go | 355 + .../github.com/atotto/clipboard/.travis.yml | 22 + .../github.com/atotto/clipboard/LICENSE | 27 + .../github.com/atotto/clipboard/README.md | 48 + .../github.com/atotto/clipboard/clipboard.go | 20 + .../atotto/clipboard/clipboard_darwin.go | 52 + .../atotto/clipboard/clipboard_plan9.go | 42 + .../atotto/clipboard/clipboard_unix.go | 149 + .../atotto/clipboard/clipboard_windows.go | 157 + .../aymanbagabas/go-osc52/v2/LICENSE | 21 + .../aymanbagabas/go-osc52/v2/README.md | 83 + .../aymanbagabas/go-osc52/v2/osc52.go | 305 + .../github.com/charmbracelet/bubbles/LICENSE | 21 + .../charmbracelet/bubbles/cursor/cursor.go | 219 + .../charmbracelet/bubbles/key/key.go | 140 + .../bubbles/runeutil/runeutil.go | 102 + .../bubbles/textinput/textinput.go | 898 ++ .../charmbracelet/bubbles/viewport/keymap.go | 60 + .../bubbles/viewport/viewport.go | 544 + .../charmbracelet/bubbletea/.gitattributes | 1 + .../charmbracelet/bubbletea/.gitignore | 23 + .../charmbracelet/bubbletea/.golangci.yml | 44 + .../charmbracelet/bubbletea/.goreleaser.yml | 5 + .../charmbracelet/bubbletea/LICENSE | 21 + .../charmbracelet/bubbletea/README.md | 400 + .../charmbracelet/bubbletea/Taskfile.yaml | 14 + .../charmbracelet/bubbletea/commands.go | 222 + .../charmbracelet/bubbletea/exec.go | 133 + .../charmbracelet/bubbletea/focus.go | 9 + .../bubbletea/inputreader_other.go | 19 + .../bubbletea/inputreader_windows.go | 129 + .../github.com/charmbracelet/bubbletea/key.go | 715 ++ .../charmbracelet/bubbletea/key_other.go | 13 + .../charmbracelet/bubbletea/key_sequences.go | 130 + .../charmbracelet/bubbletea/key_windows.go | 441 + .../charmbracelet/bubbletea/logging.go | 53 + .../charmbracelet/bubbletea/mouse.go | 308 + .../charmbracelet/bubbletea/nil_renderer.go | 29 + .../charmbracelet/bubbletea/options.go | 252 + .../charmbracelet/bubbletea/renderer.go | 88 + .../charmbracelet/bubbletea/screen.go | 248 + .../charmbracelet/bubbletea/signals_unix.go | 33 + .../bubbletea/signals_windows.go | 10 + .../bubbletea/standard_renderer.go | 790 ++ .../github.com/charmbracelet/bubbletea/tea.go | 941 ++ .../charmbracelet/bubbletea/tea_init.go | 22 + .../github.com/charmbracelet/bubbletea/tty.go | 141 + .../charmbracelet/bubbletea/tty_unix.go | 49 + .../charmbracelet/bubbletea/tty_windows.go | 68 + .../colorprofile/.golangci-soft.yml | 40 + .../charmbracelet/colorprofile/.golangci.yml | 28 + .../colorprofile/.goreleaser.yml | 6 + .../charmbracelet/colorprofile/LICENSE | 21 + .../charmbracelet/colorprofile/README.md | 103 + .../charmbracelet/colorprofile/env.go | 287 + .../charmbracelet/colorprofile/env_other.go | 8 + .../charmbracelet/colorprofile/env_windows.go | 45 + .../charmbracelet/colorprofile/profile.go | 399 + .../charmbracelet/colorprofile/writer.go | 166 + .../charmbracelet/lipgloss/.gitignore | 2 + .../charmbracelet/lipgloss/.golangci.yml | 41 + .../charmbracelet/lipgloss/.goreleaser.yml | 5 + .../github.com/charmbracelet/lipgloss/LICENSE | 21 + .../charmbracelet/lipgloss/README.md | 815 ++ .../charmbracelet/lipgloss/Taskfile.yaml | 19 + .../charmbracelet/lipgloss/align.go | 83 + .../charmbracelet/lipgloss/ansi_unix.go | 7 + .../charmbracelet/lipgloss/ansi_windows.go | 22 + .../charmbracelet/lipgloss/borders.go | 490 + .../charmbracelet/lipgloss/color.go | 172 + .../github.com/charmbracelet/lipgloss/get.go | 556 + .../github.com/charmbracelet/lipgloss/join.go | 175 + .../charmbracelet/lipgloss/position.go | 154 + .../charmbracelet/lipgloss/ranges.go | 48 + .../charmbracelet/lipgloss/renderer.go | 181 + .../charmbracelet/lipgloss/runes.go | 43 + .../github.com/charmbracelet/lipgloss/set.go | 799 ++ .../github.com/charmbracelet/lipgloss/size.go | 41 + .../charmbracelet/lipgloss/style.go | 588 + .../charmbracelet/lipgloss/unset.go | 331 + .../charmbracelet/lipgloss/whitespace.go | 83 + .../github.com/charmbracelet/x/ansi/LICENSE | 21 + .../github.com/charmbracelet/x/ansi/ansi.go | 11 + .../github.com/charmbracelet/x/ansi/ascii.go | 8 + .../charmbracelet/x/ansi/background.go | 178 + .../github.com/charmbracelet/x/ansi/c0.go | 79 + .../github.com/charmbracelet/x/ansi/c1.go | 72 + .../charmbracelet/x/ansi/charset.go | 55 + .../charmbracelet/x/ansi/clipboard.go | 75 + .../github.com/charmbracelet/x/ansi/color.go | 784 ++ .../github.com/charmbracelet/x/ansi/ctrl.go | 156 + .../github.com/charmbracelet/x/ansi/cursor.go | 635 ++ .../github.com/charmbracelet/x/ansi/cwd.go | 26 + .../github.com/charmbracelet/x/ansi/doc.go | 7 + .../charmbracelet/x/ansi/finalterm.go | 67 + .../github.com/charmbracelet/x/ansi/focus.go | 9 + .../charmbracelet/x/ansi/graphics.go | 62 + .../charmbracelet/x/ansi/hyperlink.go | 28 + .../github.com/charmbracelet/x/ansi/iterm2.go | 18 + .../github.com/charmbracelet/x/ansi/keypad.go | 28 + .../github.com/charmbracelet/x/ansi/kitty.go | 90 + .../github.com/charmbracelet/x/ansi/method.go | 172 + .../github.com/charmbracelet/x/ansi/mode.go | 847 ++ .../github.com/charmbracelet/x/ansi/modes.go | 65 + .../github.com/charmbracelet/x/ansi/mouse.go | 172 + .../charmbracelet/x/ansi/notification.go | 13 + .../github.com/charmbracelet/x/ansi/parser.go | 417 + .../charmbracelet/x/ansi/parser/const.go | 79 + .../charmbracelet/x/ansi/parser/seq.go | 136 + .../x/ansi/parser/transition_table.go | 273 + .../charmbracelet/x/ansi/parser_decode.go | 524 + .../charmbracelet/x/ansi/parser_handler.go | 60 + .../charmbracelet/x/ansi/parser_sync.go | 29 + .../charmbracelet/x/ansi/passthrough.go | 60 + .../github.com/charmbracelet/x/ansi/paste.go | 7 + .../github.com/charmbracelet/x/ansi/reset.go | 11 + .../github.com/charmbracelet/x/ansi/screen.go | 410 + .../github.com/charmbracelet/x/ansi/sgr.go | 79 + .../github.com/charmbracelet/x/ansi/status.go | 168 + .../github.com/charmbracelet/x/ansi/style.go | 673 ++ .../charmbracelet/x/ansi/termcap.go | 41 + .../github.com/charmbracelet/x/ansi/title.go | 48 + .../charmbracelet/x/ansi/truncate.go | 299 + .../github.com/charmbracelet/x/ansi/util.go | 92 + .../github.com/charmbracelet/x/ansi/width.go | 113 + .../github.com/charmbracelet/x/ansi/winop.go | 53 + .../github.com/charmbracelet/x/ansi/wrap.go | 474 + .../github.com/charmbracelet/x/ansi/xterm.go | 138 + .../charmbracelet/x/cellbuf/LICENSE | 21 + .../charmbracelet/x/cellbuf/buffer.go | 473 + .../charmbracelet/x/cellbuf/cell.go | 503 + .../charmbracelet/x/cellbuf/errors.go | 6 + .../charmbracelet/x/cellbuf/geom.go | 21 + .../charmbracelet/x/cellbuf/hardscroll.go | 272 + .../charmbracelet/x/cellbuf/hashmap.go | 301 + .../charmbracelet/x/cellbuf/link.go | 14 + .../charmbracelet/x/cellbuf/screen.go | 1457 +++ .../charmbracelet/x/cellbuf/sequence.go | 131 + .../charmbracelet/x/cellbuf/style.go | 31 + .../charmbracelet/x/cellbuf/tabstop.go | 137 + .../charmbracelet/x/cellbuf/utils.go | 38 + .../charmbracelet/x/cellbuf/wrap.go | 178 + .../charmbracelet/x/cellbuf/writer.go | 339 + .../github.com/charmbracelet/x/term/LICENSE | 21 + .../github.com/charmbracelet/x/term/term.go | 49 + .../charmbracelet/x/term/term_other.go | 39 + .../charmbracelet/x/term/term_unix.go | 96 + .../charmbracelet/x/term/term_unix_bsd.go | 11 + .../charmbracelet/x/term/term_unix_other.go | 11 + .../charmbracelet/x/term/term_windows.go | 87 + .../charmbracelet/x/term/terminal.go | 12 + .../github.com/charmbracelet/x/term/util.go | 47 + .../github.com/dlclark/regexp2/.gitignore | 27 + .../github.com/dlclark/regexp2/.travis.yml | 7 + .../vendor/github.com/dlclark/regexp2/ATTRIB | 133 + .../vendor/github.com/dlclark/regexp2/LICENSE | 21 + .../github.com/dlclark/regexp2/README.md | 174 + .../github.com/dlclark/regexp2/fastclock.go | 141 + .../github.com/dlclark/regexp2/match.go | 349 + .../github.com/dlclark/regexp2/regexp.go | 395 + .../github.com/dlclark/regexp2/replace.go | 177 + .../github.com/dlclark/regexp2/runner.go | 1613 +++ .../dlclark/regexp2/syntax/charclass.go | 865 ++ .../github.com/dlclark/regexp2/syntax/code.go | 274 + .../dlclark/regexp2/syntax/escape.go | 94 + .../github.com/dlclark/regexp2/syntax/fuzz.go | 20 + .../dlclark/regexp2/syntax/parser.go | 2262 ++++ .../dlclark/regexp2/syntax/prefix.go | 896 ++ .../dlclark/regexp2/syntax/replacerdata.go | 87 + .../github.com/dlclark/regexp2/syntax/tree.go | 654 ++ .../dlclark/regexp2/syntax/writer.go | 500 + .../github.com/dlclark/regexp2/testoutput1 | 7061 ++++++++++++ .../github.com/erikgeiser/coninput/.gitignore | 15 + .../erikgeiser/coninput/.golangci.yml | 24 + .../github.com/erikgeiser/coninput/LICENSE | 21 + .../github.com/erikgeiser/coninput/README.md | 2 + .../erikgeiser/coninput/keycodes.go | 205 + .../github.com/erikgeiser/coninput/mode.go | 82 + .../github.com/erikgeiser/coninput/read.go | 154 + .../github.com/erikgeiser/coninput/records.go | 486 + .../vendor/github.com/kr/fs/LICENSE | 27 + src/vcom-0.2.5/vendor/github.com/kr/fs/Readme | 3 + .../vendor/github.com/kr/fs/filesystem.go | 36 + .../vendor/github.com/kr/fs/walk.go | 95 + .../lucasb-eyer/go-colorful/.gitignore | 101 + .../lucasb-eyer/go-colorful/CHANGELOG.md | 42 + .../lucasb-eyer/go-colorful/LICENSE | 7 + .../lucasb-eyer/go-colorful/README.md | 482 + .../lucasb-eyer/go-colorful/colorgens.go | 55 + .../lucasb-eyer/go-colorful/colors.go | 979 ++ .../go-colorful/happy_palettegen.go | 25 + .../lucasb-eyer/go-colorful/hexcolor.go | 67 + .../go-colorful/hsluv-snapshot-rev4.json | 1 + .../lucasb-eyer/go-colorful/hsluv.go | 207 + .../go-colorful/soft_palettegen.go | 185 + .../go-colorful/warm_palettegen.go | 25 + .../vendor/github.com/mattn/go-isatty/LICENSE | 9 + .../github.com/mattn/go-isatty/README.md | 50 + .../vendor/github.com/mattn/go-isatty/doc.go | 2 + .../github.com/mattn/go-isatty/go.test.sh | 12 + .../github.com/mattn/go-isatty/isatty_bsd.go | 20 + .../mattn/go-isatty/isatty_others.go | 17 + .../mattn/go-isatty/isatty_plan9.go | 23 + .../mattn/go-isatty/isatty_solaris.go | 21 + .../mattn/go-isatty/isatty_tcgets.go | 20 + .../mattn/go-isatty/isatty_windows.go | 125 + .../mattn/go-localereader/README.md | 23 + .../mattn/go-localereader/localereader.go | 19 + .../go-localereader/localereader_unix.go | 11 + .../go-localereader/localereader_windows.go | 85 + .../github.com/mattn/go-runewidth/LICENSE | 21 + .../github.com/mattn/go-runewidth/README.md | 27 + .../mattn/go-runewidth/runewidth.go | 358 + .../mattn/go-runewidth/runewidth_appengine.go | 9 + .../mattn/go-runewidth/runewidth_js.go | 9 + .../mattn/go-runewidth/runewidth_posix.go | 81 + .../mattn/go-runewidth/runewidth_table.go | 450 + .../mattn/go-runewidth/runewidth_windows.go | 28 + .../vendor/github.com/muesli/ansi/.gitignore | 15 + .../github.com/muesli/ansi/.golangci.yml | 27 + .../vendor/github.com/muesli/ansi/LICENSE | 21 + .../vendor/github.com/muesli/ansi/README.md | 31 + .../vendor/github.com/muesli/ansi/ansi.go | 7 + .../vendor/github.com/muesli/ansi/buffer.go | 40 + .../muesli/ansi/compressor/writer.go | 132 + .../vendor/github.com/muesli/ansi/writer.go | 76 + .../github.com/muesli/cancelreader/.gitignore | 15 + .../muesli/cancelreader/.golangci-soft.yml | 47 + .../muesli/cancelreader/.golangci.yml | 29 + .../github.com/muesli/cancelreader/LICENSE | 21 + .../github.com/muesli/cancelreader/README.md | 64 + .../muesli/cancelreader/cancelreader.go | 93 + .../muesli/cancelreader/cancelreader_bsd.go | 146 + .../cancelreader/cancelreader_default.go | 12 + .../muesli/cancelreader/cancelreader_linux.go | 154 + .../cancelreader/cancelreader_select.go | 136 + .../muesli/cancelreader/cancelreader_unix.go | 18 + .../cancelreader/cancelreader_windows.go | 244 + .../github.com/muesli/termenv/.gitignore | 15 + .../muesli/termenv/.golangci-soft.yml | 43 + .../github.com/muesli/termenv/.golangci.yml | 28 + .../vendor/github.com/muesli/termenv/LICENSE | 21 + .../github.com/muesli/termenv/README.md | 431 + .../github.com/muesli/termenv/ansi_compat.md | 65 + .../github.com/muesli/termenv/ansicolors.go | 281 + .../vendor/github.com/muesli/termenv/color.go | 205 + .../muesli/termenv/constants_linux.go | 8 + .../muesli/termenv/constants_solaris.go | 8 + .../muesli/termenv/constants_unix.go | 13 + .../muesli/termenv/constants_zos.go | 8 + .../vendor/github.com/muesli/termenv/copy.go | 37 + .../github.com/muesli/termenv/hyperlink.go | 11 + .../github.com/muesli/termenv/notification.go | 11 + .../github.com/muesli/termenv/output.go | 205 + .../github.com/muesli/termenv/profile.go | 112 + .../github.com/muesli/termenv/screen.go | 590 + .../vendor/github.com/muesli/termenv/style.go | 126 + .../muesli/termenv/templatehelper.go | 88 + .../github.com/muesli/termenv/termenv.go | 115 + .../muesli/termenv/termenv_other.go | 30 + .../muesli/termenv/termenv_posix.go | 17 + .../muesli/termenv/termenv_solaris.go | 22 + .../github.com/muesli/termenv/termenv_unix.go | 301 + .../muesli/termenv/termenv_windows.go | 140 + .../pelletier/go-toml/v2/.dockerignore | 2 + .../pelletier/go-toml/v2/.gitattributes | 4 + .../pelletier/go-toml/v2/.gitignore | 7 + .../pelletier/go-toml/v2/.golangci.toml | 84 + .../pelletier/go-toml/v2/.goreleaser.yaml | 127 + .../pelletier/go-toml/v2/CONTRIBUTING.md | 193 + .../pelletier/go-toml/v2/Dockerfile | 5 + .../github.com/pelletier/go-toml/v2/LICENSE | 22 + .../github.com/pelletier/go-toml/v2/README.md | 576 + .../pelletier/go-toml/v2/SECURITY.md | 16 + .../github.com/pelletier/go-toml/v2/ci.sh | 284 + .../github.com/pelletier/go-toml/v2/decode.go | 550 + .../github.com/pelletier/go-toml/v2/doc.go | 2 + .../github.com/pelletier/go-toml/v2/errors.go | 252 + .../go-toml/v2/internal/characters/ascii.go | 42 + .../go-toml/v2/internal/characters/utf8.go | 199 + .../go-toml/v2/internal/danger/danger.go | 65 + .../go-toml/v2/internal/danger/typeid.go | 23 + .../go-toml/v2/internal/tracker/key.go | 48 + .../go-toml/v2/internal/tracker/seen.go | 358 + .../go-toml/v2/internal/tracker/tracker.go | 1 + .../pelletier/go-toml/v2/localtime.go | 122 + .../pelletier/go-toml/v2/marshaler.go | 1133 ++ .../github.com/pelletier/go-toml/v2/strict.go | 107 + .../github.com/pelletier/go-toml/v2/toml.abnf | 243 + .../github.com/pelletier/go-toml/v2/types.go | 14 + .../pelletier/go-toml/v2/unmarshaler.go | 1334 +++ .../pelletier/go-toml/v2/unstable/ast.go | 136 + .../pelletier/go-toml/v2/unstable/builder.go | 71 + .../pelletier/go-toml/v2/unstable/doc.go | 3 + .../pelletier/go-toml/v2/unstable/kind.go | 71 + .../pelletier/go-toml/v2/unstable/parser.go | 1245 +++ .../pelletier/go-toml/v2/unstable/scanner.go | 270 + .../go-toml/v2/unstable/unmarshaler.go | 7 + .../vendor/github.com/pkg/sftp/.gitignore | 10 + .../vendor/github.com/pkg/sftp/CONTRIBUTORS | 3 + .../vendor/github.com/pkg/sftp/LICENSE | 9 + .../vendor/github.com/pkg/sftp/Makefile | 27 + .../vendor/github.com/pkg/sftp/README.md | 44 + .../vendor/github.com/pkg/sftp/SECURITY.md | 13 + .../vendor/github.com/pkg/sftp/allocator.go | 96 + .../vendor/github.com/pkg/sftp/attrs.go | 136 + .../vendor/github.com/pkg/sftp/attrs_stubs.go | 12 + .../vendor/github.com/pkg/sftp/attrs_unix.go | 17 + .../vendor/github.com/pkg/sftp/client.go | 2298 ++++ .../vendor/github.com/pkg/sftp/conn.go | 212 + .../vendor/github.com/pkg/sftp/debug.go | 10 + .../vendor/github.com/pkg/sftp/errno_plan9.go | 42 + .../vendor/github.com/pkg/sftp/errno_posix.go | 45 + .../vendor/github.com/pkg/sftp/fuzz.go | 23 + .../internal/encoding/ssh/filexfer/attrs.go | 296 + .../internal/encoding/ssh/filexfer/buffer.go | 340 + .../encoding/ssh/filexfer/extended_packets.go | 143 + .../encoding/ssh/filexfer/extensions.go | 43 + .../encoding/ssh/filexfer/filexfer.go | 54 + .../sftp/internal/encoding/ssh/filexfer/fx.go | 147 + .../internal/encoding/ssh/filexfer/fxp.go | 169 + .../encoding/ssh/filexfer/handle_packets.go | 230 + .../encoding/ssh/filexfer/init_packets.go | 99 + .../encoding/ssh/filexfer/open_packets.go | 86 + .../encoding/ssh/filexfer/openssh/fsync.go | 73 + .../encoding/ssh/filexfer/openssh/hardlink.go | 76 + .../encoding/ssh/filexfer/openssh/openssh.go | 2 + .../ssh/filexfer/openssh/posix-rename.go | 76 + .../encoding/ssh/filexfer/openssh/statvfs.go | 236 + .../internal/encoding/ssh/filexfer/packets.go | 273 + .../encoding/ssh/filexfer/path_packets.go | 362 + .../encoding/ssh/filexfer/permissions.go | 114 + .../encoding/ssh/filexfer/response_packets.go | 230 + .../github.com/pkg/sftp/ls_formatting.go | 88 + .../vendor/github.com/pkg/sftp/ls_plan9.go | 22 + .../vendor/github.com/pkg/sftp/ls_stub.go | 12 + .../vendor/github.com/pkg/sftp/ls_unix.go | 24 + .../vendor/github.com/pkg/sftp/match.go | 137 + .../github.com/pkg/sftp/packet-manager.go | 216 + .../github.com/pkg/sftp/packet-typing.go | 135 + .../vendor/github.com/pkg/sftp/packet.go | 1422 +++ .../vendor/github.com/pkg/sftp/pool.go | 79 + .../vendor/github.com/pkg/sftp/release.go | 6 + .../github.com/pkg/sftp/request-attrs.go | 57 + .../github.com/pkg/sftp/request-errors.go | 54 + .../github.com/pkg/sftp/request-example.go | 647 ++ .../github.com/pkg/sftp/request-interfaces.go | 159 + .../github.com/pkg/sftp/request-plan9.go | 16 + .../github.com/pkg/sftp/request-readme.md | 53 + .../github.com/pkg/sftp/request-server.go | 355 + .../github.com/pkg/sftp/request-unix.go | 24 + .../vendor/github.com/pkg/sftp/request.go | 670 ++ .../github.com/pkg/sftp/request_windows.go | 13 + .../vendor/github.com/pkg/sftp/server.go | 657 ++ .../github.com/pkg/sftp/server_plan9.go | 27 + .../github.com/pkg/sftp/server_posix.go | 21 + .../pkg/sftp/server_statvfs_darwin.go | 21 + .../pkg/sftp/server_statvfs_impl.go | 30 + .../pkg/sftp/server_statvfs_linux.go | 23 + .../pkg/sftp/server_statvfs_plan9.go | 13 + .../pkg/sftp/server_statvfs_stubs.go | 16 + .../vendor/github.com/pkg/sftp/server_unix.go | 16 + .../github.com/pkg/sftp/server_windows.go | 193 + .../vendor/github.com/pkg/sftp/sftp.go | 258 + .../vendor/github.com/pkg/sftp/stat.go | 94 + .../vendor/github.com/rivo/uniseg/LICENSE.txt | 21 + .../vendor/github.com/rivo/uniseg/README.md | 137 + .../vendor/github.com/rivo/uniseg/doc.go | 108 + .../github.com/rivo/uniseg/eastasianwidth.go | 2588 +++++ .../rivo/uniseg/emojipresentation.go | 295 + .../github.com/rivo/uniseg/gen_breaktest.go | 215 + .../github.com/rivo/uniseg/gen_properties.go | 261 + .../vendor/github.com/rivo/uniseg/grapheme.go | 331 + .../rivo/uniseg/graphemeproperties.go | 1915 ++++ .../github.com/rivo/uniseg/graphemerules.go | 176 + .../vendor/github.com/rivo/uniseg/line.go | 134 + .../github.com/rivo/uniseg/lineproperties.go | 3554 +++++++ .../github.com/rivo/uniseg/linerules.go | 626 ++ .../github.com/rivo/uniseg/properties.go | 208 + .../vendor/github.com/rivo/uniseg/sentence.go | 90 + .../rivo/uniseg/sentenceproperties.go | 2845 +++++ .../github.com/rivo/uniseg/sentencerules.go | 276 + .../vendor/github.com/rivo/uniseg/step.go | 242 + .../vendor/github.com/rivo/uniseg/width.go | 61 + .../vendor/github.com/rivo/uniseg/word.go | 89 + .../github.com/rivo/uniseg/wordproperties.go | 1883 ++++ .../github.com/rivo/uniseg/wordrules.go | 282 + .../vendor/github.com/xo/terminfo/.gitignore | 9 + .../vendor/github.com/xo/terminfo/LICENSE | 21 + .../vendor/github.com/xo/terminfo/README.md | 139 + .../vendor/github.com/xo/terminfo/caps.go | 31 + .../vendor/github.com/xo/terminfo/capvals.go | 1525 +++ .../vendor/github.com/xo/terminfo/color.go | 88 + .../vendor/github.com/xo/terminfo/dec.go | 245 + .../vendor/github.com/xo/terminfo/load.go | 64 + .../vendor/github.com/xo/terminfo/param.go | 405 + .../vendor/github.com/xo/terminfo/stack.go | 48 + .../vendor/github.com/xo/terminfo/terminfo.go | 479 + .../vendor/golang.org/x/crypto/LICENSE | 27 + .../vendor/golang.org/x/crypto/PATENTS | 22 + .../golang.org/x/crypto/blowfish/block.go | 159 + .../golang.org/x/crypto/blowfish/cipher.go | 99 + .../golang.org/x/crypto/blowfish/const.go | 199 + .../x/crypto/chacha20/chacha_arm64.go | 16 + .../x/crypto/chacha20/chacha_arm64.s | 307 + .../x/crypto/chacha20/chacha_generic.go | 398 + .../x/crypto/chacha20/chacha_noasm.go | 13 + .../x/crypto/chacha20/chacha_ppc64x.go | 16 + .../x/crypto/chacha20/chacha_ppc64x.s | 501 + .../x/crypto/chacha20/chacha_s390x.go | 27 + .../x/crypto/chacha20/chacha_s390x.s | 224 + .../golang.org/x/crypto/chacha20/xor.go | 42 + .../x/crypto/curve25519/curve25519.go | 93 + .../x/crypto/internal/alias/alias.go | 31 + .../x/crypto/internal/alias/alias_purego.go | 34 + .../x/crypto/internal/poly1305/mac_noasm.go | 9 + .../x/crypto/internal/poly1305/poly1305.go | 99 + .../x/crypto/internal/poly1305/sum_amd64.s | 93 + .../x/crypto/internal/poly1305/sum_asm.go | 47 + .../x/crypto/internal/poly1305/sum_generic.go | 312 + .../x/crypto/internal/poly1305/sum_loong64.s | 123 + .../x/crypto/internal/poly1305/sum_ppc64x.s | 187 + .../x/crypto/internal/poly1305/sum_s390x.go | 76 + .../x/crypto/internal/poly1305/sum_s390x.s | 503 + .../vendor/golang.org/x/crypto/ssh/buffer.go | 97 + .../vendor/golang.org/x/crypto/ssh/certs.go | 624 ++ .../vendor/golang.org/x/crypto/ssh/channel.go | 645 ++ .../vendor/golang.org/x/crypto/ssh/cipher.go | 789 ++ .../vendor/golang.org/x/crypto/ssh/client.go | 283 + .../golang.org/x/crypto/ssh/client_auth.go | 792 ++ .../vendor/golang.org/x/crypto/ssh/common.go | 727 ++ .../golang.org/x/crypto/ssh/connection.go | 155 + .../vendor/golang.org/x/crypto/ssh/doc.go | 34 + .../golang.org/x/crypto/ssh/handshake.go | 847 ++ .../ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go | 93 + .../vendor/golang.org/x/crypto/ssh/kex.go | 807 ++ .../vendor/golang.org/x/crypto/ssh/keys.go | 1823 ++++ .../vendor/golang.org/x/crypto/ssh/mac.go | 84 + .../golang.org/x/crypto/ssh/messages.go | 893 ++ .../vendor/golang.org/x/crypto/ssh/mlkem.go | 168 + .../vendor/golang.org/x/crypto/ssh/mux.go | 357 + .../vendor/golang.org/x/crypto/ssh/server.go | 955 ++ .../vendor/golang.org/x/crypto/ssh/session.go | 647 ++ .../vendor/golang.org/x/crypto/ssh/ssh_gss.go | 145 + .../golang.org/x/crypto/ssh/streamlocal.go | 116 + .../vendor/golang.org/x/crypto/ssh/tcpip.go | 545 + .../golang.org/x/crypto/ssh/transport.go | 377 + .../vendor/golang.org/x/sys/LICENSE | 27 + .../vendor/golang.org/x/sys/PATENTS | 22 + .../golang.org/x/sys/cpu/asm_aix_ppc64.s | 17 + .../x/sys/cpu/asm_darwin_arm64_gc.s | 12 + .../golang.org/x/sys/cpu/asm_darwin_x86_gc.s | 17 + .../vendor/golang.org/x/sys/cpu/byteorder.go | 66 + .../vendor/golang.org/x/sys/cpu/cpu.go | 338 + .../vendor/golang.org/x/sys/cpu/cpu_aix.go | 33 + .../vendor/golang.org/x/sys/cpu/cpu_arm.go | 73 + .../vendor/golang.org/x/sys/cpu/cpu_arm64.go | 191 + .../vendor/golang.org/x/sys/cpu/cpu_arm64.s | 35 + .../golang.org/x/sys/cpu/cpu_darwin_arm64.go | 67 + .../x/sys/cpu/cpu_darwin_arm64_other.go | 31 + .../golang.org/x/sys/cpu/cpu_darwin_x86.go | 61 + .../golang.org/x/sys/cpu/cpu_gc_arm64.go | 12 + .../golang.org/x/sys/cpu/cpu_gc_s390x.go | 21 + .../vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 15 + .../vendor/golang.org/x/sys/cpu/cpu_gc_x86.s | 26 + .../golang.org/x/sys/cpu/cpu_gccgo_arm64.go | 12 + .../golang.org/x/sys/cpu/cpu_gccgo_s390x.go | 22 + .../golang.org/x/sys/cpu/cpu_gccgo_x86.c | 37 + .../golang.org/x/sys/cpu/cpu_gccgo_x86.go | 25 + .../vendor/golang.org/x/sys/cpu/cpu_linux.go | 15 + .../golang.org/x/sys/cpu/cpu_linux_arm.go | 39 + .../golang.org/x/sys/cpu/cpu_linux_arm64.go | 120 + .../golang.org/x/sys/cpu/cpu_linux_loong64.go | 22 + .../golang.org/x/sys/cpu/cpu_linux_mips64x.go | 22 + .../golang.org/x/sys/cpu/cpu_linux_noinit.go | 9 + .../golang.org/x/sys/cpu/cpu_linux_ppc64x.go | 30 + .../golang.org/x/sys/cpu/cpu_linux_riscv64.go | 160 + .../golang.org/x/sys/cpu/cpu_linux_s390x.go | 40 + .../golang.org/x/sys/cpu/cpu_loong64.go | 50 + .../vendor/golang.org/x/sys/cpu/cpu_loong64.s | 13 + .../golang.org/x/sys/cpu/cpu_mips64x.go | 15 + .../vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 11 + .../golang.org/x/sys/cpu/cpu_netbsd_arm64.go | 173 + .../golang.org/x/sys/cpu/cpu_openbsd_arm64.go | 65 + .../golang.org/x/sys/cpu/cpu_openbsd_arm64.s | 11 + .../golang.org/x/sys/cpu/cpu_other_arm.go | 9 + .../golang.org/x/sys/cpu/cpu_other_arm64.go | 11 + .../golang.org/x/sys/cpu/cpu_other_mips64x.go | 11 + .../golang.org/x/sys/cpu/cpu_other_ppc64x.go | 12 + .../golang.org/x/sys/cpu/cpu_other_riscv64.go | 11 + .../golang.org/x/sys/cpu/cpu_other_x86.go | 11 + .../vendor/golang.org/x/sys/cpu/cpu_ppc64x.go | 16 + .../golang.org/x/sys/cpu/cpu_riscv64.go | 32 + .../vendor/golang.org/x/sys/cpu/cpu_s390x.go | 172 + .../vendor/golang.org/x/sys/cpu/cpu_s390x.s | 57 + .../vendor/golang.org/x/sys/cpu/cpu_wasm.go | 17 + .../vendor/golang.org/x/sys/cpu/cpu_x86.go | 236 + .../vendor/golang.org/x/sys/cpu/cpu_zos.go | 10 + .../golang.org/x/sys/cpu/cpu_zos_s390x.go | 25 + .../vendor/golang.org/x/sys/cpu/endian_big.go | 10 + .../golang.org/x/sys/cpu/endian_little.go | 10 + .../golang.org/x/sys/cpu/hwcap_linux.go | 71 + .../vendor/golang.org/x/sys/cpu/parse.go | 43 + .../x/sys/cpu/proc_cpuinfo_linux.go | 53 + .../golang.org/x/sys/cpu/runtime_auxv.go | 16 + .../x/sys/cpu/runtime_auxv_go121.go | 18 + .../golang.org/x/sys/cpu/syscall_aix_gccgo.go | 26 + .../x/sys/cpu/syscall_aix_ppc64_gc.go | 35 + .../x/sys/cpu/syscall_darwin_arm64_gc.go | 54 + .../x/sys/cpu/syscall_darwin_x86_gc.go | 98 + .../vendor/golang.org/x/sys/unix/.gitignore | 2 + .../vendor/golang.org/x/sys/unix/README.md | 184 + .../golang.org/x/sys/unix/affinity_linux.go | 93 + .../vendor/golang.org/x/sys/unix/aliases.go | 13 + .../golang.org/x/sys/unix/asm_aix_ppc64.s | 17 + .../golang.org/x/sys/unix/asm_bsd_386.s | 27 + .../golang.org/x/sys/unix/asm_bsd_amd64.s | 27 + .../golang.org/x/sys/unix/asm_bsd_arm.s | 27 + .../golang.org/x/sys/unix/asm_bsd_arm64.s | 27 + .../golang.org/x/sys/unix/asm_bsd_ppc64.s | 29 + .../golang.org/x/sys/unix/asm_bsd_riscv64.s | 27 + .../golang.org/x/sys/unix/asm_linux_386.s | 65 + .../golang.org/x/sys/unix/asm_linux_amd64.s | 57 + .../golang.org/x/sys/unix/asm_linux_arm.s | 56 + .../golang.org/x/sys/unix/asm_linux_arm64.s | 50 + .../golang.org/x/sys/unix/asm_linux_loong64.s | 51 + .../golang.org/x/sys/unix/asm_linux_mips64x.s | 54 + .../golang.org/x/sys/unix/asm_linux_mipsx.s | 52 + .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 42 + .../golang.org/x/sys/unix/asm_linux_riscv64.s | 47 + .../golang.org/x/sys/unix/asm_linux_s390x.s | 54 + .../x/sys/unix/asm_openbsd_mips64.s | 29 + .../golang.org/x/sys/unix/asm_solaris_amd64.s | 17 + .../golang.org/x/sys/unix/asm_zos_s390x.s | 382 + .../vendor/golang.org/x/sys/unix/auxv.go | 36 + .../golang.org/x/sys/unix/auxv_unsupported.go | 13 + .../golang.org/x/sys/unix/bluetooth_linux.go | 36 + .../golang.org/x/sys/unix/bpxsvc_zos.go | 657 ++ .../vendor/golang.org/x/sys/unix/bpxsvc_zos.s | 192 + .../golang.org/x/sys/unix/cap_freebsd.go | 195 + .../vendor/golang.org/x/sys/unix/constants.go | 13 + .../golang.org/x/sys/unix/dev_aix_ppc.go | 26 + .../golang.org/x/sys/unix/dev_aix_ppc64.go | 28 + .../golang.org/x/sys/unix/dev_darwin.go | 24 + .../golang.org/x/sys/unix/dev_dragonfly.go | 30 + .../golang.org/x/sys/unix/dev_freebsd.go | 30 + .../vendor/golang.org/x/sys/unix/dev_linux.go | 42 + .../golang.org/x/sys/unix/dev_netbsd.go | 29 + .../golang.org/x/sys/unix/dev_openbsd.go | 29 + .../vendor/golang.org/x/sys/unix/dev_zos.go | 28 + .../vendor/golang.org/x/sys/unix/dirent.go | 102 + .../golang.org/x/sys/unix/endian_big.go | 9 + .../golang.org/x/sys/unix/endian_little.go | 9 + .../vendor/golang.org/x/sys/unix/env_unix.go | 31 + .../vendor/golang.org/x/sys/unix/fcntl.go | 36 + .../golang.org/x/sys/unix/fcntl_darwin.go | 24 + .../x/sys/unix/fcntl_linux_32bit.go | 13 + .../vendor/golang.org/x/sys/unix/fdset.go | 27 + .../vendor/golang.org/x/sys/unix/gccgo.go | 59 + .../vendor/golang.org/x/sys/unix/gccgo_c.c | 44 + .../x/sys/unix/gccgo_linux_amd64.go | 20 + .../golang.org/x/sys/unix/ifreq_linux.go | 139 + .../golang.org/x/sys/unix/ioctl_linux.go | 334 + .../golang.org/x/sys/unix/ioctl_signed.go | 74 + .../golang.org/x/sys/unix/ioctl_unsigned.go | 74 + .../vendor/golang.org/x/sys/unix/ioctl_zos.go | 71 + .../vendor/golang.org/x/sys/unix/mkall.sh | 250 + .../vendor/golang.org/x/sys/unix/mkerrors.sh | 811 ++ .../golang.org/x/sys/unix/mmap_nomremap.go | 13 + .../vendor/golang.org/x/sys/unix/mremap.go | 57 + .../golang.org/x/sys/unix/pagesize_unix.go | 15 + .../golang.org/x/sys/unix/pledge_openbsd.go | 111 + .../golang.org/x/sys/unix/ptrace_darwin.go | 11 + .../golang.org/x/sys/unix/ptrace_ios.go | 11 + .../vendor/golang.org/x/sys/unix/race.go | 30 + .../vendor/golang.org/x/sys/unix/race0.go | 25 + .../x/sys/unix/readdirent_getdents.go | 12 + .../x/sys/unix/readdirent_getdirentries.go | 19 + .../x/sys/unix/sockcmsg_dragonfly.go | 16 + .../golang.org/x/sys/unix/sockcmsg_linux.go | 85 + .../golang.org/x/sys/unix/sockcmsg_unix.go | 106 + .../x/sys/unix/sockcmsg_unix_other.go | 46 + .../golang.org/x/sys/unix/sockcmsg_zos.go | 58 + .../golang.org/x/sys/unix/symaddr_zos_s390x.s | 75 + .../vendor/golang.org/x/sys/unix/syscall.go | 86 + .../golang.org/x/sys/unix/syscall_aix.go | 582 + .../golang.org/x/sys/unix/syscall_aix_ppc.go | 52 + .../x/sys/unix/syscall_aix_ppc64.go | 83 + .../golang.org/x/sys/unix/syscall_bsd.go | 609 ++ .../golang.org/x/sys/unix/syscall_darwin.go | 800 ++ .../x/sys/unix/syscall_darwin_amd64.go | 50 + .../x/sys/unix/syscall_darwin_arm64.go | 50 + .../x/sys/unix/syscall_darwin_libSystem.go | 26 + .../x/sys/unix/syscall_dragonfly.go | 359 + .../x/sys/unix/syscall_dragonfly_amd64.go | 56 + .../golang.org/x/sys/unix/syscall_freebsd.go | 455 + .../x/sys/unix/syscall_freebsd_386.go | 64 + .../x/sys/unix/syscall_freebsd_amd64.go | 64 + .../x/sys/unix/syscall_freebsd_arm.go | 60 + .../x/sys/unix/syscall_freebsd_arm64.go | 60 + .../x/sys/unix/syscall_freebsd_riscv64.go | 60 + .../golang.org/x/sys/unix/syscall_hurd.go | 30 + .../golang.org/x/sys/unix/syscall_hurd_386.go | 28 + .../golang.org/x/sys/unix/syscall_illumos.go | 78 + .../golang.org/x/sys/unix/syscall_linux.go | 2651 +++++ .../x/sys/unix/syscall_linux_386.go | 314 + .../x/sys/unix/syscall_linux_alarm.go | 12 + .../x/sys/unix/syscall_linux_amd64.go | 145 + .../x/sys/unix/syscall_linux_amd64_gc.go | 12 + .../x/sys/unix/syscall_linux_arm.go | 216 + .../x/sys/unix/syscall_linux_arm64.go | 186 + .../golang.org/x/sys/unix/syscall_linux_gc.go | 14 + .../x/sys/unix/syscall_linux_gc_386.go | 16 + .../x/sys/unix/syscall_linux_gc_arm.go | 13 + .../x/sys/unix/syscall_linux_gccgo_386.go | 30 + .../x/sys/unix/syscall_linux_gccgo_arm.go | 20 + .../x/sys/unix/syscall_linux_loong64.go | 218 + .../x/sys/unix/syscall_linux_mips64x.go | 188 + .../x/sys/unix/syscall_linux_mipsx.go | 174 + .../x/sys/unix/syscall_linux_ppc.go | 204 + .../x/sys/unix/syscall_linux_ppc64x.go | 115 + .../x/sys/unix/syscall_linux_riscv64.go | 191 + .../x/sys/unix/syscall_linux_s390x.go | 296 + .../x/sys/unix/syscall_linux_sparc64.go | 112 + .../golang.org/x/sys/unix/syscall_netbsd.go | 388 + .../x/sys/unix/syscall_netbsd_386.go | 37 + .../x/sys/unix/syscall_netbsd_amd64.go | 37 + .../x/sys/unix/syscall_netbsd_arm.go | 37 + .../x/sys/unix/syscall_netbsd_arm64.go | 37 + .../golang.org/x/sys/unix/syscall_openbsd.go | 342 + .../x/sys/unix/syscall_openbsd_386.go | 41 + .../x/sys/unix/syscall_openbsd_amd64.go | 41 + .../x/sys/unix/syscall_openbsd_arm.go | 41 + .../x/sys/unix/syscall_openbsd_arm64.go | 41 + .../x/sys/unix/syscall_openbsd_libc.go | 26 + .../x/sys/unix/syscall_openbsd_mips64.go | 39 + .../x/sys/unix/syscall_openbsd_ppc64.go | 41 + .../x/sys/unix/syscall_openbsd_riscv64.go | 41 + .../golang.org/x/sys/unix/syscall_solaris.go | 1183 ++ .../x/sys/unix/syscall_solaris_amd64.go | 27 + .../golang.org/x/sys/unix/syscall_unix.go | 619 ++ .../golang.org/x/sys/unix/syscall_unix_gc.go | 14 + .../x/sys/unix/syscall_unix_gc_ppc64x.go | 22 + .../x/sys/unix/syscall_zos_s390x.go | 3213 ++++++ .../golang.org/x/sys/unix/sysvshm_linux.go | 20 + .../golang.org/x/sys/unix/sysvshm_unix.go | 51 + .../x/sys/unix/sysvshm_unix_other.go | 13 + .../golang.org/x/sys/unix/timestruct.go | 76 + .../golang.org/x/sys/unix/unveil_openbsd.go | 51 + .../golang.org/x/sys/unix/vgetrandom_linux.go | 13 + .../x/sys/unix/vgetrandom_unsupported.go | 11 + .../vendor/golang.org/x/sys/unix/xattr_bsd.go | 280 + .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1384 +++ .../x/sys/unix/zerrors_aix_ppc64.go | 1385 +++ .../x/sys/unix/zerrors_darwin_amd64.go | 1922 ++++ .../x/sys/unix/zerrors_darwin_arm64.go | 1922 ++++ .../x/sys/unix/zerrors_dragonfly_amd64.go | 1737 +++ .../x/sys/unix/zerrors_freebsd_386.go | 2042 ++++ .../x/sys/unix/zerrors_freebsd_amd64.go | 2039 ++++ .../x/sys/unix/zerrors_freebsd_arm.go | 2033 ++++ .../x/sys/unix/zerrors_freebsd_arm64.go | 2033 ++++ .../x/sys/unix/zerrors_freebsd_riscv64.go | 2147 ++++ .../golang.org/x/sys/unix/zerrors_linux.go | 4144 ++++++++ .../x/sys/unix/zerrors_linux_386.go | 878 ++ .../x/sys/unix/zerrors_linux_amd64.go | 878 ++ .../x/sys/unix/zerrors_linux_arm.go | 883 ++ .../x/sys/unix/zerrors_linux_arm64.go | 880 ++ .../x/sys/unix/zerrors_linux_loong64.go | 870 ++ .../x/sys/unix/zerrors_linux_mips.go | 884 ++ .../x/sys/unix/zerrors_linux_mips64.go | 884 ++ .../x/sys/unix/zerrors_linux_mips64le.go | 884 ++ .../x/sys/unix/zerrors_linux_mipsle.go | 884 ++ .../x/sys/unix/zerrors_linux_ppc.go | 936 ++ .../x/sys/unix/zerrors_linux_ppc64.go | 940 ++ .../x/sys/unix/zerrors_linux_ppc64le.go | 940 ++ .../x/sys/unix/zerrors_linux_riscv64.go | 867 ++ .../x/sys/unix/zerrors_linux_s390x.go | 939 ++ .../x/sys/unix/zerrors_linux_sparc64.go | 982 ++ .../x/sys/unix/zerrors_netbsd_386.go | 1779 ++++ .../x/sys/unix/zerrors_netbsd_amd64.go | 1769 +++ .../x/sys/unix/zerrors_netbsd_arm.go | 1758 +++ .../x/sys/unix/zerrors_netbsd_arm64.go | 1769 +++ .../x/sys/unix/zerrors_openbsd_386.go | 1905 ++++ .../x/sys/unix/zerrors_openbsd_amd64.go | 1905 ++++ .../x/sys/unix/zerrors_openbsd_arm.go | 1905 ++++ .../x/sys/unix/zerrors_openbsd_arm64.go | 1905 ++++ .../x/sys/unix/zerrors_openbsd_mips64.go | 1905 ++++ .../x/sys/unix/zerrors_openbsd_ppc64.go | 1904 ++++ .../x/sys/unix/zerrors_openbsd_riscv64.go | 1903 ++++ .../x/sys/unix/zerrors_solaris_amd64.go | 1556 +++ .../x/sys/unix/zerrors_zos_s390x.go | 990 ++ .../x/sys/unix/zptrace_armnn_linux.go | 40 + .../x/sys/unix/zptrace_linux_arm64.go | 17 + .../x/sys/unix/zptrace_mipsnn_linux.go | 49 + .../x/sys/unix/zptrace_mipsnnle_linux.go | 49 + .../x/sys/unix/zptrace_x86_linux.go | 79 + .../x/sys/unix/zsymaddr_zos_s390x.s | 364 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1461 +++ .../x/sys/unix/zsyscall_aix_ppc64.go | 1420 +++ .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1188 +++ .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1069 ++ .../x/sys/unix/zsyscall_darwin_amd64.go | 2728 +++++ .../x/sys/unix/zsyscall_darwin_amd64.s | 799 ++ .../x/sys/unix/zsyscall_darwin_arm64.go | 2728 +++++ .../x/sys/unix/zsyscall_darwin_arm64.s | 799 ++ .../x/sys/unix/zsyscall_dragonfly_amd64.go | 1666 +++ .../x/sys/unix/zsyscall_freebsd_386.go | 1886 ++++ .../x/sys/unix/zsyscall_freebsd_amd64.go | 1886 ++++ .../x/sys/unix/zsyscall_freebsd_arm.go | 1886 ++++ .../x/sys/unix/zsyscall_freebsd_arm64.go | 1886 ++++ .../x/sys/unix/zsyscall_freebsd_riscv64.go | 1886 ++++ .../x/sys/unix/zsyscall_illumos_amd64.go | 101 + .../golang.org/x/sys/unix/zsyscall_linux.go | 2250 ++++ .../x/sys/unix/zsyscall_linux_386.go | 486 + .../x/sys/unix/zsyscall_linux_amd64.go | 653 ++ .../x/sys/unix/zsyscall_linux_arm.go | 601 ++ .../x/sys/unix/zsyscall_linux_arm64.go | 552 + .../x/sys/unix/zsyscall_linux_loong64.go | 486 + .../x/sys/unix/zsyscall_linux_mips.go | 653 ++ .../x/sys/unix/zsyscall_linux_mips64.go | 647 ++ .../x/sys/unix/zsyscall_linux_mips64le.go | 636 ++ .../x/sys/unix/zsyscall_linux_mipsle.go | 653 ++ .../x/sys/unix/zsyscall_linux_ppc.go | 658 ++ .../x/sys/unix/zsyscall_linux_ppc64.go | 704 ++ .../x/sys/unix/zsyscall_linux_ppc64le.go | 704 ++ .../x/sys/unix/zsyscall_linux_riscv64.go | 548 + .../x/sys/unix/zsyscall_linux_s390x.go | 495 + .../x/sys/unix/zsyscall_linux_sparc64.go | 648 ++ .../x/sys/unix/zsyscall_netbsd_386.go | 1848 ++++ .../x/sys/unix/zsyscall_netbsd_amd64.go | 1848 ++++ .../x/sys/unix/zsyscall_netbsd_arm.go | 1848 ++++ .../x/sys/unix/zsyscall_netbsd_arm64.go | 1848 ++++ .../x/sys/unix/zsyscall_openbsd_386.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_386.s | 699 ++ .../x/sys/unix/zsyscall_openbsd_amd64.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_amd64.s | 699 ++ .../x/sys/unix/zsyscall_openbsd_arm.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_arm.s | 699 ++ .../x/sys/unix/zsyscall_openbsd_arm64.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_arm64.s | 699 ++ .../x/sys/unix/zsyscall_openbsd_mips64.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_mips64.s | 699 ++ .../x/sys/unix/zsyscall_openbsd_ppc64.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_ppc64.s | 838 ++ .../x/sys/unix/zsyscall_openbsd_riscv64.go | 2323 ++++ .../x/sys/unix/zsyscall_openbsd_riscv64.s | 699 ++ .../x/sys/unix/zsyscall_solaris_amd64.go | 2217 ++++ .../x/sys/unix/zsyscall_zos_s390x.go | 3458 ++++++ .../x/sys/unix/zsysctl_openbsd_386.go | 280 + .../x/sys/unix/zsysctl_openbsd_amd64.go | 280 + .../x/sys/unix/zsysctl_openbsd_arm.go | 280 + .../x/sys/unix/zsysctl_openbsd_arm64.go | 280 + .../x/sys/unix/zsysctl_openbsd_mips64.go | 280 + .../x/sys/unix/zsysctl_openbsd_ppc64.go | 280 + .../x/sys/unix/zsysctl_openbsd_riscv64.go | 281 + .../x/sys/unix/zsysnum_darwin_amd64.go | 439 + .../x/sys/unix/zsysnum_darwin_arm64.go | 437 + .../x/sys/unix/zsysnum_dragonfly_amd64.go | 316 + .../x/sys/unix/zsysnum_freebsd_386.go | 393 + .../x/sys/unix/zsysnum_freebsd_amd64.go | 393 + .../x/sys/unix/zsysnum_freebsd_arm.go | 393 + .../x/sys/unix/zsysnum_freebsd_arm64.go | 393 + .../x/sys/unix/zsysnum_freebsd_riscv64.go | 393 + .../x/sys/unix/zsysnum_linux_386.go | 466 + .../x/sys/unix/zsysnum_linux_amd64.go | 389 + .../x/sys/unix/zsysnum_linux_arm.go | 430 + .../x/sys/unix/zsysnum_linux_arm64.go | 333 + .../x/sys/unix/zsysnum_linux_loong64.go | 329 + .../x/sys/unix/zsysnum_linux_mips.go | 450 + .../x/sys/unix/zsysnum_linux_mips64.go | 380 + .../x/sys/unix/zsysnum_linux_mips64le.go | 380 + .../x/sys/unix/zsysnum_linux_mipsle.go | 450 + .../x/sys/unix/zsysnum_linux_ppc.go | 457 + .../x/sys/unix/zsysnum_linux_ppc64.go | 429 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 429 + .../x/sys/unix/zsysnum_linux_riscv64.go | 334 + .../x/sys/unix/zsysnum_linux_s390x.go | 395 + .../x/sys/unix/zsysnum_linux_sparc64.go | 408 + .../x/sys/unix/zsysnum_netbsd_386.go | 274 + .../x/sys/unix/zsysnum_netbsd_amd64.go | 274 + .../x/sys/unix/zsysnum_netbsd_arm.go | 274 + .../x/sys/unix/zsysnum_netbsd_arm64.go | 274 + .../x/sys/unix/zsysnum_openbsd_386.go | 219 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 219 + .../x/sys/unix/zsysnum_openbsd_arm.go | 219 + .../x/sys/unix/zsysnum_openbsd_arm64.go | 218 + .../x/sys/unix/zsysnum_openbsd_mips64.go | 221 + .../x/sys/unix/zsysnum_openbsd_ppc64.go | 217 + .../x/sys/unix/zsysnum_openbsd_riscv64.go | 218 + .../x/sys/unix/zsysnum_zos_s390x.go | 2852 +++++ .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 353 + .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 357 + .../x/sys/unix/ztypes_darwin_amd64.go | 878 ++ .../x/sys/unix/ztypes_darwin_arm64.go | 878 ++ .../x/sys/unix/ztypes_dragonfly_amd64.go | 473 + .../x/sys/unix/ztypes_freebsd_386.go | 651 ++ .../x/sys/unix/ztypes_freebsd_amd64.go | 656 ++ .../x/sys/unix/ztypes_freebsd_arm.go | 642 ++ .../x/sys/unix/ztypes_freebsd_arm64.go | 636 ++ .../x/sys/unix/ztypes_freebsd_riscv64.go | 638 ++ .../golang.org/x/sys/unix/ztypes_linux.go | 6386 +++++++++++ .../golang.org/x/sys/unix/ztypes_linux_386.go | 705 ++ .../x/sys/unix/ztypes_linux_amd64.go | 719 ++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 699 ++ .../x/sys/unix/ztypes_linux_arm64.go | 698 ++ .../x/sys/unix/ztypes_linux_loong64.go | 699 ++ .../x/sys/unix/ztypes_linux_mips.go | 704 ++ .../x/sys/unix/ztypes_linux_mips64.go | 701 ++ .../x/sys/unix/ztypes_linux_mips64le.go | 701 ++ .../x/sys/unix/ztypes_linux_mipsle.go | 704 ++ .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 712 ++ .../x/sys/unix/ztypes_linux_ppc64.go | 707 ++ .../x/sys/unix/ztypes_linux_ppc64le.go | 707 ++ .../x/sys/unix/ztypes_linux_riscv64.go | 786 ++ .../x/sys/unix/ztypes_linux_s390x.go | 721 ++ .../x/sys/unix/ztypes_linux_sparc64.go | 702 ++ .../x/sys/unix/ztypes_netbsd_386.go | 585 + .../x/sys/unix/ztypes_netbsd_amd64.go | 593 ++ .../x/sys/unix/ztypes_netbsd_arm.go | 590 + .../x/sys/unix/ztypes_netbsd_arm64.go | 593 ++ .../x/sys/unix/ztypes_openbsd_386.go | 568 + .../x/sys/unix/ztypes_openbsd_amd64.go | 568 + .../x/sys/unix/ztypes_openbsd_arm.go | 575 + .../x/sys/unix/ztypes_openbsd_arm64.go | 568 + .../x/sys/unix/ztypes_openbsd_mips64.go | 568 + .../x/sys/unix/ztypes_openbsd_ppc64.go | 570 + .../x/sys/unix/ztypes_openbsd_riscv64.go | 570 + .../x/sys/unix/ztypes_solaris_amd64.go | 516 + .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 552 + .../golang.org/x/sys/windows/aliases.go | 13 + .../golang.org/x/sys/windows/dll_windows.go | 380 + .../golang.org/x/sys/windows/env_windows.go | 57 + .../golang.org/x/sys/windows/eventlog.go | 20 + .../golang.org/x/sys/windows/exec_windows.go | 248 + .../x/sys/windows/memory_windows.go | 48 + .../golang.org/x/sys/windows/mkerrors.bash | 70 + .../x/sys/windows/mkknownfolderids.bash | 27 + .../golang.org/x/sys/windows/mksyscall.go | 9 + .../vendor/golang.org/x/sys/windows/race.go | 30 + .../vendor/golang.org/x/sys/windows/race0.go | 25 + .../x/sys/windows/security_windows.go | 1501 +++ .../golang.org/x/sys/windows/service.go | 257 + .../x/sys/windows/setupapi_windows.go | 1425 +++ .../vendor/golang.org/x/sys/windows/str.go | 22 + .../golang.org/x/sys/windows/syscall.go | 104 + .../x/sys/windows/syscall_windows.go | 1938 ++++ .../golang.org/x/sys/windows/types_windows.go | 4025 +++++++ .../x/sys/windows/types_windows_386.go | 35 + .../x/sys/windows/types_windows_amd64.go | 34 + .../x/sys/windows/types_windows_arm.go | 35 + .../x/sys/windows/types_windows_arm64.go | 34 + .../x/sys/windows/zerrors_windows.go | 9468 +++++++++++++++++ .../x/sys/windows/zknownfolderids_windows.go | 149 + .../x/sys/windows/zsyscall_windows.go | 4757 +++++++++ .../vendor/golang.org/x/text/LICENSE | 27 + .../vendor/golang.org/x/text/PATENTS | 22 + .../golang.org/x/text/transform/transform.go | 709 ++ src/vcom-0.2.5/vendor/modules.txt | 107 + vcom-0.2.5-1-x86_64.pkg.tar.zst | Bin 0 -> 3988221 bytes vcom-0.2.5.tar.gz | Bin 0 -> 4427736 bytes 1302 files changed, 402483 insertions(+), 2 deletions(-) create mode 120000 src/vcom-0.2.5.tar.gz create mode 100644 src/vcom-0.2.5/.codex create mode 100644 src/vcom-0.2.5/.github/workflows/release.yml create mode 100644 src/vcom-0.2.5/.gitignore create mode 100644 src/vcom-0.2.5/LICENSE create mode 100644 src/vcom-0.2.5/PKGBUILD create mode 100644 src/vcom-0.2.5/README.md create mode 100644 src/vcom-0.2.5/docs/architecture.md create mode 100644 src/vcom-0.2.5/docs/project-description.md create mode 100644 src/vcom-0.2.5/docs/screen.png create mode 100644 src/vcom-0.2.5/docs/screen2.png create mode 100644 src/vcom-0.2.5/docs/screen3.png create mode 100644 src/vcom-0.2.5/flake.lock create mode 100644 src/vcom-0.2.5/flake.nix create mode 100644 src/vcom-0.2.5/go.mod create mode 100644 src/vcom-0.2.5/go.sum create mode 100644 src/vcom-0.2.5/internal/config/config.go create mode 100644 src/vcom-0.2.5/internal/config/session.go create mode 100644 src/vcom-0.2.5/internal/fs/archive.go create mode 100644 src/vcom-0.2.5/internal/fs/entry.go create mode 100644 src/vcom-0.2.5/internal/fs/ops.go create mode 100644 src/vcom-0.2.5/internal/fs/ops_test.go create mode 100644 src/vcom-0.2.5/internal/fs/preview.go create mode 100644 src/vcom-0.2.5/internal/fs/remote/client.go create mode 100644 src/vcom-0.2.5/internal/fs/remote/config.go create mode 100644 src/vcom-0.2.5/internal/fs/remote/host.go create mode 100644 src/vcom-0.2.5/internal/fs/scan.go create mode 100644 src/vcom-0.2.5/internal/theme/theme.go create mode 100644 src/vcom-0.2.5/internal/ui/icon_mode.go create mode 100644 src/vcom-0.2.5/internal/ui/image_overlay.go create mode 100644 src/vcom-0.2.5/internal/ui/keymap.go create mode 100644 src/vcom-0.2.5/internal/ui/layout.go create mode 100644 src/vcom-0.2.5/internal/ui/model.go create mode 100644 src/vcom-0.2.5/internal/ui/pane.go create mode 100644 src/vcom-0.2.5/internal/ui/ssh.go create mode 100644 src/vcom-0.2.5/plans/extended-preview-feature.md create mode 100644 src/vcom-0.2.5/plans/feature-roadmap.md create mode 100644 src/vcom-0.2.5/plans/mirror-and-cursor-memory.md create mode 100644 src/vcom-0.2.5/plans/theme-selector-dialog.md create mode 100755 src/vcom-0.2.5/scripts/build-deb.sh create mode 100644 src/vcom-0.2.5/vcom.toml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.editorconfig create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.goreleaser.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/AGENTS.md create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Bitfile create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/COPYING create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Dockerfile create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Justfile create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/biome.json create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/chroma.jpg create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/coalesce.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/colour.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/delegate.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/doc.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/emitters.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatter.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/api.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/html/html.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/json.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/font_liberation_mono.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/svg.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tokens.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_indexed.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_truecolour.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/iterator.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/caddyfile.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/cl.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/dns.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/emacs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abnf.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript_3.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ada.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/agda.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/al.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/alloy.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/angular2.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/antlr.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apacheconf.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/applescript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arangodb_aql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arduino.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/armasm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/atl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autohotkey.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autoit.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/awk.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ballerina.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash_session.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/batchfile.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/beef.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bibtex.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bicep.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/blitzbasic.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bnf.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bqn.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/brainfuck.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c#.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c++.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cap_n_proto.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cassandra_cql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ceylon.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfengine3.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfstatement.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chaiscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chapel.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cheetah.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/clojure.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cmake.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cobol.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coffeescript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/common_lisp.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coq.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/csv.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cue.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cython.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dart.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dax.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/desktop_entry.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/diff.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/django_jinja.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dns.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/docker.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dtd.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dylan.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ebnf.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elixir.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/emacslisp.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/erlang.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/factor.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fennel.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fish.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/forth.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortran.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortranfixed.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fsharp.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gas.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript3.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gherkin.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gleam.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/glsl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gnuplot.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/go_template.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/graphql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groff.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groovy.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/handlebars.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hare.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/haskell.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hcl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hexdump.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlb.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlsl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/holyc.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/html.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hy.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/idris.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/igor.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/io.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/iscdhcpd.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/j.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/janet.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/java.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/javascript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/json.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonata.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonnet.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/julia.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jungle.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kdl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lean.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lighttpd_configuration_file.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/llvm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lua.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/makefile.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mako.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mason.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/materialize_sql_dialect.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mathematica.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/matlab.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mcfunction.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/meson.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/metal.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/microcad.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/minizinc.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mlir.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modula-2.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mojo.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/monkeyc.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonbit.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/morrowindscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/myghty.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mysql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nasm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/natural.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ndisasm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/newspeak.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nginx_configuration_file.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nim.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nix.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nsis.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nu.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objective-c.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objectpascal.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ocaml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/octave.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/odin.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/onesenterprise.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openedge_abl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openscad.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/org_mode.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pacmanconf.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/perl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/php.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pig.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pkgconfig.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pl_pgsql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plaintext.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plutus_core.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pony.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postgresql_sql_dialect.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/povray.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powerquery.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prolog.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promela.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/properties.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/protocol_buffer.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/puppet.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python_2.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/r.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/racket.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ragel.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/react.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reasonml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reg.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rego.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rexx.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpm_spec.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ruby.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rust.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sass.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scala.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scheme.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scilab.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scss.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sed.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sieve.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smali.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smarty.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snbt.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snobol.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/solidity.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sourcepawn.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sparql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/squidconf.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stas.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stylus.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/swift.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemd.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemverilog.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tablegen.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tal.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tasm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcsh.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/termcap.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terminfo.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terraform.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tex.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/thrift.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/toml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tradingview.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/transact-sql.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turing.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turtle.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/twig.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typescript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscript.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscriptcssdata.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscripthtmldata.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typst.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ucode.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v_shell.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vala.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vb_net.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/verilog.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhdl.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhs.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/viml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vue.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wdte.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webgpu_shading_language.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webvtt.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/whiley.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xorg.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yaml.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yang.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/z80_assembly.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zed.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zig.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/gemtext.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/genshi.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/go.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/haxe.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/html.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/http.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/lexers.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markdown.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markless.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/mysql.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/php.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/raku.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/rst.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/svelte.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/typoscript.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/zed.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/mutators.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/pygments-lexers.txt create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/regexp.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/registry.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/remap.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/renovate.json5 create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/serialise.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/style.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/abap.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol_nu.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/api.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/arduino.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/autumn.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/average.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/base16-snazzy.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/borland.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/bw.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-frappe.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-latte.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-macchiato.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-mocha.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/colorful.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/compat.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one2.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/dracula.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/emacs.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/evergarden.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/friendly.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/fruity.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github-dark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox-light.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hr_high_contrast.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hrdark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/igor.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/lovelace.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/manni.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-operandi.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-vivendi.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokai.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokailight.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/murphy.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/native.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nord.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nordic.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onedark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onesenterprise.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-dark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-light.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pastie.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/perldoc.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pygments.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rainbow_dash.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-dawn.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-moon.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rpgle.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rrt.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark256.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-light.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/swapoff.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tango.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-day.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-moon.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-night.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-storm.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/trac.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vim.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vs.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vulcan.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/witchhazel.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode-dark.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode.xml create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/table.py create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/tokentype_enumer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/types.go create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/.travis.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard.go create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_darwin.go create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/osc52.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/cursor/cursor.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/key/key.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/runeutil/runeutil.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/textinput/textinput.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/keymap.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/viewport.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitattributes create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.goreleaser.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/Taskfile.yaml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/commands.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/exec.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/focus.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_other.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_other.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_sequences.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/logging.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/mouse.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/nil_renderer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/options.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/renderer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/screen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/standard_renderer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea_init.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci-soft.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.goreleaser.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_other.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/profile.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/writer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.goreleaser.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/Taskfile.yaml create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/align.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/borders.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/color.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/get.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/join.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/position.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ranges.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/renderer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/runes.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/set.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/size.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/style.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/unset.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/whitespace.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ansi.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ascii.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/background.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c0.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c1.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/charset.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/clipboard.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/color.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ctrl.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cursor.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cwd.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/doc.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/finalterm.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/focus.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/graphics.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/hyperlink.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/iterm2.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/keypad.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/kitty.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/method.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mode.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/modes.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mouse.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/notification.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/const.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/seq.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_decode.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_handler.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_sync.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/passthrough.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/paste.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/reset.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/screen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/sgr.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/status.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/style.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/termcap.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/title.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/truncate.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/util.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/width.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/winop.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/wrap.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/xterm.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/buffer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/cell.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/errors.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/geom.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hardscroll.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hashmap.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/link.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/screen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/sequence.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/style.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/tabstop.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/utils.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/wrap.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/writer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_other.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_bsd.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_other.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/terminal.go create mode 100644 src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/util.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.travis.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/ATTRIB create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/fastclock.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/match.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/regexp.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/replace.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/runner.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/charclass.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/code.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/escape.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/fuzz.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/parser.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/prefix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/replacerdata.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/tree.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/writer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/testoutput1 create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/keycodes.go create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/mode.go create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/read.go create mode 100644 src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/records.go create mode 100644 src/vcom-0.2.5/vendor/github.com/kr/fs/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/kr/fs/Readme create mode 100644 src/vcom-0.2.5/vendor/github.com/kr/fs/filesystem.go create mode 100644 src/vcom-0.2.5/vendor/github.com/kr/fs/walk.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/CHANGELOG.md create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colorgens.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colors.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hexcolor.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv-snapshot-rev4.json create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/doc.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/go.test.sh create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_bsd.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_others.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_solaris.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_tcgets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_js.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_posix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_table.go create mode 100644 src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/ansi.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/buffer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/compressor/writer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/ansi/writer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci-soft.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_bsd.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_default.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_linux.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_select.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci-soft.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci.yml create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansi_compat.md create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansicolors.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/color.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_linux.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_solaris.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_zos.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/copy.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/hyperlink.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/notification.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/output.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/profile.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/screen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/style.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/templatehelper.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_other.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_posix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_solaris.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.dockerignore create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitattributes create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.golangci.toml create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.goreleaser.yaml create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/CONTRIBUTING.md create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/Dockerfile create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/SECURITY.md create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/ci.sh create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/decode.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/doc.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/errors.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/ascii.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/utf8.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/danger.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/typeid.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/key.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/seen.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/tracker.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/localtime.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/marshaler.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/strict.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/toml.abnf create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/types.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unmarshaler.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/builder.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/doc.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/kind.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/scanner.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/unmarshaler.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/CONTRIBUTORS create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/Makefile create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/SECURITY.md create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/allocator.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_stubs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/client.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/conn.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/debug.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_posix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/fuzz.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/attrs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/buffer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extended_packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extensions.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/filexfer.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fx.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fxp.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/handle_packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/init_packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/open_packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/fsync.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/hardlink.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/openssh.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/posix-rename.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/statvfs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/path_packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/permissions.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/response_packets.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/ls_formatting.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/ls_plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/ls_stub.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/ls_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/match.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/packet-manager.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/packet-typing.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/packet.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/pool.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/release.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-attrs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-errors.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-example.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-interfaces.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-readme.md create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-server.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/request_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_posix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_darwin.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_impl.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_linux.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_plan9.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_stubs.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_unix.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_windows.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/sftp.go create mode 100644 src/vcom-0.2.5/vendor/github.com/pkg/sftp/stat.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/LICENSE.txt create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/doc.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/eastasianwidth.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/emojipresentation.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_breaktest.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_properties.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/grapheme.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemeproperties.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemerules.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/line.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/lineproperties.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/linerules.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/properties.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentence.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentenceproperties.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentencerules.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/step.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/width.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/word.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordproperties.go create mode 100644 src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordrules.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/.gitignore create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/LICENSE create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/README.md create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/caps.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/capvals.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/color.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/dec.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/load.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/param.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/stack.go create mode 100644 src/vcom-0.2.5/vendor/github.com/xo/terminfo/terminfo.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/LICENSE create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/PATENTS create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/block.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/cipher.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/const.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_generic.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/xor.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/curve25519/curve25519.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias_purego.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/buffer.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/certs.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/channel.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/cipher.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client_auth.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/common.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/connection.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/doc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/handshake.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/kex.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/keys.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mac.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/messages.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mlkem.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/server.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/session.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/ssh_gss.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/streamlocal.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/tcpip.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/transport.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/LICENSE create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/PATENTS create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/byteorder.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_aix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mips64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mipsx.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_x86.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_wasm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_x86.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_big.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_little.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/hwcap_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/parse.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/.gitignore create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/README.md create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/affinity_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/aliases.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_386.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_386.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_amd64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_loong64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_zos_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv_unsupported.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bluetooth_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/cap_freebsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/constants.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_darwin.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_dragonfly.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_freebsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_netbsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_openbsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_zos.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dirent.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_big.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_little.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/env_unix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_darwin.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fdset.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_c.c create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ifreq_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_signed.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_unsigned.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_zos.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkall.sh create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkerrors.sh create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mmap_nomremap.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mremap.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pagesize_unix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pledge_openbsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_darwin.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_ios.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race0.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdents.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_zos.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_bsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_illumos.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/timestruct.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/unveil_openbsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/xattr_bsd.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/aliases.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/dll_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/env_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/eventlog.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/exec_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/memory_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkerrors.bash create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkknownfolderids.bash create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mksyscall.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race0.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/security_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/service.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/setupapi_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/str.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_386.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_amd64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm64.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zerrors_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zsyscall_windows.go create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/text/LICENSE create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/text/PATENTS create mode 100644 src/vcom-0.2.5/vendor/golang.org/x/text/transform/transform.go create mode 100644 src/vcom-0.2.5/vendor/modules.txt create mode 100644 vcom-0.2.5-1-x86_64.pkg.tar.zst create mode 100644 vcom-0.2.5.tar.gz diff --git a/README.md b/README.md index 6a05d3f..1b519f7 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,11 @@ curl -sL https://github.com/vrubelroman/vcom/releases/download/v0.2.5/vcom_0.2.5 sudo apt install /tmp/vcom_0.2.5_amd64.deb ``` -The Debian package declares `ueberzug` (or `ueberzugpp` where available) as a dependency for image preview outside `kitty`. +The Debian package recommends `ueberzugpp` for image preview outside `kitty` (optional). To install it: + +```bash +sudo apt install pipx && pipx ensurepath && pipx install ueberzugpp +``` ### Arch Linux diff --git a/scripts/build-deb.sh b/scripts/build-deb.sh index a3e3ddd..0b5b2e4 100755 --- a/scripts/build-deb.sh +++ b/scripts/build-deb.sh @@ -29,7 +29,7 @@ Section: utils Priority: optional Architecture: amd64 Maintainer: Roman Vrubel -Depends: ueberzug | ueberzugpp +Recommends: ueberzugpp Description: Terminal file manager inspired by Midnight Commander A two-pane terminal file manager with inspect mode and text previews. EOF diff --git a/src/vcom-0.2.5.tar.gz b/src/vcom-0.2.5.tar.gz new file mode 120000 index 0000000..5ad381d --- /dev/null +++ b/src/vcom-0.2.5.tar.gz @@ -0,0 +1 @@ +/home/vrubel/projects/vcom/vcom-0.2.5.tar.gz \ No newline at end of file diff --git a/src/vcom-0.2.5/.codex b/src/vcom-0.2.5/.codex new file mode 100644 index 0000000..e69de29 diff --git a/src/vcom-0.2.5/.github/workflows/release.yml b/src/vcom-0.2.5/.github/workflows/release.yml new file mode 100644 index 0000000..c742426 --- /dev/null +++ b/src/vcom-0.2.5/.github/workflows/release.yml @@ -0,0 +1,86 @@ +name: Release + +on: + push: + tags: + - "v*" + +permissions: + contents: write + +env: + BIN_NAME: vcom + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + cache: true + + - name: Run tests + run: GOFLAGS=-mod=vendor go test ./... + + release: + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version-file: go.mod + cache: true + + - name: Install system dependencies + run: sudo apt-get update && sudo apt-get install -y dpkg-dev + + - name: Derive release version + shell: bash + run: echo "VERSION=${GITHUB_REF_NAME#v}" >> "$GITHUB_ENV" + + - name: Vendor Go modules + run: go mod vendor + + - name: Build release binary + shell: bash + run: | + set -euo pipefail + mkdir -p target/release + GOFLAGS=-mod=vendor CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o "target/release/${BIN_NAME}" ./cmd/vcom + + - name: Build deb package + shell: bash + run: ./scripts/build-deb.sh "${VERSION}" + + - name: Bundle tarball + shell: bash + run: | + set -euo pipefail + tar -C target/release -czf "${BIN_NAME}-${GITHUB_REF_NAME}-x86_64-unknown-linux-gnu.tar.gz" "${BIN_NAME}" + + - name: Generate checksums + shell: bash + run: | + set -euo pipefail + sha256sum \ + "${BIN_NAME}-${GITHUB_REF_NAME}-x86_64-unknown-linux-gnu.tar.gz" \ + "target/debian/${BIN_NAME}_${VERSION}_amd64.deb" \ + > "${BIN_NAME}-${GITHUB_REF_NAME}-checksums.txt" + + - name: Publish release assets + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + files: | + vcom-${{ github.ref_name }}-x86_64-unknown-linux-gnu.tar.gz + vcom-${{ github.ref_name }}-checksums.txt + target/debian/vcom_${{ env.VERSION }}_amd64.deb diff --git a/src/vcom-0.2.5/.gitignore b/src/vcom-0.2.5/.gitignore new file mode 100644 index 0000000..7ce7c11 --- /dev/null +++ b/src/vcom-0.2.5/.gitignore @@ -0,0 +1,2 @@ +target/ +vcom diff --git a/src/vcom-0.2.5/LICENSE b/src/vcom-0.2.5/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/src/vcom-0.2.5/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/src/vcom-0.2.5/PKGBUILD b/src/vcom-0.2.5/PKGBUILD new file mode 100644 index 0000000..6f7b0b4 --- /dev/null +++ b/src/vcom-0.2.5/PKGBUILD @@ -0,0 +1,34 @@ +pkgname=vcom +pkgver=0.2.5 +pkgrel=1 +pkgdesc="Terminal file manager inspired by Midnight Commander" +arch=("x86_64" "aarch64") +url="https://github.com/vrubelroman/vcom" +license=("MIT") +depends=("glibc" "ueberzugpp") +makedepends=("go") +source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz") +sha256sums=("SKIP") + +build() { + cd "$srcdir/$pkgname-$pkgver" + export CGO_ENABLED=0 + export GOFLAGS="-mod=vendor -trimpath" + go build -ldflags="-s -w" -o "target/release/vcom" ./cmd/vcom +} + +check() { + cd "$srcdir/$pkgname-$pkgver" + export CGO_ENABLED=0 + export GOFLAGS="-mod=vendor" + go test ./... +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + + install -Dm755 "target/release/vcom" "$pkgdir/usr/bin/vcom" + install -Dm644 "README.md" "$pkgdir/usr/share/doc/vcom/README.md" + install -Dm644 "vcom.toml" "$pkgdir/usr/share/doc/vcom/vcom.toml" + install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/vcom/LICENSE" +} diff --git a/src/vcom-0.2.5/README.md b/src/vcom-0.2.5/README.md new file mode 100644 index 0000000..13f496a --- /dev/null +++ b/src/vcom-0.2.5/README.md @@ -0,0 +1,204 @@ +# vcom + +`vcom` is a two-pane terminal file manager with a fast built-in info/preview panel for the active selection. + +## Why vcom + +- Two-pane workflow focused on keyboard speed +- Built-in preview/info pane for the active selection +- Asynchronous copy/move with progress and background mode +- Theme support and configurable layout/columns + +## Screenshots + +![vcom screenshot](docs/screen.png) +![vcom screenshot 2](docs/screen2.png) +![vcom screenshot 3](docs/screen3.png) + +## Build and run + +Run directly: + +```bash +go run ./cmd/vcom +``` + +Build local binary: + +```bash +go build -o vcom ./cmd/vcom +``` + +## Installation + +### NixOS / Nix + +Run directly from the flake: + +```bash +nix run github:vrubelroman/vcom?ref=v0.2.5 +``` + +Install into user profile: + +```bash +nix profile add github:vrubelroman/vcom?ref=v0.2.5 +``` + +The Nix package wraps `vcom` with `ueberzugpp` in `PATH`, so image preview works in non-`kitty` terminals out of the box. + +### Debian / Ubuntu + +Download and install the latest release: + +```bash +curl -sL https://github.com/vrubelroman/vcom/releases/download/v0.2.5/vcom_0.2.4_amd64.deb -o /tmp/vcom_0.2.4_amd64.deb +sudo apt install /tmp/vcom_0.2.4_amd64.deb +``` + +The Debian package declares `ueberzug` (or `ueberzugpp` where available) as a dependency for image preview outside `kitty`. + +### Arch Linux + +A `PKGBUILD` is included in the repository: + +```bash +makepkg -si +``` + +The Arch package depends on `ueberzugpp`, so non-`kitty` image preview is installed together with `vcom`. + +## Font requirement (icons) + +For file icons, `vcom` expects a Nerd Font in your terminal profile. + +Default behavior is `ui.icon_mode = "auto"`: + +- if a Nerd Font is detected, `vcom` uses Nerd icons +- if not, `vcom` falls back to ASCII icons automatically + +You can force behavior in config: + +- `ui.icon_mode = "nerd"`: always use Nerd icons +- `ui.icon_mode = "ascii"`: always use ASCII icons + +### Installing a Nerd Font + +**Ubuntu / Debian:** + +```bash +wget -qO /tmp/JetBrainsMono.zip https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.zip +mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd +unzip -o /tmp/JetBrainsMono.zip -d ~/.local/share/fonts/JetBrainsMonoNerd +fc-cache -fv +``` + +**Arch Linux:** + +```bash +sudo pacman -S ttf-jetbrains-mono-nerd +``` + +Or via AUR helper: + +```bash +yay -S nerd-fonts-jetbrains-mono +``` + +**NixOS / Nix:** + +Add to your `/etc/nixos/configuration.nix`: + +```nix +fonts.packages = with pkgs; [ nerd-fonts.jetbrains-mono ]; +``` + +Or install imperatively: + +```bash +nix profile install nixpkgs#nerd-fonts.jetbrains-mono +``` + +### Configuring terminal to use the installed Nerd Font + +After installing, set `JetBrainsMono Nerd Font` (or another Nerd Font) as the terminal font: + +- **GNOME Terminal:** `Preferences → Profile → Text → Custom font` → choose `JetBrainsMono Nerd Font` +- **Konsole:** `Settings → Edit Current Profile → Appearance` → choose a Nerd Font profile +- **Alacritty:** set `font.normal.family: "JetBrainsMono Nerd Font"` in `~/.config/alacritty/alacritty.yml` +- **Kitty:** set `font_family JetBrainsMono Nerd Font` in `~/.config/kitty/kitty.conf` +- **Foot:** set `font=JetBrainsMono Nerd Font:size=11` in `~/.config/foot/foot.ini` +- **WezTerm:** set `font = wezterm.font("JetBrainsMono Nerd Font")` in `~/.config/wezterm/wezterm.lua` +- **Windows Terminal:** `Settings → Profiles → Defaults → Appearance → Font face` → choose `JetBrainsMono Nerd Font` + +Preview mode (`F9` / `i`) temporarily replaces the inactive pane and shows: + +- directory listing preview +- text file preview with syntax highlighting +- image metadata (format + dimensions) +- safe fallback for binary files + +## Configuration + +Optional config lookup order: + +1. `-config /path/to/vcom.toml` +2. `./vcom.toml` +3. `./config/vcom.toml` +4. `$XDG_CONFIG_HOME/vcom/vcom.toml` +5. `~/.config/vcom/vcom.toml` + +Reference config: [vcom.toml](/home/vrubel/projects/vcom/vcom.toml) + +Icon mode example: + +```toml +[ui] +icon_mode = "auto" # auto | nerd | ascii +``` + +## Themes + +Built-in themes (press `t` to open theme selector or set `ui.theme` in config): + +- `catppuccin-mocha` (default) +- `catppuccin-macchiato` +- `catppuccin-lavender` +- `tokyo-night` +- `gruvbox-dark` +- `nord` +- `one-dark` +- `everforest` +- `github-dark` +- `ayu-dark` +- `breeze` +- `cyberpunk` +- `dracula` +- `eldritch` +- `kanagawa` +- `kanagawa-paper` +- `rose-pine` +- `solarized-dark` +- `vesper` + +## Releases + +Pushing a tag like `v0.2.5` triggers GitHub Actions release workflow (`.github/workflows/release.yml`) which: + +- runs tests +- vendors Go modules +- builds release binary +- builds Debian package +- publishes release assets + +Release artifacts: + +- `vcom-v0.2.5-x86_64-unknown-linux-gnu.tar.gz` +- `vcom_0.2.4_amd64.deb` +- `vcom-v0.2.5-checksums.txt` + +## Notes + +- File creation time depends on filesystem/OS support; unavailable values are shown as `n/a`. + +Architecture notes: [docs/architecture.md](/home/vrubel/projects/vcom/docs/architecture.md) diff --git a/src/vcom-0.2.5/docs/architecture.md b/src/vcom-0.2.5/docs/architecture.md new file mode 100644 index 0000000..9337a5e --- /dev/null +++ b/src/vcom-0.2.5/docs/architecture.md @@ -0,0 +1,196 @@ +# Architecture + +## Why this shape + +The project should not become a giant `main.go` that mixes rendering, key handling, filesystem I/O and business rules. The architecture is split so the UI remains reactive and file operations stay isolated. + +## High-level modules + +- `cmd/vcom` + Entry point, config loading, program startup. +- `internal/config` + Config schema, defaults, search paths and TOML parsing. +- `internal/fs` + Filesystem model, directory scanning, previews and file operations. +- `internal/theme` + Theme presets and style tokens. +- `internal/ui` + Bubble Tea model, key map, pane rendering, modal flow and layout. + +## State model + +The Bubble Tea root model owns: + +- terminal dimensions +- full config +- active browser pane +- left and right pane state +- center preview state +- transient modal state +- busy/status state for async work + +This keeps the Elm-style update loop simple: + +1. key or resize event arrives +2. model decides whether to mutate local state or start async work +3. async work returns a typed message +4. view renders from plain state + +## Pane model + +Each side pane stores: + +- current path +- scanned entries +- cursor index +- scroll offset +- cached directory sizes for entries calculated on demand + +This is intentionally independent from rendering details, so the pane can be unit-tested later without Lip Gloss. + +## Preview pipeline + +The center pane is driven only by the current selection from the active side pane. + +Preview strategies: + +- directory preview + Shows child entries and summary data. +- text preview + Reads up to a configured byte limit and displays text safely. +- image preview + Detects dimensions and format through standard Go image decoders. +- binary fallback + Avoids dumping junk bytes into the terminal. + +Metadata shown above the preview: + +- kind +- full path +- size +- created time +- modified time +- permissions + +Directory size is expensive, so it is not calculated eagerly. Pressing `Space` starts an async scan and updates both: + +- side-pane size column +- preview metadata widget + +## Configuration design + +TOML is used because: + +- it is readable in terminal workflows +- comments are first-class +- optional settings can stay commented out for manual enable/disable + +The example config enables only MC-like columns by default: + +- `name` +- `size` +- `modified` + +Additional columns are left commented out so users can literally uncomment them: + +- `created` +- `permissions` +- `extension` + +Other useful config areas: + +- startup paths for left and right panes +- theme preset +- hidden file visibility +- sort field and reverse mode +- center pane width ratio +- confirmation behavior +- preview byte limits +- text wrapping in preview +- compact path display + +## Rendering strategy + +The side panes are custom-rendered rather than built on top of the generic table bubble. + +Reasoning: + +- MC-like directory panes are not just tables +- we need tight control over selection styling, truncation and empty states +- the center pane uses a different rendering model than the side panes + +Bubble usage: + +- `bubbletea` + event loop and async commands +- `bubbles/key` + declarative key bindings +- `bubbles/textinput` + mkdir modal +- `bubbles/viewport` + preview scrolling surface +- `lipgloss` + all layout and styling + +## Operations + +The first operational slice is intentionally MC-core: + +- copy selected entry to passive pane directory +- move selected entry to passive pane directory +- create directory in active pane +- delete selected entry +- refresh active pane + +These operations are dispatched asynchronously to avoid freezing the TUI on large directories. + +Overwrite handling is decided before the async operation begins: + +- if the target does not exist, the operation runs directly +- if the target exists and overwrite confirmation is enabled, the UI opens a modal +- if overwrite confirmation is disabled, the operation replaces the target immediately + +## Theme system + +Themes are token-based rather than style-object based. + +Each preset defines semantic colors: + +- background +- panel +- panel inactive +- border +- border active +- text +- muted text +- accent +- selection +- warning +- danger +- footer key + +This allows future user-defined themes without touching UI logic. + +The current UI also supports runtime theme cycling, but config remains the source of truth for default startup appearance. + +## Extension points + +The architecture is designed to accept later additions without a rewrite: + +- multi-select and batch operations +- file viewer/editor integration +- terminal image protocols +- tab history per pane +- bookmarks and quick-jump +- sort modes +- archive browsing +- search/filter overlay +- pluggable preview providers + +## Constraints worth keeping + +- never calculate directory sizes during normal navigation +- never read full large files into memory for preview +- keep filesystem code out of `View()` +- keep styling decisions out of `internal/fs` +- prefer typed Tea messages over stringly-typed status events diff --git a/src/vcom-0.2.5/docs/project-description.md b/src/vcom-0.2.5/docs/project-description.md new file mode 100644 index 0000000..b6d2dcd --- /dev/null +++ b/src/vcom-0.2.5/docs/project-description.md @@ -0,0 +1,128 @@ +# vcom: описание проекта и реализованного функционала + +`vcom` — терминальный файловый менеджер в стиле Midnight Commander, написанный на Go на базе Bubble Tea. + +## 1. Основная концепция + +Приложение работает в двухпанельном режиме: +- левая файловая панель, +- правая файловая панель. + +Активная панель управляется с клавиатуры и мыши, неактивная сохраняет своё состояние (путь, позицию курсора). + +## 2. Реализованные режимы интерфейса + +- Двухпанельный браузер директорий. +- Режим Info/Preview (`i`): неактивная панель временно заменяется превью выбранного элемента из активной панели. +- Режим выделения текста в превью (`Ctrl+t`) для текстовых файлов. +- Модальные окна (подтверждения, прогресс операций, help, уведомления). + +## 3. Навигация и просмотр + +- Перемещение по списку: `j/k`, `Up/Down`, `PgUp/PgDn`. +- Переключение активной панели: `Tab`, `h`, `l`. +- Вход в директорию: `Enter` / `Right`. +- Переход в родительскую директорию: `Backspace` / `Left`. +- Обновление панелей: `r`. +- Внешний просмотр файла: `F3` (`$PAGER` при наличии). +- Внешнее редактирование файла: `F4` (`$VISUAL/$EDITOR` или fallback-редакторы). + +## 4. Операции с файлами и директориями + +- `F5` — копирование. +- `F6` — перемещение. +- `F7` — создание директории. +- `F8` — удаление. + +Операции copy/move реализованы с: +- предварительным диалогом подтверждения, +- подсчётом объёма и количества файлов, +- прогрессом по байтам и по количеству файлов, +- возможностью отправить операцию в фон (`b`), +- уведомлением о завершении фоновой операции. + +Подтверждение overwrite учитывается для существующих целей. + +## 5. Мультивыделение + +Реализовано выделение элементов с клавиатуры: +- `Shift+Up/Shift+Down` (а также `Shift+K/Shift+J`) добавляют/снимают выделение на текущем проходе. +- Повторный проход по уже выделенному элементу снимает его выделение (toggle). +- `Esc` очищает выделение активной панели. + +Если есть выделенные элементы, `F5/F6/F8` применяются ко всему выделенному набору. +Если выделения нет — операция применяется к текущему элементу под курсором. + +## 6. Работа мыши + +- ЛКМ: выбор элемента и активация панели. +- Двойной ЛКМ: открытие элемента. +- ПКМ: переключение режима Info/Preview для выбранного элемента. +- Колесо мыши: прокрутка списка; в preview-области — прокрутка содержимого превью. + +## 7. Help-окно + +`F1` или `?` открывает справку по управлению. + +Особенности help: +- логические блоки (Navigation, View and Panels, Dialogs and Transfers, Mouse), +- цветовое оформление заголовков и элементов на основе активной темы, +- закрытие по `F1`, `?`, `Esc`, `Enter`, `q`. + +## 8. Модальные окна и закрытие + +Во всех модальных окнах поддержано закрытие по `q`. + +Поведение в прогрессе copy/move: +- `q` не прерывает операцию, +- окно закрывается, +- операция продолжается в фоне. + +## 9. Визуальные доработки + +- Убрана верхняя title-строка приложения. +- Убраны текстовые лейблы `LEFT/RIGHT` в заголовках панелей. +- Убрана строка `CONTENT` в preview-панели. +- Путь активной панели сделан жирным и в цвете `TextFile` текущей темы. +- Подсветка курсора отображается только в активной панели. +- Выделенные (marked) элементы подсвечиваются цветом `Danger` темы по всей строке. + +## 10. Конфигурация + +Поддерживается TOML-конфиг (`vcom.toml`), включая: +- стартовые директории, +- визуальные параметры UI, +- набор и видимость колонок, +- сортировку, +- поведение превью, +- поведение подтверждений и операций. + +## 11. Технологический стек + +- Go +- Bubble Tea (`github.com/charmbracelet/bubbletea`) +- Bubbles +- Lip Gloss +- TOML (`pelletier/go-toml/v2`) + +## 12. Сборка и запуск + +Локально: + +```bash +go run ./cmd/vcom +``` + +Сборка бинаря: + +```bash +go build -o vcom ./cmd/vcom +``` + +Nix: + +```bash +nix run . +``` + +Для запуска тегов из GitHub-репозитория рекомендуется использовать версии с `v0.1.1` и выше. diff --git a/src/vcom-0.2.5/docs/screen.png b/src/vcom-0.2.5/docs/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd500433fa7651b817f0e11442f06d564aa2ece GIT binary patch literal 213704 zcmd?R2Uk;D*EZ}q9`%R=LhlfwprBOgz4sP+4Mn6$ z?+Fk>M0!b(4x!}TSnlV!-|_x{Z;Wq`!4UUO)>?b5x#qm)HLt}7byWpwDkiEkXUXG<-K`pclD~?-&se`{^fZ4 zb`ZAI$Q&$)s&(s;=P&0_iZLs^UU+o!v1)jS)Xhtb)`=mMI60O(^{h?B*Tv2%4D|23 z4_d`>0A2srwe&QFWcy!tfd9PKqW#eOf8VTU{r}m$ z{hE}o<{{KOJiK=YcR^cKbNJ?Zw76Nu@X9cy4B9hP3c|{*neqN3$j;nOOP7 z^S=4LQ%#<|avfXKHPrvXi8Qn%T*BqS`0JypjzFt=JAJ&;66xYR5;_hWT^s^ue?I&K zM&;*&FHkwE#SO0A4?h?tG^Dr5u-9if{O)J(3$9Alj&k7WCf52??Rn;)PQ|mpw?n7)+!_rH1mz$`qbo4uQW*mABtC?3gat2%Kq3Ty-kuaemuimW2h`p?O9n2FKoe#Rd1l<c%r7iWJ-?zR(PSUX#j=So~& zR{VZU8Wi2diE^#cG&T8P2HM--+1gzE^(>9IGUT{AZpFmU=70Qp zJe3Y#tAQ(zvr0)x6{W6P!|>x*e?58#wPZeoGt=45SXKPC;@=&fslW06p{<>qEzI4{ znH4|vd;MO=)6A_qxX~$_mhIP}e^140*HJ9ic|}U+)v1^L-`61V+5h9-y;C<=dBdS~ zj7h{Prph3$QRNbe()d57_N$5dKpb8Cfcy5X_HE`Dd?l2x((nTU+ScZZXGEP{1CN^0 zs>t!zU7WU-_HZ#g?s$Ov+EwO7drCshN$%R745@?R*J3Oc!R+eguNyg5aV+O^pQIfa zdy^Iz(z)xFt5a8}widw=C%d@>t0A{bQ^TRxDSKtNZ)d`*7m0*I{gTv0e})~Sf##ER zzyzbwb~U!m8^E@{@F3g3@gTZ>a}vh^7LcXTHc~K@sj1tiBY!RF?z(f`J>W0v{vLs) z@)}C6hg}ou`y&LJ%Zq;{l-GT0UZdUl&;;3AVDie=-u5R*&(Sf`0VEC z5&W5IXu@zVh0~652IjFn2IUpGHMG6{(k6R_T|ryN{gWO_N_(vXvn|sr_~Weyah$na zu<`GL5m{@+%#|LkPsM7M<`hzQje_A7ZYO&UfBxyG?KxM9P8?pn|G&B(lytVbz4bb1 zAQEXA$FcmqsgdV-bpdZPDe7UWYx69$2wvOJq|_8p7F|v_d_J*`SR;0!wL(c=3 z&5ey{4#dfZq^+&W`oo_+3dkO};Z>HZ;!GDZ)k2nNPsg~#DupiJl!?sMleMFeaHyjK zt@DUUFTv_1>)-7qzI%I~7q-R$9!^POCBK|;v$Y-S3X>r=-q3djEyNuxX|a=k_#n?P ze*JLqo!)$^4?&R}kZWw({T5rvGGZoQ&QPaHLa*G-FW)B@

Qi>XZymQkup|9x-WW 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%0Ai)!9UmATAh| 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

Q{s%(qblU)_NZqCrn{jDzq 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

1;Y;iCSk?U{Wh0}t^Pta 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

V=Y0ly&B7u}f;( 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 0") + } + if c.Preview.DirectoryPreviewLimit <= 0 { + return errors.New("preview.directory_preview_limit must be > 0") + } + if !c.Browser.Columns.Name { + return errors.New("browser.columns.name must stay enabled") + } + if strings.TrimSpace(c.UI.PathDisplay) == "" { + c.UI.PathDisplay = "short" + } + if c.UI.PaneGap < 0 || c.UI.PaneGap > 4 { + return errors.New("ui.pane_gap must be between 0 and 4") + } + if c.UI.CenterWidthPercent < 20 || c.UI.CenterWidthPercent > 60 { + return errors.New("ui.center_width_percent must be between 20 and 60") + } + switch strings.ToLower(strings.TrimSpace(c.Browser.Sort.By)) { + case "", "name": + c.Browser.Sort.By = "name" + case "modified", "size", "created", "extension": + default: + return fmt.Errorf("browser.sort.by must be one of: name, modified, size, created, extension") + } + return nil +} + +func resolvePath(explicitPath string) (string, bool, error) { + var candidates []string + + if explicitPath != "" { + candidates = append(candidates, explicitPath) + } else { + homeDir, err := os.UserHomeDir() + if err != nil { + return "", false, fmt.Errorf("resolve home dir: %w", err) + } + xdgDir := os.Getenv("XDG_CONFIG_HOME") + if xdgDir == "" { + xdgDir = filepath.Join(homeDir, ".config") + } + + candidates = append(candidates, + "vcom.toml", + filepath.Join("config", "vcom.toml"), + filepath.Join(xdgDir, "vcom", "vcom.toml"), + filepath.Join(homeDir, ".config", "vcom", "vcom.toml"), + ) + } + + for _, candidate := range candidates { + if candidate == "" { + continue + } + absPath, err := filepath.Abs(candidate) + if err != nil { + return "", false, fmt.Errorf("resolve %s: %w", candidate, err) + } + if _, err := os.Stat(absPath); err == nil { + return absPath, true, nil + } else if !isMissingPathError(err) { + return "", false, fmt.Errorf("stat %s: %w", absPath, err) + } + } + + return "", false, nil +} + +func isMissingPathError(err error) bool { + return errors.Is(err, os.ErrNotExist) || errors.Is(err, syscall.ENOTDIR) +} + +func DefaultUserPath() (string, error) { + homeDir, err := os.UserHomeDir() + if err != nil { + return "", fmt.Errorf("resolve home dir: %w", err) + } + xdgDir := os.Getenv("XDG_CONFIG_HOME") + if xdgDir == "" { + xdgDir = filepath.Join(homeDir, ".config") + } + return filepath.Join(xdgDir, "vcom", "vcom.toml"), nil +} diff --git a/src/vcom-0.2.5/internal/config/session.go b/src/vcom-0.2.5/internal/config/session.go new file mode 100644 index 0000000..8f022e3 --- /dev/null +++ b/src/vcom-0.2.5/internal/config/session.go @@ -0,0 +1,84 @@ +package config + +import ( + "fmt" + "os" + "path/filepath" + + toml "github.com/pelletier/go-toml/v2" +) + +// SessionState stores the UI state that should be restored on next launch. +type SessionState struct { + ActivePane string `toml:"active_pane"` + Left PaneSession `toml:"left"` + Right PaneSession `toml:"right"` +} + +// PaneSession stores per-pane session state (path and selected entry name). +type PaneSession struct { + Path string `toml:"path"` + EntryName string `toml:"entry_name"` + CursorMemory map[string]string `toml:"cursor_memory"` +} + +// DefaultSessionPath returns the path to the session file. +func DefaultSessionPath() (string, error) { + homeDir, err := os.UserHomeDir() + if err != nil { + return "", fmt.Errorf("resolve home dir: %w", err) + } + xdgDir := os.Getenv("XDG_CONFIG_HOME") + if xdgDir == "" { + xdgDir = filepath.Join(homeDir, ".config") + } + return filepath.Join(xdgDir, "vcom", "session.toml"), nil +} + +// LoadSession reads the session state from disk. +// Returns (SessionState, nil) on success, (empty, error) if file doesn't exist. +func LoadSession() (SessionState, error) { + path, err := DefaultSessionPath() + if err != nil { + return SessionState{}, err + } + + data, err := os.ReadFile(path) + if err != nil { + if os.IsNotExist(err) { + return SessionState{}, nil + } + return SessionState{}, fmt.Errorf("read %s: %w", path, err) + } + + var s SessionState + if err := toml.Unmarshal(data, &s); err != nil { + return SessionState{}, fmt.Errorf("parse %s: %w", path, err) + } + return s, nil +} + +// SaveSession writes the session state to disk. +func SaveSession(s SessionState) error { + path, err := DefaultSessionPath() + if err != nil { + return err + } + + absPath, err := filepath.Abs(path) + if err != nil { + return fmt.Errorf("resolve %s: %w", path, err) + } + if err := os.MkdirAll(filepath.Dir(absPath), 0o755); err != nil { + return fmt.Errorf("mkdir %s: %w", filepath.Dir(absPath), err) + } + + data, err := toml.Marshal(s) + if err != nil { + return fmt.Errorf("marshal session: %w", err) + } + if err := os.WriteFile(absPath, data, 0o644); err != nil { + return fmt.Errorf("write %s: %w", path, err) + } + return nil +} diff --git a/src/vcom-0.2.5/internal/fs/archive.go b/src/vcom-0.2.5/internal/fs/archive.go new file mode 100644 index 0000000..b90843e --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/archive.go @@ -0,0 +1,656 @@ +package vfs + +import ( + "archive/tar" + "archive/zip" + "compress/gzip" + "context" + "fmt" + "io" + "os" + "path/filepath" + "strings" + "time" +) + +func ExtractArchiveToTemp(sourcePath string) (string, error) { + // Count total files for progress reporting + totalFiles, totalBytes := countArchiveEntries(sourcePath) + + tempDir, err := os.MkdirTemp("", "vcom-archive-") + if err != nil { + return "", err + } + cleanupOnErr := func(extractErr error) (string, error) { + _ = os.RemoveAll(tempDir) + return "", extractErr + } + + // Use background context for temp extraction (no cancellation needed) + ctx := context.Background() + + sourceLower := strings.ToLower(sourcePath) + switch { + case strings.HasSuffix(sourceLower, ".zip"): + if err := extractZipArchive(ctx, sourcePath, tempDir, nil, totalFiles, totalBytes); err != nil { + return cleanupOnErr(err) + } + case strings.HasSuffix(sourceLower, ".tar"): + if err := extractTarArchive(ctx, sourcePath, tempDir, false, nil, totalFiles, totalBytes); err != nil { + return cleanupOnErr(err) + } + case strings.HasSuffix(sourceLower, ".tar.gz"), strings.HasSuffix(sourceLower, ".tgz"): + if err := extractTarArchive(ctx, sourcePath, tempDir, true, nil, totalFiles, totalBytes); err != nil { + return cleanupOnErr(err) + } + default: + return cleanupOnErr(fmt.Errorf("archive format is not supported: %s", filepath.Ext(sourcePath))) + } + + return tempDir, nil +} + +// ExtractArchiveToDir extracts an archive to the specified target directory. +// Unlike ExtractArchiveToTemp, it extracts directly to targetDir without +// creating a temporary directory. The progress callback is called after each +// file is extracted; it may be nil. Cancellation is supported via ctx. +func ExtractArchiveToDir(ctx context.Context, sourcePath, targetDir string, progress func(CopyProgress)) error { + totalFiles, totalBytes := countArchiveEntries(sourcePath) + sourceLower := strings.ToLower(sourcePath) + switch { + case strings.HasSuffix(sourceLower, ".zip"): + return extractZipArchive(ctx, sourcePath, targetDir, progress, totalFiles, totalBytes) + case strings.HasSuffix(sourceLower, ".tar"): + return extractTarArchive(ctx, sourcePath, targetDir, false, progress, totalFiles, totalBytes) + case strings.HasSuffix(sourceLower, ".tar.gz"), strings.HasSuffix(sourceLower, ".tgz"): + return extractTarArchive(ctx, sourcePath, targetDir, true, progress, totalFiles, totalBytes) + default: + return fmt.Errorf("archive format is not supported: %s", filepath.Ext(sourcePath)) + } +} + +// countArchiveEntries counts the total number of files and total uncompressed +// bytes in an archive without extracting. Used for progress reporting. +func countArchiveEntries(sourcePath string) (int64, int64) { + sourceLower := strings.ToLower(sourcePath) + switch { + case strings.HasSuffix(sourceLower, ".zip"): + return countZipEntries(sourcePath) + case strings.HasSuffix(sourceLower, ".tar"), strings.HasSuffix(sourceLower, ".tar.gz"), strings.HasSuffix(sourceLower, ".tgz"): + return countTarEntries(sourcePath) + default: + return 0, 0 + } +} + +func countZipEntries(sourcePath string) (int64, int64) { + r, err := zip.OpenReader(sourcePath) + if err != nil { + return 0, 0 + } + defer r.Close() + var files, bytes int64 + for _, f := range r.File { + if !f.FileInfo().IsDir() { + files++ + bytes += int64(f.UncompressedSize64) + } + } + return files, bytes +} + +func countTarEntries(sourcePath string) (int64, int64) { + f, err := os.Open(sourcePath) + if err != nil { + return 0, 0 + } + defer f.Close() + + var reader io.Reader = f + if strings.HasSuffix(strings.ToLower(sourcePath), ".tar.gz") || strings.HasSuffix(strings.ToLower(sourcePath), ".tgz") { + gr, err := gzip.NewReader(f) + if err != nil { + return 0, 0 + } + defer gr.Close() + reader = gr + } + + tarReader := tar.NewReader(reader) + var files, bytes int64 + for { + hdr, err := tarReader.Next() + if err == io.EOF { + break + } + if err != nil { + break + } + if hdr.Typeflag == tar.TypeReg || hdr.Typeflag == tar.TypeRegA { + files++ + bytes += hdr.Size + } + } + return files, bytes +} + +func extractZipArchive(ctx context.Context, sourcePath string, targetDir string, progress func(CopyProgress), totalFiles, totalBytes int64) error { + reader, err := zip.OpenReader(sourcePath) + if err != nil { + return err + } + defer reader.Close() + + var filesDone int64 + for _, file := range reader.File { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + + relPath, ok := safeArchivePath(file.Name) + if !ok { + continue + } + fullPath := filepath.Join(targetDir, relPath) + + if file.FileInfo().IsDir() { + if err := os.MkdirAll(fullPath, 0o755); err != nil { + return err + } + continue + } + + if err := os.MkdirAll(filepath.Dir(fullPath), 0o755); err != nil { + return err + } + src, err := file.Open() + if err != nil { + return err + } + if err := writeArchiveFile(fullPath, src, file.Mode()); err != nil { + src.Close() + return err + } + src.Close() + + filesDone++ + if progress != nil { + progress(CopyProgress{ + FilesDone: int(filesDone), + FilesTotal: int(totalFiles), + BytesDone: 0, + BytesTotal: totalBytes, + Stage: "Extracting data", + }) + } + } + return nil +} + +func extractTarArchive(ctx context.Context, sourcePath string, targetDir string, gzipped bool, progress func(CopyProgress), totalFiles, totalBytes int64) error { + file, err := os.Open(sourcePath) + if err != nil { + return err + } + defer file.Close() + + var reader io.Reader = file + if gzipped { + gzipReader, err := gzip.NewReader(file) + if err != nil { + return err + } + defer gzipReader.Close() + reader = gzipReader + } + + tarReader := tar.NewReader(reader) + var filesDone int64 + for { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + + header, err := tarReader.Next() + if err == io.EOF { + break + } + if err != nil { + return err + } + relPath, ok := safeArchivePath(header.Name) + if !ok { + continue + } + fullPath := filepath.Join(targetDir, relPath) + + switch header.Typeflag { + case tar.TypeDir: + if err := os.MkdirAll(fullPath, 0o755); err != nil { + return err + } + case tar.TypeReg, tar.TypeRegA: + if err := os.MkdirAll(filepath.Dir(fullPath), 0o755); err != nil { + return err + } + if err := writeArchiveFile(fullPath, tarReader, os.FileMode(header.Mode)); err != nil { + return err + } + filesDone++ + if progress != nil { + progress(CopyProgress{ + FilesDone: int(filesDone), + FilesTotal: int(totalFiles), + BytesDone: 0, + BytesTotal: totalBytes, + Stage: "Extracting data", + }) + } + } + } + + return nil +} + +func writeArchiveFile(path string, source io.Reader, mode os.FileMode) error { + if mode == 0 { + mode = 0o644 + } + output, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, mode.Perm()) + if err != nil { + return err + } + defer output.Close() + + _, err = io.Copy(output, source) + return err +} + +func safeArchivePath(name string) (string, bool) { + clean := filepath.Clean(name) + if clean == "." || clean == string(filepath.Separator) { + return "", false + } + if filepath.IsAbs(clean) { + return "", false + } + if clean == ".." || strings.HasPrefix(clean, ".."+string(filepath.Separator)) { + return "", false + } + return clean, true +} + +// ArchiveFormat returns the file extension for a given archive format name. +func ArchiveFormat(format string) string { + switch strings.ToLower(strings.TrimSpace(format)) { + case "zip": + return ".zip" + case "tar": + return ".tar" + case "targz", "tar.gz", "tgz": + return ".tar.gz" + default: + return ".zip" + } +} + +// ArchiveName generates an archive filename from source paths. +func ArchiveName(sources []string, format string) string { + ext := ArchiveFormat(format) + if len(sources) == 1 { + base := strings.TrimSuffix(filepath.Base(sources[0]), filepath.Ext(sources[0])) + return base + ext + } + base := filepath.Base(filepath.Dir(sources[0])) + if base == "." || base == "" || base == string(filepath.Separator) { + base = "archive" + } + return base + ext +} + +// CreateArchive creates an archive from source paths using the given format. +// Supported formats: "zip", "tar", "tar.gz" (or "targz", "tgz"). +// Progress is reported via the callback function. +func CreateArchive(ctx context.Context, sources []string, archivePath string, progress func(CopyProgress)) error { + if ctx == nil { + ctx = context.Background() + } + + lower := strings.ToLower(archivePath) + switch { + case strings.HasSuffix(lower, ".zip"): + return createZipArchive(ctx, sources, archivePath, progress) + case strings.HasSuffix(lower, ".tar.gz"), strings.HasSuffix(lower, ".tgz"): + return createTarGzArchive(ctx, sources, archivePath, progress) + case strings.HasSuffix(lower, ".tar"): + return createTarArchive(ctx, sources, archivePath, progress) + default: + return fmt.Errorf("unsupported archive format: %s", filepath.Ext(archivePath)) + } +} + +func createZipArchive(ctx context.Context, sources []string, archivePath string, progress func(CopyProgress)) error { + file, err := os.Create(archivePath) + if err != nil { + return fmt.Errorf("create %s: %w", archivePath, err) + } + defer file.Close() + + zipWriter := zip.NewWriter(file) + defer zipWriter.Close() + + var totalFiles int + var totalBytes int64 + for _, source := range sources { + info, err := os.Lstat(source) + if err != nil { + return fmt.Errorf("stat %s: %w", source, err) + } + if info.IsDir() { + err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + totalFiles++ + if !info.IsDir() { + totalBytes += info.Size() + } + return nil + }) + if err != nil { + return err + } + } else { + totalFiles++ + totalBytes += info.Size() + } + } + + state := ©ProgressState{ + ctx: ctx, + stats: TransferStats{FilesTotal: totalFiles, BytesTotal: totalBytes}, + callback: progress, + lastEmit: time.Now(), + } + + baseDir := commonBaseDir(sources) + for _, source := range sources { + info, err := os.Lstat(source) + if err != nil { + return fmt.Errorf("stat %s: %w", source, err) + } + relRoot := source + if baseDir != "" { + relRoot, _ = filepath.Rel(baseDir, source) + } + if info.IsDir() { + err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + relPath, _ := filepath.Rel(baseDir, path) + relPath = filepath.ToSlash(relPath) + header, zipErr := zip.FileInfoHeader(info) + if zipErr != nil { + return zipErr + } + header.Name = relPath + if info.IsDir() { + header.Name += "/" + } else { + header.Method = zip.Deflate + } + writer, zipErr := zipWriter.CreateHeader(header) + if zipErr != nil { + return zipErr + } + if !info.IsDir() { + f, openErr := os.Open(path) + if openErr != nil { + return openErr + } + written, copyErr := io.Copy(writer, f) + f.Close() + if copyErr != nil { + return copyErr + } + state.filesDone++ + state.bytesDone += written + } else { + state.filesDone++ + } + emitArchiveProgress(state, path) + return nil + }) + if err != nil { + return err + } + } else { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + relPath := filepath.ToSlash(relRoot) + header, zipErr := zip.FileInfoHeader(info) + if zipErr != nil { + return zipErr + } + header.Name = relPath + header.Method = zip.Deflate + writer, zipErr := zipWriter.CreateHeader(header) + if zipErr != nil { + return zipErr + } + f, openErr := os.Open(source) + if openErr != nil { + return openErr + } + written, copyErr := io.Copy(writer, f) + f.Close() + if copyErr != nil { + return copyErr + } + state.filesDone++ + state.bytesDone += written + emitArchiveProgress(state, source) + } + } + return nil +} + +func createTarArchive(ctx context.Context, sources []string, archivePath string, progress func(CopyProgress)) error { + return createTarArchiveWithGzip(ctx, sources, archivePath, false, progress) +} + +func createTarGzArchive(ctx context.Context, sources []string, archivePath string, progress func(CopyProgress)) error { + return createTarArchiveWithGzip(ctx, sources, archivePath, true, progress) +} + +func createTarArchiveWithGzip(ctx context.Context, sources []string, archivePath string, gzipped bool, progress func(CopyProgress)) error { + file, err := os.Create(archivePath) + if err != nil { + return fmt.Errorf("create %s: %w", archivePath, err) + } + defer file.Close() + + var writer io.WriteCloser = file + if gzipped { + gzipWriter := gzip.NewWriter(file) + defer gzipWriter.Close() + writer = gzipWriter + } + + tarWriter := tar.NewWriter(writer) + defer tarWriter.Close() + + var totalFiles int + var totalBytes int64 + for _, source := range sources { + info, err := os.Lstat(source) + if err != nil { + return fmt.Errorf("stat %s: %w", source, err) + } + if info.IsDir() { + err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + totalFiles++ + if !info.IsDir() { + totalBytes += info.Size() + } + return nil + }) + if err != nil { + return err + } + } else { + totalFiles++ + totalBytes += info.Size() + } + } + + state := ©ProgressState{ + ctx: ctx, + stats: TransferStats{FilesTotal: totalFiles, BytesTotal: totalBytes}, + callback: progress, + lastEmit: time.Now(), + } + + baseDir := commonBaseDir(sources) + for _, source := range sources { + info, err := os.Lstat(source) + if err != nil { + return fmt.Errorf("stat %s: %w", source, err) + } + if info.IsDir() { + err = filepath.Walk(source, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + relPath, _ := filepath.Rel(baseDir, path) + relPath = filepath.ToSlash(relPath) + header, tarErr := tar.FileInfoHeader(info, path) + if tarErr != nil { + return tarErr + } + header.Name = relPath + if info.IsDir() { + header.Name += "/" + } + if err := tarWriter.WriteHeader(header); err != nil { + return err + } + if !info.IsDir() { + f, openErr := os.Open(path) + if openErr != nil { + return openErr + } + written, copyErr := io.Copy(tarWriter, f) + f.Close() + if copyErr != nil { + return copyErr + } + state.filesDone++ + state.bytesDone += written + } else { + state.filesDone++ + } + emitArchiveProgress(state, path) + return nil + }) + if err != nil { + return err + } + } else { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + relPath, _ := filepath.Rel(baseDir, source) + relPath = filepath.ToSlash(relPath) + header, tarErr := tar.FileInfoHeader(info, source) + if tarErr != nil { + return tarErr + } + header.Name = relPath + if err := tarWriter.WriteHeader(header); err != nil { + return err + } + f, openErr := os.Open(source) + if openErr != nil { + return openErr + } + written, copyErr := io.Copy(tarWriter, f) + f.Close() + if copyErr != nil { + return copyErr + } + state.filesDone++ + state.bytesDone += written + emitArchiveProgress(state, source) + } + } + return nil +} + +func emitArchiveProgress(state *copyProgressState, currentPath string) { + if state.callback == nil { + return + } + now := time.Now() + if now.Sub(state.lastEmit) < 50*time.Millisecond { + return + } + state.lastEmit = now + state.callback(CopyProgress{ + FilesDone: state.filesDone, + FilesTotal: state.stats.FilesTotal, + BytesDone: state.bytesDone, + BytesTotal: state.stats.BytesTotal, + CurrentPath: currentPath, + Stage: "Archiving", + }) +} + +// commonBaseDir returns the longest common directory prefix for the given paths. +func commonBaseDir(paths []string) string { + if len(paths) == 0 { + return "" + } + if len(paths) == 1 { + if info, err := os.Lstat(paths[0]); err == nil && info.IsDir() { + return filepath.Dir(paths[0]) + } + return filepath.Dir(paths[0]) + } + + base := filepath.Dir(paths[0]) + for _, p := range paths[1:] { + dir := filepath.Dir(p) + for !strings.HasPrefix(dir, base) && base != "" { + parent := filepath.Dir(base) + if parent == base { + return "" + } + base = parent + } + } + return base +} diff --git a/src/vcom-0.2.5/internal/fs/entry.go b/src/vcom-0.2.5/internal/fs/entry.go new file mode 100644 index 0000000..3606fde --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/entry.go @@ -0,0 +1,156 @@ +package vfs + +import ( + "io/fs" + "path/filepath" + "strings" + "time" +) + +var ( + configExtensions = map[string]struct{}{ + "toml": {}, "yaml": {}, "yml": {}, "json": {}, "jsonc": {}, "ini": {}, "conf": {}, + "config": {}, "env": {}, "properties": {}, "xml": {}, "mod": {}, "sum": {}, "lock": {}, + } + textExtensions = map[string]struct{}{ + "txt": {}, "md": {}, "rst": {}, "go": {}, "rs": {}, "c": {}, "h": {}, "cpp": {}, "hpp": {}, + "py": {}, "js": {}, "ts": {}, "tsx": {}, "jsx": {}, "java": {}, "kt": {}, "kts": {}, "swift": {}, + "html": {}, "css": {}, "scss": {}, "sass": {}, "less": {}, "styl": {}, + "sh": {}, "bash": {}, "zsh": {}, "fish": {}, "sql": {}, + "log": {}, "csv": {}, "tsv": {}, + "lua": {}, "rb": {}, "pl": {}, "pm": {}, "t": {}, "ps1": {}, "bat": {}, "cmd": {}, + "vue": {}, "svelte": {}, "astro": {}, "ejs": {}, "hbs": {}, "pug": {}, "haml": {}, "php": {}, "twig": {}, + "scala": {}, "groovy": {}, "clj": {}, "ex": {}, "exs": {}, "elm": {}, "hs": {}, "lisp": {}, "cl": {}, "rkt": {}, "scm": {}, "dart": {}, + "tex": {}, "bib": {}, "sty": {}, "cls": {}, + "gradle": {}, "cmake": {}, "mk": {}, "mak": {}, + "asm": {}, "s": {}, "inc": {}, + "patch": {}, "diff": {}, + "proto": {}, "graphql": {}, "gql": {}, + "tf": {}, "hcl": {}, + "r": {}, "m": {}, "mm": {}, + "nim": {}, "zig": {}, "odin": {}, "v": {}, "nix": {}, + "cr": {}, "jl": {}, + "erl": {}, "hrl": {}, + } + // textFilenames lists common text files without a meaningful extension + // (like Makefile, Dockerfile, etc.) so they open in the editor. + textFilenames = map[string]struct{}{ + "makefile": {}, "dockerfile": {}, "containerfile": {}, + "readme": {}, "license": {}, "licence": {}, "copying": {}, "changelog": {}, "changes": {}, + "todo": {}, "notes": {}, "authors": {}, "contributors": {}, "maintainers": {}, + "procfile": {}, "gemfile": {}, "rakefile": {}, "snapfile": {}, "fastfile": {}, + "cmakelists": {}, "justfile": {}, "taskfile": {}, + "gitignore": {}, "gitattributes": {}, "gitmodules": {}, "gitkeep": {}, + "gitconfig": {}, "git-blame-ignore-revs": {}, + "editorconfig": {}, "envrc": {}, "hushlogin": {}, + "xsession": {}, "xresources": {}, "xinitrc": {}, + "bashrc": {}, "bash_profile": {}, "bash_logout": {}, + "zshrc": {}, "zprofile": {}, "zlogin": {}, "zlogout": {}, + "profile": {}, "inputrc": {}, "tmux.conf": {}, + "npmrc": {}, "yarnrc": {}, "pnpmrc": {}, + "eslintrc": {}, "prettierrc": {}, "babelrc": {}, + "stylelintrc": {}, "commitlintrc": {}, + "htaccess": {}, "htpasswd": {}, + } + imageExtensions = map[string]struct{}{ + "png": {}, "jpg": {}, "jpeg": {}, "gif": {}, "webp": {}, "bmp": {}, "svg": {}, "ico": {}, + "avif": {}, "heic": {}, "heif": {}, "tiff": {}, "tif": {}, + } + pdfExtensions = map[string]struct{}{ + "pdf": {}, + } + audioExtensions = map[string]struct{}{ + "mp3": {}, "flac": {}, "ogg": {}, "opus": {}, "wav": {}, + "aac": {}, "m4a": {}, "wma": {}, "dsf": {}, "ape": {}, + } + videoExtensions = map[string]struct{}{ + "mp4": {}, "mkv": {}, "mov": {}, "avi": {}, "webm": {}, + "m4v": {}, "wmv": {}, "flv": {}, "ts": {}, "mts": {}, + } + archiveExtensions = map[string]struct{}{ + "zip": {}, "tar": {}, "gz": {}, "tgz": {}, "xz": {}, "bz2": {}, "7z": {}, "rar": {}, + "zst": {}, "lz": {}, "lz4": {}, "lzma": {}, + "iso": {}, "img": {}, "dmg": {}, + } +) + +type Entry struct { + Name string + Path string + Extension string + Mode fs.FileMode + Size int64 + ModifiedAt time.Time + CreatedAt time.Time + CreatedKnown bool + IsDir bool + IsParent bool + IsHidden bool + IsRemote bool + Connected bool + DirSizeKnown bool + RemoteHostName string +} + +func (e Entry) DisplayName() string { + if e.IsParent { + return ".." + } + if e.IsDir { + return e.Name + "/" + } + return e.Name +} + +func (e Entry) IsFile() bool { + return !e.IsDir && !e.IsParent +} + +func (e Entry) MatchKey() string { + return strings.ToLower(e.Name) +} + +func (e Entry) IsExecutable() bool { + return !e.IsDir && !e.IsParent && e.Mode&0o111 != 0 +} + +func (e Entry) Category() string { + switch { + case e.IsParent: + return "parent" + case e.IsRemote: + return "remote" + case e.IsDir: + return "directory" + case hasExt(configExtensions, e.Extension): + return "config" + case hasExt(textExtensions, e.Extension): + return "text" + case hasExt(textFilenames, strings.ToLower(e.Name)): + return "text" + case hasExt(imageExtensions, e.Extension): + return "image" + case hasExt(pdfExtensions, e.Extension): + return "pdf" + case hasExt(audioExtensions, e.Extension): + return "audio" + case hasExt(videoExtensions, e.Extension): + return "video" + case hasExt(archiveExtensions, e.Extension): + return "archive" + case e.IsExecutable(): + return "executable" + default: + return "binary" + } +} + +func ext(name string) string { + value := strings.TrimPrefix(filepath.Ext(name), ".") + return strings.ToLower(value) +} + +func hasExt(set map[string]struct{}, ext string) bool { + _, ok := set[strings.ToLower(ext)] + return ok +} diff --git a/src/vcom-0.2.5/internal/fs/ops.go b/src/vcom-0.2.5/internal/fs/ops.go new file mode 100644 index 0000000..47b02f3 --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/ops.go @@ -0,0 +1,527 @@ +package vfs + +import ( + "context" + "errors" + "fmt" + "io" + "io/fs" + "os" + "path/filepath" + "syscall" + "time" +) + +type TransferStats struct { + FilesTotal int + BytesTotal int64 +} + +type CopyProgress struct { + FilesDone int + FilesTotal int + BytesDone int64 + BytesTotal int64 + CurrentPath string + Stage string +} + +type copyProgressState struct { + ctx context.Context + filesDone int + bytesDone int64 + stats TransferStats + callback func(CopyProgress) + lastEmit time.Time + stage string + discover bool // if true, count files during copy for progress total +} + +func (s *copyProgressState) discoverFiles(count int, dirPath string) { + if count == 0 { + return + } + s.stats.FilesTotal += count + s.emit(dirPath, false) +} + +func CopyPath(srcPath string, dstDir string, overwrite bool) (string, error) { + return CopyPathWithProgress(srcPath, dstDir, overwrite, TransferStats{}, nil) +} + +func CopyPathWithProgressContext(ctx context.Context, srcPath string, dstDir string, overwrite bool, stats TransferStats, progress func(CopyProgress)) (string, error) { + if ctx == nil { + ctx = context.Background() + } + + srcInfo, err := os.Lstat(srcPath) + if err != nil { + return "", fmt.Errorf("stat %s: %w", srcPath, err) + } + + targetPath := filepath.Join(dstDir, filepath.Base(srcPath)) + if same, err := samePath(srcPath, targetPath); err != nil { + return "", err + } else if same { + return "", fmt.Errorf("source and target are the same: %s", targetPath) + } + + if exists, err := PathExists(targetPath); err != nil { + return "", err + } else if exists { + if !overwrite { + return "", ErrOverwrite(targetPath) + } + if err := os.RemoveAll(targetPath); err != nil { + return "", err + } + } + + if err := ctx.Err(); err != nil { + return "", err + } + if progress == nil { + progress = func(CopyProgress) {} + } + tracker := copyProgressState{ + ctx: ctx, + stats: stats, + callback: progress, + stage: "Scanning files...", + discover: stats.FilesTotal == 0, + } + tracker.emit(srcPath, true) + tracker.stage = "Copying files..." + + cleanupOnErr := func(copyErr error) (string, error) { + if copyErr != nil { + _ = os.RemoveAll(targetPath) + } + return "", copyErr + } + + if srcInfo.Mode()&os.ModeSymlink != 0 { + target, err := os.Readlink(srcPath) + if err != nil { + return "", err + } + if err := ctx.Err(); err != nil { + return "", err + } + if err := os.Symlink(target, targetPath); err != nil { + return "", err + } + tracker.finishFile(srcPath) + return targetPath, nil + } + + if srcInfo.IsDir() { + if err := copyDir(srcPath, targetPath, &tracker); err != nil { + return cleanupOnErr(err) + } + if err := ctx.Err(); err != nil { + return cleanupOnErr(err) + } + tracker.emit(srcPath, true) + return targetPath, nil + } + + if err := copyFile(srcPath, targetPath, srcInfo.Mode(), &tracker); err != nil { + return cleanupOnErr(err) + } + tracker.emit(srcPath, true) + return targetPath, nil +} + +func CopyStats(srcPath string) (TransferStats, error) { + srcInfo, err := os.Lstat(srcPath) + if err != nil { + return TransferStats{}, fmt.Errorf("stat %s: %w", srcPath, err) + } + + if srcInfo.Mode()&os.ModeSymlink != 0 { + return TransferStats{FilesTotal: 1, BytesTotal: 0}, nil + } + if !srcInfo.IsDir() { + return TransferStats{FilesTotal: 1, BytesTotal: srcInfo.Size()}, nil + } + + stats := TransferStats{} + err = filepath.WalkDir(srcPath, func(current string, d fs.DirEntry, walkErr error) error { + if walkErr != nil { + return walkErr + } + if d.IsDir() { + return nil + } + stats.FilesTotal++ + return nil + }) + if err != nil { + return TransferStats{}, err + } + + return stats, nil +} + +func CopyPathWithProgress(srcPath string, dstDir string, overwrite bool, stats TransferStats, progress func(CopyProgress)) (string, error) { + return CopyPathWithProgressContext(context.Background(), srcPath, dstDir, overwrite, stats, progress) +} + +func MovePath(srcPath string, dstDir string, overwrite bool) (string, error) { + return MovePathWithProgress(srcPath, dstDir, overwrite, TransferStats{}, nil) +} + +func MovePathWithProgress(srcPath string, dstDir string, overwrite bool, stats TransferStats, progress func(CopyProgress)) (string, error) { + return MovePathWithProgressContext(context.Background(), srcPath, dstDir, overwrite, stats, progress) +} + +func MovePathWithProgressContext(ctx context.Context, srcPath string, dstDir string, overwrite bool, stats TransferStats, progress func(CopyProgress)) (string, error) { + if ctx == nil { + ctx = context.Background() + } + + targetPath := filepath.Join(dstDir, filepath.Base(srcPath)) + if same, err := samePath(srcPath, targetPath); err != nil { + return "", err + } else if same { + return "", fmt.Errorf("source and target are the same: %s", targetPath) + } + + if exists, err := PathExists(targetPath); err != nil { + return "", err + } else if exists { + if !overwrite { + return "", ErrOverwrite(targetPath) + } + if err := os.RemoveAll(targetPath); err != nil { + return "", err + } + } + + if progress == nil { + progress = func(CopyProgress) {} + } + if err := ctx.Err(); err != nil { + return "", err + } + if err := os.Rename(srcPath, targetPath); err == nil { + progress(CopyProgress{ + FilesDone: stats.FilesTotal, + FilesTotal: stats.FilesTotal, + BytesDone: stats.BytesTotal, + BytesTotal: stats.BytesTotal, + CurrentPath: srcPath, + Stage: "Move completed", + }) + return targetPath, nil + } else if !errors.Is(err, syscall.EXDEV) { + return "", err + } + + targetPath, err := CopyPathWithProgressContext(ctx, srcPath, dstDir, overwrite, stats, progress) + if err != nil { + return "", err + } + if err := ctx.Err(); err != nil { + _ = os.RemoveAll(targetPath) + return "", err + } + progress(CopyProgress{ + FilesDone: stats.FilesTotal, + FilesTotal: stats.FilesTotal, + BytesDone: stats.BytesTotal, + BytesTotal: stats.BytesTotal, + CurrentPath: srcPath, + Stage: "Finalizing move", + }) + if err := DeletePath(srcPath); err != nil { + return "", err + } + return targetPath, nil +} + +func PathExists(path string) (bool, error) { + if _, err := os.Lstat(path); err == nil { + return true, nil + } else if errors.Is(err, os.ErrNotExist) { + return false, nil + } else { + return false, err + } +} + +func DeletePath(path string) error { + return os.RemoveAll(path) +} + +// MoveToTrash moves a file or directory to the FreeDesktop Trash directory +// (~/.local/share/Trash). Follows the FreeDesktop Trash specification: +// - The original item is moved to Trash/files/ +// - A .trashinfo file is written to Trash/info/.trashinfo +// - If already exists in Trash/files, a numeric suffix is appended. +func MoveToTrash(path string) error { + home, err := os.UserHomeDir() + if err != nil { + return fmt.Errorf("cannot determine home directory: %w", err) + } + + trashDir := filepath.Join(home, ".local", "share", "Trash") + filesDir := filepath.Join(trashDir, "files") + infoDir := filepath.Join(trashDir, "info") + + if err := os.MkdirAll(filesDir, 0o700); err != nil { + return fmt.Errorf("cannot create trash files directory: %w", err) + } + if err := os.MkdirAll(infoDir, 0o700); err != nil { + return fmt.Errorf("cannot create trash info directory: %w", err) + } + + baseName := filepath.Base(path) + + // Generate a unique name in the trash directory + destName := baseName + for counter := 1; ; counter++ { + destPath := filepath.Join(filesDir, destName) + if _, err := os.Stat(destPath); os.IsNotExist(err) { + break + } else if err != nil { + return fmt.Errorf("cannot stat trash path: %w", err) + } + destName = fmt.Sprintf("%s.%d", baseName, counter) + } + + destPath := filepath.Join(filesDir, destName) + if err := os.Rename(path, destPath); err != nil { + // Cross-filesystem move: fall back to copy+delete + return fmt.Errorf("cannot move to trash: %w", err) + } + + // Write .trashinfo file + absPath, err := filepath.Abs(path) + if err != nil { + absPath = path + } + now := time.Now().Format("2006-01-02T15:04:05") + infoContent := fmt.Sprintf("[Trash Info]\nPath=%s\nDeletionDate=%s\n", absPath, now) + infoPath := filepath.Join(infoDir, destName+".trashinfo") + if err := os.WriteFile(infoPath, []byte(infoContent), 0o600); err != nil { + // Best-effort: if info file fails, try to move the file back + _ = os.Rename(destPath, path) + return fmt.Errorf("cannot write trash info: %w", err) + } + + return nil +} + +func MakeDir(parent string, name string) (string, error) { + target := filepath.Join(parent, name) + if err := os.MkdirAll(target, 0o755); err != nil { + return "", err + } + return target, nil +} + +func RenamePath(sourcePath string, newName string) (string, error) { + newName = filepath.Base(filepath.Clean(newName)) + if newName == "." || newName == "" { + return "", fmt.Errorf("invalid target name") + } + + targetPath := filepath.Join(filepath.Dir(sourcePath), newName) + if same, err := samePath(sourcePath, targetPath); err != nil { + return "", err + } else if same { + return "", fmt.Errorf("source and target are the same: %s", targetPath) + } + + if exists, err := PathExists(targetPath); err != nil { + return "", err + } else if exists { + return "", ErrOverwrite(targetPath) + } + + if err := os.Rename(sourcePath, targetPath); err != nil { + return "", err + } + return targetPath, nil +} + +func copyDir(srcDir string, dstDir string, tracker *copyProgressState) error { + if tracker != nil && tracker.ctx != nil { + if err := tracker.ctx.Err(); err != nil { + return err + } + } + info, err := os.Lstat(srcDir) + if err != nil { + return err + } + if err := os.MkdirAll(dstDir, info.Mode().Perm()); err != nil { + return err + } + + entries, err := os.ReadDir(srcDir) + if err != nil { + return err + } + + // Count files in this directory so progress total converges + if tracker != nil && tracker.discover { + fileCount := 0 + for _, entry := range entries { + if !entry.IsDir() { + fileCount++ + } + } + tracker.discoverFiles(fileCount, srcDir) + } + + for _, entry := range entries { + if tracker != nil && tracker.ctx != nil { + if err := tracker.ctx.Err(); err != nil { + return err + } + } + srcPath := filepath.Join(srcDir, entry.Name()) + dstPath := filepath.Join(dstDir, entry.Name()) + + info, err := os.Lstat(srcPath) + if err != nil { + return err + } + + switch { + case info.Mode()&os.ModeSymlink != 0: + target, err := os.Readlink(srcPath) + if err != nil { + return err + } + if err := os.Symlink(target, dstPath); err != nil { + return err + } + if tracker != nil { + tracker.finishFile(srcPath) + } + case info.IsDir(): + if err := copyDir(srcPath, dstPath, tracker); err != nil { + return err + } + default: + if err := copyFile(srcPath, dstPath, info.Mode(), tracker); err != nil { + return err + } + } + } + + if tracker != nil && tracker.ctx != nil { + if err := tracker.ctx.Err(); err != nil { + return err + } + } + + return nil +} + +func copyFile(srcPath string, dstPath string, mode os.FileMode, tracker *copyProgressState) error { + if tracker != nil && tracker.ctx != nil { + if err := tracker.ctx.Err(); err != nil { + return err + } + } + srcFile, err := os.Open(srcPath) + if err != nil { + return err + } + defer srcFile.Close() + + dstFile, err := os.OpenFile(dstPath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, mode.Perm()) + if err != nil { + return err + } + defer dstFile.Close() + + writer := io.Writer(dstFile) + if tracker != nil { + writer = &progressWriter{base: dstFile, tracker: tracker, path: srcPath} + } + if _, err := io.Copy(writer, srcFile); err != nil { + _ = dstFile.Close() + _ = os.Remove(dstPath) + return err + } + if tracker != nil && tracker.ctx != nil { + if err := tracker.ctx.Err(); err != nil { + _ = dstFile.Close() + _ = os.Remove(dstPath) + return err + } + } + if tracker != nil { + tracker.finishFile(srcPath) + } + return nil +} + +type progressWriter struct { + base io.Writer + tracker *copyProgressState + path string +} + +func (w *progressWriter) Write(data []byte) (int, error) { + if w.tracker != nil && w.tracker.ctx != nil { + if err := w.tracker.ctx.Err(); err != nil { + return 0, err + } + } + n, err := w.base.Write(data) + if n > 0 { + w.tracker.addBytes(int64(n), w.path) + } + return n, err +} + +func (s *copyProgressState) addBytes(delta int64, currentPath string) { + s.bytesDone += delta + s.emit(currentPath, false) +} + +func (s *copyProgressState) finishFile(currentPath string) { + s.filesDone++ + s.emit(currentPath, true) +} + +func (s *copyProgressState) emit(currentPath string, force bool) { + if s.callback == nil { + return + } + if !force && time.Since(s.lastEmit) < 75*time.Millisecond { + return + } + s.lastEmit = time.Now() + stage := s.stage + if stage == "" { + stage = "Transferring data" + } + s.callback(CopyProgress{ + FilesDone: s.filesDone, + FilesTotal: s.stats.FilesTotal, + BytesDone: s.bytesDone, + BytesTotal: s.stats.BytesTotal, + CurrentPath: currentPath, + Stage: stage, + }) +} + +func samePath(left string, right string) (bool, error) { + leftAbs, err := filepath.Abs(left) + if err != nil { + return false, err + } + rightAbs, err := filepath.Abs(right) + if err != nil { + return false, err + } + return leftAbs == rightAbs, nil +} diff --git a/src/vcom-0.2.5/internal/fs/ops_test.go b/src/vcom-0.2.5/internal/fs/ops_test.go new file mode 100644 index 0000000..f91bfdf --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/ops_test.go @@ -0,0 +1,135 @@ +package vfs + +import ( + "context" + "errors" + "os" + "path/filepath" + "strconv" + "testing" +) + +func TestCopyPathWithProgressContextRemovesPartialTargetOnCancel(t *testing.T) { + t.Parallel() + + root := t.TempDir() + srcDir := filepath.Join(root, "src") + dstDir := filepath.Join(root, "dst") + if err := os.MkdirAll(srcDir, 0o755); err != nil { + t.Fatalf("mkdir src: %v", err) + } + if err := os.MkdirAll(dstDir, 0o755); err != nil { + t.Fatalf("mkdir dst: %v", err) + } + + for idx := 0; idx < 64; idx++ { + path := filepath.Join(srcDir, "file-"+strconv.Itoa(idx)+".txt") + if err := os.WriteFile(path, []byte("payload-"+strconv.Itoa(idx)), 0o644); err != nil { + t.Fatalf("write source file %d: %v", idx, err) + } + } + + stats, err := CopyStats(srcDir) + if err != nil { + t.Fatalf("copy stats: %v", err) + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + _, err = CopyPathWithProgressContext(ctx, srcDir, dstDir, false, stats, func(progress CopyProgress) { + if progress.FilesDone >= 1 { + cancel() + } + }) + if !errors.Is(err, context.Canceled) { + t.Fatalf("expected context cancellation, got %v", err) + } + + targetPath := filepath.Join(dstDir, filepath.Base(srcDir)) + if _, statErr := os.Stat(targetPath); !errors.Is(statErr, os.ErrNotExist) { + t.Fatalf("expected partial target to be removed, stat err=%v", statErr) + } +} + +func TestMovePathWithProgressContextCancelledBeforeStartKeepsSource(t *testing.T) { + t.Parallel() + + root := t.TempDir() + srcFile := filepath.Join(root, "source.txt") + dstDir := filepath.Join(root, "dst") + if err := os.WriteFile(srcFile, []byte("payload"), 0o644); err != nil { + t.Fatalf("write source: %v", err) + } + if err := os.MkdirAll(dstDir, 0o755); err != nil { + t.Fatalf("mkdir dst: %v", err) + } + + stats, err := CopyStats(srcFile) + if err != nil { + t.Fatalf("copy stats: %v", err) + } + + ctx, cancel := context.WithCancel(context.Background()) + cancel() + + _, err = MovePathWithProgressContext(ctx, srcFile, dstDir, false, stats, nil) + if !errors.Is(err, context.Canceled) { + t.Fatalf("expected context cancellation, got %v", err) + } + + if _, statErr := os.Stat(srcFile); statErr != nil { + t.Fatalf("expected source to remain in place, stat err=%v", statErr) + } + targetPath := filepath.Join(dstDir, filepath.Base(srcFile)) + if _, statErr := os.Stat(targetPath); !errors.Is(statErr, os.ErrNotExist) { + t.Fatalf("expected destination file to be absent, stat err=%v", statErr) + } +} + +func TestRenamePath(t *testing.T) { + t.Parallel() + + root := t.TempDir() + source := filepath.Join(root, "old.txt") + if err := os.WriteFile(source, []byte("payload"), 0o644); err != nil { + t.Fatalf("write source: %v", err) + } + + target, err := RenamePath(source, "new.txt") + if err != nil { + t.Fatalf("rename: %v", err) + } + + if filepath.Base(target) != "new.txt" { + t.Fatalf("unexpected target path: %s", target) + } + if _, statErr := os.Stat(target); statErr != nil { + t.Fatalf("expected renamed file to exist, stat err=%v", statErr) + } + if _, statErr := os.Stat(source); !errors.Is(statErr, os.ErrNotExist) { + t.Fatalf("expected source to be absent, stat err=%v", statErr) + } +} + +func TestRenamePathRejectsExistingTarget(t *testing.T) { + t.Parallel() + + root := t.TempDir() + source := filepath.Join(root, "old.txt") + target := filepath.Join(root, "new.txt") + if err := os.WriteFile(source, []byte("payload"), 0o644); err != nil { + t.Fatalf("write source: %v", err) + } + if err := os.WriteFile(target, []byte("payload"), 0o644); err != nil { + t.Fatalf("write target: %v", err) + } + + _, err := RenamePath(source, "new.txt") + if err == nil { + t.Fatalf("expected overwrite error, got nil") + } + if got, want := err.Error(), ErrOverwrite(target).Error(); got != want { + t.Fatalf("expected overwrite error %q, got %q", want, got) + } +} diff --git a/src/vcom-0.2.5/internal/fs/preview.go b/src/vcom-0.2.5/internal/fs/preview.go new file mode 100644 index 0000000..f82a94e --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/preview.go @@ -0,0 +1,693 @@ +package vfs + +import ( + "bytes" + "encoding/json" + "fmt" + "image" + _ "image/gif" + _ "image/jpeg" + _ "image/png" + "io" + "os" + "os/exec" + "path/filepath" + "regexp" + "strconv" + "strings" + + "github.com/alecthomas/chroma/v2" + "github.com/alecthomas/chroma/v2/formatters" + "github.com/alecthomas/chroma/v2/lexers" + "github.com/alecthomas/chroma/v2/styles" +) + +var sgrRegexp = regexp.MustCompile(`\x1b\[([0-9;:]*)m`) +var sgrNumberRegexp = regexp.MustCompile(`\d+`) + +type PreviewKind string + +const ( + PreviewKindEmpty PreviewKind = "empty" + PreviewKindDirectory PreviewKind = "directory" + PreviewKindText PreviewKind = "text" + PreviewKindImage PreviewKind = "image" + PreviewKindPDF PreviewKind = "pdf" + PreviewKindAudio PreviewKind = "audio" + PreviewKindVideo PreviewKind = "video" + PreviewKindBinary PreviewKind = "binary" + PreviewKindError PreviewKind = "error" +) + +type Metadata struct { + Path string + Kind string + Size int64 + SizeKnown bool + ModifiedAt string + CreatedAt string + Permissions string + ImageFormat string + ImageSize string + Extension string + + // Extended preview metadata + Duration string + Bitrate string + AudioCodec string + VideoCodec string + SampleRate string + Channels string + PageCount string + Dimensions string +} + +type Preview struct { + Kind PreviewKind + Title string + Body string + PlainBody string + Metadata Metadata + Entries []Entry +} + +type PreviewOptions struct { + ShowHidden bool + DirsFirst bool + SortBy string + SortReverse bool + MaxPreviewBytes int64 + DirectoryPreviewLimit int + HumanReadableSize bool + ThemeName string + UseNerdIcons bool + ImagePreviewWidth int + ImagePreviewHeight int +} + +func BuildPreview(entry Entry, options PreviewOptions) Preview { + preview := Preview{ + Kind: PreviewKindEmpty, + Title: entry.DisplayName(), + Metadata: Metadata{ + Path: entry.Path, + Kind: kindLabel(entry), + Permissions: Permissions(entry.Mode), + ModifiedAt: ShortTime(entry.ModifiedAt), + CreatedAt: "n/a", + Extension: entry.Extension, + }, + } + + if entry.CreatedKnown { + preview.Metadata.CreatedAt = ShortTime(entry.CreatedAt) + } + + if entry.IsDir { + preview.Kind = PreviewKindDirectory + preview.Metadata.Size = entry.Size + preview.Metadata.SizeKnown = entry.DirSizeKnown + preview.Body, preview.Entries = buildDirectoryPreview(entry.Path, options) + preview.PlainBody = preview.Body + return preview + } + + preview.Metadata.Size = entry.Size + preview.Metadata.SizeKnown = true + + file, err := os.Open(entry.Path) + if err != nil { + preview.Kind = PreviewKindError + preview.Body = fmt.Sprintf("Could not open file:\n\n%s", err) + preview.PlainBody = preview.Body + return preview + } + defer file.Close() + + buffer := new(bytes.Buffer) + if _, err := io.CopyN(buffer, file, options.MaxPreviewBytes); err != nil && err != io.EOF { + preview.Kind = PreviewKindError + preview.Body = fmt.Sprintf("Could not read preview:\n\n%s", err) + preview.PlainBody = preview.Body + return preview + } + + data := buffer.Bytes() + if format, dimensions, ok := DetectImage(data); ok { + preview.Kind = PreviewKindImage + preview.Metadata.ImageFormat = format + preview.Metadata.ImageSize = dimensions + inline := renderImageInlinePreview(entry.Path, options.ImagePreviewWidth, options.ImagePreviewHeight) + if inline != "" { + preview.Body = inline + } + preview.PlainBody = preview.Body + return preview + } + + // Extended preview for PDF, audio, video via external utilities + if hasExt(pdfExtensions, entry.Extension) { + return buildPDFPreview(entry, options, preview) + } + if hasExt(audioExtensions, entry.Extension) { + return buildAudioPreview(entry, options, preview) + } + if hasExt(videoExtensions, entry.Extension) { + return buildVideoPreview(entry, options, preview) + } + + if IsBinarySample(data) { + preview.Kind = PreviewKindBinary + preview.Body = "Binary file detected.\n\nSafe inline preview is disabled for this file type." + preview.PlainBody = preview.Body + return preview + } + + preview.Kind = PreviewKindText + preview.PlainBody = strings.ReplaceAll(string(data), "\t", " ") + preview.Body = highlightText(entry.Path, preview.PlainBody, options.ThemeName) + return preview +} + +func highlightText(path string, source string, themeName string) string { + lexer := lexers.Match(path) + if lexer == nil { + lexer = lexers.Analyse(source) + } + if lexer == nil { + return source + } + + iterator, err := chroma.Coalesce(lexer).Tokenise(nil, source) + if err != nil { + return source + } + + style := styles.Get(chromaStyleName(themeName)) + if style == nil { + return source + } + style = styleWithoutBackground(style) + if style == nil { + return source + } + + var output bytes.Buffer + if err := formatters.TTY16m.Format(&output, style, iterator); err != nil { + return source + } + return stripBackgroundSGR(output.String()) +} + +func styleWithoutBackground(base *chroma.Style) *chroma.Style { + if base == nil { + return nil + } + builder := base.Builder().Transform(func(entry chroma.StyleEntry) chroma.StyleEntry { + entry.Background = 0 + return entry + }) + stripped, err := builder.Build() + if err != nil { + return base + } + return stripped +} + +func stripBackgroundSGR(text string) string { + return sgrRegexp.ReplaceAllStringFunc(text, func(seq string) string { + matches := sgrRegexp.FindStringSubmatch(seq) + if len(matches) != 2 { + return seq + } + filtered := filterSGRParams(matches[1]) + if filtered == "" { + return "" + } + return "\x1b[" + filtered + "m" + }) +} + +func filterSGRParams(paramString string) string { + if paramString == "" { + return "" + } + + raw := sgrNumberRegexp.FindAllString(paramString, -1) + if len(raw) == 0 { + return "" + } + codes := make([]int, 0, len(raw)) + for _, token := range raw { + value, err := strconv.Atoi(token) + if err != nil { + continue + } + codes = append(codes, value) + } + + kept := make([]string, 0, len(codes)) + for i := 0; i < len(codes); i++ { + code := codes[i] + + if code == 0 { + // Do not hard-reset background to terminal default. + // Reset common text attributes + foreground only. + kept = append(kept, "39", "22", "23", "24", "59") + continue + } + + if code == 49 || code == 7 || code == 27 || (code >= 40 && code <= 47) || (code >= 100 && code <= 107) { + continue + } + + switch code { + case 48: + // Background color payloads: + // 48;5;n or 48;2;r;g;b (also appears in ':' form; parsed as the same int stream). + if i+1 < len(codes) { + mode := codes[i+1] + switch mode { + case 5: + i += 2 + case 2: + i += 4 + default: + i++ + } + } + continue + case 38, 58: + // Preserve foreground (38) and underline color (58) payloads. + kept = append(kept, strconv.Itoa(code)) + if i+1 < len(codes) { + mode := codes[i+1] + kept = append(kept, strconv.Itoa(mode)) + switch mode { + case 5: + if i+2 < len(codes) { + kept = append(kept, strconv.Itoa(codes[i+2])) + } + i += 2 + case 2: + if i+4 < len(codes) { + kept = append(kept, + strconv.Itoa(codes[i+2]), + strconv.Itoa(codes[i+3]), + strconv.Itoa(codes[i+4]), + ) + } + i += 4 + default: + i++ + } + } + continue + } + + kept = append(kept, strconv.Itoa(code)) + } + + return strings.Join(kept, ";") +} + +func chromaStyleName(themeName string) string { + switch strings.ToLower(strings.TrimSpace(themeName)) { + case "catppuccin-mocha", "catppuccin-lavender": + return "catppuccin-mocha" + case "tokyo-night": + return "tokyonight-night" + case "gruvbox-dark", "gruvbox": + return "gruvbox" + case "nord-frost", "nord": + return "nord" + case "dracula": + return "dracula" + case "rose-pine": + return "rose-pine" + case "solarized-dark": + return "solarized-dark" + default: + return "catppuccin-mocha" + } +} + +func buildDirectoryPreview(path string, options PreviewOptions) (string, []Entry) { + entries, err := ListDir(path, ListOptions{ + ShowHidden: options.ShowHidden, + DirsFirst: options.DirsFirst, + SortBy: options.SortBy, + SortReverse: options.SortReverse, + }) + if err != nil { + return fmt.Sprintf("Could not list directory:\n\n%s", err), nil + } + if len(entries) == 0 { + return "Directory is empty.", nil + } + + // Return all entries as-is for column-based rendering. + // The text body is still generated for terminals that don't support + // the rich rendering, and as a fallback. + var lines []string + for _, entry := range entries { + if entry.IsParent { + continue + } + icon := previewIcon(entry, options.UseNerdIcons) + + size := "" + if !entry.IsDir { + if options.HumanReadableSize { + size = HumanSize(entry.Size) + } else { + size = fmt.Sprintf("%d", entry.Size) + } + } + + lines = append(lines, fmt.Sprintf("%s %-36s %12s %s", icon, entry.DisplayName(), size, ShortTime(entry.ModifiedAt))) + if len(lines) >= options.DirectoryPreviewLimit { + lines = append(lines, "…") + break + } + } + + return strings.Join(lines, "\n"), entries +} + +func previewIcon(entry Entry, useNerdIcons bool) string { + if !useNerdIcons { + switch entry.Category() { + case "directory": + return "[D]" + case "config": + return "[C]" + case "text": + return "[T]" + case "image": + return "[I]" + case "executable": + return "[X]" + case "archive": + return "[A]" + default: + return "[F]" + } + } + + switch entry.Category() { + case "directory": + return "" + case "config": + return "" + case "text": + return "󰈙" + case "image": + return "󰋩" + case "executable": + return "󰆍" + case "archive": + return "" + default: + return "󰈔" + } +} + +func renderImageInlinePreview(path string, width int, height int) string { + return "" +} + +func findTool(name string) string { + path, err := exec.LookPath(name) + if err != nil { + return "" + } + return path +} + +func buildPDFPreview(entry Entry, options PreviewOptions, base Preview) Preview { + pdftotext := findTool("pdftotext") + if pdftotext == "" { + base.Kind = PreviewKindBinary + base.Body = "PDF file detected.\nInstall poppler-utils (pdftotext) for text preview." + base.PlainBody = base.Body + return base + } + + cmd := exec.Command(pdftotext, "-layout", "-nopgbrk", entry.Path, "-") + out, err := cmd.Output() + if err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("pdftotext error:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + text := string(out) + if int64(len(text)) > options.MaxPreviewBytes { + text = text[:options.MaxPreviewBytes] + } + + // Get page count via pdfinfo if available + pdfinfo := findTool("pdfinfo") + if pdfinfo != "" { + infoCmd := exec.Command(pdfinfo, entry.Path) + if infoOut, err := infoCmd.Output(); err == nil { + for _, line := range strings.Split(string(infoOut), "\n") { + if strings.HasPrefix(strings.ToLower(line), "pages:") { + base.Metadata.PageCount = strings.TrimSpace(strings.TrimPrefix(line[5:], ":")) + break + } + } + } + } + + base.Kind = PreviewKindPDF + base.PlainBody = text + base.Body = highlightText(entry.Path, text, options.ThemeName) + return base +} + +func buildAudioPreview(entry Entry, options PreviewOptions, base Preview) Preview { + ffprobe := findTool("ffprobe") + if ffprobe == "" { + base.Kind = PreviewKindBinary + base.Body = "Audio file detected.\nInstall ffmpeg (ffprobe) for metadata preview." + base.PlainBody = base.Body + return base + } + + cmd := exec.Command(ffprobe, + "-v", "quiet", + "-print_format", "json", + "-show_format", + "-show_streams", + entry.Path, + ) + out, err := cmd.Output() + if err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("ffprobe error:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + var info struct { + Format struct { + Duration string `json:"duration"` + Bitrate string `json:"bit_rate"` + } `json:"format"` + Streams []struct { + CodecType string `json:"codec_type"` + CodecName string `json:"codec_name"` + SampleRate string `json:"sample_rate"` + Channels int `json:"channels"` + } `json:"streams"` + } + if err := json.Unmarshal(out, &info); err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("Could not parse ffprobe output:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + // Format duration + if info.Format.Duration != "" { + if secs, err := strconv.ParseFloat(info.Format.Duration, 64); err == nil { + mins := int(secs) / 60 + secsRem := int(secs) % 60 + base.Metadata.Duration = fmt.Sprintf("%d:%02d", mins, secsRem) + } + } + + if info.Format.Bitrate != "" { + if bps, err := strconv.ParseInt(info.Format.Bitrate, 10, 64); err == nil { + base.Metadata.Bitrate = fmt.Sprintf("%d kbps", bps/1000) + } + } + + for _, stream := range info.Streams { + if stream.CodecType == "audio" { + base.Metadata.AudioCodec = stream.CodecName + if stream.SampleRate != "" { + base.Metadata.SampleRate = stream.SampleRate + " Hz" + } + switch stream.Channels { + case 1: + base.Metadata.Channels = "mono" + case 2: + base.Metadata.Channels = "stereo" + case 6: + base.Metadata.Channels = "5.1" + case 8: + base.Metadata.Channels = "7.1" + default: + base.Metadata.Channels = fmt.Sprintf("%d ch", stream.Channels) + } + break + } + } + + var lines []string + lines = append(lines, fmt.Sprintf(" Duration: %s", base.Metadata.Duration)) + if base.Metadata.Bitrate != "" { + lines = append(lines, fmt.Sprintf(" Bitrate: %s", base.Metadata.Bitrate)) + } + if base.Metadata.AudioCodec != "" { + lines = append(lines, fmt.Sprintf(" Codec: %s", base.Metadata.AudioCodec)) + } + if base.Metadata.SampleRate != "" { + lines = append(lines, fmt.Sprintf(" Rate: %s", base.Metadata.SampleRate)) + } + if base.Metadata.Channels != "" { + lines = append(lines, fmt.Sprintf(" Channels: %s", base.Metadata.Channels)) + } + + base.Kind = PreviewKindAudio + base.Body = fmt.Sprintf("🎵 Audio File\n\n%s", strings.Join(lines, "\n")) + base.PlainBody = fmt.Sprintf("Audio File\n\nDuration: %s\nBitrate: %s\nCodec: %s\nRate: %s\nChannels: %s", + base.Metadata.Duration, base.Metadata.Bitrate, base.Metadata.AudioCodec, + base.Metadata.SampleRate, base.Metadata.Channels) + return base +} + +func buildVideoPreview(entry Entry, options PreviewOptions, base Preview) Preview { + ffprobe := findTool("ffprobe") + if ffprobe == "" { + base.Kind = PreviewKindBinary + base.Body = "Video file detected.\nInstall ffmpeg (ffprobe) for metadata preview." + base.PlainBody = base.Body + return base + } + + cmd := exec.Command(ffprobe, + "-v", "quiet", + "-print_format", "json", + "-show_format", + "-show_streams", + entry.Path, + ) + out, err := cmd.Output() + if err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("ffprobe error:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + var info struct { + Format struct { + Duration string `json:"duration"` + Bitrate string `json:"bit_rate"` + } `json:"format"` + Streams []struct { + CodecType string `json:"codec_type"` + CodecName string `json:"codec_name"` + Width int `json:"width"` + Height int `json:"height"` + } `json:"streams"` + } + if err := json.Unmarshal(out, &info); err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("Could not parse ffprobe output:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + // Format duration + if info.Format.Duration != "" { + if secs, err := strconv.ParseFloat(info.Format.Duration, 64); err == nil { + hrs := int(secs) / 3600 + mins := (int(secs) % 3600) / 60 + secsRem := int(secs) % 60 + if hrs > 0 { + base.Metadata.Duration = fmt.Sprintf("%d:%02d:%02d", hrs, mins, secsRem) + } else { + base.Metadata.Duration = fmt.Sprintf("%d:%02d", mins, secsRem) + } + } + } + + if info.Format.Bitrate != "" { + if bps, err := strconv.ParseInt(info.Format.Bitrate, 10, 64); err == nil { + base.Metadata.Bitrate = fmt.Sprintf("%d kbps", bps/1000) + } + } + + for _, stream := range info.Streams { + switch stream.CodecType { + case "video": + base.Metadata.VideoCodec = stream.CodecName + if stream.Width > 0 && stream.Height > 0 { + base.Metadata.Dimensions = fmt.Sprintf("%dx%d", stream.Width, stream.Height) + } + case "audio": + if base.Metadata.AudioCodec == "" { + base.Metadata.AudioCodec = stream.CodecName + } + } + } + + var lines []string + lines = append(lines, fmt.Sprintf(" Duration: %s", base.Metadata.Duration)) + if base.Metadata.Bitrate != "" { + lines = append(lines, fmt.Sprintf(" Bitrate: %s", base.Metadata.Bitrate)) + } + if base.Metadata.VideoCodec != "" { + lines = append(lines, fmt.Sprintf(" Video: %s", base.Metadata.VideoCodec)) + } + if base.Metadata.Dimensions != "" { + lines = append(lines, fmt.Sprintf(" Resolution: %s", base.Metadata.Dimensions)) + } + if base.Metadata.AudioCodec != "" { + lines = append(lines, fmt.Sprintf(" Audio: %s", base.Metadata.AudioCodec)) + } + + base.Kind = PreviewKindVideo + base.Body = fmt.Sprintf("🎬 Video File\n\n%s", strings.Join(lines, "\n")) + base.PlainBody = fmt.Sprintf("Video File\n\nDuration: %s\nBitrate: %s\nVideo: %s\nResolution: %s\nAudio: %s", + base.Metadata.Duration, base.Metadata.Bitrate, base.Metadata.VideoCodec, + base.Metadata.Dimensions, base.Metadata.AudioCodec) + return base +} + +func DetectImage(data []byte) (string, string, bool) { + cfg, format, err := image.DecodeConfig(bytes.NewReader(data)) + if err != nil { + return "", "", false + } + return format, fmt.Sprintf("%dx%d", cfg.Width, cfg.Height), true +} + +func kindLabel(entry Entry) string { + switch { + case entry.IsParent: + return "parent" + case entry.IsDir: + return "directory" + case entry.Extension != "": + return "file" + default: + return strings.TrimPrefix(filepath.Ext(entry.Name), ".") + } +} diff --git a/src/vcom-0.2.5/internal/fs/remote/client.go b/src/vcom-0.2.5/internal/fs/remote/client.go new file mode 100644 index 0000000..0d96878 --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/remote/client.go @@ -0,0 +1,751 @@ +package remote + +import ( + "bufio" + "context" + "fmt" + "io" + "net" + "os" + "path" + "path/filepath" + "strings" + "sync" + "time" + + "github.com/pkg/sftp" + "golang.org/x/crypto/ssh" +) + +// SSHClient wraps an SSH connection and SFTP client for remote filesystem access. +type SSHClient struct { + // Host is the SSH host configuration used to establish the connection. + Host SSHHost + + sshConn *ssh.Client + sftpCli *sftp.Client + + keepaliveStop chan struct{} + keepaliveWg sync.WaitGroup +} + +// Connect establishes an SSH connection to the remote host and opens an SFTP session. +// It uses key-based authentication if IdentityFile is set, otherwise falls back to password auth. +func Connect(host SSHHost) (*SSHClient, error) { + authMethods, err := authMethodsForHost(host) + if err != nil { + return nil, fmt.Errorf("ssh auth: %w", err) + } + + user := host.User + if user == "" { + user = os.Getenv("USER") + } + + config := &ssh.ClientConfig{ + User: user, + Auth: authMethods, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), // TODO: support known_hosts verification + Timeout: 15 * time.Second, + } + + addr := host.Addr() + sshConn, err := ssh.Dial("tcp", addr, config) + if err != nil { + return nil, fmt.Errorf("ssh dial %s: %w", addr, err) + } + + sftpCli, err := sftp.NewClient(sshConn) + if err != nil { + sshConn.Close() + return nil, fmt.Errorf("sftp client: %w", err) + } + + client := &SSHClient{ + Host: host, + sshConn: sshConn, + sftpCli: sftpCli, + keepaliveStop: make(chan struct{}), + } + + // Start keepalive goroutine — sends keepalive@openssh.com every 30s + // to prevent the SSH server from dropping the connection during inactivity. + client.keepaliveWg.Add(1) + go func() { + defer client.keepaliveWg.Done() + ticker := time.NewTicker(30 * time.Second) + defer ticker.Stop() + for { + select { + case <-ticker.C: + _, _, err := sshConn.SendRequest("keepalive@openssh.com", true, nil) + if err != nil { + return + } + case <-client.keepaliveStop: + return + } + } + }() + + return client, nil +} + +// authMethodsForHost returns the appropriate SSH auth methods for the given host. +// For SSH config hosts with IdentityFile, it uses public key authentication. +// For custom hosts with a password, it uses password authentication. +func authMethodsForHost(host SSHHost) ([]ssh.AuthMethod, error) { + var methods []ssh.AuthMethod + + // Try key-based auth if identity file is specified + if host.IdentityFile != "" { + key, err := os.ReadFile(host.IdentityFile) + if err == nil { + signer, err := ssh.ParsePrivateKey(key) + if err == nil { + methods = append(methods, ssh.PublicKeys(signer)) + } else { + // If the key is encrypted, try with empty passphrase or common ones + // For simplicity, we try without passphrase first + // In a real implementation, we might prompt for a passphrase + } + } + } + + // Try password auth if password is set + if host.Password != "" { + methods = append(methods, ssh.Password(host.Password)) + } + + // Always include keyboard-interactive as a fallback (it wraps password) + if host.Password != "" { + methods = append(methods, ssh.KeyboardInteractive( + func(user, instruction string, questions []string, echos []bool) ([]string, error) { + answers := make([]string, len(questions)) + for i := range questions { + answers[i] = host.Password + } + return answers, nil + }, + )) + } + + // Always try default SSH agent and default keys as a last resort + // This covers the case where the user has an SSH agent running with loaded keys + // but no IdentityFile is specified in the config. + if host.IdentityFile == "" && host.Password == "" { + // Add default key paths + home, err := os.UserHomeDir() + if err == nil { + defaultKeys := []string{ + home + "/.ssh/id_rsa", + home + "/.ssh/id_ed25519", + home + "/.ssh/id_ecdsa", + home + "/.ssh/id_ecdsa_sk", + home + "/.ssh/id_ed25519_sk", + home + "/.ssh/identity", + } + for _, keyPath := range defaultKeys { + if key, err := os.ReadFile(keyPath); err == nil { + if signer, err := ssh.ParsePrivateKey(key); err == nil { + methods = append(methods, ssh.PublicKeys(signer)) + } + } + } + } + } + + if len(methods) == 0 { + return nil, fmt.Errorf("no authentication methods available for host %q", host.Name) + } + + return methods, nil +} + +// ReadDir reads the contents of a remote directory and returns os.FileInfo entries. +func (c *SSHClient) ReadDir(dirPath string) ([]os.FileInfo, error) { + if c.sftpCli == nil { + return nil, fmt.Errorf("not connected") + } + return c.sftpCli.ReadDir(dirPath) +} + +// Lstat returns file information without following symlinks. +func (c *SSHClient) Lstat(path string) (os.FileInfo, error) { + if c.sftpCli == nil { + return nil, fmt.Errorf("not connected") + } + return c.sftpCli.Lstat(path) +} + +// Stat returns file information following symlinks. +func (c *SSHClient) Stat(path string) (os.FileInfo, error) { + if c.sftpCli == nil { + return nil, fmt.Errorf("not connected") + } + return c.sftpCli.Stat(path) +} + +// ReadLink reads the target of a symbolic link. +func (c *SSHClient) ReadLink(linkPath string) (string, error) { + if c.sftpCli == nil { + return "", fmt.Errorf("not connected") + } + return c.sftpCli.ReadLink(linkPath) +} + +// RealPath resolves a path to its absolute form on the remote server. +func (c *SSHClient) RealPath(p string) (string, error) { + if c.sftpCli == nil { + return "", fmt.Errorf("not connected") + } + return c.sftpCli.RealPath(p) +} + +// ReadFile opens a remote file for reading. +func (c *SSHClient) ReadFile(filePath string) (io.ReadCloser, error) { + if c.sftpCli == nil { + return nil, fmt.Errorf("not connected") + } + return c.sftpCli.Open(filePath) +} + +// CreateFile opens a remote file for writing, creating it if it doesn't exist. +func (c *SSHClient) CreateFile(filePath string) (io.WriteCloser, error) { + if c.sftpCli == nil { + return nil, fmt.Errorf("not connected") + } + return c.sftpCli.Create(filePath) +} + +// MkdirAll creates a remote directory and any necessary parents. +// If the directory already exists, it returns nil (no error). +func (c *SSHClient) MkdirAll(dirPath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + // sftp doesn't have MkdirAll, so we implement it manually + // First check if the path already exists + _, err := c.sftpCli.Stat(dirPath) + if err == nil { + return nil // already exists + } + if !os.IsNotExist(err) { + return err + } + // Ensure parent exists first + parent := path.Dir(dirPath) + if parent != dirPath && parent != "." { + if err := c.MkdirAll(parent); err != nil { + return err + } + } + return c.sftpCli.Mkdir(dirPath) +} + +// Mkdir creates a single remote directory. +func (c *SSHClient) Mkdir(dirPath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + return c.sftpCli.Mkdir(dirPath) +} + +// Remove deletes a remote file. +func (c *SSHClient) Remove(filePath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + return c.sftpCli.Remove(filePath) +} + +// RemoveDirectory removes a remote directory (must be empty). +func (c *SSHClient) RemoveDirectory(dirPath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + return c.sftpCli.RemoveDirectory(dirPath) +} + +// Rename moves/renames a remote file or directory. +func (c *SSHClient) Rename(oldPath, newPath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + return c.sftpCli.Rename(oldPath, newPath) +} + +// Close closes the SFTP session and SSH connection. +func (c *SSHClient) Close() error { + // Stop the keepalive goroutine first + if c.keepaliveStop != nil { + select { + case <-c.keepaliveStop: + // already closed + default: + close(c.keepaliveStop) + } + c.keepaliveWg.Wait() + } + + var firstErr error + + if c.sftpCli != nil { + if err := c.sftpCli.Close(); err != nil { + firstErr = err + } + c.sftpCli = nil + } + + if c.sshConn != nil { + if err := c.sshConn.Close(); err != nil && firstErr == nil { + firstErr = err + } + c.sshConn = nil + } + + return firstErr +} + +// IsConnected returns true if the client has an active connection. +func (c *SSHClient) IsConnected() bool { + return c.sftpCli != nil && c.sshConn != nil +} + +// Exec runs a shell command on the remote server and returns combined output. +func (c *SSHClient) Exec(cmd string) ([]byte, error) { + if c.sshConn == nil { + return nil, fmt.Errorf("not connected") + } + session, err := c.sshConn.NewSession() + if err != nil { + return nil, fmt.Errorf("open session: %w", err) + } + defer session.Close() + return session.CombinedOutput(cmd) +} + +// ExecWithProgress runs a shell command on the remote server and calls onLine +// for each line of stdout output. +func (c *SSHClient) ExecWithProgress(cmd string, onLine func(line string)) error { + if c.sshConn == nil { + return fmt.Errorf("not connected") + } + session, err := c.sshConn.NewSession() + if err != nil { + return fmt.Errorf("open session: %w", err) + } + defer session.Close() + + stdout, err := session.StdoutPipe() + if err != nil { + return fmt.Errorf("stdout pipe: %w", err) + } + + if err := session.Start(cmd); err != nil { + return fmt.Errorf("start command: %w", err) + } + + scanner := bufio.NewScanner(stdout) + for scanner.Scan() { + onLine(scanner.Text()) + } + + if scanErr := scanner.Err(); scanErr != nil { + return scanErr + } + + return session.Wait() +} + +// SameHostAs returns true if this client and other are connected to the same server. +func (c *SSHClient) SameHostAs(other *SSHClient) bool { + if c == nil || other == nil { + return false + } + return c.Host.SameAs(other.Host) +} + +// RemoveRecursive recursively deletes a remote file or directory. +// For directories, it walks and removes all children first. +func (c *SSHClient) RemoveRecursive(path string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + + info, err := c.sftpCli.Stat(path) + if err != nil { + return err + } + + if !info.IsDir() { + return c.sftpCli.Remove(path) + } + + // Walk directory and collect all paths (files first, then dirs) + var files []string + var dirs []string + err = c.Walk(path, func(walkPath string, info os.FileInfo, walkErr error) error { + if walkErr != nil { + return walkErr + } + if walkPath == path { + return nil // skip root + } + if info.IsDir() { + dirs = append(dirs, walkPath) + } else { + files = append(files, walkPath) + } + return nil + }) + if err != nil { + return err + } + + // Remove files first, then directories (reverse order for deepest first) + for _, f := range files { + if err := c.sftpCli.Remove(f); err != nil { + return err + } + } + for i := len(dirs) - 1; i >= 0; i-- { + if err := c.sftpCli.RemoveDirectory(dirs[i]); err != nil { + return err + } + } + + // Finally remove the root directory + return c.sftpCli.RemoveDirectory(path) +} + +// CopyFileToRemote copies a local file to a remote destination via SFTP. +// It creates parent directories as needed. +func (c *SSHClient) CopyFileToRemote(localPath, remotePath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + + localFile, err := os.Open(localPath) + if err != nil { + return fmt.Errorf("open local: %w", err) + } + defer localFile.Close() + + // Ensure parent directory exists + parent := path.Dir(remotePath) + if err := c.MkdirAll(parent); err != nil { + return fmt.Errorf("mkdir remote: %w", err) + } + + remoteFile, err := c.sftpCli.Create(remotePath) + if err != nil { + return fmt.Errorf("create remote: %w", err) + } + defer remoteFile.Close() + + _, err = io.Copy(remoteFile, localFile) + if err != nil { + return fmt.Errorf("copy to remote: %w", err) + } + + return nil +} + +// CopyFileFromRemote copies a remote file to a local destination via SFTP. +// It creates parent directories as needed. +func (c *SSHClient) CopyFileFromRemote(remotePath, localPath string) error { + if c.sftpCli == nil { + return fmt.Errorf("not connected") + } + + remoteFile, err := c.sftpCli.Open(remotePath) + if err != nil { + return fmt.Errorf("open remote: %w", err) + } + defer remoteFile.Close() + + // Ensure parent directory exists + parent := filepath.Dir(localPath) + if err := os.MkdirAll(parent, 0o755); err != nil { + return fmt.Errorf("mkdir local: %w", err) + } + + localFile, err := os.Create(localPath) + if err != nil { + return fmt.Errorf("create local: %w", err) + } + defer localFile.Close() + + _, err = io.Copy(localFile, remoteFile) + if err != nil { + return fmt.Errorf("copy from remote: %w", err) + } + + return nil +} + +// DownloadFile downloads a remote file to a local path via SFTP. +func (c *SSHClient) DownloadFile(remotePath, localPath string) error { + return c.CopyFileFromRemote(remotePath, localPath) +} + +// CopyDirToRemote recursively copies a local directory to a remote path. +func (c *SSHClient) CopyDirToRemote(localDir, remoteDir string) error { + return c.copyDirToRemote(localDir, remoteDir, nil, nil) +} + +// CopyDirToRemoteProgress is like CopyDirToRemote but calls onFile after each copy. +func (c *SSHClient) CopyDirToRemoteProgress(localDir, remoteDir string, onFile func(path string, done, total int), ctx context.Context) error { + return c.copyDirToRemote(localDir, remoteDir, onFile, ctx) +} + +func (c *SSHClient) copyDirToRemote(localDir, remoteDir string, onFile func(path string, done, total int), ctx context.Context) error { + done := 0 + return filepath.Walk(localDir, func(localPath string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if ctx != nil { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + } + relPath, _ := filepath.Rel(localDir, localPath) + remotePath := path.Join(remoteDir, relPath) + if info.IsDir() { + return c.MkdirAll(remotePath) + } + if err := c.CopyFileToRemote(localPath, remotePath); err != nil { + return err + } + done++ + if onFile != nil { + onFile(remotePath, done, 0) + } + return nil + }) +} + +// CopyDirFromRemote recursively copies a remote directory to a local path. +func (c *SSHClient) CopyDirFromRemote(remoteDir, localDir string) error { + return c.copyDirFromRemote(remoteDir, localDir, nil, nil) +} + +// CopyDirFromRemoteProgress is like CopyDirFromRemote but calls onFile after each copy. +func (c *SSHClient) CopyDirFromRemoteProgress(remoteDir, localDir string, onFile func(path string, done, total int), ctx context.Context) error { + return c.copyDirFromRemote(remoteDir, localDir, onFile, ctx) +} + +func (c *SSHClient) copyDirFromRemote(remoteDir, localDir string, onFile func(path string, done, total int), ctx context.Context) error { + done := 0 + return c.Walk(remoteDir, func(remotePath string, info os.FileInfo, err error) error { + if ctx != nil { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + } + if err != nil { + return err + } + relPath, _ := filepath.Rel(remoteDir, remotePath) + localPath := filepath.Join(localDir, relPath) + if info.IsDir() { + return os.MkdirAll(localPath, 0o755) + } + if err := c.CopyFileFromRemote(remotePath, localPath); err != nil { + return err + } + done++ + if onFile != nil { + onFile(localPath, done, 0) + } + return nil + }) +} + +// CopyFileBetweenRemotes copies a single file from one remote host to another +// by streaming the file contents through the local machine. Both SFTP connections +// must be active (connected). +func CopyFileBetweenRemotes(srcClient, dstClient *SSHClient, srcPath, dstPath string) error { + if srcClient.sftpCli == nil { + return fmt.Errorf("source client not connected") + } + if dstClient.sftpCli == nil { + return fmt.Errorf("destination client not connected") + } + + srcFile, err := srcClient.sftpCli.Open(srcPath) + if err != nil { + return fmt.Errorf("open remote source %s: %w", srcPath, err) + } + defer srcFile.Close() + + // Ensure parent directory exists on the destination + parent := path.Dir(dstPath) + if err := dstClient.MkdirAll(parent); err != nil { + return fmt.Errorf("mkdir remote dest %s: %w", parent, err) + } + + dstFile, err := dstClient.sftpCli.Create(dstPath) + if err != nil { + return fmt.Errorf("create remote dest %s: %w", dstPath, err) + } + defer dstFile.Close() + + _, err = io.Copy(dstFile, srcFile) + if err != nil { + return fmt.Errorf("copy remote to remote %s → %s: %w", srcPath, dstPath, err) + } + + return nil +} + +// CopyDirBetweenRemotes recursively copies a directory from one remote host to another. +func CopyDirBetweenRemotes(srcClient, dstClient *SSHClient, srcDir, dstDir string) error { + return copyDirBetweenRemotes(srcClient, dstClient, srcDir, dstDir, nil, nil) +} + +func copyDirBetweenRemotes(srcClient, dstClient *SSHClient, srcDir, dstDir string, onFile func(path string, done, total int), ctx context.Context) error { + done := 0 + return srcClient.Walk(srcDir, func(remotePath string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if ctx != nil { + select { + case <-ctx.Done(): + return ctx.Err() + default: + } + } + relPath, _ := filepath.Rel(srcDir, remotePath) + dstPath := path.Join(dstDir, relPath) + if info.IsDir() { + return dstClient.MkdirAll(dstPath) + } + if err := CopyFileBetweenRemotes(srcClient, dstClient, remotePath, dstPath); err != nil { + return err + } + done++ + if onFile != nil { + onFile(remotePath, done, 0) + } + return nil + }) +} + +// CopyDirBetweenRemotesProgress is like CopyDirBetweenRemotes with progress and context support. +func CopyDirBetweenRemotesProgress(srcClient, dstClient *SSHClient, srcDir, dstDir string, onFile func(path string, done, total int), ctx context.Context) error { + return copyDirBetweenRemotes(srcClient, dstClient, srcDir, dstDir, onFile, ctx) +} + +// Walk walks the remote filesystem tree rooted at root, calling walkFn for each file/dir. +// This is a simplified version of filepath.Walk for SFTP. +type walkFunc func(path string, info os.FileInfo, err error) error + +func (c *SSHClient) Walk(root string, walkFn walkFunc) error { + return c.walk(root, walkFn, nil) +} + +func (c *SSHClient) walk(dirPath string, walkFn walkFunc, info os.FileInfo) error { + if info == nil { + var err error + info, err = c.sftpCli.Stat(dirPath) + if err != nil { + return walkFn(dirPath, nil, err) + } + } + + err := walkFn(dirPath, info, nil) + if err != nil { + if err == filepathSkipDir { + return nil + } + return err + } + + if !info.IsDir() { + return nil + } + + entries, err := c.sftpCli.ReadDir(dirPath) + if err != nil { + return walkFn(dirPath, info, err) + } + + for _, entry := range entries { + childPath := path.Join(dirPath, entry.Name()) + if entry.IsDir() { + err = c.walk(childPath, walkFn, entry) + } else { + err = walkFn(childPath, entry, nil) + } + if err != nil { + return err + } + } + + return nil +} + +// filepathSkipDir is used as a return value from Walk to skip a directory. +var filepathSkipDir = fmt.Errorf("skip this directory") + +// DirectorySize recursively walks a remote directory and sums up file sizes. +func (c *SSHClient) DirectorySize(dirPath string) (int64, error) { + var total int64 + err := c.Walk(dirPath, func(_ string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if !info.IsDir() { + total += info.Size() + } + return nil + }) + if err != nil { + return 0, err + } + return total, nil +} + +// SftpToFileInfo converts an os.FileInfo to a vfs-compatible file info. +// This is used for consistent file information handling across local and remote. +func SftpToFileInfo(name string, info os.FileInfo) (os.FileInfo, error) { + return info, nil +} + +// WalkDirEntry wraps os.FileInfo with the file name for directory listings. +type WalkDirEntry struct { + os.FileInfo + entryName string +} + +func (e *WalkDirEntry) Name() string { + return e.entryName +} + +// NewWalkDirEntry creates a new WalkDirEntry with an overridden name. +func NewWalkDirEntry(info os.FileInfo, name string) *WalkDirEntry { + return &WalkDirEntry{FileInfo: info, entryName: name} +} + +// DialTimeout is the timeout for establishing SSH connections. +const DialTimeout = 15 * time.Second + +// DefaultPort is the default SSH port. +const DefaultPort = "22" + +// ResolveAddr returns the SSH address for the given host, applying the default port if needed. +func ResolveAddr(hostname, port string) string { + host := strings.TrimSpace(hostname) + if port == "" || port == "0" { + port = DefaultPort + } + return net.JoinHostPort(host, port) +} diff --git a/src/vcom-0.2.5/internal/fs/remote/config.go b/src/vcom-0.2.5/internal/fs/remote/config.go new file mode 100644 index 0000000..105e349 --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/remote/config.go @@ -0,0 +1,209 @@ +package remote + +import ( + "bufio" + "fmt" + "os" + "path/filepath" + "strings" +) + +// ParseSSHConfig parses ~/.ssh/config and returns a list of SSH hosts. +// It handles the most common SSH config directives: Host, HostName, Port, User, IdentityFile. +func ParseSSHConfig() []SSHHost { + home, err := os.UserHomeDir() + if err != nil { + return nil + } + + configPath := filepath.Join(home, ".ssh", "config") + return parseSSHConfigFile(configPath) +} + +func parseSSHConfigFile(path string) []SSHHost { + f, err := os.Open(path) + if err != nil { + return nil + } + defer f.Close() + + var hosts []SSHHost + var current *SSHHost + var currentNames []string + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + + // Skip empty lines and comments + if line == "" || strings.HasPrefix(line, "#") { + continue + } + + // Remove inline comments (everything after # that's not in quotes) + if idx := strings.Index(line, "#"); idx >= 0 { + line = strings.TrimSpace(line[:idx]) + if line == "" { + continue + } + } + + parts := strings.Fields(line) + if len(parts) < 2 { + continue + } + + keyword := strings.ToLower(parts[0]) + value := strings.Join(parts[1:], " ") + + switch keyword { + case "host": + // Save previous host block + if current != nil && len(currentNames) > 0 { + for _, name := range currentNames { + if !isWildcardPattern(name) { + host := *current + host.Name = name + hosts = append(hosts, host) + } + } + } + + // Start new host block + current = &SSHHost{ + Port: "22", + FromSSHConfig: true, + } + currentNames = strings.Fields(value) + + case "hostname": + if current != nil { + current.HostName = value + } + + case "port": + if current != nil { + current.Port = value + } + + case "user": + if current != nil { + current.User = value + } + + case "identityfile": + if current != nil { + // Handle ~ expansion and relative paths + resolved := resolveIdentityPath(value) + if resolved != "" { + current.IdentityFile = resolved + } + } + } + } + + // Save last host block + if current != nil && len(currentNames) > 0 { + for _, name := range currentNames { + if !isWildcardPattern(name) { + host := *current + host.Name = name + hosts = append(hosts, host) + } + } + } + + return hosts +} + +// isWildcardPattern returns true if the pattern contains wildcard characters. +func isWildcardPattern(pattern string) bool { + return strings.ContainsAny(pattern, "*?") +} + +// resolveIdentityPath resolves a path from SSH config (handles ~ and relative paths). +func resolveIdentityPath(path string) string { + if path == "" { + return "" + } + + // Handle ~/ or $HOME/ + if strings.HasPrefix(path, "~/") { + home, err := os.UserHomeDir() + if err != nil { + return path + } + path = filepath.Join(home, path[2:]) + } + + // Handle relative paths (relative to ~/.ssh/) + if !filepath.IsAbs(path) { + home, err := os.UserHomeDir() + if err != nil { + return path + } + path = filepath.Join(home, ".ssh", path) + } + + return filepath.Clean(path) +} + +// SSHConfigPath returns the path to the user's SSH config file. +func SSHConfigPath() string { + home, err := os.UserHomeDir() + if err != nil { + return "" + } + return filepath.Join(home, ".ssh", "config") +} + +// HostsFilePath returns the path to the custom hosts data file. +func HostsFilePath() string { + home, err := os.UserHomeDir() + if err != nil { + return "" + } + return filepath.Join(home, ".config", "vcom", "hosts.dat") +} + +// GetSSHDir returns the path to the .ssh directory. +func GetSSHDir() string { + home, err := os.UserHomeDir() + if err != nil { + return "" + } + return filepath.Join(home, ".ssh") +} + +// KnownHostsPath returns the path to known_hosts. +func KnownHostsPath() string { + home, err := os.UserHomeDir() + if err != nil { + return "" + } + return filepath.Join(home, ".ssh", "known_hosts") +} + +// ConfigFileExists checks if the SSH config file exists. +func ConfigFileExists() bool { + path := SSHConfigPath() + if path == "" { + return false + } + _, err := os.Stat(path) + return err == nil +} + +// ValidateHost checks if a host entry has the minimum required fields. +func ValidateHost(host SSHHost) error { + if strings.TrimSpace(host.Name) == "" { + return fmt.Errorf("host name is required") + } + if strings.TrimSpace(host.HostName) == "" { + return fmt.Errorf("hostname/address is required") + } + if strings.TrimSpace(host.User) == "" { + return fmt.Errorf("username is required") + } + return nil +} diff --git a/src/vcom-0.2.5/internal/fs/remote/host.go b/src/vcom-0.2.5/internal/fs/remote/host.go new file mode 100644 index 0000000..1b70d09 --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/remote/host.go @@ -0,0 +1,311 @@ +package remote + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "os" + "path/filepath" + "strings" +) + +// SSHHost represents a single SSH host configuration. +type SSHHost struct { + // Name is the host alias (e.g. "myserver"). + Name string `json:"name"` + // HostName is the actual hostname or IP address. + HostName string `json:"hostname"` + // Port is the SSH port (default 22). + Port string `json:"port,omitempty"` + // User is the SSH username. + User string `json:"user,omitempty"` + // IdentityFile is the path to the private key file (for key-based auth). + IdentityFile string `json:"identity_file,omitempty"` + // Password is stored encrypted (for password-based auth, user-added hosts). + Password string `json:"password,omitempty"` + // FromSSHConfig indicates this host came from ~/.ssh/config. + FromSSHConfig bool `json:"from_ssh_config"` +} + +// DisplayName returns the host display name. +func (h SSHHost) DisplayName() string { + addr := h.HostName + if h.Port != "" && h.Port != "22" { + addr = fmt.Sprintf("%s:%s", addr, h.Port) + } + if h.User != "" { + return fmt.Sprintf("%s (%s@%s)", h.Name, h.User, addr) + } + return fmt.Sprintf("%s (%s)", h.Name, addr) +} + +// Addr returns the SSH address string (host:port). +func (h SSHHost) Addr() string { + if h.Port == "" || h.Port == "22" { + return h.HostName + ":22" + } + return h.HostName + ":" + h.Port +} + +// SameAs returns true if two hosts point to the same server. +func (h SSHHost) SameAs(other SSHHost) bool { + return h.HostName == other.HostName && + (h.Port == other.Port || (h.Port == "" && other.Port == "22") || (h.Port == "22" && other.Port == "")) +} + +// HostStore manages SSH hosts from both ~/.ssh/config and user-added hosts. +type HostStore struct { + customHosts []SSHHost + configPath string + cipherKey []byte +} + +// NewHostStore creates a new HostStore. +func NewHostStore() (*HostStore, error) { + home, err := os.UserHomeDir() + if err != nil { + return nil, fmt.Errorf("home dir: %w", err) + } + + store := &HostStore{ + configPath: filepath.Join(home, ".config", "vcom", "hosts.dat"), + } + + // Load or create encryption key + keyPath := filepath.Join(home, ".config", "vcom", ".hosts-key") + store.cipherKey, err = loadOrCreateKey(keyPath) + if err != nil { + return nil, fmt.Errorf("encryption key: %w", err) + } + + // Load custom hosts + if err := store.load(); err != nil { + // Ignore load errors for missing file + if !os.IsNotExist(err) { + return nil, err + } + } + + return store, nil +} + +// loadOrCreateKey loads an existing AES key or creates a new one. +func loadOrCreateKey(path string) ([]byte, error) { + if data, err := os.ReadFile(path); err == nil { + key, err := base64.StdEncoding.DecodeString(strings.TrimSpace(string(data))) + if err != nil { + return nil, err + } + if len(key) == 32 { + return key, nil + } + } + + // Generate new 32-byte key for AES-256 + key := make([]byte, 32) + if _, err := rand.Read(key); err != nil { + return nil, fmt.Errorf("generate key: %w", err) + } + + dir := filepath.Dir(path) + if err := os.MkdirAll(dir, 0o700); err != nil { + return nil, fmt.Errorf("mkdir: %w", err) + } + + encoded := base64.StdEncoding.EncodeToString(key) + if err := os.WriteFile(path, []byte(encoded), 0o600); err != nil { + return nil, fmt.Errorf("write key: %w", err) + } + + return key, nil +} + +type storedHosts struct { + Hosts []storedHost `json:"hosts"` +} + +type storedHost struct { + Name string `json:"name"` + HostName string `json:"hostname"` + Port string `json:"port,omitempty"` + User string `json:"user,omitempty"` + Password string `json:"password,omitempty"` // encrypted + IdentityFile string `json:"identity_file,omitempty"` +} + +func (s *HostStore) load() error { + data, err := os.ReadFile(s.configPath) + if err != nil { + return err + } + + // Decrypt + decrypted, err := decrypt(data, s.cipherKey) + if err != nil { + return fmt.Errorf("decrypt hosts: %w", err) + } + + var stored storedHosts + if err := json.Unmarshal(decrypted, &stored); err != nil { + return fmt.Errorf("parse hosts: %w", err) + } + + s.customHosts = make([]SSHHost, len(stored.Hosts)) + for i, h := range stored.Hosts { + password := "" + if h.Password != "" { + pwd, err := decrypt([]byte(h.Password), s.cipherKey) + if err == nil { + password = string(pwd) + } + } + s.customHosts[i] = SSHHost{ + Name: h.Name, + HostName: h.HostName, + Port: h.Port, + User: h.User, + Password: password, + IdentityFile: h.IdentityFile, + FromSSHConfig: false, + } + } + + return nil +} + +// Save persists custom hosts to disk (encrypted). +func (s *HostStore) Save() error { + stored := storedHosts{ + Hosts: make([]storedHost, len(s.customHosts)), + } + for i, h := range s.customHosts { + password := "" + if h.Password != "" { + enc, err := encrypt([]byte(h.Password), s.cipherKey) + if err == nil { + password = string(enc) + } + } + stored.Hosts[i] = storedHost{ + Name: h.Name, + HostName: h.HostName, + Port: h.Port, + User: h.User, + Password: password, + IdentityFile: h.IdentityFile, + } + } + + data, err := json.Marshal(stored) + if err != nil { + return fmt.Errorf("marshal hosts: %w", err) + } + + encrypted, err := encrypt(data, s.cipherKey) + if err != nil { + return fmt.Errorf("encrypt hosts: %w", err) + } + + dir := filepath.Dir(s.configPath) + if err := os.MkdirAll(dir, 0o700); err != nil { + return fmt.Errorf("mkdir: %w", err) + } + + return os.WriteFile(s.configPath, encrypted, 0o600) +} + +// AddHost adds a custom host and saves. +func (s *HostStore) AddHost(host SSHHost) error { + host.FromSSHConfig = false + s.customHosts = append(s.customHosts, host) + return s.Save() +} + +// RemoveHost removes a custom host by name. +func (s *HostStore) RemoveHost(name string) error { + for i, h := range s.customHosts { + if h.Name == name { + s.customHosts = append(s.customHosts[:i], s.customHosts[i+1:]...) + return s.Save() + } + } + return fmt.Errorf("host %q not found", name) +} + +// AllHosts returns all hosts (from ssh config + custom). +func (s *HostStore) AllHosts() []SSHHost { + sshConfigHosts := ParseSSHConfig() + result := make([]SSHHost, 0, len(sshConfigHosts)+len(s.customHosts)) + + // Build a set of names from ssh config to avoid duplicates + seen := make(map[string]bool) + for _, h := range sshConfigHosts { + lower := strings.ToLower(h.Name) + seen[lower] = true + result = append(result, h) + } + + for _, h := range s.customHosts { + lower := strings.ToLower(h.Name) + if !seen[lower] { + result = append(result, h) + seen[lower] = true + } + } + + return result +} + +// FindByName looks up a host by its Name field. Returns nil if not found. +func (s *HostStore) FindByName(name string) *SSHHost { + all := s.AllHosts() + for i := range all { + if strings.EqualFold(all[i].Name, name) { + return &all[i] + } + } + return nil +} + +func encrypt(plaintext []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + gcm, err := cipher.NewGCM(block) + if err != nil { + return nil, err + } + + nonce := make([]byte, gcm.NonceSize()) + if _, err := io.ReadFull(rand.Reader, nonce); err != nil { + return nil, err + } + + return gcm.Seal(nonce, nonce, plaintext, nil), nil +} + +func decrypt(ciphertext []byte, key []byte) ([]byte, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + gcm, err := cipher.NewGCM(block) + if err != nil { + return nil, err + } + + nonceSize := gcm.NonceSize() + if len(ciphertext) < nonceSize { + return nil, fmt.Errorf("ciphertext too short") + } + + nonce, ciphertext := ciphertext[:nonceSize], ciphertext[nonceSize:] + return gcm.Open(nil, nonce, ciphertext, nil) +} diff --git a/src/vcom-0.2.5/internal/fs/scan.go b/src/vcom-0.2.5/internal/fs/scan.go new file mode 100644 index 0000000..344d5f4 --- /dev/null +++ b/src/vcom-0.2.5/internal/fs/scan.go @@ -0,0 +1,275 @@ +package vfs + +import ( + "errors" + "fmt" + "io/fs" + "os" + "path/filepath" + "sort" + "strings" + "syscall" + "time" + + "golang.org/x/sys/unix" +) + +type ListOptions struct { + ShowHidden bool + DirsFirst bool + SortBy string + SortReverse bool +} + +func ListDir(path string, options ListOptions) ([]Entry, error) { + resolvedPath := path + if resolvedPath == "" { + resolvedPath = "." + } + + dirEntries, err := os.ReadDir(resolvedPath) + if err != nil { + return nil, fmt.Errorf("read dir %s: %w", resolvedPath, err) + } + + entries := make([]Entry, 0, len(dirEntries)+1) + if parent := filepath.Dir(resolvedPath); parent != resolvedPath { + entries = append(entries, Entry{ + Name: "..", + Path: parent, + IsDir: true, + IsParent: true, + }) + } + + for _, dirEntry := range dirEntries { + name := dirEntry.Name() + hidden := strings.HasPrefix(name, ".") + if hidden && !options.ShowHidden { + continue + } + + fullPath := filepath.Join(resolvedPath, name) + info, err := dirEntry.Info() + if err != nil { + continue + } + + entry := Entry{ + Name: name, + Path: fullPath, + Extension: ext(name), + Mode: info.Mode(), + Size: info.Size(), + ModifiedAt: info.ModTime(), + IsDir: info.IsDir(), + IsHidden: hidden, + } + + if createdAt, ok := statBirthTime(fullPath); ok { + entry.CreatedAt = createdAt + entry.CreatedKnown = true + } + + entries = append(entries, entry) + } + + sort.SliceStable(entries, func(i, j int) bool { + left, right := entries[i], entries[j] + + if left.IsParent != right.IsParent { + return left.IsParent + } + if options.DirsFirst && left.IsDir != right.IsDir { + return left.IsDir + } + comparison := compareEntries(left, right, options.SortBy) + if options.SortReverse { + return comparison > 0 + } + return comparison < 0 + }) + + return entries, nil +} + +func compareEntries(left Entry, right Entry, sortBy string) int { + switch strings.ToLower(strings.TrimSpace(sortBy)) { + case "size": + if left.Size != right.Size { + return cmpInt64(left.Size, right.Size) + } + case "modified": + if !left.ModifiedAt.Equal(right.ModifiedAt) { + return cmpTimeDesc(left.ModifiedAt, right.ModifiedAt) + } + case "created": + if left.CreatedKnown != right.CreatedKnown { + if left.CreatedKnown { + return -1 + } + return 1 + } + if !left.CreatedAt.Equal(right.CreatedAt) { + return cmpTimeDesc(left.CreatedAt, right.CreatedAt) + } + case "extension": + if left.Extension != right.Extension { + return strings.Compare(left.Extension, right.Extension) + } + } + + return strings.Compare(strings.ToLower(left.Name), strings.ToLower(right.Name)) +} + +func cmpInt64(left int64, right int64) int { + switch { + case left < right: + return -1 + case left > right: + return 1 + default: + return 0 + } +} + +func cmpTimeDesc(left time.Time, right time.Time) int { + switch { + case left.Equal(right): + return 0 + case left.After(right): + return -1 + default: + return 1 + } +} + +func statBirthTime(path string) (time.Time, bool) { + var stx unix.Statx_t + if err := unix.Statx(unix.AT_FDCWD, path, unix.AT_STATX_SYNC_AS_STAT, unix.STATX_BTIME, &stx); err == nil { + if stx.Mask&unix.STATX_BTIME != 0 { + return time.Unix(int64(stx.Btime.Sec), int64(stx.Btime.Nsec)), true + } + } + + info, err := os.Lstat(path) + if err != nil { + return time.Time{}, false + } + + stat, ok := info.Sys().(*syscall.Stat_t) + if !ok { + return time.Time{}, false + } + + seconds := int64(stat.Ctim.Sec) + nanos := int64(stat.Ctim.Nsec) + if seconds == 0 && nanos == 0 { + return time.Time{}, false + } + return time.Unix(seconds, nanos), true +} + +func DirectorySize(path string) (int64, error) { + var total int64 + + err := filepath.WalkDir(path, func(current string, d fs.DirEntry, walkErr error) error { + if walkErr != nil { + return walkErr + } + if d.IsDir() { + return nil + } + info, err := d.Info() + if err != nil { + return err + } + total += info.Size() + return nil + }) + if err != nil { + return 0, err + } + return total, nil +} + +func FindSelected(entries []Entry, key string) int { + for idx, entry := range entries { + if entry.MatchKey() == key { + return idx + } + } + return 0 +} + +func HumanSize(size int64) string { + if size < 0 { + return "?" + } + if size < 1024 { + return fmt.Sprintf("%d B", size) + } + units := []string{"KB", "MB", "GB", "TB"} + value := float64(size) + for _, unit := range units { + value /= 1024 + if value < 1024 { + return fmt.Sprintf("%.1f %s", value, unit) + } + } + return fmt.Sprintf("%.1f PB", value/1024) +} + +func ShortTime(t time.Time) string { + if t.IsZero() { + return "n/a" + } + return t.Format("2006-01-02 15:04") +} + +func CompactTime(t time.Time) string { + if t.IsZero() { + return "n/a" + } + return t.Format("01-02 15:04") +} + +func Permissions(mode fs.FileMode) string { + return mode.String() +} + +func IsBinarySample(data []byte) bool { + if len(data) == 0 { + return false + } + var controls int + for _, b := range data { + if b == 0 { + return true + } + if b < 9 || (b > 13 && b < 32) { + controls++ + } + } + return controls > len(data)/10 +} + +func SafeBase(path string) string { + base := filepath.Base(path) + if base == "." || base == string(filepath.Separator) { + return path + } + return base +} + +func JoinPath(path string, name string) string { + return filepath.Join(path, name) +} + +func ErrOverwrite(path string) error { + return fmt.Errorf("target already exists: %s", path) +} + +func IsNotExist(err error) bool { + return errors.Is(err, os.ErrNotExist) +} diff --git a/src/vcom-0.2.5/internal/theme/theme.go b/src/vcom-0.2.5/internal/theme/theme.go new file mode 100644 index 0000000..2a481bb --- /dev/null +++ b/src/vcom-0.2.5/internal/theme/theme.go @@ -0,0 +1,836 @@ +package theme + +import ( + "fmt" + "strings" + + "github.com/charmbracelet/lipgloss" +) + +type Palette struct { + Name string + Background lipgloss.Color + Panel lipgloss.Color + PanelInactive lipgloss.Color + PanelElevated lipgloss.Color + StatusBar lipgloss.Color + Footer lipgloss.Color + Border lipgloss.Color + BorderActive lipgloss.Color + Text lipgloss.Color + Muted lipgloss.Color + Accent lipgloss.Color + Info lipgloss.Color + Success lipgloss.Color + Selection lipgloss.Color + Hover lipgloss.Color + Marked lipgloss.Color + Warning lipgloss.Color + Danger lipgloss.Color + ActivePath lipgloss.Color + ConfirmButton lipgloss.Color + CancelButton lipgloss.Color + ProgressFill lipgloss.Color + ProgressEmpty lipgloss.Color + HelpNav lipgloss.Color + HelpPanels lipgloss.Color + HelpDialogs lipgloss.Color + HelpMouse lipgloss.Color + Folder lipgloss.Color + TextFile lipgloss.Color + ConfigFile lipgloss.Color + ExecFile lipgloss.Color + ImageFile lipgloss.Color + BinaryFile lipgloss.Color + FooterKey lipgloss.Color +} + +var builtInThemes = []string{ + "catppuccin-mocha", + "catppuccin-macchiato", + "catppuccin-lavender", + "tokyo-night", + "gruvbox-dark", + "nord", + "one-dark", + "everforest", + "github-dark", + "ayu-dark", + "breeze", + "cyberpunk", + "dracula", + "eldritch", + "kanagawa", + "kanagawa-paper", + "rose-pine", + "solarized-dark", + "vesper", +} + +func Names() []string { + values := make([]string, len(builtInThemes)) + copy(values, builtInThemes) + return values +} + +func Next(current string) string { + values := Names() + if len(values) == 0 { + return current + } + current = strings.ToLower(strings.TrimSpace(current)) + for idx, value := range values { + if value == current { + return values[(idx+1)%len(values)] + } + } + return values[0] +} + +func Resolve(name string) (Palette, error) { + switch strings.ToLower(name) { + case "catppuccin-mocha": + return Palette{ + Name: "catppuccin-mocha", + Background: lipgloss.Color("#11111B"), + Panel: lipgloss.Color("#181825"), + PanelInactive: lipgloss.Color("#1E1E2E"), + PanelElevated: lipgloss.Color("#24273A"), + StatusBar: lipgloss.Color("#1E1E2E"), + Footer: lipgloss.Color("#11111B"), + Border: lipgloss.Color("#45475A"), + BorderActive: lipgloss.Color("#89B4FA"), + Text: lipgloss.Color("#CDD6F4"), + Muted: lipgloss.Color("#A6ADC8"), + Accent: lipgloss.Color("#F5C2E7"), + Info: lipgloss.Color("#89DCEB"), + Success: lipgloss.Color("#A6E3A1"), + Selection: lipgloss.Color("#313244"), + Hover: lipgloss.Color("#2A2B3C"), + Marked: lipgloss.Color("#F38BA8"), + Warning: lipgloss.Color("#F9E2AF"), + Danger: lipgloss.Color("#F38BA8"), + ActivePath: lipgloss.Color("#89DCEB"), + ConfirmButton: lipgloss.Color("#A6E3A1"), + CancelButton: lipgloss.Color("#F38BA8"), + ProgressFill: lipgloss.Color("#89B4FA"), + ProgressEmpty: lipgloss.Color("#45475A"), + HelpNav: lipgloss.Color("#89B4FA"), + HelpPanels: lipgloss.Color("#F9E2AF"), + HelpDialogs: lipgloss.Color("#CBA6F7"), + HelpMouse: lipgloss.Color("#F38BA8"), + Folder: lipgloss.Color("#89B4FA"), + TextFile: lipgloss.Color("#A6E3A1"), + ConfigFile: lipgloss.Color("#F9E2AF"), + ExecFile: lipgloss.Color("#FAB387"), + ImageFile: lipgloss.Color("#94E2D5"), + BinaryFile: lipgloss.Color("#CBA6F7"), + FooterKey: lipgloss.Color("#89DCEB"), + }, nil + + case "catppuccin-lavender": + return Palette{ + Name: "catppuccin-lavender", + Background: lipgloss.Color("#11111B"), + Panel: lipgloss.Color("#181825"), + PanelInactive: lipgloss.Color("#1E1E2E"), + PanelElevated: lipgloss.Color("#24273A"), + StatusBar: lipgloss.Color("#1E1E2E"), + Footer: lipgloss.Color("#11111B"), + Border: lipgloss.Color("#45475A"), + BorderActive: lipgloss.Color("#B4BEFE"), + Text: lipgloss.Color("#CDD6F4"), + Muted: lipgloss.Color("#A6ADC8"), + Accent: lipgloss.Color("#B4BEFE"), + Info: lipgloss.Color("#89DCEB"), + Success: lipgloss.Color("#A6E3A1"), + Selection: lipgloss.Color("#313244"), + Hover: lipgloss.Color("#2A2B3C"), + Marked: lipgloss.Color("#F38BA8"), + Warning: lipgloss.Color("#F9E2AF"), + Danger: lipgloss.Color("#F38BA8"), + ActivePath: lipgloss.Color("#B4BEFE"), + ConfirmButton: lipgloss.Color("#A6E3A1"), + CancelButton: lipgloss.Color("#F38BA8"), + ProgressFill: lipgloss.Color("#B4BEFE"), + ProgressEmpty: lipgloss.Color("#45475A"), + HelpNav: lipgloss.Color("#B4BEFE"), + HelpPanels: lipgloss.Color("#F9E2AF"), + HelpDialogs: lipgloss.Color("#CBA6F7"), + HelpMouse: lipgloss.Color("#F38BA8"), + Folder: lipgloss.Color("#B4BEFE"), + TextFile: lipgloss.Color("#A6E3A1"), + ConfigFile: lipgloss.Color("#F9E2AF"), + ExecFile: lipgloss.Color("#FAB387"), + ImageFile: lipgloss.Color("#89DCEB"), + BinaryFile: lipgloss.Color("#CBA6F7"), + FooterKey: lipgloss.Color("#B4BEFE"), + }, nil + + case "tokyo-night": + return Palette{ + Name: "tokyo-night", + Background: lipgloss.Color("#16161E"), + Panel: lipgloss.Color("#1A1B26"), + PanelInactive: lipgloss.Color("#24283B"), + PanelElevated: lipgloss.Color("#2A2F44"), + StatusBar: lipgloss.Color("#24283B"), + Footer: lipgloss.Color("#16161E"), + Border: lipgloss.Color("#3B4261"), + BorderActive: lipgloss.Color("#7AA2F7"), + Text: lipgloss.Color("#C0CAF5"), + Muted: lipgloss.Color("#9AA5CE"), + Accent: lipgloss.Color("#BB9AF7"), + Info: lipgloss.Color("#73DACA"), + Success: lipgloss.Color("#9ECE6A"), + Selection: lipgloss.Color("#292E42"), + Hover: lipgloss.Color("#252A3D"), + Marked: lipgloss.Color("#F7768E"), + Warning: lipgloss.Color("#E0AF68"), + Danger: lipgloss.Color("#F7768E"), + ActivePath: lipgloss.Color("#73DACA"), + ConfirmButton: lipgloss.Color("#9ECE6A"), + CancelButton: lipgloss.Color("#F7768E"), + ProgressFill: lipgloss.Color("#7AA2F7"), + ProgressEmpty: lipgloss.Color("#3B4261"), + HelpNav: lipgloss.Color("#7AA2F7"), + HelpPanels: lipgloss.Color("#E0AF68"), + HelpDialogs: lipgloss.Color("#BB9AF7"), + HelpMouse: lipgloss.Color("#F7768E"), + Folder: lipgloss.Color("#7AA2F7"), + TextFile: lipgloss.Color("#9ECE6A"), + ConfigFile: lipgloss.Color("#E0AF68"), + ExecFile: lipgloss.Color("#FF9E64"), + ImageFile: lipgloss.Color("#73DACA"), + BinaryFile: lipgloss.Color("#BB9AF7"), + FooterKey: lipgloss.Color("#73DACA"), + }, nil + + case "gruvbox-dark": + return Palette{ + Name: name, + Background: lipgloss.Color("#1D2021"), + Panel: lipgloss.Color("#282828"), + PanelInactive: lipgloss.Color("#32302F"), + PanelElevated: lipgloss.Color("#3C3836"), + StatusBar: lipgloss.Color("#32302F"), + Footer: lipgloss.Color("#1D2021"), + Border: lipgloss.Color("#504945"), + BorderActive: lipgloss.Color("#FABD2F"), + Text: lipgloss.Color("#EBDBB2"), + Muted: lipgloss.Color("#BDAE93"), + Accent: lipgloss.Color("#83A598"), + Info: lipgloss.Color("#8EC07C"), + Success: lipgloss.Color("#B8BB26"), + Selection: lipgloss.Color("#3C3836"), + Hover: lipgloss.Color("#45403D"), + Marked: lipgloss.Color("#FB4934"), + Warning: lipgloss.Color("#FE8019"), + Danger: lipgloss.Color("#FB4934"), + ActivePath: lipgloss.Color("#8EC07C"), + ConfirmButton: lipgloss.Color("#B8BB26"), + CancelButton: lipgloss.Color("#FB4934"), + ProgressFill: lipgloss.Color("#FABD2F"), + ProgressEmpty: lipgloss.Color("#504945"), + HelpNav: lipgloss.Color("#83A598"), + HelpPanels: lipgloss.Color("#FABD2F"), + HelpDialogs: lipgloss.Color("#D3869B"), + HelpMouse: lipgloss.Color("#FB4934"), + Folder: lipgloss.Color("#83A598"), + TextFile: lipgloss.Color("#B8BB26"), + ConfigFile: lipgloss.Color("#FABD2F"), + ExecFile: lipgloss.Color("#FE8019"), + ImageFile: lipgloss.Color("#8EC07C"), + BinaryFile: lipgloss.Color("#D3869B"), + FooterKey: lipgloss.Color("#8EC07C"), + }, nil + + case "nord": + return Palette{ + Name: name, + Background: lipgloss.Color("#2E3440"), + Panel: lipgloss.Color("#3B4252"), + PanelInactive: lipgloss.Color("#434C5E"), + PanelElevated: lipgloss.Color("#4C566A"), + StatusBar: lipgloss.Color("#434C5E"), + Footer: lipgloss.Color("#2E3440"), + Border: lipgloss.Color("#4C566A"), + BorderActive: lipgloss.Color("#88C0D0"), + Text: lipgloss.Color("#ECEFF4"), + Muted: lipgloss.Color("#D8DEE9"), + Accent: lipgloss.Color("#81A1C1"), + Info: lipgloss.Color("#8FBCBB"), + Success: lipgloss.Color("#A3BE8C"), + Selection: lipgloss.Color("#434C5E"), + Hover: lipgloss.Color("#505A70"), + Marked: lipgloss.Color("#BF616A"), + Warning: lipgloss.Color("#EBCB8B"), + Danger: lipgloss.Color("#BF616A"), + ActivePath: lipgloss.Color("#8FBCBB"), + ConfirmButton: lipgloss.Color("#A3BE8C"), + CancelButton: lipgloss.Color("#BF616A"), + ProgressFill: lipgloss.Color("#88C0D0"), + ProgressEmpty: lipgloss.Color("#4C566A"), + HelpNav: lipgloss.Color("#81A1C1"), + HelpPanels: lipgloss.Color("#EBCB8B"), + HelpDialogs: lipgloss.Color("#B48EAD"), + HelpMouse: lipgloss.Color("#BF616A"), + Folder: lipgloss.Color("#81A1C1"), + TextFile: lipgloss.Color("#A3BE8C"), + ConfigFile: lipgloss.Color("#EBCB8B"), + ExecFile: lipgloss.Color("#D08770"), + ImageFile: lipgloss.Color("#8FBCBB"), + BinaryFile: lipgloss.Color("#B48EAD"), + FooterKey: lipgloss.Color("#8FBCBB"), + }, nil + + case "one-dark": + return Palette{ + Name: "one-dark", + Background: lipgloss.Color("#282C34"), + Panel: lipgloss.Color("#21252B"), + PanelInactive: lipgloss.Color("#1B1D23"), + PanelElevated: lipgloss.Color("#2C313A"), + StatusBar: lipgloss.Color("#21252B"), + Footer: lipgloss.Color("#282C34"), + Border: lipgloss.Color("#3B4048"), + BorderActive: lipgloss.Color("#61AFEF"), + Text: lipgloss.Color("#ABB2BF"), + Muted: lipgloss.Color("#5C6370"), + Accent: lipgloss.Color("#61AFEF"), + Info: lipgloss.Color("#56B6C2"), + Success: lipgloss.Color("#98C379"), + Selection: lipgloss.Color("#3E4451"), + Hover: lipgloss.Color("#333841"), + Marked: lipgloss.Color("#E06C75"), + Warning: lipgloss.Color("#E5C07B"), + Danger: lipgloss.Color("#E06C75"), + ActivePath: lipgloss.Color("#56B6C2"), + ConfirmButton: lipgloss.Color("#98C379"), + CancelButton: lipgloss.Color("#E06C75"), + ProgressFill: lipgloss.Color("#61AFEF"), + ProgressEmpty: lipgloss.Color("#3B4048"), + HelpNav: lipgloss.Color("#61AFEF"), + HelpPanels: lipgloss.Color("#E5C07B"), + HelpDialogs: lipgloss.Color("#C678DD"), + HelpMouse: lipgloss.Color("#E06C75"), + Folder: lipgloss.Color("#61AFEF"), + TextFile: lipgloss.Color("#98C379"), + ConfigFile: lipgloss.Color("#E5C07B"), + ExecFile: lipgloss.Color("#D19A66"), + ImageFile: lipgloss.Color("#56B6C2"), + BinaryFile: lipgloss.Color("#C678DD"), + FooterKey: lipgloss.Color("#56B6C2"), + }, nil + + case "everforest": + return Palette{ + Name: "everforest", + Background: lipgloss.Color("#2D353B"), + Panel: lipgloss.Color("#272E33"), + PanelInactive: lipgloss.Color("#232A2E"), + PanelElevated: lipgloss.Color("#333C43"), + StatusBar: lipgloss.Color("#232A2E"), + Footer: lipgloss.Color("#2D353B"), + Border: lipgloss.Color("#475258"), + BorderActive: lipgloss.Color("#A7C080"), + Text: lipgloss.Color("#D3C6AA"), + Muted: lipgloss.Color("#859289"), + Accent: lipgloss.Color("#A7C080"), + Info: lipgloss.Color("#83C092"), + Success: lipgloss.Color("#A7C080"), + Selection: lipgloss.Color("#3A454A"), + Hover: lipgloss.Color("#364147"), + Marked: lipgloss.Color("#E67E80"), + Warning: lipgloss.Color("#DBBC7F"), + Danger: lipgloss.Color("#E67E80"), + ActivePath: lipgloss.Color("#83C092"), + ConfirmButton: lipgloss.Color("#A7C080"), + CancelButton: lipgloss.Color("#E67E80"), + ProgressFill: lipgloss.Color("#A7C080"), + ProgressEmpty: lipgloss.Color("#475258"), + HelpNav: lipgloss.Color("#A7C080"), + HelpPanels: lipgloss.Color("#DBBC7F"), + HelpDialogs: lipgloss.Color("#D699B6"), + HelpMouse: lipgloss.Color("#E67E80"), + Folder: lipgloss.Color("#A7C080"), + TextFile: lipgloss.Color("#D3C6AA"), + ConfigFile: lipgloss.Color("#DBBC7F"), + ExecFile: lipgloss.Color("#E69875"), + ImageFile: lipgloss.Color("#83C092"), + BinaryFile: lipgloss.Color("#D699B6"), + FooterKey: lipgloss.Color("#83C092"), + }, nil + + case "github-dark": + return Palette{ + Name: "github-dark", + Background: lipgloss.Color("#0D1117"), + Panel: lipgloss.Color("#161B22"), + PanelInactive: lipgloss.Color("#1C2128"), + PanelElevated: lipgloss.Color("#21262D"), + StatusBar: lipgloss.Color("#1C2128"), + Footer: lipgloss.Color("#0D1117"), + Border: lipgloss.Color("#30363D"), + BorderActive: lipgloss.Color("#58A6FF"), + Text: lipgloss.Color("#E6EDF3"), + Muted: lipgloss.Color("#8B949E"), + Accent: lipgloss.Color("#58A6FF"), + Info: lipgloss.Color("#39D353"), + Success: lipgloss.Color("#3FB950"), + Selection: lipgloss.Color("#21262D"), + Hover: lipgloss.Color("#262C36"), + Marked: lipgloss.Color("#F85149"), + Warning: lipgloss.Color("#D29922"), + Danger: lipgloss.Color("#F85149"), + ActivePath: lipgloss.Color("#39D353"), + ConfirmButton: lipgloss.Color("#3FB950"), + CancelButton: lipgloss.Color("#F85149"), + ProgressFill: lipgloss.Color("#58A6FF"), + ProgressEmpty: lipgloss.Color("#30363D"), + HelpNav: lipgloss.Color("#58A6FF"), + HelpPanels: lipgloss.Color("#D29922"), + HelpDialogs: lipgloss.Color("#BC8CFF"), + HelpMouse: lipgloss.Color("#F85149"), + Folder: lipgloss.Color("#58A6FF"), + TextFile: lipgloss.Color("#7EE787"), + ConfigFile: lipgloss.Color("#D29922"), + ExecFile: lipgloss.Color("#F0883E"), + ImageFile: lipgloss.Color("#39D353"), + BinaryFile: lipgloss.Color("#BC8CFF"), + FooterKey: lipgloss.Color("#39D353"), + }, nil + + case "catppuccin-macchiato": + return Palette{ + Name: "catppuccin-macchiato", + Background: lipgloss.Color("#181926"), + Panel: lipgloss.Color("#1E2030"), + PanelInactive: lipgloss.Color("#24273A"), + PanelElevated: lipgloss.Color("#2A2E3F"), + StatusBar: lipgloss.Color("#24273A"), + Footer: lipgloss.Color("#181926"), + Border: lipgloss.Color("#363A4F"), + BorderActive: lipgloss.Color("#C6A0F6"), + Text: lipgloss.Color("#CAD3F5"), + Muted: lipgloss.Color("#A5ADCB"), + Accent: lipgloss.Color("#C6A0F6"), + Info: lipgloss.Color("#91D7E3"), + Success: lipgloss.Color("#A6DA95"), + Selection: lipgloss.Color("#363A4F"), + Hover: lipgloss.Color("#2E3248"), + Marked: lipgloss.Color("#ED8796"), + Warning: lipgloss.Color("#F5A97F"), + Danger: lipgloss.Color("#ED8796"), + ActivePath: lipgloss.Color("#91D7E3"), + ConfirmButton: lipgloss.Color("#A6DA95"), + CancelButton: lipgloss.Color("#ED8796"), + ProgressFill: lipgloss.Color("#C6A0F6"), + ProgressEmpty: lipgloss.Color("#363A4F"), + HelpNav: lipgloss.Color("#C6A0F6"), + HelpPanels: lipgloss.Color("#F5A97F"), + HelpDialogs: lipgloss.Color("#C6A0F6"), + HelpMouse: lipgloss.Color("#ED8796"), + Folder: lipgloss.Color("#C6A0F6"), + TextFile: lipgloss.Color("#A6DA95"), + ConfigFile: lipgloss.Color("#F5A97F"), + ExecFile: lipgloss.Color("#EE99A0"), + ImageFile: lipgloss.Color("#91D7E3"), + BinaryFile: lipgloss.Color("#C6A0F6"), + FooterKey: lipgloss.Color("#91D7E3"), + }, nil + + case "ayu-dark": + return Palette{ + Name: "ayu-dark", + Background: lipgloss.Color("#0A0E14"), + Panel: lipgloss.Color("#0D1017"), + PanelInactive: lipgloss.Color("#11151D"), + PanelElevated: lipgloss.Color("#151A23"), + StatusBar: lipgloss.Color("#11151D"), + Footer: lipgloss.Color("#0A0E14"), + Border: lipgloss.Color("#1F2430"), + BorderActive: lipgloss.Color("#FFCC66"), + Text: lipgloss.Color("#B3B1AD"), + Muted: lipgloss.Color("#565B66"), + Accent: lipgloss.Color("#FF8F40"), + Info: lipgloss.Color("#95E6CB"), + Success: lipgloss.Color("#7FD962"), + Selection: lipgloss.Color("#1F2430"), + Hover: lipgloss.Color("#191E27"), + Marked: lipgloss.Color("#F26D78"), + Warning: lipgloss.Color("#FFCC66"), + Danger: lipgloss.Color("#F26D78"), + ActivePath: lipgloss.Color("#95E6CB"), + ConfirmButton: lipgloss.Color("#7FD962"), + CancelButton: lipgloss.Color("#F26D78"), + ProgressFill: lipgloss.Color("#FFCC66"), + ProgressEmpty: lipgloss.Color("#1F2430"), + HelpNav: lipgloss.Color("#FF8F40"), + HelpPanels: lipgloss.Color("#FFCC66"), + HelpDialogs: lipgloss.Color("#D4A0FF"), + HelpMouse: lipgloss.Color("#F26D78"), + Folder: lipgloss.Color("#FF8F40"), + TextFile: lipgloss.Color("#B3B1AD"), + ConfigFile: lipgloss.Color("#FFCC66"), + ExecFile: lipgloss.Color("#F29668"), + ImageFile: lipgloss.Color("#95E6CB"), + BinaryFile: lipgloss.Color("#D4A0FF"), + FooterKey: lipgloss.Color("#95E6CB"), + }, nil + + case "breeze": + return Palette{ + Name: "breeze", + Background: lipgloss.Color("#232629"), + Panel: lipgloss.Color("#2A2D30"), + PanelInactive: lipgloss.Color("#313437"), + PanelElevated: lipgloss.Color("#383B3E"), + StatusBar: lipgloss.Color("#313437"), + Footer: lipgloss.Color("#232629"), + Border: lipgloss.Color("#494D51"), + BorderActive: lipgloss.Color("#3DAEE9"), + Text: lipgloss.Color("#EFF0F1"), + Muted: lipgloss.Color("#B0B5BA"), + Accent: lipgloss.Color("#3DAEE9"), + Info: lipgloss.Color("#27E6A6"), + Success: lipgloss.Color("#27AE60"), + Selection: lipgloss.Color("#313437"), + Hover: lipgloss.Color("#35383B"), + Marked: lipgloss.Color("#ED1515"), + Warning: lipgloss.Color("#F67400"), + Danger: lipgloss.Color("#ED1515"), + ActivePath: lipgloss.Color("#27E6A6"), + ConfirmButton: lipgloss.Color("#27AE60"), + CancelButton: lipgloss.Color("#ED1515"), + ProgressFill: lipgloss.Color("#3DAEE9"), + ProgressEmpty: lipgloss.Color("#494D51"), + HelpNav: lipgloss.Color("#3DAEE9"), + HelpPanels: lipgloss.Color("#F67400"), + HelpDialogs: lipgloss.Color("#9B59B6"), + HelpMouse: lipgloss.Color("#ED1515"), + Folder: lipgloss.Color("#3DAEE9"), + TextFile: lipgloss.Color("#27AE60"), + ConfigFile: lipgloss.Color("#F67400"), + ExecFile: lipgloss.Color("#E67E22"), + ImageFile: lipgloss.Color("#27E6A6"), + BinaryFile: lipgloss.Color("#9B59B6"), + FooterKey: lipgloss.Color("#27E6A6"), + }, nil + + case "cyberpunk": + return Palette{ + Name: "cyberpunk", + Background: lipgloss.Color("#000B1A"), + Panel: lipgloss.Color("#0A1628"), + PanelInactive: lipgloss.Color("#0F1D30"), + PanelElevated: lipgloss.Color("#142338"), + StatusBar: lipgloss.Color("#0F1D30"), + Footer: lipgloss.Color("#000B1A"), + Border: lipgloss.Color("#1E3A5F"), + BorderActive: lipgloss.Color("#00FFF0"), + Text: lipgloss.Color("#E0E0E0"), + Muted: lipgloss.Color("#808080"), + Accent: lipgloss.Color("#FF00FF"), + Info: lipgloss.Color("#00FFF0"), + Success: lipgloss.Color("#00FF41"), + Selection: lipgloss.Color("#142338"), + Hover: lipgloss.Color("#192C42"), + Marked: lipgloss.Color("#FF0055"), + Warning: lipgloss.Color("#FFB000"), + Danger: lipgloss.Color("#FF0055"), + ActivePath: lipgloss.Color("#00FFF0"), + ConfirmButton: lipgloss.Color("#00FF41"), + CancelButton: lipgloss.Color("#FF0055"), + ProgressFill: lipgloss.Color("#FF00FF"), + ProgressEmpty: lipgloss.Color("#1E3A5F"), + HelpNav: lipgloss.Color("#FF00FF"), + HelpPanels: lipgloss.Color("#FFB000"), + HelpDialogs: lipgloss.Color("#FF00FF"), + HelpMouse: lipgloss.Color("#FF0055"), + Folder: lipgloss.Color("#00FFF0"), + TextFile: lipgloss.Color("#00FF41"), + ConfigFile: lipgloss.Color("#FFB000"), + ExecFile: lipgloss.Color("#FF6600"), + ImageFile: lipgloss.Color("#00FFF0"), + BinaryFile: lipgloss.Color("#FF00FF"), + FooterKey: lipgloss.Color("#00FFF0"), + }, nil + + case "dracula": + return Palette{ + Name: "dracula", + Background: lipgloss.Color("#21222C"), + Panel: lipgloss.Color("#282A36"), + PanelInactive: lipgloss.Color("#2F3242"), + PanelElevated: lipgloss.Color("#363850"), + StatusBar: lipgloss.Color("#2F3242"), + Footer: lipgloss.Color("#21222C"), + Border: lipgloss.Color("#44475A"), + BorderActive: lipgloss.Color("#BD93F9"), + Text: lipgloss.Color("#F8F8F2"), + Muted: lipgloss.Color("#6272A4"), + Accent: lipgloss.Color("#FF79C6"), + Info: lipgloss.Color("#8BE9FD"), + Success: lipgloss.Color("#50FA7B"), + Selection: lipgloss.Color("#44475A"), + Hover: lipgloss.Color("#3A3D52"), + Marked: lipgloss.Color("#FF5555"), + Warning: lipgloss.Color("#F1FA8C"), + Danger: lipgloss.Color("#FF5555"), + ActivePath: lipgloss.Color("#8BE9FD"), + ConfirmButton: lipgloss.Color("#50FA7B"), + CancelButton: lipgloss.Color("#FF5555"), + ProgressFill: lipgloss.Color("#FF79C6"), + ProgressEmpty: lipgloss.Color("#44475A"), + HelpNav: lipgloss.Color("#BD93F9"), + HelpPanels: lipgloss.Color("#F1FA8C"), + HelpDialogs: lipgloss.Color("#FF79C6"), + HelpMouse: lipgloss.Color("#FF5555"), + Folder: lipgloss.Color("#BD93F9"), + TextFile: lipgloss.Color("#50FA7B"), + ConfigFile: lipgloss.Color("#F1FA8C"), + ExecFile: lipgloss.Color("#FFB86C"), + ImageFile: lipgloss.Color("#8BE9FD"), + BinaryFile: lipgloss.Color("#FF79C6"), + FooterKey: lipgloss.Color("#8BE9FD"), + }, nil + + case "eldritch": + return Palette{ + Name: "eldritch", + Background: lipgloss.Color("#0B0D15"), + Panel: lipgloss.Color("#10121A"), + PanelInactive: lipgloss.Color("#161822"), + PanelElevated: lipgloss.Color("#1C1F2B"), + StatusBar: lipgloss.Color("#161822"), + Footer: lipgloss.Color("#0B0D15"), + Border: lipgloss.Color("#262A3B"), + BorderActive: lipgloss.Color("#67B0E8"), + Text: lipgloss.Color("#D3D7E0"), + Muted: lipgloss.Color("#8B8FA6"), + Accent: lipgloss.Color("#C278E8"), + Info: lipgloss.Color("#67B0E8"), + Success: lipgloss.Color("#74C287"), + Selection: lipgloss.Color("#1C1F2B"), + Hover: lipgloss.Color("#222638"), + Marked: lipgloss.Color("#E06868"), + Warning: lipgloss.Color("#E0A868"), + Danger: lipgloss.Color("#E06868"), + ActivePath: lipgloss.Color("#67B0E8"), + ConfirmButton: lipgloss.Color("#74C287"), + CancelButton: lipgloss.Color("#E06868"), + ProgressFill: lipgloss.Color("#C278E8"), + ProgressEmpty: lipgloss.Color("#262A3B"), + HelpNav: lipgloss.Color("#C278E8"), + HelpPanels: lipgloss.Color("#E0A868"), + HelpDialogs: lipgloss.Color("#C278E8"), + HelpMouse: lipgloss.Color("#E06868"), + Folder: lipgloss.Color("#67B0E8"), + TextFile: lipgloss.Color("#74C287"), + ConfigFile: lipgloss.Color("#E0A868"), + ExecFile: lipgloss.Color("#E08868"), + ImageFile: lipgloss.Color("#67B0E8"), + BinaryFile: lipgloss.Color("#C278E8"), + FooterKey: lipgloss.Color("#67B0E8"), + }, nil + + case "kanagawa": + return Palette{ + Name: "kanagawa", + Background: lipgloss.Color("#1F1F28"), + Panel: lipgloss.Color("#252535"), + PanelInactive: lipgloss.Color("#2A2A3C"), + PanelElevated: lipgloss.Color("#363646"), + StatusBar: lipgloss.Color("#2A2A3C"), + Footer: lipgloss.Color("#1F1F28"), + Border: lipgloss.Color("#54546D"), + BorderActive: lipgloss.Color("#7FB4CA"), + Text: lipgloss.Color("#DCD7BA"), + Muted: lipgloss.Color("#938AA9"), + Accent: lipgloss.Color("#DCA561"), + Info: lipgloss.Color("#7FB4CA"), + Success: lipgloss.Color("#76946A"), + Selection: lipgloss.Color("#363646"), + Hover: lipgloss.Color("#30304A"), + Marked: lipgloss.Color("#C34043"), + Warning: lipgloss.Color("#DCA561"), + Danger: lipgloss.Color("#C34043"), + ActivePath: lipgloss.Color("#7FB4CA"), + ConfirmButton: lipgloss.Color("#76946A"), + CancelButton: lipgloss.Color("#C34043"), + ProgressFill: lipgloss.Color("#DCA561"), + ProgressEmpty: lipgloss.Color("#54546D"), + HelpNav: lipgloss.Color("#DCA561"), + HelpPanels: lipgloss.Color("#DCA561"), + HelpDialogs: lipgloss.Color("#957FB8"), + HelpMouse: lipgloss.Color("#C34043"), + Folder: lipgloss.Color("#7FB4CA"), + TextFile: lipgloss.Color("#76946A"), + ConfigFile: lipgloss.Color("#DCA561"), + ExecFile: lipgloss.Color("#E6C384"), + ImageFile: lipgloss.Color("#7FB4CA"), + BinaryFile: lipgloss.Color("#957FB8"), + FooterKey: lipgloss.Color("#7FB4CA"), + }, nil + + case "kanagawa-paper": + return Palette{ + Name: "kanagawa-paper", + Background: lipgloss.Color("#1A1A22"), + Panel: lipgloss.Color("#222233"), + PanelInactive: lipgloss.Color("#2A2A3E"), + PanelElevated: lipgloss.Color("#323248"), + StatusBar: lipgloss.Color("#2A2A3E"), + Footer: lipgloss.Color("#1A1A22"), + Border: lipgloss.Color("#4A4A5E"), + BorderActive: lipgloss.Color("#9EC1C9"), + Text: lipgloss.Color("#C8C2B0"), + Muted: lipgloss.Color("#8B849E"), + Accent: lipgloss.Color("#C0A36E"), + Info: lipgloss.Color("#9EC1C9"), + Success: lipgloss.Color("#8EAA7A"), + Selection: lipgloss.Color("#323248"), + Hover: lipgloss.Color("#2C2C42"), + Marked: lipgloss.Color("#B5534E"), + Warning: lipgloss.Color("#C0A36E"), + Danger: lipgloss.Color("#B5534E"), + ActivePath: lipgloss.Color("#9EC1C9"), + ConfirmButton: lipgloss.Color("#8EAA7A"), + CancelButton: lipgloss.Color("#B5534E"), + ProgressFill: lipgloss.Color("#C0A36E"), + ProgressEmpty: lipgloss.Color("#4A4A5E"), + HelpNav: lipgloss.Color("#C0A36E"), + HelpPanels: lipgloss.Color("#C0A36E"), + HelpDialogs: lipgloss.Color("#A58DB8"), + HelpMouse: lipgloss.Color("#B5534E"), + Folder: lipgloss.Color("#9EC1C9"), + TextFile: lipgloss.Color("#8EAA7A"), + ConfigFile: lipgloss.Color("#C0A36E"), + ExecFile: lipgloss.Color("#D4BE8A"), + ImageFile: lipgloss.Color("#9EC1C9"), + BinaryFile: lipgloss.Color("#A58DB8"), + FooterKey: lipgloss.Color("#9EC1C9"), + }, nil + + case "rose-pine": + return Palette{ + Name: "rose-pine", + Background: lipgloss.Color("#191724"), + Panel: lipgloss.Color("#1F1D2E"), + PanelInactive: lipgloss.Color("#26233A"), + PanelElevated: lipgloss.Color("#2A273F"), + StatusBar: lipgloss.Color("#26233A"), + Footer: lipgloss.Color("#191724"), + Border: lipgloss.Color("#3B355A"), + BorderActive: lipgloss.Color("#C4A7E7"), + Text: lipgloss.Color("#E0DEF4"), + Muted: lipgloss.Color("#908CAA"), + Accent: lipgloss.Color("#EB6F92"), + Info: lipgloss.Color("#9CCFD8"), + Success: lipgloss.Color("#3E8FB0"), + Selection: lipgloss.Color("#312F44"), + Hover: lipgloss.Color("#2A2740"), + Marked: lipgloss.Color("#EB6F92"), + Warning: lipgloss.Color("#F6C177"), + Danger: lipgloss.Color("#EB6F92"), + ActivePath: lipgloss.Color("#9CCFD8"), + ConfirmButton: lipgloss.Color("#3E8FB0"), + CancelButton: lipgloss.Color("#EB6F92"), + ProgressFill: lipgloss.Color("#C4A7E7"), + ProgressEmpty: lipgloss.Color("#3B355A"), + HelpNav: lipgloss.Color("#C4A7E7"), + HelpPanels: lipgloss.Color("#F6C177"), + HelpDialogs: lipgloss.Color("#C4A7E7"), + HelpMouse: lipgloss.Color("#EB6F92"), + Folder: lipgloss.Color("#C4A7E7"), + TextFile: lipgloss.Color("#3E8FB0"), + ConfigFile: lipgloss.Color("#F6C177"), + ExecFile: lipgloss.Color("#E0DEF4"), + ImageFile: lipgloss.Color("#9CCFD8"), + BinaryFile: lipgloss.Color("#C4A7E7"), + FooterKey: lipgloss.Color("#9CCFD8"), + }, nil + + case "solarized-dark": + return Palette{ + Name: "solarized-dark", + Background: lipgloss.Color("#002B36"), + Panel: lipgloss.Color("#073642"), + PanelInactive: lipgloss.Color("#0D4A56"), + PanelElevated: lipgloss.Color("#125A68"), + StatusBar: lipgloss.Color("#0D4A56"), + Footer: lipgloss.Color("#002B36"), + Border: lipgloss.Color("#586E75"), + BorderActive: lipgloss.Color("#268BD2"), + Text: lipgloss.Color("#93A1A1"), + Muted: lipgloss.Color("#657B83"), + Accent: lipgloss.Color("#D33682"), + Info: lipgloss.Color("#2AA198"), + Success: lipgloss.Color("#859900"), + Selection: lipgloss.Color("#073642"), + Hover: lipgloss.Color("#0B4A56"), + Marked: lipgloss.Color("#DC322F"), + Warning: lipgloss.Color("#B58900"), + Danger: lipgloss.Color("#DC322F"), + ActivePath: lipgloss.Color("#2AA198"), + ConfirmButton: lipgloss.Color("#859900"), + CancelButton: lipgloss.Color("#DC322F"), + ProgressFill: lipgloss.Color("#268BD2"), + ProgressEmpty: lipgloss.Color("#586E75"), + HelpNav: lipgloss.Color("#268BD2"), + HelpPanels: lipgloss.Color("#B58900"), + HelpDialogs: lipgloss.Color("#D33682"), + HelpMouse: lipgloss.Color("#DC322F"), + Folder: lipgloss.Color("#268BD2"), + TextFile: lipgloss.Color("#859900"), + ConfigFile: lipgloss.Color("#B58900"), + ExecFile: lipgloss.Color("#CB4B16"), + ImageFile: lipgloss.Color("#2AA198"), + BinaryFile: lipgloss.Color("#D33682"), + FooterKey: lipgloss.Color("#2AA198"), + }, nil + + case "vesper": + return Palette{ + Name: "vesper", + Background: lipgloss.Color("#101010"), + Panel: lipgloss.Color("#181820"), + PanelInactive: lipgloss.Color("#1E1E30"), + PanelElevated: lipgloss.Color("#252540"), + StatusBar: lipgloss.Color("#1E1E30"), + Footer: lipgloss.Color("#101010"), + Border: lipgloss.Color("#303050"), + BorderActive: lipgloss.Color("#A0A0FF"), + Text: lipgloss.Color("#E0E0F0"), + Muted: lipgloss.Color("#8888AA"), + Accent: lipgloss.Color("#C0C0FF"), + Info: lipgloss.Color("#8080FF"), + Success: lipgloss.Color("#80FF80"), + Selection: lipgloss.Color("#252540"), + Hover: lipgloss.Color("#2A2A48"), + Marked: lipgloss.Color("#FF6080"), + Warning: lipgloss.Color("#FFB040"), + Danger: lipgloss.Color("#FF6080"), + ActivePath: lipgloss.Color("#8080FF"), + ConfirmButton: lipgloss.Color("#80FF80"), + CancelButton: lipgloss.Color("#FF6080"), + ProgressFill: lipgloss.Color("#C0C0FF"), + ProgressEmpty: lipgloss.Color("#303050"), + HelpNav: lipgloss.Color("#A0A0FF"), + HelpPanels: lipgloss.Color("#FFB040"), + HelpDialogs: lipgloss.Color("#C0C0FF"), + HelpMouse: lipgloss.Color("#FF6080"), + Folder: lipgloss.Color("#8080FF"), + TextFile: lipgloss.Color("#80FF80"), + ConfigFile: lipgloss.Color("#FFB040"), + ExecFile: lipgloss.Color("#FF8040"), + ImageFile: lipgloss.Color("#8080FF"), + BinaryFile: lipgloss.Color("#C0C0FF"), + FooterKey: lipgloss.Color("#8080FF"), + }, nil + + default: + return Palette{}, fmt.Errorf("unknown theme %q", name) + } +} diff --git a/src/vcom-0.2.5/internal/ui/icon_mode.go b/src/vcom-0.2.5/internal/ui/icon_mode.go new file mode 100644 index 0000000..b73f7fd --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/icon_mode.go @@ -0,0 +1,37 @@ +package ui + +import ( + "os/exec" + "runtime" + "strings" +) + +func resolveIconMode(mode string) (bool, string) { + switch strings.ToLower(strings.TrimSpace(mode)) { + case "ascii": + return false, "Icon mode: ASCII" + case "nerd": + return true, "" + case "", "auto": + default: + return true, "" + } + + if runtime.GOOS != "linux" { + return true, "" + } + if _, err := exec.LookPath("fc-list"); err != nil { + return true, "" + } + + out, err := exec.Command("fc-list", ":", "family").Output() + if err != nil { + return true, "" + } + text := strings.ToLower(string(out)) + if strings.Contains(text, "nerd font") { + return true, "" + } + + return false, "Nerd Font not found: using ASCII icons" +} diff --git a/src/vcom-0.2.5/internal/ui/image_overlay.go b/src/vcom-0.2.5/internal/ui/image_overlay.go new file mode 100644 index 0000000..292228a --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/image_overlay.go @@ -0,0 +1,416 @@ +package ui + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "fmt" + "image" + "image/png" + "io" + "os" + "os/exec" + "slices" + "strings" + + _ "image/gif" + _ "image/jpeg" + _ "image/png" +) + +type overlayRect struct { + x int + y int + width int + height int +} + +type imageOverlayManager struct { + cmd *exec.Cmd + stdin io.WriteCloser + running bool + identifier string + visible bool + backend string + backends []string + lastPath string + lastRect overlayRect + kittyTried bool + kittyOK bool +} + +const kittyImageID = 31337 +const assumedCellAspect = 0.5 +const kittyPixelsPerCell = 16 + +func minFloat(a float64, b float64) float64 { + if a < b { + return a + } + return b +} + +func newImageOverlayManager() *imageOverlayManager { + return &imageOverlayManager{identifier: "vcom-preview"} +} + +func (m *imageOverlayManager) isKittyTerminal() bool { + term := strings.ToLower(os.Getenv("TERM")) + termProgram := strings.ToLower(os.Getenv("TERM_PROGRAM")) + return os.Getenv("KITTY_WINDOW_ID") != "" || strings.Contains(term, "kitty") || strings.Contains(termProgram, "kitty") +} + +func (m *imageOverlayManager) canUseKitty() bool { + if !m.isKittyTerminal() { + return false + } + if m.kittyTried { + return m.kittyOK + } + m.kittyTried = true + m.kittyOK = true + return m.kittyOK +} + +func writeKittyEscape(control string, payload []byte) error { + if payload == nil { + _, err := fmt.Fprintf(os.Stdout, "\x1b_G%s\x1b\\", control) + return err + } + + encoded := base64.StdEncoding.EncodeToString(payload) + _, err := fmt.Fprintf(os.Stdout, "\x1b_G%s;%s\x1b\\", control, encoded) + return err +} + +func resizeNearest(src image.Image, target image.Point) image.Image { + bounds := src.Bounds() + srcSize := bounds.Size() + if target.X <= 0 || target.Y <= 0 || srcSize.X <= target.X && srcSize.Y <= target.Y { + return src + } + + dst := image.NewRGBA(image.Rect(0, 0, target.X, target.Y)) + for y := 0; y < target.Y; y++ { + srcY := bounds.Min.Y + (y * srcSize.Y / target.Y) + for x := 0; x < target.X; x++ { + srcX := bounds.Min.X + (x * srcSize.X / target.X) + dst.Set(x, y, src.At(srcX, srcY)) + } + } + return dst +} + +func scaleImageToRect(img image.Image, rect overlayRect) image.Image { + size := img.Bounds().Size() + if size.X <= 0 || size.Y <= 0 || rect.width <= 0 || rect.height <= 0 { + return img + } + + maxWidth := rect.width * kittyPixelsPerCell + maxHeight := rect.height * kittyPixelsPerCell + if maxWidth <= 0 || maxHeight <= 0 { + return img + } + + scale := minFloat(float64(maxWidth)/float64(size.X), float64(maxHeight)/float64(size.Y)) + if scale >= 1 { + return img + } + + target := image.Point{ + X: max(int(float64(size.X)*scale), 1), + Y: max(int(float64(size.Y)*scale), 1), + } + return resizeNearest(img, target) +} + +func loadKittyPayload(path string, rect overlayRect) ([]byte, image.Point, error) { + file, err := os.Open(path) + if err != nil { + return nil, image.Point{}, err + } + defer file.Close() + + img, _, err := image.Decode(file) + if err != nil { + return nil, image.Point{}, err + } + + img = scaleImageToRect(img, rect) + + var buf bytes.Buffer + if err := png.Encode(&buf, img); err != nil { + return nil, image.Point{}, err + } + return buf.Bytes(), img.Bounds().Size(), nil +} + +func kittyPlacementControl(rect overlayRect, size image.Point) string { + if size.X <= 0 || size.Y <= 0 { + return fmt.Sprintf("a=T,f=100,t=d,i=%d,c=%d,C=1", kittyImageID, rect.width) + } + + availableAspect := (float64(rect.width) * assumedCellAspect) / float64(rect.height) + imageAspect := float64(size.X) / float64(size.Y) + if imageAspect >= availableAspect { + return fmt.Sprintf("a=T,f=100,t=d,i=%d,c=%d,C=1", kittyImageID, rect.width) + } + return fmt.Sprintf("a=T,f=100,t=d,i=%d,r=%d,C=1", kittyImageID, rect.height) +} + +func (m *imageOverlayManager) showWithKitty(path string, rect overlayRect) error { + data, size, err := loadKittyPayload(path, rect) + if err != nil { + return err + } + + if err := writeKittyEscape(fmt.Sprintf("a=d,d=I,i=%d", kittyImageID), nil); err != nil { + return err + } + if _, err := fmt.Fprintf(os.Stdout, "\x1b7\x1b[%d;%dH", rect.y+1, rect.x+1); err != nil { + return err + } + + const chunkSize = 4096 + for offset := 0; offset < len(data); offset += chunkSize { + end := min(offset+chunkSize, len(data)) + chunk := data[offset:end] + more := 0 + if end < len(data) { + more = 1 + } + + control := fmt.Sprintf("m=%d", more) + if offset == 0 { + control = fmt.Sprintf("%s,m=%d", kittyPlacementControl(rect, size), more) + } + if err := writeKittyEscape(control, chunk); err != nil { + return err + } + } + + _, err = fmt.Fprint(os.Stdout, "\x1b8") + return err +} + +func (m *imageOverlayManager) clearKitty() { + _ = writeKittyEscape(fmt.Sprintf("a=d,d=I,i=%d", kittyImageID), nil) +} + +func (m *imageOverlayManager) backendOutput() string { + term := strings.ToLower(os.Getenv("TERM")) + order := make([]string, 0, 5) + switch { + case strings.Contains(term, "kitty"): + order = append(order, "kitty") + case os.Getenv("WAYLAND_DISPLAY") != "": + order = append(order, "wayland") + case os.Getenv("DISPLAY") != "": + order = append(order, "x11") + } + order = append(order, "wayland", "x11", "sixel", "kitty") + + unique := make([]string, 0, len(order)) + for _, backend := range order { + if !slices.Contains(unique, backend) { + unique = append(unique, backend) + } + } + return strings.Join(unique, ",") +} + +func (m *imageOverlayManager) backendList() []string { + if len(m.backends) != 0 { + return m.backends + } + m.backends = strings.Split(m.backendOutput(), ",") + return m.backends +} + +func (m *imageOverlayManager) startBackend(backend string) error { + cmd := exec.Command("ueberzugpp", "layer", "-o", backend) + stdin, err := cmd.StdinPipe() + if err != nil { + return err + } + cmd.Stdout = io.Discard + cmd.Stderr = io.Discard + if err := cmd.Start(); err != nil { + _ = stdin.Close() + return err + } + m.cmd = cmd + m.stdin = stdin + m.running = true + m.backend = backend + return nil +} + +func (m *imageOverlayManager) startLegacyBackend() error { + cmd := exec.Command("ueberzug", "layer", "--parser", "json") + stdin, err := cmd.StdinPipe() + if err != nil { + return err + } + cmd.Stdout = io.Discard + cmd.Stderr = io.Discard + if err := cmd.Start(); err != nil { + _ = stdin.Close() + return err + } + m.cmd = cmd + m.stdin = stdin + m.running = true + m.backend = "ueberzug" + return nil +} + +func (m *imageOverlayManager) ensureStarted() error { + if m.running { + return nil + } + + if _, err := exec.LookPath("ueberzugpp"); err == nil { + var lastErr error + for _, backend := range m.backendList() { + if err := m.startBackend(backend); err != nil { + lastErr = err + continue + } + // Probe command channel right away; some backends terminate instantly. + if err := m.send(map[string]any{ + "action": "remove", + "identifier": m.identifier, + }); err != nil { + lastErr = err + m.stop() + continue + } + return nil + } + if lastErr != nil { + return lastErr + } + } + + if _, err := exec.LookPath("ueberzug"); err == nil { + if err := m.startLegacyBackend(); err != nil { + return err + } + if err := m.send(map[string]any{ + "action": "remove", + "identifier": m.identifier, + }); err != nil { + m.stop() + return err + } + return nil + } + + return fmt.Errorf("could not start image overlay backend") +} + +func (m *imageOverlayManager) send(payload map[string]any) error { + if !m.running || m.stdin == nil { + return fmt.Errorf("overlay not running") + } + data, err := json.Marshal(payload) + if err != nil { + return err + } + _, err = io.WriteString(m.stdin, string(data)+"\n") + return err +} + +func (m *imageOverlayManager) show(path string, rect overlayRect) error { + if rect.width <= 1 || rect.height <= 1 { + return nil + } + if m.visible && m.lastPath == path && m.lastRect == rect { + return nil + } + + if m.canUseKitty() { + if m.backend == "ueberzugpp" { + m.hide() + } + if err := m.showWithKitty(path, rect); err == nil { + m.backend = "kitty" + m.visible = true + m.lastPath = path + m.lastRect = rect + return nil + } + } + + for i := 0; i < len(m.backendList()); i++ { + if err := m.ensureStarted(); err != nil { + return err + } + payload := map[string]any{ + "action": "add", + "identifier": m.identifier, + "path": path, + "x": rect.x, + "y": rect.y, + } + if m.backend == "ueberzug" { + payload["width"] = rect.width + payload["height"] = rect.height + } else { + payload["max_width"] = rect.width + payload["max_height"] = rect.height + payload["scaler"] = "fit_contain" + } + if err := m.send(payload); err == nil { + m.visible = true + m.lastPath = path + m.lastRect = rect + return nil + } + + m.stop() + if m.backend != "ueberzug" && len(m.backends) > 0 { + m.backends = append(m.backends[1:], m.backends[0]) + } else { + break + } + } + return fmt.Errorf("could not render image overlay") +} + +func (m *imageOverlayManager) hide() { + if !m.visible { + return + } + switch m.backend { + case "kitty": + m.clearKitty() + case "ueberzugpp", "ueberzug": + if m.running { + _ = m.send(map[string]any{ + "action": "remove", + "identifier": m.identifier, + }) + } + } + m.visible = false + m.lastPath = "" + m.lastRect = overlayRect{} +} + +func (m *imageOverlayManager) stop() { + m.hide() + if m.stdin != nil { + _ = m.stdin.Close() + m.stdin = nil + } + if m.cmd != nil && m.cmd.Process != nil { + _ = m.cmd.Process.Kill() + _, _ = m.cmd.Process.Wait() + } + m.cmd = nil + m.running = false + m.backend = "" +} diff --git a/src/vcom-0.2.5/internal/ui/keymap.go b/src/vcom-0.2.5/internal/ui/keymap.go new file mode 100644 index 0000000..9d8cdbd --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/keymap.go @@ -0,0 +1,97 @@ +package ui + +import "github.com/charmbracelet/bubbles/key" + +type KeyMap struct { + Help key.Binding + Visual key.Binding + Caret key.Binding + View key.Binding + Rename key.Binding + Info key.Binding + Archive key.Binding + SelectText key.Binding + ToggleHidden key.Binding + CycleTheme key.Binding + CycleSort key.Binding + SSH key.Binding + Mirror key.Binding + Up key.Binding + Down key.Binding + SelectUp key.Binding + SelectDown key.Binding + PageUp key.Binding + PageDown key.Binding + Open key.Binding + Back key.Binding + Switch key.Binding + Filter key.Binding + Refresh key.Binding + DirSize key.Binding + Copy key.Binding + Move key.Binding + Mkdir key.Binding + Delete key.Binding + Unpack key.Binding + Confirm key.Binding + Background key.Binding + ProgressCancel key.Binding + Cancel key.Binding + Quit key.Binding + HistoryBack key.Binding + HistoryForward key.Binding +} + +func DefaultKeyMap() KeyMap { + return KeyMap{ + Help: key.NewBinding(key.WithKeys("f1", "?"), key.WithHelp("F1/?", "help")), + Rename: key.NewBinding(key.WithKeys("f2", "r"), key.WithHelp("F2/r", "rename")), + View: key.NewBinding(key.WithKeys("f3", "v"), key.WithHelp("F3/v", "view")), + Visual: key.NewBinding(key.WithKeys("v"), key.WithHelp("v", "visual")), + Caret: key.NewBinding(key.WithKeys("i"), key.WithHelp("i", "caret")), + Archive: key.NewBinding(key.WithKeys("f4", "a"), key.WithHelp("F4/a", "archive")), + Info: key.NewBinding(key.WithKeys("f9", "o"), key.WithHelp("F9/o", "info")), + SelectText: key.NewBinding(key.WithKeys("ctrl+t"), key.WithHelp("C-t", "text select")), + ToggleHidden: key.NewBinding(key.WithKeys("."), key.WithHelp(".", "hidden")), + CycleTheme: key.NewBinding(key.WithKeys("t"), key.WithHelp("t", "select theme")), + CycleSort: key.NewBinding(key.WithKeys("g"), key.WithHelp("g", "sort")), + SSH: key.NewBinding(key.WithKeys("f12", "s"), key.WithHelp("F12/s", "ssh")), + Mirror: key.NewBinding(key.WithKeys("p"), key.WithHelp("p", "mirror pane")), + Up: key.NewBinding(key.WithKeys("up", "k"), key.WithHelp("↑/k", "up")), + Down: key.NewBinding(key.WithKeys("down", "j"), key.WithHelp("↓/j", "down")), + SelectUp: key.NewBinding(key.WithKeys("shift+up", "K"), key.WithHelp("S-↑/K", "select up")), + SelectDown: key.NewBinding(key.WithKeys("shift+down", "J"), key.WithHelp("S-↓/J", "select down")), + PageUp: key.NewBinding(key.WithKeys("pgup"), key.WithHelp("PgUp", "page up")), + PageDown: key.NewBinding(), + Filter: key.NewBinding(key.WithKeys("/"), key.WithHelp("/", "filter")), + Open: key.NewBinding(key.WithKeys("enter", "right"), key.WithHelp("Enter", "open")), + Back: key.NewBinding(key.WithKeys("backspace", "left"), key.WithHelp("←", "parent")), + Switch: key.NewBinding(key.WithKeys("tab", "h", "l"), key.WithHelp("Tab/h/l", "switch pane")), + Refresh: key.NewBinding(key.WithKeys("ctrl+r"), key.WithHelp("C-r", "refresh")), + DirSize: key.NewBinding(key.WithKeys(" "), key.WithHelp("Space", "dir size")), + Copy: key.NewBinding(key.WithKeys("f5", "c"), key.WithHelp("F5/c", "copy")), + Move: key.NewBinding(key.WithKeys("f6", "m"), key.WithHelp("F6/m", "move")), + Mkdir: key.NewBinding(key.WithKeys("f7", "n"), key.WithHelp("F7/n", "mkdir")), + Delete: key.NewBinding(key.WithKeys("f8", "delete", "x"), key.WithHelp("F8/x", "delete")), + Unpack: key.NewBinding(key.WithKeys("f11", "e"), key.WithHelp("F11/e", "unpack")), + Confirm: key.NewBinding(key.WithKeys("enter", "y"), key.WithHelp("Enter/y", "confirm")), + Background: key.NewBinding(key.WithKeys("b"), key.WithHelp("b", "background")), + ProgressCancel: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "cancel transfer")), + HistoryBack: key.NewBinding(key.WithKeys("alt+left"), key.WithHelp("A-←", "back")), + HistoryForward: key.NewBinding(key.WithKeys("alt+right"), key.WithHelp("A-→", "forward")), + Cancel: key.NewBinding(key.WithKeys("esc"), key.WithHelp("Esc", "cancel")), + Quit: key.NewBinding(key.WithKeys("f10", "q", "ctrl+c"), key.WithHelp("F10/q", "quit")), + } +} + +func (k KeyMap) ShortHelp() []key.Binding { + return []key.Binding{k.Help, k.Rename, k.View, k.Archive, k.Copy, k.Move, k.Mkdir, k.Delete, k.Info, k.Quit, k.Unpack, k.SSH} +} + +func (k KeyMap) FullHelp() [][]key.Binding { + return [][]key.Binding{ + {k.Help, k.Up, k.Down, k.SelectUp, k.SelectDown, k.Open, k.Back}, + {k.Rename, k.View, k.Caret, k.Archive, k.Copy, k.Move, k.Delete}, + {k.Unpack, k.SelectText, k.DirSize, k.Refresh, k.ToggleHidden, k.CycleSort, k.CycleTheme, k.Quit}, + } +} diff --git a/src/vcom-0.2.5/internal/ui/layout.go b/src/vcom-0.2.5/internal/ui/layout.go new file mode 100644 index 0000000..489089d --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/layout.go @@ -0,0 +1,52 @@ +package ui + +import tea "github.com/charmbracelet/bubbletea" + +// cyrillicToLatin maps Russian ЙЦУКЕН characters to their QWERTY positional +// equivalents. This allows all single-letter commands to work regardless of +// whether the user has a Russian or Latin keyboard layout active. +var cyrillicToLatin = map[rune]rune{ + // Lowercase — same physical key position + 'й': 'q', 'ц': 'w', 'у': 'e', 'к': 'r', 'е': 't', 'н': 'y', + 'г': 'u', 'ш': 'i', 'щ': 'o', 'з': 'p', 'х': '[', 'ъ': ']', + 'ф': 'a', 'ы': 's', 'в': 'd', 'а': 'f', 'п': 'g', 'р': 'h', + 'о': 'j', 'л': 'k', 'д': 'l', 'ж': ';', 'э': '\'', + 'я': 'z', 'ч': 'x', 'с': 'c', 'м': 'v', 'и': 'b', 'т': 'n', + 'ь': 'm', 'б': ',', 'ю': '.', 'ё': '`', + + // Uppercase — same physical key position with Shift + 'Й': 'Q', 'Ц': 'W', 'У': 'E', 'К': 'R', 'Е': 'T', 'Н': 'Y', + 'Г': 'U', 'Ш': 'I', 'Щ': 'O', 'З': 'P', 'Х': '{', 'Ъ': '}', + 'Ф': 'A', 'Ы': 'S', 'В': 'D', 'А': 'F', 'П': 'G', 'Р': 'H', + 'О': 'J', 'Л': 'K', 'Д': 'L', 'Ж': ':', 'Э': '"', + 'Я': 'Z', 'Ч': 'X', 'С': 'C', 'М': 'V', 'И': 'B', 'Т': 'N', + 'Ь': 'M', 'Б': '<', 'Ю': '>', 'Ё': '~', +} + +// translateKeyMsg translates Cyrillic characters in a KeyMsg to their Latin +// positional equivalents (ЙЦУКЕН → QWERTY). If no translation is needed, the +// original message is returned unchanged. +func translateKeyMsg(msg tea.KeyMsg) tea.KeyMsg { + if msg.Type != tea.KeyRunes || len(msg.Runes) == 0 { + return msg + } + translated := make([]rune, len(msg.Runes)) + changed := false + for i, r := range msg.Runes { + if latin, ok := cyrillicToLatin[r]; ok { + translated[i] = latin + changed = true + } else { + translated[i] = r + } + } + if !changed { + return msg + } + return tea.KeyMsg{ + Type: msg.Type, + Runes: translated, + Alt: msg.Alt, + Paste: msg.Paste, + } +} diff --git a/src/vcom-0.2.5/internal/ui/model.go b/src/vcom-0.2.5/internal/ui/model.go new file mode 100644 index 0000000..c2bb2d2 --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/model.go @@ -0,0 +1,6742 @@ +package ui + +import ( + "context" + "errors" + "fmt" + "io" + "log" + "os" + "os/exec" + "path" + "path/filepath" + "strings" + "time" + + "github.com/atotto/clipboard" + "github.com/charmbracelet/bubbles/key" + "github.com/charmbracelet/bubbles/textinput" + "github.com/charmbracelet/bubbles/viewport" + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" + "github.com/charmbracelet/x/ansi" + + "vcom/internal/config" + vfs "vcom/internal/fs" + "vcom/internal/fs/remote" + "vcom/internal/theme" +) + +const version = "v0.2.5" + +type modalKind int + +const ( + modalNone modalKind = iota + modalMkdir + modalRename + modalConfirm + modalCopyProgress + modalNotice + modalHelp + modalArchiveType + modalArchiveProgress + modalSSHConnect + modalThemeSelect +) + +type fileOpKind int + +const ( + opCopy fileOpKind = iota + opMove + opDelete + opPermanentDelete + opMkdir + opRename + opEdit + opView + opArchive + opExecute + opDeleteHost + opExtractArchive +) + +type pendingOperation struct { + kind fileOpKind + sourcePaths []string + targetDir string + overwrite bool + existingTargets int + stats vfs.TransferStats + + // Remote operation fields — non-nil when source/target is remote + srcClient *remote.SSHClient + dstClient *remote.SSHClient +} + +type modalState struct { + kind modalKind + title string + body string + note string + input textinput.Model + pending *pendingOperation +} + +type themeSelectorState struct { + names []string // all theme names in order + cursor int // current cursor index in the list + original string // the theme name before opening dialog (for Esc revert) +} + +type previewMsg struct { + entryPath string + preview vfs.Preview + remoteImageTemp string // temp file path for downloaded remote image, cleared on change +} + +type dirSizeMsg struct { + path string + size int64 + err error +} + +type opMsg struct { + kind fileOpKind + sourcePath string + targetPath string + err error +} + +type copyPlanMsg struct { + kind fileOpKind + sourcePaths []string + targetDir string + overwrite bool + existingTargets int + stats vfs.TransferStats + err error + + // Remote operation fields + srcClient *remote.SSHClient + dstClient *remote.SSHClient +} + +type copyProgressMsg struct { + jobID int + progress vfs.CopyProgress +} + +type deletePlanMsg struct { + kind fileOpKind + sourcePaths []string + stats vfs.TransferStats + err error + + // Remote operation — non-nil when source is remote + srcClient *remote.SSHClient +} + +type archivePlanMsg struct { + sourcePaths []string + targetDir string + stats vfs.TransferStats + err error +} + +type archiveProgressMsg struct { + jobID int + progress vfs.CopyProgress +} + +type archiveDoneMsg struct { + jobID int + sourcePaths []string + targetPath string + err error +} + +type copyDoneMsg struct { + jobID int + kind fileOpKind + sourcePaths []string + targetDir string + targetPath string + err error +} + +type dismissNoticeMsg struct{} +type dismissYankFlashMsg struct{} +type externalOpenMsg struct { + path string + err error +} + +type copyJobState struct { + id int + kind fileOpKind + sourcePaths []string + targetDir string + progress vfs.CopyProgress + overwrite bool + background bool + cancel context.CancelFunc + startedAt time.Time +} + +type archiveJobState struct { + id int + kind string // "archive" for creation, "extract" for extraction + sourcePaths []string + targetPath string + progress vfs.CopyProgress + background bool + cancel context.CancelFunc + startedAt time.Time +} + +type mouseClickState struct { + pane PaneID + index int + at time.Time +} + +type hoverState struct { + pane PaneID + index int + ok bool +} + +type Model struct { + cfg config.Config + configPath string + palette theme.Palette + keys KeyMap + nerdIcons bool + overlay *imageOverlayManager + + width int + height int + + left BrowserPane + right BrowserPane + active PaneID + infoMode bool + selectMode bool + cursorMode bool + cursorLine int + cursorCol int + visualMode bool + visualAnchor int + visualAnchorCol int + viewMode bool + viewPrevInfo bool + + previewModel viewport.Model + previewData vfs.Preview + + filterMode bool + filterQuery string + filterInput textinput.Model + filterPaneID PaneID + + modal modalState + status string + busy bool + + lastClick mouseClickState + hover hoverState + pendingY bool + yankFlashLine int + + copyJob *copyJobState + nextCopyJob int + copyProgress chan tea.Msg + copyPath string + + archiveJob *archiveJobState + nextArchiveJob int + archiveProgress chan tea.Msg + archiveFormat string + deleteKind string // "trash" or "permanent" — selected in delete modal + ssh *sshState + preSSHPath string // original path before entering SSH mode + themeSelector *themeSelectorState // nil when not in theme selector dialog + remoteImageTemp string // temp file of downloaded remote image, cleaned on change/quit +} + +func NewModel(cfg config.Config, configPath string) (Model, error) { + palette, err := theme.Resolve(cfg.UI.Theme) + if err != nil { + return Model{}, err + } + + home, err := os.UserHomeDir() + if err != nil { + return Model{}, fmt.Errorf("resolve home dir: %w", err) + } + + leftPath, err := resolveStartPath(cfg.Startup.LeftPath, home) + if err != nil { + return Model{}, err + } + rightPath, err := resolveStartPath(cfg.Startup.RightPath, home) + if err != nil { + return Model{}, err + } + + model := Model{ + cfg: cfg, + configPath: configPath, + palette: palette, + keys: DefaultKeyMap(), + overlay: newImageOverlayManager(), + left: BrowserPane{ID: PaneLeft, Path: leftPath}, + right: BrowserPane{ID: PaneRight, Path: rightPath}, + active: PaneLeft, + status: "Ready", + copyProgress: make(chan tea.Msg, 256), + archiveProgress: make(chan tea.Msg, 256), + } + model.nerdIcons, model.status = resolveIconMode(cfg.UI.IconMode) + if model.status == "" { + model.status = "Ready" + } + + filterInput := textinput.New() + filterInput.Placeholder = "filter by name…" + filterInput.CharLimit = 64 + filterInput.Width = 40 + model.filterInput = filterInput + + model.previewModel = viewport.New(0, 0) + + sshSt, err := newSSHState() + if err != nil { + // Non-fatal: SSH support will be unavailable + model.status = fmt.Sprintf("SSH init: %v", err) + } else { + model.ssh = sshSt + } + + // Apply saved session (overrides startup paths if a previous session exists) + applySession(&model) + + leftPreserve := model.left.LoadCursor(model.left.Path) + rightPreserve := model.right.LoadCursor(model.right.Path) + if err := model.reloadPane(PaneLeft, leftPreserve); err != nil { + return Model{}, err + } + if err := model.reloadPane(PaneRight, rightPreserve); err != nil { + return Model{}, err + } + return model, nil +} + +func (m Model) Init() tea.Cmd { + return m.loadPreviewCmd() +} + +func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + switch msg := msg.(type) { + case tea.WindowSizeMsg: + log.Printf("[EVENT] WindowSizeMsg: %dx%d", msg.Width, msg.Height) + m.width = msg.Width + m.height = msg.Height + m.resizePreview() + m.syncPreviewContent() + return m, nil + + case previewMsg: + log.Printf("[EVENT] previewMsg: path=%s kind=%s", msg.entryPath, msg.preview.Kind) + if selected, ok := m.activePane().Selected(); ok && selected.Path == msg.entryPath { + m.applyPreview(msg.preview) + // Track remote image temp file for cleanup + if msg.remoteImageTemp != "" { + if m.remoteImageTemp != "" && m.remoteImageTemp != msg.remoteImageTemp { + os.Remove(m.remoteImageTemp) + } + m.remoteImageTemp = msg.remoteImageTemp + } else if msg.preview.Kind != vfs.PreviewKindImage && m.remoteImageTemp != "" { + os.Remove(m.remoteImageTemp) + m.remoteImageTemp = "" + } + } + if m.selectMode && !m.viewMode && msg.preview.Kind != vfs.PreviewKindText { + m.selectMode = false + return m, enableMouseCmd() + } + if (m.cursorMode || m.visualMode) && msg.preview.Kind != vfs.PreviewKindText { + m.cursorMode = false + m.visualMode = false + m.status = "Text cursor mode: off" + } + return m, nil + + case dirSizeMsg: + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] dirSizeMsg failed: path=%s err=%v", msg.path, msg.err) + m.status = fmt.Sprintf("Dir size failed: %v", msg.err) + return m, nil + } + log.Printf("[EVENT] dirSizeMsg: path=%s size=%d", msg.path, msg.size) + m.applyDirSize(msg.path, msg.size) + m.status = fmt.Sprintf("Directory size calculated: %s", vfs.HumanSize(msg.size)) + return m, m.loadPreviewCmd() + + case sshConnectMsg: + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] sshConnectMsg failed: host=%s err=%v", msg.hostName, msg.err) + m.status = fmt.Sprintf("SSH connection failed: %v", msg.err) + return m, nil + } + if msg.client == nil { + log.Printf("[ERROR] sshConnectMsg: no client returned for host=%s", msg.hostName) + m.status = "SSH connection failed: no client returned" + return m, nil + } + pane := m.activePane() + host := m.ssh.store.FindByName(msg.hostName) + if host == nil { + msg.client.Close() + log.Printf("[ERROR] sshConnectMsg: host %q not found after connection", msg.hostName) + m.status = fmt.Sprintf("Host %q not found after connection", msg.hostName) + return m, nil + } + pane.PushRemote(RemoteMount{ + Host: *host, + RemotePath: "/", + Client: msg.client, + Connected: true, + }) + pane.Path = "/" + log.Printf("[ACTION] SSH connected: host=%s pane=%s remotePath=/", host.DisplayName(), pane.ID) + if err := m.reloadRemotePane(pane.ID, ""); err != nil { + log.Printf("[ERROR] reloadRemotePane after SSH: %v", err) + m.status = fmt.Sprintf("Remote dir: %v", err) + return m, nil + } + if m.ssh != nil { + m.ssh.connectedHosts[msg.hostName] = true + } + m.status = fmt.Sprintf("Connected to %s", host.DisplayName()) + return m, m.loadPreviewCmd() + + case sshAddHostResultMsg: + m.busy = false + if m.ssh != nil { + m.ssh.testingConn = false + } + if msg.err != nil { + log.Printf("[ERROR] sshAddHostResultMsg: connection test failed: %v", msg.err) + m.status = fmt.Sprintf("Connection failed: %v", msg.err) + return m, nil + } + + log.Printf("[ACTION] sshAddHostResultMsg: connection OK, saving host %q", msg.host.Name) + if m.ssh == nil { + m.status = "SSH not available" + return m, nil + } + if err := m.ssh.store.AddHost(msg.host); err != nil { + m.status = fmt.Sprintf("Failed to save host: %v", err) + return m, nil + } + + m.status = fmt.Sprintf("Host %q added and verified", msg.host.Name) + + // Refresh the SSH host list if currently on it + pane := m.activePane() + if pane.Path == "ssh://" { + entries := buildSSHHostEntries(m.ssh.store, m.ssh.connectedHosts) + pane.SetEntries(entries, "") + } + return m, nil + + case opMsg: + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] opMsg failed: kind=%d sourcePath=%s err=%v", msg.kind, msg.sourcePath, msg.err) + m.status = msg.err.Error() + return m, nil + } + + m.modal = modalState{} + + // Capture current selections BEFORE switch, so mkdir/rename can override + leftSelection := selectedName(&m.left) + rightSelection := selectedName(&m.right) + + switch msg.kind { + case opCopy: + log.Printf("[ACTION] opMsg: Copy done — targetPath=%s", msg.targetPath) + m.status = fmt.Sprintf("Copied to %s", msg.targetPath) + m.activePane().ClearMarks() + case opMove: + log.Printf("[ACTION] opMsg: Move done — targetPath=%s", msg.targetPath) + m.status = fmt.Sprintf("Moved to %s", msg.targetPath) + m.activePane().ClearMarks() + case opDelete: + log.Printf("[ACTION] opMsg: Delete done — moved %s to trash", msg.sourcePath) + m.status = "Moved to trash" + m.activePane().ClearMarks() + // Move cursor to the item above if not at the top. + // If already at the top (cursor == 0), stay at position 0 — + // the next entry shifts into the deleted item's place. + active := m.activePane() + if active.Cursor > 0 { + active.Cursor-- + } + if m.active == PaneLeft { + leftSelection = "" + } else { + rightSelection = "" + } + case opPermanentDelete: + log.Printf("[ACTION] opMsg: PermanentDelete done — sourcePath=%s", msg.sourcePath) + m.status = "Permanently deleted" + m.activePane().ClearMarks() + // Move cursor to the item above if not at the top. + // If already at the top (cursor == 0), stay at position 0 — + // the next entry shifts into the deleted item's place. + active := m.activePane() + if active.Cursor > 0 { + active.Cursor-- + } + if m.active == PaneLeft { + leftSelection = "" + } else { + rightSelection = "" + } + case opMkdir: + log.Printf("[ACTION] opMsg: Mkdir done — targetPath=%s", msg.targetPath) + m.status = fmt.Sprintf("Created %s", msg.targetPath) + dirName := filepath.Base(msg.targetPath) + if m.active == PaneLeft { + leftSelection = dirName + } else { + rightSelection = dirName + } + case opRename: + log.Printf("[ACTION] opMsg: Rename done — targetPath=%s", msg.targetPath) + m.status = fmt.Sprintf("Renamed to %s", filepath.Base(msg.targetPath)) + if msg.targetPath != "" { + renamed := filepath.Base(msg.targetPath) + if m.active == PaneLeft { + leftSelection = renamed + } else { + rightSelection = renamed + } + } + case opEdit: + m.status = "Editor closed" + return m, tea.Batch(m.loadPreviewCmd(), enableMouseCmd()) + case opView: + m.status = "Viewer closed" + return m, enableMouseCmd() + case opExecute: + m.status = "Executable closed" + return m, tea.Batch(m.loadPreviewCmd(), enableMouseCmd()) + } + + // Reload panes — use remote reload for remote mounts + if m.left.InRemote() { + _ = m.reloadRemotePane(PaneLeft, leftSelection) + } else { + _ = m.reloadPane(PaneLeft, leftSelection) + } + if m.right.InRemote() { + _ = m.reloadRemotePane(PaneRight, rightSelection) + } else { + _ = m.reloadPane(PaneRight, rightSelection) + } + + // For copy/move (including remote SFTP), position cursor on the + // newly created item in the passive (target) pane. + if (msg.kind == opCopy || msg.kind == opMove) && msg.targetPath != "" { + targetName := strings.ToLower(filepath.Base(msg.targetPath)) + passive := m.passivePane() + if idx := vfs.FindSelected(passive.Entries, targetName); idx >= 0 { + passive.Cursor = idx + if passive.Offset > idx { + passive.Offset = idx + } + } + } + + return m, m.loadPreviewCmd() + + case copyPlanMsg: + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] copyPlanMsg: err=%v", msg.err) + m.status = msg.err.Error() + return m, nil + } + + remoteInfo := "" + if msg.srcClient != nil { + remoteInfo = " source=remote" + } + if msg.dstClient != nil { + remoteInfo += " target=remote" + } + log.Printf("[PLAN] copyPlanMsg: kind=%d sources=%d files=%d size=%d targetDir=%s%s", + msg.kind, len(msg.sourcePaths), msg.stats.FilesTotal, msg.stats.BytesTotal, msg.targetDir, remoteInfo) + + verb := operationVerb(msg.kind) + title := fmt.Sprintf("%s selected entry?", strings.Title(verb)) + if msg.srcClient != nil || msg.dstClient != nil { + title = fmt.Sprintf("%s selected entry via SFTP?", strings.Title(verb)) + } + body := strings.Join([]string{ + fmt.Sprintf("Items: %d", len(msg.sourcePaths)), + fmt.Sprintf("Files: %d", msg.stats.FilesTotal), + fmt.Sprintf("Size: %s", formatSize(msg.stats.BytesTotal, true)), + }, "\n") + note := "confirm-actions" + m.openConfirmModal(title, body, note, pendingOperation{ + kind: msg.kind, + sourcePaths: append([]string(nil), msg.sourcePaths...), + targetDir: msg.targetDir, + overwrite: msg.overwrite, + existingTargets: msg.existingTargets, + stats: msg.stats, + srcClient: msg.srcClient, + dstClient: msg.dstClient, + }) + return m, nil + + case deletePlanMsg: + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] deletePlanMsg: err=%v", msg.err) + m.status = msg.err.Error() + return m, nil + } + + log.Printf("[PLAN] deletePlanMsg: kind=%d sources=%d files=%d size=%d remote=%v", + msg.kind, len(msg.sourcePaths), msg.stats.FilesTotal, msg.stats.BytesTotal, msg.srcClient != nil) + + title := "Move selected entr" + pluralSuffix(len(msg.sourcePaths), "y", "ies") + " to trash?" + if msg.srcClient != nil { + title = "Delete selected entr" + pluralSuffix(len(msg.sourcePaths), "y", "ies") + " from remote?" + } else if m.deleteKind == "permanent" { + title = "Permanently delete selected entr" + pluralSuffix(len(msg.sourcePaths), "y", "ies") + "?" + } + bodyLines := []string{ + fmt.Sprintf("Items: %d", len(msg.sourcePaths)), + fmt.Sprintf("Files: %d", msg.stats.FilesTotal), + fmt.Sprintf("Size: %s", formatSize(msg.stats.BytesTotal, true)), + } + note := "confirm-actions" + if msg.srcClient == nil { + note = fmt.Sprintf("Mode: %s (D/d to change)\nEnter / y to confirm, Esc / n to cancel", m.deleteKind) + } + m.openConfirmModal( + title, + strings.Join(bodyLines, "\n"), + note, + pendingOperation{ + kind: msg.kind, + sourcePaths: append([]string(nil), msg.sourcePaths...), + stats: msg.stats, + srcClient: msg.srcClient, + }, + ) + return m, nil + + case archivePlanMsg: + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] archivePlanMsg: err=%v", msg.err) + m.status = msg.err.Error() + return m, nil + } + + log.Printf("[PLAN] archivePlanMsg: sources=%d files=%d size=%d targetDir=%s", + len(msg.sourcePaths), msg.stats.FilesTotal, msg.stats.BytesTotal, msg.targetDir) + + m.archiveFormat = "zip" + bodyLines := []string{ + fmt.Sprintf("Items: %d", len(msg.sourcePaths)), + fmt.Sprintf("Files: %d", msg.stats.FilesTotal), + fmt.Sprintf("Size: %s", formatSize(msg.stats.BytesTotal, true)), + } + m.modal = modalState{ + kind: modalArchiveType, + title: "Archive selected files?", + body: strings.Join(bodyLines, "\n"), + note: fmt.Sprintf( + "Format: %s (f to change)\nEnter / y to confirm, Esc / n to cancel", + m.archiveFormat, + ), + pending: &pendingOperation{ + kind: opArchive, + sourcePaths: append([]string(nil), msg.sourcePaths...), + targetDir: msg.targetDir, + stats: msg.stats, + }, + } + return m, nil + + case archiveProgressMsg: + if m.archiveJob == nil || msg.jobID != m.archiveJob.id { + return m, nil + } + m.archiveJob.progress = msg.progress + if m.archiveJob.background { + m.status = formatArchiveStatus(msg.progress) + } + log.Printf("[PROGRESS] archive: job=%d files=%d/%d bytes=%d/%d", + msg.jobID, msg.progress.FilesDone, msg.progress.FilesTotal, + msg.progress.BytesDone, msg.progress.BytesTotal) + return m, waitArchiveProgressCmd(m.archiveProgress) + + case archiveDoneMsg: + if m.archiveJob == nil || msg.jobID != m.archiveJob.id { + return m, nil + } + + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] archiveDoneMsg: job=%d kind=%s err=%v", msg.jobID, m.archiveJob.kind, msg.err) + activeSelection := selectedName(m.activePane()) + _ = m.reloadPane(PaneLeft, activeSelection) + _ = m.reloadPane(PaneRight, activeSelection) + if msg.err == context.Canceled { + switch m.archiveJob.kind { + case "extract": + m.status = "Extraction cancelled" + case "delete": + m.status = "Delete cancelled" + default: + m.status = "Archiving cancelled" + } + } else { + switch m.archiveJob.kind { + case "extract": + m.status = fmt.Sprintf("Extraction failed: %v", msg.err) + case "delete": + m.status = fmt.Sprintf("Delete failed: %v", msg.err) + default: + m.status = fmt.Sprintf("Archiving failed: %v", msg.err) + } + } + m.archiveJob = nil + if m.modal.kind == modalArchiveProgress { + m.modal = modalState{} + } + return m, m.loadPreviewCmd() + } + + // Extraction completion — reload only the passive pane + if m.archiveJob.kind == "extract" { + log.Printf("[DONE] extractDoneMsg: job=%d targetDir=%s source=%s", msg.jobID, msg.targetPath, msg.sourcePaths[0]) + m.status = fmt.Sprintf("Extracted to %s", msg.targetPath) + targetID := PaneRight + if m.active == PaneRight { + targetID = PaneLeft + } + background := m.archiveJob.background + m.archiveJob = nil + cmd := m.loadPreviewCmd() + _ = m.reloadPane(targetID, "") + if m.modal.kind == modalArchiveProgress { + m.modal = modalState{} + } + if background { + m.modal = modalState{ + kind: modalNotice, + title: "Extraction complete", + body: "Archive extracted successfully.", + note: "Press Esc to close", + } + } + return m, cmd + } + + // Delete completion — reload both panes, clear marks + if m.archiveJob.kind == "delete" { + log.Printf("[DONE] deleteDoneMsg: job=%d sources=%d", msg.jobID, len(msg.sourcePaths)) + sourceCount := len(m.archiveJob.sourcePaths) + verb := "moved to trash" + if m.archiveJob.progress.Stage == "delete permanently" { + verb = "deleted" + } + m.status = fmt.Sprintf("%d entr%s %s", sourceCount, pluralSuffix(sourceCount, "y", "ies"), verb) + activeSelection := selectedName(m.activePane()) + _ = m.reloadPane(PaneLeft, activeSelection) + _ = m.reloadPane(PaneRight, activeSelection) + background := m.archiveJob.background + m.archiveJob = nil + m.activePane().ClearMarks() + + cmd := m.loadPreviewCmd() + if m.modal.kind == modalArchiveProgress { + m.modal = modalState{} + } + if background { + m.modal = modalState{ + kind: modalNotice, + title: "Delete complete", + body: fmt.Sprintf("%d entr%s %s.", sourceCount, pluralSuffix(sourceCount, "y", "ies"), verb), + note: "Press Esc to close", + } + } + return m, cmd + } + + // Archive creation completion + log.Printf("[DONE] archiveDoneMsg: job=%d targetPath=%s sources=%d", msg.jobID, msg.targetPath, len(msg.sourcePaths)) + m.status = fmt.Sprintf("Archived %d entr%s to %s", len(msg.sourcePaths), pluralSuffix(len(msg.sourcePaths), "y", "ies"), msg.targetPath) + activeSelection := selectedName(m.activePane()) + _ = m.reloadPane(PaneLeft, activeSelection) + _ = m.reloadPane(PaneRight, activeSelection) + background := m.archiveJob.background + sourceCount := len(m.archiveJob.sourcePaths) + m.archiveJob = nil + m.activePane().ClearMarks() + + cmd := m.loadPreviewCmd() + if m.modal.kind == modalArchiveProgress { + m.modal = modalState{} + } + if background { + doneBody := fmt.Sprintf("%d entr%s archived successfully.", sourceCount, pluralSuffix(sourceCount, "y", "ies")) + if sourceCount == 1 && len(msg.sourcePaths) == 1 { + doneBody = filepath.Base(msg.sourcePaths[0]) + " archived successfully." + } + m.modal = modalState{ + kind: modalNotice, + title: "Archive complete", + body: doneBody, + note: "Press Esc to close", + } + } + return m, cmd + + case copyProgressMsg: + if m.copyJob == nil || msg.jobID != m.copyJob.id { + return m, nil + } + m.copyJob.progress = msg.progress + if m.copyJob.background { + m.status = formatCopyStatus(m.copyJob.kind, msg.progress) + } + log.Printf("[PROGRESS] copy: job=%d kind=%d file=%s files=%d/%d bytes=%d/%d", + msg.jobID, m.copyJob.kind, msg.progress.CurrentPath, + msg.progress.FilesDone, msg.progress.FilesTotal, + msg.progress.BytesDone, msg.progress.BytesTotal) + return m, waitCopyProgressCmd(m.copyProgress) + + case copyDoneMsg: + if m.copyJob == nil || msg.jobID != m.copyJob.id { + return m, nil + } + + m.busy = false + if msg.err != nil { + log.Printf("[ERROR] copyDoneMsg: job=%d kind=%d err=%v targetDir=%s", + msg.jobID, msg.kind, msg.err, msg.targetDir) + activeSelection := selectedName(m.activePane()) + if m.left.InRemote() { + _ = m.reloadRemotePane(PaneLeft, activeSelection) + } else { + _ = m.reloadPane(PaneLeft, activeSelection) + } + if m.right.InRemote() { + _ = m.reloadRemotePane(PaneRight, activeSelection) + } else { + _ = m.reloadPane(PaneRight, activeSelection) + } + if msg.err == context.Canceled { + m.status = strings.Title(operationVerb(msg.kind)) + " cancelled" + } else { + m.status = fmt.Sprintf("%s failed: %v", strings.Title(operationVerb(msg.kind)), msg.err) + } + m.copyJob = nil + if m.modal.kind == modalCopyProgress { + m.modal = modalState{} + } + return m, m.loadPreviewCmd() + } + + log.Printf("[DONE] copyDoneMsg: job=%d kind=%d targetDir=%s sources=%d", + msg.jobID, msg.kind, msg.targetDir, len(msg.sourcePaths)) + m.status = fmt.Sprintf("%s %d entr%s to %s", operationDoneLabel(msg.kind), len(msg.sourcePaths), pluralSuffix(len(msg.sourcePaths), "y", "ies"), msg.targetDir) + activeSelection := selectedName(m.activePane()) + if m.left.InRemote() { + _ = m.reloadRemotePane(PaneLeft, activeSelection) + } else { + _ = m.reloadPane(PaneLeft, activeSelection) + } + if m.right.InRemote() { + _ = m.reloadRemotePane(PaneRight, activeSelection) + } else { + _ = m.reloadPane(PaneRight, activeSelection) + } + + // Position cursor on the newly created item in the passive (target) pane + if (msg.kind == opCopy || msg.kind == opMove) && msg.targetPath != "" { + targetName := strings.ToLower(filepath.Base(msg.targetPath)) + passive := m.passivePane() + if idx := vfs.FindSelected(passive.Entries, targetName); idx >= 0 { + passive.Cursor = idx + if passive.Offset > idx { + passive.Offset = idx + } + } + } + + background := m.copyJob.background + kind := m.copyJob.kind + sourceCount := len(m.copyJob.sourcePaths) + m.copyJob = nil + m.activePane().ClearMarks() + + cmd := m.loadPreviewCmd() + if m.modal.kind == modalCopyProgress { + m.modal = modalState{} + } + if background { + doneWord := "copied" + if kind == opMove { + doneWord = "moved" + } + doneBody := fmt.Sprintf("%d entr%s %s successfully.", sourceCount, pluralSuffix(sourceCount, "y", "ies"), doneWord) + if sourceCount == 1 && len(msg.sourcePaths) == 1 { + doneBody = filepath.Base(msg.sourcePaths[0]) + " " + doneWord + " successfully." + } + m.modal = modalState{ + kind: modalNotice, + title: strings.Title(operationVerb(kind)) + " complete", + body: doneBody, + } + cmd = tea.Batch(cmd, dismissNoticeCmd(time.Second)) + } + return m, cmd + + case dismissNoticeMsg: + if m.modal.kind == modalNotice { + m.modal = modalState{} + } + return m, nil + + case dismissYankFlashMsg: + m.yankFlashLine = -1 + m.syncPreviewContent() + return m, nil + + case externalOpenMsg: + if msg.err != nil { + m.status = fmt.Sprintf("Open failed: %v", msg.err) + return m, nil + } + m.status = fmt.Sprintf("Opened %s", filepath.Base(msg.path)) + return m, nil + + case tea.KeyMsg: + msg = translateKeyMsg(msg) + if msg.String() != "y" { + m.pendingY = false + } + if m.modal.kind != modalNone { + return m.handleModalKey(msg) + } + if m.viewMode { + if m.previewData.Kind == vfs.PreviewKindText && m.infoMode && !m.selectMode { + switch { + case key.Matches(msg, m.keys.Visual): + return m.toggleVisualMode() + case msg.String() == "y": + return m.yankVisualSelection() + } + } + switch { + case key.Matches(msg, m.keys.Cancel): + if m.visualMode { + return m.exitVisualMode("Visual mode: off") + } + return m.exitViewMode() + case key.Matches(msg, m.keys.View), msg.String() == "q": + return m.exitViewMode() + case key.Matches(msg, m.keys.Up): + if m.visualMode { + m.moveTextCursorLine(-1) + } else { + m.previewModel.LineUp(1) + } + return m, nil + case msg.String() == "left": + if m.visualMode { + m.moveTextCursorCol(-1) + } + return m, nil + case msg.String() == "h": + if m.visualMode { + m.moveTextCursorCol(-1) + } + return m, nil + case key.Matches(msg, m.keys.Down): + if m.visualMode { + m.moveTextCursorLine(1) + } else { + m.previewModel.LineDown(1) + } + return m, nil + case msg.String() == "right": + if m.visualMode { + m.moveTextCursorCol(1) + } + return m, nil + case msg.String() == "l": + if m.visualMode { + m.moveTextCursorCol(1) + } + return m, nil + case key.Matches(msg, m.keys.PageUp): + if m.visualMode { + m.moveTextCursorLine(-max(m.previewModel.Height-2, 1)) + } else { + m.previewModel.LineUp(max(m.previewModel.Height-2, 1)) + } + return m, nil + case key.Matches(msg, m.keys.PageDown): + if m.visualMode { + m.moveTextCursorLine(max(m.previewModel.Height-2, 1)) + } else { + m.previewModel.LineDown(max(m.previewModel.Height-2, 1)) + } + return m, nil + default: + return m, nil + } + } + + if (m.cursorMode || m.visualMode) && m.previewData.Kind == vfs.PreviewKindText { + switch { + case key.Matches(msg, m.keys.Caret): + return m.toggleCaretMode() + case key.Matches(msg, m.keys.Visual): + if m.visualMode { + return m.exitVisualMode("Visual mode: off") + } + if m.cursorMode { + return m.toggleVisualMode() + } + return m, nil + case key.Matches(msg, m.keys.Cancel), msg.String() == "q": + if m.visualMode { + return m.exitVisualMode("Visual mode: off") + } + return m.exitCaretMode("Caret mode: off") + case msg.String() == "y": + if !m.visualMode { + if m.pendingY { + m.pendingY = false + return m.yankCursorLine() + } + m.pendingY = true + m.status = "Press y again to copy current line" + return m, nil + } + return m.yankVisualSelection() + case key.Matches(msg, m.keys.Up): + m.moveTextCursorLine(-1) + return m, nil + case msg.String() == "left": + m.moveTextCursorCol(-1) + return m, nil + case msg.String() == "h": + m.moveTextCursorCol(-1) + return m, nil + case key.Matches(msg, m.keys.Down): + m.moveTextCursorLine(1) + return m, nil + case msg.String() == "right": + m.moveTextCursorCol(1) + return m, nil + case msg.String() == "l": + m.moveTextCursorCol(1) + return m, nil + case key.Matches(msg, m.keys.PageUp): + m.moveTextCursorLine(-max(m.previewModel.Height-2, 1)) + return m, nil + case key.Matches(msg, m.keys.PageDown): + m.moveTextCursorLine(max(m.previewModel.Height-2, 1)) + return m, nil + case msg.String() == "w": + m.moveTextCursorWordForward() + return m, nil + case msg.String() == "b": + m.moveTextCursorWordBackward() + return m, nil + default: + return m, nil + } + } + + // Copy file path when info mode is open + if m.infoMode && m.copyPath != "" { + switch msg.String() { + case "y", "Y", "ctrl+c": + if err := clipboard.WriteAll(m.copyPath); err != nil { + m.status = fmt.Sprintf("Copy path error: %v", err) + } else { + m.status = fmt.Sprintf("Path copied: %s", m.copyPath) + } + return m, nil + } + } + + // Filter mode: route keys to the filter input + if m.filterMode { + switch { + case msg.String() == "esc": + log.Printf("[KEY] Filter: Esc — clear filter") + m.filterQuery = "" + m.filterInput.SetValue("") + m.filterInput.Blur() + m.filterMode = false + m.status = "Filter cleared" + return m, nil + case key.Matches(msg, m.keys.Confirm): + log.Printf("[KEY] Filter: Enter — query=%s", m.filterQuery) + m.filterMode = false + m.filterInput.Blur() + m.status = fmt.Sprintf("Filter: %s", m.filterQuery) + return m, nil + case key.Matches(msg, m.keys.Up): + m.moveFilteredCursor(-1) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.Down): + m.moveFilteredCursor(1) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.PageUp): + m.moveFilteredCursor(-max(m.bodyHeight()-6, 5)) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.PageDown): + m.moveFilteredCursor(max(m.bodyHeight()-6, 5)) + return m, m.loadPreviewCmd() + default: + var cmd tea.Cmd + m.filterInput, cmd = m.filterInput.Update(msg) + m.filterQuery = m.filterInput.Value() + m.snapFilterCursor() + return m, cmd + } + } + + // Toggle filter mode — attaches filter to the currently active pane + if key.Matches(msg, m.keys.Filter) { + log.Printf("[KEY] Filter toggle — pane=%s", m.active) + m.filterMode = true + m.filterPaneID = m.active + m.filterInput.Focus() + m.filterInput.SetValue(m.filterQuery) + m.status = "Filter: type to filter, Enter to confirm, Esc to clear" + return m, nil + } + + // Log pane state for every key event + activePane := m.activePane() + remotePrefix := "" + if activePane.InRemote() { + remotePrefix = " [REMOTE]" + } + _ = remotePrefix // used in logs below + + switch { + case key.Matches(msg, m.keys.Quit): + log.Printf("[KEY] Quit — exiting application") + m.saveSession() + m.cleanupArchiveMounts() + m.cleanupImageOverlay() + m.cleanupRemoteImageTemp() + return m, tea.Quit + case key.Matches(msg, m.keys.Help): + log.Printf("[KEY] Help — open help modal") + m.openHelpModal() + return m, nil + case key.Matches(msg, m.keys.Rename): + log.Printf("[KEY] Rename — active=%s", m.active) + m.openRenameModal() + return m, nil + case key.Matches(msg, m.keys.Cancel), msg.String() == "q": + if m.filterQuery != "" && m.filterPaneID == m.active { + log.Printf("[KEY] Esc — clear filter (active=%s)", m.active) + m.clearFilter() + m.status = "Filter cleared" + return m, nil + } + if m.infoMode { + log.Printf("[KEY] Esc/q — close info pane") + m.infoMode = false + m.selectMode = false + m.cursorMode = false + m.visualMode = false + m.copyPath = "" + m.status = "Info pane closed" + return m, nil + } + if len(m.activePane().MarkedEntries()) > 0 { + log.Printf("[KEY] Esc — clear selection (%d items)", len(m.activePane().MarkedEntries())) + m.activePane().ClearMarks() + m.status = "Selection cleared" + return m, m.loadPreviewCmd() + } + return m, nil + case key.Matches(msg, m.keys.View): + return m.handleView() + case key.Matches(msg, m.keys.Caret): + log.Printf("[KEY] Caret mode toggle") + return m.toggleCaretMode() + case key.Matches(msg, m.keys.Visual): + if m.cursorMode { + log.Printf("[KEY] Visual mode toggle") + return m.toggleVisualMode() + } + return m, nil + case key.Matches(msg, m.keys.Archive): + return m.handleArchive() + case key.Matches(msg, m.keys.Info): + log.Printf("[KEY] Info toggle") + return m.toggleInfo() + case key.Matches(msg, m.keys.SelectText): + log.Printf("[KEY] SelectText toggle") + return m.toggleSelectMode() + case key.Matches(msg, m.keys.ToggleHidden): + log.Printf("[KEY] Toggle hidden files") + return m.toggleHidden() + case key.Matches(msg, m.keys.CycleTheme): + log.Printf("[KEY] Cycle theme") + return m.openThemeSelector() + case key.Matches(msg, m.keys.CycleSort): + log.Printf("[KEY] Cycle sort") + return m.cycleSort() + case key.Matches(msg, m.keys.Switch): + nextPane := PaneRight + if m.active == PaneRight { + nextPane = PaneLeft + } + log.Printf("[KEY] Switch pane — was=%s now=%s", m.active, nextPane) + m.left.ClearMarks() + m.right.ClearMarks() + if m.active == PaneLeft { + m.active = PaneRight + } else { + m.active = PaneLeft + } + m.status = fmt.Sprintf("Active pane: %s", strings.ToUpper(string(m.active))) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.Up): + m.moveCursor(-1) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.Down): + m.moveCursor(1) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.SelectUp): + m.selectMoveCursor(-1) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.SelectDown): + m.selectMoveCursor(1) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.PageUp): + m.moveCursor(-max(m.bodyHeight()-6, 5)) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.PageDown): + m.moveCursor(max(m.bodyHeight()-6, 5)) + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.Open): + return m.handleOpenSelected() + case key.Matches(msg, m.keys.Back): + log.Printf("[KEY] Back (goParent) — pane=%s path=%s", m.active, activePane.Path) + if err := m.goParent(); err != nil { + m.status = err.Error() + } + return m, m.loadPreviewCmd() + case key.Matches(msg, m.keys.HistoryBack): + log.Printf("[KEY] HistoryBack — pane=%s", m.active) + return m.historyBack() + case key.Matches(msg, m.keys.HistoryForward): + log.Printf("[KEY] HistoryForward — pane=%s", m.active) + return m.historyForward() + case key.Matches(msg, m.keys.Refresh): + log.Printf("[KEY] Refresh all panes") + return m.refreshAllPanes("Refreshed") + case key.Matches(msg, m.keys.DirSize): + return m.handleDirSize() + case key.Matches(msg, m.keys.Copy): + log.Printf("[KEY] Copy (F5) — active=%s path=%s%s", m.active, activePane.Path, remotePrefix) + return m.handleTransfer(opCopy) + case key.Matches(msg, m.keys.Move): + log.Printf("[KEY] Move (F6) — active=%s path=%s%s", m.active, activePane.Path, remotePrefix) + return m.handleTransfer(opMove) + case key.Matches(msg, m.keys.Mkdir): + log.Printf("[KEY] Mkdir (F7) — active=%s path=%s%s", m.active, activePane.Path, remotePrefix) + m.openMkdirModal() + return m, nil + case key.Matches(msg, m.keys.Delete): + return m.handleDelete() + case key.Matches(msg, m.keys.Unpack): + return m.handleUnpack() + case key.Matches(msg, m.keys.Mirror): + return m.handleMirrorPane() + case key.Matches(msg, m.keys.SSH): + log.Printf("[KEY] SSH toggle — active=%s path=%s", m.active, activePane.Path) + return m.handleSSHToggle() + } + + case tea.MouseMsg: + return m.handleMouse(msg) + } + + return m, nil +} + +func (m Model) View() string { + if m.width < 72 || m.height < 18 { + return lipgloss.NewStyle(). + Foreground(m.palette.Warning). + Padding(1, 2). + Render("Terminal is too small for vcom. Resize the window.") + } + + leftWidth, previewWidth, rightWidth := m.layoutWidths() + bodyHeight := m.bodyHeight() + gap := lipgloss.NewStyle(). + Width(m.cfg.UI.PaneGap). + Height(bodyHeight). + Background(m.palette.Panel). + Render("") + + // Filter is sticky: once activated on a pane it stays on that pane + // even after switching to the other pane with Tab. + leftPane := m.left + rightPane := m.right + if m.filterQuery != "" { + switch m.filterPaneID { + case PaneLeft: + leftPane = m.filteredPane(m.left) + case PaneRight: + rightPane = m.filteredPane(m.right) + } + } + + var panels string + if m.viewMode && m.previewData.Kind == vfs.PreviewKindImage { + panels = lipgloss.NewStyle(). + Width(m.width). + Height(bodyHeight). + Background(m.palette.Background). + Render("") + } else if m.viewMode && m.previewData.Kind == vfs.PreviewKindText { + panels = renderSelectionPane(m.previewData, &m.previewModel, m.palette, m.width, bodyHeight) + } else if m.viewMode { + panels = renderPreviewPane(m.previewData, &m.previewModel, m.cfg, m.palette, m.width, bodyHeight, m.nerdIcons) + } else if m.selectMode && m.infoMode { + panels = renderSelectionPane(m.previewData, &m.previewModel, m.palette, m.width, bodyHeight) + } else if m.infoMode { + if m.active == PaneLeft { + panels = lipgloss.JoinHorizontal( + lipgloss.Top, + renderPane(leftPane, m.cfg, m.palette, leftWidth, bodyHeight, true, m.hoverIndexFor(PaneLeft), m.nerdIcons), + gap, + renderPreviewPane(m.previewData, &m.previewModel, m.cfg, m.palette, previewWidth, bodyHeight, m.nerdIcons), + ) + } else { + panels = lipgloss.JoinHorizontal( + lipgloss.Top, + renderPreviewPane(m.previewData, &m.previewModel, m.cfg, m.palette, previewWidth, bodyHeight, m.nerdIcons), + gap, + renderPane(rightPane, m.cfg, m.palette, rightWidth, bodyHeight, true, m.hoverIndexFor(PaneRight), m.nerdIcons), + ) + } + } else { + panels = lipgloss.JoinHorizontal( + lipgloss.Top, + renderPane(leftPane, m.cfg, m.palette, leftWidth, bodyHeight, m.active == PaneLeft, m.hoverIndexFor(PaneLeft), m.nerdIcons), + gap, + renderPane(rightPane, m.cfg, m.palette, rightWidth, bodyHeight, m.active == PaneRight, m.hoverIndexFor(PaneRight), m.nerdIcons), + ) + } + + parts := make([]string, 0, 3) + parts = append(parts, panels) + if m.filterMode { + parts = append(parts, renderFilterBar(m)) + } + if m.cfg.UI.ShowFooter && !m.viewMode { + parts = append(parts, renderFooter(m)) + } + + view := lipgloss.NewStyle(). + Width(m.width). + Height(m.height). + Background(m.palette.Background). + Foreground(m.palette.Text). + Render(lipgloss.JoinVertical(lipgloss.Left, parts...)) + if m.modal.kind != modalNone { + if m.overlay != nil { + m.overlay.hide() + } + modalWidth := min(72, m.width-8) + if m.modal.kind == modalHelp || m.modal.kind == modalThemeSelect { + modalWidth = min(96, m.width-8) + } + view = overlayCenter(view, renderModal(m, m.palette, modalWidth), m.width) + return view + } + m.syncImageOverlay(leftWidth, previewWidth, bodyHeight) + return view +} + +func (m Model) handleModalKey(msg tea.KeyMsg) (tea.Model, tea.Cmd) { + switch m.modal.kind { + case modalMkdir, modalRename: + switch { + case msg.String() == "esc": + log.Printf("[MODAL] %d — cancelled (Esc)", m.modal.kind) + m.modal = modalState{} + m.status = "Cancelled" + return m, nil + case key.Matches(msg, m.keys.Confirm): + value := strings.TrimSpace(m.modal.input.Value()) + if value == "" { + if m.modal.kind == modalMkdir { + m.status = "Directory name must not be empty" + } else { + m.status = "Name must not be empty" + } + return m, nil + } + m.busy = true + if m.modal.kind == modalMkdir { + log.Printf("[MODAL] Mkdir confirmed — path=%s name=%s", m.activePane().Path, value) + return m, m.mkdirCmd(m.activePane().Path, value) + } + selected, ok := m.activePane().Selected() + if !ok || selected.IsParent { + m.busy = false + m.modal = modalState{} + m.status = "No entry selected" + return m, nil + } + log.Printf("[MODAL] Rename confirmed — src=%s new=%s", selected.Path, value) + return m, renameCmd(selected.Path, value) + } + + var cmd tea.Cmd + m.modal.input, cmd = m.modal.input.Update(msg) + return m, cmd + + case modalConfirm: + switch { + case isModalCloseKey(msg, m.keys): + log.Printf("[MODAL] Confirm — cancelled (Esc)") + m.modal = modalState{} + m.status = "Cancelled" + return m, nil + case key.Matches(msg, m.keys.Confirm): + if m.modal.pending == nil { + m.modal = modalState{} + m.status = "Nothing to confirm" + return m, nil + } + pending := *m.modal.pending + m.modal = modalState{} + + if pending.kind == opCopy || pending.kind == opMove { + // Remote copy/move + if pending.srcClient != nil || pending.dstClient != nil { + if m.copyJob != nil { + m.status = "Transfer is already running" + return m, nil + } + m.busy = true + sourceIsRemote := pending.srcClient != nil + targetIsRemote := pending.dstClient != nil + log.Printf("[MODAL] Confirm — remote %s sources=%d targetDir=%s srcRemote=%v dstRemote=%v", + operationVerb(pending.kind), len(pending.sourcePaths), pending.targetDir, sourceIsRemote, targetIsRemote) + return m, m.startRemoteCopyJob(pending.kind, pending.sourcePaths, pending.targetDir, + sourceIsRemote, targetIsRemote, pending.srcClient, pending.dstClient, pending.stats) + } + // Local copy/move + if m.copyJob != nil { + m.status = "Transfer is already running" + return m, nil + } + m.busy = true + log.Printf("[MODAL] Confirm — local %s sources=%d targetDir=%s overwrite=%v stats=%+v", + operationVerb(pending.kind), len(pending.sourcePaths), pending.targetDir, pending.overwrite, pending.stats) + return m, m.startCopyJob(pending.kind, pending.sourcePaths, pending.targetDir, pending.overwrite, pending.stats) + } + + // SSH host delete (no busy state — simple store operation) + if pending.kind == opDeleteHost { + hostName := "" + if len(pending.sourcePaths) > 0 { + hostName = pending.sourcePaths[0] + } + log.Printf("[MODAL] Confirm — SSH host delete: %q", hostName) + return m.executeSSHHostDelete(hostName) + } + + // Remote delete + if pending.srcClient != nil { + m.busy = true + log.Printf("[MODAL] Confirm — remote delete sources=%d", len(pending.sourcePaths)) + return m, m.remoteDeleteCmd(pending.sourcePaths, pending.srcClient) + } + + // Adjust delete kind based on mode toggle + if pending.kind == opDelete || pending.kind == opPermanentDelete { + if m.deleteKind == "permanent" && pending.kind == opDelete { + pending.kind = opPermanentDelete + } else if m.deleteKind == "trash" && pending.kind == opPermanentDelete { + pending.kind = opDelete + } + } + + // Local delete with progress dialog + if (pending.kind == opDelete || pending.kind == opPermanentDelete) && pending.srcClient == nil { + if m.archiveJob != nil { + m.status = "Delete is already running" + return m, nil + } + log.Printf("[MODAL] Confirm — local %s sources=%d", operationVerb(pending.kind), len(pending.sourcePaths)) + return m, m.startDeleteJob(pending.kind, pending.sourcePaths) + } + + // Extract archive + if pending.kind == opExtractArchive { + if m.archiveJob != nil { + m.status = "Extraction is already running" + return m, nil + } + log.Printf("[MODAL] Confirm — extract archive source=%s target=%s", pending.sourcePaths[0], pending.targetDir) + return m, m.startExtractJob(pending.sourcePaths[0], pending.targetDir) + } + + m.busy = true + log.Printf("[MODAL] Confirm — %s sources=%d", operationVerb(pending.kind), len(pending.sourcePaths)) + return m, pending.cmd() + case msg.String() == "d" || msg.String() == "D": + if m.modal.pending == nil { + return m, nil + } + pkind := m.modal.pending.kind + if (pkind == opDelete || pkind == opPermanentDelete) && m.modal.pending.srcClient == nil { + if m.deleteKind == "permanent" { + m.deleteKind = "trash" + } else { + m.deleteKind = "permanent" + } + sources := m.modal.pending.sourcePaths + if m.deleteKind == "permanent" { + m.modal.title = "Permanently delete selected entr" + pluralSuffix(len(sources), "y", "ies") + "?" + } else { + m.modal.title = "Move selected entr" + pluralSuffix(len(sources), "y", "ies") + " to trash?" + } + m.modal.note = fmt.Sprintf( + "Mode: %s (D/d to change)\nEnter / y to confirm, Esc / n to cancel", + m.deleteKind, + ) + return m, nil + } + } + + case modalArchiveType: + switch { + case isModalCloseKey(msg, m.keys): + log.Printf("[MODAL] Archive — cancelled (Esc)") + m.modal = modalState{} + m.status = "Cancelled" + return m, nil + case key.Matches(msg, m.keys.Confirm): + if m.modal.pending == nil { + m.modal = modalState{} + m.status = "Nothing to confirm" + return m, nil + } + pending := *m.modal.pending + m.modal = modalState{} + if m.archiveJob != nil { + m.status = "Archive is already running" + return m, nil + } + m.busy = true + log.Printf("[MODAL] Archive confirmed — sources=%d targetDir=%s format=%s", len(pending.sourcePaths), pending.targetDir, m.archiveFormat) + return m, m.startArchiveJob(pending.sourcePaths, pending.targetDir, m.archiveFormat, pending.stats) + case msg.String() == "f" || msg.String() == "F": + switch m.archiveFormat { + case "zip": + m.archiveFormat = "tar" + case "tar": + m.archiveFormat = "tar.gz" + default: + m.archiveFormat = "zip" + } + m.modal.note = fmt.Sprintf( + "Format: %s (F/f to change)\nEnter / y to confirm, Esc / n to cancel", + m.archiveFormat, + ) + return m, nil + } + return m, nil + + case modalSSHConnect: + switch { + case isModalCloseKey(msg, m.keys): + log.Printf("[MODAL] SSH connect — cancelled (Esc)") + m.modal = modalState{} + if m.ssh != nil && m.ssh.testingConn { + m.ssh.testingConn = false + if m.ssh.cancelTest != nil { + m.ssh.cancelTest() + } + m.busy = false + } + m.status = "Cancelled" + return m, nil + case key.Matches(msg, m.keys.Confirm): + // If a test is already in progress, ignore + if m.ssh != nil && m.ssh.testingConn { + return m, nil + } + return m.handleSSHAddHostConfirm() + case msg.String() == "tab": + m.ssh.cycleInput(1) + return m, nil + case msg.String() == "shift+tab": + m.ssh.cycleInput(-1) + return m, nil + case key.Matches(msg, m.keys.Help): + m.ssh.showHelp = !m.ssh.showHelp + return m, nil + case msg.String() == "?": + m.ssh.showHelp = !m.ssh.showHelp + return m, nil + default: + var cmd tea.Cmd + m.ssh.inputs[m.ssh.inputFocus], cmd = m.ssh.inputs[m.ssh.inputFocus].Update(msg) + return m, cmd + } + + case modalThemeSelect: + switch { + case msg.String() == "up" || msg.String() == "k": + if m.themeSelector == nil { + return m, nil + } + m.themeSelector.cursor-- + if m.themeSelector.cursor < 0 { + m.themeSelector.cursor = 0 + } + selected := m.themeSelector.names[m.themeSelector.cursor] + m.applyThemePreview(selected) + log.Printf("[THEME] Preview: %s", selected) + return m, nil + case msg.String() == "down" || msg.String() == "j": + if m.themeSelector == nil { + return m, nil + } + m.themeSelector.cursor++ + if m.themeSelector.cursor >= len(m.themeSelector.names) { + m.themeSelector.cursor = len(m.themeSelector.names) - 1 + } + selected := m.themeSelector.names[m.themeSelector.cursor] + m.applyThemePreview(selected) + log.Printf("[THEME] Preview: %s", selected) + return m, nil + case key.Matches(msg, m.keys.Confirm): + if m.themeSelector == nil { + return m, nil + } + selected := m.themeSelector.names[m.themeSelector.cursor] + m.finalizeTheme(selected) + m.themeSelector = nil + m.modal = modalState{} + m.status = fmt.Sprintf("Theme: %s", selected) + log.Printf("[THEME] Applied: %s", selected) + return m, nil + case isModalCloseKey(msg, m.keys): + if m.themeSelector == nil { + return m, nil + } + m.applyThemePreview(m.themeSelector.original) + m.themeSelector = nil + m.modal = modalState{} + m.status = "Theme unchanged" + log.Printf("[THEME] Reverted to: %s", m.cfg.UI.Theme) + return m, nil + } + return m, nil + + case modalArchiveProgress: + if key.Matches(msg, m.keys.Background) { + if m.archiveJob == nil { + m.modal = modalState{} + return m, nil + } + m.archiveJob.background = true + m.modal = modalState{} + m.status = "Archive continues in background" + log.Printf("[MODAL] ArchiveProgress — moved to background (job=%d)", m.archiveJob.id) + return m, nil + } + if key.Matches(msg, m.keys.ProgressCancel) { + if m.archiveJob == nil { + m.modal = modalState{} + return m, nil + } + if m.archiveJob.cancel != nil { + m.archiveJob.cancel() + } + m.status = "Archiving cancelling..." + log.Printf("[MODAL] ArchiveProgress — cancel requested (job=%d)", m.archiveJob.id) + return m, nil + } + return m, nil + + case modalCopyProgress: + if key.Matches(msg, m.keys.Background) { + if m.copyJob == nil { + m.modal = modalState{} + return m, nil + } + m.copyJob.background = true + m.modal = modalState{} + m.status = "Transfer continues in background" + log.Printf("[MODAL] CopyProgress — background requested (job=%d)", m.copyJob.id) + return m, nil + } + if key.Matches(msg, m.keys.ProgressCancel) { + if m.copyJob == nil { + m.modal = modalState{} + return m, nil + } + if m.copyJob.cancel != nil { + m.copyJob.cancel() + log.Printf("[MODAL] CopyProgress — cancel requested (job=%d)", m.copyJob.id) + } + m.status = strings.Title(operationVerb(m.copyJob.kind)) + " cancelling..." + return m, nil + } + return m, nil + + case modalNotice: + if key.Matches(msg, m.keys.Confirm) || isModalCloseKey(msg, m.keys) { + m.modal = modalState{} + } + return m, nil + + case modalHelp: + if isModalCloseKey(msg, m.keys) || key.Matches(msg, m.keys.Confirm) || key.Matches(msg, m.keys.Help) { + m.modal = modalState{} + m.status = "Help closed" + } + return m, nil + } + + return m, nil +} + +func isModalCloseKey(msg tea.KeyMsg, keys KeyMap) bool { + return key.Matches(msg, keys.Cancel) || msg.String() == "q" +} + +func (m *Model) reloadPane(id PaneID, preserve string) error { + pane := m.paneByID(id) + entries, err := vfs.ListDir(pane.Path, vfs.ListOptions{ + ShowHidden: m.cfg.Browser.ShowHidden, + DirsFirst: m.cfg.Browser.DirsFirst, + SortBy: m.cfg.Browser.Sort.By, + SortReverse: m.cfg.Browser.Sort.Reverse, + }) + if err != nil { + log.Printf("[ERROR] reloadPane: id=%s path=%s err=%v", id, pane.Path, err) + return err + } + pane.SetEntries(entries, strings.ToLower(preserve)) + log.Printf("[PANEL] reloadPane: id=%s path=%s entries=%d preserve=%s", id, pane.Path, len(entries), preserve) + return nil +} + +func (m *Model) refreshAllPanes(status string) (tea.Model, tea.Cmd) { + log.Printf("[PANEL] refreshAllPanes") + for _, id := range []PaneID{PaneLeft, PaneRight} { + pane := m.paneByID(id) + if name := selectedName(pane); name != "" { + pane.SaveCursor(pane.Path, name) + } + preserve := pane.LoadCursor(pane.Path) + var err error + if pane.InRemote() { + err = m.reloadRemotePane(id, preserve) + } else if pane.InArchive() { + err = m.reloadPane(id, preserve) + } else { + err = m.reloadPane(id, preserve) + } + if err != nil { + log.Printf("[REFRESH] pane=%s path=%s err=%v", id, pane.Path, err) + m.status = err.Error() + return m, nil + } + } + m.status = status + return m, m.loadPreviewCmd() +} + + + +func (m *Model) moveCursor(delta int) { + // When a filter query is active on this pane, move through filtered entries + // only, so the cursor always lands on a matching item. + if m.filterQuery != "" && m.filterPaneID == m.active { + m.moveFilteredCursor(delta) + return + } + pane := m.activePane() + pane.Move(delta, max(m.bodyHeight()-4, 1)) + m.hover = hoverState{} +} + +// snapFilterCursor moves the real cursor to the nearest entry matching the +// current filter query. Called after each filter keystroke so the user +// always sees a selected item in the filtered view. +func (m *Model) snapFilterCursor() { + pane := m.activePane() + if m.filterQuery == "" || len(pane.Entries) == 0 { + return + } + query := strings.ToLower(m.filterQuery) + + // If current cursor position already matches, keep it. + if pane.Cursor >= 0 && pane.Cursor < len(pane.Entries) { + entry := pane.Entries[pane.Cursor] + if entry.IsParent || strings.Contains(strings.ToLower(entry.DisplayName()), query) { + return + } + } + + // Search forward from cursor. + for i := pane.Cursor + 1; i < len(pane.Entries); i++ { + entry := pane.Entries[i] + if entry.IsParent || strings.Contains(strings.ToLower(entry.DisplayName()), query) { + pane.Cursor = i + return + } + } + + // Search backward from cursor. + for i := pane.Cursor - 1; i >= 0; i-- { + entry := pane.Entries[i] + if entry.IsParent || strings.Contains(strings.ToLower(entry.DisplayName()), query) { + pane.Cursor = i + return + } + } +} + +// moveFilteredCursor moves the real cursor to the next/prev entry matching +// the current filter query. Used for Up/Down navigation in filter mode. +func (m *Model) moveFilteredCursor(delta int) { + pane := m.activePane() + if m.filterQuery == "" || len(pane.Entries) == 0 { + m.moveCursor(delta) + return + } + query := strings.ToLower(m.filterQuery) + maxIdx := len(pane.Entries) - 1 + + idx := pane.Cursor + delta + for idx >= 0 && idx <= maxIdx { + entry := pane.Entries[idx] + if entry.IsParent || strings.Contains(strings.ToLower(entry.DisplayName()), query) { + pane.Cursor = idx + pageSize := max(m.bodyHeight()-4, 1) + if pane.Cursor < pane.Offset { + pane.Offset = pane.Cursor + } + if pageSize > 0 && pane.Cursor >= pane.Offset+pageSize { + pane.Offset = pane.Cursor - pageSize + 1 + } + if pane.Offset < 0 { + pane.Offset = 0 + } + m.hover = hoverState{} + return + } + idx += delta + } +} + +// filteredCount returns the number of entries matching the current filter. +func (m *Model) filteredCount(pane *BrowserPane) int { + if m.filterQuery == "" { + return len(pane.Entries) + } + query := strings.ToLower(m.filterQuery) + count := 0 + for _, entry := range pane.Entries { + if strings.Contains(strings.ToLower(entry.DisplayName()), query) { + count++ + } + } + return count +} + +// filteredPane returns a copy of the pane with entries filtered by the current query. +// The cursor in the returned copy reflects the position of the real cursor +// within the filtered subset, so Selected() on the original pane still returns +// the correct entry. Offset is recomputed in filtered-entry space so the +// viewport does not inherit the real-list offset (which would be out of range). +func (m Model) filteredPane(pane BrowserPane) BrowserPane { + if m.filterQuery == "" { + return pane + } + query := strings.ToLower(m.filterQuery) + filtered := make([]vfs.Entry, 0, len(pane.Entries)) + filteredCursor := 0 + for i, entry := range pane.Entries { + if entry.IsParent || strings.Contains(strings.ToLower(entry.DisplayName()), query) { + if i == pane.Cursor { + filteredCursor = len(filtered) + } + filtered = append(filtered, entry) + } + } + pane.Entries = filtered + pane.Cursor = filteredCursor + if pane.Cursor >= len(filtered) { + pane.Cursor = max(len(filtered)-1, 0) + } + + // Recompute offset in filtered-entry space. The source offset is in + // real-entry-index space and is meaningless for the shorter filtered list. + pageSize := max(m.bodyHeight()-4, 1) + offset := 0 + if pane.Cursor >= pageSize { + offset = pane.Cursor - pageSize + 1 + } + pane.Offset = offset + + return pane +} + +func (m *Model) selectMoveCursor(delta int) { + pane := m.activePane() + if selected, ok := pane.Selected(); ok && !selected.IsParent { + pane.ToggleMarked(selected.Path) + } + if m.filterQuery != "" && m.filterPaneID == m.active { + m.moveFilteredCursor(delta) + } else { + pane.Move(delta, max(m.bodyHeight()-4, 1)) + } + m.hover = hoverState{} +} + +func (m *Model) operationSources() []string { + pane := m.activePane() + marked := pane.MarkedEntries() + if len(marked) > 0 { + paths := make([]string, 0, len(marked)) + for _, entry := range marked { + if entry.IsParent { + continue + } + paths = append(paths, entry.Path) + } + return paths + } + selected, ok := pane.Selected() + if !ok || selected.IsParent { + return nil + } + return []string{selected.Path} +} + +func (m *Model) enterSelected() error { + m.hover = hoverState{} + pane := m.activePane() + selected, ok := pane.Selected() + if !ok { + return nil + } + if !selected.IsDir { + m.status = "File is shown in the middle pane. Use F3 for pager or F4 for editor." + return nil + } + // Save cursor position for the current directory before navigating away. + pane.SaveCursor(pane.Path, selected.Name) + // Save current directory to history before navigating. + pane.PushHistory(pane.Path) + log.Printf("[NAV] enterSelected — pane=%s from=%s to=%s", pane.ID, pane.Path, selected.Path) + pane.Path = selected.Path + pane.Cursor = 0 + pane.Offset = 0 + // Restore cursor position if we've visited this directory before in this session. + preserve := pane.LoadCursor(pane.Path) + if err := m.reloadPane(pane.ID, preserve); err != nil { + return err + } + m.status = fmt.Sprintf("Entered %s", pane.Path) + return nil +} + +func (m *Model) clearFilter() { + m.filterQuery = "" + m.filterInput.SetValue("") + m.filterInput.Blur() + m.filterMode = false + m.filterPaneID = "" +} + +func (m *Model) handleOpenSelected() (tea.Model, tea.Cmd) { + selected, ok := m.activePane().Selected() + if !ok { + log.Printf("[ACTION] OpenSelected — nothing selected") + return m, nil + } + + log.Printf("[ACTION] OpenSelected — entry=%s isDir=%v isRemote=%v isArchive=%v category=%s", + selected.Path, selected.IsDir, selected.IsRemote, isArchiveEntry(selected), selected.Category()) + + // Navigating up via ".." — use goParent which preserves the cursor + // position on the directory/archive we came from (by finding its name + // in the parent listing via FindSelected). This applies both inside + // archive mounts (where pane.Path must stay within the temp mount) + // and regular directories (for consistent cursor placement). + if selected.IsParent { + if err := m.goParent(); err != nil { + m.status = err.Error() + return m, nil + } + return m, m.loadPreviewCmd() + } + + // SSH host entry — connect to remote host + if selected.IsRemote && !isRemoteAddHostEntry(selected) { + log.Printf("[ACTION] OpenSelected — SSH connect to host=%s", selected.RemoteHostName) + return m.handleSSHConnectHost() + } + // "Add host" entry — open connect dialog + if isRemoteAddHostEntry(selected) { + m.handleSSHOpenAddHost() + return m, nil + } + + if selected.IsDir { + if m.activePane().InRemote() { + return m.enterRemoteDir(selected) + } + if err := m.enterSelected(); err != nil { + m.status = err.Error() + return m, nil + } + return m, m.loadPreviewCmd() + } + + if isArchiveEntry(selected) { + if err := m.enterArchive(selected); err != nil { + m.status = err.Error() + return m, nil + } + return m, m.loadPreviewCmd() + } + + switch selected.Category() { + case "text", "config": + return m.handleEdit() + case "executable": + return m.handleExecute(selected) + default: + return m.handleOpenExternal() + } +} + +func (m *Model) goParent() error { + m.hover = hoverState{} + pane := m.activePane() + log.Printf("[NAV] goParent — pane=%s path=%s inRemote=%v inArchive=%v", pane.ID, pane.Path, pane.InRemote(), pane.InArchive()) + + // SSH host list — close it and restore previous directory + if pane.Path == "ssh://" { + if prevPath, ok := pane.PopHistory(); ok { + log.Printf("[NAV] goParent — closing SSH host list, restoring path=%s", prevPath) + pane.Path = prevPath + return m.reloadPane(pane.ID, "") + } + // No history — just clear the host list + pane.Path = "/" + return m.reloadPane(pane.ID, "") + } + + // Remote mount — pop back to host list or go up one level + if mount, ok := pane.CurrentRemote(); ok { + current := pane.Path + if current == "/" || current == "" { + // At remote root — pop remote, disconnect, and return to host list + log.Printf("[NAV] goParent — closing remote mount, returning to host list") + pane.PopRemote() + mount.Client.Close() + if m.ssh != nil { + m.ssh.connectedHosts[mount.Host.Name] = false + entries := buildSSHHostEntries(m.ssh.store, m.ssh.connectedHosts) + pane.SetEntries(entries, "") + pane.Path = "ssh://" + m.status = "SSH host list" + } + return nil + } + // Inside remote subdirectory — go up one level + if selected, ok := pane.Selected(); ok && !selected.IsParent { + pane.SaveCursor(pane.Path, selected.Name) + } + pane.PushHistory(pane.Path) + parent := path.Dir(current) + if parent == "." { + parent = "/" + } + log.Printf("[NAV] goParent — remote: %s -> %s", current, parent) + pane.Path = parent + return m.reloadRemotePane(pane.ID, path.Base(current)) + } + + if mount, ok := pane.CurrentArchive(); ok { + root := filepath.Clean(mount.RootPath) + current := filepath.Clean(pane.Path) + if current == root { + // At archive root — pop archive and return to the directory containing it + log.Printf("[NAV] goParent — closing archive %s", mount.SourcePath) + pane.PushHistory(pane.Path) + if _, popped := pane.PopArchive(); popped { + _ = os.RemoveAll(mount.TempDir) + } + pane.Path = mount.ParentPath + if err := m.reloadPane(pane.ID, filepath.Base(mount.SourcePath)); err != nil { + return err + } + m.status = fmt.Sprintf("Closed archive %s", filepath.Base(mount.SourcePath)) + return nil + } + // Inside archive subdirectory — go up one level within the archive + pane.PushHistory(pane.Path) + parent := filepath.Dir(current) + log.Printf("[NAV] goParent — archive: %s -> %s", current, parent) + pane.Path = parent + if err := m.reloadPane(pane.ID, filepath.Base(current)); err != nil { + return err + } + m.status = fmt.Sprintf("Moved to %s", parent) + return nil + } + + // Save cursor position before leaving this directory. + if selected, ok := pane.Selected(); ok && !selected.IsParent { + pane.SaveCursor(pane.Path, selected.Name) + } + parent := filepath.Dir(pane.Path) + if parent == pane.Path { + return nil + } + pane.PushHistory(pane.Path) + currentName := filepath.Base(pane.Path) + log.Printf("[NAV] goParent — local: %s -> %s", pane.Path, parent) + pane.Path = parent + if err := m.reloadPane(pane.ID, currentName); err != nil { + return err + } + m.status = fmt.Sprintf("Moved to %s", parent) + return nil +} + +// historyBack navigates the active pane to the previous directory in its history. +func (m *Model) historyBack() (tea.Model, tea.Cmd) { + pane := m.activePane() + prevPath, ok := pane.PopHistory() + if !ok { + m.status = "No directory history" + return m, nil + } + // Save cursor position for the current directory before navigating away. + if selected, ok := pane.Selected(); ok && !selected.IsParent { + pane.SaveCursor(pane.Path, selected.Name) + } + // Save current path to forward-stack so forward navigation can restore it. + pane.PushFuture(pane.Path) + log.Printf("[NAV] historyBack — pane=%s cur=%s prev=%s", pane.ID, pane.Path, prevPath) + pane.Path = prevPath + pane.Cursor = 0 + pane.Offset = 0 + // Restore cursor position if we've visited this directory before in this session. + preserve := pane.LoadCursor(pane.Path) + if err := m.reloadPane(pane.ID, preserve); err != nil { + m.status = err.Error() + return m, nil + } + m.status = fmt.Sprintf("History back to %s", prevPath) + return m, m.loadPreviewCmd() +} + +// historyForward navigates the active pane to the next directory in its forward-stack. +func (m *Model) historyForward() (tea.Model, tea.Cmd) { + pane := m.activePane() + nextPath, ok := pane.PopFuture() + if !ok { + m.status = "No forward history" + return m, nil + } + // Save cursor position for the current directory before navigating away. + if selected, ok := pane.Selected(); ok && !selected.IsParent { + pane.SaveCursor(pane.Path, selected.Name) + } + // Save current path to back-stack so back navigation can restore it. + pane.PushHistory(pane.Path) + log.Printf("[NAV] historyForward — pane=%s cur=%s next=%s", pane.ID, pane.Path, nextPath) + pane.Path = nextPath + pane.Cursor = 0 + pane.Offset = 0 + // Restore cursor position if we've visited this directory before in this session. + preserve := pane.LoadCursor(pane.Path) + if err := m.reloadPane(pane.ID, preserve); err != nil { + m.status = err.Error() + return m, nil + } + m.status = fmt.Sprintf("History forward to %s", nextPath) + return m, m.loadPreviewCmd() +} + +func (m Model) loadPreviewCmd() tea.Cmd { + selected, ok := m.activePane().Selected() + if !ok { + return func() tea.Msg { + return previewMsg{ + entryPath: "", + preview: vfs.Preview{ + Kind: vfs.PreviewKindEmpty, + Title: "Nothing selected", + Body: "No entry selected.", + }, + } + } + } + + // Remote preview: read file via SFTP, detect kind, build preview. + // Images are downloaded to a local temp file so the overlay (ueberzugpp/kitty) can read them. + if mount, ok := m.activePane().CurrentRemote(); ok { + return func() tea.Msg { + rc, err := mount.Client.ReadFile(selected.Path) + if err != nil { + return previewMsg{ + entryPath: selected.Path, + preview: vfs.Preview{ + Kind: vfs.PreviewKindError, + Title: selected.DisplayName(), + Body: fmt.Sprintf("Could not read remote file:\n\n%s", err), + }, + } + } + defer rc.Close() + maxBytes := int64(m.cfg.Preview.MaxPreviewBytes) + sample := io.LimitReader(rc, maxBytes) + raw, readErr := io.ReadAll(sample) + if readErr != nil { + return previewMsg{ + entryPath: selected.Path, + preview: vfs.Preview{ + Kind: vfs.PreviewKindError, + Title: selected.DisplayName(), + Body: fmt.Sprintf("Could not read remote file:\n\n%s", readErr), + }, + } + } + + meta := vfs.Metadata{ + Path: selected.Path, + Size: selected.Size, + SizeKnown: true, + Extension: selected.Extension, + Permissions: vfs.Permissions(selected.Mode), + ModifiedAt: vfs.ShortTime(selected.ModifiedAt), + } + + // Detect image by magic bytes + if format, dims, isImage := vfs.DetectImage(raw); isImage { + // Download full image to temp + tmpDir := filepath.Join(os.TempDir(), "vcom-remote-images") + os.MkdirAll(tmpDir, 0o700) + tmpFile, tmpErr := os.CreateTemp(tmpDir, "vcom-img-*"+filepath.Ext(selected.Path)) + if tmpErr == nil { + tmpPath := tmpFile.Name() + tmpFile.Close() + if dlErr := mount.Client.DownloadFile(selected.Path, tmpPath); dlErr == nil { + meta.Path = tmpPath + return previewMsg{ + entryPath: selected.Path, + remoteImageTemp: tmpPath, + preview: vfs.Preview{ + Kind: vfs.PreviewKindImage, + Title: selected.DisplayName(), + Body: fmt.Sprintf("%s (%s)\n%s", format, dims, vfs.HumanSize(selected.Size)), + Metadata: meta, + }, + } + } + os.Remove(tmpPath) + } + // Download failed — show as image with metadata only + return previewMsg{ + entryPath: selected.Path, + preview: vfs.Preview{ + Kind: vfs.PreviewKindImage, + Title: selected.DisplayName(), + Body: fmt.Sprintf("%s (%s)\n(remote — could not download for overlay)", format, dims), + Metadata: meta, + }, + } + } + + // Detect binary (non-image) + if vfs.IsBinarySample(raw) { + return previewMsg{ + entryPath: selected.Path, + preview: vfs.Preview{ + Kind: vfs.PreviewKindBinary, + Title: selected.DisplayName(), + Body: fmt.Sprintf("Binary file\n%s • %s", vfs.HumanSize(selected.Size), selected.Extension), + Metadata: meta, + }, + } + } + + // Text preview + body := string(raw) + if int64(len(raw)) >= maxBytes { + body += "\n\n[... truncated ...]" + } + return previewMsg{ + entryPath: selected.Path, + preview: vfs.Preview{ + Kind: vfs.PreviewKindText, + Title: selected.DisplayName(), + Body: body, + PlainBody: body, + Metadata: meta, + }, + } + } + } + + options := vfs.PreviewOptions{ + ShowHidden: m.cfg.Browser.ShowHidden, + DirsFirst: m.cfg.Browser.DirsFirst, + SortBy: m.cfg.Browser.Sort.By, + SortReverse: m.cfg.Browser.Sort.Reverse, + MaxPreviewBytes: m.cfg.Preview.MaxPreviewBytes, + DirectoryPreviewLimit: m.cfg.Preview.DirectoryPreviewLimit, + HumanReadableSize: m.cfg.Browser.HumanReadableSize, + ThemeName: m.cfg.UI.Theme, + UseNerdIcons: m.nerdIcons, + } + + return func() tea.Msg { + return previewMsg{ + entryPath: selected.Path, + preview: vfs.BuildPreview(selected, options), + } + } +} + +func (m *Model) handleDirSize() (tea.Model, tea.Cmd) { + if !m.cfg.Behavior.CalculateDirSizeOnSpace { + m.status = "Directory size on Space is disabled in config" + return m, nil + } + selected, ok := m.activePane().Selected() + if !ok || !selected.IsDir || selected.IsParent { + m.status = "Select a directory first" + return m, nil + } + if selected.DirSizeKnown { + m.status = fmt.Sprintf("Directory size: %s", formatSize(selected.Size, m.cfg.Browser.HumanReadableSize)) + return m, nil + } + + log.Printf("[ACTION] DirSize: path=%s pane=%s", selected.Path, m.active) + m.busy = true + m.status = fmt.Sprintf("Calculating directory size for %s", selected.DisplayName()) + if mount, ok := m.activePane().CurrentRemote(); ok { + return m, remoteDirSizeCmd(mount.Client, selected.Path) + } + return m, dirSizeCmd(selected.Path) +} + +func (m *Model) handleTransfer(kind fileOpKind) (tea.Model, tea.Cmd) { + if m.activePane().InArchive() && kind != opCopy { + log.Printf("[SKIP] Transfer: archive read-only, kind=%d", kind) + m.status = "Archive mode is read-only; only copy is allowed" + return m, nil + } + + sources := m.operationSources() + if len(sources) == 0 { + log.Printf("[SKIP] Transfer: no sources, kind=%d", kind) + m.status = fmt.Sprintf("Nothing to %s", operationVerb(kind)) + return m, nil + } + + srcPane := m.activePane() + dstPane := m.passivePane() + targetDir := dstPane.Path + + srcRemote, srcHasRemote := srcPane.CurrentRemote() + dstRemote, dstHasRemote := dstPane.CurrentRemote() + + log.Printf("[ACTION] Transfer: kind=%d active=%s srcPath=%s dstPath=%s srcRemote=%v dstRemote=%v sources=%v", + kind, m.active, srcPane.Path, dstPane.Path, srcHasRemote, dstHasRemote, sources) + + // Check for existing targets (fast — one Stat per top-level item) + // Skip when target is remote — local fs check doesn't apply. + existingTargets := 0 + if !dstHasRemote { + for _, sourcePath := range sources { + targetPath := filepath.Join(targetDir, filepath.Base(sourcePath)) + exists, err := vfs.PathExists(targetPath) + if err != nil { + log.Printf("[ERROR] Transfer: path check failed: %s err=%v", targetPath, err) + m.status = err.Error() + return m, nil + } + if exists { + existingTargets++ + } + } + } + overwrite := existingTargets > 0 + if existingTargets > 0 && !m.cfg.Behavior.ConfirmOverwrite { + overwrite = true + } + + // Show confirm dialog immediately (no plan — skip walking & counting files) + verb := strings.Title(operationVerb(kind)) + title := fmt.Sprintf("%s selected entry?", verb) + if srcHasRemote || dstHasRemote { + title = fmt.Sprintf("%s selected entry via SFTP?", verb) + } + bodyLines := []string{ + fmt.Sprintf("Items: %d", len(sources)), + fmt.Sprintf("Source: %s", srcPane.Path), + fmt.Sprintf("Target: %s", targetDir), + } + if existingTargets > 0 { + bodyLines = append(bodyLines, fmt.Sprintf("Overwrite: %d existing target(s)", existingTargets)) + } + if srcHasRemote || dstHasRemote { + bodyLines = append(bodyLines, "") + if srcHasRemote { + hostName := srcRemote.Host.Name + bodyLines = append(bodyLines, fmt.Sprintf("Source host: %s", hostName)) + } + if dstHasRemote { + hostName := dstRemote.Host.Name + bodyLines = append(bodyLines, fmt.Sprintf("Target host: %s", hostName)) + } + } + m.openConfirmModal(title, strings.Join(bodyLines, "\n"), "confirm-actions", pendingOperation{ + kind: kind, + sourcePaths: append([]string(nil), sources...), + targetDir: targetDir, + overwrite: overwrite, + existingTargets: existingTargets, + srcClient: srcRemote.Client, + dstClient: dstRemote.Client, + }) + return m, nil +} + +func (m *Model) handleArchive() (tea.Model, tea.Cmd) { + sources := m.operationSources() + if len(sources) == 0 { + log.Printf("[SKIP] Archive: no sources") + m.status = "Nothing to archive" + return m, nil + } + + if m.archiveJob != nil { + log.Printf("[SKIP] Archive: already running") + m.status = "Archive is already running" + return m, nil + } + + log.Printf("[ACTION] Archive: sources=%d targetDir=%s", len(sources), m.passivePane().Path) + m.busy = true + m.status = "Calculating archive size" + return m, archivePlanCmd(sources, m.passivePane().Path) +} + +func (m *Model) handleDelete() (tea.Model, tea.Cmd) { + if m.activePane().InArchive() { + log.Printf("[SKIP] Delete: archive read-only") + m.status = "Archive mode is read-only; delete is disabled" + return m, nil + } + + // SSH host list — delete user-added hosts + if m.activePane().Path == "ssh://" { + return m.handleSSHHostDelete() + } + + sources := m.operationSources() + if len(sources) == 0 { + log.Printf("[SKIP] Delete: no sources") + m.status = "Nothing to delete" + return m, nil + } + + log.Printf("[ACTION] Delete: sources=%v remote=%v", sources, m.activePane().InRemote()) + m.busy = false + + // Remote delete via SFTP (no trash on remote — always permanent) + if mount, ok := m.activePane().CurrentRemote(); ok { + log.Printf("[ACTION] Delete: remote — sources=%v", sources) + title := "Delete selected entr" + pluralSuffix(len(sources), "y", "ies") + " from remote?" + body := fmt.Sprintf("Items: %d", len(sources)) + note := "Enter / y to confirm, Esc / n to cancel" + m.openConfirmModal(title, body, note, pendingOperation{ + kind: opDelete, + sourcePaths: append([]string(nil), sources...), + srcClient: mount.Client, + }) + return m, nil + } + + // Default to permanent delete + m.deleteKind = "permanent" + + // Show confirm dialog with mode toggle (no plan — skip counting files) + title := "Permanently delete selected entr" + pluralSuffix(len(sources), "y", "ies") + "?" + body := fmt.Sprintf("Items: %d", len(sources)) + note := fmt.Sprintf("Mode: %s (D/d to change)\nEnter / y to confirm, Esc / n to cancel", m.deleteKind) + m.openConfirmModal(title, body, note, pendingOperation{ + kind: opDelete, + sourcePaths: append([]string(nil), sources...), + }) + return m, nil +} + +func (m *Model) handleUnpack() (tea.Model, tea.Cmd) { + selected, ok := m.activePane().Selected() + if !ok || !isArchiveEntry(selected) { + log.Printf("[SKIP] Unpack: no archive selected") + m.status = "Select an archive file to unpack" + return m, nil + } + + // Target is the opposite pane's current directory + targetPane := m.passivePane() + targetDir := targetPane.Path + + log.Printf("[ACTION] Unpack: source=%s target=%s", selected.Path, targetDir) + + // Show confirm dialog before extracting + title := fmt.Sprintf("Unpack %s?", selected.DisplayName()) + body := fmt.Sprintf("Archive: %s\nTarget: %s", selected.Path, targetDir) + note := "Enter / y to confirm, Esc / n to cancel" + pending := pendingOperation{ + kind: opExtractArchive, + sourcePaths: []string{selected.Path}, + targetDir: targetDir, + } + m.openConfirmModal(title, body, note, pending) + return m, nil +} + +func (m *Model) handleMirrorPane() (tea.Model, tea.Cmd) { + active := m.activePane() + passive := m.passivePane() + + // Determine the target path from the active pane + targetPath := active.Path + log.Printf("[ACTION] MirrorPane — active=%s path=%s inRemote=%v inArchive=%v", m.active, targetPath, active.InRemote(), active.InArchive()) + + // If active is in a remote mount, clone the remote stack to passive + if mount, ok := active.CurrentRemote(); ok { + // If passive already has a remote connection, clean it up first + if existingMount, exists := passive.CurrentRemote(); exists { + existingMount.Client.Close() + passive.PopRemote() + } + // Clone the mount — don't clone the client, open a new connection + // For simplicity, just set the path; the mount will reconnect on reload + passive.ClearRemotes() + passive.Remote = append(passive.Remote, mount) + passive.Path = active.Path + if err := m.reloadRemotePane(passive.ID, ""); err != nil { + m.status = fmt.Sprintf("Mirror failed: %v", err) + return m, nil + } + } else if active.InArchive() { + // Archive mounts: set path directly, archive data stays on active pane + passive.Path = targetPath + if err := m.reloadPane(passive.ID, ""); err != nil { + m.status = fmt.Sprintf("Mirror failed: %v", err) + return m, nil + } + } else { + // Local directory — simple path copy + passive.ClearRemotes() + passive.Path = targetPath + if err := m.reloadPane(passive.ID, ""); err != nil { + m.status = fmt.Sprintf("Mirror failed: %v", err) + return m, nil + } + } + + m.status = fmt.Sprintf("Mirrored: %s", targetPath) + return m, m.loadPreviewCmd() +} + +func (m *Model) handleView() (tea.Model, tea.Cmd) { + selected, ok := m.activePane().Selected() + if !ok || selected.IsParent || selected.IsDir { + log.Printf("[SKIP] View: no valid selection (ok=%v isParent=%v isDir=%v)", ok, selected.IsParent, selected.IsDir) + m.status = "Select a file to view" + return m, nil + } + if m.viewMode { + log.Printf("[ACTION] View: exit view mode") + return m.exitViewMode() + } + + log.Printf("[ACTION] View: file=%s", selected.Path) + m.viewPrevInfo = m.infoMode + m.infoMode = true + m.selectMode = m.previewData.Kind == vfs.PreviewKindText + m.visualMode = false + m.viewMode = true + m.resizePreview() + m.syncPreviewContent() + m.status = "View mode: F3/Esc/q to close" + if m.selectMode { + return m, tea.Batch(m.loadPreviewCmd(), disableMouseCmd()) + } + return m, tea.Batch(m.loadPreviewCmd(), enableMouseCmd()) +} + +func (m *Model) exitViewMode() (tea.Model, tea.Cmd) { + if !m.viewMode { + return m, nil + } + log.Printf("[ACTION] exitViewMode") + m.viewMode = false + m.selectMode = false + m.visualMode = false + m.infoMode = m.viewPrevInfo + m.resizePreview() + m.syncPreviewContent() + m.status = "View mode: off" + return m, tea.Batch(m.loadPreviewCmd(), enableMouseCmd()) +} + +func (m *Model) handleOpenExternal() (tea.Model, tea.Cmd) { + selected, ok := m.activePane().Selected() + if !ok || selected.IsParent || selected.IsDir { + m.status = "Select a file to open" + return m, nil + } + + command, name, err := externalCommand("", []string{"xdg-open", "open"}, selected.Path) + if err != nil { + m.status = "No system opener found (tried xdg-open/open)" + return m, nil + } + + log.Printf("[ACTION] OpenExternal: file=%s opener=%s", selected.Path, name) + m.cleanupImageOverlay() + m.status = fmt.Sprintf("Opening %s with %s", selected.DisplayName(), name) + return m, startExternalOpenCmd(command, selected.Path) +} + +func (m *Model) handleEdit() (tea.Model, tea.Cmd) { + selected, ok := m.activePane().Selected() + if !ok || selected.IsParent || selected.IsDir { + m.status = "Select a file to edit" + return m, nil + } + + command, name, err := externalCommandFromEnv([]string{"VISUAL", "EDITOR"}, []string{"nvim", "vim", "vi", "nano"}, selected.Path) + if err != nil { + m.status = "Set $VISUAL/$EDITOR or install nvim/vim/vi/nano to enable F4 editing" + return m, nil + } + + log.Printf("[ACTION] Edit: file=%s editor=%s command=%v", selected.Path, name, command) + m.cleanupImageOverlay() + m.status = fmt.Sprintf("Opening %s with %s", selected.DisplayName(), name) + return m, tea.ExecProcess(command, func(err error) tea.Msg { + return opMsg{kind: opEdit, sourcePath: selected.Path, err: err} + }) +} + +func (m *Model) handleExecute(entry vfs.Entry) (tea.Model, tea.Cmd) { + log.Printf("[ACTION] Execute: path=%s", entry.Path) + m.cleanupImageOverlay() + cmd := exec.Command(entry.Path) + cmd.Dir = filepath.Dir(entry.Path) + m.status = fmt.Sprintf("Executing %s", entry.DisplayName()) + return m, tea.ExecProcess(cmd, func(err error) tea.Msg { + return opMsg{kind: opExecute, sourcePath: entry.Path, err: err} + }) +} + +func (m *Model) handleMouse(msg tea.MouseMsg) (tea.Model, tea.Cmd) { + if m.viewMode { + switch { + case msg.Action == tea.MouseActionPress && msg.Button == tea.MouseButtonWheelUp: + m.previewModel.LineUp(3) + return m, nil + case msg.Action == tea.MouseActionPress && msg.Button == tea.MouseButtonWheelDown: + m.previewModel.LineDown(3) + return m, nil + default: + return m, nil + } + } + + switch { + case msg.Action == tea.MouseActionMotion: + paneID, index, ok := m.mouseTarget(msg.X, msg.Y) + if ok { + m.hover = hoverState{pane: paneID, index: index, ok: true} + } else { + m.hover = hoverState{} + } + return m, nil + case msg.Action == tea.MouseActionPress && msg.Button == tea.MouseButtonWheelUp: + if m.infoMode && m.mouseOverPreview(msg.X, msg.Y) { + m.previewModel.LineUp(3) + return m, nil + } + m.moveCursor(-1) + return m, m.loadPreviewCmd() + case msg.Action == tea.MouseActionPress && msg.Button == tea.MouseButtonWheelDown: + if m.infoMode && m.mouseOverPreview(msg.X, msg.Y) { + m.previewModel.LineDown(3) + return m, nil + } + m.moveCursor(1) + return m, m.loadPreviewCmd() + case msg.Action == tea.MouseActionPress && msg.Button == tea.MouseButtonLeft: + log.Printf("[MOUSE] Left click at (%d,%d)", msg.X, msg.Y) + if m.copyPath != "" && m.mouseOverPathLine(msg.X, msg.Y) { + if err := clipboard.WriteAll(m.copyPath); err != nil { + m.status = fmt.Sprintf("Copy path error: %v", err) + } else { + m.status = fmt.Sprintf("Path copied: %s", m.copyPath) + } + return m, nil + } + + paneID, index, ok := m.mouseTarget(msg.X, msg.Y) + if !ok { + return m, nil + } + m.hover = hoverState{pane: paneID, index: index, ok: true} + if paneID != m.active { + m.left.ClearMarks() + m.right.ClearMarks() + } + m.active = paneID + pane := m.paneByID(paneID) + if index >= 0 && index < len(pane.Entries) { + pane.Cursor = index + pane.EnsureVisible(max(m.bodyHeight()-4, 1)) + } + + now := time.Now() + doubleClick := m.lastClick.pane == paneID && m.lastClick.index == index && now.Sub(m.lastClick.at) <= 450*time.Millisecond + m.lastClick = mouseClickState{pane: paneID, index: index, at: now} + if doubleClick { + return m.handleOpenSelected() + } + m.status = fmt.Sprintf("Selected %s pane", strings.ToUpper(string(paneID))) + return m, m.loadPreviewCmd() + case msg.Action == tea.MouseActionPress && msg.Button == tea.MouseButtonRight: + if m.infoMode && m.mouseOverPreview(msg.X, msg.Y) { + m.infoMode = false + m.cursorMode = false + m.visualMode = false + m.resizePreview() + m.syncPreviewContent() + m.copyPath = "" + m.status = "Info mode: off" + return m, nil + } + + paneID, index, ok := m.mouseTarget(msg.X, msg.Y) + if !ok { + return m, nil + } + + if m.infoMode && paneID == m.active && index == m.activePane().Cursor { + m.infoMode = false + m.cursorMode = false + m.visualMode = false + m.hover = hoverState{pane: paneID, index: index, ok: true} + m.copyPath = "" + m.status = "Info mode: off" + return m, nil + } + + m.hover = hoverState{pane: paneID, index: index, ok: true} + if paneID != m.active { + m.left.ClearMarks() + m.right.ClearMarks() + } + m.active = paneID + pane := m.paneByID(paneID) + if index >= 0 && index < len(pane.Entries) { + pane.Cursor = index + pane.EnsureVisible(max(m.bodyHeight()-4, 1)) + } + m.infoMode = true + m.resizePreview() + m.syncPreviewContent() + m.status = fmt.Sprintf("Info mode: %s selection", strings.ToUpper(string(paneID))) + return m, m.loadPreviewCmd() + default: + return m, nil + } +} + +func (m *Model) toggleInfo() (tea.Model, tea.Cmd) { + m.infoMode = !m.infoMode + log.Printf("[TOGGLE] Info mode: %v (active=%s)", m.infoMode, m.active) + m.resizePreview() + m.syncPreviewContent() + if m.infoMode { + m.status = fmt.Sprintf("Info mode: %s selection", strings.ToUpper(string(m.active))) + return m, m.loadPreviewCmd() + } + wasSelect := m.selectMode + if m.selectMode { + m.selectMode = false + } + if m.cursorMode { + m.cursorMode = false + } + if m.visualMode { + m.visualMode = false + } + if wasSelect { + return m, enableMouseCmd() + } + m.status = "Info mode: off" + return m, nil +} + +func (m *Model) toggleSelectMode() (tea.Model, tea.Cmd) { + if m.viewMode { + m.status = "Use v/y in F3 view for keyboard selection" + return m, nil + } + if m.selectMode { + m.selectMode = false + log.Printf("[TOGGLE] Select mode: off") + m.status = "Text selection mode: off" + return m, enableMouseCmd() + } + if !m.infoMode || m.previewData.Kind != vfs.PreviewKindText { + m.status = "Text selection mode works only for text preview in info pane" + return m, nil + } + m.selectMode = true + log.Printf("[TOGGLE] Select mode: on") + m.status = "Text selection mode: on" + return m, disableMouseCmd() +} + +func (m *Model) toggleCaretMode() (tea.Model, tea.Cmd) { + if m.viewMode { + m.status = "F3 uses plain text mouse selection" + return m, nil + } + if m.selectMode { + m.status = "Disable Ctrl+T mouse selection first" + return m, nil + } + if !m.infoMode || m.previewData.Kind != vfs.PreviewKindText { + m.status = "Caret mode works only for text preview in info pane" + return m, nil + } + if m.cursorMode { + log.Printf("[TOGGLE] Caret mode: off") + return m.exitCaretMode("Caret mode: off") + } + + lineCount := len(m.previewPlainLines()) + if lineCount == 0 { + m.status = "Nothing to navigate" + return m, nil + } + m.cursorMode = true + m.cursorLine = clamp(m.previewModel.YOffset, 0, lineCount-1) + m.cursorCol = clamp(m.cursorCol, 0, m.lineRuneCount(m.cursorLine)) + m.visualMode = false + m.ensureTextCursorVisible() + m.syncPreviewContent() + log.Printf("[TOGGLE] Caret mode: on (line=%d col=%d)", m.cursorLine, m.cursorCol) + m.status = "Caret mode: h/j/k/l move, v select, Esc exit" + return m, nil +} + +func (m *Model) exitCaretMode(status string) (tea.Model, tea.Cmd) { + if !m.cursorMode { + m.status = status + return m, nil + } + log.Printf("[TOGGLE] exitCaretMode: %s", status) + m.cursorMode = false + m.visualMode = false + m.syncPreviewContent() + m.status = status + return m, nil +} + +func (m *Model) toggleVisualMode() (tea.Model, tea.Cmd) { + if m.viewMode { + m.status = "F3 uses plain text mouse selection; visual mode is for info pane" + return m, nil + } + if m.selectMode { + m.status = "Disable Ctrl+T mouse selection first" + return m, nil + } + if !m.infoMode || m.previewData.Kind != vfs.PreviewKindText { + m.status = "Visual mode works only for text preview" + return m, nil + } + if m.visualMode { + log.Printf("[TOGGLE] Visual mode: off") + return m.exitVisualMode("Visual mode: off") + } + + lineCount := len(m.previewPlainLines()) + if lineCount == 0 { + m.status = "Nothing to select" + return m, nil + } + start := clamp(m.previewModel.YOffset, 0, lineCount-1) + if m.cursorMode { + start = clamp(m.cursorLine, 0, lineCount-1) + } else { + m.cursorMode = true + m.cursorLine = start + m.cursorCol = 0 + } + m.visualMode = true + m.visualAnchor = start + m.visualAnchorCol = m.cursorCol + m.ensureTextCursorVisible() + m.syncPreviewContent() + log.Printf("[TOGGLE] Visual mode: on (anchor=%d col=%d)", m.visualAnchor, m.visualAnchorCol) + m.status = "Visual mode: h/j/k/l move, y copy, Esc exit" + return m, nil +} + +func (m *Model) exitVisualMode(status string) (tea.Model, tea.Cmd) { + if !m.visualMode { + m.status = status + return m, nil + } + log.Printf("[TOGGLE] exitVisualMode: %s", status) + m.visualMode = false + m.syncPreviewContent() + m.status = status + return m, nil +} + +func (m *Model) toggleHidden() (tea.Model, tea.Cmd) { + m.cfg.Browser.ShowHidden = !m.cfg.Browser.ShowHidden + log.Printf("[TOGGLE] ShowHidden: %v", m.cfg.Browser.ShowHidden) + return m.refreshAllPanes(fmt.Sprintf("Show hidden: %t", m.cfg.Browser.ShowHidden)) +} + +func (m *Model) cycleTheme() (tea.Model, tea.Cmd) { + next := theme.Next(m.cfg.UI.Theme) + palette, err := theme.Resolve(next) + if err != nil { + m.status = err.Error() + return m, nil + } + log.Printf("[TOGGLE] CycleTheme: %s -> %s", m.cfg.UI.Theme, next) + m.cfg.UI.Theme = next + m.palette = palette + savedPath, saveErr := config.Save(m.cfg, m.configPath) + if saveErr != nil { + m.status = fmt.Sprintf("Theme: %s (save failed: %v)", next, saveErr) + return m, nil + } + m.configPath = savedPath + m.status = fmt.Sprintf("Theme: %s (saved)", next) + return m, nil +} + +func (m *Model) openThemeSelector() (tea.Model, tea.Cmd) { + names := theme.Names() + current := m.cfg.UI.Theme + cursor := 0 + for i, name := range names { + if name == current { + cursor = i + break + } + } + m.themeSelector = &themeSelectorState{ + names: names, + cursor: cursor, + original: current, + } + m.modal = modalState{ + kind: modalThemeSelect, + } + log.Printf("[THEME] Theme selector opened — current=%s cursor=%d", current, cursor) + return m, nil +} + +func (m *Model) applyThemePreview(name string) { + palette, err := theme.Resolve(name) + if err != nil { + return + } + m.palette = palette +} + +func (m *Model) finalizeTheme(name string) { + palette, err := theme.Resolve(name) + if err != nil { + m.status = err.Error() + return + } + m.cfg.UI.Theme = name + m.palette = palette + savedPath, saveErr := config.Save(m.cfg, m.configPath) + if saveErr != nil { + m.status = fmt.Sprintf("Theme: %s (save failed: %v)", name, saveErr) + return + } + m.configPath = savedPath +} + +func copyTextToClipboard(text string) error { + if err := clipboard.WriteAll(text); err == nil { + return nil + } + _, err := fmt.Fprint(os.Stderr, ansi.SetSystemClipboard(text)) + return err +} + +func (m *Model) yankVisualSelection() (tea.Model, tea.Cmd) { + if !m.visualMode || m.previewData.Kind != vfs.PreviewKindText { + m.status = "Visual mode is not active" + return m, nil + } + + lines := m.previewPlainLines() + if len(lines) == 0 { + return m.exitVisualMode("Nothing to copy") + } + startLine, startCol, endLine, endCol := m.visualSelectionBounds() + startLine = clamp(startLine, 0, len(lines)-1) + endLine = clamp(endLine, 0, len(lines)-1) + + parts := make([]string, 0, endLine-startLine+1) + for line := startLine; line <= endLine; line++ { + raw := lines[line] + lineStart := 0 + lineEnd := len([]rune(raw)) + if line == startLine { + lineStart = clamp(startCol, 0, lineEnd) + } + if line == endLine { + lineEnd = clamp(endCol, lineStart, len([]rune(raw))) + } + parts = append(parts, sliceRunes(raw, lineStart, lineEnd)) + } + text := strings.Join(parts, "\n") + if err := copyTextToClipboard(text); err != nil { + m.status = fmt.Sprintf("Copy failed: %v", err) + return m, nil + } + return m.exitVisualMode("Copied selection") +} + +func (m *Model) yankCursorLine() (tea.Model, tea.Cmd) { + if !m.cursorMode || m.previewData.Kind != vfs.PreviewKindText { + m.status = "Caret mode is not active" + return m, nil + } + lines := m.previewPlainLines() + if len(lines) == 0 { + m.status = "Nothing to copy" + return m, nil + } + line := clamp(m.cursorLine, 0, len(lines)-1) + if err := copyTextToClipboard(lines[line]); err != nil { + m.status = fmt.Sprintf("Copy failed: %v", err) + return m, nil + } + m.yankFlashLine = line + m.syncPreviewContent() + m.status = "Copied current line" + return m, dismissYankFlashCmd(140 * time.Millisecond) +} + +func (m *Model) cycleSort() (tea.Model, tea.Cmd) { + order := []string{"name", "modified", "size", "created", "extension"} + current := strings.ToLower(strings.TrimSpace(m.cfg.Browser.Sort.By)) + next := order[0] + for idx, value := range order { + if value == current { + next = order[(idx+1)%len(order)] + break + } + } + log.Printf("[TOGGLE] CycleSort: %s -> %s", current, next) + m.cfg.Browser.Sort.By = next + return m.refreshAllPanes(fmt.Sprintf("Sort: %s", next)) +} + +func (m *Model) openMkdirModal() { + if m.activePane().InArchive() { + m.status = "Archive mode is read-only; create directory is disabled" + return + } + + input := textinput.New() + input.Placeholder = "new-directory" + input.Focus() + input.CharLimit = 128 + input.Width = 42 + + m.modal = modalState{ + kind: modalMkdir, + title: "Create directory", + body: fmt.Sprintf("Active pane: %s", m.activePane().Path), + note: "Enter to confirm, Esc to cancel", + input: input, + } +} + +func (m *Model) openRenameModal() { + if m.activePane().InArchive() { + m.status = "Archive mode is read-only; rename is disabled" + return + } + + selected, ok := m.activePane().Selected() + if !ok || selected.IsParent { + m.status = "Select an entry to rename" + return + } + + input := textinput.New() + input.SetValue(selected.Name) + input.Focus() + input.CharLimit = 255 + input.Width = 42 + + m.modal = modalState{ + kind: modalRename, + title: "Rename entry", + body: fmt.Sprintf("Path: %s", selected.Path), + note: "Enter to confirm, Esc to cancel", + input: input, + } +} + +func (m *Model) openConfirmModal(title, body, note string, pending pendingOperation) { + m.modal = modalState{ + kind: modalConfirm, + title: title, + body: body, + note: note, + pending: &pending, + } +} + +func (m *Model) openHelpModal() { + sections := []string{ + "Navigation", + " j / Down move down", + " k / Up move up", + " Shift+Down/J extend selection down", + " Shift+Up/K extend selection up", + " PgUp / b page up", + " Enter / Right open selected entry", + " Backspace/Left go to parent directory", + " Tab / h / l switch active pane", + " Alt+Left directory history back", + " Alt+Right directory history forward", + " / filter entries by name in current pane", + " Ctrl+r refresh both panes", + "", + "View and Panels", + " i show text caret in preview pane", + " v start visual selection from caret", + " Esc close view/info/caret mode", + " yy copy current line in caret mode", + " y copy visual selection to clipboard", + " h / l move caret left/right", + " w / b move caret by word", + " Ctrl+t mouse selection mode in text preview pane", + " Space calculate selected directory size", + " p mirror current path to opposite pane", + " g cycle sort mode", + " . toggle hidden files", + " t select theme", + } + + m.modal = modalState{ + kind: modalHelp, + title: "Keyboard Help", + body: strings.Join(sections, "\n"), + note: version + " — F1/? or Esc to close", + } + m.status = "Help opened" +} + +func (m *Model) applyDirSize(path string, size int64) { + for _, pane := range []*BrowserPane{&m.left, &m.right} { + for idx := range pane.Entries { + if pane.Entries[idx].Path == path { + pane.Entries[idx].Size = size + pane.Entries[idx].DirSizeKnown = true + } + } + } +} + +func (m *Model) applyPreview(preview vfs.Preview) { + m.previewData = preview + m.syncPreviewContent() + if m.infoMode { + m.copyPath = preview.Metadata.Path + } +} + +func (m *Model) syncPreviewContent() { + content := m.previewData.Body + if (m.cursorMode || m.visualMode) && m.previewData.Kind == vfs.PreviewKindText { + content = m.renderTextCursorContent() + } + if m.cfg.Preview.WrapText && m.previewModel.Width > 0 { + content = lipgloss.NewStyle().Width(m.previewModel.Width).Render(content) + } + m.previewModel.SetContent(content) +} + +func (m Model) previewPlainLines() []string { + content := m.previewData.PlainBody + if content == "" { + content = m.previewData.Body + } + content = strings.ReplaceAll(content, "\r\n", "\n") + return strings.Split(content, "\n") +} + +func (m Model) previewRenderedLines() []string { + content := m.previewData.Body + if content == "" { + content = m.previewData.PlainBody + } + content = strings.ReplaceAll(content, "\r\n", "\n") + return strings.Split(content, "\n") +} + +func (m Model) lineRuneCount(line int) int { + lines := m.previewPlainLines() + if line < 0 || line >= len(lines) { + return 0 + } + return len([]rune(lines[line])) +} + +func sliceRunes(text string, start int, end int) string { + runes := []rune(text) + start = clamp(start, 0, len(runes)) + end = clamp(end, start, len(runes)) + return string(runes[start:end]) +} + +func isWordRune(r rune) bool { + return r == '_' || r == '-' || r == '.' || + (r >= '0' && r <= '9') || + (r >= 'a' && r <= 'z') || + (r >= 'A' && r <= 'Z') || + (r >= 'А' && r <= 'я') || + (r >= 'Ё' && r <= 'ё') +} + +func normalizeSelection(startLine, startCol, endLine, endCol int) (int, int, int, int) { + if startLine == endLine && startCol == endCol { + return startLine, startCol, endLine, endCol + 1 + } + if startLine < endLine || (startLine == endLine && startCol <= endCol) { + return startLine, startCol, endLine, endCol + 1 + } + return endLine, endCol, startLine, startCol + 1 +} + +func (m Model) visualSelectionBounds() (int, int, int, int) { + return normalizeSelection(m.visualAnchor, m.visualAnchorCol, m.cursorLine, m.cursorCol) +} + +func (m *Model) renderTextCursorContent() string { + lines := append([]string(nil), m.previewRenderedLines()...) + plainLines := m.previewPlainLines() + if len(lines) == 0 { + return "" + } + startLine, startCol, endLine, endCol := m.visualSelectionBounds() + hasSelection := false + if m.visualMode { + startLine = clamp(startLine, 0, len(lines)-1) + endLine = clamp(endLine, 0, len(lines)-1) + hasSelection = startLine != endLine || startCol != endCol + } + + selected := lipgloss.NewStyle(). + Background(m.palette.Marked). + Foreground(m.palette.Text) + flashed := lipgloss.NewStyle(). + Background(m.palette.Accent). + Foreground(m.palette.Background). + Bold(true) + cursor := lipgloss.NewStyle(). + Background(m.palette.Warning). + Foreground(m.palette.Background). + Bold(true) + gutterBase := lipgloss.NewStyle(). + Width(2). + Foreground(m.palette.Muted) + gutterAnchor := lipgloss.NewStyle(). + Width(2). + Foreground(m.palette.Info). + Bold(true) + gutterCursor := lipgloss.NewStyle(). + Width(2). + Foreground(m.palette.Accent). + Bold(true) + gutterBoth := lipgloss.NewStyle(). + Width(2). + Foreground(m.palette.Warning). + Bold(true) + + for idx := range lines { + marker := " " + switch { + case m.visualMode && idx == m.visualAnchor && idx == m.cursorLine: + marker = gutterBoth.Render("◆ ") + case m.visualMode && idx == m.visualAnchor: + marker = gutterAnchor.Render("│ ") + case idx == m.cursorLine: + marker = gutterCursor.Render("▶ ") + default: + marker = gutterBase.Render(" ") + } + + line := lines[idx] + plain := "" + if idx < len(plainLines) { + plain = plainLines[idx] + } + lineLen := len([]rune(plain)) + cursorCol := clamp(m.cursorCol, 0, lineLen) + + if hasSelection && idx >= startLine && idx <= endLine { + segStart := 0 + segEnd := lineLen + if idx == startLine { + segStart = clamp(startCol, 0, lineLen) + } + if idx == endLine { + segEnd = clamp(endCol, segStart, lineLen) + } + left := ansi.Cut(line, 0, segStart) + mid := ansi.Cut(line, segStart, segEnd) + right := ansi.Cut(line, segEnd, lineLen) + if mid != "" { + line = left + selected.Render(mid) + right + } + } + + if idx == m.cursorLine { + left := ansi.Cut(line, 0, cursorCol) + mid := ansi.Cut(line, cursorCol, min(cursorCol+1, max(lineLen, cursorCol+1))) + right := ansi.Cut(line, min(cursorCol+1, lineLen), lineLen) + if cursorCol >= lineLen { + mid = cursor.Render(" ") + right = "" + } else { + mid = cursor.Render(mid) + } + line = left + mid + right + } + if idx == m.yankFlashLine { + lines[idx] = flashed.Render(marker + line) + continue + } + lines[idx] = marker + line + } + result := strings.Join(lines, "\n") + + // Replace full ANSI resets with background-preserving resets. + // lipgloss.Render() appends \x1b[0m which resets the panel background + // set by the outer renderPreviewContent wrapper. Instead, reset only + // foreground and text attributes, then restore the panel background + // so that gutter markers, cursor highlights, and selection highlights + // don't break the panel background for subsequent text on the line. + panelBG := lipgloss.NewStyle().Background(m.palette.Panel).Render("") + bgCode := strings.TrimSuffix(panelBG, "\x1b[0m") + inner := bgCode[2 : len(bgCode)-1] + safeReset := "\x1b[39;22;23;24;59;" + inner + "m" + result = strings.ReplaceAll(result, "\x1b[0m", safeReset) + return result +} + +func (m *Model) moveTextCursorWordForward() { + if !m.cursorMode { + return + } + lines := m.previewPlainLines() + if len(lines) == 0 { + return + } + + line := clamp(m.cursorLine, 0, len(lines)-1) + col := clamp(m.cursorCol, 0, len([]rune(lines[line]))) + for { + runes := []rune(lines[line]) + for col < len(runes) && isWordRune(runes[col]) { + col++ + } + for col < len(runes) && !isWordRune(runes[col]) { + col++ + } + if col < len(runes) { + m.cursorLine = line + m.cursorCol = col + m.ensureTextCursorVisible() + m.syncPreviewContent() + return + } + if line >= len(lines)-1 { + m.cursorLine = line + m.cursorCol = len(runes) + m.ensureTextCursorVisible() + m.syncPreviewContent() + return + } + line++ + col = 0 + } +} + +func (m *Model) moveTextCursorWordBackward() { + if !m.cursorMode { + return + } + lines := m.previewPlainLines() + if len(lines) == 0 { + return + } + + line := clamp(m.cursorLine, 0, len(lines)-1) + col := clamp(m.cursorCol, 0, len([]rune(lines[line]))) + for { + runes := []rune(lines[line]) + if col > len(runes) { + col = len(runes) + } + + // Start from the character immediately before the cursor. + if col == 0 { + if line == 0 { + m.cursorLine = 0 + m.cursorCol = 0 + m.ensureTextCursorVisible() + m.syncPreviewContent() + return + } + line-- + col = len([]rune(lines[line])) + continue + } + + col-- + for { + runes = []rune(lines[line]) + for col >= 0 && !isWordRune(runes[col]) { + col-- + } + if col >= 0 { + break + } + if line == 0 { + m.cursorLine = 0 + m.cursorCol = 0 + m.ensureTextCursorVisible() + m.syncPreviewContent() + return + } + line-- + runes = []rune(lines[line]) + col = len(runes) - 1 + } + + for col > 0 && isWordRune(runes[col-1]) { + col-- + } + m.cursorLine = line + m.cursorCol = col + m.ensureTextCursorVisible() + m.syncPreviewContent() + return + } +} + +func (m *Model) activePane() *BrowserPane { + if m.active == PaneLeft { + return &m.left + } + return &m.right +} + +func (m *Model) passivePane() *BrowserPane { + if m.active == PaneLeft { + return &m.right + } + return &m.left +} + +func (m *Model) paneByID(id PaneID) *BrowserPane { + if id == PaneLeft { + return &m.left + } + return &m.right +} + +func (m *Model) layoutWidths() (int, int, int) { + total := m.width + gaps := m.cfg.UI.PaneGap + usable := max(total-gaps, 60) + left := usable / 2 + right := usable - left + + if m.active == PaneLeft { + if m.infoMode { + return left, right, 0 + } + return left, 0, right + } + if m.infoMode { + return 0, left, right + } + return left, 0, right +} + +func (m *Model) bodyHeight() int { + height := m.height + if m.cfg.UI.ShowFooter && !m.viewMode { + height-- + } + return max(height, 8) +} + +func (m *Model) resizePreview() { + _, previewWidth, _ := m.layoutWidths() + metaHeight := 0 + if m.cfg.Preview.ShowMetadata { + metaHeight = 7 + } + innerWidth := max(previewWidth-2, 1) + innerHeight := max(m.bodyHeight()-2, 1) + m.previewModel.Width = max(innerWidth-2, 10) + m.previewModel.Height = max(innerHeight-metaHeight-3, 3) +} + +func (m *Model) moveTextCursorLine(delta int) { + lines := m.previewPlainLines() + if len(lines) == 0 { + return + } + if !m.cursorMode { + return + } + m.cursorLine = clamp(m.cursorLine+delta, 0, len(lines)-1) + m.cursorCol = clamp(m.cursorCol, 0, m.lineRuneCount(m.cursorLine)) + m.ensureTextCursorVisible() + m.syncPreviewContent() +} + +func (m *Model) moveTextCursorCol(delta int) { + if !m.cursorMode { + return + } + m.cursorCol = clamp(m.cursorCol+delta, 0, m.lineRuneCount(m.cursorLine)) + m.ensureTextCursorVisible() + m.syncPreviewContent() +} + +func (m *Model) ensureTextCursorVisible() { + if !m.cursorMode { + return + } + visible := max(m.previewModel.Height, 1) + if m.cursorLine < m.previewModel.YOffset { + m.previewModel.SetYOffset(m.cursorLine) + return + } + bottom := m.previewModel.YOffset + visible - 1 + if m.cursorLine > bottom { + m.previewModel.SetYOffset(m.cursorLine - visible + 1) + } +} + +func renderPreviewPane(preview vfs.Preview, viewportModel *viewport.Model, cfg config.Config, palette theme.Palette, width int, height int, useNerdfont bool) string { + innerWidth := max(width-2, 1) + innerHeight := max(height-2, 1) + contentWidth := max(innerWidth-2, 1) + + box := lipgloss.NewStyle(). + Width(innerWidth). + Height(innerHeight). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(borderStyle(cfg.UI.Border)). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + title := lipgloss.NewStyle(). + Width(contentWidth). + Padding(0, 1). + Background(palette.Info). + Foreground(palette.Background). + Bold(true). + Render("PREVIEW " + previewIcon(preview) + " " + preview.Title) + + parts := []string{title} + usedHeight := lipgloss.Height(title) + if cfg.Preview.ShowMetadata { + metaView := renderMetadata(preview.Metadata, palette, innerWidth, useNerdfont) + parts = append(parts, metaView) + usedHeight += lipgloss.Height(metaView) + } + contentHeight := max(innerHeight-usedHeight, 3) + viewportModel.Width = max(innerWidth-2, 10) + viewportModel.Height = max(contentHeight-3, 1) + + // Directory previews: borrow the column layout from the browser pane + // (renderPaneRows + renderColumnsHeader at the same innerWidth), + // but non-interactive (no cursor, no selection). + if preview.Kind == vfs.PreviewKindDirectory && len(preview.Entries) > 0 { + dirPane := BrowserPane{Entries: preview.Entries} + headerRow := renderColumnsHeader(cfg, innerWidth, palette, palette.Panel, useNerdfont, false) + rows := renderPaneRows(dirPane, cfg, palette, innerWidth, contentHeight, false, -1, palette.Panel, useNerdfont, false) + parts = append(parts, lipgloss.JoinVertical(lipgloss.Left, headerRow, rows)) + } else { + parts = append(parts, renderPreviewContent(viewportModel, palette, innerWidth, contentHeight)) + } + + content := lipgloss.NewStyle(). + Width(innerWidth). + MaxHeight(innerHeight). + Background(palette.Panel). + Render(lipgloss.JoinVertical(lipgloss.Left, parts...)) + return box.Render(content) +} + +func renderSelectionPane(preview vfs.Preview, viewportModel *viewport.Model, palette theme.Palette, width int, height int) string { + content := preview.PlainBody + if strings.TrimSpace(content) == "" { + content = preview.Body + } + viewportModel.Width = max(width, 1) + viewportModel.Height = max(height, 1) + viewportModel.SetContent(content) + + return lipgloss.NewStyle(). + Width(width). + Height(height). + Background(palette.Panel). + Foreground(palette.Text). + Render(viewportModel.View()) +} + +func renderMetadata(meta vfs.Metadata, palette theme.Palette, width int, useNerdfont bool) string { + outerWidth := max(width-2, 1) + innerWidth := max(outerWidth-2, 1) + leftRows := []string{ + fmt.Sprintf("kind: %s", fallback(meta.Kind, "n/a")), + fmt.Sprintf("size: %s", metaSize(meta)), + fmt.Sprintf("created: %s", fallback(meta.CreatedAt, "n/a")), + } + rightRows := []string{ + fmt.Sprintf("modified: %s", fallback(meta.ModifiedAt, "n/a")), + fmt.Sprintf("mode: %s", fallback(meta.Permissions, "n/a")), + } + if meta.ImageFormat != "" { + rightRows = append(rightRows, fmt.Sprintf("image: %s %s", meta.ImageFormat, meta.ImageSize)) + } + if meta.Duration != "" { + rightRows = append(rightRows, fmt.Sprintf("duration: %s", meta.Duration)) + } + if meta.Bitrate != "" { + rightRows = append(rightRows, fmt.Sprintf("bitrate: %s", meta.Bitrate)) + } + if meta.AudioCodec != "" { + rightRows = append(rightRows, fmt.Sprintf("audio: %s", meta.AudioCodec)) + } + if meta.VideoCodec != "" { + rightRows = append(rightRows, fmt.Sprintf("video: %s", meta.VideoCodec)) + } + if meta.Dimensions != "" { + rightRows = append(rightRows, fmt.Sprintf("resolution: %s", meta.Dimensions)) + } + if meta.SampleRate != "" { + rightRows = append(rightRows, fmt.Sprintf("rate: %s", meta.SampleRate)) + } + if meta.Channels != "" { + rightRows = append(rightRows, fmt.Sprintf("channels: %s", meta.Channels)) + } + if meta.PageCount != "" { + rightRows = append(rightRows, fmt.Sprintf("pages: %s", meta.PageCount)) + } + + leftWidth := max(innerWidth/2, 18) + if leftWidth > innerWidth { + leftWidth = innerWidth + } + rightWidth := max(innerWidth-leftWidth, 0) + columnHeight := max(len(leftRows), len(rightRows)) + left := lipgloss.NewStyle(). + Width(leftWidth). + Height(columnHeight). + Background(palette.PanelElevated). + Foreground(palette.Muted). + Render(strings.Join(leftRows, "\n")) + right := lipgloss.NewStyle(). + Width(rightWidth). + Height(columnHeight). + Background(palette.PanelElevated). + Foreground(palette.Text). + Render(strings.Join(rightRows, "\n")) + + copyIcon := "📋" + if useNerdfont { + copyIcon = "󰆏" + } + iconWidth := lipgloss.Width(copyIcon) + pathAvailable := max(innerWidth-6-iconWidth-3, 10) // "path: "=6, icon, spacing + pathLine := lipgloss.NewStyle(). + Width(innerWidth). + Background(palette.PanelElevated). + Foreground(palette.Text). + Render(fmt.Sprintf("path: %s %s", truncateMiddle(meta.Path, pathAvailable), copyIcon)) + + return lipgloss.NewStyle(). + Width(outerWidth). + Padding(0, 1). + Background(palette.PanelElevated). + BorderStyle(lipgloss.NormalBorder()). + BorderBottom(true). + BorderForeground(palette.Border). + BorderBackground(palette.PanelElevated). + Render(lipgloss.JoinVertical( + lipgloss.Left, + lipgloss.JoinHorizontal(lipgloss.Top, left, right), + "", + pathLine, + )) +} + +func renderTitleBar(m Model) string { + left := lipgloss.NewStyle(). + Foreground(m.palette.Background). + Background(m.palette.Accent). + Bold(true). + Padding(0, 1). + Render(strings.ToUpper(m.cfg.UI.AppTitle)) + + centerParts := []string{ + fmt.Sprintf("theme:%s", m.cfg.UI.Theme), + fmt.Sprintf("hidden:%t", m.cfg.Browser.ShowHidden), + fmt.Sprintf("sort:%s", m.cfg.Browser.Sort.By), + fmt.Sprintf("info:%t", m.infoMode), + } + center := lipgloss.NewStyle(). + Foreground(m.palette.Text). + Background(m.palette.Panel). + Padding(0, 1). + Render(strings.Join(centerParts, " ")) + + configLabel := "cfg:default" + if m.configPath != "" { + configLabel = "cfg:" + filepath.Base(m.configPath) + } + right := lipgloss.NewStyle(). + Foreground(m.palette.Muted). + Background(m.palette.Panel). + Padding(0, 1). + Render(configLabel) + + fillWidth := max(m.width-lipgloss.Width(left)-lipgloss.Width(center)-lipgloss.Width(right), 0) + fill := lipgloss.NewStyle(). + Width(fillWidth). + Background(m.palette.Panel). + Render("") + + return left + center + fill + right +} + +func renderFooter(m Model) string { + parts := make([]string, 0, 8) + sep := lipgloss.NewStyle().Background(m.palette.Footer).Render(" ") + prefix := lipgloss.NewStyle().Background(m.palette.Footer).Render(" ") + for _, binding := range m.keys.ShortHelp() { + help := binding.Help() + if help.Key == "" || help.Desc == "" { + continue + } + keyView := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.FooterKey). + Bold(true). + Render(help.Key) + descView := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.Text). + Render(" " + help.Desc) + parts = append(parts, keyView+descView) + } + line := strings.Join(parts, sep) + if m.selectMode { + modeLabel := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.Info). + Bold(true). + Render("SELECT TEXT MODE") + if line != "" { + line += sep + } + line += modeLabel + } + if m.visualMode { + modeLabel := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.Marked). + Bold(true). + Render("VISUAL MODE") + if line != "" { + line += sep + } + line += modeLabel + } + line = prefix + line + line = ansi.Truncate(line, m.width, "") + fill := m.width - ansi.StringWidth(line) + if fill > 0 { + line += lipgloss.NewStyle(). + Background(m.palette.Footer). + Render(strings.Repeat(" ", fill)) + } + return line +} + +func renderFilterBar(m Model) string { + prompt := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.FooterKey). + Bold(true). + Render(" / ") + inputView := m.filterInput.View() + inputStyle := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.Text) + line := prompt + inputStyle.Render(inputView) + filtered := m.filteredCount(m.activePane()) + if m.filterQuery != "" { + countStyle := lipgloss.NewStyle(). + Background(m.palette.Footer). + Foreground(m.palette.Muted) + line += countStyle.Render(fmt.Sprintf(" (%d)", filtered)) + } + line = ansi.Truncate(line, m.width, "") + fill := m.width - ansi.StringWidth(line) + if fill > 0 { + line += lipgloss.NewStyle(). + Background(m.palette.Footer). + Render(strings.Repeat(" ", fill)) + } + return line +} + +func renderModal(m Model, palette theme.Palette, width int) string { + if m.modal.kind == modalCopyProgress && m.copyJob != nil { + return renderCopyProgressModal(*m.copyJob, palette, width) + } + if m.modal.kind == modalArchiveProgress && m.archiveJob != nil { + return renderArchiveProgressModal(*m.archiveJob, palette, width) + } + if m.modal.kind == modalHelp { + return renderHelpModal(m.modal, palette, width) + } + + if m.modal.kind == modalSSHConnect { + return renderSSHConnectModal(m, palette, width) + } + + if m.modal.kind == modalThemeSelect { + return renderThemeSelectModal(m, palette, width) + } + + modal := m.modal + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + titleStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Bold(true).Foreground(palette.Accent) + noteStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Muted) + spacer := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Render(" ") + + box := lipgloss.NewStyle(). + Width(contentWidth). + Padding(1, 2). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(lipgloss.DoubleBorder()). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + lines := []string{titleStyle.Render(modal.title), spacer} + + for _, raw := range strings.Split(modal.body, "\n") { + lines = append(lines, renderModalBodyLine(raw, contentWidth, palette)) + } + + if modal.kind == modalMkdir || modal.kind == modalRename { + lines = append(lines, spacer, lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Render(modal.input.View())) + } + if modal.note != "" { + lines = append(lines, spacer) + if modal.note == "confirm-actions" { + lines = append(lines, renderModalNoteLine("Enter to confirm, Esc to cancel", contentWidth, palette, noteStyle)) + } else { + for _, raw := range strings.Split(modal.note, "\n") { + lines = append(lines, renderModalNoteLine(raw, contentWidth, palette, noteStyle)) + } + } + } + + return box.Render(strings.Join(lines, "\n")) +} + +func renderThemeSelectModal(m Model, palette theme.Palette, width int) string { + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + + // Pre-compute name column width (align names left, swatches right) + themeNames := m.themeSelector.names + maxNameLen := 0 + for _, name := range themeNames { + if len(name) > maxNameLen { + maxNameLen = len(name) + } + } + // Leave room for cursor (2 chars), name, spacing, and 5 swatches (10 chars) + swatchArea := 12 // " " gap + 5*" " swatches = 12 + nameColWidth := contentWidth - swatchArea - 3 // -3 for padding + if nameColWidth < 10 { + nameColWidth = 10 + } + + titleStyle := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel). + Bold(true). + Foreground(palette.Accent) + + padStyle := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel) + + textColStyle := lipgloss.NewStyle(). + Width(nameColWidth). + Background(palette.Panel). + Foreground(palette.Text) + + textColSelStyle := lipgloss.NewStyle(). + Width(nameColWidth). + Background(palette.Selection). + Foreground(palette.Text) + + cursorStyle := lipgloss.NewStyle(). + Width(2). + Background(palette.Panel). + Foreground(palette.Accent) + + cursorSelStyle := lipgloss.NewStyle(). + Width(2). + Background(palette.Selection). + Foreground(palette.Accent) + + box := lipgloss.NewStyle(). + Width(contentWidth). + Padding(1, 2). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(lipgloss.DoubleBorder()). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + spacer := padStyle.Render(" ") + + lines := []string{ + titleStyle.Render("Select Theme"), + spacer, + } + + for i, name := range themeNames { + tp, err := theme.Resolve(name) + if err != nil { + continue + } + + // Determine if this is the selected row + isSelected := i == m.themeSelector.cursor + + // Cursor indicator + var cursorPart string + if isSelected { + cursorPart = cursorSelStyle.Render("▸") + } else { + cursorPart = cursorStyle.Render(" ") + } + + // Name part with padding to align + paddedName := fmt.Sprintf("%-*s", maxNameLen, name) + var namePart string + if isSelected { + namePart = textColSelStyle.Render(paddedName) + } else { + namePart = textColStyle.Render(paddedName) + } + + // Swatches use the resolved theme's palette colors + // Background for swatches depends on whether row is selected + swatchBg := palette.Panel + if isSelected { + swatchBg = palette.Selection + } + swatch := lipgloss.NewStyle().Background(swatchBg).Render( + lipgloss.NewStyle().Background(tp.Background).Render(" ") + + lipgloss.NewStyle().Background(tp.Panel).Render(" ") + + lipgloss.NewStyle().Background(tp.Accent).Render(" ") + + lipgloss.NewStyle().Background(tp.Text).Render(" ") + + lipgloss.NewStyle().Background(tp.Selection).Render(" "), + ) + + // Gap between name and swatches + gapStyle := lipgloss.NewStyle(). + Width(1). + Background(swatchBg) + gap := gapStyle.Render(" ") + + // Build the row + row := cursorPart + namePart + gap + swatch + lines = append(lines, row) + } + + // Instruction line at the bottom with colored Enter/Esc tokens + lines = append(lines, spacer) + hintRaw := "↑/↓ navigate · Enter apply · Esc cancel" + if highlighted, ok := renderModalHintTokens(hintRaw, contentWidth, palette, palette.Muted); ok { + lines = append(lines, highlighted) + } else { + noteStyle := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel). + Foreground(palette.Muted) + lines = append(lines, noteStyle.Render(hintRaw)) + } + + return box.Render(strings.Join(lines, "\n")) +} + +func renderModalBodyLine(raw string, width int, palette theme.Palette) string { + base := lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Foreground(palette.Text) + if strings.TrimSpace(raw) == "" { + return base.Render("") + } + + if idx := strings.Index(raw, ":"); idx > 0 { + keyText := strings.TrimSpace(raw[:idx+1]) + valueText := strings.TrimLeft(raw[idx+1:], " ") + keyWidth := min(max(idx+2, 8), width) + valueWidth := max(width-keyWidth, 0) + + keyStyle := lipgloss.NewStyle(). + Width(keyWidth). + Background(palette.Panel). + Foreground(palette.FooterKey). + Bold(true) + valueStyle := lipgloss.NewStyle(). + Width(valueWidth). + Background(palette.Panel). + Foreground(palette.Text) + return base.Render(keyStyle.Render(keyText) + valueStyle.Render(valueText)) + } + + if strings.HasPrefix(strings.TrimSpace(raw), "Existing targets") { + return lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Foreground(palette.Warning). + Render(strings.TrimSpace(raw)) + } + + return base.Render(raw) +} + +func renderModalNoteLine(raw string, width int, palette theme.Palette, fallback lipgloss.Style) string { + trimmed := strings.TrimSpace(raw) + if trimmed == "" { + return fallback.Render("") + } + + if highlighted, ok := renderModalHintTokens(raw, width, palette, palette.Muted); ok { + return highlighted + } + + for _, sep := range []string{" to ", " (", ","} { + if idx := strings.Index(raw, sep); idx > 0 { + keyLabel := strings.TrimSpace(raw[:idx]) + action := strings.TrimLeft(raw[idx:], " ") + keyWidth := min(max(lipgloss.Width(keyLabel)+2, 10), width) + actionWidth := max(width-keyWidth, 0) + keyStyle := lipgloss.NewStyle(). + Width(keyWidth). + Background(palette.Panel). + Foreground(palette.Accent). + Bold(true) + actionStyle := lipgloss.NewStyle(). + Width(actionWidth). + Background(palette.Panel). + Foreground(palette.Muted) + return keyStyle.Render(keyLabel) + actionStyle.Render(action) + } + } + + return fallback.Render(raw) +} + +func renderModalHintTokens(raw string, width int, palette theme.Palette, baseColor lipgloss.Color) (string, bool) { + type tokenStyle struct { + token string + color lipgloss.Color + } + tokens := []tokenStyle{ + {token: "Background", color: palette.Accent}, + {token: "Cancel", color: palette.CancelButton}, + {token: "Enter", color: palette.Accent}, + {token: "Esc", color: palette.CancelButton}, + } + contains := false + for _, entry := range tokens { + if strings.Contains(raw, entry.token) { + contains = true + break + } + } + if !contains { + return "", false + } + + var line strings.Builder + rest := raw + for len(rest) > 0 { + nextIdx := -1 + nextToken := "" + nextColor := baseColor + for _, entry := range tokens { + idx := strings.Index(rest, entry.token) + if idx >= 0 && (nextIdx == -1 || idx < nextIdx) { + nextIdx = idx + nextToken = entry.token + nextColor = entry.color + } + } + if nextIdx == -1 { + line.WriteString(lipgloss.NewStyle(). + Background(palette.Panel). + Foreground(baseColor). + Render(rest)) + break + } + if nextIdx > 0 { + line.WriteString(lipgloss.NewStyle(). + Background(palette.Panel). + Foreground(baseColor). + Render(rest[:nextIdx])) + } + line.WriteString(lipgloss.NewStyle(). + Background(palette.Panel). + Foreground(nextColor). + Bold(true). + Render(nextToken)) + rest = rest[nextIdx+len(nextToken):] + } + + return lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Render(line.String()), true +} + +func renderConfirmActions(width int, palette theme.Palette) string { + const minButtonWidth = 10 + const maxButtonWidth = 14 + const gapWidth = 4 + labelWidth := max(lipgloss.Width("Enter / y"), lipgloss.Width("Esc / n")) + buttonWidth := min(max(labelWidth+2, minButtonWidth), maxButtonWidth) + buttonWidth = min(buttonWidth, max((width-gapWidth)/2, labelWidth)) + + confirm := lipgloss.NewStyle(). + Width(buttonWidth). + Align(lipgloss.Center). + Background(palette.ConfirmButton). + Foreground(palette.Background). + Bold(true). + Render("Enter / y") + + cancel := lipgloss.NewStyle(). + Width(buttonWidth). + Align(lipgloss.Center). + Background(palette.CancelButton). + Foreground(palette.Background). + Bold(true). + Render("Esc / n") + + gap := lipgloss.NewStyle(). + Width(gapWidth). + Background(palette.Panel). + Render("") + enterBias := lipgloss.NewStyle(). + Width(9). + Background(palette.Panel). + Render("") + cancelTail := lipgloss.NewStyle(). + Width(5). + Background(palette.Panel). + Render("") + group := lipgloss.JoinHorizontal(lipgloss.Top, confirm, enterBias, gap, cancel, cancelTail) + row := lipgloss.PlaceHorizontal( + width, + lipgloss.Center, + group, + lipgloss.WithWhitespaceBackground(palette.Panel), + ) + return lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Render(row) +} + +func renderHelpModal(modal modalState, palette theme.Palette, width int) string { + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + titleStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Bold(true).Foreground(palette.Accent) + lineStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Text) + mutedLineStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Muted) + noteStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.FooterKey).Bold(true) + spacer := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Render(" ") + + keyColStyle := lipgloss.NewStyle().Width(24).Background(palette.Panel).Foreground(palette.FooterKey).Bold(true) + descColStyle := lipgloss.NewStyle().Background(palette.Panel).Foreground(palette.Text) + + box := lipgloss.NewStyle(). + Width(contentWidth). + Padding(1, 2). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(lipgloss.DoubleBorder()). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + lines := []string{titleStyle.Render(modal.title), spacer} + for _, raw := range strings.Split(modal.body, "\n") { + trimmed := strings.TrimSpace(raw) + if trimmed == "" { + lines = append(lines, spacer) + continue + } + + if strings.HasPrefix(raw, " ") { + keyLabel, action := splitHelpItem(raw) + if action == "" { + lines = append(lines, lineStyle.Render(trimmed)) + continue + } + row := keyColStyle.Render(keyLabel) + descColStyle.Render(action) + lines = append(lines, lineStyle.Render(row)) + continue + } + + if strings.HasSuffix(trimmed, ".") { + lines = append(lines, mutedLineStyle.Render(trimmed)) + continue + } + + sectionColor := sectionColorForHeader(trimmed, palette) + header := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel). + Foreground(sectionColor). + Bold(true). + Render(trimmed) + lines = append(lines, header) + } + + if modal.note != "" { + lines = append(lines, spacer) + if highlighted, ok := renderModalHintTokens(modal.note, contentWidth, palette, palette.FooterKey); ok { + lines = append(lines, highlighted) + } else { + lines = append(lines, noteStyle.Render(modal.note)) + } + } + + return box.Render(strings.Join(lines, "\n")) +} + +func splitHelpItem(raw string) (string, string) { + value := strings.TrimSpace(raw) + for idx := 0; idx < len(value)-1; idx++ { + if value[idx] == ' ' && value[idx+1] == ' ' { + keyLabel := strings.TrimSpace(value[:idx]) + action := strings.TrimSpace(value[idx:]) + if keyLabel != "" && action != "" { + return keyLabel, action + } + } + } + return value, "" +} + +func sectionColorForHeader(header string, palette theme.Palette) lipgloss.Color { + switch header { + case "Navigation": + return palette.HelpNav + case "View and Panels": + return palette.HelpPanels + case "Dialogs and Transfers": + return palette.HelpDialogs + case "Mouse": + return palette.HelpMouse + default: + return palette.Accent + } +} + +func renderCopyProgressModal(job copyJobState, palette theme.Palette, width int) string { + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + titleStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Bold(true).Foreground(palette.Accent) + mutedStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Muted) + spacer := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Render(" ") + + box := lipgloss.NewStyle(). + Width(contentWidth). + Padding(1, 2). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(lipgloss.DoubleBorder()). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + progress := job.progress + filesLabel := fmt.Sprintf("%d / ?", progress.FilesDone) + if progress.FilesTotal > 0 { + filesLabel = fmt.Sprintf("%d / %d", progress.FilesDone, progress.FilesTotal) + } + + ratio := 0.0 + if progress.FilesTotal > 0 { + ratio = float64(progress.FilesDone) / float64(progress.FilesTotal) + } + + lines := []string{ + titleStyle.Render(progressTitle(job.kind)), + spacer, + renderProgressStatLine("Stage:", progressStageLabel(progress, job.kind), contentWidth, palette), + renderProgressStatLine("Target:", job.targetDir, contentWidth, palette), + spacer, + renderProgressStatLine("Files:", filesLabel, contentWidth, palette), + } + if progress.FilesTotal > 0 { + barAndPct := []string{ + spacer, + renderProgressBarLine(ratio, contentWidth, palette), + renderProgressPercentLine(ratio, contentWidth, palette), + } + lines = append(lines, barAndPct...) + } + lines = append(lines, spacer, renderModalNoteLine("Background / b, Cancel / c", contentWidth, palette, mutedStyle)) + if job.background { + lines = append(lines, mutedStyle.Render("Transfer continues in background")) + } + + return box.Render(strings.Join(lines, "\n")) +} + +func renderArchiveProgressModal(job archiveJobState, palette theme.Palette, width int) string { + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + titleStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Bold(true).Foreground(palette.Accent) + mutedStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Muted) + spacer := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Render(" ") + + box := lipgloss.NewStyle(). + Width(contentWidth). + Padding(1, 2). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(lipgloss.DoubleBorder()). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + progress := job.progress + ratio := 0.0 + switch job.kind { + case "extract", "delete": + // Extraction/delete: progress by file count (no byte tracking) + if progress.FilesTotal > 0 { + ratio = float64(progress.FilesDone) / float64(progress.FilesTotal) + } + default: + if progress.BytesTotal > 0 { + ratio = float64(progress.BytesDone) / float64(progress.BytesTotal) + } + } + + stage := progress.Stage + if stage == "" { + switch job.kind { + case "extract": + stage = "Extracting data" + case "delete": + stage = "Deleting files" + default: + stage = "Archiving data" + } + } + + var title string + switch job.kind { + case "extract": + title = "Extracting" + case "delete": + title = "Deleting" + default: + title = "Archiving" + } + + lines := []string{ + titleStyle.Render(title), + spacer, + renderProgressBarLine(ratio, contentWidth, palette), + spacer, + renderProgressPercentLine(ratio, contentWidth, palette), + renderProgressStatLine("Stage:", stage, contentWidth, palette), + spacer, + renderProgressStatLine("Files:", fmt.Sprintf("%d / %d", progress.FilesDone, progress.FilesTotal), contentWidth, palette), + } + + // Only show size and speed for archive creation (not tracked during extraction/delete) + if job.kind == "archive" { + lines = append(lines, + renderProgressStatLine("Size:", fmt.Sprintf("%s / %s", formatSize(progress.BytesDone, true), formatSize(progress.BytesTotal, true)), contentWidth, palette), + renderProgressStatLine("Speed:", transferSpeed(progress.BytesDone, job.startedAt), contentWidth, palette), + ) + } + + lines = append(lines, spacer, renderModalNoteLine("Background / b, Cancel / c", contentWidth, palette, mutedStyle)) + if job.background { + switch job.kind { + case "extract": + lines = append(lines, mutedStyle.Render("Extraction continues in background")) + case "delete": + lines = append(lines, mutedStyle.Render("Delete continues in background")) + default: + lines = append(lines, mutedStyle.Render("Archive continues in background")) + } + } + + return box.Render(strings.Join(lines, "\n")) +} + +func renderProgressBar(ratio float64, width int, palette theme.Palette) string { + if width < 10 { + width = 10 + } + if ratio < 0 { + ratio = 0 + } + if ratio > 1 { + ratio = 1 + } + filled := int(float64(width) * ratio) + if filled > width { + filled = width + } + if filled < 0 { + filled = 0 + } + + bar := lipgloss.NewStyle().Foreground(palette.ProgressFill).Render(strings.Repeat("█", filled)) + rest := lipgloss.NewStyle().Foreground(palette.ProgressEmpty).Render(strings.Repeat("░", width-filled)) + return bar + rest +} + +func renderProgressBarLine(ratio float64, width int, palette theme.Palette) string { + sidePad := max(width/8, 6) + barWidth := max(width-(sidePad*2), 10) + rightPad := max(width-sidePad-barWidth, 0) + left := lipgloss.NewStyle(). + Width(sidePad). + Background(palette.Panel). + Render("") + bar := lipgloss.NewStyle(). + Width(barWidth). + Background(palette.Panel). + Render(renderProgressBar(ratio, barWidth, palette)) + right := lipgloss.NewStyle(). + Width(rightPad). + Background(palette.Panel). + Render("") + return lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Render(left + bar + right) +} + +func renderProgressStatLine(label string, value string, width int, palette theme.Palette) string { + keyWidth := min(max(lipgloss.Width(label)+1, 8), width) + valueWidth := max(width-keyWidth, 0) + keyStyle := lipgloss.NewStyle(). + Width(keyWidth). + Background(palette.Panel). + Foreground(palette.FooterKey). + Bold(true) + valueStyle := lipgloss.NewStyle(). + Width(valueWidth). + Background(palette.Panel). + Foreground(palette.Text) + return keyStyle.Render(label) + valueStyle.Render(value) +} + +func renderProgressActions(width int, palette theme.Palette) string { + const minButtonWidth = 10 + const maxButtonWidth = 14 + const gapWidth = 4 + labelWidth := max(lipgloss.Width("Background / b"), lipgloss.Width("Cancel / c")) + buttonWidth := min(max(labelWidth+2, minButtonWidth), maxButtonWidth) + buttonWidth = min(buttonWidth, max((width-gapWidth)/2, labelWidth)) + + backgroundBtn := lipgloss.NewStyle(). + Width(buttonWidth). + Align(lipgloss.Center). + Background(palette.Info). + Foreground(palette.Background). + Bold(true). + Render("Background / b") + + cancelBtn := lipgloss.NewStyle(). + Width(buttonWidth). + Align(lipgloss.Center). + Background(palette.CancelButton). + Foreground(palette.Background). + Bold(true). + Render("Cancel / c") + + gap := lipgloss.NewStyle(). + Width(gapWidth). + Background(palette.Panel). + Render("") + enterBias := lipgloss.NewStyle(). + Width(9). + Background(palette.Panel). + Render("") + cancelTail := lipgloss.NewStyle(). + Width(5). + Background(palette.Panel). + Render("") + group := lipgloss.JoinHorizontal(lipgloss.Top, backgroundBtn, enterBias, gap, cancelBtn, cancelTail) + row := lipgloss.PlaceHorizontal( + width, + lipgloss.Center, + group, + lipgloss.WithWhitespaceBackground(palette.Panel), + ) + return lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Render(row) +} + +func renderProgressPercentLine(ratio float64, width int, palette theme.Palette) string { + percent := lipgloss.NewStyle(). + Width(width). + Background(palette.Panel). + Foreground(palette.Info). + Bold(true). + Render(fmt.Sprintf("%.0f%%", ratio*100)) + return percent +} + +func transferSpeed(bytesDone int64, startedAt time.Time) string { + if startedAt.IsZero() || bytesDone <= 0 { + return "calculating..." + } + elapsed := time.Since(startedAt) + if elapsed <= 0 { + return "calculating..." + } + perSecond := int64(float64(bytesDone) / elapsed.Seconds()) + if perSecond <= 0 { + return "calculating..." + } + return fmt.Sprintf("%s/s", vfs.HumanSize(perSecond)) +} + +func progressStageLabel(progress vfs.CopyProgress, kind fileOpKind) string { + if strings.TrimSpace(progress.Stage) != "" { + if progress.Stage == "Transferring data" && progress.BytesTotal > 0 && progress.BytesDone >= progress.BytesTotal { + if progress.FilesDone < progress.FilesTotal { + return "Finalizing file" + } + if kind == opMove { + return "Preparing move finalization" + } + return "Finalizing transfer" + } + return progress.Stage + } + if kind == opMove { + return "Preparing move" + } + return "Transferring data" +} + +func overlayCenter(base string, overlay string, width int) string { + if width <= 0 { + return base + } + + baseLines := strings.Split(base, "\n") + overlayLines := strings.Split(overlay, "\n") + if len(baseLines) == 0 || len(overlayLines) == 0 { + return base + } + + overlayWidth := 0 + for _, line := range overlayLines { + overlayWidth = max(overlayWidth, ansi.StringWidth(line)) + } + startY := max((len(baseLines)-len(overlayLines))/2, 0) + startX := max((width-overlayWidth)/2, 0) + endX := startX + overlayWidth + + for idx, line := range overlayLines { + targetY := startY + idx + if targetY >= len(baseLines) { + break + } + baseLine := baseLines[targetY] + left := ansi.Cut(baseLine, 0, startX) + right := ansi.Cut(baseLine, endX, width) + baseLines[targetY] = left + line + right + } + + return strings.Join(baseLines, "\n") +} + +func renderPreviewContent(viewportModel *viewport.Model, palette theme.Palette, width int, height int) string { + outerWidth := max(width-2, 1) + innerWidth := max(outerWidth-2, 1) + innerHeight := max(height, 1) + + body := lipgloss.NewStyle(). + Width(innerWidth). + Height(max(innerHeight, 1)). + Padding(0, 1). + Background(palette.Panel). + Render(viewportModel.View()) + + return lipgloss.NewStyle(). + Width(outerWidth). + Height(innerHeight). + Background(palette.Panel). + BorderStyle(lipgloss.NormalBorder()). + BorderTop(true). + BorderForeground(palette.Border). + BorderBackground(palette.Panel). + Render(body) +} + +func previewIcon(preview vfs.Preview) string { + switch preview.Kind { + case vfs.PreviewKindDirectory: + return "" + case vfs.PreviewKindImage: + return "󰋩" + case vfs.PreviewKindText: + return "󰈙" + case vfs.PreviewKindPDF: + return "󰷉" + case vfs.PreviewKindAudio: + return "󰋋" + case vfs.PreviewKindVideo: + return "󰋲" + case vfs.PreviewKindBinary: + return "󰈔" + case vfs.PreviewKindError: + return "" + default: + return "󰇙" + } +} + +func (p pendingOperation) cmd() tea.Cmd { + switch p.kind { + case opMove: + return nil + case opDelete: + return trashPathsCmd(p.sourcePaths) + case opPermanentDelete: + return deletePathsPermanentCmd(p.sourcePaths) + default: + return nil + } +} + +func operationCmd(kind fileOpKind, sourcePath, targetDir string, overwrite bool) tea.Cmd { + switch kind { + case opMove: + return moveCmd(sourcePath, targetDir, overwrite) + default: + return nil + } +} + +func dirSizeCmd(path string) tea.Cmd { + return func() tea.Msg { + size, err := vfs.DirectorySize(path) + return dirSizeMsg{path: path, size: size, err: err} + } +} + +func remoteDirSizeCmd(client *remote.SSHClient, path string) tea.Cmd { + return func() tea.Msg { + size, err := client.DirectorySize(path) + return dirSizeMsg{path: path, size: size, err: err} + } +} + +func copyPlanCmd(kind fileOpKind, sourcePaths []string, targetDir string, overwrite bool, existingTargets int) tea.Cmd { + return func() tea.Msg { + stats := vfs.TransferStats{} + var err error + for _, sourcePath := range sourcePaths { + part, statErr := vfs.CopyStats(sourcePath) + if statErr != nil { + err = statErr + break + } + stats.FilesTotal += part.FilesTotal + stats.BytesTotal += part.BytesTotal + } + return copyPlanMsg{ + kind: kind, + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + overwrite: overwrite, + existingTargets: existingTargets, + stats: stats, + err: err, + } + } +} + +// remoteCopyPlanCmd computes transfer stats for remote-involved copy/move operations. +// For local sources it uses vfs.CopyStats; for remote sources it walks the SFTP tree. +func (m *Model) remoteCopyPlanCmd(kind fileOpKind, sourcePaths []string, targetDir string, + sourceIsRemote, targetIsRemote bool, srcClient, dstClient *remote.SSHClient) tea.Cmd { + + return func() tea.Msg { + stats := vfs.TransferStats{} + var err error + + for _, sourcePath := range sourcePaths { + if !sourceIsRemote { + // Local source — use existing stats function + part, statErr := vfs.CopyStats(sourcePath) + if statErr != nil { + err = statErr + break + } + stats.FilesTotal += part.FilesTotal + stats.BytesTotal += part.BytesTotal + } else { + // Remote source — walk via SFTP + info, statErr := srcClient.Lstat(sourcePath) + if statErr != nil { + err = statErr + break + } + if !info.IsDir() { + stats.FilesTotal++ + stats.BytesTotal += info.Size() + } else { + walkErr := srcClient.Walk(sourcePath, func(walkPath string, info os.FileInfo, walkErr error) error { + if walkErr != nil { + return walkErr + } + if !info.IsDir() { + stats.FilesTotal++ + stats.BytesTotal += info.Size() + } + return nil + }) + if walkErr != nil { + err = walkErr + break + } + } + } + } + + return copyPlanMsg{ + kind: kind, + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + stats: stats, + err: err, + srcClient: srcClient, + dstClient: dstClient, + } + } +} + +// remoteDeletePlanCmd computes delete stats for remote paths via SFTP. +func (m *Model) remoteDeletePlanCmd(sources []string, client *remote.SSHClient) tea.Cmd { + return func() tea.Msg { + stats := vfs.TransferStats{} + var err error + + for _, sourcePath := range sources { + info, statErr := client.Lstat(sourcePath) + if statErr != nil { + err = statErr + break + } + if !info.IsDir() { + stats.FilesTotal++ + stats.BytesTotal += info.Size() + } else { + walkErr := client.Walk(sourcePath, func(walkPath string, info os.FileInfo, walkErr error) error { + if walkErr != nil { + return walkErr + } + if !info.IsDir() { + stats.FilesTotal++ + stats.BytesTotal += info.Size() + } + return nil + }) + if walkErr != nil { + err = walkErr + break + } + } + } + + return deletePlanMsg{ + kind: opDelete, + sourcePaths: append([]string(nil), sources...), + stats: stats, + err: err, + srcClient: client, + } + } +} + +func (m *Model) enterArchive(selected vfs.Entry) error { + pane := m.activePane() + // Save current path to history before opening the archive. + pane.PushHistory(pane.Path) + tempDir, err := vfs.ExtractArchiveToTemp(selected.Path) + if err != nil { + return err + } + pane.PushArchive(ArchiveMount{ + SourcePath: selected.Path, + ParentPath: pane.Path, + RootPath: tempDir, + TempDir: tempDir, + }) + pane.Path = tempDir + pane.Cursor = 0 + pane.Offset = 0 + if err := m.reloadPane(pane.ID, ""); err != nil { + _ = os.RemoveAll(tempDir) + _, _ = pane.PopArchive() + return err + } + m.status = fmt.Sprintf("Opened archive %s", selected.DisplayName()) + return nil +} + +func (m *Model) cleanupArchiveMounts() { + for _, pane := range []*BrowserPane{&m.left, &m.right} { + for _, mount := range pane.ClearArchives() { + _ = os.RemoveAll(mount.TempDir) + } + } +} + +func archivePlanCmd(sourcePaths []string, targetDir string) tea.Cmd { + return func() tea.Msg { + stats := vfs.TransferStats{} + var err error + for _, sourcePath := range sourcePaths { + part, statErr := vfs.CopyStats(sourcePath) + if statErr != nil { + err = statErr + break + } + stats.FilesTotal += part.FilesTotal + stats.BytesTotal += part.BytesTotal + } + return archivePlanMsg{ + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + stats: stats, + err: err, + } + } +} + +func waitCopyProgressCmd(ch <-chan tea.Msg) tea.Cmd { + return func() tea.Msg { + return <-ch + } +} + +func waitArchiveProgressCmd(ch <-chan tea.Msg) tea.Cmd { + return func() tea.Msg { + return <-ch + } +} + +func dismissNoticeCmd(delay time.Duration) tea.Cmd { + return tea.Tick(delay, func(time.Time) tea.Msg { + return dismissNoticeMsg{} + }) +} + +func dismissYankFlashCmd(delay time.Duration) tea.Cmd { + return tea.Tick(delay, func(time.Time) tea.Msg { + return dismissYankFlashMsg{} + }) +} + +func (m *Model) startCopyJob(kind fileOpKind, sourcePaths []string, targetDir string, overwrite bool, stats vfs.TransferStats) tea.Cmd { + m.nextCopyJob++ + jobID := m.nextCopyJob + ctx, cancel := context.WithCancel(context.Background()) + m.copyJob = ©JobState{ + id: jobID, + kind: kind, + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + overwrite: overwrite, + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: stats.FilesTotal, + BytesDone: 0, + BytesTotal: stats.BytesTotal, + CurrentPath: sourcePaths[0], + Stage: "Counting files...", + }, + cancel: cancel, + startedAt: time.Now(), + } + m.modal = modalState{kind: modalCopyProgress} + m.status = strings.Title(operationVerb(kind)) + " started" + + return tea.Batch( + func() tea.Msg { + go func() { + var statErr error + doneFiles := 0 + totalFiles := 0 + + // Phase 1: count files across all sources + entriesStats := make([]vfs.TransferStats, len(sourcePaths)) + for i, sourcePath := range sourcePaths { + entryStats, err := vfs.CopyStats(sourcePath) + if err != nil { + m.copyProgress <- copyDoneMsg{ + jobID: jobID, + kind: kind, + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + err: err, + } + return + } + entriesStats[i] = entryStats + totalFiles += entryStats.FilesTotal + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: totalFiles, + CurrentPath: sourcePath, + Stage: fmt.Sprintf("Counting files... %d found", totalFiles), + }, + } + } + + // Phase 2: copy with known total + for i, sourcePath := range sourcePaths { + entryStats := entriesStats[i] + progressFn := func(progress vfs.CopyProgress) { + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles + progress.FilesDone, + FilesTotal: totalFiles, + BytesDone: 0, + BytesTotal: 0, + CurrentPath: progress.CurrentPath, + Stage: "Copying files...", + }, + } + } + switch kind { + case opMove: + _, statErr = vfs.MovePathWithProgressContext(ctx, sourcePath, targetDir, overwrite, entryStats, progressFn) + default: + _, statErr = vfs.CopyPathWithProgressContext(ctx, sourcePath, targetDir, overwrite, entryStats, progressFn) + } + if statErr != nil { + m.copyProgress <- copyDoneMsg{ + jobID: jobID, + kind: kind, + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + err: statErr, + } + return + } + doneFiles += entryStats.FilesTotal + } + m.copyProgress <- copyDoneMsg{ + jobID: jobID, + kind: kind, + sourcePaths: append([]string(nil), sourcePaths...), + targetDir: targetDir, + } + }() + return nil + }, + waitCopyProgressCmd(m.copyProgress), + ) +} + +func (m *Model) startArchiveJob(sourcePaths []string, targetDir string, format string, stats vfs.TransferStats) tea.Cmd { + m.nextArchiveJob++ + jobID := m.nextArchiveJob + ctx, cancel := context.WithCancel(context.Background()) + + archiveName := vfs.ArchiveName(sourcePaths, format) + archivePath := filepath.Join(targetDir, archiveName) + + m.archiveJob = &archiveJobState{ + id: jobID, + kind: "archive", + sourcePaths: append([]string(nil), sourcePaths...), + targetPath: archivePath, + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: stats.FilesTotal, + BytesDone: 0, + BytesTotal: stats.BytesTotal, + CurrentPath: sourcePaths[0], + }, + cancel: cancel, + startedAt: time.Now(), + } + m.modal = modalState{kind: modalArchiveProgress} + m.status = "Archiving started" + + return tea.Batch( + func() tea.Msg { + go func() { + emitProgress := func(p vfs.CopyProgress) { + m.archiveProgress <- archiveProgressMsg{ + jobID: jobID, + progress: p, + } + } + err := vfs.CreateArchive(ctx, sourcePaths, archivePath, emitProgress) + if err != nil { + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: append([]string(nil), sourcePaths...), + targetPath: archivePath, + err: err, + } + return + } + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: append([]string(nil), sourcePaths...), + targetPath: archivePath, + } + }() + return nil + }, + waitArchiveProgressCmd(m.archiveProgress), + ) +} + +func (m *Model) startExtractJob(sourcePath, targetDir string) tea.Cmd { + m.nextArchiveJob++ + jobID := m.nextArchiveJob + ctx, cancel := context.WithCancel(context.Background()) + + m.archiveJob = &archiveJobState{ + id: jobID, + kind: "extract", + sourcePaths: []string{sourcePath}, + targetPath: targetDir, + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: 0, + BytesDone: 0, + BytesTotal: 0, + CurrentPath: sourcePath, + }, + cancel: cancel, + startedAt: time.Now(), + } + m.modal = modalState{kind: modalArchiveProgress} + m.status = "Extracting started" + + return tea.Batch( + func() tea.Msg { + go func() { + emitProgress := func(p vfs.CopyProgress) { + m.archiveProgress <- archiveProgressMsg{ + jobID: jobID, + progress: p, + } + } + err := vfs.ExtractArchiveToDir(ctx, sourcePath, targetDir, emitProgress) + if err != nil { + if errors.Is(err, context.Canceled) { + err = context.Canceled + } + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: []string{sourcePath}, + targetPath: targetDir, + err: err, + } + return + } + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: []string{sourcePath}, + targetPath: targetDir, + } + }() + return nil + }, + waitArchiveProgressCmd(m.archiveProgress), + ) +} + +func (m *Model) startDeleteJob(kind fileOpKind, sources []string) tea.Cmd { + m.nextArchiveJob++ + jobID := m.nextArchiveJob + ctx, cancel := context.WithCancel(context.Background()) + + m.archiveJob = &archiveJobState{ + id: jobID, + kind: "delete", + sourcePaths: append([]string(nil), sources...), + targetPath: "", + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: len(sources), + BytesDone: 0, + BytesTotal: 0, + CurrentPath: sources[0], + }, + cancel: cancel, + startedAt: time.Now(), + } + m.modal = modalState{kind: modalArchiveProgress} + verb := "Moving to trash" + if kind == opPermanentDelete { + verb = "Deleting" + } + m.status = verb + " started" + + return tea.Batch( + func() tea.Msg { + go func() { + verb := "move to trash" + if kind == opPermanentDelete { + verb = "delete permanently" + } + for i, sourcePath := range sources { + select { + case <-ctx.Done(): + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: append([]string(nil), sources...), + err: context.Canceled, + } + return + default: + } + + var err error + if kind == opPermanentDelete { + err = vfs.DeletePath(sourcePath) + } else { + err = vfs.MoveToTrash(sourcePath) + } + if err != nil { + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: append([]string(nil), sources...), + err: fmt.Errorf("%s %s: %w", verb, sourcePath, err), + } + return + } + + m.archiveProgress <- archiveProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: i + 1, + FilesTotal: len(sources), + CurrentPath: sourcePath, + Stage: verb, + }, + } + } + m.archiveProgress <- archiveDoneMsg{ + jobID: jobID, + sourcePaths: append([]string(nil), sources...), + } + }() + return nil + }, + waitArchiveProgressCmd(m.archiveProgress), + ) +} + +func moveCmd(sourcePath, targetDir string, overwrite bool) tea.Cmd { + return func() tea.Msg { + targetPath, err := vfs.MovePath(sourcePath, targetDir, overwrite) + return opMsg{kind: opMove, sourcePath: sourcePath, targetPath: targetPath, err: err} + } +} + +func trashPathsCmd(paths []string) tea.Cmd { + return func() tea.Msg { + for _, path := range paths { + if err := vfs.MoveToTrash(path); err != nil { + return opMsg{kind: opDelete, sourcePath: path, err: err} + } + } + return opMsg{kind: opDelete} + } +} + +func deletePathsPermanentCmd(paths []string) tea.Cmd { + return func() tea.Msg { + for _, path := range paths { + if err := vfs.DeletePath(path); err != nil { + return opMsg{kind: opPermanentDelete, sourcePath: path, err: err} + } + } + return opMsg{kind: opPermanentDelete} + } +} + +func trashPlanCmd(sourcePaths []string) tea.Cmd { + return func() tea.Msg { + stats := vfs.TransferStats{} + var err error + for _, sourcePath := range sourcePaths { + part, statErr := vfs.CopyStats(sourcePath) + if statErr != nil { + err = statErr + break + } + stats.FilesTotal += part.FilesTotal + stats.BytesTotal += part.BytesTotal + } + return deletePlanMsg{ + kind: opDelete, + sourcePaths: append([]string(nil), sourcePaths...), + stats: stats, + err: err, + } + } +} + +func deletePlanPermanentCmd(sourcePaths []string) tea.Cmd { + return func() tea.Msg { + stats := vfs.TransferStats{} + var err error + for _, sourcePath := range sourcePaths { + part, statErr := vfs.CopyStats(sourcePath) + if statErr != nil { + err = statErr + break + } + stats.FilesTotal += part.FilesTotal + stats.BytesTotal += part.BytesTotal + } + return deletePlanMsg{ + kind: opPermanentDelete, + sourcePaths: append([]string(nil), sourcePaths...), + stats: stats, + err: err, + } + } +} + +func (m *Model) mkdirCmd(parent, name string) tea.Cmd { + // Remote mkdir via SFTP + if mount, ok := m.activePane().CurrentRemote(); ok { + return func() tea.Msg { + targetPath := path.Join(parent, name) + err := mount.Client.MkdirAll(targetPath) + return opMsg{kind: opMkdir, targetPath: targetPath, err: err} + } + } + // Local mkdir + return func() tea.Msg { + targetPath, err := vfs.MakeDir(parent, name) + return opMsg{kind: opMkdir, targetPath: targetPath, err: err} + } +} + +func renameCmd(sourcePath, newName string) tea.Cmd { + return func() tea.Msg { + targetPath, err := vfs.RenamePath(sourcePath, newName) + return opMsg{kind: opRename, sourcePath: sourcePath, targetPath: targetPath, err: err} + } +} + +func selectedName(pane *BrowserPane) string { + selected, ok := pane.Selected() + if !ok { + return "" + } + return selected.Name +} + +func (m *Model) saveSession() { + leftMem := copyCursorMemory(m.left.cursorMemory) + rightMem := copyCursorMemory(m.right.cursorMemory) + + leftPath := m.left.Path + if m.left.InRemote() { + leftPath = "" + log.Printf("[SESSION] pane left is in remote mode, clearing saved path") + } + rightPath := m.right.Path + if m.right.InRemote() { + rightPath = "" + log.Printf("[SESSION] pane right is in remote mode, clearing saved path") + } + + // Always include current directory in cursor memory + if name := selectedName(&m.left); name != "" { + leftMem[m.left.Path] = name + } + if name := selectedName(&m.right); name != "" { + rightMem[m.right.Path] = name + } + s := config.SessionState{ + ActivePane: string(m.active), + Left: config.PaneSession{ + Path: leftPath, + EntryName: selectedName(&m.left), + CursorMemory: leftMem, + }, + Right: config.PaneSession{ + Path: rightPath, + EntryName: selectedName(&m.right), + CursorMemory: rightMem, + }, + } + if err := config.SaveSession(s); err != nil { + log.Printf("[SESSION] save failed: %v", err) + } else { + log.Printf("[SESSION] saved: active=%s left=%s right=%s cursorMem left=%d right=%d", + m.active, m.left.Path, m.right.Path, len(leftMem), len(rightMem)) + } +} + +func copyCursorMemory(src map[string]string) map[string]string { + dst := make(map[string]string, len(src)) + for k, v := range src { + dst[k] = v + } + return dst +} + +func applySession(m *Model) { + s, err := config.LoadSession() + if err != nil { + log.Printf("[SESSION] load failed: %v", err) + return + } + if s.ActivePane == "" && s.Left.Path == "" && s.Right.Path == "" { + log.Printf("[SESSION] no previous session found") + return + } + log.Printf("[SESSION] loaded: active=%s left=%s right=%s", s.ActivePane, s.Left.Path, s.Right.Path) + + applyPaneSession(&m.left, s.Left) + applyPaneSession(&m.right, s.Right) + + if s.ActivePane == string(PaneRight) { + m.active = PaneRight + } +} + +func applyPaneSession(pane *BrowserPane, ps config.PaneSession) { + if ps.Path == "" { + return + } + abs, err := filepath.Abs(ps.Path) + if err != nil { + log.Printf("[SESSION] skip pane path=%s: %v", ps.Path, err) + return + } + if err := canReadDir(abs); err != nil { + log.Printf("[SESSION] skip pane path=%s: %v", abs, err) + return + } + pane.Path = abs + // Restore per-directory cursor memory from previous session + if len(ps.CursorMemory) > 0 { + pane.cursorMemory = make(map[string]string, len(ps.CursorMemory)) + for k, v := range ps.CursorMemory { + pane.cursorMemory[k] = v + } + } + // Ensure current directory's entry is also in cursor memory + if ps.EntryName != "" { + if pane.cursorMemory == nil { + pane.cursorMemory = make(map[string]string) + } + pane.cursorMemory[abs] = ps.EntryName + } +} + +func canReadDir(path string) error { + f, err := os.Open(path) + if err != nil { + return err + } + defer f.Close() + info, err := f.Stat() + if err != nil { + return err + } + if !info.IsDir() { + return fmt.Errorf("not a directory: %s", path) + } + return nil +} + +func metaSize(meta vfs.Metadata) string { + if !meta.SizeKnown { + return "press Space" + } + return vfs.HumanSize(meta.Size) +} + +func fallback(value string, defaultValue string) string { + if strings.TrimSpace(value) == "" { + return defaultValue + } + return value +} + +func formatSize(size int64, human bool) string { + if human { + return vfs.HumanSize(size) + } + return fmt.Sprintf("%d", size) +} + +func formatCopyStatus(kind fileOpKind, progress vfs.CopyProgress) string { + filesLabel := fmt.Sprintf("%d/?", progress.FilesDone) + if progress.FilesTotal > 0 { + filesLabel = fmt.Sprintf("%d/%d", progress.FilesDone, progress.FilesTotal) + } + return fmt.Sprintf( + "%s in background: %s files", + strings.Title(operationVerb(kind)), + filesLabel, + ) +} + +func formatArchiveStatus(progress vfs.CopyProgress) string { + return fmt.Sprintf( + "Archiving in background: %d/%d files, %s/%s", + progress.FilesDone, + progress.FilesTotal, + formatSize(progress.BytesDone, true), + formatSize(progress.BytesTotal, true), + ) +} + +func transferSourceLabel(paths []string) string { + if len(paths) == 0 { + return "n/a" + } + if len(paths) == 1 { + return paths[0] + } + return fmt.Sprintf("%d selected entries", len(paths)) +} + +func pluralSuffix(count int, singular string, plural string) string { + if count == 1 { + return singular + } + return plural +} + +func progressTitle(kind fileOpKind) string { + switch kind { + case opMove: + return "Moving" + case opArchive: + return "Archiving" + default: + return "Copying" + } +} + +func operationDoneLabel(kind fileOpKind) string { + switch kind { + case opMove: + return "Moved" + case opCopy: + return "Copied" + case opDelete: + return "Moved to trash" + case opPermanentDelete: + return "Permanently deleted" + case opArchive: + return "Archived" + default: + return "Done" + } +} + +func operationVerb(kind fileOpKind) string { + switch kind { + case opCopy: + return "copy" + case opMove: + return "move" + case opDelete: + return "trash" + case opPermanentDelete: + return "permanent delete" + case opArchive: + return "archive" + default: + return "operate on" + } +} + +func externalCommand(envVar string, fallbacks []string, path string) (*exec.Cmd, string, error) { + envVars := []string{} + if envVar != "" { + envVars = append(envVars, envVar) + } + return externalCommandFromEnv(envVars, fallbacks, path) +} + +func externalCommandFromEnv(envVars []string, fallbacks []string, path string) (*exec.Cmd, string, error) { + commandLine := "" + source := "fallbacks" + for _, envVar := range envVars { + commandLine = strings.TrimSpace(os.Getenv(envVar)) + if commandLine != "" { + source = envVar + break + } + } + if commandLine == "" { + for _, candidate := range fallbacks { + if resolved, err := exec.LookPath(candidate); err == nil { + commandLine = resolved + source = candidate + break + } + } + } + if commandLine == "" { + if len(envVars) > 0 { + return nil, "", fmt.Errorf("no command for %s", strings.Join(envVars, "/")) + } + return nil, "", fmt.Errorf("no fallback command found") + } + + parts := strings.Fields(commandLine) + if len(parts) == 0 { + return nil, "", fmt.Errorf("invalid command for %s", source) + } + + args := append(parts[1:], path) + return exec.Command(parts[0], args...), filepath.Base(parts[0]), nil +} + +func startExternalOpenCmd(command *exec.Cmd, path string) tea.Cmd { + return func() tea.Msg { + command.Stdin = nil + command.Stdout = io.Discard + command.Stderr = io.Discard + if err := command.Start(); err != nil { + return externalOpenMsg{path: path, err: err} + } + return externalOpenMsg{path: path} + } +} + +func enableMouseCmd() tea.Cmd { + return func() tea.Msg { + return tea.EnableMouseCellMotion() + } +} + +func disableMouseCmd() tea.Cmd { + return func() tea.Msg { + return tea.DisableMouse() + } +} + +func resolveStartPath(raw string, fallback string) (string, error) { + value := strings.TrimSpace(raw) + if value == "" { + return fallback, nil + } + if strings.HasPrefix(value, "~/") { + home, err := os.UserHomeDir() + if err != nil { + return "", err + } + value = filepath.Join(home, strings.TrimPrefix(value, "~/")) + } + abs, err := filepath.Abs(value) + if err != nil { + return "", err + } + info, err := os.Stat(abs) + if err != nil { + return "", err + } + if !info.IsDir() { + return "", fmt.Errorf("startup path is not a directory: %s", abs) + } + return abs, nil +} + +func min(a, b int) int { + if a < b { + return a + } + return b +} + +func clamp(n, low, high int) int { + if n < low { + return low + } + if n > high { + return high + } + return n +} + +func max(a, b int) int { + if a > b { + return a + } + return b +} + +func (m *Model) mouseTarget(x, y int) (PaneID, int, bool) { + if m.width <= 0 || m.height <= 0 { + return "", 0, false + } + + leftWidth, previewWidth, rightWidth := m.layoutWidths() + top := 0 + bodyHeight := m.bodyHeight() + if y < top || y >= top+bodyHeight { + return "", 0, false + } + + gap := m.cfg.UI.PaneGap + leftStart := 0 + rightStart := leftWidth + gap + if m.infoMode && m.active == PaneRight { + rightStart = previewWidth + gap + } + + switch { + case x >= leftStart && x < leftStart+leftWidth: + if m.infoMode && m.active == PaneRight { + return "", 0, false + } + index, ok := paneIndexFromMouse(y-top, bodyHeight, &m.left) + if !ok { + return "", 0, false + } + return PaneLeft, index, true + case x >= rightStart && x < rightStart+rightWidth: + if m.infoMode && m.active == PaneLeft { + return "", 0, false + } + index, ok := paneIndexFromMouse(y-top, bodyHeight, &m.right) + if !ok { + return "", 0, false + } + return PaneRight, index, true + default: + return "", 0, false + } +} + +func paneIndexFromMouse(localY int, height int, pane *BrowserPane) (int, bool) { + const listStartY = 3 + if localY < listStartY || localY >= height-1 { + return 0, false + } + row := localY - listStartY + index := pane.Offset + row + if index < 0 { + index = 0 + } + if index >= len(pane.Entries) { + return 0, false + } + return index, true +} + +func isEditableEntry(entry vfs.Entry) bool { + switch entry.Category() { + case "text", "config": + return true + default: + return false + } +} + +func isArchiveEntry(entry vfs.Entry) bool { + return !entry.IsDir && !entry.IsParent && entry.Category() == "archive" +} + +func (m Model) syncImageOverlay(leftWidth int, previewWidth int, bodyHeight int) { + if m.overlay == nil { + return + } + if m.modal.kind != modalNone { + m.overlay.hide() + return + } + if m.previewData.Kind != vfs.PreviewKindImage { + m.overlay.hide() + return + } + imagePath := strings.TrimSpace(m.previewData.Metadata.Path) + if imagePath == "" { + m.overlay.hide() + return + } + + rect := overlayRect{} + if m.viewMode { + rect = overlayRect{ + x: 1, + y: 1, + width: max(m.width-2, 1), + height: max(bodyHeight-2, 1), + } + } else if m.infoMode { + startX := 0 + if m.active == PaneLeft { + startX = leftWidth + m.cfg.UI.PaneGap + } + innerWidth := max(previewWidth-2, 1) + metaHeight := 0 + if m.cfg.Preview.ShowMetadata { + metaHeight = lipgloss.Height(renderMetadata(m.previewData.Metadata, m.palette, innerWidth, m.nerdIcons)) + } + titleHeight := 1 + topInset := 1 + contentBorder := 1 + safetyGap := 1 + contentTop := topInset + titleHeight + metaHeight + contentBorder + safetyGap + rect = overlayRect{ + x: startX + 3, + y: contentTop, + width: max(previewWidth-6, 1), + height: max(bodyHeight-contentTop-2, 1), + } + } else { + m.overlay.hide() + return + } + + if err := m.overlay.show(imagePath, rect); err != nil { + m.overlay.hide() + } +} + +func (m *Model) cleanupImageOverlay() { + if m.overlay == nil { + return + } + m.overlay.stop() +} + +func (m *Model) cleanupRemoteImageTemp() { + if m.remoteImageTemp != "" { + os.Remove(m.remoteImageTemp) + m.remoteImageTemp = "" + } +} + +func (m *Model) hoverIndexFor(pane PaneID) int { + if m.hover.ok && m.hover.pane == pane { + return m.hover.index + } + return -1 +} + +func (m *Model) mouseOverPreview(x, y int) bool { + if !m.infoMode || m.width <= 0 || m.height <= 0 { + return false + } + + leftWidth, previewWidth, _ := m.layoutWidths() + top := 0 + bodyHeight := m.bodyHeight() + if y < top || y >= top+bodyHeight { + return false + } + + gap := m.cfg.UI.PaneGap + if m.active == PaneLeft { + startX := leftWidth + gap + return x >= startX && x < startX+previewWidth + } + + return x >= 0 && x < previewWidth +} + +func (m *Model) mouseOverPathLine(x, y int) bool { + if !m.infoMode || !m.cfg.Preview.ShowMetadata || m.width <= 0 || m.height <= 0 { + return false + } + + leftWidth, previewWidth, _ := m.layoutWidths() + bodyHeight := m.bodyHeight() + if y < 0 || y >= bodyHeight { + return false + } + + // Preview pane x-range + var startX int + if m.active == PaneLeft { + startX = leftWidth + m.cfg.UI.PaneGap + } else { + startX = 0 + } + if x < startX || x >= startX+previewWidth { + return false + } + + // The path line is within the metadata section (approximate Y range 1-7). + // Check that Y is in the metadata area and X is in the right half where the icon is. + if y < 1 || y > 7 { + return false + } + // The icon is at the far-right end of the preview pane content area + iconStartX := startX + previewWidth/2 + return x >= iconStartX +} + +// ─── SSH handlers ────────────────────────────────────────────────────────── + +// handleSSHToggle toggles SSH host list display in the active pane. +func (m *Model) handleSSHToggle() (tea.Model, tea.Cmd) { + if m.ssh == nil { + m.status = "SSH init failed — check ~/.ssh/config" + return m, nil + } + + pane := m.activePane() + + // If already in SSH mode, exit it + if pane.InRemote() { + return m.exitSSHMode() + } + // If path is "ssh://" (host list already shown), close it too + if pane.Path == "ssh://" { + // Restore saved pre-SSH path if available + if m.preSSHPath != "" { + pane.Path = m.preSSHPath + m.preSSHPath = "" + if err := m.reloadPane(pane.ID, ""); err != nil { + m.status = err.Error() + } + return m, nil + } + // Fallback: try history + if prevPath, ok := pane.PopHistory(); ok { + pane.Path = prevPath + if err := m.reloadPane(pane.ID, ""); err != nil { + m.status = err.Error() + } + return m, nil + } + m.status = "SSH mode closed" + return m, nil + } + + // Save current path, show SSH host list + m.preSSHPath = pane.Path + entries := buildSSHHostEntries(m.ssh.store, m.ssh.connectedHosts) + pane.SetEntries(entries, "") + pane.Path = "ssh://" + m.status = "SSH hosts — select a host and press Enter" + return m, nil +} + +// exitSSHMode restores the pane to its previous directory and closes all connections. +func (m *Model) exitSSHMode() (tea.Model, tea.Cmd) { + pane := m.activePane() + + // Close all remote mounts + for { + mount, ok := pane.CurrentRemote() + if !ok { + break + } + if m.ssh != nil { + m.ssh.connectedHosts[mount.Host.Name] = false + } + pane.PopRemote() + mount.Client.Close() + } + + // Close all stored active clients (connections kept alive in host list) + if m.ssh != nil { + for name, client := range m.ssh.activeClients { + log.Printf("[ACTION] exitSSHMode: closing stored connection for host=%s", name) + client.Close() + delete(m.ssh.activeClients, name) + } + } + + // Restore original pre-SSH path + prevPath := m.preSSHPath + m.preSSHPath = "" + if prevPath != "" { + pane.Path = prevPath + if err := m.reloadPane(pane.ID, ""); err != nil { + m.status = err.Error() + return m, nil + } + m.status = "Exited SSH mode" + return m, m.loadPreviewCmd() + } + + // Fallback: try history + if prevPath, ok := pane.PopHistory(); ok { + pane.Path = prevPath + if err := m.reloadPane(pane.ID, ""); err != nil { + m.status = err.Error() + return m, nil + } + m.status = "Exited SSH mode" + return m, m.loadPreviewCmd() + } + + // Last resort: reload current directory + if err := m.reloadPane(pane.ID, ""); err != nil { + m.status = err.Error() + return m, nil + } + m.status = "Exited SSH mode" + return m, m.loadPreviewCmd() +} + +// handleSSHConnectHost connects to a selected SSH host. +func (m *Model) handleSSHConnectHost() (tea.Model, tea.Cmd) { + if m.ssh == nil { + m.status = "SSH not available" + return m, nil + } + + selected, ok := m.activePane().Selected() + if !ok { + return m, nil + } + + // Find the host config by name + host := m.ssh.store.FindByName(selected.RemoteHostName) + if host == nil { + m.status = fmt.Sprintf("Host %q not found in config", selected.RemoteHostName) + return m, nil + } + + // Check for an existing active connection we can reuse + if client, ok := m.ssh.activeClients[host.Name]; ok { + log.Printf("[ACTION] SSHConnectHost: reusing existing connection for host=%s", host.Name) + delete(m.ssh.activeClients, host.Name) + return m, func() tea.Msg { + return sshConnectMsg{hostName: host.Name, client: client, err: nil} + } + } + + log.Printf("[ACTION] SSHConnectHost: host=%s user=%s hostname=%s port=%s", + host.Name, host.User, host.HostName, host.Port) + m.status = fmt.Sprintf("Connecting to %s@%s...", host.User, host.HostName) + + // Connect in a goroutine + return m, func() tea.Msg { + client, err := remote.Connect(*host) + if err != nil { + log.Printf("[ERROR] SSHConnectHost failed: host=%s err=%v", host.Name, err) + return sshConnectMsg{hostName: host.Name, err: err} + } + log.Printf("[ACTION] SSHConnectHost success: host=%s", host.Name) + return sshConnectMsg{hostName: host.Name, client: client, err: nil} + } +} + +// sshConnectMsg is sent when an SSH connection attempt completes (from host list). +type sshConnectMsg struct { + hostName string + client *remote.SSHClient + err error +} + +// sshAddHostResultMsg is sent when an SSH add-host connection test completes. +type sshAddHostResultMsg struct { + host remote.SSHHost + err error +} + +// reloadRemotePane loads directory listing from a remote SSH mount. +func (m *Model) reloadRemotePane(id PaneID, preserve string) error { + pane := m.paneByID(id) + mount, ok := pane.CurrentRemote() + if !ok { + return fmt.Errorf("not in remote mount") + } + + entries, err := remoteDirToEntries(pane.Path, mount.Client) + if err != nil { + log.Printf("[ERROR] reloadRemotePane: id=%s path=%s err=%v", id, pane.Path, err) + return err + } + pane.SetEntries(entries, strings.ToLower(preserve)) + log.Printf("[PANEL] reloadRemotePane: id=%s path=%s entries=%d preserve=%s", id, pane.Path, len(entries), preserve) + return nil +} + +// handleSSHOpenAddHost opens the SSH connect dialog for adding a new host. +func (m *Model) handleSSHOpenAddHost() { + if m.ssh == nil { + m.status = "SSH not available" + return + } + + log.Printf("[ACTION] SSHOpenAddHost — opening add host dialog") + // Reset inputs to defaults + m.ssh.inputs = SSHConnectDialogInputs() + m.ssh.inputFocus = 0 + m.ssh.showHelp = false + + m.modal = modalState{ + kind: modalSSHConnect, + title: "Add SSH host", + body: "Fill in the connection details.\nTab/Shift+Tab to switch fields. F1/? for help.", + note: "", + } +} + +// handleSSHAddHostConfirm tests the connection asynchronously, then saves the host. +// The modal stays open during the test so the user can see progress and press Esc to cancel. +func (m *Model) handleSSHAddHostConfirm() (tea.Model, tea.Cmd) { + if m.ssh == nil { + m.modal = modalState{} + m.status = "SSH not available" + return m, nil + } + + host := buildSSHHostFromDialog(m.ssh.inputs) + if host.Name == "" || host.HostName == "" || host.User == "" { + m.status = "Name, Hostname/IP, and User are required" + return m, nil + } + + log.Printf("[ACTION] SSHAddHostConfirm: testing connection to %s@%s", host.User, host.HostName) + + // Mark connection test as in progress so the modal shows "Connecting..." state + m.ssh.testingConn = true + m.busy = true + m.status = fmt.Sprintf("Testing connection to %s@%s...", host.User, host.HostName) + + // Use a context for cancellation + ctx, cancel := context.WithCancel(context.Background()) + m.ssh.cancelTest = cancel + + return m, func() tea.Msg { + defer cancel() + + // Run connection in a separate goroutine, listen for cancellation + type connResult struct { + client *remote.SSHClient + err error + } + resultCh := make(chan connResult, 1) + + go func() { + client, err := remote.Connect(host) + resultCh <- connResult{client: client, err: err} + }() + + select { + case <-ctx.Done(): + // Cancelled — wait for connect to finish (if still running) and discard + select { + case res := <-resultCh: + if res.client != nil { + res.client.Close() + } + default: + } + return sshAddHostResultMsg{host: host, err: fmt.Errorf("cancelled")} + case res := <-resultCh: + if res.err != nil { + return sshAddHostResultMsg{host: host, err: res.err} + } + res.client.Close() + return sshAddHostResultMsg{host: host, err: nil} + } + } +} + +// handleSSHHostDelete removes a user-added SSH host from the store. +// Hosts from ~/.ssh/config are read-only and cannot be deleted here. +// Shows a confirmation dialog before removing the host. +func (m *Model) handleSSHHostDelete() (tea.Model, tea.Cmd) { + if m.ssh == nil { + m.status = "SSH not available" + return m, nil + } + + selected, ok := m.activePane().Selected() + if !ok { + m.status = "Nothing to delete" + return m, nil + } + + hostName := selected.RemoteHostName + if hostName == "" { + // Fallback: extract from path "ssh://hostname" + hostName = strings.TrimPrefix(selected.Path, "ssh://") + } + + // Find the host to check if it's from SSH config + host := m.ssh.store.FindByName(hostName) + if host == nil { + m.status = fmt.Sprintf("Host %q not found", hostName) + return m, nil + } + + if host.FromSSHConfig { + log.Printf("[SKIP] SSH host delete: %q is from ~/.ssh/config (read-only)", hostName) + m.status = fmt.Sprintf("Host %q is from SSH config and cannot be deleted", hostName) + return m, nil + } + + // Build host details for the confirmation dialog + hostAddr := host.HostName + if host.Port != "" && host.Port != "22" { + hostAddr = fmt.Sprintf("%s:%s", host.HostName, host.Port) + } + hostUser := host.User + if hostUser == "" { + hostUser = "(default)" + } + + title := fmt.Sprintf("Delete host %q?", hostName) + body := fmt.Sprintf("Name: %s\nAddress: %s\nUser: %s\n\nThis will remove the host from saved list.", hostName, hostAddr, hostUser) + + m.openConfirmModal( + title, + body, + "confirm-actions", + pendingOperation{ + kind: opDeleteHost, + sourcePaths: []string{hostName}, + }, + ) + return m, nil +} + +// executeSSHHostDelete performs the actual SSH host removal after confirmation. +func (m *Model) executeSSHHostDelete(hostName string) (tea.Model, tea.Cmd) { + if m.ssh == nil { + m.status = "SSH not available" + return m, nil + } + + log.Printf("[ACTION] SSH host delete: removing host %q", hostName) + + // Close and clean up active client if any + if client, ok := m.ssh.activeClients[hostName]; ok { + client.Close() + delete(m.ssh.activeClients, hostName) + } + + if err := m.ssh.store.RemoveHost(hostName); err != nil { + m.status = fmt.Sprintf("Failed to delete host: %v", err) + return m, nil + } + + m.status = fmt.Sprintf("Host %q deleted", hostName) + + // Remove from connected hosts tracking + delete(m.ssh.connectedHosts, hostName) + + // Refresh the SSH host list + entries := buildSSHHostEntries(m.ssh.store, m.ssh.connectedHosts) + m.activePane().SetEntries(entries, "") + return m, nil +} + +// enterRemoteDir navigates into a remote directory on an SSH mount. +func (m *Model) enterRemoteDir(entry vfs.Entry) (tea.Model, tea.Cmd) { + m.hover = hoverState{} + pane := m.activePane() + + if !entry.IsDir { + return m, nil + } + + // Save cursor position for the current directory before navigating away. + pane.SaveCursor(pane.Path, entry.Name) + + pane.PushHistory(pane.Path) + log.Printf("[NAV] enterRemoteDir — pane=%s from=%s to=%s", pane.ID, pane.Path, entry.Path) + pane.Path = entry.Path + // Restore cursor position if we've visited this directory before in this session. + preserve := pane.LoadCursor(pane.Path) + if preserve == "" { + preserve = entry.Name + } + if err := m.reloadRemotePane(pane.ID, preserve); err != nil { + m.status = err.Error() + return m, nil + } + m.status = fmt.Sprintf("Entered %s", pane.Path) + return m, m.loadPreviewCmd() +} + +// remoteDeleteCmd deletes files/directories on a remote host via SFTP. +func (m *Model) remoteDeleteCmd(sources []string, client *remote.SSHClient) tea.Cmd { + log.Printf("[ACTION] remoteDeleteCmd: sources=%v", sources) + return func() tea.Msg { + for _, sourcePath := range sources { + log.Printf("[JOB] remoteDelete: removing path=%s", sourcePath) + if err := client.RemoveRecursive(sourcePath); err != nil { + log.Printf("[ERROR] remoteDelete failed: path=%s err=%v", sourcePath, err) + return opMsg{kind: opDelete, sourcePath: sourcePath, err: err} + } + } + log.Printf("[DONE] remoteDelete: completed %d sources", len(sources)) + return opMsg{kind: opDelete} + } +} + +// remoteTransferCmd copies or moves files between local and remote filesystems. +// kind: opCopy or opMove +// sources: paths on the source side +// targetDir: path on the target side +// sourceIsRemote: true if sources are remote paths +// targetIsRemote: true if targetDir is a remote path +// srcClient: SFTP client for reading (if source is remote) +// dstClient: SFTP client for writing (if target is remote) +// startRemoteCopyJob copies files between local and remote filesystems with +// progress reporting. Runs the transfer in a goroutine so the UI stays +// responsive, following the same pattern as startCopyJob. +func (m *Model) startRemoteCopyJob(kind fileOpKind, sources []string, targetDir string, + sourceIsRemote, targetIsRemote bool, srcClient, dstClient *remote.SSHClient, + stats vfs.TransferStats) tea.Cmd { + + m.nextCopyJob++ + jobID := m.nextCopyJob + ctx, cancel := context.WithCancel(context.Background()) + + m.copyJob = ©JobState{ + id: jobID, + kind: kind, + sourcePaths: append([]string(nil), sources...), + targetDir: targetDir, + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: stats.FilesTotal, + BytesDone: 0, + BytesTotal: stats.BytesTotal, + CurrentPath: sources[0], + Stage: "Counting files...", + }, + cancel: cancel, + startedAt: time.Now(), + } + m.modal = modalState{kind: modalCopyProgress} + m.status = strings.Title(operationVerb(kind)) + " started" + + log.Printf("[JOB] startRemoteCopyJob: id=%d kind=%d sources=%d targetDir=%s srcRemote=%v dstRemote=%v stats={files=%d bytes=%d}", + jobID, kind, len(sources), targetDir, sourceIsRemote, targetIsRemote, stats.FilesTotal, stats.BytesTotal) + + return tea.Batch( + func() tea.Msg { + go func() { + doneFiles := 0 + var doneBytes int64 + totalFiles := 0 + + log.Printf("[JOB] remoteCopy — goroutine started: job=%d kind=%d sources=%d srcRemote=%v dstRemote=%v", + jobID, kind, len(sources), sourceIsRemote, targetIsRemote) + + // Phase 1: count files across all sources + sourceCounts := make([]int, len(sources)) + for i, sourcePath := range sources { + if err := ctx.Err(); err != nil { + m.copyProgress <- copyDoneMsg{jobID: jobID, kind: kind, sourcePaths: sources, targetDir: targetDir, err: err} + return + } + var count int + if sourceIsRemote { + count = 1 + info, err := srcClient.Lstat(sourcePath) + if err != nil { + log.Printf("[JOB] remoteCopy — Phase1 Lstat failed: job=%d path=%s err=%v", jobID, sourcePath, err) + m.copyProgress <- copyDoneMsg{jobID: jobID, kind: kind, sourcePaths: sources, targetDir: targetDir, err: err} + return + } + if info.IsDir() { + err := srcClient.Walk(sourcePath, func(_ string, info os.FileInfo, err error) error { + if err != nil { return err } + if !info.IsDir() { count++ } + return nil + }) + if err != nil { + m.copyProgress <- copyDoneMsg{jobID: jobID, kind: kind, sourcePaths: sources, targetDir: targetDir, err: err} + return + } + } + } else { + entryStats, err := vfs.CopyStats(sourcePath) + if err != nil { + m.copyProgress <- copyDoneMsg{jobID: jobID, kind: kind, sourcePaths: sources, targetDir: targetDir, err: err} + return + } + count = entryStats.FilesTotal + } + sourceCounts[i] = count + totalFiles += count + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: 0, + FilesTotal: totalFiles, + CurrentPath: sourcePath, + Stage: fmt.Sprintf("Counting files... %d found", totalFiles), + }, + } + } + + // Phase 2: transfer with known total + log.Printf("[JOB] remoteCopy — Phase2 start: job=%d totalFiles=%d", jobID, totalFiles) + for i, sourcePath := range sources { + if err := ctx.Err(); err != nil { + m.copyProgress <- copyDoneMsg{jobID: jobID, kind: kind, sourcePaths: sources, targetDir: targetDir, err: err} + return + } + baseName := filepath.Base(sourcePath) + targetPath := filepath.Join(targetDir, baseName) + log.Printf("[JOB] remoteCopy — Phase2 source[%d]: job=%d path=%s target=%s doneFiles=%d totalFiles=%d", + i, jobID, sourcePath, targetPath, doneFiles, totalFiles) + log.Printf("[JOB] remoteCopy — starting: job=%d source=%s target=%s", jobID, sourcePath, targetPath) + + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles, + FilesTotal: totalFiles, + CurrentPath: sourcePath, + Stage: "Transferring files...", + }, + } + + var info os.FileInfo + var err error + serverSide := false // true if copy/move happened on server without streaming + trackedProgress := false // true if per-file progress callback was used + + // Get file info and perform copy depending on direction. + switch { + case !sourceIsRemote && targetIsRemote: + // Local → Remote + log.Printf("[JOB] remoteCopy — direction: Local→Remote job=%d", jobID) + info, err = os.Stat(sourcePath) + if err == nil { + if info.IsDir() { + log.Printf("[JOB] remoteCopy — local→remote dir: job=%d source=%s target=%s", jobID, sourcePath, targetPath) + err = dstClient.CopyDirToRemoteProgress(sourcePath, targetPath, func(path string, done, total int) { + trackedProgress = true + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles + done, + FilesTotal: totalFiles, + CurrentPath: path, + Stage: "Copying files...", + }, + } + }, ctx) + } else { + log.Printf("[JOB] remoteCopy — local→remote file: job=%d source=%s target=%s size=%d", jobID, sourcePath, targetPath, info.Size()) + err = dstClient.CopyFileToRemote(sourcePath, targetPath) + } + } + + case sourceIsRemote && !targetIsRemote: + // Remote → Local + log.Printf("[JOB] remoteCopy — direction: Remote→Local job=%d", jobID) + info, err = srcClient.Lstat(sourcePath) + if err == nil { + if info.IsDir() { + log.Printf("[JOB] remoteCopy — remote→local dir: job=%d source=%s target=%s", jobID, sourcePath, targetPath) + err = srcClient.CopyDirFromRemoteProgress(sourcePath, targetPath, func(path string, done, total int) { + trackedProgress = true + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles + done, + FilesTotal: totalFiles, + CurrentPath: path, + Stage: "Copying files...", + }, + } + }, ctx) + } else { + log.Printf("[JOB] remoteCopy — remote→local file: job=%d source=%s target=%s size=%d", jobID, sourcePath, targetPath, info.Size()) + err = srcClient.CopyFileFromRemote(sourcePath, targetPath) + } + } + + case sourceIsRemote && targetIsRemote: + // Remote → Remote + log.Printf("[JOB] remoteCopy — direction: Remote→Remote job=%d sameHost=%v", jobID, srcClient.SameHostAs(dstClient)) + info, err = srcClient.Lstat(sourcePath) + if err != nil { + break + } + + if srcClient.SameHostAs(dstClient) { + // Same host: use server-side commands, no local streaming + srcEscaped := "'" + sourcePath + "'" + dstEscaped := "'" + targetPath + "'" + if kind == opMove { + log.Printf("[JOB] remoteCopy — same-host move: job=%d src=%s dst=%s", jobID, sourcePath, targetPath) + _, err = srcClient.Exec("mv " + srcEscaped + " " + dstEscaped) + if err == nil { + serverSide = true + } else { + log.Printf("[JOB] remoteCopy — same-host mv failed, falling back: %v", err) + } + } + if !serverSide { + log.Printf("[JOB] remoteCopy — same-host copy: job=%d src=%s dst=%s", jobID, sourcePath, targetPath) + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles, + FilesTotal: totalFiles, + CurrentPath: sourcePath, + Stage: "Running remote command...", + }, + } + cmd := "cp -r" + if !info.IsDir() { + cmd = "cp" + } + err = srcClient.ExecWithProgress(cmd+" "+srcEscaped+" "+dstEscaped, func(line string) { + // cp -rv outputs one line per copied file + doneFiles++ + log.Printf("[JOB] remoteCopy — same-host progress: job=%d doneFiles=%d line=%s", jobID, doneFiles, line) + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles, + FilesTotal: totalFiles, + CurrentPath: line, + Stage: "Copying files...", + }, + } + }) + if err == nil { + serverSide = true + } else { + log.Printf("[JOB] remoteCopy — same-host cp failed, falling back: %v", err) + } + } + } + + if !serverSide { + // Different hosts or same-host exec failed: stream through local + log.Printf("[JOB] remoteCopy — streaming through local: job=%d src=%s dst=%s", jobID, sourcePath, targetPath) + if info.IsDir() { + err = remote.CopyDirBetweenRemotesProgress(srcClient, dstClient, sourcePath, targetPath, func(path string, done, total int) { + trackedProgress = true + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles + done, + FilesTotal: totalFiles, + CurrentPath: path, + Stage: "Copying files...", + }, + } + }, ctx) + } else { + err = remote.CopyFileBetweenRemotes(srcClient, dstClient, sourcePath, targetPath) + } + } + } + + if err != nil { + log.Printf("[ERROR] remoteCopy — transfer failed: job=%d source=%s target=%s err=%v", jobID, sourcePath, targetPath, err) + m.copyProgress <- copyDoneMsg{ + jobID: jobID, kind: kind, + sourcePaths: sources, targetDir: targetDir, + err: err, + } + return + } + + // For move operations, delete the source after copying + // Skip if server-side move was used (source already moved) + if kind == opMove && !serverSide { + log.Printf("[JOB] remoteCopy — move, removing source: job=%d source=%s", jobID, sourcePath) + if !sourceIsRemote { + if err := os.RemoveAll(sourcePath); err != nil { + log.Printf("[ERROR] remoteCopy — remove local source failed: job=%d source=%s err=%v", jobID, sourcePath, err) + m.copyProgress <- copyDoneMsg{ + jobID: jobID, kind: kind, + sourcePaths: sources, targetDir: targetDir, + err: err, + } + return + } + } else { + if err := srcClient.RemoveRecursive(sourcePath); err != nil { + log.Printf("[ERROR] remoteCopy — remove remote source failed: job=%d source=%s err=%v", jobID, sourcePath, err) + m.copyProgress <- copyDoneMsg{ + jobID: jobID, kind: kind, + sourcePaths: sources, targetDir: targetDir, + err: err, + } + return + } + } + } + + log.Printf("[JOB] remoteCopy — source done: job=%d path=%s err=%v doneFiles=%d totalFiles=%d serverSide=%v", + jobID, sourcePath, err, doneFiles, totalFiles, serverSide) + if !serverSide || kind == opMove { + if !trackedProgress { + doneFiles += sourceCounts[i] + } + } + if info != nil && !info.IsDir() { + doneBytes += info.Size() + } + + // Send file-level progress update so the UI stays responsive + m.copyProgress <- copyProgressMsg{ + jobID: jobID, + progress: vfs.CopyProgress{ + FilesDone: doneFiles, + FilesTotal: totalFiles, + BytesDone: doneBytes, + BytesTotal: 0, + CurrentPath: sourcePath, + Stage: "Transferring files...", + }, + } + } + + firstItem := filepath.Join(targetDir, filepath.Base(sources[0])) + log.Printf("[DONE] remoteCopy — job=%d completed: kind=%d files=%d bytes=%d firstItem=%s", + jobID, kind, doneFiles, doneBytes, firstItem) + m.copyProgress <- copyDoneMsg{ + jobID: jobID, + kind: kind, + sourcePaths: sources, + targetDir: targetDir, + targetPath: firstItem, + } + }() + return nil + }, + waitCopyProgressCmd(m.copyProgress), + ) +} + +// renderSSHConnectModal renders the SSH connect/add-host dialog. +func renderSSHConnectModal(m Model, palette theme.Palette, width int) string { + if m.ssh == nil { + return "" + } + + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + titleStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Bold(true).Foreground(palette.Accent) + noteStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Muted) + spacer := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Render(" ") + + labelStyle := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel). + Foreground(palette.Info). + Bold(true) + + inputFieldStyle := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel) + + // Connecting indicator style + connectingStyle := lipgloss.NewStyle(). + Width(contentWidth). + Background(palette.Panel). + Foreground(palette.Warning). + Bold(true) + + box := lipgloss.NewStyle(). + Width(contentWidth). + Padding(1, 2). + Background(palette.Panel). + Foreground(palette.Text). + BorderStyle(lipgloss.DoubleBorder()). + BorderForeground(palette.BorderActive). + BorderBackground(palette.Panel) + + lines := []string{titleStyle.Render("Add SSH host"), spacer} + + // Show connecting state when test is in progress + if m.ssh.testingConn { + lines = append(lines, connectingStyle.Render("⏳ Testing connection...")) + lines = append(lines, spacer) + // Show the host details that were entered + for i, input := range m.ssh.inputs { + label := sshDialogLabel(i) + val := input.Value() + displayVal := val + if i == 4 && val != "" { + displayVal = "••••••••" + } + row := labelStyle.Render(label) + inputFieldStyle.Render(displayVal) + lines = append(lines, row) + } + lines = append(lines, spacer) + if hl, ok := renderModalHintTokens("Esc to cancel", contentWidth, palette, palette.Muted); ok { + lines = append(lines, hl) + } + } else if m.ssh.showHelp { + helpStyle := lipgloss.NewStyle().Width(contentWidth).Background(palette.Panel).Foreground(palette.Muted) + for _, raw := range strings.Split(formatSSHConnectHelp(), "\n") { + lines = append(lines, helpStyle.Render(raw)) + } + lines = append(lines, spacer, noteStyle.Render("Press F1/? to close help")) + } else { + // Render input fields with labels + for i, input := range m.ssh.inputs { + label := sshDialogLabel(i) + lines = append(lines, labelStyle.Render(label)) + lines = append(lines, inputFieldStyle.Render(input.View())) + if i < len(m.ssh.inputs)-1 { + lines = append(lines, spacer) + } + } + lines = append(lines, spacer) + // Use hint token renderer to highlight Enter, Esc, F1 + if hl, ok := renderModalHintTokens("Enter to confirm · Esc to cancel · F1/? for help", contentWidth, palette, palette.Muted); ok { + lines = append(lines, hl) + } else { + lines = append(lines, noteStyle.Render("Enter to confirm · Esc to cancel · F1/? for help")) + } + } + + return box.Render(strings.Join(lines, "\n")) +} diff --git a/src/vcom-0.2.5/internal/ui/pane.go b/src/vcom-0.2.5/internal/ui/pane.go new file mode 100644 index 0000000..b03bf4c --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/pane.go @@ -0,0 +1,850 @@ +package ui + +import ( + "fmt" + "path/filepath" + "strings" + + "github.com/charmbracelet/lipgloss" + + "vcom/internal/config" + vfs "vcom/internal/fs" + "vcom/internal/fs/remote" + "vcom/internal/theme" +) + +type PaneID string + +const ( + PaneLeft PaneID = "left" + PaneRight PaneID = "right" +) + +type BrowserPane struct { + ID PaneID + Path string + Entries []vfs.Entry + Cursor int + Offset int + Marked map[string]struct{} + Archive []ArchiveMount + Remote []RemoteMount + + dirHistory []string + dirFuture []string + + // cursorMemory remembers the last selected entry display name per directory + // within a session. Keyed by directory path. Restored when re-entering a dir. + cursorMemory map[string]string +} + +type ArchiveMount struct { + SourcePath string + ParentPath string + RootPath string + TempDir string +} + +// RemoteMount represents an active SSH/SFTP remote filesystem connection. +type RemoteMount struct { + Host remote.SSHHost + RemotePath string + Client *remote.SSHClient + Connected bool +} + +func (p *BrowserPane) Selected() (vfs.Entry, bool) { + if len(p.Entries) == 0 || p.Cursor < 0 || p.Cursor >= len(p.Entries) { + return vfs.Entry{}, false + } + return p.Entries[p.Cursor], true +} + +func (p *BrowserPane) SetEntries(entries []vfs.Entry, preserveKey string) { + p.Entries = entries + p.PruneMarks() + if len(entries) == 0 { + p.Cursor = 0 + p.Offset = 0 + return + } + if preserveKey != "" { + oldCursor := p.Cursor + p.Cursor = vfs.FindSelected(entries, preserveKey) + if p.Cursor != oldCursor { + p.Offset = 0 + } + } + if p.Cursor >= len(entries) { + p.Cursor = len(entries) - 1 + } + if p.Cursor < 0 { + p.Cursor = 0 + } + if p.Offset > p.Cursor { + p.Offset = p.Cursor + } +} + +func (p *BrowserPane) Move(delta int, pageSize int) { + if len(p.Entries) == 0 { + p.Cursor = 0 + return + } + p.Cursor += delta + if p.Cursor < 0 { + p.Cursor = 0 + } + if p.Cursor >= len(p.Entries) { + p.Cursor = len(p.Entries) - 1 + } + + if p.Cursor < p.Offset { + p.Offset = p.Cursor + } + if pageSize > 0 && p.Cursor >= p.Offset+pageSize { + p.Offset = p.Cursor - pageSize + 1 + } + if p.Offset < 0 { + p.Offset = 0 + } +} + +func (p *BrowserPane) EnsureMarked(path string) { + if strings.TrimSpace(path) == "" { + return + } + if p.Marked == nil { + p.Marked = map[string]struct{}{} + } + p.Marked[path] = struct{}{} +} + +func (p *BrowserPane) ToggleMarked(path string) { + if strings.TrimSpace(path) == "" { + return + } + if p.Marked == nil { + p.Marked = map[string]struct{}{} + } + if _, ok := p.Marked[path]; ok { + delete(p.Marked, path) + if len(p.Marked) == 0 { + p.Marked = nil + } + return + } + p.Marked[path] = struct{}{} +} + +func (p *BrowserPane) IsMarked(path string) bool { + if p.Marked == nil { + return false + } + _, ok := p.Marked[path] + return ok +} + +func (p *BrowserPane) ClearMarks() { + p.Marked = nil +} + +func (p *BrowserPane) PruneMarks() { + if len(p.Marked) == 0 { + return + } + valid := map[string]struct{}{} + for _, entry := range p.Entries { + if entry.IsParent { + continue + } + valid[entry.Path] = struct{}{} + } + for path := range p.Marked { + if _, ok := valid[path]; !ok { + delete(p.Marked, path) + } + } + if len(p.Marked) == 0 { + p.Marked = nil + } +} + +func (p *BrowserPane) MarkedEntries() []vfs.Entry { + if len(p.Marked) == 0 { + return nil + } + result := make([]vfs.Entry, 0, len(p.Marked)) + for _, entry := range p.Entries { + if entry.IsParent { + continue + } + if p.IsMarked(entry.Path) { + result = append(result, entry) + } + } + return result +} + +func (p *BrowserPane) EnsureVisible(pageSize int) { + if pageSize <= 0 { + return + } + if p.Cursor < p.Offset { + p.Offset = p.Cursor + } + if p.Cursor >= p.Offset+pageSize { + p.Offset = p.Cursor - pageSize + 1 + } + if p.Offset < 0 { + p.Offset = 0 + } +} + +func (p *BrowserPane) SaveCursor(dirPath string, entryName string) { + if dirPath == "" || entryName == "" { + return + } + if p.cursorMemory == nil { + p.cursorMemory = map[string]string{} + } + p.cursorMemory[dirPath] = entryName +} + +// LoadCursor returns the saved entry name for a directory, or empty string. +func (p *BrowserPane) LoadCursor(dirPath string) string { + if p.cursorMemory == nil { + return "" + } + return p.cursorMemory[dirPath] +} + +func (p *BrowserPane) InArchive() bool { + return len(p.Archive) > 0 +} + +// PushHistory saves the current path to the back-stack and clears the forward-stack. +func (p *BrowserPane) PushHistory(path string) { + p.dirHistory = append(p.dirHistory, path) + p.dirFuture = nil +} + +// PopHistory returns the most recent path from the back-stack. +func (p *BrowserPane) PopHistory() (string, bool) { + if len(p.dirHistory) == 0 { + return "", false + } + path := p.dirHistory[len(p.dirHistory)-1] + p.dirHistory = p.dirHistory[:len(p.dirHistory)-1] + return path, true +} + +// PushFuture saves the current path to the forward-stack. +func (p *BrowserPane) PushFuture(path string) { + p.dirFuture = append(p.dirFuture, path) +} + +// PopFuture returns the most recent path from the forward-stack. +func (p *BrowserPane) PopFuture() (string, bool) { + if len(p.dirFuture) == 0 { + return "", false + } + path := p.dirFuture[len(p.dirFuture)-1] + p.dirFuture = p.dirFuture[:len(p.dirFuture)-1] + return path, true +} + +// HasHistory returns true if there are entries in the back-stack. +func (p *BrowserPane) HasHistory() bool { + return len(p.dirHistory) > 0 +} + +// HasFuture returns true if there are entries in the forward-stack. +func (p *BrowserPane) HasFuture() bool { + return len(p.dirFuture) > 0 +} + +// HistoryDepth returns the number of entries in the back-stack. +func (p *BrowserPane) HistoryDepth() int { + return len(p.dirHistory) +} + +// FutureDepth returns the number of entries in the forward-stack. +func (p *BrowserPane) FutureDepth() int { + return len(p.dirFuture) +} + +func (p *BrowserPane) PushArchive(mount ArchiveMount) { + p.Archive = append(p.Archive, mount) +} + +func (p *BrowserPane) PopArchive() (ArchiveMount, bool) { + if len(p.Archive) == 0 { + return ArchiveMount{}, false + } + last := p.Archive[len(p.Archive)-1] + p.Archive = p.Archive[:len(p.Archive)-1] + return last, true +} + +func (p *BrowserPane) CurrentArchive() (ArchiveMount, bool) { + if len(p.Archive) == 0 { + return ArchiveMount{}, false + } + return p.Archive[len(p.Archive)-1], true +} + +func (p *BrowserPane) ClearArchives() []ArchiveMount { + if len(p.Archive) == 0 { + return nil + } + out := make([]ArchiveMount, len(p.Archive)) + copy(out, p.Archive) + p.Archive = nil + return out +} + +func (p *BrowserPane) PushRemote(mount RemoteMount) { + p.Remote = append(p.Remote, mount) +} + +func (p *BrowserPane) PopRemote() (RemoteMount, bool) { + if len(p.Remote) == 0 { + return RemoteMount{}, false + } + last := p.Remote[len(p.Remote)-1] + p.Remote = p.Remote[:len(p.Remote)-1] + return last, true +} + +func (p *BrowserPane) CurrentRemote() (RemoteMount, bool) { + if len(p.Remote) == 0 { + return RemoteMount{}, false + } + return p.Remote[len(p.Remote)-1], true +} + +func (p *BrowserPane) InRemote() bool { + return len(p.Remote) > 0 +} + +func (p *BrowserPane) ClearRemotes() []RemoteMount { + if len(p.Remote) == 0 { + return nil + } + out := make([]RemoteMount, len(p.Remote)) + copy(out, p.Remote) + p.Remote = nil + return out +} + +func (p *BrowserPane) DisplayPath() string { + if len(p.Remote) > 0 { + top := p.Remote[len(p.Remote)-1] + statusIcon := "󰖩" + if !top.Connected { + statusIcon = "󰤭" + } + if top.RemotePath == "/" || top.RemotePath == "" { + return fmt.Sprintf("%s %s:", statusIcon, top.Host.Name) + } + return fmt.Sprintf("%s %s:%s", statusIcon, top.Host.Name, top.RemotePath) + } + if len(p.Archive) == 0 { + return p.Path + } + top := p.Archive[len(p.Archive)-1] + rel, err := filepath.Rel(top.RootPath, p.Path) + if err != nil { + return p.Path + } + rel = filepath.ToSlash(rel) + if rel == "." { + rel = "" + } + if rel == "" { + return top.SourcePath + "::" + } + return top.SourcePath + "::/" + rel +} + +func renderPane( + pane BrowserPane, + cfg config.Config, + palette theme.Palette, + width int, + height int, + active bool, + hoverIndex int, + useNerdIcons bool, +) string { + if width <= 0 || height <= 0 { + return "" + } + + borderColor := palette.Border + headerBg := palette.PanelInactive + bodyBg := palette.Panel + if active { + borderColor = palette.BorderActive + headerBg = palette.Selection + } + + innerWidth := max(width-2, 1) + innerHeight := max(height-2, 1) + + box := lipgloss.NewStyle(). + Width(innerWidth). + Height(innerHeight). + Background(bodyBg). + Foreground(palette.Text). + BorderStyle(borderStyle(cfg.UI.Border)). + BorderForeground(borderColor). + BorderBackground(bodyBg) + + header := lipgloss.NewStyle(). + Render(renderPaneHeader(pane, cfg, palette, innerWidth, active, headerBg)) + + isSSHHostList := pane.Path == "ssh://" + rowsHeight := max(innerHeight-2, 1) + headerRow := renderColumnsHeader(cfg, innerWidth, palette, bodyBg, useNerdIcons, isSSHHostList) + rows := renderPaneRows(pane, cfg, palette, innerWidth, rowsHeight, active, hoverIndex, bodyBg, useNerdIcons, isSSHHostList) + content := lipgloss.JoinVertical(lipgloss.Left, header, headerRow, rows) + return box.Render(content) +} + +func renderPaneHeader(pane BrowserPane, cfg config.Config, palette theme.Palette, width int, active bool, headerBg lipgloss.Color) string { + pathWidth := max(width, 4) + pathStyle := lipgloss.NewStyle(). + Width(pathWidth). + Background(headerBg). + Foreground(palette.Text). + Bold(active) + if active { + pathStyle = pathStyle.Foreground(palette.ActivePath) + } + + return lipgloss.NewStyle(). + Width(width). + Background(headerBg). + Render(pathStyle.Render(truncateMiddle(compactPath(pane.DisplayPath(), cfg.UI.PathDisplay), pathWidth))) +} + +func renderColumnsHeader(cfg config.Config, width int, palette theme.Palette, background lipgloss.Color, useNerdIcons bool, hideExtraCols bool) string { + columns := buildColumns(cfg, width, useNerdIcons, hideExtraCols) + parts := make([]string, 0, len(columns)) + for idx, column := range columns { + style := lipgloss.NewStyle(). + Width(column.Width). + Foreground(palette.Muted). + Background(background). + Bold(true) + if column.AlignRight { + style = style.Align(lipgloss.Right) + } + parts = append(parts, style.Render(truncateRight(column.Title, column.Width))) + if idx < len(columns)-1 { + parts = append(parts, columnSeparator(column.Key, palette, background)) + } + } + return lipgloss.NewStyle(). + Width(width). + Background(background). + Render(strings.Join(parts, "")) +} + +func renderPaneRows(pane BrowserPane, cfg config.Config, palette theme.Palette, width int, height int, active bool, hoverIndex int, background lipgloss.Color, useNerdIcons bool, hideExtraCols bool) string { + if len(pane.Entries) == 0 { + return lipgloss.NewStyle(). + Width(width). + Height(height). + Padding(1, 1). + Background(background). + Foreground(palette.Muted). + Render("Empty directory") + } + + visibleHeight := max(height, 1) + pane.EnsureVisible(visibleHeight) + end := min(len(pane.Entries), pane.Offset+visibleHeight) + + lines := make([]string, 0, visibleHeight) + for idx := pane.Offset; idx < end; idx++ { + entry := pane.Entries[idx] + isSelected := idx == pane.Cursor && active + marked := !entry.IsParent && pane.IsMarked(entry.Path) + row := renderEntryRow(entry, cfg, width, isSelected, marked, idx == hoverIndex, active, palette, background, useNerdIcons, hideExtraCols) + lines = append(lines, row) + } + for len(lines) < visibleHeight { + lines = append(lines, lipgloss.NewStyle().Width(width).Background(background).Render("")) + } + + return lipgloss.NewStyle(). + Width(width). + Background(background). + Render(strings.Join(lines, "\n")) +} + +func renderEntryRow(entry vfs.Entry, cfg config.Config, width int, selected bool, marked bool, hovered bool, active bool, palette theme.Palette, baseBackground lipgloss.Color, useNerdIcons bool, hideExtraCols bool) string { + columns := buildColumns(cfg, width, useNerdIcons, hideExtraCols) + rowBackground := baseBackground + switch { + case marked: + rowBackground = palette.Marked + case selected: + rowBackground = palette.Selection + case hovered: + rowBackground = palette.Hover + } + + parts := make([]string, 0, len(columns)) + for idx, column := range columns { + value := column.Value(entry, cfg.Browser.HumanReadableSize) + foreground := entryColor(entry, palette) + if marked { + foreground = palette.Background + } + style := lipgloss.NewStyle(). + Width(column.Width). + Foreground(foreground). + Background(rowBackground) + + if entry.IsHidden && !marked { + style = style.Foreground(palette.Muted) + } + if column.AlignRight { + style = style.Align(lipgloss.Right) + } + parts = append(parts, style.Render(truncateForColumn(value, column.Width, column.AlignRight))) + if idx < len(columns)-1 { + parts = append(parts, columnSeparator(column.Key, palette, rowBackground)) + } + } + + rowStyle := lipgloss.NewStyle().Width(width).Background(rowBackground) + if selected && active { + rowStyle = rowStyle.Bold(true) + } + + return rowStyle.Render(strings.Join(parts, "")) +} + +type columnSpec struct { + Key string + Title string + Width int + MinWidth int + AlignRight bool + Value func(entry vfs.Entry, human bool) string +} + +func buildColumns(cfg config.Config, totalWidth int, useNerdIcons bool, hideExtraCols bool) []columnSpec { + fixed := []columnSpec{} + + if cfg.Browser.Columns.Permissions { + fixed = append(fixed, columnSpec{ + Key: "permissions", + Title: "Perms", + Width: 10, + MinWidth: 9, + Value: func(entry vfs.Entry, _ bool) string { + return vfs.Permissions(entry.Mode) + }, + }) + } + if cfg.Browser.Columns.Extension { + fixed = append(fixed, columnSpec{ + Key: "extension", + Title: "Ext", + Width: 6, + MinWidth: 4, + Value: func(entry vfs.Entry, _ bool) string { + if entry.IsDir { + return "" + } + return entry.Extension + }, + }) + } + if cfg.Browser.Columns.Size && !hideExtraCols { + fixed = append(fixed, columnSpec{ + Key: "size", + Title: "Size", + Width: 9, + MinWidth: 6, + AlignRight: true, + Value: func(entry vfs.Entry, human bool) string { + if entry.IsDir { + if !entry.DirSizeKnown { + return "" + } + if human { + return vfs.HumanSize(entry.Size) + } + return fmt.Sprintf("%d", entry.Size) + } + if human { + return vfs.HumanSize(entry.Size) + } + return fmt.Sprintf("%d", entry.Size) + }, + }) + } + if cfg.Browser.Columns.Created { + fixed = append(fixed, columnSpec{ + Key: "created", + Title: "Created", + Width: 11, + MinWidth: 8, + Value: func(entry vfs.Entry, _ bool) string { + if !entry.CreatedKnown { + return "n/a" + } + return vfs.CompactTime(entry.CreatedAt) + }, + }) + } + if cfg.Browser.Columns.Modified && !hideExtraCols { + fixed = append(fixed, columnSpec{ + Key: "modified", + Title: "Modified", + Width: 11, + MinWidth: 8, + Value: func(entry vfs.Entry, _ bool) string { + if entry.IsParent { + return "" + } + return vfs.CompactTime(entry.ModifiedAt) + }, + }) + } + + minNameWidth := 4 + gaps := 0 + for _, column := range fixed { + gaps += separatorWidth(column.Key) + } + availableForColumns := totalWidth - gaps + if availableForColumns < minNameWidth { + availableForColumns = minNameWidth + } + + fixedWidth := 0 + for _, column := range fixed { + fixedWidth += column.Width + } + for fixedWidth+minNameWidth > availableForColumns { + changed := false + for idx := len(fixed) - 1; idx >= 0 && fixedWidth+minNameWidth > availableForColumns; idx-- { + if fixed[idx].Width > fixed[idx].MinWidth { + fixed[idx].Width-- + fixedWidth-- + changed = true + } + } + if !changed { + break + } + } + + nameWidth := max(availableForColumns-fixedWidth, minNameWidth) + name := columnSpec{ + Key: "name", + Title: "Name", + Width: nameWidth, + MinWidth: minNameWidth, + Value: func(entry vfs.Entry, _ bool) string { + return entryIcon(entry, useNerdIcons) + " " + entry.DisplayName() + }, + } + + return append([]columnSpec{name}, fixed...) +} + +func columnSeparator(columnKey string, palette theme.Palette, background lipgloss.Color) string { + width := separatorWidth(columnKey) + style := lipgloss.NewStyle(). + Width(width). + Foreground(palette.Border) + if background != lipgloss.Color("") { + style = style.Background(background) + } + return style.Render(strings.Repeat(" ", width)) +} + +func separatorWidth(columnKey string) int { + if columnKey == "size" { + return 2 + } + return 1 +} + +func borderStyle(value string) lipgloss.Border { + switch strings.ToLower(value) { + case "double": + return lipgloss.DoubleBorder() + case "thick": + return lipgloss.ThickBorder() + default: + return lipgloss.RoundedBorder() + } +} + +func compactPath(path string, mode string) string { + switch strings.ToLower(mode) { + case "full": + return path + case "smart": + return smartPath(path, 42) + default: + return vfs.SafeBase(path) + } +} + +func smartPath(path string, maxWidth int) string { + if lipgloss.Width(path) <= maxWidth { + return path + } + return truncateMiddle(path, maxWidth) +} + +func truncateMiddle(value string, maxWidth int) string { + if maxWidth <= 0 || lipgloss.Width(value) <= maxWidth { + return value + } + if maxWidth <= 3 { + return trimToWidthRight(value, maxWidth) + } + left := maxWidth/2 - 1 + right := maxWidth - left - 1 + if left < 1 { + left = 1 + } + if right < 1 { + right = 1 + } + return trimToWidthRight(value, left) + "…" + trimToWidthLeft(value, right) +} + +func truncateRight(value string, maxWidth int) string { + if maxWidth <= 0 || lipgloss.Width(value) <= maxWidth { + return value + } + if maxWidth == 1 { + return trimToWidthRight(value, 1) + } + return trimToWidthRight(value, maxWidth-1) + "…" +} + +func truncateForColumn(value string, maxWidth int, alignRight bool) string { + if lipgloss.Width(value) <= maxWidth { + return value + } + if alignRight { + if maxWidth <= 1 { + return trimToWidthLeft(value, 1) + } + return "…" + trimToWidthLeft(value, maxWidth-1) + } + return truncateRight(value, maxWidth) +} + +func trimToWidthRight(value string, maxWidth int) string { + if maxWidth <= 0 { + return "" + } + width := 0 + var builder strings.Builder + for _, r := range value { + rw := lipgloss.Width(string(r)) + if width+rw > maxWidth { + break + } + builder.WriteRune(r) + width += rw + } + return builder.String() +} + +func trimToWidthLeft(value string, maxWidth int) string { + if maxWidth <= 0 { + return "" + } + runes := []rune(value) + width := 0 + start := len(runes) + for i := len(runes) - 1; i >= 0; i-- { + rw := lipgloss.Width(string(runes[i])) + if width+rw > maxWidth { + break + } + width += rw + start = i + } + return string(runes[start:]) +} + +func entryIcon(entry vfs.Entry, useNerdIcons bool) string { + if !useNerdIcons { + switch entry.Category() { + case "parent": + return "<-" + case "remote": + return "[SV]" + case "directory": + return "[D]" + case "config": + return "[C]" + case "text": + return "[T]" + case "image": + return "[I]" + case "executable": + return "[X]" + case "archive": + return "[A]" + default: + return "[F]" + } + } + switch entry.Category() { + case "parent": + return "↩" + case "remote": + return "󰒋" + case "directory": + return "" + case "config": + return "" + case "text": + return "󰈙" + case "image": + return "󰋩" + case "executable": + return "󰆍" + case "archive": + return "" + default: + return "󰈔" + } +} + +func entryColor(entry vfs.Entry, palette theme.Palette) lipgloss.Color { + switch entry.Category() { + case "remote": + return palette.ExecFile + case "directory", "parent": + return palette.Folder + case "config": + return palette.ConfigFile + case "text": + return palette.TextFile + case "image": + return palette.ImageFile + case "executable": + return palette.ExecFile + default: + return palette.BinaryFile + } +} diff --git a/src/vcom-0.2.5/internal/ui/ssh.go b/src/vcom-0.2.5/internal/ui/ssh.go new file mode 100644 index 0000000..e64f46a --- /dev/null +++ b/src/vcom-0.2.5/internal/ui/ssh.go @@ -0,0 +1,244 @@ +package ui + +import ( + "fmt" + "path" + "strings" + + vfs "vcom/internal/fs" + "vcom/internal/fs/remote" + + "github.com/charmbracelet/bubbles/textinput" +) + +// isRemoteHostEntry returns true if the entry represents an SSH host. +func isRemoteHostEntry(entry vfs.Entry) bool { + return entry.IsRemote +} + +// isRemoteAddHostEntry returns true if the entry is the "Add host" special item. +func isRemoteAddHostEntry(entry vfs.Entry) bool { + return entry.IsRemote && entry.Name == "+ Add host" +} + +// buildSSHHostEntries creates virtual directory entries for SSH hosts. +// connectedHosts optionally specifies which hosts have active connections +// (host name -> true). When non-nil, entries show a connection status prefix. +func buildSSHHostEntries(store *remote.HostStore, connectedHosts map[string]bool) []vfs.Entry { + hosts := store.AllHosts() + entries := make([]vfs.Entry, 0, len(hosts)+1) + + // Find the longest host name so we can pad them all to the same width, + // making the (user@host) suffix align vertically across entries. + maxNameLen := 0 + for _, h := range hosts { + if l := len(h.Name); l > maxNameLen { + maxNameLen = l + } + } + + for _, h := range hosts { + isConnected := connectedHosts != nil && connectedHosts[h.Name] + + addr := h.HostName + if h.Port != "" && h.Port != "22" { + addr = fmt.Sprintf("%s:%s", addr, h.Port) + } + suffix := "" + if h.User != "" { + suffix = fmt.Sprintf(" (%s@%s)", h.User, addr) + } else { + suffix = fmt.Sprintf(" (%s)", addr) + } + paddedName := h.Name + strings.Repeat(" ", maxNameLen-len(h.Name)) + + entries = append(entries, vfs.Entry{ + Name: paddedName + suffix, + Path: "ssh://" + h.Name, + IsDir: true, + IsRemote: true, + Connected: isConnected, + RemoteHostName: h.Name, + Mode: 0o755, + }) + } + + // Add "Add host" entry at the bottom + entries = append(entries, vfs.Entry{ + Name: "+ Add host", + Path: "ssh://add-host", + IsDir: false, + IsRemote: true, + }) + + return entries +} + +// SSHConnectDialogInputs creates the text input fields for the SSH connect dialog. +func SSHConnectDialogInputs() []textinput.Model { + fields := make([]textinput.Model, 5) + + placeholders := []string{"my-server", "192.168.1.100", "22", "root", ""} + + for i := range fields { + ti := textinput.New() + ti.Placeholder = placeholders[i] + ti.CharLimit = 128 + ti.Width = 40 + if i == 4 { + ti.EchoMode = textinput.EchoPassword + ti.EchoCharacter = '•' + } + if i == 0 { + ti.Focus() + } + fields[i] = ti + } + + return fields +} + +// sshDialogLabel returns the label for an SSH dialog field at the given index. +func sshDialogLabel(index int) string { + lbls := []string{"Name:", "Hostname/IP:", "Port:", "User:", "Password:"} + if index >= 0 && index < len(lbls) { + return lbls[index] + } + return "" +} + +// sshDialogValue returns the value for an SSH dialog field. +func sshDialogValue(inputs []textinput.Model, index int) string { + if index >= 0 && index < len(inputs) { + return inputs[index].Value() + } + return "" +} + +// buildSSHHostFromDialog creates an SSHHost from dialog input values. +func buildSSHHostFromDialog(inputs []textinput.Model) remote.SSHHost { + host := remote.SSHHost{ + Name: strings.TrimSpace(sshDialogValue(inputs, 0)), + HostName: strings.TrimSpace(sshDialogValue(inputs, 1)), + Port: strings.TrimSpace(sshDialogValue(inputs, 2)), + User: strings.TrimSpace(sshDialogValue(inputs, 3)), + Password: sshDialogValue(inputs, 4), + } + if host.Port == "" { + host.Port = "22" + } + return host +} + +// formatSSHConnectHelp returns the help text for the SSH connect dialog. +func formatSSHConnectHelp() string { + return `Fields: + Name — alias for this host (required) + Hostname/IP — server address (required) + Port — SSH port, default 22 + User — login username (required) + Password — password for password-based auth + +Navigation: Tab / Shift+Tab between fields +Confirm: Enter +Close: Esc / q +Help: F1 / ?` +} + +// remoteDirToEntries reads a remote directory via SFTP and converts to vfs.Entry slice. +func remoteDirToEntries(remotePath string, sshClient *remote.SSHClient) ([]vfs.Entry, error) { + fileInfos, err := sshClient.ReadDir(remotePath) + if err != nil { + return nil, err + } + + entries := make([]vfs.Entry, 0, len(fileInfos)+1) + + // Add parent directory entry if not at root + if remotePath != "/" { + parent := path.Dir(remotePath) + if parent == "" { + parent = "/" + } + entries = append(entries, vfs.Entry{ + Name: "..", + Path: parent, + IsDir: true, + IsParent: true, + }) + } + + for _, info := range fileInfos { + name := info.Name() + isDir := info.IsDir() + fullPath := path.Join(remotePath, name) + + ext := "" + if idx := strings.LastIndex(name, "."); idx > 0 { + ext = strings.ToLower(name[idx+1:]) + } + entry := vfs.Entry{ + Name: name, + Path: fullPath, + Extension: ext, + Mode: info.Mode(), + Size: info.Size(), + ModifiedAt: info.ModTime(), + IsDir: isDir, + IsHidden: strings.HasPrefix(name, "."), + } + + entries = append(entries, entry) + } + + return entries, nil +} + +// sshState holds SSH-related state for the model. +type sshState struct { + store *remote.HostStore + inputs []textinput.Model + inputFocus int + showHelp bool + + // Connection test state + testingConn bool // true while an async connection test is in progress + cancelTest func() // call to abort a pending connection test + + // connectedHosts tracks which host names have active SSH connections. + // Updated when connections are established or closed. + connectedHosts map[string]bool + + // activeClients stores SSH clients for hosts whose connections are kept alive + // after returning to the host list. Clients are closed on full SSH mode exit. + activeClients map[string]*remote.SSHClient +} + +// cycleInput shifts focus between dialog inputs by delta (+1/-1). +func (s *sshState) cycleInput(delta int) { + if s == nil || len(s.inputs) == 0 { + return + } + s.inputs[s.inputFocus].Blur() + s.inputFocus = (s.inputFocus + delta) % len(s.inputs) + if s.inputFocus < 0 { + s.inputFocus += len(s.inputs) + } + s.inputs[s.inputFocus].Focus() +} + +// newSSHState creates a new sshState with a HostStore. +func newSSHState() (*sshState, error) { + store, err := remote.NewHostStore() + if err != nil { + return nil, err + } + return &sshState{ + store: store, + inputs: SSHConnectDialogInputs(), + inputFocus: 0, + activeClients: make(map[string]*remote.SSHClient), + showHelp: false, + connectedHosts: make(map[string]bool), + }, nil +} diff --git a/src/vcom-0.2.5/plans/extended-preview-feature.md b/src/vcom-0.2.5/plans/extended-preview-feature.md new file mode 100644 index 0000000..fb29893 --- /dev/null +++ b/src/vcom-0.2.5/plans/extended-preview-feature.md @@ -0,0 +1,497 @@ +# Extended Preview — PDF, Audio, Video via External Utilities + +## Overview + +Add rich preview support for three new file categories by leveraging external CLI tools. If a tool is not installed, the file falls back to the existing binary-file display. + +```mermaid +flowchart TD + A[BuildPreview entry] --> B{Is directory?} + B -->|Yes| C[buildDirectoryPreview] + B -->|No| D[Open file, read header] + D --> E{Detect image?} + E -->|Yes| F[PreviewKindImage] + E -->|No| G{Detect PDF ext?} + G -->|Yes| H{pdftotext available?} + H -->|Yes| I[PreviewKindPDF - extract text] + H -->|No| J[Fallback to binary] + G -->|No| K{Detect audio ext?} + K -->|Yes| L{ffprobe available?} + L -->|Yes| M[PreviewKindAudio - show metadata] + L -->|No| N[Fallback to binary] + K -->|No| O{Detect video ext?} + O -->|Yes| P{ffprobe available?} + P -->|Yes| Q[PreviewKindVideo - show metadata] + P -->|No| R[Fallback to binary] + O -->|No| S[Is binary sample?] + S -->|Yes| T[PreviewKindBinary] + S -->|No| U[PreviewKindText + syntax highlight] +``` + +## 1. New PreviewKind Constants + +File: [`internal/fs/preview.go`](internal/fs/preview.go) (around line 28-35) + +Add three new constants to the `PreviewKind` type: +- `PreviewKindPDF PreviewKind = "pdf"` +- `PreviewKindAudio PreviewKind = "audio"` +- `PreviewKindVideo PreviewKind = "video"` + +## 2. Extended Metadata Struct + +File: [`internal/fs/preview.go`](internal/fs/preview.go) — `Metadata` struct (line 37-48) + +Add new optional fields: + +```go +type Metadata struct { + // ... existing fields ... + + // Extended preview metadata + Duration string // audio/video duration (e.g. "3:42") + Bitrate string // audio/video bitrate (e.g. "320 kbps") + AudioCodec string // audio codec (e.g. "aac", "mp3") + VideoCodec string // video codec (e.g. "h264", "vp9") + SampleRate string // audio sample rate (e.g. "44100 Hz") + Channels string // audio channels (e.g. "stereo") + PageCount string // PDF page count + Dimensions string // video dimensions (e.g. "1920x1080") +} +``` + +## 3. New Extension Maps + +File: [`internal/fs/entry.go`](internal/fs/entry.go) (around line 55-63) + +Add three new extension sets: + +```go +pdfExtensions = map[string]struct{}{ + "pdf": {}, +} +audioExtensions = map[string]struct{}{ + "mp3": {}, "flac": {}, "ogg": {}, "opus": {}, "wav": {}, + "aac": {}, "m4a": {}, "wma": {}, "dsf": {}, "ape": {}, +} +videoExtensions = map[string]struct{}{ + "mp4": {}, "mkv": {}, "mov": {}, "avi": {}, "webm": {}, + "m4v": {}, "wmv": {}, "flv": {}, "ts": {}, "mts": {}, +} +``` + +## 4. New Categories in `Category()` Method + +File: [`internal/fs/entry.go`](internal/fs/entry.go) — `Category()` method (line 102-123) + +Add three new cases in the switch statement (before `default`): + +```go +case hasExt(pdfExtensions, e.Extension): + return "pdf" +case hasExt(audioExtensions, e.Extension): + return "audio" +case hasExt(videoExtensions, e.Extension): + return "video" +``` + +## 5. External Utility Detection + +File: [`internal/fs/preview.go`](internal/fs/preview.go) — new helper functions + +```go +func findTool(name string) string { + path, err := exec.LookPath(name) + if err != nil { + return "" + } + return path +} +``` + +Add `"os/exec"` to imports. + +## 6. Modified `BuildPreview()` Flow + +File: [`internal/fs/preview.go`](internal/fs/preview.go) — `BuildPreview()` (line 73) + +Insert the new checks after the image detection block (after line 131) and before the `IsBinarySample()` check: + +```go +// PDF preview via pdftotext +if hasExt(pdfExtensions, entry.Extension) { + return buildPDFPreview(entry, options, preview) +} + +// Audio preview via ffprobe +if hasExt(audioExtensions, entry.Extension) { + return buildAudioPreview(entry, options, preview) +} + +// Video preview via ffprobe +if hasExt(videoExtensions, entry.Extension) { + return buildVideoPreview(entry, options, preview) +} +``` + +This placement ensures: +- Images are still detected by magic bytes (works for any extension) +- PDF/audio/video get their custom handling +- Files that don't match any category fall through to the existing binary/text detection + +## 7. New Preview Builder Functions + +File: [`internal/fs/preview.go`](internal/fs/preview.go) — new functions + +### 7a. `buildPDFPreview()` + +```go +func buildPDFPreview(entry Entry, options PreviewOptions, base Preview) Preview { + pdftotext := findTool("pdftotext") + if pdftotext == "" { + base.Kind = PreviewKindBinary + base.Body = "PDF file detected.\nInstall poppler-utils (pdftotext) for text preview." + base.PlainBody = base.Body + return base + } + + // Extract text + cmd := exec.Command(pdftotext, "-layout", "-nopgbrk", entry.Path, "-") + out, err := cmd.Output() + if err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("pdftotext error:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + text := string(out) + if len(text) > int(options.MaxPreviewBytes) { + text = text[:options.MaxPreviewBytes] + } + + // Get page count via pdfinfo if available + pdfinfo := findTool("pdfinfo") + if pdfinfo != "" { + infoCmd := exec.Command(pdfinfo, entry.Path) + if infoOut, err := infoCmd.Output(); err == nil { + for _, line := range strings.Split(string(infoOut), "\n") { + if strings.HasPrefix(strings.ToLower(line), "pages:") { + base.Metadata.PageCount = strings.TrimSpace(strings.TrimPrefix(line, "Pages:")) + break + } + } + } + } + + base.Kind = PreviewKindPDF + base.PlainBody = text + base.Body = highlightText(entry.Path, text, options.ThemeName) + return base +} +``` + +### 7b. `buildAudioPreview()` + +```go +func buildAudioPreview(entry Entry, options PreviewOptions, base Preview) Preview { + ffprobe := findTool("ffprobe") + if ffprobe == "" { + base.Kind = PreviewKindBinary + base.Body = "Audio file detected.\nInstall ffmpeg (ffprobe) for metadata preview." + base.PlainBody = base.Body + return base + } + + // Use ffprobe to extract metadata as JSON + cmd := exec.Command(ffprobe, + "-v", "quiet", + "-print_format", "json", + "-show_format", + "-show_streams", + entry.Path, + ) + out, err := cmd.Output() + if err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("ffprobe error:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + var info struct { + Format struct { + Duration string `json:"duration"` + Bitrate string `json:"bit_rate"` + } `json:"format"` + Streams []struct { + CodecType string `json:"codec_type"` + CodecName string `json:"codec_name"` + SampleRate string `json:"sample_rate"` + Channels int `json:"channels"` + } `json:"streams"` + } + if err := json.Unmarshal(out, &info); err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("Could not parse ffprobe output:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + // Format duration + if info.Format.Duration != "" { + if secs, err := strconv.ParseFloat(info.Format.Duration, 64); err == nil { + mins := int(secs) / 60 + secsRem := int(secs) % 60 + base.Metadata.Duration = fmt.Sprintf("%d:%02d", mins, secsRem) + } + } + + if info.Format.Bitrate != "" { + if bps, err := strconv.ParseInt(info.Format.Bitrate, 10, 64); err == nil { + base.Metadata.Bitrate = fmt.Sprintf("%d kbps", bps/1000) + } + } + + for _, stream := range info.Streams { + if stream.CodecType == "audio" { + base.Metadata.AudioCodec = stream.CodecName + if stream.SampleRate != "" { + base.Metadata.SampleRate = stream.SampleRate + " Hz" + } + switch stream.Channels { + case 1: + base.Metadata.Channels = "mono" + case 2: + base.Metadata.Channels = "stereo" + case 6: + base.Metadata.Channels = "5.1" + case 8: + base.Metadata.Channels = "7.1" + default: + base.Metadata.Channels = fmt.Sprintf("%d ch", stream.Channels) + } + break + } + } + + // Build a rich metadata body + var lines []string + lines = append(lines, fmt.Sprintf(" Duration: %s", base.Metadata.Duration)) + if base.Metadata.Bitrate != "" { + lines = append(lines, fmt.Sprintf(" Bitrate: %s", base.Metadata.Bitrate)) + } + if base.Metadata.AudioCodec != "" { + lines = append(lines, fmt.Sprintf(" Codec: %s", base.Metadata.AudioCodec)) + } + if base.Metadata.SampleRate != "" { + lines = append(lines, fmt.Sprintf(" Rate: %s", base.Metadata.SampleRate)) + } + if base.Metadata.Channels != "" { + lines = append(lines, fmt.Sprintf(" Channels: %s", base.Metadata.Channels)) + } + + base.Kind = PreviewKindAudio + base.Body = fmt.Sprintf("🎵 Audio File\n\n%s", strings.Join(lines, "\n")) + base.PlainBody = fmt.Sprintf("Audio File\n\nDuration: %s\nBitrate: %s\nCodec: %s\nRate: %s\nChannels: %s", + base.Metadata.Duration, base.Metadata.Bitrate, base.Metadata.AudioCodec, + base.Metadata.SampleRate, base.Metadata.Channels) + return base +} +``` + +### 7c. `buildVideoPreview()` + +```go +func buildVideoPreview(entry Entry, options PreviewOptions, base Preview) Preview { + ffprobe := findTool("ffprobe") + if ffprobe == "" { + base.Kind = PreviewKindBinary + base.Body = "Video file detected.\nInstall ffmpeg (ffprobe) for metadata preview." + base.PlainBody = base.Body + return base + } + + // Use ffprobe to extract metadata as JSON + cmd := exec.Command(ffprobe, + "-v", "quiet", + "-print_format", "json", + "-show_format", + "-show_streams", + entry.Path, + ) + out, err := cmd.Output() + if err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("ffprobe error:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + var info struct { + Format struct { + Duration string `json:"duration"` + Bitrate string `json:"bit_rate"` + } `json:"format"` + Streams []struct { + CodecType string `json:"codec_type"` + CodecName string `json:"codec_name"` + Width int `json:"width"` + Height int `json:"height"` + } `json:"streams"` + } + if err := json.Unmarshal(out, &info); err != nil { + base.Kind = PreviewKindError + base.Body = fmt.Sprintf("Could not parse ffprobe output:\n\n%s", err) + base.PlainBody = base.Body + return base + } + + // Format duration + if info.Format.Duration != "" { + if secs, err := strconv.ParseFloat(info.Format.Duration, 64); err == nil { + hrs := int(secs) / 3600 + mins := (int(secs) % 3600) / 60 + secsRem := int(secs) % 60 + if hrs > 0 { + base.Metadata.Duration = fmt.Sprintf("%d:%02d:%02d", hrs, mins, secsRem) + } else { + base.Metadata.Duration = fmt.Sprintf("%d:%02d", mins, secsRem) + } + } + } + + if info.Format.Bitrate != "" { + if bps, err := strconv.ParseInt(info.Format.Bitrate, 10, 64); err == nil { + base.Metadata.Bitrate = fmt.Sprintf("%d kbps", bps/1000) + } + } + + for _, stream := range info.Streams { + switch stream.CodecType { + case "video": + base.Metadata.VideoCodec = stream.CodecName + if stream.Width > 0 && stream.Height > 0 { + base.Metadata.Dimensions = fmt.Sprintf("%dx%d", stream.Width, stream.Height) + } + case "audio": + if base.Metadata.AudioCodec == "" { + base.Metadata.AudioCodec = stream.CodecName + } + } + } + + // Build a rich metadata body + var lines []string + lines = append(lines, fmt.Sprintf(" Duration: %s", base.Metadata.Duration)) + if base.Metadata.Bitrate != "" { + lines = append(lines, fmt.Sprintf(" Bitrate: %s", base.Metadata.Bitrate)) + } + if base.Metadata.VideoCodec != "" { + lines = append(lines, fmt.Sprintf(" Video: %s", base.Metadata.VideoCodec)) + } + if base.Metadata.Dimensions != "" { + lines = append(lines, fmt.Sprintf(" Resolution: %s", base.Metadata.Dimensions)) + } + if base.Metadata.AudioCodec != "" { + lines = append(lines, fmt.Sprintf(" Audio: %s", base.Metadata.AudioCodec)) + } + + base.Kind = PreviewKindVideo + base.Body = fmt.Sprintf("🎬 Video File\n\n%s", strings.Join(lines, "\n")) + base.PlainBody = fmt.Sprintf("Video File\n\nDuration: %s\nBitrate: %s\nVideo: %s\nResolution: %s\nAudio: %s", + base.Metadata.Duration, base.Metadata.Bitrate, base.Metadata.VideoCodec, + base.Metadata.Dimensions, base.Metadata.AudioCodec) + return base +} +``` + +## 8. UI: Update `renderMetadata()` + +File: [`internal/ui/model.go`](internal/ui/model.go) — `renderMetadata()` (line 2714) + +Add new metadata fields to the right column after the image info block: + +```go +// After: if meta.ImageFormat != "" { ... } + +if meta.Duration != "" { + rightRows = append(rightRows, fmt.Sprintf("duration: %s", meta.Duration)) +} +if meta.Bitrate != "" { + rightRows = append(rightRows, fmt.Sprintf("bitrate: %s", meta.Bitrate)) +} +if meta.AudioCodec != "" { + rightRows = append(rightRows, fmt.Sprintf("audio: %s", meta.AudioCodec)) +} +if meta.VideoCodec != "" { + rightRows = append(rightRows, fmt.Sprintf("video: %s", meta.VideoCodec)) +} +if meta.Dimensions != "" { + rightRows = append(rightRows, fmt.Sprintf("resolution: %s", meta.Dimensions)) +} +if meta.SampleRate != "" { + rightRows = append(rightRows, fmt.Sprintf("rate: %s", meta.SampleRate)) +} +if meta.Channels != "" { + rightRows = append(rightRows, fmt.Sprintf("channels: %s", meta.Channels)) +} +if meta.PageCount != "" { + rightRows = append(rightRows, fmt.Sprintf("pages: %s", meta.PageCount)) +} +``` + +## 9. UI: Update `previewIcon()` + +File: [`internal/ui/model.go`](internal/ui/model.go) — `previewIcon()` (line 3545) + +Add new Nerd Font icons: + +```go +case vfs.PreviewKindPDF: + return "󰷉" // nf-oct-file-pdf +case vfs.PreviewKindAudio: + return "󰋋" // nf-custom-audio-file +case vfs.PreviewKindVideo: + return "󰋲" // nf-custom-video-file +``` + +And ASCII fallback: +```go +case "pdf": + return "[P]" +case "audio": + return "[A]" +case "video": + return "[V]" +``` + +## 10. UI: Update `syncImageOverlay()` + +File: [`internal/ui/model.go`](internal/ui/model.go) — `syncImageOverlay()` (line 4225) + +The overlay should only show for `PreviewKindImage`, which it already checks. No change needed — video files should NOT use the image overlay since we don't have video thumbnail support yet. + +## 11. Files Changed Summary + +| File | Changes | +|------|---------| +| [`internal/fs/entry.go`](internal/fs/entry.go) | Add `pdfExtensions`, `audioExtensions`, `videoExtensions` maps; update `Category()` method | +| [`internal/fs/preview.go`](internal/fs/preview.go) | Add `PreviewKindPDF/Audio/Video` constants; add fields to `Metadata`; add `findTool()`, `buildPDFPreview()`, `buildAudioPreview()`, `buildVideoPreview()`; modify `BuildPreview()` insertion point; add `"os/exec"`, `"encoding/json"` imports | +| [`internal/ui/model.go`](internal/ui/model.go) | Update `renderMetadata()` with new fields; update `previewIcon()` with new icons | + +## 12. Edge Cases & Considerations + +- **Missing external tool**: If `pdftotext` or `ffprobe` is not installed, the user sees a helpful message telling them which package to install, and the preview falls back to `PreviewKindBinary` (same as before). +- **Large PDFs**: Text extraction respects `MaxPreviewBytes` limit — truncated output is still highlighted. +- **Corrupt files**: `ffprobe` and `pdftotext` handle errors gracefully; any non-zero exit returns `PreviewKindError` with the error message. +- **Performance**: External processes are launched synchronously in the preview command (which already runs in a goroutine via `loadPreviewCmd()`), so the UI remains responsive. +- **No new dependencies**: All tools are invoked via `os/exec` (stdlib). No Go modules needed. + +## 13. Test Plan + +1. Open `test.pdf` — verify text is extracted and syntax-highlighted, page count shown in metadata +2. Open `test.mp3` — verify duration, bitrate, codec, sample rate, channels shown +3. Open `test.flac` — same as above +4. Open `test.mp4` — verify duration, bitrate, video codec, resolution, audio codec shown +5. Open PDF/audio/video on a system without `pdftotext`/`ffprobe` — verify fallback message +6. Verify `go build ./...` and `go vet ./...` pass diff --git a/src/vcom-0.2.5/plans/feature-roadmap.md b/src/vcom-0.2.5/plans/feature-roadmap.md new file mode 100644 index 0000000..6f218dd --- /dev/null +++ b/src/vcom-0.2.5/plans/feature-roadmap.md @@ -0,0 +1,44 @@ +# Feature Roadmap — vcom + +## Выбранные фичи (по приоритету) + +### 1. Поиск/фильтрация файлов (`/`) +- [ ] **Filter mode**: при нажатии `/` открывается текстовый инпут внизу экрана (поверх footer, как модальное окно) +- [ ] Фильтрация `[]Entry` в активной панели на лету по `strings.Contains`/fuzzy-match +- [ ] Подсветка совпадений в строках (изменить `renderEntryRow` — передать query, подсветить matched part) +- [ ] `Esc` — выход из filter mode, восстановление полного списка +- [ ] `Enter` — зафиксировать фильтр (оставить отфильтрованный список), выход из filter mode +- [ ] При смене директории фильтр сбрасывается + +### 2. Bulk rename (массовое переименование) +- [ ] Выделить файлы (`Shift+↑/↓`), нажать `Ctrl+R` (новая клавиша) +- [ ] Модальное окно с текстовым полем для паттерна: `prefix_%N.ext` +- [ ] Превью результата (старое имя → новое имя) +- [ ] Выполнить rename для всех выделенных + +### 3. Корзина (trash support) +- [ ] `Delete/F8` — перемещать в `~/.local/share/Trash/` по freedesktop spec +- [ ] `Shift+Delete` —永久ное удаление (как сейчас) +- [ ] `browser.confirm_delete` применяется к永久ному удалению +- [ ] Новая опция конфига: `behavior.use_trash = true` (default: true) + +### 4. Directory history (назад/вперед) +- [ ] `[]string` стек истории на каждую панель +- [ ] `Alt+←` / `Alt+→` — навигация назад/вперед +- [ ] При переходе в новую директорию (Enter, Backspace, клик) — push в history +- [ ] При навигации по истории — не создавать новые записи + +### 5. Расширенный превью форматов +- [ ] PDF — извлечение текста через `pdftotext` (если доступен) +- [ ] Аудио — метаданные через `ffprobe` (битрейт, длительность, кодек) +- [ ] Видео — метаданные + превью через `ffmpegthumbnailer`/`ffprobe` +- [ ] Fallback если утилита не установлена + +--- + +## Процесс + +1. Каждая фича реализуется в отдельной ветке `feature/N-имя` +2. После реализации — commit + push +3. После апрува — merge в main +4. Порядок: 1 → 4 → 3 → 2 → 5 (от простого к сложному) diff --git a/src/vcom-0.2.5/plans/mirror-and-cursor-memory.md b/src/vcom-0.2.5/plans/mirror-and-cursor-memory.md new file mode 100644 index 0000000..da56968 --- /dev/null +++ b/src/vcom-0.2.5/plans/mirror-and-cursor-memory.md @@ -0,0 +1,88 @@ +# Feature Plan: Mirror Pane & Per-Directory Cursor Memory + +## Feature 1: Mirror active pane directory to opposite pane + +### Keybinding research +- **Midnight Commander (MC)**: `Alt-i` — makes the other panel equal to current directory +- **Total Commander**: `Ctrl-PgDn` opens directory under cursor in opposite panel +- **Far Manager**: `Ctrl-Left/Right` — opens in opposite panel + +**Recommendation**: Bind to `p` (for "Pane"). `Ctrl-i` sends the same byte as `Tab` (ASCII 0x09) so it conflicts with Switch. `p` is free, accessible, and "Pane" reflects the meaning. + +### How it works +1. Read active pane's current path (including remote mount state) +2. Apply that path to the passive (opposite) pane +3. If active is in a remote mount, also clone the remote mount stack to the passive pane +4. Reload both panes to reflect the change + +### Code changes + +#### [`internal/ui/keymap.go`](internal/ui/keymap.go) +- Add `Mirror` key binding field to `KeyMap` struct +- Bind to `"p"` with help text `"p"` / `"mirror pane"` + +#### [`internal/ui/model.go`](internal/ui/model.go) +- Add handler `handleMirrorPane()`: + 1. Get active pane path and remote mount state + 2. Switch passive pane to match (copy remote stack if applicable) + 3. Reload passive pane (using `reloadPane` or `reloadRemotePane`) + 4. Set status: `"Mirrored: "` +- Add key match case before the `default` switch + +--- + +## Feature 2: Per-directory cursor position memory (session scope) + +### Current state +- `enterSelected()` saves `pane.Path` to history for back-nav, then reloads target dir with `selected.Name` as preserve key — but `selected.Name` is the name of the directory being entered, not a cursor anchor +- `goParent()` pops history and reloads parent using the child directory name as preserve — cursor lands on the directory we came from +- **Missing**: When navigating back into a previously-visited directory, there's no saved cursor position for it + +### Design +Add a `cursorMemory` field to `BrowserPane` — a `map[string]string` mapping **directory path → last selected entry display name**. + +This integrates cleanly with the existing `SetEntries(entries, preserveKey)` / `FindSelected()` infrastructure. + +### Flow + +``` +enterSelected() / enterRemoteDir(): + 1. Save to cursorMemory: pane.Path → selected entry's Name + 2. Push history (existing) + 3. Set path, reload (existing) + 4. The reload already uses preserve=selected.Name for the new dir, + but cursorMemory will help when coming back later + +reloadPane() / reloadRemotePane(): + 1. Try preserve key first (existing behavior) + 2. If preserve is empty, check cursorMemory[pane.Path] + and use that as preserveKey instead +``` + +### Code changes + +#### [`internal/ui/pane.go`](internal/ui/pane.go) +- Add field to `BrowserPane`: `CursorMemory map[string]string` +- Method `SaveCursor(path string, name string)` — stores cursor position +- Method `LoadCursor(path string) string` — retrieves saved cursor + +#### [`internal/ui/model.go`](internal/ui/model.go) +- In `enterSelected()` (line ~1886): after `pane.PushHistory(pane.Path)`, add `pane.SaveCursor(pane.Path, selected.Name)` +- In `enterRemoteDir()` (line ~5726): same save logic +- In `goParent()`: save cursor before navigating away (already partially done via history) +- In `reloadPane()` (line ~1672): after existing preserve logic, if no preserve key and directory has cursor memory, use it +- In `reloadRemotePane()` (line ~5535): same fallback + +--- + +## Files modified +| File | Changes | +|------|---------| +| `internal/ui/keymap.go` | Add `Mirror` field, binding `p` | +| `internal/ui/pane.go` | Add `CursorMemory` field + methods | +| `internal/ui/model.go` | Add `handleMirrorPane()`, save/restore cursor in navigation methods | + +## Not changed +- `internal/fs/` — storage layer unaffected +- `internal/config/` — no config changes needed +- `internal/theme/` — no theme changes needed diff --git a/src/vcom-0.2.5/plans/theme-selector-dialog.md b/src/vcom-0.2.5/plans/theme-selector-dialog.md new file mode 100644 index 0000000..1eeceec --- /dev/null +++ b/src/vcom-0.2.5/plans/theme-selector-dialog.md @@ -0,0 +1,193 @@ +# Plan: Theme Selector Dialog with Live Preview + +## Summary +Replace the current `cycleTheme()` (simple cycle through themes on `t`) with a modal dialog that shows all themes, their base colors, supports live preview via Up/Down navigation, and commit/revert on Enter/Esc. + +## Changes + +### 1. `internal/ui/model.go` — New modal kind + +Add to `modalKind` const (around line 34): +```go +modalThemeSelect +``` + +### 2. `internal/ui/model.go` — New theme selector state + +Add new struct and field to `Model`: + +```go +type themeSelectorState struct { + names []string // all theme names in order + cursor int // current cursor index in the list + original string // the theme name before opening dialog (for Esc revert) +} + +type Model struct { + // ... existing fields ... + themeSelector *themeSelectorState // nil when not in theme selector dialog +} +``` + +### 3. `internal/ui/model.go` — New handler `openThemeSelector()` + +Replace the `cycleTheme()` call with `openThemeSelector()`: + +1. Read current theme name from `m.cfg.UI.Theme` +2. Get all theme names via `theme.Names()` +3. Find current theme index in the list +4. Create `themeSelectorState` with names, cursor=current index, original=current theme +5. Set `m.modal.kind = modalThemeSelect` +6. Set modal title/body (body may be empty since list is rendered in `renderThemeSelectModal`) + +The `t` key match (`case key.Matches(msg, m.keys.CycleTheme)`) now calls `m.openThemeSelector()` instead of `m.cycleTheme()`. + +### 4. `internal/ui/model.go` — Modal key handling + +Add a new case in `handleModalKey()` for `modalThemeSelect`: + +```go +case modalThemeSelect: + switch { + case msg.String() == "up" || msg.String() == "k": + // Move cursor up, clamp to 0, apply theme preview + m.themeSelector.cursor-- + if m.themeSelector.cursor < 0 { m.themeSelector.cursor = 0 } + m.applyThemePreview(m.themeSelector.names[m.themeSelector.cursor]) + return m, nil + case msg.String() == "down" || msg.String() == "j": + // Move cursor down, clamp to len-1, apply theme preview + m.themeSelector.cursor++ + if m.themeSelector.cursor >= len(m.themeSelector.names) { + m.themeSelector.cursor = len(m.themeSelector.names) - 1 + } + m.applyThemePreview(m.themeSelector.names[m.themeSelector.cursor]) + return m, nil + case key.Matches(msg, m.keys.Confirm): // Enter + // Apply selected theme and save + selected := m.themeSelector.names[m.themeSelector.cursor] + m.finalizeTheme(selected) + m.themeSelector = nil + m.modal = modalState{} + m.status = fmt.Sprintf("Theme: %s", selected) + return m, nil + case msg.String() == "esc": + // Revert to original theme + m.applyThemePreview(m.themeSelector.original) + m.themeSelector = nil + m.modal = modalState{} + m.status = "Theme unchanged" + return m, nil + } +``` + +### 5. `internal/ui/model.go` — applyThemePreview helper + +A new method that applies a theme palette to `m.palette` **without saving to config**: + +```go +func (m *Model) applyThemePreview(name string) { + palette, err := theme.Resolve(name) + if err != nil { + return // silently ignore resolve errors during preview + } + m.palette = palette + // Don't update m.cfg.UI.Theme or save — that's only on Enter +} +``` + +### 6. `internal/ui/model.go` — finalizeTheme helper + +A new method that applies the theme AND saves to config: + +```go +func (m *Model) finalizeTheme(name string) { + palette, err := theme.Resolve(name) + if err != nil { + m.status = err.Error() + return + } + m.cfg.UI.Theme = name + m.palette = palette + savedPath, saveErr := config.Save(m.cfg, m.configPath) + if saveErr != nil { + m.status = fmt.Sprintf("Theme: %s (save failed: %v)", name, saveErr) + return + } + m.configPath = savedPath +} +``` + +### 7. `internal/ui/model.go` — renderThemeSelectModal + +Create a new render function `renderThemeSelectModal()`: + +```go +func renderThemeSelectModal(m Model, palette theme.Palette, width int) string { + outerWidth := max(width, 8) + contentWidth := max(outerWidth-6, 1) + + // Styles + titleStyle := lipgloss.NewStyle()... + box := lipgloss.NewStyle()... + + // Build theme list rows + lines := []string{titleStyle.Render("Select Theme"), spacer} + lines = append(lines, instructions) + lines = append(lines, spacer) + + for i, name := range m.themeSelector.names { + resolved, err := theme.Resolve(name) + // skip if error + + // Selection indicator + theme name + // Color swatches: Background, Panel, Accent, Text, Selection + // Highlight current item + } + + return box.Render(strings.Join(lines, "\n")) +} +``` + +Each row shows: +- Cursor indicator (`▸` or ` `) +- Theme name +- Color swatches as small colored blocks: Background, Panel, Accent, Text, Selection +- Currently selected item is highlighted with `Selection` background color + +### 8. `internal/ui/model.go` — Update View dispatch + +Add a new condition in `renderModal()` (around line 3698) to dispatch to `renderThemeSelectModal` when `modalKind == modalThemeSelect`: + +```go +if m.modal.kind == modalThemeSelect { + return renderThemeSelectModal(m, palette, width) +} +``` + +### 9. `internal/ui/model.go` — Remove old cycleTheme (optional) + +The old `cycleTheme()` method can be kept for backward compatibility or removed. The `t` key will now open the dialog instead. + +### 10. Help dialog update (optional) + +Update the help dialog to reflect the new behavior: `"t open theme selector"` instead of `"t cycle theme"`. + +## Files modified +| File | Changes | +|------|---------| +| `internal/ui/model.go` | Add `modalThemeSelect` kind, `themeSelectorState` struct, `openThemeSelector()`, `applyThemePreview()`, `finalizeTheme()`, key handling in `handleModalKey`, `renderThemeSelectModal()`, update `renderModal()` dispatch | +| (none else) | Theme data, config saving, keymap — all remain unchanged | + +## Key design points +1. **Live preview**: Every Up/Down key press instantly resolves the new theme palette and applies it to `m.palette`. The user sees the full UI change in real time. +2. **Safe revert**: On Esc, the original theme (saved in `themeSelectorState.original`) is restored. +3. **Config save only on Enter**: Only `finalizeTheme()` persists to config file. +4. **Color swatches**: Each theme row shows 5 small colored blocks (Background, Panel, Accent, Text, Selection) so the user can visually compare themes. +5. **Clean state management**: `themeSelector` is `nil` when the dialog is closed, making it easy to check state. + +## Not changed +- `internal/theme/` — storage layer unchanged +- `internal/config/` — no config changes +- `internal/ui/keymap.go` — `t` binding unchanged, only behavior changes +- `internal/ui/pane.go` — no changes diff --git a/src/vcom-0.2.5/scripts/build-deb.sh b/src/vcom-0.2.5/scripts/build-deb.sh new file mode 100755 index 0000000..a3e3ddd --- /dev/null +++ b/src/vcom-0.2.5/scripts/build-deb.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -ne 1 ]]; then + echo "usage: $0 " >&2 + exit 1 +fi + +version="$1" +pkgroot="target/debian/pkgroot" +outdir="target/debian" + +rm -rf "$pkgroot" +mkdir -p \ + "$pkgroot/DEBIAN" \ + "$pkgroot/usr/bin" \ + "$pkgroot/usr/share/doc/vcom" \ + "$pkgroot/usr/share/licenses/vcom" + +install -Dm755 "target/release/vcom" "$pkgroot/usr/bin/vcom" +install -Dm644 "README.md" "$pkgroot/usr/share/doc/vcom/README.md" +install -Dm644 "vcom.toml" "$pkgroot/usr/share/doc/vcom/vcom.toml" +install -Dm644 "LICENSE" "$pkgroot/usr/share/licenses/vcom/LICENSE" + +cat > "$pkgroot/DEBIAN/control" < +Depends: ueberzug | ueberzugpp +Description: Terminal file manager inspired by Midnight Commander + A two-pane terminal file manager with inspect mode and text previews. +EOF + +dpkg-deb --build "$pkgroot" "$outdir/vcom_${version}_amd64.deb" diff --git a/src/vcom-0.2.5/vcom.toml b/src/vcom-0.2.5/vcom.toml new file mode 100644 index 0000000..ea51e44 --- /dev/null +++ b/src/vcom-0.2.5/vcom.toml @@ -0,0 +1,45 @@ +[startup] +left_path = '' +right_path = '' + +[ui] +app_title = 'vcom' +theme = 'github-dark' +icon_mode = 'auto' +show_title_bar = true +show_footer = true +border = 'rounded' +path_display = 'smart' +pane_gap = 1 +center_width_percent = 30 + +[browser] +show_hidden = true +dirs_first = true +human_readable_size = true + +[browser.sort] +by = 'name' +reverse = false + +[browser.columns] +name = true +size = true +modified = true +created = false +permissions = false +extension = false + +[preview] +show_metadata = true +wrap_text = false +max_preview_bytes = 65536 +directory_preview_limit = 80 + +[behavior] +confirm_delete = true +confirm_overwrite = true +calculate_dir_size_on_space = true +follow_symlinks = false +auto_refresh = true +auto_refresh_interval = 5 diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.editorconfig b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.editorconfig new file mode 100644 index 0000000..cfb2c66 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.editorconfig @@ -0,0 +1,17 @@ +root = true + +[*] +indent_style = tab +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.xml] +indent_style = space +indent_size = 2 +insert_final_newline = false + +[*.yml] +indent_style = space +indent_size = 2 diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.gitignore b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.gitignore new file mode 100644 index 0000000..aedf83d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.gitignore @@ -0,0 +1,28 @@ +# Binaries for programs and plugins +.git +.idea +.vscode +.hermit +*.exe +*.dll +*.so +*.dylib +/cmd/chroma/chroma + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ + +_models/ + +_examples/ +*.min.* +build/ + +cmd/chromad/static/chroma.wasm +cmd/chromad/static/wasm_exec.js diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.golangci.yml new file mode 100644 index 0000000..91f313b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.golangci.yml @@ -0,0 +1,89 @@ +run: + tests: true + +output: + print-issued-lines: false + +linters: + enable-all: true + disable: + - lll + - gocyclo + - dupl + - gochecknoglobals + - funlen + - godox + - wsl + - gocognit + - nolintlint + - testpackage + - godot + - nestif + - paralleltest + - nlreturn + - cyclop + - gci + - gofumpt + - errorlint + - exhaustive + - wrapcheck + - stylecheck + - thelper + - nonamedreturns + - revive + - dupword + - exhaustruct + - varnamelen + - forcetypeassert + - ireturn + - maintidx + - govet + - testableexamples + - musttag + - depguard + - goconst + - perfsprint + - mnd + - predeclared + - recvcheck + - tenv + - err113 + +linters-settings: + gocyclo: + min-complexity: 10 + dupl: + threshold: 100 + goconst: + min-len: 8 + min-occurrences: 3 + forbidigo: + #forbid: + # - (Must)?NewLexer$ + exclude_godoc_examples: false + + +issues: + exclude-dirs: + - _examples + max-per-linter: 0 + max-same: 0 + exclude-use-default: false + exclude: + # Captured by errcheck. + - '^(G104|G204):' + # Very commonly not checked. + - 'Error return value of .(.*\.Help|.*\.MarkFlagRequired|(os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*printf?|os\.(Un)?Setenv). is not checked' + - 'exported method (.*\.MarshalJSON|.*\.UnmarshalJSON|.*\.EntityURN|.*\.GoString|.*\.Pos) should have comment or be unexported' + - 'composite literal uses unkeyed fields' + - 'declaration of "err" shadows declaration' + - 'should not use dot imports' + - 'Potential file inclusion via variable' + - 'should have comment or be unexported' + - 'comment on exported var .* should be of the form' + - 'at least one file in a package should have a package comment' + - 'string literal contains the Unicode' + - 'methods on the same type should have the same receiver name' + - '_TokenType_name should be _TokenTypeName' + - '`_TokenType_map` should be `_TokenTypeMap`' + - 'rewrite if-else to switch statement' diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.goreleaser.yml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.goreleaser.yml new file mode 100644 index 0000000..f7c4f7d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/.goreleaser.yml @@ -0,0 +1,34 @@ +project_name: chroma +release: + github: + owner: alecthomas + name: chroma +brews: + - install: bin.install "chroma" +env: + - CGO_ENABLED=0 +builds: + - goos: + - linux + - darwin + - windows + goarch: + - arm64 + - amd64 + - "386" + goarm: + - "6" + dir: ./cmd/chroma + main: . + ldflags: -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}} + binary: chroma +archives: + - format: tar.gz + name_template: "{{ .Binary }}-{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + files: + - COPYING + - README* +snapshot: + name_template: SNAPSHOT-{{ .Commit }} +checksum: + name_template: "{{ .ProjectName }}-{{ .Version }}-checksums.txt" diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/AGENTS.md b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/AGENTS.md new file mode 100644 index 0000000..0d3b6ee --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/AGENTS.md @@ -0,0 +1,11 @@ +Chroma is a syntax highlighting library, tool and web playground for Go. It is based on Pygments and includes importers for it, so most of the same concepts from Pygments apply to Chroma. + +This project is written in Go, uses Hermit to manage tooling, and Just for helper commands. Helper scripts are in ./scripts. + +Language definitions are XML files defined in ./lexers/embedded/*.xml. + +Styles/themes are defined in ./styles/*.xml. + +The CLI can be run with `chroma`. + +The web playground can be run with `chromad --csrf-key=moo`. It blocks, so should generally be run in the background. It also does not hot reload, so has to be manually restarted. The playground has two modes - for local development it uses the server itself to render, while for production running `just chromad` will compile ./cmd/libchromawasm into a WASM module that is bundled into `chromad`. diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Bitfile b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Bitfile new file mode 100644 index 0000000..bf15863 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Bitfile @@ -0,0 +1,24 @@ +VERSION = %(git describe --tags --dirty --always)% +export CGOENABLED = 0 + +tokentype_enumer.go: types.go + build: go generate + +# Regenerate the list of lexers in the README +README.md: lexers/*.go lexers/*/*.xml table.py + build: ./table.py + -clean + +implicit %{1}%{2}.min.%{3}: **/*.{css,js} + build: esbuild --bundle %{IN} --minify --outfile=%{OUT} + +implicit build/%{1}: cmd/* + cd cmd/%{1} + inputs: cmd/%{1}/**/* **/*.go + build: go build -ldflags="-X 'main.version=%{VERSION}'" -o ../../build/%{1} . + +#upload: chromad +# build: +# scp chromad root@swapoff.org: +# ssh root@swapoff.org 'install -m755 ./chromad /srv/http/swapoff.org/bin && service chromad restart' +# touch upload diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/COPYING b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/COPYING new file mode 100644 index 0000000..92dc39f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/COPYING @@ -0,0 +1,19 @@ +Copyright (C) 2017 Alec Thomas + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Dockerfile b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Dockerfile new file mode 100644 index 0000000..c86b379 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Dockerfile @@ -0,0 +1,64 @@ +# Multi-stage Dockerfile for chromad Go application using Hermit-managed tools + +# Build stage +FROM ubuntu:24.04 AS builder + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + curl \ + git \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Set working directory +WORKDIR /app + +# Copy the entire project (including bin directory with Hermit tools) +COPY . . + +# Make Hermit tools executable and add to PATH +ENV PATH="/app/bin:${PATH}" + +# Set Go environment variables for static compilation +ENV CGO_ENABLED=0 +ENV GOOS=linux +ENV GOARCH=amd64 + +# Build the application using just +RUN just chromad + +# Runtime stage +FROM alpine:3.23 AS runtime + +# Install ca-certificates for HTTPS requests +RUN apk --no-cache add ca-certificates curl + +# Create a non-root user +RUN addgroup -g 1001 chromad && \ + adduser -D -s /bin/sh -u 1001 -G chromad chromad + +# Set working directory +WORKDIR /app + +# Copy the binary from build stage +COPY --from=builder /app/build/chromad /app/chromad + +# Change ownership to non-root user +RUN chown chromad:chromad /app/chromad + +# Switch to non-root user +USER chromad + +# Expose port (default is 8080, but can be overridden via PORT env var) +EXPOSE 8080 + +# Set default environment variables +ENV PORT=8080 +ENV CHROMA_CSRF_KEY="testtest" + +# Health check +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD curl -fsSL http://127.0.0.1:8080/ > /dev/null + +# Run the application +CMD ["sh", "-c", "./chromad --csrf-key=$CHROMA_CSRF_KEY --bind=0.0.0.0:$PORT"] diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Justfile b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Justfile new file mode 100644 index 0000000..24e3816 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/Justfile @@ -0,0 +1,55 @@ +set positional-arguments := true +set shell := ["bash", "-c"] + +version := `git describe --tags --dirty --always` +export GOOS := env("GOOS", "linux") +export GOARCH := env("GOARCH", "amd64") + +_help: + @just -l + +# Generate README.md from lexer definitions +readme: + #!/usr/bin/env bash + GOOS= GOARCH= ./table.py + +# Generate tokentype_string.go +tokentype-string: + go generate + +# Format JavaScript files +format-js: + biome format --write cmd/chromad/static/index.js cmd/chromad/static/chroma.js + +# Build chromad binary +chromad: wasm-exec chroma-wasm + #!/usr/bin/env bash + rm -rf build + mk cmd/chromad/static/index.min.js : cmd/chromad/static/{index,chroma}.js -- \ + esbuild --platform=browser --format=esm --bundle cmd/chromad/static/index.js --minify --external:./wasm_exec.js --outfile=cmd/chromad/static/index.min.js + mk cmd/chromad/static/index.min.css : cmd/chromad/static/index.css -- \ + esbuild --bundle cmd/chromad/static/index.css --minify --outfile=cmd/chromad/static/index.min.css + cd cmd/chromad && CGOENABLED=0 go build -ldflags="-X 'main.version={{ version }}'" -o ../../build/chromad . + +# Copy wasm_exec.js from TinyGo +wasm-exec: + #!/usr/bin/env bash + tinygoroot=$(tinygo env TINYGOROOT) + mk cmd/chromad/static/wasm_exec.js : "$tinygoroot/targets/wasm_exec.js" -- \ + install -m644 "$tinygoroot/targets/wasm_exec.js" cmd/chromad/static/wasm_exec.js + +# Build WASM binary +chroma-wasm: + #!/usr/bin/env bash + if type tinygo > /dev/null 2>&1; then + mk cmd/chromad/static/chroma.wasm : cmd/libchromawasm/main.go -- \ + tinygo build -no-debug -target wasm -o cmd/chromad/static/chroma.wasm cmd/libchromawasm/main.go + else + mk cmd/chromad/static/chroma.wasm : cmd/libchromawasm/main.go -- \ + GOOS=js GOARCH=wasm go build -o cmd/chromad/static/chroma.wasm cmd/libchromawasm/main.go + fi + +# Upload chromad to server +upload: chromad + scp build/chromad root@swapoff.org: + ssh root@swapoff.org 'install -m755 ./chromad /srv/http/swapoff.org/bin && service chromad restart' diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/README.md b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/README.md new file mode 100644 index 0000000..4aeb54d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/README.md @@ -0,0 +1,307 @@ +![Chroma](chroma.jpg) + +# A general purpose syntax highlighter in pure Go + +[![Go Reference](https://pkg.go.dev/badge/github.com/alecthomas/chroma/v2.svg)](https://pkg.go.dev/github.com/alecthomas/chroma/v2) [![CI](https://github.com/alecthomas/chroma/actions/workflows/ci.yml/badge.svg)](https://github.com/alecthomas/chroma/actions/workflows/ci.yml) [![Slack chat](https://img.shields.io/static/v1?logo=slack&style=flat&label=slack&color=green&message=gophers)](https://invite.slack.golangbridge.org/) + + +Chroma takes source code and other structured text and converts it into syntax +highlighted HTML, ANSI-coloured text, etc. + +Chroma is based heavily on [Pygments](http://pygments.org/), and includes +translators for Pygments lexers and styles. + +## Table of Contents + + + +1. [Supported languages](#supported-languages) +2. [Try it](#try-it) +3. [Using the library](#using-the-library) + 1. [Quick start](#quick-start) + 2. [Identifying the language](#identifying-the-language) + 3. [Formatting the output](#formatting-the-output) + 4. [The HTML formatter](#the-html-formatter) +4. [More detail](#more-detail) + 1. [Lexers](#lexers) + 2. [Formatters](#formatters) + 3. [Styles](#styles) +5. [Command-line interface](#command-line-interface) +6. [Testing lexers](#testing-lexers) +7. [What's missing compared to Pygments?](#whats-missing-compared-to-pygments) + + + +## Supported languages + +| Prefix | Language +| :----: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +| A | ABAP, ABNF, ActionScript, ActionScript 3, Ada, Agda, AL, Alloy, Angular2, ANTLR, ApacheConf, APL, AppleScript, ArangoDB AQL, Arduino, ArmAsm, ATL, AutoHotkey, AutoIt, Awk +| B | Ballerina, Bash, Bash Session, Batchfile, Beef, BibTeX, Bicep, BlitzBasic, BNF, BQN, Brainfuck +| C | C, C#, C++, C3, Caddyfile, Caddyfile Directives, Cap'n Proto, Cassandra CQL, Ceylon, CFEngine3, cfstatement, ChaiScript, Chapel, Cheetah, Clojure, CMake, COBOL, CoffeeScript, Common Lisp, Coq, Core, Crystal, CSS, CSV, CUE, Cython +| D | D, Dart, Dax, Desktop file, Diff, Django/Jinja, dns, Docker, DTD, Dylan +| E | EBNF, Elixir, Elm, EmacsLisp, Erlang +| F | Factor, Fennel, Fish, Forth, Fortran, FortranFixed, FSharp +| G | GAS, GDScript, GDScript3, Gemtext, Genshi, Genshi HTML, Genshi Text, Gherkin, Gleam, GLSL, Gnuplot, Go, Go HTML Template, Go Template, Go Text Template, GraphQL, Groff, Groovy +| H | Handlebars, Hare, Haskell, Haxe, HCL, Hexdump, HLB, HLSL, HolyC, HTML, HTTP, Hy +| I | Idris, Igor, INI, Io, ISCdhcpd +| J | J, Janet, Java, JavaScript, JSON, JSONata, Jsonnet, Julia, Jungle +| K | Kakoune, Kotlin +| L | Lean4, Lighttpd configuration file, LLVM, lox, Lua +| M | Makefile, Mako, markdown, Markless, Mason, Materialize SQL dialect, Mathematica, Matlab, MCFunction, Meson, Metal, MiniZinc, MLIR, Modelica, Modula-2, Mojo, MonkeyC, MoonScript, MorrowindScript, Myghty, MySQL +| N | NASM, Natural, NDISASM, Newspeak, Nginx configuration file, Nim, Nix, NSIS, Nu +| O | Objective-C, ObjectPascal, OCaml, Octave, Odin, OnesEnterprise, OpenEdge ABL, OpenSCAD, Org Mode +| P | PacmanConf, Perl, PHP, PHTML, Pig, PkgConfig, PL/pgSQL, plaintext, Plutus Core, Pony, PostgreSQL SQL dialect, PostScript, POVRay, PowerQuery, PowerShell, Prolog, Promela, PromQL, properties, Protocol Buffer, Protocol Buffer Text Format, PRQL, PSL, Puppet, Python, Python 2 +| Q | QBasic, QML +| R | R, Racket, Ragel, Raku, react, ReasonML, reg, Rego, reStructuredText, Rexx, RGBDS Assembly, Ring, RPGLE, RPMSpec, Ruby, Rust +| S | SAS, Sass, Scala, Scheme, Scilab, SCSS, Sed, Sieve, Smali, Smalltalk, Smarty, SNBT, Snobol, Solidity, SourcePawn, SPARQL, SQL, SquidConf, Standard ML, stas, Stylus, Svelte, Swift, SYSTEMD, systemverilog +| T | TableGen, Tal, TASM, Tcl, Tcsh, Termcap, Terminfo, Terraform, TeX, Thrift, TOML, TradingView, Transact-SQL, Turing, Turtle, Twig, TypeScript, TypoScript, TypoScriptCssData, TypoScriptHtmlData, Typst +| U | ucode +| V | V, V shell, Vala, VB.net, verilog, VHDL, VHS, VimL, vue +| W | WDTE, WebAssembly Text Format, WebGPU Shading Language, WebVTT, Whiley +| X | XML, Xorg +| Y | YAML, YANG +| Z | Z80 Assembly, Zed, Zig + +_I will attempt to keep this section up to date, but an authoritative list can be +displayed with `chroma --list`._ + +## Try it + +Try out various languages and styles on the [Chroma Playground](https://swapoff.org/chroma/playground/). + +## Using the library + +This is version 2 of Chroma, use the import path: + +```go +import "github.com/alecthomas/chroma/v2" +``` + +Chroma, like Pygments, has the concepts of +[lexers](https://github.com/alecthomas/chroma/tree/master/lexers), +[formatters](https://github.com/alecthomas/chroma/tree/master/formatters) and +[styles](https://github.com/alecthomas/chroma/tree/master/styles). + +Lexers convert source text into a stream of tokens, styles specify how token +types are mapped to colours, and formatters convert tokens and styles into +formatted output. + +A package exists for each of these, containing a global `Registry` variable +with all of the registered implementations. There are also helper functions +for using the registry in each package, such as looking up lexers by name or +matching filenames, etc. + +In all cases, if a lexer, formatter or style can not be determined, `nil` will +be returned. In this situation you may want to default to the `Fallback` +value in each respective package, which provides sane defaults. + +### Quick start + +A convenience function exists that can be used to simply format some source +text, without any effort: + +```go +err := quick.Highlight(os.Stdout, someSourceCode, "go", "html", "monokai") +``` + +### Identifying the language + +To highlight code, you'll first have to identify what language the code is +written in. There are three primary ways to do that: + +1. Detect the language from its filename. + + ```go + lexer := lexers.Match("foo.go") + ``` + +2. Explicitly specify the language by its Chroma syntax ID (a full list is available from `lexers.Names()`). + + ```go + lexer := lexers.Get("go") + ``` + +3. Detect the language from its content. + + ```go + lexer := lexers.Analyse("package main\n\nfunc main()\n{\n}\n") + ``` + +In all cases, `nil` will be returned if the language can not be identified. + +```go +if lexer == nil { + lexer = lexers.Fallback +} +``` + +At this point, it should be noted that some lexers can be extremely chatty. To +mitigate this, you can use the coalescing lexer to coalesce runs of identical +token types into a single token: + +```go +lexer = chroma.Coalesce(lexer) +``` + +### Formatting the output + +Once a language is identified you will need to pick a formatter and a style (theme). + +```go +style := styles.Get("swapoff") +if style == nil { + style = styles.Fallback +} +formatter := formatters.Get("html") +if formatter == nil { + formatter = formatters.Fallback +} +``` + +Then obtain an iterator over the tokens: + +```go +contents, err := ioutil.ReadAll(r) +iterator, err := lexer.Tokenise(nil, string(contents)) +``` + +And finally, format the tokens from the iterator: + +```go +err := formatter.Format(w, style, iterator) +``` + +### The HTML formatter + +By default the `html` registered formatter generates standalone HTML with +embedded CSS. More flexibility is available through the `formatters/html` package. + +Firstly, the output generated by the formatter can be customised with the +following constructor options: + +- `Standalone()` - generate standalone HTML with embedded CSS. +- `WithClasses()` - use classes rather than inlined style attributes. +- `ClassPrefix(prefix)` - prefix each generated CSS class. +- `TabWidth(width)` - Set the rendered tab width, in characters. +- `WithLineNumbers()` - Render line numbers (style with `LineNumbers`). +- `WithLinkableLineNumbers()` - Make the line numbers linkable and be a link to themselves. +- `HighlightLines(ranges)` - Highlight lines in these ranges (style with `LineHighlight`). +- `LineNumbersInTable()` - Use a table for formatting line numbers and code, rather than spans. + +If `WithClasses()` is used, the corresponding CSS can be obtained from the formatter with: + +```go +formatter := html.New(html.WithClasses(true)) +err := formatter.WriteCSS(w, style) +``` + +## More detail + +### Lexers + +See the [Pygments documentation](http://pygments.org/docs/lexerdevelopment/) +for details on implementing lexers. Most concepts apply directly to Chroma, +but see existing lexer implementations for real examples. + +In many cases lexers can be automatically converted directly from Pygments by +using the included Python 3 script `pygments2chroma_xml.py`. I use something like +the following: + +```sh +uv run --script _tools/pygments2chroma_xml.py \ + pygments.lexers.jvm.KotlinLexer \ + > lexers/embedded/kotlin.xml +``` + +A list of all lexers available in Pygments can be found in [pygments-lexers.txt](https://github.com/alecthomas/chroma/blob/master/pygments-lexers.txt). + +### Formatters + +Chroma supports HTML output, as well as terminal output in 8 colour, 256 colour, and true-colour. + +A `noop` formatter is included that outputs the token text only, and a `tokens` +formatter outputs raw tokens. The latter is useful for debugging lexers. + +### Styles + +Chroma styles are defined in XML. The style entries use the +[same syntax](http://pygments.org/docs/styles/) as Pygments. + +All Pygments styles have been converted to Chroma using the `_tools/style.py` +script. + +When you work with one of [Chroma's styles](https://github.com/alecthomas/chroma/tree/master/styles), +know that the `Background` token type provides the default style for tokens. It does so +by defining a foreground color and background color. + +For example, this gives each token name not defined in the style a default color +of `#f8f8f8` and uses `#000000` for the highlighted code block's background: + +```xml + +``` + +Also, token types in a style file are hierarchical. For instance, when `CommentSpecial` is not defined, Chroma uses the token style from `Comment`. So when several comment tokens use the same color, you'll only need to define `Comment` and override the one that has a different color. + +For a quick overview of the available styles and how they look, check out the [Chroma Style Gallery](https://xyproto.github.io/splash/docs/). + +## Command-line interface + +A command-line interface to Chroma is included. + +Binaries are available to install from [the releases page](https://github.com/alecthomas/chroma/releases). + +The CLI can be used as a preprocessor to colorise output of `less(1)`, +see documentation for the `LESSOPEN` environment variable. + +The `--fail` flag can be used to suppress output and return with exit status +1 to facilitate falling back to some other preprocessor in case chroma +does not resolve a specific lexer to use for the given file. For example: + +```shell +export LESSOPEN='| p() { chroma --fail "$1" || cat "$1"; }; p "%s"' +``` + +Replace `cat` with your favourite fallback preprocessor. + +When invoked as `.lessfilter`, the `--fail` flag is automatically turned +on under the hood for easy integration with [lesspipe shipping with +Debian and derivatives](https://manpages.debian.org/lesspipe#USER_DEFINED_FILTERS); +for that setup the `chroma` executable can be just symlinked to `~/.lessfilter`. + +## Projects using Chroma + +* [`moor`](https://github.com/walles/moor) is a full-blown pager that colorizes + its input using Chroma +* [Hugo](https://gohugo.io/) is a static site generator that [uses Chroma for syntax + highlighting code examples](https://gohugo.io/content-management/syntax-highlighting/) + +## Testing lexers + +If you edit some lexers and want to try it, open a shell in `cmd/chromad` and run: + +```shell +go run . --csrf-key=securekey +``` + +A Link will be printed. Open it in your Browser. Now you can test on the Playground with your local changes. + +If you want to run the tests and the lexers, open a shell in the root directory and run: + +```shell +go test ./lexers +``` + +When updating or adding a lexer, please add tests. See [lexers/README.md](lexers/README.md) for more. + +## What's missing compared to Pygments? + +- Quite a few lexers, for various reasons (pull-requests welcome): + - Pygments lexers for complex languages often include custom code to + handle certain aspects, such as Raku's ability to nest code inside + regular expressions. These require time and effort to convert. + - I mostly only converted languages I had heard of, to reduce the porting cost. +- Some more esoteric features of Pygments are omitted for simplicity. +- Though the Chroma API supports content detection, very few languages support them. + I have plans to implement a statistical analyser at some point, but not enough time. diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/biome.json b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/biome.json new file mode 100644 index 0000000..a5bec2e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/biome.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.0.5/schema.json", + "formatter": { + "indentStyle": "space" + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/chroma.jpg b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/chroma.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a747dbf804db96473bffa217fb5aead7a18c3b7f GIT binary patch literal 80950 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

)}55;`dud3IBER-AOu@p^kSE+y`sKT{`CH8iGB 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 8) + 4*g*g + (((767 - rmean) * b * b) >> 8))) +} + +// Brighten returns a copy of this colour with its brightness adjusted. +// +// If factor is negative, the colour is darkened. +// +// Uses approach described here (http://www.pvladov.com/2012/09/make-color-lighter-or-darker.html). +func (c Colour) Brighten(factor float64) Colour { + r := float64(c.Red()) + g := float64(c.Green()) + b := float64(c.Blue()) + + if factor < 0 { + factor++ + r *= factor + g *= factor + b *= factor + } else { + r = (255-r)*factor + r + g = (255-g)*factor + g + b = (255-b)*factor + b + } + return NewColour(uint8(r), uint8(g), uint8(b)) +} + +// BrightenOrDarken brightens a colour if it is < 0.5 brightness or darkens if > 0.5 brightness. +func (c Colour) BrightenOrDarken(factor float64) Colour { + if c.Brightness() < 0.5 { + return c.Brighten(factor) + } + return c.Brighten(-factor) +} + +// ClampBrightness returns a copy of this colour with its brightness adjusted such that +// it falls within the range [min, max] (or very close to it due to rounding errors). +// The supplied values use the same [0.0, 1.0] range as Brightness. +func (c Colour) ClampBrightness(min, max float64) Colour { + if !c.IsSet() { + return c + } + + min = math.Max(min, 0) + max = math.Min(max, 1) + current := c.Brightness() + target := math.Min(math.Max(current, min), max) + if current == target { + return c + } + + r := float64(c.Red()) + g := float64(c.Green()) + b := float64(c.Blue()) + rgb := r + g + b + if target > current { + // Solve for x: target == ((255-r)*x + r + (255-g)*x + g + (255-b)*x + b) / 255 / 3 + return c.Brighten((target*255*3 - rgb) / (255*3 - rgb)) + } + // Solve for x: target == (r*(x+1) + g*(x+1) + b*(x+1)) / 255 / 3 + return c.Brighten((target*255*3)/rgb - 1) +} + +// Brightness of the colour (roughly) in the range 0.0 to 1.0. +func (c Colour) Brightness() float64 { + return (float64(c.Red()) + float64(c.Green()) + float64(c.Blue())) / 255.0 / 3.0 +} + +// ParseColour in the forms #rgb, #rrggbb, #ansi, or #. +// Will return an "unset" colour if invalid. +func ParseColour(colour string) Colour { + colour = normaliseColour(colour) + n, err := strconv.ParseUint(colour, 16, 32) + if err != nil { + return 0 + } + return Colour(n + 1) //nolint:gosec +} + +// MustParseColour is like ParseColour except it panics if the colour is invalid. +// +// Will panic if colour is in an invalid format. +func MustParseColour(colour string) Colour { + parsed := ParseColour(colour) + if !parsed.IsSet() { + panic(fmt.Errorf("invalid colour %q", colour)) + } + return parsed +} + +// IsSet returns true if the colour is set. +func (c Colour) IsSet() bool { return c != 0 } + +func (c Colour) String() string { return fmt.Sprintf("#%06x", int(c-1)) } +func (c Colour) GoString() string { return fmt.Sprintf("Colour(0x%06x)", int(c-1)) } + +// Red component of colour. +func (c Colour) Red() uint8 { return uint8(((c - 1) >> 16) & 0xff) } //nolint:gosec + +// Green component of colour. +func (c Colour) Green() uint8 { return uint8(((c - 1) >> 8) & 0xff) } //nolint:gosec + +// Blue component of colour. +func (c Colour) Blue() uint8 { return uint8((c - 1) & 0xff) } //nolint:gosec + +// Colours is an orderable set of colours. +type Colours []Colour + +func (c Colours) Len() int { return len(c) } +func (c Colours) Swap(i, j int) { c[i], c[j] = c[j], c[i] } +func (c Colours) Less(i, j int) bool { return c[i] < c[j] } + +// Convert colours to #rrggbb. +func normaliseColour(colour string) string { + if ansi, ok := ANSI2RGB[colour]; ok { + return ansi + } + if strings.HasPrefix(colour, "#") { + colour = colour[1:] + if len(colour) == 3 { + return colour[0:1] + colour[0:1] + colour[1:2] + colour[1:2] + colour[2:3] + colour[2:3] + } + } + return colour +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/delegate.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/delegate.go new file mode 100644 index 0000000..298f2db --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/delegate.go @@ -0,0 +1,161 @@ +package chroma + +import ( + "bytes" +) + +type delegatingLexer struct { + root Lexer + language Lexer +} + +// DelegatingLexer combines two lexers to handle the common case of a language embedded inside another, such as PHP +// inside HTML or PHP inside plain text. +// +// It takes two lexer as arguments: a root lexer and a language lexer. First everything is scanned using the language +// lexer, which must return "Other" for unrecognised tokens. Then all "Other" tokens are lexed using the root lexer. +// Finally, these two sets of tokens are merged. +// +// The lexers from the template lexer package use this base lexer. +func DelegatingLexer(root Lexer, language Lexer) Lexer { + return &delegatingLexer{ + root: root, + language: language, + } +} + +func (d *delegatingLexer) SetTracing(enable bool) { + if l, ok := d.language.(TracingLexer); ok { + l.SetTracing(enable) + } + if l, ok := d.root.(TracingLexer); ok { + l.SetTracing(enable) + } +} + +func (d *delegatingLexer) AnalyseText(text string) float32 { + return d.root.AnalyseText(text) +} + +func (d *delegatingLexer) SetAnalyser(analyser func(text string) float32) Lexer { + d.root.SetAnalyser(analyser) + return d +} + +func (d *delegatingLexer) SetRegistry(r *LexerRegistry) Lexer { + d.root.SetRegistry(r) + d.language.SetRegistry(r) + return d +} + +func (d *delegatingLexer) Config() *Config { + return d.language.Config() +} + +// An insertion is the character range where language tokens should be inserted. +type insertion struct { + start, end int + tokens []Token +} + +func (d *delegatingLexer) Tokenise(options *TokeniseOptions, text string) (Iterator, error) { // nolint: gocognit + tokens, err := Tokenise(Coalesce(d.language), options, text) + if err != nil { + return nil, err + } + // Compute insertions and gather "Other" tokens. + others := &bytes.Buffer{} + insertions := []*insertion{} + var insert *insertion + offset := 0 + var last Token + for _, t := range tokens { + if t.Type == Other { + if last != EOF && insert != nil && last.Type != Other { + insert.end = offset + } + others.WriteString(t.Value) + } else { + if last == EOF || last.Type == Other { + insert = &insertion{start: offset} + insertions = append(insertions, insert) + } + insert.tokens = append(insert.tokens, t) + } + last = t + offset += len(t.Value) + } + + if len(insertions) == 0 { + return d.root.Tokenise(options, text) + } + + // Lex the other tokens. + rootTokens, err := Tokenise(Coalesce(d.root), options, others.String()) + if err != nil { + return nil, err + } + + // Interleave the two sets of tokens. + var out []Token + offset = 0 // Offset into text. + tokenIndex := 0 + nextToken := func() Token { + if tokenIndex >= len(rootTokens) { + return EOF + } + t := rootTokens[tokenIndex] + tokenIndex++ + return t + } + insertionIndex := 0 + nextInsertion := func() *insertion { + if insertionIndex >= len(insertions) { + return nil + } + i := insertions[insertionIndex] + insertionIndex++ + return i + } + t := nextToken() + i := nextInsertion() + for t != EOF || i != nil { + // fmt.Printf("%d->%d:%q %d->%d:%q\n", offset, offset+len(t.Value), t.Value, i.start, i.end, Stringify(i.tokens...)) + if t == EOF || (i != nil && i.start < offset+len(t.Value)) { + var l Token + l, t = splitToken(t, i.start-offset) + if l != EOF { + out = append(out, l) + offset += len(l.Value) + } + out = append(out, i.tokens...) + offset += i.end - i.start + if t == EOF { + t = nextToken() + } + i = nextInsertion() + } else { + out = append(out, t) + offset += len(t.Value) + t = nextToken() + } + } + return Literator(out...), nil +} + +func splitToken(t Token, offset int) (l Token, r Token) { + if t == EOF { + return EOF, EOF + } + if offset == 0 { + return EOF, t + } + if offset == len(t.Value) { + return t, EOF + } + l = t.Clone() + r = t.Clone() + l.Value = l.Value[:offset] + r.Value = r.Value[offset:] + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/doc.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/doc.go new file mode 100644 index 0000000..4dde77c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/doc.go @@ -0,0 +1,7 @@ +// Package chroma takes source code and other structured text and converts it into syntax highlighted HTML, ANSI- +// coloured text, etc. +// +// Chroma is based heavily on Pygments, and includes translators for Pygments lexers and styles. +// +// For more information, go here: https://github.com/alecthomas/chroma +package chroma diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/emitters.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/emitters.go new file mode 100644 index 0000000..1097a75 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/emitters.go @@ -0,0 +1,233 @@ +package chroma + +import ( + "fmt" +) + +// An Emitter takes group matches and returns tokens. +type Emitter interface { + // Emit tokens for the given regex groups. + Emit(groups []string, state *LexerState) Iterator +} + +// ValidatingEmitter is an Emitter that can validate against a compiled rule. +type ValidatingEmitter interface { + Emitter + ValidateEmitter(rule *CompiledRule) error +} + +// SerialisableEmitter is an Emitter that can be serialised and deserialised to/from JSON. +type SerialisableEmitter interface { + Emitter + EmitterKind() string +} + +// EmitterFunc is a function that is an Emitter. +type EmitterFunc func(groups []string, state *LexerState) Iterator + +// Emit tokens for groups. +func (e EmitterFunc) Emit(groups []string, state *LexerState) Iterator { + return e(groups, state) +} + +type Emitters []Emitter + +type byGroupsEmitter struct { + Emitters +} + +var _ ValidatingEmitter = (*byGroupsEmitter)(nil) + +// ByGroups emits a token for each matching group in the rule's regex. +func ByGroups(emitters ...Emitter) Emitter { + return &byGroupsEmitter{Emitters: emitters} +} + +func (b *byGroupsEmitter) EmitterKind() string { return "bygroups" } + +func (b *byGroupsEmitter) ValidateEmitter(rule *CompiledRule) error { + if len(rule.Regexp.GetGroupNumbers())-1 != len(b.Emitters) { + return fmt.Errorf("number of groups %d does not match number of emitters %d", len(rule.Regexp.GetGroupNumbers())-1, len(b.Emitters)) + } + return nil +} + +func (b *byGroupsEmitter) Emit(groups []string, state *LexerState) Iterator { + iterators := make([]Iterator, 0, len(groups)-1) + if len(b.Emitters) != len(groups)-1 { + iterators = append(iterators, Error.Emit(groups, state)) + // panic(errors.Errorf("number of groups %q does not match number of emitters %v", groups, emitters)) + } else { + for i, group := range groups[1:] { + if b.Emitters[i] != nil { + iterators = append(iterators, b.Emitters[i].Emit([]string{group}, state)) + } + } + } + return Concaterator(iterators...) +} + +// ByGroupNames emits a token for each named matching group in the rule's regex. +func ByGroupNames(emitters map[string]Emitter) Emitter { + return EmitterFunc(func(groups []string, state *LexerState) Iterator { + iterators := make([]Iterator, 0, len(state.NamedGroups)-1) + if len(state.NamedGroups)-1 == 0 { + if emitter, ok := emitters[`0`]; ok { + iterators = append(iterators, emitter.Emit(groups, state)) + } else { + iterators = append(iterators, Error.Emit(groups, state)) + } + } else { + ruleRegex := state.Rules[state.State][state.Rule].Regexp + for i := 1; i < len(state.NamedGroups); i++ { + groupName := ruleRegex.GroupNameFromNumber(i) + group := state.NamedGroups[groupName] + if emitter, ok := emitters[groupName]; ok { + if emitter != nil { + iterators = append(iterators, emitter.Emit([]string{group}, state)) + } + } else { + iterators = append(iterators, Error.Emit([]string{group}, state)) + } + } + } + return Concaterator(iterators...) + }) +} + +// UsingByGroup emits tokens for the matched groups in the regex using a +// sublexer. Used when lexing code blocks where the name of a sublexer is +// contained within the block, for example on a Markdown text block or SQL +// language block. +// +// An attempt to load the sublexer will be made using the captured value from +// the text of the matched sublexerNameGroup. If a sublexer matching the +// sublexerNameGroup is available, then tokens for the matched codeGroup will +// be emitted using the sublexer. Otherwise, if no sublexer is available, then +// tokens will be emitted from the passed emitter. +// +// Example: +// +// var Markdown = internal.Register(MustNewLexer( +// &Config{ +// Name: "markdown", +// Aliases: []string{"md", "mkd"}, +// Filenames: []string{"*.md", "*.mkd", "*.markdown"}, +// MimeTypes: []string{"text/x-markdown"}, +// }, +// Rules{ +// "root": { +// {"^(```)(\\w+)(\\n)([\\w\\W]*?)(^```$)", +// UsingByGroup( +// 2, 4, +// String, String, String, Text, String, +// ), +// nil, +// }, +// }, +// }, +// )) +// +// See the lexers/markdown.go for the complete example. +// +// Note: panic's if the number of emitters does not equal the number of matched +// groups in the regex. +func UsingByGroup(sublexerNameGroup, codeGroup int, emitters ...Emitter) Emitter { + return &usingByGroup{ + SublexerNameGroup: sublexerNameGroup, + CodeGroup: codeGroup, + Emitters: emitters, + } +} + +type usingByGroup struct { + SublexerNameGroup int `xml:"sublexer_name_group"` + CodeGroup int `xml:"code_group"` + Emitters Emitters `xml:"emitters"` +} + +func (u *usingByGroup) EmitterKind() string { return "usingbygroup" } +func (u *usingByGroup) Emit(groups []string, state *LexerState) Iterator { + // bounds check + if len(u.Emitters) != len(groups)-1 { + panic("UsingByGroup expects number of emitters to be the same as len(groups)-1") + } + + // grab sublexer + sublexer := state.Registry.Get(groups[u.SublexerNameGroup]) + + // build iterators + iterators := make([]Iterator, len(groups)-1) + for i, group := range groups[1:] { + if i == u.CodeGroup-1 && sublexer != nil { + var err error + iterators[i], err = sublexer.Tokenise(nil, groups[u.CodeGroup]) + if err != nil { + panic(err) + } + } else if u.Emitters[i] != nil { + iterators[i] = u.Emitters[i].Emit([]string{group}, state) + } + } + return Concaterator(iterators...) +} + +// UsingLexer returns an Emitter that uses a given Lexer for parsing and emitting. +// +// This Emitter is not serialisable. +func UsingLexer(lexer Lexer) Emitter { + return EmitterFunc(func(groups []string, _ *LexerState) Iterator { + it, err := lexer.Tokenise(&TokeniseOptions{State: "root", Nested: true}, groups[0]) + if err != nil { + panic(err) + } + return it + }) +} + +type usingEmitter struct { + Lexer string `xml:"lexer,attr"` +} + +func (u *usingEmitter) EmitterKind() string { return "using" } + +func (u *usingEmitter) Emit(groups []string, state *LexerState) Iterator { + if state.Registry == nil { + panic(fmt.Sprintf("no LexerRegistry available for Using(%q)", u.Lexer)) + } + lexer := state.Registry.Get(u.Lexer) + if lexer == nil { + panic(fmt.Sprintf("no such lexer %q", u.Lexer)) + } + it, err := lexer.Tokenise(&TokeniseOptions{State: "root", Nested: true}, groups[0]) + if err != nil { + panic(err) + } + return it +} + +// Using returns an Emitter that uses a given Lexer reference for parsing and emitting. +// +// The referenced lexer must be stored in the same LexerRegistry. +func Using(lexer string) Emitter { + return &usingEmitter{Lexer: lexer} +} + +type usingSelfEmitter struct { + State string `xml:"state,attr"` +} + +func (u *usingSelfEmitter) EmitterKind() string { return "usingself" } + +func (u *usingSelfEmitter) Emit(groups []string, state *LexerState) Iterator { + it, err := state.Lexer.Tokenise(&TokeniseOptions{State: u.State, Nested: true}, groups[0]) + if err != nil { + panic(err) + } + return it +} + +// UsingSelf is like Using, but uses the current Lexer. +func UsingSelf(stateName string) Emitter { + return &usingSelfEmitter{stateName} +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatter.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatter.go new file mode 100644 index 0000000..00dd5d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatter.go @@ -0,0 +1,43 @@ +package chroma + +import ( + "io" +) + +// A Formatter for Chroma lexers. +type Formatter interface { + // Format returns a formatting function for tokens. + // + // If the iterator panics, the Formatter should recover. + Format(w io.Writer, style *Style, iterator Iterator) error +} + +// A FormatterFunc is a Formatter implemented as a function. +// +// Guards against iterator panics. +type FormatterFunc func(w io.Writer, style *Style, iterator Iterator) error + +func (f FormatterFunc) Format(w io.Writer, s *Style, it Iterator) (err error) { // nolint + defer func() { + if perr := recover(); perr != nil { + err = perr.(error) + } + }() + return f(w, s, it) +} + +type recoveringFormatter struct { + Formatter +} + +func (r recoveringFormatter) Format(w io.Writer, s *Style, it Iterator) (err error) { + defer func() { + if perr := recover(); perr != nil { + err = perr.(error) + } + }() + return r.Formatter.Format(w, s, it) +} + +// RecoveringFormatter wraps a formatter with panic recovery. +func RecoveringFormatter(formatter Formatter) Formatter { return recoveringFormatter{formatter} } diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/api.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/api.go new file mode 100644 index 0000000..9ca0d01 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/api.go @@ -0,0 +1,57 @@ +package formatters + +import ( + "io" + "sort" + + "github.com/alecthomas/chroma/v2" + "github.com/alecthomas/chroma/v2/formatters/html" + "github.com/alecthomas/chroma/v2/formatters/svg" +) + +var ( + // NoOp formatter. + NoOp = Register("noop", chroma.FormatterFunc(func(w io.Writer, s *chroma.Style, iterator chroma.Iterator) error { + for t := iterator(); t != chroma.EOF; t = iterator() { + if _, err := io.WriteString(w, t.Value); err != nil { + return err + } + } + return nil + })) + // Default HTML formatter outputs self-contained HTML. + htmlFull = Register("html", html.New(html.Standalone(true), html.WithClasses(true))) // nolint + SVG = Register("svg", svg.New(svg.EmbedFont("Liberation Mono", svg.FontLiberationMono, svg.WOFF))) +) + +// Fallback formatter. +var Fallback = NoOp + +// Registry of Formatters. +var Registry = map[string]chroma.Formatter{} + +// Names of registered formatters. +func Names() []string { + out := []string{} + for name := range Registry { + out = append(out, name) + } + sort.Strings(out) + return out +} + +// Get formatter by name. +// +// If the given formatter is not found, the Fallback formatter will be returned. +func Get(name string) chroma.Formatter { + if f, ok := Registry[name]; ok { + return f + } + return Fallback +} + +// Register a named formatter. +func Register(name string, formatter chroma.Formatter) chroma.Formatter { + Registry[name] = formatter + return formatter +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/html/html.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/html/html.go new file mode 100644 index 0000000..1aaafd0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/html/html.go @@ -0,0 +1,648 @@ +package html + +import ( + "fmt" + "html" + "io" + "sort" + "strconv" + "strings" + "sync" + + "github.com/alecthomas/chroma/v2" +) + +// Option sets an option of the HTML formatter. +type Option func(f *Formatter) + +// Standalone configures the HTML formatter for generating a standalone HTML document. +func Standalone(b bool) Option { return func(f *Formatter) { f.standalone = b } } + +// ClassPrefix sets the CSS class prefix. +func ClassPrefix(prefix string) Option { return func(f *Formatter) { f.prefix = prefix } } + +// WithClasses emits HTML using CSS classes, rather than inline styles. +func WithClasses(b bool) Option { return func(f *Formatter) { f.Classes = b } } + +// WithAllClasses disables an optimisation that omits redundant CSS classes. +func WithAllClasses(b bool) Option { return func(f *Formatter) { f.allClasses = b } } + +// WithCustomCSS sets user's custom CSS styles. +func WithCustomCSS(css map[chroma.TokenType]string) Option { + return func(f *Formatter) { + f.customCSS = css + } +} + +// WithCSSComments adds prefixe comments to the css classes. Defaults to true. +func WithCSSComments(b bool) Option { return func(f *Formatter) { f.writeCSSComments = b } } + +// TabWidth sets the number of characters for a tab. Defaults to 8. +func TabWidth(width int) Option { return func(f *Formatter) { f.tabWidth = width } } + +// PreventSurroundingPre prevents the surrounding pre tags around the generated code. +func PreventSurroundingPre(b bool) Option { + return func(f *Formatter) { + f.preventSurroundingPre = b + + if b { + f.preWrapper = nopPreWrapper + } else { + f.preWrapper = defaultPreWrapper + } + } +} + +// InlineCode creates inline code wrapped in a code tag. +func InlineCode(b bool) Option { + return func(f *Formatter) { + f.inlineCode = b + f.preWrapper = preWrapper{ + start: func(code bool, styleAttr string) string { + if code { + return fmt.Sprintf(``, styleAttr) + } + + return `` + }, + end: func(code bool) string { + if code { + return `` + } + + return `` + }, + } + } +} + +// WithPreWrapper allows control of the surrounding pre tags. +func WithPreWrapper(wrapper PreWrapper) Option { + return func(f *Formatter) { + f.preWrapper = wrapper + } +} + +// WrapLongLines wraps long lines. +func WrapLongLines(b bool) Option { + return func(f *Formatter) { + f.wrapLongLines = b + } +} + +// WithLineNumbers formats output with line numbers. +func WithLineNumbers(b bool) Option { + return func(f *Formatter) { + f.lineNumbers = b + } +} + +// LineNumbersInTable will, when combined with WithLineNumbers, separate the line numbers +// and code in table td's, which make them copy-and-paste friendly. +func LineNumbersInTable(b bool) Option { + return func(f *Formatter) { + f.lineNumbersInTable = b + } +} + +// WithLinkableLineNumbers decorates the line numbers HTML elements with an "id" +// attribute so they can be linked. +func WithLinkableLineNumbers(b bool, prefix string) Option { + return func(f *Formatter) { + f.linkableLineNumbers = b + f.lineNumbersIDPrefix = prefix + } +} + +// HighlightLines higlights the given line ranges with the Highlight style. +// +// A range is the beginning and ending of a range as 1-based line numbers, inclusive. +func HighlightLines(ranges [][2]int) Option { + return func(f *Formatter) { + f.highlightRanges = ranges + sort.Sort(f.highlightRanges) + } +} + +// BaseLineNumber sets the initial number to start line numbering at. Defaults to 1. +func BaseLineNumber(n int) Option { + return func(f *Formatter) { + f.baseLineNumber = n + } +} + +// New HTML formatter. +func New(options ...Option) *Formatter { + f := &Formatter{ + baseLineNumber: 1, + preWrapper: defaultPreWrapper, + writeCSSComments: true, + } + f.styleCache = newStyleCache(f) + for _, option := range options { + option(f) + } + return f +} + +// PreWrapper defines the operations supported in WithPreWrapper. +type PreWrapper interface { + // Start is called to write a start

 element.
+	// The code flag tells whether this block surrounds
+	// highlighted code. This will be false when surrounding
+	// line numbers.
+	Start(code bool, styleAttr string) string
+
+	// End is called to write the end 
element. + End(code bool) string +} + +type preWrapper struct { + start func(code bool, styleAttr string) string + end func(code bool) string +} + +func (p preWrapper) Start(code bool, styleAttr string) string { + return p.start(code, styleAttr) +} + +func (p preWrapper) End(code bool) string { + return p.end(code) +} + +var ( + nopPreWrapper = preWrapper{ + start: func(code bool, styleAttr string) string { return "" }, + end: func(code bool) string { return "" }, + } + defaultPreWrapper = preWrapper{ + start: func(code bool, styleAttr string) string { + if code { + return fmt.Sprintf(``, styleAttr) + } + + return fmt.Sprintf(``, styleAttr) + }, + end: func(code bool) string { + if code { + return `` + } + + return `` + }, + } +) + +// Formatter that generates HTML. +type Formatter struct { + styleCache *styleCache + standalone bool + prefix string + Classes bool // Exported field to detect when classes are being used + allClasses bool + customCSS map[chroma.TokenType]string + writeCSSComments bool + preWrapper PreWrapper + inlineCode bool + preventSurroundingPre bool + tabWidth int + wrapLongLines bool + lineNumbers bool + lineNumbersInTable bool + linkableLineNumbers bool + lineNumbersIDPrefix string + highlightRanges highlightRanges + baseLineNumber int +} + +type highlightRanges [][2]int + +func (h highlightRanges) Len() int { return len(h) } +func (h highlightRanges) Swap(i, j int) { h[i], h[j] = h[j], h[i] } +func (h highlightRanges) Less(i, j int) bool { return h[i][0] < h[j][0] } + +func (f *Formatter) Format(w io.Writer, style *chroma.Style, iterator chroma.Iterator) (err error) { + return f.writeHTML(w, style, iterator.Tokens()) +} + +// We deliberately don't use html/template here because it is two orders of magnitude slower (benchmarked). +// +// OTOH we need to be super careful about correct escaping... +func (f *Formatter) writeHTML(w io.Writer, style *chroma.Style, tokens []chroma.Token) (err error) { // nolint: gocyclo + css := f.styleCache.get(style, true) + if f.standalone { + fmt.Fprint(w, "\n") + if f.Classes { + fmt.Fprint(w, "") + } + fmt.Fprintf(w, "\n", f.styleAttr(css, chroma.Background)) + } + + wrapInTable := f.lineNumbers && f.lineNumbersInTable + + lines := chroma.SplitTokensIntoLines(tokens) + lineDigits := len(strconv.Itoa(f.baseLineNumber + len(lines) - 1)) + highlightIndex := 0 + + if wrapInTable { + // List line numbers in its own + fmt.Fprintf(w, "\n", f.styleAttr(css, chroma.PreWrapper)) + fmt.Fprintf(w, "", f.styleAttr(css, chroma.LineTable)) + fmt.Fprintf(w, "\n", f.styleAttr(css, chroma.LineTableTD)) + fmt.Fprintf(w, "%s", f.preWrapper.Start(false, f.styleAttr(css, chroma.PreWrapper))) + for index := range lines { + line := f.baseLineNumber + index + highlight, next := f.shouldHighlight(highlightIndex, line) + if next { + highlightIndex++ + } + if highlight { + fmt.Fprintf(w, "", f.styleAttr(css, chroma.LineHighlight)) + } + + fmt.Fprintf(w, "%s\n", f.styleAttr(css, chroma.LineNumbersTable), f.lineIDAttribute(line), f.lineTitleWithLinkIfNeeded(css, lineDigits, line)) + + if highlight { + fmt.Fprintf(w, "") + } + } + fmt.Fprint(w, f.preWrapper.End(false)) + fmt.Fprint(w, "\n") + fmt.Fprintf(w, "\n", f.styleAttr(css, chroma.LineTableTD, "width:100%")) + } + + fmt.Fprintf(w, "%s", f.preWrapper.Start(true, f.styleAttr(css, chroma.PreWrapper))) + + highlightIndex = 0 + for index, tokens := range lines { + // 1-based line number. + line := f.baseLineNumber + index + highlight, next := f.shouldHighlight(highlightIndex, line) + if next { + highlightIndex++ + } + + if !(f.preventSurroundingPre || f.inlineCode) { + // Start of Line + fmt.Fprint(w, ``) + } else { + fmt.Fprintf(w, "%s>", f.styleAttr(css, chroma.Line)) + } + + // Line number + if f.lineNumbers && !wrapInTable { + fmt.Fprintf(w, "%s", f.styleAttr(css, chroma.LineNumbers), f.lineIDAttribute(line), f.lineTitleWithLinkIfNeeded(css, lineDigits, line)) + } + + fmt.Fprintf(w, ``, f.styleAttr(css, chroma.CodeLine)) + } + + for _, token := range tokens { + html := html.EscapeString(token.String()) + attr := f.styleAttr(css, token.Type) + if attr != "" { + html = fmt.Sprintf("%s", attr, html) + } + fmt.Fprint(w, html) + } + + if !(f.preventSurroundingPre || f.inlineCode) { + fmt.Fprint(w, ``) // End of CodeLine + + fmt.Fprint(w, ``) // End of Line + } + } + fmt.Fprintf(w, "%s", f.preWrapper.End(true)) + + if wrapInTable { + fmt.Fprint(w, "\n") + fmt.Fprint(w, "\n") + } + + if f.standalone { + fmt.Fprint(w, "\n\n") + fmt.Fprint(w, "\n") + } + + return nil +} + +func (f *Formatter) lineIDAttribute(line int) string { + if !f.linkableLineNumbers { + return "" + } + return fmt.Sprintf(" id=\"%s\"", f.lineID(line)) +} + +func (f *Formatter) lineTitleWithLinkIfNeeded(css map[chroma.TokenType]string, lineDigits, line int) string { + title := fmt.Sprintf("%*d", lineDigits, line) + if !f.linkableLineNumbers { + return title + } + return fmt.Sprintf("%s
", f.styleAttr(css, chroma.LineLink), f.lineID(line), title) +} + +func (f *Formatter) lineID(line int) string { + return fmt.Sprintf("%s%d", f.lineNumbersIDPrefix, line) +} + +func (f *Formatter) shouldHighlight(highlightIndex, line int) (bool, bool) { + next := false + for highlightIndex < len(f.highlightRanges) && line > f.highlightRanges[highlightIndex][1] { + highlightIndex++ + next = true + } + if highlightIndex < len(f.highlightRanges) { + hrange := f.highlightRanges[highlightIndex] + if line >= hrange[0] && line <= hrange[1] { + return true, next + } + } + return false, next +} + +func (f *Formatter) class(t chroma.TokenType) string { + for t != 0 { + if cls, ok := chroma.StandardTypes[t]; ok { + if cls != "" { + return f.prefix + cls + } + return "" + } + t = t.Parent() + } + if cls := chroma.StandardTypes[t]; cls != "" { + return f.prefix + cls + } + return "" +} + +func (f *Formatter) styleAttr(styles map[chroma.TokenType]string, tt chroma.TokenType, extraCSS ...string) string { + if f.Classes { + cls := f.class(tt) + if cls == "" { + return "" + } + return fmt.Sprintf(` class="%s"`, cls) + } + if _, ok := styles[tt]; !ok { + tt = tt.SubCategory() + if _, ok := styles[tt]; !ok { + tt = tt.Category() + if _, ok := styles[tt]; !ok { + return "" + } + } + } + css := []string{styles[tt]} + css = append(css, extraCSS...) + return fmt.Sprintf(` style="%s"`, strings.Join(css, ";")) +} + +func (f *Formatter) tabWidthStyle() string { + if f.tabWidth != 0 && f.tabWidth != 8 { + return fmt.Sprintf("-moz-tab-size: %[1]d; -o-tab-size: %[1]d; tab-size: %[1]d;", f.tabWidth) + } + return "" +} + +func (f *Formatter) writeCSSRule(w io.Writer, comment string, selector string, styles string) error { + if styles == "" { + return nil + } + if f.writeCSSComments && comment != "" { + if _, err := fmt.Fprintf(w, "/* %s */ ", comment); err != nil { + return err + } + } + if _, err := fmt.Fprintf(w, "%s { %s }\n", selector, styles); err != nil { + return err + } + return nil +} + +// WriteCSS writes CSS style definitions (without any surrounding HTML). +func (f *Formatter) WriteCSS(w io.Writer, style *chroma.Style) error { + css := f.styleCache.get(style, false) + + // Special-case background as it is mapped to the outer ".chroma" class. + if err := f.writeCSSRule(w, chroma.Background.String(), fmt.Sprintf(".%sbg", f.prefix), css[chroma.Background]); err != nil { + return err + } + // Special-case PreWrapper as it is the ".chroma" class. + if err := f.writeCSSRule(w, chroma.PreWrapper.String(), fmt.Sprintf(".%schroma", f.prefix), css[chroma.PreWrapper]); err != nil { + return err + } + // Special-case code column of table to expand width. + if f.lineNumbers && f.lineNumbersInTable { + selector := fmt.Sprintf(".%schroma .%s:last-child", f.prefix, f.class(chroma.LineTableTD)) + if err := f.writeCSSRule(w, chroma.LineTableTD.String(), selector, "width: 100%;"); err != nil { + return err + } + } + // Special-case line number highlighting when targeted. + if f.lineNumbers || f.lineNumbersInTable { + targetedLineCSS := StyleEntryToCSS(style.Get(chroma.LineHighlight)) + for _, tt := range []chroma.TokenType{chroma.LineNumbers, chroma.LineNumbersTable} { + comment := fmt.Sprintf("%s targeted by URL anchor", tt) + selector := fmt.Sprintf(".%schroma .%s:target", f.prefix, f.class(tt)) + if err := f.writeCSSRule(w, comment, selector, targetedLineCSS); err != nil { + return err + } + } + } + tts := []int{} + for tt := range css { + tts = append(tts, int(tt)) + } + sort.Ints(tts) + for _, ti := range tts { + tt := chroma.TokenType(ti) + switch tt { + case chroma.Background, chroma.PreWrapper: + continue + } + class := f.class(tt) + if class == "" { + continue + } + if err := f.writeCSSRule(w, tt.String(), fmt.Sprintf(".%schroma .%s", f.prefix, class), css[tt]); err != nil { + return err + } + } + return nil +} + +func (f *Formatter) styleToCSS(style *chroma.Style) map[chroma.TokenType]string { + classes := map[chroma.TokenType]string{} + bg := style.Get(chroma.Background) + // Convert the style. + for t := range chroma.StandardTypes { + entry := style.Get(t) + if t != chroma.Background { + entry = entry.Sub(bg) + } + + // Inherit from custom CSS provided by user + tokenCategory := t.Category() + tokenSubCategory := t.SubCategory() + if t != tokenCategory { + if css, ok := f.customCSS[tokenCategory]; ok { + classes[t] = css + } + } + if tokenCategory != tokenSubCategory { + if css, ok := f.customCSS[tokenSubCategory]; ok { + classes[t] += css + } + } + // Add custom CSS provided by user + if css, ok := f.customCSS[t]; ok { + classes[t] += css + } + + if !f.allClasses && entry.IsZero() && classes[t] == `` { + continue + } + + styleEntryCSS := StyleEntryToCSS(entry) + if styleEntryCSS != `` && classes[t] != `` { + styleEntryCSS += `;` + } + classes[t] = styleEntryCSS + classes[t] + } + classes[chroma.Background] += `;` + f.tabWidthStyle() + classes[chroma.PreWrapper] += classes[chroma.Background] + classes[chroma.PreWrapper] += ` -webkit-text-size-adjust: none;` + // Make PreWrapper a grid to show highlight style with full width. + if len(f.highlightRanges) > 0 && f.customCSS[chroma.PreWrapper] == `` { + classes[chroma.PreWrapper] += `display: grid;` + } + // Make PreWrapper wrap long lines. + if f.wrapLongLines { + classes[chroma.PreWrapper] += `white-space: pre-wrap; word-break: break-word;` + } + lineNumbersStyle := `white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;` + // All rules begin with default rules followed by user provided rules + classes[chroma.Line] = `display: flex;` + classes[chroma.Line] + classes[chroma.LineNumbers] = lineNumbersStyle + classes[chroma.LineNumbers] + classes[chroma.LineNumbersTable] = lineNumbersStyle + classes[chroma.LineNumbersTable] + classes[chroma.LineTable] = "border-spacing: 0; padding: 0; margin: 0; border: 0;" + classes[chroma.LineTable] + classes[chroma.LineTableTD] = "vertical-align: top; padding: 0; margin: 0; border: 0;" + classes[chroma.LineTableTD] + classes[chroma.LineLink] = "outline: none; text-decoration: none; color: inherit" + classes[chroma.LineLink] + return classes +} + +// StyleEntryToCSS converts a chroma.StyleEntry to CSS attributes. +func StyleEntryToCSS(e chroma.StyleEntry) string { + styles := []string{} + if e.Colour.IsSet() { + styles = append(styles, "color: "+e.Colour.String()) + } + if e.Background.IsSet() { + styles = append(styles, "background-color: "+e.Background.String()) + } + if e.Bold == chroma.Yes { + styles = append(styles, "font-weight: bold") + } + if e.Italic == chroma.Yes { + styles = append(styles, "font-style: italic") + } + if e.Underline == chroma.Yes { + styles = append(styles, "text-decoration: underline") + } + return strings.Join(styles, "; ") +} + +// Compress CSS attributes - remove spaces, transform 6-digit colours to 3. +func compressStyle(s string) string { + parts := strings.Split(s, ";") + out := []string{} + for _, p := range parts { + p = strings.Join(strings.Fields(p), " ") + p = strings.Replace(p, ": ", ":", 1) + if strings.Contains(p, "#") { + c := p[len(p)-6:] + if c[0] == c[1] && c[2] == c[3] && c[4] == c[5] { + p = p[:len(p)-6] + c[0:1] + c[2:3] + c[4:5] + } + } + out = append(out, p) + } + return strings.Join(out, ";") +} + +const styleCacheLimit = 32 + +type styleCacheEntry struct { + style *chroma.Style + compressed bool + cache map[chroma.TokenType]string +} + +type styleCache struct { + mu sync.Mutex + // LRU cache of compiled (and possibly compressed) styles. This is a slice + // because the cache size is small, and a slice is sufficiently fast for + // small N. + cache []styleCacheEntry + f *Formatter +} + +func newStyleCache(f *Formatter) *styleCache { + return &styleCache{f: f} +} + +func (l *styleCache) get(style *chroma.Style, compress bool) map[chroma.TokenType]string { + l.mu.Lock() + defer l.mu.Unlock() + + // Look for an existing entry. + for i := len(l.cache) - 1; i >= 0; i-- { + entry := l.cache[i] + if entry.style == style && entry.compressed == compress { + // Top of the cache, no need to adjust the order. + if i == len(l.cache)-1 { + return entry.cache + } + // Move this entry to the end of the LRU + copy(l.cache[i:], l.cache[i+1:]) + l.cache[len(l.cache)-1] = entry + return entry.cache + } + } + + // No entry, create one. + cached := l.f.styleToCSS(style) + if !l.f.Classes { + for t, style := range cached { + cached[t] = compressStyle(style) + } + } + if compress { + for t, style := range cached { + cached[t] = compressStyle(style) + } + } + // Evict the oldest entry. + if len(l.cache) >= styleCacheLimit { + l.cache = l.cache[0:copy(l.cache, l.cache[1:])] + } + l.cache = append(l.cache, styleCacheEntry{style: style, cache: cached, compressed: compress}) + return cached +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/json.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/json.go new file mode 100644 index 0000000..436d3ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/json.go @@ -0,0 +1,39 @@ +package formatters + +import ( + "encoding/json" + "fmt" + "io" + + "github.com/alecthomas/chroma/v2" +) + +// JSON formatter outputs the raw token structures as JSON. +var JSON = Register("json", chroma.FormatterFunc(func(w io.Writer, s *chroma.Style, it chroma.Iterator) error { + if _, err := fmt.Fprintln(w, "["); err != nil { + return err + } + i := 0 + for t := it(); t != chroma.EOF; t = it() { + if i > 0 { + if _, err := fmt.Fprintln(w, ","); err != nil { + return err + } + } + i++ + bytes, err := json.Marshal(t) + if err != nil { + return err + } + if _, err := fmt.Fprint(w, " "+string(bytes)); err != nil { + return err + } + } + if _, err := fmt.Fprintln(w); err != nil { + return err + } + if _, err := fmt.Fprintln(w, "]"); err != nil { + return err + } + return nil +})) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/font_liberation_mono.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/font_liberation_mono.go new file mode 100644 index 0000000..70d692e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/font_liberation_mono.go @@ -0,0 +1,51 @@ +// Digitized data copyright (c) 2010 Google Corporation +// with Reserved Font Arimo, Tinos and Cousine. +// Copyright (c) 2012 Red Hat, Inc. +// with Reserved Font Name Liberation. +// +// This Font Software is licensed under the SIL Open Font License, Version 1.1. +// This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL +// +// ----------------------------------------------------------- +// SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +// ----------------------------------------------------------- +// +// PREAMBLE +// The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. +// +// The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. +// +// DEFINITIONS +// "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. +// +// "Reserved Font Name" refers to any names specified as such after the copyright statement(s). +// +// "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). +// +// "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. +// +// "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. +// +// PERMISSION & CONDITIONS +// Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: +// +// 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. +// +// 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. +// +// 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. +// +// 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. +// +// 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. +// +// TERMINATION +// This license becomes null and void if any of the above conditions are not met. +// +// DISCLAIMER +// THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +package svg + +// Liberation Mono as base64 encoded woff (SIL Open Font License)[https://en.wikipedia.org/wiki/Liberation_fonts] +var FontLiberationMono = `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` diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/svg.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/svg.go new file mode 100644 index 0000000..6d457f9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/svg/svg.go @@ -0,0 +1,222 @@ +// Package svg contains an SVG formatter. +package svg + +import ( + "encoding/base64" + "errors" + "fmt" + "io" + "os" + "path" + "strings" + + "github.com/alecthomas/chroma/v2" +) + +// Option sets an option of the SVG formatter. +type Option func(f *Formatter) + +// FontFamily sets the font-family. +func FontFamily(fontFamily string) Option { return func(f *Formatter) { f.fontFamily = fontFamily } } + +// EmbedFontFile embeds given font file +func EmbedFontFile(fontFamily string, fileName string) (option Option, err error) { + var format FontFormat + switch path.Ext(fileName) { + case ".woff": + format = WOFF + case ".woff2": + format = WOFF2 + case ".ttf": + format = TRUETYPE + default: + return nil, errors.New("unexpected font file suffix") + } + + var content []byte + if content, err = os.ReadFile(fileName); err == nil { + option = EmbedFont(fontFamily, base64.StdEncoding.EncodeToString(content), format) + } + return +} + +// EmbedFont embeds given base64 encoded font +func EmbedFont(fontFamily string, font string, format FontFormat) Option { + return func(f *Formatter) { f.fontFamily = fontFamily; f.embeddedFont = font; f.fontFormat = format } +} + +// New SVG formatter. +func New(options ...Option) *Formatter { + f := &Formatter{fontFamily: "Consolas, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace"} + for _, option := range options { + option(f) + } + return f +} + +// Formatter that generates SVG. +type Formatter struct { + fontFamily string + embeddedFont string + fontFormat FontFormat +} + +func (f *Formatter) Format(w io.Writer, style *chroma.Style, iterator chroma.Iterator) (err error) { + f.writeSVG(w, style, iterator.Tokens()) + return err +} + +var svgEscaper = strings.NewReplacer( + `&`, "&", + `<`, "<", + `>`, ">", + `"`, """, + ` `, " ", + ` `, "    ", +) + +// EscapeString escapes special characters. +func escapeString(s string) string { + return svgEscaper.Replace(s) +} + +func (f *Formatter) writeSVG(w io.Writer, style *chroma.Style, tokens []chroma.Token) { // nolint: gocyclo + svgStyles := f.styleToSVG(style) + lines := chroma.SplitTokensIntoLines(tokens) + + fmt.Fprint(w, "\n") + fmt.Fprint(w, "\n") + fmt.Fprintf(w, "\n", 8*maxLineWidth(lines), 10+int(16.8*float64(len(lines)+1))) + + if f.embeddedFont != "" { + f.writeFontStyle(w) + } + + fmt.Fprintf(w, "\n", style.Get(chroma.Background).Background.String()) + fmt.Fprintf(w, "\n", f.fontFamily, style.Get(chroma.Text).Colour.String()) + + f.writeTokenBackgrounds(w, lines, style) + + for index, tokens := range lines { + fmt.Fprintf(w, "", 1.2*float64(index+1)) + + for _, token := range tokens { + text := escapeString(token.String()) + attr := f.styleAttr(svgStyles, token.Type) + if attr != "" { + text = fmt.Sprintf("%s", attr, text) + } + fmt.Fprint(w, text) + } + fmt.Fprint(w, "") + } + + fmt.Fprint(w, "\n\n") + fmt.Fprint(w, "\n") +} + +func maxLineWidth(lines [][]chroma.Token) int { + maxWidth := 0 + for _, tokens := range lines { + length := 0 + for _, token := range tokens { + length += len(strings.ReplaceAll(token.String(), ` `, " ")) + } + if length > maxWidth { + maxWidth = length + } + } + return maxWidth +} + +// There is no background attribute for text in SVG so simply calculate the position and text +// of tokens with a background color that differs from the default and add a rectangle for each before +// adding the token. +func (f *Formatter) writeTokenBackgrounds(w io.Writer, lines [][]chroma.Token, style *chroma.Style) { + for index, tokens := range lines { + lineLength := 0 + for _, token := range tokens { + length := len(strings.ReplaceAll(token.String(), ` `, " ")) + tokenBackground := style.Get(token.Type).Background + if tokenBackground.IsSet() && tokenBackground != style.Get(chroma.Background).Background { + fmt.Fprintf(w, "\n", escapeString(token.String()), lineLength, 1.2*float64(index)+0.25, length, style.Get(token.Type).Background.String()) + } + lineLength += length + } + } +} + +type FontFormat int + +// https://transfonter.org/formats +const ( + WOFF FontFormat = iota + WOFF2 + TRUETYPE +) + +var fontFormats = [...]string{ + "woff", + "woff2", + "truetype", +} + +func (f *Formatter) writeFontStyle(w io.Writer) { + fmt.Fprintf(w, ``, f.fontFamily, fontFormats[f.fontFormat], f.embeddedFont, fontFormats[f.fontFormat]) +} + +func (f *Formatter) styleAttr(styles map[chroma.TokenType]string, tt chroma.TokenType) string { + if _, ok := styles[tt]; !ok { + tt = tt.SubCategory() + if _, ok := styles[tt]; !ok { + tt = tt.Category() + if _, ok := styles[tt]; !ok { + return "" + } + } + } + return styles[tt] +} + +func (f *Formatter) styleToSVG(style *chroma.Style) map[chroma.TokenType]string { + converted := map[chroma.TokenType]string{} + bg := style.Get(chroma.Background) + // Convert the style. + for t := range chroma.StandardTypes { + entry := style.Get(t) + if t != chroma.Background { + entry = entry.Sub(bg) + } + if entry.IsZero() { + continue + } + converted[t] = StyleEntryToSVG(entry) + } + return converted +} + +// StyleEntryToSVG converts a chroma.StyleEntry to SVG attributes. +func StyleEntryToSVG(e chroma.StyleEntry) string { + var styles []string + + if e.Colour.IsSet() { + styles = append(styles, "fill=\""+e.Colour.String()+"\"") + } + if e.Bold == chroma.Yes { + styles = append(styles, "font-weight=\"bold\"") + } + if e.Italic == chroma.Yes { + styles = append(styles, "font-style=\"italic\"") + } + if e.Underline == chroma.Yes { + styles = append(styles, "text-decoration=\"underline\"") + } + return strings.Join(styles, " ") +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tokens.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tokens.go new file mode 100644 index 0000000..3bdd57c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tokens.go @@ -0,0 +1,18 @@ +package formatters + +import ( + "fmt" + "io" + + "github.com/alecthomas/chroma/v2" +) + +// Tokens formatter outputs the raw token structures. +var Tokens = Register("tokens", chroma.FormatterFunc(func(w io.Writer, s *chroma.Style, it chroma.Iterator) error { + for t := it(); t != chroma.EOF; t = it() { + if _, err := fmt.Fprintln(w, t.GoString()); err != nil { + return err + } + } + return nil +})) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_indexed.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_indexed.go new file mode 100644 index 0000000..d48fb99 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_indexed.go @@ -0,0 +1,284 @@ +package formatters + +import ( + "io" + "math" + + "github.com/alecthomas/chroma/v2" +) + +type ttyTable struct { + foreground map[chroma.Colour]string + background map[chroma.Colour]string +} + +var c = chroma.MustParseColour + +var ttyTables = map[int]*ttyTable{ + 8: { + foreground: map[chroma.Colour]string{ + c("#000000"): "\033[30m", c("#7f0000"): "\033[31m", c("#007f00"): "\033[32m", c("#7f7fe0"): "\033[33m", + c("#00007f"): "\033[34m", c("#7f007f"): "\033[35m", c("#007f7f"): "\033[36m", c("#e5e5e5"): "\033[37m", + c("#555555"): "\033[1m\033[30m", c("#ff0000"): "\033[1m\033[31m", c("#00ff00"): "\033[1m\033[32m", c("#ffff00"): "\033[1m\033[33m", + c("#0000ff"): "\033[1m\033[34m", c("#ff00ff"): "\033[1m\033[35m", c("#00ffff"): "\033[1m\033[36m", c("#ffffff"): "\033[1m\033[37m", + }, + background: map[chroma.Colour]string{ + c("#000000"): "\033[40m", c("#7f0000"): "\033[41m", c("#007f00"): "\033[42m", c("#7f7fe0"): "\033[43m", + c("#00007f"): "\033[44m", c("#7f007f"): "\033[45m", c("#007f7f"): "\033[46m", c("#e5e5e5"): "\033[47m", + c("#555555"): "\033[1m\033[40m", c("#ff0000"): "\033[1m\033[41m", c("#00ff00"): "\033[1m\033[42m", c("#ffff00"): "\033[1m\033[43m", + c("#0000ff"): "\033[1m\033[44m", c("#ff00ff"): "\033[1m\033[45m", c("#00ffff"): "\033[1m\033[46m", c("#ffffff"): "\033[1m\033[47m", + }, + }, + 16: { + foreground: map[chroma.Colour]string{ + c("#000000"): "\033[30m", c("#7f0000"): "\033[31m", c("#007f00"): "\033[32m", c("#7f7fe0"): "\033[33m", + c("#00007f"): "\033[34m", c("#7f007f"): "\033[35m", c("#007f7f"): "\033[36m", c("#e5e5e5"): "\033[37m", + c("#555555"): "\033[90m", c("#ff0000"): "\033[91m", c("#00ff00"): "\033[92m", c("#ffff00"): "\033[93m", + c("#0000ff"): "\033[94m", c("#ff00ff"): "\033[95m", c("#00ffff"): "\033[96m", c("#ffffff"): "\033[97m", + }, + background: map[chroma.Colour]string{ + c("#000000"): "\033[40m", c("#7f0000"): "\033[41m", c("#007f00"): "\033[42m", c("#7f7fe0"): "\033[43m", + c("#00007f"): "\033[44m", c("#7f007f"): "\033[45m", c("#007f7f"): "\033[46m", c("#e5e5e5"): "\033[47m", + c("#555555"): "\033[100m", c("#ff0000"): "\033[101m", c("#00ff00"): "\033[102m", c("#ffff00"): "\033[103m", + c("#0000ff"): "\033[104m", c("#ff00ff"): "\033[105m", c("#00ffff"): "\033[106m", c("#ffffff"): "\033[107m", + }, + }, + 256: { + foreground: map[chroma.Colour]string{ + c("#000000"): "\033[38;5;0m", c("#800000"): "\033[38;5;1m", c("#008000"): "\033[38;5;2m", c("#808000"): "\033[38;5;3m", + c("#000080"): "\033[38;5;4m", c("#800080"): "\033[38;5;5m", c("#008080"): "\033[38;5;6m", c("#c0c0c0"): "\033[38;5;7m", + c("#808080"): "\033[38;5;8m", c("#ff0000"): "\033[38;5;9m", c("#00ff00"): "\033[38;5;10m", c("#ffff00"): "\033[38;5;11m", + c("#0000ff"): "\033[38;5;12m", c("#ff00ff"): "\033[38;5;13m", c("#00ffff"): "\033[38;5;14m", c("#ffffff"): "\033[38;5;15m", + c("#000000"): "\033[38;5;16m", c("#00005f"): "\033[38;5;17m", c("#000087"): "\033[38;5;18m", c("#0000af"): "\033[38;5;19m", + c("#0000d7"): "\033[38;5;20m", c("#0000ff"): "\033[38;5;21m", c("#005f00"): "\033[38;5;22m", c("#005f5f"): "\033[38;5;23m", + c("#005f87"): "\033[38;5;24m", c("#005faf"): "\033[38;5;25m", c("#005fd7"): "\033[38;5;26m", c("#005fff"): "\033[38;5;27m", + c("#008700"): "\033[38;5;28m", c("#00875f"): "\033[38;5;29m", c("#008787"): "\033[38;5;30m", c("#0087af"): "\033[38;5;31m", + c("#0087d7"): "\033[38;5;32m", c("#0087ff"): "\033[38;5;33m", c("#00af00"): "\033[38;5;34m", c("#00af5f"): "\033[38;5;35m", + c("#00af87"): "\033[38;5;36m", c("#00afaf"): "\033[38;5;37m", c("#00afd7"): "\033[38;5;38m", c("#00afff"): "\033[38;5;39m", + c("#00d700"): "\033[38;5;40m", c("#00d75f"): "\033[38;5;41m", c("#00d787"): "\033[38;5;42m", c("#00d7af"): "\033[38;5;43m", + c("#00d7d7"): "\033[38;5;44m", c("#00d7ff"): "\033[38;5;45m", c("#00ff00"): "\033[38;5;46m", c("#00ff5f"): "\033[38;5;47m", + c("#00ff87"): "\033[38;5;48m", c("#00ffaf"): "\033[38;5;49m", c("#00ffd7"): "\033[38;5;50m", c("#00ffff"): "\033[38;5;51m", + c("#5f0000"): "\033[38;5;52m", c("#5f005f"): "\033[38;5;53m", c("#5f0087"): "\033[38;5;54m", c("#5f00af"): "\033[38;5;55m", + c("#5f00d7"): "\033[38;5;56m", c("#5f00ff"): "\033[38;5;57m", c("#5f5f00"): "\033[38;5;58m", c("#5f5f5f"): "\033[38;5;59m", + c("#5f5f87"): "\033[38;5;60m", c("#5f5faf"): "\033[38;5;61m", c("#5f5fd7"): "\033[38;5;62m", c("#5f5fff"): "\033[38;5;63m", + c("#5f8700"): "\033[38;5;64m", c("#5f875f"): "\033[38;5;65m", c("#5f8787"): "\033[38;5;66m", c("#5f87af"): "\033[38;5;67m", + c("#5f87d7"): "\033[38;5;68m", c("#5f87ff"): "\033[38;5;69m", c("#5faf00"): "\033[38;5;70m", c("#5faf5f"): "\033[38;5;71m", + c("#5faf87"): "\033[38;5;72m", c("#5fafaf"): "\033[38;5;73m", c("#5fafd7"): "\033[38;5;74m", c("#5fafff"): "\033[38;5;75m", + c("#5fd700"): "\033[38;5;76m", c("#5fd75f"): "\033[38;5;77m", c("#5fd787"): "\033[38;5;78m", c("#5fd7af"): "\033[38;5;79m", + c("#5fd7d7"): "\033[38;5;80m", c("#5fd7ff"): "\033[38;5;81m", c("#5fff00"): "\033[38;5;82m", c("#5fff5f"): "\033[38;5;83m", + c("#5fff87"): "\033[38;5;84m", c("#5fffaf"): "\033[38;5;85m", c("#5fffd7"): "\033[38;5;86m", c("#5fffff"): "\033[38;5;87m", + c("#870000"): "\033[38;5;88m", c("#87005f"): "\033[38;5;89m", c("#870087"): "\033[38;5;90m", c("#8700af"): "\033[38;5;91m", + c("#8700d7"): "\033[38;5;92m", c("#8700ff"): "\033[38;5;93m", c("#875f00"): "\033[38;5;94m", c("#875f5f"): "\033[38;5;95m", + c("#875f87"): "\033[38;5;96m", c("#875faf"): "\033[38;5;97m", c("#875fd7"): "\033[38;5;98m", c("#875fff"): "\033[38;5;99m", + c("#878700"): "\033[38;5;100m", c("#87875f"): "\033[38;5;101m", c("#878787"): "\033[38;5;102m", c("#8787af"): "\033[38;5;103m", + c("#8787d7"): "\033[38;5;104m", c("#8787ff"): "\033[38;5;105m", c("#87af00"): "\033[38;5;106m", c("#87af5f"): "\033[38;5;107m", + c("#87af87"): "\033[38;5;108m", c("#87afaf"): "\033[38;5;109m", c("#87afd7"): "\033[38;5;110m", c("#87afff"): "\033[38;5;111m", + c("#87d700"): "\033[38;5;112m", c("#87d75f"): "\033[38;5;113m", c("#87d787"): "\033[38;5;114m", c("#87d7af"): "\033[38;5;115m", + c("#87d7d7"): "\033[38;5;116m", c("#87d7ff"): "\033[38;5;117m", c("#87ff00"): "\033[38;5;118m", c("#87ff5f"): "\033[38;5;119m", + c("#87ff87"): "\033[38;5;120m", c("#87ffaf"): "\033[38;5;121m", c("#87ffd7"): "\033[38;5;122m", c("#87ffff"): "\033[38;5;123m", + c("#af0000"): "\033[38;5;124m", c("#af005f"): "\033[38;5;125m", c("#af0087"): "\033[38;5;126m", c("#af00af"): "\033[38;5;127m", + c("#af00d7"): "\033[38;5;128m", c("#af00ff"): "\033[38;5;129m", c("#af5f00"): "\033[38;5;130m", c("#af5f5f"): "\033[38;5;131m", + c("#af5f87"): "\033[38;5;132m", c("#af5faf"): "\033[38;5;133m", c("#af5fd7"): "\033[38;5;134m", c("#af5fff"): "\033[38;5;135m", + c("#af8700"): "\033[38;5;136m", c("#af875f"): "\033[38;5;137m", c("#af8787"): "\033[38;5;138m", c("#af87af"): "\033[38;5;139m", + c("#af87d7"): "\033[38;5;140m", c("#af87ff"): "\033[38;5;141m", c("#afaf00"): "\033[38;5;142m", c("#afaf5f"): "\033[38;5;143m", + c("#afaf87"): "\033[38;5;144m", c("#afafaf"): "\033[38;5;145m", c("#afafd7"): "\033[38;5;146m", c("#afafff"): "\033[38;5;147m", + c("#afd700"): "\033[38;5;148m", c("#afd75f"): "\033[38;5;149m", c("#afd787"): "\033[38;5;150m", c("#afd7af"): "\033[38;5;151m", + c("#afd7d7"): "\033[38;5;152m", c("#afd7ff"): "\033[38;5;153m", c("#afff00"): "\033[38;5;154m", c("#afff5f"): "\033[38;5;155m", + c("#afff87"): "\033[38;5;156m", c("#afffaf"): "\033[38;5;157m", c("#afffd7"): "\033[38;5;158m", c("#afffff"): "\033[38;5;159m", + c("#d70000"): "\033[38;5;160m", c("#d7005f"): "\033[38;5;161m", c("#d70087"): "\033[38;5;162m", c("#d700af"): "\033[38;5;163m", + c("#d700d7"): "\033[38;5;164m", c("#d700ff"): "\033[38;5;165m", c("#d75f00"): "\033[38;5;166m", c("#d75f5f"): "\033[38;5;167m", + c("#d75f87"): "\033[38;5;168m", c("#d75faf"): "\033[38;5;169m", c("#d75fd7"): "\033[38;5;170m", c("#d75fff"): "\033[38;5;171m", + c("#d78700"): "\033[38;5;172m", c("#d7875f"): "\033[38;5;173m", c("#d78787"): "\033[38;5;174m", c("#d787af"): "\033[38;5;175m", + c("#d787d7"): "\033[38;5;176m", c("#d787ff"): "\033[38;5;177m", c("#d7af00"): "\033[38;5;178m", c("#d7af5f"): "\033[38;5;179m", + c("#d7af87"): "\033[38;5;180m", c("#d7afaf"): "\033[38;5;181m", c("#d7afd7"): "\033[38;5;182m", c("#d7afff"): "\033[38;5;183m", + c("#d7d700"): "\033[38;5;184m", c("#d7d75f"): "\033[38;5;185m", c("#d7d787"): "\033[38;5;186m", c("#d7d7af"): "\033[38;5;187m", + c("#d7d7d7"): "\033[38;5;188m", c("#d7d7ff"): "\033[38;5;189m", c("#d7ff00"): "\033[38;5;190m", c("#d7ff5f"): "\033[38;5;191m", + c("#d7ff87"): "\033[38;5;192m", c("#d7ffaf"): "\033[38;5;193m", c("#d7ffd7"): "\033[38;5;194m", c("#d7ffff"): "\033[38;5;195m", + c("#ff0000"): "\033[38;5;196m", c("#ff005f"): "\033[38;5;197m", c("#ff0087"): "\033[38;5;198m", c("#ff00af"): "\033[38;5;199m", + c("#ff00d7"): "\033[38;5;200m", c("#ff00ff"): "\033[38;5;201m", c("#ff5f00"): "\033[38;5;202m", c("#ff5f5f"): "\033[38;5;203m", + c("#ff5f87"): "\033[38;5;204m", c("#ff5faf"): "\033[38;5;205m", c("#ff5fd7"): "\033[38;5;206m", c("#ff5fff"): "\033[38;5;207m", + c("#ff8700"): "\033[38;5;208m", c("#ff875f"): "\033[38;5;209m", c("#ff8787"): "\033[38;5;210m", c("#ff87af"): "\033[38;5;211m", + c("#ff87d7"): "\033[38;5;212m", c("#ff87ff"): "\033[38;5;213m", c("#ffaf00"): "\033[38;5;214m", c("#ffaf5f"): "\033[38;5;215m", + c("#ffaf87"): "\033[38;5;216m", c("#ffafaf"): "\033[38;5;217m", c("#ffafd7"): "\033[38;5;218m", c("#ffafff"): "\033[38;5;219m", + c("#ffd700"): "\033[38;5;220m", c("#ffd75f"): "\033[38;5;221m", c("#ffd787"): "\033[38;5;222m", c("#ffd7af"): "\033[38;5;223m", + c("#ffd7d7"): "\033[38;5;224m", c("#ffd7ff"): "\033[38;5;225m", c("#ffff00"): "\033[38;5;226m", c("#ffff5f"): "\033[38;5;227m", + c("#ffff87"): "\033[38;5;228m", c("#ffffaf"): "\033[38;5;229m", c("#ffffd7"): "\033[38;5;230m", c("#ffffff"): "\033[38;5;231m", + c("#080808"): "\033[38;5;232m", c("#121212"): "\033[38;5;233m", c("#1c1c1c"): "\033[38;5;234m", c("#262626"): "\033[38;5;235m", + c("#303030"): "\033[38;5;236m", c("#3a3a3a"): "\033[38;5;237m", c("#444444"): "\033[38;5;238m", c("#4e4e4e"): "\033[38;5;239m", + c("#585858"): "\033[38;5;240m", c("#626262"): "\033[38;5;241m", c("#6c6c6c"): "\033[38;5;242m", c("#767676"): "\033[38;5;243m", + c("#808080"): "\033[38;5;244m", c("#8a8a8a"): "\033[38;5;245m", c("#949494"): "\033[38;5;246m", c("#9e9e9e"): "\033[38;5;247m", + c("#a8a8a8"): "\033[38;5;248m", c("#b2b2b2"): "\033[38;5;249m", c("#bcbcbc"): "\033[38;5;250m", c("#c6c6c6"): "\033[38;5;251m", + c("#d0d0d0"): "\033[38;5;252m", c("#dadada"): "\033[38;5;253m", c("#e4e4e4"): "\033[38;5;254m", c("#eeeeee"): "\033[38;5;255m", + }, + background: map[chroma.Colour]string{ + c("#000000"): "\033[48;5;0m", c("#800000"): "\033[48;5;1m", c("#008000"): "\033[48;5;2m", c("#808000"): "\033[48;5;3m", + c("#000080"): "\033[48;5;4m", c("#800080"): "\033[48;5;5m", c("#008080"): "\033[48;5;6m", c("#c0c0c0"): "\033[48;5;7m", + c("#808080"): "\033[48;5;8m", c("#ff0000"): "\033[48;5;9m", c("#00ff00"): "\033[48;5;10m", c("#ffff00"): "\033[48;5;11m", + c("#0000ff"): "\033[48;5;12m", c("#ff00ff"): "\033[48;5;13m", c("#00ffff"): "\033[48;5;14m", c("#ffffff"): "\033[48;5;15m", + c("#000000"): "\033[48;5;16m", c("#00005f"): "\033[48;5;17m", c("#000087"): "\033[48;5;18m", c("#0000af"): "\033[48;5;19m", + c("#0000d7"): "\033[48;5;20m", c("#0000ff"): "\033[48;5;21m", c("#005f00"): "\033[48;5;22m", c("#005f5f"): "\033[48;5;23m", + c("#005f87"): "\033[48;5;24m", c("#005faf"): "\033[48;5;25m", c("#005fd7"): "\033[48;5;26m", c("#005fff"): "\033[48;5;27m", + c("#008700"): "\033[48;5;28m", c("#00875f"): "\033[48;5;29m", c("#008787"): "\033[48;5;30m", c("#0087af"): "\033[48;5;31m", + c("#0087d7"): "\033[48;5;32m", c("#0087ff"): "\033[48;5;33m", c("#00af00"): "\033[48;5;34m", c("#00af5f"): "\033[48;5;35m", + c("#00af87"): "\033[48;5;36m", c("#00afaf"): "\033[48;5;37m", c("#00afd7"): "\033[48;5;38m", c("#00afff"): "\033[48;5;39m", + c("#00d700"): "\033[48;5;40m", c("#00d75f"): "\033[48;5;41m", c("#00d787"): "\033[48;5;42m", c("#00d7af"): "\033[48;5;43m", + c("#00d7d7"): "\033[48;5;44m", c("#00d7ff"): "\033[48;5;45m", c("#00ff00"): "\033[48;5;46m", c("#00ff5f"): "\033[48;5;47m", + c("#00ff87"): "\033[48;5;48m", c("#00ffaf"): "\033[48;5;49m", c("#00ffd7"): "\033[48;5;50m", c("#00ffff"): "\033[48;5;51m", + c("#5f0000"): "\033[48;5;52m", c("#5f005f"): "\033[48;5;53m", c("#5f0087"): "\033[48;5;54m", c("#5f00af"): "\033[48;5;55m", + c("#5f00d7"): "\033[48;5;56m", c("#5f00ff"): "\033[48;5;57m", c("#5f5f00"): "\033[48;5;58m", c("#5f5f5f"): "\033[48;5;59m", + c("#5f5f87"): "\033[48;5;60m", c("#5f5faf"): "\033[48;5;61m", c("#5f5fd7"): "\033[48;5;62m", c("#5f5fff"): "\033[48;5;63m", + c("#5f8700"): "\033[48;5;64m", c("#5f875f"): "\033[48;5;65m", c("#5f8787"): "\033[48;5;66m", c("#5f87af"): "\033[48;5;67m", + c("#5f87d7"): "\033[48;5;68m", c("#5f87ff"): "\033[48;5;69m", c("#5faf00"): "\033[48;5;70m", c("#5faf5f"): "\033[48;5;71m", + c("#5faf87"): "\033[48;5;72m", c("#5fafaf"): "\033[48;5;73m", c("#5fafd7"): "\033[48;5;74m", c("#5fafff"): "\033[48;5;75m", + c("#5fd700"): "\033[48;5;76m", c("#5fd75f"): "\033[48;5;77m", c("#5fd787"): "\033[48;5;78m", c("#5fd7af"): "\033[48;5;79m", + c("#5fd7d7"): "\033[48;5;80m", c("#5fd7ff"): "\033[48;5;81m", c("#5fff00"): "\033[48;5;82m", c("#5fff5f"): "\033[48;5;83m", + c("#5fff87"): "\033[48;5;84m", c("#5fffaf"): "\033[48;5;85m", c("#5fffd7"): "\033[48;5;86m", c("#5fffff"): "\033[48;5;87m", + c("#870000"): "\033[48;5;88m", c("#87005f"): "\033[48;5;89m", c("#870087"): "\033[48;5;90m", c("#8700af"): "\033[48;5;91m", + c("#8700d7"): "\033[48;5;92m", c("#8700ff"): "\033[48;5;93m", c("#875f00"): "\033[48;5;94m", c("#875f5f"): "\033[48;5;95m", + c("#875f87"): "\033[48;5;96m", c("#875faf"): "\033[48;5;97m", c("#875fd7"): "\033[48;5;98m", c("#875fff"): "\033[48;5;99m", + c("#878700"): "\033[48;5;100m", c("#87875f"): "\033[48;5;101m", c("#878787"): "\033[48;5;102m", c("#8787af"): "\033[48;5;103m", + c("#8787d7"): "\033[48;5;104m", c("#8787ff"): "\033[48;5;105m", c("#87af00"): "\033[48;5;106m", c("#87af5f"): "\033[48;5;107m", + c("#87af87"): "\033[48;5;108m", c("#87afaf"): "\033[48;5;109m", c("#87afd7"): "\033[48;5;110m", c("#87afff"): "\033[48;5;111m", + c("#87d700"): "\033[48;5;112m", c("#87d75f"): "\033[48;5;113m", c("#87d787"): "\033[48;5;114m", c("#87d7af"): "\033[48;5;115m", + c("#87d7d7"): "\033[48;5;116m", c("#87d7ff"): "\033[48;5;117m", c("#87ff00"): "\033[48;5;118m", c("#87ff5f"): "\033[48;5;119m", + c("#87ff87"): "\033[48;5;120m", c("#87ffaf"): "\033[48;5;121m", c("#87ffd7"): "\033[48;5;122m", c("#87ffff"): "\033[48;5;123m", + c("#af0000"): "\033[48;5;124m", c("#af005f"): "\033[48;5;125m", c("#af0087"): "\033[48;5;126m", c("#af00af"): "\033[48;5;127m", + c("#af00d7"): "\033[48;5;128m", c("#af00ff"): "\033[48;5;129m", c("#af5f00"): "\033[48;5;130m", c("#af5f5f"): "\033[48;5;131m", + c("#af5f87"): "\033[48;5;132m", c("#af5faf"): "\033[48;5;133m", c("#af5fd7"): "\033[48;5;134m", c("#af5fff"): "\033[48;5;135m", + c("#af8700"): "\033[48;5;136m", c("#af875f"): "\033[48;5;137m", c("#af8787"): "\033[48;5;138m", c("#af87af"): "\033[48;5;139m", + c("#af87d7"): "\033[48;5;140m", c("#af87ff"): "\033[48;5;141m", c("#afaf00"): "\033[48;5;142m", c("#afaf5f"): "\033[48;5;143m", + c("#afaf87"): "\033[48;5;144m", c("#afafaf"): "\033[48;5;145m", c("#afafd7"): "\033[48;5;146m", c("#afafff"): "\033[48;5;147m", + c("#afd700"): "\033[48;5;148m", c("#afd75f"): "\033[48;5;149m", c("#afd787"): "\033[48;5;150m", c("#afd7af"): "\033[48;5;151m", + c("#afd7d7"): "\033[48;5;152m", c("#afd7ff"): "\033[48;5;153m", c("#afff00"): "\033[48;5;154m", c("#afff5f"): "\033[48;5;155m", + c("#afff87"): "\033[48;5;156m", c("#afffaf"): "\033[48;5;157m", c("#afffd7"): "\033[48;5;158m", c("#afffff"): "\033[48;5;159m", + c("#d70000"): "\033[48;5;160m", c("#d7005f"): "\033[48;5;161m", c("#d70087"): "\033[48;5;162m", c("#d700af"): "\033[48;5;163m", + c("#d700d7"): "\033[48;5;164m", c("#d700ff"): "\033[48;5;165m", c("#d75f00"): "\033[48;5;166m", c("#d75f5f"): "\033[48;5;167m", + c("#d75f87"): "\033[48;5;168m", c("#d75faf"): "\033[48;5;169m", c("#d75fd7"): "\033[48;5;170m", c("#d75fff"): "\033[48;5;171m", + c("#d78700"): "\033[48;5;172m", c("#d7875f"): "\033[48;5;173m", c("#d78787"): "\033[48;5;174m", c("#d787af"): "\033[48;5;175m", + c("#d787d7"): "\033[48;5;176m", c("#d787ff"): "\033[48;5;177m", c("#d7af00"): "\033[48;5;178m", c("#d7af5f"): "\033[48;5;179m", + c("#d7af87"): "\033[48;5;180m", c("#d7afaf"): "\033[48;5;181m", c("#d7afd7"): "\033[48;5;182m", c("#d7afff"): "\033[48;5;183m", + c("#d7d700"): "\033[48;5;184m", c("#d7d75f"): "\033[48;5;185m", c("#d7d787"): "\033[48;5;186m", c("#d7d7af"): "\033[48;5;187m", + c("#d7d7d7"): "\033[48;5;188m", c("#d7d7ff"): "\033[48;5;189m", c("#d7ff00"): "\033[48;5;190m", c("#d7ff5f"): "\033[48;5;191m", + c("#d7ff87"): "\033[48;5;192m", c("#d7ffaf"): "\033[48;5;193m", c("#d7ffd7"): "\033[48;5;194m", c("#d7ffff"): "\033[48;5;195m", + c("#ff0000"): "\033[48;5;196m", c("#ff005f"): "\033[48;5;197m", c("#ff0087"): "\033[48;5;198m", c("#ff00af"): "\033[48;5;199m", + c("#ff00d7"): "\033[48;5;200m", c("#ff00ff"): "\033[48;5;201m", c("#ff5f00"): "\033[48;5;202m", c("#ff5f5f"): "\033[48;5;203m", + c("#ff5f87"): "\033[48;5;204m", c("#ff5faf"): "\033[48;5;205m", c("#ff5fd7"): "\033[48;5;206m", c("#ff5fff"): "\033[48;5;207m", + c("#ff8700"): "\033[48;5;208m", c("#ff875f"): "\033[48;5;209m", c("#ff8787"): "\033[48;5;210m", c("#ff87af"): "\033[48;5;211m", + c("#ff87d7"): "\033[48;5;212m", c("#ff87ff"): "\033[48;5;213m", c("#ffaf00"): "\033[48;5;214m", c("#ffaf5f"): "\033[48;5;215m", + c("#ffaf87"): "\033[48;5;216m", c("#ffafaf"): "\033[48;5;217m", c("#ffafd7"): "\033[48;5;218m", c("#ffafff"): "\033[48;5;219m", + c("#ffd700"): "\033[48;5;220m", c("#ffd75f"): "\033[48;5;221m", c("#ffd787"): "\033[48;5;222m", c("#ffd7af"): "\033[48;5;223m", + c("#ffd7d7"): "\033[48;5;224m", c("#ffd7ff"): "\033[48;5;225m", c("#ffff00"): "\033[48;5;226m", c("#ffff5f"): "\033[48;5;227m", + c("#ffff87"): "\033[48;5;228m", c("#ffffaf"): "\033[48;5;229m", c("#ffffd7"): "\033[48;5;230m", c("#ffffff"): "\033[48;5;231m", + c("#080808"): "\033[48;5;232m", c("#121212"): "\033[48;5;233m", c("#1c1c1c"): "\033[48;5;234m", c("#262626"): "\033[48;5;235m", + c("#303030"): "\033[48;5;236m", c("#3a3a3a"): "\033[48;5;237m", c("#444444"): "\033[48;5;238m", c("#4e4e4e"): "\033[48;5;239m", + c("#585858"): "\033[48;5;240m", c("#626262"): "\033[48;5;241m", c("#6c6c6c"): "\033[48;5;242m", c("#767676"): "\033[48;5;243m", + c("#808080"): "\033[48;5;244m", c("#8a8a8a"): "\033[48;5;245m", c("#949494"): "\033[48;5;246m", c("#9e9e9e"): "\033[48;5;247m", + c("#a8a8a8"): "\033[48;5;248m", c("#b2b2b2"): "\033[48;5;249m", c("#bcbcbc"): "\033[48;5;250m", c("#c6c6c6"): "\033[48;5;251m", + c("#d0d0d0"): "\033[48;5;252m", c("#dadada"): "\033[48;5;253m", c("#e4e4e4"): "\033[48;5;254m", c("#eeeeee"): "\033[48;5;255m", + }, + }, +} + +func entryToEscapeSequence(table *ttyTable, entry chroma.StyleEntry) string { + out := "" + if entry.Bold == chroma.Yes { + out += "\033[1m" + } + if entry.Underline == chroma.Yes { + out += "\033[4m" + } + if entry.Italic == chroma.Yes { + out += "\033[3m" + } + if entry.Colour.IsSet() { + out += table.foreground[findClosest(table, entry.Colour)] + } + if entry.Background.IsSet() { + out += table.background[findClosest(table, entry.Background)] + } + return out +} + +func findClosest(table *ttyTable, seeking chroma.Colour) chroma.Colour { + closestColour := chroma.Colour(0) + closest := float64(math.MaxFloat64) + for colour := range table.foreground { + distance := colour.Distance(seeking) + if distance < closest { + closest = distance + closestColour = colour + } + } + return closestColour +} + +func styleToEscapeSequence(table *ttyTable, style *chroma.Style) map[chroma.TokenType]string { + style = clearBackground(style) + out := map[chroma.TokenType]string{} + for _, ttype := range style.Types() { + entry := style.Get(ttype) + out[ttype] = entryToEscapeSequence(table, entry) + } + return out +} + +// Clear the background colour. +func clearBackground(style *chroma.Style) *chroma.Style { + builder := style.Builder() + bg := builder.Get(chroma.Background) + bg.Background = 0 + bg.NoInherit = true + builder.AddEntry(chroma.Background, bg) + style, _ = builder.Build() + return style +} + +type indexedTTYFormatter struct { + table *ttyTable +} + +func (c *indexedTTYFormatter) Format(w io.Writer, style *chroma.Style, it chroma.Iterator) (err error) { + theme := styleToEscapeSequence(c.table, style) + for token := it(); token != chroma.EOF; token = it() { + clr, ok := theme[token.Type] + + // This search mimics how styles.Get() is used in tty_truecolour.go. + if !ok { + clr, ok = theme[token.Type.SubCategory()] + if !ok { + clr, ok = theme[token.Type.Category()] + if !ok { + clr, ok = theme[chroma.Text] + if !ok { + clr = theme[chroma.Background] + } + } + } + } + + writeToken(w, clr, token.Value) + } + return nil +} + +// TTY is an 8-colour terminal formatter. +// +// The Lab colour space is used to map RGB values to the most appropriate index colour. +var TTY = Register("terminal", &indexedTTYFormatter{ttyTables[8]}) + +// TTY8 is an 8-colour terminal formatter. +// +// The Lab colour space is used to map RGB values to the most appropriate index colour. +var TTY8 = Register("terminal8", &indexedTTYFormatter{ttyTables[8]}) + +// TTY16 is a 16-colour terminal formatter. +// +// It uses \033[3xm for normal colours and \033[90Xm for bright colours. +// +// The Lab colour space is used to map RGB values to the most appropriate index colour. +var TTY16 = Register("terminal16", &indexedTTYFormatter{ttyTables[16]}) + +// TTY256 is a 256-colour terminal formatter. +// +// The Lab colour space is used to map RGB values to the most appropriate index colour. +var TTY256 = Register("terminal256", &indexedTTYFormatter{ttyTables[256]}) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_truecolour.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_truecolour.go new file mode 100644 index 0000000..43b0964 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/formatters/tty_truecolour.go @@ -0,0 +1,76 @@ +package formatters + +import ( + "fmt" + "io" + "regexp" + + "github.com/alecthomas/chroma/v2" +) + +// TTY16m is a true-colour terminal formatter. +var TTY16m = Register("terminal16m", chroma.FormatterFunc(trueColourFormatter)) + +var crOrCrLf = regexp.MustCompile(`\r?\n`) + +// Print the text with the given formatting, resetting the formatting at the end +// of each line and resuming it on the next line. +// +// This way, a pager (like https://github.com/walles/moar for example) can show +// any line in the output by itself, and it will get the right formatting. +func writeToken(w io.Writer, formatting string, text string) { + if formatting == "" { + fmt.Fprint(w, text) + return + } + + newlineIndices := crOrCrLf.FindAllStringIndex(text, -1) + + afterLastNewline := 0 + for _, indices := range newlineIndices { + newlineStart, afterNewline := indices[0], indices[1] + fmt.Fprint(w, formatting) + fmt.Fprint(w, text[afterLastNewline:newlineStart]) + fmt.Fprint(w, "\033[0m") + fmt.Fprint(w, text[newlineStart:afterNewline]) + afterLastNewline = afterNewline + } + + if afterLastNewline < len(text) { + // Print whatever is left after the last newline + fmt.Fprint(w, formatting) + fmt.Fprint(w, text[afterLastNewline:]) + fmt.Fprint(w, "\033[0m") + } +} + +func trueColourFormatter(w io.Writer, style *chroma.Style, it chroma.Iterator) error { + style = clearBackground(style) + for token := it(); token != chroma.EOF; token = it() { + entry := style.Get(token.Type) + if entry.IsZero() { + fmt.Fprint(w, token.Value) + continue + } + + formatting := "" + if entry.Bold == chroma.Yes { + formatting += "\033[1m" + } + if entry.Underline == chroma.Yes { + formatting += "\033[4m" + } + if entry.Italic == chroma.Yes { + formatting += "\033[3m" + } + if entry.Colour.IsSet() { + formatting += fmt.Sprintf("\033[38;2;%d;%d;%dm", entry.Colour.Red(), entry.Colour.Green(), entry.Colour.Blue()) + } + if entry.Background.IsSet() { + formatting += fmt.Sprintf("\033[48;2;%d;%d;%dm", entry.Background.Red(), entry.Background.Green(), entry.Background.Blue()) + } + + writeToken(w, formatting, token.Value) + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/iterator.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/iterator.go new file mode 100644 index 0000000..cf39bb5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/iterator.go @@ -0,0 +1,93 @@ +package chroma + +import "strings" + +// An Iterator across tokens. +// +// EOF will be returned at the end of the Token stream. +// +// If an error occurs within an Iterator, it may propagate this in a panic. Formatters should recover. +type Iterator func() Token + +// Tokens consumes all tokens from the iterator and returns them as a slice. +func (i Iterator) Tokens() []Token { + var out []Token + for t := i(); t != EOF; t = i() { + out = append(out, t) + } + return out +} + +// Stdlib converts a Chroma iterator to a Go 1.23-compatible iterator. +func (i Iterator) Stdlib() func(yield func(Token) bool) { + return func(yield func(Token) bool) { + for t := i(); t != EOF; t = i() { + if !yield(t) { + return + } + } + } +} + +// Concaterator concatenates tokens from a series of iterators. +func Concaterator(iterators ...Iterator) Iterator { + return func() Token { + for len(iterators) > 0 { + t := iterators[0]() + if t != EOF { + return t + } + iterators = iterators[1:] + } + return EOF + } +} + +// Literator converts a sequence of literal Tokens into an Iterator. +func Literator(tokens ...Token) Iterator { + return func() Token { + if len(tokens) == 0 { + return EOF + } + token := tokens[0] + tokens = tokens[1:] + return token + } +} + +// SplitTokensIntoLines splits tokens containing newlines in two. +func SplitTokensIntoLines(tokens []Token) (out [][]Token) { + var line []Token // nolint: prealloc +tokenLoop: + for _, token := range tokens { + for strings.Contains(token.Value, "\n") { + parts := strings.SplitAfterN(token.Value, "\n", 2) + // Token becomes the tail. + token.Value = parts[1] + + // Append the head to the line and flush the line. + clone := token.Clone() + clone.Value = parts[0] + line = append(line, clone) + out = append(out, line) + line = nil + + // If the tail token is empty, don't emit it. + if len(token.Value) == 0 { + continue tokenLoop + } + } + line = append(line, token) + } + if len(line) > 0 { + out = append(out, line) + } + // Strip empty trailing token line. + if len(out) > 0 { + last := out[len(out)-1] + if len(last) == 1 && last[0].Value == "" { + out = out[:len(out)-1] + } + } + return out +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexer.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexer.go new file mode 100644 index 0000000..602db1c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexer.go @@ -0,0 +1,179 @@ +package chroma + +import ( + "fmt" + "strings" +) + +var ( + defaultOptions = &TokeniseOptions{ + State: "root", + EnsureLF: true, + } +) + +// Config for a lexer. +type Config struct { + // Name of the lexer. + Name string `xml:"name,omitempty"` + + // Shortcuts for the lexer + Aliases []string `xml:"alias,omitempty"` + + // File name globs + Filenames []string `xml:"filename,omitempty"` + + // Secondary file name globs + AliasFilenames []string `xml:"alias_filename,omitempty"` + + // MIME types + MimeTypes []string `xml:"mime_type,omitempty"` + + // Regex matching is case-insensitive. + CaseInsensitive bool `xml:"case_insensitive,omitempty"` + + // Regex matches all characters. + DotAll bool `xml:"dot_all,omitempty"` + + // Regex does not match across lines ($ matches EOL). + // + // Defaults to multiline. + NotMultiline bool `xml:"not_multiline,omitempty"` + + // Don't strip leading and trailing newlines from the input. + // DontStripNL bool + + // Strip all leading and trailing whitespace from the input + // StripAll bool + + // Make sure that the input ends with a newline. This + // is required for some lexers that consume input linewise. + EnsureNL bool `xml:"ensure_nl,omitempty"` + + // If given and greater than 0, expand tabs in the input. + // TabSize int + + // Priority of lexer. + // + // If this is 0 it will be treated as a default of 1. + Priority float32 `xml:"priority,omitempty"` + + // Analyse is a list of regexes to match against the input. + // + // If a match is found, the score is returned if single attribute is set to true, + // otherwise the sum of all the score of matching patterns will be + // used as the final score. + Analyse *AnalyseConfig `xml:"analyse,omitempty"` +} + +// AnalyseConfig defines the list of regexes analysers. +type AnalyseConfig struct { + Regexes []RegexConfig `xml:"regex,omitempty"` + // If true, the first matching score is returned. + First bool `xml:"first,attr"` +} + +// RegexConfig defines a single regex pattern and its score in case of match. +type RegexConfig struct { + Pattern string `xml:"pattern,attr"` + Score float32 `xml:"score,attr"` +} + +// Token output to formatter. +type Token struct { + Type TokenType `json:"type"` + Value string `json:"value"` +} + +func (t *Token) String() string { return t.Value } +func (t *Token) GoString() string { return fmt.Sprintf("&Token{%s, %q}", t.Type, t.Value) } + +// Clone returns a clone of the Token. +func (t *Token) Clone() Token { + return *t +} + +// EOF is returned by lexers at the end of input. +var EOF Token + +// TokeniseOptions contains options for tokenisers. +type TokeniseOptions struct { + // State to start tokenisation in. Defaults to "root". + State string + // Nested tokenisation. + Nested bool + + // If true, all EOLs are converted into LF + // by replacing CRLF and CR + EnsureLF bool +} + +// A Lexer for tokenising source code. +type Lexer interface { + // Config describing the features of the Lexer. + Config() *Config + // Tokenise returns an Iterator over tokens in text. + Tokenise(options *TokeniseOptions, text string) (Iterator, error) + // SetRegistry sets the registry this Lexer is associated with. + // + // The registry should be used by the Lexer if it needs to look up other + // lexers. + SetRegistry(registry *LexerRegistry) Lexer + // SetAnalyser sets a function the Lexer should use for scoring how + // likely a fragment of text is to match this lexer, between 0.0 and 1.0. + // A value of 1 indicates high confidence. + // + // Lexers may ignore this if they implement their own analysers. + SetAnalyser(analyser func(text string) float32) Lexer + // AnalyseText scores how likely a fragment of text is to match + // this lexer, between 0.0 and 1.0. A value of 1 indicates high confidence. + AnalyseText(text string) float32 +} + +// Trace is the trace of a tokenisation process. +type Trace struct { + Lexer string `json:"lexer"` + State string `json:"state"` + Rule int `json:"rule"` + Pattern string `json:"pattern"` + Pos int `json:"pos"` + Length int `json:"length"` + Elapsed float64 `json:"elapsedMs"` // Elapsed time spent matching for this rule. +} + +// TracingLexer is a Lexer that can trace its tokenisation process. +type TracingLexer interface { + Lexer + SetTracing(enable bool) +} + +// Lexers is a slice of lexers sortable by name. +type Lexers []Lexer + +func (l Lexers) Len() int { return len(l) } +func (l Lexers) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l Lexers) Less(i, j int) bool { + return strings.ToLower(l[i].Config().Name) < strings.ToLower(l[j].Config().Name) +} + +// PrioritisedLexers is a slice of lexers sortable by priority. +type PrioritisedLexers []Lexer + +func (l PrioritisedLexers) Len() int { return len(l) } +func (l PrioritisedLexers) Swap(i, j int) { l[i], l[j] = l[j], l[i] } +func (l PrioritisedLexers) Less(i, j int) bool { + ip := l[i].Config().Priority + if ip == 0 { + ip = 1 + } + jp := l[j].Config().Priority + if jp == 0 { + jp = 1 + } + return ip > jp +} + +// Analyser determines how appropriate this lexer is for the given text. +type Analyser interface { + AnalyseText(text string) float32 +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/README.md b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/README.md new file mode 100644 index 0000000..60a0055 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/README.md @@ -0,0 +1,46 @@ +# Chroma lexers + +All lexers in Chroma should now be defined in XML unless they require custom code. + +## Lexer tests + +The tests in this directory feed a known input `testdata/.actual` into the parser for `` and check +that its output matches `.expected`. + +It is also possible to perform several tests on a same parser ``, by placing know inputs `*.actual` into a +directory `testdata//`. + +### Running the tests + +Run the tests as normal: +```go +go test ./lexers +``` + +### Update existing tests + +When you add a new test data file (`*.actual`), you need to regenerate all tests. That's how Chroma creates the `*.expected` test file based on the corresponding lexer. + +To regenerate all tests, type in your terminal: + +```go +RECORD=true go test ./lexers +``` + +This first sets the `RECORD` environment variable to `true`. Then it runs `go test` on the `./lexers` directory of the Chroma project. + +(That environment variable tells Chroma it needs to output test data. After running `go test ./lexers` you can remove or reset that variable.) + +#### Windows users + +Windows users will find that the `RECORD=true go test ./lexers` command fails in both the standard command prompt terminal and in PowerShell. + +Instead we have to perform both steps separately: + +- Set the `RECORD` environment variable to `true`. + + In the regular command prompt window, the `set` command sets an environment variable for the current session: `set RECORD=true`. See [this page](https://superuser.com/questions/212150/how-to-set-env-variable-in-windows-cmd-line) for more. + + In PowerShell, you can use the `$env:RECORD = 'true'` command for that. See [this article](https://mcpmag.com/articles/2019/03/28/environment-variables-in-powershell.aspx) for more. + + You can also make a persistent environment variable by hand in the Windows computer settings. See [this article](https://www.computerhope.com/issues/ch000549.htm) for how. +- When the environment variable is set, run `go test ./lexers`. + +Chroma will now regenerate the test files and print its results to the console window. diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/caddyfile.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/caddyfile.go new file mode 100644 index 0000000..82a7efa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/caddyfile.go @@ -0,0 +1,275 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Matcher token stub for docs, or +// Named matcher: @name, or +// Path matcher: /foo, or +// Wildcard path matcher: * +// nolint: gosec +var caddyfileMatcherTokenRegexp = `(\[\\]|@[^\s]+|/[^\s]+|\*)` + +// Comment at start of line, or +// Comment preceded by whitespace +var caddyfileCommentRegexp = `(^|\s+)#.*\n` + +// caddyfileCommon are the rules common to both of the lexer variants +func caddyfileCommonRules() Rules { + return Rules{ + "site_block_common": { + Include("site_body"), + // Any other directive + {`[^\s#]+`, Keyword, Push("directive")}, + Include("base"), + }, + "site_body": { + // Import keyword + {`\b(import|invoke)\b( [^\s#]+)`, ByGroups(Keyword, Text), Push("subdirective")}, + // Matcher definition + {`@[^\s]+(?=\s)`, NameDecorator, Push("matcher")}, + // Matcher token stub for docs + {`\[\\]`, NameDecorator, Push("matcher")}, + // These cannot have matchers but may have things that look like + // matchers in their arguments, so we just parse as a subdirective. + {`\b(try_files|tls|log|bind)\b`, Keyword, Push("subdirective")}, + // These are special, they can nest more directives + {`\b(handle_errors|handle_path|handle_response|replace_status|handle|route)\b`, Keyword, Push("nested_directive")}, + // uri directive has special syntax + {`\b(uri)\b`, Keyword, Push("uri_directive")}, + }, + "matcher": { + {`\{`, Punctuation, Push("block")}, + // Not can be one-liner + {`not`, Keyword, Push("deep_not_matcher")}, + // Heredoc for CEL expression + Include("heredoc"), + // Backtick for CEL expression + {"`", StringBacktick, Push("backticks")}, + // Any other same-line matcher + {`[^\s#]+`, Keyword, Push("arguments")}, + // Terminators + {`\s*\n`, Text, Pop(1)}, + {`\}`, Punctuation, Pop(1)}, + Include("base"), + }, + "block": { + {`\}`, Punctuation, Pop(2)}, + // Using double quotes doesn't stop at spaces + {`"`, StringDouble, Push("double_quotes")}, + // Using backticks doesn't stop at spaces + {"`", StringBacktick, Push("backticks")}, + // Not can be one-liner + {`not`, Keyword, Push("not_matcher")}, + // Directives & matcher definitions + Include("site_body"), + // Any directive + {`[^\s#]+`, Keyword, Push("subdirective")}, + Include("base"), + }, + "nested_block": { + {`\}`, Punctuation, Pop(2)}, + // Using double quotes doesn't stop at spaces + {`"`, StringDouble, Push("double_quotes")}, + // Using backticks doesn't stop at spaces + {"`", StringBacktick, Push("backticks")}, + // Not can be one-liner + {`not`, Keyword, Push("not_matcher")}, + // Directives & matcher definitions + Include("site_body"), + // Any other subdirective + {`[^\s#]+`, Keyword, Push("directive")}, + Include("base"), + }, + "not_matcher": { + {`\}`, Punctuation, Pop(2)}, + {`\{(?=\s)`, Punctuation, Push("block")}, + {`[^\s#]+`, Keyword, Push("arguments")}, + {`\s+`, Text, nil}, + }, + "deep_not_matcher": { + {`\}`, Punctuation, Pop(2)}, + {`\{(?=\s)`, Punctuation, Push("block")}, + {`[^\s#]+`, Keyword, Push("deep_subdirective")}, + {`\s+`, Text, nil}, + }, + "directive": { + {`\{(?=\s)`, Punctuation, Push("block")}, + {caddyfileMatcherTokenRegexp, NameDecorator, Push("arguments")}, + {caddyfileCommentRegexp, CommentSingle, Pop(1)}, + {`\s*\n`, Text, Pop(1)}, + Include("base"), + }, + "nested_directive": { + {`\{(?=\s)`, Punctuation, Push("nested_block")}, + {caddyfileMatcherTokenRegexp, NameDecorator, Push("nested_arguments")}, + {caddyfileCommentRegexp, CommentSingle, Pop(1)}, + {`\s*\n`, Text, Pop(1)}, + Include("base"), + }, + "subdirective": { + {`\{(?=\s)`, Punctuation, Push("block")}, + {caddyfileCommentRegexp, CommentSingle, Pop(1)}, + {`\s*\n`, Text, Pop(1)}, + Include("base"), + }, + "arguments": { + {`\{(?=\s)`, Punctuation, Push("block")}, + {caddyfileCommentRegexp, CommentSingle, Pop(2)}, + {`\\\n`, Text, nil}, // Skip escaped newlines + {`\s*\n`, Text, Pop(2)}, + Include("base"), + }, + "nested_arguments": { + {`\{(?=\s)`, Punctuation, Push("nested_block")}, + {caddyfileCommentRegexp, CommentSingle, Pop(2)}, + {`\\\n`, Text, nil}, // Skip escaped newlines + {`\s*\n`, Text, Pop(2)}, + Include("base"), + }, + "deep_subdirective": { + {`\{(?=\s)`, Punctuation, Push("block")}, + {caddyfileCommentRegexp, CommentSingle, Pop(3)}, + {`\s*\n`, Text, Pop(3)}, + Include("base"), + }, + "uri_directive": { + {`\{(?=\s)`, Punctuation, Push("block")}, + {caddyfileMatcherTokenRegexp, NameDecorator, nil}, + {`(strip_prefix|strip_suffix|replace|path_regexp)`, NameConstant, Push("arguments")}, + {caddyfileCommentRegexp, CommentSingle, Pop(1)}, + {`\s*\n`, Text, Pop(1)}, + Include("base"), + }, + "double_quotes": { + Include("placeholder"), + {`\\"`, StringDouble, nil}, + {`[^"]`, StringDouble, nil}, + {`"`, StringDouble, Pop(1)}, + }, + "backticks": { + Include("placeholder"), + {"\\\\`", StringBacktick, nil}, + {"[^`]", StringBacktick, nil}, + {"`", StringBacktick, Pop(1)}, + }, + "optional": { + // Docs syntax for showing optional parts with [ ] + {`\[`, Punctuation, Push("optional")}, + Include("name_constants"), + {`\|`, Punctuation, nil}, + {`[^\[\]\|]+`, String, nil}, + {`\]`, Punctuation, Pop(1)}, + }, + "heredoc": { + {`(<<([a-zA-Z0-9_-]+))(\n(.*|\n)*)(\s*)(\2)`, ByGroups(StringHeredoc, nil, String, String, String, StringHeredoc), nil}, + }, + "name_constants": { + {`\b(most_recently_modified|largest_size|smallest_size|first_exist|internal|disable_redirects|ignore_loaded_certs|disable_certs|private_ranges|first|last|before|after|on|off)\b(\||(?=\]|\s|$))`, ByGroups(NameConstant, Punctuation), nil}, + }, + "placeholder": { + // Placeholder with dots, colon for default value, brackets for args[0:] + {`\{[\w+.\[\]\:\$-]+\}`, StringEscape, nil}, + // Handle opening brackets with no matching closing one + {`\{[^\}\s]*\b`, String, nil}, + }, + "base": { + {caddyfileCommentRegexp, CommentSingle, nil}, + {`\[\\]`, NameDecorator, nil}, + Include("name_constants"), + Include("heredoc"), + {`(https?://)?([a-z0-9.-]+)(:)([0-9]+)([^\s]*)`, ByGroups(Name, Name, Punctuation, NumberInteger, Name), nil}, + {`\[`, Punctuation, Push("optional")}, + {"`", StringBacktick, Push("backticks")}, + {`"`, StringDouble, Push("double_quotes")}, + Include("placeholder"), + {`[a-z-]+/[a-z-+]+`, String, nil}, + {`[0-9]+([smhdk]|ns|us|µs|ms)?\b`, NumberInteger, nil}, + {`[^\s\n#\{]+`, String, nil}, + {`/[^\s#]*`, Name, nil}, + {`\s+`, Text, nil}, + }, + } +} + +// Caddyfile lexer. +var Caddyfile = Register(MustNewLexer( + &Config{ + Name: "Caddyfile", + Aliases: []string{"caddyfile", "caddy"}, + Filenames: []string{"Caddyfile*"}, + MimeTypes: []string{}, + }, + caddyfileRules, +)) + +func caddyfileRules() Rules { + return Rules{ + "root": { + {caddyfileCommentRegexp, CommentSingle, nil}, + // Global options block + {`^\s*(\{)\s*$`, ByGroups(Punctuation), Push("globals")}, + // Top level import + {`(import)(\s+)([^\s]+)`, ByGroups(Keyword, Text, NameVariableMagic), nil}, + // Snippets + {`(&?\([^\s#]+\))(\s*)(\{)`, ByGroups(NameVariableAnonymous, Text, Punctuation), Push("snippet")}, + // Site label + {`[^#{(\s,]+`, GenericHeading, Push("label")}, + // Site label with placeholder + {`\{[\w+.\[\]\:\$-]+\}`, StringEscape, Push("label")}, + {`\s+`, Text, nil}, + }, + "globals": { + {`\}`, Punctuation, Pop(1)}, + // Global options are parsed as subdirectives (no matcher) + {`[^\s#]+`, Keyword, Push("subdirective")}, + Include("base"), + }, + "snippet": { + {`\}`, Punctuation, Pop(1)}, + Include("site_body"), + // Any other directive + {`[^\s#]+`, Keyword, Push("directive")}, + Include("base"), + }, + "label": { + // Allow multiple labels, comma separated, newlines after + // a comma means another label is coming + {`,\s*\n?`, Text, nil}, + {` `, Text, nil}, + // Site label with placeholder + Include("placeholder"), + // Site label + {`[^#{(\s,]+`, GenericHeading, nil}, + // Comment after non-block label (hack because comments end in \n) + {`#.*\n`, CommentSingle, Push("site_block")}, + // Note: if \n, we'll never pop out of the site_block, it's valid + {`\{(?=\s)|\n`, Punctuation, Push("site_block")}, + }, + "site_block": { + {`\}`, Punctuation, Pop(2)}, + Include("site_block_common"), + }, + }.Merge(caddyfileCommonRules()) +} + +// Caddyfile directive-only lexer. +var CaddyfileDirectives = Register(MustNewLexer( + &Config{ + Name: "Caddyfile Directives", + Aliases: []string{"caddyfile-directives", "caddyfile-d", "caddy-d"}, + Filenames: []string{}, + MimeTypes: []string{}, + }, + caddyfileDirectivesRules, +)) + +func caddyfileDirectivesRules() Rules { + return Rules{ + // Same as "site_block" in Caddyfile + "root": { + Include("site_block_common"), + }, + }.Merge(caddyfileCommonRules()) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/cl.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/cl.go new file mode 100644 index 0000000..3eb0c23 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/cl.go @@ -0,0 +1,243 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +var ( + clBuiltinFunctions = []string{ + "<", "<=", "=", ">", ">=", "-", "/", "/=", "*", "+", "1-", "1+", + "abort", "abs", "acons", "acos", "acosh", "add-method", "adjoin", + "adjustable-array-p", "adjust-array", "allocate-instance", + "alpha-char-p", "alphanumericp", "append", "apply", "apropos", + "apropos-list", "aref", "arithmetic-error-operands", + "arithmetic-error-operation", "array-dimension", "array-dimensions", + "array-displacement", "array-element-type", "array-has-fill-pointer-p", + "array-in-bounds-p", "arrayp", "array-rank", "array-row-major-index", + "array-total-size", "ash", "asin", "asinh", "assoc", "assoc-if", + "assoc-if-not", "atan", "atanh", "atom", "bit", "bit-and", "bit-andc1", + "bit-andc2", "bit-eqv", "bit-ior", "bit-nand", "bit-nor", "bit-not", + "bit-orc1", "bit-orc2", "bit-vector-p", "bit-xor", "boole", + "both-case-p", "boundp", "break", "broadcast-stream-streams", + "butlast", "byte", "byte-position", "byte-size", "caaaar", "caaadr", + "caaar", "caadar", "caaddr", "caadr", "caar", "cadaar", "cadadr", + "cadar", "caddar", "cadddr", "caddr", "cadr", "call-next-method", "car", + "cdaaar", "cdaadr", "cdaar", "cdadar", "cdaddr", "cdadr", "cdar", + "cddaar", "cddadr", "cddar", "cdddar", "cddddr", "cdddr", "cddr", "cdr", + "ceiling", "cell-error-name", "cerror", "change-class", "char", "char<", + "char<=", "char=", "char>", "char>=", "char/=", "character", + "characterp", "char-code", "char-downcase", "char-equal", + "char-greaterp", "char-int", "char-lessp", "char-name", + "char-not-equal", "char-not-greaterp", "char-not-lessp", "char-upcase", + "cis", "class-name", "class-of", "clear-input", "clear-output", + "close", "clrhash", "code-char", "coerce", "compile", + "compiled-function-p", "compile-file", "compile-file-pathname", + "compiler-macro-function", "complement", "complex", "complexp", + "compute-applicable-methods", "compute-restarts", "concatenate", + "concatenated-stream-streams", "conjugate", "cons", "consp", + "constantly", "constantp", "continue", "copy-alist", "copy-list", + "copy-pprint-dispatch", "copy-readtable", "copy-seq", "copy-structure", + "copy-symbol", "copy-tree", "cos", "cosh", "count", "count-if", + "count-if-not", "decode-float", "decode-universal-time", "delete", + "delete-duplicates", "delete-file", "delete-if", "delete-if-not", + "delete-package", "denominator", "deposit-field", "describe", + "describe-object", "digit-char", "digit-char-p", "directory", + "directory-namestring", "disassemble", "documentation", "dpb", + "dribble", "echo-stream-input-stream", "echo-stream-output-stream", + "ed", "eighth", "elt", "encode-universal-time", "endp", + "enough-namestring", "ensure-directories-exist", + "ensure-generic-function", "eq", "eql", "equal", "equalp", "error", + "eval", "evenp", "every", "exp", "export", "expt", "fboundp", + "fceiling", "fdefinition", "ffloor", "fifth", "file-author", + "file-error-pathname", "file-length", "file-namestring", + "file-position", "file-string-length", "file-write-date", + "fill", "fill-pointer", "find", "find-all-symbols", "find-class", + "find-if", "find-if-not", "find-method", "find-package", "find-restart", + "find-symbol", "finish-output", "first", "float", "float-digits", + "floatp", "float-precision", "float-radix", "float-sign", "floor", + "fmakunbound", "force-output", "format", "fourth", "fresh-line", + "fround", "ftruncate", "funcall", "function-keywords", + "function-lambda-expression", "functionp", "gcd", "gensym", "gentemp", + "get", "get-decoded-time", "get-dispatch-macro-character", "getf", + "gethash", "get-internal-real-time", "get-internal-run-time", + "get-macro-character", "get-output-stream-string", "get-properties", + "get-setf-expansion", "get-universal-time", "graphic-char-p", + "hash-table-count", "hash-table-p", "hash-table-rehash-size", + "hash-table-rehash-threshold", "hash-table-size", "hash-table-test", + "host-namestring", "identity", "imagpart", "import", + "initialize-instance", "input-stream-p", "inspect", + "integer-decode-float", "integer-length", "integerp", + "interactive-stream-p", "intern", "intersection", + "invalid-method-error", "invoke-debugger", "invoke-restart", + "invoke-restart-interactively", "isqrt", "keywordp", "last", "lcm", + "ldb", "ldb-test", "ldiff", "length", "lisp-implementation-type", + "lisp-implementation-version", "list", "list*", "list-all-packages", + "listen", "list-length", "listp", "load", + "load-logical-pathname-translations", "log", "logand", "logandc1", + "logandc2", "logbitp", "logcount", "logeqv", "logical-pathname", + "logical-pathname-translations", "logior", "lognand", "lognor", + "lognot", "logorc1", "logorc2", "logtest", "logxor", "long-site-name", + "lower-case-p", "machine-instance", "machine-type", "machine-version", + "macroexpand", "macroexpand-1", "macro-function", "make-array", + "make-broadcast-stream", "make-concatenated-stream", "make-condition", + "make-dispatch-macro-character", "make-echo-stream", "make-hash-table", + "make-instance", "make-instances-obsolete", "make-list", + "make-load-form", "make-load-form-saving-slots", "make-package", + "make-pathname", "make-random-state", "make-sequence", "make-string", + "make-string-input-stream", "make-string-output-stream", "make-symbol", + "make-synonym-stream", "make-two-way-stream", "makunbound", "map", + "mapc", "mapcan", "mapcar", "mapcon", "maphash", "map-into", "mapl", + "maplist", "mask-field", "max", "member", "member-if", "member-if-not", + "merge", "merge-pathnames", "method-combination-error", + "method-qualifiers", "min", "minusp", "mismatch", "mod", + "muffle-warning", "name-char", "namestring", "nbutlast", "nconc", + "next-method-p", "nintersection", "ninth", "no-applicable-method", + "no-next-method", "not", "notany", "notevery", "nreconc", "nreverse", + "nset-difference", "nset-exclusive-or", "nstring-capitalize", + "nstring-downcase", "nstring-upcase", "nsublis", "nsubst", "nsubst-if", + "nsubst-if-not", "nsubstitute", "nsubstitute-if", "nsubstitute-if-not", + "nth", "nthcdr", "null", "numberp", "numerator", "nunion", "oddp", + "open", "open-stream-p", "output-stream-p", "package-error-package", + "package-name", "package-nicknames", "packagep", + "package-shadowing-symbols", "package-used-by-list", "package-use-list", + "pairlis", "parse-integer", "parse-namestring", "pathname", + "pathname-device", "pathname-directory", "pathname-host", + "pathname-match-p", "pathname-name", "pathnamep", "pathname-type", + "pathname-version", "peek-char", "phase", "plusp", "position", + "position-if", "position-if-not", "pprint", "pprint-dispatch", + "pprint-fill", "pprint-indent", "pprint-linear", "pprint-newline", + "pprint-tab", "pprint-tabular", "prin1", "prin1-to-string", "princ", + "princ-to-string", "print", "print-object", "probe-file", "proclaim", + "provide", "random", "random-state-p", "rassoc", "rassoc-if", + "rassoc-if-not", "rational", "rationalize", "rationalp", "read", + "read-byte", "read-char", "read-char-no-hang", "read-delimited-list", + "read-from-string", "read-line", "read-preserving-whitespace", + "read-sequence", "readtable-case", "readtablep", "realp", "realpart", + "reduce", "reinitialize-instance", "rem", "remhash", "remove", + "remove-duplicates", "remove-if", "remove-if-not", "remove-method", + "remprop", "rename-file", "rename-package", "replace", "require", + "rest", "restart-name", "revappend", "reverse", "room", "round", + "row-major-aref", "rplaca", "rplacd", "sbit", "scale-float", "schar", + "search", "second", "set", "set-difference", + "set-dispatch-macro-character", "set-exclusive-or", + "set-macro-character", "set-pprint-dispatch", "set-syntax-from-char", + "seventh", "shadow", "shadowing-import", "shared-initialize", + "short-site-name", "signal", "signum", "simple-bit-vector-p", + "simple-condition-format-arguments", "simple-condition-format-control", + "simple-string-p", "simple-vector-p", "sin", "sinh", "sixth", "sleep", + "slot-boundp", "slot-exists-p", "slot-makunbound", "slot-missing", + "slot-unbound", "slot-value", "software-type", "software-version", + "some", "sort", "special-operator-p", "sqrt", "stable-sort", + "standard-char-p", "store-value", "stream-element-type", + "stream-error-stream", "stream-external-format", "streamp", "string", + "string<", "string<=", "string=", "string>", "string>=", "string/=", + "string-capitalize", "string-downcase", "string-equal", + "string-greaterp", "string-left-trim", "string-lessp", + "string-not-equal", "string-not-greaterp", "string-not-lessp", + "stringp", "string-right-trim", "string-trim", "string-upcase", + "sublis", "subseq", "subsetp", "subst", "subst-if", "subst-if-not", + "substitute", "substitute-if", "substitute-if-not", "subtypep", "svref", + "sxhash", "symbol-function", "symbol-name", "symbolp", "symbol-package", + "symbol-plist", "symbol-value", "synonym-stream-symbol", "syntax:", + "tailp", "tan", "tanh", "tenth", "terpri", "third", + "translate-logical-pathname", "translate-pathname", "tree-equal", + "truename", "truncate", "two-way-stream-input-stream", + "two-way-stream-output-stream", "type-error-datum", + "type-error-expected-type", "type-of", "typep", "unbound-slot-instance", + "unexport", "unintern", "union", "unread-char", "unuse-package", + "update-instance-for-different-class", + "update-instance-for-redefined-class", "upgraded-array-element-type", + "upgraded-complex-part-type", "upper-case-p", "use-package", + "user-homedir-pathname", "use-value", "values", "values-list", "vector", + "vectorp", "vector-pop", "vector-push", "vector-push-extend", "warn", + "wild-pathname-p", "write", "write-byte", "write-char", "write-line", + "write-sequence", "write-string", "write-to-string", "yes-or-no-p", + "y-or-n-p", "zerop", + } + + clSpecialForms = []string{ + "block", "catch", "declare", "eval-when", "flet", "function", "go", "if", + "labels", "lambda", "let", "let*", "load-time-value", "locally", "macrolet", + "multiple-value-call", "multiple-value-prog1", "progn", "progv", "quote", + "return-from", "setq", "symbol-macrolet", "tagbody", "the", "throw", + "unwind-protect", + } + + clMacros = []string{ + "and", "assert", "call-method", "case", "ccase", "check-type", "cond", + "ctypecase", "decf", "declaim", "defclass", "defconstant", "defgeneric", + "define-compiler-macro", "define-condition", "define-method-combination", + "define-modify-macro", "define-setf-expander", "define-symbol-macro", + "defmacro", "defmethod", "defpackage", "defparameter", "defsetf", + "defstruct", "deftype", "defun", "defvar", "destructuring-bind", "do", + "do*", "do-all-symbols", "do-external-symbols", "dolist", "do-symbols", + "dotimes", "ecase", "etypecase", "formatter", "handler-bind", + "handler-case", "ignore-errors", "incf", "in-package", "lambda", "loop", + "loop-finish", "make-method", "multiple-value-bind", "multiple-value-list", + "multiple-value-setq", "nth-value", "or", "pop", + "pprint-exit-if-list-exhausted", "pprint-logical-block", "pprint-pop", + "print-unreadable-object", "prog", "prog*", "prog1", "prog2", "psetf", + "psetq", "push", "pushnew", "remf", "restart-bind", "restart-case", + "return", "rotatef", "setf", "shiftf", "step", "time", "trace", "typecase", + "unless", "untrace", "when", "with-accessors", "with-compilation-unit", + "with-condition-restarts", "with-hash-table-iterator", + "with-input-from-string", "with-open-file", "with-open-stream", + "with-output-to-string", "with-package-iterator", "with-simple-restart", + "with-slots", "with-standard-io-syntax", + } + + clLambdaListKeywords = []string{ + "&allow-other-keys", "&aux", "&body", "&environment", "&key", "&optional", + "&rest", "&whole", + } + + clDeclarations = []string{ + "dynamic-extent", "ignore", "optimize", "ftype", "inline", "special", + "ignorable", "notinline", "type", + } + + clBuiltinTypes = []string{ + "atom", "boolean", "base-char", "base-string", "bignum", "bit", + "compiled-function", "extended-char", "fixnum", "keyword", "nil", + "signed-byte", "short-float", "single-float", "double-float", "long-float", + "simple-array", "simple-base-string", "simple-bit-vector", "simple-string", + "simple-vector", "standard-char", "unsigned-byte", + + // Condition Types + "arithmetic-error", "cell-error", "condition", "control-error", + "division-by-zero", "end-of-file", "error", "file-error", + "floating-point-inexact", "floating-point-overflow", + "floating-point-underflow", "floating-point-invalid-operation", + "parse-error", "package-error", "print-not-readable", "program-error", + "reader-error", "serious-condition", "simple-condition", "simple-error", + "simple-type-error", "simple-warning", "stream-error", "storage-condition", + "style-warning", "type-error", "unbound-variable", "unbound-slot", + "undefined-function", "warning", + } + + clBuiltinClasses = []string{ + "array", "broadcast-stream", "bit-vector", "built-in-class", "character", + "class", "complex", "concatenated-stream", "cons", "echo-stream", + "file-stream", "float", "function", "generic-function", "hash-table", + "integer", "list", "logical-pathname", "method-combination", "method", + "null", "number", "package", "pathname", "ratio", "rational", "readtable", + "real", "random-state", "restart", "sequence", "standard-class", + "standard-generic-function", "standard-method", "standard-object", + "string-stream", "stream", "string", "structure-class", "structure-object", + "symbol", "synonym-stream", "t", "two-way-stream", "vector", + } +) + +// Common Lisp lexer. +var CommonLisp = Register(TypeRemappingLexer(MustNewXMLLexer( + embedded, + "embedded/common_lisp.xml", +), TypeMapping{ + {NameVariable, NameFunction, clBuiltinFunctions}, + {NameVariable, Keyword, clSpecialForms}, + {NameVariable, NameBuiltin, clMacros}, + {NameVariable, Keyword, clLambdaListKeywords}, + {NameVariable, Keyword, clDeclarations}, + {NameVariable, KeywordType, clBuiltinTypes}, + {NameVariable, NameClass, clBuiltinClasses}, +})) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/dns.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/dns.go new file mode 100644 index 0000000..7e69962 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/dns.go @@ -0,0 +1,17 @@ +package lexers + +import ( + "regexp" +) + +// TODO(moorereason): can this be factored away? +var zoneAnalyserRe = regexp.MustCompile(`(?m)^@\s+IN\s+SOA\s+`) + +func init() { // nolint: gochecknoinits + Get("dns").SetAnalyser(func(text string) float32 { + if zoneAnalyserRe.FindString(text) != "" { + return 1.0 + } + return 0.0 + }) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/emacs.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/emacs.go new file mode 100644 index 0000000..869b0f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/emacs.go @@ -0,0 +1,533 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +var ( + emacsMacros = []string{ + "atomic-change-group", "case", "block", "cl-block", "cl-callf", "cl-callf2", + "cl-case", "cl-decf", "cl-declaim", "cl-declare", + "cl-define-compiler-macro", "cl-defmacro", "cl-defstruct", + "cl-defsubst", "cl-deftype", "cl-defun", "cl-destructuring-bind", + "cl-do", "cl-do*", "cl-do-all-symbols", "cl-do-symbols", "cl-dolist", + "cl-dotimes", "cl-ecase", "cl-etypecase", "eval-when", "cl-eval-when", "cl-flet", + "cl-flet*", "cl-function", "cl-incf", "cl-labels", "cl-letf", + "cl-letf*", "cl-load-time-value", "cl-locally", "cl-loop", + "cl-macrolet", "cl-multiple-value-bind", "cl-multiple-value-setq", + "cl-progv", "cl-psetf", "cl-psetq", "cl-pushnew", "cl-remf", + "cl-return", "cl-return-from", "cl-rotatef", "cl-shiftf", + "cl-symbol-macrolet", "cl-tagbody", "cl-the", "cl-typecase", + "combine-after-change-calls", "condition-case-unless-debug", "decf", + "declaim", "declare", "declare-function", "def-edebug-spec", + "defadvice", "defclass", "defcustom", "defface", "defgeneric", + "defgroup", "define-advice", "define-alternatives", + "define-compiler-macro", "define-derived-mode", "define-generic-mode", + "define-global-minor-mode", "define-globalized-minor-mode", + "define-minor-mode", "define-modify-macro", + "define-obsolete-face-alias", "define-obsolete-function-alias", + "define-obsolete-variable-alias", "define-setf-expander", + "define-skeleton", "defmacro", "defmethod", "defsetf", "defstruct", + "defsubst", "deftheme", "deftype", "defun", "defvar-local", + "delay-mode-hooks", "destructuring-bind", "do", "do*", + "do-all-symbols", "do-symbols", "dolist", "dont-compile", "dotimes", + "dotimes-with-progress-reporter", "ecase", "ert-deftest", "etypecase", + "eval-and-compile", "eval-when-compile", "flet", "ignore-errors", + "incf", "labels", "lambda", "letrec", "lexical-let", "lexical-let*", + "loop", "multiple-value-bind", "multiple-value-setq", "noreturn", + "oref", "oref-default", "oset", "oset-default", "pcase", + "pcase-defmacro", "pcase-dolist", "pcase-exhaustive", "pcase-let", + "pcase-let*", "pop", "psetf", "psetq", "push", "pushnew", "remf", + "return", "rotatef", "rx", "save-match-data", "save-selected-window", + "save-window-excursion", "setf", "setq-local", "shiftf", + "track-mouse", "typecase", "unless", "use-package", "when", + "while-no-input", "with-case-table", "with-category-table", + "with-coding-priority", "with-current-buffer", "with-demoted-errors", + "with-eval-after-load", "with-file-modes", "with-local-quit", + "with-output-to-string", "with-output-to-temp-buffer", + "with-parsed-tramp-file-name", "with-selected-frame", + "with-selected-window", "with-silent-modifications", "with-slots", + "with-syntax-table", "with-temp-buffer", "with-temp-file", + "with-temp-message", "with-timeout", "with-tramp-connection-property", + "with-tramp-file-property", "with-tramp-progress-reporter", + "with-wrapper-hook", "load-time-value", "locally", "macrolet", "progv", + "return-from", + } + + emacsSpecialForms = []string{ + "and", "catch", "cond", "condition-case", "defconst", "defvar", + "function", "if", "interactive", "let", "let*", "or", "prog1", + "prog2", "progn", "quote", "save-current-buffer", "save-excursion", + "save-restriction", "setq", "setq-default", "subr-arity", + "unwind-protect", "while", + } + + emacsBuiltinFunction = []string{ + "%", "*", "+", "-", "/", "/=", "1+", "1-", "<", "<=", "=", ">", ">=", + "Snarf-documentation", "abort-recursive-edit", "abs", + "accept-process-output", "access-file", "accessible-keymaps", "acos", + "active-minibuffer-window", "add-face-text-property", + "add-name-to-file", "add-text-properties", "all-completions", + "append", "apply", "apropos-internal", "aref", "arrayp", "aset", + "ash", "asin", "assoc", "assoc-string", "assq", "atan", "atom", + "autoload", "autoload-do-load", "backtrace", "backtrace--locals", + "backtrace-debug", "backtrace-eval", "backtrace-frame", + "backward-char", "backward-prefix-chars", "barf-if-buffer-read-only", + "base64-decode-region", "base64-decode-string", + "base64-encode-region", "base64-encode-string", "beginning-of-line", + "bidi-find-overridden-directionality", "bidi-resolved-levels", + "bitmap-spec-p", "bobp", "bolp", "bool-vector", + "bool-vector-count-consecutive", "bool-vector-count-population", + "bool-vector-exclusive-or", "bool-vector-intersection", + "bool-vector-not", "bool-vector-p", "bool-vector-set-difference", + "bool-vector-subsetp", "bool-vector-union", "boundp", + "buffer-base-buffer", "buffer-chars-modified-tick", + "buffer-enable-undo", "buffer-file-name", "buffer-has-markers-at", + "buffer-list", "buffer-live-p", "buffer-local-value", + "buffer-local-variables", "buffer-modified-p", "buffer-modified-tick", + "buffer-name", "buffer-size", "buffer-string", "buffer-substring", + "buffer-substring-no-properties", "buffer-swap-text", "bufferp", + "bury-buffer-internal", "byte-code", "byte-code-function-p", + "byte-to-position", "byte-to-string", "byteorder", + "call-interactively", "call-last-kbd-macro", "call-process", + "call-process-region", "cancel-kbd-macro-events", "capitalize", + "capitalize-region", "capitalize-word", "car", "car-less-than-car", + "car-safe", "case-table-p", "category-docstring", + "category-set-mnemonics", "category-table", "category-table-p", + "ccl-execute", "ccl-execute-on-string", "ccl-program-p", "cdr", + "cdr-safe", "ceiling", "char-after", "char-before", + "char-category-set", "char-charset", "char-equal", "char-or-string-p", + "char-resolve-modifiers", "char-syntax", "char-table-extra-slot", + "char-table-p", "char-table-parent", "char-table-range", + "char-table-subtype", "char-to-string", "char-width", "characterp", + "charset-after", "charset-id-internal", "charset-plist", + "charset-priority-list", "charsetp", "check-coding-system", + "check-coding-systems-region", "clear-buffer-auto-save-failure", + "clear-charset-maps", "clear-face-cache", "clear-font-cache", + "clear-image-cache", "clear-string", "clear-this-command-keys", + "close-font", "clrhash", "coding-system-aliases", + "coding-system-base", "coding-system-eol-type", "coding-system-p", + "coding-system-plist", "coding-system-priority-list", + "coding-system-put", "color-distance", "color-gray-p", + "color-supported-p", "combine-after-change-execute", + "command-error-default-function", "command-remapping", "commandp", + "compare-buffer-substrings", "compare-strings", + "compare-window-configurations", "completing-read", + "compose-region-internal", "compose-string-internal", + "composition-get-gstring", "compute-motion", "concat", "cons", + "consp", "constrain-to-field", "continue-process", + "controlling-tty-p", "coordinates-in-window-p", "copy-alist", + "copy-category-table", "copy-file", "copy-hash-table", "copy-keymap", + "copy-marker", "copy-sequence", "copy-syntax-table", "copysign", + "cos", "current-active-maps", "current-bidi-paragraph-direction", + "current-buffer", "current-case-table", "current-column", + "current-global-map", "current-idle-time", "current-indentation", + "current-input-mode", "current-local-map", "current-message", + "current-minor-mode-maps", "current-time", "current-time-string", + "current-time-zone", "current-window-configuration", + "cygwin-convert-file-name-from-windows", + "cygwin-convert-file-name-to-windows", "daemon-initialized", + "daemonp", "dbus--init-bus", "dbus-get-unique-name", + "dbus-message-internal", "debug-timer-check", "declare-equiv-charset", + "decode-big5-char", "decode-char", "decode-coding-region", + "decode-coding-string", "decode-sjis-char", "decode-time", + "default-boundp", "default-file-modes", "default-printer-name", + "default-toplevel-value", "default-value", "define-category", + "define-charset-alias", "define-charset-internal", + "define-coding-system-alias", "define-coding-system-internal", + "define-fringe-bitmap", "define-hash-table-test", "define-key", + "define-prefix-command", "delete", + "delete-all-overlays", "delete-and-extract-region", "delete-char", + "delete-directory-internal", "delete-field", "delete-file", + "delete-frame", "delete-other-windows-internal", "delete-overlay", + "delete-process", "delete-region", "delete-terminal", + "delete-window-internal", "delq", "describe-buffer-bindings", + "describe-vector", "destroy-fringe-bitmap", "detect-coding-region", + "detect-coding-string", "ding", "directory-file-name", + "directory-files", "directory-files-and-attributes", "discard-input", + "display-supports-face-attributes-p", "do-auto-save", "documentation", + "documentation-property", "downcase", "downcase-region", + "downcase-word", "draw-string", "dump-colors", "dump-emacs", + "dump-face", "dump-frame-glyph-matrix", "dump-glyph-matrix", + "dump-glyph-row", "dump-redisplay-history", "dump-tool-bar-row", + "elt", "emacs-pid", "encode-big5-char", "encode-char", + "encode-coding-region", "encode-coding-string", "encode-sjis-char", + "encode-time", "end-kbd-macro", "end-of-line", "eobp", "eolp", "eq", + "eql", "equal", "equal-including-properties", "erase-buffer", + "error-message-string", "eval", "eval-buffer", "eval-region", + "event-convert-list", "execute-kbd-macro", "exit-recursive-edit", + "exp", "expand-file-name", "expt", "external-debugging-output", + "face-attribute-relative-p", "face-attributes-as-vector", "face-font", + "fboundp", "fceiling", "fetch-bytecode", "ffloor", + "field-beginning", "field-end", "field-string", + "field-string-no-properties", "file-accessible-directory-p", + "file-acl", "file-attributes", "file-attributes-lessp", + "file-directory-p", "file-executable-p", "file-exists-p", + "file-locked-p", "file-modes", "file-name-absolute-p", + "file-name-all-completions", "file-name-as-directory", + "file-name-completion", "file-name-directory", + "file-name-nondirectory", "file-newer-than-file-p", "file-readable-p", + "file-regular-p", "file-selinux-context", "file-symlink-p", + "file-system-info", "file-system-info", "file-writable-p", + "fillarray", "find-charset-region", "find-charset-string", + "find-coding-systems-region-internal", "find-composition-internal", + "find-file-name-handler", "find-font", "find-operation-coding-system", + "float", "float-time", "floatp", "floor", "fmakunbound", + "following-char", "font-at", "font-drive-otf", "font-face-attributes", + "font-family-list", "font-get", "font-get-glyphs", + "font-get-system-font", "font-get-system-normal-font", "font-info", + "font-match-p", "font-otf-alternates", "font-put", + "font-shape-gstring", "font-spec", "font-variation-glyphs", + "font-xlfd-name", "fontp", "fontset-font", "fontset-info", + "fontset-list", "fontset-list-all", "force-mode-line-update", + "force-window-update", "format", "format-mode-line", + "format-network-address", "format-time-string", "forward-char", + "forward-comment", "forward-line", "forward-word", + "frame-border-width", "frame-bottom-divider-width", + "frame-can-run-window-configuration-change-hook", "frame-char-height", + "frame-char-width", "frame-face-alist", "frame-first-window", + "frame-focus", "frame-font-cache", "frame-fringe-width", "frame-list", + "frame-live-p", "frame-or-buffer-changed-p", "frame-parameter", + "frame-parameters", "frame-pixel-height", "frame-pixel-width", + "frame-pointer-visible-p", "frame-right-divider-width", + "frame-root-window", "frame-scroll-bar-height", + "frame-scroll-bar-width", "frame-selected-window", "frame-terminal", + "frame-text-cols", "frame-text-height", "frame-text-lines", + "frame-text-width", "frame-total-cols", "frame-total-lines", + "frame-visible-p", "framep", "frexp", "fringe-bitmaps-at-pos", + "fround", "fset", "ftruncate", "funcall", "funcall-interactively", + "function-equal", "functionp", "gap-position", "gap-size", + "garbage-collect", "gc-status", "generate-new-buffer-name", "get", + "get-buffer", "get-buffer-create", "get-buffer-process", + "get-buffer-window", "get-byte", "get-char-property", + "get-char-property-and-overlay", "get-file-buffer", "get-file-char", + "get-internal-run-time", "get-load-suffixes", "get-pos-property", + "get-process", "get-screen-color", "get-text-property", + "get-unicode-property-internal", "get-unused-category", + "get-unused-iso-final-char", "getenv-internal", "gethash", + "gfile-add-watch", "gfile-rm-watch", "global-key-binding", + "gnutls-available-p", "gnutls-boot", "gnutls-bye", "gnutls-deinit", + "gnutls-error-fatalp", "gnutls-error-string", "gnutls-errorp", + "gnutls-get-initstage", "gnutls-peer-status", + "gnutls-peer-status-warning-describe", "goto-char", "gpm-mouse-start", + "gpm-mouse-stop", "group-gid", "group-real-gid", + "handle-save-session", "handle-switch-frame", "hash-table-count", + "hash-table-p", "hash-table-rehash-size", + "hash-table-rehash-threshold", "hash-table-size", "hash-table-test", + "hash-table-weakness", "iconify-frame", "identity", "image-flush", + "image-mask-p", "image-metadata", "image-size", "imagemagick-types", + "imagep", "indent-to", "indirect-function", "indirect-variable", + "init-image-library", "inotify-add-watch", "inotify-rm-watch", + "input-pending-p", "insert", "insert-and-inherit", + "insert-before-markers", "insert-before-markers-and-inherit", + "insert-buffer-substring", "insert-byte", "insert-char", + "insert-file-contents", "insert-startup-screen", "int86", + "integer-or-marker-p", "integerp", "interactive-form", "intern", + "intern-soft", "internal--track-mouse", "internal-char-font", + "internal-complete-buffer", "internal-copy-lisp-face", + "internal-default-process-filter", + "internal-default-process-sentinel", "internal-describe-syntax-value", + "internal-event-symbol-parse-modifiers", + "internal-face-x-get-resource", "internal-get-lisp-face-attribute", + "internal-lisp-face-attribute-values", "internal-lisp-face-empty-p", + "internal-lisp-face-equal-p", "internal-lisp-face-p", + "internal-make-lisp-face", "internal-make-var-non-special", + "internal-merge-in-global-face", + "internal-set-alternative-font-family-alist", + "internal-set-alternative-font-registry-alist", + "internal-set-font-selection-order", + "internal-set-lisp-face-attribute", + "internal-set-lisp-face-attribute-from-resource", + "internal-show-cursor", "internal-show-cursor-p", "interrupt-process", + "invisible-p", "invocation-directory", "invocation-name", "isnan", + "iso-charset", "key-binding", "key-description", + "keyboard-coding-system", "keymap-parent", "keymap-prompt", "keymapp", + "keywordp", "kill-all-local-variables", "kill-buffer", "kill-emacs", + "kill-local-variable", "kill-process", "last-nonminibuffer-frame", + "lax-plist-get", "lax-plist-put", "ldexp", "length", + "libxml-parse-html-region", "libxml-parse-xml-region", + "line-beginning-position", "line-end-position", "line-pixel-height", + "list", "list-fonts", "list-system-processes", "listp", "load", + "load-average", "local-key-binding", "local-variable-if-set-p", + "local-variable-p", "locale-info", "locate-file-internal", + "lock-buffer", "log", "logand", "logb", "logior", "lognot", "logxor", + "looking-at", "lookup-image", "lookup-image-map", "lookup-key", + "lower-frame", "lsh", "macroexpand", "make-bool-vector", + "make-byte-code", "make-category-set", "make-category-table", + "make-char", "make-char-table", "make-directory-internal", + "make-frame-invisible", "make-frame-visible", "make-hash-table", + "make-indirect-buffer", "make-keymap", "make-list", + "make-local-variable", "make-marker", "make-network-process", + "make-overlay", "make-serial-process", "make-sparse-keymap", + "make-string", "make-symbol", "make-symbolic-link", "make-temp-name", + "make-terminal-frame", "make-variable-buffer-local", + "make-variable-frame-local", "make-vector", "makunbound", + "map-char-table", "map-charset-chars", "map-keymap", + "map-keymap-internal", "mapatoms", "mapc", "mapcar", "mapconcat", + "maphash", "mark-marker", "marker-buffer", "marker-insertion-type", + "marker-position", "markerp", "match-beginning", "match-data", + "match-end", "matching-paren", "max", "max-char", "md5", "member", + "memory-info", "memory-limit", "memory-use-counts", "memq", "memql", + "menu-bar-menu-at-x-y", "menu-or-popup-active-p", + "menu-or-popup-active-p", "merge-face-attribute", "message", + "message-box", "message-or-box", "min", + "minibuffer-completion-contents", "minibuffer-contents", + "minibuffer-contents-no-properties", "minibuffer-depth", + "minibuffer-prompt", "minibuffer-prompt-end", + "minibuffer-selected-window", "minibuffer-window", "minibufferp", + "minor-mode-key-binding", "mod", "modify-category-entry", + "modify-frame-parameters", "modify-syntax-entry", + "mouse-pixel-position", "mouse-position", "move-overlay", + "move-point-visually", "move-to-column", "move-to-window-line", + "msdos-downcase-filename", "msdos-long-file-names", "msdos-memget", + "msdos-memput", "msdos-mouse-disable", "msdos-mouse-enable", + "msdos-mouse-init", "msdos-mouse-p", "msdos-remember-default-colors", + "msdos-set-keyboard", "msdos-set-mouse-buttons", + "multibyte-char-to-unibyte", "multibyte-string-p", "narrow-to-region", + "natnump", "nconc", "network-interface-info", + "network-interface-list", "new-fontset", "newline-cache-check", + "next-char-property-change", "next-frame", "next-overlay-change", + "next-property-change", "next-read-file-uses-dialog-p", + "next-single-char-property-change", "next-single-property-change", + "next-window", "nlistp", "nreverse", "nth", "nthcdr", "null", + "number-or-marker-p", "number-to-string", "numberp", + "open-dribble-file", "open-font", "open-termscript", + "optimize-char-table", "other-buffer", "other-window-for-scrolling", + "overlay-buffer", "overlay-end", "overlay-get", "overlay-lists", + "overlay-properties", "overlay-put", "overlay-recenter", + "overlay-start", "overlayp", "overlays-at", "overlays-in", + "parse-partial-sexp", "play-sound-internal", "plist-get", + "plist-member", "plist-put", "point", "point-marker", "point-max", + "point-max-marker", "point-min", "point-min-marker", + "pos-visible-in-window-p", "position-bytes", "posix-looking-at", + "posix-search-backward", "posix-search-forward", "posix-string-match", + "posn-at-point", "posn-at-x-y", "preceding-char", + "prefix-numeric-value", "previous-char-property-change", + "previous-frame", "previous-overlay-change", + "previous-property-change", "previous-single-char-property-change", + "previous-single-property-change", "previous-window", "prin1", + "prin1-to-string", "princ", "print", "process-attributes", + "process-buffer", "process-coding-system", "process-command", + "process-connection", "process-contact", "process-datagram-address", + "process-exit-status", "process-filter", "process-filter-multibyte-p", + "process-id", "process-inherit-coding-system-flag", "process-list", + "process-mark", "process-name", "process-plist", + "process-query-on-exit-flag", "process-running-child-p", + "process-send-eof", "process-send-region", "process-send-string", + "process-sentinel", "process-status", "process-tty-name", + "process-type", "processp", "profiler-cpu-log", + "profiler-cpu-running-p", "profiler-cpu-start", "profiler-cpu-stop", + "profiler-memory-log", "profiler-memory-running-p", + "profiler-memory-start", "profiler-memory-stop", "propertize", + "purecopy", "put", "put-text-property", + "put-unicode-property-internal", "puthash", "query-font", + "query-fontset", "quit-process", "raise-frame", "random", "rassoc", + "rassq", "re-search-backward", "re-search-forward", "read", + "read-buffer", "read-char", "read-char-exclusive", + "read-coding-system", "read-command", "read-event", + "read-from-minibuffer", "read-from-string", "read-function", + "read-key-sequence", "read-key-sequence-vector", + "read-no-blanks-input", "read-non-nil-coding-system", "read-string", + "read-variable", "recent-auto-save-p", "recent-doskeys", + "recent-keys", "recenter", "recursion-depth", "recursive-edit", + "redirect-debugging-output", "redirect-frame-focus", "redisplay", + "redraw-display", "redraw-frame", "regexp-quote", "region-beginning", + "region-end", "register-ccl-program", "register-code-conversion-map", + "remhash", "remove-list-of-text-properties", "remove-text-properties", + "rename-buffer", "rename-file", "replace-match", + "reset-this-command-lengths", "resize-mini-window-internal", + "restore-buffer-modified-p", "resume-tty", "reverse", "round", + "run-hook-with-args", "run-hook-with-args-until-failure", + "run-hook-with-args-until-success", "run-hook-wrapped", "run-hooks", + "run-window-configuration-change-hook", "run-window-scroll-functions", + "safe-length", "scan-lists", "scan-sexps", "scroll-down", + "scroll-left", "scroll-other-window", "scroll-right", "scroll-up", + "search-backward", "search-forward", "secure-hash", "select-frame", + "select-window", "selected-frame", "selected-window", + "self-insert-command", "send-string-to-terminal", "sequencep", + "serial-process-configure", "set", "set-buffer", + "set-buffer-auto-saved", "set-buffer-major-mode", + "set-buffer-modified-p", "set-buffer-multibyte", "set-case-table", + "set-category-table", "set-char-table-extra-slot", + "set-char-table-parent", "set-char-table-range", "set-charset-plist", + "set-charset-priority", "set-coding-system-priority", + "set-cursor-size", "set-default", "set-default-file-modes", + "set-default-toplevel-value", "set-file-acl", "set-file-modes", + "set-file-selinux-context", "set-file-times", "set-fontset-font", + "set-frame-height", "set-frame-position", "set-frame-selected-window", + "set-frame-size", "set-frame-width", "set-fringe-bitmap-face", + "set-input-interrupt-mode", "set-input-meta-mode", "set-input-mode", + "set-keyboard-coding-system-internal", "set-keymap-parent", + "set-marker", "set-marker-insertion-type", "set-match-data", + "set-message-beep", "set-minibuffer-window", + "set-mouse-pixel-position", "set-mouse-position", + "set-network-process-option", "set-output-flow-control", + "set-process-buffer", "set-process-coding-system", + "set-process-datagram-address", "set-process-filter", + "set-process-filter-multibyte", + "set-process-inherit-coding-system-flag", "set-process-plist", + "set-process-query-on-exit-flag", "set-process-sentinel", + "set-process-window-size", "set-quit-char", + "set-safe-terminal-coding-system-internal", "set-screen-color", + "set-standard-case-table", "set-syntax-table", + "set-terminal-coding-system-internal", "set-terminal-local-value", + "set-terminal-parameter", "set-text-properties", "set-time-zone-rule", + "set-visited-file-modtime", "set-window-buffer", + "set-window-combination-limit", "set-window-configuration", + "set-window-dedicated-p", "set-window-display-table", + "set-window-fringes", "set-window-hscroll", "set-window-margins", + "set-window-new-normal", "set-window-new-pixel", + "set-window-new-total", "set-window-next-buffers", + "set-window-parameter", "set-window-point", "set-window-prev-buffers", + "set-window-redisplay-end-trigger", "set-window-scroll-bars", + "set-window-start", "set-window-vscroll", "setcar", "setcdr", + "setplist", "show-face-resources", "signal", "signal-process", "sin", + "single-key-description", "skip-chars-backward", "skip-chars-forward", + "skip-syntax-backward", "skip-syntax-forward", "sleep-for", "sort", + "sort-charsets", "special-variable-p", "split-char", + "split-window-internal", "sqrt", "standard-case-table", + "standard-category-table", "standard-syntax-table", "start-kbd-macro", + "start-process", "stop-process", "store-kbd-macro-event", "string", + "string-as-multibyte", "string-as-unibyte", "string-bytes", + "string-collate-equalp", "string-collate-lessp", "string-equal", + "string-lessp", "string-make-multibyte", "string-make-unibyte", + "string-match", "string-to-char", "string-to-multibyte", + "string-to-number", "string-to-syntax", "string-to-unibyte", + "string-width", "stringp", "subr-name", "subrp", + "subst-char-in-region", "substitute-command-keys", + "substitute-in-file-name", "substring", "substring-no-properties", + "suspend-emacs", "suspend-tty", "suspicious-object", "sxhash", + "symbol-function", "symbol-name", "symbol-plist", "symbol-value", + "symbolp", "syntax-table", "syntax-table-p", "system-groups", + "system-move-file-to-trash", "system-name", "system-users", "tan", + "terminal-coding-system", "terminal-list", "terminal-live-p", + "terminal-local-value", "terminal-name", "terminal-parameter", + "terminal-parameters", "terpri", "test-completion", + "text-char-description", "text-properties-at", "text-property-any", + "text-property-not-all", "this-command-keys", + "this-command-keys-vector", "this-single-command-keys", + "this-single-command-raw-keys", "time-add", "time-less-p", + "time-subtract", "tool-bar-get-system-style", "tool-bar-height", + "tool-bar-pixel-width", "top-level", "trace-redisplay", + "trace-to-stderr", "translate-region-internal", "transpose-regions", + "truncate", "try-completion", "tty-display-color-cells", + "tty-display-color-p", "tty-no-underline", + "tty-suppress-bold-inverse-default-colors", "tty-top-frame", + "tty-type", "type-of", "undo-boundary", "unencodable-char-position", + "unhandled-file-name-directory", "unibyte-char-to-multibyte", + "unibyte-string", "unicode-property-table-internal", "unify-charset", + "unintern", "unix-sync", "unlock-buffer", "upcase", "upcase-initials", + "upcase-initials-region", "upcase-region", "upcase-word", + "use-global-map", "use-local-map", "user-full-name", + "user-login-name", "user-real-login-name", "user-real-uid", + "user-uid", "variable-binding-locus", "vconcat", "vector", + "vector-or-char-table-p", "vectorp", "verify-visited-file-modtime", + "vertical-motion", "visible-frame-list", "visited-file-modtime", + "w16-get-clipboard-data", "w16-selection-exists-p", + "w16-set-clipboard-data", "w32-battery-status", + "w32-default-color-map", "w32-define-rgb-color", + "w32-display-monitor-attributes-list", "w32-frame-menu-bar-size", + "w32-frame-rect", "w32-get-clipboard-data", + "w32-get-codepage-charset", "w32-get-console-codepage", + "w32-get-console-output-codepage", "w32-get-current-locale-id", + "w32-get-default-locale-id", "w32-get-keyboard-layout", + "w32-get-locale-info", "w32-get-valid-codepages", + "w32-get-valid-keyboard-layouts", "w32-get-valid-locale-ids", + "w32-has-winsock", "w32-long-file-name", "w32-reconstruct-hot-key", + "w32-register-hot-key", "w32-registered-hot-keys", + "w32-selection-exists-p", "w32-send-sys-command", + "w32-set-clipboard-data", "w32-set-console-codepage", + "w32-set-console-output-codepage", "w32-set-current-locale", + "w32-set-keyboard-layout", "w32-set-process-priority", + "w32-shell-execute", "w32-short-file-name", "w32-toggle-lock-key", + "w32-unload-winsock", "w32-unregister-hot-key", "w32-window-exists-p", + "w32notify-add-watch", "w32notify-rm-watch", + "waiting-for-user-input-p", "where-is-internal", "widen", + "widget-apply", "widget-get", "widget-put", + "window-absolute-pixel-edges", "window-at", "window-body-height", + "window-body-width", "window-bottom-divider-width", "window-buffer", + "window-combination-limit", "window-configuration-frame", + "window-configuration-p", "window-dedicated-p", + "window-display-table", "window-edges", "window-end", "window-frame", + "window-fringes", "window-header-line-height", "window-hscroll", + "window-inside-absolute-pixel-edges", "window-inside-edges", + "window-inside-pixel-edges", "window-left-child", + "window-left-column", "window-line-height", "window-list", + "window-list-1", "window-live-p", "window-margins", + "window-minibuffer-p", "window-mode-line-height", "window-new-normal", + "window-new-pixel", "window-new-total", "window-next-buffers", + "window-next-sibling", "window-normal-size", "window-old-point", + "window-parameter", "window-parameters", "window-parent", + "window-pixel-edges", "window-pixel-height", "window-pixel-left", + "window-pixel-top", "window-pixel-width", "window-point", + "window-prev-buffers", "window-prev-sibling", + "window-redisplay-end-trigger", "window-resize-apply", + "window-resize-apply-total", "window-right-divider-width", + "window-scroll-bar-height", "window-scroll-bar-width", + "window-scroll-bars", "window-start", "window-system", + "window-text-height", "window-text-pixel-size", "window-text-width", + "window-top-child", "window-top-line", "window-total-height", + "window-total-width", "window-use-time", "window-valid-p", + "window-vscroll", "windowp", "write-char", "write-region", + "x-backspace-delete-keys-p", "x-change-window-property", + "x-change-window-property", "x-close-connection", + "x-close-connection", "x-create-frame", "x-create-frame", + "x-delete-window-property", "x-delete-window-property", + "x-disown-selection-internal", "x-display-backing-store", + "x-display-backing-store", "x-display-color-cells", + "x-display-color-cells", "x-display-grayscale-p", + "x-display-grayscale-p", "x-display-list", "x-display-list", + "x-display-mm-height", "x-display-mm-height", "x-display-mm-width", + "x-display-mm-width", "x-display-monitor-attributes-list", + "x-display-pixel-height", "x-display-pixel-height", + "x-display-pixel-width", "x-display-pixel-width", "x-display-planes", + "x-display-planes", "x-display-save-under", "x-display-save-under", + "x-display-screens", "x-display-screens", "x-display-visual-class", + "x-display-visual-class", "x-family-fonts", "x-file-dialog", + "x-file-dialog", "x-file-dialog", "x-focus-frame", "x-frame-geometry", + "x-frame-geometry", "x-get-atom-name", "x-get-resource", + "x-get-selection-internal", "x-hide-tip", "x-hide-tip", + "x-list-fonts", "x-load-color-file", "x-menu-bar-open-internal", + "x-menu-bar-open-internal", "x-open-connection", "x-open-connection", + "x-own-selection-internal", "x-parse-geometry", "x-popup-dialog", + "x-popup-menu", "x-register-dnd-atom", "x-select-font", + "x-select-font", "x-selection-exists-p", "x-selection-owner-p", + "x-send-client-message", "x-server-max-request-size", + "x-server-max-request-size", "x-server-vendor", "x-server-vendor", + "x-server-version", "x-server-version", "x-show-tip", "x-show-tip", + "x-synchronize", "x-synchronize", "x-uses-old-gtk-dialog", + "x-window-property", "x-window-property", "x-wm-set-size-hint", + "xw-color-defined-p", "xw-color-defined-p", "xw-color-values", + "xw-color-values", "xw-display-color-p", "xw-display-color-p", + "yes-or-no-p", "zlib-available-p", "zlib-decompress-region", + "forward-point", + } + + emacsBuiltinFunctionHighlighted = []string{ + "defvaralias", "provide", "require", + "with-no-warnings", "define-widget", "with-electric-help", + "throw", "defalias", "featurep", + } + + emacsLambdaListKeywords = []string{ + "&allow-other-keys", "&aux", "&body", "&environment", "&key", "&optional", + "&rest", "&whole", + } + + emacsErrorKeywords = []string{ + "cl-assert", "cl-check-type", "error", "signal", + "user-error", "warn", + } +) + +// EmacsLisp lexer. +var EmacsLisp = Register(TypeRemappingLexer(MustNewXMLLexer( + embedded, + "embedded/emacslisp.xml", +), TypeMapping{ + {NameVariable, NameFunction, emacsBuiltinFunction}, + {NameVariable, NameBuiltin, emacsSpecialForms}, + {NameVariable, NameException, emacsErrorKeywords}, + {NameVariable, NameBuiltin, append(emacsBuiltinFunctionHighlighted, emacsMacros...)}, + {NameVariable, KeywordPseudo, emacsLambdaListKeywords}, +})) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xml new file mode 100644 index 0000000..e8140b7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abap.xml @@ -0,0 +1,154 @@ + + + ABAP + abap + *.abap + *.ABAP + text/x-abap + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abnf.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abnf.xml new file mode 100644 index 0000000..3ffd51c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/abnf.xml @@ -0,0 +1,66 @@ + + + ABNF + abnf + *.abnf + text/x-abnf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript.xml new file mode 100644 index 0000000..d6727a1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript.xml @@ -0,0 +1,68 @@ + + + ActionScript + as + actionscript + *.as + application/x-actionscript + text/x-actionscript + text/actionscript + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript_3.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript_3.xml new file mode 100644 index 0000000..e5f6538 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/actionscript_3.xml @@ -0,0 +1,163 @@ + + + ActionScript 3 + as3 + actionscript3 + *.as + application/x-actionscript3 + text/x-actionscript3 + text/actionscript3 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ada.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ada.xml new file mode 100644 index 0000000..5854a20 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ada.xml @@ -0,0 +1,321 @@ + + + Ada + ada + ada95 + ada2005 + *.adb + *.ads + *.ada + text/x-ada + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/agda.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/agda.xml new file mode 100644 index 0000000..6f2b2d5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/agda.xml @@ -0,0 +1,66 @@ + + + Agda + agda + *.agda + text/x-agda + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/al.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/al.xml new file mode 100644 index 0000000..30bad5a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/al.xml @@ -0,0 +1,75 @@ + + + AL + al + *.al + *.dal + text/x-al + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/alloy.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/alloy.xml new file mode 100644 index 0000000..1de9ea6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/alloy.xml @@ -0,0 +1,58 @@ + + + + Alloy + alloy + *.als + text/x-alloy + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/angular2.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/angular2.xml new file mode 100644 index 0000000..230ef86 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/angular2.xml @@ -0,0 +1,109 @@ + + + Angular2 + ng2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/antlr.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/antlr.xml new file mode 100644 index 0000000..e57edd4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/antlr.xml @@ -0,0 +1,317 @@ + + + ANTLR + antlr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apacheconf.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apacheconf.xml new file mode 100644 index 0000000..7643541 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apacheconf.xml @@ -0,0 +1,74 @@ + + + ApacheConf + apacheconf + aconf + apache + .htaccess + apache.conf + apache2.conf + text/x-apacheconf + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apl.xml new file mode 100644 index 0000000..959448c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/apl.xml @@ -0,0 +1,59 @@ + + + APL + apl + *.apl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/applescript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/applescript.xml new file mode 100644 index 0000000..5a6224a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/applescript.xml @@ -0,0 +1,151 @@ + + + AppleScript + applescript + *.applescript + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arangodb_aql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arangodb_aql.xml new file mode 100644 index 0000000..434b395 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arangodb_aql.xml @@ -0,0 +1,174 @@ + + + ArangoDB AQL + aql + *.aql + text/x-aql + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arduino.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arduino.xml new file mode 100644 index 0000000..6a75df5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/arduino.xml @@ -0,0 +1,322 @@ + + + Arduino + arduino + *.ino + text/x-arduino + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/armasm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/armasm.xml new file mode 100644 index 0000000..340278d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/armasm.xml @@ -0,0 +1,126 @@ + + + ArmAsm + armasm + *.s + *.S + text/x-armasm + text/x-asm + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/atl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/atl.xml new file mode 100644 index 0000000..623dc20 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/atl.xml @@ -0,0 +1,165 @@ + + + ATL + atl + *.atl + text/x-atl + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autohotkey.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autohotkey.xml new file mode 100644 index 0000000..6ec94ed --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autohotkey.xml @@ -0,0 +1,78 @@ + + + + AutoHotkey + autohotkey + ahk + *.ahk + *.ahkl + text/x-autohotkey + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autoit.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autoit.xml new file mode 100644 index 0000000..1f7e15d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/autoit.xml @@ -0,0 +1,70 @@ + + + + AutoIt + autoit + *.au3 + text/x-autoit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/awk.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/awk.xml new file mode 100644 index 0000000..07476ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/awk.xml @@ -0,0 +1,95 @@ + + + Awk + awk + gawk + mawk + nawk + *.awk + application/x-awk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ballerina.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ballerina.xml new file mode 100644 index 0000000..d13c123 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ballerina.xml @@ -0,0 +1,97 @@ + + + Ballerina + ballerina + *.bal + text/x-ballerina + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash.xml new file mode 100644 index 0000000..6163cc6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash.xml @@ -0,0 +1,222 @@ + + + Bash + bash + sh + ksh + zsh + shell + *.sh + *.ksh + *.bash + *.ebuild + *.eclass + .env + .env.* + *.env + *.exheres-0 + *.exlib + *.zsh + *.zshrc + .bashrc + bashrc + .bash_* + bash_* + zshrc + .zshrc + APKBUILD + PKGBUILD + application/x-sh + application/x-shellscript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash_session.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash_session.xml new file mode 100644 index 0000000..82c5fd6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bash_session.xml @@ -0,0 +1,25 @@ + + + Bash Session + bash-session + console + shell-session + *.sh-session + text/x-sh + true + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/batchfile.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/batchfile.xml new file mode 100644 index 0000000..d3e0627 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/batchfile.xml @@ -0,0 +1,660 @@ + + + Batchfile + bat + batch + dosbatch + winbatch + *.bat + *.cmd + application/x-dos-batch + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/beef.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/beef.xml new file mode 100644 index 0000000..031a220 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/beef.xml @@ -0,0 +1,120 @@ + + + Beef + beef + *.bf + text/x-beef + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bibtex.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bibtex.xml new file mode 100644 index 0000000..8fde161 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bibtex.xml @@ -0,0 +1,152 @@ + + + BibTeX + bib + bibtex + *.bib + text/x-bibtex + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bicep.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bicep.xml new file mode 100644 index 0000000..db90f31 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bicep.xml @@ -0,0 +1,84 @@ + + + Bicep + bicep + *.bicep + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/blitzbasic.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/blitzbasic.xml new file mode 100644 index 0000000..591b1ad --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/blitzbasic.xml @@ -0,0 +1,141 @@ + + + BlitzBasic + blitzbasic + b3d + bplus + *.bb + *.decls + text/x-bb + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bnf.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bnf.xml new file mode 100644 index 0000000..5c98424 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bnf.xml @@ -0,0 +1,28 @@ + + + BNF + bnf + *.bnf + text/x-bnf + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bqn.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bqn.xml new file mode 100644 index 0000000..c1090ea --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/bqn.xml @@ -0,0 +1,83 @@ + + + BQN + bqn + *.bqn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/brainfuck.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/brainfuck.xml new file mode 100644 index 0000000..4c84c33 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/brainfuck.xml @@ -0,0 +1,51 @@ + + + Brainfuck + brainfuck + bf + *.bf + *.b + application/x-brainfuck + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c#.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c#.xml new file mode 100644 index 0000000..f1e21db --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c#.xml @@ -0,0 +1,121 @@ + + + C# + csharp + c# + *.cs + text/x-csharp + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c++.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c++.xml new file mode 100644 index 0000000..680a19a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c++.xml @@ -0,0 +1,331 @@ + + + C++ + cpp + c++ + *.cpp + *.hpp + *.c++ + *.h++ + *.cc + *.hh + *.cxx + *.hxx + *.C + *.H + *.cp + *.CPP + *.tpp + text/x-c++hdr + text/x-c++src + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c.xml new file mode 100644 index 0000000..35ee32d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c.xml @@ -0,0 +1,260 @@ + + + C + c + *.c + *.h + *.idc + *.x[bp]m + text/x-chdr + text/x-csrc + image/x-xbitmap + image/x-xpixmap + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml new file mode 100644 index 0000000..8094ce4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/c3.xml @@ -0,0 +1,374 @@ + + + C3 + c3 + *.c3 + *.c3i + *.c3t + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cap_n_proto.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cap_n_proto.xml new file mode 100644 index 0000000..3e7d147 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cap_n_proto.xml @@ -0,0 +1,122 @@ + + + Cap'n Proto + capnp + *.capnp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cassandra_cql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cassandra_cql.xml new file mode 100644 index 0000000..1a78f99 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cassandra_cql.xml @@ -0,0 +1,137 @@ + + + Cassandra CQL + cassandra + cql + *.cql + text/x-cql + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ceylon.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ceylon.xml new file mode 100644 index 0000000..4c41218 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ceylon.xml @@ -0,0 +1,151 @@ + + + Ceylon + ceylon + *.ceylon + text/x-ceylon + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfengine3.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfengine3.xml new file mode 100644 index 0000000..4950305 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfengine3.xml @@ -0,0 +1,197 @@ + + + CFEngine3 + cfengine3 + cf3 + *.cf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfstatement.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfstatement.xml new file mode 100644 index 0000000..46a84cf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cfstatement.xml @@ -0,0 +1,92 @@ + + + cfstatement + cfs + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chaiscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chaiscript.xml new file mode 100644 index 0000000..860439a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chaiscript.xml @@ -0,0 +1,134 @@ + + + ChaiScript + chai + chaiscript + *.chai + text/x-chaiscript + application/x-chaiscript + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chapel.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chapel.xml new file mode 100644 index 0000000..c89cafc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/chapel.xml @@ -0,0 +1,143 @@ + + + Chapel + chapel + chpl + *.chpl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cheetah.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cheetah.xml new file mode 100644 index 0000000..284457c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cheetah.xml @@ -0,0 +1,55 @@ + + + Cheetah + cheetah + spitfire + *.tmpl + *.spt + application/x-cheetah + application/x-spitfire + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/clojure.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/clojure.xml new file mode 100644 index 0000000..967ba39 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/clojure.xml @@ -0,0 +1,71 @@ + + + Clojure + clojure + clj + edn + *.clj + *.edn + text/x-clojure + application/x-clojure + application/edn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cmake.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cmake.xml new file mode 100644 index 0000000..b041cfd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cmake.xml @@ -0,0 +1,90 @@ + + + CMake + cmake + *.cmake + CMakeLists.txt + text/x-cmake + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cobol.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cobol.xml new file mode 100644 index 0000000..a8a8029 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cobol.xml @@ -0,0 +1,90 @@ + + + COBOL + cobol + *.cob + *.COB + *.cpy + *.CPY + text/x-cobol + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coffeescript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coffeescript.xml new file mode 100644 index 0000000..e29722f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coffeescript.xml @@ -0,0 +1,210 @@ + + + CoffeeScript + coffee-script + coffeescript + coffee + *.coffee + text/coffeescript + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/common_lisp.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/common_lisp.xml new file mode 100644 index 0000000..0fb9a7a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/common_lisp.xml @@ -0,0 +1,184 @@ + + + Common Lisp + common-lisp + cl + lisp + *.cl + *.lisp + text/x-common-lisp + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coq.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coq.xml new file mode 100644 index 0000000..62f64ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/coq.xml @@ -0,0 +1,136 @@ + + + Coq + coq + *.v + text/x-coq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml new file mode 100644 index 0000000..f0a9d29 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/core.xml @@ -0,0 +1,79 @@ + + + Core + core + *.core + text/x-core + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xml new file mode 100644 index 0000000..94853db --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/crystal.xml @@ -0,0 +1,762 @@ + + + Crystal + cr + crystal + *.cr + text/x-crystal + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml new file mode 100644 index 0000000..adc13c7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/css.xml @@ -0,0 +1,323 @@ + + + CSS + css + *.css + text/css + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/csv.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/csv.xml new file mode 100644 index 0000000..b70c2f8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/csv.xml @@ -0,0 +1,53 @@ + + + + + CSV + csv + *.csv + text/csv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cue.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cue.xml new file mode 100644 index 0000000..2a12f39 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cue.xml @@ -0,0 +1,85 @@ + + + CUE + cue + *.cue + text/x-cue + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cython.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cython.xml new file mode 100644 index 0000000..15dfe4d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/cython.xml @@ -0,0 +1,372 @@ + + + Cython + cython + pyx + pyrex + *.pyx + *.pxd + *.pxi + text/x-cython + application/x-cython + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml new file mode 100644 index 0000000..19c85e2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/d.xml @@ -0,0 +1,133 @@ + + + D + d + *.d + *.di + text/x-d + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dart.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dart.xml new file mode 100644 index 0000000..f1b454f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dart.xml @@ -0,0 +1,213 @@ + + + Dart + dart + *.dart + text/x-dart + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dax.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dax.xml new file mode 100644 index 0000000..2bb3a1a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dax.xml @@ -0,0 +1,39 @@ + + + Dax + dax + *.dax + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/desktop_entry.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/desktop_entry.xml new file mode 100644 index 0000000..ad71ad4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/desktop_entry.xml @@ -0,0 +1,17 @@ + + + Desktop file + desktop + desktop_entry + *.desktop + application/x-desktop + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml new file mode 100644 index 0000000..2db54dd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/devicetree.xml @@ -0,0 +1,251 @@ + + + Devicetree + devicetree + dts + *.dts + *.dtsi + text/x-devicetree + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/diff.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/diff.xml new file mode 100644 index 0000000..dc0beb7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/diff.xml @@ -0,0 +1,52 @@ + + + Diff + diff + udiff + *.diff + *.patch + text/x-diff + text/x-patch + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/django_jinja.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/django_jinja.xml new file mode 100644 index 0000000..3c97c22 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/django_jinja.xml @@ -0,0 +1,153 @@ + + + Django/Jinja + django + jinja + application/x-django-templating + application/x-jinja + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dns.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dns.xml new file mode 100644 index 0000000..ef8f663 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dns.xml @@ -0,0 +1,44 @@ + + + + dns + zone + bind + *.zone + text/dns + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/docker.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/docker.xml new file mode 100644 index 0000000..261834f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/docker.xml @@ -0,0 +1,68 @@ + + + Docker + docker + dockerfile + containerfile + Dockerfile + Dockerfile.* + *.Dockerfile + *.docker + Containerfile + Containerfile.* + *.Containerfile + text/x-dockerfile-config + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dtd.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dtd.xml new file mode 100644 index 0000000..0edbbde --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dtd.xml @@ -0,0 +1,168 @@ + + + DTD + dtd + *.dtd + application/xml-dtd + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dylan.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dylan.xml new file mode 100644 index 0000000..3660d14 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/dylan.xml @@ -0,0 +1,176 @@ + + + Dylan + dylan + *.dylan + *.dyl + *.intr + text/x-dylan + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ebnf.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ebnf.xml new file mode 100644 index 0000000..df5d62f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ebnf.xml @@ -0,0 +1,90 @@ + + + EBNF + ebnf + *.ebnf + text/x-ebnf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elixir.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elixir.xml new file mode 100644 index 0000000..286f53a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elixir.xml @@ -0,0 +1,744 @@ + + + Elixir + elixir + ex + exs + *.ex + *.eex + *.exs + text/x-elixir + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elm.xml new file mode 100644 index 0000000..ed65efc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/elm.xml @@ -0,0 +1,119 @@ + + + Elm + elm + *.elm + text/x-elm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/emacslisp.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/emacslisp.xml new file mode 100644 index 0000000..668bc62 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/emacslisp.xml @@ -0,0 +1,132 @@ + + + EmacsLisp + emacs + elisp + emacs-lisp + *.el + text/x-elisp + application/x-elisp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/erlang.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/erlang.xml new file mode 100644 index 0000000..b186588 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/erlang.xml @@ -0,0 +1,166 @@ + + + Erlang + erlang + *.erl + *.hrl + *.es + *.escript + text/x-erlang + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/factor.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/factor.xml new file mode 100644 index 0000000..4743b9a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/factor.xml @@ -0,0 +1,412 @@ + + + Factor + factor + *.factor + text/x-factor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fennel.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fennel.xml new file mode 100644 index 0000000..b9b6d59 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fennel.xml @@ -0,0 +1,68 @@ + + + Fennel + fennel + fnl + *.fennel + text/x-fennel + application/x-fennel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fish.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fish.xml new file mode 100644 index 0000000..deb7814 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fish.xml @@ -0,0 +1,159 @@ + + + Fish + fish + fishshell + *.fish + *.load + application/x-fish + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/forth.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/forth.xml new file mode 100644 index 0000000..31096a2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/forth.xml @@ -0,0 +1,78 @@ + + + Forth + forth + *.frt + *.fth + *.fs + application/x-forth + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortran.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortran.xml new file mode 100644 index 0000000..6140e70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortran.xml @@ -0,0 +1,102 @@ + + + Fortran + fortran + f90 + *.f03 + *.f90 + *.f95 + *.F03 + *.F90 + *.F95 + text/x-fortran + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortranfixed.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortranfixed.xml new file mode 100644 index 0000000..11343c0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fortranfixed.xml @@ -0,0 +1,71 @@ + + + FortranFixed + fortranfixed + *.f + *.F + text/x-fortran + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fsharp.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fsharp.xml new file mode 100644 index 0000000..e1c19ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/fsharp.xml @@ -0,0 +1,245 @@ + + + FSharp + fsharp + *.fs + *.fsi + text/x-fsharp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gas.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gas.xml new file mode 100644 index 0000000..7557bce --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gas.xml @@ -0,0 +1,150 @@ + + + GAS + gas + asm + *.s + *.S + text/x-gas + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript.xml new file mode 100644 index 0000000..811f38d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript.xml @@ -0,0 +1,259 @@ + + + GDScript + gdscript + gd + *.gd + text/x-gdscript + application/x-gdscript + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript3.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript3.xml new file mode 100644 index 0000000..b50c9dd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gdscript3.xml @@ -0,0 +1,270 @@ + + + GDScript3 + gdscript3 + gd3 + *.gd + text/x-gdscript + application/x-gdscript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gherkin.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gherkin.xml new file mode 100644 index 0000000..c53a2cb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gherkin.xml @@ -0,0 +1,263 @@ + + + Gherkin + cucumber + Cucumber + gherkin + Gherkin + *.feature + *.FEATURE + text/x-gherkin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gleam.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gleam.xml new file mode 100644 index 0000000..3966322 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gleam.xml @@ -0,0 +1,100 @@ + + + Gleam + gleam + *.gleam + text/x-gleam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/glsl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/glsl.xml new file mode 100644 index 0000000..ca0b696 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/glsl.xml @@ -0,0 +1,65 @@ + + + GLSL + glsl + *.vert + *.frag + *.geo + text/x-glslsrc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gnuplot.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gnuplot.xml new file mode 100644 index 0000000..ee6a245 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/gnuplot.xml @@ -0,0 +1,289 @@ + + + Gnuplot + gnuplot + *.plot + *.plt + text/x-gnuplot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/go_template.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/go_template.xml new file mode 100644 index 0000000..36f737b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/go_template.xml @@ -0,0 +1,114 @@ + + + Go Template + go-template + *.gotmpl + *.go.tmpl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/graphql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/graphql.xml new file mode 100644 index 0000000..b062273 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/graphql.xml @@ -0,0 +1,88 @@ + + + GraphQL + graphql + graphqls + gql + *.graphql + *.graphqls + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groff.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groff.xml new file mode 100644 index 0000000..3af0a43 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groff.xml @@ -0,0 +1,90 @@ + + + Groff + groff + nroff + man + *.[1-9] + *.1p + *.3pm + *.man + application/x-troff + text/troff + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groovy.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groovy.xml new file mode 100644 index 0000000..3cca2e9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/groovy.xml @@ -0,0 +1,135 @@ + + + Groovy + groovy + *.groovy + *.gradle + text/x-groovy + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/handlebars.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/handlebars.xml new file mode 100644 index 0000000..7cf2a64 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/handlebars.xml @@ -0,0 +1,147 @@ + + + Handlebars + handlebars + hbs + *.handlebars + *.hbs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hare.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hare.xml new file mode 100644 index 0000000..c1f7e94 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hare.xml @@ -0,0 +1,98 @@ + + + Hare + hare + *.ha + text/x-hare + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/haskell.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/haskell.xml new file mode 100644 index 0000000..1fad082 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/haskell.xml @@ -0,0 +1,275 @@ + + + Haskell + haskell + hs + *.hs + text/x-haskell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hcl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hcl.xml new file mode 100644 index 0000000..d3ed208 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hcl.xml @@ -0,0 +1,143 @@ + + + HCL + hcl + *.hcl + application/x-hcl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hexdump.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hexdump.xml new file mode 100644 index 0000000..a6f28ea --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hexdump.xml @@ -0,0 +1,189 @@ + + + Hexdump + hexdump + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlb.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlb.xml new file mode 100644 index 0000000..9723fd9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlb.xml @@ -0,0 +1,131 @@ + + + HLB + hlb + *.hlb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlsl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlsl.xml new file mode 100644 index 0000000..41ab323 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hlsl.xml @@ -0,0 +1,110 @@ + + + HLSL + hlsl + *.hlsl + *.hlsli + *.cginc + *.fx + *.fxh + text/x-hlsl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/holyc.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/holyc.xml new file mode 100644 index 0000000..cd2d9d1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/holyc.xml @@ -0,0 +1,252 @@ + + + HolyC + holyc + *.HC + *.hc + *.HH + *.hh + *.hc.z + *.HC.Z + text/x-chdr + text/x-csrc + image/x-xbitmap + image/x-xpixmap + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/html.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/html.xml new file mode 100644 index 0000000..2f1a8a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/html.xml @@ -0,0 +1,159 @@ + + + HTML + html + *.html + *.htm + *.xhtml + *.xslt + text/html + application/xhtml+xml + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hy.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hy.xml new file mode 100644 index 0000000..a0dae46 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/hy.xml @@ -0,0 +1,104 @@ + + + Hy + hylang + *.hy + text/x-hy + application/x-hy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/idris.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/idris.xml new file mode 100644 index 0000000..9592d88 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/idris.xml @@ -0,0 +1,216 @@ + + + Idris + idris + idr + *.idr + text/x-idris + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/igor.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/igor.xml new file mode 100644 index 0000000..1cc0205 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/igor.xml @@ -0,0 +1,47 @@ + + + Igor + igor + igorpro + *.ipf + text/ipf + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml new file mode 100644 index 0000000..3f1de09 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ini.xml @@ -0,0 +1,52 @@ + + + INI + ini + cfg + dosini + *.ini + *.cfg + *.inf + *.service + *.socket + *.container + *.network + *.build + *.pod + *.kube + *.volume + *.image + .gitconfig + .editorconfig + pylintrc + .pylintrc + text/x-ini + text/inf + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/io.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/io.xml new file mode 100644 index 0000000..9ad94fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/io.xml @@ -0,0 +1,71 @@ + + + Io + io + *.io + text/x-iosrc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/iscdhcpd.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/iscdhcpd.xml new file mode 100644 index 0000000..645cb05 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/iscdhcpd.xml @@ -0,0 +1,96 @@ + + + ISCdhcpd + iscdhcpd + dhcpd.conf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/j.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/j.xml new file mode 100644 index 0000000..872d081 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/j.xml @@ -0,0 +1,157 @@ + + + J + j + *.ijs + text/x-j + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/janet.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/janet.xml new file mode 100644 index 0000000..fe139e8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/janet.xml @@ -0,0 +1,48 @@ + + + + Janet + janet + *.janet + *.jdn + text/x-janet + application/x-janet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/java.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/java.xml new file mode 100644 index 0000000..3ce33ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/java.xml @@ -0,0 +1,193 @@ + + + Java + java + *.java + text/x-java + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/javascript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/javascript.xml new file mode 100644 index 0000000..efe80ed --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/javascript.xml @@ -0,0 +1,160 @@ + + + JavaScript + js + javascript + *.js + *.jsm + *.mjs + *.cjs + application/javascript + application/x-javascript + text/x-javascript + text/javascript + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/json.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/json.xml new file mode 100644 index 0000000..a34abfa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/json.xml @@ -0,0 +1,112 @@ + + + JSON + json + *.json + *.jsonc + *.avsc + application/json + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonata.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonata.xml new file mode 100644 index 0000000..c0eafab --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonata.xml @@ -0,0 +1,83 @@ + + + JSONata + jsonata + *.jsonata + true + + + + + + + + + + // Spread operator + + + // Sort operator + + + // Descendant | Wildcard | Multiplication + + + // Division + + + // Comparison operators + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonnet.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonnet.xml new file mode 100644 index 0000000..1633a5e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jsonnet.xml @@ -0,0 +1,138 @@ + + + + Jsonnet + jsonnet + *.jsonnet + *.libsonnet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/julia.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/julia.xml new file mode 100644 index 0000000..776dcdb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/julia.xml @@ -0,0 +1,400 @@ + + + Julia + julia + jl + *.jl + text/x-julia + application/x-julia + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jungle.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jungle.xml new file mode 100644 index 0000000..92c785d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/jungle.xml @@ -0,0 +1,98 @@ + + + Jungle + jungle + *.jungle + text/x-jungle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml new file mode 100644 index 0000000..afc0489 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kakoune.xml @@ -0,0 +1,96 @@ + + + + Kakoune + kak + kakoune + kakrc + kakscript + *.kak + kakrc + application/x-sh + application/x-shellscript + text/x-shellscript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kdl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kdl.xml new file mode 100644 index 0000000..bc6ebfb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kdl.xml @@ -0,0 +1,75 @@ + + + KDL + kdl + *.kdl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml new file mode 100644 index 0000000..28bf2d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/kotlin.xml @@ -0,0 +1,234 @@ + + + Kotlin + kotlin + *.kt + *.kts + text/x-kotlin + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lean.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lean.xml new file mode 100644 index 0000000..6ac5151 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lean.xml @@ -0,0 +1,56 @@ + + + Lean4 + lean4 + lean + *.lean + text/x-lean4 + text/x-lean + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lighttpd_configuration_file.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lighttpd_configuration_file.xml new file mode 100644 index 0000000..1319e5c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lighttpd_configuration_file.xml @@ -0,0 +1,42 @@ + + + Lighttpd configuration file + lighty + lighttpd + text/x-lighttpd-conf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/llvm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/llvm.xml new file mode 100644 index 0000000..f24f152 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/llvm.xml @@ -0,0 +1,73 @@ + + + LLVM + llvm + *.ll + text/x-llvm + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml new file mode 100644 index 0000000..8dec0a8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lox.xml @@ -0,0 +1,78 @@ + + + lox + *.lox + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lua.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lua.xml new file mode 100644 index 0000000..e3d778f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/lua.xml @@ -0,0 +1,160 @@ + + + Lua + lua + luau + *.lua + *.wlua + *.luau + text/x-lua + application/x-lua + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/makefile.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/makefile.xml new file mode 100644 index 0000000..a82a7f8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/makefile.xml @@ -0,0 +1,131 @@ + + + Makefile + make + makefile + mf + bsdmake + *.mak + *.mk + Makefile + makefile + Makefile.* + GNUmakefile + BSDmakefile + Justfile + justfile + .justfile + text/x-makefile + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mako.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mako.xml new file mode 100644 index 0000000..7824140 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mako.xml @@ -0,0 +1,120 @@ + + + Mako + mako + *.mao + application/x-mako + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mason.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mason.xml new file mode 100644 index 0000000..5873f2a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mason.xml @@ -0,0 +1,89 @@ + + + Mason + mason + *.m + *.mhtml + *.mc + *.mi + autohandler + dhandler + application/x-mason + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/materialize_sql_dialect.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/materialize_sql_dialect.xml new file mode 100644 index 0000000..7094ddc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/materialize_sql_dialect.xml @@ -0,0 +1,155 @@ + + + Materialize SQL dialect + text/x-materializesql + true + true + materialize + mzsql + + + + + + + + + + + + + + + + + + + 6 + 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mathematica.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mathematica.xml new file mode 100644 index 0000000..0b8dfb6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mathematica.xml @@ -0,0 +1,60 @@ + + + Mathematica + mathematica + mma + nb + *.cdf + *.m + *.ma + *.mt + *.mx + *.nb + *.nbp + *.wl + application/mathematica + application/vnd.wolfram.mathematica + application/vnd.wolfram.mathematica.package + application/vnd.wolfram.cdf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/matlab.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/matlab.xml new file mode 100644 index 0000000..ebb4e2c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/matlab.xml @@ -0,0 +1,114 @@ + + + Matlab + matlab + *.m + text/matlab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mcfunction.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mcfunction.xml new file mode 100644 index 0000000..a6aa6db --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mcfunction.xml @@ -0,0 +1,138 @@ + + + + MCFunction + mcfunction + mcf + *.mcfunction + text/mcfunction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/meson.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/meson.xml new file mode 100644 index 0000000..130047d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/meson.xml @@ -0,0 +1,85 @@ + + + Meson + meson + meson.build + meson.build + meson_options.txt + text/x-meson + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/metal.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/metal.xml new file mode 100644 index 0000000..62d04ba --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/metal.xml @@ -0,0 +1,270 @@ + + + Metal + metal + *.metal + text/x-metal + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/microcad.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/microcad.xml new file mode 100644 index 0000000..6de71ef --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/microcad.xml @@ -0,0 +1,139 @@ + + + microcad + µcad + *.µcad + *.ucad + *.mcad + text/microcad + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/minizinc.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/minizinc.xml new file mode 100644 index 0000000..1ad6860 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/minizinc.xml @@ -0,0 +1,82 @@ + + + MiniZinc + minizinc + MZN + mzn + *.mzn + *.dzn + *.fzn + text/minizinc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mlir.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mlir.xml new file mode 100644 index 0000000..025c3dc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mlir.xml @@ -0,0 +1,73 @@ + + + MLIR + mlir + *.mlir + text/x-mlir + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml new file mode 100644 index 0000000..e5fa60f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modelica.xml @@ -0,0 +1,106 @@ + + + Modelica + modelica + *.mo + text/x-modelica + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modula-2.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modula-2.xml new file mode 100644 index 0000000..0bf37bc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/modula-2.xml @@ -0,0 +1,245 @@ + + + Modula-2 + modula2 + m2 + *.def + *.mod + text/x-modula2 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mojo.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mojo.xml new file mode 100644 index 0000000..677811e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mojo.xml @@ -0,0 +1,228 @@ + + + Mojo + mojo + 🔥 + *.mojo + *.🔥 + text/x-mojo + application/x-mojo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/monkeyc.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/monkeyc.xml new file mode 100644 index 0000000..7445a63 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/monkeyc.xml @@ -0,0 +1,153 @@ + + + MonkeyC + monkeyc + *.mc + text/x-monkeyc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonbit.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonbit.xml new file mode 100644 index 0000000..846e724 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonbit.xml @@ -0,0 +1,75 @@ + + + MoonBit + moonbit + mbt + *.mbt + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonscript.xml new file mode 100644 index 0000000..293f538 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/moonscript.xml @@ -0,0 +1,83 @@ + + + + MoonScript + moonscript + moon + *.moon + text/x-moonscript + application/x-moonscript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/morrowindscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/morrowindscript.xml new file mode 100644 index 0000000..724a19f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/morrowindscript.xml @@ -0,0 +1,90 @@ + + + MorrowindScript + morrowind + mwscript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/myghty.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/myghty.xml new file mode 100644 index 0000000..6d03917 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/myghty.xml @@ -0,0 +1,77 @@ + + + Myghty + myghty + *.myt + autodelegate + application/x-myghty + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mysql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mysql.xml new file mode 100644 index 0000000..b6c2046 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/mysql.xml @@ -0,0 +1,121 @@ + + + MySQL + mysql + mariadb + *.sql + text/x-mysql + text/x-mariadb + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nasm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nasm.xml new file mode 100644 index 0000000..defe65b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nasm.xml @@ -0,0 +1,126 @@ + + + NASM + nasm + *.asm + *.ASM + *.nasm + text/x-nasm + true + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/natural.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/natural.xml new file mode 100644 index 0000000..707252b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/natural.xml @@ -0,0 +1,143 @@ + + + Natural + natural + *.NSN + *.NSP + *.NSS + *.NSH + *.NSG + *.NSL + *.NSA + *.NSM + *.NSC + *.NS7 + text/x-natural + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ndisasm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ndisasm.xml new file mode 100644 index 0000000..74d443b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ndisasm.xml @@ -0,0 +1,123 @@ + + + NDISASM + ndisasm + text/x-disasm + true + 0.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/newspeak.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/newspeak.xml new file mode 100644 index 0000000..b932657 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/newspeak.xml @@ -0,0 +1,121 @@ + + + Newspeak + newspeak + *.ns2 + text/x-newspeak + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nginx_configuration_file.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nginx_configuration_file.xml new file mode 100644 index 0000000..a80d049 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nginx_configuration_file.xml @@ -0,0 +1,101 @@ + + + Nginx configuration file + nginx + nginx.conf + text/x-nginx-conf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nim.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nim.xml new file mode 100644 index 0000000..bfdd615 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nim.xml @@ -0,0 +1,211 @@ + + + Nim + nim + nimrod + *.nim + *.nimrod + text/x-nim + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nix.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nix.xml new file mode 100644 index 0000000..dd54d36 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nix.xml @@ -0,0 +1,258 @@ + + + Nix + nixos + nix + *.nix + text/x-nix + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nsis.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nsis.xml new file mode 100644 index 0000000..6c3a7be --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nsis.xml @@ -0,0 +1,59 @@ + + + NSIS + nsis + nsi + nsh + *.nsi + *.nsh + text/x-nsis + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nu.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nu.xml new file mode 100644 index 0000000..3265580 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/nu.xml @@ -0,0 +1,121 @@ + + + Nu + nu + *.nu + text/plain + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objective-c.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objective-c.xml new file mode 100644 index 0000000..0dc9328 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objective-c.xml @@ -0,0 +1,510 @@ + + + Objective-C + objective-c + objectivec + obj-c + objc + *.m + *.h + text/x-objective-c + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objectpascal.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objectpascal.xml new file mode 100644 index 0000000..0b72131 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/objectpascal.xml @@ -0,0 +1,142 @@ + + + ObjectPascal + objectpascal + *.pas + *.pp + *.inc + *.dpr + *.dpk + *.lpr + *.lpk + text/x-pascal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ocaml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ocaml.xml new file mode 100644 index 0000000..1770d1d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ocaml.xml @@ -0,0 +1,153 @@ + + + OCaml + ocaml + *.ml + *.mli + *.mll + *.mly + text/x-ocaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/octave.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/octave.xml new file mode 100644 index 0000000..0515d28 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/octave.xml @@ -0,0 +1,101 @@ + + + Octave + octave + *.m + text/octave + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/odin.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/odin.xml new file mode 100644 index 0000000..8a52949 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/odin.xml @@ -0,0 +1,127 @@ + + + Odin + odin + *.odin + text/odin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/onesenterprise.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/onesenterprise.xml new file mode 100644 index 0000000..530bad7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/onesenterprise.xml @@ -0,0 +1,92 @@ + + + OnesEnterprise + ones + onesenterprise + 1S + 1S:Enterprise + *.EPF + *.epf + *.ERF + *.erf + application/octet-stream + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openedge_abl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openedge_abl.xml new file mode 100644 index 0000000..04a80f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openedge_abl.xml @@ -0,0 +1,101 @@ + + + OpenEdge ABL + openedge + abl + progress + openedgeabl + *.p + *.cls + *.w + *.i + text/x-openedge + application/x-openedge + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openscad.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openscad.xml new file mode 100644 index 0000000..84d0fe1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/openscad.xml @@ -0,0 +1,96 @@ + + + OpenSCAD + openscad + *.scad + text/x-scad + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/org_mode.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/org_mode.xml new file mode 100644 index 0000000..259e54e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/org_mode.xml @@ -0,0 +1,329 @@ + + + Org Mode + org + orgmode + *.org + text/org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + 4 + + + + + + + + + + + + 2 + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pacmanconf.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pacmanconf.xml new file mode 100644 index 0000000..caf7236 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pacmanconf.xml @@ -0,0 +1,37 @@ + + + PacmanConf + pacmanconf + pacman.conf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/perl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/perl.xml new file mode 100644 index 0000000..8ac02ab --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/perl.xml @@ -0,0 +1,400 @@ + + + Perl + perl + pl + *.pl + *.pm + *.t + text/x-perl + application/x-perl + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/php.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/php.xml new file mode 100644 index 0000000..c9e22ea --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/php.xml @@ -0,0 +1,212 @@ + + + PHP + php + php3 + php4 + php5 + *.php + *.php[345] + *.inc + text/x-php + true + true + true + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pig.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pig.xml new file mode 100644 index 0000000..5acd773 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pig.xml @@ -0,0 +1,105 @@ + + + Pig + pig + *.pig + text/x-pig + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pkgconfig.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pkgconfig.xml new file mode 100644 index 0000000..875dcba --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pkgconfig.xml @@ -0,0 +1,73 @@ + + + PkgConfig + pkgconfig + *.pc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pl_pgsql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pl_pgsql.xml new file mode 100644 index 0000000..e3e813a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pl_pgsql.xml @@ -0,0 +1,119 @@ + + + PL/pgSQL + plpgsql + text/x-plpgsql + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plaintext.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plaintext.xml new file mode 100644 index 0000000..d5e3243 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plaintext.xml @@ -0,0 +1,21 @@ + + + plaintext + text + plain + no-highlight + *.txt + text/plain + -1 + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plutus_core.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plutus_core.xml new file mode 100644 index 0000000..4ff5a97 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/plutus_core.xml @@ -0,0 +1,105 @@ + + + Plutus Core + plutus-core + plc + *.plc + text/x-plutus-core + application/x-plutus-core + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pony.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pony.xml new file mode 100644 index 0000000..4efa9db --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/pony.xml @@ -0,0 +1,135 @@ + + + Pony + pony + *.pony + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postgresql_sql_dialect.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postgresql_sql_dialect.xml new file mode 100644 index 0000000..e901c18 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postgresql_sql_dialect.xml @@ -0,0 +1,155 @@ + + + PostgreSQL SQL dialect + postgresql + postgres + text/x-postgresql + true + true + + + + + + + + + + + + + + + + + + + 6 + 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 12 + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postscript.xml new file mode 100644 index 0000000..15a3422 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/postscript.xml @@ -0,0 +1,89 @@ + + + PostScript + postscript + postscr + *.ps + *.eps + application/postscript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/povray.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/povray.xml new file mode 100644 index 0000000..f37dab9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/povray.xml @@ -0,0 +1,58 @@ + + + POVRay + pov + *.pov + *.inc + text/x-povray + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powerquery.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powerquery.xml new file mode 100644 index 0000000..0ff1e35 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powerquery.xml @@ -0,0 +1,51 @@ + + + PowerQuery + powerquery + pq + *.pq + text/x-powerquery + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xml new file mode 100644 index 0000000..b63a150 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/powershell.xml @@ -0,0 +1,230 @@ + + + PowerShell + powershell + posh + ps1 + psm1 + psd1 + pwsh + *.ps1 + *.psm1 + *.psd1 + text/x-powershell + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prolog.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prolog.xml new file mode 100644 index 0000000..391bae3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prolog.xml @@ -0,0 +1,115 @@ + + + Prolog + prolog + *.ecl + *.prolog + *.pro + *.pl + text/x-prolog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promela.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promela.xml new file mode 100644 index 0000000..84558c3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promela.xml @@ -0,0 +1,119 @@ + + + + Promela + promela + *.pml + *.prom + *.prm + *.promela + *.pr + *.pm + text/x-promela + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promql.xml new file mode 100644 index 0000000..e95e333 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/promql.xml @@ -0,0 +1,123 @@ + + + PromQL + promql + *.promql + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/properties.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/properties.xml new file mode 100644 index 0000000..d5ae0a2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/properties.xml @@ -0,0 +1,45 @@ + + + properties + java-properties + *.properties + text/x-java-properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/protocol_buffer.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/protocol_buffer.xml new file mode 100644 index 0000000..157d321 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/protocol_buffer.xml @@ -0,0 +1,118 @@ + + + Protocol Buffer + protobuf + proto + *.proto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prql.xml new file mode 100644 index 0000000..21f21c6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/prql.xml @@ -0,0 +1,161 @@ + + + PRQL + prql + *.prql + application/prql + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xml new file mode 100644 index 0000000..ab375da --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/psl.xml @@ -0,0 +1,213 @@ + + + PSL + psl + *.psl + *.BATCH + *.TRIG + *.PROC + text/x-psl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/puppet.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/puppet.xml new file mode 100644 index 0000000..fbb587c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/puppet.xml @@ -0,0 +1,100 @@ + + + Puppet + puppet + *.pp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml new file mode 100644 index 0000000..eaa9c30 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python.xml @@ -0,0 +1,595 @@ + + + Python + python + py + sage + python3 + py3 + starlark + *.py + *.pyi + *.pyw + *.jy + *.sage + *.sc + SConstruct + SConscript + *.bzl + BUCK + BUILD + BUILD.bazel + WORKSPACE + WORKSPACE.bzlmod + WORKSPACE.bazel + MODULE.bazel + REPO.bazel + *.star + *.tac + text/x-python + application/x-python + text/x-python3 + application/x-python3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python_2.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python_2.xml new file mode 100644 index 0000000..3297a22 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/python_2.xml @@ -0,0 +1,356 @@ + + + Python 2 + python2 + py2 + text/x-python2 + application/x-python2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xml new file mode 100644 index 0000000..193fe18 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qbasic.xml @@ -0,0 +1,173 @@ + + + QBasic + qbasic + basic + *.BAS + *.bas + text/basic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qml.xml new file mode 100644 index 0000000..43eb3eb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/qml.xml @@ -0,0 +1,113 @@ + + + QML + qml + qbs + *.qml + *.qbs + application/x-qml + application/x-qt.qbs+qml + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/r.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/r.xml new file mode 100644 index 0000000..c1fba4e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/r.xml @@ -0,0 +1,128 @@ + + + R + splus + s + r + *.S + *.R + *.r + .Rhistory + .Rprofile + .Renviron + text/S-plus + text/S + text/x-r-source + text/x-r + text/x-R + text/x-r-history + text/x-r-profile + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/racket.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/racket.xml new file mode 100644 index 0000000..6cdd303 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/racket.xml @@ -0,0 +1,260 @@ + + + Racket + racket + rkt + *.rkt + *.rktd + *.rktl + text/x-racket + application/x-racket + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ragel.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ragel.xml new file mode 100644 index 0000000..69638d2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ragel.xml @@ -0,0 +1,149 @@ + + + Ragel + ragel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/react.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/react.xml new file mode 100644 index 0000000..a4109b0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/react.xml @@ -0,0 +1,236 @@ + + + react + jsx + react + *.jsx + *.react + text/jsx + text/typescript-jsx + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reasonml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reasonml.xml new file mode 100644 index 0000000..8b7bcc5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reasonml.xml @@ -0,0 +1,147 @@ + + + ReasonML + reason + reasonml + *.re + *.rei + text/x-reasonml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reg.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reg.xml new file mode 100644 index 0000000..501d380 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/reg.xml @@ -0,0 +1,68 @@ + + + reg + registry + *.reg + text/x-windows-registry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rego.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rego.xml new file mode 100644 index 0000000..517b713 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rego.xml @@ -0,0 +1,94 @@ + + + Rego + rego + *.rego + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rexx.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rexx.xml new file mode 100644 index 0000000..e682500 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rexx.xml @@ -0,0 +1,127 @@ + + + Rexx + rexx + arexx + *.rexx + *.rex + *.rx + *.arexx + text/x-rexx + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml new file mode 100644 index 0000000..6814ca1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rgbasm.xml @@ -0,0 +1,239 @@ + + + RGBDS Assembly + rgbasm + *.asm + 0.5 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml new file mode 100644 index 0000000..44454ea --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ring.xml @@ -0,0 +1,74 @@ + + + Ring + ring + *.ring + *.rh + *.rform + text/x-ring + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml new file mode 100644 index 0000000..c74cd2c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpgle.xml @@ -0,0 +1,176 @@ + + + RPGLE + SQLRPGLE + RPG IV + *.RPGLE + *.rpgle + *.SQLRPGLE + *.sqlrpgle + text/x-rpgle + text/x-sqlrpgle + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpm_spec.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpm_spec.xml new file mode 100644 index 0000000..8362772 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rpm_spec.xml @@ -0,0 +1,58 @@ + + + + RPMSpec + spec + *.spec + text/x-rpm-spec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ruby.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ruby.xml new file mode 100644 index 0000000..baa7e43 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ruby.xml @@ -0,0 +1,724 @@ + + + Ruby + rb + ruby + duby + *.rb + *.rbw + Rakefile + *.rake + *.gemspec + *.rbx + *.duby + Gemfile + Vagrantfile + text/x-ruby + application/x-ruby + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rust.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rust.xml new file mode 100644 index 0000000..083b96f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/rust.xml @@ -0,0 +1,375 @@ + + + Rust + rust + rs + *.rs + *.rs.in + text/rust + text/x-rust + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xml new file mode 100644 index 0000000..af1107b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sas.xml @@ -0,0 +1,191 @@ + + + SAS + sas + *.SAS + *.sas + text/x-sas + text/sas + application/x-sas + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sass.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sass.xml new file mode 100644 index 0000000..f801594 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sass.xml @@ -0,0 +1,362 @@ + + + Sass + sass + *.sass + text/x-sass + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scala.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scala.xml new file mode 100644 index 0000000..2f8ddd4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scala.xml @@ -0,0 +1,274 @@ + + + Scala + scala + *.scala + text/x-scala + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scheme.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scheme.xml new file mode 100644 index 0000000..0198bd7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scheme.xml @@ -0,0 +1,106 @@ + + + Scheme + scheme + scm + *.scm + *.ss + text/x-scheme + application/x-scheme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scilab.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scilab.xml new file mode 100644 index 0000000..9e10949 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scilab.xml @@ -0,0 +1,98 @@ + + + Scilab + scilab + *.sci + *.sce + *.tst + text/scilab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scss.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scss.xml new file mode 100644 index 0000000..ee060fc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/scss.xml @@ -0,0 +1,373 @@ + + + SCSS + scss + *.scss + text/x-scss + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sed.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sed.xml new file mode 100644 index 0000000..fd77d08 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sed.xml @@ -0,0 +1,92 @@ + + + + Sed + sed + gsed + ssed + *.sed + *.[gs]sed + text/x-sed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sieve.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sieve.xml new file mode 100644 index 0000000..fc60563 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sieve.xml @@ -0,0 +1,61 @@ + + + Sieve + sieve + *.siv + *.sieve + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smali.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smali.xml new file mode 100644 index 0000000..e468766 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smali.xml @@ -0,0 +1,73 @@ + + + + Smali + smali + *.smali + text/smali + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xml new file mode 100644 index 0000000..0027111 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smalltalk.xml @@ -0,0 +1,294 @@ + + + Smalltalk + smalltalk + squeak + st + *.st + text/x-smalltalk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smarty.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smarty.xml new file mode 100644 index 0000000..dd7752c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/smarty.xml @@ -0,0 +1,79 @@ + + + Smarty + smarty + *.tpl + application/x-smarty + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snbt.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snbt.xml new file mode 100644 index 0000000..fdb12d0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snbt.xml @@ -0,0 +1,58 @@ + + + + SNBT + snbt + *.snbt + text/snbt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snobol.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snobol.xml new file mode 100644 index 0000000..f53dbcb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/snobol.xml @@ -0,0 +1,95 @@ + + + Snobol + snobol + *.snobol + text/x-snobol + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/solidity.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/solidity.xml new file mode 100644 index 0000000..24c4ccb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/solidity.xml @@ -0,0 +1,291 @@ + + + Solidity + sol + solidity + *.sol + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sourcepawn.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sourcepawn.xml new file mode 100644 index 0000000..caca401 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sourcepawn.xml @@ -0,0 +1,59 @@ + + + SourcePawn + sp + *.sp + *.inc + text/x-sourcepawn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sparql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sparql.xml new file mode 100644 index 0000000..7dc65af --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sparql.xml @@ -0,0 +1,160 @@ + + + SPARQL + sparql + *.rq + *.sparql + application/sparql-query + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sql.xml new file mode 100644 index 0000000..b542b65 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/sql.xml @@ -0,0 +1,90 @@ + + + SQL + sql + *.sql + text/x-sql + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/squidconf.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/squidconf.xml new file mode 100644 index 0000000..cbd8dbc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/squidconf.xml @@ -0,0 +1,63 @@ + + + SquidConf + squidconf + squid.conf + squid + squid.conf + text/x-squidconf + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xml new file mode 100644 index 0000000..39cf4f2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/standard_ml.xml @@ -0,0 +1,548 @@ + + + Standard ML + sml + *.sml + *.sig + *.fun + text/x-standardml + application/x-standardml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stas.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stas.xml new file mode 100644 index 0000000..56b4f92 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stas.xml @@ -0,0 +1,85 @@ + + + stas + *.stas + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stylus.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stylus.xml new file mode 100644 index 0000000..c2d8807 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/stylus.xml @@ -0,0 +1,132 @@ + + + Stylus + stylus + *.styl + text/x-styl + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/swift.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/swift.xml new file mode 100644 index 0000000..416bf90 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/swift.xml @@ -0,0 +1,207 @@ + + + Swift + swift + *.swift + text/x-swift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemd.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemd.xml new file mode 100644 index 0000000..e31bfc2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemd.xml @@ -0,0 +1,63 @@ + + + SYSTEMD + systemd + *.automount + *.device + *.dnssd + *.link + *.mount + *.netdev + *.network + *.path + *.scope + *.service + *.slice + *.socket + *.swap + *.target + *.timer + text/plain + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemverilog.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemverilog.xml new file mode 100644 index 0000000..fac3da2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/systemverilog.xml @@ -0,0 +1,181 @@ + + + systemverilog + systemverilog + sv + *.sv + *.svh + text/x-systemverilog + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tablegen.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tablegen.xml new file mode 100644 index 0000000..a020ce8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tablegen.xml @@ -0,0 +1,69 @@ + + + TableGen + tablegen + *.td + text/x-tablegen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tal.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tal.xml new file mode 100644 index 0000000..a071d4c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tal.xml @@ -0,0 +1,43 @@ + + + + Tal + tal + uxntal + *.tal + text/x-uxntal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tasm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tasm.xml new file mode 100644 index 0000000..1347f53 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tasm.xml @@ -0,0 +1,135 @@ + + + TASM + tasm + *.asm + *.ASM + *.tasm + text/x-tasm + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcl.xml new file mode 100644 index 0000000..7ed69bc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcl.xml @@ -0,0 +1,272 @@ + + + Tcl + tcl + *.tcl + *.rvt + text/x-tcl + text/x-script.tcl + application/x-tcl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcsh.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcsh.xml new file mode 100644 index 0000000..9895643 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tcsh.xml @@ -0,0 +1,121 @@ + + + Tcsh + tcsh + csh + *.tcsh + *.csh + application/x-csh + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/termcap.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/termcap.xml new file mode 100644 index 0000000..e863bbd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/termcap.xml @@ -0,0 +1,75 @@ + + + Termcap + termcap + termcap + termcap.src + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terminfo.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terminfo.xml new file mode 100644 index 0000000..9e8f56e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terminfo.xml @@ -0,0 +1,84 @@ + + + Terminfo + terminfo + terminfo + terminfo.src + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terraform.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terraform.xml new file mode 100644 index 0000000..f8df6be --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/terraform.xml @@ -0,0 +1,149 @@ + + + Terraform + terraform + tf + hcl + *.tf + *.hcl + application/x-tf + application/x-terraform + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tex.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tex.xml new file mode 100644 index 0000000..809bb9a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tex.xml @@ -0,0 +1,113 @@ + + + TeX + tex + latex + *.tex + *.aux + *.toc + text/x-tex + text/x-latex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/thrift.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/thrift.xml new file mode 100644 index 0000000..f14257d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/thrift.xml @@ -0,0 +1,154 @@ + + + Thrift + thrift + *.thrift + application/x-thrift + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/toml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/toml.xml new file mode 100644 index 0000000..87bd19d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/toml.xml @@ -0,0 +1,45 @@ + + + TOML + toml + *.toml + Pipfile + poetry.lock + uv.lock + text/x-toml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tradingview.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tradingview.xml new file mode 100644 index 0000000..3671f61 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/tradingview.xml @@ -0,0 +1,81 @@ + + + TradingView + tradingview + tv + *.tv + text/x-tradingview + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/transact-sql.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/transact-sql.xml new file mode 100644 index 0000000..b0490aa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/transact-sql.xml @@ -0,0 +1,137 @@ + + + Transact-SQL + tsql + t-sql + text/x-tsql + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turing.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turing.xml new file mode 100644 index 0000000..4eab69b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turing.xml @@ -0,0 +1,82 @@ + + + Turing + turing + *.turing + *.tu + text/x-turing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turtle.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turtle.xml new file mode 100644 index 0000000..7c572f9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/turtle.xml @@ -0,0 +1,170 @@ + + + Turtle + turtle + *.ttl + text/turtle + application/x-turtle + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/twig.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/twig.xml new file mode 100644 index 0000000..de95c5f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/twig.xml @@ -0,0 +1,155 @@ + + + Twig + twig + *.twig + application/x-twig + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml new file mode 100644 index 0000000..9cb48c0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/txtpb.xml @@ -0,0 +1,162 @@ + + + Protocol Buffer Text Format + txtpb + *.txtpb + *.textproto + *.textpb + *.pbtxt + application/x-protobuf-text + false + false + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typescript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typescript.xml new file mode 100644 index 0000000..a3e3be2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typescript.xml @@ -0,0 +1,302 @@ + + + TypeScript + ts + tsx + typescript + *.ts + *.tsx + *.mts + *.cts + text/x-typescript + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscript.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscript.xml new file mode 100644 index 0000000..bc416d4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscript.xml @@ -0,0 +1,178 @@ + + + TypoScript + typoscript + *.ts + text/x-typoscript + true + 0.1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscriptcssdata.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscriptcssdata.xml new file mode 100644 index 0000000..62c42c1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscriptcssdata.xml @@ -0,0 +1,52 @@ + + + TypoScriptCssData + typoscriptcssdata + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscripthtmldata.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscripthtmldata.xml new file mode 100644 index 0000000..1b0af3a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typoscripthtmldata.xml @@ -0,0 +1,52 @@ + + + TypoScriptHtmlData + typoscripthtmldata + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typst.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typst.xml new file mode 100644 index 0000000..330dc40 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/typst.xml @@ -0,0 +1,108 @@ + + + + Typst + typst + *.typ + text/x-typst + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ucode.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ucode.xml new file mode 100644 index 0000000..054fa89 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/ucode.xml @@ -0,0 +1,147 @@ + + + ucode + *.uc + application/x.ucode + text/x.ucode + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v.xml new file mode 100644 index 0000000..e1af3d1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v.xml @@ -0,0 +1,355 @@ + + + V + v + vlang + *.v + *.vv + v.mod + text/x-v + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v_shell.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v_shell.xml new file mode 100644 index 0000000..34ce610 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/v_shell.xml @@ -0,0 +1,365 @@ + + + V shell + vsh + vshell + *.vsh + text/x-vsh + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vala.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vala.xml new file mode 100644 index 0000000..17c1acf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vala.xml @@ -0,0 +1,72 @@ + + + + Vala + vala + vapi + *.vala + *.vapi + text/x-vala + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vb_net.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vb_net.xml new file mode 100644 index 0000000..9f85afd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vb_net.xml @@ -0,0 +1,162 @@ + + + VB.net + vb.net + vbnet + *.vb + *.bas + text/x-vbnet + text/x-vba + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/verilog.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/verilog.xml new file mode 100644 index 0000000..cd4b9ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/verilog.xml @@ -0,0 +1,158 @@ + + + verilog + verilog + v + *.v + text/x-verilog + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhdl.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhdl.xml new file mode 100644 index 0000000..aa42044 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhdl.xml @@ -0,0 +1,171 @@ + + + VHDL + vhdl + *.vhdl + *.vhd + text/x-vhdl + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhs.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhs.xml new file mode 100644 index 0000000..ee84d12 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vhs.xml @@ -0,0 +1,48 @@ + + + VHS + vhs + tape + cassette + *.tape + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/viml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/viml.xml new file mode 100644 index 0000000..43e6bfa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/viml.xml @@ -0,0 +1,85 @@ + + + VimL + vim + *.vim + .vimrc + .exrc + .gvimrc + _vimrc + _exrc + _gvimrc + vimrc + gvimrc + text/x-vim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vue.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vue.xml new file mode 100644 index 0000000..e2f75e1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/vue.xml @@ -0,0 +1,295 @@ + + + vue + vue + vuejs + *.vue + text/x-vue + application/x-vue + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml new file mode 100644 index 0000000..4a7f7e4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wat.xml @@ -0,0 +1,149 @@ + + + WebAssembly Text Format + wast + wat + *.wat + *.wast + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wdte.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wdte.xml new file mode 100644 index 0000000..c663ee2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/wdte.xml @@ -0,0 +1,43 @@ + + + WDTE + *.wdte + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webgpu_shading_language.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webgpu_shading_language.xml new file mode 100644 index 0000000..ea2b6e1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webgpu_shading_language.xml @@ -0,0 +1,142 @@ + + + WebGPU Shading Language + wgsl + *.wgsl + text/wgsl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webvtt.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webvtt.xml new file mode 100644 index 0000000..08a7efc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/webvtt.xml @@ -0,0 +1,283 @@ + + + WebVTT + vtt + *.vtt + text/vtt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/whiley.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/whiley.xml new file mode 100644 index 0000000..1762c96 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/whiley.xml @@ -0,0 +1,57 @@ + + + Whiley + whiley + *.whiley + text/x-whiley + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xml.xml new file mode 100644 index 0000000..2c6a4d9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xml.xml @@ -0,0 +1,95 @@ + + + XML + xml + *.xml + *.xsl + *.rss + *.xslt + *.xsd + *.wsdl + *.wsf + *.svg + *.csproj + *.vcxproj + *.fsproj + text/xml + application/xml + image/svg+xml + application/rss+xml + application/atom+xml + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xorg.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xorg.xml new file mode 100644 index 0000000..53bf432 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/xorg.xml @@ -0,0 +1,35 @@ + + + Xorg + xorg.conf + xorg.conf + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yaml.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yaml.xml new file mode 100644 index 0000000..0707554 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yaml.xml @@ -0,0 +1,122 @@ + + + YAML + yaml + *.yaml + *.yml + text/x-yaml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yang.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yang.xml new file mode 100644 index 0000000..f3da7ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/yang.xml @@ -0,0 +1,99 @@ + + + YANG + yang + *.yang + application/yang + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/z80_assembly.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/z80_assembly.xml new file mode 100644 index 0000000..5bb77a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/z80_assembly.xml @@ -0,0 +1,74 @@ + + + Z80 Assembly + z80 + *.z80 + *.asm + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zed.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zed.xml new file mode 100644 index 0000000..929f495 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zed.xml @@ -0,0 +1,51 @@ + + + Zed + zed + *.zed + text/zed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zig.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zig.xml new file mode 100644 index 0000000..5617f91 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/embedded/zig.xml @@ -0,0 +1,187 @@ + + + Zig + zig + *.zig + *.zon + text/zig + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/gemtext.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/gemtext.go new file mode 100644 index 0000000..2fed8d6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/gemtext.go @@ -0,0 +1,37 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Gemtext lexer. +var Gemtext = Register(MustNewLexer( + &Config{ + Name: "Gemtext", + Aliases: []string{"gemtext", "gmi", "gmni", "gemini"}, + Filenames: []string{"*.gmi", "*.gmni", "*.gemini"}, + MimeTypes: []string{"text/gemini"}, + }, + gemtextRules, +)) + +func gemtextRules() Rules { + return Rules{ + "root": { + {`^(#[^#].+\r?\n)`, ByGroups(GenericHeading), nil}, + {`^(#{2,3}.+\r?\n)`, ByGroups(GenericSubheading), nil}, + {`^(\* )(.+\r?\n)`, ByGroups(Keyword, Text), nil}, + {`^(>)(.+\r?\n)`, ByGroups(Keyword, GenericEmph), nil}, + {"^(```\\r?\\n)([\\w\\W]*?)(^```)(.+\\r?\\n)?", ByGroups(String, Text, String, Comment), nil}, + { + "^(```)(\\w+)(\\r?\\n)([\\w\\W]*?)(^```)(.+\\r?\\n)?", + UsingByGroup(2, 4, String, String, String, Text, String, Comment), + nil, + }, + {"^(```)(.+\\r?\\n)([\\w\\W]*?)(^```)(.+\\r?\\n)?", ByGroups(String, String, Text, String, Comment), nil}, + {`^(=>)(\s*)([^\s]+)(\s*)$`, ByGroups(Keyword, Text, NameAttribute, Text), nil}, + {`^(=>)(\s*)([^\s]+)(\s+)(.+)$`, ByGroups(Keyword, Text, NameAttribute, Text, NameTag), nil}, + {`(.|(?:\r?\n))`, ByGroups(Text), nil}, + }, + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/genshi.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/genshi.go new file mode 100644 index 0000000..7f396f4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/genshi.go @@ -0,0 +1,118 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Genshi Text lexer. +var GenshiText = Register(MustNewLexer( + &Config{ + Name: "Genshi Text", + Aliases: []string{"genshitext"}, + Filenames: []string{}, + MimeTypes: []string{"application/x-genshi-text", "text/x-genshi"}, + }, + genshiTextRules, +)) + +func genshiTextRules() Rules { + return Rules{ + "root": { + {`[^#$\s]+`, Other, nil}, + {`^(\s*)(##.*)$`, ByGroups(Text, Comment), nil}, + {`^(\s*)(#)`, ByGroups(Text, CommentPreproc), Push("directive")}, + Include("variable"), + {`[#$\s]`, Other, nil}, + }, + "directive": { + {`\n`, Text, Pop(1)}, + {`(?:def|for|if)\s+.*`, Using("Python"), Pop(1)}, + {`(choose|when|with)([^\S\n]+)(.*)`, ByGroups(Keyword, Text, Using("Python")), Pop(1)}, + {`(choose|otherwise)\b`, Keyword, Pop(1)}, + {`(end\w*)([^\S\n]*)(.*)`, ByGroups(Keyword, Text, Comment), Pop(1)}, + }, + "variable": { + {`(?)`, ByGroups(CommentPreproc, Using("Python"), CommentPreproc), nil}, + {`<\s*(script|style)\s*.*?>.*?<\s*/\1\s*>`, Other, nil}, + {`<\s*py:[a-zA-Z0-9]+`, NameTag, Push("pytag")}, + {`<\s*[a-zA-Z0-9:.]+`, NameTag, Push("tag")}, + Include("variable"), + {`[<$]`, Other, nil}, + }, + "pytag": { + {`\s+`, Text, nil}, + {`[\w:-]+\s*=`, NameAttribute, Push("pyattr")}, + {`/?\s*>`, NameTag, Pop(1)}, + }, + "pyattr": { + {`(")(.*?)(")`, ByGroups(LiteralString, Using("Python"), LiteralString), Pop(1)}, + {`(')(.*?)(')`, ByGroups(LiteralString, Using("Python"), LiteralString), Pop(1)}, + {`[^\s>]+`, LiteralString, Pop(1)}, + }, + "tag": { + {`\s+`, Text, nil}, + {`py:[\w-]+\s*=`, NameAttribute, Push("pyattr")}, + {`[\w:-]+\s*=`, NameAttribute, Push("attr")}, + {`/?\s*>`, NameTag, Pop(1)}, + }, + "attr": { + {`"`, LiteralString, Push("attr-dstring")}, + {`'`, LiteralString, Push("attr-sstring")}, + {`[^\s>]*`, LiteralString, Pop(1)}, + }, + "attr-dstring": { + {`"`, LiteralString, Pop(1)}, + Include("strings"), + {`'`, LiteralString, nil}, + }, + "attr-sstring": { + {`'`, LiteralString, Pop(1)}, + Include("strings"), + {`'`, LiteralString, nil}, + }, + "strings": { + {`[^"'$]+`, LiteralString, nil}, + Include("variable"), + }, + "variable": { + {`(?>=|<<|>>|<=|>=|&\^=|&\^|\+=|-=|\*=|/=|%=|&=|\|=|&&|\|\||<-|\+\+|--|==|!=|:=|\.\.\.|[+\-*/%&])`, Operator, nil}, + {`([a-zA-Z_]\w*)(\s*)(\()`, ByGroups(NameFunction, UsingSelf("root"), Punctuation), nil}, + {`[|^<>=!()\[\]{}.,;:~]`, Punctuation, nil}, + {`[^\W\d]\w*`, NameOther, nil}, + }, + } +} + +var GoHTMLTemplate = Register(DelegatingLexer(HTML, MustNewXMLLexer( + embedded, + "embedded/go_template.xml", +).SetConfig( + &Config{ + Name: "Go HTML Template", + Aliases: []string{"go-html-template"}, + }, +))) + +var GoTextTemplate = Register(MustNewXMLLexer( + embedded, + "embedded/go_template.xml", +).SetConfig( + &Config{ + Name: "Go Text Template", + Aliases: []string{"go-text-template"}, + }, +)) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/haxe.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/haxe.go new file mode 100644 index 0000000..9a72de8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/haxe.go @@ -0,0 +1,647 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Haxe lexer. +var Haxe = Register(MustNewLexer( + &Config{ + Name: "Haxe", + Aliases: []string{"hx", "haxe", "hxsl"}, + Filenames: []string{"*.hx", "*.hxsl"}, + MimeTypes: []string{"text/haxe", "text/x-haxe", "text/x-hx"}, + DotAll: true, + }, + haxeRules, +)) + +func haxeRules() Rules { + return Rules{ + "root": { + Include("spaces"), + Include("meta"), + {`(?:package)\b`, KeywordNamespace, Push("semicolon", "package")}, + {`(?:import)\b`, KeywordNamespace, Push("semicolon", "import")}, + {`(?:using)\b`, KeywordNamespace, Push("semicolon", "using")}, + {`(?:extern|private)\b`, KeywordDeclaration, nil}, + {`(?:abstract)\b`, KeywordDeclaration, Push("abstract")}, + {`(?:class|interface)\b`, KeywordDeclaration, Push("class")}, + {`(?:enum)\b`, KeywordDeclaration, Push("enum")}, + {`(?:typedef)\b`, KeywordDeclaration, Push("typedef")}, + {`(?=.)`, Text, Push("expr-statement")}, + }, + "spaces": { + {`\s+`, Text, nil}, + {`//[^\n\r]*`, CommentSingle, nil}, + {`/\*.*?\*/`, CommentMultiline, nil}, + {`(#)(if|elseif|else|end|error)\b`, CommentPreproc, MutatorFunc(haxePreProcMutator)}, + }, + "string-single-interpol": { + {`\$\{`, LiteralStringInterpol, Push("string-interpol-close", "expr")}, + {`\$\$`, LiteralStringEscape, nil}, + {`\$(?=(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+))`, LiteralStringInterpol, Push("ident")}, + Include("string-single"), + }, + "string-single": { + {`'`, LiteralStringSingle, Pop(1)}, + {`\\.`, LiteralStringEscape, nil}, + {`.`, LiteralStringSingle, nil}, + }, + "string-double": { + {`"`, LiteralStringDouble, Pop(1)}, + {`\\.`, LiteralStringEscape, nil}, + {`.`, LiteralStringDouble, nil}, + }, + "string-interpol-close": { + {`\$(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, LiteralStringInterpol, nil}, + {`\}`, LiteralStringInterpol, Pop(1)}, + }, + "package": { + Include("spaces"), + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, nil}, + {`\.`, Punctuation, Push("import-ident")}, + Default(Pop(1)), + }, + "import": { + Include("spaces"), + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, nil}, + {`\*`, Keyword, nil}, + {`\.`, Punctuation, Push("import-ident")}, + {`in`, KeywordNamespace, Push("ident")}, + Default(Pop(1)), + }, + "import-ident": { + Include("spaces"), + {`\*`, Keyword, Pop(1)}, + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, Pop(1)}, + }, + "using": { + Include("spaces"), + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameNamespace, nil}, + {`\.`, Punctuation, Push("import-ident")}, + Default(Pop(1)), + }, + "preproc-error": { + {`\s+`, CommentPreproc, nil}, + {`'`, LiteralStringSingle, Push("#pop", "string-single")}, + {`"`, LiteralStringDouble, Push("#pop", "string-double")}, + Default(Pop(1)), + }, + "preproc-expr": { + {`\s+`, CommentPreproc, nil}, + {`\!`, CommentPreproc, nil}, + {`\(`, CommentPreproc, Push("#pop", "preproc-parenthesis")}, + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, CommentPreproc, Pop(1)}, + {`\.[0-9]+`, LiteralNumberFloat, nil}, + {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, nil}, + {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, nil}, + {`[0-9]+\.[0-9]+`, LiteralNumberFloat, nil}, + {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, nil}, + {`0x[0-9a-fA-F]+`, LiteralNumberHex, nil}, + {`[0-9]+`, LiteralNumberInteger, nil}, + {`'`, LiteralStringSingle, Push("#pop", "string-single")}, + {`"`, LiteralStringDouble, Push("#pop", "string-double")}, + }, + "preproc-parenthesis": { + {`\s+`, CommentPreproc, nil}, + {`\)`, CommentPreproc, Pop(1)}, + Default(Push("preproc-expr-in-parenthesis")), + }, + "preproc-expr-chain": { + {`\s+`, CommentPreproc, nil}, + {`(?:%=|&=|\|=|\^=|\+=|\-=|\*=|/=|<<=|>\s*>\s*=|>\s*>\s*>\s*=|==|!=|<=|>\s*=|&&|\|\||<<|>>>|>\s*>|\.\.\.|<|>|%|&|\||\^|\+|\*|/|\-|=>|=)`, CommentPreproc, Push("#pop", "preproc-expr-in-parenthesis")}, + Default(Pop(1)), + }, + "preproc-expr-in-parenthesis": { + {`\s+`, CommentPreproc, nil}, + {`\!`, CommentPreproc, nil}, + {`\(`, CommentPreproc, Push("#pop", "preproc-expr-chain", "preproc-parenthesis")}, + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, CommentPreproc, Push("#pop", "preproc-expr-chain")}, + {`\.[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")}, + {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")}, + {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")}, + {`[0-9]+\.[0-9]+`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")}, + {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, Push("#pop", "preproc-expr-chain")}, + {`0x[0-9a-fA-F]+`, LiteralNumberHex, Push("#pop", "preproc-expr-chain")}, + {`[0-9]+`, LiteralNumberInteger, Push("#pop", "preproc-expr-chain")}, + {`'`, LiteralStringSingle, Push("#pop", "preproc-expr-chain", "string-single")}, + {`"`, LiteralStringDouble, Push("#pop", "preproc-expr-chain", "string-double")}, + }, + "abstract": { + Include("spaces"), + Default(Pop(1), Push("abstract-body"), Push("abstract-relation"), Push("abstract-opaque"), Push("type-param-constraint"), Push("type-name")), + }, + "abstract-body": { + Include("spaces"), + {`\{`, Punctuation, Push("#pop", "class-body")}, + }, + "abstract-opaque": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "parenthesis-close", "type")}, + Default(Pop(1)), + }, + "abstract-relation": { + Include("spaces"), + {`(?:to|from)`, KeywordDeclaration, Push("type")}, + {`,`, Punctuation, nil}, + Default(Pop(1)), + }, + "meta": { + Include("spaces"), + {`@`, NameDecorator, Push("meta-body", "meta-ident", "meta-colon")}, + }, + "meta-colon": { + Include("spaces"), + {`:`, NameDecorator, Pop(1)}, + Default(Pop(1)), + }, + "meta-ident": { + Include("spaces"), + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameDecorator, Pop(1)}, + }, + "meta-body": { + Include("spaces"), + {`\(`, NameDecorator, Push("#pop", "meta-call")}, + Default(Pop(1)), + }, + "meta-call": { + Include("spaces"), + {`\)`, NameDecorator, Pop(1)}, + Default(Pop(1), Push("meta-call-sep"), Push("expr")), + }, + "meta-call-sep": { + Include("spaces"), + {`\)`, NameDecorator, Pop(1)}, + {`,`, Punctuation, Push("#pop", "meta-call")}, + }, + "typedef": { + Include("spaces"), + Default(Pop(1), Push("typedef-body"), Push("type-param-constraint"), Push("type-name")), + }, + "typedef-body": { + Include("spaces"), + {`=`, Operator, Push("#pop", "optional-semicolon", "type")}, + }, + "enum": { + Include("spaces"), + Default(Pop(1), Push("enum-body"), Push("bracket-open"), Push("type-param-constraint"), Push("type-name")), + }, + "enum-body": { + Include("spaces"), + Include("meta"), + {`\}`, Punctuation, Pop(1)}, + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("enum-member", "type-param-constraint")}, + }, + "enum-member": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "semicolon", "flag", "function-param")}, + Default(Pop(1), Push("semicolon"), Push("flag")), + }, + "class": { + Include("spaces"), + Default(Pop(1), Push("class-body"), Push("bracket-open"), Push("extends"), Push("type-param-constraint"), Push("type-name")), + }, + "extends": { + Include("spaces"), + {`(?:extends|implements)\b`, KeywordDeclaration, Push("type")}, + {`,`, Punctuation, nil}, + Default(Pop(1)), + }, + "bracket-open": { + Include("spaces"), + {`\{`, Punctuation, Pop(1)}, + }, + "bracket-close": { + Include("spaces"), + {`\}`, Punctuation, Pop(1)}, + }, + "class-body": { + Include("spaces"), + Include("meta"), + {`\}`, Punctuation, Pop(1)}, + {`(?:static|public|private|override|dynamic|inline|macro)\b`, KeywordDeclaration, nil}, + Default(Push("class-member")), + }, + "class-member": { + Include("spaces"), + {`(var)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "var")}, + {`(function)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "class-method")}, + }, + "function-local": { + Include("spaces"), + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameFunction, Push("#pop", "optional-expr", "flag", "function-param", "parenthesis-open", "type-param-constraint")}, + Default(Pop(1), Push("optional-expr"), Push("flag"), Push("function-param"), Push("parenthesis-open"), Push("type-param-constraint")), + }, + "optional-expr": { + Include("spaces"), + Include("expr"), + Default(Pop(1)), + }, + "class-method": { + Include("spaces"), + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, NameFunction, Push("#pop", "optional-expr", "flag", "function-param", "parenthesis-open", "type-param-constraint")}, + }, + "function-param": { + Include("spaces"), + {`\)`, Punctuation, Pop(1)}, + {`\?`, Punctuation, nil}, + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "function-param-sep", "assign", "flag")}, + }, + "function-param-sep": { + Include("spaces"), + {`\)`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "function-param")}, + }, + "prop-get-set": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "parenthesis-close", "prop-get-set-opt", "comma", "prop-get-set-opt")}, + Default(Pop(1)), + }, + "prop-get-set-opt": { + Include("spaces"), + {`(?:default|null|never|dynamic|get|set)\b`, Keyword, Pop(1)}, + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Text, Pop(1)}, + }, + "expr-statement": { + Include("spaces"), + Default(Pop(1), Push("optional-semicolon"), Push("expr")), + }, + "expr": { + Include("spaces"), + {`@`, NameDecorator, Push("#pop", "optional-expr", "meta-body", "meta-ident", "meta-colon")}, + {`(?:\+\+|\-\-|~(?!/)|!|\-)`, Operator, nil}, + {`\(`, Punctuation, Push("#pop", "expr-chain", "parenthesis")}, + {`(?:static|public|private|override|dynamic|inline)\b`, KeywordDeclaration, nil}, + {`(?:function)\b`, KeywordDeclaration, Push("#pop", "expr-chain", "function-local")}, + {`\{`, Punctuation, Push("#pop", "expr-chain", "bracket")}, + {`(?:true|false|null)\b`, KeywordConstant, Push("#pop", "expr-chain")}, + {`(?:this)\b`, Keyword, Push("#pop", "expr-chain")}, + {`(?:cast)\b`, Keyword, Push("#pop", "expr-chain", "cast")}, + {`(?:try)\b`, Keyword, Push("#pop", "catch", "expr")}, + {`(?:var)\b`, KeywordDeclaration, Push("#pop", "var")}, + {`(?:new)\b`, Keyword, Push("#pop", "expr-chain", "new")}, + {`(?:switch)\b`, Keyword, Push("#pop", "switch")}, + {`(?:if)\b`, Keyword, Push("#pop", "if")}, + {`(?:do)\b`, Keyword, Push("#pop", "do")}, + {`(?:while)\b`, Keyword, Push("#pop", "while")}, + {`(?:for)\b`, Keyword, Push("#pop", "for")}, + {`(?:untyped|throw)\b`, Keyword, nil}, + {`(?:return)\b`, Keyword, Push("#pop", "optional-expr")}, + {`(?:macro)\b`, Keyword, Push("#pop", "macro")}, + {`(?:continue|break)\b`, Keyword, Pop(1)}, + {`(?:\$\s*[a-z]\b|\$(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)))`, Name, Push("#pop", "dollar")}, + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "expr-chain")}, + {`\.[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")}, + {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")}, + {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")}, + {`[0-9]+\.[0-9]+`, LiteralNumberFloat, Push("#pop", "expr-chain")}, + {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, Push("#pop", "expr-chain")}, + {`0x[0-9a-fA-F]+`, LiteralNumberHex, Push("#pop", "expr-chain")}, + {`[0-9]+`, LiteralNumberInteger, Push("#pop", "expr-chain")}, + {`'`, LiteralStringSingle, Push("#pop", "expr-chain", "string-single-interpol")}, + {`"`, LiteralStringDouble, Push("#pop", "expr-chain", "string-double")}, + {`~/(\\\\|\\/|[^/\n])*/[gimsu]*`, LiteralStringRegex, Push("#pop", "expr-chain")}, + {`\[`, Punctuation, Push("#pop", "expr-chain", "array-decl")}, + }, + "expr-chain": { + Include("spaces"), + {`(?:\+\+|\-\-)`, Operator, nil}, + {`(?:%=|&=|\|=|\^=|\+=|\-=|\*=|/=|<<=|>\s*>\s*=|>\s*>\s*>\s*=|==|!=|<=|>\s*=|&&|\|\||<<|>>>|>\s*>|\.\.\.|<|>|%|&|\||\^|\+|\*|/|\-|=>|=)`, Operator, Push("#pop", "expr")}, + {`(?:in)\b`, Keyword, Push("#pop", "expr")}, + {`\?`, Operator, Push("#pop", "expr", "ternary", "expr")}, + {`(\.)((?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+))`, ByGroups(Punctuation, Name), nil}, + {`\[`, Punctuation, Push("array-access")}, + {`\(`, Punctuation, Push("call")}, + Default(Pop(1)), + }, + "macro": { + Include("spaces"), + Include("meta"), + {`:`, Punctuation, Push("#pop", "type")}, + {`(?:extern|private)\b`, KeywordDeclaration, nil}, + {`(?:abstract)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "abstract")}, + {`(?:class|interface)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "macro-class")}, + {`(?:enum)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "enum")}, + {`(?:typedef)\b`, KeywordDeclaration, Push("#pop", "optional-semicolon", "typedef")}, + Default(Pop(1), Push("expr")), + }, + "macro-class": { + {`\{`, Punctuation, Push("#pop", "class-body")}, + Include("class"), + }, + "cast": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "parenthesis-close", "cast-type", "expr")}, + Default(Pop(1), Push("expr")), + }, + "cast-type": { + Include("spaces"), + {`,`, Punctuation, Push("#pop", "type")}, + Default(Pop(1)), + }, + "catch": { + Include("spaces"), + {`(?:catch)\b`, Keyword, Push("expr", "function-param", "parenthesis-open")}, + Default(Pop(1)), + }, + "do": { + Include("spaces"), + Default(Pop(1), Push("do-while"), Push("expr")), + }, + "do-while": { + Include("spaces"), + {`(?:while)\b`, Keyword, Push("#pop", "parenthesis", "parenthesis-open")}, + }, + "while": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "expr", "parenthesis")}, + }, + "for": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "expr", "parenthesis")}, + }, + "if": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "else", "optional-semicolon", "expr", "parenthesis")}, + }, + "else": { + Include("spaces"), + {`(?:else)\b`, Keyword, Push("#pop", "expr")}, + Default(Pop(1)), + }, + "switch": { + Include("spaces"), + Default(Pop(1), Push("switch-body"), Push("bracket-open"), Push("expr")), + }, + "switch-body": { + Include("spaces"), + {`(?:case|default)\b`, Keyword, Push("case-block", "case")}, + {`\}`, Punctuation, Pop(1)}, + }, + "case": { + Include("spaces"), + {`:`, Punctuation, Pop(1)}, + Default(Pop(1), Push("case-sep"), Push("case-guard"), Push("expr")), + }, + "case-sep": { + Include("spaces"), + {`:`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "case")}, + }, + "case-guard": { + Include("spaces"), + {`(?:if)\b`, Keyword, Push("#pop", "parenthesis", "parenthesis-open")}, + Default(Pop(1)), + }, + "case-block": { + Include("spaces"), + {`(?!(?:case|default)\b|\})`, Keyword, Push("expr-statement")}, + Default(Pop(1)), + }, + "new": { + Include("spaces"), + Default(Pop(1), Push("call"), Push("parenthesis-open"), Push("type")), + }, + "array-decl": { + Include("spaces"), + {`\]`, Punctuation, Pop(1)}, + Default(Pop(1), Push("array-decl-sep"), Push("expr")), + }, + "array-decl-sep": { + Include("spaces"), + {`\]`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "array-decl")}, + }, + "array-access": { + Include("spaces"), + Default(Pop(1), Push("array-access-close"), Push("expr")), + }, + "array-access-close": { + Include("spaces"), + {`\]`, Punctuation, Pop(1)}, + }, + "comma": { + Include("spaces"), + {`,`, Punctuation, Pop(1)}, + }, + "colon": { + Include("spaces"), + {`:`, Punctuation, Pop(1)}, + }, + "semicolon": { + Include("spaces"), + {`;`, Punctuation, Pop(1)}, + }, + "optional-semicolon": { + Include("spaces"), + {`;`, Punctuation, Pop(1)}, + Default(Pop(1)), + }, + "ident": { + Include("spaces"), + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Pop(1)}, + }, + "dollar": { + Include("spaces"), + {`\{`, Punctuation, Push("#pop", "expr-chain", "bracket-close", "expr")}, + Default(Pop(1), Push("expr-chain")), + }, + "type-name": { + Include("spaces"), + {`_*[A-Z]\w*`, Name, Pop(1)}, + }, + "type-full-name": { + Include("spaces"), + {`\.`, Punctuation, Push("ident")}, + Default(Pop(1)), + }, + "type": { + Include("spaces"), + {`\?`, Punctuation, nil}, + {`(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "type-check", "type-full-name")}, + {`\{`, Punctuation, Push("#pop", "type-check", "type-struct")}, + {`\(`, Punctuation, Push("#pop", "type-check", "type-parenthesis")}, + }, + "type-parenthesis": { + Include("spaces"), + Default(Pop(1), Push("parenthesis-close"), Push("type")), + }, + "type-check": { + Include("spaces"), + {`->`, Punctuation, Push("#pop", "type")}, + {`<(?!=)`, Punctuation, Push("type-param")}, + Default(Pop(1)), + }, + "type-struct": { + Include("spaces"), + {`\}`, Punctuation, Pop(1)}, + {`\?`, Punctuation, nil}, + {`>`, Punctuation, Push("comma", "type")}, + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "type-struct-sep", "type", "colon")}, + Include("class-body"), + }, + "type-struct-sep": { + Include("spaces"), + {`\}`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "type-struct")}, + }, + "type-param-type": { + {`\.[0-9]+`, LiteralNumberFloat, Pop(1)}, + {`[0-9]+[eE][+\-]?[0-9]+`, LiteralNumberFloat, Pop(1)}, + {`[0-9]+\.[0-9]*[eE][+\-]?[0-9]+`, LiteralNumberFloat, Pop(1)}, + {`[0-9]+\.[0-9]+`, LiteralNumberFloat, Pop(1)}, + {`[0-9]+\.(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)|\.\.)`, LiteralNumberFloat, Pop(1)}, + {`0x[0-9a-fA-F]+`, LiteralNumberHex, Pop(1)}, + {`[0-9]+`, LiteralNumberInteger, Pop(1)}, + {`'`, LiteralStringSingle, Push("#pop", "string-single")}, + {`"`, LiteralStringDouble, Push("#pop", "string-double")}, + {`~/(\\\\|\\/|[^/\n])*/[gim]*`, LiteralStringRegex, Pop(1)}, + {`\[`, Operator, Push("#pop", "array-decl")}, + Include("type"), + }, + "type-param": { + Include("spaces"), + Default(Pop(1), Push("type-param-sep"), Push("type-param-type")), + }, + "type-param-sep": { + Include("spaces"), + {`>`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "type-param")}, + }, + "type-param-constraint": { + Include("spaces"), + {`<(?!=)`, Punctuation, Push("#pop", "type-param-constraint-sep", "type-param-constraint-flag", "type-name")}, + Default(Pop(1)), + }, + "type-param-constraint-sep": { + Include("spaces"), + {`>`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "type-param-constraint-sep", "type-param-constraint-flag", "type-name")}, + }, + "type-param-constraint-flag": { + Include("spaces"), + {`:`, Punctuation, Push("#pop", "type-param-constraint-flag-type")}, + Default(Pop(1)), + }, + "type-param-constraint-flag-type": { + Include("spaces"), + {`\(`, Punctuation, Push("#pop", "type-param-constraint-flag-type-sep", "type")}, + Default(Pop(1), Push("type")), + }, + "type-param-constraint-flag-type-sep": { + Include("spaces"), + {`\)`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("type")}, + }, + "parenthesis": { + Include("spaces"), + Default(Pop(1), Push("parenthesis-close"), Push("flag"), Push("expr")), + }, + "parenthesis-open": { + Include("spaces"), + {`\(`, Punctuation, Pop(1)}, + }, + "parenthesis-close": { + Include("spaces"), + {`\)`, Punctuation, Pop(1)}, + }, + "var": { + Include("spaces"), + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Text, Push("#pop", "var-sep", "assign", "flag", "prop-get-set")}, + }, + "var-sep": { + Include("spaces"), + {`,`, Punctuation, Push("#pop", "var")}, + Default(Pop(1)), + }, + "assign": { + Include("spaces"), + {`=`, Operator, Push("#pop", "expr")}, + Default(Pop(1)), + }, + "flag": { + Include("spaces"), + {`:`, Punctuation, Push("#pop", "type")}, + Default(Pop(1)), + }, + "ternary": { + Include("spaces"), + {`:`, Operator, Pop(1)}, + }, + "call": { + Include("spaces"), + {`\)`, Punctuation, Pop(1)}, + Default(Pop(1), Push("call-sep"), Push("expr")), + }, + "call-sep": { + Include("spaces"), + {`\)`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "call")}, + }, + "bracket": { + Include("spaces"), + {`(?!(?:\$\s*[a-z]\b|\$(?!(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+))))(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Push("#pop", "bracket-check")}, + {`'`, LiteralStringSingle, Push("#pop", "bracket-check", "string-single")}, + {`"`, LiteralStringDouble, Push("#pop", "bracket-check", "string-double")}, + Default(Pop(1), Push("block")), + }, + "bracket-check": { + Include("spaces"), + {`:`, Punctuation, Push("#pop", "object-sep", "expr")}, + Default(Pop(1), Push("block"), Push("optional-semicolon"), Push("expr-chain")), + }, + "block": { + Include("spaces"), + {`\}`, Punctuation, Pop(1)}, + Default(Push("expr-statement")), + }, + "object": { + Include("spaces"), + {`\}`, Punctuation, Pop(1)}, + Default(Pop(1), Push("object-sep"), Push("expr"), Push("colon"), Push("ident-or-string")), + }, + "ident-or-string": { + Include("spaces"), + {`(?!(?:function|class|static|var|if|else|while|do|for|break|return|continue|extends|implements|import|switch|case|default|public|private|try|untyped|catch|new|this|throw|extern|enum|in|interface|cast|override|dynamic|typedef|package|inline|using|null|true|false|abstract)\b)(?:_*[a-z]\w*|_+[0-9]\w*|_*[A-Z]\w*|_+|\$\w+)`, Name, Pop(1)}, + {`'`, LiteralStringSingle, Push("#pop", "string-single")}, + {`"`, LiteralStringDouble, Push("#pop", "string-double")}, + }, + "object-sep": { + Include("spaces"), + {`\}`, Punctuation, Pop(1)}, + {`,`, Punctuation, Push("#pop", "object")}, + }, + } +} + +func haxePreProcMutator(state *LexerState) error { + stack, ok := state.Get("haxe-pre-proc").([][]string) + if !ok { + stack = [][]string{} + } + + proc := state.Groups[2] + switch proc { + case "if": + stack = append(stack, state.Stack) + case "else", "elseif": + if len(stack) > 0 { + state.Stack = stack[len(stack)-1] + } + case "end": + if len(stack) > 0 { + stack = stack[:len(stack)-1] + } + } + + if proc == "if" || proc == "elseif" { + state.Stack = append(state.Stack, "preproc-expr") + } + + if proc == "error" { + state.Stack = append(state.Stack, "preproc-error") + } + state.Set("haxe-pre-proc", stack) + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/html.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/html.go new file mode 100644 index 0000000..c858042 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/html.go @@ -0,0 +1,8 @@ +package lexers + +import ( + "github.com/alecthomas/chroma/v2" +) + +// HTML lexer. +var HTML = chroma.MustNewXMLLexer(embedded, "embedded/html.xml") diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/http.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/http.go new file mode 100644 index 0000000..b57cb1b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/http.go @@ -0,0 +1,131 @@ +package lexers + +import ( + "strings" + + . "github.com/alecthomas/chroma/v2" // nolint +) + +// HTTP lexer. +var HTTP = Register(httpBodyContentTypeLexer(MustNewLexer( + &Config{ + Name: "HTTP", + Aliases: []string{"http"}, + Filenames: []string{}, + MimeTypes: []string{}, + NotMultiline: true, + DotAll: true, + }, + httpRules, +))) + +func httpRules() Rules { + return Rules{ + "root": { + {`(GET|POST|PUT|DELETE|HEAD|OPTIONS|TRACE|PATCH|CONNECT)( +)([^ ]+)( +)(HTTP)(/)([123](?:\.[01])?)(\r?\n|\Z)`, ByGroups(NameFunction, Text, NameNamespace, Text, KeywordReserved, Operator, LiteralNumber, Text), Push("headers")}, + {`(HTTP)(/)([123](?:\.[01])?)( +)(\d{3})( *)([^\r\n]*)(\r?\n|\Z)`, ByGroups(KeywordReserved, Operator, LiteralNumber, Text, LiteralNumber, Text, NameException, Text), Push("headers")}, + }, + "headers": { + {`([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|\Z)`, EmitterFunc(httpHeaderBlock), nil}, + {`([\t ]+)([^\r\n]+)(\r?\n|\Z)`, EmitterFunc(httpContinuousHeaderBlock), nil}, + {`\r?\n`, Text, Push("content")}, + }, + "content": { + {`.+`, EmitterFunc(httpContentBlock), nil}, + }, + } +} + +func httpContentBlock(groups []string, state *LexerState) Iterator { + tokens := []Token{ + {Generic, groups[0]}, + } + return Literator(tokens...) +} + +func httpHeaderBlock(groups []string, state *LexerState) Iterator { + tokens := []Token{ + {Name, groups[1]}, + {Text, groups[2]}, + {Operator, groups[3]}, + {Text, groups[4]}, + {Literal, groups[5]}, + {Text, groups[6]}, + } + return Literator(tokens...) +} + +func httpContinuousHeaderBlock(groups []string, state *LexerState) Iterator { + tokens := []Token{ + {Text, groups[1]}, + {Literal, groups[2]}, + {Text, groups[3]}, + } + return Literator(tokens...) +} + +func httpBodyContentTypeLexer(lexer Lexer) Lexer { return &httpBodyContentTyper{lexer} } + +type httpBodyContentTyper struct{ Lexer } + +func (d *httpBodyContentTyper) Tokenise(options *TokeniseOptions, text string) (Iterator, error) { // nolint: gocognit + var contentType string + var isContentType bool + var subIterator Iterator + + it, err := d.Lexer.Tokenise(options, text) + if err != nil { + return nil, err + } + + return func() Token { + token := it() + + if token == EOF { + if subIterator != nil { + return subIterator() + } + return EOF + } + + switch { + case token.Type == Name && strings.ToLower(token.Value) == "content-type": + { + isContentType = true + } + case token.Type == Literal && isContentType: + { + isContentType = false + contentType = strings.TrimSpace(token.Value) + pos := strings.Index(contentType, ";") + if pos > 0 { + contentType = strings.TrimSpace(contentType[:pos]) + } + } + case token.Type == Generic && contentType != "": + { + lexer := MatchMimeType(contentType) + + // application/calendar+xml can be treated as application/xml + // if there's not a better match. + if lexer == nil && strings.Contains(contentType, "+") { + slashPos := strings.Index(contentType, "/") + plusPos := strings.LastIndex(contentType, "+") + contentType = contentType[:slashPos+1] + contentType[plusPos+1:] + lexer = MatchMimeType(contentType) + } + + if lexer == nil { + token.Type = Text + } else { + subIterator, err = lexer.Tokenise(nil, token.Value) + if err != nil { + panic(err) + } + return EOF + } + } + } + return token + }, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/lexers.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/lexers.go new file mode 100644 index 0000000..bef42ed --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/lexers.go @@ -0,0 +1,85 @@ +package lexers + +import ( + "embed" + "io/fs" + + "github.com/alecthomas/chroma/v2" +) + +//go:embed embedded +var embedded embed.FS + +// GlobalLexerRegistry is the global LexerRegistry of Lexers. +var GlobalLexerRegistry = func() *chroma.LexerRegistry { + reg := chroma.NewLexerRegistry() + // index(reg) + paths, err := fs.Glob(embedded, "embedded/*.xml") + if err != nil { + panic(err) + } + for _, path := range paths { + reg.Register(chroma.MustNewXMLLexer(embedded, path)) + } + return reg +}() + +// Names of all lexers, optionally including aliases. +func Names(withAliases bool) []string { + return GlobalLexerRegistry.Names(withAliases) +} + +// Aliases of all the lexers, and skip those lexers who do not have any aliases, +// or show their name instead +func Aliases(skipWithoutAliases bool) []string { + return GlobalLexerRegistry.Aliases(skipWithoutAliases) +} + +// Get a Lexer by name, alias or file extension. +// +// Note that this if there isn't an exact match on name or alias, this will +// call Match(), so it is not efficient. +func Get(name string) chroma.Lexer { + return GlobalLexerRegistry.Get(name) +} + +// MatchMimeType attempts to find a lexer for the given MIME type. +func MatchMimeType(mimeType string) chroma.Lexer { + return GlobalLexerRegistry.MatchMimeType(mimeType) +} + +// Match returns the first lexer matching filename. +// +// Note that this iterates over all file patterns in all lexers, so it's not +// particularly efficient. +func Match(filename string) chroma.Lexer { + return GlobalLexerRegistry.Match(filename) +} + +// Register a Lexer with the global registry. +func Register(lexer chroma.Lexer) chroma.Lexer { + return GlobalLexerRegistry.Register(lexer) +} + +// Analyse text content and return the "best" lexer.. +func Analyse(text string) chroma.Lexer { + return GlobalLexerRegistry.Analyse(text) +} + +// PlaintextRules is used for the fallback lexer as well as the explicit +// plaintext lexer. +func PlaintextRules() chroma.Rules { + return chroma.Rules{ + "root": []chroma.Rule{ + {`.+`, chroma.Text, nil}, + {`\n`, chroma.Text, nil}, + }, + } +} + +// Fallback lexer if no other is found. +var Fallback chroma.Lexer = chroma.MustNewLexer(&chroma.Config{ + Name: "fallback", + Filenames: []string{"*"}, + Priority: -1, +}, PlaintextRules) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markdown.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markdown.go new file mode 100644 index 0000000..bcd5b17 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markdown.go @@ -0,0 +1,46 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Markdown lexer. +var Markdown = Register(MustNewLexer( + &Config{ + Name: "markdown", + Aliases: []string{"md", "mkd"}, + Filenames: []string{"*.md", "*.mkd", "*.markdown"}, + MimeTypes: []string{"text/x-markdown"}, + }, + markdownRules, +)) + +func markdownRules() Rules { + return Rules{ + "root": { + {`^(#[^#].+\n)`, ByGroups(GenericHeading), nil}, + {`^(#{2,6}.+\n)`, ByGroups(GenericSubheading), nil}, + {`^(\s*)([*-] )(\[[ xX]\])( .+\n)`, ByGroups(Text, Keyword, Keyword, UsingSelf("inline")), nil}, + {`^(\s*)([*-])(\s)(.+\n)`, ByGroups(Text, Keyword, Text, UsingSelf("inline")), nil}, + {`^(\s*)([0-9]+\.)( .+\n)`, ByGroups(Text, Keyword, UsingSelf("inline")), nil}, + {`^(\s*>\s)(.+\n)`, ByGroups(Keyword, GenericEmph), nil}, + {"^(```\\n)([\\w\\W]*?)(^```$)", ByGroups(String, Text, String), nil}, + { + "^(```)(\\w+)(\\n)([\\w\\W]*?)(^```$)", + UsingByGroup(2, 4, String, String, String, Text, String), + nil, + }, + Include("inline"), + }, + "inline": { + {`\\.`, Text, nil}, + {`(\s)(\*|_)((?:(?!\2).)*)(\2)((?=\W|\n))`, ByGroups(Text, GenericEmph, GenericEmph, GenericEmph, Text), nil}, + {`(\s)((\*\*|__).*?)\3((?=\W|\n))`, ByGroups(Text, GenericStrong, GenericStrong, Text), nil}, + {`(\s)(~~[^~]+~~)((?=\W|\n))`, ByGroups(Text, GenericDeleted, Text), nil}, + {"`[^`]+`", LiteralStringBacktick, nil}, + {`[@#][\w/:]+`, NameEntity, nil}, + {`(!?\[)([^]]+)(\])(\()([^)]+)(\))`, ByGroups(Text, NameTag, Text, Text, NameAttribute, Text), nil}, + {`.|\n`, Text, nil}, + }, + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markless.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markless.go new file mode 100644 index 0000000..508513d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/markless.go @@ -0,0 +1,168 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Markless lexer. +var Markless = Register(MustNewLexer( + &Config{ + Name: "Markless", + Aliases: []string{"mess"}, + Filenames: []string{"*.mess", "*.markless"}, + MimeTypes: []string{"text/x-markless"}, + }, + marklessRules, +)) + +func marklessRules() Rules { + return Rules{ + "root": { + Include("block"), + }, + // Block directives + "block": { + Include("header"), + Include("ordered-list"), + Include("unordered-list"), + Include("code-block"), + Include("blockquote"), + Include("blockquote-header"), + Include("align"), + Include("comment"), + Include("instruction"), + Include("embed"), + Include("footnote"), + Include("horizontal-rule"), + Include("paragraph"), + }, + "header": { + {`(# )(.*)$`, ByGroups(Keyword, GenericHeading), Push("inline")}, + {`(##+)(.*)$`, ByGroups(Keyword, GenericSubheading), Push("inline")}, + }, + "ordered-list": { + {`([0-9]+\.)`, Keyword, nil}, + }, + "unordered-list": { + {`(- )`, Keyword, nil}, + }, + "code-block": { + {`(::+)( *)(\w*)([^\n]*)(\n)([\w\W]*?)(^\1$)`, UsingByGroup(3, 6, Keyword, TextWhitespace, NameFunction, String, TextWhitespace, Text, Keyword), nil}, + }, + "blockquote": { + {`(\| )(.*)$`, ByGroups(Keyword, GenericInserted), nil}, + }, + "blockquote-header": { + {`(~ )([^|\n]+)(\| )(.*?\n)`, ByGroups(Keyword, NameEntity, Keyword, GenericInserted), Push("inline-blockquote")}, + {`(~ )(.*)$`, ByGroups(Keyword, NameEntity), nil}, + }, + "inline-blockquote": { + {`^( +)(\| )(.*$)`, ByGroups(TextWhitespace, Keyword, GenericInserted), nil}, + Default(Pop(1)), + }, + "align": { + {`(\|\|)|(\|<)|(\|>)|(><)`, Keyword, nil}, + }, + "comment": { + {`(;[; ]).*?$`, CommentSingle, nil}, + }, + "instruction": { + {`(! )([^ ]+)(.+?)$`, ByGroups(Keyword, NameFunction, NameVariable), nil}, + }, + "embed": { + {`(\[ )([^ ]+)( )([^,]+)`, ByGroups(Keyword, NameFunction, TextWhitespace, String), Push("embed-options")}, + }, + "embed-options": { + {`\\.`, Text, nil}, + {`,`, Punctuation, nil}, + {`\]?$`, Keyword, Pop(1)}, + // Generic key or key/value pair + {`( *)([^, \]]+)([^,\]]+)?`, ByGroups(TextWhitespace, NameFunction, String), nil}, + {`.`, Text, nil}, + }, + "footnote": { + {`(\[)([0-9]+)(\])`, ByGroups(Keyword, NameVariable, Keyword), Push("inline")}, + }, + "horizontal-rule": { + {`(==+)$`, LiteralOther, nil}, + }, + "paragraph": { + {` *`, TextWhitespace, Push("inline")}, + }, + // Inline directives + "inline": { + Include("escapes"), + Include("dashes"), + Include("newline"), + Include("italic"), + Include("underline"), + Include("bold"), + Include("strikethrough"), + Include("code"), + Include("compound"), + Include("footnote-reference"), + Include("subtext"), + Include("subtext"), + Include("url"), + {`.`, Text, nil}, + {`\n`, TextWhitespace, Pop(1)}, + }, + "escapes": { + {`\\.`, Text, nil}, + }, + "dashes": { + {`-{2,3}`, TextPunctuation, nil}, + }, + "newline": { + {`-/-`, TextWhitespace, nil}, + }, + "italic": { + {`(//)(.*?)(\1)`, ByGroups(Keyword, GenericEmph, Keyword), nil}, + }, + "underline": { + {`(__)(.*?)(\1)`, ByGroups(Keyword, GenericUnderline, Keyword), nil}, + }, + "bold": { + {`(\*\*)(.*?)(\1)`, ByGroups(Keyword, GenericStrong, Keyword), nil}, + }, + "strikethrough": { + {`(<-)(.*?)(->)`, ByGroups(Keyword, GenericDeleted, Keyword), nil}, + }, + "code": { + {"(``+)(.*?)(\\1)", ByGroups(Keyword, LiteralStringBacktick, Keyword), nil}, + }, + "compound": { + {`(''+)(.*?)(''\()`, ByGroups(Keyword, UsingSelf("inline"), Keyword), Push("compound-options")}, + }, + "compound-options": { + {`\\.`, Text, nil}, + {`,`, Punctuation, nil}, + {`\)`, Keyword, Pop(1)}, + // Hex Color + {` *#[0-9A-Fa-f]{3,6} *`, LiteralNumberHex, nil}, + // Named Color + {` *(indian-red|light-coral|salmon|dark-salmon|light-salmon|crimson|red|firebrick|dark-red|pink|light-pink|hot-pink|deep-pink|medium-violet-red|pale-violet-red|coral|tomato|orange-red|dark-orange|orange|gold|yellow|light-yellow|lemon-chiffon|light-goldenrod-yellow|papayawhip|moccasin|peachpuff|pale-goldenrod|khaki|dark-khaki|lavender|thistle|plum|violet|orchid|fuchsia|magenta|medium-orchid|medium-purple|rebecca-purple|blue-violet|dark-violet|dark-orchid|dark-magenta|purple|indigo|slate-blue|dark-slate-blue|medium-slate-blue|green-yellow|chartreuse|lawn-green|lime|lime-green|pale-green|light-green|medium-spring-green|spring-green|medium-sea-green|sea-green|forest-green|green|dark-green|yellow-green|olive-drab|olive|dark-olive-green|medium-aquamarine|dark-sea-green|light-sea-green|dark-cyan|teal|aqua|cyan|light-cyan|pale-turquoise|aquamarine|turquoise|medium-turquoise|dark-turquoise|cadet-blue|steel-blue|light-steel-blue|powder-blue|light-blue|sky-blue|light-sky-blue|deep-sky-blue|dodger-blue|cornflower-blue|royal-blue|blue|medium-blue|dark-blue|navy|midnight-blue|cornsilk|blanched-almond|bisque|navajo-white|wheat|burlywood|tan|rosy-brown|sandy-brown|goldenrod|dark-goldenrod|peru|chocolate|saddle-brown|sienna|brown|maroon|white|snow|honeydew|mintcream|azure|alice-blue|ghost-white|white-smoke|seashell|beige|oldlace|floral-white|ivory|antique-white|linen|lavenderblush|mistyrose|gainsboro|light-gray|silver|dark-gray|gray|dim-gray|light-slate-gray|slate-gray|dark-slate-gray) *`, LiteralOther, nil}, + // Named size + {` *(microscopic|tiny|small|normal|big|large|huge|gigantic) *`, NameTag, nil}, + // Options + {` *(bold|italic|underline|strikethrough|subtext|supertext|spoiler) *`, NameBuiltin, nil}, + // URL. Note the missing ) and , in the match. + {` *\w[-\w+.]*://[\w$\-_.+!*'(&/:;=?@z%#\\]+ *`, String, nil}, + // Generic key or key/value pair + {`( *)([^, )]+)( [^,)]+)?`, ByGroups(TextWhitespace, NameFunction, String), nil}, + {`.`, Text, nil}, + }, + "footnote-reference": { + {`(\[)([0-9]+)(\])`, ByGroups(Keyword, NameVariable, Keyword), nil}, + }, + "subtext": { + {`(v\()(.*?)(\))`, ByGroups(Keyword, UsingSelf("inline"), Keyword), nil}, + }, + "supertext": { + {`(\^\()(.*?)(\))`, ByGroups(Keyword, UsingSelf("inline"), Keyword), nil}, + }, + "url": { + {`\w[-\w+.]*://[\w\$\-_.+!*'()&,/:;=?@z%#\\]+`, String, nil}, + }, + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/mysql.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/mysql.go new file mode 100644 index 0000000..32e94c2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/mysql.go @@ -0,0 +1,33 @@ +package lexers + +import ( + "regexp" +) + +var ( + mysqlAnalyserNameBetweenBacktickRe = regexp.MustCompile("`[a-zA-Z_]\\w*`") + mysqlAnalyserNameBetweenBracketRe = regexp.MustCompile(`\[[a-zA-Z_]\w*\]`) +) + +func init() { // nolint: gochecknoinits + Get("mysql"). + SetAnalyser(func(text string) float32 { + nameBetweenBacktickCount := len(mysqlAnalyserNameBetweenBacktickRe.FindAllString(text, -1)) + nameBetweenBracketCount := len(mysqlAnalyserNameBetweenBracketRe.FindAllString(text, -1)) + + var result float32 + + // Same logic as above in the TSQL analysis. + dialectNameCount := nameBetweenBacktickCount + nameBetweenBracketCount + if dialectNameCount >= 1 && nameBetweenBacktickCount >= (2*nameBetweenBracketCount) { + // Found at least twice as many `name` as [name]. + result += 0.5 + } else if nameBetweenBacktickCount > nameBetweenBracketCount { + result += 0.2 + } else if nameBetweenBacktickCount > 0 { + result += 0.1 + } + + return result + }) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/php.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/php.go new file mode 100644 index 0000000..ff82f6e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/php.go @@ -0,0 +1,37 @@ +package lexers + +import ( + "strings" + + . "github.com/alecthomas/chroma/v2" // nolint +) + +// phtml lexer is PHP in HTML. +var _ = Register(DelegatingLexer(HTML, MustNewLexer( + &Config{ + Name: "PHTML", + Aliases: []string{"phtml"}, + Filenames: []string{"*.phtml", "*.php", "*.php[345]", "*.inc"}, + MimeTypes: []string{"application/x-php", "application/x-httpd-php", "application/x-httpd-php3", "application/x-httpd-php4", "application/x-httpd-php5", "text/x-php"}, + DotAll: true, + CaseInsensitive: true, + EnsureNL: true, + Priority: 2, + }, + func() Rules { + return Get("PHP").(*RegexLexer).MustRules(). + Rename("root", "php"). + Merge(Rules{ + "root": { + {`<\?(php)?`, CommentPreproc, Push("php")}, + {`[^<]+`, Other, nil}, + {`<`, Other, nil}, + }, + }) + }, +).SetAnalyser(func(text string) float32 { + if strings.Contains(text, ">|>|»|\)|\]|\})` + colonPairPattern = `(?:)(?\w[\w'-]*)(?` + colonPairOpeningBrackets + `)` + colonPairLookahead = `(?=(:['\w-]+` + + colonPairOpeningBrackets + `.+?` + colonPairClosingBrackets + `)?` + namePattern = `(?:(?!` + colonPairPattern + `)(?:::|[\w':-]))+` + variablePattern = `[$@%&]+[.^:?=!~]?` + namePattern + globalVariablePattern = `[$@%&]+\*` + namePattern + ) + + keywords := []string{ + `BEGIN`, `CATCH`, `CHECK`, `CLOSE`, `CONTROL`, `DOC`, `END`, `ENTER`, `FIRST`, `INIT`, + `KEEP`, `LAST`, `LEAVE`, `NEXT`, `POST`, `PRE`, `QUIT`, `UNDO`, `anon`, `augment`, `but`, + `class`, `constant`, `default`, `does`, `else`, `elsif`, `enum`, `for`, `gather`, `given`, + `grammar`, `has`, `if`, `import`, `is`, `of`, `let`, `loop`, `made`, `make`, `method`, + `module`, `multi`, `my`, `need`, `orwith`, `our`, `proceed`, `proto`, `repeat`, `require`, + `where`, `return`, `return-rw`, `returns`, `->`, `-->`, `role`, `state`, `sub`, `no`, + `submethod`, `subset`, `succeed`, `supersede`, `try`, `unit`, `unless`, `until`, + `use`, `when`, `while`, `with`, `without`, `export`, `native`, `repr`, `required`, `rw`, + `symbol`, `default`, `cached`, `DEPRECATED`, `dynamic`, `hidden-from-backtrace`, `nodal`, + `pure`, `raw`, `start`, `react`, `supply`, `whenever`, `also`, `rule`, `token`, `regex`, + `dynamic-scope`, `built`, `temp`, + } + + keywordsPattern := Words(`(?)`, `(>=)`, `minmax`, `notandthen`, `S`, + } + + wordOperatorsPattern := Words(`(?<=^|\b|\s)`, `(?=$|\b|\s)`, wordOperators...) + + operators := []string{ + `++`, `--`, `-`, `**`, `!`, `+`, `~`, `?`, `+^`, `~^`, `?^`, `^`, `*`, `/`, `%`, `%%`, `+&`, + `+<`, `+>`, `~&`, `~<`, `~>`, `?&`, `+|`, `+^`, `~|`, `~^`, `?`, `?|`, `?^`, `&`, `^`, + `<=>`, `^…^`, `^…`, `…^`, `…`, `...`, `...^`, `^...`, `^...^`, `..`, `..^`, `^..`, `^..^`, + `::=`, `:=`, `!=`, `==`, `<=`, `<`, `>=`, `>`, `~~`, `===`, `&&`, `||`, `|`, `^^`, `//`, + `??`, `!!`, `^fff^`, `^ff^`, `<==`, `==>`, `<<==`, `==>>`, `=>`, `=`, `<<`, `«`, `>>`, `»`, + `,`, `>>.`, `».`, `.&`, `.=`, `.^`, `.?`, `.+`, `.*`, `.`, `∘`, `∩`, `⊍`, `∪`, `⊎`, `∖`, + `⊖`, `≠`, `≤`, `≥`, `=:=`, `=~=`, `≅`, `∈`, `∉`, `≡`, `≢`, `∋`, `∌`, `⊂`, `⊄`, `⊆`, `⊈`, + `⊃`, `⊅`, `⊇`, `⊉`, `:`, `!!!`, `???`, `¯`, `×`, `÷`, `−`, `⁺`, `⁻`, + } + + operatorsPattern := Words(``, ``, operators...) + + builtinTypes := []string{ + `False`, `True`, `Order`, `More`, `Less`, `Same`, `Any`, `Array`, `Associative`, `AST`, + `atomicint`, `Attribute`, `Backtrace`, `Backtrace::Frame`, `Bag`, `Baggy`, `BagHash`, + `Blob`, `Block`, `Bool`, `Buf`, `Callable`, `CallFrame`, `Cancellation`, `Capture`, + `CArray`, `Channel`, `Code`, `compiler`, `Complex`, `ComplexStr`, `CompUnit`, + `CompUnit::PrecompilationRepository`, `CompUnit::Repository`, `Empty`, + `CompUnit::Repository::FileSystem`, `CompUnit::Repository::Installation`, `Cool`, + `CurrentThreadScheduler`, `CX::Warn`, `CX::Take`, `CX::Succeed`, `CX::Return`, `CX::Redo`, + `CX::Proceed`, `CX::Next`, `CX::Last`, `CX::Emit`, `CX::Done`, `Cursor`, `Date`, `Dateish`, + `DateTime`, `Distribution`, `Distribution::Hash`, `Distribution::Locally`, + `Distribution::Path`, `Distribution::Resource`, `Distro`, `Duration`, `Encoding`, + `Encoding::GlobalLexerRegistry`, `Endian`, `Enumeration`, `Exception`, `Failure`, `FatRat`, `Grammar`, + `Hash`, `HyperWhatever`, `Instant`, `Int`, `int`, `int16`, `int32`, `int64`, `int8`, `str`, + `IntStr`, `IO`, `IO::ArgFiles`, `IO::CatHandle`, `IO::Handle`, `IO::Notification`, + `IO::Notification::Change`, `IO::Path`, `IO::Path::Cygwin`, `IO::Path::Parts`, + `IO::Path::QNX`, `IO::Path::Unix`, `IO::Path::Win32`, `IO::Pipe`, `IO::Socket`, + `IO::Socket::Async`, `IO::Socket::Async::ListenSocket`, `IO::Socket::INET`, `IO::Spec`, + `IO::Spec::Cygwin`, `IO::Spec::QNX`, `IO::Spec::Unix`, `IO::Spec::Win32`, `IO::Special`, + `Iterable`, `Iterator`, `Junction`, `Kernel`, `Label`, `List`, `Lock`, `Lock::Async`, + `Lock::ConditionVariable`, `long`, `longlong`, `Macro`, `Map`, `Match`, + `Metamodel::AttributeContainer`, `Metamodel::C3MRO`, `Metamodel::ClassHOW`, + `Metamodel::ConcreteRoleHOW`, `Metamodel::CurriedRoleHOW`, `Metamodel::DefiniteHOW`, + `Metamodel::Documenting`, `Metamodel::EnumHOW`, `Metamodel::Finalization`, + `Metamodel::MethodContainer`, `Metamodel::Mixins`, `Metamodel::MROBasedMethodDispatch`, + `Metamodel::MultipleInheritance`, `Metamodel::Naming`, `Metamodel::Primitives`, + `Metamodel::PrivateMethodContainer`, `Metamodel::RoleContainer`, `Metamodel::RolePunning`, + `Metamodel::Stashing`, `Metamodel::Trusting`, `Metamodel::Versioning`, `Method`, `Mix`, + `MixHash`, `Mixy`, `Mu`, `NFC`, `NFD`, `NFKC`, `NFKD`, `Nil`, `Num`, `num32`, `num64`, + `Numeric`, `NumStr`, `ObjAt`, `Order`, `Pair`, `Parameter`, `Perl`, `Pod::Block`, + `Pod::Block::Code`, `Pod::Block::Comment`, `Pod::Block::Declarator`, `Pod::Block::Named`, + `Pod::Block::Para`, `Pod::Block::Table`, `Pod::Heading`, `Pod::Item`, `Pointer`, + `Positional`, `PositionalBindFailover`, `Proc`, `Proc::Async`, `Promise`, `Proxy`, + `PseudoStash`, `QuantHash`, `RaceSeq`, `Raku`, `Range`, `Rat`, `Rational`, `RatStr`, + `Real`, `Regex`, `Routine`, `Routine::WrapHandle`, `Scalar`, `Scheduler`, `Semaphore`, + `Seq`, `Sequence`, `Set`, `SetHash`, `Setty`, `Signature`, `size_t`, `Slip`, `Stash`, + `Str`, `StrDistance`, `Stringy`, `Sub`, `Submethod`, `Supplier`, `Supplier::Preserving`, + `Supply`, `Systemic`, `Tap`, `Telemetry`, `Telemetry::Instrument::Thread`, + `Telemetry::Instrument::ThreadPool`, `Telemetry::Instrument::Usage`, `Telemetry::Period`, + `Telemetry::Sampler`, `Thread`, `Test`, `ThreadPoolScheduler`, `UInt`, `uint16`, `uint32`, + `uint64`, `uint8`, `Uni`, `utf8`, `ValueObjAt`, `Variable`, `Version`, `VM`, `Whatever`, + `WhateverCode`, `WrapHandle`, `NativeCall`, + // Pragmas + `precompilation`, `experimental`, `worries`, `MONKEY-TYPING`, `MONKEY-SEE-NO-EVAL`, + `MONKEY-GUTS`, `fatal`, `lib`, `isms`, `newline`, `nqp`, `soft`, + `strict`, `trace`, `variables`, + } + + builtinTypesPattern := Words(`(? 0 { + if tokenClass == rakuPod { + match, err := podRegex.FindRunesMatchStartingAt(text, searchPos+nChars) + if err == nil { + closingChars = match.Runes() + nextClosePos = match.Index + } else { + nextClosePos = -1 + } + } else { + nextClosePos = indexAt(text, closingChars, searchPos+nChars) + } + + nextOpenPos := indexAt(text, openingChars, searchPos+nChars) + + switch { + case nextClosePos == -1: + nextClosePos = len(text) + nestingLevel = 0 + case nextOpenPos != -1 && nextOpenPos < nextClosePos: + nestingLevel++ + nChars = len(openingChars) + searchPos = nextOpenPos + default: // next_close_pos < next_open_pos + nestingLevel-- + nChars = len(closingChars) + searchPos = nextClosePos + } + } + + endPos = nextClosePos + } + + if endPos < 0 { + // if we didn't find a closer, just highlight the + // rest of the text in this class + endPos = len(text) + } + + adverbre := regexp.MustCompile(`:to\b|:heredoc\b`) + var heredocTerminator []rune + var endHeredocPos int + if adverbre.MatchString(string(adverbs)) { + if endPos != len(text) { + heredocTerminator = text[state.Pos:endPos] + nChars = len(heredocTerminator) + } else { + endPos = state.Pos + 1 + heredocTerminator = []rune{} + nChars = 0 + } + + if nChars > 0 { + endHeredocPos = indexAt(text[endPos:], heredocTerminator, 0) + if endHeredocPos > -1 { + endPos += endHeredocPos + } else { + endPos = len(text) + } + } + } + + textBetweenBrackets := string(text[state.Pos:endPos]) + switch tokenClass { + case rakuPod, rakuPodDeclaration, rakuNameAttribute: + state.NamedGroups[`value`] = textBetweenBrackets + state.NamedGroups[`closing_delimiters`] = string(closingChars) + case rakuQuote: + if len(heredocTerminator) > 0 { + // Length of heredoc terminator + closing chars + `;` + heredocFristPunctuationLen := nChars + len(openingChars) + 1 + + state.NamedGroups[`opening_delimiters`] = string(openingChars) + + string(text[state.Pos:state.Pos+heredocFristPunctuationLen]) + + state.NamedGroups[`value`] = + string(text[state.Pos+heredocFristPunctuationLen : endPos]) + + if endHeredocPos > -1 { + state.NamedGroups[`closing_delimiters`] = string(heredocTerminator) + } + } else { + state.NamedGroups[`value`] = textBetweenBrackets + if nChars > 0 { + state.NamedGroups[`closing_delimiters`] = string(closingChars) + } + } + default: + state.Groups = []string{state.Groups[0] + string(text[state.Pos:endPos+nChars])} + } + + state.Pos = endPos + nChars + + return nil + } + } + + // Raku rules + // Empty capture groups are placeholders and will be replaced by mutators + // DO NOT REMOVE THEM! + return Rules{ + "root": { + // Placeholder, will be overwritten by mutators, DO NOT REMOVE! + {`\A\z`, nil, nil}, + Include("common"), + {`{`, Punctuation, Push(`root`)}, + {`\(`, Punctuation, Push(`root`)}, + {`[)}]`, Punctuation, Pop(1)}, + {`;`, Punctuation, nil}, + {`\[|\]`, Operator, nil}, + {`.+?`, Text, nil}, + }, + "common": { + {`^#![^\n]*$`, CommentHashbang, nil}, + Include("pod"), + // Multi-line, Embedded comment + { + "#`(?(?" + bracketsPattern + `)\k*)`, + CommentMultiline, + findBrackets(rakuMultilineComment), + }, + {`#[^\n]*$`, CommentSingle, nil}, + // /regex/ + { + `(?<=(?:^|\(|=|:|~~|\[|{|,|=>)\s*)(/)(?!\]|\))((?:\\\\|\\/|.)*?)((?>)(\S+?)(<<)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + {`(»)(\S+?)(«)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + // Hyperoperator | «*« + {`(<<)(\S+?)(<<)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + {`(«)(\S+?)(«)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + // Hyperoperator | »*» + {`(>>)(\S+?)(>>)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + {`(»)(\S+?)(»)`, ByGroups(Operator, UsingSelf("root"), Operator), nil}, + // <> + {`(?>)[^\n])+?[},;] *\n)(?!(?:(?!>>).)+?>>\S+?>>)`, Punctuation, Push("<<")}, + // «quoted words» + {`(? operators | something < onething > something + { + `(?<=[$@%&]?\w[\w':-]* +)(<=?)( *[^ ]+? *)(>=?)(?= *[$@%&]?\w[\w':-]*)`, + ByGroups(Operator, UsingSelf("root"), Operator), + nil, + }, + // + { + `(?])+?)(>)(?!\s*(?:\d+|\.(?:Int|Numeric)|[$@%]\*?\w[\w':-]*[^(]|\s+\[))`, + ByGroups(Punctuation, String, Punctuation), + nil, + }, + {`C?X::['\w:-]+`, NameException, nil}, + Include("metaoperator"), + // Pair | key => value + { + `(\w[\w'-]*)(\s*)(=>)`, + ByGroups(String, Text, Operator), + nil, + }, + Include("colon-pair"), + // Token + { + `(?<=(?:^|\s)(?:regex|token|rule)(\s+))` + namePattern + colonPairLookahead + `\s*[({])`, + NameFunction, + Push("token", "name-adverb"), + }, + // Substitution + {`(?<=^|\b|\s)(?(?:qq|q|Q))(?(?::?(?:heredoc|to|qq|ww|q|w|s|a|h|f|c|b|to|v|x))*)(?\s*)(?(?[^0-9a-zA-Z:\s])\k*)`, + EmitterFunc(quote), + findBrackets(rakuQuote), + }, + // Function + { + `\b` + namePattern + colonPairLookahead + `\()`, + NameFunction, + Push("name-adverb"), + }, + // Method + { + `(?(?[^\w:\s])\k*)`, + ByGroupNames( + map[string]Emitter{ + `opening_delimiters`: Punctuation, + `delimiter`: nil, + }, + ), + findBrackets(rakuMatchRegex), + }, + }, + "substitution": { + Include("colon-pair-attribute"), + // Substitution | s{regex} = value + { + `(?(?` + bracketsPattern + `)\k*)`, + ByGroupNames(map[string]Emitter{ + `opening_delimiters`: Punctuation, + `delimiter`: nil, + }), + findBrackets(rakuMatchRegex), + }, + // Substitution | s/regex/string/ + { + `(?[^\w:\s])`, + Punctuation, + findBrackets(rakuSubstitutionRegex), + }, + }, + "number": { + {`0_?[0-7]+(_[0-7]+)*`, LiteralNumberOct, nil}, + {`0x[0-9A-Fa-f]+(_[0-9A-Fa-f]+)*`, LiteralNumberHex, nil}, + {`0b[01]+(_[01]+)*`, LiteralNumberBin, nil}, + { + `(?i)(\d*(_\d*)*\.\d+(_\d*)*|\d+(_\d*)*\.\d+(_\d*)*)(e[+-]?\d+)?`, + LiteralNumberFloat, + nil, + }, + {`(?i)\d+(_\d*)*e[+-]?\d+(_\d*)*`, LiteralNumberFloat, nil}, + {`(?<=\d+)i`, NameConstant, nil}, + {`\d+(_\d+)*`, LiteralNumberInteger, nil}, + }, + "name-adverb": { + Include("colon-pair-attribute-keyvalue"), + Default(Pop(1)), + }, + "colon-pair": { + // :key(value) + {colonPairPattern, colonPair(String), findBrackets(rakuNameAttribute)}, + // :123abc + { + `(:)(\d+)(\w[\w'-]*)`, + ByGroups(Punctuation, UsingSelf("number"), String), + nil, + }, + // :key + {`(:)(!?)(\w[\w'-]*)`, ByGroups(Punctuation, Operator, String), nil}, + {`\s+`, Text, nil}, + }, + "colon-pair-attribute": { + // :key(value) + {colonPairPattern, colonPair(NameAttribute), findBrackets(rakuNameAttribute)}, + // :123abc + { + `(:)(\d+)(\w[\w'-]*)`, + ByGroups(Punctuation, UsingSelf("number"), NameAttribute), + nil, + }, + // :key + {`(:)(!?)(\w[\w'-]*)`, ByGroups(Punctuation, Operator, NameAttribute), nil}, + {`\s+`, Text, nil}, + }, + "colon-pair-attribute-keyvalue": { + // :key(value) + {colonPairPattern, colonPair(NameAttribute), findBrackets(rakuNameAttribute)}, + }, + "escape-qq": { + { + `(? + { + `(?`), + tokenType: Punctuation, + stateName: `root`, + pushState: true, + }), + }, + // {code} + Include(`closure`), + // Properties + {`(:)(\w+)`, ByGroups(Punctuation, NameAttribute), nil}, + // Operator + {`\|\||\||&&|&|\.\.|\*\*|%%|%|:|!|<<|«|>>|»|\+|\*\*|\*|\?|=|~|<~~>`, Operator, nil}, + // Anchors + {`\^\^|\^|\$\$|\$`, NameEntity, nil}, + {`\.`, NameEntity, nil}, + {`#[^\n]*\n`, CommentSingle, nil}, + // Lookaround + { + `(?`), + tokenType: Punctuation, + stateName: `regex`, + pushState: true, + }), + }, + { + `(?)`, + ByGroups(Punctuation, Operator, OperatorWord, Punctuation), + nil, + }, + // <$variable> + { + `(?)`, + ByGroups(Punctuation, Operator, NameVariable, Punctuation), + nil, + }, + // Capture markers + {`(?`, Operator, nil}, + { + `(? + {`(?`, Punctuation, Pop(1)}, + // + { + `\(`, + Punctuation, + replaceRule(ruleReplacingConfig{ + delimiter: []rune(`)>`), + tokenType: Punctuation, + stateName: `root`, + popState: true, + pushState: true, + }), + }, + // + { + `\s+`, + StringRegex, + replaceRule(ruleReplacingConfig{ + delimiter: []rune(`>`), + tokenType: Punctuation, + stateName: `regex`, + popState: true, + pushState: true, + }), + }, + // + { + `:`, + Punctuation, + replaceRule(ruleReplacingConfig{ + delimiter: []rune(`>`), + tokenType: Punctuation, + stateName: `root`, + popState: true, + pushState: true, + }), + }, + }, + "regex-variable": { + Include(`regex-starting-operators`), + // + {`(&)?(\w[\w':-]*)(>)`, ByGroups(Operator, NameFunction, Punctuation), Pop(1)}, + // `, Punctuation, Pop(1)}, + Include("regex-class-builtin"), + Include("variable"), + Include(`regex-starting-operators`), + Include("colon-pair-attribute"), + {`(?] + { + `\b([RZX]+)\b(\[)([^\s\]]+?)(\])`, + ByGroups(OperatorWord, Punctuation, UsingSelf("root"), Punctuation), + nil, + }, + // Z=> + {`\b([RZX]+)\b([^\s\]]+)`, ByGroups(OperatorWord, UsingSelf("operator")), nil}, + }, + "operator": { + // Word Operator + {wordOperatorsPattern, OperatorWord, nil}, + // Operator + {operatorsPattern, Operator, nil}, + }, + "pod": { + // Single-line pod declaration + {`(#[|=])\s`, Keyword, Push("pod-single")}, + // Multi-line pod declaration + { + "(?#[|=])(?(?" + bracketsPattern + `)\k*)(?)(?)`, + ByGroupNames( + map[string]Emitter{ + `keyword`: Keyword, + `opening_delimiters`: Punctuation, + `delimiter`: nil, + `value`: UsingSelf("pod-declaration"), + `closing_delimiters`: Punctuation, + }), + findBrackets(rakuPodDeclaration), + }, + Include("pod-blocks"), + }, + "pod-blocks": { + // =begin code + { + `(?<=^ *)(? *)(?=begin)(? +)(?code)(?[^\n]*)(?.*?)(?^\k)(?=end)(? +)\k`, + EmitterFunc(podCode), + nil, + }, + // =begin + { + `(?<=^ *)(? *)(?=begin)(? +)(?!code)(?\w[\w'-]*)(?[^\n]*)(?)(?)`, + ByGroupNames( + map[string]Emitter{ + `ws`: Comment, + `keyword`: Keyword, + `ws2`: StringDoc, + `name`: Keyword, + `config`: EmitterFunc(podConfig), + `value`: UsingSelf("pod-begin"), + `closing_delimiters`: Keyword, + }), + findBrackets(rakuPod), + }, + // =for ... + { + `(?<=^ *)(? *)(?=(?:for|defn))(? +)(?\w[\w'-]*)(?[^\n]*\n)`, + ByGroups(Comment, Keyword, StringDoc, Keyword, EmitterFunc(podConfig)), + Push("pod-paragraph"), + }, + // =config + { + `(?<=^ *)(? *)(?=config)(? +)(?\w[\w'-]*)(?[^\n]*\n)`, + ByGroups(Comment, Keyword, StringDoc, Keyword, EmitterFunc(podConfig)), + nil, + }, + // =alias + { + `(?<=^ *)(? *)(?=alias)(? +)(?\w[\w'-]*)(?[^\n]*\n)`, + ByGroups(Comment, Keyword, StringDoc, Keyword, StringDoc), + nil, + }, + // =encoding + { + `(?<=^ *)(? *)(?=encoding)(? +)(?[^\n]+)`, + ByGroups(Comment, Keyword, StringDoc, Name), + nil, + }, + // =para ... + { + `(?<=^ *)(? *)(?=(?:para|table|pod))(?(? *)(?=head\d+)(? *)(?#?)`, + ByGroups(Comment, Keyword, GenericHeading, Keyword), + Push("pod-heading"), + }, + // =item ... + { + `(?<=^ *)(? *)(?=(?:item\d*|comment|data|[A-Z]+))(? *)(?#?)`, + ByGroups(Comment, Keyword, StringDoc, Keyword), + Push("pod-paragraph"), + }, + { + `(?<=^ *)(? *)(?=finish)(?[^\n]*)`, + ByGroups(Comment, Keyword, EmitterFunc(podConfig)), + Push("pod-finish"), + }, + // ={custom} ... + { + `(?<=^ *)(? *)(?=\w[\w'-]*)(? *)(?#?)`, + ByGroups(Comment, Name, StringDoc, Keyword), + Push("pod-paragraph"), + }, + // = podconfig + { + `(?<=^ *)(? *=)(? *)(?(?::\w[\w'-]*(?:` + colonPairOpeningBrackets + `.+?` + + colonPairClosingBrackets + `) *)*\n)`, + ByGroups(Keyword, StringDoc, EmitterFunc(podConfig)), + nil, + }, + }, + "pod-begin": { + Include("pod-blocks"), + Include("pre-pod-formatter"), + {`.+?`, StringDoc, nil}, + }, + "pod-declaration": { + Include("pre-pod-formatter"), + {`.+?`, StringDoc, nil}, + }, + "pod-paragraph": { + {`\n *\n|\n(?=^ *=)`, StringDoc, Pop(1)}, + Include("pre-pod-formatter"), + {`.+?`, StringDoc, nil}, + }, + "pod-single": { + {`\n`, StringDoc, Pop(1)}, + Include("pre-pod-formatter"), + {`.+?`, StringDoc, nil}, + }, + "pod-heading": { + {`\n *\n|\n(?=^ *=)`, GenericHeading, Pop(1)}, + Include("pre-pod-formatter"), + {`.+?`, GenericHeading, nil}, + }, + "pod-finish": { + {`\z`, nil, Pop(1)}, + Include("pre-pod-formatter"), + {`.+?`, StringDoc, nil}, + }, + "pre-pod-formatter": { + // C, B, ... + { + `(?[CBIUDTKRPAELZVMSXN])(?<+|«)`, + ByGroups(Keyword, Punctuation), + findBrackets(rakuPodFormatter), + }, + }, + "pod-formatter": { + // Placeholder rule, will be replaced by mutators. DO NOT REMOVE! + {`>`, Punctuation, Pop(1)}, + Include("pre-pod-formatter"), + // Placeholder rule, will be replaced by mutators. DO NOT REMOVE! + {`.+?`, StringOther, nil}, + }, + "variable": { + {variablePattern, NameVariable, Push("name-adverb")}, + {globalVariablePattern, NameVariableGlobal, Push("name-adverb")}, + {`[$@]<[^>]+>`, NameVariable, nil}, + {`\$[/!¢]`, NameVariable, nil}, + {`[$@%]`, NameVariable, nil}, + }, + "single-quote": { + {`(?>(?!\s*(?:\d+|\.(?:Int|Numeric)|[$@%]\*?[\w':-]+|\s+\[))`, Punctuation, Pop(1)}, + Include("ww"), + }, + "«": { + {`»(?!\s*(?:\d+|\.(?:Int|Numeric)|[$@%]\*?[\w':-]+|\s+\[))`, Punctuation, Pop(1)}, + Include("ww"), + }, + "ww": { + Include("single-quote"), + Include("qq"), + }, + "qq": { + Include("qq-variable"), + Include("closure"), + Include(`escape-char`), + Include("escape-hexadecimal"), + Include("escape-c-name"), + Include("escape-qq"), + {`.+?`, StringDouble, nil}, + }, + "qq-variable": { + { + `(?\.)(?` + namePattern + `)` + colonPairLookahead + `\()`, + ByGroupNames(map[string]Emitter{ + `operator`: Operator, + `method_name`: NameFunction, + }), + Push(`name-adverb`), + }, + // Function/Signature + { + `\(`, Punctuation, replaceRule( + ruleReplacingConfig{ + delimiter: []rune(`)`), + tokenType: Punctuation, + stateName: `root`, + pushState: true, + }), + }, + Default(Pop(1)), + }, + "Q": { + Include("escape-qq"), + {`.+?`, String, nil}, + }, + "Q-closure": { + Include("escape-qq"), + Include("closure"), + {`.+?`, String, nil}, + }, + "Q-variable": { + Include("escape-qq"), + Include("qq-variable"), + {`.+?`, String, nil}, + }, + "closure": { + {`(? -1 { + idx = utf8.RuneCountInString(text[:idx]) + + // Search again if the substr is escaped with backslash + if (idx > 1 && strFromPos[idx-1] == '\\' && strFromPos[idx-2] != '\\') || + (idx == 1 && strFromPos[idx-1] == '\\') { + idx = indexAt(str[pos:], substr, idx+1) + + idx = utf8.RuneCountInString(text[:idx]) + + if idx < 0 { + return idx + } + } + idx += pos + } + + return idx +} + +type rulePosition int + +const ( + topRule rulePosition = 0 - iota + bottomRule +) + +type ruleMakingConfig struct { + delimiter []rune + pattern string + tokenType Emitter + mutator Mutator + numberOfDelimiterChars int +} + +type ruleReplacingConfig struct { + delimiter []rune + pattern string + tokenType Emitter + numberOfDelimiterChars int + mutator Mutator + appendMutator Mutator + rulePosition rulePosition + stateName string + pop bool + popState bool + pushState bool +} + +// Pops rule from state-stack and replaces the rule with the previous rule +func popRule(rule ruleReplacingConfig) MutatorFunc { + return func(state *LexerState) error { + stackName := genStackName(rule.stateName, rule.rulePosition) + + stack, ok := state.Get(stackName).([]ruleReplacingConfig) + + if ok && len(stack) > 0 { + // Pop from stack + stack = stack[:len(stack)-1] + lastRule := stack[len(stack)-1] + lastRule.pushState = false + lastRule.popState = false + lastRule.pop = true + state.Set(stackName, stack) + + // Call replaceRule to use the last rule + err := replaceRule(lastRule)(state) + if err != nil { + panic(err) + } + } + + return nil + } +} + +// Replaces a state's rule based on the rule config and position +func replaceRule(rule ruleReplacingConfig) MutatorFunc { + return func(state *LexerState) error { + stateName := rule.stateName + stackName := genStackName(rule.stateName, rule.rulePosition) + + stack, ok := state.Get(stackName).([]ruleReplacingConfig) + if !ok { + stack = []ruleReplacingConfig{} + } + + // If state-stack is empty fill it with the placeholder rule + if len(stack) == 0 { + stack = []ruleReplacingConfig{ + { + // Placeholder, will be overwritten by mutators, DO NOT REMOVE! + pattern: `\A\z`, + tokenType: nil, + mutator: nil, + stateName: stateName, + rulePosition: rule.rulePosition, + }, + } + state.Set(stackName, stack) + } + + var mutator Mutator + mutators := []Mutator{} + + switch { + case rule.rulePosition == topRule && rule.mutator == nil: + // Default mutator for top rule + mutators = []Mutator{Pop(1), popRule(rule)} + case rule.rulePosition == topRule && rule.mutator != nil: + // Default mutator for top rule, when rule.mutator is set + mutators = []Mutator{rule.mutator, popRule(rule)} + case rule.mutator != nil: + mutators = []Mutator{rule.mutator} + } + + if rule.appendMutator != nil { + mutators = append(mutators, rule.appendMutator) + } + + if len(mutators) > 0 { + mutator = Mutators(mutators...) + } else { + mutator = nil + } + + ruleConfig := ruleMakingConfig{ + pattern: rule.pattern, + delimiter: rule.delimiter, + numberOfDelimiterChars: rule.numberOfDelimiterChars, + tokenType: rule.tokenType, + mutator: mutator, + } + + cRule := makeRule(ruleConfig) + + switch rule.rulePosition { + case topRule: + state.Rules[stateName][0] = cRule + case bottomRule: + state.Rules[stateName][len(state.Rules[stateName])-1] = cRule + } + + // Pop state name from stack if asked. State should be popped first before Pushing + if rule.popState { + err := Pop(1).Mutate(state) + if err != nil { + panic(err) + } + } + + // Push state name to stack if asked + if rule.pushState { + err := Push(stateName).Mutate(state) + if err != nil { + panic(err) + } + } + + if !rule.pop { + state.Set(stackName, append(stack, rule)) + } + + return nil + } +} + +// Generates rule replacing stack using state name and rule position +func genStackName(stateName string, rulePosition rulePosition) (stackName string) { + switch rulePosition { + case topRule: + stackName = stateName + `-top-stack` + case bottomRule: + stackName = stateName + `-bottom-stack` + } + return +} + +// Makes a compiled rule and returns it +func makeRule(config ruleMakingConfig) *CompiledRule { + var rePattern string + + if len(config.delimiter) > 0 { + delimiter := string(config.delimiter) + + if config.numberOfDelimiterChars > 1 { + delimiter = strings.Repeat(delimiter, config.numberOfDelimiterChars) + } + + rePattern = `(? 1 { + lang = langMatch[1] + } + + // Tokenise code based on lang property + sublexer := Get(lang) + if sublexer != nil { + iterator, err := sublexer.Tokenise(nil, state.NamedGroups[`value`]) + + if err != nil { + panic(err) + } else { + iterators = append(iterators, iterator) + } + } else { + iterators = append(iterators, Literator(tokens[4])) + } + + // Append the rest of the tokens + iterators = append(iterators, Literator(tokens[5:]...)) + + return Concaterator(iterators...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/rst.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/rst.go new file mode 100644 index 0000000..66ec03c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/rst.go @@ -0,0 +1,89 @@ +package lexers + +import ( + "strings" + + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Restructuredtext lexer. +var Restructuredtext = Register(MustNewLexer( + &Config{ + Name: "reStructuredText", + Aliases: []string{"rst", "rest", "restructuredtext"}, + Filenames: []string{"*.rst", "*.rest"}, + MimeTypes: []string{"text/x-rst", "text/prs.fallenstein.rst"}, + }, + restructuredtextRules, +)) + +func restructuredtextRules() Rules { + return Rules{ + "root": { + {"^(=+|-+|`+|:+|\\.+|\\'+|\"+|~+|\\^+|_+|\\*+|\\++|#+)([ \\t]*\\n)(.+)(\\n)(\\1)(\\n)", ByGroups(GenericHeading, Text, GenericHeading, Text, GenericHeading, Text), nil}, + {"^(\\S.*)(\\n)(={3,}|-{3,}|`{3,}|:{3,}|\\.{3,}|\\'{3,}|\"{3,}|~{3,}|\\^{3,}|_{3,}|\\*{3,}|\\+{3,}|#{3,})(\\n)", ByGroups(GenericHeading, Text, GenericHeading, Text), nil}, + {`^(\s*)([-*+])( .+\n(?:\1 .+\n)*)`, ByGroups(Text, LiteralNumber, UsingSelf("inline")), nil}, + {`^(\s*)([0-9#ivxlcmIVXLCM]+\.)( .+\n(?:\1 .+\n)*)`, ByGroups(Text, LiteralNumber, UsingSelf("inline")), nil}, + {`^(\s*)(\(?[0-9#ivxlcmIVXLCM]+\))( .+\n(?:\1 .+\n)*)`, ByGroups(Text, LiteralNumber, UsingSelf("inline")), nil}, + {`^(\s*)([A-Z]+\.)( .+\n(?:\1 .+\n)+)`, ByGroups(Text, LiteralNumber, UsingSelf("inline")), nil}, + {`^(\s*)(\(?[A-Za-z]+\))( .+\n(?:\1 .+\n)+)`, ByGroups(Text, LiteralNumber, UsingSelf("inline")), nil}, + {`^(\s*)(\|)( .+\n(?:\| .+\n)*)`, ByGroups(Text, Operator, UsingSelf("inline")), nil}, + {`^( *\.\.)(\s*)((?:source)?code(?:-block)?)(::)([ \t]*)([^\n]+)(\n[ \t]*\n)([ \t]+)(.*)(\n)((?:(?:\8.*|)\n)+)`, EmitterFunc(rstCodeBlock), nil}, + {`^( *\.\.)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))`, ByGroups(Punctuation, Text, OperatorWord, Punctuation, Text, UsingSelf("inline")), nil}, + {`^( *\.\.)(\s*)(_(?:[^:\\]|\\.)+:)(.*?)$`, ByGroups(Punctuation, Text, NameTag, UsingSelf("inline")), nil}, + {`^( *\.\.)(\s*)(\[.+\])(.*?)$`, ByGroups(Punctuation, Text, NameTag, UsingSelf("inline")), nil}, + {`^( *\.\.)(\s*)(\|.+\|)(\s*)([\w:-]+?)(::)(?:([ \t]*)(.*))`, ByGroups(Punctuation, Text, NameTag, Text, OperatorWord, Punctuation, Text, UsingSelf("inline")), nil}, + {`^ *\.\..*(\n( +.*\n|\n)+)?`, CommentPreproc, nil}, + {`^( *)(:[a-zA-Z-]+:)(\s*)$`, ByGroups(Text, NameClass, Text), nil}, + {`^( *)(:.*?:)([ \t]+)(.*?)$`, ByGroups(Text, NameClass, Text, NameFunction), nil}, + {`^(\S.*(?)(`__?)", ByGroups(LiteralString, LiteralStringInterpol, LiteralString), nil}, + {"`.+?`__?", LiteralString, nil}, + {"(`.+?`)(:[a-zA-Z0-9:-]+?:)?", ByGroups(NameVariable, NameAttribute), nil}, + {"(:[a-zA-Z0-9:-]+?:)(`.+?`)", ByGroups(NameAttribute, NameVariable), nil}, + {`\*\*.+?\*\*`, GenericStrong, nil}, + {`\*.+?\*`, GenericEmph, nil}, + {`\[.*?\]_`, LiteralString, nil}, + {`<.+?>`, NameTag, nil}, + {"[^\\\\\\n\\[*`:]+", Text, nil}, + {`.`, Text, nil}, + }, + "literal": { + {"[^`]+", LiteralString, nil}, + {"``((?=$)|(?=[-/:.,; \\n\\x00\\\u2010\\\u2011\\\u2012\\\u2013\\\u2014\\\u00a0\\'\\\"\\)\\]\\}\\>\\\u2019\\\u201d\\\u00bb\\!\\?]))", LiteralString, Pop(1)}, + {"`", LiteralString, nil}, + }, + } +} + +func rstCodeBlock(groups []string, state *LexerState) Iterator { + iterators := []Iterator{} + tokens := []Token{ + {Punctuation, groups[1]}, + {Text, groups[2]}, + {OperatorWord, groups[3]}, + {Punctuation, groups[4]}, + {Text, groups[5]}, + {Keyword, groups[6]}, + {Text, groups[7]}, + } + code := strings.Join(groups[8:], "") + lexer := Get(groups[6]) + if lexer == nil { + tokens = append(tokens, Token{String, code}) + iterators = append(iterators, Literator(tokens...)) + } else { + sub, err := lexer.Tokenise(nil, code) + if err != nil { + panic(err) + } + iterators = append(iterators, Literator(tokens...), sub) + } + return Concaterator(iterators...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/svelte.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/svelte.go new file mode 100644 index 0000000..39211c4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/lexers/svelte.go @@ -0,0 +1,70 @@ +package lexers + +import ( + . "github.com/alecthomas/chroma/v2" // nolint +) + +// Svelte lexer. +var Svelte = Register(DelegatingLexer(HTML, MustNewLexer( + &Config{ + Name: "Svelte", + Aliases: []string{"svelte"}, + Filenames: []string{"*.svelte"}, + MimeTypes: []string{"application/x-svelte"}, + DotAll: true, + }, + svelteRules, +))) + +func svelteRules() Rules { + return Rules{ + "root": { + // Let HTML handle the comments, including comments containing script and style tags + {``, Other, Pop(1)}, + {`.+?`, Other, nil}, + }, + "templates": { + {`}`, Punctuation, Pop(1)}, + // Let TypeScript handle strings and the curly braces inside them + {`(?]*>`, Using("TypoScriptHTMLData"), nil}, + {`&[^;\n]*;`, LiteralString, nil}, + {`(_CSS_DEFAULT_STYLE)(\s*)(\()(?s)(.*(?=\n\)))`, ByGroups(NameClass, Text, LiteralStringSymbol, Using("TypoScriptCSSData")), nil}, + }, + "literal": { + {`0x[0-9A-Fa-f]+t?`, LiteralNumberHex, nil}, + {`[0-9]+`, LiteralNumberInteger, nil}, + {`(###\w+###)`, NameConstant, nil}, + }, + "label": { + {`(EXT|FILE|LLL):[^}\n"]*`, LiteralString, nil}, + {`(?![^\w\-])([\w\-]+(?:/[\w\-]+)+/?)(\S*\n)`, ByGroups(LiteralString, LiteralString), nil}, + }, + "punctuation": { + {`[,.]`, Punctuation, nil}, + }, + "operator": { + {`[<>,:=.*%+|]`, Operator, nil}, + }, + "structure": { + {`[{}()\[\]\\]`, LiteralStringSymbol, nil}, + }, + "constant": { + {`(\{)(\$)((?:[\w\-]+\.)*)([\w\-]+)(\})`, ByGroups(LiteralStringSymbol, Operator, NameConstant, NameConstant, LiteralStringSymbol), nil}, + {`(\{)([\w\-]+)(\s*:\s*)([\w\-]+)(\})`, ByGroups(LiteralStringSymbol, NameConstant, Operator, NameConstant, LiteralStringSymbol), nil}, + {`(#[a-fA-F0-9]{6}\b|#[a-fA-F0-9]{3}\b)`, LiteralStringChar, nil}, + }, + "comment": { + {`(? 0 { + // Exhaust the iterator stack, if any. + for len(l.iteratorStack) > 0 { + n := len(l.iteratorStack) - 1 + t := l.iteratorStack[n]() + if t.Type == Ignore { + continue + } + if t == EOF { + l.iteratorStack = l.iteratorStack[:n] + continue + } + return t + } + + l.State = l.Stack[len(l.Stack)-1] + selectedRule, ok := l.Rules[l.State] + if !ok { + panic("unknown state " + l.State) + } + var start time.Time + if l.Lexer.trace { + start = time.Now() + } + ruleIndex, rule, groups, namedGroups := matchRules(l.Text, l.Pos, selectedRule) + if l.Lexer.trace { + var length int + if groups != nil { + length = len(groups[0]) + } else { + length = -1 + } + _ = trace.Encode(Trace{ //nolint + Lexer: l.Lexer.config.Name, + State: l.State, + Rule: ruleIndex, + Pattern: rule.Pattern, + Pos: l.Pos, + Length: length, + Elapsed: float64(time.Since(start)) / float64(time.Millisecond), + }) + // fmt.Fprintf(os.Stderr, "%s: pos=%d, text=%q, elapsed=%s\n", l.State, l.Pos, string(l.Text[l.Pos:]), time.Since(start)) + } + // No match. + if groups == nil { + // From Pygments :\ + // + // If the RegexLexer encounters a newline that is flagged as an error token, the stack is + // emptied and the lexer continues scanning in the 'root' state. This can help producing + // error-tolerant highlighting for erroneous input, e.g. when a single-line string is not + // closed. + if l.Text[l.Pos] == '\n' && l.State != l.options.State { + l.Stack = []string{l.options.State} + continue + } + l.Pos++ + return Token{Error, string(l.Text[l.Pos-1 : l.Pos])} + } + l.Rule = ruleIndex + l.Groups = groups + l.NamedGroups = namedGroups + l.Pos += utf8.RuneCountInString(groups[0]) + if rule.Mutator != nil { + if err := rule.Mutator.Mutate(l); err != nil { + panic(err) + } + } + if rule.Type != nil { + l.iteratorStack = append(l.iteratorStack, rule.Type.Emit(l.Groups, l)) + } + } + // Exhaust the IteratorStack, if any. + // Duplicate code, but eh. + for len(l.iteratorStack) > 0 { + n := len(l.iteratorStack) - 1 + t := l.iteratorStack[n]() + if t.Type == Ignore { + continue + } + if t == EOF { + l.iteratorStack = l.iteratorStack[:n] + continue + } + return t + } + + // If we get to here and we still have text, return it as an error. + if l.Pos != len(l.Text) && len(l.Stack) == 0 { + value := string(l.Text[l.Pos:]) + l.Pos = len(l.Text) + return Token{Type: Error, Value: value} + } + return EOF +} + +// RegexLexer is the default lexer implementation used in Chroma. +type RegexLexer struct { + registry *LexerRegistry // The LexerRegistry this Lexer is associated with, if any. + config *Config + analyser func(text string) float32 + trace bool + + mu sync.Mutex + compiled bool + rawRules Rules + rules map[string][]*CompiledRule + fetchRulesFunc func() (Rules, error) + compileOnce sync.Once +} + +func (r *RegexLexer) String() string { + return r.config.Name +} + +// Rules in the Lexer. +func (r *RegexLexer) Rules() (Rules, error) { + if err := r.needRules(); err != nil { + return nil, err + } + return r.rawRules, nil +} + +// SetRegistry the lexer will use to lookup other lexers if necessary. +func (r *RegexLexer) SetRegistry(registry *LexerRegistry) Lexer { + r.registry = registry + return r +} + +// SetAnalyser sets the analyser function used to perform content inspection. +func (r *RegexLexer) SetAnalyser(analyser func(text string) float32) Lexer { + r.analyser = analyser + return r +} + +// AnalyseText scores how likely a fragment of text is to match this lexer, between 0.0 and 1.0. +func (r *RegexLexer) AnalyseText(text string) float32 { + if r.analyser != nil { + return r.analyser(text) + } + return 0 +} + +// SetConfig replaces the Config for this Lexer. +func (r *RegexLexer) SetConfig(config *Config) *RegexLexer { + r.config = config + return r +} + +// Config returns the Config for this Lexer. +func (r *RegexLexer) Config() *Config { + return r.config +} + +// Regex compilation is deferred until the lexer is used. This is to avoid significant init() time costs. +func (r *RegexLexer) maybeCompile() (err error) { + r.mu.Lock() + defer r.mu.Unlock() + if r.compiled { + return nil + } + for state, rules := range r.rules { + for i, rule := range rules { + if rule.Regexp == nil { + pattern := "(?:" + rule.Pattern + ")" + if rule.flags != "" { + pattern = "(?" + rule.flags + ")" + pattern + } + pattern = `\G` + pattern + rule.Regexp, err = regexp2.Compile(pattern, 0) + if err != nil { + return fmt.Errorf("failed to compile rule %s.%d: %s", state, i, err) + } + rule.Regexp.MatchTimeout = time.Millisecond * 250 + } + } + } +restart: + seen := map[LexerMutator]bool{} + for state := range r.rules { + for i := range len(r.rules[state]) { + rule := r.rules[state][i] + if compile, ok := rule.Mutator.(LexerMutator); ok { + if seen[compile] { + return fmt.Errorf("saw mutator %T twice; this should not happen", compile) + } + seen[compile] = true + if err := compile.MutateLexer(r.rules, state, i); err != nil { + return err + } + // Process the rules again in case the mutator added/removed rules. + // + // This sounds bad, but shouldn't be significant in practice. + goto restart + } + } + } + // Validate emitters + for state := range r.rules { + for i := range len(r.rules[state]) { + rule := r.rules[state][i] + if validate, ok := rule.Type.(ValidatingEmitter); ok { + if err := validate.ValidateEmitter(rule); err != nil { + return fmt.Errorf("%s: %s: %s: %w", r.config.Name, state, rule.Pattern, err) + } + } + } + } + r.compiled = true + return nil +} + +func (r *RegexLexer) fetchRules() error { + rules, err := r.fetchRulesFunc() + if err != nil { + return fmt.Errorf("%s: failed to compile rules: %w", r.config.Name, err) + } + if _, ok := rules["root"]; !ok { + return fmt.Errorf("no \"root\" state") + } + compiledRules := map[string][]*CompiledRule{} + for state, rules := range rules { + compiledRules[state] = nil + for _, rule := range rules { + flags := "" + if !r.config.NotMultiline { + flags += "m" + } + if r.config.CaseInsensitive { + flags += "i" + } + if r.config.DotAll { + flags += "s" + } + compiledRules[state] = append(compiledRules[state], &CompiledRule{Rule: rule, flags: flags}) + } + } + + r.rawRules = rules + r.rules = compiledRules + return nil +} + +func (r *RegexLexer) needRules() error { + var err error + if r.fetchRulesFunc != nil { + r.compileOnce.Do(func() { + err = r.fetchRules() + }) + } + if err := r.maybeCompile(); err != nil { + return err + } + return err +} + +// Tokenise text using lexer, returning an iterator. +func (r *RegexLexer) Tokenise(options *TokeniseOptions, text string) (Iterator, error) { + err := r.needRules() + if err != nil { + return nil, err + } + if options == nil { + options = defaultOptions + } + if options.EnsureLF { + text = ensureLF(text) + } + newlineAdded := false + if !options.Nested && r.config.EnsureNL && !strings.HasSuffix(text, "\n") { + text += "\n" + newlineAdded = true + } + state := &LexerState{ + Registry: r.registry, + newlineAdded: newlineAdded, + options: options, + Lexer: r, + Text: []rune(text), + Stack: []string{options.State}, + Rules: r.rules, + MutatorContext: map[interface{}]interface{}{}, + } + return state.Iterator, nil +} + +// MustRules is like Rules() but will panic on error. +func (r *RegexLexer) MustRules() Rules { + rules, err := r.Rules() + if err != nil { + panic(err) + } + return rules +} + +func matchRules(text []rune, pos int, rules []*CompiledRule) (int, *CompiledRule, []string, map[string]string) { + for i, rule := range rules { + match, err := rule.Regexp.FindRunesMatchStartingAt(text, pos) + if match != nil && err == nil && match.Index == pos { + groups := []string{} + namedGroups := make(map[string]string) + for _, g := range match.Groups() { + namedGroups[g.Name] = g.String() + groups = append(groups, g.String()) + } + return i, rule, groups, namedGroups + } + } + return 0, &CompiledRule{}, nil, nil +} + +// replace \r and \r\n with \n +// same as strings.ReplaceAll but more efficient +func ensureLF(text string) string { + buf := make([]byte, len(text)) + var j int + for i := range len(text) { + c := text[i] + if c == '\r' { + if i < len(text)-1 && text[i+1] == '\n' { + continue + } + c = '\n' + } + buf[j] = c + j++ + } + return string(buf[:j]) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/registry.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/registry.go new file mode 100644 index 0000000..a309af9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/registry.go @@ -0,0 +1,228 @@ +package chroma + +import ( + "path/filepath" + "sort" + "strings" +) + +var ( + ignoredSuffixes = [...]string{ + // Editor backups + "~", ".bak", ".old", ".orig", + // Debian and derivatives apt/dpkg/ucf backups + ".dpkg-dist", ".dpkg-old", ".ucf-dist", ".ucf-new", ".ucf-old", + // Red Hat and derivatives rpm backups + ".rpmnew", ".rpmorig", ".rpmsave", + // Build system input/template files + ".in", + } +) + +// LexerRegistry is a registry of Lexers. +type LexerRegistry struct { + Lexers Lexers + byName map[string]Lexer + byAlias map[string]Lexer +} + +// NewLexerRegistry creates a new LexerRegistry of Lexers. +func NewLexerRegistry() *LexerRegistry { + return &LexerRegistry{ + byName: map[string]Lexer{}, + byAlias: map[string]Lexer{}, + } +} + +// Names of all lexers, optionally including aliases. +func (l *LexerRegistry) Names(withAliases bool) []string { + out := []string{} + for _, lexer := range l.Lexers { + config := lexer.Config() + out = append(out, config.Name) + if withAliases { + out = append(out, config.Aliases...) + } + } + sort.Strings(out) + return out +} + +// Aliases of all the lexers, and skip those lexers who do not have any aliases, +// or show their name instead +func (l *LexerRegistry) Aliases(skipWithoutAliases bool) []string { + out := []string{} + for _, lexer := range l.Lexers { + config := lexer.Config() + if len(config.Aliases) == 0 { + if skipWithoutAliases { + continue + } + out = append(out, config.Name) + } + out = append(out, config.Aliases...) + } + sort.Strings(out) + return out +} + +// Get a Lexer by name, alias or file extension. +func (l *LexerRegistry) Get(name string) Lexer { + if lexer := l.byName[name]; lexer != nil { + return lexer + } + if lexer := l.byAlias[name]; lexer != nil { + return lexer + } + if lexer := l.byName[strings.ToLower(name)]; lexer != nil { + return lexer + } + if lexer := l.byAlias[strings.ToLower(name)]; lexer != nil { + return lexer + } + + candidates := PrioritisedLexers{} + // Try file extension. + if lexer := l.Match("filename." + name); lexer != nil { + candidates = append(candidates, lexer) + } + // Try exact filename. + if lexer := l.Match(name); lexer != nil { + candidates = append(candidates, lexer) + } + if len(candidates) == 0 { + return nil + } + sort.Sort(candidates) + return candidates[0] +} + +// MatchMimeType attempts to find a lexer for the given MIME type. +func (l *LexerRegistry) MatchMimeType(mimeType string) Lexer { + matched := PrioritisedLexers{} + for _, l := range l.Lexers { + for _, lmt := range l.Config().MimeTypes { + if mimeType == lmt { + matched = append(matched, l) + } + } + } + if len(matched) != 0 { + sort.Sort(matched) + return matched[0] + } + return nil +} + +// Match returns the first lexer matching filename. +// +// Note that this iterates over all file patterns in all lexers, so is not fast. +func (l *LexerRegistry) Match(filename string) Lexer { + filename = filepath.Base(filename) + matched := PrioritisedLexers{} + // First, try primary filename matches. + for _, lexer := range l.Lexers { + config := lexer.Config() + for _, glob := range config.Filenames { + ok, err := filepath.Match(glob, filename) + if err != nil { // nolint + panic(err) + } else if ok { + matched = append(matched, lexer) + } else { + for _, suf := range &ignoredSuffixes { + ok, err := filepath.Match(glob+suf, filename) + if err != nil { + panic(err) + } else if ok { + matched = append(matched, lexer) + break + } + } + } + } + } + if len(matched) > 0 { + sort.Sort(matched) + return matched[0] + } + matched = nil + // Next, try filename aliases. + for _, lexer := range l.Lexers { + config := lexer.Config() + for _, glob := range config.AliasFilenames { + ok, err := filepath.Match(glob, filename) + if err != nil { // nolint + panic(err) + } else if ok { + matched = append(matched, lexer) + } else { + for _, suf := range &ignoredSuffixes { + ok, err := filepath.Match(glob+suf, filename) + if err != nil { + panic(err) + } else if ok { + matched = append(matched, lexer) + break + } + } + } + } + } + if len(matched) > 0 { + sort.Sort(matched) + return matched[0] + } + return nil +} + +// Analyse text content and return the "best" lexer.. +func (l *LexerRegistry) Analyse(text string) Lexer { + var picked Lexer + highest := float32(0.0) + for _, lexer := range l.Lexers { + if analyser, ok := lexer.(Analyser); ok { + weight := analyser.AnalyseText(text) + if weight > highest { + picked = lexer + highest = weight + } + } + } + return picked +} + +// Register a Lexer with the LexerRegistry. If the lexer is already registered +// it will be replaced. +func (l *LexerRegistry) Register(lexer Lexer) Lexer { + lexer.SetRegistry(l) + config := lexer.Config() + + l.byName[config.Name] = lexer + l.byName[strings.ToLower(config.Name)] = lexer + + for _, alias := range config.Aliases { + l.byAlias[alias] = lexer + l.byAlias[strings.ToLower(alias)] = lexer + } + + l.Lexers = add(l.Lexers, lexer) + + return lexer +} + +// add adds a lexer to a slice of lexers if it doesn't already exist, or if found will replace it. +func add(lexers Lexers, lexer Lexer) Lexers { + for i, val := range lexers { + if val == nil { + continue + } + + if val.Config().Name == lexer.Config().Name { + lexers[i] = lexer + return lexers + } + } + + return append(lexers, lexer) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/remap.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/remap.go new file mode 100644 index 0000000..bcf5e66 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/remap.go @@ -0,0 +1,94 @@ +package chroma + +type remappingLexer struct { + lexer Lexer + mapper func(Token) []Token +} + +// RemappingLexer remaps a token to a set of, potentially empty, tokens. +func RemappingLexer(lexer Lexer, mapper func(Token) []Token) Lexer { + return &remappingLexer{lexer, mapper} +} + +func (r *remappingLexer) AnalyseText(text string) float32 { + return r.lexer.AnalyseText(text) +} + +func (r *remappingLexer) SetAnalyser(analyser func(text string) float32) Lexer { + r.lexer.SetAnalyser(analyser) + return r +} + +func (r *remappingLexer) SetRegistry(registry *LexerRegistry) Lexer { + r.lexer.SetRegistry(registry) + return r +} + +func (r *remappingLexer) Config() *Config { + return r.lexer.Config() +} + +func (r *remappingLexer) Tokenise(options *TokeniseOptions, text string) (Iterator, error) { + it, err := r.lexer.Tokenise(options, text) + if err != nil { + return nil, err + } + var buffer []Token + return func() Token { + for { + if len(buffer) > 0 { + t := buffer[0] + buffer = buffer[1:] + return t + } + t := it() + if t == EOF { + return t + } + buffer = r.mapper(t) + } + }, nil +} + +// TypeMapping defines type maps for the TypeRemappingLexer. +type TypeMapping []struct { + From, To TokenType + Words []string +} + +// TypeRemappingLexer remaps types of tokens coming from a parent Lexer. +// +// eg. Map "defvaralias" tokens of type NameVariable to NameFunction: +// +// mapping := TypeMapping{ +// {NameVariable, NameFunction, []string{"defvaralias"}, +// } +// lexer = TypeRemappingLexer(lexer, mapping) +func TypeRemappingLexer(lexer Lexer, mapping TypeMapping) Lexer { + // Lookup table for fast remapping. + lut := map[TokenType]map[string]TokenType{} + for _, rt := range mapping { + km, ok := lut[rt.From] + if !ok { + km = map[string]TokenType{} + lut[rt.From] = km + } + if len(rt.Words) == 0 { + km[""] = rt.To + } else { + for _, k := range rt.Words { + km[k] = rt.To + } + } + } + return RemappingLexer(lexer, func(t Token) []Token { + if k, ok := lut[t.Type]; ok { + if tt, ok := k[t.Value]; ok { + t.Type = tt + } else if tt, ok := k[""]; ok { + t.Type = tt + } + } + return []Token{t} + }) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/renovate.json5 b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/renovate.json5 new file mode 100644 index 0000000..9ade481 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/renovate.json5 @@ -0,0 +1,24 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended", + ":semanticCommits", + ":semanticCommitTypeAll(chore)", + ":semanticCommitScope(deps)", + "group:allNonMajor", + "schedule:earlyMondays", // Run once a week. + 'helpers:pinGitHubActionDigests', + ], + "packageRules": [ + { + "matchPackageNames": ["golangci-lint"], + "matchManagers": ["hermit"], + "enabled": false + }, + { + "matchPackageNames": ["github.com/gorilla/csrf"], + "matchManagers": ["gomod"], + "enabled": false + } + ] +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/serialise.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/serialise.go new file mode 100644 index 0000000..3d7f6c5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/serialise.go @@ -0,0 +1,483 @@ +package chroma + +import ( + "compress/gzip" + "encoding/xml" + "errors" + "fmt" + "io" + "io/fs" + "math" + "path/filepath" + "reflect" + "regexp" + "strings" + + "github.com/dlclark/regexp2" +) + +// Serialisation of Chroma rules to XML. The format is: +// +// +// +// +// [<$EMITTER ...>] +// [<$MUTATOR ...>] +// +// +// +// +// eg. Include("String") would become: +// +// +// +// +// +// [null, null, {"kind": "include", "state": "String"}] +// +// eg. Rule{`\d+`, Text, nil} would become: +// +// +// +// +// +// eg. Rule{`"`, String, Push("String")} +// +// +// +// +// +// +// eg. Rule{`(\w+)(\n)`, ByGroups(Keyword, Whitespace), nil}, +// +// +// +// +// +var ( + // ErrNotSerialisable is returned if a lexer contains Rules that cannot be serialised. + ErrNotSerialisable = fmt.Errorf("not serialisable") + emitterTemplates = func() map[string]SerialisableEmitter { + out := map[string]SerialisableEmitter{} + for _, emitter := range []SerialisableEmitter{ + &byGroupsEmitter{}, + &usingSelfEmitter{}, + TokenType(0), + &usingEmitter{}, + &usingByGroup{}, + } { + out[emitter.EmitterKind()] = emitter + } + return out + }() + mutatorTemplates = func() map[string]SerialisableMutator { + out := map[string]SerialisableMutator{} + for _, mutator := range []SerialisableMutator{ + &includeMutator{}, + &combinedMutator{}, + &multiMutator{}, + &pushMutator{}, + &popMutator{}, + } { + out[mutator.MutatorKind()] = mutator + } + return out + }() +) + +// fastUnmarshalConfig unmarshals only the Config from a serialised lexer. +func fastUnmarshalConfig(from fs.FS, path string) (*Config, error) { + r, err := from.Open(path) + if err != nil { + return nil, err + } + defer r.Close() + dec := xml.NewDecoder(r) + for { + token, err := dec.Token() + if err != nil { + if errors.Is(err, io.EOF) { + return nil, fmt.Errorf("could not find element") + } + return nil, err + } + switch se := token.(type) { + case xml.StartElement: + if se.Name.Local != "config" { + break + } + + var config Config + err = dec.DecodeElement(&config, &se) + if err != nil { + return nil, fmt.Errorf("%s: %w", path, err) + } + return &config, nil + } + } +} + +// MustNewXMLLexer constructs a new RegexLexer from an XML file or panics. +func MustNewXMLLexer(from fs.FS, path string) *RegexLexer { + lex, err := NewXMLLexer(from, path) + if err != nil { + panic(err) + } + return lex +} + +// NewXMLLexer creates a new RegexLexer from a serialised RegexLexer. +func NewXMLLexer(from fs.FS, path string) (*RegexLexer, error) { + config, err := fastUnmarshalConfig(from, path) + if err != nil { + return nil, err + } + + for _, glob := range append(config.Filenames, config.AliasFilenames...) { + _, err := filepath.Match(glob, "") + if err != nil { + return nil, fmt.Errorf("%s: %q is not a valid glob: %w", config.Name, glob, err) + } + } + + var analyserFn func(string) float32 + + if config.Analyse != nil { + type regexAnalyse struct { + re *regexp2.Regexp + score float32 + } + + regexAnalysers := make([]regexAnalyse, 0, len(config.Analyse.Regexes)) + + regexFlags := regexp2.None + if config.CaseInsensitive { + regexFlags = regexp2.IgnoreCase + } + for _, ra := range config.Analyse.Regexes { + re, err := regexp2.Compile(ra.Pattern, regexFlags) + if err != nil { + return nil, fmt.Errorf("%s: %q is not a valid analyser regex: %w", config.Name, ra.Pattern, err) + } + + regexAnalysers = append(regexAnalysers, regexAnalyse{re, ra.Score}) + } + + analyserFn = func(text string) float32 { + var score float32 + + for _, ra := range regexAnalysers { + ok, err := ra.re.MatchString(text) + if err != nil { + return 0 + } + + if ok && config.Analyse.First { + return float32(math.Min(float64(ra.score), 1.0)) + } + + if ok { + score += ra.score + } + } + + return float32(math.Min(float64(score), 1.0)) + } + } + + return &RegexLexer{ + config: config, + analyser: analyserFn, + fetchRulesFunc: func() (Rules, error) { + var lexer struct { + Config + Rules Rules `xml:"rules"` + } + // Try to open .xml fallback to .xml.gz + fr, err := from.Open(path) + if err != nil { + if errors.Is(err, fs.ErrNotExist) { + path += ".gz" + fr, err = from.Open(path) + if err != nil { + return nil, err + } + } else { + return nil, err + } + } + defer fr.Close() + var r io.Reader = fr + if strings.HasSuffix(path, ".gz") { + r, err = gzip.NewReader(r) + if err != nil { + return nil, fmt.Errorf("%s: %w", path, err) + } + } + err = xml.NewDecoder(r).Decode(&lexer) + if err != nil { + return nil, fmt.Errorf("%s: %w", path, err) + } + return lexer.Rules, nil + }, + }, nil +} + +// Marshal a RegexLexer to XML. +func Marshal(l *RegexLexer) ([]byte, error) { + type lexer struct { + Config Config `xml:"config"` + Rules Rules `xml:"rules"` + } + + rules, err := l.Rules() + if err != nil { + return nil, err + } + root := &lexer{ + Config: *l.Config(), + Rules: rules, + } + data, err := xml.MarshalIndent(root, "", " ") + if err != nil { + return nil, err + } + re := regexp.MustCompile(`>`) + data = re.ReplaceAll(data, []byte(`/>`)) + return data, nil +} + +// Unmarshal a RegexLexer from XML. +func Unmarshal(data []byte) (*RegexLexer, error) { + type lexer struct { + Config Config `xml:"config"` + Rules Rules `xml:"rules"` + } + root := &lexer{} + err := xml.Unmarshal(data, root) + if err != nil { + return nil, fmt.Errorf("invalid Lexer XML: %w", err) + } + lex, err := NewLexer(&root.Config, func() Rules { return root.Rules }) + if err != nil { + return nil, err + } + return lex, nil +} + +func marshalMutator(e *xml.Encoder, mutator Mutator) error { + if mutator == nil { + return nil + } + smutator, ok := mutator.(SerialisableMutator) + if !ok { + return fmt.Errorf("unsupported mutator: %w", ErrNotSerialisable) + } + return e.EncodeElement(mutator, xml.StartElement{Name: xml.Name{Local: smutator.MutatorKind()}}) +} + +func unmarshalMutator(d *xml.Decoder, start xml.StartElement) (Mutator, error) { + kind := start.Name.Local + mutator, ok := mutatorTemplates[kind] + if !ok { + return nil, fmt.Errorf("unknown mutator %q: %w", kind, ErrNotSerialisable) + } + value, target := newFromTemplate(mutator) + if err := d.DecodeElement(target, &start); err != nil { + return nil, err + } + return value().(SerialisableMutator), nil +} + +func marshalEmitter(e *xml.Encoder, emitter Emitter) error { + if emitter == nil { + return nil + } + semitter, ok := emitter.(SerialisableEmitter) + if !ok { + return fmt.Errorf("unsupported emitter %T: %w", emitter, ErrNotSerialisable) + } + return e.EncodeElement(emitter, xml.StartElement{ + Name: xml.Name{Local: semitter.EmitterKind()}, + }) +} + +func unmarshalEmitter(d *xml.Decoder, start xml.StartElement) (Emitter, error) { + kind := start.Name.Local + mutator, ok := emitterTemplates[kind] + if !ok { + return nil, fmt.Errorf("unknown emitter %q: %w", kind, ErrNotSerialisable) + } + value, target := newFromTemplate(mutator) + if err := d.DecodeElement(target, &start); err != nil { + return nil, err + } + return value().(SerialisableEmitter), nil +} + +func (r Rule) MarshalXML(e *xml.Encoder, _ xml.StartElement) error { + start := xml.StartElement{ + Name: xml.Name{Local: "rule"}, + } + if r.Pattern != "" { + start.Attr = append(start.Attr, xml.Attr{ + Name: xml.Name{Local: "pattern"}, + Value: r.Pattern, + }) + } + if err := e.EncodeToken(start); err != nil { + return err + } + if err := marshalEmitter(e, r.Type); err != nil { + return err + } + if err := marshalMutator(e, r.Mutator); err != nil { + return err + } + return e.EncodeToken(xml.EndElement{Name: start.Name}) +} + +func (r *Rule) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + for _, attr := range start.Attr { + if attr.Name.Local == "pattern" { + r.Pattern = attr.Value + break + } + } + for { + token, err := d.Token() + if err != nil { + return err + } + switch token := token.(type) { + case xml.StartElement: + mutator, err := unmarshalMutator(d, token) + if err != nil && !errors.Is(err, ErrNotSerialisable) { + return err + } else if err == nil { + if r.Mutator != nil { + return fmt.Errorf("duplicate mutator") + } + r.Mutator = mutator + continue + } + emitter, err := unmarshalEmitter(d, token) + if err != nil && !errors.Is(err, ErrNotSerialisable) { // nolint: gocritic + return err + } else if err == nil { + if r.Type != nil { + return fmt.Errorf("duplicate emitter") + } + r.Type = emitter + continue + } else { + return err + } + + case xml.EndElement: + return nil + } + } +} + +type xmlRuleState struct { + Name string `xml:"name,attr"` + Rules []Rule `xml:"rule"` +} + +type xmlRules struct { + States []xmlRuleState `xml:"state"` +} + +func (r Rules) MarshalXML(e *xml.Encoder, _ xml.StartElement) error { + xr := xmlRules{} + for state, rules := range r { + xr.States = append(xr.States, xmlRuleState{ + Name: state, + Rules: rules, + }) + } + return e.EncodeElement(xr, xml.StartElement{Name: xml.Name{Local: "rules"}}) +} + +func (r *Rules) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + xr := xmlRules{} + if err := d.DecodeElement(&xr, &start); err != nil { + return err + } + if *r == nil { + *r = Rules{} + } + for _, state := range xr.States { + (*r)[state.Name] = state.Rules + } + return nil +} + +type xmlTokenType struct { + Type string `xml:"type,attr"` +} + +func (t *TokenType) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + el := xmlTokenType{} + if err := d.DecodeElement(&el, &start); err != nil { + return err + } + tt, err := TokenTypeString(el.Type) + if err != nil { + return err + } + *t = tt + return nil +} + +func (t TokenType) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + start.Attr = append(start.Attr, xml.Attr{Name: xml.Name{Local: "type"}, Value: t.String()}) + if err := e.EncodeToken(start); err != nil { + return err + } + return e.EncodeToken(xml.EndElement{Name: start.Name}) +} + +// This hijinks is a bit unfortunate but without it we can't deserialise into TokenType. +func newFromTemplate(template interface{}) (value func() interface{}, target interface{}) { + t := reflect.TypeOf(template) + if t.Kind() == reflect.Ptr { + v := reflect.New(t.Elem()) + return v.Interface, v.Interface() + } + v := reflect.New(t) + return func() interface{} { return v.Elem().Interface() }, v.Interface() +} + +func (b *Emitters) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + for { + token, err := d.Token() + if err != nil { + return err + } + switch token := token.(type) { + case xml.StartElement: + emitter, err := unmarshalEmitter(d, token) + if err != nil { + return err + } + *b = append(*b, emitter) + + case xml.EndElement: + return nil + } + } +} + +func (b Emitters) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + if err := e.EncodeToken(start); err != nil { + return err + } + for _, m := range b { + if err := marshalEmitter(e, m); err != nil { + return err + } + } + return e.EncodeToken(xml.EndElement{Name: start.Name}) +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/style.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/style.go new file mode 100644 index 0000000..cc8d9a6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/style.go @@ -0,0 +1,481 @@ +package chroma + +import ( + "encoding/xml" + "fmt" + "io" + "sort" + "strings" +) + +// Trilean value for StyleEntry value inheritance. +type Trilean uint8 + +// Trilean states. +const ( + Pass Trilean = iota + Yes + No +) + +func (t Trilean) String() string { + switch t { + case Yes: + return "Yes" + case No: + return "No" + default: + return "Pass" + } +} + +// Prefix returns s with "no" as a prefix if Trilean is no. +func (t Trilean) Prefix(s string) string { + if t == Yes { + return s + } else if t == No { + return "no" + s + } + return "" +} + +// A StyleEntry in the Style map. +type StyleEntry struct { + // Hex colours. + Colour Colour + Background Colour + Border Colour + + Bold Trilean + Italic Trilean + Underline Trilean + NoInherit bool +} + +func (s StyleEntry) MarshalText() ([]byte, error) { + return []byte(s.String()), nil +} + +func (s StyleEntry) String() string { + out := []string{} + if s.Bold != Pass { + out = append(out, s.Bold.Prefix("bold")) + } + if s.Italic != Pass { + out = append(out, s.Italic.Prefix("italic")) + } + if s.Underline != Pass { + out = append(out, s.Underline.Prefix("underline")) + } + if s.NoInherit { + out = append(out, "noinherit") + } + if s.Colour.IsSet() { + out = append(out, s.Colour.String()) + } + if s.Background.IsSet() { + out = append(out, "bg:"+s.Background.String()) + } + if s.Border.IsSet() { + out = append(out, "border:"+s.Border.String()) + } + return strings.Join(out, " ") +} + +// Sub subtracts e from s where elements match. +func (s StyleEntry) Sub(e StyleEntry) StyleEntry { + out := StyleEntry{} + if e.Colour != s.Colour { + out.Colour = s.Colour + } + if e.Background != s.Background { + out.Background = s.Background + } + if e.Bold != s.Bold { + out.Bold = s.Bold + } + if e.Italic != s.Italic { + out.Italic = s.Italic + } + if e.Underline != s.Underline { + out.Underline = s.Underline + } + if e.Border != s.Border { + out.Border = s.Border + } + return out +} + +// Inherit styles from ancestors. +// +// Ancestors should be provided from oldest to newest. +func (s StyleEntry) Inherit(ancestors ...StyleEntry) StyleEntry { + out := s + for i := len(ancestors) - 1; i >= 0; i-- { + if out.NoInherit { + return out + } + ancestor := ancestors[i] + if !out.Colour.IsSet() { + out.Colour = ancestor.Colour + } + if !out.Background.IsSet() { + out.Background = ancestor.Background + } + if !out.Border.IsSet() { + out.Border = ancestor.Border + } + if out.Bold == Pass { + out.Bold = ancestor.Bold + } + if out.Italic == Pass { + out.Italic = ancestor.Italic + } + if out.Underline == Pass { + out.Underline = ancestor.Underline + } + } + return out +} + +func (s StyleEntry) IsZero() bool { + return s.Colour == 0 && s.Background == 0 && s.Border == 0 && s.Bold == Pass && s.Italic == Pass && + s.Underline == Pass && !s.NoInherit +} + +// A StyleBuilder is a mutable structure for building styles. +// +// Once built, a Style is immutable. +type StyleBuilder struct { + entries map[TokenType]string + name string + parent *Style +} + +func NewStyleBuilder(name string) *StyleBuilder { + return &StyleBuilder{name: name, entries: map[TokenType]string{}} +} + +func (s *StyleBuilder) AddAll(entries StyleEntries) *StyleBuilder { + for ttype, entry := range entries { + s.entries[ttype] = entry + } + return s +} + +func (s *StyleBuilder) Get(ttype TokenType) StyleEntry { + // This is less than ideal, but it's the price for not having to check errors on each Add(). + entry, _ := ParseStyleEntry(s.entries[ttype]) + if s.parent != nil { + entry = entry.Inherit(s.parent.Get(ttype)) + } + return entry +} + +// Add an entry to the Style map. +// +// See http://pygments.org/docs/styles/#style-rules for details. +func (s *StyleBuilder) Add(ttype TokenType, entry string) *StyleBuilder { // nolint: gocyclo + s.entries[ttype] = entry + return s +} + +func (s *StyleBuilder) AddEntry(ttype TokenType, entry StyleEntry) *StyleBuilder { + s.entries[ttype] = entry.String() + return s +} + +// Transform passes each style entry currently defined in the builder to the supplied +// function and saves the returned value. This can be used to adjust a style's colours; +// see Colour's ClampBrightness function, for example. +func (s *StyleBuilder) Transform(transform func(StyleEntry) StyleEntry) *StyleBuilder { + types := make(map[TokenType]struct{}) + for tt := range s.entries { + types[tt] = struct{}{} + } + if s.parent != nil { + for _, tt := range s.parent.Types() { + types[tt] = struct{}{} + } + } + for tt := range types { + s.AddEntry(tt, transform(s.Get(tt))) + } + return s +} + +func (s *StyleBuilder) Build() (*Style, error) { + style := &Style{ + Name: s.name, + entries: map[TokenType]StyleEntry{}, + parent: s.parent, + } + for ttype, descriptor := range s.entries { + entry, err := ParseStyleEntry(descriptor) + if err != nil { + return nil, fmt.Errorf("invalid entry for %s: %s", ttype, err) + } + style.entries[ttype] = entry + } + return style, nil +} + +// StyleEntries mapping TokenType to colour definition. +type StyleEntries map[TokenType]string + +// NewXMLStyle parses an XML style definition. +func NewXMLStyle(r io.Reader) (*Style, error) { + dec := xml.NewDecoder(r) + style := &Style{} + return style, dec.Decode(style) +} + +// MustNewXMLStyle is like NewXMLStyle but panics on error. +func MustNewXMLStyle(r io.Reader) *Style { + style, err := NewXMLStyle(r) + if err != nil { + panic(err) + } + return style +} + +// NewStyle creates a new style definition. +func NewStyle(name string, entries StyleEntries) (*Style, error) { + return NewStyleBuilder(name).AddAll(entries).Build() +} + +// MustNewStyle creates a new style or panics. +func MustNewStyle(name string, entries StyleEntries) *Style { + style, err := NewStyle(name, entries) + if err != nil { + panic(err) + } + return style +} + +// A Style definition. +// +// See http://pygments.org/docs/styles/ for details. Semantics are intended to be identical. +type Style struct { + Name string + entries map[TokenType]StyleEntry + parent *Style +} + +func (s *Style) MarshalXML(e *xml.Encoder, start xml.StartElement) error { + if s.parent != nil { + return fmt.Errorf("cannot marshal style with parent") + } + start.Name = xml.Name{Local: "style"} + start.Attr = []xml.Attr{{Name: xml.Name{Local: "name"}, Value: s.Name}} + if err := e.EncodeToken(start); err != nil { + return err + } + sorted := make([]TokenType, 0, len(s.entries)) + for ttype := range s.entries { + sorted = append(sorted, ttype) + } + sort.Slice(sorted, func(i, j int) bool { return sorted[i] < sorted[j] }) + for _, ttype := range sorted { + entry := s.entries[ttype] + el := xml.StartElement{Name: xml.Name{Local: "entry"}} + el.Attr = []xml.Attr{ + {Name: xml.Name{Local: "type"}, Value: ttype.String()}, + {Name: xml.Name{Local: "style"}, Value: entry.String()}, + } + if err := e.EncodeToken(el); err != nil { + return err + } + if err := e.EncodeToken(xml.EndElement{Name: el.Name}); err != nil { + return err + } + } + return e.EncodeToken(xml.EndElement{Name: start.Name}) +} + +func (s *Style) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { + for _, attr := range start.Attr { + if attr.Name.Local == "name" { + s.Name = attr.Value + } else { + return fmt.Errorf("unexpected attribute %s", attr.Name.Local) + } + } + if s.Name == "" { + return fmt.Errorf("missing style name attribute") + } + s.entries = map[TokenType]StyleEntry{} + for { + tok, err := d.Token() + if err != nil { + return err + } + switch el := tok.(type) { + case xml.StartElement: + if el.Name.Local != "entry" { + return fmt.Errorf("unexpected element %s", el.Name.Local) + } + var ttype TokenType + var entry StyleEntry + for _, attr := range el.Attr { + switch attr.Name.Local { + case "type": + ttype, err = TokenTypeString(attr.Value) + if err != nil { + return err + } + + case "style": + entry, err = ParseStyleEntry(attr.Value) + if err != nil { + return err + } + + default: + return fmt.Errorf("unexpected attribute %s", attr.Name.Local) + } + } + s.entries[ttype] = entry + + case xml.EndElement: + if el.Name.Local == start.Name.Local { + return nil + } + } + } +} + +// Types that are styled. +func (s *Style) Types() []TokenType { + dedupe := map[TokenType]bool{} + for tt := range s.entries { + dedupe[tt] = true + } + if s.parent != nil { + for _, tt := range s.parent.Types() { + dedupe[tt] = true + } + } + out := make([]TokenType, 0, len(dedupe)) + for tt := range dedupe { + out = append(out, tt) + } + return out +} + +// Builder creates a mutable builder from this Style. +// +// The builder can then be safely modified. This is a cheap operation. +func (s *Style) Builder() *StyleBuilder { + return &StyleBuilder{ + name: s.Name, + entries: map[TokenType]string{}, + parent: s, + } +} + +// Has checks if an exact style entry match exists for a token type. +// +// This is distinct from Get() which will merge parent tokens. +func (s *Style) Has(ttype TokenType) bool { + return !s.get(ttype).IsZero() || s.synthesisable(ttype) +} + +// Get a style entry. Will try sub-category or category if an exact match is not found, and +// finally return the Background. +func (s *Style) Get(ttype TokenType) StyleEntry { + return s.get(ttype).Inherit( + s.get(Background), + s.get(Text), + s.get(ttype.Category()), + s.get(ttype.SubCategory())) +} + +func (s *Style) get(ttype TokenType) StyleEntry { + out := s.entries[ttype] + if out.IsZero() && s.parent != nil { + return s.parent.get(ttype) + } + if out.IsZero() && s.synthesisable(ttype) { + out = s.synthesise(ttype) + } + return out +} + +func (s *Style) synthesise(ttype TokenType) StyleEntry { + bg := s.get(Background) + text := StyleEntry{Colour: bg.Colour} + text.Colour = text.Colour.BrightenOrDarken(0.5) + + switch ttype { + // If we don't have a line highlight colour, make one that is 10% brighter/darker than the background. + case LineHighlight: + return StyleEntry{Background: bg.Background.BrightenOrDarken(0.1)} + + // If we don't have line numbers, use the text colour but 20% brighter/darker + case LineNumbers, LineNumbersTable: + return text + + default: + return StyleEntry{} + } +} + +func (s *Style) synthesisable(ttype TokenType) bool { + return ttype == LineHighlight || ttype == LineNumbers || ttype == LineNumbersTable +} + +// MustParseStyleEntry parses a Pygments style entry or panics. +func MustParseStyleEntry(entry string) StyleEntry { + out, err := ParseStyleEntry(entry) + if err != nil { + panic(err) + } + return out +} + +// ParseStyleEntry parses a Pygments style entry. +func ParseStyleEntry(entry string) (StyleEntry, error) { // nolint: gocyclo + out := StyleEntry{} + parts := strings.Fields(entry) + for _, part := range parts { + switch { + case part == "italic": + out.Italic = Yes + case part == "noitalic": + out.Italic = No + case part == "bold": + out.Bold = Yes + case part == "nobold": + out.Bold = No + case part == "underline": + out.Underline = Yes + case part == "nounderline": + out.Underline = No + case part == "inherit": + out.NoInherit = false + case part == "noinherit": + out.NoInherit = true + case part == "bg:": + out.Background = 0 + case strings.HasPrefix(part, "bg:#"): + out.Background = ParseColour(part[3:]) + if !out.Background.IsSet() { + return StyleEntry{}, fmt.Errorf("invalid background colour %q", part) + } + case strings.HasPrefix(part, "border:#"): + out.Border = ParseColour(part[7:]) + if !out.Border.IsSet() { + return StyleEntry{}, fmt.Errorf("invalid border colour %q", part) + } + case strings.HasPrefix(part, "#"): + out.Colour = ParseColour(part) + if !out.Colour.IsSet() { + return StyleEntry{}, fmt.Errorf("invalid colour %q", part) + } + default: + return StyleEntry{}, fmt.Errorf("unknown style element %q", part) + } + } + return out, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/abap.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/abap.xml new file mode 100644 index 0000000..36ea2f1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/abap.xml @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol.xml new file mode 100644 index 0000000..e8a6dc1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol.xml @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol_nu.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol_nu.xml new file mode 100644 index 0000000..7fa340f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/algol_nu.xml @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/api.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/api.go new file mode 100644 index 0000000..e26d6f0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/api.go @@ -0,0 +1,65 @@ +package styles + +import ( + "embed" + "io/fs" + "sort" + + "github.com/alecthomas/chroma/v2" +) + +//go:embed *.xml +var embedded embed.FS + +// Registry of Styles. +var Registry = func() map[string]*chroma.Style { + registry := map[string]*chroma.Style{} + // Register all embedded styles. + files, err := fs.ReadDir(embedded, ".") + if err != nil { + panic(err) + } + for _, file := range files { + if file.IsDir() { + continue + } + r, err := embedded.Open(file.Name()) + if err != nil { + panic(err) + } + style, err := chroma.NewXMLStyle(r) + if err != nil { + panic(err) + } + registry[style.Name] = style + _ = r.Close() + } + return registry +}() + +// Fallback style. Reassign to change the default fallback style. +var Fallback = Registry["swapoff"] + +// Register a chroma.Style. +func Register(style *chroma.Style) *chroma.Style { + Registry[style.Name] = style + return style +} + +// Names of all available styles. +func Names() []string { + out := []string{} + for name := range Registry { + out = append(out, name) + } + sort.Strings(out) + return out +} + +// Get named style, or Fallback. +func Get(name string) *chroma.Style { + if style, ok := Registry[name]; ok { + return style + } + return Fallback +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/arduino.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/arduino.xml new file mode 100644 index 0000000..d9891dc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/arduino.xml @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml new file mode 100644 index 0000000..c22b3fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/ashen.xml @@ -0,0 +1,69 @@ + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml new file mode 100644 index 0000000..ee7f125 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark-soft.xml @@ -0,0 +1,107 @@ + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml new file mode 100644 index 0000000..85e8ec9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/aura-theme-dark.xml @@ -0,0 +1,107 @@ + + + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/autumn.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/autumn.xml new file mode 100644 index 0000000..74d2eae --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/autumn.xml @@ -0,0 +1,36 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/average.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/average.xml new file mode 100644 index 0000000..79bdb95 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/average.xml @@ -0,0 +1,74 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/base16-snazzy.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/base16-snazzy.xml new file mode 100644 index 0000000..a05ba24 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/base16-snazzy.xml @@ -0,0 +1,74 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/borland.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/borland.xml new file mode 100644 index 0000000..0d8f574 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/borland.xml @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/bw.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/bw.xml new file mode 100644 index 0000000..fb0e868 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/bw.xml @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-frappe.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-frappe.xml new file mode 100644 index 0000000..66a361f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-frappe.xml @@ -0,0 +1,83 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-latte.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-latte.xml new file mode 100644 index 0000000..c87c876 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-latte.xml @@ -0,0 +1,83 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-macchiato.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-macchiato.xml new file mode 100644 index 0000000..5dba9c6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-macchiato.xml @@ -0,0 +1,83 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-mocha.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-mocha.xml new file mode 100644 index 0000000..9f9b915 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/catppuccin-mocha.xml @@ -0,0 +1,83 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/colorful.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/colorful.xml new file mode 100644 index 0000000..32442d7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/colorful.xml @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/compat.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/compat.go new file mode 100644 index 0000000..4a6aaa6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/compat.go @@ -0,0 +1,66 @@ +package styles + +// Present for backwards compatibility. +// +// Deprecated: use styles.Get(name) instead. +var ( + Abap = Registry["abap"] + Algol = Registry["algol"] + AlgolNu = Registry["algol_nu"] + Arduino = Registry["arduino"] + Autumn = Registry["autumn"] + Average = Registry["average"] + Base16Snazzy = Registry["base16-snazzy"] + Borland = Registry["borland"] + BlackWhite = Registry["bw"] + CatppuccinFrappe = Registry["catppuccin-frappe"] + CatppuccinLatte = Registry["catppuccin-latte"] + CatppuccinMacchiato = Registry["catppuccin-macchiato"] + CatppuccinMocha = Registry["catppuccin-mocha"] + Colorful = Registry["colorful"] + DoomOne = Registry["doom-one"] + DoomOne2 = Registry["doom-one2"] + Dracula = Registry["dracula"] + Emacs = Registry["emacs"] + Friendly = Registry["friendly"] + Fruity = Registry["fruity"] + GitHubDark = Registry["github-dark"] + GitHub = Registry["github"] + GruvboxLight = Registry["gruvbox-light"] + Gruvbox = Registry["gruvbox"] + HrDark = Registry["hrdark"] + HrHighContrast = Registry["hr_high_contrast"] + Igor = Registry["igor"] + Lovelace = Registry["lovelace"] + Manni = Registry["manni"] + ModusOperandi = Registry["modus-operandi"] + ModusVivendi = Registry["modus-vivendi"] + Monokai = Registry["monokai"] + MonokaiLight = Registry["monokailight"] + Murphy = Registry["murphy"] + Native = Registry["native"] + Nord = Registry["nord"] + OnesEnterprise = Registry["onesenterprise"] + ParaisoDark = Registry["paraiso-dark"] + ParaisoLight = Registry["paraiso-light"] + Pastie = Registry["pastie"] + Perldoc = Registry["perldoc"] + Pygments = Registry["pygments"] + RainbowDash = Registry["rainbow_dash"] + RosePineDawn = Registry["rose-pine-dawn"] + RosePineMoon = Registry["rose-pine-moon"] + RosePine = Registry["rose-pine"] + Rrt = Registry["rrt"] + SolarizedDark = Registry["solarized-dark"] + SolarizedDark256 = Registry["solarized-dark256"] + SolarizedLight = Registry["solarized-light"] + SwapOff = Registry["swapoff"] + Tango = Registry["tango"] + Trac = Registry["trac"] + Vim = Registry["vim"] + VisualStudio = Registry["vs"] + Vulcan = Registry["vulcan"] + WitchHazel = Registry["witchhazel"] + XcodeDark = Registry["xcode-dark"] + Xcode = Registry["xcode"] +) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one.xml new file mode 100644 index 0000000..1f5127e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one.xml @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one2.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one2.xml new file mode 100644 index 0000000..f47deba --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/doom-one2.xml @@ -0,0 +1,64 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/dracula.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/dracula.xml new file mode 100644 index 0000000..9df7da1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/dracula.xml @@ -0,0 +1,74 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/emacs.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/emacs.xml new file mode 100644 index 0000000..981ce8e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/emacs.xml @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/evergarden.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/evergarden.xml new file mode 100644 index 0000000..da1d9b8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/evergarden.xml @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/friendly.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/friendly.xml new file mode 100644 index 0000000..f498010 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/friendly.xml @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/fruity.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/fruity.xml new file mode 100644 index 0000000..bcc06aa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/fruity.xml @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github-dark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github-dark.xml new file mode 100644 index 0000000..711aeaf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github-dark.xml @@ -0,0 +1,45 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github.xml new file mode 100644 index 0000000..dd6a56d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/github.xml @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox-light.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox-light.xml new file mode 100644 index 0000000..8c4f064 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox-light.xml @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox.xml new file mode 100644 index 0000000..2f6a0a2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/gruvbox.xml @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hr_high_contrast.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hr_high_contrast.xml new file mode 100644 index 0000000..61cde20 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hr_high_contrast.xml @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hrdark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hrdark.xml new file mode 100644 index 0000000..bc7a6f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/hrdark.xml @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/igor.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/igor.xml new file mode 100644 index 0000000..773c83b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/igor.xml @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/lovelace.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/lovelace.xml new file mode 100644 index 0000000..e336c93 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/lovelace.xml @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/manni.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/manni.xml new file mode 100644 index 0000000..99324bd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/manni.xml @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-operandi.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-operandi.xml new file mode 100644 index 0000000..023137a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-operandi.xml @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-vivendi.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-vivendi.xml new file mode 100644 index 0000000..8da663d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/modus-vivendi.xml @@ -0,0 +1,13 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokai.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokai.xml new file mode 100644 index 0000000..1a789dd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokai.xml @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokailight.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokailight.xml new file mode 100644 index 0000000..85cd23e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/monokailight.xml @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/murphy.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/murphy.xml new file mode 100644 index 0000000..112d620 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/murphy.xml @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/native.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/native.xml new file mode 100644 index 0000000..43eea7f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/native.xml @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nord.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nord.xml new file mode 100644 index 0000000..1c1d1ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nord.xml @@ -0,0 +1,46 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nordic.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nordic.xml new file mode 100644 index 0000000..4c36b8e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/nordic.xml @@ -0,0 +1,46 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onedark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onedark.xml new file mode 100644 index 0000000..6921eb5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onedark.xml @@ -0,0 +1,25 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onesenterprise.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onesenterprise.xml new file mode 100644 index 0000000..ce86db3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/onesenterprise.xml @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-dark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-dark.xml new file mode 100644 index 0000000..788db3f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-dark.xml @@ -0,0 +1,37 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-light.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-light.xml new file mode 100644 index 0000000..06a63ba --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/paraiso-light.xml @@ -0,0 +1,37 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pastie.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pastie.xml new file mode 100644 index 0000000..a3b0abd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pastie.xml @@ -0,0 +1,45 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/perldoc.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/perldoc.xml new file mode 100644 index 0000000..9e5564c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/perldoc.xml @@ -0,0 +1,37 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pygments.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pygments.xml new file mode 100644 index 0000000..a3d0d8b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/pygments.xml @@ -0,0 +1,42 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rainbow_dash.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rainbow_dash.xml new file mode 100644 index 0000000..5b0fe49 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rainbow_dash.xml @@ -0,0 +1,40 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-dawn.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-dawn.xml new file mode 100644 index 0000000..788bd6f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-dawn.xml @@ -0,0 +1,29 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-moon.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-moon.xml new file mode 100644 index 0000000..f67b804 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine-moon.xml @@ -0,0 +1,29 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine.xml new file mode 100644 index 0000000..3fb70a5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rose-pine.xml @@ -0,0 +1,29 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rpgle.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rpgle.xml new file mode 100644 index 0000000..678fd70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rpgle.xml @@ -0,0 +1,30 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rrt.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rrt.xml new file mode 100644 index 0000000..f2c5feb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/rrt.xml @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark.xml new file mode 100644 index 0000000..a3cf46f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark.xml @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark256.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark256.xml new file mode 100644 index 0000000..977cfbe --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-dark256.xml @@ -0,0 +1,41 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-light.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-light.xml new file mode 100644 index 0000000..4fbc1d4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/solarized-light.xml @@ -0,0 +1,17 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/swapoff.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/swapoff.xml new file mode 100644 index 0000000..8a398df --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/swapoff.xml @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tango.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tango.xml new file mode 100644 index 0000000..27f9b4b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tango.xml @@ -0,0 +1,72 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-day.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-day.xml new file mode 100644 index 0000000..c20d9a4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-day.xml @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-moon.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-moon.xml new file mode 100644 index 0000000..3312f02 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-moon.xml @@ -0,0 +1,83 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-night.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-night.xml new file mode 100644 index 0000000..c798bad --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-night.xml @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-storm.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-storm.xml new file mode 100644 index 0000000..c081152 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/tokyonight-storm.xml @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/trac.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/trac.xml new file mode 100644 index 0000000..9f1d266 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/trac.xml @@ -0,0 +1,35 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vim.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vim.xml new file mode 100644 index 0000000..fec6934 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vim.xml @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vs.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vs.xml new file mode 100644 index 0000000..5643501 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vs.xml @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vulcan.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vulcan.xml new file mode 100644 index 0000000..4e69094 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/vulcan.xml @@ -0,0 +1,74 @@ + diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/witchhazel.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/witchhazel.xml new file mode 100644 index 0000000..52f2299 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/witchhazel.xml @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode-dark.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode-dark.xml new file mode 100644 index 0000000..9343979 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode-dark.xml @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode.xml b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode.xml new file mode 100644 index 0000000..523d746 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/styles/xcode.xml @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/table.py b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/table.py new file mode 100644 index 0000000..ea4b755 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/table.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +import re +from collections import defaultdict +from subprocess import check_output + +README_FILE = "README.md" + +lines = check_output(["chroma", "--list"]).decode("utf-8").splitlines() +lines = [line.strip() for line in lines if line.startswith(" ") and not line.startswith(" ")] +lines = sorted(lines, key=lambda l: l.lower()) + +table = defaultdict(list) + +for line in lines: + table[line[0].upper()].append(line) + +rows = [] +for key, value in table.items(): + rows.append("{} | {}".format(key, ", ".join(value))) +tbody = "\n".join(rows) + +with open(README_FILE, "r") as f: + content = f.read() + +with open(README_FILE, "w") as f: + marker = re.compile(r"(?P:----: \\| --------\n).*?(?P\n\n)", re.DOTALL) + replacement = r"\g%s\g" % tbody + updated_content = marker.sub(replacement, content) + f.write(updated_content) + +print(tbody) diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/tokentype_enumer.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/tokentype_enumer.go new file mode 100644 index 0000000..c3b15f0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/tokentype_enumer.go @@ -0,0 +1,583 @@ +// Code generated by "enumer -text -type TokenType"; DO NOT EDIT. + +package chroma + +import ( + "fmt" + "strings" +) + +const _TokenTypeName = "IgnoreNoneOtherErrorCodeLineLineLinkLineTableTDLineTableLineHighlightLineNumbersTableLineNumbersLinePreWrapperBackgroundEOFTypeKeywordKeywordConstantKeywordDeclarationKeywordNamespaceKeywordPseudoKeywordReservedKeywordTypeNameNameAttributeNameClassNameConstantNameDecoratorNameEntityNameExceptionNameKeywordNameLabelNameNamespaceNameOperatorNameOtherNamePseudoNamePropertyNameTagNameBuiltinNameBuiltinPseudoNameVariableNameVariableAnonymousNameVariableClassNameVariableGlobalNameVariableInstanceNameVariableMagicNameFunctionNameFunctionMagicLiteralLiteralDateLiteralOtherLiteralStringLiteralStringAffixLiteralStringAtomLiteralStringBacktickLiteralStringBooleanLiteralStringCharLiteralStringDelimiterLiteralStringDocLiteralStringDoubleLiteralStringEscapeLiteralStringHeredocLiteralStringInterpolLiteralStringNameLiteralStringOtherLiteralStringRegexLiteralStringSingleLiteralStringSymbolLiteralNumberLiteralNumberBinLiteralNumberFloatLiteralNumberHexLiteralNumberIntegerLiteralNumberIntegerLongLiteralNumberOctLiteralNumberByteOperatorOperatorWordPunctuationCommentCommentHashbangCommentMultilineCommentSingleCommentSpecialCommentPreprocCommentPreprocFileGenericGenericDeletedGenericEmphGenericErrorGenericHeadingGenericInsertedGenericOutputGenericPromptGenericStrongGenericSubheadingGenericTracebackGenericUnderlineTextTextWhitespaceTextSymbolTextPunctuation" +const _TokenTypeLowerName = "ignorenoneothererrorcodelinelinelinklinetabletdlinetablelinehighlightlinenumberstablelinenumberslineprewrapperbackgroundeoftypekeywordkeywordconstantkeyworddeclarationkeywordnamespacekeywordpseudokeywordreservedkeywordtypenamenameattributenameclassnameconstantnamedecoratornameentitynameexceptionnamekeywordnamelabelnamenamespacenameoperatornameothernamepseudonamepropertynametagnamebuiltinnamebuiltinpseudonamevariablenamevariableanonymousnamevariableclassnamevariableglobalnamevariableinstancenamevariablemagicnamefunctionnamefunctionmagicliteralliteraldateliteralotherliteralstringliteralstringaffixliteralstringatomliteralstringbacktickliteralstringbooleanliteralstringcharliteralstringdelimiterliteralstringdocliteralstringdoubleliteralstringescapeliteralstringheredocliteralstringinterpolliteralstringnameliteralstringotherliteralstringregexliteralstringsingleliteralstringsymbolliteralnumberliteralnumberbinliteralnumberfloatliteralnumberhexliteralnumberintegerliteralnumberintegerlongliteralnumberoctliteralnumberbyteoperatoroperatorwordpunctuationcommentcommenthashbangcommentmultilinecommentsinglecommentspecialcommentpreproccommentpreprocfilegenericgenericdeletedgenericemphgenericerrorgenericheadinggenericinsertedgenericoutputgenericpromptgenericstronggenericsubheadinggenerictracebackgenericunderlinetexttextwhitespacetextsymboltextpunctuation" + +var _TokenTypeMap = map[TokenType]string{ + -14: _TokenTypeName[0:6], + -13: _TokenTypeName[6:10], + -12: _TokenTypeName[10:15], + -11: _TokenTypeName[15:20], + -10: _TokenTypeName[20:28], + -9: _TokenTypeName[28:36], + -8: _TokenTypeName[36:47], + -7: _TokenTypeName[47:56], + -6: _TokenTypeName[56:69], + -5: _TokenTypeName[69:85], + -4: _TokenTypeName[85:96], + -3: _TokenTypeName[96:100], + -2: _TokenTypeName[100:110], + -1: _TokenTypeName[110:120], + 0: _TokenTypeName[120:127], + 1000: _TokenTypeName[127:134], + 1001: _TokenTypeName[134:149], + 1002: _TokenTypeName[149:167], + 1003: _TokenTypeName[167:183], + 1004: _TokenTypeName[183:196], + 1005: _TokenTypeName[196:211], + 1006: _TokenTypeName[211:222], + 2000: _TokenTypeName[222:226], + 2001: _TokenTypeName[226:239], + 2002: _TokenTypeName[239:248], + 2003: _TokenTypeName[248:260], + 2004: _TokenTypeName[260:273], + 2005: _TokenTypeName[273:283], + 2006: _TokenTypeName[283:296], + 2007: _TokenTypeName[296:307], + 2008: _TokenTypeName[307:316], + 2009: _TokenTypeName[316:329], + 2010: _TokenTypeName[329:341], + 2011: _TokenTypeName[341:350], + 2012: _TokenTypeName[350:360], + 2013: _TokenTypeName[360:372], + 2014: _TokenTypeName[372:379], + 2100: _TokenTypeName[379:390], + 2101: _TokenTypeName[390:407], + 2200: _TokenTypeName[407:419], + 2201: _TokenTypeName[419:440], + 2202: _TokenTypeName[440:457], + 2203: _TokenTypeName[457:475], + 2204: _TokenTypeName[475:495], + 2205: _TokenTypeName[495:512], + 2300: _TokenTypeName[512:524], + 2301: _TokenTypeName[524:541], + 3000: _TokenTypeName[541:548], + 3001: _TokenTypeName[548:559], + 3002: _TokenTypeName[559:571], + 3100: _TokenTypeName[571:584], + 3101: _TokenTypeName[584:602], + 3102: _TokenTypeName[602:619], + 3103: _TokenTypeName[619:640], + 3104: _TokenTypeName[640:660], + 3105: _TokenTypeName[660:677], + 3106: _TokenTypeName[677:699], + 3107: _TokenTypeName[699:715], + 3108: _TokenTypeName[715:734], + 3109: _TokenTypeName[734:753], + 3110: _TokenTypeName[753:773], + 3111: _TokenTypeName[773:794], + 3112: _TokenTypeName[794:811], + 3113: _TokenTypeName[811:829], + 3114: _TokenTypeName[829:847], + 3115: _TokenTypeName[847:866], + 3116: _TokenTypeName[866:885], + 3200: _TokenTypeName[885:898], + 3201: _TokenTypeName[898:914], + 3202: _TokenTypeName[914:932], + 3203: _TokenTypeName[932:948], + 3204: _TokenTypeName[948:968], + 3205: _TokenTypeName[968:992], + 3206: _TokenTypeName[992:1008], + 3207: _TokenTypeName[1008:1025], + 4000: _TokenTypeName[1025:1033], + 4001: _TokenTypeName[1033:1045], + 5000: _TokenTypeName[1045:1056], + 6000: _TokenTypeName[1056:1063], + 6001: _TokenTypeName[1063:1078], + 6002: _TokenTypeName[1078:1094], + 6003: _TokenTypeName[1094:1107], + 6004: _TokenTypeName[1107:1121], + 6100: _TokenTypeName[1121:1135], + 6101: _TokenTypeName[1135:1153], + 7000: _TokenTypeName[1153:1160], + 7001: _TokenTypeName[1160:1174], + 7002: _TokenTypeName[1174:1185], + 7003: _TokenTypeName[1185:1197], + 7004: _TokenTypeName[1197:1211], + 7005: _TokenTypeName[1211:1226], + 7006: _TokenTypeName[1226:1239], + 7007: _TokenTypeName[1239:1252], + 7008: _TokenTypeName[1252:1265], + 7009: _TokenTypeName[1265:1282], + 7010: _TokenTypeName[1282:1298], + 7011: _TokenTypeName[1298:1314], + 8000: _TokenTypeName[1314:1318], + 8001: _TokenTypeName[1318:1332], + 8002: _TokenTypeName[1332:1342], + 8003: _TokenTypeName[1342:1357], +} + +func (i TokenType) String() string { + if str, ok := _TokenTypeMap[i]; ok { + return str + } + return fmt.Sprintf("TokenType(%d)", i) +} + +// An "invalid array index" compiler error signifies that the constant values have changed. +// Re-run the stringer command to generate them again. +func _TokenTypeNoOp() { + var x [1]struct{} + _ = x[Ignore-(-14)] + _ = x[None-(-13)] + _ = x[Other-(-12)] + _ = x[Error-(-11)] + _ = x[CodeLine-(-10)] + _ = x[LineLink-(-9)] + _ = x[LineTableTD-(-8)] + _ = x[LineTable-(-7)] + _ = x[LineHighlight-(-6)] + _ = x[LineNumbersTable-(-5)] + _ = x[LineNumbers-(-4)] + _ = x[Line-(-3)] + _ = x[PreWrapper-(-2)] + _ = x[Background-(-1)] + _ = x[EOFType-(0)] + _ = x[Keyword-(1000)] + _ = x[KeywordConstant-(1001)] + _ = x[KeywordDeclaration-(1002)] + _ = x[KeywordNamespace-(1003)] + _ = x[KeywordPseudo-(1004)] + _ = x[KeywordReserved-(1005)] + _ = x[KeywordType-(1006)] + _ = x[Name-(2000)] + _ = x[NameAttribute-(2001)] + _ = x[NameClass-(2002)] + _ = x[NameConstant-(2003)] + _ = x[NameDecorator-(2004)] + _ = x[NameEntity-(2005)] + _ = x[NameException-(2006)] + _ = x[NameKeyword-(2007)] + _ = x[NameLabel-(2008)] + _ = x[NameNamespace-(2009)] + _ = x[NameOperator-(2010)] + _ = x[NameOther-(2011)] + _ = x[NamePseudo-(2012)] + _ = x[NameProperty-(2013)] + _ = x[NameTag-(2014)] + _ = x[NameBuiltin-(2100)] + _ = x[NameBuiltinPseudo-(2101)] + _ = x[NameVariable-(2200)] + _ = x[NameVariableAnonymous-(2201)] + _ = x[NameVariableClass-(2202)] + _ = x[NameVariableGlobal-(2203)] + _ = x[NameVariableInstance-(2204)] + _ = x[NameVariableMagic-(2205)] + _ = x[NameFunction-(2300)] + _ = x[NameFunctionMagic-(2301)] + _ = x[Literal-(3000)] + _ = x[LiteralDate-(3001)] + _ = x[LiteralOther-(3002)] + _ = x[LiteralString-(3100)] + _ = x[LiteralStringAffix-(3101)] + _ = x[LiteralStringAtom-(3102)] + _ = x[LiteralStringBacktick-(3103)] + _ = x[LiteralStringBoolean-(3104)] + _ = x[LiteralStringChar-(3105)] + _ = x[LiteralStringDelimiter-(3106)] + _ = x[LiteralStringDoc-(3107)] + _ = x[LiteralStringDouble-(3108)] + _ = x[LiteralStringEscape-(3109)] + _ = x[LiteralStringHeredoc-(3110)] + _ = x[LiteralStringInterpol-(3111)] + _ = x[LiteralStringName-(3112)] + _ = x[LiteralStringOther-(3113)] + _ = x[LiteralStringRegex-(3114)] + _ = x[LiteralStringSingle-(3115)] + _ = x[LiteralStringSymbol-(3116)] + _ = x[LiteralNumber-(3200)] + _ = x[LiteralNumberBin-(3201)] + _ = x[LiteralNumberFloat-(3202)] + _ = x[LiteralNumberHex-(3203)] + _ = x[LiteralNumberInteger-(3204)] + _ = x[LiteralNumberIntegerLong-(3205)] + _ = x[LiteralNumberOct-(3206)] + _ = x[LiteralNumberByte-(3207)] + _ = x[Operator-(4000)] + _ = x[OperatorWord-(4001)] + _ = x[Punctuation-(5000)] + _ = x[Comment-(6000)] + _ = x[CommentHashbang-(6001)] + _ = x[CommentMultiline-(6002)] + _ = x[CommentSingle-(6003)] + _ = x[CommentSpecial-(6004)] + _ = x[CommentPreproc-(6100)] + _ = x[CommentPreprocFile-(6101)] + _ = x[Generic-(7000)] + _ = x[GenericDeleted-(7001)] + _ = x[GenericEmph-(7002)] + _ = x[GenericError-(7003)] + _ = x[GenericHeading-(7004)] + _ = x[GenericInserted-(7005)] + _ = x[GenericOutput-(7006)] + _ = x[GenericPrompt-(7007)] + _ = x[GenericStrong-(7008)] + _ = x[GenericSubheading-(7009)] + _ = x[GenericTraceback-(7010)] + _ = x[GenericUnderline-(7011)] + _ = x[Text-(8000)] + _ = x[TextWhitespace-(8001)] + _ = x[TextSymbol-(8002)] + _ = x[TextPunctuation-(8003)] +} + +var _TokenTypeValues = []TokenType{Ignore, None, Other, Error, CodeLine, LineLink, LineTableTD, LineTable, LineHighlight, LineNumbersTable, LineNumbers, Line, PreWrapper, Background, EOFType, Keyword, KeywordConstant, KeywordDeclaration, KeywordNamespace, KeywordPseudo, KeywordReserved, KeywordType, Name, NameAttribute, NameClass, NameConstant, NameDecorator, NameEntity, NameException, NameKeyword, NameLabel, NameNamespace, NameOperator, NameOther, NamePseudo, NameProperty, NameTag, NameBuiltin, NameBuiltinPseudo, NameVariable, NameVariableAnonymous, NameVariableClass, NameVariableGlobal, NameVariableInstance, NameVariableMagic, NameFunction, NameFunctionMagic, Literal, LiteralDate, LiteralOther, LiteralString, LiteralStringAffix, LiteralStringAtom, LiteralStringBacktick, LiteralStringBoolean, LiteralStringChar, LiteralStringDelimiter, LiteralStringDoc, LiteralStringDouble, LiteralStringEscape, LiteralStringHeredoc, LiteralStringInterpol, LiteralStringName, LiteralStringOther, LiteralStringRegex, LiteralStringSingle, LiteralStringSymbol, LiteralNumber, LiteralNumberBin, LiteralNumberFloat, LiteralNumberHex, LiteralNumberInteger, LiteralNumberIntegerLong, LiteralNumberOct, LiteralNumberByte, Operator, OperatorWord, Punctuation, Comment, CommentHashbang, CommentMultiline, CommentSingle, CommentSpecial, CommentPreproc, CommentPreprocFile, Generic, GenericDeleted, GenericEmph, GenericError, GenericHeading, GenericInserted, GenericOutput, GenericPrompt, GenericStrong, GenericSubheading, GenericTraceback, GenericUnderline, Text, TextWhitespace, TextSymbol, TextPunctuation} + +var _TokenTypeNameToValueMap = map[string]TokenType{ + _TokenTypeName[0:6]: Ignore, + _TokenTypeLowerName[0:6]: Ignore, + _TokenTypeName[6:10]: None, + _TokenTypeLowerName[6:10]: None, + _TokenTypeName[10:15]: Other, + _TokenTypeLowerName[10:15]: Other, + _TokenTypeName[15:20]: Error, + _TokenTypeLowerName[15:20]: Error, + _TokenTypeName[20:28]: CodeLine, + _TokenTypeLowerName[20:28]: CodeLine, + _TokenTypeName[28:36]: LineLink, + _TokenTypeLowerName[28:36]: LineLink, + _TokenTypeName[36:47]: LineTableTD, + _TokenTypeLowerName[36:47]: LineTableTD, + _TokenTypeName[47:56]: LineTable, + _TokenTypeLowerName[47:56]: LineTable, + _TokenTypeName[56:69]: LineHighlight, + _TokenTypeLowerName[56:69]: LineHighlight, + _TokenTypeName[69:85]: LineNumbersTable, + _TokenTypeLowerName[69:85]: LineNumbersTable, + _TokenTypeName[85:96]: LineNumbers, + _TokenTypeLowerName[85:96]: LineNumbers, + _TokenTypeName[96:100]: Line, + _TokenTypeLowerName[96:100]: Line, + _TokenTypeName[100:110]: PreWrapper, + _TokenTypeLowerName[100:110]: PreWrapper, + _TokenTypeName[110:120]: Background, + _TokenTypeLowerName[110:120]: Background, + _TokenTypeName[120:127]: EOFType, + _TokenTypeLowerName[120:127]: EOFType, + _TokenTypeName[127:134]: Keyword, + _TokenTypeLowerName[127:134]: Keyword, + _TokenTypeName[134:149]: KeywordConstant, + _TokenTypeLowerName[134:149]: KeywordConstant, + _TokenTypeName[149:167]: KeywordDeclaration, + _TokenTypeLowerName[149:167]: KeywordDeclaration, + _TokenTypeName[167:183]: KeywordNamespace, + _TokenTypeLowerName[167:183]: KeywordNamespace, + _TokenTypeName[183:196]: KeywordPseudo, + _TokenTypeLowerName[183:196]: KeywordPseudo, + _TokenTypeName[196:211]: KeywordReserved, + _TokenTypeLowerName[196:211]: KeywordReserved, + _TokenTypeName[211:222]: KeywordType, + _TokenTypeLowerName[211:222]: KeywordType, + _TokenTypeName[222:226]: Name, + _TokenTypeLowerName[222:226]: Name, + _TokenTypeName[226:239]: NameAttribute, + _TokenTypeLowerName[226:239]: NameAttribute, + _TokenTypeName[239:248]: NameClass, + _TokenTypeLowerName[239:248]: NameClass, + _TokenTypeName[248:260]: NameConstant, + _TokenTypeLowerName[248:260]: NameConstant, + _TokenTypeName[260:273]: NameDecorator, + _TokenTypeLowerName[260:273]: NameDecorator, + _TokenTypeName[273:283]: NameEntity, + _TokenTypeLowerName[273:283]: NameEntity, + _TokenTypeName[283:296]: NameException, + _TokenTypeLowerName[283:296]: NameException, + _TokenTypeName[296:307]: NameKeyword, + _TokenTypeLowerName[296:307]: NameKeyword, + _TokenTypeName[307:316]: NameLabel, + _TokenTypeLowerName[307:316]: NameLabel, + _TokenTypeName[316:329]: NameNamespace, + _TokenTypeLowerName[316:329]: NameNamespace, + _TokenTypeName[329:341]: NameOperator, + _TokenTypeLowerName[329:341]: NameOperator, + _TokenTypeName[341:350]: NameOther, + _TokenTypeLowerName[341:350]: NameOther, + _TokenTypeName[350:360]: NamePseudo, + _TokenTypeLowerName[350:360]: NamePseudo, + _TokenTypeName[360:372]: NameProperty, + _TokenTypeLowerName[360:372]: NameProperty, + _TokenTypeName[372:379]: NameTag, + _TokenTypeLowerName[372:379]: NameTag, + _TokenTypeName[379:390]: NameBuiltin, + _TokenTypeLowerName[379:390]: NameBuiltin, + _TokenTypeName[390:407]: NameBuiltinPseudo, + _TokenTypeLowerName[390:407]: NameBuiltinPseudo, + _TokenTypeName[407:419]: NameVariable, + _TokenTypeLowerName[407:419]: NameVariable, + _TokenTypeName[419:440]: NameVariableAnonymous, + _TokenTypeLowerName[419:440]: NameVariableAnonymous, + _TokenTypeName[440:457]: NameVariableClass, + _TokenTypeLowerName[440:457]: NameVariableClass, + _TokenTypeName[457:475]: NameVariableGlobal, + _TokenTypeLowerName[457:475]: NameVariableGlobal, + _TokenTypeName[475:495]: NameVariableInstance, + _TokenTypeLowerName[475:495]: NameVariableInstance, + _TokenTypeName[495:512]: NameVariableMagic, + _TokenTypeLowerName[495:512]: NameVariableMagic, + _TokenTypeName[512:524]: NameFunction, + _TokenTypeLowerName[512:524]: NameFunction, + _TokenTypeName[524:541]: NameFunctionMagic, + _TokenTypeLowerName[524:541]: NameFunctionMagic, + _TokenTypeName[541:548]: Literal, + _TokenTypeLowerName[541:548]: Literal, + _TokenTypeName[548:559]: LiteralDate, + _TokenTypeLowerName[548:559]: LiteralDate, + _TokenTypeName[559:571]: LiteralOther, + _TokenTypeLowerName[559:571]: LiteralOther, + _TokenTypeName[571:584]: LiteralString, + _TokenTypeLowerName[571:584]: LiteralString, + _TokenTypeName[584:602]: LiteralStringAffix, + _TokenTypeLowerName[584:602]: LiteralStringAffix, + _TokenTypeName[602:619]: LiteralStringAtom, + _TokenTypeLowerName[602:619]: LiteralStringAtom, + _TokenTypeName[619:640]: LiteralStringBacktick, + _TokenTypeLowerName[619:640]: LiteralStringBacktick, + _TokenTypeName[640:660]: LiteralStringBoolean, + _TokenTypeLowerName[640:660]: LiteralStringBoolean, + _TokenTypeName[660:677]: LiteralStringChar, + _TokenTypeLowerName[660:677]: LiteralStringChar, + _TokenTypeName[677:699]: LiteralStringDelimiter, + _TokenTypeLowerName[677:699]: LiteralStringDelimiter, + _TokenTypeName[699:715]: LiteralStringDoc, + _TokenTypeLowerName[699:715]: LiteralStringDoc, + _TokenTypeName[715:734]: LiteralStringDouble, + _TokenTypeLowerName[715:734]: LiteralStringDouble, + _TokenTypeName[734:753]: LiteralStringEscape, + _TokenTypeLowerName[734:753]: LiteralStringEscape, + _TokenTypeName[753:773]: LiteralStringHeredoc, + _TokenTypeLowerName[753:773]: LiteralStringHeredoc, + _TokenTypeName[773:794]: LiteralStringInterpol, + _TokenTypeLowerName[773:794]: LiteralStringInterpol, + _TokenTypeName[794:811]: LiteralStringName, + _TokenTypeLowerName[794:811]: LiteralStringName, + _TokenTypeName[811:829]: LiteralStringOther, + _TokenTypeLowerName[811:829]: LiteralStringOther, + _TokenTypeName[829:847]: LiteralStringRegex, + _TokenTypeLowerName[829:847]: LiteralStringRegex, + _TokenTypeName[847:866]: LiteralStringSingle, + _TokenTypeLowerName[847:866]: LiteralStringSingle, + _TokenTypeName[866:885]: LiteralStringSymbol, + _TokenTypeLowerName[866:885]: LiteralStringSymbol, + _TokenTypeName[885:898]: LiteralNumber, + _TokenTypeLowerName[885:898]: LiteralNumber, + _TokenTypeName[898:914]: LiteralNumberBin, + _TokenTypeLowerName[898:914]: LiteralNumberBin, + _TokenTypeName[914:932]: LiteralNumberFloat, + _TokenTypeLowerName[914:932]: LiteralNumberFloat, + _TokenTypeName[932:948]: LiteralNumberHex, + _TokenTypeLowerName[932:948]: LiteralNumberHex, + _TokenTypeName[948:968]: LiteralNumberInteger, + _TokenTypeLowerName[948:968]: LiteralNumberInteger, + _TokenTypeName[968:992]: LiteralNumberIntegerLong, + _TokenTypeLowerName[968:992]: LiteralNumberIntegerLong, + _TokenTypeName[992:1008]: LiteralNumberOct, + _TokenTypeLowerName[992:1008]: LiteralNumberOct, + _TokenTypeName[1008:1025]: LiteralNumberByte, + _TokenTypeLowerName[1008:1025]: LiteralNumberByte, + _TokenTypeName[1025:1033]: Operator, + _TokenTypeLowerName[1025:1033]: Operator, + _TokenTypeName[1033:1045]: OperatorWord, + _TokenTypeLowerName[1033:1045]: OperatorWord, + _TokenTypeName[1045:1056]: Punctuation, + _TokenTypeLowerName[1045:1056]: Punctuation, + _TokenTypeName[1056:1063]: Comment, + _TokenTypeLowerName[1056:1063]: Comment, + _TokenTypeName[1063:1078]: CommentHashbang, + _TokenTypeLowerName[1063:1078]: CommentHashbang, + _TokenTypeName[1078:1094]: CommentMultiline, + _TokenTypeLowerName[1078:1094]: CommentMultiline, + _TokenTypeName[1094:1107]: CommentSingle, + _TokenTypeLowerName[1094:1107]: CommentSingle, + _TokenTypeName[1107:1121]: CommentSpecial, + _TokenTypeLowerName[1107:1121]: CommentSpecial, + _TokenTypeName[1121:1135]: CommentPreproc, + _TokenTypeLowerName[1121:1135]: CommentPreproc, + _TokenTypeName[1135:1153]: CommentPreprocFile, + _TokenTypeLowerName[1135:1153]: CommentPreprocFile, + _TokenTypeName[1153:1160]: Generic, + _TokenTypeLowerName[1153:1160]: Generic, + _TokenTypeName[1160:1174]: GenericDeleted, + _TokenTypeLowerName[1160:1174]: GenericDeleted, + _TokenTypeName[1174:1185]: GenericEmph, + _TokenTypeLowerName[1174:1185]: GenericEmph, + _TokenTypeName[1185:1197]: GenericError, + _TokenTypeLowerName[1185:1197]: GenericError, + _TokenTypeName[1197:1211]: GenericHeading, + _TokenTypeLowerName[1197:1211]: GenericHeading, + _TokenTypeName[1211:1226]: GenericInserted, + _TokenTypeLowerName[1211:1226]: GenericInserted, + _TokenTypeName[1226:1239]: GenericOutput, + _TokenTypeLowerName[1226:1239]: GenericOutput, + _TokenTypeName[1239:1252]: GenericPrompt, + _TokenTypeLowerName[1239:1252]: GenericPrompt, + _TokenTypeName[1252:1265]: GenericStrong, + _TokenTypeLowerName[1252:1265]: GenericStrong, + _TokenTypeName[1265:1282]: GenericSubheading, + _TokenTypeLowerName[1265:1282]: GenericSubheading, + _TokenTypeName[1282:1298]: GenericTraceback, + _TokenTypeLowerName[1282:1298]: GenericTraceback, + _TokenTypeName[1298:1314]: GenericUnderline, + _TokenTypeLowerName[1298:1314]: GenericUnderline, + _TokenTypeName[1314:1318]: Text, + _TokenTypeLowerName[1314:1318]: Text, + _TokenTypeName[1318:1332]: TextWhitespace, + _TokenTypeLowerName[1318:1332]: TextWhitespace, + _TokenTypeName[1332:1342]: TextSymbol, + _TokenTypeLowerName[1332:1342]: TextSymbol, + _TokenTypeName[1342:1357]: TextPunctuation, + _TokenTypeLowerName[1342:1357]: TextPunctuation, +} + +var _TokenTypeNames = []string{ + _TokenTypeName[0:6], + _TokenTypeName[6:10], + _TokenTypeName[10:15], + _TokenTypeName[15:20], + _TokenTypeName[20:28], + _TokenTypeName[28:36], + _TokenTypeName[36:47], + _TokenTypeName[47:56], + _TokenTypeName[56:69], + _TokenTypeName[69:85], + _TokenTypeName[85:96], + _TokenTypeName[96:100], + _TokenTypeName[100:110], + _TokenTypeName[110:120], + _TokenTypeName[120:127], + _TokenTypeName[127:134], + _TokenTypeName[134:149], + _TokenTypeName[149:167], + _TokenTypeName[167:183], + _TokenTypeName[183:196], + _TokenTypeName[196:211], + _TokenTypeName[211:222], + _TokenTypeName[222:226], + _TokenTypeName[226:239], + _TokenTypeName[239:248], + _TokenTypeName[248:260], + _TokenTypeName[260:273], + _TokenTypeName[273:283], + _TokenTypeName[283:296], + _TokenTypeName[296:307], + _TokenTypeName[307:316], + _TokenTypeName[316:329], + _TokenTypeName[329:341], + _TokenTypeName[341:350], + _TokenTypeName[350:360], + _TokenTypeName[360:372], + _TokenTypeName[372:379], + _TokenTypeName[379:390], + _TokenTypeName[390:407], + _TokenTypeName[407:419], + _TokenTypeName[419:440], + _TokenTypeName[440:457], + _TokenTypeName[457:475], + _TokenTypeName[475:495], + _TokenTypeName[495:512], + _TokenTypeName[512:524], + _TokenTypeName[524:541], + _TokenTypeName[541:548], + _TokenTypeName[548:559], + _TokenTypeName[559:571], + _TokenTypeName[571:584], + _TokenTypeName[584:602], + _TokenTypeName[602:619], + _TokenTypeName[619:640], + _TokenTypeName[640:660], + _TokenTypeName[660:677], + _TokenTypeName[677:699], + _TokenTypeName[699:715], + _TokenTypeName[715:734], + _TokenTypeName[734:753], + _TokenTypeName[753:773], + _TokenTypeName[773:794], + _TokenTypeName[794:811], + _TokenTypeName[811:829], + _TokenTypeName[829:847], + _TokenTypeName[847:866], + _TokenTypeName[866:885], + _TokenTypeName[885:898], + _TokenTypeName[898:914], + _TokenTypeName[914:932], + _TokenTypeName[932:948], + _TokenTypeName[948:968], + _TokenTypeName[968:992], + _TokenTypeName[992:1008], + _TokenTypeName[1008:1025], + _TokenTypeName[1025:1033], + _TokenTypeName[1033:1045], + _TokenTypeName[1045:1056], + _TokenTypeName[1056:1063], + _TokenTypeName[1063:1078], + _TokenTypeName[1078:1094], + _TokenTypeName[1094:1107], + _TokenTypeName[1107:1121], + _TokenTypeName[1121:1135], + _TokenTypeName[1135:1153], + _TokenTypeName[1153:1160], + _TokenTypeName[1160:1174], + _TokenTypeName[1174:1185], + _TokenTypeName[1185:1197], + _TokenTypeName[1197:1211], + _TokenTypeName[1211:1226], + _TokenTypeName[1226:1239], + _TokenTypeName[1239:1252], + _TokenTypeName[1252:1265], + _TokenTypeName[1265:1282], + _TokenTypeName[1282:1298], + _TokenTypeName[1298:1314], + _TokenTypeName[1314:1318], + _TokenTypeName[1318:1332], + _TokenTypeName[1332:1342], + _TokenTypeName[1342:1357], +} + +// TokenTypeString retrieves an enum value from the enum constants string name. +// Throws an error if the param is not part of the enum. +func TokenTypeString(s string) (TokenType, error) { + if val, ok := _TokenTypeNameToValueMap[s]; ok { + return val, nil + } + + if val, ok := _TokenTypeNameToValueMap[strings.ToLower(s)]; ok { + return val, nil + } + return 0, fmt.Errorf("%s does not belong to TokenType values", s) +} + +// TokenTypeValues returns all values of the enum +func TokenTypeValues() []TokenType { + return _TokenTypeValues +} + +// TokenTypeStrings returns a slice of all String values of the enum +func TokenTypeStrings() []string { + strs := make([]string, len(_TokenTypeNames)) + copy(strs, _TokenTypeNames) + return strs +} + +// IsATokenType returns "true" if the value is listed in the enum definition. "false" otherwise +func (i TokenType) IsATokenType() bool { + _, ok := _TokenTypeMap[i] + return ok +} + +// MarshalText implements the encoding.TextMarshaler interface for TokenType +func (i TokenType) MarshalText() ([]byte, error) { + return []byte(i.String()), nil +} + +// UnmarshalText implements the encoding.TextUnmarshaler interface for TokenType +func (i *TokenType) UnmarshalText(text []byte) error { + var err error + *i, err = TokenTypeString(string(text)) + return err +} diff --git a/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/types.go b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/types.go new file mode 100644 index 0000000..3009f98 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/alecthomas/chroma/v2/types.go @@ -0,0 +1,355 @@ +package chroma + +//go:generate enumer -text -type TokenType + +// TokenType is the type of token to highlight. +// +// It is also an Emitter, emitting a single token of itself +type TokenType int + +// Set of TokenTypes. +// +// Categories of types are grouped in ranges of 1000, while sub-categories are in ranges of 100. For +// example, the literal category is in the range 3000-3999. The sub-category for literal strings is +// in the range 3100-3199. + +// Meta token types. +const ( + // Default background style. + Background TokenType = -1 - iota + // PreWrapper style. + PreWrapper + // Line style. + Line + // Line numbers in output. + LineNumbers + // Line numbers in output when in table. + LineNumbersTable + // Line higlight style. + LineHighlight + // Line numbers table wrapper style. + LineTable + // Line numbers table TD wrapper style. + LineTableTD + // Line number links. + LineLink + // Code line wrapper style. + CodeLine + // Input that could not be tokenised. + Error + // Other is used by the Delegate lexer to indicate which tokens should be handled by the delegate. + Other + // No highlighting. + None + // Don't emit this token to the output. + Ignore + // Used as an EOF marker / nil token + EOFType TokenType = 0 +) + +// Keywords. +const ( + Keyword TokenType = 1000 + iota + KeywordConstant + KeywordDeclaration + KeywordNamespace + KeywordPseudo + KeywordReserved + KeywordType +) + +// Names. +const ( + Name TokenType = 2000 + iota + NameAttribute + NameClass + NameConstant + NameDecorator + NameEntity + NameException + NameKeyword + NameLabel + NameNamespace + NameOperator + NameOther + NamePseudo + NameProperty + NameTag +) + +// Builtin names. +const ( + NameBuiltin TokenType = 2100 + iota + NameBuiltinPseudo +) + +// Variable names. +const ( + NameVariable TokenType = 2200 + iota + NameVariableAnonymous + NameVariableClass + NameVariableGlobal + NameVariableInstance + NameVariableMagic +) + +// Function names. +const ( + NameFunction TokenType = 2300 + iota + NameFunctionMagic +) + +// Literals. +const ( + Literal TokenType = 3000 + iota + LiteralDate + LiteralOther +) + +// Strings. +const ( + LiteralString TokenType = 3100 + iota + LiteralStringAffix + LiteralStringAtom + LiteralStringBacktick + LiteralStringBoolean + LiteralStringChar + LiteralStringDelimiter + LiteralStringDoc + LiteralStringDouble + LiteralStringEscape + LiteralStringHeredoc + LiteralStringInterpol + LiteralStringName + LiteralStringOther + LiteralStringRegex + LiteralStringSingle + LiteralStringSymbol +) + +// Literals. +const ( + LiteralNumber TokenType = 3200 + iota + LiteralNumberBin + LiteralNumberFloat + LiteralNumberHex + LiteralNumberInteger + LiteralNumberIntegerLong + LiteralNumberOct + LiteralNumberByte +) + +// Operators. +const ( + Operator TokenType = 4000 + iota + OperatorWord +) + +// Punctuation. +const ( + Punctuation TokenType = 5000 + iota +) + +// Comments. +const ( + Comment TokenType = 6000 + iota + CommentHashbang + CommentMultiline + CommentSingle + CommentSpecial +) + +// Preprocessor "comments". +const ( + CommentPreproc TokenType = 6100 + iota + CommentPreprocFile +) + +// Generic tokens. +const ( + Generic TokenType = 7000 + iota + GenericDeleted + GenericEmph + GenericError + GenericHeading + GenericInserted + GenericOutput + GenericPrompt + GenericStrong + GenericSubheading + GenericTraceback + GenericUnderline +) + +// Text. +const ( + Text TokenType = 8000 + iota + TextWhitespace + TextSymbol + TextPunctuation +) + +// Aliases. +const ( + Whitespace = TextWhitespace + + Date = LiteralDate + + String = LiteralString + StringAffix = LiteralStringAffix + StringBacktick = LiteralStringBacktick + StringChar = LiteralStringChar + StringDelimiter = LiteralStringDelimiter + StringDoc = LiteralStringDoc + StringDouble = LiteralStringDouble + StringEscape = LiteralStringEscape + StringHeredoc = LiteralStringHeredoc + StringInterpol = LiteralStringInterpol + StringOther = LiteralStringOther + StringRegex = LiteralStringRegex + StringSingle = LiteralStringSingle + StringSymbol = LiteralStringSymbol + + Number = LiteralNumber + NumberBin = LiteralNumberBin + NumberFloat = LiteralNumberFloat + NumberHex = LiteralNumberHex + NumberInteger = LiteralNumberInteger + NumberIntegerLong = LiteralNumberIntegerLong + NumberOct = LiteralNumberOct +) + +var ( + StandardTypes = map[TokenType]string{ + Background: "bg", + PreWrapper: "chroma", + Line: "line", + LineNumbers: "ln", + LineNumbersTable: "lnt", + LineHighlight: "hl", + LineTable: "lntable", + LineTableTD: "lntd", + LineLink: "lnlinks", + CodeLine: "cl", + Text: "", + Whitespace: "w", + Error: "err", + Other: "x", + // I have no idea what this is used for... + // Escape: "esc", + + Keyword: "k", + KeywordConstant: "kc", + KeywordDeclaration: "kd", + KeywordNamespace: "kn", + KeywordPseudo: "kp", + KeywordReserved: "kr", + KeywordType: "kt", + + Name: "n", + NameAttribute: "na", + NameBuiltin: "nb", + NameBuiltinPseudo: "bp", + NameClass: "nc", + NameConstant: "no", + NameDecorator: "nd", + NameEntity: "ni", + NameException: "ne", + NameFunction: "nf", + NameFunctionMagic: "fm", + NameProperty: "py", + NameLabel: "nl", + NameNamespace: "nn", + NameOther: "nx", + NameTag: "nt", + NameVariable: "nv", + NameVariableClass: "vc", + NameVariableGlobal: "vg", + NameVariableInstance: "vi", + NameVariableMagic: "vm", + + Literal: "l", + LiteralDate: "ld", + + String: "s", + StringAffix: "sa", + StringBacktick: "sb", + StringChar: "sc", + StringDelimiter: "dl", + StringDoc: "sd", + StringDouble: "s2", + StringEscape: "se", + StringHeredoc: "sh", + StringInterpol: "si", + StringOther: "sx", + StringRegex: "sr", + StringSingle: "s1", + StringSymbol: "ss", + + Number: "m", + NumberBin: "mb", + NumberFloat: "mf", + NumberHex: "mh", + NumberInteger: "mi", + NumberIntegerLong: "il", + NumberOct: "mo", + + Operator: "o", + OperatorWord: "ow", + + Punctuation: "p", + + Comment: "c", + CommentHashbang: "ch", + CommentMultiline: "cm", + CommentPreproc: "cp", + CommentPreprocFile: "cpf", + CommentSingle: "c1", + CommentSpecial: "cs", + + Generic: "g", + GenericDeleted: "gd", + GenericEmph: "ge", + GenericError: "gr", + GenericHeading: "gh", + GenericInserted: "gi", + GenericOutput: "go", + GenericPrompt: "gp", + GenericStrong: "gs", + GenericSubheading: "gu", + GenericTraceback: "gt", + GenericUnderline: "gl", + } +) + +func (t TokenType) Parent() TokenType { + if t%100 != 0 { + return t / 100 * 100 + } + if t%1000 != 0 { + return t / 1000 * 1000 + } + return 0 +} + +func (t TokenType) Category() TokenType { + return t / 1000 * 1000 +} + +func (t TokenType) SubCategory() TokenType { + return t / 100 * 100 +} + +func (t TokenType) InCategory(other TokenType) bool { + return t/1000 == other/1000 +} + +func (t TokenType) InSubCategory(other TokenType) bool { + return t/100 == other/100 +} + +func (t TokenType) Emit(groups []string, _ *LexerState) Iterator { + return Literator(Token{Type: t, Value: groups[0]}) +} + +func (t TokenType) EmitterKind() string { return "token" } diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/.travis.yml b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/.travis.yml new file mode 100644 index 0000000..23f21d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/.travis.yml @@ -0,0 +1,22 @@ +language: go + +os: + - linux + - osx + - windows + +go: + - go1.13.x + - go1.x + +services: + - xvfb + +before_install: + - export DISPLAY=:99.0 + +script: + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install xsel; fi + - go test -v . + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install xclip; fi + - go test -v . diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/LICENSE b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/LICENSE new file mode 100644 index 0000000..dee3257 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2013 Ato Araki. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of @atotto. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/README.md b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/README.md new file mode 100644 index 0000000..41fdd57 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/README.md @@ -0,0 +1,48 @@ +[![Build Status](https://travis-ci.org/atotto/clipboard.svg?branch=master)](https://travis-ci.org/atotto/clipboard) + +[![GoDoc](https://godoc.org/github.com/atotto/clipboard?status.svg)](http://godoc.org/github.com/atotto/clipboard) + +# Clipboard for Go + +Provide copying and pasting to the Clipboard for Go. + +Build: + + $ go get github.com/atotto/clipboard + +Platforms: + +* OSX +* Windows 7 (probably work on other Windows) +* Linux, Unix (requires 'xclip' or 'xsel' command to be installed) + + +Document: + +* http://godoc.org/github.com/atotto/clipboard + +Notes: + +* Text string only +* UTF-8 text encoding only (no conversion) + +TODO: + +* Clipboard watcher(?) + +## Commands: + +paste shell command: + + $ go get github.com/atotto/clipboard/cmd/gopaste + $ # example: + $ gopaste > document.txt + +copy shell command: + + $ go get github.com/atotto/clipboard/cmd/gocopy + $ # example: + $ cat document.txt | gocopy + + + diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard.go b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard.go new file mode 100644 index 0000000..d7907d3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard.go @@ -0,0 +1,20 @@ +// Copyright 2013 @atotto. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package clipboard read/write on clipboard +package clipboard + +// ReadAll read string from clipboard +func ReadAll() (string, error) { + return readAll() +} + +// WriteAll write string to clipboard +func WriteAll(text string) error { + return writeAll(text) +} + +// Unsupported might be set true during clipboard init, to help callers decide +// whether or not to offer clipboard options. +var Unsupported bool diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_darwin.go b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_darwin.go new file mode 100644 index 0000000..6f33078 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_darwin.go @@ -0,0 +1,52 @@ +// Copyright 2013 @atotto. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin + +package clipboard + +import ( + "os/exec" +) + +var ( + pasteCmdArgs = "pbpaste" + copyCmdArgs = "pbcopy" +) + +func getPasteCommand() *exec.Cmd { + return exec.Command(pasteCmdArgs) +} + +func getCopyCommand() *exec.Cmd { + return exec.Command(copyCmdArgs) +} + +func readAll() (string, error) { + pasteCmd := getPasteCommand() + out, err := pasteCmd.Output() + if err != nil { + return "", err + } + return string(out), nil +} + +func writeAll(text string) error { + copyCmd := getCopyCommand() + in, err := copyCmd.StdinPipe() + if err != nil { + return err + } + + if err := copyCmd.Start(); err != nil { + return err + } + if _, err := in.Write([]byte(text)); err != nil { + return err + } + if err := in.Close(); err != nil { + return err + } + return copyCmd.Wait() +} diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_plan9.go b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_plan9.go new file mode 100644 index 0000000..9d2fef4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_plan9.go @@ -0,0 +1,42 @@ +// Copyright 2013 @atotto. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build plan9 + +package clipboard + +import ( + "os" + "io/ioutil" +) + +func readAll() (string, error) { + f, err := os.Open("/dev/snarf") + if err != nil { + return "", err + } + defer f.Close() + + str, err := ioutil.ReadAll(f) + if err != nil { + return "", err + } + + return string(str), nil +} + +func writeAll(text string) error { + f, err := os.OpenFile("/dev/snarf", os.O_WRONLY, 0666) + if err != nil { + return err + } + defer f.Close() + + _, err = f.Write([]byte(text)) + if err != nil { + return err + } + + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_unix.go b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_unix.go new file mode 100644 index 0000000..d9f6a56 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_unix.go @@ -0,0 +1,149 @@ +// Copyright 2013 @atotto. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd linux netbsd openbsd solaris dragonfly + +package clipboard + +import ( + "errors" + "os" + "os/exec" +) + +const ( + xsel = "xsel" + xclip = "xclip" + powershellExe = "powershell.exe" + clipExe = "clip.exe" + wlcopy = "wl-copy" + wlpaste = "wl-paste" + termuxClipboardGet = "termux-clipboard-get" + termuxClipboardSet = "termux-clipboard-set" +) + +var ( + Primary bool + trimDos bool + + pasteCmdArgs []string + copyCmdArgs []string + + xselPasteArgs = []string{xsel, "--output", "--clipboard"} + xselCopyArgs = []string{xsel, "--input", "--clipboard"} + + xclipPasteArgs = []string{xclip, "-out", "-selection", "clipboard"} + xclipCopyArgs = []string{xclip, "-in", "-selection", "clipboard"} + + powershellExePasteArgs = []string{powershellExe, "Get-Clipboard"} + clipExeCopyArgs = []string{clipExe} + + wlpasteArgs = []string{wlpaste, "--no-newline"} + wlcopyArgs = []string{wlcopy} + + termuxPasteArgs = []string{termuxClipboardGet} + termuxCopyArgs = []string{termuxClipboardSet} + + missingCommands = errors.New("No clipboard utilities available. Please install xsel, xclip, wl-clipboard or Termux:API add-on for termux-clipboard-get/set.") +) + +func init() { + if os.Getenv("WAYLAND_DISPLAY") != "" { + pasteCmdArgs = wlpasteArgs + copyCmdArgs = wlcopyArgs + + if _, err := exec.LookPath(wlcopy); err == nil { + if _, err := exec.LookPath(wlpaste); err == nil { + return + } + } + } + + pasteCmdArgs = xclipPasteArgs + copyCmdArgs = xclipCopyArgs + + if _, err := exec.LookPath(xclip); err == nil { + return + } + + pasteCmdArgs = xselPasteArgs + copyCmdArgs = xselCopyArgs + + if _, err := exec.LookPath(xsel); err == nil { + return + } + + pasteCmdArgs = termuxPasteArgs + copyCmdArgs = termuxCopyArgs + + if _, err := exec.LookPath(termuxClipboardSet); err == nil { + if _, err := exec.LookPath(termuxClipboardGet); err == nil { + return + } + } + + pasteCmdArgs = powershellExePasteArgs + copyCmdArgs = clipExeCopyArgs + trimDos = true + + if _, err := exec.LookPath(clipExe); err == nil { + if _, err := exec.LookPath(powershellExe); err == nil { + return + } + } + + Unsupported = true +} + +func getPasteCommand() *exec.Cmd { + if Primary { + pasteCmdArgs = pasteCmdArgs[:1] + } + return exec.Command(pasteCmdArgs[0], pasteCmdArgs[1:]...) +} + +func getCopyCommand() *exec.Cmd { + if Primary { + copyCmdArgs = copyCmdArgs[:1] + } + return exec.Command(copyCmdArgs[0], copyCmdArgs[1:]...) +} + +func readAll() (string, error) { + if Unsupported { + return "", missingCommands + } + pasteCmd := getPasteCommand() + out, err := pasteCmd.Output() + if err != nil { + return "", err + } + result := string(out) + if trimDos && len(result) > 1 { + result = result[:len(result)-2] + } + return result, nil +} + +func writeAll(text string) error { + if Unsupported { + return missingCommands + } + copyCmd := getCopyCommand() + in, err := copyCmd.StdinPipe() + if err != nil { + return err + } + + if err := copyCmd.Start(); err != nil { + return err + } + if _, err := in.Write([]byte(text)); err != nil { + return err + } + if err := in.Close(); err != nil { + return err + } + return copyCmd.Wait() +} diff --git a/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_windows.go b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_windows.go new file mode 100644 index 0000000..253bb93 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/atotto/clipboard/clipboard_windows.go @@ -0,0 +1,157 @@ +// Copyright 2013 @atotto. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package clipboard + +import ( + "runtime" + "syscall" + "time" + "unsafe" +) + +const ( + cfUnicodetext = 13 + gmemMoveable = 0x0002 +) + +var ( + user32 = syscall.MustLoadDLL("user32") + isClipboardFormatAvailable = user32.MustFindProc("IsClipboardFormatAvailable") + openClipboard = user32.MustFindProc("OpenClipboard") + closeClipboard = user32.MustFindProc("CloseClipboard") + emptyClipboard = user32.MustFindProc("EmptyClipboard") + getClipboardData = user32.MustFindProc("GetClipboardData") + setClipboardData = user32.MustFindProc("SetClipboardData") + + kernel32 = syscall.NewLazyDLL("kernel32") + globalAlloc = kernel32.NewProc("GlobalAlloc") + globalFree = kernel32.NewProc("GlobalFree") + globalLock = kernel32.NewProc("GlobalLock") + globalUnlock = kernel32.NewProc("GlobalUnlock") + lstrcpy = kernel32.NewProc("lstrcpyW") +) + +// waitOpenClipboard opens the clipboard, waiting for up to a second to do so. +func waitOpenClipboard() error { + started := time.Now() + limit := started.Add(time.Second) + var r uintptr + var err error + for time.Now().Before(limit) { + r, _, err = openClipboard.Call(0) + if r != 0 { + return nil + } + time.Sleep(time.Millisecond) + } + return err +} + +func readAll() (string, error) { + // LockOSThread ensure that the whole method will keep executing on the same thread from begin to end (it actually locks the goroutine thread attribution). + // Otherwise if the goroutine switch thread during execution (which is a common practice), the OpenClipboard and CloseClipboard will happen on two different threads, and it will result in a clipboard deadlock. + runtime.LockOSThread() + defer runtime.UnlockOSThread() + if formatAvailable, _, err := isClipboardFormatAvailable.Call(cfUnicodetext); formatAvailable == 0 { + return "", err + } + err := waitOpenClipboard() + if err != nil { + return "", err + } + + h, _, err := getClipboardData.Call(cfUnicodetext) + if h == 0 { + _, _, _ = closeClipboard.Call() + return "", err + } + + l, _, err := globalLock.Call(h) + if l == 0 { + _, _, _ = closeClipboard.Call() + return "", err + } + + text := syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(l))[:]) + + r, _, err := globalUnlock.Call(h) + if r == 0 { + _, _, _ = closeClipboard.Call() + return "", err + } + + closed, _, err := closeClipboard.Call() + if closed == 0 { + return "", err + } + return text, nil +} + +func writeAll(text string) error { + // LockOSThread ensure that the whole method will keep executing on the same thread from begin to end (it actually locks the goroutine thread attribution). + // Otherwise if the goroutine switch thread during execution (which is a common practice), the OpenClipboard and CloseClipboard will happen on two different threads, and it will result in a clipboard deadlock. + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + err := waitOpenClipboard() + if err != nil { + return err + } + + r, _, err := emptyClipboard.Call(0) + if r == 0 { + _, _, _ = closeClipboard.Call() + return err + } + + data := syscall.StringToUTF16(text) + + // "If the hMem parameter identifies a memory object, the object must have + // been allocated using the function with the GMEM_MOVEABLE flag." + h, _, err := globalAlloc.Call(gmemMoveable, uintptr(len(data)*int(unsafe.Sizeof(data[0])))) + if h == 0 { + _, _, _ = closeClipboard.Call() + return err + } + defer func() { + if h != 0 { + globalFree.Call(h) + } + }() + + l, _, err := globalLock.Call(h) + if l == 0 { + _, _, _ = closeClipboard.Call() + return err + } + + r, _, err = lstrcpy.Call(l, uintptr(unsafe.Pointer(&data[0]))) + if r == 0 { + _, _, _ = closeClipboard.Call() + return err + } + + r, _, err = globalUnlock.Call(h) + if r == 0 { + if err.(syscall.Errno) != 0 { + _, _, _ = closeClipboard.Call() + return err + } + } + + r, _, err = setClipboardData.Call(cfUnicodetext, h) + if r == 0 { + _, _, _ = closeClipboard.Call() + return err + } + h = 0 // suppress deferred cleanup + closed, _, err := closeClipboard.Call() + if closed == 0 { + return err + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/LICENSE b/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/LICENSE new file mode 100644 index 0000000..25cec1e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Ayman Bagabas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/README.md b/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/README.md new file mode 100644 index 0000000..4de3a22 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/README.md @@ -0,0 +1,83 @@ + +# go-osc52 + +

+ Latest Release + GoDoc +

+ +A Go library to work with the [ANSI OSC52](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands) terminal sequence. + +## Usage + +You can use this small library to construct an ANSI OSC52 sequence suitable for +your terminal. + + +### Example + +```go +import ( + "os" + "fmt" + + "github.com/aymanbagabas/go-osc52/v2" +) + +func main() { + s := "Hello World!" + + // Copy `s` to system clipboard + osc52.New(s).WriteTo(os.Stderr) + + // Copy `s` to primary clipboard (X11) + osc52.New(s).Primary().WriteTo(os.Stderr) + + // Query the clipboard + osc52.Query().WriteTo(os.Stderr) + + // Clear system clipboard + osc52.Clear().WriteTo(os.Stderr) + + // Use the fmt.Stringer interface to copy `s` to system clipboard + fmt.Fprint(os.Stderr, osc52.New(s)) + + // Or to primary clipboard + fmt.Fprint(os.Stderr, osc52.New(s).Primary()) +} +``` + +## SSH Example + +You can use this over SSH using [gliderlabs/ssh](https://github.com/gliderlabs/ssh) for instance: + +```go +var sshSession ssh.Session +seq := osc52.New("Hello awesome!") +// Check if term is screen or tmux +pty, _, _ := s.Pty() +if pty.Term == "screen" { + seq = seq.Screen() +} else if isTmux { + seq = seq.Tmux() +} +seq.WriteTo(sshSession.Stderr()) +``` + +## Tmux + +Make sure you have `set-clipboard on` in your config, otherwise, tmux won't +allow your application to access the clipboard [^1]. + +Using the tmux option, `osc52.TmuxMode` or `osc52.New(...).Tmux()`, wraps the +OSC52 sequence in a special tmux DCS sequence and pass it to the outer +terminal. This requires `allow-passthrough on` in your config. +`allow-passthrough` is no longer enabled by default +[since tmux 3.3a](https://github.com/tmux/tmux/issues/3218#issuecomment-1153089282) [^2]. + +[^1]: See [tmux clipboard](https://github.com/tmux/tmux/wiki/Clipboard) +[^2]: [What is allow-passthrough](https://github.com/tmux/tmux/wiki/FAQ#what-is-the-passthrough-escape-sequence-and-how-do-i-use-it) + +## Credits + +* [vim-oscyank](https://github.com/ojroques/vim-oscyank) this is heavily inspired by vim-oscyank. diff --git a/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/osc52.go b/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/osc52.go new file mode 100644 index 0000000..dc758d2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/aymanbagabas/go-osc52/v2/osc52.go @@ -0,0 +1,305 @@ +// OSC52 is a terminal escape sequence that allows copying text to the clipboard. +// +// The sequence consists of the following: +// +// OSC 52 ; Pc ; Pd BEL +// +// Pc is the clipboard choice: +// +// c: clipboard +// p: primary +// q: secondary (not supported) +// s: select (not supported) +// 0-7: cut-buffers (not supported) +// +// Pd is the data to copy to the clipboard. This string should be encoded in +// base64 (RFC-4648). +// +// If Pd is "?", the terminal replies to the host with the current contents of +// the clipboard. +// +// If Pd is neither a base64 string nor "?", the terminal clears the clipboard. +// +// See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +// where Ps = 52 => Manipulate Selection Data. +// +// Examples: +// +// // copy "hello world" to the system clipboard +// fmt.Fprint(os.Stderr, osc52.New("hello world")) +// +// // copy "hello world" to the primary Clipboard +// fmt.Fprint(os.Stderr, osc52.New("hello world").Primary()) +// +// // limit the size of the string to copy 10 bytes +// fmt.Fprint(os.Stderr, osc52.New("0123456789").Limit(10)) +// +// // escape the OSC52 sequence for screen using DCS sequences +// fmt.Fprint(os.Stderr, osc52.New("hello world").Screen()) +// +// // escape the OSC52 sequence for Tmux +// fmt.Fprint(os.Stderr, osc52.New("hello world").Tmux()) +// +// // query the system Clipboard +// fmt.Fprint(os.Stderr, osc52.Query()) +// +// // query the primary clipboard +// fmt.Fprint(os.Stderr, osc52.Query().Primary()) +// +// // clear the system Clipboard +// fmt.Fprint(os.Stderr, osc52.Clear()) +// +// // clear the primary Clipboard +// fmt.Fprint(os.Stderr, osc52.Clear().Primary()) +package osc52 + +import ( + "encoding/base64" + "fmt" + "io" + "strings" +) + +// Clipboard is the clipboard buffer to use. +type Clipboard rune + +const ( + // SystemClipboard is the system clipboard buffer. + SystemClipboard Clipboard = 'c' + // PrimaryClipboard is the primary clipboard buffer (X11). + PrimaryClipboard = 'p' +) + +// Mode is the mode to use for the OSC52 sequence. +type Mode uint + +const ( + // DefaultMode is the default OSC52 sequence mode. + DefaultMode Mode = iota + // ScreenMode escapes the OSC52 sequence for screen using DCS sequences. + ScreenMode + // TmuxMode escapes the OSC52 sequence for tmux. Not needed if tmux + // clipboard is set to `set-clipboard on` + TmuxMode +) + +// Operation is the OSC52 operation. +type Operation uint + +const ( + // SetOperation is the copy operation. + SetOperation Operation = iota + // QueryOperation is the query operation. + QueryOperation + // ClearOperation is the clear operation. + ClearOperation +) + +// Sequence is the OSC52 sequence. +type Sequence struct { + str string + limit int + op Operation + mode Mode + clipboard Clipboard +} + +var _ fmt.Stringer = Sequence{} + +var _ io.WriterTo = Sequence{} + +// String returns the OSC52 sequence. +func (s Sequence) String() string { + var seq strings.Builder + // mode escape sequences start + seq.WriteString(s.seqStart()) + // actual OSC52 sequence start + seq.WriteString(fmt.Sprintf("\x1b]52;%c;", s.clipboard)) + switch s.op { + case SetOperation: + str := s.str + if s.limit > 0 && len(str) > s.limit { + return "" + } + b64 := base64.StdEncoding.EncodeToString([]byte(str)) + switch s.mode { + case ScreenMode: + // Screen doesn't support OSC52 but will pass the contents of a DCS + // sequence to the outer terminal unchanged. + // + // Here, we split the encoded string into 76 bytes chunks and then + // join the chunks with sequences. Finally, + // wrap the whole thing in + // . + // s := strings.SplitN(b64, "", 76) + s := make([]string, 0, len(b64)/76+1) + for i := 0; i < len(b64); i += 76 { + end := i + 76 + if end > len(b64) { + end = len(b64) + } + s = append(s, b64[i:end]) + } + seq.WriteString(strings.Join(s, "\x1b\\\x1bP")) + default: + seq.WriteString(b64) + } + case QueryOperation: + // OSC52 queries the clipboard using "?" + seq.WriteString("?") + case ClearOperation: + // OSC52 clears the clipboard if the data is neither a base64 string nor "?" + // we're using "!" as a default + seq.WriteString("!") + } + // actual OSC52 sequence end + seq.WriteString("\x07") + // mode escape end + seq.WriteString(s.seqEnd()) + return seq.String() +} + +// WriteTo writes the OSC52 sequence to the writer. +func (s Sequence) WriteTo(out io.Writer) (int64, error) { + n, err := out.Write([]byte(s.String())) + return int64(n), err +} + +// Mode sets the mode for the OSC52 sequence. +func (s Sequence) Mode(m Mode) Sequence { + s.mode = m + return s +} + +// Tmux sets the mode to TmuxMode. +// Used to escape the OSC52 sequence for `tmux`. +// +// Note: this is not needed if tmux clipboard is set to `set-clipboard on`. If +// TmuxMode is used, tmux must have `allow-passthrough on` set. +// +// This is a syntactic sugar for s.Mode(TmuxMode). +func (s Sequence) Tmux() Sequence { + return s.Mode(TmuxMode) +} + +// Screen sets the mode to ScreenMode. +// Used to escape the OSC52 sequence for `screen`. +// +// This is a syntactic sugar for s.Mode(ScreenMode). +func (s Sequence) Screen() Sequence { + return s.Mode(ScreenMode) +} + +// Clipboard sets the clipboard buffer for the OSC52 sequence. +func (s Sequence) Clipboard(c Clipboard) Sequence { + s.clipboard = c + return s +} + +// Primary sets the clipboard buffer to PrimaryClipboard. +// This is the X11 primary clipboard. +// +// This is a syntactic sugar for s.Clipboard(PrimaryClipboard). +func (s Sequence) Primary() Sequence { + return s.Clipboard(PrimaryClipboard) +} + +// Limit sets the limit for the OSC52 sequence. +// The default limit is 0 (no limit). +// +// Strings longer than the limit get ignored. Settting the limit to 0 or a +// negative value disables the limit. Each terminal defines its own escapse +// sequence limit. +func (s Sequence) Limit(l int) Sequence { + if l < 0 { + s.limit = 0 + } else { + s.limit = l + } + return s +} + +// Operation sets the operation for the OSC52 sequence. +// The default operation is SetOperation. +func (s Sequence) Operation(o Operation) Sequence { + s.op = o + return s +} + +// Clear sets the operation to ClearOperation. +// This clears the clipboard. +// +// This is a syntactic sugar for s.Operation(ClearOperation). +func (s Sequence) Clear() Sequence { + return s.Operation(ClearOperation) +} + +// Query sets the operation to QueryOperation. +// This queries the clipboard contents. +// +// This is a syntactic sugar for s.Operation(QueryOperation). +func (s Sequence) Query() Sequence { + return s.Operation(QueryOperation) +} + +// SetString sets the string for the OSC52 sequence. Strings are joined with a +// space character. +func (s Sequence) SetString(strs ...string) Sequence { + s.str = strings.Join(strs, " ") + return s +} + +// New creates a new OSC52 sequence with the given string(s). Strings are +// joined with a space character. +func New(strs ...string) Sequence { + s := Sequence{ + str: strings.Join(strs, " "), + limit: 0, + mode: DefaultMode, + clipboard: SystemClipboard, + op: SetOperation, + } + return s +} + +// Query creates a new OSC52 sequence with the QueryOperation. +// This returns a new OSC52 sequence to query the clipboard contents. +// +// This is a syntactic sugar for New().Query(). +func Query() Sequence { + return New().Query() +} + +// Clear creates a new OSC52 sequence with the ClearOperation. +// This returns a new OSC52 sequence to clear the clipboard. +// +// This is a syntactic sugar for New().Clear(). +func Clear() Sequence { + return New().Clear() +} + +func (s Sequence) seqStart() string { + switch s.mode { + case TmuxMode: + // Write the start of a tmux escape sequence. + return "\x1bPtmux;\x1b" + case ScreenMode: + // Write the start of a DCS sequence. + return "\x1bP" + default: + return "" + } +} + +func (s Sequence) seqEnd() string { + switch s.mode { + case TmuxMode: + // Terminate the tmux escape sequence. + return "\x1b\\" + case ScreenMode: + // Write the end of a DCS sequence. + return "\x1b\x5c" + default: + return "" + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/LICENSE new file mode 100644 index 0000000..31d76c1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2023 Charmbracelet, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/cursor/cursor.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/cursor/cursor.go new file mode 100644 index 0000000..d101332 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/cursor/cursor.go @@ -0,0 +1,219 @@ +// Package cursor provides cursor functionality for Bubble Tea applications. +package cursor + +import ( + "context" + "time" + + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" +) + +const defaultBlinkSpeed = time.Millisecond * 530 + +// initialBlinkMsg initializes cursor blinking. +type initialBlinkMsg struct{} + +// BlinkMsg signals that the cursor should blink. It contains metadata that +// allows us to tell if the blink message is the one we're expecting. +type BlinkMsg struct { + id int + tag int +} + +// blinkCanceled is sent when a blink operation is canceled. +type blinkCanceled struct{} + +// blinkCtx manages cursor blinking. +type blinkCtx struct { + ctx context.Context + cancel context.CancelFunc +} + +// Mode describes the behavior of the cursor. +type Mode int + +// Available cursor modes. +const ( + CursorBlink Mode = iota + CursorStatic + CursorHide +) + +// String returns the cursor mode in a human-readable format. This method is +// provisional and for informational purposes only. +func (c Mode) String() string { + return [...]string{ + "blink", + "static", + "hidden", + }[c] +} + +// Model is the Bubble Tea model for this cursor element. +type Model struct { + BlinkSpeed time.Duration + // Style for styling the cursor block. + Style lipgloss.Style + // TextStyle is the style used for the cursor when it is hidden (when blinking). + // I.e. displaying normal text. + TextStyle lipgloss.Style + + // char is the character under the cursor + char string + // The ID of this Model as it relates to other cursors + id int + // focus indicates whether the containing input is focused + focus bool + // Cursor Blink state. + Blink bool + // Used to manage cursor blink + blinkCtx *blinkCtx + // The ID of the blink message we're expecting to receive. + blinkTag int + // mode determines the behavior of the cursor + mode Mode +} + +// New creates a new model with default settings. +func New() Model { + return Model{ + BlinkSpeed: defaultBlinkSpeed, + + Blink: true, + mode: CursorBlink, + + blinkCtx: &blinkCtx{ + ctx: context.Background(), + }, + } +} + +// Update updates the cursor. +func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { + switch msg := msg.(type) { + case initialBlinkMsg: + // We accept all initialBlinkMsgs generated by the Blink command. + + if m.mode != CursorBlink || !m.focus { + return m, nil + } + + cmd := m.BlinkCmd() + return m, cmd + + case tea.FocusMsg: + return m, m.Focus() + + case tea.BlurMsg: + m.Blur() + return m, nil + + case BlinkMsg: + // We're choosy about whether to accept blinkMsgs so that our cursor + // only exactly when it should. + + // Is this model blink-able? + if m.mode != CursorBlink || !m.focus { + return m, nil + } + + // Were we expecting this blink message? + if msg.id != m.id || msg.tag != m.blinkTag { + return m, nil + } + + var cmd tea.Cmd + if m.mode == CursorBlink { + m.Blink = !m.Blink + cmd = m.BlinkCmd() + } + return m, cmd + + case blinkCanceled: // no-op + return m, nil + } + return m, nil +} + +// Mode returns the model's cursor mode. For available cursor modes, see +// type Mode. +func (m Model) Mode() Mode { + return m.mode +} + +// SetMode sets the model's cursor mode. This method returns a command. +// +// For available cursor modes, see type CursorMode. +func (m *Model) SetMode(mode Mode) tea.Cmd { + // Adjust the mode value if it's value is out of range + if mode < CursorBlink || mode > CursorHide { + return nil + } + m.mode = mode + m.Blink = m.mode == CursorHide || !m.focus + if mode == CursorBlink { + return Blink + } + return nil +} + +// BlinkCmd is a command used to manage cursor blinking. +func (m *Model) BlinkCmd() tea.Cmd { + if m.mode != CursorBlink { + return nil + } + + if m.blinkCtx != nil && m.blinkCtx.cancel != nil { + m.blinkCtx.cancel() + } + + ctx, cancel := context.WithTimeout(m.blinkCtx.ctx, m.BlinkSpeed) + m.blinkCtx.cancel = cancel + + m.blinkTag++ + + return func() tea.Msg { + defer cancel() + <-ctx.Done() + if ctx.Err() == context.DeadlineExceeded { + return BlinkMsg{id: m.id, tag: m.blinkTag} + } + return blinkCanceled{} + } +} + +// Blink is a command used to initialize cursor blinking. +func Blink() tea.Msg { + return initialBlinkMsg{} +} + +// Focus focuses the cursor to allow it to blink if desired. +func (m *Model) Focus() tea.Cmd { + m.focus = true + m.Blink = m.mode == CursorHide // show the cursor unless we've explicitly hidden it + + if m.mode == CursorBlink && m.focus { + return m.BlinkCmd() + } + return nil +} + +// Blur blurs the cursor. +func (m *Model) Blur() { + m.focus = false + m.Blink = true +} + +// SetChar sets the character under the cursor. +func (m *Model) SetChar(char string) { + m.char = char +} + +// View displays the cursor. +func (m Model) View() string { + if m.Blink { + return m.TextStyle.Inline(true).Render(m.char) + } + return m.Style.Inline(true).Reverse(true).Render(m.char) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/key/key.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/key/key.go new file mode 100644 index 0000000..0682665 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/key/key.go @@ -0,0 +1,140 @@ +// Package key provides some types and functions for generating user-definable +// keymappings useful in Bubble Tea components. There are a few different ways +// you can define a keymapping with this package. Here's one example: +// +// type KeyMap struct { +// Up key.Binding +// Down key.Binding +// } +// +// var DefaultKeyMap = KeyMap{ +// Up: key.NewBinding( +// key.WithKeys("k", "up"), // actual keybindings +// key.WithHelp("↑/k", "move up"), // corresponding help text +// ), +// Down: key.NewBinding( +// key.WithKeys("j", "down"), +// key.WithHelp("↓/j", "move down"), +// ), +// } +// +// func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { +// switch msg := msg.(type) { +// case tea.KeyMsg: +// switch { +// case key.Matches(msg, DefaultKeyMap.Up): +// // The user pressed up +// case key.Matches(msg, DefaultKeyMap.Down): +// // The user pressed down +// } +// } +// +// // ... +// } +// +// The help information, which is not used in the example above, can be used +// to render help text for keystrokes in your views. +package key + +import "fmt" + +// Binding describes a set of keybindings and, optionally, their associated +// help text. +type Binding struct { + keys []string + help Help + disabled bool +} + +// BindingOpt is an initialization option for a keybinding. It's used as an +// argument to NewBinding. +type BindingOpt func(*Binding) + +// NewBinding returns a new keybinding from a set of BindingOpt options. +func NewBinding(opts ...BindingOpt) Binding { + b := &Binding{} + for _, opt := range opts { + opt(b) + } + return *b +} + +// WithKeys initializes a keybinding with the given keystrokes. +func WithKeys(keys ...string) BindingOpt { + return func(b *Binding) { + b.keys = keys + } +} + +// WithHelp initializes a keybinding with the given help text. +func WithHelp(key, desc string) BindingOpt { + return func(b *Binding) { + b.help = Help{Key: key, Desc: desc} + } +} + +// WithDisabled initializes a disabled keybinding. +func WithDisabled() BindingOpt { + return func(b *Binding) { + b.disabled = true + } +} + +// SetKeys sets the keys for the keybinding. +func (b *Binding) SetKeys(keys ...string) { + b.keys = keys +} + +// Keys returns the keys for the keybinding. +func (b Binding) Keys() []string { + return b.keys +} + +// SetHelp sets the help text for the keybinding. +func (b *Binding) SetHelp(key, desc string) { + b.help = Help{Key: key, Desc: desc} +} + +// Help returns the Help information for the keybinding. +func (b Binding) Help() Help { + return b.help +} + +// Enabled returns whether or not the keybinding is enabled. Disabled +// keybindings won't be activated and won't show up in help. Keybindings are +// enabled by default. +func (b Binding) Enabled() bool { + return !b.disabled && b.keys != nil +} + +// SetEnabled enables or disables the keybinding. +func (b *Binding) SetEnabled(v bool) { + b.disabled = !v +} + +// Unbind removes the keys and help from this binding, effectively nullifying +// it. This is a step beyond disabling it, since applications can enable +// or disable key bindings based on application state. +func (b *Binding) Unbind() { + b.keys = nil + b.help = Help{} +} + +// Help is help information for a given keybinding. +type Help struct { + Key string + Desc string +} + +// Matches checks if the given key matches the given bindings. +func Matches[Key fmt.Stringer](k Key, b ...Binding) bool { + keys := k.String() + for _, binding := range b { + for _, v := range binding.keys { + if keys == v && binding.Enabled() { + return true + } + } + } + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/runeutil/runeutil.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/runeutil/runeutil.go new file mode 100644 index 0000000..82ea90a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/runeutil/runeutil.go @@ -0,0 +1,102 @@ +// Package runeutil provides a utility function for use in Bubbles +// that can process Key messages containing runes. +package runeutil + +import ( + "unicode" + "unicode/utf8" +) + +// Sanitizer is a helper for bubble widgets that want to process +// Runes from input key messages. +type Sanitizer interface { + // Sanitize removes control characters from runes in a KeyRunes + // message, and optionally replaces newline/carriage return/tabs by a + // specified character. + // + // The rune array is modified in-place if possible. In that case, the + // returned slice is the original slice shortened after the control + // characters have been removed/translated. + Sanitize(runes []rune) []rune +} + +// NewSanitizer constructs a rune sanitizer. +func NewSanitizer(opts ...Option) Sanitizer { + s := sanitizer{ + replaceNewLine: []rune("\n"), + replaceTab: []rune(" "), + } + for _, o := range opts { + s = o(s) + } + return &s +} + +// Option is the type of option that can be passed to Sanitize(). +type Option func(sanitizer) sanitizer + +// ReplaceTabs replaces tabs by the specified string. +func ReplaceTabs(tabRepl string) Option { + return func(s sanitizer) sanitizer { + s.replaceTab = []rune(tabRepl) + return s + } +} + +// ReplaceNewlines replaces newline characters by the specified string. +func ReplaceNewlines(nlRepl string) Option { + return func(s sanitizer) sanitizer { + s.replaceNewLine = []rune(nlRepl) + return s + } +} + +func (s *sanitizer) Sanitize(runes []rune) []rune { + // dstrunes are where we are storing the result. + dstrunes := runes[:0:len(runes)] + // copied indicates whether dstrunes is an alias of runes + // or a copy. We need a copy when dst moves past src. + // We use this as an optimization to avoid allocating + // a new rune slice in the common case where the output + // is smaller or equal to the input. + copied := false + + for src := 0; src < len(runes); src++ { + r := runes[src] + switch { + case r == utf8.RuneError: + // skip + + case r == '\r' || r == '\n': + if len(dstrunes)+len(s.replaceNewLine) > src && !copied { + dst := len(dstrunes) + dstrunes = make([]rune, dst, len(runes)+len(s.replaceNewLine)) + copy(dstrunes, runes[:dst]) + copied = true + } + dstrunes = append(dstrunes, s.replaceNewLine...) + + case r == '\t': + if len(dstrunes)+len(s.replaceTab) > src && !copied { + dst := len(dstrunes) + dstrunes = make([]rune, dst, len(runes)+len(s.replaceTab)) + copy(dstrunes, runes[:dst]) + copied = true + } + dstrunes = append(dstrunes, s.replaceTab...) + + case unicode.IsControl(r): + // Other control characters: skip. + + default: + // Keep the character. + dstrunes = append(dstrunes, runes[src]) + } + } + return dstrunes +} + +type sanitizer struct { + replaceNewLine []rune + replaceTab []rune +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/textinput/textinput.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/textinput/textinput.go new file mode 100644 index 0000000..84cbbc9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/textinput/textinput.go @@ -0,0 +1,898 @@ +// Package textinput provides a text input component for Bubble Tea +// applications. +package textinput + +import ( + "reflect" + "strings" + "time" + "unicode" + + "github.com/atotto/clipboard" + "github.com/charmbracelet/bubbles/cursor" + "github.com/charmbracelet/bubbles/key" + "github.com/charmbracelet/bubbles/runeutil" + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" + rw "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" +) + +// Internal messages for clipboard operations. +type ( + pasteMsg string + pasteErrMsg struct{ error } +) + +// EchoMode sets the input behavior of the text input field. +type EchoMode int + +const ( + // EchoNormal displays text as is. This is the default behavior. + EchoNormal EchoMode = iota + + // EchoPassword displays the EchoCharacter mask instead of actual + // characters. This is commonly used for password fields. + EchoPassword + + // EchoNone displays nothing as characters are entered. This is commonly + // seen for password fields on the command line. + EchoNone +) + +// ValidateFunc is a function that returns an error if the input is invalid. +type ValidateFunc func(string) error + +// KeyMap is the key bindings for different actions within the textinput. +type KeyMap struct { + CharacterForward key.Binding + CharacterBackward key.Binding + WordForward key.Binding + WordBackward key.Binding + DeleteWordBackward key.Binding + DeleteWordForward key.Binding + DeleteAfterCursor key.Binding + DeleteBeforeCursor key.Binding + DeleteCharacterBackward key.Binding + DeleteCharacterForward key.Binding + LineStart key.Binding + LineEnd key.Binding + Paste key.Binding + AcceptSuggestion key.Binding + NextSuggestion key.Binding + PrevSuggestion key.Binding +} + +// DefaultKeyMap is the default set of key bindings for navigating and acting +// upon the textinput. +var DefaultKeyMap = KeyMap{ + CharacterForward: key.NewBinding(key.WithKeys("right", "ctrl+f")), + CharacterBackward: key.NewBinding(key.WithKeys("left", "ctrl+b")), + WordForward: key.NewBinding(key.WithKeys("alt+right", "ctrl+right", "alt+f")), + WordBackward: key.NewBinding(key.WithKeys("alt+left", "ctrl+left", "alt+b")), + DeleteWordBackward: key.NewBinding(key.WithKeys("alt+backspace", "ctrl+w")), + DeleteWordForward: key.NewBinding(key.WithKeys("alt+delete", "alt+d")), + DeleteAfterCursor: key.NewBinding(key.WithKeys("ctrl+k")), + DeleteBeforeCursor: key.NewBinding(key.WithKeys("ctrl+u")), + DeleteCharacterBackward: key.NewBinding(key.WithKeys("backspace", "ctrl+h")), + DeleteCharacterForward: key.NewBinding(key.WithKeys("delete", "ctrl+d")), + LineStart: key.NewBinding(key.WithKeys("home", "ctrl+a")), + LineEnd: key.NewBinding(key.WithKeys("end", "ctrl+e")), + Paste: key.NewBinding(key.WithKeys("ctrl+v")), + AcceptSuggestion: key.NewBinding(key.WithKeys("tab")), + NextSuggestion: key.NewBinding(key.WithKeys("down", "ctrl+n")), + PrevSuggestion: key.NewBinding(key.WithKeys("up", "ctrl+p")), +} + +// Model is the Bubble Tea model for this text input element. +type Model struct { + Err error + + // General settings. + Prompt string + Placeholder string + EchoMode EchoMode + EchoCharacter rune + Cursor cursor.Model + + // Deprecated: use [cursor.BlinkSpeed] instead. + BlinkSpeed time.Duration + + // Styles. These will be applied as inline styles. + // + // For an introduction to styling with Lip Gloss see: + // https://github.com/charmbracelet/lipgloss + PromptStyle lipgloss.Style + TextStyle lipgloss.Style + PlaceholderStyle lipgloss.Style + CompletionStyle lipgloss.Style + + // Deprecated: use Cursor.Style instead. + CursorStyle lipgloss.Style + + // CharLimit is the maximum amount of characters this input element will + // accept. If 0 or less, there's no limit. + CharLimit int + + // Width is the maximum number of characters that can be displayed at once. + // It essentially treats the text field like a horizontally scrolling + // viewport. If 0 or less this setting is ignored. + Width int + + // KeyMap encodes the keybindings recognized by the widget. + KeyMap KeyMap + + // Underlying text value. + value []rune + + // focus indicates whether user input focus should be on this input + // component. When false, ignore keyboard input and hide the cursor. + focus bool + + // Cursor position. + pos int + + // Used to emulate a viewport when width is set and the content is + // overflowing. + offset int + offsetRight int + + // Validate is a function that checks whether or not the text within the + // input is valid. If it is not valid, the `Err` field will be set to the + // error returned by the function. If the function is not defined, all + // input is considered valid. + Validate ValidateFunc + + // rune sanitizer for input. + rsan runeutil.Sanitizer + + // Should the input suggest to complete + ShowSuggestions bool + + // suggestions is a list of suggestions that may be used to complete the + // input. + suggestions [][]rune + matchedSuggestions [][]rune + currentSuggestionIndex int +} + +// New creates a new model with default settings. +func New() Model { + return Model{ + Prompt: "> ", + EchoCharacter: '*', + CharLimit: 0, + PlaceholderStyle: lipgloss.NewStyle().Foreground(lipgloss.Color("240")), + ShowSuggestions: false, + CompletionStyle: lipgloss.NewStyle().Foreground(lipgloss.Color("240")), + Cursor: cursor.New(), + KeyMap: DefaultKeyMap, + + suggestions: [][]rune{}, + value: nil, + focus: false, + pos: 0, + } +} + +// NewModel creates a new model with default settings. +// +// Deprecated: Use [New] instead. +var NewModel = New + +// SetValue sets the value of the text input. +func (m *Model) SetValue(s string) { + // Clean up any special characters in the input provided by the + // caller. This avoids bugs due to e.g. tab characters and whatnot. + runes := m.san().Sanitize([]rune(s)) + err := m.validate(runes) + m.setValueInternal(runes, err) +} + +func (m *Model) setValueInternal(runes []rune, err error) { + m.Err = err + + empty := len(m.value) == 0 + + if m.CharLimit > 0 && len(runes) > m.CharLimit { + m.value = runes[:m.CharLimit] + } else { + m.value = runes + } + if (m.pos == 0 && empty) || m.pos > len(m.value) { + m.SetCursor(len(m.value)) + } + m.handleOverflow() +} + +// Value returns the value of the text input. +func (m Model) Value() string { + return string(m.value) +} + +// Position returns the cursor position. +func (m Model) Position() int { + return m.pos +} + +// SetCursor moves the cursor to the given position. If the position is +// out of bounds the cursor will be moved to the start or end accordingly. +func (m *Model) SetCursor(pos int) { + m.pos = clamp(pos, 0, len(m.value)) + m.handleOverflow() +} + +// CursorStart moves the cursor to the start of the input field. +func (m *Model) CursorStart() { + m.SetCursor(0) +} + +// CursorEnd moves the cursor to the end of the input field. +func (m *Model) CursorEnd() { + m.SetCursor(len(m.value)) +} + +// Focused returns the focus state on the model. +func (m Model) Focused() bool { + return m.focus +} + +// Focus sets the focus state on the model. When the model is in focus it can +// receive keyboard input and the cursor will be shown. +func (m *Model) Focus() tea.Cmd { + m.focus = true + return m.Cursor.Focus() +} + +// Blur removes the focus state on the model. When the model is blurred it can +// not receive keyboard input and the cursor will be hidden. +func (m *Model) Blur() { + m.focus = false + m.Cursor.Blur() +} + +// Reset sets the input to its default state with no input. +func (m *Model) Reset() { + m.value = nil + m.SetCursor(0) +} + +// SetSuggestions sets the suggestions for the input. +func (m *Model) SetSuggestions(suggestions []string) { + m.suggestions = make([][]rune, len(suggestions)) + for i, s := range suggestions { + m.suggestions[i] = []rune(s) + } + + m.updateSuggestions() +} + +// rsan initializes or retrieves the rune sanitizer. +func (m *Model) san() runeutil.Sanitizer { + if m.rsan == nil { + // Textinput has all its input on a single line so collapse + // newlines/tabs to single spaces. + m.rsan = runeutil.NewSanitizer( + runeutil.ReplaceTabs(" "), runeutil.ReplaceNewlines(" ")) + } + return m.rsan +} + +func (m *Model) insertRunesFromUserInput(v []rune) { + // Clean up any special characters in the input provided by the + // clipboard. This avoids bugs due to e.g. tab characters and + // whatnot. + paste := m.san().Sanitize(v) + + var availSpace int + if m.CharLimit > 0 { + availSpace = m.CharLimit - len(m.value) + + // If the char limit's been reached, cancel. + if availSpace <= 0 { + return + } + + // If there's not enough space to paste the whole thing cut the pasted + // runes down so they'll fit. + if availSpace < len(paste) { + paste = paste[:availSpace] + } + } + + // Stuff before and after the cursor + head := m.value[:m.pos] + tailSrc := m.value[m.pos:] + tail := make([]rune, len(tailSrc)) + copy(tail, tailSrc) + + // Insert pasted runes + for _, r := range paste { + head = append(head, r) + m.pos++ + if m.CharLimit > 0 { + availSpace-- + if availSpace <= 0 { + break + } + } + } + + // Put it all back together + value := append(head, tail...) + inputErr := m.validate(value) + m.setValueInternal(value, inputErr) +} + +// If a max width is defined, perform some logic to treat the visible area +// as a horizontally scrolling viewport. +func (m *Model) handleOverflow() { + if m.Width <= 0 || uniseg.StringWidth(string(m.value)) <= m.Width { + m.offset = 0 + m.offsetRight = len(m.value) + return + } + + // Correct right offset if we've deleted characters + m.offsetRight = min(m.offsetRight, len(m.value)) + + if m.pos < m.offset { + m.offset = m.pos + + w := 0 + i := 0 + runes := m.value[m.offset:] + + for i < len(runes) && w <= m.Width { + w += rw.RuneWidth(runes[i]) + if w <= m.Width+1 { + i++ + } + } + + m.offsetRight = m.offset + i + } else if m.pos >= m.offsetRight { + m.offsetRight = m.pos + + w := 0 + runes := m.value[:m.offsetRight] + i := len(runes) - 1 + + for i > 0 && w < m.Width { + w += rw.RuneWidth(runes[i]) + if w <= m.Width { + i-- + } + } + + m.offset = m.offsetRight - (len(runes) - 1 - i) + } +} + +// deleteBeforeCursor deletes all text before the cursor. +func (m *Model) deleteBeforeCursor() { + m.value = m.value[m.pos:] + m.Err = m.validate(m.value) + m.offset = 0 + m.SetCursor(0) +} + +// deleteAfterCursor deletes all text after the cursor. If input is masked +// delete everything after the cursor so as not to reveal word breaks in the +// masked input. +func (m *Model) deleteAfterCursor() { + m.value = m.value[:m.pos] + m.Err = m.validate(m.value) + m.SetCursor(len(m.value)) +} + +// deleteWordBackward deletes the word left to the cursor. +func (m *Model) deleteWordBackward() { + if m.pos == 0 || len(m.value) == 0 { + return + } + + if m.EchoMode != EchoNormal { + m.deleteBeforeCursor() + return + } + + // Linter note: it's critical that we acquire the initial cursor position + // here prior to altering it via SetCursor() below. As such, moving this + // call into the corresponding if clause does not apply here. + oldPos := m.pos //nolint:ifshort + + m.SetCursor(m.pos - 1) + for unicode.IsSpace(m.value[m.pos]) { + if m.pos <= 0 { + break + } + // ignore series of whitespace before cursor + m.SetCursor(m.pos - 1) + } + + for m.pos > 0 { + if !unicode.IsSpace(m.value[m.pos]) { + m.SetCursor(m.pos - 1) + } else { + if m.pos > 0 { + // keep the previous space + m.SetCursor(m.pos + 1) + } + break + } + } + + if oldPos > len(m.value) { + m.value = m.value[:m.pos] + } else { + m.value = append(m.value[:m.pos], m.value[oldPos:]...) + } + m.Err = m.validate(m.value) +} + +// deleteWordForward deletes the word right to the cursor. If input is masked +// delete everything after the cursor so as not to reveal word breaks in the +// masked input. +func (m *Model) deleteWordForward() { + if m.pos >= len(m.value) || len(m.value) == 0 { + return + } + + if m.EchoMode != EchoNormal { + m.deleteAfterCursor() + return + } + + oldPos := m.pos + m.SetCursor(m.pos + 1) + for unicode.IsSpace(m.value[m.pos]) { + // ignore series of whitespace after cursor + m.SetCursor(m.pos + 1) + + if m.pos >= len(m.value) { + break + } + } + + for m.pos < len(m.value) { + if !unicode.IsSpace(m.value[m.pos]) { + m.SetCursor(m.pos + 1) + } else { + break + } + } + + if m.pos > len(m.value) { + m.value = m.value[:oldPos] + } else { + m.value = append(m.value[:oldPos], m.value[m.pos:]...) + } + m.Err = m.validate(m.value) + + m.SetCursor(oldPos) +} + +// wordBackward moves the cursor one word to the left. If input is masked, move +// input to the start so as not to reveal word breaks in the masked input. +func (m *Model) wordBackward() { + if m.pos == 0 || len(m.value) == 0 { + return + } + + if m.EchoMode != EchoNormal { + m.CursorStart() + return + } + + i := m.pos - 1 + for i >= 0 { + if unicode.IsSpace(m.value[i]) { + m.SetCursor(m.pos - 1) + i-- + } else { + break + } + } + + for i >= 0 { + if !unicode.IsSpace(m.value[i]) { + m.SetCursor(m.pos - 1) + i-- + } else { + break + } + } +} + +// wordForward moves the cursor one word to the right. If the input is masked, +// move input to the end so as not to reveal word breaks in the masked input. +func (m *Model) wordForward() { + if m.pos >= len(m.value) || len(m.value) == 0 { + return + } + + if m.EchoMode != EchoNormal { + m.CursorEnd() + return + } + + i := m.pos + for i < len(m.value) { + if unicode.IsSpace(m.value[i]) { + m.SetCursor(m.pos + 1) + i++ + } else { + break + } + } + + for i < len(m.value) { + if !unicode.IsSpace(m.value[i]) { + m.SetCursor(m.pos + 1) + i++ + } else { + break + } + } +} + +func (m Model) echoTransform(v string) string { + switch m.EchoMode { + case EchoPassword: + return strings.Repeat(string(m.EchoCharacter), uniseg.StringWidth(v)) + case EchoNone: + return "" + case EchoNormal: + return v + default: + return v + } +} + +// Update is the Bubble Tea update loop. +func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { + if !m.focus { + return m, nil + } + + // Need to check for completion before, because key is configurable and might be double assigned + keyMsg, ok := msg.(tea.KeyMsg) + if ok && key.Matches(keyMsg, m.KeyMap.AcceptSuggestion) { + if m.canAcceptSuggestion() { + m.value = append(m.value, m.matchedSuggestions[m.currentSuggestionIndex][len(m.value):]...) + m.CursorEnd() + } + } + + // Let's remember where the position of the cursor currently is so that if + // the cursor position changes, we can reset the blink. + oldPos := m.pos + + switch msg := msg.(type) { + case tea.KeyMsg: + switch { + case key.Matches(msg, m.KeyMap.DeleteWordBackward): + m.deleteWordBackward() + case key.Matches(msg, m.KeyMap.DeleteCharacterBackward): + m.Err = nil + if len(m.value) > 0 { + m.value = append(m.value[:max(0, m.pos-1)], m.value[m.pos:]...) + m.Err = m.validate(m.value) + if m.pos > 0 { + m.SetCursor(m.pos - 1) + } + } + case key.Matches(msg, m.KeyMap.WordBackward): + m.wordBackward() + case key.Matches(msg, m.KeyMap.CharacterBackward): + if m.pos > 0 { + m.SetCursor(m.pos - 1) + } + case key.Matches(msg, m.KeyMap.WordForward): + m.wordForward() + case key.Matches(msg, m.KeyMap.CharacterForward): + if m.pos < len(m.value) { + m.SetCursor(m.pos + 1) + } + case key.Matches(msg, m.KeyMap.LineStart): + m.CursorStart() + case key.Matches(msg, m.KeyMap.DeleteCharacterForward): + if len(m.value) > 0 && m.pos < len(m.value) { + m.value = append(m.value[:m.pos], m.value[m.pos+1:]...) + m.Err = m.validate(m.value) + } + case key.Matches(msg, m.KeyMap.LineEnd): + m.CursorEnd() + case key.Matches(msg, m.KeyMap.DeleteAfterCursor): + m.deleteAfterCursor() + case key.Matches(msg, m.KeyMap.DeleteBeforeCursor): + m.deleteBeforeCursor() + case key.Matches(msg, m.KeyMap.Paste): + return m, Paste + case key.Matches(msg, m.KeyMap.DeleteWordForward): + m.deleteWordForward() + case key.Matches(msg, m.KeyMap.NextSuggestion): + m.nextSuggestion() + case key.Matches(msg, m.KeyMap.PrevSuggestion): + m.previousSuggestion() + default: + // Input one or more regular characters. + m.insertRunesFromUserInput(msg.Runes) + } + + // Check again if can be completed + // because value might be something that does not match the completion prefix + m.updateSuggestions() + + case pasteMsg: + m.insertRunesFromUserInput([]rune(msg)) + + case pasteErrMsg: + m.Err = msg + } + + var cmds []tea.Cmd + var cmd tea.Cmd + + m.Cursor, cmd = m.Cursor.Update(msg) + cmds = append(cmds, cmd) + + if oldPos != m.pos && m.Cursor.Mode() == cursor.CursorBlink { + m.Cursor.Blink = false + cmds = append(cmds, m.Cursor.BlinkCmd()) + } + + m.handleOverflow() + return m, tea.Batch(cmds...) +} + +// View renders the textinput in its current state. +func (m Model) View() string { + // Placeholder text + if len(m.value) == 0 && m.Placeholder != "" { + return m.placeholderView() + } + + styleText := m.TextStyle.Inline(true).Render + + value := m.value[m.offset:m.offsetRight] + pos := max(0, m.pos-m.offset) + v := styleText(m.echoTransform(string(value[:pos]))) + + if pos < len(value) { //nolint:nestif + char := m.echoTransform(string(value[pos])) + m.Cursor.SetChar(char) + v += m.Cursor.View() // cursor and text under it + v += styleText(m.echoTransform(string(value[pos+1:]))) // text after cursor + v += m.completionView(0) // suggested completion + } else { + if m.focus && m.canAcceptSuggestion() { + suggestion := m.matchedSuggestions[m.currentSuggestionIndex] + if len(value) < len(suggestion) { + m.Cursor.TextStyle = m.CompletionStyle + m.Cursor.SetChar(m.echoTransform(string(suggestion[pos]))) + v += m.Cursor.View() + v += m.completionView(1) + } else { + m.Cursor.SetChar(" ") + v += m.Cursor.View() + } + } else { + m.Cursor.SetChar(" ") + v += m.Cursor.View() + } + } + + // If a max width and background color were set fill the empty spaces with + // the background color. + valWidth := uniseg.StringWidth(string(value)) + if m.Width > 0 && valWidth <= m.Width { + padding := max(0, m.Width-valWidth) + if valWidth+padding <= m.Width && pos < len(value) { + padding++ + } + v += styleText(strings.Repeat(" ", padding)) + } + + return m.PromptStyle.Render(m.Prompt) + v +} + +// placeholderView returns the prompt and placeholder view, if any. +func (m Model) placeholderView() string { + var ( + v string + style = m.PlaceholderStyle.Inline(true).Render + ) + + p := make([]rune, m.Width+1) + copy(p, []rune(m.Placeholder)) + + m.Cursor.TextStyle = m.PlaceholderStyle + m.Cursor.SetChar(string(p[:1])) + v += m.Cursor.View() + + // If the entire placeholder is already set and no padding is needed, finish + if m.Width < 1 && len(p) <= 1 { + return m.PromptStyle.Render(m.Prompt) + v + } + + // If Width is set then size placeholder accordingly + if m.Width > 0 { + // available width is width - len + cursor offset of 1 + minWidth := lipgloss.Width(m.Placeholder) + availWidth := m.Width - minWidth + 1 + + // if width < len, 'subtract'(add) number to len and dont add padding + if availWidth < 0 { + minWidth += availWidth + availWidth = 0 + } + // append placeholder[len] - cursor, append padding + v += style(string(p[1:minWidth])) + v += style(strings.Repeat(" ", availWidth)) + } else { + // if there is no width, the placeholder can be any length + v += style(string(p[1:])) + } + + return m.PromptStyle.Render(m.Prompt) + v +} + +// Blink is a command used to initialize cursor blinking. +func Blink() tea.Msg { + return cursor.Blink() +} + +// Paste is a command for pasting from the clipboard into the text input. +func Paste() tea.Msg { + str, err := clipboard.ReadAll() + if err != nil { + return pasteErrMsg{err} + } + return pasteMsg(str) +} + +func clamp(v, low, high int) int { + if high < low { + low, high = high, low + } + return min(high, max(low, v)) +} + +// Deprecated. + +// Deprecated: use [cursor.Mode]. +// +//nolint:revive +type CursorMode int + +//nolint:revive +const ( + // Deprecated: use [cursor.CursorBlink]. + CursorBlink = CursorMode(cursor.CursorBlink) + // Deprecated: use [cursor.CursorStatic]. + CursorStatic = CursorMode(cursor.CursorStatic) + // Deprecated: use [cursor.CursorHide]. + CursorHide = CursorMode(cursor.CursorHide) +) + +func (c CursorMode) String() string { + return cursor.Mode(c).String() +} + +// Deprecated: use [cursor.Mode]. +// +//nolint:revive +func (m Model) CursorMode() CursorMode { + return CursorMode(m.Cursor.Mode()) +} + +// Deprecated: use cursor.SetMode(). +// +//nolint:revive +func (m *Model) SetCursorMode(mode CursorMode) tea.Cmd { + return m.Cursor.SetMode(cursor.Mode(mode)) +} + +func (m Model) completionView(offset int) string { + var ( + value = m.value + style = m.PlaceholderStyle.Inline(true).Render + ) + + if m.canAcceptSuggestion() { + suggestion := m.matchedSuggestions[m.currentSuggestionIndex] + if len(value) < len(suggestion) { + return style(string(suggestion[len(value)+offset:])) + } + } + return "" +} + +func (m *Model) getSuggestions(sugs [][]rune) []string { + suggestions := make([]string, len(sugs)) + for i, s := range sugs { + suggestions[i] = string(s) + } + return suggestions +} + +// AvailableSuggestions returns the list of available suggestions. +func (m *Model) AvailableSuggestions() []string { + return m.getSuggestions(m.suggestions) +} + +// MatchedSuggestions returns the list of matched suggestions. +func (m *Model) MatchedSuggestions() []string { + return m.getSuggestions(m.matchedSuggestions) +} + +// CurrentSuggestionIndex returns the currently selected suggestion index. +func (m *Model) CurrentSuggestionIndex() int { + return m.currentSuggestionIndex +} + +// CurrentSuggestion returns the currently selected suggestion. +func (m *Model) CurrentSuggestion() string { + if m.currentSuggestionIndex >= len(m.matchedSuggestions) { + return "" + } + + return string(m.matchedSuggestions[m.currentSuggestionIndex]) +} + +// canAcceptSuggestion returns whether there is an acceptable suggestion to +// autocomplete the current value. +func (m *Model) canAcceptSuggestion() bool { + return len(m.matchedSuggestions) > 0 +} + +// updateSuggestions refreshes the list of matching suggestions. +func (m *Model) updateSuggestions() { + if !m.ShowSuggestions { + return + } + + if len(m.value) <= 0 || len(m.suggestions) <= 0 { + m.matchedSuggestions = [][]rune{} + return + } + + matches := [][]rune{} + for _, s := range m.suggestions { + suggestion := string(s) + + if strings.HasPrefix(strings.ToLower(suggestion), strings.ToLower(string(m.value))) { + matches = append(matches, []rune(suggestion)) + } + } + if !reflect.DeepEqual(matches, m.matchedSuggestions) { + m.currentSuggestionIndex = 0 + } + + m.matchedSuggestions = matches +} + +// nextSuggestion selects the next suggestion. +func (m *Model) nextSuggestion() { + m.currentSuggestionIndex = (m.currentSuggestionIndex + 1) + if m.currentSuggestionIndex >= len(m.matchedSuggestions) { + m.currentSuggestionIndex = 0 + } +} + +// previousSuggestion selects the previous suggestion. +func (m *Model) previousSuggestion() { + m.currentSuggestionIndex = (m.currentSuggestionIndex - 1) + if m.currentSuggestionIndex < 0 { + m.currentSuggestionIndex = len(m.matchedSuggestions) - 1 + } +} + +func (m Model) validate(v []rune) error { + if m.Validate != nil { + return m.Validate(string(v)) + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/keymap.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/keymap.go new file mode 100644 index 0000000..86eff98 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/keymap.go @@ -0,0 +1,60 @@ +// Package viewport provides a component for rendering a viewport in a Bubble +// Tea. +package viewport + +import "github.com/charmbracelet/bubbles/key" + +const spacebar = " " + +// KeyMap defines the keybindings for the viewport. Note that you don't +// necessary need to use keybindings at all; the viewport can be controlled +// programmatically with methods like Model.LineDown(1). See the GoDocs for +// details. +type KeyMap struct { + PageDown key.Binding + PageUp key.Binding + HalfPageUp key.Binding + HalfPageDown key.Binding + Down key.Binding + Up key.Binding + Left key.Binding + Right key.Binding +} + +// DefaultKeyMap returns a set of pager-like default keybindings. +func DefaultKeyMap() KeyMap { + return KeyMap{ + PageDown: key.NewBinding( + key.WithKeys("pgdown", spacebar, "f"), + key.WithHelp("f/pgdn", "page down"), + ), + PageUp: key.NewBinding( + key.WithKeys("pgup", "b"), + key.WithHelp("b/pgup", "page up"), + ), + HalfPageUp: key.NewBinding( + key.WithKeys("u", "ctrl+u"), + key.WithHelp("u", "½ page up"), + ), + HalfPageDown: key.NewBinding( + key.WithKeys("d", "ctrl+d"), + key.WithHelp("d", "½ page down"), + ), + Up: key.NewBinding( + key.WithKeys("up", "k"), + key.WithHelp("↑/k", "up"), + ), + Down: key.NewBinding( + key.WithKeys("down", "j"), + key.WithHelp("↓/j", "down"), + ), + Left: key.NewBinding( + key.WithKeys("left", "h"), + key.WithHelp("←/h", "move left"), + ), + Right: key.NewBinding( + key.WithKeys("right", "l"), + key.WithHelp("→/l", "move right"), + ), + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/viewport.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/viewport.go new file mode 100644 index 0000000..5862ac0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbles/viewport/viewport.go @@ -0,0 +1,544 @@ +package viewport + +import ( + "math" + "strings" + + "github.com/charmbracelet/bubbles/key" + tea "github.com/charmbracelet/bubbletea" + "github.com/charmbracelet/lipgloss" + "github.com/charmbracelet/x/ansi" +) + +// New returns a new model with the given width and height as well as default +// key mappings. +func New(width, height int) (m Model) { + m.Width = width + m.Height = height + m.setInitialValues() + return m +} + +// Model is the Bubble Tea model for this viewport element. +type Model struct { + Width int + Height int + KeyMap KeyMap + + // Whether or not to respond to the mouse. The mouse must be enabled in + // Bubble Tea for this to work. For details, see the Bubble Tea docs. + MouseWheelEnabled bool + + // The number of lines the mouse wheel will scroll. By default, this is 3. + MouseWheelDelta int + + // YOffset is the vertical scroll position. + YOffset int + + // xOffset is the horizontal scroll position. + xOffset int + + // horizontalStep is the number of columns we move left or right during a + // default horizontal scroll. + horizontalStep int + + // YPosition is the position of the viewport in relation to the terminal + // window. It's used in high performance rendering only. + YPosition int + + // Style applies a lipgloss style to the viewport. Realistically, it's most + // useful for setting borders, margins and padding. + Style lipgloss.Style + + // HighPerformanceRendering bypasses the normal Bubble Tea renderer to + // provide higher performance rendering. Most of the time the normal Bubble + // Tea rendering methods will suffice, but if you're passing content with + // a lot of ANSI escape codes you may see improved rendering in certain + // terminals with this enabled. + // + // This should only be used in program occupying the entire terminal, + // which is usually via the alternate screen buffer. + // + // Deprecated: high performance rendering is now deprecated in Bubble Tea. + HighPerformanceRendering bool + + initialized bool + lines []string + longestLineWidth int +} + +func (m *Model) setInitialValues() { + m.KeyMap = DefaultKeyMap() + m.MouseWheelEnabled = true + m.MouseWheelDelta = 3 + m.initialized = true +} + +// Init exists to satisfy the tea.Model interface for composability purposes. +func (m Model) Init() tea.Cmd { + return nil +} + +// AtTop returns whether or not the viewport is at the very top position. +func (m Model) AtTop() bool { + return m.YOffset <= 0 +} + +// AtBottom returns whether or not the viewport is at or past the very bottom +// position. +func (m Model) AtBottom() bool { + return m.YOffset >= m.maxYOffset() +} + +// PastBottom returns whether or not the viewport is scrolled beyond the last +// line. This can happen when adjusting the viewport height. +func (m Model) PastBottom() bool { + return m.YOffset > m.maxYOffset() +} + +// ScrollPercent returns the amount scrolled as a float between 0 and 1. +func (m Model) ScrollPercent() float64 { + if m.Height >= len(m.lines) { + return 1.0 + } + y := float64(m.YOffset) + h := float64(m.Height) + t := float64(len(m.lines)) + v := y / (t - h) + return math.Max(0.0, math.Min(1.0, v)) +} + +// HorizontalScrollPercent returns the amount horizontally scrolled as a float +// between 0 and 1. +func (m Model) HorizontalScrollPercent() float64 { + if m.xOffset >= m.longestLineWidth-m.Width { + return 1.0 + } + y := float64(m.xOffset) + h := float64(m.Width) + t := float64(m.longestLineWidth) + v := y / (t - h) + return math.Max(0.0, math.Min(1.0, v)) +} + +// SetContent set the pager's text content. +func (m *Model) SetContent(s string) { + s = strings.ReplaceAll(s, "\r\n", "\n") // normalize line endings + m.lines = strings.Split(s, "\n") + m.longestLineWidth = findLongestLineWidth(m.lines) + + if m.YOffset > len(m.lines)-1 { + m.GotoBottom() + } +} + +// maxYOffset returns the maximum possible value of the y-offset based on the +// viewport's content and set height. +func (m Model) maxYOffset() int { + return max(0, len(m.lines)-m.Height+m.Style.GetVerticalFrameSize()) +} + +// visibleLines returns the lines that should currently be visible in the +// viewport. +func (m Model) visibleLines() (lines []string) { + h := m.Height - m.Style.GetVerticalFrameSize() + w := m.Width - m.Style.GetHorizontalFrameSize() + + if len(m.lines) > 0 { + top := max(0, m.YOffset) + bottom := clamp(m.YOffset+h, top, len(m.lines)) + lines = m.lines[top:bottom] + } + + if (m.xOffset == 0 && m.longestLineWidth <= w) || w == 0 { + return lines + } + + cutLines := make([]string, len(lines)) + for i := range lines { + cutLines[i] = ansi.Cut(lines[i], m.xOffset, m.xOffset+w) + } + return cutLines +} + +// scrollArea returns the scrollable boundaries for high performance rendering. +// +// Deprecated: high performance rendering is deprecated in Bubble Tea. +func (m Model) scrollArea() (top, bottom int) { + top = max(0, m.YPosition) + bottom = max(top, top+m.Height) + if top > 0 && bottom > top { + bottom-- + } + return top, bottom +} + +// SetYOffset sets the Y offset. +func (m *Model) SetYOffset(n int) { + m.YOffset = clamp(n, 0, m.maxYOffset()) +} + +// ViewDown moves the view down by the number of lines in the viewport. +// Basically, "page down". +// +// Deprecated: use [Model.PageDown] instead. +func (m *Model) ViewDown() []string { + return m.PageDown() +} + +// PageDown moves the view down by the number of lines in the viewport. +func (m *Model) PageDown() []string { + if m.AtBottom() { + return nil + } + + return m.ScrollDown(m.Height) +} + +// ViewUp moves the view up by one height of the viewport. +// Basically, "page up". +// +// Deprecated: use [Model.PageUp] instead. +func (m *Model) ViewUp() []string { + return m.PageUp() +} + +// PageUp moves the view up by one height of the viewport. +func (m *Model) PageUp() []string { + if m.AtTop() { + return nil + } + + return m.ScrollUp(m.Height) +} + +// HalfViewDown moves the view down by half the height of the viewport. +// +// Deprecated: use [Model.HalfPageDown] instead. +func (m *Model) HalfViewDown() (lines []string) { + return m.HalfPageDown() +} + +// HalfPageDown moves the view down by half the height of the viewport. +func (m *Model) HalfPageDown() (lines []string) { + if m.AtBottom() { + return nil + } + + return m.ScrollDown(m.Height / 2) //nolint:mnd +} + +// HalfViewUp moves the view up by half the height of the viewport. +// +// Deprecated: use [Model.HalfPageUp] instead. +func (m *Model) HalfViewUp() (lines []string) { + return m.HalfPageUp() +} + +// HalfPageUp moves the view up by half the height of the viewport. +func (m *Model) HalfPageUp() (lines []string) { + if m.AtTop() { + return nil + } + + return m.ScrollUp(m.Height / 2) //nolint:mnd +} + +// LineDown moves the view down by the given number of lines. +// +// Deprecated: use [Model.ScrollDown] instead. +func (m *Model) LineDown(n int) (lines []string) { + return m.ScrollDown(n) +} + +// ScrollDown moves the view down by the given number of lines. +func (m *Model) ScrollDown(n int) (lines []string) { + if m.AtBottom() || n == 0 || len(m.lines) == 0 { + return nil + } + + // Make sure the number of lines by which we're going to scroll isn't + // greater than the number of lines we actually have left before we reach + // the bottom. + m.SetYOffset(m.YOffset + n) + + // Gather lines to send off for performance scrolling. + // + // XXX: high performance rendering is deprecated in Bubble Tea. + bottom := clamp(m.YOffset+m.Height, 0, len(m.lines)) + top := clamp(m.YOffset+m.Height-n, 0, bottom) + return m.lines[top:bottom] +} + +// LineUp moves the view down by the given number of lines. Returns the new +// lines to show. +// +// Deprecated: use [Model.ScrollUp] instead. +func (m *Model) LineUp(n int) (lines []string) { + return m.ScrollUp(n) +} + +// ScrollUp moves the view down by the given number of lines. Returns the new +// lines to show. +func (m *Model) ScrollUp(n int) (lines []string) { + if m.AtTop() || n == 0 || len(m.lines) == 0 { + return nil + } + + // Make sure the number of lines by which we're going to scroll isn't + // greater than the number of lines we are from the top. + m.SetYOffset(m.YOffset - n) + + // Gather lines to send off for performance scrolling. + // + // XXX: high performance rendering is deprecated in Bubble Tea. + top := max(0, m.YOffset) + bottom := clamp(m.YOffset+n, 0, m.maxYOffset()) + return m.lines[top:bottom] +} + +// SetHorizontalStep sets the default amount of columns to scroll left or right +// with the default viewport key map. +// +// If set to 0 or less, horizontal scrolling is disabled. +// +// On v1, horizontal scrolling is disabled by default. +func (m *Model) SetHorizontalStep(n int) { + m.horizontalStep = max(n, 0) +} + +// SetXOffset sets the X offset. +func (m *Model) SetXOffset(n int) { + m.xOffset = clamp(n, 0, m.longestLineWidth-m.Width) +} + +// ScrollLeft moves the viewport to the left by the given number of columns. +func (m *Model) ScrollLeft(n int) { + m.SetXOffset(m.xOffset - n) +} + +// ScrollRight moves viewport to the right by the given number of columns. +func (m *Model) ScrollRight(n int) { + m.SetXOffset(m.xOffset + n) +} + +// TotalLineCount returns the total number of lines (both hidden and visible) within the viewport. +func (m Model) TotalLineCount() int { + return len(m.lines) +} + +// VisibleLineCount returns the number of the visible lines within the viewport. +func (m Model) VisibleLineCount() int { + return len(m.visibleLines()) +} + +// GotoTop sets the viewport to the top position. +func (m *Model) GotoTop() (lines []string) { + if m.AtTop() { + return nil + } + + m.SetYOffset(0) + return m.visibleLines() +} + +// GotoBottom sets the viewport to the bottom position. +func (m *Model) GotoBottom() (lines []string) { + m.SetYOffset(m.maxYOffset()) + return m.visibleLines() +} + +// Sync tells the renderer where the viewport will be located and requests +// a render of the current state of the viewport. It should be called for the +// first render and after a window resize. +// +// For high performance rendering only. +// +// Deprecated: high performance rendering is deprecated in Bubble Tea. +func Sync(m Model) tea.Cmd { + if len(m.lines) == 0 { + return nil + } + top, bottom := m.scrollArea() + return tea.SyncScrollArea(m.visibleLines(), top, bottom) +} + +// ViewDown is a high performance command that moves the viewport up by a given +// number of lines. Use Model.ViewDown to get the lines that should be rendered. +// For example: +// +// lines := model.ViewDown(1) +// cmd := ViewDown(m, lines) +// +// Deprecated: high performance rendering is deprecated in Bubble Tea. +func ViewDown(m Model, lines []string) tea.Cmd { + if len(lines) == 0 { + return nil + } + top, bottom := m.scrollArea() + + // XXX: high performance rendering is deprecated in Bubble Tea. In a v2 we + // won't need to return a command here. + return tea.ScrollDown(lines, top, bottom) +} + +// ViewUp is a high performance command the moves the viewport down by a given +// number of lines height. Use Model.ViewUp to get the lines that should be +// rendered. +// +// Deprecated: high performance rendering is deprecated in Bubble Tea. +func ViewUp(m Model, lines []string) tea.Cmd { + if len(lines) == 0 { + return nil + } + top, bottom := m.scrollArea() + + // XXX: high performance rendering is deprecated in Bubble Tea. In a v2 we + // won't need to return a command here. + return tea.ScrollUp(lines, top, bottom) +} + +// Update handles standard message-based viewport updates. +func (m Model) Update(msg tea.Msg) (Model, tea.Cmd) { + var cmd tea.Cmd + m, cmd = m.updateAsModel(msg) + return m, cmd +} + +// Author's note: this method has been broken out to make it easier to +// potentially transition Update to satisfy tea.Model. +func (m Model) updateAsModel(msg tea.Msg) (Model, tea.Cmd) { + if !m.initialized { + m.setInitialValues() + } + + var cmd tea.Cmd + + switch msg := msg.(type) { + case tea.KeyMsg: + switch { + case key.Matches(msg, m.KeyMap.PageDown): + lines := m.PageDown() + if m.HighPerformanceRendering { + cmd = ViewDown(m, lines) + } + + case key.Matches(msg, m.KeyMap.PageUp): + lines := m.PageUp() + if m.HighPerformanceRendering { + cmd = ViewUp(m, lines) + } + + case key.Matches(msg, m.KeyMap.HalfPageDown): + lines := m.HalfPageDown() + if m.HighPerformanceRendering { + cmd = ViewDown(m, lines) + } + + case key.Matches(msg, m.KeyMap.HalfPageUp): + lines := m.HalfPageUp() + if m.HighPerformanceRendering { + cmd = ViewUp(m, lines) + } + + case key.Matches(msg, m.KeyMap.Down): + lines := m.ScrollDown(1) + if m.HighPerformanceRendering { + cmd = ViewDown(m, lines) + } + + case key.Matches(msg, m.KeyMap.Up): + lines := m.ScrollUp(1) + if m.HighPerformanceRendering { + cmd = ViewUp(m, lines) + } + + case key.Matches(msg, m.KeyMap.Left): + m.ScrollLeft(m.horizontalStep) + + case key.Matches(msg, m.KeyMap.Right): + m.ScrollRight(m.horizontalStep) + } + + case tea.MouseMsg: + if !m.MouseWheelEnabled || msg.Action != tea.MouseActionPress { + break + } + switch msg.Button { //nolint:exhaustive + case tea.MouseButtonWheelUp: + if msg.Shift { + // Note that not every terminal emulator sends the shift event for mouse actions by default (looking at you Konsole) + m.ScrollLeft(m.horizontalStep) + } else { + lines := m.ScrollUp(m.MouseWheelDelta) + if m.HighPerformanceRendering { + cmd = ViewUp(m, lines) + } + } + + case tea.MouseButtonWheelDown: + if msg.Shift { + m.ScrollRight(m.horizontalStep) + } else { + lines := m.ScrollDown(m.MouseWheelDelta) + if m.HighPerformanceRendering { + cmd = ViewDown(m, lines) + } + } + // Note that not every terminal emulator sends the horizontal wheel events by default (looking at you Konsole) + case tea.MouseButtonWheelLeft: + m.ScrollLeft(m.horizontalStep) + case tea.MouseButtonWheelRight: + m.ScrollRight(m.horizontalStep) + } + } + + return m, cmd +} + +// View renders the viewport into a string. +func (m Model) View() string { + if m.HighPerformanceRendering { + // Just send newlines since we're going to be rendering the actual + // content separately. We still need to send something that equals the + // height of this view so that the Bubble Tea standard renderer can + // position anything below this view properly. + return strings.Repeat("\n", max(0, m.Height-1)) + } + + w, h := m.Width, m.Height + if sw := m.Style.GetWidth(); sw != 0 { + w = min(w, sw) + } + if sh := m.Style.GetHeight(); sh != 0 { + h = min(h, sh) + } + contentWidth := w - m.Style.GetHorizontalFrameSize() + contentHeight := h - m.Style.GetVerticalFrameSize() + contents := lipgloss.NewStyle(). + Width(contentWidth). // pad to width. + Height(contentHeight). // pad to height. + MaxHeight(contentHeight). // truncate height if taller. + MaxWidth(contentWidth). // truncate width if wider. + Render(strings.Join(m.visibleLines(), "\n")) + return m.Style. + UnsetWidth().UnsetHeight(). // Style size already applied in contents. + Render(contents) +} + +func clamp(v, low, high int) int { + if high < low { + low, high = high, low + } + return min(high, max(low, v)) +} + +func findLongestLineWidth(lines []string) int { + w := 0 + for _, l := range lines { + if ww := ansi.StringWidth(l); ww > w { + w = ww + } + } + return w +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitattributes b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitattributes new file mode 100644 index 0000000..6c929d4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitattributes @@ -0,0 +1 @@ +*.golden -text diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitignore b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitignore new file mode 100644 index 0000000..abd7c06 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +.envrc + +examples/fullscreen/fullscreen +examples/help/help +examples/http/http +examples/list-default/list-default +examples/list-fancy/list-fancy +examples/list-simple/list-simple +examples/mouse/mouse +examples/pager/pager +examples/progress-download/color_vortex.blend +examples/progress-download/progress-download +examples/simple/simple +examples/spinner/spinner +examples/textinput/textinput +examples/textinputs/textinputs +examples/views/views +tutorials/basics/basics +tutorials/commands/commands +.idea +coverage.txt +dist/ diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.golangci.yml new file mode 100644 index 0000000..929cb0a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.golangci.yml @@ -0,0 +1,44 @@ +version: "2" +run: + tests: false +linters: + enable: + - bodyclose + - exhaustive + - goconst + - godot + - gomoddirectives + - goprintffuncname + - gosec + - misspell + - nakedret + - nestif + - nilerr + - noctx + - nolintlint + - prealloc + - revive + - rowserrcheck + - sqlclosecheck + - tparallel + - unconvert + - unparam + - whitespace + - wrapcheck + exclusions: + rules: + - text: '(slog|log)\.\w+' + linters: + - noctx + generated: lax + presets: + - common-false-positives +issues: + max-issues-per-linter: 0 + max-same-issues: 0 +formatters: + enable: + - gofumpt + - goimports + exclusions: + generated: lax diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.goreleaser.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.goreleaser.yml new file mode 100644 index 0000000..3353d02 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/.goreleaser.yml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json +version: 2 +includes: + - from_url: + url: charmbracelet/meta/main/goreleaser-lib.yaml diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/LICENSE new file mode 100644 index 0000000..be3f0c1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2025 Charmbracelet, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/README.md b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/README.md new file mode 100644 index 0000000..83f3da0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/README.md @@ -0,0 +1,400 @@ +# Bubble Tea + +

+ + + + + +
+ Latest Release + GoDoc + Build Status +

+ +The fun, functional and stateful way to build terminal apps. A Go framework +based on [The Elm Architecture][elm]. Bubble Tea is well-suited for simple and +complex terminal applications, either inline, full-window, or a mix of both. + +

+ Bubble Tea Example +

+ +Bubble Tea is in use in production and includes a number of features and +performance optimizations we’ve added along the way. Among those is +a framerate-based renderer, mouse support, focus reporting and more. + +To get started, see the tutorial below, the [examples][examples], the +[docs][docs], the [video tutorials][youtube] and some common [resources](#libraries-we-use-with-bubble-tea). + +[youtube]: https://charm.sh/yt + +## By the way + +Be sure to check out [Bubbles][bubbles], a library of common UI components for Bubble Tea. + +

+ Bubbles Badge   + Text Input Example from Bubbles +

+ +--- + +## Tutorial + +Bubble Tea is based on the functional design paradigms of [The Elm +Architecture][elm], which happens to work nicely with Go. It's a delightful way +to build applications. + +This tutorial assumes you have a working knowledge of Go. + +By the way, the non-annotated source code for this program is available +[on GitHub][tut-source]. + +[elm]: https://guide.elm-lang.org/architecture/ +[tut-source]: https://github.com/charmbracelet/bubbletea/tree/main/tutorials/basics + +### Enough! Let's get to it. + +For this tutorial, we're making a shopping list. + +To start we'll define our package and import some libraries. Our only external +import will be the Bubble Tea library, which we'll call `tea` for short. + +```go +package main + +// These imports will be used later on the tutorial. If you save the file +// now, Go might complain they are unused, but that's fine. +// You may also need to run `go mod tidy` to download bubbletea and its +// dependencies. +import ( + "fmt" + "os" + + tea "github.com/charmbracelet/bubbletea" +) +``` + +Bubble Tea programs are comprised of a **model** that describes the application +state and three simple methods on that model: + +- **Init**, a function that returns an initial command for the application to run. +- **Update**, a function that handles incoming events and updates the model accordingly. +- **View**, a function that renders the UI based on the data in the model. + +### The Model + +So let's start by defining our model which will store our application's state. +It can be any type, but a `struct` usually makes the most sense. + +```go +type model struct { + choices []string // items on the to-do list + cursor int // which to-do list item our cursor is pointing at + selected map[int]struct{} // which to-do items are selected +} +``` + +### Initialization + +Next, we’ll define our application’s initial state. In this case, we’re defining +a function to return our initial model, however, we could just as easily define +the initial model as a variable elsewhere, too. + +```go +func initialModel() model { + return model{ + // Our to-do list is a grocery list + choices: []string{"Buy carrots", "Buy celery", "Buy kohlrabi"}, + + // A map which indicates which choices are selected. We're using + // the map like a mathematical set. The keys refer to the indexes + // of the `choices` slice, above. + selected: make(map[int]struct{}), + } +} +``` + +Next, we define the `Init` method. `Init` can return a `Cmd` that could perform +some initial I/O. For now, we don't need to do any I/O, so for the command, +we'll just return `nil`, which translates to "no command." + +```go +func (m model) Init() tea.Cmd { + // Just return `nil`, which means "no I/O right now, please." + return nil +} +``` + +### The Update Method + +Next up is the update method. The update function is called when ”things +happen.” Its job is to look at what has happened and return an updated model in +response. It can also return a `Cmd` to make more things happen, but for now +don't worry about that part. + +In our case, when a user presses the down arrow, `Update`’s job is to notice +that the down arrow was pressed and move the cursor accordingly (or not). + +The “something happened” comes in the form of a `Msg`, which can be any type. +Messages are the result of some I/O that took place, such as a keypress, timer +tick, or a response from a server. + +We usually figure out which type of `Msg` we received with a type switch, but +you could also use a type assertion. + +For now, we'll just deal with `tea.KeyMsg` messages, which are automatically +sent to the update function when keys are pressed. + +```go +func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { + switch msg := msg.(type) { + + // Is it a key press? + case tea.KeyMsg: + + // Cool, what was the actual key pressed? + switch msg.String() { + + // These keys should exit the program. + case "ctrl+c", "q": + return m, tea.Quit + + // The "up" and "k" keys move the cursor up + case "up", "k": + if m.cursor > 0 { + m.cursor-- + } + + // The "down" and "j" keys move the cursor down + case "down", "j": + if m.cursor < len(m.choices)-1 { + m.cursor++ + } + + // The "enter" key and the spacebar (a literal space) toggle + // the selected state for the item that the cursor is pointing at. + case "enter", " ": + _, ok := m.selected[m.cursor] + if ok { + delete(m.selected, m.cursor) + } else { + m.selected[m.cursor] = struct{}{} + } + } + } + + // Return the updated model to the Bubble Tea runtime for processing. + // Note that we're not returning a command. + return m, nil +} +``` + +You may have noticed that ctrl+c and q above return +a `tea.Quit` command with the model. That’s a special command which instructs +the Bubble Tea runtime to quit, exiting the program. + +### The View Method + +At last, it’s time to render our UI. Of all the methods, the view is the +simplest. We look at the model in its current state and use it to return +a `string`. That string is our UI! + +Because the view describes the entire UI of your application, you don’t have to +worry about redrawing logic and stuff like that. Bubble Tea takes care of it +for you. + +```go +func (m model) View() string { + // The header + s := "What should we buy at the market?\n\n" + + // Iterate over our choices + for i, choice := range m.choices { + + // Is the cursor pointing at this choice? + cursor := " " // no cursor + if m.cursor == i { + cursor = ">" // cursor! + } + + // Is this choice selected? + checked := " " // not selected + if _, ok := m.selected[i]; ok { + checked = "x" // selected! + } + + // Render the row + s += fmt.Sprintf("%s [%s] %s\n", cursor, checked, choice) + } + + // The footer + s += "\nPress q to quit.\n" + + // Send the UI for rendering + return s +} +``` + +### All Together Now + +The last step is to simply run our program. We pass our initial model to +`tea.NewProgram` and let it rip: + +```go +func main() { + p := tea.NewProgram(initialModel()) + if _, err := p.Run(); err != nil { + fmt.Printf("Alas, there's been an error: %v", err) + os.Exit(1) + } +} +``` + +## What’s Next? + +This tutorial covers the basics of building an interactive terminal UI, but +in the real world you'll also need to perform I/O. To learn about that have a +look at the [Command Tutorial][cmd]. It's pretty simple. + +There are also several [Bubble Tea examples][examples] available and, of course, +there are [Go Docs][docs]. + +[cmd]: https://github.com/charmbracelet/bubbletea/tree/main/tutorials/commands/ +[examples]: https://github.com/charmbracelet/bubbletea/tree/main/examples +[docs]: https://pkg.go.dev/github.com/charmbracelet/bubbletea?tab=doc + +## Debugging + +### Debugging with Delve + +Since Bubble Tea apps assume control of stdin and stdout, you’ll need to run +delve in headless mode and then connect to it: + +```bash +# Start the debugger +$ dlv debug --headless --api-version=2 --listen=127.0.0.1:43000 . +API server listening at: 127.0.0.1:43000 + +# Connect to it from another terminal +$ dlv connect 127.0.0.1:43000 +``` + +If you do not explicitly supply the `--listen` flag, the port used will vary +per run, so passing this in makes the debugger easier to use from a script +or your IDE of choice. + +Additionally, we pass in `--api-version=2` because delve defaults to version 1 +for backwards compatibility reasons. However, delve recommends using version 2 +for all new development and some clients may no longer work with version 1. +For more information, see the [Delve documentation](https://github.com/go-delve/delve/tree/master/Documentation/api). + +### Logging Stuff + +You can’t really log to stdout with Bubble Tea because your TUI is busy +occupying that! You can, however, log to a file by including something like +the following prior to starting your Bubble Tea program: + +```go +if len(os.Getenv("DEBUG")) > 0 { + f, err := tea.LogToFile("debug.log", "debug") + if err != nil { + fmt.Println("fatal:", err) + os.Exit(1) + } + defer f.Close() +} +``` + +To see what’s being logged in real time, run `tail -f debug.log` while you run +your program in another window. + +## Libraries we use with Bubble Tea + +- [Bubbles][bubbles]: Common Bubble Tea components such as text inputs, viewports, spinners and so on +- [Lip Gloss][lipgloss]: Style, format and layout tools for terminal applications +- [Harmonica][harmonica]: A spring animation library for smooth, natural motion +- [BubbleZone][bubblezone]: Easy mouse event tracking for Bubble Tea components +- [ntcharts][ntcharts]: A terminal charting library built for Bubble Tea and [Lip Gloss][lipgloss] + +[bubbles]: https://github.com/charmbracelet/bubbles +[lipgloss]: https://github.com/charmbracelet/lipgloss +[harmonica]: https://github.com/charmbracelet/harmonica +[bubblezone]: https://github.com/lrstanley/bubblezone +[ntcharts]: https://github.com/NimbleMarkets/ntcharts + +## Bubble Tea in the Wild + +There are over [10,000 applications](https://github.com/charmbracelet/bubbletea/network/dependents) built with Bubble Tea! Here are a handful of ’em. + +### Staff favourites + +- [chezmoi](https://github.com/twpayne/chezmoi): securely manage your dotfiles across multiple machines +- [circumflex](https://github.com/bensadeh/circumflex): read Hacker News in the terminal +- [gh-dash](https://www.github.com/dlvhdr/gh-dash): a GitHub CLI extension for PRs and issues +- [Tetrigo](https://github.com/Broderick-Westrope/tetrigo): Tetris in the terminal +- [Signls](https://github.com/emprcl/signls): a generative midi sequencer designed for composition and live performance +- [Superfile](https://github.com/yorukot/superfile): a super file manager + +### In Industry + +- Microsoft Azure – [Aztify](https://github.com/Azure/aztfy): bring Microsoft Azure resources under Terraform +- Daytona – [Daytona](https://github.com/daytonaio/daytona): open source dev environment manager +- Cockroach Labs – [CockroachDB](https://github.com/cockroachdb/cockroach): a cloud-native, high-availability distributed SQL database +- Truffle Security Co. – [Trufflehog](https://github.com/trufflesecurity/trufflehog): find leaked credentials +- NVIDIA – [container-canary](https://github.com/NVIDIA/container-canary): a container validator +- AWS – [eks-node-viewer](https://github.com/awslabs/eks-node-viewer): a tool for visualizing dynamic node usage within an EKS cluster +- MinIO – [mc](https://github.com/minio/mc): the official [MinIO](https://min.io) client +- Ubuntu – [Authd](https://github.com/ubuntu/authd): an authentication daemon for cloud-based identity providers + +### Charm stuff + +- [Glow](https://github.com/charmbracelet/glow): a markdown reader, browser, and online markdown stash +- [Huh?](https://github.com/charmbracelet/huh): an interactive prompt and form toolkit +- [Mods](https://github.com/charmbracelet/mods): AI on the CLI, built for pipelines +- [Wishlist](https://github.com/charmbracelet/wishlist): an SSH directory (and bastion!) + +### There’s so much more where that came from + +For more applications built with Bubble Tea see [Charm & Friends][community]. +Is there something cool you made with Bubble Tea you want to share? [PRs][community] are +welcome! + +## Contributing + +See [contributing][contribute]. + +[contribute]: https://github.com/charmbracelet/bubbletea/contribute + +## Feedback + +We’d love to hear your thoughts on this project. Feel free to drop us a note! + +- [Twitter](https://twitter.com/charmcli) +- [The Fediverse](https://mastodon.social/@charmcli) +- [Discord](https://charm.sh/chat) + +## Acknowledgments + +Bubble Tea is based on the paradigms of [The Elm Architecture][elm] by Evan +Czaplicki et alia and the excellent [go-tea][gotea] by TJ Holowaychuk. It’s +inspired by the many great [_Zeichenorientierte Benutzerschnittstellen_][zb] +of days past. + +[elm]: https://guide.elm-lang.org/architecture/ +[gotea]: https://github.com/tj/go-tea +[zb]: https://de.wikipedia.org/wiki/Zeichenorientierte_Benutzerschnittstelle +[community]: https://github.com/charm-and-friends/charm-in-the-wild + +## License + +[MIT](https://github.com/charmbracelet/bubbletea/raw/main/LICENSE) + +--- + +Part of [Charm](https://charm.sh). + +The Charm logo + +Charm热爱开源 • Charm loves open source • نحنُ نحب المصادر المفتوحة diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/Taskfile.yaml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/Taskfile.yaml new file mode 100644 index 0000000..3507203 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/Taskfile.yaml @@ -0,0 +1,14 @@ +# https://taskfile.dev + +version: '3' + +tasks: + lint: + desc: Run lint + cmds: + - golangci-lint run + + test: + desc: Run tests + cmds: + - go test ./... {{.CLI_ARGS}} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/commands.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/commands.go new file mode 100644 index 0000000..ec9dac2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/commands.go @@ -0,0 +1,222 @@ +package tea + +import ( + "time" +) + +// Batch performs a bunch of commands concurrently with no ordering guarantees +// about the results. Use a Batch to return several commands. +// +// Example: +// +// func (m model) Init() Cmd { +// return tea.Batch(someCommand, someOtherCommand) +// } +func Batch(cmds ...Cmd) Cmd { + return compactCmds[BatchMsg](cmds) +} + +// BatchMsg is a message used to perform a bunch of commands concurrently with +// no ordering guarantees. You can send a BatchMsg with Batch. +type BatchMsg []Cmd + +// Sequence runs the given commands one at a time, in order. Contrast this with +// Batch, which runs commands concurrently. +func Sequence(cmds ...Cmd) Cmd { + return compactCmds[sequenceMsg](cmds) +} + +// sequenceMsg is used internally to run the given commands in order. +type sequenceMsg []Cmd + +// compactCmds ignores any nil commands in cmds, and returns the most direct +// command possible. That is, considering the non-nil commands, if there are +// none it returns nil, if there is exactly one it returns that command +// directly, else it returns the non-nil commands as type T. +func compactCmds[T ~[]Cmd](cmds []Cmd) Cmd { + var validCmds []Cmd //nolint:prealloc + for _, c := range cmds { + if c == nil { + continue + } + validCmds = append(validCmds, c) + } + switch len(validCmds) { + case 0: + return nil + case 1: + return validCmds[0] + default: + return func() Msg { + return T(validCmds) + } + } +} + +// Every is a command that ticks in sync with the system clock. So, if you +// wanted to tick with the system clock every second, minute or hour you +// could use this. It's also handy for having different things tick in sync. +// +// Because we're ticking with the system clock the tick will likely not run for +// the entire specified duration. For example, if we're ticking for one minute +// and the clock is at 12:34:20 then the next tick will happen at 12:35:00, 40 +// seconds later. +// +// To produce the command, pass a duration and a function which returns +// a message containing the time at which the tick occurred. +// +// type TickMsg time.Time +// +// cmd := Every(time.Second, func(t time.Time) Msg { +// return TickMsg(t) +// }) +// +// Beginners' note: Every sends a single message and won't automatically +// dispatch messages at an interval. To do that, you'll want to return another +// Every command after receiving your tick message. For example: +// +// type TickMsg time.Time +// +// // Send a message every second. +// func tickEvery() Cmd { +// return Every(time.Second, func(t time.Time) Msg { +// return TickMsg(t) +// }) +// } +// +// func (m model) Init() Cmd { +// // Start ticking. +// return tickEvery() +// } +// +// func (m model) Update(msg Msg) (Model, Cmd) { +// switch msg.(type) { +// case TickMsg: +// // Return your Every command again to loop. +// return m, tickEvery() +// } +// return m, nil +// } +// +// Every is analogous to Tick in the Elm Architecture. +func Every(duration time.Duration, fn func(time.Time) Msg) Cmd { + n := time.Now() + d := n.Truncate(duration).Add(duration).Sub(n) + t := time.NewTimer(d) + return func() Msg { + ts := <-t.C + t.Stop() + for len(t.C) > 0 { + <-t.C + } + return fn(ts) + } +} + +// Tick produces a command at an interval independent of the system clock at +// the given duration. That is, the timer begins precisely when invoked, +// and runs for its entire duration. +// +// To produce the command, pass a duration and a function which returns +// a message containing the time at which the tick occurred. +// +// type TickMsg time.Time +// +// cmd := Tick(time.Second, func(t time.Time) Msg { +// return TickMsg(t) +// }) +// +// Beginners' note: Tick sends a single message and won't automatically +// dispatch messages at an interval. To do that, you'll want to return another +// Tick command after receiving your tick message. For example: +// +// type TickMsg time.Time +// +// func doTick() Cmd { +// return Tick(time.Second, func(t time.Time) Msg { +// return TickMsg(t) +// }) +// } +// +// func (m model) Init() Cmd { +// // Start ticking. +// return doTick() +// } +// +// func (m model) Update(msg Msg) (Model, Cmd) { +// switch msg.(type) { +// case TickMsg: +// // Return your Tick command again to loop. +// return m, doTick() +// } +// return m, nil +// } +func Tick(d time.Duration, fn func(time.Time) Msg) Cmd { + t := time.NewTimer(d) + return func() Msg { + ts := <-t.C + t.Stop() + for len(t.C) > 0 { + <-t.C + } + return fn(ts) + } +} + +// Sequentially produces a command that sequentially executes the given +// commands. +// The Msg returned is the first non-nil message returned by a Cmd. +// +// func saveStateCmd() Msg { +// if err := save(); err != nil { +// return errMsg{err} +// } +// return nil +// } +// +// cmd := Sequentially(saveStateCmd, Quit) +// +// Deprecated: use Sequence instead. +func Sequentially(cmds ...Cmd) Cmd { + return func() Msg { + for _, cmd := range cmds { + if cmd == nil { + continue + } + if msg := cmd(); msg != nil { + return msg + } + } + return nil + } +} + +// setWindowTitleMsg is an internal message used to set the window title. +type setWindowTitleMsg string + +// SetWindowTitle produces a command that sets the terminal title. +// +// For example: +// +// func (m model) Init() Cmd { +// // Set title. +// return tea.SetWindowTitle("My App") +// } +func SetWindowTitle(title string) Cmd { + return func() Msg { + return setWindowTitleMsg(title) + } +} + +type windowSizeMsg struct{} + +// WindowSize is a command that queries the terminal for its current size. It +// delivers the results to Update via a [WindowSizeMsg]. Keep in mind that +// WindowSizeMsgs will automatically be delivered to Update when the [Program] +// starts and when the window dimensions change so in many cases you will not +// need to explicitly invoke this command. +func WindowSize() Cmd { + return func() Msg { + return windowSizeMsg{} + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/exec.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/exec.go new file mode 100644 index 0000000..8048414 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/exec.go @@ -0,0 +1,133 @@ +package tea + +import ( + "io" + "os" + "os/exec" +) + +// execMsg is used internally to run an ExecCommand sent with Exec. +type execMsg struct { + cmd ExecCommand + fn ExecCallback +} + +// Exec is used to perform arbitrary I/O in a blocking fashion, effectively +// pausing the Program while execution is running and resuming it when +// execution has completed. +// +// Most of the time you'll want to use ExecProcess, which runs an exec.Cmd. +// +// For non-interactive i/o you should use a Cmd (that is, a tea.Cmd). +func Exec(c ExecCommand, fn ExecCallback) Cmd { + return func() Msg { + return execMsg{cmd: c, fn: fn} + } +} + +// ExecProcess runs the given *exec.Cmd in a blocking fashion, effectively +// pausing the Program while the command is running. After the *exec.Cmd exists +// the Program resumes. It's useful for spawning other interactive applications +// such as editors and shells from within a Program. +// +// To produce the command, pass an *exec.Cmd and a function which returns +// a message containing the error which may have occurred when running the +// ExecCommand. +// +// type VimFinishedMsg struct { err error } +// +// c := exec.Command("vim", "file.txt") +// +// cmd := ExecProcess(c, func(err error) Msg { +// return VimFinishedMsg{err: err} +// }) +// +// Or, if you don't care about errors, you could simply: +// +// cmd := ExecProcess(exec.Command("vim", "file.txt"), nil) +// +// For non-interactive i/o you should use a Cmd (that is, a tea.Cmd). +func ExecProcess(c *exec.Cmd, fn ExecCallback) Cmd { + return Exec(wrapExecCommand(c), fn) +} + +// ExecCallback is used when executing an *exec.Command to return a message +// with an error, which may or may not be nil. +type ExecCallback func(error) Msg + +// ExecCommand can be implemented to execute things in a blocking fashion in +// the current terminal. +type ExecCommand interface { + Run() error + SetStdin(io.Reader) + SetStdout(io.Writer) + SetStderr(io.Writer) +} + +// wrapExecCommand wraps an exec.Cmd so that it satisfies the ExecCommand +// interface so it can be used with Exec. +func wrapExecCommand(c *exec.Cmd) ExecCommand { + return &osExecCommand{Cmd: c} +} + +// osExecCommand is a layer over an exec.Cmd that satisfies the ExecCommand +// interface. +type osExecCommand struct{ *exec.Cmd } + +// SetStdin sets stdin on underlying exec.Cmd to the given io.Reader. +func (c *osExecCommand) SetStdin(r io.Reader) { + // If unset, have the command use the same input as the terminal. + if c.Stdin == nil { + c.Stdin = r + } +} + +// SetStdout sets stdout on underlying exec.Cmd to the given io.Writer. +func (c *osExecCommand) SetStdout(w io.Writer) { + // If unset, have the command use the same output as the terminal. + if c.Stdout == nil { + c.Stdout = w + } +} + +// SetStderr sets stderr on the underlying exec.Cmd to the given io.Writer. +func (c *osExecCommand) SetStderr(w io.Writer) { + // If unset, use stderr for the command's stderr + if c.Stderr == nil { + c.Stderr = w + } +} + +// exec runs an ExecCommand and delivers the results to the program as a Msg. +func (p *Program) exec(c ExecCommand, fn ExecCallback) { + if err := p.ReleaseTerminal(); err != nil { + // If we can't release input, abort. + if fn != nil { + go p.Send(fn(err)) + } + return + } + + c.SetStdin(p.input) + c.SetStdout(p.output) + c.SetStderr(os.Stderr) + + // Execute system command. + if err := c.Run(); err != nil { + p.renderer.resetLinesRendered() + _ = p.RestoreTerminal() // also try to restore the terminal. + if fn != nil { + go p.Send(fn(err)) + } + return + } + + // Maintain the existing output from the command + p.renderer.resetLinesRendered() + + // Have the program re-capture input. + err := p.RestoreTerminal() + if fn != nil { + go p.Send(fn(err)) + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/focus.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/focus.go new file mode 100644 index 0000000..4d34bea --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/focus.go @@ -0,0 +1,9 @@ +package tea + +// FocusMsg represents a terminal focus message. +// This occurs when the terminal gains focus. +type FocusMsg struct{} + +// BlurMsg represents a terminal blur message. +// This occurs when the terminal loses focus. +type BlurMsg struct{} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_other.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_other.go new file mode 100644 index 0000000..1d1b176 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_other.go @@ -0,0 +1,19 @@ +//go:build !windows +// +build !windows + +package tea + +import ( + "fmt" + "io" + + "github.com/muesli/cancelreader" +) + +func newInputReader(r io.Reader, _ bool) (cancelreader.CancelReader, error) { + cr, err := cancelreader.NewReader(r) + if err != nil { + return nil, fmt.Errorf("bubbletea: error creating cancel reader: %w", err) + } + return cr, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_windows.go new file mode 100644 index 0000000..1e48f70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/inputreader_windows.go @@ -0,0 +1,129 @@ +//go:build windows +// +build windows + +package tea + +import ( + "fmt" + "io" + "os" + "sync" + + "github.com/charmbracelet/x/term" + "github.com/erikgeiser/coninput" + "github.com/muesli/cancelreader" + "golang.org/x/sys/windows" +) + +type conInputReader struct { + cancelMixin + + conin windows.Handle + + originalMode uint32 +} + +var _ cancelreader.CancelReader = &conInputReader{} + +func newInputReader(r io.Reader, enableMouse bool) (cancelreader.CancelReader, error) { + fallback := func(io.Reader) (cancelreader.CancelReader, error) { + return cancelreader.NewReader(r) + } + if f, ok := r.(term.File); !ok || f.Fd() != os.Stdin.Fd() { + return fallback(r) + } + + conin, err := coninput.NewStdinHandle() + if err != nil { + return fallback(r) + } + + modes := []uint32{ + windows.ENABLE_WINDOW_INPUT, + windows.ENABLE_EXTENDED_FLAGS, + } + + // Since we have options to enable mouse events, [WithMouseCellMotion], + // [WithMouseAllMotion], and [EnableMouseCellMotion], + // [EnableMouseAllMotion], and [DisableMouse], we need to check if the user + // has enabled mouse events and add the appropriate mode accordingly. + // Otherwise, mouse events will be enabled all the time. + if enableMouse { + modes = append(modes, windows.ENABLE_MOUSE_INPUT) + } + + originalMode, err := prepareConsole(conin, modes...) + if err != nil { + return nil, fmt.Errorf("failed to prepare console input: %w", err) + } + + return &conInputReader{ + conin: conin, + originalMode: originalMode, + }, nil +} + +// Cancel implements cancelreader.CancelReader. +func (r *conInputReader) Cancel() bool { + r.setCanceled() + + // Warning: These cancel methods do not reliably work on console input + // and should not be counted on. + return windows.CancelIoEx(r.conin, nil) == nil || windows.CancelIo(r.conin) == nil +} + +// Close implements cancelreader.CancelReader. +func (r *conInputReader) Close() error { + if r.originalMode != 0 { + err := windows.SetConsoleMode(r.conin, r.originalMode) + if err != nil { + return fmt.Errorf("reset console mode: %w", err) + } + } + + return nil +} + +// Read implements cancelreader.CancelReader. +func (r *conInputReader) Read(_ []byte) (n int, err error) { + if r.isCanceled() { + err = cancelreader.ErrCanceled + } + return +} + +func prepareConsole(input windows.Handle, modes ...uint32) (originalMode uint32, err error) { + err = windows.GetConsoleMode(input, &originalMode) + if err != nil { + return 0, fmt.Errorf("get console mode: %w", err) + } + + newMode := coninput.AddInputModes(0, modes...) + + err = windows.SetConsoleMode(input, newMode) + if err != nil { + return 0, fmt.Errorf("set console mode: %w", err) + } + + return originalMode, nil +} + +// cancelMixin represents a goroutine-safe cancellation status. +type cancelMixin struct { + unsafeCanceled bool + lock sync.Mutex +} + +func (c *cancelMixin) setCanceled() { + c.lock.Lock() + defer c.lock.Unlock() + + c.unsafeCanceled = true +} + +func (c *cancelMixin) isCanceled() bool { + c.lock.Lock() + defer c.lock.Unlock() + + return c.unsafeCanceled +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key.go new file mode 100644 index 0000000..12a161a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key.go @@ -0,0 +1,715 @@ +package tea + +import ( + "context" + "fmt" + "io" + "regexp" + "strings" + "unicode/utf8" +) + +// KeyMsg contains information about a keypress. KeyMsgs are always sent to +// the program's update function. There are a couple general patterns you could +// use to check for keypresses: +// +// // Switch on the string representation of the key (shorter) +// switch msg := msg.(type) { +// case KeyMsg: +// switch msg.String() { +// case "enter": +// fmt.Println("you pressed enter!") +// case "a": +// fmt.Println("you pressed a!") +// } +// } +// +// // Switch on the key type (more foolproof) +// switch msg := msg.(type) { +// case KeyMsg: +// switch msg.Type { +// case KeyEnter: +// fmt.Println("you pressed enter!") +// case KeyRunes: +// switch string(msg.Runes) { +// case "a": +// fmt.Println("you pressed a!") +// } +// } +// } +// +// Note that Key.Runes will always contain at least one character, so you can +// always safely call Key.Runes[0]. In most cases Key.Runes will only contain +// one character, though certain input method editors (most notably Chinese +// IMEs) can input multiple runes at once. +type KeyMsg Key + +// String returns a string representation for a key message. It's safe (and +// encouraged) for use in key comparison. +func (k KeyMsg) String() (str string) { + return Key(k).String() +} + +// Key contains information about a keypress. +type Key struct { + Type KeyType + Runes []rune + Alt bool + Paste bool +} + +// String returns a friendly string representation for a key. It's safe (and +// encouraged) for use in key comparison. +// +// k := Key{Type: KeyEnter} +// fmt.Println(k) +// // Output: enter +func (k Key) String() (str string) { + var buf strings.Builder + if k.Alt { + buf.WriteString("alt+") + } + if k.Type == KeyRunes { + if k.Paste { + // Note: bubbles/keys bindings currently do string compares to + // recognize shortcuts. Since pasted text should never activate + // shortcuts, we need to ensure that the binding code doesn't + // match Key events that result from pastes. We achieve this + // here by enclosing pastes in '[...]' so that the string + // comparison in Matches() fails in that case. + buf.WriteByte('[') + } + buf.WriteString(string(k.Runes)) + if k.Paste { + buf.WriteByte(']') + } + return buf.String() + } else if s, ok := keyNames[k.Type]; ok { + buf.WriteString(s) + return buf.String() + } + return "" +} + +// KeyType indicates the key pressed, such as KeyEnter or KeyBreak or KeyCtrlC. +// All other keys will be type KeyRunes. To get the rune value, check the Rune +// method on a Key struct, or use the Key.String() method: +// +// k := Key{Type: KeyRunes, Runes: []rune{'a'}, Alt: true} +// if k.Type == KeyRunes { +// +// fmt.Println(k.Runes) +// // Output: a +// +// fmt.Println(k.String()) +// // Output: alt+a +// +// } +type KeyType int + +func (k KeyType) String() (str string) { + if s, ok := keyNames[k]; ok { + return s + } + return "" +} + +// Control keys. We could do this with an iota, but the values are very +// specific, so we set the values explicitly to avoid any confusion. +// +// See also: +// https://en.wikipedia.org/wiki/C0_and_C1_control_codes +const ( + keyNUL KeyType = 0 // null, \0 + keySOH KeyType = 1 // start of heading + keySTX KeyType = 2 // start of text + keyETX KeyType = 3 // break, ctrl+c + keyEOT KeyType = 4 // end of transmission + keyENQ KeyType = 5 // enquiry + keyACK KeyType = 6 // acknowledge + keyBEL KeyType = 7 // bell, \a + keyBS KeyType = 8 // backspace + keyHT KeyType = 9 // horizontal tabulation, \t + keyLF KeyType = 10 // line feed, \n + keyVT KeyType = 11 // vertical tabulation \v + keyFF KeyType = 12 // form feed \f + keyCR KeyType = 13 // carriage return, \r + keySO KeyType = 14 // shift out + keySI KeyType = 15 // shift in + keyDLE KeyType = 16 // data link escape + keyDC1 KeyType = 17 // device control one + keyDC2 KeyType = 18 // device control two + keyDC3 KeyType = 19 // device control three + keyDC4 KeyType = 20 // device control four + keyNAK KeyType = 21 // negative acknowledge + keySYN KeyType = 22 // synchronous idle + keyETB KeyType = 23 // end of transmission block + keyCAN KeyType = 24 // cancel + keyEM KeyType = 25 // end of medium + keySUB KeyType = 26 // substitution + keyESC KeyType = 27 // escape, \e + keyFS KeyType = 28 // file separator + keyGS KeyType = 29 // group separator + keyRS KeyType = 30 // record separator + keyUS KeyType = 31 // unit separator + keyDEL KeyType = 127 // delete. on most systems this is mapped to backspace, I hear +) + +// Control key aliases. +const ( + KeyNull KeyType = keyNUL + KeyBreak KeyType = keyETX + KeyEnter KeyType = keyCR + KeyBackspace KeyType = keyDEL + KeyTab KeyType = keyHT + KeyEsc KeyType = keyESC + KeyEscape KeyType = keyESC + + KeyCtrlAt KeyType = keyNUL // ctrl+@ + KeyCtrlA KeyType = keySOH + KeyCtrlB KeyType = keySTX + KeyCtrlC KeyType = keyETX + KeyCtrlD KeyType = keyEOT + KeyCtrlE KeyType = keyENQ + KeyCtrlF KeyType = keyACK + KeyCtrlG KeyType = keyBEL + KeyCtrlH KeyType = keyBS + KeyCtrlI KeyType = keyHT + KeyCtrlJ KeyType = keyLF + KeyCtrlK KeyType = keyVT + KeyCtrlL KeyType = keyFF + KeyCtrlM KeyType = keyCR + KeyCtrlN KeyType = keySO + KeyCtrlO KeyType = keySI + KeyCtrlP KeyType = keyDLE + KeyCtrlQ KeyType = keyDC1 + KeyCtrlR KeyType = keyDC2 + KeyCtrlS KeyType = keyDC3 + KeyCtrlT KeyType = keyDC4 + KeyCtrlU KeyType = keyNAK + KeyCtrlV KeyType = keySYN + KeyCtrlW KeyType = keyETB + KeyCtrlX KeyType = keyCAN + KeyCtrlY KeyType = keyEM + KeyCtrlZ KeyType = keySUB + KeyCtrlOpenBracket KeyType = keyESC // ctrl+[ + KeyCtrlBackslash KeyType = keyFS // ctrl+\ + KeyCtrlCloseBracket KeyType = keyGS // ctrl+] + KeyCtrlCaret KeyType = keyRS // ctrl+^ + KeyCtrlUnderscore KeyType = keyUS // ctrl+_ + KeyCtrlQuestionMark KeyType = keyDEL // ctrl+? +) + +// Other keys. +const ( + KeyRunes KeyType = -(iota + 1) + KeyUp + KeyDown + KeyRight + KeyLeft + KeyShiftTab + KeyHome + KeyEnd + KeyPgUp + KeyPgDown + KeyCtrlPgUp + KeyCtrlPgDown + KeyDelete + KeyInsert + KeySpace + KeyCtrlUp + KeyCtrlDown + KeyCtrlRight + KeyCtrlLeft + KeyCtrlHome + KeyCtrlEnd + KeyShiftUp + KeyShiftDown + KeyShiftRight + KeyShiftLeft + KeyShiftHome + KeyShiftEnd + KeyCtrlShiftUp + KeyCtrlShiftDown + KeyCtrlShiftLeft + KeyCtrlShiftRight + KeyCtrlShiftHome + KeyCtrlShiftEnd + KeyF1 + KeyF2 + KeyF3 + KeyF4 + KeyF5 + KeyF6 + KeyF7 + KeyF8 + KeyF9 + KeyF10 + KeyF11 + KeyF12 + KeyF13 + KeyF14 + KeyF15 + KeyF16 + KeyF17 + KeyF18 + KeyF19 + KeyF20 +) + +// Mappings for control keys and other special keys to friendly consts. +var keyNames = map[KeyType]string{ + // Control keys. + keyNUL: "ctrl+@", // also ctrl+` (that's ctrl+backtick) + keySOH: "ctrl+a", + keySTX: "ctrl+b", + keyETX: "ctrl+c", + keyEOT: "ctrl+d", + keyENQ: "ctrl+e", + keyACK: "ctrl+f", + keyBEL: "ctrl+g", + keyBS: "ctrl+h", + keyHT: "tab", // also ctrl+i + keyLF: "ctrl+j", + keyVT: "ctrl+k", + keyFF: "ctrl+l", + keyCR: "enter", + keySO: "ctrl+n", + keySI: "ctrl+o", + keyDLE: "ctrl+p", + keyDC1: "ctrl+q", + keyDC2: "ctrl+r", + keyDC3: "ctrl+s", + keyDC4: "ctrl+t", + keyNAK: "ctrl+u", + keySYN: "ctrl+v", + keyETB: "ctrl+w", + keyCAN: "ctrl+x", + keyEM: "ctrl+y", + keySUB: "ctrl+z", + keyESC: "esc", + keyFS: "ctrl+\\", + keyGS: "ctrl+]", + keyRS: "ctrl+^", + keyUS: "ctrl+_", + keyDEL: "backspace", + + // Other keys. + KeyRunes: "runes", + KeyUp: "up", + KeyDown: "down", + KeyRight: "right", + KeySpace: " ", // for backwards compatibility + KeyLeft: "left", + KeyShiftTab: "shift+tab", + KeyHome: "home", + KeyEnd: "end", + KeyCtrlHome: "ctrl+home", + KeyCtrlEnd: "ctrl+end", + KeyShiftHome: "shift+home", + KeyShiftEnd: "shift+end", + KeyCtrlShiftHome: "ctrl+shift+home", + KeyCtrlShiftEnd: "ctrl+shift+end", + KeyPgUp: "pgup", + KeyPgDown: "pgdown", + KeyCtrlPgUp: "ctrl+pgup", + KeyCtrlPgDown: "ctrl+pgdown", + KeyDelete: "delete", + KeyInsert: "insert", + KeyCtrlUp: "ctrl+up", + KeyCtrlDown: "ctrl+down", + KeyCtrlRight: "ctrl+right", + KeyCtrlLeft: "ctrl+left", + KeyShiftUp: "shift+up", + KeyShiftDown: "shift+down", + KeyShiftRight: "shift+right", + KeyShiftLeft: "shift+left", + KeyCtrlShiftUp: "ctrl+shift+up", + KeyCtrlShiftDown: "ctrl+shift+down", + KeyCtrlShiftLeft: "ctrl+shift+left", + KeyCtrlShiftRight: "ctrl+shift+right", + KeyF1: "f1", + KeyF2: "f2", + KeyF3: "f3", + KeyF4: "f4", + KeyF5: "f5", + KeyF6: "f6", + KeyF7: "f7", + KeyF8: "f8", + KeyF9: "f9", + KeyF10: "f10", + KeyF11: "f11", + KeyF12: "f12", + KeyF13: "f13", + KeyF14: "f14", + KeyF15: "f15", + KeyF16: "f16", + KeyF17: "f17", + KeyF18: "f18", + KeyF19: "f19", + KeyF20: "f20", +} + +// Sequence mappings. +var sequences = map[string]Key{ + // Arrow keys + "\x1b[A": {Type: KeyUp}, + "\x1b[B": {Type: KeyDown}, + "\x1b[C": {Type: KeyRight}, + "\x1b[D": {Type: KeyLeft}, + "\x1b[1;2A": {Type: KeyShiftUp}, + "\x1b[1;2B": {Type: KeyShiftDown}, + "\x1b[1;2C": {Type: KeyShiftRight}, + "\x1b[1;2D": {Type: KeyShiftLeft}, + "\x1b[OA": {Type: KeyShiftUp}, // DECCKM + "\x1b[OB": {Type: KeyShiftDown}, // DECCKM + "\x1b[OC": {Type: KeyShiftRight}, // DECCKM + "\x1b[OD": {Type: KeyShiftLeft}, // DECCKM + "\x1b[a": {Type: KeyShiftUp}, // urxvt + "\x1b[b": {Type: KeyShiftDown}, // urxvt + "\x1b[c": {Type: KeyShiftRight}, // urxvt + "\x1b[d": {Type: KeyShiftLeft}, // urxvt + "\x1b[1;3A": {Type: KeyUp, Alt: true}, + "\x1b[1;3B": {Type: KeyDown, Alt: true}, + "\x1b[1;3C": {Type: KeyRight, Alt: true}, + "\x1b[1;3D": {Type: KeyLeft, Alt: true}, + + "\x1b[1;4A": {Type: KeyShiftUp, Alt: true}, + "\x1b[1;4B": {Type: KeyShiftDown, Alt: true}, + "\x1b[1;4C": {Type: KeyShiftRight, Alt: true}, + "\x1b[1;4D": {Type: KeyShiftLeft, Alt: true}, + + "\x1b[1;5A": {Type: KeyCtrlUp}, + "\x1b[1;5B": {Type: KeyCtrlDown}, + "\x1b[1;5C": {Type: KeyCtrlRight}, + "\x1b[1;5D": {Type: KeyCtrlLeft}, + "\x1b[Oa": {Type: KeyCtrlUp, Alt: true}, // urxvt + "\x1b[Ob": {Type: KeyCtrlDown, Alt: true}, // urxvt + "\x1b[Oc": {Type: KeyCtrlRight, Alt: true}, // urxvt + "\x1b[Od": {Type: KeyCtrlLeft, Alt: true}, // urxvt + "\x1b[1;6A": {Type: KeyCtrlShiftUp}, + "\x1b[1;6B": {Type: KeyCtrlShiftDown}, + "\x1b[1;6C": {Type: KeyCtrlShiftRight}, + "\x1b[1;6D": {Type: KeyCtrlShiftLeft}, + "\x1b[1;7A": {Type: KeyCtrlUp, Alt: true}, + "\x1b[1;7B": {Type: KeyCtrlDown, Alt: true}, + "\x1b[1;7C": {Type: KeyCtrlRight, Alt: true}, + "\x1b[1;7D": {Type: KeyCtrlLeft, Alt: true}, + "\x1b[1;8A": {Type: KeyCtrlShiftUp, Alt: true}, + "\x1b[1;8B": {Type: KeyCtrlShiftDown, Alt: true}, + "\x1b[1;8C": {Type: KeyCtrlShiftRight, Alt: true}, + "\x1b[1;8D": {Type: KeyCtrlShiftLeft, Alt: true}, + + // Miscellaneous keys + "\x1b[Z": {Type: KeyShiftTab}, + + "\x1b[2~": {Type: KeyInsert}, + "\x1b[3;2~": {Type: KeyInsert, Alt: true}, + + "\x1b[3~": {Type: KeyDelete}, + "\x1b[3;3~": {Type: KeyDelete, Alt: true}, + + "\x1b[5~": {Type: KeyPgUp}, + "\x1b[5;3~": {Type: KeyPgUp, Alt: true}, + "\x1b[5;5~": {Type: KeyCtrlPgUp}, + "\x1b[5^": {Type: KeyCtrlPgUp}, // urxvt + "\x1b[5;7~": {Type: KeyCtrlPgUp, Alt: true}, + + "\x1b[6~": {Type: KeyPgDown}, + "\x1b[6;3~": {Type: KeyPgDown, Alt: true}, + "\x1b[6;5~": {Type: KeyCtrlPgDown}, + "\x1b[6^": {Type: KeyCtrlPgDown}, // urxvt + "\x1b[6;7~": {Type: KeyCtrlPgDown, Alt: true}, + + "\x1b[1~": {Type: KeyHome}, + "\x1b[H": {Type: KeyHome}, // xterm, lxterm + "\x1b[1;3H": {Type: KeyHome, Alt: true}, // xterm, lxterm + "\x1b[1;5H": {Type: KeyCtrlHome}, // xterm, lxterm + "\x1b[1;7H": {Type: KeyCtrlHome, Alt: true}, // xterm, lxterm + "\x1b[1;2H": {Type: KeyShiftHome}, // xterm, lxterm + "\x1b[1;4H": {Type: KeyShiftHome, Alt: true}, // xterm, lxterm + "\x1b[1;6H": {Type: KeyCtrlShiftHome}, // xterm, lxterm + "\x1b[1;8H": {Type: KeyCtrlShiftHome, Alt: true}, // xterm, lxterm + + "\x1b[4~": {Type: KeyEnd}, + "\x1b[F": {Type: KeyEnd}, // xterm, lxterm + "\x1b[1;3F": {Type: KeyEnd, Alt: true}, // xterm, lxterm + "\x1b[1;5F": {Type: KeyCtrlEnd}, // xterm, lxterm + "\x1b[1;7F": {Type: KeyCtrlEnd, Alt: true}, // xterm, lxterm + "\x1b[1;2F": {Type: KeyShiftEnd}, // xterm, lxterm + "\x1b[1;4F": {Type: KeyShiftEnd, Alt: true}, // xterm, lxterm + "\x1b[1;6F": {Type: KeyCtrlShiftEnd}, // xterm, lxterm + "\x1b[1;8F": {Type: KeyCtrlShiftEnd, Alt: true}, // xterm, lxterm + + "\x1b[7~": {Type: KeyHome}, // urxvt + "\x1b[7^": {Type: KeyCtrlHome}, // urxvt + "\x1b[7$": {Type: KeyShiftHome}, // urxvt + "\x1b[7@": {Type: KeyCtrlShiftHome}, // urxvt + + "\x1b[8~": {Type: KeyEnd}, // urxvt + "\x1b[8^": {Type: KeyCtrlEnd}, // urxvt + "\x1b[8$": {Type: KeyShiftEnd}, // urxvt + "\x1b[8@": {Type: KeyCtrlShiftEnd}, // urxvt + + // Function keys, Linux console + "\x1b[[A": {Type: KeyF1}, // linux console + "\x1b[[B": {Type: KeyF2}, // linux console + "\x1b[[C": {Type: KeyF3}, // linux console + "\x1b[[D": {Type: KeyF4}, // linux console + "\x1b[[E": {Type: KeyF5}, // linux console + + // Function keys, X11 + "\x1bOP": {Type: KeyF1}, // vt100, xterm + "\x1bOQ": {Type: KeyF2}, // vt100, xterm + "\x1bOR": {Type: KeyF3}, // vt100, xterm + "\x1bOS": {Type: KeyF4}, // vt100, xterm + + "\x1b[1;3P": {Type: KeyF1, Alt: true}, // vt100, xterm + "\x1b[1;3Q": {Type: KeyF2, Alt: true}, // vt100, xterm + "\x1b[1;3R": {Type: KeyF3, Alt: true}, // vt100, xterm + "\x1b[1;3S": {Type: KeyF4, Alt: true}, // vt100, xterm + + "\x1b[11~": {Type: KeyF1}, // urxvt + "\x1b[12~": {Type: KeyF2}, // urxvt + "\x1b[13~": {Type: KeyF3}, // urxvt + "\x1b[14~": {Type: KeyF4}, // urxvt + + "\x1b[15~": {Type: KeyF5}, // vt100, xterm, also urxvt + + "\x1b[15;3~": {Type: KeyF5, Alt: true}, // vt100, xterm, also urxvt + + "\x1b[17~": {Type: KeyF6}, // vt100, xterm, also urxvt + "\x1b[18~": {Type: KeyF7}, // vt100, xterm, also urxvt + "\x1b[19~": {Type: KeyF8}, // vt100, xterm, also urxvt + "\x1b[20~": {Type: KeyF9}, // vt100, xterm, also urxvt + "\x1b[21~": {Type: KeyF10}, // vt100, xterm, also urxvt + + "\x1b[17;3~": {Type: KeyF6, Alt: true}, // vt100, xterm + "\x1b[18;3~": {Type: KeyF7, Alt: true}, // vt100, xterm + "\x1b[19;3~": {Type: KeyF8, Alt: true}, // vt100, xterm + "\x1b[20;3~": {Type: KeyF9, Alt: true}, // vt100, xterm + "\x1b[21;3~": {Type: KeyF10, Alt: true}, // vt100, xterm + + "\x1b[23~": {Type: KeyF11}, // vt100, xterm, also urxvt + "\x1b[24~": {Type: KeyF12}, // vt100, xterm, also urxvt + + "\x1b[23;3~": {Type: KeyF11, Alt: true}, // vt100, xterm + "\x1b[24;3~": {Type: KeyF12, Alt: true}, // vt100, xterm + + "\x1b[1;2P": {Type: KeyF13}, + "\x1b[1;2Q": {Type: KeyF14}, + + "\x1b[25~": {Type: KeyF13}, // vt100, xterm, also urxvt + "\x1b[26~": {Type: KeyF14}, // vt100, xterm, also urxvt + + "\x1b[25;3~": {Type: KeyF13, Alt: true}, // vt100, xterm + "\x1b[26;3~": {Type: KeyF14, Alt: true}, // vt100, xterm + + "\x1b[1;2R": {Type: KeyF15}, + "\x1b[1;2S": {Type: KeyF16}, + + "\x1b[28~": {Type: KeyF15}, // vt100, xterm, also urxvt + "\x1b[29~": {Type: KeyF16}, // vt100, xterm, also urxvt + + "\x1b[28;3~": {Type: KeyF15, Alt: true}, // vt100, xterm + "\x1b[29;3~": {Type: KeyF16, Alt: true}, // vt100, xterm + + "\x1b[15;2~": {Type: KeyF17}, + "\x1b[17;2~": {Type: KeyF18}, + "\x1b[18;2~": {Type: KeyF19}, + "\x1b[19;2~": {Type: KeyF20}, + + "\x1b[31~": {Type: KeyF17}, + "\x1b[32~": {Type: KeyF18}, + "\x1b[33~": {Type: KeyF19}, + "\x1b[34~": {Type: KeyF20}, + + // Powershell sequences. + "\x1bOA": {Type: KeyUp, Alt: false}, + "\x1bOB": {Type: KeyDown, Alt: false}, + "\x1bOC": {Type: KeyRight, Alt: false}, + "\x1bOD": {Type: KeyLeft, Alt: false}, +} + +// unknownInputByteMsg is reported by the input reader when an invalid +// utf-8 byte is detected on the input. Currently, it is not handled +// further by bubbletea. However, having this event makes it possible +// to troubleshoot invalid inputs. +type unknownInputByteMsg byte + +func (u unknownInputByteMsg) String() string { + return fmt.Sprintf("?%#02x?", int(u)) +} + +// unknownCSISequenceMsg is reported by the input reader when an +// unrecognized CSI sequence is detected on the input. Currently, it +// is not handled further by bubbletea. However, having this event +// makes it possible to troubleshoot invalid inputs. +type unknownCSISequenceMsg []byte + +func (u unknownCSISequenceMsg) String() string { + return fmt.Sprintf("?CSI%+v?", []byte(u)[2:]) +} + +var spaceRunes = []rune{' '} + +// readAnsiInputs reads keypress and mouse inputs from a TTY and produces messages +// containing information about the key or mouse events accordingly. +func readAnsiInputs(ctx context.Context, msgs chan<- Msg, input io.Reader) error { + var buf [256]byte + + var leftOverFromPrevIteration []byte +loop: + for { + // Read and block. + numBytes, err := input.Read(buf[:]) + if err != nil { + return fmt.Errorf("error reading input: %w", err) + } + b := buf[:numBytes] + if leftOverFromPrevIteration != nil { + b = append(leftOverFromPrevIteration, b...) + } + + // If we had a short read (numBytes < len(buf)), we're sure that + // the end of this read is an event boundary, so there is no doubt + // if we are encountering the end of the buffer while parsing a message. + // However, if we've succeeded in filling up the buffer, there may + // be more data in the OS buffer ready to be read in, to complete + // the last message in the input. In that case, we will retry with + // the left over data in the next iteration. + canHaveMoreData := numBytes == len(buf) + + var i, w int + for i, w = 0, 0; i < len(b); i += w { + var msg Msg + w, msg = detectOneMsg(b[i:], canHaveMoreData) + if w == 0 { + // Expecting more bytes beyond the current buffer. Try waiting + // for more input. + leftOverFromPrevIteration = make([]byte, 0, len(b[i:])+len(buf)) + leftOverFromPrevIteration = append(leftOverFromPrevIteration, b[i:]...) + continue loop + } + + select { + case msgs <- msg: + case <-ctx.Done(): + err := ctx.Err() + if err != nil { + err = fmt.Errorf("found context error while reading input: %w", err) + } + return err + } + } + leftOverFromPrevIteration = nil + } +} + +var ( + unknownCSIRe = regexp.MustCompile(`^\x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]`) + mouseSGRRegex = regexp.MustCompile(`(\d+);(\d+);(\d+)([Mm])`) +) + +func detectOneMsg(b []byte, canHaveMoreData bool) (w int, msg Msg) { + // Detect mouse events. + // X10 mouse events have a length of 6 bytes + const mouseEventX10Len = 6 + if len(b) >= mouseEventX10Len && b[0] == '\x1b' && b[1] == '[' { + switch b[2] { + case 'M': + return mouseEventX10Len, MouseMsg(parseX10MouseEvent(b)) + case '<': + if matchIndices := mouseSGRRegex.FindSubmatchIndex(b[3:]); matchIndices != nil { + // SGR mouse events length is the length of the match plus the length of the escape sequence + mouseEventSGRLen := matchIndices[1] + 3 //nolint:mnd + return mouseEventSGRLen, MouseMsg(parseSGRMouseEvent(b)) + } + } + } + + // Detect focus events. + var foundRF bool + foundRF, w, msg = detectReportFocus(b) + if foundRF { + return w, msg + } + + // Detect bracketed paste. + var foundbp bool + foundbp, w, msg = detectBracketedPaste(b) + if foundbp { + return w, msg + } + + // Detect escape sequence and control characters other than NUL, + // possibly with an escape character in front to mark the Alt + // modifier. + var foundSeq bool + foundSeq, w, msg = detectSequence(b) + if foundSeq { + return w, msg + } + + // No non-NUL control character or escape sequence. + // If we are seeing at least an escape character, remember it for later below. + alt := false + i := 0 + if b[0] == '\x1b' { + alt = true + i++ + } + + // Are we seeing a standalone NUL? This is not handled by detectSequence(). + if i < len(b) && b[i] == 0 { + return i + 1, KeyMsg{Type: keyNUL, Alt: alt} + } + + // Find the longest sequence of runes that are not control + // characters from this point. + var runes []rune + for rw := 0; i < len(b); i += rw { + var r rune + r, rw = utf8.DecodeRune(b[i:]) + if r == utf8.RuneError || r <= rune(keyUS) || r == rune(keyDEL) || r == ' ' { + // Rune errors are handled below; control characters and spaces will + // be handled by detectSequence in the next call to detectOneMsg. + break + } + runes = append(runes, r) + if alt { + // We only support a single rune after an escape alt modifier. + i += rw + break + } + } + if i >= len(b) && canHaveMoreData { + // We have encountered the end of the input buffer. Alas, we can't + // be sure whether the data in the remainder of the buffer is + // complete (maybe there was a short read). Instead of sending anything + // dumb to the message channel, do a short read. The outer loop will + // handle this case by extending the buffer as necessary. + return 0, nil + } + + // If we found at least one rune, we report the bunch of them as + // a single KeyRunes or KeySpace event. + if len(runes) > 0 { + k := Key{Type: KeyRunes, Runes: runes, Alt: alt} + if len(runes) == 1 && runes[0] == ' ' { + k.Type = KeySpace + } + return i, KeyMsg(k) + } + + // We didn't find an escape sequence, nor a valid rune. Was this a + // lone escape character at the end of the input? + if alt && len(b) == 1 { + return 1, KeyMsg(Key{Type: KeyEscape}) + } + + // The character at the current position is neither an escape + // sequence, a valid rune start or a sole escape character. Report + // it as an invalid byte. + return 1, unknownInputByteMsg(b[0]) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_other.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_other.go new file mode 100644 index 0000000..b8c4608 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_other.go @@ -0,0 +1,13 @@ +//go:build !windows +// +build !windows + +package tea + +import ( + "context" + "io" +) + +func readInputs(ctx context.Context, msgs chan<- Msg, input io.Reader) error { + return readAnsiInputs(ctx, msgs, input) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_sequences.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_sequences.go new file mode 100644 index 0000000..dce9bf4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_sequences.go @@ -0,0 +1,130 @@ +package tea + +import ( + "bytes" + "sort" + "unicode/utf8" +) + +// extSequences is used by the map-based algorithm below. It contains +// the sequences plus their alternatives with an escape character +// prefixed, plus the control chars, plus the space. +// It does not contain the NUL character, which is handled specially +// by detectOneMsg. +var extSequences = func() map[string]Key { + s := map[string]Key{} + for seq, key := range sequences { + key := key + s[seq] = key + if !key.Alt { + key.Alt = true + s["\x1b"+seq] = key + } + } + for i := keyNUL + 1; i <= keyDEL; i++ { + if i == keyESC { + continue + } + s[string([]byte{byte(i)})] = Key{Type: i} + s[string([]byte{'\x1b', byte(i)})] = Key{Type: i, Alt: true} + if i == keyUS { + i = keyDEL - 1 + } + } + s[" "] = Key{Type: KeySpace, Runes: spaceRunes} + s["\x1b "] = Key{Type: KeySpace, Alt: true, Runes: spaceRunes} + s["\x1b\x1b"] = Key{Type: KeyEscape, Alt: true} + return s +}() + +// seqLengths is the sizes of valid sequences, starting with the +// largest size. +var seqLengths = func() []int { + sizes := map[int]struct{}{} + for seq := range extSequences { + sizes[len(seq)] = struct{}{} + } + lsizes := make([]int, 0, len(sizes)) + for sz := range sizes { + lsizes = append(lsizes, sz) + } + sort.Slice(lsizes, func(i, j int) bool { return lsizes[i] > lsizes[j] }) + return lsizes +}() + +// detectSequence uses a longest prefix match over the input +// sequence and a hash map. +func detectSequence(input []byte) (hasSeq bool, width int, msg Msg) { + seqs := extSequences + for _, sz := range seqLengths { + if sz > len(input) { + continue + } + prefix := input[:sz] + key, ok := seqs[string(prefix)] + if ok { + return true, sz, KeyMsg(key) + } + } + // Is this an unknown CSI sequence? + if loc := unknownCSIRe.FindIndex(input); loc != nil { + return true, loc[1], unknownCSISequenceMsg(input[:loc[1]]) + } + + return false, 0, nil +} + +// detectBracketedPaste detects an input pasted while bracketed +// paste mode was enabled. +// +// Note: this function is a no-op if bracketed paste was not enabled +// on the terminal, since in that case we'd never see this +// particular escape sequence. +func detectBracketedPaste(input []byte) (hasBp bool, width int, msg Msg) { + // Detect the start sequence. + const bpStart = "\x1b[200~" + if len(input) < len(bpStart) || string(input[:len(bpStart)]) != bpStart { + return false, 0, nil + } + + // Skip over the start sequence. + input = input[len(bpStart):] + + // If we saw the start sequence, then we must have an end sequence + // as well. Find it. + const bpEnd = "\x1b[201~" + idx := bytes.Index(input, []byte(bpEnd)) + inputLen := len(bpStart) + idx + len(bpEnd) + if idx == -1 { + // We have encountered the end of the input buffer without seeing + // the marker for the end of the bracketed paste. + // Tell the outer loop we have done a short read and we want more. + return true, 0, nil + } + + // The paste is everything in-between. + paste := input[:idx] + + // All there is in-between is runes, not to be interpreted further. + k := Key{Type: KeyRunes, Paste: true} + for len(paste) > 0 { + r, w := utf8.DecodeRune(paste) + if r != utf8.RuneError { + k.Runes = append(k.Runes, r) + } + paste = paste[w:] + } + + return true, inputLen, KeyMsg(k) +} + +// detectReportFocus detects a focus report sequence. +func detectReportFocus(input []byte) (hasRF bool, width int, msg Msg) { + switch { + case bytes.Equal(input, []byte("\x1b[I")): + return true, 3, FocusMsg{} //nolint:mnd + case bytes.Equal(input, []byte("\x1b[O")): + return true, 3, BlurMsg{} //nolint:mnd + } + return false, 0, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_windows.go new file mode 100644 index 0000000..648bd78 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/key_windows.go @@ -0,0 +1,441 @@ +//go:build windows +// +build windows + +package tea + +import ( + "context" + "fmt" + "io" + "time" + + "github.com/erikgeiser/coninput" + localereader "github.com/mattn/go-localereader" + "github.com/muesli/cancelreader" +) + +func readInputs(ctx context.Context, msgs chan<- Msg, input io.Reader) error { + if coninReader, ok := input.(*conInputReader); ok { + return readConInputs(ctx, msgs, coninReader) + } + + return readAnsiInputs(ctx, msgs, localereader.NewReader(input)) +} + +func readConInputs(ctx context.Context, msgsch chan<- Msg, con *conInputReader) error { + var ps coninput.ButtonState // keep track of previous mouse state + var ws coninput.WindowBufferSizeEventRecord // keep track of the last window size event + for { + events, err := peekAndReadConsInput(con) + if err != nil { + return err + } + for _, event := range events { + var msgs []Msg + switch e := event.Unwrap().(type) { + case coninput.KeyEventRecord: + if !e.KeyDown || e.VirtualKeyCode == coninput.VK_SHIFT { + continue + } + + for i := 0; i < int(e.RepeatCount); i++ { + eventKeyType := keyType(e) + var runes []rune + + // Add the character only if the key type is an actual character and not a control sequence. + // This mimics the behavior in readAnsiInputs where the character is also removed. + // We don't need to handle KeySpace here. See the comment in keyType(). + if eventKeyType == KeyRunes { + runes = []rune{e.Char} + } + + msgs = append(msgs, KeyMsg{ + Type: eventKeyType, + Runes: runes, + Alt: e.ControlKeyState.Contains(coninput.LEFT_ALT_PRESSED | coninput.RIGHT_ALT_PRESSED), + }) + } + case coninput.WindowBufferSizeEventRecord: + if e != ws { + ws = e + msgs = append(msgs, WindowSizeMsg{ + Width: int(e.Size.X), + Height: int(e.Size.Y), + }) + } + case coninput.MouseEventRecord: + event := mouseEvent(ps, e) + if event.Type != MouseUnknown { + msgs = append(msgs, event) + } + ps = e.ButtonState + case coninput.FocusEventRecord, coninput.MenuEventRecord: + // ignore + default: // unknown event + continue + } + + // Send all messages to the channel + for _, msg := range msgs { + select { + case msgsch <- msg: + case <-ctx.Done(): + err := ctx.Err() + if err != nil { + return fmt.Errorf("coninput context error: %w", err) + } + return nil + } + } + } + } +} + +// Peek for new input in a tight loop and then read the input. +// windows.CancelIo* does not work reliably so peek first and only use the data if +// the console input is not cancelled. +func peekAndReadConsInput(con *conInputReader) ([]coninput.InputRecord, error) { + events, err := peekConsInput(con) + if err != nil { + return events, err + } + events, err = coninput.ReadNConsoleInputs(con.conin, intToUint32OrDie(len(events))) + if con.isCanceled() { + return events, cancelreader.ErrCanceled + } + if err != nil { + return events, fmt.Errorf("read coninput events: %w", err) + } + return events, nil +} + +// Convert i to unit32 or panic if it cannot be converted. Check satisfies lint G115. +func intToUint32OrDie(i int) uint32 { + if i < 0 { + panic("cannot convert numEvents " + fmt.Sprint(i) + " to uint32") + } + return uint32(i) //nolint:gosec +} + +// Keeps peeking until there is data or the input is cancelled. +func peekConsInput(con *conInputReader) ([]coninput.InputRecord, error) { + for { + events, err := coninput.PeekNConsoleInputs(con.conin, 16) + if con.isCanceled() { + return events, cancelreader.ErrCanceled + } + if err != nil { + return events, fmt.Errorf("peek coninput events: %w", err) + } + if len(events) > 0 { + return events, nil + } + // Sleep for a bit to avoid busy waiting. + time.Sleep(16 * time.Millisecond) + } +} + +func mouseEventButton(p, s coninput.ButtonState) (button MouseButton, action MouseAction) { + btn := p ^ s + action = MouseActionPress + if btn&s == 0 { + action = MouseActionRelease + } + + if btn == 0 { + switch { + case s&coninput.FROM_LEFT_1ST_BUTTON_PRESSED > 0: + button = MouseButtonLeft + case s&coninput.FROM_LEFT_2ND_BUTTON_PRESSED > 0: + button = MouseButtonMiddle + case s&coninput.RIGHTMOST_BUTTON_PRESSED > 0: + button = MouseButtonRight + case s&coninput.FROM_LEFT_3RD_BUTTON_PRESSED > 0: + button = MouseButtonBackward + case s&coninput.FROM_LEFT_4TH_BUTTON_PRESSED > 0: + button = MouseButtonForward + } + return button, action + } + + switch btn { + case coninput.FROM_LEFT_1ST_BUTTON_PRESSED: // left button + button = MouseButtonLeft + case coninput.RIGHTMOST_BUTTON_PRESSED: // right button + button = MouseButtonRight + case coninput.FROM_LEFT_2ND_BUTTON_PRESSED: // middle button + button = MouseButtonMiddle + case coninput.FROM_LEFT_3RD_BUTTON_PRESSED: // unknown (possibly mouse backward) + button = MouseButtonBackward + case coninput.FROM_LEFT_4TH_BUTTON_PRESSED: // unknown (possibly mouse forward) + button = MouseButtonForward + } + + return button, action +} + +func mouseEvent(p coninput.ButtonState, e coninput.MouseEventRecord) MouseMsg { + ev := MouseMsg{ + X: int(e.MousePositon.X), + Y: int(e.MousePositon.Y), + Alt: e.ControlKeyState.Contains(coninput.LEFT_ALT_PRESSED | coninput.RIGHT_ALT_PRESSED), + Ctrl: e.ControlKeyState.Contains(coninput.LEFT_CTRL_PRESSED | coninput.RIGHT_CTRL_PRESSED), + Shift: e.ControlKeyState.Contains(coninput.SHIFT_PRESSED), + } + switch e.EventFlags { + case coninput.CLICK, coninput.DOUBLE_CLICK: + ev.Button, ev.Action = mouseEventButton(p, e.ButtonState) + if ev.Action == MouseActionRelease { + ev.Type = MouseRelease + } + switch ev.Button { //nolint:exhaustive + case MouseButtonLeft: + ev.Type = MouseLeft + case MouseButtonMiddle: + ev.Type = MouseMiddle + case MouseButtonRight: + ev.Type = MouseRight + case MouseButtonBackward: + ev.Type = MouseBackward + case MouseButtonForward: + ev.Type = MouseForward + } + case coninput.MOUSE_WHEELED: + if e.WheelDirection > 0 { + ev.Button = MouseButtonWheelUp + ev.Type = MouseWheelUp + } else { + ev.Button = MouseButtonWheelDown + ev.Type = MouseWheelDown + } + case coninput.MOUSE_HWHEELED: + if e.WheelDirection > 0 { + ev.Button = MouseButtonWheelRight + ev.Type = MouseWheelRight + } else { + ev.Button = MouseButtonWheelLeft + ev.Type = MouseWheelLeft + } + case coninput.MOUSE_MOVED: + ev.Button, _ = mouseEventButton(p, e.ButtonState) + ev.Action = MouseActionMotion + ev.Type = MouseMotion + } + + return ev +} + +func keyType(e coninput.KeyEventRecord) KeyType { + code := e.VirtualKeyCode + + shiftPressed := e.ControlKeyState.Contains(coninput.SHIFT_PRESSED) + ctrlPressed := e.ControlKeyState.Contains(coninput.LEFT_CTRL_PRESSED | coninput.RIGHT_CTRL_PRESSED) + + switch code { //nolint:exhaustive + case coninput.VK_RETURN: + return KeyEnter + case coninput.VK_BACK: + return KeyBackspace + case coninput.VK_TAB: + if shiftPressed { + return KeyShiftTab + } + return KeyTab + case coninput.VK_SPACE: + return KeyRunes // this could be KeySpace but on unix space also produces KeyRunes + case coninput.VK_ESCAPE: + return KeyEscape + case coninput.VK_UP: + switch { + case shiftPressed && ctrlPressed: + return KeyCtrlShiftUp + case shiftPressed: + return KeyShiftUp + case ctrlPressed: + return KeyCtrlUp + default: + return KeyUp + } + case coninput.VK_DOWN: + switch { + case shiftPressed && ctrlPressed: + return KeyCtrlShiftDown + case shiftPressed: + return KeyShiftDown + case ctrlPressed: + return KeyCtrlDown + default: + return KeyDown + } + case coninput.VK_RIGHT: + switch { + case shiftPressed && ctrlPressed: + return KeyCtrlShiftRight + case shiftPressed: + return KeyShiftRight + case ctrlPressed: + return KeyCtrlRight + default: + return KeyRight + } + case coninput.VK_LEFT: + switch { + case shiftPressed && ctrlPressed: + return KeyCtrlShiftLeft + case shiftPressed: + return KeyShiftLeft + case ctrlPressed: + return KeyCtrlLeft + default: + return KeyLeft + } + case coninput.VK_HOME: + switch { + case shiftPressed && ctrlPressed: + return KeyCtrlShiftHome + case shiftPressed: + return KeyShiftHome + case ctrlPressed: + return KeyCtrlHome + default: + return KeyHome + } + case coninput.VK_END: + switch { + case shiftPressed && ctrlPressed: + return KeyCtrlShiftEnd + case shiftPressed: + return KeyShiftEnd + case ctrlPressed: + return KeyCtrlEnd + default: + return KeyEnd + } + case coninput.VK_PRIOR: + return KeyPgUp + case coninput.VK_NEXT: + return KeyPgDown + case coninput.VK_DELETE: + return KeyDelete + case coninput.VK_F1: + return KeyF1 + case coninput.VK_F2: + return KeyF2 + case coninput.VK_F3: + return KeyF3 + case coninput.VK_F4: + return KeyF4 + case coninput.VK_F5: + return KeyF5 + case coninput.VK_F6: + return KeyF6 + case coninput.VK_F7: + return KeyF7 + case coninput.VK_F8: + return KeyF8 + case coninput.VK_F9: + return KeyF9 + case coninput.VK_F10: + return KeyF10 + case coninput.VK_F11: + return KeyF11 + case coninput.VK_F12: + return KeyF12 + case coninput.VK_F13: + return KeyF13 + case coninput.VK_F14: + return KeyF14 + case coninput.VK_F15: + return KeyF15 + case coninput.VK_F16: + return KeyF16 + case coninput.VK_F17: + return KeyF17 + case coninput.VK_F18: + return KeyF18 + case coninput.VK_F19: + return KeyF19 + case coninput.VK_F20: + return KeyF20 + default: + switch { + case e.ControlKeyState.Contains(coninput.LEFT_CTRL_PRESSED) && e.ControlKeyState.Contains(coninput.RIGHT_ALT_PRESSED): + // AltGr is pressed, then it's a rune. + fallthrough + case !e.ControlKeyState.Contains(coninput.LEFT_CTRL_PRESSED) && !e.ControlKeyState.Contains(coninput.RIGHT_CTRL_PRESSED): + return KeyRunes + } + + switch e.Char { + case '@': + return KeyCtrlAt + case '\x01': + return KeyCtrlA + case '\x02': + return KeyCtrlB + case '\x03': + return KeyCtrlC + case '\x04': + return KeyCtrlD + case '\x05': + return KeyCtrlE + case '\x06': + return KeyCtrlF + case '\a': + return KeyCtrlG + case '\b': + return KeyCtrlH + case '\t': + return KeyCtrlI + case '\n': + return KeyCtrlJ + case '\v': + return KeyCtrlK + case '\f': + return KeyCtrlL + case '\r': + return KeyCtrlM + case '\x0e': + return KeyCtrlN + case '\x0f': + return KeyCtrlO + case '\x10': + return KeyCtrlP + case '\x11': + return KeyCtrlQ + case '\x12': + return KeyCtrlR + case '\x13': + return KeyCtrlS + case '\x14': + return KeyCtrlT + case '\x15': + return KeyCtrlU + case '\x16': + return KeyCtrlV + case '\x17': + return KeyCtrlW + case '\x18': + return KeyCtrlX + case '\x19': + return KeyCtrlY + case '\x1a': + return KeyCtrlZ + case '\x1b': + return KeyCtrlOpenBracket // KeyEscape + case '\x1c': + return KeyCtrlBackslash + case '\x1f': + return KeyCtrlUnderscore + } + + switch code { //nolint:exhaustive + case coninput.VK_OEM_4: + return KeyCtrlOpenBracket + case coninput.VK_OEM_6: + return KeyCtrlCloseBracket + } + + return KeyRunes + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/logging.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/logging.go new file mode 100644 index 0000000..349758c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/logging.go @@ -0,0 +1,53 @@ +package tea + +import ( + "fmt" + "io" + "log" + "os" + "unicode" +) + +// LogToFile sets up default logging to log to a file. This is helpful as we +// can't print to the terminal since our TUI is occupying it. If the file +// doesn't exist it will be created. +// +// Don't forget to close the file when you're done with it. +// +// f, err := LogToFile("debug.log", "debug") +// if err != nil { +// fmt.Println("fatal:", err) +// os.Exit(1) +// } +// defer f.Close() +func LogToFile(path string, prefix string) (*os.File, error) { + return LogToFileWith(path, prefix, log.Default()) +} + +// LogOptionsSetter is an interface implemented by stdlib's log and charm's log +// libraries. +type LogOptionsSetter interface { + SetOutput(io.Writer) + SetPrefix(string) +} + +// LogToFileWith does allows to call LogToFile with a custom LogOptionsSetter. +func LogToFileWith(path string, prefix string, log LogOptionsSetter) (*os.File, error) { + f, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o600) //nolint:mnd + if err != nil { + return nil, fmt.Errorf("error opening file for logging: %w", err) + } + log.SetOutput(f) + + // Add a space after the prefix if a prefix is being specified and it + // doesn't already have a trailing space. + if len(prefix) > 0 { + finalChar := prefix[len(prefix)-1] + if !unicode.IsSpace(rune(finalChar)) { + prefix += " " + } + } + log.SetPrefix(prefix) + + return f, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/mouse.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/mouse.go new file mode 100644 index 0000000..490f49a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/mouse.go @@ -0,0 +1,308 @@ +package tea + +import "strconv" + +// MouseMsg contains information about a mouse event and are sent to a programs +// update function when mouse activity occurs. Note that the mouse must first +// be enabled in order for the mouse events to be received. +type MouseMsg MouseEvent + +// String returns a string representation of a mouse event. +func (m MouseMsg) String() string { + return MouseEvent(m).String() +} + +// MouseEvent represents a mouse event, which could be a click, a scroll wheel +// movement, a cursor movement, or a combination. +type MouseEvent struct { + X int + Y int + Shift bool + Alt bool + Ctrl bool + Action MouseAction + Button MouseButton + + // Deprecated: Use MouseAction & MouseButton instead. + Type MouseEventType +} + +// IsWheel returns true if the mouse event is a wheel event. +func (m MouseEvent) IsWheel() bool { + return m.Button == MouseButtonWheelUp || m.Button == MouseButtonWheelDown || + m.Button == MouseButtonWheelLeft || m.Button == MouseButtonWheelRight +} + +// String returns a string representation of a mouse event. +func (m MouseEvent) String() (s string) { + if m.Ctrl { + s += "ctrl+" + } + if m.Alt { + s += "alt+" + } + if m.Shift { + s += "shift+" + } + + if m.Button == MouseButtonNone { //nolint:nestif + if m.Action == MouseActionMotion || m.Action == MouseActionRelease { + s += mouseActions[m.Action] + } else { + s += "unknown" + } + } else if m.IsWheel() { + s += mouseButtons[m.Button] + } else { + btn := mouseButtons[m.Button] + if btn != "" { + s += btn + } + act := mouseActions[m.Action] + if act != "" { + s += " " + act + } + } + + return s +} + +// MouseAction represents the action that occurred during a mouse event. +type MouseAction int + +// Mouse event actions. +const ( + MouseActionPress MouseAction = iota + MouseActionRelease + MouseActionMotion +) + +var mouseActions = map[MouseAction]string{ + MouseActionPress: "press", + MouseActionRelease: "release", + MouseActionMotion: "motion", +} + +// MouseButton represents the button that was pressed during a mouse event. +type MouseButton int + +// Mouse event buttons +// +// This is based on X11 mouse button codes. +// +// 1 = left button +// 2 = middle button (pressing the scroll wheel) +// 3 = right button +// 4 = turn scroll wheel up +// 5 = turn scroll wheel down +// 6 = push scroll wheel left +// 7 = push scroll wheel right +// 8 = 4th button (aka browser backward button) +// 9 = 5th button (aka browser forward button) +// 10 +// 11 +// +// Other buttons are not supported. +const ( + MouseButtonNone MouseButton = iota + MouseButtonLeft + MouseButtonMiddle + MouseButtonRight + MouseButtonWheelUp + MouseButtonWheelDown + MouseButtonWheelLeft + MouseButtonWheelRight + MouseButtonBackward + MouseButtonForward + MouseButton10 + MouseButton11 +) + +var mouseButtons = map[MouseButton]string{ + MouseButtonNone: "none", + MouseButtonLeft: "left", + MouseButtonMiddle: "middle", + MouseButtonRight: "right", + MouseButtonWheelUp: "wheel up", + MouseButtonWheelDown: "wheel down", + MouseButtonWheelLeft: "wheel left", + MouseButtonWheelRight: "wheel right", + MouseButtonBackward: "backward", + MouseButtonForward: "forward", + MouseButton10: "button 10", + MouseButton11: "button 11", +} + +// MouseEventType indicates the type of mouse event occurring. +// +// Deprecated: Use MouseAction & MouseButton instead. +type MouseEventType int + +// Mouse event types. +// +// Deprecated: Use MouseAction & MouseButton instead. +const ( + MouseUnknown MouseEventType = iota + MouseLeft + MouseRight + MouseMiddle + MouseRelease // mouse button release (X10 only) + MouseWheelUp + MouseWheelDown + MouseWheelLeft + MouseWheelRight + MouseBackward + MouseForward + MouseMotion +) + +// Parse SGR-encoded mouse events; SGR extended mouse events. SGR mouse events +// look like: +// +// ESC [ < Cb ; Cx ; Cy (M or m) +// +// where: +// +// Cb is the encoded button code +// Cx is the x-coordinate of the mouse +// Cy is the y-coordinate of the mouse +// M is for button press, m is for button release +// +// https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Extended-coordinates +func parseSGRMouseEvent(buf []byte) MouseEvent { + str := string(buf[3:]) + matches := mouseSGRRegex.FindStringSubmatch(str) + if len(matches) != 5 { //nolint:mnd + // Unreachable, we already checked the regex in `detectOneMsg`. + panic("invalid mouse event") + } + + b, _ := strconv.Atoi(matches[1]) + px := matches[2] + py := matches[3] + release := matches[4] == "m" + m := parseMouseButton(b, true) + + // Wheel buttons don't have release events + // Motion can be reported as a release event in some terminals (Windows Terminal) + if m.Action != MouseActionMotion && !m.IsWheel() && release { + m.Action = MouseActionRelease + m.Type = MouseRelease + } + + x, _ := strconv.Atoi(px) + y, _ := strconv.Atoi(py) + + // (1,1) is the upper left. We subtract 1 to normalize it to (0,0). + m.X = x - 1 + m.Y = y - 1 + + return m +} + +const x10MouseByteOffset = 32 + +// Parse X10-encoded mouse events; the simplest kind. The last release of X10 +// was December 1986, by the way. The original X10 mouse protocol limits the Cx +// and Cy coordinates to 223 (=255-032). +// +// X10 mouse events look like: +// +// ESC [M Cb Cx Cy +// +// See: http://www.xfree86.org/current/ctlseqs.html#Mouse%20Tracking +func parseX10MouseEvent(buf []byte) MouseEvent { + v := buf[3:6] + m := parseMouseButton(int(v[0]), false) + + // (1,1) is the upper left. We subtract 1 to normalize it to (0,0). + m.X = int(v[1]) - x10MouseByteOffset - 1 + m.Y = int(v[2]) - x10MouseByteOffset - 1 + + return m +} + +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Extended-coordinates +func parseMouseButton(b int, isSGR bool) MouseEvent { + var m MouseEvent + e := b + if !isSGR { + e -= x10MouseByteOffset + } + + const ( + bitShift = 0b0000_0100 + bitAlt = 0b0000_1000 + bitCtrl = 0b0001_0000 + bitMotion = 0b0010_0000 + bitWheel = 0b0100_0000 + bitAdd = 0b1000_0000 // additional buttons 8-11 + + bitsMask = 0b0000_0011 + ) + + if e&bitAdd != 0 { + m.Button = MouseButtonBackward + MouseButton(e&bitsMask) + } else if e&bitWheel != 0 { + m.Button = MouseButtonWheelUp + MouseButton(e&bitsMask) + } else { + m.Button = MouseButtonLeft + MouseButton(e&bitsMask) + // X10 reports a button release as 0b0000_0011 (3) + if e&bitsMask == bitsMask { + m.Action = MouseActionRelease + m.Button = MouseButtonNone + } + } + + // Motion bit doesn't get reported for wheel events. + if e&bitMotion != 0 && !m.IsWheel() { + m.Action = MouseActionMotion + } + + // Modifiers + m.Alt = e&bitAlt != 0 + m.Ctrl = e&bitCtrl != 0 + m.Shift = e&bitShift != 0 + + // backward compatibility + switch { + case m.Button == MouseButtonLeft && m.Action == MouseActionPress: + m.Type = MouseLeft + case m.Button == MouseButtonMiddle && m.Action == MouseActionPress: + m.Type = MouseMiddle + case m.Button == MouseButtonRight && m.Action == MouseActionPress: + m.Type = MouseRight + case m.Button == MouseButtonNone && m.Action == MouseActionRelease: + m.Type = MouseRelease + case m.Button == MouseButtonWheelUp && m.Action == MouseActionPress: + m.Type = MouseWheelUp + case m.Button == MouseButtonWheelDown && m.Action == MouseActionPress: + m.Type = MouseWheelDown + case m.Button == MouseButtonWheelLeft && m.Action == MouseActionPress: + m.Type = MouseWheelLeft + case m.Button == MouseButtonWheelRight && m.Action == MouseActionPress: + m.Type = MouseWheelRight + case m.Button == MouseButtonBackward && m.Action == MouseActionPress: + m.Type = MouseBackward + case m.Button == MouseButtonForward && m.Action == MouseActionPress: + m.Type = MouseForward + case m.Action == MouseActionMotion: + m.Type = MouseMotion + switch m.Button { //nolint:exhaustive + case MouseButtonLeft: + m.Type = MouseLeft + case MouseButtonMiddle: + m.Type = MouseMiddle + case MouseButtonRight: + m.Type = MouseRight + case MouseButtonBackward: + m.Type = MouseBackward + case MouseButtonForward: + m.Type = MouseForward + } + default: + m.Type = MouseUnknown + } + + return m +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/nil_renderer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/nil_renderer.go new file mode 100644 index 0000000..1bc909b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/nil_renderer.go @@ -0,0 +1,29 @@ +package tea + +type nilRenderer struct{} + +func (n nilRenderer) start() {} +func (n nilRenderer) stop() {} +func (n nilRenderer) kill() {} +func (n nilRenderer) write(_ string) {} +func (n nilRenderer) repaint() {} +func (n nilRenderer) clearScreen() {} +func (n nilRenderer) altScreen() bool { return false } +func (n nilRenderer) enterAltScreen() {} +func (n nilRenderer) exitAltScreen() {} +func (n nilRenderer) showCursor() {} +func (n nilRenderer) hideCursor() {} +func (n nilRenderer) enableMouseCellMotion() {} +func (n nilRenderer) disableMouseCellMotion() {} +func (n nilRenderer) enableMouseAllMotion() {} +func (n nilRenderer) disableMouseAllMotion() {} +func (n nilRenderer) enableBracketedPaste() {} +func (n nilRenderer) disableBracketedPaste() {} +func (n nilRenderer) enableMouseSGRMode() {} +func (n nilRenderer) disableMouseSGRMode() {} +func (n nilRenderer) bracketedPasteActive() bool { return false } +func (n nilRenderer) setWindowTitle(_ string) {} +func (n nilRenderer) reportFocus() bool { return false } +func (n nilRenderer) enableReportFocus() {} +func (n nilRenderer) disableReportFocus() {} +func (n nilRenderer) resetLinesRendered() {} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/options.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/options.go new file mode 100644 index 0000000..49cf378 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/options.go @@ -0,0 +1,252 @@ +package tea + +import ( + "context" + "io" + "sync/atomic" +) + +// ProgramOption is used to set options when initializing a Program. Program can +// accept a variable number of options. +// +// Example usage: +// +// p := NewProgram(model, WithInput(someInput), WithOutput(someOutput)) +type ProgramOption func(*Program) + +// WithContext lets you specify a context in which to run the Program. This is +// useful if you want to cancel the execution from outside. When a Program gets +// cancelled it will exit with an error ErrProgramKilled. +func WithContext(ctx context.Context) ProgramOption { + return func(p *Program) { + p.externalCtx = ctx + } +} + +// WithOutput sets the output which, by default, is stdout. In most cases you +// won't need to use this. +func WithOutput(output io.Writer) ProgramOption { + return func(p *Program) { + p.output = output + } +} + +// WithInput sets the input which, by default, is stdin. In most cases you +// won't need to use this. To disable input entirely pass nil. +// +// p := NewProgram(model, WithInput(nil)) +func WithInput(input io.Reader) ProgramOption { + return func(p *Program) { + p.input = input + p.inputType = customInput + } +} + +// WithInputTTY opens a new TTY for input (or console input device on Windows). +func WithInputTTY() ProgramOption { + return func(p *Program) { + p.inputType = ttyInput + } +} + +// WithEnvironment sets the environment variables that the program will use. +// This useful when the program is running in a remote session (e.g. SSH) and +// you want to pass the environment variables from the remote session to the +// program. +// +// Example: +// +// var sess ssh.Session // ssh.Session is a type from the github.com/charmbracelet/ssh package +// pty, _, _ := sess.Pty() +// environ := append(sess.Environ(), "TERM="+pty.Term) +// p := tea.NewProgram(model, tea.WithEnvironment(environ) +func WithEnvironment(env []string) ProgramOption { + return func(p *Program) { + p.environ = env + } +} + +// WithoutSignalHandler disables the signal handler that Bubble Tea sets up for +// Programs. This is useful if you want to handle signals yourself. +func WithoutSignalHandler() ProgramOption { + return func(p *Program) { + p.startupOptions |= withoutSignalHandler + } +} + +// WithoutCatchPanics disables the panic catching that Bubble Tea does by +// default. If panic catching is disabled the terminal will be in a fairly +// unusable state after a panic because Bubble Tea will not perform its usual +// cleanup on exit. +func WithoutCatchPanics() ProgramOption { + return func(p *Program) { + p.startupOptions |= withoutCatchPanics + } +} + +// WithoutSignals will ignore OS signals. +// This is mainly useful for testing. +func WithoutSignals() ProgramOption { + return func(p *Program) { + atomic.StoreUint32(&p.ignoreSignals, 1) + } +} + +// WithAltScreen starts the program with the alternate screen buffer enabled +// (i.e. the program starts in full window mode). Note that the altscreen will +// be automatically exited when the program quits. +// +// Example: +// +// p := tea.NewProgram(Model{}, tea.WithAltScreen()) +// if _, err := p.Run(); err != nil { +// fmt.Println("Error running program:", err) +// os.Exit(1) +// } +// +// To enter the altscreen once the program has already started running use the +// EnterAltScreen command. +func WithAltScreen() ProgramOption { + return func(p *Program) { + p.startupOptions |= withAltScreen + } +} + +// WithoutBracketedPaste starts the program with bracketed paste disabled. +func WithoutBracketedPaste() ProgramOption { + return func(p *Program) { + p.startupOptions |= withoutBracketedPaste + } +} + +// WithMouseCellMotion starts the program with the mouse enabled in "cell +// motion" mode. +// +// Cell motion mode enables mouse click, release, and wheel events. Mouse +// movement events are also captured if a mouse button is pressed (i.e., drag +// events). Cell motion mode is better supported than all motion mode. +// +// This will try to enable the mouse in extended mode (SGR), if that is not +// supported by the terminal it will fall back to normal mode (X10). +// +// To enable mouse cell motion once the program has already started running use +// the EnableMouseCellMotion command. To disable the mouse when the program is +// running use the DisableMouse command. +// +// The mouse will be automatically disabled when the program exits. +func WithMouseCellMotion() ProgramOption { + return func(p *Program) { + p.startupOptions |= withMouseCellMotion // set + p.startupOptions &^= withMouseAllMotion // clear + } +} + +// WithMouseAllMotion starts the program with the mouse enabled in "all motion" +// mode. +// +// EnableMouseAllMotion is a special command that enables mouse click, release, +// wheel, and motion events, which are delivered regardless of whether a mouse +// button is pressed, effectively enabling support for hover interactions. +// +// This will try to enable the mouse in extended mode (SGR), if that is not +// supported by the terminal it will fall back to normal mode (X10). +// +// Many modern terminals support this, but not all. If in doubt, use +// EnableMouseCellMotion instead. +// +// To enable the mouse once the program has already started running use the +// EnableMouseAllMotion command. To disable the mouse when the program is +// running use the DisableMouse command. +// +// The mouse will be automatically disabled when the program exits. +func WithMouseAllMotion() ProgramOption { + return func(p *Program) { + p.startupOptions |= withMouseAllMotion // set + p.startupOptions &^= withMouseCellMotion // clear + } +} + +// WithoutRenderer disables the renderer. When this is set output and log +// statements will be plainly sent to stdout (or another output if one is set) +// without any rendering and redrawing logic. In other words, printing and +// logging will behave the same way it would in a non-TUI commandline tool. +// This can be useful if you want to use the Bubble Tea framework for a non-TUI +// application, or to provide an additional non-TUI mode to your Bubble Tea +// programs. For example, your program could behave like a daemon if output is +// not a TTY. +func WithoutRenderer() ProgramOption { + return func(p *Program) { + p.renderer = &nilRenderer{} + } +} + +// WithANSICompressor removes redundant ANSI sequences to produce potentially +// smaller output, at the cost of some processing overhead. +// +// This feature is provisional, and may be changed or removed in a future version +// of this package. +// +// Deprecated: this incurs a noticeable performance hit. A future release will +// optimize ANSI automatically without the performance penalty. +func WithANSICompressor() ProgramOption { + return func(p *Program) { + p.startupOptions |= withANSICompressor + } +} + +// WithFilter supplies an event filter that will be invoked before Bubble Tea +// processes a tea.Msg. The event filter can return any tea.Msg which will then +// get handled by Bubble Tea instead of the original event. If the event filter +// returns nil, the event will be ignored and Bubble Tea will not process it. +// +// As an example, this could be used to prevent a program from shutting down if +// there are unsaved changes. +// +// Example: +// +// func filter(m tea.Model, msg tea.Msg) tea.Msg { +// if _, ok := msg.(tea.QuitMsg); !ok { +// return msg +// } +// +// model := m.(myModel) +// if model.hasChanges { +// return nil +// } +// +// return msg +// } +// +// p := tea.NewProgram(Model{}, tea.WithFilter(filter)); +// +// if _,err := p.Run(); err != nil { +// fmt.Println("Error running program:", err) +// os.Exit(1) +// } +func WithFilter(filter func(Model, Msg) Msg) ProgramOption { + return func(p *Program) { + p.filter = filter + } +} + +// WithFPS sets a custom maximum FPS at which the renderer should run. If +// less than 1, the default value of 60 will be used. If over 120, the FPS +// will be capped at 120. +func WithFPS(fps int) ProgramOption { + return func(p *Program) { + p.fps = fps + } +} + +// WithReportFocus enables reporting when the terminal gains and loses +// focus. When this is enabled [FocusMsg] and [BlurMsg] messages will be sent +// to your Update method. +// +// Note that while most terminals and multiplexers support focus reporting, +// some do not. Also note that tmux needs to be configured to report focus +// events. +func WithReportFocus() ProgramOption { + return func(p *Program) { + p.startupOptions |= withReportFocus + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/renderer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/renderer.go new file mode 100644 index 0000000..5b6df66 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/renderer.go @@ -0,0 +1,88 @@ +package tea + +// renderer is the interface for Bubble Tea renderers. +type renderer interface { + // Start the renderer. + start() + + // Stop the renderer, but render the final frame in the buffer, if any. + stop() + + // Stop the renderer without doing any final rendering. + kill() + + // Write a frame to the renderer. The renderer can write this data to + // output at its discretion. + write(string) + + // Request a full re-render. Note that this will not trigger a render + // immediately. Rather, this method causes the next render to be a full + // repaint. Because of this, it's safe to call this method multiple times + // in succession. + repaint() + + // Clears the terminal. + clearScreen() + + // Whether or not the alternate screen buffer is enabled. + altScreen() bool + // Enable the alternate screen buffer. + enterAltScreen() + // Disable the alternate screen buffer. + exitAltScreen() + + // Show the cursor. + showCursor() + // Hide the cursor. + hideCursor() + + // enableMouseCellMotion enables mouse click, release, wheel and motion + // events if a mouse button is pressed (i.e., drag events). + enableMouseCellMotion() + + // disableMouseCellMotion disables Mouse Cell Motion tracking. + disableMouseCellMotion() + + // enableMouseAllMotion enables mouse click, release, wheel and motion + // events, regardless of whether a mouse button is pressed. Many modern + // terminals support this, but not all. + enableMouseAllMotion() + + // disableMouseAllMotion disables All Motion mouse tracking. + disableMouseAllMotion() + + // enableMouseSGRMode enables mouse extended mode (SGR). + enableMouseSGRMode() + + // disableMouseSGRMode disables mouse extended mode (SGR). + disableMouseSGRMode() + + // enableBracketedPaste enables bracketed paste, where characters + // inside the input are not interpreted when pasted as a whole. + enableBracketedPaste() + + // disableBracketedPaste disables bracketed paste. + disableBracketedPaste() + + // bracketedPasteActive reports whether bracketed paste mode is + // currently enabled. + bracketedPasteActive() bool + + // setWindowTitle sets the terminal window title. + setWindowTitle(string) + + // reportFocus returns whether reporting focus events is enabled. + reportFocus() bool + + // enableReportFocus reports focus events to the program. + enableReportFocus() + + // disableReportFocus stops reporting focus events to the program. + disableReportFocus() + + // resetLinesRendered ensures exec output remains on screen on exit + resetLinesRendered() +} + +// repaintMsg forces a full repaint. +type repaintMsg struct{} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/screen.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/screen.go new file mode 100644 index 0000000..02e1bfb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/screen.go @@ -0,0 +1,248 @@ +package tea + +// WindowSizeMsg is used to report the terminal size. It's sent to Update once +// initially and then on every terminal resize. Note that Windows does not +// have support for reporting when resizes occur as it does not support the +// SIGWINCH signal. +type WindowSizeMsg struct { + Width int + Height int +} + +// ClearScreen is a special command that tells the program to clear the screen +// before the next update. This can be used to move the cursor to the top left +// of the screen and clear visual clutter when the alt screen is not in use. +// +// Note that it should never be necessary to call ClearScreen() for regular +// redraws. +func ClearScreen() Msg { + return clearScreenMsg{} +} + +// clearScreenMsg is an internal message that signals to clear the screen. +// You can send a clearScreenMsg with ClearScreen. +type clearScreenMsg struct{} + +// EnterAltScreen is a special command that tells the Bubble Tea program to +// enter the alternate screen buffer. +// +// Because commands run asynchronously, this command should not be used in your +// model's Init function. To initialize your program with the altscreen enabled +// use the WithAltScreen ProgramOption instead. +func EnterAltScreen() Msg { + return enterAltScreenMsg{} +} + +// enterAltScreenMsg in an internal message signals that the program should +// enter alternate screen buffer. You can send a enterAltScreenMsg with +// EnterAltScreen. +type enterAltScreenMsg struct{} + +// ExitAltScreen is a special command that tells the Bubble Tea program to exit +// the alternate screen buffer. This command should be used to exit the +// alternate screen buffer while the program is running. +// +// Note that the alternate screen buffer will be automatically exited when the +// program quits. +func ExitAltScreen() Msg { + return exitAltScreenMsg{} +} + +// exitAltScreenMsg in an internal message signals that the program should exit +// alternate screen buffer. You can send a exitAltScreenMsg with ExitAltScreen. +type exitAltScreenMsg struct{} + +// EnableMouseCellMotion is a special command that enables mouse click, +// release, and wheel events. Mouse movement events are also captured if +// a mouse button is pressed (i.e., drag events). +// +// Because commands run asynchronously, this command should not be used in your +// model's Init function. Use the WithMouseCellMotion ProgramOption instead. +func EnableMouseCellMotion() Msg { + return enableMouseCellMotionMsg{} +} + +// enableMouseCellMotionMsg is a special command that signals to start +// listening for "cell motion" type mouse events (ESC[?1002l). To send an +// enableMouseCellMotionMsg, use the EnableMouseCellMotion command. +type enableMouseCellMotionMsg struct{} + +// EnableMouseAllMotion is a special command that enables mouse click, release, +// wheel, and motion events, which are delivered regardless of whether a mouse +// button is pressed, effectively enabling support for hover interactions. +// +// Many modern terminals support this, but not all. If in doubt, use +// EnableMouseCellMotion instead. +// +// Because commands run asynchronously, this command should not be used in your +// model's Init function. Use the WithMouseAllMotion ProgramOption instead. +func EnableMouseAllMotion() Msg { + return enableMouseAllMotionMsg{} +} + +// enableMouseAllMotionMsg is a special command that signals to start listening +// for "all motion" type mouse events (ESC[?1003l). To send an +// enableMouseAllMotionMsg, use the EnableMouseAllMotion command. +type enableMouseAllMotionMsg struct{} + +// DisableMouse is a special command that stops listening for mouse events. +func DisableMouse() Msg { + return disableMouseMsg{} +} + +// disableMouseMsg is an internal message that signals to stop listening +// for mouse events. To send a disableMouseMsg, use the DisableMouse command. +type disableMouseMsg struct{} + +// HideCursor is a special command for manually instructing Bubble Tea to hide +// the cursor. In some rare cases, certain operations will cause the terminal +// to show the cursor, which is normally hidden for the duration of a Bubble +// Tea program's lifetime. You will most likely not need to use this command. +func HideCursor() Msg { + return hideCursorMsg{} +} + +// hideCursorMsg is an internal command used to hide the cursor. You can send +// this message with HideCursor. +type hideCursorMsg struct{} + +// ShowCursor is a special command for manually instructing Bubble Tea to show +// the cursor. +func ShowCursor() Msg { + return showCursorMsg{} +} + +// showCursorMsg is an internal command used to show the cursor. You can send +// this message with ShowCursor. +type showCursorMsg struct{} + +// EnableBracketedPaste is a special command that tells the Bubble Tea program +// to accept bracketed paste input. +// +// Note that bracketed paste will be automatically disabled when the +// program quits. +func EnableBracketedPaste() Msg { + return enableBracketedPasteMsg{} +} + +// enableBracketedPasteMsg in an internal message signals that +// bracketed paste should be enabled. You can send an +// enableBracketedPasteMsg with EnableBracketedPaste. +type enableBracketedPasteMsg struct{} + +// DisableBracketedPaste is a special command that tells the Bubble Tea program +// to stop processing bracketed paste input. +// +// Note that bracketed paste will be automatically disabled when the +// program quits. +func DisableBracketedPaste() Msg { + return disableBracketedPasteMsg{} +} + +// disableBracketedPasteMsg in an internal message signals that +// bracketed paste should be disabled. You can send an +// disableBracketedPasteMsg with DisableBracketedPaste. +type disableBracketedPasteMsg struct{} + +// enableReportFocusMsg is an internal message that signals to enable focus +// reporting. You can send an enableReportFocusMsg with EnableReportFocus. +type enableReportFocusMsg struct{} + +// EnableReportFocus is a special command that tells the Bubble Tea program to +// report focus events to the program. +func EnableReportFocus() Msg { + return enableReportFocusMsg{} +} + +// disableReportFocusMsg is an internal message that signals to disable focus +// reporting. You can send an disableReportFocusMsg with DisableReportFocus. +type disableReportFocusMsg struct{} + +// DisableReportFocus is a special command that tells the Bubble Tea program to +// stop reporting focus events to the program. +func DisableReportFocus() Msg { + return disableReportFocusMsg{} +} + +// EnterAltScreen enters the alternate screen buffer, which consumes the entire +// terminal window. ExitAltScreen will return the terminal to its former state. +// +// Deprecated: Use the WithAltScreen ProgramOption instead. +func (p *Program) EnterAltScreen() { + if p.renderer != nil { + p.renderer.enterAltScreen() + } else { + p.startupOptions |= withAltScreen + } +} + +// ExitAltScreen exits the alternate screen buffer. +// +// Deprecated: The altscreen will exited automatically when the program exits. +func (p *Program) ExitAltScreen() { + if p.renderer != nil { + p.renderer.exitAltScreen() + } else { + p.startupOptions &^= withAltScreen + } +} + +// EnableMouseCellMotion enables mouse click, release, wheel and motion events +// if a mouse button is pressed (i.e., drag events). +// +// Deprecated: Use the WithMouseCellMotion ProgramOption instead. +func (p *Program) EnableMouseCellMotion() { + if p.renderer != nil { + p.renderer.enableMouseCellMotion() + } else { + p.startupOptions |= withMouseCellMotion + } +} + +// DisableMouseCellMotion disables Mouse Cell Motion tracking. This will be +// called automatically when exiting a Bubble Tea program. +// +// Deprecated: The mouse will automatically be disabled when the program exits. +func (p *Program) DisableMouseCellMotion() { + if p.renderer != nil { + p.renderer.disableMouseCellMotion() + } else { + p.startupOptions &^= withMouseCellMotion + } +} + +// EnableMouseAllMotion enables mouse click, release, wheel and motion events, +// regardless of whether a mouse button is pressed. Many modern terminals +// support this, but not all. +// +// Deprecated: Use the WithMouseAllMotion ProgramOption instead. +func (p *Program) EnableMouseAllMotion() { + if p.renderer != nil { + p.renderer.enableMouseAllMotion() + } else { + p.startupOptions |= withMouseAllMotion + } +} + +// DisableMouseAllMotion disables All Motion mouse tracking. This will be +// called automatically when exiting a Bubble Tea program. +// +// Deprecated: The mouse will automatically be disabled when the program exits. +func (p *Program) DisableMouseAllMotion() { + if p.renderer != nil { + p.renderer.disableMouseAllMotion() + } else { + p.startupOptions &^= withMouseAllMotion + } +} + +// SetWindowTitle sets the terminal window title. +// +// Deprecated: Use the SetWindowTitle command instead. +func (p *Program) SetWindowTitle(title string) { + if p.renderer != nil { + p.renderer.setWindowTitle(title) + } else { + p.startupTitle = title + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_unix.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_unix.go new file mode 100644 index 0000000..4095403 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_unix.go @@ -0,0 +1,33 @@ +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || aix || zos +// +build darwin dragonfly freebsd linux netbsd openbsd solaris aix zos + +package tea + +import ( + "os" + "os/signal" + "syscall" +) + +// listenForResize sends messages (or errors) when the terminal resizes. +// Argument output should be the file descriptor for the terminal; usually +// os.Stdout. +func (p *Program) listenForResize(done chan struct{}) { + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGWINCH) + + defer func() { + signal.Stop(sig) + close(done) + }() + + for { + select { + case <-p.ctx.Done(): + return + case <-sig: + } + + p.checkResize() + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_windows.go new file mode 100644 index 0000000..2fc6f8a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/signals_windows.go @@ -0,0 +1,10 @@ +//go:build windows +// +build windows + +package tea + +// listenForResize is not available on windows because windows does not +// implement syscall.SIGWINCH. +func (p *Program) listenForResize(done chan struct{}) { + close(done) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/standard_renderer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/standard_renderer.go new file mode 100644 index 0000000..969a58c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/standard_renderer.go @@ -0,0 +1,790 @@ +package tea + +import ( + "bytes" + "fmt" + "io" + "strings" + "sync" + "time" + + "github.com/charmbracelet/x/ansi" + "github.com/muesli/ansi/compressor" +) + +const ( + // defaultFramerate specifies the maximum interval at which we should + // update the view. + defaultFPS = 60 + maxFPS = 120 +) + +// standardRenderer is a framerate-based terminal renderer, updating the view +// at a given framerate to avoid overloading the terminal emulator. +// +// In cases where very high performance is needed the renderer can be told +// to exclude ranges of lines, allowing them to be written to directly. +type standardRenderer struct { + mtx *sync.Mutex + out io.Writer + + buf bytes.Buffer + queuedMessageLines []string + framerate time.Duration + ticker *time.Ticker + done chan struct{} + lastRender string + lastRenderedLines []string + linesRendered int + altLinesRendered int + useANSICompressor bool + once sync.Once + + // cursor visibility state + cursorHidden bool + + // essentially whether or not we're using the full size of the terminal + altScreenActive bool + + // whether or not we're currently using bracketed paste + bpActive bool + + // reportingFocus whether reporting focus events is enabled + reportingFocus bool + + // renderer dimensions; usually the size of the window + width int + height int + + // lines explicitly set not to render + ignoreLines map[int]struct{} +} + +// newRenderer creates a new renderer. Normally you'll want to initialize it +// with os.Stdout as the first argument. +func newRenderer(out io.Writer, useANSICompressor bool, fps int) renderer { + if fps < 1 { + fps = defaultFPS + } else if fps > maxFPS { + fps = maxFPS + } + r := &standardRenderer{ + out: out, + mtx: &sync.Mutex{}, + done: make(chan struct{}), + framerate: time.Second / time.Duration(fps), + useANSICompressor: useANSICompressor, + queuedMessageLines: []string{}, + } + if r.useANSICompressor { + r.out = &compressor.Writer{Forward: out} + } + return r +} + +// start starts the renderer. +func (r *standardRenderer) start() { + if r.ticker == nil { + r.ticker = time.NewTicker(r.framerate) + } else { + // If the ticker already exists, it has been stopped and we need to + // reset it. + r.ticker.Reset(r.framerate) + } + + // Since the renderer can be restarted after a stop, we need to reset + // the done channel and its corresponding sync.Once. + r.once = sync.Once{} + + go r.listen() +} + +// stop permanently halts the renderer, rendering the final frame. +func (r *standardRenderer) stop() { + // Stop the renderer before acquiring the mutex to avoid a deadlock. + r.once.Do(func() { + r.done <- struct{}{} + }) + + // flush locks the mutex + r.flush() + + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.EraseEntireLine) + // Move the cursor back to the beginning of the line + r.execute("\r") + + if r.useANSICompressor { + if w, ok := r.out.(io.WriteCloser); ok { + _ = w.Close() + } + } +} + +// execute writes a sequence to the terminal. +func (r *standardRenderer) execute(seq string) { + _, _ = io.WriteString(r.out, seq) +} + +// kill halts the renderer. The final frame will not be rendered. +func (r *standardRenderer) kill() { + // Stop the renderer before acquiring the mutex to avoid a deadlock. + r.once.Do(func() { + r.done <- struct{}{} + }) + + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.EraseEntireLine) + // Move the cursor back to the beginning of the line + r.execute("\r") +} + +// listen waits for ticks on the ticker, or a signal to stop the renderer. +func (r *standardRenderer) listen() { + for { + select { + case <-r.done: + r.ticker.Stop() + return + + case <-r.ticker.C: + r.flush() + } + } +} + +// flush renders the buffer. +func (r *standardRenderer) flush() { + r.mtx.Lock() + defer r.mtx.Unlock() + + if r.buf.Len() == 0 || r.buf.String() == r.lastRender { + // Nothing to do. + return + } + + // Output buffer. + buf := &bytes.Buffer{} + + // Moving to the beginning of the section, that we rendered. + if r.altScreenActive { + buf.WriteString(ansi.CursorHomePosition) + } else if r.linesRendered > 1 { + buf.WriteString(ansi.CursorUp(r.linesRendered - 1)) + } + + newLines := strings.Split(r.buf.String(), "\n") + + // If we know the output's height, we can use it to determine how many + // lines we can render. We drop lines from the top of the render buffer if + // necessary, as we can't navigate the cursor into the terminal's scrollback + // buffer. + if r.height > 0 && len(newLines) > r.height { + newLines = newLines[len(newLines)-r.height:] + } + + flushQueuedMessages := len(r.queuedMessageLines) > 0 && !r.altScreenActive + + if flushQueuedMessages { + // Dump the lines we've queued up for printing. + for _, line := range r.queuedMessageLines { + if ansi.StringWidth(line) < r.width { + // We only erase the rest of the line when the line is shorter than + // the width of the terminal. When the cursor reaches the end of + // the line, any escape sequences that follow will only affect the + // last cell of the line. + + // Removing previously rendered content at the end of line. + line = line + ansi.EraseLineRight + } + + _, _ = buf.WriteString(line) + _, _ = buf.WriteString("\r\n") + } + // Clear the queued message lines. + r.queuedMessageLines = []string{} + } + + // Paint new lines. + for i := 0; i < len(newLines); i++ { + canSkip := !flushQueuedMessages && // Queuing messages triggers repaint -> we don't have access to previous frame content. + len(r.lastRenderedLines) > i && r.lastRenderedLines[i] == newLines[i] // Previously rendered line is the same. + + if _, ignore := r.ignoreLines[i]; ignore || canSkip { + // Unless this is the last line, move the cursor down. + if i < len(newLines)-1 { + buf.WriteByte('\n') + } + continue + } + + if i == 0 && r.lastRender == "" { + // On first render, reset the cursor to the start of the line + // before writing anything. + buf.WriteByte('\r') + } + + line := newLines[i] + + // Truncate lines wider than the width of the window to avoid + // wrapping, which will mess up rendering. If we don't have the + // width of the window this will be ignored. + // + // Note that on Windows we only get the width of the window on + // program initialization, so after a resize this won't perform + // correctly (signal SIGWINCH is not supported on Windows). + if r.width > 0 { + line = ansi.Truncate(line, r.width, "") + } + + if ansi.StringWidth(line) < r.width { + // We only erase the rest of the line when the line is shorter than + // the width of the terminal. When the cursor reaches the end of + // the line, any escape sequences that follow will only affect the + // last cell of the line. + + // Removing previously rendered content at the end of line. + line = line + ansi.EraseLineRight + } + + _, _ = buf.WriteString(line) + + if i < len(newLines)-1 { + _, _ = buf.WriteString("\r\n") + } + } + + // Clearing left over content from last render. + if r.lastLinesRendered() > len(newLines) { + buf.WriteString(ansi.EraseScreenBelow) + } + + if r.altScreenActive { + r.altLinesRendered = len(newLines) + } else { + r.linesRendered = len(newLines) + } + + // Make sure the cursor is at the start of the last line to keep rendering + // behavior consistent. + if r.altScreenActive { + // This case fixes a bug in macOS terminal. In other terminals the + // other case seems to do the job regardless of whether or not we're + // using the full terminal window. + buf.WriteString(ansi.CursorPosition(0, len(newLines))) + } else { + buf.WriteByte('\r') + } + + _, _ = r.out.Write(buf.Bytes()) + r.lastRender = r.buf.String() + + // Save previously rendered lines for comparison in the next render. If we + // don't do this, we can't skip rendering lines that haven't changed. + // See https://github.com/charmbracelet/bubbletea/pull/1233 + r.lastRenderedLines = newLines + r.buf.Reset() +} + +// lastLinesRendered returns the number of lines rendered lastly. +func (r *standardRenderer) lastLinesRendered() int { + if r.altScreenActive { + return r.altLinesRendered + } + return r.linesRendered +} + +// write writes to the internal buffer. The buffer will be outputted via the +// ticker which calls flush(). +func (r *standardRenderer) write(s string) { + r.mtx.Lock() + defer r.mtx.Unlock() + r.buf.Reset() + + // If an empty string was passed we should clear existing output and + // rendering nothing. Rather than introduce additional state to manage + // this, we render a single space as a simple (albeit less correct) + // solution. + if s == "" { + s = " " + } + + _, _ = r.buf.WriteString(s) +} + +func (r *standardRenderer) repaint() { + r.lastRender = "" + r.lastRenderedLines = nil +} + +func (r *standardRenderer) clearScreen() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.EraseEntireScreen) + r.execute(ansi.CursorHomePosition) + + r.repaint() +} + +func (r *standardRenderer) altScreen() bool { + r.mtx.Lock() + defer r.mtx.Unlock() + + return r.altScreenActive +} + +func (r *standardRenderer) enterAltScreen() { + r.mtx.Lock() + defer r.mtx.Unlock() + + if r.altScreenActive { + return + } + + r.altScreenActive = true + r.execute(ansi.SetAltScreenSaveCursorMode) + + // Ensure that the terminal is cleared, even when it doesn't support + // alt screen (or alt screen support is disabled, like GNU screen by + // default). + // + // Note: we can't use r.clearScreen() here because the mutex is already + // locked. + r.execute(ansi.EraseEntireScreen) + r.execute(ansi.CursorHomePosition) + + // cmd.exe and other terminals keep separate cursor states for the AltScreen + // and the main buffer. We have to explicitly reset the cursor visibility + // whenever we enter AltScreen. + if r.cursorHidden { + r.execute(ansi.HideCursor) + } else { + r.execute(ansi.ShowCursor) + } + + // Entering the alt screen resets the lines rendered count. + r.altLinesRendered = 0 + + r.repaint() +} + +func (r *standardRenderer) exitAltScreen() { + r.mtx.Lock() + defer r.mtx.Unlock() + + if !r.altScreenActive { + return + } + + r.altScreenActive = false + r.execute(ansi.ResetAltScreenSaveCursorMode) + + // cmd.exe and other terminals keep separate cursor states for the AltScreen + // and the main buffer. We have to explicitly reset the cursor visibility + // whenever we exit AltScreen. + if r.cursorHidden { + r.execute(ansi.HideCursor) + } else { + r.execute(ansi.ShowCursor) + } + + r.repaint() +} + +func (r *standardRenderer) showCursor() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.cursorHidden = false + r.execute(ansi.ShowCursor) +} + +func (r *standardRenderer) hideCursor() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.cursorHidden = true + r.execute(ansi.HideCursor) +} + +func (r *standardRenderer) enableMouseCellMotion() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.SetButtonEventMouseMode) +} + +func (r *standardRenderer) disableMouseCellMotion() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.ResetButtonEventMouseMode) +} + +func (r *standardRenderer) enableMouseAllMotion() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.SetAnyEventMouseMode) +} + +func (r *standardRenderer) disableMouseAllMotion() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.ResetAnyEventMouseMode) +} + +func (r *standardRenderer) enableMouseSGRMode() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.SetSgrExtMouseMode) +} + +func (r *standardRenderer) disableMouseSGRMode() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.ResetSgrExtMouseMode) +} + +func (r *standardRenderer) enableBracketedPaste() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.SetBracketedPasteMode) + r.bpActive = true +} + +func (r *standardRenderer) disableBracketedPaste() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.ResetBracketedPasteMode) + r.bpActive = false +} + +func (r *standardRenderer) bracketedPasteActive() bool { + r.mtx.Lock() + defer r.mtx.Unlock() + + return r.bpActive +} + +func (r *standardRenderer) enableReportFocus() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.SetFocusEventMode) + r.reportingFocus = true +} + +func (r *standardRenderer) disableReportFocus() { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.execute(ansi.ResetFocusEventMode) + r.reportingFocus = false +} + +func (r *standardRenderer) reportFocus() bool { + r.mtx.Lock() + defer r.mtx.Unlock() + + return r.reportingFocus +} + +// setWindowTitle sets the terminal window title. +func (r *standardRenderer) setWindowTitle(title string) { + r.execute(ansi.SetWindowTitle(title)) +} + +// setIgnoredLines specifies lines not to be touched by the standard Bubble Tea +// renderer. +func (r *standardRenderer) setIgnoredLines(from int, to int) { + // Lock if we're going to be clearing some lines since we don't want + // anything jacking our cursor. + if r.lastLinesRendered() > 0 { + r.mtx.Lock() + defer r.mtx.Unlock() + } + + if r.ignoreLines == nil { + r.ignoreLines = make(map[int]struct{}) + } + for i := from; i < to; i++ { + r.ignoreLines[i] = struct{}{} + } + + // Erase ignored lines + lastLinesRendered := r.lastLinesRendered() + if lastLinesRendered > 0 { + buf := &bytes.Buffer{} + + for i := lastLinesRendered - 1; i >= 0; i-- { + if _, exists := r.ignoreLines[i]; exists { + buf.WriteString(ansi.EraseEntireLine) + } + buf.WriteString(ansi.CUU1) + } + buf.WriteString(ansi.CursorPosition(0, lastLinesRendered)) // put cursor back + _, _ = r.out.Write(buf.Bytes()) + } +} + +// clearIgnoredLines returns control of any ignored lines to the standard +// Bubble Tea renderer. That is, any lines previously set to be ignored can be +// rendered to again. +func (r *standardRenderer) clearIgnoredLines() { + r.ignoreLines = nil +} + +func (r *standardRenderer) resetLinesRendered() { + r.linesRendered = 0 +} + +// insertTop effectively scrolls up. It inserts lines at the top of a given +// area designated to be a scrollable region, pushing everything else down. +// This is roughly how ncurses does it. +// +// To call this function use command ScrollUp(). +// +// For this to work renderer.ignoreLines must be set to ignore the scrollable +// region since we are bypassing the normal Bubble Tea renderer here. +// +// Because this method relies on the terminal dimensions, it's only valid for +// full-window applications (generally those that use the alternate screen +// buffer). +// +// This method bypasses the normal rendering buffer and is philosophically +// different than the normal way we approach rendering in Bubble Tea. It's for +// use in high-performance rendering, such as a pager that could potentially +// be rendering very complicated ansi. In cases where the content is simpler +// standard Bubble Tea rendering should suffice. +// +// Deprecated: This option is deprecated and will be removed in a future +// version of this package. +func (r *standardRenderer) insertTop(lines []string, topBoundary, bottomBoundary int) { + r.mtx.Lock() + defer r.mtx.Unlock() + + buf := &bytes.Buffer{} + + buf.WriteString(ansi.SetTopBottomMargins(topBoundary, bottomBoundary)) + buf.WriteString(ansi.CursorPosition(0, topBoundary)) + buf.WriteString(ansi.InsertLine(len(lines))) + _, _ = buf.WriteString(strings.Join(lines, "\r\n")) + buf.WriteString(ansi.SetTopBottomMargins(0, r.height)) + + // Move cursor back to where the main rendering routine expects it to be + buf.WriteString(ansi.CursorPosition(0, r.lastLinesRendered())) + + _, _ = r.out.Write(buf.Bytes()) +} + +// insertBottom effectively scrolls down. It inserts lines at the bottom of +// a given area designated to be a scrollable region, pushing everything else +// up. This is roughly how ncurses does it. +// +// To call this function use the command ScrollDown(). +// +// See note in insertTop() for caveats, how this function only makes sense for +// full-window applications, and how it differs from the normal way we do +// rendering in Bubble Tea. +// +// Deprecated: This option is deprecated and will be removed in a future +// version of this package. +func (r *standardRenderer) insertBottom(lines []string, topBoundary, bottomBoundary int) { + r.mtx.Lock() + defer r.mtx.Unlock() + + buf := &bytes.Buffer{} + + buf.WriteString(ansi.SetTopBottomMargins(topBoundary, bottomBoundary)) + buf.WriteString(ansi.CursorPosition(0, bottomBoundary)) + _, _ = buf.WriteString("\r\n" + strings.Join(lines, "\r\n")) + buf.WriteString(ansi.SetTopBottomMargins(0, r.height)) + + // Move cursor back to where the main rendering routine expects it to be + buf.WriteString(ansi.CursorPosition(0, r.lastLinesRendered())) + + _, _ = r.out.Write(buf.Bytes()) +} + +// handleMessages handles internal messages for the renderer. +func (r *standardRenderer) handleMessages(msg Msg) { + switch msg := msg.(type) { + case repaintMsg: + // Force a repaint by clearing the render cache as we slide into a + // render. + r.mtx.Lock() + r.repaint() + r.mtx.Unlock() + + case WindowSizeMsg: + r.mtx.Lock() + r.width = msg.Width + r.height = msg.Height + r.repaint() + r.mtx.Unlock() + + case clearScrollAreaMsg: + r.clearIgnoredLines() + + // Force a repaint on the area where the scrollable stuff was in this + // update cycle + r.mtx.Lock() + r.repaint() + r.mtx.Unlock() + + case syncScrollAreaMsg: + // Re-render scrolling area + r.clearIgnoredLines() + r.setIgnoredLines(msg.topBoundary, msg.bottomBoundary) + r.insertTop(msg.lines, msg.topBoundary, msg.bottomBoundary) + + // Force non-scrolling stuff to repaint in this update cycle + r.mtx.Lock() + r.repaint() + r.mtx.Unlock() + + case scrollUpMsg: + r.insertTop(msg.lines, msg.topBoundary, msg.bottomBoundary) + + case scrollDownMsg: + r.insertBottom(msg.lines, msg.topBoundary, msg.bottomBoundary) + + case printLineMessage: + if !r.altScreenActive { + lines := strings.Split(msg.messageBody, "\n") + r.mtx.Lock() + r.queuedMessageLines = append(r.queuedMessageLines, lines...) + r.repaint() + r.mtx.Unlock() + } + } +} + +// HIGH-PERFORMANCE RENDERING STUFF + +type syncScrollAreaMsg struct { + lines []string + topBoundary int + bottomBoundary int +} + +// SyncScrollArea performs a paint of the entire region designated to be the +// scrollable area. This is required to initialize the scrollable region and +// should also be called on resize (WindowSizeMsg). +// +// For high-performance, scroll-based rendering only. +// +// Deprecated: This option will be removed in a future version of this package. +func SyncScrollArea(lines []string, topBoundary int, bottomBoundary int) Cmd { + return func() Msg { + return syncScrollAreaMsg{ + lines: lines, + topBoundary: topBoundary, + bottomBoundary: bottomBoundary, + } + } +} + +type clearScrollAreaMsg struct{} + +// ClearScrollArea deallocates the scrollable region and returns the control of +// those lines to the main rendering routine. +// +// For high-performance, scroll-based rendering only. +// +// Deprecated: This option will be removed in a future version of this package. +func ClearScrollArea() Msg { + return clearScrollAreaMsg{} +} + +type scrollUpMsg struct { + lines []string + topBoundary int + bottomBoundary int +} + +// ScrollUp adds lines to the top of the scrollable region, pushing existing +// lines below down. Lines that are pushed out the scrollable region disappear +// from view. +// +// For high-performance, scroll-based rendering only. +// +// Deprecated: This option will be removed in a future version of this package. +func ScrollUp(newLines []string, topBoundary, bottomBoundary int) Cmd { + return func() Msg { + return scrollUpMsg{ + lines: newLines, + topBoundary: topBoundary, + bottomBoundary: bottomBoundary, + } + } +} + +type scrollDownMsg struct { + lines []string + topBoundary int + bottomBoundary int +} + +// ScrollDown adds lines to the bottom of the scrollable region, pushing +// existing lines above up. Lines that are pushed out of the scrollable region +// disappear from view. +// +// For high-performance, scroll-based rendering only. +// +// Deprecated: This option will be removed in a future version of this package. +func ScrollDown(newLines []string, topBoundary, bottomBoundary int) Cmd { + return func() Msg { + return scrollDownMsg{ + lines: newLines, + topBoundary: topBoundary, + bottomBoundary: bottomBoundary, + } + } +} + +type printLineMessage struct { + messageBody string +} + +// Println prints above the Program. This output is unmanaged by the program and +// will persist across renders by the Program. +// +// Unlike fmt.Println (but similar to log.Println) the message will be print on +// its own line. +// +// If the altscreen is active no output will be printed. +func Println(args ...interface{}) Cmd { + return func() Msg { + return printLineMessage{ + messageBody: fmt.Sprint(args...), + } + } +} + +// Printf prints above the Program. It takes a format template followed by +// values similar to fmt.Printf. This output is unmanaged by the program and +// will persist across renders by the Program. +// +// Unlike fmt.Printf (but similar to log.Printf) the message will be print on +// its own line. +// +// If the altscreen is active no output will be printed. +func Printf(template string, args ...interface{}) Cmd { + return func() Msg { + return printLineMessage{ + messageBody: fmt.Sprintf(template, args...), + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea.go new file mode 100644 index 0000000..db84343 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea.go @@ -0,0 +1,941 @@ +// Package tea provides a framework for building rich terminal user interfaces +// based on the paradigms of The Elm Architecture. It's well-suited for simple +// and complex terminal applications, either inline, full-window, or a mix of +// both. It's been battle-tested in several large projects and is +// production-ready. +// +// A tutorial is available at https://github.com/charmbracelet/bubbletea/tree/master/tutorials +// +// Example programs can be found at https://github.com/charmbracelet/bubbletea/tree/master/examples +package tea + +import ( + "context" + "errors" + "fmt" + "io" + "os" + "os/signal" + "runtime" + "runtime/debug" + "sync" + "sync/atomic" + "syscall" + + "github.com/charmbracelet/x/term" + "github.com/muesli/cancelreader" +) + +// ErrProgramPanic is returned by [Program.Run] when the program recovers from a panic. +var ErrProgramPanic = errors.New("program experienced a panic") + +// ErrProgramKilled is returned by [Program.Run] when the program gets killed. +var ErrProgramKilled = errors.New("program was killed") + +// ErrInterrupted is returned by [Program.Run] when the program get a SIGINT +// signal, or when it receives a [InterruptMsg]. +var ErrInterrupted = errors.New("program was interrupted") + +// Msg contain data from the result of a IO operation. Msgs trigger the update +// function and, henceforth, the UI. +type Msg interface{} + +// Model contains the program's state as well as its core functions. +type Model interface { + // Init is the first function that will be called. It returns an optional + // initial command. To not perform an initial command return nil. + Init() Cmd + + // Update is called when a message is received. Use it to inspect messages + // and, in response, update the model and/or send a command. + Update(Msg) (Model, Cmd) + + // View renders the program's UI, which is just a string. The view is + // rendered after every Update. + View() string +} + +// Cmd is an IO operation that returns a message when it's complete. If it's +// nil it's considered a no-op. Use it for things like HTTP requests, timers, +// saving and loading from disk, and so on. +// +// Note that there's almost never a reason to use a command to send a message +// to another part of your program. That can almost always be done in the +// update function. +type Cmd func() Msg + +type inputType int + +const ( + defaultInput inputType = iota + ttyInput + customInput +) + +// String implements the stringer interface for [inputType]. It is intended to +// be used in testing. +func (i inputType) String() string { + return [...]string{ + "default input", + "tty input", + "custom input", + }[i] +} + +// Options to customize the program during its initialization. These are +// generally set with ProgramOptions. +// +// The options here are treated as bits. +type startupOptions int16 + +func (s startupOptions) has(option startupOptions) bool { + return s&option != 0 +} + +const ( + withAltScreen startupOptions = 1 << iota + withMouseCellMotion + withMouseAllMotion + withANSICompressor + withoutSignalHandler + // Catching panics is incredibly useful for restoring the terminal to a + // usable state after a panic occurs. When this is set, Bubble Tea will + // recover from panics, print the stack trace, and disable raw mode. This + // feature is on by default. + withoutCatchPanics + withoutBracketedPaste + withReportFocus +) + +// channelHandlers manages the series of channels returned by various processes. +// It allows us to wait for those processes to terminate before exiting the +// program. +type channelHandlers []chan struct{} + +// Adds a channel to the list of handlers. We wait for all handlers to terminate +// gracefully on shutdown. +func (h *channelHandlers) add(ch chan struct{}) { + *h = append(*h, ch) +} + +// shutdown waits for all handlers to terminate. +func (h channelHandlers) shutdown() { + var wg sync.WaitGroup + for _, ch := range h { + wg.Add(1) + go func(ch chan struct{}) { + <-ch + wg.Done() + }(ch) + } + wg.Wait() +} + +// Program is a terminal user interface. +type Program struct { + initialModel Model + + // handlers is a list of channels that need to be waited on before the + // program can exit. + handlers channelHandlers + + // Configuration options that will set as the program is initializing, + // treated as bits. These options can be set via various ProgramOptions. + startupOptions startupOptions + + // startupTitle is the title that will be set on the terminal when the + // program starts. + startupTitle string + + inputType inputType + + // externalCtx is a context that was passed in via WithContext, otherwise defaulting + // to ctx.Background() (in case it was not), the internal context is derived from it. + externalCtx context.Context + + // ctx is the programs's internal context for signalling internal teardown. + // It is built and derived from the externalCtx in NewProgram(). + ctx context.Context + cancel context.CancelFunc + + msgs chan Msg + errs chan error + finished chan struct{} + + // where to send output, this will usually be os.Stdout. + output io.Writer + // ttyOutput is null if output is not a TTY. + ttyOutput term.File + previousOutputState *term.State + renderer renderer + + // the environment variables for the program, defaults to os.Environ(). + environ []string + + // where to read inputs from, this will usually be os.Stdin. + input io.Reader + // ttyInput is null if input is not a TTY. + ttyInput term.File + previousTtyInputState *term.State + cancelReader cancelreader.CancelReader + readLoopDone chan struct{} + + // was the altscreen active before releasing the terminal? + altScreenWasActive bool + ignoreSignals uint32 + + bpWasActive bool // was the bracketed paste mode active before releasing the terminal? + reportFocus bool // was focus reporting active before releasing the terminal? + + filter func(Model, Msg) Msg + + // fps is the frames per second we should set on the renderer, if + // applicable, + fps int + + // mouseMode is true if the program should enable mouse mode on Windows. + mouseMode bool +} + +// Quit is a special command that tells the Bubble Tea program to exit. +func Quit() Msg { + return QuitMsg{} +} + +// QuitMsg signals that the program should quit. You can send a [QuitMsg] with +// [Quit]. +type QuitMsg struct{} + +// Suspend is a special command that tells the Bubble Tea program to suspend. +func Suspend() Msg { + return SuspendMsg{} +} + +// SuspendMsg signals the program should suspend. +// This usually happens when ctrl+z is pressed on common programs, but since +// bubbletea puts the terminal in raw mode, we need to handle it in a +// per-program basis. +// +// You can send this message with [Suspend()]. +type SuspendMsg struct{} + +// ResumeMsg can be listen to do something once a program is resumed back +// from a suspend state. +type ResumeMsg struct{} + +// InterruptMsg signals the program should suspend. +// This usually happens when ctrl+c is pressed on common programs, but since +// bubbletea puts the terminal in raw mode, we need to handle it in a +// per-program basis. +// +// You can send this message with [Interrupt()]. +type InterruptMsg struct{} + +// Interrupt is a special command that tells the Bubble Tea program to +// interrupt. +func Interrupt() Msg { + return InterruptMsg{} +} + +// NewProgram creates a new Program. +func NewProgram(model Model, opts ...ProgramOption) *Program { + p := &Program{ + initialModel: model, + msgs: make(chan Msg), + } + + // Apply all options to the program. + for _, opt := range opts { + opt(p) + } + + // A context can be provided with a ProgramOption, but if none was provided + // we'll use the default background context. + if p.externalCtx == nil { + p.externalCtx = context.Background() + } + // Initialize context and teardown channel. + p.ctx, p.cancel = context.WithCancel(p.externalCtx) + + // if no output was set, set it to stdout + if p.output == nil { + p.output = os.Stdout + } + + // if no environment was set, set it to os.Environ() + if p.environ == nil { + p.environ = os.Environ() + } + + return p +} + +func (p *Program) handleSignals() chan struct{} { + ch := make(chan struct{}) + + // Listen for SIGINT and SIGTERM. + // + // In most cases ^C will not send an interrupt because the terminal will be + // in raw mode and ^C will be captured as a keystroke and sent along to + // Program.Update as a KeyMsg. When input is not a TTY, however, ^C will be + // caught here. + // + // SIGTERM is sent by unix utilities (like kill) to terminate a process. + go func() { + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) + defer func() { + signal.Stop(sig) + close(ch) + }() + + for { + select { + case <-p.ctx.Done(): + return + + case s := <-sig: + if atomic.LoadUint32(&p.ignoreSignals) == 0 { + switch s { + case syscall.SIGINT: + p.msgs <- InterruptMsg{} + default: + p.msgs <- QuitMsg{} + } + return + } + } + } + }() + + return ch +} + +// handleResize handles terminal resize events. +func (p *Program) handleResize() chan struct{} { + ch := make(chan struct{}) + + if p.ttyOutput != nil { + // Get the initial terminal size and send it to the program. + go p.checkResize() + + // Listen for window resizes. + go p.listenForResize(ch) + } else { + close(ch) + } + + return ch +} + +// handleCommands runs commands in a goroutine and sends the result to the +// program's message channel. +func (p *Program) handleCommands(cmds chan Cmd) chan struct{} { + ch := make(chan struct{}) + + go func() { + defer close(ch) + + for { + select { + case <-p.ctx.Done(): + return + + case cmd := <-cmds: + if cmd == nil { + continue + } + + // Don't wait on these goroutines, otherwise the shutdown + // latency would get too large as a Cmd can run for some time + // (e.g. tick commands that sleep for half a second). It's not + // possible to cancel them so we'll have to leak the goroutine + // until Cmd returns. + go func() { + // Recover from panics. + if !p.startupOptions.has(withoutCatchPanics) { + defer func() { + if r := recover(); r != nil { + p.recoverFromGoPanic(r) + } + }() + } + + msg := cmd() // this can be long. + p.Send(msg) + }() + } + } + }() + + return ch +} + +func (p *Program) disableMouse() { + p.renderer.disableMouseCellMotion() + p.renderer.disableMouseAllMotion() + p.renderer.disableMouseSGRMode() +} + +// eventLoop is the central message loop. It receives and handles the default +// Bubble Tea messages, update the model and triggers redraws. +func (p *Program) eventLoop(model Model, cmds chan Cmd) (Model, error) { + for { + select { + case <-p.ctx.Done(): + return model, nil + + case err := <-p.errs: + return model, err + + case msg := <-p.msgs: + // Filter messages. + if p.filter != nil { + msg = p.filter(model, msg) + } + if msg == nil { + continue + } + + // Handle special internal messages. + switch msg := msg.(type) { + case QuitMsg: + return model, nil + + case InterruptMsg: + return model, ErrInterrupted + + case SuspendMsg: + if suspendSupported { + p.suspend() + } + + case clearScreenMsg: + p.renderer.clearScreen() + + case enterAltScreenMsg: + p.renderer.enterAltScreen() + + case exitAltScreenMsg: + p.renderer.exitAltScreen() + + case enableMouseCellMotionMsg, enableMouseAllMotionMsg: + switch msg.(type) { + case enableMouseCellMotionMsg: + p.renderer.enableMouseCellMotion() + case enableMouseAllMotionMsg: + p.renderer.enableMouseAllMotion() + } + // mouse mode (1006) is a no-op if the terminal doesn't support it. + p.renderer.enableMouseSGRMode() + + // XXX: This is used to enable mouse mode on Windows. We need + // to reinitialize the cancel reader to get the mouse events to + // work. + if runtime.GOOS == "windows" && !p.mouseMode { + p.mouseMode = true + p.initCancelReader(true) //nolint:errcheck,gosec + } + + case disableMouseMsg: + p.disableMouse() + + // XXX: On Windows, mouse mode is enabled on the input reader + // level. We need to instruct the input reader to stop reading + // mouse events. + if runtime.GOOS == "windows" && p.mouseMode { + p.mouseMode = false + p.initCancelReader(true) //nolint:errcheck,gosec + } + + case showCursorMsg: + p.renderer.showCursor() + + case hideCursorMsg: + p.renderer.hideCursor() + + case enableBracketedPasteMsg: + p.renderer.enableBracketedPaste() + + case disableBracketedPasteMsg: + p.renderer.disableBracketedPaste() + + case enableReportFocusMsg: + p.renderer.enableReportFocus() + + case disableReportFocusMsg: + p.renderer.disableReportFocus() + + case execMsg: + // NB: this blocks. + p.exec(msg.cmd, msg.fn) + + case BatchMsg: + go p.execBatchMsg(msg) + continue + + case sequenceMsg: + go p.execSequenceMsg(msg) + continue + + case setWindowTitleMsg: + p.SetWindowTitle(string(msg)) + + case windowSizeMsg: + go p.checkResize() + } + + // Process internal messages for the renderer. + if r, ok := p.renderer.(*standardRenderer); ok { + r.handleMessages(msg) + } + + var cmd Cmd + model, cmd = model.Update(msg) // run update + + select { + case <-p.ctx.Done(): + return model, nil + case cmds <- cmd: // process command (if any) + } + + p.renderer.write(model.View()) // send view to renderer + } + } +} + +func (p *Program) execSequenceMsg(msg sequenceMsg) { + if !p.startupOptions.has(withoutCatchPanics) { + defer func() { + if r := recover(); r != nil { + p.recoverFromGoPanic(r) + } + }() + } + + // Execute commands one at a time, in order. + for _, cmd := range msg { + if cmd == nil { + continue + } + msg := cmd() + switch msg := msg.(type) { + case BatchMsg: + p.execBatchMsg(msg) + case sequenceMsg: + p.execSequenceMsg(msg) + default: + p.Send(msg) + } + } +} + +func (p *Program) execBatchMsg(msg BatchMsg) { + if !p.startupOptions.has(withoutCatchPanics) { + defer func() { + if r := recover(); r != nil { + p.recoverFromGoPanic(r) + } + }() + } + + // Execute commands one at a time. + var wg sync.WaitGroup + for _, cmd := range msg { + if cmd == nil { + continue + } + wg.Add(1) + go func() { + defer wg.Done() + + if !p.startupOptions.has(withoutCatchPanics) { + defer func() { + if r := recover(); r != nil { + p.recoverFromGoPanic(r) + } + }() + } + + msg := cmd() + switch msg := msg.(type) { + case BatchMsg: + p.execBatchMsg(msg) + case sequenceMsg: + p.execSequenceMsg(msg) + default: + p.Send(msg) + } + }() + } + + wg.Wait() // wait for all commands from batch msg to finish +} + +// Run initializes the program and runs its event loops, blocking until it gets +// terminated by either [Program.Quit], [Program.Kill], or its signal handler. +// Returns the final model. +func (p *Program) Run() (returnModel Model, returnErr error) { + p.handlers = channelHandlers{} + cmds := make(chan Cmd) + p.errs = make(chan error, 1) + + p.finished = make(chan struct{}) + defer func() { + close(p.finished) + }() + + defer p.cancel() + + switch p.inputType { + case defaultInput: + p.input = os.Stdin + + // The user has not set a custom input, so we need to check whether or + // not standard input is a terminal. If it's not, we open a new TTY for + // input. This will allow things to "just work" in cases where data was + // piped in or redirected to the application. + // + // To disable input entirely pass nil to the [WithInput] program option. + f, isFile := p.input.(term.File) + if !isFile { + break + } + if term.IsTerminal(f.Fd()) { + break + } + + f, err := openInputTTY() + if err != nil { + return p.initialModel, err + } + defer f.Close() //nolint:errcheck + p.input = f + + case ttyInput: + // Open a new TTY, by request + f, err := openInputTTY() + if err != nil { + return p.initialModel, err + } + defer f.Close() //nolint:errcheck + p.input = f + + case customInput: + // (There is nothing extra to do.) + } + + // Handle signals. + if !p.startupOptions.has(withoutSignalHandler) { + p.handlers.add(p.handleSignals()) + } + + // Recover from panics. + if !p.startupOptions.has(withoutCatchPanics) { + defer func() { + if r := recover(); r != nil { + returnErr = fmt.Errorf("%w: %w", ErrProgramKilled, ErrProgramPanic) + p.recoverFromPanic(r) + } + }() + } + + // If no renderer is set use the standard one. + if p.renderer == nil { + p.renderer = newRenderer(p.output, p.startupOptions.has(withANSICompressor), p.fps) + } + + // Check if output is a TTY before entering raw mode, hiding the cursor and + // so on. + if err := p.initTerminal(); err != nil { + return p.initialModel, err + } + + // Honor program startup options. + if p.startupTitle != "" { + p.renderer.setWindowTitle(p.startupTitle) + } + if p.startupOptions&withAltScreen != 0 { + p.renderer.enterAltScreen() + } + if p.startupOptions&withoutBracketedPaste == 0 { + p.renderer.enableBracketedPaste() + } + if p.startupOptions&withMouseCellMotion != 0 { + p.renderer.enableMouseCellMotion() + p.renderer.enableMouseSGRMode() + } else if p.startupOptions&withMouseAllMotion != 0 { + p.renderer.enableMouseAllMotion() + p.renderer.enableMouseSGRMode() + } + + // XXX: Should we enable mouse mode on Windows? + // This needs to happen before initializing the cancel and input reader. + p.mouseMode = p.startupOptions&withMouseCellMotion != 0 || p.startupOptions&withMouseAllMotion != 0 + + if p.startupOptions&withReportFocus != 0 { + p.renderer.enableReportFocus() + } + + // Start the renderer. + p.renderer.start() + + // Initialize the program. + model := p.initialModel + if initCmd := model.Init(); initCmd != nil { + ch := make(chan struct{}) + p.handlers.add(ch) + + go func() { + defer close(ch) + + select { + case cmds <- initCmd: + case <-p.ctx.Done(): + } + }() + } + + // Render the initial view. + p.renderer.write(model.View()) + + // Subscribe to user input. + if p.input != nil { + if err := p.initCancelReader(false); err != nil { + return model, err + } + } + + // Handle resize events. + p.handlers.add(p.handleResize()) + + // Process commands. + p.handlers.add(p.handleCommands(cmds)) + + // Run event loop, handle updates and draw. + model, err := p.eventLoop(model, cmds) + + if err == nil && len(p.errs) > 0 { + err = <-p.errs // Drain a leftover error in case eventLoop crashed + } + + killed := p.externalCtx.Err() != nil || p.ctx.Err() != nil || err != nil + if killed { + if err == nil && p.externalCtx.Err() != nil { + // Return also as context error the cancellation of an external context. + // This is the context the user knows about and should be able to act on. + err = fmt.Errorf("%w: %w", ErrProgramKilled, p.externalCtx.Err()) + } else if err == nil && p.ctx.Err() != nil { + // Return only that the program was killed (not the internal mechanism). + // The user does not know or need to care about the internal program context. + err = ErrProgramKilled + } else { + // Return that the program was killed and also the error that caused it. + err = fmt.Errorf("%w: %w", ErrProgramKilled, err) + } + } else { + // Graceful shutdown of the program (not killed): + // Ensure we rendered the final state of the model. + p.renderer.write(model.View()) + } + + // Restore terminal state. + p.shutdown(killed) + + return model, err +} + +// StartReturningModel initializes the program and runs its event loops, +// blocking until it gets terminated by either [Program.Quit], [Program.Kill], +// or its signal handler. Returns the final model. +// +// Deprecated: please use [Program.Run] instead. +func (p *Program) StartReturningModel() (Model, error) { + return p.Run() +} + +// Start initializes the program and runs its event loops, blocking until it +// gets terminated by either [Program.Quit], [Program.Kill], or its signal +// handler. +// +// Deprecated: please use [Program.Run] instead. +func (p *Program) Start() error { + _, err := p.Run() + return err +} + +// Send sends a message to the main update function, effectively allowing +// messages to be injected from outside the program for interoperability +// purposes. +// +// If the program hasn't started yet this will be a blocking operation. +// If the program has already been terminated this will be a no-op, so it's safe +// to send messages after the program has exited. +func (p *Program) Send(msg Msg) { + select { + case <-p.ctx.Done(): + case p.msgs <- msg: + } +} + +// Quit is a convenience function for quitting Bubble Tea programs. Use it +// when you need to shut down a Bubble Tea program from the outside. +// +// If you wish to quit from within a Bubble Tea program use the Quit command. +// +// If the program is not running this will be a no-op, so it's safe to call +// if the program is unstarted or has already exited. +func (p *Program) Quit() { + p.Send(Quit()) +} + +// Kill signals the program to stop immediately and restore the former terminal state. +// The final render that you would normally see when quitting will be skipped. +// [program.Run] returns a [ErrProgramKilled] error. +func (p *Program) Kill() { + p.cancel() +} + +// Wait waits/blocks until the underlying Program finished shutting down. +func (p *Program) Wait() { + <-p.finished +} + +// shutdown performs operations to free up resources and restore the terminal +// to its original state. It is called once at the end of the program's lifetime. +// +// This method should not be called to signal the program to be killed/shutdown. +// Doing so can lead to race conditions with the eventual call at the program's end. +// As alternatives, the [Quit] or [Kill] convenience methods should be used instead. +func (p *Program) shutdown(kill bool) { + p.cancel() + + // Wait for all handlers to finish. + p.handlers.shutdown() + + // Check if the cancel reader has been setup before waiting and closing. + if p.cancelReader != nil { + // Wait for input loop to finish. + if p.cancelReader.Cancel() { + if !kill { + p.waitForReadLoop() + } + } + _ = p.cancelReader.Close() + } + + if p.renderer != nil { + if kill { + p.renderer.kill() + } else { + p.renderer.stop() + } + } + + _ = p.restoreTerminalState() +} + +// recoverFromPanic recovers from a panic, prints the stack trace, and restores +// the terminal to a usable state. +func (p *Program) recoverFromPanic(r interface{}) { + select { + case p.errs <- ErrProgramPanic: + default: + } + p.shutdown(true) // Ok to call here, p.Run() cannot do it anymore. + fmt.Printf("Caught panic:\n\n%s\n\nRestoring terminal...\n\n", r) + debug.PrintStack() +} + +// recoverFromGoPanic recovers from a goroutine panic, prints a stack trace and +// signals for the program to be killed and terminal restored to a usable state. +func (p *Program) recoverFromGoPanic(r interface{}) { + select { + case p.errs <- ErrProgramPanic: + default: + } + p.cancel() + fmt.Printf("Caught goroutine panic:\n\n%s\n\nRestoring terminal...\n\n", r) + debug.PrintStack() +} + +// ReleaseTerminal restores the original terminal state and cancels the input +// reader. You can return control to the Program with RestoreTerminal. +func (p *Program) ReleaseTerminal() error { + atomic.StoreUint32(&p.ignoreSignals, 1) + if p.cancelReader != nil { + p.cancelReader.Cancel() + } + + p.waitForReadLoop() + + if p.renderer != nil { + p.renderer.stop() + p.altScreenWasActive = p.renderer.altScreen() + p.bpWasActive = p.renderer.bracketedPasteActive() + p.reportFocus = p.renderer.reportFocus() + } + + return p.restoreTerminalState() +} + +// RestoreTerminal reinitializes the Program's input reader, restores the +// terminal to the former state when the program was running, and repaints. +// Use it to reinitialize a Program after running ReleaseTerminal. +func (p *Program) RestoreTerminal() error { + atomic.StoreUint32(&p.ignoreSignals, 0) + + if err := p.initTerminal(); err != nil { + return err + } + if err := p.initCancelReader(false); err != nil { + return err + } + if p.altScreenWasActive { + p.renderer.enterAltScreen() + } else { + // entering alt screen already causes a repaint. + go p.Send(repaintMsg{}) + } + if p.renderer != nil { + p.renderer.start() + } + if p.bpWasActive { + p.renderer.enableBracketedPaste() + } + if p.reportFocus { + p.renderer.enableReportFocus() + } + + // If the output is a terminal, it may have been resized while another + // process was at the foreground, in which case we may not have received + // SIGWINCH. Detect any size change now and propagate the new size as + // needed. + go p.checkResize() + + return nil +} + +// Println prints above the Program. This output is unmanaged by the program +// and will persist across renders by the Program. +// +// If the altscreen is active no output will be printed. +func (p *Program) Println(args ...interface{}) { + p.msgs <- printLineMessage{ + messageBody: fmt.Sprint(args...), + } +} + +// Printf prints above the Program. It takes a format template followed by +// values similar to fmt.Printf. This output is unmanaged by the program and +// will persist across renders by the Program. +// +// Unlike fmt.Printf (but similar to log.Printf) the message will be print on +// its own line. +// +// If the altscreen is active no output will be printed. +func (p *Program) Printf(template string, args ...interface{}) { + p.msgs <- printLineMessage{ + messageBody: fmt.Sprintf(template, args...), + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea_init.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea_init.go new file mode 100644 index 0000000..19b6cc3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tea_init.go @@ -0,0 +1,22 @@ +package tea + +import ( + "github.com/charmbracelet/lipgloss" +) + +func init() { + // XXX: This is a workaround to make assure that Lip Gloss and Termenv + // query the terminal before any Bubble Tea Program runs and acquires the + // terminal. Without this, Programs that use Lip Gloss/Termenv might hang + // while waiting for a a [termenv.OSCTimeout] while querying the terminal + // for its background/foreground colors. + // + // This happens because Bubble Tea acquires the terminal before termenv + // reads any responses. + // + // Note that this will only affect programs running on the default IO i.e. + // [os.Stdout] and [os.Stdin]. + // + // This workaround will be removed in v2. + _ = lipgloss.HasDarkBackground() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty.go new file mode 100644 index 0000000..6812bfc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty.go @@ -0,0 +1,141 @@ +package tea + +import ( + "errors" + "fmt" + "io" + "time" + + "github.com/charmbracelet/x/term" + "github.com/muesli/cancelreader" +) + +func (p *Program) suspend() { + if err := p.ReleaseTerminal(); err != nil { + // If we can't release input, abort. + return + } + + suspendProcess() + + _ = p.RestoreTerminal() + go p.Send(ResumeMsg{}) +} + +func (p *Program) initTerminal() error { + if _, ok := p.renderer.(*nilRenderer); ok { + // No need to initialize the terminal if we're not rendering + return nil + } + + if err := p.initInput(); err != nil { + return err + } + + p.renderer.hideCursor() + return nil +} + +// restoreTerminalState restores the terminal to the state prior to running the +// Bubble Tea program. +func (p *Program) restoreTerminalState() error { + if p.renderer != nil { + p.renderer.disableBracketedPaste() + p.renderer.showCursor() + p.disableMouse() + + if p.renderer.reportFocus() { + p.renderer.disableReportFocus() + } + + if p.renderer.altScreen() { + p.renderer.exitAltScreen() + + // give the terminal a moment to catch up + time.Sleep(time.Millisecond * 10) //nolint:mnd + } + } + + return p.restoreInput() +} + +// restoreInput restores the tty input to its original state. +func (p *Program) restoreInput() error { + if p.ttyInput != nil && p.previousTtyInputState != nil { + if err := term.Restore(p.ttyInput.Fd(), p.previousTtyInputState); err != nil { + return fmt.Errorf("error restoring console: %w", err) + } + } + if p.ttyOutput != nil && p.previousOutputState != nil { + if err := term.Restore(p.ttyOutput.Fd(), p.previousOutputState); err != nil { + return fmt.Errorf("error restoring console: %w", err) + } + } + return nil +} + +// initCancelReader (re)commences reading inputs. +func (p *Program) initCancelReader(cancel bool) error { + if cancel && p.cancelReader != nil { + p.cancelReader.Cancel() + p.waitForReadLoop() + } + + var err error + p.cancelReader, err = newInputReader(p.input, p.mouseMode) + if err != nil { + return fmt.Errorf("error creating cancelreader: %w", err) + } + + p.readLoopDone = make(chan struct{}) + go p.readLoop() + + return nil +} + +func (p *Program) readLoop() { + defer close(p.readLoopDone) + + err := readInputs(p.ctx, p.msgs, p.cancelReader) + if !errors.Is(err, io.EOF) && !errors.Is(err, cancelreader.ErrCanceled) { + select { + case <-p.ctx.Done(): + case p.errs <- err: + } + } +} + +// waitForReadLoop waits for the cancelReader to finish its read loop. +func (p *Program) waitForReadLoop() { + select { + case <-p.readLoopDone: + case <-time.After(500 * time.Millisecond): //nolint:mnd + // The read loop hangs, which means the input + // cancelReader's cancel function has returned true even + // though it was not able to cancel the read. + } +} + +// checkResize detects the current size of the output and informs the program +// via a WindowSizeMsg. +func (p *Program) checkResize() { + if p.ttyOutput == nil { + // can't query window size + return + } + + w, h, err := term.GetSize(p.ttyOutput.Fd()) + if err != nil { + select { + case <-p.ctx.Done(): + case p.errs <- err: + } + + return + } + + p.Send(WindowSizeMsg{ + Width: w, + Height: h, + }) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_unix.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_unix.go new file mode 100644 index 0000000..5cbb4fe --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_unix.go @@ -0,0 +1,49 @@ +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || aix || zos +// +build darwin dragonfly freebsd linux netbsd openbsd solaris aix zos + +package tea + +import ( + "fmt" + "os" + "os/signal" + "syscall" + + "github.com/charmbracelet/x/term" +) + +func (p *Program) initInput() (err error) { + // Check if input is a terminal + if f, ok := p.input.(term.File); ok && term.IsTerminal(f.Fd()) { + p.ttyInput = f + p.previousTtyInputState, err = term.MakeRaw(p.ttyInput.Fd()) + if err != nil { + return fmt.Errorf("error entering raw mode: %w", err) + } + } + + if f, ok := p.output.(term.File); ok && term.IsTerminal(f.Fd()) { + p.ttyOutput = f + } + + return nil +} + +func openInputTTY() (*os.File, error) { + f, err := os.Open("/dev/tty") + if err != nil { + return nil, fmt.Errorf("could not open a new TTY: %w", err) + } + return f, nil +} + +const suspendSupported = true + +// Send SIGTSTP to the entire process group. +func suspendProcess() { + c := make(chan os.Signal, 1) + signal.Notify(c, syscall.SIGCONT) + _ = syscall.Kill(0, syscall.SIGTSTP) + // blocks until a CONT happens... + <-c +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_windows.go new file mode 100644 index 0000000..211151f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/bubbletea/tty_windows.go @@ -0,0 +1,68 @@ +//go:build windows +// +build windows + +package tea + +import ( + "fmt" + "os" + + "github.com/charmbracelet/x/term" + "golang.org/x/sys/windows" +) + +func (p *Program) initInput() (err error) { + // Save stdin state and enable VT input + // We also need to enable VT + // input here. + if f, ok := p.input.(term.File); ok && term.IsTerminal(f.Fd()) { + p.ttyInput = f + p.previousTtyInputState, err = term.MakeRaw(p.ttyInput.Fd()) + if err != nil { + return fmt.Errorf("error making raw: %w", err) + } + + // Enable VT input + var mode uint32 + if err := windows.GetConsoleMode(windows.Handle(p.ttyInput.Fd()), &mode); err != nil { + return fmt.Errorf("error getting console mode: %w", err) + } + + if err := windows.SetConsoleMode(windows.Handle(p.ttyInput.Fd()), mode|windows.ENABLE_VIRTUAL_TERMINAL_INPUT); err != nil { + return fmt.Errorf("error setting console mode: %w", err) + } + } + + // Save output screen buffer state and enable VT processing. + if f, ok := p.output.(term.File); ok && term.IsTerminal(f.Fd()) { + p.ttyOutput = f + p.previousOutputState, err = term.GetState(f.Fd()) + if err != nil { + return fmt.Errorf("error getting state: %w", err) + } + + var mode uint32 + if err := windows.GetConsoleMode(windows.Handle(p.ttyOutput.Fd()), &mode); err != nil { + return fmt.Errorf("error getting console mode: %w", err) + } + + if err := windows.SetConsoleMode(windows.Handle(p.ttyOutput.Fd()), mode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err != nil { + return fmt.Errorf("error setting console mode: %w", err) + } + } + + return nil +} + +// Open the Windows equivalent of a TTY. +func openInputTTY() (*os.File, error) { + f, err := os.OpenFile("CONIN$", os.O_RDWR, 0o644) //nolint:gosec + if err != nil { + return nil, fmt.Errorf("error opening file: %w", err) + } + return f, nil +} + +const suspendSupported = false + +func suspendProcess() {} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci-soft.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci-soft.yml new file mode 100644 index 0000000..d325d4f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci-soft.yml @@ -0,0 +1,40 @@ +run: + tests: false + issues-exit-code: 0 + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + - exhaustive + - goconst + - godot + - godox + - mnd + - gomoddirectives + - goprintffuncname + - misspell + - nakedret + - nestif + - noctx + - nolintlint + - prealloc + - wrapcheck + + # disable default linters, they are already enabled in .golangci.yml + disable: + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - unused diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci.yml new file mode 100644 index 0000000..d6789e0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.golangci.yml @@ -0,0 +1,28 @@ +run: + tests: false + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + - bodyclose + - gofumpt + - goimports + - gosec + - nilerr + - revive + - rowserrcheck + - sqlclosecheck + - tparallel + - unconvert + - unparam + - whitespace diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.goreleaser.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.goreleaser.yml new file mode 100644 index 0000000..40d9f29 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/.goreleaser.yml @@ -0,0 +1,6 @@ +includes: + - from_url: + url: charmbracelet/meta/main/goreleaser-lib.yaml + +# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json + diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/LICENSE new file mode 100644 index 0000000..b7974b0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2024 Charmbracelet, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/README.md b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/README.md new file mode 100644 index 0000000..c72b2f4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/README.md @@ -0,0 +1,103 @@ +# Colorprofile + +

+ Latest Release + GoDoc + Build Status +

+ +A simple, powerful—and at times magical—package for detecting terminal color +profiles and performing color (and CSI) degradation. + +## Detecting the terminal’s color profile + +Detecting the terminal’s color profile is easy. + +```go +import "github.com/charmbracelet/colorprofile" + +// Detect the color profile. If you’re planning on writing to stderr you'd want +// to use os.Stderr instead. +p := colorprofile.Detect(os.Stdout, os.Environ()) + +// Comment on the profile. +fmt.Printf("You know, your colors are quite %s.", func() string { + switch p { + case colorprofile.TrueColor: + return "fancy" + case colorprofile.ANSI256: + return "1990s fancy" + case colorprofile.ANSI: + return "normcore" + case colorprofile.Ascii: + return "ancient" + case colorprofile.NoTTY: + return "naughty!" + } + return "...IDK" // this should never happen +}()) +``` + +## Downsampling colors + +When necessary, colors can be downsampled to a given profile, or manually +downsampled to a specific profile. + +```go +p := colorprofile.Detect(os.Stdout, os.Environ()) +c := color.RGBA{0x6b, 0x50, 0xff, 0xff} // #6b50ff + +// Downsample to the detected profile, when necessary. +convertedColor := p.Convert(c) + +// Or manually convert to a given profile. +ansi256Color := colorprofile.ANSI256.Convert(c) +ansiColor := colorprofile.ANSI.Convert(c) +noColor := colorprofile.Ascii.Convert(c) +noANSI := colorprofile.NoTTY.Convert(c) +``` + +## Automatic downsampling with a Writer + +You can also magically downsample colors in ANSI output, when necessary. If +output is not a TTY ANSI will be dropped entirely. + +```go +myFancyANSI := "\x1b[38;2;107;80;255mCute \x1b[1;3mpuppy!!\x1b[m" + +// Automatically downsample for the terminal at stdout. +w := colorprofile.NewWriter(os.Stdout, os.Environ()) +fmt.Fprintf(w, myFancyANSI) + +// Downsample to 4-bit ANSI. +w.Profile = colorprofile.ANSI +fmt.Fprintf(w, myFancyANSI) + +// Ascii-fy, no colors. +w.Profile = colorprofile.Ascii +fmt.Fprintf(w, myFancyANSI) + +// Strip ANSI altogether. +w.Profile = colorprofile.NoTTY +fmt.Fprintf(w, myFancyANSI) // not as fancy +``` + +## Feedback + +We’d love to hear your thoughts on this project. Feel free to drop us a note! + +- [Twitter](https://twitter.com/charmcli) +- [The Fediverse](https://mastodon.social/@charmcli) +- [Discord](https://charm.sh/chat) + +## License + +[MIT](https://github.com/charmbracelet/bubbletea/raw/master/LICENSE) + +--- + +Part of [Charm](https://charm.sh). + +The Charm logo + +Charm热爱开源 • Charm loves open source • نحنُ نحب المصادر المفتوحة diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env.go new file mode 100644 index 0000000..8df3d8f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env.go @@ -0,0 +1,287 @@ +package colorprofile + +import ( + "bytes" + "io" + "os/exec" + "runtime" + "strconv" + "strings" + + "github.com/charmbracelet/x/term" + "github.com/xo/terminfo" +) + +// Detect returns the color profile based on the terminal output, and +// environment variables. This respects NO_COLOR, CLICOLOR, and CLICOLOR_FORCE +// environment variables. +// +// The rules as follows: +// - TERM=dumb is always treated as NoTTY unless CLICOLOR_FORCE=1 is set. +// - If COLORTERM=truecolor, and the profile is not NoTTY, it gest upgraded to TrueColor. +// - Using any 256 color terminal (e.g. TERM=xterm-256color) will set the profile to ANSI256. +// - Using any color terminal (e.g. TERM=xterm-color) will set the profile to ANSI. +// - Using CLICOLOR=1 without TERM defined should be treated as ANSI if the +// output is a terminal. +// - NO_COLOR takes precedence over CLICOLOR/CLICOLOR_FORCE, and will disable +// colors but not text decoration, i.e. bold, italic, faint, etc. +// +// See https://no-color.org/ and https://bixense.com/clicolors/ for more information. +func Detect(output io.Writer, env []string) Profile { + out, ok := output.(term.File) + isatty := ok && term.IsTerminal(out.Fd()) + environ := newEnviron(env) + term := environ.get("TERM") + isDumb := term == "dumb" + envp := colorProfile(isatty, environ) + if envp == TrueColor || envNoColor(environ) { + // We already know we have TrueColor, or NO_COLOR is set. + return envp + } + + if isatty && !isDumb { + tip := Terminfo(term) + tmuxp := tmux(environ) + + // Color profile is the maximum of env, terminfo, and tmux. + return max(envp, max(tip, tmuxp)) + } + + return envp +} + +// Env returns the color profile based on the terminal environment variables. +// This respects NO_COLOR, CLICOLOR, and CLICOLOR_FORCE environment variables. +// +// The rules as follows: +// - TERM=dumb is always treated as NoTTY unless CLICOLOR_FORCE=1 is set. +// - If COLORTERM=truecolor, and the profile is not NoTTY, it gest upgraded to TrueColor. +// - Using any 256 color terminal (e.g. TERM=xterm-256color) will set the profile to ANSI256. +// - Using any color terminal (e.g. TERM=xterm-color) will set the profile to ANSI. +// - Using CLICOLOR=1 without TERM defined should be treated as ANSI if the +// output is a terminal. +// - NO_COLOR takes precedence over CLICOLOR/CLICOLOR_FORCE, and will disable +// colors but not text decoration, i.e. bold, italic, faint, etc. +// +// See https://no-color.org/ and https://bixense.com/clicolors/ for more information. +func Env(env []string) (p Profile) { + return colorProfile(true, newEnviron(env)) +} + +func colorProfile(isatty bool, env environ) (p Profile) { + isDumb := env.get("TERM") == "dumb" + envp := envColorProfile(env) + if !isatty || isDumb { + // Check if the output is a terminal. + // Treat dumb terminals as NoTTY + p = NoTTY + } else { + p = envp + } + + if envNoColor(env) && isatty { + if p > Ascii { + p = Ascii + } + return + } + + if cliColorForced(env) { + if p < ANSI { + p = ANSI + } + if envp > p { + p = envp + } + + return + } + + if cliColor(env) { + if isatty && !isDumb && p < ANSI { + p = ANSI + } + } + + return p +} + +// envNoColor returns true if the environment variables explicitly disable color output +// by setting NO_COLOR (https://no-color.org/). +func envNoColor(env environ) bool { + noColor, _ := strconv.ParseBool(env.get("NO_COLOR")) + return noColor +} + +func cliColor(env environ) bool { + cliColor, _ := strconv.ParseBool(env.get("CLICOLOR")) + return cliColor +} + +func cliColorForced(env environ) bool { + cliColorForce, _ := strconv.ParseBool(env.get("CLICOLOR_FORCE")) + return cliColorForce +} + +func colorTerm(env environ) bool { + colorTerm := strings.ToLower(env.get("COLORTERM")) + return colorTerm == "truecolor" || colorTerm == "24bit" || + colorTerm == "yes" || colorTerm == "true" +} + +// envColorProfile returns infers the color profile from the environment. +func envColorProfile(env environ) (p Profile) { + term, ok := env.lookup("TERM") + if !ok || len(term) == 0 || term == "dumb" { + p = NoTTY + if runtime.GOOS == "windows" { + // Use Windows API to detect color profile. Windows Terminal and + // cmd.exe don't define $TERM. + if wcp, ok := windowsColorProfile(env); ok { + p = wcp + } + } + } else { + p = ANSI + } + + parts := strings.Split(term, "-") + switch parts[0] { + case "alacritty", + "contour", + "foot", + "ghostty", + "kitty", + "rio", + "st", + "wezterm": + return TrueColor + case "xterm": + if len(parts) > 1 { + switch parts[1] { + case "ghostty", "kitty": + // These terminals can be defined as xterm-TERMNAME + return TrueColor + } + } + case "tmux", "screen": + if p < ANSI256 { + p = ANSI256 + } + } + + if isCloudShell, _ := strconv.ParseBool(env.get("GOOGLE_CLOUD_SHELL")); isCloudShell { + return TrueColor + } + + // GNU Screen doesn't support TrueColor + // Tmux doesn't support $COLORTERM + if colorTerm(env) && !strings.HasPrefix(term, "screen") && !strings.HasPrefix(term, "tmux") { + return TrueColor + } + + if strings.HasSuffix(term, "256color") && p < ANSI256 { + p = ANSI256 + } + + return +} + +// Terminfo returns the color profile based on the terminal's terminfo +// database. This relies on the Tc and RGB capabilities to determine if the +// terminal supports TrueColor. +// If term is empty or "dumb", it returns NoTTY. +func Terminfo(term string) (p Profile) { + if len(term) == 0 || term == "dumb" { + return NoTTY + } + + p = ANSI + ti, err := terminfo.Load(term) + if err != nil { + return + } + + extbools := ti.ExtBoolCapsShort() + if _, ok := extbools["Tc"]; ok { + return TrueColor + } + + if _, ok := extbools["RGB"]; ok { + return TrueColor + } + + return +} + +// Tmux returns the color profile based on `tmux info` output. Tmux supports +// overriding the terminal's color capabilities, so this function will return +// the color profile based on the tmux configuration. +func Tmux(env []string) Profile { + return tmux(newEnviron(env)) +} + +// tmux returns the color profile based on the tmux environment variables. +func tmux(env environ) (p Profile) { + if tmux, ok := env.lookup("TMUX"); !ok || len(tmux) == 0 { + // Not in tmux + return NoTTY + } + + // Check if tmux has either Tc or RGB capabilities. Otherwise, return + // ANSI256. + p = ANSI256 + cmd := exec.Command("tmux", "info") + out, err := cmd.Output() + if err != nil { + return + } + + for _, line := range bytes.Split(out, []byte("\n")) { + if (bytes.Contains(line, []byte("Tc")) || bytes.Contains(line, []byte("RGB"))) && + bytes.Contains(line, []byte("true")) { + return TrueColor + } + } + + return +} + +// environ is a map of environment variables. +type environ map[string]string + +// newEnviron returns a new environment map from a slice of environment +// variables. +func newEnviron(environ []string) environ { + m := make(map[string]string, len(environ)) + for _, e := range environ { + parts := strings.SplitN(e, "=", 2) + var value string + if len(parts) == 2 { + value = parts[1] + } + m[parts[0]] = value + } + return m +} + +// lookup returns the value of an environment variable and a boolean indicating +// if it exists. +func (e environ) lookup(key string) (string, bool) { + v, ok := e[key] + return v, ok +} + +// get returns the value of an environment variable and empty string if it +// doesn't exist. +func (e environ) get(key string) string { + v, _ := e.lookup(key) + return v +} + +func max[T ~byte | ~int](a, b T) T { + if a > b { + return a + } + return b +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_other.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_other.go new file mode 100644 index 0000000..080994b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_other.go @@ -0,0 +1,8 @@ +//go:build !windows +// +build !windows + +package colorprofile + +func windowsColorProfile(map[string]string) (Profile, bool) { + return 0, false +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_windows.go new file mode 100644 index 0000000..3b9c28f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/env_windows.go @@ -0,0 +1,45 @@ +//go:build windows +// +build windows + +package colorprofile + +import ( + "strconv" + + "golang.org/x/sys/windows" +) + +func windowsColorProfile(env map[string]string) (Profile, bool) { + if env["ConEmuANSI"] == "ON" { + return TrueColor, true + } + + if len(env["WT_SESSION"]) > 0 { + // Windows Terminal supports TrueColor + return TrueColor, true + } + + major, _, build := windows.RtlGetNtVersionNumbers() + if build < 10586 || major < 10 { + // No ANSI support before WindowsNT 10 build 10586 + if len(env["ANSICON"]) > 0 { + ansiconVer := env["ANSICON_VER"] + cv, err := strconv.Atoi(ansiconVer) + if err != nil || cv < 181 { + // No 8 bit color support before ANSICON 1.81 + return ANSI, true + } + + return ANSI256, true + } + + return NoTTY, true + } + + if build < 14931 { + // No true color support before build 14931 + return ANSI256, true + } + + return TrueColor, true +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/profile.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/profile.go new file mode 100644 index 0000000..97e37ac --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/profile.go @@ -0,0 +1,399 @@ +package colorprofile + +import ( + "image/color" + "math" + + "github.com/charmbracelet/x/ansi" + "github.com/lucasb-eyer/go-colorful" +) + +// Profile is a color profile: NoTTY, Ascii, ANSI, ANSI256, or TrueColor. +type Profile byte + +const ( + // NoTTY, not a terminal profile. + NoTTY Profile = iota + // Ascii, uncolored profile. + Ascii //nolint:revive + // ANSI, 4-bit color profile. + ANSI + // ANSI256, 8-bit color profile. + ANSI256 + // TrueColor, 24-bit color profile. + TrueColor +) + +// String returns the string representation of a Profile. +func (p Profile) String() string { + switch p { + case TrueColor: + return "TrueColor" + case ANSI256: + return "ANSI256" + case ANSI: + return "ANSI" + case Ascii: + return "Ascii" + case NoTTY: + return "NoTTY" + } + return "Unknown" +} + +// Convert transforms a given Color to a Color supported within the Profile. +func (p Profile) Convert(c color.Color) color.Color { + if p <= Ascii { + return nil + } + + switch c := c.(type) { + case ansi.BasicColor: + return c + + case ansi.ExtendedColor: + if p == ANSI { + return ansi256ToANSIColor(c) + } + return c + + case ansi.TrueColor, color.Color: + h, ok := colorful.MakeColor(c) + if !ok { + return nil + } + if p != TrueColor { + ac := hexToANSI256Color(h) + if p == ANSI { + return ansi256ToANSIColor(ac) + } + return ac + } + return c + } + + return c +} + +func hexToANSI256Color(c colorful.Color) ansi.ExtendedColor { + v2ci := func(v float64) int { + if v < 48 { + return 0 + } + if v < 115 { + return 1 + } + return int((v - 35) / 40) + } + + // Calculate the nearest 0-based color index at 16..231 + r := v2ci(c.R * 255.0) // 0..5 each + g := v2ci(c.G * 255.0) + b := v2ci(c.B * 255.0) + ci := 36*r + 6*g + b /* 0..215 */ + + // Calculate the represented colors back from the index + i2cv := [6]int{0, 0x5f, 0x87, 0xaf, 0xd7, 0xff} + cr := i2cv[r] // r/g/b, 0..255 each + cg := i2cv[g] + cb := i2cv[b] + + // Calculate the nearest 0-based gray index at 232..255 + var grayIdx int + average := (cr + cg + cb) / 3 + if average > 238 { + grayIdx = 23 + } else { + grayIdx = (average - 3) / 10 // 0..23 + } + gv := 8 + 10*grayIdx // same value for r/g/b, 0..255 + + // Return the one which is nearer to the original input rgb value + c2 := colorful.Color{R: float64(cr) / 255.0, G: float64(cg) / 255.0, B: float64(cb) / 255.0} + g2 := colorful.Color{R: float64(gv) / 255.0, G: float64(gv) / 255.0, B: float64(gv) / 255.0} + colorDist := c.DistanceHSLuv(c2) + grayDist := c.DistanceHSLuv(g2) + + if colorDist <= grayDist { + return ansi.ExtendedColor(16 + ci) //nolint:gosec + } + return ansi.ExtendedColor(232 + grayIdx) //nolint:gosec +} + +func ansi256ToANSIColor(c ansi.ExtendedColor) ansi.BasicColor { + var r int + md := math.MaxFloat64 + + h, _ := colorful.Hex(ansiHex[c]) + for i := 0; i <= 15; i++ { + hb, _ := colorful.Hex(ansiHex[i]) + d := h.DistanceHSLuv(hb) + + if d < md { + md = d + r = i + } + } + + return ansi.BasicColor(r) //nolint:gosec +} + +// RGB values of ANSI colors (0-255). +var ansiHex = []string{ + "#000000", + "#800000", + "#008000", + "#808000", + "#000080", + "#800080", + "#008080", + "#c0c0c0", + "#808080", + "#ff0000", + "#00ff00", + "#ffff00", + "#0000ff", + "#ff00ff", + "#00ffff", + "#ffffff", + "#000000", + "#00005f", + "#000087", + "#0000af", + "#0000d7", + "#0000ff", + "#005f00", + "#005f5f", + "#005f87", + "#005faf", + "#005fd7", + "#005fff", + "#008700", + "#00875f", + "#008787", + "#0087af", + "#0087d7", + "#0087ff", + "#00af00", + "#00af5f", + "#00af87", + "#00afaf", + "#00afd7", + "#00afff", + "#00d700", + "#00d75f", + "#00d787", + "#00d7af", + "#00d7d7", + "#00d7ff", + "#00ff00", + "#00ff5f", + "#00ff87", + "#00ffaf", + "#00ffd7", + "#00ffff", + "#5f0000", + "#5f005f", + "#5f0087", + "#5f00af", + "#5f00d7", + "#5f00ff", + "#5f5f00", + "#5f5f5f", + "#5f5f87", + "#5f5faf", + "#5f5fd7", + "#5f5fff", + "#5f8700", + "#5f875f", + "#5f8787", + "#5f87af", + "#5f87d7", + "#5f87ff", + "#5faf00", + "#5faf5f", + "#5faf87", + "#5fafaf", + "#5fafd7", + "#5fafff", + "#5fd700", + "#5fd75f", + "#5fd787", + "#5fd7af", + "#5fd7d7", + "#5fd7ff", + "#5fff00", + "#5fff5f", + "#5fff87", + "#5fffaf", + "#5fffd7", + "#5fffff", + "#870000", + "#87005f", + "#870087", + "#8700af", + "#8700d7", + "#8700ff", + "#875f00", + "#875f5f", + "#875f87", + "#875faf", + "#875fd7", + "#875fff", + "#878700", + "#87875f", + "#878787", + "#8787af", + "#8787d7", + "#8787ff", + "#87af00", + "#87af5f", + "#87af87", + "#87afaf", + "#87afd7", + "#87afff", + "#87d700", + "#87d75f", + "#87d787", + "#87d7af", + "#87d7d7", + "#87d7ff", + "#87ff00", + "#87ff5f", + "#87ff87", + "#87ffaf", + "#87ffd7", + "#87ffff", + "#af0000", + "#af005f", + "#af0087", + "#af00af", + "#af00d7", + "#af00ff", + "#af5f00", + "#af5f5f", + "#af5f87", + "#af5faf", + "#af5fd7", + "#af5fff", + "#af8700", + "#af875f", + "#af8787", + "#af87af", + "#af87d7", + "#af87ff", + "#afaf00", + "#afaf5f", + "#afaf87", + "#afafaf", + "#afafd7", + "#afafff", + "#afd700", + "#afd75f", + "#afd787", + "#afd7af", + "#afd7d7", + "#afd7ff", + "#afff00", + "#afff5f", + "#afff87", + "#afffaf", + "#afffd7", + "#afffff", + "#d70000", + "#d7005f", + "#d70087", + "#d700af", + "#d700d7", + "#d700ff", + "#d75f00", + "#d75f5f", + "#d75f87", + "#d75faf", + "#d75fd7", + "#d75fff", + "#d78700", + "#d7875f", + "#d78787", + "#d787af", + "#d787d7", + "#d787ff", + "#d7af00", + "#d7af5f", + "#d7af87", + "#d7afaf", + "#d7afd7", + "#d7afff", + "#d7d700", + "#d7d75f", + "#d7d787", + "#d7d7af", + "#d7d7d7", + "#d7d7ff", + "#d7ff00", + "#d7ff5f", + "#d7ff87", + "#d7ffaf", + "#d7ffd7", + "#d7ffff", + "#ff0000", + "#ff005f", + "#ff0087", + "#ff00af", + "#ff00d7", + "#ff00ff", + "#ff5f00", + "#ff5f5f", + "#ff5f87", + "#ff5faf", + "#ff5fd7", + "#ff5fff", + "#ff8700", + "#ff875f", + "#ff8787", + "#ff87af", + "#ff87d7", + "#ff87ff", + "#ffaf00", + "#ffaf5f", + "#ffaf87", + "#ffafaf", + "#ffafd7", + "#ffafff", + "#ffd700", + "#ffd75f", + "#ffd787", + "#ffd7af", + "#ffd7d7", + "#ffd7ff", + "#ffff00", + "#ffff5f", + "#ffff87", + "#ffffaf", + "#ffffd7", + "#ffffff", + "#080808", + "#121212", + "#1c1c1c", + "#262626", + "#303030", + "#3a3a3a", + "#444444", + "#4e4e4e", + "#585858", + "#626262", + "#6c6c6c", + "#767676", + "#808080", + "#8a8a8a", + "#949494", + "#9e9e9e", + "#a8a8a8", + "#b2b2b2", + "#bcbcbc", + "#c6c6c6", + "#d0d0d0", + "#dadada", + "#e4e4e4", + "#eeeeee", +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/writer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/writer.go new file mode 100644 index 0000000..d04b3b9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/colorprofile/writer.go @@ -0,0 +1,166 @@ +package colorprofile + +import ( + "bytes" + "image/color" + "io" + "strconv" + + "github.com/charmbracelet/x/ansi" +) + +// NewWriter creates a new color profile writer that downgrades color sequences +// based on the detected color profile. +// +// If environ is nil, it will use os.Environ() to get the environment variables. +// +// It queries the given writer to determine if it supports ANSI escape codes. +// If it does, along with the given environment variables, it will determine +// the appropriate color profile to use for color formatting. +// +// This respects the NO_COLOR, CLICOLOR, and CLICOLOR_FORCE environment variables. +func NewWriter(w io.Writer, environ []string) *Writer { + return &Writer{ + Forward: w, + Profile: Detect(w, environ), + } +} + +// Writer represents a color profile writer that writes ANSI sequences to the +// underlying writer. +type Writer struct { + Forward io.Writer + Profile Profile +} + +// Write writes the given text to the underlying writer. +func (w *Writer) Write(p []byte) (int, error) { + switch w.Profile { + case TrueColor: + return w.Forward.Write(p) + case NoTTY: + return io.WriteString(w.Forward, ansi.Strip(string(p))) + default: + return w.downsample(p) + } +} + +// downsample downgrades the given text to the appropriate color profile. +func (w *Writer) downsample(p []byte) (int, error) { + var buf bytes.Buffer + var state byte + + parser := ansi.GetParser() + defer ansi.PutParser(parser) + + for len(p) > 0 { + parser.Reset() + seq, _, read, newState := ansi.DecodeSequence(p, state, parser) + + switch { + case ansi.HasCsiPrefix(seq) && parser.Command() == 'm': + handleSgr(w, parser, &buf) + default: + // If we're not a style SGR sequence, just write the bytes. + if n, err := buf.Write(seq); err != nil { + return n, err + } + } + + p = p[read:] + state = newState + } + + return w.Forward.Write(buf.Bytes()) +} + +// WriteString writes the given text to the underlying writer. +func (w *Writer) WriteString(s string) (n int, err error) { + return w.Write([]byte(s)) +} + +func handleSgr(w *Writer, p *ansi.Parser, buf *bytes.Buffer) { + var style ansi.Style + params := p.Params() + for i := 0; i < len(params); i++ { + param := params[i] + + switch param := param.Param(0); param { + case 0: + // SGR default parameter is 0. We use an empty string to reduce the + // number of bytes written to the buffer. + style = append(style, "") + case 30, 31, 32, 33, 34, 35, 36, 37: // 8-bit foreground color + if w.Profile < ANSI { + continue + } + style = style.ForegroundColor( + w.Profile.Convert(ansi.BasicColor(param - 30))) //nolint:gosec + case 38: // 16 or 24-bit foreground color + var c color.Color + if n := ansi.ReadStyleColor(params[i:], &c); n > 0 { + i += n - 1 + } + if w.Profile < ANSI { + continue + } + style = style.ForegroundColor(w.Profile.Convert(c)) + case 39: // default foreground color + if w.Profile < ANSI { + continue + } + style = style.DefaultForegroundColor() + case 40, 41, 42, 43, 44, 45, 46, 47: // 8-bit background color + if w.Profile < ANSI { + continue + } + style = style.BackgroundColor( + w.Profile.Convert(ansi.BasicColor(param - 40))) //nolint:gosec + case 48: // 16 or 24-bit background color + var c color.Color + if n := ansi.ReadStyleColor(params[i:], &c); n > 0 { + i += n - 1 + } + if w.Profile < ANSI { + continue + } + style = style.BackgroundColor(w.Profile.Convert(c)) + case 49: // default background color + if w.Profile < ANSI { + continue + } + style = style.DefaultBackgroundColor() + case 58: // 16 or 24-bit underline color + var c color.Color + if n := ansi.ReadStyleColor(params[i:], &c); n > 0 { + i += n - 1 + } + if w.Profile < ANSI { + continue + } + style = style.UnderlineColor(w.Profile.Convert(c)) + case 59: // default underline color + if w.Profile < ANSI { + continue + } + style = style.DefaultUnderlineColor() + case 90, 91, 92, 93, 94, 95, 96, 97: // 8-bit bright foreground color + if w.Profile < ANSI { + continue + } + style = style.ForegroundColor( + w.Profile.Convert(ansi.BasicColor(param - 90 + 8))) //nolint:gosec + case 100, 101, 102, 103, 104, 105, 106, 107: // 8-bit bright background color + if w.Profile < ANSI { + continue + } + style = style.BackgroundColor( + w.Profile.Convert(ansi.BasicColor(param - 100 + 8))) //nolint:gosec + default: + // If this is not a color attribute, just append it to the style. + style = append(style, strconv.Itoa(param)) + } + } + + _, _ = buf.WriteString(style.String()) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.gitignore b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.gitignore new file mode 100644 index 0000000..db48201 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.gitignore @@ -0,0 +1,2 @@ +ssh_example_ed25519* +dist/ diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.golangci.yml new file mode 100644 index 0000000..90c5c08 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.golangci.yml @@ -0,0 +1,41 @@ +run: + tests: false + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + - bodyclose + - exhaustive + - goconst + - godot + - godox + - gofumpt + - goimports + - gomoddirectives + - goprintffuncname + - gosec + - misspell + - nakedret + - nestif + - nilerr + - noctx + - nolintlint + - prealloc + - revive + - rowserrcheck + - sqlclosecheck + - tparallel + - unconvert + - unparam + - whitespace + - wrapcheck diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.goreleaser.yml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.goreleaser.yml new file mode 100644 index 0000000..3353d02 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/.goreleaser.yml @@ -0,0 +1,5 @@ +# yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json +version: 2 +includes: + - from_url: + url: charmbracelet/meta/main/goreleaser-lib.yaml diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/LICENSE new file mode 100644 index 0000000..6f5b1fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2023 Charmbracelet, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/README.md b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/README.md new file mode 100644 index 0000000..cee2371 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/README.md @@ -0,0 +1,815 @@ +# Lip Gloss + +

+ Lip Gloss title treatment
+ Latest Release + GoDoc + Build Status + phorm.ai +

+ +Style definitions for nice terminal layouts. Built with TUIs in mind. + +![Lip Gloss example](https://github.com/user-attachments/assets/7950b1c1-e0e3-427e-8e7d-6f7f6ad17ca7) + +Lip Gloss takes an expressive, declarative approach to terminal rendering. +Users familiar with CSS will feel at home with Lip Gloss. + +```go + +import "github.com/charmbracelet/lipgloss" + +var style = lipgloss.NewStyle(). + Bold(true). + Foreground(lipgloss.Color("#FAFAFA")). + Background(lipgloss.Color("#7D56F4")). + PaddingTop(2). + PaddingLeft(4). + Width(22) + +fmt.Println(style.Render("Hello, kitty")) +``` + +## Colors + +Lip Gloss supports the following color profiles: + +### ANSI 16 colors (4-bit) + +```go +lipgloss.Color("5") // magenta +lipgloss.Color("9") // red +lipgloss.Color("12") // light blue +``` + +### ANSI 256 Colors (8-bit) + +```go +lipgloss.Color("86") // aqua +lipgloss.Color("201") // hot pink +lipgloss.Color("202") // orange +``` + +### True Color (16,777,216 colors; 24-bit) + +```go +lipgloss.Color("#0000FF") // good ol' 100% blue +lipgloss.Color("#04B575") // a green +lipgloss.Color("#3C3C3C") // a dark gray +``` + +...as well as a 1-bit ASCII profile, which is black and white only. + +The terminal's color profile will be automatically detected, and colors outside +the gamut of the current palette will be automatically coerced to their closest +available value. + +### Adaptive Colors + +You can also specify color options for light and dark backgrounds: + +```go +lipgloss.AdaptiveColor{Light: "236", Dark: "248"} +``` + +The terminal's background color will automatically be detected and the +appropriate color will be chosen at runtime. + +### Complete Colors + +CompleteColor specifies exact values for True Color, ANSI256, and ANSI color +profiles. + +```go +lipgloss.CompleteColor{TrueColor: "#0000FF", ANSI256: "86", ANSI: "5"} +``` + +Automatic color degradation will not be performed in this case and it will be +based on the color specified. + +### Complete Adaptive Colors + +You can use `CompleteColor` with `AdaptiveColor` to specify the exact values for +light and dark backgrounds without automatic color degradation. + +```go +lipgloss.CompleteAdaptiveColor{ + Light: CompleteColor{TrueColor: "#d7ffae", ANSI256: "193", ANSI: "11"}, + Dark: CompleteColor{TrueColor: "#d75fee", ANSI256: "163", ANSI: "5"}, +} +``` + +## Inline Formatting + +Lip Gloss supports the usual ANSI text formatting options: + +```go +var style = lipgloss.NewStyle(). + Bold(true). + Italic(true). + Faint(true). + Blink(true). + Strikethrough(true). + Underline(true). + Reverse(true) +``` + +## Block-Level Formatting + +Lip Gloss also supports rules for block-level formatting: + +```go +// Padding +var style = lipgloss.NewStyle(). + PaddingTop(2). + PaddingRight(4). + PaddingBottom(2). + PaddingLeft(4) + +// Margins +var style = lipgloss.NewStyle(). + MarginTop(2). + MarginRight(4). + MarginBottom(2). + MarginLeft(4) +``` + +There is also shorthand syntax for margins and padding, which follows the same +format as CSS: + +```go +// 2 cells on all sides +lipgloss.NewStyle().Padding(2) + +// 2 cells on the top and bottom, 4 cells on the left and right +lipgloss.NewStyle().Margin(2, 4) + +// 1 cell on the top, 4 cells on the sides, 2 cells on the bottom +lipgloss.NewStyle().Padding(1, 4, 2) + +// Clockwise, starting from the top: 2 cells on the top, 4 on the right, 3 on +// the bottom, and 1 on the left +lipgloss.NewStyle().Margin(2, 4, 3, 1) +``` + +## Aligning Text + +You can align paragraphs of text to the left, right, or center. + +```go +var style = lipgloss.NewStyle(). + Width(24). + Align(lipgloss.Left). // align it left + Align(lipgloss.Right). // no wait, align it right + Align(lipgloss.Center) // just kidding, align it in the center +``` + +## Width and Height + +Setting a minimum width and height is simple and straightforward. + +```go +var style = lipgloss.NewStyle(). + SetString("What’s for lunch?"). + Width(24). + Height(32). + Foreground(lipgloss.Color("63")) +``` + +## Borders + +Adding borders is easy: + +```go +// Add a purple, rectangular border +var style = lipgloss.NewStyle(). + BorderStyle(lipgloss.NormalBorder()). + BorderForeground(lipgloss.Color("63")) + +// Set a rounded, yellow-on-purple border to the top and left +var anotherStyle = lipgloss.NewStyle(). + BorderStyle(lipgloss.RoundedBorder()). + BorderForeground(lipgloss.Color("228")). + BorderBackground(lipgloss.Color("63")). + BorderTop(true). + BorderLeft(true) + +// Make your own border +var myCuteBorder = lipgloss.Border{ + Top: "._.:*:", + Bottom: "._.:*:", + Left: "|*", + Right: "|*", + TopLeft: "*", + TopRight: "*", + BottomLeft: "*", + BottomRight: "*", +} +``` + +There are also shorthand functions for defining borders, which follow a similar +pattern to the margin and padding shorthand functions. + +```go +// Add a thick border to the top and bottom +lipgloss.NewStyle(). + Border(lipgloss.ThickBorder(), true, false) + +// Add a double border to the top and left sides. Rules are set clockwise +// from top. +lipgloss.NewStyle(). + Border(lipgloss.DoubleBorder(), true, false, false, true) +``` + +For more on borders see [the docs][docs]. + +## Copying Styles + +Just use assignment: + +```go +style := lipgloss.NewStyle().Foreground(lipgloss.Color("219")) + +copiedStyle := style // this is a true copy + +wildStyle := style.Blink(true) // this is also true copy, with blink added + +``` + +Since `Style` data structures contains only primitive types, assigning a style +to another effectively creates a new copy of the style without mutating the +original. + +## Inheritance + +Styles can inherit rules from other styles. When inheriting, only unset rules +on the receiver are inherited. + +```go +var styleA = lipgloss.NewStyle(). + Foreground(lipgloss.Color("229")). + Background(lipgloss.Color("63")) + +// Only the background color will be inherited here, because the foreground +// color will have been already set: +var styleB = lipgloss.NewStyle(). + Foreground(lipgloss.Color("201")). + Inherit(styleA) +``` + +## Unsetting Rules + +All rules can be unset: + +```go +var style = lipgloss.NewStyle(). + Bold(true). // make it bold + UnsetBold(). // jk don't make it bold + Background(lipgloss.Color("227")). // yellow background + UnsetBackground() // never mind +``` + +When a rule is unset, it won't be inherited or copied. + +## Enforcing Rules + +Sometimes, such as when developing a component, you want to make sure style +definitions respect their intended purpose in the UI. This is where `Inline` +and `MaxWidth`, and `MaxHeight` come in: + +```go +// Force rendering onto a single line, ignoring margins, padding, and borders. +someStyle.Inline(true).Render("yadda yadda") + +// Also limit rendering to five cells +someStyle.Inline(true).MaxWidth(5).Render("yadda yadda") + +// Limit rendering to a 5x5 cell block +someStyle.MaxWidth(5).MaxHeight(5).Render("yadda yadda") +``` + +## Tabs + +The tab character (`\t`) is rendered differently in different terminals (often +as 8 spaces, sometimes 4). Because of this inconsistency, Lip Gloss converts +tabs to 4 spaces at render time. This behavior can be changed on a per-style +basis, however: + +```go +style := lipgloss.NewStyle() // tabs will render as 4 spaces, the default +style = style.TabWidth(2) // render tabs as 2 spaces +style = style.TabWidth(0) // remove tabs entirely +style = style.TabWidth(lipgloss.NoTabConversion) // leave tabs intact +``` + +## Rendering + +Generally, you just call the `Render(string...)` method on a `lipgloss.Style`: + +```go +style := lipgloss.NewStyle().Bold(true).SetString("Hello,") +fmt.Println(style.Render("kitty.")) // Hello, kitty. +fmt.Println(style.Render("puppy.")) // Hello, puppy. +``` + +But you could also use the Stringer interface: + +```go +var style = lipgloss.NewStyle().SetString("你好,猫咪。").Bold(true) +fmt.Println(style) // 你好,猫咪。 +``` + +### Custom Renderers + +Custom renderers allow you to render to a specific outputs. This is +particularly important when you want to render to different outputs and +correctly detect the color profile and dark background status for each, such as +in a server-client situation. + +```go +func myLittleHandler(sess ssh.Session) { + // Create a renderer for the client. + renderer := lipgloss.NewRenderer(sess) + + // Create a new style on the renderer. + style := renderer.NewStyle().Background(lipgloss.AdaptiveColor{Light: "63", Dark: "228"}) + + // Render. The color profile and dark background state will be correctly detected. + io.WriteString(sess, style.Render("Heyyyyyyy")) +} +``` + +For an example on using a custom renderer over SSH with [Wish][wish] see the +[SSH example][ssh-example]. + +## Utilities + +In addition to pure styling, Lip Gloss also ships with some utilities to help +assemble your layouts. + +### Joining Paragraphs + +Horizontally and vertically joining paragraphs is a cinch. + +```go +// Horizontally join three paragraphs along their bottom edges +lipgloss.JoinHorizontal(lipgloss.Bottom, paragraphA, paragraphB, paragraphC) + +// Vertically join two paragraphs along their center axes +lipgloss.JoinVertical(lipgloss.Center, paragraphA, paragraphB) + +// Horizontally join three paragraphs, with the shorter ones aligning 20% +// from the top of the tallest +lipgloss.JoinHorizontal(0.2, paragraphA, paragraphB, paragraphC) +``` + +### Measuring Width and Height + +Sometimes you’ll want to know the width and height of text blocks when building +your layouts. + +```go +// Render a block of text. +var style = lipgloss.NewStyle(). + Width(40). + Padding(2) +var block string = style.Render(someLongString) + +// Get the actual, physical dimensions of the text block. +width := lipgloss.Width(block) +height := lipgloss.Height(block) + +// Here's a shorthand function. +w, h := lipgloss.Size(block) +``` + +### Placing Text in Whitespace + +Sometimes you’ll simply want to place a block of text in whitespace. + +```go +// Center a paragraph horizontally in a space 80 cells wide. The height of +// the block returned will be as tall as the input paragraph. +block := lipgloss.PlaceHorizontal(80, lipgloss.Center, fancyStyledParagraph) + +// Place a paragraph at the bottom of a space 30 cells tall. The width of +// the text block returned will be as wide as the input paragraph. +block := lipgloss.PlaceVertical(30, lipgloss.Bottom, fancyStyledParagraph) + +// Place a paragraph in the bottom right corner of a 30x80 cell space. +block := lipgloss.Place(30, 80, lipgloss.Right, lipgloss.Bottom, fancyStyledParagraph) +``` + +You can also style the whitespace. For details, see [the docs][docs]. + +## Rendering Tables + +Lip Gloss ships with a table rendering sub-package. + +```go +import "github.com/charmbracelet/lipgloss/table" +``` + +Define some rows of data. + +```go +rows := [][]string{ + {"Chinese", "您好", "你好"}, + {"Japanese", "こんにちは", "やあ"}, + {"Arabic", "أهلين", "أهلا"}, + {"Russian", "Здравствуйте", "Привет"}, + {"Spanish", "Hola", "¿Qué tal?"}, +} +``` + +Use the table package to style and render the table. + +```go +var ( + purple = lipgloss.Color("99") + gray = lipgloss.Color("245") + lightGray = lipgloss.Color("241") + + headerStyle = lipgloss.NewStyle().Foreground(purple).Bold(true).Align(lipgloss.Center) + cellStyle = lipgloss.NewStyle().Padding(0, 1).Width(14) + oddRowStyle = cellStyle.Foreground(gray) + evenRowStyle = cellStyle.Foreground(lightGray) +) + +t := table.New(). + Border(lipgloss.NormalBorder()). + BorderStyle(lipgloss.NewStyle().Foreground(purple)). + StyleFunc(func(row, col int) lipgloss.Style { + switch { + case row == table.HeaderRow: + return headerStyle + case row%2 == 0: + return evenRowStyle + default: + return oddRowStyle + } + }). + Headers("LANGUAGE", "FORMAL", "INFORMAL"). + Rows(rows...) + +// You can also add tables row-by-row +t.Row("English", "You look absolutely fabulous.", "How's it going?") +``` + +Print the table. + +```go +fmt.Println(t) +``` + +![Table Example](https://github.com/charmbracelet/lipgloss/assets/42545625/6e4b70c4-f494-45da-a467-bdd27df30d5d) + +> [!WARNING] +> Table `Rows` need to be declared before `Offset` otherwise it does nothing. + +### Table Borders + +There are helpers to generate tables in markdown or ASCII style: + +#### Markdown Table + +```go +table.New().Border(lipgloss.MarkdownBorder()).BorderTop(false).BorderBottom(false) +``` + +``` +| LANGUAGE | FORMAL | INFORMAL | +|----------|--------------|-----------| +| Chinese | Nǐn hǎo | Nǐ hǎo | +| French | Bonjour | Salut | +| Russian | Zdravstvuyte | Privet | +| Spanish | Hola | ¿Qué tal? | +``` + +#### ASCII Table + +```go +table.New().Border(lipgloss.ASCIIBorder()) +``` + +``` ++----------+--------------+-----------+ +| LANGUAGE | FORMAL | INFORMAL | ++----------+--------------+-----------+ +| Chinese | Nǐn hǎo | Nǐ hǎo | +| French | Bonjour | Salut | +| Russian | Zdravstvuyte | Privet | +| Spanish | Hola | ¿Qué tal? | ++----------+--------------+-----------+ +``` + +For more on tables see [the docs](https://pkg.go.dev/github.com/charmbracelet/lipgloss?tab=doc) and [examples](https://github.com/charmbracelet/lipgloss/tree/master/examples/table). + +## Rendering Lists + +Lip Gloss ships with a list rendering sub-package. + +```go +import "github.com/charmbracelet/lipgloss/list" +``` + +Define a new list. + +```go +l := list.New("A", "B", "C") +``` + +Print the list. + +```go +fmt.Println(l) + +// • A +// • B +// • C +``` + +Lists have the ability to nest. + +```go +l := list.New( + "A", list.New("Artichoke"), + "B", list.New("Baking Flour", "Bananas", "Barley", "Bean Sprouts"), + "C", list.New("Cashew Apple", "Cashews", "Coconut Milk", "Curry Paste", "Currywurst"), + "D", list.New("Dill", "Dragonfruit", "Dried Shrimp"), + "E", list.New("Eggs"), + "F", list.New("Fish Cake", "Furikake"), + "J", list.New("Jicama"), + "K", list.New("Kohlrabi"), + "L", list.New("Leeks", "Lentils", "Licorice Root"), +) +``` + +Print the list. + +```go +fmt.Println(l) +``` + +

+image +

+ +Lists can be customized via their enumeration function as well as using +`lipgloss.Style`s. + +```go +enumeratorStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("99")).MarginRight(1) +itemStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("212")).MarginRight(1) + +l := list.New( + "Glossier", + "Claire’s Boutique", + "Nyx", + "Mac", + "Milk", + ). + Enumerator(list.Roman). + EnumeratorStyle(enumeratorStyle). + ItemStyle(itemStyle) +``` + +Print the list. + +

+List example +

+ +In addition to the predefined enumerators (`Arabic`, `Alphabet`, `Roman`, `Bullet`, `Tree`), +you may also define your own custom enumerator: + +```go +l := list.New("Duck", "Duck", "Duck", "Duck", "Goose", "Duck", "Duck") + +func DuckDuckGooseEnumerator(l list.Items, i int) string { + if l.At(i).Value() == "Goose" { + return "Honk →" + } + return "" +} + +l = l.Enumerator(DuckDuckGooseEnumerator) +``` + +Print the list: + +

+image +

+ +If you need, you can also build lists incrementally: + +```go +l := list.New() + +for i := 0; i < repeat; i++ { + l.Item("Lip Gloss") +} +``` + +## Rendering Trees + +Lip Gloss ships with a tree rendering sub-package. + +```go +import "github.com/charmbracelet/lipgloss/tree" +``` + +Define a new tree. + +```go +t := tree.Root("."). + Child("A", "B", "C") +``` + +Print the tree. + +```go +fmt.Println(t) + +// . +// ├── A +// ├── B +// └── C +``` + +Trees have the ability to nest. + +```go +t := tree.Root("."). + Child("macOS"). + Child( + tree.New(). + Root("Linux"). + Child("NixOS"). + Child("Arch Linux (btw)"). + Child("Void Linux"), + ). + Child( + tree.New(). + Root("BSD"). + Child("FreeBSD"). + Child("OpenBSD"), + ) +``` + +Print the tree. + +```go +fmt.Println(t) +``` + +

+Tree Example (simple) +

+ +Trees can be customized via their enumeration function as well as using +`lipgloss.Style`s. + +```go +enumeratorStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("63")).MarginRight(1) +rootStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("35")) +itemStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("212")) + +t := tree. + Root("⁜ Makeup"). + Child( + "Glossier", + "Fenty Beauty", + tree.New().Child( + "Gloss Bomb Universal Lip Luminizer", + "Hot Cheeks Velour Blushlighter", + ), + "Nyx", + "Mac", + "Milk", + ). + Enumerator(tree.RoundedEnumerator). + EnumeratorStyle(enumeratorStyle). + RootStyle(rootStyle). + ItemStyle(itemStyle) +``` + +Print the tree. + +

+Tree Example (makeup) +

+ +The predefined enumerators for trees are `DefaultEnumerator` and `RoundedEnumerator`. + +If you need, you can also build trees incrementally: + +```go +t := tree.New() + +for i := 0; i < repeat; i++ { + t.Child("Lip Gloss") +} +``` + +--- + +## FAQ + +
+ +Why are things misaligning? Why are borders at the wrong widths? + +

This is most likely due to your locale and encoding, particularly with +regard to Chinese, Japanese, and Korean (for example, zh_CN.UTF-8 +or ja_JP.UTF-8). The most direct way to fix this is to set +RUNEWIDTH_EASTASIAN=0 in your environment.

+ +

For details see https://github.com/charmbracelet/lipgloss/issues/40.

+
+ +
+ +Why isn't Lip Gloss displaying colors? + +

Lip Gloss automatically degrades colors to the best available option in the +given terminal, and if output's not a TTY it will remove color output entirely. +This is common when running tests, CI, or when piping output elsewhere.

+ +

If necessary, you can force a color profile in your tests with +SetColorProfile.

+ +```go +import ( + "github.com/charmbracelet/lipgloss" + "github.com/muesli/termenv" +) + +lipgloss.SetColorProfile(termenv.TrueColor) +``` + +_Note:_ this option limits the flexibility of your application and can cause +ANSI escape codes to be output in cases where that might not be desired. Take +careful note of your use case and environment before choosing to force a color +profile. + +
+ +## What about [Bubble Tea][tea]? + +Lip Gloss doesn’t replace Bubble Tea. Rather, it is an excellent Bubble Tea +companion. It was designed to make assembling terminal user interface views as +simple and fun as possible so that you can focus on building your application +instead of concerning yourself with low-level layout details. + +In simple terms, you can use Lip Gloss to help build your Bubble Tea views. + +[tea]: https://github.com/charmbracelet/tea + +## Under the Hood + +Lip Gloss is built on the excellent [Termenv][termenv] and [Reflow][reflow] +libraries which deal with color and ANSI-aware text operations, respectively. +For many use cases Termenv and Reflow will be sufficient for your needs. + +[termenv]: https://github.com/muesli/termenv +[reflow]: https://github.com/muesli/reflow + +## Rendering Markdown + +For a more document-centric rendering solution with support for things like +lists, tables, and syntax-highlighted code have a look at [Glamour][glamour], +the stylesheet-based Markdown renderer. + +[glamour]: https://github.com/charmbracelet/glamour + +## Contributing + +See [contributing][contribute]. + +[contribute]: https://github.com/charmbracelet/lipgloss/contribute + +## Feedback + +We’d love to hear your thoughts on this project. Feel free to drop us a note! + +- [Twitter](https://twitter.com/charmcli) +- [The Fediverse](https://mastodon.social/@charmcli) +- [Discord](https://charm.sh/chat) + +## License + +[MIT](https://github.com/charmbracelet/lipgloss/raw/master/LICENSE) + +--- + +Part of [Charm](https://charm.sh). + +The Charm logo + +Charm热爱开源 • Charm loves open source + +[docs]: https://pkg.go.dev/github.com/charmbracelet/lipgloss?tab=doc +[wish]: https://github.com/charmbracelet/wish +[ssh-example]: examples/ssh diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/Taskfile.yaml b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/Taskfile.yaml new file mode 100644 index 0000000..0b4a771 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/Taskfile.yaml @@ -0,0 +1,19 @@ +# https://taskfile.dev + +version: '3' + +tasks: + lint: + desc: Run base linters + cmds: + - golangci-lint run + + test: + desc: Run tests + cmds: + - go test ./... {{.CLI_ARGS}} + + test:table: + desc: Run table tests + cmds: + - go test ./table {{.CLI_ARGS}} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/align.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/align.go new file mode 100644 index 0000000..ce654b2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/align.go @@ -0,0 +1,83 @@ +package lipgloss + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" + "github.com/muesli/termenv" +) + +// Perform text alignment. If the string is multi-lined, we also make all lines +// the same width by padding them with spaces. If a termenv style is passed, +// use that to style the spaces added. +func alignTextHorizontal(str string, pos Position, width int, style *termenv.Style) string { + lines, widestLine := getLines(str) + var b strings.Builder + + for i, l := range lines { + lineWidth := ansi.StringWidth(l) + + shortAmount := widestLine - lineWidth // difference from the widest line + shortAmount += max(0, width-(shortAmount+lineWidth)) // difference from the total width, if set + + if shortAmount > 0 { + switch pos { //nolint:exhaustive + case Right: + s := strings.Repeat(" ", shortAmount) + if style != nil { + s = style.Styled(s) + } + l = s + l + case Center: + // Note: remainder goes on the right. + left := shortAmount / 2 //nolint:mnd + right := left + shortAmount%2 //nolint:mnd + + leftSpaces := strings.Repeat(" ", left) + rightSpaces := strings.Repeat(" ", right) + + if style != nil { + leftSpaces = style.Styled(leftSpaces) + rightSpaces = style.Styled(rightSpaces) + } + l = leftSpaces + l + rightSpaces + default: // Left + s := strings.Repeat(" ", shortAmount) + if style != nil { + s = style.Styled(s) + } + l += s + } + } + + b.WriteString(l) + if i < len(lines)-1 { + b.WriteRune('\n') + } + } + + return b.String() +} + +func alignTextVertical(str string, pos Position, height int, _ *termenv.Style) string { + strHeight := strings.Count(str, "\n") + 1 + if height < strHeight { + return str + } + + switch pos { + case Top: + return str + strings.Repeat("\n", height-strHeight) + case Center: + topPadding, bottomPadding := (height-strHeight)/2, (height-strHeight)/2 //nolint:mnd + if strHeight+topPadding+bottomPadding > height { + topPadding-- + } else if strHeight+topPadding+bottomPadding < height { + bottomPadding++ + } + return strings.Repeat("\n", topPadding) + str + strings.Repeat("\n", bottomPadding) + case Bottom: + return strings.Repeat("\n", height-strHeight) + str + } + return str +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_unix.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_unix.go new file mode 100644 index 0000000..d416b8c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_unix.go @@ -0,0 +1,7 @@ +//go:build !windows +// +build !windows + +package lipgloss + +// enableLegacyWindowsANSI is only needed on Windows. +func enableLegacyWindowsANSI() {} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_windows.go new file mode 100644 index 0000000..0cf56e4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ansi_windows.go @@ -0,0 +1,22 @@ +//go:build windows +// +build windows + +package lipgloss + +import ( + "sync" + + "github.com/muesli/termenv" +) + +var enableANSI sync.Once + +// enableANSIColors enables support for ANSI color sequences in the Windows +// default console (cmd.exe and the PowerShell application). Note that this +// only works with Windows 10. Also note that Windows Terminal supports colors +// by default. +func enableLegacyWindowsANSI() { + enableANSI.Do(func() { + _, _ = termenv.EnableWindowsANSIConsole() + }) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/borders.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/borders.go new file mode 100644 index 0000000..b36f874 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/borders.go @@ -0,0 +1,490 @@ +package lipgloss + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" + "github.com/muesli/termenv" + "github.com/rivo/uniseg" +) + +// Border contains a series of values which comprise the various parts of a +// border. +type Border struct { + Top string + Bottom string + Left string + Right string + TopLeft string + TopRight string + BottomLeft string + BottomRight string + MiddleLeft string + MiddleRight string + Middle string + MiddleTop string + MiddleBottom string +} + +// GetTopSize returns the width of the top border. If borders contain runes of +// varying widths, the widest rune is returned. If no border exists on the top +// edge, 0 is returned. +func (b Border) GetTopSize() int { + return getBorderEdgeWidth(b.TopLeft, b.Top, b.TopRight) +} + +// GetRightSize returns the width of the right border. If borders contain +// runes of varying widths, the widest rune is returned. If no border exists on +// the right edge, 0 is returned. +func (b Border) GetRightSize() int { + return getBorderEdgeWidth(b.TopRight, b.Right, b.BottomRight) +} + +// GetBottomSize returns the width of the bottom border. If borders contain +// runes of varying widths, the widest rune is returned. If no border exists on +// the bottom edge, 0 is returned. +func (b Border) GetBottomSize() int { + return getBorderEdgeWidth(b.BottomLeft, b.Bottom, b.BottomRight) +} + +// GetLeftSize returns the width of the left border. If borders contain runes +// of varying widths, the widest rune is returned. If no border exists on the +// left edge, 0 is returned. +func (b Border) GetLeftSize() int { + return getBorderEdgeWidth(b.TopLeft, b.Left, b.BottomLeft) +} + +func getBorderEdgeWidth(borderParts ...string) (maxWidth int) { + for _, piece := range borderParts { + w := maxRuneWidth(piece) + if w > maxWidth { + maxWidth = w + } + } + return maxWidth +} + +var ( + noBorder = Border{} + + normalBorder = Border{ + Top: "─", + Bottom: "─", + Left: "│", + Right: "│", + TopLeft: "┌", + TopRight: "┐", + BottomLeft: "└", + BottomRight: "┘", + MiddleLeft: "├", + MiddleRight: "┤", + Middle: "┼", + MiddleTop: "┬", + MiddleBottom: "┴", + } + + roundedBorder = Border{ + Top: "─", + Bottom: "─", + Left: "│", + Right: "│", + TopLeft: "╭", + TopRight: "╮", + BottomLeft: "╰", + BottomRight: "╯", + MiddleLeft: "├", + MiddleRight: "┤", + Middle: "┼", + MiddleTop: "┬", + MiddleBottom: "┴", + } + + blockBorder = Border{ + Top: "█", + Bottom: "█", + Left: "█", + Right: "█", + TopLeft: "█", + TopRight: "█", + BottomLeft: "█", + BottomRight: "█", + MiddleLeft: "█", + MiddleRight: "█", + Middle: "█", + MiddleTop: "█", + MiddleBottom: "█", + } + + outerHalfBlockBorder = Border{ + Top: "▀", + Bottom: "▄", + Left: "▌", + Right: "▐", + TopLeft: "▛", + TopRight: "▜", + BottomLeft: "▙", + BottomRight: "▟", + } + + innerHalfBlockBorder = Border{ + Top: "▄", + Bottom: "▀", + Left: "▐", + Right: "▌", + TopLeft: "▗", + TopRight: "▖", + BottomLeft: "▝", + BottomRight: "▘", + } + + thickBorder = Border{ + Top: "━", + Bottom: "━", + Left: "┃", + Right: "┃", + TopLeft: "┏", + TopRight: "┓", + BottomLeft: "┗", + BottomRight: "┛", + MiddleLeft: "┣", + MiddleRight: "┫", + Middle: "╋", + MiddleTop: "┳", + MiddleBottom: "┻", + } + + doubleBorder = Border{ + Top: "═", + Bottom: "═", + Left: "║", + Right: "║", + TopLeft: "╔", + TopRight: "╗", + BottomLeft: "╚", + BottomRight: "╝", + MiddleLeft: "╠", + MiddleRight: "╣", + Middle: "╬", + MiddleTop: "╦", + MiddleBottom: "╩", + } + + hiddenBorder = Border{ + Top: " ", + Bottom: " ", + Left: " ", + Right: " ", + TopLeft: " ", + TopRight: " ", + BottomLeft: " ", + BottomRight: " ", + MiddleLeft: " ", + MiddleRight: " ", + Middle: " ", + MiddleTop: " ", + MiddleBottom: " ", + } + + markdownBorder = Border{ + Top: "-", + Bottom: "-", + Left: "|", + Right: "|", + TopLeft: "|", + TopRight: "|", + BottomLeft: "|", + BottomRight: "|", + MiddleLeft: "|", + MiddleRight: "|", + Middle: "|", + MiddleTop: "|", + MiddleBottom: "|", + } + + asciiBorder = Border{ + Top: "-", + Bottom: "-", + Left: "|", + Right: "|", + TopLeft: "+", + TopRight: "+", + BottomLeft: "+", + BottomRight: "+", + MiddleLeft: "+", + MiddleRight: "+", + Middle: "+", + MiddleTop: "+", + MiddleBottom: "+", + } +) + +// NormalBorder returns a standard-type border with a normal weight and 90 +// degree corners. +func NormalBorder() Border { + return normalBorder +} + +// RoundedBorder returns a border with rounded corners. +func RoundedBorder() Border { + return roundedBorder +} + +// BlockBorder returns a border that takes the whole block. +func BlockBorder() Border { + return blockBorder +} + +// OuterHalfBlockBorder returns a half-block border that sits outside the frame. +func OuterHalfBlockBorder() Border { + return outerHalfBlockBorder +} + +// InnerHalfBlockBorder returns a half-block border that sits inside the frame. +func InnerHalfBlockBorder() Border { + return innerHalfBlockBorder +} + +// ThickBorder returns a border that's thicker than the one returned by +// NormalBorder. +func ThickBorder() Border { + return thickBorder +} + +// DoubleBorder returns a border comprised of two thin strokes. +func DoubleBorder() Border { + return doubleBorder +} + +// HiddenBorder returns a border that renders as a series of single-cell +// spaces. It's useful for cases when you want to remove a standard border but +// maintain layout positioning. This said, you can still apply a background +// color to a hidden border. +func HiddenBorder() Border { + return hiddenBorder +} + +// MarkdownBorder return a table border in markdown style. +// +// Make sure to disable top and bottom border for the best result. This will +// ensure that the output is valid markdown. +// +// table.New().Border(lipgloss.MarkdownBorder()).BorderTop(false).BorderBottom(false) +func MarkdownBorder() Border { + return markdownBorder +} + +// ASCIIBorder returns a table border with ASCII characters. +func ASCIIBorder() Border { + return asciiBorder +} + +func (s Style) applyBorder(str string) string { + var ( + border = s.getBorderStyle() + hasTop = s.getAsBool(borderTopKey, false) + hasRight = s.getAsBool(borderRightKey, false) + hasBottom = s.getAsBool(borderBottomKey, false) + hasLeft = s.getAsBool(borderLeftKey, false) + + topFG = s.getAsColor(borderTopForegroundKey) + rightFG = s.getAsColor(borderRightForegroundKey) + bottomFG = s.getAsColor(borderBottomForegroundKey) + leftFG = s.getAsColor(borderLeftForegroundKey) + + topBG = s.getAsColor(borderTopBackgroundKey) + rightBG = s.getAsColor(borderRightBackgroundKey) + bottomBG = s.getAsColor(borderBottomBackgroundKey) + leftBG = s.getAsColor(borderLeftBackgroundKey) + ) + + // If a border is set and no sides have been specifically turned on or off + // render borders on all sides. + if s.implicitBorders() { + hasTop = true + hasRight = true + hasBottom = true + hasLeft = true + } + + // If no border is set or all borders are been disabled, abort. + if border == noBorder || (!hasTop && !hasRight && !hasBottom && !hasLeft) { + return str + } + + lines, width := getLines(str) + + if hasLeft { + if border.Left == "" { + border.Left = " " + } + width += maxRuneWidth(border.Left) + } + + if hasRight && border.Right == "" { + border.Right = " " + } + + // If corners should be rendered but are set with the empty string, fill them + // with a single space. + if hasTop && hasLeft && border.TopLeft == "" { + border.TopLeft = " " + } + if hasTop && hasRight && border.TopRight == "" { + border.TopRight = " " + } + if hasBottom && hasLeft && border.BottomLeft == "" { + border.BottomLeft = " " + } + if hasBottom && hasRight && border.BottomRight == "" { + border.BottomRight = " " + } + + // Figure out which corners we should actually be using based on which + // sides are set to show. + if hasTop { + switch { + case !hasLeft && !hasRight: + border.TopLeft = "" + border.TopRight = "" + case !hasLeft: + border.TopLeft = "" + case !hasRight: + border.TopRight = "" + } + } + if hasBottom { + switch { + case !hasLeft && !hasRight: + border.BottomLeft = "" + border.BottomRight = "" + case !hasLeft: + border.BottomLeft = "" + case !hasRight: + border.BottomRight = "" + } + } + + // For now, limit corners to one rune. + border.TopLeft = getFirstRuneAsString(border.TopLeft) + border.TopRight = getFirstRuneAsString(border.TopRight) + border.BottomRight = getFirstRuneAsString(border.BottomRight) + border.BottomLeft = getFirstRuneAsString(border.BottomLeft) + + var out strings.Builder + + // Render top + if hasTop { + top := renderHorizontalEdge(border.TopLeft, border.Top, border.TopRight, width) + top = s.styleBorder(top, topFG, topBG) + out.WriteString(top) + out.WriteRune('\n') + } + + leftRunes := []rune(border.Left) + leftIndex := 0 + + rightRunes := []rune(border.Right) + rightIndex := 0 + + // Render sides + for i, l := range lines { + if hasLeft { + r := string(leftRunes[leftIndex]) + leftIndex++ + if leftIndex >= len(leftRunes) { + leftIndex = 0 + } + out.WriteString(s.styleBorder(r, leftFG, leftBG)) + } + out.WriteString(l) + if hasRight { + r := string(rightRunes[rightIndex]) + rightIndex++ + if rightIndex >= len(rightRunes) { + rightIndex = 0 + } + out.WriteString(s.styleBorder(r, rightFG, rightBG)) + } + if i < len(lines)-1 { + out.WriteRune('\n') + } + } + + // Render bottom + if hasBottom { + bottom := renderHorizontalEdge(border.BottomLeft, border.Bottom, border.BottomRight, width) + bottom = s.styleBorder(bottom, bottomFG, bottomBG) + out.WriteRune('\n') + out.WriteString(bottom) + } + + return out.String() +} + +// Render the horizontal (top or bottom) portion of a border. +func renderHorizontalEdge(left, middle, right string, width int) string { + if middle == "" { + middle = " " + } + + leftWidth := ansi.StringWidth(left) + rightWidth := ansi.StringWidth(right) + + runes := []rune(middle) + j := 0 + + out := strings.Builder{} + out.WriteString(left) + for i := leftWidth + rightWidth; i < width+rightWidth; { + out.WriteRune(runes[j]) + j++ + if j >= len(runes) { + j = 0 + } + i += ansi.StringWidth(string(runes[j])) + } + out.WriteString(right) + + return out.String() +} + +// Apply foreground and background styling to a border. +func (s Style) styleBorder(border string, fg, bg TerminalColor) string { + if fg == noColor && bg == noColor { + return border + } + + style := termenv.Style{} + + if fg != noColor { + style = style.Foreground(fg.color(s.r)) + } + if bg != noColor { + style = style.Background(bg.color(s.r)) + } + + return style.Styled(border) +} + +func maxRuneWidth(str string) int { + var width int + + state := -1 + for len(str) > 0 { + var w int + _, str, w, state = uniseg.FirstGraphemeClusterInString(str, state) + if w > width { + width = w + } + } + + return width +} + +func getFirstRuneAsString(str string) string { + if str == "" { + return str + } + r := []rune(str) + return string(r[0]) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/color.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/color.go new file mode 100644 index 0000000..6caf3a3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/color.go @@ -0,0 +1,172 @@ +package lipgloss + +import ( + "strconv" + + "github.com/muesli/termenv" +) + +// TerminalColor is a color intended to be rendered in the terminal. +type TerminalColor interface { + color(*Renderer) termenv.Color + RGBA() (r, g, b, a uint32) +} + +var noColor = NoColor{} + +// NoColor is used to specify the absence of color styling. When this is active +// foreground colors will be rendered with the terminal's default text color, +// and background colors will not be drawn at all. +// +// Example usage: +// +// var style = someStyle.Background(lipgloss.NoColor{}) +type NoColor struct{} + +func (NoColor) color(*Renderer) termenv.Color { + return termenv.NoColor{} +} + +// RGBA returns the RGBA value of this color. Because we have to return +// something, despite this color being the absence of color, we're returning +// black with 100% opacity. +// +// Red: 0x0, Green: 0x0, Blue: 0x0, Alpha: 0xFFFF. +// +// Deprecated. +func (n NoColor) RGBA() (r, g, b, a uint32) { + return 0x0, 0x0, 0x0, 0xFFFF //nolint:mnd +} + +// Color specifies a color by hex or ANSI value. For example: +// +// ansiColor := lipgloss.Color("21") +// hexColor := lipgloss.Color("#0000ff") +type Color string + +func (c Color) color(r *Renderer) termenv.Color { + return r.ColorProfile().Color(string(c)) +} + +// RGBA returns the RGBA value of this color. This satisfies the Go Color +// interface. Note that on error we return black with 100% opacity, or: +// +// Red: 0x0, Green: 0x0, Blue: 0x0, Alpha: 0xFFFF. +// +// Deprecated. +func (c Color) RGBA() (r, g, b, a uint32) { + return termenv.ConvertToRGB(c.color(renderer)).RGBA() +} + +// ANSIColor is a color specified by an ANSI color value. It's merely syntactic +// sugar for the more general Color function. Invalid colors will render as +// black. +// +// Example usage: +// +// // These two statements are equivalent. +// colorA := lipgloss.ANSIColor(21) +// colorB := lipgloss.Color("21") +type ANSIColor uint + +func (ac ANSIColor) color(r *Renderer) termenv.Color { + return Color(strconv.FormatUint(uint64(ac), 10)).color(r) +} + +// RGBA returns the RGBA value of this color. This satisfies the Go Color +// interface. Note that on error we return black with 100% opacity, or: +// +// Red: 0x0, Green: 0x0, Blue: 0x0, Alpha: 0xFFFF. +// +// Deprecated. +func (ac ANSIColor) RGBA() (r, g, b, a uint32) { + cf := Color(strconv.FormatUint(uint64(ac), 10)) + return cf.RGBA() +} + +// AdaptiveColor provides color options for light and dark backgrounds. The +// appropriate color will be returned at runtime based on the darkness of the +// terminal background color. +// +// Example usage: +// +// color := lipgloss.AdaptiveColor{Light: "#0000ff", Dark: "#000099"} +type AdaptiveColor struct { + Light string + Dark string +} + +func (ac AdaptiveColor) color(r *Renderer) termenv.Color { + if r.HasDarkBackground() { + return Color(ac.Dark).color(r) + } + return Color(ac.Light).color(r) +} + +// RGBA returns the RGBA value of this color. This satisfies the Go Color +// interface. Note that on error we return black with 100% opacity, or: +// +// Red: 0x0, Green: 0x0, Blue: 0x0, Alpha: 0xFFFF. +// +// Deprecated. +func (ac AdaptiveColor) RGBA() (r, g, b, a uint32) { + return termenv.ConvertToRGB(ac.color(renderer)).RGBA() +} + +// CompleteColor specifies exact values for truecolor, ANSI256, and ANSI color +// profiles. Automatic color degradation will not be performed. +type CompleteColor struct { + TrueColor string + ANSI256 string + ANSI string +} + +func (c CompleteColor) color(r *Renderer) termenv.Color { + p := r.ColorProfile() + switch p { //nolint:exhaustive + case termenv.TrueColor: + return p.Color(c.TrueColor) + case termenv.ANSI256: + return p.Color(c.ANSI256) + case termenv.ANSI: + return p.Color(c.ANSI) + default: + return termenv.NoColor{} + } +} + +// RGBA returns the RGBA value of this color. This satisfies the Go Color +// interface. Note that on error we return black with 100% opacity, or: +// +// Red: 0x0, Green: 0x0, Blue: 0x0, Alpha: 0xFFFF. +// CompleteAdaptiveColor specifies exact values for truecolor, ANSI256, and ANSI color +// +// Deprecated. +func (c CompleteColor) RGBA() (r, g, b, a uint32) { + return termenv.ConvertToRGB(c.color(renderer)).RGBA() +} + +// CompleteAdaptiveColor specifies exact values for truecolor, ANSI256, and ANSI color +// profiles, with separate options for light and dark backgrounds. Automatic +// color degradation will not be performed. +type CompleteAdaptiveColor struct { + Light CompleteColor + Dark CompleteColor +} + +func (cac CompleteAdaptiveColor) color(r *Renderer) termenv.Color { + if r.HasDarkBackground() { + return cac.Dark.color(r) + } + return cac.Light.color(r) +} + +// RGBA returns the RGBA value of this color. This satisfies the Go Color +// interface. Note that on error we return black with 100% opacity, or: +// +// Red: 0x0, Green: 0x0, Blue: 0x0, Alpha: 0xFFFF. +// +// Deprecated. +func (cac CompleteAdaptiveColor) RGBA() (r, g, b, a uint32) { + return termenv.ConvertToRGB(cac.color(renderer)).RGBA() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/get.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/get.go new file mode 100644 index 0000000..422b4ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/get.go @@ -0,0 +1,556 @@ +package lipgloss + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// GetBold returns the style's bold value. If no value is set false is returned. +func (s Style) GetBold() bool { + return s.getAsBool(boldKey, false) +} + +// GetItalic returns the style's italic value. If no value is set false is +// returned. +func (s Style) GetItalic() bool { + return s.getAsBool(italicKey, false) +} + +// GetUnderline returns the style's underline value. If no value is set false is +// returned. +func (s Style) GetUnderline() bool { + return s.getAsBool(underlineKey, false) +} + +// GetStrikethrough returns the style's strikethrough value. If no value is set false +// is returned. +func (s Style) GetStrikethrough() bool { + return s.getAsBool(strikethroughKey, false) +} + +// GetReverse returns the style's reverse value. If no value is set false is +// returned. +func (s Style) GetReverse() bool { + return s.getAsBool(reverseKey, false) +} + +// GetBlink returns the style's blink value. If no value is set false is +// returned. +func (s Style) GetBlink() bool { + return s.getAsBool(blinkKey, false) +} + +// GetFaint returns the style's faint value. If no value is set false is +// returned. +func (s Style) GetFaint() bool { + return s.getAsBool(faintKey, false) +} + +// GetForeground returns the style's foreground color. If no value is set +// NoColor{} is returned. +func (s Style) GetForeground() TerminalColor { + return s.getAsColor(foregroundKey) +} + +// GetBackground returns the style's background color. If no value is set +// NoColor{} is returned. +func (s Style) GetBackground() TerminalColor { + return s.getAsColor(backgroundKey) +} + +// GetWidth returns the style's width setting. If no width is set 0 is +// returned. +func (s Style) GetWidth() int { + return s.getAsInt(widthKey) +} + +// GetHeight returns the style's height setting. If no height is set 0 is +// returned. +func (s Style) GetHeight() int { + return s.getAsInt(heightKey) +} + +// GetAlign returns the style's implicit horizontal alignment setting. +// If no alignment is set Position.Left is returned. +func (s Style) GetAlign() Position { + v := s.getAsPosition(alignHorizontalKey) + if v == Position(0) { + return Left + } + return v +} + +// GetAlignHorizontal returns the style's implicit horizontal alignment setting. +// If no alignment is set Position.Left is returned. +func (s Style) GetAlignHorizontal() Position { + v := s.getAsPosition(alignHorizontalKey) + if v == Position(0) { + return Left + } + return v +} + +// GetAlignVertical returns the style's implicit vertical alignment setting. +// If no alignment is set Position.Top is returned. +func (s Style) GetAlignVertical() Position { + v := s.getAsPosition(alignVerticalKey) + if v == Position(0) { + return Top + } + return v +} + +// GetPadding returns the style's top, right, bottom, and left padding values, +// in that order. 0 is returned for unset values. +func (s Style) GetPadding() (top, right, bottom, left int) { + return s.getAsInt(paddingTopKey), + s.getAsInt(paddingRightKey), + s.getAsInt(paddingBottomKey), + s.getAsInt(paddingLeftKey) +} + +// GetPaddingTop returns the style's top padding. If no value is set 0 is +// returned. +func (s Style) GetPaddingTop() int { + return s.getAsInt(paddingTopKey) +} + +// GetPaddingRight returns the style's right padding. If no value is set 0 is +// returned. +func (s Style) GetPaddingRight() int { + return s.getAsInt(paddingRightKey) +} + +// GetPaddingBottom returns the style's bottom padding. If no value is set 0 is +// returned. +func (s Style) GetPaddingBottom() int { + return s.getAsInt(paddingBottomKey) +} + +// GetPaddingLeft returns the style's left padding. If no value is set 0 is +// returned. +func (s Style) GetPaddingLeft() int { + return s.getAsInt(paddingLeftKey) +} + +// GetHorizontalPadding returns the style's left and right padding. Unset +// values are measured as 0. +func (s Style) GetHorizontalPadding() int { + return s.getAsInt(paddingLeftKey) + s.getAsInt(paddingRightKey) +} + +// GetVerticalPadding returns the style's top and bottom padding. Unset values +// are measured as 0. +func (s Style) GetVerticalPadding() int { + return s.getAsInt(paddingTopKey) + s.getAsInt(paddingBottomKey) +} + +// GetColorWhitespace returns the style's whitespace coloring setting. If no +// value is set false is returned. +func (s Style) GetColorWhitespace() bool { + return s.getAsBool(colorWhitespaceKey, false) +} + +// GetMargin returns the style's top, right, bottom, and left margins, in that +// order. 0 is returned for unset values. +func (s Style) GetMargin() (top, right, bottom, left int) { + return s.getAsInt(marginTopKey), + s.getAsInt(marginRightKey), + s.getAsInt(marginBottomKey), + s.getAsInt(marginLeftKey) +} + +// GetMarginTop returns the style's top margin. If no value is set 0 is +// returned. +func (s Style) GetMarginTop() int { + return s.getAsInt(marginTopKey) +} + +// GetMarginRight returns the style's right margin. If no value is set 0 is +// returned. +func (s Style) GetMarginRight() int { + return s.getAsInt(marginRightKey) +} + +// GetMarginBottom returns the style's bottom margin. If no value is set 0 is +// returned. +func (s Style) GetMarginBottom() int { + return s.getAsInt(marginBottomKey) +} + +// GetMarginLeft returns the style's left margin. If no value is set 0 is +// returned. +func (s Style) GetMarginLeft() int { + return s.getAsInt(marginLeftKey) +} + +// GetHorizontalMargins returns the style's left and right margins. Unset +// values are measured as 0. +func (s Style) GetHorizontalMargins() int { + return s.getAsInt(marginLeftKey) + s.getAsInt(marginRightKey) +} + +// GetVerticalMargins returns the style's top and bottom margins. Unset values +// are measured as 0. +func (s Style) GetVerticalMargins() int { + return s.getAsInt(marginTopKey) + s.getAsInt(marginBottomKey) +} + +// GetBorder returns the style's border style (type Border) and value for the +// top, right, bottom, and left in that order. If no value is set for the +// border style, Border{} is returned. For all other unset values false is +// returned. +func (s Style) GetBorder() (b Border, top, right, bottom, left bool) { + return s.getBorderStyle(), + s.getAsBool(borderTopKey, false), + s.getAsBool(borderRightKey, false), + s.getAsBool(borderBottomKey, false), + s.getAsBool(borderLeftKey, false) +} + +// GetBorderStyle returns the style's border style (type Border). If no value +// is set Border{} is returned. +func (s Style) GetBorderStyle() Border { + return s.getBorderStyle() +} + +// GetBorderTop returns the style's top border setting. If no value is set +// false is returned. +func (s Style) GetBorderTop() bool { + return s.getAsBool(borderTopKey, false) +} + +// GetBorderRight returns the style's right border setting. If no value is set +// false is returned. +func (s Style) GetBorderRight() bool { + return s.getAsBool(borderRightKey, false) +} + +// GetBorderBottom returns the style's bottom border setting. If no value is +// set false is returned. +func (s Style) GetBorderBottom() bool { + return s.getAsBool(borderBottomKey, false) +} + +// GetBorderLeft returns the style's left border setting. If no value is +// set false is returned. +func (s Style) GetBorderLeft() bool { + return s.getAsBool(borderLeftKey, false) +} + +// GetBorderTopForeground returns the style's border top foreground color. If +// no value is set NoColor{} is returned. +func (s Style) GetBorderTopForeground() TerminalColor { + return s.getAsColor(borderTopForegroundKey) +} + +// GetBorderRightForeground returns the style's border right foreground color. +// If no value is set NoColor{} is returned. +func (s Style) GetBorderRightForeground() TerminalColor { + return s.getAsColor(borderRightForegroundKey) +} + +// GetBorderBottomForeground returns the style's border bottom foreground +// color. If no value is set NoColor{} is returned. +func (s Style) GetBorderBottomForeground() TerminalColor { + return s.getAsColor(borderBottomForegroundKey) +} + +// GetBorderLeftForeground returns the style's border left foreground +// color. If no value is set NoColor{} is returned. +func (s Style) GetBorderLeftForeground() TerminalColor { + return s.getAsColor(borderLeftForegroundKey) +} + +// GetBorderTopBackground returns the style's border top background color. If +// no value is set NoColor{} is returned. +func (s Style) GetBorderTopBackground() TerminalColor { + return s.getAsColor(borderTopBackgroundKey) +} + +// GetBorderRightBackground returns the style's border right background color. +// If no value is set NoColor{} is returned. +func (s Style) GetBorderRightBackground() TerminalColor { + return s.getAsColor(borderRightBackgroundKey) +} + +// GetBorderBottomBackground returns the style's border bottom background +// color. If no value is set NoColor{} is returned. +func (s Style) GetBorderBottomBackground() TerminalColor { + return s.getAsColor(borderBottomBackgroundKey) +} + +// GetBorderLeftBackground returns the style's border left background +// color. If no value is set NoColor{} is returned. +func (s Style) GetBorderLeftBackground() TerminalColor { + return s.getAsColor(borderLeftBackgroundKey) +} + +// GetBorderTopWidth returns the width of the top border. If borders contain +// runes of varying widths, the widest rune is returned. If no border exists on +// the top edge, 0 is returned. +// +// Deprecated: This function simply calls Style.GetBorderTopSize. +func (s Style) GetBorderTopWidth() int { + return s.GetBorderTopSize() +} + +// GetBorderTopSize returns the width of the top border. If borders contain +// runes of varying widths, the widest rune is returned. If no border exists on +// the top edge, 0 is returned. +func (s Style) GetBorderTopSize() int { + if !s.getAsBool(borderTopKey, false) && !s.implicitBorders() { + return 0 + } + return s.getBorderStyle().GetTopSize() +} + +// GetBorderLeftSize returns the width of the left border. If borders contain +// runes of varying widths, the widest rune is returned. If no border exists on +// the left edge, 0 is returned. +func (s Style) GetBorderLeftSize() int { + if !s.getAsBool(borderLeftKey, false) && !s.implicitBorders() { + return 0 + } + return s.getBorderStyle().GetLeftSize() +} + +// GetBorderBottomSize returns the width of the bottom border. If borders +// contain runes of varying widths, the widest rune is returned. If no border +// exists on the left edge, 0 is returned. +func (s Style) GetBorderBottomSize() int { + if !s.getAsBool(borderBottomKey, false) && !s.implicitBorders() { + return 0 + } + return s.getBorderStyle().GetBottomSize() +} + +// GetBorderRightSize returns the width of the right border. If borders +// contain runes of varying widths, the widest rune is returned. If no border +// exists on the right edge, 0 is returned. +func (s Style) GetBorderRightSize() int { + if !s.getAsBool(borderRightKey, false) && !s.implicitBorders() { + return 0 + } + return s.getBorderStyle().GetRightSize() +} + +// GetHorizontalBorderSize returns the width of the horizontal borders. If +// borders contain runes of varying widths, the widest rune is returned. If no +// border exists on the horizontal edges, 0 is returned. +func (s Style) GetHorizontalBorderSize() int { + return s.GetBorderLeftSize() + s.GetBorderRightSize() +} + +// GetVerticalBorderSize returns the width of the vertical borders. If +// borders contain runes of varying widths, the widest rune is returned. If no +// border exists on the vertical edges, 0 is returned. +func (s Style) GetVerticalBorderSize() int { + return s.GetBorderTopSize() + s.GetBorderBottomSize() +} + +// GetInline returns the style's inline setting. If no value is set false is +// returned. +func (s Style) GetInline() bool { + return s.getAsBool(inlineKey, false) +} + +// GetMaxWidth returns the style's max width setting. If no value is set 0 is +// returned. +func (s Style) GetMaxWidth() int { + return s.getAsInt(maxWidthKey) +} + +// GetMaxHeight returns the style's max height setting. If no value is set 0 is +// returned. +func (s Style) GetMaxHeight() int { + return s.getAsInt(maxHeightKey) +} + +// GetTabWidth returns the style's tab width setting. If no value is set 4 is +// returned which is the implicit default. +func (s Style) GetTabWidth() int { + return s.getAsInt(tabWidthKey) +} + +// GetUnderlineSpaces returns whether or not the style is set to underline +// spaces. If not value is set false is returned. +func (s Style) GetUnderlineSpaces() bool { + return s.getAsBool(underlineSpacesKey, false) +} + +// GetStrikethroughSpaces returns whether or not the style is set to strikethrough +// spaces. If not value is set false is returned. +func (s Style) GetStrikethroughSpaces() bool { + return s.getAsBool(strikethroughSpacesKey, false) +} + +// GetHorizontalFrameSize returns the sum of the style's horizontal margins, padding +// and border widths. +// +// Provisional: this method may be renamed. +func (s Style) GetHorizontalFrameSize() int { + return s.GetHorizontalMargins() + s.GetHorizontalPadding() + s.GetHorizontalBorderSize() +} + +// GetVerticalFrameSize returns the sum of the style's vertical margins, padding +// and border widths. +// +// Provisional: this method may be renamed. +func (s Style) GetVerticalFrameSize() int { + return s.GetVerticalMargins() + s.GetVerticalPadding() + s.GetVerticalBorderSize() +} + +// GetFrameSize returns the sum of the margins, padding and border width for +// both the horizontal and vertical margins. +func (s Style) GetFrameSize() (x, y int) { + return s.GetHorizontalFrameSize(), s.GetVerticalFrameSize() +} + +// GetTransform returns the transform set on the style. If no transform is set +// nil is returned. +func (s Style) GetTransform() func(string) string { + return s.getAsTransform(transformKey) +} + +// Returns whether or not the given property is set. +func (s Style) isSet(k propKey) bool { + return s.props.has(k) +} + +func (s Style) getAsBool(k propKey, defaultVal bool) bool { + if !s.isSet(k) { + return defaultVal + } + return s.attrs&int(k) != 0 +} + +func (s Style) getAsColor(k propKey) TerminalColor { + if !s.isSet(k) { + return noColor + } + + var c TerminalColor + switch k { //nolint:exhaustive + case foregroundKey: + c = s.fgColor + case backgroundKey: + c = s.bgColor + case marginBackgroundKey: + c = s.marginBgColor + case borderTopForegroundKey: + c = s.borderTopFgColor + case borderRightForegroundKey: + c = s.borderRightFgColor + case borderBottomForegroundKey: + c = s.borderBottomFgColor + case borderLeftForegroundKey: + c = s.borderLeftFgColor + case borderTopBackgroundKey: + c = s.borderTopBgColor + case borderRightBackgroundKey: + c = s.borderRightBgColor + case borderBottomBackgroundKey: + c = s.borderBottomBgColor + case borderLeftBackgroundKey: + c = s.borderLeftBgColor + } + + if c != nil { + return c + } + + return noColor +} + +func (s Style) getAsInt(k propKey) int { + if !s.isSet(k) { + return 0 + } + switch k { //nolint:exhaustive + case widthKey: + return s.width + case heightKey: + return s.height + case paddingTopKey: + return s.paddingTop + case paddingRightKey: + return s.paddingRight + case paddingBottomKey: + return s.paddingBottom + case paddingLeftKey: + return s.paddingLeft + case marginTopKey: + return s.marginTop + case marginRightKey: + return s.marginRight + case marginBottomKey: + return s.marginBottom + case marginLeftKey: + return s.marginLeft + case maxWidthKey: + return s.maxWidth + case maxHeightKey: + return s.maxHeight + case tabWidthKey: + return s.tabWidth + } + return 0 +} + +func (s Style) getAsPosition(k propKey) Position { + if !s.isSet(k) { + return Position(0) + } + switch k { //nolint:exhaustive + case alignHorizontalKey: + return s.alignHorizontal + case alignVerticalKey: + return s.alignVertical + } + return Position(0) +} + +func (s Style) getBorderStyle() Border { + if !s.isSet(borderStyleKey) { + return noBorder + } + return s.borderStyle +} + +// Returns whether or not the style has implicit borders. This happens when +// a border style has been set but no border sides have been explicitly turned +// on or off. +func (s Style) implicitBorders() bool { + var ( + borderStyle = s.getBorderStyle() + topSet = s.isSet(borderTopKey) + rightSet = s.isSet(borderRightKey) + bottomSet = s.isSet(borderBottomKey) + leftSet = s.isSet(borderLeftKey) + ) + return borderStyle != noBorder && !(topSet || rightSet || bottomSet || leftSet) +} + +func (s Style) getAsTransform(propKey) func(string) string { + if !s.isSet(transformKey) { + return nil + } + return s.transform +} + +// Split a string into lines, additionally returning the size of the widest +// line. +func getLines(s string) (lines []string, widest int) { + lines = strings.Split(s, "\n") + + for _, l := range lines { + w := ansi.StringWidth(l) + if widest < w { + widest = w + } + } + + return lines, widest +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/join.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/join.go new file mode 100644 index 0000000..b0a23a5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/join.go @@ -0,0 +1,175 @@ +package lipgloss + +import ( + "math" + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// JoinHorizontal is a utility function for horizontally joining two +// potentially multi-lined strings along a vertical axis. The first argument is +// the position, with 0 being all the way at the top and 1 being all the way +// at the bottom. +// +// If you just want to align to the top, center or bottom you may as well just +// use the helper constants Top, Center, and Bottom. +// +// Example: +// +// blockB := "...\n...\n..." +// blockA := "...\n...\n...\n...\n..." +// +// // Join 20% from the top +// str := lipgloss.JoinHorizontal(0.2, blockA, blockB) +// +// // Join on the top edge +// str := lipgloss.JoinHorizontal(lipgloss.Top, blockA, blockB) +func JoinHorizontal(pos Position, strs ...string) string { + if len(strs) == 0 { + return "" + } + if len(strs) == 1 { + return strs[0] + } + + var ( + // Groups of strings broken into multiple lines + blocks = make([][]string, len(strs)) + + // Max line widths for the above text blocks + maxWidths = make([]int, len(strs)) + + // Height of the tallest block + maxHeight int + ) + + // Break text blocks into lines and get max widths for each text block + for i, str := range strs { + blocks[i], maxWidths[i] = getLines(str) + if len(blocks[i]) > maxHeight { + maxHeight = len(blocks[i]) + } + } + + // Add extra lines to make each side the same height + for i := range blocks { + if len(blocks[i]) >= maxHeight { + continue + } + + extraLines := make([]string, maxHeight-len(blocks[i])) + + switch pos { //nolint:exhaustive + case Top: + blocks[i] = append(blocks[i], extraLines...) + + case Bottom: + blocks[i] = append(extraLines, blocks[i]...) + + default: // Somewhere in the middle + n := len(extraLines) + split := int(math.Round(float64(n) * pos.value())) + top := n - split + bottom := n - top + + blocks[i] = append(extraLines[top:], blocks[i]...) + blocks[i] = append(blocks[i], extraLines[bottom:]...) + } + } + + // Merge lines + var b strings.Builder + for i := range blocks[0] { // remember, all blocks have the same number of members now + for j, block := range blocks { + b.WriteString(block[i]) + + // Also make lines the same length + b.WriteString(strings.Repeat(" ", maxWidths[j]-ansi.StringWidth(block[i]))) + } + if i < len(blocks[0])-1 { + b.WriteRune('\n') + } + } + + return b.String() +} + +// JoinVertical is a utility function for vertically joining two potentially +// multi-lined strings along a horizontal axis. The first argument is the +// position, with 0 being all the way to the left and 1 being all the way to +// the right. +// +// If you just want to align to the left, right or center you may as well just +// use the helper constants Left, Center, and Right. +// +// Example: +// +// blockB := "...\n...\n..." +// blockA := "...\n...\n...\n...\n..." +// +// // Join 20% from the top +// str := lipgloss.JoinVertical(0.2, blockA, blockB) +// +// // Join on the right edge +// str := lipgloss.JoinVertical(lipgloss.Right, blockA, blockB) +func JoinVertical(pos Position, strs ...string) string { + if len(strs) == 0 { + return "" + } + if len(strs) == 1 { + return strs[0] + } + + var ( + blocks = make([][]string, len(strs)) + maxWidth int + ) + + for i := range strs { + var w int + blocks[i], w = getLines(strs[i]) + if w > maxWidth { + maxWidth = w + } + } + + var b strings.Builder + for i, block := range blocks { + for j, line := range block { + w := maxWidth - ansi.StringWidth(line) + + switch pos { //nolint:exhaustive + case Left: + b.WriteString(line) + b.WriteString(strings.Repeat(" ", w)) + + case Right: + b.WriteString(strings.Repeat(" ", w)) + b.WriteString(line) + + default: // Somewhere in the middle + if w < 1 { + b.WriteString(line) + break + } + + split := int(math.Round(float64(w) * pos.value())) + right := w - split + left := w - right + + b.WriteString(strings.Repeat(" ", left)) + b.WriteString(line) + b.WriteString(strings.Repeat(" ", right)) + } + + // Write a newline as long as we're not on the last line of the + // last block. + if !(i == len(blocks)-1 && j == len(block)-1) { + b.WriteRune('\n') + } + } + } + + return b.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/position.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/position.go new file mode 100644 index 0000000..185f5af --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/position.go @@ -0,0 +1,154 @@ +package lipgloss + +import ( + "math" + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// Position represents a position along a horizontal or vertical axis. It's in +// situations where an axis is involved, like alignment, joining, placement and +// so on. +// +// A value of 0 represents the start (the left or top) and 1 represents the end +// (the right or bottom). 0.5 represents the center. +// +// There are constants Top, Bottom, Center, Left and Right in this package that +// can be used to aid readability. +type Position float64 + +func (p Position) value() float64 { + return math.Min(1, math.Max(0, float64(p))) +} + +// Position aliases. +const ( + Top Position = 0.0 + Bottom Position = 1.0 + Center Position = 0.5 + Left Position = 0.0 + Right Position = 1.0 +) + +// Place places a string or text block vertically in an unstyled box of a given +// width or height. +func Place(width, height int, hPos, vPos Position, str string, opts ...WhitespaceOption) string { + return renderer.Place(width, height, hPos, vPos, str, opts...) +} + +// Place places a string or text block vertically in an unstyled box of a given +// width or height. +func (r *Renderer) Place(width, height int, hPos, vPos Position, str string, opts ...WhitespaceOption) string { + return r.PlaceVertical(height, vPos, r.PlaceHorizontal(width, hPos, str, opts...), opts...) +} + +// PlaceHorizontal places a string or text block horizontally in an unstyled +// block of a given width. If the given width is shorter than the max width of +// the string (measured by its longest line) this will be a noop. +func PlaceHorizontal(width int, pos Position, str string, opts ...WhitespaceOption) string { + return renderer.PlaceHorizontal(width, pos, str, opts...) +} + +// PlaceHorizontal places a string or text block horizontally in an unstyled +// block of a given width. If the given width is shorter than the max width of +// the string (measured by its longest line) this will be a noöp. +func (r *Renderer) PlaceHorizontal(width int, pos Position, str string, opts ...WhitespaceOption) string { + lines, contentWidth := getLines(str) + gap := width - contentWidth + + if gap <= 0 { + return str + } + + ws := newWhitespace(r, opts...) + + var b strings.Builder + for i, l := range lines { + // Is this line shorter than the longest line? + short := max(0, contentWidth-ansi.StringWidth(l)) + + switch pos { //nolint:exhaustive + case Left: + b.WriteString(l) + b.WriteString(ws.render(gap + short)) + + case Right: + b.WriteString(ws.render(gap + short)) + b.WriteString(l) + + default: // somewhere in the middle + totalGap := gap + short + + split := int(math.Round(float64(totalGap) * pos.value())) + left := totalGap - split + right := totalGap - left + + b.WriteString(ws.render(left)) + b.WriteString(l) + b.WriteString(ws.render(right)) + } + + if i < len(lines)-1 { + b.WriteRune('\n') + } + } + + return b.String() +} + +// PlaceVertical places a string or text block vertically in an unstyled block +// of a given height. If the given height is shorter than the height of the +// string (measured by its newlines) then this will be a noop. +func PlaceVertical(height int, pos Position, str string, opts ...WhitespaceOption) string { + return renderer.PlaceVertical(height, pos, str, opts...) +} + +// PlaceVertical places a string or text block vertically in an unstyled block +// of a given height. If the given height is shorter than the height of the +// string (measured by its newlines) then this will be a noöp. +func (r *Renderer) PlaceVertical(height int, pos Position, str string, opts ...WhitespaceOption) string { + contentHeight := strings.Count(str, "\n") + 1 + gap := height - contentHeight + + if gap <= 0 { + return str + } + + ws := newWhitespace(r, opts...) + + _, width := getLines(str) + emptyLine := ws.render(width) + b := strings.Builder{} + + switch pos { //nolint:exhaustive + case Top: + b.WriteString(str) + b.WriteRune('\n') + for i := 0; i < gap; i++ { + b.WriteString(emptyLine) + if i < gap-1 { + b.WriteRune('\n') + } + } + + case Bottom: + b.WriteString(strings.Repeat(emptyLine+"\n", gap)) + b.WriteString(str) + + default: // Somewhere in the middle + split := int(math.Round(float64(gap) * pos.value())) + top := gap - split + bottom := gap - top + + b.WriteString(strings.Repeat(emptyLine+"\n", top)) + b.WriteString(str) + + for i := 0; i < bottom; i++ { + b.WriteRune('\n') + b.WriteString(emptyLine) + } + } + + return b.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ranges.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ranges.go new file mode 100644 index 0000000..d171699 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/ranges.go @@ -0,0 +1,48 @@ +package lipgloss + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// StyleRanges allows to, given a string, style ranges of it differently. +// The function will take into account existing styles. +// Ranges should not overlap. +func StyleRanges(s string, ranges ...Range) string { + if len(ranges) == 0 { + return s + } + + var buf strings.Builder + lastIdx := 0 + stripped := ansi.Strip(s) + + // Use Truncate and TruncateLeft to style match.MatchedIndexes without + // losing the original option style: + for _, rng := range ranges { + // Add the text before this match + if rng.Start > lastIdx { + buf.WriteString(ansi.Cut(s, lastIdx, rng.Start)) + } + // Add the matched range with its highlight + buf.WriteString(rng.Style.Render(ansi.Cut(stripped, rng.Start, rng.End))) + lastIdx = rng.End + } + + // Add any remaining text after the last match + buf.WriteString(ansi.TruncateLeft(s, lastIdx, "")) + + return buf.String() +} + +// NewRange returns a range that can be used with [StyleRanges]. +func NewRange(start, end int, style Style) Range { + return Range{start, end, style} +} + +// Range to be used with [StyleRanges]. +type Range struct { + Start, End int + Style Style +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/renderer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/renderer.go new file mode 100644 index 0000000..233aa7c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/renderer.go @@ -0,0 +1,181 @@ +package lipgloss + +import ( + "io" + "sync" + + "github.com/muesli/termenv" +) + +// We're manually creating the struct here to avoid initializing the output and +// query the terminal multiple times. +var renderer = &Renderer{ + output: termenv.DefaultOutput(), +} + +// Renderer is a lipgloss terminal renderer. +type Renderer struct { + output *termenv.Output + colorProfile termenv.Profile + hasDarkBackground bool + + getColorProfile sync.Once + explicitColorProfile bool + + getBackgroundColor sync.Once + explicitBackgroundColor bool + + mtx sync.RWMutex +} + +// DefaultRenderer returns the default renderer. +func DefaultRenderer() *Renderer { + return renderer +} + +// SetDefaultRenderer sets the default global renderer. +func SetDefaultRenderer(r *Renderer) { + renderer = r +} + +// NewRenderer creates a new Renderer. +// +// w will be used to determine the terminal's color capabilities. +func NewRenderer(w io.Writer, opts ...termenv.OutputOption) *Renderer { + r := &Renderer{ + output: termenv.NewOutput(w, opts...), + } + return r +} + +// Output returns the termenv output. +func (r *Renderer) Output() *termenv.Output { + r.mtx.RLock() + defer r.mtx.RUnlock() + return r.output +} + +// SetOutput sets the termenv output. +func (r *Renderer) SetOutput(o *termenv.Output) { + r.mtx.Lock() + defer r.mtx.Unlock() + r.output = o +} + +// ColorProfile returns the detected termenv color profile. +func (r *Renderer) ColorProfile() termenv.Profile { + r.mtx.RLock() + defer r.mtx.RUnlock() + + if !r.explicitColorProfile { + r.getColorProfile.Do(func() { + // NOTE: we don't need to lock here because sync.Once provides its + // own locking mechanism. + r.colorProfile = r.output.EnvColorProfile() + }) + } + + return r.colorProfile +} + +// ColorProfile returns the detected termenv color profile. +func ColorProfile() termenv.Profile { + return renderer.ColorProfile() +} + +// SetColorProfile sets the color profile on the renderer. This function exists +// mostly for testing purposes so that you can assure you're testing against +// a specific profile. +// +// Outside of testing you likely won't want to use this function as the color +// profile will detect and cache the terminal's color capabilities and choose +// the best available profile. +// +// Available color profiles are: +// +// termenv.Ascii // no color, 1-bit +// termenv.ANSI //16 colors, 4-bit +// termenv.ANSI256 // 256 colors, 8-bit +// termenv.TrueColor // 16,777,216 colors, 24-bit +// +// This function is thread-safe. +func (r *Renderer) SetColorProfile(p termenv.Profile) { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.colorProfile = p + r.explicitColorProfile = true +} + +// SetColorProfile sets the color profile on the default renderer. This +// function exists mostly for testing purposes so that you can assure you're +// testing against a specific profile. +// +// Outside of testing you likely won't want to use this function as the color +// profile will detect and cache the terminal's color capabilities and choose +// the best available profile. +// +// Available color profiles are: +// +// termenv.Ascii // no color, 1-bit +// termenv.ANSI //16 colors, 4-bit +// termenv.ANSI256 // 256 colors, 8-bit +// termenv.TrueColor // 16,777,216 colors, 24-bit +// +// This function is thread-safe. +func SetColorProfile(p termenv.Profile) { + renderer.SetColorProfile(p) +} + +// HasDarkBackground returns whether or not the terminal has a dark background. +func HasDarkBackground() bool { + return renderer.HasDarkBackground() +} + +// HasDarkBackground returns whether or not the renderer will render to a dark +// background. A dark background can either be auto-detected, or set explicitly +// on the renderer. +func (r *Renderer) HasDarkBackground() bool { + r.mtx.RLock() + defer r.mtx.RUnlock() + + if !r.explicitBackgroundColor { + r.getBackgroundColor.Do(func() { + // NOTE: we don't need to lock here because sync.Once provides its + // own locking mechanism. + r.hasDarkBackground = r.output.HasDarkBackground() + }) + } + + return r.hasDarkBackground +} + +// SetHasDarkBackground sets the background color detection value for the +// default renderer. This function exists mostly for testing purposes so that +// you can assure you're testing against a specific background color setting. +// +// Outside of testing you likely won't want to use this function as the +// backgrounds value will be automatically detected and cached against the +// terminal's current background color setting. +// +// This function is thread-safe. +func SetHasDarkBackground(b bool) { + renderer.SetHasDarkBackground(b) +} + +// SetHasDarkBackground sets the background color detection value on the +// renderer. This function exists mostly for testing purposes so that you can +// assure you're testing against a specific background color setting. +// +// Outside of testing you likely won't want to use this function as the +// backgrounds value will be automatically detected and cached against the +// terminal's current background color setting. +// +// This function is thread-safe. +func (r *Renderer) SetHasDarkBackground(b bool) { + r.mtx.Lock() + defer r.mtx.Unlock() + + r.hasDarkBackground = b + r.explicitBackgroundColor = true +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/runes.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/runes.go new file mode 100644 index 0000000..7a49e32 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/runes.go @@ -0,0 +1,43 @@ +package lipgloss + +import ( + "strings" +) + +// StyleRunes apply a given style to runes at the given indices in the string. +// Note that you must provide styling options for both matched and unmatched +// runes. Indices out of bounds will be ignored. +func StyleRunes(str string, indices []int, matched, unmatched Style) string { + // Convert slice of indices to a map for easier lookups + m := make(map[int]struct{}) + for _, i := range indices { + m[i] = struct{}{} + } + + var ( + out strings.Builder + group strings.Builder + style Style + runes = []rune(str) + ) + + for i, r := range runes { + group.WriteRune(r) + + _, matches := m[i] + _, nextMatches := m[i+1] + + if matches != nextMatches || i == len(runes)-1 { + // Flush + if matches { + style = matched + } else { + style = unmatched + } + out.WriteString(style.Render(group.String())) + group.Reset() + } + } + + return out.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/set.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/set.go new file mode 100644 index 0000000..fde38fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/set.go @@ -0,0 +1,799 @@ +package lipgloss + +// Set a value on the underlying rules map. +func (s *Style) set(key propKey, value interface{}) { + // We don't allow negative integers on any of our other values, so just keep + // them at zero or above. We could use uints instead, but the + // conversions are a little tedious, so we're sticking with ints for + // sake of usability. + switch key { //nolint:exhaustive + case foregroundKey: + s.fgColor = colorOrNil(value) + case backgroundKey: + s.bgColor = colorOrNil(value) + case widthKey: + s.width = max(0, value.(int)) + case heightKey: + s.height = max(0, value.(int)) + case alignHorizontalKey: + s.alignHorizontal = value.(Position) + case alignVerticalKey: + s.alignVertical = value.(Position) + case paddingTopKey: + s.paddingTop = max(0, value.(int)) + case paddingRightKey: + s.paddingRight = max(0, value.(int)) + case paddingBottomKey: + s.paddingBottom = max(0, value.(int)) + case paddingLeftKey: + s.paddingLeft = max(0, value.(int)) + case marginTopKey: + s.marginTop = max(0, value.(int)) + case marginRightKey: + s.marginRight = max(0, value.(int)) + case marginBottomKey: + s.marginBottom = max(0, value.(int)) + case marginLeftKey: + s.marginLeft = max(0, value.(int)) + case marginBackgroundKey: + s.marginBgColor = colorOrNil(value) + case borderStyleKey: + s.borderStyle = value.(Border) + case borderTopForegroundKey: + s.borderTopFgColor = colorOrNil(value) + case borderRightForegroundKey: + s.borderRightFgColor = colorOrNil(value) + case borderBottomForegroundKey: + s.borderBottomFgColor = colorOrNil(value) + case borderLeftForegroundKey: + s.borderLeftFgColor = colorOrNil(value) + case borderTopBackgroundKey: + s.borderTopBgColor = colorOrNil(value) + case borderRightBackgroundKey: + s.borderRightBgColor = colorOrNil(value) + case borderBottomBackgroundKey: + s.borderBottomBgColor = colorOrNil(value) + case borderLeftBackgroundKey: + s.borderLeftBgColor = colorOrNil(value) + case maxWidthKey: + s.maxWidth = max(0, value.(int)) + case maxHeightKey: + s.maxHeight = max(0, value.(int)) + case tabWidthKey: + // TabWidth is the only property that may have a negative value (and + // that negative value can be no less than -1). + s.tabWidth = value.(int) + case transformKey: + s.transform = value.(func(string) string) + default: + if v, ok := value.(bool); ok { //nolint:nestif + if v { + s.attrs |= int(key) + } else { + s.attrs &^= int(key) + } + } else if attrs, ok := value.(int); ok { + // bool attrs + if attrs&int(key) != 0 { + s.attrs |= int(key) + } else { + s.attrs &^= int(key) + } + } + } + + // Set the prop on + s.props = s.props.set(key) +} + +// setFrom sets the property from another style. +func (s *Style) setFrom(key propKey, i Style) { + switch key { //nolint:exhaustive + case foregroundKey: + s.set(foregroundKey, i.fgColor) + case backgroundKey: + s.set(backgroundKey, i.bgColor) + case widthKey: + s.set(widthKey, i.width) + case heightKey: + s.set(heightKey, i.height) + case alignHorizontalKey: + s.set(alignHorizontalKey, i.alignHorizontal) + case alignVerticalKey: + s.set(alignVerticalKey, i.alignVertical) + case paddingTopKey: + s.set(paddingTopKey, i.paddingTop) + case paddingRightKey: + s.set(paddingRightKey, i.paddingRight) + case paddingBottomKey: + s.set(paddingBottomKey, i.paddingBottom) + case paddingLeftKey: + s.set(paddingLeftKey, i.paddingLeft) + case marginTopKey: + s.set(marginTopKey, i.marginTop) + case marginRightKey: + s.set(marginRightKey, i.marginRight) + case marginBottomKey: + s.set(marginBottomKey, i.marginBottom) + case marginLeftKey: + s.set(marginLeftKey, i.marginLeft) + case marginBackgroundKey: + s.set(marginBackgroundKey, i.marginBgColor) + case borderStyleKey: + s.set(borderStyleKey, i.borderStyle) + case borderTopForegroundKey: + s.set(borderTopForegroundKey, i.borderTopFgColor) + case borderRightForegroundKey: + s.set(borderRightForegroundKey, i.borderRightFgColor) + case borderBottomForegroundKey: + s.set(borderBottomForegroundKey, i.borderBottomFgColor) + case borderLeftForegroundKey: + s.set(borderLeftForegroundKey, i.borderLeftFgColor) + case borderTopBackgroundKey: + s.set(borderTopBackgroundKey, i.borderTopBgColor) + case borderRightBackgroundKey: + s.set(borderRightBackgroundKey, i.borderRightBgColor) + case borderBottomBackgroundKey: + s.set(borderBottomBackgroundKey, i.borderBottomBgColor) + case borderLeftBackgroundKey: + s.set(borderLeftBackgroundKey, i.borderLeftBgColor) + case maxWidthKey: + s.set(maxWidthKey, i.maxWidth) + case maxHeightKey: + s.set(maxHeightKey, i.maxHeight) + case tabWidthKey: + s.set(tabWidthKey, i.tabWidth) + case transformKey: + s.set(transformKey, i.transform) + default: + // Set attributes for set bool properties + s.set(key, i.attrs) + } +} + +func colorOrNil(c interface{}) TerminalColor { + if c, ok := c.(TerminalColor); ok { + return c + } + return nil +} + +// Bold sets a bold formatting rule. +func (s Style) Bold(v bool) Style { + s.set(boldKey, v) + return s +} + +// Italic sets an italic formatting rule. In some terminal emulators this will +// render with "reverse" coloring if not italic font variant is available. +func (s Style) Italic(v bool) Style { + s.set(italicKey, v) + return s +} + +// Underline sets an underline rule. By default, underlines will not be drawn on +// whitespace like margins and padding. To change this behavior set +// UnderlineSpaces. +func (s Style) Underline(v bool) Style { + s.set(underlineKey, v) + return s +} + +// Strikethrough sets a strikethrough rule. By default, strikes will not be +// drawn on whitespace like margins and padding. To change this behavior set +// StrikethroughSpaces. +func (s Style) Strikethrough(v bool) Style { + s.set(strikethroughKey, v) + return s +} + +// Reverse sets a rule for inverting foreground and background colors. +func (s Style) Reverse(v bool) Style { + s.set(reverseKey, v) + return s +} + +// Blink sets a rule for blinking foreground text. +func (s Style) Blink(v bool) Style { + s.set(blinkKey, v) + return s +} + +// Faint sets a rule for rendering the foreground color in a dimmer shade. +func (s Style) Faint(v bool) Style { + s.set(faintKey, v) + return s +} + +// Foreground sets a foreground color. +// +// // Sets the foreground to blue +// s := lipgloss.NewStyle().Foreground(lipgloss.Color("#0000ff")) +// +// // Removes the foreground color +// s.Foreground(lipgloss.NoColor) +func (s Style) Foreground(c TerminalColor) Style { + s.set(foregroundKey, c) + return s +} + +// Background sets a background color. +func (s Style) Background(c TerminalColor) Style { + s.set(backgroundKey, c) + return s +} + +// Width sets the width of the block before applying margins. The width, if +// set, also determines where text will wrap. +func (s Style) Width(i int) Style { + s.set(widthKey, i) + return s +} + +// Height sets the height of the block before applying margins. If the height of +// the text block is less than this value after applying padding (or not), the +// block will be set to this height. +func (s Style) Height(i int) Style { + s.set(heightKey, i) + return s +} + +// Align is a shorthand method for setting horizontal and vertical alignment. +// +// With one argument, the position value is applied to the horizontal alignment. +// +// With two arguments, the value is applied to the horizontal and vertical +// alignments, in that order. +func (s Style) Align(p ...Position) Style { + if len(p) > 0 { + s.set(alignHorizontalKey, p[0]) + } + if len(p) > 1 { + s.set(alignVerticalKey, p[1]) + } + return s +} + +// AlignHorizontal sets a horizontal text alignment rule. +func (s Style) AlignHorizontal(p Position) Style { + s.set(alignHorizontalKey, p) + return s +} + +// AlignVertical sets a vertical text alignment rule. +func (s Style) AlignVertical(p Position) Style { + s.set(alignVerticalKey, p) + return s +} + +// Padding is a shorthand method for setting padding on all sides at once. +// +// With one argument, the value is applied to all sides. +// +// With two arguments, the value is applied to the vertical and horizontal +// sides, in that order. +// +// With three arguments, the value is applied to the top side, the horizontal +// sides, and the bottom side, in that order. +// +// With four arguments, the value is applied clockwise starting from the top +// side, followed by the right side, then the bottom, and finally the left. +// +// With more than four arguments no padding will be added. +func (s Style) Padding(i ...int) Style { + top, right, bottom, left, ok := whichSidesInt(i...) + if !ok { + return s + } + + s.set(paddingTopKey, top) + s.set(paddingRightKey, right) + s.set(paddingBottomKey, bottom) + s.set(paddingLeftKey, left) + return s +} + +// PaddingLeft adds padding on the left. +func (s Style) PaddingLeft(i int) Style { + s.set(paddingLeftKey, i) + return s +} + +// PaddingRight adds padding on the right. +func (s Style) PaddingRight(i int) Style { + s.set(paddingRightKey, i) + return s +} + +// PaddingTop adds padding to the top of the block. +func (s Style) PaddingTop(i int) Style { + s.set(paddingTopKey, i) + return s +} + +// PaddingBottom adds padding to the bottom of the block. +func (s Style) PaddingBottom(i int) Style { + s.set(paddingBottomKey, i) + return s +} + +// ColorWhitespace determines whether or not the background color should be +// applied to the padding. This is true by default as it's more than likely the +// desired and expected behavior, but it can be disabled for certain graphic +// effects. +// +// Deprecated: Just use margins and padding. +func (s Style) ColorWhitespace(v bool) Style { + s.set(colorWhitespaceKey, v) + return s +} + +// Margin is a shorthand method for setting margins on all sides at once. +// +// With one argument, the value is applied to all sides. +// +// With two arguments, the value is applied to the vertical and horizontal +// sides, in that order. +// +// With three arguments, the value is applied to the top side, the horizontal +// sides, and the bottom side, in that order. +// +// With four arguments, the value is applied clockwise starting from the top +// side, followed by the right side, then the bottom, and finally the left. +// +// With more than four arguments no margin will be added. +func (s Style) Margin(i ...int) Style { + top, right, bottom, left, ok := whichSidesInt(i...) + if !ok { + return s + } + + s.set(marginTopKey, top) + s.set(marginRightKey, right) + s.set(marginBottomKey, bottom) + s.set(marginLeftKey, left) + return s +} + +// MarginLeft sets the value of the left margin. +func (s Style) MarginLeft(i int) Style { + s.set(marginLeftKey, i) + return s +} + +// MarginRight sets the value of the right margin. +func (s Style) MarginRight(i int) Style { + s.set(marginRightKey, i) + return s +} + +// MarginTop sets the value of the top margin. +func (s Style) MarginTop(i int) Style { + s.set(marginTopKey, i) + return s +} + +// MarginBottom sets the value of the bottom margin. +func (s Style) MarginBottom(i int) Style { + s.set(marginBottomKey, i) + return s +} + +// MarginBackground sets the background color of the margin. Note that this is +// also set when inheriting from a style with a background color. In that case +// the background color on that style will set the margin color on this style. +func (s Style) MarginBackground(c TerminalColor) Style { + s.set(marginBackgroundKey, c) + return s +} + +// Border is shorthand for setting the border style and which sides should +// have a border at once. The variadic argument sides works as follows: +// +// With one value, the value is applied to all sides. +// +// With two values, the values are applied to the vertical and horizontal +// sides, in that order. +// +// With three values, the values are applied to the top side, the horizontal +// sides, and the bottom side, in that order. +// +// With four values, the values are applied clockwise starting from the top +// side, followed by the right side, then the bottom, and finally the left. +// +// With more than four arguments the border will be applied to all sides. +// +// Examples: +// +// // Applies borders to the top and bottom only +// lipgloss.NewStyle().Border(lipgloss.NormalBorder(), true, false) +// +// // Applies rounded borders to the right and bottom only +// lipgloss.NewStyle().Border(lipgloss.RoundedBorder(), false, true, true, false) +func (s Style) Border(b Border, sides ...bool) Style { + s.set(borderStyleKey, b) + + top, right, bottom, left, ok := whichSidesBool(sides...) + if !ok { + top = true + right = true + bottom = true + left = true + } + + s.set(borderTopKey, top) + s.set(borderRightKey, right) + s.set(borderBottomKey, bottom) + s.set(borderLeftKey, left) + + return s +} + +// BorderStyle defines the Border on a style. A Border contains a series of +// definitions for the sides and corners of a border. +// +// Note that if border visibility has not been set for any sides when setting +// the border style, the border will be enabled for all sides during rendering. +// +// You can define border characters as you'd like, though several default +// styles are included: NormalBorder(), RoundedBorder(), BlockBorder(), +// OuterHalfBlockBorder(), InnerHalfBlockBorder(), ThickBorder(), +// and DoubleBorder(). +// +// Example: +// +// lipgloss.NewStyle().BorderStyle(lipgloss.ThickBorder()) +func (s Style) BorderStyle(b Border) Style { + s.set(borderStyleKey, b) + return s +} + +// BorderTop determines whether or not to draw a top border. +func (s Style) BorderTop(v bool) Style { + s.set(borderTopKey, v) + return s +} + +// BorderRight determines whether or not to draw a right border. +func (s Style) BorderRight(v bool) Style { + s.set(borderRightKey, v) + return s +} + +// BorderBottom determines whether or not to draw a bottom border. +func (s Style) BorderBottom(v bool) Style { + s.set(borderBottomKey, v) + return s +} + +// BorderLeft determines whether or not to draw a left border. +func (s Style) BorderLeft(v bool) Style { + s.set(borderLeftKey, v) + return s +} + +// BorderForeground is a shorthand function for setting all of the +// foreground colors of the borders at once. The arguments work as follows: +// +// With one argument, the argument is applied to all sides. +// +// With two arguments, the arguments are applied to the vertical and horizontal +// sides, in that order. +// +// With three arguments, the arguments are applied to the top side, the +// horizontal sides, and the bottom side, in that order. +// +// With four arguments, the arguments are applied clockwise starting from the +// top side, followed by the right side, then the bottom, and finally the left. +// +// With more than four arguments nothing will be set. +func (s Style) BorderForeground(c ...TerminalColor) Style { + if len(c) == 0 { + return s + } + + top, right, bottom, left, ok := whichSidesColor(c...) + if !ok { + return s + } + + s.set(borderTopForegroundKey, top) + s.set(borderRightForegroundKey, right) + s.set(borderBottomForegroundKey, bottom) + s.set(borderLeftForegroundKey, left) + + return s +} + +// BorderTopForeground set the foreground color for the top of the border. +func (s Style) BorderTopForeground(c TerminalColor) Style { + s.set(borderTopForegroundKey, c) + return s +} + +// BorderRightForeground sets the foreground color for the right side of the +// border. +func (s Style) BorderRightForeground(c TerminalColor) Style { + s.set(borderRightForegroundKey, c) + return s +} + +// BorderBottomForeground sets the foreground color for the bottom of the +// border. +func (s Style) BorderBottomForeground(c TerminalColor) Style { + s.set(borderBottomForegroundKey, c) + return s +} + +// BorderLeftForeground sets the foreground color for the left side of the +// border. +func (s Style) BorderLeftForeground(c TerminalColor) Style { + s.set(borderLeftForegroundKey, c) + return s +} + +// BorderBackground is a shorthand function for setting all of the +// background colors of the borders at once. The arguments work as follows: +// +// With one argument, the argument is applied to all sides. +// +// With two arguments, the arguments are applied to the vertical and horizontal +// sides, in that order. +// +// With three arguments, the arguments are applied to the top side, the +// horizontal sides, and the bottom side, in that order. +// +// With four arguments, the arguments are applied clockwise starting from the +// top side, followed by the right side, then the bottom, and finally the left. +// +// With more than four arguments nothing will be set. +func (s Style) BorderBackground(c ...TerminalColor) Style { + if len(c) == 0 { + return s + } + + top, right, bottom, left, ok := whichSidesColor(c...) + if !ok { + return s + } + + s.set(borderTopBackgroundKey, top) + s.set(borderRightBackgroundKey, right) + s.set(borderBottomBackgroundKey, bottom) + s.set(borderLeftBackgroundKey, left) + + return s +} + +// BorderTopBackground sets the background color of the top of the border. +func (s Style) BorderTopBackground(c TerminalColor) Style { + s.set(borderTopBackgroundKey, c) + return s +} + +// BorderRightBackground sets the background color of right side the border. +func (s Style) BorderRightBackground(c TerminalColor) Style { + s.set(borderRightBackgroundKey, c) + return s +} + +// BorderBottomBackground sets the background color of the bottom of the +// border. +func (s Style) BorderBottomBackground(c TerminalColor) Style { + s.set(borderBottomBackgroundKey, c) + return s +} + +// BorderLeftBackground set the background color of the left side of the +// border. +func (s Style) BorderLeftBackground(c TerminalColor) Style { + s.set(borderLeftBackgroundKey, c) + return s +} + +// Inline makes rendering output one line and disables the rendering of +// margins, padding and borders. This is useful when you need a style to apply +// only to font rendering and don't want it to change any physical dimensions. +// It works well with Style.MaxWidth. +// +// Because this in intended to be used at the time of render, this method will +// not mutate the style and instead return a copy. +// +// Example: +// +// var userInput string = "..." +// var userStyle = text.Style{ /* ... */ } +// fmt.Println(userStyle.Inline(true).Render(userInput)) +func (s Style) Inline(v bool) Style { + o := s // copy + o.set(inlineKey, v) + return o +} + +// MaxWidth applies a max width to a given style. This is useful in enforcing +// a certain width at render time, particularly with arbitrary strings and +// styles. +// +// Because this in intended to be used at the time of render, this method will +// not mutate the style and instead return a copy. +// +// Example: +// +// var userInput string = "..." +// var userStyle = text.Style{ /* ... */ } +// fmt.Println(userStyle.MaxWidth(16).Render(userInput)) +func (s Style) MaxWidth(n int) Style { + o := s // copy + o.set(maxWidthKey, n) + return o +} + +// MaxHeight applies a max height to a given style. This is useful in enforcing +// a certain height at render time, particularly with arbitrary strings and +// styles. +// +// Because this in intended to be used at the time of render, this method will +// not mutate the style and instead returns a copy. +func (s Style) MaxHeight(n int) Style { + o := s // copy + o.set(maxHeightKey, n) + return o +} + +// NoTabConversion can be passed to [Style.TabWidth] to disable the replacement +// of tabs with spaces at render time. +const NoTabConversion = -1 + +// TabWidth sets the number of spaces that a tab (/t) should be rendered as. +// When set to 0, tabs will be removed. To disable the replacement of tabs with +// spaces entirely, set this to [NoTabConversion]. +// +// By default, tabs will be replaced with 4 spaces. +func (s Style) TabWidth(n int) Style { + if n <= -1 { + n = -1 + } + s.set(tabWidthKey, n) + return s +} + +// UnderlineSpaces determines whether to underline spaces between words. By +// default, this is true. Spaces can also be underlined without underlining the +// text itself. +func (s Style) UnderlineSpaces(v bool) Style { + s.set(underlineSpacesKey, v) + return s +} + +// StrikethroughSpaces determines whether to apply strikethroughs to spaces +// between words. By default, this is true. Spaces can also be struck without +// underlining the text itself. +func (s Style) StrikethroughSpaces(v bool) Style { + s.set(strikethroughSpacesKey, v) + return s +} + +// Transform applies a given function to a string at render time, allowing for +// the string being rendered to be manipuated. +// +// Example: +// +// s := NewStyle().Transform(strings.ToUpper) +// fmt.Println(s.Render("raow!") // "RAOW!" +func (s Style) Transform(fn func(string) string) Style { + s.set(transformKey, fn) + return s +} + +// Renderer sets the renderer for the style. This is useful for changing the +// renderer for a style that is being used in a different context. +func (s Style) Renderer(r *Renderer) Style { + s.r = r + return s +} + +// whichSidesInt is a helper method for setting values on sides of a block based +// on the number of arguments. It follows the CSS shorthand rules for blocks +// like margin, padding. and borders. Here are how the rules work: +// +// 0 args: do nothing +// 1 arg: all sides +// 2 args: top -> bottom +// 3 args: top -> horizontal -> bottom +// 4 args: top -> right -> bottom -> left +// 5+ args: do nothing. +func whichSidesInt(i ...int) (top, right, bottom, left int, ok bool) { + switch len(i) { + case 1: + top = i[0] + bottom = i[0] + left = i[0] + right = i[0] + ok = true + case 2: //nolint:mnd + top = i[0] + bottom = i[0] + left = i[1] + right = i[1] + ok = true + case 3: //nolint:mnd + top = i[0] + left = i[1] + right = i[1] + bottom = i[2] + ok = true + case 4: //nolint:mnd + top = i[0] + right = i[1] + bottom = i[2] + left = i[3] + ok = true + } + return top, right, bottom, left, ok +} + +// whichSidesBool is like whichSidesInt, except it operates on a series of +// boolean values. See the comment on whichSidesInt for details on how this +// works. +func whichSidesBool(i ...bool) (top, right, bottom, left bool, ok bool) { + switch len(i) { + case 1: + top = i[0] + bottom = i[0] + left = i[0] + right = i[0] + ok = true + case 2: //nolint:mnd + top = i[0] + bottom = i[0] + left = i[1] + right = i[1] + ok = true + case 3: //nolint:mnd + top = i[0] + left = i[1] + right = i[1] + bottom = i[2] + ok = true + case 4: //nolint:mnd + top = i[0] + right = i[1] + bottom = i[2] + left = i[3] + ok = true + } + return top, right, bottom, left, ok +} + +// whichSidesColor is like whichSides, except it operates on a series of +// boolean values. See the comment on whichSidesInt for details on how this +// works. +func whichSidesColor(i ...TerminalColor) (top, right, bottom, left TerminalColor, ok bool) { + switch len(i) { + case 1: + top = i[0] + bottom = i[0] + left = i[0] + right = i[0] + ok = true + case 2: //nolint:mnd + top = i[0] + bottom = i[0] + left = i[1] + right = i[1] + ok = true + case 3: //nolint:mnd + top = i[0] + left = i[1] + right = i[1] + bottom = i[2] + ok = true + case 4: //nolint:mnd + top = i[0] + right = i[1] + bottom = i[2] + left = i[3] + ok = true + } + return top, right, bottom, left, ok +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/size.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/size.go new file mode 100644 index 0000000..e169ff5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/size.go @@ -0,0 +1,41 @@ +package lipgloss + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// Width returns the cell width of characters in the string. ANSI sequences are +// ignored and characters wider than one cell (such as Chinese characters and +// emojis) are appropriately measured. +// +// You should use this instead of len(string) len([]rune(string) as neither +// will give you accurate results. +func Width(str string) (width int) { + for _, l := range strings.Split(str, "\n") { + w := ansi.StringWidth(l) + if w > width { + width = w + } + } + + return width +} + +// Height returns height of a string in cells. This is done simply by +// counting \n characters. If your strings use \r\n for newlines you should +// convert them to \n first, or simply write a separate function for measuring +// height. +func Height(str string) int { + return strings.Count(str, "\n") + 1 +} + +// Size returns the width and height of the string in cells. ANSI sequences are +// ignored and characters wider than one cell (such as Chinese characters and +// emojis) are appropriately measured. +func Size(str string) (width, height int) { + width = Width(str) + height = Height(str) + return width, height +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/style.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/style.go new file mode 100644 index 0000000..59fa3ab --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/style.go @@ -0,0 +1,588 @@ +package lipgloss + +import ( + "strings" + "unicode" + + "github.com/charmbracelet/x/ansi" + "github.com/charmbracelet/x/cellbuf" + "github.com/muesli/termenv" +) + +const tabWidthDefault = 4 + +// Property for a key. +type propKey int64 + +// Available properties. +const ( + // Boolean props come first. + boldKey propKey = 1 << iota + italicKey + underlineKey + strikethroughKey + reverseKey + blinkKey + faintKey + underlineSpacesKey + strikethroughSpacesKey + colorWhitespaceKey + + // Non-boolean props. + foregroundKey + backgroundKey + widthKey + heightKey + alignHorizontalKey + alignVerticalKey + + // Padding. + paddingTopKey + paddingRightKey + paddingBottomKey + paddingLeftKey + + // Margins. + marginTopKey + marginRightKey + marginBottomKey + marginLeftKey + marginBackgroundKey + + // Border runes. + borderStyleKey + + // Border edges. + borderTopKey + borderRightKey + borderBottomKey + borderLeftKey + + // Border foreground colors. + borderTopForegroundKey + borderRightForegroundKey + borderBottomForegroundKey + borderLeftForegroundKey + + // Border background colors. + borderTopBackgroundKey + borderRightBackgroundKey + borderBottomBackgroundKey + borderLeftBackgroundKey + + inlineKey + maxWidthKey + maxHeightKey + tabWidthKey + + transformKey +) + +// props is a set of properties. +type props int64 + +// set sets a property. +func (p props) set(k propKey) props { + return p | props(k) +} + +// unset unsets a property. +func (p props) unset(k propKey) props { + return p &^ props(k) +} + +// has checks if a property is set. +func (p props) has(k propKey) bool { + return p&props(k) != 0 +} + +// NewStyle returns a new, empty Style. While it's syntactic sugar for the +// Style{} primitive, it's recommended to use this function for creating styles +// in case the underlying implementation changes. It takes an optional string +// value to be set as the underlying string value for this style. +func NewStyle() Style { + return renderer.NewStyle() +} + +// NewStyle returns a new, empty Style. While it's syntactic sugar for the +// Style{} primitive, it's recommended to use this function for creating styles +// in case the underlying implementation changes. It takes an optional string +// value to be set as the underlying string value for this style. +func (r *Renderer) NewStyle() Style { + s := Style{r: r} + return s +} + +// Style contains a set of rules that comprise a style as a whole. +type Style struct { + r *Renderer + props props + value string + + // we store bool props values here + attrs int + + // props that have values + fgColor TerminalColor + bgColor TerminalColor + + width int + height int + + alignHorizontal Position + alignVertical Position + + paddingTop int + paddingRight int + paddingBottom int + paddingLeft int + + marginTop int + marginRight int + marginBottom int + marginLeft int + marginBgColor TerminalColor + + borderStyle Border + borderTopFgColor TerminalColor + borderRightFgColor TerminalColor + borderBottomFgColor TerminalColor + borderLeftFgColor TerminalColor + borderTopBgColor TerminalColor + borderRightBgColor TerminalColor + borderBottomBgColor TerminalColor + borderLeftBgColor TerminalColor + + maxWidth int + maxHeight int + tabWidth int + + transform func(string) string +} + +// joinString joins a list of strings into a single string separated with a +// space. +func joinString(strs ...string) string { + return strings.Join(strs, " ") +} + +// SetString sets the underlying string value for this style. To render once +// the underlying string is set, use the Style.String. This method is +// a convenience for cases when having a stringer implementation is handy, such +// as when using fmt.Sprintf. You can also simply define a style and render out +// strings directly with Style.Render. +func (s Style) SetString(strs ...string) Style { + s.value = joinString(strs...) + return s +} + +// Value returns the raw, unformatted, underlying string value for this style. +func (s Style) Value() string { + return s.value +} + +// String implements stringer for a Style, returning the rendered result based +// on the rules in this style. An underlying string value must be set with +// Style.SetString prior to using this method. +func (s Style) String() string { + return s.Render() +} + +// Copy returns a copy of this style, including any underlying string values. +// +// Deprecated: to copy just use assignment (i.e. a := b). All methods also +// return a new style. +func (s Style) Copy() Style { + return s +} + +// Inherit overlays the style in the argument onto this style by copying each explicitly +// set value from the argument style onto this style if it is not already explicitly set. +// Existing set values are kept intact and not overwritten. +// +// Margins, padding, and underlying string values are not inherited. +func (s Style) Inherit(i Style) Style { + for k := boldKey; k <= transformKey; k <<= 1 { + if !i.isSet(k) { + continue + } + + switch k { //nolint:exhaustive + case marginTopKey, marginRightKey, marginBottomKey, marginLeftKey: + // Margins are not inherited + continue + case paddingTopKey, paddingRightKey, paddingBottomKey, paddingLeftKey: + // Padding is not inherited + continue + case backgroundKey: + // The margins also inherit the background color + if !s.isSet(marginBackgroundKey) && !i.isSet(marginBackgroundKey) { + s.set(marginBackgroundKey, i.bgColor) + } + } + + if s.isSet(k) { + continue + } + + s.setFrom(k, i) + } + return s +} + +// Render applies the defined style formatting to a given string. +func (s Style) Render(strs ...string) string { + if s.r == nil { + s.r = renderer + } + if s.value != "" { + strs = append([]string{s.value}, strs...) + } + + var ( + str = joinString(strs...) + + p = s.r.ColorProfile() + te = p.String() + teSpace = p.String() + teWhitespace = p.String() + + bold = s.getAsBool(boldKey, false) + italic = s.getAsBool(italicKey, false) + underline = s.getAsBool(underlineKey, false) + strikethrough = s.getAsBool(strikethroughKey, false) + reverse = s.getAsBool(reverseKey, false) + blink = s.getAsBool(blinkKey, false) + faint = s.getAsBool(faintKey, false) + + fg = s.getAsColor(foregroundKey) + bg = s.getAsColor(backgroundKey) + + width = s.getAsInt(widthKey) + height = s.getAsInt(heightKey) + horizontalAlign = s.getAsPosition(alignHorizontalKey) + verticalAlign = s.getAsPosition(alignVerticalKey) + + topPadding = s.getAsInt(paddingTopKey) + rightPadding = s.getAsInt(paddingRightKey) + bottomPadding = s.getAsInt(paddingBottomKey) + leftPadding = s.getAsInt(paddingLeftKey) + + colorWhitespace = s.getAsBool(colorWhitespaceKey, true) + inline = s.getAsBool(inlineKey, false) + maxWidth = s.getAsInt(maxWidthKey) + maxHeight = s.getAsInt(maxHeightKey) + + underlineSpaces = s.getAsBool(underlineSpacesKey, false) || (underline && s.getAsBool(underlineSpacesKey, true)) + strikethroughSpaces = s.getAsBool(strikethroughSpacesKey, false) || (strikethrough && s.getAsBool(strikethroughSpacesKey, true)) + + // Do we need to style whitespace (padding and space outside + // paragraphs) separately? + styleWhitespace = reverse + + // Do we need to style spaces separately? + useSpaceStyler = (underline && !underlineSpaces) || (strikethrough && !strikethroughSpaces) || underlineSpaces || strikethroughSpaces + + transform = s.getAsTransform(transformKey) + ) + + if transform != nil { + str = transform(str) + } + + if s.props == 0 { + return s.maybeConvertTabs(str) + } + + // Enable support for ANSI on the legacy Windows cmd.exe console. This is a + // no-op on non-Windows systems and on Windows runs only once. + enableLegacyWindowsANSI() + + if bold { + te = te.Bold() + } + if italic { + te = te.Italic() + } + if underline { + te = te.Underline() + } + if reverse { + teWhitespace = teWhitespace.Reverse() + te = te.Reverse() + } + if blink { + te = te.Blink() + } + if faint { + te = te.Faint() + } + + if fg != noColor { + te = te.Foreground(fg.color(s.r)) + if styleWhitespace { + teWhitespace = teWhitespace.Foreground(fg.color(s.r)) + } + if useSpaceStyler { + teSpace = teSpace.Foreground(fg.color(s.r)) + } + } + + if bg != noColor { + te = te.Background(bg.color(s.r)) + if colorWhitespace { + teWhitespace = teWhitespace.Background(bg.color(s.r)) + } + if useSpaceStyler { + teSpace = teSpace.Background(bg.color(s.r)) + } + } + + if underline { + te = te.Underline() + } + if strikethrough { + te = te.CrossOut() + } + + if underlineSpaces { + teSpace = teSpace.Underline() + } + if strikethroughSpaces { + teSpace = teSpace.CrossOut() + } + + // Potentially convert tabs to spaces + str = s.maybeConvertTabs(str) + // carriage returns can cause strange behaviour when rendering. + str = strings.ReplaceAll(str, "\r\n", "\n") + + // Strip newlines in single line mode + if inline { + str = strings.ReplaceAll(str, "\n", "") + } + + // Word wrap + if !inline && width > 0 { + wrapAt := width - leftPadding - rightPadding + str = cellbuf.Wrap(str, wrapAt, "") + } + + // Render core text + { + var b strings.Builder + + l := strings.Split(str, "\n") + for i := range l { + if useSpaceStyler { + // Look for spaces and apply a different styler + for _, r := range l[i] { + if unicode.IsSpace(r) { + b.WriteString(teSpace.Styled(string(r))) + continue + } + b.WriteString(te.Styled(string(r))) + } + } else { + b.WriteString(te.Styled(l[i])) + } + if i != len(l)-1 { + b.WriteRune('\n') + } + } + + str = b.String() + } + + // Padding + if !inline { //nolint:nestif + if leftPadding > 0 { + var st *termenv.Style + if colorWhitespace || styleWhitespace { + st = &teWhitespace + } + str = padLeft(str, leftPadding, st) + } + + if rightPadding > 0 { + var st *termenv.Style + if colorWhitespace || styleWhitespace { + st = &teWhitespace + } + str = padRight(str, rightPadding, st) + } + + if topPadding > 0 { + str = strings.Repeat("\n", topPadding) + str + } + + if bottomPadding > 0 { + str += strings.Repeat("\n", bottomPadding) + } + } + + // Height + if height > 0 { + str = alignTextVertical(str, verticalAlign, height, nil) + } + + // Set alignment. This will also pad short lines with spaces so that all + // lines are the same length, so we run it under a few different conditions + // beyond alignment. + { + numLines := strings.Count(str, "\n") + + if numLines != 0 || width != 0 { + var st *termenv.Style + if colorWhitespace || styleWhitespace { + st = &teWhitespace + } + str = alignTextHorizontal(str, horizontalAlign, width, st) + } + } + + if !inline { + str = s.applyBorder(str) + str = s.applyMargins(str, inline) + } + + // Truncate according to MaxWidth + if maxWidth > 0 { + lines := strings.Split(str, "\n") + + for i := range lines { + lines[i] = ansi.Truncate(lines[i], maxWidth, "") + } + + str = strings.Join(lines, "\n") + } + + // Truncate according to MaxHeight + if maxHeight > 0 { + lines := strings.Split(str, "\n") + height := min(maxHeight, len(lines)) + if len(lines) > 0 { + str = strings.Join(lines[:height], "\n") + } + } + + return str +} + +func (s Style) maybeConvertTabs(str string) string { + tw := tabWidthDefault + if s.isSet(tabWidthKey) { + tw = s.getAsInt(tabWidthKey) + } + switch tw { + case -1: + return str + case 0: + return strings.ReplaceAll(str, "\t", "") + default: + return strings.ReplaceAll(str, "\t", strings.Repeat(" ", tw)) + } +} + +func (s Style) applyMargins(str string, inline bool) string { + var ( + topMargin = s.getAsInt(marginTopKey) + rightMargin = s.getAsInt(marginRightKey) + bottomMargin = s.getAsInt(marginBottomKey) + leftMargin = s.getAsInt(marginLeftKey) + + styler termenv.Style + ) + + bgc := s.getAsColor(marginBackgroundKey) + if bgc != noColor { + styler = styler.Background(bgc.color(s.r)) + } + + // Add left and right margin + str = padLeft(str, leftMargin, &styler) + str = padRight(str, rightMargin, &styler) + + // Top/bottom margin + if !inline { + _, width := getLines(str) + spaces := strings.Repeat(" ", width) + + if topMargin > 0 { + str = styler.Styled(strings.Repeat(spaces+"\n", topMargin)) + str + } + if bottomMargin > 0 { + str += styler.Styled(strings.Repeat("\n"+spaces, bottomMargin)) + } + } + + return str +} + +// Apply left padding. +func padLeft(str string, n int, style *termenv.Style) string { + return pad(str, -n, style) +} + +// Apply right padding. +func padRight(str string, n int, style *termenv.Style) string { + return pad(str, n, style) +} + +// pad adds padding to either the left or right side of a string. +// Positive values add to the right side while negative values +// add to the left side. +func pad(str string, n int, style *termenv.Style) string { + if n == 0 { + return str + } + + sp := strings.Repeat(" ", abs(n)) + if style != nil { + sp = style.Styled(sp) + } + + b := strings.Builder{} + l := strings.Split(str, "\n") + + for i := range l { + switch { + // pad right + case n > 0: + b.WriteString(l[i]) + b.WriteString(sp) + // pad left + default: + b.WriteString(sp) + b.WriteString(l[i]) + } + + if i != len(l)-1 { + b.WriteRune('\n') + } + } + + return b.String() +} + +func max(a, b int) int { //nolint:unparam,predeclared + if a > b { + return a + } + return b +} + +func min(a, b int) int { //nolint:predeclared + if a < b { + return a + } + return b +} + +func abs(a int) int { + if a < 0 { + return -a + } + + return a +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/unset.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/unset.go new file mode 100644 index 0000000..1086e72 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/unset.go @@ -0,0 +1,331 @@ +package lipgloss + +// unset unsets a property from a style. +func (s *Style) unset(key propKey) { + s.props = s.props.unset(key) +} + +// UnsetBold removes the bold style rule, if set. +func (s Style) UnsetBold() Style { + s.unset(boldKey) + return s +} + +// UnsetItalic removes the italic style rule, if set. +func (s Style) UnsetItalic() Style { + s.unset(italicKey) + return s +} + +// UnsetUnderline removes the underline style rule, if set. +func (s Style) UnsetUnderline() Style { + s.unset(underlineKey) + return s +} + +// UnsetStrikethrough removes the strikethrough style rule, if set. +func (s Style) UnsetStrikethrough() Style { + s.unset(strikethroughKey) + return s +} + +// UnsetReverse removes the reverse style rule, if set. +func (s Style) UnsetReverse() Style { + s.unset(reverseKey) + return s +} + +// UnsetBlink removes the blink style rule, if set. +func (s Style) UnsetBlink() Style { + s.unset(blinkKey) + return s +} + +// UnsetFaint removes the faint style rule, if set. +func (s Style) UnsetFaint() Style { + s.unset(faintKey) + return s +} + +// UnsetForeground removes the foreground style rule, if set. +func (s Style) UnsetForeground() Style { + s.unset(foregroundKey) + return s +} + +// UnsetBackground removes the background style rule, if set. +func (s Style) UnsetBackground() Style { + s.unset(backgroundKey) + return s +} + +// UnsetWidth removes the width style rule, if set. +func (s Style) UnsetWidth() Style { + s.unset(widthKey) + return s +} + +// UnsetHeight removes the height style rule, if set. +func (s Style) UnsetHeight() Style { + s.unset(heightKey) + return s +} + +// UnsetAlign removes the horizontal and vertical text alignment style rule, if set. +func (s Style) UnsetAlign() Style { + s.unset(alignHorizontalKey) + s.unset(alignVerticalKey) + return s +} + +// UnsetAlignHorizontal removes the horizontal text alignment style rule, if set. +func (s Style) UnsetAlignHorizontal() Style { + s.unset(alignHorizontalKey) + return s +} + +// UnsetAlignVertical removes the vertical text alignment style rule, if set. +func (s Style) UnsetAlignVertical() Style { + s.unset(alignVerticalKey) + return s +} + +// UnsetPadding removes all padding style rules. +func (s Style) UnsetPadding() Style { + s.unset(paddingLeftKey) + s.unset(paddingRightKey) + s.unset(paddingTopKey) + s.unset(paddingBottomKey) + return s +} + +// UnsetPaddingLeft removes the left padding style rule, if set. +func (s Style) UnsetPaddingLeft() Style { + s.unset(paddingLeftKey) + return s +} + +// UnsetPaddingRight removes the right padding style rule, if set. +func (s Style) UnsetPaddingRight() Style { + s.unset(paddingRightKey) + return s +} + +// UnsetPaddingTop removes the top padding style rule, if set. +func (s Style) UnsetPaddingTop() Style { + s.unset(paddingTopKey) + return s +} + +// UnsetPaddingBottom removes the bottom padding style rule, if set. +func (s Style) UnsetPaddingBottom() Style { + s.unset(paddingBottomKey) + return s +} + +// UnsetColorWhitespace removes the rule for coloring padding, if set. +func (s Style) UnsetColorWhitespace() Style { + s.unset(colorWhitespaceKey) + return s +} + +// UnsetMargins removes all margin style rules. +func (s Style) UnsetMargins() Style { + s.unset(marginLeftKey) + s.unset(marginRightKey) + s.unset(marginTopKey) + s.unset(marginBottomKey) + return s +} + +// UnsetMarginLeft removes the left margin style rule, if set. +func (s Style) UnsetMarginLeft() Style { + s.unset(marginLeftKey) + return s +} + +// UnsetMarginRight removes the right margin style rule, if set. +func (s Style) UnsetMarginRight() Style { + s.unset(marginRightKey) + return s +} + +// UnsetMarginTop removes the top margin style rule, if set. +func (s Style) UnsetMarginTop() Style { + s.unset(marginTopKey) + return s +} + +// UnsetMarginBottom removes the bottom margin style rule, if set. +func (s Style) UnsetMarginBottom() Style { + s.unset(marginBottomKey) + return s +} + +// UnsetMarginBackground removes the margin's background color. Note that the +// margin's background color can be set from the background color of another +// style during inheritance. +func (s Style) UnsetMarginBackground() Style { + s.unset(marginBackgroundKey) + return s +} + +// UnsetBorderStyle removes the border style rule, if set. +func (s Style) UnsetBorderStyle() Style { + s.unset(borderStyleKey) + return s +} + +// UnsetBorderTop removes the border top style rule, if set. +func (s Style) UnsetBorderTop() Style { + s.unset(borderTopKey) + return s +} + +// UnsetBorderRight removes the border right style rule, if set. +func (s Style) UnsetBorderRight() Style { + s.unset(borderRightKey) + return s +} + +// UnsetBorderBottom removes the border bottom style rule, if set. +func (s Style) UnsetBorderBottom() Style { + s.unset(borderBottomKey) + return s +} + +// UnsetBorderLeft removes the border left style rule, if set. +func (s Style) UnsetBorderLeft() Style { + s.unset(borderLeftKey) + return s +} + +// UnsetBorderForeground removes all border foreground color styles, if set. +func (s Style) UnsetBorderForeground() Style { + s.unset(borderTopForegroundKey) + s.unset(borderRightForegroundKey) + s.unset(borderBottomForegroundKey) + s.unset(borderLeftForegroundKey) + return s +} + +// UnsetBorderTopForeground removes the top border foreground color rule, +// if set. +func (s Style) UnsetBorderTopForeground() Style { + s.unset(borderTopForegroundKey) + return s +} + +// UnsetBorderRightForeground removes the right border foreground color rule, +// if set. +func (s Style) UnsetBorderRightForeground() Style { + s.unset(borderRightForegroundKey) + return s +} + +// UnsetBorderBottomForeground removes the bottom border foreground color +// rule, if set. +func (s Style) UnsetBorderBottomForeground() Style { + s.unset(borderBottomForegroundKey) + return s +} + +// UnsetBorderLeftForeground removes the left border foreground color rule, +// if set. +func (s Style) UnsetBorderLeftForeground() Style { + s.unset(borderLeftForegroundKey) + return s +} + +// UnsetBorderBackground removes all border background color styles, if +// set. +func (s Style) UnsetBorderBackground() Style { + s.unset(borderTopBackgroundKey) + s.unset(borderRightBackgroundKey) + s.unset(borderBottomBackgroundKey) + s.unset(borderLeftBackgroundKey) + return s +} + +// UnsetBorderTopBackgroundColor removes the top border background color rule, +// if set. +// +// Deprecated: This function simply calls Style.UnsetBorderTopBackground. +func (s Style) UnsetBorderTopBackgroundColor() Style { + return s.UnsetBorderTopBackground() +} + +// UnsetBorderTopBackground removes the top border background color rule, +// if set. +func (s Style) UnsetBorderTopBackground() Style { + s.unset(borderTopBackgroundKey) + return s +} + +// UnsetBorderRightBackground removes the right border background color +// rule, if set. +func (s Style) UnsetBorderRightBackground() Style { + s.unset(borderRightBackgroundKey) + return s +} + +// UnsetBorderBottomBackground removes the bottom border background color +// rule, if set. +func (s Style) UnsetBorderBottomBackground() Style { + s.unset(borderBottomBackgroundKey) + return s +} + +// UnsetBorderLeftBackground removes the left border color rule, if set. +func (s Style) UnsetBorderLeftBackground() Style { + s.unset(borderLeftBackgroundKey) + return s +} + +// UnsetInline removes the inline style rule, if set. +func (s Style) UnsetInline() Style { + s.unset(inlineKey) + return s +} + +// UnsetMaxWidth removes the max width style rule, if set. +func (s Style) UnsetMaxWidth() Style { + s.unset(maxWidthKey) + return s +} + +// UnsetMaxHeight removes the max height style rule, if set. +func (s Style) UnsetMaxHeight() Style { + s.unset(maxHeightKey) + return s +} + +// UnsetTabWidth removes the tab width style rule, if set. +func (s Style) UnsetTabWidth() Style { + s.unset(tabWidthKey) + return s +} + +// UnsetUnderlineSpaces removes the value set by UnderlineSpaces. +func (s Style) UnsetUnderlineSpaces() Style { + s.unset(underlineSpacesKey) + return s +} + +// UnsetStrikethroughSpaces removes the value set by StrikethroughSpaces. +func (s Style) UnsetStrikethroughSpaces() Style { + s.unset(strikethroughSpacesKey) + return s +} + +// UnsetTransform removes the value set by Transform. +func (s Style) UnsetTransform() Style { + s.unset(transformKey) + return s +} + +// UnsetString sets the underlying string value to the empty string. +func (s Style) UnsetString() Style { + s.value = "" + return s +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/whitespace.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/whitespace.go new file mode 100644 index 0000000..040dc98 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/lipgloss/whitespace.go @@ -0,0 +1,83 @@ +package lipgloss + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" + "github.com/muesli/termenv" +) + +// whitespace is a whitespace renderer. +type whitespace struct { + re *Renderer + style termenv.Style + chars string +} + +// newWhitespace creates a new whitespace renderer. The order of the options +// matters, if you're using WithWhitespaceRenderer, make sure it comes first as +// other options might depend on it. +func newWhitespace(r *Renderer, opts ...WhitespaceOption) *whitespace { + w := &whitespace{ + re: r, + style: r.ColorProfile().String(), + } + for _, opt := range opts { + opt(w) + } + return w +} + +// Render whitespaces. +func (w whitespace) render(width int) string { + if w.chars == "" { + w.chars = " " + } + + r := []rune(w.chars) + j := 0 + b := strings.Builder{} + + // Cycle through runes and print them into the whitespace. + for i := 0; i < width; { + b.WriteRune(r[j]) + j++ + if j >= len(r) { + j = 0 + } + i += ansi.StringWidth(string(r[j])) + } + + // Fill any extra gaps white spaces. This might be necessary if any runes + // are more than one cell wide, which could leave a one-rune gap. + short := width - ansi.StringWidth(b.String()) + if short > 0 { + b.WriteString(strings.Repeat(" ", short)) + } + + return w.style.Styled(b.String()) +} + +// WhitespaceOption sets a styling rule for rendering whitespace. +type WhitespaceOption func(*whitespace) + +// WithWhitespaceForeground sets the color of the characters in the whitespace. +func WithWhitespaceForeground(c TerminalColor) WhitespaceOption { + return func(w *whitespace) { + w.style = w.style.Foreground(c.color(w.re)) + } +} + +// WithWhitespaceBackground sets the background color of the whitespace. +func WithWhitespaceBackground(c TerminalColor) WhitespaceOption { + return func(w *whitespace) { + w.style = w.style.Background(c.color(w.re)) + } +} + +// WithWhitespaceChars sets the characters to be rendered in the whitespace. +func WithWhitespaceChars(s string) WhitespaceOption { + return func(w *whitespace) { + w.chars = s + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/LICENSE new file mode 100644 index 0000000..65a5654 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Charmbracelet, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ansi.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ansi.go new file mode 100644 index 0000000..d5a2f25 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ansi.go @@ -0,0 +1,11 @@ +package ansi + +import "io" + +// Execute is a function that "execute" the given escape sequence by writing it +// to the provided output writter. +// +// This is a syntactic sugar over [io.WriteString]. +func Execute(w io.Writer, s string) (int, error) { + return io.WriteString(w, s) //nolint:wrapcheck +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ascii.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ascii.go new file mode 100644 index 0000000..188582f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ascii.go @@ -0,0 +1,8 @@ +package ansi + +const ( + // SP is the space character (Char: \x20). + SP = 0x20 + // DEL is the delete character (Caret: ^?, Char: \x7f). + DEL = 0x7F +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/background.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/background.go new file mode 100644 index 0000000..46f8214 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/background.go @@ -0,0 +1,178 @@ +package ansi + +import ( + "fmt" + "image/color" + + "github.com/lucasb-eyer/go-colorful" +) + +// HexColor is a [color.Color] that can be formatted as a hex string. +type HexColor string + +// RGBA returns the RGBA values of the color. +func (h HexColor) RGBA() (r, g, b, a uint32) { + hex := h.color() + if hex == nil { + return 0, 0, 0, 0 + } + return hex.RGBA() +} + +// Hex returns the hex representation of the color. If the color is invalid, it +// returns an empty string. +func (h HexColor) Hex() string { + hex := h.color() + if hex == nil { + return "" + } + return hex.Hex() +} + +// String returns the color as a hex string. If the color is nil, an empty +// string is returned. +func (h HexColor) String() string { + return h.Hex() +} + +// color returns the underlying color of the HexColor. +func (h HexColor) color() *colorful.Color { + hex, err := colorful.Hex(string(h)) + if err != nil { + return nil + } + return &hex +} + +// XRGBColor is a [color.Color] that can be formatted as an XParseColor +// rgb: string. +// +// See: https://linux.die.net/man/3/xparsecolor +type XRGBColor struct { + color.Color +} + +// RGBA returns the RGBA values of the color. +func (x XRGBColor) RGBA() (r, g, b, a uint32) { + if x.Color == nil { + return 0, 0, 0, 0 + } + return x.Color.RGBA() +} + +// String returns the color as an XParseColor rgb: string. If the color is nil, +// an empty string is returned. +func (x XRGBColor) String() string { + if x.Color == nil { + return "" + } + r, g, b, _ := x.Color.RGBA() + // Get the lower 8 bits + return fmt.Sprintf("rgb:%04x/%04x/%04x", r, g, b) +} + +// XRGBAColor is a [color.Color] that can be formatted as an XParseColor +// rgba: string. +// +// See: https://linux.die.net/man/3/xparsecolor +type XRGBAColor struct { + color.Color +} + +// RGBA returns the RGBA values of the color. +func (x XRGBAColor) RGBA() (r, g, b, a uint32) { + if x.Color == nil { + return 0, 0, 0, 0 + } + return x.Color.RGBA() +} + +// String returns the color as an XParseColor rgba: string. If the color is nil, +// an empty string is returned. +func (x XRGBAColor) String() string { + if x.Color == nil { + return "" + } + r, g, b, a := x.RGBA() + // Get the lower 8 bits + return fmt.Sprintf("rgba:%04x/%04x/%04x/%04x", r, g, b, a) +} + +// SetForegroundColor returns a sequence that sets the default terminal +// foreground color. +// +// OSC 10 ; color ST +// OSC 10 ; color BEL +// +// Where color is the encoded color number. Most terminals support hex, +// XParseColor rgb: and rgba: strings. You could use [HexColor], [XRGBColor], +// or [XRGBAColor] to format the color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func SetForegroundColor(s string) string { + return "\x1b]10;" + s + "\x07" +} + +// RequestForegroundColor is a sequence that requests the current default +// terminal foreground color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +const RequestForegroundColor = "\x1b]10;?\x07" + +// ResetForegroundColor is a sequence that resets the default terminal +// foreground color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +const ResetForegroundColor = "\x1b]110\x07" + +// SetBackgroundColor returns a sequence that sets the default terminal +// background color. +// +// OSC 11 ; color ST +// OSC 11 ; color BEL +// +// Where color is the encoded color number. Most terminals support hex, +// XParseColor rgb: and rgba: strings. You could use [HexColor], [XRGBColor], +// or [XRGBAColor] to format the color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func SetBackgroundColor(s string) string { + return "\x1b]11;" + s + "\x07" +} + +// RequestBackgroundColor is a sequence that requests the current default +// terminal background color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +const RequestBackgroundColor = "\x1b]11;?\x07" + +// ResetBackgroundColor is a sequence that resets the default terminal +// background color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +const ResetBackgroundColor = "\x1b]111\x07" + +// SetCursorColor returns a sequence that sets the terminal cursor color. +// +// OSC 12 ; color ST +// OSC 12 ; color BEL +// +// Where color is the encoded color number. Most terminals support hex, +// XParseColor rgb: and rgba: strings. You could use [HexColor], [XRGBColor], +// or [XRGBAColor] to format the color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func SetCursorColor(s string) string { + return "\x1b]12;" + s + "\x07" +} + +// RequestCursorColor is a sequence that requests the current terminal cursor +// color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +const RequestCursorColor = "\x1b]12;?\x07" + +// ResetCursorColor is a sequence that resets the terminal cursor color. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +const ResetCursorColor = "\x1b]112\x07" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c0.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c0.go new file mode 100644 index 0000000..28ff7c2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c0.go @@ -0,0 +1,79 @@ +package ansi + +// C0 control characters. +// +// These range from (0x00-0x1F) as defined in ISO 646 (ASCII). +// See: https://en.wikipedia.org/wiki/C0_and_C1_control_codes +const ( + // NUL is the null character (Caret: ^@, Char: \0). + NUL = 0x00 + // SOH is the start of heading character (Caret: ^A). + SOH = 0x01 + // STX is the start of text character (Caret: ^B). + STX = 0x02 + // ETX is the end of text character (Caret: ^C). + ETX = 0x03 + // EOT is the end of transmission character (Caret: ^D). + EOT = 0x04 + // ENQ is the enquiry character (Caret: ^E). + ENQ = 0x05 + // ACK is the acknowledge character (Caret: ^F). + ACK = 0x06 + // BEL is the bell character (Caret: ^G, Char: \a). + BEL = 0x07 + // BS is the backspace character (Caret: ^H, Char: \b). + BS = 0x08 + // HT is the horizontal tab character (Caret: ^I, Char: \t). + HT = 0x09 + // LF is the line feed character (Caret: ^J, Char: \n). + LF = 0x0A + // VT is the vertical tab character (Caret: ^K, Char: \v). + VT = 0x0B + // FF is the form feed character (Caret: ^L, Char: \f). + FF = 0x0C + // CR is the carriage return character (Caret: ^M, Char: \r). + CR = 0x0D + // SO is the shift out character (Caret: ^N). + SO = 0x0E + // SI is the shift in character (Caret: ^O). + SI = 0x0F + // DLE is the data link escape character (Caret: ^P). + DLE = 0x10 + // DC1 is the device control 1 character (Caret: ^Q). + DC1 = 0x11 + // DC2 is the device control 2 character (Caret: ^R). + DC2 = 0x12 + // DC3 is the device control 3 character (Caret: ^S). + DC3 = 0x13 + // DC4 is the device control 4 character (Caret: ^T). + DC4 = 0x14 + // NAK is the negative acknowledge character (Caret: ^U). + NAK = 0x15 + // SYN is the synchronous idle character (Caret: ^V). + SYN = 0x16 + // ETB is the end of transmission block character (Caret: ^W). + ETB = 0x17 + // CAN is the cancel character (Caret: ^X). + CAN = 0x18 + // EM is the end of medium character (Caret: ^Y). + EM = 0x19 + // SUB is the substitute character (Caret: ^Z). + SUB = 0x1A + // ESC is the escape character (Caret: ^[, Char: \e). + ESC = 0x1B + // FS is the file separator character (Caret: ^\). + FS = 0x1C + // GS is the group separator character (Caret: ^]). + GS = 0x1D + // RS is the record separator character (Caret: ^^). + RS = 0x1E + // US is the unit separator character (Caret: ^_). + US = 0x1F + + // LS0 is the locking shift 0 character. + // This is an alias for [SI]. + LS0 = SI + // LS1 is the locking shift 1 character. + // This is an alias for [SO]. + LS1 = SO +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c1.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c1.go new file mode 100644 index 0000000..71058f5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/c1.go @@ -0,0 +1,72 @@ +package ansi + +// C1 control characters. +// +// These range from (0x80-0x9F) as defined in ISO 6429 (ECMA-48). +// See: https://en.wikipedia.org/wiki/C0_and_C1_control_codes +const ( + // PAD is the padding character. + PAD = 0x80 + // HOP is the high octet preset character. + HOP = 0x81 + // BPH is the break permitted here character. + BPH = 0x82 + // NBH is the no break here character. + NBH = 0x83 + // IND is the index character. + IND = 0x84 + // NEL is the next line character. + NEL = 0x85 + // SSA is the start of selected area character. + SSA = 0x86 + // ESA is the end of selected area character. + ESA = 0x87 + // HTS is the horizontal tab set character. + HTS = 0x88 + // HTJ is the horizontal tab with justification character. + HTJ = 0x89 + // VTS is the vertical tab set character. + VTS = 0x8A + // PLD is the partial line forward character. + PLD = 0x8B + // PLU is the partial line backward character. + PLU = 0x8C + // RI is the reverse index character. + RI = 0x8D + // SS2 is the single shift 2 character. + SS2 = 0x8E + // SS3 is the single shift 3 character. + SS3 = 0x8F + // DCS is the device control string character. + DCS = 0x90 + // PU1 is the private use 1 character. + PU1 = 0x91 + // PU2 is the private use 2 character. + PU2 = 0x92 + // STS is the set transmit state character. + STS = 0x93 + // CCH is the cancel character. + CCH = 0x94 + // MW is the message waiting character. + MW = 0x95 + // SPA is the start of guarded area character. + SPA = 0x96 + // EPA is the end of guarded area character. + EPA = 0x97 + // SOS is the start of string character. + SOS = 0x98 + // SGCI is the single graphic character introducer character. + SGCI = 0x99 + // SCI is the single character introducer character. + SCI = 0x9A + // CSI is the control sequence introducer character. + CSI = 0x9B + // ST is the string terminator character. + ST = 0x9C + // OSC is the operating system command character. + OSC = 0x9D + // PM is the privacy message character. + PM = 0x9E + // APC is the application program command character. + APC = 0x9F +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/charset.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/charset.go new file mode 100644 index 0000000..02edfe7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/charset.go @@ -0,0 +1,55 @@ +package ansi + +// SelectCharacterSet sets the G-set character designator to the specified +// character set. +// +// ESC Ps Pd +// +// Where Ps is the G-set character designator, and Pd is the identifier. +// For 94-character sets, the designator can be one of: +// - ( G0 +// - ) G1 +// - * G2 +// - + G3 +// +// For 96-character sets, the designator can be one of: +// - - G1 +// - . G2 +// - / G3 +// +// Some common 94-character sets are: +// - 0 DEC Special Drawing Set +// - A United Kingdom (UK) +// - B United States (USASCII) +// +// Examples: +// +// ESC ( B Select character set G0 = United States (USASCII) +// ESC ( 0 Select character set G0 = Special Character and Line Drawing Set +// ESC ) 0 Select character set G1 = Special Character and Line Drawing Set +// ESC * A Select character set G2 = United Kingdom (UK) +// +// See: https://vt100.net/docs/vt510-rm/SCS.html +func SelectCharacterSet(gset byte, charset byte) string { + return "\x1b" + string(gset) + string(charset) +} + +// SCS is an alias for SelectCharacterSet. +func SCS(gset byte, charset byte) string { + return SelectCharacterSet(gset, charset) +} + +// LS1R (Locking Shift 1 Right) shifts G1 into GR character set. +const LS1R = "\x1b~" + +// LS2 (Locking Shift 2) shifts G2 into GL character set. +const LS2 = "\x1bn" + +// LS2R (Locking Shift 2 Right) shifts G2 into GR character set. +const LS2R = "\x1b}" + +// LS3 (Locking Shift 3) shifts G3 into GL character set. +const LS3 = "\x1bo" + +// LS3R (Locking Shift 3 Right) shifts G3 into GR character set. +const LS3R = "\x1b|" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/clipboard.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/clipboard.go new file mode 100644 index 0000000..94d26c3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/clipboard.go @@ -0,0 +1,75 @@ +package ansi + +import "encoding/base64" + +// Clipboard names. +const ( + SystemClipboard = 'c' + PrimaryClipboard = 'p' +) + +// SetClipboard returns a sequence for manipulating the clipboard. +// +// OSC 52 ; Pc ; Pd ST +// OSC 52 ; Pc ; Pd BEL +// +// Where Pc is the clipboard name and Pd is the base64 encoded data. +// Empty data or invalid base64 data will reset the clipboard. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func SetClipboard(c byte, d string) string { + if d != "" { + d = base64.StdEncoding.EncodeToString([]byte(d)) + } + return "\x1b]52;" + string(c) + ";" + d + "\x07" +} + +// SetSystemClipboard returns a sequence for setting the system clipboard. +// +// This is equivalent to SetClipboard(SystemClipboard, d). +func SetSystemClipboard(d string) string { + return SetClipboard(SystemClipboard, d) +} + +// SetPrimaryClipboard returns a sequence for setting the primary clipboard. +// +// This is equivalent to SetClipboard(PrimaryClipboard, d). +func SetPrimaryClipboard(d string) string { + return SetClipboard(PrimaryClipboard, d) +} + +// ResetClipboard returns a sequence for resetting the clipboard. +// +// This is equivalent to SetClipboard(c, ""). +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func ResetClipboard(c byte) string { + return SetClipboard(c, "") +} + +// ResetSystemClipboard is a sequence for resetting the system clipboard. +// +// This is equivalent to ResetClipboard(SystemClipboard). +const ResetSystemClipboard = "\x1b]52;c;\x07" + +// ResetPrimaryClipboard is a sequence for resetting the primary clipboard. +// +// This is equivalent to ResetClipboard(PrimaryClipboard). +const ResetPrimaryClipboard = "\x1b]52;p;\x07" + +// RequestClipboard returns a sequence for requesting the clipboard. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func RequestClipboard(c byte) string { + return "\x1b]52;" + string(c) + ";?\x07" +} + +// RequestSystemClipboard is a sequence for requesting the system clipboard. +// +// This is equivalent to RequestClipboard(SystemClipboard). +const RequestSystemClipboard = "\x1b]52;c;?\x07" + +// RequestPrimaryClipboard is a sequence for requesting the primary clipboard. +// +// This is equivalent to RequestClipboard(PrimaryClipboard). +const RequestPrimaryClipboard = "\x1b]52;p;?\x07" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/color.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/color.go new file mode 100644 index 0000000..09feb97 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/color.go @@ -0,0 +1,784 @@ +package ansi + +import ( + "image/color" + + "github.com/lucasb-eyer/go-colorful" +) + +// Color is a color that can be used in a terminal. ANSI (including +// ANSI256) and 24-bit "true colors" fall under this category. +type Color interface { + color.Color +} + +// BasicColor is an ANSI 3-bit or 4-bit color with a value from 0 to 15. +type BasicColor uint8 + +var _ Color = BasicColor(0) + +const ( + // Black is the ANSI black color. + Black BasicColor = iota + + // Red is the ANSI red color. + Red + + // Green is the ANSI green color. + Green + + // Yellow is the ANSI yellow color. + Yellow + + // Blue is the ANSI blue color. + Blue + + // Magenta is the ANSI magenta color. + Magenta + + // Cyan is the ANSI cyan color. + Cyan + + // White is the ANSI white color. + White + + // BrightBlack is the ANSI bright black color. + BrightBlack + + // BrightRed is the ANSI bright red color. + BrightRed + + // BrightGreen is the ANSI bright green color. + BrightGreen + + // BrightYellow is the ANSI bright yellow color. + BrightYellow + + // BrightBlue is the ANSI bright blue color. + BrightBlue + + // BrightMagenta is the ANSI bright magenta color. + BrightMagenta + + // BrightCyan is the ANSI bright cyan color. + BrightCyan + + // BrightWhite is the ANSI bright white color. + BrightWhite +) + +// RGBA returns the red, green, blue and alpha components of the color. It +// satisfies the color.Color interface. +func (c BasicColor) RGBA() (uint32, uint32, uint32, uint32) { + ansi := uint32(c) + if ansi > 15 { + return 0, 0, 0, 0xffff + } + + return ansiToRGB(byte(ansi)).RGBA() +} + +// IndexedColor is an ANSI 256 (8-bit) color with a value from 0 to 255. +type IndexedColor uint8 + +var _ Color = IndexedColor(0) + +// RGBA returns the red, green, blue and alpha components of the color. It +// satisfies the color.Color interface. +func (c IndexedColor) RGBA() (uint32, uint32, uint32, uint32) { + return ansiToRGB(byte(c)).RGBA() +} + +// ExtendedColor is an ANSI 256 (8-bit) color with a value from 0 to 255. +// +// Deprecated: use [IndexedColor] instead. +type ExtendedColor = IndexedColor + +// TrueColor is a 24-bit color that can be used in the terminal. +// This can be used to represent RGB colors. +// +// For example, the color red can be represented as: +// +// TrueColor(0xff0000) +// +// Deprecated: use [RGBColor] instead. +type TrueColor uint32 + +var _ Color = TrueColor(0) + +// RGBA returns the red, green, blue and alpha components of the color. It +// satisfies the color.Color interface. +func (c TrueColor) RGBA() (uint32, uint32, uint32, uint32) { + r, g, b := hexToRGB(uint32(c)) + return toRGBA(r, g, b) +} + +// RGBColor is a 24-bit color that can be used in the terminal. +// This can be used to represent RGB colors. +type RGBColor struct { + R uint8 + G uint8 + B uint8 +} + +// RGBA returns the red, green, blue and alpha components of the color. It +// satisfies the color.Color interface. +func (c RGBColor) RGBA() (uint32, uint32, uint32, uint32) { + return toRGBA(uint32(c.R), uint32(c.G), uint32(c.B)) +} + +// ansiToRGB converts an ANSI color to a 24-bit RGB color. +// +// r, g, b := ansiToRGB(57) +func ansiToRGB(ansi byte) color.Color { + return ansiHex[ansi] +} + +// hexToRGB converts a number in hexadecimal format to red, green, and blue +// values. +// +// r, g, b := hexToRGB(0x0000FF) +func hexToRGB(hex uint32) (uint32, uint32, uint32) { + return hex >> 16 & 0xff, hex >> 8 & 0xff, hex & 0xff +} + +// toRGBA converts an RGB 8-bit color values to 32-bit color values suitable +// for color.Color. +// +// color.Color requires 16-bit color values, so we duplicate the 8-bit values +// to fill the 16-bit values. +// +// This always returns 0xffff (opaque) for the alpha channel. +func toRGBA(r, g, b uint32) (uint32, uint32, uint32, uint32) { + r |= r << 8 + g |= g << 8 + b |= b << 8 + return r, g, b, 0xffff +} + +//nolint:unused +func distSq(r1, g1, b1, r2, g2, b2 int) int { + return ((r1-r2)*(r1-r2) + (g1-g2)*(g1-g2) + (b1-b2)*(b1-b2)) +} + +func to6Cube[T int | float64](v T) int { + if v < 48 { + return 0 + } + if v < 115 { + return 1 + } + return int((v - 35) / 40) +} + +// Convert256 converts a [color.Color], usually a 24-bit color, to xterm(1) 256 +// color palette. +// +// xterm provides a 6x6x6 color cube (16 - 231) and 24 greys (232 - 255). We +// map our RGB color to the closest in the cube, also work out the closest +// grey, and use the nearest of the two based on the lightness of the color. +// +// Note that the xterm has much lower resolution for darker colors (they are +// not evenly spread out), so our 6 levels are not evenly spread: 0x0, 0x5f +// (95), 0x87 (135), 0xaf (175), 0xd7 (215) and 0xff (255). Greys are more +// evenly spread (8, 18, 28 ... 238). +func Convert256(c color.Color) IndexedColor { + // If the color is already an IndexedColor, return it. + if i, ok := c.(IndexedColor); ok { + return i + } + + // Note: this is mostly ported from tmux/colour.c. + col, ok := colorful.MakeColor(c) + if !ok { + return IndexedColor(0) + } + + r := col.R * 255 + g := col.G * 255 + b := col.B * 255 + + q2c := [6]int{0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff} + + // Map RGB to 6x6x6 cube. + qr := to6Cube(r) + cr := q2c[qr] + qg := to6Cube(g) + cg := q2c[qg] + qb := to6Cube(b) + cb := q2c[qb] + + // If we have hit the color exactly, return early. + ci := (36 * qr) + (6 * qg) + qb + if cr == int(r) && cg == int(g) && cb == int(b) { + return IndexedColor(16 + ci) //nolint:gosec + } + + // Work out the closest grey (average of RGB). + greyAvg := int(r+g+b) / 3 + var greyIdx int + if greyAvg > 238 { + greyIdx = 23 + } else { + greyIdx = (greyAvg - 3) / 10 + } + grey := 8 + (10 * greyIdx) + + // Return the one which is nearer to the original input rgb value + // XXX: This is where it differs from tmux's implementation, we prefer the + // closer color to the original in terms of light distances rather than the + // cube distance. + c2 := colorful.Color{R: float64(cr) / 255.0, G: float64(cg) / 255.0, B: float64(cb) / 255.0} + g2 := colorful.Color{R: float64(grey) / 255.0, G: float64(grey) / 255.0, B: float64(grey) / 255.0} + colorDist := col.DistanceHSLuv(c2) + grayDist := col.DistanceHSLuv(g2) + + if colorDist <= grayDist { + return IndexedColor(16 + ci) //nolint:gosec + } + return IndexedColor(232 + greyIdx) //nolint:gosec + + // // Is grey or 6x6x6 color closest? + // d := distSq(cr, cg, cb, int(r), int(g), int(b)) + // if distSq(grey, grey, grey, int(r), int(g), int(b)) < d { + // return IndexedColor(232 + greyIdx) //nolint:gosec + // } + // return IndexedColor(16 + ci) //nolint:gosec +} + +// Convert16 converts a [color.Color] to a 16-color ANSI color. It will first +// try to find a match in the 256 xterm(1) color palette, and then map that to +// the 16-color ANSI palette. +func Convert16(c color.Color) BasicColor { + switch c := c.(type) { + case BasicColor: + // If the color is already a BasicColor, return it. + return c + case IndexedColor: + // If the color is already an IndexedColor, return the corresponding + // BasicColor. + return ansi256To16[c] + default: + c256 := Convert256(c) + return ansi256To16[c256] + } +} + +// RGB values of ANSI colors (0-255). +var ansiHex = [...]color.RGBA{ + 0: {R: 0x00, G: 0x00, B: 0x00, A: 0xff}, // "#000000" + 1: {R: 0x80, G: 0x00, B: 0x00, A: 0xff}, // "#800000" + 2: {R: 0x00, G: 0x80, B: 0x00, A: 0xff}, // "#008000" + 3: {R: 0x80, G: 0x80, B: 0x00, A: 0xff}, // "#808000" + 4: {R: 0x00, G: 0x00, B: 0x80, A: 0xff}, // "#000080" + 5: {R: 0x80, G: 0x00, B: 0x80, A: 0xff}, // "#800080" + 6: {R: 0x00, G: 0x80, B: 0x80, A: 0xff}, // "#008080" + 7: {R: 0xc0, G: 0xc0, B: 0xc0, A: 0xff}, // "#c0c0c0" + 8: {R: 0x80, G: 0x80, B: 0x80, A: 0xff}, // "#808080" + 9: {R: 0xff, G: 0x00, B: 0x00, A: 0xff}, // "#ff0000" + 10: {R: 0x00, G: 0xff, B: 0x00, A: 0xff}, // "#00ff00" + 11: {R: 0xff, G: 0xff, B: 0x00, A: 0xff}, // "#ffff00" + 12: {R: 0x00, G: 0x00, B: 0xff, A: 0xff}, // "#0000ff" + 13: {R: 0xff, G: 0x00, B: 0xff, A: 0xff}, // "#ff00ff" + 14: {R: 0x00, G: 0xff, B: 0xff, A: 0xff}, // "#00ffff" + 15: {R: 0xff, G: 0xff, B: 0xff, A: 0xff}, // "#ffffff" + 16: {R: 0x00, G: 0x00, B: 0x00, A: 0xff}, // "#000000" + 17: {R: 0x00, G: 0x00, B: 0x5f, A: 0xff}, // "#00005f" + 18: {R: 0x00, G: 0x00, B: 0x87, A: 0xff}, // "#000087" + 19: {R: 0x00, G: 0x00, B: 0xaf, A: 0xff}, // "#0000af" + 20: {R: 0x00, G: 0x00, B: 0xd7, A: 0xff}, // "#0000d7" + 21: {R: 0x00, G: 0x00, B: 0xff, A: 0xff}, // "#0000ff" + 22: {R: 0x00, G: 0x5f, B: 0x00, A: 0xff}, // "#005f00" + 23: {R: 0x00, G: 0x5f, B: 0x5f, A: 0xff}, // "#005f5f" + 24: {R: 0x00, G: 0x5f, B: 0x87, A: 0xff}, // "#005f87" + 25: {R: 0x00, G: 0x5f, B: 0xaf, A: 0xff}, // "#005faf" + 26: {R: 0x00, G: 0x5f, B: 0xd7, A: 0xff}, // "#005fd7" + 27: {R: 0x00, G: 0x5f, B: 0xff, A: 0xff}, // "#005fff" + 28: {R: 0x00, G: 0x87, B: 0x00, A: 0xff}, // "#008700" + 29: {R: 0x00, G: 0x87, B: 0x5f, A: 0xff}, // "#00875f" + 30: {R: 0x00, G: 0x87, B: 0x87, A: 0xff}, // "#008787" + 31: {R: 0x00, G: 0x87, B: 0xaf, A: 0xff}, // "#0087af" + 32: {R: 0x00, G: 0x87, B: 0xd7, A: 0xff}, // "#0087d7" + 33: {R: 0x00, G: 0x87, B: 0xff, A: 0xff}, // "#0087ff" + 34: {R: 0x00, G: 0xaf, B: 0x00, A: 0xff}, // "#00af00" + 35: {R: 0x00, G: 0xaf, B: 0x5f, A: 0xff}, // "#00af5f" + 36: {R: 0x00, G: 0xaf, B: 0x87, A: 0xff}, // "#00af87" + 37: {R: 0x00, G: 0xaf, B: 0xaf, A: 0xff}, // "#00afaf" + 38: {R: 0x00, G: 0xaf, B: 0xd7, A: 0xff}, // "#00afd7" + 39: {R: 0x00, G: 0xaf, B: 0xff, A: 0xff}, // "#00afff" + 40: {R: 0x00, G: 0xd7, B: 0x00, A: 0xff}, // "#00d700" + 41: {R: 0x00, G: 0xd7, B: 0x5f, A: 0xff}, // "#00d75f" + 42: {R: 0x00, G: 0xd7, B: 0x87, A: 0xff}, // "#00d787" + 43: {R: 0x00, G: 0xd7, B: 0xaf, A: 0xff}, // "#00d7af" + 44: {R: 0x00, G: 0xd7, B: 0xd7, A: 0xff}, // "#00d7d7" + 45: {R: 0x00, G: 0xd7, B: 0xff, A: 0xff}, // "#00d7ff" + 46: {R: 0x00, G: 0xff, B: 0x00, A: 0xff}, // "#00ff00" + 47: {R: 0x00, G: 0xff, B: 0x5f, A: 0xff}, // "#00ff5f" + 48: {R: 0x00, G: 0xff, B: 0x87, A: 0xff}, // "#00ff87" + 49: {R: 0x00, G: 0xff, B: 0xaf, A: 0xff}, // "#00ffaf" + 50: {R: 0x00, G: 0xff, B: 0xd7, A: 0xff}, // "#00ffd7" + 51: {R: 0x00, G: 0xff, B: 0xff, A: 0xff}, // "#00ffff" + 52: {R: 0x5f, G: 0x00, B: 0x00, A: 0xff}, // "#5f0000" + 53: {R: 0x5f, G: 0x00, B: 0x5f, A: 0xff}, // "#5f005f" + 54: {R: 0x5f, G: 0x00, B: 0x87, A: 0xff}, // "#5f0087" + 55: {R: 0x5f, G: 0x00, B: 0xaf, A: 0xff}, // "#5f00af" + 56: {R: 0x5f, G: 0x00, B: 0xd7, A: 0xff}, // "#5f00d7" + 57: {R: 0x5f, G: 0x00, B: 0xff, A: 0xff}, // "#5f00ff" + 58: {R: 0x5f, G: 0x5f, B: 0x00, A: 0xff}, // "#5f5f00" + 59: {R: 0x5f, G: 0x5f, B: 0x5f, A: 0xff}, // "#5f5f5f" + 60: {R: 0x5f, G: 0x5f, B: 0x87, A: 0xff}, // "#5f5f87" + 61: {R: 0x5f, G: 0x5f, B: 0xaf, A: 0xff}, // "#5f5faf" + 62: {R: 0x5f, G: 0x5f, B: 0xd7, A: 0xff}, // "#5f5fd7" + 63: {R: 0x5f, G: 0x5f, B: 0xff, A: 0xff}, // "#5f5fff" + 64: {R: 0x5f, G: 0x87, B: 0x00, A: 0xff}, // "#5f8700" + 65: {R: 0x5f, G: 0x87, B: 0x5f, A: 0xff}, // "#5f875f" + 66: {R: 0x5f, G: 0x87, B: 0x87, A: 0xff}, // "#5f8787" + 67: {R: 0x5f, G: 0x87, B: 0xaf, A: 0xff}, // "#5f87af" + 68: {R: 0x5f, G: 0x87, B: 0xd7, A: 0xff}, // "#5f87d7" + 69: {R: 0x5f, G: 0x87, B: 0xff, A: 0xff}, // "#5f87ff" + 70: {R: 0x5f, G: 0xaf, B: 0x00, A: 0xff}, // "#5faf00" + 71: {R: 0x5f, G: 0xaf, B: 0x5f, A: 0xff}, // "#5faf5f" + 72: {R: 0x5f, G: 0xaf, B: 0x87, A: 0xff}, // "#5faf87" + 73: {R: 0x5f, G: 0xaf, B: 0xaf, A: 0xff}, // "#5fafaf" + 74: {R: 0x5f, G: 0xaf, B: 0xd7, A: 0xff}, // "#5fafd7" + 75: {R: 0x5f, G: 0xaf, B: 0xff, A: 0xff}, // "#5fafff" + 76: {R: 0x5f, G: 0xd7, B: 0x00, A: 0xff}, // "#5fd700" + 77: {R: 0x5f, G: 0xd7, B: 0x5f, A: 0xff}, // "#5fd75f" + 78: {R: 0x5f, G: 0xd7, B: 0x87, A: 0xff}, // "#5fd787" + 79: {R: 0x5f, G: 0xd7, B: 0xaf, A: 0xff}, // "#5fd7af" + 80: {R: 0x5f, G: 0xd7, B: 0xd7, A: 0xff}, // "#5fd7d7" + 81: {R: 0x5f, G: 0xd7, B: 0xff, A: 0xff}, // "#5fd7ff" + 82: {R: 0x5f, G: 0xff, B: 0x00, A: 0xff}, // "#5fff00" + 83: {R: 0x5f, G: 0xff, B: 0x5f, A: 0xff}, // "#5fff5f" + 84: {R: 0x5f, G: 0xff, B: 0x87, A: 0xff}, // "#5fff87" + 85: {R: 0x5f, G: 0xff, B: 0xaf, A: 0xff}, // "#5fffaf" + 86: {R: 0x5f, G: 0xff, B: 0xd7, A: 0xff}, // "#5fffd7" + 87: {R: 0x5f, G: 0xff, B: 0xff, A: 0xff}, // "#5fffff" + 88: {R: 0x87, G: 0x00, B: 0x00, A: 0xff}, // "#870000" + 89: {R: 0x87, G: 0x00, B: 0x5f, A: 0xff}, // "#87005f" + 90: {R: 0x87, G: 0x00, B: 0x87, A: 0xff}, // "#870087" + 91: {R: 0x87, G: 0x00, B: 0xaf, A: 0xff}, // "#8700af" + 92: {R: 0x87, G: 0x00, B: 0xd7, A: 0xff}, // "#8700d7" + 93: {R: 0x87, G: 0x00, B: 0xff, A: 0xff}, // "#8700ff" + 94: {R: 0x87, G: 0x5f, B: 0x00, A: 0xff}, // "#875f00" + 95: {R: 0x87, G: 0x5f, B: 0x5f, A: 0xff}, // "#875f5f" + 96: {R: 0x87, G: 0x5f, B: 0x87, A: 0xff}, // "#875f87" + 97: {R: 0x87, G: 0x5f, B: 0xaf, A: 0xff}, // "#875faf" + 98: {R: 0x87, G: 0x5f, B: 0xd7, A: 0xff}, // "#875fd7" + 99: {R: 0x87, G: 0x5f, B: 0xff, A: 0xff}, // "#875fff" + 100: {R: 0x87, G: 0x87, B: 0x00, A: 0xff}, // "#878700" + 101: {R: 0x87, G: 0x87, B: 0x5f, A: 0xff}, // "#87875f" + 102: {R: 0x87, G: 0x87, B: 0x87, A: 0xff}, // "#878787" + 103: {R: 0x87, G: 0x87, B: 0xaf, A: 0xff}, // "#8787af" + 104: {R: 0x87, G: 0x87, B: 0xd7, A: 0xff}, // "#8787d7" + 105: {R: 0x87, G: 0x87, B: 0xff, A: 0xff}, // "#8787ff" + 106: {R: 0x87, G: 0xaf, B: 0x00, A: 0xff}, // "#87af00" + 107: {R: 0x87, G: 0xaf, B: 0x5f, A: 0xff}, // "#87af5f" + 108: {R: 0x87, G: 0xaf, B: 0x87, A: 0xff}, // "#87af87" + 109: {R: 0x87, G: 0xaf, B: 0xaf, A: 0xff}, // "#87afaf" + 110: {R: 0x87, G: 0xaf, B: 0xd7, A: 0xff}, // "#87afd7" + 111: {R: 0x87, G: 0xaf, B: 0xff, A: 0xff}, // "#87afff" + 112: {R: 0x87, G: 0xd7, B: 0x00, A: 0xff}, // "#87d700" + 113: {R: 0x87, G: 0xd7, B: 0x5f, A: 0xff}, // "#87d75f" + 114: {R: 0x87, G: 0xd7, B: 0x87, A: 0xff}, // "#87d787" + 115: {R: 0x87, G: 0xd7, B: 0xaf, A: 0xff}, // "#87d7af" + 116: {R: 0x87, G: 0xd7, B: 0xd7, A: 0xff}, // "#87d7d7" + 117: {R: 0x87, G: 0xd7, B: 0xff, A: 0xff}, // "#87d7ff" + 118: {R: 0x87, G: 0xff, B: 0x00, A: 0xff}, // "#87ff00" + 119: {R: 0x87, G: 0xff, B: 0x5f, A: 0xff}, // "#87ff5f" + 120: {R: 0x87, G: 0xff, B: 0x87, A: 0xff}, // "#87ff87" + 121: {R: 0x87, G: 0xff, B: 0xaf, A: 0xff}, // "#87ffaf" + 122: {R: 0x87, G: 0xff, B: 0xd7, A: 0xff}, // "#87ffd7" + 123: {R: 0x87, G: 0xff, B: 0xff, A: 0xff}, // "#87ffff" + 124: {R: 0xaf, G: 0x00, B: 0x00, A: 0xff}, // "#af0000" + 125: {R: 0xaf, G: 0x00, B: 0x5f, A: 0xff}, // "#af005f" + 126: {R: 0xaf, G: 0x00, B: 0x87, A: 0xff}, // "#af0087" + 127: {R: 0xaf, G: 0x00, B: 0xaf, A: 0xff}, // "#af00af" + 128: {R: 0xaf, G: 0x00, B: 0xd7, A: 0xff}, // "#af00d7" + 129: {R: 0xaf, G: 0x00, B: 0xff, A: 0xff}, // "#af00ff" + 130: {R: 0xaf, G: 0x5f, B: 0x00, A: 0xff}, // "#af5f00" + 131: {R: 0xaf, G: 0x5f, B: 0x5f, A: 0xff}, // "#af5f5f" + 132: {R: 0xaf, G: 0x5f, B: 0x87, A: 0xff}, // "#af5f87" + 133: {R: 0xaf, G: 0x5f, B: 0xaf, A: 0xff}, // "#af5faf" + 134: {R: 0xaf, G: 0x5f, B: 0xd7, A: 0xff}, // "#af5fd7" + 135: {R: 0xaf, G: 0x5f, B: 0xff, A: 0xff}, // "#af5fff" + 136: {R: 0xaf, G: 0x87, B: 0x00, A: 0xff}, // "#af8700" + 137: {R: 0xaf, G: 0x87, B: 0x5f, A: 0xff}, // "#af875f" + 138: {R: 0xaf, G: 0x87, B: 0x87, A: 0xff}, // "#af8787" + 139: {R: 0xaf, G: 0x87, B: 0xaf, A: 0xff}, // "#af87af" + 140: {R: 0xaf, G: 0x87, B: 0xd7, A: 0xff}, // "#af87d7" + 141: {R: 0xaf, G: 0x87, B: 0xff, A: 0xff}, // "#af87ff" + 142: {R: 0xaf, G: 0xaf, B: 0x00, A: 0xff}, // "#afaf00" + 143: {R: 0xaf, G: 0xaf, B: 0x5f, A: 0xff}, // "#afaf5f" + 144: {R: 0xaf, G: 0xaf, B: 0x87, A: 0xff}, // "#afaf87" + 145: {R: 0xaf, G: 0xaf, B: 0xaf, A: 0xff}, // "#afafaf" + 146: {R: 0xaf, G: 0xaf, B: 0xd7, A: 0xff}, // "#afafd7" + 147: {R: 0xaf, G: 0xaf, B: 0xff, A: 0xff}, // "#afafff" + 148: {R: 0xaf, G: 0xd7, B: 0x00, A: 0xff}, // "#afd700" + 149: {R: 0xaf, G: 0xd7, B: 0x5f, A: 0xff}, // "#afd75f" + 150: {R: 0xaf, G: 0xd7, B: 0x87, A: 0xff}, // "#afd787" + 151: {R: 0xaf, G: 0xd7, B: 0xaf, A: 0xff}, // "#afd7af" + 152: {R: 0xaf, G: 0xd7, B: 0xd7, A: 0xff}, // "#afd7d7" + 153: {R: 0xaf, G: 0xd7, B: 0xff, A: 0xff}, // "#afd7ff" + 154: {R: 0xaf, G: 0xff, B: 0x00, A: 0xff}, // "#afff00" + 155: {R: 0xaf, G: 0xff, B: 0x5f, A: 0xff}, // "#afff5f" + 156: {R: 0xaf, G: 0xff, B: 0x87, A: 0xff}, // "#afff87" + 157: {R: 0xaf, G: 0xff, B: 0xaf, A: 0xff}, // "#afffaf" + 158: {R: 0xaf, G: 0xff, B: 0xd7, A: 0xff}, // "#afffd7" + 159: {R: 0xaf, G: 0xff, B: 0xff, A: 0xff}, // "#afffff" + 160: {R: 0xd7, G: 0x00, B: 0x00, A: 0xff}, // "#d70000" + 161: {R: 0xd7, G: 0x00, B: 0x5f, A: 0xff}, // "#d7005f" + 162: {R: 0xd7, G: 0x00, B: 0x87, A: 0xff}, // "#d70087" + 163: {R: 0xd7, G: 0x00, B: 0xaf, A: 0xff}, // "#d700af" + 164: {R: 0xd7, G: 0x00, B: 0xd7, A: 0xff}, // "#d700d7" + 165: {R: 0xd7, G: 0x00, B: 0xff, A: 0xff}, // "#d700ff" + 166: {R: 0xd7, G: 0x5f, B: 0x00, A: 0xff}, // "#d75f00" + 167: {R: 0xd7, G: 0x5f, B: 0x5f, A: 0xff}, // "#d75f5f" + 168: {R: 0xd7, G: 0x5f, B: 0x87, A: 0xff}, // "#d75f87" + 169: {R: 0xd7, G: 0x5f, B: 0xaf, A: 0xff}, // "#d75faf" + 170: {R: 0xd7, G: 0x5f, B: 0xd7, A: 0xff}, // "#d75fd7" + 171: {R: 0xd7, G: 0x5f, B: 0xff, A: 0xff}, // "#d75fff" + 172: {R: 0xd7, G: 0x87, B: 0x00, A: 0xff}, // "#d78700" + 173: {R: 0xd7, G: 0x87, B: 0x5f, A: 0xff}, // "#d7875f" + 174: {R: 0xd7, G: 0x87, B: 0x87, A: 0xff}, // "#d78787" + 175: {R: 0xd7, G: 0x87, B: 0xaf, A: 0xff}, // "#d787af" + 176: {R: 0xd7, G: 0x87, B: 0xd7, A: 0xff}, // "#d787d7" + 177: {R: 0xd7, G: 0x87, B: 0xff, A: 0xff}, // "#d787ff" + 178: {R: 0xd7, G: 0xaf, B: 0x00, A: 0xff}, // "#d7af00" + 179: {R: 0xd7, G: 0xaf, B: 0x5f, A: 0xff}, // "#d7af5f" + 180: {R: 0xd7, G: 0xaf, B: 0x87, A: 0xff}, // "#d7af87" + 181: {R: 0xd7, G: 0xaf, B: 0xaf, A: 0xff}, // "#d7afaf" + 182: {R: 0xd7, G: 0xaf, B: 0xd7, A: 0xff}, // "#d7afd7" + 183: {R: 0xd7, G: 0xaf, B: 0xff, A: 0xff}, // "#d7afff" + 184: {R: 0xd7, G: 0xd7, B: 0x00, A: 0xff}, // "#d7d700" + 185: {R: 0xd7, G: 0xd7, B: 0x5f, A: 0xff}, // "#d7d75f" + 186: {R: 0xd7, G: 0xd7, B: 0x87, A: 0xff}, // "#d7d787" + 187: {R: 0xd7, G: 0xd7, B: 0xaf, A: 0xff}, // "#d7d7af" + 188: {R: 0xd7, G: 0xd7, B: 0xd7, A: 0xff}, // "#d7d7d7" + 189: {R: 0xd7, G: 0xd7, B: 0xff, A: 0xff}, // "#d7d7ff" + 190: {R: 0xd7, G: 0xff, B: 0x00, A: 0xff}, // "#d7ff00" + 191: {R: 0xd7, G: 0xff, B: 0x5f, A: 0xff}, // "#d7ff5f" + 192: {R: 0xd7, G: 0xff, B: 0x87, A: 0xff}, // "#d7ff87" + 193: {R: 0xd7, G: 0xff, B: 0xaf, A: 0xff}, // "#d7ffaf" + 194: {R: 0xd7, G: 0xff, B: 0xd7, A: 0xff}, // "#d7ffd7" + 195: {R: 0xd7, G: 0xff, B: 0xff, A: 0xff}, // "#d7ffff" + 196: {R: 0xff, G: 0x00, B: 0x00, A: 0xff}, // "#ff0000" + 197: {R: 0xff, G: 0x00, B: 0x5f, A: 0xff}, // "#ff005f" + 198: {R: 0xff, G: 0x00, B: 0x87, A: 0xff}, // "#ff0087" + 199: {R: 0xff, G: 0x00, B: 0xaf, A: 0xff}, // "#ff00af" + 200: {R: 0xff, G: 0x00, B: 0xd7, A: 0xff}, // "#ff00d7" + 201: {R: 0xff, G: 0x00, B: 0xff, A: 0xff}, // "#ff00ff" + 202: {R: 0xff, G: 0x5f, B: 0x00, A: 0xff}, // "#ff5f00" + 203: {R: 0xff, G: 0x5f, B: 0x5f, A: 0xff}, // "#ff5f5f" + 204: {R: 0xff, G: 0x5f, B: 0x87, A: 0xff}, // "#ff5f87" + 205: {R: 0xff, G: 0x5f, B: 0xaf, A: 0xff}, // "#ff5faf" + 206: {R: 0xff, G: 0x5f, B: 0xd7, A: 0xff}, // "#ff5fd7" + 207: {R: 0xff, G: 0x5f, B: 0xff, A: 0xff}, // "#ff5fff" + 208: {R: 0xff, G: 0x87, B: 0x00, A: 0xff}, // "#ff8700" + 209: {R: 0xff, G: 0x87, B: 0x5f, A: 0xff}, // "#ff875f" + 210: {R: 0xff, G: 0x87, B: 0x87, A: 0xff}, // "#ff8787" + 211: {R: 0xff, G: 0x87, B: 0xaf, A: 0xff}, // "#ff87af" + 212: {R: 0xff, G: 0x87, B: 0xd7, A: 0xff}, // "#ff87d7" + 213: {R: 0xff, G: 0x87, B: 0xff, A: 0xff}, // "#ff87ff" + 214: {R: 0xff, G: 0xaf, B: 0x00, A: 0xff}, // "#ffaf00" + 215: {R: 0xff, G: 0xaf, B: 0x5f, A: 0xff}, // "#ffaf5f" + 216: {R: 0xff, G: 0xaf, B: 0x87, A: 0xff}, // "#ffaf87" + 217: {R: 0xff, G: 0xaf, B: 0xaf, A: 0xff}, // "#ffafaf" + 218: {R: 0xff, G: 0xaf, B: 0xd7, A: 0xff}, // "#ffafd7" + 219: {R: 0xff, G: 0xaf, B: 0xff, A: 0xff}, // "#ffafff" + 220: {R: 0xff, G: 0xd7, B: 0x00, A: 0xff}, // "#ffd700" + 221: {R: 0xff, G: 0xd7, B: 0x5f, A: 0xff}, // "#ffd75f" + 222: {R: 0xff, G: 0xd7, B: 0x87, A: 0xff}, // "#ffd787" + 223: {R: 0xff, G: 0xd7, B: 0xaf, A: 0xff}, // "#ffd7af" + 224: {R: 0xff, G: 0xd7, B: 0xd7, A: 0xff}, // "#ffd7d7" + 225: {R: 0xff, G: 0xd7, B: 0xff, A: 0xff}, // "#ffd7ff" + 226: {R: 0xff, G: 0xff, B: 0x00, A: 0xff}, // "#ffff00" + 227: {R: 0xff, G: 0xff, B: 0x5f, A: 0xff}, // "#ffff5f" + 228: {R: 0xff, G: 0xff, B: 0x87, A: 0xff}, // "#ffff87" + 229: {R: 0xff, G: 0xff, B: 0xaf, A: 0xff}, // "#ffffaf" + 230: {R: 0xff, G: 0xff, B: 0xd7, A: 0xff}, // "#ffffd7" + 231: {R: 0xff, G: 0xff, B: 0xff, A: 0xff}, // "#ffffff" + 232: {R: 0x08, G: 0x08, B: 0x08, A: 0xff}, // "#080808" + 233: {R: 0x12, G: 0x12, B: 0x12, A: 0xff}, // "#121212" + 234: {R: 0x1c, G: 0x1c, B: 0x1c, A: 0xff}, // "#1c1c1c" + 235: {R: 0x26, G: 0x26, B: 0x26, A: 0xff}, // "#262626" + 236: {R: 0x30, G: 0x30, B: 0x30, A: 0xff}, // "#303030" + 237: {R: 0x3a, G: 0x3a, B: 0x3a, A: 0xff}, // "#3a3a3a" + 238: {R: 0x44, G: 0x44, B: 0x44, A: 0xff}, // "#444444" + 239: {R: 0x4e, G: 0x4e, B: 0x4e, A: 0xff}, // "#4e4e4e" + 240: {R: 0x58, G: 0x58, B: 0x58, A: 0xff}, // "#585858" + 241: {R: 0x62, G: 0x62, B: 0x62, A: 0xff}, // "#626262" + 242: {R: 0x6c, G: 0x6c, B: 0x6c, A: 0xff}, // "#6c6c6c" + 243: {R: 0x76, G: 0x76, B: 0x76, A: 0xff}, // "#767676" + 244: {R: 0x80, G: 0x80, B: 0x80, A: 0xff}, // "#808080" + 245: {R: 0x8a, G: 0x8a, B: 0x8a, A: 0xff}, // "#8a8a8a" + 246: {R: 0x94, G: 0x94, B: 0x94, A: 0xff}, // "#949494" + 247: {R: 0x9e, G: 0x9e, B: 0x9e, A: 0xff}, // "#9e9e9e" + 248: {R: 0xa8, G: 0xa8, B: 0xa8, A: 0xff}, // "#a8a8a8" + 249: {R: 0xb2, G: 0xb2, B: 0xb2, A: 0xff}, // "#b2b2b2" + 250: {R: 0xbc, G: 0xbc, B: 0xbc, A: 0xff}, // "#bcbcbc" + 251: {R: 0xc6, G: 0xc6, B: 0xc6, A: 0xff}, // "#c6c6c6" + 252: {R: 0xd0, G: 0xd0, B: 0xd0, A: 0xff}, // "#d0d0d0" + 253: {R: 0xda, G: 0xda, B: 0xda, A: 0xff}, // "#dadada" + 254: {R: 0xe4, G: 0xe4, B: 0xe4, A: 0xff}, // "#e4e4e4" + 255: {R: 0xee, G: 0xee, B: 0xee, A: 0xff}, // "#eeeeee" +} + +var ansi256To16 = [...]BasicColor{ + 0: 0, + 1: 1, + 2: 2, + 3: 3, + 4: 4, + 5: 5, + 6: 6, + 7: 7, + 8: 8, + 9: 9, + 10: 10, + 11: 11, + 12: 12, + 13: 13, + 14: 14, + 15: 15, + 16: 0, + 17: 4, + 18: 4, + 19: 4, + 20: 12, + 21: 12, + 22: 2, + 23: 6, + 24: 4, + 25: 4, + 26: 12, + 27: 12, + 28: 2, + 29: 2, + 30: 6, + 31: 4, + 32: 12, + 33: 12, + 34: 2, + 35: 2, + 36: 2, + 37: 6, + 38: 12, + 39: 12, + 40: 10, + 41: 10, + 42: 10, + 43: 10, + 44: 14, + 45: 12, + 46: 10, + 47: 10, + 48: 10, + 49: 10, + 50: 10, + 51: 14, + 52: 1, + 53: 5, + 54: 4, + 55: 4, + 56: 12, + 57: 12, + 58: 3, + 59: 8, + 60: 4, + 61: 4, + 62: 12, + 63: 12, + 64: 2, + 65: 2, + 66: 6, + 67: 4, + 68: 12, + 69: 12, + 70: 2, + 71: 2, + 72: 2, + 73: 6, + 74: 12, + 75: 12, + 76: 10, + 77: 10, + 78: 10, + 79: 10, + 80: 14, + 81: 12, + 82: 10, + 83: 10, + 84: 10, + 85: 10, + 86: 10, + 87: 14, + 88: 1, + 89: 1, + 90: 5, + 91: 4, + 92: 12, + 93: 12, + 94: 1, + 95: 1, + 96: 5, + 97: 4, + 98: 12, + 99: 12, + 100: 3, + 101: 3, + 102: 8, + 103: 4, + 104: 12, + 105: 12, + 106: 2, + 107: 2, + 108: 2, + 109: 6, + 110: 12, + 111: 12, + 112: 10, + 113: 10, + 114: 10, + 115: 10, + 116: 14, + 117: 12, + 118: 10, + 119: 10, + 120: 10, + 121: 10, + 122: 10, + 123: 14, + 124: 1, + 125: 1, + 126: 1, + 127: 5, + 128: 12, + 129: 12, + 130: 1, + 131: 1, + 132: 1, + 133: 5, + 134: 12, + 135: 12, + 136: 1, + 137: 1, + 138: 1, + 139: 5, + 140: 12, + 141: 12, + 142: 3, + 143: 3, + 144: 3, + 145: 7, + 146: 12, + 147: 12, + 148: 10, + 149: 10, + 150: 10, + 151: 10, + 152: 14, + 153: 12, + 154: 10, + 155: 10, + 156: 10, + 157: 10, + 158: 10, + 159: 14, + 160: 9, + 161: 9, + 162: 9, + 163: 9, + 164: 13, + 165: 12, + 166: 9, + 167: 9, + 168: 9, + 169: 9, + 170: 13, + 171: 12, + 172: 9, + 173: 9, + 174: 9, + 175: 9, + 176: 13, + 177: 12, + 178: 9, + 179: 9, + 180: 9, + 181: 9, + 182: 13, + 183: 12, + 184: 11, + 185: 11, + 186: 11, + 187: 11, + 188: 7, + 189: 12, + 190: 10, + 191: 10, + 192: 10, + 193: 10, + 194: 10, + 195: 14, + 196: 9, + 197: 9, + 198: 9, + 199: 9, + 200: 9, + 201: 13, + 202: 9, + 203: 9, + 204: 9, + 205: 9, + 206: 9, + 207: 13, + 208: 9, + 209: 9, + 210: 9, + 211: 9, + 212: 9, + 213: 13, + 214: 9, + 215: 9, + 216: 9, + 217: 9, + 218: 9, + 219: 13, + 220: 9, + 221: 9, + 222: 9, + 223: 9, + 224: 9, + 225: 13, + 226: 11, + 227: 11, + 228: 11, + 229: 11, + 230: 11, + 231: 15, + 232: 0, + 233: 0, + 234: 0, + 235: 0, + 236: 0, + 237: 0, + 238: 8, + 239: 8, + 240: 8, + 241: 8, + 242: 8, + 243: 8, + 244: 7, + 245: 7, + 246: 7, + 247: 7, + 248: 7, + 249: 7, + 250: 15, + 251: 15, + 252: 15, + 253: 15, + 254: 15, + 255: 15, +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ctrl.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ctrl.go new file mode 100644 index 0000000..64bcf11 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/ctrl.go @@ -0,0 +1,156 @@ +package ansi + +import ( + "strconv" + "strings" +) + +// RequestNameVersion (XTVERSION) is a control sequence that requests the +// terminal's name and version. It responds with a DSR sequence identifying the +// terminal. +// +// CSI > 0 q +// DCS > | text ST +// +// See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-PC-Style-Function-Keys +const ( + RequestNameVersion = "\x1b[>q" + XTVERSION = RequestNameVersion +) + +// RequestXTVersion is a control sequence that requests the terminal's XTVERSION. It responds with a DSR sequence identifying the version. +// +// CSI > Ps q +// DCS > | text ST +// +// See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-PC-Style-Function-Keys +// +// Deprecated: use [RequestNameVersion] instead. +const RequestXTVersion = RequestNameVersion + +// PrimaryDeviceAttributes (DA1) is a control sequence that reports the +// terminal's primary device attributes. +// +// CSI c +// CSI 0 c +// CSI ? Ps ; ... c +// +// If no attributes are given, or if the attribute is 0, this function returns +// the request sequence. Otherwise, it returns the response sequence. +// +// Common attributes include: +// - 1 132 columns +// - 2 Printer port +// - 4 Sixel +// - 6 Selective erase +// - 7 Soft character set (DRCS) +// - 8 User-defined keys (UDKs) +// - 9 National replacement character sets (NRCS) (International terminal only) +// - 12 Yugoslavian (SCS) +// - 15 Technical character set +// - 18 Windowing capability +// - 21 Horizontal scrolling +// - 23 Greek +// - 24 Turkish +// - 42 ISO Latin-2 character set +// - 44 PCTerm +// - 45 Soft key map +// - 46 ASCII emulation +// +// See https://vt100.net/docs/vt510-rm/DA1.html +func PrimaryDeviceAttributes(attrs ...int) string { + if len(attrs) == 0 { + return RequestPrimaryDeviceAttributes + } else if len(attrs) == 1 && attrs[0] == 0 { + return "\x1b[0c" + } + + as := make([]string, len(attrs)) + for i, a := range attrs { + as[i] = strconv.Itoa(a) + } + return "\x1b[?" + strings.Join(as, ";") + "c" +} + +// DA1 is an alias for [PrimaryDeviceAttributes]. +func DA1(attrs ...int) string { + return PrimaryDeviceAttributes(attrs...) +} + +// RequestPrimaryDeviceAttributes is a control sequence that requests the +// terminal's primary device attributes (DA1). +// +// CSI c +// +// See https://vt100.net/docs/vt510-rm/DA1.html +const RequestPrimaryDeviceAttributes = "\x1b[c" + +// SecondaryDeviceAttributes (DA2) is a control sequence that reports the +// terminal's secondary device attributes. +// +// CSI > c +// CSI > 0 c +// CSI > Ps ; ... c +// +// See https://vt100.net/docs/vt510-rm/DA2.html +func SecondaryDeviceAttributes(attrs ...int) string { + if len(attrs) == 0 { + return RequestSecondaryDeviceAttributes + } + + as := make([]string, len(attrs)) + for i, a := range attrs { + as[i] = strconv.Itoa(a) + } + return "\x1b[>" + strings.Join(as, ";") + "c" +} + +// DA2 is an alias for [SecondaryDeviceAttributes]. +func DA2(attrs ...int) string { + return SecondaryDeviceAttributes(attrs...) +} + +// RequestSecondaryDeviceAttributes is a control sequence that requests the +// terminal's secondary device attributes (DA2). +// +// CSI > c +// +// See https://vt100.net/docs/vt510-rm/DA2.html +const RequestSecondaryDeviceAttributes = "\x1b[>c" + +// TertiaryDeviceAttributes (DA3) is a control sequence that reports the +// terminal's tertiary device attributes. +// +// CSI = c +// CSI = 0 c +// DCS ! | Text ST +// +// Where Text is the unit ID for the terminal. +// +// If no unit ID is given, or if the unit ID is 0, this function returns the +// request sequence. Otherwise, it returns the response sequence. +// +// See https://vt100.net/docs/vt510-rm/DA3.html +func TertiaryDeviceAttributes(unitID string) string { + switch unitID { + case "": + return RequestTertiaryDeviceAttributes + case "0": + return "\x1b[=0c" + } + + return "\x1bP!|" + unitID + "\x1b\\" +} + +// DA3 is an alias for [TertiaryDeviceAttributes]. +func DA3(unitID string) string { + return TertiaryDeviceAttributes(unitID) +} + +// RequestTertiaryDeviceAttributes is a control sequence that requests the +// terminal's tertiary device attributes (DA3). +// +// CSI = c +// +// See https://vt100.net/docs/vt510-rm/DA3.html +const RequestTertiaryDeviceAttributes = "\x1b[=c" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cursor.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cursor.go new file mode 100644 index 0000000..4adf689 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cursor.go @@ -0,0 +1,635 @@ +package ansi + +import ( + "strconv" +) + +// SaveCursor (DECSC) is an escape sequence that saves the current cursor +// position. +// +// ESC 7 +// +// See: https://vt100.net/docs/vt510-rm/DECSC.html +const ( + SaveCursor = "\x1b7" + DECSC = SaveCursor +) + +// RestoreCursor (DECRC) is an escape sequence that restores the cursor +// position. +// +// ESC 8 +// +// See: https://vt100.net/docs/vt510-rm/DECRC.html +const ( + RestoreCursor = "\x1b8" + DECRC = RestoreCursor +) + +// RequestCursorPosition is an escape sequence that requests the current cursor +// position. +// +// CSI 6 n +// +// The terminal will report the cursor position as a CSI sequence in the +// following format: +// +// CSI Pl ; Pc R +// +// Where Pl is the line number and Pc is the column number. +// See: https://vt100.net/docs/vt510-rm/CPR.html +// +// Deprecated: use [RequestCursorPositionReport] instead. +const RequestCursorPosition = "\x1b[6n" + +// RequestExtendedCursorPosition (DECXCPR) is a sequence for requesting the +// cursor position report including the current page number. +// +// CSI ? 6 n +// +// The terminal will report the cursor position as a CSI sequence in the +// following format: +// +// CSI ? Pl ; Pc ; Pp R +// +// Where Pl is the line number, Pc is the column number, and Pp is the page +// number. +// See: https://vt100.net/docs/vt510-rm/DECXCPR.html +// +// Deprecated: use [RequestExtendedCursorPositionReport] instead. +const RequestExtendedCursorPosition = "\x1b[?6n" + +// CursorUp (CUU) returns a sequence for moving the cursor up n cells. +// +// CSI n A +// +// See: https://vt100.net/docs/vt510-rm/CUU.html +func CursorUp(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "A" +} + +// CUU is an alias for [CursorUp]. +func CUU(n int) string { + return CursorUp(n) +} + +// CUU1 is a sequence for moving the cursor up one cell. +const CUU1 = "\x1b[A" + +// CursorUp1 is a sequence for moving the cursor up one cell. +// +// This is equivalent to CursorUp(1). +// +// Deprecated: use [CUU1] instead. +const CursorUp1 = "\x1b[A" + +// CursorDown (CUD) returns a sequence for moving the cursor down n cells. +// +// CSI n B +// +// See: https://vt100.net/docs/vt510-rm/CUD.html +func CursorDown(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "B" +} + +// CUD is an alias for [CursorDown]. +func CUD(n int) string { + return CursorDown(n) +} + +// CUD1 is a sequence for moving the cursor down one cell. +const CUD1 = "\x1b[B" + +// CursorDown1 is a sequence for moving the cursor down one cell. +// +// This is equivalent to CursorDown(1). +// +// Deprecated: use [CUD1] instead. +const CursorDown1 = "\x1b[B" + +// CursorForward (CUF) returns a sequence for moving the cursor right n cells. +// +// # CSI n C +// +// See: https://vt100.net/docs/vt510-rm/CUF.html +func CursorForward(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "C" +} + +// CUF is an alias for [CursorForward]. +func CUF(n int) string { + return CursorForward(n) +} + +// CUF1 is a sequence for moving the cursor right one cell. +const CUF1 = "\x1b[C" + +// CursorRight (CUF) returns a sequence for moving the cursor right n cells. +// +// CSI n C +// +// See: https://vt100.net/docs/vt510-rm/CUF.html +// +// Deprecated: use [CursorForward] instead. +func CursorRight(n int) string { + return CursorForward(n) +} + +// CursorRight1 is a sequence for moving the cursor right one cell. +// +// This is equivalent to CursorRight(1). +// +// Deprecated: use [CUF1] instead. +const CursorRight1 = CUF1 + +// CursorBackward (CUB) returns a sequence for moving the cursor left n cells. +// +// # CSI n D +// +// See: https://vt100.net/docs/vt510-rm/CUB.html +func CursorBackward(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "D" +} + +// CUB is an alias for [CursorBackward]. +func CUB(n int) string { + return CursorBackward(n) +} + +// CUB1 is a sequence for moving the cursor left one cell. +const CUB1 = "\x1b[D" + +// CursorLeft (CUB) returns a sequence for moving the cursor left n cells. +// +// CSI n D +// +// See: https://vt100.net/docs/vt510-rm/CUB.html +// +// Deprecated: use [CursorBackward] instead. +func CursorLeft(n int) string { + return CursorBackward(n) +} + +// CursorLeft1 is a sequence for moving the cursor left one cell. +// +// This is equivalent to CursorLeft(1). +// +// Deprecated: use [CUB1] instead. +const CursorLeft1 = CUB1 + +// CursorNextLine (CNL) returns a sequence for moving the cursor to the +// beginning of the next line n times. +// +// CSI n E +// +// See: https://vt100.net/docs/vt510-rm/CNL.html +func CursorNextLine(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "E" +} + +// CNL is an alias for [CursorNextLine]. +func CNL(n int) string { + return CursorNextLine(n) +} + +// CursorPreviousLine (CPL) returns a sequence for moving the cursor to the +// beginning of the previous line n times. +// +// CSI n F +// +// See: https://vt100.net/docs/vt510-rm/CPL.html +func CursorPreviousLine(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "F" +} + +// CPL is an alias for [CursorPreviousLine]. +func CPL(n int) string { + return CursorPreviousLine(n) +} + +// CursorHorizontalAbsolute (CHA) returns a sequence for moving the cursor to +// the given column. +// +// Default is 1. +// +// CSI n G +// +// See: https://vt100.net/docs/vt510-rm/CHA.html +func CursorHorizontalAbsolute(col int) string { + var s string + if col > 0 { + s = strconv.Itoa(col) + } + return "\x1b[" + s + "G" +} + +// CHA is an alias for [CursorHorizontalAbsolute]. +func CHA(col int) string { + return CursorHorizontalAbsolute(col) +} + +// CursorPosition (CUP) returns a sequence for setting the cursor to the +// given row and column. +// +// Default is 1,1. +// +// CSI n ; m H +// +// See: https://vt100.net/docs/vt510-rm/CUP.html +func CursorPosition(col, row int) string { + if row <= 0 && col <= 0 { + return CursorHomePosition + } + + var r, c string + if row > 0 { + r = strconv.Itoa(row) + } + if col > 0 { + c = strconv.Itoa(col) + } + return "\x1b[" + r + ";" + c + "H" +} + +// CUP is an alias for [CursorPosition]. +func CUP(col, row int) string { + return CursorPosition(col, row) +} + +// CursorHomePosition is a sequence for moving the cursor to the upper left +// corner of the scrolling region. This is equivalent to `CursorPosition(1, 1)`. +const CursorHomePosition = "\x1b[H" + +// SetCursorPosition (CUP) returns a sequence for setting the cursor to the +// given row and column. +// +// CSI n ; m H +// +// See: https://vt100.net/docs/vt510-rm/CUP.html +// +// Deprecated: use [CursorPosition] instead. +func SetCursorPosition(col, row int) string { + if row <= 0 && col <= 0 { + return HomeCursorPosition + } + + var r, c string + if row > 0 { + r = strconv.Itoa(row) + } + if col > 0 { + c = strconv.Itoa(col) + } + return "\x1b[" + r + ";" + c + "H" +} + +// HomeCursorPosition is a sequence for moving the cursor to the upper left +// corner of the scrolling region. This is equivalent to `SetCursorPosition(1, 1)`. +// +// Deprecated: use [CursorHomePosition] instead. +const HomeCursorPosition = CursorHomePosition + +// MoveCursor (CUP) returns a sequence for setting the cursor to the +// given row and column. +// +// CSI n ; m H +// +// See: https://vt100.net/docs/vt510-rm/CUP.html +// +// Deprecated: use [CursorPosition] instead. +func MoveCursor(col, row int) string { + return SetCursorPosition(col, row) +} + +// CursorOrigin is a sequence for moving the cursor to the upper left corner of +// the display. This is equivalent to `SetCursorPosition(1, 1)`. +// +// Deprecated: use [CursorHomePosition] instead. +const CursorOrigin = "\x1b[1;1H" + +// MoveCursorOrigin is a sequence for moving the cursor to the upper left +// corner of the display. This is equivalent to `SetCursorPosition(1, 1)`. +// +// Deprecated: use [CursorHomePosition] instead. +const MoveCursorOrigin = CursorOrigin + +// CursorHorizontalForwardTab (CHT) returns a sequence for moving the cursor to +// the next tab stop n times. +// +// Default is 1. +// +// CSI n I +// +// See: https://vt100.net/docs/vt510-rm/CHT.html +func CursorHorizontalForwardTab(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "I" +} + +// CHT is an alias for [CursorHorizontalForwardTab]. +func CHT(n int) string { + return CursorHorizontalForwardTab(n) +} + +// EraseCharacter (ECH) returns a sequence for erasing n characters from the +// screen. This doesn't affect other cell attributes. +// +// Default is 1. +// +// CSI n X +// +// See: https://vt100.net/docs/vt510-rm/ECH.html +func EraseCharacter(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "X" +} + +// ECH is an alias for [EraseCharacter]. +func ECH(n int) string { + return EraseCharacter(n) +} + +// CursorBackwardTab (CBT) returns a sequence for moving the cursor to the +// previous tab stop n times. +// +// Default is 1. +// +// CSI n Z +// +// See: https://vt100.net/docs/vt510-rm/CBT.html +func CursorBackwardTab(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "Z" +} + +// CBT is an alias for [CursorBackwardTab]. +func CBT(n int) string { + return CursorBackwardTab(n) +} + +// VerticalPositionAbsolute (VPA) returns a sequence for moving the cursor to +// the given row. +// +// Default is 1. +// +// CSI n d +// +// See: https://vt100.net/docs/vt510-rm/VPA.html +func VerticalPositionAbsolute(row int) string { + var s string + if row > 0 { + s = strconv.Itoa(row) + } + return "\x1b[" + s + "d" +} + +// VPA is an alias for [VerticalPositionAbsolute]. +func VPA(row int) string { + return VerticalPositionAbsolute(row) +} + +// VerticalPositionRelative (VPR) returns a sequence for moving the cursor down +// n rows relative to the current position. +// +// Default is 1. +// +// CSI n e +// +// See: https://vt100.net/docs/vt510-rm/VPR.html +func VerticalPositionRelative(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "e" +} + +// VPR is an alias for [VerticalPositionRelative]. +func VPR(n int) string { + return VerticalPositionRelative(n) +} + +// HorizontalVerticalPosition (HVP) returns a sequence for moving the cursor to +// the given row and column. +// +// Default is 1,1. +// +// CSI n ; m f +// +// This has the same effect as [CursorPosition]. +// +// See: https://vt100.net/docs/vt510-rm/HVP.html +func HorizontalVerticalPosition(col, row int) string { + var r, c string + if row > 0 { + r = strconv.Itoa(row) + } + if col > 0 { + c = strconv.Itoa(col) + } + return "\x1b[" + r + ";" + c + "f" +} + +// HVP is an alias for [HorizontalVerticalPosition]. +func HVP(col, row int) string { + return HorizontalVerticalPosition(col, row) +} + +// HorizontalVerticalHomePosition is a sequence for moving the cursor to the +// upper left corner of the scrolling region. This is equivalent to +// `HorizontalVerticalPosition(1, 1)`. +const HorizontalVerticalHomePosition = "\x1b[f" + +// SaveCurrentCursorPosition (SCOSC) is a sequence for saving the current cursor +// position for SCO console mode. +// +// CSI s +// +// This acts like [DECSC], except the page number where the cursor is located +// is not saved. +// +// See: https://vt100.net/docs/vt510-rm/SCOSC.html +const ( + SaveCurrentCursorPosition = "\x1b[s" + SCOSC = SaveCurrentCursorPosition +) + +// SaveCursorPosition (SCP or SCOSC) is a sequence for saving the cursor +// position. +// +// CSI s +// +// This acts like Save, except the page number where the cursor is located is +// not saved. +// +// See: https://vt100.net/docs/vt510-rm/SCOSC.html +// +// Deprecated: use [SaveCurrentCursorPosition] instead. +const SaveCursorPosition = "\x1b[s" + +// RestoreCurrentCursorPosition (SCORC) is a sequence for restoring the current +// cursor position for SCO console mode. +// +// CSI u +// +// This acts like [DECRC], except the page number where the cursor was saved is +// not restored. +// +// See: https://vt100.net/docs/vt510-rm/SCORC.html +const ( + RestoreCurrentCursorPosition = "\x1b[u" + SCORC = RestoreCurrentCursorPosition +) + +// RestoreCursorPosition (RCP or SCORC) is a sequence for restoring the cursor +// position. +// +// CSI u +// +// This acts like Restore, except the cursor stays on the same page where the +// cursor was saved. +// +// See: https://vt100.net/docs/vt510-rm/SCORC.html +// +// Deprecated: use [RestoreCurrentCursorPosition] instead. +const RestoreCursorPosition = "\x1b[u" + +// SetCursorStyle (DECSCUSR) returns a sequence for changing the cursor style. +// +// Default is 1. +// +// CSI Ps SP q +// +// Where Ps is the cursor style: +// +// 0: Blinking block +// 1: Blinking block (default) +// 2: Steady block +// 3: Blinking underline +// 4: Steady underline +// 5: Blinking bar (xterm) +// 6: Steady bar (xterm) +// +// See: https://vt100.net/docs/vt510-rm/DECSCUSR.html +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps-SP-q.1D81 +func SetCursorStyle(style int) string { + if style < 0 { + style = 0 + } + return "\x1b[" + strconv.Itoa(style) + " q" +} + +// DECSCUSR is an alias for [SetCursorStyle]. +func DECSCUSR(style int) string { + return SetCursorStyle(style) +} + +// SetPointerShape returns a sequence for changing the mouse pointer cursor +// shape. Use "default" for the default pointer shape. +// +// OSC 22 ; Pt ST +// OSC 22 ; Pt BEL +// +// Where Pt is the pointer shape name. The name can be anything that the +// operating system can understand. Some common names are: +// +// - copy +// - crosshair +// - default +// - ew-resize +// - n-resize +// - text +// - wait +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Commands +func SetPointerShape(shape string) string { + return "\x1b]22;" + shape + "\x07" +} + +// ReverseIndex (RI) is an escape sequence for moving the cursor up one line in +// the same column. If the cursor is at the top margin, the screen scrolls +// down. +// +// This has the same effect as [RI]. +const ReverseIndex = "\x1bM" + +// HorizontalPositionAbsolute (HPA) returns a sequence for moving the cursor to +// the given column. This has the same effect as [CUP]. +// +// Default is 1. +// +// CSI n \` +// +// See: https://vt100.net/docs/vt510-rm/HPA.html +func HorizontalPositionAbsolute(col int) string { + var s string + if col > 0 { + s = strconv.Itoa(col) + } + return "\x1b[" + s + "`" +} + +// HPA is an alias for [HorizontalPositionAbsolute]. +func HPA(col int) string { + return HorizontalPositionAbsolute(col) +} + +// HorizontalPositionRelative (HPR) returns a sequence for moving the cursor +// right n columns relative to the current position. This has the same effect +// as [CUP]. +// +// Default is 1. +// +// CSI n a +// +// See: https://vt100.net/docs/vt510-rm/HPR.html +func HorizontalPositionRelative(n int) string { + var s string + if n > 0 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "a" +} + +// HPR is an alias for [HorizontalPositionRelative]. +func HPR(n int) string { + return HorizontalPositionRelative(n) +} + +// Index (IND) is an escape sequence for moving the cursor down one line in the +// same column. If the cursor is at the bottom margin, the screen scrolls up. +// This has the same effect as [IND]. +const Index = "\x1bD" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cwd.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cwd.go new file mode 100644 index 0000000..b03ac1b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/cwd.go @@ -0,0 +1,26 @@ +package ansi + +import ( + "net/url" + "path" +) + +// NotifyWorkingDirectory returns a sequence that notifies the terminal +// of the current working directory. +// +// OSC 7 ; Pt BEL +// +// Where Pt is a URL in the format "file://[host]/[path]". +// Set host to "localhost" if this is a path on the local computer. +// +// See: https://wezfurlong.org/wezterm/shell-integration.html#osc-7-escape-sequence-to-set-the-working-directory +// See: https://iterm2.com/documentation-escape-codes.html#:~:text=RemoteHost%20and%20CurrentDir%3A-,OSC%207,-%3B%20%5BPs%5D%20ST +func NotifyWorkingDirectory(host string, paths ...string) string { + path := path.Join(paths...) + u := &url.URL{ + Scheme: "file", + Host: host, + Path: path, + } + return "\x1b]7;" + u.String() + "\x07" +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/doc.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/doc.go new file mode 100644 index 0000000..e955e9f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/doc.go @@ -0,0 +1,7 @@ +// Package ansi defines common ANSI escape sequences based on the ECMA-48 +// specs. +// +// All sequences use 7-bit C1 control codes, which are supported by most +// terminal emulators. OSC sequences are terminated by a BEL for wider +// compatibility with terminals. +package ansi diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/finalterm.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/finalterm.go new file mode 100644 index 0000000..2c28347 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/finalterm.go @@ -0,0 +1,67 @@ +package ansi + +import "strings" + +// FinalTerm returns an escape sequence that is used for shell integrations. +// Originally, FinalTerm designed the protocol hence the name. +// +// OSC 133 ; Ps ; Pm ST +// OSC 133 ; Ps ; Pm BEL +// +// See: https://iterm2.com/documentation-shell-integration.html +func FinalTerm(pm ...string) string { + return "\x1b]133;" + strings.Join(pm, ";") + "\x07" +} + +// FinalTermPrompt returns an escape sequence that is used for shell +// integrations prompt marks. This is sent just before the start of the shell +// prompt. +// +// This is an alias for FinalTerm("A"). +func FinalTermPrompt(pm ...string) string { + if len(pm) == 0 { + return FinalTerm("A") + } + return FinalTerm(append([]string{"A"}, pm...)...) +} + +// FinalTermCmdStart returns an escape sequence that is used for shell +// integrations command start marks. This is sent just after the end of the +// shell prompt, before the user enters a command. +// +// This is an alias for FinalTerm("B"). +func FinalTermCmdStart(pm ...string) string { + if len(pm) == 0 { + return FinalTerm("B") + } + return FinalTerm(append([]string{"B"}, pm...)...) +} + +// FinalTermCmdExecuted returns an escape sequence that is used for shell +// integrations command executed marks. This is sent just before the start of +// the command output. +// +// This is an alias for FinalTerm("C"). +func FinalTermCmdExecuted(pm ...string) string { + if len(pm) == 0 { + return FinalTerm("C") + } + return FinalTerm(append([]string{"C"}, pm...)...) +} + +// FinalTermCmdFinished returns an escape sequence that is used for shell +// integrations command finished marks. +// +// If the command was sent after +// [FinalTermCmdStart], it indicates that the command was aborted. If the +// command was sent after [FinalTermCmdExecuted], it indicates the end of the +// command output. If neither was sent, [FinalTermCmdFinished] should be +// ignored. +// +// This is an alias for FinalTerm("D"). +func FinalTermCmdFinished(pm ...string) string { + if len(pm) == 0 { + return FinalTerm("D") + } + return FinalTerm(append([]string{"D"}, pm...)...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/focus.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/focus.go new file mode 100644 index 0000000..4e0207c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/focus.go @@ -0,0 +1,9 @@ +package ansi + +// Focus is an escape sequence to notify the terminal that it has focus. +// This is used with [FocusEventMode]. +const Focus = "\x1b[I" + +// Blur is an escape sequence to notify the terminal that it has lost focus. +// This is used with [FocusEventMode]. +const Blur = "\x1b[O" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/graphics.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/graphics.go new file mode 100644 index 0000000..d4a693b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/graphics.go @@ -0,0 +1,62 @@ +package ansi + +import ( + "bytes" + "strconv" + "strings" +) + +// SixelGraphics returns a sequence that encodes the given sixel image payload to +// a DCS sixel sequence. +// +// DCS p1; p2; p3; q [sixel payload] ST +// +// p1 = pixel aspect ratio, deprecated and replaced by pixel metrics in the payload +// +// p2 = This is supposed to be 0 for transparency, but terminals don't seem to +// to use it properly. Value 0 leaves an unsightly black bar on all terminals +// I've tried and looks correct with value 1. +// +// p3 = Horizontal grid size parameter. Everyone ignores this and uses a fixed grid +// size, as far as I can tell. +// +// See https://shuford.invisible-island.net/all_about_sixels.txt +func SixelGraphics(p1, p2, p3 int, payload []byte) string { + var buf bytes.Buffer + + buf.WriteString("\x1bP") + if p1 >= 0 { + buf.WriteString(strconv.Itoa(p1)) + } + buf.WriteByte(';') + if p2 >= 0 { + buf.WriteString(strconv.Itoa(p2)) + } + if p3 > 0 { + buf.WriteByte(';') + buf.WriteString(strconv.Itoa(p3)) + } + buf.WriteByte('q') + buf.Write(payload) + buf.WriteString("\x1b\\") + + return buf.String() +} + +// KittyGraphics returns a sequence that encodes the given image in the Kitty +// graphics protocol. +// +// APC G [comma separated options] ; [base64 encoded payload] ST +// +// See https://sw.kovidgoyal.net/kitty/graphics-protocol/ +func KittyGraphics(payload []byte, opts ...string) string { + var buf bytes.Buffer + buf.WriteString("\x1b_G") + buf.WriteString(strings.Join(opts, ",")) + if len(payload) > 0 { + buf.WriteString(";") + buf.Write(payload) + } + buf.WriteString("\x1b\\") + return buf.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/hyperlink.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/hyperlink.go new file mode 100644 index 0000000..323bfe9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/hyperlink.go @@ -0,0 +1,28 @@ +package ansi + +import "strings" + +// SetHyperlink returns a sequence for starting a hyperlink. +// +// OSC 8 ; Params ; Uri ST +// OSC 8 ; Params ; Uri BEL +// +// To reset the hyperlink, omit the URI. +// +// See: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda +func SetHyperlink(uri string, params ...string) string { + var p string + if len(params) > 0 { + p = strings.Join(params, ":") + } + return "\x1b]8;" + p + ";" + uri + "\x07" +} + +// ResetHyperlink returns a sequence for resetting the hyperlink. +// +// This is equivalent to SetHyperlink("", params...). +// +// See: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda +func ResetHyperlink(params ...string) string { + return SetHyperlink("", params...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/iterm2.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/iterm2.go new file mode 100644 index 0000000..0ecb336 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/iterm2.go @@ -0,0 +1,18 @@ +package ansi + +import "fmt" + +// ITerm2 returns a sequence that uses the iTerm2 proprietary protocol. Use the +// iterm2 package for a more convenient API. +// +// OSC 1337 ; key = value ST +// +// Example: +// +// ITerm2(iterm2.File{...}) +// +// See https://iterm2.com/documentation-escape-codes.html +// See https://iterm2.com/documentation-images.html +func ITerm2(data any) string { + return "\x1b]1337;" + fmt.Sprint(data) + "\x07" +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/keypad.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/keypad.go new file mode 100644 index 0000000..9183c6a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/keypad.go @@ -0,0 +1,28 @@ +package ansi + +// Keypad Application Mode (DECKPAM) is a mode that determines whether the +// keypad sends application sequences or ANSI sequences. +// +// This works like enabling [DECNKM]. +// Use [NumericKeypadMode] to set the numeric keypad mode. +// +// ESC = +// +// See: https://vt100.net/docs/vt510-rm/DECKPAM.html +const ( + KeypadApplicationMode = "\x1b=" + DECKPAM = KeypadApplicationMode +) + +// Keypad Numeric Mode (DECKPNM) is a mode that determines whether the keypad +// sends application sequences or ANSI sequences. +// +// This works the same as disabling [DECNKM]. +// +// ESC > +// +// See: https://vt100.net/docs/vt510-rm/DECKPNM.html +const ( + KeypadNumericMode = "\x1b>" + DECKPNM = KeypadNumericMode +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/kitty.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/kitty.go new file mode 100644 index 0000000..124ab83 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/kitty.go @@ -0,0 +1,90 @@ +package ansi + +import "strconv" + +// Kitty keyboard protocol progressive enhancement flags. +// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement +const ( + KittyDisambiguateEscapeCodes = 1 << iota + KittyReportEventTypes + KittyReportAlternateKeys + KittyReportAllKeysAsEscapeCodes + KittyReportAssociatedKeys + + KittyAllFlags = KittyDisambiguateEscapeCodes | KittyReportEventTypes | + KittyReportAlternateKeys | KittyReportAllKeysAsEscapeCodes | KittyReportAssociatedKeys +) + +// RequestKittyKeyboard is a sequence to request the terminal Kitty keyboard +// protocol enabled flags. +// +// See: https://sw.kovidgoyal.net/kitty/keyboard-protocol/ +const RequestKittyKeyboard = "\x1b[?u" + +// KittyKeyboard returns a sequence to request keyboard enhancements from the terminal. +// The flags argument is a bitmask of the Kitty keyboard protocol flags. While +// mode specifies how the flags should be interpreted. +// +// Possible values for flags mask: +// +// 1: Disambiguate escape codes +// 2: Report event types +// 4: Report alternate keys +// 8: Report all keys as escape codes +// 16: Report associated text +// +// Possible values for mode: +// +// 1: Set given flags and unset all others +// 2: Set given flags and keep existing flags unchanged +// 3: Unset given flags and keep existing flags unchanged +// +// See https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement +func KittyKeyboard(flags, mode int) string { + return "\x1b[=" + strconv.Itoa(flags) + ";" + strconv.Itoa(mode) + "u" +} + +// PushKittyKeyboard returns a sequence to push the given flags to the terminal +// Kitty Keyboard stack. +// +// Possible values for flags mask: +// +// 0: Disable all features +// 1: Disambiguate escape codes +// 2: Report event types +// 4: Report alternate keys +// 8: Report all keys as escape codes +// 16: Report associated text +// +// CSI > flags u +// +// See https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement +func PushKittyKeyboard(flags int) string { + var f string + if flags > 0 { + f = strconv.Itoa(flags) + } + + return "\x1b[>" + f + "u" +} + +// DisableKittyKeyboard is a sequence to push zero into the terminal Kitty +// Keyboard stack to disable the protocol. +// +// This is equivalent to PushKittyKeyboard(0). +const DisableKittyKeyboard = "\x1b[>u" + +// PopKittyKeyboard returns a sequence to pop n number of flags from the +// terminal Kitty Keyboard stack. +// +// CSI < flags u +// +// See https://sw.kovidgoyal.net/kitty/keyboard-protocol/#progressive-enhancement +func PopKittyKeyboard(n int) string { + var num string + if n > 0 { + num = strconv.Itoa(n) + } + + return "\x1b[<" + num + "u" +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/method.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/method.go new file mode 100644 index 0000000..0218809 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/method.go @@ -0,0 +1,172 @@ +package ansi + +// Method is a type that represents the how the renderer should calculate the +// display width of cells. +type Method uint8 + +// Display width modes. +const ( + WcWidth Method = iota + GraphemeWidth +) + +// StringWidth returns the width of a string in cells. This is the number of +// cells that the string will occupy when printed in a terminal. ANSI escape +// codes are ignored and wide characters (such as East Asians and emojis) are +// accounted for. +func (m Method) StringWidth(s string) int { + return stringWidth(m, s) +} + +// Truncate truncates a string to a given length, adding a tail to the end if +// the string is longer than the given length. This function is aware of ANSI +// escape codes and will not break them, and accounts for wide-characters (such +// as East-Asian characters and emojis). +func (m Method) Truncate(s string, length int, tail string) string { + return truncate(m, s, length, tail) +} + +// TruncateLeft truncates a string to a given length, adding a prefix to the +// beginning if the string is longer than the given length. This function is +// aware of ANSI escape codes and will not break them, and accounts for +// wide-characters (such as East-Asian characters and emojis). +func (m Method) TruncateLeft(s string, length int, prefix string) string { + return truncateLeft(m, s, length, prefix) +} + +// Cut the string, without adding any prefix or tail strings. This function is +// aware of ANSI escape codes and will not break them, and accounts for +// wide-characters (such as East-Asian characters and emojis). Note that the +// [left] parameter is inclusive, while [right] isn't. +func (m Method) Cut(s string, left, right int) string { + return cut(m, s, left, right) +} + +// Hardwrap wraps a string or a block of text to a given line length, breaking +// word boundaries. This will preserve ANSI escape codes and will account for +// wide-characters in the string. +// When preserveSpace is true, spaces at the beginning of a line will be +// preserved. +// This treats the text as a sequence of graphemes. +func (m Method) Hardwrap(s string, length int, preserveSpace bool) string { + return hardwrap(m, s, length, preserveSpace) +} + +// Wordwrap wraps a string or a block of text to a given line length, not +// breaking word boundaries. This will preserve ANSI escape codes and will +// account for wide-characters in the string. +// The breakpoints string is a list of characters that are considered +// breakpoints for word wrapping. A hyphen (-) is always considered a +// breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +func (m Method) Wordwrap(s string, length int, breakpoints string) string { + return wordwrap(m, s, length, breakpoints) +} + +// Wrap wraps a string or a block of text to a given line length, breaking word +// boundaries if necessary. This will preserve ANSI escape codes and will +// account for wide-characters in the string. The breakpoints string is a list +// of characters that are considered breakpoints for word wrapping. A hyphen +// (-) is always considered a breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +func (m Method) Wrap(s string, length int, breakpoints string) string { + return wrap(m, s, length, breakpoints) +} + +// DecodeSequence decodes the first ANSI escape sequence or a printable +// grapheme from the given data. It returns the sequence slice, the number of +// bytes read, the cell width for each sequence, and the new state. +// +// The cell width will always be 0 for control and escape sequences, 1 for +// ASCII printable characters, and the number of cells other Unicode characters +// occupy. It uses the uniseg package to calculate the width of Unicode +// graphemes and characters. This means it will always do grapheme clustering +// (mode 2027). +// +// Passing a non-nil [*Parser] as the last argument will allow the decoder to +// collect sequence parameters, data, and commands. The parser cmd will have +// the packed command value that contains intermediate and prefix characters. +// In the case of a OSC sequence, the cmd will be the OSC command number. Use +// [Cmd] and [Param] types to unpack command intermediates and prefixes as well +// as parameters. +// +// Zero [Cmd] means the CSI, DCS, or ESC sequence is invalid. Moreover, checking the +// validity of other data sequences, OSC, DCS, etc, will require checking for +// the returned sequence terminator bytes such as ST (ESC \\) and BEL). +// +// We store the command byte in [Cmd] in the most significant byte, the +// prefix byte in the next byte, and the intermediate byte in the least +// significant byte. This is done to avoid using a struct to store the command +// and its intermediates and prefixes. The command byte is always the least +// significant byte i.e. [Cmd & 0xff]. Use the [Cmd] type to unpack the +// command, intermediate, and prefix bytes. Note that we only collect the last +// prefix character and intermediate byte. +// +// The [p.Params] slice will contain the parameters of the sequence. Any +// sub-parameter will have the [parser.HasMoreFlag] set. Use the [Param] type +// to unpack the parameters. +// +// Example: +// +// var state byte // the initial state is always zero [NormalState] +// p := NewParser(32, 1024) // create a new parser with a 32 params buffer and 1024 data buffer (optional) +// input := []byte("\x1b[31mHello, World!\x1b[0m") +// for len(input) > 0 { +// seq, width, n, newState := DecodeSequence(input, state, p) +// log.Printf("seq: %q, width: %d", seq, width) +// state = newState +// input = input[n:] +// } +func (m Method) DecodeSequence(data []byte, state byte, p *Parser) (seq []byte, width, n int, newState byte) { + return decodeSequence(m, data, state, p) +} + +// DecodeSequenceInString decodes the first ANSI escape sequence or a printable +// grapheme from the given data. It returns the sequence slice, the number of +// bytes read, the cell width for each sequence, and the new state. +// +// The cell width will always be 0 for control and escape sequences, 1 for +// ASCII printable characters, and the number of cells other Unicode characters +// occupy. It uses the uniseg package to calculate the width of Unicode +// graphemes and characters. This means it will always do grapheme clustering +// (mode 2027). +// +// Passing a non-nil [*Parser] as the last argument will allow the decoder to +// collect sequence parameters, data, and commands. The parser cmd will have +// the packed command value that contains intermediate and prefix characters. +// In the case of a OSC sequence, the cmd will be the OSC command number. Use +// [Cmd] and [Param] types to unpack command intermediates and prefixes as well +// as parameters. +// +// Zero [Cmd] means the CSI, DCS, or ESC sequence is invalid. Moreover, checking the +// validity of other data sequences, OSC, DCS, etc, will require checking for +// the returned sequence terminator bytes such as ST (ESC \\) and BEL). +// +// We store the command byte in [Cmd] in the most significant byte, the +// prefix byte in the next byte, and the intermediate byte in the least +// significant byte. This is done to avoid using a struct to store the command +// and its intermediates and prefixes. The command byte is always the least +// significant byte i.e. [Cmd & 0xff]. Use the [Cmd] type to unpack the +// command, intermediate, and prefix bytes. Note that we only collect the last +// prefix character and intermediate byte. +// +// The [p.Params] slice will contain the parameters of the sequence. Any +// sub-parameter will have the [parser.HasMoreFlag] set. Use the [Param] type +// to unpack the parameters. +// +// Example: +// +// var state byte // the initial state is always zero [NormalState] +// p := NewParser(32, 1024) // create a new parser with a 32 params buffer and 1024 data buffer (optional) +// input := []byte("\x1b[31mHello, World!\x1b[0m") +// for len(input) > 0 { +// seq, width, n, newState := DecodeSequenceInString(input, state, p) +// log.Printf("seq: %q, width: %d", seq, width) +// state = newState +// input = input[n:] +// } +func (m Method) DecodeSequenceInString(data string, state byte, p *Parser) (seq string, width, n int, newState byte) { + return decodeSequence(m, data, state, p) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mode.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mode.go new file mode 100644 index 0000000..03c9110 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mode.go @@ -0,0 +1,847 @@ +package ansi + +import ( + "strconv" + "strings" +) + +// ModeSetting represents a mode setting. +type ModeSetting byte + +// ModeSetting constants. +const ( + ModeNotRecognized ModeSetting = iota + ModeSet + ModeReset + ModePermanentlySet + ModePermanentlyReset +) + +// IsNotRecognized returns true if the mode is not recognized. +func (m ModeSetting) IsNotRecognized() bool { + return m == ModeNotRecognized +} + +// IsSet returns true if the mode is set or permanently set. +func (m ModeSetting) IsSet() bool { + return m == ModeSet || m == ModePermanentlySet +} + +// IsReset returns true if the mode is reset or permanently reset. +func (m ModeSetting) IsReset() bool { + return m == ModeReset || m == ModePermanentlyReset +} + +// IsPermanentlySet returns true if the mode is permanently set. +func (m ModeSetting) IsPermanentlySet() bool { + return m == ModePermanentlySet +} + +// IsPermanentlyReset returns true if the mode is permanently reset. +func (m ModeSetting) IsPermanentlyReset() bool { + return m == ModePermanentlyReset +} + +// Mode represents an interface for terminal modes. +// Modes can be set, reset, and requested. +type Mode interface { + Mode() int +} + +// SetMode (SM) or (DECSET) returns a sequence to set a mode. +// The mode arguments are a list of modes to set. +// +// If one of the modes is a [DECMode], the function will returns two escape +// sequences. +// +// ANSI format: +// +// CSI Pd ; ... ; Pd h +// +// DEC format: +// +// CSI ? Pd ; ... ; Pd h +// +// See: https://vt100.net/docs/vt510-rm/SM.html +func SetMode(modes ...Mode) string { + return setMode(false, modes...) +} + +// SM is an alias for [SetMode]. +func SM(modes ...Mode) string { + return SetMode(modes...) +} + +// DECSET is an alias for [SetMode]. +func DECSET(modes ...Mode) string { + return SetMode(modes...) +} + +// ResetMode (RM) or (DECRST) returns a sequence to reset a mode. +// The mode arguments are a list of modes to reset. +// +// If one of the modes is a [DECMode], the function will returns two escape +// sequences. +// +// ANSI format: +// +// CSI Pd ; ... ; Pd l +// +// DEC format: +// +// CSI ? Pd ; ... ; Pd l +// +// See: https://vt100.net/docs/vt510-rm/RM.html +func ResetMode(modes ...Mode) string { + return setMode(true, modes...) +} + +// RM is an alias for [ResetMode]. +func RM(modes ...Mode) string { + return ResetMode(modes...) +} + +// DECRST is an alias for [ResetMode]. +func DECRST(modes ...Mode) string { + return ResetMode(modes...) +} + +func setMode(reset bool, modes ...Mode) (s string) { + if len(modes) == 0 { + return //nolint:nakedret + } + + cmd := "h" + if reset { + cmd = "l" + } + + seq := "\x1b[" + if len(modes) == 1 { + switch modes[0].(type) { + case DECMode: + seq += "?" + } + return seq + strconv.Itoa(modes[0].Mode()) + cmd + } + + dec := make([]string, 0, len(modes)/2) + ansi := make([]string, 0, len(modes)/2) + for _, m := range modes { + switch m.(type) { + case DECMode: + dec = append(dec, strconv.Itoa(m.Mode())) + case ANSIMode: + ansi = append(ansi, strconv.Itoa(m.Mode())) + } + } + + if len(ansi) > 0 { + s += seq + strings.Join(ansi, ";") + cmd + } + if len(dec) > 0 { + s += seq + "?" + strings.Join(dec, ";") + cmd + } + return //nolint:nakedret +} + +// RequestMode (DECRQM) returns a sequence to request a mode from the terminal. +// The terminal responds with a report mode function [DECRPM]. +// +// ANSI format: +// +// CSI Pa $ p +// +// DEC format: +// +// CSI ? Pa $ p +// +// See: https://vt100.net/docs/vt510-rm/DECRQM.html +func RequestMode(m Mode) string { + seq := "\x1b[" + switch m.(type) { + case DECMode: + seq += "?" + } + return seq + strconv.Itoa(m.Mode()) + "$p" +} + +// DECRQM is an alias for [RequestMode]. +func DECRQM(m Mode) string { + return RequestMode(m) +} + +// ReportMode (DECRPM) returns a sequence that the terminal sends to the host +// in response to a mode request [DECRQM]. +// +// ANSI format: +// +// CSI Pa ; Ps ; $ y +// +// DEC format: +// +// CSI ? Pa ; Ps $ y +// +// Where Pa is the mode number, and Ps is the mode value. +// +// 0: Not recognized +// 1: Set +// 2: Reset +// 3: Permanent set +// 4: Permanent reset +// +// See: https://vt100.net/docs/vt510-rm/DECRPM.html +func ReportMode(mode Mode, value ModeSetting) string { + if value > 4 { + value = 0 + } + switch mode.(type) { + case DECMode: + return "\x1b[?" + strconv.Itoa(mode.Mode()) + ";" + strconv.Itoa(int(value)) + "$y" + } + return "\x1b[" + strconv.Itoa(mode.Mode()) + ";" + strconv.Itoa(int(value)) + "$y" +} + +// DECRPM is an alias for [ReportMode]. +func DECRPM(mode Mode, value ModeSetting) string { + return ReportMode(mode, value) +} + +// ANSIMode represents an ANSI terminal mode. +type ANSIMode int //nolint:revive + +// Mode returns the ANSI mode as an integer. +func (m ANSIMode) Mode() int { + return int(m) +} + +// DECMode represents a private DEC terminal mode. +type DECMode int + +// Mode returns the DEC mode as an integer. +func (m DECMode) Mode() int { + return int(m) +} + +// Keyboard Action Mode (KAM) is a mode that controls locking of the keyboard. +// When the keyboard is locked, it cannot send data to the terminal. +// +// See: https://vt100.net/docs/vt510-rm/KAM.html +const ( + KeyboardActionMode = ANSIMode(2) + KAM = KeyboardActionMode + + SetKeyboardActionMode = "\x1b[2h" + ResetKeyboardActionMode = "\x1b[2l" + RequestKeyboardActionMode = "\x1b[2$p" +) + +// Insert/Replace Mode (IRM) is a mode that determines whether characters are +// inserted or replaced when typed. +// +// When enabled, characters are inserted at the cursor position pushing the +// characters to the right. When disabled, characters replace the character at +// the cursor position. +// +// See: https://vt100.net/docs/vt510-rm/IRM.html +const ( + InsertReplaceMode = ANSIMode(4) + IRM = InsertReplaceMode + + SetInsertReplaceMode = "\x1b[4h" + ResetInsertReplaceMode = "\x1b[4l" + RequestInsertReplaceMode = "\x1b[4$p" +) + +// BiDirectional Support Mode (BDSM) is a mode that determines whether the +// terminal supports bidirectional text. When enabled, the terminal supports +// bidirectional text and is set to implicit bidirectional mode. When disabled, +// the terminal does not support bidirectional text. +// +// See ECMA-48 7.2.1. +const ( + BiDirectionalSupportMode = ANSIMode(8) + BDSM = BiDirectionalSupportMode + + SetBiDirectionalSupportMode = "\x1b[8h" + ResetBiDirectionalSupportMode = "\x1b[8l" + RequestBiDirectionalSupportMode = "\x1b[8$p" +) + +// Send Receive Mode (SRM) or Local Echo Mode is a mode that determines whether +// the terminal echoes characters back to the host. When enabled, the terminal +// sends characters to the host as they are typed. +// +// See: https://vt100.net/docs/vt510-rm/SRM.html +const ( + SendReceiveMode = ANSIMode(12) + LocalEchoMode = SendReceiveMode + SRM = SendReceiveMode + + SetSendReceiveMode = "\x1b[12h" + ResetSendReceiveMode = "\x1b[12l" + RequestSendReceiveMode = "\x1b[12$p" + + SetLocalEchoMode = "\x1b[12h" + ResetLocalEchoMode = "\x1b[12l" + RequestLocalEchoMode = "\x1b[12$p" +) + +// Line Feed/New Line Mode (LNM) is a mode that determines whether the terminal +// interprets the line feed character as a new line. +// +// When enabled, the terminal interprets the line feed character as a new line. +// When disabled, the terminal interprets the line feed character as a line feed. +// +// A new line moves the cursor to the first position of the next line. +// A line feed moves the cursor down one line without changing the column +// scrolling the screen if necessary. +// +// See: https://vt100.net/docs/vt510-rm/LNM.html +const ( + LineFeedNewLineMode = ANSIMode(20) + LNM = LineFeedNewLineMode + + SetLineFeedNewLineMode = "\x1b[20h" + ResetLineFeedNewLineMode = "\x1b[20l" + RequestLineFeedNewLineMode = "\x1b[20$p" +) + +// Cursor Keys Mode (DECCKM) is a mode that determines whether the cursor keys +// send ANSI cursor sequences or application sequences. +// +// See: https://vt100.net/docs/vt510-rm/DECCKM.html +const ( + CursorKeysMode = DECMode(1) + DECCKM = CursorKeysMode + + SetCursorKeysMode = "\x1b[?1h" + ResetCursorKeysMode = "\x1b[?1l" + RequestCursorKeysMode = "\x1b[?1$p" +) + +// Deprecated: use [SetCursorKeysMode] and [ResetCursorKeysMode] instead. +const ( + EnableCursorKeys = "\x1b[?1h" //nolint:revive // grouped constants + DisableCursorKeys = "\x1b[?1l" +) + +// Origin Mode (DECOM) is a mode that determines whether the cursor moves to the +// home position or the margin position. +// +// See: https://vt100.net/docs/vt510-rm/DECOM.html +const ( + OriginMode = DECMode(6) + DECOM = OriginMode + + SetOriginMode = "\x1b[?6h" + ResetOriginMode = "\x1b[?6l" + RequestOriginMode = "\x1b[?6$p" +) + +// Auto Wrap Mode (DECAWM) is a mode that determines whether the cursor wraps +// to the next line when it reaches the right margin. +// +// See: https://vt100.net/docs/vt510-rm/DECAWM.html +const ( + AutoWrapMode = DECMode(7) + DECAWM = AutoWrapMode + + SetAutoWrapMode = "\x1b[?7h" + ResetAutoWrapMode = "\x1b[?7l" + RequestAutoWrapMode = "\x1b[?7$p" +) + +// X10 Mouse Mode is a mode that determines whether the mouse reports on button +// presses. +// +// The terminal responds with the following encoding: +// +// CSI M CbCxCy +// +// Where Cb is the button-1, where it can be 1, 2, or 3. +// Cx and Cy are the x and y coordinates of the mouse event. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + X10MouseMode = DECMode(9) + + SetX10MouseMode = "\x1b[?9h" + ResetX10MouseMode = "\x1b[?9l" + RequestX10MouseMode = "\x1b[?9$p" +) + +// Text Cursor Enable Mode (DECTCEM) is a mode that shows/hides the cursor. +// +// See: https://vt100.net/docs/vt510-rm/DECTCEM.html +const ( + TextCursorEnableMode = DECMode(25) + DECTCEM = TextCursorEnableMode + + SetTextCursorEnableMode = "\x1b[?25h" + ResetTextCursorEnableMode = "\x1b[?25l" + RequestTextCursorEnableMode = "\x1b[?25$p" +) + +// These are aliases for [SetTextCursorEnableMode] and [ResetTextCursorEnableMode]. +const ( + ShowCursor = SetTextCursorEnableMode + HideCursor = ResetTextCursorEnableMode +) + +// Text Cursor Enable Mode (DECTCEM) is a mode that shows/hides the cursor. +// +// See: https://vt100.net/docs/vt510-rm/DECTCEM.html +// +// Deprecated: use [SetTextCursorEnableMode] and [ResetTextCursorEnableMode] instead. +const ( + CursorEnableMode = DECMode(25) + RequestCursorVisibility = "\x1b[?25$p" +) + +// Numeric Keypad Mode (DECNKM) is a mode that determines whether the keypad +// sends application sequences or numeric sequences. +// +// This works like [DECKPAM] and [DECKPNM], but uses different sequences. +// +// See: https://vt100.net/docs/vt510-rm/DECNKM.html +const ( + NumericKeypadMode = DECMode(66) + DECNKM = NumericKeypadMode + + SetNumericKeypadMode = "\x1b[?66h" + ResetNumericKeypadMode = "\x1b[?66l" + RequestNumericKeypadMode = "\x1b[?66$p" +) + +// Backarrow Key Mode (DECBKM) is a mode that determines whether the backspace +// key sends a backspace or delete character. Disabled by default. +// +// See: https://vt100.net/docs/vt510-rm/DECBKM.html +const ( + BackarrowKeyMode = DECMode(67) + DECBKM = BackarrowKeyMode + + SetBackarrowKeyMode = "\x1b[?67h" + ResetBackarrowKeyMode = "\x1b[?67l" + RequestBackarrowKeyMode = "\x1b[?67$p" +) + +// Left Right Margin Mode (DECLRMM) is a mode that determines whether the left +// and right margins can be set with [DECSLRM]. +// +// See: https://vt100.net/docs/vt510-rm/DECLRMM.html +const ( + LeftRightMarginMode = DECMode(69) + DECLRMM = LeftRightMarginMode + + SetLeftRightMarginMode = "\x1b[?69h" + ResetLeftRightMarginMode = "\x1b[?69l" + RequestLeftRightMarginMode = "\x1b[?69$p" +) + +// Normal Mouse Mode is a mode that determines whether the mouse reports on +// button presses and releases. It will also report modifier keys, wheel +// events, and extra buttons. +// +// It uses the same encoding as [X10MouseMode] with a few differences: +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + NormalMouseMode = DECMode(1000) + + SetNormalMouseMode = "\x1b[?1000h" + ResetNormalMouseMode = "\x1b[?1000l" + RequestNormalMouseMode = "\x1b[?1000$p" +) + +// VT Mouse Tracking is a mode that determines whether the mouse reports on +// button press and release. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +// +// Deprecated: use [NormalMouseMode] instead. +const ( + MouseMode = DECMode(1000) + + EnableMouse = "\x1b[?1000h" + DisableMouse = "\x1b[?1000l" + RequestMouse = "\x1b[?1000$p" +) + +// Highlight Mouse Tracking is a mode that determines whether the mouse reports +// on button presses, releases, and highlighted cells. +// +// It uses the same encoding as [NormalMouseMode] with a few differences: +// +// On highlight events, the terminal responds with the following encoding: +// +// CSI t CxCy +// CSI T CxCyCxCyCxCy +// +// Where the parameters are startx, starty, endx, endy, mousex, and mousey. +const ( + HighlightMouseMode = DECMode(1001) + + SetHighlightMouseMode = "\x1b[?1001h" + ResetHighlightMouseMode = "\x1b[?1001l" + RequestHighlightMouseMode = "\x1b[?1001$p" +) + +// VT Hilite Mouse Tracking is a mode that determines whether the mouse reports on +// button presses, releases, and highlighted cells. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +// +// Deprecated: use [HighlightMouseMode] instead. +const ( + MouseHiliteMode = DECMode(1001) + + EnableMouseHilite = "\x1b[?1001h" + DisableMouseHilite = "\x1b[?1001l" + RequestMouseHilite = "\x1b[?1001$p" +) + +// Button Event Mouse Tracking is essentially the same as [NormalMouseMode], +// but it also reports button-motion events when a button is pressed. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + ButtonEventMouseMode = DECMode(1002) + + SetButtonEventMouseMode = "\x1b[?1002h" + ResetButtonEventMouseMode = "\x1b[?1002l" + RequestButtonEventMouseMode = "\x1b[?1002$p" +) + +// Cell Motion Mouse Tracking is a mode that determines whether the mouse +// reports on button press, release, and motion events. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +// +// Deprecated: use [ButtonEventMouseMode] instead. +const ( + MouseCellMotionMode = DECMode(1002) + + EnableMouseCellMotion = "\x1b[?1002h" + DisableMouseCellMotion = "\x1b[?1002l" + RequestMouseCellMotion = "\x1b[?1002$p" +) + +// Any Event Mouse Tracking is the same as [ButtonEventMouseMode], except that +// all motion events are reported even if no mouse buttons are pressed. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + AnyEventMouseMode = DECMode(1003) + + SetAnyEventMouseMode = "\x1b[?1003h" + ResetAnyEventMouseMode = "\x1b[?1003l" + RequestAnyEventMouseMode = "\x1b[?1003$p" +) + +// All Mouse Tracking is a mode that determines whether the mouse reports on +// button press, release, motion, and highlight events. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +// +// Deprecated: use [AnyEventMouseMode] instead. +const ( + MouseAllMotionMode = DECMode(1003) + + EnableMouseAllMotion = "\x1b[?1003h" + DisableMouseAllMotion = "\x1b[?1003l" + RequestMouseAllMotion = "\x1b[?1003$p" +) + +// Focus Event Mode is a mode that determines whether the terminal reports focus +// and blur events. +// +// The terminal sends the following encoding: +// +// CSI I // Focus In +// CSI O // Focus Out +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Focus-Tracking +const ( + FocusEventMode = DECMode(1004) + + SetFocusEventMode = "\x1b[?1004h" + ResetFocusEventMode = "\x1b[?1004l" + RequestFocusEventMode = "\x1b[?1004$p" +) + +// Deprecated: use [SetFocusEventMode], [ResetFocusEventMode], and +// [RequestFocusEventMode] instead. +// Focus reporting mode constants. +const ( + ReportFocusMode = DECMode(1004) //nolint:revive // grouped constants + + EnableReportFocus = "\x1b[?1004h" + DisableReportFocus = "\x1b[?1004l" + RequestReportFocus = "\x1b[?1004$p" +) + +// SGR Extended Mouse Mode is a mode that changes the mouse tracking encoding +// to use SGR parameters. +// +// The terminal responds with the following encoding: +// +// CSI < Cb ; Cx ; Cy M +// +// Where Cb is the same as [NormalMouseMode], and Cx and Cy are the x and y. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + SgrExtMouseMode = DECMode(1006) + + SetSgrExtMouseMode = "\x1b[?1006h" + ResetSgrExtMouseMode = "\x1b[?1006l" + RequestSgrExtMouseMode = "\x1b[?1006$p" +) + +// Deprecated: use [SgrExtMouseMode] [SetSgrExtMouseMode], +// [ResetSgrExtMouseMode], and [RequestSgrExtMouseMode] instead. +const ( + MouseSgrExtMode = DECMode(1006) //nolint:revive // grouped constants + EnableMouseSgrExt = "\x1b[?1006h" + DisableMouseSgrExt = "\x1b[?1006l" + RequestMouseSgrExt = "\x1b[?1006$p" +) + +// UTF-8 Extended Mouse Mode is a mode that changes the mouse tracking encoding +// to use UTF-8 parameters. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + Utf8ExtMouseMode = DECMode(1005) + + SetUtf8ExtMouseMode = "\x1b[?1005h" + ResetUtf8ExtMouseMode = "\x1b[?1005l" + RequestUtf8ExtMouseMode = "\x1b[?1005$p" +) + +// URXVT Extended Mouse Mode is a mode that changes the mouse tracking encoding +// to use an alternate encoding. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + UrxvtExtMouseMode = DECMode(1015) + + SetUrxvtExtMouseMode = "\x1b[?1015h" + ResetUrxvtExtMouseMode = "\x1b[?1015l" + RequestUrxvtExtMouseMode = "\x1b[?1015$p" +) + +// SGR Pixel Extended Mouse Mode is a mode that changes the mouse tracking +// encoding to use SGR parameters with pixel coordinates. +// +// This is similar to [SgrExtMouseMode], but also reports pixel coordinates. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking +const ( + SgrPixelExtMouseMode = DECMode(1016) + + SetSgrPixelExtMouseMode = "\x1b[?1016h" + ResetSgrPixelExtMouseMode = "\x1b[?1016l" + RequestSgrPixelExtMouseMode = "\x1b[?1016$p" +) + +// Alternate Screen Mode is a mode that determines whether the alternate screen +// buffer is active. When this mode is enabled, the alternate screen buffer is +// cleared. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer +const ( + AltScreenMode = DECMode(1047) + + SetAltScreenMode = "\x1b[?1047h" + ResetAltScreenMode = "\x1b[?1047l" + RequestAltScreenMode = "\x1b[?1047$p" +) + +// Save Cursor Mode is a mode that saves the cursor position. +// This is equivalent to [SaveCursor] and [RestoreCursor]. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer +const ( + SaveCursorMode = DECMode(1048) + + SetSaveCursorMode = "\x1b[?1048h" + ResetSaveCursorMode = "\x1b[?1048l" + RequestSaveCursorMode = "\x1b[?1048$p" +) + +// Alternate Screen Save Cursor Mode is a mode that saves the cursor position as in +// [SaveCursorMode], switches to the alternate screen buffer as in [AltScreenMode], +// and clears the screen on switch. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer +const ( + AltScreenSaveCursorMode = DECMode(1049) + + SetAltScreenSaveCursorMode = "\x1b[?1049h" + ResetAltScreenSaveCursorMode = "\x1b[?1049l" + RequestAltScreenSaveCursorMode = "\x1b[?1049$p" +) + +// Alternate Screen Buffer is a mode that determines whether the alternate screen +// buffer is active. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer +// +// Deprecated: use [AltScreenSaveCursorMode] instead. +const ( + AltScreenBufferMode = DECMode(1049) + + SetAltScreenBufferMode = "\x1b[?1049h" + ResetAltScreenBufferMode = "\x1b[?1049l" + RequestAltScreenBufferMode = "\x1b[?1049$p" + + EnableAltScreenBuffer = "\x1b[?1049h" + DisableAltScreenBuffer = "\x1b[?1049l" + RequestAltScreenBuffer = "\x1b[?1049$p" +) + +// Bracketed Paste Mode is a mode that determines whether pasted text is +// bracketed with escape sequences. +// +// See: https://cirw.in/blog/bracketed-paste +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode +const ( + BracketedPasteMode = DECMode(2004) + + SetBracketedPasteMode = "\x1b[?2004h" + ResetBracketedPasteMode = "\x1b[?2004l" + RequestBracketedPasteMode = "\x1b[?2004$p" +) + +// Deprecated: use [SetBracketedPasteMode], [ResetBracketedPasteMode], and +// [RequestBracketedPasteMode] instead. +const ( + EnableBracketedPaste = "\x1b[?2004h" //nolint:revive // grouped constants + DisableBracketedPaste = "\x1b[?2004l" + RequestBracketedPaste = "\x1b[?2004$p" +) + +// Synchronized Output Mode is a mode that determines whether output is +// synchronized with the terminal. +// +// See: https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036 +const ( + SynchronizedOutputMode = DECMode(2026) + + SetSynchronizedOutputMode = "\x1b[?2026h" + ResetSynchronizedOutputMode = "\x1b[?2026l" + RequestSynchronizedOutputMode = "\x1b[?2026$p" +) + +// Synchronized Output Mode. See [SynchronizedOutputMode]. +// +// Deprecated: use [SynchronizedOutputMode], [SetSynchronizedOutputMode], and +// [ResetSynchronizedOutputMode], and [RequestSynchronizedOutputMode] instead. +const ( + SyncdOutputMode = DECMode(2026) + + EnableSyncdOutput = "\x1b[?2026h" + DisableSyncdOutput = "\x1b[?2026l" + RequestSyncdOutput = "\x1b[?2026$p" +) + +// Unicode Core Mode is a mode that determines whether the terminal should use +// Unicode grapheme clustering to calculate the width of glyphs for each +// terminal cell. +// +// See: https://github.com/contour-terminal/terminal-unicode-core +const ( + UnicodeCoreMode = DECMode(2027) + + SetUnicodeCoreMode = "\x1b[?2027h" + ResetUnicodeCoreMode = "\x1b[?2027l" + RequestUnicodeCoreMode = "\x1b[?2027$p" +) + +// Grapheme Clustering Mode is a mode that determines whether the terminal +// should look for grapheme clusters instead of single runes in the rendered +// text. This makes the terminal properly render combining characters such as +// emojis. +// +// See: https://github.com/contour-terminal/terminal-unicode-core +// +// Deprecated: use [GraphemeClusteringMode], [SetUnicodeCoreMode], +// [ResetUnicodeCoreMode], and [RequestUnicodeCoreMode] instead. +const ( + GraphemeClusteringMode = DECMode(2027) + + SetGraphemeClusteringMode = "\x1b[?2027h" + ResetGraphemeClusteringMode = "\x1b[?2027l" + RequestGraphemeClusteringMode = "\x1b[?2027$p" +) + +// Grapheme Clustering Mode. See [GraphemeClusteringMode]. +// +// Deprecated: use [SetUnicodeCoreMode], [ResetUnicodeCoreMode], and +// [RequestUnicodeCoreMode] instead. +const ( + EnableGraphemeClustering = "\x1b[?2027h" + DisableGraphemeClustering = "\x1b[?2027l" + RequestGraphemeClustering = "\x1b[?2027$p" +) + +// LightDarkMode is a mode that enables reporting the operating system's color +// scheme (light or dark) preference. It reports the color scheme as a [DSR] +// and [LightDarkReport] escape sequences encoded as follows: +// +// CSI ? 997 ; 1 n for dark mode +// CSI ? 997 ; 2 n for light mode +// +// The color preference can also be requested via the following [DSR] and +// [RequestLightDarkReport] escape sequences: +// +// CSI ? 996 n +// +// See: https://contour-terminal.org/vt-extensions/color-palette-update-notifications/ +const ( + LightDarkMode = DECMode(2031) + + SetLightDarkMode = "\x1b[?2031h" + ResetLightDarkMode = "\x1b[?2031l" + RequestLightDarkMode = "\x1b[?2031$p" +) + +// InBandResizeMode is a mode that reports terminal resize events as escape +// sequences. This is useful for systems that do not support [SIGWINCH] like +// Windows. +// +// The terminal then sends the following encoding: +// +// CSI 48 ; cellsHeight ; cellsWidth ; pixelHeight ; pixelWidth t +// +// See: https://gist.github.com/rockorager/e695fb2924d36b2bcf1fff4a3704bd83 +const ( + InBandResizeMode = DECMode(2048) + + SetInBandResizeMode = "\x1b[?2048h" + ResetInBandResizeMode = "\x1b[?2048l" + RequestInBandResizeMode = "\x1b[?2048$p" +) + +// Win32Input is a mode that determines whether input is processed by the +// Win32 console and Conpty. +// +// See: https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md +const ( + Win32InputMode = DECMode(9001) + + SetWin32InputMode = "\x1b[?9001h" + ResetWin32InputMode = "\x1b[?9001l" + RequestWin32InputMode = "\x1b[?9001$p" +) + +// Deprecated: use [SetWin32InputMode], [ResetWin32InputMode], and +// [RequestWin32InputMode] instead. +const ( + EnableWin32Input = "\x1b[?9001h" //nolint:revive // grouped constants + DisableWin32Input = "\x1b[?9001l" + RequestWin32Input = "\x1b[?9001$p" +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/modes.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/modes.go new file mode 100644 index 0000000..6856d35 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/modes.go @@ -0,0 +1,65 @@ +package ansi + +// Modes represents the terminal modes that can be set or reset. By default, +// all modes are [ModeNotRecognized]. +type Modes map[Mode]ModeSetting + +// Get returns the setting of a terminal mode. If the mode is not set, it +// returns [ModeNotRecognized]. +func (m Modes) Get(mode Mode) ModeSetting { + return m[mode] +} + +// Delete deletes a terminal mode. This has the same effect as setting the mode +// to [ModeNotRecognized]. +func (m Modes) Delete(mode Mode) { + delete(m, mode) +} + +// Set sets a terminal mode to [ModeSet]. +func (m Modes) Set(modes ...Mode) { + for _, mode := range modes { + m[mode] = ModeSet + } +} + +// PermanentlySet sets a terminal mode to [ModePermanentlySet]. +func (m Modes) PermanentlySet(modes ...Mode) { + for _, mode := range modes { + m[mode] = ModePermanentlySet + } +} + +// Reset sets a terminal mode to [ModeReset]. +func (m Modes) Reset(modes ...Mode) { + for _, mode := range modes { + m[mode] = ModeReset + } +} + +// PermanentlyReset sets a terminal mode to [ModePermanentlyReset]. +func (m Modes) PermanentlyReset(modes ...Mode) { + for _, mode := range modes { + m[mode] = ModePermanentlyReset + } +} + +// IsSet returns true if the mode is set to [ModeSet] or [ModePermanentlySet]. +func (m Modes) IsSet(mode Mode) bool { + return m[mode].IsSet() +} + +// IsPermanentlySet returns true if the mode is set to [ModePermanentlySet]. +func (m Modes) IsPermanentlySet(mode Mode) bool { + return m[mode].IsPermanentlySet() +} + +// IsReset returns true if the mode is set to [ModeReset] or [ModePermanentlyReset]. +func (m Modes) IsReset(mode Mode) bool { + return m[mode].IsReset() +} + +// IsPermanentlyReset returns true if the mode is set to [ModePermanentlyReset]. +func (m Modes) IsPermanentlyReset(mode Mode) bool { + return m[mode].IsPermanentlyReset() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mouse.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mouse.go new file mode 100644 index 0000000..0e4776b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/mouse.go @@ -0,0 +1,172 @@ +package ansi + +import ( + "fmt" +) + +// MouseButton represents the button that was pressed during a mouse message. +type MouseButton byte + +// Mouse event buttons +// +// This is based on X11 mouse button codes. +// +// 1 = left button +// 2 = middle button (pressing the scroll wheel) +// 3 = right button +// 4 = turn scroll wheel up +// 5 = turn scroll wheel down +// 6 = push scroll wheel left +// 7 = push scroll wheel right +// 8 = 4th button (aka browser backward button) +// 9 = 5th button (aka browser forward button) +// 10 +// 11 +// +// Other buttons are not supported. +const ( + MouseNone MouseButton = iota + MouseButton1 + MouseButton2 + MouseButton3 + MouseButton4 + MouseButton5 + MouseButton6 + MouseButton7 + MouseButton8 + MouseButton9 + MouseButton10 + MouseButton11 + + MouseLeft = MouseButton1 + MouseMiddle = MouseButton2 + MouseRight = MouseButton3 + MouseWheelUp = MouseButton4 + MouseWheelDown = MouseButton5 + MouseWheelLeft = MouseButton6 + MouseWheelRight = MouseButton7 + MouseBackward = MouseButton8 + MouseForward = MouseButton9 + MouseRelease = MouseNone +) + +var mouseButtons = map[MouseButton]string{ + MouseNone: "none", + MouseLeft: "left", + MouseMiddle: "middle", + MouseRight: "right", + MouseWheelUp: "wheelup", + MouseWheelDown: "wheeldown", + MouseWheelLeft: "wheelleft", + MouseWheelRight: "wheelright", + MouseBackward: "backward", + MouseForward: "forward", + MouseButton10: "button10", + MouseButton11: "button11", +} + +// String returns a string representation of the mouse button. +func (b MouseButton) String() string { + return mouseButtons[b] +} + +// EncodeMouseButton returns a byte representing a mouse button. +// The button is a bitmask of the following leftmost values: +// +// - The first two bits are the button number: +// 0 = left button, wheel up, or button no. 8 aka (backwards) +// 1 = middle button, wheel down, or button no. 9 aka (forwards) +// 2 = right button, wheel left, or button no. 10 +// 3 = release event, wheel right, or button no. 11 +// +// - The third bit indicates whether the shift key was pressed. +// +// - The fourth bit indicates the alt key was pressed. +// +// - The fifth bit indicates the control key was pressed. +// +// - The sixth bit indicates motion events. Combined with button number 3, i.e. +// release event, it represents a drag event. +// +// - The seventh bit indicates a wheel event. +// +// - The eighth bit indicates additional buttons. +// +// If button is [MouseNone], and motion is false, this returns a release event. +// If button is undefined, this function returns 0xff. +func EncodeMouseButton(b MouseButton, motion, shift, alt, ctrl bool) (m byte) { + // mouse bit shifts + const ( + bitShift = 0b0000_0100 + bitAlt = 0b0000_1000 + bitCtrl = 0b0001_0000 + bitMotion = 0b0010_0000 + bitWheel = 0b0100_0000 + bitAdd = 0b1000_0000 // additional buttons 8-11 + + bitsMask = 0b0000_0011 + ) + + if b == MouseNone { + m = bitsMask + } else if b >= MouseLeft && b <= MouseRight { + m = byte(b - MouseLeft) + } else if b >= MouseWheelUp && b <= MouseWheelRight { + m = byte(b - MouseWheelUp) + m |= bitWheel + } else if b >= MouseBackward && b <= MouseButton11 { + m = byte(b - MouseBackward) + m |= bitAdd + } else { + m = 0xff // invalid button + } + + if shift { + m |= bitShift + } + if alt { + m |= bitAlt + } + if ctrl { + m |= bitCtrl + } + if motion { + m |= bitMotion + } + + return //nolint:nakedret +} + +// x10Offset is the offset for X10 mouse events. +// See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#Mouse%20Tracking +const x10Offset = 32 + +// MouseX10 returns an escape sequence representing a mouse event in X10 mode. +// Note that this requires the terminal support X10 mouse modes. +// +// CSI M Cb Cx Cy +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#Mouse%20Tracking +func MouseX10(b byte, x, y int) string { + return "\x1b[M" + string(b+x10Offset) + string(byte(x)+x10Offset+1) + string(byte(y)+x10Offset+1) +} + +// MouseSgr returns an escape sequence representing a mouse event in SGR mode. +// +// CSI < Cb ; Cx ; Cy M +// CSI < Cb ; Cx ; Cy m (release) +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#Mouse%20Tracking +func MouseSgr(b byte, x, y int, release bool) string { + s := 'M' + if release { + s = 'm' + } + if x < 0 { + x = -x + } + if y < 0 { + y = -y + } + return fmt.Sprintf("\x1b[<%d;%d;%d%c", b, x+1, y+1, s) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/notification.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/notification.go new file mode 100644 index 0000000..c712f34 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/notification.go @@ -0,0 +1,13 @@ +package ansi + +// Notify sends a desktop notification using iTerm's OSC 9. +// +// OSC 9 ; Mc ST +// OSC 9 ; Mc BEL +// +// Where Mc is the notification body. +// +// See: https://iterm2.com/documentation-escape-codes.html +func Notify(s string) string { + return "\x1b]9;" + s + "\x07" +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser.go new file mode 100644 index 0000000..e770c15 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser.go @@ -0,0 +1,417 @@ +package ansi + +import ( + "unicode/utf8" + "unsafe" + + "github.com/charmbracelet/x/ansi/parser" +) + +// Parser represents a DEC ANSI compatible sequence parser. +// +// It uses a state machine to parse ANSI escape sequences and control +// characters. The parser is designed to be used with a terminal emulator or +// similar application that needs to parse ANSI escape sequences and control +// characters. +// See package [parser] for more information. +// +//go:generate go run ./gen.go +type Parser struct { + handler Handler + + // params contains the raw parameters of the sequence. + // These parameters used when constructing CSI and DCS sequences. + params []int + + // data contains the raw data of the sequence. + // These data used when constructing OSC, DCS, SOS, PM, and APC sequences. + data []byte + + // dataLen keeps track of the length of the data buffer. + // If dataLen is -1, the data buffer is unlimited and will grow as needed. + // Otherwise, dataLen is limited by the size of the data buffer. + dataLen int + + // paramsLen keeps track of the number of parameters. + // This is limited by the size of the params buffer. + // + // This is also used when collecting UTF-8 runes to keep track of the + // number of rune bytes collected. + paramsLen int + + // cmd contains the raw command along with the private prefix and + // intermediate bytes of the sequence. + // The first lower byte contains the command byte, the next byte contains + // the private prefix, and the next byte contains the intermediate byte. + // + // This is also used when collecting UTF-8 runes treating it as a slice of + // 4 bytes. + cmd int + + // state is the current state of the parser. + state byte +} + +// NewParser returns a new parser with the default settings. +// The [Parser] uses a default size of 32 for the parameters and 64KB for the +// data buffer. Use [Parser.SetParamsSize] and [Parser.SetDataSize] to set the +// size of the parameters and data buffer respectively. +func NewParser() *Parser { + p := new(Parser) + p.SetParamsSize(parser.MaxParamsSize) + p.SetDataSize(1024 * 64) // 64KB data buffer + return p +} + +// SetParamsSize sets the size of the parameters buffer. +// This is used when constructing CSI and DCS sequences. +func (p *Parser) SetParamsSize(size int) { + p.params = make([]int, size) +} + +// SetDataSize sets the size of the data buffer. +// This is used when constructing OSC, DCS, SOS, PM, and APC sequences. +// If size is less than or equal to 0, the data buffer is unlimited and will +// grow as needed. +func (p *Parser) SetDataSize(size int) { + if size <= 0 { + size = 0 + p.dataLen = -1 + } + p.data = make([]byte, size) +} + +// Params returns the list of parsed packed parameters. +func (p *Parser) Params() Params { + return unsafe.Slice((*Param)(unsafe.Pointer(&p.params[0])), p.paramsLen) +} + +// Param returns the parameter at the given index and falls back to the default +// value if the parameter is missing. If the index is out of bounds, it returns +// the default value and false. +func (p *Parser) Param(i, def int) (int, bool) { + if i < 0 || i >= p.paramsLen { + return def, false + } + return Param(p.params[i]).Param(def), true +} + +// Command returns the packed command of the last dispatched sequence. Use +// [Cmd] to unpack the command. +func (p *Parser) Command() int { + return p.cmd +} + +// Rune returns the last dispatched sequence as a rune. +func (p *Parser) Rune() rune { + rw := utf8ByteLen(byte(p.cmd & 0xff)) + if rw == -1 { + return utf8.RuneError + } + r, _ := utf8.DecodeRune((*[utf8.UTFMax]byte)(unsafe.Pointer(&p.cmd))[:rw]) + return r +} + +// Control returns the last dispatched sequence as a control code. +func (p *Parser) Control() byte { + return byte(p.cmd & 0xff) +} + +// Data returns the raw data of the last dispatched sequence. +func (p *Parser) Data() []byte { + return p.data[:p.dataLen] +} + +// Reset resets the parser to its initial state. +func (p *Parser) Reset() { + p.clear() + p.state = parser.GroundState +} + +// clear clears the parser parameters and command. +func (p *Parser) clear() { + if len(p.params) > 0 { + p.params[0] = parser.MissingParam + } + p.paramsLen = 0 + p.cmd = 0 +} + +// State returns the current state of the parser. +func (p *Parser) State() parser.State { + return p.state +} + +// StateName returns the name of the current state. +func (p *Parser) StateName() string { + return parser.StateNames[p.state] +} + +// Parse parses the given dispatcher and byte buffer. +// Deprecated: Loop over the buffer and call [Parser.Advance] instead. +func (p *Parser) Parse(b []byte) { + for i := range b { + p.Advance(b[i]) + } +} + +// Advance advances the parser using the given byte. It returns the action +// performed by the parser. +func (p *Parser) Advance(b byte) parser.Action { + switch p.state { + case parser.Utf8State: + // We handle UTF-8 here. + return p.advanceUtf8(b) + default: + return p.advance(b) + } +} + +func (p *Parser) collectRune(b byte) { + if p.paramsLen >= utf8.UTFMax { + return + } + + shift := p.paramsLen * 8 + p.cmd &^= 0xff << shift + p.cmd |= int(b) << shift + p.paramsLen++ +} + +func (p *Parser) advanceUtf8(b byte) parser.Action { + // Collect UTF-8 rune bytes. + p.collectRune(b) + rw := utf8ByteLen(byte(p.cmd & 0xff)) + if rw == -1 { + // We panic here because the first byte comes from the state machine, + // if this panics, it means there is a bug in the state machine! + panic("invalid rune") // unreachable + } + + if p.paramsLen < rw { + return parser.CollectAction + } + + // We have enough bytes to decode the rune using unsafe + if p.handler.Print != nil { + p.handler.Print(p.Rune()) + } + + p.state = parser.GroundState + p.paramsLen = 0 + + return parser.PrintAction +} + +func (p *Parser) advance(b byte) parser.Action { + state, action := parser.Table.Transition(p.state, b) + + // We need to clear the parser state if the state changes from EscapeState. + // This is because when we enter the EscapeState, we don't get a chance to + // clear the parser state. For example, when a sequence terminates with a + // ST (\x1b\\ or \x9c), we dispatch the current sequence and transition to + // EscapeState. However, the parser state is not cleared in this case and + // we need to clear it here before dispatching the esc sequence. + if p.state != state { + if p.state == parser.EscapeState { + p.performAction(parser.ClearAction, state, b) + } + if action == parser.PutAction && + p.state == parser.DcsEntryState && state == parser.DcsStringState { + // XXX: This is a special case where we need to start collecting + // non-string parameterized data i.e. doesn't follow the ECMA-48 § + // 5.4.1 string parameters format. + p.performAction(parser.StartAction, state, 0) + } + } + + // Handle special cases + switch { + case b == ESC && p.state == parser.EscapeState: + // Two ESCs in a row + p.performAction(parser.ExecuteAction, state, b) + default: + p.performAction(action, state, b) + } + + p.state = state + + return action +} + +func (p *Parser) parseStringCmd() { + // Try to parse the command + datalen := len(p.data) + if p.dataLen >= 0 { + datalen = p.dataLen + } + for i := range datalen { + d := p.data[i] + if d < '0' || d > '9' { + break + } + if p.cmd == parser.MissingCommand { + p.cmd = 0 + } + p.cmd *= 10 + p.cmd += int(d - '0') + } +} + +func (p *Parser) performAction(action parser.Action, state parser.State, b byte) { + switch action { + case parser.IgnoreAction: + break + + case parser.ClearAction: + p.clear() + + case parser.PrintAction: + p.cmd = int(b) + if p.handler.Print != nil { + p.handler.Print(rune(b)) + } + + case parser.ExecuteAction: + p.cmd = int(b) + if p.handler.Execute != nil { + p.handler.Execute(b) + } + + case parser.PrefixAction: + // Collect private prefix + // we only store the last prefix + p.cmd &^= 0xff << parser.PrefixShift + p.cmd |= int(b) << parser.PrefixShift + + case parser.CollectAction: + if state == parser.Utf8State { + // Reset the UTF-8 counter + p.paramsLen = 0 + p.collectRune(b) + } else { + // Collect intermediate bytes + // we only store the last intermediate byte + p.cmd &^= 0xff << parser.IntermedShift + p.cmd |= int(b) << parser.IntermedShift + } + + case parser.ParamAction: + // Collect parameters + if p.paramsLen >= len(p.params) { + break + } + + if b >= '0' && b <= '9' { + if p.params[p.paramsLen] == parser.MissingParam { + p.params[p.paramsLen] = 0 + } + + p.params[p.paramsLen] *= 10 + p.params[p.paramsLen] += int(b - '0') + } + + if b == ':' { + p.params[p.paramsLen] |= parser.HasMoreFlag + } + + if b == ';' || b == ':' { + p.paramsLen++ + if p.paramsLen < len(p.params) { + p.params[p.paramsLen] = parser.MissingParam + } + } + + case parser.StartAction: + if p.dataLen < 0 && p.data != nil { + p.data = p.data[:0] + } else { + p.dataLen = 0 + } + if p.state >= parser.DcsEntryState && p.state <= parser.DcsStringState { + // Collect the command byte for DCS + p.cmd |= int(b) + } else { + p.cmd = parser.MissingCommand + } + + case parser.PutAction: + switch p.state { + case parser.OscStringState: + if b == ';' && p.cmd == parser.MissingCommand { + p.parseStringCmd() + } + } + + if p.dataLen < 0 { + p.data = append(p.data, b) + } else { + if p.dataLen < len(p.data) { + p.data[p.dataLen] = b + p.dataLen++ + } + } + + case parser.DispatchAction: + // Increment the last parameter + if p.paramsLen > 0 && p.paramsLen < len(p.params)-1 || + p.paramsLen == 0 && len(p.params) > 0 && p.params[0] != parser.MissingParam { + p.paramsLen++ + } + + if p.state == parser.OscStringState && p.cmd == parser.MissingCommand { + // Ensure we have a command for OSC + p.parseStringCmd() + } + + data := p.data + if p.dataLen >= 0 { + data = data[:p.dataLen] + } + switch p.state { + case parser.CsiEntryState, parser.CsiParamState, parser.CsiIntermediateState: + p.cmd |= int(b) + if p.handler.HandleCsi != nil { + p.handler.HandleCsi(Cmd(p.cmd), p.Params()) + } + case parser.EscapeState, parser.EscapeIntermediateState: + p.cmd |= int(b) + if p.handler.HandleEsc != nil { + p.handler.HandleEsc(Cmd(p.cmd)) + } + case parser.DcsEntryState, parser.DcsParamState, parser.DcsIntermediateState, parser.DcsStringState: + if p.handler.HandleDcs != nil { + p.handler.HandleDcs(Cmd(p.cmd), p.Params(), data) + } + case parser.OscStringState: + if p.handler.HandleOsc != nil { + p.handler.HandleOsc(p.cmd, data) + } + case parser.SosStringState: + if p.handler.HandleSos != nil { + p.handler.HandleSos(data) + } + case parser.PmStringState: + if p.handler.HandlePm != nil { + p.handler.HandlePm(data) + } + case parser.ApcStringState: + if p.handler.HandleApc != nil { + p.handler.HandleApc(data) + } + } + } +} + +func utf8ByteLen(b byte) int { + if b <= 0b0111_1111 { // 0x00-0x7F + return 1 + } else if b >= 0b1100_0000 && b <= 0b1101_1111 { // 0xC0-0xDF + return 2 + } else if b >= 0b1110_0000 && b <= 0b1110_1111 { // 0xE0-0xEF + return 3 + } else if b >= 0b1111_0000 && b <= 0b1111_0111 { // 0xF0-0xF7 + return 4 + } + return -1 +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/const.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/const.go new file mode 100644 index 0000000..85c9086 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/const.go @@ -0,0 +1,79 @@ +// Package parser provides ANSI escape sequence parsing functionality. +package parser + +// Action is a DEC ANSI parser action. +type Action = byte + +// These are the actions that the parser can take. +const ( + NoneAction Action = iota + ClearAction + CollectAction + PrefixAction + DispatchAction + ExecuteAction + StartAction // Start of a data string + PutAction // Put into the data string + ParamAction + PrintAction + + IgnoreAction = NoneAction +) + +// ActionNames provides string names for parser actions. +var ActionNames = []string{ + "NoneAction", + "ClearAction", + "CollectAction", + "PrefixAction", + "DispatchAction", + "ExecuteAction", + "StartAction", + "PutAction", + "ParamAction", + "PrintAction", +} + +// State is a DEC ANSI parser state. +type State = byte + +// These are the states that the parser can be in. +const ( + GroundState State = iota + CsiEntryState + CsiIntermediateState + CsiParamState + DcsEntryState + DcsIntermediateState + DcsParamState + DcsStringState + EscapeState + EscapeIntermediateState + OscStringState + SosStringState + PmStringState + ApcStringState + + // Utf8State is not part of the DEC ANSI standard. It is used to handle + // UTF-8 sequences. + Utf8State +) + +// StateNames provides string names for parser states. +var StateNames = []string{ + "GroundState", + "CsiEntryState", + "CsiIntermediateState", + "CsiParamState", + "DcsEntryState", + "DcsIntermediateState", + "DcsParamState", + "DcsStringState", + "EscapeState", + "EscapeIntermediateState", + "OscStringState", + "SosStringState", + "PmStringState", + "ApcStringState", + "Utf8State", +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/seq.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/seq.go new file mode 100644 index 0000000..de7e15e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/seq.go @@ -0,0 +1,136 @@ +package parser + +import "math" + +// Shift and masks for sequence parameters and intermediates. +const ( + PrefixShift = 8 + IntermedShift = 16 + FinalMask = 0xff + HasMoreFlag = math.MinInt32 + ParamMask = ^HasMoreFlag + MissingParam = ParamMask + MissingCommand = MissingParam + MaxParam = math.MaxUint16 // the maximum value a parameter can have +) + +const ( + // MaxParamsSize is the maximum number of parameters a sequence can have. + MaxParamsSize = 32 + + // DefaultParamValue is the default value used for missing parameters. + DefaultParamValue = 0 +) + +// Prefix returns the prefix byte of the sequence. +// This is always gonna be one of the following '<' '=' '>' '?' and in the +// range of 0x3C-0x3F. +// Zero is returned if the sequence does not have a prefix. +func Prefix(cmd int) int { + return (cmd >> PrefixShift) & FinalMask +} + +// Intermediate returns the intermediate byte of the sequence. +// An intermediate byte is in the range of 0x20-0x2F. This includes these +// characters from ' ', '!', '"', '#', '$', '%', '&', ”', '(', ')', '*', '+', +// ',', '-', '.', '/'. +// Zero is returned if the sequence does not have an intermediate byte. +func Intermediate(cmd int) int { + return (cmd >> IntermedShift) & FinalMask +} + +// Command returns the command byte of the CSI sequence. +func Command(cmd int) int { + return cmd & FinalMask +} + +// Param returns the parameter at the given index. +// It returns -1 if the parameter does not exist. +func Param(params []int, i int) int { + if len(params) == 0 || i < 0 || i >= len(params) { + return -1 + } + + p := params[i] & ParamMask + if p == MissingParam { + return -1 + } + + return p +} + +// HasMore returns true if the parameter has more sub-parameters. +func HasMore(params []int, i int) bool { + if len(params) == 0 || i >= len(params) { + return false + } + + return params[i]&HasMoreFlag != 0 +} + +// Subparams returns the sub-parameters of the given parameter. +// It returns nil if the parameter does not exist. +func Subparams(params []int, i int) []int { + if len(params) == 0 || i < 0 || i >= len(params) { + return nil + } + + // Count the number of parameters before the given parameter index. + var count int + var j int + for j = range params { + if count == i { + break + } + if !HasMore(params, j) { + count++ + } + } + + if count > i || j >= len(params) { + return nil + } + + var subs []int + for ; j < len(params); j++ { + if !HasMore(params, j) { + break + } + p := Param(params, j) + if p == -1 { + p = DefaultParamValue + } + subs = append(subs, p) + } + + p := Param(params, j) + if p == -1 { + p = DefaultParamValue + } + + return append(subs, p) +} + +// Len returns the number of parameters in the sequence. +// This will return the number of parameters in the sequence, excluding any +// sub-parameters. +func Len(params []int) int { + var n int + for i := range params { + if !HasMore(params, i) { + n++ + } + } + return n +} + +// Range iterates over the parameters of the sequence and calls the given +// function for each parameter. +// The function should return false to stop the iteration. +func Range(params []int, fn func(i int, param int, hasMore bool) bool) { + for i := range params { + if !fn(i, Param(params, i), HasMore(params, i)) { + break + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go new file mode 100644 index 0000000..ef46b7b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser/transition_table.go @@ -0,0 +1,273 @@ +package parser + +// Table values are generated like this: +// +// index: currentState << IndexStateShift | charCode +// value: action << TransitionActionShift | nextState +const ( + TransitionActionShift = 4 + TransitionStateMask = 15 + IndexStateShift = 8 + + // DefaultTableSize is the default size of the transition table. + DefaultTableSize = 4096 +) + +// Table is a DEC ANSI transition table. +var Table = GenerateTransitionTable() + +// TransitionTable is a DEC ANSI transition table. +// https://vt100.net/emu/dec_ansi_parser +type TransitionTable []byte + +// NewTransitionTable returns a new DEC ANSI transition table. +func NewTransitionTable(size int) TransitionTable { + if size <= 0 { + size = DefaultTableSize + } + return TransitionTable(make([]byte, size)) +} + +// SetDefault sets default transition. +func (t TransitionTable) SetDefault(action Action, state State) { + for i := range t { + t[i] = action<> TransitionActionShift +} + +// byte range macro. +func r(start, end byte) []byte { + var a []byte + for i := int(start); i <= int(end); i++ { + a = append(a, byte(i)) + } + return a +} + +// GenerateTransitionTable generates a DEC ANSI transition table compatible +// with the VT500-series of terminals. This implementation includes a few +// modifications that include: +// - A new Utf8State is introduced to handle UTF8 sequences. +// - Osc and Dcs data accept UTF8 sequences by extending the printable range +// to 0xFF and 0xFE respectively. +// - We don't ignore 0x3A (':') when building Csi and Dcs parameters and +// instead use it to denote sub-parameters. +// - Support dispatching SosPmApc sequences. +// - The DEL (0x7F) character is executed in the Ground state. +// - The DEL (0x7F) character is collected in the DcsPassthrough string state. +// - The ST C1 control character (0x9C) is executed and not ignored. +func GenerateTransitionTable() TransitionTable { + table := NewTransitionTable(DefaultTableSize) + table.SetDefault(NoneAction, GroundState) + + // Anywhere + for _, state := range r(GroundState, Utf8State) { + // Anywhere -> Ground + table.AddMany([]byte{0x18, 0x1a, 0x99, 0x9a}, state, ExecuteAction, GroundState) + table.AddRange(0x80, 0x8F, state, ExecuteAction, GroundState) + table.AddRange(0x90, 0x97, state, ExecuteAction, GroundState) + table.AddOne(0x9C, state, ExecuteAction, GroundState) + // Anywhere -> Escape + table.AddOne(0x1B, state, ClearAction, EscapeState) + // Anywhere -> SosStringState + table.AddOne(0x98, state, StartAction, SosStringState) + // Anywhere -> PmStringState + table.AddOne(0x9E, state, StartAction, PmStringState) + // Anywhere -> ApcStringState + table.AddOne(0x9F, state, StartAction, ApcStringState) + // Anywhere -> CsiEntry + table.AddOne(0x9B, state, ClearAction, CsiEntryState) + // Anywhere -> DcsEntry + table.AddOne(0x90, state, ClearAction, DcsEntryState) + // Anywhere -> OscString + table.AddOne(0x9D, state, StartAction, OscStringState) + // Anywhere -> Utf8 + table.AddRange(0xC2, 0xDF, state, CollectAction, Utf8State) // UTF8 2 byte sequence + table.AddRange(0xE0, 0xEF, state, CollectAction, Utf8State) // UTF8 3 byte sequence + table.AddRange(0xF0, 0xF4, state, CollectAction, Utf8State) // UTF8 4 byte sequence + } + + // Ground + table.AddRange(0x00, 0x17, GroundState, ExecuteAction, GroundState) + table.AddOne(0x19, GroundState, ExecuteAction, GroundState) + table.AddRange(0x1C, 0x1F, GroundState, ExecuteAction, GroundState) + table.AddRange(0x20, 0x7E, GroundState, PrintAction, GroundState) + table.AddOne(0x7F, GroundState, ExecuteAction, GroundState) + + // EscapeIntermediate + table.AddRange(0x00, 0x17, EscapeIntermediateState, ExecuteAction, EscapeIntermediateState) + table.AddOne(0x19, EscapeIntermediateState, ExecuteAction, EscapeIntermediateState) + table.AddRange(0x1C, 0x1F, EscapeIntermediateState, ExecuteAction, EscapeIntermediateState) + table.AddRange(0x20, 0x2F, EscapeIntermediateState, CollectAction, EscapeIntermediateState) + table.AddOne(0x7F, EscapeIntermediateState, IgnoreAction, EscapeIntermediateState) + // EscapeIntermediate -> Ground + table.AddRange(0x30, 0x7E, EscapeIntermediateState, DispatchAction, GroundState) + + // Escape + table.AddRange(0x00, 0x17, EscapeState, ExecuteAction, EscapeState) + table.AddOne(0x19, EscapeState, ExecuteAction, EscapeState) + table.AddRange(0x1C, 0x1F, EscapeState, ExecuteAction, EscapeState) + table.AddOne(0x7F, EscapeState, IgnoreAction, EscapeState) + // Escape -> Ground + table.AddRange(0x30, 0x4F, EscapeState, DispatchAction, GroundState) + table.AddRange(0x51, 0x57, EscapeState, DispatchAction, GroundState) + table.AddOne(0x59, EscapeState, DispatchAction, GroundState) + table.AddOne(0x5A, EscapeState, DispatchAction, GroundState) + table.AddOne(0x5C, EscapeState, DispatchAction, GroundState) + table.AddRange(0x60, 0x7E, EscapeState, DispatchAction, GroundState) + // Escape -> Escape_intermediate + table.AddRange(0x20, 0x2F, EscapeState, CollectAction, EscapeIntermediateState) + // Escape -> Sos_pm_apc_string + table.AddOne('X', EscapeState, StartAction, SosStringState) // SOS + table.AddOne('^', EscapeState, StartAction, PmStringState) // PM + table.AddOne('_', EscapeState, StartAction, ApcStringState) // APC + // Escape -> Dcs_entry + table.AddOne('P', EscapeState, ClearAction, DcsEntryState) + // Escape -> Csi_entry + table.AddOne('[', EscapeState, ClearAction, CsiEntryState) + // Escape -> Osc_string + table.AddOne(']', EscapeState, StartAction, OscStringState) + + // Sos_pm_apc_string + for _, state := range r(SosStringState, ApcStringState) { + table.AddRange(0x00, 0x17, state, PutAction, state) + table.AddOne(0x19, state, PutAction, state) + table.AddRange(0x1C, 0x1F, state, PutAction, state) + table.AddRange(0x20, 0x7F, state, PutAction, state) + // ESC, ST, CAN, and SUB terminate the sequence + table.AddOne(0x1B, state, DispatchAction, EscapeState) + table.AddOne(0x9C, state, DispatchAction, GroundState) + table.AddMany([]byte{0x18, 0x1A}, state, IgnoreAction, GroundState) + } + + // Dcs_entry + table.AddRange(0x00, 0x07, DcsEntryState, IgnoreAction, DcsEntryState) + table.AddRange(0x0E, 0x17, DcsEntryState, IgnoreAction, DcsEntryState) + table.AddOne(0x19, DcsEntryState, IgnoreAction, DcsEntryState) + table.AddRange(0x1C, 0x1F, DcsEntryState, IgnoreAction, DcsEntryState) + table.AddOne(0x7F, DcsEntryState, IgnoreAction, DcsEntryState) + // Dcs_entry -> Dcs_intermediate + table.AddRange(0x20, 0x2F, DcsEntryState, CollectAction, DcsIntermediateState) + // Dcs_entry -> Dcs_param + table.AddRange(0x30, 0x3B, DcsEntryState, ParamAction, DcsParamState) + table.AddRange(0x3C, 0x3F, DcsEntryState, PrefixAction, DcsParamState) + // Dcs_entry -> Dcs_passthrough + table.AddRange(0x08, 0x0D, DcsEntryState, PutAction, DcsStringState) // Follows ECMA-48 § 8.3.27 + // XXX: allows passing ESC (not a ECMA-48 standard) this to allow for + // passthrough of ANSI sequences like in Screen or Tmux passthrough mode. + table.AddOne(0x1B, DcsEntryState, PutAction, DcsStringState) + table.AddRange(0x40, 0x7E, DcsEntryState, StartAction, DcsStringState) + + // Dcs_intermediate + table.AddRange(0x00, 0x17, DcsIntermediateState, IgnoreAction, DcsIntermediateState) + table.AddOne(0x19, DcsIntermediateState, IgnoreAction, DcsIntermediateState) + table.AddRange(0x1C, 0x1F, DcsIntermediateState, IgnoreAction, DcsIntermediateState) + table.AddRange(0x20, 0x2F, DcsIntermediateState, CollectAction, DcsIntermediateState) + table.AddOne(0x7F, DcsIntermediateState, IgnoreAction, DcsIntermediateState) + // Dcs_intermediate -> Dcs_passthrough + table.AddRange(0x30, 0x3F, DcsIntermediateState, StartAction, DcsStringState) + table.AddRange(0x40, 0x7E, DcsIntermediateState, StartAction, DcsStringState) + + // Dcs_param + table.AddRange(0x00, 0x17, DcsParamState, IgnoreAction, DcsParamState) + table.AddOne(0x19, DcsParamState, IgnoreAction, DcsParamState) + table.AddRange(0x1C, 0x1F, DcsParamState, IgnoreAction, DcsParamState) + table.AddRange(0x30, 0x3B, DcsParamState, ParamAction, DcsParamState) + table.AddOne(0x7F, DcsParamState, IgnoreAction, DcsParamState) + table.AddRange(0x3C, 0x3F, DcsParamState, IgnoreAction, DcsParamState) + // Dcs_param -> Dcs_intermediate + table.AddRange(0x20, 0x2F, DcsParamState, CollectAction, DcsIntermediateState) + // Dcs_param -> Dcs_passthrough + table.AddRange(0x40, 0x7E, DcsParamState, StartAction, DcsStringState) + + // Dcs_passthrough + table.AddRange(0x00, 0x17, DcsStringState, PutAction, DcsStringState) + table.AddOne(0x19, DcsStringState, PutAction, DcsStringState) + table.AddRange(0x1C, 0x1F, DcsStringState, PutAction, DcsStringState) + table.AddRange(0x20, 0x7E, DcsStringState, PutAction, DcsStringState) + table.AddOne(0x7F, DcsStringState, PutAction, DcsStringState) + table.AddRange(0x80, 0xFF, DcsStringState, PutAction, DcsStringState) // Allow Utf8 characters by extending the printable range from 0x7F to 0xFF + // ST, CAN, SUB, and ESC terminate the sequence + table.AddOne(0x1B, DcsStringState, DispatchAction, EscapeState) + table.AddOne(0x9C, DcsStringState, DispatchAction, GroundState) + table.AddMany([]byte{0x18, 0x1A}, DcsStringState, IgnoreAction, GroundState) + + // Csi_param + table.AddRange(0x00, 0x17, CsiParamState, ExecuteAction, CsiParamState) + table.AddOne(0x19, CsiParamState, ExecuteAction, CsiParamState) + table.AddRange(0x1C, 0x1F, CsiParamState, ExecuteAction, CsiParamState) + table.AddRange(0x30, 0x3B, CsiParamState, ParamAction, CsiParamState) + table.AddOne(0x7F, CsiParamState, IgnoreAction, CsiParamState) + table.AddRange(0x3C, 0x3F, CsiParamState, IgnoreAction, CsiParamState) + // Csi_param -> Ground + table.AddRange(0x40, 0x7E, CsiParamState, DispatchAction, GroundState) + // Csi_param -> Csi_intermediate + table.AddRange(0x20, 0x2F, CsiParamState, CollectAction, CsiIntermediateState) + + // Csi_intermediate + table.AddRange(0x00, 0x17, CsiIntermediateState, ExecuteAction, CsiIntermediateState) + table.AddOne(0x19, CsiIntermediateState, ExecuteAction, CsiIntermediateState) + table.AddRange(0x1C, 0x1F, CsiIntermediateState, ExecuteAction, CsiIntermediateState) + table.AddRange(0x20, 0x2F, CsiIntermediateState, CollectAction, CsiIntermediateState) + table.AddOne(0x7F, CsiIntermediateState, IgnoreAction, CsiIntermediateState) + // Csi_intermediate -> Ground + table.AddRange(0x40, 0x7E, CsiIntermediateState, DispatchAction, GroundState) + // Csi_intermediate -> Csi_ignore + table.AddRange(0x30, 0x3F, CsiIntermediateState, IgnoreAction, GroundState) + + // Csi_entry + table.AddRange(0x00, 0x17, CsiEntryState, ExecuteAction, CsiEntryState) + table.AddOne(0x19, CsiEntryState, ExecuteAction, CsiEntryState) + table.AddRange(0x1C, 0x1F, CsiEntryState, ExecuteAction, CsiEntryState) + table.AddOne(0x7F, CsiEntryState, IgnoreAction, CsiEntryState) + // Csi_entry -> Ground + table.AddRange(0x40, 0x7E, CsiEntryState, DispatchAction, GroundState) + // Csi_entry -> Csi_intermediate + table.AddRange(0x20, 0x2F, CsiEntryState, CollectAction, CsiIntermediateState) + // Csi_entry -> Csi_param + table.AddRange(0x30, 0x3B, CsiEntryState, ParamAction, CsiParamState) + table.AddRange(0x3C, 0x3F, CsiEntryState, PrefixAction, CsiParamState) + + // Osc_string + table.AddRange(0x00, 0x06, OscStringState, IgnoreAction, OscStringState) + table.AddRange(0x08, 0x17, OscStringState, IgnoreAction, OscStringState) + table.AddOne(0x19, OscStringState, IgnoreAction, OscStringState) + table.AddRange(0x1C, 0x1F, OscStringState, IgnoreAction, OscStringState) + table.AddRange(0x20, 0xFF, OscStringState, PutAction, OscStringState) // Allow Utf8 characters by extending the printable range from 0x7F to 0xFF + + // ST, CAN, SUB, ESC, and BEL terminate the sequence + table.AddOne(0x1B, OscStringState, DispatchAction, EscapeState) + table.AddOne(0x07, OscStringState, DispatchAction, GroundState) + table.AddOne(0x9C, OscStringState, DispatchAction, GroundState) + table.AddMany([]byte{0x18, 0x1A}, OscStringState, IgnoreAction, GroundState) + + return table +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_decode.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_decode.go new file mode 100644 index 0000000..dfd2dc7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_decode.go @@ -0,0 +1,524 @@ +package ansi + +import ( + "unicode/utf8" + + "github.com/charmbracelet/x/ansi/parser" + "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" +) + +// State represents the state of the ANSI escape sequence parser used by +// [DecodeSequence]. +type State = byte + +// ANSI escape sequence states used by [DecodeSequence]. +const ( + NormalState State = iota + PrefixState + ParamsState + IntermedState + EscapeState + StringState +) + +// DecodeSequence decodes the first ANSI escape sequence or a printable +// grapheme from the given data. It returns the sequence slice, the number of +// bytes read, the cell width for each sequence, and the new state. +// +// The cell width will always be 0 for control and escape sequences, 1 for +// ASCII printable characters, and the number of cells other Unicode characters +// occupy. It uses the uniseg package to calculate the width of Unicode +// graphemes and characters. This means it will always do grapheme clustering +// (mode 2027). +// +// Passing a non-nil [*Parser] as the last argument will allow the decoder to +// collect sequence parameters, data, and commands. The parser cmd will have +// the packed command value that contains intermediate and prefix characters. +// In the case of a OSC sequence, the cmd will be the OSC command number. Use +// [Cmd] and [Param] types to unpack command intermediates and prefixes as well +// as parameters. +// +// Zero [Cmd] means the CSI, DCS, or ESC sequence is invalid. Moreover, checking the +// validity of other data sequences, OSC, DCS, etc, will require checking for +// the returned sequence terminator bytes such as ST (ESC \\) and BEL). +// +// We store the command byte in [Cmd] in the most significant byte, the +// prefix byte in the next byte, and the intermediate byte in the least +// significant byte. This is done to avoid using a struct to store the command +// and its intermediates and prefixes. The command byte is always the least +// significant byte i.e. [Cmd & 0xff]. Use the [Cmd] type to unpack the +// command, intermediate, and prefix bytes. Note that we only collect the last +// prefix character and intermediate byte. +// +// The [p.Params] slice will contain the parameters of the sequence. Any +// sub-parameter will have the [parser.HasMoreFlag] set. Use the [Param] type +// to unpack the parameters. +// +// Example: +// +// var state byte // the initial state is always zero [NormalState] +// p := NewParser(32, 1024) // create a new parser with a 32 params buffer and 1024 data buffer (optional) +// input := []byte("\x1b[31mHello, World!\x1b[0m") +// for len(input) > 0 { +// seq, width, n, newState := DecodeSequence(input, state, p) +// log.Printf("seq: %q, width: %d", seq, width) +// state = newState +// input = input[n:] +// } +// +// This function treats the text as a sequence of grapheme clusters. +func DecodeSequence[T string | []byte](b T, state byte, p *Parser) (seq T, width int, n int, newState byte) { + return decodeSequence(GraphemeWidth, b, state, p) +} + +// DecodeSequenceWc decodes the first ANSI escape sequence or a printable +// grapheme from the given data. It returns the sequence slice, the number of +// bytes read, the cell width for each sequence, and the new state. +// +// The cell width will always be 0 for control and escape sequences, 1 for +// ASCII printable characters, and the number of cells other Unicode characters +// occupy. It uses the uniseg package to calculate the width of Unicode +// graphemes and characters. This means it will always do grapheme clustering +// (mode 2027). +// +// Passing a non-nil [*Parser] as the last argument will allow the decoder to +// collect sequence parameters, data, and commands. The parser cmd will have +// the packed command value that contains intermediate and prefix characters. +// In the case of a OSC sequence, the cmd will be the OSC command number. Use +// [Cmd] and [Param] types to unpack command intermediates and prefixes as well +// as parameters. +// +// Zero [Cmd] means the CSI, DCS, or ESC sequence is invalid. Moreover, checking the +// validity of other data sequences, OSC, DCS, etc, will require checking for +// the returned sequence terminator bytes such as ST (ESC \\) and BEL). +// +// We store the command byte in [Cmd] in the most significant byte, the +// prefix byte in the next byte, and the intermediate byte in the least +// significant byte. This is done to avoid using a struct to store the command +// and its intermediates and prefixes. The command byte is always the least +// significant byte i.e. [Cmd & 0xff]. Use the [Cmd] type to unpack the +// command, intermediate, and prefix bytes. Note that we only collect the last +// prefix character and intermediate byte. +// +// The [p.Params] slice will contain the parameters of the sequence. Any +// sub-parameter will have the [parser.HasMoreFlag] set. Use the [Param] type +// to unpack the parameters. +// +// Example: +// +// var state byte // the initial state is always zero [NormalState] +// p := NewParser(32, 1024) // create a new parser with a 32 params buffer and 1024 data buffer (optional) +// input := []byte("\x1b[31mHello, World!\x1b[0m") +// for len(input) > 0 { +// seq, width, n, newState := DecodeSequenceWc(input, state, p) +// log.Printf("seq: %q, width: %d", seq, width) +// state = newState +// input = input[n:] +// } +// +// This function treats the text as a sequence of wide characters and runes. +func DecodeSequenceWc[T string | []byte](b T, state byte, p *Parser) (seq T, width int, n int, newState byte) { + return decodeSequence(WcWidth, b, state, p) +} + +func decodeSequence[T string | []byte](m Method, b T, state State, p *Parser) (seq T, width int, n int, newState byte) { + for i := 0; i < len(b); i++ { + c := b[i] + + switch state { + case NormalState: + switch c { + case ESC: + if p != nil { + if len(p.params) > 0 { + p.params[0] = parser.MissingParam + } + p.cmd = 0 + p.paramsLen = 0 + p.dataLen = 0 + } + state = EscapeState + continue + case CSI, DCS: + if p != nil { + if len(p.params) > 0 { + p.params[0] = parser.MissingParam + } + p.cmd = 0 + p.paramsLen = 0 + p.dataLen = 0 + } + state = PrefixState + continue + case OSC, APC, SOS, PM: + if p != nil { + p.cmd = parser.MissingCommand + p.dataLen = 0 + } + state = StringState + continue + } + + if p != nil { + p.dataLen = 0 + p.paramsLen = 0 + p.cmd = 0 + } + if c > US && c < DEL { + // ASCII printable characters + return b[i : i+1], 1, 1, NormalState + } + + if c <= US || c == DEL || c < 0xC0 { + // C0 & C1 control characters & DEL + return b[i : i+1], 0, 1, NormalState + } + + if utf8.RuneStart(c) { + seq, _, width, _ = FirstGraphemeCluster(b, -1) + if m == WcWidth { + width = runewidth.StringWidth(string(seq)) + } + i += len(seq) + return b[:i], width, i, NormalState + } + + // Invalid UTF-8 sequence + return b[:i], 0, i, NormalState + case PrefixState: + if c >= '<' && c <= '?' { + if p != nil { + // We only collect the last prefix character. + p.cmd &^= 0xff << parser.PrefixShift + p.cmd |= int(c) << parser.PrefixShift + } + break + } + + state = ParamsState + fallthrough + case ParamsState: + if c >= '0' && c <= '9' { + if p != nil { + if p.params[p.paramsLen] == parser.MissingParam { + p.params[p.paramsLen] = 0 + } + + p.params[p.paramsLen] *= 10 + p.params[p.paramsLen] += int(c - '0') + } + break + } + + if c == ':' { + if p != nil { + p.params[p.paramsLen] |= parser.HasMoreFlag + } + } + + if c == ';' || c == ':' { + if p != nil { + p.paramsLen++ + if p.paramsLen < len(p.params) { + p.params[p.paramsLen] = parser.MissingParam + } + } + break + } + + state = IntermedState + fallthrough + case IntermedState: + if c >= ' ' && c <= '/' { + if p != nil { + p.cmd &^= 0xff << parser.IntermedShift + p.cmd |= int(c) << parser.IntermedShift + } + break + } + + if p != nil { + // Increment the last parameter + if p.paramsLen > 0 && p.paramsLen < len(p.params)-1 || + p.paramsLen == 0 && len(p.params) > 0 && p.params[0] != parser.MissingParam { + p.paramsLen++ + } + } + + if c >= '@' && c <= '~' { + if p != nil { + p.cmd &^= 0xff + p.cmd |= int(c) + } + + if HasDcsPrefix(b) { + // Continue to collect DCS data + if p != nil { + p.dataLen = 0 + } + state = StringState + continue + } + + return b[:i+1], 0, i + 1, NormalState + } + + // Invalid CSI/DCS sequence + return b[:i], 0, i, NormalState + case EscapeState: + switch c { + case '[', 'P': + if p != nil { + if len(p.params) > 0 { + p.params[0] = parser.MissingParam + } + p.paramsLen = 0 + p.cmd = 0 + } + state = PrefixState + continue + case ']', 'X', '^', '_': + if p != nil { + p.cmd = parser.MissingCommand + p.dataLen = 0 + } + state = StringState + continue + } + + if c >= ' ' && c <= '/' { + if p != nil { + p.cmd &^= 0xff << parser.IntermedShift + p.cmd |= int(c) << parser.IntermedShift + } + continue + } else if c >= '0' && c <= '~' { + if p != nil { + p.cmd &^= 0xff + p.cmd |= int(c) + } + return b[:i+1], 0, i + 1, NormalState + } + + // Invalid escape sequence + return b[:i], 0, i, NormalState + case StringState: + switch c { + case BEL: + if HasOscPrefix(b) { + parseOscCmd(p) + return b[:i+1], 0, i + 1, NormalState + } + case CAN, SUB: + if HasOscPrefix(b) { + // Ensure we parse the OSC command number + parseOscCmd(p) + } + + // Cancel the sequence + return b[:i], 0, i, NormalState + case ST: + if HasOscPrefix(b) { + // Ensure we parse the OSC command number + parseOscCmd(p) + } + + return b[:i+1], 0, i + 1, NormalState + case ESC: + if HasStPrefix(b[i:]) { + if HasOscPrefix(b) { + // Ensure we parse the OSC command number + parseOscCmd(p) + } + + // End of string 7-bit (ST) + return b[:i+2], 0, i + 2, NormalState + } + + // Otherwise, cancel the sequence + return b[:i], 0, i, NormalState + } + + if p != nil && p.dataLen < len(p.data) { + p.data[p.dataLen] = c + p.dataLen++ + + // Parse the OSC command number + if c == ';' && HasOscPrefix(b) { + parseOscCmd(p) + } + } + } + } + + return b, 0, len(b), state +} + +func parseOscCmd(p *Parser) { + if p == nil || p.cmd != parser.MissingCommand { + return + } + for j := range p.dataLen { + d := p.data[j] + if d < '0' || d > '9' { + break + } + if p.cmd == parser.MissingCommand { + p.cmd = 0 + } + p.cmd *= 10 + p.cmd += int(d - '0') + } +} + +// Equal returns true if the given byte slices are equal. +func Equal[T string | []byte](a, b T) bool { + return string(a) == string(b) +} + +// HasPrefix returns true if the given byte slice has prefix. +func HasPrefix[T string | []byte](b, prefix T) bool { + return len(b) >= len(prefix) && Equal(b[0:len(prefix)], prefix) +} + +// HasSuffix returns true if the given byte slice has suffix. +func HasSuffix[T string | []byte](b, suffix T) bool { + return len(b) >= len(suffix) && Equal(b[len(b)-len(suffix):], suffix) +} + +// HasCsiPrefix returns true if the given byte slice has a CSI prefix. +func HasCsiPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == CSI) || + (len(b) > 1 && b[0] == ESC && b[1] == '[') +} + +// HasOscPrefix returns true if the given byte slice has an OSC prefix. +func HasOscPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == OSC) || + (len(b) > 1 && b[0] == ESC && b[1] == ']') +} + +// HasApcPrefix returns true if the given byte slice has an APC prefix. +func HasApcPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == APC) || + (len(b) > 1 && b[0] == ESC && b[1] == '_') +} + +// HasDcsPrefix returns true if the given byte slice has a DCS prefix. +func HasDcsPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == DCS) || + (len(b) > 1 && b[0] == ESC && b[1] == 'P') +} + +// HasSosPrefix returns true if the given byte slice has a SOS prefix. +func HasSosPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == SOS) || + (len(b) > 1 && b[0] == ESC && b[1] == 'X') +} + +// HasPmPrefix returns true if the given byte slice has a PM prefix. +func HasPmPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == PM) || + (len(b) > 1 && b[0] == ESC && b[1] == '^') +} + +// HasStPrefix returns true if the given byte slice has a ST prefix. +func HasStPrefix[T string | []byte](b T) bool { + return (len(b) > 0 && b[0] == ST) || + (len(b) > 1 && b[0] == ESC && b[1] == '\\') +} + +// HasEscPrefix returns true if the given byte slice has an ESC prefix. +func HasEscPrefix[T string | []byte](b T) bool { + return len(b) > 0 && b[0] == ESC +} + +// FirstGraphemeCluster returns the first grapheme cluster in the given string or byte slice. +// This is a syntactic sugar function that wraps +// uniseg.FirstGraphemeClusterInString and uniseg.FirstGraphemeCluster. +func FirstGraphemeCluster[T string | []byte](b T, state int) (T, T, int, int) { + switch b := any(b).(type) { + case string: + cluster, rest, width, newState := uniseg.FirstGraphemeClusterInString(b, state) + return T(cluster), T(rest), width, newState + case []byte: + cluster, rest, width, newState := uniseg.FirstGraphemeCluster(b, state) + return T(cluster), T(rest), width, newState + } + panic("unreachable") +} + +// Cmd represents a sequence command. This is used to pack/unpack a sequence +// command with its intermediate and prefix characters. Those are commonly +// found in CSI and DCS sequences. +type Cmd int + +// Prefix returns the unpacked prefix byte of the CSI sequence. +// This is always gonna be one of the following '<' '=' '>' '?' and in the +// range of 0x3C-0x3F. +// Zero is returned if the sequence does not have a prefix. +func (c Cmd) Prefix() byte { + return byte(parser.Prefix(int(c))) +} + +// Intermediate returns the unpacked intermediate byte of the CSI sequence. +// An intermediate byte is in the range of 0x20-0x2F. This includes these +// characters from ' ', '!', '"', '#', '$', '%', '&', ”', '(', ')', '*', '+', +// ',', '-', '.', '/'. +// Zero is returned if the sequence does not have an intermediate byte. +func (c Cmd) Intermediate() byte { + return byte(parser.Intermediate(int(c))) +} + +// Final returns the unpacked command byte of the CSI sequence. +func (c Cmd) Final() byte { + return byte(parser.Command(int(c))) +} + +// Command packs a command with the given prefix, intermediate, and final. A +// zero byte means the sequence does not have a prefix or intermediate. +// +// Prefixes are in the range of 0x3C-0x3F that is one of `<=>?`. +// +// Intermediates are in the range of 0x20-0x2F that is anything in +// `!"#$%&'()*+,-./`. +// +// Final bytes are in the range of 0x40-0x7E that is anything in the range +// `@A–Z[\]^_`a–z{|}~`. +func Command(prefix, inter, final byte) (c int) { + c = int(final) + c |= int(prefix) << parser.PrefixShift + c |= int(inter) << parser.IntermedShift + return +} + +// Param represents a sequence parameter. Sequence parameters with +// sub-parameters are packed with the HasMoreFlag set. This is used to unpack +// the parameters from a CSI and DCS sequences. +type Param int + +// Param returns the unpacked parameter at the given index. +// It returns the default value if the parameter is missing. +func (s Param) Param(def int) int { + p := int(s) & parser.ParamMask + if p == parser.MissingParam { + return def + } + return p +} + +// HasMore unpacks the HasMoreFlag from the parameter. +func (s Param) HasMore() bool { + return s&parser.HasMoreFlag != 0 +} + +// Parameter packs an escape code parameter with the given parameter and +// whether this parameter has following sub-parameters. +func Parameter(p int, hasMore bool) (s int) { + s = p & parser.ParamMask + if hasMore { + s |= parser.HasMoreFlag + } + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_handler.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_handler.go new file mode 100644 index 0000000..03f9ed4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_handler.go @@ -0,0 +1,60 @@ +package ansi + +import "unsafe" + +// Params represents a list of packed parameters. +type Params []Param + +// Param returns the parameter at the given index and if it is part of a +// sub-parameters. It falls back to the default value if the parameter is +// missing. If the index is out of bounds, it returns the default value and +// false. +func (p Params) Param(i, def int) (int, bool, bool) { + if i < 0 || i >= len(p) { + return def, false, false + } + return p[i].Param(def), p[i].HasMore(), true +} + +// ForEach iterates over the parameters and calls the given function for each +// parameter. If a parameter is part of a sub-parameter, it will be called with +// hasMore set to true. +// Use def to set a default value for missing parameters. +func (p Params) ForEach(def int, f func(i, param int, hasMore bool)) { + for i := range p { + f(i, p[i].Param(def), p[i].HasMore()) + } +} + +// ToParams converts a list of integers to a list of parameters. +func ToParams(params []int) Params { + return unsafe.Slice((*Param)(unsafe.Pointer(¶ms[0])), len(params)) +} + +// Handler handles actions performed by the parser. +// It is used to handle ANSI escape sequences, control characters, and runes. +type Handler struct { + // Print is called when a printable rune is encountered. + Print func(r rune) + // Execute is called when a control character is encountered. + Execute func(b byte) + // HandleCsi is called when a CSI sequence is encountered. + HandleCsi func(cmd Cmd, params Params) + // HandleEsc is called when an ESC sequence is encountered. + HandleEsc func(cmd Cmd) + // HandleDcs is called when a DCS sequence is encountered. + HandleDcs func(cmd Cmd, params Params, data []byte) + // HandleOsc is called when an OSC sequence is encountered. + HandleOsc func(cmd int, data []byte) + // HandlePm is called when a PM sequence is encountered. + HandlePm func(data []byte) + // HandleApc is called when an APC sequence is encountered. + HandleApc func(data []byte) + // HandleSos is called when a SOS sequence is encountered. + HandleSos func(data []byte) +} + +// SetHandler sets the handler for the parser. +func (p *Parser) SetHandler(h Handler) { + p.handler = h +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_sync.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_sync.go new file mode 100644 index 0000000..65d25a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/parser_sync.go @@ -0,0 +1,29 @@ +package ansi + +import ( + "sync" + + "github.com/charmbracelet/x/ansi/parser" +) + +var parserPool = sync.Pool{ + New: func() any { + p := NewParser() + p.SetParamsSize(parser.MaxParamsSize) + p.SetDataSize(1024 * 1024 * 4) // 4MB of data buffer + return p + }, +} + +// GetParser returns a parser from a sync pool. +func GetParser() *Parser { + return parserPool.Get().(*Parser) +} + +// PutParser returns a parser to a sync pool. The parser is reset +// automatically. +func PutParser(p *Parser) { + p.Reset() + p.dataLen = 0 + parserPool.Put(p) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/passthrough.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/passthrough.go new file mode 100644 index 0000000..7ac7cef --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/passthrough.go @@ -0,0 +1,60 @@ +package ansi + +import ( + "bytes" +) + +// ScreenPassthrough wraps the given ANSI sequence in a DCS passthrough +// sequence to be sent to the outer terminal. This is used to send raw escape +// sequences to the outer terminal when running inside GNU Screen. +// +// DCS ST +// +// Note: Screen limits the length of string sequences to 768 bytes (since 2014). +// Use zero to indicate no limit, otherwise, this will chunk the returned +// string into limit sized chunks. +// +// See: https://www.gnu.org/software/screen/manual/screen.html#String-Escapes +// See: https://git.savannah.gnu.org/cgit/screen.git/tree/src/screen.h?id=c184c6ec27683ff1a860c45be5cf520d896fd2ef#n44 +func ScreenPassthrough(seq string, limit int) string { + var b bytes.Buffer + b.WriteString("\x1bP") + if limit > 0 { + for i := 0; i < len(seq); i += limit { + end := min(i+limit, len(seq)) + b.WriteString(seq[i:end]) + if end < len(seq) { + b.WriteString("\x1b\\\x1bP") + } + } + } else { + b.WriteString(seq) + } + b.WriteString("\x1b\\") + return b.String() +} + +// TmuxPassthrough wraps the given ANSI sequence in a special DCS passthrough +// sequence to be sent to the outer terminal. This is used to send raw escape +// sequences to the outer terminal when running inside Tmux. +// +// DCS tmux ; ST +// +// Where is the given sequence in which all occurrences of ESC +// (0x1b) are doubled i.e. replaced with ESC ESC (0x1b 0x1b). +// +// Note: this needs the `allow-passthrough` option to be set to `on`. +// +// See: https://github.com/tmux/tmux/wiki/FAQ#what-is-the-passthrough-escape-sequence-and-how-do-i-use-it +func TmuxPassthrough(seq string) string { + var b bytes.Buffer + b.WriteString("\x1bPtmux;") + for i := range len(seq) { + if seq[i] == ESC { + b.WriteByte(ESC) + } + b.WriteByte(seq[i]) + } + b.WriteString("\x1b\\") + return b.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/paste.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/paste.go new file mode 100644 index 0000000..2f9ea6f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/paste.go @@ -0,0 +1,7 @@ +package ansi + +// BracketedPasteStart is the control sequence to enable bracketed paste mode. +const BracketedPasteStart = "\x1b[200~" + +// BracketedPasteEnd is the control sequence to disable bracketed paste mode. +const BracketedPasteEnd = "\x1b[201~" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/reset.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/reset.go new file mode 100644 index 0000000..c1b89ea --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/reset.go @@ -0,0 +1,11 @@ +package ansi + +// ResetInitialState (RIS) resets the terminal to its initial state. +// +// ESC c +// +// See: https://vt100.net/docs/vt510-rm/RIS.html +const ( + ResetInitialState = "\x1bc" + RIS = ResetInitialState +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/screen.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/screen.go new file mode 100644 index 0000000..e2027df --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/screen.go @@ -0,0 +1,410 @@ +package ansi + +import ( + "strconv" + "strings" +) + +// EraseDisplay (ED) clears the display or parts of the display. A screen is +// the shown part of the terminal display excluding the scrollback buffer. +// Possible values: +// +// Default is 0. +// +// 0: Clear from cursor to end of screen. +// 1: Clear from cursor to beginning of the screen. +// 2: Clear entire screen (and moves cursor to upper left on DOS). +// 3: Clear entire display which delete all lines saved in the scrollback buffer (xterm). +// +// CSI J +// +// See: https://vt100.net/docs/vt510-rm/ED.html +func EraseDisplay(n int) string { + var s string + if n > 0 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "J" +} + +// ED is an alias for [EraseDisplay]. +func ED(n int) string { + return EraseDisplay(n) +} + +// EraseDisplay constants. +// These are the possible values for the EraseDisplay function. +const ( + EraseScreenBelow = "\x1b[J" + EraseScreenAbove = "\x1b[1J" + EraseEntireScreen = "\x1b[2J" + EraseEntireDisplay = "\x1b[3J" +) + +// EraseLine (EL) clears the current line or parts of the line. Possible values: +// +// 0: Clear from cursor to end of line. +// 1: Clear from cursor to beginning of the line. +// 2: Clear entire line. +// +// The cursor position is not affected. +// +// CSI K +// +// See: https://vt100.net/docs/vt510-rm/EL.html +func EraseLine(n int) string { + var s string + if n > 0 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "K" +} + +// EL is an alias for [EraseLine]. +func EL(n int) string { + return EraseLine(n) +} + +// EraseLine constants. +// These are the possible values for the EraseLine function. +const ( + EraseLineRight = "\x1b[K" + EraseLineLeft = "\x1b[1K" + EraseEntireLine = "\x1b[2K" +) + +// ScrollUp (SU) scrolls the screen up n lines. New lines are added at the +// bottom of the screen. +// +// CSI Pn S +// +// See: https://vt100.net/docs/vt510-rm/SU.html +func ScrollUp(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "S" +} + +// PanDown is an alias for [ScrollUp]. +func PanDown(n int) string { + return ScrollUp(n) +} + +// SU is an alias for [ScrollUp]. +func SU(n int) string { + return ScrollUp(n) +} + +// ScrollDown (SD) scrolls the screen down n lines. New lines are added at the +// top of the screen. +// +// CSI Pn T +// +// See: https://vt100.net/docs/vt510-rm/SD.html +func ScrollDown(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "T" +} + +// PanUp is an alias for [ScrollDown]. +func PanUp(n int) string { + return ScrollDown(n) +} + +// SD is an alias for [ScrollDown]. +func SD(n int) string { + return ScrollDown(n) +} + +// InsertLine (IL) inserts n blank lines at the current cursor position. +// Existing lines are moved down. +// +// CSI Pn L +// +// See: https://vt100.net/docs/vt510-rm/IL.html +func InsertLine(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "L" +} + +// IL is an alias for [InsertLine]. +func IL(n int) string { + return InsertLine(n) +} + +// DeleteLine (DL) deletes n lines at the current cursor position. Existing +// lines are moved up. +// +// CSI Pn M +// +// See: https://vt100.net/docs/vt510-rm/DL.html +func DeleteLine(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "M" +} + +// DL is an alias for [DeleteLine]. +func DL(n int) string { + return DeleteLine(n) +} + +// SetTopBottomMargins (DECSTBM) sets the top and bottom margins for the scrolling +// region. The default is the entire screen. +// +// Default is 1 and the bottom of the screen. +// +// CSI Pt ; Pb r +// +// See: https://vt100.net/docs/vt510-rm/DECSTBM.html +func SetTopBottomMargins(top, bot int) string { + var t, b string + if top > 0 { + t = strconv.Itoa(top) + } + if bot > 0 { + b = strconv.Itoa(bot) + } + return "\x1b[" + t + ";" + b + "r" +} + +// DECSTBM is an alias for [SetTopBottomMargins]. +func DECSTBM(top, bot int) string { + return SetTopBottomMargins(top, bot) +} + +// SetLeftRightMargins (DECSLRM) sets the left and right margins for the scrolling +// region. +// +// Default is 1 and the right of the screen. +// +// CSI Pl ; Pr s +// +// See: https://vt100.net/docs/vt510-rm/DECSLRM.html +func SetLeftRightMargins(left, right int) string { + var l, r string + if left > 0 { + l = strconv.Itoa(left) + } + if right > 0 { + r = strconv.Itoa(right) + } + return "\x1b[" + l + ";" + r + "s" +} + +// DECSLRM is an alias for [SetLeftRightMargins]. +func DECSLRM(left, right int) string { + return SetLeftRightMargins(left, right) +} + +// SetScrollingRegion (DECSTBM) sets the top and bottom margins for the scrolling +// region. The default is the entire screen. +// +// CSI ; r +// +// See: https://vt100.net/docs/vt510-rm/DECSTBM.html +// +// Deprecated: use [SetTopBottomMargins] instead. +func SetScrollingRegion(t, b int) string { + if t < 0 { + t = 0 + } + if b < 0 { + b = 0 + } + return "\x1b[" + strconv.Itoa(t) + ";" + strconv.Itoa(b) + "r" +} + +// InsertCharacter (ICH) inserts n blank characters at the current cursor +// position. Existing characters move to the right. Characters moved past the +// right margin are lost. ICH has no effect outside the scrolling margins. +// +// Default is 1. +// +// CSI Pn @ +// +// See: https://vt100.net/docs/vt510-rm/ICH.html +func InsertCharacter(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "@" +} + +// ICH is an alias for [InsertCharacter]. +func ICH(n int) string { + return InsertCharacter(n) +} + +// DeleteCharacter (DCH) deletes n characters at the current cursor position. +// As the characters are deleted, the remaining characters move to the left and +// the cursor remains at the same position. +// +// Default is 1. +// +// CSI Pn P +// +// See: https://vt100.net/docs/vt510-rm/DCH.html +func DeleteCharacter(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "P" +} + +// DCH is an alias for [DeleteCharacter]. +func DCH(n int) string { + return DeleteCharacter(n) +} + +// SetTabEvery8Columns (DECST8C) sets the tab stops at every 8 columns. +// +// CSI ? 5 W +// +// See: https://vt100.net/docs/vt510-rm/DECST8C.html +const ( + SetTabEvery8Columns = "\x1b[?5W" + DECST8C = SetTabEvery8Columns +) + +// HorizontalTabSet (HTS) sets a horizontal tab stop at the current cursor +// column. +// +// This is equivalent to [HTS]. +// +// ESC H +// +// See: https://vt100.net/docs/vt510-rm/HTS.html +const HorizontalTabSet = "\x1bH" + +// TabClear (TBC) clears tab stops. +// +// Default is 0. +// +// Possible values: +// 0: Clear tab stop at the current column. (default) +// 3: Clear all tab stops. +// +// CSI Pn g +// +// See: https://vt100.net/docs/vt510-rm/TBC.html +func TabClear(n int) string { + var s string + if n > 0 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "g" +} + +// TBC is an alias for [TabClear]. +func TBC(n int) string { + return TabClear(n) +} + +// RequestPresentationStateReport (DECRQPSR) requests the terminal to send a +// report of the presentation state. This includes the cursor information [DECCIR], +// and tab stop [DECTABSR] reports. +// +// Default is 0. +// +// Possible values: +// 0: Error, request ignored. +// 1: Cursor information report [DECCIR]. +// 2: Tab stop report [DECTABSR]. +// +// CSI Ps $ w +// +// See: https://vt100.net/docs/vt510-rm/DECRQPSR.html +func RequestPresentationStateReport(n int) string { + var s string + if n > 0 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "$w" +} + +// DECRQPSR is an alias for [RequestPresentationStateReport]. +func DECRQPSR(n int) string { + return RequestPresentationStateReport(n) +} + +// TabStopReport (DECTABSR) is the response to a tab stop report request. +// It reports the tab stops set in the terminal. +// +// The response is a list of tab stops separated by a slash (/) character. +// +// DCS 2 $ u D ... D ST +// +// Where D is a decimal number representing a tab stop. +// +// See: https://vt100.net/docs/vt510-rm/DECTABSR.html +func TabStopReport(stops ...int) string { + var s []string //nolint:prealloc + for _, v := range stops { + s = append(s, strconv.Itoa(v)) + } + return "\x1bP2$u" + strings.Join(s, "/") + "\x1b\\" +} + +// DECTABSR is an alias for [TabStopReport]. +func DECTABSR(stops ...int) string { + return TabStopReport(stops...) +} + +// CursorInformationReport (DECCIR) is the response to a cursor information +// report request. It reports the cursor position, visual attributes, and +// character protection attributes. It also reports the status of origin mode +// [DECOM] and the current active character set. +// +// The response is a list of values separated by a semicolon (;) character. +// +// DCS 1 $ u D ... D ST +// +// Where D is a decimal number representing a value. +// +// See: https://vt100.net/docs/vt510-rm/DECCIR.html +func CursorInformationReport(values ...int) string { + var s []string //nolint:prealloc + for _, v := range values { + s = append(s, strconv.Itoa(v)) + } + return "\x1bP1$u" + strings.Join(s, ";") + "\x1b\\" +} + +// DECCIR is an alias for [CursorInformationReport]. +func DECCIR(values ...int) string { + return CursorInformationReport(values...) +} + +// RepeatPreviousCharacter (REP) repeats the previous character n times. +// This is identical to typing the same character n times. +// +// Default is 1. +// +// CSI Pn b +// +// See: ECMA-48 § 8.3.103. +func RepeatPreviousCharacter(n int) string { + var s string + if n > 1 { + s = strconv.Itoa(n) + } + return "\x1b[" + s + "b" +} + +// REP is an alias for [RepeatPreviousCharacter]. +func REP(n int) string { + return RepeatPreviousCharacter(n) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/sgr.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/sgr.go new file mode 100644 index 0000000..5e6d05d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/sgr.go @@ -0,0 +1,79 @@ +package ansi + +// SelectGraphicRendition (SGR) is a command that sets display attributes. +// +// Default is 0. +// +// CSI Ps ; Ps ... m +// +// See: https://vt100.net/docs/vt510-rm/SGR.html +func SelectGraphicRendition(ps ...Attr) string { + if len(ps) == 0 { + return ResetStyle + } + + return NewStyle(ps...).String() +} + +// SGR is an alias for [SelectGraphicRendition]. +func SGR(ps ...Attr) string { + return SelectGraphicRendition(ps...) +} + +var attrStrings = map[int]string{ + ResetAttr: resetAttr, + BoldAttr: boldAttr, + FaintAttr: faintAttr, + ItalicAttr: italicAttr, + UnderlineAttr: underlineAttr, + SlowBlinkAttr: slowBlinkAttr, + RapidBlinkAttr: rapidBlinkAttr, + ReverseAttr: reverseAttr, + ConcealAttr: concealAttr, + StrikethroughAttr: strikethroughAttr, + NormalIntensityAttr: normalIntensityAttr, + NoItalicAttr: noItalicAttr, + NoUnderlineAttr: noUnderlineAttr, + NoBlinkAttr: noBlinkAttr, + NoReverseAttr: noReverseAttr, + NoConcealAttr: noConcealAttr, + NoStrikethroughAttr: noStrikethroughAttr, + BlackForegroundColorAttr: blackForegroundColorAttr, + RedForegroundColorAttr: redForegroundColorAttr, + GreenForegroundColorAttr: greenForegroundColorAttr, + YellowForegroundColorAttr: yellowForegroundColorAttr, + BlueForegroundColorAttr: blueForegroundColorAttr, + MagentaForegroundColorAttr: magentaForegroundColorAttr, + CyanForegroundColorAttr: cyanForegroundColorAttr, + WhiteForegroundColorAttr: whiteForegroundColorAttr, + ExtendedForegroundColorAttr: extendedForegroundColorAttr, + DefaultForegroundColorAttr: defaultForegroundColorAttr, + BlackBackgroundColorAttr: blackBackgroundColorAttr, + RedBackgroundColorAttr: redBackgroundColorAttr, + GreenBackgroundColorAttr: greenBackgroundColorAttr, + YellowBackgroundColorAttr: yellowBackgroundColorAttr, + BlueBackgroundColorAttr: blueBackgroundColorAttr, + MagentaBackgroundColorAttr: magentaBackgroundColorAttr, + CyanBackgroundColorAttr: cyanBackgroundColorAttr, + WhiteBackgroundColorAttr: whiteBackgroundColorAttr, + ExtendedBackgroundColorAttr: extendedBackgroundColorAttr, + DefaultBackgroundColorAttr: defaultBackgroundColorAttr, + ExtendedUnderlineColorAttr: extendedUnderlineColorAttr, + DefaultUnderlineColorAttr: defaultUnderlineColorAttr, + BrightBlackForegroundColorAttr: brightBlackForegroundColorAttr, + BrightRedForegroundColorAttr: brightRedForegroundColorAttr, + BrightGreenForegroundColorAttr: brightGreenForegroundColorAttr, + BrightYellowForegroundColorAttr: brightYellowForegroundColorAttr, + BrightBlueForegroundColorAttr: brightBlueForegroundColorAttr, + BrightMagentaForegroundColorAttr: brightMagentaForegroundColorAttr, + BrightCyanForegroundColorAttr: brightCyanForegroundColorAttr, + BrightWhiteForegroundColorAttr: brightWhiteForegroundColorAttr, + BrightBlackBackgroundColorAttr: brightBlackBackgroundColorAttr, + BrightRedBackgroundColorAttr: brightRedBackgroundColorAttr, + BrightGreenBackgroundColorAttr: brightGreenBackgroundColorAttr, + BrightYellowBackgroundColorAttr: brightYellowBackgroundColorAttr, + BrightBlueBackgroundColorAttr: brightBlueBackgroundColorAttr, + BrightMagentaBackgroundColorAttr: brightMagentaBackgroundColorAttr, + BrightCyanBackgroundColorAttr: brightCyanBackgroundColorAttr, + BrightWhiteBackgroundColorAttr: brightWhiteBackgroundColorAttr, +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/status.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/status.go new file mode 100644 index 0000000..3adfb02 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/status.go @@ -0,0 +1,168 @@ +package ansi + +import ( + "strconv" + "strings" +) + +// StatusReport represents a terminal status report. +type StatusReport interface { + // StatusReport returns the status report identifier. + StatusReport() int +} + +// ANSIStatusReport represents an ANSI terminal status report. +type ANSIStatusReport int //nolint:revive + +// StatusReport returns the status report identifier. +func (s ANSIStatusReport) StatusReport() int { + return int(s) +} + +// DECStatusReport represents a DEC terminal status report. +type DECStatusReport int + +// StatusReport returns the status report identifier. +func (s DECStatusReport) StatusReport() int { + return int(s) +} + +// DeviceStatusReport (DSR) is a control sequence that reports the terminal's +// status. +// The terminal responds with a DSR sequence. +// +// CSI Ps n +// CSI ? Ps n +// +// If one of the statuses is a [DECStatus], the sequence will use the DEC +// format. +// +// See also https://vt100.net/docs/vt510-rm/DSR.html +func DeviceStatusReport(statues ...StatusReport) string { + var dec bool + list := make([]string, len(statues)) + seq := "\x1b[" + for i, status := range statues { + list[i] = strconv.Itoa(status.StatusReport()) + switch status.(type) { + case DECStatusReport: + dec = true + } + } + if dec { + seq += "?" + } + return seq + strings.Join(list, ";") + "n" +} + +// DSR is an alias for [DeviceStatusReport]. +func DSR(status StatusReport) string { + return DeviceStatusReport(status) +} + +// RequestCursorPositionReport is an escape sequence that requests the current +// cursor position. +// +// CSI 6 n +// +// The terminal will report the cursor position as a CSI sequence in the +// following format: +// +// CSI Pl ; Pc R +// +// Where Pl is the line number and Pc is the column number. +// See: https://vt100.net/docs/vt510-rm/CPR.html +const RequestCursorPositionReport = "\x1b[6n" + +// RequestExtendedCursorPositionReport (DECXCPR) is a sequence for requesting +// the cursor position report including the current page number. +// +// CSI ? 6 n +// +// The terminal will report the cursor position as a CSI sequence in the +// following format: +// +// CSI ? Pl ; Pc ; Pp R +// +// Where Pl is the line number, Pc is the column number, and Pp is the page +// number. +// See: https://vt100.net/docs/vt510-rm/DECXCPR.html +const RequestExtendedCursorPositionReport = "\x1b[?6n" + +// RequestLightDarkReport is a control sequence that requests the terminal to +// report its operating system light/dark color preference. Supported terminals +// should respond with a [LightDarkReport] sequence as follows: +// +// CSI ? 997 ; 1 n for dark mode +// CSI ? 997 ; 2 n for light mode +// +// See: https://contour-terminal.org/vt-extensions/color-palette-update-notifications/ +const RequestLightDarkReport = "\x1b[?996n" + +// CursorPositionReport (CPR) is a control sequence that reports the cursor's +// position. +// +// CSI Pl ; Pc R +// +// Where Pl is the line number and Pc is the column number. +// +// See also https://vt100.net/docs/vt510-rm/CPR.html +func CursorPositionReport(line, column int) string { + if line < 1 { + line = 1 + } + if column < 1 { + column = 1 + } + return "\x1b[" + strconv.Itoa(line) + ";" + strconv.Itoa(column) + "R" +} + +// CPR is an alias for [CursorPositionReport]. +func CPR(line, column int) string { + return CursorPositionReport(line, column) +} + +// ExtendedCursorPositionReport (DECXCPR) is a control sequence that reports the +// cursor's position along with the page number (optional). +// +// CSI ? Pl ; Pc R +// CSI ? Pl ; Pc ; Pv R +// +// Where Pl is the line number, Pc is the column number, and Pv is the page +// number. +// +// If the page number is zero or negative, the returned sequence won't include +// the page number. +// +// See also https://vt100.net/docs/vt510-rm/DECXCPR.html +func ExtendedCursorPositionReport(line, column, page int) string { + if line < 1 { + line = 1 + } + if column < 1 { + column = 1 + } + if page < 1 { + return "\x1b[?" + strconv.Itoa(line) + ";" + strconv.Itoa(column) + "R" + } + return "\x1b[?" + strconv.Itoa(line) + ";" + strconv.Itoa(column) + ";" + strconv.Itoa(page) + "R" +} + +// DECXCPR is an alias for [ExtendedCursorPositionReport]. +func DECXCPR(line, column, page int) string { + return ExtendedCursorPositionReport(line, column, page) +} + +// LightDarkReport is a control sequence that reports the terminal's operating +// system light/dark color preference. +// +// CSI ? 997 ; 1 n for dark mode +// CSI ? 997 ; 2 n for light mode +// +// See: https://contour-terminal.org/vt-extensions/color-palette-update-notifications/ +func LightDarkReport(dark bool) string { + if dark { + return "\x1b[?997;1n" + } + return "\x1b[?997;2n" +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/style.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/style.go new file mode 100644 index 0000000..d8a7efa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/style.go @@ -0,0 +1,673 @@ +package ansi + +import ( + "image/color" + "strconv" + "strings" +) + +// ResetStyle is a SGR (Select Graphic Rendition) style sequence that resets +// all attributes. +// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters +const ResetStyle = "\x1b[m" + +// Attr is a SGR (Select Graphic Rendition) style attribute. +type Attr = int + +// Style represents an ANSI SGR (Select Graphic Rendition) style. +type Style []string + +// NewStyle returns a new style with the given attributes. +func NewStyle(attrs ...Attr) Style { + if len(attrs) == 0 { + return Style{} + } + s := make(Style, 0, len(attrs)) + for _, a := range attrs { + attr, ok := attrStrings[a] + if ok { + s = append(s, attr) + } else { + if a < 0 { + a = 0 + } + s = append(s, strconv.Itoa(a)) + } + } + return s +} + +// String returns the ANSI SGR (Select Graphic Rendition) style sequence for +// the given style. +func (s Style) String() string { + if len(s) == 0 { + return ResetStyle + } + return "\x1b[" + strings.Join(s, ";") + "m" +} + +// Styled returns a styled string with the given style applied. +func (s Style) Styled(str string) string { + if len(s) == 0 { + return str + } + return s.String() + str + ResetStyle +} + +// Reset appends the reset style attribute to the style. +func (s Style) Reset() Style { + return append(s, resetAttr) +} + +// Bold appends the bold style attribute to the style. +func (s Style) Bold() Style { + return append(s, boldAttr) +} + +// Faint appends the faint style attribute to the style. +func (s Style) Faint() Style { + return append(s, faintAttr) +} + +// Italic appends the italic style attribute to the style. +func (s Style) Italic() Style { + return append(s, italicAttr) +} + +// Underline appends the underline style attribute to the style. +func (s Style) Underline() Style { + return append(s, underlineAttr) +} + +// UnderlineStyle appends the underline style attribute to the style. +func (s Style) UnderlineStyle(u UnderlineStyle) Style { + switch u { + case NoUnderlineStyle: + return s.NoUnderline() + case SingleUnderlineStyle: + return s.Underline() + case DoubleUnderlineStyle: + return append(s, doubleUnderlineStyle) + case CurlyUnderlineStyle: + return append(s, curlyUnderlineStyle) + case DottedUnderlineStyle: + return append(s, dottedUnderlineStyle) + case DashedUnderlineStyle: + return append(s, dashedUnderlineStyle) + } + return s +} + +// DoubleUnderline appends the double underline style attribute to the style. +// This is a convenience method for UnderlineStyle(DoubleUnderlineStyle). +func (s Style) DoubleUnderline() Style { + return s.UnderlineStyle(DoubleUnderlineStyle) +} + +// CurlyUnderline appends the curly underline style attribute to the style. +// This is a convenience method for UnderlineStyle(CurlyUnderlineStyle). +func (s Style) CurlyUnderline() Style { + return s.UnderlineStyle(CurlyUnderlineStyle) +} + +// DottedUnderline appends the dotted underline style attribute to the style. +// This is a convenience method for UnderlineStyle(DottedUnderlineStyle). +func (s Style) DottedUnderline() Style { + return s.UnderlineStyle(DottedUnderlineStyle) +} + +// DashedUnderline appends the dashed underline style attribute to the style. +// This is a convenience method for UnderlineStyle(DashedUnderlineStyle). +func (s Style) DashedUnderline() Style { + return s.UnderlineStyle(DashedUnderlineStyle) +} + +// SlowBlink appends the slow blink style attribute to the style. +func (s Style) SlowBlink() Style { + return append(s, slowBlinkAttr) +} + +// RapidBlink appends the rapid blink style attribute to the style. +func (s Style) RapidBlink() Style { + return append(s, rapidBlinkAttr) +} + +// Reverse appends the reverse style attribute to the style. +func (s Style) Reverse() Style { + return append(s, reverseAttr) +} + +// Conceal appends the conceal style attribute to the style. +func (s Style) Conceal() Style { + return append(s, concealAttr) +} + +// Strikethrough appends the strikethrough style attribute to the style. +func (s Style) Strikethrough() Style { + return append(s, strikethroughAttr) +} + +// NormalIntensity appends the normal intensity style attribute to the style. +func (s Style) NormalIntensity() Style { + return append(s, normalIntensityAttr) +} + +// NoItalic appends the no italic style attribute to the style. +func (s Style) NoItalic() Style { + return append(s, noItalicAttr) +} + +// NoUnderline appends the no underline style attribute to the style. +func (s Style) NoUnderline() Style { + return append(s, noUnderlineAttr) +} + +// NoBlink appends the no blink style attribute to the style. +func (s Style) NoBlink() Style { + return append(s, noBlinkAttr) +} + +// NoReverse appends the no reverse style attribute to the style. +func (s Style) NoReverse() Style { + return append(s, noReverseAttr) +} + +// NoConceal appends the no conceal style attribute to the style. +func (s Style) NoConceal() Style { + return append(s, noConcealAttr) +} + +// NoStrikethrough appends the no strikethrough style attribute to the style. +func (s Style) NoStrikethrough() Style { + return append(s, noStrikethroughAttr) +} + +// DefaultForegroundColor appends the default foreground color style attribute to the style. +func (s Style) DefaultForegroundColor() Style { + return append(s, defaultForegroundColorAttr) +} + +// DefaultBackgroundColor appends the default background color style attribute to the style. +func (s Style) DefaultBackgroundColor() Style { + return append(s, defaultBackgroundColorAttr) +} + +// DefaultUnderlineColor appends the default underline color style attribute to the style. +func (s Style) DefaultUnderlineColor() Style { + return append(s, defaultUnderlineColorAttr) +} + +// ForegroundColor appends the foreground color style attribute to the style. +func (s Style) ForegroundColor(c Color) Style { + return append(s, foregroundColorString(c)) +} + +// BackgroundColor appends the background color style attribute to the style. +func (s Style) BackgroundColor(c Color) Style { + return append(s, backgroundColorString(c)) +} + +// UnderlineColor appends the underline color style attribute to the style. +func (s Style) UnderlineColor(c Color) Style { + return append(s, underlineColorString(c)) +} + +// UnderlineStyle represents an ANSI SGR (Select Graphic Rendition) underline +// style. +type UnderlineStyle = byte + +const ( + doubleUnderlineStyle = "4:2" + curlyUnderlineStyle = "4:3" + dottedUnderlineStyle = "4:4" + dashedUnderlineStyle = "4:5" +) + +const ( + // NoUnderlineStyle is the default underline style. + NoUnderlineStyle UnderlineStyle = iota + // SingleUnderlineStyle is a single underline style. + SingleUnderlineStyle + // DoubleUnderlineStyle is a double underline style. + DoubleUnderlineStyle + // CurlyUnderlineStyle is a curly underline style. + CurlyUnderlineStyle + // DottedUnderlineStyle is a dotted underline style. + DottedUnderlineStyle + // DashedUnderlineStyle is a dashed underline style. + DashedUnderlineStyle +) + +// SGR (Select Graphic Rendition) style attributes. +// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters +const ( + ResetAttr Attr = 0 + BoldAttr Attr = 1 + FaintAttr Attr = 2 + ItalicAttr Attr = 3 + UnderlineAttr Attr = 4 + SlowBlinkAttr Attr = 5 + RapidBlinkAttr Attr = 6 + ReverseAttr Attr = 7 + ConcealAttr Attr = 8 + StrikethroughAttr Attr = 9 + NormalIntensityAttr Attr = 22 + NoItalicAttr Attr = 23 + NoUnderlineAttr Attr = 24 + NoBlinkAttr Attr = 25 + NoReverseAttr Attr = 27 + NoConcealAttr Attr = 28 + NoStrikethroughAttr Attr = 29 + BlackForegroundColorAttr Attr = 30 + RedForegroundColorAttr Attr = 31 + GreenForegroundColorAttr Attr = 32 + YellowForegroundColorAttr Attr = 33 + BlueForegroundColorAttr Attr = 34 + MagentaForegroundColorAttr Attr = 35 + CyanForegroundColorAttr Attr = 36 + WhiteForegroundColorAttr Attr = 37 + ExtendedForegroundColorAttr Attr = 38 + DefaultForegroundColorAttr Attr = 39 + BlackBackgroundColorAttr Attr = 40 + RedBackgroundColorAttr Attr = 41 + GreenBackgroundColorAttr Attr = 42 + YellowBackgroundColorAttr Attr = 43 + BlueBackgroundColorAttr Attr = 44 + MagentaBackgroundColorAttr Attr = 45 + CyanBackgroundColorAttr Attr = 46 + WhiteBackgroundColorAttr Attr = 47 + ExtendedBackgroundColorAttr Attr = 48 + DefaultBackgroundColorAttr Attr = 49 + ExtendedUnderlineColorAttr Attr = 58 + DefaultUnderlineColorAttr Attr = 59 + BrightBlackForegroundColorAttr Attr = 90 + BrightRedForegroundColorAttr Attr = 91 + BrightGreenForegroundColorAttr Attr = 92 + BrightYellowForegroundColorAttr Attr = 93 + BrightBlueForegroundColorAttr Attr = 94 + BrightMagentaForegroundColorAttr Attr = 95 + BrightCyanForegroundColorAttr Attr = 96 + BrightWhiteForegroundColorAttr Attr = 97 + BrightBlackBackgroundColorAttr Attr = 100 + BrightRedBackgroundColorAttr Attr = 101 + BrightGreenBackgroundColorAttr Attr = 102 + BrightYellowBackgroundColorAttr Attr = 103 + BrightBlueBackgroundColorAttr Attr = 104 + BrightMagentaBackgroundColorAttr Attr = 105 + BrightCyanBackgroundColorAttr Attr = 106 + BrightWhiteBackgroundColorAttr Attr = 107 + + RGBColorIntroducerAttr Attr = 2 + ExtendedColorIntroducerAttr Attr = 5 +) + +const ( + resetAttr = "0" + boldAttr = "1" + faintAttr = "2" + italicAttr = "3" + underlineAttr = "4" + slowBlinkAttr = "5" + rapidBlinkAttr = "6" + reverseAttr = "7" + concealAttr = "8" + strikethroughAttr = "9" + normalIntensityAttr = "22" + noItalicAttr = "23" + noUnderlineAttr = "24" + noBlinkAttr = "25" + noReverseAttr = "27" + noConcealAttr = "28" + noStrikethroughAttr = "29" + blackForegroundColorAttr = "30" + redForegroundColorAttr = "31" + greenForegroundColorAttr = "32" + yellowForegroundColorAttr = "33" + blueForegroundColorAttr = "34" + magentaForegroundColorAttr = "35" + cyanForegroundColorAttr = "36" + whiteForegroundColorAttr = "37" + extendedForegroundColorAttr = "38" + defaultForegroundColorAttr = "39" + blackBackgroundColorAttr = "40" + redBackgroundColorAttr = "41" + greenBackgroundColorAttr = "42" + yellowBackgroundColorAttr = "43" + blueBackgroundColorAttr = "44" + magentaBackgroundColorAttr = "45" + cyanBackgroundColorAttr = "46" + whiteBackgroundColorAttr = "47" + extendedBackgroundColorAttr = "48" + defaultBackgroundColorAttr = "49" + extendedUnderlineColorAttr = "58" + defaultUnderlineColorAttr = "59" + brightBlackForegroundColorAttr = "90" + brightRedForegroundColorAttr = "91" + brightGreenForegroundColorAttr = "92" + brightYellowForegroundColorAttr = "93" + brightBlueForegroundColorAttr = "94" + brightMagentaForegroundColorAttr = "95" + brightCyanForegroundColorAttr = "96" + brightWhiteForegroundColorAttr = "97" + brightBlackBackgroundColorAttr = "100" + brightRedBackgroundColorAttr = "101" + brightGreenBackgroundColorAttr = "102" + brightYellowBackgroundColorAttr = "103" + brightBlueBackgroundColorAttr = "104" + brightMagentaBackgroundColorAttr = "105" + brightCyanBackgroundColorAttr = "106" + brightWhiteBackgroundColorAttr = "107" +) + +// foregroundColorString returns the style SGR attribute for the given +// foreground color. +// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters +func foregroundColorString(c Color) string { + switch c := c.(type) { + case BasicColor: + // 3-bit or 4-bit ANSI foreground + // "3" or "9" where n is the color number from 0 to 7 + switch c { + case Black: + return blackForegroundColorAttr + case Red: + return redForegroundColorAttr + case Green: + return greenForegroundColorAttr + case Yellow: + return yellowForegroundColorAttr + case Blue: + return blueForegroundColorAttr + case Magenta: + return magentaForegroundColorAttr + case Cyan: + return cyanForegroundColorAttr + case White: + return whiteForegroundColorAttr + case BrightBlack: + return brightBlackForegroundColorAttr + case BrightRed: + return brightRedForegroundColorAttr + case BrightGreen: + return brightGreenForegroundColorAttr + case BrightYellow: + return brightYellowForegroundColorAttr + case BrightBlue: + return brightBlueForegroundColorAttr + case BrightMagenta: + return brightMagentaForegroundColorAttr + case BrightCyan: + return brightCyanForegroundColorAttr + case BrightWhite: + return brightWhiteForegroundColorAttr + } + case ExtendedColor: + // 256-color ANSI foreground + // "38;5;" + return "38;5;" + strconv.FormatUint(uint64(c), 10) + case TrueColor, color.Color: + // 24-bit "true color" foreground + // "38;2;;;" + r, g, b, _ := c.RGBA() + return "38;2;" + + strconv.FormatUint(uint64(shift(r)), 10) + ";" + + strconv.FormatUint(uint64(shift(g)), 10) + ";" + + strconv.FormatUint(uint64(shift(b)), 10) + } + return defaultForegroundColorAttr +} + +// backgroundColorString returns the style SGR attribute for the given +// background color. +// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters +func backgroundColorString(c Color) string { + switch c := c.(type) { + case BasicColor: + // 3-bit or 4-bit ANSI foreground + // "4" or "10" where n is the color number from 0 to 7 + switch c { + case Black: + return blackBackgroundColorAttr + case Red: + return redBackgroundColorAttr + case Green: + return greenBackgroundColorAttr + case Yellow: + return yellowBackgroundColorAttr + case Blue: + return blueBackgroundColorAttr + case Magenta: + return magentaBackgroundColorAttr + case Cyan: + return cyanBackgroundColorAttr + case White: + return whiteBackgroundColorAttr + case BrightBlack: + return brightBlackBackgroundColorAttr + case BrightRed: + return brightRedBackgroundColorAttr + case BrightGreen: + return brightGreenBackgroundColorAttr + case BrightYellow: + return brightYellowBackgroundColorAttr + case BrightBlue: + return brightBlueBackgroundColorAttr + case BrightMagenta: + return brightMagentaBackgroundColorAttr + case BrightCyan: + return brightCyanBackgroundColorAttr + case BrightWhite: + return brightWhiteBackgroundColorAttr + } + case ExtendedColor: + // 256-color ANSI foreground + // "48;5;" + return "48;5;" + strconv.FormatUint(uint64(c), 10) + case TrueColor, color.Color: + // 24-bit "true color" foreground + // "38;2;;;" + r, g, b, _ := c.RGBA() + return "48;2;" + + strconv.FormatUint(uint64(shift(r)), 10) + ";" + + strconv.FormatUint(uint64(shift(g)), 10) + ";" + + strconv.FormatUint(uint64(shift(b)), 10) + } + return defaultBackgroundColorAttr +} + +// underlineColorString returns the style SGR attribute for the given underline +// color. +// See: https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters +func underlineColorString(c Color) string { + switch c := c.(type) { + // NOTE: we can't use 3-bit and 4-bit ANSI color codes with underline + // color, use 256-color instead. + // + // 256-color ANSI underline color + // "58;5;" + case BasicColor: + return "58;5;" + strconv.FormatUint(uint64(c), 10) + case ExtendedColor: + return "58;5;" + strconv.FormatUint(uint64(c), 10) + case TrueColor, color.Color: + // 24-bit "true color" foreground + // "38;2;;;" + r, g, b, _ := c.RGBA() + return "58;2;" + + strconv.FormatUint(uint64(shift(r)), 10) + ";" + + strconv.FormatUint(uint64(shift(g)), 10) + ";" + + strconv.FormatUint(uint64(shift(b)), 10) + } + return defaultUnderlineColorAttr +} + +// ReadStyleColor decodes a color from a slice of parameters. It returns the +// number of parameters read and the color. This function is used to read SGR +// color parameters following the ITU T.416 standard. +// +// It supports reading the following color types: +// - 0: implementation defined +// - 1: transparent +// - 2: RGB direct color +// - 3: CMY direct color +// - 4: CMYK direct color +// - 5: indexed color +// - 6: RGBA direct color (WezTerm extension) +// +// The parameters can be separated by semicolons (;) or colons (:). Mixing +// separators is not allowed. +// +// The specs supports defining a color space id, a color tolerance value, and a +// tolerance color space id. However, these values have no effect on the +// returned color and will be ignored. +// +// This implementation includes a few modifications to the specs: +// 1. Support for legacy color values separated by semicolons (;) with respect to RGB, and indexed colors +// 2. Support ignoring and omitting the color space id (second parameter) with respect to RGB colors +// 3. Support ignoring and omitting the 6th parameter with respect to RGB and CMY colors +// 4. Support reading RGBA colors +func ReadStyleColor(params Params, co *color.Color) (n int) { + if len(params) < 2 { // Need at least SGR type and color type + return 0 + } + + // First parameter indicates one of 38, 48, or 58 (foreground, background, or underline) + s := params[0] + p := params[1] + colorType := p.Param(0) + n = 2 + + paramsfn := func() (p1, p2, p3, p4 int) { + // Where should we start reading the color? + switch { + case s.HasMore() && p.HasMore() && len(params) > 8 && params[2].HasMore() && params[3].HasMore() && params[4].HasMore() && params[5].HasMore() && params[6].HasMore() && params[7].HasMore(): + // We have color space id, a 6th parameter, a tolerance value, and a tolerance color space + n += 7 + return params[3].Param(0), params[4].Param(0), params[5].Param(0), params[6].Param(0) + case s.HasMore() && p.HasMore() && len(params) > 7 && params[2].HasMore() && params[3].HasMore() && params[4].HasMore() && params[5].HasMore() && params[6].HasMore(): + // We have color space id, a 6th parameter, and a tolerance value + n += 6 + return params[3].Param(0), params[4].Param(0), params[5].Param(0), params[6].Param(0) + case s.HasMore() && p.HasMore() && len(params) > 6 && params[2].HasMore() && params[3].HasMore() && params[4].HasMore() && params[5].HasMore(): + // We have color space id and a 6th parameter + // 48 : 4 : : 1 : 2 : 3 :4 + n += 5 + return params[3].Param(0), params[4].Param(0), params[5].Param(0), params[6].Param(0) + case s.HasMore() && p.HasMore() && len(params) > 5 && params[2].HasMore() && params[3].HasMore() && params[4].HasMore() && !params[5].HasMore(): + // We have color space + // 48 : 3 : : 1 : 2 : 3 + n += 4 + return params[3].Param(0), params[4].Param(0), params[5].Param(0), -1 + case s.HasMore() && p.HasMore() && p.Param(0) == 2 && params[2].HasMore() && params[3].HasMore() && !params[4].HasMore(): + // We have color values separated by colons (:) + // 48 : 2 : 1 : 2 : 3 + fallthrough + case !s.HasMore() && !p.HasMore() && p.Param(0) == 2 && !params[2].HasMore() && !params[3].HasMore() && !params[4].HasMore(): + // Support legacy color values separated by semicolons (;) + // 48 ; 2 ; 1 ; 2 ; 3 + n += 3 + return params[2].Param(0), params[3].Param(0), params[4].Param(0), -1 + } + // Ambiguous SGR color + return -1, -1, -1, -1 + } + + switch colorType { + case 0: // implementation defined + return 2 + case 1: // transparent + *co = color.Transparent + return 2 + case 2: // RGB direct color + if len(params) < 5 { + return 0 + } + + r, g, b, _ := paramsfn() + if r == -1 || g == -1 || b == -1 { + return 0 + } + + *co = color.RGBA{ + R: uint8(r), //nolint:gosec + G: uint8(g), //nolint:gosec + B: uint8(b), //nolint:gosec + A: 0xff, + } + return //nolint:nakedret + + case 3: // CMY direct color + if len(params) < 5 { + return 0 + } + + c, m, y, _ := paramsfn() + if c == -1 || m == -1 || y == -1 { + return 0 + } + + *co = color.CMYK{ + C: uint8(c), //nolint:gosec + M: uint8(m), //nolint:gosec + Y: uint8(y), //nolint:gosec + K: 0, + } + return //nolint:nakedret + + case 4: // CMYK direct color + if len(params) < 6 { + return 0 + } + + c, m, y, k := paramsfn() + if c == -1 || m == -1 || y == -1 || k == -1 { + return 0 + } + + *co = color.CMYK{ + C: uint8(c), //nolint:gosec + M: uint8(m), //nolint:gosec + Y: uint8(y), //nolint:gosec + K: uint8(k), //nolint:gosec + } + return //nolint:nakedret + + case 5: // indexed color + if len(params) < 3 { + return 0 + } + switch { + case s.HasMore() && p.HasMore() && !params[2].HasMore(): + // Colon separated indexed color + // 38 : 5 : 234 + case !s.HasMore() && !p.HasMore() && !params[2].HasMore(): + // Legacy semicolon indexed color + // 38 ; 5 ; 234 + default: + return 0 + } + *co = ExtendedColor(params[2].Param(0)) //nolint:gosec + return 3 + + case 6: // RGBA direct color + if len(params) < 6 { + return 0 + } + + r, g, b, a := paramsfn() + if r == -1 || g == -1 || b == -1 || a == -1 { + return 0 + } + + *co = color.RGBA{ + R: uint8(r), //nolint:gosec + G: uint8(g), //nolint:gosec + B: uint8(b), //nolint:gosec + A: uint8(a), //nolint:gosec + } + return //nolint:nakedret + + default: + return 0 + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/termcap.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/termcap.go new file mode 100644 index 0000000..b59aa42 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/termcap.go @@ -0,0 +1,41 @@ +package ansi + +import ( + "encoding/hex" + "strings" +) + +// XTGETTCAP (RequestTermcap) requests Termcap/Terminfo strings. +// +// DCS + q ST +// +// Where is a list of Termcap/Terminfo capabilities, encoded in 2-digit +// hexadecimals, separated by semicolons. +// +// See: https://man7.org/linux/man-pages/man5/terminfo.5.html +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands +func XTGETTCAP(caps ...string) string { + if len(caps) == 0 { + return "" + } + + s := "\x1bP+q" + for i, c := range caps { + if i > 0 { + s += ";" + } + s += strings.ToUpper(hex.EncodeToString([]byte(c))) + } + + return s + "\x1b\\" +} + +// RequestTermcap is an alias for [XTGETTCAP]. +func RequestTermcap(caps ...string) string { + return XTGETTCAP(caps...) +} + +// RequestTerminfo is an alias for [XTGETTCAP]. +func RequestTerminfo(caps ...string) string { + return XTGETTCAP(caps...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/title.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/title.go new file mode 100644 index 0000000..54ef942 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/title.go @@ -0,0 +1,48 @@ +package ansi + +// SetIconNameWindowTitle returns a sequence for setting the icon name and +// window title. +// +// OSC 0 ; title ST +// OSC 0 ; title BEL +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Commands +func SetIconNameWindowTitle(s string) string { + return "\x1b]0;" + s + "\x07" +} + +// SetIconName returns a sequence for setting the icon name. +// +// OSC 1 ; title ST +// OSC 1 ; title BEL +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Commands +func SetIconName(s string) string { + return "\x1b]1;" + s + "\x07" +} + +// SetWindowTitle returns a sequence for setting the window title. +// +// OSC 2 ; title ST +// OSC 2 ; title BEL +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Operating-System-Commands +func SetWindowTitle(s string) string { + return "\x1b]2;" + s + "\x07" +} + +// DECSWT is a sequence for setting the window title. +// +// This is an alias for [SetWindowTitle]("1;"). +// See: EK-VT520-RM 5–156 https://vt100.net/dec/ek-vt520-rm.pdf +func DECSWT(name string) string { + return SetWindowTitle("1;" + name) +} + +// DECSIN is a sequence for setting the icon name. +// +// This is an alias for [SetWindowTitle]("L;"). +// See: EK-VT520-RM 5–134 https://vt100.net/dec/ek-vt520-rm.pdf +func DECSIN(name string) string { + return SetWindowTitle("L;" + name) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/truncate.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/truncate.go new file mode 100644 index 0000000..3f541fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/truncate.go @@ -0,0 +1,299 @@ +package ansi + +import ( + "bytes" + + "github.com/charmbracelet/x/ansi/parser" + "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" +) + +// Cut the string, without adding any prefix or tail strings. This function is +// aware of ANSI escape codes and will not break them, and accounts for +// wide-characters (such as East-Asian characters and emojis). +// This treats the text as a sequence of graphemes. +func Cut(s string, left, right int) string { + return cut(GraphemeWidth, s, left, right) +} + +// CutWc the string, without adding any prefix or tail strings. This function is +// aware of ANSI escape codes and will not break them, and accounts for +// wide-characters (such as East-Asian characters and emojis). +// Note that the [left] parameter is inclusive, while [right] isn't, +// which is to say it'll return `[left, right)`. +// +// This treats the text as a sequence of wide characters and runes. +func CutWc(s string, left, right int) string { + return cut(WcWidth, s, left, right) +} + +func cut(m Method, s string, left, right int) string { + if right <= left { + return "" + } + + truncate := Truncate + truncateLeft := TruncateLeft + if m == WcWidth { + truncate = TruncateWc + truncateLeft = TruncateWc + } + + if left == 0 { + return truncate(s, right, "") + } + return truncateLeft(truncate(s, right, ""), left, "") +} + +// Truncate truncates a string to a given length, adding a tail to the end if +// the string is longer than the given length. This function is aware of ANSI +// escape codes and will not break them, and accounts for wide-characters (such +// as East-Asian characters and emojis). +// This treats the text as a sequence of graphemes. +func Truncate(s string, length int, tail string) string { + return truncate(GraphemeWidth, s, length, tail) +} + +// TruncateWc truncates a string to a given length, adding a tail to the end if +// the string is longer than the given length. This function is aware of ANSI +// escape codes and will not break them, and accounts for wide-characters (such +// as East-Asian characters and emojis). +// This treats the text as a sequence of wide characters and runes. +func TruncateWc(s string, length int, tail string) string { + return truncate(WcWidth, s, length, tail) +} + +func truncate(m Method, s string, length int, tail string) string { + if sw := StringWidth(s); sw <= length { + return s + } + + tw := StringWidth(tail) + length -= tw + if length < 0 { + return "" + } + + var cluster []byte + var buf bytes.Buffer + curWidth := 0 + ignoring := false + pstate := parser.GroundState // initial state + b := []byte(s) + i := 0 + + // Here we iterate over the bytes of the string and collect printable + // characters and runes. We also keep track of the width of the string + // in cells. + // + // Once we reach the given length, we start ignoring characters and only + // collect ANSI escape codes until we reach the end of string. + for i < len(b) { + state, action := parser.Table.Transition(pstate, b[i]) + if state == parser.Utf8State { + // This action happens when we transition to the Utf8State. + var width int + cluster, _, width, _ = uniseg.FirstGraphemeCluster(b[i:], -1) + if m == WcWidth { + width = runewidth.StringWidth(string(cluster)) + } + + // increment the index by the length of the cluster + i += len(cluster) + curWidth += width + + // Are we ignoring? Skip to the next byte + if ignoring { + continue + } + + // Is this gonna be too wide? + // If so write the tail and stop collecting. + if curWidth > length && !ignoring { + ignoring = true + buf.WriteString(tail) + } + + if curWidth > length { + continue + } + + buf.Write(cluster) + + // Done collecting, now we're back in the ground state. + pstate = parser.GroundState + continue + } + + switch action { + case parser.PrintAction: + // Is this gonna be too wide? + // If so write the tail and stop collecting. + if curWidth >= length && !ignoring { + ignoring = true + buf.WriteString(tail) + } + + // Skip to the next byte if we're ignoring + if ignoring { + i++ + continue + } + + // collects printable ASCII + curWidth++ + fallthrough + case parser.ExecuteAction: + // execute action will be things like \n, which, if outside the cut, + // should be ignored. + if ignoring { + i++ + continue + } + fallthrough + default: + buf.WriteByte(b[i]) + i++ + } + + // Transition to the next state. + pstate = state + + // Once we reach the given length, we start ignoring runes and write + // the tail to the buffer. + if curWidth > length && !ignoring { + ignoring = true + buf.WriteString(tail) + } + } + + return buf.String() +} + +// TruncateLeft truncates a string from the left side by removing n characters, +// adding a prefix to the beginning if the string is longer than n. +// This function is aware of ANSI escape codes and will not break them, and +// accounts for wide-characters (such as East-Asian characters and emojis). +// This treats the text as a sequence of graphemes. +func TruncateLeft(s string, n int, prefix string) string { + return truncateLeft(GraphemeWidth, s, n, prefix) +} + +// TruncateLeftWc truncates a string from the left side by removing n characters, +// adding a prefix to the beginning if the string is longer than n. +// This function is aware of ANSI escape codes and will not break them, and +// accounts for wide-characters (such as East-Asian characters and emojis). +// This treats the text as a sequence of wide characters and runes. +func TruncateLeftWc(s string, n int, prefix string) string { + return truncateLeft(WcWidth, s, n, prefix) +} + +func truncateLeft(m Method, s string, n int, prefix string) string { + if n <= 0 { + return s + } + + var cluster []byte + var buf bytes.Buffer + curWidth := 0 + ignoring := true + pstate := parser.GroundState + b := []byte(s) + i := 0 + + for i < len(b) { + if !ignoring { + buf.Write(b[i:]) + break + } + + state, action := parser.Table.Transition(pstate, b[i]) + if state == parser.Utf8State { + var width int + cluster, _, width, _ = uniseg.FirstGraphemeCluster(b[i:], -1) + if m == WcWidth { + width = runewidth.StringWidth(string(cluster)) + } + + i += len(cluster) + curWidth += width + + if curWidth > n && ignoring { + ignoring = false + buf.WriteString(prefix) + } + + if curWidth > n { + buf.Write(cluster) + } + + if ignoring { + continue + } + + pstate = parser.GroundState + continue + } + + switch action { + case parser.PrintAction: + curWidth++ + + if curWidth > n && ignoring { + ignoring = false + buf.WriteString(prefix) + } + + if ignoring { + i++ + continue + } + + fallthrough + case parser.ExecuteAction: + // execute action will be things like \n, which, if outside the cut, + // should be ignored. + if ignoring { + i++ + continue + } + fallthrough + default: + buf.WriteByte(b[i]) + i++ + } + + pstate = state + if curWidth > n && ignoring { + ignoring = false + buf.WriteString(prefix) + } + } + + return buf.String() +} + +// ByteToGraphemeRange takes start and stop byte positions and converts them to +// grapheme-aware char positions. +// You can use this with [Truncate], [TruncateLeft], and [Cut]. +func ByteToGraphemeRange(str string, byteStart, byteStop int) (charStart, charStop int) { + bytePos, charPos := 0, 0 + gr := uniseg.NewGraphemes(str) + for byteStart > bytePos { + if !gr.Next() { + break + } + bytePos += len(gr.Str()) + charPos += max(1, gr.Width()) + } + charStart = charPos + for byteStop > bytePos { + if !gr.Next() { + break + } + bytePos += len(gr.Str()) + charPos += max(1, gr.Width()) + } + charStop = charPos + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/util.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/util.go new file mode 100644 index 0000000..103f452 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/util.go @@ -0,0 +1,92 @@ +package ansi + +import ( + "fmt" + "image/color" + "strconv" + "strings" + + "github.com/lucasb-eyer/go-colorful" +) + +// colorToHexString returns a hex string representation of a color. +func colorToHexString(c color.Color) string { //nolint:unused + if c == nil { + return "" + } + shift := func(v uint32) uint32 { + if v > 0xff { + return v >> 8 + } + return v + } + r, g, b, _ := c.RGBA() + r, g, b = shift(r), shift(g), shift(b) + return fmt.Sprintf("#%02x%02x%02x", r, g, b) +} + +// rgbToHex converts red, green, and blue values to a hexadecimal value. +// +// hex := rgbToHex(0, 0, 255) // 0x0000FF +func rgbToHex(r, g, b uint32) uint32 { //nolint:unused + return r<<16 + g<<8 + b +} + +type shiftable interface { + ~uint | ~uint16 | ~uint32 | ~uint64 +} + +func shift[T shiftable](x T) T { + if x > 0xff { + x >>= 8 + } + return x +} + +// XParseColor is a helper function that parses a string into a color.Color. It +// provides a similar interface to the XParseColor function in Xlib. It +// supports the following formats: +// +// - #RGB +// - #RRGGBB +// - rgb:RRRR/GGGG/BBBB +// - rgba:RRRR/GGGG/BBBB/AAAA +// +// If the string is not a valid color, nil is returned. +// +// See: https://linux.die.net/man/3/xparsecolor +func XParseColor(s string) color.Color { + switch { + case strings.HasPrefix(s, "#"): + c, err := colorful.Hex(s) + if err != nil { + return nil + } + + return c + case strings.HasPrefix(s, "rgb:"): + parts := strings.Split(s[4:], "/") + if len(parts) != 3 { + return nil + } + + r, _ := strconv.ParseUint(parts[0], 16, 32) + g, _ := strconv.ParseUint(parts[1], 16, 32) + b, _ := strconv.ParseUint(parts[2], 16, 32) + + return color.RGBA{uint8(shift(r)), uint8(shift(g)), uint8(shift(b)), 255} //nolint:gosec + case strings.HasPrefix(s, "rgba:"): + parts := strings.Split(s[5:], "/") + if len(parts) != 4 { + return nil + } + + r, _ := strconv.ParseUint(parts[0], 16, 32) + g, _ := strconv.ParseUint(parts[1], 16, 32) + b, _ := strconv.ParseUint(parts[2], 16, 32) + a, _ := strconv.ParseUint(parts[3], 16, 32) + + return color.RGBA{uint8(shift(r)), uint8(shift(g)), uint8(shift(b)), uint8(shift(a))} //nolint:gosec + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/width.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/width.go new file mode 100644 index 0000000..cc08581 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/width.go @@ -0,0 +1,113 @@ +package ansi + +import ( + "bytes" + + "github.com/charmbracelet/x/ansi/parser" + "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" +) + +// Strip removes ANSI escape codes from a string. +func Strip(s string) string { + var ( + buf bytes.Buffer // buffer for collecting printable characters + ri int // rune index + rw int // rune width + pstate = parser.GroundState // initial state + ) + + // This implements a subset of the Parser to only collect runes and + // printable characters. + for i := range len(s) { + if pstate == parser.Utf8State { + // During this state, collect rw bytes to form a valid rune in the + // buffer. After getting all the rune bytes into the buffer, + // transition to GroundState and reset the counters. + buf.WriteByte(s[i]) + ri++ + if ri < rw { + continue + } + pstate = parser.GroundState + ri = 0 + rw = 0 + continue + } + + state, action := parser.Table.Transition(pstate, s[i]) + switch action { + case parser.CollectAction: + if state == parser.Utf8State { + // This action happens when we transition to the Utf8State. + rw = utf8ByteLen(s[i]) + buf.WriteByte(s[i]) + ri++ + } + case parser.PrintAction, parser.ExecuteAction: + // collects printable ASCII and non-printable characters + buf.WriteByte(s[i]) + } + + // Transition to the next state. + // The Utf8State is managed separately above. + if pstate != parser.Utf8State { + pstate = state + } + } + + return buf.String() +} + +// StringWidth returns the width of a string in cells. This is the number of +// cells that the string will occupy when printed in a terminal. ANSI escape +// codes are ignored and wide characters (such as East Asians and emojis) are +// accounted for. +// This treats the text as a sequence of grapheme clusters. +func StringWidth(s string) int { + return stringWidth(GraphemeWidth, s) +} + +// StringWidthWc returns the width of a string in cells. This is the number of +// cells that the string will occupy when printed in a terminal. ANSI escape +// codes are ignored and wide characters (such as East Asians and emojis) are +// accounted for. +// This treats the text as a sequence of wide characters and runes. +func StringWidthWc(s string) int { + return stringWidth(WcWidth, s) +} + +func stringWidth(m Method, s string) int { + if s == "" { + return 0 + } + + var ( + pstate = parser.GroundState // initial state + cluster string + width int + ) + + for i := 0; i < len(s); i++ { + state, action := parser.Table.Transition(pstate, s[i]) + if state == parser.Utf8State { + var w int + cluster, _, w, _ = uniseg.FirstGraphemeClusterInString(s[i:], -1) + if m == WcWidth { + w = runewidth.StringWidth(cluster) + } + width += w + i += len(cluster) - 1 + pstate = parser.GroundState + continue + } + + if action == parser.PrintAction { + width++ + } + + pstate = state + } + + return width +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/winop.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/winop.go new file mode 100644 index 0000000..0238780 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/winop.go @@ -0,0 +1,53 @@ +package ansi + +import ( + "strconv" + "strings" +) + +const ( + // ResizeWindowWinOp is a window operation that resizes the terminal + // window. + ResizeWindowWinOp = 4 + + // RequestWindowSizeWinOp is a window operation that requests a report of + // the size of the terminal window in pixels. The response is in the form: + // CSI 4 ; height ; width t + RequestWindowSizeWinOp = 14 + + // RequestCellSizeWinOp is a window operation that requests a report of + // the size of the terminal cell size in pixels. The response is in the form: + // CSI 6 ; height ; width t + RequestCellSizeWinOp = 16 +) + +// WindowOp (XTWINOPS) is a sequence that manipulates the terminal window. +// +// CSI Ps ; Ps ; Ps t +// +// Ps is a semicolon-separated list of parameters. +// See https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h4-Functions-using-CSI-_-ordered-by-the-final-character-lparen-s-rparen:CSI-Ps;Ps;Ps-t.1EB0 +func WindowOp(p int, ps ...int) string { + if p <= 0 { + return "" + } + + if len(ps) == 0 { + return "\x1b[" + strconv.Itoa(p) + "t" + } + + params := make([]string, 0, len(ps)+1) + params = append(params, strconv.Itoa(p)) + for _, p := range ps { + if p >= 0 { + params = append(params, strconv.Itoa(p)) + } + } + + return "\x1b[" + strings.Join(params, ";") + "t" +} + +// XTWINOPS is an alias for [WindowOp]. +func XTWINOPS(p int, ps ...int) string { + return WindowOp(p, ps...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/wrap.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/wrap.go new file mode 100644 index 0000000..253e123 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/wrap.go @@ -0,0 +1,474 @@ +package ansi + +import ( + "bytes" + "unicode" + "unicode/utf8" + + "github.com/charmbracelet/x/ansi/parser" + "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" +) + +// nbsp is a non-breaking space. +const nbsp = 0xA0 + +// Hardwrap wraps a string or a block of text to a given line length, breaking +// word boundaries. This will preserve ANSI escape codes and will account for +// wide-characters in the string. +// When preserveSpace is true, spaces at the beginning of a line will be +// preserved. +// This treats the text as a sequence of graphemes. +func Hardwrap(s string, limit int, preserveSpace bool) string { + return hardwrap(GraphemeWidth, s, limit, preserveSpace) +} + +// HardwrapWc wraps a string or a block of text to a given line length, breaking +// word boundaries. This will preserve ANSI escape codes and will account for +// wide-characters in the string. +// When preserveSpace is true, spaces at the beginning of a line will be +// preserved. +// This treats the text as a sequence of wide characters and runes. +func HardwrapWc(s string, limit int, preserveSpace bool) string { + return hardwrap(WcWidth, s, limit, preserveSpace) +} + +func hardwrap(m Method, s string, limit int, preserveSpace bool) string { + if limit < 1 { + return s + } + + var ( + cluster []byte + buf bytes.Buffer + curWidth int + forceNewline bool + pstate = parser.GroundState // initial state + b = []byte(s) + ) + + addNewline := func() { + buf.WriteByte('\n') + curWidth = 0 + } + + i := 0 + for i < len(b) { + state, action := parser.Table.Transition(pstate, b[i]) + if state == parser.Utf8State { //nolint:nestif + var width int + cluster, _, width, _ = uniseg.FirstGraphemeCluster(b[i:], -1) + if m == WcWidth { + width = runewidth.StringWidth(string(cluster)) + } + i += len(cluster) + + if curWidth+width > limit { + addNewline() + } + if !preserveSpace && curWidth == 0 && len(cluster) <= 4 { + // Skip spaces at the beginning of a line + if r, _ := utf8.DecodeRune(cluster); r != utf8.RuneError && unicode.IsSpace(r) { + pstate = parser.GroundState + continue + } + } + + buf.Write(cluster) + curWidth += width + pstate = parser.GroundState + continue + } + + switch action { + case parser.PrintAction, parser.ExecuteAction: + if b[i] == '\n' { + addNewline() + forceNewline = false + break + } + + if curWidth+1 > limit { + addNewline() + forceNewline = true + } + + // Skip spaces at the beginning of a line + if curWidth == 0 { + if !preserveSpace && forceNewline && unicode.IsSpace(rune(b[i])) { + break + } + forceNewline = false + } + + buf.WriteByte(b[i]) + if action == parser.PrintAction { + curWidth++ + } + default: + buf.WriteByte(b[i]) + } + + // We manage the UTF8 state separately manually above. + if pstate != parser.Utf8State { + pstate = state + } + i++ + } + + return buf.String() +} + +// Wordwrap wraps a string or a block of text to a given line length, not +// breaking word boundaries. This will preserve ANSI escape codes and will +// account for wide-characters in the string. +// The breakpoints string is a list of characters that are considered +// breakpoints for word wrapping. A hyphen (-) is always considered a +// breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +// +// This treats the text as a sequence of graphemes. +func Wordwrap(s string, limit int, breakpoints string) string { + return wordwrap(GraphemeWidth, s, limit, breakpoints) +} + +// WordwrapWc wraps a string or a block of text to a given line length, not +// breaking word boundaries. This will preserve ANSI escape codes and will +// account for wide-characters in the string. +// The breakpoints string is a list of characters that are considered +// breakpoints for word wrapping. A hyphen (-) is always considered a +// breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +// +// This treats the text as a sequence of wide characters and runes. +func WordwrapWc(s string, limit int, breakpoints string) string { + return wordwrap(WcWidth, s, limit, breakpoints) +} + +func wordwrap(m Method, s string, limit int, breakpoints string) string { + if limit < 1 { + return s + } + + var ( + cluster []byte + buf bytes.Buffer + word bytes.Buffer + space bytes.Buffer + curWidth int + wordLen int + pstate = parser.GroundState // initial state + b = []byte(s) + ) + + addSpace := func() { + curWidth += space.Len() + buf.Write(space.Bytes()) + space.Reset() + } + + addWord := func() { + if word.Len() == 0 { + return + } + + addSpace() + curWidth += wordLen + buf.Write(word.Bytes()) + word.Reset() + wordLen = 0 + } + + addNewline := func() { + buf.WriteByte('\n') + curWidth = 0 + space.Reset() + } + + i := 0 + for i < len(b) { + state, action := parser.Table.Transition(pstate, b[i]) + if state == parser.Utf8State { //nolint:nestif + var width int + cluster, _, width, _ = uniseg.FirstGraphemeCluster(b[i:], -1) + if m == WcWidth { + width = runewidth.StringWidth(string(cluster)) + } + i += len(cluster) + + r, _ := utf8.DecodeRune(cluster) + if r != utf8.RuneError && unicode.IsSpace(r) && r != nbsp { + addWord() + space.WriteRune(r) + } else if bytes.ContainsAny(cluster, breakpoints) { + addSpace() + addWord() + buf.Write(cluster) + curWidth++ + } else { + word.Write(cluster) + wordLen += width + if curWidth+space.Len()+wordLen > limit && + wordLen < limit { + addNewline() + } + } + + pstate = parser.GroundState + continue + } + + switch action { + case parser.PrintAction, parser.ExecuteAction: + r := rune(b[i]) + switch { + case r == '\n': + if wordLen == 0 { + if curWidth+space.Len() > limit { + curWidth = 0 + } else { + buf.Write(space.Bytes()) + } + space.Reset() + } + + addWord() + addNewline() + case unicode.IsSpace(r): + addWord() + space.WriteByte(b[i]) + case r == '-': + fallthrough + case runeContainsAny(r, breakpoints): + addSpace() + addWord() + buf.WriteByte(b[i]) + curWidth++ + default: + word.WriteByte(b[i]) + wordLen++ + if curWidth+space.Len()+wordLen > limit && + wordLen < limit { + addNewline() + } + } + + default: + word.WriteByte(b[i]) + } + + // We manage the UTF8 state separately manually above. + if pstate != parser.Utf8State { + pstate = state + } + i++ + } + + addWord() + + return buf.String() +} + +// Wrap wraps a string or a block of text to a given line length, breaking word +// boundaries if necessary. This will preserve ANSI escape codes and will +// account for wide-characters in the string. The breakpoints string is a list +// of characters that are considered breakpoints for word wrapping. A hyphen +// (-) is always considered a breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +// +// This treats the text as a sequence of graphemes. +func Wrap(s string, limit int, breakpoints string) string { + return wrap(GraphemeWidth, s, limit, breakpoints) +} + +// WrapWc wraps a string or a block of text to a given line length, breaking word +// boundaries if necessary. This will preserve ANSI escape codes and will +// account for wide-characters in the string. The breakpoints string is a list +// of characters that are considered breakpoints for word wrapping. A hyphen +// (-) is always considered a breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +// +// This treats the text as a sequence of wide characters and runes. +func WrapWc(s string, limit int, breakpoints string) string { + return wrap(WcWidth, s, limit, breakpoints) +} + +func wrap(m Method, s string, limit int, breakpoints string) string { + if limit < 1 { + return s + } + + var ( + cluster []byte + buf bytes.Buffer + word bytes.Buffer + space bytes.Buffer + spaceWidth int // width of the space buffer + curWidth int // written width of the line + wordLen int // word buffer len without ANSI escape codes + pstate = parser.GroundState // initial state + b = []byte(s) + ) + + addSpace := func() { + curWidth += spaceWidth + buf.Write(space.Bytes()) + space.Reset() + spaceWidth = 0 + } + + addWord := func() { + if word.Len() == 0 { + return + } + + addSpace() + curWidth += wordLen + buf.Write(word.Bytes()) + word.Reset() + wordLen = 0 + } + + addNewline := func() { + buf.WriteByte('\n') + curWidth = 0 + space.Reset() + spaceWidth = 0 + } + + i := 0 + for i < len(b) { + state, action := parser.Table.Transition(pstate, b[i]) + if state == parser.Utf8State { //nolint:nestif + var width int + cluster, _, width, _ = uniseg.FirstGraphemeCluster(b[i:], -1) + if m == WcWidth { + width = runewidth.StringWidth(string(cluster)) + } + i += len(cluster) + + r, _ := utf8.DecodeRune(cluster) + switch { + case r != utf8.RuneError && unicode.IsSpace(r) && r != nbsp: // nbsp is a non-breaking space + addWord() + space.WriteRune(r) + spaceWidth += width + case bytes.ContainsAny(cluster, breakpoints): + addSpace() + if curWidth+wordLen+width > limit { + word.Write(cluster) + wordLen += width + } else { + addWord() + buf.Write(cluster) + curWidth += width + } + default: + if wordLen+width > limit { + // Hardwrap the word if it's too long + addWord() + } + + word.Write(cluster) + wordLen += width + + if curWidth+wordLen+spaceWidth > limit { + addNewline() + } + } + + pstate = parser.GroundState + continue + } + + switch action { + case parser.PrintAction, parser.ExecuteAction: + switch r := rune(b[i]); { + case r == '\n': + if wordLen == 0 { + if curWidth+spaceWidth > limit { + curWidth = 0 + } else { + // preserve whitespaces + buf.Write(space.Bytes()) + } + space.Reset() + spaceWidth = 0 + } + + addWord() + addNewline() + case unicode.IsSpace(r): + addWord() + space.WriteRune(r) + spaceWidth++ + case r == '-': + fallthrough + case runeContainsAny(r, breakpoints): + addSpace() + if curWidth+wordLen >= limit { + // We can't fit the breakpoint in the current line, treat + // it as part of the word. + word.WriteRune(r) + wordLen++ + } else { + addWord() + buf.WriteRune(r) + curWidth++ + } + default: + if curWidth == limit { + addNewline() + } + word.WriteRune(r) + wordLen++ + + if wordLen == limit { + // Hardwrap the word if it's too long + addWord() + } + + if curWidth+wordLen+spaceWidth > limit { + addNewline() + } + } + + default: + word.WriteByte(b[i]) + } + + // We manage the UTF8 state separately manually above. + if pstate != parser.Utf8State { + pstate = state + } + i++ + } + + if wordLen == 0 { + if curWidth+spaceWidth > limit { + curWidth = 0 + } else { + // preserve whitespaces + buf.Write(space.Bytes()) + } + space.Reset() + spaceWidth = 0 + } + + addWord() + + return buf.String() +} + +func runeContainsAny(r rune, s string) bool { + for _, c := range s { + if c == r { + return true + } + } + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/xterm.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/xterm.go new file mode 100644 index 0000000..83fd4bd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/ansi/xterm.go @@ -0,0 +1,138 @@ +package ansi + +import "strconv" + +// KeyModifierOptions (XTMODKEYS) sets/resets xterm key modifier options. +// +// Default is 0. +// +// CSI > Pp m +// CSI > Pp ; Pv m +// +// If Pv is omitted, the resource is reset to its initial value. +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +func KeyModifierOptions(p int, vs ...int) string { + var pp, pv string + if p > 0 { + pp = strconv.Itoa(p) + } + + if len(vs) == 0 { + return "\x1b[>" + strconv.Itoa(p) + "m" + } + + v := vs[0] + if v > 0 { + pv = strconv.Itoa(v) + return "\x1b[>" + pp + ";" + pv + "m" + } + + return "\x1b[>" + pp + "m" +} + +// XTMODKEYS is an alias for [KeyModifierOptions]. +func XTMODKEYS(p int, vs ...int) string { + return KeyModifierOptions(p, vs...) +} + +// SetKeyModifierOptions sets xterm key modifier options. +// This is an alias for [KeyModifierOptions]. +func SetKeyModifierOptions(pp int, pv int) string { + return KeyModifierOptions(pp, pv) +} + +// ResetKeyModifierOptions resets xterm key modifier options. +// This is an alias for [KeyModifierOptions]. +func ResetKeyModifierOptions(pp int) string { + return KeyModifierOptions(pp) +} + +// QueryKeyModifierOptions (XTQMODKEYS) requests xterm key modifier options. +// +// Default is 0. +// +// CSI ? Pp m +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +func QueryKeyModifierOptions(pp int) string { + var p string + if pp > 0 { + p = strconv.Itoa(pp) + } + return "\x1b[?" + p + "m" +} + +// XTQMODKEYS is an alias for [QueryKeyModifierOptions]. +func XTQMODKEYS(pp int) string { + return QueryKeyModifierOptions(pp) +} + +// Modify Other Keys (modifyOtherKeys) is an xterm feature that allows the +// terminal to modify the behavior of certain keys to send different escape +// sequences when pressed. +// +// See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys +const ( + SetModifyOtherKeys1 = "\x1b[>4;1m" + SetModifyOtherKeys2 = "\x1b[>4;2m" + ResetModifyOtherKeys = "\x1b[>4m" + QueryModifyOtherKeys = "\x1b[?4m" +) + +// ModifyOtherKeys returns a sequence that sets XTerm modifyOtherKeys mode. +// The mode argument specifies the mode to set. +// +// 0: Disable modifyOtherKeys mode. +// 1: Enable modifyOtherKeys mode 1. +// 2: Enable modifyOtherKeys mode 2. +// +// CSI > 4 ; mode m +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +// See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys +// +// Deprecated: use [SetModifyOtherKeys1] or [SetModifyOtherKeys2] instead. +func ModifyOtherKeys(mode int) string { + return "\x1b[>4;" + strconv.Itoa(mode) + "m" +} + +// DisableModifyOtherKeys disables the modifyOtherKeys mode. +// +// CSI > 4 ; 0 m +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +// See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys +// +// Deprecated: use [ResetModifyOtherKeys] instead. +const DisableModifyOtherKeys = "\x1b[>4;0m" + +// EnableModifyOtherKeys1 enables the modifyOtherKeys mode 1. +// +// CSI > 4 ; 1 m +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +// See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys +// +// Deprecated: use [SetModifyOtherKeys1] instead. +const EnableModifyOtherKeys1 = "\x1b[>4;1m" + +// EnableModifyOtherKeys2 enables the modifyOtherKeys mode 2. +// +// CSI > 4 ; 2 m +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +// See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys +// +// Deprecated: use [SetModifyOtherKeys2] instead. +const EnableModifyOtherKeys2 = "\x1b[>4;2m" + +// RequestModifyOtherKeys requests the modifyOtherKeys mode. +// +// CSI ? 4 m +// +// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ +// See: https://invisible-island.net/xterm/manpage/xterm.html#VT100-Widget-Resources:modifyOtherKeys +// +// Deprecated: use [QueryModifyOtherKeys] instead. +const RequestModifyOtherKeys = "\x1b[?4m" diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/LICENSE new file mode 100644 index 0000000..65a5654 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Charmbracelet, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/buffer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/buffer.go new file mode 100644 index 0000000..790d1f7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/buffer.go @@ -0,0 +1,473 @@ +package cellbuf + +import ( + "strings" + + "github.com/mattn/go-runewidth" + "github.com/rivo/uniseg" +) + +// NewCell returns a new cell. This is a convenience function that initializes a +// new cell with the given content. The cell's width is determined by the +// content using [runewidth.RuneWidth]. +// This will only account for the first combined rune in the content. If the +// content is empty, it will return an empty cell with a width of 0. +func NewCell(r rune, comb ...rune) (c *Cell) { + c = new(Cell) + c.Rune = r + c.Width = runewidth.RuneWidth(r) + for _, r := range comb { + if runewidth.RuneWidth(r) > 0 { + break + } + c.Comb = append(c.Comb, r) + } + c.Comb = comb + c.Width = runewidth.StringWidth(string(append([]rune{r}, comb...))) + return +} + +// NewCellString returns a new cell with the given string content. This is a +// convenience function that initializes a new cell with the given content. The +// cell's width is determined by the content using [runewidth.StringWidth]. +// This will only use the first combined rune in the string. If the string is +// empty, it will return an empty cell with a width of 0. +func NewCellString(s string) (c *Cell) { + c = new(Cell) + for i, r := range s { + if i == 0 { + c.Rune = r + // We only care about the first rune's width + c.Width = runewidth.RuneWidth(r) + } else { + if runewidth.RuneWidth(r) > 0 { + break + } + c.Comb = append(c.Comb, r) + } + } + return +} + +// NewGraphemeCell returns a new cell. This is a convenience function that +// initializes a new cell with the given content. The cell's width is determined +// by the content using [uniseg.FirstGraphemeClusterInString]. +// This is used when the content is a grapheme cluster i.e. a sequence of runes +// that form a single visual unit. +// This will only return the first grapheme cluster in the string. If the +// string is empty, it will return an empty cell with a width of 0. +func NewGraphemeCell(s string) (c *Cell) { + g, _, w, _ := uniseg.FirstGraphemeClusterInString(s, -1) + return newGraphemeCell(g, w) +} + +func newGraphemeCell(s string, w int) (c *Cell) { + c = new(Cell) + c.Width = w + for i, r := range s { + if i == 0 { + c.Rune = r + } else { + c.Comb = append(c.Comb, r) + } + } + return +} + +// Line represents a line in the terminal. +// A nil cell represents an blank cell, a cell with a space character and a +// width of 1. +// If a cell has no content and a width of 0, it is a placeholder for a wide +// cell. +type Line []*Cell + +// Width returns the width of the line. +func (l Line) Width() int { + return len(l) +} + +// Len returns the length of the line. +func (l Line) Len() int { + return len(l) +} + +// String returns the string representation of the line. Any trailing spaces +// are removed. +func (l Line) String() (s string) { + for _, c := range l { + if c == nil { + s += " " + } else if c.Empty() { + continue + } else { + s += c.String() + } + } + s = strings.TrimRight(s, " ") + return +} + +// At returns the cell at the given x position. +// If the cell does not exist, it returns nil. +func (l Line) At(x int) *Cell { + if x < 0 || x >= len(l) { + return nil + } + + c := l[x] + if c == nil { + newCell := BlankCell + return &newCell + } + + return c +} + +// Set sets the cell at the given x position. If a wide cell is given, it will +// set the cell and the following cells to [EmptyCell]. It returns true if the +// cell was set. +func (l Line) Set(x int, c *Cell) bool { + return l.set(x, c, true) +} + +func (l Line) set(x int, c *Cell, clone bool) bool { + width := l.Width() + if x < 0 || x >= width { + return false + } + + // When a wide cell is partially overwritten, we need + // to fill the rest of the cell with space cells to + // avoid rendering issues. + prev := l.At(x) + if prev != nil && prev.Width > 1 { + // Writing to the first wide cell + for j := 0; j < prev.Width && x+j < l.Width(); j++ { + l[x+j] = prev.Clone().Blank() + } + } else if prev != nil && prev.Width == 0 { + // Writing to wide cell placeholders + for j := 1; j < maxCellWidth && x-j >= 0; j++ { + wide := l.At(x - j) + if wide != nil && wide.Width > 1 && j < wide.Width { + for k := 0; k < wide.Width; k++ { + l[x-j+k] = wide.Clone().Blank() + } + break + } + } + } + + if clone && c != nil { + // Clone the cell if not nil. + c = c.Clone() + } + + if c != nil && x+c.Width > width { + // If the cell is too wide, we write blanks with the same style. + for i := 0; i < c.Width && x+i < width; i++ { + l[x+i] = c.Clone().Blank() + } + } else { + l[x] = c + + // Mark wide cells with an empty cell zero width + // We set the wide cell down below + if c != nil && c.Width > 1 { + for j := 1; j < c.Width && x+j < l.Width(); j++ { + var wide Cell + l[x+j] = &wide + } + } + } + + return true +} + +// Buffer is a 2D grid of cells representing a screen or terminal. +type Buffer struct { + // Lines holds the lines of the buffer. + Lines []Line +} + +// NewBuffer creates a new buffer with the given width and height. +// This is a convenience function that initializes a new buffer and resizes it. +func NewBuffer(width int, height int) *Buffer { + b := new(Buffer) + b.Resize(width, height) + return b +} + +// String returns the string representation of the buffer. +func (b *Buffer) String() (s string) { + for i, l := range b.Lines { + s += l.String() + if i < len(b.Lines)-1 { + s += "\r\n" + } + } + return +} + +// Line returns a pointer to the line at the given y position. +// If the line does not exist, it returns nil. +func (b *Buffer) Line(y int) Line { + if y < 0 || y >= len(b.Lines) { + return nil + } + return b.Lines[y] +} + +// Cell implements Screen. +func (b *Buffer) Cell(x int, y int) *Cell { + if y < 0 || y >= len(b.Lines) { + return nil + } + return b.Lines[y].At(x) +} + +// maxCellWidth is the maximum width a terminal cell can get. +const maxCellWidth = 4 + +// SetCell sets the cell at the given x, y position. +func (b *Buffer) SetCell(x, y int, c *Cell) bool { + return b.setCell(x, y, c, true) +} + +// setCell sets the cell at the given x, y position. This will always clone and +// allocates a new cell if c is not nil. +func (b *Buffer) setCell(x, y int, c *Cell, clone bool) bool { + if y < 0 || y >= len(b.Lines) { + return false + } + return b.Lines[y].set(x, c, clone) +} + +// Height implements Screen. +func (b *Buffer) Height() int { + return len(b.Lines) +} + +// Width implements Screen. +func (b *Buffer) Width() int { + if len(b.Lines) == 0 { + return 0 + } + return b.Lines[0].Width() +} + +// Bounds returns the bounds of the buffer. +func (b *Buffer) Bounds() Rectangle { + return Rect(0, 0, b.Width(), b.Height()) +} + +// Resize resizes the buffer to the given width and height. +func (b *Buffer) Resize(width int, height int) { + if width == 0 || height == 0 { + b.Lines = nil + return + } + + if width > b.Width() { + line := make(Line, width-b.Width()) + for i := range b.Lines { + b.Lines[i] = append(b.Lines[i], line...) + } + } else if width < b.Width() { + for i := range b.Lines { + b.Lines[i] = b.Lines[i][:width] + } + } + + if height > len(b.Lines) { + for i := len(b.Lines); i < height; i++ { + b.Lines = append(b.Lines, make(Line, width)) + } + } else if height < len(b.Lines) { + b.Lines = b.Lines[:height] + } +} + +// FillRect fills the buffer with the given cell and rectangle. +func (b *Buffer) FillRect(c *Cell, rect Rectangle) { + cellWidth := 1 + if c != nil && c.Width > 1 { + cellWidth = c.Width + } + for y := rect.Min.Y; y < rect.Max.Y; y++ { + for x := rect.Min.X; x < rect.Max.X; x += cellWidth { + b.setCell(x, y, c, false) //nolint:errcheck + } + } +} + +// Fill fills the buffer with the given cell and rectangle. +func (b *Buffer) Fill(c *Cell) { + b.FillRect(c, b.Bounds()) +} + +// Clear clears the buffer with space cells and rectangle. +func (b *Buffer) Clear() { + b.ClearRect(b.Bounds()) +} + +// ClearRect clears the buffer with space cells within the specified +// rectangles. Only cells within the rectangle's bounds are affected. +func (b *Buffer) ClearRect(rect Rectangle) { + b.FillRect(nil, rect) +} + +// InsertLine inserts n lines at the given line position, with the given +// optional cell, within the specified rectangles. If no rectangles are +// specified, it inserts lines in the entire buffer. Only cells within the +// rectangle's horizontal bounds are affected. Lines are pushed out of the +// rectangle bounds and lost. This follows terminal [ansi.IL] behavior. +// It returns the pushed out lines. +func (b *Buffer) InsertLine(y, n int, c *Cell) { + b.InsertLineRect(y, n, c, b.Bounds()) +} + +// InsertLineRect inserts new lines at the given line position, with the +// given optional cell, within the rectangle bounds. Only cells within the +// rectangle's horizontal bounds are affected. Lines are pushed out of the +// rectangle bounds and lost. This follows terminal [ansi.IL] behavior. +func (b *Buffer) InsertLineRect(y, n int, c *Cell, rect Rectangle) { + if n <= 0 || y < rect.Min.Y || y >= rect.Max.Y || y >= b.Height() { + return + } + + // Limit number of lines to insert to available space + if y+n > rect.Max.Y { + n = rect.Max.Y - y + } + + // Move existing lines down within the bounds + for i := rect.Max.Y - 1; i >= y+n; i-- { + for x := rect.Min.X; x < rect.Max.X; x++ { + // We don't need to clone c here because we're just moving lines down. + b.setCell(x, i, b.Lines[i-n][x], false) + } + } + + // Clear the newly inserted lines within bounds + for i := y; i < y+n; i++ { + for x := rect.Min.X; x < rect.Max.X; x++ { + b.setCell(x, i, c, true) + } + } +} + +// DeleteLineRect deletes lines at the given line position, with the given +// optional cell, within the rectangle bounds. Only cells within the +// rectangle's bounds are affected. Lines are shifted up within the bounds and +// new blank lines are created at the bottom. This follows terminal [ansi.DL] +// behavior. +func (b *Buffer) DeleteLineRect(y, n int, c *Cell, rect Rectangle) { + if n <= 0 || y < rect.Min.Y || y >= rect.Max.Y || y >= b.Height() { + return + } + + // Limit deletion count to available space in scroll region + if n > rect.Max.Y-y { + n = rect.Max.Y - y + } + + // Shift cells up within the bounds + for dst := y; dst < rect.Max.Y-n; dst++ { + src := dst + n + for x := rect.Min.X; x < rect.Max.X; x++ { + // We don't need to clone c here because we're just moving cells up. + // b.lines[dst][x] = b.lines[src][x] + b.setCell(x, dst, b.Lines[src][x], false) + } + } + + // Fill the bottom n lines with blank cells + for i := rect.Max.Y - n; i < rect.Max.Y; i++ { + for x := rect.Min.X; x < rect.Max.X; x++ { + b.setCell(x, i, c, true) + } + } +} + +// DeleteLine deletes n lines at the given line position, with the given +// optional cell, within the specified rectangles. If no rectangles are +// specified, it deletes lines in the entire buffer. +func (b *Buffer) DeleteLine(y, n int, c *Cell) { + b.DeleteLineRect(y, n, c, b.Bounds()) +} + +// InsertCell inserts new cells at the given position, with the given optional +// cell, within the specified rectangles. If no rectangles are specified, it +// inserts cells in the entire buffer. This follows terminal [ansi.ICH] +// behavior. +func (b *Buffer) InsertCell(x, y, n int, c *Cell) { + b.InsertCellRect(x, y, n, c, b.Bounds()) +} + +// InsertCellRect inserts new cells at the given position, with the given +// optional cell, within the rectangle bounds. Only cells within the +// rectangle's bounds are affected, following terminal [ansi.ICH] behavior. +func (b *Buffer) InsertCellRect(x, y, n int, c *Cell, rect Rectangle) { + if n <= 0 || y < rect.Min.Y || y >= rect.Max.Y || y >= b.Height() || + x < rect.Min.X || x >= rect.Max.X || x >= b.Width() { + return + } + + // Limit number of cells to insert to available space + if x+n > rect.Max.X { + n = rect.Max.X - x + } + + // Move existing cells within rectangle bounds to the right + for i := rect.Max.X - 1; i >= x+n && i-n >= rect.Min.X; i-- { + // We don't need to clone c here because we're just moving cells to the + // right. + // b.lines[y][i] = b.lines[y][i-n] + b.setCell(i, y, b.Lines[y][i-n], false) + } + + // Clear the newly inserted cells within rectangle bounds + for i := x; i < x+n && i < rect.Max.X; i++ { + b.setCell(i, y, c, true) + } +} + +// DeleteCell deletes cells at the given position, with the given optional +// cell, within the specified rectangles. If no rectangles are specified, it +// deletes cells in the entire buffer. This follows terminal [ansi.DCH] +// behavior. +func (b *Buffer) DeleteCell(x, y, n int, c *Cell) { + b.DeleteCellRect(x, y, n, c, b.Bounds()) +} + +// DeleteCellRect deletes cells at the given position, with the given +// optional cell, within the rectangle bounds. Only cells within the +// rectangle's bounds are affected, following terminal [ansi.DCH] behavior. +func (b *Buffer) DeleteCellRect(x, y, n int, c *Cell, rect Rectangle) { + if n <= 0 || y < rect.Min.Y || y >= rect.Max.Y || y >= b.Height() || + x < rect.Min.X || x >= rect.Max.X || x >= b.Width() { + return + } + + // Calculate how many positions we can actually delete + remainingCells := rect.Max.X - x + if n > remainingCells { + n = remainingCells + } + + // Shift the remaining cells to the left + for i := x; i < rect.Max.X-n; i++ { + if i+n < rect.Max.X { + // We don't need to clone c here because we're just moving cells to + // the left. + // b.lines[y][i] = b.lines[y][i+n] + b.setCell(i, y, b.Lines[y][i+n], false) + } + } + + // Fill the vacated positions with the given cell + for i := rect.Max.X - n; i < rect.Max.X; i++ { + b.setCell(i, y, c, true) + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/cell.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/cell.go new file mode 100644 index 0000000..991c919 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/cell.go @@ -0,0 +1,503 @@ +package cellbuf + +import ( + "github.com/charmbracelet/x/ansi" +) + +var ( + // BlankCell is a cell with a single space, width of 1, and no style or link. + BlankCell = Cell{Rune: ' ', Width: 1} + + // EmptyCell is just an empty cell used for comparisons and as a placeholder + // for wide cells. + EmptyCell = Cell{} +) + +// Cell represents a single cell in the terminal screen. +type Cell struct { + // The style of the cell. Nil style means no style. Zero value prints a + // reset sequence. + Style Style + + // Link is the hyperlink of the cell. + Link Link + + // Comb is the combining runes of the cell. This is nil if the cell is a + // single rune or if it's a zero width cell that is part of a wider cell. + Comb []rune + + // Width is the mono-space width of the grapheme cluster. + Width int + + // Rune is the main rune of the cell. This is zero if the cell is part of a + // wider cell. + Rune rune +} + +// Append appends runes to the cell without changing the width. This is useful +// when we want to use the cell to store escape sequences or other runes that +// don't affect the width of the cell. +func (c *Cell) Append(r ...rune) { + for i, r := range r { + if i == 0 && c.Rune == 0 { + c.Rune = r + continue + } + c.Comb = append(c.Comb, r) + } +} + +// String returns the string content of the cell excluding any styles, links, +// and escape sequences. +func (c Cell) String() string { + if c.Rune == 0 { + return "" + } + if len(c.Comb) == 0 { + return string(c.Rune) + } + return string(append([]rune{c.Rune}, c.Comb...)) +} + +// Equal returns whether the cell is equal to the other cell. +func (c *Cell) Equal(o *Cell) bool { + return o != nil && + c.Width == o.Width && + c.Rune == o.Rune && + runesEqual(c.Comb, o.Comb) && + c.Style.Equal(&o.Style) && + c.Link.Equal(&o.Link) +} + +// Empty returns whether the cell is an empty cell. An empty cell is a cell +// with a width of 0, a rune of 0, and no combining runes. +func (c Cell) Empty() bool { + return c.Width == 0 && + c.Rune == 0 && + len(c.Comb) == 0 +} + +// Reset resets the cell to the default state zero value. +func (c *Cell) Reset() { + c.Rune = 0 + c.Comb = nil + c.Width = 0 + c.Style.Reset() + c.Link.Reset() +} + +// Clear returns whether the cell consists of only attributes that don't +// affect appearance of a space character. +func (c *Cell) Clear() bool { + return c.Rune == ' ' && len(c.Comb) == 0 && c.Width == 1 && c.Style.Clear() && c.Link.Empty() +} + +// Clone returns a copy of the cell. +func (c *Cell) Clone() (n *Cell) { + n = new(Cell) + *n = *c + return +} + +// Blank makes the cell a blank cell by setting the rune to a space, comb to +// nil, and the width to 1. +func (c *Cell) Blank() *Cell { + c.Rune = ' ' + c.Comb = nil + c.Width = 1 + return c +} + +// Link represents a hyperlink in the terminal screen. +type Link struct { + URL string + Params string +} + +// String returns a string representation of the hyperlink. +func (h Link) String() string { + return h.URL +} + +// Reset resets the hyperlink to the default state zero value. +func (h *Link) Reset() { + h.URL = "" + h.Params = "" +} + +// Equal returns whether the hyperlink is equal to the other hyperlink. +func (h *Link) Equal(o *Link) bool { + return o != nil && h.URL == o.URL && h.Params == o.Params +} + +// Empty returns whether the hyperlink is empty. +func (h Link) Empty() bool { + return h.URL == "" && h.Params == "" +} + +// AttrMask is a bitmask for text attributes that can change the look of text. +// These attributes can be combined to create different styles. +type AttrMask uint8 + +// These are the available text attributes that can be combined to create +// different styles. +const ( + BoldAttr AttrMask = 1 << iota + FaintAttr + ItalicAttr + SlowBlinkAttr + RapidBlinkAttr + ReverseAttr + ConcealAttr + StrikethroughAttr + + ResetAttr AttrMask = 0 +) + +// UnderlineStyle is the style of underline to use for text. +type UnderlineStyle = ansi.UnderlineStyle + +// These are the available underline styles. +const ( + NoUnderline = ansi.NoUnderlineStyle + SingleUnderline = ansi.SingleUnderlineStyle + DoubleUnderline = ansi.DoubleUnderlineStyle + CurlyUnderline = ansi.CurlyUnderlineStyle + DottedUnderline = ansi.DottedUnderlineStyle + DashedUnderline = ansi.DashedUnderlineStyle +) + +// Style represents the Style of a cell. +type Style struct { + Fg ansi.Color + Bg ansi.Color + Ul ansi.Color + Attrs AttrMask + UlStyle UnderlineStyle +} + +// Sequence returns the ANSI sequence that sets the style. +func (s Style) Sequence() string { + if s.Empty() { + return ansi.ResetStyle + } + + var b ansi.Style + + if s.Attrs != 0 { + if s.Attrs&BoldAttr != 0 { + b = b.Bold() + } + if s.Attrs&FaintAttr != 0 { + b = b.Faint() + } + if s.Attrs&ItalicAttr != 0 { + b = b.Italic() + } + if s.Attrs&SlowBlinkAttr != 0 { + b = b.SlowBlink() + } + if s.Attrs&RapidBlinkAttr != 0 { + b = b.RapidBlink() + } + if s.Attrs&ReverseAttr != 0 { + b = b.Reverse() + } + if s.Attrs&ConcealAttr != 0 { + b = b.Conceal() + } + if s.Attrs&StrikethroughAttr != 0 { + b = b.Strikethrough() + } + } + if s.UlStyle != NoUnderline { + switch s.UlStyle { + case SingleUnderline: + b = b.Underline() + case DoubleUnderline: + b = b.DoubleUnderline() + case CurlyUnderline: + b = b.CurlyUnderline() + case DottedUnderline: + b = b.DottedUnderline() + case DashedUnderline: + b = b.DashedUnderline() + } + } + if s.Fg != nil { + b = b.ForegroundColor(s.Fg) + } + if s.Bg != nil { + b = b.BackgroundColor(s.Bg) + } + if s.Ul != nil { + b = b.UnderlineColor(s.Ul) + } + + return b.String() +} + +// DiffSequence returns the ANSI sequence that sets the style as a diff from +// another style. +func (s Style) DiffSequence(o Style) string { + if o.Empty() { + return s.Sequence() + } + + var b ansi.Style + + if !colorEqual(s.Fg, o.Fg) { + b = b.ForegroundColor(s.Fg) + } + + if !colorEqual(s.Bg, o.Bg) { + b = b.BackgroundColor(s.Bg) + } + + if !colorEqual(s.Ul, o.Ul) { + b = b.UnderlineColor(s.Ul) + } + + var ( + noBlink bool + isNormal bool + ) + + if s.Attrs != o.Attrs { + if s.Attrs&BoldAttr != o.Attrs&BoldAttr { + if s.Attrs&BoldAttr != 0 { + b = b.Bold() + } else if !isNormal { + isNormal = true + b = b.NormalIntensity() + } + } + if s.Attrs&FaintAttr != o.Attrs&FaintAttr { + if s.Attrs&FaintAttr != 0 { + b = b.Faint() + } else if !isNormal { + b = b.NormalIntensity() + } + } + if s.Attrs&ItalicAttr != o.Attrs&ItalicAttr { + if s.Attrs&ItalicAttr != 0 { + b = b.Italic() + } else { + b = b.NoItalic() + } + } + if s.Attrs&SlowBlinkAttr != o.Attrs&SlowBlinkAttr { + if s.Attrs&SlowBlinkAttr != 0 { + b = b.SlowBlink() + } else if !noBlink { + noBlink = true + b = b.NoBlink() + } + } + if s.Attrs&RapidBlinkAttr != o.Attrs&RapidBlinkAttr { + if s.Attrs&RapidBlinkAttr != 0 { + b = b.RapidBlink() + } else if !noBlink { + b = b.NoBlink() + } + } + if s.Attrs&ReverseAttr != o.Attrs&ReverseAttr { + if s.Attrs&ReverseAttr != 0 { + b = b.Reverse() + } else { + b = b.NoReverse() + } + } + if s.Attrs&ConcealAttr != o.Attrs&ConcealAttr { + if s.Attrs&ConcealAttr != 0 { + b = b.Conceal() + } else { + b = b.NoConceal() + } + } + if s.Attrs&StrikethroughAttr != o.Attrs&StrikethroughAttr { + if s.Attrs&StrikethroughAttr != 0 { + b = b.Strikethrough() + } else { + b = b.NoStrikethrough() + } + } + } + + if s.UlStyle != o.UlStyle { + b = b.UnderlineStyle(s.UlStyle) + } + + return b.String() +} + +// Equal returns true if the style is equal to the other style. +func (s *Style) Equal(o *Style) bool { + return s.Attrs == o.Attrs && + s.UlStyle == o.UlStyle && + colorEqual(s.Fg, o.Fg) && + colorEqual(s.Bg, o.Bg) && + colorEqual(s.Ul, o.Ul) +} + +func colorEqual(c, o ansi.Color) bool { + if c == nil && o == nil { + return true + } + if c == nil || o == nil { + return false + } + cr, cg, cb, ca := c.RGBA() + or, og, ob, oa := o.RGBA() + return cr == or && cg == og && cb == ob && ca == oa +} + +// Bold sets the bold attribute. +func (s *Style) Bold(v bool) *Style { + if v { + s.Attrs |= BoldAttr + } else { + s.Attrs &^= BoldAttr + } + return s +} + +// Faint sets the faint attribute. +func (s *Style) Faint(v bool) *Style { + if v { + s.Attrs |= FaintAttr + } else { + s.Attrs &^= FaintAttr + } + return s +} + +// Italic sets the italic attribute. +func (s *Style) Italic(v bool) *Style { + if v { + s.Attrs |= ItalicAttr + } else { + s.Attrs &^= ItalicAttr + } + return s +} + +// SlowBlink sets the slow blink attribute. +func (s *Style) SlowBlink(v bool) *Style { + if v { + s.Attrs |= SlowBlinkAttr + } else { + s.Attrs &^= SlowBlinkAttr + } + return s +} + +// RapidBlink sets the rapid blink attribute. +func (s *Style) RapidBlink(v bool) *Style { + if v { + s.Attrs |= RapidBlinkAttr + } else { + s.Attrs &^= RapidBlinkAttr + } + return s +} + +// Reverse sets the reverse attribute. +func (s *Style) Reverse(v bool) *Style { + if v { + s.Attrs |= ReverseAttr + } else { + s.Attrs &^= ReverseAttr + } + return s +} + +// Conceal sets the conceal attribute. +func (s *Style) Conceal(v bool) *Style { + if v { + s.Attrs |= ConcealAttr + } else { + s.Attrs &^= ConcealAttr + } + return s +} + +// Strikethrough sets the strikethrough attribute. +func (s *Style) Strikethrough(v bool) *Style { + if v { + s.Attrs |= StrikethroughAttr + } else { + s.Attrs &^= StrikethroughAttr + } + return s +} + +// UnderlineStyle sets the underline style. +func (s *Style) UnderlineStyle(style UnderlineStyle) *Style { + s.UlStyle = style + return s +} + +// Underline sets the underline attribute. +// This is a syntactic sugar for [UnderlineStyle]. +func (s *Style) Underline(v bool) *Style { + if v { + return s.UnderlineStyle(SingleUnderline) + } + return s.UnderlineStyle(NoUnderline) +} + +// Foreground sets the foreground color. +func (s *Style) Foreground(c ansi.Color) *Style { + s.Fg = c + return s +} + +// Background sets the background color. +func (s *Style) Background(c ansi.Color) *Style { + s.Bg = c + return s +} + +// UnderlineColor sets the underline color. +func (s *Style) UnderlineColor(c ansi.Color) *Style { + s.Ul = c + return s +} + +// Reset resets the style to default. +func (s *Style) Reset() *Style { + s.Fg = nil + s.Bg = nil + s.Ul = nil + s.Attrs = ResetAttr + s.UlStyle = NoUnderline + return s +} + +// Empty returns true if the style is empty. +func (s *Style) Empty() bool { + return s.Fg == nil && s.Bg == nil && s.Ul == nil && s.Attrs == ResetAttr && s.UlStyle == NoUnderline +} + +// Clear returns whether the style consists of only attributes that don't +// affect appearance of a space character. +func (s *Style) Clear() bool { + return s.UlStyle == NoUnderline && + s.Attrs&^(BoldAttr|FaintAttr|ItalicAttr|SlowBlinkAttr|RapidBlinkAttr) == 0 && + s.Fg == nil && + s.Bg == nil && + s.Ul == nil +} + +func runesEqual(a, b []rune) bool { + if len(a) != len(b) { + return false + } + for i, r := range a { + if r != b[i] { + return false + } + } + return true +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/errors.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/errors.go new file mode 100644 index 0000000..64258fe --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/errors.go @@ -0,0 +1,6 @@ +package cellbuf + +import "errors" + +// ErrOutOfBounds is returned when the given x, y position is out of bounds. +var ErrOutOfBounds = errors.New("out of bounds") diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/geom.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/geom.go new file mode 100644 index 0000000..c12e6fb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/geom.go @@ -0,0 +1,21 @@ +package cellbuf + +import ( + "image" +) + +// Position represents an x, y position. +type Position = image.Point + +// Pos is a shorthand for Position{X: x, Y: y}. +func Pos(x, y int) Position { + return image.Pt(x, y) +} + +// Rectange represents a rectangle. +type Rectangle = image.Rectangle + +// Rect is a shorthand for Rectangle. +func Rect(x, y, w, h int) Rectangle { + return image.Rect(x, y, x+w, y+h) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hardscroll.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hardscroll.go new file mode 100644 index 0000000..402ac06 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hardscroll.go @@ -0,0 +1,272 @@ +package cellbuf + +import ( + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// scrollOptimize optimizes the screen to transform the old buffer into the new +// buffer. +func (s *Screen) scrollOptimize() { + height := s.newbuf.Height() + if s.oldnum == nil || len(s.oldnum) < height { + s.oldnum = make([]int, height) + } + + // Calculate the indices + s.updateHashmap() + if len(s.hashtab) < height { + return + } + + // Pass 1 - from top to bottom scrolling up + for i := 0; i < height; { + for i < height && (s.oldnum[i] == newIndex || s.oldnum[i] <= i) { + i++ + } + if i >= height { + break + } + + shift := s.oldnum[i] - i // shift > 0 + start := i + + i++ + for i < height && s.oldnum[i] != newIndex && s.oldnum[i]-i == shift { + i++ + } + end := i - 1 + shift + + if !s.scrolln(shift, start, end, height-1) { + continue + } + } + + // Pass 2 - from bottom to top scrolling down + for i := height - 1; i >= 0; { + for i >= 0 && (s.oldnum[i] == newIndex || s.oldnum[i] >= i) { + i-- + } + if i < 0 { + break + } + + shift := s.oldnum[i] - i // shift < 0 + end := i + + i-- + for i >= 0 && s.oldnum[i] != newIndex && s.oldnum[i]-i == shift { + i-- + } + + start := i + 1 - (-shift) + if !s.scrolln(shift, start, end, height-1) { + continue + } + } +} + +// scrolln scrolls the screen up by n lines. +func (s *Screen) scrolln(n, top, bot, maxY int) (v bool) { //nolint:unparam + const ( + nonDestScrollRegion = false + memoryBelow = false + ) + + blank := s.clearBlank() + if n > 0 { + // Scroll up (forward) + v = s.scrollUp(n, top, bot, 0, maxY, blank) + if !v { + s.buf.WriteString(ansi.SetTopBottomMargins(top+1, bot+1)) + + // XXX: How should we handle this in inline mode when not using alternate screen? + s.cur.X, s.cur.Y = -1, -1 + v = s.scrollUp(n, top, bot, top, bot, blank) + s.buf.WriteString(ansi.SetTopBottomMargins(1, maxY+1)) + s.cur.X, s.cur.Y = -1, -1 + } + + if !v { + v = s.scrollIdl(n, top, bot-n+1, blank) + } + + // Clear newly shifted-in lines. + if v && + (nonDestScrollRegion || (memoryBelow && bot == maxY)) { + if bot == maxY { + s.move(0, bot-n+1) + s.clearToBottom(nil) + } else { + for i := 0; i < n; i++ { + s.move(0, bot-i) + s.clearToEnd(nil, false) + } + } + } + } else if n < 0 { + // Scroll down (backward) + v = s.scrollDown(-n, top, bot, 0, maxY, blank) + if !v { + s.buf.WriteString(ansi.SetTopBottomMargins(top+1, bot+1)) + + // XXX: How should we handle this in inline mode when not using alternate screen? + s.cur.X, s.cur.Y = -1, -1 + v = s.scrollDown(-n, top, bot, top, bot, blank) + s.buf.WriteString(ansi.SetTopBottomMargins(1, maxY+1)) + s.cur.X, s.cur.Y = -1, -1 + + if !v { + v = s.scrollIdl(-n, bot+n+1, top, blank) + } + + // Clear newly shifted-in lines. + if v && + (nonDestScrollRegion || (memoryBelow && top == 0)) { + for i := 0; i < -n; i++ { + s.move(0, top+i) + s.clearToEnd(nil, false) + } + } + } + } + + if !v { + return + } + + s.scrollBuffer(s.curbuf, n, top, bot, blank) + + // shift hash values too, they can be reused + s.scrollOldhash(n, top, bot) + + return true +} + +// scrollBuffer scrolls the buffer by n lines. +func (s *Screen) scrollBuffer(b *Buffer, n, top, bot int, blank *Cell) { + if top < 0 || bot < top || bot >= b.Height() { + // Nothing to scroll + return + } + + if n < 0 { + // shift n lines downwards + limit := top - n + for line := bot; line >= limit && line >= 0 && line >= top; line-- { + copy(b.Lines[line], b.Lines[line+n]) + } + for line := top; line < limit && line <= b.Height()-1 && line <= bot; line++ { + b.FillRect(blank, Rect(0, line, b.Width(), 1)) + } + } + + if n > 0 { + // shift n lines upwards + limit := bot - n + for line := top; line <= limit && line <= b.Height()-1 && line <= bot; line++ { + copy(b.Lines[line], b.Lines[line+n]) + } + for line := bot; line > limit && line >= 0 && line >= top; line-- { + b.FillRect(blank, Rect(0, line, b.Width(), 1)) + } + } + + s.touchLine(b.Width(), b.Height(), top, bot-top+1, true) +} + +// touchLine marks the line as touched. +func (s *Screen) touchLine(width, height, y, n int, changed bool) { + if n < 0 || y < 0 || y >= height { + return // Nothing to touch + } + + for i := y; i < y+n && i < height; i++ { + if changed { + s.touch[i] = lineData{firstCell: 0, lastCell: width - 1} + } else { + delete(s.touch, i) + } + } +} + +// scrollUp scrolls the screen up by n lines. +func (s *Screen) scrollUp(n, top, bot, minY, maxY int, blank *Cell) bool { + if n == 1 && top == minY && bot == maxY { + s.move(0, bot) + s.updatePen(blank) + s.buf.WriteByte('\n') + } else if n == 1 && bot == maxY { + s.move(0, top) + s.updatePen(blank) + s.buf.WriteString(ansi.DeleteLine(1)) + } else if top == minY && bot == maxY { + if s.xtermLike { + s.move(0, bot) + } else { + s.move(0, top) + } + s.updatePen(blank) + if s.xtermLike { + s.buf.WriteString(ansi.ScrollUp(n)) + } else { + s.buf.WriteString(strings.Repeat("\n", n)) + } + } else if bot == maxY { + s.move(0, top) + s.updatePen(blank) + s.buf.WriteString(ansi.DeleteLine(n)) + } else { + return false + } + return true +} + +// scrollDown scrolls the screen down by n lines. +func (s *Screen) scrollDown(n, top, bot, minY, maxY int, blank *Cell) bool { + if n == 1 && top == minY && bot == maxY { + s.move(0, top) + s.updatePen(blank) + s.buf.WriteString(ansi.ReverseIndex) + } else if n == 1 && bot == maxY { + s.move(0, top) + s.updatePen(blank) + s.buf.WriteString(ansi.InsertLine(1)) + } else if top == minY && bot == maxY { + s.move(0, top) + s.updatePen(blank) + if s.xtermLike { + s.buf.WriteString(ansi.ScrollDown(n)) + } else { + s.buf.WriteString(strings.Repeat(ansi.ReverseIndex, n)) + } + } else if bot == maxY { + s.move(0, top) + s.updatePen(blank) + s.buf.WriteString(ansi.InsertLine(n)) + } else { + return false + } + return true +} + +// scrollIdl scrolls the screen n lines by using [ansi.DL] at del and using +// [ansi.IL] at ins. +func (s *Screen) scrollIdl(n, del, ins int, blank *Cell) bool { + if n < 0 { + return false + } + + // Delete lines + s.move(0, del) + s.updatePen(blank) + s.buf.WriteString(ansi.DeleteLine(n)) + + // Insert lines + s.move(0, ins) + s.updatePen(blank) + s.buf.WriteString(ansi.InsertLine(n)) + + return true +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hashmap.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hashmap.go new file mode 100644 index 0000000..0d25b54 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/hashmap.go @@ -0,0 +1,301 @@ +package cellbuf + +import ( + "github.com/charmbracelet/x/ansi" +) + +// hash returns the hash value of a [Line]. +func hash(l Line) (h uint64) { + for _, c := range l { + var r rune + if c == nil { + r = ansi.SP + } else { + r = c.Rune + } + h += (h << 5) + uint64(r) + } + return +} + +// hashmap represents a single [Line] hash. +type hashmap struct { + value uint64 + oldcount, newcount int + oldindex, newindex int +} + +// The value used to indicate lines created by insertions and scrolls. +const newIndex = -1 + +// updateHashmap updates the hashmap with the new hash value. +func (s *Screen) updateHashmap() { + height := s.newbuf.Height() + if len(s.oldhash) >= height && len(s.newhash) >= height { + // rehash changed lines + for i := 0; i < height; i++ { + _, ok := s.touch[i] + if ok { + s.oldhash[i] = hash(s.curbuf.Line(i)) + s.newhash[i] = hash(s.newbuf.Line(i)) + } + } + } else { + // rehash all + if len(s.oldhash) != height { + s.oldhash = make([]uint64, height) + } + if len(s.newhash) != height { + s.newhash = make([]uint64, height) + } + for i := 0; i < height; i++ { + s.oldhash[i] = hash(s.curbuf.Line(i)) + s.newhash[i] = hash(s.newbuf.Line(i)) + } + } + + s.hashtab = make([]hashmap, height*2) + for i := 0; i < height; i++ { + hashval := s.oldhash[i] + + // Find matching hash or empty slot + idx := 0 + for idx < len(s.hashtab) && s.hashtab[idx].value != 0 { + if s.hashtab[idx].value == hashval { + break + } + idx++ + } + + s.hashtab[idx].value = hashval // in case this is a new hash + s.hashtab[idx].oldcount++ + s.hashtab[idx].oldindex = i + } + for i := 0; i < height; i++ { + hashval := s.newhash[i] + + // Find matching hash or empty slot + idx := 0 + for idx < len(s.hashtab) && s.hashtab[idx].value != 0 { + if s.hashtab[idx].value == hashval { + break + } + idx++ + } + + s.hashtab[idx].value = hashval // in case this is a new hash + s.hashtab[idx].newcount++ + s.hashtab[idx].newindex = i + + s.oldnum[i] = newIndex // init old indices slice + } + + // Mark line pair corresponding to unique hash pairs. + for i := 0; i < len(s.hashtab) && s.hashtab[i].value != 0; i++ { + hsp := &s.hashtab[i] + if hsp.oldcount == 1 && hsp.newcount == 1 && hsp.oldindex != hsp.newindex { + s.oldnum[hsp.newindex] = hsp.oldindex + } + } + + s.growHunks() + + // Eliminate bad or impossible shifts. This includes removing those hunks + // which could not grow because of conflicts, as well those which are to be + // moved too far, they are likely to destroy more than carry. + for i := 0; i < height; { + var start, shift, size int + for i < height && s.oldnum[i] == newIndex { + i++ + } + if i >= height { + break + } + start = i + shift = s.oldnum[i] - i + i++ + for i < height && s.oldnum[i] != newIndex && s.oldnum[i]-i == shift { + i++ + } + size = i - start + if size < 3 || size+min(size/8, 2) < abs(shift) { + for start < i { + s.oldnum[start] = newIndex + start++ + } + } + } + + // After clearing invalid hunks, try grow the rest. + s.growHunks() +} + +// scrollOldhash +func (s *Screen) scrollOldhash(n, top, bot int) { + if len(s.oldhash) == 0 { + return + } + + size := bot - top + 1 - abs(n) + if n > 0 { + // Move existing hashes up + copy(s.oldhash[top:], s.oldhash[top+n:top+n+size]) + // Recalculate hashes for newly shifted-in lines + for i := bot; i > bot-n; i-- { + s.oldhash[i] = hash(s.curbuf.Line(i)) + } + } else { + // Move existing hashes down + copy(s.oldhash[top-n:], s.oldhash[top:top+size]) + // Recalculate hashes for newly shifted-in lines + for i := top; i < top-n; i++ { + s.oldhash[i] = hash(s.curbuf.Line(i)) + } + } +} + +func (s *Screen) growHunks() { + var ( + backLimit int // limits for cells to fill + backRefLimit int // limit for references + i int + nextHunk int + ) + + height := s.newbuf.Height() + for i < height && s.oldnum[i] == newIndex { + i++ + } + for ; i < height; i = nextHunk { + var ( + forwardLimit int + forwardRefLimit int + end int + start = i + shift = s.oldnum[i] - i + ) + + // get forward limit + i = start + 1 + for i < height && + s.oldnum[i] != newIndex && + s.oldnum[i]-i == shift { + i++ + } + + end = i + for i < height && s.oldnum[i] == newIndex { + i++ + } + + nextHunk = i + forwardLimit = i + if i >= height || s.oldnum[i] >= i { + forwardRefLimit = i + } else { + forwardRefLimit = s.oldnum[i] + } + + i = start - 1 + + // grow back + if shift < 0 { + backLimit = backRefLimit + (-shift) + } + for i >= backLimit { + if s.newhash[i] == s.oldhash[i+shift] || + s.costEffective(i+shift, i, shift < 0) { + s.oldnum[i] = i + shift + } else { + break + } + i-- + } + + i = end + // grow forward + if shift > 0 { + forwardLimit = forwardRefLimit - shift + } + for i < forwardLimit { + if s.newhash[i] == s.oldhash[i+shift] || + s.costEffective(i+shift, i, shift > 0) { + s.oldnum[i] = i + shift + } else { + break + } + i++ + } + + backLimit = i + backRefLimit = backLimit + if shift > 0 { + backRefLimit += shift + } + } +} + +// costEffective returns true if the cost of moving line 'from' to line 'to' seems to be +// cost effective. 'blank' indicates whether the line 'to' would become blank. +func (s *Screen) costEffective(from, to int, blank bool) bool { + if from == to { + return false + } + + newFrom := s.oldnum[from] + if newFrom == newIndex { + newFrom = from + } + + // On the left side of >= is the cost before moving. On the right side -- + // cost after moving. + + // Calculate costs before moving. + var costBeforeMove int + if blank { + // Cost of updating blank line at destination. + costBeforeMove = s.updateCostBlank(s.newbuf.Line(to)) + } else { + // Cost of updating exiting line at destination. + costBeforeMove = s.updateCost(s.curbuf.Line(to), s.newbuf.Line(to)) + } + + // Add cost of updating source line + costBeforeMove += s.updateCost(s.curbuf.Line(newFrom), s.newbuf.Line(from)) + + // Calculate costs after moving. + var costAfterMove int + if newFrom == from { + // Source becomes blank after move + costAfterMove = s.updateCostBlank(s.newbuf.Line(from)) + } else { + // Source gets updated from another line + costAfterMove = s.updateCost(s.curbuf.Line(newFrom), s.newbuf.Line(from)) + } + + // Add cost of moving source line to destination + costAfterMove += s.updateCost(s.curbuf.Line(from), s.newbuf.Line(to)) + + // Return true if moving is cost effective (costs less or equal) + return costBeforeMove >= costAfterMove +} + +func (s *Screen) updateCost(from, to Line) (cost int) { + var fidx, tidx int + for i := s.newbuf.Width() - 1; i > 0; i, fidx, tidx = i-1, fidx+1, tidx+1 { + if !cellEqual(from.At(fidx), to.At(tidx)) { + cost++ + } + } + return +} + +func (s *Screen) updateCostBlank(to Line) (cost int) { + var tidx int + for i := s.newbuf.Width() - 1; i > 0; i, tidx = i-1, tidx+1 { + if !cellEqual(nil, to.At(tidx)) { + cost++ + } + } + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/link.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/link.go new file mode 100644 index 0000000..112f8e8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/link.go @@ -0,0 +1,14 @@ +package cellbuf + +import ( + "github.com/charmbracelet/colorprofile" +) + +// Convert converts a hyperlink to respect the given color profile. +func ConvertLink(h Link, p colorprofile.Profile) Link { + if p == colorprofile.NoTTY { + return Link{} + } + + return h +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/screen.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/screen.go new file mode 100644 index 0000000..963b9ca --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/screen.go @@ -0,0 +1,1457 @@ +package cellbuf + +import ( + "bytes" + "errors" + "io" + "os" + "strings" + "sync" + + "github.com/charmbracelet/colorprofile" + "github.com/charmbracelet/x/ansi" + "github.com/charmbracelet/x/term" +) + +// ErrInvalidDimensions is returned when the dimensions of a window are invalid +// for the operation. +var ErrInvalidDimensions = errors.New("invalid dimensions") + +// notLocal returns whether the coordinates are not considered local movement +// using the defined thresholds. +// This takes the number of columns, and the coordinates of the current and +// target positions. +func notLocal(cols, fx, fy, tx, ty int) bool { + // The typical distance for a [ansi.CUP] sequence. Anything less than this + // is considered local movement. + const longDist = 8 - 1 + return (tx > longDist) && + (tx < cols-1-longDist) && + (abs(ty-fy)+abs(tx-fx) > longDist) +} + +// relativeCursorMove returns the relative cursor movement sequence using one or two +// of the following sequences [ansi.CUU], [ansi.CUD], [ansi.CUF], [ansi.CUB], +// [ansi.VPA], [ansi.HPA]. +// When overwrite is true, this will try to optimize the sequence by using the +// screen cells values to move the cursor instead of using escape sequences. +func relativeCursorMove(s *Screen, fx, fy, tx, ty int, overwrite, useTabs, useBackspace bool) string { + var seq strings.Builder + + width, height := s.newbuf.Width(), s.newbuf.Height() + if ty != fy { + var yseq string + if s.xtermLike && !s.opts.RelativeCursor { + yseq = ansi.VerticalPositionAbsolute(ty + 1) + } + + // OPTIM: Use [ansi.LF] and [ansi.ReverseIndex] as optimizations. + + if ty > fy { + n := ty - fy + if cud := ansi.CursorDown(n); yseq == "" || len(cud) < len(yseq) { + yseq = cud + } + shouldScroll := !s.opts.AltScreen && fy+n >= s.scrollHeight + if lf := strings.Repeat("\n", n); shouldScroll || (fy+n < height && len(lf) < len(yseq)) { + // TODO: Ensure we're not unintentionally scrolling the screen down. + yseq = lf + s.scrollHeight = max(s.scrollHeight, fy+n) + } + } else if ty < fy { + n := fy - ty + if cuu := ansi.CursorUp(n); yseq == "" || len(cuu) < len(yseq) { + yseq = cuu + } + if n == 1 && fy-1 > 0 { + // TODO: Ensure we're not unintentionally scrolling the screen up. + yseq = ansi.ReverseIndex + } + } + + seq.WriteString(yseq) + } + + if tx != fx { + var xseq string + if s.xtermLike && !s.opts.RelativeCursor { + xseq = ansi.HorizontalPositionAbsolute(tx + 1) + } + + if tx > fx { + n := tx - fx + if useTabs { + var tabs int + var col int + for col = fx; s.tabs.Next(col) <= tx; col = s.tabs.Next(col) { + tabs++ + if col == s.tabs.Next(col) || col >= width-1 { + break + } + } + + if tabs > 0 { + cht := ansi.CursorHorizontalForwardTab(tabs) + tab := strings.Repeat("\t", tabs) + if false && s.xtermLike && len(cht) < len(tab) { + // TODO: The linux console and some terminals such as + // Alacritty don't support [ansi.CHT]. Enable this when + // we have a way to detect this, or after 5 years when + // we're sure everyone has updated their terminals :P + seq.WriteString(cht) + } else { + seq.WriteString(tab) + } + + n = tx - col + fx = col + } + } + + if cuf := ansi.CursorForward(n); xseq == "" || len(cuf) < len(xseq) { + xseq = cuf + } + + // If we have no attribute and style changes, overwrite is cheaper. + var ovw string + if overwrite && ty >= 0 { + for i := 0; i < n; i++ { + cell := s.newbuf.Cell(fx+i, ty) + if cell != nil && cell.Width > 0 { + i += cell.Width - 1 + if !cell.Style.Equal(&s.cur.Style) || !cell.Link.Equal(&s.cur.Link) { + overwrite = false + break + } + } + } + } + + if overwrite && ty >= 0 { + for i := 0; i < n; i++ { + cell := s.newbuf.Cell(fx+i, ty) + if cell != nil && cell.Width > 0 { + ovw += cell.String() + i += cell.Width - 1 + } else { + ovw += " " + } + } + } + + if overwrite && len(ovw) < len(xseq) { + xseq = ovw + } + } else if tx < fx { + n := fx - tx + if useTabs && s.xtermLike { + // VT100 does not support backward tabs [ansi.CBT]. + + col := fx + + var cbt int // cursor backward tabs count + for s.tabs.Prev(col) >= tx { + col = s.tabs.Prev(col) + cbt++ + if col == s.tabs.Prev(col) || col <= 0 { + break + } + } + + if cbt > 0 { + seq.WriteString(ansi.CursorBackwardTab(cbt)) + n = col - tx + } + } + + if cub := ansi.CursorBackward(n); xseq == "" || len(cub) < len(xseq) { + xseq = cub + } + + if useBackspace && n < len(xseq) { + xseq = strings.Repeat("\b", n) + } + } + + seq.WriteString(xseq) + } + + return seq.String() +} + +// moveCursor moves and returns the cursor movement sequence to move the cursor +// to the specified position. +// When overwrite is true, this will try to optimize the sequence by using the +// screen cells values to move the cursor instead of using escape sequences. +func moveCursor(s *Screen, x, y int, overwrite bool) (seq string) { + fx, fy := s.cur.X, s.cur.Y + + if !s.opts.RelativeCursor { + // Method #0: Use [ansi.CUP] if the distance is long. + seq = ansi.CursorPosition(x+1, y+1) + if fx == -1 || fy == -1 || notLocal(s.newbuf.Width(), fx, fy, x, y) { + return + } + } + + // Optimize based on options. + trials := 0 + if s.opts.HardTabs { + trials |= 2 // 0b10 in binary + } + if s.opts.Backspace { + trials |= 1 // 0b01 in binary + } + + // Try all possible combinations of hard tabs and backspace optimizations. + for i := 0; i <= trials; i++ { + // Skip combinations that are not enabled. + if i & ^trials != 0 { + continue + } + + useHardTabs := i&2 != 0 + useBackspace := i&1 != 0 + + // Method #1: Use local movement sequences. + nseq := relativeCursorMove(s, fx, fy, x, y, overwrite, useHardTabs, useBackspace) + if (i == 0 && len(seq) == 0) || len(nseq) < len(seq) { + seq = nseq + } + + // Method #2: Use [ansi.CR] and local movement sequences. + nseq = "\r" + relativeCursorMove(s, 0, fy, x, y, overwrite, useHardTabs, useBackspace) + if len(nseq) < len(seq) { + seq = nseq + } + + if !s.opts.RelativeCursor { + // Method #3: Use [ansi.CursorHomePosition] and local movement sequences. + nseq = ansi.CursorHomePosition + relativeCursorMove(s, 0, 0, x, y, overwrite, useHardTabs, useBackspace) + if len(nseq) < len(seq) { + seq = nseq + } + } + } + + return +} + +// moveCursor moves the cursor to the specified position. +func (s *Screen) moveCursor(x, y int, overwrite bool) { + if !s.opts.AltScreen && s.cur.X == -1 && s.cur.Y == -1 { + // First cursor movement in inline mode, move the cursor to the first + // column before moving to the target position. + s.buf.WriteByte('\r') //nolint:errcheck + s.cur.X, s.cur.Y = 0, 0 + } + s.buf.WriteString(moveCursor(s, x, y, overwrite)) //nolint:errcheck + s.cur.X, s.cur.Y = x, y +} + +func (s *Screen) move(x, y int) { + // XXX: Make sure we use the max height and width of the buffer in case + // we're in the middle of a resize operation. + width := max(s.newbuf.Width(), s.curbuf.Width()) + height := max(s.newbuf.Height(), s.curbuf.Height()) + + if width > 0 && x >= width { + // Handle autowrap + y += (x / width) + x %= width + } + + // XXX: Disable styles if there's any + // Some move operations such as [ansi.LF] can apply styles to the new + // cursor position, thus, we need to reset the styles before moving the + // cursor. + blank := s.clearBlank() + resetPen := y != s.cur.Y && !blank.Equal(&BlankCell) + if resetPen { + s.updatePen(nil) + } + + // Reset wrap around (phantom cursor) state + if s.atPhantom { + s.cur.X = 0 + s.buf.WriteByte('\r') //nolint:errcheck + s.atPhantom = false // reset phantom cell state + } + + // TODO: Investigate if we need to handle this case and/or if we need the + // following code. + // + // if width > 0 && s.cur.X >= width { + // l := (s.cur.X + 1) / width + // + // s.cur.Y += l + // if height > 0 && s.cur.Y >= height { + // l -= s.cur.Y - height - 1 + // } + // + // if l > 0 { + // s.cur.X = 0 + // s.buf.WriteString("\r" + strings.Repeat("\n", l)) //nolint:errcheck + // } + // } + + if height > 0 { + if s.cur.Y > height-1 { + s.cur.Y = height - 1 + } + if y > height-1 { + y = height - 1 + } + } + + if x == s.cur.X && y == s.cur.Y { + // We give up later because we need to run checks for the phantom cell + // and others before we can determine if we can give up. + return + } + + // We set the new cursor in [Screen.moveCursor]. + s.moveCursor(x, y, true) // Overwrite cells if possible +} + +// Cursor represents a terminal Cursor. +type Cursor struct { + Style + Link + Position +} + +// ScreenOptions are options for the screen. +type ScreenOptions struct { + // Term is the terminal type to use when writing to the screen. When empty, + // `$TERM` is used from [os.Getenv]. + Term string + // Profile is the color profile to use when writing to the screen. + Profile colorprofile.Profile + // RelativeCursor is whether to use relative cursor movements. This is + // useful when alt-screen is not used or when using inline mode. + RelativeCursor bool + // AltScreen is whether to use the alternate screen buffer. + AltScreen bool + // ShowCursor is whether to show the cursor. + ShowCursor bool + // HardTabs is whether to use hard tabs to optimize cursor movements. + HardTabs bool + // Backspace is whether to use backspace characters to move the cursor. + Backspace bool +} + +// lineData represents the metadata for a line. +type lineData struct { + // first and last changed cell indices + firstCell, lastCell int + // old index used for scrolling + oldIndex int //nolint:unused +} + +// Screen represents the terminal screen. +type Screen struct { + w io.Writer + buf *bytes.Buffer // buffer for writing to the screen + curbuf *Buffer // the current buffer + newbuf *Buffer // the new buffer + tabs *TabStops + touch map[int]lineData + queueAbove []string // the queue of strings to write above the screen + oldhash, newhash []uint64 // the old and new hash values for each line + hashtab []hashmap // the hashmap table + oldnum []int // old indices from previous hash + cur, saved Cursor // the current and saved cursors + opts ScreenOptions + mu sync.Mutex + method ansi.Method + scrollHeight int // keeps track of how many lines we've scrolled down (inline mode) + altScreenMode bool // whether alternate screen mode is enabled + cursorHidden bool // whether text cursor mode is enabled + clear bool // whether to force clear the screen + xtermLike bool // whether to use xterm-like optimizations, otherwise, it uses vt100 only + queuedText bool // whether we have queued non-zero width text queued up + atPhantom bool // whether the cursor is out of bounds and at a phantom cell +} + +// SetMethod sets the method used to calculate the width of cells. +func (s *Screen) SetMethod(method ansi.Method) { + s.method = method +} + +// UseBackspaces sets whether to use backspace characters to move the cursor. +func (s *Screen) UseBackspaces(v bool) { + s.opts.Backspace = v +} + +// UseHardTabs sets whether to use hard tabs to optimize cursor movements. +func (s *Screen) UseHardTabs(v bool) { + s.opts.HardTabs = v +} + +// SetColorProfile sets the color profile to use when writing to the screen. +func (s *Screen) SetColorProfile(p colorprofile.Profile) { + s.opts.Profile = p +} + +// SetRelativeCursor sets whether to use relative cursor movements. +func (s *Screen) SetRelativeCursor(v bool) { + s.opts.RelativeCursor = v +} + +// EnterAltScreen enters the alternate screen buffer. +func (s *Screen) EnterAltScreen() { + s.opts.AltScreen = true + s.clear = true + s.saved = s.cur +} + +// ExitAltScreen exits the alternate screen buffer. +func (s *Screen) ExitAltScreen() { + s.opts.AltScreen = false + s.clear = true + s.cur = s.saved +} + +// ShowCursor shows the cursor. +func (s *Screen) ShowCursor() { + s.opts.ShowCursor = true +} + +// HideCursor hides the cursor. +func (s *Screen) HideCursor() { + s.opts.ShowCursor = false +} + +// Bounds implements Window. +func (s *Screen) Bounds() Rectangle { + // Always return the new buffer bounds. + return s.newbuf.Bounds() +} + +// Cell implements Window. +func (s *Screen) Cell(x int, y int) *Cell { + return s.newbuf.Cell(x, y) +} + +// Redraw forces a full redraw of the screen. +func (s *Screen) Redraw() { + s.mu.Lock() + s.clear = true + s.mu.Unlock() +} + +// Clear clears the screen with blank cells. This is a convenience method for +// [Screen.Fill] with a nil cell. +func (s *Screen) Clear() bool { + return s.ClearRect(s.newbuf.Bounds()) +} + +// ClearRect clears the given rectangle with blank cells. This is a convenience +// method for [Screen.FillRect] with a nil cell. +func (s *Screen) ClearRect(r Rectangle) bool { + return s.FillRect(nil, r) +} + +// SetCell implements Window. +func (s *Screen) SetCell(x int, y int, cell *Cell) (v bool) { + s.mu.Lock() + defer s.mu.Unlock() + cellWidth := 1 + if cell != nil { + cellWidth = cell.Width + } + if prev := s.curbuf.Cell(x, y); !cellEqual(prev, cell) { + chg, ok := s.touch[y] + if !ok { + chg = lineData{firstCell: x, lastCell: x + cellWidth} + } else { + chg.firstCell = min(chg.firstCell, x) + chg.lastCell = max(chg.lastCell, x+cellWidth) + } + s.touch[y] = chg + } + + return s.newbuf.SetCell(x, y, cell) +} + +// Fill implements Window. +func (s *Screen) Fill(cell *Cell) bool { + return s.FillRect(cell, s.newbuf.Bounds()) +} + +// FillRect implements Window. +func (s *Screen) FillRect(cell *Cell, r Rectangle) bool { + s.mu.Lock() + defer s.mu.Unlock() + s.newbuf.FillRect(cell, r) + for i := r.Min.Y; i < r.Max.Y; i++ { + s.touch[i] = lineData{firstCell: r.Min.X, lastCell: r.Max.X} + } + return true +} + +// isXtermLike returns whether the terminal is xterm-like. This means that the +// terminal supports ECMA-48 and ANSI X3.64 escape sequences. +// TODO: Should this be a lookup table into each $TERM terminfo database? Like +// we could keep a map of ANSI escape sequence to terminfo capability name and +// check if the database supports the escape sequence. Instead of keeping a +// list of terminal names here. +func isXtermLike(termtype string) (v bool) { + parts := strings.Split(termtype, "-") + if len(parts) == 0 { + return + } + + switch parts[0] { + case + "alacritty", + "contour", + "foot", + "ghostty", + "kitty", + "linux", + "rio", + "screen", + "st", + "tmux", + "wezterm", + "xterm": + v = true + } + + return +} + +// NewScreen creates a new Screen. +func NewScreen(w io.Writer, width, height int, opts *ScreenOptions) (s *Screen) { + s = new(Screen) + s.w = w + if opts != nil { + s.opts = *opts + } + + if s.opts.Term == "" { + s.opts.Term = os.Getenv("TERM") + } + + if width <= 0 || height <= 0 { + if f, ok := w.(term.File); ok { + width, height, _ = term.GetSize(f.Fd()) + } + } + if width < 0 { + width = 0 + } + if height < 0 { + height = 0 + } + + s.buf = new(bytes.Buffer) + s.xtermLike = isXtermLike(s.opts.Term) + s.curbuf = NewBuffer(width, height) + s.newbuf = NewBuffer(width, height) + s.cur = Cursor{Position: Pos(-1, -1)} // start at -1 to force a move + s.saved = s.cur + s.reset() + + return +} + +// Width returns the width of the screen. +func (s *Screen) Width() int { + return s.newbuf.Width() +} + +// Height returns the height of the screen. +func (s *Screen) Height() int { + return s.newbuf.Height() +} + +// cellEqual returns whether the two cells are equal. A nil cell is considered +// a [BlankCell]. +func cellEqual(a, b *Cell) bool { + if a == b { + return true + } + if a == nil { + a = &BlankCell + } + if b == nil { + b = &BlankCell + } + return a.Equal(b) +} + +// putCell draws a cell at the current cursor position. +func (s *Screen) putCell(cell *Cell) { + width, height := s.newbuf.Width(), s.newbuf.Height() + if s.opts.AltScreen && s.cur.X == width-1 && s.cur.Y == height-1 { + s.putCellLR(cell) + } else { + s.putAttrCell(cell) + } +} + +// wrapCursor wraps the cursor to the next line. +// +//nolint:unused +func (s *Screen) wrapCursor() { + const autoRightMargin = true + if autoRightMargin { + // Assume we have auto wrap mode enabled. + s.cur.X = 0 + s.cur.Y++ + } else { + s.cur.X-- + } +} + +func (s *Screen) putAttrCell(cell *Cell) { + if cell != nil && cell.Empty() { + // XXX: Zero width cells are special and should not be written to the + // screen no matter what other attributes they have. + // Zero width cells are used for wide characters that are split into + // multiple cells. + return + } + + if cell == nil { + cell = s.clearBlank() + } + + // We're at pending wrap state (phantom cell), incoming cell should + // wrap. + if s.atPhantom { + s.wrapCursor() + s.atPhantom = false + } + + s.updatePen(cell) + s.buf.WriteRune(cell.Rune) //nolint:errcheck + for _, c := range cell.Comb { + s.buf.WriteRune(c) //nolint:errcheck + } + + s.cur.X += cell.Width + + if cell.Width > 0 { + s.queuedText = true + } + + if s.cur.X >= s.newbuf.Width() { + s.atPhantom = true + } +} + +// putCellLR draws a cell at the lower right corner of the screen. +func (s *Screen) putCellLR(cell *Cell) { + // Optimize for the lower right corner cell. + curX := s.cur.X + if cell == nil || !cell.Empty() { + s.buf.WriteString(ansi.ResetAutoWrapMode) //nolint:errcheck + s.putAttrCell(cell) + // Writing to lower-right corner cell should not wrap. + s.atPhantom = false + s.cur.X = curX + s.buf.WriteString(ansi.SetAutoWrapMode) //nolint:errcheck + } +} + +// updatePen updates the cursor pen styles. +func (s *Screen) updatePen(cell *Cell) { + if cell == nil { + cell = &BlankCell + } + + if s.opts.Profile != 0 { + // Downsample colors to the given color profile. + cell.Style = ConvertStyle(cell.Style, s.opts.Profile) + cell.Link = ConvertLink(cell.Link, s.opts.Profile) + } + + if !cell.Style.Equal(&s.cur.Style) { + seq := cell.Style.DiffSequence(s.cur.Style) + if cell.Style.Empty() && len(seq) > len(ansi.ResetStyle) { + seq = ansi.ResetStyle + } + s.buf.WriteString(seq) //nolint:errcheck + s.cur.Style = cell.Style + } + if !cell.Link.Equal(&s.cur.Link) { + s.buf.WriteString(ansi.SetHyperlink(cell.Link.URL, cell.Link.Params)) //nolint:errcheck + s.cur.Link = cell.Link + } +} + +// emitRange emits a range of cells to the buffer. It it equivalent to calling +// [Screen.putCell] for each cell in the range. This is optimized to use +// [ansi.ECH] and [ansi.REP]. +// Returns whether the cursor is at the end of interval or somewhere in the +// middle. +func (s *Screen) emitRange(line Line, n int) (eoi bool) { + for n > 0 { + var count int + for n > 1 && !cellEqual(line.At(0), line.At(1)) { + s.putCell(line.At(0)) + line = line[1:] + n-- + } + + cell0 := line[0] + if n == 1 { + s.putCell(cell0) + return false + } + + count = 2 + for count < n && cellEqual(line.At(count), cell0) { + count++ + } + + ech := ansi.EraseCharacter(count) + cup := ansi.CursorPosition(s.cur.X+count, s.cur.Y) + rep := ansi.RepeatPreviousCharacter(count) + if s.xtermLike && count > len(ech)+len(cup) && cell0 != nil && cell0.Clear() { + s.updatePen(cell0) + s.buf.WriteString(ech) //nolint:errcheck + + // If this is the last cell, we don't need to move the cursor. + if count < n { + s.move(s.cur.X+count, s.cur.Y) + } else { + return true // cursor in the middle + } + } else if s.xtermLike && count > len(rep) && + (cell0 == nil || (len(cell0.Comb) == 0 && cell0.Rune < 256)) { + // We only support ASCII characters. Most terminals will handle + // non-ASCII characters correctly, but some might not, ahem xterm. + // + // NOTE: [ansi.REP] only repeats the last rune and won't work + // if the last cell contains multiple runes. + + wrapPossible := s.cur.X+count >= s.newbuf.Width() + repCount := count + if wrapPossible { + repCount-- + } + + s.updatePen(cell0) + s.putCell(cell0) + repCount-- // cell0 is a single width cell ASCII character + + s.buf.WriteString(ansi.RepeatPreviousCharacter(repCount)) //nolint:errcheck + s.cur.X += repCount + if wrapPossible { + s.putCell(cell0) + } + } else { + for i := 0; i < count; i++ { + s.putCell(line.At(i)) + } + } + + line = line[clamp(count, 0, len(line)):] + n -= count + } + + return +} + +// putRange puts a range of cells from the old line to the new line. +// Returns whether the cursor is at the end of interval or somewhere in the +// middle. +func (s *Screen) putRange(oldLine, newLine Line, y, start, end int) (eoi bool) { + inline := min(len(ansi.CursorPosition(start+1, y+1)), + min(len(ansi.HorizontalPositionAbsolute(start+1)), + len(ansi.CursorForward(start+1)))) + if (end - start + 1) > inline { + var j, same int + for j, same = start, 0; j <= end; j++ { + oldCell, newCell := oldLine.At(j), newLine.At(j) + if same == 0 && oldCell != nil && oldCell.Empty() { + continue + } + if cellEqual(oldCell, newCell) { + same++ + } else { + if same > end-start { + s.emitRange(newLine[start:], j-same-start) + s.move(j, y) + start = j + } + same = 0 + } + } + + i := s.emitRange(newLine[start:], j-same-start) + + // Always return 1 for the next [Screen.move] after a [Screen.putRange] if + // we found identical characters at end of interval. + if same == 0 { + return i + } + return true + } + + return s.emitRange(newLine[start:], end-start+1) +} + +// clearToEnd clears the screen from the current cursor position to the end of +// line. +func (s *Screen) clearToEnd(blank *Cell, force bool) { //nolint:unparam + if s.cur.Y >= 0 { + curline := s.curbuf.Line(s.cur.Y) + for j := s.cur.X; j < s.curbuf.Width(); j++ { + if j >= 0 { + c := curline.At(j) + if !cellEqual(c, blank) { + curline.Set(j, blank) + force = true + } + } + } + } + + if force { + s.updatePen(blank) + count := s.newbuf.Width() - s.cur.X + if s.el0Cost() <= count { + s.buf.WriteString(ansi.EraseLineRight) //nolint:errcheck + } else { + for i := 0; i < count; i++ { + s.putCell(blank) + } + } + } +} + +// clearBlank returns a blank cell based on the current cursor background color. +func (s *Screen) clearBlank() *Cell { + c := BlankCell + if !s.cur.Style.Empty() || !s.cur.Link.Empty() { + c.Style = s.cur.Style + c.Link = s.cur.Link + } + return &c +} + +// insertCells inserts the count cells pointed by the given line at the current +// cursor position. +func (s *Screen) insertCells(line Line, count int) { + if s.xtermLike { + // Use [ansi.ICH] as an optimization. + s.buf.WriteString(ansi.InsertCharacter(count)) //nolint:errcheck + } else { + // Otherwise, use [ansi.IRM] mode. + s.buf.WriteString(ansi.SetInsertReplaceMode) //nolint:errcheck + } + + for i := 0; count > 0; i++ { + s.putAttrCell(line[i]) + count-- + } + + if !s.xtermLike { + s.buf.WriteString(ansi.ResetInsertReplaceMode) //nolint:errcheck + } +} + +// el0Cost returns the cost of using [ansi.EL] 0 i.e. [ansi.EraseLineRight]. If +// this terminal supports background color erase, it can be cheaper to use +// [ansi.EL] 0 i.e. [ansi.EraseLineRight] to clear +// trailing spaces. +func (s *Screen) el0Cost() int { + if s.xtermLike { + return 0 + } + return len(ansi.EraseLineRight) +} + +// transformLine transforms the given line in the current window to the +// corresponding line in the new window. It uses [ansi.ICH] and [ansi.DCH] to +// insert or delete characters. +func (s *Screen) transformLine(y int) { + var firstCell, oLastCell, nLastCell int // first, old last, new last index + oldLine := s.curbuf.Line(y) + newLine := s.newbuf.Line(y) + + // Find the first changed cell in the line + var lineChanged bool + for i := 0; i < s.newbuf.Width(); i++ { + if !cellEqual(newLine.At(i), oldLine.At(i)) { + lineChanged = true + break + } + } + + const ceolStandoutGlitch = false + if ceolStandoutGlitch && lineChanged { + s.move(0, y) + s.clearToEnd(nil, false) + s.putRange(oldLine, newLine, y, 0, s.newbuf.Width()-1) + } else { + blank := newLine.At(0) + + // It might be cheaper to clear leading spaces with [ansi.EL] 1 i.e. + // [ansi.EraseLineLeft]. + if blank == nil || blank.Clear() { + var oFirstCell, nFirstCell int + for oFirstCell = 0; oFirstCell < s.curbuf.Width(); oFirstCell++ { + if !cellEqual(oldLine.At(oFirstCell), blank) { + break + } + } + for nFirstCell = 0; nFirstCell < s.newbuf.Width(); nFirstCell++ { + if !cellEqual(newLine.At(nFirstCell), blank) { + break + } + } + + if nFirstCell == oFirstCell { + firstCell = nFirstCell + + // Find the first differing cell + for firstCell < s.newbuf.Width() && + cellEqual(oldLine.At(firstCell), newLine.At(firstCell)) { + firstCell++ + } + } else if oFirstCell > nFirstCell { + firstCell = nFirstCell + } else if oFirstCell < nFirstCell { + firstCell = oFirstCell + el1Cost := len(ansi.EraseLineLeft) + if el1Cost < nFirstCell-oFirstCell { + if nFirstCell >= s.newbuf.Width() { + s.move(0, y) + s.updatePen(blank) + s.buf.WriteString(ansi.EraseLineRight) //nolint:errcheck + } else { + s.move(nFirstCell-1, y) + s.updatePen(blank) + s.buf.WriteString(ansi.EraseLineLeft) //nolint:errcheck + } + + for firstCell < nFirstCell { + oldLine.Set(firstCell, blank) + firstCell++ + } + } + } + } else { + // Find the first differing cell + for firstCell < s.newbuf.Width() && cellEqual(newLine.At(firstCell), oldLine.At(firstCell)) { + firstCell++ + } + } + + // If we didn't find one, we're done + if firstCell >= s.newbuf.Width() { + return + } + + blank = newLine.At(s.newbuf.Width() - 1) + if blank != nil && !blank.Clear() { + // Find the last differing cell + nLastCell = s.newbuf.Width() - 1 + for nLastCell > firstCell && cellEqual(newLine.At(nLastCell), oldLine.At(nLastCell)) { + nLastCell-- + } + + if nLastCell >= firstCell { + s.move(firstCell, y) + s.putRange(oldLine, newLine, y, firstCell, nLastCell) + if firstCell < len(oldLine) && firstCell < len(newLine) { + copy(oldLine[firstCell:], newLine[firstCell:]) + } else { + copy(oldLine, newLine) + } + } + + return + } + + // Find last non-blank cell in the old line. + oLastCell = s.curbuf.Width() - 1 + for oLastCell > firstCell && cellEqual(oldLine.At(oLastCell), blank) { + oLastCell-- + } + + // Find last non-blank cell in the new line. + nLastCell = s.newbuf.Width() - 1 + for nLastCell > firstCell && cellEqual(newLine.At(nLastCell), blank) { + nLastCell-- + } + + if nLastCell == firstCell && s.el0Cost() < oLastCell-nLastCell { + s.move(firstCell, y) + if !cellEqual(newLine.At(firstCell), blank) { + s.putCell(newLine.At(firstCell)) + } + s.clearToEnd(blank, false) + } else if nLastCell != oLastCell && + !cellEqual(newLine.At(nLastCell), oldLine.At(oLastCell)) { + s.move(firstCell, y) + if oLastCell-nLastCell > s.el0Cost() { + if s.putRange(oldLine, newLine, y, firstCell, nLastCell) { + s.move(nLastCell+1, y) + } + s.clearToEnd(blank, false) + } else { + n := max(nLastCell, oLastCell) + s.putRange(oldLine, newLine, y, firstCell, n) + } + } else { + nLastNonBlank := nLastCell + oLastNonBlank := oLastCell + + // Find the last cells that really differ. + // Can be -1 if no cells differ. + for cellEqual(newLine.At(nLastCell), oldLine.At(oLastCell)) { + if !cellEqual(newLine.At(nLastCell-1), oldLine.At(oLastCell-1)) { + break + } + nLastCell-- + oLastCell-- + if nLastCell == -1 || oLastCell == -1 { + break + } + } + + n := min(oLastCell, nLastCell) + if n >= firstCell { + s.move(firstCell, y) + s.putRange(oldLine, newLine, y, firstCell, n) + } + + if oLastCell < nLastCell { + m := max(nLastNonBlank, oLastNonBlank) + if n != 0 { + for n > 0 { + wide := newLine.At(n + 1) + if wide == nil || !wide.Empty() { + break + } + n-- + oLastCell-- + } + } else if n >= firstCell && newLine.At(n) != nil && newLine.At(n).Width > 1 { + next := newLine.At(n + 1) + for next != nil && next.Empty() { + n++ + oLastCell++ + } + } + + s.move(n+1, y) + ichCost := 3 + nLastCell - oLastCell + if s.xtermLike && (nLastCell < nLastNonBlank || ichCost > (m-n)) { + s.putRange(oldLine, newLine, y, n+1, m) + } else { + s.insertCells(newLine[n+1:], nLastCell-oLastCell) + } + } else if oLastCell > nLastCell { + s.move(n+1, y) + dchCost := 3 + oLastCell - nLastCell + if dchCost > len(ansi.EraseLineRight)+nLastNonBlank-(n+1) { + if s.putRange(oldLine, newLine, y, n+1, nLastNonBlank) { + s.move(nLastNonBlank+1, y) + } + s.clearToEnd(blank, false) + } else { + s.updatePen(blank) + s.deleteCells(oLastCell - nLastCell) + } + } + } + } + + // Update the old line with the new line + if firstCell < len(oldLine) && firstCell < len(newLine) { + copy(oldLine[firstCell:], newLine[firstCell:]) + } else { + copy(oldLine, newLine) + } +} + +// deleteCells deletes the count cells at the current cursor position and moves +// the rest of the line to the left. This is equivalent to [ansi.DCH]. +func (s *Screen) deleteCells(count int) { + // [ansi.DCH] will shift in cells from the right margin so we need to + // ensure that they are the right style. + s.buf.WriteString(ansi.DeleteCharacter(count)) //nolint:errcheck +} + +// clearToBottom clears the screen from the current cursor position to the end +// of the screen. +func (s *Screen) clearToBottom(blank *Cell) { + row, col := s.cur.Y, s.cur.X + if row < 0 { + row = 0 + } + + s.updatePen(blank) + s.buf.WriteString(ansi.EraseScreenBelow) //nolint:errcheck + // Clear the rest of the current line + s.curbuf.ClearRect(Rect(col, row, s.curbuf.Width()-col, 1)) + // Clear everything below the current line + s.curbuf.ClearRect(Rect(0, row+1, s.curbuf.Width(), s.curbuf.Height()-row-1)) +} + +// clearBottom tests if clearing the end of the screen would satisfy part of +// the screen update. Scan backwards through lines in the screen checking if +// each is blank and one or more are changed. +// It returns the top line. +func (s *Screen) clearBottom(total int) (top int) { + if total <= 0 { + return + } + + top = total + last := s.newbuf.Width() + blank := s.clearBlank() + canClearWithBlank := blank == nil || blank.Clear() + + if canClearWithBlank { + var row int + for row = total - 1; row >= 0; row-- { + oldLine := s.curbuf.Line(row) + newLine := s.newbuf.Line(row) + + var col int + ok := true + for col = 0; ok && col < last; col++ { + ok = cellEqual(newLine.At(col), blank) + } + if !ok { + break + } + + for col = 0; ok && col < last; col++ { + ok = len(oldLine) == last && cellEqual(oldLine.At(col), blank) + } + if !ok { + top = row + } + } + + if top < total { + s.move(0, top-1) // top is 1-based + s.clearToBottom(blank) + if s.oldhash != nil && s.newhash != nil && + row < len(s.oldhash) && row < len(s.newhash) { + for row := top; row < s.newbuf.Height(); row++ { + s.oldhash[row] = s.newhash[row] + } + } + } + } + + return +} + +// clearScreen clears the screen and put cursor at home. +func (s *Screen) clearScreen(blank *Cell) { + s.updatePen(blank) + s.buf.WriteString(ansi.CursorHomePosition) //nolint:errcheck + s.buf.WriteString(ansi.EraseEntireScreen) //nolint:errcheck + s.cur.X, s.cur.Y = 0, 0 + s.curbuf.Fill(blank) +} + +// clearBelow clears everything below and including the row. +func (s *Screen) clearBelow(blank *Cell, row int) { + s.move(0, row) + s.clearToBottom(blank) +} + +// clearUpdate forces a screen redraw. +func (s *Screen) clearUpdate() { + blank := s.clearBlank() + var nonEmpty int + if s.opts.AltScreen { + // XXX: We're using the maximum height of the two buffers to ensure + // we write newly added lines to the screen in [Screen.transformLine]. + nonEmpty = max(s.curbuf.Height(), s.newbuf.Height()) + s.clearScreen(blank) + } else { + nonEmpty = s.newbuf.Height() + s.clearBelow(blank, 0) + } + nonEmpty = s.clearBottom(nonEmpty) + for i := 0; i < nonEmpty; i++ { + s.transformLine(i) + } +} + +// Flush flushes the buffer to the screen. +func (s *Screen) Flush() (err error) { + s.mu.Lock() + defer s.mu.Unlock() + return s.flush() +} + +func (s *Screen) flush() (err error) { + // Write the buffer + if s.buf.Len() > 0 { + _, err = s.w.Write(s.buf.Bytes()) //nolint:errcheck + if err == nil { + s.buf.Reset() + } + } + + return +} + +// Render renders changes of the screen to the internal buffer. Call +// [Screen.Flush] to flush pending changes to the screen. +func (s *Screen) Render() { + s.mu.Lock() + s.render() + s.mu.Unlock() +} + +func (s *Screen) render() { + // Do we need to render anything? + if s.opts.AltScreen == s.altScreenMode && + !s.opts.ShowCursor == s.cursorHidden && + !s.clear && + len(s.touch) == 0 && + len(s.queueAbove) == 0 { + return + } + + // TODO: Investigate whether this is necessary. Theoretically, terminals + // can add/remove tab stops and we should be able to handle that. We could + // use [ansi.DECTABSR] to read the tab stops, but that's not implemented in + // most terminals :/ + // // Are we using hard tabs? If so, ensure tabs are using the + // // default interval using [ansi.DECST8C]. + // if s.opts.HardTabs && !s.initTabs { + // s.buf.WriteString(ansi.SetTabEvery8Columns) + // s.initTabs = true + // } + + // Do we need alt-screen mode? + if s.opts.AltScreen != s.altScreenMode { + if s.opts.AltScreen { + s.buf.WriteString(ansi.SetAltScreenSaveCursorMode) + } else { + s.buf.WriteString(ansi.ResetAltScreenSaveCursorMode) + } + s.altScreenMode = s.opts.AltScreen + } + + // Do we need text cursor mode? + if !s.opts.ShowCursor != s.cursorHidden { + s.cursorHidden = !s.opts.ShowCursor + if s.cursorHidden { + s.buf.WriteString(ansi.HideCursor) + } + } + + // Do we have queued strings to write above the screen? + if len(s.queueAbove) > 0 { + // TODO: Use scrolling region if available. + // TODO: Use [Screen.Write] [io.Writer] interface. + + // We need to scroll the screen up by the number of lines in the queue. + // We can't use [ansi.SU] because we want the cursor to move down until + // it reaches the bottom of the screen. + s.move(0, s.newbuf.Height()-1) + s.buf.WriteString(strings.Repeat("\n", len(s.queueAbove))) + s.cur.Y += len(s.queueAbove) + // XXX: Now go to the top of the screen, insert new lines, and write + // the queued strings. It is important to use [Screen.moveCursor] + // instead of [Screen.move] because we don't want to perform any checks + // on the cursor position. + s.moveCursor(0, 0, false) + s.buf.WriteString(ansi.InsertLine(len(s.queueAbove))) + for _, line := range s.queueAbove { + s.buf.WriteString(line + "\r\n") + } + + // Clear the queue + s.queueAbove = s.queueAbove[:0] + } + + var nonEmpty int + + // XXX: In inline mode, after a screen resize, we need to clear the extra + // lines at the bottom of the screen. This is because in inline mode, we + // don't use the full screen height and the current buffer size might be + // larger than the new buffer size. + partialClear := !s.opts.AltScreen && s.cur.X != -1 && s.cur.Y != -1 && + s.curbuf.Width() == s.newbuf.Width() && + s.curbuf.Height() > 0 && + s.curbuf.Height() > s.newbuf.Height() + + if !s.clear && partialClear { + s.clearBelow(nil, s.newbuf.Height()-1) + } + + if s.clear { + s.clearUpdate() + s.clear = false + } else if len(s.touch) > 0 { + if s.opts.AltScreen { + // Optimize scrolling for the alternate screen buffer. + // TODO: Should we optimize for inline mode as well? If so, we need + // to know the actual cursor position to use [ansi.DECSTBM]. + s.scrollOptimize() + } + + var changedLines int + var i int + + if s.opts.AltScreen { + nonEmpty = min(s.curbuf.Height(), s.newbuf.Height()) + } else { + nonEmpty = s.newbuf.Height() + } + + nonEmpty = s.clearBottom(nonEmpty) + for i = 0; i < nonEmpty; i++ { + _, ok := s.touch[i] + if ok { + s.transformLine(i) + changedLines++ + } + } + } + + // Sync windows and screen + s.touch = make(map[int]lineData, s.newbuf.Height()) + + if s.curbuf.Width() != s.newbuf.Width() || s.curbuf.Height() != s.newbuf.Height() { + // Resize the old buffer to match the new buffer. + _, oldh := s.curbuf.Width(), s.curbuf.Height() + s.curbuf.Resize(s.newbuf.Width(), s.newbuf.Height()) + // Sync new lines to old lines + for i := oldh - 1; i < s.newbuf.Height(); i++ { + copy(s.curbuf.Line(i), s.newbuf.Line(i)) + } + } + + s.updatePen(nil) // nil indicates a blank cell with no styles + + // Do we have enough changes to justify toggling the cursor? + if s.buf.Len() > 1 && s.opts.ShowCursor && !s.cursorHidden && s.queuedText { + nb := new(bytes.Buffer) + nb.Grow(s.buf.Len() + len(ansi.HideCursor) + len(ansi.ShowCursor)) + nb.WriteString(ansi.HideCursor) + nb.Write(s.buf.Bytes()) + nb.WriteString(ansi.ShowCursor) + *s.buf = *nb + } + + s.queuedText = false +} + +// Close writes the final screen update and resets the screen. +func (s *Screen) Close() (err error) { + s.mu.Lock() + defer s.mu.Unlock() + + s.render() + s.updatePen(nil) + // Go to the bottom of the screen + s.move(0, s.newbuf.Height()-1) + + if s.altScreenMode { + s.buf.WriteString(ansi.ResetAltScreenSaveCursorMode) + s.altScreenMode = false + } + + if s.cursorHidden { + s.buf.WriteString(ansi.ShowCursor) + s.cursorHidden = false + } + + // Write the buffer + err = s.flush() + if err != nil { + return + } + + s.reset() + return +} + +// reset resets the screen to its initial state. +func (s *Screen) reset() { + s.scrollHeight = 0 + s.cursorHidden = false + s.altScreenMode = false + s.touch = make(map[int]lineData, s.newbuf.Height()) + if s.curbuf != nil { + s.curbuf.Clear() + } + if s.newbuf != nil { + s.newbuf.Clear() + } + s.buf.Reset() + s.tabs = DefaultTabStops(s.newbuf.Width()) + s.oldhash, s.newhash = nil, nil + + // We always disable HardTabs when termtype is "linux". + if strings.HasPrefix(s.opts.Term, "linux") { + s.opts.HardTabs = false + } +} + +// Resize resizes the screen. +func (s *Screen) Resize(width, height int) bool { + oldw := s.newbuf.Width() + oldh := s.newbuf.Height() + + if s.opts.AltScreen || width != oldw { + // We only clear the whole screen if the width changes. Adding/removing + // rows is handled by the [Screen.render] and [Screen.transformLine] + // methods. + s.clear = true + } + + // Clear new columns and lines + if width > oldh { + s.ClearRect(Rect(max(oldw-1, 0), 0, width-oldw, height)) + } else if width < oldw { + s.ClearRect(Rect(max(width-1, 0), 0, oldw-width, height)) + } + + if height > oldh { + s.ClearRect(Rect(0, max(oldh-1, 0), width, height-oldh)) + } else if height < oldh { + s.ClearRect(Rect(0, max(height-1, 0), width, oldh-height)) + } + + s.mu.Lock() + s.newbuf.Resize(width, height) + s.tabs.Resize(width) + s.oldhash, s.newhash = nil, nil + s.scrollHeight = 0 // reset scroll lines + s.mu.Unlock() + + return true +} + +// MoveTo moves the cursor to the given position. +func (s *Screen) MoveTo(x, y int) { + s.mu.Lock() + s.move(x, y) + s.mu.Unlock() +} + +// InsertAbove inserts string above the screen. The inserted string is not +// managed by the screen. This does nothing when alternate screen mode is +// enabled. +func (s *Screen) InsertAbove(str string) { + if s.opts.AltScreen { + return + } + s.mu.Lock() + for _, line := range strings.Split(str, "\n") { + s.queueAbove = append(s.queueAbove, s.method.Truncate(line, s.Width(), "")) + } + s.mu.Unlock() +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/sequence.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/sequence.go new file mode 100644 index 0000000..613eefe --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/sequence.go @@ -0,0 +1,131 @@ +package cellbuf + +import ( + "bytes" + "image/color" + + "github.com/charmbracelet/x/ansi" +) + +// ReadStyle reads a Select Graphic Rendition (SGR) escape sequences from a +// list of parameters. +func ReadStyle(params ansi.Params, pen *Style) { + if len(params) == 0 { + pen.Reset() + return + } + + for i := 0; i < len(params); i++ { + param, hasMore, _ := params.Param(i, 0) + switch param { + case 0: // Reset + pen.Reset() + case 1: // Bold + pen.Bold(true) + case 2: // Dim/Faint + pen.Faint(true) + case 3: // Italic + pen.Italic(true) + case 4: // Underline + nextParam, _, ok := params.Param(i+1, 0) + if hasMore && ok { // Only accept subparameters i.e. separated by ":" + switch nextParam { + case 0, 1, 2, 3, 4, 5: + i++ + switch nextParam { + case 0: // No Underline + pen.UnderlineStyle(NoUnderline) + case 1: // Single Underline + pen.UnderlineStyle(SingleUnderline) + case 2: // Double Underline + pen.UnderlineStyle(DoubleUnderline) + case 3: // Curly Underline + pen.UnderlineStyle(CurlyUnderline) + case 4: // Dotted Underline + pen.UnderlineStyle(DottedUnderline) + case 5: // Dashed Underline + pen.UnderlineStyle(DashedUnderline) + } + } + } else { + // Single Underline + pen.Underline(true) + } + case 5: // Slow Blink + pen.SlowBlink(true) + case 6: // Rapid Blink + pen.RapidBlink(true) + case 7: // Reverse + pen.Reverse(true) + case 8: // Conceal + pen.Conceal(true) + case 9: // Crossed-out/Strikethrough + pen.Strikethrough(true) + case 22: // Normal Intensity (not bold or faint) + pen.Bold(false).Faint(false) + case 23: // Not italic, not Fraktur + pen.Italic(false) + case 24: // Not underlined + pen.Underline(false) + case 25: // Blink off + pen.SlowBlink(false).RapidBlink(false) + case 27: // Positive (not reverse) + pen.Reverse(false) + case 28: // Reveal + pen.Conceal(false) + case 29: // Not crossed out + pen.Strikethrough(false) + case 30, 31, 32, 33, 34, 35, 36, 37: // Set foreground + pen.Foreground(ansi.Black + ansi.BasicColor(param-30)) //nolint:gosec + case 38: // Set foreground 256 or truecolor + var c color.Color + n := ReadStyleColor(params[i:], &c) + if n > 0 { + pen.Foreground(c) + i += n - 1 + } + case 39: // Default foreground + pen.Foreground(nil) + case 40, 41, 42, 43, 44, 45, 46, 47: // Set background + pen.Background(ansi.Black + ansi.BasicColor(param-40)) //nolint:gosec + case 48: // Set background 256 or truecolor + var c color.Color + n := ReadStyleColor(params[i:], &c) + if n > 0 { + pen.Background(c) + i += n - 1 + } + case 49: // Default Background + pen.Background(nil) + case 58: // Set underline color + var c color.Color + n := ReadStyleColor(params[i:], &c) + if n > 0 { + pen.UnderlineColor(c) + i += n - 1 + } + case 59: // Default underline color + pen.UnderlineColor(nil) + case 90, 91, 92, 93, 94, 95, 96, 97: // Set bright foreground + pen.Foreground(ansi.BrightBlack + ansi.BasicColor(param-90)) //nolint:gosec + case 100, 101, 102, 103, 104, 105, 106, 107: // Set bright background + pen.Background(ansi.BrightBlack + ansi.BasicColor(param-100)) //nolint:gosec + } + } +} + +// ReadLink reads a hyperlink escape sequence from a data buffer. +func ReadLink(p []byte, link *Link) { + params := bytes.Split(p, []byte{';'}) + if len(params) != 3 { + return + } + link.Params = string(params[1]) + link.URL = string(params[2]) +} + +// ReadStyleColor reads a color from a list of parameters. +// See [ansi.ReadStyleColor] for more information. +func ReadStyleColor(params ansi.Params, c *color.Color) int { + return ansi.ReadStyleColor(params, c) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/style.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/style.go new file mode 100644 index 0000000..82c4afb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/style.go @@ -0,0 +1,31 @@ +package cellbuf + +import ( + "github.com/charmbracelet/colorprofile" +) + +// Convert converts a style to respect the given color profile. +func ConvertStyle(s Style, p colorprofile.Profile) Style { + switch p { + case colorprofile.TrueColor: + return s + case colorprofile.Ascii: + s.Fg = nil + s.Bg = nil + s.Ul = nil + case colorprofile.NoTTY: + return Style{} + } + + if s.Fg != nil { + s.Fg = p.Convert(s.Fg) + } + if s.Bg != nil { + s.Bg = p.Convert(s.Bg) + } + if s.Ul != nil { + s.Ul = p.Convert(s.Ul) + } + + return s +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/tabstop.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/tabstop.go new file mode 100644 index 0000000..24eec44 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/tabstop.go @@ -0,0 +1,137 @@ +package cellbuf + +// DefaultTabInterval is the default tab interval. +const DefaultTabInterval = 8 + +// TabStops represents horizontal line tab stops. +type TabStops struct { + stops []int + interval int + width int +} + +// NewTabStops creates a new set of tab stops from a number of columns and an +// interval. +func NewTabStops(width, interval int) *TabStops { + ts := new(TabStops) + ts.interval = interval + ts.width = width + ts.stops = make([]int, (width+(interval-1))/interval) + ts.init(0, width) + return ts +} + +// DefaultTabStops creates a new set of tab stops with the default interval. +func DefaultTabStops(cols int) *TabStops { + return NewTabStops(cols, DefaultTabInterval) +} + +// Resize resizes the tab stops to the given width. +func (ts *TabStops) Resize(width int) { + if width == ts.width { + return + } + + if width < ts.width { + size := (width + (ts.interval - 1)) / ts.interval + ts.stops = ts.stops[:size] + } else { + size := (width - ts.width + (ts.interval - 1)) / ts.interval + ts.stops = append(ts.stops, make([]int, size)...) + } + + ts.init(ts.width, width) + ts.width = width +} + +// IsStop returns true if the given column is a tab stop. +func (ts TabStops) IsStop(col int) bool { + mask := ts.mask(col) + i := col >> 3 + if i < 0 || i >= len(ts.stops) { + return false + } + return ts.stops[i]&mask != 0 +} + +// Next returns the next tab stop after the given column. +func (ts TabStops) Next(col int) int { + return ts.Find(col, 1) +} + +// Prev returns the previous tab stop before the given column. +func (ts TabStops) Prev(col int) int { + return ts.Find(col, -1) +} + +// Find returns the prev/next tab stop before/after the given column and delta. +// If delta is positive, it returns the next tab stop after the given column. +// If delta is negative, it returns the previous tab stop before the given column. +// If delta is zero, it returns the given column. +func (ts TabStops) Find(col, delta int) int { + if delta == 0 { + return col + } + + var prev bool + count := delta + if count < 0 { + count = -count + prev = true + } + + for count > 0 { + if !prev { + if col >= ts.width-1 { + return col + } + + col++ + } else { + if col < 1 { + return col + } + + col-- + } + + if ts.IsStop(col) { + count-- + } + } + + return col +} + +// Set adds a tab stop at the given column. +func (ts *TabStops) Set(col int) { + mask := ts.mask(col) + ts.stops[col>>3] |= mask +} + +// Reset removes the tab stop at the given column. +func (ts *TabStops) Reset(col int) { + mask := ts.mask(col) + ts.stops[col>>3] &= ^mask +} + +// Clear removes all tab stops. +func (ts *TabStops) Clear() { + ts.stops = make([]int, len(ts.stops)) +} + +// mask returns the mask for the given column. +func (ts *TabStops) mask(col int) int { + return 1 << (col & (ts.interval - 1)) +} + +// init initializes the tab stops starting from col until width. +func (ts *TabStops) init(col, width int) { + for x := col; x < width; x++ { + if x%ts.interval == 0 { + ts.Set(x) + } else { + ts.Reset(x) + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/utils.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/utils.go new file mode 100644 index 0000000..b0452fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/utils.go @@ -0,0 +1,38 @@ +package cellbuf + +import ( + "strings" +) + +// Height returns the height of a string. +func Height(s string) int { + return strings.Count(s, "\n") + 1 +} + +func min(a, b int) int { //nolint:predeclared + if a > b { + return b + } + return a +} + +func max(a, b int) int { //nolint:predeclared + if a > b { + return a + } + return b +} + +func clamp(v, low, high int) int { + if high < low { + low, high = high, low + } + return min(high, max(low, v)) +} + +func abs(a int) int { + if a < 0 { + return -a + } + return a +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/wrap.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/wrap.go new file mode 100644 index 0000000..59a2a33 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/wrap.go @@ -0,0 +1,178 @@ +package cellbuf + +import ( + "bytes" + "unicode" + "unicode/utf8" + + "github.com/charmbracelet/x/ansi" +) + +// Wrap returns a string that is wrapped to the specified limit applying any +// ANSI escape sequences in the string. It tries to wrap the string at word +// boundaries, but will break words if necessary. +// +// The breakpoints string is a list of characters that are considered +// breakpoints for word wrapping. A hyphen (-) is always considered a +// breakpoint. +// +// Note: breakpoints must be a string of 1-cell wide rune characters. +func Wrap(s string, limit int, breakpoints string) string { + if len(s) == 0 { + return "" + } + + if limit < 1 { + return s + } + + p := ansi.GetParser() + defer ansi.PutParser(p) + + var ( + buf bytes.Buffer + word bytes.Buffer + space bytes.Buffer + style, curStyle Style + link, curLink Link + curWidth int + wordLen int + ) + + addSpace := func() { + curWidth += space.Len() + buf.Write(space.Bytes()) + space.Reset() + } + + addWord := func() { + if word.Len() == 0 { + return + } + + curLink = link + curStyle = style + + addSpace() + curWidth += wordLen + buf.Write(word.Bytes()) + word.Reset() + wordLen = 0 + } + + addNewline := func() { + if !curStyle.Empty() { + buf.WriteString(ansi.ResetStyle) + } + if !curLink.Empty() { + buf.WriteString(ansi.ResetHyperlink()) + } + buf.WriteByte('\n') + if !curLink.Empty() { + buf.WriteString(ansi.SetHyperlink(curLink.URL, curLink.Params)) + } + if !curStyle.Empty() { + buf.WriteString(curStyle.Sequence()) + } + curWidth = 0 + space.Reset() + } + + var state byte + for len(s) > 0 { + seq, width, n, newState := ansi.DecodeSequence(s, state, p) + switch width { + case 0: + if ansi.Equal(seq, "\t") { + addWord() + space.WriteString(seq) + break + } else if ansi.Equal(seq, "\n") { + if wordLen == 0 { + if curWidth+space.Len() > limit { + curWidth = 0 + } else { + // preserve whitespaces + buf.Write(space.Bytes()) + } + space.Reset() + } + + addWord() + addNewline() + break + } else if ansi.HasCsiPrefix(seq) && p.Command() == 'm' { + // SGR style sequence [ansi.SGR] + ReadStyle(p.Params(), &style) + } else if ansi.HasOscPrefix(seq) && p.Command() == 8 { + // Hyperlink sequence [ansi.SetHyperlink] + ReadLink(p.Data(), &link) + } + + word.WriteString(seq) + default: + if len(seq) == 1 { + // ASCII + r, _ := utf8.DecodeRuneInString(seq) + if unicode.IsSpace(r) { + addWord() + space.WriteRune(r) + break + } else if r == '-' || runeContainsAny(r, breakpoints) { + addSpace() + if curWidth+wordLen+width <= limit { + addWord() + buf.WriteString(seq) + curWidth += width + break + } + } + } + + if wordLen+width > limit { + // Hardwrap the word if it's too long + addWord() + } + + word.WriteString(seq) + wordLen += width + + if curWidth+wordLen+space.Len() > limit { + addNewline() + } + } + + s = s[n:] + state = newState + } + + if wordLen == 0 { + if curWidth+space.Len() > limit { + curWidth = 0 + } else { + // preserve whitespaces + buf.Write(space.Bytes()) + } + space.Reset() + } + + addWord() + + if !curLink.Empty() { + buf.WriteString(ansi.ResetHyperlink()) + } + if !curStyle.Empty() { + buf.WriteString(ansi.ResetStyle) + } + + return buf.String() +} + +func runeContainsAny[T string | []rune](r rune, s T) bool { + for _, c := range []rune(s) { + if c == r { + return true + } + } + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/writer.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/writer.go new file mode 100644 index 0000000..ae8b2a8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/cellbuf/writer.go @@ -0,0 +1,339 @@ +package cellbuf + +import ( + "bytes" + "fmt" + "strings" + + "github.com/charmbracelet/x/ansi" +) + +// CellBuffer is a cell buffer that represents a set of cells in a screen or a +// grid. +type CellBuffer interface { + // Cell returns the cell at the given position. + Cell(x, y int) *Cell + // SetCell sets the cell at the given position to the given cell. It + // returns whether the cell was set successfully. + SetCell(x, y int, c *Cell) bool + // Bounds returns the bounds of the cell buffer. + Bounds() Rectangle +} + +// FillRect fills the rectangle within the cell buffer with the given cell. +// This will not fill cells outside the bounds of the cell buffer. +func FillRect(s CellBuffer, c *Cell, rect Rectangle) { + for y := rect.Min.Y; y < rect.Max.Y; y++ { + for x := rect.Min.X; x < rect.Max.X; x++ { + s.SetCell(x, y, c) //nolint:errcheck + } + } +} + +// Fill fills the cell buffer with the given cell. +func Fill(s CellBuffer, c *Cell) { + FillRect(s, c, s.Bounds()) +} + +// ClearRect clears the rectangle within the cell buffer with blank cells. +func ClearRect(s CellBuffer, rect Rectangle) { + FillRect(s, nil, rect) +} + +// Clear clears the cell buffer with blank cells. +func Clear(s CellBuffer) { + Fill(s, nil) +} + +// SetContentRect clears the rectangle within the cell buffer with blank cells, +// and sets the given string as its content. If the height or width of the +// string exceeds the height or width of the cell buffer, it will be truncated. +func SetContentRect(s CellBuffer, str string, rect Rectangle) { + // Replace all "\n" with "\r\n" to ensure the cursor is reset to the start + // of the line. Make sure we don't replace "\r\n" with "\r\r\n". + str = strings.ReplaceAll(str, "\r\n", "\n") + str = strings.ReplaceAll(str, "\n", "\r\n") + ClearRect(s, rect) + printString(s, ansi.GraphemeWidth, rect.Min.X, rect.Min.Y, rect, str, true, "") +} + +// SetContent clears the cell buffer with blank cells, and sets the given string +// as its content. If the height or width of the string exceeds the height or +// width of the cell buffer, it will be truncated. +func SetContent(s CellBuffer, str string) { + SetContentRect(s, str, s.Bounds()) +} + +// Render returns a string representation of the grid with ANSI escape sequences. +func Render(d CellBuffer) string { + var buf bytes.Buffer + height := d.Bounds().Dy() + for y := 0; y < height; y++ { + _, line := RenderLine(d, y) + buf.WriteString(line) + if y < height-1 { + buf.WriteString("\r\n") + } + } + return buf.String() +} + +// RenderLine returns a string representation of the yth line of the grid along +// with the width of the line. +func RenderLine(d CellBuffer, n int) (w int, line string) { + var pen Style + var link Link + var buf bytes.Buffer + var pendingLine string + var pendingWidth int // this ignores space cells until we hit a non-space cell + + writePending := func() { + // If there's no pending line, we don't need to do anything. + if len(pendingLine) == 0 { + return + } + buf.WriteString(pendingLine) + w += pendingWidth + pendingWidth = 0 + pendingLine = "" + } + + for x := 0; x < d.Bounds().Dx(); x++ { + if cell := d.Cell(x, n); cell != nil && cell.Width > 0 { + // Convert the cell's style and link to the given color profile. + cellStyle := cell.Style + cellLink := cell.Link + if cellStyle.Empty() && !pen.Empty() { + writePending() + buf.WriteString(ansi.ResetStyle) //nolint:errcheck + pen.Reset() + } + if !cellStyle.Equal(&pen) { + writePending() + seq := cellStyle.DiffSequence(pen) + buf.WriteString(seq) // nolint:errcheck + pen = cellStyle + } + + // Write the URL escape sequence + if cellLink != link && link.URL != "" { + writePending() + buf.WriteString(ansi.ResetHyperlink()) //nolint:errcheck + link.Reset() + } + if cellLink != link { + writePending() + buf.WriteString(ansi.SetHyperlink(cellLink.URL, cellLink.Params)) //nolint:errcheck + link = cellLink + } + + // We only write the cell content if it's not empty. If it is, we + // append it to the pending line and width to be evaluated later. + if cell.Equal(&BlankCell) { + pendingLine += cell.String() + pendingWidth += cell.Width + } else { + writePending() + buf.WriteString(cell.String()) + w += cell.Width + } + } + } + if link.URL != "" { + buf.WriteString(ansi.ResetHyperlink()) //nolint:errcheck + } + if !pen.Empty() { + buf.WriteString(ansi.ResetStyle) //nolint:errcheck + } + return w, strings.TrimRight(buf.String(), " ") // Trim trailing spaces +} + +// ScreenWriter represents a writer that writes to a [Screen] parsing ANSI +// escape sequences and Unicode characters and converting them into cells that +// can be written to a cell [Buffer]. +type ScreenWriter struct { + *Screen +} + +// NewScreenWriter creates a new ScreenWriter that writes to the given Screen. +// This is a convenience function for creating a ScreenWriter. +func NewScreenWriter(s *Screen) *ScreenWriter { + return &ScreenWriter{s} +} + +// Write writes the given bytes to the screen. +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape +// sequences. +func (s *ScreenWriter) Write(p []byte) (n int, err error) { + printString(s.Screen, s.method, + s.cur.X, s.cur.Y, s.Bounds(), + p, false, "") + return len(p), nil +} + +// SetContent clears the screen with blank cells, and sets the given string as +// its content. If the height or width of the string exceeds the height or +// width of the screen, it will be truncated. +// +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape sequences. +func (s *ScreenWriter) SetContent(str string) { + s.SetContentRect(str, s.Bounds()) +} + +// SetContentRect clears the rectangle within the screen with blank cells, and +// sets the given string as its content. If the height or width of the string +// exceeds the height or width of the screen, it will be truncated. +// +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape +// sequences. +func (s *ScreenWriter) SetContentRect(str string, rect Rectangle) { + // Replace all "\n" with "\r\n" to ensure the cursor is reset to the start + // of the line. Make sure we don't replace "\r\n" with "\r\r\n". + str = strings.ReplaceAll(str, "\r\n", "\n") + str = strings.ReplaceAll(str, "\n", "\r\n") + s.ClearRect(rect) + printString(s.Screen, s.method, + rect.Min.X, rect.Min.Y, rect, + str, true, "") +} + +// Print prints the string at the current cursor position. It will wrap the +// string to the width of the screen if it exceeds the width of the screen. +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape +// sequences. +func (s *ScreenWriter) Print(str string, v ...interface{}) { + if len(v) > 0 { + str = fmt.Sprintf(str, v...) + } + printString(s.Screen, s.method, + s.cur.X, s.cur.Y, s.Bounds(), + str, false, "") +} + +// PrintAt prints the string at the given position. It will wrap the string to +// the width of the screen if it exceeds the width of the screen. +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape +// sequences. +func (s *ScreenWriter) PrintAt(x, y int, str string, v ...interface{}) { + if len(v) > 0 { + str = fmt.Sprintf(str, v...) + } + printString(s.Screen, s.method, + x, y, s.Bounds(), + str, false, "") +} + +// PrintCrop prints the string at the current cursor position and truncates the +// text if it exceeds the width of the screen. Use tail to specify a string to +// append if the string is truncated. +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape +// sequences. +func (s *ScreenWriter) PrintCrop(str string, tail string) { + printString(s.Screen, s.method, + s.cur.X, s.cur.Y, s.Bounds(), + str, true, tail) +} + +// PrintCropAt prints the string at the given position and truncates the text +// if it exceeds the width of the screen. Use tail to specify a string to append +// if the string is truncated. +// This will recognize ANSI [ansi.SGR] style and [ansi.SetHyperlink] escape +// sequences. +func (s *ScreenWriter) PrintCropAt(x, y int, str string, tail string) { + printString(s.Screen, s.method, + x, y, s.Bounds(), + str, true, tail) +} + +// printString draws a string starting at the given position. +func printString[T []byte | string]( + s CellBuffer, + m ansi.Method, + x, y int, + bounds Rectangle, str T, + truncate bool, tail string, +) { + p := ansi.GetParser() + defer ansi.PutParser(p) + + var tailc Cell + if truncate && len(tail) > 0 { + if m == ansi.WcWidth { + tailc = *NewCellString(tail) + } else { + tailc = *NewGraphemeCell(tail) + } + } + + decoder := ansi.DecodeSequenceWc[T] + if m == ansi.GraphemeWidth { + decoder = ansi.DecodeSequence[T] + } + + var cell Cell + var style Style + var link Link + var state byte + for len(str) > 0 { + seq, width, n, newState := decoder(str, state, p) + + switch width { + case 1, 2, 3, 4: // wide cells can go up to 4 cells wide + cell.Width += width + cell.Append([]rune(string(seq))...) + + if !truncate && x+cell.Width > bounds.Max.X && y+1 < bounds.Max.Y { + // Wrap the string to the width of the window + x = bounds.Min.X + y++ + } + if Pos(x, y).In(bounds) { + if truncate && tailc.Width > 0 && x+cell.Width > bounds.Max.X-tailc.Width { + // Truncate the string and append the tail if any. + cell := tailc + cell.Style = style + cell.Link = link + s.SetCell(x, y, &cell) + x += tailc.Width + } else { + // Print the cell to the screen + cell.Style = style + cell.Link = link + s.SetCell(x, y, &cell) //nolint:errcheck + x += width + } + } + + // String is too long for the line, truncate it. + // Make sure we reset the cell for the next iteration. + cell.Reset() + default: + // Valid sequences always have a non-zero Cmd. + // TODO: Handle cursor movement and other sequences + switch { + case ansi.HasCsiPrefix(seq) && p.Command() == 'm': + // SGR - Select Graphic Rendition + ReadStyle(p.Params(), &style) + case ansi.HasOscPrefix(seq) && p.Command() == 8: + // Hyperlinks + ReadLink(p.Data(), &link) + case ansi.Equal(seq, T("\n")): + y++ + case ansi.Equal(seq, T("\r")): + x = bounds.Min.X + default: + cell.Append([]rune(string(seq))...) + } + } + + // Advance the state and data + state = newState + str = str[n:] + } + + // Make sure to set the last cell if it's not empty. + if !cell.Empty() { + s.SetCell(x, y, &cell) //nolint:errcheck + cell.Reset() + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/LICENSE b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/LICENSE new file mode 100644 index 0000000..65a5654 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Charmbracelet, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term.go new file mode 100644 index 0000000..58d6522 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term.go @@ -0,0 +1,49 @@ +package term + +// State contains platform-specific state of a terminal. +type State struct { + state +} + +// IsTerminal returns whether the given file descriptor is a terminal. +func IsTerminal(fd uintptr) bool { + return isTerminal(fd) +} + +// MakeRaw puts the terminal connected to the given file descriptor into raw +// mode and returns the previous state of the terminal so that it can be +// restored. +func MakeRaw(fd uintptr) (*State, error) { + return makeRaw(fd) +} + +// GetState returns the current state of a terminal which may be useful to +// restore the terminal after a signal. +func GetState(fd uintptr) (*State, error) { + return getState(fd) +} + +// SetState sets the given state of the terminal. +func SetState(fd uintptr, state *State) error { + return setState(fd, state) +} + +// Restore restores the terminal connected to the given file descriptor to a +// previous state. +func Restore(fd uintptr, oldState *State) error { + return restore(fd, oldState) +} + +// GetSize returns the visible dimensions of the given terminal. +// +// These dimensions don't include any scrollback buffer height. +func GetSize(fd uintptr) (width, height int, err error) { + return getSize(fd) +} + +// ReadPassword reads a line of input from a terminal without local echo. This +// is commonly used for inputting passwords and other sensitive data. The slice +// returned does not include the \n. +func ReadPassword(fd uintptr) ([]byte, error) { + return readPassword(fd) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_other.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_other.go new file mode 100644 index 0000000..092c7e9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_other.go @@ -0,0 +1,39 @@ +//go:build !aix && !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !zos && !windows && !solaris && !plan9 +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!zos,!windows,!solaris,!plan9 + +package term + +import ( + "fmt" + "runtime" +) + +type state struct{} + +func isTerminal(fd uintptr) bool { + return false +} + +func makeRaw(fd uintptr) (*State, error) { + return nil, fmt.Errorf("terminal: MakeRaw not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +func getState(fd uintptr) (*State, error) { + return nil, fmt.Errorf("terminal: GetState not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +func restore(fd uintptr, state *State) error { + return fmt.Errorf("terminal: Restore not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +func getSize(fd uintptr) (width, height int, err error) { + return 0, 0, fmt.Errorf("terminal: GetSize not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +func setState(fd uintptr, state *State) error { + return fmt.Errorf("terminal: SetState not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} + +func readPassword(fd uintptr) ([]byte, error) { + return nil, fmt.Errorf("terminal: ReadPassword not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix.go new file mode 100644 index 0000000..1459cb1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix.go @@ -0,0 +1,96 @@ +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos + +package term + +import ( + "golang.org/x/sys/unix" +) + +type state struct { + unix.Termios +} + +func isTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), ioctlReadTermios) + return err == nil +} + +func makeRaw(fd uintptr) (*State, error) { + termios, err := unix.IoctlGetTermios(int(fd), ioctlReadTermios) + if err != nil { + return nil, err + } + + oldState := State{state{Termios: *termios}} + + // This attempts to replicate the behaviour documented for cfmakeraw in + // the termios(3) manpage. + termios.Iflag &^= unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON + termios.Oflag &^= unix.OPOST + termios.Lflag &^= unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN + termios.Cflag &^= unix.CSIZE | unix.PARENB + termios.Cflag |= unix.CS8 + termios.Cc[unix.VMIN] = 1 + termios.Cc[unix.VTIME] = 0 + if err := unix.IoctlSetTermios(int(fd), ioctlWriteTermios, termios); err != nil { + return nil, err + } + + return &oldState, nil +} + +func setState(fd uintptr, state *State) error { + var termios *unix.Termios + if state != nil { + termios = &state.Termios + } + return unix.IoctlSetTermios(int(fd), ioctlWriteTermios, termios) +} + +func getState(fd uintptr) (*State, error) { + termios, err := unix.IoctlGetTermios(int(fd), ioctlReadTermios) + if err != nil { + return nil, err + } + + return &State{state{Termios: *termios}}, nil +} + +func restore(fd uintptr, state *State) error { + return unix.IoctlSetTermios(int(fd), ioctlWriteTermios, &state.Termios) +} + +func getSize(fd uintptr) (width, height int, err error) { + ws, err := unix.IoctlGetWinsize(int(fd), unix.TIOCGWINSZ) + if err != nil { + return 0, 0, err + } + return int(ws.Col), int(ws.Row), nil +} + +// passwordReader is an io.Reader that reads from a specific file descriptor. +type passwordReader int + +func (r passwordReader) Read(buf []byte) (int, error) { + return unix.Read(int(r), buf) +} + +func readPassword(fd uintptr) ([]byte, error) { + termios, err := unix.IoctlGetTermios(int(fd), ioctlReadTermios) + if err != nil { + return nil, err + } + + newState := *termios + newState.Lflag &^= unix.ECHO + newState.Lflag |= unix.ICANON | unix.ISIG + newState.Iflag |= unix.ICRNL + if err := unix.IoctlSetTermios(int(fd), ioctlWriteTermios, &newState); err != nil { + return nil, err + } + + defer unix.IoctlSetTermios(int(fd), ioctlWriteTermios, termios) + + return readPasswordLine(passwordReader(fd)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_bsd.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_bsd.go new file mode 100644 index 0000000..b435031 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_bsd.go @@ -0,0 +1,11 @@ +//go:build darwin || dragonfly || freebsd || netbsd || openbsd +// +build darwin dragonfly freebsd netbsd openbsd + +package term + +import "golang.org/x/sys/unix" + +const ( + ioctlReadTermios = unix.TIOCGETA + ioctlWriteTermios = unix.TIOCSETA +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_other.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_other.go new file mode 100644 index 0000000..ee2a29e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_unix_other.go @@ -0,0 +1,11 @@ +//go:build aix || linux || solaris || zos +// +build aix linux solaris zos + +package term + +import "golang.org/x/sys/unix" + +const ( + ioctlReadTermios = unix.TCGETS + ioctlWriteTermios = unix.TCSETS +) diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_windows.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_windows.go new file mode 100644 index 0000000..fe7afde --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/term_windows.go @@ -0,0 +1,87 @@ +//go:build windows +// +build windows + +package term + +import ( + "os" + + "golang.org/x/sys/windows" +) + +type state struct { + Mode uint32 +} + +func isTerminal(fd uintptr) bool { + var st uint32 + err := windows.GetConsoleMode(windows.Handle(fd), &st) + return err == nil +} + +func makeRaw(fd uintptr) (*State, error) { + var st uint32 + if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil { + return nil, err + } + raw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT) + raw |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT + if err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil { + return nil, err + } + return &State{state{st}}, nil +} + +func setState(fd uintptr, state *State) error { + var mode uint32 + if state != nil { + mode = state.Mode + } + return windows.SetConsoleMode(windows.Handle(fd), mode) +} + +func getState(fd uintptr) (*State, error) { + var st uint32 + if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil { + return nil, err + } + return &State{state{st}}, nil +} + +func restore(fd uintptr, state *State) error { + return windows.SetConsoleMode(windows.Handle(fd), state.Mode) +} + +func getSize(fd uintptr) (width, height int, err error) { + var info windows.ConsoleScreenBufferInfo + if err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil { + return 0, 0, err + } + return int(info.Window.Right - info.Window.Left + 1), int(info.Window.Bottom - info.Window.Top + 1), nil +} + +func readPassword(fd uintptr) ([]byte, error) { + var st uint32 + if err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil { + return nil, err + } + old := st + + st &^= (windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT) + st |= (windows.ENABLE_PROCESSED_OUTPUT | windows.ENABLE_PROCESSED_INPUT) + if err := windows.SetConsoleMode(windows.Handle(fd), st); err != nil { + return nil, err + } + + defer windows.SetConsoleMode(windows.Handle(fd), old) + + var h windows.Handle + p, _ := windows.GetCurrentProcess() + if err := windows.DuplicateHandle(p, windows.Handle(fd), p, &h, 0, false, windows.DUPLICATE_SAME_ACCESS); err != nil { + return nil, err + } + + f := os.NewFile(uintptr(h), "stdin") + defer f.Close() + return readPasswordLine(f) +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/terminal.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/terminal.go new file mode 100644 index 0000000..8963163 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/terminal.go @@ -0,0 +1,12 @@ +package term + +import ( + "io" +) + +// File represents a file that has a file descriptor and can be read from, +// written to, and closed. +type File interface { + io.ReadWriteCloser + Fd() uintptr +} diff --git a/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/util.go b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/util.go new file mode 100644 index 0000000..b731341 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/charmbracelet/x/term/util.go @@ -0,0 +1,47 @@ +package term + +import ( + "io" + "runtime" +) + +// readPasswordLine reads from reader until it finds \n or io.EOF. +// The slice returned does not include the \n. +// readPasswordLine also ignores any \r it finds. +// Windows uses \r as end of line. So, on Windows, readPasswordLine +// reads until it finds \r and ignores any \n it finds during processing. +func readPasswordLine(reader io.Reader) ([]byte, error) { + var buf [1]byte + var ret []byte + + for { + n, err := reader.Read(buf[:]) + if n > 0 { + switch buf[0] { + case '\b': + if len(ret) > 0 { + ret = ret[:len(ret)-1] + } + case '\n': + if runtime.GOOS != "windows" { + return ret, nil + } + // otherwise ignore \n + case '\r': + if runtime.GOOS == "windows" { + return ret, nil + } + // otherwise ignore \r + default: + ret = append(ret, buf[0]) + } + continue + } + if err != nil { + if err == io.EOF && len(ret) > 0 { + return ret, nil + } + return ret, err + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.gitignore b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.gitignore new file mode 100644 index 0000000..fb844c3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.gitignore @@ -0,0 +1,27 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof +*.out + +.DS_Store diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.travis.yml b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.travis.yml new file mode 100644 index 0000000..a2da6be --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/.travis.yml @@ -0,0 +1,7 @@ +language: go +arch: + - AMD64 + - ppc64le +go: + - 1.9 + - tip diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/ATTRIB b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/ATTRIB new file mode 100644 index 0000000..cdf4560 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/ATTRIB @@ -0,0 +1,133 @@ +============ +These pieces of code were ported from dotnet/corefx: + +syntax/charclass.go (from RegexCharClass.cs): ported to use the built-in Go unicode classes. Canonicalize is + a direct port, but most of the other code required large changes because the C# implementation + used a string to represent the CharSet data structure and I cleaned that up in my implementation. + +syntax/code.go (from RegexCode.cs): ported literally with various cleanups and layout to make it more Go-ish. + +syntax/escape.go (from RegexParser.cs): ported Escape method and added some optimizations. Unescape is inspired by + the C# implementation but couldn't be directly ported because of the lack of do-while syntax in Go. + +syntax/parser.go (from RegexpParser.cs and RegexOptions.cs): ported parser struct and associated methods as + literally as possible. Several language differences required changes. E.g. lack pre/post-fix increments as + expressions, lack of do-while loops, lack of overloads, etc. + +syntax/prefix.go (from RegexFCD.cs and RegexBoyerMoore.cs): ported as literally as possible and added support + for unicode chars that are longer than the 16-bit char in C# for the 32-bit rune in Go. + +syntax/replacerdata.go (from RegexReplacement.cs): conceptually ported and re-organized to handle differences + in charclass implementation, and fix odd code layout between RegexParser.cs, Regex.cs, and RegexReplacement.cs. + +syntax/tree.go (from RegexTree.cs and RegexNode.cs): ported literally as possible. + +syntax/writer.go (from RegexWriter.cs): ported literally with minor changes to make it more Go-ish. + +match.go (from RegexMatch.cs): ported, simplified, and changed to handle Go's lack of inheritence. + +regexp.go (from Regex.cs and RegexOptions.cs): conceptually serves the same "starting point", but is simplified + and changed to handle differences in C# strings and Go strings/runes. + +replace.go (from RegexReplacement.cs): ported closely and then cleaned up to combine the MatchEvaluator and + simple string replace implementations. + +runner.go (from RegexRunner.cs): ported literally as possible. + +regexp_test.go (from CaptureTests.cs and GroupNamesAndNumbers.cs): conceptually ported, but the code was + manually structured like Go tests. + +replace_test.go (from RegexReplaceStringTest0.cs): conceptually ported + +rtl_test.go (from RightToLeft.cs): conceptually ported +--- +dotnet/corefx was released under this license: + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +============ +These pieces of code are copied from the Go framework: + +- The overall directory structure of regexp2 was inspired by the Go runtime regexp package. +- The optimization in the escape method of syntax/escape.go is from the Go runtime QuoteMeta() func in regexp/regexp.go +- The method signatures in regexp.go are designed to match the Go framework regexp methods closely +- func regexp2.MustCompile and func quote are almost identifical to the regexp package versions +- BenchmarkMatch* and TestProgramTooLong* funcs in regexp_performance_test.go were copied from the framework + regexp/exec_test.go +--- +The Go framework was released under this license: + +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +============ +Some test data were gathered from the Mono project. + +regexp_mono_test.go: ported from https://github.com/mono/mono/blob/master/mcs/class/System/Test/System.Text.RegularExpressions/PerlTrials.cs +--- +Mono tests released under this license: + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/LICENSE b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/LICENSE new file mode 100644 index 0000000..fe83dfd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Doug Clark + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/README.md b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/README.md new file mode 100644 index 0000000..9cbc1d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/README.md @@ -0,0 +1,174 @@ +# regexp2 - full featured regular expressions for Go +Regexp2 is a feature-rich RegExp engine for Go. It doesn't have constant time guarantees like the built-in `regexp` package, but it allows backtracking and is compatible with Perl5 and .NET. You'll likely be better off with the RE2 engine from the `regexp` package and should only use this if you need to write very complex patterns or require compatibility with .NET. + +## Basis of the engine +The engine is ported from the .NET framework's System.Text.RegularExpressions.Regex engine. That engine was open sourced in 2015 under the MIT license. There are some fundamental differences between .NET strings and Go strings that required a bit of borrowing from the Go framework regex engine as well. I cleaned up a couple of the dirtier bits during the port (regexcharclass.cs was terrible), but the parse tree, code emmitted, and therefore patterns matched should be identical. + +## New Code Generation +For extra performance use `regexp2` with [`regexp2cg`](https://github.com/dlclark/regexp2cg). It is a code generation utility for `regexp2` and you can likely improve your regexp runtime performance by 3-10x in hot code paths. As always you should benchmark your specifics to confirm the results. Give it a try! + +## Installing +This is a go-gettable library, so install is easy: + + go get github.com/dlclark/regexp2 + +To use the new Code Generation (while it's in beta) you'll need to use the `code_gen` branch: + + go get github.com/dlclark/regexp2@code_gen + +## Usage +Usage is similar to the Go `regexp` package. Just like in `regexp`, you start by converting a regex into a state machine via the `Compile` or `MustCompile` methods. They ultimately do the same thing, but `MustCompile` will panic if the regex is invalid. You can then use the provided `Regexp` struct to find matches repeatedly. A `Regexp` struct is safe to use across goroutines. + +```go +re := regexp2.MustCompile(`Your pattern`, 0) +if isMatch, _ := re.MatchString(`Something to match`); isMatch { + //do something +} +``` + +The only error that the `*Match*` methods *should* return is a Timeout if you set the `re.MatchTimeout` field. Any other error is a bug in the `regexp2` package. If you need more details about capture groups in a match then use the `FindStringMatch` method, like so: + +```go +if m, _ := re.FindStringMatch(`Something to match`); m != nil { + // the whole match is always group 0 + fmt.Printf("Group 0: %v\n", m.String()) + + // you can get all the groups too + gps := m.Groups() + + // a group can be captured multiple times, so each cap is separately addressable + fmt.Printf("Group 1, first capture", gps[1].Captures[0].String()) + fmt.Printf("Group 1, second capture", gps[1].Captures[1].String()) +} +``` + +Group 0 is embedded in the Match. Group 0 is an automatically-assigned group that encompasses the whole pattern. This means that `m.String()` is the same as `m.Group.String()` and `m.Groups()[0].String()` + +The __last__ capture is embedded in each group, so `g.String()` will return the same thing as `g.Capture.String()` and `g.Captures[len(g.Captures)-1].String()`. + +If you want to find multiple matches from a single input string you should use the `FindNextMatch` method. For example, to implement a function similar to `regexp.FindAllString`: + +```go +func regexp2FindAllString(re *regexp2.Regexp, s string) []string { + var matches []string + m, _ := re.FindStringMatch(s) + for m != nil { + matches = append(matches, m.String()) + m, _ = re.FindNextMatch(m) + } + return matches +} +``` + +`FindNextMatch` is optmized so that it re-uses the underlying string/rune slice. + +The internals of `regexp2` always operate on `[]rune` so `Index` and `Length` data in a `Match` always reference a position in `rune`s rather than `byte`s (even if the input was given as a string). This is a dramatic difference between `regexp` and `regexp2`. It's advisable to use the provided `String()` methods to avoid having to work with indices. + +## Compare `regexp` and `regexp2` +| Category | regexp | regexp2 | +| --- | --- | --- | +| Catastrophic backtracking possible | no, constant execution time guarantees | yes, if your pattern is at risk you can use the `re.MatchTimeout` field | +| Python-style capture groups `(?Pre)` | yes | no (yes in RE2 compat mode) | +| .NET-style capture groups `(?re)` or `(?'name're)` | no | yes | +| comments `(?#comment)` | no | yes | +| branch numbering reset `(?\|a\|b)` | no | no | +| possessive match `(?>re)` | no | yes | +| positive lookahead `(?=re)` | no | yes | +| negative lookahead `(?!re)` | no | yes | +| positive lookbehind `(?<=re)` | no | yes | +| negative lookbehind `(?re)`) +* change singleline behavior for `$` to only match end of string (like RE2) (see [#24](https://github.com/dlclark/regexp2/issues/24)) +* change the character classes `\d` `\s` and `\w` to match the same characters as RE2. NOTE: if you also use the `ECMAScript` option then this will change the `\s` character class to match ECMAScript instead of RE2. ECMAScript allows more whitespace characters in `\s` than RE2 (but still fewer than the the default behavior). +* allow character escape sequences to have defaults. For example, by default `\_` isn't a known character escape and will fail to compile, but in RE2 mode it will match the literal character `_` + +```go +re := regexp2.MustCompile(`Your RE2-compatible pattern`, regexp2.RE2) +if isMatch, _ := re.MatchString(`Something to match`); isMatch { + //do something +} +``` + +This feature is a work in progress and I'm open to ideas for more things to put here (maybe more relaxed character escaping rules?). + +## Catastrophic Backtracking and Timeouts + +`regexp2` supports features that can lead to catastrophic backtracking. +`Regexp.MatchTimeout` can be set to to limit the impact of such behavior; the +match will fail with an error after approximately MatchTimeout. No timeout +checks are done by default. + +Timeout checking is not free. The current timeout checking implementation starts +a background worker that updates a clock value approximately once every 100 +milliseconds. The matching code compares this value against the precomputed +deadline for the match. The performance impact is as follows. + +1. A match with a timeout runs almost as fast as a match without a timeout. +2. If any live matches have a timeout, there will be a background CPU load + (`~0.15%` currently on a modern machine). This load will remain constant + regardless of the number of matches done including matches done in parallel. +3. If no live matches are using a timeout, the background load will remain + until the longest deadline (match timeout + the time when the match started) + is reached. E.g., if you set a timeout of one minute the load will persist + for approximately a minute even if the match finishes quickly. + +See [PR #58](https://github.com/dlclark/regexp2/pull/58) for more details and +alternatives considered. + +## Goroutine leak error +If you're using a library during unit tests (e.g. https://github.com/uber-go/goleak) that validates all goroutines are exited then you'll likely get an error if you or any of your dependencies use regex's with a MatchTimeout. +To remedy the problem you'll need to tell the unit test to wait until the backgroup timeout goroutine is exited. + +```go +func TestSomething(t *testing.T) { + defer goleak.VerifyNone(t) + defer regexp2.StopTimeoutClock() + + // ... test +} + +//or + +func TestMain(m *testing.M) { + // setup + // ... + + // run + m.Run() + + //tear down + regexp2.StopTimeoutClock() + goleak.VerifyNone(t) +} +``` + +This will add ~100ms runtime to each test (or TestMain). If that's too much time you can set the clock cycle rate of the timeout goroutine in an init function in a test file. `regexp2.SetTimeoutCheckPeriod` isn't threadsafe so it must be setup before starting any regex's with Timeouts. + +```go +func init() { + //speed up testing by making the timeout clock 1ms + regexp2.SetTimeoutCheckPeriod(time.Millisecond) +} +``` + +## ECMAScript compatibility mode +In this mode the engine provides compatibility with the [regex engine](https://tc39.es/ecma262/multipage/text-processing.html#sec-regexp-regular-expression-objects) described in the ECMAScript specification. + +Additionally a Unicode mode is provided which allows parsing of `\u{CodePoint}` syntax that is only when both are provided. + +## Library features that I'm still working on +- Regex split + +## Potential bugs +I've run a battery of tests against regexp2 from various sources and found the debug output matches the .NET engine, but .NET and Go handle strings very differently. I've attempted to handle these differences, but most of my testing deals with basic ASCII with a little bit of multi-byte Unicode. There's a chance that there are bugs in the string handling related to character sets with supplementary Unicode chars. Right-to-Left support is coded, but not well tested either. + +## Find a bug? +I'm open to new issues and pull requests with tests if you find something odd! diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/fastclock.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/fastclock.go new file mode 100644 index 0000000..d256e63 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/fastclock.go @@ -0,0 +1,141 @@ +package regexp2 + +import ( + "sync" + "sync/atomic" + "time" +) + +// fasttime holds a time value (ticks since clock initialization) +type fasttime int64 + +// fastclock provides a fast clock implementation. +// +// A background goroutine periodically stores the current time +// into an atomic variable. +// +// A deadline can be quickly checked for expiration by comparing +// its value to the clock stored in the atomic variable. +// +// The goroutine automatically stops once clockEnd is reached. +// (clockEnd covers the largest deadline seen so far + some +// extra time). This ensures that if regexp2 with timeouts +// stops being used we will stop background work. +type fastclock struct { + // instances of atomicTime must be at the start of the struct (or at least 64-bit aligned) + // otherwise 32-bit architectures will panic + + current atomicTime // Current time (approximate) + clockEnd atomicTime // When clock updater is supposed to stop (>= any existing deadline) + + // current and clockEnd can be read via atomic loads. + // Reads and writes of other fields require mu to be held. + mu sync.Mutex + start time.Time // Time corresponding to fasttime(0) + running bool // Is a clock updater running? +} + +var fast fastclock + +// reached returns true if current time is at or past t. +func (t fasttime) reached() bool { + return fast.current.read() >= t +} + +// makeDeadline returns a time that is approximately time.Now().Add(d) +func makeDeadline(d time.Duration) fasttime { + // Increase the deadline since the clock we are reading may be + // just about to tick forwards. + end := fast.current.read() + durationToTicks(d+clockPeriod) + + // Start or extend clock if necessary. + if end > fast.clockEnd.read() { + // If time.Since(last use) > timeout, there's a chance that + // fast.current will no longer be updated, which can lead to + // incorrect 'end' calculations that can trigger a false timeout + fast.mu.Lock() + if !fast.running && !fast.start.IsZero() { + // update fast.current + fast.current.write(durationToTicks(time.Since(fast.start))) + // recalculate our end value + end = fast.current.read() + durationToTicks(d+clockPeriod) + } + fast.mu.Unlock() + extendClock(end) + } + + return end +} + +// extendClock ensures that clock is live and will run until at least end. +func extendClock(end fasttime) { + fast.mu.Lock() + defer fast.mu.Unlock() + + if fast.start.IsZero() { + fast.start = time.Now() + } + + // Extend the running time to cover end as well as a bit of slop. + if shutdown := end + durationToTicks(time.Second); shutdown > fast.clockEnd.read() { + fast.clockEnd.write(shutdown) + } + + // Start clock if necessary + if !fast.running { + fast.running = true + go runClock() + } +} + +// stop the timeout clock in the background +// should only used for unit tests to abandon the background goroutine +func stopClock() { + fast.mu.Lock() + if fast.running { + fast.clockEnd.write(fasttime(0)) + } + fast.mu.Unlock() + + // pause until not running + // get and release the lock + isRunning := true + for isRunning { + time.Sleep(clockPeriod / 2) + fast.mu.Lock() + isRunning = fast.running + fast.mu.Unlock() + } +} + +func durationToTicks(d time.Duration) fasttime { + // Downscale nanoseconds to approximately a millisecond so that we can avoid + // overflow even if the caller passes in math.MaxInt64. + return fasttime(d) >> 20 +} + +const DefaultClockPeriod = 100 * time.Millisecond + +// clockPeriod is the approximate interval between updates of approximateClock. +var clockPeriod = DefaultClockPeriod + +func runClock() { + fast.mu.Lock() + defer fast.mu.Unlock() + + for fast.current.read() <= fast.clockEnd.read() { + // Unlock while sleeping. + fast.mu.Unlock() + time.Sleep(clockPeriod) + fast.mu.Lock() + + newTime := durationToTicks(time.Since(fast.start)) + fast.current.write(newTime) + } + fast.running = false +} + +type atomicTime struct{ v int64 } // Should change to atomic.Int64 when we can use go 1.19 + +func (t *atomicTime) read() fasttime { return fasttime(atomic.LoadInt64(&t.v)) } +func (t *atomicTime) write(v fasttime) { atomic.StoreInt64(&t.v, int64(v)) } diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/match.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/match.go new file mode 100644 index 0000000..759cf8c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/match.go @@ -0,0 +1,349 @@ +package regexp2 + +import ( + "bytes" + "fmt" +) + +// Match is a single regex result match that contains groups and repeated captures +// +// -Groups +// -Capture +type Match struct { + Group //embeded group 0 + + regex *Regexp + otherGroups []Group + + // input to the match + textpos int + textstart int + + capcount int + caps []int + sparseCaps map[int]int + + // output from the match + matches [][]int + matchcount []int + + // whether we've done any balancing with this match. If we + // have done balancing, we'll need to do extra work in Tidy(). + balancing bool +} + +// Group is an explicit or implit (group 0) matched group within the pattern +type Group struct { + Capture // the last capture of this group is embeded for ease of use + + Name string // group name + Captures []Capture // captures of this group +} + +// Capture is a single capture of text within the larger original string +type Capture struct { + // the original string + text []rune + // Index is the position in the underlying rune slice where the first character of + // captured substring was found. Even if you pass in a string this will be in Runes. + Index int + // Length is the number of runes in the captured substring. + Length int +} + +// String returns the captured text as a String +func (c *Capture) String() string { + return string(c.text[c.Index : c.Index+c.Length]) +} + +// Runes returns the captured text as a rune slice +func (c *Capture) Runes() []rune { + return c.text[c.Index : c.Index+c.Length] +} + +func newMatch(regex *Regexp, capcount int, text []rune, startpos int) *Match { + m := Match{ + regex: regex, + matchcount: make([]int, capcount), + matches: make([][]int, capcount), + textstart: startpos, + balancing: false, + } + m.Name = "0" + m.text = text + m.matches[0] = make([]int, 2) + return &m +} + +func newMatchSparse(regex *Regexp, caps map[int]int, capcount int, text []rune, startpos int) *Match { + m := newMatch(regex, capcount, text, startpos) + m.sparseCaps = caps + return m +} + +func (m *Match) reset(text []rune, textstart int) { + m.text = text + m.textstart = textstart + for i := 0; i < len(m.matchcount); i++ { + m.matchcount[i] = 0 + } + m.balancing = false +} + +func (m *Match) tidy(textpos int) { + + interval := m.matches[0] + m.Index = interval[0] + m.Length = interval[1] + m.textpos = textpos + m.capcount = m.matchcount[0] + //copy our root capture to the list + m.Group.Captures = []Capture{m.Group.Capture} + + if m.balancing { + // The idea here is that we want to compact all of our unbalanced captures. To do that we + // use j basically as a count of how many unbalanced captures we have at any given time + // (really j is an index, but j/2 is the count). First we skip past all of the real captures + // until we find a balance captures. Then we check each subsequent entry. If it's a balance + // capture (it's negative), we decrement j. If it's a real capture, we increment j and copy + // it down to the last free position. + for cap := 0; cap < len(m.matchcount); cap++ { + limit := m.matchcount[cap] * 2 + matcharray := m.matches[cap] + + var i, j int + + for i = 0; i < limit; i++ { + if matcharray[i] < 0 { + break + } + } + + for j = i; i < limit; i++ { + if matcharray[i] < 0 { + // skip negative values + j-- + } else { + // but if we find something positive (an actual capture), copy it back to the last + // unbalanced position. + if i != j { + matcharray[j] = matcharray[i] + } + j++ + } + } + + m.matchcount[cap] = j / 2 + } + + m.balancing = false + } +} + +// isMatched tells if a group was matched by capnum +func (m *Match) isMatched(cap int) bool { + return cap < len(m.matchcount) && m.matchcount[cap] > 0 && m.matches[cap][m.matchcount[cap]*2-1] != (-3+1) +} + +// matchIndex returns the index of the last specified matched group by capnum +func (m *Match) matchIndex(cap int) int { + i := m.matches[cap][m.matchcount[cap]*2-2] + if i >= 0 { + return i + } + + return m.matches[cap][-3-i] +} + +// matchLength returns the length of the last specified matched group by capnum +func (m *Match) matchLength(cap int) int { + i := m.matches[cap][m.matchcount[cap]*2-1] + if i >= 0 { + return i + } + + return m.matches[cap][-3-i] +} + +// Nonpublic builder: add a capture to the group specified by "c" +func (m *Match) addMatch(c, start, l int) { + + if m.matches[c] == nil { + m.matches[c] = make([]int, 2) + } + + capcount := m.matchcount[c] + + if capcount*2+2 > len(m.matches[c]) { + oldmatches := m.matches[c] + newmatches := make([]int, capcount*8) + copy(newmatches, oldmatches[:capcount*2]) + m.matches[c] = newmatches + } + + m.matches[c][capcount*2] = start + m.matches[c][capcount*2+1] = l + m.matchcount[c] = capcount + 1 + //log.Printf("addMatch: c=%v, i=%v, l=%v ... matches: %v", c, start, l, m.matches) +} + +// Nonpublic builder: Add a capture to balance the specified group. This is used by the +// +// balanced match construct. (?...) +// +// If there were no such thing as backtracking, this would be as simple as calling RemoveMatch(c). +// However, since we have backtracking, we need to keep track of everything. +func (m *Match) balanceMatch(c int) { + m.balancing = true + + // we'll look at the last capture first + capcount := m.matchcount[c] + target := capcount*2 - 2 + + // first see if it is negative, and therefore is a reference to the next available + // capture group for balancing. If it is, we'll reset target to point to that capture. + if m.matches[c][target] < 0 { + target = -3 - m.matches[c][target] + } + + // move back to the previous capture + target -= 2 + + // if the previous capture is a reference, just copy that reference to the end. Otherwise, point to it. + if target >= 0 && m.matches[c][target] < 0 { + m.addMatch(c, m.matches[c][target], m.matches[c][target+1]) + } else { + m.addMatch(c, -3-target, -4-target /* == -3 - (target + 1) */) + } +} + +// Nonpublic builder: removes a group match by capnum +func (m *Match) removeMatch(c int) { + m.matchcount[c]-- +} + +// GroupCount returns the number of groups this match has matched +func (m *Match) GroupCount() int { + return len(m.matchcount) +} + +// GroupByName returns a group based on the name of the group, or nil if the group name does not exist +func (m *Match) GroupByName(name string) *Group { + num := m.regex.GroupNumberFromName(name) + if num < 0 { + return nil + } + return m.GroupByNumber(num) +} + +// GroupByNumber returns a group based on the number of the group, or nil if the group number does not exist +func (m *Match) GroupByNumber(num int) *Group { + // check our sparse map + if m.sparseCaps != nil { + if newNum, ok := m.sparseCaps[num]; ok { + num = newNum + } + } + if num >= len(m.matchcount) || num < 0 { + return nil + } + + if num == 0 { + return &m.Group + } + + m.populateOtherGroups() + + return &m.otherGroups[num-1] +} + +// Groups returns all the capture groups, starting with group 0 (the full match) +func (m *Match) Groups() []Group { + m.populateOtherGroups() + g := make([]Group, len(m.otherGroups)+1) + g[0] = m.Group + copy(g[1:], m.otherGroups) + return g +} + +func (m *Match) populateOtherGroups() { + // Construct all the Group objects first time called + if m.otherGroups == nil { + m.otherGroups = make([]Group, len(m.matchcount)-1) + for i := 0; i < len(m.otherGroups); i++ { + m.otherGroups[i] = newGroup(m.regex.GroupNameFromNumber(i+1), m.text, m.matches[i+1], m.matchcount[i+1]) + } + } +} + +func (m *Match) groupValueAppendToBuf(groupnum int, buf *bytes.Buffer) { + c := m.matchcount[groupnum] + if c == 0 { + return + } + + matches := m.matches[groupnum] + + index := matches[(c-1)*2] + last := index + matches[(c*2)-1] + + for ; index < last; index++ { + buf.WriteRune(m.text[index]) + } +} + +func newGroup(name string, text []rune, caps []int, capcount int) Group { + g := Group{} + g.text = text + if capcount > 0 { + g.Index = caps[(capcount-1)*2] + g.Length = caps[(capcount*2)-1] + } + g.Name = name + g.Captures = make([]Capture, capcount) + for i := 0; i < capcount; i++ { + g.Captures[i] = Capture{ + text: text, + Index: caps[i*2], + Length: caps[i*2+1], + } + } + //log.Printf("newGroup! capcount %v, %+v", capcount, g) + + return g +} + +func (m *Match) dump() string { + buf := &bytes.Buffer{} + buf.WriteRune('\n') + if len(m.sparseCaps) > 0 { + for k, v := range m.sparseCaps { + fmt.Fprintf(buf, "Slot %v -> %v\n", k, v) + } + } + + for i, g := range m.Groups() { + fmt.Fprintf(buf, "Group %v (%v), %v caps:\n", i, g.Name, len(g.Captures)) + + for _, c := range g.Captures { + fmt.Fprintf(buf, " (%v, %v) %v\n", c.Index, c.Length, c.String()) + } + } + /* + for i := 0; i < len(m.matchcount); i++ { + fmt.Fprintf(buf, "\nGroup %v (%v):\n", i, m.regex.GroupNameFromNumber(i)) + + for j := 0; j < m.matchcount[i]; j++ { + text := "" + + if m.matches[i][j*2] >= 0 { + start := m.matches[i][j*2] + text = m.text[start : start+m.matches[i][j*2+1]] + } + + fmt.Fprintf(buf, " (%v, %v) %v\n", m.matches[i][j*2], m.matches[i][j*2+1], text) + } + } + */ + return buf.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/regexp.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/regexp.go new file mode 100644 index 0000000..a7ddbaf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/regexp.go @@ -0,0 +1,395 @@ +/* +Package regexp2 is a regexp package that has an interface similar to Go's framework regexp engine but uses a +more feature full regex engine behind the scenes. + +It doesn't have constant time guarantees, but it allows backtracking and is compatible with Perl5 and .NET. +You'll likely be better off with the RE2 engine from the regexp package and should only use this if you +need to write very complex patterns or require compatibility with .NET. +*/ +package regexp2 + +import ( + "errors" + "math" + "strconv" + "sync" + "time" + + "github.com/dlclark/regexp2/syntax" +) + +var ( + // DefaultMatchTimeout used when running regexp matches -- "forever" + DefaultMatchTimeout = time.Duration(math.MaxInt64) + // DefaultUnmarshalOptions used when unmarshaling a regex from text + DefaultUnmarshalOptions = None +) + +// Regexp is the representation of a compiled regular expression. +// A Regexp is safe for concurrent use by multiple goroutines. +type Regexp struct { + // A match will time out if it takes (approximately) more than + // MatchTimeout. This is a safety check in case the match + // encounters catastrophic backtracking. The default value + // (DefaultMatchTimeout) causes all time out checking to be + // suppressed. + MatchTimeout time.Duration + + // read-only after Compile + pattern string // as passed to Compile + options RegexOptions // options + + caps map[int]int // capnum->index + capnames map[string]int //capture group name -> index + capslist []string //sorted list of capture group names + capsize int // size of the capture array + + code *syntax.Code // compiled program + + // cache of machines for running regexp + muRun *sync.Mutex + runner []*runner +} + +// Compile parses a regular expression and returns, if successful, +// a Regexp object that can be used to match against text. +func Compile(expr string, opt RegexOptions) (*Regexp, error) { + // parse it + tree, err := syntax.Parse(expr, syntax.RegexOptions(opt)) + if err != nil { + return nil, err + } + + // translate it to code + code, err := syntax.Write(tree) + if err != nil { + return nil, err + } + + // return it + return &Regexp{ + pattern: expr, + options: opt, + caps: code.Caps, + capnames: tree.Capnames, + capslist: tree.Caplist, + capsize: code.Capsize, + code: code, + MatchTimeout: DefaultMatchTimeout, + muRun: &sync.Mutex{}, + }, nil +} + +// MustCompile is like Compile but panics if the expression cannot be parsed. +// It simplifies safe initialization of global variables holding compiled regular +// expressions. +func MustCompile(str string, opt RegexOptions) *Regexp { + regexp, error := Compile(str, opt) + if error != nil { + panic(`regexp2: Compile(` + quote(str) + `): ` + error.Error()) + } + return regexp +} + +// Escape adds backslashes to any special characters in the input string +func Escape(input string) string { + return syntax.Escape(input) +} + +// Unescape removes any backslashes from previously-escaped special characters in the input string +func Unescape(input string) (string, error) { + return syntax.Unescape(input) +} + +// SetTimeoutPeriod is a debug function that sets the frequency of the timeout goroutine's sleep cycle. +// Defaults to 100ms. The only benefit of setting this lower is that the 1 background goroutine that manages +// timeouts may exit slightly sooner after all the timeouts have expired. See Github issue #63 +func SetTimeoutCheckPeriod(d time.Duration) { + clockPeriod = d +} + +// StopTimeoutClock should only be used in unit tests to prevent the timeout clock goroutine +// from appearing like a leaking goroutine +func StopTimeoutClock() { + stopClock() +} + +// String returns the source text used to compile the regular expression. +func (re *Regexp) String() string { + return re.pattern +} + +func quote(s string) string { + if strconv.CanBackquote(s) { + return "`" + s + "`" + } + return strconv.Quote(s) +} + +// RegexOptions impact the runtime and parsing behavior +// for each specific regex. They are setable in code as well +// as in the regex pattern itself. +type RegexOptions int32 + +const ( + None RegexOptions = 0x0 + IgnoreCase = 0x0001 // "i" + Multiline = 0x0002 // "m" + ExplicitCapture = 0x0004 // "n" + Compiled = 0x0008 // "c" + Singleline = 0x0010 // "s" + IgnorePatternWhitespace = 0x0020 // "x" + RightToLeft = 0x0040 // "r" + Debug = 0x0080 // "d" + ECMAScript = 0x0100 // "e" + RE2 = 0x0200 // RE2 (regexp package) compatibility mode + Unicode = 0x0400 // "u" +) + +func (re *Regexp) RightToLeft() bool { + return re.options&RightToLeft != 0 +} + +func (re *Regexp) Debug() bool { + return re.options&Debug != 0 +} + +// Replace searches the input string and replaces each match found with the replacement text. +// Count will limit the number of matches attempted and startAt will allow +// us to skip past possible matches at the start of the input (left or right depending on RightToLeft option). +// Set startAt and count to -1 to go through the whole string +func (re *Regexp) Replace(input, replacement string, startAt, count int) (string, error) { + data, err := syntax.NewReplacerData(replacement, re.caps, re.capsize, re.capnames, syntax.RegexOptions(re.options)) + if err != nil { + return "", err + } + //TODO: cache ReplacerData + + return replace(re, data, nil, input, startAt, count) +} + +// ReplaceFunc searches the input string and replaces each match found using the string from the evaluator +// Count will limit the number of matches attempted and startAt will allow +// us to skip past possible matches at the start of the input (left or right depending on RightToLeft option). +// Set startAt and count to -1 to go through the whole string. +func (re *Regexp) ReplaceFunc(input string, evaluator MatchEvaluator, startAt, count int) (string, error) { + return replace(re, nil, evaluator, input, startAt, count) +} + +// FindStringMatch searches the input string for a Regexp match +func (re *Regexp) FindStringMatch(s string) (*Match, error) { + // convert string to runes + return re.run(false, -1, getRunes(s)) +} + +// FindRunesMatch searches the input rune slice for a Regexp match +func (re *Regexp) FindRunesMatch(r []rune) (*Match, error) { + return re.run(false, -1, r) +} + +// FindStringMatchStartingAt searches the input string for a Regexp match starting at the startAt index +func (re *Regexp) FindStringMatchStartingAt(s string, startAt int) (*Match, error) { + if startAt > len(s) { + return nil, errors.New("startAt must be less than the length of the input string") + } + r, startAt := re.getRunesAndStart(s, startAt) + if startAt == -1 { + // we didn't find our start index in the string -- that's a problem + return nil, errors.New("startAt must align to the start of a valid rune in the input string") + } + + return re.run(false, startAt, r) +} + +// FindRunesMatchStartingAt searches the input rune slice for a Regexp match starting at the startAt index +func (re *Regexp) FindRunesMatchStartingAt(r []rune, startAt int) (*Match, error) { + return re.run(false, startAt, r) +} + +// FindNextMatch returns the next match in the same input string as the match parameter. +// Will return nil if there is no next match or if given a nil match. +func (re *Regexp) FindNextMatch(m *Match) (*Match, error) { + if m == nil { + return nil, nil + } + + // If previous match was empty, advance by one before matching to prevent + // infinite loop + startAt := m.textpos + if m.Length == 0 { + if m.textpos == len(m.text) { + return nil, nil + } + + if re.RightToLeft() { + startAt-- + } else { + startAt++ + } + } + return re.run(false, startAt, m.text) +} + +// MatchString return true if the string matches the regex +// error will be set if a timeout occurs +func (re *Regexp) MatchString(s string) (bool, error) { + m, err := re.run(true, -1, getRunes(s)) + if err != nil { + return false, err + } + return m != nil, nil +} + +func (re *Regexp) getRunesAndStart(s string, startAt int) ([]rune, int) { + if startAt < 0 { + if re.RightToLeft() { + r := getRunes(s) + return r, len(r) + } + return getRunes(s), 0 + } + ret := make([]rune, len(s)) + i := 0 + runeIdx := -1 + for strIdx, r := range s { + if strIdx == startAt { + runeIdx = i + } + ret[i] = r + i++ + } + if startAt == len(s) { + runeIdx = i + } + return ret[:i], runeIdx +} + +func getRunes(s string) []rune { + return []rune(s) +} + +// MatchRunes return true if the runes matches the regex +// error will be set if a timeout occurs +func (re *Regexp) MatchRunes(r []rune) (bool, error) { + m, err := re.run(true, -1, r) + if err != nil { + return false, err + } + return m != nil, nil +} + +// GetGroupNames Returns the set of strings used to name capturing groups in the expression. +func (re *Regexp) GetGroupNames() []string { + var result []string + + if re.capslist == nil { + result = make([]string, re.capsize) + + for i := 0; i < len(result); i++ { + result[i] = strconv.Itoa(i) + } + } else { + result = make([]string, len(re.capslist)) + copy(result, re.capslist) + } + + return result +} + +// GetGroupNumbers returns the integer group numbers corresponding to a group name. +func (re *Regexp) GetGroupNumbers() []int { + var result []int + + if re.caps == nil { + result = make([]int, re.capsize) + + for i := 0; i < len(result); i++ { + result[i] = i + } + } else { + result = make([]int, len(re.caps)) + + for k, v := range re.caps { + result[v] = k + } + } + + return result +} + +// GroupNameFromNumber retrieves a group name that corresponds to a group number. +// It will return "" for and unknown group number. Unnamed groups automatically +// receive a name that is the decimal string equivalent of its number. +func (re *Regexp) GroupNameFromNumber(i int) string { + if re.capslist == nil { + if i >= 0 && i < re.capsize { + return strconv.Itoa(i) + } + + return "" + } + + if re.caps != nil { + var ok bool + if i, ok = re.caps[i]; !ok { + return "" + } + } + + if i >= 0 && i < len(re.capslist) { + return re.capslist[i] + } + + return "" +} + +// GroupNumberFromName returns a group number that corresponds to a group name. +// Returns -1 if the name is not a recognized group name. Numbered groups +// automatically get a group name that is the decimal string equivalent of its number. +func (re *Regexp) GroupNumberFromName(name string) int { + // look up name if we have a hashtable of names + if re.capnames != nil { + if k, ok := re.capnames[name]; ok { + return k + } + + return -1 + } + + // convert to an int if it looks like a number + result := 0 + for i := 0; i < len(name); i++ { + ch := name[i] + + if ch > '9' || ch < '0' { + return -1 + } + + result *= 10 + result += int(ch - '0') + } + + // return int if it's in range + if result >= 0 && result < re.capsize { + return result + } + + return -1 +} + +// MarshalText implements [encoding.TextMarshaler]. The output +// matches that of calling the [Regexp.String] method. +func (re *Regexp) MarshalText() ([]byte, error) { + return []byte(re.String()), nil +} + +// UnmarshalText implements [encoding.TextUnmarshaler] by calling +// [Compile] on the encoded value. +func (re *Regexp) UnmarshalText(text []byte) error { + newRE, err := Compile(string(text), DefaultUnmarshalOptions) + if err != nil { + return err + } + *re = *newRE + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/replace.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/replace.go new file mode 100644 index 0000000..0376bd9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/replace.go @@ -0,0 +1,177 @@ +package regexp2 + +import ( + "bytes" + "errors" + + "github.com/dlclark/regexp2/syntax" +) + +const ( + replaceSpecials = 4 + replaceLeftPortion = -1 + replaceRightPortion = -2 + replaceLastGroup = -3 + replaceWholeString = -4 +) + +// MatchEvaluator is a function that takes a match and returns a replacement string to be used +type MatchEvaluator func(Match) string + +// Three very similar algorithms appear below: replace (pattern), +// replace (evaluator), and split. + +// Replace Replaces all occurrences of the regex in the string with the +// replacement pattern. +// +// Note that the special case of no matches is handled on its own: +// with no matches, the input string is returned unchanged. +// The right-to-left case is split out because StringBuilder +// doesn't handle right-to-left string building directly very well. +func replace(regex *Regexp, data *syntax.ReplacerData, evaluator MatchEvaluator, input string, startAt, count int) (string, error) { + if count < -1 { + return "", errors.New("Count too small") + } + if count == 0 { + return "", nil + } + + m, err := regex.FindStringMatchStartingAt(input, startAt) + + if err != nil { + return "", err + } + if m == nil { + return input, nil + } + + buf := &bytes.Buffer{} + text := m.text + + if !regex.RightToLeft() { + prevat := 0 + for m != nil { + if m.Index != prevat { + buf.WriteString(string(text[prevat:m.Index])) + } + prevat = m.Index + m.Length + if evaluator == nil { + replacementImpl(data, buf, m) + } else { + buf.WriteString(evaluator(*m)) + } + + count-- + if count == 0 { + break + } + m, err = regex.FindNextMatch(m) + if err != nil { + return "", nil + } + } + + if prevat < len(text) { + buf.WriteString(string(text[prevat:])) + } + } else { + prevat := len(text) + var al []string + + for m != nil { + if m.Index+m.Length != prevat { + al = append(al, string(text[m.Index+m.Length:prevat])) + } + prevat = m.Index + if evaluator == nil { + replacementImplRTL(data, &al, m) + } else { + al = append(al, evaluator(*m)) + } + + count-- + if count == 0 { + break + } + m, err = regex.FindNextMatch(m) + if err != nil { + return "", nil + } + } + + if prevat > 0 { + buf.WriteString(string(text[:prevat])) + } + + for i := len(al) - 1; i >= 0; i-- { + buf.WriteString(al[i]) + } + } + + return buf.String(), nil +} + +// Given a Match, emits into the StringBuilder the evaluated +// substitution pattern. +func replacementImpl(data *syntax.ReplacerData, buf *bytes.Buffer, m *Match) { + for _, r := range data.Rules { + + if r >= 0 { // string lookup + buf.WriteString(data.Strings[r]) + } else if r < -replaceSpecials { // group lookup + m.groupValueAppendToBuf(-replaceSpecials-1-r, buf) + } else { + switch -replaceSpecials - 1 - r { // special insertion patterns + case replaceLeftPortion: + for i := 0; i < m.Index; i++ { + buf.WriteRune(m.text[i]) + } + case replaceRightPortion: + for i := m.Index + m.Length; i < len(m.text); i++ { + buf.WriteRune(m.text[i]) + } + case replaceLastGroup: + m.groupValueAppendToBuf(m.GroupCount()-1, buf) + case replaceWholeString: + for i := 0; i < len(m.text); i++ { + buf.WriteRune(m.text[i]) + } + } + } + } +} + +func replacementImplRTL(data *syntax.ReplacerData, al *[]string, m *Match) { + l := *al + buf := &bytes.Buffer{} + + for _, r := range data.Rules { + buf.Reset() + if r >= 0 { // string lookup + l = append(l, data.Strings[r]) + } else if r < -replaceSpecials { // group lookup + m.groupValueAppendToBuf(-replaceSpecials-1-r, buf) + l = append(l, buf.String()) + } else { + switch -replaceSpecials - 1 - r { // special insertion patterns + case replaceLeftPortion: + for i := 0; i < m.Index; i++ { + buf.WriteRune(m.text[i]) + } + case replaceRightPortion: + for i := m.Index + m.Length; i < len(m.text); i++ { + buf.WriteRune(m.text[i]) + } + case replaceLastGroup: + m.groupValueAppendToBuf(m.GroupCount()-1, buf) + case replaceWholeString: + for i := 0; i < len(m.text); i++ { + buf.WriteRune(m.text[i]) + } + } + l = append(l, buf.String()) + } + } + + *al = l +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/runner.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/runner.go new file mode 100644 index 0000000..56759f1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/runner.go @@ -0,0 +1,1613 @@ +package regexp2 + +import ( + "bytes" + "errors" + "fmt" + "math" + "strconv" + "strings" + "time" + "unicode" + + "github.com/dlclark/regexp2/syntax" +) + +type runner struct { + re *Regexp + code *syntax.Code + + runtextstart int // starting point for search + + runtext []rune // text to search + runtextpos int // current position in text + runtextend int + + // The backtracking stack. Opcodes use this to store data regarding + // what they have matched and where to backtrack to. Each "frame" on + // the stack takes the form of [CodePosition Data1 Data2...], where + // CodePosition is the position of the current opcode and + // the data values are all optional. The CodePosition can be negative, and + // these values (also called "back2") are used by the BranchMark family of opcodes + // to indicate whether they are backtracking after a successful or failed + // match. + // When we backtrack, we pop the CodePosition off the stack, set the current + // instruction pointer to that code position, and mark the opcode + // with a backtracking flag ("Back"). Each opcode then knows how to + // handle its own data. + runtrack []int + runtrackpos int + + // This stack is used to track text positions across different opcodes. + // For example, in /(a*b)+/, the parentheses result in a SetMark/CaptureMark + // pair. SetMark records the text position before we match a*b. Then + // CaptureMark uses that position to figure out where the capture starts. + // Opcodes which push onto this stack are always paired with other opcodes + // which will pop the value from it later. A successful match should mean + // that this stack is empty. + runstack []int + runstackpos int + + // The crawl stack is used to keep track of captures. Every time a group + // has a capture, we push its group number onto the runcrawl stack. In + // the case of a balanced match, we push BOTH groups onto the stack. + runcrawl []int + runcrawlpos int + + runtrackcount int // count of states that may do backtracking + + runmatch *Match // result object + + ignoreTimeout bool + timeout time.Duration // timeout in milliseconds (needed for actual) + deadline fasttime + + operator syntax.InstOp + codepos int + rightToLeft bool + caseInsensitive bool +} + +// run searches for matches and can continue from the previous match +// +// quick is usually false, but can be true to not return matches, just put it in caches +// textstart is -1 to start at the "beginning" (depending on Right-To-Left), otherwise an index in input +// input is the string to search for our regex pattern +func (re *Regexp) run(quick bool, textstart int, input []rune) (*Match, error) { + + // get a cached runner + runner := re.getRunner() + defer re.putRunner(runner) + + if textstart < 0 { + if re.RightToLeft() { + textstart = len(input) + } else { + textstart = 0 + } + } + + return runner.scan(input, textstart, quick, re.MatchTimeout) +} + +// Scans the string to find the first match. Uses the Match object +// both to feed text in and as a place to store matches that come out. +// +// All the action is in the Go() method. Our +// responsibility is to load up the class members before +// calling Go. +// +// The optimizer can compute a set of candidate starting characters, +// and we could use a separate method Skip() that will quickly scan past +// any characters that we know can't match. +func (r *runner) scan(rt []rune, textstart int, quick bool, timeout time.Duration) (*Match, error) { + r.timeout = timeout + r.ignoreTimeout = (time.Duration(math.MaxInt64) == timeout) + r.runtextstart = textstart + r.runtext = rt + r.runtextend = len(rt) + + stoppos := r.runtextend + bump := 1 + + if r.re.RightToLeft() { + bump = -1 + stoppos = 0 + } + + r.runtextpos = textstart + initted := false + + r.startTimeoutWatch() + for { + if r.re.Debug() { + //fmt.Printf("\nSearch content: %v\n", string(r.runtext)) + fmt.Printf("\nSearch range: from 0 to %v\n", r.runtextend) + fmt.Printf("Firstchar search starting at %v stopping at %v\n", r.runtextpos, stoppos) + } + + if r.findFirstChar() { + if err := r.checkTimeout(); err != nil { + return nil, err + } + + if !initted { + r.initMatch() + initted = true + } + + if r.re.Debug() { + fmt.Printf("Executing engine starting at %v\n\n", r.runtextpos) + } + + if err := r.execute(); err != nil { + return nil, err + } + + if r.runmatch.matchcount[0] > 0 { + // We'll return a match even if it touches a previous empty match + return r.tidyMatch(quick), nil + } + + // reset state for another go + r.runtrackpos = len(r.runtrack) + r.runstackpos = len(r.runstack) + r.runcrawlpos = len(r.runcrawl) + } + + // failure! + + if r.runtextpos == stoppos { + r.tidyMatch(true) + return nil, nil + } + + // Recognize leading []* and various anchors, and bump on failure accordingly + + // r.bump by one and start again + + r.runtextpos += bump + } + // We never get here +} + +func (r *runner) execute() error { + + r.goTo(0) + + for { + + if r.re.Debug() { + r.dumpState() + } + + if err := r.checkTimeout(); err != nil { + return err + } + + switch r.operator { + case syntax.Stop: + return nil + + case syntax.Nothing: + break + + case syntax.Goto: + r.goTo(r.operand(0)) + continue + + case syntax.Testref: + if !r.runmatch.isMatched(r.operand(0)) { + break + } + r.advance(1) + continue + + case syntax.Lazybranch: + r.trackPush1(r.textPos()) + r.advance(1) + continue + + case syntax.Lazybranch | syntax.Back: + r.trackPop() + r.textto(r.trackPeek()) + r.goTo(r.operand(0)) + continue + + case syntax.Setmark: + r.stackPush(r.textPos()) + r.trackPush() + r.advance(0) + continue + + case syntax.Nullmark: + r.stackPush(-1) + r.trackPush() + r.advance(0) + continue + + case syntax.Setmark | syntax.Back, syntax.Nullmark | syntax.Back: + r.stackPop() + break + + case syntax.Getmark: + r.stackPop() + r.trackPush1(r.stackPeek()) + r.textto(r.stackPeek()) + r.advance(0) + continue + + case syntax.Getmark | syntax.Back: + r.trackPop() + r.stackPush(r.trackPeek()) + break + + case syntax.Capturemark: + if r.operand(1) != -1 && !r.runmatch.isMatched(r.operand(1)) { + break + } + r.stackPop() + if r.operand(1) != -1 { + r.transferCapture(r.operand(0), r.operand(1), r.stackPeek(), r.textPos()) + } else { + r.capture(r.operand(0), r.stackPeek(), r.textPos()) + } + r.trackPush1(r.stackPeek()) + + r.advance(2) + + continue + + case syntax.Capturemark | syntax.Back: + r.trackPop() + r.stackPush(r.trackPeek()) + r.uncapture() + if r.operand(0) != -1 && r.operand(1) != -1 { + r.uncapture() + } + + break + + case syntax.Branchmark: + r.stackPop() + + matched := r.textPos() - r.stackPeek() + + if matched != 0 { // Nonempty match -> loop now + r.trackPush2(r.stackPeek(), r.textPos()) // Save old mark, textpos + r.stackPush(r.textPos()) // Make new mark + r.goTo(r.operand(0)) // Loop + } else { // Empty match -> straight now + r.trackPushNeg1(r.stackPeek()) // Save old mark + r.advance(1) // Straight + } + continue + + case syntax.Branchmark | syntax.Back: + r.trackPopN(2) + r.stackPop() + r.textto(r.trackPeekN(1)) // Recall position + r.trackPushNeg1(r.trackPeek()) // Save old mark + r.advance(1) // Straight + continue + + case syntax.Branchmark | syntax.Back2: + r.trackPop() + r.stackPush(r.trackPeek()) // Recall old mark + break // Backtrack + + case syntax.Lazybranchmark: + { + // We hit this the first time through a lazy loop and after each + // successful match of the inner expression. It simply continues + // on and doesn't loop. + r.stackPop() + + oldMarkPos := r.stackPeek() + + if r.textPos() != oldMarkPos { // Nonempty match -> try to loop again by going to 'back' state + if oldMarkPos != -1 { + r.trackPush2(oldMarkPos, r.textPos()) // Save old mark, textpos + } else { + r.trackPush2(r.textPos(), r.textPos()) + } + } else { + // The inner expression found an empty match, so we'll go directly to 'back2' if we + // backtrack. In this case, we need to push something on the stack, since back2 pops. + // However, in the case of ()+? or similar, this empty match may be legitimate, so push the text + // position associated with that empty match. + r.stackPush(oldMarkPos) + + r.trackPushNeg1(r.stackPeek()) // Save old mark + } + r.advance(1) + continue + } + + case syntax.Lazybranchmark | syntax.Back: + + // After the first time, Lazybranchmark | syntax.Back occurs + // with each iteration of the loop, and therefore with every attempted + // match of the inner expression. We'll try to match the inner expression, + // then go back to Lazybranchmark if successful. If the inner expression + // fails, we go to Lazybranchmark | syntax.Back2 + + r.trackPopN(2) + pos := r.trackPeekN(1) + r.trackPushNeg1(r.trackPeek()) // Save old mark + r.stackPush(pos) // Make new mark + r.textto(pos) // Recall position + r.goTo(r.operand(0)) // Loop + continue + + case syntax.Lazybranchmark | syntax.Back2: + // The lazy loop has failed. We'll do a true backtrack and + // start over before the lazy loop. + r.stackPop() + r.trackPop() + r.stackPush(r.trackPeek()) // Recall old mark + break + + case syntax.Setcount: + r.stackPush2(r.textPos(), r.operand(0)) + r.trackPush() + r.advance(1) + continue + + case syntax.Nullcount: + r.stackPush2(-1, r.operand(0)) + r.trackPush() + r.advance(1) + continue + + case syntax.Setcount | syntax.Back: + r.stackPopN(2) + break + + case syntax.Nullcount | syntax.Back: + r.stackPopN(2) + break + + case syntax.Branchcount: + // r.stackPush: + // 0: Mark + // 1: Count + + r.stackPopN(2) + mark := r.stackPeek() + count := r.stackPeekN(1) + matched := r.textPos() - mark + + if count >= r.operand(1) || (matched == 0 && count >= 0) { // Max loops or empty match -> straight now + r.trackPushNeg2(mark, count) // Save old mark, count + r.advance(2) // Straight + } else { // Nonempty match -> count+loop now + r.trackPush1(mark) // remember mark + r.stackPush2(r.textPos(), count+1) // Make new mark, incr count + r.goTo(r.operand(0)) // Loop + } + continue + + case syntax.Branchcount | syntax.Back: + // r.trackPush: + // 0: Previous mark + // r.stackPush: + // 0: Mark (= current pos, discarded) + // 1: Count + r.trackPop() + r.stackPopN(2) + if r.stackPeekN(1) > 0 { // Positive -> can go straight + r.textto(r.stackPeek()) // Zap to mark + r.trackPushNeg2(r.trackPeek(), r.stackPeekN(1)-1) // Save old mark, old count + r.advance(2) // Straight + continue + } + r.stackPush2(r.trackPeek(), r.stackPeekN(1)-1) // recall old mark, old count + break + + case syntax.Branchcount | syntax.Back2: + // r.trackPush: + // 0: Previous mark + // 1: Previous count + r.trackPopN(2) + r.stackPush2(r.trackPeek(), r.trackPeekN(1)) // Recall old mark, old count + break // Backtrack + + case syntax.Lazybranchcount: + // r.stackPush: + // 0: Mark + // 1: Count + + r.stackPopN(2) + mark := r.stackPeek() + count := r.stackPeekN(1) + + if count < 0 { // Negative count -> loop now + r.trackPushNeg1(mark) // Save old mark + r.stackPush2(r.textPos(), count+1) // Make new mark, incr count + r.goTo(r.operand(0)) // Loop + } else { // Nonneg count -> straight now + r.trackPush3(mark, count, r.textPos()) // Save mark, count, position + r.advance(2) // Straight + } + continue + + case syntax.Lazybranchcount | syntax.Back: + // r.trackPush: + // 0: Mark + // 1: Count + // 2: r.textPos + + r.trackPopN(3) + mark := r.trackPeek() + textpos := r.trackPeekN(2) + + if r.trackPeekN(1) < r.operand(1) && textpos != mark { // Under limit and not empty match -> loop + r.textto(textpos) // Recall position + r.stackPush2(textpos, r.trackPeekN(1)+1) // Make new mark, incr count + r.trackPushNeg1(mark) // Save old mark + r.goTo(r.operand(0)) // Loop + continue + } else { // Max loops or empty match -> backtrack + r.stackPush2(r.trackPeek(), r.trackPeekN(1)) // Recall old mark, count + break // backtrack + } + + case syntax.Lazybranchcount | syntax.Back2: + // r.trackPush: + // 0: Previous mark + // r.stackPush: + // 0: Mark (== current pos, discarded) + // 1: Count + r.trackPop() + r.stackPopN(2) + r.stackPush2(r.trackPeek(), r.stackPeekN(1)-1) // Recall old mark, count + break // Backtrack + + case syntax.Setjump: + r.stackPush2(r.trackpos(), r.crawlpos()) + r.trackPush() + r.advance(0) + continue + + case syntax.Setjump | syntax.Back: + r.stackPopN(2) + break + + case syntax.Backjump: + // r.stackPush: + // 0: Saved trackpos + // 1: r.crawlpos + r.stackPopN(2) + r.trackto(r.stackPeek()) + + for r.crawlpos() != r.stackPeekN(1) { + r.uncapture() + } + + break + + case syntax.Forejump: + // r.stackPush: + // 0: Saved trackpos + // 1: r.crawlpos + r.stackPopN(2) + r.trackto(r.stackPeek()) + r.trackPush1(r.stackPeekN(1)) + r.advance(0) + continue + + case syntax.Forejump | syntax.Back: + // r.trackPush: + // 0: r.crawlpos + r.trackPop() + + for r.crawlpos() != r.trackPeek() { + r.uncapture() + } + + break + + case syntax.Bol: + if r.leftchars() > 0 && r.charAt(r.textPos()-1) != '\n' { + break + } + r.advance(0) + continue + + case syntax.Eol: + if r.rightchars() > 0 && r.charAt(r.textPos()) != '\n' { + break + } + r.advance(0) + continue + + case syntax.Boundary: + if !r.isBoundary(r.textPos(), 0, r.runtextend) { + break + } + r.advance(0) + continue + + case syntax.Nonboundary: + if r.isBoundary(r.textPos(), 0, r.runtextend) { + break + } + r.advance(0) + continue + + case syntax.ECMABoundary: + if !r.isECMABoundary(r.textPos(), 0, r.runtextend) { + break + } + r.advance(0) + continue + + case syntax.NonECMABoundary: + if r.isECMABoundary(r.textPos(), 0, r.runtextend) { + break + } + r.advance(0) + continue + + case syntax.Beginning: + if r.leftchars() > 0 { + break + } + r.advance(0) + continue + + case syntax.Start: + if r.textPos() != r.textstart() { + break + } + r.advance(0) + continue + + case syntax.EndZ: + rchars := r.rightchars() + if rchars > 1 { + break + } + // RE2 and EcmaScript define $ as "asserts position at the end of the string" + // PCRE/.NET adds "or before the line terminator right at the end of the string (if any)" + if (r.re.options & (RE2 | ECMAScript)) != 0 { + // RE2/Ecmascript mode + if rchars > 0 { + break + } + } else if rchars == 1 && r.charAt(r.textPos()) != '\n' { + // "regular" mode + break + } + + r.advance(0) + continue + + case syntax.End: + if r.rightchars() > 0 { + break + } + r.advance(0) + continue + + case syntax.One: + if r.forwardchars() < 1 || r.forwardcharnext() != rune(r.operand(0)) { + break + } + + r.advance(1) + continue + + case syntax.Notone: + if r.forwardchars() < 1 || r.forwardcharnext() == rune(r.operand(0)) { + break + } + + r.advance(1) + continue + + case syntax.Set: + + if r.forwardchars() < 1 || !r.code.Sets[r.operand(0)].CharIn(r.forwardcharnext()) { + break + } + + r.advance(1) + continue + + case syntax.Multi: + if !r.runematch(r.code.Strings[r.operand(0)]) { + break + } + + r.advance(1) + continue + + case syntax.Ref: + + capnum := r.operand(0) + + if r.runmatch.isMatched(capnum) { + if !r.refmatch(r.runmatch.matchIndex(capnum), r.runmatch.matchLength(capnum)) { + break + } + } else { + if (r.re.options & ECMAScript) == 0 { + break + } + } + + r.advance(1) + continue + + case syntax.Onerep: + + c := r.operand(1) + + if r.forwardchars() < c { + break + } + + ch := rune(r.operand(0)) + + for c > 0 { + if r.forwardcharnext() != ch { + goto BreakBackward + } + c-- + } + + r.advance(2) + continue + + case syntax.Notonerep: + + c := r.operand(1) + + if r.forwardchars() < c { + break + } + ch := rune(r.operand(0)) + + for c > 0 { + if r.forwardcharnext() == ch { + goto BreakBackward + } + c-- + } + + r.advance(2) + continue + + case syntax.Setrep: + + c := r.operand(1) + + if r.forwardchars() < c { + break + } + + set := r.code.Sets[r.operand(0)] + + for c > 0 { + if !set.CharIn(r.forwardcharnext()) { + goto BreakBackward + } + c-- + } + + r.advance(2) + continue + + case syntax.Oneloop: + + c := r.operand(1) + + if c > r.forwardchars() { + c = r.forwardchars() + } + + ch := rune(r.operand(0)) + i := c + + for ; i > 0; i-- { + if r.forwardcharnext() != ch { + r.backwardnext() + break + } + } + + if c > i { + r.trackPush2(c-i-1, r.textPos()-r.bump()) + } + + r.advance(2) + continue + + case syntax.Notoneloop: + + c := r.operand(1) + + if c > r.forwardchars() { + c = r.forwardchars() + } + + ch := rune(r.operand(0)) + i := c + + for ; i > 0; i-- { + if r.forwardcharnext() == ch { + r.backwardnext() + break + } + } + + if c > i { + r.trackPush2(c-i-1, r.textPos()-r.bump()) + } + + r.advance(2) + continue + + case syntax.Setloop: + + c := r.operand(1) + + if c > r.forwardchars() { + c = r.forwardchars() + } + + set := r.code.Sets[r.operand(0)] + i := c + + for ; i > 0; i-- { + if !set.CharIn(r.forwardcharnext()) { + r.backwardnext() + break + } + } + + if c > i { + r.trackPush2(c-i-1, r.textPos()-r.bump()) + } + + r.advance(2) + continue + + case syntax.Oneloop | syntax.Back, syntax.Notoneloop | syntax.Back: + + r.trackPopN(2) + i := r.trackPeek() + pos := r.trackPeekN(1) + + r.textto(pos) + + if i > 0 { + r.trackPush2(i-1, pos-r.bump()) + } + + r.advance(2) + continue + + case syntax.Setloop | syntax.Back: + + r.trackPopN(2) + i := r.trackPeek() + pos := r.trackPeekN(1) + + r.textto(pos) + + if i > 0 { + r.trackPush2(i-1, pos-r.bump()) + } + + r.advance(2) + continue + + case syntax.Onelazy, syntax.Notonelazy: + + c := r.operand(1) + + if c > r.forwardchars() { + c = r.forwardchars() + } + + if c > 0 { + r.trackPush2(c-1, r.textPos()) + } + + r.advance(2) + continue + + case syntax.Setlazy: + + c := r.operand(1) + + if c > r.forwardchars() { + c = r.forwardchars() + } + + if c > 0 { + r.trackPush2(c-1, r.textPos()) + } + + r.advance(2) + continue + + case syntax.Onelazy | syntax.Back: + + r.trackPopN(2) + pos := r.trackPeekN(1) + r.textto(pos) + + if r.forwardcharnext() != rune(r.operand(0)) { + break + } + + i := r.trackPeek() + + if i > 0 { + r.trackPush2(i-1, pos+r.bump()) + } + + r.advance(2) + continue + + case syntax.Notonelazy | syntax.Back: + + r.trackPopN(2) + pos := r.trackPeekN(1) + r.textto(pos) + + if r.forwardcharnext() == rune(r.operand(0)) { + break + } + + i := r.trackPeek() + + if i > 0 { + r.trackPush2(i-1, pos+r.bump()) + } + + r.advance(2) + continue + + case syntax.Setlazy | syntax.Back: + + r.trackPopN(2) + pos := r.trackPeekN(1) + r.textto(pos) + + if !r.code.Sets[r.operand(0)].CharIn(r.forwardcharnext()) { + break + } + + i := r.trackPeek() + + if i > 0 { + r.trackPush2(i-1, pos+r.bump()) + } + + r.advance(2) + continue + + default: + return errors.New("unknown state in regex runner") + } + + BreakBackward: + ; + + // "break Backward" comes here: + r.backtrack() + } +} + +// increase the size of stack and track storage +func (r *runner) ensureStorage() { + if r.runstackpos < r.runtrackcount*4 { + doubleIntSlice(&r.runstack, &r.runstackpos) + } + if r.runtrackpos < r.runtrackcount*4 { + doubleIntSlice(&r.runtrack, &r.runtrackpos) + } +} + +func doubleIntSlice(s *[]int, pos *int) { + oldLen := len(*s) + newS := make([]int, oldLen*2) + + copy(newS[oldLen:], *s) + *pos += oldLen + *s = newS +} + +// Save a number on the longjump unrolling stack +func (r *runner) crawl(i int) { + if r.runcrawlpos == 0 { + doubleIntSlice(&r.runcrawl, &r.runcrawlpos) + } + r.runcrawlpos-- + r.runcrawl[r.runcrawlpos] = i +} + +// Remove a number from the longjump unrolling stack +func (r *runner) popcrawl() int { + val := r.runcrawl[r.runcrawlpos] + r.runcrawlpos++ + return val +} + +// Get the height of the stack +func (r *runner) crawlpos() int { + return len(r.runcrawl) - r.runcrawlpos +} + +func (r *runner) advance(i int) { + r.codepos += (i + 1) + r.setOperator(r.code.Codes[r.codepos]) +} + +func (r *runner) goTo(newpos int) { + // when branching backward or in place, ensure storage + if newpos <= r.codepos { + r.ensureStorage() + } + + r.setOperator(r.code.Codes[newpos]) + r.codepos = newpos +} + +func (r *runner) textto(newpos int) { + r.runtextpos = newpos +} + +func (r *runner) trackto(newpos int) { + r.runtrackpos = len(r.runtrack) - newpos +} + +func (r *runner) textstart() int { + return r.runtextstart +} + +func (r *runner) textPos() int { + return r.runtextpos +} + +// push onto the backtracking stack +func (r *runner) trackpos() int { + return len(r.runtrack) - r.runtrackpos +} + +func (r *runner) trackPush() { + r.runtrackpos-- + r.runtrack[r.runtrackpos] = r.codepos +} + +func (r *runner) trackPush1(I1 int) { + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I1 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = r.codepos +} + +func (r *runner) trackPush2(I1, I2 int) { + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I1 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I2 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = r.codepos +} + +func (r *runner) trackPush3(I1, I2, I3 int) { + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I1 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I2 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I3 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = r.codepos +} + +func (r *runner) trackPushNeg1(I1 int) { + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I1 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = -r.codepos +} + +func (r *runner) trackPushNeg2(I1, I2 int) { + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I1 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = I2 + r.runtrackpos-- + r.runtrack[r.runtrackpos] = -r.codepos +} + +func (r *runner) backtrack() { + newpos := r.runtrack[r.runtrackpos] + r.runtrackpos++ + + if r.re.Debug() { + if newpos < 0 { + fmt.Printf(" Backtracking (back2) to code position %v\n", -newpos) + } else { + fmt.Printf(" Backtracking to code position %v\n", newpos) + } + } + + if newpos < 0 { + newpos = -newpos + r.setOperator(r.code.Codes[newpos] | syntax.Back2) + } else { + r.setOperator(r.code.Codes[newpos] | syntax.Back) + } + + // When branching backward, ensure storage + if newpos < r.codepos { + r.ensureStorage() + } + + r.codepos = newpos +} + +func (r *runner) setOperator(op int) { + r.caseInsensitive = (0 != (op & syntax.Ci)) + r.rightToLeft = (0 != (op & syntax.Rtl)) + r.operator = syntax.InstOp(op & ^(syntax.Rtl | syntax.Ci)) +} + +func (r *runner) trackPop() { + r.runtrackpos++ +} + +// pop framesize items from the backtracking stack +func (r *runner) trackPopN(framesize int) { + r.runtrackpos += framesize +} + +// Technically we are actually peeking at items already popped. So if you want to +// get and pop the top item from the stack, you do +// r.trackPop(); +// r.trackPeek(); +func (r *runner) trackPeek() int { + return r.runtrack[r.runtrackpos-1] +} + +// get the ith element down on the backtracking stack +func (r *runner) trackPeekN(i int) int { + return r.runtrack[r.runtrackpos-i-1] +} + +// Push onto the grouping stack +func (r *runner) stackPush(I1 int) { + r.runstackpos-- + r.runstack[r.runstackpos] = I1 +} + +func (r *runner) stackPush2(I1, I2 int) { + r.runstackpos-- + r.runstack[r.runstackpos] = I1 + r.runstackpos-- + r.runstack[r.runstackpos] = I2 +} + +func (r *runner) stackPop() { + r.runstackpos++ +} + +// pop framesize items from the grouping stack +func (r *runner) stackPopN(framesize int) { + r.runstackpos += framesize +} + +// Technically we are actually peeking at items already popped. So if you want to +// get and pop the top item from the stack, you do +// r.stackPop(); +// r.stackPeek(); +func (r *runner) stackPeek() int { + return r.runstack[r.runstackpos-1] +} + +// get the ith element down on the grouping stack +func (r *runner) stackPeekN(i int) int { + return r.runstack[r.runstackpos-i-1] +} + +func (r *runner) operand(i int) int { + return r.code.Codes[r.codepos+i+1] +} + +func (r *runner) leftchars() int { + return r.runtextpos +} + +func (r *runner) rightchars() int { + return r.runtextend - r.runtextpos +} + +func (r *runner) bump() int { + if r.rightToLeft { + return -1 + } + return 1 +} + +func (r *runner) forwardchars() int { + if r.rightToLeft { + return r.runtextpos + } + return r.runtextend - r.runtextpos +} + +func (r *runner) forwardcharnext() rune { + var ch rune + if r.rightToLeft { + r.runtextpos-- + ch = r.runtext[r.runtextpos] + } else { + ch = r.runtext[r.runtextpos] + r.runtextpos++ + } + + if r.caseInsensitive { + return unicode.ToLower(ch) + } + return ch +} + +func (r *runner) runematch(str []rune) bool { + var pos int + + c := len(str) + if !r.rightToLeft { + if r.runtextend-r.runtextpos < c { + return false + } + + pos = r.runtextpos + c + } else { + if r.runtextpos-0 < c { + return false + } + + pos = r.runtextpos + } + + if !r.caseInsensitive { + for c != 0 { + c-- + pos-- + if str[c] != r.runtext[pos] { + return false + } + } + } else { + for c != 0 { + c-- + pos-- + if str[c] != unicode.ToLower(r.runtext[pos]) { + return false + } + } + } + + if !r.rightToLeft { + pos += len(str) + } + + r.runtextpos = pos + + return true +} + +func (r *runner) refmatch(index, len int) bool { + var c, pos, cmpos int + + if !r.rightToLeft { + if r.runtextend-r.runtextpos < len { + return false + } + + pos = r.runtextpos + len + } else { + if r.runtextpos-0 < len { + return false + } + + pos = r.runtextpos + } + cmpos = index + len + + c = len + + if !r.caseInsensitive { + for c != 0 { + c-- + cmpos-- + pos-- + if r.runtext[cmpos] != r.runtext[pos] { + return false + } + + } + } else { + for c != 0 { + c-- + cmpos-- + pos-- + + if unicode.ToLower(r.runtext[cmpos]) != unicode.ToLower(r.runtext[pos]) { + return false + } + } + } + + if !r.rightToLeft { + pos += len + } + + r.runtextpos = pos + + return true +} + +func (r *runner) backwardnext() { + if r.rightToLeft { + r.runtextpos++ + } else { + r.runtextpos-- + } +} + +func (r *runner) charAt(j int) rune { + return r.runtext[j] +} + +func (r *runner) findFirstChar() bool { + + if 0 != (r.code.Anchors & (syntax.AnchorBeginning | syntax.AnchorStart | syntax.AnchorEndZ | syntax.AnchorEnd)) { + if !r.code.RightToLeft { + if (0 != (r.code.Anchors&syntax.AnchorBeginning) && r.runtextpos > 0) || + (0 != (r.code.Anchors&syntax.AnchorStart) && r.runtextpos > r.runtextstart) { + r.runtextpos = r.runtextend + return false + } + if 0 != (r.code.Anchors&syntax.AnchorEndZ) && r.runtextpos < r.runtextend-1 { + r.runtextpos = r.runtextend - 1 + } else if 0 != (r.code.Anchors&syntax.AnchorEnd) && r.runtextpos < r.runtextend { + r.runtextpos = r.runtextend + } + } else { + if (0 != (r.code.Anchors&syntax.AnchorEnd) && r.runtextpos < r.runtextend) || + (0 != (r.code.Anchors&syntax.AnchorEndZ) && (r.runtextpos < r.runtextend-1 || + (r.runtextpos == r.runtextend-1 && r.charAt(r.runtextpos) != '\n'))) || + (0 != (r.code.Anchors&syntax.AnchorStart) && r.runtextpos < r.runtextstart) { + r.runtextpos = 0 + return false + } + if 0 != (r.code.Anchors&syntax.AnchorBeginning) && r.runtextpos > 0 { + r.runtextpos = 0 + } + } + + if r.code.BmPrefix != nil { + return r.code.BmPrefix.IsMatch(r.runtext, r.runtextpos, 0, r.runtextend) + } + + return true // found a valid start or end anchor + } else if r.code.BmPrefix != nil { + r.runtextpos = r.code.BmPrefix.Scan(r.runtext, r.runtextpos, 0, r.runtextend) + + if r.runtextpos == -1 { + if r.code.RightToLeft { + r.runtextpos = 0 + } else { + r.runtextpos = r.runtextend + } + return false + } + + return true + } else if r.code.FcPrefix == nil { + return true + } + + r.rightToLeft = r.code.RightToLeft + r.caseInsensitive = r.code.FcPrefix.CaseInsensitive + + set := r.code.FcPrefix.PrefixSet + if set.IsSingleton() { + ch := set.SingletonChar() + for i := r.forwardchars(); i > 0; i-- { + if ch == r.forwardcharnext() { + r.backwardnext() + return true + } + } + } else { + for i := r.forwardchars(); i > 0; i-- { + n := r.forwardcharnext() + //fmt.Printf("%v in %v: %v\n", string(n), set.String(), set.CharIn(n)) + if set.CharIn(n) { + r.backwardnext() + return true + } + } + } + + return false +} + +func (r *runner) initMatch() { + // Use a hashtable'ed Match object if the capture numbers are sparse + + if r.runmatch == nil { + if r.re.caps != nil { + r.runmatch = newMatchSparse(r.re, r.re.caps, r.re.capsize, r.runtext, r.runtextstart) + } else { + r.runmatch = newMatch(r.re, r.re.capsize, r.runtext, r.runtextstart) + } + } else { + r.runmatch.reset(r.runtext, r.runtextstart) + } + + // note we test runcrawl, because it is the last one to be allocated + // If there is an alloc failure in the middle of the three allocations, + // we may still return to reuse this instance, and we want to behave + // as if the allocations didn't occur. (we used to test _trackcount != 0) + + if r.runcrawl != nil { + r.runtrackpos = len(r.runtrack) + r.runstackpos = len(r.runstack) + r.runcrawlpos = len(r.runcrawl) + return + } + + r.initTrackCount() + + tracksize := r.runtrackcount * 8 + stacksize := r.runtrackcount * 8 + + if tracksize < 32 { + tracksize = 32 + } + if stacksize < 16 { + stacksize = 16 + } + + r.runtrack = make([]int, tracksize) + r.runtrackpos = tracksize + + r.runstack = make([]int, stacksize) + r.runstackpos = stacksize + + r.runcrawl = make([]int, 32) + r.runcrawlpos = 32 +} + +func (r *runner) tidyMatch(quick bool) *Match { + if !quick { + match := r.runmatch + + r.runmatch = nil + + match.tidy(r.runtextpos) + return match + } else { + // send back our match -- it's not leaving the package, so it's safe to not clean it up + // this reduces allocs for frequent calls to the "IsMatch" bool-only functions + return r.runmatch + } +} + +// capture captures a subexpression. Note that the +// capnum used here has already been mapped to a non-sparse +// index (by the code generator RegexWriter). +func (r *runner) capture(capnum, start, end int) { + if end < start { + T := end + end = start + start = T + } + + r.crawl(capnum) + r.runmatch.addMatch(capnum, start, end-start) +} + +// transferCapture captures a subexpression. Note that the +// capnum used here has already been mapped to a non-sparse +// index (by the code generator RegexWriter). +func (r *runner) transferCapture(capnum, uncapnum, start, end int) { + var start2, end2 int + + // these are the two intervals that are cancelling each other + + if end < start { + T := end + end = start + start = T + } + + start2 = r.runmatch.matchIndex(uncapnum) + end2 = start2 + r.runmatch.matchLength(uncapnum) + + // The new capture gets the innermost defined interval + + if start >= end2 { + end = start + start = end2 + } else if end <= start2 { + start = start2 + } else { + if end > end2 { + end = end2 + } + if start2 > start { + start = start2 + } + } + + r.crawl(uncapnum) + r.runmatch.balanceMatch(uncapnum) + + if capnum != -1 { + r.crawl(capnum) + r.runmatch.addMatch(capnum, start, end-start) + } +} + +// revert the last capture +func (r *runner) uncapture() { + capnum := r.popcrawl() + r.runmatch.removeMatch(capnum) +} + +//debug + +func (r *runner) dumpState() { + back := "" + if r.operator&syntax.Back != 0 { + back = " Back" + } + if r.operator&syntax.Back2 != 0 { + back += " Back2" + } + fmt.Printf("Text: %v\nTrack: %v\nStack: %v\n %s%s\n\n", + r.textposDescription(), + r.stackDescription(r.runtrack, r.runtrackpos), + r.stackDescription(r.runstack, r.runstackpos), + r.code.OpcodeDescription(r.codepos), + back) +} + +func (r *runner) stackDescription(a []int, index int) string { + buf := &bytes.Buffer{} + + fmt.Fprintf(buf, "%v/%v", len(a)-index, len(a)) + if buf.Len() < 8 { + buf.WriteString(strings.Repeat(" ", 8-buf.Len())) + } + + buf.WriteRune('(') + for i := index; i < len(a); i++ { + if i > index { + buf.WriteRune(' ') + } + + buf.WriteString(strconv.Itoa(a[i])) + } + + buf.WriteRune(')') + + return buf.String() +} + +func (r *runner) textposDescription() string { + buf := &bytes.Buffer{} + + buf.WriteString(strconv.Itoa(r.runtextpos)) + + if buf.Len() < 8 { + buf.WriteString(strings.Repeat(" ", 8-buf.Len())) + } + + if r.runtextpos > 0 { + buf.WriteString(syntax.CharDescription(r.runtext[r.runtextpos-1])) + } else { + buf.WriteRune('^') + } + + buf.WriteRune('>') + + for i := r.runtextpos; i < r.runtextend; i++ { + buf.WriteString(syntax.CharDescription(r.runtext[i])) + } + if buf.Len() >= 64 { + buf.Truncate(61) + buf.WriteString("...") + } else { + buf.WriteRune('$') + } + + return buf.String() +} + +// decide whether the pos +// at the specified index is a boundary or not. It's just not worth +// emitting inline code for this logic. +func (r *runner) isBoundary(index, startpos, endpos int) bool { + return (index > startpos && syntax.IsWordChar(r.runtext[index-1])) != + (index < endpos && syntax.IsWordChar(r.runtext[index])) +} + +func (r *runner) isECMABoundary(index, startpos, endpos int) bool { + return (index > startpos && syntax.IsECMAWordChar(r.runtext[index-1])) != + (index < endpos && syntax.IsECMAWordChar(r.runtext[index])) +} + +func (r *runner) startTimeoutWatch() { + if r.ignoreTimeout { + return + } + r.deadline = makeDeadline(r.timeout) +} + +func (r *runner) checkTimeout() error { + if r.ignoreTimeout || !r.deadline.reached() { + return nil + } + + if r.re.Debug() { + //Debug.WriteLine("") + //Debug.WriteLine("RegEx match timeout occurred!") + //Debug.WriteLine("Specified timeout: " + TimeSpan.FromMilliseconds(_timeout).ToString()) + //Debug.WriteLine("Timeout check frequency: " + TimeoutCheckFrequency) + //Debug.WriteLine("Search pattern: " + _runregex._pattern) + //Debug.WriteLine("Input: " + r.runtext) + //Debug.WriteLine("About to throw RegexMatchTimeoutException.") + } + + return fmt.Errorf("match timeout after %v on input `%v`", r.timeout, string(r.runtext)) +} + +func (r *runner) initTrackCount() { + r.runtrackcount = r.code.TrackCount +} + +// getRunner returns a run to use for matching re. +// It uses the re's runner cache if possible, to avoid +// unnecessary allocation. +func (re *Regexp) getRunner() *runner { + re.muRun.Lock() + if n := len(re.runner); n > 0 { + z := re.runner[n-1] + re.runner = re.runner[:n-1] + re.muRun.Unlock() + return z + } + re.muRun.Unlock() + z := &runner{ + re: re, + code: re.code, + } + return z +} + +// putRunner returns a runner to the re's cache. +// There is no attempt to limit the size of the cache, so it will +// grow to the maximum number of simultaneous matches +// run using re. (The cache empties when re gets garbage collected.) +func (re *Regexp) putRunner(r *runner) { + re.muRun.Lock() + r.runtext = nil + if r.runmatch != nil { + r.runmatch.text = nil + } + re.runner = append(re.runner, r) + re.muRun.Unlock() +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/charclass.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/charclass.go new file mode 100644 index 0000000..6881a0e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/charclass.go @@ -0,0 +1,865 @@ +package syntax + +import ( + "bytes" + "encoding/binary" + "fmt" + "sort" + "unicode" + "unicode/utf8" +) + +// CharSet combines start-end rune ranges and unicode categories representing a set of characters +type CharSet struct { + ranges []singleRange + categories []category + sub *CharSet //optional subtractor + negate bool + anything bool +} + +type category struct { + negate bool + cat string +} + +type singleRange struct { + first rune + last rune +} + +const ( + spaceCategoryText = " " + wordCategoryText = "W" +) + +var ( + ecmaSpace = []rune{0x0009, 0x000e, 0x0020, 0x0021, 0x00a0, 0x00a1, 0x1680, 0x1681, 0x2000, 0x200b, 0x2028, 0x202a, 0x202f, 0x2030, 0x205f, 0x2060, 0x3000, 0x3001, 0xfeff, 0xff00} + ecmaWord = []rune{0x0030, 0x003a, 0x0041, 0x005b, 0x005f, 0x0060, 0x0061, 0x007b} + ecmaDigit = []rune{0x0030, 0x003a} + + re2Space = []rune{0x0009, 0x000b, 0x000c, 0x000e, 0x0020, 0x0021} +) + +var ( + AnyClass = getCharSetFromOldString([]rune{0}, false) + ECMAAnyClass = getCharSetFromOldString([]rune{0, 0x000a, 0x000b, 0x000d, 0x000e}, false) + NoneClass = getCharSetFromOldString(nil, false) + ECMAWordClass = getCharSetFromOldString(ecmaWord, false) + NotECMAWordClass = getCharSetFromOldString(ecmaWord, true) + ECMASpaceClass = getCharSetFromOldString(ecmaSpace, false) + NotECMASpaceClass = getCharSetFromOldString(ecmaSpace, true) + ECMADigitClass = getCharSetFromOldString(ecmaDigit, false) + NotECMADigitClass = getCharSetFromOldString(ecmaDigit, true) + + WordClass = getCharSetFromCategoryString(false, false, wordCategoryText) + NotWordClass = getCharSetFromCategoryString(true, false, wordCategoryText) + SpaceClass = getCharSetFromCategoryString(false, false, spaceCategoryText) + NotSpaceClass = getCharSetFromCategoryString(true, false, spaceCategoryText) + DigitClass = getCharSetFromCategoryString(false, false, "Nd") + NotDigitClass = getCharSetFromCategoryString(false, true, "Nd") + + RE2SpaceClass = getCharSetFromOldString(re2Space, false) + NotRE2SpaceClass = getCharSetFromOldString(re2Space, true) +) + +var unicodeCategories = func() map[string]*unicode.RangeTable { + retVal := make(map[string]*unicode.RangeTable) + for k, v := range unicode.Scripts { + retVal[k] = v + } + for k, v := range unicode.Categories { + retVal[k] = v + } + for k, v := range unicode.Properties { + retVal[k] = v + } + return retVal +}() + +func getCharSetFromCategoryString(negateSet bool, negateCat bool, cats ...string) func() *CharSet { + if negateCat && negateSet { + panic("BUG! You should only negate the set OR the category in a constant setup, but not both") + } + + c := CharSet{negate: negateSet} + + c.categories = make([]category, len(cats)) + for i, cat := range cats { + c.categories[i] = category{cat: cat, negate: negateCat} + } + return func() *CharSet { + //make a copy each time + local := c + //return that address + return &local + } +} + +func getCharSetFromOldString(setText []rune, negate bool) func() *CharSet { + c := CharSet{} + if len(setText) > 0 { + fillFirst := false + l := len(setText) + if negate { + if setText[0] == 0 { + setText = setText[1:] + } else { + l++ + fillFirst = true + } + } + + if l%2 == 0 { + c.ranges = make([]singleRange, l/2) + } else { + c.ranges = make([]singleRange, l/2+1) + } + + first := true + if fillFirst { + c.ranges[0] = singleRange{first: 0} + first = false + } + + i := 0 + for _, r := range setText { + if first { + // lower bound in a new range + c.ranges[i] = singleRange{first: r} + first = false + } else { + c.ranges[i].last = r - 1 + i++ + first = true + } + } + if !first { + c.ranges[i].last = utf8.MaxRune + } + } + + return func() *CharSet { + local := c + return &local + } +} + +// Copy makes a deep copy to prevent accidental mutation of a set +func (c CharSet) Copy() CharSet { + ret := CharSet{ + anything: c.anything, + negate: c.negate, + } + + ret.ranges = append(ret.ranges, c.ranges...) + ret.categories = append(ret.categories, c.categories...) + + if c.sub != nil { + sub := c.sub.Copy() + ret.sub = &sub + } + + return ret +} + +// gets a human-readable description for a set string +func (c CharSet) String() string { + buf := &bytes.Buffer{} + buf.WriteRune('[') + + if c.IsNegated() { + buf.WriteRune('^') + } + + for _, r := range c.ranges { + + buf.WriteString(CharDescription(r.first)) + if r.first != r.last { + if r.last-r.first != 1 { + //groups that are 1 char apart skip the dash + buf.WriteRune('-') + } + buf.WriteString(CharDescription(r.last)) + } + } + + for _, c := range c.categories { + buf.WriteString(c.String()) + } + + if c.sub != nil { + buf.WriteRune('-') + buf.WriteString(c.sub.String()) + } + + buf.WriteRune(']') + + return buf.String() +} + +// mapHashFill converts a charset into a buffer for use in maps +func (c CharSet) mapHashFill(buf *bytes.Buffer) { + if c.negate { + buf.WriteByte(0) + } else { + buf.WriteByte(1) + } + + binary.Write(buf, binary.LittleEndian, len(c.ranges)) + binary.Write(buf, binary.LittleEndian, len(c.categories)) + for _, r := range c.ranges { + buf.WriteRune(r.first) + buf.WriteRune(r.last) + } + for _, ct := range c.categories { + buf.WriteString(ct.cat) + if ct.negate { + buf.WriteByte(1) + } else { + buf.WriteByte(0) + } + } + + if c.sub != nil { + c.sub.mapHashFill(buf) + } +} + +// CharIn returns true if the rune is in our character set (either ranges or categories). +// It handles negations and subtracted sub-charsets. +func (c CharSet) CharIn(ch rune) bool { + val := false + // in s && !s.subtracted + + //check ranges + for _, r := range c.ranges { + if ch < r.first { + continue + } + if ch <= r.last { + val = true + break + } + } + + //check categories if we haven't already found a range + if !val && len(c.categories) > 0 { + for _, ct := range c.categories { + // special categories...then unicode + if ct.cat == spaceCategoryText { + if unicode.IsSpace(ch) { + // we found a space so we're done + // negate means this is a "bad" thing + val = !ct.negate + break + } else if ct.negate { + val = true + break + } + } else if ct.cat == wordCategoryText { + if IsWordChar(ch) { + val = !ct.negate + break + } else if ct.negate { + val = true + break + } + } else if unicode.Is(unicodeCategories[ct.cat], ch) { + // if we're in this unicode category then we're done + // if negate=true on this category then we "failed" our test + // otherwise we're good that we found it + val = !ct.negate + break + } else if ct.negate { + val = true + break + } + } + } + + // negate the whole char set + if c.negate { + val = !val + } + + // get subtracted recurse + if val && c.sub != nil { + val = !c.sub.CharIn(ch) + } + + //log.Printf("Char '%v' in %v == %v", string(ch), c.String(), val) + return val +} + +func (c category) String() string { + switch c.cat { + case spaceCategoryText: + if c.negate { + return "\\S" + } + return "\\s" + case wordCategoryText: + if c.negate { + return "\\W" + } + return "\\w" + } + if _, ok := unicodeCategories[c.cat]; ok { + + if c.negate { + return "\\P{" + c.cat + "}" + } + return "\\p{" + c.cat + "}" + } + return "Unknown category: " + c.cat +} + +// CharDescription Produces a human-readable description for a single character. +func CharDescription(ch rune) string { + /*if ch == '\\' { + return "\\\\" + } + + if ch > ' ' && ch <= '~' { + return string(ch) + } else if ch == '\n' { + return "\\n" + } else if ch == ' ' { + return "\\ " + }*/ + + b := &bytes.Buffer{} + escape(b, ch, false) //fmt.Sprintf("%U", ch) + return b.String() +} + +// According to UTS#18 Unicode Regular Expressions (http://www.unicode.org/reports/tr18/) +// RL 1.4 Simple Word Boundaries The class of includes all Alphabetic +// values from the Unicode character database, from UnicodeData.txt [UData], plus the U+200C +// ZERO WIDTH NON-JOINER and U+200D ZERO WIDTH JOINER. +func IsWordChar(r rune) bool { + //"L", "Mn", "Nd", "Pc" + return unicode.In(r, + unicode.Categories["L"], unicode.Categories["Mn"], + unicode.Categories["Nd"], unicode.Categories["Pc"]) || r == '\u200D' || r == '\u200C' + //return 'A' <= r && r <= 'Z' || 'a' <= r && r <= 'z' || '0' <= r && r <= '9' || r == '_' +} + +func IsECMAWordChar(r rune) bool { + return unicode.In(r, + unicode.Categories["L"], unicode.Categories["Mn"], + unicode.Categories["Nd"], unicode.Categories["Pc"]) + + //return 'A' <= r && r <= 'Z' || 'a' <= r && r <= 'z' || '0' <= r && r <= '9' || r == '_' +} + +// SingletonChar will return the char from the first range without validation. +// It assumes you have checked for IsSingleton or IsSingletonInverse and will panic given bad input +func (c CharSet) SingletonChar() rune { + return c.ranges[0].first +} + +func (c CharSet) IsSingleton() bool { + return !c.negate && //negated is multiple chars + len(c.categories) == 0 && len(c.ranges) == 1 && // multiple ranges and unicode classes represent multiple chars + c.sub == nil && // subtraction means we've got multiple chars + c.ranges[0].first == c.ranges[0].last // first and last equal means we're just 1 char +} + +func (c CharSet) IsSingletonInverse() bool { + return c.negate && //same as above, but requires negated + len(c.categories) == 0 && len(c.ranges) == 1 && // multiple ranges and unicode classes represent multiple chars + c.sub == nil && // subtraction means we've got multiple chars + c.ranges[0].first == c.ranges[0].last // first and last equal means we're just 1 char +} + +func (c CharSet) IsMergeable() bool { + return !c.IsNegated() && !c.HasSubtraction() +} + +func (c CharSet) IsNegated() bool { + return c.negate +} + +func (c CharSet) HasSubtraction() bool { + return c.sub != nil +} + +func (c CharSet) IsEmpty() bool { + return len(c.ranges) == 0 && len(c.categories) == 0 && c.sub == nil +} + +func (c *CharSet) addDigit(ecma, negate bool, pattern string) { + if ecma { + if negate { + c.addRanges(NotECMADigitClass().ranges) + } else { + c.addRanges(ECMADigitClass().ranges) + } + } else { + c.addCategories(category{cat: "Nd", negate: negate}) + } +} + +func (c *CharSet) addChar(ch rune) { + c.addRange(ch, ch) +} + +func (c *CharSet) addSpace(ecma, re2, negate bool) { + if ecma { + if negate { + c.addRanges(NotECMASpaceClass().ranges) + } else { + c.addRanges(ECMASpaceClass().ranges) + } + } else if re2 { + if negate { + c.addRanges(NotRE2SpaceClass().ranges) + } else { + c.addRanges(RE2SpaceClass().ranges) + } + } else { + c.addCategories(category{cat: spaceCategoryText, negate: negate}) + } +} + +func (c *CharSet) addWord(ecma, negate bool) { + if ecma { + if negate { + c.addRanges(NotECMAWordClass().ranges) + } else { + c.addRanges(ECMAWordClass().ranges) + } + } else { + c.addCategories(category{cat: wordCategoryText, negate: negate}) + } +} + +// Add set ranges and categories into ours -- no deduping or anything +func (c *CharSet) addSet(set CharSet) { + if c.anything { + return + } + if set.anything { + c.makeAnything() + return + } + // just append here to prevent double-canon + c.ranges = append(c.ranges, set.ranges...) + c.addCategories(set.categories...) + c.canonicalize() +} + +func (c *CharSet) makeAnything() { + c.anything = true + c.categories = []category{} + c.ranges = AnyClass().ranges +} + +func (c *CharSet) addCategories(cats ...category) { + // don't add dupes and remove positive+negative + if c.anything { + // if we've had a previous positive+negative group then + // just return, we're as broad as we can get + return + } + + for _, ct := range cats { + found := false + for _, ct2 := range c.categories { + if ct.cat == ct2.cat { + if ct.negate != ct2.negate { + // oposite negations...this mean we just + // take us as anything and move on + c.makeAnything() + return + } + found = true + break + } + } + + if !found { + c.categories = append(c.categories, ct) + } + } +} + +// Merges new ranges to our own +func (c *CharSet) addRanges(ranges []singleRange) { + if c.anything { + return + } + c.ranges = append(c.ranges, ranges...) + c.canonicalize() +} + +// Merges everything but the new ranges into our own +func (c *CharSet) addNegativeRanges(ranges []singleRange) { + if c.anything { + return + } + + var hi rune + + // convert incoming ranges into opposites, assume they are in order + for _, r := range ranges { + if hi < r.first { + c.ranges = append(c.ranges, singleRange{hi, r.first - 1}) + } + hi = r.last + 1 + } + + if hi < utf8.MaxRune { + c.ranges = append(c.ranges, singleRange{hi, utf8.MaxRune}) + } + + c.canonicalize() +} + +func isValidUnicodeCat(catName string) bool { + _, ok := unicodeCategories[catName] + return ok +} + +func (c *CharSet) addCategory(categoryName string, negate, caseInsensitive bool, pattern string) { + if !isValidUnicodeCat(categoryName) { + // unknown unicode category, script, or property "blah" + panic(fmt.Errorf("Unknown unicode category, script, or property '%v'", categoryName)) + + } + + if caseInsensitive && (categoryName == "Ll" || categoryName == "Lu" || categoryName == "Lt") { + // when RegexOptions.IgnoreCase is specified then {Ll} {Lu} and {Lt} cases should all match + c.addCategories( + category{cat: "Ll", negate: negate}, + category{cat: "Lu", negate: negate}, + category{cat: "Lt", negate: negate}) + } + c.addCategories(category{cat: categoryName, negate: negate}) +} + +func (c *CharSet) addSubtraction(sub *CharSet) { + c.sub = sub +} + +func (c *CharSet) addRange(chMin, chMax rune) { + c.ranges = append(c.ranges, singleRange{first: chMin, last: chMax}) + c.canonicalize() +} + +func (c *CharSet) addNamedASCII(name string, negate bool) bool { + var rs []singleRange + + switch name { + case "alnum": + rs = []singleRange{singleRange{'0', '9'}, singleRange{'A', 'Z'}, singleRange{'a', 'z'}} + case "alpha": + rs = []singleRange{singleRange{'A', 'Z'}, singleRange{'a', 'z'}} + case "ascii": + rs = []singleRange{singleRange{0, 0x7f}} + case "blank": + rs = []singleRange{singleRange{'\t', '\t'}, singleRange{' ', ' '}} + case "cntrl": + rs = []singleRange{singleRange{0, 0x1f}, singleRange{0x7f, 0x7f}} + case "digit": + c.addDigit(false, negate, "") + case "graph": + rs = []singleRange{singleRange{'!', '~'}} + case "lower": + rs = []singleRange{singleRange{'a', 'z'}} + case "print": + rs = []singleRange{singleRange{' ', '~'}} + case "punct": //[!-/:-@[-`{-~] + rs = []singleRange{singleRange{'!', '/'}, singleRange{':', '@'}, singleRange{'[', '`'}, singleRange{'{', '~'}} + case "space": + c.addSpace(true, false, negate) + case "upper": + rs = []singleRange{singleRange{'A', 'Z'}} + case "word": + c.addWord(true, negate) + case "xdigit": + rs = []singleRange{singleRange{'0', '9'}, singleRange{'A', 'F'}, singleRange{'a', 'f'}} + default: + return false + } + + if len(rs) > 0 { + if negate { + c.addNegativeRanges(rs) + } else { + c.addRanges(rs) + } + } + + return true +} + +type singleRangeSorter []singleRange + +func (p singleRangeSorter) Len() int { return len(p) } +func (p singleRangeSorter) Less(i, j int) bool { return p[i].first < p[j].first } +func (p singleRangeSorter) Swap(i, j int) { p[i], p[j] = p[j], p[i] } + +// Logic to reduce a character class to a unique, sorted form. +func (c *CharSet) canonicalize() { + var i, j int + var last rune + + // + // Find and eliminate overlapping or abutting ranges + // + + if len(c.ranges) > 1 { + sort.Sort(singleRangeSorter(c.ranges)) + + done := false + + for i, j = 1, 0; ; i++ { + for last = c.ranges[j].last; ; i++ { + if i == len(c.ranges) || last == utf8.MaxRune { + done = true + break + } + + CurrentRange := c.ranges[i] + if CurrentRange.first > last+1 { + break + } + + if last < CurrentRange.last { + last = CurrentRange.last + } + } + + c.ranges[j] = singleRange{first: c.ranges[j].first, last: last} + + j++ + + if done { + break + } + + if j < i { + c.ranges[j] = c.ranges[i] + } + } + + c.ranges = append(c.ranges[:j], c.ranges[len(c.ranges):]...) + } +} + +// Adds to the class any lowercase versions of characters already +// in the class. Used for case-insensitivity. +func (c *CharSet) addLowercase() { + if c.anything { + return + } + toAdd := []singleRange{} + for i := 0; i < len(c.ranges); i++ { + r := c.ranges[i] + if r.first == r.last { + lower := unicode.ToLower(r.first) + c.ranges[i] = singleRange{first: lower, last: lower} + } else { + toAdd = append(toAdd, r) + } + } + + for _, r := range toAdd { + c.addLowercaseRange(r.first, r.last) + } + c.canonicalize() +} + +/************************************************************************** + Let U be the set of Unicode character values and let L be the lowercase + function, mapping from U to U. To perform case insensitive matching of + character sets, we need to be able to map an interval I in U, say + + I = [chMin, chMax] = { ch : chMin <= ch <= chMax } + + to a set A such that A contains L(I) and A is contained in the union of + I and L(I). + + The table below partitions U into intervals on which L is non-decreasing. + Thus, for any interval J = [a, b] contained in one of these intervals, + L(J) is contained in [L(a), L(b)]. + + It is also true that for any such J, [L(a), L(b)] is contained in the + union of J and L(J). This does not follow from L being non-decreasing on + these intervals. It follows from the nature of the L on each interval. + On each interval, L has one of the following forms: + + (1) L(ch) = constant (LowercaseSet) + (2) L(ch) = ch + offset (LowercaseAdd) + (3) L(ch) = ch | 1 (LowercaseBor) + (4) L(ch) = ch + (ch & 1) (LowercaseBad) + + It is easy to verify that for any of these forms [L(a), L(b)] is + contained in the union of [a, b] and L([a, b]). +***************************************************************************/ + +const ( + LowercaseSet = 0 // Set to arg. + LowercaseAdd = 1 // Add arg. + LowercaseBor = 2 // Bitwise or with 1. + LowercaseBad = 3 // Bitwise and with 1 and add original. +) + +type lcMap struct { + chMin, chMax rune + op, data int32 +} + +var lcTable = []lcMap{ + lcMap{'\u0041', '\u005A', LowercaseAdd, 32}, + lcMap{'\u00C0', '\u00DE', LowercaseAdd, 32}, + lcMap{'\u0100', '\u012E', LowercaseBor, 0}, + lcMap{'\u0130', '\u0130', LowercaseSet, 0x0069}, + lcMap{'\u0132', '\u0136', LowercaseBor, 0}, + lcMap{'\u0139', '\u0147', LowercaseBad, 0}, + lcMap{'\u014A', '\u0176', LowercaseBor, 0}, + lcMap{'\u0178', '\u0178', LowercaseSet, 0x00FF}, + lcMap{'\u0179', '\u017D', LowercaseBad, 0}, + lcMap{'\u0181', '\u0181', LowercaseSet, 0x0253}, + lcMap{'\u0182', '\u0184', LowercaseBor, 0}, + lcMap{'\u0186', '\u0186', LowercaseSet, 0x0254}, + lcMap{'\u0187', '\u0187', LowercaseSet, 0x0188}, + lcMap{'\u0189', '\u018A', LowercaseAdd, 205}, + lcMap{'\u018B', '\u018B', LowercaseSet, 0x018C}, + lcMap{'\u018E', '\u018E', LowercaseSet, 0x01DD}, + lcMap{'\u018F', '\u018F', LowercaseSet, 0x0259}, + lcMap{'\u0190', '\u0190', LowercaseSet, 0x025B}, + lcMap{'\u0191', '\u0191', LowercaseSet, 0x0192}, + lcMap{'\u0193', '\u0193', LowercaseSet, 0x0260}, + lcMap{'\u0194', '\u0194', LowercaseSet, 0x0263}, + lcMap{'\u0196', '\u0196', LowercaseSet, 0x0269}, + lcMap{'\u0197', '\u0197', LowercaseSet, 0x0268}, + lcMap{'\u0198', '\u0198', LowercaseSet, 0x0199}, + lcMap{'\u019C', '\u019C', LowercaseSet, 0x026F}, + lcMap{'\u019D', '\u019D', LowercaseSet, 0x0272}, + lcMap{'\u019F', '\u019F', LowercaseSet, 0x0275}, + lcMap{'\u01A0', '\u01A4', LowercaseBor, 0}, + lcMap{'\u01A7', '\u01A7', LowercaseSet, 0x01A8}, + lcMap{'\u01A9', '\u01A9', LowercaseSet, 0x0283}, + lcMap{'\u01AC', '\u01AC', LowercaseSet, 0x01AD}, + lcMap{'\u01AE', '\u01AE', LowercaseSet, 0x0288}, + lcMap{'\u01AF', '\u01AF', LowercaseSet, 0x01B0}, + lcMap{'\u01B1', '\u01B2', LowercaseAdd, 217}, + lcMap{'\u01B3', '\u01B5', LowercaseBad, 0}, + lcMap{'\u01B7', '\u01B7', LowercaseSet, 0x0292}, + lcMap{'\u01B8', '\u01B8', LowercaseSet, 0x01B9}, + lcMap{'\u01BC', '\u01BC', LowercaseSet, 0x01BD}, + lcMap{'\u01C4', '\u01C5', LowercaseSet, 0x01C6}, + lcMap{'\u01C7', '\u01C8', LowercaseSet, 0x01C9}, + lcMap{'\u01CA', '\u01CB', LowercaseSet, 0x01CC}, + lcMap{'\u01CD', '\u01DB', LowercaseBad, 0}, + lcMap{'\u01DE', '\u01EE', LowercaseBor, 0}, + lcMap{'\u01F1', '\u01F2', LowercaseSet, 0x01F3}, + lcMap{'\u01F4', '\u01F4', LowercaseSet, 0x01F5}, + lcMap{'\u01FA', '\u0216', LowercaseBor, 0}, + lcMap{'\u0386', '\u0386', LowercaseSet, 0x03AC}, + lcMap{'\u0388', '\u038A', LowercaseAdd, 37}, + lcMap{'\u038C', '\u038C', LowercaseSet, 0x03CC}, + lcMap{'\u038E', '\u038F', LowercaseAdd, 63}, + lcMap{'\u0391', '\u03AB', LowercaseAdd, 32}, + lcMap{'\u03E2', '\u03EE', LowercaseBor, 0}, + lcMap{'\u0401', '\u040F', LowercaseAdd, 80}, + lcMap{'\u0410', '\u042F', LowercaseAdd, 32}, + lcMap{'\u0460', '\u0480', LowercaseBor, 0}, + lcMap{'\u0490', '\u04BE', LowercaseBor, 0}, + lcMap{'\u04C1', '\u04C3', LowercaseBad, 0}, + lcMap{'\u04C7', '\u04C7', LowercaseSet, 0x04C8}, + lcMap{'\u04CB', '\u04CB', LowercaseSet, 0x04CC}, + lcMap{'\u04D0', '\u04EA', LowercaseBor, 0}, + lcMap{'\u04EE', '\u04F4', LowercaseBor, 0}, + lcMap{'\u04F8', '\u04F8', LowercaseSet, 0x04F9}, + lcMap{'\u0531', '\u0556', LowercaseAdd, 48}, + lcMap{'\u10A0', '\u10C5', LowercaseAdd, 48}, + lcMap{'\u1E00', '\u1EF8', LowercaseBor, 0}, + lcMap{'\u1F08', '\u1F0F', LowercaseAdd, -8}, + lcMap{'\u1F18', '\u1F1F', LowercaseAdd, -8}, + lcMap{'\u1F28', '\u1F2F', LowercaseAdd, -8}, + lcMap{'\u1F38', '\u1F3F', LowercaseAdd, -8}, + lcMap{'\u1F48', '\u1F4D', LowercaseAdd, -8}, + lcMap{'\u1F59', '\u1F59', LowercaseSet, 0x1F51}, + lcMap{'\u1F5B', '\u1F5B', LowercaseSet, 0x1F53}, + lcMap{'\u1F5D', '\u1F5D', LowercaseSet, 0x1F55}, + lcMap{'\u1F5F', '\u1F5F', LowercaseSet, 0x1F57}, + lcMap{'\u1F68', '\u1F6F', LowercaseAdd, -8}, + lcMap{'\u1F88', '\u1F8F', LowercaseAdd, -8}, + lcMap{'\u1F98', '\u1F9F', LowercaseAdd, -8}, + lcMap{'\u1FA8', '\u1FAF', LowercaseAdd, -8}, + lcMap{'\u1FB8', '\u1FB9', LowercaseAdd, -8}, + lcMap{'\u1FBA', '\u1FBB', LowercaseAdd, -74}, + lcMap{'\u1FBC', '\u1FBC', LowercaseSet, 0x1FB3}, + lcMap{'\u1FC8', '\u1FCB', LowercaseAdd, -86}, + lcMap{'\u1FCC', '\u1FCC', LowercaseSet, 0x1FC3}, + lcMap{'\u1FD8', '\u1FD9', LowercaseAdd, -8}, + lcMap{'\u1FDA', '\u1FDB', LowercaseAdd, -100}, + lcMap{'\u1FE8', '\u1FE9', LowercaseAdd, -8}, + lcMap{'\u1FEA', '\u1FEB', LowercaseAdd, -112}, + lcMap{'\u1FEC', '\u1FEC', LowercaseSet, 0x1FE5}, + lcMap{'\u1FF8', '\u1FF9', LowercaseAdd, -128}, + lcMap{'\u1FFA', '\u1FFB', LowercaseAdd, -126}, + lcMap{'\u1FFC', '\u1FFC', LowercaseSet, 0x1FF3}, + lcMap{'\u2160', '\u216F', LowercaseAdd, 16}, + lcMap{'\u24B6', '\u24D0', LowercaseAdd, 26}, + lcMap{'\uFF21', '\uFF3A', LowercaseAdd, 32}, +} + +func (c *CharSet) addLowercaseRange(chMin, chMax rune) { + var i, iMax, iMid int + var chMinT, chMaxT rune + var lc lcMap + + for i, iMax = 0, len(lcTable); i < iMax; { + iMid = (i + iMax) / 2 + if lcTable[iMid].chMax < chMin { + i = iMid + 1 + } else { + iMax = iMid + } + } + + for ; i < len(lcTable); i++ { + lc = lcTable[i] + if lc.chMin > chMax { + return + } + chMinT = lc.chMin + if chMinT < chMin { + chMinT = chMin + } + + chMaxT = lc.chMax + if chMaxT > chMax { + chMaxT = chMax + } + + switch lc.op { + case LowercaseSet: + chMinT = rune(lc.data) + chMaxT = rune(lc.data) + break + case LowercaseAdd: + chMinT += lc.data + chMaxT += lc.data + break + case LowercaseBor: + chMinT |= 1 + chMaxT |= 1 + break + case LowercaseBad: + chMinT += (chMinT & 1) + chMaxT += (chMaxT & 1) + break + } + + if chMinT < chMin || chMaxT > chMax { + c.addRange(chMinT, chMaxT) + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/code.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/code.go new file mode 100644 index 0000000..686e822 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/code.go @@ -0,0 +1,274 @@ +package syntax + +import ( + "bytes" + "fmt" + "math" +) + +// similar to prog.go in the go regex package...also with comment 'may not belong in this package' + +// File provides operator constants for use by the Builder and the Machine. + +// Implementation notes: +// +// Regexps are built into RegexCodes, which contain an operation array, +// a string table, and some constants. +// +// Each operation is one of the codes below, followed by the integer +// operands specified for each op. +// +// Strings and sets are indices into a string table. + +type InstOp int + +const ( + // lef/back operands description + + Onerep InstOp = 0 // lef,back char,min,max a {n} + Notonerep = 1 // lef,back char,min,max .{n} + Setrep = 2 // lef,back set,min,max [\d]{n} + + Oneloop = 3 // lef,back char,min,max a {,n} + Notoneloop = 4 // lef,back char,min,max .{,n} + Setloop = 5 // lef,back set,min,max [\d]{,n} + + Onelazy = 6 // lef,back char,min,max a {,n}? + Notonelazy = 7 // lef,back char,min,max .{,n}? + Setlazy = 8 // lef,back set,min,max [\d]{,n}? + + One = 9 // lef char a + Notone = 10 // lef char [^a] + Set = 11 // lef set [a-z\s] \w \s \d + + Multi = 12 // lef string abcd + Ref = 13 // lef group \# + + Bol = 14 // ^ + Eol = 15 // $ + Boundary = 16 // \b + Nonboundary = 17 // \B + Beginning = 18 // \A + Start = 19 // \G + EndZ = 20 // \Z + End = 21 // \Z + + Nothing = 22 // Reject! + + // Primitive control structures + + Lazybranch = 23 // back jump straight first + Branchmark = 24 // back jump branch first for loop + Lazybranchmark = 25 // back jump straight first for loop + Nullcount = 26 // back val set counter, null mark + Setcount = 27 // back val set counter, make mark + Branchcount = 28 // back jump,limit branch++ if zero<=c impl group slots + Capsize int // number of impl group slots + FcPrefix *Prefix // the set of candidate first characters (may be null) + BmPrefix *BmPrefix // the fixed prefix string as a Boyer-Moore machine (may be null) + Anchors AnchorLoc // the set of zero-length start anchors (RegexFCD.Bol, etc) + RightToLeft bool // true if right to left +} + +func opcodeBacktracks(op InstOp) bool { + op &= Mask + + switch op { + case Oneloop, Notoneloop, Setloop, Onelazy, Notonelazy, Setlazy, Lazybranch, Branchmark, Lazybranchmark, + Nullcount, Setcount, Branchcount, Lazybranchcount, Setmark, Capturemark, Getmark, Setjump, Backjump, + Forejump, Goto: + return true + + default: + return false + } +} + +func opcodeSize(op InstOp) int { + op &= Mask + + switch op { + case Nothing, Bol, Eol, Boundary, Nonboundary, ECMABoundary, NonECMABoundary, Beginning, Start, EndZ, + End, Nullmark, Setmark, Getmark, Setjump, Backjump, Forejump, Stop: + return 1 + + case One, Notone, Multi, Ref, Testref, Goto, Nullcount, Setcount, Lazybranch, Branchmark, Lazybranchmark, + Prune, Set: + return 2 + + case Capturemark, Branchcount, Lazybranchcount, Onerep, Notonerep, Oneloop, Notoneloop, Onelazy, Notonelazy, + Setlazy, Setrep, Setloop: + return 3 + + default: + panic(fmt.Errorf("Unexpected op code: %v", op)) + } +} + +var codeStr = []string{ + "Onerep", "Notonerep", "Setrep", + "Oneloop", "Notoneloop", "Setloop", + "Onelazy", "Notonelazy", "Setlazy", + "One", "Notone", "Set", + "Multi", "Ref", + "Bol", "Eol", "Boundary", "Nonboundary", "Beginning", "Start", "EndZ", "End", + "Nothing", + "Lazybranch", "Branchmark", "Lazybranchmark", + "Nullcount", "Setcount", "Branchcount", "Lazybranchcount", + "Nullmark", "Setmark", "Capturemark", "Getmark", + "Setjump", "Backjump", "Forejump", "Testref", "Goto", + "Prune", "Stop", + "ECMABoundary", "NonECMABoundary", +} + +func operatorDescription(op InstOp) string { + desc := codeStr[op&Mask] + if (op & Ci) != 0 { + desc += "-Ci" + } + if (op & Rtl) != 0 { + desc += "-Rtl" + } + if (op & Back) != 0 { + desc += "-Back" + } + if (op & Back2) != 0 { + desc += "-Back2" + } + + return desc +} + +// OpcodeDescription is a humman readable string of the specific offset +func (c *Code) OpcodeDescription(offset int) string { + buf := &bytes.Buffer{} + + op := InstOp(c.Codes[offset]) + fmt.Fprintf(buf, "%06d ", offset) + + if opcodeBacktracks(op & Mask) { + buf.WriteString("*") + } else { + buf.WriteString(" ") + } + buf.WriteString(operatorDescription(op)) + buf.WriteString("(") + op &= Mask + + switch op { + case One, Notone, Onerep, Notonerep, Oneloop, Notoneloop, Onelazy, Notonelazy: + buf.WriteString("Ch = ") + buf.WriteString(CharDescription(rune(c.Codes[offset+1]))) + + case Set, Setrep, Setloop, Setlazy: + buf.WriteString("Set = ") + buf.WriteString(c.Sets[c.Codes[offset+1]].String()) + + case Multi: + fmt.Fprintf(buf, "String = %s", string(c.Strings[c.Codes[offset+1]])) + + case Ref, Testref: + fmt.Fprintf(buf, "Index = %d", c.Codes[offset+1]) + + case Capturemark: + fmt.Fprintf(buf, "Index = %d", c.Codes[offset+1]) + if c.Codes[offset+2] != -1 { + fmt.Fprintf(buf, ", Unindex = %d", c.Codes[offset+2]) + } + + case Nullcount, Setcount: + fmt.Fprintf(buf, "Value = %d", c.Codes[offset+1]) + + case Goto, Lazybranch, Branchmark, Lazybranchmark, Branchcount, Lazybranchcount: + fmt.Fprintf(buf, "Addr = %d", c.Codes[offset+1]) + } + + switch op { + case Onerep, Notonerep, Oneloop, Notoneloop, Onelazy, Notonelazy, Setrep, Setloop, Setlazy: + buf.WriteString(", Rep = ") + if c.Codes[offset+2] == math.MaxInt32 { + buf.WriteString("inf") + } else { + fmt.Fprintf(buf, "%d", c.Codes[offset+2]) + } + + case Branchcount, Lazybranchcount: + buf.WriteString(", Limit = ") + if c.Codes[offset+2] == math.MaxInt32 { + buf.WriteString("inf") + } else { + fmt.Fprintf(buf, "%d", c.Codes[offset+2]) + } + + } + + buf.WriteString(")") + + return buf.String() +} + +func (c *Code) Dump() string { + buf := &bytes.Buffer{} + + if c.RightToLeft { + fmt.Fprintln(buf, "Direction: right-to-left") + } else { + fmt.Fprintln(buf, "Direction: left-to-right") + } + if c.FcPrefix == nil { + fmt.Fprintln(buf, "Firstchars: n/a") + } else { + fmt.Fprintf(buf, "Firstchars: %v\n", c.FcPrefix.PrefixSet.String()) + } + + if c.BmPrefix == nil { + fmt.Fprintln(buf, "Prefix: n/a") + } else { + fmt.Fprintf(buf, "Prefix: %v\n", Escape(c.BmPrefix.String())) + } + + fmt.Fprintf(buf, "Anchors: %v\n", c.Anchors) + fmt.Fprintln(buf) + + if c.BmPrefix != nil { + fmt.Fprintln(buf, "BoyerMoore:") + fmt.Fprintln(buf, c.BmPrefix.Dump(" ")) + } + for i := 0; i < len(c.Codes); i += opcodeSize(InstOp(c.Codes[i])) { + fmt.Fprintln(buf, c.OpcodeDescription(i)) + } + + return buf.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/escape.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/escape.go new file mode 100644 index 0000000..609df10 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/escape.go @@ -0,0 +1,94 @@ +package syntax + +import ( + "bytes" + "strconv" + "strings" + "unicode" +) + +func Escape(input string) string { + b := &bytes.Buffer{} + for _, r := range input { + escape(b, r, false) + } + return b.String() +} + +const meta = `\.+*?()|[]{}^$# ` + +func escape(b *bytes.Buffer, r rune, force bool) { + if unicode.IsPrint(r) { + if strings.IndexRune(meta, r) >= 0 || force { + b.WriteRune('\\') + } + b.WriteRune(r) + return + } + + switch r { + case '\a': + b.WriteString(`\a`) + case '\f': + b.WriteString(`\f`) + case '\n': + b.WriteString(`\n`) + case '\r': + b.WriteString(`\r`) + case '\t': + b.WriteString(`\t`) + case '\v': + b.WriteString(`\v`) + default: + if r < 0x100 { + b.WriteString(`\x`) + s := strconv.FormatInt(int64(r), 16) + if len(s) == 1 { + b.WriteRune('0') + } + b.WriteString(s) + break + } + b.WriteString(`\u`) + b.WriteString(strconv.FormatInt(int64(r), 16)) + } +} + +func Unescape(input string) (string, error) { + idx := strings.IndexRune(input, '\\') + // no slashes means no unescape needed + if idx == -1 { + return input, nil + } + + buf := bytes.NewBufferString(input[:idx]) + // get the runes for the rest of the string -- we're going full parser scan on this + + p := parser{} + p.setPattern(input[idx+1:]) + for { + if p.rightMost() { + return "", p.getErr(ErrIllegalEndEscape) + } + r, err := p.scanCharEscape() + if err != nil { + return "", err + } + buf.WriteRune(r) + // are we done? + if p.rightMost() { + return buf.String(), nil + } + + r = p.moveRightGetChar() + for r != '\\' { + buf.WriteRune(r) + if p.rightMost() { + // we're done, no more slashes + return buf.String(), nil + } + // keep scanning until we get another slash + r = p.moveRightGetChar() + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/fuzz.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/fuzz.go new file mode 100644 index 0000000..ee86386 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/fuzz.go @@ -0,0 +1,20 @@ +// +build gofuzz + +package syntax + +// Fuzz is the input point for go-fuzz +func Fuzz(data []byte) int { + sdata := string(data) + tree, err := Parse(sdata, RegexOptions(0)) + if err != nil { + return 0 + } + + // translate it to code + _, err = Write(tree) + if err != nil { + panic(err) + } + + return 1 +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/parser.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/parser.go new file mode 100644 index 0000000..4ff0aaa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/parser.go @@ -0,0 +1,2262 @@ +package syntax + +import ( + "fmt" + "math" + "os" + "sort" + "strconv" + "unicode" +) + +type RegexOptions int32 + +const ( + IgnoreCase RegexOptions = 0x0001 // "i" + Multiline = 0x0002 // "m" + ExplicitCapture = 0x0004 // "n" + Compiled = 0x0008 // "c" + Singleline = 0x0010 // "s" + IgnorePatternWhitespace = 0x0020 // "x" + RightToLeft = 0x0040 // "r" + Debug = 0x0080 // "d" + ECMAScript = 0x0100 // "e" + RE2 = 0x0200 // RE2 compat mode + Unicode = 0x0400 // "u" +) + +func optionFromCode(ch rune) RegexOptions { + // case-insensitive + switch ch { + case 'i', 'I': + return IgnoreCase + case 'r', 'R': + return RightToLeft + case 'm', 'M': + return Multiline + case 'n', 'N': + return ExplicitCapture + case 's', 'S': + return Singleline + case 'x', 'X': + return IgnorePatternWhitespace + case 'd', 'D': + return Debug + case 'e', 'E': + return ECMAScript + case 'u', 'U': + return Unicode + default: + return 0 + } +} + +// An Error describes a failure to parse a regular expression +// and gives the offending expression. +type Error struct { + Code ErrorCode + Expr string + Args []interface{} +} + +func (e *Error) Error() string { + if len(e.Args) == 0 { + return "error parsing regexp: " + e.Code.String() + " in `" + e.Expr + "`" + } + return "error parsing regexp: " + fmt.Sprintf(e.Code.String(), e.Args...) + " in `" + e.Expr + "`" +} + +// An ErrorCode describes a failure to parse a regular expression. +type ErrorCode string + +const ( + // internal issue + ErrInternalError ErrorCode = "regexp/syntax: internal error" + // Parser errors + ErrUnterminatedComment = "unterminated comment" + ErrInvalidCharRange = "invalid character class range" + ErrInvalidRepeatSize = "invalid repeat count" + ErrInvalidUTF8 = "invalid UTF-8" + ErrCaptureGroupOutOfRange = "capture group number out of range" + ErrUnexpectedParen = "unexpected )" + ErrMissingParen = "missing closing )" + ErrMissingBrace = "missing closing }" + ErrInvalidRepeatOp = "invalid nested repetition operator" + ErrMissingRepeatArgument = "missing argument to repetition operator" + ErrConditionalExpression = "illegal conditional (?(...)) expression" + ErrTooManyAlternates = "too many | in (?()|)" + ErrUnrecognizedGrouping = "unrecognized grouping construct: (%v" + ErrInvalidGroupName = "invalid group name: group names must begin with a word character and have a matching terminator" + ErrCapNumNotZero = "capture number cannot be zero" + ErrUndefinedBackRef = "reference to undefined group number %v" + ErrUndefinedNameRef = "reference to undefined group name %v" + ErrAlternationCantCapture = "alternation conditions do not capture and cannot be named" + ErrAlternationCantHaveComment = "alternation conditions cannot be comments" + ErrMalformedReference = "(?(%v) ) malformed" + ErrUndefinedReference = "(?(%v) ) reference to undefined group" + ErrIllegalEndEscape = "illegal \\ at end of pattern" + ErrMalformedSlashP = "malformed \\p{X} character escape" + ErrIncompleteSlashP = "incomplete \\p{X} character escape" + ErrUnknownSlashP = "unknown unicode category, script, or property '%v'" + ErrUnrecognizedEscape = "unrecognized escape sequence \\%v" + ErrMissingControl = "missing control character" + ErrUnrecognizedControl = "unrecognized control character" + ErrTooFewHex = "insufficient hexadecimal digits" + ErrInvalidHex = "hex values may not be larger than 0x10FFFF" + ErrMalformedNameRef = "malformed \\k<...> named back reference" + ErrBadClassInCharRange = "cannot include class \\%v in character range" + ErrUnterminatedBracket = "unterminated [] set" + ErrSubtractionMustBeLast = "a subtraction must be the last element in a character class" + ErrReversedCharRange = "[%c-%c] range in reverse order" +) + +func (e ErrorCode) String() string { + return string(e) +} + +type parser struct { + stack *regexNode + group *regexNode + alternation *regexNode + concatenation *regexNode + unit *regexNode + + patternRaw string + pattern []rune + + currentPos int + specialCase *unicode.SpecialCase + + autocap int + capcount int + captop int + capsize int + + caps map[int]int + capnames map[string]int + + capnumlist []int + capnamelist []string + + options RegexOptions + optionsStack []RegexOptions + ignoreNextParen bool +} + +const ( + maxValueDiv10 int = math.MaxInt32 / 10 + maxValueMod10 = math.MaxInt32 % 10 +) + +// Parse converts a regex string into a parse tree +func Parse(re string, op RegexOptions) (*RegexTree, error) { + p := parser{ + options: op, + caps: make(map[int]int), + } + p.setPattern(re) + + if err := p.countCaptures(); err != nil { + return nil, err + } + + p.reset(op) + root, err := p.scanRegex() + + if err != nil { + return nil, err + } + tree := &RegexTree{ + root: root, + caps: p.caps, + capnumlist: p.capnumlist, + captop: p.captop, + Capnames: p.capnames, + Caplist: p.capnamelist, + options: op, + } + + if tree.options&Debug > 0 { + os.Stdout.WriteString(tree.Dump()) + } + + return tree, nil +} + +func (p *parser) setPattern(pattern string) { + p.patternRaw = pattern + p.pattern = make([]rune, 0, len(pattern)) + + //populate our rune array to handle utf8 encoding + for _, r := range pattern { + p.pattern = append(p.pattern, r) + } +} +func (p *parser) getErr(code ErrorCode, args ...interface{}) error { + return &Error{Code: code, Expr: p.patternRaw, Args: args} +} + +func (p *parser) noteCaptureSlot(i, pos int) { + if _, ok := p.caps[i]; !ok { + // the rhs of the hashtable isn't used in the parser + p.caps[i] = pos + p.capcount++ + + if p.captop <= i { + if i == math.MaxInt32 { + p.captop = i + } else { + p.captop = i + 1 + } + } + } +} + +func (p *parser) noteCaptureName(name string, pos int) { + if p.capnames == nil { + p.capnames = make(map[string]int) + } + + if _, ok := p.capnames[name]; !ok { + p.capnames[name] = pos + p.capnamelist = append(p.capnamelist, name) + } +} + +func (p *parser) assignNameSlots() { + if p.capnames != nil { + for _, name := range p.capnamelist { + for p.isCaptureSlot(p.autocap) { + p.autocap++ + } + pos := p.capnames[name] + p.capnames[name] = p.autocap + p.noteCaptureSlot(p.autocap, pos) + + p.autocap++ + } + } + + // if the caps array has at least one gap, construct the list of used slots + if p.capcount < p.captop { + p.capnumlist = make([]int, p.capcount) + i := 0 + + for k := range p.caps { + p.capnumlist[i] = k + i++ + } + + sort.Ints(p.capnumlist) + } + + // merge capsnumlist into capnamelist + if p.capnames != nil || p.capnumlist != nil { + var oldcapnamelist []string + var next int + var k int + + if p.capnames == nil { + oldcapnamelist = nil + p.capnames = make(map[string]int) + p.capnamelist = []string{} + next = -1 + } else { + oldcapnamelist = p.capnamelist + p.capnamelist = []string{} + next = p.capnames[oldcapnamelist[0]] + } + + for i := 0; i < p.capcount; i++ { + j := i + if p.capnumlist != nil { + j = p.capnumlist[i] + } + + if next == j { + p.capnamelist = append(p.capnamelist, oldcapnamelist[k]) + k++ + + if k == len(oldcapnamelist) { + next = -1 + } else { + next = p.capnames[oldcapnamelist[k]] + } + + } else { + //feature: culture? + str := strconv.Itoa(j) + p.capnamelist = append(p.capnamelist, str) + p.capnames[str] = j + } + } + } +} + +func (p *parser) consumeAutocap() int { + r := p.autocap + p.autocap++ + return r +} + +// CountCaptures is a prescanner for deducing the slots used for +// captures by doing a partial tokenization of the pattern. +func (p *parser) countCaptures() error { + var ch rune + + p.noteCaptureSlot(0, 0) + + p.autocap = 1 + + for p.charsRight() > 0 { + pos := p.textpos() + ch = p.moveRightGetChar() + switch ch { + case '\\': + if p.charsRight() > 0 { + p.scanBackslash(true) + } + + case '#': + if p.useOptionX() { + p.moveLeft() + p.scanBlank() + } + + case '[': + p.scanCharSet(false, true) + + case ')': + if !p.emptyOptionsStack() { + p.popOptions() + } + + case '(': + if p.charsRight() >= 2 && p.rightChar(1) == '#' && p.rightChar(0) == '?' { + p.moveLeft() + p.scanBlank() + } else { + p.pushOptions() + if p.charsRight() > 0 && p.rightChar(0) == '?' { + // we have (?... + p.moveRight(1) + + if p.charsRight() > 1 && (p.rightChar(0) == '<' || p.rightChar(0) == '\'') { + // named group: (?<... or (?'... + + p.moveRight(1) + ch = p.rightChar(0) + + if ch != '0' && IsWordChar(ch) { + if ch >= '1' && ch <= '9' { + dec, err := p.scanDecimal() + if err != nil { + return err + } + p.noteCaptureSlot(dec, pos) + } else { + p.noteCaptureName(p.scanCapname(), pos) + } + } + } else if p.useRE2() && p.charsRight() > 2 && (p.rightChar(0) == 'P' && p.rightChar(1) == '<') { + // RE2-compat (?P<) + p.moveRight(2) + ch = p.rightChar(0) + if IsWordChar(ch) { + p.noteCaptureName(p.scanCapname(), pos) + } + + } else { + // (?... + + // get the options if it's an option construct (?cimsx-cimsx...) + p.scanOptions() + + if p.charsRight() > 0 { + if p.rightChar(0) == ')' { + // (?cimsx-cimsx) + p.moveRight(1) + p.popKeepOptions() + } else if p.rightChar(0) == '(' { + // alternation construct: (?(foo)yes|no) + // ignore the next paren so we don't capture the condition + p.ignoreNextParen = true + + // break from here so we don't reset ignoreNextParen + continue + } + } + } + } else { + if !p.useOptionN() && !p.ignoreNextParen { + p.noteCaptureSlot(p.consumeAutocap(), pos) + } + } + } + + p.ignoreNextParen = false + + } + } + + p.assignNameSlots() + return nil +} + +func (p *parser) reset(topopts RegexOptions) { + p.currentPos = 0 + p.autocap = 1 + p.ignoreNextParen = false + + if len(p.optionsStack) > 0 { + p.optionsStack = p.optionsStack[:0] + } + + p.options = topopts + p.stack = nil +} + +func (p *parser) scanRegex() (*regexNode, error) { + ch := '@' // nonspecial ch, means at beginning + isQuant := false + + p.startGroup(newRegexNodeMN(ntCapture, p.options, 0, -1)) + + for p.charsRight() > 0 { + wasPrevQuantifier := isQuant + isQuant = false + + if err := p.scanBlank(); err != nil { + return nil, err + } + + startpos := p.textpos() + + // move past all of the normal characters. We'll stop when we hit some kind of control character, + // or if IgnorePatternWhiteSpace is on, we'll stop when we see some whitespace. + if p.useOptionX() { + for p.charsRight() > 0 { + ch = p.rightChar(0) + //UGLY: clean up, this is ugly + if !(!isStopperX(ch) || (ch == '{' && !p.isTrueQuantifier())) { + break + } + p.moveRight(1) + } + } else { + for p.charsRight() > 0 { + ch = p.rightChar(0) + if !(!isSpecial(ch) || ch == '{' && !p.isTrueQuantifier()) { + break + } + p.moveRight(1) + } + } + + endpos := p.textpos() + + p.scanBlank() + + if p.charsRight() == 0 { + ch = '!' // nonspecial, means at end + } else if ch = p.rightChar(0); isSpecial(ch) { + isQuant = isQuantifier(ch) + p.moveRight(1) + } else { + ch = ' ' // nonspecial, means at ordinary char + } + + if startpos < endpos { + cchUnquantified := endpos - startpos + if isQuant { + cchUnquantified-- + } + wasPrevQuantifier = false + + if cchUnquantified > 0 { + p.addToConcatenate(startpos, cchUnquantified, false) + } + + if isQuant { + p.addUnitOne(p.charAt(endpos - 1)) + } + } + + switch ch { + case '!': + goto BreakOuterScan + + case ' ': + goto ContinueOuterScan + + case '[': + cc, err := p.scanCharSet(p.useOptionI(), false) + if err != nil { + return nil, err + } + p.addUnitSet(cc) + + case '(': + p.pushOptions() + + if grouper, err := p.scanGroupOpen(); err != nil { + return nil, err + } else if grouper == nil { + p.popKeepOptions() + } else { + p.pushGroup() + p.startGroup(grouper) + } + + continue + + case '|': + p.addAlternate() + goto ContinueOuterScan + + case ')': + if p.emptyStack() { + return nil, p.getErr(ErrUnexpectedParen) + } + + if err := p.addGroup(); err != nil { + return nil, err + } + if err := p.popGroup(); err != nil { + return nil, err + } + p.popOptions() + + if p.unit == nil { + goto ContinueOuterScan + } + + case '\\': + n, err := p.scanBackslash(false) + if err != nil { + return nil, err + } + p.addUnitNode(n) + + case '^': + if p.useOptionM() { + p.addUnitType(ntBol) + } else { + p.addUnitType(ntBeginning) + } + + case '$': + if p.useOptionM() { + p.addUnitType(ntEol) + } else { + p.addUnitType(ntEndZ) + } + + case '.': + if p.useOptionS() { + p.addUnitSet(AnyClass()) + } else if p.useOptionE() { + p.addUnitSet(ECMAAnyClass()) + } else { + p.addUnitNotone('\n') + } + + case '{', '*', '+', '?': + if p.unit == nil { + if wasPrevQuantifier { + return nil, p.getErr(ErrInvalidRepeatOp) + } else { + return nil, p.getErr(ErrMissingRepeatArgument) + } + } + p.moveLeft() + + default: + return nil, p.getErr(ErrInternalError) + } + + if err := p.scanBlank(); err != nil { + return nil, err + } + + if p.charsRight() > 0 { + isQuant = p.isTrueQuantifier() + } + if p.charsRight() == 0 || !isQuant { + //maintain odd C# assignment order -- not sure if required, could clean up? + p.addConcatenate() + goto ContinueOuterScan + } + + ch = p.moveRightGetChar() + + // Handle quantifiers + for p.unit != nil { + var min, max int + var lazy bool + + switch ch { + case '*': + min = 0 + max = math.MaxInt32 + + case '?': + min = 0 + max = 1 + + case '+': + min = 1 + max = math.MaxInt32 + + case '{': + { + var err error + startpos = p.textpos() + if min, err = p.scanDecimal(); err != nil { + return nil, err + } + max = min + if startpos < p.textpos() { + if p.charsRight() > 0 && p.rightChar(0) == ',' { + p.moveRight(1) + if p.charsRight() == 0 || p.rightChar(0) == '}' { + max = math.MaxInt32 + } else { + if max, err = p.scanDecimal(); err != nil { + return nil, err + } + } + } + } + + if startpos == p.textpos() || p.charsRight() == 0 || p.moveRightGetChar() != '}' { + p.addConcatenate() + p.textto(startpos - 1) + goto ContinueOuterScan + } + } + + default: + return nil, p.getErr(ErrInternalError) + } + + if err := p.scanBlank(); err != nil { + return nil, err + } + + if p.charsRight() == 0 || p.rightChar(0) != '?' { + lazy = false + } else { + p.moveRight(1) + lazy = true + } + + if min > max { + return nil, p.getErr(ErrInvalidRepeatSize) + } + + p.addConcatenate3(lazy, min, max) + } + + ContinueOuterScan: + } + +BreakOuterScan: + ; + + if !p.emptyStack() { + return nil, p.getErr(ErrMissingParen) + } + + if err := p.addGroup(); err != nil { + return nil, err + } + + return p.unit, nil + +} + +/* + * Simple parsing for replacement patterns + */ +func (p *parser) scanReplacement() (*regexNode, error) { + var c, startpos int + + p.concatenation = newRegexNode(ntConcatenate, p.options) + + for { + c = p.charsRight() + if c == 0 { + break + } + + startpos = p.textpos() + + for c > 0 && p.rightChar(0) != '$' { + p.moveRight(1) + c-- + } + + p.addToConcatenate(startpos, p.textpos()-startpos, true) + + if c > 0 { + if p.moveRightGetChar() == '$' { + n, err := p.scanDollar() + if err != nil { + return nil, err + } + p.addUnitNode(n) + } + p.addConcatenate() + } + } + + return p.concatenation, nil +} + +/* + * Scans $ patterns recognized within replacement patterns + */ +func (p *parser) scanDollar() (*regexNode, error) { + if p.charsRight() == 0 { + return newRegexNodeCh(ntOne, p.options, '$'), nil + } + + ch := p.rightChar(0) + angled := false + backpos := p.textpos() + lastEndPos := backpos + + // Note angle + + if ch == '{' && p.charsRight() > 1 { + angled = true + p.moveRight(1) + ch = p.rightChar(0) + } + + // Try to parse backreference: \1 or \{1} or \{cap} + + if ch >= '0' && ch <= '9' { + if !angled && p.useOptionE() { + capnum := -1 + newcapnum := int(ch - '0') + p.moveRight(1) + if p.isCaptureSlot(newcapnum) { + capnum = newcapnum + lastEndPos = p.textpos() + } + + for p.charsRight() > 0 { + ch = p.rightChar(0) + if ch < '0' || ch > '9' { + break + } + digit := int(ch - '0') + if newcapnum > maxValueDiv10 || (newcapnum == maxValueDiv10 && digit > maxValueMod10) { + return nil, p.getErr(ErrCaptureGroupOutOfRange) + } + + newcapnum = newcapnum*10 + digit + + p.moveRight(1) + if p.isCaptureSlot(newcapnum) { + capnum = newcapnum + lastEndPos = p.textpos() + } + } + p.textto(lastEndPos) + if capnum >= 0 { + return newRegexNodeM(ntRef, p.options, capnum), nil + } + } else { + capnum, err := p.scanDecimal() + if err != nil { + return nil, err + } + if !angled || p.charsRight() > 0 && p.moveRightGetChar() == '}' { + if p.isCaptureSlot(capnum) { + return newRegexNodeM(ntRef, p.options, capnum), nil + } + } + } + } else if angled && IsWordChar(ch) { + capname := p.scanCapname() + + if p.charsRight() > 0 && p.moveRightGetChar() == '}' { + if p.isCaptureName(capname) { + return newRegexNodeM(ntRef, p.options, p.captureSlotFromName(capname)), nil + } + } + } else if !angled { + capnum := 1 + + switch ch { + case '$': + p.moveRight(1) + return newRegexNodeCh(ntOne, p.options, '$'), nil + case '&': + capnum = 0 + case '`': + capnum = replaceLeftPortion + case '\'': + capnum = replaceRightPortion + case '+': + capnum = replaceLastGroup + case '_': + capnum = replaceWholeString + } + + if capnum != 1 { + p.moveRight(1) + return newRegexNodeM(ntRef, p.options, capnum), nil + } + } + + // unrecognized $: literalize + + p.textto(backpos) + return newRegexNodeCh(ntOne, p.options, '$'), nil +} + +// scanGroupOpen scans chars following a '(' (not counting the '('), and returns +// a RegexNode for the type of group scanned, or nil if the group +// simply changed options (?cimsx-cimsx) or was a comment (#...). +func (p *parser) scanGroupOpen() (*regexNode, error) { + var ch rune + var nt nodeType + var err error + close := '>' + start := p.textpos() + + // just return a RegexNode if we have: + // 1. "(" followed by nothing + // 2. "(x" where x != ? + // 3. "(?)" + if p.charsRight() == 0 || p.rightChar(0) != '?' || (p.rightChar(0) == '?' && (p.charsRight() > 1 && p.rightChar(1) == ')')) { + if p.useOptionN() || p.ignoreNextParen { + p.ignoreNextParen = false + return newRegexNode(ntGroup, p.options), nil + } + return newRegexNodeMN(ntCapture, p.options, p.consumeAutocap(), -1), nil + } + + p.moveRight(1) + + for { + if p.charsRight() == 0 { + break + } + + switch ch = p.moveRightGetChar(); ch { + case ':': + nt = ntGroup + + case '=': + p.options &= ^RightToLeft + nt = ntRequire + + case '!': + p.options &= ^RightToLeft + nt = ntPrevent + + case '>': + nt = ntGreedy + + case '\'': + close = '\'' + fallthrough + + case '<': + if p.charsRight() == 0 { + goto BreakRecognize + } + + switch ch = p.moveRightGetChar(); ch { + case '=': + if close == '\'' { + goto BreakRecognize + } + + p.options |= RightToLeft + nt = ntRequire + + case '!': + if close == '\'' { + goto BreakRecognize + } + + p.options |= RightToLeft + nt = ntPrevent + + default: + p.moveLeft() + capnum := -1 + uncapnum := -1 + proceed := false + + // grab part before - + + if ch >= '0' && ch <= '9' { + if capnum, err = p.scanDecimal(); err != nil { + return nil, err + } + + if !p.isCaptureSlot(capnum) { + capnum = -1 + } + + // check if we have bogus characters after the number + if p.charsRight() > 0 && !(p.rightChar(0) == close || p.rightChar(0) == '-') { + return nil, p.getErr(ErrInvalidGroupName) + } + if capnum == 0 { + return nil, p.getErr(ErrCapNumNotZero) + } + } else if IsWordChar(ch) { + capname := p.scanCapname() + + if p.isCaptureName(capname) { + capnum = p.captureSlotFromName(capname) + } + + // check if we have bogus character after the name + if p.charsRight() > 0 && !(p.rightChar(0) == close || p.rightChar(0) == '-') { + return nil, p.getErr(ErrInvalidGroupName) + } + } else if ch == '-' { + proceed = true + } else { + // bad group name - starts with something other than a word character and isn't a number + return nil, p.getErr(ErrInvalidGroupName) + } + + // grab part after - if any + + if (capnum != -1 || proceed == true) && p.charsRight() > 0 && p.rightChar(0) == '-' { + p.moveRight(1) + + //no more chars left, no closing char, etc + if p.charsRight() == 0 { + return nil, p.getErr(ErrInvalidGroupName) + } + + ch = p.rightChar(0) + if ch >= '0' && ch <= '9' { + if uncapnum, err = p.scanDecimal(); err != nil { + return nil, err + } + + if !p.isCaptureSlot(uncapnum) { + return nil, p.getErr(ErrUndefinedBackRef, uncapnum) + } + + // check if we have bogus characters after the number + if p.charsRight() > 0 && p.rightChar(0) != close { + return nil, p.getErr(ErrInvalidGroupName) + } + } else if IsWordChar(ch) { + uncapname := p.scanCapname() + + if !p.isCaptureName(uncapname) { + return nil, p.getErr(ErrUndefinedNameRef, uncapname) + } + uncapnum = p.captureSlotFromName(uncapname) + + // check if we have bogus character after the name + if p.charsRight() > 0 && p.rightChar(0) != close { + return nil, p.getErr(ErrInvalidGroupName) + } + } else { + // bad group name - starts with something other than a word character and isn't a number + return nil, p.getErr(ErrInvalidGroupName) + } + } + + // actually make the node + + if (capnum != -1 || uncapnum != -1) && p.charsRight() > 0 && p.moveRightGetChar() == close { + return newRegexNodeMN(ntCapture, p.options, capnum, uncapnum), nil + } + goto BreakRecognize + } + + case '(': + // alternation construct (?(...) | ) + + parenPos := p.textpos() + if p.charsRight() > 0 { + ch = p.rightChar(0) + + // check if the alternation condition is a backref + if ch >= '0' && ch <= '9' { + var capnum int + if capnum, err = p.scanDecimal(); err != nil { + return nil, err + } + if p.charsRight() > 0 && p.moveRightGetChar() == ')' { + if p.isCaptureSlot(capnum) { + return newRegexNodeM(ntTestref, p.options, capnum), nil + } + return nil, p.getErr(ErrUndefinedReference, capnum) + } + + return nil, p.getErr(ErrMalformedReference, capnum) + + } else if IsWordChar(ch) { + capname := p.scanCapname() + + if p.isCaptureName(capname) && p.charsRight() > 0 && p.moveRightGetChar() == ')' { + return newRegexNodeM(ntTestref, p.options, p.captureSlotFromName(capname)), nil + } + } + } + // not a backref + nt = ntTestgroup + p.textto(parenPos - 1) // jump to the start of the parentheses + p.ignoreNextParen = true // but make sure we don't try to capture the insides + + charsRight := p.charsRight() + if charsRight >= 3 && p.rightChar(1) == '?' { + rightchar2 := p.rightChar(2) + // disallow comments in the condition + if rightchar2 == '#' { + return nil, p.getErr(ErrAlternationCantHaveComment) + } + + // disallow named capture group (?<..>..) in the condition + if rightchar2 == '\'' { + return nil, p.getErr(ErrAlternationCantCapture) + } + + if charsRight >= 4 && (rightchar2 == '<' && p.rightChar(3) != '!' && p.rightChar(3) != '=') { + return nil, p.getErr(ErrAlternationCantCapture) + } + } + + case 'P': + if p.useRE2() { + // support for P syntax + if p.charsRight() < 3 { + goto BreakRecognize + } + + ch = p.moveRightGetChar() + if ch != '<' { + goto BreakRecognize + } + + ch = p.moveRightGetChar() + p.moveLeft() + + if IsWordChar(ch) { + capnum := -1 + capname := p.scanCapname() + + if p.isCaptureName(capname) { + capnum = p.captureSlotFromName(capname) + } + + // check if we have bogus character after the name + if p.charsRight() > 0 && p.rightChar(0) != '>' { + return nil, p.getErr(ErrInvalidGroupName) + } + + // actually make the node + + if capnum != -1 && p.charsRight() > 0 && p.moveRightGetChar() == '>' { + return newRegexNodeMN(ntCapture, p.options, capnum, -1), nil + } + goto BreakRecognize + + } else { + // bad group name - starts with something other than a word character and isn't a number + return nil, p.getErr(ErrInvalidGroupName) + } + } + // if we're not using RE2 compat mode then + // we just behave like normal + fallthrough + + default: + p.moveLeft() + + nt = ntGroup + // disallow options in the children of a testgroup node + if p.group.t != ntTestgroup { + p.scanOptions() + } + if p.charsRight() == 0 { + goto BreakRecognize + } + + if ch = p.moveRightGetChar(); ch == ')' { + return nil, nil + } + + if ch != ':' { + goto BreakRecognize + } + + } + + return newRegexNode(nt, p.options), nil + } + +BreakRecognize: + + // break Recognize comes here + + return nil, p.getErr(ErrUnrecognizedGrouping, string(p.pattern[start:p.textpos()])) +} + +// scans backslash specials and basics +func (p *parser) scanBackslash(scanOnly bool) (*regexNode, error) { + + if p.charsRight() == 0 { + return nil, p.getErr(ErrIllegalEndEscape) + } + + switch ch := p.rightChar(0); ch { + case 'b', 'B', 'A', 'G', 'Z', 'z': + p.moveRight(1) + return newRegexNode(p.typeFromCode(ch), p.options), nil + + case 'w': + p.moveRight(1) + if p.useOptionE() || p.useRE2() { + return newRegexNodeSet(ntSet, p.options, ECMAWordClass()), nil + } + return newRegexNodeSet(ntSet, p.options, WordClass()), nil + + case 'W': + p.moveRight(1) + if p.useOptionE() || p.useRE2() { + return newRegexNodeSet(ntSet, p.options, NotECMAWordClass()), nil + } + return newRegexNodeSet(ntSet, p.options, NotWordClass()), nil + + case 's': + p.moveRight(1) + if p.useOptionE() { + return newRegexNodeSet(ntSet, p.options, ECMASpaceClass()), nil + } else if p.useRE2() { + return newRegexNodeSet(ntSet, p.options, RE2SpaceClass()), nil + } + return newRegexNodeSet(ntSet, p.options, SpaceClass()), nil + + case 'S': + p.moveRight(1) + if p.useOptionE() { + return newRegexNodeSet(ntSet, p.options, NotECMASpaceClass()), nil + } else if p.useRE2() { + return newRegexNodeSet(ntSet, p.options, NotRE2SpaceClass()), nil + } + return newRegexNodeSet(ntSet, p.options, NotSpaceClass()), nil + + case 'd': + p.moveRight(1) + if p.useOptionE() || p.useRE2() { + return newRegexNodeSet(ntSet, p.options, ECMADigitClass()), nil + } + return newRegexNodeSet(ntSet, p.options, DigitClass()), nil + + case 'D': + p.moveRight(1) + if p.useOptionE() || p.useRE2() { + return newRegexNodeSet(ntSet, p.options, NotECMADigitClass()), nil + } + return newRegexNodeSet(ntSet, p.options, NotDigitClass()), nil + + case 'p', 'P': + p.moveRight(1) + prop, err := p.parseProperty() + if err != nil { + return nil, err + } + cc := &CharSet{} + cc.addCategory(prop, (ch != 'p'), p.useOptionI(), p.patternRaw) + if p.useOptionI() { + cc.addLowercase() + } + + return newRegexNodeSet(ntSet, p.options, cc), nil + + default: + return p.scanBasicBackslash(scanOnly) + } +} + +// Scans \-style backreferences and character escapes +func (p *parser) scanBasicBackslash(scanOnly bool) (*regexNode, error) { + if p.charsRight() == 0 { + return nil, p.getErr(ErrIllegalEndEscape) + } + angled := false + k := false + close := '\x00' + + backpos := p.textpos() + ch := p.rightChar(0) + + // Allow \k instead of \, which is now deprecated. + + // According to ECMAScript specification, \k is only parsed as a named group reference if + // there is at least one group name in the regexp. + // See https://www.ecma-international.org/ecma-262/#sec-isvalidregularexpressionliteral, step 7. + // Note, during the first (scanOnly) run we may not have all group names scanned, but that's ok. + if ch == 'k' && (!p.useOptionE() || len(p.capnames) > 0) { + if p.charsRight() >= 2 { + p.moveRight(1) + ch = p.moveRightGetChar() + + if ch == '<' || (!p.useOptionE() && ch == '\'') { // No support for \k'name' in ECMAScript + angled = true + if ch == '\'' { + close = '\'' + } else { + close = '>' + } + } + } + + if !angled || p.charsRight() <= 0 { + return nil, p.getErr(ErrMalformedNameRef) + } + + ch = p.rightChar(0) + k = true + + } else if !p.useOptionE() && (ch == '<' || ch == '\'') && p.charsRight() > 1 { // Note angle without \g + angled = true + if ch == '\'' { + close = '\'' + } else { + close = '>' + } + + p.moveRight(1) + ch = p.rightChar(0) + } + + // Try to parse backreference: \<1> or \ + + if angled && ch >= '0' && ch <= '9' { + capnum, err := p.scanDecimal() + if err != nil { + return nil, err + } + + if p.charsRight() > 0 && p.moveRightGetChar() == close { + if p.isCaptureSlot(capnum) { + return newRegexNodeM(ntRef, p.options, capnum), nil + } + return nil, p.getErr(ErrUndefinedBackRef, capnum) + } + } else if !angled && ch >= '1' && ch <= '9' { // Try to parse backreference or octal: \1 + capnum, err := p.scanDecimal() + if err != nil { + return nil, err + } + + if scanOnly { + return nil, nil + } + + if p.isCaptureSlot(capnum) { + return newRegexNodeM(ntRef, p.options, capnum), nil + } + if capnum <= 9 && !p.useOptionE() { + return nil, p.getErr(ErrUndefinedBackRef, capnum) + } + + } else if angled { + capname := p.scanCapname() + + if capname != "" && p.charsRight() > 0 && p.moveRightGetChar() == close { + + if scanOnly { + return nil, nil + } + + if p.isCaptureName(capname) { + return newRegexNodeM(ntRef, p.options, p.captureSlotFromName(capname)), nil + } + return nil, p.getErr(ErrUndefinedNameRef, capname) + } else { + if k { + return nil, p.getErr(ErrMalformedNameRef) + } + } + } + + // Not backreference: must be char code + + p.textto(backpos) + ch, err := p.scanCharEscape() + if err != nil { + return nil, err + } + + if scanOnly { + return nil, nil + } + + if p.useOptionI() { + ch = unicode.ToLower(ch) + } + + return newRegexNodeCh(ntOne, p.options, ch), nil +} + +// Scans X for \p{X} or \P{X} +func (p *parser) parseProperty() (string, error) { + // RE2 and PCRE supports \pX syntax (no {} and only 1 letter unicode cats supported) + // since this is purely additive syntax it's not behind a flag + if p.charsRight() >= 1 && p.rightChar(0) != '{' { + ch := string(p.moveRightGetChar()) + // check if it's a valid cat + if !isValidUnicodeCat(ch) { + return "", p.getErr(ErrUnknownSlashP, ch) + } + return ch, nil + } + + if p.charsRight() < 3 { + return "", p.getErr(ErrIncompleteSlashP) + } + ch := p.moveRightGetChar() + if ch != '{' { + return "", p.getErr(ErrMalformedSlashP) + } + + startpos := p.textpos() + for p.charsRight() > 0 { + ch = p.moveRightGetChar() + if !(IsWordChar(ch) || ch == '-') { + p.moveLeft() + break + } + } + capname := string(p.pattern[startpos:p.textpos()]) + + if p.charsRight() == 0 || p.moveRightGetChar() != '}' { + return "", p.getErr(ErrIncompleteSlashP) + } + + if !isValidUnicodeCat(capname) { + return "", p.getErr(ErrUnknownSlashP, capname) + } + + return capname, nil +} + +// Returns ReNode type for zero-length assertions with a \ code. +func (p *parser) typeFromCode(ch rune) nodeType { + switch ch { + case 'b': + if p.useOptionE() { + return ntECMABoundary + } + return ntBoundary + case 'B': + if p.useOptionE() { + return ntNonECMABoundary + } + return ntNonboundary + case 'A': + return ntBeginning + case 'G': + return ntStart + case 'Z': + return ntEndZ + case 'z': + return ntEnd + default: + return ntNothing + } +} + +// Scans whitespace or x-mode comments. +func (p *parser) scanBlank() error { + if p.useOptionX() { + for { + for p.charsRight() > 0 && isSpace(p.rightChar(0)) { + p.moveRight(1) + } + + if p.charsRight() == 0 { + break + } + + if p.rightChar(0) == '#' { + for p.charsRight() > 0 && p.rightChar(0) != '\n' { + p.moveRight(1) + } + } else if p.charsRight() >= 3 && p.rightChar(2) == '#' && + p.rightChar(1) == '?' && p.rightChar(0) == '(' { + for p.charsRight() > 0 && p.rightChar(0) != ')' { + p.moveRight(1) + } + if p.charsRight() == 0 { + return p.getErr(ErrUnterminatedComment) + } + p.moveRight(1) + } else { + break + } + } + } else { + for { + if p.charsRight() < 3 || p.rightChar(2) != '#' || + p.rightChar(1) != '?' || p.rightChar(0) != '(' { + return nil + } + + for p.charsRight() > 0 && p.rightChar(0) != ')' { + p.moveRight(1) + } + if p.charsRight() == 0 { + return p.getErr(ErrUnterminatedComment) + } + p.moveRight(1) + } + } + return nil +} + +func (p *parser) scanCapname() string { + startpos := p.textpos() + + for p.charsRight() > 0 { + if !IsWordChar(p.moveRightGetChar()) { + p.moveLeft() + break + } + } + + return string(p.pattern[startpos:p.textpos()]) +} + +// Scans contents of [] (not including []'s), and converts to a set. +func (p *parser) scanCharSet(caseInsensitive, scanOnly bool) (*CharSet, error) { + ch := '\x00' + chPrev := '\x00' + inRange := false + firstChar := true + closed := false + + var cc *CharSet + if !scanOnly { + cc = &CharSet{} + } + + if p.charsRight() > 0 && p.rightChar(0) == '^' { + p.moveRight(1) + if !scanOnly { + cc.negate = true + } + } + + for ; p.charsRight() > 0; firstChar = false { + fTranslatedChar := false + ch = p.moveRightGetChar() + if ch == ']' { + if !firstChar { + closed = true + break + } else if p.useOptionE() { + if !scanOnly { + cc.addRanges(NoneClass().ranges) + } + closed = true + break + } + + } else if ch == '\\' && p.charsRight() > 0 { + switch ch = p.moveRightGetChar(); ch { + case 'D', 'd': + if !scanOnly { + if inRange { + return nil, p.getErr(ErrBadClassInCharRange, ch) + } + cc.addDigit(p.useOptionE() || p.useRE2(), ch == 'D', p.patternRaw) + } + continue + + case 'S', 's': + if !scanOnly { + if inRange { + return nil, p.getErr(ErrBadClassInCharRange, ch) + } + cc.addSpace(p.useOptionE(), p.useRE2(), ch == 'S') + } + continue + + case 'W', 'w': + if !scanOnly { + if inRange { + return nil, p.getErr(ErrBadClassInCharRange, ch) + } + + cc.addWord(p.useOptionE() || p.useRE2(), ch == 'W') + } + continue + + case 'p', 'P': + if !scanOnly { + if inRange { + return nil, p.getErr(ErrBadClassInCharRange, ch) + } + prop, err := p.parseProperty() + if err != nil { + return nil, err + } + cc.addCategory(prop, (ch != 'p'), caseInsensitive, p.patternRaw) + } else { + p.parseProperty() + } + + continue + + case '-': + if !scanOnly { + cc.addRange(ch, ch) + } + continue + + default: + p.moveLeft() + var err error + ch, err = p.scanCharEscape() // non-literal character + if err != nil { + return nil, err + } + fTranslatedChar = true + break // this break will only break out of the switch + } + } else if ch == '[' { + // This is code for Posix style properties - [:Ll:] or [:IsTibetan:]. + // It currently doesn't do anything other than skip the whole thing! + if p.charsRight() > 0 && p.rightChar(0) == ':' && !inRange { + savePos := p.textpos() + + p.moveRight(1) + negate := false + if p.charsRight() > 1 && p.rightChar(0) == '^' { + negate = true + p.moveRight(1) + } + + nm := p.scanCapname() // snag the name + if !scanOnly && p.useRE2() { + // look up the name since these are valid for RE2 + // add the group based on the name + if ok := cc.addNamedASCII(nm, negate); !ok { + return nil, p.getErr(ErrInvalidCharRange) + } + } + if p.charsRight() < 2 || p.moveRightGetChar() != ':' || p.moveRightGetChar() != ']' { + p.textto(savePos) + } else if p.useRE2() { + // move on + continue + } + } + } + + if inRange { + inRange = false + if !scanOnly { + if ch == '[' && !fTranslatedChar && !firstChar { + // We thought we were in a range, but we're actually starting a subtraction. + // In that case, we'll add chPrev to our char class, skip the opening [, and + // scan the new character class recursively. + cc.addChar(chPrev) + sub, err := p.scanCharSet(caseInsensitive, false) + if err != nil { + return nil, err + } + cc.addSubtraction(sub) + + if p.charsRight() > 0 && p.rightChar(0) != ']' { + return nil, p.getErr(ErrSubtractionMustBeLast) + } + } else { + // a regular range, like a-z + if chPrev > ch { + return nil, p.getErr(ErrReversedCharRange, chPrev, ch) + } + cc.addRange(chPrev, ch) + } + } + } else if p.charsRight() >= 2 && p.rightChar(0) == '-' && p.rightChar(1) != ']' { + // this could be the start of a range + chPrev = ch + inRange = true + p.moveRight(1) + } else if p.charsRight() >= 1 && ch == '-' && !fTranslatedChar && p.rightChar(0) == '[' && !firstChar { + // we aren't in a range, and now there is a subtraction. Usually this happens + // only when a subtraction follows a range, like [a-z-[b]] + if !scanOnly { + p.moveRight(1) + sub, err := p.scanCharSet(caseInsensitive, false) + if err != nil { + return nil, err + } + cc.addSubtraction(sub) + + if p.charsRight() > 0 && p.rightChar(0) != ']' { + return nil, p.getErr(ErrSubtractionMustBeLast) + } + } else { + p.moveRight(1) + p.scanCharSet(caseInsensitive, true) + } + } else { + if !scanOnly { + cc.addRange(ch, ch) + } + } + } + + if !closed { + return nil, p.getErr(ErrUnterminatedBracket) + } + + if !scanOnly && caseInsensitive { + cc.addLowercase() + } + + return cc, nil +} + +// Scans any number of decimal digits (pegs value at 2^31-1 if too large) +func (p *parser) scanDecimal() (int, error) { + i := 0 + var d int + + for p.charsRight() > 0 { + d = int(p.rightChar(0) - '0') + if d < 0 || d > 9 { + break + } + p.moveRight(1) + + if i > maxValueDiv10 || (i == maxValueDiv10 && d > maxValueMod10) { + return 0, p.getErr(ErrCaptureGroupOutOfRange) + } + + i *= 10 + i += d + } + + return int(i), nil +} + +// Returns true for options allowed only at the top level +func isOnlyTopOption(option RegexOptions) bool { + return option == RightToLeft || option == ECMAScript || option == RE2 +} + +// Scans cimsx-cimsx option string, stops at the first unrecognized char. +func (p *parser) scanOptions() { + + for off := false; p.charsRight() > 0; p.moveRight(1) { + ch := p.rightChar(0) + + if ch == '-' { + off = true + } else if ch == '+' { + off = false + } else { + option := optionFromCode(ch) + if option == 0 || isOnlyTopOption(option) { + return + } + + if off { + p.options &= ^option + } else { + p.options |= option + } + } + } +} + +// Scans \ code for escape codes that map to single unicode chars. +func (p *parser) scanCharEscape() (r rune, err error) { + + ch := p.moveRightGetChar() + + if ch >= '0' && ch <= '7' { + p.moveLeft() + return p.scanOctal(), nil + } + + pos := p.textpos() + + switch ch { + case 'x': + // support for \x{HEX} syntax from Perl and PCRE + if p.charsRight() > 0 && p.rightChar(0) == '{' { + if p.useOptionE() { + return ch, nil + } + p.moveRight(1) + return p.scanHexUntilBrace() + } else { + r, err = p.scanHex(2) + } + case 'u': + // ECMAscript suppot \u{HEX} only if `u` is also set + if p.useOptionE() && p.useOptionU() && p.charsRight() > 0 && p.rightChar(0) == '{' { + p.moveRight(1) + return p.scanHexUntilBrace() + } else { + r, err = p.scanHex(4) + } + case 'a': + return '\u0007', nil + case 'b': + return '\b', nil + case 'e': + return '\u001B', nil + case 'f': + return '\f', nil + case 'n': + return '\n', nil + case 'r': + return '\r', nil + case 't': + return '\t', nil + case 'v': + return '\u000B', nil + case 'c': + r, err = p.scanControl() + default: + if !p.useOptionE() && !p.useRE2() && IsWordChar(ch) { + return 0, p.getErr(ErrUnrecognizedEscape, string(ch)) + } + return ch, nil + } + if err != nil && p.useOptionE() { + p.textto(pos) + return ch, nil + } + return +} + +// Grabs and converts an ascii control character +func (p *parser) scanControl() (rune, error) { + if p.charsRight() <= 0 { + return 0, p.getErr(ErrMissingControl) + } + + ch := p.moveRightGetChar() + + // \ca interpreted as \cA + + if ch >= 'a' && ch <= 'z' { + ch = (ch - ('a' - 'A')) + } + ch = (ch - '@') + if ch >= 0 && ch < ' ' { + return ch, nil + } + + return 0, p.getErr(ErrUnrecognizedControl) + +} + +// Scan hex digits until we hit a closing brace. +// Non-hex digits, hex value too large for UTF-8, or running out of chars are errors +func (p *parser) scanHexUntilBrace() (rune, error) { + // PCRE spec reads like unlimited hex digits are allowed, but unicode has a limit + // so we can enforce that + i := 0 + hasContent := false + + for p.charsRight() > 0 { + ch := p.moveRightGetChar() + if ch == '}' { + // hit our close brace, we're done here + // prevent \x{} + if !hasContent { + return 0, p.getErr(ErrTooFewHex) + } + return rune(i), nil + } + hasContent = true + // no brace needs to be hex digit + d := hexDigit(ch) + if d < 0 { + return 0, p.getErr(ErrMissingBrace) + } + + i *= 0x10 + i += d + + if i > unicode.MaxRune { + return 0, p.getErr(ErrInvalidHex) + } + } + + // we only make it here if we run out of digits without finding the brace + return 0, p.getErr(ErrMissingBrace) +} + +// Scans exactly c hex digits (c=2 for \xFF, c=4 for \uFFFF) +func (p *parser) scanHex(c int) (rune, error) { + + i := 0 + + if p.charsRight() >= c { + for c > 0 { + d := hexDigit(p.moveRightGetChar()) + if d < 0 { + break + } + i *= 0x10 + i += d + c-- + } + } + + if c > 0 { + return 0, p.getErr(ErrTooFewHex) + } + + return rune(i), nil +} + +// Returns n <= 0xF for a hex digit. +func hexDigit(ch rune) int { + + if d := uint(ch - '0'); d <= 9 { + return int(d) + } + + if d := uint(ch - 'a'); d <= 5 { + return int(d + 0xa) + } + + if d := uint(ch - 'A'); d <= 5 { + return int(d + 0xa) + } + + return -1 +} + +// Scans up to three octal digits (stops before exceeding 0377). +func (p *parser) scanOctal() rune { + // Consume octal chars only up to 3 digits and value 0377 + + c := 3 + + if c > p.charsRight() { + c = p.charsRight() + } + + //we know the first char is good because the caller had to check + i := 0 + d := int(p.rightChar(0) - '0') + for c > 0 && d <= 7 && d >= 0 { + if i >= 0x20 && p.useOptionE() { + break + } + i *= 8 + i += d + c-- + + p.moveRight(1) + if !p.rightMost() { + d = int(p.rightChar(0) - '0') + } + } + + // Octal codes only go up to 255. Any larger and the behavior that Perl follows + // is simply to truncate the high bits. + i &= 0xFF + + return rune(i) +} + +// Returns the current parsing position. +func (p *parser) textpos() int { + return p.currentPos +} + +// Zaps to a specific parsing position. +func (p *parser) textto(pos int) { + p.currentPos = pos +} + +// Returns the char at the right of the current parsing position and advances to the right. +func (p *parser) moveRightGetChar() rune { + ch := p.pattern[p.currentPos] + p.currentPos++ + return ch +} + +// Moves the current position to the right. +func (p *parser) moveRight(i int) { + // default would be 1 + p.currentPos += i +} + +// Moves the current parsing position one to the left. +func (p *parser) moveLeft() { + p.currentPos-- +} + +// Returns the char left of the current parsing position. +func (p *parser) charAt(i int) rune { + return p.pattern[i] +} + +// Returns the char i chars right of the current parsing position. +func (p *parser) rightChar(i int) rune { + // default would be 0 + return p.pattern[p.currentPos+i] +} + +// Number of characters to the right of the current parsing position. +func (p *parser) charsRight() int { + return len(p.pattern) - p.currentPos +} + +func (p *parser) rightMost() bool { + return p.currentPos == len(p.pattern) +} + +// Looks up the slot number for a given name +func (p *parser) captureSlotFromName(capname string) int { + return p.capnames[capname] +} + +// True if the capture slot was noted +func (p *parser) isCaptureSlot(i int) bool { + if p.caps != nil { + _, ok := p.caps[i] + return ok + } + + return (i >= 0 && i < p.capsize) +} + +// Looks up the slot number for a given name +func (p *parser) isCaptureName(capname string) bool { + if p.capnames == nil { + return false + } + + _, ok := p.capnames[capname] + return ok +} + +// option shortcuts + +// True if N option disabling '(' autocapture is on. +func (p *parser) useOptionN() bool { + return (p.options & ExplicitCapture) != 0 +} + +// True if I option enabling case-insensitivity is on. +func (p *parser) useOptionI() bool { + return (p.options & IgnoreCase) != 0 +} + +// True if M option altering meaning of $ and ^ is on. +func (p *parser) useOptionM() bool { + return (p.options & Multiline) != 0 +} + +// True if S option altering meaning of . is on. +func (p *parser) useOptionS() bool { + return (p.options & Singleline) != 0 +} + +// True if X option enabling whitespace/comment mode is on. +func (p *parser) useOptionX() bool { + return (p.options & IgnorePatternWhitespace) != 0 +} + +// True if E option enabling ECMAScript behavior on. +func (p *parser) useOptionE() bool { + return (p.options & ECMAScript) != 0 +} + +// true to use RE2 compatibility parsing behavior. +func (p *parser) useRE2() bool { + return (p.options & RE2) != 0 +} + +// True if U option enabling ECMAScript's Unicode behavior on. +func (p *parser) useOptionU() bool { + return (p.options & Unicode) != 0 +} + +// True if options stack is empty. +func (p *parser) emptyOptionsStack() bool { + return len(p.optionsStack) == 0 +} + +// Finish the current quantifiable (when a quantifier is not found or is not possible) +func (p *parser) addConcatenate() { + // The first (| inside a Testgroup group goes directly to the group + p.concatenation.addChild(p.unit) + p.unit = nil +} + +// Finish the current quantifiable (when a quantifier is found) +func (p *parser) addConcatenate3(lazy bool, min, max int) { + p.concatenation.addChild(p.unit.makeQuantifier(lazy, min, max)) + p.unit = nil +} + +// Sets the current unit to a single char node +func (p *parser) addUnitOne(ch rune) { + if p.useOptionI() { + ch = unicode.ToLower(ch) + } + + p.unit = newRegexNodeCh(ntOne, p.options, ch) +} + +// Sets the current unit to a single inverse-char node +func (p *parser) addUnitNotone(ch rune) { + if p.useOptionI() { + ch = unicode.ToLower(ch) + } + + p.unit = newRegexNodeCh(ntNotone, p.options, ch) +} + +// Sets the current unit to a single set node +func (p *parser) addUnitSet(set *CharSet) { + p.unit = newRegexNodeSet(ntSet, p.options, set) +} + +// Sets the current unit to a subtree +func (p *parser) addUnitNode(node *regexNode) { + p.unit = node +} + +// Sets the current unit to an assertion of the specified type +func (p *parser) addUnitType(t nodeType) { + p.unit = newRegexNode(t, p.options) +} + +// Finish the current group (in response to a ')' or end) +func (p *parser) addGroup() error { + if p.group.t == ntTestgroup || p.group.t == ntTestref { + p.group.addChild(p.concatenation.reverseLeft()) + if (p.group.t == ntTestref && len(p.group.children) > 2) || len(p.group.children) > 3 { + return p.getErr(ErrTooManyAlternates) + } + } else { + p.alternation.addChild(p.concatenation.reverseLeft()) + p.group.addChild(p.alternation) + } + + p.unit = p.group + return nil +} + +// Pops the option stack, but keeps the current options unchanged. +func (p *parser) popKeepOptions() { + lastIdx := len(p.optionsStack) - 1 + p.optionsStack = p.optionsStack[:lastIdx] +} + +// Recalls options from the stack. +func (p *parser) popOptions() { + lastIdx := len(p.optionsStack) - 1 + // get the last item on the stack and then remove it by reslicing + p.options = p.optionsStack[lastIdx] + p.optionsStack = p.optionsStack[:lastIdx] +} + +// Saves options on a stack. +func (p *parser) pushOptions() { + p.optionsStack = append(p.optionsStack, p.options) +} + +// Add a string to the last concatenate. +func (p *parser) addToConcatenate(pos, cch int, isReplacement bool) { + var node *regexNode + + if cch == 0 { + return + } + + if cch > 1 { + str := make([]rune, cch) + copy(str, p.pattern[pos:pos+cch]) + + if p.useOptionI() && !isReplacement { + // We do the ToLower character by character for consistency. With surrogate chars, doing + // a ToLower on the entire string could actually change the surrogate pair. This is more correct + // linguistically, but since Regex doesn't support surrogates, it's more important to be + // consistent. + for i := 0; i < len(str); i++ { + str[i] = unicode.ToLower(str[i]) + } + } + + node = newRegexNodeStr(ntMulti, p.options, str) + } else { + ch := p.charAt(pos) + + if p.useOptionI() && !isReplacement { + ch = unicode.ToLower(ch) + } + + node = newRegexNodeCh(ntOne, p.options, ch) + } + + p.concatenation.addChild(node) +} + +// Push the parser state (in response to an open paren) +func (p *parser) pushGroup() { + p.group.next = p.stack + p.alternation.next = p.group + p.concatenation.next = p.alternation + p.stack = p.concatenation +} + +// Remember the pushed state (in response to a ')') +func (p *parser) popGroup() error { + p.concatenation = p.stack + p.alternation = p.concatenation.next + p.group = p.alternation.next + p.stack = p.group.next + + // The first () inside a Testgroup group goes directly to the group + if p.group.t == ntTestgroup && len(p.group.children) == 0 { + if p.unit == nil { + return p.getErr(ErrConditionalExpression) + } + + p.group.addChild(p.unit) + p.unit = nil + } + return nil +} + +// True if the group stack is empty. +func (p *parser) emptyStack() bool { + return p.stack == nil +} + +// Start a new round for the parser state (in response to an open paren or string start) +func (p *parser) startGroup(openGroup *regexNode) { + p.group = openGroup + p.alternation = newRegexNode(ntAlternate, p.options) + p.concatenation = newRegexNode(ntConcatenate, p.options) +} + +// Finish the current concatenation (in response to a |) +func (p *parser) addAlternate() { + // The | parts inside a Testgroup group go directly to the group + + if p.group.t == ntTestgroup || p.group.t == ntTestref { + p.group.addChild(p.concatenation.reverseLeft()) + } else { + p.alternation.addChild(p.concatenation.reverseLeft()) + } + + p.concatenation = newRegexNode(ntConcatenate, p.options) +} + +// For categorizing ascii characters. + +const ( + Q byte = 5 // quantifier + S = 4 // ordinary stopper + Z = 3 // ScanBlank stopper + X = 2 // whitespace + E = 1 // should be escaped +) + +var _category = []byte{ + //01 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F + 0, 0, 0, 0, 0, 0, 0, 0, 0, X, X, X, X, X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? + X, 0, 0, Z, S, 0, 0, 0, S, S, Q, Q, 0, 0, S, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Q, + //@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 [ \ ] ^ _ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, S, S, 0, S, 0, + //'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 { | } ~ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Q, S, 0, 0, 0, +} + +func isSpace(ch rune) bool { + return (ch <= ' ' && _category[ch] == X) +} + +// Returns true for those characters that terminate a string of ordinary chars. +func isSpecial(ch rune) bool { + return (ch <= '|' && _category[ch] >= S) +} + +// Returns true for those characters that terminate a string of ordinary chars. +func isStopperX(ch rune) bool { + return (ch <= '|' && _category[ch] >= X) +} + +// Returns true for those characters that begin a quantifier. +func isQuantifier(ch rune) bool { + return (ch <= '{' && _category[ch] >= Q) +} + +func (p *parser) isTrueQuantifier() bool { + nChars := p.charsRight() + if nChars == 0 { + return false + } + + startpos := p.textpos() + ch := p.charAt(startpos) + if ch != '{' { + return ch <= '{' && _category[ch] >= Q + } + + //UGLY: this is ugly -- the original code was ugly too + pos := startpos + for { + nChars-- + if nChars <= 0 { + break + } + pos++ + ch = p.charAt(pos) + if ch < '0' || ch > '9' { + break + } + } + + if nChars == 0 || pos-startpos == 1 { + return false + } + if ch == '}' { + return true + } + if ch != ',' { + return false + } + for { + nChars-- + if nChars <= 0 { + break + } + pos++ + ch = p.charAt(pos) + if ch < '0' || ch > '9' { + break + } + } + + return nChars > 0 && ch == '}' +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/prefix.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/prefix.go new file mode 100644 index 0000000..f671688 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/prefix.go @@ -0,0 +1,896 @@ +package syntax + +import ( + "bytes" + "fmt" + "strconv" + "unicode" + "unicode/utf8" +) + +type Prefix struct { + PrefixStr []rune + PrefixSet CharSet + CaseInsensitive bool +} + +// It takes a RegexTree and computes the set of chars that can start it. +func getFirstCharsPrefix(tree *RegexTree) *Prefix { + s := regexFcd{ + fcStack: make([]regexFc, 32), + intStack: make([]int, 32), + } + fc := s.regexFCFromRegexTree(tree) + + if fc == nil || fc.nullable || fc.cc.IsEmpty() { + return nil + } + fcSet := fc.getFirstChars() + return &Prefix{PrefixSet: fcSet, CaseInsensitive: fc.caseInsensitive} +} + +type regexFcd struct { + intStack []int + intDepth int + fcStack []regexFc + fcDepth int + skipAllChildren bool // don't process any more children at the current level + skipchild bool // don't process the current child. + failed bool +} + +/* + * The main FC computation. It does a shortcutted depth-first walk + * through the tree and calls CalculateFC to emits code before + * and after each child of an interior node, and at each leaf. + */ +func (s *regexFcd) regexFCFromRegexTree(tree *RegexTree) *regexFc { + curNode := tree.root + curChild := 0 + + for { + if len(curNode.children) == 0 { + // This is a leaf node + s.calculateFC(curNode.t, curNode, 0) + } else if curChild < len(curNode.children) && !s.skipAllChildren { + // This is an interior node, and we have more children to analyze + s.calculateFC(curNode.t|beforeChild, curNode, curChild) + + if !s.skipchild { + curNode = curNode.children[curChild] + // this stack is how we get a depth first walk of the tree. + s.pushInt(curChild) + curChild = 0 + } else { + curChild++ + s.skipchild = false + } + continue + } + + // This is an interior node where we've finished analyzing all the children, or + // the end of a leaf node. + s.skipAllChildren = false + + if s.intIsEmpty() { + break + } + + curChild = s.popInt() + curNode = curNode.next + + s.calculateFC(curNode.t|afterChild, curNode, curChild) + if s.failed { + return nil + } + + curChild++ + } + + if s.fcIsEmpty() { + return nil + } + + return s.popFC() +} + +// To avoid recursion, we use a simple integer stack. +// This is the push. +func (s *regexFcd) pushInt(I int) { + if s.intDepth >= len(s.intStack) { + expanded := make([]int, s.intDepth*2) + copy(expanded, s.intStack) + s.intStack = expanded + } + + s.intStack[s.intDepth] = I + s.intDepth++ +} + +// True if the stack is empty. +func (s *regexFcd) intIsEmpty() bool { + return s.intDepth == 0 +} + +// This is the pop. +func (s *regexFcd) popInt() int { + s.intDepth-- + return s.intStack[s.intDepth] +} + +// We also use a stack of RegexFC objects. +// This is the push. +func (s *regexFcd) pushFC(fc regexFc) { + if s.fcDepth >= len(s.fcStack) { + expanded := make([]regexFc, s.fcDepth*2) + copy(expanded, s.fcStack) + s.fcStack = expanded + } + + s.fcStack[s.fcDepth] = fc + s.fcDepth++ +} + +// True if the stack is empty. +func (s *regexFcd) fcIsEmpty() bool { + return s.fcDepth == 0 +} + +// This is the pop. +func (s *regexFcd) popFC() *regexFc { + s.fcDepth-- + return &s.fcStack[s.fcDepth] +} + +// This is the top. +func (s *regexFcd) topFC() *regexFc { + return &s.fcStack[s.fcDepth-1] +} + +// Called in Beforechild to prevent further processing of the current child +func (s *regexFcd) skipChild() { + s.skipchild = true +} + +// FC computation and shortcut cases for each node type +func (s *regexFcd) calculateFC(nt nodeType, node *regexNode, CurIndex int) { + //fmt.Printf("NodeType: %v, CurIndex: %v, Desc: %v\n", nt, CurIndex, node.description()) + ci := false + rtl := false + + if nt <= ntRef { + if (node.options & IgnoreCase) != 0 { + ci = true + } + if (node.options & RightToLeft) != 0 { + rtl = true + } + } + + switch nt { + case ntConcatenate | beforeChild, ntAlternate | beforeChild, ntTestref | beforeChild, ntLoop | beforeChild, ntLazyloop | beforeChild: + break + + case ntTestgroup | beforeChild: + if CurIndex == 0 { + s.skipChild() + } + break + + case ntEmpty: + s.pushFC(regexFc{nullable: true}) + break + + case ntConcatenate | afterChild: + if CurIndex != 0 { + child := s.popFC() + cumul := s.topFC() + + s.failed = !cumul.addFC(*child, true) + } + + fc := s.topFC() + if !fc.nullable { + s.skipAllChildren = true + } + break + + case ntTestgroup | afterChild: + if CurIndex > 1 { + child := s.popFC() + cumul := s.topFC() + + s.failed = !cumul.addFC(*child, false) + } + break + + case ntAlternate | afterChild, ntTestref | afterChild: + if CurIndex != 0 { + child := s.popFC() + cumul := s.topFC() + + s.failed = !cumul.addFC(*child, false) + } + break + + case ntLoop | afterChild, ntLazyloop | afterChild: + if node.m == 0 { + fc := s.topFC() + fc.nullable = true + } + break + + case ntGroup | beforeChild, ntGroup | afterChild, ntCapture | beforeChild, ntCapture | afterChild, ntGreedy | beforeChild, ntGreedy | afterChild: + break + + case ntRequire | beforeChild, ntPrevent | beforeChild: + s.skipChild() + s.pushFC(regexFc{nullable: true}) + break + + case ntRequire | afterChild, ntPrevent | afterChild: + break + + case ntOne, ntNotone: + s.pushFC(newRegexFc(node.ch, nt == ntNotone, false, ci)) + break + + case ntOneloop, ntOnelazy: + s.pushFC(newRegexFc(node.ch, false, node.m == 0, ci)) + break + + case ntNotoneloop, ntNotonelazy: + s.pushFC(newRegexFc(node.ch, true, node.m == 0, ci)) + break + + case ntMulti: + if len(node.str) == 0 { + s.pushFC(regexFc{nullable: true}) + } else if !rtl { + s.pushFC(newRegexFc(node.str[0], false, false, ci)) + } else { + s.pushFC(newRegexFc(node.str[len(node.str)-1], false, false, ci)) + } + break + + case ntSet: + s.pushFC(regexFc{cc: node.set.Copy(), nullable: false, caseInsensitive: ci}) + break + + case ntSetloop, ntSetlazy: + s.pushFC(regexFc{cc: node.set.Copy(), nullable: node.m == 0, caseInsensitive: ci}) + break + + case ntRef: + s.pushFC(regexFc{cc: *AnyClass(), nullable: true, caseInsensitive: false}) + break + + case ntNothing, ntBol, ntEol, ntBoundary, ntNonboundary, ntECMABoundary, ntNonECMABoundary, ntBeginning, ntStart, ntEndZ, ntEnd: + s.pushFC(regexFc{nullable: true}) + break + + default: + panic(fmt.Sprintf("unexpected op code: %v", nt)) + } +} + +type regexFc struct { + cc CharSet + nullable bool + caseInsensitive bool +} + +func newRegexFc(ch rune, not, nullable, caseInsensitive bool) regexFc { + r := regexFc{ + caseInsensitive: caseInsensitive, + nullable: nullable, + } + if not { + if ch > 0 { + r.cc.addRange('\x00', ch-1) + } + if ch < 0xFFFF { + r.cc.addRange(ch+1, utf8.MaxRune) + } + } else { + r.cc.addRange(ch, ch) + } + return r +} + +func (r *regexFc) getFirstChars() CharSet { + if r.caseInsensitive { + r.cc.addLowercase() + } + + return r.cc +} + +func (r *regexFc) addFC(fc regexFc, concatenate bool) bool { + if !r.cc.IsMergeable() || !fc.cc.IsMergeable() { + return false + } + + if concatenate { + if !r.nullable { + return true + } + + if !fc.nullable { + r.nullable = false + } + } else { + if fc.nullable { + r.nullable = true + } + } + + r.caseInsensitive = r.caseInsensitive || fc.caseInsensitive + r.cc.addSet(fc.cc) + + return true +} + +// This is a related computation: it takes a RegexTree and computes the +// leading substring if it sees one. It's quite trivial and gives up easily. +func getPrefix(tree *RegexTree) *Prefix { + var concatNode *regexNode + nextChild := 0 + + curNode := tree.root + + for { + switch curNode.t { + case ntConcatenate: + if len(curNode.children) > 0 { + concatNode = curNode + nextChild = 0 + } + + case ntGreedy, ntCapture: + curNode = curNode.children[0] + concatNode = nil + continue + + case ntOneloop, ntOnelazy: + if curNode.m > 0 { + return &Prefix{ + PrefixStr: repeat(curNode.ch, curNode.m), + CaseInsensitive: (curNode.options & IgnoreCase) != 0, + } + } + return nil + + case ntOne: + return &Prefix{ + PrefixStr: []rune{curNode.ch}, + CaseInsensitive: (curNode.options & IgnoreCase) != 0, + } + + case ntMulti: + return &Prefix{ + PrefixStr: curNode.str, + CaseInsensitive: (curNode.options & IgnoreCase) != 0, + } + + case ntBol, ntEol, ntBoundary, ntECMABoundary, ntBeginning, ntStart, + ntEndZ, ntEnd, ntEmpty, ntRequire, ntPrevent: + + default: + return nil + } + + if concatNode == nil || nextChild >= len(concatNode.children) { + return nil + } + + curNode = concatNode.children[nextChild] + nextChild++ + } +} + +// repeat the rune r, c times... up to the max of MaxPrefixSize +func repeat(r rune, c int) []rune { + if c > MaxPrefixSize { + c = MaxPrefixSize + } + + ret := make([]rune, c) + + // binary growth using copy for speed + ret[0] = r + bp := 1 + for bp < len(ret) { + copy(ret[bp:], ret[:bp]) + bp *= 2 + } + + return ret +} + +// BmPrefix precomputes the Boyer-Moore +// tables for fast string scanning. These tables allow +// you to scan for the first occurrence of a string within +// a large body of text without examining every character. +// The performance of the heuristic depends on the actual +// string and the text being searched, but usually, the longer +// the string that is being searched for, the fewer characters +// need to be examined. +type BmPrefix struct { + positive []int + negativeASCII []int + negativeUnicode [][]int + pattern []rune + lowASCII rune + highASCII rune + rightToLeft bool + caseInsensitive bool +} + +func newBmPrefix(pattern []rune, caseInsensitive, rightToLeft bool) *BmPrefix { + + b := &BmPrefix{ + rightToLeft: rightToLeft, + caseInsensitive: caseInsensitive, + pattern: pattern, + } + + if caseInsensitive { + for i := 0; i < len(b.pattern); i++ { + // We do the ToLower character by character for consistency. With surrogate chars, doing + // a ToLower on the entire string could actually change the surrogate pair. This is more correct + // linguistically, but since Regex doesn't support surrogates, it's more important to be + // consistent. + + b.pattern[i] = unicode.ToLower(b.pattern[i]) + } + } + + var beforefirst, last, bump int + var scan, match int + + if !rightToLeft { + beforefirst = -1 + last = len(b.pattern) - 1 + bump = 1 + } else { + beforefirst = len(b.pattern) + last = 0 + bump = -1 + } + + // PART I - the good-suffix shift table + // + // compute the positive requirement: + // if char "i" is the first one from the right that doesn't match, + // then we know the matcher can advance by _positive[i]. + // + // This algorithm is a simplified variant of the standard + // Boyer-Moore good suffix calculation. + + b.positive = make([]int, len(b.pattern)) + + examine := last + ch := b.pattern[examine] + b.positive[examine] = bump + examine -= bump + +Outerloop: + for { + // find an internal char (examine) that matches the tail + + for { + if examine == beforefirst { + break Outerloop + } + if b.pattern[examine] == ch { + break + } + examine -= bump + } + + match = last + scan = examine + + // find the length of the match + for { + if scan == beforefirst || b.pattern[match] != b.pattern[scan] { + // at the end of the match, note the difference in _positive + // this is not the length of the match, but the distance from the internal match + // to the tail suffix. + if b.positive[match] == 0 { + b.positive[match] = match - scan + } + + // System.Diagnostics.Debug.WriteLine("Set positive[" + match + "] to " + (match - scan)); + + break + } + + scan -= bump + match -= bump + } + + examine -= bump + } + + match = last - bump + + // scan for the chars for which there are no shifts that yield a different candidate + + // The inside of the if statement used to say + // "_positive[match] = last - beforefirst;" + // This is slightly less aggressive in how much we skip, but at worst it + // should mean a little more work rather than skipping a potential match. + for match != beforefirst { + if b.positive[match] == 0 { + b.positive[match] = bump + } + + match -= bump + } + + // PART II - the bad-character shift table + // + // compute the negative requirement: + // if char "ch" is the reject character when testing position "i", + // we can slide up by _negative[ch]; + // (_negative[ch] = str.Length - 1 - str.LastIndexOf(ch)) + // + // the lookup table is divided into ASCII and Unicode portions; + // only those parts of the Unicode 16-bit code set that actually + // appear in the string are in the table. (Maximum size with + // Unicode is 65K; ASCII only case is 512 bytes.) + + b.negativeASCII = make([]int, 128) + + for i := 0; i < len(b.negativeASCII); i++ { + b.negativeASCII[i] = last - beforefirst + } + + b.lowASCII = 127 + b.highASCII = 0 + + for examine = last; examine != beforefirst; examine -= bump { + ch = b.pattern[examine] + + switch { + case ch < 128: + if b.lowASCII > ch { + b.lowASCII = ch + } + + if b.highASCII < ch { + b.highASCII = ch + } + + if b.negativeASCII[ch] == last-beforefirst { + b.negativeASCII[ch] = last - examine + } + case ch <= 0xffff: + i, j := ch>>8, ch&0xFF + + if b.negativeUnicode == nil { + b.negativeUnicode = make([][]int, 256) + } + + if b.negativeUnicode[i] == nil { + newarray := make([]int, 256) + + for k := 0; k < len(newarray); k++ { + newarray[k] = last - beforefirst + } + + if i == 0 { + copy(newarray, b.negativeASCII) + //TODO: this line needed? + b.negativeASCII = newarray + } + + b.negativeUnicode[i] = newarray + } + + if b.negativeUnicode[i][j] == last-beforefirst { + b.negativeUnicode[i][j] = last - examine + } + default: + // we can't do the filter because this algo doesn't support + // unicode chars >0xffff + return nil + } + } + + return b +} + +func (b *BmPrefix) String() string { + return string(b.pattern) +} + +// Dump returns the contents of the filter as a human readable string +func (b *BmPrefix) Dump(indent string) string { + buf := &bytes.Buffer{} + + fmt.Fprintf(buf, "%sBM Pattern: %s\n%sPositive: ", indent, string(b.pattern), indent) + for i := 0; i < len(b.positive); i++ { + buf.WriteString(strconv.Itoa(b.positive[i])) + buf.WriteRune(' ') + } + buf.WriteRune('\n') + + if b.negativeASCII != nil { + buf.WriteString(indent) + buf.WriteString("Negative table\n") + for i := 0; i < len(b.negativeASCII); i++ { + if b.negativeASCII[i] != len(b.pattern) { + fmt.Fprintf(buf, "%s %s %s\n", indent, Escape(string(rune(i))), strconv.Itoa(b.negativeASCII[i])) + } + } + } + + return buf.String() +} + +// Scan uses the Boyer-Moore algorithm to find the first occurrence +// of the specified string within text, beginning at index, and +// constrained within beglimit and endlimit. +// +// The direction and case-sensitivity of the match is determined +// by the arguments to the RegexBoyerMoore constructor. +func (b *BmPrefix) Scan(text []rune, index, beglimit, endlimit int) int { + var ( + defadv, test, test2 int + match, startmatch, endmatch int + bump, advance int + chTest rune + unicodeLookup []int + ) + + if !b.rightToLeft { + defadv = len(b.pattern) + startmatch = len(b.pattern) - 1 + endmatch = 0 + test = index + defadv - 1 + bump = 1 + } else { + defadv = -len(b.pattern) + startmatch = 0 + endmatch = -defadv - 1 + test = index + defadv + bump = -1 + } + + chMatch := b.pattern[startmatch] + + for { + if test >= endlimit || test < beglimit { + return -1 + } + + chTest = text[test] + + if b.caseInsensitive { + chTest = unicode.ToLower(chTest) + } + + if chTest != chMatch { + if chTest < 128 { + advance = b.negativeASCII[chTest] + } else if chTest < 0xffff && len(b.negativeUnicode) > 0 { + unicodeLookup = b.negativeUnicode[chTest>>8] + if len(unicodeLookup) > 0 { + advance = unicodeLookup[chTest&0xFF] + } else { + advance = defadv + } + } else { + advance = defadv + } + + test += advance + } else { // if (chTest == chMatch) + test2 = test + match = startmatch + + for { + if match == endmatch { + if b.rightToLeft { + return test2 + 1 + } else { + return test2 + } + } + + match -= bump + test2 -= bump + + chTest = text[test2] + + if b.caseInsensitive { + chTest = unicode.ToLower(chTest) + } + + if chTest != b.pattern[match] { + advance = b.positive[match] + if chTest < 128 { + test2 = (match - startmatch) + b.negativeASCII[chTest] + } else if chTest < 0xffff && len(b.negativeUnicode) > 0 { + unicodeLookup = b.negativeUnicode[chTest>>8] + if len(unicodeLookup) > 0 { + test2 = (match - startmatch) + unicodeLookup[chTest&0xFF] + } else { + test += advance + break + } + } else { + test += advance + break + } + + if b.rightToLeft { + if test2 < advance { + advance = test2 + } + } else if test2 > advance { + advance = test2 + } + + test += advance + break + } + } + } + } +} + +// When a regex is anchored, we can do a quick IsMatch test instead of a Scan +func (b *BmPrefix) IsMatch(text []rune, index, beglimit, endlimit int) bool { + if !b.rightToLeft { + if index < beglimit || endlimit-index < len(b.pattern) { + return false + } + + return b.matchPattern(text, index) + } else { + if index > endlimit || index-beglimit < len(b.pattern) { + return false + } + + return b.matchPattern(text, index-len(b.pattern)) + } +} + +func (b *BmPrefix) matchPattern(text []rune, index int) bool { + if len(text)-index < len(b.pattern) { + return false + } + + if b.caseInsensitive { + for i := 0; i < len(b.pattern); i++ { + //Debug.Assert(textinfo.ToLower(_pattern[i]) == _pattern[i], "pattern should be converted to lower case in constructor!"); + if unicode.ToLower(text[index+i]) != b.pattern[i] { + return false + } + } + return true + } else { + for i := 0; i < len(b.pattern); i++ { + if text[index+i] != b.pattern[i] { + return false + } + } + return true + } +} + +type AnchorLoc int16 + +// where the regex can be pegged +const ( + AnchorBeginning AnchorLoc = 0x0001 + AnchorBol = 0x0002 + AnchorStart = 0x0004 + AnchorEol = 0x0008 + AnchorEndZ = 0x0010 + AnchorEnd = 0x0020 + AnchorBoundary = 0x0040 + AnchorECMABoundary = 0x0080 +) + +func getAnchors(tree *RegexTree) AnchorLoc { + + var concatNode *regexNode + nextChild, result := 0, AnchorLoc(0) + + curNode := tree.root + + for { + switch curNode.t { + case ntConcatenate: + if len(curNode.children) > 0 { + concatNode = curNode + nextChild = 0 + } + + case ntGreedy, ntCapture: + curNode = curNode.children[0] + concatNode = nil + continue + + case ntBol, ntEol, ntBoundary, ntECMABoundary, ntBeginning, + ntStart, ntEndZ, ntEnd: + return result | anchorFromType(curNode.t) + + case ntEmpty, ntRequire, ntPrevent: + + default: + return result + } + + if concatNode == nil || nextChild >= len(concatNode.children) { + return result + } + + curNode = concatNode.children[nextChild] + nextChild++ + } +} + +func anchorFromType(t nodeType) AnchorLoc { + switch t { + case ntBol: + return AnchorBol + case ntEol: + return AnchorEol + case ntBoundary: + return AnchorBoundary + case ntECMABoundary: + return AnchorECMABoundary + case ntBeginning: + return AnchorBeginning + case ntStart: + return AnchorStart + case ntEndZ: + return AnchorEndZ + case ntEnd: + return AnchorEnd + default: + return 0 + } +} + +// anchorDescription returns a human-readable description of the anchors +func (anchors AnchorLoc) String() string { + buf := &bytes.Buffer{} + + if 0 != (anchors & AnchorBeginning) { + buf.WriteString(", Beginning") + } + if 0 != (anchors & AnchorStart) { + buf.WriteString(", Start") + } + if 0 != (anchors & AnchorBol) { + buf.WriteString(", Bol") + } + if 0 != (anchors & AnchorBoundary) { + buf.WriteString(", Boundary") + } + if 0 != (anchors & AnchorECMABoundary) { + buf.WriteString(", ECMABoundary") + } + if 0 != (anchors & AnchorEol) { + buf.WriteString(", Eol") + } + if 0 != (anchors & AnchorEnd) { + buf.WriteString(", End") + } + if 0 != (anchors & AnchorEndZ) { + buf.WriteString(", EndZ") + } + + // trim off comma + if buf.Len() >= 2 { + return buf.String()[2:] + } + return "None" +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/replacerdata.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/replacerdata.go new file mode 100644 index 0000000..bcf4d3f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/replacerdata.go @@ -0,0 +1,87 @@ +package syntax + +import ( + "bytes" + "errors" +) + +type ReplacerData struct { + Rep string + Strings []string + Rules []int +} + +const ( + replaceSpecials = 4 + replaceLeftPortion = -1 + replaceRightPortion = -2 + replaceLastGroup = -3 + replaceWholeString = -4 +) + +//ErrReplacementError is a general error during parsing the replacement text +var ErrReplacementError = errors.New("Replacement pattern error.") + +// NewReplacerData will populate a reusable replacer data struct based on the given replacement string +// and the capture group data from a regexp +func NewReplacerData(rep string, caps map[int]int, capsize int, capnames map[string]int, op RegexOptions) (*ReplacerData, error) { + p := parser{ + options: op, + caps: caps, + capsize: capsize, + capnames: capnames, + } + p.setPattern(rep) + concat, err := p.scanReplacement() + if err != nil { + return nil, err + } + + if concat.t != ntConcatenate { + panic(ErrReplacementError) + } + + sb := &bytes.Buffer{} + var ( + strings []string + rules []int + ) + + for _, child := range concat.children { + switch child.t { + case ntMulti: + child.writeStrToBuf(sb) + + case ntOne: + sb.WriteRune(child.ch) + + case ntRef: + if sb.Len() > 0 { + rules = append(rules, len(strings)) + strings = append(strings, sb.String()) + sb.Reset() + } + slot := child.m + + if len(caps) > 0 && slot >= 0 { + slot = caps[slot] + } + + rules = append(rules, -replaceSpecials-1-slot) + + default: + panic(ErrReplacementError) + } + } + + if sb.Len() > 0 { + rules = append(rules, len(strings)) + strings = append(strings, sb.String()) + } + + return &ReplacerData{ + Rep: rep, + Strings: strings, + Rules: rules, + }, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/tree.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/tree.go new file mode 100644 index 0000000..ea28829 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/tree.go @@ -0,0 +1,654 @@ +package syntax + +import ( + "bytes" + "fmt" + "math" + "strconv" +) + +type RegexTree struct { + root *regexNode + caps map[int]int + capnumlist []int + captop int + Capnames map[string]int + Caplist []string + options RegexOptions +} + +// It is built into a parsed tree for a regular expression. + +// Implementation notes: +// +// Since the node tree is a temporary data structure only used +// during compilation of the regexp to integer codes, it's +// designed for clarity and convenience rather than +// space efficiency. +// +// RegexNodes are built into a tree, linked by the n.children list. +// Each node also has a n.parent and n.ichild member indicating +// its parent and which child # it is in its parent's list. +// +// RegexNodes come in as many types as there are constructs in +// a regular expression, for example, "concatenate", "alternate", +// "one", "rept", "group". There are also node types for basic +// peephole optimizations, e.g., "onerep", "notsetrep", etc. +// +// Because perl 5 allows "lookback" groups that scan backwards, +// each node also gets a "direction". Normally the value of +// boolean n.backward = false. +// +// During parsing, top-level nodes are also stacked onto a parse +// stack (a stack of trees). For this purpose we have a n.next +// pointer. [Note that to save a few bytes, we could overload the +// n.parent pointer instead.] +// +// On the parse stack, each tree has a "role" - basically, the +// nonterminal in the grammar that the parser has currently +// assigned to the tree. That code is stored in n.role. +// +// Finally, some of the different kinds of nodes have data. +// Two integers (for the looping constructs) are stored in +// n.operands, an an object (either a string or a set) +// is stored in n.data +type regexNode struct { + t nodeType + children []*regexNode + str []rune + set *CharSet + ch rune + m int + n int + options RegexOptions + next *regexNode +} + +type nodeType int32 + +const ( + // The following are leaves, and correspond to primitive operations + + ntOnerep nodeType = 0 // lef,back char,min,max a {n} + ntNotonerep = 1 // lef,back char,min,max .{n} + ntSetrep = 2 // lef,back set,min,max [\d]{n} + ntOneloop = 3 // lef,back char,min,max a {,n} + ntNotoneloop = 4 // lef,back char,min,max .{,n} + ntSetloop = 5 // lef,back set,min,max [\d]{,n} + ntOnelazy = 6 // lef,back char,min,max a {,n}? + ntNotonelazy = 7 // lef,back char,min,max .{,n}? + ntSetlazy = 8 // lef,back set,min,max [\d]{,n}? + ntOne = 9 // lef char a + ntNotone = 10 // lef char [^a] + ntSet = 11 // lef set [a-z\s] \w \s \d + ntMulti = 12 // lef string abcd + ntRef = 13 // lef group \# + ntBol = 14 // ^ + ntEol = 15 // $ + ntBoundary = 16 // \b + ntNonboundary = 17 // \B + ntBeginning = 18 // \A + ntStart = 19 // \G + ntEndZ = 20 // \Z + ntEnd = 21 // \Z + + // Interior nodes do not correspond to primitive operations, but + // control structures compositing other operations + + // Concat and alternate take n children, and can run forward or backwards + + ntNothing = 22 // [] + ntEmpty = 23 // () + ntAlternate = 24 // a|b + ntConcatenate = 25 // ab + ntLoop = 26 // m,x * + ? {,} + ntLazyloop = 27 // m,x *? +? ?? {,}? + ntCapture = 28 // n () + ntGroup = 29 // (?:) + ntRequire = 30 // (?=) (?<=) + ntPrevent = 31 // (?!) (?) (?<) + ntTestref = 33 // (?(n) | ) + ntTestgroup = 34 // (?(...) | ) + + ntECMABoundary = 41 // \b + ntNonECMABoundary = 42 // \B +) + +func newRegexNode(t nodeType, opt RegexOptions) *regexNode { + return ®exNode{ + t: t, + options: opt, + } +} + +func newRegexNodeCh(t nodeType, opt RegexOptions, ch rune) *regexNode { + return ®exNode{ + t: t, + options: opt, + ch: ch, + } +} + +func newRegexNodeStr(t nodeType, opt RegexOptions, str []rune) *regexNode { + return ®exNode{ + t: t, + options: opt, + str: str, + } +} + +func newRegexNodeSet(t nodeType, opt RegexOptions, set *CharSet) *regexNode { + return ®exNode{ + t: t, + options: opt, + set: set, + } +} + +func newRegexNodeM(t nodeType, opt RegexOptions, m int) *regexNode { + return ®exNode{ + t: t, + options: opt, + m: m, + } +} +func newRegexNodeMN(t nodeType, opt RegexOptions, m, n int) *regexNode { + return ®exNode{ + t: t, + options: opt, + m: m, + n: n, + } +} + +func (n *regexNode) writeStrToBuf(buf *bytes.Buffer) { + for i := 0; i < len(n.str); i++ { + buf.WriteRune(n.str[i]) + } +} + +func (n *regexNode) addChild(child *regexNode) { + reduced := child.reduce() + n.children = append(n.children, reduced) + reduced.next = n +} + +func (n *regexNode) insertChildren(afterIndex int, nodes []*regexNode) { + newChildren := make([]*regexNode, 0, len(n.children)+len(nodes)) + n.children = append(append(append(newChildren, n.children[:afterIndex]...), nodes...), n.children[afterIndex:]...) +} + +// removes children including the start but not the end index +func (n *regexNode) removeChildren(startIndex, endIndex int) { + n.children = append(n.children[:startIndex], n.children[endIndex:]...) +} + +// Pass type as OneLazy or OneLoop +func (n *regexNode) makeRep(t nodeType, min, max int) { + n.t += (t - ntOne) + n.m = min + n.n = max +} + +func (n *regexNode) reduce() *regexNode { + switch n.t { + case ntAlternate: + return n.reduceAlternation() + + case ntConcatenate: + return n.reduceConcatenation() + + case ntLoop, ntLazyloop: + return n.reduceRep() + + case ntGroup: + return n.reduceGroup() + + case ntSet, ntSetloop: + return n.reduceSet() + + default: + return n + } +} + +// Basic optimization. Single-letter alternations can be replaced +// by faster set specifications, and nested alternations with no +// intervening operators can be flattened: +// +// a|b|c|def|g|h -> [a-c]|def|[gh] +// apple|(?:orange|pear)|grape -> apple|orange|pear|grape +func (n *regexNode) reduceAlternation() *regexNode { + if len(n.children) == 0 { + return newRegexNode(ntNothing, n.options) + } + + wasLastSet := false + lastNodeCannotMerge := false + var optionsLast RegexOptions + var i, j int + + for i, j = 0, 0; i < len(n.children); i, j = i+1, j+1 { + at := n.children[i] + + if j < i { + n.children[j] = at + } + + for { + if at.t == ntAlternate { + for k := 0; k < len(at.children); k++ { + at.children[k].next = n + } + n.insertChildren(i+1, at.children) + + j-- + } else if at.t == ntSet || at.t == ntOne { + // Cannot merge sets if L or I options differ, or if either are negated. + optionsAt := at.options & (RightToLeft | IgnoreCase) + + if at.t == ntSet { + if !wasLastSet || optionsLast != optionsAt || lastNodeCannotMerge || !at.set.IsMergeable() { + wasLastSet = true + lastNodeCannotMerge = !at.set.IsMergeable() + optionsLast = optionsAt + break + } + } else if !wasLastSet || optionsLast != optionsAt || lastNodeCannotMerge { + wasLastSet = true + lastNodeCannotMerge = false + optionsLast = optionsAt + break + } + + // The last node was a Set or a One, we're a Set or One and our options are the same. + // Merge the two nodes. + j-- + prev := n.children[j] + + var prevCharClass *CharSet + if prev.t == ntOne { + prevCharClass = &CharSet{} + prevCharClass.addChar(prev.ch) + } else { + prevCharClass = prev.set + } + + if at.t == ntOne { + prevCharClass.addChar(at.ch) + } else { + prevCharClass.addSet(*at.set) + } + + prev.t = ntSet + prev.set = prevCharClass + } else if at.t == ntNothing { + j-- + } else { + wasLastSet = false + lastNodeCannotMerge = false + } + break + } + } + + if j < i { + n.removeChildren(j, i) + } + + return n.stripEnation(ntNothing) +} + +// Basic optimization. Adjacent strings can be concatenated. +// +// (?:abc)(?:def) -> abcdef +func (n *regexNode) reduceConcatenation() *regexNode { + // Eliminate empties and concat adjacent strings/chars + + var optionsLast RegexOptions + var optionsAt RegexOptions + var i, j int + + if len(n.children) == 0 { + return newRegexNode(ntEmpty, n.options) + } + + wasLastString := false + + for i, j = 0, 0; i < len(n.children); i, j = i+1, j+1 { + var at, prev *regexNode + + at = n.children[i] + + if j < i { + n.children[j] = at + } + + if at.t == ntConcatenate && + ((at.options & RightToLeft) == (n.options & RightToLeft)) { + for k := 0; k < len(at.children); k++ { + at.children[k].next = n + } + + //insert at.children at i+1 index in n.children + n.insertChildren(i+1, at.children) + + j-- + } else if at.t == ntMulti || at.t == ntOne { + // Cannot merge strings if L or I options differ + optionsAt = at.options & (RightToLeft | IgnoreCase) + + if !wasLastString || optionsLast != optionsAt { + wasLastString = true + optionsLast = optionsAt + continue + } + + j-- + prev = n.children[j] + + if prev.t == ntOne { + prev.t = ntMulti + prev.str = []rune{prev.ch} + } + + if (optionsAt & RightToLeft) == 0 { + if at.t == ntOne { + prev.str = append(prev.str, at.ch) + } else { + prev.str = append(prev.str, at.str...) + } + } else { + if at.t == ntOne { + // insert at the front by expanding our slice, copying the data over, and then setting the value + prev.str = append(prev.str, 0) + copy(prev.str[1:], prev.str) + prev.str[0] = at.ch + } else { + //insert at the front...this one we'll make a new slice and copy both into it + merge := make([]rune, len(prev.str)+len(at.str)) + copy(merge, at.str) + copy(merge[len(at.str):], prev.str) + prev.str = merge + } + } + } else if at.t == ntEmpty { + j-- + } else { + wasLastString = false + } + } + + if j < i { + // remove indices j through i from the children + n.removeChildren(j, i) + } + + return n.stripEnation(ntEmpty) +} + +// Nested repeaters just get multiplied with each other if they're not +// too lumpy +func (n *regexNode) reduceRep() *regexNode { + + u := n + t := n.t + min := n.m + max := n.n + + for { + if len(u.children) == 0 { + break + } + + child := u.children[0] + + // multiply reps of the same type only + if child.t != t { + childType := child.t + + if !(childType >= ntOneloop && childType <= ntSetloop && t == ntLoop || + childType >= ntOnelazy && childType <= ntSetlazy && t == ntLazyloop) { + break + } + } + + // child can be too lumpy to blur, e.g., (a {100,105}) {3} or (a {2,})? + // [but things like (a {2,})+ are not too lumpy...] + if u.m == 0 && child.m > 1 || child.n < child.m*2 { + break + } + + u = child + if u.m > 0 { + if (math.MaxInt32-1)/u.m < min { + u.m = math.MaxInt32 + } else { + u.m = u.m * min + } + } + if u.n > 0 { + if (math.MaxInt32-1)/u.n < max { + u.n = math.MaxInt32 + } else { + u.n = u.n * max + } + } + } + + if math.MaxInt32 == min { + return newRegexNode(ntNothing, n.options) + } + return u + +} + +// Simple optimization. If a concatenation or alternation has only +// one child strip out the intermediate node. If it has zero children, +// turn it into an empty. +func (n *regexNode) stripEnation(emptyType nodeType) *regexNode { + switch len(n.children) { + case 0: + return newRegexNode(emptyType, n.options) + case 1: + return n.children[0] + default: + return n + } +} + +func (n *regexNode) reduceGroup() *regexNode { + u := n + + for u.t == ntGroup { + u = u.children[0] + } + + return u +} + +// Simple optimization. If a set is a singleton, an inverse singleton, +// or empty, it's transformed accordingly. +func (n *regexNode) reduceSet() *regexNode { + // Extract empty-set, one and not-one case as special + + if n.set == nil { + n.t = ntNothing + } else if n.set.IsSingleton() { + n.ch = n.set.SingletonChar() + n.set = nil + n.t += (ntOne - ntSet) + } else if n.set.IsSingletonInverse() { + n.ch = n.set.SingletonChar() + n.set = nil + n.t += (ntNotone - ntSet) + } + + return n +} + +func (n *regexNode) reverseLeft() *regexNode { + if n.options&RightToLeft != 0 && n.t == ntConcatenate && len(n.children) > 0 { + //reverse children order + for left, right := 0, len(n.children)-1; left < right; left, right = left+1, right-1 { + n.children[left], n.children[right] = n.children[right], n.children[left] + } + } + + return n +} + +func (n *regexNode) makeQuantifier(lazy bool, min, max int) *regexNode { + if min == 0 && max == 0 { + return newRegexNode(ntEmpty, n.options) + } + + if min == 1 && max == 1 { + return n + } + + switch n.t { + case ntOne, ntNotone, ntSet: + if lazy { + n.makeRep(Onelazy, min, max) + } else { + n.makeRep(Oneloop, min, max) + } + return n + + default: + var t nodeType + if lazy { + t = ntLazyloop + } else { + t = ntLoop + } + result := newRegexNodeMN(t, n.options, min, max) + result.addChild(n) + return result + } +} + +// debug functions + +var typeStr = []string{ + "Onerep", "Notonerep", "Setrep", + "Oneloop", "Notoneloop", "Setloop", + "Onelazy", "Notonelazy", "Setlazy", + "One", "Notone", "Set", + "Multi", "Ref", + "Bol", "Eol", "Boundary", "Nonboundary", + "Beginning", "Start", "EndZ", "End", + "Nothing", "Empty", + "Alternate", "Concatenate", + "Loop", "Lazyloop", + "Capture", "Group", "Require", "Prevent", "Greedy", + "Testref", "Testgroup", + "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", + "ECMABoundary", "NonECMABoundary", +} + +func (n *regexNode) description() string { + buf := &bytes.Buffer{} + + buf.WriteString(typeStr[n.t]) + + if (n.options & ExplicitCapture) != 0 { + buf.WriteString("-C") + } + if (n.options & IgnoreCase) != 0 { + buf.WriteString("-I") + } + if (n.options & RightToLeft) != 0 { + buf.WriteString("-L") + } + if (n.options & Multiline) != 0 { + buf.WriteString("-M") + } + if (n.options & Singleline) != 0 { + buf.WriteString("-S") + } + if (n.options & IgnorePatternWhitespace) != 0 { + buf.WriteString("-X") + } + if (n.options & ECMAScript) != 0 { + buf.WriteString("-E") + } + + switch n.t { + case ntOneloop, ntNotoneloop, ntOnelazy, ntNotonelazy, ntOne, ntNotone: + buf.WriteString("(Ch = " + CharDescription(n.ch) + ")") + break + case ntCapture: + buf.WriteString("(index = " + strconv.Itoa(n.m) + ", unindex = " + strconv.Itoa(n.n) + ")") + break + case ntRef, ntTestref: + buf.WriteString("(index = " + strconv.Itoa(n.m) + ")") + break + case ntMulti: + fmt.Fprintf(buf, "(String = %s)", string(n.str)) + break + case ntSet, ntSetloop, ntSetlazy: + buf.WriteString("(Set = " + n.set.String() + ")") + break + } + + switch n.t { + case ntOneloop, ntNotoneloop, ntOnelazy, ntNotonelazy, ntSetloop, ntSetlazy, ntLoop, ntLazyloop: + buf.WriteString("(Min = ") + buf.WriteString(strconv.Itoa(n.m)) + buf.WriteString(", Max = ") + if n.n == math.MaxInt32 { + buf.WriteString("inf") + } else { + buf.WriteString(strconv.Itoa(n.n)) + } + buf.WriteString(")") + + break + } + + return buf.String() +} + +var padSpace = []byte(" ") + +func (t *RegexTree) Dump() string { + return t.root.dump() +} + +func (n *regexNode) dump() string { + var stack []int + CurNode := n + CurChild := 0 + + buf := bytes.NewBufferString(CurNode.description()) + buf.WriteRune('\n') + + for { + if CurNode.children != nil && CurChild < len(CurNode.children) { + stack = append(stack, CurChild+1) + CurNode = CurNode.children[CurChild] + CurChild = 0 + + Depth := len(stack) + if Depth > 32 { + Depth = 32 + } + buf.Write(padSpace[:Depth]) + buf.WriteString(CurNode.description()) + buf.WriteRune('\n') + } else { + if len(stack) == 0 { + break + } + + CurChild = stack[len(stack)-1] + stack = stack[:len(stack)-1] + CurNode = CurNode.next + } + } + return buf.String() +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/writer.go b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/writer.go new file mode 100644 index 0000000..a5aa11c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/syntax/writer.go @@ -0,0 +1,500 @@ +package syntax + +import ( + "bytes" + "fmt" + "math" + "os" +) + +func Write(tree *RegexTree) (*Code, error) { + w := writer{ + intStack: make([]int, 0, 32), + emitted: make([]int, 2), + stringhash: make(map[string]int), + sethash: make(map[string]int), + } + + code, err := w.codeFromTree(tree) + + if tree.options&Debug > 0 && code != nil { + os.Stdout.WriteString(code.Dump()) + os.Stdout.WriteString("\n") + } + + return code, err +} + +type writer struct { + emitted []int + + intStack []int + curpos int + stringhash map[string]int + stringtable [][]rune + sethash map[string]int + settable []*CharSet + counting bool + count int + trackcount int + caps map[int]int +} + +const ( + beforeChild nodeType = 64 + afterChild = 128 + //MaxPrefixSize is the largest number of runes we'll use for a BoyerMoyer prefix + MaxPrefixSize = 50 +) + +// The top level RegexCode generator. It does a depth-first walk +// through the tree and calls EmitFragment to emits code before +// and after each child of an interior node, and at each leaf. +// +// It runs two passes, first to count the size of the generated +// code, and second to generate the code. +// +// We should time it against the alternative, which is +// to just generate the code and grow the array as we go. +func (w *writer) codeFromTree(tree *RegexTree) (*Code, error) { + var ( + curNode *regexNode + curChild int + capsize int + ) + // construct sparse capnum mapping if some numbers are unused + + if tree.capnumlist == nil || tree.captop == len(tree.capnumlist) { + capsize = tree.captop + w.caps = nil + } else { + capsize = len(tree.capnumlist) + w.caps = tree.caps + for i := 0; i < len(tree.capnumlist); i++ { + w.caps[tree.capnumlist[i]] = i + } + } + + w.counting = true + + for { + if !w.counting { + w.emitted = make([]int, w.count) + } + + curNode = tree.root + curChild = 0 + + w.emit1(Lazybranch, 0) + + for { + if len(curNode.children) == 0 { + w.emitFragment(curNode.t, curNode, 0) + } else if curChild < len(curNode.children) { + w.emitFragment(curNode.t|beforeChild, curNode, curChild) + + curNode = curNode.children[curChild] + + w.pushInt(curChild) + curChild = 0 + continue + } + + if w.emptyStack() { + break + } + + curChild = w.popInt() + curNode = curNode.next + + w.emitFragment(curNode.t|afterChild, curNode, curChild) + curChild++ + } + + w.patchJump(0, w.curPos()) + w.emit(Stop) + + if !w.counting { + break + } + + w.counting = false + } + + fcPrefix := getFirstCharsPrefix(tree) + prefix := getPrefix(tree) + rtl := (tree.options & RightToLeft) != 0 + + var bmPrefix *BmPrefix + //TODO: benchmark string prefixes + if prefix != nil && len(prefix.PrefixStr) > 0 && MaxPrefixSize > 0 { + if len(prefix.PrefixStr) > MaxPrefixSize { + // limit prefix changes to 10k + prefix.PrefixStr = prefix.PrefixStr[:MaxPrefixSize] + } + bmPrefix = newBmPrefix(prefix.PrefixStr, prefix.CaseInsensitive, rtl) + } else { + bmPrefix = nil + } + + return &Code{ + Codes: w.emitted, + Strings: w.stringtable, + Sets: w.settable, + TrackCount: w.trackcount, + Caps: w.caps, + Capsize: capsize, + FcPrefix: fcPrefix, + BmPrefix: bmPrefix, + Anchors: getAnchors(tree), + RightToLeft: rtl, + }, nil +} + +// The main RegexCode generator. It does a depth-first walk +// through the tree and calls EmitFragment to emits code before +// and after each child of an interior node, and at each leaf. +func (w *writer) emitFragment(nodetype nodeType, node *regexNode, curIndex int) error { + bits := InstOp(0) + + if nodetype <= ntRef { + if (node.options & RightToLeft) != 0 { + bits |= Rtl + } + if (node.options & IgnoreCase) != 0 { + bits |= Ci + } + } + ntBits := nodeType(bits) + + switch nodetype { + case ntConcatenate | beforeChild, ntConcatenate | afterChild, ntEmpty: + break + + case ntAlternate | beforeChild: + if curIndex < len(node.children)-1 { + w.pushInt(w.curPos()) + w.emit1(Lazybranch, 0) + } + + case ntAlternate | afterChild: + if curIndex < len(node.children)-1 { + lbPos := w.popInt() + w.pushInt(w.curPos()) + w.emit1(Goto, 0) + w.patchJump(lbPos, w.curPos()) + } else { + for i := 0; i < curIndex; i++ { + w.patchJump(w.popInt(), w.curPos()) + } + } + break + + case ntTestref | beforeChild: + if curIndex == 0 { + w.emit(Setjump) + w.pushInt(w.curPos()) + w.emit1(Lazybranch, 0) + w.emit1(Testref, w.mapCapnum(node.m)) + w.emit(Forejump) + } + + case ntTestref | afterChild: + if curIndex == 0 { + branchpos := w.popInt() + w.pushInt(w.curPos()) + w.emit1(Goto, 0) + w.patchJump(branchpos, w.curPos()) + w.emit(Forejump) + if len(node.children) <= 1 { + w.patchJump(w.popInt(), w.curPos()) + } + } else if curIndex == 1 { + w.patchJump(w.popInt(), w.curPos()) + } + + case ntTestgroup | beforeChild: + if curIndex == 0 { + w.emit(Setjump) + w.emit(Setmark) + w.pushInt(w.curPos()) + w.emit1(Lazybranch, 0) + } + + case ntTestgroup | afterChild: + if curIndex == 0 { + w.emit(Getmark) + w.emit(Forejump) + } else if curIndex == 1 { + Branchpos := w.popInt() + w.pushInt(w.curPos()) + w.emit1(Goto, 0) + w.patchJump(Branchpos, w.curPos()) + w.emit(Getmark) + w.emit(Forejump) + if len(node.children) <= 2 { + w.patchJump(w.popInt(), w.curPos()) + } + } else if curIndex == 2 { + w.patchJump(w.popInt(), w.curPos()) + } + + case ntLoop | beforeChild, ntLazyloop | beforeChild: + + if node.n < math.MaxInt32 || node.m > 1 { + if node.m == 0 { + w.emit1(Nullcount, 0) + } else { + w.emit1(Setcount, 1-node.m) + } + } else if node.m == 0 { + w.emit(Nullmark) + } else { + w.emit(Setmark) + } + + if node.m == 0 { + w.pushInt(w.curPos()) + w.emit1(Goto, 0) + } + w.pushInt(w.curPos()) + + case ntLoop | afterChild, ntLazyloop | afterChild: + + startJumpPos := w.curPos() + lazy := (nodetype - (ntLoop | afterChild)) + + if node.n < math.MaxInt32 || node.m > 1 { + if node.n == math.MaxInt32 { + w.emit2(InstOp(Branchcount+lazy), w.popInt(), math.MaxInt32) + } else { + w.emit2(InstOp(Branchcount+lazy), w.popInt(), node.n-node.m) + } + } else { + w.emit1(InstOp(Branchmark+lazy), w.popInt()) + } + + if node.m == 0 { + w.patchJump(w.popInt(), startJumpPos) + } + + case ntGroup | beforeChild, ntGroup | afterChild: + + case ntCapture | beforeChild: + w.emit(Setmark) + + case ntCapture | afterChild: + w.emit2(Capturemark, w.mapCapnum(node.m), w.mapCapnum(node.n)) + + case ntRequire | beforeChild: + // NOTE: the following line causes lookahead/lookbehind to be + // NON-BACKTRACKING. It can be commented out with (*) + w.emit(Setjump) + + w.emit(Setmark) + + case ntRequire | afterChild: + w.emit(Getmark) + + // NOTE: the following line causes lookahead/lookbehind to be + // NON-BACKTRACKING. It can be commented out with (*) + w.emit(Forejump) + + case ntPrevent | beforeChild: + w.emit(Setjump) + w.pushInt(w.curPos()) + w.emit1(Lazybranch, 0) + + case ntPrevent | afterChild: + w.emit(Backjump) + w.patchJump(w.popInt(), w.curPos()) + w.emit(Forejump) + + case ntGreedy | beforeChild: + w.emit(Setjump) + + case ntGreedy | afterChild: + w.emit(Forejump) + + case ntOne, ntNotone: + w.emit1(InstOp(node.t|ntBits), int(node.ch)) + + case ntNotoneloop, ntNotonelazy, ntOneloop, ntOnelazy: + if node.m > 0 { + if node.t == ntOneloop || node.t == ntOnelazy { + w.emit2(Onerep|bits, int(node.ch), node.m) + } else { + w.emit2(Notonerep|bits, int(node.ch), node.m) + } + } + if node.n > node.m { + if node.n == math.MaxInt32 { + w.emit2(InstOp(node.t|ntBits), int(node.ch), math.MaxInt32) + } else { + w.emit2(InstOp(node.t|ntBits), int(node.ch), node.n-node.m) + } + } + + case ntSetloop, ntSetlazy: + if node.m > 0 { + w.emit2(Setrep|bits, w.setCode(node.set), node.m) + } + if node.n > node.m { + if node.n == math.MaxInt32 { + w.emit2(InstOp(node.t|ntBits), w.setCode(node.set), math.MaxInt32) + } else { + w.emit2(InstOp(node.t|ntBits), w.setCode(node.set), node.n-node.m) + } + } + + case ntMulti: + w.emit1(InstOp(node.t|ntBits), w.stringCode(node.str)) + + case ntSet: + w.emit1(InstOp(node.t|ntBits), w.setCode(node.set)) + + case ntRef: + w.emit1(InstOp(node.t|ntBits), w.mapCapnum(node.m)) + + case ntNothing, ntBol, ntEol, ntBoundary, ntNonboundary, ntECMABoundary, ntNonECMABoundary, ntBeginning, ntStart, ntEndZ, ntEnd: + w.emit(InstOp(node.t)) + + default: + return fmt.Errorf("unexpected opcode in regular expression generation: %v", nodetype) + } + + return nil +} + +// To avoid recursion, we use a simple integer stack. +// This is the push. +func (w *writer) pushInt(i int) { + w.intStack = append(w.intStack, i) +} + +// Returns true if the stack is empty. +func (w *writer) emptyStack() bool { + return len(w.intStack) == 0 +} + +// This is the pop. +func (w *writer) popInt() int { + //get our item + idx := len(w.intStack) - 1 + i := w.intStack[idx] + //trim our slice + w.intStack = w.intStack[:idx] + return i +} + +// Returns the current position in the emitted code. +func (w *writer) curPos() int { + return w.curpos +} + +// Fixes up a jump instruction at the specified offset +// so that it jumps to the specified jumpDest. +func (w *writer) patchJump(offset, jumpDest int) { + w.emitted[offset+1] = jumpDest +} + +// Returns an index in the set table for a charset +// uses a map to eliminate duplicates. +func (w *writer) setCode(set *CharSet) int { + if w.counting { + return 0 + } + + buf := &bytes.Buffer{} + + set.mapHashFill(buf) + hash := buf.String() + i, ok := w.sethash[hash] + if !ok { + i = len(w.sethash) + w.sethash[hash] = i + w.settable = append(w.settable, set) + } + return i +} + +// Returns an index in the string table for a string. +// uses a map to eliminate duplicates. +func (w *writer) stringCode(str []rune) int { + if w.counting { + return 0 + } + + hash := string(str) + i, ok := w.stringhash[hash] + if !ok { + i = len(w.stringhash) + w.stringhash[hash] = i + w.stringtable = append(w.stringtable, str) + } + + return i +} + +// When generating code on a regex that uses a sparse set +// of capture slots, we hash them to a dense set of indices +// for an array of capture slots. Instead of doing the hash +// at match time, it's done at compile time, here. +func (w *writer) mapCapnum(capnum int) int { + if capnum == -1 { + return -1 + } + + if w.caps != nil { + return w.caps[capnum] + } + + return capnum +} + +// Emits a zero-argument operation. Note that the emit +// functions all run in two modes: they can emit code, or +// they can just count the size of the code. +func (w *writer) emit(op InstOp) { + if w.counting { + w.count++ + if opcodeBacktracks(op) { + w.trackcount++ + } + return + } + w.emitted[w.curpos] = int(op) + w.curpos++ +} + +// Emits a one-argument operation. +func (w *writer) emit1(op InstOp, opd1 int) { + if w.counting { + w.count += 2 + if opcodeBacktracks(op) { + w.trackcount++ + } + return + } + w.emitted[w.curpos] = int(op) + w.curpos++ + w.emitted[w.curpos] = opd1 + w.curpos++ +} + +// Emits a two-argument operation. +func (w *writer) emit2(op InstOp, opd1, opd2 int) { + if w.counting { + w.count += 3 + if opcodeBacktracks(op) { + w.trackcount++ + } + return + } + w.emitted[w.curpos] = int(op) + w.curpos++ + w.emitted[w.curpos] = opd1 + w.curpos++ + w.emitted[w.curpos] = opd2 + w.curpos++ +} diff --git a/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/testoutput1 b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/testoutput1 new file mode 100644 index 0000000..fbf63fd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/dlclark/regexp2/testoutput1 @@ -0,0 +1,7061 @@ +# This set of tests is for features that are compatible with all versions of +# Perl >= 5.10, in non-UTF mode. It should run clean for the 8-bit, 16-bit, and +# 32-bit PCRE libraries, and also using the perltest.pl script. + +#forbid_utf +#newline_default lf any anycrlf +#perltest + +/the quick brown fox/ + the quick brown fox + 0: the quick brown fox + What do you know about the quick brown fox? + 0: the quick brown fox +\= Expect no match + The quick brown FOX +No match + What do you know about THE QUICK BROWN FOX? +No match + +/The quick brown fox/i + the quick brown fox + 0: the quick brown fox + The quick brown FOX + 0: The quick brown FOX + What do you know about the quick brown fox? + 0: the quick brown fox + What do you know about THE QUICK BROWN FOX? + 0: THE QUICK BROWN FOX + +/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/ + abcd\t\n\r\f\a\e9;\$\\?caxyz + 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz + +/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ + abxyzpqrrrabbxyyyypqAzz + 0: abxyzpqrrrabbxyyyypqAzz + abxyzpqrrrabbxyyyypqAzz + 0: abxyzpqrrrabbxyyyypqAzz + aabxyzpqrrrabbxyyyypqAzz + 0: aabxyzpqrrrabbxyyyypqAzz + aaabxyzpqrrrabbxyyyypqAzz + 0: aaabxyzpqrrrabbxyyyypqAzz + aaaabxyzpqrrrabbxyyyypqAzz + 0: aaaabxyzpqrrrabbxyyyypqAzz + abcxyzpqrrrabbxyyyypqAzz + 0: abcxyzpqrrrabbxyyyypqAzz + aabcxyzpqrrrabbxyyyypqAzz + 0: aabcxyzpqrrrabbxyyyypqAzz + aaabcxyzpqrrrabbxyyyypAzz + 0: aaabcxyzpqrrrabbxyyyypAzz + aaabcxyzpqrrrabbxyyyypqAzz + 0: aaabcxyzpqrrrabbxyyyypqAzz + aaabcxyzpqrrrabbxyyyypqqAzz + 0: aaabcxyzpqrrrabbxyyyypqqAzz + aaabcxyzpqrrrabbxyyyypqqqAzz + 0: aaabcxyzpqrrrabbxyyyypqqqAzz + aaabcxyzpqrrrabbxyyyypqqqqAzz + 0: aaabcxyzpqrrrabbxyyyypqqqqAzz + aaabcxyzpqrrrabbxyyyypqqqqqAzz + 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz + aaabcxyzpqrrrabbxyyyypqqqqqqAzz + 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz + aaaabcxyzpqrrrabbxyyyypqAzz + 0: aaaabcxyzpqrrrabbxyyyypqAzz + abxyzzpqrrrabbxyyyypqAzz + 0: abxyzzpqrrrabbxyyyypqAzz + aabxyzzzpqrrrabbxyyyypqAzz + 0: aabxyzzzpqrrrabbxyyyypqAzz + aaabxyzzzzpqrrrabbxyyyypqAzz + 0: aaabxyzzzzpqrrrabbxyyyypqAzz + aaaabxyzzzzpqrrrabbxyyyypqAzz + 0: aaaabxyzzzzpqrrrabbxyyyypqAzz + abcxyzzpqrrrabbxyyyypqAzz + 0: abcxyzzpqrrrabbxyyyypqAzz + aabcxyzzzpqrrrabbxyyyypqAzz + 0: aabcxyzzzpqrrrabbxyyyypqAzz + aaabcxyzzzzpqrrrabbxyyyypqAzz + 0: aaabcxyzzzzpqrrrabbxyyyypqAzz + aaaabcxyzzzzpqrrrabbxyyyypqAzz + 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz + aaaabcxyzzzzpqrrrabbbxyyyypqAzz + 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz + aaaabcxyzzzzpqrrrabbbxyyyyypqAzz + 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz + aaabcxyzpqrrrabbxyyyypABzz + 0: aaabcxyzpqrrrabbxyyyypABzz + aaabcxyzpqrrrabbxyyyypABBzz + 0: aaabcxyzpqrrrabbxyyyypABBzz + >>>aaabxyzpqrrrabbxyyyypqAzz + 0: aaabxyzpqrrrabbxyyyypqAzz + >aaaabxyzpqrrrabbxyyyypqAzz + 0: aaaabxyzpqrrrabbxyyyypqAzz + >>>>abcxyzpqrrrabbxyyyypqAzz + 0: abcxyzpqrrrabbxyyyypqAzz +\= Expect no match + abxyzpqrrabbxyyyypqAzz +No match + abxyzpqrrrrabbxyyyypqAzz +No match + abxyzpqrrrabxyyyypqAzz +No match + aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz +No match + aaaabcxyzzzzpqrrrabbbxyyypqAzz +No match + aaabcxyzpqrrrabbxyyyypqqqqqqqAzz +No match + +/^(abc){1,2}zz/ + abczz + 0: abczz + 1: abc + abcabczz + 0: abcabczz + 1: abc +\= Expect no match + zz +No match + abcabcabczz +No match + >>abczz +No match + +/^(b+?|a){1,2}?c/ + bc + 0: bc + 1: b + bbc + 0: bbc + 1: b + bbbc + 0: bbbc + 1: bb + bac + 0: bac + 1: a + bbac + 0: bbac + 1: a + aac + 0: aac + 1: a + abbbbbbbbbbbc + 0: abbbbbbbbbbbc + 1: bbbbbbbbbbb + bbbbbbbbbbbac + 0: bbbbbbbbbbbac + 1: a +\= Expect no match + aaac +No match + abbbbbbbbbbbac +No match + +/^(b+|a){1,2}c/ + bc + 0: bc + 1: b + bbc + 0: bbc + 1: bb + bbbc + 0: bbbc + 1: bbb + bac + 0: bac + 1: a + bbac + 0: bbac + 1: a + aac + 0: aac + 1: a + abbbbbbbbbbbc + 0: abbbbbbbbbbbc + 1: bbbbbbbbbbb + bbbbbbbbbbbac + 0: bbbbbbbbbbbac + 1: a +\= Expect no match + aaac +No match + abbbbbbbbbbbac +No match + +/^(b+|a){1,2}?bc/ + bbc + 0: bbc + 1: b + +/^(b*|ba){1,2}?bc/ + babc + 0: babc + 1: ba + bbabc + 0: bbabc + 1: ba + bababc + 0: bababc + 1: ba +\= Expect no match + bababbc +No match + babababc +No match + +/^(ba|b*){1,2}?bc/ + babc + 0: babc + 1: ba + bbabc + 0: bbabc + 1: ba + bababc + 0: bababc + 1: ba +\= Expect no match + bababbc +No match + babababc +No match + +#/^\ca\cA\c[;\c:/ +# \x01\x01\e;z +# 0: \x01\x01\x1b;z + +/^[ab\]cde]/ + athing + 0: a + bthing + 0: b + ]thing + 0: ] + cthing + 0: c + dthing + 0: d + ething + 0: e +\= Expect no match + fthing +No match + [thing +No match + \\thing +No match + +/^[]cde]/ + ]thing + 0: ] + cthing + 0: c + dthing + 0: d + ething + 0: e +\= Expect no match + athing +No match + fthing +No match + +/^[^ab\]cde]/ + fthing + 0: f + [thing + 0: [ + \\thing + 0: \ +\= Expect no match + athing +No match + bthing +No match + ]thing +No match + cthing +No match + dthing +No match + ething +No match + +/^[^]cde]/ + athing + 0: a + fthing + 0: f +\= Expect no match + ]thing +No match + cthing +No match + dthing +No match + ething +No match + +# DLC - I don't get this one +#/^\/ +#  +# 0: \x81 + +#updated to handle 16-bits utf8 +/^ÿ/ + ÿ + 0: \xc3\xbf + +/^[0-9]+$/ + 0 + 0: 0 + 1 + 0: 1 + 2 + 0: 2 + 3 + 0: 3 + 4 + 0: 4 + 5 + 0: 5 + 6 + 0: 6 + 7 + 0: 7 + 8 + 0: 8 + 9 + 0: 9 + 10 + 0: 10 + 100 + 0: 100 +\= Expect no match + abc +No match + +/^.*nter/ + enter + 0: enter + inter + 0: inter + uponter + 0: uponter + +/^xxx[0-9]+$/ + xxx0 + 0: xxx0 + xxx1234 + 0: xxx1234 +\= Expect no match + xxx +No match + +/^.+[0-9][0-9][0-9]$/ + x123 + 0: x123 + x1234 + 0: x1234 + xx123 + 0: xx123 + 123456 + 0: 123456 +\= Expect no match + 123 +No match + +/^.+?[0-9][0-9][0-9]$/ + x123 + 0: x123 + x1234 + 0: x1234 + xx123 + 0: xx123 + 123456 + 0: 123456 +\= Expect no match + 123 +No match + +/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ + abc!pqr=apquxz.ixr.zzz.ac.uk + 0: abc!pqr=apquxz.ixr.zzz.ac.uk + 1: abc + 2: pqr +\= Expect no match + !pqr=apquxz.ixr.zzz.ac.uk +No match + abc!=apquxz.ixr.zzz.ac.uk +No match + abc!pqr=apquxz:ixr.zzz.ac.uk +No match + abc!pqr=apquxz.ixr.zzz.ac.ukk +No match + +/:/ + Well, we need a colon: somewhere + 0: : +\= Expect no match + Fail without a colon +No match + +/([\da-f:]+)$/i + 0abc + 0: 0abc + 1: 0abc + abc + 0: abc + 1: abc + fed + 0: fed + 1: fed + E + 0: E + 1: E + :: + 0: :: + 1: :: + 5f03:12C0::932e + 0: 5f03:12C0::932e + 1: 5f03:12C0::932e + fed def + 0: def + 1: def + Any old stuff + 0: ff + 1: ff +\= Expect no match + 0zzz +No match + gzzz +No match + fed\x20 +No match + Any old rubbish +No match + +/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ + .1.2.3 + 0: .1.2.3 + 1: 1 + 2: 2 + 3: 3 + A.12.123.0 + 0: A.12.123.0 + 1: 12 + 2: 123 + 3: 0 +\= Expect no match + .1.2.3333 +No match + 1.2.3 +No match + 1234.2.3 +No match + +/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ + 1 IN SOA non-sp1 non-sp2( + 0: 1 IN SOA non-sp1 non-sp2( + 1: 1 + 2: non-sp1 + 3: non-sp2 + 1 IN SOA non-sp1 non-sp2 ( + 0: 1 IN SOA non-sp1 non-sp2 ( + 1: 1 + 2: non-sp1 + 3: non-sp2 +\= Expect no match + 1IN SOA non-sp1 non-sp2( +No match + +/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/ + a. + 0: a. + Z. + 0: Z. + 2. + 0: 2. + ab-c.pq-r. + 0: ab-c.pq-r. + 1: .pq-r + sxk.zzz.ac.uk. + 0: sxk.zzz.ac.uk. + 1: .uk + x-.y-. + 0: x-.y-. + 1: .y- +\= Expect no match + -abc.peq. +No match + +/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/ + *.a + 0: *.a + *.b0-a + 0: *.b0-a + 1: 0-a + *.c3-b.c + 0: *.c3-b.c + 1: 3-b + 2: .c + *.c-a.b-c + 0: *.c-a.b-c + 1: -a + 2: .b-c + 3: -c +\= Expect no match + *.0 +No match + *.a- +No match + *.a-b.c- +No match + *.c-a.0-c +No match + +/^(?=ab(de))(abd)(e)/ + abde + 0: abde + 1: de + 2: abd + 3: e + +/^(?!(ab)de|x)(abd)(f)/ + abdf + 0: abdf + 1: + 2: abd + 3: f + +/^(?=(ab(cd)))(ab)/ + abcd + 0: ab + 1: abcd + 2: cd + 3: ab + +/^[\da-f](\.[\da-f])*$/i + a.b.c.d + 0: a.b.c.d + 1: .d + A.B.C.D + 0: A.B.C.D + 1: .D + a.b.c.1.2.3.C + 0: a.b.c.1.2.3.C + 1: .C + +/^\".*\"\s*(;.*)?$/ + \"1234\" + 0: "1234" + \"abcd\" ; + 0: "abcd" ; + 1: ; + \"\" ; rhubarb + 0: "" ; rhubarb + 1: ; rhubarb +\= Expect no match + \"1234\" : things +No match + +/^$/ + \ + 0: +\= Expect no match + A non-empty line +No match + +/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x + ab c + 0: ab c +\= Expect no match + abc +No match + ab cde +No match + +/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/ + ab c + 0: ab c +\= Expect no match + abc +No match + ab cde +No match + +/^ a\ b[c ]d $/x + a bcd + 0: a bcd + a b d + 0: a b d +\= Expect no match + abcd +No match + ab d +No match + +/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ + abcdefhijklm + 0: abcdefhijklm + 1: abc + 2: bc + 3: c + 4: def + 5: ef + 6: f + 7: hij + 8: ij + 9: j +10: klm +11: lm +12: m + +/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/ + abcdefhijklm + 0: abcdefhijklm + 1: bc + 2: c + 3: ef + 4: f + 5: ij + 6: j + 7: lm + 8: m + +#/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/ +# a+ Z0+\x08\n\x1d\x12 +# 0: a+ Z0+\x08\x0a\x1d\x12 + +/^[.^$|()*+?{,}]+/ + .^\$(*+)|{?,?} + 0: .^$(*+)|{?,?} + +/^a*\w/ + z + 0: z + az + 0: az + aaaz + 0: aaaz + a + 0: a + aa + 0: aa + aaaa + 0: aaaa + a+ + 0: a + aa+ + 0: aa + +/^a*?\w/ + z + 0: z + az + 0: a + aaaz + 0: a + a + 0: a + aa + 0: a + aaaa + 0: a + a+ + 0: a + aa+ + 0: a + +/^a+\w/ + az + 0: az + aaaz + 0: aaaz + aa + 0: aa + aaaa + 0: aaaa + aa+ + 0: aa + +/^a+?\w/ + az + 0: az + aaaz + 0: aa + aa + 0: aa + aaaa + 0: aa + aa+ + 0: aa + +/^\d{8}\w{2,}/ + 1234567890 + 0: 1234567890 + 12345678ab + 0: 12345678ab + 12345678__ + 0: 12345678__ +\= Expect no match + 1234567 +No match + +/^[aeiou\d]{4,5}$/ + uoie + 0: uoie + 1234 + 0: 1234 + 12345 + 0: 12345 + aaaaa + 0: aaaaa +\= Expect no match + 123456 +No match + +/^[aeiou\d]{4,5}?/ + uoie + 0: uoie + 1234 + 0: 1234 + 12345 + 0: 1234 + aaaaa + 0: aaaa + 123456 + 0: 1234 + +/\A(abc|def)=(\1){2,3}\Z/ + abc=abcabc + 0: abc=abcabc + 1: abc + 2: abc + def=defdefdef + 0: def=defdefdef + 1: def + 2: def +\= Expect no match + abc=defdef +No match + +/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/ + abcdefghijkcda2 + 0: abcdefghijkcda2 + 1: a + 2: b + 3: c + 4: d + 5: e + 6: f + 7: g + 8: h + 9: i +10: j +11: k +12: cd + abcdefghijkkkkcda2 + 0: abcdefghijkkkkcda2 + 1: a + 2: b + 3: c + 4: d + 5: e + 6: f + 7: g + 8: h + 9: i +10: j +11: k +12: cd + +/(cat(a(ract|tonic)|erpillar)) \1()2(3)/ + cataract cataract23 + 0: cataract cataract23 + 1: cataract + 2: aract + 3: ract + 4: + 5: 3 + catatonic catatonic23 + 0: catatonic catatonic23 + 1: catatonic + 2: atonic + 3: tonic + 4: + 5: 3 + caterpillar caterpillar23 + 0: caterpillar caterpillar23 + 1: caterpillar + 2: erpillar + 3: + 4: + 5: 3 + + +/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/ + From abcd Mon Sep 01 12:33:02 1997 + 0: From abcd Mon Sep 01 12:33 + 1: abcd + +/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/ + From abcd Mon Sep 01 12:33:02 1997 + 0: From abcd Mon Sep 01 12:33 + 1: Sep + From abcd Mon Sep 1 12:33:02 1997 + 0: From abcd Mon Sep 1 12:33 + 1: Sep +\= Expect no match + From abcd Sep 01 12:33:02 1997 +No match + +/^12.34/s + 12\n34 + 0: 12\x0a34 + 12\r34 + 0: 12\x0d34 + +/\w+(?=\t)/ + the quick brown\t fox + 0: brown + +/foo(?!bar)(.*)/ + foobar is foolish see? + 0: foolish see? + 1: lish see? + +/(?:(?!foo)...|^.{0,2})bar(.*)/ + foobar crowbar etc + 0: rowbar etc + 1: etc + barrel + 0: barrel + 1: rel + 2barrel + 0: 2barrel + 1: rel + A barrel + 0: A barrel + 1: rel + +/^(\D*)(?=\d)(?!123)/ + abc456 + 0: abc + 1: abc +\= Expect no match + abc123 +No match + +/^1234(?# test newlines + inside)/ + 1234 + 0: 1234 + +/^1234 #comment in extended re + /x + 1234 + 0: 1234 + +/#rhubarb + abcd/x + abcd + 0: abcd + +/^abcd#rhubarb/x + abcd + 0: abcd + +/^(a)\1{2,3}(.)/ + aaab + 0: aaab + 1: a + 2: b + aaaab + 0: aaaab + 1: a + 2: b + aaaaab + 0: aaaaa + 1: a + 2: a + aaaaaab + 0: aaaaa + 1: a + 2: a + +/(?!^)abc/ + the abc + 0: abc +\= Expect no match + abc +No match + +/(?=^)abc/ + abc + 0: abc +\= Expect no match + the abc +No match + +/^[ab]{1,3}(ab*|b)/ + aabbbbb + 0: aabb + 1: b + +/^[ab]{1,3}?(ab*|b)/ + aabbbbb + 0: aabbbbb + 1: abbbbb + +/^[ab]{1,3}?(ab*?|b)/ + aabbbbb + 0: aa + 1: a + +/^[ab]{1,3}(ab*?|b)/ + aabbbbb + 0: aabb + 1: b + +/ (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* # optional leading comment +(?: (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +" (?: # opening quote... +[^\\\x80-\xff\n\015"] # Anything except backslash and quote +| # or +\\ [^\x80-\xff] # Escaped something (something != CR) +)* " # closing quote +) # initial word +(?: (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* \. (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +" (?: # opening quote... +[^\\\x80-\xff\n\015"] # Anything except backslash and quote +| # or +\\ [^\x80-\xff] # Escaped something (something != CR) +)* " # closing quote +) )* # further okay, if led by a period +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* @ (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # initial subdomain +(?: # +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* \. # if led by a period... +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # ...further okay +)* +# address +| # or +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +" (?: # opening quote... +[^\\\x80-\xff\n\015"] # Anything except backslash and quote +| # or +\\ [^\x80-\xff] # Escaped something (something != CR) +)* " # closing quote +) # one word, optionally followed by.... +(?: +[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... +\( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) | # comments, or... + +" (?: # opening quote... +[^\\\x80-\xff\n\015"] # Anything except backslash and quote +| # or +\\ [^\x80-\xff] # Escaped something (something != CR) +)* " # closing quote +# quoted strings +)* +< (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* # leading < +(?: @ (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # initial subdomain +(?: # +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* \. # if led by a period... +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # ...further okay +)* + +(?: (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* , (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* @ (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # initial subdomain +(?: # +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* \. # if led by a period... +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # ...further okay +)* +)* # further okay, if led by comma +: # closing colon +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* )? # optional route +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +" (?: # opening quote... +[^\\\x80-\xff\n\015"] # Anything except backslash and quote +| # or +\\ [^\x80-\xff] # Escaped something (something != CR) +)* " # closing quote +) # initial word +(?: (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* \. (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +" (?: # opening quote... +[^\\\x80-\xff\n\015"] # Anything except backslash and quote +| # or +\\ [^\x80-\xff] # Escaped something (something != CR) +)* " # closing quote +) )* # further okay, if led by a period +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* @ (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # initial subdomain +(?: # +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* \. # if led by a period... +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* (?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| \[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) # ...further okay +)* +# address spec +(?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* > # trailing > +# name and address +) (?: [\040\t] | \( +(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* +\) )* # optional trailing comment +/x + Alan Other + 0: Alan Other + + 0: user@dom.ain + user\@dom.ain + 0: user@dom.ain + \"A. Other\" (a comment) + 0: "A. Other" (a comment) + A. Other (a comment) + 0: Other (a comment) + \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay + 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay + A missing angle @,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +" # " +[^\\\x80-\xff\n\015"] * # normal +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* +" # " +# Quoted string +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +\. +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +" # " +[^\\\x80-\xff\n\015"] * # normal +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* +" # " +# Quoted string +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\. +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address +| # or +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +" # " +[^\\\x80-\xff\n\015"] * # normal +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* +" # " +# Quoted string +) +# leading word +[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces +(?: +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +| +" # " +[^\\\x80-\xff\n\015"] * # normal +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* +" # " +) # "special" comment or quoted string +[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal" +)* +< +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# < +(?: +@ +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\. +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +(?: , +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +@ +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\. +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +)* # additional domains +: +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)? # optional route +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +" # " +[^\\\x80-\xff\n\015"] * # normal +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* +" # " +# Quoted string +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +\. +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +# Atom +| # or +" # " +[^\\\x80-\xff\n\015"] * # normal +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* +" # " +# Quoted string +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# additional words +)* +@ +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +(?: +\. +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +(?: +[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... +(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom +| +\[ # [ +(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff +\] # ] +) +[\040\t]* # Nab whitespace. +(?: +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: # ( +(?: \\ [^\x80-\xff] | +\( # ( +[^\\\x80-\xff\n\015()] * # normal* +(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* +\) # ) +) # special +[^\\\x80-\xff\n\015()] * # normal* +)* # )* +\) # ) +[\040\t]* )* # If comment found, allow more spaces. +# optional trailing comments +)* +# address spec +> # > +# name and address +) +/x + Alan Other + 0: Alan Other + + 0: user@dom.ain + user\@dom.ain + 0: user@dom.ain + \"A. Other\" (a comment) + 0: "A. Other" + A. Other (a comment) + 0: Other + \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay + 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay + A missing angle ?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f + +/P[^*]TAIRE[^*]{1,6}?LL/ + xxxxxxxxxxxPSTAIREISLLxxxxxxxxx + 0: PSTAIREISLL + +/P[^*]TAIRE[^*]{1,}?LL/ + xxxxxxxxxxxPSTAIREISLLxxxxxxxxx + 0: PSTAIREISLL + +/(\.\d\d[1-9]?)\d+/ + 1.230003938 + 0: .230003938 + 1: .23 + 1.875000282 + 0: .875000282 + 1: .875 + 1.235 + 0: .235 + 1: .23 + +/(\.\d\d((?=0)|\d(?=\d)))/ + 1.230003938 + 0: .23 + 1: .23 + 2: + 1.875000282 + 0: .875 + 1: .875 + 2: 5 +\= Expect no match + 1.235 +No match + +/\b(foo)\s+(\w+)/i + Food is on the foo table + 0: foo table + 1: foo + 2: table + +/foo(.*)bar/ + The food is under the bar in the barn. + 0: food is under the bar in the bar + 1: d is under the bar in the + +/foo(.*?)bar/ + The food is under the bar in the barn. + 0: food is under the bar + 1: d is under the + +/(.*)(\d*)/ + I have 2 numbers: 53147 + 0: I have 2 numbers: 53147 + 1: I have 2 numbers: 53147 + 2: + +/(.*)(\d+)/ + I have 2 numbers: 53147 + 0: I have 2 numbers: 53147 + 1: I have 2 numbers: 5314 + 2: 7 + +/(.*?)(\d*)/ + I have 2 numbers: 53147 + 0: + 1: + 2: + +/(.*?)(\d+)/ + I have 2 numbers: 53147 + 0: I have 2 + 1: I have + 2: 2 + +/(.*)(\d+)$/ + I have 2 numbers: 53147 + 0: I have 2 numbers: 53147 + 1: I have 2 numbers: 5314 + 2: 7 + +/(.*?)(\d+)$/ + I have 2 numbers: 53147 + 0: I have 2 numbers: 53147 + 1: I have 2 numbers: + 2: 53147 + +/(.*)\b(\d+)$/ + I have 2 numbers: 53147 + 0: I have 2 numbers: 53147 + 1: I have 2 numbers: + 2: 53147 + +/(.*\D)(\d+)$/ + I have 2 numbers: 53147 + 0: I have 2 numbers: 53147 + 1: I have 2 numbers: + 2: 53147 + +/^\D*(?!123)/ + ABC123 + 0: AB + +/^(\D*)(?=\d)(?!123)/ + ABC445 + 0: ABC + 1: ABC +\= Expect no match + ABC123 +No match + +/^[W-]46]/ + W46]789 + 0: W46] + -46]789 + 0: -46] +\= Expect no match + Wall +No match + Zebra +No match + 42 +No match + [abcd] +No match + ]abcd[ +No match + +/^[W-\]46]/ + W46]789 + 0: W + Wall + 0: W + Zebra + 0: Z + Xylophone + 0: X + 42 + 0: 4 + [abcd] + 0: [ + ]abcd[ + 0: ] + \\backslash + 0: \ +\= Expect no match + -46]789 +No match + well +No match + +/\d\d\/\d\d\/\d\d\d\d/ + 01/01/2000 + 0: 01/01/2000 + +/word (?:[a-zA-Z0-9]+ ){0,10}otherword/ + word cat dog elephant mussel cow horse canary baboon snake shark otherword + 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword +\= Expect no match + word cat dog elephant mussel cow horse canary baboon snake shark +No match + +/word (?:[a-zA-Z0-9]+ ){0,300}otherword/ +\= Expect no match + word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope +No match + +/^(a){0,0}/ + bcd + 0: + abc + 0: + aab + 0: + +/^(a){0,1}/ + bcd + 0: + abc + 0: a + 1: a + aab + 0: a + 1: a + +/^(a){0,2}/ + bcd + 0: + abc + 0: a + 1: a + aab + 0: aa + 1: a + +/^(a){0,3}/ + bcd + 0: + abc + 0: a + 1: a + aab + 0: aa + 1: a + aaa + 0: aaa + 1: a + +/^(a){0,}/ + bcd + 0: + abc + 0: a + 1: a + aab + 0: aa + 1: a + aaa + 0: aaa + 1: a + aaaaaaaa + 0: aaaaaaaa + 1: a + +/^(a){1,1}/ + abc + 0: a + 1: a + aab + 0: a + 1: a +\= Expect no match + bcd +No match + +/^(a){1,2}/ + abc + 0: a + 1: a + aab + 0: aa + 1: a +\= Expect no match + bcd +No match + +/^(a){1,3}/ + abc + 0: a + 1: a + aab + 0: aa + 1: a + aaa + 0: aaa + 1: a +\= Expect no match + bcd +No match + +/^(a){1,}/ + abc + 0: a + 1: a + aab + 0: aa + 1: a + aaa + 0: aaa + 1: a + aaaaaaaa + 0: aaaaaaaa + 1: a +\= Expect no match + bcd +No match + +/.*\.gif/ + borfle\nbib.gif\nno + 0: bib.gif + +/.{0,}\.gif/ + borfle\nbib.gif\nno + 0: bib.gif + +/.*\.gif/m + borfle\nbib.gif\nno + 0: bib.gif + +/.*\.gif/s + borfle\nbib.gif\nno + 0: borfle\x0abib.gif + +/.*\.gif/ms + borfle\nbib.gif\nno + 0: borfle\x0abib.gif + +/.*$/ + borfle\nbib.gif\nno + 0: no + +/.*$/m + borfle\nbib.gif\nno + 0: borfle + +/.*$/s + borfle\nbib.gif\nno + 0: borfle\x0abib.gif\x0ano + +/.*$/ms + borfle\nbib.gif\nno + 0: borfle\x0abib.gif\x0ano + +/.*$/ + borfle\nbib.gif\nno\n + 0: no + +/.*$/m + borfle\nbib.gif\nno\n + 0: borfle + +/.*$/s + borfle\nbib.gif\nno\n + 0: borfle\x0abib.gif\x0ano\x0a + +/.*$/ms + borfle\nbib.gif\nno\n + 0: borfle\x0abib.gif\x0ano\x0a + +/(.*X|^B)/ + abcde\n1234Xyz + 0: 1234X + 1: 1234X + BarFoo + 0: B + 1: B +\= Expect no match + abcde\nBar +No match + +/(.*X|^B)/m + abcde\n1234Xyz + 0: 1234X + 1: 1234X + BarFoo + 0: B + 1: B + abcde\nBar + 0: B + 1: B + +/(.*X|^B)/s + abcde\n1234Xyz + 0: abcde\x0a1234X + 1: abcde\x0a1234X + BarFoo + 0: B + 1: B +\= Expect no match + abcde\nBar +No match + +/(.*X|^B)/ms + abcde\n1234Xyz + 0: abcde\x0a1234X + 1: abcde\x0a1234X + BarFoo + 0: B + 1: B + abcde\nBar + 0: B + 1: B + +/(?s)(.*X|^B)/ + abcde\n1234Xyz + 0: abcde\x0a1234X + 1: abcde\x0a1234X + BarFoo + 0: B + 1: B +\= Expect no match + abcde\nBar +No match + +/(?s:.*X|^B)/ + abcde\n1234Xyz + 0: abcde\x0a1234X + BarFoo + 0: B +\= Expect no match + abcde\nBar +No match + +/^.*B/ +\= Expect no match + abc\nB +No match + +/(?s)^.*B/ + abc\nB + 0: abc\x0aB + +/(?m)^.*B/ + abc\nB + 0: B + +/(?ms)^.*B/ + abc\nB + 0: abc\x0aB + +/(?ms)^B/ + abc\nB + 0: B + +/(?s)B$/ + B\n + 0: B + +/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ + 123456654321 + 0: 123456654321 + +/^\d\d\d\d\d\d\d\d\d\d\d\d/ + 123456654321 + 0: 123456654321 + +/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ + 123456654321 + 0: 123456654321 + +/^[abc]{12}/ + abcabcabcabc + 0: abcabcabcabc + +/^[a-c]{12}/ + abcabcabcabc + 0: abcabcabcabc + +/^(a|b|c){12}/ + abcabcabcabc + 0: abcabcabcabc + 1: c + +/^[abcdefghijklmnopqrstuvwxy0123456789]/ + n + 0: n +\= Expect no match + z +No match + +/abcde{0,0}/ + abcd + 0: abcd +\= Expect no match + abce +No match + +/ab[cd]{0,0}e/ + abe + 0: abe +\= Expect no match + abcde +No match + +/ab(c){0,0}d/ + abd + 0: abd +\= Expect no match + abcd +No match + +/a(b*)/ + a + 0: a + 1: + ab + 0: ab + 1: b + abbbb + 0: abbbb + 1: bbbb +\= Expect no match + bbbbb +No match + +/ab\d{0}e/ + abe + 0: abe +\= Expect no match + ab1e +No match + +/"([^\\"]+|\\.)*"/ + the \"quick\" brown fox + 0: "quick" + 1: quick + \"the \\\"quick\\\" brown fox\" + 0: "the \"quick\" brown fox" + 1: brown fox + +/]{0,})>]{0,})>([\d]{0,}\.)(.*)((
([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is + 43.Word Processor
(N-1286)
Lega lstaff.comCA - Statewide + 0: 43.Word Processor
(N-1286)
Lega lstaff.comCA - Statewide + 1: BGCOLOR='#DBE9E9' + 2: align=left valign=top + 3: 43. + 4: Word Processor
(N-1286) + 5: + 6: + 7: + 8: align=left valign=top + 9: Lega lstaff.com +10: align=left valign=top +11: CA - Statewide + +/a[^a]b/ + acb + 0: acb + a\nb + 0: a\x0ab + +/a.b/ + acb + 0: acb +\= Expect no match + a\nb +No match + +/a[^a]b/s + acb + 0: acb + a\nb + 0: a\x0ab + +/a.b/s + acb + 0: acb + a\nb + 0: a\x0ab + +/^(b+?|a){1,2}?c/ + bac + 0: bac + 1: a + bbac + 0: bbac + 1: a + bbbac + 0: bbbac + 1: a + bbbbac + 0: bbbbac + 1: a + bbbbbac + 0: bbbbbac + 1: a + +/^(b+|a){1,2}?c/ + bac + 0: bac + 1: a + bbac + 0: bbac + 1: a + bbbac + 0: bbbac + 1: a + bbbbac + 0: bbbbac + 1: a + bbbbbac + 0: bbbbbac + 1: a + +/(?!\A)x/m + a\bx\n + 0: x + a\nx\n + 0: x +\= Expect no match + x\nb\n +No match + +/(A|B)*?CD/ + CD + 0: CD + +/(A|B)*CD/ + CD + 0: CD + +/(AB)*?\1/ + ABABAB + 0: ABAB + 1: AB + +/(AB)*\1/ + ABABAB + 0: ABABAB + 1: AB + +/(?.*/)foo" + /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo + 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo +\= Expect no match + /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ +No match + +/(?>(\.\d\d[1-9]?))\d+/ + 1.230003938 + 0: .230003938 + 1: .23 + 1.875000282 + 0: .875000282 + 1: .875 +\= Expect no match + 1.235 +No match + +/^((?>\w+)|(?>\s+))*$/ + now is the time for all good men to come to the aid of the party + 0: now is the time for all good men to come to the aid of the party + 1: party +\= Expect no match + this is not a line with only words and spaces! +No match + +/(\d+)(\w)/ + 12345a + 0: 12345a + 1: 12345 + 2: a + 12345+ + 0: 12345 + 1: 1234 + 2: 5 + +/((?>\d+))(\w)/ + 12345a + 0: 12345a + 1: 12345 + 2: a +\= Expect no match + 12345+ +No match + +/(?>a+)b/ + aaab + 0: aaab + +/((?>a+)b)/ + aaab + 0: aaab + 1: aaab + +/(?>(a+))b/ + aaab + 0: aaab + 1: aaa + +/(?>b)+/ + aaabbbccc + 0: bbb + +/(?>a+|b+|c+)*c/ + aaabbbbccccd + 0: aaabbbbc + +/((?>[^()]+)|\([^()]*\))+/ + ((abc(ade)ufh()()x + 0: abc(ade)ufh()()x + 1: x + +/\(((?>[^()]+)|\([^()]+\))+\)/ + (abc) + 0: (abc) + 1: abc + (abc(def)xyz) + 0: (abc(def)xyz) + 1: xyz +\= Expect no match + ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +No match + +/a(?-i)b/i + ab + 0: ab + Ab + 0: Ab +\= Expect no match + aB +No match + AB +No match + +/(a (?x)b c)d e/ + a bcd e + 0: a bcd e + 1: a bc +\= Expect no match + a b cd e +No match + abcd e +No match + a bcde +No match + +/(a b(?x)c d (?-x)e f)/ + a bcde f + 0: a bcde f + 1: a bcde f +\= Expect no match + abcdef +No match + +/(a(?i)b)c/ + abc + 0: abc + 1: ab + aBc + 0: aBc + 1: aB +\= Expect no match + abC +No match + aBC +No match + Abc +No match + ABc +No match + ABC +No match + AbC +No match + +/a(?i:b)c/ + abc + 0: abc + aBc + 0: aBc +\= Expect no match + ABC +No match + abC +No match + aBC +No match + +/a(?i:b)*c/ + aBc + 0: aBc + aBBc + 0: aBBc +\= Expect no match + aBC +No match + aBBC +No match + +/a(?=b(?i)c)\w\wd/ + abcd + 0: abcd + abCd + 0: abCd +\= Expect no match + aBCd +No match + abcD +No match + +/(?s-i:more.*than).*million/i + more than million + 0: more than million + more than MILLION + 0: more than MILLION + more \n than Million + 0: more \x0a than Million +\= Expect no match + MORE THAN MILLION +No match + more \n than \n million +No match + +/(?:(?s-i)more.*than).*million/i + more than million + 0: more than million + more than MILLION + 0: more than MILLION + more \n than Million + 0: more \x0a than Million +\= Expect no match + MORE THAN MILLION +No match + more \n than \n million +No match + +/(?>a(?i)b+)+c/ + abc + 0: abc + aBbc + 0: aBbc + aBBc + 0: aBBc +\= Expect no match + Abc +No match + abAb +No match + abbC +No match + +/(?=a(?i)b)\w\wc/ + abc + 0: abc + aBc + 0: aBc +\= Expect no match + Ab +No match + abC +No match + aBC +No match + +/(?<=a(?i)b)(\w\w)c/ + abxxc + 0: xxc + 1: xx + aBxxc + 0: xxc + 1: xx +\= Expect no match + Abxxc +No match + ABxxc +No match + abxxC +No match + +/(?:(a)|b)(?(1)A|B)/ + aA + 0: aA + 1: a + bB + 0: bB +\= Expect no match + aB +No match + bA +No match + +/^(a)?(?(1)a|b)+$/ + aa + 0: aa + 1: a + b + 0: b + bb + 0: bb +\= Expect no match + ab +No match + +# Perl gets this next one wrong if the pattern ends with $; in that case it +# fails to match "12". + +/^(?(?=abc)\w{3}:|\d\d)/ + abc: + 0: abc: + 12 + 0: 12 + 123 + 0: 12 +\= Expect no match + xyz +No match + +/^(?(?!abc)\d\d|\w{3}:)$/ + abc: + 0: abc: + 12 + 0: 12 +\= Expect no match + 123 +No match + xyz +No match + +/(?(?<=foo)bar|cat)/ + foobar + 0: bar + cat + 0: cat + fcat + 0: cat + focat + 0: cat +\= Expect no match + foocat +No match + +/(?(?a*)*/ + a + 0: a + aa + 0: aa + aaaa + 0: aaaa + +/(abc|)+/ + abc + 0: abc + 1: + abcabc + 0: abcabc + 1: + abcabcabc + 0: abcabcabc + 1: + xyz + 0: + 1: + +/([a]*)*/ + a + 0: a + 1: + aaaaa + 0: aaaaa + 1: + +/([ab]*)*/ + a + 0: a + 1: + b + 0: b + 1: + ababab + 0: ababab + 1: + aaaabcde + 0: aaaab + 1: + bbbb + 0: bbbb + 1: + +/([^a]*)*/ + b + 0: b + 1: + bbbb + 0: bbbb + 1: + aaa + 0: + 1: + +/([^ab]*)*/ + cccc + 0: cccc + 1: + abab + 0: + 1: + +/([a]*?)*/ + a + 0: + 1: + aaaa + 0: + 1: + +/([ab]*?)*/ + a + 0: + 1: + b + 0: + 1: + abab + 0: + 1: + baba + 0: + 1: + +/([^a]*?)*/ + b + 0: + 1: + bbbb + 0: + 1: + aaa + 0: + 1: + +/([^ab]*?)*/ + c + 0: + 1: + cccc + 0: + 1: + baba + 0: + 1: + +/(?>a*)*/ + a + 0: a + aaabcde + 0: aaa + +/((?>a*))*/ + aaaaa + 0: aaaaa + 1: + aabbaa + 0: aa + 1: + +/((?>a*?))*/ + aaaaa + 0: + 1: + aabbaa + 0: + 1: + +/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x + 12-sep-98 + 0: 12-sep-98 + 12-09-98 + 0: 12-09-98 +\= Expect no match + sep-12-98 +No match + +/(?<=(foo))bar\1/ + foobarfoo + 0: barfoo + 1: foo + foobarfootling + 0: barfoo + 1: foo +\= Expect no match + foobar +No match + barfoo +No match + +/(?i:saturday|sunday)/ + saturday + 0: saturday + sunday + 0: sunday + Saturday + 0: Saturday + Sunday + 0: Sunday + SATURDAY + 0: SATURDAY + SUNDAY + 0: SUNDAY + SunDay + 0: SunDay + +/(a(?i)bc|BB)x/ + abcx + 0: abcx + 1: abc + aBCx + 0: aBCx + 1: aBC + bbx + 0: bbx + 1: bb + BBx + 0: BBx + 1: BB +\= Expect no match + abcX +No match + aBCX +No match + bbX +No match + BBX +No match + +/^([ab](?i)[cd]|[ef])/ + ac + 0: ac + 1: ac + aC + 0: aC + 1: aC + bD + 0: bD + 1: bD + elephant + 0: e + 1: e + Europe + 0: E + 1: E + frog + 0: f + 1: f + France + 0: F + 1: F +\= Expect no match + Africa +No match + +/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ + ab + 0: ab + 1: ab + aBd + 0: aBd + 1: aBd + xy + 0: xy + 1: xy + xY + 0: xY + 1: xY + zebra + 0: z + 1: z + Zambesi + 0: Z + 1: Z +\= Expect no match + aCD +No match + XY +No match + +/(?<=foo\n)^bar/m + foo\nbar + 0: bar +\= Expect no match + bar +No match + baz\nbar +No match + +/(?<=(?]&/ + <&OUT + 0: <& + +/^(a\1?){4}$/ + aaaaaaaaaa + 0: aaaaaaaaaa + 1: aaaa +\= Expect no match + AB +No match + aaaaaaaaa +No match + aaaaaaaaaaa +No match + +/^(a(?(1)\1)){4}$/ + aaaaaaaaaa + 0: aaaaaaaaaa + 1: aaaa +\= Expect no match + aaaaaaaaa +No match + aaaaaaaaaaa +No match + +/(?:(f)(o)(o)|(b)(a)(r))*/ + foobar + 0: foobar + 1: f + 2: o + 3: o + 4: b + 5: a + 6: r + +/(?<=a)b/ + ab + 0: b +\= Expect no match + cb +No match + b +No match + +/(? + 2: abcd + xy:z:::abcd + 0: xy:z:::abcd + 1: xy:z::: + 2: abcd + +/^[^bcd]*(c+)/ + aexycd + 0: aexyc + 1: c + +/(a*)b+/ + caab + 0: aab + 1: aa + +/([\w:]+::)?(\w+)$/ + abcd + 0: abcd + 1: + 2: abcd + xy:z:::abcd + 0: xy:z:::abcd + 1: xy:z::: + 2: abcd +\= Expect no match + abcd: +No match + abcd: +No match + +/^[^bcd]*(c+)/ + aexycd + 0: aexyc + 1: c + +/(>a+)ab/ + +/(?>a+)b/ + aaab + 0: aaab + +/([[:]+)/ + a:[b]: + 0: :[ + 1: :[ + +/([[=]+)/ + a=[b]= + 0: =[ + 1: =[ + +/([[.]+)/ + a.[b]. + 0: .[ + 1: .[ + +/((?>a+)b)/ + aaab + 0: aaab + 1: aaab + +/(?>(a+))b/ + aaab + 0: aaab + 1: aaa + +/((?>[^()]+)|\([^()]*\))+/ + ((abc(ade)ufh()()x + 0: abc(ade)ufh()()x + 1: x + +/a\Z/ +\= Expect no match + aaab +No match + a\nb\n +No match + +/b\Z/ + a\nb\n + 0: b + +/b\z/ + +/b\Z/ + a\nb + 0: b + +/b\z/ + a\nb + 0: b + +/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/ + a + 0: a + 1: + abc + 0: abc + 1: + a-b + 0: a-b + 1: + 0-9 + 0: 0-9 + 1: + a.b + 0: a.b + 1: + 5.6.7 + 0: 5.6.7 + 1: + the.quick.brown.fox + 0: the.quick.brown.fox + 1: + a100.b200.300c + 0: a100.b200.300c + 1: + 12-ab.1245 + 0: 12-ab.1245 + 1: +\= Expect no match + \ +No match + .a +No match + -a +No match + a- +No match + a. +No match + a_b +No match + a.- +No match + a.. +No match + ab..bc +No match + the.quick.brown.fox- +No match + the.quick.brown.fox. +No match + the.quick.brown.fox_ +No match + the.quick.brown.fox+ +No match + +/(?>.*)(?<=(abcd|wxyz))/ + alphabetabcd + 0: alphabetabcd + 1: abcd + endingwxyz + 0: endingwxyz + 1: wxyz +\= Expect no match + a rather long string that doesn't end with one of them +No match + +/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ + word cat dog elephant mussel cow horse canary baboon snake shark otherword + 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword +\= Expect no match + word cat dog elephant mussel cow horse canary baboon snake shark +No match + +/word (?>[a-zA-Z0-9]+ ){0,30}otherword/ +\= Expect no match + word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope +No match + +/(?<=\d{3}(?!999))foo/ + 999foo + 0: foo + 123999foo + 0: foo +\= Expect no match + 123abcfoo +No match + +/(?<=(?!...999)\d{3})foo/ + 999foo + 0: foo + 123999foo + 0: foo +\= Expect no match + 123abcfoo +No match + +/(?<=\d{3}(?!999)...)foo/ + 123abcfoo + 0: foo + 123456foo + 0: foo +\= Expect no match + 123999foo +No match + +/(?<=\d{3}...)(? + 2: + 3: abcd +
+ 2: + 3: abcd + \s*)=(?>\s*) # find + 2: + 3: abcd + Z)+|A)*/ + ZABCDEFG + 0: ZA + 1: A + +/((?>)+|A)*/ + ZABCDEFG + 0: + 1: + +/^[\d-a]/ + abcde + 0: a + -things + 0: - + 0digit + 0: 0 +\= Expect no match + bcdef +No match + +/[\s]+/ + > \x09\x0a\x0c\x0d\x0b< + 0: \x09\x0a\x0c\x0d\x0b + +/\s+/ + > \x09\x0a\x0c\x0d\x0b< + 0: \x09\x0a\x0c\x0d\x0b + +/a b/x + ab + 0: ab + +/(?!\A)x/m + a\nxb\n + 0: x + +/(?!^)x/m +\= Expect no match + a\nxb\n +No match + +#/abc\Qabc\Eabc/ +# abcabcabc +# 0: abcabcabc + +#/abc\Q(*+|\Eabc/ +# abc(*+|abc +# 0: abc(*+|abc + +#/ abc\Q abc\Eabc/x +# abc abcabc +# 0: abc abcabc +#\= Expect no match +# abcabcabc +#No match + +#/abc#comment +# \Q#not comment +# literal\E/x +# abc#not comment\n literal +# 0: abc#not comment\x0a literal + +#/abc#comment +# \Q#not comment +# literal/x +# abc#not comment\n literal +# 0: abc#not comment\x0a literal + +#/abc#comment +# \Q#not comment +# literal\E #more comment +# /x +# abc#not comment\n literal +# 0: abc#not comment\x0a literal + +#/abc#comment +# \Q#not comment +# literal\E #more comment/x +# abc#not comment\n literal +# 0: abc#not comment\x0a literal + +#/\Qabc\$xyz\E/ +# abc\\\$xyz +# 0: abc\$xyz + +#/\Qabc\E\$\Qxyz\E/ +# abc\$xyz +# 0: abc$xyz + +/\Gabc/ + abc + 0: abc +\= Expect no match + xyzabc +No match + +/a(?x: b c )d/ + XabcdY + 0: abcd +\= Expect no match + Xa b c d Y +No match + +/((?x)x y z | a b c)/ + XabcY + 0: abc + 1: abc + AxyzB + 0: xyz + 1: xyz + +/(?i)AB(?-i)C/ + XabCY + 0: abC +\= Expect no match + XabcY +No match + +/((?i)AB(?-i)C|D)E/ + abCE + 0: abCE + 1: abC + DE + 0: DE + 1: D +\= Expect no match + abcE +No match + abCe +No match + dE +No match + De +No match + +/(.*)\d+\1/ + abc123abc + 0: abc123abc + 1: abc + abc123bc + 0: bc123bc + 1: bc + +/(.*)\d+\1/s + abc123abc + 0: abc123abc + 1: abc + abc123bc + 0: bc123bc + 1: bc + +/((.*))\d+\1/ + abc123abc + 0: abc123abc + 1: abc + 2: abc + abc123bc + 0: bc123bc + 1: bc + 2: bc + +# This tests for an IPv6 address in the form where it can have up to +# eight components, one and only one of which is empty. This must be +# an internal component. + +/^(?!:) # colon disallowed at start + (?: # start of item + (?: [0-9a-f]{1,4} | # 1-4 hex digits or + (?(1)0 | () ) ) # if null previously matched, fail; else null + : # followed by colon + ){1,7} # end item; 1-7 of them required + [0-9a-f]{1,4} $ # final hex number at end of string + (?(1)|.) # check that there was an empty component + /ix + a123::a123 + 0: a123::a123 + 1: + a123:b342::abcd + 0: a123:b342::abcd + 1: + a123:b342::324e:abcd + 0: a123:b342::324e:abcd + 1: + a123:ddde:b342::324e:abcd + 0: a123:ddde:b342::324e:abcd + 1: + a123:ddde:b342::324e:dcba:abcd + 0: a123:ddde:b342::324e:dcba:abcd + 1: + a123:ddde:9999:b342::324e:dcba:abcd + 0: a123:ddde:9999:b342::324e:dcba:abcd + 1: +\= Expect no match + 1:2:3:4:5:6:7:8 +No match + a123:bce:ddde:9999:b342::324e:dcba:abcd +No match + a123::9999:b342::324e:dcba:abcd +No match + abcde:2:3:4:5:6:7:8 +No match + ::1 +No match + abcd:fee0:123:: +No match + :1 +No match + 1: +No match + +#/[z\Qa-d]\E]/ +# z +# 0: z +# a +# 0: a +# - +# 0: - +# d +# 0: d +# ] +# 0: ] +#\= Expect no match +# b +#No match + +#TODO: PCRE has an optimization to make this workable, .NET does not +#/(a+)*b/ +#\= Expect no match +# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +#No match + +# All these had to be updated because we understand unicode +# and this looks like it's expecting single byte matches + +# .NET generates \xe4...not sure what's up, might just be different code pages +/(?i)reg(?:ul(?:[aä]|ae)r|ex)/ + REGular + 0: REGular + regulaer + 0: regulaer + Regex + 0: Regex + regulär + 0: regul\xc3\xa4r + +#/Åæåä[à-ÿÀ-ß]+/ +# Åæåäà +# 0: \xc5\xe6\xe5\xe4\xe0 +# Åæåäÿ +# 0: \xc5\xe6\xe5\xe4\xff +# ÅæåäÀ +# 0: \xc5\xe6\xe5\xe4\xc0 +# Åæåäß +# 0: \xc5\xe6\xe5\xe4\xdf + +/(?<=Z)X./ + \x84XAZXB + 0: XB + +/ab cd (?x) de fg/ + ab cd defg + 0: ab cd defg + +/ab cd(?x) de fg/ + ab cddefg + 0: ab cddefg +\= Expect no match + abcddefg +No match + +/(? + 2: + D + 0: D + 1: + 2: + +# this is really long with debug -- removing for now +#/(a|)*\d/ +# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 +# 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 +# 1: +#\= Expect no match +# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +#No match + +/(?>a|)*\d/ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 + 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 +\= Expect no match + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +No match + +/(?:a|)*\d/ + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 + 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 +\= Expect no match + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +No match + +/^(?s)(?>.*)(? + 2: a + +/(?>(a))b|(a)c/ + ac + 0: ac + 1: + 2: a + +/(?=(a))ab|(a)c/ + ac + 0: ac + 1: + 2: a + +/((?>(a))b|(a)c)/ + ac + 0: ac + 1: ac + 2: + 3: a + +/(?=(?>(a))b|(a)c)(..)/ + ac + 0: ac + 1: + 2: a + 3: ac + +/(?>(?>(a))b|(a)c)/ + ac + 0: ac + 1: + 2: a + +/((?>(a+)b)+(aabab))/ + aaaabaaabaabab + 0: aaaabaaabaabab + 1: aaaabaaabaabab + 2: aaa + 3: aabab + +/(?>a+|ab)+?c/ +\= Expect no match + aabc +No match + +/(?>a+|ab)+c/ +\= Expect no match + aabc +No match + +/(?:a+|ab)+c/ + aabc + 0: aabc + +/^(?:a|ab)+c/ + aaaabc + 0: aaaabc + +/(?=abc){0}xyz/ + xyz + 0: xyz + +/(?=abc){1}xyz/ +\= Expect no match + xyz +No match + +/(?=(a))?./ + ab + 0: a + 1: a + bc + 0: b + +/(?=(a))??./ + ab + 0: a + bc + 0: b + +/^(?!a){0}\w+/ + aaaaa + 0: aaaaa + +/(?<=(abc))?xyz/ + abcxyz + 0: xyz + 1: abc + pqrxyz + 0: xyz + +/^[g]+/ + ggg<<>> + 0: ggg<<>> +\= Expect no match + \\ga +No match + +/^[ga]+/ + gggagagaxyz + 0: gggagaga + +/[:a]xxx[b:]/ + :xxx: + 0: :xxx: + +/(?<=a{2})b/i + xaabc + 0: b +\= Expect no match + xabc +No match + +/(? +# 4: +# 5: c +# 6: d +# 7: Y + +#/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/ +# XYabcdY +# 0: XYabcdY +# 1: a +# 2: b +# 3: +# 4: +# 5: c +# 6: d +# 7: Y + +/(?'abc'\w+):\k{2}/ + a:aaxyz + 0: a:aa + 1: a + ab:ababxyz + 0: ab:abab + 1: ab +\= Expect no match + a:axyz +No match + ab:abxyz +No match + +/^(?a)? (?(ab)b|c) (?(ab)d|e)/x + abd + 0: abd + 1: a + ce + 0: ce + +# .NET has more consistent grouping numbers with these dupe groups for the two options +/(?:a(? (?')|(?")) |b(? (?')|(?")) ) (?(quote)[a-z]+|[0-9]+)/x,dupnames + a\"aaaaa + 0: a"aaaaa + 1: " + 2: + 3: " + b\"aaaaa + 0: b"aaaaa + 1: " + 2: + 3: " +\= Expect no match + b\"11111 +No match + +#/(?P(?P0)(?P>L1)|(?P>L2))/ +# 0 +# 0: 0 +# 1: 0 +# 00 +# 0: 00 +# 1: 00 +# 2: 0 +# 0000 +# 0: 0000 +# 1: 0000 +# 2: 0 + +#/(?P(?P0)|(?P>L2)(?P>L1))/ +# 0 +# 0: 0 +# 1: 0 +# 2: 0 +# 00 +# 0: 0 +# 1: 0 +# 2: 0 +# 0000 +# 0: 0 +# 1: 0 +# 2: 0 + +# Check the use of names for failure + +# Check opening parens in comment when seeking forward reference. + +#/(?P(?P=abn)xxx|)+/ +# xxx +# 0: +# 1: + +#Posses +/^(a)?(\w)/ + aaaaX + 0: aa + 1: a + 2: a + YZ + 0: Y + 1: + 2: Y + +#Posses +/^(?:a)?(\w)/ + aaaaX + 0: aa + 1: a + YZ + 0: Y + 1: Y + +/\A.*?(a|bc)/ + ba + 0: ba + 1: a + +/\A.*?(?:a|bc|d)/ + ba + 0: ba + +# -------------------------- + +/(another)?(\1?)test/ + hello world test + 0: test + 1: + 2: + +/(another)?(\1+)test/ +\= Expect no match + hello world test +No match + +/((?:a?)*)*c/ + aac + 0: aac + 1: + +/((?>a?)*)*c/ + aac + 0: aac + 1: + +/(?>.*?a)(?<=ba)/ + aba + 0: ba + +/(?:.*?a)(?<=ba)/ + aba + 0: aba + +/(?>.*?a)b/s + aab + 0: ab + +/(?>.*?a)b/ + aab + 0: ab + +/(?>^a)b/s +\= Expect no match + aab +No match + +/(?>.*?)(?<=(abcd)|(wxyz))/ + alphabetabcd + 0: + 1: abcd + endingwxyz + 0: + 1: + 2: wxyz + +/(?>.*)(?<=(abcd)|(wxyz))/ + alphabetabcd + 0: alphabetabcd + 1: abcd + endingwxyz + 0: endingwxyz + 1: + 2: wxyz + +"(?>.*)foo" +\= Expect no match + abcdfooxyz +No match + +"(?>.*?)foo" + abcdfooxyz + 0: foo + +# Tests that try to figure out how Perl works. My hypothesis is that the first +# verb that is backtracked onto is the one that acts. This seems to be the case +# almost all the time, but there is one exception that is perhaps a bug. + +/a(?=bc).|abd/ + abd + 0: abd + abc + 0: ab + +/a(?>bc)d|abd/ + abceabd + 0: abd + +# These tests were formerly in test 2, but changes in PCRE and Perl have +# made them compatible. + +/^(a)?(?(1)a|b)+$/ +\= Expect no match + a +No match + +# ---- + +/^\d*\w{4}/ + 1234 + 0: 1234 +\= Expect no match + 123 +No match + +/^[^b]*\w{4}/ + aaaa + 0: aaaa +\= Expect no match + aaa +No match + +/^[^b]*\w{4}/i + aaaa + 0: aaaa +\= Expect no match + aaa +No match + +/^a*\w{4}/ + aaaa + 0: aaaa +\= Expect no match + aaa +No match + +/^a*\w{4}/i + aaaa + 0: aaaa +\= Expect no match + aaa +No match + +/(?:(?foo)|(?bar))\k/dupnames + foofoo + 0: foofoo + 1: foo + barbar + 0: barbar + 1: bar + +# A notable difference between PCRE and .NET. According to +# the PCRE docs: +# If you make a subroutine call to a non-unique named +# subpattern, the one that corresponds to the first +# occurrence of the name is used. In the absence of +# duplicate numbers (see the previous section) this is +# the one with the lowest number. +# .NET takes the most recently captured number according to MSDN: +# A backreference refers to the most recent definition of +# a group (the definition most immediately to the left, +# when matching left to right). When a group makes multiple +# captures, a backreference refers to the most recent capture. + +#/(?A)(?:(?foo)|(?bar))\k/dupnames +# AfooA +# 0: AfooA +# 1: A +# 2: foo +# AbarA +# 0: AbarA +# 1: A +# 2: +# 3: bar +#\= Expect no match +# Afoofoo +#No match +# Abarbar +#No match + +/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ + 1 IN SOA non-sp1 non-sp2( + 0: 1 IN SOA non-sp1 non-sp2( + 1: 1 + 2: non-sp1 + 3: non-sp2 + +# TODO: .NET's group number ordering here in the second example is a bit odd +/^ (?:(?A)|(?'B'B)(?A)) (?(A)x) (?(B)y)$/x,dupnames + Ax + 0: Ax + 1: A + BAxy + 0: BAxy + 1: A + 2: B + +/ ^ a + b $ /x + aaaab + 0: aaaab + +/ ^ a + #comment + b $ /x + aaaab + 0: aaaab + +/ ^ a + #comment + #comment + b $ /x + aaaab + 0: aaaab + +/ ^ (?> a + ) b $ /x + aaaab + 0: aaaab + +/ ^ ( a + ) + \w $ /x + aaaab + 0: aaaab + 1: aaaa + +/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/ +\= Expect no match + acb +No match + +#Posses +#/\A(?:[^\"]+|\"(?:[^\"]*|\"\")*\")+/ +# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED +# 0: NON QUOTED "QUOT""ED" AFTER + +#Posses +#/\A(?:[^\"]+|\"(?:[^\"]+|\"\")*\")+/ +# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED +# 0: NON QUOTED "QUOT""ED" AFTER + +#Posses +#/\A(?:[^\"]+|\"(?:[^\"]+|\"\")+\")+/ +# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED +# 0: NON QUOTED "QUOT""ED" AFTER + +#Posses +#/\A([^\"1]+|[\"2]([^\"3]*|[\"4][\"5])*[\"6])+/ +# NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED +# 0: NON QUOTED "QUOT""ED" AFTER +# 1: AFTER +# 2: + +/^\w+(?>\s*)(?<=\w)/ + test test + 0: tes + +#/(?Pa)?(?Pb)?(?()c|d)*l/ +# acl +# 0: acl +# 1: a +# bdl +# 0: bdl +# 1: +# 2: b +# adl +# 0: dl +# bcl +# 0: l + +/\sabc/ + \x0babc + 0: \x0babc + +#/[\Qa]\E]+/ +# aa]] +# 0: aa]] + +#/[\Q]a\E]+/ +# aa]] +# 0: aa]] + +/A((((((((a))))))))\8B/ + AaaB + 0: AaaB + 1: a + 2: a + 3: a + 4: a + 5: a + 6: a + 7: a + 8: a + +/A(((((((((a)))))))))\9B/ + AaaB + 0: AaaB + 1: a + 2: a + 3: a + 4: a + 5: a + 6: a + 7: a + 8: a + 9: a + +/(|ab)*?d/ + abd + 0: abd + 1: ab + xyd + 0: d + +/(\2|a)(\1)/ + aaa + 0: aa + 1: a + 2: a + +/(\2)(\1)/ + +"Z*(|d*){216}" + +/((((((((((((x))))))))))))\12/ + xx + 0: xx + 1: x + 2: x + 3: x + 4: x + 5: x + 6: x + 7: x + 8: x + 9: x +10: x +11: x +12: x + +#"(?|(\k'Pm')|(?'Pm'))" +# abcd +# 0: +# 1: + +#/(?|(aaa)|(b))\g{1}/ +# aaaaaa +# 0: aaaaaa +# 1: aaa +# bb +# 0: bb +# 1: b + +#/(?|(aaa)|(b))(?1)/ +# aaaaaa +# 0: aaaaaa +# 1: aaa +# baaa +# 0: baaa +# 1: b +#\= Expect no match +# bb +#No match + +#/(?|(aaa)|(b))/ +# xaaa +# 0: aaa +# 1: aaa +# xbc +# 0: b +# 1: b + +#/(?|(?'a'aaa)|(?'a'b))\k'a'/ +# aaaaaa +# 0: aaaaaa +# 1: aaa +# bb +# 0: bb +# 1: b + +#/(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/dupnames +# aaaccccaaa +# 0: aaaccccaaa +# 1: aaa +# 2: cccc +# bccccb +# 0: bccccb +# 1: b +# 2: cccc + +# End of testinput1 diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.gitignore b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.gitignore new file mode 100644 index 0000000..66fd13c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.gitignore @@ -0,0 +1,15 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.golangci.yml new file mode 100644 index 0000000..d3ed710 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/.golangci.yml @@ -0,0 +1,24 @@ +linters: + enable-all: true + disable: + - golint + - interfacer + - scopelint + - maligned + - rowserrcheck + - funlen + - depguard + - goerr113 + - exhaustivestruct + - testpackage + - gochecknoglobals + - wrapcheck + - forbidigo + - ifshort + - cyclop + - gomoddirectives +linters-settings: + exhaustive: + default-signifies-exhaustive: true +issues: + exclude-use-default: false diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/LICENSE b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/LICENSE new file mode 100644 index 0000000..83c2440 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Erik G. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/README.md b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/README.md new file mode 100644 index 0000000..22619d1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/README.md @@ -0,0 +1,2 @@ +# coninput +Go library for input handling using Windows Console API diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/keycodes.go b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/keycodes.go new file mode 100644 index 0000000..902ee1b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/keycodes.go @@ -0,0 +1,205 @@ +package coninput + +// VirtualKeyCode holds a virtual key code (see +// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes). +type VirtualKeyCode uint16 + +const ( + VK_LBUTTON VirtualKeyCode = 0x01 + VK_RBUTTON VirtualKeyCode = 0x02 + VK_CANCEL VirtualKeyCode = 0x03 + VK_MBUTTON VirtualKeyCode = 0x04 + VK_XBUTTON1 VirtualKeyCode = 0x05 + VK_XBUTTON2 VirtualKeyCode = 0x06 + VK_BACK VirtualKeyCode = 0x08 + VK_TAB VirtualKeyCode = 0x09 + VK_CLEAR VirtualKeyCode = 0x0C + VK_RETURN VirtualKeyCode = 0x0D + VK_SHIFT VirtualKeyCode = 0x10 + VK_CONTROL VirtualKeyCode = 0x11 + VK_MENU VirtualKeyCode = 0x12 + VK_PAUSE VirtualKeyCode = 0x13 + VK_CAPITAL VirtualKeyCode = 0x14 + VK_KANA VirtualKeyCode = 0x15 + VK_HANGEUL VirtualKeyCode = 0x15 + VK_HANGUL VirtualKeyCode = 0x15 + VK_IME_ON VirtualKeyCode = 0x16 + VK_JUNJA VirtualKeyCode = 0x17 + VK_FINAL VirtualKeyCode = 0x18 + VK_HANJA VirtualKeyCode = 0x19 + VK_KANJI VirtualKeyCode = 0x19 + VK_IME_OFF VirtualKeyCode = 0x1A + VK_ESCAPE VirtualKeyCode = 0x1B + VK_CONVERT VirtualKeyCode = 0x1C + VK_NONCONVERT VirtualKeyCode = 0x1D + VK_ACCEPT VirtualKeyCode = 0x1E + VK_MODECHANGE VirtualKeyCode = 0x1F + VK_SPACE VirtualKeyCode = 0x20 + VK_PRIOR VirtualKeyCode = 0x21 + VK_NEXT VirtualKeyCode = 0x22 + VK_END VirtualKeyCode = 0x23 + VK_HOME VirtualKeyCode = 0x24 + VK_LEFT VirtualKeyCode = 0x25 + VK_UP VirtualKeyCode = 0x26 + VK_RIGHT VirtualKeyCode = 0x27 + VK_DOWN VirtualKeyCode = 0x28 + VK_SELECT VirtualKeyCode = 0x29 + VK_PRINT VirtualKeyCode = 0x2A + VK_EXECUTE VirtualKeyCode = 0x2B + VK_SNAPSHOT VirtualKeyCode = 0x2C + VK_INSERT VirtualKeyCode = 0x2D + VK_DELETE VirtualKeyCode = 0x2E + VK_HELP VirtualKeyCode = 0x2F + VK_0 VirtualKeyCode = 0x30 + VK_1 VirtualKeyCode = 0x31 + VK_2 VirtualKeyCode = 0x32 + VK_3 VirtualKeyCode = 0x33 + VK_4 VirtualKeyCode = 0x34 + VK_5 VirtualKeyCode = 0x35 + VK_6 VirtualKeyCode = 0x36 + VK_7 VirtualKeyCode = 0x37 + VK_8 VirtualKeyCode = 0x38 + VK_9 VirtualKeyCode = 0x39 + VK_A VirtualKeyCode = 0x41 + VK_B VirtualKeyCode = 0x42 + VK_C VirtualKeyCode = 0x43 + VK_D VirtualKeyCode = 0x44 + VK_E VirtualKeyCode = 0x45 + VK_F VirtualKeyCode = 0x46 + VK_G VirtualKeyCode = 0x47 + VK_H VirtualKeyCode = 0x48 + VK_I VirtualKeyCode = 0x49 + VK_J VirtualKeyCode = 0x4A + VK_K VirtualKeyCode = 0x4B + VK_L VirtualKeyCode = 0x4C + VK_M VirtualKeyCode = 0x4D + VK_N VirtualKeyCode = 0x4E + VK_O VirtualKeyCode = 0x4F + VK_P VirtualKeyCode = 0x50 + VK_Q VirtualKeyCode = 0x51 + VK_R VirtualKeyCode = 0x52 + VK_S VirtualKeyCode = 0x53 + VK_T VirtualKeyCode = 0x54 + VK_U VirtualKeyCode = 0x55 + VK_V VirtualKeyCode = 0x56 + VK_W VirtualKeyCode = 0x57 + VK_X VirtualKeyCode = 0x58 + VK_Y VirtualKeyCode = 0x59 + VK_Z VirtualKeyCode = 0x5A + VK_LWIN VirtualKeyCode = 0x5B + VK_RWIN VirtualKeyCode = 0x5C + VK_APPS VirtualKeyCode = 0x5D + VK_SLEEP VirtualKeyCode = 0x5F + VK_NUMPAD0 VirtualKeyCode = 0x60 + VK_NUMPAD1 VirtualKeyCode = 0x61 + VK_NUMPAD2 VirtualKeyCode = 0x62 + VK_NUMPAD3 VirtualKeyCode = 0x63 + VK_NUMPAD4 VirtualKeyCode = 0x64 + VK_NUMPAD5 VirtualKeyCode = 0x65 + VK_NUMPAD6 VirtualKeyCode = 0x66 + VK_NUMPAD7 VirtualKeyCode = 0x67 + VK_NUMPAD8 VirtualKeyCode = 0x68 + VK_NUMPAD9 VirtualKeyCode = 0x69 + VK_MULTIPLY VirtualKeyCode = 0x6A + VK_ADD VirtualKeyCode = 0x6B + VK_SEPARATOR VirtualKeyCode = 0x6C + VK_SUBTRACT VirtualKeyCode = 0x6D + VK_DECIMAL VirtualKeyCode = 0x6E + VK_DIVIDE VirtualKeyCode = 0x6F + VK_F1 VirtualKeyCode = 0x70 + VK_F2 VirtualKeyCode = 0x71 + VK_F3 VirtualKeyCode = 0x72 + VK_F4 VirtualKeyCode = 0x73 + VK_F5 VirtualKeyCode = 0x74 + VK_F6 VirtualKeyCode = 0x75 + VK_F7 VirtualKeyCode = 0x76 + VK_F8 VirtualKeyCode = 0x77 + VK_F9 VirtualKeyCode = 0x78 + VK_F10 VirtualKeyCode = 0x79 + VK_F11 VirtualKeyCode = 0x7A + VK_F12 VirtualKeyCode = 0x7B + VK_F13 VirtualKeyCode = 0x7C + VK_F14 VirtualKeyCode = 0x7D + VK_F15 VirtualKeyCode = 0x7E + VK_F16 VirtualKeyCode = 0x7F + VK_F17 VirtualKeyCode = 0x80 + VK_F18 VirtualKeyCode = 0x81 + VK_F19 VirtualKeyCode = 0x82 + VK_F20 VirtualKeyCode = 0x83 + VK_F21 VirtualKeyCode = 0x84 + VK_F22 VirtualKeyCode = 0x85 + VK_F23 VirtualKeyCode = 0x86 + VK_F24 VirtualKeyCode = 0x87 + VK_NUMLOCK VirtualKeyCode = 0x90 + VK_SCROLL VirtualKeyCode = 0x91 + VK_OEM_NEC_EQUAL VirtualKeyCode = 0x92 + VK_OEM_FJ_JISHO VirtualKeyCode = 0x92 + VK_OEM_FJ_MASSHOU VirtualKeyCode = 0x93 + VK_OEM_FJ_TOUROKU VirtualKeyCode = 0x94 + VK_OEM_FJ_LOYA VirtualKeyCode = 0x95 + VK_OEM_FJ_ROYA VirtualKeyCode = 0x96 + VK_LSHIFT VirtualKeyCode = 0xA0 + VK_RSHIFT VirtualKeyCode = 0xA1 + VK_LCONTROL VirtualKeyCode = 0xA2 + VK_RCONTROL VirtualKeyCode = 0xA3 + VK_LMENU VirtualKeyCode = 0xA4 + VK_RMENU VirtualKeyCode = 0xA5 + VK_BROWSER_BACK VirtualKeyCode = 0xA6 + VK_BROWSER_FORWARD VirtualKeyCode = 0xA7 + VK_BROWSER_REFRESH VirtualKeyCode = 0xA8 + VK_BROWSER_STOP VirtualKeyCode = 0xA9 + VK_BROWSER_SEARCH VirtualKeyCode = 0xAA + VK_BROWSER_FAVORITES VirtualKeyCode = 0xAB + VK_BROWSER_HOME VirtualKeyCode = 0xAC + VK_VOLUME_MUTE VirtualKeyCode = 0xAD + VK_VOLUME_DOWN VirtualKeyCode = 0xAE + VK_VOLUME_UP VirtualKeyCode = 0xAF + VK_MEDIA_NEXT_TRACK VirtualKeyCode = 0xB0 + VK_MEDIA_PREV_TRACK VirtualKeyCode = 0xB1 + VK_MEDIA_STOP VirtualKeyCode = 0xB2 + VK_MEDIA_PLAY_PAUSE VirtualKeyCode = 0xB3 + VK_LAUNCH_MAIL VirtualKeyCode = 0xB4 + VK_LAUNCH_MEDIA_SELECT VirtualKeyCode = 0xB5 + VK_LAUNCH_APP1 VirtualKeyCode = 0xB6 + VK_LAUNCH_APP2 VirtualKeyCode = 0xB7 + VK_OEM_1 VirtualKeyCode = 0xBA + VK_OEM_PLUS VirtualKeyCode = 0xBB + VK_OEM_COMMA VirtualKeyCode = 0xBC + VK_OEM_MINUS VirtualKeyCode = 0xBD + VK_OEM_PERIOD VirtualKeyCode = 0xBE + VK_OEM_2 VirtualKeyCode = 0xBF + VK_OEM_3 VirtualKeyCode = 0xC0 + VK_OEM_4 VirtualKeyCode = 0xDB + VK_OEM_5 VirtualKeyCode = 0xDC + VK_OEM_6 VirtualKeyCode = 0xDD + VK_OEM_7 VirtualKeyCode = 0xDE + VK_OEM_8 VirtualKeyCode = 0xDF + VK_OEM_AX VirtualKeyCode = 0xE1 + VK_OEM_102 VirtualKeyCode = 0xE2 + VK_ICO_HELP VirtualKeyCode = 0xE3 + VK_ICO_00 VirtualKeyCode = 0xE4 + VK_PROCESSKEY VirtualKeyCode = 0xE5 + VK_ICO_CLEAR VirtualKeyCode = 0xE6 + VK_OEM_RESET VirtualKeyCode = 0xE9 + VK_OEM_JUMP VirtualKeyCode = 0xEA + VK_OEM_PA1 VirtualKeyCode = 0xEB + VK_OEM_PA2 VirtualKeyCode = 0xEC + VK_OEM_PA3 VirtualKeyCode = 0xED + VK_OEM_WSCTRL VirtualKeyCode = 0xEE + VK_OEM_CUSEL VirtualKeyCode = 0xEF + VK_OEM_ATTN VirtualKeyCode = 0xF0 + VK_OEM_FINISH VirtualKeyCode = 0xF1 + VK_OEM_COPY VirtualKeyCode = 0xF2 + VK_OEM_AUTO VirtualKeyCode = 0xF3 + VK_OEM_ENLW VirtualKeyCode = 0xF4 + VK_OEM_BACKTAB VirtualKeyCode = 0xF5 + VK_ATTN VirtualKeyCode = 0xF6 + VK_CRSEL VirtualKeyCode = 0xF7 + VK_EXSEL VirtualKeyCode = 0xF8 + VK_EREOF VirtualKeyCode = 0xF9 + VK_PLAY VirtualKeyCode = 0xFA + VK_ZOOM VirtualKeyCode = 0xFB + VK_NONAME VirtualKeyCode = 0xFC + VK_PA1 VirtualKeyCode = 0xFD + VK_OEM_CLEAR VirtualKeyCode = 0xFE +) diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/mode.go b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/mode.go new file mode 100644 index 0000000..e6d8bf4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/mode.go @@ -0,0 +1,82 @@ +//go:build windows +// +build windows + +package coninput + +import ( + "strings" + + "golang.org/x/sys/windows" +) + +// AddInputModes returns the given mode with one or more additional modes enabled. +func AddInputModes(mode uint32, enableModes ...uint32) uint32 { + for _, enableMode := range enableModes { + mode |= enableMode + } + + return mode +} + +// RemoveInputModes returns the given mode with one or more additional modes disabled. +func RemoveInputModes(mode uint32, disableModes ...uint32) uint32 { + for _, disableMode := range disableModes { + mode &^= disableMode + } + + return mode +} + +// ToggleInputModes returns the given mode with one or more additional modes toggeled. +func ToggleInputModes(mode uint32, toggleModes ...uint32) uint32 { + for _, toggeMode := range toggleModes { + mode ^= toggeMode + } + + return mode +} + +var inputModes = []struct { + mode uint32 + name string +}{ + {mode: windows.ENABLE_ECHO_INPUT, name: "ENABLE_ECHO_INPUT"}, + {mode: windows.ENABLE_INSERT_MODE, name: "ENABLE_INSERT_MODE"}, + {mode: windows.ENABLE_LINE_INPUT, name: "ENABLE_LINE_INPUT"}, + {mode: windows.ENABLE_MOUSE_INPUT, name: "ENABLE_MOUSE_INPUT"}, + {mode: windows.ENABLE_PROCESSED_INPUT, name: "ENABLE_PROCESSED_INPUT"}, + {mode: windows.ENABLE_QUICK_EDIT_MODE, name: "ENABLE_QUICK_EDIT_MODE"}, + {mode: windows.ENABLE_WINDOW_INPUT, name: "ENABLE_WINDOW_INPUT"}, + {mode: windows.ENABLE_VIRTUAL_TERMINAL_INPUT, name: "ENABLE_VIRTUAL_TERMINAL_INPUT"}, +} + +// ListInputMode returnes the isolated enabled input modes as a list. +func ListInputModes(mode uint32) []uint32 { + modes := []uint32{} + + for _, inputMode := range inputModes { + if mode&inputMode.mode > 0 { + modes = append(modes, inputMode.mode) + } + } + + return modes +} + +// ListInputMode returnes the isolated enabled input mode names as a list. +func ListInputModeNames(mode uint32) []string { + modes := []string{} + + for _, inputMode := range inputModes { + if mode&inputMode.mode > 0 { + modes = append(modes, inputMode.name) + } + } + + return modes +} + +// DescribeInputMode returns a string containing the names of each enabled input mode. +func DescribeInputMode(mode uint32) string { + return strings.Join(ListInputModeNames(mode), "|") +} diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/read.go b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/read.go new file mode 100644 index 0000000..b2dd82f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/read.go @@ -0,0 +1,154 @@ +//go:build windows +// +build windows + +package coninput + +import ( + "fmt" + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +var ( + modkernel32 = windows.NewLazySystemDLL("kernel32.dll") + procReadConsoleInputW = modkernel32.NewProc("ReadConsoleInputW") + procPeekConsoleInputW = modkernel32.NewProc("PeekConsoleInputW") + procGetNumberOfConsoleInputEvents = modkernel32.NewProc("GetNumberOfConsoleInputEvents") + procFlushConsoleInputBuffer = modkernel32.NewProc("FlushConsoleInputBuffer") +) + +// NewStdinHandle is a shortcut for windows.GetStdHandle(windows.STD_INPUT_HANDLE). +func NewStdinHandle() (windows.Handle, error) { + return windows.GetStdHandle(windows.STD_INPUT_HANDLE) +} + +// WinReadConsoleInput is a thin wrapper around the Windows console API function +// ReadConsoleInput (see +// https://docs.microsoft.com/en-us/windows/console/readconsoleinput). In most +// cases it is more practical to either use ReadConsoleInput or +// ReadNConsoleInputs. +func WinReadConsoleInput(consoleInput windows.Handle, buffer *InputRecord, + length uint32, numberOfEventsRead *uint32) error { + r, _, e := syscall.Syscall6(procReadConsoleInputW.Addr(), 4, + uintptr(consoleInput), uintptr(unsafe.Pointer(buffer)), uintptr(length), + uintptr(unsafe.Pointer(numberOfEventsRead)), 0, 0) + if r == 0 { + return error(e) + } + + return nil +} + +// ReadNConsoleInputs is a wrapper around ReadConsoleInput (see +// https://docs.microsoft.com/en-us/windows/console/readconsoleinput) that +// automates the event buffer allocation in oder to provide io.Reader-like +// sematics. maxEvents must be greater than zero. +func ReadNConsoleInputs(console windows.Handle, maxEvents uint32) ([]InputRecord, error) { + if maxEvents == 0 { + return nil, fmt.Errorf("maxEvents cannot be zero") + } + + var inputRecords = make([]InputRecord, maxEvents) + n, err := ReadConsoleInput(console, inputRecords) + + return inputRecords[:n], err +} + +// ReadConsoleInput provides an ideomatic interface to the Windows console API +// function ReadConsoleInput (see +// https://docs.microsoft.com/en-us/windows/console/readconsoleinput). The size +// of inputRecords must be greater than zero. +func ReadConsoleInput(console windows.Handle, inputRecords []InputRecord) (uint32, error) { + if len(inputRecords) == 0 { + return 0, fmt.Errorf("size of input record buffer cannot be zero") + } + + var read uint32 + err := WinReadConsoleInput(console, &inputRecords[0], uint32(len(inputRecords)), &read) + + return read, err +} + +// WinPeekConsoleInput is a thin wrapper around the Windows console API function +// PeekConsoleInput (see +// https://docs.microsoft.com/en-us/windows/console/peekconsoleinput). In most +// cases it is more practical to either use PeekConsoleInput or +// PeekNConsoleInputs. +func WinPeekConsoleInput(consoleInput windows.Handle, buffer *InputRecord, + length uint32, numberOfEventsRead *uint32) error { + r, _, e := syscall.Syscall6(procPeekConsoleInputW.Addr(), 4, + uintptr(consoleInput), uintptr(unsafe.Pointer(buffer)), uintptr(length), + uintptr(unsafe.Pointer(numberOfEventsRead)), 0, 0) + if r == 0 { + return error(e) + } + + return nil + +} + +// PeekNConsoleInputs is a wrapper around PeekConsoleInput (see +// https://docs.microsoft.com/en-us/windows/console/peekconsoleinput) that +// automates the event buffer allocation in oder to provide io.Reader-like +// sematics. maxEvents must be greater than zero. +func PeekNConsoleInputs(console windows.Handle, maxEvents uint32) ([]InputRecord, error) { + if maxEvents == 0 { + return nil, fmt.Errorf("maxEvents cannot be zero") + } + + var inputRecords = make([]InputRecord, maxEvents) + n, err := PeekConsoleInput(console, inputRecords) + + return inputRecords[:n], err +} + +// PeekConsoleInput provides an ideomatic interface to the Windows console API +// function PeekConsoleInput (see +// https://docs.microsoft.com/en-us/windows/console/peekconsoleinput). The size +// of inputRecords must be greater than zero. +func PeekConsoleInput(console windows.Handle, inputRecords []InputRecord) (uint32, error) { + if len(inputRecords) == 0 { + return 0, fmt.Errorf("size of input record buffer cannot be zero") + } + + var read uint32 + + err := WinPeekConsoleInput(console, &inputRecords[0], uint32(len(inputRecords)), &read) + + return read, err +} + +// WinGetNumberOfConsoleInputEvents provides an ideomatic interface to the +// Windows console API function GetNumberOfConsoleInputEvents (see +// https://docs.microsoft.com/en-us/windows/console/getnumberofconsoleinputevents). +func WinGetNumberOfConsoleInputEvents(consoleInput windows.Handle, numberOfEvents *uint32) error { + r, _, e := syscall.Syscall6(procGetNumberOfConsoleInputEvents.Addr(), 2, + uintptr(consoleInput), uintptr(unsafe.Pointer(numberOfEvents)), 0, + 0, 0, 0) + if r == 0 { + return error(e) + } + + return nil +} + +// GetNumberOfConsoleInputEvents provides an ideomatic interface to the Windows +// console API function GetNumberOfConsoleInputEvents (see +// https://docs.microsoft.com/en-us/windows/console/getnumberofconsoleinputevents). +func GetNumberOfConsoleInputEvents(console windows.Handle) (uint32, error) { + var nEvents uint32 + err := WinGetNumberOfConsoleInputEvents(console, &nEvents) + + return nEvents, err +} + +func FlushConsoleInputBuffer(consoleInput windows.Handle) error { + r, _, e := syscall.Syscall(procFlushConsoleInputBuffer.Addr(), 1, uintptr(consoleInput), 0, 0) + if r == 0 { + return error(e) + } + + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/records.go b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/records.go new file mode 100644 index 0000000..cccf7fb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/erikgeiser/coninput/records.go @@ -0,0 +1,486 @@ +package coninput + +import ( + "encoding/binary" + "fmt" + "strconv" + "strings" +) + +const ( + maxEventSize = 16 + wordPaddingBytes = 2 +) + +// EventType denots the type of an event +type EventType uint16 + +// EventUnion is the union data type that contains the data for any event. +type EventUnion [maxEventSize]byte + +// InputRecord corresponds to the INPUT_RECORD structure from the Windows +// console API (see +// https://docs.microsoft.com/en-us/windows/console/input-record-str). +type InputRecord struct { + // EventType specifies the type of event that helt in Event. + EventType EventType + + // Padding of the 16-bit EventType to a whole 32-bit dword. + _ [wordPaddingBytes]byte + + // Event holds the actual event data. Use Unrap to access it as its + // respective event type. + Event EventUnion +} + +// String implements fmt.Stringer for InputRecord. +func (ir InputRecord) String() string { + return ir.Unwrap().String() +} + +// Unwrap parses the event data into an EventRecord of the respective event +// type. The data in the returned EventRecord does not contain any references to +// the passed InputRecord. +func (ir InputRecord) Unwrap() EventRecord { + switch ir.EventType { + case FocusEventType: + return FocusEventRecord{SetFocus: ir.Event[0] > 0} + case KeyEventType: + return KeyEventRecord{ + KeyDown: binary.LittleEndian.Uint32(ir.Event[0:4]) > 0, + RepeatCount: binary.LittleEndian.Uint16(ir.Event[4:6]), + VirtualKeyCode: VirtualKeyCode(binary.LittleEndian.Uint16(ir.Event[6:8])), + VirtualScanCode: VirtualKeyCode(binary.LittleEndian.Uint16(ir.Event[8:10])), + Char: rune(binary.LittleEndian.Uint16(ir.Event[10:12])), + ControlKeyState: ControlKeyState(binary.LittleEndian.Uint32(ir.Event[12:16])), + } + case MouseEventType: + m := MouseEventRecord{ + MousePositon: Coord{ + X: binary.LittleEndian.Uint16(ir.Event[0:2]), + Y: binary.LittleEndian.Uint16(ir.Event[2:4]), + }, + ButtonState: ButtonState(binary.LittleEndian.Uint32(ir.Event[4:8])), + ControlKeyState: ControlKeyState(binary.LittleEndian.Uint32(ir.Event[8:12])), + EventFlags: EventFlags(binary.LittleEndian.Uint32(ir.Event[12:16])), + } + + if (m.EventFlags&MOUSE_WHEELED > 0) || (m.EventFlags&MOUSE_HWHEELED > 0) { + if int16(highWord(uint32(m.ButtonState))) > 0 { + m.WheelDirection = 1 + } else { + m.WheelDirection = -1 + } + } + + return m + case WindowBufferSizeEventType: + return WindowBufferSizeEventRecord{ + Size: Coord{ + X: binary.LittleEndian.Uint16(ir.Event[0:2]), + Y: binary.LittleEndian.Uint16(ir.Event[2:4]), + }, + } + case MenuEventType: + return MenuEventRecord{ + CommandID: binary.LittleEndian.Uint32(ir.Event[0:4]), + } + default: + return &UnknownEvent{InputRecord: ir} + } +} + +// EventRecord represents one of the following event types: +// TypeFocusEventRecord, TypeKeyEventRecord, TypeMouseEventRecord, +// TypeWindowBufferSizeEvent, TypeMenuEventRecord and UnknownEvent. +type EventRecord interface { + Type() string + fmt.Stringer +} + +// FocusEventType is the event type for a FocusEventRecord (see +// https://docs.microsoft.com/en-us/windows/console/input-record-str). +const FocusEventType EventType = 0x0010 + +// FocusEventRecord represent the FOCUS_EVENT_RECORD structure from the Windows +// console API (see +// https://docs.microsoft.com/en-us/windows/console/focus-event-record-str). +// These events are used internally by the Windows console API and should be +// ignored. +type FocusEventRecord struct { + // SetFocus is reserved and should not be used. + SetFocus bool +} + +// Ensure that FocusEventRecord satisfies EventRecord interface. +var _ EventRecord = FocusEventRecord{} + +// Type ensures that FocusEventRecord satisfies EventRecord interface. +func (e FocusEventRecord) Type() string { return "FocusEvent" } + +// String ensures that FocusEventRecord satisfies EventRecord and fmt.Stringer +// interfaces. +func (e FocusEventRecord) String() string { return fmt.Sprintf("%s[%v]", e.Type(), e.SetFocus) } + +// KeyEventType is the event type for a KeyEventRecord (see +// https://docs.microsoft.com/en-us/windows/console/input-record-str). +const KeyEventType EventType = 0x0001 + +// KeyEventRecord represent the KEY_EVENT_RECORD structure from the Windows +// console API (see +// https://docs.microsoft.com/en-us/windows/console/key-event-record-str). +type KeyEventRecord struct { + // KeyDown specified whether the key is pressed or released. + KeyDown bool + + // RepeatCount indicates that a key is being held down. For example, when a + // key is held down, five events with RepeatCount equal to 1 may be + // generated, one event with RepeatCount equal to 5, or multiple events + // with RepeatCount greater than or equal to 1. + RepeatCount uint16 + + // VirtualKeyCode identifies the given key in a device-independent manner + // (see + // https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes). + VirtualKeyCode VirtualKeyCode + + // VirtualScanCode represents the device-dependent value generated by the + // keyboard hardware. + VirtualScanCode VirtualKeyCode + + // Char is the character that corresponds to the pressed key. Char can be + // zero for some keys. + Char rune + + //ControlKeyState holds the state of the control keys. + ControlKeyState ControlKeyState +} + +// Ensure that KeyEventRecord satisfies EventRecord interface. +var _ EventRecord = KeyEventRecord{} + +// Type ensures that KeyEventRecord satisfies EventRecord interface. +func (e KeyEventRecord) Type() string { return "KeyEvent" } + +// String ensures that KeyEventRecord satisfies EventRecord and fmt.Stringer +// interfaces. +func (e KeyEventRecord) String() string { + infos := []string{} + + repeat := "" + if e.RepeatCount > 1 { + repeat = "x" + strconv.Itoa(int(e.RepeatCount)) + } + + infos = append(infos, fmt.Sprintf("%q%s", e.Char, repeat)) + + direction := "up" + if e.KeyDown { + direction = "down" + } + + infos = append(infos, direction) + + if e.ControlKeyState != NO_CONTROL_KEY { + infos = append(infos, e.ControlKeyState.String()) + } + + infos = append(infos, fmt.Sprintf("KeyCode: %d", e.VirtualKeyCode)) + infos = append(infos, fmt.Sprintf("ScanCode: %d", e.VirtualScanCode)) + + return fmt.Sprintf("%s[%s]", e.Type(), strings.Join(infos, ", ")) +} + +// MenuEventType is the event type for a MenuEventRecord (see +// https://docs.microsoft.com/en-us/windows/console/input-record-str). +const MenuEventType EventType = 0x0008 + +// MenuEventRecord represent the MENU_EVENT_RECORD structure from the Windows +// console API (see +// https://docs.microsoft.com/en-us/windows/console/menu-event-record-str). +// These events are deprecated by the Windows console API and should be ignored. +type MenuEventRecord struct { + CommandID uint32 +} + +// Ensure that MenuEventRecord satisfies EventRecord interface. +var _ EventRecord = MenuEventRecord{} + +// Type ensures that MenuEventRecord satisfies EventRecord interface. +func (e MenuEventRecord) Type() string { return "MenuEvent" } + +// String ensures that MenuEventRecord satisfies EventRecord and fmt.Stringer +// interfaces. +func (e MenuEventRecord) String() string { return fmt.Sprintf("MenuEvent[%d]", e.CommandID) } + +// MouseEventType is the event type for a MouseEventRecord (see +// https://docs.microsoft.com/en-us/windows/console/input-record-str). +const MouseEventType EventType = 0x0002 + +// MouseEventRecord represent the MOUSE_EVENT_RECORD structure from the Windows +// console API (see +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str). +type MouseEventRecord struct { + // MousePosition contains the location of the cursor, in terms of the + // console screen buffer's character-cell coordinates. + MousePositon Coord + + // ButtonState holds the status of the mouse buttons. + ButtonState ButtonState + + // ControlKeyState holds the state of the control keys. + ControlKeyState ControlKeyState + + // EventFlags specify tge type of mouse event. + EventFlags EventFlags + + // WheelDirection specified the direction in which the mouse wheel is + // spinning when EventFlags contains MOUSE_HWHEELED or MOUSE_WHEELED. When + // the event flags specify MOUSE_WHEELED it is 1 if the wheel rotated + // forward (away from the user) or -1 when it rotates backwards. When + // MOUSE_HWHEELED is specified it is 1 when the wheel rotates right and -1 + // when it rotates left. When the EventFlags do not indicate a mouse wheel + // event it is 0. + WheelDirection int +} + +// Ensure that MouseEventRecord satisfies EventRecord interface. +var _ EventRecord = MouseEventRecord{} + +func (e MouseEventRecord) WheelDirectionName() string { + if e.EventFlags&MOUSE_WHEELED > 0 { + if e.WheelDirection > 0 { + return "Forward" + } + + return "Backward" + } else if e.EventFlags&MOUSE_HWHEELED > 0 { + if e.WheelDirection > 0 { + return "Right" + } + + return "Left" + } + + return "" +} + +// Type ensures that MouseEventRecord satisfies EventRecord interface. +func (e MouseEventRecord) Type() string { return "MouseEvent" } + +// String ensures that MouseEventRecord satisfies EventRecord and fmt.Stringer +// interfaces. +func (e MouseEventRecord) String() string { + infos := []string{e.MousePositon.String()} + + if e.ButtonState&0xFF != 0 { + infos = append(infos, e.ButtonState.String()) + } + + eventDescription := e.EventFlags.String() + + wheelDirection := e.WheelDirectionName() + if wheelDirection != "" { + eventDescription += "(" + wheelDirection + ")" + } + + infos = append(infos, eventDescription) + + if e.ControlKeyState != NO_CONTROL_KEY { + infos = append(infos, e.ControlKeyState.String()) + } + + return fmt.Sprintf("%s[%s]", e.Type(), strings.Join(infos, ", ")) +} + +// WindowBufferSizeEventType is the event type for a WindowBufferSizeEventRecord +// (see https://docs.microsoft.com/en-us/windows/console/input-record-str). +const WindowBufferSizeEventType EventType = 0x0004 + +// WindowBufferSizeEventRecord represent the WINDOW_BUFFER_SIZE_RECORD structure +// from the Windows console API (see +// https://docs.microsoft.com/en-us/windows/console/window-buffer-size-record-str). +type WindowBufferSizeEventRecord struct { + // Size contains the size of the console screen buffer, in character cell columns and rows. + Size Coord +} + +// Ensure that WindowBufferSizeEventRecord satisfies EventRecord interface. +var _ EventRecord = WindowBufferSizeEventRecord{} + +// Type ensures that WindowBufferSizeEventRecord satisfies EventRecord interface. +func (e WindowBufferSizeEventRecord) Type() string { return "WindowBufferSizeEvent" } + +// String ensures that WindowBufferSizeEventRecord satisfies EventRecord and fmt.Stringer +// interfaces. +func (e WindowBufferSizeEventRecord) String() string { + return fmt.Sprintf("WindowBufferSizeEvent[%s]", e.Size) +} + +// UnknownEvent is generated when the event type does not match one of the +// following types: TypeFocusEventRecord, TypeKeyEventRecord, +// TypeMouseEventRecord, TypeWindowBufferSizeEvent, TypeMenuEventRecord and +// UnknownEvent. +type UnknownEvent struct { + InputRecord +} + +// Ensure that UnknownEvent satisfies EventRecord interface. +var _ EventRecord = UnknownEvent{} + +// Type ensures that UnknownEvent satisfies EventRecord interface. +func (e UnknownEvent) Type() string { return "UnknownEvent" } + +// String ensures that UnknownEvent satisfies EventRecord and fmt.Stringer +// interfaces. +func (e UnknownEvent) String() string { + return fmt.Sprintf("%s[Type: %d, Data: %v]", e.Type(), e.InputRecord.EventType, e.InputRecord.Event[:]) +} + +// Coord represent the COORD structure from the Windows +// console API (see https://docs.microsoft.com/en-us/windows/console/coord-str). +type Coord struct { + // X is the horizontal coordinate or column value. The units depend on the function call. + X uint16 + // Y is the vertical coordinate or row value. The units depend on the function call. + Y uint16 +} + +// String ensures that Coord satisfies the fmt.Stringer interface. +func (c Coord) String() string { + return fmt.Sprintf("(%d, %d)", c.X, c.Y) +} + +// ButtonState holds the state of the mouse buttons (see +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str). +type ButtonState uint32 + +func (bs ButtonState) Contains(state ButtonState) bool { + return bs&state > 0 +} + +// String ensures that ButtonState satisfies the fmt.Stringer interface. +func (bs ButtonState) String() string { + switch { + case bs&FROM_LEFT_1ST_BUTTON_PRESSED > 0: + return "Left" + case bs&FROM_LEFT_2ND_BUTTON_PRESSED > 0: + return "2" + case bs&FROM_LEFT_3RD_BUTTON_PRESSED > 0: + return "3" + case bs&FROM_LEFT_4TH_BUTTON_PRESSED > 0: + return "4" + case bs&RIGHTMOST_BUTTON_PRESSED > 0: + return "Right" + case bs&0xFF == 0: + return "No Button" + default: + return fmt.Sprintf("Unknown(%d)", bs) + } +} + +func (bs ButtonState) IsReleased() bool { + return bs&0xff > 0 +} + +// Valid values for ButtonState. +const ( + FROM_LEFT_1ST_BUTTON_PRESSED ButtonState = 0x0001 + RIGHTMOST_BUTTON_PRESSED ButtonState = 0x0002 + FROM_LEFT_2ND_BUTTON_PRESSED ButtonState = 0x0004 + FROM_LEFT_3RD_BUTTON_PRESSED ButtonState = 0x0008 + FROM_LEFT_4TH_BUTTON_PRESSED ButtonState = 0x0010 +) + +// ControlKeyState holds the state of the control keys for key and mouse events +// (see https://docs.microsoft.com/en-us/windows/console/key-event-record-str +// and https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str). +type ControlKeyState uint32 + +func (cks ControlKeyState) Contains(state ControlKeyState) bool { + return cks&state > 0 +} + +// Valid values for ControlKeyState. +const ( + CAPSLOCK_ON ControlKeyState = 0x0080 + ENHANCED_KEY ControlKeyState = 0x0100 + LEFT_ALT_PRESSED ControlKeyState = 0x0002 + LEFT_CTRL_PRESSED ControlKeyState = 0x0008 + NUMLOCK_ON ControlKeyState = 0x0020 + RIGHT_ALT_PRESSED ControlKeyState = 0x0001 + RIGHT_CTRL_PRESSED ControlKeyState = 0x0004 + SCROLLLOCK_ON ControlKeyState = 0x0040 + SHIFT_PRESSED ControlKeyState = 0x0010 + NO_CONTROL_KEY ControlKeyState = 0x0000 +) + +// String ensures that ControlKeyState satisfies the fmt.Stringer interface. +func (cks ControlKeyState) String() string { + controlKeys := []string{} + + switch { + case cks&CAPSLOCK_ON > 0: + controlKeys = append(controlKeys, "CapsLock") + case cks&ENHANCED_KEY > 0: + controlKeys = append(controlKeys, "Enhanced") + case cks&LEFT_ALT_PRESSED > 0: + controlKeys = append(controlKeys, "Alt") + case cks&LEFT_CTRL_PRESSED > 0: + controlKeys = append(controlKeys, "CTRL") + case cks&NUMLOCK_ON > 0: + controlKeys = append(controlKeys, "NumLock") + case cks&RIGHT_ALT_PRESSED > 0: + controlKeys = append(controlKeys, "RightAlt") + case cks&RIGHT_CTRL_PRESSED > 0: + controlKeys = append(controlKeys, "RightCTRL") + case cks&SCROLLLOCK_ON > 0: + controlKeys = append(controlKeys, "ScrollLock") + case cks&SHIFT_PRESSED > 0: + controlKeys = append(controlKeys, "Shift") + case cks == NO_CONTROL_KEY: + default: + return fmt.Sprintf("Unknown(%d)", cks) + } + + return strings.Join(controlKeys, ",") +} + +// EventFlags specifies the type of a mouse event (see +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str). +type EventFlags uint32 + +// String ensures that EventFlags satisfies the fmt.Stringer interface. +func (ef EventFlags) String() string { + switch { + case ef&DOUBLE_CLICK > 0: + return "DoubleClick" + case ef&MOUSE_WHEELED > 0: + return "Wheeled" + case ef&MOUSE_MOVED > 0: + return "Moved" + case ef&MOUSE_HWHEELED > 0: + return "HWheeld" + case ef == CLICK: + return "Click" + default: + return fmt.Sprintf("Unknown(%d)", ef) + } +} + +func (ef EventFlags) Contains(flag EventFlags) bool { + return ef&flag > 0 +} + +// Valid values for EventFlags. +const ( + CLICK EventFlags = 0x0000 + MOUSE_MOVED EventFlags = 0x0001 + DOUBLE_CLICK EventFlags = 0x0002 + MOUSE_WHEELED EventFlags = 0x0004 + MOUSE_HWHEELED EventFlags = 0x0008 +) + +func highWord(data uint32) uint16 { + return uint16((data & 0xFFFF0000) >> 16) +} diff --git a/src/vcom-0.2.5/vendor/github.com/kr/fs/LICENSE b/src/vcom-0.2.5/vendor/github.com/kr/fs/LICENSE new file mode 100644 index 0000000..7448756 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/kr/fs/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2012 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/vcom-0.2.5/vendor/github.com/kr/fs/Readme b/src/vcom-0.2.5/vendor/github.com/kr/fs/Readme new file mode 100644 index 0000000..c95e13f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/kr/fs/Readme @@ -0,0 +1,3 @@ +Filesystem Package + +http://godoc.org/github.com/kr/fs diff --git a/src/vcom-0.2.5/vendor/github.com/kr/fs/filesystem.go b/src/vcom-0.2.5/vendor/github.com/kr/fs/filesystem.go new file mode 100644 index 0000000..f1c4805 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/kr/fs/filesystem.go @@ -0,0 +1,36 @@ +package fs + +import ( + "io/ioutil" + "os" + "path/filepath" +) + +// FileSystem defines the methods of an abstract filesystem. +type FileSystem interface { + + // ReadDir reads the directory named by dirname and returns a + // list of directory entries. + ReadDir(dirname string) ([]os.FileInfo, error) + + // Lstat returns a FileInfo describing the named file. If the file is a + // symbolic link, the returned FileInfo describes the symbolic link. Lstat + // makes no attempt to follow the link. + Lstat(name string) (os.FileInfo, error) + + // Join joins any number of path elements into a single path, adding a + // separator if necessary. The result is Cleaned; in particular, all + // empty strings are ignored. + // + // The separator is FileSystem specific. + Join(elem ...string) string +} + +// fs represents a FileSystem provided by the os package. +type fs struct{} + +func (f *fs) ReadDir(dirname string) ([]os.FileInfo, error) { return ioutil.ReadDir(dirname) } + +func (f *fs) Lstat(name string) (os.FileInfo, error) { return os.Lstat(name) } + +func (f *fs) Join(elem ...string) string { return filepath.Join(elem...) } diff --git a/src/vcom-0.2.5/vendor/github.com/kr/fs/walk.go b/src/vcom-0.2.5/vendor/github.com/kr/fs/walk.go new file mode 100644 index 0000000..6ffa1e0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/kr/fs/walk.go @@ -0,0 +1,95 @@ +// Package fs provides filesystem-related functions. +package fs + +import ( + "os" +) + +// Walker provides a convenient interface for iterating over the +// descendants of a filesystem path. +// Successive calls to the Step method will step through each +// file or directory in the tree, including the root. The files +// are walked in lexical order, which makes the output deterministic +// but means that for very large directories Walker can be inefficient. +// Walker does not follow symbolic links. +type Walker struct { + fs FileSystem + cur item + stack []item + descend bool +} + +type item struct { + path string + info os.FileInfo + err error +} + +// Walk returns a new Walker rooted at root. +func Walk(root string) *Walker { + return WalkFS(root, new(fs)) +} + +// WalkFS returns a new Walker rooted at root on the FileSystem fs. +func WalkFS(root string, fs FileSystem) *Walker { + info, err := fs.Lstat(root) + return &Walker{ + fs: fs, + stack: []item{{root, info, err}}, + } +} + +// Step advances the Walker to the next file or directory, +// which will then be available through the Path, Stat, +// and Err methods. +// It returns false when the walk stops at the end of the tree. +func (w *Walker) Step() bool { + if w.descend && w.cur.err == nil && w.cur.info.IsDir() { + list, err := w.fs.ReadDir(w.cur.path) + if err != nil { + w.cur.err = err + w.stack = append(w.stack, w.cur) + } else { + for i := len(list) - 1; i >= 0; i-- { + path := w.fs.Join(w.cur.path, list[i].Name()) + w.stack = append(w.stack, item{path, list[i], nil}) + } + } + } + + if len(w.stack) == 0 { + return false + } + i := len(w.stack) - 1 + w.cur = w.stack[i] + w.stack = w.stack[:i] + w.descend = true + return true +} + +// Path returns the path to the most recent file or directory +// visited by a call to Step. It contains the argument to Walk +// as a prefix; that is, if Walk is called with "dir", which is +// a directory containing the file "a", Path will return "dir/a". +func (w *Walker) Path() string { + return w.cur.path +} + +// Stat returns info for the most recent file or directory +// visited by a call to Step. +func (w *Walker) Stat() os.FileInfo { + return w.cur.info +} + +// Err returns the error, if any, for the most recent attempt +// by Step to visit a file or directory. If a directory has +// an error, w will not descend into that directory. +func (w *Walker) Err() error { + return w.cur.err +} + +// SkipDir causes the currently visited directory to be skipped. +// If w is not on a directory, SkipDir has no effect. +func (w *Walker) SkipDir() { + w.descend = false +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/.gitignore b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/.gitignore new file mode 100644 index 0000000..0aa2c92 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/.gitignore @@ -0,0 +1,101 @@ +# Created by https://www.toptal.com/developers/gitignore/api/code,go,linux,macos,windows +# Edit at https://www.toptal.com/developers/gitignore?templates=code,go,linux,macos,windows + +### Code ### +.vscode/* +!.vscode/tasks.json +!.vscode/launch.json +*.code-workspace + +### Go ### +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +### Go Patch ### +/vendor/ +/Godeps/ + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/code,go,linux,macos,windows diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/CHANGELOG.md b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/CHANGELOG.md new file mode 100644 index 0000000..84f9c7b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog +All notable changes to this project will be documented in this file. + +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +The format of this file is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +but only releases after v1.0.3 properly adhere to it. + + +## [1.2.0] - 2021-01-27 +### Added +- HSLuv and HPLuv color spaces (#41, #51) +- CIE LCh(uv) color space, called `LuvLCh` in code (#51) +- JSON and envconfig serialization support for `HexColor` (#42) +- `DistanceLinearRGB` (#53) + +### Fixed +- RGB to/from XYZ conversion is more accurate (#51) +- A bug in `XYZToLuvWhiteRef` that only applied to very small values was fixed (#51) +- `BlendHCL` output is clamped so that it's not invalid (#46) +- Properly documented `DistanceCIE76` (#40) +- Some small godoc fixes + + +## [1.0.3] - 2019-11-11 +- Remove SQLMock dependency + + +## [1.0.2] - 2019-04-07 +- Fixes SQLMock dependency + + +## [1.0.1] - 2019-03-24 +- Adds support for Go Modules + + +## [1.0.0] - 2018-05-26 +- API Breaking change in `MakeColor`: instead of `panic`ing when alpha is zero, it now returns a secondary, boolean return value indicating success. See [the color.Color interface](#the-colorcolor-interface) section and [this FAQ entry](#q-why-would-makecolor-ever-fail) for details. + + +## [0.9.0] - 2018-05-26 +- Initial version number after having ignored versioning for a long time :) diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/LICENSE b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/LICENSE new file mode 100644 index 0000000..4e402a0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2013 Lucas Beyer + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/README.md b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/README.md new file mode 100644 index 0000000..8b9bd49 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/README.md @@ -0,0 +1,482 @@ +go-colorful +=========== + +[![go reportcard](https://goreportcard.com/badge/github.com/lucasb-eyer/go-colorful)](https://goreportcard.com/report/github.com/lucasb-eyer/go-colorful) + +A library for playing with colors in Go. Supports Go 1.13 onwards. + +Why? +==== +I love games. I make games. I love detail and I get lost in detail. +One such detail popped up during the development of [Memory Which Does Not Suck](https://github.com/lucasb-eyer/mwdns/), +when we wanted the server to assign the players random colors. Sometimes +two players got very similar colors, which bugged me. The very same evening, +[I want hue](http://tools.medialab.sciences-po.fr/iwanthue/) was the top post +on HackerNews' frontpage and showed me how to Do It Right™. Last but not +least, there was no library for handling color spaces available in go. Colorful +does just that and implements Go's `color.Color` interface. + +What? +===== +Go-Colorful stores colors in RGB and provides methods from converting these to various color-spaces. Currently supported colorspaces are: + +- **RGB:** All three of Red, Green and Blue in [0..1]. +- **HSL:** Hue in [0..360], Saturation and Luminance in [0..1]. For legacy reasons; please forget that it exists. +- **HSV:** Hue in [0..360], Saturation and Value in [0..1]. You're better off using HCL, see below. +- **Hex RGB:** The "internet" color format, as in #FF00FF. +- **Linear RGB:** See [gamma correct rendering](http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/). +- **CIE-XYZ:** CIE's standard color space, almost in [0..1]. +- **CIE-xyY:** encodes chromacity in x and y and luminance in Y, all in [0..1] +- **CIE-L\*a\*b\*:** A *perceptually uniform* color space, i.e. distances are meaningful. L\* in [0..1] and a\*, b\* almost in [-1..1]. +- **CIE-L\*u\*v\*:** Very similar to CIE-L\*a\*b\*, there is [no consensus](http://en.wikipedia.org/wiki/CIELUV#Historical_background) on which one is "better". +- **CIE-L\*C\*h° (HCL):** This is generally the [most useful](http://vis4.net/blog/posts/avoid-equidistant-hsv-colors/) one; CIE-L\*a\*b\* space in polar coordinates, i.e. a *better* HSV. H° is in [0..360], C\* almost in [-1..1] and L\* as in CIE-L\*a\*b\*. +- **CIE LCh(uv):** Called `LuvLCh` in code, this is a cylindrical transformation of the CIE-L\*u\*v\* color space. Like HCL above: H° is in [0..360], C\* almost in [-1..1] and L\* as in CIE-L\*u\*v\*. +- **HSLuv:** The better alternative to HSL, see [here](https://www.hsluv.org/) and [here](https://www.kuon.ch/post/2020-03-08-hsluv/). Hue in [0..360], Saturation and Luminance in [0..1]. +- **HPLuv:** A variant of HSLuv. The color space is smoother, but only pastel colors can be included. Because the valid colors are limited, it's easy to get invalid Saturation values way above 1.0, indicating the color can't be represented in HPLuv beccause it's not pastel. + +For the colorspaces where it makes sense (XYZ, Lab, Luv, HCl), the +[D65](http://en.wikipedia.org/wiki/Illuminant_D65) is used as reference white +by default but methods for using your own reference white are provided. + +A coordinate being *almost in* a range means that generally it is, but for very +bright colors and depending on the reference white, it might overflow this +range slightly. For example, C\* of #0000ff is 1.338. + +Unit-tests are provided. + +Nice, but what's it useful for? +------------------------------- + +- Converting color spaces. Some people like to do that. +- Blending (interpolating) between colors in a "natural" look by using the right colorspace. +- Generating random colors under some constraints (e.g. colors of the same shade, or shades of one color.) +- Generating gorgeous random palettes with distinct colors of a same temperature. + +What not (yet)? +=============== +There are a few features which are currently missing and might be useful. +I just haven't implemented them yet because I didn't have the need for it. +Pull requests welcome. + +- Sorting colors (potentially using above mentioned distances) + +So which colorspace should I use? +================================= +It depends on what you want to do. I think the folks from *I want hue* are +on-spot when they say that RGB fits to how *screens produce* color, CIE L\*a\*b\* +fits how *humans perceive* color and HCL fits how *humans think* colors. + +Whenever you'd use HSV, rather go for CIE-L\*C\*h°. for fixed lightness L\* and +chroma C\* values, the hue angle h° rotates through colors of the same +perceived brightness and intensity. + +How? +==== + +### Installing +Installing the library is as easy as + +```bash +$ go get github.com/lucasb-eyer/go-colorful +``` + +The package can then be used through an + +```go +import "github.com/lucasb-eyer/go-colorful" +``` + +### Basic usage + +Create a beautiful blue color using different source space: + +```go +// Any of the following should be the same +c := colorful.Color{0.313725, 0.478431, 0.721569} +c, err := colorful.Hex("#517AB8") +if err != nil { + log.Fatal(err) +} +c = colorful.Hsv(216.0, 0.56, 0.722) +c = colorful.Xyz(0.189165, 0.190837, 0.480248) +c = colorful.Xyy(0.219895, 0.221839, 0.190837) +c = colorful.Lab(0.507850, 0.040585,-0.370945) +c = colorful.Luv(0.507849,-0.194172,-0.567924) +c = colorful.Hcl(276.2440, 0.373160, 0.507849) +fmt.Printf("RGB values: %v, %v, %v", c.R, c.G, c.B) +``` + +And then converting this color back into various color spaces: + +```go +hex := c.Hex() +h, s, v := c.Hsv() +x, y, z := c.Xyz() +x, y, Y := c.Xyy() +l, a, b := c.Lab() +l, u, v := c.Luv() +h, c, l := c.Hcl() +``` + +Note that, because of Go's unfortunate choice of requiring an initial uppercase, +the name of the functions relating to the xyY space are just off. If you have +any good suggestion, please open an issue. (I don't consider XyY good.) + +### The `color.Color` interface +Because a `colorful.Color` implements Go's `color.Color` interface (found in the +`image/color` package), it can be used anywhere that expects a `color.Color`. + +Furthermore, you can convert anything that implements the `color.Color` interface +into a `colorful.Color` using the `MakeColor` function: + +```go +c, ok := colorful.MakeColor(color.Gray16{12345}) +``` + +**Caveat:** Be aware that this latter conversion (using `MakeColor`) hits a +corner-case when alpha is exactly zero. Because `color.Color` uses pre-multiplied +alpha colors, this means the RGB values are lost (set to 0) and it's impossible +to recover them. In such a case `MakeColor` will return `false` as its second value. + +### Comparing colors +In the RGB color space, the Euclidian distance between colors *doesn't* correspond +to visual/perceptual distance. This means that two pairs of colors which have the +same distance in RGB space can look much further apart. This is fixed by the +CIE-L\*a\*b\*, CIE-L\*u\*v\* and CIE-L\*C\*h° color spaces. +Thus you should only compare colors in any of these space. +(Note that the distance in CIE-L\*a\*b\* and CIE-L\*C\*h° are the same, since it's the same space but in cylindrical coordinates) + +![Color distance comparison](doc/colordist/colordist.png) + +The two colors shown on the top look much more different than the two shown on +the bottom. Still, in RGB space, their distance is the same. +Here is a little example program which shows the distances between the top two +and bottom two colors in RGB, CIE-L\*a\*b\* and CIE-L\*u\*v\* space. You can find it in `doc/colordist/colordist.go`. + +```go +package main + +import "fmt" +import "github.com/lucasb-eyer/go-colorful" + +func main() { + c1a := colorful.Color{150.0 / 255.0, 10.0 / 255.0, 150.0 / 255.0} + c1b := colorful.Color{53.0 / 255.0, 10.0 / 255.0, 150.0 / 255.0} + c2a := colorful.Color{10.0 / 255.0, 150.0 / 255.0, 50.0 / 255.0} + c2b := colorful.Color{99.9 / 255.0, 150.0 / 255.0, 10.0 / 255.0} + + fmt.Printf("DistanceRgb: c1: %v\tand c2: %v\n", c1a.DistanceRgb(c1b), c2a.DistanceRgb(c2b)) + fmt.Printf("DistanceLab: c1: %v\tand c2: %v\n", c1a.DistanceLab(c1b), c2a.DistanceLab(c2b)) + fmt.Printf("DistanceLuv: c1: %v\tand c2: %v\n", c1a.DistanceLuv(c1b), c2a.DistanceLuv(c2b)) + fmt.Printf("DistanceCIE76: c1: %v\tand c2: %v\n", c1a.DistanceCIE76(c1b), c2a.DistanceCIE76(c2b)) + fmt.Printf("DistanceCIE94: c1: %v\tand c2: %v\n", c1a.DistanceCIE94(c1b), c2a.DistanceCIE94(c2b)) + fmt.Printf("DistanceCIEDE2000: c1: %v\tand c2: %v\n", c1a.DistanceCIEDE2000(c1b), c2a.DistanceCIEDE2000(c2b)) +} +``` + +Running the above program shows that you should always prefer any of the CIE distances: + +```bash +$ go run colordist.go +DistanceRgb: c1: 0.3803921568627451 and c2: 0.3858713931171159 +DistanceLab: c1: 0.32048458312798056 and c2: 0.24397151758565272 +DistanceLuv: c1: 0.5134369614199698 and c2: 0.2568692839860636 +DistanceCIE76: c1: 0.32048458312798056 and c2: 0.24397151758565272 +DistanceCIE94: c1: 0.19799168128511324 and c2: 0.12207136371167401 +DistanceCIEDE2000: c1: 0.17274551120971166 and c2: 0.10665210031428465 +``` + +It also shows that `DistanceLab` is more formally known as `DistanceCIE76` and +has been superseded by the slightly more accurate, but much more expensive +`DistanceCIE94` and `DistanceCIEDE2000`. + +Note that `AlmostEqualRgb` is provided mainly for (unit-)testing purposes. Use +it only if you really know what you're doing. It will eat your cat. + +### Blending colors +Blending is highly connected to distance, since it basically "walks through" the +colorspace thus, if the colorspace maps distances well, the walk is "smooth". + +Colorful comes with blending functions in RGB, HSV and any of the LAB spaces. +Of course, you'd rather want to use the blending functions of the LAB spaces since +these spaces map distances well but, just in case, here is an example showing +you how the blendings (`#fdffcc` to `#242a42`) are done in the various spaces: + +![Blending colors in different spaces.](doc/colorblend/colorblend.png) + +What you see is that HSV is really bad: it adds some green, which is not present +in the original colors at all! RGB is much better, but it stays light a little +too long. LUV and LAB both hit the right lightness but LAB has a little more +color. HCL works in the same vein as HSV (both cylindrical interpolations) but +it does it right in that there is no green appearing and the lighthness changes +in a linear manner. + +While this seems all good, you need to know one thing: When interpolating in any +of the CIE color spaces, you might get invalid RGB colors! This is important if +the starting and ending colors are user-input or random. An example of where this +happens is when blending between `#eeef61` and `#1e3140`: + +![Invalid RGB colors may crop up when blending in CIE spaces.](doc/colorblend/invalid.png) + +You can test whether a color is a valid RGB color by calling the `IsValid` method +and indeed, calling IsValid will return false for the redish colors on the bottom. +One way to "fix" this is to get a valid color close to the invalid one by calling +`Clamped`, which always returns a nearby valid color. Doing this, we get the +following result, which is satisfactory: + +![Fixing invalid RGB colors by clamping them to the valid range.](doc/colorblend/clamped.png) + +The following is the code creating the above three images; it can be found in `doc/colorblend/colorblend.go` + +```go +package main + +import "fmt" +import "github.com/lucasb-eyer/go-colorful" +import "image" +import "image/draw" +import "image/png" +import "os" + +func main() { + blocks := 10 + blockw := 40 + img := image.NewRGBA(image.Rect(0,0,blocks*blockw,200)) + + c1, _ := colorful.Hex("#fdffcc") + c2, _ := colorful.Hex("#242a42") + + // Use these colors to get invalid RGB in the gradient. + //c1, _ := colorful.Hex("#EEEF61") + //c2, _ := colorful.Hex("#1E3140") + + for i := 0 ; i < blocks ; i++ { + draw.Draw(img, image.Rect(i*blockw, 0,(i+1)*blockw, 40), &image.Uniform{c1.BlendHsv(c2, float64(i)/float64(blocks-1))}, image.Point{}, draw.Src) + draw.Draw(img, image.Rect(i*blockw, 40,(i+1)*blockw, 80), &image.Uniform{c1.BlendLuv(c2, float64(i)/float64(blocks-1))}, image.Point{}, draw.Src) + draw.Draw(img, image.Rect(i*blockw, 80,(i+1)*blockw,120), &image.Uniform{c1.BlendRgb(c2, float64(i)/float64(blocks-1))}, image.Point{}, draw.Src) + draw.Draw(img, image.Rect(i*blockw,120,(i+1)*blockw,160), &image.Uniform{c1.BlendLab(c2, float64(i)/float64(blocks-1))}, image.Point{}, draw.Src) + draw.Draw(img, image.Rect(i*blockw,160,(i+1)*blockw,200), &image.Uniform{c1.BlendHcl(c2, float64(i)/float64(blocks-1))}, image.Point{}, draw.Src) + + // This can be used to "fix" invalid colors in the gradient. + //draw.Draw(img, image.Rect(i*blockw,160,(i+1)*blockw,200), &image.Uniform{c1.BlendHcl(c2, float64(i)/float64(blocks-1)).Clamped()}, image.Point{}, draw.Src) + } + + toimg, err := os.Create("colorblend.png") + if err != nil { + fmt.Printf("Error: %v", err) + return + } + defer toimg.Close() + + png.Encode(toimg, img) +} +``` + +#### Generating color gradients +A very common reason to blend colors is creating gradients. There is an example +program in [doc/gradientgen.go](doc/gradientgen/gradientgen.go); it doesn't use any API +which hasn't been used in the previous example code, so I won't bother pasting +the code in here. Just look at that gorgeous gradient it generated in HCL space: + +!["Spectral" colorbrewer gradient in HCL space.](doc/gradientgen/gradientgen.png) + +### Getting random colors +It is sometimes necessary to generate random colors. You could simply do this +on your own by generating colors with random values. By restricting the random +values to a range smaller than [0..1] and using a space such as CIE-H\*C\*l° or +HSV, you can generate both random shades of a color or random colors of a +lightness: + +```go +random_blue := colorful.Hcl(180.0+rand.Float64()*50.0, 0.2+rand.Float64()*0.8, 0.3+rand.Float64()*0.7) +random_dark := colorful.Hcl(rand.Float64()*360.0, rand.Float64(), rand.Float64()*0.4) +random_light := colorful.Hcl(rand.Float64()*360.0, rand.Float64(), 0.6+rand.Float64()*0.4) +``` + +Since getting random "warm" and "happy" colors is quite a common task, there +are some helper functions: + +```go +colorful.WarmColor() +colorful.HappyColor() +colorful.FastWarmColor() +colorful.FastHappyColor() +``` + +The ones prefixed by `Fast` are faster but less coherent since they use the HSV +space as opposed to the regular ones which use CIE-L\*C\*h° space. The +following picture shows the warm colors in the top two rows and happy colors +in the bottom two rows. Within these, the first is the regular one and the +second is the fast one. + +![Warm, fast warm, happy and fast happy random colors, respectively.](doc/colorgens/colorgens.png) + +Don't forget to initialize the random seed! You can see the code used for +generating this picture in `doc/colorgens/colorgens.go`. + +### Getting random palettes +As soon as you need to generate more than one random color, you probably want +them to be distinguishible. Playing against an opponent which has almost the +same blue as I do is not fun. This is where random palettes can help. + +These palettes are generated using an algorithm which ensures that all colors +on the palette are as distinguishible as possible. Again, there is a `Fast` +method which works in HSV and is less perceptually uniform and a non-`Fast` +method which works in CIE spaces. For more theory on `SoftPalette`, check out +[I want hue](http://tools.medialab.sciences-po.fr/iwanthue/theory.php). Yet +again, there is a `Happy` and a `Warm` version, which do what you expect, but +now there is an additional `Soft` version, which is more configurable: you can +give a constraint on the color space in order to get colors within a certain *feel*. + +Let's start with the simple methods first, all they take is the amount of +colors to generate, which could, for example, be the player count. They return +an array of `colorful.Color` objects: + +```go +pal1, err1 := colorful.WarmPalette(10) +pal2 := colorful.FastWarmPalette(10) +pal3, err3 := colorful.HappyPalette(10) +pal4 := colorful.FastHappyPalette(10) +pal5, err5 := colorful.SoftPalette(10) +``` + +Note that the non-fast methods *may* fail if you ask for way too many colors. +Let's move on to the advanced one, namely `SoftPaletteEx`. Besides the color +count, this function takes a `SoftPaletteSettings` object as argument. The +interesting part here is its `CheckColor` member, which is a boolean function +taking three floating points as arguments: `l`, `a` and `b`. This function +should return `true` for colors which lie within the region you want and `false` +otherwise. The other members are `Iteration`, which should be within [5..100] +where higher means slower but more exact palette, and `ManySamples` which you +should set to `true` in case your `CheckColor` constraint rejects a large part +of the color space. + +For example, to create a palette of 10 brownish colors, you'd call it like this: + +```go +func isbrowny(l, a, b float64) bool { + h, c, L := colorful.LabToHcl(l, a, b) + return 10.0 < h && h < 50.0 && 0.1 < c && c < 0.5 && L < 0.5 +} +// Since the above function is pretty restrictive, we set ManySamples to true. +brownies := colorful.SoftPaletteEx(10, colorful.SoftPaletteSettings{isbrowny, 50, true}) +``` + +The following picture shows the palettes generated by all of these methods +(sourcecode in `doc/palettegens/palettegens.go`), in the order they were presented, i.e. +from top to bottom: `Warm`, `FastWarm`, `Happy`, `FastHappy`, `Soft`, +`SoftEx(isbrowny)`. All of them contain some randomness, so YMMV. + +![All example palettes](doc/palettegens/palettegens.png) + +Again, the code used for generating the above image is available as [doc/palettegens/palettegens.go](https://github.com/lucasb-eyer/go-colorful/blob/master/doc/palettegens/palettegens.go). + +### Sorting colors +TODO: Sort using dist fn. + +### Using linear RGB for computations +There are two methods for transforming RGB<->Linear RGB: a fast and almost precise one, +and a slow and precise one. + +```go +r, g, b := colorful.Hex("#FF0000").FastLinearRgb() +``` + +TODO: describe some more. + +### Want to use some other reference point? + +```go +c := colorful.LabWhiteRef(0.507850, 0.040585,-0.370945, colorful.D50) +l, a, b := c.LabWhiteRef(colorful.D50) +``` + +### Reading and writing colors from databases + +The type `HexColor` makes it easy to store colors as strings in a database. It +implements the [https://godoc.org/database/sql#Scanner](database/sql.Scanner) +and [database/sql/driver.Value](https://godoc.org/database/sql/driver.Value) +interfaces which provide automatic type conversion. + +Example: + +```go +var hc HexColor +_, err := db.QueryRow("SELECT '#ff0000';").Scan(&hc) +// hc == HexColor{R: 1, G: 0, B: 0}; err == nil +``` + +FAQ +=== + +### Q: I get all f!@#ed up values! Your library sucks! +A: You probably provided values in the wrong range. For example, RGB values are +expected to reside between 0 and 1, *not* between 0 and 255. Normalize your colors. + +### Q: Lab/Luv/HCl seem broken! Your library sucks! +They look like this: + + + +A: You're likely trying to generate and display colors that can't be represented by RGB, +and thus monitors. When you're trying to convert, say, `HCL(190.0, 1.0, 1.0).RGB255()`, +you're asking for RGB values of `(-2105.254 300.680 286.185)`, which clearly don't exist, +and the `RGB255` function just casts these numbers to `uint8`, creating wrap-around and +what looks like a completely broken gradient. What you want to do, is either use more +reasonable values of colors which actually exist in RGB, or just `Clamp()` the resulting +color to its nearest existing one, living with the consequences: +`HCL(190.0, 1.0, 1.0).Clamp().RGB255()`. It will look something like this: + + + +[Here's an issue going in-depth about this](https://github.com/lucasb-eyer/go-colorful/issues/14), +as well as [my answer](https://github.com/lucasb-eyer/go-colorful/issues/14#issuecomment-324205385), +both with code and pretty pictures. Also note that this was somewhat covered above in the +["Blending colors" section](https://github.com/lucasb-eyer/go-colorful#blending-colors). + +### Q: In a tight loop, conversion to Lab/Luv/HCl/... are slooooow! +A: Yes, they are. +This library aims for correctness, readability, and modularity; it wasn't written with speed in mind. +A large part of the slowness comes from these conversions going through `LinearRgb` which uses powers. +I implemented a fast approximation to `LinearRgb` called `FastLinearRgb` by using Taylor approximations. +The approximation is roughly 5x faster and precise up to roughly 0.5%, +the major caveat being that if the input values are outside the range 0-1, accuracy drops dramatically. +You can use these in your conversions as follows: + +```go +col := // Get your color somehow +l, a, b := XyzToLab(LinearRgbToXyz(col.LinearRgb())) +``` + +If you need faster versions of `Distance*` and `Blend*` that make use of this fast approximation, +feel free to implement them and open a pull-request, I'll happily accept. + +The derivation of these functions can be followed in [this Jupyter notebook](doc/LinearRGB Approximations.ipynb). +Here's the main figure showing the approximation quality: + +![approximation quality](doc/approx-quality.png) + +More speed could be gained by using SIMD instructions in many places. +You can also get more speed for specific conversions by approximating the full conversion function, +but that is outside the scope of this library. +Thanks to [@ZirconiumX](https://github.com/ZirconiumX) for starting this investigation, +see [issue #18](https://github.com/lucasb-eyer/go-colorful/issues/18) for details. + +### Q: Why would `MakeColor` ever fail!? +A: `MakeColor` fails when the alpha channel is zero. In that case, the +conversion is undefined. See [issue 21](https://github.com/lucasb-eyer/go-colorful/issues/21) +as well as the short caveat note in the ["The `color.Color` interface"](README.md#the-colorcolor-interface) +section above. + +Who? +==== + +This library was developed by Lucas Beyer with contributions from +Bastien Dejean (@baskerville), Phil Kulak (@pkulak) and Christian Muehlhaeuser (@muesli). + +It is now maintained by makeworld (@makeworld-the-better-one). + + +## License + +This repo is under the MIT license, see [LICENSE](LICENSE) for details. diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colorgens.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colorgens.go new file mode 100644 index 0000000..2e2e49e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colorgens.go @@ -0,0 +1,55 @@ +// Various ways to generate single random colors + +package colorful + +import ( + "math/rand" +) + +// Creates a random dark, "warm" color through a restricted HSV space. +func FastWarmColor() Color { + return Hsv( + rand.Float64()*360.0, + 0.5+rand.Float64()*0.3, + 0.3+rand.Float64()*0.3) +} + +// Creates a random dark, "warm" color through restricted HCL space. +// This is slower than FastWarmColor but will likely give you colors which have +// the same "warmness" if you run it many times. +func WarmColor() (c Color) { + for c = randomWarm(); !c.IsValid(); c = randomWarm() { + } + return +} + +func randomWarm() Color { + return Hcl( + rand.Float64()*360.0, + 0.1+rand.Float64()*0.3, + 0.2+rand.Float64()*0.3) +} + +// Creates a random bright, "pimpy" color through a restricted HSV space. +func FastHappyColor() Color { + return Hsv( + rand.Float64()*360.0, + 0.7+rand.Float64()*0.3, + 0.6+rand.Float64()*0.3) +} + +// Creates a random bright, "pimpy" color through restricted HCL space. +// This is slower than FastHappyColor but will likely give you colors which +// have the same "brightness" if you run it many times. +func HappyColor() (c Color) { + for c = randomPimp(); !c.IsValid(); c = randomPimp() { + } + return +} + +func randomPimp() Color { + return Hcl( + rand.Float64()*360.0, + 0.5+rand.Float64()*0.3, + 0.5+rand.Float64()*0.3) +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colors.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colors.go new file mode 100644 index 0000000..0d5bffe --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/colors.go @@ -0,0 +1,979 @@ +// The colorful package provides all kinds of functions for working with colors. +package colorful + +import ( + "fmt" + "image/color" + "math" +) + +// A color is stored internally using sRGB (standard RGB) values in the range 0-1 +type Color struct { + R, G, B float64 +} + +// Implement the Go color.Color interface. +func (col Color) RGBA() (r, g, b, a uint32) { + r = uint32(col.R*65535.0 + 0.5) + g = uint32(col.G*65535.0 + 0.5) + b = uint32(col.B*65535.0 + 0.5) + a = 0xFFFF + return +} + +// Constructs a colorful.Color from something implementing color.Color +func MakeColor(col color.Color) (Color, bool) { + r, g, b, a := col.RGBA() + if a == 0 { + return Color{0, 0, 0}, false + } + + // Since color.Color is alpha pre-multiplied, we need to divide the + // RGB values by alpha again in order to get back the original RGB. + r *= 0xffff + r /= a + g *= 0xffff + g /= a + b *= 0xffff + b /= a + + return Color{float64(r) / 65535.0, float64(g) / 65535.0, float64(b) / 65535.0}, true +} + +// Might come in handy sometimes to reduce boilerplate code. +func (col Color) RGB255() (r, g, b uint8) { + r = uint8(col.R*255.0 + 0.5) + g = uint8(col.G*255.0 + 0.5) + b = uint8(col.B*255.0 + 0.5) + return +} + +// Used to simplify HSLuv testing. +func (col Color) values() (float64, float64, float64) { + return col.R, col.G, col.B +} + +// This is the tolerance used when comparing colors using AlmostEqualRgb. +const Delta = 1.0 / 255.0 + +// This is the default reference white point. +var D65 = [3]float64{0.95047, 1.00000, 1.08883} + +// And another one. +var D50 = [3]float64{0.96422, 1.00000, 0.82521} + +// Checks whether the color exists in RGB space, i.e. all values are in [0..1] +func (c Color) IsValid() bool { + return 0.0 <= c.R && c.R <= 1.0 && + 0.0 <= c.G && c.G <= 1.0 && + 0.0 <= c.B && c.B <= 1.0 +} + +// clamp01 clamps from 0 to 1. +func clamp01(v float64) float64 { + return math.Max(0.0, math.Min(v, 1.0)) +} + +// Returns Clamps the color into valid range, clamping each value to [0..1] +// If the color is valid already, this is a no-op. +func (c Color) Clamped() Color { + return Color{clamp01(c.R), clamp01(c.G), clamp01(c.B)} +} + +func sq(v float64) float64 { + return v * v +} + +func cub(v float64) float64 { + return v * v * v +} + +// DistanceRgb computes the distance between two colors in RGB space. +// This is not a good measure! Rather do it in Lab space. +func (c1 Color) DistanceRgb(c2 Color) float64 { + return math.Sqrt(sq(c1.R-c2.R) + sq(c1.G-c2.G) + sq(c1.B-c2.B)) +} + +// DistanceLinearRGB computes the distance between two colors in linear RGB +// space. This is not useful for measuring how humans perceive color, but +// might be useful for other things, like dithering. +func (c1 Color) DistanceLinearRGB(c2 Color) float64 { + r1, g1, b1 := c1.LinearRgb() + r2, g2, b2 := c2.LinearRgb() + return math.Sqrt(sq(r1-r2) + sq(g1-g2) + sq(b1-b2)) +} + +// Check for equality between colors within the tolerance Delta (1/255). +func (c1 Color) AlmostEqualRgb(c2 Color) bool { + return math.Abs(c1.R-c2.R)+ + math.Abs(c1.G-c2.G)+ + math.Abs(c1.B-c2.B) < 3.0*Delta +} + +// You don't really want to use this, do you? Go for BlendLab, BlendLuv or BlendHcl. +func (c1 Color) BlendRgb(c2 Color, t float64) Color { + return Color{c1.R + t*(c2.R-c1.R), + c1.G + t*(c2.G-c1.G), + c1.B + t*(c2.B-c1.B)} +} + +// Utility used by Hxx color-spaces for interpolating between two angles in [0,360]. +func interp_angle(a0, a1, t float64) float64 { + // Based on the answer here: http://stackoverflow.com/a/14498790/2366315 + // With potential proof that it works here: http://math.stackexchange.com/a/2144499 + delta := math.Mod(math.Mod(a1-a0, 360.0)+540, 360.0) - 180.0 + return math.Mod(a0+t*delta+360.0, 360.0) +} + +/// HSV /// +/////////// +// From http://en.wikipedia.org/wiki/HSL_and_HSV +// Note that h is in [0..360] and s,v in [0..1] + +// Hsv returns the Hue [0..360], Saturation and Value [0..1] of the color. +func (col Color) Hsv() (h, s, v float64) { + min := math.Min(math.Min(col.R, col.G), col.B) + v = math.Max(math.Max(col.R, col.G), col.B) + C := v - min + + s = 0.0 + if v != 0.0 { + s = C / v + } + + h = 0.0 // We use 0 instead of undefined as in wp. + if min != v { + if v == col.R { + h = math.Mod((col.G-col.B)/C, 6.0) + } + if v == col.G { + h = (col.B-col.R)/C + 2.0 + } + if v == col.B { + h = (col.R-col.G)/C + 4.0 + } + h *= 60.0 + if h < 0.0 { + h += 360.0 + } + } + return +} + +// Hsv creates a new Color given a Hue in [0..360], a Saturation and a Value in [0..1] +func Hsv(H, S, V float64) Color { + Hp := H / 60.0 + C := V * S + X := C * (1.0 - math.Abs(math.Mod(Hp, 2.0)-1.0)) + + m := V - C + r, g, b := 0.0, 0.0, 0.0 + + switch { + case 0.0 <= Hp && Hp < 1.0: + r = C + g = X + case 1.0 <= Hp && Hp < 2.0: + r = X + g = C + case 2.0 <= Hp && Hp < 3.0: + g = C + b = X + case 3.0 <= Hp && Hp < 4.0: + g = X + b = C + case 4.0 <= Hp && Hp < 5.0: + r = X + b = C + case 5.0 <= Hp && Hp < 6.0: + r = C + b = X + } + + return Color{m + r, m + g, m + b} +} + +// You don't really want to use this, do you? Go for BlendLab, BlendLuv or BlendHcl. +func (c1 Color) BlendHsv(c2 Color, t float64) Color { + h1, s1, v1 := c1.Hsv() + h2, s2, v2 := c2.Hsv() + + // We know that h are both in [0..360] + return Hsv(interp_angle(h1, h2, t), s1+t*(s2-s1), v1+t*(v2-v1)) +} + +/// HSL /// +/////////// + +// Hsl returns the Hue [0..360], Saturation [0..1], and Luminance (lightness) [0..1] of the color. +func (col Color) Hsl() (h, s, l float64) { + min := math.Min(math.Min(col.R, col.G), col.B) + max := math.Max(math.Max(col.R, col.G), col.B) + + l = (max + min) / 2 + + if min == max { + s = 0 + h = 0 + } else { + if l < 0.5 { + s = (max - min) / (max + min) + } else { + s = (max - min) / (2.0 - max - min) + } + + if max == col.R { + h = (col.G - col.B) / (max - min) + } else if max == col.G { + h = 2.0 + (col.B-col.R)/(max-min) + } else { + h = 4.0 + (col.R-col.G)/(max-min) + } + + h *= 60 + + if h < 0 { + h += 360 + } + } + + return +} + +// Hsl creates a new Color given a Hue in [0..360], a Saturation [0..1], and a Luminance (lightness) in [0..1] +func Hsl(h, s, l float64) Color { + if s == 0 { + return Color{l, l, l} + } + + var r, g, b float64 + var t1 float64 + var t2 float64 + var tr float64 + var tg float64 + var tb float64 + + if l < 0.5 { + t1 = l * (1.0 + s) + } else { + t1 = l + s - l*s + } + + t2 = 2*l - t1 + h /= 360 + tr = h + 1.0/3.0 + tg = h + tb = h - 1.0/3.0 + + if tr < 0 { + tr++ + } + if tr > 1 { + tr-- + } + if tg < 0 { + tg++ + } + if tg > 1 { + tg-- + } + if tb < 0 { + tb++ + } + if tb > 1 { + tb-- + } + + // Red + if 6*tr < 1 { + r = t2 + (t1-t2)*6*tr + } else if 2*tr < 1 { + r = t1 + } else if 3*tr < 2 { + r = t2 + (t1-t2)*(2.0/3.0-tr)*6 + } else { + r = t2 + } + + // Green + if 6*tg < 1 { + g = t2 + (t1-t2)*6*tg + } else if 2*tg < 1 { + g = t1 + } else if 3*tg < 2 { + g = t2 + (t1-t2)*(2.0/3.0-tg)*6 + } else { + g = t2 + } + + // Blue + if 6*tb < 1 { + b = t2 + (t1-t2)*6*tb + } else if 2*tb < 1 { + b = t1 + } else if 3*tb < 2 { + b = t2 + (t1-t2)*(2.0/3.0-tb)*6 + } else { + b = t2 + } + + return Color{r, g, b} +} + +/// Hex /// +/////////// + +// Hex returns the hex "html" representation of the color, as in #ff0080. +func (col Color) Hex() string { + // Add 0.5 for rounding + return fmt.Sprintf("#%02x%02x%02x", uint8(col.R*255.0+0.5), uint8(col.G*255.0+0.5), uint8(col.B*255.0+0.5)) +} + +// Hex parses a "html" hex color-string, either in the 3 "#f0c" or 6 "#ff1034" digits form. +func Hex(scol string) (Color, error) { + format := "#%02x%02x%02x" + factor := 1.0 / 255.0 + if len(scol) == 4 { + format = "#%1x%1x%1x" + factor = 1.0 / 15.0 + } + + var r, g, b uint8 + n, err := fmt.Sscanf(scol, format, &r, &g, &b) + if err != nil { + return Color{}, err + } + if n != 3 { + return Color{}, fmt.Errorf("color: %v is not a hex-color", scol) + } + + return Color{float64(r) * factor, float64(g) * factor, float64(b) * factor}, nil +} + +/// Linear /// +////////////// +// http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/ +// http://www.brucelindbloom.com/Eqn_RGB_to_XYZ.html + +func linearize(v float64) float64 { + if v <= 0.04045 { + return v / 12.92 + } + return math.Pow((v+0.055)/1.055, 2.4) +} + +// LinearRgb converts the color into the linear RGB space (see http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/). +func (col Color) LinearRgb() (r, g, b float64) { + r = linearize(col.R) + g = linearize(col.G) + b = linearize(col.B) + return +} + +// A much faster and still quite precise linearization using a 6th-order Taylor approximation. +// See the accompanying Jupyter notebook for derivation of the constants. +func linearize_fast(v float64) float64 { + v1 := v - 0.5 + v2 := v1 * v1 + v3 := v2 * v1 + v4 := v2 * v2 + //v5 := v3*v2 + return -0.248750514614486 + 0.925583310193438*v + 1.16740237321695*v2 + 0.280457026598666*v3 - 0.0757991963780179*v4 //+ 0.0437040411548932*v5 +} + +// FastLinearRgb is much faster than and almost as accurate as LinearRgb. +// BUT it is important to NOTE that they only produce good results for valid colors r,g,b in [0,1]. +func (col Color) FastLinearRgb() (r, g, b float64) { + r = linearize_fast(col.R) + g = linearize_fast(col.G) + b = linearize_fast(col.B) + return +} + +func delinearize(v float64) float64 { + if v <= 0.0031308 { + return 12.92 * v + } + return 1.055*math.Pow(v, 1.0/2.4) - 0.055 +} + +// LinearRgb creates an sRGB color out of the given linear RGB color (see http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/). +func LinearRgb(r, g, b float64) Color { + return Color{delinearize(r), delinearize(g), delinearize(b)} +} + +func delinearize_fast(v float64) float64 { + // This function (fractional root) is much harder to linearize, so we need to split. + if v > 0.2 { + v1 := v - 0.6 + v2 := v1 * v1 + v3 := v2 * v1 + v4 := v2 * v2 + v5 := v3 * v2 + return 0.442430344268235 + 0.592178981271708*v - 0.287864782562636*v2 + 0.253214392068985*v3 - 0.272557158129811*v4 + 0.325554383321718*v5 + } else if v > 0.03 { + v1 := v - 0.115 + v2 := v1 * v1 + v3 := v2 * v1 + v4 := v2 * v2 + v5 := v3 * v2 + return 0.194915592891669 + 1.55227076330229*v - 3.93691860257828*v2 + 18.0679839248761*v3 - 101.468750302746*v4 + 632.341487393927*v5 + } else { + v1 := v - 0.015 + v2 := v1 * v1 + v3 := v2 * v1 + v4 := v2 * v2 + v5 := v3 * v2 + // You can clearly see from the involved constants that the low-end is highly nonlinear. + return 0.0519565234928877 + 5.09316778537561*v - 99.0338180489702*v2 + 3484.52322764895*v3 - 150028.083412663*v4 + 7168008.42971613*v5 + } +} + +// FastLinearRgb is much faster than and almost as accurate as LinearRgb. +// BUT it is important to NOTE that they only produce good results for valid inputs r,g,b in [0,1]. +func FastLinearRgb(r, g, b float64) Color { + return Color{delinearize_fast(r), delinearize_fast(g), delinearize_fast(b)} +} + +// XyzToLinearRgb converts from CIE XYZ-space to Linear RGB space. +func XyzToLinearRgb(x, y, z float64) (r, g, b float64) { + r = 3.2409699419045214*x - 1.5373831775700935*y - 0.49861076029300328*z + g = -0.96924363628087983*x + 1.8759675015077207*y + 0.041555057407175613*z + b = 0.055630079696993609*x - 0.20397695888897657*y + 1.0569715142428786*z + return +} + +func LinearRgbToXyz(r, g, b float64) (x, y, z float64) { + x = 0.41239079926595948*r + 0.35758433938387796*g + 0.18048078840183429*b + y = 0.21263900587151036*r + 0.71516867876775593*g + 0.072192315360733715*b + z = 0.019330818715591851*r + 0.11919477979462599*g + 0.95053215224966058*b + return +} + +/// XYZ /// +/////////// +// http://www.sjbrown.co.uk/2004/05/14/gamma-correct-rendering/ + +func (col Color) Xyz() (x, y, z float64) { + return LinearRgbToXyz(col.LinearRgb()) +} + +func Xyz(x, y, z float64) Color { + return LinearRgb(XyzToLinearRgb(x, y, z)) +} + +/// xyY /// +/////////// +// http://www.brucelindbloom.com/Eqn_XYZ_to_xyY.html + +// Well, the name is bad, since it's xyY but Golang needs me to start with a +// capital letter to make the method public. +func XyzToXyy(X, Y, Z float64) (x, y, Yout float64) { + return XyzToXyyWhiteRef(X, Y, Z, D65) +} + +func XyzToXyyWhiteRef(X, Y, Z float64, wref [3]float64) (x, y, Yout float64) { + Yout = Y + N := X + Y + Z + if math.Abs(N) < 1e-14 { + // When we have black, Bruce Lindbloom recommends to use + // the reference white's chromacity for x and y. + x = wref[0] / (wref[0] + wref[1] + wref[2]) + y = wref[1] / (wref[0] + wref[1] + wref[2]) + } else { + x = X / N + y = Y / N + } + return +} + +func XyyToXyz(x, y, Y float64) (X, Yout, Z float64) { + Yout = Y + + if -1e-14 < y && y < 1e-14 { + X = 0.0 + Z = 0.0 + } else { + X = Y / y * x + Z = Y / y * (1.0 - x - y) + } + + return +} + +// Converts the given color to CIE xyY space using D65 as reference white. +// (Note that the reference white is only used for black input.) +// x, y and Y are in [0..1] +func (col Color) Xyy() (x, y, Y float64) { + return XyzToXyy(col.Xyz()) +} + +// Converts the given color to CIE xyY space, taking into account +// a given reference white. (i.e. the monitor's white) +// (Note that the reference white is only used for black input.) +// x, y and Y are in [0..1] +func (col Color) XyyWhiteRef(wref [3]float64) (x, y, Y float64) { + X, Y2, Z := col.Xyz() + return XyzToXyyWhiteRef(X, Y2, Z, wref) +} + +// Generates a color by using data given in CIE xyY space. +// x, y and Y are in [0..1] +func Xyy(x, y, Y float64) Color { + return Xyz(XyyToXyz(x, y, Y)) +} + +/// L*a*b* /// +////////////// +// http://en.wikipedia.org/wiki/Lab_color_space#CIELAB-CIEXYZ_conversions +// For L*a*b*, we need to L*a*b*<->XYZ->RGB and the first one is device dependent. + +func lab_f(t float64) float64 { + if t > 6.0/29.0*6.0/29.0*6.0/29.0 { + return math.Cbrt(t) + } + return t/3.0*29.0/6.0*29.0/6.0 + 4.0/29.0 +} + +func XyzToLab(x, y, z float64) (l, a, b float64) { + // Use D65 white as reference point by default. + // http://www.fredmiranda.com/forum/topic/1035332 + // http://en.wikipedia.org/wiki/Standard_illuminant + return XyzToLabWhiteRef(x, y, z, D65) +} + +func XyzToLabWhiteRef(x, y, z float64, wref [3]float64) (l, a, b float64) { + fy := lab_f(y / wref[1]) + l = 1.16*fy - 0.16 + a = 5.0 * (lab_f(x/wref[0]) - fy) + b = 2.0 * (fy - lab_f(z/wref[2])) + return +} + +func lab_finv(t float64) float64 { + if t > 6.0/29.0 { + return t * t * t + } + return 3.0 * 6.0 / 29.0 * 6.0 / 29.0 * (t - 4.0/29.0) +} + +func LabToXyz(l, a, b float64) (x, y, z float64) { + // D65 white (see above). + return LabToXyzWhiteRef(l, a, b, D65) +} + +func LabToXyzWhiteRef(l, a, b float64, wref [3]float64) (x, y, z float64) { + l2 := (l + 0.16) / 1.16 + x = wref[0] * lab_finv(l2+a/5.0) + y = wref[1] * lab_finv(l2) + z = wref[2] * lab_finv(l2-b/2.0) + return +} + +// Converts the given color to CIE L*a*b* space using D65 as reference white. +func (col Color) Lab() (l, a, b float64) { + return XyzToLab(col.Xyz()) +} + +// Converts the given color to CIE L*a*b* space, taking into account +// a given reference white. (i.e. the monitor's white) +func (col Color) LabWhiteRef(wref [3]float64) (l, a, b float64) { + x, y, z := col.Xyz() + return XyzToLabWhiteRef(x, y, z, wref) +} + +// Generates a color by using data given in CIE L*a*b* space using D65 as reference white. +// WARNING: many combinations of `l`, `a`, and `b` values do not have corresponding +// valid RGB values, check the FAQ in the README if you're unsure. +func Lab(l, a, b float64) Color { + return Xyz(LabToXyz(l, a, b)) +} + +// Generates a color by using data given in CIE L*a*b* space, taking +// into account a given reference white. (i.e. the monitor's white) +func LabWhiteRef(l, a, b float64, wref [3]float64) Color { + return Xyz(LabToXyzWhiteRef(l, a, b, wref)) +} + +// DistanceLab is a good measure of visual similarity between two colors! +// A result of 0 would mean identical colors, while a result of 1 or higher +// means the colors differ a lot. +func (c1 Color) DistanceLab(c2 Color) float64 { + l1, a1, b1 := c1.Lab() + l2, a2, b2 := c2.Lab() + return math.Sqrt(sq(l1-l2) + sq(a1-a2) + sq(b1-b2)) +} + +// DistanceCIE76 is the same as DistanceLab. +func (c1 Color) DistanceCIE76(c2 Color) float64 { + return c1.DistanceLab(c2) +} + +// Uses the CIE94 formula to calculate color distance. More accurate than +// DistanceLab, but also more work. +func (cl Color) DistanceCIE94(cr Color) float64 { + l1, a1, b1 := cl.Lab() + l2, a2, b2 := cr.Lab() + + // NOTE: Since all those formulas expect L,a,b values 100x larger than we + // have them in this library, we either need to adjust all constants + // in the formula, or convert the ranges of L,a,b before, and then + // scale the distances down again. The latter is less error-prone. + l1, a1, b1 = l1*100.0, a1*100.0, b1*100.0 + l2, a2, b2 = l2*100.0, a2*100.0, b2*100.0 + + kl := 1.0 // 2.0 for textiles + kc := 1.0 + kh := 1.0 + k1 := 0.045 // 0.048 for textiles + k2 := 0.015 // 0.014 for textiles. + + deltaL := l1 - l2 + c1 := math.Sqrt(sq(a1) + sq(b1)) + c2 := math.Sqrt(sq(a2) + sq(b2)) + deltaCab := c1 - c2 + + // Not taking Sqrt here for stability, and it's unnecessary. + deltaHab2 := sq(a1-a2) + sq(b1-b2) - sq(deltaCab) + sl := 1.0 + sc := 1.0 + k1*c1 + sh := 1.0 + k2*c1 + + vL2 := sq(deltaL / (kl * sl)) + vC2 := sq(deltaCab / (kc * sc)) + vH2 := deltaHab2 / sq(kh*sh) + + return math.Sqrt(vL2+vC2+vH2) * 0.01 // See above. +} + +// DistanceCIEDE2000 uses the Delta E 2000 formula to calculate color +// distance. It is more expensive but more accurate than both DistanceLab +// and DistanceCIE94. +func (cl Color) DistanceCIEDE2000(cr Color) float64 { + return cl.DistanceCIEDE2000klch(cr, 1.0, 1.0, 1.0) +} + +// DistanceCIEDE2000klch uses the Delta E 2000 formula with custom values +// for the weighting factors kL, kC, and kH. +func (cl Color) DistanceCIEDE2000klch(cr Color, kl, kc, kh float64) float64 { + l1, a1, b1 := cl.Lab() + l2, a2, b2 := cr.Lab() + + // As with CIE94, we scale up the ranges of L,a,b beforehand and scale + // them down again afterwards. + l1, a1, b1 = l1*100.0, a1*100.0, b1*100.0 + l2, a2, b2 = l2*100.0, a2*100.0, b2*100.0 + + cab1 := math.Sqrt(sq(a1) + sq(b1)) + cab2 := math.Sqrt(sq(a2) + sq(b2)) + cabmean := (cab1 + cab2) / 2 + + g := 0.5 * (1 - math.Sqrt(math.Pow(cabmean, 7)/(math.Pow(cabmean, 7)+math.Pow(25, 7)))) + ap1 := (1 + g) * a1 + ap2 := (1 + g) * a2 + cp1 := math.Sqrt(sq(ap1) + sq(b1)) + cp2 := math.Sqrt(sq(ap2) + sq(b2)) + + hp1 := 0.0 + if b1 != ap1 || ap1 != 0 { + hp1 = math.Atan2(b1, ap1) + if hp1 < 0 { + hp1 += math.Pi * 2 + } + hp1 *= 180 / math.Pi + } + hp2 := 0.0 + if b2 != ap2 || ap2 != 0 { + hp2 = math.Atan2(b2, ap2) + if hp2 < 0 { + hp2 += math.Pi * 2 + } + hp2 *= 180 / math.Pi + } + + deltaLp := l2 - l1 + deltaCp := cp2 - cp1 + dhp := 0.0 + cpProduct := cp1 * cp2 + if cpProduct != 0 { + dhp = hp2 - hp1 + if dhp > 180 { + dhp -= 360 + } else if dhp < -180 { + dhp += 360 + } + } + deltaHp := 2 * math.Sqrt(cpProduct) * math.Sin(dhp/2*math.Pi/180) + + lpmean := (l1 + l2) / 2 + cpmean := (cp1 + cp2) / 2 + hpmean := hp1 + hp2 + if cpProduct != 0 { + hpmean /= 2 + if math.Abs(hp1-hp2) > 180 { + if hp1+hp2 < 360 { + hpmean += 180 + } else { + hpmean -= 180 + } + } + } + + t := 1 - 0.17*math.Cos((hpmean-30)*math.Pi/180) + 0.24*math.Cos(2*hpmean*math.Pi/180) + 0.32*math.Cos((3*hpmean+6)*math.Pi/180) - 0.2*math.Cos((4*hpmean-63)*math.Pi/180) + deltaTheta := 30 * math.Exp(-sq((hpmean-275)/25)) + rc := 2 * math.Sqrt(math.Pow(cpmean, 7)/(math.Pow(cpmean, 7)+math.Pow(25, 7))) + sl := 1 + (0.015*sq(lpmean-50))/math.Sqrt(20+sq(lpmean-50)) + sc := 1 + 0.045*cpmean + sh := 1 + 0.015*cpmean*t + rt := -math.Sin(2*deltaTheta*math.Pi/180) * rc + + return math.Sqrt(sq(deltaLp/(kl*sl))+sq(deltaCp/(kc*sc))+sq(deltaHp/(kh*sh))+rt*(deltaCp/(kc*sc))*(deltaHp/(kh*sh))) * 0.01 +} + +// BlendLab blends two colors in the L*a*b* color-space, which should result in a smoother blend. +// t == 0 results in c1, t == 1 results in c2 +func (c1 Color) BlendLab(c2 Color, t float64) Color { + l1, a1, b1 := c1.Lab() + l2, a2, b2 := c2.Lab() + return Lab(l1+t*(l2-l1), + a1+t*(a2-a1), + b1+t*(b2-b1)) +} + +/// L*u*v* /// +////////////// +// http://en.wikipedia.org/wiki/CIELUV#XYZ_.E2.86.92_CIELUV_and_CIELUV_.E2.86.92_XYZ_conversions +// For L*u*v*, we need to L*u*v*<->XYZ<->RGB and the first one is device dependent. + +func XyzToLuv(x, y, z float64) (l, a, b float64) { + // Use D65 white as reference point by default. + // http://www.fredmiranda.com/forum/topic/1035332 + // http://en.wikipedia.org/wiki/Standard_illuminant + return XyzToLuvWhiteRef(x, y, z, D65) +} + +func XyzToLuvWhiteRef(x, y, z float64, wref [3]float64) (l, u, v float64) { + if y/wref[1] <= 6.0/29.0*6.0/29.0*6.0/29.0 { + l = y / wref[1] * (29.0 / 3.0 * 29.0 / 3.0 * 29.0 / 3.0) / 100.0 + } else { + l = 1.16*math.Cbrt(y/wref[1]) - 0.16 + } + ubis, vbis := xyz_to_uv(x, y, z) + un, vn := xyz_to_uv(wref[0], wref[1], wref[2]) + u = 13.0 * l * (ubis - un) + v = 13.0 * l * (vbis - vn) + return +} + +// For this part, we do as R's graphics.hcl does, not as wikipedia does. +// Or is it the same? +func xyz_to_uv(x, y, z float64) (u, v float64) { + denom := x + 15.0*y + 3.0*z + if denom == 0.0 { + u, v = 0.0, 0.0 + } else { + u = 4.0 * x / denom + v = 9.0 * y / denom + } + return +} + +func LuvToXyz(l, u, v float64) (x, y, z float64) { + // D65 white (see above). + return LuvToXyzWhiteRef(l, u, v, D65) +} + +func LuvToXyzWhiteRef(l, u, v float64, wref [3]float64) (x, y, z float64) { + //y = wref[1] * lab_finv((l + 0.16) / 1.16) + if l <= 0.08 { + y = wref[1] * l * 100.0 * 3.0 / 29.0 * 3.0 / 29.0 * 3.0 / 29.0 + } else { + y = wref[1] * cub((l+0.16)/1.16) + } + un, vn := xyz_to_uv(wref[0], wref[1], wref[2]) + if l != 0.0 { + ubis := u/(13.0*l) + un + vbis := v/(13.0*l) + vn + x = y * 9.0 * ubis / (4.0 * vbis) + z = y * (12.0 - 3.0*ubis - 20.0*vbis) / (4.0 * vbis) + } else { + x, y = 0.0, 0.0 + } + return +} + +// Converts the given color to CIE L*u*v* space using D65 as reference white. +// L* is in [0..1] and both u* and v* are in about [-1..1] +func (col Color) Luv() (l, u, v float64) { + return XyzToLuv(col.Xyz()) +} + +// Converts the given color to CIE L*u*v* space, taking into account +// a given reference white. (i.e. the monitor's white) +// L* is in [0..1] and both u* and v* are in about [-1..1] +func (col Color) LuvWhiteRef(wref [3]float64) (l, u, v float64) { + x, y, z := col.Xyz() + return XyzToLuvWhiteRef(x, y, z, wref) +} + +// Generates a color by using data given in CIE L*u*v* space using D65 as reference white. +// L* is in [0..1] and both u* and v* are in about [-1..1] +// WARNING: many combinations of `l`, `u`, and `v` values do not have corresponding +// valid RGB values, check the FAQ in the README if you're unsure. +func Luv(l, u, v float64) Color { + return Xyz(LuvToXyz(l, u, v)) +} + +// Generates a color by using data given in CIE L*u*v* space, taking +// into account a given reference white. (i.e. the monitor's white) +// L* is in [0..1] and both u* and v* are in about [-1..1] +func LuvWhiteRef(l, u, v float64, wref [3]float64) Color { + return Xyz(LuvToXyzWhiteRef(l, u, v, wref)) +} + +// DistanceLuv is a good measure of visual similarity between two colors! +// A result of 0 would mean identical colors, while a result of 1 or higher +// means the colors differ a lot. +func (c1 Color) DistanceLuv(c2 Color) float64 { + l1, u1, v1 := c1.Luv() + l2, u2, v2 := c2.Luv() + return math.Sqrt(sq(l1-l2) + sq(u1-u2) + sq(v1-v2)) +} + +// BlendLuv blends two colors in the CIE-L*u*v* color-space, which should result in a smoother blend. +// t == 0 results in c1, t == 1 results in c2 +func (c1 Color) BlendLuv(c2 Color, t float64) Color { + l1, u1, v1 := c1.Luv() + l2, u2, v2 := c2.Luv() + return Luv(l1+t*(l2-l1), + u1+t*(u2-u1), + v1+t*(v2-v1)) +} + +/// HCL /// +/////////// +// HCL is nothing else than L*a*b* in cylindrical coordinates! +// (this was wrong on English wikipedia, I fixed it, let's hope the fix stays.) +// But it is widely popular since it is a "correct HSV" +// http://www.hunterlab.com/appnotes/an09_96a.pdf + +// Converts the given color to HCL space using D65 as reference white. +// H values are in [0..360], C and L values are in [0..1] although C can overshoot 1.0 +func (col Color) Hcl() (h, c, l float64) { + return col.HclWhiteRef(D65) +} + +func LabToHcl(L, a, b float64) (h, c, l float64) { + // Oops, floating point workaround necessary if a ~= b and both are very small (i.e. almost zero). + if math.Abs(b-a) > 1e-4 && math.Abs(a) > 1e-4 { + h = math.Mod(57.29577951308232087721*math.Atan2(b, a)+360.0, 360.0) // Rad2Deg + } else { + h = 0.0 + } + c = math.Sqrt(sq(a) + sq(b)) + l = L + return +} + +// Converts the given color to HCL space, taking into account +// a given reference white. (i.e. the monitor's white) +// H values are in [0..360], C and L values are in [0..1] +func (col Color) HclWhiteRef(wref [3]float64) (h, c, l float64) { + L, a, b := col.LabWhiteRef(wref) + return LabToHcl(L, a, b) +} + +// Generates a color by using data given in HCL space using D65 as reference white. +// H values are in [0..360], C and L values are in [0..1] +// WARNING: many combinations of `h`, `c`, and `l` values do not have corresponding +// valid RGB values, check the FAQ in the README if you're unsure. +func Hcl(h, c, l float64) Color { + return HclWhiteRef(h, c, l, D65) +} + +func HclToLab(h, c, l float64) (L, a, b float64) { + H := 0.01745329251994329576 * h // Deg2Rad + a = c * math.Cos(H) + b = c * math.Sin(H) + L = l + return +} + +// Generates a color by using data given in HCL space, taking +// into account a given reference white. (i.e. the monitor's white) +// H values are in [0..360], C and L values are in [0..1] +func HclWhiteRef(h, c, l float64, wref [3]float64) Color { + L, a, b := HclToLab(h, c, l) + return LabWhiteRef(L, a, b, wref) +} + +// BlendHcl blends two colors in the CIE-L*C*h° color-space, which should result in a smoother blend. +// t == 0 results in c1, t == 1 results in c2 +func (col1 Color) BlendHcl(col2 Color, t float64) Color { + h1, c1, l1 := col1.Hcl() + h2, c2, l2 := col2.Hcl() + + // We know that h are both in [0..360] + return Hcl(interp_angle(h1, h2, t), c1+t*(c2-c1), l1+t*(l2-l1)).Clamped() +} + +// LuvLch + +// Converts the given color to LuvLCh space using D65 as reference white. +// h values are in [0..360], C and L values are in [0..1] although C can overshoot 1.0 +func (col Color) LuvLCh() (l, c, h float64) { + return col.LuvLChWhiteRef(D65) +} + +func LuvToLuvLCh(L, u, v float64) (l, c, h float64) { + // Oops, floating point workaround necessary if u ~= v and both are very small (i.e. almost zero). + if math.Abs(v-u) > 1e-4 && math.Abs(u) > 1e-4 { + h = math.Mod(57.29577951308232087721*math.Atan2(v, u)+360.0, 360.0) // Rad2Deg + } else { + h = 0.0 + } + l = L + c = math.Sqrt(sq(u) + sq(v)) + return +} + +// Converts the given color to LuvLCh space, taking into account +// a given reference white. (i.e. the monitor's white) +// h values are in [0..360], c and l values are in [0..1] +func (col Color) LuvLChWhiteRef(wref [3]float64) (l, c, h float64) { + return LuvToLuvLCh(col.LuvWhiteRef(wref)) +} + +// Generates a color by using data given in LuvLCh space using D65 as reference white. +// h values are in [0..360], C and L values are in [0..1] +// WARNING: many combinations of `l`, `c`, and `h` values do not have corresponding +// valid RGB values, check the FAQ in the README if you're unsure. +func LuvLCh(l, c, h float64) Color { + return LuvLChWhiteRef(l, c, h, D65) +} + +func LuvLChToLuv(l, c, h float64) (L, u, v float64) { + H := 0.01745329251994329576 * h // Deg2Rad + u = c * math.Cos(H) + v = c * math.Sin(H) + L = l + return +} + +// Generates a color by using data given in LuvLCh space, taking +// into account a given reference white. (i.e. the monitor's white) +// h values are in [0..360], C and L values are in [0..1] +func LuvLChWhiteRef(l, c, h float64, wref [3]float64) Color { + L, u, v := LuvLChToLuv(l, c, h) + return LuvWhiteRef(L, u, v, wref) +} + +// BlendLuvLCh blends two colors in the cylindrical CIELUV color space. +// t == 0 results in c1, t == 1 results in c2 +func (col1 Color) BlendLuvLCh(col2 Color, t float64) Color { + l1, c1, h1 := col1.LuvLCh() + l2, c2, h2 := col2.LuvLCh() + + // We know that h are both in [0..360] + return LuvLCh(l1+t*(l2-l1), c1+t*(c2-c1), interp_angle(h1, h2, t)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go new file mode 100644 index 0000000..bb66dfa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/happy_palettegen.go @@ -0,0 +1,25 @@ +package colorful + +import ( + "math/rand" +) + +// Uses the HSV color space to generate colors with similar S,V but distributed +// evenly along their Hue. This is fast but not always pretty. +// If you've got time to spare, use Lab (the non-fast below). +func FastHappyPalette(colorsCount int) (colors []Color) { + colors = make([]Color, colorsCount) + + for i := 0; i < colorsCount; i++ { + colors[i] = Hsv(float64(i)*(360.0/float64(colorsCount)), 0.8+rand.Float64()*0.2, 0.65+rand.Float64()*0.2) + } + return +} + +func HappyPalette(colorsCount int) ([]Color, error) { + pimpy := func(l, a, b float64) bool { + _, c, _ := LabToHcl(l, a, b) + return 0.3 <= c && 0.4 <= l && l <= 0.8 + } + return SoftPaletteEx(colorsCount, SoftPaletteSettings{pimpy, 50, true}) +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hexcolor.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hexcolor.go new file mode 100644 index 0000000..76f31d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hexcolor.go @@ -0,0 +1,67 @@ +package colorful + +import ( + "database/sql/driver" + "encoding/json" + "fmt" + "reflect" +) + +// A HexColor is a Color stored as a hex string "#rrggbb". It implements the +// database/sql.Scanner, database/sql/driver.Value, +// encoding/json.Unmarshaler and encoding/json.Marshaler interfaces. +type HexColor Color + +type errUnsupportedType struct { + got interface{} + want reflect.Type +} + +func (hc *HexColor) Scan(value interface{}) error { + s, ok := value.(string) + if !ok { + return errUnsupportedType{got: reflect.TypeOf(value), want: reflect.TypeOf("")} + } + c, err := Hex(s) + if err != nil { + return err + } + *hc = HexColor(c) + return nil +} + +func (hc *HexColor) Value() (driver.Value, error) { + return Color(*hc).Hex(), nil +} + +func (e errUnsupportedType) Error() string { + return fmt.Sprintf("unsupported type: got %v, want a %s", e.got, e.want) +} + +func (hc *HexColor) UnmarshalJSON(data []byte) error { + var hexCode string + if err := json.Unmarshal(data, &hexCode); err != nil { + return err + } + + var col, err = Hex(hexCode) + if err != nil { + return err + } + *hc = HexColor(col) + return nil +} + +func (hc HexColor) MarshalJSON() ([]byte, error) { + return json.Marshal(Color(hc).Hex()) +} + +// Decode - deserialize function for https://github.com/kelseyhightower/envconfig +func (hc *HexColor) Decode(hexCode string) error { + var col, err = Hex(hexCode) + if err != nil { + return err + } + *hc = HexColor(col) + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv-snapshot-rev4.json b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv-snapshot-rev4.json new file mode 100644 index 0000000..16354ab --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv-snapshot-rev4.json @@ -0,0 +1 @@ +{"#11ee00":{"lch":[82.5213119008325577,127.202882727266427,127.478988192005161],"luv":[82.5213119008325577,-77.3991947082883627,100.945222931227221],"rgb":[0.0666666666666666657,0.933333333333333348,0],"xyz":[0.308043578886299796,0.612655858810891907,0.102019012460713238],"hpluv":[127.478988192005161,308.195222762673438,82.5213119008325577],"hsluv":[127.478988192005161,100.000000000002416,82.5213119008325577]},"#11ee11":{"lch":[82.5429986110943759,126.352581314528209,127.715012949240403],"luv":[82.5429986110943759,-77.2942129186682,99.9528861720763473],"rgb":[0.0666666666666666657,0.933333333333333348,0.0666666666666666657],"xyz":[0.3090552443859369,0.613060525010746815,0.107347117425468874],"hpluv":[127.715012949240403,306.573296560288782,82.5429986110943759],"hsluv":[127.715012949240403,98.9038130800949205,82.5429986110943759]},"#11ee22":{"lch":[82.5831747617793184,124.791738379333623,128.158354445562821],"luv":[82.5831747617793184,-77.1009570540098,98.1245147202868253],"rgb":[0.0666666666666666657,0.933333333333333348,0.133333333333333331],"xyz":[0.310930602524413957,0.613810668266137616,0.117224003621448067],"hpluv":[128.158354445562821,303.59085997924285,82.5831747617793184],"hsluv":[128.158354445562821,98.9085620232469864,82.5831747617793184]},"#11ee33":{"lch":[82.6492529720821381,122.265269823008623,128.905098358231896],"luv":[82.6492529720821381,-76.7865393115689301,95.1452762119380537],"rgb":[0.0666666666666666657,0.933333333333333348,0.2],"xyz":[0.314018353256871663,0.615045768559120742,0.133486157479059203],"hpluv":[128.905098358231896,298.749143147736106,82.6492529720821381],"hsluv":[128.905098358231896,98.916292078887,82.6492529720821381]},"#11ee44":{"lch":[82.7444986901015511,118.712635154498344,130.021230388522838],"luv":[82.7444986901015511,-76.3407023620842,90.9108734321077],"rgb":[0.0666666666666666657,0.933333333333333348,0.266666666666666663],"xyz":[0.318476348501090578,0.616828966656808308,0.156964932431945842],"hpluv":[130.021230388522838,291.911386756693616,82.7444986901015511],"hsluv":[130.021230388522838,98.9272612770947148,82.7444986901015511]},"#11ee55":{"lch":[82.8716000285422894,114.135934527262179,131.587310643629934],"luv":[82.8716000285422894,-75.758934185545,85.3674144008224],"rgb":[0.0666666666666666657,0.933333333333333348,0.333333333333333315],"xyz":[0.324438762540452563,0.619213932272553058,0.188366979705919757],"hpluv":[131.587310643629934,283.052591495130912,82.8716000285422894],"hsluv":[131.587310643629934,98.941589727101146,82.8716000285422894]},"#11ee66":{"lch":[83.0328193013522622,108.602333046050703,133.707640253052432],"luv":[83.0328193013522622,-75.0419109433949103,78.5059128028513697],"rgb":[0.0666666666666666657,0.933333333333333348,0.4],"xyz":[0.332023758313960748,0.622247930581956377,0.228314624113063719],"hpluv":[133.707640253052432,272.269449526145593,83.0328193013522622],"hsluv":[133.707640253052432,98.9592735060659,83.0328193013522622]},"#11ee77":{"lch":[83.2300736177455747,102.250357200027821,136.520544097163679],"luv":[83.2300736177455747,-74.1950209885278866,70.3579022430685228],"rgb":[0.0666666666666666657,0.933333333333333348,0.466666666666666674],"xyz":[0.341337771334162654,0.625973535790037228,0.277368426019461656],"hpluv":[136.520544097163679,259.803949175129901,83.2300736177455747],"hsluv":[136.520544097163679,98.9801962733070155,83.2300736177455747]},"#11ee88":{"lch":[83.4649827070576151,95.3003261118453651,140.209511574476238],"luv":[83.4649827070576151,-73.2277962837693082,60.990507527375577],"rgb":[0.0666666666666666657,0.933333333333333348,0.533333333333333326],"xyz":[0.352478188436106454,0.63042970263081477,0.336041289423033795],"hpluv":[140.209511574476238,246.084644167270028,83.4649827070576151],"hsluv":[140.209511574476238,99.0041428894333109,83.4649827070576151]},"#11ee99":{"lch":[83.7388997377875626,88.07037792773761,145.011549795441141],"luv":[83.7388997377875626,-72.1532115864445416,50.5005497603372433],"rgb":[0.0666666666666666657,0.933333333333333348,0.6],"xyz":[0.365535152545179209,0.635652488274444,0.404807967064151675],"hpluv":[145.011549795441141,231.793725377578141,83.7388997377875626],"hsluv":[145.011549795441141,99.0308160530368582,83.7388997377875626]},"#11eeaa":{"lch":[84.0529327571252907,80.9984265129003802,151.210882439188083],"luv":[84.0529327571252907,-70.9868724309634729,39.0078074241021824],"rgb":[0.0666666666666666657,0.933333333333333348,0.66666666666666663],"xyz":[0.38059284551043171,0.641675565460545,0.484111816681150331],"hpluv":[151.210882439188083,217.967504021816438,84.0529327571252907],"hsluv":[151.210882439188083,99.0598554997167895,84.0529327571252907]},"#11eebb":{"lch":[84.4079608499599914,74.6634505604909435,159.089705667287262],"luv":[84.4079608499599914,-69.7461428935043273,26.6478216947980826],"rgb":[0.0666666666666666657,0.933333333333333348,0.733333333333333282],"xyz":[0.397730437617768384,0.648530602303479808,0.574369801779792],"hpluv":[159.089705667287262,206.122134265545043,84.4079608499599914],"hsluv":[159.089705667287262,99.0908585861444209,84.4079608499599914]},"#11eecc":{"lch":[84.8046473826435,69.7804076798411,168.790807110150524],"luv":[84.8046473826435,-68.449275126866155,13.5647348138992196],"rgb":[0.0666666666666666657,0.933333333333333348,0.8],"xyz":[0.417022813061490139,0.656247552480968666,0.675976312450062178],"hpluv":[168.790807110150524,198.342538571842852,84.8046473826435],"hsluv":[168.790807110150524,99.123400814408285,84.8046473826435]},"#11eedd":{"lch":[85.2434517572140749,67.1146678094459,180.081412911690762],"luv":[85.2434517572140749,-67.114600056421537,-0.0953647673755886743],"rgb":[0.0666666666666666657,0.933333333333333348,0.866666666666666696],"xyz":[0.438541138612123627,0.664854882701222172,0.789306160350068176],"hpluv":[180.081412911690762,197.173954094180345,85.2434517572140749],"hsluv":[180.081412911690762,99.1570549081779546,85.2434517572140749]},"#11eeee":{"lch":[85.7246405502341275,67.2734484234975,192.17705063006116],"luv":[85.7246405502341275,-65.759826803247222,-14.1902093570146306],"rgb":[0.0666666666666666657,0.933333333333333348,0.933333333333333348],"xyz":[0.462353318878298392,0.674379754807692189,0.914716976418591399],"hpluv":[192.17705063006116,205.138082793863816,85.7246405502341275],"hsluv":[192.17705063006116,99.1914073274009098,85.7246405502341275]},"#11eeff":{"lch":[86.2482985645723517,70.4606934075819282,203.935071880927921],"luv":[86.2482985645723517,-64.401481656171029,-28.585983907627277],"rgb":[0.0666666666666666657,0.933333333333333348,1],"xyz":[0.488524367288129757,0.684848174171624913,1.05255116471037335],"hpluv":[203.935071880927921,224.026806300523,86.2482985645723517],"hsluv":[203.935071880927921,99.9999999999942304,86.2482985645723517]},"#11ff00":{"lch":[87.7931168603164,135.408535196841626,127.513270797457935],"luv":[87.7931168603164,-82.4563732780469,107.407718111808407],"rgb":[0.0666666666666666657,1,0],"xyz":[0.359895951315973628,0.716360603670241,0.119303136603937349],"hpluv":[127.513270797457935,491.310985978769054,87.7931168603164],"hsluv":[127.513270797457935,100.000000000002373,87.7931168603164]},"#11ff11":{"lch":[87.8126571401035108,134.634318462908169,127.715012949240432],"luv":[87.8126571401035108,-82.3604359259359313,106.50426424355777],"rgb":[0.0666666666666666657,1,0.0666666666666666657],"xyz":[0.360907616815610732,0.716765269870095922,0.124631241568692985],"hpluv":[127.715012949240432,489.364334505449051,87.8126571401035108],"hsluv":[127.715012949240432,99.999999999991914,87.8126571401035108]},"#11ff22":{"lch":[87.848860165327963,133.211117719966126,128.093229681784152],"luv":[87.848860165327963,-82.1836510367646,104.838205757586152],"rgb":[0.0666666666666666657,1,0.133333333333333331],"xyz":[0.362782974954087789,0.717515413125486723,0.134508127764672164],"hpluv":[128.093229681784152,485.7796458877379,87.848860165327963],"hsluv":[128.093229681784152,99.9999999999918572,87.848860165327963]},"#11ff33":{"lch":[87.9084130007832698,130.901693692038833,128.728166832562891],"luv":[87.9084130007832698,-81.8955348861488659,102.119414300885666],"rgb":[0.0666666666666666657,1,0.2],"xyz":[0.365870725686545495,0.71875051341846985,0.150770281622283314],"hpluv":[128.728166832562891,479.945632467831388,87.9084130007832698],"hsluv":[128.728166832562891,99.9999999999919567,87.9084130007832698]},"#11ff44":{"lch":[87.9942732352876,127.641489512823171,129.672386074694657],"luv":[87.9942732352876,-81.4859348177847806,98.2465891108891185],"rgb":[0.0666666666666666657,1,0.266666666666666663],"xyz":[0.37032872093076441,0.720533711516157416,0.174249056575169953],"hpluv":[129.672386074694657,471.674193406224788,87.9942732352876],"hsluv":[129.672386074694657,99.9999999999918856,87.9942732352876]},"#11ff55":{"lch":[88.1088871723243727,123.41738800901625,130.987994113812931],"luv":[88.1088871723243727,-80.9495722978130772,93.1612494966077662],"rgb":[0.0666666666666666657,1,0.333333333333333315],"xyz":[0.376291134970126395,0.722918677131902165,0.205651103849143868],"hpluv":[130.987994113812931,460.897243009671797,88.1088871723243727],"hsluv":[130.987994113812931,99.9999999999917,88.1088871723243727]},"#11ff66":{"lch":[88.2543278429396,118.268592142924746,132.753132104158254],"luv":[88.2543278429396,-80.2855559529031382,86.8429006471038],"rgb":[0.0666666666666666657,1,0.4],"xyz":[0.38387613074363458,0.725952675441305484,0.24559874825628783],"hpluv":[132.753132104158254,447.675525940365219,88.2543278429396],"hsluv":[132.753132104158254,99.9999999999916724,88.2543278429396]},"#11ff77":{"lch":[88.4323687925046613,112.290518027227137,135.069051083024959],"luv":[88.4323687925046613,-79.4970211443964558,79.3056370505300521],"rgb":[0.0666666666666666657,1,0.466666666666666674],"xyz":[0.393190143763836486,0.729678280649386335,0.294652550162685767],"hpluv":[135.069051083024959,432.222948715922314,88.4323687925046613],"hsluv":[135.069051083024959,99.999999999991644,88.4323687925046613]},"#11ff88":{"lch":[88.6445280109338825,105.641380676940045,138.068036362648229],"luv":[88.6445280109338825,-78.5907289650887577,70.5946076698930369],"rgb":[0.0666666666666666657,1,0.533333333333333326],"xyz":[0.404330560865780286,0.734134447490163877,0.353325413566257907],"hpluv":[138.068036362648229,414.95023459347243,88.6445280109338825],"hsluv":[138.068036362648229,99.9999999999915,88.6445280109338825]},"#11ff99":{"lch":[88.8920961876840465,98.552301258979881,141.921030988541872],"luv":[88.8920961876840465,-77.5765731609304225,60.7818342932124338],"rgb":[0.0666666666666666657,1,0.6],"xyz":[0.417387524974853,0.73935723313379309,0.422092091207375786],"hpluv":[141.921030988541872,396.537381185702543,88.8920961876840465],"hsluv":[141.921030988541872,99.9999999999913456,88.8920961876840465]},"#11ffaa":{"lch":[89.1761561490339147,91.3418654410923523,146.840553381528281],"luv":[89.1761561490339147,-76.4669946123218,49.9613362233014158],"rgb":[0.0666666666666666657,1,0.66666666666666663],"xyz":[0.432445217940105542,0.745380310319894157,0.501395940824374442],"hpluv":[146.840553381528281,378.048392077141443,89.1761561490339147],"hsluv":[146.840553381528281,99.9999999999913,89.1761561490339147]},"#11ffbb":{"lch":[89.4975971674113,84.4340589142561413,153.067388238784645],"luv":[89.4975971674113,-75.2763296710648859,38.2437510711127],"rgb":[0.0666666666666666657,1,0.733333333333333282],"xyz":[0.449582810047442216,0.752235347162828916,0.591653925923016133],"hpluv":[153.067388238784645,361.099415032935838,89.4975971674113],"hsluv":[153.067388238784645,99.9999999999909335,89.4975971674113]},"#11ffcc":{"lch":[89.8571262823018628,78.3714319324892159,160.817799258328876],"luv":[89.8571262823018628,-74.0201316086282901,25.7507564896672143],"rgb":[0.0666666666666666657,1,0.8],"xyz":[0.468875185491163915,0.759952297340317773,0.693260436593286289],"hpluv":[160.817799258328876,348.067615225706845,89.8571262823018628],"hsluv":[160.817799258328876,99.999999999991,89.8571262823018628]},"#11ffdd":{"lch":[90.2552779380141317,73.7997451229305,170.162013498752287],"luv":[90.2552779380141317,-72.7145076797264238,12.6096293801408788],"rgb":[0.0666666666666666657,1,0.866666666666666696],"xyz":[0.490393511041797514,0.768559627560571279,0.806590284493292287],"hpluv":[170.162013498752287,342.256686666565315,90.2552779380141317],"hsluv":[170.162013498752287,99.999999999990834,90.2552779380141317]},"#11ffee":{"lch":[90.6924227584195819,71.3832589696730793,180.844217403257659],"luv":[90.6924227584195819,-71.3755103944163665,-1.05174952720347981],"rgb":[0.0666666666666666657,1,0.933333333333333348],"xyz":[0.514205691307972224,0.778084499667041296,0.93200110056181551],"hpluv":[180.844217403257659,347.82122947809512,90.6924227584195819],"hsluv":[180.844217403257659,99.9999999999901803,90.6924227584195819]},"#11ffff":{"lch":[91.1687759776689859,71.6302608322469467,192.17705063006116],"luv":[91.1687759776689859,-70.0186129384549361,-15.1092061032524665],"rgb":[0.0666666666666666657,1,1],"xyz":[0.540376739717803645,0.788552919030974,1.06983528885359735],"hpluv":[192.17705063006116,369.258709956275879,91.1687759776689859],"hsluv":[192.17705063006116,99.9999999999898108,91.1687759776689859]},"#00aa00":{"lch":[60.5587499434736287,93.727653253516209,127.71501294924046],"luv":[60.5587499434736287,-57.3364240886418415,74.1445038903004559],"rgb":[0,0.66666666666666663,0],"xyz":[0.143740958848290495,0.287481917696585,0.0479136529494288144],"hpluv":[127.71501294924046,196.394882900214554,60.5587499434736287],"hsluv":[127.71501294924046,100.000000000002359,60.5587499434736287]},"#00aa11":{"lch":[60.5946550577951939,92.4075267438518182,128.220974416403209],"luv":[60.5946550577951939,-57.1721703645967665,72.5981675713458543],"rgb":[0,0.66666666666666663,0.0666666666666666657],"xyz":[0.144752624347927628,0.28788658389643984,0.0532417579141844441],"hpluv":[128.220974416403209,193.513984665985475,60.5946550577951939],"hsluv":[128.220974416403209,99.9999999999907772,60.5946550577951939]},"#00aa22":{"lch":[60.661124672570665,90.0113827545795715,129.185497299711983],"luv":[60.661124672570665,-56.8721735728637725,69.7682226983709199],"rgb":[0,0.66666666666666663,0.133333333333333331],"xyz":[0.146627982486404629,0.288636727151830641,0.0631186441101636436],"hpluv":[129.185497299711983,188.289586599726533,60.661124672570665],"hsluv":[129.185497299711983,99.9999999999908624,60.661124672570665]},"#00aa33":{"lch":[60.7703154938824355,86.2098857925288513,130.852037745481823],"luv":[60.7703154938824355,-56.3905639077229353,65.2092685937350751],"rgb":[0,0.66666666666666663,0.2],"xyz":[0.14971573321886239,0.289871827444813768,0.0793807979677747799],"hpluv":[130.852037745481823,180.013429236819462,60.7703154938824355],"hsluv":[130.852037745481823,99.9999999999908,60.7703154938824355]},"#00aa44":{"lch":[60.9274158721733841,81.0355822964375108,133.441426631804489],"luv":[60.9274158721733841,-55.7210928860807044,58.8381288426430444],"rgb":[0,0.66666666666666663,0.266666666666666663],"xyz":[0.15417372846308125,0.291655025542501334,0.102859572920661418],"hpluv":[133.441426631804489,168.77274926729055,60.9274158721733841],"hsluv":[133.441426631804489,99.9999999999908908,60.9274158721733841]},"#00aa55":{"lch":[61.1365343944832915,74.6960845180523592,137.272019015051796],"luv":[61.1365343944832915,-54.8704978500827636,50.6826746335676717],"rgb":[0,0.66666666666666663,0.333333333333333315],"xyz":[0.160136142502443235,0.294039991158246194,0.134261620194635334],"hpluv":[137.272019015051796,155.037353806827582,61.1365343944832915],"hsluv":[137.272019015051796,99.9999999999910614,61.1365343944832915]},"#00aa66":{"lch":[61.4009335299549264,67.6053275851037512,142.80970662058607],"luv":[61.4009335299549264,-53.8565898531593703,40.8649978254956139],"rgb":[0,0.66666666666666663,0.4],"xyz":[0.16772113827595142,0.297073989467649513,0.174209264601779296],"hpluv":[142.80970662058607,139.715720243970395,61.4009335299549264],"hsluv":[142.80970662058607,99.9999999999911893,61.4009335299549264]},"#00aa77":{"lch":[61.7231520087844814,60.4394033477847188,150.696962972825474],"luv":[61.7231520087844814,-52.7057786154446859,29.5807771631501382],"rgb":[0,0.66666666666666663,0.466666666666666674],"xyz":[0.177035151296153326,0.300799594675730309,0.223263066508177205],"hpluv":[150.696962972825474,124.254291935777843,61.7231520087844814],"hsluv":[150.696962972825474,99.9999999999911893,61.7231520087844814]},"#00aa88":{"lch":[62.1050795642419615,54.2095218153359397,161.640221068188367],"luv":[62.1050795642419615,-51.4501140589855126,17.0750700954568337],"rgb":[0,0.66666666666666663,0.533333333333333326],"xyz":[0.188175568398097182,0.305255761516507906,0.281935929911749372],"hpluv":[161.640221068188367,110.761232665855573,62.1050795642419615],"hsluv":[161.640221068188367,99.9999999999911466,62.1050795642419615]},"#00aa99":{"lch":[62.5480102999456307,50.2545412813378576,175.872445658321794],"luv":[62.5480102999456307,-50.1241952468173793,3.61717711159146882],"rgb":[0,0.66666666666666663,0.6],"xyz":[0.201232532507169881,0.310478547160137064,0.350702607552867307],"hpluv":[175.872445658321794,101.95326553071466,62.5480102999456307],"hsluv":[175.872445658321794,99.9999999999913314,62.5480102999456307]},"#00aaaa":{"lch":[63.0526871437625829,49.8847230087107931,192.17705063006116],"luv":[63.0526871437625829,-48.762339705407328,-10.5223484123201398],"rgb":[0,0.66666666666666663,0.66666666666666663],"xyz":[0.216290225472422437,0.316501624346238186,0.430006457169865852],"hpluv":[192.17705063006116,100.392967527320806,63.0526871437625829],"hsluv":[192.17705063006116,99.9999999999914451,63.0526871437625829]},"#00aabb":{"lch":[63.6193436646561565,53.6276681768737,207.895374658889665],"luv":[63.6193436646561565,-47.3963155750249143,-25.0901587081772526],"rgb":[0,0.66666666666666663,0.733333333333333282],"xyz":[0.233427817579759056,0.323356661189172945,0.520264442268507654],"hpluv":[207.895374658889665,106.964349821245364,63.6193436646561565],"hsluv":[207.895374658889665,99.9999999999916,63.6193436646561565]},"#00aacc":{"lch":[64.2477463386430259,60.9097449106327886,220.878520684721707],"luv":[64.2477463386430259,-46.0537892020538,-39.8628338833449],"rgb":[0,0.66666666666666663,0.8],"xyz":[0.25272019302348081,0.331073611366661746,0.62187095293877781],"hpluv":[220.878520684721707,120.300715116377788,64.2477463386430259],"hsluv":[220.878520684721707,99.9999999999916298,64.2477463386430259]},"#00aadd":{"lch":[64.9372385342214926,70.6418801813473465,230.685034316882962],"luv":[64.9372385342214926,-44.7574928469198525,-54.6538385624811625],"rgb":[0,0.66666666666666663,0.866666666666666696],"xyz":[0.274238518574114354,0.339680941586915253,0.735200800838783808],"hpluv":[230.685034316882962,138.04089297290011,64.9372385342214926],"hsluv":[230.685034316882962,99.9999999999918145,64.9372385342214926]},"#00aaee":{"lch":[65.6867863979168618,81.8478503674051,237.87423205753521],"luv":[65.6867863979168618,-43.5250094774703129,-69.3155405356638283],"rgb":[0,0.66666666666666663,0.933333333333333348],"xyz":[0.298050698840289119,0.34920581369338527,0.860611616907307],"hpluv":[237.87423205753521,158.11336767521891,65.6867863979168618],"hsluv":[237.87423205753521,99.999999999991843,65.6867863979168618]},"#00aaff":{"lch":[66.4950261675888,93.8462134827344,243.161780722675303],"luv":[66.4950261675888,-42.369016683119284,-83.7375555551541],"rgb":[0,0.66666666666666663,1],"xyz":[0.324221747250120484,0.359674233057318,0.998445805199088876],"hpluv":[243.161780722675303,179.088178632175044,66.4950261675888],"hsluv":[243.161780722675303,99.9999999999982805,66.4950261675888]},"#00bb00":{"lch":[66.1662429166961772,102.406451239047826,127.71501294924046],"luv":[66.1662429166961772,-62.6455428450044352,81.0099822060849135],"rgb":[0,0.733333333333333282,0],"xyz":[0.177695456756889275,0.355390913513783546,0.0592318189189614333],"hpluv":[127.71501294924046,196.39488290021464,66.1662429166961772],"hsluv":[127.71501294924046,100.000000000002373,66.1662429166961772]},"#00bb11":{"lch":[66.1974173108447559,101.237205455569821,128.123527834983577],"luv":[66.1974173108447559,-62.4996967519340956,79.6414444518024425],"rgb":[0,0.733333333333333282,0.0666666666666666657],"xyz":[0.178707122256526407,0.355795579713638399,0.064559923883717063],"hpluv":[128.123527834983577,194.061073356438868,66.1974173108447559],"hsluv":[128.123527834983577,99.9999999999909335,66.1974173108447559]},"#00bb22":{"lch":[66.2551438620851911,99.1062916374383747,128.898124119483072],"luv":[66.2551438620851911,-62.232564676438038,77.1308299962987718],"rgb":[0,0.733333333333333282,0.133333333333333331],"xyz":[0.180582480395003409,0.3565457229690292,0.0744368100796962556],"hpluv":[128.898124119483072,189.810813804630897,66.2551438620851911],"hsluv":[128.898124119483072,99.9999999999908624,66.2551438620851911]},"#00bb33":{"lch":[66.3500136661217255,95.7008075372637137,130.224174268563928],"luv":[66.3500136661217255,-61.8016571104716235,73.0698278476423155],"rgb":[0,0.733333333333333282,0.2],"xyz":[0.18367023112746117,0.357780823262012326,0.0906989639373074],"hpluv":[130.224174268563928,183.02647365261987,66.3500136661217255],"hsluv":[130.224174268563928,99.9999999999909335,66.3500136661217255]},"#00bb44":{"lch":[66.4865992404304,91.0092453899789859,132.255785626190885],"luv":[66.4865992404304,-61.1983980271068,67.3605138443080875],"rgb":[0,0.733333333333333282,0.266666666666666663],"xyz":[0.18812822637168003,0.359564021359699892,0.114177738890194044],"hpluv":[132.255785626190885,173.696361176634838,66.4865992404304],"hsluv":[132.255785626190885,99.9999999999909619,66.4865992404304]},"#00bb55":{"lch":[66.6685736373934219,85.1496193371524,135.204737263674588],"luv":[66.6685736373934219,-60.4246386982598,59.9943389949978751],"rgb":[0,0.733333333333333282,0.333333333333333315],"xyz":[0.194090640411042015,0.361948986975444753,0.145579786164167946],"hpluv":[135.204737263674588,162.069343805127659,66.6685736373934219],"hsluv":[135.204737263674588,99.9999999999909477,66.6685736373934219]},"#00bb66":{"lch":[66.8989180170192412,78.3861452968700689,139.371990675590268],"luv":[66.8989180170192412,-59.4914065933894,51.0407711152765629],"rgb":[0,0.733333333333333282,0.4],"xyz":[0.2016756361845502,0.364982985284848072,0.185527430571311908],"hpluv":[139.371990675590268,148.682392510907704,66.8989180170192412],"hsluv":[139.371990675590268,99.9999999999911182,66.8989180170192412]},"#00bb77":{"lch":[67.1800303821267448,71.1598447269708316,145.178146497089472],"luv":[67.1800303821267448,-58.4173559625633061,40.6341731047866617],"rgb":[0,0.733333333333333282,0.466666666666666674],"xyz":[0.210989649204752105,0.368708590492928867,0.234581232477709817],"hpluv":[145.178146497089472,134.410786503463328,67.1800303821267448],"hsluv":[145.178146497089472,99.9999999999910898,67.1800303821267448]},"#00bb88":{"lch":[67.5137905946342,64.1363411600919,153.159702568813543],"luv":[67.5137905946342,-57.2268359754185525,28.9578918715820954],"rgb":[0,0.733333333333333282,0.533333333333333326],"xyz":[0.222130066306695961,0.373164757333706465,0.293254095881282],"hpluv":[153.159702568813543,120.545503395456095,67.5137905946342],"hsluv":[153.159702568813543,99.9999999999911608,67.5137905946342]},"#00bb99":{"lch":[67.9016044714860811,58.2533417764790187,163.826150797364875],"luv":[67.9016044714860811,-55.9477282230567141,16.2266304205851419],"rgb":[0,0.733333333333333282,0.6],"xyz":[0.235187030415768661,0.378387542977335622,0.362020773522399919],"hpluv":[163.826150797364875,108.862958898475256,67.9016044714860811],"hsluv":[163.826150797364875,99.9999999999912461,67.9016044714860811]},"#00bbaa":{"lch":[68.3444379186728384,54.6744668749029543,177.202021912208522],"luv":[68.3444379186728384,-54.6092872876890922,2.66890801368250408],"rgb":[0,0.733333333333333282,0.66666666666666663],"xyz":[0.250244723381021217,0.384410620163436745,0.44132462313939852],"hpluv":[177.202021912208522,101.512776720033713,68.3444379186728384],"hsluv":[177.202021912208522,99.9999999999913598,68.3444379186728384]},"#00bbbb":{"lch":[68.8428468315880338,54.4656619866929645,192.177050630061132],"luv":[68.8428468315880338,-53.2402096652165113,-11.4886209116881091],"rgb":[0,0.733333333333333282,0.733333333333333282],"xyz":[0.267382315488357836,0.391265657006371503,0.531582608238040266],"hpluv":[192.177050630061132,100.392967527320806,68.8428468315880338],"hsluv":[192.177050630061132,99.9999999999914451,68.8428468315880338]},"#00bbcc":{"lch":[69.3970058395379397,58.0340346662075675,206.653495587531239],"luv":[69.3970058395379397,-51.8670935918889384,-26.0337047299998297],"rgb":[0,0.733333333333333282,0.8],"xyz":[0.28667469093207959,0.398982607183860305,0.633189118908310422],"hpluv":[206.653495587531239,106.116119046155191,69.3970058395379397],"hsluv":[206.653495587531239,99.9999999999915161,69.3970058395379397]},"#00bbdd":{"lch":[70.0067374807312461,64.9183055759271923,218.91244904401708],"luv":[70.0067374807312461,-50.5133677649133119,-40.7772740125682844],"rgb":[0,0.733333333333333282,0.866666666666666696],"xyz":[0.308193016482713134,0.407589937404113811,0.74651896680831642],"hpluv":[218.91244904401708,117.670246608059514,70.0067374807312461],"hsluv":[218.91244904401708,99.999999999991644,70.0067374807312461]},"#00bbee":{"lch":[70.6715424904064236,74.2108860535778,228.474155043258463],"luv":[70.6715424904064236,-49.1986871961444336,-55.5584807840624819],"rgb":[0,0.733333333333333282,0.933333333333333348],"xyz":[0.332005196748887843,0.417114809510583828,0.871929782876839643],"hpluv":[228.474155043258463,133.248513578578667,70.6715424904064236],"hsluv":[228.474155043258463,99.9999999999918288,70.6715424904064236]},"#00bbff":{"lch":[71.3906313155650167,85.0452269855302,235.688960914523477],"luv":[71.3906313155650167,-47.9387359102869155,-70.246481992653],"rgb":[0,0.733333333333333282,1],"xyz":[0.358176245158719264,0.427583228874516552,1.00976397116862149],"hpluv":[235.688960914523477,151.163886263776277,71.3906313155650167],"hsluv":[235.688960914523477,99.9999999999978,71.3906313155650167]},"#00cc00":{"lch":[71.6795694698327139,110.939506494120423,127.71501294924046],"luv":[71.6795694698327139,-67.8655057683618566,87.7601688009055181],"rgb":[0,0.8,0],"xyz":[0.215919200066506195,0.431838400133018441,0.0719730666888333814],"hpluv":[127.71501294924046,196.394882900214611,71.6795694698327139],"hsluv":[127.71501294924046,100.000000000002359,71.6795694698327139]},"#00cc11":{"lch":[71.7069484470386698,109.895339051400697,128.05073784188761],"luv":[71.7069484470386698,-67.7349868616780668,86.5387606802328548],"rgb":[0,0.8,0.0666666666666666657],"xyz":[0.216930865566143327,0.432243066332873294,0.0773011716535890181],"hpluv":[128.05073784188761,194.472124503698296,71.7069484470386698],"hsluv":[128.05073784188761,99.9999999999908766,71.7069484470386698]},"#00cc22":{"lch":[71.7576566073484,107.986601617430239,128.68476606632143],"luv":[71.7576566073484,-67.4954197535952289,84.2939763041676287],"rgb":[0,0.8,0.133333333333333331],"xyz":[0.218806223704620328,0.432993209588264094,0.0871780578495682107],"hpluv":[128.68476606632143,190.959361108477,71.7576566073484],"hsluv":[128.68476606632143,99.9999999999909193,71.7576566073484]},"#00cc33":{"lch":[71.8410194320707,104.91966800737103,129.762682813168567],"luv":[71.8410194320707,-67.1075822658835364,80.6517770244687853],"rgb":[0,0.8,0.2],"xyz":[0.22189397443707809,0.434228309881247221,0.103440211707179347],"hpluv":[129.762682813168567,185.320621425294917,71.8410194320707],"hsluv":[129.762682813168567,99.9999999999909761,71.8410194320707]},"#00cc44":{"lch":[71.9610975929873717,100.65733905537941,131.396818004218431],"luv":[71.9610975929873717,-66.561699323308261,75.5078809721416491],"rgb":[0,0.8,0.266666666666666663],"xyz":[0.226351969681296949,0.436011507978934787,0.126918986660065986],"hpluv":[131.396818004218431,177.495355343216744,71.9610975929873717],"hsluv":[131.396818004218431,99.9999999999909903,71.9610975929873717]},"#00cc55":{"lch":[72.1211872877728837,95.2615727691762828,133.734892870047815],"luv":[72.1211872877728837,-65.8564749898269639,68.8308938513177],"rgb":[0,0.8,0.333333333333333315],"xyz":[0.232314383720658935,0.438396473594679648,0.158321033934039901],"hpluv":[133.734892870047815,167.607792551030144,72.1211872877728837],"hsluv":[133.734892870047815,99.999999999991033,72.1211872877728837]},"#00cc66":{"lch":[72.3240060759138,88.9026050634798821,136.980115521422647],"luv":[72.3240060759138,-64.9982032665013207,60.6539921126355495],"rgb":[0,0.8,0.4],"xyz":[0.23989937949416712,0.441430471904082966,0.198268678341183863],"hpluv":[136.980115521422647,155.980870440536961,72.3240060759138],"hsluv":[136.980115521422647,99.9999999999910614,72.3240060759138]},"#00cc77":{"lch":[72.5717906268391459,81.8763194870781206,141.413175407098493],"luv":[72.5717906268391459,-63.9997644777707464,51.066249515114805],"rgb":[0,0.8,0.466666666666666674],"xyz":[0.249213392514369025,0.445156077112163762,0.247322480247581772],"hpluv":[141.413175407098493,143.162673336571032,72.5717906268391459],"hsluv":[141.413175407098493,99.9999999999910756,72.5717906268391459]},"#00cc88":{"lch":[72.8663546950801,74.6325704710961162,147.40707881161012],"luv":[72.8663546950801,-62.8793552775828672,40.2020802322297683],"rgb":[0,0.8,0.533333333333333326],"xyz":[0.260353809616312881,0.449612243952941359,0.305995343651153939],"hpluv":[147.40707881161012,129.969270924532168,72.8663546950801],"hsluv":[147.40707881161012,99.9999999999911608,72.8663546950801]},"#00cc99":{"lch":[73.2091273059676695,67.813783770663278,155.40051707617576],"luv":[73.2091273059676695,-61.6589956558222809,28.2290191825639418],"rgb":[0,0.8,0.6],"xyz":[0.273410773725385581,0.454835029596570517,0.374762021292271874],"hpluv":[155.40051707617576,117.541728748843539,73.2091273059676695],"hsluv":[155.40051707617576,99.9999999999911893,73.2091273059676695]},"#00ccaa":{"lch":[73.6011808048110368,62.2803364521242102,165.745935171574274],"luv":[73.6011808048110368,-60.3629393869259374,15.3347923742089414],"rgb":[0,0.8,0.66666666666666663],"xyz":[0.288468466690638137,0.460858106782671639,0.454065870909270419],"hpluv":[165.745935171574274,107.375573062224,73.6011808048110368],"hsluv":[165.745935171574274,99.9999999999912887,73.6011808048110368]},"#00ccbb":{"lch":[74.043253901593,59.041045922693165,178.335616576813749],"luv":[74.043253901593,-59.0161369965186395,1.7148404163965667],"rgb":[0,0.8,0.733333333333333282],"xyz":[0.305606058797974756,0.467713143625606398,0.544323856007912221],"hpluv":[178.335616576813749,101.183074845522739,74.043253901593],"hsluv":[178.335616576813749,99.9999999999913882,74.043253901593]},"#00cccc":{"lch":[74.5357725840108714,58.9696734274942429,192.177050630061132],"luv":[74.5357725840108714,-57.64288292201784,-12.4386668330598962],"rgb":[0,0.8,0.8],"xyz":[0.32489843424169651,0.4754300938030952,0.645930366678182377],"hpluv":[192.177050630061132,100.392967527320835,74.5357725840108714],"hsluv":[192.177050630061132,99.9999999999914877,74.5357725840108714]},"#00ccdd":{"lch":[75.0788705190671,62.3850861111967063,205.58971515357635],"luv":[75.0788705190671,-56.2657375800620656,-26.9456071312750254],"rgb":[0,0.8,0.866666666666666696],"xyz":[0.346416759792330053,0.484037424023348706,0.759260214578188375],"hpluv":[205.58971515357635,105.439266222061761,75.0788705190671],"hsluv":[205.58971515357635,99.9999999999915588,75.0788705190671]},"#00ccee":{"lch":[75.672409810316779,68.9113069897593,217.179575991302841],"luv":[75.672409810316779,-54.9047659259632326,-41.6441461630807765],"rgb":[0,0.8,0.933333333333333348],"xyz":[0.370228940058504818,0.493562296129818723,0.884671030646711598],"hpluv":[217.179575991302841,115.555933163518176,75.672409810316779],"hsluv":[217.179575991302841,99.9999999999916,75.672409810316779]},"#00ccff":{"lch":[76.3160024985922263,77.7871508482342193,226.46755023570978],"luv":[76.3160024985922263,-53.5770891110031471,-56.3944710009551713],"rgb":[0,0.8,1],"xyz":[0.396399988468336184,0.504030715493751447,1.02250521893849333],"hpluv":[226.46755023570978,131.600547876461974,76.3160024985922263],"hsluv":[226.46755023570978,99.9999999999969731,76.3160024985922263]},"#00dd00":{"lch":[77.1074905447145369,119.34037845513086,127.715012949240503],"luv":[77.1074905447145369,-73.004607631587163,94.4057900468603],"rgb":[0,0.866666666666666696,0],"xyz":[0.258553190613681372,0.51710638122737,0.0861843968712247],"hpluv":[127.715012949240503,210.385995725156505,77.1074905447145369],"hsluv":[127.715012949240503,100.000000000002203,77.1074905447145369]},"#00dd11":{"lch":[77.1317715771024268,118.40111864948102,127.995077421524911],"luv":[77.1317715771024268,-72.8869911141770359,93.3076171797906255],"rgb":[0,0.866666666666666696,0.0666666666666666657],"xyz":[0.259564856113318476,0.517511047427224868,0.0915125018359803366],"hpluv":[127.995077421524911,208.997725019578468,77.1317715771024268],"hsluv":[127.995077421524911,99.9999999999909193,77.1317715771024268]},"#00dd22":{"lch":[77.1767486793617081,116.680170458435171,128.522366120948305],"luv":[77.1767486793617081,-72.6707542705971434,91.2864921658838568],"rgb":[0,0.866666666666666696,0.133333333333333331],"xyz":[0.261440214251795533,0.518261190682615669,0.101389388031959529],"hpluv":[128.522366120948305,206.449864525990506,77.1767486793617081],"hsluv":[128.522366120948305,99.9999999999909335,77.1767486793617081]},"#00dd33":{"lch":[77.2507083817471312,113.903613467858165,129.414072915332611],"luv":[77.2507083817471312,-72.3197155087496668,87.9993858488157485],"rgb":[0,0.866666666666666696,0.2],"xyz":[0.264527964984253239,0.519496290975598796,0.117651541889570666],"hpluv":[129.414072915332611,202.327676795977681,77.2507083817471312],"hsluv":[129.414072915332611,99.9999999999909335,77.2507083817471312]},"#00dd44":{"lch":[77.3572825066044,110.019432359123073,130.755032484191332],"luv":[77.3572825066044,-71.8235777962907633,83.3405613681826907],"rgb":[0,0.866666666666666696,0.266666666666666663],"xyz":[0.268985960228472154,0.521279489073286362,0.141130316842457304],"hpluv":[130.755032484191332,196.537344059934071,77.3572825066044],"hsluv":[130.755032484191332,99.9999999999909193,77.3572825066044]},"#00dd55":{"lch":[77.499442461574418,105.05363654061,132.652443872197409],"luv":[77.499442461574418,-71.1790335676869717,77.2645567564888],"rgb":[0,0.866666666666666696,0.333333333333333315],"xyz":[0.274948374267834139,0.523664454689031111,0.172532364116431219],"hpluv":[132.652443872197409,189.094972829508237,77.499442461574418],"hsluv":[132.652443872197409,99.9999999999909477,77.499442461574418]},"#00dd66":{"lch":[77.6796666807438,99.1151742217995,135.249123061333165],"luv":[77.6796666807438,-70.3890792332532413,69.7796194150732276],"rgb":[0,0.866666666666666696,0.4],"xyz":[0.282533370041342324,0.52669845299843443,0.212480008523575181],"hpluv":[135.249123061333165,180.139247328423863,77.6796666807438],"hsluv":[135.249123061333165,99.9999999999909903,77.6796666807438]},"#00dd77":{"lch":[77.9000291762011301,92.4061998396230138,138.73841210181584],"luv":[77.9000291762011301,-69.4623356452591878,60.9416909472136155],"rgb":[0,0.866666666666666696,0.466666666666666674],"xyz":[0.29184738306154423,0.530424058206515281,0.26153381042997309],"hpluv":[138.73841210181584,169.957910917592017,77.9000291762011301],"hsluv":[138.73841210181584,99.9999999999910187,77.9000291762011301]},"#00dd88":{"lch":[78.1622519856154,85.2389230174627386,143.3784757437721],"luv":[78.1622519856154,-68.4122000424903,50.8472701580255091],"rgb":[0,0.866666666666666696,0.533333333333333326],"xyz":[0.30298780016348803,0.534880225047292823,0.320206673833545286],"hpluv":[143.3784757437721,159.033158409305884,78.1622519856154],"hsluv":[143.3784757437721,99.9999999999911608,78.1622519856154]},"#00dd99":{"lch":[78.4677391993035798,78.0607504013048583,149.494791226300919],"luv":[78.4677391993035798,-67.2558167964087801,39.6249398770864545],"rgb":[0,0.866666666666666696,0.6],"xyz":[0.316044764272560785,0.540103010690922,0.388973351474663165],"hpluv":[149.494791226300919,148.113090063328627,78.4677391993035798],"hsluv":[149.494791226300919,99.9999999999911466,78.4677391993035798]},"#00ddaa":{"lch":[78.8176011215583401,71.4835041270533225,157.438879868811341],"luv":[78.8176011215583401,-66.0129273361177,27.4259874352573583],"rgb":[0,0.866666666666666696,0.66666666666666663],"xyz":[0.331102457237813286,0.546126087877023103,0.468277201091661766],"hpluv":[157.438879868811341,138.307036304413771,78.8176011215583401],"hsluv":[157.438879868811341,99.9999999999912319,78.8176011215583401]},"#00ddbb":{"lch":[79.21267314937,66.2909050184163675,167.440816272526462],"luv":[79.21267314937,-64.7046905962200896,14.4148223370296193],"rgb":[0,0.866666666666666696,0.733333333333333282],"xyz":[0.34824004934514996,0.552981124719957862,0.558535186190303512],"hpluv":[167.440816272526462,131.160951364069831,79.21267314937],"hsluv":[167.440816272526462,99.9999999999912319,79.21267314937]},"#00ddcc":{"lch":[79.6535319864315738,63.3571261830985,179.312753048293331],"luv":[79.6535319864315738,-63.3525685364998381,0.759932897798095253],"rgb":[0,0.866666666666666696,0.8],"xyz":[0.367532424788871714,0.560698074897446719,0.660141696860573668],"hpluv":[179.312753048293331,128.577362979680402,79.6535319864315738],"hsluv":[179.312753048293331,99.9999999999913314,79.6535319864315738]},"#00dddd":{"lch":[80.1405107346531338,63.4039144225475795,192.177050630061245],"luv":[80.1405107346531338,-61.9773555359817649,-13.3739958452306631],"rgb":[0,0.866666666666666696,0.866666666666666696],"xyz":[0.389050750339505202,0.569305405117700225,0.773471544760579666],"hpluv":[192.177050630061245,132.399857962191078,80.1405107346531338],"hsluv":[192.177050630061245,99.9999999999915,80.1405107346531338]},"#00ddee":{"lch":[80.6737137665329,66.6843941199945078,204.668960845135786],"luv":[80.6737137665329,-60.59840405426975,-27.8323884211582282],"rgb":[0,0.866666666666666696,0.933333333333333348],"xyz":[0.412862930605679967,0.578830277224170242,0.898882360829102889],"hpluv":[204.668960845135786,143.769811077134563,80.6737137665329],"hsluv":[204.668960845135786,99.9999999999914735,80.6737137665329]},"#00ddff":{"lch":[81.2530318771427,72.8883394631876627,215.643856178856652],"luv":[81.2530318771427,-59.2330695533496296,-42.475328144570291],"rgb":[0,0.866666666666666696,1],"xyz":[0.439033979015511333,0.589298696588103,1.03671654912088473],"hpluv":[215.643856178856652,162.831862460855405,81.2530318771427],"hsluv":[215.643856178856652,99.9999999999960636,81.2530318771427]},"#00ee00":{"lch":[82.4573791946470749,127.620478503329409,127.715012949240503],"luv":[82.4573791946470749,-78.0698291684561241,100.955873068518613],"rgb":[0,0.933333333333333348,0],"xyz":[0.305731966954196188,0.611463933908400925,0.101910655651395884],"hpluv":[127.715012949240503,307.908475174189959,82.4573791946470749],"hsluv":[127.715012949240503,100.000000000002217,82.4573791946470749]},"#00ee11":{"lch":[82.4790940690076582,126.770138643430457,127.951660682688043],"luv":[82.4790940690076582,-77.963182339567652,99.9620440525398],"rgb":[0,0.933333333333333348,0.0666666666666666657],"xyz":[0.306743632453833293,0.611868600108255833,0.107238760616151521],"hpluv":[127.951660682688043,306.293921948395678,82.4790940690076582],"hsluv":[127.951660682688043,99.9999999999909193,82.4790940690076582]},"#00ee22":{"lch":[82.5193223464761729,125.209295581045268,128.396138884075839],"luv":[82.5193223464761729,-77.7668632323815814,98.1309466116455],"rgb":[0,0.933333333333333348,0.133333333333333331],"xyz":[0.308618990592310349,0.612618743363646634,0.117115646812130714],"hpluv":[128.396138884075839,303.325246698320768,82.5193223464761729],"hsluv":[128.396138884075839,99.9999999999907914,82.5193223464761729]},"#00ee33":{"lch":[82.5854861516441616,122.683025615083068,129.144698003447559],"luv":[82.5854861516441616,-77.4474668310457304,95.1473313105795881],"rgb":[0,0.933333333333333348,0.2],"xyz":[0.311706741324768055,0.613853843656629761,0.133377800669741864],"hpluv":[129.144698003447559,298.506449004286878,82.5854861516441616],"hsluv":[129.144698003447559,99.9999999999910187,82.5854861516441616]},"#00ee44":{"lch":[82.680854944152216,119.131104912681948,130.263308305441626],"luv":[82.680854944152216,-76.994580956063885,90.9068460629701889],"rgb":[0,0.933333333333333348,0.266666666666666663],"xyz":[0.31616473656898697,0.615637041754317327,0.156856575622628502],"hpluv":[130.263308305441626,291.702339981024693,82.680854944152216],"hsluv":[130.263308305441626,99.9999999999908624,82.680854944152216]},"#00ee55":{"lch":[82.8081199656530913,114.556122924925475,131.832385242542614],"luv":[82.8081199656530913,-76.4036333062175572,85.3556683366704192],"rgb":[0,0.933333333333333348,0.333333333333333315],"xyz":[0.322127150608348956,0.618022007370062076,0.18825862289660239],"hpluv":[131.832385242542614,282.889526663711365,82.8081199656530913],"hsluv":[131.832385242542614,99.9999999999908908,82.8081199656530913]},"#00ee66":{"lch":[82.9695459516691756,109.025909834785097,133.955863991345211],"luv":[82.9695459516691756,-75.6753248662734137,78.4849936082476347],"rgb":[0,0.933333333333333348,0.4],"xyz":[0.329712146381857141,0.621056005679465395,0.22820626730374638],"hpluv":[133.955863991345211,272.166364406401044,82.9695459516691756],"hsluv":[133.955863991345211,99.9999999999909193,82.9695459516691756]},"#00ee77":{"lch":[83.167051813506589,102.679799146220446,136.771308753659213],"luv":[83.167051813506589,-74.8151450958190338,70.3266323450776127],"rgb":[0,0.933333333333333348,0.466666666666666674],"xyz":[0.339026159402059046,0.624781610887546246,0.277260069210144289],"hpluv":[136.771308753659213,259.776444306911685,83.167051813506589],"hsluv":[136.771308753659213,99.9999999999910898,83.167051813506589]},"#00ee88":{"lch":[83.4022585136551839,95.7389522528198427,140.46074817536558],"luv":[83.4022585136551839,-73.8327925713246742,60.9480575538504],"rgb":[0,0.933333333333333348,0.533333333333333326],"xyz":[0.350166576504002847,0.629237777728323788,0.335932932613716428],"hpluv":[140.46074817536558,246.149488794882956,83.4022585136551839],"hsluv":[140.46074817536558,99.999999999991033,83.4022585136551839]},"#00ee99":{"lch":[83.6765199188301096,88.5221307628359142,145.258543938418427],"luv":[83.6765199188301096,-72.7414610621927,50.4464813176313],"rgb":[0,0.933333333333333348,0.6],"xyz":[0.363223540613075602,0.634460563371953,0.404699610254834363],"hpluv":[145.258543938418427,231.96752956627526,83.6765199188301096],"hsluv":[145.258543938418427,99.9999999999911,83.6765199188301096]},"#00eeaa":{"lch":[83.9909442670452364,81.4671227341597159,151.444498676017645],"luv":[83.9909442670452364,-71.557012704351564,38.9420854527837363],"rgb":[0,0.933333333333333348,0.66666666666666663],"xyz":[0.378281233578328102,0.640483640558054068,0.484003459871832964],"hpluv":[151.444498676017645,218.263507316576721,83.9909442670452364],"hsluv":[151.444498676017645,99.9999999999911893,83.9909442670452364]},"#00eebb":{"lch":[84.3464103530465366,75.1511025294100392,159.294479220170871],"luv":[84.3464103530465366,-70.2970903476626319,26.5707978811035801],"rgb":[0,0.933333333333333348,0.733333333333333282],"xyz":[0.395418825685664777,0.647338677400988827,0.57426144497047471],"hpluv":[159.294479220170871,206.543608310772072,84.3464103530465366],"hsluv":[159.294479220170871,99.9999999999912,84.3464103530465366]},"#00eecc":{"lch":[84.743580800257746,70.2844566194431195,168.945018717488722],"luv":[84.743580800257746,-68.9802322625990456,13.4771064879770393],"rgb":[0,0.933333333333333348,0.8],"xyz":[0.414711201129386531,0.655055627578477684,0.675867955640744866],"hpluv":[168.945018717488722,198.871854707918374,84.743580800257746],"hsluv":[168.945018717488722,99.9999999999913,84.743580800257746]},"#00eedd":{"lch":[85.1829138464002114,67.6253239558150625,180.163192871920216],"luv":[85.1829138464002114,-67.6250496492668418,-0.192613766721418916],"rgb":[0,0.933333333333333348,0.866666666666666696],"xyz":[0.43622952668002,0.66366295779873119,0.789197803540750864],"hpluv":[180.163192871920216,197.760624486431198,85.1829138464002114],"hsluv":[180.163192871920216,99.9999999999913882,85.1829138464002114]},"#00eeee":{"lch":[85.6646745174910507,67.7744082531008303,192.177050630061217],"luv":[85.6646745174910507,-66.2495152673009358,-14.2958784586901881],"rgb":[0,0.933333333333333348,0.933333333333333348],"xyz":[0.460041706946194784,0.673187829905201207,0.914608619609274087],"hpluv":[192.177050630061217,205.696714727687493,85.6646745174910507],"hsluv":[192.177050630061217,99.9999999999914309,85.6646745174910507]},"#00eeff":{"lch":[86.1889457184888,70.9350767712842867,203.864647638418489],"luv":[86.1889457184888,-64.8703943995767247,-28.6987290135183635],"rgb":[0,0.933333333333333348,1],"xyz":[0.486212755356026149,0.683656249269133931,1.05244280790105593],"hpluv":[203.864647638418489,224.453619733699583,86.1889457184888],"hsluv":[203.864647638418489,99.9999999999939888,86.1889457184888]},"#00ff00":{"lch":[87.7355191096597338,135.789531996666284,127.715012949240474],"luv":[87.7355191096597338,-83.0671197143942663,107.418111239344327],"rgb":[0,1,0],"xyz":[0.35758433938387,0.71516867876775,0.11919477979462],"hpluv":[127.715012949240474,490.145375063702204,87.7355191096597338],"hsluv":[127.715012949240474,100.000000000002217,87.7355191096597338]},"#00ff11":{"lch":[87.7550810882892165,135.01527678270574,127.917210072153054],"luv":[87.7550810882892165,-82.9698837721702915,106.513489059100834],"rgb":[0,1,0.0666666666666666657],"xyz":[0.358596004883507125,0.715573344967604941,0.124522884759375632],"hpluv":[127.917210072153054,488.208403570135204,87.7550810882892165],"hsluv":[127.917210072153054,99.9999999999917719,87.7550810882892165]},"#00ff22":{"lch":[87.7913242833811864,133.592052176160422,128.296258949772664],"luv":[87.7913242833811864,-82.7907071985999892,104.845291769319132],"rgb":[0,1,0.133333333333333331],"xyz":[0.360471363021984181,0.716323488222995741,0.134399770955354825],"hpluv":[128.296258949772664,484.641757887342919,87.7913242833811864],"hsluv":[128.296258949772664,99.9999999999919,87.7913242833811864]},"#00ff33":{"lch":[87.850943105558116,131.282721750620482,128.932531697131338],"luv":[87.850943105558116,-82.4986966230128616,102.123053644879462],"rgb":[0,1,0.2],"xyz":[0.363559113754441887,0.717558588515978868,0.150661924812965975],"hpluv":[128.932531697131338,478.837727878060548,87.850943105558116],"hsluv":[128.932531697131338,99.999999999991843,87.850943105558116]},"#00ff44":{"lch":[87.9368982766027756,128.022939247233296,129.878593634905172],"luv":[87.9368982766027756,-82.0835673214571528,98.245411848516369],"rgb":[0,1,0.266666666666666663],"xyz":[0.368017108998660802,0.719341786613666434,0.174140699765852613],"hpluv":[129.878593634905172,470.610169071279643,87.9368982766027756],"hsluv":[129.878593634905172,99.9999999999916724,87.9368982766027756]},"#00ff55":{"lch":[88.0516385770734189,123.799916713223595,131.196479790431113],"luv":[88.0516385770734189,-81.5399771501718362,93.1539129857171133],"rgb":[0,1,0.333333333333333315],"xyz":[0.373979523038022788,0.721726752229411184,0.205542747039826501],"hpluv":[131.196479790431113,459.892953467552729,88.0516385770734189],"hsluv":[131.196479790431113,99.9999999999917719,88.0516385770734189]},"#00ff66":{"lch":[88.197238997611,118.653311588493224,132.964137709394919],"luv":[88.197238997611,-80.8670327043222557,86.8281715373192498],"rgb":[0,1,0.4],"xyz":[0.381564518811531,0.724760750538814502,0.245490391446970491],"hpluv":[132.964137709394919,446.748834194207859,88.197238997611],"hsluv":[132.964137709394919,99.9999999999917719,88.197238997611]},"#00ff77":{"lch":[88.3754745956423164,112.679107800887323,135.2824164931273],"luv":[88.3754745956423164,-80.0679233099649537,79.2824633297525452],"rgb":[0,1,0.466666666666666674],"xyz":[0.390878531831732878,0.728486355746895353,0.2945441933533684],"hpluv":[135.2824164931273,431.3936933951166,88.3754745956423164],"hsluv":[135.2824164931273,99.9999999999915445,88.3754745956423164]},"#00ff88":{"lch":[88.587864465470858,106.036155512425779,138.2828406903445],"luv":[88.587864465470858,-79.1495135423216425,70.5621767086956311],"rgb":[0,1,0.533333333333333326],"xyz":[0.402018948933676679,0.732942522587672896,0.353217056756940539],"hpluv":[138.2828406903445,414.239888157084465,88.587864465470858],"hsluv":[138.2828406903445,99.9999999999914,88.587864465470858]},"#00ff99":{"lch":[88.8357000190422,98.9561663203651278,142.1349886621461],"luv":[88.8357000190422,-78.1218422027535695,60.739613298668921],"rgb":[0,1,0.6],"xyz":[0.415075913042749378,0.738165308231302109,0.421983734398058474],"hpluv":[142.1349886621461,395.967958147281365,88.8357000190422],"hsluv":[142.1349886621461,99.9999999999915303,88.8357000190422]},"#00ffaa":{"lch":[89.1200644426462674,91.7580340339716258,147.049061977519528],"luv":[89.1200644426462674,-76.997527549554917,49.9090929694682828],"rgb":[0,1,0.66666666666666663],"xyz":[0.430133606008001934,0.744188385417403175,0.501287584015057],"hpluv":[147.049061977519528,377.639750156066668,89.1200644426462674],"hsluv":[147.049061977519528,99.9999999999913,89.1200644426462674]},"#00ffbb":{"lch":[89.4418470234824241,84.8653215767476468,153.262243037154207],"luv":[89.4418470234824241,-75.791105608661141,38.1815546689964407],"rgb":[0,1,0.733333333333333282],"xyz":[0.447271198115338608,0.751043422260337934,0.591545569113698821],"hpluv":[153.262243037154207,360.863433446149145,89.4418470234824241],"hsluv":[153.262243037154207,99.9999999999912,89.4418470234824241]},"#00ffcc":{"lch":[89.801754487955634,78.8187300060100569,160.986090443114392],"luv":[89.801754487955634,-74.5183415032407197,25.6789598575702236],"rgb":[0,1,0.8],"xyz":[0.466563573559060307,0.758760372437826791,0.693152079783969],"hpluv":[160.986090443114392,347.997153451554084,89.801754487955634],"hsluv":[160.986090443114392,99.9999999999912461,89.801754487955634]},"#00ffdd":{"lch":[90.2003206582774339,74.260092310928,170.286849800478649],"luv":[90.2003206582774339,-73.1955569867131572,12.5288366352336915],"rgb":[0,1,0.866666666666666696],"xyz":[0.488081899109693906,0.767367702658080297,0.806481927683975],"hpluv":[170.286849800478649,342.308208972166483,90.2003206582774339],"hsluv":[170.286849800478649,99.9999999999913314,90.2003206582774339]},"#00ffee":{"lch":[90.6379152481429458,71.8480695265374294,180.909719109957],"luv":[90.6379152481429458,-71.8390133400929898,-1.14072652818200426],"rgb":[0,1,0.933333333333333348],"xyz":[0.511894079375868616,0.776892574764550314,0.931892743752498198],"hpluv":[180.909719109957,347.895283980605143,90.6379152481429458],"hsluv":[180.909719109957,99.999999999991374,90.6379152481429458]},"#00ffff":{"lch":[91.114752316705065,72.0862882649682,192.17705063006116],"luv":[91.114752316705065,-70.4643799638718207,-15.205397466925735],"rgb":[0,1,1],"xyz":[0.5380651277857,0.787360994128483,1.06972693204428],"hpluv":[192.17705063006116,369.190533917051368,91.114752316705065],"hsluv":[192.17705063006116,99.9999999999914877,91.114752316705065]},"#ff0000":{"lch":[53.23711559542933,179.038096923620287,12.1770506300617765],"luv":[53.23711559542933,175.009822162883836,37.7650936255616],"rgb":[1,0,0],"xyz":[0.41239079926595,0.21263900587151,0.019330818715591],"hpluv":[12.1770506300617765,426.746789183125202,53.23711559542933],"hsluv":[12.1770506300617765,100.000000000002203,53.23711559542933]},"#ff0011":{"lch":[53.2810087118185294,177.689248384364731,11.7592124156573554],"luv":[53.2810087118185294,173.960033822228979,36.2129206771479346],"rgb":[1,0,0.0666666666666666657],"xyz":[0.413402464765587119,0.213043672071364848,0.0246589236803466325],"hpluv":[11.7592124156573554,423.182830024727082,53.2810087118185294],"hsluv":[11.7592124156573554,99.9999999999986073,53.2810087118185294]},"#ff0022":{"lch":[53.362228057366309,175.255817292919801,10.9800713678561319],"luv":[53.362228057366309,172.047495148921342,33.3805468497921751],"rgb":[1,0,0.133333333333333331],"xyz":[0.415277822904064176,0.213793815326755676,0.0345358098763258251],"hpluv":[10.9800713678561319,416.75211680728853,53.362228057366309],"hsluv":[10.9800713678561319,99.9999999999986215,53.362228057366309]},"#ff0033":{"lch":[53.4955416476677499,171.43316235878109,9.68478250033725],"luv":[53.4955416476677499,168.989928530586468,28.8397852204116347],"rgb":[1,0,0.2],"xyz":[0.418365573636521881,0.215028915619738775,0.0507979637339369683],"hpluv":[9.68478250033725,406.646064741178918,53.4955416476677499],"hsluv":[9.68478250033725,99.9999999999986215,53.4955416476677499]},"#ff0044":{"lch":[53.6871179383659722,166.29954793496961,7.78930386328567259],"luv":[53.6871179383659722,164.765128442936401,22.5386799204815809],"rgb":[1,0,0.266666666666666663],"xyz":[0.422823568880740797,0.216812113717426369,0.0742767386868236],"hpluv":[7.78930386328567259,393.061316669856922,53.6871179383659722],"hsluv":[7.78930386328567259,99.9999999999987637,53.6871179383659722]},"#ff0055":{"lch":[53.9417095924386558,160.100368719231,5.2128969892355661],"luv":[53.9417095924386558,159.438189183864722,14.5461986032050437],"rgb":[1,0,0.333333333333333315],"xyz":[0.428785982920102782,0.219197079333171202,0.105678785960797522],"hpluv":[5.2128969892355661,376.623098544524225,53.9417095924386558],"hsluv":[5.2128969892355661,99.9999999999988,53.9417095924386558]},"#ff0066":{"lch":[54.2629295430466669,153.227313284557312,1.88082466234467849],"luv":[54.2629295430466669,153.144763004983872,5.02902580538230204],"rgb":[1,0,0.4],"xyz":[0.436370978693610967,0.222231077642574493,0.145626430367941484],"hpluv":[1.88082466234467849,358.321012364802243,54.2629295430466669],"hsluv":[1.88082466234467849,99.99999999999892,54.2629295430466669]},"#ff0077":{"lch":[54.6533978532017244,146.184101175375929,357.735148851436577],"luv":[54.6533978532017244,146.06990602550718,-5.77702260269427281],"rgb":[1,0,0.466666666666666674],"xyz":[0.445684991713812872,0.225956682850655316,0.194680232274339393],"hpluv":[357.735148851436577,339.408176675868503,54.6533978532017244],"hsluv":[357.735148851436577,99.9999999999990479,54.6533978532017244]},"#ff0088":{"lch":[55.1148373309560782,139.538803635294983,352.754628092234327],"luv":[55.1148373309560782,138.424605854630585,-17.5984719211521572],"rgb":[1,0,0.533333333333333326],"xyz":[0.456825408815756673,0.230412849691432914,0.253353095677911533],"hpluv":[352.754628092234327,321.26675874055752,55.1148373309560782],"hsluv":[352.754628092234327,99.9999999999991616,55.1148373309560782]},"#ff0099":{"lch":[55.6481496721619493,133.863929319774144,346.981903482220218],"luv":[55.6481496721619493,130.423488026195145,-30.1540269949209758],"rgb":[1,0,0.6],"xyz":[0.469882372924829372,0.235635635335062071,0.322119773319029468],"hpluv":[346.981903482220218,305.247535929832054,55.6481496721619493],"hsluv":[346.981903482220218,99.9999999999993463,55.6481496721619493]},"#ff00aa":{"lch":[56.2534865150640258,129.667114810270476,340.549180922221581],"luv":[56.2534865150640258,122.266710865918853,-43.1788383036143273],"rgb":[1,0,0.66666666666666663],"xyz":[0.484940065890081928,0.241658712521163166,0.401423622936028068],"hpluv":[340.549180922221581,292.495864077812769,56.2534865150640258],"hsluv":[340.549180922221581,99.9999999999994742,56.2534865150640258]},"#ff00bb":{"lch":[56.9303217870161689,127.321325924901956,333.685619315648239],"luv":[56.9303217870161689,114.127678427447606,-56.4410582115202928],"rgb":[1,0,0.733333333333333282],"xyz":[0.502077657997418547,0.248513749364097924,0.491681608034669815],"hpluv":[333.685619315648239,283.789838362024682,56.9303217870161689],"hsluv":[333.685619315648239,99.9999999999995879,56.9303217870161689]},"#ff00cc":{"lch":[57.6775275187384153,127.012826563172382,326.690520651062286],"luv":[57.6775275187384153,106.146716951325558,-69.7505024499586312],"rgb":[1,0,0.8],"xyz":[0.521370033441140301,0.256230699541586726,0.593288118704939915],"hpluv":[326.690520651062286,279.434659423159303,57.6775275187384153],"hsluv":[326.690520651062286,99.9999999999997726,57.6775275187384153]},"#ff00dd":{"lch":[58.4934529509690151,128.727977043064641,319.874434183361473],"luv":[58.4934529509690151,98.4297766537384149,-82.9606602040687],"rgb":[1,0,0.866666666666666696],"xyz":[0.542888358991773901,0.264838029761840288,0.706617966604945913],"hpluv":[319.874434183361473,279.257606739571429,58.4934529509690151],"hsluv":[319.874434183361473,99.9999999999999716,58.4934529509690151]},"#ff00ee":{"lch":[59.3760054748790367,132.286429048213932,313.494468670954461],"luv":[59.3760054748790367,91.0507046157626,-95.9659757377649214],"rgb":[1,0,0.933333333333333348],"xyz":[0.56670053925794861,0.274362901868310305,0.832028782673469136],"hpluv":[313.494468670954461,282.711609251625362,59.3760054748790367],"hsluv":[313.494468670954461,100.000000000000156,59.3760054748790367]},"#ff00ff":{"lch":[60.3227313545512942,137.405400537897037,307.715012949243601],"luv":[60.3227313545512942,84.0556019897527875,-108.696365491768773],"rgb":[1,0,1],"xyz":[0.59287158766778,0.284831321232243,0.969862970965251],"hpluv":[307.715012949243601,289.042783730483336,60.3227313545512942],"hsluv":[307.715012949243601,100.000000000000384,60.3227313545512942]},"#ff1100":{"lch":[53.6695097624616864,176.771562285449363,12.5954542867932275],"luv":[53.6695097624616864,172.517389506501019,38.5478345786208934],"rgb":[1,0.0666666666666666657,0],"xyz":[0.414395199526878422,0.216647806393366865,0.019998952135900451],"hpluv":[12.5954542867932275,417.949777534481484,53.6695097624616864],"hsluv":[12.5954542867932275,100.000000000002245,53.6695097624616864]},"#ff1111":{"lch":[53.7128602445647658,175.445128796306847,12.1770506300617765],"luv":[53.7128602445647658,171.497694164414924,37.0072170615611569],"rgb":[1,0.0666666666666666657,0.0666666666666666657],"xyz":[0.415406865026515526,0.217052472593221718,0.0253270571006560807],"hpluv":[12.1770506300617765,414.478837946685644,53.7128602445647658],"hsluv":[12.1770506300617765,99.9999999999986215,53.7128602445647658]},"#ff1122":{"lch":[53.7930781791116743,173.051572118951754,11.3967197916969329],"luv":[53.7930781791116743,169.639425839354459,34.1952016185739538],"rgb":[1,0.0666666666666666657,0.133333333333333331],"xyz":[0.417282223164992583,0.217802615848612546,0.0352039432966352803],"hpluv":[11.3967197916969329,408.214548988049671,53.7930781791116743],"hsluv":[11.3967197916969329,99.9999999999987,53.7930781791116743]},"#ff1133":{"lch":[53.9247555399676912,169.290109899416,10.0990648343251674],"luv":[53.9247555399676912,166.667136068812482,29.6851320424264138],"rgb":[1,0.0666666666666666657,0.2],"xyz":[0.420369973897450289,0.219037716141595645,0.0514660971542464235],"hpluv":[10.0990648343251674,398.366425235699353,53.9247555399676912],"hsluv":[10.0990648343251674,99.9999999999987,53.9247555399676912]},"#ff1144":{"lch":[54.1139966850166445,164.235972949617775,8.19925898659400154],"luv":[54.1139966850166445,162.55716522781,23.4226993279181244],"rgb":[1,0.0666666666666666657,0.266666666666666663],"xyz":[0.424827969141669204,0.220820914239283239,0.074944872107133062],"hpluv":[8.19925898659400154,385.121711929848118,54.1139966850166445],"hsluv":[8.19925898659400154,99.9999999999988489,54.1139966850166445]},"#ff1155":{"lch":[54.365514290002,158.12888296709221,5.61535385404219856],"luv":[54.365514290002,157.370056367003059,15.4728467796533362],"rgb":[1,0.0666666666666666657,0.333333333333333315],"xyz":[0.430790383181031189,0.223205879855028072,0.106346919381106964],"hpluv":[5.61535385404219856,369.085538340858477,54.365514290002],"hsluv":[5.61535385404219856,99.9999999999988916,54.365514290002]},"#ff1166":{"lch":[54.6829025612910442,151.353597545298243,2.27091305216541839],"luv":[54.6829025612910442,151.234730451097789,5.99731567352495443],"rgb":[1,0.0666666666666666657,0.4],"xyz":[0.438375378954539374,0.226239878164431363,0.146294563788250925],"hpluv":[2.27091305216541839,351.221033033747858,54.6829025612910442],"hsluv":[2.27091305216541839,99.999999999999,54.6829025612910442]},"#ff1177":{"lch":[55.0687823252034292,144.407362773795285,358.105880212246802],"luv":[55.0687823252034292,144.328460520523464,-4.77303960367160496],"rgb":[1,0.0666666666666666657,0.466666666666666674],"xyz":[0.44768939197474128,0.229965483372512186,0.195348365694648834],"hpluv":[358.105880212246802,332.753927221166919,55.0687823252034292],"hsluv":[358.105880212246802,99.9999999999990905,55.0687823252034292]},"#ff1188":{"lch":[55.5248949860500716,137.85386672349216,353.096828842063303],"luv":[55.5248949860500716,136.85452147125136,-16.5689023019976744],"rgb":[1,0.0666666666666666657,0.533333333333333326],"xyz":[0.45882980907668508,0.234421650213289784,0.254021229098221],"hpluv":[353.096828842063303,315.043506786171235,55.5248949860500716],"hsluv":[353.096828842063303,99.9999999999992,55.5248949860500716]},"#ff1199":{"lch":[56.0521767726019249,132.264360312052816,347.28491936957397],"luv":[56.0521767726019249,129.020794472918823,-29.1117777254046715],"rgb":[1,0.0666666666666666657,0.6],"xyz":[0.47188677318575778,0.239644435856918941,0.322787906739338937],"hpluv":[347.28491936957397,299.426117704125659,56.0521767726019249],"hsluv":[347.28491936957397,99.9999999999993605,56.0521767726019249]},"#ff11aa":{"lch":[56.6508275614924912,128.148315107741439,340.802676353967],"luv":[56.6508275614924912,121.022209124101792,-42.1380536294115586],"rgb":[1,0.0666666666666666657,0.66666666666666663],"xyz":[0.486944466151010336,0.245667513043020036,0.402091756356337537],"hpluv":[340.802676353967,287.042344439162662,56.6508275614924912],"hsluv":[340.802676353967,99.9999999999995168,56.6508275614924912]},"#ff11bb":{"lch":[57.3203806938084455,125.882364893771992,333.882217516525884],"luv":[57.3203806938084455,113.02864145467457,-55.4156656746030762],"rgb":[1,0.0666666666666666657,0.733333333333333282],"xyz":[0.504082058258347,0.252522549885954795,0.492349741454979284],"hpluv":[333.882217516525884,278.673167271969135,57.3203806938084455],"hsluv":[333.882217516525884,99.9999999999996163,57.3203806938084455]},"#ff11cc":{"lch":[58.0597760671947754,125.656277294901628,326.828156543045054],"luv":[58.0597760671947754,105.178488239830273,-68.7530772780178694],"rgb":[1,0.0666666666666666657,0.8],"xyz":[0.523374433702068709,0.260239500063443596,0.593956252125249384],"hpluv":[326.828156543045054,274.630115267561905,58.0597760671947754],"hsluv":[326.828156543045054,99.9999999999997868,58.0597760671947754]},"#ff11dd":{"lch":[58.8674364673636177,127.458097444326981,319.957026901825429],"luv":[58.8674364673636177,97.5770916499376568,-82.0016938195011846],"rgb":[1,0.0666666666666666657,0.866666666666666696],"xyz":[0.544892759252702308,0.268846830283697158,0.707286100025255382],"hpluv":[319.957026901825429,274.746161939823423,58.8674364673636177],"hsluv":[319.957026901825429,100.000000000000028,58.8674364673636177]},"#ff11ee":{"lch":[59.7413458233107519,131.106916258937218,313.5305052972667],"luv":[59.7413458233107519,90.2986667085849319,-95.0535337669245877],"rgb":[1,0.0666666666666666657,0.933333333333333348],"xyz":[0.568704939518877,0.278371702390167175,0.832696916093778605],"hpluv":[313.5305052972667,278.477381794919836,59.7413458233107519],"hsluv":[313.5305052972667,100.000000000000199,59.7413458233107519]},"#ff11ff":{"lch":[60.6791274610807534,136.317870534400242,307.715012949243601],"luv":[60.6791274610807534,83.3903225409976,-107.83606045076894],"rgb":[1,0.0666666666666666657,1],"xyz":[0.594875987928708438,0.288840121754099899,0.97053110438556045],"hpluv":[307.715012949243601,285.070838096226908,60.6791274610807534],"hsluv":[307.715012949243601,100.000000000000398,60.6791274610807534]},"#ff2200":{"lch":[54.4571507543770679,172.725520469573979,13.3786813235288875],"luv":[54.4571507543770679,168.038102184023103,39.9662562154253393],"rgb":[1,0.133333333333333331,0],"xyz":[0.418110823261646336,0.224079053862902833,0.0212374933808230602],"hpluv":[13.3786813235288875,402.476865089738737,54.4571507543770679],"hsluv":[13.3786813235288875,100.00000000000216,54.4571507543770679]},"#ff2211":{"lch":[54.4995382972682876,171.437527349711331,12.9593558016228254],"luv":[54.4995382972682876,167.070909686171433,38.446546274251638],"rgb":[1,0.133333333333333331,0.0666666666666666657],"xyz":[0.41912248876128344,0.224483720062757686,0.0265655983455786934],"hpluv":[12.9593558016228254,399.164948195999784,54.4995382972682876],"hsluv":[12.9593558016228254,99.999999999998721,54.4995382972682876]},"#ff2222":{"lch":[54.5779789595956117,169.112342257331477,12.1770506300617924],"luv":[54.5779789595956117,165.307392407273255,35.6714216042562171],"rgb":[1,0.133333333333333331,0.133333333333333331],"xyz":[0.420997846899760497,0.225233863318148514,0.036442484541557886],"hpluv":[12.1770506300617924,393.185217729465933,54.5779789595956117],"hsluv":[12.1770506300617924,99.9999999999987494,54.5779789595956117]},"#ff2233":{"lch":[54.7067518227456,165.455769736233549,10.8753803895539445],"luv":[54.7067518227456,162.484163442906947,31.2171166072114978],"rgb":[1,0.133333333333333331,0.2],"xyz":[0.424085597632218203,0.226468963611131613,0.0527046383991690293],"hpluv":[10.8753803895539445,383.778210348001721,54.7067518227456],"hsluv":[10.8753803895539445,99.9999999999987779,54.7067518227456]},"#ff2244":{"lch":[54.8918465894738148,160.537768894747074,8.96806115251763103],"luv":[54.8918465894738148,158.575257224785304,25.0252480066910863],"rgb":[1,0.133333333333333331,0.266666666666666663],"xyz":[0.428543592876437118,0.228252161708819207,0.0761834133520556678],"hpluv":[8.96806115251763103,371.115171122776133,54.8918465894738148],"hsluv":[8.96806115251763103,99.9999999999988347,54.8918465894738148]},"#ff2255":{"lch":[55.1379036013317432,154.588213330392733,6.3708707633682522],"luv":[55.1379036013317432,153.633547891150499,17.1536778289841081],"rgb":[1,0.133333333333333331,0.333333333333333315],"xyz":[0.434506006915799103,0.23063712732456404,0.107585460626029583],"hpluv":[6.3708707633682522,355.76683037739258,55.1379036013317432],"hsluv":[6.3708707633682522,99.9999999999989342,55.1379036013317432]},"#ff2266":{"lch":[55.4484819892530254,147.979820726080618,3.00414546296194196],"luv":[55.4484819892530254,147.776458796099433,7.75535736170059753],"rgb":[1,0.133333333333333331,0.4],"xyz":[0.442091002689307289,0.23367112563396733,0.147533105033173545],"hpluv":[3.00414546296194196,338.650844053811227,55.4484819892530254],"hsluv":[3.00414546296194196,99.9999999999990763,55.4484819892530254]},"#ff2277":{"lch":[55.8262016697843961,141.198613687408425,358.803757025958646],"luv":[55.8262016697843961,141.167840095073672,-2.94778393674187145],"rgb":[1,0.133333333333333331,0.466666666666666674],"xyz":[0.451405015709509194,0.237396730842048154,0.196586906939571454],"hpluv":[358.803757025958646,320.945787006908631,55.8262016697843961],"hsluv":[358.803757025958646,99.9999999999991616,55.8262016697843961]},"#ff2288":{"lch":[56.2728344602164299,134.800794021339357,353.742009538390391],"luv":[56.2728344602164299,133.997535770156077,-14.694028593592142],"rgb":[1,0.133333333333333331,0.533333333333333326],"xyz":[0.462545432811453,0.241852897682825752,0.255259770343143622],"hpluv":[353.742009538390391,303.971583410200083,56.2728344602164299],"hsluv":[353.742009538390391,99.9999999999992752,56.2728344602164299]},"#ff2299":{"lch":[56.7893750973531866,129.355771045476672,347.857065824102108],"luv":[56.7893750973531866,126.461550291410035,-27.2101415039127161],"rgb":[1,0.133333333333333331,0.6],"xyz":[0.47560239692052575,0.247075683326454909,0.324026447984261501],"hpluv":[347.857065824102108,289.040064659782502,56.7893750973531866],"hsluv":[347.857065824102108,99.9999999999994316,56.7893750973531866]},"#ff22aa":{"lch":[57.3761062638205743,125.376808270539939,341.281866819384959],"luv":[57.3761062638205743,118.745473604842076,-40.2350164715945766],"rgb":[1,0.133333333333333331,0.66666666666666663],"xyz":[0.49066008988577825,0.253098760512556031,0.403330297601260102],"hpluv":[341.281866819384959,277.284417349873706,57.3761062638205743],"hsluv":[341.281866819384959,99.999999999999531,57.3761062638205743]},"#ff22bb":{"lch":[58.0326640845464112,123.247659375493754,334.254064951888324],"luv":[58.0326640845464112,111.01274832153284,-53.5364852379920606],"rgb":[1,0.133333333333333331,0.733333333333333282],"xyz":[0.507797681993114924,0.25995379735549079,0.493588282699901848],"hpluv":[334.254064951888324,269.491764983662165,58.0326640845464112],"hsluv":[334.254064951888324,99.9999999999997726,58.0326640845464112]},"#ff22cc":{"lch":[58.7581065478829316,123.164795236141373,327.088444575119183],"luv":[58.7581065478829316,103.398114188518221,-66.9208246199849128],"rgb":[1,0.133333333333333331,0.8],"xyz":[0.527090057436836679,0.267670747532979592,0.595194793370172],"hpluv":[327.088444575119183,265.985598747154427,58.7581065478829316],"hsluv":[327.088444575119183,99.9999999999998721,58.7581065478829316]},"#ff22dd":{"lch":[59.550985046801415,125.119413407905796,320.113090366201448],"luv":[59.550985046801415,96.0055877759378,-80.2358693312108358],"rgb":[1,0.133333333333333331,0.866666666666666696],"xyz":[0.548608382987470167,0.276278077753233098,0.708524641270178],"hpluv":[320.113090366201448,266.609166102550091,59.550985046801415],"hsluv":[320.113090366201448,100.000000000000028,59.550985046801415]},"#ff22ee":{"lch":[60.4094179672163705,128.929416765847606,313.598505937960113],"luv":[60.4094179672163705,88.9098108664153273,-93.3693742041783281],"rgb":[1,0.133333333333333331,0.933333333333333348],"xyz":[0.572420563253645,0.285802949859703115,0.833935457338701225],"hpluv":[313.598505937960113,270.823716236275,60.4094179672163705],"hsluv":[313.598505937960113,100.000000000000227,60.4094179672163705]},"#ff22ff":{"lch":[61.3311646171935223,134.305840538380238,307.715012949243601],"luv":[61.3311646171935223,82.1594946996257249,-106.244417422389745],"rgb":[1,0.133333333333333331,1],"xyz":[0.598591611663476297,0.296271369223635839,0.97176964563048307],"hpluv":[307.715012949243601,277.877263991976,61.3311646171935223],"hsluv":[307.715012949243601,100.000000000000398,61.3311646171935223]},"#ff3300":{"lch":[55.7168894472394811,166.476173059961667,14.689559134518138],"luv":[55.7168894472394811,161.034729269155179,42.2153072463082495],"rgb":[1,0.2,0],"xyz":[0.424228545350657182,0.236314498040924637,0.0232767340771599419],"hpluv":[14.689559134518138,379.144314271077917,55.7168894472394811],"hsluv":[14.689559134518138,100.000000000002203,55.7168894472394811]},"#ff3311":{"lch":[55.7578022303213,165.243627812887922,14.2690908575150317],"luv":[55.7578022303213,160.145669888681539,40.7286256663500339],"rgb":[1,0.2,0.0666666666666666657],"xyz":[0.425240210850294287,0.236719164240779489,0.0286048390419155751],"hpluv":[14.2690908575150317,376.06108995847427,55.7578022303213],"hsluv":[14.2690908575150317,99.9999999999988,55.7578022303213]},"#ff3322":{"lch":[55.8335204651182835,163.01701714894287,13.4842232594842422],"luv":[55.8335204651182835,158.523316810386802,38.0119179675594552],"rgb":[1,0.2,0.133333333333333331],"xyz":[0.427115568988771344,0.237469307496170318,0.0384817252378947677],"hpluv":[13.4842232594842422,370.490653647292163,55.8335204651182835],"hsluv":[13.4842232594842422,99.9999999999987494,55.8335204651182835]},"#ff3333":{"lch":[55.9578428172660267,159.511521097175432,12.1770506300617853],"luv":[55.9578428172660267,155.922585303490365,33.6462888742638455],"rgb":[1,0.2,0.2],"xyz":[0.430203319721229049,0.238704407789153417,0.0547438790955059179],"hpluv":[12.1770506300617853,361.718248261175631,55.9578428172660267],"hsluv":[12.1770506300617853,99.9999999999988773,55.9578428172660267]},"#ff3344":{"lch":[56.1365811585215368,154.789240798906889,10.2588910791084782],"luv":[56.1365811585215368,152.31463646984821,27.5673826135157078],"rgb":[1,0.2,0.266666666666666663],"xyz":[0.434661314965447965,0.240487605886841,0.0782226540483925564],"hpluv":[10.2588910791084782,349.892100101075414,56.1365811585215368],"hsluv":[10.2588910791084782,99.9999999999989626,56.1365811585215368]},"#ff3355":{"lch":[56.3742616664660403,149.065442517766684,7.64169944339336649],"luv":[56.3742616664660403,147.741595680550319,19.8223878173745902],"rgb":[1,0.2,0.333333333333333315],"xyz":[0.44062372900480995,0.242872571502585843,0.109624701322366458],"hpluv":[7.64169944339336649,335.533149366899124,56.3742616664660403],"hsluv":[7.64169944339336649,99.9999999999990195,56.3742616664660403]},"#ff3366":{"lch":[56.674385203130754,142.694983818340035,4.24028319431916056],"luv":[56.674385203130754,142.304390380845462,10.550776523662277],"rgb":[1,0.2,0.4],"xyz":[0.448208724778318135,0.245906569811989134,0.14957234572951042],"hpluv":[4.24028319431916056,319.492902958598108,56.674385203130754],"hsluv":[4.24028319431916056,99.9999999999991758,56.674385203130754]},"#ff3377":{"lch":[57.0395646827704468,136.14730874514737,359.983392279567909],"luv":[57.0395646827704468,136.147303025702882,-0.0394635770517579934],"rgb":[1,0.2,0.466666666666666674],"xyz":[0.457522737798520041,0.249632175020069957,0.198626147635908329],"hpluv":[359.983392279567909,302.881107814185,57.0395646827704468],"hsluv":[359.983392279567909,99.9999999999992895,57.0395646827704468]},"#ff3388":{"lch":[57.4716120619286954,129.967879448766553,354.83565117969431],"luv":[57.4716120619286954,129.440287861866665,-11.6987848363070146],"rgb":[1,0.2,0.533333333333333326],"xyz":[0.468663154900463841,0.254088341860847555,0.257299011039480496],"hpluv":[354.83565117969431,286.960407533356261,57.4716120619286954],"hsluv":[354.83565117969431,99.9999999999993889,57.4716120619286954]},"#ff3399":{"lch":[57.9716047421228353,124.724336507791776,348.82951213288959],"luv":[57.9716047421228353,122.361442957788952,-24.1627273832372573],"rgb":[1,0.2,0.6],"xyz":[0.481720119009536596,0.259311127504476713,0.326065688680598431],"hpluv":[348.82951213288959,273.007894976207297,57.9716047421228353],"hsluv":[348.82951213288959,99.9999999999995737,57.9716047421228353]},"#ff33aa":{"lch":[58.5399451724763935,120.937271340322638,342.098036856126953],"luv":[58.5399451724763935,115.081956962752116,-37.174813797329108],"rgb":[1,0.2,0.66666666666666663],"xyz":[0.496777811974789096,0.265334204690577835,0.405369538297597032],"hpluv":[342.098036856126953,262.148381504719794,58.5399451724763935],"hsluv":[342.098036856126953,99.9999999999996732,58.5399451724763935]},"#ff33bb":{"lch":[59.1764201449825862,119.003132790944747,334.888094830460091],"luv":[59.1764201449825862,107.755032536641394,-50.5034511403585498],"rgb":[1,0.2,0.733333333333333282],"xyz":[0.513915404082125771,0.272189241533512594,0.495627523396238778],"hpluv":[334.888094830460091,255.181409444549388,59.1764201449825862],"hsluv":[334.888094830460091,99.9999999999998295,59.1764201449825862]},"#ff33cc":{"lch":[59.8802624584280494,119.13012657470172,327.532171012183937],"luv":[59.8802624584280494,100.509254029343069,-63.9521454852723039],"rgb":[1,0.2,0.8],"xyz":[0.533207779525847525,0.279906191711001395,0.597234034066508879],"hpluv":[327.532171012183937,252.451080902073329,59.8802624584280494],"hsluv":[327.532171012183937,100.000000000000043,59.8802624584280494]},"#ff33dd":{"lch":[60.650215463767978,121.314823858854638,320.378757122173454],"luv":[60.650215463767978,93.4460015542912146,-77.3636302238999747],"rgb":[1,0.2,0.866666666666666696],"xyz":[0.554726105076481,0.288513521931254902,0.710563881966514876],"hpluv":[320.378757122173454,253.817084039055629,60.650215463767978],"hsluv":[320.378757122173454,100.000000000000171,60.650215463767978]},"#ff33ee":{"lch":[61.484599762034378,125.372817174433621,313.71398784253438],"luv":[61.484599762034378,86.6400000332951805,-90.6192787462169775],"rgb":[1,0.2,0.933333333333333348],"xyz":[0.578538285342655723,0.298038394037724919,0.8359746980350381],"hpluv":[313.71398784253438,258.747618308410438,61.484599762034378],"hsluv":[313.71398784253438,100.000000000000242,61.484599762034378]},"#ff33ff":{"lch":[62.3813806681475,131.007738376122177,307.715012949243658],"luv":[62.3813806681475,80.141932350642,-103.635409940481253],"rgb":[1,0.2,1],"xyz":[0.604709333752487144,0.308506813401657642,0.97380888632682],"hpluv":[307.715012949243658,266.490230971107223,62.3813806681475],"hsluv":[307.715012949243658,100.000000000000597,62.3813806681475]},"#ff4400":{"lch":[57.461133143380664,158.273971604467,16.6278363926044079],"luv":[57.461133143380664,151.655533944896689,45.2907177172089845],"rgb":[1,0.266666666666666663,0],"xyz":[0.433061115833623222,0.253979639006856939,0.0262209242381485352],"hpluv":[16.6278363926044079,349.522099776260404,57.461133143380664],"hsluv":[16.6278363926044079,100.000000000002203,57.461133143380664]},"#ff4411":{"lch":[57.500127691013958,157.107055615985729,16.2066010587584444],"luv":[57.500127691013958,150.863862649088418,43.84885256105823],"rgb":[1,0.266666666666666663,0.0666666666666666657],"xyz":[0.434072781333260327,0.254384305206711792,0.031549029202904165],"hpluv":[16.2066010587584444,346.709871357654038,57.500127691013958],"hsluv":[16.2066010587584444,99.9999999999990195,57.500127691013958]},"#ff4422":{"lch":[57.5723039440668174,154.996970095022306,15.4196600073807488],"luv":[57.5723039440668174,149.417734299680745,41.2116660108183908],"rgb":[1,0.266666666666666663,0.133333333333333331],"xyz":[0.435948139471737384,0.255134448462102592,0.0414259153988833645],"hpluv":[15.4196600073807488,341.624434338608523,57.5723039440668174],"hsluv":[15.4196600073807488,99.9999999999990195,57.5723039440668174]},"#ff4433":{"lch":[57.6908335218327437,151.669616752661852,14.1071803519879388],"luv":[57.6908335218327437,147.095485225188412,36.9674298845038223],"rgb":[1,0.266666666666666663,0.2],"xyz":[0.439035890204195089,0.256369548755085719,0.0576880692564945077],"hpluv":[14.1071803519879388,333.603886972203838,57.6908335218327437],"hsluv":[14.1071803519879388,99.9999999999991189,57.6908335218327437]},"#ff4444":{"lch":[57.8612930010941682,147.177084719743902,12.177050630061812],"luv":[57.8612930010941682,143.865668066403089,31.0445457111261],"rgb":[1,0.266666666666666663,0.266666666666666663],"xyz":[0.443493885448414,0.258152746852773285,0.0811668442093811393],"hpluv":[12.177050630061812,322.76868159643891,57.8612930010941682],"hsluv":[12.177050630061812,99.9999999999991616,57.8612930010941682]},"#ff4455":{"lch":[58.088054010202,141.716285969530816,9.53556562214303405],"luv":[58.088054010202,139.758186425649882,23.4766913344092778],"rgb":[1,0.266666666666666663,0.333333333333333315],"xyz":[0.449456299487776,0.260537712468518146,0.112568891483355055],"hpluv":[9.53556562214303405,309.579547415252762,58.088054010202],"hsluv":[9.53556562214303405,99.9999999999992184,58.088054010202]},"#ff4466":{"lch":[58.3745334436288772,135.619673907166316,6.08910281061040859],"luv":[58.3745334436288772,134.854526247228307,14.3858507333331573],"rgb":[1,0.266666666666666663,0.4],"xyz":[0.457041295261284175,0.263571710777921464,0.152516535890499016],"hpluv":[6.08910281061040859,294.807548797669426,58.3745334436288772],"hsluv":[6.08910281061040859,99.9999999999992468,58.3745334436288772]},"#ff4477":{"lch":[58.7233249761193292,129.336052383116169,1.75519751784143763],"luv":[58.7233249761193292,129.275370036155351,3.96145782045869943],"rgb":[1,0.266666666666666663,0.466666666666666674],"xyz":[0.466355308281486081,0.26729731598600226,0.201570337796896926],"hpluv":[1.75519751784143763,279.478426792191101,58.7233249761193292],"hsluv":[1.75519751784143763,99.99999999999946,58.7233249761193292]},"#ff4488":{"lch":[59.1362810655005831,123.398173767481396,356.485857706034096],"luv":[59.1362810655005831,123.16614811103635,-7.56367957014252212],"rgb":[1,0.266666666666666663,0.533333333333333326],"xyz":[0.477495725383429881,0.271753482826779857,0.260243201200469065],"hpluv":[356.485857706034096,264.785408966002421,59.1362810655005831],"hsluv":[356.485857706034096,99.9999999999995595,59.1362810655005831]},"#ff4499":{"lch":[59.6145739069951901,118.37348532064955,350.303370213710309],"luv":[59.6145739069951901,116.682328099077466,-19.9378117238896806],"rgb":[1,0.266666666666666663,0.6],"xyz":[0.490552689492502636,0.276976268470409,0.329009878841587],"hpluv":[350.303370213710309,251.965637795338,59.6145739069951901],"hsluv":[350.303370213710309,99.9999999999997158,59.6145739069951901]},"#ff44aa":{"lch":[60.1587486598557177,114.795436800176844,343.339450530546515],"luv":[60.1587486598557177,109.976338996192666,-32.9119609129858475],"rgb":[1,0.266666666666666663,0.66666666666666663],"xyz":[0.505610382457755136,0.282999345656510137,0.408313728458585601],"hpluv":[343.339450530546515,242.139230170638513,60.1587486598557177],"hsluv":[343.339450530546515,99.9999999999997726,60.1587486598557177]},"#ff44bb":{"lch":[60.768775409955694,113.081121999454581,335.854341209703],"luv":[60.768775409955694,103.187483930843442,-46.2567110015126133],"rgb":[1,0.266666666666666663,0.733333333333333282],"xyz":[0.522747974565091811,0.289854382499444896,0.498571713557227347],"hpluv":[335.854341209703,236.128794952899398,60.768775409955694],"hsluv":[335.854341209703,99.9999999999999716,60.768775409955694]},"#ff44cc":{"lch":[61.4441027606342232,113.457557937670586,328.208302422827],"luv":[61.4441027606342232,96.4354118722023088,-59.7731443895883743],"rgb":[1,0.266666666666666663,0.8],"xyz":[0.542040350008813565,0.297571332676933697,0.600178224227497559],"hpluv":[328.208302422827,234.310931883055929,61.4441027606342232],"hsluv":[328.208302422827,100.000000000000128,61.4441027606342232]},"#ff44dd":{"lch":[62.1837139115479403,115.929787300919912,320.782684481283354],"luv":[62.1837139115479403,89.8170022013310358,-73.2981698216444357],"rgb":[1,0.266666666666666663,0.866666666666666696],"xyz":[0.563558675559447,0.306178662897187204,0.713508072127503556],"hpluv":[320.782684481283354,236.568931830040128,62.1837139115479403],"hsluv":[320.782684481283354,100.000000000000384,62.1837139115479403]},"#ff44ee":{"lch":[62.986184892514558,120.309477517885213,313.888915695758442],"luv":[62.986184892514558,83.4060394378513195,-86.7052649261745643],"rgb":[1,0.266666666666666663,0.933333333333333348],"xyz":[0.587370855825621874,0.315703535003657221,0.83891888819602678],"hpluv":[313.888915695758442,242.378371703623515,62.986184892514558],"hsluv":[313.888915695758442,100.000000000000512,62.986184892514558]},"#ff44ff":{"lch":[63.8497439492436,126.288239910703226,307.715012949243771],"luv":[63.8497439492436,77.2548530724802447,-99.9019880507531468],"rgb":[1,0.266666666666666663,1],"xyz":[0.613541904235453184,0.326171954367589945,0.976753076487808514],"hpluv":[307.715012949243771,250.982289693600563,63.8497439492436],"hsluv":[307.715012949243771,100.000000000000711,63.8497439492436]},"#ff5500":{"lch":[59.6718499915998279,148.630700843778015,19.3008598736449528],"luv":[59.6718499915998279,140.27705963161867,49.1266910591374923],"rgb":[1,0.333333333333333315,0],"xyz":[0.444874372547969188,0.277606152435549203,0.030158676476263746],"hpluv":[19.3008598736449528,316.066414507984518,59.6718499915998279],"hsluv":[19.3008598736449528,100.00000000000226,59.6718499915998279]},"#ff5511":{"lch":[59.7086010657385486,147.530698996531413,18.8803784611224046],"luv":[59.7086010657385486,139.59299153240957,47.7399608445355526],"rgb":[1,0.333333333333333315,0.0666666666666666657],"xyz":[0.445886038047606292,0.278010818635404056,0.0354867814410193758],"hpluv":[18.8803784611224046,313.53413530658878,59.7086010657385486],"hsluv":[18.8803784611224046,99.9999999999992184,59.7086010657385486]},"#ff5522":{"lch":[59.7766335415963255,145.539064184811622,18.0939597274483681],"luv":[59.7766335415963255,138.341936048844929,45.2009727113036],"rgb":[1,0.333333333333333315,0.133333333333333331],"xyz":[0.447761396186083349,0.278760961890794856,0.0453636676369985753],"hpluv":[18.0939597274483681,308.949467849715688,59.7766335415963255],"hsluv":[18.0939597274483681,99.9999999999993,59.7766335415963255]},"#ff5533":{"lch":[59.8883826376776085,142.391759670631302,16.7797766500676033],"luv":[59.8883826376776085,136.328925827546385,41.1076295206398825],"rgb":[1,0.333333333333333315,0.2],"xyz":[0.450849146918541055,0.279996062183778,0.0616258214946097185],"hpluv":[16.7797766500676033,301.704368813615531,59.8883826376776085],"hsluv":[16.7797766500676033,99.9999999999992752,59.8883826376776085]},"#ff5544":{"lch":[60.0491441299879654,138.129067713899872,14.841281480974498],"luv":[60.0491441299879654,133.520956258941027,35.3806951204903228],"rgb":[1,0.333333333333333315,0.266666666666666663],"xyz":[0.45530714216275997,0.281779260281465549,0.0851045964474963501],"hpluv":[14.841281480974498,291.888903616465711,60.0491441299879654],"hsluv":[14.841281480974498,99.9999999999994458,60.0491441299879654]},"#ff5555":{"lch":[60.2631003442631936,132.926854505406169,12.1770506300618191],"luv":[60.2631003442631936,129.936061471805857,28.0386978637829927],"rgb":[1,0.333333333333333315,0.333333333333333315],"xyz":[0.461269556202121955,0.28416422589721041,0.116506643721470265],"hpluv":[12.1770506300618191,279.898508055628838,60.2631003442631936],"hsluv":[12.1770506300618191,99.99999999999946,60.2631003442631936]},"#ff5566":{"lch":[60.5335583680784168,127.091978224389294,8.68145952340772098],"luv":[60.5335583680784168,125.635857711143842,19.1833830742614],"rgb":[1,0.333333333333333315,0.4],"xyz":[0.468854551975630141,0.287198224206613728,0.156454288128614227],"hpluv":[8.68145952340772098,266.416588145649541,60.5335583680784168],"hsluv":[8.68145952340772098,99.9999999999995737,60.5335583680784168]},"#ff5577":{"lch":[60.8630749033481351,121.049870295691591,4.25532383082281918],"luv":[60.8630749033481351,120.716171483201308,8.98203991541407],"rgb":[1,0.333333333333333315,0.466666666666666674],"xyz":[0.478168564995832046,0.290923829414694524,0.205508090035012136],"hpluv":[4.25532383082281918,252.376995060411161,60.8630749033481351],"hsluv":[4.25532383082281918,99.9999999999997158,60.8630749033481351]},"#ff5588":{"lch":[61.2535329118914404,115.319895978664789,358.830706871579594],"luv":[61.2535329118914404,115.295882188952703,-2.35328680810625102],"rgb":[1,0.333333333333333315,0.533333333333333326],"xyz":[0.489308982097775846,0.295379996255472121,0.264180953438584276],"hpluv":[358.830706871579594,238.897951612134108,61.2535329118914404],"hsluv":[358.830706871579594,99.9999999999997868,61.2535329118914404]},"#ff5599":{"lch":[61.7061969251912075,110.472562823261683,352.412124726619879],"luv":[61.7061969251912075,109.505210454219565,-14.5875296097928366],"rgb":[1,0.333333333333333315,0.6],"xyz":[0.502365946206848601,0.300602781899101279,0.332947631079702211],"hpluv":[352.412124726619879,227.177321581811952,61.7061969251912075],"hsluv":[352.412124726619879,99.9999999999998721,61.7061969251912075]},"#ff55aa":{"lch":[62.2217597266614177,107.062368992166355,345.125792918237266],"luv":[62.2217597266614177,103.474894783269619,-27.4826673342684735],"rgb":[1,0.333333333333333315,0.66666666666666663],"xyz":[0.517423639172101102,0.306625859085202401,0.412251480696700812],"hpluv":[345.125792918237266,218.340291577764589,62.2217597266614177],"hsluv":[345.125792918237266,100.000000000000071,62.2217597266614177]},"#ff55bb":{"lch":[62.8003867495987862,105.538663220643826,337.249357740418191],"luv":[62.8003867495987862,97.3274002701012,-40.8140489422941855],"rgb":[1,0.333333333333333315,0.733333333333333282],"xyz":[0.534561231279437776,0.31348089592813716,0.502509465795342614],"hpluv":[337.249357740418191,213.249782655969199,62.8003867495987862],"hsluv":[337.249357740418191,100.000000000000284,62.8003867495987862]},"#ff55cc":{"lch":[63.441761241476712,106.157882562261193,329.184616986090759],"luv":[63.441761241476712,91.1707664760994447,-54.3818661895983837],"rgb":[1,0.333333333333333315,0.8],"xyz":[0.553853606723159531,0.321197846105625961,0.60411597646561277],"hpluv":[329.184616986090759,212.332436268611161,63.441761241476712],"hsluv":[329.184616986090759,100.000000000000441,63.441761241476712]},"#ff55dd":{"lch":[64.1451313698934769,108.938462409011748,321.364198961949114],"luv":[64.1451313698934769,85.0951546537234549,-68.0176686346904518],"rgb":[1,0.333333333333333315,0.866666666666666696],"xyz":[0.575371932273793,0.329805176325879468,0.717445824365618767],"hpluv":[321.364198961949114,215.504760823814451,64.1451313698934769],"hsluv":[321.364198961949114,100.000000000000597,64.1451313698934769]},"#ff55ee":{"lch":[64.9093593252901258,113.686114680552976,314.13939983200612],"luv":[64.9093593252901258,79.1717442713053288,-81.5865649491316418],"rgb":[1,0.333333333333333315,0.933333333333333348],"xyz":[0.599184112539967728,0.339330048432349485,0.842856640434142],"hpluv":[314.13939983200612,222.248801840624651,64.9093593252901258],"hsluv":[314.13939983200612,100.000000000000753,64.9093593252901258]},"#ff55ff":{"lch":[65.7329718140353378,120.074032289562709,307.715012949243885],"luv":[65.7329718140353378,73.4534088756767147,-94.9861566483116633],"rgb":[1,0.333333333333333315,1],"xyz":[0.625355160949799149,0.349798467796282209,0.980690828725923724],"hpluv":[307.715012949243885,231.795582155087629,65.7329718140353378],"hsluv":[307.715012949243885,100.000000000000981,65.7329718140353378]},"#ff6600":{"lch":[62.3097916023938438,138.227046243322206,22.8239093069931798],"luv":[62.3097916023938438,127.404056867086908,53.6183047751569717],"rgb":[1,0.4,0],"xyz":[0.459902430253815608,0.307662267847242543,0.03516802904487909],"hpluv":[22.8239093069931798,281.498480884542573,62.3097916023938438],"hsluv":[22.8239093069931798,100.000000000002359,62.3097916023938438]},"#ff6611":{"lch":[62.344110015411573,137.186959502953613,22.4076195476895244],"luv":[62.344110015411573,126.828705913080029,52.2947532174930245],"rgb":[1,0.4,0.0666666666666666657],"xyz":[0.460914095753452713,0.308066934047097396,0.0404961340096347197],"hpluv":[22.4076195476895244,279.226561167599414,62.344110015411573],"hsluv":[22.4076195476895244,99.9999999999995737,62.344110015411573]},"#ff6622":{"lch":[62.4076477973658257,135.300699513710725,21.6278909170268392],"luv":[62.4076477973658257,125.775148313603225,49.8687412673566115],"rgb":[1,0.4,0.133333333333333331],"xyz":[0.46278945389192977,0.308817077302488197,0.0503730202056139192],"hpluv":[21.6278909170268392,275.106945224361368,62.4076477973658257],"hsluv":[21.6278909170268392,99.9999999999996163,62.4076477973658257]},"#ff6633":{"lch":[62.5120380635233346,132.311574345484274,20.3215228987586443],"luv":[62.5120380635233346,124.076309265494103,45.9502141979128851],"rgb":[1,0.4,0.2],"xyz":[0.465877204624387475,0.310052177595471323,0.0666351740632250555],"hpluv":[20.3215228987586443,268.579898420339646,62.5120380635233346],"hsluv":[20.3215228987586443,99.9999999999995879,62.5120380635233346]},"#ff6644":{"lch":[62.6622654373265675,128.246261163642686,18.3868048135947362],"luv":[62.6622654373265675,121.699120282046835,40.4527826611364603],"rgb":[1,0.4,0.266666666666666663],"xyz":[0.470335199868606391,0.311835375693158889,0.0901139490161117],"hpluv":[18.3868048135947362,259.703586528718,62.6622654373265675],"hsluv":[18.3868048135947362,99.9999999999997726,62.6622654373265675]},"#ff6655":{"lch":[62.8622967709428764,123.257362768531593,15.7125644918265355],"luv":[62.8622967709428764,118.651528823693667,33.3795174388964284],"rgb":[1,0.4,0.333333333333333315],"xyz":[0.476297613907968376,0.31422034130890375,0.121515996290085609],"hpluv":[15.7125644918265355,248.806632458920831,62.8622967709428764],"hsluv":[15.7125644918265355,99.9999999999997158,62.8622967709428764]},"#ff6666":{"lch":[63.1153061541487119,117.623502253606588,12.1770506300618742],"luv":[63.1153061541487119,114.97702760078576,24.8107115273291683],"rgb":[1,0.4,0.4],"xyz":[0.483882609681476561,0.317254339618307069,0.161463640697229571],"hpluv":[12.1770506300618742,236.482353971627703,63.1153061541487119],"hsluv":[12.1770506300618742,99.9999999999999,63.1153061541487119]},"#ff6677":{"lch":[63.4237926928396121,111.744324598031497,7.65713975886231157],"luv":[63.4237926928396121,110.747917341816802,14.8893547314965815],"rgb":[1,0.4,0.466666666666666674],"xyz":[0.493196622701678467,0.320979944826387864,0.21051744260362748],"hpluv":[7.65713975886231157,223.569519019308729,63.4237926928396121],"hsluv":[7.65713975886231157,100.000000000000071,63.4237926928396121]},"#ff6688":{"lch":[63.7896518301749751,106.125321016318935,2.05404070639815961],"luv":[63.7896518301749751,106.057131857198982,3.80375380925921824],"rgb":[1,0.4,0.533333333333333326],"xyz":[0.504337039803622322,0.325436111667165462,0.26919030600719962],"hpluv":[2.05404070639815961,211.109662635719985,63.7896518301749751],"hsluv":[2.05404070639815961,100.000000000000128,63.7896518301749751]},"#ff6699":{"lch":[64.2142253202301276,101.344202045456129,355.341285926877504],"luv":[64.2142253202301276,101.009378125853075,-8.23121004826552394],"rgb":[1,0.4,0.6],"xyz":[0.517394003912695,0.330658897310794619,0.337956983648317555],"hpluv":[355.341285926877504,200.265890662959123,64.2142253202301276],"hsluv":[355.341285926877504,100.000000000000199,64.2142253202301276]},"#ff66aa":{"lch":[64.6983418323177233,97.9876087444390436,347.629516841099075],"luv":[64.6983418323177233,95.7126081968365838,-20.9920961224008664],"rgb":[1,0.4,0.66666666666666663],"xyz":[0.532451696877947578,0.336681974496895742,0.417260833265316156],"hpluv":[347.629516841099075,192.184047560801417,64.6983418323177233],"hsluv":[347.629516841099075,100.000000000000441,64.6983418323177233]},"#ff66bb":{"lch":[65.2423543089962408,96.5541832870936787,339.215698562051898],"luv":[65.2423543089962408,90.270720679111,-34.2623306024503123],"rgb":[1,0.4,0.733333333333333282],"xyz":[0.549589288985284141,0.3435370113398305,0.507518818363957847],"hpluv":[339.215698562051898,187.793604034801348,65.2423543089962408],"hsluv":[339.215698562051898,100.000000000000597,65.2423543089962408]},"#ff66cc":{"lch":[65.8461771980182533,97.3465701370285,330.562118792095362],"luv":[65.8461771980182533,84.7780628468697159,-47.8438583036069218],"rgb":[1,0.4,0.8],"xyz":[0.568881664429005895,0.351253961517319302,0.609125329034228],"hpluv":[330.562118792095362,187.598522894675455,65.8461771980182533],"hsluv":[330.562118792095362,100.000000000000711,65.8461771980182533]},"#ff66dd":{"lch":[66.5093249736543157,100.405273498350255,322.181562409870594],"luv":[66.5093249736543157,79.3159229397089831,-61.5646271368605298],"rgb":[1,0.4,0.866666666666666696],"xyz":[0.590399989979639495,0.359861291737572808,0.722455176934234],"hpluv":[322.181562409870594,191.563741116159406,66.5093249736543157],"hsluv":[322.181562409870594,100.000000000000952,66.5093249736543157]},"#ff66ee":{"lch":[67.2309523334132706,105.527911758853008,314.488878023448478],"luv":[67.2309523334132706,73.9508789773533408,-75.2821868615750702],"rgb":[1,0.4,0.933333333333333348],"xyz":[0.614212170245814204,0.369386163844042825,0.847865993002757223],"hpluv":[314.488878023448478,199.176184031939982,67.2309523334132706],"hsluv":[314.488878023448478,100.000000000001066,67.2309523334132706]},"#ff66ff":{"lch":[68.0098958254125137,112.360313920932768,307.715012949244056],"luv":[68.0098958254125137,68.7346624616611592,-88.8841173702707437],"rgb":[1,0.4,1],"xyz":[0.640383218655645625,0.379854583207975549,0.985700181294539179],"hpluv":[307.715012949244056,209.642901019847784,68.0098958254125137],"hsluv":[307.715012949244056,100.000000000001421,68.0098958254125137]},"#ff7700":{"lch":[65.3236824647912755,127.817378582796977,27.3102887077963814],"luv":[65.3236824647912755,113.570196302134065,58.6437786953806466],"rgb":[1,0.466666666666666674,0],"xyz":[0.478356168307233265,0.344569743954078356,0.0413192750626848],"hpluv":[27.3102887077963814,248.289625700463205,65.3236824647912755],"hsluv":[27.3102887077963814,100.00000000000226,65.3236824647912755]},"#ff7711":{"lch":[65.3555057958206476,126.824695098806032,26.9045059733925385],"luv":[65.3555057958206476,113.097436843789765,57.3887886809793],"rgb":[1,0.466666666666666674,0.0666666666666666657],"xyz":[0.479367833806870369,0.344974410153933209,0.0466473800274404271],"hpluv":[26.9045059733925385,246.24134425049084,65.3555057958206476],"hsluv":[26.9045059733925385,99.9999999999999716,65.3555057958206476]},"#ff7722":{"lch":[65.4144320044565291,125.020679344179442,26.1430666348463],"luv":[65.4144320044565291,112.230643754756542,55.0858681158159058],"rgb":[1,0.466666666666666674,0.133333333333333331],"xyz":[0.481243191945347426,0.345724553409324,0.0565242662234196266],"hpluv":[26.1430666348463,242.520026060215031,65.4144320044565291],"hsluv":[26.1430666348463,100.000000000000156,65.4144320044565291]},"#ff7733":{"lch":[65.511267747206432,122.151716277204869,24.8632302030062533],"luv":[65.511267747206432,110.829965834679456,51.3591322215488688],"rgb":[1,0.466666666666666674,0.2],"xyz":[0.484330942677805132,0.346959653702307136,0.0727864200810307699],"hpluv":[24.8632302030062533,236.604443239770575,65.511267747206432],"hsluv":[24.8632302030062533,100.000000000000128,65.511267747206432]},"#ff7744":{"lch":[65.6506715027637853,118.22870540382597,22.9581907744090898],"luv":[65.6506715027637853,108.863777518532288,46.1162089276663139],"rgb":[1,0.466666666666666674,0.266666666666666663],"xyz":[0.488788937922024047,0.348742851799994702,0.0962651950339174084],"hpluv":[22.9581907744090898,228.519406804146513,65.6506715027637853],"hsluv":[22.9581907744090898,100.000000000000199,65.6506715027637853]},"#ff7755":{"lch":[65.8363783536997857,113.378413750733145,20.3056908730066645],"luv":[65.8363783536997857,106.332452226692425,39.3455754576116092],"rgb":[1,0.466666666666666674,0.333333333333333315],"xyz":[0.494751351961386032,0.351127817415739563,0.12766724230789131],"hpluv":[20.3056908730066645,218.526329281612362,65.8363783536997857],"hsluv":[20.3056908730066645,100.000000000000171,65.8363783536997857]},"#ff7766":{"lch":[66.0714111968285351,107.847817312906827,16.7638759706376135],"luv":[66.0714111968285351,103.264450834403533,31.1063481146080676],"rgb":[1,0.466666666666666674,0.4],"xyz":[0.502336347734894217,0.354161815725142881,0.167614886715035272],"hpluv":[16.7638759706376135,207.127185394700234,66.0714111968285351],"hsluv":[16.7638759706376135,100.000000000000426,66.0714111968285351]},"#ff7777":{"lch":[66.3581913431115851,102.006782949974053,12.1770506300619488],"luv":[66.3581913431115851,99.7116772923406671,21.5166256497442419],"rgb":[1,0.466666666666666674,0.466666666666666674],"xyz":[0.511650360755096067,0.357887420933223677,0.216668688621433181],"hpluv":[12.1770506300619488,195.062523033846361,66.3581913431115851],"hsluv":[12.1770506300619488,100.000000000000355,66.3581913431115851]},"#ff7788":{"lch":[66.6986047917809,96.3441833198397291,6.39999172914420456],"luv":[66.6986047917809,95.7437601312525,10.7393694179903871],"rgb":[1,0.466666666666666674,0.533333333333333326],"xyz":[0.52279077785704,0.362343587774001274,0.275341552025005376],"hpluv":[6.39999172914420456,183.293927388427107,66.6986047917809],"hsluv":[6.39999172914420456,100.000000000000639,66.6986047917809]},"#ff7799":{"lch":[67.0940474565320244,91.4474963932601,359.352586865695173],"luv":[67.0940474565320244,91.4416585161261679,-1.0332881570442134],"rgb":[1,0.466666666666666674,0.6],"xyz":[0.535847741966112623,0.367566373417630432,0.344108229666123255],"hpluv":[359.352586865695173,172.952623850798517,67.0940474565320244],"hsluv":[359.352586865695173,100.000000000000782,67.0940474565320244]},"#ff77aa":{"lch":[67.5454605183692,87.9484746627524,351.107126776790835],"luv":[67.5454605183692,86.8912550098467449,-13.5957345634056814],"rgb":[1,0.466666666666666674,0.66666666666666663],"xyz":[0.550905434931365234,0.373589450603731554,0.423412079283121856],"hpluv":[351.107126776790835,165.223368139110704,67.5454605183692],"hsluv":[351.107126776790835,100.000000000000938,67.5454605183692]},"#ff77bb":{"lch":[68.0533617234635244,86.4195813509952,341.973592157308417],"luv":[68.0533617234635244,82.1775887588569,-26.7429980866295693],"rgb":[1,0.466666666666666674,0.733333333333333282],"xyz":[0.568043027038701798,0.380444487446666313,0.513670064381763658],"hpluv":[341.973592157308417,161.139458954487083,68.0533617234635244],"hsluv":[341.973592157308417,100.000000000001037,68.0533617234635244]},"#ff77cc":{"lch":[68.6178757233526682,87.2373067072756214,332.49967924393593],"luv":[68.6178757233526682,77.3802105983984347,-40.2821385887937],"rgb":[1,0.466666666666666674,0.8],"xyz":[0.587335402482423552,0.388161437624155115,0.615276575052033814],"hpluv":[332.49967924393593,161.325977991170333,68.6178757233526682],"hsluv":[332.49967924393593,100.000000000001265,68.6178757233526682]},"#ff77dd":{"lch":[69.238765020261809,90.480647802514838,323.326201907778],"luv":[69.238765020261809,72.5699004301545756,-54.0403291840472],"rgb":[1,0.466666666666666674,0.866666666666666696],"xyz":[0.608853728033057151,0.396768767844408621,0.728606422952039812],"hpluv":[323.326201907778,165.823361543811586,69.238765020261809],"hsluv":[323.326201907778,100.00000000000145,69.238765020261809]},"#ff77ee":{"lch":[69.9154621504300593,95.9376886025569604,314.973456368277198],"luv":[69.9154621504300593,67.8067552495039791,-67.8696105553513149],"rgb":[1,0.466666666666666674,0.933333333333333348],"xyz":[0.632665908299231861,0.406293639950878638,0.854017239020563],"hpluv":[314.973456368277198,174.122680701596721,69.9154621504300593],"hsluv":[314.973456368277198,100.000000000001535,69.9154621504300593]},"#ff77ff":{"lch":[70.6471031550122,103.213892868752552,307.715012949244283],"luv":[70.6471031550122,63.1394826173239494,-81.6487196221654],"rgb":[1,0.466666666666666674,1],"xyz":[0.658836956709063282,0.416762059314811362,0.99185142731234488],"hpluv":[307.715012949244283,185.388643374650655,70.6471031550122],"hsluv":[307.715012949244283,100.000000000001975,70.6471031550122]},"#ff8800":{"lch":[68.6580440198892603,118.150361410828182,32.8458067740872153],"luv":[68.6580440198892603,99.2620471866307383,64.0823992202883375],"rgb":[1,0.533333333333333326,0],"xyz":[0.500428538032203774,0.388714483404019873,0.0486767316376747472],"hpluv":[32.8458067740872153,218.364961888913399,68.6580440198892603],"hsluv":[32.8458067740872153,100.000000000002245,68.6580440198892603]},"#ff8811":{"lch":[68.6874112197728408,117.19102013872596,32.4606037779481582],"luv":[68.6874112197728408,98.8811760474647485,62.89871401408422],"rgb":[1,0.533333333333333326,0.0666666666666666657],"xyz":[0.501440203531840933,0.389119149603874726,0.0540048366024303769],"hpluv":[32.4606037779481582,216.499308154785638,68.6874112197728408],"hsluv":[32.4606037779481582,100.000000000000739,68.6874112197728408]},"#ff8822":{"lch":[68.7417963707939492,115.443262249268372,31.7362513605757321],"luv":[68.7417963707939492,98.1820090833864754,60.724294076614548],"rgb":[1,0.533333333333333326,0.133333333333333331],"xyz":[0.503315561670317879,0.389869292859265526,0.0638817227984095765],"hpluv":[31.7362513605757321,213.101761826290613,68.7417963707939492],"hsluv":[31.7362513605757321,100.000000000000668,68.7417963707939492]},"#ff8833":{"lch":[68.8311889682804292,112.651741292777714,30.5141745142023382],"luv":[68.8311889682804292,97.0498776480180823,57.1990914683060439],"rgb":[1,0.533333333333333326,0.2],"xyz":[0.506403312402775696,0.391104393152248653,0.0801438766560207128],"hpluv":[30.5141745142023382,207.678703624478942,68.8311889682804292],"hsluv":[30.5141745142023382,100.000000000000824,68.8311889682804292]},"#ff8844":{"lch":[68.9599197258043688,108.808998086617962,28.6842020071901302],"luv":[68.9599197258043688,95.4557990826346554,52.2263198599069725],"rgb":[1,0.533333333333333326,0.266666666666666663],"xyz":[0.510861307646994556,0.392887591249936219,0.103622651608907351],"hpluv":[28.6842020071901302,200.2199693629492,68.9599197258043688],"hsluv":[28.6842020071901302,100.000000000000838,68.9599197258043688]},"#ff8855":{"lch":[69.1314852187197602,104.012526361958052,26.1137258191789492],"luv":[69.1314852187197602,93.395152113439849,45.7815596272609682],"rgb":[1,0.533333333333333326,0.333333333333333315],"xyz":[0.516823721686356485,0.39527255686568108,0.135024698882881267],"hpluv":[26.1137258191789492,190.918970683811096,69.1314852187197602],"hsluv":[26.1137258191789492,100.000000000000867,69.1314852187197602]},"#ff8866":{"lch":[69.3487452092138881,98.4723154092605171,22.6389332988698087],"luv":[69.3487452092138881,90.8849122177262529,37.9042165627661802],"rgb":[1,0.533333333333333326,0.4],"xyz":[0.524408717459864726,0.398306555175084398,0.174972343290025228],"hpluv":[22.6389332988698087,180.183437843423292,69.3487452092138881],"hsluv":[22.6389332988698087,100.000000000001066,69.3487452092138881]},"#ff8877":{"lch":[69.6140261744794344,92.5206854303452246,18.0637242730473773],"luv":[69.6140261744794344,87.9605480867009248,28.6883114314535526],"rgb":[1,0.533333333333333326,0.466666666666666674],"xyz":[0.533722730480066576,0.402032160383165194,0.224026145196423138],"hpluv":[18.0637242730473773,168.648085666048672,69.6140261744794344],"hsluv":[18.0637242730473773,100.000000000001108,69.6140261744794344]},"#ff8888":{"lch":[69.9291829132988596,86.6211090413054,12.1770506300619186],"luv":[69.9291829132988596,84.672173963834382,18.2712749359175248],"rgb":[1,0.533333333333333326,0.533333333333333326],"xyz":[0.544863147582010487,0.406488327223942791,0.282699008599995305],"hpluv":[12.1770506300619186,157.182652238587849,69.9291829132988596],"hsluv":[12.1770506300619186,100.000000000001251,69.9291829132988596]},"#ff8899":{"lch":[70.29563969089034,81.3665448969888274,4.80888772903122597],"luv":[70.29563969089034,81.0801238487794791,6.82115423812421362],"rgb":[1,0.533333333333333326,0.6],"xyz":[0.557920111691083132,0.411711112867571949,0.351465686241113184],"hpluv":[4.80888772903122597,146.878021536398364,70.29563969089034],"hsluv":[4.80888772903122597,100.00000000000135,70.29563969089034]},"#ff88aa":{"lch":[70.7144212664750427,77.4442353273614827,355.944797831634332],"luv":[70.7144212664750427,77.2503443699940533,-5.47666688388778589],"rgb":[1,0.533333333333333326,0.66666666666666663],"xyz":[0.572977804656335743,0.417734190053673071,0.430769535858111841],"hpluv":[355.944797831634332,138.969799542374091,70.7144212664750427],"hsluv":[355.944797831634332,100.000000000001648,70.7144212664750427]},"#ff88bb":{"lch":[71.1861792611668847,75.5334875912487718,345.875835641341098],"luv":[71.1861792611668847,73.2500487000805,-18.431986141845023],"rgb":[1,0.533333333333333326,0.733333333333333282],"xyz":[0.590115396763672306,0.42458922689660783,0.521027520956753532],"hpluv":[345.875835641341098,134.642814203514433,71.1861792611668847],"hsluv":[345.875835641341098,100.000000000001776,71.1861792611668847]},"#ff88cc":{"lch":[71.711216864189268,76.1313589407537563,335.260476444218114],"luv":[71.711216864189268,69.1440007334156377,-31.8604924121286039],"rgb":[1,0.533333333333333326,0.8],"xyz":[0.609407772207394061,0.432306177074096631,0.622634031627023687],"hpluv":[335.260476444218114,134.714956877670915,71.711216864189268],"hsluv":[335.260476444218114,100.000000000001933,71.711216864189268]},"#ff88dd":{"lch":[72.2895135005839649,79.3885839073469413,324.950129439258774],"luv":[72.2895135005839649,64.9916618916399784,-45.5920074067441803],"rgb":[1,0.533333333333333326,0.866666666666666696],"xyz":[0.63092609775802766,0.440913507294350138,0.735963879527029685],"hpluv":[324.950129439258774,139.354847315526115,72.2895135005839649],"hsluv":[324.950129439258774,100.000000000002245,72.2895135005839649]},"#ff88ee":{"lch":[72.9207502525545124,85.0855243828499,315.651995307064169],"luv":[72.9207502525545124,60.845281511842515,-59.4760302748021203],"rgb":[1,0.533333333333333326,0.933333333333333348],"xyz":[0.654738278024202369,0.450438379400820155,0.861374695595552908],"hpluv":[315.651995307064169,148.062090862911901,72.9207502525545124],"hsluv":[315.651995307064169,100.000000000002444,72.9207502525545124]},"#ff88ff":{"lch":[73.6043362991539709,92.7672005781522842,307.715012949244624],"luv":[73.6043362991539709,56.7488822053271349,-73.3847250560567375],"rgb":[1,0.533333333333333326,1],"xyz":[0.68090932643403379,0.460906798764752879,0.999208883887334753],"hpluv":[307.715012949244624,159.930161835956909,73.6043362991539709],"hsluv":[307.715012949244624,100.000000000002771,73.6043362991539709]},"#ff9900":{"lch":[72.2588108283115389,109.907462524380705,39.4434130396340095],"luv":[72.2588108283115389,84.8763034831777077,69.8259509464759418],"rgb":[1,0.6,0],"xyz":[0.526298138484671219,0.440453684308955595,0.057299931788497],"hpluv":[39.4434130396340095,193.008172097547572,72.2588108283115389],"hsluv":[39.4434130396340095,100.000000000002288,72.2588108283115389]},"#ff9911":{"lch":[72.2858317740783889,108.970035258541955,39.0927051304156805],"luv":[72.2858317740783889,84.5745536570817791,68.7139975401902348],"rgb":[1,0.6,0.0666666666666666657],"xyz":[0.527309803984308378,0.440858350508810448,0.0626280367532526389],"hpluv":[39.0927051304156805,191.2904264008464,72.2858317740783889],"hsluv":[39.0927051304156805,100.000000000001506,72.2858317740783889]},"#ff9922":{"lch":[72.3358777005795304,107.257428554778556,38.4317580680427469],"luv":[72.3358777005795304,84.0200042697796,66.6692947517044274],"rgb":[1,0.6,0.133333333333333331],"xyz":[0.529185162122785324,0.441608493764201249,0.0725049229492318315],"hpluv":[38.4317580680427469,188.15378179700545,72.3358777005795304],"hsluv":[38.4317580680427469,100.00000000000145,72.3358777005795304]},"#ff9933":{"lch":[72.418154282067718,104.508625212907305,37.3122251519614778],"luv":[72.418154282067718,83.1203251002183237,63.3487513620113845],"rgb":[1,0.6,0.2],"xyz":[0.532272912855243141,0.442843594057184375,0.0887670768068429816],"hpluv":[37.3122251519614778,183.123470124205028,72.418154282067718],"hsluv":[37.3122251519614778,100.00000000000162,72.418154282067718]},"#ff9944":{"lch":[72.5366731246789556,100.695423976150749,35.6250099256014607],"luv":[72.5366731246789556,81.8499313718691326,58.6528528219818952],"rgb":[1,0.6,0.266666666666666663],"xyz":[0.536730908099462,0.444626792154871942,0.11224585175972962],"hpluv":[35.6250099256014607,176.153561585765658,72.5366731246789556],"hsluv":[35.6250099256014607,100.000000000001748,72.5366731246789556]},"#ff9955":{"lch":[72.6946936633514582,95.8821930466240673,33.2320443565807508],"luv":[72.6946936633514582,80.201421842029859,52.5464259293328269],"rgb":[1,0.6,0.333333333333333315],"xyz":[0.54269332213882393,0.447011757770616802,0.143647899033703508],"hpluv":[33.2320443565807508,167.368827825995851,72.6946936633514582],"hsluv":[33.2320443565807508,100.000000000001705,72.6946936633514582]},"#ff9966":{"lch":[72.8949069034106,90.2347392462793749,29.9516480142673025],"luv":[72.8949069034106,78.1836232693519406,45.0514064077924345],"rgb":[1,0.6,0.4],"xyz":[0.550278317912332171,0.450045756080020121,0.183595543440847497],"hpluv":[29.9516480142673025,157.078197331028889,72.8949069034106],"hsluv":[29.9516480142673025,100.000000000001819,72.8949069034106]},"#ff9977":{"lch":[73.1395321193821,84.0351966301436,25.5464816978182121],"luv":[73.1395321193821,75.8195571045914,36.2396058633438045],"rgb":[1,0.6,0.466666666666666674],"xyz":[0.559592330932534,0.453771361288100916,0.232649345347245406],"hpluv":[25.5464816978182121,145.796926659053128,73.1395321193821],"hsluv":[25.5464816978182121,100.000000000002018,73.1395321193821]},"#ff9988":{"lch":[73.430374185650777,77.702838567593929,19.7240568661095921],"luv":[73.430374185650777,73.1439295084068419,26.2239718107454713],"rgb":[1,0.6,0.533333333333333326],"xyz":[0.570732748034477932,0.458227528128878514,0.291322208750817546],"hpluv":[19.7240568661095921,134.276641294628575,73.430374185650777],"hsluv":[19.7240568661095921,100.000000000002203,73.430374185650777]},"#ff9999":{"lch":[73.76886125649402,71.8160022700114098,12.1770506300620251],"luv":[73.76886125649402,70.2001752793754,15.1483851545719261],"rgb":[1,0.6,0.6],"xyz":[0.583789712143550577,0.463450313772507672,0.360088886391935481],"hpluv":[12.1770506300620251,123.534275619879125,73.76886125649402],"hsluv":[12.1770506300620251,100.000000000002331,73.76886125649402]},"#ff99aa":{"lch":[74.1560723225582592,67.1124973440613,2.7130535693684088],"luv":[74.1560723225582592,67.0372720786985923,3.17670458229478481],"rgb":[1,0.6,0.66666666666666663],"xyz":[0.598847405108803188,0.469473390958608794,0.439392736008934082],"hpluv":[2.7130535693684088,114.840746523486033,74.1560723225582592],"hsluv":[2.7130535693684088,100.00000000000253,74.1560723225582592]},"#ff99bb":{"lch":[74.5927597146433925,64.4136927281220864,351.502648062184],"luv":[74.5927597146433925,63.7066038913843187,-9.51800564715024322],"rgb":[1,0.6,0.733333333333333282],"xyz":[0.615984997216139751,0.476328427801543552,0.529650721107575828],"hpluv":[351.502648062184,109.577363966618833,74.5927597146433925],"hsluv":[351.502648062184,100.000000000002615,74.5927597146433925]},"#ff99cc":{"lch":[75.0793694015197,64.4152606478183145,339.305696269483292],"luv":[75.0793694015197,60.259134450288677,-22.7631834247409977],"rgb":[1,0.6,0.8],"xyz":[0.635277372659861506,0.484045377979032354,0.631257231777846],"hpluv":[339.305696269483292,108.869813431806975,75.0793694015197],"hsluv":[339.305696269483292,100.000000000002871,75.0793694015197]},"#ff99dd":{"lch":[75.6160606971696296,67.4118390527965232,327.324068761847229],"luv":[75.6160606971696296,56.7430830794555,-36.3947601601954887],"rgb":[1,0.6,0.866666666666666696],"xyz":[0.656795698210495105,0.49265270819928586,0.744587079677852],"hpluv":[327.324068761847229,113.125745227459021,75.6160606971696296],"hsluv":[327.324068761847229,100.00000000000324,75.6160606971696296]},"#ff99ee":{"lch":[76.202726253448489,73.1905233351813393,316.627151984536795],"luv":[76.202726253448489,53.2022056350908201,-50.2630880631028845],"rgb":[1,0.6,0.933333333333333348],"xyz":[0.680607878476669814,0.502177580305755877,0.869997895746375205],"hpluv":[316.627151984536795,123.107716827744753,76.202726253448489],"hsluv":[316.627151984536795,100.000000000003524,76.202726253448489]},"#ff99ff":{"lch":[76.8390127436129,81.2030526869262275,307.715012949245],"luv":[76.8390127436129,49.6746958291708154,-64.2367524082209229],"rgb":[1,0.6,1],"xyz":[0.706778926886501235,0.512645999669688601,1.00783208403815694],"hpluv":[307.715012949245,141.150312559224801,76.8390127436129],"hsluv":[307.715012949245,100.000000000003752,76.8390127436129]},"#ee0000":{"lch":[49.7142799595632,167.190689697178925,12.1770506300617765],"luv":[49.7142799595632,163.428976145092918,35.2660811203203934],"rgb":[0.933333333333333348,0,0],"xyz":[0.352591085030832,0.181804778219026603,0.0165277071108199],"hpluv":[12.1770506300617765,426.746789183125202,49.7142799595632],"hsluv":[12.1770506300617765,100.000000000002217,49.7142799595632]},"#ee0011":{"lch":[49.7630000621001756,165.722449822455,11.6881730851639158],"luv":[49.7630000621001756,162.286136628676445,33.5729092170260728],"rgb":[0.933333333333333348,0,0.0666666666666666657],"xyz":[0.353602750530469079,0.182209444418881455,0.0218558120755755342],"hpluv":[11.6881730851639158,422.585038037937124,49.7630000621001756],"hsluv":[11.6881730851639158,99.9999999999963762,49.7630000621001756]},"#ee0022":{"lch":[49.8531236873270558,163.0858535413212,10.7756858750078184],"luv":[49.8531236873270558,160.210108449799208,30.4912573667411486],"rgb":[0.933333333333333348,0,0.133333333333333331],"xyz":[0.355478108668946136,0.182959587674272284,0.0317326982715547268],"hpluv":[10.7756858750078184,415.110044299310516,49.8531236873270558],"hsluv":[10.7756858750078184,99.9999999999964473,49.8531236873270558]},"#ee0033":{"lch":[50.000975779064234,158.977402767524836,9.25647316775448559],"luv":[50.000975779064234,156.907230803998146,25.5721628363475],"rgb":[0.933333333333333348,0,0.2],"xyz":[0.358565859401403841,0.184194687967255383,0.047994852129165877],"hpluv":[9.25647316775448559,403.456061197389261,50.000975779064234],"hsluv":[9.25647316775448559,99.9999999999965183,50.000975779064234]},"#ee0044":{"lch":[50.2132784041556164,153.529579514286212,7.02933300215353],"luv":[50.2132784041556164,152.375594335021788,18.7885613308314312],"rgb":[0.933333333333333348,0,0.266666666666666663],"xyz":[0.363023854645622757,0.185977886064942977,0.0714736270820525155],"hpluv":[7.02933300215353,387.983100931209492,50.2132784041556164],"hsluv":[7.02933300215353,99.9999999999966462,50.2132784041556164]},"#ee0055":{"lch":[50.4951150037793326,147.071833727726926,3.99754465361350508],"luv":[50.4951150037793326,146.714013644902735,10.2529252527975352],"rgb":[0.933333333333333348,0,0.333333333333333315],"xyz":[0.368986268684984742,0.188362851680687809,0.102875674356026417],"hpluv":[3.99754465361350508,369.589367027053072,50.4951150037793326],"hsluv":[3.99754465361350508,99.999999999996831,50.4951150037793326]},"#ee0066":{"lch":[50.8502318550204109,140.098840030056522,0.0757634158231174915],"luv":[50.8502318550204109,140.0987175463531,0.185255592479522613],"rgb":[0.933333333333333348,0,0.4],"xyz":[0.376571264458492927,0.1913968499900911,0.142823318763170393],"hpluv":[0.0757634158231174915,349.60765112382461,50.8502318550204109],"hsluv":[0.0757634158231174915,99.9999999999970584,50.8502318550204109]},"#ee0077":{"lch":[51.2812017254514956,133.219993530026585,355.209470699020642],"luv":[51.2812017254514956,132.754613083251769,-11.1256182415379214],"rgb":[0.933333333333333348,0,0.466666666666666674],"xyz":[0.385885277478694833,0.195122455198171924,0.191877120669568302],"hpluv":[355.209470699020642,329.648072606093592,51.2812017254514956],"hsluv":[355.209470699020642,99.9999999999973284,51.2812017254514956]},"#ee0088":{"lch":[51.7895361854883163,127.090944021268115,349.407446028193533],"luv":[51.7895361854883163,124.925218603260163,-23.3623160055840167],"rgb":[0.933333333333333348,0,0.533333333333333326],"xyz":[0.397025694580638633,0.199578622038949521,0.250549984073140442],"hpluv":[349.407446028193533,311.395197619459395,51.7895361854883163],"hsluv":[349.407446028193533,99.9999999999974705,51.7895361854883163]},"#ee0099":{"lch":[52.3757812732210652,122.329563392952366,342.780178840499048],"luv":[52.3757812732210652,116.846263825073436,-36.2142611415956637],"rgb":[0.933333333333333348,0,0.6],"xyz":[0.410082658689711388,0.204801407682578679,0.319316661714258376],"hpluv":[342.780178840499048,296.374093031221,52.3757812732210652],"hsluv":[342.780178840499048,99.9999999999978,52.3757812732210652]},"#ee00aa":{"lch":[53.0396114453995722,119.424239873739239,335.563712743666827],"luv":[53.0396114453995722,108.726436909364494,-49.403552366347],"rgb":[0.933333333333333348,0,0.66666666666666663],"xyz":[0.425140351654963888,0.210824484868679773,0.398620511331257],"hpluv":[335.563712743666827,285.713971708863653,53.0396114453995722],"hsluv":[335.563712743666827,99.999999999998,53.0396114453995722]},"#ee00bb":{"lch":[53.779927529436435,118.655378520732356,328.101249142938343],"luv":[53.779927529436435,100.736423933687789,-62.6998544252744381],"rgb":[0.933333333333333348,0,0.733333333333333282],"xyz":[0.442277943762300563,0.217679521711614532,0.488878496429898723],"hpluv":[328.101249142938343,279.966806180862307,53.779927529436435],"hsluv":[328.101249142938343,99.9999999999982094,53.779927529436435]},"#ee00cc":{"lch":[54.5949595671901,120.061129768120921,320.773339602207614],"luv":[54.5949595671901,93.0053918954961,-75.9254368414351575],"rgb":[0.933333333333333348,0,0.8],"xyz":[0.461570319206022317,0.225396471889103334,0.590485007100168824],"hpluv":[320.773339602207614,279.054611328209262,54.5949595671901],"hsluv":[320.773339602207614,99.9999999999984,54.5949595671901]},"#ee00dd":{"lch":[55.4823728661035744,123.466264594666441,313.907226483092529],"luv":[55.4823728661035744,85.6229535549924634,-88.9529556421808252],"rgb":[0.933333333333333348,0,0.866666666666666696],"xyz":[0.483088644756655805,0.234003802109356868,0.703814855000174822],"hpluv":[313.907226483092529,282.379138449157608,55.4823728661035744],"hsluv":[313.907226483092529,99.9999999999986215,55.4823728661035744]},"#ee00ee":{"lch":[56.4393743497109597,128.559742977308588,307.715012949243601],"luv":[56.4393743497109597,78.644409501394918,-101.698890694877051],"rgb":[0.933333333333333348,0,0.933333333333333348],"xyz":[0.506900825022830626,0.243528674215826912,0.829225671068698],"hpluv":[307.715012949243601,289.042783730483393,56.4393743497109597],"hsluv":[307.715012949243601,99.9999999999988489,56.4393743497109597]},"#ee00ff":{"lch":[57.4628159598150745,134.982567880189606,302.284502363601803],"luv":[57.4628159598150745,72.0973885084188879,-114.115118199983058],"rgb":[0.933333333333333348,0,1],"xyz":[0.533071873432661936,0.253997093579759636,0.96705985936047989],"hpluv":[302.284502363601803,298.078126285043766,57.4628159598150745],"hsluv":[302.284502363601803,99.9999999999989484,57.4628159598150745]},"#ee1100":{"lch":[50.1937733395544683,164.746074066243921,12.6667024036514828],"luv":[50.1937733395544683,160.736507742479517,36.1253927174799117],"rgb":[0.933333333333333348,0.0666666666666666657,0],"xyz":[0.354595485291760382,0.185813578740883473,0.0171958405311293527],"hpluv":[12.6667024036514828,416.489977947977081,50.1937733395544683],"hsluv":[12.6667024036514828,100.000000000002245,50.1937733395544683]},"#ee1111":{"lch":[50.2417909300708345,163.305921695383518,12.1770506300617907],"luv":[50.2417909300708345,159.631613634988071,34.4466542507197317],"rgb":[0.933333333333333348,0.0666666666666666657,0.0666666666666666657],"xyz":[0.355607150791397486,0.186218244940738326,0.0225239454958849825],"hpluv":[12.1770506300617907,412.454596338970589,50.2417909300708345],"hsluv":[12.1770506300617907,96.6508962208003197,50.2417909300708345]},"#ee1122":{"lch":[50.3306190654122219,160.718934991358793,11.2629010575952293],"luv":[50.3306190654122219,157.623701713525833,31.390201064696047],"rgb":[0.933333333333333348,0.0666666666666666657,0.133333333333333331],"xyz":[0.357482508929874543,0.186968388196129154,0.032400831691864182],"hpluv":[11.2629010575952293,405.204351077732667,50.3306190654122219],"hsluv":[11.2629010575952293,96.6948337079543592,50.3306190654122219]},"#ee1133":{"lch":[50.4763571232054318,156.685700791802191,9.74029685215880647],"luv":[50.4763571232054318,154.427033260746356,26.5084935615454427],"rgb":[0.933333333333333348,0.0666666666666666657,0.2],"xyz":[0.360570259662332249,0.188203488489112253,0.0486629855494753252],"hpluv":[9.74029685215880647,393.895198182016713,50.4763571232054318],"hsluv":[9.74029685215880647,96.7647175585846,50.4763571232054318]},"#ee1144":{"lch":[50.6856484752898382,151.333831494518165,7.50679337730589413],"luv":[50.6856484752898382,150.036806479185287,19.7708183022028514],"rgb":[0.933333333333333348,0.0666666666666666657,0.266666666666666663],"xyz":[0.365028254906551164,0.189986686586799847,0.0721417605023619568],"hpluv":[7.50679337730589413,378.870112575267399,50.6856484752898382],"hsluv":[7.50679337730589413,96.8605546889772455,50.6856484752898382]},"#ee1155":{"lch":[50.9635312364098496,144.984673036864649,4.46374659640210858],"luv":[50.9635312364098496,144.544902405536135,11.283909082431693],"rgb":[0.933333333333333348,0.0666666666666666657,0.333333333333333315],"xyz":[0.370990668945913149,0.19237165220254468,0.103543807776335872],"hpluv":[4.46374659640210858,360.995599227985224,50.9635312364098496],"hsluv":[4.46374659640210858,96.9801964566503,50.9635312364098496]},"#ee1166":{"lch":[51.3137360134299598,138.123816003378664,0.523151936541392],"luv":[51.3137360134299598,138.118058344046318,1.26115288756691357],"rgb":[0.933333333333333348,0.0666666666666666657,0.4],"xyz":[0.378575664719421334,0.19540565051194797,0.143491452183479834],"hpluv":[0.523151936541392,341.565705345826359,51.3137360134299598],"hsluv":[0.523151936541392,97.1198273857598764,51.3137360134299598]},"#ee1177":{"lch":[51.7388469835676119,131.353183798903302,355.627348241097309],"luv":[51.7388469835676119,130.970848560864681,-10.014775152519368],"rgb":[0.933333333333333348,0.0666666666666666657,0.466666666666666674],"xyz":[0.38788967773962324,0.199131255720028794,0.192545254089877743],"hpluv":[355.627348241097309,322.153744971780554,51.7388469835676119],"hsluv":[355.627348241097309,97.2745732157476,51.7388469835676119]},"#ee1188":{"lch":[52.2404115410600411,125.324707533591734,349.782339698165117],"luv":[52.2404115410600411,123.337180279157977,-22.2311106147846438],"rgb":[0.933333333333333348,0.0666666666666666657,0.533333333333333326],"xyz":[0.39903009484156704,0.203587422560806391,0.251218117493449911],"hpluv":[349.782339698165117,304.417375015566734,52.2404115410600411],"hsluv":[349.782339698165117,97.4391430985313605,52.2404115410600411]},"#ee1199":{"lch":[52.819032808459994,120.657103381490217,343.097768544337384],"luv":[52.819032808459994,115.44498939014953,-35.079780802050081],"rgb":[0.933333333333333348,0.0666666666666666657,0.6],"xyz":[0.412087058950639795,0.208810208204435549,0.31998479513456779],"hpluv":[343.097768544337384,289.869003225703352,52.819032808459994],"hsluv":[343.097768544337384,97.6083995478766298,52.819032808459994]},"#ee11aa":{"lch":[53.4744599034404615,117.843047501566133,335.812437212199143],"luv":[53.4744599034404615,107.497497568615216,-48.2832461723726496],"rgb":[0.933333333333333348,0.0666666666666666657,0.66666666666666663],"xyz":[0.427144751915892296,0.214833285390536644,0.399288644751566446],"hpluv":[335.812437212199143,279.638449078323276,53.4744599034404615],"hsluv":[335.812437212199143,97.7777799659692,53.4744599034404615]},"#ee11bb":{"lch":[54.205681814132376,117.167943285093472,328.276238054291071],"luv":[54.205681814132376,99.6622453247977376,-61.6097702517929662],"rgb":[0.933333333333333348,0.0666666666666666657,0.733333333333333282],"xyz":[0.44428234402322897,0.221688322233471402,0.489546629850208137],"hpluv":[328.276238054291071,274.285798241860448,54.205681814132376],"hsluv":[328.276238054291071,97.9435422525978652,54.205681814132376]},"#ee11cc":{"lch":[55.0110259993956703,118.672848043699901,320.878255441103249],"luv":[55.0110259993956703,92.0672263164348266,-74.8790404666182781],"rgb":[0.933333333333333348,0.0666666666666666657,0.8],"xyz":[0.463574719466950724,0.229405272410960204,0.591153140520478293],"hpluv":[320.878255441103249,273.741691636115945,55.0110259993956703],"hsluv":[320.878255441103249,98.102849778989,55.0110259993956703]},"#ee11dd":{"lch":[55.8882602794840864,122.182226882396691,313.952719233652829],"luv":[55.8882602794840864,84.8023500190691522,-87.9605479586430334],"rgb":[0.933333333333333348,0.0666666666666666657,0.866666666666666696],"xyz":[0.485093045017584212,0.238012602631213738,0.704482988420484291],"hpluv":[313.952719233652829,277.412976370396279,55.8882602794840864],"hsluv":[313.952719233652829,98.2537358693348608,55.8882602794840864]},"#ee11ee":{"lch":[56.83469533821048,127.382376320214306,307.715012949243601],"luv":[56.83469533821048,77.9241738866570302,-100.767519176899128],"rgb":[0.933333333333333348,0.0666666666666666657,0.933333333333333348],"xyz":[0.508905225283758922,0.247537474737683783,0.829893804489007514],"hpluv":[307.715012949243601,284.403630900032795,56.83469533821048],"hsluv":[307.715012949243601,98.3949944120453495,56.83469533821048]},"#ee11ff":{"lch":[57.8472847680859275,133.910906422249354,302.2526850652647],"luv":[57.8472847680859275,71.4621107907268254,-113.248830369952643],"rgb":[0.933333333333333348,0.0666666666666666657,1],"xyz":[0.535076273693590343,0.258005894101616451,0.967727992780789359],"hpluv":[302.2526850652647,293.746227206253536,57.8472847680859275],"hsluv":[302.2526850652647,99.99999999999892,57.8472847680859275]},"#ee2200":{"lch":[51.0646940471157222,160.407609402057773,13.5847947923325787],"luv":[51.0646940471157222,155.919944837816502,37.677207378671163],"rgb":[0.933333333333333348,0.133333333333333331,0],"xyz":[0.358311109026528296,0.19324482621041944,0.018434381776051962],"hpluv":[13.5847947923325787,398.605749597291435,51.0646940471157222],"hsluv":[13.5847947923325787,100.000000000002203,51.0646940471157222]},"#ee2211":{"lch":[51.1114738997186322,159.015005648229618,13.0939108674416342],"luv":[51.1114738997186322,154.880623331235768,36.0244991337056817],"rgb":[0.933333333333333348,0.133333333333333331,0.0666666666666666657],"xyz":[0.3593227745261654,0.193649492410274293,0.0237624867408075952],"hpluv":[13.0939108674416342,394.783534202752207,51.1114738997186322],"hsluv":[13.0939108674416342,96.7702863870018462,51.1114738997186322]},"#ee2222":{"lch":[51.1980191888258105,156.511980987808,12.1770506300618031],"luv":[51.1980191888258105,152.990533465747774,33.0135860305098348],"rgb":[0.933333333333333348,0.133333333333333331,0.133333333333333331],"xyz":[0.361198132664642457,0.194399635665665121,0.0336393729367867877],"hpluv":[12.1770506300618031,387.912483642854795,51.1980191888258105],"hsluv":[12.1770506300618031,90.899918517349,51.1980191888258105]},"#ee2233":{"lch":[51.340031013958,152.605977320930094,10.6487510890373542],"luv":[51.340031013958,149.977869701108148,28.1996970549978769],"rgb":[0.933333333333333348,0.133333333333333331,0.2],"xyz":[0.364285883397100163,0.19563473595864822,0.0499015267943979379],"hpluv":[10.6487510890373542,377.185287566809563,51.340031013958],"hsluv":[10.6487510890373542,91.0856949770771,51.340031013958]},"#ee2244":{"lch":[51.5440125284501391,147.416232714385046,8.4042516634418849],"luv":[51.5440125284501391,145.833202035739902,21.5458314229178391],"rgb":[0.933333333333333348,0.133333333333333331,0.266666666666666663],"xyz":[0.368743878641319078,0.197417934056335814,0.0733803017472845764],"hpluv":[8.4042516634418849,362.916246958463432,51.5440125284501391],"hsluv":[8.4042516634418849,91.3409150161676848,51.5440125284501391]},"#ee2255":{"lch":[51.8149196409757,141.25016266814734,5.34127242035781613],"luv":[51.8149196409757,140.636840571385164,13.1486701942394504],"rgb":[0.933333333333333348,0.133333333333333331,0.333333333333333315],"xyz":[0.374706292680681063,0.199802899672080647,0.104782349021258478],"hpluv":[5.34127242035781613,345.918233291596209,51.8149196409757],"hsluv":[5.34127242035781613,91.6602615743055082,51.8149196409757]},"#ee2266":{"lch":[52.1564522427987924,134.577740656965489,1.36671179444129165],"luv":[52.1564522427987924,134.539455426625494,3.20986196595936],"rgb":[0.933333333333333348,0.133333333333333331,0.4],"xyz":[0.382291288454189249,0.202836897981483938,0.144729993428402454],"hpluv":[1.36671179444129165,327.419481975304109,52.1564522427987924],"hsluv":[1.36671179444129165,92.0339967122243365,52.1564522427987924]},"#ee2277":{"lch":[52.5712108639856694,127.988129961564283,356.416786702014292],"luv":[52.5712108639856694,127.737923683219179,-7.99901644943552803],"rgb":[0.933333333333333348,0.133333333333333331,0.466666666666666674],"xyz":[0.391605301474391154,0.206562503189564761,0.193783795334800363],"hpluv":[356.416786702014292,308.930679724572485,52.5712108639856694],"hsluv":[356.416786702014292,92.4494947830095,52.5712108639856694]},"#ee2288":{"lch":[53.0608018273771194,122.127216672078461,350.491948161024197],"luv":[53.0608018273771194,120.449481512132621,-20.1737318195523763],"rgb":[0.933333333333333348,0.133333333333333331,0.533333333333333326],"xyz":[0.402745718576334955,0.211018670030342359,0.25245665873837253],"hpluv":[350.491948161024197,292.063965437042782,53.0608018273771194],"hsluv":[350.491948161024197,92.892885362452958,53.0608018273771194]},"#ee2299":{"lch":[53.6259244704506557,117.615935516390621,343.699890485995525],"luv":[53.6259244704506557,112.888334232708232,-33.0110933105844282],"rgb":[0.933333333333333348,0.133333333333333331,0.6],"xyz":[0.415802682685407654,0.216241455673971517,0.32122333637949041],"hpluv":[343.699890485995525,278.311211390643507,53.6259244704506557],"hsluv":[343.699890485995525,93.3505397228777412,53.6259244704506557]},"#ee22aa":{"lch":[54.266455218013121,114.955451111725907,336.284451026203612],"luv":[54.266455218013121,105.247863162980167,-46.2346519390706305],"rgb":[0.933333333333333348,0.133333333333333331,0.66666666666666663],"xyz":[0.43086037565066021,0.222264532860072611,0.400527185996489],"hpluv":[336.284451026203612,268.805062052359688,54.266455218013121],"hsluv":[336.284451026203612,93.8102001508292,54.266455218013121]},"#ee22bb":{"lch":[54.981534566577821,114.440827463928798,328.608334651454868],"luv":[54.981534566577821,97.6897319326175,-59.6105633722921],"rgb":[0.933333333333333348,0.133333333333333331,0.733333333333333282],"xyz":[0.447997967757996884,0.22911956970300737,0.490785171095130757],"hpluv":[328.608334651454868,264.121319791368,54.981534566577821],"hsluv":[328.608334651454868,94.2616688954678636,54.981534566577821]},"#ee22cc":{"lch":[55.7696584616915629,116.118636638570607,321.077185717181408],"luv":[55.7696584616915629,90.3394913251054419,-72.9541916679335856],"rgb":[0.933333333333333348,0.133333333333333331,0.8],"xyz":[0.467290343201718583,0.236836519880496171,0.592391681765400913],"hpluv":[321.077185717181408,264.206361207665168,55.7696584616915629],"hsluv":[321.077185717181408,94.6970823725699518,55.7696584616915629]},"#ee22dd":{"lch":[56.6287730491083749,119.812596042269817,314.038835862099],"luv":[56.6287730491083749,83.2872216309056,-86.1295354880806201],"rgb":[0.933333333333333348,0.133333333333333331,0.866666666666666696],"xyz":[0.488808668752352182,0.245443850100749705,0.70572152966540691],"hpluv":[314.038835862099,268.475495638829329,56.6287730491083749],"hsluv":[314.038835862099,95.1108639535381,56.6287730491083749]},"#ee22ee":{"lch":[57.5563705104872128,125.203701850491953,307.715012949243658],"luv":[57.5563705104872128,76.5914038981754,-99.0440498261932163],"rgb":[0.933333333333333348,0.133333333333333331,0.933333333333333348],"xyz":[0.512620849018526892,0.254968722207219722,0.831132345733930133],"hpluv":[307.715012949243658,276.03432908057755,57.5563705104872128],"hsluv":[307.715012949243658,95.4994708803944263,57.5563705104872128]},"#ee22ff":{"lch":[58.5495832280214046,131.922896299071255,302.192710378625122],"luv":[58.5495832280214046,70.2843784028787582,-111.641196341030223],"rgb":[0.933333333333333348,0.133333333333333331,1],"xyz":[0.538791897428358313,0.265437141571152446,0.968966534025712],"hpluv":[302.192710378625122,285.914180736870946,58.5495832280214046],"hsluv":[302.192710378625122,99.9999999999989,58.5495832280214046]},"#ee3300":{"lch":[52.4512471844783761,153.77210005382733,15.1254552240259841],"luv":[52.4512471844783761,148.444942331914945,40.1242800687903269],"rgb":[0.933333333333333348,0.2,0],"xyz":[0.364428831115539142,0.205480270388441244,0.0204736224723888437],"hpluv":[15.1254552240259841,372.015515114283232,52.4512471844783761],"hsluv":[15.1254552240259841,100.000000000002174,52.4512471844783761]},"#ee3311":{"lch":[52.4961529429458693,152.446596739109111,14.6331501802662043],"luv":[52.4961529429458693,147.501711829562538,38.5124637576621893],"rgb":[0.933333333333333348,0.2,0.0666666666666666657],"xyz":[0.365440496615176247,0.205884936588296097,0.0258017274371444769],"hpluv":[14.6331501802662043,368.493287978140756,52.4961529429458693],"hsluv":[14.6331501802662043,96.9493433827183395,52.4961529429458693]},"#ee3322":{"lch":[52.5792408568970302,150.061966488521733,13.7129404445972121],"luv":[52.5792408568970302,145.784540850223095,35.5733247742160685],"rgb":[0.933333333333333348,0.2,0.133333333333333331],"xyz":[0.367315854753653304,0.206635079843686925,0.0356786136331236695],"hpluv":[13.7129404445972121,362.155969729293304,52.5792408568970302],"hsluv":[13.7129404445972121,91.3983957113456,52.5792408568970302]},"#ee3333":{"lch":[52.7156069212027916,146.335083442311,12.177050630061796],"luv":[52.7156069212027916,143.042611430097821,30.8669396171076365],"rgb":[0.933333333333333348,0.2,0.2],"xyz":[0.370403605486111,0.207870180136670024,0.0519407674907348127],"hpluv":[12.177050630061796,352.248031751653059,52.7156069212027916],"hsluv":[12.177050630061796,82.5426319963487316,52.7156069212027916]},"#ee3344":{"lch":[52.9115382124740705,141.372894204534333,9.91688783885485314],"luv":[52.9115382124740705,139.260586308771792,24.3471623953096028],"rgb":[0.933333333333333348,0.2,0.266666666666666663],"xyz":[0.374861600730329925,0.209653378234357618,0.0754195424436214512],"hpluv":[9.91688783885485314,339.043238938553714,52.9115382124740705],"hsluv":[9.91688783885485314,83.0163224279527867,52.9115382124740705]},"#ee3355":{"lch":[53.1718605143623222,135.462446214194244,6.82400118051175664],"luv":[53.1718605143623222,134.502806079917804,16.0956357737583851],"rgb":[0.933333333333333348,0.2,0.333333333333333315],"xyz":[0.38082401476969191,0.212038343850102451,0.106821589717595367],"hpluv":[6.82400118051175664,323.278173463789,53.1718605143623222],"hsluv":[6.82400118051175664,83.6110915378108,53.1718605143623222]},"#ee3366":{"lch":[53.5002196972096158,129.050901787066266,2.79642975700151464],"luv":[53.5002196972096158,128.89722530875369,6.29607494868134765],"rgb":[0.933333333333333348,0.2,0.4],"xyz":[0.388409010543200095,0.215072342159505742,0.146769234124739328],"hpluv":[2.79642975700151464,306.086943567777439,53.5002196972096158],"hsluv":[2.79642975700151464,84.310080928774866,53.5002196972096158]},"#ee3377":{"lch":[53.8992319384372252,122.709031404530748,357.759441587930837],"luv":[53.8992319384372252,122.615219389586755,-4.79732866099687261],"rgb":[0.933333333333333348,0.2,0.466666666666666674],"xyz":[0.397723023563402,0.218797947367586565,0.195823036031137238],"hpluv":[357.759441587930837,288.89051161323988,53.8992319384372252],"hsluv":[357.759441587930837,85.0909052409050872,53.8992319384372252]},"#ee3388":{"lch":[54.3705825415329,117.074862235921088,351.703100554939169],"luv":[54.3705825415329,115.849509832295894,-16.8942131860788436],"rgb":[0.933333333333333348,0.2,0.533333333333333326],"xyz":[0.408863440665345801,0.223254114208364163,0.254495899434709405],"hpluv":[351.703100554939169,273.2366774905733,54.3705825415329],"hsluv":[351.703100554939169,85.9285066952877,54.3705825415329]},"#ee3399":{"lch":[54.9151057717267292,112.774715889061866,344.730687431692274],"luv":[54.9151057717267292,108.793611621096844,-29.6999430015709507],"rgb":[0.933333333333333348,0.2,0.6],"xyz":[0.4219204047744185,0.22847689985199332,0.323262577075827284],"hpluv":[344.730687431692274,260.590898768244074,54.9151057717267292],"hsluv":[344.730687431692274,86.7978129198036896,54.9151057717267292]},"#ee33aa":{"lch":[55.5328602544255,110.325325240584178,337.093995035693695],"luv":[55.5328602544255,101.625579555338021,-42.9408776049389047],"rgb":[0.933333333333333348,0.2,0.66666666666666663],"xyz":[0.436978097739671056,0.234499977038094415,0.402566426692825885],"hpluv":[337.093995035693695,252.095155701888757,55.5328602544255],"hsluv":[337.093995035693695,87.6758366884225779,55.5328602544255]},"#ee33bb":{"lch":[56.2232062298057826,110.03895679054483,329.178007243031175],"luv":[56.2232062298057826,94.4974163460242664,-56.3809392922602726],"rgb":[0.933333333333333348,0.2,0.733333333333333282],"xyz":[0.454115689847007731,0.241355013881029173,0.492824411791467631],"hpluv":[329.178007243031175,248.353441541401367,56.2232062298057826],"hsluv":[329.178007243031175,88.5430404155392665,56.2232062298057826]},"#ee33cc":{"lch":[56.9848866198670123,111.971807156825847,321.417898872172259],"luv":[56.9848866198670123,87.5300782585605788,-69.8295854062993726],"rgb":[0.933333333333333348,0.2,0.8],"xyz":[0.47340806529072943,0.249071964058517975,0.594430922461737787],"hpluv":[321.417898872172259,249.337916143678171,56.9848866198670123],"hsluv":[321.417898872172259,89.3839737673679764,56.9848866198670123]},"#ee33dd":{"lch":[57.8161114567543848,115.945977330727956,314.185904182223908],"luv":[57.8161114567543848,80.813036999634221,-83.1427850752753557],"rgb":[0.933333333333333348,0.2,0.866666666666666696],"xyz":[0.494926390841363029,0.257679294278771509,0.707760770361743785],"hpluv":[314.185904182223908,254.475591939392586,57.8161114567543848],"hsluv":[314.185904182223908,90.1873197259471482,57.8161114567543848]},"#ee33ee":{"lch":[58.7146439354817886,121.632779311923699,307.715012949243715],"luv":[58.7146439354817886,74.4069479563921448,-96.2192241652253415],"rgb":[0.933333333333333348,0.2,0.933333333333333348],"xyz":[0.518738571107537738,0.267204166385241526,0.833171586430267],"hpluv":[307.715012949243715,262.87151341613469,58.7146439354817886],"hsluv":[307.715012949243715,90.9455375510239747,58.7146439354817886]},"#ee33ff":{"lch":[59.6778857977730581,128.651158016084139,302.091050100274117],"luv":[59.6778857977730581,68.3480180420837229,-108.993893813362092],"rgb":[0.933333333333333348,0.2,1],"xyz":[0.544909619517369159,0.27767258574917425,0.971005774722048853],"hpluv":[302.091050100274117,273.551812848380507,59.6778857977730581],"hsluv":[302.091050100274117,99.9999999999986784,59.6778857977730581]},"#ee4400":{"lch":[54.3591594970822598,145.188828472067655,17.4116852889838647],"luv":[54.3591594970822598,138.536177662057611,43.4456372018905412],"rgb":[0.933333333333333348,0.266666666666666663,0],"xyz":[0.373261401598505183,0.223145411354373546,0.023417812633377437],"hpluv":[17.4116852889838647,338.922026437804789,54.3591594970822598],"hsluv":[17.4116852889838647,100.000000000002217,54.3591594970822598]},"#ee4411":{"lch":[54.4016650840252112,143.940172045268554,16.9187727396215735],"luv":[54.4016650840252112,137.710194578710485,41.8888462184768713],"rgb":[0.933333333333333348,0.266666666666666663,0.0666666666666666657],"xyz":[0.374273067098142287,0.223550077554228399,0.0287459175981330667],"hpluv":[16.9187727396215735,335.744689025208913,54.4016650840252112],"hsluv":[16.9187727396215735,97.1754310281257574,54.4016650840252112]},"#ee4422":{"lch":[54.4803236312215944,141.690847159829417,15.9963876830432117],"luv":[54.4803236312215944,136.204446081142294,39.0467032744039173],"rgb":[0.933333333333333348,0.266666666666666663,0.133333333333333331],"xyz":[0.376148425236619344,0.224300220809619227,0.0386228037941122662],"hpluv":[15.9963876830432117,330.020900264600868,54.4803236312215944],"hsluv":[15.9963876830432117,92.0288025918740118,54.4803236312215944]},"#ee4433":{"lch":[54.6094526105793534,138.167821982121467,14.4538486850626899],"luv":[54.6094526105793534,133.794673004457735,34.4867004352900608],"rgb":[0.933333333333333348,0.266666666666666663,0.2],"xyz":[0.37923617596907705,0.225535321102602326,0.0548849576517234095],"hpluv":[14.4538486850626899,321.054243711338643,54.6094526105793534],"hsluv":[14.4538486850626899,83.7991355104008591,54.6094526105793534]},"#ee4444":{"lch":[54.7950558424119549,133.462657054844783,12.1770506300618084],"luv":[54.7950558424119549,130.459808710538397,28.151716454753565],"rgb":[0.933333333333333348,0.266666666666666663,0.266666666666666663],"xyz":[0.383694171213295965,0.22731851920028992,0.078363732604610048],"hpluv":[12.1770506300618084,309.070617226475065,54.7950558424119549],"hsluv":[12.1770506300618084,79.6495466444067546,54.7950558424119549]},"#ee4455":{"lch":[55.04178262974213,127.837203216659944,9.0482956458548145],"luv":[55.04178262974213,126.246413461005446,20.1045670057943724],"rgb":[0.933333333333333348,0.266666666666666663,0.333333333333333315],"xyz":[0.38965658525265795,0.229703484816034753,0.109765779878583963],"hpluv":[9.0482956458548145,294.716259365516066,55.04178262974213],"hsluv":[9.0482956458548145,80.0457187830871106,55.04178262974213]},"#ee4466":{"lch":[55.3531965298607105,121.710491561886229,4.95183922571805102],"luv":[55.3531965298607105,121.256220070521849,10.5058483924504795],"rgb":[0.933333333333333348,0.266666666666666663,0.4],"xyz":[0.397241581026166135,0.232737483125438044,0.149713424285727925],"hpluv":[4.95183922571805102,279.013127650855779,55.3531965298607105],"hsluv":[4.95183922571805102,80.511500113091131,55.3531965298607105]},"#ee4477":{"lch":[55.7319177265462855,115.631099927359429,359.795147057523252],"luv":[55.7319177265462855,115.63036086114974,-0.41342173536332294],"rgb":[0.933333333333333348,0.266666666666666663,0.466666666666666674],"xyz":[0.406555594046368041,0.236463088333518867,0.198767226192125834],"hpluv":[359.795147057523252,263.275227085929203,55.7319177265462855],"hsluv":[359.795147057523252,81.0316034214938412,55.7319177265462855]},"#ee4488":{"lch":[56.1797144871475069,110.229334232011354,353.550243523911263],"luv":[56.1797144871475069,109.531664472369371,-12.3822697089333467],"rgb":[0.933333333333333348,0.266666666666666663,0.533333333333333326],"xyz":[0.417696011148311841,0.240919255174296465,0.257440089595698],"hpluv":[353.550243523911263,248.975712077739217,56.1797144871475069],"hsluv":[353.550243523911263,81.5885451367485217,56.1797144871475069]},"#ee4499":{"lch":[56.6975745677487,106.142668326601637,346.310852745323245],"luv":[56.6975745677487,103.127575819694869,-25.1190992084518889],"rgb":[0.933333333333333348,0.266666666666666663,0.6],"xyz":[0.430752975257384541,0.246142040817925623,0.326206767236815909],"hpluv":[346.310852745323245,237.55536706581762,56.6975745677487],"hsluv":[346.310852745323245,82.1643886194057,56.6975745677487]},"#ee44aa":{"lch":[57.2857706939250164,103.913945498461985,338.339047623856459],"luv":[57.2857706939250164,96.5759938315173798,-38.356035828954532],"rgb":[0.933333333333333348,0.266666666666666663,0.66666666666666663],"xyz":[0.445810668222637096,0.252165118004026745,0.405510616853814509],"hpluv":[338.339047623856459,230.179372132151769,57.2857706939250164],"hsluv":[338.339047623856459,82.742186475039972,57.2857706939250164]},"#ee44bb":{"lch":[57.9439265752057224,103.883653730246948,330.054621671216069],"luv":[57.9439265752057224,90.015359877018625,-51.8560362788815183],"rgb":[0.933333333333333348,0.266666666666666663,0.733333333333333282],"xyz":[0.462948260329973771,0.259020154846961503,0.495768601952456256],"hpluv":[330.054621671216069,227.498543532010189,57.9439265752057224],"hsluv":[330.054621671216069,83.3069826860278,57.9439265752057224]},"#ee44cc":{"lch":[58.6710858878032866,106.123661593235155,321.940977409416575],"luv":[58.6710858878032866,83.5592367986741493,-65.4223623509468837],"rgb":[0.933333333333333348,0.266666666666666663,0.8],"xyz":[0.48224063577369547,0.266737105024450305,0.597375112622726356],"hpluv":[321.940977409416575,229.523641905846944,58.6710858878032866],"hsluv":[321.940977409416575,83.8463488142865288,58.6710858878032866]},"#ee44dd":{"lch":[59.4657843936948041,110.45324904546132,314.41066654104867],"luv":[59.4657843936948041,77.2947793232282407,-78.9014405069524116],"rgb":[0.933333333333333348,0.266666666666666663,0.866666666666666696],"xyz":[0.503758961324329069,0.275344435244703811,0.710704960522732354],"hpluv":[314.41066654104867,235.695163072106425,59.4657843936948041],"hsluv":[314.41066654104867,84.3505154479208699,59.4657843936948041]},"#ee44ee":{"lch":[60.3261240941145189,116.527805305600168,307.715012949243771],"luv":[60.3261240941145189,71.28406005268711,-92.180866733529669],"rgb":[0.933333333333333348,0.266666666666666663,0.933333333333333348],"xyz":[0.527571141590503778,0.284869307351173828,0.836115776591255577],"hpluv":[307.715012949243771,245.111377339321677,60.3261240941145189],"hsluv":[307.715012949243771,84.8122051950840898,60.3261240941145189]},"#ee44ff":{"lch":[61.2498476847862321,123.946828366557639,301.937515996566106],"luv":[61.2498476847862321,65.5671420475233617,-105.184438705774298],"rgb":[0.933333333333333348,0.266666666666666663,1],"xyz":[0.553742190000335199,0.295337726715106552,0.973949964883037422],"hpluv":[301.937515996566106,256.785047727470896,61.2498476847862321],"hsluv":[301.937515996566106,99.9999999999986073,61.2498476847862321]},"#ee5500":{"lch":[56.7595334156469136,135.29504726150742,20.5772435658132551],"luv":[56.7595334156469136,126.663115619922038,47.5521288161507414],"rgb":[0.933333333333333348,0.333333333333333315,0],"xyz":[0.385074658312851148,0.24677192478306581,0.0273555648714926478],"hpluv":[20.5772435658132551,302.470071141489655,56.7595334156469136],"hsluv":[20.5772435658132551,100.000000000002331,56.7595334156469136]},"#ee5511":{"lch":[56.7992830001534799,134.121232245619609,20.0864579205919],"luv":[56.7992830001534799,125.963368804879124,46.0622910677426],"rgb":[0.933333333333333348,0.333333333333333315,0.0666666666666666657],"xyz":[0.386086323812488252,0.247176590982920663,0.0326836698362482775],"hpluv":[20.0864579205919,299.636011805134103,56.7992830001534799],"hsluv":[20.0864579205919,97.4301566790671245,56.7992830001534799]},"#ee5522":{"lch":[56.8728535321199331,132.003018379302972,19.1666168944474329],"luv":[56.8728535321199331,124.685803630375247,43.3387498007741385],"rgb":[0.933333333333333348,0.333333333333333315,0.133333333333333331],"xyz":[0.387961681950965309,0.247926734238311491,0.042560556032227477],"hpluv":[19.1666168944474329,294.522290528054612,56.8728535321199331],"hsluv":[19.1666168944474329,92.7404035063857748,56.8728535321199331]},"#ee5533":{"lch":[56.9936637318031813,128.675597773649343,17.6241311186411558],"luv":[56.9936637318031813,122.635981466153211,38.9592801812266671],"rgb":[0.933333333333333348,0.333333333333333315,0.2],"xyz":[0.391049432683423,0.24916183453129459,0.0588227098898386203],"hpluv":[17.6241311186411558,286.489655583397507,56.9936637318031813],"hsluv":[17.6241311186411558,85.2217597168545353,56.9936637318031813]},"#ee5544":{"lch":[57.1673833238913431,124.212647444540593,15.3377586553938237],"luv":[57.1673833238913431,119.788604494467549,32.8553194848226298],"rgb":[0.933333333333333348,0.333333333333333315,0.266666666666666663],"xyz":[0.39550742792764193,0.250945032628982156,0.0823014848427252588],"hpluv":[15.3377586553938237,275.712737821839653,57.1673833238913431],"hsluv":[15.3377586553938237,78.8138286806830308,57.1673833238913431]},"#ee5555":{"lch":[57.3984455800741813,118.847398490007407,12.1770506300618084],"luv":[57.3984455800741813,116.173386735287238,25.068871978930396],"rgb":[0.933333333333333348,0.333333333333333315,0.333333333333333315],"xyz":[0.401469841967003915,0.253329998244727,0.113703532116699174],"hpluv":[12.1770506300618084,262.741620924066638,57.3984455800741813],"hsluv":[12.1770506300618084,79.1862648733910817,57.3984455800741813]},"#ee5566":{"lch":[57.6903015433249777,112.967028718059339,8.00617638558467881],"luv":[57.6903015433249777,111.865945908872092,15.7340307391382019],"rgb":[0.933333333333333348,0.333333333333333315,0.4],"xyz":[0.409054837740512101,0.256363996554130336,0.153651176523843136],"hpluv":[8.00617638558467881,248.478160638648092,57.6903015433249777],"hsluv":[8.00617638558467881,79.626682914648967,57.6903015433249777]},"#ee5577":{"lch":[58.0455538260385,107.095574323644513,2.70497781295448236],"luv":[58.0455538260385,106.976246145051803,5.05418642558356],"rgb":[0.933333333333333348,0.333333333333333315,0.466666666666666674],"xyz":[0.418368850760714,0.260089601762211131,0.202704978430241045],"hpluv":[2.70497781295448236,234.121819944652458,58.0455538260385],"hsluv":[2.70497781295448236,80.121743738144815,58.0455538260385]},"#ee5588":{"lch":[58.4660405277881523,101.857434077675435,356.214905006905212],"luv":[58.4660405277881523,101.63524992227579,-6.72405012805051783],"rgb":[0.933333333333333348,0.333333333333333315,0.533333333333333326],"xyz":[0.429509267862657806,0.264545768602988729,0.261377841833813185],"hpluv":[356.214905006905212,221.069268787819283,58.4660405277881523],"hsluv":[356.214905006905212,80.6557447307456385,58.4660405277881523]},"#ee5599":{"lch":[58.9528982622070714,97.9100075268454475,348.609359498013816],"luv":[58.9528982622070714,95.9815181358717808,-19.3369529719717974],"rgb":[0.933333333333333348,0.333333333333333315,0.6],"xyz":[0.442566231971730506,0.269768554246617887,0.33014451947493112],"hpluv":[348.609359498013816,210.746926462762332,58.9528982622070714],"hsluv":[348.609359498013816,81.2121283261168685,58.9528982622070714]},"#ee55aa":{"lch":[59.5066178042993812,95.8379147411847327,340.160257686713578],"luv":[59.5066178042993812,90.1495111294489817,-32.5264745255299346],"rgb":[0.933333333333333348,0.333333333333333315,0.66666666666666663],"xyz":[0.457623924936983062,0.275791631432719,0.40944836909192972],"hpluv":[340.160257686713578,204.36730380296666,59.5066178042993812],"hsluv":[340.160257686713578,81.7747968800248515,59.5066178042993812]},"#ee55bb":{"lch":[60.1270988419473156,96.02691270708236,331.338718337462637],"luv":[60.1270988419473156,84.2607812264238305,-46.0574501157669],"rgb":[0.933333333333333348,0.333333333333333315,0.733333333333333282],"xyz":[0.474761517044319736,0.282646668275653767,0.499706354190571467],"hpluv":[331.338718337462637,202.657202566236862,60.1270988419473156],"hsluv":[331.338718337462637,82.3290961128101202,60.1270988419473156]},"#ee55cc":{"lch":[60.8137066481247359,98.5745380895967855,322.704854800823],"luv":[60.8137066481247359,78.4184921400445774,-59.728382282288],"rgb":[0.933333333333333348,0.333333333333333315,0.8],"xyz":[0.494053892488041435,0.290363618453142569,0.601312864860841567],"hpluv":[322.704854800823,205.68499115665557,60.8137066481247359],"hsluv":[322.704854800823,82.862416210457269,60.8137066481247359]},"#ee55dd":{"lch":[61.5653314057239669,103.296154527471415,314.73674606959],"luv":[61.5653314057239669,72.7050419742243577,-73.3762387404091925],"rgb":[0.933333333333333348,0.333333333333333315,0.866666666666666696],"xyz":[0.515572218038675,0.298970948673396075,0.714642712760847565],"hpluv":[314.73674606959,212.905685416828703,61.5653314057239669],"hsluv":[314.73674606959,83.3644351442966496,61.5653314057239669]},"#ee55ee":{"lch":[62.3804497031794796,109.822432229930158,307.715012949243942],"luv":[62.3804497031794796,67.1821530808003473,-86.8764923804219364],"rgb":[0.933333333333333348,0.333333333333333315,0.933333333333333348],"xyz":[0.539384398304849744,0.308495820779866092,0.840053528829370788],"hpluv":[307.715012949243942,223.399338603574023,62.3804497031794796],"hsluv":[307.715012949243942,83.8270760150894318,62.3804497031794796]},"#ee55ff":{"lch":[63.2571870514493355,117.722992850638121,301.718618818209791],"luv":[63.2571870514493355,61.8926401270512301,-100.139922827085911],"rgb":[0.933333333333333348,0.333333333333333315,1],"xyz":[0.565555446714681165,0.318964240143798816,0.977887717121152633],"hpluv":[301.718618818209791,236.15152010236153,63.2571870514493355],"hsluv":[301.718618818209791,99.9999999999986358,63.2571870514493355]},"#ee6600":{"lch":[59.6010827175637274,124.896403377083828,24.7633991985742],"luv":[59.6010827175637274,113.411584725929117,52.315619335764687],"rgb":[0.933333333333333348,0.4,0],"xyz":[0.400102716018697624,0.276828040194759151,0.032364917440108],"hpluv":[24.7633991985742,265.910269095548301,59.6010827175637274],"hsluv":[24.7633991985742,100.000000000002458,59.6010827175637274]},"#ee6611":{"lch":[59.6379025762155521,123.785593795891074,24.2806773941880323],"luv":[59.6379025762155521,112.835768380983566,50.9014990474188],"rgb":[0.933333333333333348,0.4,0.0666666666666666657],"xyz":[0.401114381518334728,0.277232706394614,0.0376930224048636284],"hpluv":[24.2806773941880323,263.38259338209491,59.6379025762155521],"hsluv":[24.2806773941880323,97.6946368166697425,59.6379025762155521]},"#ee6622":{"lch":[59.7060621192549235,121.776511986799889,23.3741045361832462],"luv":[59.7060621192549235,111.782804083827386,48.312768320888857],"rgb":[0.933333333333333348,0.4,0.133333333333333331],"xyz":[0.402989739656811785,0.277982849650004804,0.0475699086008428279],"hpluv":[23.3741045361832462,258.812011755725052,59.7060621192549235],"hsluv":[23.3741045361832462,93.4807634058905847,59.7060621192549235]},"#ee6633":{"lch":[59.818019190990654,118.60827278102343,21.848413141726418],"luv":[59.818019190990654,110.088842330137865,44.1403349161252621],"rgb":[0.933333333333333348,0.4,0.2],"xyz":[0.406077490389269491,0.279217949942987931,0.0638320624584539642],"hpluv":[21.848413141726418,251.606745577849637,59.818019190990654],"hsluv":[21.848413141726418,86.7067277856042722,59.818019190990654]},"#ee6644":{"lch":[59.9790782653121,114.334087778781978,19.5741908506499591],"luv":[59.9790782653121,107.726545105393242,38.3050271878496318],"rgb":[0.933333333333333348,0.4,0.266666666666666663],"xyz":[0.410535485633488406,0.281001148040675497,0.0873108374113406],"hpluv":[19.5741908506499591,241.888527179759762,59.9790782653121],"hsluv":[19.5741908506499591,77.7164494297015551,59.9790782653121]},"#ee6655":{"lch":[60.1934276072459227,109.155383321287928,16.4048569251700904],"luv":[60.1934276072459227,104.711671726378157,30.827966398783424],"rgb":[0.933333333333333348,0.4,0.333333333333333315],"xyz":[0.416497899672850391,0.283386113656420358,0.118712884685314518],"hpluv":[16.4048569251700904,230.109957101660228,60.1934276072459227],"hsluv":[16.4048569251700904,78.0627041699660822,60.1934276072459227]},"#ee6666":{"lch":[60.4643778553048179,103.423697151150392,12.1770506300619203],"luv":[60.4643778553048179,101.096711576265875,21.8155000143976636],"rgb":[0.933333333333333348,0.4,0.4],"xyz":[0.424082895446358576,0.286420111965823676,0.15866052909245848],"hpluv":[12.1770506300619203,217.050003231938149,60.4643778553048179],"hsluv":[12.1770506300619203,78.4746058088251601,60.4643778553048179]},"#ee6677":{"lch":[60.7944870758990845,97.6355083856116,6.72933164538236728],"luv":[60.7944870758990845,96.9628770314166388,11.4408468002682859],"rgb":[0.933333333333333348,0.4,0.466666666666666674],"xyz":[0.433396908466560482,0.290145717173904472,0.207714330998856389],"hpluv":[6.72933164538236728,203.79002370037793,60.7944870758990845],"hsluv":[6.72933164538236728,78.9407958828298177,60.7944870758990845]},"#ee6688":{"lch":[61.1856375663111294,92.4106294683140419,359.951978350089689],"luv":[61.1856375663111294,92.4105970103857,-0.0774526573243247418],"rgb":[0.933333333333333348,0.4,0.533333333333333326],"xyz":[0.444537325568504282,0.294601884014682069,0.266387194402428529],"hpluv":[359.951978350089689,191.6512981090967,61.1856375663111294],"hsluv":[359.951978350089689,79.4474583444281706,61.1856375663111294]},"#ee6699":{"lch":[61.6390913266860281,88.437141466109523,351.875732288608958],"luv":[61.6390913266860281,87.5495765855601746,-12.4979850530316181],"rgb":[0.933333333333333348,0.4,0.6],"xyz":[0.457594289677577,0.299824669658311227,0.335153872043546464],"hpluv":[351.875732288608958,182.061365307506776,61.6390913266860281],"hsluv":[351.875732288608958,79.9795786975914353,61.6390913266860281]},"#ee66aa":{"lch":[62.1555369290736337,86.3639450462453624,342.77320214224],"luv":[62.1555369290736337,82.489654306882187,-25.5770978862333536],"rgb":[0.933333333333333348,0.4,0.66666666666666663],"xyz":[0.472651982642829538,0.305847746844412349,0.414457721660545064],"hpluv":[342.77320214224,176.316102232879075,62.1555369290736337],"hsluv":[342.77320214224,80.5221008496243,62.1555369290736337]},"#ee66bb":{"lch":[62.735134131647655,86.6495273870251168,333.187217955259598],"luv":[62.735134131647655,77.3334216921159765,-39.0855790002422907],"rgb":[0.933333333333333348,0.4,0.733333333333333282],"xyz":[0.489789574750166212,0.312702783687347108,0.504715706759186755],"hpluv":[333.187217955259598,175.264796900814019,62.735134131647655],"hsluv":[333.187217955259598,81.0608551813628679,62.735134131647655]},"#ee66cc":{"lch":[63.3775592853136516,89.4351699392481549,323.800511847500275],"luv":[63.3775592853136516,72.1711045195964545,-52.8202735176909144],"rgb":[0.933333333333333348,0.4,0.8],"xyz":[0.509081950193887911,0.320419733864835909,0.606322217429456911],"hpluv":[323.800511847500275,179.065596131410075,63.3775592853136516],"hsluv":[323.800511847500275,81.5831918811758072,63.3775592853136516]},"#ee66dd":{"lch":[64.0820526997291751,94.5324861988586918,315.200217206616742],"luv":[64.0820526997291751,67.0777383779463179,-66.6105694393704795],"rgb":[0.933333333333333348,0.4,0.866666666666666696],"xyz":[0.53060027574452151,0.329027064085089416,0.719652065329462909],"hpluv":[315.200217206616742,187.190580763285084,64.0820526997291751],"hsluv":[315.200217206616742,82.0783141076240241,64.0820526997291751]},"#ee66ee":{"lch":[64.8474680131467,101.534802649490857,307.715012949244169],"luv":[64.8474680131467,62.1123254704966499,-80.32045302236628],"rgb":[0.933333333333333348,0.4,0.933333333333333348],"xyz":[0.55441245601069622,0.338551936191559433,0.845062881397986132],"hpluv":[307.715012949244169,198.683239249207219,64.8474680131467],"hsluv":[307.715012949244169,82.5373501246235,64.8474680131467]},"#ee66ff":{"lch":[65.6723229483953759,109.966867844968618,301.415067453827589],"luv":[65.6723229483953759,57.3184789471434897,-93.8472375449520797],"rgb":[0.933333333333333348,0.4,1],"xyz":[0.580583504420527641,0.349020355555492157,0.982897069689768088],"hpluv":[301.415067453827589,212.480364902930489,65.6723229483953759],"hsluv":[301.415067453827589,99.9999999999984794,65.6723229483953759]},"#ee7700":{"lch":[62.8217158048736763,114.851740825540901,30.0981414692213356],"luv":[62.8217158048736763,99.3660150566978,57.5961580525066097],"rgb":[0.933333333333333348,0.466666666666666674,0],"xyz":[0.418556454072115225,0.313735516301594908,0.0385161634579137],"hpluv":[30.0981414692213356,231.988851559171735,62.8217158048736763],"hsluv":[30.0981414692213356,100.000000000002203,62.8217158048736763]},"#ee7711":{"lch":[62.8555901763931075,113.786950077776382,29.6341042910547],"luv":[62.8555901763931075,98.9037041004629458,56.2630191441096059],"rgb":[0.933333333333333348,0.466666666666666674,0.0666666666666666657],"xyz":[0.419568119571752329,0.314140182501449761,0.0438442684226693288],"hpluv":[29.6341042910547,229.71421718860654,62.8555901763931075],"hsluv":[29.6341042910547,97.9532933827149463,62.8555901763931075]},"#ee7722":{"lch":[62.9183073649527955,111.855609649988921,28.7604537228304977],"luv":[62.9183073649527955,98.0569879769147406,53.8191835600085398],"rgb":[0.933333333333333348,0.466666666666666674,0.133333333333333331],"xyz":[0.421443477710229386,0.314890325756840561,0.0537211546186485284],"hpluv":[28.7604537228304977,225.59011469442973,62.9183073649527955],"hsluv":[28.7604537228304977,94.206312745702121,62.9183073649527955]},"#ee7733":{"lch":[63.0213536795682501,108.794922632811733,27.2836719807386174],"luv":[63.0213536795682501,96.6912591797812411,49.8711899688373208],"rgb":[0.933333333333333348,0.466666666666666674,0.2],"xyz":[0.424531228442687092,0.316125426049823688,0.0699833084762596647],"hpluv":[27.2836719807386174,219.058559128587405,63.0213536795682501],"hsluv":[27.2836719807386174,88.1668112455654,63.0213536795682501]},"#ee7744":{"lch":[63.1696562136619235,104.634411539935968,25.0668522383795889],"luv":[63.1696562136619235,94.7793214210065571,44.3310309972846497],"rgb":[0.933333333333333348,0.466666666666666674,0.266666666666666663],"xyz":[0.428989223686906,0.317908624147511254,0.0934620834291463],"hpluv":[25.0668522383795889,210.186756956079222,63.1696562136619235],"hsluv":[25.0668522383795889,79.7210233436604199,63.1696562136619235]},"#ee7755":{"lch":[63.3671413614491286,99.5393983003294096,21.9455950678528],"luv":[63.3671413614491286,92.3266881357997278,37.2004633286522051],"rgb":[0.933333333333333348,0.466666666666666674,0.333333333333333315],"xyz":[0.434951637726268,0.320293589763256115,0.124864130703120219],"hpluv":[21.9455950678528,199.328877993420377,63.3671413614491286],"hsluv":[21.9455950678528,76.6090179557391,63.3671413614491286]},"#ee7766":{"lch":[63.6169573916324822,93.8195852400781263,17.7221756586824775],"luv":[63.6169573916324822,89.367258373090749,28.5588463614608763],"rgb":[0.933333333333333348,0.466666666666666674,0.4],"xyz":[0.442536633499776177,0.323327588072659433,0.16481177511026418],"hpluv":[17.7221756586824775,187.13711975631665,63.6169573916324822],"hsluv":[17.7221756586824775,76.9903860669667,63.6169573916324822]},"#ee7777":{"lch":[63.9215909451051232,87.936547917610838,12.1770506300618937],"luv":[63.9215909451051232,85.9580160709841863,18.5487447771187846],"rgb":[0.933333333333333348,0.466666666666666674,0.466666666666666674],"xyz":[0.451850646519978083,0.327053193280740229,0.21386557701666209],"hpluv":[12.1770506300618937,174.56660414904394,63.9215909451051232],"hsluv":[12.1770506300618937,77.4248320836617268,63.9215909451051232]},"#ee7788":{"lch":[64.2829374304473,82.5014209284754543,5.11726519711922112],"luv":[64.2829374304473,82.1725895095950847,7.35866757674724514],"rgb":[0.933333333333333348,0.466666666666666674,0.533333333333333326],"xyz":[0.462991063621921883,0.331509360121517827,0.272538440420234229],"hpluv":[5.11726519711922112,162.85647909200884,64.2829374304473],"hsluv":[5.11726519711922112,77.9003779592442669,64.2829374304473]},"#ee7799":{"lch":[64.7023501026032477,78.2413537817778177,356.48599323172067],"luv":[64.7023501026032477,78.0942478632934893,-4.79561177242263259],"rgb":[0.933333333333333348,0.466666666666666674,0.6],"xyz":[0.476048027730994638,0.336732145765147,0.341305118061352164],"hpluv":[356.48599323172067,153.446019679421255,64.7023501026032477],"hsluv":[356.48599323172067,78.4035888028378167,64.7023501026032477]},"#ee77aa":{"lch":[65.1806796634753596,75.8992199041959,346.522692233148291],"luv":[65.1806796634753596,73.8091300431969302,-17.6890899803221124],"rgb":[0.933333333333333348,0.466666666666666674,0.66666666666666663],"xyz":[0.491105720696247139,0.342755222951248106,0.420608967678350765],"hpluv":[346.522692233148291,147.76029654451807,65.1806796634753596],"hsluv":[346.522692233148291,78.9205551316135256,65.1806796634753596]},"#ee77bb":{"lch":[65.7183104585581646,76.0514193956389875,335.85959217762661],"luv":[65.7183104585581646,69.4004166910179094,-31.1030634376174824],"rgb":[0.933333333333333348,0.466666666666666674,0.733333333333333282],"xyz":[0.508243312803583813,0.349610259794182865,0.510866952776992456],"hpluv":[335.85959217762661,146.845370988132231,65.7183104585581646],"hsluv":[335.85959217762661,79.4377328719524627,65.7183104585581646]},"#ee77cc":{"lch":[66.3151963922866,78.9180750862202416,325.378996221060731],"luv":[66.3151963922866,64.9439055461397459,-44.8369457894756067],"rgb":[0.933333333333333348,0.466666666666666674,0.8],"xyz":[0.527535688247305568,0.357327209971671667,0.612473463447262612],"hpluv":[325.378996221060731,151.008971652655617,66.3151963922866],"hsluv":[325.378996221060731,79.9425706591808307,66.3151963922866]},"#ee77dd":{"lch":[66.9708980107196652,84.3115421117289543,315.859798591258766],"luv":[66.9708980107196652,60.5051526262217152,-58.7159487612646842],"rgb":[0.933333333333333348,0.466666666666666674,0.866666666666666696],"xyz":[0.549054013797939056,0.365934540191925173,0.725803311347268609],"hpluv":[315.859798591258766,159.749768323538632,66.9708980107196652],"hsluv":[315.859798591258766,80.4238985377879345,66.9708980107196652]},"#ee77ee":{"lch":[67.6846211881785251,91.7687338274624409,307.715012949244453],"luv":[67.6846211881785251,56.1380858067324056,-72.5948746830766112],"rgb":[0.933333333333333348,0.466666666666666674,0.933333333333333348],"xyz":[0.572866194064113765,0.37545941229839519,0.851214127415791832],"hpluv":[307.715012949244453,172.045795420537047,67.6846211881785251],"hsluv":[307.715012949244453,80.8720902094370757,67.6846211881785251]},"#ee77ff":{"lch":[68.4552572311626761,100.746525491660947,300.997699928034137],"luv":[68.4552572311626761,51.8848298156272918,-86.3587102361150585],"rgb":[0.933333333333333348,0.466666666666666674,1],"xyz":[0.599037242473945186,0.385927831662327914,0.989048315707573789],"hpluv":[300.997699928034137,186.750854251257437,68.4552572311626761],"hsluv":[300.997699928034137,99.9999999999982,68.4552572311626761]},"#ee8800":{"lch":[66.3576417146455,105.981377873447272,36.6492300119340797],"luv":[66.3576417146455,85.0293774107247771,63.2618165491550428],"rgb":[0.933333333333333348,0.533333333333333326,0],"xyz":[0.440628823797085678,0.35788025575153648,0.045873620032903642],"hpluv":[36.6492300119340797,202.664622836431278,66.3576417146455],"hsluv":[36.6492300119340797,100.000000000002288,66.3576417146455]},"#ee8811":{"lch":[66.3886714607036907,104.946342152180421,36.2201184819273792],"luv":[66.3886714607036907,84.6657638625926552,62.0116373004794923],"rgb":[0.933333333333333348,0.533333333333333326,0.0666666666666666657],"xyz":[0.441640489296722782,0.358284921951391333,0.0512017249976592717],"hpluv":[36.2201184819273792,200.591559481147556,66.3886714607036907],"hsluv":[36.2201184819273792,98.1954604930108701,66.3886714607036907]},"#ee8822":{"lch":[66.4461305943750773,103.062674429887437,35.4099902294173745],"luv":[66.4461305943750773,83.9988395226221201,59.7169140151578],"rgb":[0.933333333333333348,0.533333333333333326,0.133333333333333331],"xyz":[0.443515847435199839,0.359035065206782134,0.0610786111936384712],"hpluv":[35.4099902294173745,196.820821024497235,66.4461305943750773],"hsluv":[35.4099902294173745,94.8869488142181581,66.4461305943750773]},"#ee8833":{"lch":[66.5405621290638578,100.059958052790449,34.0337853874148877],"luv":[66.5405621290638578,82.920456825626232,56.0017235927220369],"rgb":[0.933333333333333348,0.533333333333333326,0.2],"xyz":[0.446603598167657545,0.36027016549976526,0.0773407650512496214],"hpluv":[34.0337853874148877,190.815292572549708,66.5405621290638578],"hsluv":[34.0337853874148877,89.5408718212573689,66.5405621290638578]},"#ee8844":{"lch":[66.6765193585480347,95.9403990837829639,31.9512880443390657],"luv":[66.6765193585480347,81.4052672986078107,50.7714745934935223],"rgb":[0.933333333333333348,0.533333333333333326,0.266666666666666663],"xyz":[0.45106159341187646,0.362053363597452826,0.10081954000413626],"hpluv":[31.9512880443390657,182.586190035925256,66.6765193585480347],"hsluv":[31.9512880443390657,82.0371002457568608,66.6765193585480347]},"#ee8855":{"lch":[66.8576614114874559,90.8274017958005,28.983496619036984],"luv":[66.8576614114874559,79.4521157428502391,44.0111147434430805],"rgb":[0.933333333333333348,0.533333333333333326,0.333333333333333315],"xyz":[0.457024007451238445,0.364438329213197687,0.132221587278110175],"hpluv":[28.983496619036984,172.387208051834335,66.8576614114874559],"hsluv":[28.983496619036984,74.7174368883009663,66.8576614114874559]},"#ee8866":{"lch":[67.0869600103699213,84.978663004295683,24.8971939400565283],"luv":[67.0869600103699213,77.081139807049837,35.7752854921339249],"rgb":[0.933333333333333348,0.533333333333333326,0.4],"xyz":[0.464609003224746631,0.367472327522601,0.172169231685254109],"hpluv":[24.8971939400565283,160.735241770302764,67.0869600103699213],"hsluv":[24.8971939400565283,75.0669061044520447,67.0869600103699213]},"#ee8877":{"lch":[67.3668077908477727,78.8051510957513841,19.4009345351312952],"luv":[67.3668077908477727,74.3303771171996743,26.1772205713113095],"rgb":[0.933333333333333348,0.533333333333333326,0.466666666666666674],"xyz":[0.473923016244948536,0.371197932730681801,0.221223033591652019],"hpluv":[19.4009345351312952,148.438980876884,67.3668077908477727],"hsluv":[19.4009345351312952,75.4672397967126329,67.3668077908477727]},"#ee8888":{"lch":[67.6990830402889117,72.8916076032019191,12.177050630062066],"luv":[67.6990830402889117,71.2515799877231757,15.3752661190709663],"rgb":[0.933333333333333348,0.533333333333333326,0.533333333333333326],"xyz":[0.485063433346892336,0.375654099571459399,0.279895896995224214],"hpluv":[12.177050630062066,136.626224949154164,67.6990830402889117],"hsluv":[12.177050630062066,75.9081099773692927,67.6990830402889117]},"#ee8899":{"lch":[68.0851935471165319,67.9986383575237312,2.99916583787236446],"luv":[68.0851935471165319,67.9055003914663615,3.55778513430191889],"rgb":[0.933333333333333348,0.533333333333333326,0.6],"xyz":[0.498120397455965036,0.380876885215088556,0.348662574636342093],"hpluv":[2.99916583787236446,126.732168582193651,68.0851935471165319],"hsluv":[2.99916583787236446,76.3775584855855385,68.0851935471165319]},"#ee88aa":{"lch":[68.5261104708773274,64.9933943358063573,351.976176804910949],"luv":[68.5261104708773274,64.3571165389368,-9.07209226602857832],"rgb":[0.933333333333333348,0.533333333333333326,0.66666666666666663],"xyz":[0.513178090421217648,0.386899962401189679,0.427966424253340694],"hpluv":[351.976176804910949,120.351764916629207,68.5261104708773274],"hsluv":[351.976176804910949,76.8628030471707859,68.5261104708773274]},"#ee88bb":{"lch":[69.0223979406526098,64.6433047463018,339.810246341231903],"luv":[69.0223979406526098,60.6712812589502875,-22.3103670727442456],"rgb":[0.933333333333333348,0.533333333333333326,0.733333333333333282],"xyz":[0.530315682528554211,0.393754999244124437,0.51822440935198244],"hpluv":[339.810246341231903,118.842788638920595,69.0223979406526098],"hsluv":[339.810246341231903,77.3509666785266887,69.0223979406526098]},"#ee88cc":{"lch":[69.5742414545850778,67.3203562589766307,327.709288072293873],"luv":[69.5742414545850778,56.9091584539883399,-35.9635656031820687],"rgb":[0.933333333333333348,0.533333333333333326,0.8],"xyz":[0.549608057972276,0.401471949421613239,0.619830920022252596],"hpluv":[327.709288072293873,122.782720563937247,69.5742414545850778],"hsluv":[327.709288072293873,77.8296635442389686,69.5742414545850778]},"#ee88dd":{"lch":[70.1814766713242,72.856404222049747,316.817937357318669],"luv":[70.1814766713242,53.1256441200966663,-49.8570112721525547],"rgb":[0.933333333333333348,0.533333333333333326,0.866666666666666696],"xyz":[0.571126383522909564,0.410079279641866745,0.733160767922258594],"hpluv":[316.817937357318669,131.729959343498166,70.1814766713242],"hsluv":[316.817937357318669,78.2874043120714163,70.1814766713242]},"#ee88ee":{"lch":[70.8436192863675558,80.7013698438951224,307.715012949244851],"luv":[70.8436192863675558,49.367799206375345,-63.839889537812887],"rgb":[0.933333333333333348,0.533333333333333326,0.933333333333333348],"xyz":[0.594938563789084274,0.419604151748336762,0.858571583990781817],"hpluv":[307.715012949244851,144.550464850223619,70.8436192863675558],"hsluv":[307.715012949244851,78.7138135635212848,70.8436192863675558]},"#ee88ff":{"lch":[71.5598961203093182,90.2054153167292583,300.42003582834775],"luv":[71.5598961203093182,45.674190228859068,-77.7874366424399426],"rgb":[0.933333333333333348,0.533333333333333326,1],"xyz":[0.621109612198915695,0.430072571112269486,0.996405772282563662],"hpluv":[300.42003582834775,159.956626210428567,71.5598961203093182],"hsluv":[300.42003582834775,99.99999999999784,71.5598961203093182]},"#ee9900":{"lch":[70.1492527845175715,98.9919938823364731,44.3502140795235036],"luv":[70.1492527845175715,70.7872313214223112,69.1995862317686772],"rgb":[0.933333333333333348,0.6,0],"xyz":[0.466498424249553179,0.409619456656472147,0.0544968201837259],"hpluv":[44.3502140795235036,179.06732625175573,70.1492527845175715],"hsluv":[44.3502140795235036,100.000000000002217,70.1492527845175715]},"#ee9911":{"lch":[70.1776126165771785,97.9766822185852533,43.9766782844564119],"luv":[70.1776126165771785,70.5062245085518526,68.0316291449155273],"rgb":[0.933333333333333348,0.6,0.0666666666666666657],"xyz":[0.467510089749190283,0.410024122856327,0.0598249251484815267],"hpluv":[43.9766782844564119,177.15910010767405,70.1776126165771785],"hsluv":[43.9766782844564119,98.4152296143538337,70.1776126165771785]},"#ee9922":{"lch":[70.2301348691785,96.1222676294158447,43.2696050504519505],"luv":[70.2301348691785,69.9901292501651824,65.8852953379296622],"rgb":[0.933333333333333348,0.6,0.133333333333333331],"xyz":[0.46938544788766734,0.410774266111717801,0.0697018113444607262],"hpluv":[43.2696050504519505,173.676009463775955,70.2301348691785],"hsluv":[43.2696050504519505,95.5057584668238,70.2301348691785]},"#ee9933":{"lch":[70.3164728806357573,93.1473438817036339,42.0626701373461103],"luv":[70.3164728806357573,69.1537511222041417,62.4034163964169508],"rgb":[0.933333333333333348,0.6,0.2],"xyz":[0.472473198620125046,0.412009366404700927,0.0859639652020718625],"hpluv":[42.0626701373461103,168.094198140054317,70.3164728806357573],"hsluv":[42.0626701373461103,90.7937976503380213,70.3164728806357573]},"#ee9944":{"lch":[70.4408210614760719,89.024296887742608,40.221678197216157],"luv":[70.4408210614760719,67.9746586813449483,57.4871395488729533],"rgb":[0.933333333333333348,0.6,0.266666666666666663],"xyz":[0.476931193864343961,0.413792564502388494,0.109442740154958501],"hpluv":[40.221678197216157,160.370125602871781,70.4408210614760719],"hsluv":[40.221678197216157,84.1577311163605657,70.4408210614760719]},"#ee9955":{"lch":[70.6065752665828654,83.8291063606938138,37.5652459120346904],"luv":[70.6065752665828654,66.4479455240540631,51.1076276974862154],"rgb":[0.933333333333333348,0.6,0.333333333333333315],"xyz":[0.482893607903705946,0.416177530118133354,0.140844787428932416],"hpluv":[37.5652459120346904,150.656896294971034,70.6065752665828654],"hsluv":[37.5652459120346904,75.5772228053980797,70.6065752665828654]},"#ee9966":{"lch":[70.8165243284349373,77.7550236522342,33.8383101580563],"luv":[70.8165243284349373,64.5842808158336652,43.297971946282189],"rgb":[0.933333333333333348,0.6,0.4],"xyz":[0.490478603677214131,0.419211528427536673,0.180792431836076378],"hpluv":[33.8383101580563,139.326323276972687,70.8165243284349373],"hsluv":[33.8383101580563,72.525293376848623,70.8165243284349373]},"#ee9977":{"lch":[71.0729506656700778,71.1378337295946,28.6840524218341386],"luv":[71.0729506656700778,62.4077841236731601,34.1446901949989154],"rgb":[0.933333333333333348,0.6,0.466666666666666674],"xyz":[0.499792616697416037,0.422937133635617468,0.229846233742474287],"hpluv":[28.6840524218341386,127.009327518651787,71.0729506656700778],"hsluv":[28.6840524218341386,72.8885787597460677,71.0729506656700778]},"#ee9988":{"lch":[71.3776900371935312,64.4963091800695878,21.6331741754282376],"luv":[71.3776900371935312,59.9533946760230378,23.7773918811996943],"rgb":[0.933333333333333348,0.6,0.533333333333333326],"xyz":[0.510933033799359837,0.427393300476395066,0.288519097146046455],"hpluv":[21.6331741754282376,114.659937381049531,71.3776900371935312],"hsluv":[21.6331741754282376,73.2902809537896189,71.3776900371935312]},"#ee9999":{"lch":[71.732171153908709,58.5818834203282179,12.1770506300621602],"luv":[71.732171153908709,57.263818011494017,12.3568690136061505],"rgb":[0.933333333333333348,0.6,0.6],"xyz":[0.523989997908432592,0.432616086120024224,0.35728577478716439],"hpluv":[12.1770506300621602,103.630759412975706,71.732171153908709],"hsluv":[12.1770506300621602,73.7196701825771186,71.732171153908709]},"#ee99aa":{"lch":[72.1374451439022408,54.3863410009709725,0.0659165211073427237],"luv":[72.1374451439022408,54.3863050092105,0.0625693137293968082],"rgb":[0.933333333333333348,0.6,0.66666666666666663],"xyz":[0.539047690873685093,0.438639163306125346,0.436589624404162935],"hpluv":[0.0659165211073427237,95.6683780017161,72.1374451439022408],"hsluv":[0.0659165211073427237,74.1649147609968082,72.1374451439022408]},"#ee99bb":{"lch":[72.5942101669252366,52.9692652640659247,345.882936464906891],"luv":[72.5942101669252366,51.3695627363271683,-12.9194073739288822],"rgb":[0.933333333333333348,0.6,0.733333333333333282],"xyz":[0.556185282981021767,0.445494200149060104,0.526847609502804737],"hpluv":[345.882936464906891,92.5894045166522091,72.5942101669252366],"hsluv":[345.882936464906891,74.6136876066909878,72.5942101669252366]},"#ee99cc":{"lch":[73.1028341171650737,55.013164482536844,331.314039518972208],"luv":[73.1028341171650737,48.2610582375421515,-26.4067893575727517],"rgb":[0.933333333333333348,0.6,0.8],"xyz":[0.575477658424743521,0.453211150326548906,0.628454120173074893],"hpluv":[331.314039518972208,95.4930444317639342,73.1028341171650737],"hsluv":[331.314039518972208,75.0536815693659491,73.1028341171650737]},"#ee99dd":{"lch":[73.6633770412179274,60.4388711558699896,318.269971219550712],"luv":[73.6633770412179274,45.1048908137830935,-40.2294167403973049],"rgb":[0.933333333333333348,0.6,0.866666666666666696],"xyz":[0.596995983975377,0.461818480546802412,0.74178396807308089],"hpluv":[318.269971219550712,104.112780668711437,73.6633770412179274],"hsluv":[318.269971219550712,75.472992612571872,73.6633770412179274]},"#ee99ee":{"lch":[74.2756141069900337,68.5596754700476083,307.71501294924542],"luv":[74.2756141069900337,41.9403078139404499,-54.2350410807456953],"rgb":[0.933333333333333348,0.6,0.933333333333333348],"xyz":[0.620808164241551719,0.471343352653272429,0.867194784141604114],"hpluv":[307.71501294924542,117.128296895720368,74.2756141069900337],"hsluv":[307.71501294924542,75.8603506282489235,74.2756141069900337]},"#ee99ff":{"lch":[74.9390594560707,78.5455210447045857,299.603294913962486],"luv":[74.9390594560707,38.8008486558083519,-68.2927010724659],"rgb":[0.933333333333333348,0.6,1],"xyz":[0.64697921265138314,0.481811772017205153,1.00502897243338585],"hpluv":[299.603294913962486,133.000267199001968,74.9390594560707],"hsluv":[299.603294913962486,99.9999999999973284,74.9390594560707]},"#dd0000":{"lch":[46.1435564305616239,155.182233977468201,12.1770506300617765],"luv":[46.1435564305616239,151.69070515099267,32.7330981276182555],"rgb":[0.866666666666666696,0,0],"xyz":[0.298181282529475455,0.153749723804264049,0.0139772476185688679],"hpluv":[12.1770506300617765,426.746789183125316,46.1435564305616239],"hsluv":[12.1770506300617765,100.000000000002217,46.1435564305616239]},"#dd0011":{"lch":[46.1980288678146636,153.577384001942391,11.5987087531524224],"luv":[46.1980288678146636,150.441300178721519,30.8776306962803169],"rgb":[0.866666666666666696,0,0.0666666666666666657],"xyz":[0.29919294802911256,0.154154390004118902,0.0193053525833244977],"hpluv":[11.5987087531524224,421.835520233675084,46.1980288678146636],"hsluv":[11.5987087531524224,99.9999999999964473,46.1980288678146636]},"#dd0022":{"lch":[46.2987546285526292,150.712226421231577,10.5179424282654246],"luv":[46.2987546285526292,148.17992816752087,27.5115263319381462],"rgb":[0.866666666666666696,0,0.133333333333333331],"xyz":[0.301068306167589617,0.15490453325950973,0.0291822387793036972],"hpluv":[10.5179424282654246,413.065099977246746,46.2987546285526292],"hsluv":[10.5179424282654246,99.9999999999964615,46.2987546285526292]},"#dd0033":{"lch":[46.4638920568500637,146.293058552209629,8.71533624525386585],"luv":[46.4638920568500637,144.603865814948932,22.1671146505918131],"rgb":[0.866666666666666696,0,0.2],"xyz":[0.304156056900047322,0.156139633552492829,0.0454443926369148404],"hpluv":[8.71533624525386585,399.528220173505417,46.4638920568500637],"hsluv":[8.71533624525386585,99.9999999999966,46.4638920568500637]},"#dd0044":{"lch":[46.7007828741672242,140.527307525302433,6.06736355557067153],"luv":[46.7007828741672242,139.740117429456177,14.853408400522655],"rgb":[0.866666666666666696,0,0.266666666666666663],"xyz":[0.308614052144266238,0.157922831650180423,0.0689231675898014789],"hpluv":[6.06736355557067153,381.835137536210595,46.7007828741672242],"hsluv":[6.06736355557067153,99.9999999999967315,46.7007828741672242]},"#dd0055":{"lch":[47.0148448700731194,133.854751810486647,2.4577968894866693],"luv":[47.0148448700731194,133.731616129679537,5.74015936982693],"rgb":[0.866666666666666696,0,0.333333333333333315],"xyz":[0.314576466183628223,0.160307797265925256,0.10032521486377538],"hpluv":[2.4577968894866693,361.275168455412427,47.0148448700731194],"hsluv":[2.4577968894866693,99.9999999999969873,47.0148448700731194]},"#dd0066":{"lch":[47.4099042919878073,126.898325188331157,357.792852491951692],"luv":[47.4099042919878073,126.80418183984473,-4.88716722969802841],"rgb":[0.866666666666666696,0,0.4],"xyz":[0.322161461957136408,0.163341795575328547,0.140272859270919342],"hpluv":[357.792852491951692,339.645713706877359,47.4099042919878073],"hsluv":[357.792852491951692,99.9999999999972857,47.4099042919878073]},"#dd0077":{"lch":[47.8883827301537,120.388643903007392,352.036106438093952],"luv":[47.8883827301537,119.227564738695264,-16.6797298325047478],"rgb":[0.866666666666666696,0,0.466666666666666674],"xyz":[0.331475474977338314,0.16706740078340937,0.189326661177317251],"hpluv":[352.036106438093952,319.002934776287759,47.8883827301537],"hsluv":[352.036106438093952,99.9999999999974136,47.8883827301537]},"#dd0088":{"lch":[48.4514347566520058,115.064311489444805,345.260130057314882],"luv":[48.4514347566520058,111.277652945923506,-29.2759241252361342],"rgb":[0.866666666666666696,0,0.533333333333333326],"xyz":[0.342615892079282114,0.171523567624186968,0.247999524580889419],"hpluv":[345.260130057314882,301.351479235409442,48.4514347566520058],"hsluv":[345.260130057314882,99.9999999999976836,48.4514347566520058]},"#dd0099":{"lch":[49.0990738312553816,111.554442433955828,337.69359677942],"luv":[49.0990738312553816,103.206522936464793,-42.3415546492536166],"rgb":[0.866666666666666696,0,0.6],"xyz":[0.355672856188354869,0.176746353267816125,0.316766202222007354],"hpluv":[337.69359677942,288.305479360883112,49.0990738312553816],"hsluv":[337.69359677942,99.9999999999979252,49.0990738312553816]},"#dd00aa":{"lch":[49.8303011832281442,110.265023964610052,329.72204926251294],"luv":[49.8303011832281442,95.2237329190616606,-55.5951094870335041],"rgb":[0.866666666666666696,0,0.66666666666666663],"xyz":[0.370730549153607369,0.18276943045391722,0.396070051839005954],"hpluv":[329.72204926251294,280.791263168904948,49.8303011832281442],"hsluv":[329.72204926251294,99.9999999999981526,49.8303011832281442]},"#dd00bb":{"lch":[50.6432416523731064,111.311454300018838,321.811503537589374],"luv":[50.6432416523731064,87.4886923962170613,-68.8183737179635244],"rgb":[0.866666666666666696,0,0.733333333333333282],"xyz":[0.387868141260944044,0.189624467296851978,0.486328036937647701],"hpluv":[321.811503537589374,278.905890401213071,50.6432416523731064],"hsluv":[321.811503537589374,99.9999999999984,50.6432416523731064]},"#dd00cc":{"lch":[51.5352850119508901,114.534817141075266,314.3830496716472],"luv":[51.5352850119508901,80.1116001600253753,-81.8557014345352201],"rgb":[0.866666666666666696,0,0.8],"xyz":[0.407160516704665798,0.19734141747434078,0.587934547607917857],"hpluv":[314.3830496716472,282.014975724645751,51.5352850119508901],"hsluv":[314.3830496716472,99.9999999999986215,51.5352850119508901]},"#dd00dd":{"lch":[52.5032286812834883,119.593841400887641,307.715012949243601],"luv":[52.5032286812834883,73.1596596193909647,-94.6062952735996419],"rgb":[0.866666666666666696,0,0.866666666666666696],"xyz":[0.428678842255299286,0.205948747694594314,0.701264395507923854],"hpluv":[307.715012949243601,289.042783730483222,52.5032286812834883],"hsluv":[307.715012949243601,99.9999999999987779,52.5032286812834883]},"#dd00ee":{"lch":[53.5434168792756111,126.080010820296707,301.921476351261958],"luv":[53.5434168792756111,66.6656277920787659,-107.01337860068783],"rgb":[0.866666666666666696,0,0.933333333333333348],"xyz":[0.452491022521474051,0.215473619801064359,0.826675211576447078],"hpluv":[301.921476351261958,298.799235277631283,53.5434168792756111],"hsluv":[301.921476351261958,99.999999999998991,53.5434168792756111]},"#dd00ff":{"lch":[54.6518715304170399,133.605457484958208,296.990855958497434],"luv":[54.6518715304170399,60.6366090811706258,-119.053013019000375],"rgb":[0.866666666666666696,0,1],"xyz":[0.478662070931305417,0.225942039164997055,0.964509399868228923],"hpluv":[296.990855958497434,310.211923209940835,54.6518715304170399],"hsluv":[296.990855958497434,99.99999999999919,54.6518715304170399]},"#dd1100":{"lch":[46.6790301132195,152.538998994032681,12.7564763340959253],"luv":[46.6790301132195,148.773935032481603,33.6817824506429915],"rgb":[0.866666666666666696,0.0666666666666666657,0],"xyz":[0.300185682790403863,0.157758524326120919,0.0146453810388783197],"hpluv":[12.7564763340959253,414.665968881342394,46.6790301132195],"hsluv":[12.7564763340959253,100.000000000002373,46.6790301132195]},"#dd1111":{"lch":[46.7325769897078942,150.969760125239,12.1770506300617818],"luv":[46.7325769897078942,147.573010021229663,31.8445471870185592],"rgb":[0.866666666666666696,0.0666666666666666657,0.0666666666666666657],"xyz":[0.301197348290040967,0.158163190525975772,0.0199734860036339529],"hpluv":[12.1770506300617818,409.92986676092562,46.7325769897078942],"hsluv":[12.1770506300617818,96.0592738250283,46.7325769897078942]},"#dd1122":{"lch":[46.8315975390355774,148.166934443607602,11.093898425687982],"luv":[46.8315975390355774,145.398162733087418,28.509905932130728],"rgb":[0.866666666666666696,0.0666666666666666657,0.133333333333333331],"xyz":[0.303072706428518,0.1589133337813666,0.0298503721996131455],"hpluv":[11.093898425687982,401.468660625611221,46.8315975390355774],"hsluv":[11.093898425687982,96.1199649520447821,46.8315975390355774]},"#dd1133":{"lch":[46.9939567691892393,143.840838530693645,9.28627571582045697],"luv":[46.9939567691892393,141.955717705878527,23.2112265902085468],"rgb":[0.866666666666666696,0.0666666666666666657,0.2],"xyz":[0.30616045716097573,0.160148434074349699,0.0461125260572242957],"hpluv":[9.28627571582045697,388.400266865181436,46.9939567691892393],"hsluv":[9.28627571582045697,96.2159198798013477,46.9939567691892393]},"#dd1144":{"lch":[47.2268997120704555,138.191174032002039,6.62861883301083665],"luv":[47.2268997120704555,137.267398010546174,15.951865839373701],"rgb":[0.866666666666666696,0.0666666666666666657,0.266666666666666663],"xyz":[0.310618452405194645,0.161931632172037293,0.0695913010101109342],"hpluv":[6.62861883301083665,371.304486157060069,47.2268997120704555],"hsluv":[6.62861883301083665,96.346372634165391,47.2268997120704555]},"#dd1155":{"lch":[47.5357948285950442,131.646215003298352,3.00154982487266553],"luv":[47.5357948285950442,131.465612026054913,6.89338663571585908],"rgb":[0.866666666666666696,0.0666666666666666657,0.333333333333333315],"xyz":[0.31658086644455663,0.164316597787782126,0.100993348284084836],"hpluv":[3.00154982487266553,351.420379681935685,47.5357948285950442],"hsluv":[3.00154982487266553,96.5074087268808114,47.5357948285950442]},"#dd1166":{"lch":[47.9244613368761776,124.817323026056556,358.307054390798669],"luv":[47.9244613368761776,124.762840903711279,-3.68750010524401839],"rgb":[0.866666666666666696,0.0666666666666666657,0.4],"xyz":[0.324165862218064815,0.167350596097185417,0.140940992691228811],"hpluv":[358.307054390798669,330.488955339688346,47.9244613368761776],"hsluv":[358.307054390798669,96.6928417837132912,47.9244613368761776]},"#dd1177":{"lch":[48.3953520744879313,118.427317384197096,352.504166614065639],"luv":[48.3953520744879313,117.415279069986227,-15.4493282615978131],"rgb":[0.866666666666666696,0.0666666666666666657,0.466666666666666674],"xyz":[0.333479875238266721,0.17107620130526624,0.189994794597626721],"hpluv":[352.504166614065639,310.51856077863863,48.3953520744879313],"hsluv":[352.504166614065639,96.8952584834877229,48.3953520744879313]},"#dd1188":{"lch":[48.949686611979061,113.213254375126112,345.662599129740954],"luv":[48.949686611979061,109.687147393784173,-28.0351683216148473],"rgb":[0.866666666666666696,0.0666666666666666657,0.533333333333333326],"xyz":[0.344620292340210521,0.175532368146043838,0.248667658001198888],"hpluv":[345.662599129740954,293.48552443008623,48.949686611979061],"hsluv":[345.662599129740954,97.1070447043031209,48.949686611979061]},"#dd1199":{"lch":[49.5875717372425,109.808639676001164,338.012756373247385],"luv":[49.5875717372425,101.821953610845213,-41.1123717433662961],"rgb":[0.866666666666666696,0.0666666666666666657,0.6],"xyz":[0.357677256449283276,0.180755153789673,0.317434335642316767],"hpluv":[338.012756373247385,280.997849503034615,49.5875717372425],"hsluv":[338.012756373247385,97.321211179253126,49.5875717372425]},"#dd11aa":{"lch":[50.3081241313593779,108.626384639058173,329.948207544292131],"luv":[50.3081241313593779,94.0240738412992556,-54.3982074892042462],"rgb":[0.866666666666666696,0.0666666666666666657,0.66666666666666663],"xyz":[0.372734949414535777,0.18677823097577409,0.396738185259315368],"hpluv":[329.948207544292131,273.991145484396441,50.3081241313593779],"hsluv":[329.948207544292131,97.5319211216277751,50.3081241313593779]},"#dd11bb":{"lch":[51.1095995740137,109.78676639377484,321.947120969557943],"luv":[51.1095995740137,86.4507346157054855,-67.6712979010019495],"rgb":[0.866666666666666696,0.0666666666666666657,0.733333333333333282],"xyz":[0.389872541521872451,0.193633267818708849,0.486996170357957114],"hpluv":[321.947120969557943,272.57551535007633,51.1095995740137],"hsluv":[321.947120969557943,97.7347175386083791,51.1095995740137]},"#dd11cc":{"lch":[51.9895276454598303,113.13117809908816,314.441471026924035],"luv":[51.9895276454598303,79.2122218564644527,-80.7718228508547469],"rgb":[0.866666666666666696,0.0666666666666666657,0.8],"xyz":[0.409164916965594205,0.20135021799619765,0.588602681028227326],"hpluv":[314.441471026924035,276.12502270002949,51.9895276454598303],"hsluv":[314.441471026924035,97.9265130550616,51.9895276454598303]},"#dd11dd":{"lch":[52.9448482611329325,118.314931067086022,307.715012949243601],"luv":[52.9448482611329325,72.3773062506166553,-93.594596282658145],"rgb":[0.866666666666666696,0.0666666666666666657,0.866666666666666696],"xyz":[0.430683242516227693,0.209957548216451184,0.701932528928233324],"hpluv":[307.715012949243601,283.566663729067216,52.9448482611329325],"hsluv":[307.715012949243601,98.1054292618058525,52.9448482611329325]},"#dd11ee":{"lch":[53.9720454332022257,124.924845967379298,301.881652150577509],"luv":[53.9720454332022257,65.9811112999591103,-106.078791902980541],"rgb":[0.866666666666666696,0.0666666666666666657,0.933333333333333348],"xyz":[0.454495422782402458,0.219482420322921229,0.827343344996756547],"hpluv":[301.881652150577509,293.71036424495378,53.9720454332022257],"hsluv":[301.881652150577509,98.2705657762439841,53.9720454332022257]},"#dd11ff":{"lch":[55.067273793018515,132.56906123155207,296.926443611211937],"luv":[55.067273793018515,60.0334023394080774,-118.197066796810802],"rgb":[0.866666666666666696,0.0666666666666666657,1],"xyz":[0.480666471192233824,0.229950839686853925,0.965177533288538392],"hpluv":[296.926443611211937,305.483621811531123,55.067273793018515],"hsluv":[296.926443611211937,99.9999999999990763,55.067273793018515]},"#dd2200":{"lch":[47.6481385708110494,147.881667770992,13.8451074484812633],"luv":[47.6481385708110494,143.585141583480663,35.3877772568702937],"rgb":[0.866666666666666696,0.133333333333333331,0],"xyz":[0.303901306525171777,0.165189771795656887,0.0158839222838009289],"hpluv":[13.8451074484812633,393.829031299888356,47.6481385708110494],"hsluv":[13.8451074484812633,100.000000000002302,47.6481385708110494]},"#dd2211":{"lch":[47.7000692420668,146.371743885583,13.2640103652051735],"luv":[47.7000692420668,142.467011758872331,33.583298953557744],"rgb":[0.866666666666666696,0.133333333333333331,0.0666666666666666657],"xyz":[0.304912972024808882,0.16559443799551174,0.0212120272485565586],"hpluv":[13.2640103652051735,389.383517616197651,47.7000692420668],"hsluv":[13.2640103652051735,96.2235359913314596,47.7000692420668]},"#dd2222":{"lch":[47.796111526211412,143.672697420673273,12.1770506300617871],"luv":[47.796111526211412,140.440127868319678,30.3053537920670948],"rgb":[0.866666666666666696,0.133333333333333331,0.133333333333333331],"xyz":[0.306788330163285938,0.166344581250902568,0.0310889134445357582],"hpluv":[12.1770506300617871,381.435408792809369,47.796111526211412],"hsluv":[12.1770506300617871,89.3821391188339618,47.796111526211412]},"#dd2233":{"lch":[47.9536166692339805,139.501418135148583,10.3611027729364178],"luv":[47.9536166692339805,137.226679529052944,25.0895214611231978],"rgb":[0.866666666666666696,0.133333333333333331,0.2],"xyz":[0.309876080895743644,0.167579681543885667,0.0473510673021469],"hpluv":[10.3611027729364178,369.144652707036585,47.9536166692339805],"hsluv":[10.3611027729364178,89.634195646670733,47.9536166692339805]},"#dd2244":{"lch":[48.1796580724099073,134.044487106872765,7.68678657448498281],"luv":[48.1796580724099073,132.839973125453383,17.9294747210675],"rgb":[0.866666666666666696,0.133333333333333331,0.266666666666666663],"xyz":[0.314334076139962559,0.169362879641573261,0.0708298422550335399],"hpluv":[7.68678657448498281,353.040533161258963,48.1796580724099073],"hsluv":[7.68678657448498281,89.9776949827144819,48.1796580724099073]},"#dd2255":{"lch":[48.4795139291676236,127.710640494506933,4.02871777991100277],"luv":[48.4795139291676236,127.395062601571667,8.9724979943620351],"rgb":[0.866666666666666696,0.133333333333333331,0.333333333333333315],"xyz":[0.320296490179324544,0.171747845257318094,0.102231889529007441],"hpluv":[4.02871777991100277,334.278275235680212,48.4795139291676236],"hsluv":[4.02871777991100277,90.4030378986951746,48.4795139291676236]},"#dd2266":{"lch":[48.8569858046774499,121.091623353111601,359.280669781128381],"luv":[48.8569858046774499,121.082080247128843,-1.52022673298942879],"rgb":[0.866666666666666696,0.133333333333333331,0.4],"xyz":[0.32788148595283273,0.174781843566721384,0.142179533936151403],"hpluv":[359.280669781128381,314.504423311283745,48.8569858046774499],"hsluv":[359.280669781128381,90.8946273178398627,48.8569858046774499]},"#dd2277":{"lch":[49.3145747506863046,114.897314975199777,353.392641366134796],"luv":[49.3145747506863046,114.134166521370943,-13.2206286152450421],"rgb":[0.866666666666666696,0.133333333333333331,0.466666666666666674],"xyz":[0.337195498973034635,0.178507448774802208,0.191233335842549312],"hpluv":[353.392641366134796,295.64729776044,49.3145747506863046],"hsluv":[353.392641366134796,91.4334620569677128,49.3145747506863046]},"#dd2288":{"lch":[49.8536069462695934,109.863045744465836,346.42832123602642],"luv":[49.8536069462695934,106.795352255968297,-25.780643063628979],"rgb":[0.866666666666666696,0.133333333333333331,0.533333333333333326],"xyz":[0.348335916074978436,0.182963615615579805,0.24990619924612148],"hpluv":[346.42832123602642,279.636833718457694,49.8536069462695934],"hsluv":[346.42832123602642,91.999736258284841,49.8536069462695934]},"#dd2299":{"lch":[50.4743452384724947,106.631383564155598,338.620922954440232],"luv":[50.4743452384724947,99.2939711585852507,-38.8710593162073792],"rgb":[0.866666666666666696,0.133333333333333331,0.6],"xyz":[0.361392880184051135,0.188186401259208963,0.318672876887239387],"hpluv":[338.620922954440232,268.07337181170567,50.4743452384724947],"hsluv":[338.620922954440232,92.5749897333771088,50.4743452384724947]},"#dd22aa":{"lch":[51.176101525576982,105.62881092572934,330.379319008457628],"luv":[51.176101525576982,91.8248770713425699,-52.2076397514415902],"rgb":[0.866666666666666696,0.133333333333333331,0.66666666666666663],"xyz":[0.376450573149303691,0.194209478445310058,0.397976726504238],"hpluv":[330.379319008457628,261.911470041672374,51.176101525576982],"hsluv":[330.379319008457628,93.1435427232804898,51.176101525576982]},"#dd22bb":{"lch":[51.9573548685870321,106.984993341056935,322.205396597718504],"luv":[51.9573548685870321,84.5409044706425306,-65.5638945721781425],"rgb":[0.866666666666666696,0.133333333333333331,0.733333333333333282],"xyz":[0.393588165256640365,0.201064515288244816,0.488234711602879734],"hpluv":[322.205396597718504,261.285408571692301,51.9573548685870321],"hsluv":[322.205396597718504,93.6931794305449301,51.9573548685870321]},"#dd22cc":{"lch":[52.8158750154556174,110.541708291411879,314.55250800555325],"luv":[52.8158750154556174,77.5519304210182838,-78.7728846745956],"rgb":[0.866666666666666696,0.133333333333333331,0.8],"xyz":[0.412880540700362064,0.208781465465733618,0.58984122227315],"hpluv":[314.55250800555325,265.583456637160452,52.8158750154556174],"hsluv":[314.55250800555325,94.2152138812719073,52.8158750154556174]},"#dd22dd":{"lch":[53.7488483860564088,115.947384169062644,307.715012949243658],"luv":[53.7488483860564088,70.9289965118926204,-91.721716891171],"rgb":[0.866666666666666696,0.133333333333333331,0.866666666666666696],"xyz":[0.434398866250995663,0.217388795685987152,0.703171070173155943],"hpluv":[307.715012949243658,273.735496610715643,53.7488483860564088],"hsluv":[307.715012949243658,94.704144859729837,53.7488483860564088]},"#dd22ee":{"lch":[54.7530025006588374,122.779599443276055,301.806367069585178],"luv":[54.7530025006588374,64.7110170709106,-104.342293961267828],"rgb":[0.866666666666666696,0.133333333333333331,0.933333333333333348],"xyz":[0.458211046517170373,0.226913667792457197,0.828581886241679166],"hpluv":[301.806367069585178,284.549350776984397,54.7530025006588374],"hsluv":[301.806367069585178,95.1571011878196629,54.7530025006588374]},"#dd22ff":{"lch":[55.8247247862810525,130.638613434108407,296.804995701950531],"luv":[55.8247247862810525,58.9121835814083425,-116.601037498200881],"rgb":[0.866666666666666696,0.133333333333333331,1],"xyz":[0.484382094927001794,0.237382087156389893,0.966416074533461],"hpluv":[296.804995701950531,296.950662194199822,55.8247247862810525],"hsluv":[296.804995701950531,99.9999999999989768,55.8247247862810525]},"#dd3300":{"lch":[49.1823134049741526,140.84390252957769,15.6779143459349193],"luv":[49.1823134049741526,135.603943521894649,38.06015476941716],"rgb":[0.866666666666666696,0.2,0],"xyz":[0.310019028614182623,0.17742521597367869,0.0179231629801378106],"hpluv":[15.6779143459349193,363.386194305474646,49.1823134049741526],"hsluv":[15.6779143459349193,100.000000000002331,49.1823134049741526]},"#dd3311":{"lch":[49.2318310772226226,139.415415721210906,15.0950854994101622],"luv":[49.2318310772226226,134.60488288385605,36.3067988748864323],"rgb":[0.866666666666666696,0.2,0.0666666666666666657],"xyz":[0.311030694113819728,0.177829882173533543,0.0232512679448934403],"hpluv":[15.0950854994101622,359.338818773581409,49.2318310772226226],"hsluv":[15.0950854994101622,96.4660724045404834,49.2318310772226226]},"#dd3322":{"lch":[49.3234253076193,136.858666305461554,14.0037238091571297],"luv":[49.3234253076193,132.791226888227897,33.117738516222083],"rgb":[0.866666666666666696,0.2,0.133333333333333331],"xyz":[0.312906052252296785,0.178580025428924372,0.0331281541408726399],"hpluv":[14.0037238091571297,352.093818956611813,49.3234253076193],"hsluv":[14.0037238091571297,90.0546185843159321,49.3234253076193]},"#dd3333":{"lch":[49.4736766963079901,132.899088309008249,12.1770506300618315],"luv":[49.4736766963079901,129.908920002044738,28.0328410488111714],"rgb":[0.866666666666666696,0.2,0.2],"xyz":[0.31599380298475449,0.179815125721907471,0.0493903079984837831],"hpluv":[12.1770506300618315,340.868713502871344,49.4736766963079901],"hsluv":[12.1770506300618315,79.876105021286179,49.4736766963079901]},"#dd3344":{"lch":[49.6893958667399289,127.704341644457742,9.47932118493828391],"luv":[49.6893958667399289,125.960552293014786,21.031836364974712],"rgb":[0.866666666666666696,0.2,0.266666666666666663],"xyz":[0.320451798228973406,0.181598323819595064,0.0728690829513704286],"hpluv":[9.47932118493828391,326.122882655454703,49.6893958667399289],"hsluv":[9.47932118493828391,80.502956859434363,49.6893958667399289]},"#dd3355":{"lch":[49.9757165444531495,121.655077778432485,5.77481987360355742],"luv":[49.9757165444531495,121.037681249067731,12.2408197080725127],"rgb":[0.866666666666666696,0.2,0.333333333333333315],"xyz":[0.326414212268335391,0.183983289435339897,0.10427113022534433],"hpluv":[5.77481987360355742,308.89475746512926,49.9757165444531495],"hsluv":[5.77481987360355742,81.2827465905028674,49.9757165444531495]},"#dd3366":{"lch":[50.3364012453720164,115.314978813651479,0.942739432835561],"luv":[50.3364012453720164,115.29936949267524,1.8972963354308543],"rgb":[0.866666666666666696,0.2,0.4],"xyz":[0.333999208041843576,0.187017287744743188,0.144218774632488278],"hpluv":[0.942739432835561,290.698564526315124,50.3364012453720164],"hsluv":[0.942739432835561,82.1889615211792375,50.3364012453720164]},"#dd3377":{"lch":[50.77400791740952,109.376176789803836,354.916348657894],"luv":[50.77400791740952,108.945933542464203,-9.69183231981436],"rgb":[0.866666666666666696,0.2,0.466666666666666674],"xyz":[0.343313221062045482,0.190742892952824,0.193272576538886187],"hpluv":[354.916348657894,273.35096965093777,50.77400791740952],"hsluv":[354.916348657894,83.1884512053650269,50.77400791740952]},"#dd3388":{"lch":[51.2900053848270545,104.574014460431073,347.747121452304157],"luv":[51.2900053848270545,102.191864987712989,-22.1934051173651383],"rgb":[0.866666666666666696,0.2,0.533333333333333326],"xyz":[0.354453638163989282,0.195199059793601609,0.251945439942458382],"hpluv":[347.747121452304157,258.720214242298141,51.2900053848270545],"hsluv":[347.747121452304157,84.245872474104587,51.2900053848270545]},"#dd3399":{"lch":[51.8848727297214509,101.568582070491487,339.671486537323062],"luv":[51.8848727297214509,95.2425012264059347,-35.2851643605103433],"rgb":[0.866666666666666696,0.2,0.6],"xyz":[0.367510602273062,0.200421845437230767,0.320712117583576262],"hpluv":[339.671486537323062,248.403642764366595,51.8848727297214509],"hsluv":[339.671486537323062,85.3275173092541763,51.8848727297214509]},"#dd33aa":{"lch":[52.5581975758694284,100.811065681036794,331.124654782349864],"luv":[52.5581975758694284,88.2774684157494,-48.6822301651504219],"rgb":[0.866666666666666696,0.2,0.66666666666666663],"xyz":[0.382568295238314537,0.206444922623331861,0.400015967200574862],"hpluv":[331.124654782349864,243.392431352391867,52.5581975758694284],"hsluv":[331.124654782349864,86.4040244757801,52.5581975758694284]},"#dd33bb":{"lch":[53.3087788146031301,102.447919096954379,322.651217662355],"luv":[53.3087788146031301,81.4417156804123579,-62.1516136100020091],"rgb":[0.866666666666666696,0.2,0.733333333333333282],"xyz":[0.399705887345651212,0.21329995946626662,0.490273952299216609],"hpluv":[322.651217662355,243.861776984359892,53.3087788146031301],"hsluv":[322.651217662355,87.4518397844355633,53.3087788146031301]},"#dd33cc":{"lch":[54.1347343907921612,106.321268361530926,314.743497623169446],"luv":[54.1347343907921612,74.8431687457043751,-75.5163041872859253],"rgb":[0.866666666666666696,0.2,0.8],"xyz":[0.418998262789372911,0.221016909643755421,0.59188046296948682],"hpluv":[314.743497623169446,249.220329072313831,54.1347343907921612],"hsluv":[314.743497623169446,88.4535853271675734,54.1347343907921612]},"#dd33dd":{"lch":[55.033612168624586,112.066789743934578,307.715012949243715],"luv":[55.033612168624586,68.5551036430149,-88.6519211749340741],"rgb":[0.866666666666666696,0.2,0.866666666666666696],"xyz":[0.44051658834000651,0.229624239864008955,0.705210310869492818],"hpluv":[307.715012949243715,258.397459164480438,55.033612168624586],"hsluv":[307.715012949243715,89.3976510430439077,55.033612168624586]},"#dd33ee":{"lch":[56.0025007026426351,119.245240694744666,301.678101579798295],"luv":[56.0025007026426351,62.6212128139869506,-101.479116738632214],"rgb":[0.866666666666666696,0.2,0.933333333333333348],"xyz":[0.464328768606181219,0.239149111970479,0.830621126938016],"hpluv":[301.678101579798295,270.192295422478139,56.0025007026426351],"hsluv":[301.678101579798295,90.277343199481848,56.0025007026426351]},"#dd33ff":{"lch":[57.0381364623091116,127.442655532056975,296.59904001960814],"luv":[57.0381364623091116,57.0616979163907772,-113.954346472440875],"rgb":[0.866666666666666696,0.2,1],"xyz":[0.49049981701601264,0.249617531334411696,0.968455315229797886],"hpluv":[296.59904001960814,283.523336448078851,57.0381364623091116],"hsluv":[296.59904001960814,99.9999999999989626,57.0381364623091116]},"#dd4400":{"lch":[51.2775121999195278,131.902040393952689,18.409420821930695],"luv":[51.2775121999195278,125.151834557466444,41.6553305951168156],"rgb":[0.866666666666666696,0.266666666666666663,0],"xyz":[0.318851599097148664,0.19509035693961102,0.0208673531411264039],"hpluv":[18.409420821930695,326.410329295551833,51.2775121999195278],"hsluv":[18.409420821930695,100.000000000002245,51.2775121999195278]},"#dd4411":{"lch":[51.3239968707682124,130.563017922041524,17.8265447991253865],"luv":[51.3239968707682124,124.294382399750674,39.9700907276414128],"rgb":[0.866666666666666696,0.266666666666666663,0.0666666666666666657],"xyz":[0.319863264596785768,0.195495023139465873,0.0261954581058820371],"hpluv":[17.8265447991253865,322.804096021626094,51.3239968707682124],"hsluv":[17.8265447991253865,96.7659447415066154,51.3239968707682124]},"#dd4422":{"lch":[51.4099976690743148,128.162025810787327,16.7333496749677373],"luv":[51.4099976690743148,122.735013936090269,36.9001519513490237],"rgb":[0.866666666666666696,0.266666666666666663,0.133333333333333331],"xyz":[0.321738622735262825,0.196245166394856702,0.0360723443018612297],"hpluv":[16.7333496749677373,316.337811591652041,51.4099976690743148],"hsluv":[16.7333496749677373,90.8878404873512551,51.4099976690743148]},"#dd4433":{"lch":[51.551120550377874,124.432504768689228,14.8985084842763058],"luv":[51.551120550377874,120.249428964759446,31.9925472049216744],"rgb":[0.866666666666666696,0.266666666666666663,0.2],"xyz":[0.324826373467720531,0.197480266687839801,0.0523344981594723729],"hpluv":[14.8985084842763058,306.291581325991444,51.551120550377874],"hsluv":[14.8985084842763058,81.5276169642245634,51.551120550377874]},"#dd4444":{"lch":[51.7538349343952575,119.518854000271219,12.1770506300618191],"luv":[51.7538349343952575,116.829734805674121,25.2105042943215345],"rgb":[0.866666666666666696,0.266666666666666663,0.266666666666666663],"xyz":[0.329284368711939446,0.199263464785527394,0.0758132731123590115],"hpluv":[12.1770506300618191,293.044254198223086,51.7538349343952575],"hsluv":[12.1770506300618191,68.6693518559736,51.7538349343952575]},"#dd4455":{"lch":[52.0230766847265045,113.767549619287195,8.41751308754220773],"luv":[52.0230766847265045,112.542004033713866,16.6539086839248256],"rgb":[0.866666666666666696,0.266666666666666663,0.333333333333333315],"xyz":[0.335246782751301431,0.201648430401272227,0.107215320386332927],"hpluv":[8.41751308754220773,277.499175779034886,52.0230766847265045],"hsluv":[8.41751308754220773,69.8262296658756867,52.0230766847265045]},"#dd4466":{"lch":[52.3625377834239316,107.708396397149357,3.47572472865958737],"luv":[52.3625377834239316,107.51027478189765,6.52989056311981209],"rgb":[0.866666666666666696,0.266666666666666663,0.4],"xyz":[0.342831778524809616,0.204682428710675518,0.147162964793476875],"hpluv":[3.47572472865958737,261.016642983210886,52.3625377834239316],"hsluv":[3.47572472865958737,71.1800009153795088,52.3625377834239316]},"#dd4477":{"lch":[52.7748219535637304,102.013560717275851,357.256373562230806],"luv":[52.7748219535637304,101.896624345108023,-4.88308481282748108],"rgb":[0.866666666666666696,0.266666666666666663,0.466666666666666674],"xyz":[0.352145791545011522,0.208408033918756341,0.196216766699874784],"hpluv":[357.256373562230806,245.284698321799027,52.7748219535637304],"hsluv":[357.256373562230806,72.6848757644217898,52.7748219535637304]},"#dd4488":{"lch":[53.2615487789460502,97.4233940898595137,349.787328406912707],"luv":[53.2615487789460502,95.8798587184095368,-17.273401753155067],"rgb":[0.866666666666666696,0.266666666666666663,0.533333333333333326],"xyz":[0.363286208646955322,0.212864200759533939,0.254889630103446951],"hpluv":[349.787328406912707,232.107295472344475,53.2615487789460502],"hsluv":[349.787328406912707,74.290572198007979,53.2615487789460502]},"#dd4499":{"lch":[53.8234397136373133,94.6288173232078123,341.30539151945959],"luv":[53.8234397136373133,89.63624285692255,-30.330793502376995],"rgb":[0.866666666666666696,0.266666666666666663,0.6],"xyz":[0.376343172756028,0.218086986403163097,0.323656307744564886],"hpluv":[341.30539151945959,223.095746339835301,53.8234397136373133],"hsluv":[341.30539151945959,75.9477058190526577,53.8234397136373133]},"#dd44aa":{"lch":[54.4604007326765327,94.1226543521493539,332.285935566136516],"luv":[54.4604007326765327,83.3248558176969425,-43.7726223255380802],"rgb":[0.866666666666666696,0.266666666666666663,0.66666666666666663],"xyz":[0.391400865721280578,0.224110063589264191,0.402960157361563487],"hpluv":[332.285935566136516,219.307083848265933,54.4604007326765327],"hsluv":[332.285935566136516,77.6118806813578175,54.4604007326765327]},"#dd44bb":{"lch":[55.1716077278512387,96.0796222427451596,323.344264550451],"luv":[55.1716077278512387,77.0786382371216,-57.3600674495728526],"rgb":[0.866666666666666696,0.266666666666666663,0.733333333333333282],"xyz":[0.408538457828617252,0.23096510043219895,0.493218142460205233],"hpluv":[323.344264550451,220.981019921853772,55.1716077278512387],"hsluv":[323.344264550451,79.2461809113807334,55.1716077278512387]},"#dd44cc":{"lch":[55.9555962107488511,100.342448880687911,315.038748994660807],"luv":[55.9555962107488511,71.0007950362134,-70.9048246002984],"rgb":[0.866666666666666696,0.266666666666666663,0.8],"xyz":[0.427830833272338951,0.238682050609687751,0.594824653130475389],"hpluv":[315.038748994660807,227.551915064947707,55.9555962107488511],"hsluv":[315.038748994660807,80.8221578956601547,55.9555962107488511]},"#dd44dd":{"lch":[56.8103543983327484,106.525561993860563,307.715012949243828],"luv":[56.8103543983327484,65.1653443433699664,-84.2684594300729515],"rgb":[0.866666666666666696,0.266666666666666663,0.866666666666666696],"xyz":[0.44934915882297255,0.247289380829941285,0.708154501030481387],"hpluv":[307.715012949243828,237.939016458104504,56.8103543983327484],"hsluv":[307.715012949243828,82.3196529548951474,56.8103543983327484]},"#dd44ee":{"lch":[57.7334174818232384,114.162073161526394,301.482814132357476],"luv":[57.7334174818232384,59.6203198077272134,-97.3570563162323452],"rgb":[0.866666666666666696,0.266666666666666663,0.933333333333333348],"xyz":[0.473161339089147259,0.256814252936411302,0.83356531709900461],"hpluv":[301.482814132357476,250.91920763959763,57.7334174818232384],"hsluv":[301.482814132357476,85.8927976857303577,57.7334174818232384]},"#dd44ff":{"lch":[58.721960397178492,122.814959128704743,296.287773174859751],"luv":[58.721960397178492,54.3922733794591196,-110.113554035820684],"rgb":[0.866666666666666696,0.266666666666666663,1],"xyz":[0.49933238749897868,0.267282672300344,0.971399505390786455],"hpluv":[296.287773174859751,265.393357493052918,58.721960397178492],"hsluv":[296.287773174859751,99.9999999999987779,58.721960397178492]},"#dd5500":{"lch":[53.8905970004369834,121.845910621274882,22.2085433527856502],"luv":[53.8905970004369834,112.806678507237621,46.055175814369008],"rgb":[0.866666666666666696,0.333333333333333315,0],"xyz":[0.330664855811494629,0.218716870368303284,0.0248051053792416147],"hpluv":[22.2085433527856502,286.904453583707834,53.8905970004369834],"hsluv":[22.2085433527856502,100.000000000002217,53.8905970004369834]},"#dd5511":{"lch":[53.9336739056601573,120.58904296901602,21.6306448037720749],"luv":[53.9336739056601573,112.097097503939963,44.4517492948856656],"rgb":[0.866666666666666696,0.333333333333333315,0.0666666666666666657],"xyz":[0.331676521311131733,0.219121536568158137,0.0301332103439972479],"hpluv":[21.6306448037720749,283.71818310283129,53.9336739056601573],"hsluv":[21.6306448037720749,97.0955711707227493,53.9336739056601573]},"#dd5522":{"lch":[54.0133869328819856,118.329807147086328,20.5443811064534074],"luv":[54.0133869328819856,110.804107011743554,41.5258128011568957],"rgb":[0.866666666666666696,0.333333333333333315,0.133333333333333331],"xyz":[0.33355187944960879,0.219871679823548966,0.0400100965399764405],"hpluv":[20.5443811064534074,277.99185559962018,54.0133869328819856],"hsluv":[20.5443811064534074,91.805999212684128,54.0133869328819856]},"#dd5533":{"lch":[54.1442392255445526,114.805940194650788,18.7140712474621722],"luv":[54.1442392255445526,108.736323489647134,36.8349814433582736],"rgb":[0.866666666666666696,0.333333333333333315,0.2],"xyz":[0.336639630182066496,0.221106780116532065,0.0562722503975875837],"hpluv":[18.7140712474621722,269.061420184977408,54.1442392255445526],"hsluv":[18.7140712474621722,83.3546452149230674,54.1442392255445526]},"#dd5544":{"lch":[54.3323026853354207,110.135081135525823,15.9827981501284579],"luv":[54.3323026853354207,105.877744255237971,30.3255563535325479],"rgb":[0.866666666666666696,0.333333333333333315,0.266666666666666663],"xyz":[0.341097625426285411,0.222889978214219658,0.0797510253504742223],"hpluv":[15.9827981501284579,257.221277658214035,54.3323026853354207],"hsluv":[15.9827981501284579,71.6878656400709104,54.3323026853354207]},"#dd5555":{"lch":[54.5822696158357132,104.625049281135261,12.1770506300618937],"luv":[54.5822696158357132,102.271033836367579,22.0689051636128752],"rgb":[0.866666666666666696,0.333333333333333315,0.333333333333333315],"xyz":[0.347060039465647396,0.225274943829964491,0.111153072624448138],"hpluv":[12.1770506300618937,243.233512665758,54.5822696158357132],"hsluv":[12.1770506300618937,61.8784513389384,54.5822696158357132]},"#dd5566":{"lch":[54.8977244977922254,98.7674373059184205,7.11744080010036573],"luv":[54.8977244977922254,98.0063618739055897,12.2376347477602359],"rgb":[0.866666666666666696,0.333333333333333315,0.4],"xyz":[0.354645035239155582,0.228308942139367782,0.151100717031592086],"hpluv":[7.11744080010036573,228.296245111676484,54.8977244977922254],"hsluv":[7.11744080010036573,62.7979151590930655,54.8977244977922254]},"#dd5577":{"lch":[55.2812881935381597,93.2135187108595886,0.661514811515945267],"luv":[55.2812881935381597,93.2073060454778783,1.07618316489082022],"rgb":[0.866666666666666696,0.333333333333333315,0.466666666666666674],"xyz":[0.363959048259357487,0.232034547347448605,0.20015451893799],"hpluv":[0.661514811515945267,213.963687644495565,55.2812881935381597],"hsluv":[0.661514811515945267,63.8225359413096456,55.2812881935381597]},"#dd5588":{"lch":[55.7347110848163538,88.7163187329837,352.791835078768599],"luv":[55.7347110848163538,88.0151786426913532,-11.1316457915027787],"rgb":[0.866666666666666696,0.333333333333333315,0.533333333333333326],"xyz":[0.375099465361301287,0.236490714188226203,0.258827382341562162],"hpluv":[352.791835078768599,201.984054112510194,55.7347110848163538],"hsluv":[352.791835078768599,64.9173177009572,55.7347110848163538]},"#dd5599":{"lch":[56.2589463845586408,86.0173277442407169,343.733753082454825],"luv":[56.2589463845586408,82.5740942724548717,-24.0935598727929836],"rgb":[0.866666666666666696,0.333333333333333315,0.6],"xyz":[0.388156429470374,0.241713499831855361,0.327594059982680097],"hpluv":[343.733753082454825,194.014271994181229,56.2589463845586408],"hsluv":[343.733753082454825,66.0466553819121,56.2589463845586408]},"#dd55aa":{"lch":[56.8542178605490278,85.677853149792881,334.018383993549605],"luv":[56.8542178605490278,77.0187914763158545,-37.5339883290498477],"rgb":[0.866666666666666696,0.333333333333333315,0.66666666666666663],"xyz":[0.403214122435626543,0.247736577017956455,0.406897909599678698],"hpluv":[334.018383993549605,191.225239227061849,56.8542178605490278],"hsluv":[334.018383993549605,67.3075554564469485,56.8542178605490278]},"#dd55bb":{"lch":[57.5200884026389332,87.9206422548043633,324.375348896731964],"luv":[57.5200884026389332,71.4663144117056817,-51.2113780219251638],"rgb":[0.866666666666666696,0.333333333333333315,0.733333333333333282],"xyz":[0.420351714542963217,0.254591613860891242,0.497155894698320444],"hpluv":[324.375348896731964,193.959311397505388,57.5200884026389332],"hsluv":[324.375348896731964,69.5366313504716,57.5200884026389332]},"#dd55cc":{"lch":[58.2555317670128829,92.5910381182408315,315.474469199465034],"luv":[58.2555317670128829,66.0116746837007895,-64.9273374262858596],"rgb":[0.866666666666666696,0.333333333333333315,0.8],"xyz":[0.439644089986684916,0.262308564038380043,0.5987624053685906],"hpluv":[315.474469199465034,201.683843426221756,58.2555317670128829],"hsluv":[315.474469199465034,71.7082017587958802,58.2555317670128829]},"#dd55dd":{"lch":[59.0590075291469532,99.2700295618383848,307.715012949244056],"luv":[59.0590075291469532,60.7268860008133231,-78.5288742174016363],"rgb":[0.866666666666666696,0.333333333333333315,0.866666666666666696],"xyz":[0.461162415537318515,0.270915894258633549,0.712092253268596598],"hpluv":[307.715012949244056,213.290412049590259,59.0590075291469532],"hsluv":[307.715012949244056,73.7919865345850923,59.0590075291469532]},"#dd55ee":{"lch":[59.9285380001613674,107.447476486145689,301.201070052482692],"luv":[59.9285380001613674,55.6624113436061592,-91.905691698915],"rgb":[0.866666666666666696,0.333333333333333315,0.933333333333333348],"xyz":[0.484974595803493225,0.280440766365103566,0.837503069337119821],"hpluv":[301.201070052482692,227.510719406260364,59.9285380001613674],"hsluv":[301.201070052482692,84.9240358585231405,59.9285380001613674]},"#dd55ff":{"lch":[60.8617852443614,116.651127585902827,295.843561463814751],"luv":[60.8617852443614,50.8500320114402413,-104.984569397117028],"rgb":[0.866666666666666696,0.333333333333333315,1],"xyz":[0.511145644213324646,0.29090918572903629,0.975337257628901666],"hpluv":[295.843561463814751,243.211205533984923,60.8617852443614],"hsluv":[295.843561463814751,99.9999999999987,60.8617852443614]},"#dd6600":{"lch":[56.9556719941368783,111.624872970007345,27.247071009398578],"luv":[56.9556719941368783,99.2390381331236568,51.1050445257873349],"rgb":[0.866666666666666696,0.4,0],"xyz":[0.345692913517341105,0.248772985779996625,0.0298144579478569621],"hpluv":[27.247071009398578,248.69286407076,56.9556719941368783],"hsluv":[27.247071009398578,100.000000000002402,56.9556719941368783]},"#dd6611":{"lch":[56.9952083090352204,110.431802069127656,26.6846840374429064],"luv":[56.9952083090352204,98.6698726856829325,49.5927326573774181],"rgb":[0.866666666666666696,0.4,0.0666666666666666657],"xyz":[0.346704579016978209,0.249177651979851478,0.0351425629126125919],"hpluv":[26.6846840374429064,245.864111809588593,56.9952083090352204],"hsluv":[26.6846840374429064,97.4289366186781,56.9952083090352204]},"#dd6622":{"lch":[57.0683850250612181,108.280332786330632,25.6245441521289443],"luv":[57.0683850250612181,97.630674939023308,46.8282156319165637],"rgb":[0.866666666666666696,0.4,0.133333333333333331],"xyz":[0.348579937155455266,0.249927795235242306,0.0450194491085917914],"hpluv":[25.6245441521289443,240.764984433182946,57.0683850250612181],"hsluv":[25.6245441521289443,92.7369917538900239,57.0683850250612181]},"#dd6633":{"lch":[57.1885511035567617,104.905985735707603,23.8291565941278485],"luv":[57.1885511035567617,95.9631904105633566,42.3831561992078036],"rgb":[0.866666666666666696,0.4,0.2],"xyz":[0.351667687887912972,0.251162895528225405,0.0612816029662029346],"hpluv":[23.8291565941278485,232.771873337598265,57.1885511035567617],"hsluv":[23.8291565941278485,85.2149281001260306,57.1885511035567617]},"#dd6644":{"lch":[57.3613500282636153,100.395707721520722,21.1283100845564071],"luv":[57.3613500282636153,93.6466609873464222,36.1884099516133162],"rgb":[0.866666666666666696,0.4,0.266666666666666663],"xyz":[0.356125683132131887,0.252946093625912971,0.0847603779190895801],"hpluv":[21.1283100845564071,222.093121414046323,57.3613500282636153],"hsluv":[21.1283100845564071,74.7790089775498785,57.3613500282636153]},"#dd6655":{"lch":[57.5911977652478555,95.0134939889914136,17.3206113628181804],"luv":[57.5911977652478555,90.7049894048208927,28.2872575034667619],"rgb":[0.866666666666666696,0.4,0.333333333333333315],"xyz":[0.362088097171493872,0.255331059241657832,0.116162425193063482],"hpluv":[17.3206113628181804,209.347849744778358,57.5911977652478555],"hsluv":[17.3206113628181804,61.5516693045169205,57.5911977652478555]},"#dd6666":{"lch":[57.8815358558834703,89.2064417623026742,12.1770506300619559],"luv":[57.8815358558834703,87.1993378887650579,18.8166076552624659],"rgb":[0.866666666666666696,0.4,0.4],"xyz":[0.369673092945002058,0.25836505755106115,0.156110069600207457],"hpluv":[12.1770506300619559,195.566965385494854,57.8815358558834703],"hsluv":[12.1770506300619559,60.6635523422702,57.8815358558834703]},"#dd6677":{"lch":[58.2349645673757834,83.6008411979688901,5.48003957367995387],"luv":[58.2349645673757834,83.2187459143753188,7.98379467713524704],"rgb":[0.866666666666666696,0.4,0.466666666666666674],"xyz":[0.378987105965203963,0.262090662759141946,0.205163871506605366],"hpluv":[5.48003957367995387,182.165511808695555,58.2349645673757834],"hsluv":[5.48003957367995387,61.6238417996400329,58.2349645673757834]},"#dd6688":{"lch":[58.6533262634944208,78.9686504698842,357.125632416080862],"luv":[58.6533262634944208,78.8692993006444,-3.95997283577995],"rgb":[0.866666666666666696,0.4,0.533333333333333326],"xyz":[0.390127523067147763,0.266546829599919544,0.263836734910177506],"hpluv":[357.125632416080862,170.8446551494321,58.6533262634944208],"hsluv":[357.125632416080862,62.6596910240402778,58.6533262634944208]},"#dd6699":{"lch":[59.1377678367746853,76.1279623836736192,347.292482429378936],"luv":[59.1377678367746853,74.2632604984211184,-16.746187531306056],"rgb":[0.866666666666666696,0.4,0.6],"xyz":[0.403184487176220463,0.271769615243548701,0.332603412551295441],"hpluv":[347.292482429378936,163.349798950832565,59.1377678367746853],"hsluv":[347.292482429378936,63.7390009960191435,59.1377678367746853]},"#dd66aa":{"lch":[59.6887956605557406,75.751758533498986,336.577260120739709],"luv":[59.6887956605557406,69.5095811529117,-30.1122408476074845],"rgb":[0.866666666666666696,0.4,0.66666666666666663],"xyz":[0.418242180141473,0.277792692429649823,0.411907262168294042],"hpluv":[336.577260120739709,161.042027442088397,59.6887956605557406],"hsluv":[336.577260120739709,64.8305690383666473,59.6887956605557406]},"#dd66bb":{"lch":[60.3063295400458372,78.1477005551706,325.894443158435308],"luv":[60.3063295400458372,64.706761589723726,-43.8189240697585518],"rgb":[0.866666666666666696,0.4,0.733333333333333282],"xyz":[0.435379772248809693,0.284647729272584582,0.502165247266935788],"hpluv":[325.894443158435308,164.434383230317081,60.3063295400458372],"hsluv":[325.894443158435308,65.9059953936301213,60.3063295400458372]},"#dd66cc":{"lch":[60.9897585015337427,83.1712006992562891,316.109248272524042],"luv":[60.9897585015337427,59.9384091909213694,-57.6613885491638314],"rgb":[0.866666666666666696,0.4,0.8],"xyz":[0.454672147692531392,0.292364679450073384,0.603771757937205944],"hpluv":[316.109248272524042,173.043537218511,60.9897585015337427],"hsluv":[316.109248272524042,66.9408479310096709,60.9897585015337427]},"#dd66dd":{"lch":[61.7379991889007158,90.3518241723814555,307.715012949244283],"luv":[61.7379991889007158,55.2713135142553753,-71.4740094977595675],"rgb":[0.866666666666666696,0.4,0.866666666666666696],"xyz":[0.476190473243165,0.30097200967032689,0.717101605837211942],"hpluv":[307.715012949244283,185.705044478150711,61.7379991889007158],"hsluv":[307.715012949244283,67.9151328937623759,61.7379991889007158]},"#dd66ee":{"lch":[62.5495564285741779,99.1126076890086125,300.803780654240427],"luv":[62.5495564285741779,50.7555210146825431,-85.1304063742412183],"rgb":[0.866666666666666696,0.4,0.933333333333333348],"xyz":[0.500002653509339701,0.310496881776796907,0.842512421905735165],"hpluv":[300.803780654240427,201.068480083703747,62.5495564285741779],"hsluv":[300.803780654240427,83.670703518064812,62.5495564285741779]},"#dd66ff":{"lch":[63.4225848554444696,108.928953372808309,295.226788235463459],"luv":[63.4225848554444696,46.4257694276883512,-98.5401685402585628],"rgb":[0.866666666666666696,0.4,1],"xyz":[0.526173701919171122,0.320965301140729631,0.980346610197517],"hpluv":[295.226788235463459,217.940889521273107,63.4225848554444696],"hsluv":[295.226788235463459,99.9999999999986073,63.4225848554444696]},"#dd7700":{"lch":[60.3985006876916088,102.209421710697811,33.6568691403047779],"luv":[60.3985006876916088,85.0762157619203,56.6463008330327753],"rgb":[0.866666666666666696,0.466666666666666674,0],"xyz":[0.364146651570758706,0.285680461886832382,0.0359657039656626626],"hpluv":[33.6568691403047779,214.735624532269611,60.3985006876916088],"hsluv":[33.6568691403047779,100.000000000002245,60.3985006876916088]},"#dd7711":{"lch":[60.4345564785723894,101.058408313912437,33.1281817520222],"luv":[60.4345564785723894,84.6313647704988,55.2298287886556736],"rgb":[0.866666666666666696,0.466666666666666674,0.0666666666666666657],"xyz":[0.36515831707039581,0.286085128086687235,0.0412938089304182923],"hpluv":[33.1281817520222,212.190746676882327,60.4345564785723894],"hsluv":[33.1281817520222,97.7465438968969238,60.4345564785723894]},"#dd7722":{"lch":[60.5013044729937803,98.9745052833742136,32.1281810047412648],"luv":[60.5013044729937803,83.8175940663154364,52.6361436754539582],"rgb":[0.866666666666666696,0.466666666666666674,0.133333333333333331],"xyz":[0.367033675208872867,0.286835271342078035,0.0511706951263974918],"hpluv":[32.1281810047412648,207.585936448863947,60.5013044729937803],"hsluv":[32.1281810047412648,93.6262478826975126,60.5013044729937803]},"#dd7733":{"lch":[60.6109510167574115,95.6833141687104813,30.4242910043150516],"luv":[60.6109510167574115,82.5076313520097813,48.4539717565960331],"rgb":[0.866666666666666696,0.466666666666666674,0.2],"xyz":[0.370121425941330573,0.288070371635061162,0.067432848984008642],"hpluv":[30.4242910043150516,200.320058173129354,60.6109510167574115],"hsluv":[30.4242910043150516,86.9991150080846722,60.6109510167574115]},"#dd7744":{"lch":[60.7687036553482756,91.2360291121886888,27.8356422373186483],"luv":[60.7687036553482756,80.6791699404734857,42.6014617809804932],"rgb":[0.866666666666666696,0.466666666666666674,0.266666666666666663],"xyz":[0.374579421185549488,0.289853569732748728,0.0909116239368952805],"hpluv":[27.8356422373186483,190.513488615549676,60.7687036553482756],"hsluv":[27.8356422373186483,77.760618312285672,60.7687036553482756]},"#dd7755":{"lch":[60.9786842032445122,85.8448802225428125,24.131655223886618],"luv":[60.9786842032445122,78.3427622472179479,35.096368243717265],"rgb":[0.866666666666666696,0.466666666666666674,0.333333333333333315],"xyz":[0.380541835224911473,0.292238535348493589,0.122313671210869182],"hpluv":[24.131655223886618,178.63875223296418,60.9786842032445122],"hsluv":[24.131655223886618,65.9765814384596894,60.9786842032445122]},"#dd7766":{"lch":[61.2441632046235895,79.8999585154359693,19.0216316495787474],"luv":[61.2441632046235895,75.5370685872685073,26.0414024201977448],"rgb":[0.866666666666666696,0.466666666666666674,0.4],"xyz":[0.388126830998419659,0.295272533657896907,0.162261315618013158],"hpluv":[19.0216316495787474,165.546946717194828,61.2441632046235895],"hsluv":[19.0216316495787474,57.9572057581871576,61.2441632046235895]},"#dd7777":{"lch":[61.5676827516498122,73.9875996712566,12.1770506300619097],"luv":[61.5676827516498122,72.3229127387857318,15.6064473244910626],"rgb":[0.866666666666666696,0.466666666666666674,0.466666666666666674],"xyz":[0.397440844018621564,0.298998138865977703,0.211315117524411067],"hpluv":[12.1770506300619097,152.491436777287873,61.5676827516498122],"hsluv":[12.1770506300619097,58.8480912007490744,61.5676827516498122]},"#dd7788":{"lch":[61.9511315612573,68.8928540500868252,3.33484257213660307],"luv":[61.9511315612573,68.7761927043778769,4.00757485979294081],"rgb":[0.866666666666666696,0.466666666666666674,0.533333333333333326],"xyz":[0.408581261120565364,0.303454305706755301,0.269987980927983207],"hpluv":[3.33484257213660307,141.112101622994089,61.9511315612573],"hsluv":[3.33484257213660307,59.8177792812577849,61.9511315612573]},"#dd7799":{"lch":[62.395798681375723,65.5359342889949659,352.534540584191575],"luv":[62.395798681375723,64.9804103256140309,-8.5149842657693231],"rgb":[0.866666666666666696,0.466666666666666674,0.6],"xyz":[0.421638225229638119,0.308677091350384458,0.338754658569101141],"hpluv":[352.534540584191575,133.27953643418,62.395798681375723],"hsluv":[352.534540584191575,60.8378233331756135,62.395798681375723]},"#dd77aa":{"lch":[62.9024183325334576,64.7691926058513587,340.409048511657261],"luv":[62.9024183325334576,61.0197310981447743,-21.7172909803219412],"rgb":[0.866666666666666696,0.466666666666666674,0.66666666666666663],"xyz":[0.43669591819489062,0.314700168536485581,0.418058508186099742],"hpluv":[340.409048511657261,130.659342151792146,62.9024183325334576],"hsluv":[340.409048511657261,61.8795186032410598,62.9024183325334576]},"#dd77bb":{"lch":[63.4712121738611472,67.0588140204747,328.168414880738283],"luv":[63.4712121738611472,56.973307333119962,-35.3684434115847779],"rgb":[0.866666666666666696,0.466666666666666674,0.733333333333333282],"xyz":[0.453833510302227294,0.321555205379420339,0.508316493284741489],"hpluv":[328.168414880738283,134.065922948238125,63.4712121738611472],"hsluv":[328.168414880738283,62.9156692244191049,63.4712121738611472]},"#dd77cc":{"lch":[64.1019320742502856,72.2937871392105649,317.045265551381931],"luv":[64.1019320742502856,52.9112642996390861,-49.2624580095555586],"rgb":[0.866666666666666696,0.466666666666666674,0.8],"xyz":[0.473125885745949049,0.329272155556909141,0.609923003955011644],"hpluv":[317.045265551381931,143.109736775843601,64.1019320742502856],"hsluv":[317.045265551381931,63.9218174738772262,64.1019320742502856]},"#dd77dd":{"lch":[64.7939046430230547,79.9242419089019904,307.715012949244624],"luv":[64.7939046430230547,48.8924033620837761,-63.225132172198613],"rgb":[0.866666666666666696,0.466666666666666674,0.866666666666666696],"xyz":[0.494644211296582537,0.337879485777162647,0.723252851855017642],"hpluv":[307.715012949244624,156.524995415635317,64.7939046430230547],"hsluv":[307.715012949244624,64.8769154463944,64.7939046430230547]},"#dd77ee":{"lch":[65.5460776792256,89.2673698488479772,300.244676230176196],"luv":[65.5460776792256,44.9634126652007424,-77.116501743983946],"rgb":[0.866666666666666696,0.466666666666666674,0.933333333333333348],"xyz":[0.518456391562757357,0.347404357883632664,0.848663667923540865],"hpluv":[300.244676230176196,172.816560464305326,65.5460776792256],"hsluv":[300.244676230176196,82.07388698168063,65.5460776792256]},"#dd77ff":{"lch":[66.3570680439545,99.7204006423648366,294.377473048092611],"luv":[66.3570680439545,41.1592308753033436,-90.8299290874281837],"rgb":[0.866666666666666696,0.466666666666666674,1],"xyz":[0.544627439972588667,0.357872777247565388,0.98649785621532271],"hpluv":[294.377473048092611,190.693615319177383,66.3570680439545],"hsluv":[294.377473048092611,99.9999999999983373,66.3570680439545]},"#dd8800":{"lch":[64.1467534130096766,94.4821411478558701,41.4445641191571781],"luv":[64.1467534130096766,70.8234804869986192,62.5372657508392],"rgb":[0.866666666666666696,0.533333333333333326,0],"xyz":[0.386219021295729159,0.329825201336773954,0.0433231605406526124],"hpluv":[41.4445641191571781,186.902182331454583,64.1467534130096766],"hsluv":[41.4445641191571781,100.000000000002416,64.1467534130096766]},"#dd8811":{"lch":[64.1795176641247593,93.3565504581455,40.9755438084832377],"luv":[64.1795176641247593,70.4832194968749235,61.2173282886440333],"rgb":[0.866666666666666696,0.533333333333333326,0.0666666666666666657],"xyz":[0.387230686795366263,0.330229867536628807,0.0486512655054082421],"hpluv":[40.9755438084832377,184.581288668542754,64.1795176641247593],"hsluv":[40.9755438084832377,98.0366401848460072,64.1795176641247593]},"#dd8822":{"lch":[64.2401831232140665,91.3094921720035444,40.0852847486271529],"luv":[64.2401831232140665,69.8596876954725303,58.7966614341343359],"rgb":[0.866666666666666696,0.533333333333333326,0.133333333333333331],"xyz":[0.38910604493384332,0.330980010792019608,0.0585281517013874417],"hpluv":[40.0852847486271529,180.363429125237786,64.2401831232140665],"hsluv":[40.0852847486271529,94.440421143342,64.2401831232140665]},"#dd8833":{"lch":[64.3398685532121704,88.0506151089842319,38.5586382769189342],"luv":[64.3398685532121704,68.8529964065635,54.8832916916272],"rgb":[0.866666666666666696,0.533333333333333326,0.2],"xyz":[0.392193795666301,0.332215111085002734,0.0747903055589985849],"hpluv":[38.5586382769189342,173.656703033806934,64.3398685532121704],"hsluv":[38.5586382769189342,88.6389494712849171,64.3398685532121704]},"#dd8844":{"lch":[64.4833562447751376,83.590391105324656,36.2144134416389392],"luv":[64.4833562447751376,67.4417066096926305,49.3859260793323571],"rgb":[0.866666666666666696,0.533333333333333326,0.266666666666666663],"xyz":[0.396651790910519941,0.333998309182690301,0.0982690805118852234],"hpluv":[36.2144134416389392,164.493238171948974,64.4833562447751376],"hsluv":[36.2144134416389392,80.515719620269337,64.4833562447751376]},"#dd8855":{"lch":[64.6744699451661234,78.0792033713498768,32.8038905377638059],"luv":[64.6744699451661234,65.6278986079903746,42.3006019272060527],"rgb":[0.866666666666666696,0.533333333333333326,0.333333333333333315],"xyz":[0.402614204949881926,0.336383274798435161,0.129671127785859125],"hpluv":[32.8038905377638059,153.194023310958244,64.6744699451661234],"hsluv":[32.8038905377638059,70.0933757373770874,64.6744699451661234]},"#dd8866":{"lch":[64.9162913059566762,71.8298791231791114,27.9793586637294176],"luv":[64.9162913059566762,63.4341634455056251,33.69923504798588],"rgb":[0.866666666666666696,0.533333333333333326,0.4],"xyz":[0.410199200723390112,0.33941727310783848,0.169618772193003087],"hpluv":[27.9793586637294176,140.40764710249897,64.9162913059566762],"hsluv":[27.9793586637294176,57.516131894534638,64.9162913059566762]},"#dd8877":{"lch":[65.211273186305,65.3549274640793243,21.2774014292581],"luv":[65.211273186305,60.8999714810578325,23.7162395299384023],"rgb":[0.866666666666666696,0.533333333333333326,0.466666666666666674],"xyz":[0.419513213743592,0.343142878315919275,0.218672574099401],"hpluv":[21.2774014292581,127.173019810527066,65.211273186305],"hsluv":[21.2774014292581,55.3192807564291797,65.211273186305]},"#dd8888":{"lch":[65.5613077882642585,59.4140252364257222,12.17705063006205],"luv":[65.5613077882642585,58.0772370198051675,12.5323954190731097],"rgb":[0.866666666666666696,0.533333333333333326,0.533333333333333326],"xyz":[0.430653630845535818,0.347599045156696873,0.277345437502973191],"hpluv":[12.17705063006205,114.995459986814794,65.5613077882642585],"hsluv":[12.17705063006205,56.217054427929,65.5613077882642585]},"#dd8899":{"lch":[65.9677735951440809,55.0265961591163304,0.371909902430330563],"luv":[65.9677735951440809,55.0254369244830599,0.357178006339119947],"rgb":[0.866666666666666696,0.533333333333333326,0.6],"xyz":[0.443710594954608517,0.352821830800326031,0.34611211514409107],"hpluv":[0.371909902430330563,105.847388780281833,65.9677735951440809],"hsluv":[0.371909902430330563,57.1692646853200088,65.9677735951440809]},"#dd88aa":{"lch":[66.4315725960282,53.3143351650078756,346.342357286170909],"luv":[66.4315725960282,51.8068159744011751,-12.5885723051236678],"rgb":[0.866666666666666696,0.533333333333333326,0.66666666666666663],"xyz":[0.458768287919861073,0.358844907986427153,0.425415964761089671],"hpluv":[346.342357286170909,101.837748961685463,66.4315725960282],"hsluv":[346.342357286170909,58.1497775423036174,66.4315725960282]},"#dd88bb":{"lch":[66.9531637379342754,55.0554122119122695,331.715662007953938],"luv":[66.9531637379342754,48.482176665295448,-26.0878699709014299],"rgb":[0.866666666666666696,0.533333333333333326,0.733333333333333282],"xyz":[0.475905880027197747,0.365699944829361911,0.515673949859731473],"hpluv":[331.715662007953938,104.344182679937973,66.9531637379342754],"hsluv":[331.715662007953938,59.1328526037280824,66.9531637379342754]},"#dd88cc":{"lch":[67.5325957217288391,60.2482932018326949,318.477460357427788],"luv":[67.5325957217288391,45.1075955230381,-39.9394749572899741],"rgb":[0.866666666666666696,0.533333333333333326,0.8],"xyz":[0.495198255470919446,0.373416895006850713,0.617280460530001629],"hpluv":[318.477460357427788,113.206309259525241,67.5325957217288391],"hsluv":[318.477460357427788,60.0943355072680134,67.5325957217288391]},"#dd88dd":{"lch":[68.1695406599531566,68.219499196860184,307.715012949245079],"luv":[68.1695406599531566,41.7322103060295,-53.965940125636024],"rgb":[0.866666666666666696,0.533333333333333326,0.866666666666666696],"xyz":[0.516716581021553,0.382024225227104219,0.730610308430007627],"hpluv":[307.715012949245079,126.986480244117786,68.1695406599531566],"hsluv":[307.715012949245079,61.0124281772922785,68.1695406599531566]},"#dd88ee":{"lch":[68.8633291469121,78.1074456653267504,299.445313850889818],"luv":[68.8633291469121,38.3970440138518896,-68.0179393936650456],"rgb":[0.866666666666666696,0.533333333333333326,0.933333333333333348],"xyz":[0.540528761287727755,0.391549097333574236,0.85602112449853085],"hpluv":[299.445313850889818,143.92748858218269,68.8633291469121],"hsluv":[299.445313850889818,80.0342386911036385,68.8633291469121]},"#dd88ff":{"lch":[69.6129866887261244,89.1875622693819281,293.199992160066699],"luv":[69.6129866887261244,35.1347073752451706,-81.975445111391565],"rgb":[0.866666666666666696,0.533333333333333326,1],"xyz":[0.566699809697559176,0.40201751669750696,0.993855312790312695],"hpluv":[293.199992160066699,162.574846632166981,69.6129866887261244],"hsluv":[293.199992160066699,99.9999999999981242,69.6129866887261244]},"#dd9900":{"lch":[68.1357569139589287,89.1370219700488775,50.3810095729648921],"luv":[68.1357569139589287,56.8408371488252229,68.6624199829113735],"rgb":[0.866666666666666696,0.6,0],"xyz":[0.41208862174819666,0.381564402241709621,0.0519463606914748674],"hpluv":[50.3810095729648921,166.005456049637957,68.1357569139589287],"hsluv":[50.3810095729648921,100.000000000002245,68.1357569139589287]},"#dd9911":{"lch":[68.1654896561650077,88.0318570495471278,50.0002977758109424],"luv":[68.1654896561650077,56.5854364905009248,67.4366089951992507],"rgb":[0.866666666666666696,0.6,0.0666666666666666657],"xyz":[0.413100287247833764,0.381969068441564474,0.0572744656562305],"hpluv":[50.0002977758109424,163.875726960716179,68.1654896561650077],"hsluv":[50.0002977758109424,98.2940371374324826,68.1654896561650077]},"#dd9922":{"lch":[68.2205507365204,86.012937831153792,49.27558445879027],"luv":[68.2205507365204,56.1166821435168472,65.1854543556261774],"rgb":[0.866666666666666696,0.6,0.133333333333333331],"xyz":[0.414975645386310821,0.382719211696955275,0.0671513518522096897],"hpluv":[49.27558445879027,159.988175949224541,68.2205507365204],"hsluv":[49.27558445879027,95.1643810214000325,68.2205507365204]},"#dd9933":{"lch":[68.3110514885433133,82.7730333151944677,48.0261582829398179],"luv":[68.3110514885433133,55.3578808500206918,61.5376313485756867],"rgb":[0.866666666666666696,0.6,0.2],"xyz":[0.418063396118768527,0.383954311989938402,0.0834135057098208399],"hpluv":[48.0261582829398179,153.757824966526499,68.3110514885433133],"hsluv":[48.0261582829398179,90.1021642959546512,68.3110514885433133]},"#dd9944":{"lch":[68.4413718194248,78.2806718730308688,46.0898611008159875],"luv":[68.4413718194248,54.2899414547091936,56.3956190296495805],"rgb":[0.866666666666666696,0.6,0.266666666666666663],"xyz":[0.422521391362987442,0.385737510087625968,0.106892280662707478],"hpluv":[46.0898611008159875,145.136005207448051,68.4413718194248],"hsluv":[46.0898611008159875,82.9860784920926449,68.4413718194248]},"#dd9955":{"lch":[68.615044439797245,72.617894762441864,43.2298844404699452],"luv":[68.615044439797245,52.9102318436571935,49.7379734808277689],"rgb":[0.866666666666666696,0.6,0.333333333333333315],"xyz":[0.428483805402349427,0.388122475703370828,0.138294327936681394],"hpluv":[43.2298844404699452,134.296171447129637,68.615044439797245],"hsluv":[43.2298844404699452,73.8078183466747362,68.615044439797245]},"#dd9966":{"lch":[68.8349542760461333,65.9999398631214262,39.0839575312566296],"luv":[68.8349542760461333,51.2306688139135815,41.6102227200810404],"rgb":[0.866666666666666696,0.6,0.4],"xyz":[0.436068801175857612,0.391156474012774147,0.178241972343825356],"hpluv":[39.0839575312566296,121.667290932950721,68.8349542760461333],"hsluv":[39.0839575312566296,62.6592399312796076,68.8349542760461333]},"#dd9977":{"lch":[69.1034430542988929,58.8170492635600723,33.0939178586399834],"luv":[69.1034430542988929,49.2755524050587468,32.1148753578207291],"rgb":[0.866666666666666696,0.6,0.466666666666666674],"xyz":[0.445382814196059518,0.394882079220854942,0.227295774250223265],"hpluv":[33.0939178586399834,108.004754244465147,69.1034430542988929],"hsluv":[33.0939178586399834,50.7393036295826789,69.1034430542988929]},"#dd9988":{"lch":[69.4223715869125328,51.7141196395305656,24.4437159362198635],"luv":[69.4223715869125328,47.0788901370553745,21.3992587150758773],"rgb":[0.866666666666666696,0.6,0.533333333333333326],"xyz":[0.456523231298003318,0.39933824606163254,0.285968637653795432],"hpluv":[24.4437159362198635,94.5255072345235305,69.4223715869125328],"hsluv":[24.4437159362198635,51.5589665528693786,69.4223715869125328]},"#dd9999":{"lch":[69.7931614924381591,45.7097919546320597,12.1770506300622632],"luv":[69.7931614924381591,44.6813426781189875,9.64171649740066705],"rgb":[0.866666666666666696,0.6,0.6],"xyz":[0.469580195407076073,0.404561031705261698,0.354735315294913311],"hpluv":[12.1770506300622632,83.1066353202273689,69.7931614924381591],"hsluv":[12.1770506300622632,52.4335711570844438,69.7931614924381591]},"#dd99aa":{"lch":[70.2168268189972196,42.2311183685245624,355.977290330288042],"luv":[70.2168268189972196,42.1270745474506256,-2.96259155636920823],"rgb":[0.866666666666666696,0.6,0.66666666666666663],"xyz":[0.484637888372328574,0.41058410889136282,0.434039164911911912],"hpluv":[355.977290330288042,76.3186553239153369,70.2168268189972196],"hsluv":[355.977290330288042,53.3392978779897788,70.2168268189972196]},"#dd99bb":{"lch":[70.694001085559151,42.6623948649138427,337.661645838825223],"luv":[70.694001085559151,39.4608168046039651,-16.2149274658665163],"rgb":[0.866666666666666696,0.6,0.733333333333333282],"xyz":[0.501775480479665248,0.417439145734297579,0.524297150010553659],"hpluv":[337.661645838825223,76.5776430619999502,70.694001085559151],"hsluv":[337.661645838825223,54.2517942883204398,70.694001085559151]},"#dd99cc":{"lch":[71.2249627580945912,47.3730793907595,320.82657583403028],"luv":[71.2249627580945912,36.7253906259007294,-29.9241430008982121],"rgb":[0.866666666666666696,0.6,0.8],"xyz":[0.521067855923387,0.42515609591178638,0.625903660680823815],"hpluv":[320.82657583403028,84.3992741769230719,71.2249627580945912],"hsluv":[320.82657583403028,55.1472527266246075,71.2249627580945912]},"#dd99dd":{"lch":[71.8096607795551876,55.5140341348433424,307.715012949246],"luv":[71.8096607795551876,33.9598410238411077,-43.9151133843462844],"rgb":[0.866666666666666696,0.6,0.866666666666666696],"xyz":[0.54258618147402049,0.433763426132039887,0.739233508580829812],"hpluv":[307.715012949246,98.0977936102115677,71.8096607795551876],"hsluv":[307.715012949246,56.0031828352742878,71.8096607795551876]},"#dd99ee":{"lch":[72.447740927007942,65.8885644567307907,298.26171852853804],"luv":[72.447740927007942,31.1982236173053273,-58.0342465212858656],"rgb":[0.866666666666666696,0.6,0.933333333333333348],"xyz":[0.566398361740195311,0.443288298238509904,0.864644324649353],"hpluv":[298.26171852853804,115.404973126410823,72.447740927007942],"hsluv":[298.26171852853804,77.3800261839098908,72.447740927007942]},"#dd99ff":{"lch":[73.1385732331520302,77.5656763031263,291.532620718417377],"luv":[73.1385732331520302,28.4689992262389602,-72.1522710898123592],"rgb":[0.866666666666666696,0.6,1],"xyz":[0.592569410150026621,0.453756717602442627,1.00247851294113488],"hpluv":[291.532620718417377,134.574391894016571,73.1385732331520302],"hsluv":[291.532620718417377,99.9999999999977689,73.1385732331520302]},"#cc0000":{"lch":[42.5207510295766156,142.998625281495549,12.1770506300617818],"luv":[42.5207510295766156,139.781222041964895,30.163169542547891],"rgb":[0.8,0,0],"xyz":[0.249012838889184379,0.128397245052238429,0.0116724768229302719],"hpluv":[12.1770506300617818,426.746789183124861,42.5207510295766156],"hsluv":[12.1770506300617818,100.000000000002174,42.5207510295766156]},"#cc0011":{"lch":[42.5821659889152784,141.236718626044905,11.4841194603559],"luv":[42.5821659889152784,138.409148973409117,28.119711390930437],"rgb":[0.8,0,0.0666666666666666657],"xyz":[0.250024504388821511,0.128801911252093282,0.0170005817876859033],"hpluv":[11.4841194603559,420.880880123779207,42.5821659889152784],"hsluv":[11.4841194603559,99.9999999999964331,42.5821659889152784]},"#cc0022":{"lch":[42.6956735686566518,138.114600243667155,10.1872609469282853],"luv":[42.6956735686566518,135.937217546775798,24.4277646564013864],"rgb":[0.8,0,0.133333333333333331],"xyz":[0.251899862527298513,0.12955205450748411,0.0268774679836651],"hpluv":[10.1872609469282853,410.482879191578036,42.6956735686566518],"hsluv":[10.1872609469282853,99.9999999999964615,42.6956735686566518]},"#cc0033":{"lch":[42.881611378965772,133.362165770655935,8.01952044887972626],"luv":[42.881611378965772,132.057963211529,18.6054188736068511],"rgb":[0.8,0,0.2],"xyz":[0.254987613259756274,0.130787154800467209,0.0431396218412762461],"hpluv":[8.01952044887972626,394.639788400466045,42.881611378965772],"hsluv":[8.01952044887972626,99.9999999999966604,42.881611378965772]},"#cc0044":{"lch":[43.1480085091585153,127.29097956278504,4.82801781999359658],"luv":[43.1480085091585153,126.839328429887985,10.7134607624411853],"rgb":[0.8,0,0.266666666666666663],"xyz":[0.259445608503975134,0.132570352898154803,0.0666183967941628846],"hpluv":[4.82801781999359658,374.34858804079829,43.1480085091585153],"hsluv":[4.82801781999359658,99.9999999999967741,43.1480085091585153]},"#cc0055":{"lch":[43.5005971125795,120.485699890795146,0.473888563816867114],"luv":[43.5005971125795,120.481578818580687,0.996515708296922487],"rgb":[0.8,0,0.333333333333333315],"xyz":[0.265408022543337119,0.134955318513899636,0.0980204440681367861],"hpluv":[0.473888563816867114,351.463000970195878,43.5005971125795],"hsluv":[0.473888563816867114,99.999999999997,43.5005971125795]},"#cc0066":{"lch":[43.9431844272177372,113.726547538665841,354.863826263116096],"luv":[43.9431844272177372,113.269906269789104,-10.1811565500985228],"rgb":[0.8,0,0.4],"xyz":[0.272993018316845304,0.137989316823302927,0.137968088475280748],"hpluv":[354.863826263116096,328.404920869645196,43.9431844272177372],"hsluv":[354.863826263116096,99.9999999999972857,43.9431844272177372]},"#cc0077":{"lch":[44.4778741065655,107.874648109024193,348.012259047653401],"luv":[44.4778741065655,105.522124609829902,-22.4058234053856609],"rgb":[0.8,0,0.466666666666666674],"xyz":[0.28230703133704721,0.14171492203138375,0.187021890381678657],"hpluv":[348.012259047653401,307.761788629886667,44.4778741065655],"hsluv":[348.012259047653401,99.9999999999975273,44.4778741065655]},"#cc0088":{"lch":[45.1052440924579,103.725434836726933,340.1176986346278],"luv":[45.1052440924579,97.5426962017022703,-35.2758876538989838],"rgb":[0.8,0,0.533333333333333326],"xyz":[0.293447448438991065,0.146171088872161348,0.245694753785250825],"hpluv":[340.1176986346278,291.808241377507443,45.1052440924579],"hsluv":[340.1176986346278,99.9999999999978,45.1052440924579]},"#cc0099":{"lch":[45.8245205562958589,101.850048541314862,331.598662995615],"luv":[45.8245205562958589,89.5911194129305102,-48.4444394147173441],"rgb":[0.8,0,0.6],"xyz":[0.306504412548063765,0.151393874515790505,0.314461431426368732],"hpluv":[331.598662995615,282.034759885138044,45.8245205562958589],"hsluv":[331.598662995615,99.9999999999981,45.8245205562958589]},"#cc00aa":{"lch":[46.633760692471931,102.477609530343315,323.022725489580409],"luv":[46.633760692471931,81.8667129915779,-61.640098629123905],"rgb":[0.8,0,0.66666666666666663],"xyz":[0.321562105513316321,0.1574169517018916,0.393765281043367332],"hpluv":[323.022725489580409,278.848217687739293,46.633760692471931],"hsluv":[323.022725489580409,99.9999999999983658,46.633760692471931]},"#cc00bb":{"lch":[47.5300446684938933,105.484027274260768,314.937463984289479],"luv":[47.5300446684938933,74.5070162947061903,-74.6698368342758414],"rgb":[0.8,0,0.733333333333333282],"xyz":[0.33869969762065294,0.164271988544826358,0.484023266142009079],"hpluv":[314.937463984289479,281.616311803476265,47.5300446684938933],"hsluv":[314.937463984289479,99.9999999999986,47.5300446684938933]},"#cc00cc":{"lch":[48.5096711653281147,110.497164945278598,307.715012949243601],"luv":[48.5096711653281147,67.5949102529980621,-87.4102486487325],"rgb":[0.8,0,0.8],"xyz":[0.357992073064374694,0.17198893872231516,0.585629776812279235],"hpluv":[307.715012949243601,289.042783730483393,48.5096711653281147],"hsluv":[307.715012949243601,99.9999999999988,48.5096711653281147]},"#cc00dd":{"lch":[49.5683488162236614,117.049051317219835,301.506761454082039],"luv":[49.5683488162236614,61.1697383356450075,-99.7935044289451],"rgb":[0.8,0,0.866666666666666696],"xyz":[0.379510398615008238,0.180596268942568694,0.698959624712285232],"hpluv":[301.506761454082039,299.64205877637869,49.5683488162236614],"hsluv":[301.506761454082039,99.9999999999990337,49.5683488162236614]},"#cc00ee":{"lch":[50.7013760136427862,124.695255359169607,296.294949026353493],"luv":[50.7013760136427862,55.2390203059142522,-111.792474454818787],"rgb":[0.8,0,0.933333333333333348],"xyz":[0.403322578881182947,0.190121141049038739,0.824370440780808456],"hpluv":[296.294949026353493,312.082566880879938,50.7013760136427862],"hsluv":[296.294949026353493,99.99999999999919,50.7013760136427862]},"#cc00ff":{"lch":[51.9038030272213,133.072735088441448,291.971633700566258],"luv":[51.9038030272213,49.7888328026579075,-123.407556300526],"rgb":[0.8,0,1],"xyz":[0.429493627291014368,0.200589560412971435,0.962204629072590301],"hpluv":[291.971633700566258,325.333832743425603,51.9038030272213],"hsluv":[291.971633700566258,99.9999999999993321,51.9038030272213]},"#cc1100":{"lch":[43.1235624482234172,140.134259476931788,12.8715382160273855],"luv":[43.1235624482234172,136.61296213687416,31.2171307992428524],"rgb":[0.8,0.0666666666666666657,0],"xyz":[0.251017239150112814,0.132406045574095299,0.0123406102432397219],"hpluv":[12.8715382160273855,412.352867097941,43.1235624482234172],"hsluv":[12.8715382160273855,100.000000000002245,43.1235624482234172]},"#cc1111":{"lch":[43.1837333530957892,138.41807101963343,12.1770506300617676],"luv":[43.1837333530957892,135.303728142340162,29.196978192614182],"rgb":[0.8,0.0666666666666666657,0.0666666666666666657],"xyz":[0.252028904649749919,0.132810711773950152,0.0176687152079953516],"hpluv":[12.1770506300617676,406.735363437937394,43.1837333530957892],"hsluv":[12.1770506300617676,95.3107026807431197,43.1837333530957892]},"#cc1122":{"lch":[43.294951674171287,135.375047793376126,10.8766574447476163],"luv":[43.294951674171287,132.943125696930394,25.5446451333550044],"rgb":[0.8,0.0666666666666666657,0.133333333333333331],"xyz":[0.253904262788227,0.13356085502934098,0.0275456014039745511],"hpluv":[10.8766574447476163,396.771701832449367,43.294951674171287],"hsluv":[10.8766574447476163,95.396390587568618,43.294951674171287]},"#cc1133":{"lch":[43.4771672841157724,130.73841758888139,8.7012157385065958],"luv":[43.4771672841157724,129.233706917218683,19.7783424502448213],"rgb":[0.8,0.0666666666666666657,0.2],"xyz":[0.256992013520684681,0.134795955322324079,0.0438077552615856944],"hpluv":[8.7012157385065958,381.576227833431062,43.4771672841157724],"hsluv":[8.7012157385065958,95.5308510527687389,43.4771672841157724]},"#cc1144":{"lch":[43.7382910834512586,124.807582872189826,5.49437317543092796],"luv":[43.7382910834512586,124.234167693991893,11.9500761411646046],"rgb":[0.8,0.0666666666666666657,0.266666666666666663],"xyz":[0.261450008764903596,0.136579153420011673,0.0672865302144723398],"hpluv":[5.49437317543092796,362.091632024479338,43.7382910834512586],"hsluv":[5.49437317543092796,95.7116850897169229,43.7382910834512586]},"#cc1155":{"lch":[44.0840061747103107,118.151091154502552,1.11194247693657511],"luv":[44.0840061747103107,118.128842001262925,2.29282106589917234],"rgb":[0.8,0.0666666666666666657,0.333333333333333315],"xyz":[0.267412422804265582,0.138964119035756506,0.0986885774884462413],"hpluv":[1.11194247693657511,340.091681007194666,44.0840061747103107],"hsluv":[1.11194247693657511,95.9318436200579754,44.0840061747103107]},"#cc1166":{"lch":[44.5181325219627837,111.53522478210337,355.453854482233226],"luv":[44.5181325219627837,111.184314904818763,-8.84050260677650712],"rgb":[0.8,0.0666666666666666657,0.4],"xyz":[0.274997418577773767,0.141998117345159797,0.138636221895590217],"hpluv":[355.453854482233226,317.917500588946211,44.5181325219627837],"hsluv":[355.453854482233226,96.1812476973727115,44.5181325219627837]},"#cc1177":{"lch":[45.0428415016287857,105.814757555455103,348.528515458334311],"luv":[45.0428415016287857,103.700981473984271,-21.0444614531261323],"rgb":[0.8,0.0666666666666666657,0.466666666666666674],"xyz":[0.284311431597975672,0.14572372255324062,0.187690023801988126],"hpluv":[348.528515458334311,298.098498005115459,45.0428415016287857],"hsluv":[348.528515458334311,96.4486017572014589,45.0428415016287857]},"#cc1188":{"lch":[45.6588256994622341,101.788242110562607,340.533613155211185],"luv":[45.6588256994622341,95.9697371205835594,-33.9213176183443323],"rgb":[0.8,0.0666666666666666657,0.533333333333333326],"xyz":[0.295451848699919473,0.150179889394018218,0.246362887205560266],"hpluv":[340.533613155211185,282.886487347344485,45.6588256994622341],"hsluv":[340.533613155211185,96.7230145871901215,45.6588256994622341]},"#cc1199":{"lch":[46.3654632546324876,100.035938879036408,331.896400713626349],"luv":[46.3654632546324876,88.2414291467186,-47.1236591273953138],"rgb":[0.8,0.0666666666666666657,0.6],"xyz":[0.308508812808992228,0.155402675037647375,0.315129564846678201],"hpluv":[331.896400713626349,273.779405248492822,46.3654632546324876],"hsluv":[331.896400713626349,96.9951405388504355,46.3654632546324876]},"#cc11aa":{"lch":[47.1609900317596882,100.794975336059878,323.201580807901109],"luv":[47.1609900317596882,80.7113646178594735,-60.3763420100941488],"rgb":[0.8,0.0666666666666666657,0.66666666666666663],"xyz":[0.323566505774244728,0.16142575222374847,0.394433414463676801],"hpluv":[323.201580807901109,271.203503720358924,47.1609900317596882],"hsluv":[323.201580807901109,97.2577546113476075,47.1609900317596882]},"#cc11bb":{"lch":[48.0426807208370548,103.942897448445919,315.013990059648165],"luv":[48.0426807208370548,73.5166718264647727,-73.4807790754699681],"rgb":[0.8,0.0666666666666666657,0.733333333333333282],"xyz":[0.340704097881581403,0.168280789066683228,0.484691399562318548],"hpluv":[315.013990059648165,274.540811344802705,48.0426807208370548],"hsluv":[315.013990059648165,97.5058443216483,48.0426807208370548]},"#cc11cc":{"lch":[49.0070341259591515,109.103198367120783,307.715012949243601],"luv":[49.0070341259591515,66.7421730285370387,-86.3075328888743769],"rgb":[0.8,0.0666666666666666657,0.8],"xyz":[0.359996473325303157,0.17599773924417203,0.586297910232588704],"hpluv":[307.715012949243601,282.499958642668389,49.0070341259591515],"hsluv":[307.715012949243601,97.7363817897909541,49.0070341259591515]},"#cc11dd":{"lch":[50.0499556366759037,115.801352096543823,301.456118533327128],"luv":[50.0499556366759037,60.4304023076134555,-98.7831950502093292],"rgb":[0.8,0.0666666666666666657,0.866666666666666696],"xyz":[0.381514798875936645,0.184605069464425564,0.699627758132594701],"hpluv":[301.456118533327128,293.595408819402792,50.0499556366759037],"hsluv":[301.456118533327128,97.9479403979501342,50.0499556366759037]},"#cc11ee":{"lch":[51.1669298024285837,123.587345912593733,296.214453457233276],"luv":[51.1669298024285837,54.5925079172689109,-110.876012505059137],"rgb":[0.8,0.0666666666666666657,0.933333333333333348],"xyz":[0.40532697914211141,0.194129941570895609,0.825038574201117925],"hpluv":[296.214453457233276,306.495409047480564,51.1669298024285837],"hsluv":[296.214453457233276,98.1402788193950215,51.1669298024285837]},"#cc11ff":{"lch":[52.3531771468210678,132.094610043027387,291.87590029388349],"luv":[52.3531771468210678,49.2181193296501576,-122.582881072651375],"rgb":[0.8,0.0666666666666666657,1],"xyz":[0.431498027551942775,0.204598360934828305,0.96287276249289977],"hpluv":[291.87590029388349,320.170549145207644,52.3531771468210678],"hsluv":[291.87590029388349,99.9999999999991189,52.3531771468210678]},"#cc2200":{"lch":[44.2095884480383674,135.132222138307952,14.1797238149512133],"luv":[44.2095884480383674,131.015027118873576,33.102569825888537],"rgb":[0.8,0.133333333333333331,0],"xyz":[0.254732862884880729,0.139837293043631267,0.0135791514881623328],"hpluv":[14.1797238149512133,387.866054960954045,44.2095884480383674],"hsluv":[14.1797238149512133,100.00000000000226,44.2095884480383674]},"#cc2211":{"lch":[44.2676114068871129,133.490625771231663,13.482935392010976],"luv":[44.2676114068871129,129.81154471696064,31.1241068464871375],"rgb":[0.8,0.133333333333333331,0.0666666666666666657],"xyz":[0.255744528384517833,0.14024195924348612,0.0189072564529179643],"hpluv":[13.482935392010976,382.652016671578622,44.2676114068871129],"hsluv":[13.482935392010976,95.5414705532830197,44.2676114068871129]},"#cc2222":{"lch":[44.3748759613401162,130.576558981694717,12.1770506300617747],"luv":[44.3748759613401162,127.638646515421286,27.5429423121666019],"rgb":[0.8,0.133333333333333331,0.133333333333333331],"xyz":[0.25761988652299489,0.140992102498876948,0.0287841426488971604],"hpluv":[12.1770506300617747,373.394050741154899,44.3748759613401162],"hsluv":[12.1770506300617747,87.4977996802062847,44.3748759613401162]},"#cc2233":{"lch":[44.5506596541482907,126.128431434884163,9.98899557195718657],"luv":[44.5506596541482907,124.216461430809,21.8781152257824267],"rgb":[0.8,0.133333333333333331,0.2],"xyz":[0.260707637255452596,0.142227202791860047,0.0450462965065083071],"hpluv":[9.98899557195718657,359.251162664680805,44.5506596541482907],"hsluv":[9.98899557195718657,87.8457930667704829,44.5506596541482907]},"#cc2244":{"lch":[44.8026641682027602,120.425301369152351,6.75586226508684629],"luv":[44.8026641682027602,119.589119356054482,14.1667124448306829],"rgb":[0.8,0.133333333333333331,0.266666666666666663],"xyz":[0.265165632499671511,0.144010400889547641,0.0685250714593949456],"hpluv":[6.75586226508684629,341.077623618219945,44.8026641682027602],"hsluv":[6.75586226508684629,88.3153597242729,44.8026641682027602]},"#cc2255":{"lch":[45.136480402373536,114.008772215671115,2.323188749975583],"luv":[45.136480402373536,113.915065115628011,4.62148047999889577],"rgb":[0.8,0.133333333333333331,0.333333333333333315],"xyz":[0.271128046539033496,0.146395366505292474,0.0999271187333688471],"hpluv":[2.323188749975583,320.51614012782295,45.136480402373536],"hsluv":[2.323188749975583,88.8894607126765663,45.136480402373536]},"#cc2266":{"lch":[45.5559407124691731,107.622008592458101,356.577515499379103],"luv":[45.5559407124691731,107.430062323442542,-6.42483016556681452],"rgb":[0.8,0.133333333333333331,0.4],"xyz":[0.278713042312541681,0.149429364814695764,0.139874763140512809],"hpluv":[356.577515499379103,299.774992396016216,45.5559407124691731],"hsluv":[356.577515499379103,89.543058875786258,45.5559407124691731]},"#cc2277":{"lch":[46.0633224094211542,102.110102175352239,349.514816334356908],"luv":[46.0633224094211542,100.405067655344695,-18.5821246198201955],"rgb":[0.8,0.133333333333333331,0.466666666666666674],"xyz":[0.288027055332743587,0.153154970022776588,0.188928565046910718],"hpluv":[349.514816334356908,281.289018816444,46.0633224094211542],"hsluv":[349.514816334356908,90.2475430222303174,46.0633224094211542]},"#cc2288":{"lch":[46.6595045299101443,98.2790088680822294,341.330158110485115],"luv":[46.6595045299101443,93.107459692013677,-31.4605234189234864],"rgb":[0.8,0.133333333333333331,0.533333333333333326],"xyz":[0.299167472434687387,0.157611136863554185,0.247601428450482886],"hpluv":[341.330158110485115,267.276005324070297,46.6595045299101443],"hsluv":[341.330158110485115,90.9748001704168,46.6595045299101443]},"#cc2299":{"lch":[47.3441166442187154,96.727251962869147,332.467163788405],"luv":[47.3441166442187154,85.772509513995189,-44.7128380217581167],"rgb":[0.8,0.133333333333333331,0.6],"xyz":[0.312224436543760087,0.162833922507183343,0.31636810609160082],"hpluv":[332.467163788405,259.252025571181889,47.3441166442187154],"hsluv":[332.467163788405,91.7002075152857259,47.3441166442187154]},"#cc22aa":{"lch":[48.1156936783416285,97.7076198445846131,323.544141865814368],"luv":[48.1156936783416285,78.5876931080813534,-58.0581903579838254],"rgb":[0.8,0.133333333333333331,0.66666666666666663],"xyz":[0.327282129509012643,0.168856999693284437,0.395671955708599421],"hpluv":[323.544141865814368,257.680176436907345,48.1156936783416285],"hsluv":[323.544141865814368,92.4042695013683328,48.1156936783416285]},"#cc22bb":{"lch":[48.9718390817589295,101.100583268181566,315.160199675634601],"luv":[48.9718390817589295,71.6885121422158846,-71.2887450022924867],"rgb":[0.8,0.133333333333333331,0.733333333333333282],"xyz":[0.344419721616349317,0.175712036536219196,0.485929940807241167],"hpluv":[315.160199675634601,261.96699229126267,48.9718390817589295],"hsluv":[315.160199675634601,93.0730408422972602,48.9718390817589295]},"#cc22cc":{"lch":[49.9093929354593513,106.520702596514482,307.715012949243658],"luv":[49.9093929354593513,65.1623716831421405,-84.2646153393173876],"rgb":[0.8,0.133333333333333331,0.8],"xyz":[0.363712097060071,0.183428986713708,0.587536451477511323],"hpluv":[307.715012949243658,270.826440261226253,49.9093929354593513],"hsluv":[307.715012949243658,93.6976999618693327,49.9093929354593513]},"#cc22dd":{"lch":[50.9245991417877377,113.480326695625976,301.360030221234524],"luv":[50.9245991417877377,59.0567580516805819,-96.9024451465042347],"rgb":[0.8,0.133333333333333331,0.866666666666666696],"xyz":[0.385230422610704615,0.192036316933961532,0.700866299377517321],"hpluv":[301.360030221234524,282.769318292038,50.9245991417877377],"hsluv":[301.360030221234524,94.2736696463096848,50.9245991417877377]},"#cc22ee":{"lch":[52.0132654143591964,121.518329969744158,296.062236941936249],"luv":[52.0132654143591964,53.3887372455597244,-109.162022947361166],"rgb":[0.8,0.133333333333333331,0.933333333333333348],"xyz":[0.409042602876879324,0.201561189040431576,0.826277115446040544],"hpluv":[296.062236941936249,296.460610812118318,52.0132654143591964],"hsluv":[296.062236941936249,94.7995997265514,52.0132654143591964]},"#cc22ff":{"lch":[53.170910599170611,130.261070707018604,291.695402941657903],"luv":[53.170910599170611,48.1538976563848422,-121.033667556747687],"rgb":[0.8,0.133333333333333331,1],"xyz":[0.435213651286710745,0.212029608404364273,0.964111303737822389],"hpluv":[291.695402941657903,310.870757963074425,53.170910599170611],"hsluv":[291.695402941657903,99.9999999999990621,53.170910599170611]},"#cc3300":{"lch":[45.9167915379707807,127.686226573765651,16.3911473443809399],"luv":[45.9167915379707807,122.496750231663356,36.0321889333482446],"rgb":[0.8,0.2,0],"xyz":[0.260850584973891519,0.15207273722165307,0.0156183921844992128],"hpluv":[16.3911473443809399,352.867650162608584,45.9167915379707807],"hsluv":[16.3911473443809399,100.000000000002288,45.9167915379707807]},"#cc3311":{"lch":[45.9716631772740811,126.14350976506573,15.6923563051461095],"luv":[45.9716631772740811,121.44186843726601,34.118289029712578],"rgb":[0.8,0.2,0.0666666666666666657],"xyz":[0.261862250473528624,0.152477403421507923,0.020946497149254846],"hpluv":[15.6923563051461095,348.188177538365835,45.9716631772740811],"hsluv":[15.6923563051461095,95.8756509753329595,45.9716631772740811]},"#cc3322":{"lch":[46.0731243265426613,123.399991281457972,14.3806932854006604],"luv":[46.0731243265426613,119.533487768482047,30.6480529588105668],"rgb":[0.8,0.2,0.133333333333333331],"xyz":[0.263737608612005681,0.153227546676898752,0.0308233833452340386],"hpluv":[14.3806932854006604,339.865273437066321,46.0731243265426613],"hsluv":[14.3806932854006604,88.4197842587317524,46.0731243265426613]},"#cc3333":{"lch":[46.2394596481243951,119.199958247304309,12.1770506300617924],"luv":[46.2394596481243951,116.518014060345578,25.1432385661076303],"rgb":[0.8,0.2,0.2],"xyz":[0.266825359344463386,0.154462646969881851,0.0470855372028451818],"hpluv":[12.1770506300617924,327.11667224844831,46.2394596481243951],"hsluv":[12.1770506300617924,76.6535755019082,46.2394596481243951]},"#cc3344":{"lch":[46.4780522046582405,113.793717346871745,8.90746564227168669],"luv":[46.4780522046582405,112.421330819758609,17.6197186224449389],"rgb":[0.8,0.2,0.266666666666666663],"xyz":[0.271283354588682302,0.156245845067569444,0.0705643121557318204],"hpluv":[8.90746564227168669,310.677421508065,46.4780522046582405],"hsluv":[8.90746564227168669,77.4930753906613887,46.4780522046582405]},"#cc3355":{"lch":[46.7943405275181661,107.68493286266704,4.39945159143432907],"luv":[46.7943405275181661,107.367637754253522,8.26045572038872855],"rgb":[0.8,0.2,0.333333333333333315],"xyz":[0.277245768628044287,0.158630810683314277,0.101966359429705736],"hpluv":[4.39945159143432907,292.012160158640199,46.7943405275181661],"hsluv":[4.39945159143432907,78.5258346284665265,46.7943405275181661]},"#cc3366":{"lch":[47.192153202602185,101.584765682520938,358.514989280316684],"luv":[47.192153202602185,101.55064731932022,-2.63261235272558647],"rgb":[0.8,0.2,0.4],"xyz":[0.284830764401552472,0.161664808992717568,0.141914003836849684],"hpluv":[358.514989280316684,273.148057687163259,47.192153202602185],"hsluv":[358.514989280316684,79.7102211537212781,47.192153202602185]},"#cc3377":{"lch":[47.6738975277608859,96.3272258277819589,351.225603296168742],"luv":[47.6738975277608859,95.1998742335289876,-14.6941614798792699],"rgb":[0.8,0.2,0.466666666666666674],"xyz":[0.294144777421754378,0.165390414200798391,0.190967805743247593],"hpluv":[351.225603296168742,256.39391915093114,47.6738975277608859],"hsluv":[351.225603296168742,80.9972134637005894,47.6738975277608859]},"#cc3388":{"lch":[48.2406991607903279,92.7347249941698095,342.718318936463845],"luv":[48.2406991607903279,88.5482927213948301,-27.5486674064369161],"rgb":[0.8,0.2,0.533333333333333326],"xyz":[0.305285194523698178,0.169846581041576,0.24964066914681976],"hpluv":[342.718318936463845,243.93163202064531,48.2406991607903279],"hsluv":[342.718318936463845,82.3372641433758758,48.2406991607903279]},"#cc3399":{"lch":[48.8925304323200436,91.4400639314067405,333.463846826874658],"luv":[48.8925304323200436,81.8070942553503926,-40.8519843003490877],"rgb":[0.8,0.2,0.6],"xyz":[0.318342158632770933,0.175069366685205147,0.318407346787937695],"hpluv":[333.463846826874658,237.319449797121564,48.8925304323200436],"hsluv":[333.463846826874658,83.6856508008112,48.8925304323200436]},"#cc33aa":{"lch":[49.6283419748853873,92.7248127600779242,324.141487451800515],"luv":[49.6283419748853873,75.1503095778714254,-54.3168654447363792],"rgb":[0.8,0.2,0.66666666666666663],"xyz":[0.333399851598023433,0.181092443871306241,0.397711196404936296],"hpluv":[324.141487451800515,237.085790295602294,49.6283419748853873],"hsluv":[324.141487451800515,85.0057245198840263,49.6283419748853873]},"#cc33bb":{"lch":[50.4462014889725054,96.4744776262418355,315.414049480091705],"luv":[50.4462014889725054,68.7089492450233905,-67.7230029377097],"rgb":[0.8,0.2,0.733333333333333282],"xyz":[0.350537443705360108,0.187947480714241,0.487969181503578042],"hpluv":[315.414049480091705,242.674024226837219,50.4462014889725054],"hsluv":[315.414049480091705,86.2701296035756258,50.4462014889725054]},"#cc33cc":{"lch":[51.3434379695087273,102.286811532428814,307.715012949243771],"luv":[51.3434379695087273,62.5723551280607779,-80.915339628518268],"rgb":[0.8,0.2,0.8],"xyz":[0.369829819149081862,0.195664430891729801,0.589575692173848198],"hpluv":[307.715012949243771,252.798225898109365,51.3434379695087273],"hsluv":[307.715012949243771,87.4604868647498,51.3434379695087273]},"#cc33dd":{"lch":[52.3167871114961827,109.649949983538605,301.195256028086874],"luv":[52.3167871114961827,56.7938698017029751,-93.7953510806358],"rgb":[0.8,0.2,0.866666666666666696],"xyz":[0.39134814469971535,0.204271761111983335,0.702905540073854196],"hpluv":[301.195256028086874,265.954105752122757,52.3167871114961827],"hsluv":[301.195256028086874,88.5661577004671,52.3167871114961827]},"#cc33ee":{"lch":[53.3625327970638494,118.082474280319559,295.802769884900215],"luv":[53.3625327970638494,51.3983045372134626,-106.309383512755787],"rgb":[0.8,0.2,0.933333333333333348],"xyz":[0.415160324965890115,0.21379663321845338,0.828316356142377419],"hpluv":[295.802769884900215,280.794331636146467,53.3625327970638494],"hsluv":[295.802769884900215,89.5826266077864375,53.3625327970638494]},"#cc33ff":{"lch":[54.4766398815527566,127.197777570935344,291.389330811727291],"luv":[54.4766398815527566,46.3894624378335,-118.436870921660102],"rgb":[0.8,0.2,1],"xyz":[0.441331373375721481,0.224265052582386076,0.966150544434159264],"hpluv":[291.389330811727291,296.284230666095709,54.4766398815527566],"hsluv":[291.389330811727291,99.9999999999990195,54.4766398815527566]},"#cc4400":{"lch":[48.2269914221542848,118.435883841274119,19.7039935064818295],"luv":[48.2269914221542848,111.501113106022,39.9319465764175447],"rgb":[0.8,0.266666666666666663,0],"xyz":[0.26968315545685756,0.1697378781875854,0.0185625823454878096],"hpluv":[19.7039935064818295,311.625122342549162,48.2269914221542848],"hsluv":[19.7039935064818295,100.000000000002174,48.2269914221542848]},"#cc4411":{"lch":[48.2779913635395,116.996103035931512,19.0066631306561966],"luv":[48.2779913635395,110.617558299276112,38.1030697123021],"rgb":[0.8,0.266666666666666663,0.0666666666666666657],"xyz":[0.270694820956494664,0.170142544387440253,0.0238906873102434428],"hpluv":[19.0066631306561966,307.511619232155283,48.2779913635395],"hsluv":[19.0066631306561966,96.278384876640132,48.2779913635395]},"#cc4422":{"lch":[48.3723181772035389,114.428966114904512,17.6946931608209894],"luv":[48.3723181772035389,109.015290220227484,34.7800917814421453],"rgb":[0.8,0.266666666666666663,0.133333333333333331],"xyz":[0.272570179094971721,0.170892687642831081,0.0337675735062226354],"hpluv":[17.6946931608209894,300.177682052924467,48.3723181772035389],"hsluv":[17.6946931608209894,89.5341066932624869,48.3723181772035389]},"#cc4433":{"lch":[48.5270263662828114,110.48209503335984,15.4815426750504042],"luv":[48.5270263662828114,106.473417017787412,29.4907577304601034],"rgb":[0.8,0.266666666666666663,0.2],"xyz":[0.275657929827429427,0.17212778793581418,0.0500297273638337786],"hpluv":[15.4815426750504042,288.900004133964501,48.5270263662828114],"hsluv":[15.4815426750504042,78.8475327486048,48.5270263662828114]},"#cc4444":{"lch":[48.7490888960709725,105.371058014361893,12.1770506300618457],"luv":[48.7490888960709725,103.000257716521162,22.2262632351064191],"rgb":[0.8,0.266666666666666663,0.266666666666666663],"xyz":[0.280115925071648342,0.173910986033501774,0.0735085023167204171],"hpluv":[12.1770506300618457,274.28001464324592,48.7490888960709725],"hsluv":[12.1770506300618457,64.2723089184284788,48.7490888960709725]},"#cc4455":{"lch":[49.0437296069087,99.5540950311582691,7.58056168126664254],"luv":[49.0437296069087,98.6840273694228074,13.1331861946711772],"rgb":[0.8,0.266666666666666663,0.333333333333333315],"xyz":[0.286078339111010327,0.176295951649246607,0.104910549590694333],"hpluv":[7.58056168126664254,257.581676799067395,49.0437296069087],"hsluv":[7.58056168126664254,65.7689369270132858,49.0437296069087]},"#cc4466":{"lch":[49.4147368002801244,93.7049448509207679,1.51289058041819868],"luv":[49.4147368002801244,93.6722802728102835,2.47398423725391092],"rgb":[0.8,0.266666666666666663,0.4],"xyz":[0.293663334884518512,0.179329949958649898,0.14485819399783828],"hpluv":[1.51289058041819868,240.627550105868352,49.4147368002801244],"hsluv":[1.51289058041819868,67.500804726855,49.4147368002801244]},"#cc4477":{"lch":[49.8646356184384132,88.6490107187132566,353.900159994018],"luv":[49.8646356184384132,88.1471013723349586,-9.41995865499641383],"rgb":[0.8,0.266666666666666663,0.466666666666666674],"xyz":[0.302977347904720418,0.183055555166730721,0.19391199590423619],"hpluv":[353.900159994018,225.590377060975072,49.8646356184384132],"hsluv":[353.900159994018,69.4017616341687784,49.8646356184384132]},"#cc4488":{"lch":[50.3948096201307436,85.2405150759366279,344.907000147604322],"luv":[50.3948096201307436,82.3000967091543743,-22.1954835963269055],"rgb":[0.8,0.266666666666666663,0.533333333333333326],"xyz":[0.314117765006664218,0.187511722007508319,0.252584859307808385],"hpluv":[344.907000147604322,214.634525667930632,50.3948096201307436],"hsluv":[344.907000147604322,71.4025087995354824,50.3948096201307436]},"#cc4499":{"lch":[51.0056074652318046,84.1718897613591679,335.041688295241613],"luv":[51.0056074652318046,76.3115014820887581,-35.5170630478867793],"rgb":[0.8,0.266666666666666663,0.6],"xyz":[0.327174729115737,0.192734507651137477,0.321351536948926264],"hpluv":[335.041688295241613,209.40569084337892,51.0056074652318046],"hsluv":[335.041688295241613,73.4381222823911344,51.0056074652318046]},"#cc44aa":{"lch":[51.6964496814969152,85.7749410926589348,325.085448007895536],"luv":[51.6964496814969152,70.3360122964612913,-49.093644127128691],"rgb":[0.8,0.266666666666666663,0.66666666666666663],"xyz":[0.342232422080989473,0.198757584837238571,0.400655386565924865],"hpluv":[325.085448007895536,210.542141790665795,51.6964496814969152],"hsluv":[325.085448007895536,75.4531429469973602,51.6964496814969152]},"#cc44bb":{"lch":[52.465940673938249,89.9444778306290829,315.812454406659811],"luv":[52.465940673938249,64.4957791941851326,-62.692133145710109],"rgb":[0.8,0.266666666666666663,0.733333333333333282],"xyz":[0.359370014188326148,0.20561262168017333,0.490913371664566611],"hpluv":[315.812454406659811,217.538619181736436,52.465940673938249],"hsluv":[315.812454406659811,77.4040753157756143,52.465940673938249]},"#cc44cc":{"lch":[53.3119860408958175,96.2498903650287758,307.715012949243885],"luv":[53.3119860408958175,58.8793631430003828,-76.1397530279337502],"rgb":[0.8,0.266666666666666663,0.8],"xyz":[0.378662389632047902,0.213329571857662131,0.592519882334836767],"hpluv":[307.715012949243885,229.094523932317799,53.3119860408958175],"hsluv":[307.715012949243885,79.2597279113993,53.3119860408958175]},"#cc44dd":{"lch":[54.2319126329379486,104.138844540210442,300.941773361922515],"luv":[54.2319126329379486,53.5447276840333259,-89.31887303035586],"rgb":[0.8,0.266666666666666663,0.866666666666666696],"xyz":[0.40018071518268139,0.221936902077915665,0.705849730234842765],"hpluv":[300.941773361922515,243.66724889744043,54.2319126329379486],"hsluv":[300.941773361922515,81.0000946003390538,54.2319126329379486]},"#cc44ee":{"lch":[55.2225876682288401,113.096616320403683,295.407423092027],"luv":[55.2225876682288401,48.5243479249087528,-102.157879194837463],"rgb":[0.8,0.266666666666666663,0.933333333333333348],"xyz":[0.423992895448856155,0.23146177418438571,0.831260546303366],"hpluv":[295.407423092027,259.879597148300718,55.2225876682288401],"hsluv":[295.407423092027,86.8652077390175634,55.2225876682288401]},"#cc44ff":{"lch":[56.2805330741479537,122.715491745326418,290.92682559337851],"luv":[56.2805330741479537,43.8309487146615382,-114.62085259266739],"rgb":[0.8,0.266666666666666663,1],"xyz":[0.450163943858687521,0.241930193548318406,0.969094734595147833],"hpluv":[290.92682559337851,276.681751484143376,56.2805330741479537],"hsluv":[290.92682559337851,99.9999999999989768,56.2805330741479537]},"#cc5500":{"lch":[51.07852272981998,108.355754132896138,24.3337665629108457],"luv":[51.07852272981998,98.7294936728878838,44.6481414260866],"rgb":[0.8,0.333333333333333315,0],"xyz":[0.281496412171203525,0.193364391616277664,0.0225003345836030169],"hpluv":[24.3337665629108457,269.186315008697875,51.07852272981998],"hsluv":[24.3337665629108457,100.000000000002217,51.07852272981998]},"#cc5511":{"lch":[51.1252833166066,107.003417336388864,23.6474066829241423],"luv":[51.1252833166066,98.0184651549503201,42.91983003616388],"rgb":[0.8,0.333333333333333315,0.0666666666666666657],"xyz":[0.282508077670840629,0.193769057816132517,0.0278284395483586466],"hpluv":[23.6474066829241423,265.583595811902,51.1252833166066],"hsluv":[23.6474066829241423,96.7082849697218307,51.1252833166066]},"#cc5522":{"lch":[51.2117930688627467,104.583581473170284,22.351909846807331],"luv":[51.2117930688627467,96.7257518395109486,39.7725337995530808],"rgb":[0.8,0.333333333333333315,0.133333333333333331],"xyz":[0.284383435809317686,0.194519201071523345,0.0377053257443378462],"hpluv":[22.351909846807331,259.139045481141636,51.2117930688627467],"hsluv":[22.351909846807331,90.7274756498525079,51.2117930688627467]},"#cc5533":{"lch":[51.3537468781662625,100.840694749975015,20.1540565840537802],"luv":[51.3537468781662625,94.6661789932146718,34.7442120716858369],"rgb":[0.8,0.333333333333333315,0.2],"xyz":[0.287471186541775392,0.195754301364506444,0.0539674796019489894],"hpluv":[20.1540565840537802,249.174169543579183,51.3537468781662625],"hsluv":[20.1540565840537802,81.2092815218714321,51.3537468781662625]},"#cc5544":{"lch":[51.5576456995760424,95.9504499860225764,16.842752904303623],"luv":[51.5576456995760424,91.8345174188591074,27.8012636936791502],"rgb":[0.8,0.333333333333333315,0.266666666666666663],"xyz":[0.291929181785994307,0.197537499462194038,0.0774462545548356279],"hpluv":[16.842752904303623,236.152889903020736,51.5576456995760424],"hsluv":[16.842752904303623,68.1451659970290109,51.5576456995760424]},"#cc5555":{"lch":[51.8284441386287114,90.3192908744292851,12.1770506300618919],"luv":[51.8284441386287114,88.2871484081680364,19.0513445723360242],"rgb":[0.8,0.333333333333333315,0.333333333333333315],"xyz":[0.297891595825356292,0.199922465077938871,0.108848301828809529],"hpluv":[12.1770506300618919,221.132040760117775,51.8284441386287114],"hsluv":[12.1770506300618919,51.8180912815801,51.8284441386287114]},"#cc5566":{"lch":[52.1698415772242612,84.57836719340618,5.91246023067467696],"luv":[52.1698415772242612,84.1284474176031836,8.71232071300305577],"rgb":[0.8,0.333333333333333315,0.4],"xyz":[0.305476591598864478,0.202956463387342162,0.148795946235953491],"hpluv":[5.91246023067467696,205.721226704565879,52.1698415772242612],"hsluv":[5.91246023067467696,54.0130370973951415,52.1698415772242612]},"#cc5577":{"lch":[52.5844387621358607,79.5477054283049654,357.892334615122479],"luv":[52.5844387621358607,79.493890006545314,-2.92555815796844554],"rgb":[0.8,0.333333333333333315,0.466666666666666674],"xyz":[0.314790604619066383,0.206682068595422985,0.1978497481423514],"hpluv":[357.892334615122479,191.959557587962337,52.5844387621358607],"hsluv":[357.892334615122479,56.4492590331968884,52.5844387621358607]},"#cc5588":{"lch":[53.0738428910491962,76.1348505840982,348.222799824086337],"luv":[53.0738428910491962,74.5321119975331072,-15.5396188708133902],"rgb":[0.8,0.333333333333333315,0.533333333333333326],"xyz":[0.325931021721010183,0.211138235436200583,0.256522611545923596],"hpluv":[348.222799824086337,182.029716109510787,53.0738428910491962],"hsluv":[348.222799824086337,59.0443947768825339,53.0738428910491962]},"#cc5599":{"lch":[53.6387547547300443,75.1322702050955655,337.451566852479516],"luv":[53.6387547547300443,69.3888374020903314,-28.8105409556599774],"rgb":[0.8,0.333333333333333315,0.6],"xyz":[0.338987985830082938,0.216361021079829741,0.325289289187041475],"hpluv":[337.451566852479516,177.740808472615271,53.6387547547300443],"hsluv":[337.451566852479516,61.7180151219793274,53.6387547547300443]},"#cc55aa":{"lch":[54.2790527162633651,76.9604755372169507,326.525055670409472],"luv":[54.2790527162633651,64.1948187783047359,-42.449264268479169],"rgb":[0.8,0.333333333333333315,0.66666666666666663],"xyz":[0.354045678795335439,0.222384098265930835,0.404593138804040076],"hpluv":[326.525055670409472,179.918080614224607,54.2790527162633651],"hsluv":[326.525055670409472,64.3982563598392517,54.2790527162633651]},"#cc55bb":{"lch":[54.9938795911038767,81.534325182187132,316.414019967357433],"luv":[54.9938795911038767,59.0586208757266817,-56.2132144888709888],"rgb":[0.8,0.333333333333333315,0.733333333333333282],"xyz":[0.371183270902672113,0.229239135108865594,0.494851123902681822],"hpluv":[316.414019967357433,188.133202867989326,54.9938795911038767],"hsluv":[316.414019967357433,67.0257727218245378,54.9938795911038767]},"#cc55cc":{"lch":[55.7817339145568667,88.3780574248019,307.715012949244169],"luv":[55.7817339145568667,54.0638926159085145,-69.9126351198200382],"rgb":[0.8,0.333333333333333315,0.8],"xyz":[0.390475646346393868,0.236956085286354395,0.596457634572952],"hpluv":[307.715012949244169,201.044301715196383,55.7817339145568667],"hsluv":[307.715012949244169,69.5552053299685156,55.7817339145568667]},"#cc55dd":{"lch":[56.6405645837994882,96.8744721490496232,300.570417552325068],"luv":[56.6405645837994882,49.2700598324241312,-83.4093793183137],"rgb":[0.8,0.333333333333333315,0.866666666666666696],"xyz":[0.411993971897027356,0.245563415506607929,0.709787482472958],"hpluv":[300.570417552325068,217.030665421015726,56.6405645837994882],"hsluv":[300.570417552325068,72.1703256475756234,56.6405645837994882]},"#cc55ee":{"lch":[57.5678665910353118,106.457154357221242,294.836459829444038],"luv":[57.5678665910353118,44.7151619549172707,-96.6109724885468],"rgb":[0.8,0.333333333333333315,0.933333333333333348],"xyz":[0.435806152163202121,0.255088287613077946,0.835198298541481199],"hpluv":[294.836459829444038,234.657286550118499,57.5678665910353118],"hsluv":[294.836459829444038,85.8995510844284809,57.5678665910353118]},"#cc55ff":{"lch":[58.560775097021633,116.686665261471418,290.266986003053091],"luv":[58.560775097021633,40.4196983751927874,-109.462440284789551],"rgb":[0.8,0.333333333333333315,1],"xyz":[0.461977200573033486,0.26555670697701067,0.973032486833263],"hpluv":[290.266986003053091,252.844632524376181,58.560775097021633],"hsluv":[290.266986003053091,99.9999999999988,58.560775097021633]},"#cc6600":{"lch":[54.388060759003551,98.5584029412379579,30.482787603130209],"luv":[54.388060759003551,84.9358174587045482,49.9966569177284157],"rgb":[0.8,0.4,0],"xyz":[0.29652446987705,0.223420507027971,0.0275096871522183678],"hpluv":[30.482787603130209,229.947880001204965,54.388060759003551],"hsluv":[30.482787603130209,100.000000000002359,54.388060759003551]},"#cc6611":{"lch":[54.430531479182676,97.2669366851907711,29.8266301777559697],"luv":[54.430531479182676,84.3824110244092367,48.3783596438383583],"rgb":[0.8,0.4,0.0666666666666666657],"xyz":[0.297536135376687105,0.223825173227825858,0.032837792116974],"hpluv":[29.8266301777559697,226.757672191171366,54.430531479182676],"hsluv":[29.8266301777559697,97.1300271864182463,54.430531479182676]},"#cc6622":{"lch":[54.5091256699603548,94.945229062596681,28.5830621108902889],"luv":[54.5091256699603548,83.3737269438019695,45.4248629854764],"rgb":[0.8,0.4,0.133333333333333331],"xyz":[0.299411493515164162,0.224575316483216686,0.0427146783129532],"hpluv":[28.5830621108902889,221.025945543219876,54.5091256699603548],"hsluv":[28.5830621108902889,91.902111940908739,54.5091256699603548]},"#cc6633":{"lch":[54.6381494647888388,91.324965774397,26.4577509745500876],"luv":[54.6381494647888388,81.7598754062496624,40.688722605278663],"rgb":[0.8,0.4,0.2],"xyz":[0.302499244247621868,0.225810416776199785,0.0589768321705643403],"hpluv":[26.4577509745500876,212.096187894217309,54.6381494647888388],"hsluv":[26.4577509745500876,83.5463344335908289,54.6381494647888388]},"#cc6644":{"lch":[54.8236025158742137,86.5353782352002,23.2174871910251],"luv":[54.8236025158742137,79.5273159773273903,34.1141861950638798],"rgb":[0.8,0.4,0.266666666666666663],"xyz":[0.306957239491840783,0.227593614873887379,0.0824556071234509858],"hpluv":[23.2174871910251,200.292852977212362,54.8236025158742137],"hsluv":[23.2174871910251,72.0055590941951635,54.8236025158742137]},"#cc6655":{"lch":[55.0701314820163077,80.921365039871,18.5706632184066578],"luv":[55.0701314820163077,76.7079190692017505,25.7713498286149552],"rgb":[0.8,0.4,0.333333333333333315],"xyz":[0.312919653531202768,0.229978580489632212,0.113857654397424887],"hpluv":[18.5706632184066578,186.460314881725708,55.0701314820163077],"hsluv":[18.5706632184066578,57.463707489477386,55.0701314820163077]},"#cc6666":{"lch":[55.3812986167643686,75.0592421503045841,12.1770506300619576],"luv":[55.3812986167643686,73.3704437553848834,15.8324923911544637],"rgb":[0.8,0.4,0.4],"xyz":[0.320504649304710953,0.233012578799035502,0.153805298804568835],"hpluv":[12.1770506300619576,171.980959079196282,55.3812986167643686],"hsluv":[12.1770506300619576,45.9214429163451925,55.3812986167643686]},"#cc6677":{"lch":[55.7597240294908403,69.7578535305897702,3.7339069954147126],"luv":[55.7597240294908403,69.6097753289024,4.54283037928401079],"rgb":[0.8,0.4,0.466666666666666674],"xyz":[0.329818662324912859,0.236738184007116326,0.202859100710966744],"hpluv":[3.7339069954147126,158.749300244695775,55.7597240294908403],"hsluv":[3.7339069954147126,47.4001946683844935,55.7597240294908403]},"#cc6688":{"lch":[56.2071770412836855,65.9988703650454198,353.20230012342131],"luv":[56.2071770412836855,65.534915505775615,-7.81189727997758432],"rgb":[0.8,0.4,0.533333333333333326],"xyz":[0.340959079426856659,0.241194350847893924,0.26153196411453894],"hpluv":[353.20230012342131,148.999240608904586,56.2071770412836855],"hsluv":[353.20230012342131,48.9818497710332537,56.2071770412836855]},"#cc6699":{"lch":[56.7246474757154573,64.7364860461136544,341.13073016495332],"luv":[56.7246474757154573,61.2574795353059756,-20.9364234428957907],"rgb":[0.8,0.4,0.6],"xyz":[0.354016043535929414,0.246417136491523081,0.330298641755656819],"hpluv":[341.13073016495332,144.81603174775961,56.7246474757154573],"hsluv":[341.13073016495332,50.615240188358726,56.7246474757154573]},"#cc66aa":{"lch":[57.3124110050500661,66.5536753014576874,328.724652687595039],"luv":[57.3124110050500661,56.882247269492467,-34.5514347271451925],"rgb":[0.8,0.4,0.66666666666666663],"xyz":[0.369073736501181915,0.252440213677624203,0.40960249137265542],"hpluv":[328.724652687595039,147.354258527000582,57.3124110050500661],"hsluv":[328.724652687595039,52.5782983823555057,57.3124110050500661]},"#cc66bb":{"lch":[57.9700950113726634,71.4140361316817831,317.320615294889421],"luv":[57.9700950113726634,52.5006394421278628,-48.4112323204526405],"rgb":[0.8,0.4,0.733333333333333282],"xyz":[0.386211328608518589,0.259295250520558962,0.499860476471297166],"hpluv":[317.320615294889421,156.321564636453559,57.9700950113726634],"hsluv":[317.320615294889421,55.7867325729046044,57.9700950113726634]},"#cc66cc":{"lch":[58.6967474031167882,78.7715159072838844,307.71501294924451],"luv":[58.6967474031167882,48.1872412824568599,-62.3132529717215391],"rgb":[0.8,0.4,0.8],"xyz":[0.405503704052240344,0.267012200698047764,0.601466987141567322],"hpluv":[307.71501294924451,170.292097080892688,58.6967474031167882],"hsluv":[307.71501294924451,58.9158791245518429,58.6967474031167882]},"#cc66dd":{"lch":[59.4909085631812928,87.9045601549668589,300.035118747227784],"luv":[59.4909085631812928,43.9989332886277964,-76.1006278916348151],"rgb":[0.8,0.4,0.866666666666666696],"xyz":[0.427022029602873832,0.27561953091830127,0.71479683504157332],"hpluv":[300.035118747227784,187.499506963343748,59.4909085631812928],"hsluv":[300.035118747227784,69.8010448945604907,59.4909085631812928]},"#cc66ee":{"lch":[60.3506853352839272,98.1678970647401314,294.030303780460372],"luv":[60.3506853352839272,39.9759075841908498,-89.6597057040320919],"rgb":[0.8,0.4,0.933333333333333348],"xyz":[0.450834209869048597,0.285144403024771287,0.840207651110096543],"hpluv":[294.030303780460372,206.408039079415715,60.3506853352839272],"hsluv":[294.030303780460372,84.6650997716967169,60.3506853352839272]},"#cc66ff":{"lch":[61.2738253236974799,109.076950193692937,289.351384827957531],"luv":[61.2738253236974799,36.143813792667018,-102.914555763887847],"rgb":[0.8,0.4,1],"xyz":[0.477005258278879962,0.295612822388704,0.978041839401878388],"hpluv":[289.351384827957531,225.890163025573315,61.2738253236974799],"hsluv":[289.351384827957531,99.9999999999987,61.2738253236974799]},"#cc7700":{"lch":[58.0681687130694684,90.1274111260576,38.2527636780657616],"luv":[58.0681687130694684,70.775890411238,55.8007488550273862],"rgb":[0.8,0.466666666666666674,0],"xyz":[0.314978207930467602,0.260327983134806762,0.0336609331700240683],"hpluv":[38.2527636780657616,196.95095583694345,58.0681687130694684],"hsluv":[38.2527636780657616,100.00000000000226,58.0681687130694684]},"#cc7711":{"lch":[58.1065272060428,88.8714225311590837,37.658223554494576],"luv":[58.1065272060428,70.356768805075,54.2959927252558288],"rgb":[0.8,0.466666666666666674,0.0666666666666666657],"xyz":[0.315989873430104706,0.260732649334661615,0.0389890381347797],"hpluv":[37.658223554494576,194.078102813960953,58.1065272060428],"hsluv":[37.658223554494576,97.5201736027742925,58.1065272060428]},"#cc7722":{"lch":[58.1775287784180364,86.6008188207648573,36.5262538454337786],"luv":[58.1775287784180364,69.5910513475594286,51.5440335321973748],"rgb":[0.8,0.466666666666666674,0.133333333333333331],"xyz":[0.317865231568581763,0.261482792590052415,0.0488659243307589],"hpluv":[36.5262538454337786,188.888733728089306,58.1775287784180364],"hsluv":[36.5262538454337786,92.9922153048462832,58.1775287784180364]},"#cc7733":{"lch":[58.2941365993826111,83.0249283524691606,34.5753600294232513],"luv":[58.2941365993826111,68.3611064237300781,47.1157920070976459],"rgb":[0.8,0.466666666666666674,0.2],"xyz":[0.320952982301039469,0.262717892883035542,0.0651280781883700477],"hpluv":[34.5753600294232513,180.726967614303447,58.2941365993826111],"hsluv":[34.5753600294232513,85.7262720770138458,58.2941365993826111]},"#cc7744":{"lch":[58.4618482438389577,78.2181767747613321,31.5590767862408974],"luv":[58.4618482438389577,66.6497843857434447,40.9376284034837923],"rgb":[0.8,0.466666666666666674,0.266666666666666663],"xyz":[0.325410977545258384,0.264501090980723108,0.0886068531412566862],"hpluv":[31.5590767862408974,169.775287201810244,58.4618482438389577],"hsluv":[31.5590767862408974,75.6318325574838,58.4618482438389577]},"#cc7755":{"lch":[58.6849825995062133,72.4480337937475,27.1381330463907204],"luv":[58.6849825995062133,64.4721877935720187,33.0462494345479811],"rgb":[0.8,0.466666666666666674,0.333333333333333315],"xyz":[0.331373391584620369,0.266886056596467969,0.120008900415230588],"hpluv":[27.1381330463907204,156.653084219512607,58.6849825995062133],"hsluv":[27.1381330463907204,62.8141161752895059,58.6849825995062133]},"#cc7766":{"lch":[58.9669266929607829,66.2083874258113667,20.8554290651987451],"luv":[58.9669266929607829,61.8705265372573407,23.5709251309504673],"rgb":[0.8,0.466666666666666674,0.4],"xyz":[0.338958387358128554,0.269920054905871287,0.159956544822374536],"hpluv":[20.8554290651987451,142.476698671576116,58.9669266929607829],"hsluv":[20.8554290651987451,47.542957476979069,58.9669266929607829]},"#cc7777":{"lch":[59.3102652975897229,60.2635194006596251,12.177050630062082],"luv":[59.3102652975897229,58.907617956407762,12.7115820123061383],"rgb":[0.8,0.466666666666666674,0.466666666666666674],"xyz":[0.34827240037833046,0.273645660113952083,0.209010346728772445],"hpluv":[12.177050630062082,128.932959302114057,59.3102652975897229],"hsluv":[12.177050630062082,43.5373021749198443,59.3102652975897229]},"#cc7788":{"lch":[59.7168613687891963,55.6638868177661834,0.734433949810619269],"luv":[59.7168613687891963,55.6593138534775917,0.713496335773026069],"rgb":[0.8,0.466666666666666674,0.533333333333333326],"xyz":[0.35941281748027426,0.278101826954729681,0.26768321013234464],"hpluv":[0.734433949810619269,118.281243349182901,59.7168613687891963],"hsluv":[0.734433949810619269,45.0130000154657779,59.7168613687891963]},"#cc7799":{"lch":[60.187915321807921,53.6038783156568073,346.890122071781263],"luv":[60.187915321807921,52.2067938730354371,-12.1583898596044406],"rgb":[0.8,0.466666666666666674,0.6],"xyz":[0.37246978158934696,0.283324612598358838,0.336449887773462519],"hpluv":[346.890122071781263,113.012436406344946,60.187915321807921],"hsluv":[346.890122071781263,46.5549497102544,60.187915321807921]},"#cc77aa":{"lch":[60.7240163061688349,54.9761438743297148,332.197464335395125],"luv":[60.7240163061688349,48.6297161920954863,-25.6422912074417866],"rgb":[0.8,0.466666666666666674,0.66666666666666663],"xyz":[0.387527474554599516,0.28934768978445996,0.41575373739046112],"hpluv":[332.197464335395125,114.882297594683308,60.7240163061688349],"hsluv":[332.197464335395125,48.1189262345266471,60.7240163061688349]},"#cc77bb":{"lch":[61.3251919150652043,59.875823087291181,318.726648244723037],"luv":[61.3251919150652043,45.0009333565193046,-39.4972174643062743],"rgb":[0.8,0.466666666666666674,0.733333333333333282],"xyz":[0.40466506666193619,0.296202726627394719,0.506011722489102866],"hpluv":[318.726648244723037,123.894465684476771,61.3251919150652043],"hsluv":[318.726648244723037,49.6642191709372156,61.3251919150652043]},"#cc77cc":{"lch":[61.9909592768387228,67.6487625915650881,307.715012949244965],"luv":[61.9909592768387228,41.3830711255614219,-53.514451360232222],"rgb":[0.8,0.466666666666666674,0.8],"xyz":[0.423957442105657889,0.303919676804883521,0.607618233159373],"hpluv":[307.715012949244965,138.474825543749517,61.9909592768387228],"hsluv":[307.715012949244965,51.1553628289834066,61.9909592768387228]},"#cc77dd":{"lch":[62.7203784873954362,77.3966796673740305,299.257833182927357],"luv":[62.7203784873954362,37.8268934727942252,-67.5231231041040161],"rgb":[0.8,0.466666666666666674,0.866666666666666696],"xyz":[0.445475767656291488,0.312527007025137,0.720948081059379],"hpluv":[299.257833182927357,156.586020071329443,62.7203784873954362],"hsluv":[299.257833182927357,66.8390608629672158,62.7203784873954362]},"#cc77ee":{"lch":[63.5121081687847351,88.3507940057556453,292.894169444170245],"luv":[63.5121081687847351,34.371127600373157,-81.3909601179783],"rgb":[0.8,0.466666666666666674,0.933333333333333348],"xyz":[0.469287947922466198,0.322051879131607044,0.846358897127902243],"hpluv":[292.894169444170245,176.519730115921618,63.5121081687847351],"hsluv":[292.894169444170245,83.1130682001540322,63.5121081687847351]},"#cc77ff":{"lch":[64.3644622692190467,99.9639900757921112,288.092077643344339],"luv":[64.3644622692190467,31.0433170684360782,-95.0216384686225553],"rgb":[0.8,0.466666666666666674,1],"xyz":[0.495458996332297619,0.332520298495539768,0.984193085419684088],"hpluv":[288.092077643344339,197.077372703744913,64.3644622692190467],"hsluv":[288.092077643344339,99.9999999999984794,64.3644622692190467]},"#cc8800":{"lch":[62.03823759594124,83.9779445354575813,47.4964941193052752],"luv":[62.03823759594124,56.738465406715342,61.9115636346826221],"rgb":[0.8,0.533333333333333326,0],"xyz":[0.337050577655438111,0.304472722584748334,0.0410183897450140181],"hpluv":[47.4964941193052752,171.769129739761638,62.03823759594124],"hsluv":[47.4964941193052752,100.000000000002245,62.03823759594124]},"#cc8811":{"lch":[62.0727951053461879,82.7448035916202542,47.0033697453910904],"luv":[62.0727951053461879,56.4282611354359744,60.519037225048919],"rgb":[0.8,0.533333333333333326,0.0666666666666666657],"xyz":[0.338062243155075215,0.304877388784603187,0.0463464947097696478],"hpluv":[47.0033697453910904,169.152629782786704,62.0727951053461879],"hsluv":[47.0033697453910904,97.8669953021426,62.0727951053461879]},"#cc8822":{"lch":[62.1367747194074127,80.5023095814055836,46.0605806208152728],"luv":[62.1367747194074127,55.8603434591127268,57.9676105818622389],"rgb":[0.8,0.533333333333333326,0.133333333333333331],"xyz":[0.339937601293552272,0.305627532039994,0.0562233809057488473],"hpluv":[46.0605806208152728,164.398919884807611,62.1367747194074127],"hsluv":[46.0605806208152728,93.9640765124603,62.1367747194074127]},"#cc8833":{"lch":[62.2418885518498541,76.9329948636363241,44.4230175211057343],"luv":[62.2418885518498541,54.9448944756850963,53.8492736231801246],"rgb":[0.8,0.533333333333333326,0.2],"xyz":[0.34302535202601,0.306862632332977114,0.0724855347633599906],"hpluv":[44.4230175211057343,156.844467463147254,62.2418885518498541],"hsluv":[44.4230175211057343,87.678806867525978,62.2418885518498541]},"#cc8844":{"lch":[62.3931521103864668,72.0506908450526424,41.8566920827827929],"luv":[62.3931521103864668,53.6645163812677168,48.0772475586321661],"rgb":[0.8,0.533333333333333326,0.266666666666666663],"xyz":[0.347483347270228893,0.30864583043066468,0.0959643097162466291],"hpluv":[41.8566920827827929,146.534723453778,62.3931521103864668],"hsluv":[41.8566920827827929,78.900857077449,62.3931521103864668]},"#cc8855":{"lch":[62.5945538889838673,66.028576146577123,38.0101307109045408],"luv":[62.5945538889838673,52.0240395147187513,40.6604498316892062],"rgb":[0.8,0.533333333333333326,0.333333333333333315],"xyz":[0.353445761309590878,0.311030796046409541,0.127366356990220531],"hpluv":[38.0101307109045408,133.855034432196135,62.5945538889838673],"hsluv":[38.0101307109045408,67.6770944211119314,62.5945538889838673]},"#cc8866":{"lch":[62.8492816845599265,59.2369010326618337,32.3420191431213624],"luv":[62.8492816845599265,50.047464385327217,31.6900891849924626],"rgb":[0.8,0.533333333333333326,0.4],"xyz":[0.361030757083099063,0.31406479435581286,0.167314001397364492],"hpluv":[32.3420191431213624,119.60004374597824,62.8492816845599265],"hsluv":[32.3420191431213624,54.1901780257147436,62.8492816845599265]},"#cc8877":{"lch":[63.1598410661450771,52.3169991415742,24.053169540805424],"luv":[63.1598410661450771,47.7741895619322392,21.3235834436907119],"rgb":[0.8,0.533333333333333326,0.466666666666666674],"xyz":[0.370344770103300969,0.317790399563893655,0.216367803303762402],"hpluv":[24.053169540805424,105.109295035123296,63.1598410661450771],"hsluv":[24.053169540805424,38.7316682482548558,63.1598410661450771]},"#cc8888":{"lch":[63.5281271999152182,46.2961098245983322,12.1770506300622312],"luv":[63.5281271999152182,45.2544686659219906,9.76539045078869528],"rgb":[0.8,0.533333333333333326,0.533333333333333326],"xyz":[0.381485187205244769,0.322246566404671253,0.275040666707334569],"hpluv":[12.1770506300622312,92.4736018048895403,63.5281271999152182],"hsluv":[12.1770506300622312,40.0703189706204199,63.5281271999152182]},"#cc8899":{"lch":[63.9554753143552119,42.6335463086933615,356.296984030050055],"luv":[63.9554753143552119,42.5445368433351,-2.7534806412255004],"rgb":[0.8,0.533333333333333326,0.6],"xyz":[0.394542151314317469,0.327469352048300411,0.343807344348452504],"hpluv":[356.296984030050055,84.588837176407921,63.9554753143552119],"hsluv":[356.296984030050055,41.5088242950414781,63.9554753143552119]},"#cc88aa":{"lch":[64.442701858069384,42.8028595258545153,338.056731442080661],"luv":[64.442701858069384,39.701977128446444,-15.9949303118941444],"rgb":[0.8,0.533333333333333326,0.66666666666666663],"xyz":[0.40959984427957,0.333492429234401533,0.423111193965451104],"hpluv":[338.056731442080661,84.28268641071584,64.442701858069384],"hsluv":[338.056731442080661,42.9831867606486924,64.442701858069384]},"#cc88bb":{"lch":[64.9901424985427099,47.2946673003310707,321.051918945199532],"luv":[64.9901424985427099,36.7818149859187784,-29.7301806484697622],"rgb":[0.8,0.533333333333333326,0.733333333333333282],"xyz":[0.426737436386906699,0.340347466077336291,0.513369179064092851],"hpluv":[321.051918945199532,92.3430068912496296,64.9901424985427099],"hsluv":[321.051918945199532,44.4548878388224864,64.9901424985427099]},"#cc88cc":{"lch":[65.5976900795525637,55.3077284551996158,307.715012949245761],"luv":[65.5976900795525637,33.8336367550969399,-43.751912538747959],"rgb":[0.8,0.533333333333333326,0.8],"xyz":[0.446029811830628398,0.348064416254825093,0.614975689734363],"hpluv":[307.715012949245761,106.988377595373095,65.5976900795525637],"hsluv":[307.715012949245761,45.8886814173124122,65.5976900795525637]},"#cc88dd":{"lch":[66.2648339334855905,65.6132669537387727,298.095232643272539],"luv":[66.2648339334855905,30.8998122908772608,-57.8817967994354774],"rgb":[0.8,0.533333333333333326,0.866666666666666696],"xyz":[0.467548137381262,0.356671746475078599,0.728305537634369],"hpluv":[298.095232643272539,125.645770778198369,66.2648339334855905],"hsluv":[298.095232643272539,63.1276078601331037,66.2648339334855905]},"#cc88ee":{"lch":[66.9907009061042,77.2337728548956193,291.267726386147558],"luv":[66.9907009061042,28.0147259973813227,-71.9738202174461463],"rgb":[0.8,0.533333333333333326,0.933333333333333348],"xyz":[0.491360317647436706,0.366196618581548616,0.853716353702892228],"hpluv":[291.267726386147558,146.295866424915545,66.9907009061042],"hsluv":[291.267726386147558,81.1585487563552874,66.9907009061042]},"#cc88ff":{"lch":[67.7740978167257,89.535143384050329,286.350196506734335],"luv":[67.7740978167257,25.2048126805589376,-85.914255618845857],"rgb":[0.8,0.533333333333333326,1],"xyz":[0.517531366057268127,0.37666503794548134,0.991550541994674073],"hpluv":[286.350196506734335,167.63670457649863,67.7740978167257],"hsluv":[286.350196506734335,99.9999999999982379,67.7740978167257]},"#cc9900":{"lch":[66.2294666531998217,80.7116888085701163,57.6888018595631422],"luv":[66.2294666531998217,43.1418134232290527,68.2140795209226383],"rgb":[0.8,0.6,0],"xyz":[0.362920178107905556,0.356211923489684,0.0496415898958362731],"hpluv":[57.6888018595631422,154.64094800189136,66.2294666531998217],"hsluv":[57.6888018595631422,100.000000000002331,66.2294666531998217]},"#cc9911":{"lch":[66.2605931548954459,79.5070460268624,57.3307205104302042],"luv":[66.2605931548954459,42.9170325725223805,66.9290570909725915],"rgb":[0.8,0.6,0.0666666666666666657],"xyz":[0.36393184360754266,0.356616589689538854,0.0549696948605919],"hpluv":[57.3307205104302042,152.261332222626407,66.2605931548954459],"hsluv":[57.3307205104302042,98.1673920986410877,66.2605931548954459]},"#cc9922":{"lch":[66.318231165714252,77.3048675578901339,56.6444543825244],"luv":[66.318231165714252,42.5047546114663533,64.5708013235236535],"rgb":[0.8,0.6,0.133333333333333331],"xyz":[0.365807201746019717,0.357366732944929655,0.0648465810565711],"hpluv":[56.6444543825244,147.915345655385721,66.318231165714252],"hsluv":[56.6444543825244,94.8079930897652901,66.318231165714252]},"#cc9933":{"lch":[66.4129558628457772,73.7662990604099207,55.446788144651876],"luv":[66.4129558628457772,41.8381333944198062,60.7539091017242114],"rgb":[0.8,0.6,0.2],"xyz":[0.368894952478477423,0.358601833237912782,0.0811087349141822456],"hpluv":[55.446788144651876,140.943324602767206,66.4129558628457772],"hsluv":[55.446788144651876,89.3812598244831804,66.4129558628457772]},"#cc9944":{"lch":[66.5493334014023361,68.8491039809152596,53.5533094328142383],"luv":[66.5493334014023361,40.9015039610359423,55.3829043360877122],"rgb":[0.8,0.6,0.266666666666666663],"xyz":[0.373352947722696338,0.360385031335600348,0.104587509867068884],"hpluv":[53.5533094328142383,131.278591794008349,66.5493334014023361],"hsluv":[53.5533094328142383,81.7675495661837459,66.5493334014023361]},"#cc9955":{"lch":[66.7310322275847341,62.6300376921671571,50.6698876242401539],"luv":[66.7310322275847341,39.6941340540006422,48.4447865412296466],"rgb":[0.8,0.6,0.333333333333333315],"xyz":[0.379315361762058323,0.362769996951345208,0.135989557141042799],"hpluv":[50.6698876242401539,119.095172229338388,66.7310322275847341],"hsluv":[50.6698876242401539,71.9728873324543912,66.7310322275847341]},"#cc9966":{"lch":[66.9610303820851,55.3290996264574488,46.2964172073191236],"luv":[66.9610303820851,38.2284030091626121,39.9987308404091877],"rgb":[0.8,0.6,0.4],"xyz":[0.386900357535566508,0.365803995260748527,0.175937201548186761],"hpluv":[46.2964172073191236,104.850571413887963,66.9610303820851],"hsluv":[46.2964172073191236,60.1139469393688586,66.9610303820851]},"#cc9977":{"lch":[67.2417240975963608,47.3725698769106316,39.5497292985384448],"luv":[67.2417240975963608,36.5276723895038842,30.1643751227811094],"rgb":[0.8,0.6,0.466666666666666674],"xyz":[0.396214370555768414,0.369529600468829322,0.22499100345458467],"hpluv":[39.5497292985384448,89.3979234879296598,67.2417240975963608],"hsluv":[39.5497292985384448,46.4000360859745484,67.2417240975963608]},"#cc9988":{"lch":[67.5749927230407508,39.5461637624335367,28.8927829606528306],"luv":[67.5749927230407508,34.6236706423047593,19.1076031876950658],"rgb":[0.8,0.6,0.533333333333333326],"xyz":[0.407354787657712214,0.37398576730960692,0.28366386685815681],"hpluv":[28.8927829606528306,74.2604675709266076,67.5749927230407508],"hsluv":[28.8927829606528306,33.7758353105824227,67.5749927230407508]},"#cc9999":{"lch":[67.962242737641,33.3028609095241,12.177050630062606],"luv":[67.962242737641,32.5535618700051401,7.02468179598591647],"rgb":[0.8,0.6,0.6],"xyz":[0.420411751766784914,0.379208552953236078,0.352430544499274745],"hpluv":[12.177050630062606,62.1803508213615217,67.962242737641],"hsluv":[12.177050630062606,35.0991912912463349,67.962242737641]},"#cc99aa":{"lch":[68.4044417972397838,30.9200145018949506,349.049331623372325],"luv":[68.4044417972397838,30.3569952347367966,-5.87368173427548168],"rgb":[0.8,0.6,0.66666666666666663],"xyz":[0.43546944473203747,0.3852316301393372,0.431734394116273346],"hpluv":[349.049331623372325,57.3580941092039609,68.4044417972397838],"hsluv":[349.049331623372325,36.4663034143199312,68.4044417972397838]},"#cc99bb":{"lch":[68.9021485343020856,34.1112448474386483,325.385883063702067],"luv":[68.9021485343020856,28.0734328763681233,-19.3767745401024669],"rgb":[0.8,0.6,0.733333333333333282],"xyz":[0.452607036839374144,0.392086666982271959,0.521992379214915],"hpluv":[325.385883063702067,62.8208966420876678,68.9021485343020856],"hsluv":[325.385883063702067,37.8410036888738404,68.9021485343020856]},"#cc99cc":{"lch":[69.4555411877739601,42.0770553751994854,307.715012949247],"luv":[69.4555411877739601,25.7399796927440505,-33.285613025220492],"rgb":[0.8,0.6,0.8],"xyz":[0.471899412283095843,0.39980361715976076,0.623598889885185192],"hpluv":[307.715012949247,76.8736967911951581,69.4555411877739601],"hsluv":[307.715012949247,39.1886552488513473,69.4555411877739601]},"#cc99dd":{"lch":[70.0644466506374215,52.8759829560521695,296.254085335195782],"luv":[70.0644466506374215,23.3898305690433475,-47.4213601610093534],"rgb":[0.8,0.6,0.866666666666666696],"xyz":[0.493417737833729442,0.408410947380014266,0.73692873778519119],"hpluv":[296.254085335195782,95.7635162234915498,70.0644466506374215],"hsluv":[296.254085335195782,58.3905887561973813,70.0644466506374215]},"#cc99ee":{"lch":[70.7283706212672,65.1265075826905218,288.858843135035954],"luv":[70.7283706212672,21.0513451251656711,-61.6303728557552191],"rgb":[0.8,0.6,0.933333333333333348],"xyz":[0.517229918099904151,0.417935819486484283,0.862339553853714413],"hpluv":[288.858843135035954,116.843205481858362,70.7283706212672],"hsluv":[288.858843135035954,78.6530020758075494,70.7283706212672]},"#cc99ff":{"lch":[71.4465289765693115,78.0706881495843561,283.894640570210413],"luv":[71.4465289765693115,18.7476796475605703,-75.7862576987549517],"rgb":[0.8,0.6,1],"xyz":[0.543400966509735572,0.428404238850417,1.00017374214549637],"hpluv":[283.894640570210413,138.658404713871533,71.4465289765693115],"hsluv":[283.894640570210413,99.9999999999978,71.4465289765693115]},"#990000":{"lch":[31.2857235930303546,105.214874065330946,12.1770506300617765],"luv":[31.2857235930303546,102.847587834444283,22.1933188419334826],"rgb":[0.6,0,0],"xyz":[0.131365760434599882,0.067735470224092,0.00615777002037173893],"hpluv":[12.1770506300617765,426.746789183125316,31.2857235930303546],"hsluv":[12.1770506300617765,100.000000000002217,31.2857235930303546]},"#990011":{"lch":[31.379701704172021,102.819321078199806,10.8595456684147944],"luv":[31.379701704172021,100.978030711674904,19.3713732237542438],"rgb":[0.6,0,0.0666666666666666657],"xyz":[0.132377425934237014,0.0681401364239468538,0.0114858749851273704],"hpluv":[10.8595456684147944,415.781582167217948,31.379701704172021],"hsluv":[10.8595456684147944,99.9999999999964473,31.379701704172021]},"#990022":{"lch":[31.5529326060038784,98.7447775317108807,8.37468971343924729],"luv":[31.5529326060038784,97.6918390895904309,14.3817824027706251],"rgb":[0.6,0,0.133333333333333331],"xyz":[0.134252784072714015,0.0688902796793376682,0.0213627611811065682],"hpluv":[8.37468971343924729,397.112659756655944,31.5529326060038784],"hsluv":[8.37468971343924729,99.999999999996632,31.5529326060038784]},"#990033":{"lch":[31.8354354483696653,92.9837515463916162,4.18138532137367758],"luv":[31.8354354483696653,92.7362491408617586,6.7798338419980837],"rgb":[0.6,0,0.2],"xyz":[0.137340534805171777,0.070125379972320781,0.0376249150387177114],"hpluv":[4.18138532137367758,370.62575576901952,31.8354354483696653],"hsluv":[4.18138532137367758,99.9999999999969,31.8354354483696653]},"#990044":{"lch":[32.2375108843075537,86.4821897260425771,357.977822115898675],"luv":[32.2375108843075537,86.4283323676992552,-3.05163955108307716],"rgb":[0.6,0,0.266666666666666663],"xyz":[0.141798530049390636,0.071908578070008361,0.0611036899916043499],"hpluv":[357.977822115898675,340.411718586576399,32.2375108843075537],"hsluv":[357.977822115898675,99.9999999999971294,32.2375108843075537]},"#990055":{"lch":[32.7650133258702,80.5606445545256804,349.629319937368109],"luv":[32.7650133258702,79.244583226626645,-14.502188809930411],"rgb":[0.6,0,0.333333333333333315],"xyz":[0.147760944088752622,0.0742935436857532,0.0925057372655782584],"hpluv":[349.629319937368109,311.998071704954214,32.7650133258702],"hsluv":[349.629319937368109,99.9999999999974847,32.7650133258702]},"#990066":{"lch":[33.4199981031921354,76.5714397631706589,339.419101050621862],"luv":[33.4199981031921354,71.6844038684648268,-26.9171252073414813],"rgb":[0.6,0,0.4],"xyz":[0.155345939862260807,0.0773275419951565124,0.13245338167272222],"hpluv":[339.419101050621862,290.7366076723265,33.4199981031921354],"hsluv":[339.419101050621862,99.9999999999978257,33.4199981031921354]},"#990077":{"lch":[34.2012599030024091,75.4745938555541187,328.234093427391315],"luv":[34.2012599030024091,64.1689603650959413,-39.7335984190155429],"rgb":[0.6,0,0.466666666666666674],"xyz":[0.164659952882462712,0.0810531472032373218,0.181507183579120129],"hpluv":[328.234093427391315,280.025774017920355,34.2012599030024091],"hsluv":[328.234093427391315,99.9999999999982094,34.2012599030024091]},"#990088":{"lch":[35.1048906557013396,77.5195253213057214,317.327493504651898],"luv":[35.1048906557013396,56.9954501323273419,-52.5432723595889613],"rgb":[0.6,0,0.533333333333333326],"xyz":[0.175800369984406568,0.0855093140440149196,0.240180046982692297],"hpluv":[317.327493504651898,280.209468657326,35.1048906557013396],"hsluv":[317.327493504651898,99.9999999999985505,35.1048906557013396]},"#990099":{"lch":[36.1248689761228263,82.286593786153162,307.715012949243601],"luv":[36.1248689761228263,50.3375351282041592,-65.0939019735657922],"rgb":[0.6,0,0.6],"xyz":[0.188857334093479268,0.0907320996876440772,0.308946724623810232],"hpluv":[307.715012949243601,289.042783730483336,36.1248689761228263],"hsluv":[307.715012949243601,99.9999999999988205,36.1248689761228263]},"#9900aa":{"lch":[37.2536516336468,89.0432435337247,299.813571633796073],"luv":[37.2536516336468,44.2704748017611038,-77.2581664281054685],"rgb":[0.6,0,0.66666666666666663],"xyz":[0.203915027058731824,0.0967551768737451856,0.388250574240808777],"hpluv":[299.813571633796073,303.299328566743952,37.2536516336468],"hsluv":[299.813571633796073,99.9999999999990905,37.2536516336468]},"#9900bb":{"lch":[38.4827280957899163,97.0854614833978786,293.557760104203282],"luv":[38.4827280957899163,38.802472411223853,-88.9941288300556579],"rgb":[0.6,0,0.733333333333333282],"xyz":[0.221052619166068443,0.103610213716679944,0.478508559339450579],"hpluv":[293.557760104203282,320.130957524774431,38.4827280957899163],"hsluv":[293.557760104203282,99.9999999999993179,38.4827280957899163]},"#9900cc":{"lch":[39.8031058181596933,105.884836559305498,288.673688741635],"luv":[39.8031058181596933,33.9019931565070394,-100.310784431221492],"rgb":[0.6,0,0.8],"xyz":[0.240344994609790197,0.111327163894168746,0.580115070009720735],"hpluv":[288.673688741635,337.564008898092311,39.8031058181596933],"hsluv":[288.673688741635,99.9999999999995879,39.8031058181596933]},"#9900dd":{"lch":[41.2057071388761145,115.092674624289529,284.860629917023232],"luv":[41.2057071388761145,29.5176685469448401,-111.243116621772529],"rgb":[0.6,0,0.866666666666666696],"xyz":[0.26186332016042374,0.11993449411442228,0.693444917909726732],"hpluv":[284.860629917023232,354.429316861661562,41.2057071388761145],"hsluv":[284.860629917023232,99.9999999999996732,41.2057071388761145]},"#9900ee":{"lch":[42.6816722484951754,124.494824438150232,281.862271937449748],"luv":[42.6816722484951754,25.5911328567321625,-121.836181945245357],"rgb":[0.6,0,0.933333333333333348],"xyz":[0.285675500426598505,0.129459366220892297,0.81885573397825],"hpluv":[281.862271937449748,370.125661914021862,42.6816722484951754],"hsluv":[281.862271937449748,99.9999999999998437,42.6816722484951754]},"#9900ff":{"lch":[44.2225734052255817,133.965544030308308,279.479958267333473],"luv":[44.2225734052255817,22.0644732467518,-132.136013288126151],"rgb":[0.6,0,1],"xyz":[0.311846548836429871,0.139927785584825,0.956689922270031801],"hpluv":[279.479958267333473,384.404468177447882,44.2225734052255817],"hsluv":[279.479958267333473,99.9999999999999574,44.2225734052255817]},"#bb0000":{"lch":[38.8409426943877918,130.623313921981463,12.1770506300617818],"luv":[38.8409426943877918,127.684349491075153,27.5528044852332741],"rgb":[0.733333333333333282,0,0],"xyz":[0.20493059501477473,0.105667338054495463,0.00960612164131736251],"hpluv":[12.1770506300617818,426.746789183125145,38.8409426943877918],"hsluv":[12.1770506300617818,100.000000000002217,38.8409426943877918]},"#bb0011":{"lch":[38.9108602521517142,128.680110500437479,11.3344428162225856],"luv":[38.9108602521517142,126.170422440132384,25.2902222149853806],"rgb":[0.733333333333333282,0,0.0666666666666666657],"xyz":[0.205942260514411862,0.106072004254350316,0.014934226606072994],"hpluv":[11.3344428162225856,419.642938315359174,38.9108602521517142],"hsluv":[11.3344428162225856,99.9999999999964189,38.9108602521517142]},"#bb0022":{"lch":[39.0399998564474373,125.270257566289573,9.75441483214293292],"luv":[39.0399998564474373,123.459226352671962,21.2239689767074431],"rgb":[0.733333333333333282,0,0.133333333333333331],"xyz":[0.207817618652888864,0.10682214750974113,0.0248111128020521918],"hpluv":[9.75441483214293292,407.171610230013243,39.0399998564474373],"hsluv":[9.75441483214293292,99.9999999999965326,39.0399998564474373]},"#bb0033":{"lch":[39.2513155564018916,120.169209623826248,7.10634666793171554],"luv":[39.2513155564018916,119.246098647877318,14.866300779810846],"rgb":[0.733333333333333282,0,0.2],"xyz":[0.210905369385346597,0.108057247802724243,0.041073266659663335],"hpluv":[7.10634666793171554,388.488631169232178,39.2513155564018916],"hsluv":[7.10634666793171554,99.9999999999967173,39.2513155564018916]},"#bb0044":{"lch":[39.5535843326651886,113.833969399977519,3.19865110237705785],"luv":[39.5535843326651886,113.656624965458903,6.3517077086437],"rgb":[0.733333333333333282,0,0.266666666666666663],"xyz":[0.215363364629565485,0.109840445900411823,0.0645520416125499735],"hpluv":[3.19865110237705785,365.195452768261646,39.5535843326651886],"hsluv":[3.19865110237705785,99.9999999999968878,39.5535843326651886]},"#bb0055":{"lch":[39.9527871554326666,107.03859947839959,357.869864695501747],"luv":[39.9527871554326666,106.964633924407806,-3.97855095665153691],"rgb":[0.733333333333333282,0,0.333333333333333315],"xyz":[0.221325778668927498,0.112225411516156656,0.095954088886523875],"hpluv":[357.869864695501747,339.963790558847222,39.9527871554326666],"hsluv":[357.869864695501747,99.9999999999971436,39.9527871554326666]},"#bb0066":{"lch":[40.452535568346093,100.749762000256624,351.053086521713055],"luv":[40.452535568346093,99.5239253968718884,-15.6685295004423661],"rgb":[0.733333333333333282,0,0.4],"xyz":[0.228910774442435655,0.115259409825559975,0.135901733293667837],"hpluv":[351.053086521713055,316.036764522848955,40.452535568346093],"hsluv":[351.053086521713055,99.999999999997442,40.452535568346093]},"#bb0077":{"lch":[41.0543478797665813,95.9494038996296581,342.883287985183927],"luv":[41.0543478797665813,91.699536963203,-28.2397420212797314],"rgb":[0.733333333333333282,0,0.466666666666666674],"xyz":[0.238224787462637588,0.118985015033640784,0.184955535200065746],"hpluv":[342.883287985183927,296.56674422547627,41.0543478797665813],"hsluv":[342.883287985183927,99.9999999999977,41.0543478797665813]},"#bb0088":{"lch":[41.7578935904565398,93.4210879643116243,333.788939203308246],"luv":[41.7578935904565398,83.8148890966975699,-41.2621381189091565],"rgb":[0.733333333333333282,0,0.533333333333333326],"xyz":[0.249365204564581389,0.123441181874418382,0.243628398603637913],"hpluv":[333.788939203308246,283.887103643995431,41.7578935904565398],"hsluv":[333.788939203308246,99.9999999999980531,41.7578935904565398]},"#bb0099":{"lch":[42.5612451572515,93.5592166386053918,324.452137443226093],"luv":[42.5612451572515,76.1225984195714318,-54.3937223205229472],"rgb":[0.733333333333333282,0,0.6],"xyz":[0.262422168673654088,0.12866396751804754,0.31239507624475582],"hpluv":[324.452137443226093,278.940502109978524,42.5612451572515],"hsluv":[324.452137443226093,99.9999999999983089,42.5612451572515]},"#bb00aa":{"lch":[43.461144448190268,96.3048592888224562,315.591494301740738],"luv":[43.461144448190268,68.7971872487792,-67.3911934105362747],"rgb":[0.733333333333333282,0,0.66666666666666663],"xyz":[0.277479861638906644,0.134687044704148634,0.391698925861754421],"hpluv":[315.591494301740738,281.181257774391042,43.461144448190268],"hsluv":[315.591494301740738,99.9999999999985647,43.461144448190268]},"#bb00bb":{"lch":[44.4532771259814652,101.257357078489918,307.715012949243601],"luv":[44.4532771259814652,61.9426024872754866,-80.100976021670192],"rgb":[0.733333333333333282,0,0.733333333333333282],"xyz":[0.294617453746243319,0.141542081547083393,0.481956910960396168],"hpluv":[307.715012949243601,289.042783730483507,44.4532771259814652],"hsluv":[307.715012949243601,99.9999999999988205,44.4532771259814652]},"#bb00cc":{"lch":[45.5325428123826796,107.876917991024385,301.028560594476971],"luv":[45.5325428123826796,55.6068066637028551,-92.44085940701639],"rgb":[0.733333333333333282,0,0.8],"xyz":[0.313909829189965,0.149259031724572194,0.583563421630666324],"hpluv":[301.028560594476971,300.639438898355309,45.5325428123826796],"hsluv":[301.028560594476971,99.999999999999,45.5325428123826796]},"#bb00dd":{"lch":[46.6933085129957348,115.650155059812704,295.504945579136574],"luv":[46.6933085129957348,49.7976850024997,-104.379830109799173],"rgb":[0.733333333333333282,0,0.866666666666666696],"xyz":[0.335428154740598616,0.157866361944825728,0.696893269530672321],"hpluv":[295.504945579136574,314.290242754568055,46.6933085129957348],"hsluv":[295.504945579136574,99.9999999999992468,46.6933085129957348]},"#bb00ee":{"lch":[47.929635203682146,124.167261181765113,290.999747870951808],"luv":[47.929635203682146,44.4970566855085821,-115.920320460682433],"rgb":[0.733333333333333282,0,0.933333333333333348],"xyz":[0.359240335006773326,0.167391234051295773,0.822304085599195544],"hpluv":[290.999747870951808,328.732244305823656,47.929635203682146],"hsluv":[290.999747870951808,99.9999999999993889,47.929635203682146]},"#bb00ff":{"lch":[49.2354711183318727,133.13261796854033,287.33664116340708],"luv":[49.2354711183318727,39.6715752597668896,-127.084460433075606],"rgb":[0.733333333333333282,0,1],"xyz":[0.385411383416604747,0.177859653415228469,0.96013827389097739],"hpluv":[287.33664116340708,343.119737385630629,49.2354711183318727],"hsluv":[287.33664116340708,99.9999999999995595,49.2354711183318727]},"#991100":{"lch":[32.2007428060931531,101.551746681272988,13.5001929330929755],"luv":[32.2007428060931531,98.7457840078795,23.707116962774041],"rgb":[0.6,0.0666666666666666657,0],"xyz":[0.133370160695528289,0.071744270745948871,0.00682590344068119],"hpluv":[13.5001929330929755,400.185025755779861,32.2007428060931531],"hsluv":[13.5001929330929755,100.000000000002359,32.2007428060931531]},"#991111":{"lch":[32.2911967351305,99.2607003603350506,12.1770506300617907],"luv":[32.2911967351305,97.0273802968116854,20.9373854328113431],"rgb":[0.6,0.0666666666666666657,0.0666666666666666657],"xyz":[0.134381826195165421,0.0721489369458037239,0.0121540084054368204],"hpluv":[12.1770506300617907,390.060992150638072,32.2911967351305],"hsluv":[12.1770506300617907,91.4033806551417,32.2911967351305]},"#991122":{"lch":[32.4579836187547883,95.3555453821432337,9.67722696349737355],"luv":[32.4579836187547883,93.9986702773161085,16.0290368151797],"rgb":[0.6,0.0666666666666666657,0.133333333333333331],"xyz":[0.136257184333642423,0.0728990802011945382,0.0220308946014160165],"hpluv":[9.67722696349737355,372.789562407290305,32.4579836187547883],"hsluv":[9.67722696349737355,91.6870397393079,32.4579836187547883]},"#991133":{"lch":[32.7301206059751877,89.8170234432985382,5.44607482402752385],"luv":[32.7301206059751877,89.4115862394302,8.52443231910342547],"rgb":[0.6,0.0666666666666666657,0.2],"xyz":[0.139344935066100184,0.0741341804941776511,0.0382930484590271597],"hpluv":[5.44607482402752385,348.217328437078379,32.7301206059751877],"hsluv":[5.44607482402752385,92.1153976677825312,32.7301206059751877]},"#991144":{"lch":[33.1177416447746893,83.547386161100178,359.159050762907725],"luv":[33.1177416447746893,83.5383872622118275,-1.22620878349376072],"rgb":[0.6,0.0666666666666666657,0.266666666666666663],"xyz":[0.143802930310319044,0.0759173785918652311,0.0617718234119138],"hpluv":[359.159050762907725,320.119020896680809,33.1177416447746893],"hsluv":[359.159050762907725,92.6613616101701609,33.1177416447746893]},"#991155":{"lch":[33.6267967661613341,77.8365467514172451,350.652860745276428],"luv":[33.6267967661613341,76.8030661853154,-12.6418762341523276],"rgb":[0.6,0.0666666666666666657,0.333333333333333315],"xyz":[0.149765344349681029,0.078302344207610064,0.0931738706858877136],"hpluv":[350.652860745276428,293.722615948770908,33.6267967661613341],"hsluv":[350.652860745276428,93.2833986807069664,33.6267967661613341]},"#991166":{"lch":[34.2596587707945375,74.039902428482776,340.197584074025258],"luv":[34.2596587707945375,69.661662743272629,-25.0830599301957804],"rgb":[0.6,0.0666666666666666657,0.4],"xyz":[0.157350340123189214,0.0813363425170133825,0.133121515093031662],"hpluv":[340.197584074025258,274.234525914752396,34.2596587707945375],"hsluv":[340.197584074025258,93.9371476037906774,34.2596587707945375]},"#991177":{"lch":[35.0156115165229096,73.1458980715855773,328.71391057162549],"luv":[35.0156115165229096,62.509382661628635,-37.9855167657472848],"rgb":[0.6,0.0666666666666666657,0.466666666666666674],"xyz":[0.16666435314339112,0.0850619477250941919,0.182175316999429571],"hpluv":[328.71391057162549,265.074278305330154,35.0156115165229096],"hsluv":[328.71391057162549,94.5844210689808165,35.0156115165229096]},"#991188":{"lch":[35.8913494409224185,75.4242755669397269,317.528981112118743],"luv":[35.8913494409224185,55.6343762077295239,-50.9277677576239398],"rgb":[0.6,0.0666666666666666657,0.533333333333333326],"xyz":[0.177804770245334975,0.0895181145658717897,0.240848180403001738],"hpluv":[317.528981112118743,266.661726649655066,35.8913494409224185],"hsluv":[317.528981112118743,95.1976582537924116,35.8913494409224185]},"#991199":{"lch":[36.8815072257793,80.448343562419069,307.715012949243601],"luv":[36.8815072257793,49.2130143411107568,-63.6397297401445599],"rgb":[0.6,0.0666666666666666657,0.6],"xyz":[0.190861734354407675,0.0947409002095009473,0.309614858044119645],"hpluv":[307.715012949243601,276.788327826692239,36.8815072257793],"hsluv":[307.715012949243601,95.7603314825458511,36.8815072257793]},"#9911aa":{"lch":[37.9791974354050694,87.4639739592788,299.695850237394552],"luv":[37.9791974354050694,43.3292813921454609,-75.9771025690614152],"rgb":[0.6,0.0666666666666666657,0.66666666666666663],"xyz":[0.205919427319660231,0.100763977395602056,0.388918707661118246],"hpluv":[299.695850237394552,292.228621346341356,37.9791974354050694],"hsluv":[299.695850237394552,96.26500390067784,37.9791974354050694]},"#9911bb":{"lch":[39.176522525078866,95.7489617369993624,293.383950362709356],"luv":[39.176522525078866,38.0018814997404846,-87.8847010360338459],"rgb":[0.6,0.0666666666666666657,0.733333333333333282],"xyz":[0.22305701942699685,0.107619014238536814,0.47917669275976],"hpluv":[293.383950362709356,310.132668732371314,39.176522525078866],"hsluv":[293.383950362709356,96.7106400677762537,39.176522525078866]},"#9911cc":{"lch":[40.465031277763515,104.765415075180798,288.480743990765689],"luv":[40.465031277763515,33.2091620218187842,-99.3626879350770622],"rgb":[0.6,0.0666666666666666657,0.8],"xyz":[0.242349394870718604,0.115335964416025616,0.580783203430030204],"hpluv":[288.480743990765689,328.531778006508034,40.465031277763515],"hsluv":[288.480743990765689,97.1001366995766,40.465031277763515]},"#9911dd":{"lch":[41.8361001822542917,114.161763941518927,284.668123617886636],"luv":[41.8361001822542917,28.9080153835727351,-110.441092863219225],"rgb":[0.6,0.0666666666666666657,0.866666666666666696],"xyz":[0.263867720421352148,0.12394329463627915,0.694113051330036201],"hpluv":[284.668123617886636,346.265164959266087,41.8361001822542917],"hsluv":[284.668123617886636,97.4384492036098,41.8361001822542917]},"#9911ee":{"lch":[43.2812320372341617,123.724619665436521,281.679545129349094],"luv":[43.2812320372341617,25.0465268392882301,-121.162919264293635],"rgb":[0.6,0.0666666666666666657,0.933333333333333348],"xyz":[0.287679900687526913,0.133468166742749167,0.819523867398559425],"hpluv":[281.679545129349094,362.740326129136179,43.2812320372341617],"hsluv":[281.679545129349094,97.7313369542794561,43.2812320372341617]},"#9911ff":{"lch":[44.7922739406791948,133.33068560825987,279.310828677429186],"luv":[44.7922739406791948,21.5716156333953251,-131.574074664174219],"rgb":[0.6,0.0666666666666666657,1],"xyz":[0.313850949097358278,0.143936586106681863,0.95735805569034127],"hpluv":[279.310828677429186,377.716823123197173,44.7922739406791948],"hsluv":[279.310828677429186,99.9999999999993179,44.7922739406791948]},"#bb1100":{"lch":[39.5258701457598747,127.514079962112703,13.0219609303782402],"luv":[39.5258701457598747,124.2348987579322,28.7320469022032583],"rgb":[0.733333333333333282,0.0666666666666666657,0],"xyz":[0.206934995275703137,0.109676138576352333,0.0102742550616268143],"hpluv":[13.0219609303782402,409.370014873310311,39.5258701457598747],"hsluv":[13.0219609303782402,100.000000000002203,39.5258701457598747]},"#bb1111":{"lch":[39.5940766091873897,125.63034182067031,12.177050630061796],"luv":[39.5940766091873897,122.803716963532779,26.4996204863200759],"rgb":[0.733333333333333282,0.0666666666666666657,0.0666666666666666657],"xyz":[0.20794666077534027,0.110080804776207186,0.0156023600263824457],"hpluv":[12.177050630061796,402.627698793753552,39.5940766091873897],"hsluv":[12.177050630061796,94.3481495348726753,39.5940766091873897]},"#bb1122":{"lch":[39.7200723855077413,122.321798686612851,10.5915831721034426],"luv":[39.7200723855077413,120.23772406897838,22.4835972353282152],"rgb":[0.733333333333333282,0.0666666666666666657,0.133333333333333331],"xyz":[0.209822018913817271,0.110830948031598,0.0254792462223616401],"hpluv":[10.5915831721034426,390.780742551338619,39.7200723855077413],"hsluv":[10.5915831721034426,94.4721603032542561,39.7200723855077413]},"#bb1133":{"lch":[39.9262897734852,117.365304386249704,7.93115519261489421],"luv":[39.9262897734852,116.242655940639409,16.194431559742192],"rgb":[0.733333333333333282,0.0666666666666666657,0.2],"xyz":[0.212909769646275,0.112066048324581113,0.0417414000799727902],"hpluv":[7.93115519261489421,373.009679290071517,39.9262897734852],"hsluv":[7.93115519261489421,94.6648992051481173,39.9262897734852]},"#bb1144":{"lch":[40.2213637516280755,111.198866264944101,3.99799547396429888],"luv":[40.2213637516280755,110.928262725239179,7.75295991020434627],"rgb":[0.733333333333333282,0.0666666666666666657,0.266666666666666663],"xyz":[0.217367764890493892,0.113849246422268693,0.0652201750328594287],"hpluv":[3.99799547396429888,350.818828640487084,40.2213637516280755],"hsluv":[3.99799547396429888,94.920595316052,40.2213637516280755]},"#bb1155":{"lch":[40.6112374139617245,104.574630781207446,358.621384873601698],"luv":[40.6112374139617245,104.544360517453882,-2.51596641918957786],"rgb":[0.733333333333333282,0.0666666666666666657,0.333333333333333315],"xyz":[0.223330178929855905,0.116234212038013526,0.0966222223068333302],"hpluv":[358.621384873601698,326.752894857139097,40.6112374139617245],"hsluv":[358.621384873601698,95.2265760165129791,40.6112374139617245]},"#bb1166":{"lch":[41.0995768863194755,98.4443929415329251,351.723860164231496],"luv":[41.0995768863194755,97.4191751888273672,-14.1704907168206535],"rgb":[0.733333333333333282,0.0666666666666666657,0.4],"xyz":[0.230915174703364062,0.119268210347416845,0.136569866713977306],"hpluv":[351.723860164231496,303.943570446579713,41.0995768863194755],"hsluv":[351.723860164231496,95.5663396203906643,41.0995768863194755]},"#bb1177":{"lch":[41.688035181331955,93.7889310063258,343.43446060875408],"luv":[41.688035181331955,89.8961490854954093,-26.7403432832812094],"rgb":[0.733333333333333282,0.0666666666666666657,0.466666666666666674],"xyz":[0.240229187723566,0.122993815555497654,0.185623668620375215],"hpluv":[343.43446060875408,285.48249634694713,41.688035181331955],"hsluv":[343.43446060875408,95.9227087501184883,41.688035181331955]},"#bb1188":{"lch":[42.3764815581906475,91.4027083669889606,334.189166164708297],"luv":[42.3764815581906475,82.2840505377722309,-39.7968607294366805],"rgb":[0.733333333333333282,0.0666666666666666657,0.533333333333333326],"xyz":[0.251369604825509796,0.127449982396275252,0.244296532023947383],"hpluv":[334.189166164708297,273.699179760613617,42.3764815581906475],"hsluv":[334.189166164708297,96.2803174994205,42.3764815581906475]},"#bb1199":{"lch":[43.1632358766101092,91.692942572352564,324.693570122963422],"luv":[43.1632358766101092,74.8281105443768269,-52.9938637007650755],"rgb":[0.733333333333333282,0.0666666666666666657,0.6],"xyz":[0.264426568934582495,0.13267276803990441,0.31306320966506529],"hpluv":[324.693570122963422,269.563595898888195,43.1632358766101092],"hsluv":[324.693570122963422,96.6270445785018239,43.1632358766101092]},"#bb11aa":{"lch":[44.0453166933651,94.6050581990027553,315.694091730478135],"luv":[44.0453166933651,67.7013389352867847,-66.0806003544619784],"rgb":[0.733333333333333282,0.0666666666666666657,0.66666666666666663],"xyz":[0.279484261899835051,0.138695845226005504,0.39236705928206389],"hpluv":[315.694091730478135,272.554870225691275,44.0453166933651],"hsluv":[315.694091730478135,96.9544350138240105,44.0453166933651]},"#bb11bb":{"lch":[45.0186979872658242,99.7328976909900717,307.715012949243601],"luv":[45.0186979872658242,61.0100383302365472,-78.8950321933172205],"rgb":[0.733333333333333282,0.0666666666666666657,0.733333333333333282],"xyz":[0.296621854007171726,0.145550882068940263,0.482625044380705637],"hpluv":[307.715012949243601,281.115526817766181,45.0186979872658242],"hsluv":[307.715012949243601,97.2574105430315115,45.0186979872658242]},"#bb11cc":{"lch":[46.0785638011469771,106.527215460047387,300.962972083371881],"luv":[46.0785638011469771,54.8065495444917161,-91.3470840295328372],"rgb":[0.733333333333333282,0.0666666666666666657,0.8],"xyz":[0.315914229450893425,0.153267832246429064,0.584231555050975793],"hpluv":[300.962972083371881,293.360047474541318,46.0785638011469771],"hsluv":[300.962972083371881,97.5336183018287528,46.0785638011469771]},"#bb11dd":{"lch":[47.2195492447565,114.4666153484132,295.402801066287566],"luv":[47.2195492447565,49.1038079522977853,-103.3993330438134],"rgb":[0.733333333333333282,0.0666666666666666657,0.866666666666666696],"xyz":[0.337432555001527,0.161875162466682598,0.69756140295098179],"hpluv":[295.402801066287566,307.607082675331128,47.2195492447565],"hsluv":[295.402801066287566,97.7826899351839813,47.2195492447565]},"#bb11ee":{"lch":[48.4359581768354701,123.136484869400022,290.880608651701721],"luv":[48.4359581768354701,43.8885280811888,-115.049515465553711],"rgb":[0.733333333333333282,0.0666666666666666657,0.933333333333333348],"xyz":[0.361244735267701733,0.171400034573152643,0.822972219019505],"hpluv":[290.880608651701721,322.595409245987128,48.4359581768354701],"hsluv":[290.880608651701721,98.0055710342431325,48.4359581768354701]},"#bb11ff":{"lch":[49.7219510368964,132.239138283310353,287.21247838519713],"luv":[49.7219510368964,39.1316890181496575,-126.316667975763593],"rgb":[0.733333333333333282,0.0666666666666666657,1],"xyz":[0.387415783677533154,0.181868453937085339,0.960806407311286859],"hpluv":[287.21247838519713,337.482436204013879,49.7219510368964],"hsluv":[287.21247838519713,99.9999999999991758,49.7219510368964]},"#992200":{"lch":[33.8105832897308716,95.4307991554818358,16.0266852535062476],"luv":[33.8105832897308716,91.7217107848809263,26.3470149760569932],"rgb":[0.6,0.133333333333333331,0],"xyz":[0.137085784430296231,0.0791755182154848525,0.0080644446856038],"hpluv":[16.0266852535062476,358.158468302090569,33.8105832897308716],"hsluv":[16.0266852535062476,100.000000000002331,33.8105832897308716]},"#992211":{"lch":[33.8952997814050718,93.2922690289088195,14.6972380002076104],"luv":[33.8952997814050718,90.239744522062125,23.669304365681274],"rgb":[0.6,0.133333333333333331,0.0666666666666666657],"xyz":[0.138097449929933364,0.0795801844153397,0.0133925496503594314],"hpluv":[14.6972380002076104,349.257308780581,33.8952997814050718],"hsluv":[14.6972380002076104,92.1483909924374274,33.8952997814050718]},"#992222":{"lch":[34.0515850466810335,89.6330213591727,12.1770506300618084],"luv":[34.0515850466810335,87.6163196410811338,18.9065874902323579],"rgb":[0.6,0.133333333333333331,0.133333333333333331],"xyz":[0.139972808068410365,0.0803303276707305197,0.0232694358463386292],"hpluv":[12.1770506300618084,334.018122077437397,34.0515850466810335],"hsluv":[12.1770506300618084,78.2707991117683,34.0515850466810335]},"#992233":{"lch":[34.3068003204445446,84.4135643942939282,7.88651435003668233],"luv":[34.3068003204445446,83.6151628365757773,11.58250394183076],"rgb":[0.6,0.133333333333333331,0.2],"xyz":[0.143060558800868098,0.0815654279637136326,0.0395315897039497724],"hpluv":[7.88651435003668233,312.227643050581207,34.3068003204445446],"hsluv":[7.88651435003668233,79.3008398259009226,34.3068003204445446]},"#992244":{"lch":[34.6707661525426,78.4682482149262199,1.45557545410962708],"luv":[34.6707661525426,78.4429281517087134,1.99323879782018309],"rgb":[0.6,0.133333333333333331,0.266666666666666663],"xyz":[0.147518554045086986,0.0833486260614012126,0.0630103646568364],"hpluv":[1.45557545410962708,287.190351340663,34.6707661525426],"hsluv":[1.45557545410962708,80.6267396657693212,34.6707661525426]},"#992255":{"lch":[35.149531709850983,73.0418005898087443,352.659616011821072],"luv":[35.149531709850983,72.4431965063170082,-9.33209051330535821],"rgb":[0.6,0.133333333333333331,0.333333333333333315],"xyz":[0.153480968084449,0.0857335916771460455,0.0944124119308103193],"hpluv":[352.659616011821072,263.688538908073838,35.149531709850983],"hsluv":[352.659616011821072,82.1555178352066804,35.149531709850983]},"#992266":{"lch":[35.7459223236079495,69.5043059181480203,341.734006615383123],"luv":[35.7459223236079495,66.0021002604389793,-21.7846574995905513],"rgb":[0.6,0.133333333333333331,0.4],"xyz":[0.161065963857957156,0.0887675899865493639,0.134360056337954281],"hpluv":[341.734006615383123,246.731460763727796,35.7459223236079495],"hsluv":[341.734006615383123,83.7834402291280753,35.7459223236079495]},"#992277":{"lch":[36.4599553630224946,68.9051746310403104,329.662355423262511],"luv":[36.4599553630224946,59.4695672743266783,-34.8036443370302],"rgb":[0.6,0.133333333333333331,0.466666666666666674],"xyz":[0.17037997687815909,0.0924931951946301734,0.18341385824435219],"hpluv":[329.662355423262511,239.814275331209444,36.4599553630224946],"hsluv":[329.662355423262511,85.4170781092293225,36.4599553630224946]},"#992288":{"lch":[37.2892540647929,71.5563678213307242,317.925484235555643],"luv":[37.2892540647929,53.1144286836587369,-47.9496740488411],"rgb":[0.6,0.133333333333333331,0.533333333333333326],"xyz":[0.18152039398010289,0.0969493620354077712,0.242086721647924358],"hpluv":[317.925484235555643,243.502777039008038,37.2892540647929],"hsluv":[317.925484235555643,86.9852623869732,37.2892540647929]},"#992299":{"lch":[38.2294870734457888,77.015786119064046,307.715012949243771],"luv":[38.2294870734457888,47.1132010795059841,-60.9243596238766827],"rgb":[0.6,0.133333333333333331,0.6],"xyz":[0.194577358089175617,0.102172147679036929,0.310853399289042265],"hpluv":[307.715012949243771,255.635172818446421,38.2294870734457888],"hsluv":[307.715012949243771,88.441984096309227,38.2294870734457888]},"#9922aa":{"lch":[39.2748221448681178,84.484081905089468,299.468150353755561],"luv":[39.2748221448681178,41.5610713460956234,-73.5543162833468],"rgb":[0.6,0.133333333333333331,0.66666666666666663],"xyz":[0.209635051054428145,0.108195224865138023,0.390157248906040865],"hpluv":[299.468150353755561,272.960615272696657,39.2748221448681178],"hsluv":[299.468150353755561,89.7633288768494708,39.2748221448681178]},"#9922bb":{"lch":[40.4183688993281436,93.2013493596814726,293.05045530637],"luv":[40.4183688993281436,36.4922039393154094,-85.7601922462677919],"rgb":[0.6,0.133333333333333331,0.733333333333333282],"xyz":[0.22677264316176482,0.115050261708072782,0.480415234004682612],"hpluv":[293.05045530637,292.605673863240838,40.4183688993281436],"hsluv":[293.05045530637,90.9419133161227222,40.4183688993281436]},"#9922cc":{"lch":[41.6525852773545182,102.609691310931794,288.11294916137831],"luv":[41.6525852773545182,31.900454524651952,-97.5249186210648702],"rgb":[0.6,0.133333333333333331,0.8],"xyz":[0.246065018605486546,0.122767211885561583,0.582021744674952712],"hpluv":[288.11294916137831,312.597676326075884,41.6525852773545182],"hsluv":[288.11294916137831,91.9812251551093851,41.6525852773545182]},"#9922dd":{"lch":[42.969628845807982,112.350489371469905,284.303043907998301],"luv":[42.969628845807982,27.7562437333976213,-108.867917201630149],"rgb":[0.6,0.133333333333333331,0.866666666666666696],"xyz":[0.267583344156120062,0.131374542105815117,0.69535159257495871],"hpluv":[284.303043907998301,331.781902020401162,42.969628845807982],"hsluv":[284.303043907998301,92.8910125551507235,42.969628845807982]},"#9922ee":{"lch":[44.361642902098545,122.210344632057584,281.334390799049743],"luv":[44.361642902098545,24.018574136526297,-119.826860225637532],"rgb":[0.6,0.133333333333333331,0.933333333333333348],"xyz":[0.291395524422294827,0.140899414212285162,0.820762408643481933],"hpluv":[281.334390799049743,349.574442537581717,44.361642902098545],"hsluv":[281.334390799049743,93.6839973987951566,44.361642902098545]},"#9922ff":{"lch":[45.8209755847726612,132.069283427413211,278.992348895848238],"luv":[45.8209755847726612,20.6427685166220094,-130.446049127597433],"rgb":[0.6,0.133333333333333331,1],"xyz":[0.317566572832126193,0.151367833576217858,0.958596596935263889],"hpluv":[278.992348895848238,365.74366826955071,45.8209755847726612],"hsluv":[278.992348895848238,99.9999999999993179,45.8209755847726612]},"#bb2200":{"lch":[40.7526421249889452,122.145166616692975,14.6188079362681389],"luv":[40.7526421249889452,118.190884669319914,30.8278528104570881],"rgb":[0.733333333333333282,0.133333333333333331,0],"xyz":[0.21065061901047108,0.117107386045888315,0.0115127963065494235],"hpluv":[14.6188079362681389,380.329350781024857,40.7526421249889452],"hsluv":[14.6188079362681389,100.000000000002217,40.7526421249889452]},"#bb2211":{"lch":[40.8179368215716849,120.355879944515436,13.7706881972771793],"luv":[40.8179368215716849,116.896392622501153,28.6491052053056343],"rgb":[0.733333333333333282,0.133333333333333331,0.0666666666666666657],"xyz":[0.211662284510108212,0.117512052245743168,0.0168409012713050532],"hpluv":[13.7706881972771793,374.158477594779924,40.8179368215716849],"hsluv":[13.7706881972771793,94.6800257514418,40.8179368215716849]},"#bb2222":{"lch":[40.9385803904414161,117.208042434762348,12.1770506300618102],"luv":[40.9385803904414161,114.570915436608942,24.7230772236478238],"rgb":[0.733333333333333282,0.133333333333333331,0.133333333333333331],"xyz":[0.213537642648585213,0.118262195501133982,0.0267177874672842527],"hpluv":[12.1770506300618102,363.298797482753,40.9385803904414161],"hsluv":[12.1770506300618102,85.1321689328196101,40.9385803904414161]},"#bb2233":{"lch":[41.136111673530813,112.480172956632245,9.49666640172232235],"luv":[41.136111673530813,110.938654987290519,18.5581286223806821],"rgb":[0.733333333333333282,0.133333333333333331,0.2],"xyz":[0.216625393381042974,0.119497295794117095,0.042979941324895396],"hpluv":[9.49666640172232235,346.970109935861444,41.136111673530813],"hsluv":[9.49666640172232235,85.6217357677037398,41.136111673530813]},"#bb2244":{"lch":[41.4189140922405201,106.57909239531196,5.51995404221549],"luv":[41.4189140922405201,106.084859394728952,10.2520994439692306],"rgb":[0.733333333333333282,0.133333333333333331,0.266666666666666663],"xyz":[0.221083388625261834,0.121280493891804675,0.0664587162777820345],"hpluv":[5.51995404221549,326.522141050690152,41.4189140922405201],"hsluv":[5.51995404221549,86.2742612371986297,41.4189140922405201]},"#bb2255":{"lch":[41.7928521194743823,100.22104851316422,0.0579838467833058424],"luv":[41.7928521194743823,100.220997191859041,0.101424589714973798],"rgb":[0.733333333333333282,0.133333333333333331,0.333333333333333315],"xyz":[0.227045802664623819,0.123665459507549508,0.097860763551755936],"hpluv":[0.0579838467833058424,304.296010337655673,41.7928521194743823],"hsluv":[0.0579838467833058424,87.0597094656736772,41.7928521194743823]},"#bb2266":{"lch":[42.2616671880265216,94.3342448936905,353.011685321171171],"luv":[42.2616671880265216,93.6334344607092106,-11.4773564358193614],"rgb":[0.733333333333333282,0.133333333333333331,0.4],"xyz":[0.234630798438132,0.126699457816952826,0.137808407958899898],"hpluv":[353.011685321171171,283.244886623536,42.2616671880265216],"hsluv":[353.011685321171171,87.937804292381287,42.2616671880265216]},"#bb2277":{"lch":[42.8272221099346666,89.9002723684957,344.496654306277264],"luv":[42.8272221099346666,86.6292371691086771,-24.0298614109202155],"rgb":[0.733333333333333282,0.133333333333333331,0.466666666666666674],"xyz":[0.24394481145833391,0.13042506302503365,0.186862209865297807],"hpluv":[344.496654306277264,266.367005402095344,42.8272221099346666],"hsluv":[344.496654306277264,88.8655868844719805,42.8272221099346666]},"#bb2288":{"lch":[43.4897067779173554,87.7363054907772693,334.961981200390596],"luv":[43.4897067779173554,79.4914755013727898,-37.1317199141871441],"rgb":[0.733333333333333282,0.133333333333333331,0.533333333333333326],"xyz":[0.255085228560277766,0.13488122986581122,0.245535073268869974],"hpluv":[334.961981200390596,255.995416581420926,43.4897067779173554],"hsluv":[334.961981200390596,89.8036443318747786,43.4897067779173554]},"#bb2299":{"lch":[44.2478449340908639,88.2751432264235092,325.159464012784042],"luv":[44.2478449340908639,72.4514028672968635,-50.4310929309115],"rgb":[0.733333333333333282,0.133333333333333331,0.6],"xyz":[0.268142192669350465,0.140104015509440405,0.314301750909987909],"hpluv":[325.159464012784042,253.154489640486645,44.2478449340908639],"hsluv":[325.159464012784042,90.7199745934293844,44.2478449340908639]},"#bb22aa":{"lch":[45.0991127685299062,91.4705260319517919,315.891475419905078],"luv":[45.0991127685299062,65.6779186933914758,-63.6652819727222195],"rgb":[0.733333333333333282,0.133333333333333331,0.66666666666666663],"xyz":[0.283199885634603,0.146127092695541499,0.39360560052698651],"hpluv":[315.891475419905078,257.366789521381691,45.0991127685299062],"hsluv":[315.891475419905078,91.5914304646717,45.0991127685299062]},"#bb22bb":{"lch":[46.0399667792549678,96.9048462314552,307.715012949243658],"luv":[46.0399667792549678,59.2800221375787615,-76.6578645574617497],"rgb":[0.733333333333333282,0.133333333333333331,0.733333333333333282],"xyz":[0.30033747774193964,0.152982129538476258,0.483863585625628256],"hpluv":[307.715012949243658,267.0851991180906,46.0399667792549678],"hsluv":[307.715012949243658,92.4033444706684,46.0399667792549678]},"#bb22cc":{"lch":[47.066072507765945,104.009692587178989,300.837938637053412],"luv":[47.066072507765945,53.3165662395356,-89.3048706202785496],"rgb":[0.733333333333333282,0.133333333333333331,0.8],"xyz":[0.319629853185661394,0.16069907971596506,0.585470096295898412],"hpluv":[300.837938637053412,280.417543020287,47.066072507765945],"hsluv":[300.837938637053412,93.1481326309998,47.066072507765945]},"#bb22dd":{"lch":[48.1725242595717589,112.247547842848149,295.20893392435471],"luv":[48.1725242595717589,47.808517424121824,-101.557164486017044],"rgb":[0.733333333333333282,0.133333333333333331,0.866666666666666696],"xyz":[0.341148178736294938,0.169306409936218594,0.69879994419590441],"hpluv":[295.20893392435471,295.676483579310798,48.1725242595717589],"hsluv":[295.20893392435471,93.8235497257627316,48.1725242595717589]},"#bb22ee":{"lch":[49.3540469689012724,121.194036197623419,290.655339197387],"luv":[49.3540469689012724,42.7506603945962169,-113.403595382583688],"rgb":[0.733333333333333282,0.133333333333333331,0.933333333333333348],"xyz":[0.364960359002469703,0.178831282042688611,0.824210760264427633],"hpluv":[290.655339197387,311.600255956968681,49.3540469689012724],"hsluv":[290.655339197387,94.4310255689598,49.3540469689012724]},"#bb22ff":{"lch":[50.6051737457033397,130.547024148317973,286.97844412333734],"luv":[50.6051737457033397,38.1212848334983647,-124.85709093449519],"rgb":[0.733333333333333282,0.133333333333333331,1],"xyz":[0.391131407412301069,0.189299701406621335,0.962044948556209478],"hpluv":[286.97844412333734,327.349274436557835,50.6051737457033397],"hsluv":[286.97844412333734,99.9999999999991616,50.6051737457033397]},"#993300":{"lch":[36.2545465004255476,86.9834057059747749,20.3835344027483316],"luv":[36.2545465004255476,81.5366895093473,30.2965531383769893],"rgb":[0.6,0.2,0],"xyz":[0.14320350651930705,0.0914109623935066423,0.0101036853819406816],"hpluv":[20.3835344027483316,304.448092478673459,36.2545465004255476],"hsluv":[20.3835344027483316,100.00000000000226,36.2545465004255476]},"#993311":{"lch":[36.3315413581227133,85.0112276295678839,19.0571063974297203],"luv":[36.3315413581227133,80.3520694714869279,27.7570487396543],"rgb":[0.6,0.2,0.0666666666666666657],"xyz":[0.144215172018944182,0.0918156285933615,0.0154317903466963131],"hpluv":[19.0571063974297203,296.914762557758195,36.3315413581227133],"hsluv":[19.0571063974297203,93.1288353931581,36.3315413581227133]},"#993322":{"lch":[36.4736730302835852,81.6150828115545863,16.5278497598068661],"luv":[36.4736730302835852,78.2428757472059573,23.217970134019108],"rgb":[0.6,0.2,0.133333333333333331],"xyz":[0.146090530157421183,0.0925657718487523096,0.0253086765426755109],"hpluv":[16.5278497598068661,283.942401799749632,36.4736730302835852],"hsluv":[16.5278497598068661,80.9121244795507124,36.4736730302835852]},"#993333":{"lch":[36.7060271438600836,76.7221326388105638,12.1770506300618369],"luv":[36.7060271438600836,74.9959199734098121,16.1832513417159589],"rgb":[0.6,0.2,0.2],"xyz":[0.149178280889878945,0.0938008721417354224,0.0415708304002866541],"hpluv":[12.1770506300618369,265.229979343802,36.7060271438600836],"hsluv":[12.1770506300618369,62.1516051360361459,36.7060271438600836]},"#993344":{"lch":[37.0379214664673668,71.077614272095758,5.55118145677439934],"luv":[37.0379214664673668,70.7442733159460744,6.87568495580995354],"rgb":[0.6,0.2,0.266666666666666663],"xyz":[0.153636276134097804,0.095584070239423,0.0650496053531732926],"hpluv":[5.55118145677439934,243.514912685509444,37.0379214664673668],"hsluv":[5.55118145677439934,64.3097526797848644,37.0379214664673668]},"#993355":{"lch":[37.4754277574064858,65.8722356173568073,356.298722520573506],"luv":[37.4754277574064858,65.7348379379961614,-4.25235305377523254],"rgb":[0.6,0.2,0.333333333333333315],"xyz":[0.15959869017345979,0.0979690358551678353,0.0964516526271472],"hpluv":[356.298722520573506,223.046355214908289,37.4754277574064858],"hsluv":[356.298722520573506,66.8387430740197885,37.4754277574064858]},"#993366":{"lch":[38.0218512407041942,62.5198646461221941,344.559385799457459],"luv":[38.0218512407041942,60.2633303059628602,-16.6452544529622166],"rgb":[0.6,0.2,0.4],"xyz":[0.167183685946967975,0.101003034164571154,0.136399297034291156],"hpluv":[344.559385799457459,208.652742449272864,38.0218512407041942],"hsluv":[344.559385799457459,69.5808124884664778,38.0218512407041942]},"#993377":{"lch":[38.6780657603296234,62.1964572713534949,331.414072321130675],"luv":[38.6780657603296234,54.6147414507713478,-29.7595247504508862],"rgb":[0.6,0.2,0.466666666666666674],"xyz":[0.17649769896716988,0.104728639372651963,0.185453098940689065],"hpluv":[331.414072321130675,204.051704505442274,38.6780657603296234],"hsluv":[331.414072321130675,72.3848063102254571,38.6780657603296234]},"#993388":{"lch":[39.4428302118465908,65.3028355433768155,318.6521895607018],"luv":[39.4428302118465908,49.0236963230770257,-43.1409031990296086],"rgb":[0.6,0.2,0.533333333333333326],"xyz":[0.187638116069113736,0.109184806213429561,0.244125962344261233],"hpluv":[318.6521895607018,210.08899125401652,39.4428302118465908],"hsluv":[318.6521895607018,75.1271370389489306,39.4428302118465908]},"#993399":{"lch":[40.3131218316236897,71.3679900272828149,307.715012949243942],"luv":[40.3131218316236897,43.6582502656979656,-56.4565955781255226],"rgb":[0.6,0.2,0.6],"xyz":[0.200695080178186436,0.114407591857058719,0.31289263998537914],"hpluv":[307.715012949243942,224.64479534599792,40.3131218316236897],"hsluv":[307.715012949243942,77.7202573427554313,40.3131218316236897]},"#9933aa":{"lch":[41.2844862133256925,79.5040030135899372,299.063916375798101],"luv":[41.2844862133256925,38.6218522191785354,-69.4927264276258825],"rgb":[0.6,0.2,0.66666666666666663],"xyz":[0.215752773143439,0.120430669043159827,0.39219648960237774],"hpluv":[299.063916375798101,244.366370382710016,41.2844862133256925],"hsluv":[299.063916375798101,80.1114582016200814,41.2844862133256925]},"#9933bb":{"lch":[42.3513893410192637,88.8787943355742,292.467029257400327],"luv":[42.3513893410192637,33.9651845170614,-82.1328577566084],"rgb":[0.6,0.2,0.733333333333333282],"xyz":[0.232890365250775611,0.127285705886094586,0.482454474701019487],"hpluv":[292.467029257400327,266.299173904300574,42.3513893410192637],"hsluv":[292.467029257400327,82.2764131802073848,42.3513893410192637]},"#9933cc":{"lch":[43.5075532005759911,98.8962106119506785,287.477062230467],"luv":[43.5075532005759911,29.700902070050418,-94.3308904316533],"rgb":[0.6,0.2,0.8],"xyz":[0.252182740694497365,0.135002656063583387,0.584060985371289698],"hpluv":[287.477062230467,288.439223502221068,43.5075532005759911],"hsluv":[287.477062230467,84.2111914011780129,43.5075532005759911]},"#9933dd":{"lch":[44.7462588110156716,109.182503226938962,283.677602435208257],"luv":[44.7462588110156716,25.8171133061496079,-106.086265234656878],"rgb":[0.6,0.2,0.866666666666666696],"xyz":[0.273701066245130908,0.143609986283836921,0.697390833271295696],"hpluv":[283.677602435208257,309.624731809924413,44.7462588110156716],"hsluv":[283.677602435208257,85.9249592908513478,44.7462588110156716]},"#9933ee":{"lch":[46.0606056636097208,119.52114969179982,280.747238708189116],"luv":[46.0606056636097208,22.2879081330132465,-117.42467532296601],"rgb":[0.6,0.2,0.933333333333333348],"xyz":[0.297513246511305618,0.153134858390306938,0.822801649339818919],"hpluv":[280.747238708189116,329.271729063034456,46.0606056636097208],"hsluv":[280.747238708189116,90.0471632149093324,46.0606056636097208]},"#9933ff":{"lch":[47.4437223771408512,129.794782591236896,278.453521985212944],"luv":[47.4437223771408512,19.0807517890999456,-128.38461940228359],"rgb":[0.6,0.2,1],"xyz":[0.323684294921137039,0.163603277754239662,0.960635837631600764],"hpluv":[278.453521985212944,347.150508646733101,47.4437223771408512],"hsluv":[278.453521985212944,99.999999999999261,47.4437223771408512]},"#bb3300":{"lch":[42.6640590509798585,114.303280915030754,17.3320761189885637],"luv":[42.6640590509798585,109.113245500432,34.0520143942012652],"rgb":[0.733333333333333282,0.2,0],"xyz":[0.216768341099481898,0.129342830223910105,0.0135520370028863052],"hpluv":[17.3320761189885637,339.966286272656077,42.6640590509798585],"hsluv":[17.3320761189885637,100.000000000002302,42.6640590509798585]},"#bb3311":{"lch":[42.7251747888925806,112.6335820513806,16.4819551739351198],"luv":[42.7251747888925806,108.005370801027979,31.9556518296457135],"rgb":[0.733333333333333282,0.2,0.0666666666666666657],"xyz":[0.21778000659911903,0.129747496423764958,0.0188801419676419349],"hpluv":[16.4819551739351198,334.52099084556113,42.7251747888925806],"hsluv":[16.4819551739351198,95.1490253673008368,42.7251747888925806]},"#bb3322":{"lch":[42.8381318005571785,109.688338781622747,14.8808580240480524],"luv":[42.8381318005571785,106.009603708482885,28.1690536980292627],"rgb":[0.733333333333333282,0.2,0.133333333333333331],"xyz":[0.219655364737596032,0.130497639679155786,0.0287570281636211345],"hpluv":[14.8808580240480524,324.914627119009424,42.8381318005571785],"hsluv":[14.8808580240480524,86.4181297836030211,42.8381318005571785]},"#bb3333":{"lch":[43.023174549414108,105.246046554892928,12.1770506300618351],"luv":[43.023174549414108,102.878058957341324,22.1998941575065203],"rgb":[0.733333333333333282,0.2,0.2],"xyz":[0.222743115470053765,0.131732739972138885,0.0450191820212322777],"hpluv":[12.1770506300618351,310.414975564112126,43.023174549414108],"hsluv":[12.1770506300618351,72.7398502888125762,43.023174549414108]},"#bb3344":{"lch":[43.2883038991094082,99.6704509181560496,8.14070356751482116],"luv":[43.2883038991094082,98.6661026897846085,14.1137863891102171],"rgb":[0.733333333333333282,0.2,0.266666666666666663],"xyz":[0.227201110714272653,0.133515938069826479,0.0684979569741189231],"hpluv":[8.14070356751482116,292.169703441320848,43.2883038991094082],"hsluv":[8.14070356751482116,73.8775464962187556,43.2883038991094082]},"#bb3355":{"lch":[43.6392404977582515,93.6285749325397632,2.54995992142812078],"luv":[43.6392404977582515,93.5358645919991289,4.16558266337591299],"rgb":[0.733333333333333282,0.2,0.333333333333333315],"xyz":[0.233163524753634666,0.135900903685571312,0.0999000042480928246],"hpluv":[2.54995992142812078,272.251672456619758,43.6392404977582515],"hsluv":[2.54995992142812078,75.2585830443305781,43.6392404977582515]},"#bb3366":{"lch":[44.0797950159491521,88.0182600678664784,355.263953050872033],"luv":[44.0797950159491521,87.7177339493983794,-7.26727295188107547],"rgb":[0.733333333333333282,0.2,0.4],"xyz":[0.240748520527142823,0.138934901994974602,0.1398476486552368],"hpluv":[355.263953050872033,253.380121177946961,44.0797950159491521],"hsluv":[355.263953050872033,76.8177075569623753,44.0797950159491521]},"#bb3377":{"lch":[44.6120878205181057,83.829516929164356,346.367941021132197],"luv":[44.6120878205181057,81.4679789337245239,-19.757437005625782],"rgb":[0.733333333333333282,0.2,0.466666666666666674],"xyz":[0.250062533547344756,0.142660507203055426,0.188901450561634709],"hpluv":[346.367941021132197,238.442541154787421,44.6120878205181057],"hsluv":[346.367941021132197,78.4827471040858597,44.6120878205181057]},"#bb3388":{"lch":[45.2367248685103078,81.924239827592,336.329010851829594],"luv":[45.2367248685103078,75.03162551729379,-32.8912791414593499],"rgb":[0.733333333333333282,0.2,0.533333333333333326],"xyz":[0.261202950649288557,0.147116674043833023,0.247574313965206849],"hpluv":[336.329010851829594,229.805591899252,45.2367248685103078],"hsluv":[336.329010851829594,80.18501002925629,45.2367248685103078]},"#bb3399":{"lch":[45.9529692994627226,82.7837935230449347,325.982908927834501],"luv":[45.9529692994627226,68.6170634488305495,-46.3125800806357404],"rgb":[0.733333333333333282,0.2,0.6],"xyz":[0.274259914758361312,0.152339459687462181,0.316340991606324784],"hpluv":[325.982908927834501,228.597286714525296,45.9529692994627226],"hsluv":[325.982908927834501,81.8663863744617402,45.9529692994627226]},"#bb33aa":{"lch":[46.7589216358443664,86.3774619636168524,316.238480868355282],"luv":[46.7589216358443664,62.3839556422166126,-59.7436859735489136],"rgb":[0.733333333333333282,0.2,0.66666666666666663],"xyz":[0.289317607723613812,0.158362536873563275,0.395644841223323385],"hpluv":[316.238480868355282,234.409537876970433,46.7589216358443664],"hsluv":[316.238480868355282,83.4827024616804181,46.7589216358443664]},"#bb33bb":{"lch":[47.6517090930198108,92.2657594707273461,307.715012949243828],"luv":[47.6517090930198108,56.4421334605023191,-72.9880534138084585],"rgb":[0.733333333333333282,0.2,0.733333333333333282],"xyz":[0.306455199830950487,0.165217573716498034,0.485902826321965131],"hpluv":[307.715012949243828,245.697877980233102,47.6517090930198108],"hsluv":[307.715012949243828,85.0039827354176,47.6517090930198108]},"#bb33cc":{"lch":[48.6276786348411179,99.8443429984049402,300.621719827817344],"luv":[48.6276786348411179,50.8574804969275078,-85.9209491700817551],"rgb":[0.733333333333333282,0.2,0.8],"xyz":[0.325747575274672241,0.172934523893986836,0.587509336992235287],"hpluv":[300.621719827817344,260.542905615006589,48.6276786348411179],"hsluv":[300.621719827817344,86.4127454729900535,48.6276786348411179]},"#bb33dd":{"lch":[49.6825862492002273,108.545865187730342,294.87630802524211],"luv":[49.6825862492002273,45.6609809337446322,-98.4747666639588459],"rgb":[0.733333333333333282,0.2,0.866666666666666696],"xyz":[0.347265900825305729,0.18154185411424037,0.700839184892241285],"hpluv":[294.87630802524211,277.235228758227834,49.6825862492002273],"hsluv":[294.87630802524211,87.70141038259,49.6825862492002273]},"#bb33ee":{"lch":[50.8117750205940695,117.927813495206621,290.271422146528892],"luv":[50.8117750205940695,40.8581913283156268,-110.623584271795281],"rgb":[0.733333333333333282,0.2,0.933333333333333348],"xyz":[0.371078081091480494,0.191066726220710414,0.826250000960764508],"hpluv":[290.271422146528892,294.504005794210514,50.8117750205940695],"hsluv":[290.271422146528892,88.8695912604113687,50.8117750205940695]},"#bb33ff":{"lch":[52.0103359867018611,127.679308171663493,286.581788346289272],"luv":[52.0103359867018611,36.4375993761859931,-122.36955130625914],"rgb":[0.733333333333333282,0.2,1],"xyz":[0.39724912950131186,0.201535145584643111,0.964084189252546353],"hpluv":[286.581788346289272,311.508705442628695,52.0103359867018611],"hsluv":[286.581788346289272,99.9999999999991616,52.0103359867018611]},"#994400":{"lch":[39.4244247356725168,77.6708634712958315,27.0445710144404678],"luv":[39.4244247356725168,69.1777945884316097,35.3156589667733627],"rgb":[0.6,0.266666666666666663,0],"xyz":[0.152036077002273062,0.109076103359438958,0.0130478755429292749],"hpluv":[27.0445710144404678,249.995444431237956,39.4244247356725168],"hsluv":[27.0445710144404678,100.000000000002302,39.4244247356725168]},"#994411":{"lch":[39.4928806474909351,75.8240556098730849,25.7566327743493559],"luv":[39.4928806474909351,68.2907795083206395,32.9493071744317447],"rgb":[0.6,0.266666666666666663,0.0666666666666666657],"xyz":[0.153047742501910194,0.109480769559293811,0.0183759805076849081],"hpluv":[25.7566327743493559,243.628181561178451,39.4928806474909351],"hsluv":[25.7566327743493559,94.1783894720599,39.4928806474909351]},"#994422":{"lch":[39.6193348047394807,72.6128884539244268,23.2788782073808527],"luv":[39.6193348047394807,66.7016282141236161,28.6971141964989123],"rgb":[0.6,0.266666666666666663,0.133333333333333331],"xyz":[0.154923100640387196,0.110230912814684626,0.0282528667036641],"hpluv":[23.2788782073808527,232.565805292122405,39.6193348047394807],"hsluv":[23.2788782073808527,83.7619004180350402,39.6193348047394807]},"#994433":{"lch":[39.8262957210095,67.9099451463512764,18.9473520481579776],"luv":[39.8262957210095,64.2304033034813671,22.0503047882012062],"rgb":[0.6,0.266666666666666663,0.2],"xyz":[0.158010851372844929,0.111466013107667739,0.0445150205612752509],"hpluv":[18.9473520481579776,216.372863201479333,39.8262957210095],"hsluv":[18.9473520481579776,67.5996848307310358,39.8262957210095]},"#994444":{"lch":[40.1224193460439267,62.3513134554678956,12.1770506300619097],"luv":[40.1224193460439267,60.9484376060972082,13.1519672672071142],"rgb":[0.6,0.266666666666666663,0.266666666666666663],"xyz":[0.162468846617063817,0.113249211205355318,0.0679937955141618894],"hpluv":[12.1770506300619097,197.195872414250289,40.1224193460439267],"hsluv":[12.1770506300619097,46.2091051210312429,40.1224193460439267]},"#994455":{"lch":[40.5136546800823041,57.0624194645929776,2.37288379618767387],"luv":[40.5136546800823041,57.0134905267935324,2.36254377830001205],"rgb":[0.6,0.266666666666666663,0.333333333333333315],"xyz":[0.16843126065642583,0.115634176821100151,0.0993958427881357909],"hpluv":[2.37288379618767387,178.726144329621945,40.5136546800823041],"hsluv":[2.37288379618767387,49.5312591923758063,40.5136546800823041]},"#994466":{"lch":[41.0036603670202382,53.5416261730848646,349.413399835018254],"luv":[41.0036603670202382,52.6302589877717111,-9.83674601372026558],"rgb":[0.6,0.266666666666666663,0.4],"xyz":[0.176016256429934,0.11866817513050347,0.139343487195279753],"hpluv":[349.413399835018254,165.694562401887765,41.0036603670202382],"hsluv":[349.413399835018254,53.2076295784804643,41.0036603670202382]},"#994477":{"lch":[41.594070304433572,53.2098960104776424,334.460192523955527],"luv":[41.594070304433572,48.0105420863306946,-22.9408125841809181],"rgb":[0.6,0.266666666666666663,0.466666666666666674],"xyz":[0.18533026945013592,0.122393780338584279,0.188397289101677662],"hpluv":[334.460192523955527,162.330570569563577,41.594070304433572],"hsluv":[334.460192523955527,57.0495308436177666,41.594070304433572]},"#994488":{"lch":[42.2847251453823887,56.6612659292255287,319.901700116735],"luv":[42.2847251453823887,43.3424978513170416,-36.4955742071691631],"rgb":[0.6,0.266666666666666663,0.533333333333333326],"xyz":[0.196470686552079721,0.126849947179361877,0.247070152505249829],"hpluv":[319.901700116735,170.036472949794188,42.2847251453823887],"hsluv":[319.901700116735,60.8903164523640683,42.2847251453823887]},"#994499":{"lch":[43.0739091348830314,63.3829857303906,307.715012949244226],"luv":[43.0739091348830314,38.7735489334465555,-50.1399519665159232],"rgb":[0.6,0.266666666666666663,0.6],"xyz":[0.209527650661152448,0.132072732822991035,0.315836830146367764],"hpluv":[307.715012949244226,186.722963823125951,43.0739091348830314],"hsluv":[307.715012949244226,64.600458594127474,43.0739091348830314]},"#9944aa":{"lch":[43.9586008361636686,72.3252063731545,298.405725418599673],"luv":[43.9586008361636686,34.4059763632637896,-63.6173267861038099],"rgb":[0.6,0.266666666666666663,0.66666666666666663],"xyz":[0.224585343626404976,0.138095810009092129,0.395140679763366365],"hpluv":[298.405725418599673,208.77819920337123,43.9586008361636686],"hsluv":[298.405725418599673,68.0913106207235,43.9586008361636686]},"#9944bb":{"lch":[44.9347323991438827,82.5300732915554676,291.540124858279853],"luv":[44.9347323991438827,30.3011407548278626,-76.7662286846607316],"rgb":[0.6,0.266666666666666663,0.733333333333333282],"xyz":[0.241722935733741651,0.144950846852026888,0.485398664862008111],"hpluv":[291.540124858279853,233.060888419388505,44.9347323991438827],"hsluv":[291.540124858279853,71.3111773355981882,44.9347323991438827]},"#9944cc":{"lch":[45.9974464532923903,93.3382836250318206,286.486143775676851],"luv":[45.9974464532923903,26.4878609436744341,-89.5009967134190561],"rgb":[0.6,0.266666666666666663,0.8],"xyz":[0.261015311177463349,0.152667797029515689,0.587005175532278267],"hpluv":[286.486143775676851,257.492992496327645,45.9974464532923903],"hsluv":[286.486143775676851,74.2376853125076792,45.9974464532923903]},"#9944dd":{"lch":[47.1413389271288139,104.350309752399141,282.717215233582351],"luv":[47.1413389271288139,22.9716047676972792,-101.790434323753402],"rgb":[0.6,0.266666666666666663,0.866666666666666696],"xyz":[0.282533636728096949,0.161275127249769223,0.700335023432284265],"hpluv":[282.717215233582351,280.886686990529654,47.1413389271288139],"hsluv":[282.717215233582351,78.691216526215527,47.1413389271288139]},"#9944ee":{"lch":[48.3606780479664593,115.341161543855208,279.855683836472622],"luv":[48.3606780479664593,19.7426125181249787,-113.638958096441911],"rgb":[0.6,0.266666666666666663,0.933333333333333348],"xyz":[0.306345816994271658,0.170799999356239268,0.825745839500807488],"hpluv":[279.855683836472622,302.643440789384783,48.3606780479664593],"hsluv":[279.855683836472622,89.2619995530309325,48.3606780479664593]},"#9944ff":{"lch":[49.6495929972458185,126.19285787586071,277.642335930208503],"luv":[49.6495929972458185,16.7822322716138856,-125.071955525044785],"rgb":[0.6,0.266666666666666663,1],"xyz":[0.332516865404103079,0.181268418720171964,0.963580027792589333],"hpluv":[277.642335930208503,322.521305960549284,49.6495929972458185],"hsluv":[277.642335930208503,99.9999999999991616,49.6495929972458185]},"#bb4400":{"lch":[45.2216387767487547,104.837609625168909,21.4216552556228201],"luv":[45.2216387767487547,97.5952013308911,38.2896992558330354],"rgb":[0.733333333333333282,0.266666666666666663,0],"xyz":[0.225600911582447911,0.147007971189842435,0.0164962271638749],"hpluv":[21.4216552556228201,294.177965476355098,45.2216387767487547],"hsluv":[21.4216552556228201,100.000000000002373,45.2216387767487547]},"#bb4411":{"lch":[45.2777618800582076,103.283777149094803,20.576768268141489],"luv":[45.2777618800582076,96.6944911384892123,36.3003306548646947],"rgb":[0.733333333333333282,0.266666666666666663,0.0666666666666666657],"xyz":[0.226612577082085043,0.147412637389697287,0.0218243321286305317],"hpluv":[20.576768268141489,289.458620037032802,45.2777618800582076],"hsluv":[20.576768268141489,95.6967439910137614,45.2777618800582076]},"#bb4422":{"lch":[45.3815280810129238,100.53232916519147,18.9799525675269258],"luv":[45.3815280810129238,95.0666309197234,32.6968636561903381],"rgb":[0.733333333333333282,0.266666666666666663,0.133333333333333331],"xyz":[0.228487935220562044,0.148162780645088116,0.0317012183246097243],"hpluv":[18.9799525675269258,281.103307599105051,45.3815280810129238],"hsluv":[18.9799525675269258,87.925891065222288,45.3815280810129238]},"#bb4433":{"lch":[45.5516172521931111,96.3559005693685862,16.2666991179303722],"luv":[45.5516172521931111,92.4986058403436147,26.9901369416087924],"rgb":[0.733333333333333282,0.266666666666666663,0.2],"xyz":[0.231575685953019805,0.149397880938071215,0.0479633721822208675],"hpluv":[16.2666991179303722,268.419362556396,45.5516172521931111],"hsluv":[16.2666991179303722,75.6846484949249572,45.5516172521931111]},"#bb4444":{"lch":[45.7955406359936816,91.066890863790789,12.177050630061844],"luv":[45.7955406359936816,89.0179277419259734,19.2090382927107299],"rgb":[0.733333333333333282,0.266666666666666663,0.266666666666666663],"xyz":[0.236033681197238665,0.151181079035758809,0.0714421471351075],"hpluv":[12.177050630061844,252.334507458167678,45.7955406359936816],"hsluv":[12.177050630061844,59.1297963696904461,45.7955406359936816]},"#bb4455":{"lch":[46.1187996938414813,85.2741675307746,6.43569277192082279],"luv":[46.1187996938414813,84.7367941199702273,9.55820957796975],"rgb":[0.733333333333333282,0.266666666666666663,0.333333333333333315],"xyz":[0.24199609523660065,0.153566044651503641,0.102844194409081421],"hpluv":[6.43569277192082279,234.627449284537505,46.1187996938414813],"hsluv":[6.43569277192082279,61.0765315010866274,46.1187996938414813]},"#bb4466":{"lch":[46.5252276318027427,79.8426568240615637,358.82639812637143],"luv":[46.5252276318027427,79.8259079304732779,-1.63532009113408461],"rgb":[0.733333333333333282,0.266666666666666663,0.4],"xyz":[0.249581091010108835,0.156600042960906932,0.142791838816225369],"hpluv":[358.82639812637143,217.763856882437722,46.5252276318027427],"hsluv":[358.82639812637143,63.3003300169989842,46.5252276318027427]},"#bb4477":{"lch":[47.0171837667790697,75.785442181693,349.367581794189107],"luv":[47.0171837667790697,74.484290362097866,-13.9829802234512588],"rgb":[0.733333333333333282,0.266666666666666663,0.466666666666666674],"xyz":[0.258895104030310741,0.160325648168987756,0.191845640722623278],"hpluv":[349.367581794189107,204.535408840651428,47.0171837667790697],"hsluv":[349.367581794189107,65.7062458495858266,47.0171837667790697]},"#bb4488":{"lch":[47.5956997014540235,74.0450948660102,338.538246495536782],"luv":[47.5956997014540235,68.9109568360576219,-27.0916241974425098],"rgb":[0.733333333333333282,0.266666666666666663,0.533333333333333326],"xyz":[0.270035521132254597,0.164781815009765353,0.250518504126195474],"hpluv":[338.538246495536782,197.409434601059019,47.5956997014540235],"hsluv":[338.538246495536782,68.1997676790361,47.5956997014540235]},"#bb4499":{"lch":[48.2606154557730633,75.1911240047971,327.313188255720945],"luv":[48.2606154557730633,63.2834900243205496,-40.6067115074158309],"rgb":[0.733333333333333282,0.266666666666666663,0.6],"xyz":[0.283092485241327296,0.170004600653394511,0.319285181767313353],"hpluv":[327.313188255720945,197.702903480158483,48.2606154557730633],"hsluv":[327.313188255720945,70.6969578310621074,48.2606154557730633]},"#bb44aa":{"lch":[49.0107199856960278,79.2228796099941093,316.794363507436401],"luv":[49.0107199856960278,57.7456584584256944,-54.2374739723603838],"rgb":[0.733333333333333282,0.266666666666666663,0.66666666666666663],"xyz":[0.298150178206579852,0.176027677839495605,0.398589031384311954],"hpluv":[316.794363507436401,205.115683333718124,49.0107199856960278],"hsluv":[316.794363507436401,73.1302855273877128,49.0107199856960278]},"#bb44bb":{"lch":[49.8438993628519427,85.6636869410227746,307.715012949243942],"luv":[49.8438993628519427,52.4034189799077268,-67.7653963284049752],"rgb":[0.733333333333333282,0.266666666666666663,0.733333333333333282],"xyz":[0.315287770313916471,0.182882714682430364,0.4888470164829537],"hpluv":[307.715012949243942,218.084137693810391,49.8438993628519427],"hsluv":[307.715012949243942,75.450469608388417,49.8438993628519427]},"#bb44cc":{"lch":[50.757290285110841,93.8478600934752905,300.284565440631638],"luv":[50.757290285110841,47.3270085455435918,-81.0405769121528152],"rgb":[0.733333333333333282,0.266666666666666663,0.8],"xyz":[0.334580145757638225,0.190599664859919166,0.590453527153223856],"hpluv":[300.284565440631638,234.620130462749955,50.757290285110841],"hsluv":[300.284565440631638,77.6254237907312898,50.757290285110841]},"#bb44dd":{"lch":[51.7474340276366291,103.158361374368454,294.364201848969515],"luv":[51.7474340276366291,42.5564715489483518,-93.971241615445],"rgb":[0.733333333333333282,0.266666666666666663,0.866666666666666696],"xyz":[0.356098471308271769,0.1992069950801727,0.703783375053229854],"hpluv":[294.364201848969515,252.961799427415912,51.7474340276366291],"hsluv":[294.364201848969515,79.6375689955678467,51.7474340276366291]},"#bb44ee":{"lch":[52.8104252671910217,113.122924260907325,289.686672533024307],"luv":[52.8104252671910217,38.1084271425454304,-106.510768347901248],"rgb":[0.733333333333333282,0.266666666666666663,0.933333333333333348],"xyz":[0.379910651574446478,0.208731867186642744,0.829194191121753077],"hpluv":[289.686672533024307,271.813038246621943,52.8104252671910217],"hsluv":[289.686672533024307,87.7449679178180872,52.8104252671910217]},"#bb44ff":{"lch":[53.942050711908152,123.415863319803691,285.982908620336502],"luv":[53.942050711908152,33.9826318144238115,-118.645084406973112],"rgb":[0.733333333333333282,0.266666666666666663,1],"xyz":[0.4060816999842779,0.219200286550575441,0.967028379413534922],"hpluv":[285.982908620336502,290.323946696930363,53.942050711908152],"hsluv":[285.982908620336502,99.9999999999990621,53.942050711908152]},"#995500":{"lch":[43.167672396478018,69.2675138179999,36.3951762413548678],"luv":[43.167672396478018,55.7564526526882105,41.099956911356287],"rgb":[0.6,0.333333333333333315,0],"xyz":[0.163849333716619028,0.132702616788131222,0.0169856277810444857],"hpluv":[36.3951762413548678,203.615246511519132,43.167672396478018],"hsluv":[36.3951762413548678,100.000000000002288,43.167672396478018]},"#995511":{"lch":[43.2277537555276865,67.4837391190291385,35.2266717066771307],"luv":[43.2277537555276865,55.1258789529511333,38.9254738590266101],"rgb":[0.6,0.333333333333333315,0.0666666666666666657],"xyz":[0.16486099921625616,0.133107282987986075,0.0223137327458001189],"hpluv":[35.2266717066771307,198.096040704981476,43.2277537555276865],"hsluv":[35.2266717066771307,95.1659583326808303,43.2277537555276865]},"#995522":{"lch":[43.3388072781739,64.3407602415628475,32.9528815923873708],"luv":[43.3388072781739,53.9895016234129059,34.998101990218963],"rgb":[0.6,0.333333333333333315,0.133333333333333331],"xyz":[0.166736357354733161,0.133857426243376904,0.0321906189417793115],"hpluv":[32.9528815923873708,188.385971738918272,43.3388072781739],"hsluv":[32.9528815923873708,86.4646465379692302,43.3388072781739]},"#995533":{"lch":[43.5207548807750584,59.6262244551406582,28.8908620435756234],"luv":[43.5207548807750584,52.2052395636471,28.8079781462883915],"rgb":[0.6,0.333333333333333315,0.2],"xyz":[0.169824108087190895,0.13509252653636,0.0484527727993904617],"hpluv":[28.8908620435756234,173.852210644027934,43.5207548807750584],"hsluv":[28.8908620435756234,72.8304069554253601,43.5207548807750584]},"#995544":{"lch":[43.7814988718974831,53.8284560366537335,22.2989672577237812],"luv":[43.7814988718974831,49.8029788080235036,20.4246415179685634],"rgb":[0.6,0.333333333333333315,0.266666666666666663],"xyz":[0.174282103331409782,0.136875724634047596,0.0719315477522771],"hpluv":[22.2989672577237812,156.01294104827457,43.7814988718974831],"hsluv":[22.2989672577237812,54.5318604429391058,43.7814988718974831]},"#995555":{"lch":[44.1267187000120629,47.9518139182857226,12.1770506300620411],"luv":[44.1267187000120629,46.8729201797035,10.1146335514957979],"rgb":[0.6,0.333333333333333315,0.333333333333333315],"xyz":[0.180244517370771795,0.139260690249792429,0.103333595026251],"hpluv":[12.1770506300620411,137.893162706519348,44.1267187000120629],"hsluv":[12.1770506300620411,32.3126421104369754,44.1267187000120629]},"#995566":{"lch":[44.5602350881765048,43.578232165907,357.727809148728397],"luv":[44.5602350881765048,43.5439690351937116,-1.72773822316436432],"rgb":[0.6,0.333333333333333315,0.4],"xyz":[0.187829513144279953,0.14229468855919572,0.143281239433394963],"hpluv":[357.727809148728397,124.097051059849122,44.5602350881765048],"hsluv":[357.727809148728397,36.5660257696708157,44.5602350881765048]},"#995577":{"lch":[45.0842241078155226,42.5628566452735342,339.858530865537546],"luv":[45.0842241078155226,39.9599368331855729,-14.6560640723873874],"rgb":[0.6,0.333333333333333315,0.466666666666666674],"xyz":[0.197143526164481886,0.146020293767276543,0.192335041339792873],"hpluv":[339.858530865537546,119.796876557388956,45.0842241078155226],"hsluv":[339.858530865537546,41.1101378179314167,45.0842241078155226]},"#995588":{"lch":[45.699386409692309,45.957423726275,322.088602167082399],"luv":[45.699386409692309,36.2586549471185506,-28.2381787122006145],"rgb":[0.6,0.333333333333333315,0.533333333333333326],"xyz":[0.208283943266425686,0.150476460608054141,0.25100790474336504],"hpluv":[322.088602167082399,127.609977655436467,45.699386409692309],"hsluv":[322.088602167082399,45.7577454208568852,45.699386409692309]},"#995599":{"lch":[46.4051108942887964,53.2218555896971921,307.715012949244795],"luv":[46.4051108942887964,32.5576366947089113,-42.1018551285561102],"rgb":[0.6,0.333333333333333315,0.6],"xyz":[0.221340907375498414,0.155699246251683299,0.319774582384483],"hpluv":[307.715012949244795,145.533684272522947,46.4051108942887964],"hsluv":[307.715012949244795,50.3502223422482516,46.4051108942887964]},"#9955aa":{"lch":[47.1996461355186625,63.0010233462712037,297.353030705211779],"luv":[47.1996461355186625,28.9471952899390068,-55.9570266143899246],"rgb":[0.6,0.333333333333333315,0.66666666666666663],"xyz":[0.236398600340750942,0.161722323437784393,0.399078432001481576],"hpluv":[297.353030705211779,169.374563019623821,47.1996461355186625],"hsluv":[297.353030705211779,54.7667714505238337,47.1996461355186625]},"#9955bb":{"lch":[48.0802807126223541,74.1194144420538,290.114722102094788],"luv":[48.0802807126223541,25.4897394646759068,-69.5985688017783701],"rgb":[0.6,0.333333333333333315,0.733333333333333282],"xyz":[0.253536192448087616,0.168577360280719152,0.489336417100123322],"hpluv":[290.114722102094788,195.615971831826613,48.0802807126223541],"hsluv":[290.114722102094788,58.9252289891592866,48.0802807126223541]},"#9955cc":{"lch":[49.0435277691913,85.8237639836856658,285.007043429489613],"luv":[49.0435277691913,22.2230153813451068,-82.8966588692685491],"rgb":[0.6,0.333333333333333315,0.8],"xyz":[0.272828567891809315,0.176294310458207953,0.590942927770393478],"hpluv":[285.007043429489613,222.057364979540267,49.0435277691913],"hsluv":[285.007043429489613,65.256702758776143,49.0435277691913]},"#9955dd":{"lch":[50.0853068419578875,97.6800340866365104,281.315028513382344],"luv":[50.0853068419578875,19.1651498984824649,-95.7814496055220843],"rgb":[0.6,0.333333333333333315,0.866666666666666696],"xyz":[0.294346893442442914,0.184901640678461487,0.704272775670399476],"hpluv":[281.315028513382344,247.476970093373268,50.0853068419578875],"hsluv":[281.315028513382344,76.6956878028438638,50.0853068419578875]},"#9955ee":{"lch":[51.2011159126469266,109.450459224116145,278.575243894560685],"luv":[51.2011159126469266,16.3199513369978568,-108.226901520499666],"rgb":[0.6,0.333333333333333315,0.933333333333333348],"xyz":[0.318159073708617623,0.194426512784931532,0.829683591738922699],"hpluv":[278.575243894560685,271.254835109068836,51.2011159126469266],"hsluv":[278.575243894560685,88.2491190723243335,51.2011159126469266]},"#9955ff":{"lch":[52.3861878346365444,121.012399839465246,276.491711029928183],"luv":[52.3861878346365444,13.6815981187824764,-120.2364952409323],"rgb":[0.6,0.333333333333333315,1],"xyz":[0.344330122118449045,0.204894932148864228,0.967517780030704544],"hpluv":[276.491711029928183,293.124692446110771,52.3861878346365444],"hsluv":[276.491711029928183,99.9999999999991,52.3861878346365444]},"#bb5500":{"lch":[48.3398816318057811,94.9450628471467724,27.1627331553413143],"luv":[48.3398816318057811,84.4739036935134,43.344256295703957],"rgb":[0.733333333333333282,0.333333333333333315,0],"xyz":[0.237414168296793876,0.170634484618534699,0.0204339794019901093],"hpluv":[27.1627331553413143,249.233335779464397,48.3398816318057811],"hsluv":[27.1627331553413143,100.000000000002217,48.3398816318057811]},"#bb5511":{"lch":[48.3907029738951735,93.4795954244126364,26.3417432533787057],"luv":[48.3907029738951735,83.7729911103365907,41.4791600823755289],"rgb":[0.733333333333333282,0.333333333333333315,0.0666666666666666657],"xyz":[0.238425833796431,0.171039150818389551,0.0257620843667457425],"hpluv":[26.3417432533787057,245.128732426237889,48.3907029738951735],"hsluv":[26.3417432533787057,96.2613278044251786,48.3907029738951735]},"#bb5522":{"lch":[48.4847005727335869,90.8707197847641623,24.7826102649670759],"luv":[48.4847005727335869,82.5019575685759321,38.090874386840035],"rgb":[0.733333333333333282,0.333333333333333315,0.133333333333333331],"xyz":[0.240301191934908,0.17178929407378038,0.0356389705627249351],"hpluv":[24.7826102649670759,237.825586669453713,48.4847005727335869],"hsluv":[24.7826102649670759,89.48684037186257,48.4847005727335869]},"#bb5533":{"lch":[48.6388719159228629,86.8743588299812473,22.1104535643633149],"luv":[48.6388719159228629,80.4856161939384407,32.6989267102511363],"rgb":[0.733333333333333282,0.333333333333333315,0.2],"xyz":[0.243388942667365771,0.173024394366763479,0.0519011244203360783],"hpluv":[22.1104535643633149,226.64567974804504,48.6388719159228629],"hsluv":[22.1104535643633149,78.7542493880857393,48.6388719159228629]},"#bb5544":{"lch":[48.8601705631915,81.7431600256382751,18.0266646696809296],"luv":[48.8601705631915,77.730600917119915,25.2962031151029265],"rgb":[0.733333333333333282,0.333333333333333315,0.266666666666666663],"xyz":[0.24784693791158463,0.174807592464451073,0.0753798993732227168],"hpluv":[18.0266646696809296,212.293047020031764,48.8601705631915],"hsluv":[18.0266646696809296,64.1199207289341,48.8601705631915]},"#bb5555":{"lch":[49.1538097277392154,76.0172073873862075,12.1770506300619399],"luv":[49.1538097277392154,74.3068552156307,16.0345591439297159],"rgb":[0.733333333333333282,0.333333333333333315,0.333333333333333315],"xyz":[0.253809351950946616,0.177192558080195905,0.106781946647196632],"hpluv":[12.1770506300619399,196.242945408672853,49.1538097277392154],"hsluv":[12.1770506300619399,45.9858047870319879,49.1538097277392154]},"#bb5566":{"lch":[49.523574907380123,70.5220596563995,4.21567942747197],"luv":[49.523574907380123,70.3312550088346882,5.18415538569556134],"rgb":[0.733333333333333282,0.333333333333333315,0.4],"xyz":[0.261394347724454801,0.180226556389599196,0.14672959105434058],"hpluv":[4.21567942747197,180.697576197923894,49.523574907380123],"hsluv":[4.21567942747197,48.7291682320237527,49.523574907380123]},"#bb5577":{"lch":[49.971995559373525,66.3094111666939341,354.014227306533371],"luv":[49.971995559373525,65.9478803557508257,-6.91484532417379327],"rgb":[0.733333333333333282,0.333333333333333315,0.466666666666666674],"xyz":[0.270708360744656706,0.18395216159768002,0.195783392960738489],"hpluv":[354.014227306533371,168.378953180241098,49.971995559373525],"hsluv":[354.014227306533371,51.7390719561838495,49.971995559373525]},"#bb5588":{"lch":[50.5004659153875508,64.4571905510646275,342.016521446261379],"luv":[50.5004659153875508,61.308172080607541,-19.9006896832966476],"rgb":[0.733333333333333282,0.333333333333333315,0.533333333333333326],"xyz":[0.281848777846600562,0.188408328438457617,0.254456256364310685],"hpluv":[342.016521446261379,161.962814057843559,50.5004659153875508],"hsluv":[342.016521446261379,54.9055054808170055,50.5004659153875508]},"#bb5599":{"lch":[51.1093507584050286,65.6961991151429459,329.411862939203161],"luv":[51.1093507584050286,56.5544024759803,-33.4303774845774342],"rgb":[0.733333333333333282,0.333333333333333315,0.6],"xyz":[0.294905741955673262,0.193631114082086775,0.323222934005428564],"hpluv":[329.411862939203161,163.109481188372769,51.1093507584050286],"hsluv":[329.411862939203161,58.1255686218068561,51.1093507584050286]},"#bb55aa":{"lch":[51.7980911374347386,70.0901192661774246,317.660759061539352],"luv":[51.7980911374347386,51.8085124997667563,-47.2070212077450151],"rgb":[0.733333333333333282,0.333333333333333315,0.66666666666666663],"xyz":[0.309963434920925818,0.199654191268187869,0.402526783622427164],"hpluv":[317.660759061539352,171.704773930815691,51.7980911374347386],"hsluv":[317.660759061539352,61.3115173935257403,51.7980911374347386]},"#bb55bb":{"lch":[52.5653152299933737,77.1031380177621344,307.715012949244226],"luv":[52.5653152299933737,47.1666372355911179,-60.9934605025180332],"rgb":[0.733333333333333282,0.333333333333333315,0.733333333333333282],"xyz":[0.327101027028262437,0.206509228111122628,0.492784768721068911],"hpluv":[307.715012949244226,186.128169856082764,52.5653152299933737],"hsluv":[307.715012949244226,64.3946779967479,52.5653152299933737]},"#bb55cc":{"lch":[53.4089544864585,85.9678373228364308,299.780474196008072],"luv":[53.4089544864585,42.6983512805399883,-74.6144748148057175],"rgb":[0.733333333333333282,0.333333333333333315,0.8],"xyz":[0.346393402471984191,0.21422617828861143,0.594391279391339067],"hpluv":[299.780474196008072,204.249617293250537,53.4089544864585],"hsluv":[299.780474196008072,67.3259326792693855,53.4089544864585]},"#bb55dd":{"lch":[54.3263625650166944,95.9883710948233926,293.613183872979789],"luv":[54.3263625650166944,38.4490902963257213,-87.9513208588848698],"rgb":[0.733333333333333282,0.333333333333333315,0.866666666666666696],"xyz":[0.367911728022617734,0.222833508508864964,0.707721127291345065],"hpluv":[293.613183872979789,224.206046477737118,54.3263625650166944],"hsluv":[293.613183872979789,73.8407928406032283,54.3263625650166944]},"#bb55ee":{"lch":[55.314433433552054,106.647677925948784,288.842761327535072],"luv":[55.314433433552054,34.444226028074695,-100.932266893812525],"rgb":[0.733333333333333282,0.333333333333333315,0.933333333333333348],"xyz":[0.391723908288792444,0.232358380615335,0.833131943359868288],"hpluv":[288.842761327535072,244.653966901481454,55.314433433552054],"hsluv":[288.842761327535072,86.7715876359309135,55.314433433552054]},"#bb55ff":{"lch":[56.3697148536960526,117.598184211748716,285.129655441003138],"luv":[56.3697148536960526,30.6936185759692179,-113.521956944959783],"rgb":[0.733333333333333282,0.333333333333333315,1],"xyz":[0.417894956698623865,0.242826799979267705,0.970966131651650133],"hpluv":[285.129655441003138,264.724480425834031,56.3697148536960526],"hsluv":[285.129655441003138,99.9999999999989,56.3697148536960526]},"#996600":{"lch":[47.3343652017352454,63.4240894393546952,48.3260196362919672],"luv":[47.3343652017352454,42.1701199842588,47.3740023823666476],"rgb":[0.6,0.4,0],"xyz":[0.178877391422465504,0.162758732199824563,0.0219949803496598331],"hpluv":[48.3260196362919672,170.026654750900292,47.3343652017352454],"hsluv":[48.3260196362919672,100.000000000002288,47.3343652017352454]},"#996611":{"lch":[47.3868110627231189,61.667674323653,47.4017350737566616],"luv":[47.3868110627231189,41.7399921999205,45.3946594616449133],"rgb":[0.6,0.4,0.0666666666666666657],"xyz":[0.179889056922102636,0.163163398399679416,0.0273230853144154628],"hpluv":[47.4017350737566616,165.135107398016657,47.3868110627231189],"hsluv":[47.4017350737566616,96.0239926064661,47.3868110627231189]},"#996622":{"lch":[47.4838028017404099,58.5263777304533406,45.5834379771503322],"luv":[47.4838028017404099,40.9608465044279413,41.8036594557031336],"rgb":[0.6,0.4,0.133333333333333331],"xyz":[0.181764415060579637,0.163913541655070244,0.0371999715103946624],"hpluv":[45.5834379771503322,156.40314428015364,47.4838028017404099],"hsluv":[45.5834379771503322,88.8298219708016177,47.4838028017404099]},"#996633":{"lch":[47.642855645786625,53.6803525088045674,42.2629253198225712],"luv":[47.642855645786625,39.7270268335614887,36.1018501525199724],"rgb":[0.6,0.4,0.2],"xyz":[0.184852165793037371,0.165148641948053343,0.0534621253680058056],"hpluv":[42.2629253198225712,142.973945144987511,47.642855645786625],"hsluv":[42.2629253198225712,77.4596172761956865,47.642855645786625]},"#996644":{"lch":[47.8710980897590872,47.4159845831850149,36.6424092143452071],"luv":[47.8710980897590872,38.045445264132745,28.298757722676072],"rgb":[0.6,0.4,0.266666666666666663],"xyz":[0.189310161037256258,0.166931840045740937,0.0769409003208924441],"hpluv":[36.6424092143452071,125.687101185572914,47.8710980897590872],"hsluv":[36.6424092143452071,62.0095295256686185,47.8710980897590872]},"#996655":{"lch":[48.173837669734425,40.4765536471140521,27.3183313201514686],"luv":[48.173837669734425,35.9622216701857838,18.5760600691352664],"rgb":[0.6,0.4,0.333333333333333315],"xyz":[0.195272575076618271,0.16931680566148577,0.108342947594866346],"hpluv":[27.3183313201514686,106.618264590322553,48.173837669734425],"hsluv":[27.3183313201514686,42.9499413016611484,48.173837669734425]},"#996666":{"lch":[48.5548823199147819,34.3240193245421,12.1770506300621335],"luv":[48.5548823199147819,33.551744690774747,7.24007809326721219],"rgb":[0.6,0.4,0.4],"xyz":[0.202857570850126429,0.17235080397088906,0.148290592002010307],"hpluv":[12.1770506300621335,89.702502372613651,48.5548823199147819],"hsluv":[12.1770506300621335,21.0200766933302461,48.5548823199147819]},"#996677":{"lch":[49.0167186013709,31.3606600839303482,350.2076113500313],"luv":[49.0167186013709,30.9037509766054157,-5.33377694282222681],"rgb":[0.6,0.4,0.466666666666666674],"xyz":[0.212171583870328362,0.176076409178969884,0.197344393908408217],"hpluv":[350.2076113500313,81.185839798992177,49.0167186013709],"hsluv":[350.2076113500313,25.8881256225468483,49.0167186013709]},"#996688":{"lch":[49.5606396668562752,33.7929953796712823,326.289263208678278],"luv":[49.5606396668562752,28.1107077320421368,-18.7551232343109682],"rgb":[0.6,0.4,0.533333333333333326],"xyz":[0.223312000972272162,0.180532576019747482,0.256017257311980384],"hpluv":[326.289263208678278,86.5225105267045365,49.5606396668562752],"hsluv":[326.289263208678278,30.9767265160446463,49.5606396668562752]},"#996699":{"lch":[50.1868595811773304,41.2886932006772,307.715012949245818],"luv":[50.1868595811773304,25.2577114783499113,-32.6619686653465351],"rgb":[0.6,0.4,0.6],"xyz":[0.236368965081344889,0.185755361663376639,0.324783934953098319],"hpluv":[307.715012949245818,104.395179003902854,50.1868595811773304],"hsluv":[307.715012949245818,36.1175524455388413,50.1868595811773304]},"#9966aa":{"lch":[50.8946289106688141,51.8448774557822,295.617938374847199],"luv":[50.8946289106688141,22.4160699516755599,-46.7483810021979451],"rgb":[0.6,0.4,0.66666666666666663],"xyz":[0.251426658046597418,0.191778438849477734,0.40408778457009692],"hpluv":[295.617938374847199,129.262701065701,50.8946289106688141],"hsluv":[295.617938374847199,41.1705422178494445,50.8946289106688141]},"#9966bb":{"lch":[51.6823563026294,63.8712345518136,287.908782454232437],"luv":[51.6823563026294,19.6405628457828776,-60.776499523036378],"rgb":[0.6,0.4,0.733333333333333282],"xyz":[0.268564250153934092,0.198633475692412492,0.494345769668738666],"hpluv":[287.908782454232437,156.820318415219759,51.6823563026294],"hsluv":[287.908782454232437,49.349420166275209,51.6823563026294]},"#9966cc":{"lch":[52.5477355185796569,76.4825896496335389,282.819195018988751],"luv":[52.5477355185796569,16.9695880464031816,-74.5762670093482285],"rgb":[0.6,0.4,0.8],"xyz":[0.287856625597655791,0.206350425869901294,0.595952280339008822],"hpluv":[282.819195018988751,184.691924030055,52.5477355185796569],"hsluv":[282.819195018988751,61.7185051859638136,52.5477355185796569]},"#9966dd":{"lch":[53.4878747475352725,89.2117449852098758,279.306611445978092],"luv":[53.4878747475352725,14.4271177471338046,-88.0374563286358],"rgb":[0.6,0.4,0.866666666666666696],"xyz":[0.30937495114828939,0.214957756090154828,0.70928212823901482],"hpluv":[279.306611445978092,211.644028054176175,53.4878747475352725],"hsluv":[279.306611445978092,74.2596178074049362,53.4878747475352725]},"#9966ee":{"lch":[54.4994239962059339,101.810849438236403,276.783380903602506],"luv":[54.4994239962059339,12.0254847729914225,-101.098154183495325],"rgb":[0.6,0.4,0.933333333333333348],"xyz":[0.333187131414464099,0.224482628196624873,0.834692944307538],"hpluv":[276.783380903602506,237.050827216632513,54.4994239962059339],"hsluv":[276.783380903602506,86.9990828065156734,54.4994239962059339]},"#9966ff":{"lch":[55.5786963614876,114.151421142661491,274.908981870437117],"luv":[55.5786963614876,9.76829238934238475,-113.732701597586171],"rgb":[0.6,0.4,1],"xyz":[0.359358179824295521,0.234951047560557569,0.972527132599319888],"hpluv":[274.908981870437117,260.622732185953453,55.5786963614876],"hsluv":[274.908981870437117,99.999999999998991,55.5786963614876]},"#bb6600":{"lch":[51.9152024616159622,85.9194467179265899,34.7713476038742],"luv":[51.9152024616159622,70.5771984524152884,49.0001059480794936],"rgb":[0.733333333333333282,0.4,0],"xyz":[0.252442226002640324,0.200690600030228039,0.0254433319706054567],"hpluv":[34.7713476038742,210.008196913669821,51.9152024616159622],"hsluv":[34.7713476038742,100.000000000002217,51.9152024616159622]},"#bb6611":{"lch":[51.960819173128,84.5067938711160735,34.0102696578751846],"luv":[51.960819173128,70.0508360673827184,47.2681560528436],"rgb":[0.733333333333333282,0.4,0.0666666666666666657],"xyz":[0.253453891502277429,0.201095266230082892,0.0307714369353610864],"hpluv":[34.0102696578751846,206.373990798532162,51.960819173128],"hsluv":[34.0102696578751846,96.7960731817087492,51.960819173128]},"#bb6622":{"lch":[52.0452187907305586,81.9745670334704215,32.5563816919222901],"luv":[52.0452187907305586,69.0932729256005587,44.1129150788451909],"rgb":[0.733333333333333282,0.4,0.133333333333333331],"xyz":[0.255329249640754485,0.20184540948547372,0.040648323131340286],"hpluv":[32.5563816919222901,199.865401092535734,52.0452187907305586],"hsluv":[32.5563816919222901,90.9716633106406221,52.0452187907305586]},"#bb6633":{"lch":[52.1837271506259412,78.04817012610809,30.0375791414029081],"luv":[52.1837271506259412,67.5660884046363,39.0684086920722109],"rgb":[0.733333333333333282,0.4,0.2],"xyz":[0.258417000373212191,0.203080509778456819,0.0569104769889514292],"hpluv":[30.0375791414029081,189.787216830323956,52.1837271506259412],"hsluv":[30.0375791414029081,81.6941023093515639,52.1837271506259412]},"#bb6644":{"lch":[52.3827138306128859,72.9081368603095257,26.1184165145312406],"luv":[52.3827138306128859,65.4632041398932,32.0961886238895318],"rgb":[0.733333333333333282,0.4,0.266666666666666663],"xyz":[0.262874995617431106,0.204863707876144413,0.0803892519418380747],"hpluv":[26.1184165145312406,176.614896915735159,52.3827138306128859],"hsluv":[26.1184165145312406,68.9437006343278824,52.3827138306128859]},"#bb6655":{"lch":[52.6470547760809637,67.004522830646,20.3474245095699864],"luv":[52.6470547760809637,62.823537757634746,23.2982656731697979],"rgb":[0.733333333333333282,0.4,0.333333333333333315],"xyz":[0.268837409656793092,0.207248673491889246,0.111791299215811976],"hpluv":[20.3474245095699864,161.498824171429789,52.6470547760809637],"hsluv":[20.3474245095699864,52.9816895309479534,52.6470547760809637]},"#bb6666":{"lch":[52.9804174131186727,61.0960132663801261,12.1770506300620109],"luv":[52.9804174131186727,59.7213810933874498,12.8871826767560087],"rgb":[0.733333333333333282,0.4,0.4],"xyz":[0.276422405430301277,0.210282671801292537,0.151738943622955924],"hpluv":[12.1770506300620109,146.331162504643544,52.9804174131186727],"hsluv":[12.1770506300620109,34.2899270044314335,52.9804174131186727]},"#bb6677":{"lch":[53.3854132757716826,56.2661599102721226,1.17050216666979279],"luv":[53.3854132757716826,56.2544190111897535,1.14938799445880213],"rgb":[0.733333333333333282,0.4,0.466666666666666674],"xyz":[0.285736418450503182,0.21400827700937336,0.200792745529353833],"hpluv":[1.17050216666979279,133.74082367080041,53.3854132757716826],"hsluv":[1.17050216666979279,37.694842795415525,53.3854132757716826]},"#bb6688":{"lch":[53.8636991644475387,53.7950791600554297,347.554026547444039],"luv":[53.8636991644475387,52.5308766640911458,-11.5938578022448873],"rgb":[0.733333333333333282,0.4,0.533333333333333326],"xyz":[0.296876835552447,0.218464443850150958,0.259465608932926028],"hpluv":[347.554026547444039,126.731828674836166,53.8636991644475387],"hsluv":[347.554026547444039,41.3310399817098855,53.8636991644475387]},"#bb6699":{"lch":[54.4160596975863484,54.7145736516266723,332.78581188167891],"luv":[54.4160596975863484,48.6578429809048814,-25.0219680745716886],"rgb":[0.733333333333333282,0.4,0.6],"xyz":[0.309933799661519682,0.223687229493780115,0.328232286574043908],"hpluv":[332.78581188167891,127.589593839900076,54.4160596975863484],"hsluv":[332.78581188167891,45.0871489409768813,54.4160596975863484]},"#bb66aa":{"lch":[55.0424859024436,59.2427277394444332,319.03138367428437],"luv":[55.0424859024436,44.7323366642012274,-38.8422301956323963],"rgb":[0.733333333333333282,0.4,0.66666666666666663],"xyz":[0.324991492626772238,0.22971030667988121,0.407536136191042508],"hpluv":[319.03138367428437,136.57661144398341,55.0424859024436],"hsluv":[319.03138367428437,48.8627280546895548,55.0424859024436]},"#bb66bb":{"lch":[55.7422560614222,66.7541112543564168,307.715012949244738],"luv":[55.7422560614222,40.8357821803987235,-52.8067255477370452],"rgb":[0.733333333333333282,0.4,0.733333333333333282],"xyz":[0.342129084734108913,0.236565343522815968,0.497794121289684255],"hpluv":[307.715012949244738,151.961230908585406,55.7422560614222],"hsluv":[307.715012949244738,52.5739577191036176,55.7422560614222]},"#bb66cc":{"lch":[56.5140206008290704,76.3075420390205466,299.031845144425],"luv":[56.5140206008290704,37.0317190732607671,-66.7195080506142801],"rgb":[0.733333333333333282,0.4,0.8],"xyz":[0.361421460177830611,0.24428229370030477,0.599400631959954411],"hpluv":[299.031845144425,171.336773989457299,56.5140206008290704],"hsluv":[299.031845144425,57.7422914315118732,56.5140206008290704]},"#bb66dd":{"lch":[57.3558903641351208,87.0819801731049523,292.529347086481266],"luv":[57.3558903641351208,33.3660351201831276,-80.4361794917420809],"rgb":[0.733333333333333282,0.4,0.866666666666666696],"xyz":[0.38293978572846421,0.252889623920558304,0.712730479859960409],"hpluv":[292.529347086481266,192.659130793538424,57.3558903641351208],"hsluv":[292.529347086481266,71.4699790991907,57.3558903641351208]},"#bb66ee":{"lch":[58.2655263288606164,98.4965661150924916,287.652756970849339],"luv":[58.2655263288606164,29.8688319231142287,-93.8585447149780805],"rgb":[0.733333333333333282,0.4,0.933333333333333348],"xyz":[0.40675196599463892,0.262414496027028321,0.838141295928483632],"hpluv":[287.652756970849339,214.510592558062115,58.2655263288606164],"hsluv":[287.652756970849339,85.5420625539119186,58.2655263288606164]},"#bb66ff":{"lch":[59.2402283004695533,110.175409569553764,283.948158265715847],"luv":[59.2402283004695533,26.5571064878979755,-106.926801919861816],"rgb":[0.733333333333333282,0.4,1],"xyz":[0.432923014404470341,0.272882915390961045,0.975975484220265477],"hpluv":[283.948158265715847,235.997431668916079,59.2402283004695533],"hsluv":[283.948158265715847,99.9999999999988205,59.2402283004695533]},"#997700":{"lch":[51.799451349173637,61.2288227532233265,61.7368019650066202],"luv":[51.799451349173637,28.9932293289078338,53.9292257391759406],"rgb":[0.6,0.466666666666666674,0],"xyz":[0.197331129475883132,0.19966620830666032,0.028146226367465537],"hpluv":[61.7368019650066202,149.992683828924328,51.799451349173637],"hsluv":[61.7368019650066202,100.000000000002373,51.799451349173637]},"#997711":{"lch":[51.8452237949875752,59.5195003520895298,61.1595916745536812],"luv":[51.8452237949875752,28.7105152364728049,52.1371003894409952],"rgb":[0.6,0.466666666666666674,0.0666666666666666657],"xyz":[0.198342794975520265,0.200070874506515173,0.0334743313322211702],"hpluv":[61.1595916745536812,145.676617799321178,51.8452237949875752],"hsluv":[61.1595916745536812,96.7355174862457687,51.8452237949875752]},"#997722":{"lch":[51.9299107218419778,56.4237897442973448,60.0184197539949],"luv":[51.9299107218419778,28.1961842142201746,48.8735024820856836],"rgb":[0.6,0.466666666666666674,0.133333333333333331],"xyz":[0.200218153113997266,0.200821017761906,0.0433512175282003628],"hpluv":[60.0184197539949,137.874516690543771,51.9299107218419778],"hsluv":[60.0184197539949,90.8032063934702762,51.9299107218419778]},"#997733":{"lch":[52.0688882655341843,51.532107019520943,57.9108306747127841],"luv":[52.0688882655341843,27.375836028403171,43.6591531710973797],"rgb":[0.6,0.466666666666666674,0.2],"xyz":[0.203305903846455027,0.2020561180548891,0.0596133713858115061],"hpluv":[57.9108306747127841,125.585333003110208,52.0688882655341843],"hsluv":[57.9108306747127841,81.359583819486275,52.0688882655341843]},"#997744":{"lch":[52.2685439893789265,44.9234500117750244,54.2507061045172563],"luv":[52.2685439893789265,26.2460613351246792,36.4590266649196622],"rgb":[0.6,0.466666666666666674,0.266666666666666663],"xyz":[0.207763899090673887,0.203839316152576694,0.0830921463386981446],"hpluv":[54.2507061045172563,109.061640425204757,52.2685439893789265],"hsluv":[54.2507061045172563,68.3925961892813632,52.2685439893789265]},"#997755":{"lch":[52.5337646967731615,36.9638675487782962,47.8040559904272229],"luv":[52.5337646967731615,24.8274523779219614,27.3847605902560787],"rgb":[0.6,0.466666666666666674,0.333333333333333315],"xyz":[0.213726313130035872,0.206224281768321527,0.11449419361267206],"hpluv":[47.8040559904272229,89.2849392346346,52.5337646967731615],"hsluv":[47.8040559904272229,52.1784042692219217,52.5337646967731615]},"#997766":{"lch":[52.8682223623880958,28.5307109293219519,35.7342712802299047],"luv":[52.8682223623880958,23.1593577603421643,16.6627012894371447],"rgb":[0.6,0.466666666666666674,0.4],"xyz":[0.221311308903544057,0.209258280077724818,0.154441838019816],"hpluv":[35.7342712802299047,68.4789688439394695,52.8682223623880958],"hsluv":[35.7342712802299047,33.2180784313787072,52.8682223623880958]},"#997777":{"lch":[53.2745272921510349,21.7835186536615062,12.1770506300626185],"luv":[53.2745272921510349,21.2933995119794766,4.59486911213486],"rgb":[0.6,0.466666666666666674,0.466666666666666674],"xyz":[0.230625321923745963,0.212983885285805641,0.203495639926213917],"hpluv":[12.1770506300626185,51.8857087556556777,53.2745272921510349],"hsluv":[12.1770506300626185,12.1864056638809046,53.2745272921510349]},"#997788":{"lch":[53.7543298043441524,21.0694932264164443,336.259644884191403],"luv":[53.7543298043441524,19.28657717102978,-8.48242216845644492],"rgb":[0.6,0.466666666666666674,0.533333333333333326],"xyz":[0.241765739025689819,0.217440052126583239,0.262168503329786085],"hpluv":[336.259644884191403,49.7370433553737143,53.7543298043441524],"hsluv":[336.259644884191403,17.3594920402921318,53.7543298043441524]},"#997799":{"lch":[54.308403390094881,28.1087123643927,307.715012949247921],"luv":[54.308403390094881,17.1950646022419384,-22.235769923906151],"rgb":[0.6,0.466666666666666674,0.6],"xyz":[0.254822703134762518,0.222662837770212396,0.330935180970904],"hpluv":[307.715012949247921,65.67699031054849,54.308403390094881],"hsluv":[307.715012949247921,22.7222383700086681,54.308403390094881]},"#9977aa":{"lch":[54.9367240193748785,39.361724048309469,292.510155009375],"luv":[54.9367240193748785,15.0695247856183894,-36.3628208860492137],"rgb":[0.6,0.466666666666666674,0.66666666666666663],"xyz":[0.269880396100015074,0.228685914956313491,0.41023903058790262],"hpluv":[292.510155009375,90.9181689788077847,54.9367240193748785],"hsluv":[292.510155009375,30.8964586946041671,54.9367240193748785]},"#9977bb":{"lch":[55.6385517902762388,52.2405182414828104,284.355371582691191],"luv":[55.6385517902762388,12.9522722169503091,-50.6093903397058824],"rgb":[0.6,0.466666666666666674,0.733333333333333282],"xyz":[0.287017988207351693,0.235540951799248249,0.500497015686544366],"hpluv":[284.355371582691191,119.143673365147691,55.6385517902762388],"hsluv":[284.355371582691191,44.025050152294007,55.6385517902762388]},"#9977cc":{"lch":[56.4125166695819615,65.6830300518217172,279.531250686135081],"luv":[56.4125166695819615,10.8761592408186605,-64.7763042860340192],"rgb":[0.6,0.466666666666666674,0.8],"xyz":[0.306310363651073447,0.243257901976737051,0.602103526356814522],"hpluv":[279.531250686135081,147.746441920881637,56.4125166695819615],"hsluv":[279.531250686135081,57.5215558896316352,56.4125166695819615]},"#9977dd":{"lch":[57.256707620000924,79.2159287347205,276.425234899334782],"luv":[57.256707620000924,8.86478593594131858,-78.718351962006011],"rgb":[0.6,0.466666666666666674,0.866666666666666696],"xyz":[0.327828689201707,0.251865232196990585,0.71543337425682052],"hpluv":[276.425234899334782,175.559960004438778,57.256707620000924],"hsluv":[276.425234899334782,71.3413917340773764,57.256707620000924]},"#9977ee":{"lch":[58.1687631275758434,92.5981917117116211,274.294200356840065],"luv":[58.1687631275758434,6.93354781471817905,-92.3382424728774822],"rgb":[0.6,0.466666666666666674,0.933333333333333348],"xyz":[0.351640869467881756,0.261390104303460602,0.840844190325343743],"hpluv":[274.294200356840065,202.000294664132923,58.1687631275758434],"hsluv":[274.294200356840065,85.4864748016987903,58.1687631275758434]},"#9977ff":{"lch":[59.1459606243173,105.700835267318482,272.760722153075335],"luv":[59.1459606243173,5.0910859147335179,-105.578157875659116],"rgb":[0.6,0.466666666666666674,1],"xyz":[0.377811917877713122,0.271858523667393326,0.978678378617125588],"hpluv":[272.760722153075335,226.773684284234889,59.1459606243173],"hsluv":[272.760722153075335,99.9999999999988,59.1459606243173]},"#bb7700":{"lch":[55.8465021194210323,78.9426527823167703,44.2288975260652037],"luv":[55.8465021194210323,56.5670601566064,55.0645996403160751],"rgb":[0.733333333333333282,0.466666666666666674,0],"xyz":[0.270895964056058,0.237598076137063796,0.0315945779884111572],"hpluv":[44.2288975260652037,179.372171604304526,55.8465021194210323],"hsluv":[44.2288975260652037,100.000000000002402,55.8465021194210323]},"#bb7711":{"lch":[55.8872675460691113,77.5581898683241775,43.5811171927028127],"luv":[55.8872675460691113,56.1830827877517081,53.4671303149482782],"rgb":[0.733333333333333282,0.466666666666666674,0.0666666666666666657],"xyz":[0.271907629555695085,0.238002742336918649,0.0369226829531667869],"hpluv":[43.5811171927028127,176.097874689063588,55.8872675460691113],"hsluv":[43.5811171927028127,97.2747266570755613,55.8872675460691113]},"#bb7722":{"lch":[55.9627137258116534,75.0570685818031365,42.3362918908129799],"luv":[55.9627137258116534,55.4825342436315907,50.549499878809371],"rgb":[0.733333333333333282,0.466666666666666674,0.133333333333333331],"xyz":[0.273782987694172142,0.238752885592309477,0.0467995691491459864],"hpluv":[42.3362918908129799,170.189263625481374,55.9627137258116534],"hsluv":[42.3362918908129799,92.3060252972229875,55.9627137258116534]},"#bb7733":{"lch":[56.086591241629975,71.12386069085467,40.1553843778465094],"luv":[56.086591241629975,54.3598535070873652,45.8651271257379562],"rgb":[0.733333333333333282,0.466666666666666674,0.2],"xyz":[0.276870738426629848,0.239987985885292576,0.0630617230067571366],"hpluv":[40.1553843778465094,160.914656808849855,56.086591241629975],"hsluv":[40.1553843778465094,84.3528141134219425,56.086591241629975]},"#bb7744":{"lch":[56.2646940492590346,65.8532423012147632,36.6949041745596887],"luv":[56.2646940492590346,52.8030258036740747,39.3508575199960617],"rgb":[0.733333333333333282,0.466666666666666674,0.266666666666666663],"xyz":[0.281328733670848763,0.24177118398298017,0.0865404979596437751],"hpluv":[36.6949041745596887,148.518490760970963,56.2646940492590346],"hsluv":[36.6949041745596887,73.3442464951488517,56.2646940492590346]},"#bb7755":{"lch":[56.5015366957073866,59.5720019456390375,31.4313823601585],"luv":[56.5015366957073866,50.8307220514796256,31.0654327434279267],"rgb":[0.733333333333333282,0.466666666666666674,0.333333333333333315],"xyz":[0.287291147710210748,0.244156149598725,0.117942545233617677],"hpluv":[31.4313823601585,133.789263155984059,56.5015366957073866],"hsluv":[31.4313823601585,59.433527841274838,56.5015366957073866]},"#bb7766":{"lch":[56.8006139195957758,52.9060784141758376,23.584548946691168],"luv":[56.8006139195957758,48.4868685528452588,21.1678225404983067],"rgb":[0.733333333333333282,0.466666666666666674,0.4],"xyz":[0.294876143483718933,0.247190147908128294,0.157890189640761625],"hpluv":[23.584548946691168,118.193030459121616,56.8006139195957758],"hsluv":[23.584548946691168,42.9582981176577476,56.8006139195957758]},"#bb7777":{"lch":[57.1645375630264851,46.8887603377642677,12.1770506300621175],"luv":[57.1645375630264851,45.8337848153679062,9.89040016939892652],"rgb":[0.733333333333333282,0.466666666666666674,0.466666666666666674],"xyz":[0.304190156503920839,0.250915753116209117,0.206943991547159534],"hpluv":[12.1770506300621175,104.083378979503351,57.1645375630264851],"hsluv":[12.1770506300621175,30.9338815185941769,57.1645375630264851]},"#bb7788":{"lch":[57.5951231639082408,43.0166042307866761,356.679907444569722],"luv":[57.5951231639082408,42.9444038116514264,-2.49126891562360298],"rgb":[0.733333333333333282,0.466666666666666674,0.533333333333333326],"xyz":[0.315330573605864639,0.255371919956986715,0.265616854950731729],"hpluv":[356.679907444569722,94.7741152880685149,57.5951231639082408],"hsluv":[356.679907444569722,32.9204937798227419,57.5951231639082408]},"#bb7799":{"lch":[58.0934559183715322,42.8683503206465062,338.533521874652],"luv":[58.0934559183715322,39.8946515879682408,-15.6879646190414519],"rgb":[0.733333333333333282,0.466666666666666674,0.6],"xyz":[0.328387537714937339,0.260594705600615872,0.334383532591849608],"hpluv":[338.533521874652,93.6373004736019823,58.0934559183715322],"hsluv":[338.533521874652,34.9811369830312131,58.0934559183715322]},"#bb77aa":{"lch":[58.6599497668646706,47.0820583870944276,321.324781752589786],"luv":[58.6599497668646706,36.7569990603765,-29.4218157502430451],"rgb":[0.733333333333333282,0.466666666666666674,0.66666666666666663],"xyz":[0.343445230680189895,0.266617782786717,0.413687382208848209],"hpluv":[321.324781752589786,101.848135129910219,58.6599497668646706],"hsluv":[321.324781752589786,37.0556810629478051,58.6599497668646706]},"#bb77bb":{"lch":[59.2944060970233693,54.9189596898792303,307.71501294924542],"luv":[59.2944060970233693,33.5958135510894706,-43.4443718479046765],"rgb":[0.733333333333333282,0.466666666666666674,0.733333333333333282],"xyz":[0.360582822787526569,0.273472819629651753,0.50394536730749],"hpluv":[307.71501294924542,117.529775077760561,59.2944060970233693],"hsluv":[307.71501294924542,40.6617226560308467,59.2944060970233693]},"#bb77cc":{"lch":[59.9960747587738155,65.1135012197087519,297.896140559284788],"luv":[59.9960747587738155,30.4646722292654815,-57.5471266620014177],"rgb":[0.733333333333333282,0.466666666666666674,0.8],"xyz":[0.379875198231248268,0.281189769807140555,0.605551877977760111],"hpluv":[297.896140559284788,137.716994859863917,59.9960747587738155],"hsluv":[297.896140559284788,53.5682479917909,59.9960747587738155]},"#bb77dd":{"lch":[60.7637179337253599,76.6332290650186394,290.953982706702106],"luv":[60.7637179337253599,27.4054240934965065,-71.5653165100750357],"rgb":[0.733333333333333282,0.466666666666666674,0.866666666666666696],"xyz":[0.401393523781881867,0.289797100027394061,0.718881725877766109],"hpluv":[290.953982706702106,160.033945707839,60.7637179337253599],"hsluv":[290.953982706702106,68.5485010485900119,60.7637179337253599]},"#bb77ee":{"lch":[61.5956761624293563,88.8082274030350902,285.979672103614405],"luv":[61.5956761624293563,24.4485758512518743,-85.3766267389077456],"rgb":[0.733333333333333282,0.466666666666666674,0.933333333333333348],"xyz":[0.425205704048056576,0.299321972133864078,0.844292541946289332],"hpluv":[285.979672103614405,182.954165183101395,61.5956761624293563],"hsluv":[285.979672103614405,84.0163684558434909,61.5956761624293563]},"#bb77ff":{"lch":[62.4899351736807773,101.23109143545085,282.328516880108566],"luv":[62.4899351736807773,21.6145233767131266,-98.8966442929694693],"rgb":[0.733333333333333282,0.466666666666666674,1],"xyz":[0.451376752457888,0.309790391497796802,0.982126730238071177],"hpluv":[282.328516880108566,205.562159598045383,62.4899351736807773],"hsluv":[282.328516880108566,99.9999999999986784,62.4899351736807773]},"#998800":{"lch":[56.4673516485332527,62.834492950420568,74.7562721675545561],"luv":[56.4673516485332527,16.5207966112614884,60.6237311922136897],"rgb":[0.6,0.533333333333333326,0],"xyz":[0.219403499200853586,0.243810947756601892,0.0355036829424554834],"hpluv":[74.7562721675545561,141.201731332299261,56.4673516485332527],"hsluv":[74.7562721675545561,100.000000000002331,56.4673516485332527]},"#998811":{"lch":[56.5074221469723881,61.2259080808398366,74.51872844438833],"luv":[56.5074221469723881,16.3426261455871646,59.0044946676862878],"rgb":[0.6,0.533333333333333326,0.0666666666666666657],"xyz":[0.220415164700490718,0.244215613956456745,0.0408317879072111131],"hpluv":[74.51872844438833,137.489352382480689,56.5074221469723881],"hsluv":[74.51872844438833,97.3110722480099781,56.5074221469723881]},"#998822":{"lch":[56.5815852437789744,58.2905156727598666,74.0508275651119],"luv":[56.5815852437789744,16.0173304476746452,56.0466711119068961],"rgb":[0.6,0.533333333333333326,0.133333333333333331],"xyz":[0.222290522838967719,0.244965757211847573,0.0507086741031903127],"hpluv":[74.0508275651119,130.726042229432494,56.5815852437789744],"hsluv":[74.0508275651119,92.4075523300517574,56.5815852437789744]},"#998833":{"lch":[56.7033645714083,53.5858970619529273,73.1917859227149],"luv":[56.7033645714083,15.4953822971072128,51.2966031175623911],"rgb":[0.6,0.533333333333333326,0.2],"xyz":[0.22537827357142548,0.246200857504830672,0.066970827960801449],"hpluv":[73.1917859227149,119.917068416956084,56.7033645714083],"hsluv":[73.1917859227149,84.5557602276611533,56.7033645714083]},"#998844":{"lch":[56.8784692361674189,47.0662938677721456,71.7105236832421156],"luv":[56.8784692361674189,14.7702533586865563,44.6886521856241927],"rgb":[0.6,0.533333333333333326,0.266666666666666663],"xyz":[0.22983626881564434,0.247984055602518266,0.0904496029136880875],"hpluv":[71.7105236832421156,105.00293267331034,56.8784692361674189],"hsluv":[71.7105236832421156,73.6816499137771075,56.8784692361674189]},"#998855":{"lch":[57.1113583918905761,38.8337969655052433,69.1066660847648393],"luv":[57.1113583918905761,13.8492700909341142,36.2803184206870242],"rgb":[0.6,0.533333333333333326,0.333333333333333315],"xyz":[0.235798682855006325,0.250369021218263099,0.121851650187662],"hpluv":[69.1066660847648393,86.2832891510872599,57.1113583918905761],"hsluv":[69.1066660847648393,59.9309888570698774,57.1113583918905761]},"#998866":{"lch":[57.4054971647218224,29.1657433305745144,64.0747883902216],"luv":[57.4054971647218224,12.7511922431808031,26.2306629806110223],"rgb":[0.6,0.533333333333333326,0.4],"xyz":[0.24338367862851451,0.253403019527666418,0.161799294594805965],"hpluv":[64.0747883902216,64.4701815948561574,57.4054971647218224],"hsluv":[64.0747883902216,43.6310875702010321,57.4054971647218224]},"#998877":{"lch":[57.7634914296009612,18.7238256654584347,52.0945218145914097],"luv":[57.7634914296009612,11.5031815844705712,14.773573060880608],"rgb":[0.6,0.533333333333333326,0.466666666666666674],"xyz":[0.252697691648716416,0.257128624735747213,0.210853096501203874],"hpluv":[52.0945218145914097,41.1320618043462858,57.7634914296009612],"hsluv":[52.0945218145914097,25.2418236256697028,57.7634914296009612]},"#998888":{"lch":[58.1871725604667489,10.3706980586515272,12.1770506300640946],"luv":[58.1871725604667489,10.1373621264743505,2.18752539195365081],"rgb":[0.6,0.533333333333333326,0.533333333333333326],"xyz":[0.263838108750660272,0.261584791576524811,0.269525959904776],"hpluv":[12.1770506300640946,22.6162221883482317,58.1871725604667489],"hsluv":[12.1770506300640946,7.14421708061451799,58.1871725604667489]},"#998899":{"lch":[58.6776613659523605,14.2013195506443459,307.715012949254117],"luv":[58.6776613659523605,8.6874348403017283,-11.2341422847952668],"rgb":[0.6,0.533333333333333326,0.6],"xyz":[0.276895072859732971,0.266807577220153969,0.338292637545893948],"hpluv":[307.715012949254117,30.7110899398720818,58.6776613659523605],"hsluv":[307.715012949254117,10.6251017733449729,58.6776613659523605]},"#9988aa":{"lch":[59.2354248002074399,26.2127450059066938,285.910383521223935],"luv":[59.2354248002074399,7.18579172527609789,-25.2085778659891844],"rgb":[0.6,0.533333333333333326,0.66666666666666663],"xyz":[0.291952765824985527,0.272830654406255091,0.417596487162892549],"hpluv":[285.910383521223935,56.1526584479988173,59.2354248002074399],"hsluv":[285.910383521223935,23.5088603674401817,59.2354248002074399]},"#9988bb":{"lch":[59.8603319378123189,39.8857557696632696,278.160160819701673],"luv":[59.8603319378123189,5.66141142610705117,-39.4819190767314581],"rgb":[0.6,0.533333333333333326,0.733333333333333282],"xyz":[0.309090357932322146,0.279685691249189849,0.507854472261534351],"hpluv":[278.160160819701673,84.5508603994872,59.8603319378123189],"hsluv":[278.160160819701673,37.7262541103550291,59.8603319378123189]},"#9988cc":{"lch":[60.55171199345871,53.9990869041691823,274.395593429514747],"luv":[60.55171199345871,4.13861667015410095,-53.8402566723222264],"rgb":[0.6,0.533333333333333326,0.8],"xyz":[0.3283827333760439,0.287402641426678651,0.609460982931804507],"hpluv":[274.395593429514747,113.161661700826286,60.55171199345871],"hsluv":[274.395593429514747,52.5240219153236723,60.55171199345871]},"#9988dd":{"lch":[61.3084150605589855,68.1648195931338563,272.216747448240312],"luv":[61.3084150605589855,2.63660773112319324,-68.1138086575451],"rgb":[0.6,0.533333333333333326,0.866666666666666696],"xyz":[0.349901058926677444,0.296009971646932157,0.722790830831810505],"hpluv":[272.216747448240312,141.084572716849891,61.3084150605589855],"hsluv":[272.216747448240312,67.8395486149695,61.3084150605589855]},"#9988ee":{"lch":[62.128875020953032,82.18421866163294,270.815422264053723],"luv":[62.128875020953032,1.1695901512833331,-82.1758958326656597],"rgb":[0.6,0.533333333333333326,0.933333333333333348],"xyz":[0.373713239192852154,0.305534843753402174,0.848201646900333728],"hpluv":[270.815422264053723,167.854994169255662,62.128875020953032],"hsluv":[270.815422264053723,83.6558877567472905,62.128875020953032]},"#9988ff":{"lch":[63.0111734122257303,95.9388777898474387,269.8490772999765],"luv":[63.0111734122257303,-0.252712116882344406,-95.9385449554102],"rgb":[0.6,0.533333333333333326,1],"xyz":[0.399884287602683575,0.316003263117334898,0.986035835192115462],"hpluv":[269.8490772999765,193.204124490752207,63.0111734122257303],"hsluv":[269.8490772999765,99.9999999999985363,63.0111734122257303]},"#bb8800":{"lch":[60.0458653136574,74.8864062555341832,55.056379834278971],"luv":[60.0458653136574,42.8926945435799,61.3855894869476728],"rgb":[0.733333333333333282,0.533333333333333326,0],"xyz":[0.292968333781028434,0.281742815587005313,0.038952034563401107],"hpluv":[55.056379834278971,158.255644288368103,60.0458653136574],"hsluv":[55.056379834278971,100.000000000002288,60.0458653136574]},"#bb8811":{"lch":[60.0822560315187957,73.5298298886522161,54.5759299869630823],"luv":[60.0822560315187957,42.619621560372849,59.9183089005750773],"rgb":[0.733333333333333282,0.533333333333333326,0.0666666666666666657],"xyz":[0.293979999280665538,0.282147481786860166,0.0442801395281567367],"hpluv":[54.5759299869630823,155.294707870281485,60.0822560315187957],"hsluv":[54.5759299869630823,97.6878818876268866,60.0822560315187957]},"#bb8822":{"lch":[60.1496227929862499,71.0610449842002367,53.6488709316330343],"luv":[60.1496227929862499,42.1201645307819774,57.2325419158225586],"rgb":[0.733333333333333282,0.533333333333333326,0.133333333333333331],"xyz":[0.295855357419142595,0.282897625042250966,0.0541570257241359362],"hpluv":[53.6488709316330343,149.912555699661567,60.1496227929862499],"hsluv":[53.6488709316330343,93.46183514856709,60.1496227929862499]},"#bb8833":{"lch":[60.2602822329103844,67.1261991777524,52.0115270519145412],"luv":[60.2602822329103844,41.3163720666953154,52.9044801061090197],"rgb":[0.733333333333333282,0.533333333333333326,0.2],"xyz":[0.298943108151600301,0.284132725335234093,0.0704191795817470795],"hpluv":[52.0115270519145412,141.351435183858257,60.2602822329103844],"hsluv":[52.0115270519145412,86.668700859176,60.2602822329103844]},"#bb8844":{"lch":[60.4194844691316746,61.7320119628667285,49.374045706205429],"luv":[60.4194844691316746,40.1948297943626258,46.8531424643613406],"rgb":[0.733333333333333282,0.533333333333333326,0.266666666666666663],"xyz":[0.303401103395819216,0.285915923432921659,0.093897954534633718],"hpluv":[49.374045706205429,129.650066203053939,60.4194844691316746],"hsluv":[49.374045706205429,77.207197386412,60.4194844691316746]},"#bb8855":{"lch":[60.6313805732006585,55.0590005000961682,45.2500033552910708],"luv":[60.6313805732006585,38.7623447760430935,39.1020992215604082],"rgb":[0.733333333333333282,0.533333333333333326,0.333333333333333315],"xyz":[0.309363517435181201,0.28830088904866652,0.125300001808607619],"hpluv":[45.2500033552910708,115.231228654446355,60.6313805732006585],"hsluv":[45.2500033552910708,65.1528926573884775,60.6313805732006585]},"#bb8866":{"lch":[60.8992588402534949,47.519038379270981,38.7816256818529581],"luv":[60.8992588402534949,37.0429375720225096,29.7637327048519147],"rgb":[0.733333333333333282,0.533333333333333326,0.4],"xyz":[0.316948513208689386,0.291334887358069838,0.165247646215751581],"hpluv":[38.7816256818529581,99.0136254476035305,60.8992588402534949],"hsluv":[38.7816256818529581,50.7321114426118,60.8992588402534949]},"#bb8877":{"lch":[61.2256685857267087,39.8992767652027354,28.4701407483744688],"luv":[61.2256685857267087,35.0740840991728362,19.0200134329710231],"rgb":[0.733333333333333282,0.533333333333333326,0.466666666666666674],"xyz":[0.326262526228891292,0.295060492566150634,0.21430144812214949],"hpluv":[28.4701407483744688,82.6933933486175761,61.2256685857267087],"hsluv":[28.4701407483744688,34.2887258466009897,61.2256685857267087]},"#bb8888":{"lch":[61.6124959728340684,33.6595928281588499,12.1770506300623627],"luv":[61.6124959728340684,32.9022674846918903,7.09992843085263114],"rgb":[0.733333333333333282,0.533333333333333326,0.533333333333333326],"xyz":[0.337402943330835092,0.299516659406928232,0.272974311525721658],"hpluv":[12.1770506300623627,69.3233245158679,61.6124959728340684],"hsluv":[12.1770506300623627,26.8235367690150284,61.6124959728340684]},"#bb8899":{"lch":[62.0610184830546388,31.1131530731089718,349.361203223606594],"luv":[62.0610184830546388,30.5783355372127765,-5.74401339869088723],"rgb":[0.733333333333333282,0.533333333333333326,0.6],"xyz":[0.350459907439907847,0.304739445050557389,0.341740989166839593],"hpluv":[349.361203223606594,63.6157209963685091,62.0610184830546388],"hsluv":[349.361203223606594,28.7433747177793393,62.0610184830546388]},"#bb88aa":{"lch":[62.5719506337331097,34.1093853871598185,325.627133749050586],"luv":[62.5719506337331097,28.1532372220531357,-19.2573467904743723],"rgb":[0.733333333333333282,0.533333333333333326,0.66666666666666663],"xyz":[0.365517600405160348,0.310762522236658512,0.421044838783838193],"hpluv":[325.627133749050586,69.1725086761469328,62.5719506337331097],"hsluv":[325.627133749050586,30.7007491098828176,62.5719506337331097]},"#bb88bb":{"lch":[63.1454872588298,41.9701566603395477,307.715012949246614],"luv":[63.1454872588298,25.674586077978244,-33.2010493782640808],"rgb":[0.733333333333333282,0.533333333333333326,0.733333333333333282],"xyz":[0.382655192512497,0.31761755907959327,0.51130282388247994],"hpluv":[307.715012949246614,84.3407770596407,63.1454872588298],"hsluv":[307.715012949246614,32.6446535119142354,63.1454872588298]},"#bb88cc":{"lch":[63.7813474201422,52.7335158558763055,296.081540752202443],"luv":[63.7813474201422,23.1842810338905281,-47.3636232510092228],"rgb":[0.733333333333333282,0.533333333333333326,0.8],"xyz":[0.401947567956218776,0.325334509257082072,0.612909334552750096],"hpluv":[296.081540752202443,104.913738848088499,63.7813474201422],"hsluv":[296.081540752202443,48.441096457031712,63.7813474201422]},"#bb88dd":{"lch":[64.4788201663492089,64.9599578897110916,288.597779393076337],"luv":[64.4788201663492089,20.7171971389296665,-61.56779898404492],"rgb":[0.733333333333333282,0.533333333333333326,0.866666666666666696],"xyz":[0.423465893506852264,0.333941839477335578,0.726239182452756094],"hpluv":[288.597779393076337,127.840358269428478,64.4788201663492089],"hsluv":[288.597779393076337,64.9415793589177,64.4788201663492089]},"#bb88ee":{"lch":[65.2368122498474463,77.8541115668441392,283.595470556329246],"luv":[65.2368122498474463,18.300798164755431,-75.6726071600252084],"rgb":[0.733333333333333282,0.533333333333333326,0.933333333333333348],"xyz":[0.44727807377302703,0.343466711583805595,0.851649998521279317],"hpluv":[283.595470556329246,151.435657753316406,65.2368122498474463],"hsluv":[283.595470556329246,82.1213401763518789,65.2368122498474463]},"#bb88ff":{"lch":[66.0538972531437452,90.9819525935223652,280.100148709787334],"luv":[66.0538972531437452,15.9554396417090967,-89.5719802369565201],"rgb":[0.733333333333333282,0.533333333333333326,1],"xyz":[0.473449122182858395,0.353935130947738319,0.989484186813061162],"hpluv":[280.100148709787334,174.781769995450787,66.0538972531437452],"hsluv":[280.100148709787334,99.99999999999838,66.0538972531437452]},"#999900":{"lch":[61.2683639221826866,67.5422828804358772,85.8743202181747449],"luv":[61.2683639221826866,4.85929488236129092,67.3672563635114869],"rgb":[0.6,0.6,0],"xyz":[0.245273099653321058,0.295550148661537559,0.0441268830932777384],"hpluv":[85.8743202181747449,139.887458074797593,61.2683639221826866],"hsluv":[85.8743202181747449,100.000000000002359,61.2683639221826866]},"#999911":{"lch":[61.3036130280217861,66.0751339072958785,85.8743202181746881],"luv":[61.3036130280217861,4.75374160235953358,65.9039093047224185],"rgb":[0.6,0.6,0.0666666666666666657],"xyz":[0.24628476515295819,0.295954814861392412,0.0494549880580333681],"hpluv":[85.8743202181746881,136.770144995815713,61.3036130280217861],"hsluv":[85.8743202181746881,97.7715564197957718,61.3036130280217861]},"#999922":{"lch":[61.3688705786650104,63.38848415762304,85.8743202181745744],"luv":[61.3688705786650104,4.56045196477970372,63.2242216375825663],"rgb":[0.6,0.6,0.133333333333333331],"xyz":[0.248160123291435192,0.296704958116783213,0.0593318742540125676],"hpluv":[85.8743202181745744,131.069475710796667,61.3688705786650104],"hsluv":[85.8743202181745744,93.6963738669960691,61.3688705786650104]},"#999933":{"lch":[61.4760769955270945,59.0559618954583243,85.8743202181743754],"luv":[61.4760769955270945,4.24875087387181871,58.9029265097210484],"rgb":[0.6,0.6,0.2],"xyz":[0.251247874023892925,0.29794005840976634,0.0755940281116237178],"hpluv":[85.8743202181743754,121.898097720990123,61.4760769955270945],"hsluv":[85.8743202181743754,87.1401192062652683,61.4760769955270945]},"#999944":{"lch":[61.6303367515695,52.9921690524208,85.8743202181739775],"luv":[61.6303367515695,3.81249440942850049,52.8548471500809569],"rgb":[0.6,0.6,0.266666666666666663],"xyz":[0.255705869268111841,0.299723256507453906,0.0990728030645103563],"hpluv":[85.8743202181739775,109.10797160418339,61.6303367515695],"hsluv":[85.8743202181739775,77.9969649215058,61.6303367515695]},"#999955":{"lch":[61.8357003743425935,45.2147461889200173,85.8743202181734517],"luv":[61.8357003743425935,3.25295171251598125,45.0975784059909],"rgb":[0.6,0.6,0.333333333333333315],"xyz":[0.261668283307473826,0.302108222123198766,0.130474850338484272],"hpluv":[85.8743202181734517,92.7855058259100218,61.8357003743425935],"hsluv":[85.8743202181734517,66.3286810003367577,61.8357003743425935]},"#999966":{"lch":[62.0953945325949377,35.8293841981041083,85.874320218172457],"luv":[62.0953945325949377,2.57772666020637553,35.7365372872164784],"rgb":[0.6,0.6,0.4],"xyz":[0.269253279080982,0.305142220432602085,0.170422494745628206],"hpluv":[85.874320218172457,73.2182390722606,62.0953945325949377],"hsluv":[85.874320218172457,52.3408174542086542,62.0953945325949377]},"#999977":{"lch":[62.4119425079225749,25.0116267171883422,85.8743202181703],"luv":[62.4119425079225749,1.79944864939855109,24.9468125338318],"rgb":[0.6,0.6,0.466666666666666674],"xyz":[0.278567292101183916,0.30886782564068288,0.219476296652026115],"hpluv":[85.8743202181703,50.8526471570801775,62.4119425079225749],"hsluv":[85.8743202181703,36.3525421484824918,62.4119425079225749]},"#999988":{"lch":[62.7872374999600567,12.9853368609797517,85.8743202181639589],"luv":[62.7872374999600567,0.934223397011331502,12.9516871502363],"rgb":[0.6,0.6,0.533333333333333326],"xyz":[0.289707709203127717,0.313323992481460478,0.27814916005559831],"hpluv":[85.8743202181639589,26.2434647477884546,62.7872374999600567],"hsluv":[85.8743202181639589,18.7604129126121961,62.7872374999600567]},"#999999":{"lch":[63.2225945523589843,3.33307052034688283e-12,0],"luv":[63.2225945523589843,3.14807442966336163e-12,1.09498241031769098e-12],"rgb":[0.6,0.6,0.6],"xyz":[0.302764673312200472,0.318546778125089636,0.346915837696716189],"hpluv":[0,6.68977504875838914e-12,63.2225945523589843],"hsluv":[0,3.10313074237261963e-12,63.2225945523589843]},"#9999aa":{"lch":[63.7187933641432238,13.6904464527836414,265.874320218190064],"luv":[63.7187933641432238,-0.984952144759020598,-13.6549695477167123],"rgb":[0.6,0.6,0.66666666666666663],"xyz":[0.317822366277453,0.324569855311190758,0.42621968731371479],"hpluv":[265.874320218190064,27.2639887848552753,63.7187933641432238],"hsluv":[265.874320218190064,14.5770868731616492,63.7187933641432238]},"#9999bb":{"lch":[64.276118203606174,27.8450519356751158,265.874320218183641],"luv":[64.276118203606174,-2.00329797275791854,-27.7728953213882335],"rgb":[0.6,0.6,0.733333333333333282],"xyz":[0.334959958384789647,0.331424892154125517,0.516477672412356537],"hpluv":[265.874320218183641,54.9715165011475904,64.276118203606174],"hsluv":[265.874320218183641,30.0955931685464577,64.276118203606174]},"#9999cc":{"lch":[64.8943980299807635,42.2483295275786332,265.874320218181538],"luv":[64.8943980299807635,-3.03953438803302189,-42.138848804575062],"rgb":[0.6,0.6,0.8],"xyz":[0.354252333828511401,0.339141842331614318,0.618084183082626692],"hpluv":[265.874320218181538,82.6117192029769,64.8943980299807635],"hsluv":[265.874320218181538,46.4456834766813316,64.8943980299807635]},"#9999dd":{"lch":[65.5730481583578353,56.7175687031348,265.874320218180458],"luv":[65.5730481583578353,-4.08051637559571567,-56.570592941061804],"rgb":[0.6,0.6,0.866666666666666696],"xyz":[0.375770659379144889,0.347749172551867824,0.73141403098263269],"hpluv":[265.874320218180458,109.756831209262941,65.5730481583578353],"hsluv":[265.874320218180458,63.5568222493012627,65.5730481583578353]},"#9999ee":{"lch":[66.311113738117,71.1055788100052695,265.874320218179832],"luv":[66.311113738117,-5.11565437949467672,-70.9213185027987691],"rgb":[0.6,0.6,0.933333333333333348],"xyz":[0.399582839645319654,0.357274044658337842,0.856824847051155913],"hpluv":[265.874320218179832,136.068212717368169,66.311113738117],"hsluv":[265.874320218179832,81.4020980414818922,66.311113738117]},"#9999ff":{"lch":[67.1073146704137145,85.2999068143523829,265.874320218179378],"luv":[67.1073146704137145,-6.13685802391602486,-85.0788638624864149],"rgb":[0.6,0.6,1],"xyz":[0.425753888055151,0.367742464022270565,0.994659035342937758],"hpluv":[265.874320218179378,161.293929533565688,67.1073146704137145],"hsluv":[265.874320218179378,99.9999999999983,67.1073146704137145]},"#bb9900":{"lch":[64.4418646198176219,74.1135014806344117,66.2793330800256228],"luv":[64.4418646198176219,29.8142337654579457,67.8522112145111],"rgb":[0.733333333333333282,0.6,0],"xyz":[0.318837934233495934,0.333482016491941036,0.047575234714223362],"hpluv":[66.2793330800256228,145.938057142603384,64.4418646198176219],"hsluv":[66.2793330800256228,100.000000000002416,64.4418646198176219]},"#bb9911":{"lch":[64.4743890579801331,72.806990252212529,65.9899074816349],"luv":[64.4743890579801331,29.6249863695688624,66.5072778888794147],"rgb":[0.733333333333333282,0.6,0.0666666666666666657],"xyz":[0.319849599733133039,0.333886682691795889,0.0529033396789789917],"hpluv":[65.9899074816349,143.29306400111571,64.4743890579801331],"hsluv":[65.9899074816349,98.0367215419372542,64.4743890579801331]},"#bb9922":{"lch":[64.5346112536789,70.4161712525116599,65.4311312102869636],"luv":[64.5346112536789,29.2781077929992222,64.0408430450799671],"rgb":[0.733333333333333282,0.6,0.133333333333333331],"xyz":[0.321724957871610096,0.334636825947186689,0.0627802258749581843],"hpluv":[65.4311312102869636,138.458312961065701,64.5346112536789],"hsluv":[65.4311312102869636,94.4406497380354892,64.5346112536789]},"#bb9933":{"lch":[64.6335704733000398,66.566957174521292,64.4427367566729146],"luv":[64.6335704733000398,28.7178476591491503,60.0536844273559396],"rgb":[0.733333333333333282,0.6,0.2],"xyz":[0.324812708604067801,0.335871926240169816,0.0790423797325693345],"hpluv":[64.4427367566729146,130.689255588928205,64.6335704733000398],"hsluv":[64.4427367566729146,88.6394107340449153,64.6335704733000398]},"#bb9944":{"lch":[64.7760175449466828,61.1991201001527685,62.8442649593615386],"luv":[64.7760175449466828,27.9319304868930693,54.4530950480162872],"rgb":[0.733333333333333282,0.6,0.266666666666666663],"xyz":[0.329270703848286717,0.337655124337857382,0.102521154685455973],"hpluv":[62.8442649593615386,119.886494259466,64.7760175449466828],"hsluv":[62.8442649593615386,80.5164965868838607,64.7760175449466828]},"#bb9955":{"lch":[64.965753761967747,54.3684881208399204,60.3198292286154],"luv":[64.965753761967747,26.9209928274273445,47.235501963369849],"rgb":[0.733333333333333282,0.6,0.333333333333333315],"xyz":[0.335233117887648702,0.340040089953602243,0.133923201959429888],"hpluv":[60.3198292286154,106.194518749025775,64.965753761967747],"hsluv":[60.3198292286154,70.0945405394646883,64.965753761967747]},"#bb9966":{"lch":[65.2058459998609,46.2670609228556557,56.2614414361724258],"luv":[65.2058459998609,25.6969192719684436,38.4747874116176689],"rgb":[0.733333333333333282,0.6,0.4],"xyz":[0.342818113661156887,0.343074088263005561,0.17387084636657385],"hpluv":[56.2614414361724258,90.0377647384168,65.2058459998609],"hsluv":[56.2614414361724258,57.5177389460533064,65.2058459998609]},"#bb9977":{"lch":[65.4987393303808147,37.2952826673053153,49.3796729345645886],"luv":[65.4987393303808147,24.280853083902965,28.3086255892461871],"rgb":[0.733333333333333282,0.6,0.466666666666666674],"xyz":[0.352132126681358792,0.346799693471086357,0.222924648272971759],"hpluv":[49.3796729345645886,72.2537327682772172,65.4987393303808147],"hsluv":[49.3796729345645886,43.0302399575574199,65.4987393303808147]},"#bb9988":{"lch":[65.8463246780106601,28.3139420599436384,36.7022131699001193],"luv":[65.8463246780106601,22.7007755052872291,16.9220006628175241],"rgb":[0.733333333333333282,0.6,0.533333333333333326],"xyz":[0.363272543783302593,0.351255860311863954,0.281597511676543899],"hpluv":[36.7022131699001193,54.564242001153282,65.8463246780106601],"hsluv":[36.7022131699001193,26.9495650592517677,65.8463246780106601]},"#bb9999":{"lch":[66.2499853133799377,21.4719543680734333,12.1770506300627517],"luv":[66.2499853133799377,20.9888452793887552,4.52914983440691099],"rgb":[0.733333333333333282,0.6,0.6],"xyz":[0.376329507892375292,0.356478645955493112,0.350364189317661834],"hpluv":[12.1770506300627517,41.1268186121042731,66.2499853133799377],"hsluv":[12.1770506300627517,20.948078856310218,66.2499853133799377]},"#bb99aa":{"lch":[66.7106335886793715,21.0368039825091344,335.738246937474969],"luv":[66.7106335886793715,19.1787866223333445,-8.64414631375011489],"rgb":[0.733333333333333282,0.6,0.66666666666666663],"xyz":[0.391387200857627848,0.362501723141594234,0.429668038934660435],"hpluv":[335.738246937474969,40.0151105801343192,66.7106335886793715],"hsluv":[335.738246937474969,22.766845509204984,66.7106335886793715]},"#bb99bb":{"lch":[67.2287438260669887,28.2861274819753,307.715012949249171],"luv":[67.2287438260669887,17.3035955220760833,-22.3761165070024362],"rgb":[0.733333333333333282,0.6,0.733333333333333282],"xyz":[0.408524792964964523,0.369356759984529,0.519926024033302125],"hpluv":[307.715012949249171,53.3897422679679323,67.2287438260669887],"hsluv":[307.715012949249171,24.5905380245485432,67.2287438260669887]},"#bb99cc":{"lch":[67.8043844715017343,39.5775547497090656,292.889275489017223],"luv":[67.8043844715017343,15.393749985076461,-36.4611478338680044],"rgb":[0.733333333333333282,0.6,0.8],"xyz":[0.427817168408686221,0.377073710162017794,0.621532534703572281],"hpluv":[292.889275489017223,74.0679810995506642,67.8043844715017343],"hsluv":[292.889275489017223,42.0187450252511,67.8043844715017343]},"#bb99dd":{"lch":[68.4372510447458353,52.4777928084534082,284.879936967142157],"luv":[68.4372510447458353,13.4760025497769718,-50.718005612655638],"rgb":[0.733333333333333282,0.6,0.866666666666666696],"xyz":[0.449335493959319821,0.385681040382271301,0.734862382603578279],"hpluv":[284.879936967142157,97.3021261982971737,68.4372510447458353],"hsluv":[284.879936967142157,60.4059975969609724,68.4372510447458353]},"#bb99ee":{"lch":[69.1267004581107898,66.0165196934359244,280.096152477623832],"luv":[69.1267004581107898,11.5727364631099334,-64.9942508472035456],"rgb":[0.733333333333333282,0.6,0.933333333333333348],"xyz":[0.47314767422549453,0.395205912488741318,0.860273198672101502],"hpluv":[280.096152477623832,121.184234531677617,69.1267004581107898],"hsluv":[280.096152477623832,79.7264365589122548,69.1267004581107898]},"#bb99ff":{"lch":[69.8717866786541,79.7596884688517207,276.986638727898821],"luv":[69.8717866786541,9.70179942494587877,-79.1674364405365765],"rgb":[0.733333333333333282,0.6,1],"xyz":[0.499318722635325951,0.405674331852674042,0.998107386963883347],"hpluv":[276.986638727898821,144.850809586534439,69.8717866786541],"hsluv":[276.986638727898821,99.9999999999980247,69.8717866786541]},"#880000":{"lch":[27.3946073685119416,92.1289276169810876,12.1770506300617765],"luv":[27.3946073685119416,90.0560691570773,19.4330571920800175],"rgb":[0.533333333333333326,0,0],"xyz":[0.101531161901381561,0.0523520053554009795,0.00475927321412716],"hpluv":[12.1770506300617765,426.746789183125316,27.3946073685119416],"hsluv":[12.1770506300617765,100.000000000002245,27.3946073685119416]},"#880011":{"lch":[27.5061298630582485,89.4551794237446529,10.4692299831444977],"luv":[27.5061298630582485,87.9659862388495242,16.254672889999533],"rgb":[0.533333333333333326,0,0.0666666666666666657],"xyz":[0.10254282740101868,0.0527566715552558324,0.0100873781788827915],"hpluv":[10.4692299831444977,412.68181181873,27.5061298630582485],"hsluv":[10.4692299831444977,99.9999999999965,27.5061298630582485]},"#880022":{"lch":[27.711363673312789,85.0234292319238421,7.23413932290422057],"luv":[27.711363673312789,84.3466296586470463,10.7065206104973338],"rgb":[0.533333333333333326,0,0.133333333333333331],"xyz":[0.104418185539495709,0.0535068148106466537,0.0199642643748619876],"hpluv":[7.23413932290422057,389.331950846774873,27.711363673312789],"hsluv":[7.23413932290422057,99.9999999999967,27.711363673312789]},"#880033":{"lch":[28.0451389930846,79.0521177396887396,1.75350406004841131],"luv":[28.0451389930846,79.0150993176991392,2.41896650323101259],"rgb":[0.533333333333333326,0,0.2],"xyz":[0.107505936271953442,0.0547419151036297666,0.0362264182324731343],"hpluv":[1.75350406004841131,357.680479105960103,28.0451389930846],"hsluv":[1.75350406004841131,99.9999999999969589,28.0451389930846]},"#880044":{"lch":[28.5182895144164306,72.8806899851902585,353.674121255230034],"luv":[28.5182895144164306,72.4369406321056459,-8.0302306678086488],"rgb":[0.533333333333333326,0,0.266666666666666663],"xyz":[0.111963931516172316,0.0565251132013173396,0.0597051931853597728],"hpluv":[353.674121255230034,324.286096087098713,28.5182895144164306],"hsluv":[353.674121255230034,99.9999999999972857,28.5182895144164306]},"#880055":{"lch":[29.1358047874334787,68.1690091719341922,343.056201782139055],"luv":[29.1358047874334787,65.2098664506571453,-19.866734230132252],"rgb":[0.533333333333333326,0,0.333333333333333315],"xyz":[0.117926345555534315,0.0589100788170621725,0.0911072404593336743],"hpluv":[343.056201782139055,296.892542908362316,29.1358047874334787],"hsluv":[343.056201782139055,99.9999999999977405,29.1358047874334787]},"#880066":{"lch":[29.8977347275108087,66.3157421691867768,330.790160549998632],"luv":[29.8977347275108087,57.8829185884671915,-32.3627161272186115],"rgb":[0.533333333333333326,0,0.4],"xyz":[0.125511341329042486,0.0619440771264654841,0.13105488486647765],"hpluv":[330.790160549998632,281.460643767249167,29.8977347275108087],"hsluv":[330.790160549998632,99.9999999999981384,29.8977347275108087]},"#880077":{"lch":[30.8000475559674527,67.8890879971799,318.512376228514142],"luv":[30.8000475559674527,50.8556366042998462,-44.9736866918894549],"rgb":[0.533333333333333326,0,0.466666666666666674],"xyz":[0.13482535434924442,0.0656696823345463,0.180108686772875559],"hpluv":[318.512376228514142,279.697068124812404,30.8000475559674527],"hsluv":[318.512376228514142,99.9999999999984652,30.8000475559674527]},"#880088":{"lch":[31.8355421357531156,72.5162027692933862,307.715012949243601],"luv":[31.8355421357531156,44.3606514294377803,-57.3649045046986288],"rgb":[0.533333333333333326,0,0.533333333333333326],"xyz":[0.14596577145118822,0.0701258491753239,0.238781550176447727],"hpluv":[307.715012949243601,289.042783730483279,31.8355421357531156],"hsluv":[307.715012949243601,99.9999999999987921,31.8355421357531156]},"#880099":{"lch":[32.9947769935272675,79.3376809512942,299.026215263792551],"luv":[32.9947769935272675,38.4954159686478121,-69.3726932454703444],"rgb":[0.533333333333333326,0,0.6],"xyz":[0.159022735560260947,0.0753486348189530558,0.307548227817565634],"hpluv":[299.026215263792551,305.122076286487129,32.9947769935272675],"hsluv":[299.026215263792551,99.9999999999991189,32.9947769935272675]},"#8800aa":{"lch":[34.2669429307518527,87.5167556566874651,292.341813883439613],"luv":[34.2669429307518527,33.2678552259606306,-80.9470958672197298],"rgb":[0.533333333333333326,0,0.66666666666666663],"xyz":[0.174080428525513475,0.0813717120050541642,0.386852077434564234],"hpluv":[292.341813883439613,324.082197305514,34.2669429307518527],"hsluv":[292.341813883439613,99.9999999999993605,34.2669429307518527]},"#8800bb":{"lch":[35.6406160405817047,96.4510237672048589,287.271351738157534],"luv":[35.6406160405817047,28.6360630376966157,-92.1019862947753296],"rgb":[0.533333333333333326,0,0.733333333333333282],"xyz":[0.19121802063285015,0.0882267488479889228,0.477110062533206],"hpluv":[287.271351738157534,343.400533998367337,35.6406160405817047],"hsluv":[287.271351738157534,99.999999999999531,35.6406160405817047]},"#8800cc":{"lch":[37.1043554501127346,105.765919518381835,283.413875530142832],"luv":[37.1043554501127346,24.5359458020369345,-102.880596300606314],"rgb":[0.533333333333333326,0,0.8],"xyz":[0.210510396076571876,0.0959436990254777244,0.578716573203476137],"hpluv":[283.413875530142832,361.709723992276565,37.1043554501127346],"hsluv":[283.413875530142832,99.9999999999998,37.1043554501127346]},"#8800dd":{"lch":[38.6471386159700145,115.245648848701009,280.44740978906907],"luv":[38.6471386159700145,20.8978330626497737,-113.335079087825761],"rgb":[0.533333333333333326,0,0.866666666666666696],"xyz":[0.23202872162720542,0.104551029245731258,0.692046421103482134],"hpluv":[280.44740978906907,378.39598449622531,38.6471386159700145],"hsluv":[280.44740978906907,99.9999999999998863,38.6471386159700145]},"#8800ee":{"lch":[40.258648150966188,124.7713904223,278.13468614008417],"luv":[40.258648150966188,17.6552208530237813,-123.515962711485074],"rgb":[0.533333333333333326,0,0.933333333333333348],"xyz":[0.255840901893380157,0.114075901352201275,0.817457237172005358],"hpluv":[278.13468614008417,393.273926011730225,40.258648150966188],"hsluv":[278.13468614008417,99.9999999999999858,40.258648150966188]},"#8800ff":{"lch":[41.9294357887748674,134.280036872974534,276.305800055850909],"luv":[41.9294357887748674,14.7486383519278057,-133.467621426964229],"rgb":[0.533333333333333326,0,1],"xyz":[0.282011950303211578,0.124544320716133985,0.955291425463787203],"hpluv":[276.305800055850909,406.37947026199555,41.9294357887748674],"hsluv":[276.305800055850909,100.000000000000171,41.9294357887748674]},"#aa0000":{"lch":[35.0982840320529732,118.036634932245676,12.1770506300617765],"luv":[35.0982840320529732,115.380864984340803,24.8978549596859438],"rgb":[0.66666666666666663,0,0],"xyz":[0.165771937912151307,0.08547615548595483,0.00777055958963192815],"hpluv":[12.1770506300617765,426.746789183125145,35.0982840320529732],"hsluv":[12.1770506300617765,100.000000000002217,35.0982840320529732]},"#aa0011":{"lch":[35.178794604810534,115.883637018633408,11.1343823918443601],"luv":[35.178794604810534,113.702354404428164,22.3783808966644813],"rgb":[0.66666666666666663,0,0.0666666666666666657],"xyz":[0.166783603411788439,0.0858808216858096829,0.0130986645543875596],"hpluv":[11.1343823918443601,418.004049663923468,35.178794604810534],"hsluv":[11.1343823918443601,99.9999999999964473,35.178794604810534]},"#aa0022":{"lch":[35.327373324777,112.154849255399441,9.17432067350408431],"luv":[35.327373324777,110.720144559212301,17.8818287736043224],"rgb":[0.66666666666666663,0,0.133333333333333331],"xyz":[0.16865896155026544,0.0866309649412005,0.0229755507503667557],"hpluv":[9.17432067350408431,402.852473647417696,35.327373324777],"hsluv":[9.17432067350408431,99.9999999999965752,35.327373324777]},"#aa0033":{"lch":[35.5701485089931921,106.706281850707128,5.8788523359554592],"luv":[35.5701485089931921,106.14508040487398,10.9294323844098908],"rgb":[0.66666666666666663,0,0.2],"xyz":[0.171746712282723202,0.0878660652341836101,0.0392377046079779],"hpluv":[5.8788523359554592,380.665602767339294,35.5701485089931921],"hsluv":[5.8788523359554592,99.9999999999967741,35.5701485089931921]},"#aa0044":{"lch":[35.9166782648329104,100.198740700315142,1.0062433800652546],"luv":[35.9166782648329104,100.183288799466339,1.75962588401964615],"rgb":[0.66666666666666663,0,0.266666666666666663],"xyz":[0.176204707526942062,0.0896492633318711901,0.0627164795608645409],"hpluv":[1.0062433800652546,354.001763490246503,35.9166782648329104],"hsluv":[1.0062433800652546,99.999999999997,35.9166782648329104]},"#aa0055":{"lch":[36.3730398367095,93.6502679946689369,354.384147096436777],"luv":[36.3730398367095,93.2007806216229113,-9.16445235643848832],"rgb":[0.66666666666666663,0,0.333333333333333315],"xyz":[0.182167121566304047,0.092034228947616023,0.0941185268348384424],"hpluv":[354.384147096436777,326.714758289773386,36.3730398367095],"hsluv":[354.384147096436777,99.9999999999973,36.3730398367095]},"#aa0066":{"lch":[36.9423385777606228,88.2319659172366926,346.039412913085584],"luv":[36.9423385777606228,85.6257622699194,-21.2863488018886251],"rgb":[0.66666666666666663,0,0.4],"xyz":[0.189752117339812232,0.0950682272570193415,0.134066171241982418],"hpluv":[346.039412913085584,303.068568849792825,36.9423385777606228],"hsluv":[346.039412913085584,99.9999999999976126,36.9423385777606228]},"#aa0077":{"lch":[37.6250775946346891,84.9907340508927689,336.365700313169],"luv":[37.6250775946346891,77.8619577045834319,-34.0725757306260348],"rgb":[0.66666666666666663,0,0.466666666666666674],"xyz":[0.199066130360014137,0.0987938324651001509,0.183119973148380327],"hpluv":[336.365700313169,286.637826777930513,37.6250775946346891],"hsluv":[336.365700313169,99.9999999999979536,37.6250775946346891]},"#aa0088":{"lch":[38.4195160158879432,84.5572797483387717,326.161033183527252],"luv":[38.4195160158879432,70.2337789048813761,-47.0866208086656215],"rgb":[0.66666666666666663,0,0.533333333333333326],"xyz":[0.210206547461958,0.103249999305877749,0.241792836551952495],"hpluv":[326.161033183527252,279.279102381419364,38.4195160158879432],"hsluv":[326.161033183527252,99.9999999999982379,38.4195160158879432]},"#aa0099":{"lch":[39.3220484546604681,86.9871636461465272,316.374304421046759],"luv":[39.3220484546604681,62.9667468975572859,-60.0162929906574334],"rgb":[0.66666666666666663,0,0.6],"xyz":[0.223263511571030693,0.108472784949506906,0.310559514193070374],"hpluv":[316.374304421046759,280.710309296009257,39.3220484546604681],"hsluv":[316.374304421046759,99.9999999999986,39.3220484546604681]},"#aa00aa":{"lch":[40.3276007574525863,91.8597353001339627,307.715012949243601],"luv":[40.3276007574525863,56.1937545325413,-72.6668626056414411],"rgb":[0.66666666666666663,0,0.66666666666666663],"xyz":[0.238321204536283249,0.114495862135608,0.389863363810069],"hpluv":[307.715012949243601,289.042783730483393,40.3276007574525863],"hsluv":[307.715012949243601,99.9999999999988205,40.3276007574525863]},"#aa00bb":{"lch":[41.4300227805658849,98.5480850422065089,300.471226581677797],"luv":[41.4300227805658849,49.974285465742625,-84.9370111180893304],"rgb":[0.66666666666666663,0,0.733333333333333282],"xyz":[0.255458796643619868,0.121350898978542759,0.480121348908710721],"hpluv":[300.471226581677797,301.836908489583834,41.4300227805658849],"hsluv":[300.471226581677797,99.9999999999990621,41.4300227805658849]},"#aa00cc":{"lch":[42.6224565622471445,106.453892931925211,294.601049164416338],"luv":[42.6224565622471445,44.3164832708711813,-96.7909119228886681],"rgb":[0.66666666666666663,0,0.8],"xyz":[0.274751172087341622,0.129067849156031561,0.581727859578980877],"hpluv":[294.601049164416338,316.929304470761622,42.6224565622471445],"hsluv":[294.601049164416338,99.9999999999992895,42.6224565622471445]},"#aa00dd":{"lch":[43.8976622887243266,115.112632227118652,289.907671140995035],"luv":[43.8976622887243266,39.1964773946494063,-108.233794436426436],"rgb":[0.66666666666666663,0,0.866666666666666696],"xyz":[0.296269497637975165,0.137675179376285095,0.695057707478986875],"hpluv":[289.907671140995035,332.752186796280228,43.8976622887243266],"hsluv":[289.907671140995035,99.9999999999994174,43.8976622887243266]},"#aa00ee":{"lch":[45.2482911917969233,124.202454763835647,286.162342623679535],"luv":[45.2482911917969233,34.5729825657367655,-119.293581746345012],"rgb":[0.66666666666666663,0,0.933333333333333348],"xyz":[0.320081677904149875,0.14720005148275514,0.820468523547510098],"hpluv":[286.162342623679535,348.311106794177135,45.2482911917969233],"hsluv":[286.162342623679535,99.9999999999996589,45.2482911917969233]},"#aa00ff":{"lch":[46.667101462293175,133.514790614533382,283.159905061129905],"luv":[46.667101462293175,30.397247590160724,-130.008486845225434],"rgb":[0.66666666666666663,0,1],"xyz":[0.346252726313981296,0.157668470846687836,0.958302711839291943],"hpluv":[283.159905061129905,363.042841924949244,46.667101462293175],"hsluv":[283.159905061129905,99.9999999999998153,46.667101462293175]},"#881100":{"lch":[28.4751123640698864,88.1761994811112,13.8943544232398857],"luv":[28.4751123640698864,85.5961768878489124,21.1739617718743069],"rgb":[0.533333333333333326,0.0666666666666666657,0],"xyz":[0.103535562162309969,0.0563608058772578496,0.00542740663443661096],"hpluv":[13.8943544232398857,392.939109149716501,28.4751123640698864],"hsluv":[13.8943544232398857,100.000000000002331,28.4751123640698864]},"#881111":{"lch":[28.5813012406410962,85.6429421929893522,12.1770506300617782],"luv":[28.5813012406410962,83.7160154193071548,18.0649469909557752],"rgb":[0.533333333333333326,0.0666666666666666657,0.0666666666666666657],"xyz":[0.104547227661947087,0.0567654720771127,0.0107555115991922433],"hpluv":[12.1770506300617782,380.232213605760478,28.5813012406410962],"hsluv":[12.1770506300617782,89.1001931926906536,28.5813012406410962]},"#881122":{"lch":[28.776819878520115,81.4294437186752589,8.91447414891876377],"luv":[28.776819878520115,80.445837197505071,12.6183034487767767],"rgb":[0.533333333333333326,0.0666666666666666657,0.133333333333333331],"xyz":[0.106422585800424116,0.0575156153325035238,0.0206323977951714393],"hpluv":[8.91447414891876377,359.069069298387092,28.776819878520115],"hsluv":[8.91447414891876377,89.5522119422979,28.776819878520115]},"#881133":{"lch":[29.0950676619922959,75.7256767264573227,3.35964558590209394],"luv":[29.0950676619922959,75.5955308554484162,4.43777313107212557],"rgb":[0.533333333333333326,0.0666666666666666657,0.2],"xyz":[0.10951033653288185,0.0587507156254866367,0.0368945516527825826],"hpluv":[3.35964558590209394,330.265430862114329,29.0950676619922959],"hsluv":[3.35964558590209394,90.2199940579986475,29.0950676619922959]},"#881144":{"lch":[29.5467689283324617,69.8105982852884779,355.112641815866198],"luv":[29.5467689283324617,69.5567752183087435,-5.94765955478224484],"rgb":[0.533333333333333326,0.0666666666666666657,0.266666666666666663],"xyz":[0.113968331777100723,0.0605339137231742097,0.0603733266056692211],"hpluv":[355.112641815866198,299.81315922456514,29.5467689283324617],"hsluv":[355.112641815866198,91.0462468049379083,29.5467689283324617]},"#881155":{"lch":[30.1372440361953267,65.3247498846549,344.189828060851937],"luv":[30.1372440361953267,62.8534910411243928,-17.7977979378353552],"rgb":[0.533333333333333326,0.0666666666666666657,0.333333333333333315],"xyz":[0.119930745816462722,0.0629188793389190426,0.0917753738796431295],"hpluv":[344.189828060851937,275.05120204756264,30.1372440361953267],"hsluv":[344.189828060851937,91.9552565263170294,30.1372440361953267]},"#881166":{"lch":[30.8672249177773494,63.7021552959616173,331.50461515751158],"luv":[30.8672249177773494,55.9849923977636479,-30.3915319714745138],"rgb":[0.533333333333333326,0.0666666666666666657,0.4],"xyz":[0.127515741589970893,0.0659528776483223611,0.131723018286787091],"hpluv":[331.50461515751158,261.876101180723595,30.8672249177773494],"hsluv":[331.50461515751158,92.8754029221989299,30.8672249177773494]},"#881177":{"lch":[31.7336031237729514,65.5512880923603376,318.81152503011009],"luv":[31.7336031237729514,49.3304506912780525,-43.1680206305895737],"rgb":[0.533333333333333326,0.0666666666666666657,0.466666666666666674],"xyz":[0.136829754610172827,0.0696784828564031705,0.180776820193185],"hpluv":[318.81152503011009,262.120610410187965,31.7336031237729514],"hsluv":[318.81152503011009,93.7528273751248094,31.7336031237729514]},"#881188":{"lch":[32.7302234117729114,70.4946015177073377,307.715012949243658],"luv":[32.7302234117729114,43.1239685223607268,-55.7656900075914663],"rgb":[0.533333333333333326,0.0666666666666666657,0.533333333333333326],"xyz":[0.147970171712116627,0.0741346496971807684,0.239449683596757168],"hpluv":[307.715012949243658,273.304143969878908,32.7302234117729114],"hsluv":[307.715012949243658,94.5549099834012736,32.7302234117729114]},"#881199":{"lch":[33.8487030992268245,77.6382380820710836,298.861624073140206],"luv":[33.8487030992268245,37.4756592651389795,-67.9946393117248249],"rgb":[0.533333333333333326,0.0666666666666666657,0.6],"xyz":[0.161027135821189354,0.0793574353408099259,0.308216361237875103],"hpluv":[298.861624073140206,291.053592363859707,33.8487030992268245],"hsluv":[298.861624073140206,95.267111116431,33.8487030992268245]},"#8811aa":{"lch":[35.0792182273937954,86.1162494337963551,292.107316515455238],"luv":[35.0792182273937954,32.4092110837954692,-79.7850327659882623],"rgb":[0.533333333333333326,0.0666666666666666657,0.66666666666666663],"xyz":[0.176084828786441883,0.0853805125269110343,0.387520210854873703],"hpluv":[292.107316515455238,311.511817997128389,35.0792182273937954],"hsluv":[292.107316515455238,95.8874450484264571,35.0792182273937954]},"#8811bb":{"lch":[36.4111998559147381,95.3124415598142,287.019214731984619],"luv":[36.4111998559147381,27.8972267898096504,-91.1383906678789515],"rgb":[0.533333333333333326,0.0666666666666666657,0.733333333333333282],"xyz":[0.193222420893778557,0.0922355493698457929,0.47777819595351545],"hpluv":[287.019214731984619,332.16504711372977,36.4111998559147381],"hsluv":[287.019214731984619,96.4212920970111753,36.4111998559147381]},"#8811cc":{"lch":[37.8339039869932847,104.849214202707898,283.169050576302368],"luv":[37.8339039869932847,23.8872658659353974,-102.091900993053514],"rgb":[0.533333333333333326,0.0666666666666666657,0.8],"xyz":[0.212514796337500284,0.0999524995473346,0.579384706623785606],"hpluv":[283.169050576302368,351.660305548048939,37.8339039869932847],"hsluv":[283.169050576302368,96.8775739500717776,37.8339039869932847]},"#8811dd":{"lch":[39.3368423655390274,114.513051177954694,280.22024610097435],"luv":[39.3368423655390274,20.3183376083265372,-112.696069349906494],"rgb":[0.533333333333333326,0.0666666666666666657,0.866666666666666696],"xyz":[0.234033121888133827,0.108559829767588129,0.692714554523791604],"hpluv":[280.22024610097435,369.398236331583689,39.3368423655390274],"hsluv":[280.22024610097435,97.2663289333616348,39.3368423655390274]},"#8811ee":{"lch":[40.9100807353410261,124.189527798253138,277.928390028110698],"luv":[40.9100807353410261,17.130123009315259,-123.002429652583771],"rgb":[0.533333333333333326,0.0666666666666666657,0.933333333333333348],"xyz":[0.257845302154308564,0.118084701874058146,0.818125370592314827],"hpluv":[277.928390028110698,385.206818333834917,40.9100807353410261],"hsluv":[277.928390028110698,97.5973562787359867,40.9100807353410261]},"#8811ff":{"lch":[42.5444231432324926,133.820472646418182,276.120297984259253],"luv":[42.5444231432324926,14.2674470621751119,-133.057727523202459],"rgb":[0.533333333333333326,0.0666666666666666657,1],"xyz":[0.28401635056414,0.128553121237990842,0.955959558884096672],"hpluv":[276.120297984259253,399.134479754608662,42.5444231432324926],"hsluv":[276.120297984259253,99.9999999999993605,42.5444231432324926]},"#aa1100":{"lch":[35.8849415951509485,114.659477700983,13.2232466646238507],"luv":[35.8849415951509485,111.619416231509064,26.2278810962561089],"rgb":[0.66666666666666663,0.0666666666666666657,0],"xyz":[0.167776338173079714,0.0894849560078117,0.00843869300994137816],"hpluv":[13.2232466646238507,405.449754626827882,35.8849415951509485],"hsluv":[13.2232466646238507,100.000000000002245,35.8849415951509485]},"#aa1111":{"lch":[35.9630348414680086,112.584844162769954,12.1770506300617871],"luv":[35.9630348414680086,110.051736997450746,23.747890832642895],"rgb":[0.66666666666666663,0.0666666666666666657,0.0666666666666666657],"xyz":[0.168788003672716846,0.089889622207666553,0.0137667979746970096],"hpluv":[12.1770506300617871,397.249101663635656,35.9630348414680086],"hsluv":[12.1770506300617871,93.0877775141683514,35.9630348414680086]},"#aa1122":{"lch":[36.1071812157442409,108.986817867719594,10.2082214608018411],"luv":[36.1071812157442409,107.261576994584843,19.3152936702042],"rgb":[0.66666666666666663,0.0666666666666666657,0.133333333333333331],"xyz":[0.170663361811193848,0.0906397654630573674,0.0236436841706762074],"hpluv":[10.2082214608018411,383.018466712830786,36.1071812157442409],"hsluv":[10.2082214608018411,93.272361347425246,36.1071812157442409]},"#aa1133":{"lch":[36.3427932754706546,103.718469067724868,6.89182233030552727],"luv":[36.3427932754706546,102.969049051934846,12.4457126390109512],"rgb":[0.66666666666666663,0.0666666666666666657,0.2],"xyz":[0.173751112543651609,0.0918748657560404802,0.0399058380282873507],"hpluv":[6.89182233030552727,362.140519718911037,36.3427932754706546],"hsluv":[6.89182233030552727,93.5557024333493388,36.3427932754706546]},"#aa1144":{"lch":[36.6792659124992824,97.4113439982971698,1.97455903872184],"luv":[36.6792659124992824,97.3535035649005778,3.35637947697775552],"rgb":[0.66666666666666663,0.0666666666666666657,0.266666666666666663],"xyz":[0.178209107787870469,0.0936580638537280602,0.0633846129811739822],"hpluv":[1.97455903872184,336.99870087691761,36.6792659124992824],"hsluv":[1.97455903872184,93.9250914747756696,36.6792659124992824]},"#aa1155":{"lch":[37.1226754299384396,91.055498296574811,355.267689161716703],"luv":[37.1226754299384396,90.7450919896636634,-7.51212685096688926],"rgb":[0.66666666666666663,0.0666666666666666657,0.333333333333333315],"xyz":[0.184171521827232454,0.0960430294694729,0.0947866602551479],"hpluv":[355.267689161716703,311.247759321881176,37.1226754299384396],"hsluv":[355.267689161716703,94.3576556410013154,37.1226754299384396]},"#aa1166":{"lch":[37.6762679798416,85.8108023849569577,346.783206271719791],"luv":[37.6762679798416,83.5378398512485205,-19.6194576616503156],"rgb":[0.66666666666666663,0.0666666666666666657,0.4],"xyz":[0.191756517600740639,0.0990770277788762116,0.134734304662291859],"hpluv":[346.783206271719791,289.010360822200312,37.6762679798416],"hsluv":[346.783206271719791,94.8263018378468558,37.6762679798416]},"#aa1177":{"lch":[38.3408051028578285,82.7345113545946163,336.916515476294876],"luv":[38.3408051028578285,76.110335477500783,-32.4378822148708],"rgb":[0.66666666666666663,0.0666666666666666657,0.466666666666666674],"xyz":[0.201070530620942545,0.102802632986957021,0.183788106568689769],"hpluv":[336.916515476294876,273.819772016881302,38.3408051028578285],"hsluv":[336.916515476294876,95.3051408978498387,38.3408051028578285]},"#aa1188":{"lch":[39.1148927869010379,82.477083595297529,326.495944929629673],"luv":[39.1148927869010379,68.7732486834780445,-45.5270203714912753],"rgb":[0.66666666666666663,0.0666666666666666657,0.533333333333333326],"xyz":[0.212210947722886401,0.107258799827734619,0.242460969972261936],"hpluv":[326.495944929629673,267.565723971153261,39.1148927869010379],"hsluv":[326.495944929629673,95.7730681487448,39.1148927869010379]},"#aa1199":{"lch":[39.9953287808464424,85.1038505069809617,316.515705271857257],"luv":[39.9953287808464424,61.7482074461545665,-58.5647013848890552],"rgb":[0.66666666666666663,0.0666666666666666657,0.6],"xyz":[0.2252679118319591,0.112481585471363776,0.311227647613379843],"hpluv":[316.515705271857257,270.00963724100518,39.9953287808464424],"hsluv":[316.515705271857257,96.2151887572794,39.9953287808464424]},"#aa11aa":{"lch":[40.9774666162921406,90.1875437006381588,307.715012949243601],"luv":[40.9774666162921406,55.1708175083225498,-71.3440532505540261],"rgb":[0.66666666666666663,0.0666666666666666657,0.66666666666666663],"xyz":[0.240325604797211656,0.118504662657464871,0.390531497230378444],"hpluv":[307.715012949243601,279.28060733669264,40.9774666162921406],"hsluv":[307.715012949243601,96.6225842874192864,40.9774666162921406]},"#aa11bb":{"lch":[42.0555802442747719,97.087212137786878,300.384453602166161],"luv":[42.0555802442747719,49.106684193967304,-83.7523750598249705],"rgb":[0.66666666666666663,0.0666666666666666657,0.733333333333333282],"xyz":[0.257463196904548275,0.12535969950039963,0.48078948232902019],"hpluv":[300.384453602166161,292.939359498794147,42.0555802442747719],"hsluv":[300.384453602166161,96.9911870522472697,42.0555802442747719]},"#aa11cc":{"lch":[43.2232098485165395,105.192683835863036,294.469145625450437],"luv":[43.2232098485165395,43.5711419401365,-95.7447456658814247],"rgb":[0.66666666666666663,0.0666666666666666657,0.8],"xyz":[0.276755572348270029,0.133076649677888431,0.582395992999290346],"hpluv":[294.469145625450437,308.821726609797679,43.2232098485165395],"hsluv":[294.469145625450437,97.3204020480748255,43.2232098485165395]},"#aa11dd":{"lch":[44.4734721926781518,114.032755796715193,289.757274940509092],"luv":[44.4734721926781518,38.5472014936014489,-107.320001172218454],"rgb":[0.66666666666666663,0.0666666666666666657,0.866666666666666696],"xyz":[0.298273897898903573,0.141683979898141965,0.695725840899296344],"hpluv":[289.757274940509092,325.362808980276498,44.4734721926781518],"hsluv":[289.757274940509092,97.611854654502622,44.4734721926781518]},"#aa11ee":{"lch":[45.7993244881172,123.283094749558884,286.008743686799619],"luv":[45.7993244881172,33.9995108001485136,-118.502129585840351],"rgb":[0.66666666666666663,0.0666666666666666657,0.933333333333333348],"xyz":[0.322086078165078282,0.151208852004612,0.821136656967819567],"hpluv":[286.008743686799619,341.573194884792258,45.7993244881172],"hsluv":[286.008743686799619,97.8684161167955153,45.7993244881172]},"#aa11ff":{"lch":[47.1937769411101868,132.735165800167636,283.011169167098501],"luv":[47.1937769411101868,29.8841269734434611,-129.327348983241365],"rgb":[0.66666666666666663,0.0666666666666666657,1],"xyz":[0.348257126574909703,0.161677271368544706,0.958970845259601412],"hpluv":[283.011169167098501,356.89510187446183,47.1937769411101868],"hsluv":[283.011169167098501,99.9999999999993321,47.1937769411101868]},"#882200":{"lch":[30.3496916993887922,81.7292062801124786,17.2000641303745212],"luv":[30.3496916993887922,78.0741152618852254,24.1680716080335465],"rgb":[0.533333333333333326,0.133333333333333331,0],"xyz":[0.107251185897077911,0.0637920533467938311,0.00666594787935922105],"hpluv":[17.2000641303745212,341.713647377264522,30.3496916993887922],"hsluv":[17.2000641303745212,100.000000000002359,30.3496916993887922]},"#882211":{"lch":[30.4474919309639347,79.3871193031655338,15.4743840495427136],"luv":[30.4474919309639347,76.5093230935452908,21.181080969170015],"rgb":[0.533333333333333326,0.133333333333333331,0.0666666666666666657],"xyz":[0.108262851396715029,0.064196719546648684,0.0119940528441148525],"hpluv":[15.4743840495427136,330.855109199112462,30.4474919309639347],"hsluv":[15.4743840495427136,90.2707057474005,30.4474919309639347]},"#882222":{"lch":[30.6277058928754826,75.4670009360781648,12.1770506300618102],"luv":[30.6277058928754826,73.7690281561900321,15.9185022906448506],"rgb":[0.533333333333333326,0.133333333333333331,0.133333333333333331],"xyz":[0.110138209535192058,0.0649468628020395,0.0218709390400940486],"hpluv":[12.1770506300618102,312.666930334371557,30.6277058928754826],"hsluv":[12.1770506300618102,73.2675530922876277,30.6277058928754826]},"#882233":{"lch":[30.9214262019897674,70.1124269978110135,6.50693872003014],"luv":[30.9214262019897674,69.6607724946186266,7.94538828354938],"rgb":[0.533333333333333326,0.133333333333333331,0.2],"xyz":[0.113225960267649792,0.0661819630950226112,0.0381330928977051953],"hpluv":[6.50693872003014,287.723152758323693,30.9214262019897674],"hsluv":[6.50693872003014,74.8097141082451458,30.9214262019897674]},"#882244":{"lch":[31.3391119188553589,64.5127804411509,357.965654494967],"luv":[31.3391119188553589,64.472119792654567,-2.29011128326569047],"rgb":[0.533333333333333326,0.133333333333333331,0.266666666666666663],"xyz":[0.117683955511868665,0.0679651611927101912,0.0616118678505918338],"hpluv":[357.965654494967,261.215173773686786,31.3391119188553589],"hsluv":[357.965654494967,76.7464797952550839,31.3391119188553589]},"#882255":{"lch":[31.8864840032734449,60.2907989794282599,346.464164292394514],"luv":[31.8864840032734449,58.6161449596217778,-14.1112717942230379],"rgb":[0.533333333333333326,0.133333333333333331,0.333333333333333315],"xyz":[0.123646369551230664,0.0703501268084550241,0.0930139151245657353],"hpluv":[346.464164292394514,239.929545755427228,31.8864840032734449],"hsluv":[346.464164292394514,78.9147131880069566,31.8864840032734449]},"#882266":{"lch":[32.565220274416383,58.9629659850378189,332.945096803324191],"luv":[32.565220274416383,52.5107124518348698,-26.8189566455043362],"rgb":[0.533333333333333326,0.133333333333333331,0.4],"xyz":[0.131231365324738836,0.0733841251178583426,0.132961559531709711],"hpluv":[332.945096803324191,229.754818264706444,32.565220274416383],"hsluv":[332.945096803324191,81.1505919454384923,32.565220274416383]},"#882277":{"lch":[33.3735533542235316,61.2256527964903086,319.411642653163199],"luv":[33.3735533542235316,46.4949769025583564,-39.8346291960518499],"rgb":[0.533333333333333326,0.133333333333333331,0.466666666666666674],"xyz":[0.140545378344940741,0.077109730325939152,0.18201536143810762],"hpluv":[319.411642653163199,232.79320602780777,33.3735533542235316],"hsluv":[319.411642653163199,83.3222334130424116,33.3735533542235316]},"#882288":{"lch":[34.3068967831130962,66.691064714973308,307.715012949243771],"luv":[34.3068967831130962,40.7972144472485709,-52.7568517461189046],"rgb":[0.533333333333333326,0.133333333333333331,0.533333333333333326],"xyz":[0.151685795446884597,0.0815658971667167498,0.240688224841679788],"hpluv":[307.715012949243771,246.675229855048,34.3068967831130962],"hsluv":[307.715012949243771,85.3421167175917,34.3068967831130962]},"#882299":{"lch":[35.3585028262625087,74.3915148492043699,298.539568373309862],"luv":[35.3585028262625087,35.5417034620318262,-65.3520068289902554],"rgb":[0.533333333333333326,0.133333333333333331,0.6],"xyz":[0.164742759555957297,0.0867886828103459074,0.309454902482797667],"hpluv":[298.539568373309862,266.973934190138948,35.3585028262625087],"hsluv":[298.539568373309862,87.1641407220543556,35.3585028262625087]},"#8822aa":{"lch":[36.5201138266519365,83.3993900511107142,291.653660077047903],"luv":[36.5201138266519365,30.7739719973965897,-77.5140045953036463],"rgb":[0.533333333333333326,0.133333333333333331,0.66666666666666663],"xyz":[0.179800452521209853,0.092811759996447,0.388758752099796268],"hpluv":[291.653660077047903,289.781114528802732,36.5201138266519365],"hsluv":[291.653660077047903,88.7734689989794532,36.5201138266519365]},"#8822bb":{"lch":[37.7825623664262196,93.0686060696910857,286.53575696187113],"luv":[37.7825623664262196,26.4885972028076893,-89.2195026548722],"rgb":[0.533333333333333326,0.133333333333333331,0.733333333333333282],"xyz":[0.196938044628546471,0.0996667968393817605,0.479016737198438],"hpluv":[286.53575696187113,312.57276028475934,37.7825623664262196],"hsluv":[286.53575696187113,90.1753980157506874,37.7825623664262196]},"#8822cc":{"lch":[39.1362858369643476,103.012880313051866,282.702767559286599],"luv":[39.1362858369643476,22.6518448072254479,-100.491529181421669],"rgb":[0.533333333333333326,0.133333333333333331,0.8],"xyz":[0.216230420072268226,0.107383747016870562,0.580623247868708225],"hpluv":[282.702767559286599,334.003678399645651,39.1362858369643476],"hsluv":[282.702767559286599,91.3862929083300628,39.1362858369643476]},"#8822dd":{"lch":[40.5717373677475379,113.020349666590874,279.789793007972776],"luv":[40.5717373677475379,19.2172965257181652,-111.374570495248548],"rgb":[0.533333333333333326,0.133333333333333331,0.866666666666666696],"xyz":[0.237748745622901769,0.115991077237124096,0.693953095768714223],"hpluv":[279.789793007972776,353.486121759760863,40.5717373677475379],"hsluv":[279.789793007972776,92.4273238443811209,40.5717373677475379]},"#8822ee":{"lch":[42.0796906219744145,122.982600065668066,277.538986095624125],"luv":[42.0796906219744145,16.1354126197819454,-121.919515986988074],"rgb":[0.533333333333333326,0.133333333333333331,0.933333333333333348],"xyz":[0.261560925889076534,0.125515949343594141,0.819363911837237446],"hpluv":[277.538986095624125,370.860397035002336,42.0796906219744145],"hsluv":[277.538986095624125,93.320628909539181,42.0796906219744145]},"#8822ff":{"lch":[43.6514473624058752,132.848943476626658,275.771185477405766],"luv":[43.6514473624058752,13.3587518063908028,-132.175585994657865],"rgb":[0.533333333333333326,0.133333333333333331,1],"xyz":[0.2877319742989079,0.135984368707526837,0.957198100129019291],"hpluv":[275.771185477405766,386.188007357759091,43.6514473624058752],"hsluv":[275.771185477405766,99.9999999999994,43.6514473624058752]},"#ffaa00":{"lch":[76.0766826449234799,103.646966048157225,46.9849230608437125],"luv":[76.0766826449234799,70.7070052858721,75.7839889059127785],"rgb":[1,0.66666666666666663,0],"xyz":[0.556131758114240538,0.500120923568095,0.0672444716650198171],"hpluv":[46.9849230608437125,173.218766512771339,76.0766826449234799],"hsluv":[46.9849230608437125,100.0000000000028,76.0766826449234799]},"#ffaa11":{"lch":[76.1015101579349533,102.726050652762069,46.6846637022245687],"luv":[76.1015101579349533,70.4714195905473275,74.7423608377930719],"rgb":[1,0.66666666666666663,0.0666666666666666657],"xyz":[0.557143423613877697,0.500525589767949919,0.0725725766297754538],"hpluv":[46.6846637022245687,171.896872437304751,76.1015101579349533],"hsluv":[46.6846637022245687,100.000000000002771,76.1015101579349533]},"#ffaa22":{"lch":[76.1474983763177,101.038792737361192,46.1176753587789605],"luv":[76.1474983763177,70.0380208569547591,72.8252241483965719],"rgb":[1,0.66666666666666663,0.133333333333333331],"xyz":[0.559018781752354643,0.501275733023340719,0.0824494628257546464],"hpluv":[46.1176753587789605,169.470349592440897,76.1474983763177],"hsluv":[46.1176753587789605,100.0000000000028,76.1474983763177]},"#ffaa33":{"lch":[76.2231174741888395,98.3169656691378577,45.1538509265191337],"luv":[76.2231174741888395,69.3336656617894533,69.7070193329597885],"rgb":[1,0.66666666666666663,0.2],"xyz":[0.56210653248481246,0.502510833316323846,0.0987116166833657827],"hpluv":[45.1538509265191337,165.543337136749699,76.2231174741888395],"hsluv":[45.1538509265191337,100.000000000002927,76.2231174741888395]},"#ffaa44":{"lch":[76.3320756204529118,94.5107446089494516,43.6926927141772694],"luv":[76.3320756204529118,68.3364903114306514,65.2870962629968119],"rgb":[1,0.66666666666666663,0.266666666666666663],"xyz":[0.56656452772903132,0.504294031414011412,0.122190391636252421],"hpluv":[43.6926927141772694,160.025535099593441,76.3320756204529118],"hsluv":[43.6926927141772694,100.000000000003,76.3320756204529118]},"#ffaa55":{"lch":[76.4774026026215,89.6489515946998807,41.6012791226812411],"luv":[76.4774026026215,67.0379860163697288,59.5217855318358247],"rgb":[1,0.66666666666666663,0.333333333333333315],"xyz":[0.572526941768393249,0.506678997029756162,0.153592438910226337],"hpluv":[41.6012791226812411,152.933128718005122,76.4774026026215],"hsluv":[41.6012791226812411,100.000000000003,76.4774026026215]},"#ffaa66":{"lch":[76.6616205587261,83.8466863985853905,38.6944265301345354],"luv":[76.6616205587261,65.4416029270402788,52.418159318716242],"rgb":[1,0.66666666666666663,0.4],"xyz":[0.58011193754190149,0.50971299533915948,0.193540083317370298],"hpluv":[38.6944265301345354,144.405277715469396,76.6616205587261],"hsluv":[38.6944265301345354,100.000000000003197,76.6616205587261]},"#ffaa77":{"lch":[76.8868341725165,77.3210793721064533,34.7099370327462324],"luv":[76.8868341725165,63.5614296008349058,44.0283315873505927],"rgb":[1,0.66666666666666663,0.466666666666666674],"xyz":[0.58942595056210334,0.513438600547240331,0.242593885223768208],"hpluv":[34.7099370327462324,134.738986801151128,76.8868341725165],"hsluv":[34.7099370327462324,100.000000000003354,76.8868341725165]},"#ffaa88":{"lch":[77.1547840912050873,70.4186738688562741,29.282319230158226],"luv":[77.1547840912050873,61.4205932059712723,34.4427112706728948],"rgb":[1,0.66666666666666663,0.533333333333333326],"xyz":[0.600566367664047251,0.517894767388017874,0.301266748627340375],"hpluv":[29.282319230158226,124.451835787871019,77.1547840912050873],"hsluv":[29.282319230158226,100.000000000003638,77.1547840912050873]},"#ffaa99":{"lch":[77.466881654564645,63.658531214354845,21.9370110659791244],"luv":[77.466881654564645,59.0493431107362383,23.7820031654092716],"rgb":[1,0.66666666666666663,0.6],"xyz":[0.613623331773119896,0.523117553031647087,0.370033426268458254],"hpluv":[21.9370110659791244,114.385173247539697,77.466881654564645],"hsluv":[21.9370110659791244,100.000000000003624,77.466881654564645]},"#ffaaaa":{"lch":[77.8242336850598,57.783013099698,12.1770506300621957],"luv":[77.8242336850598,56.482921905318662,12.1883606739193855],"rgb":[1,0.66666666666666663,0.66666666666666663],"xyz":[0.628681024738372507,0.529140630217748154,0.44933727588545691],"hpluv":[12.1770506300621957,105.841692205508735,77.8242336850598],"hsluv":[12.1770506300621957,100.000000000003837,77.8242336850598]},"#ffaabb":{"lch":[78.227662021793833,53.7597014753195,359.804273109779956],"luv":[78.227662021793833,53.7593877986938224,-0.183647012281759531],"rgb":[1,0.66666666666666663,0.733333333333333282],"xyz":[0.64581861684570907,0.535995667060682912,0.539595260984098601],"hpluv":[359.804273109779956,100.661858044669231,78.227662021793833],"hsluv":[359.804273109779956,100.000000000004135,78.227662021793833]},"#ffaacc":{"lch":[78.6777204654413254,52.5946111834740293,345.492217824016791],"luv":[78.6777204654413254,50.9175596191628586,-13.1755549397286202],"rgb":[1,0.66666666666666663,0.8],"xyz":[0.665110992289430825,0.543712617238171769,0.641201771654368757],"hpluv":[345.492217824016791,100.966318741741958,78.6777204654413254],"hsluv":[345.492217824016791,100.000000000004306,78.6777204654413254]},"#ffaadd":{"lch":[79.1747106956411244,54.8892328831665353,330.97422205899818],"luv":[79.1747106956411244,47.9952274547753177,-26.6324243745640352],"rgb":[1,0.66666666666666663,0.866666666666666696],"xyz":[0.686629317840064424,0.552319947458425275,0.754531619554374755],"hpluv":[330.97422205899818,108.36723319715793,79.1747106956411244],"hsluv":[330.97422205899818,100.000000000004704,79.1747106956411244]},"#ffaaee":{"lch":[79.718698064048283,60.5009523664383337,318.094564198374599],"luv":[79.718698064048283,45.0277239197174595,-40.4087777080146822],"rgb":[1,0.66666666666666663,0.933333333333333348],"xyz":[0.710441498106239133,0.561844819564895293,0.879942435622898],"hpluv":[318.094564198374599,123.247069988098687,79.718698064048283],"hsluv":[318.094564198374599,100.000000000004945,79.718698064048283]},"#ffaaff":{"lch":[80.3095277487323074,68.733917080261989,307.715012949245647],"luv":[80.3095277487323074,42.0468973903394,-54.3728772187255203],"rgb":[1,0.66666666666666663,1],"xyz":[0.736612546516070554,0.572313238928828,1.01777662391468],"hpluv":[307.715012949245647,144.979279509576116,80.3095277487323074],"hsluv":[307.715012949245647,100.000000000005301,80.3095277487323074]},"#aa2200":{"lch":[37.2831780533064929,108.910935722579069,15.2092016225530191],"luv":[37.2831780533064929,105.096262108869439,28.5721474641225],"rgb":[0.66666666666666663,0.133333333333333331,0],"xyz":[0.171491961907847656,0.0969162034773476816,0.00967723425486398912],"hpluv":[15.2092016225530191,370.67892165569458,37.2831780533064929],"hsluv":[15.2092016225530191,100.000000000002217,37.2831780533064929]},"#aa2211":{"lch":[37.3572350214345619,106.95640568906397,14.158492547926917],"luv":[37.3572350214345619,103.707370245599336,26.1620732103901794],"rgb":[0.66666666666666663,0.133333333333333331,0.0666666666666666657],"xyz":[0.172503627407484789,0.0973208696772025345,0.0150053392196196206],"hpluv":[14.158492547926917,363.305022455593,37.3572350214345619],"hsluv":[14.158492547926917,93.5777596020973732,37.3572350214345619]},"#aa2222":{"lch":[37.4939757158163331,103.55828406892158,12.1770506300617907],"luv":[37.4939757158163331,101.228270350344232,21.8438888748564],"rgb":[0.66666666666666663,0.133333333333333331,0.133333333333333331],"xyz":[0.17437898554596179,0.0980710129325933488,0.0248822254155988166],"hpluv":[12.1770506300617907,350.479546677114797,37.4939757158163331],"hsluv":[12.1770506300617907,82.128221128038831,37.4939757158163331]},"#aa2233":{"lch":[37.7176061419824791,98.5638584928897359,8.82735266140639],"luv":[37.7176061419824791,97.3963926843060506,15.125372494284127],"rgb":[0.66666666666666663,0.133333333333333331,0.2],"xyz":[0.177466736278419523,0.0993061132255764617,0.0411443792732099634],"hpluv":[8.82735266140639,331.598763076121088,37.7176061419824791],"hsluv":[8.82735266140639,82.8309253801110401,37.7176061419824791]},"#aa2244":{"lch":[38.0372287502177358,92.5577577991589209,3.83362915136278648],"luv":[38.0372287502177358,92.350650343690134,6.18836892123021798],"rgb":[0.66666666666666663,0.133333333333333331,0.266666666666666663],"xyz":[0.181924731522638411,0.101089311323264042,0.0646231542260966],"hpluv":[3.83362915136278648,308.775819843535,38.0372287502177358],"hsluv":[3.83362915136278648,83.7532195801290698,38.0372287502177358]},"#aa2255":{"lch":[38.4588905236098242,86.4856662057644172,356.973865768881865],"luv":[38.4588905236098242,86.3650670431288603,-4.56570407393633459],"rgb":[0.66666666666666663,0.133333333333333331,0.333333333333333315],"xyz":[0.187887145562000424,0.103474276939008875,0.0960252015000705],"hpluv":[356.973865768881865,285.355803984318584,38.4588905236098242],"hsluv":[356.973865768881865,84.8422496447961,38.4588905236098242]},"#aa2266":{"lch":[38.9860395203518237,81.4924101374980268,348.227712846231327],"luv":[38.9860395203518237,79.7783138580272464,-16.6262908668256522],"rgb":[0.66666666666666663,0.133333333333333331,0.4],"xyz":[0.195472141335508581,0.106508275248412193,0.135972845907214479],"hpluv":[348.227712846231327,265.245100213362434,38.9860395203518237],"hsluv":[348.227712846231327,86.0332228090823747,38.9860395203518237]},"#aa2277":{"lch":[39.619833929041036,78.6591168776988354,337.990195281021442],"luv":[39.619833929041036,72.9264197190586572,-29.4787037526953952],"rgb":[0.66666666666666663,0.133333333333333331,0.466666666666666674],"xyz":[0.204786154355710515,0.110233880456493,0.185026647813612388],"hpluv":[337.990195281021442,251.92759566726761,39.619833929041036],"hsluv":[337.990195281021442,87.2621982611374278,39.619833929041036]},"#aa2288":{"lch":[40.3594266716885386,78.6767938432408,327.148786779116733],"luv":[40.3594266716885386,66.0949636498191637,-42.6789605025813046],"rgb":[0.66666666666666663,0.133333333333333331,0.533333333333333326],"xyz":[0.215926571457654315,0.1146900472972706,0.243699511217184556],"hpluv":[327.148786779116733,247.366561360315984,40.3594266716885386],"hsluv":[327.148786779116733,88.4751585260979283,40.3594266716885386]},"#aa2299":{"lch":[41.2022629883412748,81.6302410017403162,316.790315261789033],"luv":[41.2022629883412748,59.4964385039503,-55.8898027492302489],"rgb":[0.66666666666666663,0.133333333333333331,0.6],"xyz":[0.228983535566727042,0.119912832940899758,0.312466188858302463],"hpluv":[316.790315261789033,251.402351399829286,41.2022629883412748],"hsluv":[316.790315261789033,89.6322731802278554,41.2022629883412748]},"#aa22aa":{"lch":[42.1443943233873242,87.0780915666379229,307.715012949243715],"luv":[42.1443943233873242,53.2686588598376076,-68.8842798769212834],"rgb":[0.66666666666666663,0.133333333333333331,0.66666666666666663],"xyz":[0.24404122853197957,0.125935910127000866,0.391770038475301063],"hpluv":[307.715012949243715,262.185344504614818,42.1443943233873242],"hsluv":[307.715012949243715,90.7081440057972515,42.1443943233873242]},"#aa22bb":{"lch":[43.1807973125030387,94.3504956605328573,300.218008125398399],"luv":[43.1807973125030387,47.4858085519839577,-81.5298351375283801],"rgb":[0.66666666666666663,0.133333333333333331,0.733333333333333282],"xyz":[0.261178820639316245,0.132790946969935625,0.48202802357394281],"hpluv":[300.218008125398399,277.263598469343151,43.1807973125030387],"hsluv":[300.218008125398399,91.6896384965505291,43.1807973125030387]},"#aa22cc":{"lch":[44.3056820912093627,102.813108633557576,294.217612554784239],"luv":[44.3056820912093627,42.1742864712375294,-93.764944769021767],"rgb":[0.66666666666666663,0.133333333333333331,0.8],"xyz":[0.280471196083037944,0.140507897147424426,0.583634534244213],"hpluv":[294.217612554784239,294.461411899371626,44.3056820912093627],"hsluv":[294.217612554784239,92.5728114271618097,44.3056820912093627]},"#aa22dd":{"lch":[45.5127751844210451,111.980933923074502,289.471886144522102],"luv":[45.5127751844210451,37.3282042805071441,-105.576203414769125],"rgb":[0.66666666666666663,0.133333333333333331,0.866666666666666696],"xyz":[0.301989521633671543,0.14911522736767796,0.696964382144219],"hpluv":[289.471886144522102,312.212361278410071,45.5127751844210451],"hsluv":[289.471886144522102,93.3598993754704622,45.5127751844210451]},"#aa22ee":{"lch":[46.7955661660676938,121.524022862348417,285.718434714393425],"luv":[46.7955661660676938,32.9220942551774698,-116.979587289842115],"rgb":[0.66666666666666663,0.133333333333333331,0.933333333333333348],"xyz":[0.325801701899846252,0.158640099474147978,0.822375198212742187],"hpluv":[285.718434714393425,329.531365671141714,46.7955661660676938],"hsluv":[285.718434714393425,94.0568560040361348,46.7955661660676938]},"#aa22ff":{"lch":[48.1475121680676921,131.233078667623346,282.730941389390409],"luv":[48.1475121680676921,28.9202258451599548,-128.006802450680539],"rgb":[0.66666666666666663,0.133333333333333331,1],"xyz":[0.351972750309677673,0.169108518838080701,0.960209386504524],"hpluv":[282.730941389390409,345.866733454918517,48.1475121680676921],"hsluv":[282.730941389390409,99.9999999999992,48.1475121680676921]},"#883300":{"lch":[33.1414787667816597,73.2165592554870841,22.9600016117944072],"luv":[33.1414787667816597,67.4161530625393084,28.5609323282788417],"rgb":[0.533333333333333326,0.2,0],"xyz":[0.113368907986088716,0.076027497524815621,0.00870518857569610102],"hpluv":[22.9600016117944072,280.334636286210525,33.1414787667816597],"hsluv":[22.9600016117944072,100.000000000002245,33.1414787667816597]},"#883311":{"lch":[33.2285118286029402,71.0572306739368287,21.2511434941679589],"luv":[33.2285118286029402,66.2253841559006844,25.7551650053430592],"rgb":[0.533333333333333326,0.2,0.0666666666666666657],"xyz":[0.114380573485725834,0.0764321637246704738,0.0140332935404517325],"hpluv":[21.2511434941679589,271.354302974885854,33.2285118286029402],"hsluv":[21.2511434941679589,91.7325092821930355,33.2285118286029402]},"#883322":{"lch":[33.389038834633638,67.403958774683133,17.9527330699243208],"luv":[33.389038834633638,64.1221355411587126,20.7760774002325519],"rgb":[0.533333333333333326,0.2,0.133333333333333331],"xyz":[0.116255931624202863,0.0771823069800612882,0.0239101797364309268],"hpluv":[17.9527330699243208,256.165602847605,33.389038834633638],"hsluv":[17.9527330699243208,77.1564226992543354,33.389038834633638]},"#883333":{"lch":[33.6510932573449324,62.3280121609532785,12.1770506300618564],"luv":[33.6510932573449324,60.9256605799824484,13.1470522486492083],"rgb":[0.533333333333333326,0.2,0.2],"xyz":[0.119343682356660596,0.0784174072730444,0.04017233359404207],"hpluv":[12.1770506300618564,235.030067027939708,33.6510932573449324],"hsluv":[12.1770506300618564,55.0748296144977,33.6510932573449324]},"#883344":{"lch":[34.0246284162643136,56.9037682047597428,3.23132728809417369],"luv":[34.0246284162643136,56.8132965471078748,3.20751794249172528],"rgb":[0.533333333333333326,0.2,0.266666666666666663],"xyz":[0.12380167760087947,0.080200605370731981,0.0636511085469287086],"hpluv":[3.23132728809417369,212.220318588139889,34.0246284162643136],"hsluv":[3.23132728809417369,58.083398150148156,34.0246284162643136]},"#883355":{"lch":[34.5156618951709859,52.7529688087382524,350.767304332875],"luv":[34.5156618951709859,52.0695471674777721,-8.46392201697997137],"rgb":[0.533333333333333326,0.2,0.333333333333333315],"xyz":[0.129764091640241469,0.0825855709864768139,0.0950531558209026239],"hpluv":[350.767304332875,193.941176615342812,34.5156618951709859],"hsluv":[350.767304332875,61.5291535706030714,34.5156618951709859]},"#883366":{"lch":[35.1268460128593318,51.5738240122621576,335.705329263136434],"luv":[35.1268460128593318,47.0065260432940519,-21.2189969741481157],"rgb":[0.533333333333333326,0.2,0.4],"xyz":[0.137349087413749654,0.0856195692958801324,0.135000800228046586],"hpluv":[335.705329263136434,186.307141954737205,35.1268460128593318],"hsluv":[335.705329263136434,65.1713869724459869,35.1268460128593318]},"#883377":{"lch":[35.8579115963162849,54.2604071268956929,320.552373035814298],"luv":[35.8579115963162849,41.9001950458929713,-34.4755773946224],"rgb":[0.533333333333333326,0.2,0.466666666666666674],"xyz":[0.14666310043395156,0.0893451745039609418,0.184054602134444495],"hpluv":[320.552373035814298,192.015984070736607,35.8579115963162849],"hsluv":[320.552373035814298,68.798738775930957,35.8579115963162849]},"#883388":{"lch":[36.7061150242973682,60.4128011412536097,307.715012949244056],"luv":[36.7061150242973682,36.9565850245806402,-47.7903480323547711],"rgb":[0.533333333333333326,0.2,0.533333333333333326],"xyz":[0.157803517535895388,0.0938013413447385397,0.242727465538016662],"hpluv":[307.715012949244056,208.847787272345244,36.7061150242973682],"hsluv":[307.715012949244056,72.2549736675254479,36.7061150242973682]},"#883399":{"lch":[37.6667130487112445,68.9141309342046213,297.955533412138379],"luv":[37.6667130487112445,32.3059919210196611,-60.8726566564636684],"rgb":[0.533333333333333326,0.2,0.6],"xyz":[0.170860481644968087,0.0990241269883677,0.311494143179134542],"hpluv":[297.955533412138379,232.161331922109071,37.6667130487112445],"hsluv":[297.955533412138379,75.4431641885032604,37.6667130487112445]},"#8833aa":{"lch":[38.7334497692602824,78.7159372772915162,290.848124870138179],"luv":[38.7334497692602824,28.0143748789862741,-73.5621749378178436],"rgb":[0.533333333333333326,0.2,0.66666666666666663],"xyz":[0.185918174610220643,0.105047204174468806,0.390797992796133142],"hpluv":[290.848124870138179,257.878905714084965,38.7334497692602824],"hsluv":[290.848124870138179,78.3166072053086282,38.7334497692602824]},"#8833bb":{"lch":[39.8990272727434743,89.1142300257769193,285.691107407551272],"luv":[39.8990272727434743,24.1010351313191435,-85.7932753698447073],"rgb":[0.533333333333333326,0.2,0.733333333333333282],"xyz":[0.20305576671755729,0.111902241017403564,0.481055977894774889],"hpluv":[285.691107407551272,283.415812953045702,39.8990272727434743],"hsluv":[285.691107407551272,80.8649153118493444,39.8990272727434743]},"#8833cc":{"lch":[41.1555326498064318,99.7027359993818578,281.897918690971494],"luv":[41.1555326498064318,20.5555775093346966,-97.560769774639283],"rgb":[0.533333333333333326,0.2,0.8],"xyz":[0.222348142161279017,0.119619191194892366,0.5826624885650451],"hpluv":[281.897918690971494,307.410130900702256,41.1555326498064318],"hsluv":[281.897918690971494,83.1006969987668356,41.1555326498064318]},"#8833dd":{"lch":[42.4948021164729042,110.266949448261684,279.053462184119098],"luv":[42.4948021164729042,17.3511661022166734,-108.893237510502843],"rgb":[0.533333333333333326,0.2,0.866666666666666696],"xyz":[0.24386646771191256,0.1282265214151459,0.695992336465051098],"hpluv":[279.053462184119098,329.267506795456711,42.4948021164729042],"hsluv":[279.053462184119098,85.0491409670088103,42.4948021164729042]},"#8833ee":{"lch":[43.9087129541284185,120.703343561802441,276.877390721452173],"luv":[43.9087129541284185,14.4536316684396038,-119.834843341123431],"rgb":[0.533333333333333326,0.2,0.933333333333333348],"xyz":[0.267678647978087325,0.137751393521615917,0.821403152533574321],"hpluv":[276.877390721452173,348.825254458779511,43.9087129541284185],"hsluv":[276.877390721452173,90.7214777394212177,43.9087129541284185]},"#8833ff":{"lch":[45.3894029264418037,130.969293653816607,275.181129330284705],"luv":[45.3894029264418037,11.8271264623124566,-130.43417864894198],"rgb":[0.533333333333333326,0.2,1],"xyz":[0.293849696387918691,0.148219812885548641,0.959237340825356166],"hpluv":[275.181129330284705,366.146040402293636,45.3894029264418037],"hsluv":[275.181129330284705,99.9999999999993179,45.3894029264418037]},"#ffbb00":{"lch":[80.0686585320779614,99.7432534700870832,55.1804439586775146],"luv":[80.0686585320779614,56.9527800089419642,81.8846595037867928],"rgb":[1,0.733333333333333282,0],"xyz":[0.590086256022839262,0.568029919385293569,0.0785626376345524291],"hpluv":[55.1804439586775146,207.400278899961506,80.0686585320779614],"hsluv":[55.1804439586775146,100.000000000004661,80.0686585320779614]},"#ffbb11":{"lch":[80.0914663159454,98.8408701901197304,54.9443852376931758],"luv":[80.0914663159454,56.7713575947746136,80.9106332739172558],"rgb":[1,0.733333333333333282,0.0666666666666666657],"xyz":[0.591097921522476422,0.568434585585148477,0.0838907425993080658],"hpluv":[54.9443852376931758,205.801067903733326,80.0914663159454],"hsluv":[54.9443852376931758,100.000000000004746,80.0914663159454]},"#ffbb22":{"lch":[80.1337172522408849,97.1832370837577173,54.4980435584705063],"luv":[80.1337172522408849,56.4372945908461148,79.11645435270664],"rgb":[1,0.733333333333333282,0.133333333333333331],"xyz":[0.592973279660953367,0.569184728840539278,0.0937676287952872584],"hpluv":[54.4980435584705063,202.856099527528187,80.1337172522408849],"hsluv":[54.4980435584705063,100.00000000000469,80.1337172522408849]},"#ffbb33":{"lch":[80.2032020182086569,94.4967793168558643,53.7374633716008248],"luv":[80.2032020182086569,55.8935303906135772,76.1941898161015558],"rgb":[1,0.733333333333333282,0.2],"xyz":[0.596061030393411184,0.570419829133522405,0.110029782652898395],"hpluv":[53.7374633716008248,198.062979410590685,80.2032020182086569],"hsluv":[53.7374633716008248,100.000000000004576,80.2032020182086569]},"#ffbb44":{"lch":[80.3033451682561,90.7120739700224874,52.5796541788809932],"luv":[80.3033451682561,55.1219083097901148,72.0434284874749835],"rgb":[1,0.733333333333333282,0.266666666666666663],"xyz":[0.60051902563763,0.57220302723121,0.133508557605785033],"hpluv":[52.5796541788809932,191.266883403483888,80.3033451682561],"hsluv":[52.5796541788809932,100.000000000004732,80.3033451682561]},"#ffbb55":{"lch":[80.4369584648287343,85.824023801574981,50.9113466162360169],"luv":[80.4369584648287343,54.1139445833304435,66.614143116349922],"rgb":[1,0.733333333333333282,0.333333333333333315],"xyz":[0.606481439676992,0.57458799284695472,0.164910604879758949],"hpluv":[50.9113466162360169,182.412290123698938,80.4369584648287343],"hsluv":[50.9113466162360169,100.000000000004846,80.4369584648287343]},"#ffbb66":{"lch":[80.6063993458739532,79.8959983704508545,48.5678239065140147],"luv":[80.6063993458739532,52.8698192869345931,59.9011916757752374],"rgb":[1,0.733333333333333282,0.4],"xyz":[0.614066435450500214,0.577621991156358,0.20485824928690291],"hpluv":[48.5678239065140147,171.553596694327723,80.6063993458739532],"hsluv":[48.5678239065140147,100.000000000004945,80.6063993458739532]},"#ffbb77":{"lch":[80.8136549908608828,73.0715029906331353,45.3006510664637219],"luv":[80.8136549908608828,51.397517928562209,51.9397699272266067],"rgb":[1,0.733333333333333282,0.466666666666666674],"xyz":[0.623380448470702064,0.58134759636443889,0.253912051193300847],"hpluv":[45.3006510664637219,158.885762577352,80.8136549908608828],"hsluv":[45.3006510664637219,100.000000000005144,80.8136549908608828]},"#ffbb88":{"lch":[81.0603921498240823,65.5982066090816,40.7273497798256443],"luv":[81.0603921498240823,49.7118280718431649,42.8002203275083914],"rgb":[1,0.733333333333333282,0.533333333333333326],"xyz":[0.634520865572646,0.585803763205216432,0.312584914596873],"hpluv":[40.7273497798256443,144.809180382553194,81.0603921498240823],"hsluv":[40.7273497798256443,100.0000000000054,81.0603921498240823]},"#ffbb99":{"lch":[81.347989327564818,57.8755898316684423,34.2609783084776538],"luv":[81.347989327564818,47.8331272298795724,32.5818329406692087],"rgb":[1,0.733333333333333282,0.6],"xyz":[0.64757782968171862,0.591026548848845645,0.381351592237990866],"hpluv":[34.2609783084776538,130.060421106466862,81.347989327564818],"hsluv":[34.2609783084776538,100.000000000005514,81.347989327564818]},"#ffbbaa":{"lch":[81.6775593509345725,50.5427251754064883,25.056975338279841],"luv":[81.6775593509345725,45.7860019440054415,21.405819165362459],"rgb":[1,0.733333333333333282,0.66666666666666663],"xyz":[0.662635522646971231,0.597049626034946712,0.460655441854989522],"hpluv":[25.056975338279841,115.96007016550756,81.6775593509345725],"hsluv":[25.056975338279841,100.000000000005954,81.6775593509345725]},"#ffbbbb":{"lch":[82.0499666293022,44.6012959670408264,12.1770506300623094],"luv":[82.0499666293022,43.5977873399533138,9.40789779917804125],"rgb":[1,0.733333333333333282,0.733333333333333282],"xyz":[0.679773114754307795,0.603904662877881471,0.550913426953631213],"hpluv":[12.1770506300623094,104.793068167285782,82.0499666293022],"hsluv":[12.1770506300623094,100.000000000006168,82.0499666293022]},"#ffbbcc":{"lch":[82.4658415859876,41.4263127316455169,355.474040938847054],"luv":[82.4658415859876,41.2971323922898534,-3.26898190783910625],"rgb":[1,0.733333333333333282,0.8],"xyz":[0.699065490198029549,0.611621613055370328,0.652519937623901369],"hpluv":[355.474040938847054,100.004408983591958,82.4658415859876],"hsluv":[355.474040938847054,100.000000000006509,82.4658415859876]},"#ffbbdd":{"lch":[82.9255937413379,42.2590852539423381,337.045135839305544],"luv":[82.9255937413379,38.9126886018087319,-16.4812909773061058],"rgb":[1,0.733333333333333282,0.866666666666666696],"xyz":[0.720583815748663148,0.620228943275623834,0.765849785523907367],"hpluv":[337.045135839305544,105.181583048825317,82.9255937413379],"hsluv":[337.045135839305544,100.000000000006992,82.9255937413379]},"#ffbbee":{"lch":[83.4294243398036315,47.2826492521794748,320.476273654572083],"luv":[83.4294243398036315,36.4719970678196077,-30.0905691237235686],"rgb":[1,0.733333333333333282,0.933333333333333348],"xyz":[0.744395996014837857,0.629753815382093851,0.89126060159243059],"hpluv":[320.476273654572083,121.793886282549721,83.4294243398036315],"hsluv":[320.476273654572083,100.000000000007375,83.4294243398036315]},"#ffbbff":{"lch":[83.9773390427358493,55.5806936350452148,307.715012949246614],"luv":[83.9773390427358493,34.0006189291922496,-43.9678452665650781],"rgb":[1,0.733333333333333282,1],"xyz":[0.770567044424669279,0.640222234746026575,1.02909478988421244],"hpluv":[307.715012949246614,148.765749509941259,83.9773390427358493],"hsluv":[307.715012949246614,100.00000000000793,83.9773390427358493]},"#aa3300":{"lch":[39.4372171279304595,100.717281062042773,18.6056676884160446],"luv":[39.4372171279304595,95.4534790945485838,32.1341568004684959],"rgb":[0.66666666666666663,0.2,0],"xyz":[0.177609683996858475,0.109151647655369471,0.0117164749512008691],"hpluv":[18.6056676884160446,324.068678498457416,39.4372171279304595],"hsluv":[18.6056676884160446,100.00000000000226,39.4372171279304595]},"#aa3311":{"lch":[39.5056415087576553,98.9056898290362199,17.5539290045831464],"luv":[39.5056415087576553,94.2999972712563,29.8302865423477179],"rgb":[0.66666666666666663,0.2,0.0666666666666666657],"xyz":[0.178621349496495607,0.109556313855224324,0.0170445799159565023],"hpluv":[17.5539290045831464,317.688492914835,39.5056415087576553],"hsluv":[17.5539290045831464,94.2489803369173558,39.5056415087576553]},"#aa3322":{"lch":[39.6320377265530155,95.7434230458582789,15.5633947922033684],"luv":[39.6320377265530155,92.2329117474569102,25.688383505468213],"rgb":[0.66666666666666663,0.2,0.133333333333333331],"xyz":[0.180496707634972609,0.110306457110615139,0.0269214661119356949],"hpluv":[15.5633947922033684,306.55039093266322,39.6320377265530155],"hsluv":[15.5633947922033684,83.9544037116345123,39.6320377265530155]},"#aa3333":{"lch":[39.8389046640011415,91.0660982539230162,12.1770506300618351],"luv":[39.8389046640011415,89.0171529654153488,19.2088711049089049],"rgb":[0.66666666666666663,0.2,0.2],"xyz":[0.18358445836743037,0.111541557403598252,0.0431836199695468381],"hpluv":[12.1770506300618351,290.060550373943784,39.8389046640011415],"hsluv":[12.1770506300618351,67.9701775681036366,39.8389046640011415]},"#aa3344":{"lch":[40.1348956250933142,85.3951569144799691,7.07959423789482756],"luv":[40.1348956250933142,84.7440953003879116,10.5247867516366789],"rgb":[0.66666666666666663,0.2,0.266666666666666663],"xyz":[0.18804245361164923,0.113324755501285832,0.0666623949224334766],"hpluv":[7.07959423789482756,269.991710008472637,40.1348956250933142],"hsluv":[7.07959423789482756,69.5294395234689659,40.1348956250933142]},"#aa3355":{"lch":[40.5259588707466,79.61783322386637,359.98582832830067],"luv":[40.5259588707466,79.6178307884273693,-0.0196928603108827253],"rgb":[0.66666666666666663,0.2,0.333333333333333315],"xyz":[0.194004867651011215,0.115709721117030664,0.098064442196407392],"hpluv":[359.98582832830067,249.296614878837403,40.5259588707466],"hsluv":[359.98582832830067,71.3920974276079079,40.5259588707466]},"#aa3366":{"lch":[41.0157539995587683,74.8661602955128558,350.806369630673316],"luv":[41.0157539995587683,73.9044320805857,-11.9614746682639641],"rgb":[0.66666666666666663,0.2,0.4],"xyz":[0.2015898634245194,0.118743719426433983,0.138012086603551354],"hpluv":[350.806369630673316,231.619002340768361,41.0157539995587683],"hsluv":[350.806369630673316,73.4562780141226597,41.0157539995587683]},"#aa3377":{"lch":[41.6059173351841167,72.2728884464882668,339.921631600955322],"luv":[41.6059173351841167,67.8804264173117531,-24.8116527825629412],"rgb":[0.66666666666666663,0.2,0.466666666666666674],"xyz":[0.210903876444721305,0.122469324634514792,0.187065888509949263],"hpluv":[339.921631600955322,220.424384448141751,41.6059173351841167],"hsluv":[339.921631600955322,75.6166865764569138,41.6059173351841167]},"#aa3388":{"lch":[42.296293156356171,72.6091331125239918,328.324027314743319],"luv":[42.296293156356171,61.7926517819245191,-38.1281313089174],"rgb":[0.66666666666666663,0.2,0.533333333333333326],"xyz":[0.222044293546665161,0.12692549147529239,0.24573875191352143],"hpluv":[328.324027314743319,217.83530631356345,42.296293156356171],"hsluv":[328.324027314743319,77.7798333688196237,42.296293156356171]},"#aa3399":{"lch":[43.0851702185186838,75.9982874692542794,317.281450106519685],"luv":[43.0851702185186838,55.835561651799118,-51.5570533805758799],"rgb":[0.66666666666666663,0.2,0.6],"xyz":[0.235101257655737861,0.132148277118921548,0.314505429554639337],"hpluv":[317.281450106519685,223.828466633931441,43.0851702185186838],"hsluv":[317.281450106519685,79.8726039522015441,43.0851702185186838]},"#aa33aa":{"lch":[43.9695321467927229,81.9717995507402861,307.715012949243828],"luv":[43.9695321467927229,50.1449646844158607,-64.8448798162617521],"rgb":[0.66666666666666663,0.2,0.66666666666666663],"xyz":[0.250158950620990417,0.138171354305022642,0.393809279171637938],"hpluv":[307.715012949243828,236.565795567314069,43.9695321467927229],"hsluv":[307.715012949243828,81.8445603498948628,43.9695321467927229]},"#aa33bb":{"lch":[44.9453163823579231,89.8045713491188593,299.92695612823394],"luv":[44.9453163823579231,44.8030997809084,-77.8302208992172],"rgb":[0.66666666666666663,0.2,0.733333333333333282],"xyz":[0.267296542728327036,0.145026391147957401,0.484067264270279685],"hpluv":[299.92695612823394,253.543994890590483,44.9453163823579231],"hsluv":[299.92695612823394,83.6659201788580305,44.9453163823579231]},"#aa33cc":{"lch":[46.0076707905516145,98.8168321279874249,293.782406660809556],"luv":[46.0076707905516145,39.8493034294229815,-90.425656359246986],"rgb":[0.66666666666666663,0.2,0.8],"xyz":[0.28658891817204879,0.152743341325446202,0.585673774940549841],"hpluv":[293.782406660809556,272.546121846523647,46.0076707905516145],"hsluv":[293.782406660809556,85.323407183561244,46.0076707905516145]},"#aa33dd":{"lch":[47.1511962508372804,108.497592079042477,288.982430572084695],"luv":[47.1511962508372804,35.2919015872993782,-102.597315604759743],"rgb":[0.66666666666666663,0.2,0.866666666666666696],"xyz":[0.308107243722682334,0.161350671545699736,0.699003622840555838],"hpluv":[288.982430572084695,291.989148013150611,47.1511962508372804],"hsluv":[288.982430572084695,86.8156421407842771,47.1511962508372804]},"#aa33ee":{"lch":[48.3701654903461247,118.505438755587946,285.224041333998457],"luv":[48.3701654903461247,31.1188262963008349,-114.346655677352729],"rgb":[0.66666666666666663,0.2,0.933333333333333348],"xyz":[0.331919423988857099,0.170875543652169781,0.824414438909079061],"hpluv":[285.224041333998457,310.885191630161273,48.3701654903461247],"hsluv":[285.224041333998457,89.3017266962351215,48.3701654903461247]},"#aa33ff":{"lch":[49.6587116356326135,128.627945638670809,282.256374557143658],"luv":[49.6587116356326135,27.305962831451918,-125.696192436653462],"rgb":[0.66666666666666663,0.2,1],"xyz":[0.358090472398688464,0.181343963016102477,0.962248627200860907],"hpluv":[282.256374557143658,328.684490794403757,49.6587116356326135],"hsluv":[282.256374557143658,99.9999999999991616,49.6587116356326135]},"#884400":{"lch":[36.685747441671559,64.5393704655657814,31.8123524502136021],"luv":[36.685747441671559,54.844205976921188,34.0212200082916922],"rgb":[0.533333333333333326,0.266666666666666663,0],"xyz":[0.122201478469054756,0.093692638490747937,0.0116493787366846978],"hpluv":[31.8123524502136021,223.237258003095718,36.685747441671559],"hsluv":[31.8123524502136021,100.000000000002245,36.685747441671559]},"#884411":{"lch":[36.7614898568215622,62.4864851085245405,30.2058215583615599],"luv":[36.7614898568215622,54.0023006087270119,31.4374354899146],"rgb":[0.533333333333333326,0.266666666666666663,0.0666666666666666657],"xyz":[0.123213143968691874,0.0940973046906027899,0.016977483701440331],"hpluv":[30.2058215583615599,215.691146343233044,36.7614898568215622],"hsluv":[30.2058215583615599,93.206231917801162,36.7614898568215622]},"#884422":{"lch":[36.9013237077522405,58.9550348899468375,27.0578850153250627],"luv":[36.9013237077522405,52.5022536375556825,26.8180816214102],"rgb":[0.533333333333333326,0.266666666666666663,0.133333333333333331],"xyz":[0.125088502107168903,0.0948474479459936,0.0268543698974195236],"hpluv":[27.0578850153250627,202.730122118290922,36.9013237077522405],"hsluv":[27.0578850153250627,81.1214838671569822,36.9013237077522405]},"#884433":{"lch":[37.1299605496210461,53.9021323280231357,21.3870333458705382],"luv":[37.1299605496210461,50.1903435049312,19.6562785990819577],"rgb":[0.533333333333333326,0.266666666666666663,0.2],"xyz":[0.128176252839626637,0.0960825482389767171,0.0431165237550306668],"hpluv":[21.3870333458705382,184.213216030002656,37.1299605496210461],"hsluv":[21.3870333458705382,62.5495295304316272,37.1299605496210461]},"#884444":{"lch":[37.4566279620983806,48.2433933618324389,12.1770506300619505],"luv":[37.4566279620983806,47.157939219998795,10.1761373608750691],"rgb":[0.533333333333333326,0.266666666666666663,0.266666666666666663],"xyz":[0.132634248083845524,0.0978657463366643,0.0665952987079173],"hpluv":[12.1770506300619505,163.436290620587812,37.4566279620983806],"hsluv":[12.1770506300619505,38.2981887065726,37.4566279620983806]},"#884455":{"lch":[37.8873893879065804,43.5926938841600631,358.470393497241901],"luv":[37.8873893879065804,43.5771602849424937,-1.16364151632571566],"rgb":[0.533333333333333326,0.266666666666666663,0.333333333333333315],"xyz":[0.138596662123207509,0.10025071195240913,0.0979973459818912207],"hpluv":[358.470393497241901,146.001848007416612,37.8873893879065804],"hsluv":[358.470393497241901,42.6300163695831245,37.8873893879065804]},"#884466":{"lch":[38.425613648805637,41.9872152878557756,340.815857604715632],"luv":[38.425613648805637,39.6555541095459816,-13.7972198610307206],"rgb":[0.533333333333333326,0.266666666666666663,0.4],"xyz":[0.146181657896715694,0.103284710261812449,0.137944990389035183],"hpluv":[340.815857604715632,138.655016432961,38.425613648805637],"hsluv":[340.815857604715632,47.3337116796912767,38.425613648805637]},"#884477":{"lch":[39.0722986805963117,44.7783217464764363,322.645837420375756],"luv":[39.0722986805963117,35.5943002873345478,-27.1688035343115608],"rgb":[0.533333333333333326,0.266666666666666663,0.466666666666666674],"xyz":[0.1554956709169176,0.107010315469893258,0.186998792295433092],"hpluv":[322.645837420375756,145.424700121889231,39.0722986805963117],"hsluv":[322.645837420375756,52.1510622716411,39.0722986805963117]},"#884488":{"lch":[39.8263740522966856,51.5911203050634839,307.71501294924451],"luv":[39.8263740522966856,31.5600599218946343,-40.8118403414738609],"rgb":[0.533333333333333326,0.266666666666666663,0.533333333333333326],"xyz":[0.166636088018861428,0.111466482310670856,0.245671655699005259],"hpluv":[307.71501294924451,164.377933698467302,39.8263740522966856],"hsluv":[307.71501294924451,56.8697587177058,39.8263740522966856]},"#884499":{"lch":[40.6850187117946192,61.0189075542410393,296.969581150574243],"luv":[40.6850187117946192,27.6731358367265301,-54.3829443123034295],"rgb":[0.533333333333333326,0.266666666666666663,0.6],"xyz":[0.179693052127934128,0.116689267954300013,0.314438333340123166],"hpluv":[296.969581150574243,190.313341437332326,40.6850187117946192],"hsluv":[296.969581150574243,61.3383523001243134,40.6850187117946192]},"#8844aa":{"lch":[41.643995358805,71.7935926347933417,289.536616505740085],"luv":[41.643995358805,24.0084388126510113,-67.6602897510042141],"rgb":[0.533333333333333326,0.266666666666666663,0.66666666666666663],"xyz":[0.194750745093186683,0.122712345140401108,0.393742182957121767],"hpluv":[289.536616505740085,218.762371943685849,41.643995358805],"hsluv":[289.536616505740085,65.4647221474276506,41.643995358805]},"#8844bb":{"lch":[42.6979882651059626,83.1164887776927515,284.352541737053286],"luv":[42.6979882651059626,20.6035404121657031,-80.5223250360828757],"rgb":[0.533333333333333326,0.266666666666666663,0.733333333333333282],"xyz":[0.21188833720052333,0.129567381983335866,0.484000168055763513],"hpluv":[284.352541737053286,247.012596783276,42.6979882651059626],"hsluv":[284.352541737053286,69.2054262339616741,42.6979882651059626]},"#8844cc":{"lch":[43.840927241858644,94.5481620176080924,280.647262826657595],"luv":[43.840927241858644,17.4689172853010533,-92.9203522904814463],"rgb":[0.533333333333333326,0.266666666666666663,0.8],"xyz":[0.231180712644245057,0.137284332160824668,0.585606678726033669],"hpluv":[280.647262826657595,273.660859280114778,43.840927241858644],"hsluv":[280.647262826657595,72.5522514276637764,43.840927241858644]},"#8844dd":{"lch":[45.0662821798681108,105.864396975636453,277.925647559652191],"luv":[45.0662821798681108,14.5974213234566292,-104.853163222292139],"rgb":[0.533333333333333326,0.266666666666666663,0.866666666666666696],"xyz":[0.2526990381948786,0.145891662381078202,0.698936526626039667],"hpluv":[277.925647559652191,298.083215805211921,45.0662821798681108],"hsluv":[277.925647559652191,79.9664783418063649,45.0662821798681108]},"#8844ee":{"lch":[46.3673172023828,116.961454232737537,275.874868362231723],"luv":[46.3673172023828,11.97173240994087,-116.347150370524886],"rgb":[0.533333333333333326,0.266666666666666663,0.933333333333333348],"xyz":[0.276511218461053365,0.155416534487548247,0.82434734269456289],"hpluv":[275.874868362231723,320.088534026972411,46.3673172023828],"hsluv":[275.874868362231723,89.9071832422553,46.3673172023828]},"#8844ff":{"lch":[47.7372988913525091,127.801124524511906,274.29427304351259],"luv":[47.7372988913525091,9.5696272486796623,-127.442338585146516],"rgb":[0.533333333333333326,0.266666666666666663,1],"xyz":[0.302682266870884731,0.165884953851480943,0.962181530986344735],"hpluv":[274.29427304351259,339.716123682654541,47.7372988913525091],"hsluv":[274.29427304351259,99.9999999999992468,47.7372988913525091]},"#ffcc00":{"lch":[84.1983464973243,98.3335943421723613,63.5926937648685069],"luv":[84.1983464973243,43.7338065737115329,88.0729807536005751],"rgb":[1,0.8,0],"xyz":[0.628309999332456237,0.644477406004528408,0.0913038854044243842],"hpluv":[63.5926937648685069,267.385577483165775,84.1983464973243],"hsluv":[63.5926937648685069,100.000000000007688,84.1983464973243]},"#ffcc11":{"lch":[84.2193135631731877,97.4576917861448777,63.4272907637844199],"luv":[84.2193135631731877,43.5960552023901897,87.1629833075564164],"rgb":[1,0.8,0.0666666666666666657],"xyz":[0.629321664832093397,0.644882072204383316,0.0966319903691800208],"hpluv":[63.4272907637844199,265.403720884510847,84.2193135631731877],"hsluv":[63.4272907637844199,100.000000000007645,84.2193135631731877]},"#ffcc22":{"lch":[84.2581577251319516,95.845309095571892,63.1144413478925301],"luv":[84.2581577251319516,43.342199386504106,85.4855369519677168],"rgb":[1,0.8,0.133333333333333331],"xyz":[0.631197022970570343,0.645632215459774117,0.106508876565159213],"hpluv":[63.1144413478925301,261.744085553517664,84.2581577251319516],"hsluv":[63.1144413478925301,100.00000000000766,84.2581577251319516]},"#ffcc33":{"lch":[84.3220485899852719,93.2224175872051148,62.5809741236821822],"luv":[84.3220485899852719,42.9284172035605494,82.7500461462124832],"rgb":[1,0.8,0.2],"xyz":[0.63428477370302816,0.646867315752757244,0.12277103042277035],"hpluv":[62.5809741236821822,255.758846695652977,84.3220485899852719],"hsluv":[62.5809741236821822,100.000000000007859,84.3220485899852719]},"#ffcc44":{"lch":[84.41414885501203,89.5051620308737,61.7678249437873745],"luv":[84.41414885501203,42.3400226901080785,78.8574442191356439],"rgb":[1,0.8,0.266666666666666663],"xyz":[0.638742768947247,0.64865051385044481,0.146249805375657],"hpluv":[61.7678249437873745,247.206609954939694,84.41414885501203],"hsluv":[61.7678249437873745,100.000000000007887,84.41414885501203]},"#ffcc55":{"lch":[84.5370662928161,84.6613331238571476,60.5932597011580469],"luv":[84.5370662928161,41.569242864558305,73.7532329730438221],"rgb":[1,0.8,0.333333333333333315],"xyz":[0.644705182986609,0.651035479466189559,0.177651852649630904],"hpluv":[60.5932597011580469,235.935294148211483,84.5370662928161],"hsluv":[60.5932597011580469,100.000000000008015,84.5370662928161]},"#ffcc66":{"lch":[84.6930007913096,78.7104448491835456,58.9357730127494222],"luv":[84.6930007913096,40.6144802919859131,67.4225342075500151],"rgb":[1,0.8,0.4],"xyz":[0.65229017876011719,0.654069477775592878,0.217599497056774865],"hpluv":[58.9357730127494222,221.881579382217893,84.6930007913096],"hsluv":[58.9357730127494222,100.000000000008285,84.6930007913096]},"#ffcc77":{"lch":[84.8838226897762809,71.7288671198513441,56.6053668146737863],"luv":[84.8838226897762809,39.4797505573258718,59.8863897244492378],"rgb":[1,0.8,0.466666666666666674],"xyz":[0.661604191780319,0.657795082983673729,0.266653298963172802],"hpluv":[56.6053668146737863,205.087229042099608,84.8838226897762809],"hsluv":[56.6053668146737863,100.000000000008399,84.8838226897762809]},"#ffcc88":{"lch":[85.1111193079521371,63.8628893840605159,53.2910582019814285],"luv":[85.1111193079521371,38.1740592359010691,51.1977523133063457],"rgb":[1,0.8,0.533333333333333326],"xyz":[0.672744608882263,0.662251249824451271,0.325326162366744942],"hpluv":[53.2910582019814285,185.743844227516831,85.1111193079521371],"hsluv":[53.2910582019814285,100.000000000008683,85.1111193079521371]},"#ffcc99":{"lch":[85.3762249003348899,55.3594884395636555,48.4608196634464292],"luv":[85.3762249003348899,36.710650975629143,41.436711563970924],"rgb":[1,0.8,0.6],"xyz":[0.685801572991335595,0.667474035468080484,0.394092840007862821],"hpluv":[48.4608196634464292,164.300705026796521,85.3762249003348899],"hsluv":[48.4608196634464292,100.000000000008811,85.3762249003348899]},"#ffccaa":{"lch":[85.6802414041430467,46.6394331206389836,41.1740083194267896],"luv":[85.6802414041430467,35.1061374539925311,30.7049806200222122],"rgb":[1,0.8,0.66666666666666663],"xyz":[0.700859265956588207,0.673497112654181551,0.473396689624861478],"hpluv":[41.1740083194267896,141.724192848301414,85.6802414041430467],"hsluv":[41.1740083194267896,100.000000000009393,85.6802414041430467]},"#ffccbb":{"lch":[86.0240539433014106,38.4677176438646384,29.8042196075727404],"luv":[86.0240539433014106,33.3795484258888635,19.1199123327444944],"rgb":[1,0.8,0.733333333333333282],"xyz":[0.71799685806392477,0.68035214949711631,0.563654674723503168],"hpluv":[29.8042196075727404,120.116808153279436,86.0240539433014106],"hsluv":[29.8042196075727404,100.000000000009621,86.0240539433014106]},"#ffcccc":{"lch":[86.4083433793485,32.2775975377643,12.1770506300627517],"luv":[86.4083433793485,31.5513664521307504,6.80841962670093892],"rgb":[1,0.8,0.8],"xyz":[0.737289233507646524,0.688069099674605167,0.665261185393773324],"hpluv":[12.1770506300627517,103.973607583717524,86.4083433793485],"hsluv":[12.1770506300627517,100.000000000010388,86.4083433793485]},"#ffccdd":{"lch":[86.8335972965778637,30.2635044437543748,348.373924949033096],"luv":[86.8335972965778637,29.6426074465171432,-6.09881340826452867],"rgb":[1,0.8,0.866666666666666696],"xyz":[0.758807559058280123,0.696676429894858673,0.778591033293779322],"hpluv":[348.373924949033096,100.994037434302086,86.8335972965778637],"hsluv":[348.373924949033096,100.000000000011042,86.8335972965778637]},"#ffccee":{"lch":[87.3001202800073344,33.8382691858854301,324.868297683069],"luv":[87.3001202800073344,27.6740002852911822,-19.4724977777928352],"rgb":[1,0.8,0.933333333333333348],"xyz":[0.782619739324454833,0.70620130200132869,0.904001849362302545],"hpluv":[324.868297683069,117.528800717138253,87.3001202800073344],"hsluv":[324.868297683069,100.000000000011482,87.3001202800073344]},"#ffccff":{"lch":[87.8080440143565255,41.9549825399590404,307.715012949248376],"luv":[87.8080440143565255,25.6653035474654807,-33.1890456889728],"rgb":[1,0.8,1],"xyz":[0.808790787734286254,0.716669721365261414,1.0418360376540845],"hpluv":[307.715012949248376,152.433043069806,87.8080440143565255],"hsluv":[307.715012949248376,100.000000000012506,87.8080440143565255]},"#aa4400":{"lch":[42.2796461632011074,91.196234940608619,23.7609213617016479],"luv":[42.2796461632011074,83.4659581293579578,36.7448921741641357],"rgb":[0.66666666666666663,0.266666666666666663,0],"xyz":[0.186442254479824487,0.126816788621301801,0.0146606651121894659],"hpluv":[23.7609213617016479,273.706361359402308,42.2796461632011074],"hsluv":[23.7609213617016479,100.000000000002331,42.2796461632011074]},"#aa4411":{"lch":[42.3415695164373815,89.5099073241138399,22.7237862619920179],"luv":[42.3415695164373815,82.5619515402106572,34.5766925405446202],"rgb":[0.66666666666666663,0.266666666666666663,0.0666666666666666657],"xyz":[0.18745391997946162,0.127221454821156654,0.0199887700769451],"hpluv":[22.7237862619920179,268.252316854423896,42.3415695164373815],"hsluv":[22.7237862619920179,95.0030043013494634,42.3415695164373815]},"#aa4422":{"lch":[42.4560124733741162,86.5487219398638,20.7501492775311753],"luv":[42.4560124733741162,80.9346773489764075,30.663647399501361],"rgb":[0.66666666666666663,0.266666666666666663,0.133333333333333331],"xyz":[0.189329278117938621,0.127971598076547483,0.0298656562729242916],"hpluv":[20.7501492775311753,258.678767688655569,42.4560124733741162],"hsluv":[20.7501492775311753,86.0172479577967692,42.4560124733741162]},"#aa4433":{"lch":[42.643470741830761,82.1252826930209494,17.3597256589108966],"luv":[42.643470741830761,78.3845002494828691,24.5037176372775498],"rgb":[0.66666666666666663,0.266666666666666663,0.2],"xyz":[0.192417028850396354,0.129206698369530582,0.0461278101305354349],"hpluv":[17.3597256589108966,244.378874013338617,42.643470741830761],"hsluv":[17.3597256589108966,71.9602068881057733,42.643470741830761]},"#aa4444":{"lch":[42.9120210749329871,76.685866981555165,12.1770506300619239],"luv":[42.9120210749329871,74.9604702767477704,16.1756017075590073],"rgb":[0.66666666666666663,0.266666666666666663,0.266666666666666663],"xyz":[0.196875024094615242,0.130989896467218175,0.0696065850834220734],"hpluv":[12.1770506300619239,226.764824908056937,42.9120210749329871],"hsluv":[12.1770506300619239,53.1380271992519795,42.9120210749329871]},"#aa4455":{"lch":[43.2674147484635299,71.0489272172787594,4.80785478807657096],"luv":[43.2674147484635299,70.7989329223205,5.9549270177674023],"rgb":[0.66666666666666663,0.266666666666666663,0.333333333333333315],"xyz":[0.202837438133977255,0.133374862082963,0.101008632357395989],"hpluv":[4.80785478807657096,208.370342069187018,43.2674147484635299],"hsluv":[4.80785478807657096,55.6796565441877931,43.2674147484635299]},"#aa4466":{"lch":[43.7134526285125489,66.3411716499448261,355.020980864279068],"luv":[43.7134526285125489,66.0908363196155477,-5.75781299290188],"rgb":[0.66666666666666663,0.266666666666666663,0.4],"xyz":[0.210422433907485412,0.136408860392366299,0.140956276764539951],"hpluv":[355.020980864279068,192.578302395247789,43.7134526285125489],"hsluv":[355.020980864279068,58.5402216503940949,43.7134526285125489]},"#aa4477":{"lch":[44.252209356870793,63.7921835342278598,343.127789968560137],"luv":[44.252209356870793,61.046215168807521,-18.5149208377531842],"rgb":[0.66666666666666663,0.266666666666666663,0.466666666666666674],"xyz":[0.219736446927687346,0.140134465600447122,0.19001007867093786],"hpluv":[343.127789968560137,182.924482874911519,44.252209356870793],"hsluv":[343.127789968560137,61.5848400189491372,44.252209356870793]},"#aa4488":{"lch":[44.8842146397509367,64.3242328637060865,330.281311898752961],"luv":[44.8842146397509367,55.8636578331810938,-31.8882214461946916],"rgb":[0.66666666666666663,0.266666666666666663,0.533333333333333326],"xyz":[0.230876864029631146,0.14459063244122472,0.248682942074510027],"hpluv":[330.281311898752961,181.852933643495049,44.8842146397509367],"hsluv":[330.281311898752961,64.6866121014520274,44.8842146397509367]},"#aa4499":{"lch":[45.6086312393750077,68.1395242873703779,318.091147538790551],"luv":[45.6086312393750077,50.7100032224043318,-45.5136281051387854],"rgb":[0.66666666666666663,0.266666666666666663,0.6],"xyz":[0.243933828138703873,0.149813418084853878,0.317449619715627906],"hpluv":[318.091147538790551,189.579504981677246,45.6086312393750077],"hsluv":[318.091147538790551,67.7395528675925,45.6086312393750077]},"#aa44aa":{"lch":[46.4234422285949293,74.7240378323112822,307.715012949244056],"luv":[46.4234422285949293,45.7112599542092468,-59.1114417296972476],"rgb":[0.66666666666666663,0.266666666666666663,0.66666666666666663],"xyz":[0.258991521103956401,0.155836495270954972,0.396753469332626507],"hpluv":[307.715012949244056,204.25011915803762,46.4234422285949293],"hsluv":[307.715012949244056,70.6643205278868862,46.4234422285949293]},"#aa44bb":{"lch":[47.3256474704596144,83.2556513741305224,299.464802712285689],"luv":[47.3256474704596144,40.9525224701243289,-72.4872015535482177],"rgb":[0.66666666666666663,0.266666666666666663,0.733333333333333282],"xyz":[0.276129113211293076,0.162691532113889731,0.487011454431268254],"hpluv":[299.464802712285689,223.2320179514779,47.3256474704596144],"hsluv":[299.464802712285689,73.4081717041738244,47.3256474704596144]},"#aa44cc":{"lch":[48.311463406953564,92.9774863668884564,293.103270963637385],"luv":[48.311463406953564,36.4834012629607827,-85.5206080625642073],"rgb":[0.66666666666666663,0.266666666666666663,0.8],"xyz":[0.29542148865501483,0.170408482291378532,0.58861796510153841],"hpluv":[293.103270963637385,244.211962975346665,48.311463406953564],"hsluv":[293.103270963637385,75.9413806031634806,48.311463406953564]},"#aa44dd":{"lch":[49.376518181476186,103.335675962773564,288.229438001673088],"luv":[49.376518181476186,32.3257723855767125,-98.1494083851717676],"rgb":[0.66666666666666663,0.266666666666666663,0.866666666666666696],"xyz":[0.316939814205648318,0.179015812511632066,0.701947813001544407],"hpluv":[288.229438001673088,265.563967984367252,49.376518181476186],"hsluv":[288.229438001673088,78.2521754793284572,49.376518181476186]},"#aa44ee":{"lch":[50.5160343838387149,113.969241853628489,284.471970959088878],"luv":[50.5160343838387149,28.4816380653286,-110.35299897060564],"rgb":[0.66666666666666663,0.266666666666666663,0.933333333333333348],"xyz":[0.340751994471823083,0.188540684618102111,0.82735862907006763],"hpluv":[284.471970959088878,286.284434407824506,50.5160343838387149],"hsluv":[284.471970959088878,88.5420288112715355,50.5160343838387149]},"#aa44ff":{"lch":[51.7249932896939271,124.658572052901789,281.540806859048416],"luv":[51.7249932896939271,24.9399169363974949,-122.138282816953421],"rgb":[0.66666666666666663,0.266666666666666663,1],"xyz":[0.366923042881654449,0.199009103982034807,0.965192817361849476],"hpluv":[281.540806859048416,305.816582895375404,51.7249932896939271],"hsluv":[281.540806859048416,99.9999999999991189,51.7249932896939271]},"#885500":{"lch":[40.7868302215615941,57.8204075903908716,44.0255445375638317],"luv":[40.7868302215615941,41.5746091122878738,40.1839695784202107],"rgb":[0.533333333333333326,0.333333333333333315,0],"xyz":[0.134014735183400707,0.117319151919440201,0.0155871309747999068],"hpluv":[44.0255445375638317,179.887306981779091,40.7868302215615941],"hsluv":[44.0255445375638317,100.000000000002402,40.7868302215615941]},"#885511":{"lch":[40.8520464566488215,55.8013246771799061,42.6953812551229817],"luv":[40.8520464566488215,41.012258348334349,37.838901951530346],"rgb":[0.533333333333333326,0.333333333333333315,0.0666666666666666657],"xyz":[0.135026400683037839,0.117723818119295054,0.0209152359395555383],"hpluv":[42.6953812551229817,173.328515822040885,40.8520464566488215],"hsluv":[42.6953812551229817,94.5141207032234121,40.8520464566488215]},"#885522":{"lch":[40.9725457623763205,52.2529579480882163,40.0436802938645613],"luv":[40.9725457623763205,40.0024704692244413,33.6180601862079769],"rgb":[0.533333333333333326,0.333333333333333315,0.133333333333333331],"xyz":[0.136901758821514841,0.118473961374685868,0.0307921221355347344],"hpluv":[40.0436802938645613,161.829338044896133,40.9725457623763205],"hsluv":[40.0436802938645613,84.6783920295854813,40.9725457623763205]},"#885533":{"lch":[41.169842808691,46.965215190705,35.0963808532685348],"luv":[41.169842808691,38.426283274472091,27.0028182162390955],"rgb":[0.533333333333333326,0.333333333333333315,0.2],"xyz":[0.139989509553972602,0.119709061667668981,0.0470542759931458776],"hpluv":[35.0963808532685348,144.75595347357384,41.169842808691],"hsluv":[35.0963808532685348,69.3663942781120113,41.169842808691]},"#885544":{"lch":[41.4523140669009891,40.5881659839312263,26.5063976077417607],"luv":[41.4523140669009891,36.321721997537459,18.1144066718387258],"rgb":[0.533333333333333326,0.333333333333333315,0.266666666666666663],"xyz":[0.144447504798191462,0.121492259765356561,0.0705330509460325161],"hpluv":[26.5063976077417607,124.248162385526584,41.4523140669009891],"hsluv":[26.5063976077417607,49.0053368988820708,41.4523140669009891]},"#885555":{"lch":[41.8258216452066449,34.5587016635497619,12.1770506300621708],"luv":[41.8258216452066449,33.7811467851905647,7.28958040957408926],"rgb":[0.533333333333333326,0.333333333333333315,0.333333333333333315],"xyz":[0.150409918837553447,0.123877225381101394,0.101935098220006432],"hpluv":[12.1770506300621708,104.846095879990827,41.8258216452066449],"hsluv":[12.1770506300621708,24.5686900376428454,41.8258216452066449]},"#885566":{"lch":[42.2941086985740071,31.3312262907584227,350.801819307985852],"luv":[42.2941086985740071,30.9283487442626033,-5.00829160852097477],"rgb":[0.533333333333333326,0.333333333333333315,0.4],"xyz":[0.157994914611061632,0.126911223690504699,0.141882742627150393],"hpluv":[350.801819307985852,94.0019456509277092,42.2941086985740071],"hsluv":[350.801819307985852,29.8132814869556348,42.2941086985740071]},"#885577":{"lch":[42.8590433503379202,33.3514130793808121,326.760730108285],"luv":[42.8590433503379202,27.8947491372056646,-18.2811302977648822],"rgb":[0.533333333333333326,0.333333333333333315,0.466666666666666674],"xyz":[0.167308927631263538,0.130636828898585522,0.190936544533548302],"hpluv":[326.760730108285,98.7440857113442263,42.8590433503379202],"hsluv":[326.760730108285,35.3342565461126838,42.8590433503379202]},"#885588":{"lch":[43.5208237898043535,40.5407907233736822,307.71501294924542],"luv":[43.5208237898043535,24.8001938501248809,-32.0703304858651137],"rgb":[0.533333333333333326,0.333333333333333315,0.533333333333333326],"xyz":[0.178449344733207393,0.13509299573936312,0.24960940793712047],"hpluv":[307.71501294924542,118.204615389413121,43.5208237898043535],"hsluv":[307.71501294924542,40.8951968507306276,43.5208237898043535]},"#885599":{"lch":[44.278184332936334,50.8805981998246,295.296495298175159],"luv":[44.278184332936334,21.7414099229374891,-46.0015909261276477],"rgb":[0.533333333333333326,0.333333333333333315,0.6],"xyz":[0.191506308842280093,0.140315781382992277,0.318376085578238377],"hpluv":[295.296495298175159,145.814841874582299,44.278184332936334],"hsluv":[295.296495298175159,46.3068912836000735,44.278184332936334]},"#8855aa":{"lch":[45.1286132569148819,62.6826496939872868,287.441560465434577],"luv":[45.1286132569148819,18.7880516159354372,-59.8006997378464717],"rgb":[0.533333333333333326,0.333333333333333315,0.66666666666666663],"xyz":[0.206564001807532649,0.146338858569093372,0.397679935195237],"hpluv":[287.441560465434577,176.252255995348207,45.1286132569148819],"hsluv":[287.441560465434577,51.4349240401982044,45.1286132569148819]},"#8855bb":{"lch":[46.0685799041538857,75.0110486022347374,282.303621490188448],"luv":[46.0685799041538857,15.9842650126874819,-73.2882029006783284],"rgb":[0.533333333333333326,0.333333333333333315,0.733333333333333282],"xyz":[0.223701593914869268,0.15319389541202813,0.487937920293878724],"hpluv":[282.303621490188448,206.613996430434867,46.0685799041538857],"hsluv":[282.303621490188448,56.1963190544194191,46.0685799041538857]},"#8855cc":{"lch":[47.0937627302438173,87.3889723072186229,278.789341148015808],"luv":[47.0937627302438173,13.3532090014702405,-86.3627482788434406],"rgb":[0.533333333333333326,0.333333333333333315,0.8],"xyz":[0.242993969358591022,0.160910845589516932,0.58954443096414888],"hpluv":[278.789341148015808,235.468364438494291,47.0937627302438173],"hsluv":[278.789341148015808,67.0071532265272083,47.0937627302438173]},"#8855dd":{"lch":[48.1992684502362323,99.579643468316263,276.285619014825784],"luv":[48.1992684502362323,10.9024601244232162,-98.9810171523426163],"rgb":[0.533333333333333326,0.333333333333333315,0.866666666666666696],"xyz":[0.264512294909224566,0.169518175809770466,0.702874278864154878],"hpluv":[276.285619014825784,262.161822059859048,48.1992684502362323],"hsluv":[276.285619014825784,77.9008511174594673,48.1992684502362323]},"#8855ee":{"lch":[49.3798334670730128,111.473561000814087,274.439637972028379],"luv":[49.3798334670730128,8.62903279282213198,-111.139077714648238],"rgb":[0.533333333333333326,0.333333333333333315,0.933333333333333348],"xyz":[0.288324475175399275,0.179043047916240511,0.828285094932678101],"hpluv":[274.439637972028379,286.45841220928196,49.3798334670730128],"hsluv":[274.439637972028379,88.8665998649397295,49.3798334670730128]},"#8855ff":{"lch":[50.6300011250937416,123.030386306339324,273.039422554437692],"luv":[50.6300011250937416,6.52344684402536235,-122.857318039912712],"rgb":[0.533333333333333326,0.333333333333333315,1],"xyz":[0.314495523585230696,0.189511467280173207,0.96611928322446],"hpluv":[273.039422554437692,308.349875308867752,50.6300011250937416],"hsluv":[273.039422554437692,99.9999999999992,50.6300011250937416]},"#ffdd00":{"lch":[88.435570144315335,99.3071523162376195,71.7429005549186911],"luv":[88.435570144315335,31.1110916577435432,94.3080615696447211],"rgb":[1,0.866666666666666696,0],"xyz":[0.670943989879631442,0.729745387098879927,0.105515215586815703],"hpluv":[71.7429005549186911,382.363935262913174,88.435570144315335],"hsluv":[71.7429005549186911,100.000000000012946,88.435570144315335]},"#ffdd11":{"lch":[88.454870819445,98.4678340856778,71.6448189166009826],"luv":[88.454870819445,31.0081800872079896,93.4580500395971683],"rgb":[1,0.866666666666666696,0.0666666666666666657],"xyz":[0.671955655379268602,0.730150053298734836,0.110843320551571339],"hpluv":[71.6448189166009826,379.826472639876158,88.454870819445],"hsluv":[71.6448189166009826,100.00000000001296,88.454870819445]},"#ffdd22":{"lch":[88.4906302718539735,96.9204819130462,71.4594307996413],"luv":[88.4906302718539735,30.8183922605744947,91.8901872494037093],"rgb":[1,0.866666666666666696,0.133333333333333331],"xyz":[0.673831013517745547,0.730900196554125636,0.120720206747550532],"hpluv":[71.4594307996413,375.129750349680876,88.4906302718539735],"hsluv":[71.4594307996413,100.00000000001296,88.4906302718539735]},"#ffdd33":{"lch":[88.5494544369894641,94.3967280931520776,71.1436744567929793],"luv":[88.5494544369894641,30.5086598694284135,89.330643945199526],"rgb":[1,0.866666666666666696,0.2],"xyz":[0.676918764250203364,0.732135296847108763,0.136982360605161668],"hpluv":[71.1436744567929793,367.416320973762822,88.5494544369894641],"hsluv":[71.1436744567929793,100.000000000013216,88.5494544369894641]},"#ffdd44":{"lch":[88.6342662809689301,90.8049878425315455,70.6631891871382152],"luv":[88.6342662809689301,30.0674100616276441,85.6825342136204284],"rgb":[1,0.866666666666666696,0.266666666666666663],"xyz":[0.681376759494422224,0.733918494944796329,0.160461135558048307],"hpluv":[70.6631891871382152,356.322085242203968,88.6342662809689301],"hsluv":[70.6631891871382152,100.000000000013173,88.6342662809689301]},"#ffdd55":{"lch":[88.7474847112806486,86.0957791731635353,69.970644696948483],"luv":[88.7474847112806486,29.4879375414461293,80.8884709398435433],"rgb":[1,0.866666666666666696,0.333333333333333315],"xyz":[0.687339173533784153,0.736303460560541079,0.191863182832022222],"hpluv":[69.970644696948483,341.559684906391112,88.7474847112806486],"hsluv":[69.970644696948483,100.000000000013429,88.7474847112806486]},"#ffdd66":{"lch":[88.8911610589964454,80.258955992054581,68.9956984045855819],"luv":[88.8911610589964454,28.7678627944319345,74.9260307715235427],"rgb":[1,0.866666666666666696,0.4],"xyz":[0.694924169307292394,0.739337458869944397,0.231810827239166184],"hpluv":[68.9956984045855819,322.902183683526573,88.8911610589964454],"hsluv":[68.9956984045855819,100.000000000013586,88.8911610589964454]},"#ffdd77":{"lch":[89.0670520916409885,73.323747836811151,67.6276760217336346],"luv":[89.0670520916409885,27.9087592291374555,67.8046691248198812],"rgb":[1,0.866666666666666696,0.466666666666666674],"xyz":[0.704238182327494244,0.743063064078025248,0.280864629145564093],"hpluv":[67.6276760217336346,300.178104609939055,89.0670520916409885],"hsluv":[67.6276760217336346,100.000000000014367,89.0670520916409885]},"#ffdd88":{"lch":[89.2766635023192379,65.3617696880632622,65.6822421460803554],"luv":[89.2766635023192379,26.9157684368328205,59.5625918359016637],"rgb":[1,0.866666666666666696,0.533333333333333326],"xyz":[0.715378599429438156,0.747519230918802791,0.339537492549136233],"hpluv":[65.6822421460803554,273.280966903928913,89.2766635023192379],"hsluv":[65.6822421460803554,100.00000000001468,89.2766635023192379]},"#ffdd99":{"lch":[89.5212778802452362,56.4966374008110606,62.8311838382076928],"luv":[89.5212778802452362,25.7971434460875209,50.2630821540094814],"rgb":[1,0.866666666666666696,0.6],"xyz":[0.7284355635385108,0.752742016562432,0.408304170190254168],"hpluv":[62.8311838382076928,242.212083001239,89.5212778802452362],"hsluv":[62.8311838382076928,100.000000000014893,89.5212778802452362]},"#ffddaa":{"lch":[89.8019739344538408,46.9317870748453103,58.439957868293348],"luv":[89.8019739344538408,24.5637119196041205,39.9902074859498],"rgb":[1,0.866666666666666696,0.66666666666666663],"xyz":[0.743493256503763411,0.75876509374853307,0.487608019807252768],"hpluv":[58.439957868293348,207.216087370130765,89.8019739344538408],"hsluv":[58.439957868293348,100.000000000015916,89.8019739344538408]},"#ffddbb":{"lch":[90.1196406145249114,37.0342016806554142,51.1553076529108282],"luv":[90.1196406145249114,23.228278171915747,28.8440494260352231],"rgb":[1,0.866666666666666696,0.733333333333333282],"xyz":[0.7606308486111,0.765620130591467829,0.57786600490589457],"hpluv":[51.1553076529108282,169.207898233907059,90.1196406145249114],"hsluv":[51.1553076529108282,100.00000000001647,90.1196406145249114]},"#ffddcc":{"lch":[90.4749882420216665,27.6093496047032829,37.8361109659034085],"luv":[90.4749882420216665,21.8049964890922183,16.9357111957368183],"rgb":[1,0.866666666666666696,0.8],"xyz":[0.779923224054821729,0.773337080768956686,0.679472515576164726],"hpluv":[37.8361109659034085,131.228146902908946,90.4749882420216665],"hsluv":[37.8361109659034085,100.000000000017565,90.4749882420216665]},"#ffdddd":{"lch":[90.8685579434819743,20.7762078419716971,12.1770506300632935],"luv":[90.8685579434819743,20.3087527298379129,4.38239373528981613],"rgb":[1,0.866666666666666696,0.866666666666666696],"xyz":[0.801441549605455328,0.781944410989210192,0.792802363476170724],"hpluv":[12.1770506300632935,103.332662997484363,90.8685579434819743],"hsluv":[12.1770506300632935,100.000000000018645,90.8685579434819743]},"#ffddee":{"lch":[91.3007301977477255,20.6730653908416642,335.121130580225611],"luv":[91.3007301977477255,18.7545890012647547,-8.69718483462634318],"rgb":[1,0.866666666666666696,0.933333333333333348],"xyz":[0.82525372987163,0.791469283095680209,0.918213179544694],"hpluv":[335.121130580225611,108.301670079840079,91.3007301977477255],"hsluv":[335.121130580225611,100.000000000019696,91.3007301977477255]},"#ffddff":{"lch":[91.7717330140538081,28.0468143452174594,307.715012949251673],"luv":[91.7717330140538081,17.1571994583452359,-22.1868046744377736],"rgb":[1,0.866666666666666696,1],"xyz":[0.851424778281461458,0.801937702459612933,1.05604736783647568],"hpluv":[307.715012949251673,155.925616416863875,91.7717330140538081],"hsluv":[307.715012949251673,100.000000000021274,91.7717330140538081]},"#aa5500":{"lch":[45.6948541105979729,81.8101604081173406,31.0178153240564285],"luv":[45.6948541105979729,70.1118895783240674,42.1571498770823254],"rgb":[0.66666666666666663,0.333333333333333315,0],"xyz":[0.198255511194170453,0.150443302049994065,0.0185984173503046732],"hpluv":[31.0178153240564285,227.184802334875343,45.6948541105979729],"hsluv":[31.0178153240564285,100.000000000002132,45.6948541105979729]},"#aa5511":{"lch":[45.7501207141343542,80.2053049231342357,30.0334267749456458],"luv":[45.7501207141343542,69.4364235827854088,40.1431690060082786],"rgb":[0.66666666666666663,0.333333333333333315,0.0666666666666666657],"xyz":[0.199267176693807585,0.150847968249848918,0.0239265223150603029],"hpluv":[30.0334267749456458,222.459100300712947,45.7501207141343542],"hsluv":[30.0334267749456458,95.7485290168496874,45.7501207141343542]},"#aa5522":{"lch":[45.8523093955831129,77.3637164970789826,28.1463245173948593],"luv":[45.8523093955831129,68.2151287979892231,36.4943945464800308],"rgb":[0.66666666666666663,0.333333333333333315,0.133333333333333331],"xyz":[0.201142534832284586,0.151598111505239747,0.0338034085110395],"hpluv":[28.1463245173948593,214.099393521154866,45.8523093955831129],"hsluv":[28.1463245173948593,88.0687786146531835,45.8523093955831129]},"#aa5533":{"lch":[46.0198296754266707,73.057054041475979,24.8605966968797674],"luv":[46.0198296754266707,66.2871018342682845,30.7140566456547255],"rgb":[0.66666666666666663,0.333333333333333315,0.2],"xyz":[0.20423028556474232,0.152833211798222846,0.0500655623686506457],"hpluv":[24.8605966968797674,201.444992058953261,46.0198296754266707],"hsluv":[24.8605966968797674,75.9647480733224683,46.0198296754266707]},"#aa5544":{"lch":[46.260105303202792,67.6400753638857,19.7251402693972757],"luv":[46.260105303202792,63.6711277752059743,22.829088529013422],"rgb":[0.66666666666666663,0.333333333333333315,0.266666666666666663],"xyz":[0.208688280808961207,0.154616409895910439,0.0735443373215372842],"hpluv":[19.7251402693972757,185.539675327038225,46.260105303202792],"hsluv":[19.7251402693972757,59.5831884891410581,46.260105303202792]},"#aa5555":{"lch":[46.5785950143652201,61.8404850960729462,12.1770506300619488],"luv":[46.5785950143652201,60.4491026496292108,13.0442165641410206],"rgb":[0.66666666666666663,0.333333333333333315,0.333333333333333315],"xyz":[0.21465069484832322,0.157001375511655272,0.1049463845955112],"hpluv":[12.1770506300619488,168.471262237657498,46.5785950143652201],"hsluv":[12.1770506300619488,39.4780386186733381,46.5785950143652201]},"#aa5566":{"lch":[46.9791292969753727,56.7719582569154682,1.70455911852653919],"luv":[46.9791292969753727,56.7468364589401801,1.68872621441415594],"rgb":[0.66666666666666663,0.333333333333333315,0.4],"xyz":[0.222235690621831378,0.160035373821058563,0.144894029002655161],"hpluv":[1.70455911852653919,153.34451205140752,46.9791292969753727],"hsluv":[1.70455911852653919,42.9013314457092818,46.9791292969753727]},"#aa5577":{"lch":[47.4641008255870247,53.815805251865207,348.374645401059922],"luv":[47.4641008255870247,52.7118371029350072,-10.8444974129891012],"rgb":[0.66666666666666663,0.333333333333333315,0.466666666666666674],"xyz":[0.231549703642033311,0.163760979029139386,0.193947830909053071],"hpluv":[348.374645401059922,143.874527939012694,47.4641008255870247],"hsluv":[348.374645401059922,46.6096363259647291,47.4641008255870247]},"#aa5588":{"lch":[48.0346061313586716,54.1759936988691209,333.519859036575326],"luv":[48.0346061313586716,48.4923339918738,-24.1564036495598238],"rgb":[0.66666666666666663,0.333333333333333315,0.533333333333333326],"xyz":[0.242690120743977111,0.168217145869916984,0.252620694312625238],"hpluv":[333.519859036575326,143.117248614217317,48.0346061313586716],"hsluv":[333.519859036575326,50.4580944804944309,48.0346061313586716]},"#aa5599":{"lch":[48.6905763376225,58.2309730669685877,319.412334073918828],"luv":[48.6905763376225,44.2212637341432782,-37.885697275903027],"rgb":[0.66666666666666663,0.333333333333333315,0.6],"xyz":[0.255747084853049866,0.173439931513546142,0.321387371953743117],"hpluv":[319.412334073918828,151.756904292295189,48.6905763376225],"hsluv":[319.412334073918828,54.3174516364451492,48.6905763376225]},"#aa55aa":{"lch":[49.4309115490906095,65.3990862514302904,307.715012949244453],"luv":[49.4309115490906095,40.0068668547544135,-51.7348150377284242],"rgb":[0.66666666666666663,0.333333333333333315,0.66666666666666663],"xyz":[0.270804777818302367,0.179463008699647236,0.400691221570741718],"hpluv":[307.715012949244453,167.885190443837445,49.4309115490906095],"hsluv":[307.715012949244453,58.0831627335764651,49.4309115490906095]},"#aa55bb":{"lch":[50.2536225490081137,74.6889496830887651,298.754319252296796],"luv":[50.2536225490081137,35.9294822147829578,-65.4790921786531896],"rgb":[0.66666666666666663,0.333333333333333315,0.733333333333333282],"xyz":[0.287942369925639041,0.186318045542582,0.490949206669383464],"hpluv":[298.754319252296796,188.594188212432869,50.2536225490081137],"hsluv":[298.754319252296796,61.6784311565058445,50.2536225490081137]},"#aa55cc":{"lch":[51.1559779262539394,85.2173265065914194,292.086991032215337],"luv":[51.1559779262539394,32.0428980728004476,-78.9635702082114],"rgb":[0.66666666666666663,0.333333333333333315,0.8],"xyz":[0.307234745369360795,0.194034995720070796,0.59255571733965362],"hpluv":[292.086991032215337,211.383381159177,51.1559779262539394],"hsluv":[292.086991032215337,65.0527897247966536,51.1559779262539394]},"#aa55dd":{"lch":[52.1346521614624407,96.3659410029227,287.126655540846059],"luv":[52.1346521614624407,28.3783197098194826,-92.0927008824589137],"rgb":[0.66666666666666663,0.333333333333333315,0.866666666666666696],"xyz":[0.328753070919994284,0.20264232594032433,0.705885565239659618],"hpluv":[287.126655540846059,234.550526854663673,52.1346521614624407],"hsluv":[287.126655540846059,75.3446722268955256,52.1346521614624407]},"#aa55ee":{"lch":[53.1858694266106227,107.745747725204239,283.388779775386126],"luv":[53.1858694266106227,24.9493252566021582,-104.817352199450397],"rgb":[0.66666666666666663,0.333333333333333315,0.933333333333333348],"xyz":[0.352565251186169049,0.212167198046794375,0.831296381308182841],"hpluv":[283.388779775386126,257.065149407391289,53.1858694266106227],"hsluv":[283.388779775386126,87.5522298773574335,53.1858694266106227]},"#aa55ff":{"lch":[54.3055382240479361,119.125691570750178,280.523377624217346],"luv":[54.3055382240479361,21.7567225446561139,-117.12205350114192],"rgb":[0.66666666666666663,0.333333333333333315,1],"xyz":[0.378736299596000414,0.222635617410727071,0.969130569599964686],"hpluv":[280.523377624217346,278.356033354379861,54.3055382240479361],"hsluv":[280.523377624217346,99.999999999999,54.3055382240479361]},"#886600":{"lch":[45.272583339231268,54.7393681124008964,58.6614018365849361],"luv":[45.272583339231268,28.4696504737342408,46.7533680417607513],"rgb":[0.533333333333333326,0.4,0],"xyz":[0.149042792889247183,0.147375267331133541,0.020596483543415256],"hpluv":[58.6614018365849361,153.427719347991228,45.272583339231268],"hsluv":[58.6614018365849361,100.000000000002288,45.272583339231268]},"#886611":{"lch":[45.3286132830504442,52.7569286908504935,57.8019218571504112],"luv":[45.3286132830504442,28.1114182485843394,44.6434954830448234],"rgb":[0.533333333333333326,0.4,0.0666666666666666657],"xyz":[0.150054458388884315,0.147779933530988394,0.0259245885081708857],"hpluv":[57.8019218571504112,147.688404254652824,45.3286132830504442],"hsluv":[57.8019218571504112,95.5933263309827765,45.3286132830504442]},"#886622":{"lch":[45.4322079122274616,49.2027541487777427,56.0700181971155658],"luv":[45.4322079122274616,27.4639619392241023,40.8245246197174367],"rgb":[0.533333333333333326,0.4,0.133333333333333331],"xyz":[0.151929816527361317,0.148530076786379223,0.0358014747041500853],"hpluv":[56.0700181971155658,137.424731357888106,45.4322079122274616],"hsluv":[56.0700181971155658,87.640709221506242,45.4322079122274616]},"#886633":{"lch":[45.6020177209920377,43.6934420281053448,52.7580970187872822],"luv":[45.6020177209920377,26.4424624059276816,34.7838045385277539],"rgb":[0.533333333333333326,0.4,0.2],"xyz":[0.155017567259819078,0.149765177079362322,0.0520636285617612285],"hpluv":[52.7580970187872822,121.582627853675135,45.6020177209920377],"hsluv":[52.7580970187872822,75.126145239043538,45.6020177209920377]},"#886644":{"lch":[45.8455444844743383,36.5157977851307862,46.6690567683987183],"luv":[45.8455444844743383,25.057552877875338,26.56167411246971],"rgb":[0.533333333333333326,0.4,0.266666666666666663],"xyz":[0.159475562504037938,0.151548375177049915,0.0755424035146478601],"hpluv":[46.6690567683987183,101.07016738030697,45.8455444844743383],"hsluv":[46.6690567683987183,58.2269221932267413,45.8455444844743383]},"#886655":{"lch":[46.1682850891648,28.5288655346450497,35.057100942904512],"luv":[46.1682850891648,23.3531590809093643,16.3867669061227161],"rgb":[0.533333333333333326,0.4,0.333333333333333315],"xyz":[0.165437976543399923,0.153933340792794748,0.106944450788621775],"hpluv":[35.057100942904512,78.4115584201214517,46.1682850891648],"hsluv":[35.057100942904512,37.5458750067509825,46.1682850891648]},"#886666":{"lch":[46.5740725388720946,21.8884171395184417,12.1770506300623786],"luv":[46.5740725388720946,21.3959378301945833,4.61699569417310141],"rgb":[0.533333333333333326,0.4,0.4],"xyz":[0.173022972316908108,0.156967339102198039,0.146892095195765737],"hpluv":[12.1770506300623786,59.6361320849851921,46.5740725388720946],"hsluv":[12.1770506300623786,13.9745942082290213,46.5740725388720946]},"#886677":{"lch":[47.0652698878111053,20.9860757761626395,336.621799391030947],"luv":[47.0652698878111053,19.2632377900225293,-8.32724722389627559],"rgb":[0.533333333333333326,0.4,0.466666666666666674],"xyz":[0.18233698533711,0.160692944310278862,0.195945897102163646],"hpluv":[336.621799391030947,56.5809206524471051,47.0652698878111053],"hsluv":[336.621799391030947,19.7183189325496855,47.0652698878111053]},"#886688":{"lch":[47.6429159175320649,27.8420771343032278,307.715012949247239],"luv":[47.6429159175320649,17.0319546757823481,-22.0248445868429776],"rgb":[0.533333333333333326,0.4,0.533333333333333326],"xyz":[0.193477402439053869,0.16514911115105646,0.254618760505735842],"hpluv":[307.715012949247239,74.1553731862279335,47.6429159175320649],"hsluv":[307.715012949247239,25.6555006249089494,47.6429159175320649]},"#886699":{"lch":[48.306860672000596,39.0046617113806562,292.251886736336132],"luv":[48.306860672000596,14.770249996667463,-36.0999078981538304],"rgb":[0.533333333333333326,0.4,0.6],"xyz":[0.206534366548126569,0.170371896794685618,0.323385438146853721],"hpluv":[292.251886736336132,102.458272059709785,48.306860672000596],"hsluv":[292.251886736336132,31.5854767603208231,48.306860672000596]},"#8866aa":{"lch":[49.0559053000777112,51.7871044207240132,284.005102499462396],"luv":[49.0559053000777112,12.5329093477081912,-50.2476901714407305],"rgb":[0.533333333333333326,0.4,0.66666666666666663],"xyz":[0.221592059513379125,0.176394973980786712,0.402689287763852322],"hpluv":[284.005102499462396,133.958310232957899,49.0559053000777112],"hsluv":[284.005102499462396,39.6059098285329867,49.0559053000777112]},"#8866bb":{"lch":[49.8879495217490074,65.0723394771694501,279.16089377463328],"luv":[49.8879495217490074,10.3599978518109275,-64.242352148271],"rgb":[0.533333333333333326,0.4,0.733333333333333282],"xyz":[0.238729651620715744,0.183250010823721471,0.492947272862494068],"hpluv":[279.16089377463328,165.516042277675325,49.8879495217490074],"hsluv":[279.16089377463328,51.4342030459355897,49.8879495217490074]},"#8866cc":{"lch":[50.800144438276476,78.3702679805165161,276.063171305995638],"luv":[50.800144438276476,8.2778522611756955,-77.9318680982312912],"rgb":[0.533333333333333326,0.4,0.8],"xyz":[0.258022027064437498,0.190966961001210273,0.594553783532764224],"hpluv":[276.063171305995638,195.760791019658512,50.800144438276476],"hsluv":[276.063171305995638,63.370404435102877,50.800144438276476]},"#8866dd":{"lch":[51.7890458420015278,91.4433004674113903,273.951375062119212],"luv":[51.7890458420015278,6.3013441888180548,-91.225929766636682],"rgb":[0.533333333333333326,0.4,0.866666666666666696],"xyz":[0.279540352615071042,0.199574291221463807,0.707883631432770222],"hpluv":[273.951375062119212,224.054313572832513,51.7890458420015278],"hsluv":[273.951375062119212,75.4110532620532,51.7890458420015278]},"#8866ee":{"lch":[52.8507624936088831,104.176067138923727,272.440799986921],"luv":[52.8507624936088831,4.4365578942807,-104.081554170680207],"rgb":[0.533333333333333326,0.4,0.933333333333333348],"xyz":[0.303352532881245751,0.209099163327933851,0.833294447501293445],"hpluv":[272.440799986921,250.124381092910085,52.8507624936088831],"hsluv":[272.440799986921,87.5962217171162365,52.8507624936088831]},"#8866ff":{"lch":[53.9810943197935273,116.520298408763196,271.319576027424205],"luv":[53.9810943197935273,2.6833355157121912,-116.48939716462327],"rgb":[0.533333333333333326,0.4,1],"xyz":[0.329523581291077172,0.219567582691866547,0.97112863579307529],"hpluv":[271.319576027424205,273.904539658900717,53.9810943197935273],"hsluv":[271.319576027424205,99.9999999999990621,53.9810943197935273]},"#ffee00":{"lch":[92.75564548426334,102.358730475882979,79.2433869538170228],"luv":[92.75564548426334,19.1039702538988,100.560171167180329],"rgb":[1,0.933333333333333348,0],"xyz":[0.718122766220146147,0.824102939779910892,0.121241474366986887],"hpluv":[79.2433869538170228,651.393632104361359,92.75564548426334],"hsluv":[79.2433869538170228,100.000000000024428,92.75564548426334]},"#ffee11":{"lch":[92.7734436379168,101.564402459740549,79.2015044483446218],"luv":[92.7734436379168,19.0286516433192254,99.765917344759373],"rgb":[1,0.933333333333333348,0.0666666666666666657],"xyz":[0.719134431719783307,0.824507605979765801,0.12656957933174251],"hpluv":[79.2015044483446218,648.021125158270593,92.7734436379168],"hsluv":[79.2015044483446218,100.000000000024428,92.7734436379168]},"#ffee22":{"lch":[92.8064212727168183,100.098587827824673,79.1224559985664797],"luv":[92.8064212727168183,18.8896613956421291,98.3000914418838079],"rgb":[1,0.933333333333333348,0.133333333333333331],"xyz":[0.721009789858260253,0.825257749235156601,0.136446465527721716],"hpluv":[79.1224559985664797,641.762708667564539,92.8064212727168183],"hsluv":[79.1224559985664797,100.000000000024357,92.8064212727168183]},"#ffee33":{"lch":[92.8606749716073665,97.7038183815635506,78.9881622996309147],"luv":[92.8606749716073665,18.6625824309063972,95.9048702796014396],"rgb":[1,0.933333333333333348,0.2],"xyz":[0.72409754059071807,0.826492849528139728,0.152708619385332867],"hpluv":[78.9881622996309147,631.438241912838748,92.8606749716073665],"hsluv":[78.9881622996309147,100.000000000024599,92.8606749716073665]},"#ffee44":{"lch":[92.9389094487226828,94.2867391890675606,78.7846200921967181],"luv":[92.9389094487226828,18.3385503337116411,92.4861436030564192],"rgb":[1,0.933333333333333348,0.266666666666666663],"xyz":[0.728555535834936929,0.828276047625827294,0.176187394338219505],"hpluv":[78.7846200921967181,616.484076987319668,92.9389094487226828],"hsluv":[78.7846200921967181,100.000000000025381,92.9389094487226828]},"#ffee55":{"lch":[93.0433700241155179,89.7896797607108,78.4929149488566082],"luv":[93.0433700241155179,17.9120631143144244,87.984911129805738],"rgb":[1,0.933333333333333348,0.333333333333333315],"xyz":[0.734517949874298859,0.830661013241572,0.207589441612193393],"hpluv":[78.4929149488566082,596.384103057951847,93.0433700241155179],"hsluv":[78.4929149488566082,100.000000000025906,93.0433700241155179]},"#ffee66":{"lch":[93.1759694096933,84.1867368500463,78.0854442567743661],"luv":[93.1759694096933,17.3805845725397461,82.3730656305550895],"rgb":[1,0.933333333333333348,0.4],"xyz":[0.7421029456478071,0.833695011550975362,0.247537086019337382],"hpluv":[78.0854442567743661,570.62648367707834,93.1759694096933],"hsluv":[78.0854442567743661,100.000000000026517,93.1759694096933]},"#ffee77":{"lch":[93.3383558005883742,77.4816602435733586,77.5195453952684659],"luv":[93.3383558005883742,16.7442947506152713,75.6507519288807515],"rgb":[1,0.933333333333333348,0.466666666666666674],"xyz":[0.751416958668009,0.837420616759056213,0.296590887925735291],"hpluv":[77.5195453952684659,538.663675570032183,93.3383558005883742],"hsluv":[77.5195453952684659,100.00000000002693,93.3383558005883742]},"#ffee88":{"lch":[93.5319535615141433,69.7063855050026433,76.7254067288761235],"luv":[93.5319535615141433,16.0058531534094222,67.8438858336072599],"rgb":[1,0.933333333333333348,0.533333333333333326],"xyz":[0.762557375769952861,0.841876783599833756,0.355263751329307431],"hpluv":[76.7254067288761235,499.867858345774721,93.5319535615141433],"hsluv":[76.7254067288761235,100.000000000028109,93.5319535615141433]},"#ffee99":{"lch":[93.7579894103796647,60.9203426164438397,75.5807218945013517],"luv":[93.7579894103796647,15.1701259512809905,59.0013171304435744],"rgb":[1,0.933333333333333348,0.6],"xyz":[0.775614339879025505,0.847099569243463,0.424030428970425366],"hpluv":[75.5807218945013517,453.479030486808085,93.7579894103796647],"hsluv":[75.5807218945013517,100.000000000029459,93.7579894103796647]},"#ffeeaa":{"lch":[94.0175103342715204,51.2122166590618946,73.8511258956299],"luv":[94.0175103342715204,14.2438643230739057,49.191497886124175],"rgb":[1,0.933333333333333348,0.66666666666666663],"xyz":[0.790672032844278116,0.853122646429564,0.503334278587424],"hpluv":[73.8511258956299,398.552269307706354,94.0175103342715204],"hsluv":[73.8511258956299,100.00000000003169,94.0175103342715204]},"#ffeebb":{"lch":[94.3113965930375855,40.7102572776027571,71.0277189369888],"luv":[94.3113965930375855,13.2353397134719373,38.4987120599845625],"rgb":[1,0.933333333333333348,0.733333333333333282],"xyz":[0.80780962495161468,0.859977683272498794,0.593592263686065658],"hpluv":[71.0277189369888,333.94796839081863,94.3113965930375855],"hsluv":[71.0277189369888,100.000000000032855,94.3113965930375855]},"#ffeecc":{"lch":[94.6403717602024841,29.6267857036886042,65.7803861656043125],"luv":[94.6403717602024841,12.1539519061426287,27.0190281874729799],"rgb":[1,0.933333333333333348,0.8],"xyz":[0.827102000395336434,0.867694633449987651,0.695198774356335814],"hpluv":[65.7803861656043125,258.601677072085806,94.6403717602024841],"hsluv":[65.7803861656043125,100.000000000035726,94.6403717602024841]},"#ffeedd":{"lch":[95.0050109981125814,18.4911495042727,53.4580761074439366],"luv":[95.0050109981125814,11.0098304435300403,14.8561853648264481],"rgb":[1,0.933333333333333348,0.866666666666666696],"xyz":[0.84862032594597,0.876301963670241157,0.808528622256341811],"hpluv":[53.4580761074439366,173.670551799097524,95.0050109981125814],"hsluv":[53.4580761074439366,100.000000000039279,95.0050109981125814]},"#ffeeee":{"lch":[95.4057483293867,10.0393308083340358,12.1770506300655121],"luv":[95.4057483293867,9.81345048674430487,2.11762900985580904],"rgb":[1,0.933333333333333348,0.933333333333333348],"xyz":[0.872432506212144743,0.885826835776711174,0.933939438324865],"hpluv":[12.1770506300655121,102.829227108855335,95.4057483293867],"hsluv":[12.1770506300655121,100.000000000042746,95.4057483293867]},"#ffeeff":{"lch":[95.8428833991312104,14.017983351086059,307.715012949261848],"luv":[95.8428833991312104,8.57528179129596,-11.0891117512266888],"rgb":[1,0.933333333333333348,1],"xyz":[0.898603554621976164,0.896295255140643898,1.07177362661664688],"hpluv":[307.715012949261848,159.207478793902965,95.8428833991312104],"hsluv":[307.715012949261848,100.000000000047876,95.8428833991312104]},"#aa6600":{"lch":[49.5566255632669623,74.0434564420528574,40.5370999312324685],"luv":[49.5566255632669623,56.2719368465296,48.1238253407432595],"rgb":[0.66666666666666663,0.4,0],"xyz":[0.213283568900016929,0.180499417461687406,0.0236077699189200241],"hpluv":[40.5370999312324685,189.593866720893345,49.5566255632669623],"hsluv":[40.5370999312324685,100.000000000002302,49.5566255632669623]},"#aa6611":{"lch":[49.6055800152373934,72.4782904829715449,39.6736286483530876],"luv":[49.6055800152373934,55.7860674256664097,46.2711278500211662],"rgb":[0.66666666666666663,0.4,0.0666666666666666657],"xyz":[0.214295234399654061,0.180904083661542259,0.0289358748836756538],"hpluv":[39.6736286483530876,185.402990863318706,49.6055800152373934],"hsluv":[39.6736286483530876,96.4267217319678878,49.6055800152373934]},"#aa6622":{"lch":[49.6961357673044404,69.6784302133091,38.0044715349972151],"luv":[49.6961357673044404,54.9040042209680124,42.902610147809348],"rgb":[0.66666666666666663,0.4,0.133333333333333331],"xyz":[0.216170592538131062,0.181654226916933087,0.0388127610796548533],"hpluv":[38.0044715349972151,177.916023719914563,49.6961357673044404],"hsluv":[38.0044715349972151,89.9454244119252593,49.6961357673044404]},"#aa6633":{"lch":[49.8446929303716502,65.3554895773238798,35.0519229290669685],"luv":[49.8446929303716502,53.5020897896209959,37.5348692023167061],"rgb":[0.66666666666666663,0.4,0.2],"xyz":[0.219258343270588796,0.182889327209916186,0.055074914937266],"hpluv":[35.0519229290669685,166.380518722129068,49.8446929303716502],"hsluv":[35.0519229290669685,79.6601301034586,49.8446929303716502]},"#aa6644":{"lch":[50.0579996788189163,59.7471791719702878,30.3078082111971625],"luv":[50.0579996788189163,51.5813401714318687,30.1511320703974341],"rgb":[0.66666666666666663,0.4,0.266666666666666663],"xyz":[0.223716338514807683,0.18467252530760378,0.0785536898901526282],"hpluv":[30.3078082111971625,151.454869534606559,50.0579996788189163],"hsluv":[30.3078082111971625,65.6016329960131,50.0579996788189163]},"#aa6655":{"lch":[50.3411543587309183,53.4384070136854916,23.0123473649378063],"luv":[50.3411543587309183,49.1858121787411307,20.8906492114991877],"rgb":[0.66666666666666663,0.4,0.333333333333333315],"xyz":[0.229678752554169696,0.187057490923348613,0.109955737164126544],"hpluv":[23.0123473649378063,134.70064023894011,50.3411543587309183],"hsluv":[23.0123473649378063,48.1262851503794238,50.3411543587309183]},"#aa6666":{"lch":[50.6979081899742283,47.4599132867605107,12.1770506300620198],"luv":[50.6979081899742283,46.3920870859415544,10.0108753362152232],"rgb":[0.66666666666666663,0.4,0.4],"xyz":[0.237263748327677854,0.190091489232751903,0.149903381571270505],"hpluv":[12.1770506300620198,118.788999996072334,50.6979081899742283],"hsluv":[12.1770506300620198,27.8359446414257086,50.6979081899742283]},"#aa6677":{"lch":[51.1308297914663399,43.3502150416948382,357.146673366158041],"luv":[51.1308297914663399,43.29647113668576,-2.15794607701909591],"rgb":[0.66666666666666663,0.4,0.466666666666666674],"xyz":[0.246577761347879787,0.193817094440832727,0.198957183477668414],"hpluv":[357.146673366158041,107.584013476394517,51.1308297914663399],"hsluv":[357.146673366158041,31.9217683762365354,51.1308297914663399]},"#aa6688":{"lch":[51.6414184020027,42.8134625942885876,339.120025752150127],"luv":[51.6414184020027,40.0018640870324234,-15.2592086582212207],"rgb":[0.66666666666666663,0.4,0.533333333333333326],"xyz":[0.257718178449823587,0.198273261281610325,0.257630046881240582],"hpluv":[339.120025752150127,105.201399585535427,51.6414184020027],"hsluv":[339.120025752150127,36.2396804223311,51.6414184020027]},"#aa6699":{"lch":[52.2302006219705675,46.6703467022409342,321.661853982703349],"luv":[52.2302006219705675,36.6065194780657563,-28.949680361091449],"rgb":[0.66666666666666663,0.4,0.6],"xyz":[0.270775142558896342,0.203496046925239482,0.326396724522358461],"hpluv":[321.661853982703349,113.385797667979,52.2302006219705675],"hsluv":[321.661853982703349,40.6514838109423,52.2302006219705675]},"#aa66aa":{"lch":[52.8968256208086274,54.2656136904176165,307.715012949245079],"luv":[52.8968256208086274,33.1961393674155048,-42.9275338250028753],"rgb":[0.66666666666666663,0.4,0.66666666666666663],"xyz":[0.285832835524148843,0.209519124111340577,0.405700574139357117],"hpluv":[307.715012949245079,130.177052782763241,52.8968256208086274],"hsluv":[307.715012949245079,45.0372955528084091,52.8968256208086274]},"#aa66bb":{"lch":[53.6401644756464293,64.2916348467718848,297.653919381785329],"luv":[53.6401644756464293,29.8396642728746109,-56.9474209016772193],"rgb":[0.66666666666666663,0.4,0.733333333333333282],"xyz":[0.302970427631485517,0.216374160954275335,0.495958559237998808],"hpluv":[297.653919381785329,152.091062924306783,53.6401644756464293],"hsluv":[297.653919381785329,49.3013965401631964,53.6401644756464293]},"#aa66cc":{"lch":[54.4584144535918853,75.6506824974921699,290.576693925999962],"luv":[54.4584144535918853,26.5882539678026326,-70.824363839571447],"rgb":[0.66666666666666663,0.4,0.8],"xyz":[0.322262803075207271,0.224091111131764137,0.597565069908269],"hpluv":[290.576693925999962,176.273563499159138,54.4584144535918853],"hsluv":[290.576693925999962,59.8478295858589107,54.4584144535918853]},"#aa66dd":{"lch":[55.3492064676394619,87.6329338161637423,285.539109011475546],"luv":[55.3492064676394619,23.4765185392287,-84.4297587732275],"rgb":[0.66666666666666663,0.4,0.866666666666666696],"xyz":[0.343781128625840759,0.232698441352017671,0.710894917808275],"hpluv":[285.539109011475546,200.907097340780666,55.3492064676394619],"hsluv":[285.539109011475546,72.9499123576365,55.3492064676394619]},"#aa66ee":{"lch":[56.3097127205812171,99.8160041995885337,281.866291349003632],"luv":[56.3097127205812171,20.525011879724925,-97.6829492885499775],"rgb":[0.66666666666666663,0.4,0.933333333333333348],"xyz":[0.367593308892015525,0.242223313458487716,0.836305733876798185],"hpluv":[281.866291349003632,224.934563930918017,56.3097127205812171],"hsluv":[281.866291349003632,86.3166325899195215,56.3097127205812171]},"#aa66ff":{"lch":[57.3367512293125543,111.956114799504135,279.118878442970129],"luv":[57.3367512293125543,17.7431860168323468,-110.541173283857603],"rgb":[0.66666666666666663,0.4,1],"xyz":[0.39376435730184689,0.252691732822420412,0.97413992216858],"hpluv":[279.118878442970129,247.773048158040382,57.3367512293125543],"hsluv":[279.118878442970129,99.9999999999988631,57.3367512293125543]},"#887700":{"lch":[50.0114915023736586,55.8665567864094825,73.357205010908],"luv":[50.0114915023736586,16.0004093344436384,53.5262465366231766],"rgb":[0.533333333333333326,0.466666666666666674,0],"xyz":[0.167496530942664812,0.184282743437969299,0.0267477295612209565],"hpluv":[73.357205010908,141.749463920516746,50.0114915023736586],"hsluv":[73.357205010908,100.000000000002359,50.0114915023736586]},"#887711":{"lch":[50.0597743565714524,53.993823922257576,73.0031869817398302],"luv":[50.0597743565714524,15.783394234863108,51.6354286142242103],"rgb":[0.533333333333333326,0.466666666666666674,0.0666666666666666657],"xyz":[0.168508196442301944,0.184687409637824151,0.0320758345259765862],"hpluv":[73.0031869817398302,136.865669051735267,50.0597743565714524],"hsluv":[73.0031869817398302,96.4507191106164328,50.0597743565714524]},"#887722":{"lch":[50.1490916772086592,50.5946145563497751,72.2920831328592755],"luv":[50.1490916772086592,15.3890953737340599,48.1974145124374616],"rgb":[0.533333333333333326,0.466666666666666674,0.133333333333333331],"xyz":[0.170383554580778945,0.18543755289321498,0.0419527207219557857],"hpluv":[72.2920831328592755,128.020802989304741,50.1490916772086592],"hsluv":[72.2920831328592755,90.012010730737714,50.1490916772086592]},"#887733":{"lch":[50.2956280558193356,45.1970113165044083,70.9372107781068735],"luv":[50.2956280558193356,14.7615306672340392,42.718462569532349],"rgb":[0.533333333333333326,0.466666666666666674,0.2],"xyz":[0.173471305313236679,0.186672653186198079,0.058214874579566929],"hpluv":[70.9372107781068735,114.029917097227894,50.2956280558193356],"hsluv":[70.9372107781068735,79.7918184760720237,50.2956280558193356]},"#887744":{"lch":[50.5060566549544916,37.8272673959478567,68.4411772520018076],"luv":[50.5060566549544916,13.89986571870684,35.1809023711225777],"rgb":[0.533333333333333326,0.466666666666666674,0.266666666666666663],"xyz":[0.177929300557455566,0.188455851283885673,0.0816936495324535605],"hpluv":[68.4411772520018076,95.0387759917387598,50.5060566549544916],"hsluv":[68.4411772520018076,65.8173762074568316,50.5060566549544916]},"#887755":{"lch":[50.7854328179731453,28.7445471843262688,63.5083223958924279],"luv":[50.7854328179731453,12.8220173934607509,25.7263456945161408],"rgb":[0.533333333333333326,0.466666666666666674,0.333333333333333315],"xyz":[0.183891714596817579,0.190840816899630505,0.113095696806427476],"hpluv":[63.5083223958924279,71.82169329487634,50.7854328179731453],"hsluv":[63.5083223958924279,48.4385690265679756,50.7854328179731453]},"#887766":{"lch":[51.1374932189691549,18.6360854649452037,51.6613245975388082],"luv":[51.1374932189691549,11.5601245482137447,14.6173596072111405],"rgb":[0.533333333333333326,0.466666666666666674,0.4],"xyz":[0.191476710370325737,0.193874815209033796,0.153043341213571438],"hpluv":[51.6613245975388082,46.2439140208651,51.1374932189691549],"hsluv":[51.6613245975388082,28.2492665088726049,51.1374932189691549]},"#887777":{"lch":[51.5648179079599629,10.388802862097231,12.1770506300635812],"luv":[51.5648179079599629,10.1550595801770775,2.19134429758843829],"rgb":[0.533333333333333326,0.466666666666666674,0.466666666666666674],"xyz":[0.20079072339052767,0.197600420417114619,0.202097143119969347],"hpluv":[12.1770506300635812,25.5653264810281158,51.5648179079599629],"hsluv":[12.1770506300635812,5.9907484084339373,51.5648179079599629]},"#887788":{"lch":[52.0689409540354262,14.1414171783799034,307.715012949252923],"luv":[52.0689409540354262,8.65079050214889378,-11.1867557182995974],"rgb":[0.533333333333333326,0.466666666666666674,0.533333333333333326],"xyz":[0.21193114049247147,0.202056587257892217,0.260770006523541542],"hpluv":[307.715012949252923,34.4630346227371902,52.0689409540354262],"hsluv":[307.715012949252923,11.9231603633022036,52.0689409540354262]},"#887799":{"lch":[52.6504441343355154,26.1446518461971777,285.73365348909897],"luv":[52.6504441343355154,7.08953673880610147,-25.1650807467009763],"rgb":[0.533333333333333326,0.466666666666666674,0.6],"xyz":[0.224988104601544198,0.207279372901521375,0.329536684164659421],"hpluv":[285.73365348909897,63.0115482025775862,52.6504441343355154],"hsluv":[285.73365348909897,20.7849368541844512,52.6504441343355154]},"#8877aa":{"lch":[53.3090485775123142,39.8165287152511951,277.951975125090712],"luv":[53.3090485775123142,5.50833871717125412,-39.4336678931764482],"rgb":[0.533333333333333326,0.466666666666666674,0.66666666666666663],"xyz":[0.240045797566796726,0.213302450087622469,0.408840533781658],"hpluv":[277.951975125090712,94.7767450693341118,53.3090485775123142],"hsluv":[277.951975125090712,33.2193336653547036,53.3090485775123142]},"#8877bb":{"lch":[54.043710164283695,53.8841311835491,274.190220195010625],"luv":[54.043710164283695,3.93720379281895738,-53.7400969453883732],"rgb":[0.533333333333333326,0.466666666666666674,0.733333333333333282],"xyz":[0.2571833896741334,0.220157486930557228,0.499098518880299769],"hpluv":[274.190220195010625,126.518797380186697,54.043710164283695],"hsluv":[274.190220195010625,46.027457746288988,54.043710164283695]},"#8877cc":{"lch":[54.8527197178713095,67.9360625264533695,272.023364737824068],"luv":[54.8527197178713095,2.39862107173988059,-67.8937052203839215],"rgb":[0.533333333333333326,0.466666666666666674,0.8],"xyz":[0.276475765117855099,0.22787443710804603,0.600705029550569924],"hpluv":[272.023364737824068,157.159823716941304,54.8527197178713095],"hsluv":[272.023364737824068,59.1220253911564413,54.8527197178713095]},"#8877dd":{"lch":[55.7338064566187228,81.7667290312133,270.636302714775695],"luv":[55.7338064566187228,0.90804807322034331,-81.7616867803042595],"rgb":[0.533333333333333326,0.466666666666666674,0.866666666666666696],"xyz":[0.297994090668488698,0.236481767328299564,0.714034877450575922],"hpluv":[270.636302714775695,186.164661983392193,55.7338064566187228],"hsluv":[270.636302714775695,72.4679508704990809,55.7338064566187228]},"#8877ee":{"lch":[56.6842419440431939,95.2620356561917419,269.684203716511661],"luv":[56.6842419440431939,-0.525051666249150784,-95.2605886928551229],"rgb":[0.533333333333333326,0.466666666666666674,0.933333333333333348],"xyz":[0.321806270934663408,0.246006639434769608,0.839445693519099145],"hpluv":[269.684203716511661,213.253830698535069,56.6842419440431939],"hsluv":[269.684203716511661,86.076772525698,56.6842419440431939]},"#8877ff":{"lch":[57.7009414002340577,108.362660778640901,268.997474997449615],"luv":[57.7009414002340577,-1.89596396936046907,-108.346073171359961],"rgb":[0.533333333333333326,0.466666666666666674,1],"xyz":[0.347977319344494829,0.256475058798702304,0.977279881810881],"hpluv":[268.997474997449615,238.306609639193027,57.7009414002340577],"hsluv":[268.997474997449615,99.9999999999988631,57.7009414002340577]},"#ffff00":{"lch":[97.1385593417967357,107.085608846920664,85.8743202181747307],"luv":[97.1385593417967357,7.70421917727499928,106.808111250898],"rgb":[1,1,0],"xyz":[0.76997513864982,0.92780768463926,0.138525598510210984],"hpluv":[85.8743202181747307,1784.23591835690763,97.1385593417967357],"hsluv":[85.8743202181747307,100.000000000072717,97.1385593417967357]},"#ffff11":{"lch":[97.1550055288865337,106.340968495662651,85.8743202181747307],"luv":[97.1550055288865337,7.65064640931757278,106.065400532478591],"rgb":[1,1,0.0666666666666666657],"xyz":[0.770986804149457194,0.928212350839114908,0.143853703474966621],"hpluv":[85.8743202181747307,1782.29032599077573,97.1550055288865337],"hsluv":[85.8743202181747307,100.000000000072447,97.1550055288865337]},"#ffff22":{"lch":[97.1854797367251564,104.966044999604463,85.8743202181747],"luv":[97.1854797367251564,7.5517282439387623,104.694039961158666],"rgb":[1,1,0.133333333333333331],"xyz":[0.77286216228793414,0.928962494094505709,0.1537305896709458],"hpluv":[85.8743202181747,1778.69938503976459,97.1854797367251564],"hsluv":[85.8743202181747,100.00000000007401,97.1854797367251564]},"#ffff33":{"lch":[97.2356193677236291,102.717517786777336,85.8743202181746312],"luv":[97.2356193677236291,7.38995910744871409,102.451339496695468],"rgb":[1,1,0.2],"xyz":[0.775949913020392,0.930197594387488835,0.16999274352855695],"hpluv":[85.8743202181746312,1772.83090468185333,97.2356193677236291],"hsluv":[85.8743202181746312,100.000000000075445,97.2356193677236291]},"#ffff44":{"lch":[97.3079311184623776,99.5042093292491,85.874320218174546],"luv":[97.3079311184623776,7.15877927938833114,99.2463578851537704],"rgb":[1,1,0.266666666666666663],"xyz":[0.780407908264610817,0.931980792485176401,0.193471518481443588],"hpluv":[85.874320218174546,1764.45330998562531,97.3079311184623776],"hsluv":[85.874320218174546,100.000000000077918,97.3079311184623776]},"#ffff55":{"lch":[97.4045015397841212,95.2663481722239283,85.8743202181744323],"luv":[97.4045015397841212,6.8538885331141568,95.0194785612246875],"rgb":[1,1,0.333333333333333315],"xyz":[0.786370322303972746,0.934365758100921151,0.224873565755417504],"hpluv":[85.8743202181744323,1753.42077174454698,97.4045015397841212],"hsluv":[85.8743202181744323,100.000000000080163,97.4045015397841212]},"#ffff66":{"lch":[97.5271149532436539,89.9715947326486258,85.8743202181742333],"luv":[97.5271149532436539,6.47296021391862286,89.7384457454272706],"rgb":[1,1,0.4],"xyz":[0.793955318077481,0.93739975641032447,0.264821210162561438],"hpluv":[85.8743202181742333,1739.66322518688298,97.5271149532436539],"hsluv":[85.8743202181742333,100.000000000084981,97.5271149532436539]},"#ffff77":{"lch":[97.6773170086398608,83.6127156419164663,85.8743202181740202],"luv":[97.6773170086398608,6.01547392080898469,83.3960448134325389],"rgb":[1,1,0.466666666666666674],"xyz":[0.803269331097682837,0.941125361618405321,0.313875012068959403],"hpluv":[85.8743202181740202,1723.18045161093028,97.6773170086398608],"hsluv":[85.8743202181740202,100.00000000009112,97.6773170086398608]},"#ffff88":{"lch":[97.8564527859654589,76.2055692953657342,85.8743202181736791],"luv":[97.8564527859654589,5.48257057790026181,76.0080930657330214],"rgb":[1,1,0.533333333333333326],"xyz":[0.814409748199626748,0.945581528459182863,0.372547875472531542],"hpluv":[85.8743202181736791,1704.03672017478311,97.8564527859654589],"hsluv":[85.8743202181736791,100.000000000099803,97.8564527859654589]},"#ffff99":{"lch":[98.0656913545514612,67.7868897983338741,85.8743202181732102],"luv":[98.0656913545514612,4.87689300155069283,67.6112294162950889],"rgb":[1,1,0.6],"xyz":[0.827466712308699393,0.950804314102812076,0.441314553113649422],"hpluv":[85.8743202181732102,1682.35465810463256,98.0656913545514612],"hsluv":[85.8743202181732102,100.000000000112891,98.0656913545514612]},"#ffffaa":{"lch":[98.3060425431328611,58.4116937234916094,85.8743202181725707],"luv":[98.3060425431328611,4.20239933084915052,58.260327869924204],"rgb":[1,1,0.66666666666666663],"xyz":[0.842524405273952,0.956827391288913143,0.520618402730648078],"hpluv":[85.8743202181725707,1658.30791632356272,98.3060425431328611],"hsluv":[85.8743202181725707,100.000000000127613,98.3060425431328611]},"#ffffbb":{"lch":[98.5783690162300559,48.1503065934375414,85.8743202181715759],"luv":[98.5783690162300559,3.46414909943131732,48.0255317103199246],"rgb":[1,1,0.733333333333333282],"xyz":[0.859661997381288567,0.963682428131847901,0.610876387829289769],"hpluv":[85.8743202181715759,1632.1126639545671,98.5783690162300559],"hsluv":[85.8743202181715759,100.000000000152809,98.5783690162300559]},"#ffffcc":{"lch":[98.8833954570195317,37.0851031688938804,85.8743202181698706],"luv":[98.8833954570195317,2.66806871718659799,36.9890022353654899],"rgb":[1,1,0.8],"xyz":[0.878954372825010322,0.971399378309336758,0.712482898499559925],"hpluv":[85.8743202181698706,1604.018210645404,98.8833954570195317],"hsluv":[85.8743202181698706,100.00000000019709,98.8833954570195317]},"#ffffdd":{"lch":[99.2217159651800245,25.3071072074552177,85.8743202181663889],"luv":[99.2217159651800245,1.82070684164607655,25.2415273271332552],"rgb":[1,1,0.866666666666666696],"xyz":[0.900472698375643921,0.980006708529590265,0.825812746399565922],"hpluv":[85.8743202181663889,1574.29719653830034,99.2217159651800245],"hsluv":[85.8743202181663889,100.000000000286278,99.2217159651800245]},"#ffffee":{"lch":[99.5938003805277248,12.9126149352850259,85.8743202181558161],"luv":[99.5938003805277248,0.928991455386458775,12.8791536733888243],"rgb":[1,1,0.933333333333333348],"xyz":[0.92428487864181863,0.989531580636060282,0.951223562468089145],"hpluv":[85.8743202181558161,1543.23583838085528,99.5938003805277248],"hsluv":[85.8743202181558161,100.000000000556355,99.5938003805277248]},"#ffffff":{"lch":[99.99999999999973,5.29610712429325706e-12,0],"luv":[99.99999999999973,4.97935026544381416e-12,1.80411241501587473e-12],"rgb":[1,1,1],"xyz":[0.95045592705165,0.999999999999993,1.0890577507598711],"hpluv":[0,0,100],"hsluv":[0,0,100]},"#aa7700":{"lch":[53.7507838912622304,69.116848270999057,51.9676330333141223],"luv":[53.7507838912622304,42.5833417137676875,54.4407726194696622],"rgb":[0.66666666666666663,0.466666666666666674,0],"xyz":[0.231737306953434558,0.217406893568523163,0.0297590159367257245],"hpluv":[51.9676330333141223,163.169299961930307,53.7507838912622304],"hsluv":[51.9676330333141223,100.000000000002359,53.7507838912622304]},"#aa7711":{"lch":[53.7940335015026,67.5786316453491906,51.3090056740019378],"luv":[53.7940335015026,42.244752971039,52.7470596476588653],"rgb":[0.66666666666666663,0.466666666666666674,0.0666666666666666657],"xyz":[0.23274897245307169,0.217811559768378016,0.0350871209014813543],"hpluv":[51.3090056740019378,159.40965108533166,53.7940335015026],"hsluv":[51.3090056740019378,97.0120153186068,53.7940335015026]},"#aa7722":{"lch":[53.874065271669366,64.7981771198060272,50.0272013346139],"luv":[53.874065271669366,41.6278947732915157,49.6580520640260588],"rgb":[0.66666666666666663,0.466666666666666674,0.133333333333333331],"xyz":[0.234624330591548691,0.218561703023768844,0.0449640070974605538],"hpluv":[50.0272013346139,152.623836787181489,53.874065271669366],"hsluv":[50.0272013346139,91.5730337049880632,53.874065271669366]},"#aa7733":{"lch":[54.0054384284815,60.4215101577181812,47.7291529037971785],"luv":[54.0054384284815,40.6416884431496115,44.7103125713654705],"rgb":[0.66666666666666663,0.466666666666666674,0.2],"xyz":[0.237712081324006452,0.219796803316751943,0.0612261609550717],"hpluv":[47.7291529037971785,141.968961696257139,54.0054384284815],"hsluv":[47.7291529037971785,82.890357503842381,54.0054384284815]},"#aa7744":{"lch":[54.1942453736720324,54.5501661616690754,43.9413891432679051],"luv":[54.1942453736720324,39.2788485799816911,37.8535689532252277],"rgb":[0.66666666666666663,0.466666666666666674,0.266666666666666663],"xyz":[0.242170076568225312,0.221580001414439537,0.0847049359079583286],"hpluv":[43.9413891432679051,127.726858599491337,54.1942453736720324],"hsluv":[43.9413891432679051,70.9191698542686453,54.1942453736720324]},"#aa7755":{"lch":[54.4451912879813307,47.55778496198932,37.8352816528713],"luv":[54.4451912879813307,37.5600659479400178,29.1716361638701045],"rgb":[0.66666666666666663,0.466666666666666674,0.333333333333333315],"xyz":[0.248132490607587297,0.22396496703018437,0.116106983181932244],"hpluv":[37.8352816528713,110.841250641501858,54.4451912879813307],"hsluv":[37.8352816528713,55.8697139193963039,54.4451912879813307]},"#aa7766":{"lch":[54.7618668139504621,40.2221891209492881,27.9562221290694595],"luv":[54.7618668139504621,35.5285027246357359,18.8560333004309904],"rgb":[0.66666666666666663,0.466666666666666674,0.4],"xyz":[0.255717486381095482,0.226998965339587661,0.156054627589076206],"hpluv":[27.9562221290694595,93.2023334238246264,54.7618668139504621],"hsluv":[27.9562221290694595,38.157009054435612,54.7618668139504621]},"#aa7777":{"lch":[55.1468928183874851,34.0080558607991321,12.1770506300622881],"luv":[55.1468928183874851,33.2428902595124569,7.17343088244713467],"rgb":[0.66666666666666663,0.466666666666666674,0.466666666666666674],"xyz":[0.265031499401297388,0.230724570547668484,0.205108429495474115],"hpluv":[12.1770506300622881,78.2528356679829074,55.1468928183874851],"hsluv":[12.1770506300622881,20.6006796366476941,55.1468928183874851]},"#aa7788":{"lch":[55.6020140468043849,31.2700131437067519,349.739442339375785],"luv":[55.6020140468043849,30.7699397165362107,-5.56996695217490778],"rgb":[0.66666666666666663,0.466666666666666674,0.533333333333333326],"xyz":[0.276171916503241244,0.235180737388446082,0.263781292899046282],"hpluv":[349.739442339375785,71.363619208349732,55.6020140468043849],"hsluv":[349.739442339375785,23.0952607722130772,55.6020140468043849]},"#aa7799":{"lch":[56.1281730235999845,34.0192547961324365,325.92167501088062],"luv":[56.1281730235999845,28.1772086346441704,-19.0618627223027133],"rgb":[0.66666666666666663,0.466666666666666674,0.6],"xyz":[0.289228880612313943,0.240403523032075239,0.332547970540164162],"hpluv":[325.92167501088062,76.9100717288581706,56.1281730235999845],"hsluv":[325.92167501088062,27.5449434619861648,56.1281730235999845]},"#aa77aa":{"lch":[56.7255784680210127,41.7295245342496131,307.715012949246272],"luv":[56.7255784680210127,25.5273831431779215,-33.0106941416859],"rgb":[0.66666666666666663,0.466666666666666674,0.66666666666666663],"xyz":[0.304286573577566499,0.246426600218176334,0.411851820157162818],"hpluv":[307.715012949246272,93.3477446513022642,56.7255784680210127],"hsluv":[307.715012949246272,32.2954766233998285,56.7255784680210127]},"#aa77bb":{"lch":[57.3937746480490176,52.417961949749369,295.873528074876958],"luv":[57.3937746480490176,22.8744713506946127,-47.1635589771554891],"rgb":[0.66666666666666663,0.466666666666666674,0.733333333333333282],"xyz":[0.321424165684903118,0.25328163706111112,0.502109805255804509],"hpluv":[295.873528074876958,115.892323381948941,57.3937746480490176],"hsluv":[295.873528074876958,41.7229864085831679,57.3937746480490176]},"#aa77cc":{"lch":[58.1317139736185,64.5762938068646548,288.286403622885132],"luv":[58.1317139736185,20.2619194712353625,-61.3151885031081],"rgb":[0.66666666666666663,0.466666666666666674,0.8],"xyz":[0.340716541128624872,0.260998587238599922,0.603716315926074665],"hpluv":[288.286403622885132,140.961111207958226,58.1317139736185],"hsluv":[288.286403622885132,55.678510160825347,58.1317139736185]},"#aa77dd":{"lch":[58.9378328182195759,77.3666791836153,283.242275299631103],"luv":[58.9378328182195759,17.7223199365118553,-75.3095108466943088],"rgb":[0.66666666666666663,0.466666666666666674,0.866666666666666696],"xyz":[0.362234866679258416,0.269605917458853428,0.717046163826080662],"hpluv":[283.242275299631103,166.570895286205939,58.9378328182195759],"hsluv":[283.242275299631103,70.0408478070886105,58.9378328182195759]},"#aa77ee":{"lch":[59.8101292792768646,90.3373867943789151,279.736895248195651],"luv":[59.8101292792768646,15.2782276108220607,-89.0360556960445138],"rgb":[0.66666666666666663,0.466666666666666674,0.933333333333333348],"xyz":[0.386047046945433125,0.279130789565323445,0.842456979894603886],"hpluv":[279.736895248195651,191.660275847677298,59.8101292792768646],"hsluv":[279.736895248195651,84.8029379630096685,59.8101292792768646]},"#aa77ff":{"lch":[60.7462409754246551,103.238062985892157,277.202485092995744],"luv":[60.7462409754246551,12.9436026905507742,-102.423438716283115],"rgb":[0.66666666666666663,0.466666666666666674,1],"xyz":[0.412218095355264547,0.289599208929256169,0.980291168186385731],"hpluv":[277.202485092995744,215.655115976047284,60.7462409754246551],"hsluv":[277.202485092995744,99.999999999998721,60.7462409754246551]},"#888800":{"lch":[54.9099926918455452,60.532810441385358,85.8743202181747449],"luv":[54.9099926918455452,4.35500198466006783,60.375948006191166],"rgb":[0.533333333333333326,0.533333333333333326,0],"xyz":[0.189568900667635265,0.228427482887910871,0.0341051861362109063],"hpluv":[85.8743202181747449,139.887458074797593,54.9099926918455452],"hsluv":[85.8743202181747449,100.000000000002331,54.9099926918455452]},"#888811":{"lch":[54.9518410557904673,58.8347385736240369,85.8743202181746739],"luv":[54.9518410557904673,4.23283507550337568,58.6822764576347353],"rgb":[0.533333333333333326,0.533333333333333326,0.0666666666666666657],"xyz":[0.190580566167272397,0.228832149087765724,0.039433291100966536],"hpluv":[85.8743202181746739,135.85978011465275,54.9518410557904673],"hsluv":[85.8743202181746739,97.1207726442580395,54.9518410557904673]},"#888822":{"lch":[55.0292864560463215,55.7361292450240882,85.8743202181745602],"luv":[55.0292864560463215,4.00990721741558787,55.5916967480373643],"rgb":[0.533333333333333326,0.533333333333333326,0.133333333333333331],"xyz":[0.192455924305749398,0.229582292343156552,0.0493101772969457355],"hpluv":[85.8743202181745602,128.523412903997382,55.0292864560463215],"hsluv":[85.8743202181745602,91.8762944675706,55.0292864560463215]},"#888833":{"lch":[55.1564325013520573,50.7686053645684225,85.8743202181742902],"luv":[55.1564325013520573,3.65252126093227947,50.6370455210582335],"rgb":[0.533333333333333326,0.533333333333333326,0.2],"xyz":[0.195543675038207132,0.230817392636139651,0.0655723311545568788],"hpluv":[85.8743202181742902,116.798802852822334,55.1564325013520573],"hsluv":[85.8743202181742902,83.4948353914423,55.1564325013520573]},"#888844":{"lch":[55.3392041906722767,43.8756115710196184,85.8743202181737786],"luv":[55.3392041906722767,3.15660835961073616,43.7619139708837039],"rgb":[0.533333333333333326,0.533333333333333326,0.266666666666666663],"xyz":[0.20000167028242602,0.232600590733827245,0.0890511061074435173],"hpluv":[85.8743202181737786,100.607324583255647,55.3392041906722767],"hsluv":[85.8743202181737786,71.9201892491773833,55.3392041906722767]},"#888855":{"lch":[55.5822005995452173,35.1333862553221152,85.8743202181729],"luv":[55.5822005995452173,2.5276534453655044,35.0423429271758167],"rgb":[0.533333333333333326,0.533333333333333326,0.333333333333333315],"xyz":[0.205964084321788032,0.234985556349572078,0.120453153381417433],"hpluv":[85.8743202181729,80.2090919262666233,55.5822005995452173],"hsluv":[85.8743202181729,57.3383011101545321,55.5822005995452173]},"#888866":{"lch":[55.8889601924437187,24.7258905438507242,85.874320218171],"luv":[55.8889601924437187,1.778891507033598,24.6618168064052092],"rgb":[0.533333333333333326,0.533333333333333326,0.4],"xyz":[0.21354908009529619,0.238019554658975369,0.160400797788561394],"hpluv":[85.874320218171,56.1390732800859524,55.8889601924437187],"hsluv":[85.874320218171,40.1315986813270698,55.8889601924437187]},"#888877":{"lch":[56.2621011123828509,12.9137749110131566,85.8743202181651668],"luv":[56.2621011123828509,0.929074909242871283,12.8803106431998842],"rgb":[0.533333333333333326,0.533333333333333326,0.466666666666666674],"xyz":[0.222863093115498123,0.241745159867056192,0.209454599694959304],"hpluv":[85.8743202181651668,29.1257147579972724,56.2621011123828509],"hsluv":[85.8743202181651668,20.8208192205656601,56.2621011123828509]},"#888888":{"lch":[56.703410756754252,2.95076376078202623e-12,0],"luv":[56.703410756754252,2.78254170310414444e-12,9.82073542272051e-13],"rgb":[0.533333333333333326,0.533333333333333326,0.533333333333333326],"xyz":[0.234003510217441923,0.24620132670783379,0.268127463098531471],"hpluv":[0,6.60335407213460764e-12,56.703410756754252],"hsluv":[0,2.14018342731852893e-12,56.703410756754252]},"#888899":{"lch":[57.2139150634865246,13.7029898302256612,265.874320218188814],"luv":[57.2139150634865246,-0.985854571612734376,-13.6674804207248872],"rgb":[0.533333333333333326,0.533333333333333326,0.6],"xyz":[0.247060474326514651,0.251424112351462947,0.33689414073964935],"hpluv":[265.874320218188814,30.3915601408835876,57.2139150634865246],"hsluv":[265.874320218188814,12.5386286039598396,57.2139150634865246]},"#8888aa":{"lch":[57.7939415002624486,27.9001972781706051,265.874320218182902],"luv":[57.7939415002624486,-2.00726537612613365,-27.8278977623291475],"rgb":[0.533333333333333326,0.533333333333333326,0.66666666666666663],"xyz":[0.262118167291767179,0.25744718953756407,0.416197990356647951],"hpluv":[265.874320218182902,61.2582077856443377,57.7939415002624486],"hsluv":[265.874320218182902,25.8334660761224093,57.7939415002624486]},"#8888bb":{"lch":[58.4431822360017605,42.3326731508362428,265.874320218181083],"luv":[58.4431822360017605,-3.04560244672749647,-42.2229738629578222],"rgb":[0.533333333333333326,0.533333333333333326,0.733333333333333282],"xyz":[0.279255759399103853,0.264302226380498828,0.506455975455289753],"hpluv":[265.874320218181083,91.9138937804104756,58.4431822360017605],"hsluv":[265.874320218181083,39.7348050695490116,58.4431822360017605]},"#8888cc":{"lch":[59.1607600358786812,56.7874726838639603,265.874320218180117],"luv":[59.1607600358786812,-4.0855455816182138,-56.6403157752595448],"rgb":[0.533333333333333326,0.533333333333333326,0.8],"xyz":[0.298548134842825608,0.27201917655798763,0.608062486125559909],"hpluv":[265.874320218180117,121.803038601679276,59.1607600358786812],"hsluv":[265.874320218180117,54.1372084350884322,59.1607600358786812]},"#8888dd":{"lch":[59.9452971965242654,71.1002375720468649,265.874320218179605],"luv":[59.9452971965242654,-5.11527010687093497,-70.9159911059223447],"rgb":[0.533333333333333326,0.533333333333333326,0.866666666666666696],"xyz":[0.320066460393459096,0.280626506778241136,0.721392334025565907],"hpluv":[265.874320218179605,150.506501481916018,59.9452971965242654],"hsluv":[265.874320218179605,68.9826297466640881,59.9452971965242654]},"#8888ee":{"lch":[60.7949865781877747,85.1524606014505,265.874320218179207],"luv":[60.7949865781877747,-6.12625008179143,-84.9317997361231676],"rgb":[0.533333333333333326,0.533333333333333326,0.933333333333333348],"xyz":[0.343878640659633861,0.290151378884711153,0.84680315009408913],"hpluv":[265.874320218179207,177.733282428962553,60.7949865781877747],"hsluv":[265.874320218179207,84.2595641984559194,60.7949865781877747]},"#8888ff":{"lch":[61.7076631467729726,98.8655769196339,265.874320218179],"luv":[61.7076631467729726,-7.11283319838656247,-98.6093804034077408],"rgb":[0.533333333333333326,0.533333333333333326,1],"xyz":[0.370049689069465226,0.300619798248643877,0.984637338385871],"hpluv":[265.874320218179,203.303722842755434,61.7076631467729726],"hsluv":[265.874320218179,99.9999999999986073,61.7076631467729726]},"#aa8800":{"lch":[58.1840377660698493,67.6904417424552634,64.2288134226940173],"luv":[58.1840377660698493,29.4303340948507071,60.9577832467208225],"rgb":[0.66666666666666663,0.533333333333333326,0],"xyz":[0.253809676678405038,0.261551633018464735,0.0371164725117156744],"hpluv":[64.2288134226940173,147.625988392398114,58.1840377660698493],"hsluv":[64.2288134226940173,100.000000000002373,58.1840377660698493]},"#aa8811":{"lch":[58.2222766199063955,66.2027965316335809,63.8264905250604926],"luv":[58.2222766199063955,29.2014551434886229,59.4145208354969085],"rgb":[0.66666666666666663,0.533333333333333326,0.0666666666666666657],"xyz":[0.254821342178042143,0.261956299218319588,0.0424445774764713041],"hpluv":[63.8264905250604926,144.286759049554206,58.2222766199063955],"hsluv":[63.8264905250604926,97.5015111084285877,58.2222766199063955]},"#aa8822":{"lch":[58.2930572278629,63.4916551128893474,63.0419050459203],"luv":[58.2930572278629,28.7832252220538578,56.5925455761676304],"rgb":[0.66666666666666663,0.533333333333333326,0.133333333333333331],"xyz":[0.2566967003165192,0.262706442473710389,0.0523214636724505036],"hpluv":[63.0419050459203,138.209896631886636,58.2930572278629],"hsluv":[63.0419050459203,92.9399945222758106,58.2930572278629]},"#aa8833":{"lch":[58.4093035212624585,59.1585039849960737,61.628621374019076],"luv":[58.4093035212624585,28.1112178941065629,52.0527426967384628],"rgb":[0.66666666666666663,0.533333333333333326,0.2],"xyz":[0.259784451048976905,0.263941542766693515,0.0685836175300616468],"hpluv":[61.628621374019076,128.521114132395894,58.4093035212624585],"hsluv":[61.628621374019076,85.621599137751673,58.4093035212624585]},"#aa8844":{"lch":[58.5764981609594315,53.1878639814319953,59.2736460930020499],"luv":[58.5764981609594315,27.1757201885359478,45.7212106919940453],"rgb":[0.66666666666666663,0.533333333333333326,0.266666666666666663],"xyz":[0.264242446293195821,0.265724740864381082,0.0920623924829482854],"hpluv":[59.2736460930020499,115.22015920662389,58.5764981609594315],"hsluv":[59.2736460930020499,75.4571473133808581,58.5764981609594315]},"#aa8855":{"lch":[58.7989500318507083,45.736161182952344,55.3795129841665315],"luv":[58.7989500318507083,25.9844527075537677,37.6378088793954433],"rgb":[0.66666666666666663,0.533333333333333326,0.333333333333333315],"xyz":[0.270204860332557806,0.268109706480125942,0.123464439756922201],"hpluv":[55.3795129841665315,98.7027982667044483,58.7989500318507083],"hsluv":[55.3795129841665315,62.5553187882680319,58.7989500318507083]},"#aa8866":{"lch":[59.0800404303715112,37.1980666756204,48.681601920545944],"luv":[59.0800404303715112,24.5597583059268025,27.9376884576795419],"rgb":[0.66666666666666663,0.533333333333333326,0.4],"xyz":[0.277789856106066,0.271143704789529261,0.163412084164066163],"hpluv":[48.681601920545944,79.8948730878687883,59.0800404303715112],"hsluv":[48.681601920545944,47.1909371341698645,59.0800404303715112]},"#aa8877":{"lch":[59.4223523155875881,28.4467220316745042,36.2691810942760355],"luv":[59.4223523155875881,22.9350730451589406,16.8285001934390941],"rgb":[0.66666666666666663,0.533333333333333326,0.466666666666666674],"xyz":[0.287103869126267897,0.274869309997610056,0.212465886070464072],"hpluv":[36.2691810942760355,60.7465636644032,59.4223523155875881],"hsluv":[36.2691810942760355,29.7643761063162415,59.4223523155875881]},"#aa8888":{"lch":[59.8277504540149323,21.6376696880998622,12.1770506300627677],"luv":[59.8277504540149323,21.1508320810015036,4.56410471095846049],"rgb":[0.66666666666666663,0.533333333333333326,0.533333333333333326],"xyz":[0.298244286228211697,0.279325476838387654,0.271138749474036211],"hpluv":[12.1770506300627677,45.8930730764781174,59.8277504540149323],"hsluv":[12.1770506300627677,15.9793094134510145,59.8277504540149323]},"#aa8899":{"lch":[60.2974403890441693,21.076671863141442,335.972081494736813],"luv":[60.2974403890441693,19.2503183610400761,-8.58203587880762697],"rgb":[0.66666666666666663,0.533333333333333326,0.6],"xyz":[0.311301250337284396,0.284548262482016812,0.339905427115154146],"hpluv":[335.972081494736813,44.3549898137704872,60.2974403890441693],"hsluv":[335.972081494736813,18.3674189175529285,60.2974403890441693]},"#aa88aa":{"lch":[60.8320193568852119,28.2409959286201691,307.715012949248376],"luv":[60.8320193568852119,17.2759870010776844,-22.3404145928166677],"rgb":[0.66666666666666663,0.533333333333333326,0.66666666666666663],"xyz":[0.326358943302536952,0.290571339668117934,0.419209276732152747],"hpluv":[307.715012949248376,58.9097393716334068,60.8320193568852119],"hsluv":[307.715012949248376,20.7885743891348937,60.8320193568852119]},"#aa88bb":{"lch":[61.4315255818646904,39.5305448534603343,292.718173175904553],"luv":[61.4315255818646904,15.2666424694527869,-36.4635928581008],"rgb":[0.66666666666666663,0.533333333333333326,0.733333333333333282],"xyz":[0.343496535409873627,0.297426376511052692,0.509467261830794493],"hpluv":[292.718173175904553,81.6546320542196185,61.4315255818646904],"hsluv":[292.718173175904553,35.3775178816614826,61.4315255818646904]},"#aa88cc":{"lch":[62.0954889075932783,52.4408733717370339,284.64164926901276],"luv":[62.0954889075932783,13.2556230251873277,-50.737891739849438],"rgb":[0.66666666666666663,0.533333333333333326,0.8],"xyz":[0.362788910853595326,0.305143326688541494,0.611073772501064649],"hpluv":[284.64164926901276,107.164068097081099,62.0954889075932783],"hsluv":[284.64164926901276,50.6369924233865092,62.0954889075932783]},"#aa88dd":{"lch":[62.8229837406334894,65.9589053782665644,279.83800714750987],"luv":[62.8229837406334894,11.2699451472508105,-64.988964717689413],"rgb":[0.66666666666666663,0.533333333333333326,0.866666666666666696],"xyz":[0.384307236404228925,0.313750656908795,0.724403620401070647],"hpluv":[279.83800714750987,133.227600809414753,62.8229837406334894],"hsluv":[279.83800714750987,66.50088929558828,62.8229837406334894]},"#aa88ee":{"lch":[63.6126841134072,79.6308922643202237,276.728713669089302],"luv":[63.6126841134072,9.33022805769535,-79.0823990986816767],"rgb":[0.66666666666666663,0.533333333333333326,0.933333333333333348],"xyz":[0.408119416670403634,0.323275529015265,0.84981443646959387],"hpluv":[276.728713669089302,158.846330872338797,63.6126841134072],"hsluv":[276.728713669089302,82.9476730407324112,63.6126841134072]},"#aa88ff":{"lch":[64.4629200033750323,93.219110130063271,274.584640952303687],"luv":[64.4629200033750323,7.4511637136690565,-92.9208407880221756],"rgb":[0.66666666666666663,0.533333333333333326,1],"xyz":[0.434290465080235055,0.333743948379197741,0.987648624761375715],"hpluv":[274.584640952303687,183.499254977583263,64.4629200033750323],"hsluv":[274.584640952303687,99.999999999998451,64.4629200033750323]},"#889900":{"lch":[59.9037942457991477,67.5360782410098892,95.4734085527772578],"luv":[59.9037942457991477,-6.44184579214223074,67.2281524881211396],"rgb":[0.533333333333333326,0.6,0],"xyz":[0.215438501120102766,0.280166683792846538,0.0427283862870331613],"hpluv":[95.4734085527772578,143.060860652479761,59.9037942457991477],"hsluv":[95.4734085527772578,100.000000000002359,59.9037942457991477]},"#889911":{"lch":[59.9403212197486,66.0293008977046867,95.6505578181906628],"luv":[59.9403212197486,-6.50131434341495318,65.7084582747741166],"rgb":[0.533333333333333326,0.6,0.0666666666666666657],"xyz":[0.216450166619739898,0.280571349992701391,0.048056491251788791],"hpluv":[95.6505578181906628,139.783837686775883,59.9403212197486],"hsluv":[95.6505578181906628,97.642419329775592,59.9403212197486]},"#889922":{"lch":[60.0079397017320275,63.2737960078627495,95.9966659299995655],"luv":[60.0079397017320275,-6.6102508868722456,62.9275602932231308],"rgb":[0.533333333333333326,0.6,0.133333333333333331],"xyz":[0.218325524758216899,0.281321493248092191,0.0579333774477679905],"hpluv":[95.9966659299995655,133.799503075015934,60.0079397017320275],"hsluv":[95.9966659299995655,93.3344688530494864,60.0079397017320275]},"#889933":{"lch":[60.1190111745068521,58.8410136656902196,96.6225595920901696],"luv":[60.1190111745068521,-6.78603238946032139,58.4483930798370039],"rgb":[0.533333333333333326,0.6,0.2],"xyz":[0.221413275490674633,0.282556593541075318,0.0741955313053791338],"hpluv":[96.6225595920901696,124.196009967059197,60.1190111745068521],"hsluv":[96.6225595920901696,86.4129060235578,60.1190111745068521]},"#889944":{"lch":[60.2788030378330859,52.6619605596060651,97.6740140778758104],"luv":[60.2788030378330859,-7.03230554676784081,52.1903129773946],"rgb":[0.533333333333333326,0.6,0.266666666666666663],"xyz":[0.22587127073489352,0.284339791638762884,0.0976743062582657723],"hpluv":[97.6740140778758104,110.859197411007315,60.2788030378330859],"hsluv":[97.6740140778758104,76.7791514013919,60.2788030378330859]},"#889955":{"lch":[60.491478208304315,44.7890969420590679,99.4433583384469557],"luv":[60.491478208304315,-7.34865909500015935,44.1821277711999301],"rgb":[0.533333333333333326,0.6,0.333333333333333315],"xyz":[0.231833684774255533,0.286724757254507745,0.129076353532239674],"hpluv":[99.4433583384469557,93.954467458231008,60.491478208304315],"hsluv":[99.4433583384469557,64.5165507795669555,60.491478208304315]},"#889966":{"lch":[60.7603321241253269,35.3998784596055387,102.614945913325585],"luv":[60.7603321241253269,-7.73125582812020351,34.5453191948634597],"rgb":[0.533333333333333326,0.6,0.4],"xyz":[0.23941868054776369,0.289758755563911063,0.169023997939383636],"hpluv":[102.614945913325585,73.9300429237522394,60.7603321241253269],"hsluv":[102.614945913325585,49.862982431557576,60.7603321241253269]},"#889977":{"lch":[61.0879169406466644,24.8557994274465628,109.198389045907604],"luv":[61.0879169406466644,-8.17358342252196,23.4734594640953418],"rgb":[0.533333333333333326,0.6,0.466666666666666674],"xyz":[0.248732693567965624,0.293484360771991859,0.218077799845781545],"hpluv":[109.198389045907604,51.6311437806165543,61.0879169406466644],"hsluv":[109.198389045907604,33.1759220302134779,61.0879169406466644]},"#889988":{"lch":[61.4761176658877702,14.1684419896747276,127.715012949229816],"luv":[61.4761176658877702,-8.66732250724137,11.2081340539023326],"rgb":[0.533333333333333326,0.6,0.533333333333333326],"xyz":[0.259873110669909424,0.297940527612769457,0.276750663249353712],"hpluv":[127.715012949229816,29.2452265306994263,61.4761176658877702],"hsluv":[127.715012949229816,14.8910328511789984,61.4761176658877702]},"#889999":{"lch":[61.9262069462763094,9.41507553536713537,192.177050630058915],"luv":[61.9262069462763094,-9.20324067004397861,-1.98595279549067061],"rgb":[0.533333333333333326,0.6,0.6],"xyz":[0.272930074778982124,0.303163313256398614,0.345517340890471647],"hpluv":[192.177050630058915,19.2925065058214678,61.9262069462763094],"hsluv":[192.177050630058915,19.2169899754877207,61.9262069462763094]},"#8899aa":{"lch":[62.4388911462841207,18.6148502867865133,238.334617604481764],"luv":[62.4388911462841207,-9.77200531832159669,-15.8436284751369474],"rgb":[0.533333333333333326,0.6,0.66666666666666663],"xyz":[0.28798776774423468,0.309186390442499737,0.424821190507470248],"hpluv":[238.334617604481764,37.8306403353000036,62.4388911462841207],"hsluv":[238.334617604481764,23.6900457250072343,62.4388911462841207]},"#8899bb":{"lch":[63.0143540484962,31.8509402607766567,251.009167860858838],"luv":[63.0143540484962,-10.3648329189902189,-30.1173145226625429],"rgb":[0.533333333333333326,0.6,0.733333333333333282],"xyz":[0.305125359851571354,0.316041427285434495,0.515079175606111939],"hpluv":[251.009167860858838,64.1389868285616132,63.0143540484962],"hsluv":[251.009167860858838,32.2218698989210282,63.0143540484962]},"#8899cc":{"lch":[63.6523012354060143,45.9199042321153357,256.173658840600297],"luv":[63.6523012354060143,-10.9739341944061159,-44.5893526863026821],"rgb":[0.533333333333333326,0.6,0.8],"xyz":[0.324417735295293053,0.323758377462923297,0.616685686276382095],"hpluv":[256.173658840600297,91.543221315317254,63.6523012354060143],"hsluv":[256.173658840600297,48.1563502503440546,63.6523012354060143]},"#8899dd":{"lch":[64.3520063546654,60.2052734177332738,258.898139298145679],"luv":[64.3520063546654,-11.5927562398827622,-59.0786166905309358],"rgb":[0.533333333333333326,0.6,0.866666666666666696],"xyz":[0.345936060845926652,0.332365707683176803,0.730015534176388092],"hpluv":[258.898139298145679,118.716686841439611,64.3520063546654],"hsluv":[258.898139298145679,64.7736147673059435,64.3520063546654]},"#8899ee":{"lch":[65.1123593572591091,74.4513212160393465,260.556144021857],"luv":[65.1123593572591091,-12.2160522582942246,-73.442271874149526],"rgb":[0.533333333333333326,0.6,0.933333333333333348],"xyz":[0.369748241112101361,0.34189057978964682,0.855426350244911315],"hpluv":[260.556144021857,145.093615685215838,65.1123593572591091],"hsluv":[260.556144021857,82.0482136329290626,65.1123593572591091]},"#8899ff":{"lch":[65.9319161385595862,88.5102230179824829,261.65889869963604],"luv":[65.9319161385595862,-12.8398242875011679,-87.5739601191992],"rgb":[0.533333333333333326,0.6,1],"xyz":[0.395919289521932782,0.352358999153579544,0.993260538536693161],"hpluv":[261.65889869963604,170.348009793708229,65.9319161385595862],"hsluv":[261.65889869963604,99.9999999999983373,65.9319161385595862]},"#aa9900":{"lch":[62.7844580943873609,69.6780489210530618,75.8779002673010297],"luv":[62.7844580943873609,17.0006834702273615,67.5722373685362072],"rgb":[0.66666666666666663,0.6,0],"xyz":[0.279679277130872483,0.313290833923400402,0.0457396726625379293],"hpluv":[75.8779002673010297,140.82610179048271,62.7844580943873609],"hsluv":[75.8779002673010297,100.000000000002217,62.7844580943873609]},"#aa9911":{"lch":[62.8183644916567232,68.2796688580209548,75.7117398414304],"luv":[62.8183644916567232,16.8514534980901978,66.1675274916835576],"rgb":[0.66666666666666663,0.6,0.0666666666666666657],"xyz":[0.280690942630509588,0.313695500123255255,0.0510677776272935591],"hpluv":[75.7117398414304,137.925354096716262,62.8183644916567232],"hsluv":[75.7117398414304,97.9039601429264792,62.8183644916567232]},"#aa9922":{"lch":[62.8811408657966098,65.7186920323652259,75.3888160486312415],"luv":[62.8811408657966098,16.5780820569936154,63.5933461751813311],"rgb":[0.66666666666666663,0.6,0.133333333333333331],"xyz":[0.282566300768986645,0.314445643378646056,0.0609446638232727586],"hpluv":[75.3888160486312415,132.619634057532949,62.8811408657966098],"hsluv":[75.3888160486312415,94.0678156084237287,62.8811408657966098]},"#aa9933":{"lch":[62.984284118013818,61.5887344728930373,74.8105333616033477],"luv":[62.984284118013818,16.1369729495721401,59.4371122952427768],"rgb":[0.66666666666666663,0.6,0.2],"xyz":[0.28565405150144435,0.315680743671629183,0.0772068176808839],"hpluv":[74.8105333616033477,124.08189266143988,62.984284118013818],"hsluv":[74.8105333616033477,87.8877322232676335,62.984284118013818]},"#aa9944":{"lch":[63.1327254984845325,55.810649390305,73.8551623649617284],"luv":[63.1327254984845325,15.5190685808424753,53.6095802609072862],"rgb":[0.66666666666666663,0.6,0.266666666666666663],"xyz":[0.290112046745663266,0.317463941769316749,0.10068559263377054],"hpluv":[73.8551623649617284,112.176494362550613,63.1327254984845325],"hsluv":[73.8551623649617284,79.2518346201028407,63.1327254984845325]},"#aa9955":{"lch":[63.330394330910508,48.4114193249398497,72.2912631539462893],"luv":[63.330394330910508,14.725704471349518,46.1174495053405593],"rgb":[0.66666666666666663,0.6,0.333333333333333315],"xyz":[0.296074460785025251,0.319848907385061609,0.132087639907744442],"hpluv":[72.2912631539462893,97.0007181904759,63.330394330910508],"hsluv":[72.2912631539462893,68.2014618333714253,63.330394330910508]},"#aa9966":{"lch":[63.5804407621292285,39.5252766283835086,69.6158026784446662],"luv":[63.5804407621292285,13.7671883687516523,37.0501284339143524],"rgb":[0.66666666666666663,0.6,0.4],"xyz":[0.303659456558533436,0.322882905694464928,0.172035284314888404],"hpluv":[69.6158026784446662,78.8843243984218105,63.5804407621292285],"hsluv":[69.6158026784446662,54.9106459007729129,63.5804407621292285]},"#aa9977":{"lch":[63.8853523521207762,29.4269320044373437,64.5162682653354835],"luv":[63.8853523521207762,12.6610788645847681,26.563911782313685],"rgb":[0.66666666666666663,0.6,0.466666666666666674],"xyz":[0.312973469578735342,0.326608510902545723,0.221089086221286313],"hpluv":[64.5162682653354835,58.4497984351079,63.8853523521207762],"hsluv":[64.5162682653354835,39.6604297676390303,63.8853523521207762]},"#aa9988":{"lch":[64.2470245358341288,18.7498828458428441,52.4386898809200943],"luv":[64.2470245358341288,11.4301164327749429,14.8630597477787205],"rgb":[0.66666666666666663,0.6,0.533333333333333326],"xyz":[0.324113886680679142,0.331064677743323321,0.279761949624858508],"hpluv":[52.4386898809200943,37.0326564248891472,64.2470245358341288],"hsluv":[52.4386898809200943,22.8076315183033955,64.2470245358341288]},"#aa9999":{"lch":[64.6668097656484,10.3324715423982241,12.1770506300641514],"luv":[64.6668097656484,10.0999956892392,2.17946214737001709],"rgb":[0.66666666666666663,0.6,0.6],"xyz":[0.337170850789751841,0.336287463386952479,0.348528627265976387],"hpluv":[12.1770506300641514,20.2750581327120152,64.6668097656484],"hsluv":[12.1770506300641514,9.39861318597140283,64.6668097656484]},"#aa99aa":{"lch":[65.1455571833188,14.2173372068657535,307.715012949255367],"luv":[65.1455571833188,8.69723339065650514,-11.2468132643064216],"rgb":[0.66666666666666663,0.6,0.66666666666666663],"xyz":[0.352228543755004397,0.342310540573053601,0.427832476882975],"hpluv":[307.715012949255367,27.6931773999722353,65.1455571833188],"hsluv":[307.715012949255367,11.6506794595111955,65.1455571833188]},"#aa99bb":{"lch":[65.6836488991384186,26.2061362707181722,286.054514249721478],"luv":[65.6836488991384186,7.24735484809431529,-25.1840708771488],"rgb":[0.66666666666666663,0.6,0.733333333333333282],"xyz":[0.369366135862341072,0.34916557741598836,0.51809046198161679],"hpluv":[286.054514249721478,50.6273330900370553,65.6836488991384186],"hsluv":[286.054514249721478,27.5721610485895,65.6836488991384186]},"#aa99cc":{"lch":[66.2810360009151651,39.8419200501833544,278.33213307587846],"luv":[66.2810360009151651,5.77353773601307907,-39.4213756139487757],"rgb":[0.66666666666666663,0.6,0.8],"xyz":[0.388658511306062771,0.356882527593477161,0.619696972651887],"hpluv":[278.33213307587846,76.2764194246967,66.2810360009151651],"hsluv":[278.33213307587846,44.416066179202609,66.2810360009151651]},"#aa99dd":{"lch":[66.937275739096421,53.9476968390211695,274.567192844176702],"luv":[66.937275739096421,4.29575598209881182,-53.7763932853180151],"rgb":[0.66666666666666663,0.6,0.866666666666666696],"xyz":[0.41017683685669637,0.365489857813730668,0.733026820551892944],"hpluv":[274.567192844176702,102.269045280662851,66.937275739096421],"hsluv":[274.567192844176702,62.1125641321495365,66.937275739096421]},"#aa99ee":{"lch":[67.6515703211096309,68.1578213039093299,272.380002942583644],"luv":[67.6515703211096309,2.83038594926376286,-68.0990273078393358],"rgb":[0.66666666666666663,0.6,0.933333333333333348],"xyz":[0.433989017122871079,0.375014729920200685,0.858437636620416167],"hpluv":[272.380002942583644,127.843056183363871,67.6515703211096309],"hsluv":[272.380002942583644,80.63443597048024,67.6515703211096309]},"#aa99ff":{"lch":[68.4228071241374778,82.2834014236355387,270.968064044661787],"luv":[68.4228071241374778,1.39018638405132466,-82.2716569157370543],"rgb":[0.66666666666666663,0.6,1],"xyz":[0.4601600655327025,0.385483149284133408,0.996271824912198],"hpluv":[270.968064044661787,152.598644218259693,68.4228071241374778],"hsluv":[270.968064044661787,99.9999999999981668,68.4228071241374778]},"#770000":{"lch":[23.4140868272264697,78.7423116347599432,12.177050630061796],"luv":[23.4140868272264697,76.9706458719381317,16.6093743302492847],"rgb":[0.466666666666666674,0,0],"xyz":[0.0760757904266185919,0.0392265794387260461,0.00356605267624767169],"hpluv":[12.177050630061796,426.746789183125429,23.4140868272264697],"hsluv":[12.177050630061796,100.000000000002359,23.4140868272264697]},"#770011":{"lch":[23.5491569362977273,75.7570426868466456,9.89164947332394462],"luv":[23.5491569362977273,74.6308667748156864,13.0139633123970793],"rgb":[0.466666666666666674,0,0.0666666666666666657],"xyz":[0.0770874559262557102,0.0396312456385809,0.00889415764100330228],"hpluv":[9.89164947332394462,408.213135586655085,23.5491569362977273],"hsluv":[9.89164947332394462,99.9999999999965183,23.5491569362977273]},"#770022":{"lch":[23.7971287372198219,70.9964864167640854,5.53723409440817704],"luv":[23.7971287372198219,70.6651956613751224,6.85063542055327357],"rgb":[0.466666666666666674,0,0.133333333333333331],"xyz":[0.0789628140647327392,0.0403813888939717203,0.0187710438369825],"hpluv":[5.53723409440817704,378.574731225432288,23.7971287372198219],"hsluv":[5.53723409440817704,99.9999999999967741,23.7971287372198219]},"#770033":{"lch":[24.198804347572846,65.0463245726941182,358.140059561726389],"luv":[24.198804347572846,65.0120550988218895,-2.11116845467566527],"rgb":[0.466666666666666674,0,0.2],"xyz":[0.0820505647971904728,0.0416164891869548331,0.0350331976945936416],"hpluv":[358.140059561726389,341.089366306392606,24.198804347572846],"hsluv":[358.140059561726389,99.9999999999971578,24.198804347572846]},"#770044":{"lch":[24.764944554878376,59.7650645123016702,347.391874641304071],"luv":[24.764944554878376,58.3238787679626398,-13.0456161839744915],"rgb":[0.466666666666666674,0,0.266666666666666663],"xyz":[0.0865085600414093464,0.0433996872846424062,0.0585119726474802801],"hpluv":[347.391874641304071,306.231145677972847,24.764944554878376],"hsluv":[347.391874641304071,99.9999999999975557,24.764944554878376]},"#770055":{"lch":[25.4983947844981387,57.0853266397623571,333.997796644431901],"luv":[25.4983947844981387,51.3069893372134587,-25.0265331742018731],"rgb":[0.466666666666666674,0,0.333333333333333315],"xyz":[0.0924709740807713454,0.0457846529003872391,0.0899140199214541885],"hpluv":[333.997796644431901,284.086748448009075,25.4983947844981387],"hsluv":[333.997796644431901,99.999999999998,25.4983947844981387]},"#770066":{"lch":[26.3955149445472088,58.0812929265372375,320.022905340944305],"luv":[26.3955149445472088,44.5077732621065394,-37.3161453966930949],"rgb":[0.466666666666666674,0,0.4],"xyz":[0.100055969854279517,0.0488186512097905506,0.129861664328598164],"hpluv":[320.022905340944305,279.219318659546161,26.3955149445472088],"hsluv":[320.022905340944305,99.9999999999984,26.3955149445472088]},"#770077":{"lch":[27.4476614837194361,62.5213221502200156,307.715012949243601],"luv":[27.4476614837194361,38.2464397320582776,-49.4583215569799322],"rgb":[0.466666666666666674,0,0.466666666666666674],"xyz":[0.109369982874481436,0.052544256417871367,0.178915466234996073],"hpluv":[307.715012949243601,289.04278373048345,27.4476614837194361],"hsluv":[307.715012949243601,99.9999999999988631,27.4476614837194361]},"#770088":{"lch":[28.6427236217895711,69.3985842918787341,298.067280282401043],"luv":[28.6427236217895711,32.6525926425722872,-61.2370124633397808],"rgb":[0.466666666666666674,0,0.533333333333333326],"xyz":[0.120510399976425264,0.0570004232586489579,0.237588329638568241],"hpluv":[298.067280282401043,307.450798390810235,28.6427236217895711],"hsluv":[298.067280282401043,99.9999999999991473,28.6427236217895711]},"#770099":{"lch":[29.9665727349335924,77.70857748467688,290.909274437861086],"luv":[29.9665727349335924,27.7333531267432782,-72.5912125469701],"rgb":[0.466666666666666674,0,0.6],"xyz":[0.133567364085497964,0.0622232089022781223,0.30635500727968612],"hpluv":[290.909274437861086,329.057057444315717,29.9665727349335924],"hsluv":[290.909274437861086,99.9999999999993605,29.9665727349335924]},"#7700aa":{"lch":[31.4042918618800115,86.7647813143177,285.668616902051383],"luv":[31.4042918618800115,23.4328336498598695,-83.5405864455078415],"rgb":[0.466666666666666674,0,0.66666666666666663],"xyz":[0.14862505705075052,0.0682462860883792238,0.385658856896684721],"hpluv":[285.668616902051383,350.585377409449279,31.4042918618800115],"hsluv":[285.668616902051383,99.9999999999996447,31.4042918618800115]},"#7700bb":{"lch":[32.9411141237069387,96.170393631615,281.802895608829544],"luv":[32.9411141237069387,19.6712233173334745,-94.1370680681067853],"rgb":[0.466666666666666674,0,0.733333333333333282],"xyz":[0.165762649158087166,0.0751013229313139824,0.475916841995326467],"hpluv":[281.802895608829544,370.460950364720645,32.9411141237069387],"hsluv":[281.802895608829544,99.9999999999998295,32.9411141237069387]},"#7700cc":{"lch":[34.5630635499026226,105.713400517707811,278.906152205018032],"luv":[34.5630635499026226,16.3661753747823724,-104.438840249301762],"rgb":[0.466666666666666674,0,0.8],"xyz":[0.185055024601808893,0.082818273108802784,0.577523352665596623],"hpluv":[278.906152205018032,388.112061604616713,34.5630635499026226],"hsluv":[278.906152205018032,99.9999999999998721,34.5630635499026226]},"#7700dd":{"lch":[36.2573361534597964,115.285120662302717,276.696107756350386],"luv":[36.2573361534597964,13.4426218553338188,-114.498711624961956],"rgb":[0.466666666666666674,0,0.866666666666666696],"xyz":[0.206573350152442436,0.091425603329056318,0.690853200565602621],"hpluv":[276.696107756350386,403.475057258468723,36.2573361534597964],"hsluv":[276.696107756350386,100.000000000000156,36.2573361534597964]},"#7700ee":{"lch":[38.012479203832,124.831519574090535,274.979891409884715],"luv":[38.012479203832,10.8361388436516783,-124.360308676593633],"rgb":[0.466666666666666674,0,0.933333333333333348],"xyz":[0.230385530418617201,0.100950475435526349,0.816264016634125844],"hpluv":[274.979891409884715,416.713325299391272,38.012479203832],"hsluv":[274.979891409884715,100.000000000000156,38.012479203832]},"#7700ff":{"lch":[39.8184284160989037,134.326708962856742,273.625091115001112],"luv":[39.8184284160989037,8.49315165227522861,-134.057939398617776],"rgb":[0.466666666666666674,0,1],"xyz":[0.256556578828448567,0.111418894799459045,0.954098204925907689],"hpluv":[273.625091115001112,428.072753406140123,39.8184284160989037],"hsluv":[273.625091115001112,100.000000000000313,39.8184284160989037]},"#771100":{"lch":[24.7134353555624457,74.5310598854495794,14.479461840222152],"luv":[24.7134353555624457,72.1637543524892351,18.6352205622059],"rgb":[0.466666666666666674,0.0666666666666666657,0],"xyz":[0.078080190687547,0.0432353799605829231,0.00423418609655712257],"hpluv":[14.479461840222152,382.686818993669249,24.7134353555624457],"hsluv":[14.479461840222152,100.000000000002174,24.7134353555624457]},"#771111":{"lch":[24.8400617115613187,71.7342088143168723,12.1770506300618244],"luv":[24.8400617115613187,70.1202221387804912,15.1311321924069837],"rgb":[0.466666666666666674,0.0666666666666666657,0.0666666666666666657],"xyz":[0.0790918561871841175,0.043640046160437776,0.00956229106131275403],"hpluv":[12.1770506300618244,366.448517223619376,24.8400617115613187],"hsluv":[12.1770506300618244,85.8702458957174173,24.8400617115613187]},"#771122":{"lch":[25.0727380413203562,67.2476760425649616,7.76714475492354417],"luv":[25.0727380413203562,66.6307123231625,9.0883501491595],"rgb":[0.466666666666666674,0.0666666666666666657,0.133333333333333331],"xyz":[0.0809672143256611465,0.0443901894158286,0.0194391772572919501],"hpluv":[7.76714475492354417,340.341449223453765,25.0727380413203562],"hsluv":[7.76714475492354417,86.6206298981217,25.0727380413203562]},"#771133":{"lch":[25.4501908259833556,61.6001849310061189,0.209311103178295294],"luv":[25.4501908259833556,61.599773884646936,0.225035318388215971],"rgb":[0.466666666666666674,0.0666666666666666657,0.2],"xyz":[0.0840549650581188801,0.0456252897088117101,0.0357013311149031],"hpluv":[0.209311103178295294,307.135699817562568,25.4501908259833556],"hsluv":[0.209311103178295294,87.6964449022470802,25.4501908259833556]},"#771144":{"lch":[25.9833113937366775,56.5829308746863688,349.098656617234155],"luv":[25.9833113937366775,55.5618510799655,-10.7008771106518541],"rgb":[0.466666666666666674,0.0666666666666666657,0.266666666666666663],"xyz":[0.0885129603023377537,0.0474084878064992832,0.0591801060677897353],"hpluv":[349.098656617234155,276.331419289390624,25.9833113937366775],"hsluv":[349.098656617234155,88.9762099121112442,25.9833113937366775]},"#771155":{"lch":[26.6758393728738312,54.157242934368746,335.112354986374442],"luv":[26.6758393728738312,49.127918835603694,-22.7915456504066185],"rgb":[0.466666666666666674,0.0666666666666666657,0.333333333333333315],"xyz":[0.0944753743416997527,0.0497934534222441161,0.0905821533417636438],"hpluv":[335.112354986374442,257.618934567198892,26.6758393728738312],"hsluv":[335.112354986374442,90.3225181656420375,26.6758393728738312]},"#771166":{"lch":[27.5255776115618076,55.4731266930874796,320.490705765847224],"luv":[27.5255776115618076,42.7987039146097388,-35.2921907557026557],"rgb":[0.466666666666666674,0.0666666666666666657,0.4],"xyz":[0.102060370115207924,0.0528274517316474276,0.130529797748907606],"hpluv":[320.490705765847224,255.732268141411282,27.5255776115618076],"hsluv":[320.490705765847224,91.6238582413064364,27.5255776115618076]},"#771177":{"lch":[28.525624322061,60.3055315504910538,307.715012949243658],"luv":[28.525624322061,36.8909645322892956,-47.7054909990940672],"rgb":[0.466666666666666674,0.0666666666666666657,0.466666666666666674],"xyz":[0.111374383135409843,0.056553056939728244,0.179583599655305515],"hpluv":[307.715012949243658,268.263334170626,28.525624322061],"hsluv":[307.715012949243658,92.8109433172232201,28.525624322061]},"#771188":{"lch":[29.665668786552871,67.5901402176946,297.828537901307072],"luv":[29.665668786552871,31.5529142063876336,-59.77324367751811],"rgb":[0.466666666666666674,0.0666666666666666657,0.533333333333333326],"xyz":[0.122514800237353672,0.0610092237805058418,0.238256463058877682],"hpluv":[297.828537901307072,289.113605882780575,29.665668786552871],"hsluv":[297.828537901307072,93.8529472884676892,29.665668786552871]},"#771199":{"lch":[30.9332504381216253,76.2730393291315494,290.583951381139741],"luv":[30.9332504381216253,26.816032696200331,-71.4036197887723461],"rgb":[0.466666666666666674,0.0666666666666666657,0.6],"xyz":[0.135571764346426371,0.066232009424135,0.307023140699995589],"hpluv":[290.583951381139741,312.885056330098905,30.9332504381216253],"hsluv":[290.583951381139741,94.745562802664864,30.9332504381216253]},"#7711aa":{"lch":[32.3148680584756391,85.6471240548678452,285.332056603477554],"luv":[32.3148680584756391,22.6461849228904,-82.5989114172104166],"rgb":[0.466666666666666674,0.0666666666666666657,0.66666666666666663],"xyz":[0.150629457311678927,0.0722550866102361078,0.38632699031699419],"hpluv":[285.332056603477554,336.317699636744408,32.3148680584756391],"hsluv":[285.332056603477554,95.4992611083078771,32.3148680584756391]},"#7711bb":{"lch":[33.796865882550442,95.3131880713117,281.486339493443666],"luv":[33.796865882550442,18.9801244444786903,-93.4042755787407],"rgb":[0.466666666666666674,0.0666666666666666657,0.733333333333333282],"xyz":[0.167767049419015574,0.0791101234531708664,0.476584975415635936],"hpluv":[281.486339493443666,357.862255189103962,33.796865882550442],"hsluv":[281.486339493443666,96.130904738193,33.796865882550442]},"#7711cc":{"lch":[35.36607449089243,105.064609202725904,278.619980375929231],"luv":[35.36607449089243,15.7470979978009513,-103.877817707002151],"rgb":[0.466666666666666674,0.0666666666666666657,0.8],"xyz":[0.1870594248627373,0.086827073630659668,0.578191486085906092],"hpluv":[278.619980375929231,376.971848031202455,35.36607449089243],"hsluv":[278.619980375929231,96.6587778670915441,35.36607449089243]},"#7711dd":{"lch":[37.0102245888209,114.800572621107989,276.441726024966442],"luv":[37.0102245888209,12.8797770828984923,-114.075776641796878],"rgb":[0.466666666666666674,0.0666666666666666657,0.866666666666666696],"xyz":[0.208577750413370844,0.0954344038509132,0.69152133398591209],"hpluv":[276.441726024966442,393.605954910771402,37.0102245888209],"hsluv":[276.441726024966442,97.1000737310191084,37.0102245888209]},"#7711ee":{"lch":[38.7181742300654648,124.475046910670883,274.755182332196796],"luv":[38.7181742300654648,10.3187754184265525,-124.046604859938796],"rgb":[0.466666666666666674,0.0666666666666666657,0.933333333333333348],"xyz":[0.232389930679545609,0.104959275957383219,0.816932150054435313],"hpluv":[274.755182332196796,407.949828918098,38.7181742300654648],"hsluv":[274.755182332196796,97.4698666617264706,38.7181742300654648]},"#7711ff":{"lch":[40.4799968781786,134.069342311184641,273.42679883886251],"luv":[40.4799968781786,8.01376323316973682,-133.829623576382744],"rgb":[0.466666666666666674,0.0666666666666666657,1],"xyz":[0.258560979089377,0.115427695321315929,0.954766338346217158],"hpluv":[273.42679883886251,420.269946860795244,40.4799968781786],"hsluv":[273.42679883886251,99.99999999999946,40.4799968781786]},"#772200":{"lch":[26.9238486490213944,67.8779226750429814,18.9619118830866213],"luv":[26.9238486490213944,64.1945131058521241,22.0562207502031953],"rgb":[0.466666666666666674,0.133333333333333331,0],"xyz":[0.0817958144223149414,0.0506666274301188907,0.00547272734147973266],"hpluv":[18.9619118830866213,319.912145739235086,26.9238486490213944],"hsluv":[18.9619118830866213,100.000000000002203,26.9238486490213944]},"#772211":{"lch":[27.0378210495853537,65.3114997865878451,16.6506371445360628],"luv":[27.0378210495853537,62.5729698674152957,18.7140440938083152],"rgb":[0.466666666666666674,0.133333333333333331,0.0666666666666666657],"xyz":[0.0828074799219520596,0.0510712936299737436,0.0108008323062353633],"hpluv":[16.6506371445360628,306.518925183772069,27.0378210495853537],"hsluv":[16.6506371445360628,87.77659617077137,27.0378210495853537]},"#772222":{"lch":[27.2475131582451553,61.1491638550902934,12.1770506300618262],"luv":[27.2475131582451553,59.7733358183195094,12.8983939049434628],"rgb":[0.466666666666666674,0.133333333333333331,0.133333333333333331],"xyz":[0.0846828380604290887,0.0518214368853645649,0.0206777185022145593],"hpluv":[12.1770506300618262,284.775733052529233,27.2475131582451553],"hsluv":[12.1770506300618262,66.7317810633447,27.2475131582451553]},"#772233":{"lch":[27.5884028886125066,55.830319472153235,4.36926883706767555],"luv":[27.5884028886125066,55.668063043001986,4.25339034219168255],"rgb":[0.466666666666666674,0.133333333333333331,0.2],"xyz":[0.0877705887928868222,0.0530565371783476777,0.0369398723598257],"hpluv":[4.36926883706767555,256.792821962959806,27.5884028886125066],"hsluv":[4.36926883706767555,69.0869865520346,27.5884028886125066]},"#772244":{"lch":[28.0713586292933357,51.0577981227000137,352.597218961633928],"luv":[28.0713586292933357,50.6322267647614197,-6.57847717790113862],"rgb":[0.466666666666666674,0.133333333333333331,0.266666666666666663],"xyz":[0.0922285840371057,0.0548397352760352508,0.0604186473127123411],"hpluv":[352.597218961633928,230.801153887638264,28.0713586292933357],"hsluv":[352.597218961633928,71.9536276136468871,28.0713586292933357]},"#772255":{"lch":[28.7011983995690869,48.8793621784160877,337.425357822166575],"luv":[28.7011983995690869,45.134235573623549,-18.7641367015226166],"rgb":[0.466666666666666674,0.133333333333333331,0.333333333333333315],"xyz":[0.0981909980764677,0.0572247008917800837,0.0918206945866862495],"hpluv":[337.425357822166575,216.105005327694982,28.7011983995690869],"hsluv":[337.425357822166575,75.0482997779786416,28.7011983995690869]},"#772266":{"lch":[29.4776386596593341,50.6214045611569148,321.457127980188602],"luv":[29.4776386596593341,39.5931335065919541,-31.5421999688275427],"rgb":[0.466666666666666674,0.133333333333333331,0.4],"xyz":[0.105775993849975866,0.0602586992011833952,0.131768338993830225],"hpluv":[321.457127980188602,217.911839443782668,29.4776386596593341],"hsluv":[321.457127980188602,78.1196257410634871,29.4776386596593341]},"#772277":{"lch":[30.3962065887853328,56.0773495547330114,307.715012949243828],"luv":[30.3962065887853328,34.3044404103525125,-44.3607315225559375],"rgb":[0.466666666666666674,0.133333333333333331,0.466666666666666674],"xyz":[0.115090006870177786,0.0639843044092642116,0.180822140900228134],"hpluv":[307.715012949243828,234.103236488433623,30.3962065887853328],"hsluv":[307.715012949243828,80.9925899090149,30.3962065887853328]},"#772288":{"lch":[31.4492100235983827,64.0564791390884,297.353574907339521],"luv":[31.4492100235983827,29.432687880373738,-56.8941948166328118],"rgb":[0.466666666666666674,0.133333333333333331,0.533333333333333326],"xyz":[0.126230423972121614,0.0684404712500418094,0.239495004303800302],"hpluv":[297.353574907339521,258.459589193709576,31.4492100235983827],"hsluv":[297.353574907339521,83.5725358287189692,31.4492100235983827]},"#772299":{"lch":[32.6267183371791276,73.3979299617999885,289.947447059718741],"luv":[32.6267183371791276,25.040297814612174,-68.9944896932561136],"rgb":[0.466666666666666674,0.133333333333333331,0.6],"xyz":[0.139287388081194341,0.073663256893670967,0.308261681944918209],"hpluv":[289.947447059718741,285.462946683821,32.6267183371791276],"hsluv":[289.947447059718741,85.8272099061853169,32.6267183371791276]},"#7722aa":{"lch":[33.91747454857272,83.3484305918169213,284.681710760769079],"luv":[33.91747454857272,21.1245907707188039,-80.6269963900962],"rgb":[0.466666666666666674,0.133333333333333331,0.66666666666666663],"xyz":[0.154345081046446869,0.0796863340797720754,0.38756553156191681],"hpluv":[284.681710760769079,311.826661765562392,33.91747454857272],"hsluv":[284.681710760769079,87.7639475735253,33.91747454857272]},"#7722bb":{"lch":[35.3096729107126137,93.4985765466947,280.880145280973409],"luv":[35.3096729107126137,17.6483381470917493,-91.8178630599952186],"rgb":[0.466666666666666674,0.133333333333333331,0.733333333333333282],"xyz":[0.171482673153783516,0.086541370922706834,0.477823516660558556],"hpluv":[280.880145280973409,336.008784107710085,35.3096729107126137],"hsluv":[280.880145280973409,89.410850129911168,35.3096729107126137]},"#7722cc":{"lch":[36.7915673195940158,103.646851370476796,278.075561058441508],"luv":[36.7915673195940158,14.5601992392030191,-102.619054746808203],"rgb":[0.466666666666666674,0.133333333333333331,0.8],"xyz":[0.19077504859750527,0.0942583211001956356,0.579430027330828712],"hpluv":[278.075561058441508,357.476214898523438,36.7915673195940158],"hsluv":[278.075561058441508,90.8041771911133395,36.7915673195940158]},"#7722dd":{"lch":[38.351906528896663,113.703099806952181,275.960131804992216],"luv":[38.351906528896663,11.8065226659589069,-113.088465053903391],"rgb":[0.466666666666666674,0.133333333333333331,0.866666666666666696],"xyz":[0.212293374148138814,0.10286565132044917,0.69275987523083471],"hpluv":[275.960131804992216,376.205095027198126,38.351906528896663],"hsluv":[275.960131804992216,91.9810564333708101,38.351906528896663]},"#7722ee":{"lch":[39.9802139341708269,123.633267676123751,274.331320845995606],"luv":[39.9802139341708269,9.33725773346982812,-123.280170726255989],"rgb":[0.466666666666666674,0.133333333333333331,0.933333333333333348],"xyz":[0.236105554414313523,0.112390523426919187,0.818170691299357933],"hpluv":[274.331320845995606,392.400507860275241,39.9802139341708269],"hsluv":[274.331320845995606,92.975835565241681,39.9802139341708269]},"#7722ff":{"lch":[41.6669409214524222,133.430100966175758,273.053819065229],"luv":[41.6669409214524222,7.10835060884393233,-133.240621416539511],"rgb":[0.466666666666666674,0.133333333333333331,1],"xyz":[0.262276602824144944,0.122858942790851897,0.956004879591139778],"hpluv":[273.053819065229,406.351179140502,41.6669409214524222],"hsluv":[273.053819065229,99.9999999999994,41.6669409214524222]},"#eeaa00":{"lch":[74.1441199778221716,94.3993067628715323,52.9277228913731435],"luv":[74.1441199778221716,56.9059790518510553,75.3189130661151438],"rgb":[0.933333333333333348,0.66666666666666663,0],"xyz":[0.496332043879122442,0.469286695915611562,0.0644413600602487119],"hpluv":[52.9277228913731435,161.559096825574699,74.1441199778221716],"hsluv":[52.9277228913731435,100.00000000000226,74.1441199778221716]},"#eeaa11":{"lch":[74.170022976797469,93.4032488378738748,52.6298301838218165],"luv":[74.170022976797469,56.6922374254564474,74.2304325001913412],"rgb":[0.933333333333333348,0.66666666666666663,0.0666666666666666657],"xyz":[0.497343709378759546,0.469691362115466415,0.0697694650250043485],"hpluv":[52.6298301838218165,159.798572537124,74.170022976797469],"hsluv":[52.6298301838218165,98.6103970010943698,74.170022976797469]},"#eeaa22":{"lch":[74.2180009061856794,91.5777923210439866,52.06484069365154],"luv":[74.2180009061856794,56.2992155036066038,72.2280442769616],"rgb":[0.933333333333333348,0.66666666666666663,0.133333333333333331],"xyz":[0.499219067517236603,0.470441505370857216,0.0796463512209835411],"hpluv":[52.06484069365154,156.574215350823607,74.2180009061856794],"hsluv":[52.06484069365154,96.0561964998804427,74.2180009061856794]},"#eeaa33":{"lch":[74.296884894391,88.6315089581908353,51.0969321655322659],"luv":[74.296884894391,55.6610065739707096,68.9738843866158646],"rgb":[0.933333333333333348,0.66666666666666663,0.2],"xyz":[0.502306818249694365,0.471676605663840343,0.0959085050785946913],"hpluv":[51.0969321655322659,151.375944062314744,74.296884894391],"hsluv":[51.0969321655322659,91.9112466174575786,74.296884894391]},"#eeaa44":{"lch":[74.4105324975616,84.5080331915566,49.6113532778883268],"luv":[74.4105324975616,54.7585847399730952,64.3669563610119582],"rgb":[0.933333333333333348,0.66666666666666663,0.266666666666666663],"xyz":[0.506764813493913224,0.473459803761527909,0.11938728003148133],"hpluv":[49.6113532778883268,144.112916810009352,74.4105324975616],"hsluv":[49.6113532778883268,86.056132752536,74.4105324975616]},"#eeaa55":{"lch":[74.5620870475656545,79.2349762990306203,47.4460085751506284],"luv":[74.5620870475656545,53.5853993814341081,58.3676832008958897],"rgb":[0.933333333333333348,0.66666666666666663,0.333333333333333315],"xyz":[0.512727227533275154,0.475844769377272769,0.150789327305455245],"hpluv":[47.4460085751506284,134.846041865267,74.5620870475656545],"hsluv":[47.4460085751506284,78.4547380743125302,74.5620870475656545]},"#eeaa66":{"lch":[74.7541548019056705,72.9335579755352512,44.3584242628533616],"luv":[74.7541548019056705,52.1460491859645643,50.9911113162453518],"rgb":[0.933333333333333348,0.66666666666666663,0.4],"xyz":[0.520312223306783395,0.478878767686676088,0.190736971712599179],"hpluv":[44.3584242628533616,123.803063546095515,74.7541548019056705],"hsluv":[44.3584242628533616,69.1456590086766,74.7541548019056705]},"#eeaa77":{"lch":[74.988898345165353,65.8409092602829702,39.9757578623994689],"luv":[74.988898345165353,50.4549646902964213,42.3003767160737851],"rgb":[0.933333333333333348,0.66666666666666663,0.466666666666666674],"xyz":[0.529626236326985245,0.482604372894756883,0.239790773618997088],"hpluv":[39.9757578623994689,111.41359114675457,74.988898345165353],"hsluv":[39.9757578623994689,69.3768546233612398,74.988898345165353]},"#eeaa88":{"lch":[75.268091919562039,58.355059996267,33.7246537035848917],"luv":[75.268091919562039,48.5347963512250544,32.3988668060016],"rgb":[0.933333333333333348,0.66666666666666663,0.533333333333333326],"xyz":[0.540766653428929156,0.487060539735534481,0.298463637022569284],"hpluv":[33.7246537035848917,98.3800275430836706,75.268091919562039],"hsluv":[33.7246537035848917,69.7313730072723388,75.268091919562039]},"#eeaa99":{"lch":[75.5931575717450102,51.1191249468368198,24.7740386445795764],"luv":[75.5931575717450102,46.4145012045046172,21.4209946843594],"rgb":[0.933333333333333348,0.66666666666666663,0.6],"xyz":[0.5538236175380018,0.492283325379163639,0.367230314663687163],"hpluv":[24.7740386445795764,85.8104641434512274,75.5931575717450102],"hsluv":[24.7740386445795764,70.1099573125584925,75.5931575717450102]},"#eeaaaa":{"lch":[75.9651912478537,45.142946910964838,12.1770506300622827],"luv":[75.9651912478537,44.1272513869876164,9.52215001119964199],"rgb":[0.933333333333333348,0.66666666666666663,0.66666666666666663],"xyz":[0.568881310503254412,0.498306402565264761,0.446534164280685764],"hpluv":[12.1770506300622827,75.4075094474617771,75.9651912478537],"hsluv":[12.1770506300622827,70.5013292017584661,75.9651912478537]},"#eeaabb":{"lch":[76.3849837125259512,41.8257198613105743,355.706426922992932],"luv":[76.3849837125259512,41.7083375548448743,-3.13136077895000353],"rgb":[0.933333333333333348,0.66666666666666663,0.733333333333333282],"xyz":[0.586018902610591,0.505161439408199464,0.53679214937932751],"hpluv":[355.706426922992932,71.0120800923082243,76.3849837125259512],"hsluv":[355.706426922992932,70.8933377227291857,76.3849837125259512]},"#eeaacc":{"lch":[76.8530390510081,42.4751513806234229,337.329003704434115],"luv":[76.8530390510081,39.1932374848878169,-16.3715796507258275],"rgb":[0.933333333333333348,0.66666666666666663,0.8],"xyz":[0.605311278054312729,0.512878389585688321,0.638398660049597666],"hpluv":[337.329003704434115,73.8860979443606283,76.8530390510081],"hsluv":[337.329003704434115,71.273377003825658,76.8530390510081]},"#eeaadd":{"lch":[77.3695923472492666,47.3596417233686893,320.637369166639587],"luv":[77.3695923472492666,36.6159833837478814,-30.0367345929437413],"rgb":[0.933333333333333348,0.66666666666666663,0.866666666666666696],"xyz":[0.626829603604946328,0.521485719805941828,0.751728507949603664],"hpluv":[320.637369166639587,84.6581146126829,77.3695923472492666],"hsluv":[320.637369166639587,71.6287050870027144,77.3695923472492666]},"#eeaaee":{"lch":[77.9346274334411078,55.5926087174301244,307.715012949246329],"luv":[77.9346274334411078,34.00790779424905,-43.9772708506012506],"rgb":[0.933333333333333348,0.66666666666666663,0.933333333333333348],"xyz":[0.650641783871121,0.531010591912411845,0.877139324018126887],"hpluv":[307.715012949246329,102.440850498764817,77.9346274334411078],"hsluv":[307.715012949246329,71.9466349992656,77.9346274334411078]},"#eeaaff":{"lch":[78.5478951631237123,66.0054362136172,298.40296943037481],"luv":[78.5478951631237123,31.3967924706888546,-58.0599606639755166],"rgb":[0.933333333333333348,0.66666666666666663,1],"xyz":[0.676812832280952459,0.541479011276344568,1.01497351230990884],"hpluv":[298.40296943037481,125.797711632464541,78.5478951631237123],"hsluv":[298.40296943037481,99.9999999999967457,78.5478951631237123]},"#773300":{"lch":[30.1331354048611715,59.6402239078303253,26.8671398719653283],"luv":[30.1331354048611715,53.2024709950710601,26.952799257122777],"rgb":[0.466666666666666674,0.2,0],"xyz":[0.0879135365113257461,0.0629020716081407,0.0075119680378166135],"hpluv":[26.8671398719653283,251.150628123644026,30.1331354048611715],"hsluv":[26.8671398719653283,100.000000000002174,30.1331354048611715]},"#773311":{"lch":[30.23185303241101,57.2493346092074376,24.6191658238461528],"luv":[30.23185303241101,52.0451874365790204,23.8492091669378929],"rgb":[0.466666666666666674,0.2,0.0666666666666666657],"xyz":[0.0889252020109628644,0.0633067378079955473,0.012840073002572245],"hpluv":[24.6191658238461528,240.295148301589592,30.23185303241101],"hsluv":[24.6191658238461528,89.9983576544591131,30.23185303241101]},"#773322":{"lch":[30.4137421865898716,53.2944669038914185,20.1857997859538507],"luv":[30.4137421865898716,50.0210446853216055,18.3900867632275506],"rgb":[0.466666666666666674,0.2,0.133333333333333331],"xyz":[0.0908005601494399,0.0640568810633863617,0.022716959198551441],"hpluv":[20.1857997859538507,222.35740076876786,30.4137421865898716],"hsluv":[20.1857997859538507,72.5478159849102,30.4137421865898716]},"#773333":{"lch":[30.7101510688592612,48.0738359215612618,12.1770506300619186],"luv":[30.7101510688592612,46.9921967440780932,10.1403720532853221],"rgb":[0.466666666666666674,0.2,0.2],"xyz":[0.093888310881897627,0.0652919813563694745,0.0389791130561625843],"hpluv":[12.1770506300619186,198.639745699191,30.7101510688592612],"hsluv":[12.1770506300619186,46.5474493854848177,30.7101510688592612]},"#773344":{"lch":[31.1315732769052218,43.177963340605487,359.450637080068248],"luv":[31.1315732769052218,43.1759786068728815,-0.413992248148033204],"rgb":[0.466666666666666674,0.2,0.266666666666666663],"xyz":[0.0983463061261165,0.0670751794540570545,0.0624578880090492228],"hpluv":[359.450637080068248,175.995032884643848,31.1315732769052218],"hsluv":[359.450637080068248,50.753084379908266,31.1315732769052218]},"#773355":{"lch":[31.6836931484193158,40.8566925980369149,342.103665666318761],"luv":[31.6836931484193158,38.8798033655970627,-12.5550874271345432],"rgb":[0.466666666666666674,0.2,0.333333333333333315],"xyz":[0.1043087201654785,0.0694601450698018874,0.0938599352830231382],"hpluv":[342.103665666318761,163.631433468067485,31.6836931484193158],"hsluv":[342.103665666318761,55.4419897041632623,31.6836931484193158]},"#773366":{"lch":[32.368092831934419,42.8604868736005429,323.403106692152903],"luv":[32.368092831934419,34.4105334223914952,-25.55262265656037],"rgb":[0.466666666666666674,0.2,0.4],"xyz":[0.111893715938986671,0.0724941433792052,0.1338075796901671],"hpluv":[323.403106692152903,168.027093700417197,32.368092831934419],"hsluv":[323.403106692152903,60.2559031079253913,32.368092831934419]},"#773377":{"lch":[33.18286532501061,49.0630735877418189,307.715012949244226],"luv":[33.18286532501061,30.0135669321659,-38.8119954380674201],"rgb":[0.466666666666666674,0.2,0.466666666666666674],"xyz":[0.12120772895918859,0.0762197485872860153,0.182861381596565],"hpluv":[307.715012949244226,187.620458725202155,33.18286532501061],"hsluv":[307.715012949244226,64.9109644958811458,33.18286532501061]},"#773388":{"lch":[34.1232577260479,58.0074356166469371,296.464975996700218],"luv":[34.1232577260479,25.8510525803809479,-51.9286594021626868],"rgb":[0.466666666666666674,0.2,0.533333333333333326],"xyz":[0.132348146061132432,0.0806759154280636132,0.241534245000137177],"hpluv":[296.464975996700218,215.711106662248483,34.1232577260479],"hsluv":[296.464975996700218,69.2226633917654226,34.1232577260479]},"#773399":{"lch":[35.1823459678372572,68.3160830057283,288.793689920994325],"luv":[35.1823459678372572,22.0088074868374761,-64.6737936899706369],"rgb":[0.466666666666666674,0.2,0.6],"xyz":[0.145405110170205132,0.0858987010716927707,0.310300922641255084],"hpluv":[288.793689920994325,246.398176299420243,35.1823459678372572],"hsluv":[288.793689920994325,73.0971646513407,35.1823459678372572]},"#7733aa":{"lch":[36.3517007299652,79.1457370086552316,283.529620316849901],"luv":[36.3517007299652,18.5159885211015585,-76.9493720294691741],"rgb":[0.466666666666666674,0.2,0.66666666666666663],"xyz":[0.160462803135457688,0.0919217782577938791,0.389604772258253684],"hpluv":[283.529620316849901,276.275338575971432,36.3517007299652],"hsluv":[283.529620316849901,76.5077273075914093,36.3517007299652]},"#7733bb":{"lch":[37.6219984216960484,90.0609255961329183,279.823655256592],"luv":[37.6219984216960484,15.3658639022925581,-88.7404110074345596],"rgb":[0.466666666666666674,0.2,0.733333333333333282],"xyz":[0.177600395242794307,0.0987768151007286377,0.479862757356895431],"hpluv":[279.823655256592,303.762299466947354,37.6219984216960484],"hsluv":[279.823655256592,79.4699002038008615,37.6219984216960484]},"#7733cc":{"lch":[38.9835424310364687,100.85881095677091,277.137789072490136],"luv":[38.9835424310364687,12.5323059717609908,-100.077175492935524],"rgb":[0.466666666666666674,0.2,0.8],"xyz":[0.196892770686516061,0.106493765278217439,0.581469268027165587],"hpluv":[277.137789072490136,328.300745951509327,38.9835424310364687],"hsluv":[277.137789072490136,82.0218198813884,38.9835424310364687]},"#7733dd":{"lch":[40.4266769703902469,111.457640409912926,275.137669231249674],"luv":[40.4266769703902469,9.98093438608736,-111.009848907770674],"rgb":[0.466666666666666674,0.2,0.866666666666666696],"xyz":[0.218411096237149605,0.115101095498470973,0.694799115927171584],"hpluv":[275.137669231249674,349.849394775278881,40.4266769703902469],"hsluv":[275.137669231249674,84.2108753320266459,40.4266769703902469]},"#7733ee":{"lch":[41.9420918590451066,121.83559331992231,273.612094072304103],"luv":[41.9420918590451066,7.67578650940870766,-121.593561100411392],"rgb":[0.466666666666666674,0.2,0.933333333333333348],"xyz":[0.242223276503324342,0.12462596760494099,0.820209931995694808],"hpluv":[273.612094072304103,368.606867281158145,41.9420918590451066],"hsluv":[273.612094072304103,91.3228806729277665,41.9420918590451066]},"#7733ff":{"lch":[43.521028110395612,131.998699032970592,272.424037139620168],"luv":[43.521028110395612,5.58285979872954208,-131.88058319125102],"rgb":[0.466666666666666674,0.2,1],"xyz":[0.268394324913155735,0.135094386968873714,0.958044120287476653],"hpluv":[272.424037139620168,384.866252510120546,43.521028110395612],"hsluv":[272.424037139620168,99.9999999999993605,43.521028110395612]},"#eebb00":{"lch":[78.2979307719844115,92.4506686575273307,61.8965912674010781],"luv":[78.2979307719844115,43.5502151824584587,81.5506277890334275],"rgb":[0.933333333333333348,0.733333333333333282,0],"xyz":[0.530286541787721277,0.537195691732810121,0.0757595260297813378],"hpluv":[61.8965912674010781,173.778692590363192,78.2979307719844115],"hsluv":[61.8965912674010781,100.000000000002373,78.2979307719844115]},"#eebb11":{"lch":[78.3216028454340858,91.4822746680663528,61.6861071172261504],"luv":[78.3216028454340858,43.3901974999079059,80.5375523551748],"rgb":[0.933333333333333348,0.733333333333333282,0.0666666666666666657],"xyz":[0.531298207287358437,0.537600357932665,0.0810876309945369744],"hpluv":[61.6861071172261504,172.182825477748111,78.3216028454340858],"hsluv":[61.6861071172261504,98.7812238781787642,78.3216028454340858]},"#eebb22":{"lch":[78.3654531575016335,89.702527227679937,61.2866058237147371],"luv":[78.3654531575016335,43.0956539167563477,78.672155204492924],"rgb":[0.933333333333333348,0.733333333333333282,0.133333333333333331],"xyz":[0.533173565425835383,0.53835050118805583,0.090964517190516167],"hpluv":[61.2866058237147371,169.241982225815036,78.3654531575016335],"hsluv":[61.2866058237147371,96.5386826089343,78.3654531575016335]},"#eebb33":{"lch":[78.4375634156200192,86.8156112143301897,60.6012126372659665],"luv":[78.4375634156200192,42.6165086308843897,75.6358614853528906],"rgb":[0.933333333333333348,0.733333333333333282,0.2],"xyz":[0.5362613161582932,0.539585601481039,0.107226671048127303],"hpluv":[60.6012126372659665,164.44952499458185,78.4375634156200192],"hsluv":[60.6012126372659665,92.89304460263088,78.4375634156200192]},"#eebb44":{"lch":[78.5414800230656,82.7424491039972878,59.5464137785053],"luv":[78.5414800230656,41.9372005918819397,71.3273025583039839],"rgb":[0.933333333333333348,0.733333333333333282,0.266666666666666663],"xyz":[0.540719311402512059,0.541368799578726523,0.130705446001013942],"hpluv":[59.5464137785053,157.640041580932575,78.5414800230656],"hsluv":[59.5464137785053,87.729612164687,78.5414800230656]},"#eebb55":{"lch":[78.6801087960333,77.4695312482544,58.0014729567720551],"luv":[78.6801087960333,41.0509080282697809,65.6989438414256455],"rgb":[0.933333333333333348,0.733333333333333282,0.333333333333333315],"xyz":[0.546681725441874,0.543753765194471272,0.162107493274987857],"hpluv":[58.0014729567720551,148.738759066450825,78.6801087960333],"hsluv":[58.0014729567720551,81.0022494643358613,78.6801087960333]},"#eebb66":{"lch":[78.8558787138066748,71.0520814803831229,55.7790951769469174],"luv":[78.8558787138066748,39.9586324736418845,58.7512210386423703],"rgb":[0.933333333333333348,0.733333333333333282,0.4],"xyz":[0.55426672121538223,0.546787763503874591,0.202055137682131819],"hpluv":[55.7790951769469174,137.768430134850121,78.8558787138066748],"hsluv":[55.7790951769469174,72.7264864885570574,78.8558787138066748]},"#eebb77":{"lch":[79.0708286262536,63.6259938562226566,52.5733668905169],"luv":[79.0708286262536,38.6683825737350801,50.5274507898760348],"rgb":[0.933333333333333348,0.733333333333333282,0.466666666666666674],"xyz":[0.56358073423558408,0.550513368711955442,0.251108939588529756],"hpluv":[52.5733668905169,124.876553308513152,79.0708286262536],"hsluv":[52.5733668905169,64.3532422469102841,79.0708286262536]},"#eebb88":{"lch":[79.3266586201773833,55.4370708593257149,47.8613800964459557],"luv":[79.3266586201773833,37.1942049853437169,41.1079060640423961],"rgb":[0.933333333333333348,0.733333333333333282,0.533333333333333326],"xyz":[0.574721151337528,0.554969535552733,0.309781802992101896],"hpluv":[47.8613800964459557,110.403075040931697,79.3266586201773833],"hsluv":[47.8613800964459557,64.6428486235092379,79.3266586201773833]},"#eebb99":{"lch":[79.6247632766216071,46.9114913521919519,40.7190885070752131],"luv":[79.6247632766216071,35.5550187983100727,30.6027557441907163],"rgb":[0.933333333333333348,0.733333333333333282,0.6],"xyz":[0.587778115446600635,0.560192321196362197,0.378548480633219775],"hpluv":[40.7190885070752131,95.0436922052712845,79.6247632766216071],"hsluv":[40.7190885070752131,64.94797236425741,79.6247632766216071]},"#eebbaa":{"lch":[79.9662551563314,38.821829319770238,29.5464132636418633],"luv":[79.9662551563314,33.7733033676501,19.1441482278540249],"rgb":[0.933333333333333348,0.733333333333333282,0.66666666666666663],"xyz":[0.602835808411853247,0.566215398382463264,0.457852330250218431],"hpluv":[29.5464132636418633,80.2381481795300573,79.9662551563314],"hsluv":[29.5464132636418633,65.2570717669902081,79.9662551563314]},"#eebbbb":{"lch":[80.3519829843595,32.6073830473385868,12.1770506300627979],"luv":[80.3519829843595,31.8737319395561,6.87798236703069765],"rgb":[0.933333333333333348,0.733333333333333282,0.733333333333333282],"xyz":[0.61997340051918981,0.573070435225398,0.548110315348860122],"hpluv":[12.1770506300627979,68.9527679352530498,80.3519829843595],"hsluv":[12.1770506300627979,65.5572779496269646,80.3519829843595]},"#eebbcc":{"lch":[80.7825470949933,30.4869713003172755,348.56539147946927],"luv":[80.7825470949933,29.8818538307637169,-6.04402437976891349],"rgb":[0.933333333333333348,0.733333333333333282,0.8],"xyz":[0.639265775962911564,0.58078738540288688,0.649716826019130278],"hpluv":[348.56539147946927,66.1649916626687542,80.7825470949933],"hsluv":[348.56539147946927,65.8346704867411,80.7825470949933]},"#eebbdd":{"lch":[81.2583136554081165,33.9595526191752555,325.014354592586812],"luv":[81.2583136554081165,27.8229160969035512,-19.4714291709468021],"rgb":[0.933333333333333348,0.733333333333333282,0.866666666666666696],"xyz":[0.660784101513545163,0.589394715623140386,0.763046673919136276],"hpluv":[325.014354592586812,75.8902298772919721,81.2583136554081165],"hsluv":[325.014354592586812,66.0744631525984119,81.2583136554081165]},"#eebbee":{"lch":[81.7794285687783429,42.0458499431423576,307.715012949247921],"luv":[81.7794285687783429,25.7208902583653902,-33.2609275540891716],"rgb":[0.933333333333333348,0.733333333333333282,0.933333333333333348],"xyz":[0.684596281779719873,0.598919587729610403,0.888457489987659499],"hpluv":[307.715012949247921,97.0917602325266245,81.7794285687783429],"hsluv":[307.715012949247921,66.2610602343042103,81.7794285687783429]},"#eebbff":{"lch":[82.3458315671937697,52.842459086223478,296.523687653639684],"luv":[82.3458315671937697,23.5977388768935938,-47.2807804734349446],"rgb":[0.933333333333333348,0.733333333333333282,1],"xyz":[0.710767330189551294,0.609388007093543127,1.02629167827944134],"hpluv":[296.523687653639684,126.563624284615543,82.3458315671937697],"hsluv":[296.523687653639684,99.9999999999958504,82.3458315671937697]},"#774400":{"lch":[34.1007355557283631,52.2824067620925845,38.9690248280103901],"luv":[34.1007355557283631,40.6488429776156863,32.8804139483986475],"rgb":[0.466666666666666674,0.266666666666666663,0],"xyz":[0.0967461069942917862,0.0805672125740730105,0.0104561581988052085],"hpluv":[38.9690248280103901,194.549962435525771,34.1007355557283631],"hsluv":[38.9690248280103901,100.000000000002302,34.1007355557283631]},"#774411":{"lch":[34.1844760931178726,49.9480603042207,37.0032460066389604],"luv":[34.1844760931178726,39.8885915773263164,30.0617529450848728],"rgb":[0.466666666666666674,0.266666666666666663,0.0666666666666666657],"xyz":[0.0977577724939289,0.0809718787739278634,0.0157842631635608383],"hpluv":[37.0032460066389604,185.408237524396696,34.1844760931178726],"hsluv":[37.0032460066389604,92.0774266797174477,34.1844760931178726]},"#774422":{"lch":[34.3389737161705639,45.9687551907429608,33.0232295817012798],"luv":[34.3389737161705639,38.542488289151045,25.0520069109664867],"rgb":[0.466666666666666674,0.266666666666666663,0.133333333333333331],"xyz":[0.0996331306324059335,0.0817220220293186778,0.0256611493595400378],"hpluv":[33.0232295817012798,169.869245826721482,34.3389737161705639],"hsluv":[33.0232295817012798,78.0803941927279794,34.3389737161705639]},"#774433":{"lch":[34.5913049894652787,40.4066166426811861,25.4401077009201266],"luv":[34.5913049894652787,36.4885814660887746,17.357364174931714],"rgb":[0.466666666666666674,0.266666666666666663,0.2],"xyz":[0.102720881364863667,0.0829571223223017906,0.041923303217151181],"hpluv":[25.4401077009201266,148.226163260119392,34.5913049894652787],"hsluv":[25.4401077009201266,56.8050953227402715,34.5913049894652787]},"#774444":{"lch":[34.9512320153617324,34.6101233100924119,12.1770506300620909],"luv":[34.9512320153617324,33.8314114683579277,7.30042694631360689],"rgb":[0.466666666666666674,0.266666666666666663,0.266666666666666663],"xyz":[0.107178876609082541,0.0847403204199893706,0.0654020781700378195],"hpluv":[12.1770506300620909,125.655060642768362,34.9512320153617324],"hsluv":[12.1770506300620909,29.4448754689639038,34.9512320153617324]},"#774455":{"lch":[35.4248138391838907,31.0799263948782318,351.580242092888511],"luv":[35.4248138391838907,30.7449438027498871,-4.55085214842230634],"rgb":[0.466666666666666674,0.266666666666666663,0.333333333333333315],"xyz":[0.11314129064844454,0.0871252860357342,0.0968041254440117349],"hpluv":[351.580242092888511,111.329877567225012,35.4248138391838907],"hsluv":[351.580242092888511,35.0525071981411855,35.4248138391838907]},"#774466":{"lch":[36.0149447056398699,32.55773059028094,327.386935336661793],"luv":[36.0149447056398699,27.4243377055297302,-17.5474078599198116],"rgb":[0.466666666666666674,0.266666666666666663,0.4],"xyz":[0.120726286421952711,0.090159284345137522,0.136751769851155697],"hpluv":[327.386935336661793,114.712488009680612,36.0149447056398699],"hsluv":[327.386935336661793,41.0162201785438469,36.0149447056398699]},"#774477":{"lch":[36.7217587051522898,39.3078830273429531,307.715012949244965],"luv":[36.7217587051522898,24.0459818745983789,-31.0950224919964064],"rgb":[0.466666666666666674,0.266666666666666663,0.466666666666666674],"xyz":[0.130040299442154617,0.0938848895532183314,0.185805571757553606],"hpluv":[307.715012949244965,135.82994003022975,36.7217587051522898],"hsluv":[307.715012949244965,46.9930223744603381,36.7217587051522898]},"#774488":{"lch":[37.5430301686231331,49.3077922843884906,294.880307130505798],"luv":[37.5430301686231331,20.7449732069104158,-44.731470651041306],"rgb":[0.466666666666666674,0.266666666666666663,0.533333333333333326],"xyz":[0.141180716544098472,0.0983410563939959292,0.244478435161125773],"hpluv":[294.880307130505798,166.657768282509579,37.5430301686231331],"hsluv":[294.880307130505798,52.7229750286883814,37.5430301686231331]},"#774499":{"lch":[38.4745988052595678,60.7540316024919775,286.849160899925266],"luv":[38.4745988052595678,17.609743748149274,-58.1459309073396042],"rgb":[0.466666666666666674,0.266666666666666663,0.6],"xyz":[0.154237680653171172,0.103563842037625087,0.313245112802243653],"hpluv":[286.849160899925266,200.373520820200838,38.4745988052595678],"hsluv":[286.849160899925266,58.0391908614757739,38.4745988052595678]},"#7744aa":{"lch":[39.5108096650206306,72.6607854160185695,281.662296555210446],"luv":[39.5108096650206306,14.6878600390207232,-71.1607792589909423],"rgb":[0.466666666666666674,0.266666666666666663,0.66666666666666663],"xyz":[0.169295373618423728,0.109586919223726181,0.392548962419242253],"hpluv":[281.662296555210446,233.358425064810547,39.5108096650206306],"hsluv":[281.662296555210446,62.855979622580108,39.5108096650206306]},"#7744bb":{"lch":[40.6449442050895,84.5532389367896684,278.156646558388104],"luv":[40.6449442050895,11.9964108827533504,-83.6978873128468],"rgb":[0.466666666666666674,0.266666666666666663,0.733333333333333282],"xyz":[0.186432965725760347,0.11644195606666094,0.482806947517884],"hpluv":[278.156646558388104,263.975148792079324,40.6449442050895],"hsluv":[278.156646558388104,67.1480450168623832,40.6449442050895]},"#7744cc":{"lch":[41.8696179576200223,96.2178725735773099,275.685728840067554],"luv":[41.8696179576200223,9.53248740063005151,-95.7445073439828747],"rgb":[0.466666666666666674,0.266666666666666663,0.8],"xyz":[0.205725341169482101,0.124158906244149742,0.584413458188154156],"hpluv":[275.685728840067554,291.605746800226,41.8696179576200223],"hsluv":[275.685728840067554,71.7563947172966721,41.8696179576200223]},"#7744dd":{"lch":[43.1771261833787037,107.572507589609089,273.881356516641858],"luv":[43.1771261833787037,7.28165300546471084,-107.325774717094461],"rgb":[0.466666666666666674,0.266666666666666663,0.866666666666666696],"xyz":[0.227243666720115645,0.132766236464403276,0.697743306088160153],"hpluv":[273.881356516641858,316.145413845169799,43.1771261833787037],"hsluv":[273.881356516641858,81.1040313116107683,43.1771261833787037]},"#7744ee":{"lch":[44.5597272061305958,118.600491111934247,272.524492751992966],"luv":[44.5597272061305958,5.22393127379498168,-118.485387428318177],"rgb":[0.466666666666666674,0.266666666666666663,0.933333333333333348],"xyz":[0.251055846986290354,0.14229110857087332,0.823154122156683377],"hpluv":[272.524492751992966,337.740615485066769,44.5597272061305958],"hsluv":[272.524492751992966,90.4775463334620866,44.5597272061305958]},"#7744ff":{"lch":[46.0098610845945188,129.316457315512423,271.478956563127554],"luv":[46.0098610845945188,3.33763127257498882,-129.273378350389976],"rgb":[0.466666666666666674,0.266666666666666663,1],"xyz":[0.277226895396121775,0.152759527934806016,0.960988310448465222],"hpluv":[271.478956563127554,356.649979093308843,46.0098610845945188],"hsluv":[271.478956563127554,99.9999999999992752,46.0098610845945188]},"#eecc00":{"lch":[82.5742071813858161,93.0890420253441278,70.6743105766144737],"luv":[82.5742071813858161,30.8066573410433797,87.8437226480516529],"rgb":[0.933333333333333348,0.8,0],"xyz":[0.568510285097338142,0.613643178352045071,0.088500773799653279],"hpluv":[70.6743105766144737,226.330948640265689,82.5742071813858161],"hsluv":[70.6743105766144737,100.000000000002331,82.5742071813858161]},"#eecc11":{"lch":[82.5958706312260773,92.1609271203023,70.5494354113464226],"luv":[82.5958706312260773,30.6889817522442812,86.9012248859824297],"rgb":[0.933333333333333348,0.8,0.0666666666666666657],"xyz":[0.569521950596975302,0.6140478445519,0.0938288787644089156],"hpluv":[70.5494354113464226,224.395635781555484,82.5958706312260773],"hsluv":[70.5494354113464226,98.9293851282895389,82.5958706312260773]},"#eecc22":{"lch":[82.636003730849751,90.4517890224530277,70.3125751850760849],"luv":[82.636003730849751,30.4721781878481224,85.1643851257694848],"rgb":[0.933333333333333348,0.8,0.133333333333333331],"xyz":[0.571397308735452247,0.61479798780729078,0.103705764960388108],"hpluv":[70.3125751850760849,220.820363432361461,82.636003730849751],"hsluv":[70.3125751850760849,96.9576791715233668,82.636003730849751]},"#eecc33":{"lch":[82.7020112487531,87.6695564091762236,69.9066450473675332],"luv":[82.7020112487531,30.1189443150749909,82.3334701948554084],"rgb":[0.933333333333333348,0.8,0.2],"xyz":[0.574485059467910064,0.616033088100273907,0.119967918817999258],"hpluv":[69.9066450473675332,214.968262161852493,82.7020112487531],"hsluv":[69.9066450473675332,93.7473974454290726,82.7020112487531]},"#eecc44":{"lch":[82.7971553193909102,83.7217279628800242,69.2828434677537786],"luv":[82.7971553193909102,29.6169744667019792,78.3081257375581],"rgb":[0.933333333333333348,0.8,0.266666666666666663],"xyz":[0.578943054712128924,0.617816286197961473,0.143446693770885897],"hpluv":[69.2828434677537786,206.594355258371763,82.7971553193909102],"hsluv":[69.2828434677537786,89.1900904304584685,82.7971553193909102]},"#eecc55":{"lch":[82.9241214704336471,78.5673404382155098,68.3706518767947387],"luv":[82.9241214704336471,28.9599810639926183,73.0352413585910085],"rgb":[0.933333333333333348,0.8,0.333333333333333315],"xyz":[0.584905468751490853,0.620201251813706222,0.174848741044859812],"hpluv":[68.3706518767947387,195.532369916851508,82.9241214704336471],"hsluv":[68.3706518767947387,83.2339277722755497,82.9241214704336471]},"#eecc66":{"lch":[83.0851700146488241,72.2150018940459688,67.0599726095305186],"luv":[83.0851700146488241,28.1470538355007811,66.503758231685552],"rgb":[0.933333333333333348,0.8,0.4],"xyz":[0.592490464524999094,0.623235250123109541,0.214796385452003746],"hpluv":[67.0599726095305186,181.688085793908328,83.0851700146488241],"hsluv":[67.0599726095305186,75.8779818086204898,83.0851700146488241]},"#eecc77":{"lch":[83.2822165713090925,64.7250307453925586,65.1677162202921778],"luv":[83.2822165713090925,27.1821511319325673,58.740618526133936],"rgb":[0.933333333333333348,0.8,0.466666666666666674],"xyz":[0.601804477545200944,0.626960855331190392,0.263850187358401655],"hpluv":[65.1677162202921778,165.044758034407693,83.2822165713090925],"hsluv":[65.1677162202921778,67.1675472191497533,83.2822165713090925]},"#eecc88":{"lch":[83.5168798492942699,56.2182636624862511,62.3679934299132839],"luv":[83.5168798492942699,26.0735255024375405,49.8062690541919793],"rgb":[0.933333333333333348,0.8,0.533333333333333326],"xyz":[0.612944894647144856,0.631417022171967934,0.322523050761973851],"hpluv":[62.3679934299132839,145.689263900370548,83.5168798492942699],"hsluv":[62.3679934299132839,57.1887031148042198,83.5168798492942699]},"#eecc99":{"lch":[83.79051243806407,46.9027423702446598,58.0311593919332083],"luv":[83.79051243806407,24.8330316313984234,39.7892923013655633],"rgb":[0.933333333333333348,0.8,0.6],"xyz":[0.6260018587562175,0.636639807815597147,0.39128972840309173],"hpluv":[58.0311593919332083,123.89218615802821,83.79051243806407],"hsluv":[58.0311593919332083,56.9799526918745158,83.79051243806407]},"#eeccaa":{"lch":[84.1042222244633,37.1556922719042646,50.8162292091241454],"luv":[84.1042222244633,23.475329457535171,28.8002495660129298],"rgb":[0.933333333333333348,0.8,0.66666666666666663],"xyz":[0.641059551721470111,0.642662885001698214,0.470593578020090331],"hpluv":[50.8162292091241454,100.353156070069275,84.1042222244633],"hsluv":[50.8162292091241454,57.1375361174420533,84.1042222244633]},"#eeccbb":{"lch":[84.4588885299527,27.7950211383377486,37.6158086991229084],"luv":[84.4588885299527,22.0170273242058485,16.9650731765535063],"rgb":[0.933333333333333348,0.8,0.733333333333333282],"xyz":[0.658197143828806674,0.649517921844633,0.560851563118732077],"hpluv":[37.6158086991229084,77.0182985337263517,84.4588885299527],"hsluv":[37.6158086991229084,57.2612530554736736,84.4588885299527]},"#eecccc":{"lch":[84.8551753311588897,20.9471233587290264,12.1770506300631585],"luv":[84.8551753311588897,20.4758227261490333,4.41844550641173317],"rgb":[0.933333333333333348,0.8,0.8],"xyz":[0.677489519272528429,0.65723487202212183,0.662458073789002233],"hpluv":[12.1770506300631585,59.764130158742411,84.8551753311588897],"hsluv":[12.1770506300631585,57.3329985994000637,84.8551753311588897]},"#eeccdd":{"lch":[85.2935429882433596,20.7797326136980232,335.241604291037675],"luv":[85.2935429882433596,18.8696973425293919,-8.70240252448279],"rgb":[0.933333333333333348,0.8,0.866666666666666696],"xyz":[0.699007844823162,0.665842202242375336,0.775787921689008231],"hpluv":[335.241604291037675,61.2821093808529582,85.2935429882433596],"hsluv":[335.241604291037675,57.3323512744098664,85.2935429882433596]},"#eeccee":{"lch":[85.7742593547863805,28.14328338963319,307.715012949251047],"luv":[85.7742593547863805,17.2162128855465397,-22.2631177921859056],"rgb":[0.933333333333333348,0.8,0.933333333333333348],"xyz":[0.722820025089336737,0.675367074348845353,0.901198737757531454],"hpluv":[307.715012949251047,86.153290074940827,85.7742593547863805],"hsluv":[307.715012949251047,57.2362127773837557,85.7742593547863805]},"#eeccff":{"lch":[86.2974107975625344,39.333162863939684,293.258584701896098],"luv":[86.2974107975625344,15.5319389668875889,-36.1366375415599919],"rgb":[0.933333333333333348,0.8,1],"xyz":[0.748991073499168158,0.685835493712778077,1.03903292604931341],"hpluv":[293.258584701896098,125.558261528980708,86.2974107975625344],"hsluv":[293.258584701896098,99.9999999999940314,86.2974107975625344]},"#775500":{"lch":[38.5848153490983421,48.2339285723334328,54.8056311564330656],"luv":[38.5848153490983421,27.7997213245256276,39.4168410682499868],"rgb":[0.466666666666666674,0.333333333333333315,0],"xyz":[0.108559363708637752,0.104193726002765275,0.0143939104369204193],"hpluv":[54.8056311564330656,158.626424871442595,38.5848153490983421],"hsluv":[54.8056311564330656,100.000000000002302,38.5848153490983421]},"#775511":{"lch":[38.6553893217116595,45.9150245993572952,53.4685955296553956],"luv":[38.6553893217116595,27.3315290852913257,36.8941323494598521],"rgb":[0.466666666666666674,0.333333333333333315,0.0666666666666666657],"xyz":[0.10957102920827487,0.104598392202620127,0.0197220154016760491],"hpluv":[53.4685955296553956,150.724584795248319,38.6553893217116595],"hsluv":[53.4685955296553956,93.8009130268131344,38.6553893217116595]},"#775522":{"lch":[38.7857346943923531,41.8305053308362176,50.7011784026830412],"luv":[38.7857346943923531,26.4939762066725,32.3706719268134577],"rgb":[0.466666666666666674,0.333333333333333315,0.133333333333333331],"xyz":[0.111446387346751899,0.105348535458010942,0.0295989015976552486],"hpluv":[50.7011784026830412,136.854920013655288,38.7857346943923531],"hsluv":[50.7011784026830412,82.7342982429400138,38.7857346943923531]},"#775533":{"lch":[38.9990050188249739,35.7224202133018096,45.1472123185964946],"luv":[38.9990050188249739,25.1945818654867857,25.3243825298663161],"rgb":[0.466666666666666674,0.333333333333333315,0.2],"xyz":[0.114534138079209633,0.106583635750994055,0.0458610554552663918],"hpluv":[45.1472123185964946,116.232257903435652,38.9990050188249739],"hsluv":[45.1472123185964946,65.6272728324870656,38.9990050188249739]},"#775544":{"lch":[39.3040305977305735,28.372964966311546,34.1730058033032336],"luv":[39.3040305977305735,23.4742392428959334,15.9369141601135258],"rgb":[0.466666666666666674,0.333333333333333315,0.266666666666666663],"xyz":[0.118992133323428506,0.108366833848681635,0.0693398304081530303],"hpluv":[34.1730058033032336,91.6024225041024,39.3040305977305735],"hsluv":[34.1730058033032336,43.1049791856067799,39.3040305977305735]},"#775555":{"lch":[39.7068052905653701,21.9117916496410494,12.1770506300624941],"luv":[39.7068052905653701,21.4187864245998618,4.62192615633957704],"rgb":[0.466666666666666674,0.333333333333333315,0.333333333333333315],"xyz":[0.124954547362790505,0.110751799464426468,0.100741877682126946],"hpluv":[12.1770506300624941,70.0248633547080601,39.7068052905653701],"hsluv":[12.1770506300624941,16.4089959502104463,39.7068052905653701]},"#775566":{"lch":[40.21091767922141,20.7753835118276839,337.09176723456028],"luv":[40.21091767922141,19.1368182791551824,-8.08694912894311],"rgb":[0.466666666666666674,0.333333333333333315,0.4],"xyz":[0.132539543136298676,0.113785797773829786,0.140689522089270908],"hpluv":[337.09176723456028,65.5608222190156482,40.21091767922141],"hsluv":[337.09176723456028,22.8015335286909036,40.21091767922141]},"#775577":{"lch":[40.8178321801082404,27.3616881241227183,307.715012949246557],"luv":[40.8178321801082404,16.7380842217685313,-21.6448264854847388],"rgb":[0.466666666666666674,0.333333333333333315,0.466666666666666674],"xyz":[0.141853556156500582,0.117511402981910595,0.189743323995668817],"hpluv":[307.715012949246557,85.0613515767839,40.8178321801082404],"hsluv":[307.715012949246557,29.4286369924042717,40.8178321801082404]},"#775588":{"lch":[41.5271394874135922,38.3484586217177892,291.922773984013077],"luv":[41.5271394874135922,14.317648223710199,-35.5754020076188269],"rgb":[0.466666666666666674,0.333333333333333315,0.533333333333333326],"xyz":[0.152993973258444438,0.121967569822688193,0.248416187399240984],"hpluv":[291.922773984013077,117.180466459805771,41.5271394874135922],"hsluv":[291.922773984013077,36.0000576829853429,41.5271394874135922]},"#775599":{"lch":[42.336815252734,50.9328741768069335,283.566916489070877],"luv":[42.336815252734,11.9478768110398388,-49.5116744982298442],"rgb":[0.466666666666666674,0.333333333333333315,0.6],"xyz":[0.166050937367517137,0.127190355466317351,0.317182865040358863],"hpluv":[283.566916489070877,152.657914615048412,42.336815252734],"hsluv":[283.566916489070877,42.2975255710275704,42.336815252734]},"#7755aa":{"lch":[43.2434937800222059,63.9392804809027098,278.705184193400783],"luv":[43.2434937800222059,9.67722671121172517,-63.202712533524668],"rgb":[0.466666666666666674,0.333333333333333315,0.66666666666666663],"xyz":[0.181108630332769693,0.133213432652418445,0.396486714657357464],"hpluv":[278.705184193400783,187.623095354238075,43.2434937800222059],"hsluv":[278.705184193400783,48.1780536314011272,43.2434937800222059]},"#7755bb":{"lch":[44.2427493107278096,76.8690732738289171,275.624120681329657],"luv":[44.2427493107278096,7.53331271169703509,-76.4990432983646116],"rgb":[0.466666666666666674,0.333333333333333315,0.733333333333333282],"xyz":[0.198246222440106312,0.140068469495353204,0.486744699755999211],"hpluv":[275.624120681329657,220.469676556121556,44.2427493107278096],"hsluv":[275.624120681329657,58.1137757976744496,44.2427493107278096]},"#7755cc":{"lch":[45.3293721892173949,89.4999308488430785,273.541003165926895],"luv":[45.3293721892173949,5.52776894932058127,-89.3290624175056536],"rgb":[0.466666666666666674,0.333333333333333315,0.8],"xyz":[0.217538597883828067,0.147785419672842,0.588351210426269366],"hpluv":[273.541003165926895,250.543028147628775,45.3293721892173949],"hsluv":[273.541003165926895,68.560007412736141,45.3293721892173949]},"#7755dd":{"lch":[46.4976270234735622,101.740884988783861,272.062259876532949],"luv":[46.4976270234735622,3.66119191329505167,-101.674988822595736],"rgb":[0.466666666666666674,0.333333333333333315,0.866666666666666696],"xyz":[0.23905692343446161,0.15639274989309554,0.701681058326275364],"hpluv":[272.062259876532949,277.654072578046794,46.4976270234735622],"hsluv":[272.062259876532949,78.9623412233913911,46.4976270234735622]},"#7755ee":{"lch":[47.7414825998049253,113.569026574645434,270.972372145675877],"luv":[47.7414825998049253,1.92729827623402139,-113.552672000560818],"rgb":[0.466666666666666674,0.333333333333333315,0.933333333333333348],"xyz":[0.26286910370063632,0.165917621999565584,0.827091874394798587],"hpluv":[270.972372145675877,301.858443342198598,47.7414825998049253],"hsluv":[270.972372145675877,89.4067229175139175,47.7414825998049253]},"#7755ff":{"lch":[49.0548071408334749,124.996939079083958,270.144864217432826],"luv":[49.0548071408334749,0.31603661949764611,-124.996539552082652],"rgb":[0.466666666666666674,0.333333333333333315,1],"xyz":[0.289040152110467741,0.17638604136349828,0.964926062686580432],"hpluv":[270.144864217432826,323.338286172745597,49.0548071408334749],"hsluv":[270.144864217432826,99.9999999999992184,49.0548071408334749]},"#eedd00":{"lch":[86.9434330779808562,96.0018853881048528,78.7633058197047831],"luv":[86.9434330779808562,18.7071720605167293,94.1615829920517],"rgb":[0.933333333333333348,0.866666666666666696,0],"xyz":[0.611144275644513346,0.69891115944639659,0.102712103982044597],"hpluv":[78.7633058197047831,323.365375109368927,86.9434330779808562],"hsluv":[78.7633058197047831,100.000000000002331,86.9434330779808562]},"#eedd11":{"lch":[86.9632971622836,95.1251800329902153,78.7103442402005555],"luv":[86.9632971622836,18.6225708681111755,93.2845095960255293],"rgb":[0.933333333333333348,0.866666666666666696,0.0666666666666666657],"xyz":[0.612155941144150506,0.699315825646251499,0.108040208946800234],"hpluv":[78.7103442402005555,320.953864246165836,86.9632971622836],"hsluv":[78.7103442402005555,99.0572185708442134,86.9632971622836]},"#eedd22":{"lch":[87.0000996195567,93.508678235103929,78.6100630695382421],"luv":[87.0000996195567,18.466577094457584,91.6671066178629559],"rgb":[0.933333333333333348,0.866666666666666696,0.133333333333333331],"xyz":[0.614031299282627452,0.700065968901642299,0.117917095142779427],"hpluv":[78.6100630695382421,316.490280961531141,87.0000996195567],"hsluv":[78.6100630695382421,97.3195837272491104,87.0000996195567]},"#eedd33":{"lch":[87.0606371109171704,90.8714304533391157,78.438725785200063],"luv":[87.0606371109171704,18.2120693177914781,89.0277339024194561],"rgb":[0.933333333333333348,0.866666666666666696,0.2],"xyz":[0.617119050015085269,0.701301069194625426,0.134179249000390577],"hpluv":[78.438725785200063,309.159510866930361,87.0606371109171704],"hsluv":[78.438725785200063,94.4866487647953335,87.0606371109171704]},"#eedd44":{"lch":[87.1479139339873399,87.1163282896156375,78.1766823729436737],"luv":[87.1479139339873399,17.8496481580416315,85.2680755927926839],"rgb":[0.933333333333333348,0.866666666666666696,0.266666666666666663],"xyz":[0.621577045259304128,0.703084267292313,0.157658023953277215],"hpluv":[78.1766823729436737,298.614243514229941,87.1479139339873399],"hsluv":[78.1766823729436737,90.4569971269957449,87.1479139339873399]},"#eedd55":{"lch":[87.2644132886328,82.1887294441124823,77.7961103956051119],"luv":[87.2644132886328,17.3739699699556027,80.3313912186301],"rgb":[0.933333333333333348,0.866666666666666696,0.333333333333333315],"xyz":[0.627539459298666058,0.705469232908057742,0.189060071227251103],"hpluv":[77.7961103956051119,284.577035202400168,87.2644132886328],"hsluv":[77.7961103956051119,85.1762064326895114,87.2644132886328]},"#eedd66":{"lch":[87.4122373516825775,76.0722975624531,77.2543738936701],"luv":[87.4122373516825775,16.7832968217641607,74.1978126646801428],"rgb":[0.933333333333333348,0.866666666666666696,0.4],"xyz":[0.635124455072174299,0.70850323121746106,0.229007715634395093],"hpluv":[77.2543738936701,266.820521177772889,87.4122373516825775],"hsluv":[77.2543738936701,78.6319742502837187,87.4122373516825775]},"#eedd77":{"lch":[87.5931821049200323,68.7867162946957,76.4818073814204666],"luv":[87.5931821049200323,16.0791769624109904,66.8810317415814524],"rgb":[0.933333333333333348,0.866666666666666696,0.466666666666666674],"xyz":[0.644438468092376149,0.712228836425541911,0.278061517540793],"hpluv":[76.4818073814204666,245.153905791490757,87.5931821049200323],"hsluv":[76.4818073814204666,70.850552214552053,87.5931821049200323]},"#eedd88":{"lch":[87.8087818591101694,60.3863988515096,75.3563176494847],"luv":[87.8087818591101694,15.266108392374667,58.4248500280990655],"rgb":[0.933333333333333348,0.866666666666666696,0.533333333333333326],"xyz":[0.65557888519432006,0.716685003266319454,0.336734380944365141],"hpluv":[75.3563176494847,219.413652035392374,87.8087818591101694],"hsluv":[75.3563176494847,61.8928475378351,87.8087818591101694]},"#eedd99":{"lch":[88.0603378936253165,50.9615259485641658,73.6438422487017164],"luv":[88.0603378936253165,14.3511385044238935,48.8990996914362483],"rgb":[0.933333333333333348,0.866666666666666696,0.6],"xyz":[0.668635849303392704,0.721907788909948667,0.405501058585483076],"hpluv":[73.6438422487017164,189.463858183723431,88.0603378936253165],"hsluv":[73.6438422487017164,51.8496821371243328,88.0603378936253165]},"#eeddaa":{"lch":[88.3489381850503719,40.6474355343677374,70.8361013393810595],"luv":[88.3489381850503719,13.3433963411670824,38.3948927541556],"rgb":[0.933333333333333348,0.866666666666666696,0.66666666666666663],"xyz":[0.683693542268645316,0.727930866096049733,0.484804908202481677],"hpluv":[70.8361013393810595,155.230940371192503,88.3489381850503719],"hsluv":[70.8361013393810595,42.897511243529749,88.3489381850503719]},"#eeddbb":{"lch":[88.6754719765582422,29.6681200622416164,65.6052069824857256],"luv":[88.6754719765582422,12.2535763784239329,27.0193858917206811],"rgb":[0.933333333333333348,0.866666666666666696,0.733333333333333282],"xyz":[0.700831134375981879,0.734785902938984492,0.575062893301123368],"hpluv":[65.6052069824857256,116.881954111652547,88.6754719765582422],"hsluv":[65.6052069824857256,42.5880034653653823,88.6754719765582422]},"#eeddcc":{"lch":[89.0406413623298,18.5684245799280596,53.3136761054906927],"luv":[89.0406413623298,11.093403559257359,14.8903589228712931],"rgb":[0.933333333333333348,0.866666666666666696,0.8],"xyz":[0.720123509819703633,0.742502853116473349,0.676669403971393524],"hpluv":[53.3136761054906927,75.8171941810365837,89.0406413623298],"hsluv":[53.3136761054906927,42.1389745374101,89.0406413623298]},"#eedddd":{"lch":[89.4449712115231677,10.1024117660870978,12.1770506300652031],"luv":[89.4449712115231677,9.87511215198720294,2.13093488339032255],"rgb":[0.933333333333333348,0.866666666666666696,0.866666666666666696],"xyz":[0.741641835370337232,0.751110183336726855,0.789999251871399522],"hpluv":[12.1770506300652031,42.9711785560074802,89.4449712115231677],"hsluv":[12.1770506300652031,41.5103310668104939,89.4449712115231677]},"#eeddee":{"lch":[89.8888182614484919,14.0763196099440542,307.715012949260654],"luv":[89.8888182614484919,8.61096808409750203,-11.1352594229299271],"rgb":[0.933333333333333348,0.866666666666666696,0.933333333333333348],"xyz":[0.765454015636511942,0.760635055443196872,0.915410067939922745],"hpluv":[307.715012949260654,62.7286135322124423,89.8888182614484919],"hsluv":[307.715012949260654,40.6526002298302203,89.8888182614484919]},"#eeddff":{"lch":[90.3723799019863776,25.8444533047225526,286.436741223308786],"luv":[90.3723799019863776,7.31285770395748802,-24.7882609075678033],"rgb":[0.933333333333333348,0.866666666666666696,1],"xyz":[0.791625064046343363,0.771103474807129596,1.05324425623170459],"hpluv":[286.436741223308786,121.429851146909542,90.3723799019863776],"hsluv":[286.436741223308786,99.9999999999912461,90.3723799019863776]},"#776600":{"lch":[43.3967364031710616,48.7618731822316747,71.5665709091534836],"luv":[43.3967364031710616,15.4186312136361749,46.2599836547520695],"rgb":[0.466666666666666674,0.4,0],"xyz":[0.123587421414484214,0.134249841414458615,0.0194032630055357667],"hpluv":[71.5665709091534836,142.581321953300886,43.3967364031710616],"hsluv":[71.5665709091534836,100.000000000002203,43.3967364031710616]},"#776611":{"lch":[43.4563559440565683,46.5521225716425278,71.0105555334865812],"luv":[43.4563559440565683,15.1477793781447385,44.0186880294754204],"rgb":[0.466666666666666674,0.4,0.0666666666666666657],"xyz":[0.124599086914121332,0.134654507614313468,0.0247313679702914],"hpluv":[71.0105555334865812,135.933189968578517,43.4563559440565683],"hsluv":[71.0105555334865812,95.1446041192036,43.4563559440565683]},"#776622":{"lch":[43.5665595032511135,42.5748985848782695,69.8598868578742582],"luv":[43.5665595032511135,14.6592646006394602,39.9715892964128727],"rgb":[0.466666666666666674,0.4,0.133333333333333331],"xyz":[0.126474445052598361,0.135404650869704296,0.0346082541662705925],"hpluv":[69.8598868578742582,124.005139157578384,43.5665595032511135],"hsluv":[69.8598868578742582,86.4059851293991699,43.5665595032511135]},"#776633":{"lch":[43.7471247164395862,36.3538810550032,67.535659471968259],"luv":[43.7471247164395862,13.8911218179866047,33.5952586297408544],"rgb":[0.466666666666666674,0.4,0.2],"xyz":[0.129562195785056095,0.136639751162687395,0.0508704080238817358],"hpluv":[67.535659471968259,105.448545621014873,43.7471247164395862],"hsluv":[67.535659471968259,72.7162107178341,43.7471247164395862]},"#776644":{"lch":[44.0059094002531381,28.0798421405657628,62.7556004259007807],"luv":[44.0059094002531381,12.8545871201011757,24.9647175952547435],"rgb":[0.466666666666666674,0.4,0.266666666666666663],"xyz":[0.134020191029274982,0.138422949260375,0.0743491829767683743],"hpluv":[62.7556004259007807,80.969785387169,44.0059094002531381],"hsluv":[62.7556004259007807,54.3487361937933,44.0059094002531381]},"#776655":{"lch":[44.348573895236818,18.4503377813959695,51.0995937541716287],"luv":[44.348573895236818,11.5862323365157813,14.3587668165439446],"rgb":[0.466666666666666674,0.4,0.333333333333333315],"xyz":[0.139982605068636967,0.140807914876119822,0.10575123025074229],"hpluv":[51.0995937541716287,52.7914984191523473,44.348573895236818],"hsluv":[51.0995937541716287,32.0544530960382303,44.348573895236818]},"#776666":{"lch":[44.7789425039584543,10.3722772339139464,12.177050630063178],"luv":[44.7789425039584543,10.1389057710203723,2.18785849257654696],"rgb":[0.466666666666666674,0.4,0.4],"xyz":[0.147567600842145152,0.143841913185523113,0.145698874657886251],"hpluv":[12.177050630063178,29.3927086392471182,44.7789425039584543],"hsluv":[12.177050630063178,6.88762268030489189,44.7789425039584543]},"#776677":{"lch":[45.2992151274866899,14.0123007519981453,307.715012949251729],"luv":[45.2992151274866899,8.57180555029232849,-11.0846164558105222],"rgb":[0.466666666666666674,0.4,0.466666666666666674],"xyz":[0.156881613862347058,0.147567518393603936,0.194752676564284161],"hpluv":[307.715012949251729,39.2516664249610088,45.2992151274866899],"hsluv":[307.715012949251729,13.5798811229143528,45.2992151274866899]},"#776688":{"lch":[45.9101336093725934,25.9566305949561666,285.511882327844],"luv":[45.9101336093725934,6.94179491604529719,-25.0111606125461954],"rgb":[0.466666666666666674,0.4,0.533333333333333326],"xyz":[0.168022030964290886,0.152023685234381534,0.253425539967856328],"hpluv":[285.511882327844,71.7429261821633304,45.9101336093725934],"hsluv":[285.511882327844,20.4210179876919788,45.9101336093725934]},"#776699":{"lch":[46.6111419677041781,39.5636276789354753,277.694853057332239],"luv":[46.6111419677041781,5.29745753469698322,-39.2073663842078446],"rgb":[0.466666666666666674,0.4,0.6],"xyz":[0.181078995073363613,0.157246470878010691,0.322192217608974207],"hpluv":[277.694853057332239,107.707436484347127,46.6111419677041781],"hsluv":[277.694853057332239,30.3115853005661187,46.6111419677041781]},"#7766aa":{"lch":[47.4005539940279945,53.5010996637438936,273.94010537559177],"luv":[47.4005539940279945,3.67625443841083355,-53.3746458398921959],"rgb":[0.466666666666666674,0.4,0.66666666666666663],"xyz":[0.196136688038616142,0.163269548064111786,0.401496067225972808],"hpluv":[273.94010537559177,143.224929654224553,47.4005539940279945],"hsluv":[273.94010537559177,41.7476492103462178,47.4005539940279945]},"#7766bb":{"lch":[48.2757296522395052,67.3356727079262356,271.790784098674919],"luv":[48.2757296522395052,2.10423911354751,-67.3027859511178],"rgb":[0.466666666666666674,0.4,0.733333333333333282],"xyz":[0.213274280145952788,0.170124584907046544,0.491754052324614555],"hpluv":[271.790784098674919,176.992833999799871,48.2757296522395052],"hsluv":[271.790784098674919,53.26174830093764,48.2757296522395052]},"#7766cc":{"lch":[49.2332558923506838,80.8618894300095263,270.423298283194697],"luv":[49.2332558923506838,0.597398061184884921,-80.8596826468393886],"rgb":[0.466666666666666674,0.4,0.8],"xyz":[0.232566655589674542,0.177841535084535346,0.59336056299488471],"hpluv":[270.423298283194697,208.412927467485218,49.2332558923506838],"hsluv":[270.423298283194697,64.812294986267446,49.2332558923506838]},"#7766dd":{"lch":[50.2691251722936698,93.9789905273776327,269.490145829531343],"luv":[50.2691251722936698,-0.836273601566472236,-93.9752696564806769],"rgb":[0.466666666666666674,0.4,0.866666666666666696],"xyz":[0.254084981140308086,0.18644886530478888,0.706690410894890708],"hpluv":[269.490145829531343,237.229544488008315,50.2691251722936698],"hsluv":[269.490145829531343,76.411365903071939,50.2691251722936698]},"#7766ee":{"lch":[51.378904811117593,106.647241299318011,268.82087794331261],"luv":[51.378904811117593,-2.19459861633770803,-106.624658562961542],"rgb":[0.466666666666666674,0.4,0.933333333333333348],"xyz":[0.277897161406482796,0.195973737411258925,0.832101226963413931],"hpluv":[268.82087794331261,263.392927722023558,51.378904811117593],"hsluv":[268.82087794331261,88.1124589032604177,51.378904811117593]},"#7766ff":{"lch":[52.5578914047646748,118.864223743766644,268.322642340607558],"luv":[52.5578914047646748,-3.47930230784918848,-118.81329109850806],"rgb":[0.466666666666666674,0.4,1],"xyz":[0.304068209816314217,0.206442156775191621,0.969935415255195776],"hpluv":[268.322642340607558,286.980608281330717,52.5578914047646748],"hsluv":[268.322642340607558,99.9999999999990621,52.5578914047646748]},"#eeee00":{"lch":[91.3819857871042416,100.73955854358779,85.8743202181747591],"luv":[91.3819857871042416,7.24765584469138,100.478505862268193],"rgb":[0.933333333333333348,0.933333333333333348,0],"xyz":[0.658323051985028163,0.793268712127427555,0.118438362762215782],"hpluv":[85.8743202181747591,533.074105620447313,91.3819857871042416],"hsluv":[85.8743202181747591,100.000000000002302,91.3819857871042416]},"#eeee11":{"lch":[91.4002420948697,99.9206079899190485,85.8743202181747449],"luv":[91.4002420948697,7.18873686735402107,99.6616775060856526],"rgb":[0.933333333333333348,0.933333333333333348,0.0666666666666666657],"xyz":[0.659334717484665322,0.793673378327282464,0.123766467726971419],"hpluv":[85.8743202181747449,529.940172906192515,91.4002420948697],"hsluv":[85.8743202181747449,99.1672499526241182,91.4002420948697]},"#eeee22":{"lch":[91.4340680155716,98.4094794247264559,85.8743202181747],"luv":[91.4340680155716,7.08001949817026599,98.1544648222952105],"rgb":[0.933333333333333348,0.933333333333333348,0.133333333333333331],"xyz":[0.661210075623142268,0.794423521582673264,0.133643353922950597],"hpluv":[85.8743202181747,524.128135432551403,91.4340680155716],"hsluv":[85.8743202181747,97.631382664670781,91.4340680155716]},"#eeee33":{"lch":[91.4897155548310224,95.9410009888260475,85.874320218174617],"luv":[91.4897155548310224,6.90242608380469225,95.6923831080380864],"rgb":[0.933333333333333348,0.933333333333333348,0.2],"xyz":[0.664297826355600085,0.795658621875656391,0.149905507780561748],"hpluv":[85.874320218174617,514.550466890897383,91.4897155548310224],"hsluv":[85.874320218174617,95.1245282264191,91.4897155548310224]},"#eeee44":{"lch":[91.569956182858661,92.4193611961338917,85.8743202181745],"luv":[91.569956182858661,6.64906351605686385,92.1798691594911],"rgb":[0.933333333333333348,0.933333333333333348,0.266666666666666663],"xyz":[0.668755821599819,0.797441819973344,0.173384282733448386],"hpluv":[85.8743202181745,500.701064757674544,91.569956182858661],"hsluv":[85.8743202181745,91.5525623856835438,91.569956182858661]},"#eeee55":{"lch":[91.6770884747666912,87.7855710128071536,85.8743202181743612],"luv":[91.6770884747666912,6.31568785915728625,87.5580868047623682],"rgb":[0.933333333333333348,0.933333333333333348,0.333333333333333315],"xyz":[0.674718235639180874,0.799826785589088707,0.204786330007422301],"hpluv":[85.8743202181743612,482.129233036801622,91.6770884747666912],"hsluv":[85.8743202181743612,86.8606098102410584,91.6770884747666912]},"#eeee66":{"lch":[91.8130678710263197,82.0131153940214261,85.8743202181741481],"luv":[91.8130678710263197,5.90039150181238092,81.8005897091115912],"rgb":[0.933333333333333348,0.933333333333333348,0.4],"xyz":[0.682303231412689115,0.802860783898492,0.244733974414566263],"hpluv":[85.8743202181741481,458.402522986492727,91.8130678710263197],"hsluv":[85.8743202181741481,81.0287908474737435,91.8130678710263197]},"#eeee77":{"lch":[91.9795762822891163,75.1051560234190703,85.8743202181738923],"luv":[91.9795762822891163,5.40340190972927914,74.9105313631138],"rgb":[0.933333333333333348,0.933333333333333348,0.466666666666666674],"xyz":[0.691617244432891,0.806586389106572876,0.2937877763209642],"hpluv":[85.8743202181738923,429.072804464814112,91.9795762822891163],"hsluv":[85.8743202181738923,74.0694118243717838,91.9795762822891163]},"#eeee88":{"lch":[92.1780636375363542,67.0918310376028444,85.8743202181734233],"luv":[92.1780636375363542,4.82688735568056,66.9179718045445497],"rgb":[0.933333333333333348,0.933333333333333348,0.533333333333333326],"xyz":[0.702757661534834877,0.811042555947350419,0.35246063972453634],"hpluv":[85.8743202181734233,393.637417052406249,92.1780636375363542],"hsluv":[85.8743202181734233,66.0241185279663085,92.1780636375363542]},"#eeee99":{"lch":[92.4097746137617264,58.0271343519240759,85.8743202181728549],"luv":[92.4097746137617264,4.17473240419888647,57.8767650309654],"rgb":[0.933333333333333348,0.933333333333333348,0.6],"xyz":[0.715814625643907521,0.816265341590979632,0.421227317365654219],"hpluv":[85.8743202181728549,351.489405737917593,92.4097746137617264],"hsluv":[85.8743202181728549,56.9604957584853295,92.4097746137617264]},"#eeeeaa":{"lch":[92.6757669457712,47.9852530272659195,85.8743202181718885],"luv":[92.6757669457712,3.45227440531043239,47.8609058577161903],"rgb":[0.933333333333333348,0.933333333333333348,0.66666666666666663],"xyz":[0.730872318609160132,0.822288418777080699,0.500531166982652875],"hpluv":[85.8743202181718885,301.850049763156903,92.6757669457712],"hsluv":[85.8743202181718885,46.9680087594427178,92.6757669457712]},"#eeeebb":{"lch":[92.9769247593952741,37.0564456712956627,85.8743202181703253],"luv":[92.9769247593952741,2.66600696822725,36.9604189997225347],"rgb":[0.933333333333333348,0.933333333333333348,0.733333333333333282],"xyz":[0.748009910716496695,0.829143455620015457,0.590789152081294566],"hpluv":[85.8743202181703253,243.673832720465015,92.9769247593952741],"hsluv":[85.8743202181703253,36.1533987495139,92.9769247593952741]},"#eeeecc":{"lch":[93.3139689281547788,25.3426537884513579,85.8743202181670711],"luv":[93.3139689281547788,1.82326422217474082,25.2769817940640493],"rgb":[0.933333333333333348,0.933333333333333348,0.8],"xyz":[0.76730228616021845,0.836860405797504314,0.692395662751564722],"hpluv":[85.8743202181670711,175.509740066336235,93.3139689281547788],"hsluv":[85.8743202181670711,24.635760697738192,93.3139689281547788]},"#eeeedd":{"lch":[93.6874656794852143,12.9530841337210045,85.8743202181571377],"luv":[93.6874656794852143,0.931902991100789779,12.919518001474831],"rgb":[0.933333333333333348,0.933333333333333348,0.866666666666666696],"xyz":[0.788820611710852,0.84546773601775782,0.80572551065157072],"hpluv":[85.8743202181571377,95.2907564198152812,93.6874656794852143],"hsluv":[85.8743202181571377,12.5415797244653469,93.6874656794852143]},"#eeeeee":{"lch":[94.0978342288501466,4.90671076366048496e-12,0],"luv":[94.0978342288501466,4.6515081442594671e-12,1.56182025281704723e-12],"rgb":[0.933333333333333348,0.933333333333333348,0.933333333333333348],"xyz":[0.812632791977026758,0.854992608124227838,0.931136326720093943],"hpluv":[0,3.87295813278393312e-11,94.0978342288501466],"hsluv":[0,3.8714510065860851e-11,94.0978342288501466]},"#eeeeff":{"lch":[94.5453539438838391,13.4050739145486393,265.874320218197],"luv":[94.5453539438838391,-0.964421163933715353,-13.3703365130825738],"rgb":[0.933333333333333348,0.933333333333333348,1],"xyz":[0.838803840386858179,0.865461027488160561,1.06897051501187579],"hpluv":[265.874320218197,114.885858328026472,94.5453539438838391],"hsluv":[265.874320218197,99.999999999981938,94.5453539438838391]},"#777700":{"lch":[48.4055282063088868,53.3622847060179737,85.8743202181747],"luv":[48.4055282063088868,3.83912219020021839,53.2240036999738706],"rgb":[0.466666666666666674,0.466666666666666674,0],"xyz":[0.142041159467901856,0.171157317521294372,0.0255545090233414707],"hpluv":[85.8743202181747,139.887458074797621,48.4055282063088868],"hsluv":[85.8743202181747,100.000000000002331,48.4055282063088868]},"#777711":{"lch":[48.4562461221814829,51.3697569370731628,85.874320218174617],"luv":[48.4562461221814829,3.69577080233359201,51.2366392921178502],"rgb":[0.466666666666666674,0.466666666666666674,0.0666666666666666657],"xyz":[0.143052824967539,0.171561983721149225,0.0308826139880971],"hpluv":[85.874320218174617,134.523163178361983,48.4562461221814829],"hsluv":[85.874320218174617,96.1652781669932324,48.4562461221814829]},"#777722":{"lch":[48.5500530694338579,47.7524066126053768,85.8743202181744323],"luv":[48.5500530694338579,3.43552238949120969,47.6286628324468282],"rgb":[0.466666666666666674,0.466666666666666674,0.133333333333333331],"xyz":[0.144928183106016,0.172312126976540053,0.0407595001840763],"hpluv":[85.8743202181744323,124.808706278838557,48.5500530694338579],"hsluv":[85.8743202181744323,89.2207979160694293,48.5500530694338579]},"#777733":{"lch":[48.7039135074563063,42.0024110114446501,85.874320218174],"luv":[48.7039135074563063,3.02184190658892726,41.8935675523809934],"rgb":[0.466666666666666674,0.466666666666666674,0.2],"xyz":[0.148015933838473723,0.173547227269523152,0.0570216540416874432],"hpluv":[85.874320218174,109.433348296247431,48.7039135074563063],"hsluv":[85.874320218174,78.2295638238963704,48.7039135074563063]},"#777744":{"lch":[48.9247697387985312,34.1210359912247227,85.8743202181732528],"luv":[48.9247697387985312,2.45482042510454956,34.0326160292585],"rgb":[0.466666666666666674,0.466666666666666674,0.266666666666666663],"xyz":[0.152473929082692611,0.175330425367210746,0.0805004289945740747],"hpluv":[85.8743202181732528,88.497855114462908,48.9247697387985312],"hsluv":[85.8743202181732528,63.2636094274766378,48.9247697387985312]},"#777755":{"lch":[49.2178287935421537,24.2815247917763841,85.8743202181716327],"luv":[49.2178287935421537,1.74692184102758041,24.2186025669317253],"rgb":[0.466666666666666674,0.466666666666666674,0.333333333333333315],"xyz":[0.158436343122054624,0.177715390982955579,0.11190247626854799],"hpluv":[85.8743202181716327,62.6026663147617,49.2178287935421537],"hsluv":[85.8743202181716327,44.7521651878825324,49.2178287935421537]},"#777766":{"lch":[49.5868745078829676,12.7836483150604128,85.8743202181664742],"luv":[49.5868745078829676,0.919713018071489197,12.750521252385596],"rgb":[0.466666666666666674,0.466666666666666674,0.4],"xyz":[0.166021338895562781,0.18074938929235887,0.151850120675691952],"hpluv":[85.8743202181664742,32.7135296885410085,49.5868745078829676],"hsluv":[85.8743202181664742,23.385605928338574,49.5868745078829676]},"#777777":{"lch":[50.0344387925380687,2.67192546523751356e-12,0],"luv":[50.0344387925380687,2.52749706171116152e-12,8.66570421158112546e-13],"rgb":[0.466666666666666674,0.466666666666666674,0.466666666666666674],"xyz":[0.175335351915764714,0.184474994500439693,0.200903922582089861],"hpluv":[0,6.77633132918180515e-12,50.0344387925380687],"hsluv":[0,1.94020402484744743e-12,50.0344387925380687]},"#777788":{"lch":[50.5619220099523545,13.6772258441596737,265.874320218187563],"luv":[50.5619220099523545,-0.984000994856362388,-13.6417831984777926],"rgb":[0.466666666666666674,0.466666666666666674,0.533333333333333326],"xyz":[0.186475769017708515,0.188931161341217291,0.259576785985662029],"hpluv":[265.874320218187563,34.3252548472133,50.5619220099523545],"hsluv":[265.874320218187563,11.1797639211738336,50.5619220099523545]},"#777799":{"lch":[51.1696982290560669,27.8798810968622455,265.87432021818239],"luv":[51.1696982290560669,-2.00580373888746255,-27.8076342276045096],"rgb":[0.466666666666666674,0.466666666666666674,0.6],"xyz":[0.199532733126781242,0.194153946984846448,0.328343463626779908],"hpluv":[265.87432021818239,69.1380916549642563,51.1696982290560669],"hsluv":[265.87432021818239,22.9846011782403536,51.1696982290560669]},"#7777aa":{"lch":[51.8572203345112,42.2927406525888614,265.874320218180628],"luv":[51.8572203345112,-3.04272952363285398,-42.1831448442758443],"rgb":[0.466666666666666674,0.466666666666666674,0.66666666666666663],"xyz":[0.21459042609203377,0.200177024170947543,0.407647313243778564],"hpluv":[265.874320218180628,103.489412577951782,51.8572203345112],"hsluv":[265.874320218180628,35.2207148819814435,51.8572203345112]},"#7777bb":{"lch":[52.6231302285762439,56.6671214785474,265.874320218179832],"luv":[52.6231302285762439,-4.07688697591046,-56.5202764435038816],"rgb":[0.466666666666666674,0.466666666666666674,0.733333333333333282],"xyz":[0.231728018199370445,0.207032061013882301,0.497905298342420255],"hpluv":[265.874320218179832,136.645017565491173,52.6231302285762439],"hsluv":[265.874320218179832,47.751077300634,52.6231302285762439]},"#7777cc":{"lch":[53.4653742998309696,70.8221320427834513,265.874320218179378],"luv":[53.4653742998309696,-5.09526194727884452,-70.6386062488075],"rgb":[0.466666666666666674,0.466666666666666674,0.8],"xyz":[0.251020393643092143,0.214749011191371103,0.599511809012690411],"hpluv":[265.874320218179378,168.087613695837888,53.4653742998309696],"hsluv":[265.874320218179378,60.4968982098403671,53.4653742998309696]},"#7777dd":{"lch":[54.3813217092404102,84.6378263199215581,265.874320218179037],"luv":[54.3813217092404102,-6.08922498249284594,-84.4184990584042083],"rgb":[0.466666666666666674,0.466666666666666674,0.866666666666666696],"xyz":[0.272538719193725743,0.223356341411624637,0.712841656912696409],"hpluv":[265.874320218179037,197.494074150637061,54.3813217092404102],"hsluv":[265.874320218179037,73.4330970128385445,54.3813217092404102]},"#7777ee":{"lch":[55.3678819060931,98.0443353361264656,265.874320218178809],"luv":[55.3678819060931,-7.05374939408338086,-97.7902669542745713],"rgb":[0.466666666666666674,0.466666666666666674,0.933333333333333348],"xyz":[0.296350899459900452,0.232881213518094682,0.838252472981219632],"hpluv":[265.874320218178809,224.700440227144242,55.3678819060931],"hsluv":[265.874320218178809,86.5809092876847,55.3678819060931]},"#7777ff":{"lch":[56.4216176153771158,111.010032393554411,265.874320218178696],"luv":[56.4216176153771158,-7.98655981550332,-110.722365194803288],"rgb":[0.466666666666666674,0.466666666666666674,1],"xyz":[0.322521947869731873,0.243349632882027378,0.976086661273001477],"hpluv":[265.874320218178696,249.664056525023511,56.4216176153771158],"hsluv":[265.874320218178696,99.99999999999892,56.4216176153771158]},"#eeff00":{"lch":[95.8710857598618702,106.837421111995667,91.929871543819857],"luv":[95.8710857598618702,-3.59788306357601462,106.776822332015158],"rgb":[0.933333333333333348,1,0],"xyz":[0.710175424414702,0.896973456986776663,0.135722486905439893],"hpluv":[91.929871543819857,1221.941869030823,95.8710857598618702],"hsluv":[91.929871543819857,100.000000000002217,95.8710857598618702]},"#eeff11":{"lch":[95.8879066370154192,106.077593073364397,91.9648080695471748],"luv":[95.8879066370154192,-3.63693915095535747,106.015227330089402],"rgb":[0.933333333333333348,1,0.0666666666666666657],"xyz":[0.71118708991433921,0.897378123186631571,0.14105059187019553],"hpluv":[91.9648080695471748,1218.36968740939687,95.8879066370154192],"hsluv":[91.9648080695471748,99.9999999999846096,95.8879066370154192]},"#eeff22":{"lch":[95.9190746883988083,104.674935415410417,92.0306447189025221],"luv":[95.9190746883988083,-3.7090534526558554,104.609201443781629],"rgb":[0.933333333333333348,1,0.133333333333333331],"xyz":[0.713062448052816156,0.898128266442022372,0.150927478066174708],"hpluv":[92.0306447189025221,1211.72771901411761,95.9190746883988083],"hsluv":[92.0306447189025221,99.9999999999843254,95.9190746883988083]},"#eeff33":{"lch":[95.9703546560603,102.38192729680722,92.1421884898051076],"luv":[95.9703546560603,-3.826988551916231,102.31037677397255],"rgb":[0.933333333333333348,1,0.2],"xyz":[0.716150198785274,0.899363366735005498,0.167189631923785859],"hpluv":[92.1421884898051076,1200.73225066318059,95.9703546560603],"hsluv":[92.1421884898051076,99.9999999999843,95.9703546560603]},"#eeff44":{"lch":[96.0443082677326316,99.1069805797193482,92.3105231291127666],"luv":[96.0443082677326316,-3.99552836231266495,99.0264073504377],"rgb":[0.933333333333333348,1,0.266666666666666663],"xyz":[0.720608194029492832,0.901146564832693064,0.190668406876672497],"hpluv":[92.3105231291127666,1184.71704479359755,96.0443082677326316],"hsluv":[92.3105231291127666,99.999999999984,96.0443082677326316]},"#eeff55":{"lch":[96.1430663154878,94.7914212488158086,92.5502587525383831],"luv":[96.1430663154878,-4.21781218752730513,94.6975374691506744],"rgb":[0.933333333333333348,1,0.333333333333333315],"xyz":[0.726570608068854762,0.903531530448437814,0.222070454150646412],"hpluv":[92.5502587525383831,1163.01160371768833,96.1430663154878],"hsluv":[92.5502587525383831,99.9999999999832312,96.1430663154878]},"#eeff66":{"lch":[96.2684490440968261,89.4056432425818315,92.8821944044194083],"luv":[96.2684490440968261,-4.49554545672610839,89.2925479234763912],"rgb":[0.933333333333333348,1,0.4],"xyz":[0.734155603842363,0.906565528757841133,0.262018098557790347],"hpluv":[92.8821944044194083,1134.86447310352946,96.2684490440968261],"hsluv":[92.8821944044194083,99.9999999999826912,96.2684490440968261]},"#eeff77":{"lch":[96.4220309754045104,82.947030730659,93.3376121292550494],"luv":[96.4220309754045104,-4.82912482473711879,82.8063370791148827],"rgb":[0.933333333333333348,1,0.466666666666666674],"xyz":[0.743469616862564853,0.910291133965922,0.311071900464188311],"hpluv":[93.3376121292550494,1099.34916045901696,96.4220309754045104],"hsluv":[93.3376121292550494,99.9999999999824354,96.4220309754045104]},"#eeff88":{"lch":[96.6051797330544559,75.4384320618763553,93.966065888554354],"luv":[96.6051797330544559,-5.21774760700183382,75.2577713054536446],"rgb":[0.933333333333333348,1,0.533333333333333326],"xyz":[0.754610033964508764,0.914747300806699526,0.369744763867760451],"hpluv":[93.966065888554354,1055.22684316018899,96.6051797330544559],"hsluv":[93.966065888554354,99.9999999999810711,96.6051797330544559]},"#eeff99":{"lch":[96.8190810543072,66.9270103141668926,94.8508818247366],"luv":[96.8190810543072,-5.65953211211599072,66.6872881879637589],"rgb":[0.933333333333333348,1,0.6],"xyz":[0.767666998073581408,0.919970086450328739,0.43851144150887833],"hpluv":[94.8508818247366,1000.72847038880911,96.8190810543072],"hsluv":[94.8508818247366,99.9999999999804,96.8190810543072]},"#eeffaa":{"lch":[97.0647558759300182,57.4841926777339438,96.1432585072641785],"luv":[97.0647558759300182,-6.15165762861061438,57.1540857352402938],"rgb":[0.933333333333333348,1,0.66666666666666663],"xyz":[0.782724691038834,0.925993163636429806,0.517815291125877],"hpluv":[96.1432585072641785,933.191048721381,97.0647558759300182],"hsluv":[96.1432585072641785,99.9999999999786127,97.0647558759300182]},"#eeffbb":{"lch":[97.3430726615411857,47.2094061136043166,98.1473956779809242],"luv":[97.3430726615411857,-6.69052372550339935,46.7329104366258861],"rgb":[0.933333333333333348,1,0.733333333333333282],"xyz":[0.799862283146170583,0.932848200479364564,0.608073276224518677],"hpluv":[98.1473956779809242,848.432918810296883,97.3430726615411857],"hsluv":[98.1473956779809242,99.9999999999760689,97.3430726615411857]},"#eeffcc":{"lch":[97.6547568121604,36.2474903433398126,101.573139749476653],"luv":[97.6547568121604,-7.27192346215819718,35.5105573787715443],"rgb":[0.933333333333333348,1,0.8],"xyz":[0.819154658589892337,0.940565150656853421,0.709679786894788833],"hpluv":[101.573139749476653,739.717147432346792,97.6547568121604],"hsluv":[101.573139749476653,99.999999999972971,97.6547568121604]},"#eeffdd":{"lch":[98.0003982932414743,24.8675243497069864,108.50155795297276],"luv":[98.0003982932414743,-7.89122250686935445,23.5822470225029335],"rgb":[0.933333333333333348,1,0.866666666666666696],"xyz":[0.840672984140525936,0.949172480877106928,0.823009634794794831],"hpluv":[108.50155795297276,596.728870831386416,98.0003982932414743],"hsluv":[108.50155795297276,99.9999999999688072,98.0003982932414743]},"#eeffee":{"lch":[98.3804582036479,13.96608756186059,127.715012949221688],"luv":[98.3804582036479,-8.54353535492541205,11.0480588984987129],"rgb":[0.933333333333333348,1,0.933333333333333348],"xyz":[0.864485164406700646,0.958697352983577,0.948420450863318],"hpluv":[127.715012949221688,414.943064796341446,98.3804582036479],"hsluv":[127.715012949221688,99.9999999999608491,98.3804582036479]},"#eeffff":{"lch":[98.7952747621608438,9.43620053547767768,192.177050630058204],"luv":[98.7952747621608438,-9.22389036737693679,-1.99040876112424892],"rgb":[0.933333333333333348,1,1],"xyz":[0.890656212816532067,0.969165772347509669,1.0862546391551],"hpluv":[192.177050630058204,378.040319927501173,98.7952747621608438],"hsluv":[192.177050630058204,99.999999999948713,98.7952747621608438]},"#778800":{"lch":[53.5249548615687303,60.5938372915660253,96.5029793655947259],"luv":[53.5249548615687303,-6.86254771619202231,60.2039745910497572],"rgb":[0.466666666666666674,0.533333333333333326,0],"xyz":[0.164113529192872309,0.215302056971235917,0.0329119655983314136],"hpluv":[96.5029793655947259,143.651932639250902,53.5249548615687303],"hsluv":[96.5029793655947259,100.000000000002373,53.5249548615687303]},"#778811":{"lch":[53.5684856288310272,58.8481082257442409,96.7583563096261088],"luv":[53.5684856288310272,-6.9253766303469888,58.4391906196240143],"rgb":[0.466666666666666674,0.533333333333333326,0.0666666666666666657],"xyz":[0.165125194692509442,0.21570672317109077,0.0382400705630870433],"hpluv":[96.7583563096261088,139.399900460742,53.5684856288310272],"hsluv":[96.7583563096261088,96.9357421545617,53.5684856288310272]},"#778822":{"lch":[53.6490362820541407,55.6690512282284615,97.2652817371477],"luv":[53.6490362820541407,-7.04010577997538,55.2220986133077147],"rgb":[0.466666666666666674,0.533333333333333326,0.133333333333333331],"xyz":[0.167000552830986443,0.216456866426481598,0.0481169567590662428],"hpluv":[97.2652817371477,131.671329649176641,53.6490362820541407],"hsluv":[97.2652817371477,91.3605066517003337,53.6490362820541407]},"#778833":{"lch":[53.7812573057213,50.5917713326567053,98.2096275165039856],"luv":[53.7812573057213,-7.22426441450666346,50.0733195448945381],"rgb":[0.466666666666666674,0.533333333333333326,0.2],"xyz":[0.170088303563444176,0.217691966719464697,0.064379110616677393],"hpluv":[98.2096275165039856,119.368094402160139,53.7812573057213],"hsluv":[98.2096275165039856,82.4672262716137539,53.7812573057213]},"#778844":{"lch":[53.9712743947247162,43.5928841845235198,99.8805739619221811],"luv":[53.9712743947247162,-7.48032491712259429,42.9462954241638357],"rgb":[0.466666666666666674,0.533333333333333326,0.266666666666666663],"xyz":[0.174546298807663064,0.219475164817152291,0.0878578855695640315],"hpluv":[99.8805739619221811,102.492540276722124,53.9712743947247162],"hsluv":[99.8805739619221811,70.2195807792145672,53.9712743947247162]},"#778855":{"lch":[54.2238135722873,34.8221097745323078,102.954066597198249],"luv":[54.2238135722873,-7.80606678579386326,33.9358903004666175],"rgb":[0.466666666666666674,0.533333333333333326,0.333333333333333315],"xyz":[0.180508712847025077,0.221860130432897124,0.119259932843537933],"hpluv":[102.954066597198249,81.4900057495692636,54.2238135722873],"hsluv":[102.954066597198249,54.8454134878709638,54.2238135722873]},"#778866":{"lch":[54.542475349788262,24.6519214642532667,109.417534351990682],"luv":[54.542475349788262,-8.19552569001744224,23.2497438812554442],"rgb":[0.466666666666666674,0.533333333333333326,0.4],"xyz":[0.188093708620533234,0.224894128742300414,0.159207577250681909],"hpluv":[109.417534351990682,57.3528835536874197,54.542475349788262],"hsluv":[109.417534351990682,36.7830408334215164,54.542475349788262]},"#778877":{"lch":[54.9298804020046703,14.1239929232838151,127.715012949231166],"luv":[54.9298804020046703,-8.6401314869560828,11.1729720300858784],"rgb":[0.466666666666666674,0.533333333333333326,0.466666666666666674],"xyz":[0.197407721640735168,0.228619733950381238,0.208261379157079818],"hpluv":[127.715012949231166,32.6278280107521041,54.9298804020046703],"hsluv":[127.715012949231166,16.6133799052879709,54.9298804020046703]},"#778888":{"lch":[55.3877640712208574,9.3400800844087577,192.177050630059369],"luv":[55.3877640712208574,-9.12993258220805437,-1.97013375878514596],"rgb":[0.466666666666666674,0.533333333333333326,0.533333333333333326],"xyz":[0.208548138742678968,0.233075900791158835,0.266934242560651958],"hpluv":[192.177050630059369,21.3981433643613,55.3877640712208574],"hsluv":[192.177050630059369,21.3143847536295468,55.3877640712208574]},"#778899":{"lch":[55.9170512374386703,18.5603965019494623,238.655736169794807],"luv":[55.9170512374386703,-9.65472976501325597,-15.851640655596027],"rgb":[0.466666666666666674,0.533333333333333326,0.6],"xyz":[0.221605102851751695,0.238298686434788,0.335700920201769892],"hpluv":[238.655736169794807,42.1194135101242679,55.9170512374386703],"hsluv":[238.655736169794807,26.1912729818073053,55.9170512374386703]},"#7788aa":{"lch":[56.5179258756863732,31.8473117719276075,251.310804784322386],"luv":[56.5179258756863732,-10.2049729927717898,-30.1680260095876527],"rgb":[0.466666666666666674,0.533333333333333326,0.66666666666666663],"xyz":[0.236662795817004223,0.244321763620889087,0.415004769818768493],"hpluv":[251.310804784322386,71.5032678590983721,56.5179258756863732],"hsluv":[251.310804784322386,31.1149405392867244,56.5179258756863732]},"#7788bb":{"lch":[57.1899017055338845,45.9393215269311881,256.438388794294667],"luv":[57.1899017055338845,-10.7723499078102041,-44.6584565319768387],"rgb":[0.466666666666666674,0.533333333333333326,0.733333333333333282],"xyz":[0.253800387924340898,0.251176800463823846,0.505262754917410239],"hpluv":[256.438388794294667,101.930593576715296,57.1899017055338845],"hsluv":[256.438388794294667,41.4357647235180622,57.1899017055338845]},"#7788cc":{"lch":[57.9318961804226547,60.1932243037694406,259.131204763586595],"luv":[57.9318961804226547,-11.3500713849249486,-59.1134513595764233],"rgb":[0.466666666666666674,0.533333333333333326,0.8],"xyz":[0.273092763368062652,0.258893750641312648,0.606869265587680395],"hpluv":[259.131204763586595,131.8466774878151,57.9318961804226547],"hsluv":[259.131204763586595,55.5026255722761661,57.9318961804226547]},"#7788dd":{"lch":[58.7423077351926679,74.3397271130694861,260.762999043897821],"luv":[58.7423077351926679,-11.9329115646152975,-73.3757497327060264],"rgb":[0.466666666666666674,0.533333333333333326,0.866666666666666696],"xyz":[0.29461108891869614,0.267501080861566209,0.720199113487686393],"hpluv":[260.762999043897821,160.586593274196787,58.7423077351926679],"hsluv":[260.762999043897821,69.9489143241080598,58.7423077351926679]},"#7788ee":{"lch":[59.6190949291064101,88.2283098571320465,261.84384456781811],"luv":[59.6190949291064101,-12.5170812067924775,-87.3358880318318285],"rgb":[0.466666666666666674,0.533333333333333326,0.933333333333333348],"xyz":[0.318423269184870905,0.277025952968036226,0.845609929556209616],"hpluv":[261.84384456781811,187.785436290663455,59.6190949291064101],"hsluv":[261.84384456781811,84.7689484415743237,59.6190949291064101]},"#7788ff":{"lch":[60.55985551741054,101.77153783075579,262.604380260147],"luv":[60.55985551741054,-13.1000102630052879,-100.924901008354297],"rgb":[0.466666666666666674,0.533333333333333326,1],"xyz":[0.344594317594702271,0.28749437233196895,0.983444117847991461],"hpluv":[262.604380260147,213.245970352856943,60.55985551741054],"hsluv":[262.604380260147,99.9999999999987921,60.55985551741054]},"#779900":{"lch":[58.6994568897504223,69.1976359459353603,103.993850276975294],"luv":[58.6994568897504223,-16.7332165977800322,67.1439668384135899],"rgb":[0.466666666666666674,0.6,0],"xyz":[0.189983129645339782,0.267041257876171612,0.0415351657491536685],"hpluv":[103.993850276975294,149.587912305351722,58.6994568897504223],"hsluv":[103.993850276975294,100.000000000002444,58.6994568897504223]},"#779911":{"lch":[58.7371702745588493,67.6759907780605232,104.326162498332039],"luv":[58.7371702745588493,-16.7458460058928829,65.5714600214076],"rgb":[0.466666666666666674,0.6,0.0666666666666666657],"xyz":[0.190994795144976914,0.267445924076026464,0.0468632707139093],"hpluv":[104.326162498332039,146.20456366036808,58.7371702745588493],"hsluv":[104.326162498332039,97.5197891999702,58.7371702745588493]},"#779922":{"lch":[58.8069803361006223,64.8997387816913,104.97431376012679],"luv":[58.8069803361006223,-16.7691829588827659,62.6958578920751464],"rgb":[0.466666666666666674,0.6,0.133333333333333331],"xyz":[0.192870153283453916,0.268196067331417265,0.0567401569098885],"hpluv":[104.97431376012679,140.04041716275114,58.8069803361006223],"hsluv":[104.97431376012679,92.9911396041894704,58.8069803361006223]},"#779933":{"lch":[58.9216385591388132,60.4528100001228097,106.14237332279157],"luv":[58.9216385591388132,-16.8074000849803582,58.0693855598141369],"rgb":[0.466666666666666674,0.6,0.2],"xyz":[0.195957904015911677,0.269431167624400392,0.0730023107674996341],"hpluv":[106.14237332279157,130.191012221085145,58.9216385591388132],"hsluv":[106.14237332279157,85.724115661044948,58.9216385591388132]},"#779944":{"lch":[59.0865618982540752,54.3006768161790845,108.091337704968765],"luv":[59.0865618982540752,-16.8621369683366211,51.6161974534756354],"rgb":[0.466666666666666674,0.6,0.266666666666666663],"xyz":[0.200415899260130537,0.271214365722087958,0.0964810857203862726],"hpluv":[108.091337704968765,116.615384645059635,59.0865618982540752],"hsluv":[108.091337704968765,75.6282332091309399,59.0865618982540752]},"#779955":{"lch":[59.3060149965037056,46.5647823410072945,111.326222899357617],"luv":[59.3060149965037056,-16.9345685221747893,43.3762532203180413],"rgb":[0.466666666666666674,0.6,0.333333333333333315],"xyz":[0.206378313299492522,0.273599331337832818,0.127883132994360188],"hpluv":[111.326222899357617,99.6318422422000367,59.3060149965037056],"hsluv":[111.326222899357617,62.8087826319283806,59.3060149965037056]},"#779966":{"lch":[59.5833535636433282,37.5662597340720836,116.949978591108717],"luv":[59.5833535636433282,-17.0254963867212936,33.4866591823296957],"rgb":[0.466666666666666674,0.6,0.4],"xyz":[0.213963309073000707,0.276633329647236137,0.16783077740150415],"hpluv":[116.949978591108717,80.0041177209304522,59.5833535636433282],"hsluv":[116.949978591108717,47.5357009492008,59.5833535636433282]},"#779977":{"lch":[59.921152065724,28.0111989307655129,127.71501294923614],"luv":[59.921152065724,-17.1354122862910181,22.1586306282167591],"rgb":[0.466666666666666674,0.6,0.466666666666666674],"xyz":[0.223277322093202613,0.280358934855316932,0.216884579307902059],"hpluv":[127.71501294923614,59.3185968765002301,59.921152065724],"hsluv":[127.71501294923614,30.2037385091367128,59.921152065724]},"#779988":{"lch":[60.3212826107906608,19.7788738743410271,150.794869664161695],"luv":[60.3212826107906608,-17.2645515875173317,9.65086059473676272],"rgb":[0.466666666666666674,0.6,0.533333333333333326],"xyz":[0.234417739195146468,0.28481510169609453,0.275557442711474199],"hpluv":[150.794869664161695,41.6073752981458043,60.3212826107906608],"hsluv":[150.794869664161695,33.5278156565034706,60.3212826107906608]},"#779999":{"lch":[60.7849725890424537,17.8137422376051369,192.177050630060307],"luv":[60.7849725890424537,-17.4129412378011317,-3.75751113860251662],"rgb":[0.466666666666666674,0.6,0.6],"xyz":[0.247474703304219168,0.290037887339723688,0.344324120352592133],"hpluv":[192.177050630060307,37.1876097830212373,60.7849725890424537],"hsluv":[192.177050630060307,37.0420465685486562,60.7849725890424537]},"#7799aa":{"lch":[61.3128540464897895,25.0117677757311512,225.340924984985747],"luv":[61.3128540464897895,-17.5804418295499474,-17.7909131959243076],"rgb":[0.466666666666666674,0.6,0.66666666666666663],"xyz":[0.262532396269471724,0.29606096452582481,0.423627969969590734],"hpluv":[225.340924984985747,51.7645188682129742,61.3128540464897895],"hsluv":[225.340924984985747,40.6599304384258815,61.3128540464897895]},"#7799bb":{"lch":[61.9050111975332129,36.7727368637825478,241.108601392342877],"luv":[61.9050111975332129,-17.766782778670386,-32.1958942436537],"rgb":[0.466666666666666674,0.6,0.733333333333333282],"xyz":[0.279669988376808343,0.302916001368759569,0.513885955068232425],"hpluv":[241.108601392342877,75.37710856774234,61.9050111975332129],"hsluv":[241.108601392342877,44.3026829048042927,61.9050111975332129]},"#7799cc":{"lch":[62.5610290710097274,50.0883036089361084,248.973595844380469],"luv":[62.5610290710097274,-17.971590279241223,-46.7531827927901],"rgb":[0.466666666666666674,0.6,0.8],"xyz":[0.298962363820530097,0.31063295154624837,0.615492465738502581],"hpluv":[248.973595844380469,101.594866952252644,62.5610290710097274],"hsluv":[248.973595844380469,49.5852758814030068,62.5610290710097274]},"#7799dd":{"lch":[63.2800443412030518,63.9273589508424962,253.464421950176984],"luv":[63.2800443412030518,-18.1944086519195096,-61.2835272829234228],"rgb":[0.466666666666666674,0.6,0.866666666666666696],"xyz":[0.320480689371163641,0.319240281766501877,0.728822313638508579],"hpluv":[253.464421950176984,128.191525099113591,63.2800443412030518],"hsluv":[253.464421950176984,65.7895471985927429,63.2800443412030518]},"#7799ee":{"lch":[64.0607982423263138,77.8622331281598292,256.304567564122067],"luv":[64.0607982423263138,-18.434716379612933,-75.6484539148497106],"rgb":[0.466666666666666674,0.6,0.933333333333333348],"xyz":[0.344292869637338406,0.328765153872971894,0.854233129707031802],"hpluv":[256.304567564122067,154.231767587931557,64.0607982423263138],"hsluv":[256.304567564122067,82.5871459557978085,64.0607982423263138]},"#7799ff":{"lch":[64.9016907971027,91.67329289213788,258.23504341307023],"luv":[64.9016907971027,-18.6919383586334327,-89.7474460365571929],"rgb":[0.466666666666666674,0.6,1],"xyz":[0.370463918047169771,0.339233573236904618,0.992067317998813758],"hpluv":[258.23504341307023,179.236372955016122,64.9016907971027],"hsluv":[258.23504341307023,99.9999999999984368,64.9016907971027]},"#660000":{"lch":[19.330201679573328,65.0080772249371819,12.1770506300617765],"luv":[19.330201679573328,63.5454254137925432,13.7123671721378795],"rgb":[0.4,0,0],"xyz":[0.0547936733227042463,0.0282529878070199789,0.00256845343700170745],"hpluv":[12.1770506300617765,426.746789183125202,19.330201679573328],"hsluv":[12.1770506300617765,100.000000000002217,19.330201679573328]},"#660011":{"lch":[19.4980803058243595,61.695772445130423,8.9911342856641614],"luv":[19.4980803058243595,60.9376877881905799,9.641916024853316],"rgb":[0.4,0,0.0666666666666666657],"xyz":[0.0558053388223413716,0.0286576540068748317,0.0078965584017573389],"hpluv":[8.9911342856641614,401.51602003210553,19.4980803058243595],"hsluv":[8.9911342856641614,99.9999999999966178,19.4980803058243595]},"#660022":{"lch":[19.8051492014688648,56.728751528179842,2.87530221933591967],"luv":[19.8051492014688648,56.6573341637173584,2.84565201787440492],"rgb":[0.4,0,0.133333333333333331],"xyz":[0.0576806969608183867,0.029407797262265653,0.0177734445977365332],"hpluv":[2.87530221933591967,363.466537566247382,19.8051492014688648],"hsluv":[2.87530221933591967,99.9999999999968594,19.8051492014688648]},"#660033":{"lch":[20.2995520444984123,51.2727836305606957,352.516911450402631],"luv":[20.2995520444984123,50.836110988726972,-6.67743669143524787],"rgb":[0.4,0,0.2],"xyz":[0.0607684476932761272,0.0306428975552487659,0.0340355984553476765],"hpluv":[352.516911450402631,320.508659944055125,20.2995520444984123],"hsluv":[352.516911450402631,99.9999999999973852,20.2995520444984123]},"#660044":{"lch":[20.9904438433464762,47.7800185043531087,338.095292373375855],"luv":[20.9904438433464762,44.3305689635839855,-17.8250055719836844],"rgb":[0.4,0,0.266666666666666663],"xyz":[0.0652264429374950078,0.0324260956529363389,0.057514373408234315],"hpluv":[338.095292373375855,288.844444062118953,20.9904438433464762],"hsluv":[338.095292373375855,99.999999999997911,20.9904438433464762]},"#660055":{"lch":[21.8759682447435324,48.0792454528985687,322.009867044845],"luv":[21.8759682447435324,37.8920594608334085,-29.5940141436867741],"rgb":[0.4,0,0.333333333333333315],"xyz":[0.071188856976857,0.0348110612686811718,0.0889164206822082304],"hpluv":[322.009867044845,278.887908627948889,21.8759682447435324],"hsluv":[322.009867044845,99.9999999999984,21.8759682447435324]},"#660066":{"lch":[22.9458380566939866,52.2668983658326383,307.715012949243601],"luv":[22.9458380566939866,31.9734565677830815,-41.3464235441515271],"rgb":[0.4,0,0.4],"xyz":[0.0787738527503651781,0.0378450595780844834,0.128864065089352192],"hpluv":[307.715012949243601,289.042783730483393,22.9458380566939866],"hsluv":[307.715012949243601,99.9999999999988,22.9458380566939866]},"#660077":{"lch":[24.1840444716539054,59.1802438936044553,296.875135467660698],"luv":[24.1840444716539054,26.7522904844618061,-52.7884099129864097],"rgb":[0.4,0,0.466666666666666674],"xyz":[0.0880878657705671,0.0415706647861653,0.177917866995750101],"hpluv":[296.875135467660698,310.518260327731298,24.1840444716539054],"hsluv":[296.875135467660698,99.9999999999992326,24.1840444716539054]},"#660088":{"lch":[25.5714349826340381,67.6035320092512819,289.201479741547303],"luv":[25.5714349826340381,22.2341957091879898,-63.8426039670327725],"rgb":[0.4,0,0.533333333333333326],"xyz":[0.0992282828725109256,0.0460268316269428907,0.236590730399322269],"hpluv":[289.201479741547303,335.469941782198191,25.5714349826340381],"hsluv":[289.201479741547303,99.9999999999995168,25.5714349826340381]},"#660099":{"lch":[27.0878540213863559,76.7583277742970296,283.827270614430063],"luv":[27.0878540213863559,18.3449067131383,-74.5339203342523291],"rgb":[0.4,0,0.6],"xyz":[0.112285246981583625,0.0512496172705720551,0.305357408040440148],"hpluv":[283.827270614430063,359.575614235331898,27.0878540213863559],"hsluv":[283.827270614430063,99.9999999999996732,27.0878540213863559]},"#6600aa":{"lch":[28.7136916664512327,86.2331190336617226,280.0081392435834],"luv":[28.7136916664512327,14.9862877024472088,-84.9209161465722246],"rgb":[0.4,0,0.66666666666666663],"xyz":[0.127342939946836181,0.0572726944566731566,0.384661257657438749],"hpluv":[280.0081392435834,381.087223541781498,28.7136916664512327],"hsluv":[280.0081392435834,99.9999999999998863,28.7136916664512327]},"#6600bb":{"lch":[30.4308478844127208,95.8259209373334784,277.232006261077231],"luv":[30.4308478844127208,12.063278317584528,-95.06358103774852],"rgb":[0.4,0,0.733333333333333282],"xyz":[0.144480532054172828,0.0641277312996079152,0.474919242756080495],"hpluv":[277.232006261077231,399.584170303460496,30.4308478844127208],"hsluv":[277.232006261077231,100.000000000000071,30.4308478844127208]},"#6600cc":{"lch":[32.2232190058254631,105.440117399912424,275.16595430901134],"luv":[32.2232190058254631,9.49391256045434,-105.011827817640437],"rgb":[0.4,0,0.8],"xyz":[0.163772907497894554,0.0718446814770967168,0.576525753426350707],"hpluv":[275.16595430901134,415.218107165999243,32.2232190058254631],"hsluv":[275.16595430901134,100.000000000000284,32.2232190058254631]},"#6600dd":{"lch":[34.0768449366564425,115.029794578821409,273.594219506454294],"luv":[34.0768449366564425,7.21119822634443164,-114.803537667557165],"rgb":[0.4,0,0.866666666666666696],"xyz":[0.185291233048528098,0.0804520116973502508,0.689855601326356704],"hpluv":[273.594219506454294,428.341637585051217,34.0768449366564425],"hsluv":[273.594219506454294,100.000000000000313,34.0768449366564425]},"#6600ee":{"lch":[35.9798440153965657,124.573148355199,272.374748889870204],"luv":[35.9798440153965657,5.16172842086039729,-124.466163477612255],"rgb":[0.4,0,0.933333333333333348],"xyz":[0.209103413314702835,0.0899768838038202817,0.815266417394879928],"hpluv":[272.374748889870204,439.343788723350144,35.9798440153965657],"hsluv":[272.374748889870204,100.000000000000313,35.9798440153965657]},"#6600ff":{"lch":[37.9222328155672699,134.059876636217865,271.411957283269032],"luv":[37.9222328155672699,3.30334385288953181,-134.01917192367489],"rgb":[0.4,0,1],"xyz":[0.235274461724534228,0.100445303167752992,0.953100605686661773],"hpluv":[271.411957283269032,448.58447779597617,37.9222328155672699],"hsluv":[271.411957283269032,100.00000000000054,37.9222328155672699]},"#661100":{"lch":[20.9278595225824304,60.6482483509225645,15.3961031612090817],"luv":[20.9278595225824304,58.4717927536604165,16.1015365791022269],"rgb":[0.4,0.0666666666666666657,0],"xyz":[0.0567980735836326536,0.0322617883288768559,0.00323658685731115833],"hpluv":[15.3961031612090817,367.733145903292666,20.9278595225824304],"hsluv":[15.3961031612090817,100.00000000000216,20.9278595225824304]},"#661111":{"lch":[21.0816163302651134,57.5811303886473453,12.1770506300618102],"luv":[21.0816163302651134,56.2855814623301782,12.1457768908291825],"rgb":[0.4,0.0666666666666666657,0.0666666666666666657],"xyz":[0.0578097390832697788,0.0326664545287317087,0.00856469182206678892],"hpluv":[12.1770506300618102,346.589664487627374,21.0816163302651134],"hsluv":[12.1770506300618102,81.2167011616125762,21.0816163302651134]},"#661122":{"lch":[21.363314856368774,52.932385078801687,5.93410154371749865],"luv":[21.363314856368774,52.6487447994206548,5.4723908098767966],"rgb":[0.4,0.0666666666666666657,0.133333333333333331],"xyz":[0.059685097221746794,0.0334165977841225301,0.018441578018045985],"hpluv":[5.93410154371749865,314.406957937895,21.363314856368774],"hsluv":[5.93410154371749865,82.5199513610387356,21.363314856368774]},"#661133":{"lch":[21.8180817632255923,47.7742586248590229,355.183549580278111],"luv":[21.8180817632255923,47.6055578330604661,-4.01131531521171425],"rgb":[0.4,0.0666666666666666657,0.2],"xyz":[0.0627728479542045414,0.0346516980771056429,0.0347037318756571317],"hpluv":[355.183549580278111,277.854041301729922,21.8180817632255923],"hsluv":[355.183549580278111,84.3121175303292603,21.8180817632255923]},"#661144":{"lch":[22.4559756968324393,44.5402485804784689,339.935360677682411],"luv":[22.4559756968324393,41.8369301419790247,-15.2808710453946635],"rgb":[0.4,0.0666666666666666657,0.266666666666666663],"xyz":[0.0672308431984234151,0.036434896174793216,0.0581825068285437702],"hpluv":[339.935360677682411,251.686564911624259,22.4559756968324393],"hsluv":[339.935360677682411,86.3348863624116518,22.4559756968324393]},"#661155":{"lch":[23.2773926977910151,45.1903944783221903,322.792583995755933],"luv":[23.2773926977910151,35.9919645110905364,-27.3267313035930464],"rgb":[0.4,0.0666666666666666657,0.333333333333333315],"xyz":[0.073193257237785414,0.0388198617905380489,0.0895845541025176717],"hpluv":[322.792583995755933,246.349182588766354,23.2773926977910151],"hsluv":[322.792583995755933,88.344826800164725,23.2773926977910151]},"#661166":{"lch":[24.275087751098269,49.8658315110702119,307.715012949243715],"luv":[24.275087751098269,30.5046415204515107,-39.4470277460696508],"rgb":[0.4,0.0666666666666666657,0.4],"xyz":[0.0807782530112935854,0.0418538600999413604,0.129532198509661634],"hpluv":[307.715012949243715,260.664316843383688,24.275087751098269],"hsluv":[307.715012949243715,90.1819147598703239,24.275087751098269]},"#661177":{"lch":[25.4363091503391701,57.3032374709331265,296.512546946797],"luv":[25.4363091503391701,25.5798087859014238,-51.2770358652572114],"rgb":[0.4,0.0666666666666666657,0.466666666666666674],"xyz":[0.0900922660314955,0.0455794653080221768,0.178586000416059543],"hpluv":[296.512546946797,285.867241464858182,25.4363091503391701],"hsluv":[296.512546946797,91.7740463972148461,25.4363091503391701]},"#661188":{"lch":[26.7449145171680129,66.1973281861227179,288.734792076243366],"luv":[26.7449145171680129,21.2617948521868456,-62.6898902427238127],"rgb":[0.4,0.0666666666666666657,0.533333333333333326],"xyz":[0.101232683133439333,0.0500356321487997746,0.23725886381963171],"hpluv":[288.734792076243366,314.078764213635395,26.7449145171680129],"hsluv":[288.734792076243366,93.110372692245349,26.7449145171680129]},"#661199":{"lch":[28.1832309630650286,75.7381406209258614,283.36677781159608],"luv":[28.1832309630650286,17.5094321789343716,-73.6864012521064637],"rgb":[0.4,0.0666666666666666657,0.6],"xyz":[0.114289647242512032,0.0552584177924289321,0.306025541460749617],"hpluv":[283.36677781159608,341.006914961476241,28.1832309630650286],"hsluv":[283.36677781159608,94.2123428080992,28.1832309630650286]},"#6611aa":{"lch":[29.733500038717203,85.5146667147819102,279.591039159426828],"luv":[29.733500038717203,14.2479867443400359,-84.3193518539685],"rgb":[0.4,0.0666666666666666657,0.66666666666666663],"xyz":[0.129347340207764588,0.0612814949785300336,0.385329391077748218],"hpluv":[279.591039159426828,364.950446526832081,29.733500038717203],"hsluv":[279.591039159426828,95.1136535912152254,29.733500038717203]},"#6611bb":{"lch":[31.378866229854367,95.3367425151459287,276.866082014695],"luv":[31.378866229854367,11.3974241300945351,-94.6530147253534153],"rgb":[0.4,0.0666666666666666657,0.733333333333333282],"xyz":[0.146484932315101235,0.0681365318214647853,0.475587376176389964],"hpluv":[276.866082014695,385.533736621086632,31.378866229854367],"hsluv":[276.866082014695,95.8493220980777636,31.378866229854367]},"#6611cc":{"lch":[33.1039576367877899,105.121866511028642,274.848446148865946],"luv":[33.1039576367877899,8.88494143701037409,-104.745714157780327],"rgb":[0.4,0.0666666666666666657,0.8],"xyz":[0.165777307758822962,0.0758534819989535869,0.577193886846660176],"hpluv":[274.848446148865946,402.951217622234481,33.1039576367877899],"hsluv":[274.848446148865946,96.4508528344463372,33.1039576367877899]},"#6611dd":{"lch":[34.8951509835915559,114.837148656435488,273.319244536407894],"luv":[34.8951509835915559,6.64899595047804048,-114.644500803094743],"rgb":[0.4,0.0666666666666666657,0.866666666666666696],"xyz":[0.187295633309456505,0.0844608122192071209,0.690523734746666173],"hpluv":[273.319244536407894,417.596303228590671,34.8951509835915559],"hsluv":[273.319244536407894,96.944722371929771,34.8951509835915559]},"#6611ee":{"lch":[36.7406193088150914,124.471664845310258,272.136065946829319],"luv":[36.7406193088150914,4.63940101804097527,-124.385173182164465],"rgb":[0.4,0.0666666666666666657,0.933333333333333348],"xyz":[0.211107813575631242,0.0939856843256771657,0.815934550815189397],"hpluv":[272.136065946829319,429.895948632666091,36.7406193088150914],"hsluv":[272.136065946829319,97.3524117238680446,36.7406193088150914]},"#6611ff":{"lch":[38.6302462525687815,134.023748920536207,271.203906716280642],"luv":[38.6302462525687815,2.81591803113255,-133.994163605572282],"rgb":[0.4,0.0666666666666666657,1],"xyz":[0.237278861985462636,0.104454103689609862,0.953768739106971242],"hpluv":[271.203906716280642,440.244168299440901,38.6302462525687815],"hsluv":[271.203906716280642,99.999999999999531,38.6302462525687815]},"#662200":{"lch":[23.5697003211059126,54.0433218319152,21.7646438431993481],"luv":[23.5697003211059126,50.1908335966774928,20.038983444740694],"rgb":[0.4,0.133333333333333331,0],"xyz":[0.0605136973184005889,0.0396930357984128235,0.00447512810223376842],"hpluv":[21.7646438431993481,290.955989204018863,23.5697003211059126],"hsluv":[21.7646438431993481,100.000000000002302,23.5697003211059126]},"#662211":{"lch":[23.7037155268300239,51.2256671637292627,18.5481266113504795],"luv":[23.7037155268300239,48.5648418325832196,16.2949413667354186],"rgb":[0.4,0.133333333333333331,0.0666666666666666657],"xyz":[0.0615253628180377071,0.0400977019982676763,0.0098032330669894],"hpluv":[18.5481266113504795,274.227196288753476,23.7037155268300239],"hsluv":[18.5481266113504795,84.4421944630679775,23.7037155268300239]},"#662222":{"lch":[23.9497782760704823,46.8639841586094761,12.177050630061828],"luv":[23.9497782760704823,45.8095660888384515,9.88517404858116],"rgb":[0.4,0.133333333333333331,0.133333333333333331],"xyz":[0.0634007209565147362,0.0408478452536585,0.0196801192629685942],"hpluv":[12.177050630061828,248.300181449835577,23.9497782760704823],"hsluv":[12.177050630061828,58.184428739378582,23.9497782760704823]},"#662233":{"lch":[24.3484354577474491,41.8866591548313139,0.79920805816821483],"luv":[24.3484354577474491,41.8825842907357284,0.584250188216085209],"rgb":[0.4,0.133333333333333331,0.2],"xyz":[0.0664884716889724697,0.0420829455466416105,0.0359422731205797374],"hpluv":[0.79920805816821483,218.295100847162672,24.3484354577474491],"hsluv":[0.79920805816821483,61.8388407102714908,24.3484354577474491]},"#662244":{"lch":[24.9104705449366364,38.7518995195090881,343.921953822216381],"luv":[24.9104705449366364,37.2361321960480467,-10.7322027305005232],"rgb":[0.4,0.133333333333333331,0.266666666666666663],"xyz":[0.0709464669331913433,0.0438661436443291836,0.059421048073466376],"hpluv":[343.921953822216381,197.40147375767063,24.9104705449366364],"hsluv":[343.921953822216381,66.1143919991375,24.9104705449366364]},"#662255":{"lch":[25.6388481254070371,39.7515606661792376,324.488651014584605],"luv":[25.6388481254070371,32.3577893991285421,-23.0902585650003651],"rgb":[0.4,0.133333333333333331,0.333333333333333315],"xyz":[0.0769088809725533423,0.0462511092600740165,0.0908230953474402913],"hpluv":[324.488651014584605,196.74105716675524,25.6388481254070371],"hsluv":[324.488651014584605,70.5303777194930746,25.6388481254070371]},"#662266":{"lch":[26.530115175026431,45.1550068711170525,307.715012949244],"luv":[26.530115175026431,27.6228683191850166,-35.7204674010796381],"rgb":[0.4,0.133333333333333331,0.4],"xyz":[0.0844938767460615137,0.049285107569477328,0.130770739754584253],"hpluv":[307.715012949244,215.976303505553034,26.530115175026431],"hsluv":[307.715012949244,74.7212231760600076,26.530115175026431]},"#662277":{"lch":[27.5758503181253047,53.47184404785515,295.772994892671647],"luv":[27.5758503181253047,23.2499163509258366,-48.1526686233805137],"rgb":[0.4,0.133333333333333331,0.466666666666666674],"xyz":[0.0938078897662634331,0.0530107127775581444,0.179824541660982162],"hpluv":[295.772994892671647,246.056915236342576,27.5758503181253047],"hsluv":[295.772994892671647,78.4792949436714622,27.5758503181253047]},"#662288":{"lch":[28.7641691288539221,63.1969785740596492,287.807032602413699],"luv":[28.7641691288539221,19.3264050913403267,-60.169329123196718],"rgb":[0.4,0.133333333333333331,0.533333333333333326],"xyz":[0.104948306868207261,0.0574668796183357422,0.23849740506455433],"hpluv":[287.807032602413699,278.794247273594806,28.7641691288539221],"hsluv":[287.807032602413699,81.7283139306751565,28.7641691288539221]},"#662299":{"lch":[30.081149723697223,73.446586603294,282.467625610713],"luv":[30.081149723697223,15.8562317990126083,-71.7145800853016766],"rgb":[0.4,0.133333333333333331,0.6],"xyz":[0.118005270977279975,0.0626896652619649,0.307264082705672237],"hpluv":[282.467625610713,309.825038390781458,30.081149723697223],"hsluv":[282.467625610713,84.475317587044259,30.081149723697223]},"#6622aa":{"lch":[31.512047889249807,83.7990879252892569,278.786617054458873],"luv":[31.512047889249807,12.8007301136733549,-82.8156292354725565],"rgb":[0.4,0.133333333333333331,0.66666666666666663],"xyz":[0.133062963942532531,0.068712742448066,0.386567932322670837],"hpluv":[278.786617054458873,337.444217562648532,31.512047889249807],"hsluv":[278.786617054458873,86.7692530837111349,31.512047889249807]},"#6622bb":{"lch":[33.0422299311305281,94.07636648958254,276.16643073789237],"luv":[33.0422299311305281,10.1053888262289746,-93.5320471739658643],"rgb":[0.4,0.133333333333333331,0.733333333333333282],"xyz":[0.150200556049869149,0.0755677792910007529,0.476825917421312584],"hpluv":[276.16643073789237,361.285484259324733,33.0422299311305281],"hsluv":[276.16643073789237,88.6739591516067662,33.0422299311305281]},"#6622cc":{"lch":[34.6578144612334853,104.214655833315277,274.245119058655746],"luv":[34.6578144612334853,7.71433729467952212,-103.928742369761551],"rgb":[0.4,0.133333333333333331,0.8],"xyz":[0.169492931493590904,0.0832847294684895545,0.578432428091582684],"hpluv":[274.245119058655746,381.563613242959605,34.6578144612334853],"hsluv":[274.245119058655746,90.2534916489383079,34.6578144612334853]},"#6622dd":{"lch":[36.346058304563158,114.200305800004017,272.799119030217753],"luv":[36.346058304563158,5.5769048208672336,-114.064052082299],"rgb":[0.4,0.133333333333333331,0.866666666666666696],"xyz":[0.191011257044224447,0.0918920596887430885,0.691762275991588682],"hpluv":[272.799119030217753,398.702789727268566,36.346058304563158],"hsluv":[272.799119030217753,91.5654894217155118,36.346058304563158]},"#6622ee":{"lch":[38.0955422395423,124.039689220569301,271.686141036519132],"luv":[38.0955422395423,3.64980151132168062,-123.985980864222597],"rgb":[0.4,0.133333333333333331,0.933333333333333348],"xyz":[0.214823437310399185,0.101416931795213133,0.817173092060111905],"hpluv":[271.686141036519132,413.167199445381073,38.0955422395423],"hsluv":[271.686141036519132,92.6590152569973498,38.0955422395423]},"#6622ff":{"lch":[39.8962147757429264,133.745689778340022,270.812765394378914],"luv":[39.8962147757429264,1.89717678294479941,-133.732233416399],"rgb":[0.4,0.133333333333333331,1],"xyz":[0.240994485720230578,0.111885351159145829,0.95500728035189375],"hpluv":[270.812765394378914,425.390148773484384,39.8962147757429264],"hsluv":[270.812765394378914,99.99999999999946,39.8962147757429264]},"#ddaa00":{"lch":[72.3107430320736881,86.5721801417344494,59.9465914104400071],"luv":[72.3107430320736881,43.355958426121056,74.9333253195491267],"rgb":[0.866666666666666696,0.66666666666666663,0],"xyz":[0.441922241377765923,0.441231641500849037,0.0618909005679976823],"hpluv":[59.9465914104400071,151.919966798177825,72.3107430320736881],"hsluv":[59.9465914104400071,100.000000000002402,72.3107430320736881]},"#ddaa11":{"lch":[72.3377322217577188,85.4954146103564625,59.6744594052448178],"luv":[72.3377322217577188,43.1676990261245663,73.7971251485224],"rgb":[0.866666666666666696,0.66666666666666663,0.0666666666666666657],"xyz":[0.442933906877403,0.44163630770070389,0.067219005532753312],"hpluv":[59.6744594052448178,149.974443711406025,72.3377322217577188],"hsluv":[59.6744594052448178,98.5180859943944398,72.3377322217577188]},"#ddaa22":{"lch":[72.3877194091470386,83.5208789068112623,59.1557200492863586],"luv":[72.3877194091470386,42.8217010650181038,71.708013019916109],"rgb":[0.866666666666666696,0.66666666666666663,0.133333333333333331],"xyz":[0.444809265015880084,0.44238645095609469,0.0770958917287325],"hpluv":[59.1557200492863586,146.409577733002152,72.3877194091470386],"hsluv":[59.1557200492863586,95.7957425728033911,72.3877194091470386]},"#ddaa33":{"lch":[72.4698996386445771,80.3304907566891,58.2589820164620633],"luv":[72.4698996386445771,42.2603136650720543,68.3158373595774435],"rgb":[0.866666666666666696,0.66666666666666663,0.2],"xyz":[0.44789701574833779,0.443621551249077817,0.0933580455863436548],"hpluv":[58.2589820164620633,140.657238526484292,72.4698996386445771],"hsluv":[58.2589820164620633,91.3821490755410082,72.4698996386445771]},"#ddaa44":{"lch":[72.5882801580772679,75.8571050863154,56.8623293870095949],"luv":[72.5882801580772679,41.467485474955744,63.5196665644635701],"rgb":[0.866666666666666696,0.66666666666666663,0.266666666666666663],"xyz":[0.452355010992556705,0.445404749346765383,0.116836820539230293],"hpluv":[56.8623293870095949,132.607804442486071,72.5882801580772679],"hsluv":[56.8623293870095949,85.1564308385751332,72.5882801580772679]},"#ddaa55":{"lch":[72.7461171317656579,70.1198989219024469,54.780917696258733],"luv":[72.7461171317656579,40.4384565855633085,57.2846528644045065],"rgb":[0.866666666666666696,0.66666666666666663,0.333333333333333315],"xyz":[0.45831742503191869,0.447789714962510244,0.148238867813204195],"hpluv":[54.780917696258733,122.3124851735341,72.7461171317656579],"hsluv":[54.780917696258733,77.0893717991816345,72.7461171317656579]},"#ddaa66":{"lch":[72.9460991959627307,63.2340905833455835,51.7145858463931702],"luv":[72.9460991959627307,39.17852917707404,49.6345954292357661],"rgb":[0.866666666666666696,0.66666666666666663,0.4],"xyz":[0.465902420805426876,0.450823713271913562,0.188186512220348157],"hpluv":[51.7145858463931702,109.998947735143361,72.9460991959627307],"hsluv":[51.7145858463931702,67.2337497701281421,72.9460991959627307]},"#ddaa77":{"lch":[73.1904440644495651,55.4382228560327377,47.150998877343909],"luv":[73.1904440644495651,37.7017926183457632,40.6444508733775294],"rgb":[0.866666666666666696,0.66666666666666663,0.466666666666666674],"xyz":[0.475216433825628781,0.454549318479994358,0.237240314126746066],"hpluv":[47.150998877343909,96.1156803308001173,73.1904440644495651],"hsluv":[47.150998877343909,55.7140089565642214,73.1904440644495651]},"#ddaa88":{"lch":[73.4809558021361511,47.1613293807763228,40.1850915920125189],"luv":[73.4809558021361511,36.0295555463961819,30.4312687229965526],"rgb":[0.866666666666666696,0.66666666666666663,0.533333333333333326],"xyz":[0.486356850927572582,0.459005485320771955,0.295913177530318261],"hpluv":[40.1850915920125189,81.4424009312931645,73.4809558021361511],"hsluv":[40.1850915920125189,45.325944585658668,73.4809558021361511]},"#ddaa99":{"lch":[73.8190624606049539,39.1833139250455389,29.2463480703396321],"luv":[73.8190624606049539,34.1885051927702435,19.1436204212419021],"rgb":[0.866666666666666696,0.66666666666666663,0.6],"xyz":[0.499413815036645281,0.464228270964401113,0.36467985517143614],"hpluv":[29.2463480703396321,67.3553294964948,73.8190624606049539],"hsluv":[29.2463480703396321,46.1073405736803323,73.8190624606049539]},"#ddaaaa":{"lch":[74.2058435914849923,32.9500913661112946,12.1770506300625296],"luv":[74.2058435914849923,32.2087294789219527,6.95027095793437244],"rgb":[0.866666666666666696,0.66666666666666663,0.66666666666666663],"xyz":[0.514471508001897893,0.470251348150502235,0.443983704788434741],"hpluv":[12.1770506300625296,56.3453191386000114,74.2058435914849923],"hsluv":[12.1770506300625296,46.9171896008106,74.2058435914849923]},"#ddaabb":{"lch":[74.6420527030620633,30.7078714289026884,348.787813428378513],"luv":[74.6420527030620633,30.1217754775259223,-5.97093039446416807],"rgb":[0.866666666666666696,0.66666666666666663,0.733333333333333282],"xyz":[0.531609100109234456,0.477106384993437,0.534241689887076543],"hpluv":[348.787813428378513,52.2042025244198,74.6420527030620633],"hsluv":[348.787813428378513,47.7320050944543937,74.6420527030620633]},"#ddaacc":{"lch":[75.1281375044867445,34.0548346014018435,325.184688201169763],"luv":[75.1281375044867445,27.9589055182432595,-19.4430286208394669],"rgb":[0.866666666666666696,0.66666666666666663,0.8],"xyz":[0.55090147555295621,0.484823335170925795,0.635848200557346699],"hpluv":[325.184688201169763,57.5195499622066393,75.1281375044867445],"hsluv":[325.184688201169763,48.5278754329488109,75.1281375044867445]},"#ddaadd":{"lch":[75.6642595524878772,42.092894356631966,307.715012949247466],"luv":[75.6642595524878772,25.749668941594777,-33.2981426616688125],"rgb":[0.866666666666666696,0.66666666666666663,0.866666666666666696],"xyz":[0.572419801103589809,0.493430665391179302,0.749178048457352697],"hpluv":[307.715012949247466,70.5922995729826255,75.6642595524878772],"hsluv":[307.715012949247466,49.2811497501269855,75.6642595524878772]},"#ddaaee":{"lch":[76.2503141773092636,52.9001531738191915,296.399494755977059],"luv":[76.2503141773092636,23.5208512504545659,-47.3834967290038875],"rgb":[0.866666666666666696,0.66666666666666663,0.933333333333333348],"xyz":[0.596231981369764519,0.502955537497649319,0.87458886452587592],"hpluv":[296.399494755977059,89.1958388421213,76.2503141773092636],"hsluv":[296.399494755977059,73.8038640729286,76.2503141773092636]},"#ddaaff":{"lch":[76.8859510948180542,65.1444004641461447,289.080822119258073],"luv":[76.8859510948180542,21.295808093697417,-61.565261872824486],"rgb":[0.866666666666666696,0.66666666666666663,1],"xyz":[0.62240302977959594,0.513423956861582,1.01242305281765765],"hpluv":[289.080822119258073,113.514774922986319,76.8859510948180542],"hsluv":[289.080822119258073,99.9999999999968736,76.8859510948180542]},"#663300":{"lch":[27.2772702365161024,46.6784293424923,33.1138040531735385],"luv":[27.2772702365161024,39.0972512948193938,25.5006020923387098],"rgb":[0.4,0.2,0],"xyz":[0.0666314194074114075,0.0519284799764346272,0.00651436879857064926],"hpluv":[33.1138040531735385,217.147410386557254,27.2772702365161024],"hsluv":[33.1138040531735385,100.000000000002288,27.2772702365161024]},"#663311":{"lch":[27.3893959478715772,43.971204952951652,30.1269617465812196],"luv":[27.3893959478715772,38.0313691656755353,22.0699303215615963],"rgb":[0.4,0.2,0.0666666666666666657],"xyz":[0.0676430849070485257,0.0523331461762894801,0.0118424737633262799],"hpluv":[30.1269617465812196,203.716046393577358,27.3893959478715772],"hsluv":[30.1269617465812196,87.8713966090680572,27.3893959478715772]},"#663322":{"lch":[27.5957277293980781,39.608651287835805,23.9834802389854467],"luv":[27.5957277293980781,36.1889469500517436,16.0998563809655693],"rgb":[0.4,0.2,0.133333333333333331],"xyz":[0.0695184430455255548,0.0530832894316803,0.0217193599593054759],"hpluv":[23.9834802389854467,182.132533879714401,27.5957277293980781],"hsluv":[23.9834802389854467,66.9779468056010501,27.5957277293980781]},"#663333":{"lch":[27.9312558147072,34.2527069144242517,12.1770506300619683],"luv":[27.9312558147072,33.482036777055967,7.2250359324586606],"rgb":[0.4,0.2,0.2],"xyz":[0.0726061937779832883,0.0543183897246634143,0.0379815138169166192],"hpluv":[12.1770506300619683,155.612242967619039,27.9312558147072],"hsluv":[12.1770506300619683,36.4647718300342518,27.9312558147072]},"#663344":{"lch":[28.4068233476218452,30.4023991370198274,352.642674566889241],"luv":[28.4068233476218452,30.1520905841737843,-3.89323858637544307],"rgb":[0.4,0.2,0.266666666666666663],"xyz":[0.0770641890222021619,0.0561015878223509873,0.0614602887698032577],"hpluv":[352.642674566889241,135.807736934047625,28.4068233476218452],"hsluv":[352.642674566889241,42.3197568133242044,28.4068233476218452]},"#663355":{"lch":[29.027378781744666,31.164203729876963,328.257954430910445],"luv":[29.027378781744666,26.5028264215118483,-16.3953586660521324],"rgb":[0.4,0.2,0.333333333333333315],"xyz":[0.0830266030615641609,0.0584865534380958202,0.0928623360437771661],"hpluv":[328.257954430910445,136.234637721643935,29.027378781744666],"hsluv":[328.257954430910445,48.648881209958347,29.027378781744666]},"#663366":{"lch":[29.7928910898429251,37.2833882928919067,307.715012949244567],"luv":[29.7928910898429251,22.8075289246907325,-29.4935190668720466],"rgb":[0.4,0.2,0.4],"xyz":[0.0906115988350723323,0.0615205517474991317,0.132809980450921128],"hpluv":[307.715012949244567,158.796911496206434,29.7928910898429251],"hsluv":[307.715012949244567,54.9388950129523792,29.7928910898429251]},"#663377":{"lch":[30.6992208566667273,46.7654342463890345,294.320996437271049],"luv":[30.6992208566667273,19.2602655771695837,-42.6151148086008646],"rgb":[0.4,0.2,0.466666666666666674],"xyz":[0.0999256118552742517,0.0652461569555799481,0.181863782357319037],"hpluv":[294.320996437271049,193.302265796468333,30.6992208566667273],"hsluv":[294.320996437271049,60.8304716126584424,30.6992208566667273]},"#663388":{"lch":[31.7390466224972485,57.6768981875091811,286.074834637191429],"luv":[31.7390466224972485,15.9703082974272554,-55.4217812544619122],"rgb":[0.4,0.2,0.533333333333333326],"xyz":[0.11106602895721808,0.0697023237963575459,0.240536645760891205],"hpluv":[286.074834637191429,230.593651019326217,31.7390466224972485],"hsluv":[286.074834637191429,66.1275975958513,31.7390466224972485]},"#663399":{"lch":[32.9028065942714818,68.9918273860838696,280.844497617061506],"luv":[32.9028065942714818,12.9804074562249703,-67.7597319087197292],"rgb":[0.4,0.2,0.6],"xyz":[0.124122993066290793,0.0749251094399867,0.309303323402009112],"hpluv":[280.844497617061506,266.074975063872387,32.9028065942714818],"hsluv":[280.844497617061506,70.7618769362906761,32.9028065942714818]},"#6633aa":{"lch":[34.1795810026756612,80.2563017922262,277.366876751775067],"luv":[34.1795810026756612,10.2906460265496023,-79.5938225097975],"rgb":[0.4,0.2,0.66666666666666663],"xyz":[0.139180686031543321,0.0809481866260878,0.388607173019007712],"hpluv":[277.366876751775067,297.955725741163178,34.1795810026756612],"hsluv":[277.366876751775067,74.7463951454814293,34.1795810026756612]},"#6633bb":{"lch":[35.5578512622049701,91.2933310256451875,274.950579703742051],"luv":[35.5578512622049701,7.87828999249439477,-90.9527615663878208],"rgb":[0.4,0.2,0.733333333333333282],"xyz":[0.15631827813888,0.0878032234690225566,0.478865158117649459],"hpluv":[274.950579703742051,325.793841875348,35.5578512622049701],"hsluv":[274.950579703742051,78.1373397599298158,35.5578512622049701]},"#6633cc":{"lch":[37.0261004663704369,102.052471518039624,273.208108112313198],"luv":[37.0261004663704369,5.71114175070883,-101.892540467119574],"rgb":[0.4,0.2,0.8],"xyz":[0.175610653582601722,0.0955201736465113582,0.58047166878791967],"hpluv":[273.208108112313198,349.747708937339723,37.0261004663704369],"hsluv":[273.208108112313198,81.008127051099,37.0261004663704369]},"#6633dd":{"lch":[38.5732487885037258,112.538160698021628,271.912259810227567],"luv":[38.5732487885037258,3.75528971541350476,-112.475488051606391],"rgb":[0.4,0.2,0.866666666666666696],"xyz":[0.197128979133235266,0.104127503866764892,0.693801516687925668],"hpluv":[271.912259810227567,370.214070757058153,38.5732487885037258],"hsluv":[271.912259810227567,83.8924044294761,38.5732487885037258]},"#6633ee":{"lch":[40.1889386764538372,122.775879994578517,270.923585069715159],"luv":[40.1889386764538372,1.97901241536538453,-122.759929204537158],"rgb":[0.4,0.2,0.933333333333333348],"xyz":[0.22094115939941,0.113652375973234937,0.819212332756448891],"hpluv":[270.923585069715159,387.655406037674595,40.1889386764538372],"hsluv":[270.923585069715159,91.8481370725274502,40.1889386764538372]},"#6633ff":{"lch":[41.8636962738951581,132.796565847050772,270.152898062524457],"luv":[41.8636962738951581,0.354377123439640451,-132.796093005873018],"rgb":[0.4,0.2,1],"xyz":[0.247112207809241397,0.124120795337167633,0.957046521048230736],"hpluv":[270.152898062524457,402.521052726566381,41.8636962738951581],"hsluv":[270.152898062524457,99.9999999999993747,41.8636962738951581]},"#ddbb00":{"lch":[76.6269242453545871,86.8164471599593,69.4373142874166263],"luv":[76.6269242453545871,30.4927107526369845,81.2852390562642],"rgb":[0.866666666666666696,0.733333333333333282,0],"xyz":[0.475876739286364758,0.509140637318047595,0.0732090665375303],"hpluv":[69.4373142874166263,149.25100710879434,76.6269242453545871],"hsluv":[69.4373142874166263,100.000000000002373,76.6269242453545871]},"#ddbb11":{"lch":[76.6514577805917412,85.7837129406502754,69.2755127455160391],"luv":[76.6514577805917412,30.3566774947925779,80.2328956062352461],"rgb":[0.866666666666666696,0.733333333333333282,0.0666666666666666657],"xyz":[0.476888404786001863,0.509545303517902504,0.0785371715022859379],"hpluv":[69.2755127455160391,147.663405788509436,76.6514577805917412],"hsluv":[69.2755127455160391,98.710789014839,76.6514577805917412]},"#ddbb22":{"lch":[76.6969020797125722,83.8847347199512257,68.9672438614109353],"luv":[76.6969020797125722,30.1063672837106679,78.2959473281657523],"rgb":[0.866666666666666696,0.733333333333333282,0.133333333333333331],"xyz":[0.478763762924478919,0.510295446773293304,0.0884140576982651305],"hpluv":[68.9672438614109353,144.735860207932831,76.6969020797125722],"hsluv":[68.9672438614109353,96.3396664069398554,76.6969020797125722]},"#ddbb33":{"lch":[76.7716285455552452,80.8014056767331823,68.4347482297151828],"luv":[76.7716285455552452,29.6994133556607949,75.1452726767666093],"rgb":[0.866666666666666696,0.733333333333333282,0.2],"xyz":[0.481851513656936625,0.511530547066276431,0.104676211555876281],"hpluv":[68.4347482297151828,139.9591753538609,76.7716285455552452],"hsluv":[68.4347482297151828,92.4878111801133542,76.7716285455552452]},"#ddbb44":{"lch":[76.8793043130786771,76.4437058057830683,67.6060651816737277],"luv":[76.8793043130786771,29.122950030038453,70.6788082728408398],"rgb":[0.866666666666666696,0.733333333333333282,0.266666666666666663],"xyz":[0.486309508901155541,0.513313745163964,0.128154986508762919],"hpluv":[67.6060651816737277,133.157612926581692,76.8793043130786771],"hsluv":[67.6060651816737277,87.0382611213693167,76.8793043130786771]},"#ddbb55":{"lch":[77.0229278214451654,70.786451757311653,66.3713649049339551],"luv":[77.0229278214451654,28.3717024864450664,64.851894732620238],"rgb":[0.866666666666666696,0.733333333333333282,0.333333333333333315],"xyz":[0.492271922940517526,0.515698710779708747,0.159557033782736835],"hpluv":[66.3713649049339551,124.235507886155276,77.0229278214451654],"hsluv":[66.3713649049339551,79.9485715087726,77.0229278214451654]},"#ddbb66":{"lch":[77.2049977781888259,63.8693414267369732,64.5489675558404912],"luv":[77.2049977781888259,27.4471820183984,57.6710063509733359],"rgb":[0.866666666666666696,0.733333333333333282,0.4],"xyz":[0.499856918714025711,0.518732709089112065,0.199504678189880769],"hpluv":[64.5489675558404912,113.177180957201557,77.2049977781888259],"hsluv":[64.5489675558404912,71.2432689272834665,77.2049977781888259]},"#ddbb77":{"lch":[77.4276024714994264,55.80459657383539,61.8158033937064815],"luv":[77.4276024714994264,26.3569386858829375,49.1880552764299495],"rgb":[0.866666666666666696,0.733333333333333282,0.466666666666666674],"xyz":[0.509170931734227561,0.522458314297192916,0.248558480096278678],"hpluv":[61.8158033937064815,100.062778032150931,77.4276024714994264],"hsluv":[61.8158033937064815,61.00659046349368,77.4276024714994264]},"#ddbb88":{"lch":[77.6924726660212883,46.8021917196541537,57.5480835848938881],"luv":[77.6924726660212883,25.1136643841879952,39.4936578574539112],"rgb":[0.866666666666666696,0.733333333333333282,0.533333333333333326],"xyz":[0.520311348836171472,0.526914481137970458,0.307231343499850873],"hpluv":[57.5480835848938881,85.1204314231653285,77.6924726660212883],"hsluv":[57.5480835848938881,49.3735690170151145,77.6924726660212883]},"#ddbb99":{"lch":[78.001015952892,37.2494741955694195,50.4191367157405352],"luv":[78.001015952892,23.7341209657771088,28.7091419207933036],"rgb":[0.866666666666666696,0.733333333333333282,0.6],"xyz":[0.533368312945244116,0.532137266781599672,0.375998021140968752],"hpluv":[50.4191367157405352,68.8881727109007471,78.001015952892],"hsluv":[50.4191367157405352,37.2278198354843894,78.001015952892]},"#ddbbaa":{"lch":[78.3543411988951135,27.9779961680489,37.3601297670291643],"luv":[78.3543411988951135,22.2379488027189254,16.9776883770144309],"rgb":[0.866666666666666696,0.733333333333333282,0.66666666666666663],"xyz":[0.548426005910496728,0.538160343967700738,0.455301870757967353],"hpluv":[37.3601297670291643,52.7537881236722086,78.3543411988951135],"hsluv":[37.3601297670291643,37.9002282962103152,78.3543411988951135]},"#ddbbbb":{"lch":[78.7532777240269724,21.1216737069600953,12.1770506300632171],"luv":[78.7532777240269724,20.6464457718990104,4.45526398447083238],"rgb":[0.866666666666666696,0.733333333333333282,0.733333333333333282],"xyz":[0.565563598017833291,0.545015380810635497,0.545559855856609155],"hpluv":[12.1770506300632171,40.7192307977840144,78.7532777240269724],"hsluv":[12.1770506300632171,38.5653299871361952,78.7532777240269724]},"#ddbbcc":{"lch":[79.1983918483363425,20.8793784390591419,335.381067074864461],"luv":[79.1983918483363425,18.9814116783666442,-8.69795692664743747],"rgb":[0.866666666666666696,0.733333333333333282,0.8],"xyz":[0.584855973461555,0.552732330988124354,0.647166366526879311],"hpluv":[335.381067074864461,41.2776027841095186,79.1983918483363425],"hsluv":[335.381067074864461,39.1976988204569,79.1983918483363425]},"#ddbbdd":{"lch":[79.6900023594157858,28.2216267397768341,307.715012949250536],"luv":[79.6900023594157858,17.264138203128045,-22.325092338948604],"rgb":[0.866666666666666696,0.733333333333333282,0.866666666666666696],"xyz":[0.606374299012188644,0.56133966120837786,0.760496214426885309],"hpluv":[307.715012949250536,57.3946451248898555,79.6900023594157858],"hsluv":[307.715012949250536,39.7709084435557401,79.6900023594157858]},"#ddbbee":{"lch":[80.2281958041266,39.4567857635703447,293.154060026294076],"luv":[80.2281958041266,15.5145982189510505,-36.2785774927409221],"rgb":[0.866666666666666696,0.733333333333333282,0.933333333333333348],"xyz":[0.630186479278363354,0.570864533314847877,0.885907030495408532],"hpluv":[293.154060026294076,82.8233888781043674,80.2281958041266],"hsluv":[293.154060026294076,68.7191774169969278,80.2281958041266]},"#ddbbff":{"lch":[80.8128420975971409,52.2658591287574765,285.253756774661895],"luv":[80.8128420975971409,13.7508586713070624,-50.4245368473411],"rgb":[0.866666666666666696,0.733333333333333282,1],"xyz":[0.656357527688194775,0.581332952678780601,1.02374121878719038],"hpluv":[285.253756774661895,113.64059963508393,80.8128420975971409],"hsluv":[285.253756774661895,99.9999999999962768,80.8128420975971409]},"#664400":{"lch":[31.7142168878436834,41.7146560735594463,49.9018869072924431],"luv":[31.7142168878436834,26.8683448374877969,31.9093180282686859],"rgb":[0.4,0.266666666666666663,0],"xyz":[0.0754639898903774337,0.0695936209423669294,0.00945855895955924342],"hpluv":[49.9018869072924431,166.906788900061372,31.7142168878436834],"hsluv":[49.9018869072924431,100.000000000002103,31.7142168878436834]},"#664411":{"lch":[31.8065195391856221,38.988494662362406,47.7128576067384387],"luv":[31.8065195391856221,26.2332728657793552,28.8429906699465946],"rgb":[0.4,0.266666666666666663,0.0666666666666666657],"xyz":[0.0764756553900145519,0.0699982871422217823,0.0147866639243148749],"hpluv":[47.7128576067384387,155.546285842055198,31.8065195391856221],"hsluv":[47.7128576067384387,90.7993319288460157,31.8065195391856221]},"#664422":{"lch":[31.9766874661881033,34.3475437583520318,43.0092135947734064],"luv":[31.9766874661881033,25.116436032279772,23.4290077311931029],"rgb":[0.4,0.266666666666666663,0.133333333333333331],"xyz":[0.078351013528491581,0.0707484303976126,0.0246635501202940727],"hpluv":[43.0092135947734064,136.301783870263904,31.9766874661881033],"hsluv":[43.0092135947734064,74.6688439558526227,31.9766874661881033]},"#664433":{"lch":[32.2542649002247757,27.9288783689085562,32.9719795273007179],"luv":[32.2542649002247757,23.4305644913898661,15.1997004759998031],"rgb":[0.4,0.266666666666666663,0.2],"xyz":[0.0814387642609493145,0.0719835306905957095,0.0409257039779052159],"hpluv":[32.9719795273007179,109.876716511985933,32.2542649002247757],"hsluv":[32.9719795273007179,50.4508902462759465,32.2542649002247757]},"#664444":{"lch":[32.6494757012261942,21.7704999617243,12.1770506300622419],"luv":[32.6494757012261942,21.2806737346177428,4.59212303669972144],"rgb":[0.4,0.266666666666666663,0.266666666666666663],"xyz":[0.0858967595051681881,0.0737667287882832895,0.0644044789307918475],"hpluv":[12.1770506300622419,84.6119136876739,32.6494757012261942],"hsluv":[12.1770506300622419,19.8271939783404392,32.6494757012261942]},"#664455":{"lch":[33.1682230288457163,20.3425996427482829,337.72581918360828],"luv":[33.1682230288457163,18.8246474429619,-7.71064257201243208],"rgb":[0.4,0.266666666666666663,0.333333333333333315],"xyz":[0.0918591735445301871,0.0761516944040281224,0.0958065262047657629],"hpluv":[337.72581918360828,77.8257963773028649,33.1682230288457163],"hsluv":[337.72581918360828,26.9902218950403885,33.1682230288457163]},"#664466":{"lch":[33.8127168447387447,26.5268160416637819,307.715012949245931],"luv":[33.8127168447387447,16.2273642995468066,-20.9843898457416387],"rgb":[0.4,0.266666666666666663,0.4],"xyz":[0.0994441693180383585,0.0791856927134314409,0.135754170611909725],"hpluv":[307.715012949245931,99.5507152142919125,33.8127168447387447],"hsluv":[307.715012949245931,34.4415155187259359,33.8127168447387447]},"#664477":{"lch":[34.5819879544663067,37.1994974310500766,291.489286484323088],"luv":[34.5819879544663067,13.6271894146704895,-34.6136146303646512],"rgb":[0.4,0.266666666666666663,0.466666666666666674],"xyz":[0.108758182338240278,0.0829112979215122503,0.184807972518307634],"hpluv":[291.489286484323088,136.49804898345451,34.5819879544663067],"hsluv":[291.489286484323088,41.7425383187140824,34.5819879544663067]},"#664488":{"lch":[35.4724176022540263,49.4256461635840623,283.003444619748336],"luv":[35.4724176022540263,11.1212465051830698,-48.1582015326441066],"rgb":[0.4,0.266666666666666663,0.533333333333333326],"xyz":[0.119898599440184106,0.0873674647622898481,0.243480835921879801],"hpluv":[283.003444619748336,176.807585609029246,35.4724176022540263],"hsluv":[283.003444619748336,48.5905204317402166,35.4724176022540263]},"#664499":{"lch":[36.4782980897457563,61.9753280698008169,278.131406705371774],"luv":[36.4782980897457563,8.76603164871553453,-61.3522450974139844],"rgb":[0.4,0.266666666666666663,0.6],"xyz":[0.132955563549256806,0.092590250405919,0.312247513562997736],"hpluv":[278.131406705371774,215.5875082467536,36.4782980897457563],"hsluv":[278.131406705371774,54.8155424382278511,36.4782980897457563]},"#6644aa":{"lch":[37.5923984663849922,74.3597011725147468,275.081334091822],"luv":[37.5923984663849922,6.58602388672208239,-74.0674655150911576],"rgb":[0.4,0.266666666666666663,0.66666666666666663],"xyz":[0.148013256514509361,0.0986133275920201,0.391551363179996281],"hpluv":[275.081334091822,251.001852587777108,37.5923984663849922],"hsluv":[275.081334091822,60.3520360208115179,37.5923984663849922]},"#6644bb":{"lch":[38.8064988843830392,86.3901107279874765,273.04172423936518],"luv":[38.8064988843830392,4.58413310153298603,-86.2684006766171905],"rgb":[0.4,0.266666666666666663,0.733333333333333282],"xyz":[0.165150848621846,0.105468364434954859,0.481809348278638083],"hpluv":[273.04172423936518,282.487278503057098,38.8064988843830392],"hsluv":[273.04172423936518,65.2044789549227346,38.8064988843830392]},"#6644cc":{"lch":[40.1118623747323184,98.0126069922284415,271.608181870646],"luv":[40.1118623747323184,2.75066337520804938,-97.9740015535209],"rgb":[0.4,0.266666666666666663,0.8],"xyz":[0.184443224065567735,0.11318531461244366,0.583415858948908239],"hpluv":[271.608181870646,310.061926380003911,40.1118623747323184],"hsluv":[271.608181870646,73.249037078124374,40.1118623747323184]},"#6644dd":{"lch":[41.4996246628331491,109.23540368219534,270.561113733160255],"luv":[41.4996246628331491,1.06975602599714947,-109.230165429047204],"rgb":[0.4,0.266666666666666663,0.866666666666666696],"xyz":[0.205961549616201278,0.121792644832697194,0.696745706848914237],"hpluv":[270.561113733160255,334.009312605211903,41.4996246628331491],"hsluv":[270.561113733160255,82.0982912580276434,41.4996246628331491]},"#6644ee":{"lch":[42.9610953823040305,120.093362966476874,269.772657810053431],"luv":[42.9610953823040305,-0.476513570908160711,-120.092417593346411],"rgb":[0.4,0.266666666666666663,0.933333333333333348],"xyz":[0.229773729882376043,0.131317516939167239,0.82215652291743746],"hpluv":[269.772657810053431,354.717803858999673,42.9610953823040305],"hsluv":[269.772657810053431,90.971694410809846,42.9610953823040305]},"#6644ff":{"lch":[44.4879743720372502,130.630057251556309,269.16406595263021],"luv":[44.4879743720372502,-1.90579898569535566,-130.61615439053088],"rgb":[0.4,0.266666666666666663,1],"xyz":[0.255944778292207409,0.141785936303099935,0.959990711209219305],"hpluv":[269.16406595263021,372.597392941492103,44.4879743720372502],"hsluv":[269.16406595263021,99.9999999999993463,44.4879743720372502]},"#ddcc00":{"lch":[81.0484811072975475,89.5621409057231119,78.2088923998372394],"luv":[81.0484811072975475,18.3014975440108643,87.6723004789036224],"rgb":[0.866666666666666696,0.8,0],"xyz":[0.514100482595981623,0.585588123937282434,0.0859503143074022424],"hpluv":[78.2088923998372394,197.564965691755532,81.0484811072975475],"hsluv":[78.2088923998372394,100.000000000002245,81.0484811072975475]},"#ddcc11":{"lch":[81.070830830397739,88.588371741804238,78.1407504993947413],"luv":[81.070830830397739,18.2056357525625714,86.6974880530521261],"rgb":[0.866666666666666696,0.8,0.0666666666666666657],"xyz":[0.515112148095618783,0.585992790137137343,0.0912784192721578791],"hpluv":[78.1407504993947413,195.686226016320433,81.070830830397739],"hsluv":[78.1407504993947413,98.8754134531589699,81.070830830397739]},"#ddcc22":{"lch":[81.1122340585289265,86.7947856050049751,78.0111959233441894],"luv":[81.1122340585289265,18.0290607078827385,84.9016358983162149],"rgb":[0.866666666666666696,0.8,0.133333333333333331],"xyz":[0.516987506234095728,0.586742933392528143,0.101155305468137072],"hpluv":[78.0111959233441894,192.214732219338657,81.1122340585289265],"hsluv":[78.0111959233441894,96.8049917221618443,81.1122340585289265]},"#ddcc33":{"lch":[81.1803270736657367,83.8738846457710139,77.7882255314295747],"luv":[81.1803270736657367,17.7414783140301893,81.9760237679585089],"rgb":[0.866666666666666696,0.8,0.2],"xyz":[0.520075256966553545,0.58797803368551127,0.117417459325748208],"hpluv":[77.7882255314295747,186.530107062901806,81.1803270736657367],"hsluv":[77.7882255314295747,93.4358723678778631,81.1803270736657367]},"#ddcc44":{"lch":[81.2784695635313312,79.7261575767135469,77.443216014682],"luv":[81.2784695635313312,17.3330313363216426,77.8191893214074213],"rgb":[0.866666666666666696,0.8,0.266666666666666663],"xyz":[0.524533252210772405,0.589761231783198836,0.140896234278634847],"hpluv":[77.443216014682,178.389435414851135,81.2784695635313312],"hsluv":[77.443216014682,88.6570950843060643,81.2784695635313312]},"#ddcc55":{"lch":[81.4094229919429893,74.303525235023784,76.9333685993953509],"luv":[81.4094229919429893,16.7988406729037365,72.37964364652683],"rgb":[0.866666666666666696,0.8,0.333333333333333315],"xyz":[0.530495666250134335,0.592146197398943586,0.172298281552608762],"hpluv":[76.9333685993953509,167.620308244181615,81.4094229919429893],"hsluv":[76.9333685993953509,82.4185745103993668,81.4094229919429893]},"#ddcc66":{"lch":[81.5755062452221154,67.6049359495878406,76.1891492108976252],"luv":[81.5755062452221154,16.1384724175358123,65.6504156329288548],"rgb":[0.866666666666666696,0.8,0.4],"xyz":[0.538080662023642575,0.595180195708346904,0.212245925959752724],"hpluv":[76.1891492108976252,154.10859642349061,81.5755062452221154],"hsluv":[76.1891492108976252,74.724981631947216,81.5755062452221154]},"#ddcc77":{"lch":[81.7786782860545571,59.6741108071854,75.0887439649445554],"luv":[81.7786782860545571,15.3554995822328237,57.6646176889111857],"rgb":[0.866666666666666696,0.8,0.466666666666666674],"xyz":[0.547394675043844425,0.598905800916427755,0.261299727866150633],"hpluv":[75.0887439649445554,137.792143148878608,81.7786782860545571],"hsluv":[75.0887439649445554,65.6305091544174104,81.7786782860545571]},"#ddcc88":{"lch":[82.020587165389415,50.599662209211,73.3985048227604722],"luv":[82.020587165389415,14.4570002873895778,48.4904213054152891],"rgb":[0.866666666666666696,0.8,0.533333333333333326],"xyz":[0.558535092145788337,0.603361967757205298,0.319972591269722773],"hpluv":[73.3985048227604722,118.661765286999071,82.020587165389415],"hsluv":[73.3985048227604722,55.2326761810852389,82.020587165389415]},"#ddcc99":{"lch":[82.3026016456871901,40.5232855707982438,70.6109505258247765],"luv":[82.3026016456871901,13.4529549720920478,38.2250529884698622],"rgb":[0.866666666666666696,0.8,0.6],"xyz":[0.571592056254861,0.608584753400834511,0.388739268910840707],"hpluv":[70.6109505258247765,96.7842051030752231,82.3026016456871901],"hsluv":[70.6109505258247765,43.6647666281718685,82.3026016456871901]},"#ddccaa":{"lch":[82.6258332993788542,29.6818113573176419,65.4008685536862231],"luv":[82.6258332993788542,12.3555588351715961,26.9879619705157374],"rgb":[0.866666666666666696,0.8,0.66666666666666663],"xyz":[0.586649749220113592,0.614607830586935577,0.468043118527839308],"hpluv":[65.4008685536862231,72.4135107626852,82.6258332993788542],"hsluv":[65.4008685536862231,31.0871436920773085,82.6258332993788542]},"#ddccbb":{"lch":[82.9911533066729419,18.6379527757414252,53.1465475992889],"luv":[82.9911533066729419,11.1784915779275345,14.9135713265793797],"rgb":[0.866666666666666696,0.8,0.733333333333333282],"xyz":[0.603787341327450156,0.621462867429870336,0.55830110362648111],"hpluv":[53.1465475992889,46.5946179098545272,82.9911533066729419],"hsluv":[53.1465475992889,24.678645774572626,82.9911533066729419]},"#ddcccc":{"lch":[83.3992063850657,10.164901186858037,12.1770506300648638],"luv":[83.3992063850657,9.93619558955776228,2.14411598208697862],"rgb":[0.866666666666666696,0.8,0.8],"xyz":[0.62307971677117191,0.629179817607359193,0.659907614296751266],"hpluv":[12.1770506300648638,26.1289592314662436,83.3992063850657],"hsluv":[12.1770506300648638,25.0002112827592455,83.3992063850657]},"#ddccdd":{"lch":[83.8504233095379163,14.1290270468723165,307.715012949259346],"luv":[83.8504233095379163,8.64321103323171513,-11.1769543403501022],"rgb":[0.866666666666666696,0.8,0.866666666666666696],"xyz":[0.644598042321805509,0.637787147827612699,0.773237462196757264],"hpluv":[307.715012949259346,37.4791950150616557,83.8504233095379163],"hsluv":[307.715012949259346,25.214872966603707,83.8504233095379163]},"#ddccee":{"lch":[84.3450329093034,25.9620569722210597,286.361909425528779],"luv":[84.3450329093034,7.31360586969829818,-24.9106316943502399],"rgb":[0.866666666666666696,0.8,0.933333333333333348],"xyz":[0.668410222587980218,0.647312019934082716,0.898648278265280487],"hpluv":[286.361909425528779,71.3464154396222199,84.3450329093034],"hsluv":[286.361909425528779,60.879598082714125,84.3450329093034]},"#ddccff":{"lch":[84.8830740665913623,39.380529428060008,278.705583312848262],"luv":[84.8830740665913623,5.96052452183370107,-38.926831947371717],"rgb":[0.866666666666666696,0.8,1],"xyz":[0.694581270997811639,0.65778043929801544,1.03648246655706222],"hpluv":[278.705583312848262,112.590543218900592,84.8830740665913623],"hsluv":[278.705583312848262,99.9999999999947704,84.8830740665913623]},"#665500":{"lch":[36.5970311204425656,41.5054710368830655,69.2006364019199651],"luv":[36.5970311204425656,14.7384507745119784,38.800543743107859],"rgb":[0.4,0.333333333333333315,0],"xyz":[0.0872772466047234,0.0932201343710592,0.0133963111976744542],"hpluv":[69.2006364019199651,143.912599562803223,36.5970311204425656],"hsluv":[69.2006364019199651,100.000000000002359,36.5970311204425656]},"#665511":{"lch":[36.673028710438345,38.8606023214232366,68.2658014049057869],"luv":[36.673028710438345,14.3901304021596417,36.0980686435250391],"rgb":[0.4,0.333333333333333315,0.0666666666666666657],"xyz":[0.0882889121043605174,0.0936248005709140463,0.0187244161624300839],"hpluv":[68.2658014049057869,134.462776824764262,36.673028710438345],"hsluv":[68.2658014049057869,93.0449405246809107,36.673028710438345]},"#665522":{"lch":[36.8133307706753357,34.1687527519613923,66.2355675996872719],"luv":[36.8133307706753357,13.769229594380441,31.2715842419585037],"rgb":[0.4,0.333333333333333315,0.133333333333333331],"xyz":[0.0901642702428375464,0.0943749438263048607,0.0286013023584092835],"hpluv":[66.2355675996872719,117.777773408929676,36.8133307706753357],"hsluv":[66.2355675996872719,80.6853283069105629,36.8133307706753357]},"#665533":{"lch":[37.0427251812615097,27.0303271109949854,61.7081001991288645],"luv":[37.0427251812615097,12.8113945713483854,23.8014023297917383],"rgb":[0.4,0.333333333333333315,0.2],"xyz":[0.09325202097529528,0.0956100441192879735,0.0448634562160204267],"hpluv":[61.7081001991288645,92.5950345984193177,37.0427251812615097],"hsluv":[61.7081001991288645,61.7209513910547045,37.0427251812615097]},"#665544":{"lch":[37.3704580906404473,18.1024774089589755,50.3425610862832542],"luv":[37.3704580906404473,11.5529306171195891,13.9366237840407656],"rgb":[0.4,0.333333333333333315,0.266666666666666663],"xyz":[0.0977100162195141536,0.0973932422169755535,0.0683422311689070583],"hpluv":[50.3425610862832542,61.4679768710498351,37.3704580906404473],"hsluv":[50.3425610862832542,37.0117339514184067,37.3704580906404473]},"#665555":{"lch":[37.8025949068387348,10.2943047784276782,12.1770506300631105],"luv":[37.8025949068387348,10.0626876598879917,2.1714115065313786],"rgb":[0.4,0.333333333333333315,0.333333333333333315],"xyz":[0.103672430258876153,0.0997782078327203864,0.0997442784428809737],"hpluv":[12.1770506300631105,34.5553054430909654,37.8025949068387348],"hsluv":[12.1770506300631105,8.09737912949257321,37.8025949068387348]},"#665566":{"lch":[38.3424918197480693,13.7697499972876347,307.715012949250308],"luv":[38.3424918197480693,8.42342892447929,-10.8927434626015351],"rgb":[0.4,0.333333333333333315,0.4],"xyz":[0.111257426032384324,0.102812206142123705,0.139691922850024935],"hpluv":[307.715012949250308,45.570631638882567,38.3424918197480693],"hsluv":[307.715012949250308,15.7660506346962208,38.3424918197480693]},"#665577":{"lch":[38.9911218270375812,25.5692820710091411,285.225395910208761],"luv":[38.9911218270375812,6.71492531026355,-24.671805035392353],"rgb":[0.4,0.333333333333333315,0.466666666666666674],"xyz":[0.120571439052586243,0.106537811350204514,0.188745724756422845],"hpluv":[285.225395910208761,83.2131821356252885,38.9911218270375812],"hsluv":[285.225395910208761,23.5948697041559434,38.9911218270375812]},"#665588":{"lch":[39.7473800461840554,39.003702064123587,277.369365694294345],"luv":[39.7473800461840554,5.00282395952989312,-38.6815269493963],"rgb":[0.4,0.333333333333333315,0.533333333333333326],"xyz":[0.131711856154530071,0.110993978190982112,0.247418588159995],"hpluv":[277.369365694294345,124.519293959659265,39.7473800461840554],"hsluv":[277.369365694294345,31.2388068533835614,39.7473800461840554]},"#665599":{"lch":[40.6084045881889466,52.6763518020623636,273.629018089310307],"luv":[40.6084045881889466,3.33420095564239061,-52.5707251534733189],"rgb":[0.4,0.333333333333333315,0.6],"xyz":[0.144768820263602771,0.11621676383461127,0.316185265801112947],"hpluv":[273.629018089310307,164.603508765513965,40.6084045881889466],"hsluv":[273.629018089310307,39.2894117268144569,40.6084045881889466]},"#6655aa":{"lch":[41.5699140891343575,66.1399121177165,271.505962745252077],"luv":[41.5699140891343575,1.73822184255944534,-66.1170670838121168],"rgb":[0.4,0.333333333333333315,0.66666666666666663],"xyz":[0.159826513228855327,0.122239841020712364,0.395489115418111492],"hpluv":[271.505962745252077,201.894186201954597,41.5699140891343575],"hsluv":[271.505962745252077,49.6682832978127067,41.5699140891343575]},"#6655bb":{"lch":[42.6265484117568647,79.2031960637105499,270.166039680829499],"luv":[42.6265484117568647,0.229525718995523903,-79.2028634876978],"rgb":[0.4,0.333333333333333315,0.733333333333333282],"xyz":[0.176964105336191974,0.129094877863647123,0.485747100516753294],"hpluv":[270.166039680829499,235.777232293519603,42.6265484117568647],"hsluv":[270.166039680829499,59.8653820834470309,42.6265484117568647]},"#6655cc":{"lch":[43.7721949853351333,91.7929775852419,269.258674658723919],"luv":[43.7721949853351333,-1.18763654850412936,-91.7852943199147688],"rgb":[0.4,0.333333333333333315,0.8],"xyz":[0.1962564807799137,0.136811828041135924,0.58735361118702345],"hpluv":[269.258674658723919,266.103421792879146,43.7721949853351333],"hsluv":[269.258674658723919,69.9112236392489734,43.7721949853351333]},"#6655dd":{"lch":[45.0002850881211458,103.899953671233533,268.61259940679895],"luv":[45.0002850881211458,-2.51566121975990953,-103.869494181457682],"rgb":[0.4,0.333333333333333315,0.866666666666666696],"xyz":[0.217774806330547244,0.145419158261389458,0.700683459087029448],"hpluv":[268.61259940679895,292.98097185143456,45.0002850881211458],"hsluv":[268.61259940679895,79.8793625185682714,45.0002850881211458]},"#6655ee":{"lch":[46.3040490971424106,115.549020689755764,268.134901078425969],"luv":[46.3040490971424106,-3.7607010001107648,-115.487805894602445],"rgb":[0.4,0.333333333333333315,0.933333333333333348],"xyz":[0.241586986596722,0.154944030367859503,0.826094275155552671],"hpluv":[268.134901078425969,316.655201018988919,46.3040490971424106],"hsluv":[268.134901078425969,89.8701820385079344,46.3040490971424106]},"#6655ff":{"lch":[47.6767252326213651,126.781348408818275,267.771145841725911],"luv":[47.6767252326213651,-4.93065761335473951,-126.685432942615918],"rgb":[0.4,0.333333333333333315,1],"xyz":[0.267758035006553374,0.165412449731792199,0.963928463447334516],"hpluv":[267.771145841725911,337.433561350206048,47.6767252326213651],"hsluv":[267.771145841725911,99.9999999999992468,47.6767252326213651]},"#dddd00":{"lch":[85.547159878993142,94.3072427966830844,85.8743202181747449],"luv":[85.547159878993142,6.78488618903739749,94.0628585750738466],"rgb":[0.866666666666666696,0.866666666666666696,0],"xyz":[0.556734473143156827,0.670856105031634,0.100161644489793561],"hpluv":[85.8743202181747449,283.614606809988061,85.547159878993142],"hsluv":[85.8743202181747449,100.000000000002203,85.547159878993142]},"#dddd11":{"lch":[85.5675738163798627,93.4011806547303394,85.8743202181746881],"luv":[85.5675738163798627,6.71970001318247423,93.159144368282],"rgb":[0.866666666666666696,0.866666666666666696,0.0666666666666666657],"xyz":[0.557746138642794,0.671260771231488862,0.105489749454549198],"hpluv":[85.8743202181746881,281.335749103468061,85.5675738163798627],"hsluv":[85.8743202181746881,99.0156164862488,85.5675738163798627]},"#dddd22":{"lch":[85.6053941241358558,91.7307060091609401,85.8743202181746739],"luv":[85.6053941241358558,6.59951857201479086,91.4929985275198447],"rgb":[0.866666666666666696,0.866666666666666696,0.133333333333333331],"xyz":[0.559621496781270933,0.672010914486879662,0.11536663565052839],"hpluv":[85.8743202181746739,277.118842420723468,85.6053941241358558],"hsluv":[85.8743202181746739,97.2017654403352083,85.6053941241358558]},"#dddd33":{"lch":[85.667603455332241,89.0058006932873,85.8743202181745602],"luv":[85.667603455332241,6.4034766573555908,88.775154428206335],"rgb":[0.866666666666666696,0.866666666666666696,0.2],"xyz":[0.56270924751372875,0.673246014779862789,0.131628789508139526],"hpluv":[85.8743202181745602,270.196330508983522,85.667603455332241],"hsluv":[85.8743202181745602,94.2458512979473113,85.667603455332241]},"#dddd44":{"lch":[85.7572852094861418,85.1265937151141117,85.8743202181744607],"luv":[85.7572852094861418,6.12438910193468278,84.9059998802570419],"rgb":[0.866666666666666696,0.866666666666666696,0.266666666666666663],"xyz":[0.567167242757947609,0.675029212877550355,0.155107564461026165],"hpluv":[85.8743202181744607,260.24482525674506,85.7572852094861418],"hsluv":[85.8743202181744607,90.0440000232135844,85.7572852094861418]},"#dddd55":{"lch":[85.8769849033878074,80.0369945631262,85.874320218174276],"luv":[85.8769849033878074,5.75822050268421481,79.8295897229865545],"rgb":[0.866666666666666696,0.866666666666666696,0.333333333333333315],"xyz":[0.573129656797309539,0.677414178493295105,0.18650961173500008],"hpluv":[85.874320218174276,247.008869171162701,85.8769849033878074],"hsluv":[85.874320218174276,84.5423921226573327,85.8769849033878074]},"#dddd66":{"lch":[86.0288537292730098,73.7198014533942398,85.8743202181739775],"luv":[86.0288537292730098,5.30373328608645522,73.5287667485177252],"rgb":[0.866666666666666696,0.866666666666666696,0.4],"xyz":[0.58071465257081778,0.680448176802698423,0.226457256142144042],"hpluv":[85.8743202181739775,230.281095596483937,86.0288537292730098],"hsluv":[85.8743202181739775,77.7321300368988,86.0288537292730098]},"#dddd77":{"lch":[86.2147251389940834,66.1931358813644124,85.8743202181736365],"luv":[86.2147251389940834,4.76223119383214133,66.0216054929389315],"rgb":[0.866666666666666696,0.866666666666666696,0.466666666666666674],"xyz":[0.59002866559101963,0.684173782010779274,0.275511058048541924],"hpluv":[85.8743202181736365,209.886373280136951,86.2147251389940834],"hsluv":[85.8743202181736365,69.6453389130317362,86.2147251389940834]},"#dddd88":{"lch":[86.4361603707972,57.5066396271378224,85.8743202181730823],"luv":[86.4361603707972,4.13728567831694072,57.3576190965201391],"rgb":[0.866666666666666696,0.866666666666666696,0.533333333333333326],"xyz":[0.601169082692963541,0.688629948851556817,0.334183921452114119],"hpluv":[85.8743202181730823,185.665493576193455,86.4361603707972],"hsluv":[85.8743202181730823,60.3508056243124429,86.4361603707972]},"#dddd99":{"lch":[86.6944777431662,47.7369558995854888,85.8743202181722154],"luv":[86.6944777431662,3.43441079587341314,47.613252157820078],"rgb":[0.866666666666666696,0.866666666666666696,0.6],"xyz":[0.614226046802036185,0.693852734495186,0.402950599093232054],"hpluv":[85.8743202181722154,157.456397081560084,86.6944777431662],"hsluv":[85.8743202181722154,49.9486591868920939,86.6944777431662]},"#ddddaa":{"lch":[86.990772885999732,36.9824894935128,85.874320218170638],"luv":[86.990772885999732,2.66068622896724838,36.886654469181245],"rgb":[0.866666666666666696,0.866666666666666696,0.66666666666666663],"xyz":[0.629283739767288797,0.699875811681287097,0.482254448710230599],"hpluv":[85.874320218170638,125.071764704863014,86.990772885999732],"hsluv":[85.874320218170638,38.5641267001819443,86.990772885999732]},"#ddddbb":{"lch":[87.3259337660435477,25.3576808227713499,85.8743202181676821],"luv":[87.3259337660435477,1.82434533444747116,25.2919698878957568],"rgb":[0.866666666666666696,0.866666666666666696,0.733333333333333282],"xyz":[0.64642133187462536,0.706730848524221855,0.572512433808872401],"hpluv":[85.8743202181676821,88.2719508819342735,87.3259337660435477],"hsluv":[85.8743202181676821,26.340671416181145,87.3259337660435477]},"#ddddcc":{"lch":[87.7006527393466797,12.9871390430395461,85.8743202181585445],"luv":[87.7006527393466797,0.934353054076054512,12.9534846621895881],"rgb":[0.866666666666666696,0.866666666666666696,0.8],"xyz":[0.665713707318347114,0.714447798701710712,0.674118944479142557],"hpluv":[85.8743202181585445,46.7319159493201113,87.7006527393466797],"hsluv":[85.8743202181585445,13.4329442518860063,87.7006527393466797]},"#dddddd":{"lch":[88.1154369871094,4.67545248961294327e-12,0],"luv":[88.1154369871094,4.4193702762792188e-12,1.52611347670073729e-12],"rgb":[0.866666666666666696,0.866666666666666696,0.866666666666666696],"xyz":[0.687232032868980713,0.723055128921964219,0.787448792379148554],"hpluv":[0,1.74708563976297451e-11,88.1154369871094],"hsluv":[0,1.74437740136320375e-11,88.1154369871094]},"#ddddee":{"lch":[88.5706181797242209,13.4751686036456029,265.874320218195521],"luv":[88.5706181797242209,-0.969464090371862097,-13.4402495614536726],"rgb":[0.866666666666666696,0.866666666666666696,0.933333333333333348],"xyz":[0.711044213135155423,0.732580001028434236,0.912859608447671778],"hpluv":[265.874320218195521,52.5550848411252431,88.5706181797242209],"hsluv":[265.874320218195521,47.1269490590101725,88.5706181797242209]},"#ddddff":{"lch":[89.0663618949558753,27.3146757005029208,265.874320218186369],"luv":[89.0663618949558753,-1.9651403266809826,-27.2438934831293338],"rgb":[0.866666666666666696,0.866666666666666696,1],"xyz":[0.737215261544986844,0.743048420392367,1.05069379673945362],"hpluv":[265.874320218186369,111.815120511018762,89.0663618949558753],"hsluv":[265.874320218186369,99.9999999999922125,89.0663618949558753]},"#666600":{"lch":[41.7321583215394583,46.0055575524193685,85.8743202181747449],"luv":[41.7321583215394583,3.30984623025532709,45.8863404908370924],"rgb":[0.4,0.4,0],"xyz":[0.102305304310569861,0.123276249782752534,0.0184056637662898],"hpluv":[85.8743202181747449,139.887458074797365,41.7321583215394583],"hsluv":[85.8743202181747449,100.000000000002203,41.7321583215394583]},"#666611":{"lch":[41.7952597887023742,43.6298127640598423,85.8743202181746],"luv":[41.7952597887023742,3.13892449057558931,43.5167521176544625],"rgb":[0.4,0.4,0.0666666666666666657],"xyz":[0.103316969810206979,0.123680915982607387,0.0237337687310454348],"hpluv":[85.8743202181746,132.463323325332908,41.7952597887023742],"hsluv":[85.8743202181746,94.6927802880713756,41.7952597887023742]},"#666622":{"lch":[41.9118699845736913,39.3503176022612067,85.874320218174276],"luv":[41.9118699845736913,2.83103840719259514,39.248346677737],"rgb":[0.4,0.4,0.133333333333333331],"xyz":[0.105192327948684008,0.124431059237998201,0.0336106549270246274],"hpluv":[85.874320218174276,119.138061739500813,41.9118699845736913],"hsluv":[85.874320218174276,85.1670788640685288,41.9118699845736913]},"#666633":{"lch":[42.1028501842444953,32.6344620115447057,85.8743202181736507],"luv":[42.1028501842444953,2.34786962297492563,32.5498943011565842],"rgb":[0.4,0.4,0.2],"xyz":[0.108280078681141742,0.125666159530981314,0.0498728087846357776],"hpluv":[85.8743202181736507,98.3567766096709306,42.1028501842444953],"hsluv":[85.8743202181736507,70.3113616926845,42.1028501842444953]},"#666644":{"lch":[42.3763861696741557,23.5947988734222314,85.8743202181723575],"luv":[42.3763861696741557,1.69751569722617934,23.5336562041455402],"rgb":[0.4,0.4,0.266666666666666663],"xyz":[0.112738073925360616,0.127449357628668908,0.0733515837375224161],"hpluv":[85.8743202181723575,70.6531759312171346,42.3763861696741557],"hsluv":[85.8743202181723575,50.5071554688203506,42.3763861696741557]},"#666655":{"lch":[42.7382714661199543,12.562340839470254,85.87432021816781],"luv":[42.7382714661199543,0.903791165304248856,12.5297872646162745],"rgb":[0.4,0.4,0.333333333333333315],"xyz":[0.118700487964722615,0.129834323244413741,0.104753631011496318],"hpluv":[85.87432021816781,37.2986356199978459,42.7382714661199543],"hsluv":[85.87432021816781,26.6633164497530721,42.7382714661199543]},"#666666":{"lch":[43.1922895629847048,2.27708065554704512e-12,0],"luv":[43.1922895629847048,2.15069538500574498e-12,7.48067960001998255e-13],"rgb":[0.4,0.4,0.4],"xyz":[0.126285483738230786,0.132868321553817031,0.144701275418640279],"hpluv":[0,6.68977504875838914e-12,43.1922895629847048],"hsluv":[0,1.91542116883063395e-12,43.1922895629847048]},"#666677":{"lch":[43.7404449074606489,13.5883126365404472,265.874320218186085],"luv":[43.7404449074606489,-0.977604179760566572,-13.5531003971814314],"rgb":[0.4,0.4,0.466666666666666674],"xyz":[0.135599496758432692,0.136593926761897855,0.193755077325038189],"hpluv":[265.874320218186085,39.4204575510779804,43.7404449074606489],"hsluv":[265.874320218186085,10.3527957183817456,43.7404449074606489]},"#666688":{"lch":[44.3831523723879684,27.7327571842679852,265.874320218181708],"luv":[44.3831523723879684,-1.9952189844931838,-27.660891566352042],"rgb":[0.4,0.4,0.533333333333333326],"xyz":[0.146739913860376547,0.141050093602675453,0.252427940728610356],"hpluv":[265.874320218181708,79.2892354857961692,44.3831523723879684],"hsluv":[265.874320218181708,21.2254167484079588,44.3831523723879684]},"#666699":{"lch":[45.1194249231942308,42.0446421145154,265.87432021818023],"luv":[45.1194249231942308,-3.02488020162380478,-41.9356892193690598],"rgb":[0.4,0.4,0.6],"xyz":[0.159796877969449247,0.14627287924630461,0.321194618369728291],"hpluv":[265.87432021818023,118.245992523098394,45.1194249231942308],"hsluv":[265.87432021818023,32.3647541960069702,45.1194249231942308]},"#6666aa":{"lch":[45.9470714788517682,56.2348015337582652,265.874320218179548],"luv":[45.9470714788517682,-4.04578393932889835,-56.0890767962662125],"rgb":[0.4,0.4,0.66666666666666663],"xyz":[0.174854570934701803,0.152295956432405705,0.400498467986726892],"hpluv":[265.874320218179548,155.305436018888514,45.9470714788517682],"hsluv":[265.874320218179548,43.5990379455573205,45.9470714788517682]},"#6666bb":{"lch":[46.8629040956598786,70.1103551977131,265.874320218179093],"luv":[46.8629040956598786,-5.04405352741049562,-69.9286738753289541],"rgb":[0.4,0.4,0.733333333333333282],"xyz":[0.191992163042038422,0.159150993275340463,0.490756453085368638],"hpluv":[265.874320218179093,189.841997809706953,46.8629040956598786],"hsluv":[265.874320218179093,54.8353857399755285,46.8629040956598786]},"#6666cc":{"lch":[47.8629477245616854,83.5592716582008,265.874320218178866],"luv":[47.8629477245616854,-6.01162892081844,-83.3427393224351505],"rgb":[0.4,0.4,0.8],"xyz":[0.211284538485760176,0.166867943452829265,0.592362963755638794],"hpluv":[265.874320218178866,221.531011478982748,47.8629477245616854],"hsluv":[265.874320218178866,66.0482344892977693,47.8629477245616854]},"#6666dd":{"lch":[48.9426439028117102,96.5306872715973583,265.874320218178696],"luv":[48.9426439028117102,-6.94485076081307,-96.2805413000828736],"rgb":[0.4,0.4,0.866666666666666696],"xyz":[0.23280286403639372,0.175475273673082799,0.705692811655644792],"hpluv":[265.874320218178696,250.274901054084751,48.9426439028117102],"hsluv":[265.874320218178696,77.2646968282616911,48.9426439028117102]},"#6666ee":{"lch":[50.0970402589656203,109.016062738443594,265.874320218178525],"luv":[50.0970402589656203,-7.84310469187671711,-108.73356263723052],"rgb":[0.4,0.4,0.933333333333333348],"xyz":[0.256615044302568429,0.185000145779552844,0.831103627724168],"hpluv":[265.874320218178525,276.132643737939816,50.0970402589656203],"hsluv":[265.874320218178525,88.5507283896609181,50.0970402589656203]},"#6666ff":{"lch":[51.3209595583197142,121.033610519319112,265.874320218178411],"luv":[51.3209595583197142,-8.70770100014002502,-120.719968599376287],"rgb":[0.4,0.4,1],"xyz":[0.28278609271239985,0.19546856514348554,0.96893781601594986],"hpluv":[265.874320218178411,299.261292593223402,51.3209595583197142],"hsluv":[265.874320218178411,99.9999999999991616,51.3209595583197142]},"#ddee00":{"lch":[90.1008574130140261,100.518542770188731,92.3281002120423295],"luv":[90.1008574130140261,-4.08324753875312307,100.435574027231638],"rgb":[0.866666666666666696,0.933333333333333348,0],"xyz":[0.603913249483671644,0.765213657712664919,0.115887903269964759],"hpluv":[92.3281002120423295,458.324419080212692,90.1008574130140261],"hsluv":[92.3281002120423295,100.000000000002288,90.1008574130140261]},"#ddee11":{"lch":[90.1195571422023676,99.6821059706602739,92.3717344777628284],"luv":[90.1195571422023676,-4.12512016496088219,99.5967149778072667],"rgb":[0.866666666666666696,0.933333333333333348,0.0666666666666666657],"xyz":[0.604924914983308804,0.765618323912519827,0.121216008234720396],"hpluv":[92.3717344777628284,455.439701471196656,90.1195571422023676],"hsluv":[92.3717344777628284,99.1349582088955827,90.1195571422023676]},"#ddee22":{"lch":[90.1542040339558213,98.139145338163118,92.4541942657322409],"luv":[90.1542040339558213,-4.20238430415396635,98.0491295925940562],"rgb":[0.866666666666666696,0.933333333333333348,0.133333333333333331],"xyz":[0.606800273121785749,0.766368467167910628,0.131092894430699575],"hpluv":[92.4541942657322409,450.094002053356689,90.1542040339558213],"hsluv":[92.4541942657322409,97.539848527320828,90.1542040339558213]},"#ddee33":{"lch":[90.2112004280082402,95.6198982889531237,92.5945991605726562],"luv":[90.2112004280082402,-4.32860020636881337,95.5218727257959728],"rgb":[0.866666666666666696,0.933333333333333348,0.2],"xyz":[0.609888023854243566,0.767603567460893754,0.147355048288310725],"hpluv":[92.5945991605726562,441.296742170845221,90.2112004280082402],"hsluv":[92.5945991605726562,94.9371734060285348,90.2112004280082402]},"#ddee44":{"lch":[90.2933822328294582,92.028546743238266,92.808164678773025],"luv":[90.2933822328294582,-4.50867173729536486,91.9180357429253689],"rgb":[0.866666666666666696,0.933333333333333348,0.266666666666666663],"xyz":[0.614346019098462426,0.76938676555858132,0.170833823241197363],"hpluv":[92.808164678773025,428.602609406071736,90.2933822328294582],"hsluv":[92.808164678773025,91.2305485856041827,90.2933822328294582]},"#ddee55":{"lch":[90.4030992965535,87.3081168904988658,93.1158428735316477],"luv":[90.4030992965535,-4.74562541158387852,87.1790474507375137],"rgb":[0.866666666666666696,0.933333333333333348,0.333333333333333315],"xyz":[0.620308433137824355,0.77177173117432607,0.202235870515171279],"hpluv":[93.1158428735316477,411.63119840797242,90.4030992965535],"hsluv":[93.1158428735316477,86.365058197250562,90.4030992965535]},"#ddee66":{"lch":[90.5423480313319828,81.4363754503924,93.5488244177654451],"luv":[90.5423480313319828,-5.04083628618753,81.2802141731499717],"rgb":[0.866666666666666696,0.933333333333333348,0.4],"xyz":[0.627893428911332596,0.774805729483729388,0.242183514922315241],"hpluv":[93.5488244177654451,390.03815237863023,90.5423480313319828],"hsluv":[93.5488244177654451,80.3228278296054583,90.5423480313319828]},"#ddee77":{"lch":[90.7128424721769449,74.4235139877598613,94.1564113073248],"luv":[90.7128424721769449,-5.39417557361030209,74.2277731322134855],"rgb":[0.866666666666666696,0.933333333333333348,0.466666666666666674],"xyz":[0.637207441931534446,0.77853133469181024,0.291237316828713122],"hpluv":[94.1564113073248,363.492124647987794,90.7128424721769449],"hsluv":[94.1564113073248,73.1200108954656116,90.7128424721769449]},"#ddee88":{"lch":[90.9160566530372449,66.3104835404903099,95.0215233218939801],"luv":[90.9160566530372449,-5.80415396856009735,66.0559764448523197],"rgb":[0.866666666666666696,0.933333333333333348,0.533333333333333326],"xyz":[0.648347859033478358,0.782987501532587782,0.349910180232285317],"hpluv":[95.0215233218939801,331.65301907995223,90.9160566530372449],"hsluv":[95.0215233218939801,64.803658473982523,90.9160566530372449]},"#ddee99":{"lch":[91.1532518637430798,57.1683554138076389,96.2947128608995513],"luv":[91.1532518637430798,-6.26808654843775237,56.8236918172404799],"rgb":[0.866666666666666696,0.933333333333333348,0.6],"xyz":[0.661404823142551,0.788210287176217,0.418676857873403252],"hpluv":[96.2947128608995513,294.152965661212647,91.1532518637430798],"hsluv":[96.2947128608995513,55.4479539090275679,91.1532518637430798]},"#ddeeaa":{"lch":[91.4254953447680805,47.1012792006961263,98.2790075719046712],"luv":[91.4254953447680805,-6.78228473243696595,46.6104185365255219],"rgb":[0.866666666666666696,0.933333333333333348,0.66666666666666663],"xyz":[0.676462516107803613,0.794233364362318062,0.497980707490401797],"hpluv":[98.2790075719046712,250.593114601078071,91.4254953447680805],"hsluv":[98.2790075719046712,45.1497304611624699,91.4254953447680805]},"#ddeebb":{"lch":[91.7336739482950634,36.2629153409390739,101.681625346389353],"luv":[91.7336739482950634,-7.34227032126066,35.5118303605101318],"rgb":[0.866666666666666696,0.933333333333333348,0.733333333333333282],"xyz":[0.693600108215140176,0.80108840120525282,0.588238692589043599],"hpluv":[101.681625346389353,200.613962446551909,91.7336739482950634],"hsluv":[101.681625346389353,34.0234190840686495,91.7336739482950634]},"#ddeecc":{"lch":[92.0785048140775189,24.9340669502590622,108.575873850927678],"luv":[92.0785048140775189,-7.94300120518182506,23.6350677285782567],"rgb":[0.866666666666666696,0.933333333333333348,0.8],"xyz":[0.712892483658861931,0.808805351382741677,0.689845203259313755],"hpluv":[108.575873850927678,144.339382081965653,92.0785048140775189],"hsluv":[108.575873850927678,22.1956929245148693,92.0785048140775189]},"#ddeedd":{"lch":[92.4605443140240908,14.0242187757329084,127.71501294922345],"luv":[92.4605443140240908,-8.57909621466854766,11.0940443666446207],"rgb":[0.866666666666666696,0.933333333333333348,0.866666666666666696],"xyz":[0.73441080920949553,0.817412681602995184,0.803175051159319753],"hpluv":[127.71501294922345,85.5555802205660854,92.4605443140240908],"hsluv":[127.71501294922345,19.0167034911391681,92.4605443140240908]},"#ddeeee":{"lch":[92.8801960589335636,9.45784403502816851,192.177050630058346],"luv":[92.8801960589335636,-9.24504689815110403,-1.99497409554724747],"rgb":[0.866666666666666696,0.933333333333333348,0.933333333333333348],"xyz":[0.758222989475670239,0.826937553709465201,0.928585867227843],"hpluv":[192.177050630058346,61.3009405779386327,92.8801960589335636],"hsluv":[192.177050630058346,16.5065503962475049,92.8801960589335636]},"#ddeeff":{"lch":[93.3377184761608305,18.4254994321377019,237.36941304521946],"luv":[93.3377184761608305,-9.93540601395951306,-15.5173044263971267],"rgb":[0.866666666666666696,0.933333333333333348,1],"xyz":[0.78439403788550166,0.837405973073397925,1.06642005551962482],"hpluv":[237.36941304521946,128.083838047846456,93.3377184761608305],"hsluv":[237.36941304521946,99.9999999999860592,93.3377184761608305]},"#667700":{"lch":[46.9985837429297462,53.5023535392226,97.7743932102929705],"luv":[46.9985837429297462,-7.23741162388150272,53.0105810873873509],"rgb":[0.4,0.466666666666666674,0],"xyz":[0.12075904236398749,0.160183725889588319,0.0245569097840955056],"hpluv":[97.7743932102929705,144.453291553004675,46.9985837429297462],"hsluv":[97.7743932102929705,100.000000000002416,46.9985837429297462]},"#667711":{"lch":[47.0515894602548315,51.4525286527524344,98.1592061252685681],"luv":[47.0515894602548315,-7.3023584206057679,50.9317019768564],"rgb":[0.4,0.466666666666666674,0.0666666666666666657],"xyz":[0.121770707863624608,0.160588392089443172,0.0298850147488511353],"hpluv":[98.1592061252685681,138.762383385982389,47.0515894602548315],"hsluv":[98.1592061252685681,95.8888552433840573,47.0515894602548315]},"#667722":{"lch":[47.1496128779850068,47.7434140964333835,98.9413563019921],"luv":[47.1496128779850068,-7.4204465613794337,47.1632331632727],"rgb":[0.4,0.466666666666666674,0.133333333333333331],"xyz":[0.123646066002101637,0.161338535344834,0.0397619009448303348],"hpluv":[98.9413563019921,128.491579290861381,47.1496128779850068],"hsluv":[98.9413563019921,88.4562635009272071,47.1496128779850068]},"#667733":{"lch":[47.3103471969426579,41.884713336750373,100.466311561708949],"luv":[47.3103471969426579,-7.6086666810921777,41.1878307590699961],"rgb":[0.4,0.466666666666666674,0.2],"xyz":[0.126733816734559357,0.162573635637817099,0.0560240548024414781],"hpluv":[100.466311561708949,112.341117260385403,47.3103471969426579],"hsluv":[100.466311561708949,76.7252257071794,47.3103471969426579]},"#667744":{"lch":[47.5409803755201068,33.9506682862991624,103.399633201782777],"luv":[47.5409803755201068,-7.86778476785512915,33.0264415269496823],"rgb":[0.4,0.466666666666666674,0.266666666666666663],"xyz":[0.131191811978778244,0.164356833735504693,0.0795028297553281166],"hpluv":[103.399633201782777,90.6190532449782324,47.5409803755201068],"hsluv":[103.399633201782777,60.8161329795325543,47.5409803755201068]},"#667755":{"lch":[47.8468512336942808,24.3055974565694441,109.700167733355244],"luv":[47.8468512336942808,-8.19336864569332768,22.8829800934354815],"rgb":[0.4,0.466666666666666674,0.333333333333333315],"xyz":[0.137154226018140257,0.166741799351249526,0.110904877029302018],"hpluv":[109.700167733355244,64.4602914823941262,47.8468512336942808],"hsluv":[109.700167733355244,41.23982633361328,47.8468512336942808]},"#667766":{"lch":[48.2317738399223543,14.0211946941261125,127.715012949232488],"luv":[48.2317738399223543,-8.57724628010491408,11.0916521267580634],"rgb":[0.4,0.466666666666666674,0.4],"xyz":[0.144739221791648415,0.169775797660652816,0.15085252143644598],"hpluv":[127.715012949232488,36.8885098590324958,48.2317738399223543],"hsluv":[127.715012949232488,18.7828263722028552,48.2317738399223543]},"#667777":{"lch":[48.6982180758881356,9.21652694043341,192.177050630059739],"luv":[48.6982180758881356,-9.00915932709454736,-1.94407228846053126],"rgb":[0.4,0.466666666666666674,0.466666666666666674],"xyz":[0.154053234811850348,0.17350140286873364,0.199906323342843889],"hpluv":[192.177050630059739,24.0156061835451808,48.6982180758881356],"hsluv":[192.177050630059739,23.9216020554503501,48.6982180758881356]},"#667788":{"lch":[49.2474401880289605,18.4334880243097601,239.056580638027469],"luv":[49.2474401880289605,-9.47834019220879398,-15.8099509152663327],"rgb":[0.4,0.466666666666666674,0.533333333333333326],"xyz":[0.165193651913794148,0.177957569709511237,0.258579186746416056],"hpluv":[239.056580638027469,47.4966726259429564,49.2474401880289605],"hsluv":[239.056580638027469,29.274081353383373,49.2474401880289605]},"#667799":{"lch":[49.8796002039077422,31.7351192214463786,251.680675473596239],"luv":[49.8796002039077422,-9.97474964621831,-30.126768188683684],"rgb":[0.4,0.466666666666666674,0.6],"xyz":[0.178250616022866876,0.183180355353140395,0.327345864387534],"hpluv":[251.680675473596239,80.734004933806176,49.8796002039077422],"hsluv":[251.680675473596239,34.661761655835349,49.8796002039077422]},"#6677aa":{"lch":[50.5938810850088174,45.7960576637453798,256.758518919433186],"luv":[50.5938810850088174,-10.4898463625666416,-44.5784928057335676],"rgb":[0.4,0.466666666666666674,0.66666666666666663],"xyz":[0.193308308988119404,0.18920343253924149,0.406649714004532592],"hpluv":[256.758518919433186,114.860161977636537,50.5938810850088174],"hsluv":[256.758518919433186,39.9381656359214858,50.5938810850088174]},"#6677bb":{"lch":[51.388614147457119,59.9444468574027738,259.409682348511467],"luv":[51.388614147457119,-11.0169047239158306,-58.9233783768730106],"rgb":[0.4,0.466666666666666674,0.733333333333333282],"xyz":[0.210445901095456078,0.196058469382176248,0.496907699103174338],"hpluv":[259.409682348511467,148.020333314730891,51.388614147457119],"hsluv":[259.409682348511467,49.2101017344363356,51.388614147457119]},"#6677cc":{"lch":[52.2614099661724225,73.9004259234932306,261.00752312302825],"luv":[52.2614099661724225,-11.5509895931656974,-72.9921063615257566],"rgb":[0.4,0.466666666666666674,0.8],"xyz":[0.229738276539177805,0.20377541955966505,0.598514209773444494],"hpluv":[261.00752312302825,179.434168102703751,52.2614099661724225],"hsluv":[261.00752312302825,61.6581230008595327,52.2614099661724225]},"#6677dd":{"lch":[53.2092913421323,87.5170631601914266,262.060353074135],"luv":[53.2092913421323,-12.0887245225321198,-86.6781349799548],"rgb":[0.4,0.466666666666666674,0.866666666666666696],"xyz":[0.251256602089811376,0.212382749779918584,0.711844057673450492],"hpluv":[262.060353074135,208.710638687620559,53.2092913421323],"hsluv":[262.060353074135,74.2459971892304083,53.2092913421323]},"#6677ee":{"lch":[54.2288239257805884,100.719531231348427,262.797438231409785],"luv":[54.2288239257805884,-12.6279723106459851,-99.9247631309883531],"rgb":[0.4,0.466666666666666674,0.933333333333333348],"xyz":[0.275068782355986086,0.221907621886388629,0.837254873741973715],"hpluv":[262.797438231409785,235.68005803746027,54.2288239257805884],"hsluv":[262.797438231409785,87.0042080584200193,54.2288239257805884]},"#6677ff":{"lch":[55.3162401631211793,113.47857319487936,263.336661992011841],"luv":[55.3162401631211793,-13.1675101506557386,-112.712036849566218],"rgb":[0.4,0.466666666666666674,1],"xyz":[0.301239830765817507,0.232376041250321325,0.97508906203375556],"hpluv":[263.336661992011841,260.315806593762318,55.3162401631211793],"hsluv":[263.336661992011841,99.999999999999,55.3162401631211793]},"#ddff00":{"lch":[94.69236188875891,107.73563953931891,97.6513944636985],"luv":[94.69236188875891,-14.3445112693176284,106.77641604488548],"rgb":[0.866666666666666696,1,0],"xyz":[0.65576562191334542,0.868918402572014,0.13317202741318887],"hpluv":[97.6513944636985,949.977135711580445,94.69236188875891],"hsluv":[97.6513944636985,100.000000000002302,94.69236188875891]},"#ddff11":{"lch":[94.7095428290633237,106.965998536257018,97.7198690947758308],"luv":[94.7095428290633237,-14.3687245726656343,105.996531061225838],"rgb":[0.866666666666666696,1,0.0666666666666666657],"xyz":[0.65677728741298258,0.869323068771868934,0.138500132377944507],"hpluv":[97.7198690947758308,946.378692368412885,94.7095428290633237],"hsluv":[97.7198690947758308,99.9999999999867697,94.7095428290633237]},"#ddff22":{"lch":[94.7413776147606086,105.545731309599958,97.8489007917202827],"luv":[94.7413776147606086,-14.4134418215914106,104.556941866783148],"rgb":[0.866666666666666696,1,0.133333333333333331],"xyz":[0.658652645551459526,0.870073212027259735,0.148377018573923686],"hpluv":[97.8489007917202827,939.695870823628752,94.7413776147606086],"hsluv":[97.8489007917202827,99.9999999999872,94.7413776147606086]},"#ddff33":{"lch":[94.7937532988665197,103.225383790498825,98.0674915546983],"luv":[94.7937532988665197,-14.4865977424562669,102.203807876928138],"rgb":[0.866666666666666696,1,0.2],"xyz":[0.661740396283917343,0.871308312320242861,0.164639172431534836],"hpluv":[98.0674915546983,928.656435156239354,94.7937532988665197],"hsluv":[98.0674915546983,99.9999999999868834,94.7937532988665197]},"#ddff44":{"lch":[94.8692843830354491,99.9146373114600692,98.397314807396512],"luv":[94.8692843830354491,-14.5912004882884094,98.8434702820129729],"rgb":[0.866666666666666696,1,0.266666666666666663],"xyz":[0.666198391528136202,0.873091510417930428,0.188117947384421474],"hpluv":[98.397314807396512,912.633071017653265,94.8692843830354491],"hsluv":[98.397314807396512,99.9999999999866276,94.8692843830354491]},"#ddff55":{"lch":[94.9701440016210654,95.558111661139634,98.8668834316730738],"luv":[94.9701440016210654,-14.7292629682473848,94.4161083536863828],"rgb":[0.866666666666666696,1,0.333333333333333315],"xyz":[0.672160805567498132,0.875476476033675177,0.21951999465839539],"hpluv":[98.8668834316730738,891.031026100052486,94.9701440016210654],"hsluv":[98.8668834316730738,99.9999999999861586,94.9701440016210654]},"#ddff66":{"lch":[95.0981866754888,90.1320341607989235,99.5166683548804798],"luv":[95.0981866754888,-14.9019372161492765,88.8915960547979438],"rgb":[0.866666666666666696,1,0.4],"xyz":[0.679745801341006373,0.878510474343078496,0.259467639065539379],"hpluv":[99.5166683548804798,863.234823568518,95.0981866754888],"hsluv":[99.5166683548804798,99.9999999999856186,95.0981866754888]},"#ddff77":{"lch":[95.2550143462764396,83.6430269583913599,100.407261812829162],"luv":[95.2550143462764396,-15.1095945804084604,82.2669806810598487],"rgb":[0.866666666666666696,1,0.466666666666666674],"xyz":[0.689059814361208223,0.882236079551159347,0.308521440971937233],"hpluv":[100.407261812829162,828.556184265804632,95.2550143462764396],"hsluv":[100.407261812829162,99.9999999999855476,95.2550143462764396]},"#ddff88":{"lch":[95.4420158908659175,76.1281736437493,101.633961649281417],"luv":[95.4420158908659175,-15.3518949618923237,74.5641880758576434],"rgb":[0.866666666666666696,1,0.533333333333333326],"xyz":[0.700200231463152134,0.886692246391936889,0.367194304375509428],"hpluv":[101.633961649281417,786.17501332264635,95.4420158908659175],"hsluv":[101.633961649281417,99.9999999999848512,95.4420158908659175]},"#ddff99":{"lch":[95.6603925662724208,67.6570848719276086,103.355147801887099],"luv":[95.6603925662724208,-15.6278614338241617,65.8274341013866859],"rgb":[0.866666666666666696,1,0.6],"xyz":[0.713257195572224778,0.891915032035566102,0.435960982016627363],"hpluv":[103.355147801887099,735.074270676232231,95.6603925662724208],"hsluv":[103.355147801887099,99.9999999999844107,95.6603925662724208]},"#ddffaa":{"lch":[95.9111754000973775,58.338925144698,105.852499131344544],"luv":[95.9111754000973775,-15.935965587620279,56.1201852084333268],"rgb":[0.866666666666666696,1,0.66666666666666663],"xyz":[0.72831488853747739,0.897938109221667169,0.515264831633625908],"hpluv":[105.852499131344544,673.992295850936557,95.9111754000973775],"hsluv":[105.852499131344544,99.9999999999831886,95.9111754000973775]},"#ddffbb":{"lch":[96.1952377631310185,48.3433070572267596,109.672211431084662],"luv":[96.1952377631310185,-16.2742233848326485,45.5216980180866813],"rgb":[0.866666666666666696,1,0.733333333333333282],"xyz":[0.745452480644814,0.904793146064601927,0.60552281673226771],"hpluv":[109.672211431084662,601.502194015230771,96.1952377631310185],"hsluv":[109.672211431084662,99.9999999999821654,96.1952377631310185]},"#ddffcc":{"lch":[96.513305005727517,37.9644197829535202,115.996292551248089],"luv":[96.513305005727517,-16.6402982513575566,34.1232712904577653],"rgb":[0.866666666666666696,1,0.8],"xyz":[0.764744856088535707,0.912510096242090785,0.707129327402537866],"hpluv":[115.996292551248089,516.693096965009204,96.513305005727517],"hsluv":[115.996292551248089,99.9999999999804885,96.513305005727517]},"#ddffdd":{"lch":[96.8659623148576,27.841508205801528,127.715012949232161],"luv":[96.8659623148576,-17.0316066426751398,22.0243945284064],"rgb":[0.866666666666666696,1,0.866666666666666696],"xyz":[0.786263181639169306,0.921117426462344291,0.820459175302543864],"hpluv":[127.715012949232161,422.676993554754517,96.8659623148576],"hsluv":[127.715012949232161,99.9999999999786411,96.8659623148576]},"#ddffee":{"lch":[97.2536615310726802,19.7831433293950418,151.864226334417424],"luv":[97.2536615310726802,-17.4454209009420502,9.32898974060759478],"rgb":[0.866666666666666696,1,0.933333333333333348],"xyz":[0.810075361905344,0.930642298568814308,0.945869991371067087],"hpluv":[151.864226334417424,343.73229759561508,97.2536615310726802],"hsluv":[151.864226334417424,99.9999999999752,97.2536615310726802]},"#ddffff":{"lch":[97.6767274082888406,18.2904922799610645,192.177050630059568],"luv":[97.6767274082888406,-17.878964623675607,-3.85807359036494368],"rgb":[0.866666666666666696,1,1],"xyz":[0.836246410315175437,0.941110717932747,1.08370417966284882],"hpluv":[192.177050630059568,376.852754928906336,97.6767274082888406],"hsluv":[192.177050630059568,99.9999999999715072,97.6767274082888406]},"#668800":{"lch":[52.32310792684153,62.4331707825390509,105.73052795354684],"luv":[52.32310792684153,-16.9264656143939405,60.0948881001240167],"rgb":[0.4,0.533333333333333326,0],"xyz":[0.142831412088957943,0.204328465339529863,0.0319143663590854554],"hpluv":[105.73052795354684,151.412310196323318,52.32310792684153],"hsluv":[105.73052795354684,100.000000000002359,52.32310792684153]},"#668811":{"lch":[52.3681821172622222,60.6739112189649603,106.201766876928076],"luv":[52.3681821172622222,-16.9292783492562116,58.26425179456308],"rgb":[0.4,0.533333333333333326,0.0666666666666666657],"xyz":[0.143843077588595075,0.204733131539384716,0.0372424713238410851],"hpluv":[106.201766876928076,147.019120365759306,52.3681821172622222],"hsluv":[106.201766876928076,96.7617570127925859,52.3681821172622222]},"#668822":{"lch":[52.4515808002199,57.4815115963739842,107.134347730867304],"luv":[52.4515808002199,-16.9348150675510247,54.9302850350507796],"rgb":[0.4,0.533333333333333326,0.133333333333333331],"xyz":[0.145718435727072076,0.205483274794775544,0.0471193575198202846],"hpluv":[107.134347730867304,139.062145386582984,52.4515808002199],"hsluv":[107.134347730867304,90.8761910280814647,52.4515808002199]},"#668833":{"lch":[52.5884544541714121,52.4173031151438593,108.860637572968898],"luv":[52.5884544541714121,-16.9448041098426323,49.6028958786070291],"rgb":[0.4,0.533333333333333326,0.2],"xyz":[0.14880618645952981,0.206718375087758643,0.0633815113774314209],"hpluv":[108.860637572968898,126.480505252334424,52.5884544541714121],"hsluv":[108.860637572968898,81.504484256448066,52.5884544541714121]},"#668844":{"lch":[52.7851097594501937,45.5231929703366234,111.874794573011059],"luv":[52.7851097594501937,-16.9610118856818559,42.2455343678863215],"rgb":[0.4,0.533333333333333326,0.266666666666666663],"xyz":[0.153264181703748698,0.208501573185446237,0.0868602863303180595],"hpluv":[111.874794573011059,109.436101408621766,52.7851097594501937],"hsluv":[111.874794573011059,68.6312430201703734,52.7851097594501937]},"#668855":{"lch":[53.0463844713544859,37.0894540992544819,117.255878513522262],"luv":[53.0463844713544859,-16.9856764955971045,32.9714179156375593],"rgb":[0.4,0.533333333333333326,0.333333333333333315],"xyz":[0.15922659574311071,0.21088653880119107,0.118262333604291975],"hpluv":[117.255878513522262,88.7225425584692715,53.0463844713544859],"hsluv":[117.255878513522262,52.5261258187504225,53.0463844713544859]},"#668866":{"lch":[53.3759296841588906,27.8248149657310222,127.715012949236794],"luv":[53.3759296841588906,-17.0213948144824521,22.0111891193247189],"rgb":[0.4,0.533333333333333326,0.4],"xyz":[0.166811591516618868,0.213920537110594361,0.158209978011435937],"hpluv":[127.715012949236794,66.1494380276081415,53.3759296841588906],"hsluv":[127.715012949236794,33.681854155652033,53.3759296841588906]},"#668877":{"lch":[53.7763606180623839,19.6211535767711887,150.461713858693599],"luv":[53.7763606180623839,-17.0709226847205855,9.67332757511772101],"rgb":[0.4,0.533333333333333326,0.466666666666666674],"xyz":[0.176125604536820801,0.217646142318675184,0.207263779917833846],"hpluv":[150.461713858693599,46.2990901048939207,53.7763606180623839],"hsluv":[150.461713858693599,37.1484166060608132,53.7763606180623839]},"#668888":{"lch":[54.2493559855519436,17.5313913512660982,192.17705063006045],"luv":[54.2493559855519436,-17.1369431164247104,-3.69795393909545],"rgb":[0.4,0.533333333333333326,0.533333333333333326],"xyz":[0.187266021638764601,0.222102309159452782,0.265936643321406],"hpluv":[192.17705063006045,41.0072951616226788,54.2493559855519436],"hsluv":[192.17705063006045,40.8467805779917228,54.2493559855519436]},"#668899":{"lch":[54.7957384612029728,24.7393499057112685,225.882505108050964],"luv":[54.7957384612029728,-17.2218541013304964,-17.7607200042594577],"rgb":[0.4,0.533333333333333326,0.6],"xyz":[0.200322985747837329,0.22732509480308194,0.33470332096252392],"hpluv":[225.882505108050964,57.2902642666713859,54.7957384612029728],"hsluv":[225.882505108050964,44.6631352998217963,54.7957384612029728]},"#6688aa":{"lch":[55.4155508256813363,36.5699037808867828,241.717344836465486],"luv":[55.4155508256813363,-17.3276119763631087,-32.2042190673817643],"rgb":[0.4,0.533333333333333326,0.66666666666666663],"xyz":[0.215380678713089857,0.233348171989183034,0.414007170579522521],"hpluv":[241.717344836465486,83.7397171719788389,55.4155508256813363],"hsluv":[241.717344836465486,48.4952118884804193,55.4155508256813363]},"#6688bb":{"lch":[56.1081340603271457,49.918102431374308,249.531909378681803],"luv":[56.1081340603271457,-17.4556451944419777,-46.7666270025424495],"rgb":[0.4,0.533333333333333326,0.733333333333333282],"xyz":[0.232518270820426531,0.240203208832117793,0.504265155678164323],"hpluv":[249.531909378681803,112.8941838879785,56.1081340603271457],"hsluv":[249.531909378681803,52.2580147864780216,56.1081340603271457]},"#6688cc":{"lch":[56.8722093096567107,63.7230017864969795,253.960340799970709],"luv":[56.8722093096567107,-17.6068348542363715,-61.2423082770199372],"rgb":[0.4,0.533333333333333326,0.8],"xyz":[0.251810646264148286,0.247920159009606594,0.605871666348434479],"hpluv":[253.960340799970709,142.178999158492672,56.8722093096567107],"hsluv":[253.960340799970709,56.6402695601832349,56.8722093096567107]},"#6688dd":{"lch":[57.7059632125805564,77.5471512008463719,256.744147904563079],"luv":[57.7059632125805564,-17.7815469636593271,-75.4809727477468755],"rgb":[0.4,0.533333333333333326,0.866666666666666696],"xyz":[0.273328971814781774,0.256527489229860128,0.719201514248440477],"hpluv":[256.744147904563079,170.523595036459966,57.7059632125805564],"hsluv":[256.744147904563079,70.7529337108087475,57.7059632125805564]},"#6688ee":{"lch":[58.6071348177704721,91.1720868217648501,258.626369492504523],"luv":[58.6071348177704721,-17.979697586292076,-89.3816529839368599],"rgb":[0.4,0.533333333333333326,0.933333333333333348],"xyz":[0.297141152080956539,0.266052361336330145,0.8446123303169637],"hpluv":[258.626369492504523,197.40162879311913,58.6071348177704721],"hsluv":[258.626369492504523,85.1920367601911295,58.6071348177704721]},"#6688ff":{"lch":[59.57310174908622,104.481663139573541,259.967822360236937],"luv":[59.57310174908622,-18.2008336002305597,-102.884146439906075],"rgb":[0.4,0.533333333333333326,1],"xyz":[0.323312200490787904,0.276520780700262869,0.982446518608745434],"hpluv":[259.967822360236937,222.550815911907222,59.57310174908622],"hsluv":[259.967822360236937,99.9999999999987352,59.57310174908622]},"#669900":{"lch":[57.6618978033021961,71.9113437902946373,111.072092359847389],"luv":[57.6618978033021961,-25.8551729794803826,67.1025438856612624],"rgb":[0.4,0.6,0],"xyz":[0.168701012541425444,0.25606766624446553,0.0405375665099077104],"hpluv":[111.072092359847389,158.251486754186431,57.6618978033021961],"hsluv":[111.072092359847389,100.000000000002444,57.6618978033021961]},"#669911":{"lch":[57.7006802499588929,70.3894808316696867,111.521292839157113],"luv":[57.7006802499588929,-25.8221679479897865,65.4820177928093727],"rgb":[0.4,0.6,0.0666666666666666657],"xyz":[0.169712678041062576,0.256472332444320383,0.0458656714746633401],"hpluv":[111.521292839157113,154.798288730060023,57.7006802499588929],"hsluv":[111.521292839157113,97.4070268725327821,57.7006802499588929]},"#669922":{"lch":[57.7724648019637499,67.6202459496272326,112.394641072548438],"luv":[57.7724648019637499,-25.7622250908158499,62.5204400229094404],"rgb":[0.4,0.6,0.133333333333333331],"xyz":[0.171588036179539577,0.257222475699711184,0.0557425576706425396],"hpluv":[112.394641072548438,148.523500329687067,57.7724648019637499],"hsluv":[112.394641072548438,92.6757293451634183,57.7724648019637499]},"#669933":{"lch":[57.8903535973237524,63.206621217633213,113.958803391015238],"luv":[57.8903535973237524,-25.6669247559924365,57.7605915769530824],"rgb":[0.4,0.6,0.2],"xyz":[0.174675786911997311,0.258457575992694311,0.0720047115282536898],"hpluv":[113.958803391015238,138.546544821103367,57.8903535973237524],"hsluv":[113.958803391015238,85.092275495173979,57.8903535973237524]},"#669944":{"lch":[58.0598969225296457,57.1535921702901888,116.538768682419729],"luv":[58.0598969225296457,-25.5364113217858204,51.131446241744662],"rgb":[0.4,0.6,0.266666666666666663],"xyz":[0.179133782156216198,0.260240774090381877,0.0954834864811403283],"hpluv":[116.538768682419729,124.912700512594284,58.0598969225296457],"hsluv":[116.538768682419729,74.5746503624431796,58.0598969225296457]},"#669955":{"lch":[58.2854489010818355,49.6561447471622515,120.7300937454592],"luv":[58.2854489010818355,-25.3740154630121886,42.6836274282534163],"rgb":[0.4,0.6,0.333333333333333315],"xyz":[0.185096196195578211,0.262625739706126737,0.126885533755114244],"hpluv":[120.7300937454592,108.106592630407334,58.2854489010818355],"hsluv":[120.7300937454592,61.2495338993745833,58.2854489010818355]},"#669966":{"lch":[58.5704165792398754,41.1710358166226,127.715012949238272],"luv":[58.5704165792398754,-25.1857364161826034,32.5688942303571949],"rgb":[0.4,0.6,0.4],"xyz":[0.192681191969086368,0.265659738015530056,0.166833178162258178],"hpluv":[127.715012949238272,89.1975256314243552,58.5704165792398754],"hsluv":[127.715012949238272,45.4174387408809324,58.5704165792398754]},"#669977":{"lch":[58.9173908027988489,32.643461159974926,139.926834832055846],"luv":[58.9173908027988489,-24.9795271581232114,21.0147276798767138],"rgb":[0.4,0.6,0.466666666666666674],"xyz":[0.201995204989288302,0.269385343223610851,0.215886980068656087],"hpluv":[139.926834832055846,70.3059403526018514,58.9173908027988489],"hsluv":[139.926834832055846,47.7876005322921813,58.9173908027988489]},"#669988":{"lch":[59.328227692638464,26.116847909850911,161.480821243886396],"luv":[59.328227692638464,-24.7644493579715288,8.29528738156475498],"rgb":[0.4,0.6,0.533333333333333326],"xyz":[0.213135622091232102,0.273841510064388449,0.274559843472228282],"hpluv":[161.480821243886396,55.8597144892801083,59.328227692638464],"hsluv":[161.480821243886396,50.3655359274122105,59.328227692638464]},"#669999":{"lch":[59.8041090330486043,25.1148951486962346,192.17705063006062],"luv":[59.8041090330486043,-24.5498215694726056,-5.29756729424584893],"rgb":[0.4,0.6,0.6],"xyz":[0.226192586200304829,0.279064295708017607,0.343326521113346161],"hpluv":[192.17705063006062,53.2892577697712042,59.8041090330486043],"hsluv":[192.17705063006062,53.0806679813151447,59.8041090330486043]},"#6699aa":{"lch":[60.3455948386344119,31.1785657150768039,218.6653689057203],"luv":[60.3455948386344119,-24.3444790905776323,-19.4794583563761137],"rgb":[0.4,0.6,0.66666666666666663],"xyz":[0.241250279165557358,0.285087372894118729,0.422630370730344762],"hpluv":[218.6653689057203,65.5616517705923911,60.3455948386344119],"hsluv":[218.6653689057203,55.8649153078387357,60.3455948386344119]},"#6699bb":{"lch":[60.9526745558420231,41.7013653705125407,234.60099737489486],"luv":[60.9526745558420231,-24.1562241025528444,-33.9923625373734168],"rgb":[0.4,0.6,0.733333333333333282],"xyz":[0.258387871272894032,0.291942409737053488,0.512888355828986509],"hpluv":[234.60099737489486,86.8154127469588,60.9526745558420231],"hsluv":[234.60099737489486,58.6571249967150123,60.9526745558420231]},"#6699cc":{"lch":[61.6248198105828493,54.2138016672169485,243.734276496040906],"luv":[61.6248198105828493,-23.9914938552849968,-48.6162988492970101],"rgb":[0.4,0.6,0.8],"xyz":[0.277680246716615731,0.299659359914542289,0.614494866499256664],"hpluv":[243.734276496040906,111.633239234030881,61.6248198105828493],"hsluv":[243.734276496040906,61.4057918386087067,61.6248198105828493]},"#6699dd":{"lch":[62.361039595623,67.5283063616342361,249.312993820438976],"luv":[62.361039595623,-23.8552311607989473,-63.1743627299522288],"rgb":[0.4,0.6,0.866666666666666696],"xyz":[0.29919857226724933,0.308266690134795796,0.727824714399262662],"hpluv":[249.312993820438976,137.407942777337979,62.361039595623],"hsluv":[249.312993820438976,66.62550454031512,62.361039595623]},"#6699ee":{"lch":[63.1599376048740453,81.0888167917790526,252.968345076420633],"luv":[63.1599376048740453,-23.7509145884581336,-77.5325110189427278],"rgb":[0.4,0.6,0.933333333333333348],"xyz":[0.323010752533424039,0.317791562241265813,0.853235530467785885],"hpluv":[252.968345076420633,162.914071535813093,63.1599376048740453],"hsluv":[252.968345076420633,83.0301883133999183,63.1599376048740453]},"#6699ff":{"lch":[64.0197707514621186,94.6074384193794771,255.504450424431923],"luv":[64.0197707514621186,-23.6806962224400728,-91.5958079318982499],"rgb":[0.4,0.6,1],"xyz":[0.34918180094325546,0.328259981605198536,0.99106971875956773],"hpluv":[255.504450424431923,187.521252715437782,64.0197707514621186],"hsluv":[255.504450424431923,99.9999999999985079,64.0197707514621186]},"#550000":{"lch":[15.1243819173422267,50.8637728648741643,12.1770506300617765],"luv":[15.1243819173422267,49.7193613905117289,10.7288626130266547],"rgb":[0.333333333333333315,0,0],"xyz":[0.0374622858816120868,0.019316491157706641,0.00175604465070052949],"hpluv":[12.1770506300617765,426.746789183125202,15.1243819173422267],"hsluv":[12.1770506300617765,100.000000000002203,15.1243819173422267]},"#550011":{"lch":[15.3402258633588957,47.2707050856887108,7.4875089370669734],"luv":[15.3402258633588957,46.8676416739534929,6.15984766208174239],"rgb":[0.333333333333333315,0,0.0666666666666666657],"xyz":[0.0384739513812492051,0.0197211573575614939,0.00708414961545616138],"hpluv":[7.4875089370669734,391.020613457768548,15.3402258633588957],"hsluv":[7.4875089370669734,99.9999999999966889,15.3402258633588957]},"#550022":{"lch":[15.7326592199860933,42.4312907985821823,358.411234527054887],"luv":[15.7326592199860933,42.4149789665186745,-1.17643448760390168],"rgb":[0.333333333333333315,0,0.133333333333333331],"xyz":[0.0403493095197262272,0.0204713006129523117,0.0169610358114353557],"hpluv":[358.411234527054887,342.234221563623748,15.7326592199860933],"hsluv":[358.411234527054887,99.9999999999971578,15.7326592199860933]},"#550033":{"lch":[16.358416636328208,38.360101220613565,343.406058671947278],"luv":[16.358416636328208,36.7625096026365128,-10.9551473459637485],"rgb":[0.333333333333333315,0,0.2],"xyz":[0.0434370602521839677,0.0217064009059354281,0.0332231896690465],"hpluv":[343.406058671947278,297.562230749163234,16.358416636328208],"hsluv":[343.406058671947278,99.9999999999977547,16.358416636328208]},"#550044":{"lch":[17.2212923868602061,37.8614359764106112,324.728975934647224],"luv":[17.2212923868602061,30.9112016871952413,-21.8628896637516235],"rgb":[0.333333333333333315,0,0.266666666666666663],"xyz":[0.0478950554964028483,0.0234895990036230046,0.0567019646219331375],"hpluv":[324.728975934647224,278.978456842737614,17.2212923868602061],"hsluv":[324.728975934647224,99.9999999999983089,17.2212923868602061]},"#550055":{"lch":[18.3096014215038,41.7063030886972754,307.715012949243544],"luv":[18.3096014215038,25.5131777875110508,-32.9923245090298636],"rgb":[0.333333333333333315,0,0.333333333333333315],"xyz":[0.0538574695357648403,0.025874564619367834,0.0881040118959070528],"hpluv":[307.715012949243544,289.042783730483393,18.3096014215038],"hsluv":[307.715012949243544,99.9999999999988,18.3096014215038]},"#550066":{"lch":[19.6013792550641099,48.6148100748190828,295.355623011865077],"luv":[19.6013792550641099,20.818580180871372,-43.9316113733990079],"rgb":[0.333333333333333315,0,0.4],"xyz":[0.0614424653092730116,0.028908562928771149,0.128051656303051015],"hpluv":[295.355623011865077,314.717786655224245,19.6013792550641099],"hsluv":[295.355623011865077,99.9999999999992468,19.6013792550641099]},"#550077":{"lch":[21.069395574911745,57.1127554515679421,287.139622223683091],"luv":[21.069395574911745,16.83119884103942,-54.5763463493480572],"rgb":[0.333333333333333315,0,0.466666666666666674],"xyz":[0.0707564783294749311,0.0326341681368519654,0.177105458209448924],"hpluv":[287.139622223683091,343.969838941793114,21.069395574911745],"hsluv":[287.139622223683091,99.9999999999995737,21.069395574911745]},"#550088":{"lch":[22.6852054601189934,66.3294491167530822,281.703433904835379],"luv":[22.6852054601189934,13.454662288017035,-64.9505033302079084],"rgb":[0.333333333333333315,0,0.533333333333333326],"xyz":[0.0818968954314187592,0.0370903349776295563,0.235778321613021091],"hpluv":[281.703433904835379,371.024851449370942,22.6852054601189934],"hsluv":[281.703433904835379,99.9999999999998721,22.6852054601189934]},"#550099":{"lch":[24.4218644362266417,75.8503102235033424,278.01254475278904],"luv":[24.4218644362266417,10.5727682252252198,-75.1098271403773339],"rgb":[0.333333333333333315,0,0.6],"xyz":[0.0949538595404914726,0.0423131206212587208,0.304544999254138971],"hpluv":[278.01254475278904,394.110378481836165,24.4218644362266417],"hsluv":[278.01254475278904,100.000000000000071,24.4218644362266417]},"#5500aa":{"lch":[26.2553935553790794,85.4876195151354,275.424483319872081],"luv":[26.2553935553790794,8.0814629277942,-85.1047768771603614],"rgb":[0.333333333333333315,0,0.66666666666666663],"xyz":[0.110011552505744015,0.0483361978073598153,0.383848848871137571],"hpluv":[275.424483319872081,413.165469396605374,26.2553935553790794],"hsluv":[275.424483319872081,100.00000000000027,26.2553935553790794]},"#5500bb":{"lch":[28.1653177219846,95.1546470205467756,273.553022331801344],"luv":[28.1653177219846,5.89694295360029841,-94.9717479748942708],"rgb":[0.333333333333333315,0,0.733333333333333282],"xyz":[0.127149144613080661,0.0551912346502945739,0.474106833969779318],"hpluv":[273.553022331801344,428.701175528050442,28.1653177219846],"hsluv":[273.553022331801344,100.000000000000355,28.1653177219846]},"#5500cc":{"lch":[30.1346298593711452,104.80902699908826,272.162345307959299],"luv":[30.1346298593711452,3.95455850560158062,-104.734395532324456],"rgb":[0.333333333333333315,0,0.8],"xyz":[0.146441520056802388,0.0629081848277833755,0.575713344640049529],"hpluv":[272.162345307959299,441.338845171454864,30.1346298593711452],"hsluv":[272.162345307959299,100.000000000000441,30.1346298593711452]},"#5500dd":{"lch":[32.1494591091083208,114.428501102308275,271.104225820707256],"luv":[32.1494591091083208,2.20517261265448461,-114.407250986418532],"rgb":[0.333333333333333315,0,0.866666666666666696],"xyz":[0.167959845607435931,0.0715155150480369095,0.689043192540055527],"hpluv":[271.104225820707256,451.647764573950099,32.1494591091083208],"hsluv":[271.104225820707256,100.000000000000483,32.1494591091083208]},"#5500ee":{"lch":[34.1986254005705774,124.000502171291956,270.282536199645165],"luv":[34.1986254005705774,0.611467178704377612,-123.998994538754019],"rgb":[0.333333333333333315,0,0.933333333333333348],"xyz":[0.191772025873610696,0.0810403871545069404,0.81445400860857875],"hpluv":[270.282536199645165,460.101999214721616,34.1986254005705774],"hsluv":[270.282536199645165,100.000000000000597,34.1986254005705774]},"#5500ff":{"lch":[36.2731838611955055,133.517545782829444,269.6330586770423],"luv":[36.2731838611955055,-0.855085145745556,-133.514807647929],"rgb":[0.333333333333333315,0,1],"xyz":[0.217943074283442062,0.0915088065184396504,0.952288196900360595],"hpluv":[269.6330586770423,467.080772865482345,36.2731838611955055],"hsluv":[269.6330586770423,100.000000000000668,36.2731838611955055]},"#551100":{"lch":[17.1436512350983392,46.6418802884309827,16.9386517648024579],"luv":[17.1436512350983392,44.618427652544149,13.5889996193616174],"rgb":[0.333333333333333315,0.0666666666666666657,0],"xyz":[0.0394666861425404941,0.0233252916795635146,0.00242417807100998037],"hpluv":[16.9386517648024579,345.232802292268,17.1436512350983392],"hsluv":[16.9386517648024579,100.000000000002245,17.1436512350983392]},"#551111":{"lch":[17.3342210988239742,43.3325537190722372,12.1770506300618173],"luv":[17.3342210988239742,42.3575912084996133,9.14027783111198566],"rgb":[0.333333333333333315,0.0666666666666666657,0.0666666666666666657],"xyz":[0.0404783516421776124,0.0237299578794183674,0.0077522830357656114],"hpluv":[12.1770506300618173,317.211759513802576,17.3342210988239742],"hsluv":[12.1770506300618173,74.3325474389658751,17.3342210988239742]},"#551122":{"lch":[17.681833534927847,38.7809423842287515,2.75476418742331486],"luv":[17.681833534927847,38.7361268795629599,1.86385798259144919],"rgb":[0.333333333333333315,0.0666666666666666657,0.133333333333333331],"xyz":[0.0423537097806546345,0.0244801011348091888,0.0176291692317448075],"hpluv":[2.75476418742331486,278.311009894887945,17.681833534927847],"hsluv":[2.75476418742331486,76.7057995287142234,17.681833534927847]},"#551133":{"lch":[18.2390179286851222,34.9181665436168771,346.660743506282301],"luv":[18.2390179286851222,33.9761101882180157,-8.05619582966011727],"rgb":[0.333333333333333315,0.0666666666666666657,0.2],"xyz":[0.045441460513112375,0.0257152014277923,0.0338913230893559542],"hpluv":[346.660743506282301,242.9345634355779,18.2390179286851222],"hsluv":[346.660743506282301,79.7834922439867285,18.2390179286851222]},"#551144":{"lch":[19.0128230091186055,34.7408929356053093,326.164658676814156],"luv":[19.0128230091186055,28.8572161490225767,-19.3440098762325228],"rgb":[0.333333333333333315,0.0666666666666666657,0.266666666666666663],"xyz":[0.0498994557573312555,0.0274983995254798746,0.0573700980422425927],"hpluv":[326.164658676814156,231.864199750183133,19.0128230091186055],"hsluv":[326.164658676814156,83.0221027238197706,19.0128230091186055]},"#551155":{"lch":[19.9971255718025702,39.1813209297373,307.715012949243771],"luv":[19.9971255718025702,23.9685594933690105,-30.9949038651824331],"rgb":[0.333333333333333315,0.0666666666666666657,0.333333333333333315],"xyz":[0.0558618697966932476,0.0298833651412247076,0.0887721453162165],"hpluv":[307.715012949243771,248.628452083429778,19.9971255718025702],"hsluv":[307.715012949243771,86.0178721207098391,19.9971255718025702]},"#551166":{"lch":[21.1763147828962417,46.7756191769153702,294.771362117319313],"luv":[21.1763147828962417,19.5989049109657927,-42.4716549674572263],"rgb":[0.333333333333333315,0.0666666666666666657,0.4],"xyz":[0.0634468655702014189,0.0329173634506280191,0.128719789723360456],"hpluv":[294.771362117319313,280.29057047770084,21.1763147828962417],"hsluv":[294.771362117319313,88.5810746573468464,21.1763147828962417]},"#551177":{"lch":[22.529041607596703,55.8726050260016436,286.442196236272423],"luv":[22.529041607596703,15.8146223861076685,-53.5877384405836494],"rgb":[0.333333333333333315,0.0666666666666666657,0.466666666666666674],"xyz":[0.0727608785904033384,0.0366429686587088355,0.177773591629758365],"hpluv":[286.442196236272423,314.699121073082495,22.529041607596703],"hsluv":[286.442196236272423,90.6792509168865166,22.529041607596703]},"#551188":{"lch":[24.0315326783493077,65.5523157673088548,281.05474383939486],"luv":[24.0315326783493077,12.5694476912001676,-64.3359548557037613],"rgb":[0.333333333333333315,0.0666666666666666657,0.533333333333333326],"xyz":[0.0839012956923471664,0.0410991354994864333,0.236446455033330533],"hpluv":[281.05474383939486,346.135302225987516,24.0315326783493077],"hsluv":[281.05474383939486,92.3586421581981654,24.0315326783493077]},"#551199":{"lch":[25.6600874124784752,75.409923320082811,277.450872837297311],"luv":[25.6600874124784752,9.77886091464338847,-74.7731931533810439],"rgb":[0.333333333333333315,0.0666666666666666657,0.6],"xyz":[0.0969582598014198799,0.0463219211431155908,0.30521313267444844],"hpluv":[277.450872837297311,372.914863977489176,25.6600874124784752],"hsluv":[277.450872837297311,93.6909530677945099,25.6600874124784752]},"#5511aa":{"lch":[27.3926712394503795,85.2829889480110097,274.948569823839534],"luv":[27.3926712394503795,7.3566383451248436,-84.9650991652784882],"rgb":[0.333333333333333315,0.0666666666666666657,0.66666666666666663],"xyz":[0.112015952766672422,0.0523449983292166923,0.38451698229144704],"hpluv":[274.948569823839534,395.063906765864772,27.3926712394503795],"hsluv":[274.948569823839534,94.7471527755802185,27.3926712394503795]},"#5511bb":{"lch":[29.2097366740877575,95.1102004757886732,273.151254165932869],"luv":[29.2097366740877575,5.22840137893499524,-94.9663838079847125],"rgb":[0.333333333333333315,0.0666666666666666657,0.733333333333333282],"xyz":[0.129153544874009069,0.0592000351721514509,0.474774967390088787],"hpluv":[273.151254165932869,413.179515249173164,29.2097366740877575],"hsluv":[273.151254165932869,95.5878244802283,29.2097366740877575]},"#5511cc":{"lch":[31.0944914716528729,104.870266468627406,271.822015936655589],"luv":[31.0944914716528729,3.33433100744475697,-104.81724584215],"rgb":[0.333333333333333315,0.0666666666666666657,0.8],"xyz":[0.148445920317730795,0.0669169853496402456,0.576381478060359],"hpluv":[271.822015936655589,427.964986778194486,31.0944914716528729],"hsluv":[271.822015936655589,96.2613872132177733,31.0944914716528729]},"#5511dd":{"lch":[33.0328257175950526,114.557035031638449,270.814150293263936],"luv":[33.0328257175950526,1.62775523553093748,-114.545469959022128],"rgb":[0.333333333333333315,0.0666666666666666657,0.866666666666666696],"xyz":[0.169964245868364339,0.0755243155698937796,0.689711325960365],"hpluv":[270.814150293263936,440.063516862193467,33.0328257175950526],"hsluv":[270.814150293263936,96.8053522828386832,33.0328257175950526]},"#5511ee":{"lch":[35.0130604571318926,124.169729525043778,270.033521846843314],"luv":[35.0130604571318926,0.0726475571782520396,-124.169708273213573],"rgb":[0.333333333333333315,0.0666666666666666657,0.933333333333333348],"xyz":[0.193776426134539104,0.0850491876763638244,0.815122142028888219],"hpluv":[270.033521846843314,450.012925469310176,35.0130604571318926],"hsluv":[270.033521846843314,97.2483877085506663,35.0130604571318926]},"#5511ff":{"lch":[37.0256255288684244,133.709282746677673,269.417732433602225],"luv":[37.0256255288684244,-1.35879534673770408,-133.702378317802101],"rgb":[0.333333333333333315,0.0666666666666666657,1],"xyz":[0.219947474544370469,0.0955176070402965205,0.952956330320670064],"hpluv":[269.417732433602225,458.245787382607887,37.0256255288684244],"hsluv":[269.417732433602225,99.999999999999531,37.0256255288684244]},"#552200":{"lch":[20.34436993371488,40.5799496107340403,26.5709502396200712],"luv":[20.34436993371488,36.2939416756913289,18.1516420207988389],"rgb":[0.333333333333333315,0.133333333333333331,0],"xyz":[0.0431823098773084293,0.0307565391490994891,0.0036627193159325909],"hpluv":[26.5709502396200712,253.10841584108,20.34436993371488],"hsluv":[26.5709502396200712,100.000000000002359,20.34436993371488]},"#552211":{"lch":[20.5030711832139332,37.4561676233306144,21.8926823519782197],"luv":[20.5030711832139332,34.7549742653004543,13.9662542166947503],"rgb":[0.333333333333333315,0.133333333333333331,0.0666666666666666657],"xyz":[0.0441939753769455546,0.031161205348954342,0.00899082428068822236],"hpluv":[21.8926823519782197,231.816181029165051,20.5030711832139332],"hsluv":[21.8926823519782197,79.998991439989,20.5030711832139332]},"#552222":{"lch":[20.7936643332181177,32.9512801850020054,12.1770506300619488],"luv":[20.7936643332181177,32.2098915499349658,6.95052171940595098],"rgb":[0.333333333333333315,0.133333333333333331,0.133333333333333331],"xyz":[0.0460693335154225697,0.0319113486043451633,0.0188677104766674167],"hpluv":[12.1770506300619488,201.08542320769223,20.7936643332181177],"hsluv":[12.1770506300619488,47.1205474310924046,20.7936643332181177]},"#552233":{"lch":[21.2623572347893699,28.8586800011052311,354.1745907436],"luv":[21.2623572347893699,28.7096478626609084,-2.92908364650122532],"rgb":[0.333333333333333315,0.133333333333333331,0.2],"xyz":[0.0491570842478803102,0.0331464488973282762,0.0351298643342785599],"hpluv":[354.1745907436,172.228245917758017,21.2623572347893699],"hsluv":[354.1745907436,52.8325366869496236,21.2623572347893699]},"#552244":{"lch":[21.9189283311679688,28.7014290952845421,329.54904741067952],"luv":[21.9189283311679688,24.7424491748557642,-14.5459011732283336],"rgb":[0.333333333333333315,0.133333333333333331,0.266666666666666663],"xyz":[0.0536150794920991908,0.0349296469950158492,0.0586086392871652],"hpluv":[329.54904741067952,166.158870546468904,21.9189283311679688],"hsluv":[329.54904741067952,59.1960886419386,21.9189283311679688]},"#552255":{"lch":[22.7630226511172538,33.9275210993755394,307.715012949244226],"luv":[22.7630226511172538,20.7546297224435,-26.8388157904337739],"rgb":[0.333333333333333315,0.133333333333333331,0.333333333333333315],"xyz":[0.0595774935314611828,0.0373146126107606821,0.0900106865611391138],"hpluv":[307.715012949244226,189.13048019699076,22.7630226511172538],"hsluv":[307.715012949244226,65.4333859354686211,22.7630226511172538]},"#552266":{"lch":[23.7863579144178132,42.6539605518829816,293.531429927677038],"luv":[23.7863579144178132,17.0296819355444384,-39.1069083914310625],"rgb":[0.333333333333333315,0.133333333333333331,0.4],"xyz":[0.0671624893049693611,0.0403486109201639936,0.129958330968283076],"hpluv":[293.531429927677038,227.546804006344104,23.7863579144178132],"hsluv":[293.531429927677038,71.0608597854246,23.7863579144178132]},"#552277":{"lch":[24.975052770659552,52.81712200152176,285.022920758889427],"luv":[24.975052770659552,13.6904851349353347,-51.0119495147337858],"rgb":[0.333333333333333315,0.133333333333333331,0.466666666666666674],"xyz":[0.0764765023251712805,0.04407421612824481,0.179012132874680985],"hpluv":[285.022920758889427,268.353735360872861,24.975052770659552],"hsluv":[285.022920758889427,75.8822745115455604,24.975052770659552]},"#552288":{"lch":[26.3119033569515395,63.3751525334233818,279.769698022236867],"luv":[26.3119033569515395,10.754023379801918,-62.4560720809542573],"rgb":[0.333333333333333315,0.133333333333333331,0.533333333333333326],"xyz":[0.0876169194271151086,0.0485303829690224,0.237684996278253152],"hpluv":[279.769698022236867,305.637106002952862,26.3119033569515395],"hsluv":[279.769698022236867,79.8897505498065357,26.3119033569515395]},"#552299":{"lch":[27.7783456471686065,73.9162973481211,276.357347681517297],"luv":[27.7783456471686065,8.18468635974612368,-73.4617582341209783],"rgb":[0.333333333333333315,0.133333333333333331,0.6],"xyz":[0.100673883536187808,0.0537531686126515654,0.306451673919371059],"hpluv":[276.357347681517297,337.654974874305083,27.7783456471686065],"hsluv":[276.357347681517297,83.1678045973750102,27.7783456471686065]},"#5522aa":{"lch":[29.3559430420228864,84.3037876124251824,274.032676149589577],"luv":[29.3559430420228864,5.92869585954675404,-84.0950603258353482],"rgb":[0.333333333333333315,0.133333333333333331,0.66666666666666663],"xyz":[0.115731576501440364,0.0597762457987526669,0.38575552353636966],"hpluv":[274.032676149589577,364.410076381253305,29.3559430420228864],"hsluv":[274.032676149589577,85.8312635149374898,29.3559430420228864]},"#5522bb":{"lch":[31.0273723986379082,94.5090555446981568,272.384235640696716],"luv":[31.0273723986379082,3.93164792491766635,-94.4272403734501324],"rgb":[0.333333333333333315,0.133333333333333331,0.733333333333333282],"xyz":[0.132869168608777,0.0666312826416874254,0.476013508635011406],"hpluv":[272.384235640696716,386.516244750379769,31.0273723986379082],"hsluv":[272.384235640696716,87.9935415010939437,31.0273723986379082]},"#5522cc":{"lch":[32.7769760620793207,104.54175742802569,271.176024316906762],"luv":[32.7769760620793207,2.1456208028374788,-104.519736688869415],"rgb":[0.333333333333333315,0.133333333333333331,0.8],"xyz":[0.152161544052498737,0.0743482328191762271,0.577620019305281507],"hpluv":[271.176024316906762,404.725193356887132,32.7769760620793207],"hsluv":[271.176024316906762,89.7538092894248507,32.7769760620793207]},"#5522dd":{"lch":[34.5909880118612847,114.421842397276407,270.265889656874094],"luv":[34.5909880118612847,0.530989812409553341,-114.420610326139567],"rgb":[0.333333333333333315,0.133333333333333331,0.866666666666666696],"xyz":[0.173679869603132281,0.0829555630394297611,0.690949867205287505],"hpluv":[270.265889656874094,419.744772471420788,34.5909880118612847],"hsluv":[270.265889656874094,91.1938440016712519,34.5909880118612847]},"#5522ee":{"lch":[36.4575428526747132,124.16924767107497,269.564389707514863],"luv":[36.4575428526747132,-0.94402906580191559,-124.165659005715739],"rgb":[0.333333333333333315,0.133333333333333331,0.933333333333333348],"xyz":[0.197492049869307018,0.092480435145899792,0.816360683273810728],"hpluv":[269.564389707514863,432.181309790662738,36.4575428526747132],"hsluv":[269.564389707514863,92.960018101107309,36.4575428526747132]},"#5522ff":{"lch":[38.3665568136218695,133.800754994484379,269.013084090219763],"luv":[38.3665568136218695,-2.30459494965050871,-133.780906258001124],"rgb":[0.333333333333333315,0.133333333333333331,1],"xyz":[0.223663098279138411,0.102948854509832488,0.954194871565592573],"hpluv":[269.013084090219763,442.532391911887146,38.3665568136218695],"hsluv":[269.013084090219763,99.9999999999994458,38.3665568136218695]},"#ccaa00":{"lch":[70.5858735612972623,80.4904122142546186,67.9906634155396],"luv":[70.5858735612972623,30.1643998932495876,74.6244962294604335],"rgb":[0.8,0.66666666666666663,0],"xyz":[0.392753797737474875,0.415879162748823417,0.059586129772359088],"hpluv":[67.9906634155396,144.699051457387782,70.5858735612972623],"hsluv":[67.9906634155396,100.000000000002373,70.5858735612972623]},"#ccaa11":{"lch":[70.6139482370970342,79.3332745728624786,67.7767588069511078],"luv":[70.6139482370970342,30.0051392857341135,73.4401802210267078],"rgb":[0.8,0.66666666666666663,0.0666666666666666657],"xyz":[0.393765463237112,0.416283828948678269,0.0649142347371147177],"hpluv":[67.7767588069511078,142.56214209062793,70.6139482370970342],"hsluv":[67.7767588069511078,98.4234445622979308,70.6139482370970342]},"#ccaa22":{"lch":[70.6659431154106,77.2098224605726529,67.3668792611096166],"luv":[70.6659431154106,29.7125737342128318,71.263733037795],"rgb":[0.8,0.66666666666666663,0.133333333333333331],"xyz":[0.395640821375589036,0.41703397220406907,0.0747911209330939103],"hpluv":[67.3668792611096166,138.644204697820271,70.6659431154106],"hsluv":[67.3668792611096166,95.5289103121581746,70.6659431154106]},"#ccaa33":{"lch":[70.7514162745237911,73.7740913884545,66.6515854645136159],"luv":[70.7514162745237911,29.2382542862800783,67.7328653349528622],"rgb":[0.8,0.66666666666666663,0.2],"xyz":[0.398728572108046742,0.418269072497052197,0.0910532747907050605],"hpluv":[66.6515854645136159,132.314688307412609,70.7514162745237911],"hsluv":[66.6515854645136159,90.8407422295077822,70.7514162745237911]},"#ccaa44":{"lch":[70.8745233475107597,68.9449101039795096,65.5199261400916271],"luv":[70.8745233475107597,28.5691680681362534,62.74713750555],"rgb":[0.8,0.66666666666666663,0.266666666666666663],"xyz":[0.403186567352265657,0.420052270594739763,0.114532049743591699],"hpluv":[65.5199261400916271,123.438713002021714,70.8745233475107597],"hsluv":[65.5199261400916271,84.237349466135143,70.8745233475107597]},"#ccaa55":{"lch":[71.0386313772099,62.7256766939065713,63.7915144306433959],"luv":[71.0386313772099,27.7020883768036121,56.2770363138665672],"rgb":[0.8,0.66666666666666663,0.333333333333333315],"xyz":[0.409148981391627642,0.422437236210484623,0.1459340970175656],"hpluv":[63.7915144306433959,112.044384698186093,71.0386313772099],"hsluv":[63.7915144306433959,75.6976413431368229,71.0386313772099]},"#ccaa66":{"lch":[71.2465086991263661,55.2096541299921952,61.1466680322388356],"luv":[71.2465086991263661,26.6424757380098143,48.3558103613508123],"rgb":[0.8,0.66666666666666663,0.4],"xyz":[0.416733977165135827,0.425471234519887942,0.185881741424709562],"hpluv":[61.1466680322388356,98.331070119416168,71.2465086991263661],"hsluv":[61.1466680322388356,65.2901205751262,71.2465086991263661]},"#ccaa77":{"lch":[71.5004247203994794,46.6032511345785068,56.9687004258729388],"luv":[71.5004247203994794,25.4032971934547263,39.0709035986321638],"rgb":[0.8,0.66666666666666663,0.466666666666666674],"xyz":[0.426047990185337733,0.429196839727968737,0.234935543331107471],"hpluv":[56.9687004258729388,82.707885898124573,71.5004247203994794],"hsluv":[56.9687004258729388,53.160756563752912,71.5004247203994794]},"#ccaa88":{"lch":[71.8022091544958556,37.3024926838847648,49.9478623796008847],"luv":[71.8022091544958556,24.003572993357885,28.5535364531929083],"rgb":[0.8,0.66666666666666663,0.533333333333333326],"xyz":[0.437188407287281533,0.433653006568746335,0.293608406734679639],"hpluv":[49.9478623796008847,65.9233659814751149,71.8022091544958556],"hsluv":[49.9478623796008847,39.5178130280575743,71.8022091544958556]},"#ccaa99":{"lch":[72.1532912119235874,28.1535194843350283,37.0598425499876214],"luv":[72.1532912119235874,22.4666918036374241,16.9666855559712388],"rgb":[0.8,0.66666666666666663,0.6],"xyz":[0.450245371396354233,0.438875792212375493,0.362375084375797574],"hpluv":[37.0598425499876214,49.5126161932360702,72.1532912119235874],"hsluv":[37.0598425499876214,26.6696495224772221,72.1532912119235874]},"#ccaaaa":{"lch":[72.5547286434336,21.297823518763618,12.177050630063027],"luv":[72.5547286434336,20.8186322940273918,4.49241984263274841],"rgb":[0.8,0.66666666666666663,0.66666666666666663],"xyz":[0.465303064361606789,0.444898869398476615,0.441678933992796174],"hpluv":[12.177050630063027,37.2485034287350203,72.5547286434336],"hsluv":[12.177050630063027,27.9047031904792959,72.5547286434336]},"#ccaabb":{"lch":[73.0072318845295,20.9674028584132515,335.544386587188285],"luv":[73.0072318845295,19.0862548050106788,-8.68025691700441193],"rgb":[0.8,0.66666666666666663,0.733333333333333282],"xyz":[0.482440656468943463,0.451753906241411374,0.531936919091437921],"hpluv":[335.544386587188285,36.4433325399841053,73.0072318845295],"hsluv":[335.544386587188285,29.1493731958161852,73.0072318845295]},"#ccaacc":{"lch":[73.5111862218870442,28.2733952257813925,307.715012949249683],"luv":[73.5111862218870442,17.2958067637387,-22.366044486780595],"rgb":[0.8,0.66666666666666663,0.8],"xyz":[0.501733031912665162,0.459470856418900175,0.633543429761708077],"hpluv":[307.715012949249683,48.8049486057506,73.5111862218870442],"hsluv":[307.715012949249683,30.3693282248248444,73.5111862218870442]},"#ccaadd":{"lch":[74.0666736076556,39.5441054640130645,293.032470315564865],"luv":[74.0666736076556,15.4717391639018693,-36.3917787995197202],"rgb":[0.8,0.66666666666666663,0.866666666666666696],"xyz":[0.523251357463298761,0.468078186639153682,0.746873277661714075],"hpluv":[293.032470315564865,67.7482749884916871,74.0666736076556],"hsluv":[293.032470315564865,52.1368854824616719,74.0666736076556]},"#ccaaee":{"lch":[74.6734949675833093,52.4074038625381462,285.081329657377239],"luv":[74.6734949675833093,13.6358764846886817,-50.6023601436286],"rgb":[0.8,0.66666666666666663,0.933333333333333348],"xyz":[0.54706353772947347,0.477603058745623699,0.872284093730237298],"hpluv":[285.081329657377239,89.0564736794959799,74.6734949675833093],"hsluv":[285.081329657377239,75.3315532053798194,74.6734949675833093]},"#ccaaff":{"lch":[75.3311933526529316,65.9300530396585458,280.316334998223624],"luv":[75.3311933526529316,11.8069327652914797,-64.8642292214135239],"rgb":[0.8,0.66666666666666663,1],"xyz":[0.573234586139304891,0.488071478109556423,1.01011828202201914],"hpluv":[280.316334998223624,111.057502918871393,75.3311933526529316],"hsluv":[280.316334998223624,99.9999999999973426,75.3311933526529316]},"#553300":{"lch":[24.6368918170402651,35.1311640480653367,43.6144672720514848],"luv":[24.6368918170402651,25.4348822629288698,24.2335604409056025],"rgb":[0.333333333333333315,0.2,0],"xyz":[0.049300031966319241,0.0429919833271212859,0.00570196001226947087],"hpluv":[43.6144672720514848,180.944734702515461,24.6368918170402651],"hsluv":[43.6144672720514848,100.000000000002245,24.6368918170402651]},"#553311":{"lch":[24.7639934196671305,31.9442274162558917,39.8156129865950632],"luv":[24.7639934196671305,24.536650698978292,20.4544967598277161],"rgb":[0.333333333333333315,0.2,0.0666666666666666657],"xyz":[0.0503116974659563593,0.0433966495269761388,0.0110300649770251023],"hpluv":[39.8156129865950632,163.685811409294416,24.7639934196671305],"hsluv":[39.8156129865950632,85.3309596574143256,24.7639934196671305]},"#553322":{"lch":[24.9975315322943885,26.9096454002331456,31.2519949010175395],"luv":[24.9975315322943885,23.0048892205904032,13.9608054035092266],"rgb":[0.333333333333333315,0.2,0.133333333333333331],"xyz":[0.0521870556044333814,0.0441467927823669601,0.0209069511730043],"hpluv":[31.2519949010175395,136.59983556614165,24.9975315322943885],"hsluv":[31.2519949010175395,60.4417762068684823,24.9975315322943885]},"#553333":{"lch":[25.3763514371309924,21.2787516643900716,12.1770506300621495],"luv":[25.3763514371309924,20.7999895475976082,4.48839695377019332],"rgb":[0.333333333333333315,0.2,0.2],"xyz":[0.0552748063368911219,0.0453818930753500729,0.0371691050306154416],"hpluv":[12.1770506300621495,106.403592780468983,25.3763514371309924],"hsluv":[12.1770506300621495,24.9336598370546909,25.3763514371309924]},"#553344":{"lch":[25.9113402150992655,19.4972565515274532,338.627269772390264],"luv":[25.9113402150992655,18.1564179844864455,-7.10545558065754257],"rgb":[0.333333333333333315,0.2,0.266666666666666663],"xyz":[0.05973280158111,0.047165091173037646,0.0606478799835020801],"hpluv":[338.627269772390264,95.4823185470749536,25.9113402150992655],"hsluv":[338.627269772390264,32.9723178491547841,25.9113402150992655]},"#553355":{"lch":[26.6061908173450519,25.0719265662328183,307.715012949245363],"luv":[26.6061908173450519,15.3373584467403763,-19.8334802195371829],"rgb":[0.333333333333333315,0.2,0.333333333333333315],"xyz":[0.065695215620472,0.0495500567887824789,0.0920499272574759886],"hpluv":[307.715012949245363,119.576085528419512,26.6061908173450519],"hsluv":[307.715012949245363,41.369683748934996,26.6061908173450519]},"#553366":{"lch":[27.4586282592714284,35.2024776289392847,290.893042573756475],"luv":[27.4586282592714284,12.5540679631371699,-32.8878367910220533],"rgb":[0.333333333333333315,0.2,0.4],"xyz":[0.0732802113939801658,0.0525840550981857904,0.13199757166461995],"hpluv":[290.893042573756475,162.679833835368925,27.4586282592714284],"hsluv":[290.893042573756475,49.429407074258,27.4586282592714284]},"#553377":{"lch":[28.461655060413058,46.8206771520520633,282.253113271302652],"luv":[28.461655060413058,9.93678843358592445,-45.7540822725452898],"rgb":[0.333333333333333315,0.2,0.466666666666666674],"xyz":[0.0825942244141820853,0.0563096603062666068,0.18105137357101786],"hpluv":[282.253113271302652,208.74537696470955,28.461655060413058],"hsluv":[282.253113271302652,56.732994513665389,28.461655060413058]},"#553388":{"lch":[29.6048600369324433,58.6666973974172876,277.388246485053742],"luv":[29.6048600369324433,7.54407762538358551,-58.1796207988872567],"rgb":[0.333333333333333315,0.2,0.533333333333333326],"xyz":[0.0937346415161259133,0.0607658271470442046,0.239724236974590027],"hpluv":[277.388246485053742,251.459446283522851,29.6048600369324433],"hsluv":[277.388246485053742,63.1061783000114715,29.6048600369324433]},"#553399":{"lch":[30.8756880539778678,70.2946203588512759,274.394660626066695],"luv":[30.8756880539778678,5.38640350826703,-70.0879469569565714],"rgb":[0.333333333333333315,0.2,0.6],"xyz":[0.106791605625198627,0.0659886127906733622,0.308490914615707934],"hpluv":[274.394660626066695,288.898157334443908,30.8756880539778678],"hsluv":[274.394660626066695,68.537799314251,30.8756880539778678]},"#5533aa":{"lch":[32.2605562861205,81.571224268378316,272.422737250332261],"luv":[32.2605562861205,3.44819039224039026,-81.498310483475251],"rgb":[0.333333333333333315,0.2,0.66666666666666663],"xyz":[0.121849298590451169,0.0720116899767744567,0.387794764232706535],"hpluv":[272.422737250332261,320.851781583216223,32.2605562861205],"hsluv":[272.422737250332261,73.1042224024611897,32.2605562861205]},"#5533bb":{"lch":[33.7457437232739395,92.4864953275551755,271.055064965734516],"luv":[33.7457437232739395,1.70298313903478205,-92.4708152143261231],"rgb":[0.333333333333333315,0.2,0.733333333333333282],"xyz":[0.138986890697787802,0.0788667268197092153,0.478052749331348281],"hpluv":[271.055064965734516,347.775228922495899,33.7457437232739395],"hsluv":[271.055064965734516,76.9172199670655772,33.7457437232739395]},"#5533cc":{"lch":[35.3180325241442,103.075547069605378,270.067872161558512],"luv":[35.3180325241442,0.12210251098248695,-103.075474748725966],"rgb":[0.333333333333333315,0.2,0.8],"xyz":[0.158279266141509556,0.0865836769971980169,0.579659260001618493],"hpluv":[270.067872161558512,370.338167129355497,35.3180325241442],"hsluv":[270.067872161558512,80.0940957669769205,35.3180325241442]},"#5533dd":{"lch":[36.9651203282397915,113.385246995104879,269.332372034398134],"luv":[36.9651203282397915,-1.32116971635525937,-113.377549570986602],"rgb":[0.333333333333333315,0.2,0.866666666666666696],"xyz":[0.179797591692143099,0.0951910072174515509,0.69298910790162449],"hpluv":[269.332372034398134,389.227711455139399,36.9651203282397915],"hsluv":[269.332372034398134,84.8119298710034855,36.9651203282397915]},"#5533ee":{"lch":[38.6758450270606247,123.460606758128,268.77009087446072],"luv":[38.6758450270606247,-2.64999738284680575,-123.432163292052948],"rgb":[0.333333333333333315,0.2,0.933333333333333348],"xyz":[0.203609771958317837,0.104715879323921596,0.818399923970147714],"hpluv":[268.77009087446072,405.067987408818738,38.6758450270606247],"hsluv":[268.77009087446072,92.2936685874649356,38.6758450270606247]},"#5533ff":{"lch":[40.4402700894382363,133.340096114557781,268.33094335317071],"luv":[40.4402700894382363,-3.88371885476632706,-133.283524712158766],"rgb":[0.333333333333333315,0.2,1],"xyz":[0.22978082036814923,0.115184298687854292,0.956234112261929559],"hpluv":[268.33094335317071,418.394573227645935,40.4402700894382363],"hsluv":[268.33094335317071,99.99999999999946,40.4402700894382363]},"#ccbb00":{"lch":[75.0632334950121418,83.0331806403360275,77.5616137481136292],"luv":[75.0632334950121418,17.8844849446013434,81.0842419062853423],"rgb":[0.8,0.733333333333333282,0],"xyz":[0.426708295646073654,0.483788158566022,0.0709042957418917],"hpluv":[77.5616137481136292,140.366584388758554,75.0632334950121418],"hsluv":[77.5616137481136292,100.000000000002373,75.0632334950121418]},"#ccbb11":{"lch":[75.0886164663743898,81.9438461169387438,77.472162284636525],"luv":[75.0886164663743898,17.7747618107910519,79.9928231718707394],"rgb":[0.8,0.733333333333333282,0.0666666666666666657],"xyz":[0.427719961145710759,0.484192824765876828,0.0762324007066473436],"hpluv":[77.472162284636525,138.478250548668058,75.0886164663743898],"hsluv":[77.472162284636525,98.6397508878022222,75.0886164663743898]},"#ccbb22":{"lch":[75.1356323460541802,79.9401497843360289,77.301186242421764],"luv":[75.1356323460541802,17.5729239259544805,77.9847414064744839],"rgb":[0.8,0.733333333333333282,0.133333333333333331],"xyz":[0.429595319284187815,0.484942968021267629,0.0861092869026265362],"hpluv":[77.301186242421764,135.007637737713509,75.1356323460541802],"hsluv":[77.301186242421764,96.1390577710114087,75.1356323460541802]},"#ccbb33":{"lch":[75.2129378077961235,76.6847204783522471,77.0041162235267223],"luv":[75.2129378077961235,17.2449407213965777,74.720535158405653],"rgb":[0.8,0.733333333333333282,0.2],"xyz":[0.432683070016645521,0.486178068314250755,0.102371440760237686],"hpluv":[77.0041162235267223,129.376563997369885,75.2129378077961235],"hsluv":[77.0041162235267223,92.0797058264172392,75.2129378077961235]},"#ccbb44":{"lch":[75.3243183189310628,72.0782997366288,76.5373230188340585],"luv":[75.3243183189310628,16.7806861485978907,70.0977165484408431],"rgb":[0.8,0.733333333333333282,0.266666666666666663],"xyz":[0.437141065260864436,0.487961266411938321,0.125850215713124325],"hpluv":[76.5373230188340585,121.425150369898518,75.3243183189310628],"hsluv":[76.5373230188340585,86.34290383100182,75.3243183189310628]},"#ccbb55":{"lch":[75.4728625341146397,66.0852327898053,75.831238609121371],"luv":[75.4728625341146397,16.1762634357197506,64.0748507149330351],"rgb":[0.8,0.733333333333333282,0.333333333333333315],"xyz":[0.443103479300226422,0.490346232027683182,0.157252262987098212],"hpluv":[75.831238609121371,111.10994393806304,75.4728625341146397],"hsluv":[75.831238609121371,78.8905565478608395,75.4728625341146397]},"#ccbb66":{"lch":[75.6611363515091284,58.7289677793131,74.7643785098968863],"luv":[75.6611363515091284,15.4333320312120961,56.6648384700597134],"rgb":[0.8,0.733333333333333282,0.4],"xyz":[0.450688475073734607,0.493380230337086501,0.197199907394242202],"hpluv":[74.7643785098968863,98.4960546107130739,75.6611363515091284],"hsluv":[74.7643785098968863,69.7569980114599701,75.6611363515091284]},"#ccbb77":{"lch":[75.8912747684230737,50.090867045562554,73.1036630558194389],"luv":[75.8912747684230737,14.5584607724557671,47.9285528814827799],"rgb":[0.8,0.733333333333333282,0.466666666666666674],"xyz":[0.460002488093936512,0.497105835545167296,0.246253709300640111],"hpluv":[73.1036630558194389,83.7540906733876795,75.8912747684230737],"hsluv":[73.1036630558194389,59.0406908273499624,75.8912747684230737]},"#ccbb88":{"lch":[76.1650362860674335,40.3168412407358332,70.3426656865815119],"luv":[76.1650362860674335,13.5623472284534756,37.9672283066009157],"rgb":[0.8,0.733333333333333282,0.533333333333333326],"xyz":[0.471142905195880313,0.501562002385944838,0.304926572704212251],"hpluv":[70.3426656865815119,67.6831847004182379,76.1650362860674335],"hsluv":[70.3426656865815119,46.8939441374685586,76.1650362860674335]},"#ccbb99":{"lch":[76.4838383644648871,29.6573629081618826,65.1594516064859732],"luv":[76.4838383644648871,12.4588924968264081,26.9134756658990248],"rgb":[0.8,0.733333333333333282,0.6],"xyz":[0.484199869304953068,0.506784788029574,0.373693250345330186],"hpluv":[65.1594516064859732,50.6096239917615662,76.4838383644648871],"hsluv":[65.1594516064859732,33.5105935092195324,76.4838383644648871]},"#ccbbaa":{"lch":[76.8487828748923,18.695758935396551,52.9508743401004551],"luv":[76.8487828748923,11.26418644921627,14.9214444946778713],"rgb":[0.8,0.733333333333333282,0.66666666666666663],"xyz":[0.499257562270205568,0.512807865215675118,0.452997099962328786],"hpluv":[52.9508743401004551,32.5142912020767696,76.8487828748923],"hsluv":[52.9508743401004551,19.1124274046376854,76.8487828748923]},"#ccbbbb":{"lch":[77.2606763328388126,10.2255548171674207,12.1770506300639045],"luv":[77.2606763328388126,9.99548454110707,2.15690985147396086],"rgb":[0.8,0.733333333333333282,0.733333333333333282],"xyz":[0.516395154377542243,0.519662902058609877,0.543255085060970533],"hpluv":[12.1770506300639045,18.1733155366010308,77.2606763328388126],"hsluv":[12.1770506300639045,17.1437484893634,77.2606763328388126]},"#ccbbcc":{"lch":[77.7200476270310361,14.1732404034447406,307.715012949257925],"luv":[77.7200476270310361,8.67025786172679247,-11.2119299027867267],"rgb":[0.8,0.733333333333333282,0.8],"xyz":[0.535687529821264,0.527379852236098734,0.644861595731240689],"hpluv":[307.715012949257925,25.815587331502627,77.7200476270310361],"hsluv":[307.715012949257925,18.1614974693692588,77.7200476270310361]},"#ccbbdd":{"lch":[78.2271648233418375,26.0669286991650679,286.275412631614586],"luv":[78.2271648233418375,7.3053819239814537,-25.022313377306272],"rgb":[0.8,0.733333333333333282,0.866666666666666696],"xyz":[0.557205855371897485,0.53598718245635224,0.758191443631246687],"hpluv":[286.275412631614586,48.8074477639820898,78.2271648233418375],"hsluv":[286.275412631614586,43.4510455050629929,78.2271648233418375]},"#ccbbee":{"lch":[78.7820519440635,39.5678846485468299,278.599571826643512],"luv":[78.7820519440635,5.9165048525659989,-39.1230426461218741],"rgb":[0.8,0.733333333333333282,0.933333333333333348],"xyz":[0.581018035638072305,0.545512054562822257,0.88360225969976991],"hpluv":[278.599571826643512,76.4037468789834,78.7820519440635],"hsluv":[278.599571826643512,70.6968150087455314,78.7820519440635]},"#ccbbff":{"lch":[79.3845061922316546,53.5695670840829834,274.837592460092935],"luv":[79.3845061922316546,4.51760925339512553,-53.3787385033564235],"rgb":[0.8,0.733333333333333282,1],"xyz":[0.607189084047903616,0.555980473926755,1.02143644799155164],"hpluv":[274.837592460092935,107.038572744282547,79.3845061922316546],"hsluv":[274.837592460092935,99.9999999999963762,79.3845061922316546]},"#554400":{"lch":[29.5776499109456879,34.0768703371065413,65.9474553070004674],"luv":[29.5776499109456879,13.8888553561515469,31.1180460322924546],"rgb":[0.333333333333333315,0.266666666666666663,0],"xyz":[0.0581326024492852811,0.0606571242930536,0.0086461501732580659],"hpluv":[65.9474553070004674,146.195957524823825,29.5776499109456879],"hsluv":[65.9474553070004674,100.000000000002217,29.5776499109456879]},"#554411":{"lch":[29.6787804923011507,30.8713815411758574,64.2244588846852906],"luv":[29.6787804923011507,13.4243191404277429,27.7998175151708296],"rgb":[0.333333333333333315,0.266666666666666663,0.0666666666666666657],"xyz":[0.0591442679489224,0.0610617904929084548,0.0139742551380136974],"hpluv":[64.2244588846852906,131.992525946838612,29.6787804923011507],"hsluv":[64.2244588846852906,89.4077694450363509,29.6787804923011507]},"#554422":{"lch":[29.8650740872788916,25.3442505658492152,60.1547603291711539],"luv":[29.8650740872788916,12.6127938179319639,21.9829131111162219],"rgb":[0.333333333333333315,0.266666666666666663,0.133333333333333331],"xyz":[0.0610196260873994215,0.0618119337482992762,0.0238511413339928952],"hpluv":[60.1547603291711539,107.684992873038837,29.8650740872788916],"hsluv":[60.1547603291711539,70.9921927199271892,29.8650740872788916]},"#554433":{"lch":[30.1685472793317686,17.4710669916127905,49.2680266756281497],"luv":[30.1685472793317686,11.400244593092479,13.2390560480378525],"rgb":[0.333333333333333315,0.266666666666666663,0.2],"xyz":[0.064107376819857162,0.0630470340412823821,0.0401132951916040384],"hpluv":[49.2680266756281497,73.4859575586117302,30.1685472793317686],"hsluv":[49.2680266756281497,43.7071568358896,30.1685472793317686]},"#554444":{"lch":[30.5997780424982437,10.1013456632853149,12.1770506300629258],"luv":[30.5997780424982437,9.87407003600776356,2.13071000682558],"rgb":[0.333333333333333315,0.266666666666666663,0.266666666666666663],"xyz":[0.0685653720640760356,0.0648302321389699621,0.06359207014449067],"hpluv":[12.1770506300629258,41.8890279889816597,30.5997780424982437],"hsluv":[12.1770506300629258,9.81589763549682282,30.5997780424982437]},"#554455":{"lch":[31.1643459369041338,13.3310860490153988,307.715012949249],"luv":[31.1643459369041338,8.15508312366709198,-10.5457325251654854],"rgb":[0.333333333333333315,0.266666666666666663,0.333333333333333315],"xyz":[0.0745277861034380346,0.0672151977547148,0.0949941174184645853],"hpluv":[307.715012949249,54.2808752323906702,31.1643459369041338],"hsluv":[307.715012949249,18.7795296363480162,31.1643459369041338]},"#554466":{"lch":[31.8635722620044533,24.8340912161126894,284.841165372516684],"luv":[31.8635722620044533,6.36101223964894835,-24.005616214070443],"rgb":[0.333333333333333315,0.266666666666666663,0.4],"xyz":[0.0821127818769462,0.0702491960641181135,0.134941761825608547],"hpluv":[284.841165372516684,98.8992811700442331,31.8635722620044533],"hsluv":[284.841165372516684,27.8963704264996828,31.8635722620044533]},"#554477":{"lch":[32.6951743277909443,37.9095930577936784,276.944338121378166],"luv":[32.6951743277909443,4.58346102749711282,-37.6314912117090259],"rgb":[0.333333333333333315,0.266666666666666663,0.466666666666666674],"xyz":[0.0914267948971481254,0.0739748012721989229,0.183995563732006456],"hpluv":[276.944338121378166,147.131204947893167,32.6951743277909443],"hsluv":[276.944338121378166,36.6308714978363952,32.6951743277909443]},"#554488":{"lch":[33.6539551717380903,51.1018638808679526,273.231940865766],"luv":[33.6539551717380903,2.88102600900669881,-51.0205858574182116],"rgb":[0.333333333333333315,0.266666666666666663,0.533333333333333326],"xyz":[0.102567211999091953,0.0784309681129765207,0.242668427135578624],"hpluv":[273.231940865766,192.681471981123309,33.6539551717380903],"hsluv":[273.231940865766,44.6505812495932801,33.6539551717380903]},"#554499":{"lch":[34.7325237210335871,63.9719124096453271,271.149517924849135],"luv":[34.7325237210335871,1.28337422751110575,-63.9590378909774913],"rgb":[0.333333333333333315,0.266666666666666663,0.6],"xyz":[0.115624176108164667,0.0836537537566056782,0.311435104776696559],"hpluv":[271.149517924849135,233.718085138698228,34.7325237210335871],"hsluv":[271.149517924849135,51.7999710200133876,34.7325237210335871]},"#5544aa":{"lch":[35.9219992682327671,76.3678985235758461,269.849629436139082],"luv":[35.9219992682327671,-0.200424374653859844,-76.367635520403681],"rgb":[0.333333333333333315,0.266666666666666663,0.66666666666666663],"xyz":[0.130681869073417223,0.0896768309427067867,0.390738954393695104],"hpluv":[269.849629436139082,269.767524553786757,35.9219992682327671],"hsluv":[269.849629436139082,58.0490239963672465,35.9219992682327671]},"#5544bb":{"lch":[37.2126506061998725,88.2627815084196925,268.978337620063314],"luv":[37.2126506061998725,-1.57376312233016602,-88.2487499584998574],"rgb":[0.333333333333333315,0.266666666666666663,0.733333333333333282],"xyz":[0.147819461180753842,0.0965318677856415452,0.480996939492336906],"hpluv":[268.978337620063314,300.972163983169935,37.2126506061998725],"hsluv":[268.978337620063314,66.0075029321504729,37.2126506061998725]},"#5544cc":{"lch":[38.5944341452357733,99.6871153018899605,268.363808876145868],"luv":[38.5944341452357733,-2.84637030136680202,-99.6464707519528758],"rgb":[0.333333333333333315,0.266666666666666663,0.8],"xyz":[0.167111836624475596,0.104248817963130347,0.582603450162607062],"hpluv":[268.363808876145868,327.758284181939189,38.5944341452357733],"hsluv":[268.363808876145868,74.5283681063652352,38.5944341452357733]},"#5544dd":{"lch":[40.0574145710935738,110.694467066426,267.913412719582],"luv":[40.0574145710935738,-4.03035995406870118,-110.621070496360275],"rgb":[0.333333333333333315,0.266666666666666663,0.866666666666666696],"xyz":[0.18863016217510914,0.112856148183383881,0.695933298062613059],"hpluv":[267.913412719582,350.65684831918054,40.0574145710935738],"hsluv":[267.913412719582,82.9425769408534,40.0574145710935738]},"#5544ee":{"lch":[41.5920687629554777,121.343449115737442,267.573227144435918],"luv":[41.5920687629554777,-5.13798666158471651,-121.23462268002875],"rgb":[0.333333333333333315,0.266666666666666663,0.933333333333333348],"xyz":[0.212442342441283877,0.122381020289853898,0.821344114131136283],"hpluv":[267.573227144435918,370.207437425804358,41.5920687629554777],"hsluv":[267.573227144435918,91.3878688389195872,41.5920687629554777]},"#5544ff":{"lch":[43.1894854939413833,131.689092168021887,267.309962581974105],"luv":[43.1894854939413833,-6.18053297470727,-131.543977468321657],"rgb":[0.333333333333333315,0.266666666666666663,1],"xyz":[0.23861339085111527,0.132849439653786594,0.959178302422918128],"hpluv":[267.309962581974105,386.911020330846497,43.1894854939413833],"hsluv":[267.309962581974105,99.9999999999994174,43.1894854939413833]},"#cccc00":{"lch":[79.627228346343,87.7811065558180132,85.8743202181747449],"luv":[79.627228346343,6.31536666608958797,87.5536339167982192],"rgb":[0.8,0.8,0],"xyz":[0.464932038955690574,0.560235645185256814,0.0836455435117636481],"hpluv":[85.8743202181747449,177.871840357077815,79.627228346343],"hsluv":[85.8743202181747449,100.000000000002245,79.627228346343]},"#cccc11":{"lch":[79.6502471087807891,86.7718911178833707,85.8743202181747],"luv":[79.6502471087807891,6.24275917928854351,86.5470337215737],"rgb":[0.8,0.8,0.0666666666666666657],"xyz":[0.465943704455327679,0.560640311385111723,0.0889736484765192848],"hpluv":[85.8743202181747,176.061859354342118,79.6502471087807891],"hsluv":[85.8743202181747,98.8217369524532927,79.6502471087807891]},"#cccc22":{"lch":[79.6928884771461838,84.9132131482774497,85.8743202181746597],"luv":[79.6928884771461838,6.10903754655005482,84.6931722597497298],"rgb":[0.8,0.8,0.133333333333333331],"xyz":[0.467819062593804735,0.561390454640502523,0.0988505346724984774],"hpluv":[85.8743202181746597,172.717957044242922,79.6928884771461838],"hsluv":[85.8743202181746597,96.653203912443459,79.6928884771461838]},"#cccc33":{"lch":[79.7630142061039891,81.8867831673476445,85.8743202181745602],"luv":[79.7630142061039891,5.89130259459140682,81.6745848549912665],"rgb":[0.8,0.8,0.2],"xyz":[0.470906813326262441,0.56262555493348565,0.115112688530109614],"hpluv":[85.8743202181745602,167.243641009868185,79.7630142061039891],"hsluv":[85.8743202181745602,93.1263971058523623,79.7630142061039891]},"#cccc44":{"lch":[79.8640786601047523,77.5899505798540901,85.8743202181744],"luv":[79.8640786601047523,5.58216917901353593,77.3888869169280156],"rgb":[0.8,0.8,0.266666666666666663],"xyz":[0.475364808570481356,0.564408753031173216,0.138591463482996252],"hpluv":[85.8743202181744,159.406599578518,79.8640786601047523],"hsluv":[85.8743202181744,88.1281264379617113,79.8640786601047523]},"#cccc55":{"lch":[79.9989166638852396,71.9729259129294832,85.8743202181741481],"luv":[79.9989166638852396,5.17805522174052,71.7864179952492236],"rgb":[0.8,0.8,0.333333333333333315],"xyz":[0.481327222609843342,0.566793718646918,0.169993510756970168],"hpluv":[85.8743202181741481,149.042041148428552,79.9989166638852396],"hsluv":[85.8743202181741481,81.6104176612222147,79.9989166638852396]},"#cccc66":{"lch":[80.1699032642976448,65.0330295388014,85.8743202181738],"luv":[80.1699032642976448,4.67876793832737103,64.8645054060685453],"rgb":[0.8,0.8,0.4],"xyz":[0.488912218383351527,0.569827716956321284,0.209941155164114129],"hpluv":[85.8743202181738,136.038559250079544,80.1699032642976448],"hsluv":[85.8743202181738,73.5839630734023,80.1699032642976448]},"#cccc77":{"lch":[80.3790384438565724,56.8098315426934803,85.8743202181733096],"luv":[80.3790384438565724,4.0871541782499472,56.6626166941875837],"rgb":[0.8,0.8,0.466666666666666674],"xyz":[0.498226231403553432,0.573553322164402135,0.258994957070512],"hpluv":[85.8743202181733096,120.326663009793734,80.3790384438565724],"hsluv":[85.8743202181733096,64.1122831116318252,80.3790384438565724]},"#cccc88":{"lch":[80.6279973255091704,47.3795499902223085,85.8743202181724854],"luv":[80.6279973255091704,3.40869741112766222,47.2567724166107865],"rgb":[0.8,0.8,0.533333333333333326],"xyz":[0.509366648505497288,0.578009489005179677,0.317667820474084206],"hpluv":[85.8743202181724854,101.866799769447482,80.6279973255091704],"hsluv":[85.8743202181724854,53.3047126681541172,80.6279973255091704]},"#cccc99":{"lch":[80.9181626169042119,36.8483625211582861,85.8743202181711496],"luv":[80.9181626169042119,2.65103653276840934,36.7528750683892724],"rgb":[0.8,0.8,0.6],"xyz":[0.522423612614569932,0.58323227464880889,0.386434498115202141],"hpluv":[85.8743202181711496,80.635831276566,80.9181626169042119],"hsluv":[85.8743202181711496,41.30786304104587,80.9181626169042119]},"#ccccaa":{"lch":[81.2506473976222452,25.3448572993520607,85.8743202181683216],"luv":[81.2506473976222452,1.82342275263520492,25.27917959487],"rgb":[0.8,0.8,0.66666666666666663],"xyz":[0.537481305579822544,0.58925535183491,0.465738347732200686],"hpluv":[85.8743202181683216,56.6117825452175509,81.2506473976222452],"hsluv":[85.8743202181683216,28.2959036617823898,81.2506473976222452]},"#ccccbb":{"lch":[81.6263125989092657,13.0121158497344798,85.8743202181599],"luv":[81.6263125989092657,0.936149997616518514,12.9783967449324749],"rgb":[0.8,0.8,0.733333333333333282],"xyz":[0.554618897687159107,0.596110388677844716,0.555996332830842488],"hpluv":[85.8743202181599,29.7570160502500514,81.6263125989092657],"hsluv":[85.8743202181599,14.4603328966824272,81.6263125989092657]},"#cccccc":{"lch":[82.0457816743453,4.34523248843710382e-12,0],"luv":[82.0457816743453,4.08534684758697557e-12,1.48019813318368677e-12],"rgb":[0.8,0.8,0.8],"xyz":[0.573911273130880861,0.603827338855333573,0.657602843501112644],"hpluv":[0,1.02065966511349575e-11,82.0457816743453],"hsluv":[0,1.01642596056880755e-11,82.0457816743453]},"#ccccdd":{"lch":[82.5094539517328087,13.5418343873660199,265.874320218194214],"luv":[82.5094539517328087,-0.974260325972223118,-13.5067425899839115],"rgb":[0.8,0.8,0.866666666666666696],"xyz":[0.59542959868151446,0.612434669075587079,0.770932691401118642],"hpluv":[265.874320218194214,32.7843842039110882,82.5094539517328087],"hsluv":[265.874320218194214,30.4637656032122131,82.5094539517328087]},"#ccccee":{"lch":[83.0175175610870895,27.4698052042972165,265.874320218185687],"luv":[83.0175175610870895,-1.97630103922669687,-27.3986209901955817],"rgb":[0.8,0.8,0.933333333333333348],"xyz":[0.61924177894768917,0.621959541182057096,0.896343507469641865],"hpluv":[265.874320218185687,68.7964750954906776,83.0175175610870895],"hsluv":[265.874320218185687,63.7216981471091941,83.0175175610870895]},"#ccccff":{"lch":[83.5699624582004219,41.6509292947620153,265.874320218182845],"luv":[83.5699624582004219,-2.99655473483939438,-41.5429966521238825],"rgb":[0.8,0.8,1],"xyz":[0.645412827357520591,0.63242796054598982,1.03417769576142371],"hpluv":[265.874320218182845,108.336501116640306,83.5699624582004219],"hsluv":[265.874320218182845,99.9999999999952536,83.5699624582004219]},"#555500":{"lch":[34.8595382729148753,38.4291768930055397,85.8743202181747307],"luv":[34.8595382729148753,2.76476741155027961,38.3295929776711901],"rgb":[0.333333333333333315,0.333333333333333315,0],"xyz":[0.0699458591636312466,0.084283637721745866,0.0125839024113732767],"hpluv":[85.8743202181747307,139.887458074797564,34.8595382729148753],"hsluv":[85.8743202181747307,100.000000000002331,34.8595382729148753]},"#555511":{"lch":[34.9408046802893,35.5443725161734108,85.8743202181745318],"luv":[34.9408046802893,2.55722164100294558,35.4522641737772517],"rgb":[0.333333333333333315,0.333333333333333315,0.0666666666666666657],"xyz":[0.0709575246632683648,0.0846883039216007188,0.0179120073761289064],"hpluv":[85.8743202181745318,129.085444875460666,34.9408046802893],"hsluv":[85.8743202181745318,92.2780688504912,34.9408046802893]},"#555522":{"lch":[35.0907688239250604,30.4130442263608813,85.8743202181740202],"luv":[35.0907688239250604,2.18805086034508589,30.3342330139914047],"rgb":[0.333333333333333315,0.333333333333333315,0.133333333333333331],"xyz":[0.0728328828017454,0.0854384471769915332,0.027788893572108106],"hpluv":[85.8743202181740202,109.978131404858061,35.0907688239250604],"hsluv":[85.8743202181740202,78.6190076783406653,35.0907688239250604]},"#555533":{"lch":[35.3357817552570097,22.5221214621125654,85.8743202181728549],"luv":[35.3357817552570097,1.62034247131604014,22.4637584885032275],"rgb":[0.333333333333333315,0.333333333333333315,0.2],"xyz":[0.0759206335342031274,0.0866735474699746461,0.0440510474297192492],"hpluv":[85.8743202181728549,80.8786547215116656,35.3357817552570097],"hsluv":[85.8743202181728549,57.8169450175211566,35.3357817552570097]},"#555544":{"lch":[35.6854507669058592,12.1926559388895619,85.8743202181691743],"luv":[35.6854507669058592,0.877194374836262392,12.1610603515028455],"rgb":[0.333333333333333315,0.333333333333333315,0.266666666666666663],"xyz":[0.080378628778422,0.0884567455676622261,0.0675298223826058808],"hpluv":[85.8743202181691743,43.355725530805,35.6854507669058592],"hsluv":[85.8743202181691743,30.9932899828832262,35.6854507669058592]},"#555555":{"lch":[36.1458508397197278,1.89718584003012571e-12,0],"luv":[36.1458508397197278,1.79982851973451413e-12,5.9994283991150471e-13],"rgb":[0.333333333333333315,0.333333333333333315,0.333333333333333315],"xyz":[0.086341042817784,0.090841711183407059,0.0989318696565798],"hpluv":[0,6.66025333978279224e-12,36.1458508397197278],"hsluv":[0,1.90696849203660445e-12,36.1458508397197278]},"#555566":{"lch":[36.7200402720523087,13.391014832031539,265.874320218184835],"luv":[36.7200402720523087,-0.963409690459316,-13.3563138627398903],"rgb":[0.333333333333333315,0.333333333333333315,0.4],"xyz":[0.0939260385912921714,0.0938757094928103775,0.138879514063723758],"hpluv":[265.874320218184835,46.2753453717946712,36.7200402720523087],"hsluv":[265.874320218184835,10.0205788523093844,36.7200402720523087]},"#555577":{"lch":[37.4084382237490445,27.3651172837118537,265.874320218181],"luv":[37.4084382237490445,-1.96876932050326592,-27.294204353927416],"rgb":[0.333333333333333315,0.333333333333333315,0.466666666666666674],"xyz":[0.103240051611494091,0.0976013147008911869,0.187933315970121667],"hpluv":[265.874320218181,92.8254499938530131,37.4084382237490445],"hsluv":[265.874320218181,20.457601163446,37.4084382237490445]},"#555588":{"lch":[38.2091925227490421,41.4380747403329508,265.874320218179832],"luv":[38.2091925227490421,-2.98124102314999906,-41.330693680935326],"rgb":[0.333333333333333315,0.333333333333333315,0.533333333333333326],"xyz":[0.114380468713437919,0.102057481541668785,0.246606179373693835],"hpluv":[265.874320218179832,137.616667264503377,38.2091925227490421],"hsluv":[265.874320218179832,30.9677616121988244,38.2091925227490421]},"#555599":{"lch":[39.1185695394092079,55.2798607696674651,265.874320218179207],"luv":[39.1185695394092079,-3.97708121608675258,-55.1366106295487626],"rgb":[0.333333333333333315,0.333333333333333315,0.6],"xyz":[0.127437432822510632,0.107280267185297942,0.315372857014811769],"hpluv":[265.874320218179207,179.317758559659353,39.1185695394092079],"hsluv":[265.874320218179207,41.3377460212352688,39.1185695394092079]},"#5555aa":{"lch":[40.1313601009005083,68.6985541131433166,265.874320218178866],"luv":[40.1313601009005083,-4.94248222285034178,-68.5205312786852829],"rgb":[0.333333333333333315,0.333333333333333315,0.66666666666666663],"xyz":[0.142495125787763188,0.113303344371399051,0.394676706631810315],"hpluv":[265.874320218178866,217.221618066114,40.1313601009005083],"hsluv":[265.874320218178866,51.4705865731736907,40.1313601009005083]},"#5555bb":{"lch":[41.2412811653463791,81.6070675548115787,265.874320218178639],"luv":[41.2412811653463791,-5.8711785983783864,-81.3955940869131],"rgb":[0.333333333333333315,0.333333333333333315,0.733333333333333282],"xyz":[0.159632717895099807,0.120158381214333809,0.484934691730452117],"hpluv":[265.874320218178639,251.093199488524249,41.2412811653463791],"hsluv":[265.874320218178639,61.3584924374872642,41.2412811653463791]},"#5555cc":{"lch":[42.4413509436270431,93.9883543596933,265.874320218178468],"luv":[42.4413509436270431,-6.76194392407029365,-93.7447964935174838],"rgb":[0.333333333333333315,0.333333333333333315,0.8],"xyz":[0.178925093338821561,0.127875331391822611,0.586541202400722272],"hpluv":[265.874320218178468,281.011551484187919,42.4413509436270431],"hsluv":[265.874320218178468,71.0546332315999791,42.4413509436270431]},"#5555dd":{"lch":[43.7242196004532389,105.866759380085014,265.874320218178411],"luv":[43.7242196004532389,-7.61652967783202328,-105.592420264465588],"rgb":[0.333333333333333315,0.333333333333333315,0.866666666666666696],"xyz":[0.200443418889455105,0.136482661612076145,0.69987105030072827],"hpluv":[265.874320218178411,307.239379297131052,43.7242196004532389],"hsluv":[265.874320218178411,80.6500300064864462,43.7242196004532389]},"#5555ee":{"lch":[45.0824447652298588,117.287521338877212,265.874320218178354],"luv":[45.0824447652298588,-8.43819053636753402,-116.983586892732674],"rgb":[0.333333333333333315,0.333333333333333315,0.933333333333333348],"xyz":[0.224255599155629842,0.146007533718546162,0.825281866369251493],"hpluv":[265.874320218178354,330.128999417958312,45.0824447652298588],"hsluv":[265.874320218178354,90.2572110855712708,45.0824447652298588]},"#5555ff":{"lch":[46.508708270344421,128.30356479361032,265.874320218178241],"luv":[46.508708270344421,-9.23073412981071,-127.971083789162734],"rgb":[0.333333333333333315,0.333333333333333315,1],"xyz":[0.250426647565461236,0.156475953082478858,0.963116054661033338],"hpluv":[265.874320218178241,350.061034522531031,46.508708270344421],"hsluv":[265.874320218178241,99.9999999999992468,46.508708270344421]},"#ccdd00":{"lch":[84.2515012159558552,94.1174138813685772,92.7819892835375555],"luv":[84.2515012159558552,-4.56806363508048818,94.0064912138661128],"rgb":[0.8,0.866666666666666696,0],"xyz":[0.507566029502865779,0.645503626279608334,0.0978568736941549666],"hpluv":[92.7819892835375555,256.902059824464118,84.2515012159558552],"hsluv":[92.7819892835375555,100.000000000002373,84.2515012159558552]},"#ccdd11":{"lch":[84.2724460606142287,93.1910749716768692,92.8373396690251695],"luv":[84.2724460606142287,-4.61302172096193619,93.0768310858219508],"rgb":[0.8,0.866666666666666696,0.0666666666666666657],"xyz":[0.508577695002502939,0.645908292479463242,0.103184978658910603],"hpluv":[92.8373396690251695,254.758074317949962,84.2724460606142287],"hsluv":[92.8373396690251695,98.9747327605244465,84.2724460606142287]},"#ccdd22":{"lch":[84.3112490917695396,91.4838404394451175,92.9423140418060711],"luv":[84.3112490917695396,-4.69591125178302349,91.3632392106652],"rgb":[0.8,0.866666666666666696,0.133333333333333331],"xyz":[0.510453053140979884,0.646658435734854,0.113061864854889796],"hpluv":[92.9423140418060711,250.792999873820406,84.3112490917695396],"hsluv":[92.9423140418060711,97.0860193213801637,84.3112490917695396]},"#ccdd33":{"lch":[84.3750724084435291,88.7007441607730271,93.1221866378423329],"luv":[84.3750724084435291,-4.83112791130122865,88.5690816130525],"rgb":[0.8,0.866666666666666696,0.2],"xyz":[0.513540803873437701,0.647893536027837169,0.129324018712500932],"hpluv":[93.1221866378423329,244.290353733928498,84.3750724084435291],"hsluv":[93.1221866378423329,94.0094146319777,84.3750724084435291]},"#ccdd44":{"lch":[84.4670755276021197,84.7426243382763857,93.3985511967960491],"luv":[84.4670755276021197,-5.02363867224446459,84.5935897939611152],"rgb":[0.8,0.866666666666666696,0.266666666666666663],"xyz":[0.517998799117656561,0.649676734125524735,0.152802793665387571],"hpluv":[93.3985511967960491,234.956854948695792,84.4670755276021197],"hsluv":[93.3985511967960491,89.638788485123,84.4670755276021197]},"#ccdd55":{"lch":[84.5898637292301601,79.5568981087007359,93.8026723407881633],"luv":[84.5898637292301601,-5.27624840258561711,79.3817437416967095],"rgb":[0.8,0.866666666666666696,0.333333333333333315],"xyz":[0.523961213157018491,0.652061699741269485,0.184204840939361486],"hpluv":[93.8026723407881633,222.570337020009788,84.5898637292301601],"hsluv":[93.8026723407881633,83.9211409492819485,84.5898637292301601]},"#ccdd66":{"lch":[84.7456349568684857,73.1331501088793772,94.3836122863904],"luv":[84.7456349568684857,-5.58984810871231,72.9192103836116],"rgb":[0.8,0.866666666666666696,0.4],"xyz":[0.531546208930526731,0.655095698050672803,0.224152485346505448],"hpluv":[94.3836122863904,206.963810787645969,84.7456349568684857],"hsluv":[94.3836122863904,76.851201462777,84.7456349568684857]},"#ccdd77":{"lch":[84.9362580835765186,65.5005774458529828,95.2238145131341156],"luv":[84.9362580835765186,-5.96359854749608687,65.2285300930849274],"rgb":[0.8,0.866666666666666696,0.466666666666666674],"xyz":[0.540860221950728581,0.658821303258753654,0.273206287252903357],"hpluv":[95.2238145131341156,188.015270942662227,84.9362580835765186],"hsluv":[95.2238145131341156,68.4671748287691,84.9362580835765186]},"#ccdd88":{"lch":[85.1633194008604733,56.7265968622164536,96.4730545580279],"luv":[85.1633194008604733,-6.39512608731957588,56.3649638862273221],"rgb":[0.8,0.866666666666666696,0.533333333333333326],"xyz":[0.552000639052672493,0.663277470099531197,0.331879150656475552],"hpluv":[96.4730545580279,165.642146962004915,85.1633194008604733],"hsluv":[96.4730545580279,58.8458897999489707,85.1633194008604733]},"#ccdd99":{"lch":[85.4281525463895548,46.9188240443766134,98.432972024211054],"luv":[85.4281525463895548,-6.88075351903593724,46.4115425375783843],"rgb":[0.8,0.866666666666666696,0.6],"xyz":[0.565057603161745137,0.66850025574316041,0.400645828297593432],"hpluv":[98.432972024211054,139.807612964747022,85.4281525463895548],"hsluv":[98.432972024211054,48.0968721297954644,85.4281525463895548]},"#ccddaa":{"lch":[85.7318592309590457,36.2402041704229134,101.807730551991185],"luv":[85.7318592309590457,-7.41576493035038453,35.4733537857886176],"rgb":[0.8,0.866666666666666696,0.66666666666666663],"xyz":[0.580115296126997748,0.674523332929261477,0.479949677914592032],"hpluv":[101.807730551991185,110.570541660882469,85.7318592309590457],"hsluv":[101.807730551991185,36.355428538792907,85.7318592309590457]},"#ccddbb":{"lch":[86.0753247228475828,24.9849555175277693,108.661729708420211],"luv":[86.0753247228475828,-7.99469198849898,23.671351930590518],"rgb":[0.8,0.866666666666666696,0.733333333333333282],"xyz":[0.597252888234334312,0.681378369772196235,0.570207663013233779],"hpluv":[108.661729708420211,78.3375416693066313,86.0753247228475828],"hsluv":[108.661729708420211,23.7751141135998658,86.0753247228475828]},"#ccddcc":{"lch":[86.4592303781436158,14.0773589090278701,127.715012949224516],"luv":[86.4592303781436158,-8.61160385902942771,11.1360815742673065],"rgb":[0.8,0.866666666666666696,0.8],"xyz":[0.616545263678056066,0.689095319949685092,0.671814173683503935],"hpluv":[127.715012949224516,45.5363150686036633,86.4592303781436158],"hsluv":[127.715012949224516,10.5200784033656536,86.4592303781436158]},"#ccdddd":{"lch":[86.8840646031333677,9.47353258269296106,192.177050630057835],"luv":[86.8840646031333677,-9.26038246071566817,-1.99828333241680145],"rgb":[0.8,0.866666666666666696,0.866666666666666696],"xyz":[0.638063589228689665,0.697702650169938599,0.785144021583509932],"hpluv":[192.177050630057835,31.7497104564534354,86.8840646031333677],"hsluv":[192.177050630057835,13.7818607651735867,86.8840646031333677]},"#ccddee":{"lch":[87.3501331068194276,18.4943223550678582,237.507437159903361],"luv":[87.3501331068194276,-9.9349674143158051,-15.5992429896340141],"rgb":[0.8,0.866666666666666696,0.933333333333333348],"xyz":[0.661875769494864374,0.707227522276408616,0.910554837652033155],"hpluv":[237.507437159903361,64.5162574350921432,87.3501331068194276],"hsluv":[237.507437159903361,51.9237885878372083,87.3501331068194276]},"#ccddff":{"lch":[87.8575689716950876,31.3946063828198874,250.2096672964189],"luv":[87.8575689716950876,-10.6295595905023852,-29.5403752996496962],"rgb":[0.8,0.866666666666666696,1],"xyz":[0.688046817904695795,0.717695941640341339,1.04838902594381489],"hpluv":[250.2096672964189,114.576774718516177,87.8575689716950876],"hsluv":[250.2096672964189,99.999999999992923,87.8575689716950876]},"#556600":{"lch":[40.3019892206732919,46.2375853800199934,99.381148915360626],"luv":[40.3019892206732919,-7.53678920078613679,45.6191967302971264],"rgb":[0.333333333333333315,0.4,0],"xyz":[0.0849739168694777086,0.114339753133439206,0.0175932549799886241],"hpluv":[99.381148915360626,145.582103533726,40.3019892206732919],"hsluv":[99.381148915360626,100.000000000002302,40.3019892206732919]},"#556611":{"lch":[40.3683315206726334,43.7939991819964618,99.9948312384981364],"luv":[40.3683315206726334,-7.60085740022420797,43.1293557931736729],"rgb":[0.333333333333333315,0.4,0.0666666666666666657],"xyz":[0.0859855823691148269,0.114744419333294059,0.0229213599447442573],"hpluv":[99.9948312384981364,137.661701347396985,40.3683315206726334],"hsluv":[99.9948312384981364,94.2576138599214204,40.3683315206726334]},"#556622":{"lch":[40.4909010608148421,39.4175015547736436,101.28961011017671],"luv":[40.4909010608148421,-7.7166980000465113,38.6547797923705758],"rgb":[0.333333333333333315,0.4,0.133333333333333331],"xyz":[0.0878609405075918559,0.115494562588684874,0.0327982461407234499],"hpluv":[101.28961011017671,123.529583899053776,40.4909010608148421],"hsluv":[101.28961011017671,83.977954812826539,40.4909010608148421]},"#556633":{"lch":[40.6915589391927455,32.6300466430477343,104.01044750968255],"luv":[40.6915589391927455,-7.89969574444685207,31.6593548745491518],"rgb":[0.333333333333333315,0.4,0.2],"xyz":[0.0909486912400495895,0.116729662881667987,0.0490603999983346],"hpluv":[104.01044750968255,101.754281640855311,40.6915589391927455],"hsluv":[104.01044750968255,68.015525760737134,40.6915589391927455]},"#556644":{"lch":[40.9787805135115306,23.7356999706126039,110.078417815454017],"luv":[40.9787805135115306,-8.1486066005911173,22.2931304119395044],"rgb":[0.333333333333333315,0.4,0.266666666666666663],"xyz":[0.0954066864842684631,0.118512860979355567,0.0725391749512212386],"hpluv":[110.078417815454017,73.4991539757345436,40.9787805135115306],"hsluv":[110.078417815454017,46.8659194429644117,40.9787805135115306]},"#556655":{"lch":[41.3584605937638372,13.8246485480389332,127.71501294923371],"luv":[41.3584605937638372,-8.45701225317865202,10.9361716896901875],"rgb":[0.333333333333333315,0.4,0.333333333333333315],"xyz":[0.101369100523630462,0.120897826595100399,0.10394122222519514],"hpluv":[127.71501294923371,42.4159365242361659,41.3584605937638372],"hsluv":[127.71501294923371,21.5972717302380097,41.3584605937638372]},"#556666":{"lch":[41.8343160733152146,9.01834401177998402,192.177050630060307],"luv":[41.8343160733152146,-8.8154354231024481,-1.90226891261946607],"rgb":[0.333333333333333315,0.4,0.4],"xyz":[0.108954096297138633,0.123931824904503718,0.143888866632339102],"hpluv":[192.177050630060307,27.3547941496945484,41.8343160733152146],"hsluv":[192.177050630060307,27.2477194602778816,41.8343160733152146]},"#556677":{"lch":[42.4081371223492525,18.1914318380534858,239.570903430569189],"luv":[42.4081371223492525,-9.21344558994119289,-15.6856817728697795],"rgb":[0.333333333333333315,0.4,0.466666666666666674],"xyz":[0.118268109317340553,0.127657430112584541,0.192942668538737],"hpluv":[239.570903430569189,54.4323412384199443,42.4081371223492525],"hsluv":[239.570903430569189,33.1626844996427934,42.4081371223492525]},"#556688":{"lch":[43.0800011190655425,31.444407039181371,252.144687081813345],"luv":[43.0800011190655425,-9.64130614192028546,-29.9298504828121246],"rgb":[0.333333333333333315,0.4,0.533333333333333326],"xyz":[0.129408526419284381,0.132113596953362111,0.251615531942309179],"hpluv":[252.144687081813345,92.6204805766441694,43.0800011190655425],"hsluv":[252.144687081813345,39.0862788716996903,43.0800011190655425]},"#556699":{"lch":[43.8484890486876964,45.3842681536749,257.153237313451427],"luv":[43.8484890486876964,-10.090933534038701,-44.2482186789059639],"rgb":[0.333333333333333315,0.4,0.6],"xyz":[0.142465490528357108,0.137336382596991269,0.320382209583427113],"hpluv":[257.153237313451427,131.337888607863903,43.8484890486876964],"hsluv":[257.153237313451427,44.8182326355090055,43.8484890486876964]},"#5566aa":{"lch":[44.7109144588579,59.3119903927914223,259.748012643434],"luv":[44.7109144588579,-10.5562103110165033,-58.3650462882037928],"rgb":[0.333333333333333315,0.4,0.66666666666666663],"xyz":[0.157523183493609636,0.143359459783092391,0.399686059200425714],"hpluv":[259.748012643434,168.332615885742257,44.7109144588579],"hsluv":[259.748012643434,50.2202557252039341,44.7109144588579]},"#5566bb":{"lch":[45.6635615252987463,72.9454914642558805,261.300749278862554],"luv":[45.6635615252987463,-11.0328519112314041,-72.1063166696695532],"rgb":[0.333333333333333315,0.4,0.733333333333333282],"xyz":[0.174660775600946283,0.15021449662602715,0.48994404429906746],"hpluv":[261.300749278862554,202.706651650989187,45.6635615252987463],"hsluv":[261.300749278862554,56.1551480082100767,45.6635615252987463]},"#5566cc":{"lch":[46.7019230239281953,86.153038102066219,262.316955218783903],"luv":[46.7019230239281953,-11.5180515282988498,-85.3796255742992],"rgb":[0.333333333333333315,0.4,0.8],"xyz":[0.193953151044668037,0.157931446803515951,0.591550554969337616],"hpluv":[262.316955218783903,234.085848684940913,46.7019230239281953],"hsluv":[262.316955218783903,67.0801136297732086,46.7019230239281953]},"#5566dd":{"lch":[47.8209277182799539,98.8836589551542,263.023825475898036],"luv":[47.8209277182799539,-12.010072956506761,-98.1515978267222664],"rgb":[0.333333333333333315,0.4,0.866666666666666696],"xyz":[0.215471476595301581,0.166538777023769485,0.704880402869343614],"hpluv":[263.023825475898036,262.38914084011509,47.8209277182799539],"hsluv":[263.023825475898036,77.9738615315733909,47.8209277182799539]},"#5566ee":{"lch":[49.0151480019121095,111.133834597019145,263.537783903780621],"luv":[49.0151480019121095,-12.5078880087352609,-110.427722650603215],"rgb":[0.333333333333333315,0.4,0.933333333333333348],"xyz":[0.23928365686147629,0.176063649130239502,0.830291218937866837],"hpluv":[263.537783903780621,287.710232398192659,49.0151480019121095],"hsluv":[263.537783903780621,88.9133133505171145,49.0151480019121095]},"#5566ff":{"lch":[50.2789812841098751,122.927042369796439,263.924295565134457],"luv":[50.2789812841098751,-13.0108962765956715,-122.236550687040406],"rgb":[0.333333333333333315,0.4,1],"xyz":[0.265454705271307712,0.186532068494172198,0.968125407229648682],"hpluv":[263.924295565134457,310.2417842032321,50.2789812841098751],"hsluv":[263.924295565134457,99.99999999999919,50.2789812841098751]},"#ccee00":{"lch":[88.9159222564839382,101.512339113439552,98.3897184755654],"luv":[88.9159222564839382,-14.8112090817394879,100.426007975120399],"rgb":[0.8,0.933333333333333348,0],"xyz":[0.554744805843380595,0.739861178960639299,0.113583132474326151],"hpluv":[98.3897184755654,409.405376777149172,88.9159222564839382],"hsluv":[98.3897184755654,100.000000000002402,88.9159222564839382]},"#ccee11":{"lch":[88.9350466502285855,100.665090554083037,98.4749110233884863],"luv":[88.9350466502285855,-14.8356507509631186,99.5658773027044],"rgb":[0.8,0.933333333333333348,0.0666666666666666657],"xyz":[0.555756471343017755,0.740265845160494207,0.118911237439081788],"hpluv":[98.4749110233884863,406.753799510206477,88.9350466502285855],"hsluv":[98.4749110233884863,99.103544824997428,88.9350466502285855]},"#ccee22":{"lch":[88.9704797513205108,99.1029038393990191,98.635890718104875],"luv":[88.9704797513205108,-14.8807650249594605,97.9793262973016823],"rgb":[0.8,0.933333333333333348,0.133333333333333331],"xyz":[0.557631829481494701,0.741015988415885,0.12878812363506098],"hpluv":[98.635890718104875,401.844579090604725,88.9704797513205108],"hsluv":[98.635890718104875,97.4508266239822376,88.9704797513205108]},"#ccee33":{"lch":[89.0287677898111696,96.5543294248683281,98.9099371535565837],"luv":[89.0287677898111696,-14.95450175665089,95.3892101230339335],"rgb":[0.8,0.933333333333333348,0.2],"xyz":[0.560719580213952518,0.742251088708868134,0.145050277492672131],"hpluv":[98.9099371535565837,393.778440936160052,89.0287677898111696],"hsluv":[98.9099371535565837,94.7550356083218333,89.0287677898111696]},"#ccee44":{"lch":[89.1128082270408157,92.9258219449750698,99.3266297509707101],"luv":[89.1128082270408157,-15.0597883526499068,91.6973890518296],"rgb":[0.8,0.933333333333333348,0.266666666666666663],"xyz":[0.565177575458171377,0.7440342868065557,0.168529052445558769],"hpluv":[99.3266297509707101,382.168331694223468,89.1128082270408157],"hsluv":[99.3266297509707101,90.9176847425828782,89.1128082270408157]},"#ccee55":{"lch":[89.224999764075946,88.1655281542066263,99.9265688821158591],"luv":[89.224999764075946,-15.1984931464969293,86.8456456063635187],"rgb":[0.8,0.933333333333333348,0.333333333333333315],"xyz":[0.571139989497533307,0.74641925242230045,0.199931099719532657],"hpluv":[99.9265688821158591,366.702481299920066,89.224999764075946],"hsluv":[99.9265688821158591,85.8839575374920372,89.224999764075946]},"#ccee66":{"lch":[89.3673776950467555,82.2600687786622444,100.76990980050725],"luv":[89.3673776950467555,-15.3715621348797811,80.8111006793235873],"rgb":[0.8,0.933333333333333348,0.4],"xyz":[0.578724985271041548,0.749453250731703768,0.239878744126676646],"hpluv":[100.76990980050725,347.124780760482849,89.3673776950467555],"hsluv":[100.76990980050725,79.6381055931254451,89.3673776950467555]},"#ccee77":{"lch":[89.5416863487684651,75.2338064272131817,101.95104715507324],"luv":[89.5416863487684651,-15.5791079616514043,73.6031047215169707],"rgb":[0.8,0.933333333333333348,0.466666666666666674],"xyz":[0.588038998291243398,0.753178855939784619,0.288932546033074555],"hpluv":[101.95104715507324,323.225079834159544,89.5416863487684651],"hsluv":[101.95104715507324,72.2002225208687349,89.5416863487684651]},"#ccee88":{"lch":[89.7494222523926481,67.150335761217363,103.626883623375818],"luv":[89.7494222523926481,-15.8204941270879562,65.2600916212887654],"rgb":[0.8,0.933333333333333348,0.533333333333333326],"xyz":[0.599179415393187309,0.757635022780562162,0.347605409436646695],"hpluv":[103.626883623375818,294.840431689210504,89.7494222523926481],"hsluv":[103.626883623375818,63.6228180815060256,89.7494222523926481]},"#ccee99":{"lch":[89.9918618926625697,58.1187887690418705,106.076645299715267],"luv":[89.9918618926625697,-16.094429395756972,55.8458857070554586],"rgb":[0.8,0.933333333333333348,0.6],"xyz":[0.61223637950226,0.762857808424191375,0.41637208707776463],"hpluv":[106.076645299715267,261.881276027636488,89.9918618926625697],"hsluv":[106.076645299715267,53.9866751643902418,89.9918618926625697]},"#cceeaa":{"lch":[90.2700807835134071,48.3136880988356481,109.842100564752428],"luv":[90.2700807835134071,-16.3990756203548145,45.4453823452884791],"rgb":[0.8,0.933333333333333348,0.66666666666666663],"xyz":[0.627294072467512565,0.768880885610292442,0.495675936694763231],"hpluv":[109.842100564752428,224.429228200920562,90.2700807835134071],"hsluv":[109.842100564752428,43.3959332818477037,90.2700807835134071]},"#cceebb":{"lch":[90.5849674500281736,38.0375276056681,116.096591597387416],"luv":[90.5849674500281736,-16.7321662581560417,34.1597441246474745],"rgb":[0.8,0.933333333333333348,0.733333333333333282],"xyz":[0.644431664574849128,0.7757359224532272,0.585933921793405],"hpluv":[116.096591597387416,183.067580850930824,90.5849674500281736],"hsluv":[116.096591597387416,31.9725829176952736,90.5849674500281736]},"#cceecc":{"lch":[90.9372344233822,27.9388105970907,127.715012949233042],"luv":[90.9372344233822,-17.0911298567764973,22.1013668762570106],"rgb":[0.8,0.933333333333333348,0.8],"xyz":[0.663724040018570882,0.783452872630716057,0.687540432463675133],"hpluv":[127.715012949233042,140.086760618050221,90.9372344233822],"hsluv":[127.715012949233042,30.3633811556705,90.9372344233822]},"#cceedd":{"lch":[91.327427526889025,19.8359452431300802,151.749458426713772],"luv":[91.327427526889025,-17.4732117028180483,9.38890816213244861],"rgb":[0.8,0.933333333333333348,0.866666666666666696],"xyz":[0.685242365569204481,0.792060202850969564,0.800870280363681131],"hpluv":[151.749458426713772,104.258293798779974,91.327427526889025],"hsluv":[151.749458426713772,29.0871711351253381,91.327427526889025]},"#cceeee":{"lch":[91.7559342603931,18.2870370266976643,192.177050630059739],"luv":[91.7559342603931,-17.87558711202,-3.8573447624494035],"rgb":[0.8,0.933333333333333348,0.933333333333333348],"xyz":[0.709054545835379191,0.801585074957439581,0.926281096432204354],"hpluv":[192.177050630059739,101.458793010104,91.7559342603931],"hsluv":[192.177050630059739,27.4217374065650326,91.7559342603931]},"#cceeff":{"lch":[92.2229917973594553,25.3309747642836847,223.758903531404655],"luv":[92.2229917973594553,-18.2954610486514362,-17.5195430170439934],"rgb":[0.8,0.933333333333333348,1],"xyz":[0.735225594245210612,0.812053494321372304,1.06411528472398609],"hpluv":[223.758903531404655,149.53216426558339,92.2229917973594553],"hsluv":[223.758903531404655,99.9999999999890861,92.2229917973594553]},"#557700":{"lch":[45.8045523271613533,55.5294361467329836,107.801769483020877],"luv":[45.8045523271613533,-16.9767207468495087,52.8706840456749276],"rgb":[0.333333333333333315,0.466666666666666674,0],"xyz":[0.103427654922895337,0.151247229240274977,0.023744500997794328],"hpluv":[107.801769483020877,153.83457187868342,45.8045523271613533],"hsluv":[107.801769483020877,100.000000000002288,45.8045523271613533]},"#557711":{"lch":[45.859623178970125,53.470483995502839,108.496139146384877],"luv":[45.859623178970125,-16.9630166203079504,50.7084679896019068],"rgb":[0.333333333333333315,0.466666666666666674,0.0666666666666666657],"xyz":[0.104439320422532456,0.15165189544012983,0.0290726059625499578],"hpluv":[108.496139146384877,147.952722071756682,45.859623178970125],"hsluv":[108.496139146384877,95.6324690191426,45.859623178970125]},"#557722":{"lch":[45.9614512879267494,49.76586948312967,109.899607245517743],"luv":[45.9614512879267494,-16.93896350220896,46.7943723206405409],"rgb":[0.333333333333333315,0.466666666666666674,0.133333333333333331],"xyz":[0.106314678561009485,0.152402038695520659,0.0389494921585291573],"hpluv":[109.899607245517743,137.396980684000368,45.9614512879267494],"hsluv":[109.899607245517743,87.7486210093461239,45.9614512879267494]},"#557733":{"lch":[46.1283843073061,43.9801463057798472,112.602269297118809],"luv":[46.1283843073061,-16.9029726498973396,40.6022509803905223],"rgb":[0.333333333333333315,0.466666666666666674,0.2],"xyz":[0.109402429293467218,0.153637138988503757,0.0552116460161403],"hpluv":[112.602269297118809,120.983948144693443,46.1283843073061],"hsluv":[112.602269297118809,75.3373974156097432,46.1283843073061]},"#557744":{"lch":[46.3678258482665413,36.3216896494577526,117.654446368962965],"luv":[46.3678258482665413,-16.8582748313623227,32.1724060135666861],"rgb":[0.333333333333333315,0.466666666666666674,0.266666666666666663],"xyz":[0.113860424537686092,0.155420337086191351,0.0786904209690269391],"hpluv":[117.654446368962965,99.4005156049610861,46.3678258482665413],"hsluv":[117.654446368962965,58.5682493514162346,46.3678258482665413]},"#557755":{"lch":[46.6852246722490349,27.4798560002662136,127.715012949237362],"luv":[46.6852246722490349,-16.8103715694690621,21.7383047520213317],"rgb":[0.333333333333333315,0.466666666666666674,0.333333333333333315],"xyz":[0.119822838577048091,0.157805302701936184,0.110092468243000841],"hpluv":[127.715012949237362,74.6920408293198506,46.6852246722490349],"hsluv":[127.715012949237362,38.0315615795731219,46.6852246722490349]},"#557766":{"lch":[47.0844103757355299,19.3533005907945039,150.034269154893224],"luv":[47.0844103757355299,-16.7662346577491,9.66662397939114371],"rgb":[0.333333333333333315,0.466666666666666674,0.4],"xyz":[0.127407834350556276,0.160839301011339475,0.150040112650144802],"hpluv":[150.034269154893224,52.1575559127659147,47.0844103757355299],"hsluv":[150.034269154893224,41.6155983808333403,47.0844103757355299]},"#557777":{"lch":[47.5677829408255519,17.1184872206298522,192.177050630060563],"luv":[47.5677829408255519,-16.733329138647683,-3.61085871511915846],"rgb":[0.333333333333333315,0.466666666666666674,0.466666666666666674],"xyz":[0.136721847370758182,0.164564906219420298,0.199093914556542712],"hpluv":[192.177050630060563,45.665876663612373,47.5677829408255519],"hsluv":[192.177050630060563,45.4871270252879683,47.5677829408255519]},"#557788":{"lch":[48.1364533988364371,24.3189053895014062,226.569261606948],"luv":[48.1364533988364371,-16.7186932071720697,-17.6605338760746164],"rgb":[0.333333333333333315,0.466666666666666674,0.533333333333333326],"xyz":[0.147862264472702,0.169021073060197896,0.257766777960114879],"hpluv":[226.569261606948,64.1075619232690173,48.1364533988364371],"hsluv":[226.569261606948,49.4930397679002567,48.1364533988364371]},"#557799":{"lch":[48.7903733600049776,36.1922931768580227,242.470518495943224],"luv":[48.7903733600049776,-16.7282575252316086,-32.0943528610435749],"rgb":[0.333333333333333315,0.466666666666666674,0.6],"xyz":[0.160919228581774709,0.174243858703827054,0.326533455601232814],"hpluv":[242.470518495943224,94.128532149155447,48.7903733600049776],"hsluv":[242.470518495943224,53.4981409183259657,48.7903733600049776]},"#5577aa":{"lch":[49.5284680294880957,49.5215284063763121,250.210257263218182],"luv":[49.5284680294880957,-16.7664778987851584,-46.5968560588918308],"rgb":[0.333333333333333315,0.466666666666666674,0.66666666666666663],"xyz":[0.175976921547027265,0.180266935889928148,0.405837305218231414],"hpluv":[250.210257263218182,126.875705911364861,49.5284680294880957],"hsluv":[250.210257263218182,57.3943781585142503,49.5284680294880957]},"#5577bb":{"lch":[50.3487764471929324,63.2168000831305,254.554261837862072],"luv":[50.3487764471929324,-16.8362555209572413,-60.9336057753316069],"rgb":[0.333333333333333315,0.466666666666666674,0.733333333333333282],"xyz":[0.193114513654363912,0.187121972732862907,0.496095290316873161],"hpluv":[254.554261837862072,159.324628464713726,50.3487764471929324],"hsluv":[254.554261837862072,61.1035457400689737,50.3487764471929324]},"#5577cc":{"lch":[51.2485971738404942,76.8367273058076279,257.264224247337211],"luv":[51.2485971738404942,-16.9390629845235594,-74.9463195111900546],"rgb":[0.333333333333333315,0.466666666666666674,0.8],"xyz":[0.212406889098085638,0.194838922910351708,0.597701800987143317],"hpluv":[257.264224247337211,190.250673687597981,51.2485971738404942],"hsluv":[257.264224247337211,64.5753193228694329,51.2485971738404942]},"#5577dd":{"lch":[52.2246350466270428,90.1721178795433502,259.084439545341468],"luv":[52.2246350466270428,-17.075183181685393,-88.5406627612090347],"rgb":[0.333333333333333315,0.466666666666666674,0.866666666666666696],"xyz":[0.233925214648719182,0.203446253130605242,0.711031648887149315],"hpluv":[259.084439545341468,219.096874823476185,52.2246350466270428],"hsluv":[259.084439545341468,74.9139940771913757,52.2246350466270428]},"#5577ee":{"lch":[53.2731438322457791,103.123503170291656,260.373961187264626],"luv":[53.2731438322457791,-17.2439851141504441,-101.671539200978515],"rgb":[0.333333333333333315,0.466666666666666674,0.933333333333333348],"xyz":[0.257737394914893947,0.212971125237075287,0.836442464955672538],"hpluv":[260.373961187264626,245.63410016831412,53.2731438322457791],"hsluv":[260.373961187264626,87.3510385353649,53.2731438322457791]},"#5577ff":{"lch":[54.3900599484937572,115.652149768064447,261.324783585170792],"luv":[54.3900599484937572,-17.4441870719707097,-114.32899931064253],"rgb":[0.333333333333333315,0.466666666666666674,1],"xyz":[0.283908443324725313,0.223439544601007983,0.974276653247454383],"hpluv":[261.324783585170792,269.819603010977914,54.3900599484937572],"hsluv":[261.324783585170792,99.9999999999989768,54.3900599484937572]},"#ccff00":{"lch":[93.605159534834371,109.568762044642341,102.903766821995461],"luv":[93.605159534834371,-24.4682604068618268,106.801768939739262],"rgb":[0.8,1,0],"xyz":[0.606597178273054372,0.843565923819988406,0.130867256617550276],"hpluv":[102.903766821995461,795.170643052662513,93.605159534834371],"hsluv":[102.903766821995461,100.000000000002359,93.605159534834371]},"#ccff11":{"lch":[93.6226829283917681,108.793716578542018,103.00230683973929],"luv":[93.6226829283917681,-24.4775292120886689,106.004355243751533],"rgb":[0.8,1,0.0666666666666666657],"xyz":[0.607608843772691531,0.843970590019843314,0.136195361582305913],"hpluv":[103.00230683973929,791.823376913543598,93.6226829283917681],"hsluv":[103.00230683973929,99.9999999999883755,93.6226829283917681]},"#ccff22":{"lch":[93.6551518183817535,107.364125357399203,103.187929529698394],"luv":[93.6551518183817535,-24.4946701604029187,104.532609971684906],"rgb":[0.8,1,0.133333333333333331],"xyz":[0.609484201911168477,0.844720733275234115,0.146072247778285091],"hpluv":[103.187929529698394,785.615721446726184,93.6551518183817535],"hsluv":[103.187929529698394,99.9999999999883613,93.6551518183817535]},"#ccff33":{"lch":[93.7085695338431464,105.030410790236445,103.502196488744218],"luv":[93.7085695338431464,-24.5227776356263192,102.127472150246831],"rgb":[0.8,1,0.2],"xyz":[0.612571952643626294,0.845955833568217241,0.162334401635896242],"hpluv":[103.502196488744218,775.386532390006209,93.7085695338431464],"hsluv":[103.502196488744218,99.9999999999882334,93.7085695338431464]},"#ccff44":{"lch":[93.7856006692118456,101.704796230104463,103.975902087852319],"luv":[93.7856006692118456,-24.5631097372148304,98.6940687997238],"rgb":[0.8,1,0.266666666666666663],"xyz":[0.617029947887845154,0.847739031665904808,0.18581317658878288],"hpluv":[103.975902087852319,760.597322717251814,93.7856006692118456],"hsluv":[103.975902087852319,99.9999999999883329,93.7856006692118456]},"#ccff55":{"lch":[93.8884584724407887,97.3367975087049473,104.649262803016768],"luv":[93.8884584724407887,-24.6166025777849207,94.1725810773922802],"rgb":[0.8,1,0.333333333333333315],"xyz":[0.622992361927207083,0.850123997281649557,0.217215223862756796],"hpluv":[104.649262803016768,740.773636872505676,93.8884584724407887],"hsluv":[104.649262803016768,99.999999999988,93.8884584724407887]},"#ccff66":{"lch":[94.0190298395239381,91.9106503723783561,105.578857731119598],"luv":[94.0190298395239381,-24.6839280463924027,88.5340123798424514],"rgb":[0.8,1,0.4],"xyz":[0.630577357700715324,0.853157995591052876,0.257162868269900757],"hpluv":[105.578857731119598,715.472563222964368,94.0190298395239381],"hsluv":[105.578857731119598,99.9999999999875371,94.0190298395239381]},"#ccff77":{"lch":[94.1789424927264349,85.4453105292158597,106.848417981185563],"luv":[94.1789424927264349,-24.7655268674123263,81.7775627566241781],"rgb":[0.8,1,0.466666666666666674],"xyz":[0.639891370720917174,0.856883600799133727,0.306216670176298666],"hpluv":[106.848417981185563,684.262206540111833,94.1789424927264349],"hsluv":[106.848417981185563,99.9999999999873381,94.1789424927264349]},"#ccff88":{"lch":[94.3696051468525781,77.9966506735583778,108.587502777405675],"luv":[94.3696051468525781,-24.8616333733667219,73.92818611532],"rgb":[0.8,1,0.533333333333333326],"xyz":[0.651031787822861086,0.861339767639911269,0.364889533579870862],"hpluv":[108.587502777405675,646.714804777793233,94.3696051468525781],"hsluv":[108.587502777405675,99.9999999999870397,94.3696051468525781]},"#ccff99":{"lch":[94.5922333645115572,69.6635615227201868,111.00626449694991],"luv":[94.5922333645115572,-24.9722983929036886,65.0338074927618],"rgb":[0.8,1,0.6],"xyz":[0.66408875193193373,0.866562553283540482,0.433656211220988741],"hpluv":[111.00626449694991,602.43247210261859,94.5922333645115572],"hsluv":[111.00626449694991,99.999999999986656,94.5922333645115572]},"#ccffaa":{"lch":[94.8478672375315881,60.6030718965076574,114.464397640121035],"luv":[94.8478672375315881,-25.0974127381864349,55.1620539605116],"rgb":[0.8,1,0.66666666666666663],"xyz":[0.679146444897186341,0.872585630469641549,0.512960060837987397],"hpluv":[114.464397640121035,551.164539659931279,94.8478672375315881],"hsluv":[114.464397640121035,99.9999999999858886,94.8478672375315881]},"#ccffbb":{"lch":[95.1373841969384,51.0680528276179899,119.615591899534252],"luv":[95.1373841969384,-25.2367319023901224,44.3965469658538439],"rgb":[0.8,1,0.733333333333333282],"xyz":[0.696284037004522904,0.879440667312576307,0.603218045936629088],"hpluv":[119.615591899534252,493.192076617112832,95.1373841969384],"hsluv":[119.615591899534252,99.999999999985036,95.1373841969384]},"#ccffcc":{"lch":[95.4615088709507802,41.5047839306073527,127.715012949235671],"luv":[95.4615088709507802,-25.3899015983654444,32.8329101048280876],"rgb":[0.8,1,0.8],"xyz":[0.715576412448244659,0.887157617490065165,0.704824556606899244],"hpluv":[127.715012949235671,430.524428546451247,95.4615088709507802],"hsluv":[127.715012949235671,99.9999999999844,95.4615088709507802]},"#ccffdd":{"lch":[95.8208211701733603,32.8093273722257,141.163585516297758],"luv":[95.8208211701733603,-25.5564832849791728,20.5746962243056899],"rgb":[0.8,1,0.866666666666666696],"xyz":[0.737094737998878258,0.895764947710318671,0.818154404506905242],"hpluv":[141.163585516297758,370.598640927928557,95.8208211701733603],"hsluv":[141.163585516297758,99.9999999999829612,95.8208211701733603]},"#ccffee":{"lch":[96.2157633520208293,26.8716381406037179,163.283084738459195],"luv":[96.2157633520208293,-25.7359786647352209,7.72944619800421506],"rgb":[0.8,1,0.933333333333333348],"xyz":[0.760906918265053,0.905289819816788688,0.943565220575428465],"hpluv":[163.283084738459195,336.210724351278486,96.2157633520208293],"hsluv":[163.283084738459195,99.9999999999813411,96.2157633520208293]},"#ccffff":{"lch":[96.6466465538527899,26.5246444827845806,192.177050630060279],"luv":[96.6466465538527899,-25.9278521925209873,-5.59493034995961125],"rgb":[0.8,1,1],"xyz":[0.787077966674884388,0.915758239180721412,1.08139940886721031],"hpluv":[192.177050630060279,375.729722461639881,96.6466465538527899],"hsluv":[192.177050630060279,99.9999999999789111,96.6466465538527899]},"#558800":{"lch":[51.3121649295003266,65.2833526322192,113.133039202335894],"luv":[51.3121649295003266,-25.6477049188799029,60.0342515843809466],"rgb":[0.333333333333333315,0.533333333333333326,0],"xyz":[0.125500024647865804,0.195391968690216522,0.0311019575727842744],"hpluv":[113.133039202335894,161.443824642532,51.3121649295003266],"hsluv":[113.133039202335894,100.000000000002416,51.3121649295003266]},"#558811":{"lch":[51.3586018009433758,63.5282336791645363,113.757082680238781],"luv":[51.3586018009433758,-25.5929736747770171,58.1449582756467862],"rgb":[0.333333333333333315,0.533333333333333326,0.0666666666666666657],"xyz":[0.126511690147502937,0.195796634890071375,0.0364300625375399076],"hpluv":[113.757082680238781,156.961418592175818,51.3586018009433758],"hsluv":[113.757082680238781,96.6047658949560315,51.3586018009433758]},"#558822":{"lch":[51.4445144263052754,60.3557257759597761,114.985955444381503],"luv":[51.4445144263052754,-25.4940226670596211,54.707115096615226],"rgb":[0.333333333333333315,0.533333333333333326,0.133333333333333331],"xyz":[0.128387048285979938,0.196546778145462203,0.0463069487335191],"hpluv":[114.985955444381503,148.873956641671725,51.4445144263052754],"hsluv":[114.985955444381503,90.4397474873449454,51.4445144263052754]},"#558833":{"lch":[51.5854933484676366,55.3603846502330512,117.238150003797628],"luv":[51.5854933484676366,-25.3378965271949284,49.2215723864945502],"rgb":[0.333333333333333315,0.533333333333333326,0.2],"xyz":[0.131474799018437671,0.197781878438445302,0.0625691025911302434],"hpluv":[117.238150003797628,136.179218375975154,51.5854933484676366],"hsluv":[117.238150003797628,80.6386945119108844,51.5854933484676366]},"#558844":{"lch":[51.788002513998137,48.6519311113283521,121.094634958525788],"luv":[51.788002513998137,-25.1264429677671792,41.6614001762900799],"rgb":[0.333333333333333315,0.533333333333333326,0.266666666666666663],"xyz":[0.135932794262656559,0.199565076536132896,0.0860478775440168819],"hpluv":[121.094634958525788,119.20933058927335,51.788002513998137],"hsluv":[121.094634958525788,67.2069053574962112,51.788002513998137]},"#558855":{"lch":[52.0569745246593669,40.6501953066927229,127.715012949238655],"luv":[52.0569745246593669,-24.8671203906742271,32.1568764333225801],"rgb":[0.333333333333333315,0.533333333333333326,0.333333333333333315],"xyz":[0.141895208302018572,0.201950042151877729,0.117449924817990797],"hpluv":[127.715012949238655,99.0884509425644495,52.0569745246593669],"hsluv":[127.715012949238655,50.4536826414745647,52.0569745246593669]},"#558866":{"lch":[52.3961000606252156,32.296627997442414,139.535908661945541],"luv":[52.3961000606252156,-24.57168930668605,20.9595864611130054],"rgb":[0.333333333333333315,0.533333333333333326,0.4],"xyz":[0.149480204075526729,0.20498404046128102,0.157397569225134759],"hpluv":[139.535908661945541,78.2163498792783258,52.3961000606252156],"hsluv":[139.535908661945541,52.7717106037122505,52.3961000606252156]},"#558877":{"lch":[52.8079833364028417,25.6675371494617757,160.900154113051656],"luv":[52.8079833364028417,-24.2545338981935465,8.39881233868101873],"rgb":[0.333333333333333315,0.533333333333333326,0.466666666666666674],"xyz":[0.158794217095728663,0.208709645669361843,0.206451371131532668],"hpluv":[160.900154113051656,61.6770996704155934,52.8079833364028417],"hsluv":[160.900154113051656,55.3375604028527732,52.8079833364028417]},"#558888":{"lch":[53.2942460543653311,24.4817100724115,192.177050630060762],"luv":[53.2942460543653311,-23.9308828659180151,-5.16400748714853908],"rgb":[0.333333333333333315,0.533333333333333326,0.533333333333333326],"xyz":[0.169934634197672463,0.213165812510139441,0.265124234535104808],"hpluv":[192.177050630060762,58.2908991249141764,53.2942460543653311],"hsluv":[192.177050630060762,58.0627314448554515,53.2942460543653311]},"#558899":{"lch":[53.8556132197311399,30.5464388010487,219.367537814697016],"luv":[53.8556132197311399,-23.6152401502492637,-19.3753801529742589],"rgb":[0.333333333333333315,0.533333333333333326,0.6],"xyz":[0.18299159830674519,0.218388598153768598,0.333890912176222743],"hpluv":[219.367537814697016,71.9728892793730921,53.8556132197311399],"hsluv":[219.367537814697016,60.861676067449,53.8556132197311399]},"#5588aa":{"lch":[54.491995562986105,41.1624410064978434,235.49057853568965],"luv":[54.491995562986105,-23.3202411533326384,-33.9192114024460452],"rgb":[0.333333333333333315,0.533333333333333326,0.66666666666666663],"xyz":[0.198049291271997718,0.224411675339869693,0.413194761793221343],"hpluv":[235.49057853568965,95.8534470006528494,54.491995562986105],"hsluv":[235.49057853568965,63.6587877222075207,54.491995562986105]},"#5588bb":{"lch":[55.2025746803936102,53.7318677649407164,244.589939769846183],"luv":[55.2025746803936102,-23.0560079965343867,-48.5338449823709865],"rgb":[0.333333333333333315,0.533333333333333326,0.733333333333333282],"xyz":[0.215186883379334393,0.231266712182804451,0.503452746891863],"hpluv":[244.589939769846183,123.512789385845494,55.2025746803936102],"hsluv":[244.589939769846183,66.3923972476147,55.2025746803936102]},"#5588cc":{"lch":[55.9858924676882,67.0258402153595227,250.085698604565607],"luv":[55.9858924676882,-22.8299557310329213,-63.0179052166444436],"rgb":[0.333333333333333315,0.533333333333333326,0.8],"xyz":[0.234479258823056119,0.238983662360293253,0.60505925756213319],"hpluv":[250.085698604565607,151.915814945370954,55.9858924676882],"hsluv":[250.085698604565607,69.0160689386852653,55.9858924676882]},"#5588dd":{"lch":[56.8399439373084761,80.4799585659197589,253.656315856923044],"luv":[56.8399439373084761,-22.6469326722406379,-77.2278458285038596],"rgb":[0.333333333333333315,0.533333333333333326,0.866666666666666696],"xyz":[0.255997584373689691,0.247590992580546787,0.718389105462139188],"hpluv":[253.656315856923044,179.669115472769334,56.8399439373084761],"hsluv":[253.656315856923044,71.4978966707909791,56.8399439373084761]},"#5588ee":{"lch":[57.7622712344346212,93.8110643698785083,256.11666422549024],"luv":[57.7622712344346212,-22.5095618551803298,-91.0704969970917517],"rgb":[0.333333333333333315,0.533333333333333326,0.933333333333333348],"xyz":[0.2798097646398644,0.257115864687016804,0.843799921530662411],"hpluv":[256.11666422549024,206.086302990026525,57.7622712344346212],"hsluv":[256.11666422549024,85.5354286092897098,57.7622712344346212]},"#5588ff":{"lch":[58.7500561820581169,106.871298098059711,257.890974112124525],"luv":[58.7500561820581169,-22.4186692043534066,-104.493433421771144],"rgb":[0.333333333333333315,0.533333333333333326,1],"xyz":[0.305980813049695821,0.267584284050949528,0.981634109822444256],"hpluv":[257.890974112124525,230.829932612430156,58.7500561820581169],"hsluv":[257.890974112124525,99.9999999999988489,58.7500561820581169]},"#559900":{"lch":[56.7948235068901113,75.0667586450735769,116.650835958582277],"luv":[56.7948235068901113,-33.6713638042581849,67.0914116190665766],"rgb":[0.333333333333333315,0.6,0],"xyz":[0.151369625100333277,0.247131169595152217,0.0397251577236065259],"hpluv":[116.650835958582277,167.717444253109818,56.7948235068901113],"hsluv":[116.650835958582277,100.000000000002373,56.7948235068901113]},"#559911":{"lch":[56.8345345919718,73.5501475520203343,117.179331557793219],"luv":[56.8345345919718,-33.596019870913949,65.4288289193465431],"rgb":[0.333333333333333315,0.6,0.0666666666666666657],"xyz":[0.152381290599970409,0.24753583579500707,0.0450532626883621556],"hpluv":[117.179331557793219,164.214146288467191,56.8345345919718],"hsluv":[117.179331557793219,97.3073310640873501,56.8345345919718]},"#559922":{"lch":[56.9080340332033785,70.7973668034807559,118.203267177206257],"luv":[56.9080340332033785,-33.458907670269852,62.3920559351826256],"rgb":[0.333333333333333315,0.6,0.133333333333333331],"xyz":[0.154256648738447411,0.248285979050397898,0.0549301488843413552],"hpluv":[118.203267177206257,157.863907732936383,56.9080340332033785],"hsluv":[118.203267177206257,92.3971004449738444,56.9080340332033785]},"#559933":{"lch":[57.0287279601738675,66.4302504595433163,120.024921583566851],"luv":[57.0287279601738675,-33.2401456716524066,57.5158316626386181],"rgb":[0.333333333333333315,0.6,0.2],"xyz":[0.157344399470905172,0.249521079343381,0.0711923027419525],"hpluv":[120.024921583566851,147.812625691912672,57.0287279601738675],"hsluv":[120.024921583566851,84.5348632876942645,57.0287279601738675]},"#559944":{"lch":[57.2022813646338335,60.4886548808755862,122.993651447985457],"luv":[57.2022813646338335,-32.9388613723515604,50.7337045837447178],"rgb":[0.333333333333333315,0.6,0.266666666666666663],"xyz":[0.161802394715124032,0.251304277441068591,0.0946710776948391369],"hpluv":[122.993651447985457,134.183743453609452,57.2022813646338335],"hsluv":[122.993651447985457,73.6468983233054075,57.2022813646338335]},"#559955":{"lch":[57.4331244004656583,53.227141365646645,127.715012949239252],"luv":[57.4331244004656583,-32.5608701853658573,42.1060365117673499],"rgb":[0.333333333333333315,0.6,0.333333333333333315],"xyz":[0.167764808754486017,0.253689243056813396,0.126073124968813038],"hpluv":[127.715012949239252,117.600732304920115,57.4331244004656583],"hsluv":[127.715012949239252,59.8797334066369444,57.4331244004656583]},"#559966":{"lch":[57.7247064038159152,45.1954856350919556,135.286653522876605],"luv":[57.7247064038159152,-32.1175213159608433,31.7977475037242847],"rgb":[0.333333333333333315,0.6,0.4],"xyz":[0.175349804527994202,0.256723241366216715,0.166020769375957],"hpluv":[135.286653522876605,99.3510934192793371,57.7247064038159152],"hsluv":[135.286653522876605,61.4133131906424055,57.7247064038159152]},"#559977":{"lch":[58.0796295741768631,37.4448814339638858,147.624029462041108],"luv":[58.0796295741768631,-31.624170974627738,20.0507096076703846],"rgb":[0.333333333333333315,0.6,0.466666666666666674],"xyz":[0.184663817548196107,0.260448846574297566,0.215074571282354909],"hpluv":[147.624029462041108,81.8102930750829671,58.0796295741768631],"hsluv":[147.624029462041108,63.1432913181764448,58.0796295741768631]},"#559988":{"lch":[58.4997327930321092,31.9103493306277741,167.047427400638497],"luv":[58.4997327930321092,-31.0984204046450543,7.15252701768072],"rgb":[0.333333333333333315,0.6,0.533333333333333326],"xyz":[0.195804234650139963,0.264905013415075108,0.273747434685927105],"hpluv":[167.047427400638497,69.2176742514874093,58.4997327930321092],"hsluv":[167.047427400638497,65.0191416919107752,58.4997327930321092]},"#559999":{"lch":[58.9861545428406373,31.2617491707160085,192.177050630060933],"luv":[58.9861545428406373,-30.5583742056962677,-6.59414339527129822],"rgb":[0.333333333333333315,0.6,0.6],"xyz":[0.208861198759212663,0.270127799058704321,0.342514112327045],"hpluv":[192.177050630060933,67.2515837667627494,58.9861545428406373],"hsluv":[192.177050630060933,66.9883413382070216,58.9861545428406373]},"#5599aa":{"lch":[59.5393884281606915,36.5784761777074152,214.841775998693208],"luv":[59.5393884281606915,-30.0211576326403424,-20.8977274812183715],"rgb":[0.333333333333333315,0.6,0.66666666666666663],"xyz":[0.223918891724465219,0.276150876244805388,0.421817961944043585],"hpluv":[214.841775998693208,77.957978019602777,59.5393884281606915],"hsluv":[214.841775998693208,69.0007957908225,59.5393884281606915]},"#5599bb":{"lch":[60.1593377819191488,46.1560476826162613,230.269588518041076],"luv":[60.1593377819191488,-29.5018430010724479,-35.4967885479802],"rgb":[0.333333333333333315,0.6,0.733333333333333282],"xyz":[0.241056483831801838,0.283005913087740146,0.512075947042685331],"hpluv":[230.269588518041076,97.3564866347465312,60.1593377819191488],"hsluv":[230.269588518041076,71.0120526680823758,60.1593377819191488]},"#5599cc":{"lch":[60.8453721774886276,57.9560381686168284,239.960256152221575],"luv":[60.8453721774886276,-29.0128279276179057,-50.1712883614184761],"rgb":[0.333333333333333315,0.6,0.8],"xyz":[0.260348859275523592,0.290722863265228948,0.613682457712955487],"hpluv":[239.960256152221575,120.867757439807349,60.8453721774886276],"hsluv":[239.960256152221575,72.9851794318318667,60.8453721774886276]},"#5599dd":{"lch":[61.596386585270082,70.7674616346471623,246.194917025964173],"luv":[61.596386585270082,-28.563620381934669,-64.7468394355121],"rgb":[0.333333333333333315,0.6,0.866666666666666696],"xyz":[0.281867184826157136,0.29933019348548251,0.727012305612961485],"hpluv":[246.194917025964173,145.7866339341696,61.596386585270082],"hsluv":[246.194917025964173,74.8914393241793164,61.596386585270082]},"#5599ee":{"lch":[62.4108626997728209,83.9573424358243,250.401946751580681],"luv":[62.4108626997728209,-28.1609349474859023,-79.0935970339554757],"rgb":[0.333333333333333315,0.6,0.933333333333333348],"xyz":[0.305679365092331845,0.308855065591952527,0.852423121681484708],"hpluv":[250.401946751580681,170.701691169737018,62.4108626997728209],"hsluv":[250.401946751580681,83.3865807682554845,62.4108626997728209]},"#5599ff":{"lch":[63.2869312953637,97.1853240423286309,253.372761171991215],"luv":[63.2869312953637,-27.8089904224615658,-93.1216798650875859],"rgb":[0.333333333333333315,0.6,1],"xyz":[0.331850413502163266,0.319323484955885251,0.990257309973266553],"hpluv":[253.372761171991215,194.861470594675211,63.2869312953637],"hsluv":[253.372761171991215,99.9999999999986215,63.2869312953637]},"#440000":{"lch":[10.7708306123528814,36.2226426723970221,12.1770506300617765],"luv":[10.7708306123528814,35.407649887332731,7.64056094984030221],"rgb":[0.266666666666666663,0,0],"xyz":[0.0238384275584062923,0.0122916892098035059,0.00111742629180027137],"hpluv":[12.1770506300617765,426.746789183125145,10.7708306123528814],"hsluv":[12.1770506300617765,100.000000000002203,10.7708306123528814]},"#440011":{"lch":[11.0614468716721248,32.5827232355020158,4.73042674181564848],"luv":[11.0614468716721248,32.4717377839629151,2.68702414036008763],"rgb":[0.266666666666666663,0,0.0666666666666666657],"xyz":[0.024850093058043414,0.0126963554096583605,0.00644553125655590239],"hpluv":[4.73042674181564848,373.778888471265759,11.0614468716721248],"hsluv":[4.73042674181564848,99.999999999996831,11.0614468716721248]},"#440022":{"lch":[11.5842423793746683,28.6540476811609395,350.304317532446703],"luv":[11.5842423793746683,28.2447579299318896,-4.82577434136679706],"rgb":[0.266666666666666663,0,0.133333333333333331],"xyz":[0.0267254511965204326,0.0134464986650491784,0.0163224174525351],"hpluv":[350.304317532446703,313.875682434467763,11.5842423793746683],"hsluv":[350.304317532446703,99.9999999999974847,11.5842423793746683]},"#440033":{"lch":[12.4041921203750505,27.3919603751935874,328.642516788172941],"luv":[12.4041921203750505,23.3910134404871357,-14.2541216293086901],"rgb":[0.266666666666666663,0,0.2],"xyz":[0.0298132019289781731,0.0146815989580322912,0.0325845713101462417],"hpluv":[328.642516788172941,280.216663156604227,12.4041921203750505],"hsluv":[328.642516788172941,99.9999999999981668,12.4041921203750505]},"#440044":{"lch":[13.5105146335658439,30.7747615701782742,307.715012949243601],"luv":[13.5105146335658439,18.8259784531467211,-24.3447835271332202],"rgb":[0.266666666666666663,0,0.266666666666666663],"xyz":[0.0342711971731970502,0.0164647970557198695,0.0560633462630328802],"hpluv":[307.715012949243601,289.042783730483222,13.5105146335658439],"hsluv":[307.715012949243601,99.9999999999987779,13.5105146335658439]},"#440055":{"lch":[14.871657786523194,37.5926423334987589,293.358518425732086],"luv":[14.871657786523194,14.9048564440935021,-34.5116214049025416],"rgb":[0.266666666666666663,0,0.333333333333333315],"xyz":[0.0402336112125590423,0.0188497626714647,0.0874653935370067886],"hpluv":[293.358518425732086,320.761913781574776,14.871657786523194],"hsluv":[293.358518425732086,99.999999999999261,14.871657786523194]},"#440066":{"lch":[16.4463097679727497,46.0898544445027,284.618444278650202],"luv":[16.4463097679727497,11.6321972733021664,-44.597832562922008],"rgb":[0.266666666666666663,0,0.4],"xyz":[0.0478186069860672205,0.0218837609808680139,0.127413037944150764],"hpluv":[284.618444278650202,355.611827609674208,16.4463097679727497],"hsluv":[284.618444278650202,99.9999999999996447,16.4463097679727497]},"#440077":{"lch":[18.1919811936642475,55.3198462112611651,279.251207899416613],"luv":[18.1919811936642475,8.8934050845755,-54.6002997321373],"rgb":[0.266666666666666663,0,0.466666666666666674],"xyz":[0.0571326200062691331,0.0256093661889488303,0.176466839850548673],"hpluv":[279.251207899416613,385.869357778503058,18.1919811936642475],"hsluv":[279.251207899416613,100.000000000000028,18.1919811936642475]},"#440088":{"lch":[20.0701231572475791,64.8751824688912,275.807883046004235],"luv":[20.0701231572475791,6.56492582220058196,-64.5421648949036353],"rgb":[0.266666666666666663,0,0.533333333333333326],"xyz":[0.0682730371082129611,0.0300655330297264212,0.235139703254120841],"hpluv":[275.807883046004235,410.173767132845569,20.0701231572475791],"hsluv":[275.807883046004235,100.000000000000284,20.0701231572475791]},"#440099":{"lch":[22.0482755473713041,74.5764302852581267,273.495279820248],"luv":[22.0482755473713041,4.54664979059262,-74.4377050275844283],"rgb":[0.266666666666666663,0,0.6],"xyz":[0.0813300012172856746,0.0352883186733555787,0.303906380895238748],"hpluv":[273.495279820248,429.20649964036636,22.0482755473713041],"hsluv":[273.495279820248,100.000000000000384,22.0482755473713041]},"#4400aa":{"lch":[24.1003299188330615,84.3353594354864811,271.878389761009714],"luv":[24.1003299188330615,2.7643624238057809,-84.290041828810061],"rgb":[0.266666666666666663,0,0.66666666666666663],"xyz":[0.0963876941825382166,0.0413113958594566871,0.383210230512237349],"hpluv":[271.878389761009714,444.044033459252,24.1003299188330615],"hsluv":[271.878389761009714,100.000000000000398,24.1003299188330615]},"#4400bb":{"lch":[26.2058661049044161,94.1030045511215434,270.708980538846049],"luv":[26.2058661049044161,1.16440507249082947,-94.0958002589677704],"rgb":[0.266666666666666663,0,0.733333333333333282],"xyz":[0.113525286289874863,0.0481664327023914457,0.473468215610879095],"hpluv":[270.708980538846049,455.663559843794246,26.2058661049044161],"hsluv":[270.708980538846049,100.000000000000597,26.2058661049044161]},"#4400cc":{"lch":[28.3491756730399374,103.84959146554381,269.838851579513857],"luv":[28.3491756730399374,-0.292083914573144032,-103.849180711969012],"rgb":[0.266666666666666663,0,0.8],"xyz":[0.132817661733596604,0.0558833828798802473,0.575074726281149196],"hpluv":[269.838851579513857,464.840204698682,28.3491756730399374],"hsluv":[269.838851579513857,100.00000000000054,28.3491756730399374]},"#4400dd":{"lch":[30.5182871942398464,113.556060117994207,269.175711116484081],"luv":[30.5182871942398464,-1.63362415099869285,-113.544308803456943],"rgb":[0.266666666666666663,0,0.866666666666666696],"xyz":[0.154335987284230147,0.0644907131001337813,0.688404574181155193],"hpluv":[269.175711116484081,472.160320460814546,30.5182871942398464],"hsluv":[269.175711116484081,100.000000000000583,30.5182871942398464]},"#4400ee":{"lch":[32.7041215904695406,123.209994802530275,268.6598990566049],"luv":[32.7041215904695406,-2.88151723804096926,-123.176295112519156],"rgb":[0.266666666666666663,0,0.933333333333333348],"xyz":[0.178148167550404884,0.0740155852066038122,0.813815390249678416],"hpluv":[268.6598990566049,478.060407115886846,32.7041215904695406],"hsluv":[268.6598990566049,100.000000000000682,32.7041215904695406]},"#4400ff":{"lch":[34.8998090420324161,132.803387625161918,268.251574356178935],"luv":[34.8998090420324161,-4.05197057625710322,-132.741558297197031],"rgb":[0.266666666666666663,0,1],"xyz":[0.204319215960236278,0.0844840045705365084,0.951649578541460262],"hpluv":[268.251574356178935,482.864668803745815,34.8998090420324161],"hsluv":[268.251574356178935,100.000000000000824,34.8998090420324161]},"#441100":{"lch":[13.412021407860891,32.8203905090178907,19.8063713084711637],"luv":[13.412021407860891,30.878837797926078,11.1209446277644677],"rgb":[0.266666666666666663,0.0666666666666666657,0],"xyz":[0.025842827819334703,0.0163004897316603795,0.00178555971210972225],"hpluv":[19.8063713084711637,310.519467471828818,13.412021407860891],"hsluv":[19.8063713084711637,100.00000000000226,13.412021407860891]},"#441111":{"lch":[13.6534230745514442,29.3615880370140658,12.1770506300618155],"luv":[13.6534230745514442,28.7009658227648572,6.19333616848069],"rgb":[0.266666666666666663,0.0666666666666666657,0.0666666666666666657],"xyz":[0.0268544933189718248,0.0167051559315152323,0.00711366467686535414],"hpluv":[12.1770506300618155,272.883526996448495,13.6534230745514442],"hsluv":[12.1770506300618155,63.9450685777404857,13.6534230745514442]},"#441122":{"lch":[14.0908014406849,25.4444274015795777,356.558123350094036],"luv":[14.0908014406849,25.3985311285907684,-1.52758053936917793],"rgb":[0.266666666666666663,0.0666666666666666657,0.133333333333333331],"xyz":[0.0287298514574488434,0.0174552991869060536,0.0169905508728445502],"hpluv":[356.558123350094036,229.137575437366081,14.0908014406849],"hsluv":[356.558123350094036,68.4589860949294,14.0908014406849]},"#441133":{"lch":[14.7844111345271223,24.27011571268606,331.648240125609],"luv":[14.7844111345271223,21.358884082162259,-11.5254755854986932],"rgb":[0.266666666666666663,0.0666666666666666657,0.2],"xyz":[0.0318176021899065839,0.0186903994798891665,0.0332527047304557],"hpluv":[331.648240125609,208.308572243058649,14.7844111345271223],"hsluv":[331.648240125609,73.8494669394836762,14.7844111345271223]},"#441144":{"lch":[15.733846020816415,28.3218749128348932,307.715012949243942],"luv":[15.733846020816415,17.3254634530922189,-22.4043949865608347],"rgb":[0.266666666666666663,0.0666666666666666657,0.266666666666666663],"xyz":[0.0362755974341254644,0.0204735975775767395,0.0567314796833423354],"hpluv":[307.715012949243942,228.415952286272613,15.733846020816415],"hsluv":[307.715012949243942,79.0249627886423127,15.733846020816415]},"#441155":{"lch":[16.9210970319156715,36.0495621705848492,292.339268883647492],"luv":[16.9210970319156715,13.7020846665308547,-33.3440220801582683],"rgb":[0.266666666666666663,0.0666666666666666657,0.333333333333333315],"xyz":[0.0422380114734874565,0.0228585631933215724,0.0881335269573162439],"hpluv":[292.339268883647492,270.340308544513618,16.9210970319156715],"hsluv":[292.339268883647492,83.4150097743113292,16.9210970319156715]},"#441166":{"lch":[18.3175541838796221,45.305096001334384,283.521508601515677],"luv":[18.3175541838796221,10.592801308498224,-44.0493392019540195],"rgb":[0.266666666666666663,0.0666666666666666657,0.4],"xyz":[0.0498230072469956348,0.025892561502724884,0.128081171364460206],"hpluv":[283.521508601515677,313.84766122316239,18.3175541838796221],"hsluv":[283.521508601515677,86.9023417707839485,18.3175541838796221]},"#441177":{"lch":[19.8903241139664431,55.0653797371295326,278.304914930180701],"luv":[19.8903241139664431,7.95370312292975612,-54.4879312529533735],"rgb":[0.266666666666666663,0.0666666666666666657,0.466666666666666674],"xyz":[0.0591370202671975473,0.0296181667108057,0.177134973270858115],"hpluv":[278.304914930180701,351.298345972174616,19.8903241139664431],"hsluv":[278.304914930180701,89.590178354910762,19.8903241139664431]},"#441188":{"lch":[21.6068634066631873,64.9598488176177824,275.03199667533886],"luv":[21.6068634066631873,5.69776159856002,-64.7094851716016422],"rgb":[0.266666666666666663,0.0666666666666666657,0.533333333333333326],"xyz":[0.0702774373691413823,0.0340743335515832912,0.235807836674430282],"hpluv":[275.03199667533886,381.498298720028686,21.6068634066631873],"hsluv":[275.03199667533886,91.6417594317348545,21.6068634066631873]},"#441199":{"lch":[23.437698327746169,74.8628785955689153,272.864058339832695],"luv":[23.437698327746169,3.74063102269824954,-74.769367197849931],"rgb":[0.266666666666666663,0.0666666666666666657,0.6],"xyz":[0.0833344014782140818,0.0392971191952124557,0.304574514315548162],"hpluv":[272.864058339832695,405.313331644098525,23.437698327746169],"hsluv":[272.864058339832695,93.2101268622270283,23.437698327746169]},"#4411aa":{"lch":[25.3575925472355337,84.7316846097945273,271.361966301038933],"luv":[25.3575925472355337,2.01394993465393446,-84.7077468858332878],"rgb":[0.266666666666666663,0.0666666666666666657,0.66666666666666663],"xyz":[0.0983920944434666378,0.0453201963813135572,0.383878363932546762],"hpluv":[271.361966301038933,424.011024215555381,25.3575925472355337],"hsluv":[271.361966301038933,94.4180404350203872,25.3575925472355337]},"#4411bb":{"lch":[27.345710117802,94.5503656807627,270.282295464151048],"luv":[27.345710117802,0.465846378280231621,-94.5492180693092337],"rgb":[0.266666666666666663,0.0666666666666666657,0.733333333333333282],"xyz":[0.115529686550803284,0.0521752332242483158,0.474136349031188509],"hpluv":[270.282295464151048,438.746165283595928,27.345710117802],"hsluv":[270.282295464151048,95.3579307613671,27.345710117802]},"#4411cc":{"lch":[29.3852471201757481,104.311620276565549,269.482476007084244],"luv":[29.3852471201757481,-0.942181651797373232,-104.307365120864873],"rgb":[0.266666666666666663,0.0666666666666666657,0.8],"xyz":[0.134822061994525,0.0598921834017371174,0.575742859701458665],"hpluv":[269.482476007084244,450.445933463405538,29.3852471201757481],"hsluv":[269.482476007084244,96.097629526357963,29.3852471201757481]},"#4411dd":{"lch":[31.4628506304707116,114.011096091836691,268.874895171215144],"luv":[31.4628506304707116,-2.23866735310417164,-113.989115272223103],"rgb":[0.266666666666666663,0.0666666666666666657,0.866666666666666696],"xyz":[0.156340387545158555,0.0684995136219906514,0.689072707601464662],"hpluv":[268.874895171215144,459.820552568088715,31.4628506304707116],"hsluv":[268.874895171215144,96.6865382756064378,31.4628506304707116]},"#4411ee":{"lch":[33.5680052377948073,123.64577428881995,268.40345713539682],"luv":[33.5680052377948073,-3.44493495426529961,-123.597774747940718],"rgb":[0.266666666666666663,0.0666666666666666657,0.933333333333333348],"xyz":[0.180152567811333292,0.0780243857284606823,0.814483523669987886],"hpluv":[268.40345713539682,467.404695294247745,33.5680052377948073],"hsluv":[268.40345713539682,97.1606953094382817,33.5680052377948073]},"#4411ff":{"lch":[35.6924730299026081,133.21354134861582,268.030966648817412],"luv":[35.6924730299026081,-4.57713081064657,-133.134884505082312],"rgb":[0.266666666666666663,0.0666666666666666657,1],"xyz":[0.206323616221164685,0.0884928050923933784,0.952317711961769731],"hpluv":[268.030966648817412,473.599309181226886,35.6924730299026081],"hsluv":[268.030966648817412,99.999999999999531,35.6924730299026081]},"#99aa00":{"lch":[66.1528677227115907,74.3468963767982842,94.6234982733471384],"luv":[66.1528677227115907,-5.99293371363564553,74.1049643840839565],"rgb":[0.6,0.66666666666666663,0],"xyz":[0.275106719282890377,0.355217387920677,0.0540714229698005533],"hpluv":[94.6234982733471384,142.611154102436132,66.1528677227115907],"hsluv":[94.6234982733471384,100.000000000002217,66.1528677227115907]},"#99aa11":{"lch":[66.184052262829,73.0311244080130706,94.7508326892346275],"luv":[66.184052262829,-6.04863423256243316,72.7802112955118901],"rgb":[0.6,0.66666666666666663,0.0666666666666666657],"xyz":[0.276118384782527482,0.355622054120531828,0.059399527934556183],"hpluv":[94.7508326892346275,140.021252931940353,66.184052262829],"hsluv":[94.7508326892346275,98.1390759685954,66.184052262829]},"#99aa22":{"lch":[66.2417975711995695,70.6178785015108872,94.9968669170454376],"luv":[66.2417975711995695,-6.15090676716144458,70.3494926065273],"rgb":[0.6,0.66666666666666663,0.133333333333333331],"xyz":[0.277993742921004539,0.356372197375922628,0.0692764141305353826],"hpluv":[94.9968669170454376,135.276352185575888,66.2417975711995695],"hsluv":[94.9968669170454376,94.7283581868373403,66.2417975711995695]},"#99aa33":{"lch":[66.3366981156763273,66.7162457715457,95.432805623918],"luv":[66.3366981156763273,-6.31658226271684953,66.416550937003791],"rgb":[0.6,0.66666666666666663,0.2],"xyz":[0.281081493653462244,0.357607297668905755,0.0855385679881465189],"hpluv":[95.432805623918,127.619510800204154,66.3366981156763273],"hsluv":[95.432805623918,89.220332613511431,66.3366981156763273]},"#99aa44":{"lch":[66.4733277612737652,61.2361369282317085,96.1403021162386],"luv":[66.4733277612737652,-6.55002950525979344,60.8848222414533211],"rgb":[0.6,0.66666666666666663,0.266666666666666663],"xyz":[0.28553948889768116,0.359390495766593321,0.109017342941033157],"hpluv":[96.1403021162386,116.896010950353556,66.4733277612737652],"hsluv":[96.1403021162386,81.495914591183535,66.4733277612737652]},"#99aa55":{"lch":[66.6553605356915853,54.1785870660784568,97.2658616968833769],"luv":[66.6553605356915853,-6.85216039608048888,53.7435316515674231],"rgb":[0.6,0.66666666666666663,0.333333333333333315],"xyz":[0.291501902937043145,0.361775461382338182,0.140419390215007073],"hpluv":[97.2658616968833769,103.141138146130345,66.6553605356915853],"hsluv":[97.2658616968833769,71.5645731506566563,66.6553605356915853]},"#99aa66":{"lch":[66.8857782590742573,45.6318272725976186,99.1048787772859328],"luv":[66.8857782590742573,-7.22087825912546055,45.0568815765480224],"rgb":[0.6,0.66666666666666663,0.4],"xyz":[0.29908689871055133,0.3648094596917415,0.180367034622151035],"hpluv":[99.1048787772859328,86.5711928674077882,66.8857782590742573],"hsluv":[99.1048787772859328,59.5487850828384495,66.8857782590742573]},"#99aa77":{"lch":[67.16697930835997,35.7793898766585272,102.348317274789],"luv":[67.16697930835997,-7.65157453727816339,34.9516544250255947],"rgb":[0.6,0.66666666666666663,0.466666666666666674],"xyz":[0.308400911730753235,0.368535064899822296,0.229420836528548944],"hpluv":[102.348317274789,67.5952906506277742,67.16697930835997],"hsluv":[102.348317274789,45.6652750399669927,67.16697930835997]},"#99aa88":{"lch":[67.5008436530857523,24.9656779050761699,109.02352802026725],"luv":[67.5008436530857523,-8.13772239581267165,23.6021725158659379],"rgb":[0.6,0.66666666666666663,0.533333333333333326],"xyz":[0.319541328832697036,0.372991231740599893,0.288093699932121083],"hpluv":[109.02352802026725,46.9324783865521482,67.5008436530857523],"hsluv":[109.02352802026725,30.201776912068496,67.5008436530857523]},"#99aa99":{"lch":[67.8887769686822509,14.1753245834603039,127.715012949228395],"luv":[67.8887769686822509,-8.67153282620695443,11.213578621049983],"rgb":[0.6,0.66666666666666663,0.6],"xyz":[0.332598292941769791,0.378214017384229051,0.356860377573239],"hpluv":[127.715012949228395,26.4956363039349618,67.8887769686822509],"hsluv":[127.715012949228395,13.4910013502760879,67.8887769686822509]},"#99aaaa":{"lch":[68.3317447891119798,9.45739632834534838,192.177050630059227],"luv":[68.3317447891119798,-9.24460926466251642,-1.99487965930680966],"rgb":[0.6,0.66666666666666663,0.66666666666666663],"xyz":[0.347655985907022291,0.384237094570330173,0.436164227190237619],"hpluv":[192.177050630059227,17.5625836428344968,68.3317447891119798],"hsluv":[192.177050630059227,17.4938385380963979,68.3317447891119798]},"#99aabb":{"lch":[68.8303024285350205,18.6222464744475609,238.07162859052869],"luv":[68.8303024285350205,-9.84853629911531137,-15.8048852105949411],"rgb":[0.6,0.66666666666666663,0.733333333333333282],"xyz":[0.364793578014358966,0.391092131413264932,0.52642221228887931],"hpluv":[238.07162859052869,34.3314162301526622,68.8303024285350205],"hsluv":[238.07162859052869,21.6214176811966929,68.8303024285350205]},"#99aacc":{"lch":[69.3846237501618646,31.7868422871013969,250.758533684062627],"luv":[69.3846237501618646,-10.475354770609286,-30.0111693376804425],"rgb":[0.6,0.66666666666666663,0.8],"xyz":[0.38408595345808072,0.398809081590753733,0.628028722959149466],"hpluv":[250.758533684062627,58.1330991079694357,69.3846237501618646],"hsluv":[250.758533684062627,38.7837447081888556,69.3846237501618646]},"#99aadd":{"lch":[69.9945303682966,45.800012761152324,255.951164454091042],"luv":[69.9945303682966,-11.1178995355210173,-44.4300965432191859],"rgb":[0.6,0.66666666666666663,0.866666666666666696],"xyz":[0.405604279008714208,0.40741641181100724,0.741358570859155463],"hpluv":[255.951164454091042,83.0311057452140346,69.9945303682966],"hsluv":[255.951164454091042,58.1375555879370935,69.9945303682966]},"#99aaee":{"lch":[70.6595219654936,60.0690973767372896,258.700300270425373],"luv":[70.6595219654936,-11.7699993169592201,-58.9046990972259],"rgb":[0.6,0.66666666666666663,0.933333333333333348],"xyz":[0.429416459274889,0.416941283917477257,0.866769386927678687],"hpluv":[258.700300270425373,107.874733956899746,70.6595219654936],"hsluv":[258.700300270425373,78.5353046306170199,70.6595219654936]},"#99aaff":{"lch":[71.378807837336737,74.3523754541628676,260.378973553217],"luv":[71.378807837336737,-12.4265554124673407,-73.3065921746310636],"rgb":[0.6,0.66666666666666663,1],"xyz":[0.455587507684720339,0.42740970328141,1.00460357521946064],"hpluv":[260.378973553217,132.179737350703419,71.378807837336737],"hsluv":[260.378973553217,99.99999999999784,71.378807837336737]},"#442200":{"lch":[17.3350542344952459,28.221345162136295,35.6239292836567927],"luv":[17.3350542344952459,22.9399340369809366,16.4378754448194186],"rgb":[0.266666666666666663,0.133333333333333331,0],"xyz":[0.0295584515541026382,0.023731737201196354,0.00302410095703233277],"hpluv":[35.6239292836567927,206.581692971425213,17.3350542344952459],"hsluv":[35.6239292836567927,100.000000000002331,17.3350542344952459]},"#442211":{"lch":[17.5234603686317101,24.6335663377647,28.604455948929278],"luv":[17.5234603686317101,21.6269347365689519,11.7935696215031331],"rgb":[0.266666666666666663,0.133333333333333331,0.0666666666666666657],"xyz":[0.03057011705373976,0.0241364034010512069,0.00835220592178796337],"hpluv":[28.604455948929278,178.380241443971528,17.5234603686317101],"hsluv":[28.604455948929278,74.2089163354216765,17.5234603686317101]},"#442222":{"lch":[17.8672188947691239,19.9697171584766728,12.1770506300619807],"luv":[17.8672188947691239,19.520407715454283,4.21227800744330061],"rgb":[0.266666666666666663,0.133333333333333331,0.133333333333333331],"xyz":[0.0324454751922167786,0.0248865466564420282,0.0182290921177671594],"hpluv":[12.1770506300619807,141.825486578211439,17.8672188947691239],"hsluv":[12.1770506300619807,33.2341074785113406,17.8672188947691239]},"#442233":{"lch":[18.4184657925371695,17.8165085202964129,340.00784749027008],"luv":[18.4184657925371695,16.7428760354525643,-6.09131167444770583],"rgb":[0.266666666666666663,0.133333333333333331,0.2],"xyz":[0.0355332259246745191,0.026121646949425141,0.0344912459753783],"hpluv":[340.00784749027008,122.746318288975218,18.4184657925371695],"hsluv":[340.00784749027008,42.0888291674463915,18.4184657925371695]},"#442244":{"lch":[19.1844846541763658,22.4593922221866436,307.715012949244738],"luv":[19.1844846541763658,13.7391814744519145,-17.7668002578431441],"rgb":[0.266666666666666663,0.133333333333333331,0.266666666666666663],"xyz":[0.0399912211688934,0.0279048450471127141,0.0579700209282649412],"hpluv":[307.715012949244738,148.554970924606664,19.1844846541763658],"hsluv":[307.715012949244738,51.3954955066877517,19.1844846541763658]},"#442255":{"lch":[20.1595909359386596,31.6741463862469885,290.023039430837684],"luv":[20.1595909359386596,10.8451637140407797,-29.7596030436068872],"rgb":[0.266666666666666663,0.133333333333333331,0.333333333333333315],"xyz":[0.0459536352082553917,0.030289810662857547,0.0893720682022388496],"hpluv":[290.023039430837684,199.371249454156271,20.1595909359386596],"hsluv":[290.023039430837684,59.9942694866150177,20.1595909359386596]},"#442266":{"lch":[21.3287002071660226,42.3208084503031685,281.207510247893651],"luv":[21.3287002071660226,8.22559640374024781,-41.5137373852322256],"rgb":[0.266666666666666663,0.133333333333333331,0.4],"xyz":[0.0535386309817635631,0.0333238089722608585,0.129319712609382825],"hpluv":[281.207510247893651,251.784442505332123,21.3287002071660226],"hsluv":[281.207510247893651,67.3437899952651406,21.3287002071660226]},"#442277":{"lch":[22.6709734328231463,53.1747129073287113,276.391210783405313],"luv":[22.6709734328231463,5.91922219198187882,-52.8442324328661215],"rgb":[0.266666666666666663,0.133333333333333331,0.466666666666666674],"xyz":[0.0628526440019654825,0.0370494141803416749,0.178373514515780734],"hpluv":[276.391210783405313,297.628360698128461,22.6709734328231463],"hsluv":[276.391210783405313,73.3546851738733,22.6709734328231463]},"#442288":{"lch":[24.1630625686767715,63.8732961962266543,273.501787345358252],"luv":[24.1630625686767715,3.90136026108148481,-63.7540379512086801],"rgb":[0.266666666666666663,0.133333333333333331,0.533333333333333326],"xyz":[0.0739930611039093106,0.0415055810211192727,0.237046377919352902],"hpluv":[273.501787345358252,335.433687598002,24.1630625686767715],"hsluv":[273.501787345358252,78.1624380374364875,24.1630625686767715]},"#442299":{"lch":[25.7815797239733442,74.3421908873045112,271.638748742297366],"luv":[25.7815797239733442,2.1260128283266071,-74.3117851715204836],"rgb":[0.266666666666666663,0.133333333333333331,0.6],"xyz":[0.087050025212982024,0.0467283666647484303,0.305813055560470781],"hpluv":[271.638748742297366,365.902315457699217,25.7815797239733442],"hsluv":[271.638748742297366,81.974423252689391,25.7815797239733442]},"#4422aa":{"lch":[27.5046927955253,84.5952413694672885,270.370058715866037],"luv":[27.5046927955253,0.546375125789773097,-84.5934769150692176],"rgb":[0.266666666666666663,0.133333333333333331,0.66666666666666663],"xyz":[0.102107718178234566,0.0527514438508495317,0.385116905177469382],"hpluv":[270.370058715866037,390.281946032504152,27.5046927955253],"hsluv":[270.370058715866037,84.9950544768410765,27.5046927955253]},"#4422bb":{"lch":[29.3129652277151251,94.666070770970677,269.4687873747244],"luv":[29.3129652277151251,-0.87767531850734,-94.6620020982533],"rgb":[0.266666666666666663,0.133333333333333331,0.733333333333333282],"xyz":[0.119245310285571213,0.0596064806937842903,0.475374890276111128],"hpluv":[269.4687873747244,409.801860030343846,29.3129652277151251],"hsluv":[269.4687873747244,87.3984435941311517,29.3129652277151251]},"#4422cc":{"lch":[31.1896477872922873,104.586362634530047,268.806646243455475],"luv":[31.1896477872922873,-2.17816227055809408,-104.563678484665701],"rgb":[0.266666666666666663,0.133333333333333331,0.8],"xyz":[0.138537685729292953,0.0673234308712731,0.576981400946381284],"hpluv":[268.806646243455475,425.504262664631483,31.1896477872922873],"hsluv":[268.806646243455475,89.3235413687926325,31.1896477872922873]},"#4422dd":{"lch":[33.1206275871571,114.38069493574325,268.306702684458742],"luv":[33.1206275871571,-3.37987077956927,-114.330747603157818],"rgb":[0.266666666666666663,0.133333333333333331,0.866666666666666696],"xyz":[0.160056011279926497,0.0759307610915266329,0.690311248846387282],"hpluv":[268.306702684458742,438.22131720165,33.1206275871571],"hsluv":[268.306702684458742,90.877884626449017,33.1206275871571]},"#4422ee":{"lch":[35.0941942457284952,124.066768949832422,267.920557621455941],"luv":[35.0941942457284952,-4.50178121539094178,-123.985068147498538],"rgb":[0.266666666666666663,0.133333333333333331,0.933333333333333348],"xyz":[0.183868191546101234,0.0854556331979966499,0.815722064914910505],"hpluv":[267.920557621455941,448.600262181889605,35.0941942457284952],"hsluv":[267.920557621455941,93.3452679661598523,35.0941942457284952]},"#4422ff":{"lch":[37.1007304630435,133.656986375695226,267.616535799179189],"luv":[37.1007304630435,-5.55843332369103926,-133.54135623850334],"rgb":[0.266666666666666663,0.133333333333333331,1],"xyz":[0.210039239955932627,0.0959240525619293599,0.95355625320669235],"hpluv":[267.616535799179189,457.139270395610822,37.1007304630435],"hsluv":[267.616535799179189,99.999999999999531,37.1007304630435]},"#bbaa00":{"lch":[68.9787767407419,76.4078567958722346,76.7962953219783344],"luv":[68.9787767407419,17.4526104568015299,74.3879490803561652],"rgb":[0.733333333333333282,0.66666666666666663,0],"xyz":[0.348671553863065253,0.393149255751080451,0.0575197745907461769],"hpluv":[76.7962953219783344,140.560034871296551,68.9787767407419],"hsluv":[76.7962953219783344,100.000000000002245,68.9787767407419]},"#bbaa11":{"lch":[69.0079227935645747,75.1793224892161902,76.6760735029220797],"luv":[69.0079227935645747,17.325534429098667,73.1556996185784811],"rgb":[0.733333333333333282,0.66666666666666663,0.0666666666666666657],"xyz":[0.349683219362702358,0.393553921950935304,0.0628478795555018],"hpluv":[76.6760735029220797,138.241608756115426,69.0079227935645747],"hsluv":[76.6760735029220797,98.327691673723,69.0079227935645747]},"#bbaa22":{"lch":[69.0618990033698168,72.923722885125926,76.4446579961253718],"luv":[69.0618990033698168,17.0921879270318975,70.8923583420220496],"rgb":[0.733333333333333282,0.66666666666666663,0.133333333333333331],"xyz":[0.351558577501179415,0.394304065206326104,0.072724765751481],"hpluv":[76.4446579961253718,133.98915323660276,69.0618990033698168],"hsluv":[76.4446579961253718,95.2591470849694701,69.0618990033698168]},"#bbaa33":{"lch":[69.1506211183474448,69.2704933393546298,76.037430434814425],"luv":[69.1506211183474448,16.7141363744442764,67.2237970716773248],"rgb":[0.733333333333333282,0.66666666666666663,0.2],"xyz":[0.35464632823363712,0.395539165499309231,0.0889869196090921494],"hpluv":[76.037430434814425,127.113454601419591,69.1506211183474448],"hsluv":[76.037430434814425,90.2940538071316752,69.1506211183474448]},"#bbaa44":{"lch":[69.2783900215706439,64.125663575375043,75.3840533289293688],"luv":[69.2783900215706439,16.1813855024742246,62.0504914743025964],"rgb":[0.733333333333333282,0.66666666666666663,0.266666666666666663],"xyz":[0.359104323477856036,0.397322363596996797,0.112465694561978788],"hpluv":[75.3840533289293688,117.455514697890109,69.2783900215706439],"hsluv":[75.3840533289293688,83.3108908827552455,69.2783900215706439]},"#bbaa55":{"lch":[69.4486803199850158,57.4759826537307603,74.3632861967268752],"luv":[69.4486803199850158,15.4919003466967737,55.3487994961044762],"rgb":[0.733333333333333282,0.66666666666666663,0.333333333333333315],"xyz":[0.365066737517218,0.399707329212741658,0.143867741835952689],"hpluv":[74.3632861967268752,105.017514149864908,69.4486803199850158],"hsluv":[74.3632861967268752,74.2978448337225501,69.4486803199850158]},"#bbaa66":{"lch":[69.6643364030220766,49.3851711615203186,72.7428070953876],"luv":[69.6643364030220766,14.6506772614363818,47.1619845472377079],"rgb":[0.733333333333333282,0.66666666666666663,0.4],"xyz":[0.372651733290726206,0.402741327522145,0.183815386243096651],"hpluv":[72.7428070953876,89.9550160304510342,69.6643364030220766],"hsluv":[72.7428070953876,63.3404983901227254,69.6643364030220766]},"#bbaa77":{"lch":[69.927675331165787,39.998456174204172,70.017617272721],"luv":[69.927675331165787,13.6687200676018641,37.5904587366697314],"rgb":[0.733333333333333282,0.66666666666666663,0.466666666666666674],"xyz":[0.381965746310928111,0.406466932730225772,0.23286918814949456],"hpluv":[70.017617272721,72.5827577171275635,69.927675331165787],"hsluv":[70.017617272721,50.6076787731359303,69.927675331165787]},"#bbaa88":{"lch":[70.2405480333122,29.5797452752191568,64.8698942165899837],"luv":[70.2405480333122,12.5617839686329518,26.7798975739685403],"rgb":[0.733333333333333282,0.66666666666666663,0.533333333333333326],"xyz":[0.393106163412871912,0.41092309957100337,0.291542051553066728],"hpluv":[64.8698942165899837,53.4374671266607422,70.2405480333122],"hsluv":[64.8698942165899837,36.3337734813298923,70.2405480333122]},"#bbaa99":{"lch":[70.6043801086793,18.7359983934483161,52.7186742094296079],"luv":[70.6043801086793,11.3489394865138475,14.907689570511744],"rgb":[0.733333333333333282,0.66666666666666663,0.6],"xyz":[0.406163127521944611,0.416145885214632527,0.360308729194184663],"hpluv":[52.7186742094296079,33.6732102985619051,70.6043801086793],"hsluv":[52.7186742094296079,20.7983697782308,70.6043801086793]},"#bbaaaa":{"lch":[71.0202025015365876,10.2824341490213804,12.177050630064155],"luv":[71.0202025015365876,10.0510841141786607,2.16890759569567715],"rgb":[0.733333333333333282,0.66666666666666663,0.66666666666666663],"xyz":[0.421220820487197167,0.422168962400733649,0.439612578811183263],"hpluv":[12.177050630064155,18.3718697222702261,71.0202025015365876],"hsluv":[12.177050630064155,12.5020210815887047,71.0202025015365876]},"#bbaabb":{"lch":[71.4886774714552615,14.2047670368859897,307.715012949256788],"luv":[71.4886774714552615,8.68954378602241562,-11.236869464535129],"rgb":[0.733333333333333282,0.66666666666666663,0.733333333333333282],"xyz":[0.438358412594533842,0.429023999243668408,0.529870563909825],"hpluv":[307.715012949256788,25.2136766683934965,71.4886774714552615],"hsluv":[307.715012949256788,14.1682246563909,71.4886774714552615]},"#bbaacc":{"lch":[72.010122844957138,26.1519063744379174,286.174295641089373],"luv":[72.010122844957138,7.28488198445553525,-25.1167812724863673],"rgb":[0.733333333333333282,0.66666666666666663,0.8],"xyz":[0.45765078803825554,0.43674094942115721,0.631477074580095166],"hpluv":[286.174295641089373,46.0838895939184923,72.010122844957138],"hsluv":[286.174295641089373,33.6938059680335442,72.010122844957138]},"#bbaadd":{"lch":[72.5845361735228494,39.7272427931479,278.476565574149959],"luv":[72.5845361735228494,5.85598959517198825,-39.2932717625671799],"rgb":[0.733333333333333282,0.66666666666666663,0.866666666666666696],"xyz":[0.47916911358888914,0.445348279641410716,0.744806922480101163],"hpluv":[278.476565574149959,69.451822258827633,72.5845361735228494],"hsluv":[278.476565574149959,54.5084651382981775,72.5845361735228494]},"#bbaaee":{"lch":[73.2116196006959825,53.7916684525604,274.71268656160521],"luv":[73.2116196006959825,4.41947960396952144,-53.6098106221266093],"rgb":[0.733333333333333282,0.66666666666666663,0.933333333333333348],"xyz":[0.502981293855063849,0.454873151747880733,0.870217738548624387],"hpluv":[274.71268656160521,93.2340021292866084,73.2116196006959825],"hsluv":[274.71268656160521,76.5987468488048506,73.2116196006959825]},"#bbaaff":{"lch":[73.8908057188696574,67.9996555049746121,272.519622378571285],"luv":[73.8908057188696574,2.98936916429642707,-67.9339150998584671],"rgb":[0.733333333333333282,0.66666666666666663,1],"xyz":[0.52915234226489527,0.465341571111813457,1.00805192684040623],"hpluv":[272.519622378571285,116.776549017196231,73.8908057188696574],"hsluv":[272.519622378571285,99.9999999999974847,73.8908057188696574]},"#99bb00":{"lch":[71.0859361318702696,82.3913749493211327,101.26222245755217],"luv":[71.0859361318702696,-16.0909976916487061,80.8048170552163185],"rgb":[0.6,0.733333333333333282,0],"xyz":[0.309061217191489157,0.423126383737875533,0.0653895889393331653],"hpluv":[101.26222245755217,147.074503152999483,71.0859361318702696],"hsluv":[101.26222245755217,100.000000000002302,71.0859361318702696]},"#99bb11":{"lch":[71.1136894680978457,81.2167121813616291,101.442926834262664],"luv":[71.1136894680978457,-16.1127230849120338,79.6023523040561685],"rgb":[0.6,0.733333333333333282,0.0666666666666666657],"xyz":[0.310072882691126261,0.423531049937730386,0.0707176939040888],"hpluv":[101.442926834262664,144.921066000062638,71.1136894680978457],"hsluv":[101.442926834262664,98.4331733262411,71.1136894680978457]},"#99bb22":{"lch":[71.1650900316793837,79.0601549481488917,101.789083890819583],"luv":[71.1650900316793837,-16.1527448632600859,77.392486287802754],"rgb":[0.6,0.733333333333333282,0.133333333333333331],"xyz":[0.311948240829603318,0.424281193193121187,0.080594580100068],"hpluv":[101.789083890819583,140.971066242853169,71.1650900316793837],"hsluv":[101.789083890819583,95.5563304227746357,71.1650900316793837]},"#99bb33":{"lch":[71.2495884989653,75.5680342451554168,102.392870056849247],"luv":[71.2495884989653,-16.2179420391938294,73.807222923575253],"rgb":[0.6,0.733333333333333282,0.2],"xyz":[0.315035991562061,0.425516293486104313,0.0968567339576791309],"hpluv":[102.392870056849247,134.584514176993849,71.2495884989653],"hsluv":[102.392870056849247,90.8963478676004826,71.2495884989653]},"#99bb44":{"lch":[71.3712967033779648,70.652786516275043,103.347443045401377],"luv":[71.3712967033779648,-16.3105834167977157,68.7443169368786471],"rgb":[0.6,0.733333333333333282,0.266666666666666663],"xyz":[0.319493986806279939,0.427299491583791879,0.120335508910565769],"hpluv":[103.347443045401377,125.616021445862458,71.3712967033779648],"hsluv":[103.347443045401377,84.331672265085615,71.3712967033779648]},"#99bb55":{"lch":[71.5335490617920442,64.3081830776187502,104.804237401434776],"luv":[71.5335490617920442,-16.4318507493525949,62.1734404042074189],"rgb":[0.6,0.733333333333333282,0.333333333333333315],"xyz":[0.325456400845641924,0.42968445719953674,0.151737556184539685],"hpluv":[104.804237401434776,114.076396323867073,71.5335490617920442],"hsluv":[104.804237401434776,75.8403293762878263,71.5335490617920442]},"#99bb66":{"lch":[71.7390905918245494,56.6109161874071347,107.032342660002968],"luv":[71.7390905918245494,-16.5819871692753225,54.1279367156704367],"rgb":[0.6,0.733333333333333282,0.4],"xyz":[0.33304139661915011,0.432718455508940059,0.191685200591683647],"hpluv":[107.032342660002968,100.134479122606095,71.7390905918245494],"hsluv":[107.032342660002968,65.4891515707011,71.7390905918245494]},"#99bb77":{"lch":[71.9901757540345102,47.73532562127712,110.555323727161408],"luv":[71.9901757540345102,-16.7604289857032249,44.6961892378372099],"rgb":[0.6,0.733333333333333282,0.466666666666666674],"xyz":[0.342355409639352,0.436444060717020854,0.240739002498081556],"hpluv":[110.555323727161408,84.1406731320706,71.9901757540345102],"hsluv":[110.555323727161408,53.4218452589237,71.9901757540345102]},"#99bb88":{"lch":[72.2886271035685581,38.007890289968195,116.511646356383693],"luv":[72.2886271035685581,-16.9659512259030869,34.0111191126451473],"rgb":[0.6,0.733333333333333282,0.533333333333333326],"xyz":[0.353495826741295815,0.440900227557798452,0.299411865901653695],"hpluv":[116.511646356383693,66.7180145269523592,72.2886271035685581],"hsluv":[116.511646356383693,39.8440619041218724,72.2886271035685581]},"#99bb99":{"lch":[72.6358740128595315,28.1115962970155238,127.715012949234961],"luv":[72.6358740128595315,-17.1968288028560856,22.2380512970816788],"rgb":[0.6,0.733333333333333282,0.6],"xyz":[0.366552790850368515,0.44612301320142761,0.36817854354277163],"hpluv":[127.715012949234961,49.1104221429672094,72.6358740128595315],"hsluv":[127.715012949234961,25.0059581073328268,72.6358740128595315]},"#99bbaa":{"lch":[73.0329812495468929,19.8989345424194468,151.280397210880039],"luv":[73.0329812495468929,-17.4510036711552878,9.56190706882358654],"rgb":[0.6,0.733333333333333282,0.66666666666666663],"xyz":[0.381610483815621071,0.452146090387528732,0.447482393159770231],"hpluv":[151.280397210880039,34.5740392557976648,73.0329812495468929],"hsluv":[151.280397210880039,28.0327457551748473,73.0329812495468929]},"#99bbbb":{"lch":[73.4806726048520602,18.1342571597367979,192.177050630060279],"luv":[73.4806726048520602,-17.7262447217336288,-3.82511840348453136],"rgb":[0.6,0.733333333333333282,0.733333333333333282],"xyz":[0.398748075922957745,0.45900112723046349,0.537740378258412],"hpluv":[192.177050630060279,31.3159775944509384,73.4806726048520602],"hsluv":[192.177050630060279,31.1933976709334857,73.4806726048520602]},"#99bbcc":{"lch":[73.9793524714423,25.2831678504957686,224.541830016242],"luv":[73.9793524714423,-18.0202882726228886,-17.734367401402082],"rgb":[0.6,0.733333333333333282,0.8],"xyz":[0.418040451366679444,0.466718077407952292,0.639346888928682189],"hpluv":[224.541830016242,43.3670907410057183,73.9793524714423],"hsluv":[224.541830016242,34.4349286550277398,73.9793524714423]},"#99bbdd":{"lch":[74.5291269946933284,36.8692317824205347,240.185846709470951],"luv":[74.5291269946933284,-18.3309507682094441,-31.9893184697537762],"rgb":[0.6,0.733333333333333282,0.866666666666666696],"xyz":[0.439558776917313043,0.475325407628205798,0.752676736828688187],"hpluv":[240.185846709470951,62.7736499155611796,74.5291269946933284],"hsluv":[240.185846709470951,50.9371920612126914,74.5291269946933284]},"#99bbee":{"lch":[75.129825653719962,50.0395173115419851,248.109771752659725],"luv":[75.129825653719962,-18.6562099892881648,-46.4316607672792],"rgb":[0.6,0.733333333333333282,0.933333333333333348],"xyz":[0.463370957183487753,0.484850279734675815,0.87808755289721141],"hpluv":[248.109771752659725,84.5162185097210568,75.129825653719962],"hsluv":[248.109771752659725,74.708817528734329,75.129825653719962]},"#99bbff":{"lch":[75.7810236401202104,63.8171103470632701,252.684342225014],"luv":[75.7810236401202104,-18.9942553989637197,-60.9248868270445527],"rgb":[0.6,0.733333333333333282,1],"xyz":[0.489542005593319174,0.495318699098608539,1.01592174118899314],"hpluv":[252.684342225014,106.860202909060845,75.7810236401202104],"hsluv":[252.684342225014,99.9999999999971,75.7810236401202104]},"#443300":{"lch":[22.2907133772276609,26.4379209369795269,61.2454831359909],"luv":[22.2907133772276609,12.7181702882918319,23.1778300966244757],"rgb":[0.266666666666666663,0.2,0],"xyz":[0.0356761736431134499,0.0359671813792181508,0.00506334165336921362],"hpluv":[61.2454831359909,150.502134175174433,22.2907133772276609],"hsluv":[61.2454831359909,100.000000000002217,22.2907133772276609]},"#443311":{"lch":[22.433780901835803,22.5495741902090607,57.6291729330006959],"luv":[22.433780901835803,12.072970412625418,19.0453847841311372],"rgb":[0.266666666666666663,0.2,0.0666666666666666657],"xyz":[0.0366878391427505751,0.0363718475790730036,0.0103914466181248451],"hpluv":[57.6291729330006959,127.548453681164943,22.433780901835803],"hsluv":[57.6291729330006959,82.4396262904162853,22.433780901835803]},"#443322":{"lch":[22.6962080128251955,16.3034653251506185,47.6268315603120129],"luv":[22.6962080128251955,10.9878263584328284,12.044527949459761],"rgb":[0.266666666666666663,0.2,0.133333333333333331],"xyz":[0.0385631972812275903,0.037121990834463825,0.0202683328141040411],"hpluv":[47.6268315603120129,91.1519465603444,22.6962080128251955],"hsluv":[47.6268315603120129,53.1527363908354289,22.6962080128251955]},"#443333":{"lch":[23.1206934094119845,9.67437860897999613,12.1770506300626202],"luv":[23.1206934094119845,9.4567095438703852,2.04064844418642899],"rgb":[0.266666666666666663,0.2,0.2],"xyz":[0.0416509480136853308,0.0383570911274469378,0.0365304866717151844],"hpluv":[12.1770506300626202,53.0959690287213917,23.1206934094119845],"hsluv":[12.1770506300626202,12.4420312875371923,23.1206934094119845]},"#443344":{"lch":[23.7177668131648574,12.5269391023357528,307.715012949247694],"luv":[23.7177668131648574,7.66315882209806354,-9.90960141180911],"rgb":[0.266666666666666663,0.2,0.266666666666666663],"xyz":[0.0461089432579042113,0.0401402892251345109,0.0600092616246018229],"hpluv":[307.715012949247694,67.0209373905010608,23.7177668131648574],"hsluv":[307.715012949247694,23.1872031280306743,23.7177668131648574]},"#443355":{"lch":[24.4893027034144382,23.4497607107203301,284.299245815683662],"luv":[24.4893027034144382,5.79176863833153277,-22.7232632654309157],"rgb":[0.266666666666666663,0.2,0.333333333333333315],"xyz":[0.0520713572972662,0.0425252548408793438,0.0914113088985757383],"hpluv":[284.299245815683662,121.507006770462795,24.4893027034144382],"hsluv":[284.299245815683662,34.0172562824217479,24.4893027034144382]},"#443366":{"lch":[25.4301832846655458,35.8361728283181407,276.366541048647719],"luv":[25.4301832846655458,3.97382245046802396,-35.6151655634680964],"rgb":[0.266666666666666663,0.2,0.4],"xyz":[0.0596563530707743817,0.0455592531502826553,0.1313589533057197],"hpluv":[276.366541048647719,178.818092823782393,25.4301832846655458],"hsluv":[276.366541048647719,44.0521665839457555,25.4301832846655458]},"#443377":{"lch":[26.5300434901181958,48.2102429207408818,272.708376965990851],"luv":[26.5300434901181958,2.27805419202829862,-48.1563909733176416],"rgb":[0.266666666666666663,0.2,0.466666666666666674],"xyz":[0.0689703660909762872,0.0492848583583634717,0.180412755212117609],"hpluv":[272.708376965990851,230.590114205629249,26.5300434901181958],"hsluv":[272.708376965990851,52.8563285469964583,26.5300434901181958]},"#443388":{"lch":[27.7750487339787355,60.1896827108213373,270.691543734184165],"luv":[27.7750487339787355,0.726454682878815761,-60.1852986070773568],"rgb":[0.266666666666666663,0.2,0.533333333333333326],"xyz":[0.0801107831929201153,0.0537410251991410626,0.239085618615689777],"hpluv":[270.691543734184165,274.983446475144433,27.7750487339787355],"hsluv":[270.691543734184165,60.324174233719404,27.7750487339787355]},"#443399":{"lch":[29.1495234429961272,71.6961686956082218,269.452076389218803],"luv":[29.1495234429961272,-0.685625105343165342,-71.6928903298230438],"rgb":[0.266666666666666663,0.2,0.6],"xyz":[0.0931677473019928426,0.058963810842770227,0.307852296256807656],"hpluv":[269.452076389218803,312.107220431461315,29.1495234429961272],"hsluv":[269.452076389218803,66.5368599437509,29.1495234429961272]},"#4433aa":{"lch":[30.6372824460415245,82.7612763398458924,268.632918119842316],"luv":[30.6372824460415245,-1.97450330946598829,-82.7377193188284821],"rgb":[0.266666666666666663,0.2,0.66666666666666663],"xyz":[0.108225440267245371,0.0649868880288713285,0.387156145873806257],"hpluv":[268.632918119842316,342.78062465137026,30.6372824460415245],"hsluv":[268.632918119842316,71.6553387322885698,30.6372824460415245]},"#4433bb":{"lch":[32.2226022397772525,93.4505902198726375,268.062492493372758],"luv":[32.2226022397772525,-3.15951219941267691,-93.3971642776391633],"rgb":[0.266666666666666663,0.2,0.733333333333333282],"xyz":[0.125363032374582017,0.0718419248718060871,0.477414130972448],"hpluv":[268.062492493372758,368.010970109266054,32.2226022397772525],"hsluv":[268.062492493372758,75.8581190135042789,32.2226022397772525]},"#4433cc":{"lch":[33.8908458580626331,103.832026214070311,267.649236367220567],"luv":[33.8908458580626331,-4.25888397543315911,-103.744646006447894],"rgb":[0.266666666666666663,0.2,0.8],"xyz":[0.144655407818303772,0.0795588750492948887,0.579020641642718159],"hpluv":[267.649236367220567,388.765974213008576,33.8908458580626331],"hsluv":[267.649236367220567,79.3114034284002,33.8908458580626331]},"#4433dd":{"lch":[35.628800942302739,113.96424557581804,267.340372831489958],"luv":[35.628800942302739,-5.28823530427115518,-113.841485571087048],"rgb":[0.266666666666666663,0.2,0.866666666666666696],"xyz":[0.166173733368937315,0.0881662052695484227,0.692350489542724157],"hpluv":[267.340372831489958,405.888493424646128,35.628800942302739],"hsluv":[267.340372831489958,85.5677988674314,35.628800942302739]},"#4433ee":{"lch":[37.4248062251042484,123.894025620863303,267.103630337901393],"luv":[37.4248062251042484,-6.26032296204841732,-123.73575853791813],"rgb":[0.266666666666666663,0.2,0.933333333333333348],"xyz":[0.189985913635112053,0.0976910773760184536,0.81776130561124738],"hpluv":[267.103630337901393,420.078186698807599,37.4248062251042484],"hsluv":[267.103630337901393,92.6566888343209,37.4248062251042484]},"#4433ff":{"lch":[39.2687372084732473,133.657198385904053,266.918330051954797],"luv":[39.2687372084732473,-7.18532525912719411,-133.4639193988003],"rgb":[0.266666666666666663,0.2,1],"xyz":[0.216156962044943446,0.10815949673995115,0.955595493903029225],"hpluv":[266.918330051954797,431.901531941155895,39.2687372084732473],"hsluv":[266.918330051954797,99.99999999999946,39.2687372084732473]},"#bbbb00":{"lch":[73.6141498101152223,81.1522849996882485,85.8743202181747591],"luv":[73.6141498101152223,5.83845950082822274,80.9419900380996],"rgb":[0.733333333333333282,0.733333333333333282,0],"xyz":[0.382626051771664,0.461058251568279,0.0688379405602788],"hpluv":[85.8743202181747591,139.887458074797564,73.6141498101152223],"hsluv":[85.8743202181747591,100.000000000002331,73.6141498101152223]},"#bbbb11":{"lch":[73.6403599567658205,80.0195247391518478,85.8743202181747449],"luv":[73.6403599567658205,5.75696364516240155,79.8121651696532695],"rgb":[0.733333333333333282,0.733333333333333282,0.0666666666666666657],"xyz":[0.383637717271301082,0.461462917768133862,0.0741660455250344325],"hpluv":[85.8743202181747449,137.885751829634614,73.6403599567658205],"hsluv":[85.8743202181747449,98.5690595334933732,73.6403599567658205]},"#bbbb22":{"lch":[73.6889060807276763,77.9361940700347873,85.8743202181746597],"luv":[73.6889060807276763,5.60707948923862176,77.7342331648256817],"rgb":[0.733333333333333282,0.733333333333333282,0.133333333333333331],"xyz":[0.385513075409778139,0.462213061023524663,0.0840429317210136251],"hpluv":[85.8743202181746597,134.207383902194948,73.6889060807276763],"hsluv":[85.8743202181746597,95.9395400768792541,73.6889060807276763]},"#bbbb33":{"lch":[73.768722281637082,74.5519121144895536,85.8743202181745318],"luv":[73.768722281637082,5.36359906059884217,74.3587211095223],"rgb":[0.733333333333333282,0.733333333333333282,0.2],"xyz":[0.388600826142235845,0.46344816131650779,0.100305085578624775],"hpluv":[85.8743202181745318,128.24069174643796,73.768722281637082],"hsluv":[85.8743202181745318,91.6741883163470419,73.768722281637082]},"#bbbb44":{"lch":[73.8837085661944144,69.7637661309282464,85.8743202181743328],"luv":[73.8837085661944144,5.01911835485944824,69.5829829463408629],"rgb":[0.733333333333333282,0.733333333333333282,0.266666666666666663],"xyz":[0.39305882138645476,0.465231359414195356,0.123783860531511414],"hpluv":[85.8743202181743328,119.817583791868643,73.8837085661944144],"hsluv":[85.8743202181743328,85.652842249664161,73.8837085661944144]},"#bbbb55":{"lch":[74.0370403615741,63.5337415760462747,85.8743202181740628],"luv":[74.0370403615741,4.57090243520957262,63.3691026414263376],"rgb":[0.733333333333333282,0.733333333333333282,0.333333333333333315],"xyz":[0.399021235425816745,0.467616325029940216,0.155185907805485301],"hpluv":[85.8743202181740628,108.891682763750694,74.0370403615741],"hsluv":[85.8743202181740628,77.8423486010655239,74.0370403615741]},"#bbbb66":{"lch":[74.2313474843288361,55.8815023675101799,85.8743202181735512],"luv":[74.2313474843288361,4.02036601211528843,55.7366931561128212],"rgb":[0.733333333333333282,0.733333333333333282,0.4],"xyz":[0.40660623119932493,0.470650323339343535,0.195133552212629291],"hpluv":[85.8743202181735512,95.5256619678334857,74.2313474843288361],"hsluv":[85.8743202181735512,68.2875100330713138,74.2313474843288361]},"#bbbb77":{"lch":[74.468808451125966,46.8772880877030289,85.8743202181728549],"luv":[74.468808451125966,3.37256243628739805,46.7558120565865849],"rgb":[0.733333333333333282,0.733333333333333282,0.466666666666666674],"xyz":[0.415920244219526836,0.47437592854742433,0.2441873541190272],"hpluv":[85.8743202181728549,79.8780401793102328,74.468808451125966],"hsluv":[85.8743202181728549,57.1016453359253688,74.468808451125966]},"#bbbb88":{"lch":[74.7512063572608128,36.6333476151433146,85.874320218171647],"luv":[74.7512063572608128,2.63556739569020726,36.5384173438683746],"rgb":[0.733333333333333282,0.733333333333333282,0.533333333333333326],"xyz":[0.427060661321470636,0.478832095388201928,0.30286021752259934],"hpluv":[85.874320218171647,62.1867310089120195,74.7512063572608128],"hsluv":[85.874320218171647,44.4548295213588744,74.7512063572608128]},"#bbbb99":{"lch":[75.079965438194165,25.2938928616919938,85.8743202181691316],"luv":[75.079965438194165,1.81975614231989979,25.2283472245258693],"rgb":[0.733333333333333282,0.733333333333333282,0.6],"xyz":[0.440117625430543336,0.484054881031831086,0.371626895163717275],"hpluv":[85.8743202181691316,42.7494899193068392,75.079965438194165],"hsluv":[85.8743202181691316,30.559916169503893,75.079965438194165]},"#bbbbaa":{"lch":[75.4561775549407372,13.0242335847304886,85.8743202181613583],"luv":[75.4561775549407372,0.937021801842234714,12.9904830784884187],"rgb":[0.733333333333333282,0.733333333333333282,0.66666666666666663],"xyz":[0.455175318395795891,0.490077958217932208,0.450930744780715875],"hpluv":[85.8743202181613583,21.9026519543336242,75.4561775549407372],"hsluv":[85.8743202181613583,15.6573378741524305,75.4561775549407372]},"#bbbbbb":{"lch":[75.8806235332097856,3.97454725928322e-12,0],"luv":[75.8806235332097856,3.75098259432623098e-12,1.31421287976393485e-12],"rgb":[0.733333333333333282,0.733333333333333282,0.733333333333333282],"xyz":[0.472312910503132566,0.496932995060866967,0.541188729879357622],"hpluv":[0,6.64654731741433278e-12,75.8806235332097856],"hsluv":[0,6.51507609526145538e-12,75.8806235332097856]},"#bbbbcc":{"lch":[76.3537921403793,13.6026726964261613,265.874320218192793],"luv":[76.3537921403793,-0.97863730689855577,-13.5674232449512715],"rgb":[0.733333333333333282,0.733333333333333282,0.8],"xyz":[0.491605285946854265,0.504649945238355713,0.642795240549627778],"hpluv":[265.874320218192793,23.0577392955455913,76.3537921403793],"hsluv":[265.874320218192793,22.3559583930985184,76.3537921403793]},"#bbbbdd":{"lch":[76.875898300454,27.6153317552162676,265.874320218184891],"luv":[76.875898300454,-1.98677087225565296,-27.543770429115412],"rgb":[0.733333333333333282,0.733333333333333282,0.866666666666666696],"xyz":[0.513123611497487864,0.51325727545860933,0.756125088449633775],"hpluv":[265.874320218184891,48.094692651754464,76.875898300454],"hsluv":[265.874320218184891,46.4508399898830717,76.875898300454]},"#bbbbee":{"lch":[77.4469014383288794,41.8833893600305487,265.874320218182334],"luv":[77.4469014383288794,-3.01327895494808,-41.7748543291725554],"rgb":[0.733333333333333282,0.733333333333333282,0.933333333333333348],"xyz":[0.536935791763662573,0.522782147565079347,0.881535904518157],"hpluv":[265.874320218182334,75.1781465494946,77.4469014383288794],"hsluv":[265.874320218182334,72.306149300046286,77.4469014383288794]},"#bbbbff":{"lch":[78.0665243938900915,56.270213901735211,265.874320218181083],"luv":[78.0665243938900915,-4.04833166396953814,-56.1243973979724444],"rgb":[0.733333333333333282,0.733333333333333282,1],"xyz":[0.563106840173494,0.533250566929012,1.01937009280993873],"hpluv":[265.874320218181083,104.437018855576454,78.0665243938900915],"hsluv":[265.874320218181083,99.9999999999968,78.0665243938900915]},"#99cc00":{"lch":[76.0430979526319,91.0941172293808,106.263360497649074],"luv":[76.0430979526319,-25.5111694560196547,87.4489475453331124],"rgb":[0.6,0.8,0],"xyz":[0.347284960501106077,0.499573870357110428,0.0781308367092051204],"hpluv":[106.263360497649074,152.00919412554731,76.0430979526319],"hsluv":[106.263360497649074,100.000000000002444,76.0430979526319]},"#99cc11":{"lch":[76.0679435797449202,90.0431717383104342,106.457693210299354],"luv":[76.0679435797449202,-25.5098862277023812,86.3540299079582496],"rgb":[0.6,0.8,0.0666666666666666657],"xyz":[0.348296626000743181,0.499978536556965281,0.083458941673960757],"hpluv":[106.457693210299354,150.416675371578,76.0679435797449202],"hsluv":[106.457693210299354,98.6698238814781377,76.0679435797449202]},"#99cc22":{"lch":[76.1139653123302224,88.1120975577654235,106.827460928226145],"luv":[76.1139653123302224,-25.5076232207001254,84.3392132620406301],"rgb":[0.6,0.8,0.133333333333333331],"xyz":[0.350171984139220238,0.500728679812356137,0.0933358278699399496],"hpluv":[106.827460928226145,147.536178080277807,76.1139653123302224],"hsluv":[106.827460928226145,96.2239688839219554,76.1139653123302224]},"#99cc33":{"lch":[76.1896394090333615,84.9806694979027668,107.464683868975555],"luv":[76.1896394090333615,-25.5042190273125513,81.0632407452271195],"rgb":[0.6,0.8,0.2],"xyz":[0.353259734871677944,0.501963780105339263,0.109597981727551086],"hpluv":[107.464683868975555,142.843382477451314,76.1896394090333615],"hsluv":[107.464683868975555,92.2523981769505497,76.1896394090333615]},"#99cc44":{"lch":[76.2986765643697566,80.5641186971074461,108.452476349375274],"luv":[76.2986765643697566,-25.4999909675489818,76.4220366262018445],"rgb":[0.6,0.8,0.266666666666666663],"xyz":[0.357717730115896859,0.503746978203026829,0.133076756680437724],"hpluv":[108.452476349375274,136.177549938509202,76.2986765643697566],"hsluv":[108.452476349375274,86.6370393323296,76.2986765643697566]},"#99cc55":{"lch":[76.4441084930992645,74.8483308647658276,109.915235611542258],"luv":[76.4441084930992645,-25.4955548836031696,70.3722197633315858],"rgb":[0.6,0.8,0.333333333333333315],"xyz":[0.363680144155258844,0.506131943818771579,0.16447880395441164],"hpluv":[109.915235611542258,127.465568679298812,76.4441084930992645],"hsluv":[109.915235611542258,79.3378797119037245,76.4441084930992645]},"#99cc66":{"lch":[76.6284587708723279,67.8919791104198111,112.053749389120497],"luv":[76.6284587708723279,-25.4918238993559072,62.9244606001029396],"rgb":[0.6,0.8,0.4],"xyz":[0.37126513992876703,0.509165942128174898,0.204426448361555602],"hpluv":[112.053749389120497,116.726185086844026,76.6284587708723279],"hsluv":[112.053749389120497,70.3850130172815796,76.6284587708723279]},"#99cc77":{"lch":[76.8538330837355801,59.8379910057359723,115.212918879407354],"luv":[76.8538330837355801,-25.4899847789994141,54.1372869986012262],"rgb":[0.6,0.8,0.466666666666666674],"xyz":[0.380579152948968935,0.512891547336255749,0.253480250267953511],"hpluv":[115.212918879407354,104.093311342856381,76.8538330837355801],"hsluv":[115.212918879407354,59.8707914454029577,76.8538330837355801]},"#99cc88":{"lch":[77.1219726780439885,50.9458531819172649,120.024060615406185],"luv":[77.1219726780439885,-25.4914521322680621,44.1097021597488919],"rgb":[0.6,0.8,0.533333333333333326],"xyz":[0.391719570050912735,0.517347714177033291,0.31215311367152565],"hpluv":[120.024060615406185,89.8814395273866324,77.1219726780439885],"hsluv":[120.024060615406185,47.9401368886289845,77.1219726780439885]},"#99cc99":{"lch":[77.4342891130262103,41.681173098632776,127.715012949236964],"luv":[77.4342891130262103,-25.4978049096247332,32.9724450969124447],"rgb":[0.6,0.8,0.6],"xyz":[0.40477653415998549,0.522570499820662504,0.380919791312643585],"hpluv":[127.715012949236964,74.7648437658604337,77.4342891130262103],"hsluv":[127.715012949236964,34.7788947556027495,77.4342891130262103]},"#99ccaa":{"lch":[77.7918890721377352,32.9651751214879525,140.702563314804109],"luv":[77.7918890721377352,-25.5107121176450882,20.8783701002018844],"rgb":[0.6,0.8,0.66666666666666663],"xyz":[0.419834227125238,0.528593577006763571,0.460223640929642186],"hpluv":[140.702563314804109,60.2770963674260756,77.7918890721377352],"hsluv":[140.702563314804109,37.0803100068772622,77.7918890721377352]},"#99ccbb":{"lch":[78.1955939192693421,26.7536671513630395,162.617393192268167],"luv":[78.1955939192693421,-25.5318556358660231,7.9926875226808507],"rgb":[0.6,0.8,0.733333333333333282],"xyz":[0.436971819232574665,0.535448613849698329,0.550481626028283877],"hpluv":[162.617393192268167,50.006554278151107,78.1955939192693421],"hsluv":[162.617393192268167,39.5096284608221353,78.1955939192693421]},"#99cccc":{"lch":[78.6459566685868481,26.1512486118356264,192.177050630060364],"luv":[78.6459566685868481,-25.562857556775878,-5.51616873291790277],"rgb":[0.6,0.8,0.8],"xyz":[0.45626419467629642,0.543165564027187187,0.652088136698554],"hpluv":[192.177050630060364,50.1138147500145,78.6459566685868481],"hsluv":[192.177050630060364,42.0292910605185952,78.6459566685868481]},"#99ccdd":{"lch":[79.1432779300782,32.1756084020034763,217.269502822152816],"luv":[79.1432779300782,-25.6052179328205156,-19.4844191766612091],"rgb":[0.6,0.8,0.866666666666666696],"xyz":[0.477782520226929908,0.551772894247440693,0.76541798459856],"hpluv":[217.269502822152816,63.4104034428488532,79.1432779300782],"hsluv":[217.269502822152816,44.6030324020319142,79.1432779300782]},"#99ccee":{"lch":[79.6876217339600146,42.4043636674930298,232.761609201673764],"luv":[79.6876217339600146,-25.6602666815912279,-33.7591583407321],"rgb":[0.6,0.8,0.933333333333333348],"xyz":[0.501594700493104728,0.56129776635391071,0.890828800667083254],"hpluv":[232.761609201673764,86.2263034184575901,79.6876217339600146],"hsluv":[232.761609201673764,69.2463215394111842,79.6876217339600146]},"#99ccff":{"lch":[80.278831719152322,54.6396736698167231,241.908088190648726],"luv":[80.278831719152322,-25.7291311718118969,-48.2027566419988105],"rgb":[0.6,0.8,1],"xyz":[0.527765748902936,0.571766185717843434,1.02866298895886521],"hpluv":[241.908088190648726,115.039816302159181,80.278831719152322],"hsluv":[241.908088190648726,99.9999999999963762,80.278831719152322]},"#444400":{"lch":[27.7455139749470092,30.5866720374503593,85.8743202181747307],"luv":[27.7455139749470092,2.20054242411605072,30.5074108925390952],"rgb":[0.266666666666666663,0.266666666666666663,0],"xyz":[0.044508744126079483,0.0536323223451504599,0.00800753181435780864],"hpluv":[85.8743202181747307,139.887458074797593,27.7455139749470092],"hsluv":[85.8743202181747307,100.000000000002331,27.7455139749470092]},"#444411":{"lch":[27.8552611903384602,27.0161424908788135,85.8743202181744],"luv":[27.8552611903384602,1.9436625081132386,26.9461338811715763],"rgb":[0.266666666666666663,0.266666666666666663,0.0666666666666666657],"xyz":[0.0455204096257166,0.0540369885450053128,0.0133356367791134401],"hpluv":[85.8743202181744,123.070915058641674,27.8552611903384602],"hsluv":[85.8743202181744,87.9785198418851451,27.8552611903384602]},"#444422":{"lch":[28.0572627170229296,20.802612285424587,85.8743202181735086],"luv":[28.0572627170229296,1.49663326596887214,20.7487051828516122],"rgb":[0.266666666666666663,0.266666666666666663,0.133333333333333331],"xyz":[0.0473957677641936234,0.0547871318003961341,0.0232125229750926379],"hpluv":[85.8743202181735086,94.0831614915658463,28.0572627170229296],"hsluv":[85.8743202181735086,67.2563236092702539,28.0572627170229296]},"#444433":{"lch":[28.3858756417530103,11.5666907278610811,85.8743202181704],"luv":[28.3858756417530103,0.832159628943940688,11.5367172430437677],"rgb":[0.266666666666666663,0.266666666666666663,0.2],"xyz":[0.0504835184966513639,0.056022232093379247,0.0394746768327037811],"hpluv":[85.8743202181704,51.7066205750809758,28.3858756417530103],"hsluv":[85.8743202181704,36.9630139018145201,28.3858756417530103]},"#444444":{"lch":[28.8519023983998864,1.56211738287899238e-12,0],"luv":[28.8519023983998864,1.45745810878583046e-12,5.6216241338882039e-13],"rgb":[0.266666666666666663,0.266666666666666663,0.266666666666666663],"xyz":[0.0549415137408702445,0.05780543019106682,0.0629534517855904197],"hpluv":[0,6.87034486140541504e-12,28.8519023983998864],"hsluv":[0,1.96712204652458306e-12,28.8519023983998864]},"#444455":{"lch":[29.4604491554767947,12.996237632929807,265.874320218183527],"luv":[29.4604491554767947,-0.935007647451096213,-12.9625596743385874],"rgb":[0.266666666666666663,0.266666666666666663,0.333333333333333315],"xyz":[0.0609039277802322365,0.0601903958068116529,0.094355499059564335],"hpluv":[265.874320218183527,55.9780294653588157,29.4604491554767947],"hsluv":[265.874320218183527,10.903125265393685,29.4604491554767947]},"#444466":{"lch":[30.2117995944983235,26.5936989313503034,265.874320218180401],"luv":[30.2117995944983235,-1.9132700229980284,-26.52478502590359],"rgb":[0.266666666666666663,0.266666666666666663,0.4],"xyz":[0.0684889235537404079,0.0632243941162149714,0.134303143466708297],"hpluv":[265.874320218180401,111.69699235114156,30.2117995944983235],"hsluv":[265.874320218180401,21.7557908165695544,30.2117995944983235]},"#444477":{"lch":[31.1022350000615333,40.188693881548005,265.874320218179378],"luv":[31.1022350000615333,-2.89135495838767076,-40.084550420447286],"rgb":[0.266666666666666663,0.266666666666666663,0.466666666666666674],"xyz":[0.0778029365739423273,0.0669499993242957808,0.183356945373106206],"hpluv":[265.874320218179378,163.965176201048621,31.1022350000615333],"hsluv":[265.874320218179378,31.9363305989270607,31.1022350000615333]},"#444488":{"lch":[32.1249060438116132,53.4239352836437,265.874320218178923],"luv":[32.1249060438116132,-3.84355760936744639,-53.2854945186250859],"rgb":[0.266666666666666663,0.266666666666666663,0.533333333333333326],"xyz":[0.0889433536758861554,0.0714061661650733787,0.242029808776678373],"hpluv":[265.874320218178923,211.024721596932807,32.1249060438116132],"hsluv":[265.874320218178923,41.1023574005893479,32.1249060438116132]},"#444499":{"lch":[33.2707247827276404,66.1374776044503818,265.874320218178639],"luv":[33.2707247827276404,-4.75822688765494473,-65.9660914467787336],"rgb":[0.266666666666666663,0.266666666666666663,0.6],"xyz":[0.102000317784958869,0.0766289518087025362,0.31079648641779628],"hpluv":[265.874320218178639,252.246234683596128,33.2707247827276404],"hsluv":[265.874320218178639,50.2337582903708224,33.2707247827276404]},"#4444aa":{"lch":[34.5292085317775772,78.2936422443982707,265.874320218178468],"luv":[34.5292085317775772,-5.63279591471267516,-78.090755061511743],"rgb":[0.266666666666666663,0.266666666666666663,0.66666666666666663],"xyz":[0.117058010750211411,0.0826520289948036446,0.390100336034794881],"hpluv":[265.874320218178468,287.726060771882089,34.5292085317775772],"hsluv":[265.874320218178468,59.0260968416557645,34.5292085317775772]},"#4444bb":{"lch":[35.8892144652077647,89.9250819913669801,265.874320218178354],"luv":[35.8892144652077647,-6.46961387860876,-89.6920535355044],"rgb":[0.266666666666666663,0.266666666666666663,0.733333333333333282],"xyz":[0.134195602857548058,0.0895070658377384,0.480358321133436628],"hpluv":[265.874320218178354,317.948086985701252,35.8892144652077647],"hsluv":[265.874320218178354,67.4283717547759807,35.8892144652077647]},"#4444cc":{"lch":[37.3395287853000397,101.093816173965237,265.874320218178298],"luv":[37.3395287853000397,-7.27314272811459173,-100.831845482823283],"rgb":[0.266666666666666663,0.266666666666666663,0.8],"xyz":[0.153487978301269812,0.0972240160152272,0.581964831803706728],"hpluv":[265.874320218178298,343.55405942077391,37.3395287853000397],"hsluv":[265.874320218178298,75.5808548987534294,37.3395287853000397]},"#4444dd":{"lch":[38.8693012328948697,111.868746538356049,265.874320218178241],"luv":[38.8693012328948697,-8.04833956400084105,-111.578854100252741],"rgb":[0.266666666666666663,0.266666666666666663,0.866666666666666696],"xyz":[0.175006303851903355,0.105831346235480739,0.695294679703712726],"hpluv":[265.874320218178241,365.208910634554,38.8693012328948697],"hsluv":[265.874320218178241,83.6313726076760702,38.8693012328948697]},"#4444ee":{"lch":[40.4683363226646691,122.314460404417545,265.874320218178127],"luv":[40.4683363226646691,-8.799851087852959,-121.997499338533331],"rgb":[0.266666666666666663,0.266666666666666663,0.933333333333333348],"xyz":[0.198818484118078065,0.115356218341950756,0.820705495772236],"hpluv":[265.874320218178127,383.532154053589807,40.4683363226646691],"hsluv":[265.874320218178127,91.7249319236633625,40.4683363226646691]},"#4444ff":{"lch":[42.1272645151277203,132.4867415013303,265.874320218178127],"luv":[42.1272645151277203,-9.53169063144130568,-132.143420370999962],"rgb":[0.266666666666666663,0.266666666666666663,1],"xyz":[0.224989532527909486,0.12582463770588348,0.958539684064017794],"hpluv":[265.874320218178127,399.069452944254863,42.1272645151277203],"hsluv":[265.874320218178127,99.9999999999994458,42.1272645151277203]},"#bbcc00":{"lch":[78.3160688649495711,87.6272661942945916,93.3039767998847651],"luv":[78.3160688649495711,-5.05025027162958828,87.4816137990130471],"rgb":[0.733333333333333282,0.8,0],"xyz":[0.420849795081280953,0.537505738187513904,0.081579188330150737],"hpluv":[93.3039767998847651,164.876849582678972,78.3160688649495711],"hsluv":[93.3039767998847651,100.000000000002302,78.3160688649495711]},"#bbcc11":{"lch":[78.3397318378619332,86.5943586896397193,93.3754549086192],"luv":[78.3397318378619332,-5.09856582429126703,86.4441298377475249],"rgb":[0.733333333333333282,0.8,0.0666666666666666657],"xyz":[0.421861460580918057,0.537910404387368812,0.0869072932949063737],"hpluv":[93.3754549086192,163.146061131239662,78.3397318378619332],"hsluv":[93.3754549086192,98.7690619278293,78.3397318378619332]},"#bbcc22":{"lch":[78.3835653101130134,84.6929692802742125,93.5116381573829329],"luv":[78.3835653101130134,-5.18755307791811582,84.5339478468458481],"rgb":[0.733333333333333282,0.8,0.133333333333333331],"xyz":[0.423736818719395114,0.538660547642759613,0.0967841794908855663],"hpluv":[93.5116381573829329,159.95035726483485,78.3835653101130134],"hsluv":[93.5116381573829329,96.5043106774720343,78.3835653101130134]},"#bbcc33":{"lch":[78.4556479267243,81.5996211754986405,93.7468972468941644],"luv":[78.4556479267243,-5.33246113691784,81.4251990123951],"rgb":[0.733333333333333282,0.8,0.2],"xyz":[0.42682456945185282,0.53989564793574274,0.113046333348496703],"hpluv":[93.7468972468941644,154.72407311273281,78.4556479267243],"hsluv":[93.7468972468941644,92.8230308779070157,78.4556479267243]},"#bbcc44":{"lch":[78.5595248117047475,77.2136355312914873,94.1131309849175],"luv":[78.5595248117047475,-5.53822791342104281,77.0147618547127877],"rgb":[0.733333333333333282,0.8,0.266666666666666663],"xyz":[0.431282564696071735,0.541678846033430306,0.136525108301383341],"hpluv":[94.1131309849175,147.254264694427633,78.5595248117047475],"hsluv":[94.1131309849175,87.6101015600037556,78.5595248117047475]},"#bbcc55":{"lch":[78.6981007967589079,71.4912273296626921,94.6593076474989488],"luv":[78.6981007967589079,-5.80727962831129307,71.2549723768110823],"rgb":[0.733333333333333282,0.8,0.333333333333333315],"xyz":[0.43724497873543372,0.544063811649175,0.167927155575357256],"hpluv":[94.6593076474989488,137.398731222980217,78.6981007967589079],"hsluv":[94.6593076474989488,80.8199795518833639,78.6981007967589079]},"#bbcc66":{"lch":[78.8738041161037273,64.440755538040392,95.4673459440295176],"luv":[78.8738041161037273,-6.13981465986491681,64.1475927081912403],"rgb":[0.733333333333333282,0.8,0.4],"xyz":[0.444829974508941905,0.547097809958578374,0.207874799982501218],"hpluv":[95.4673459440295176,125.075317361724217,78.8738041161037273],"hsluv":[95.4673459440295176,72.4696955468646848,78.8738041161037273]},"#bbcc77":{"lch":[79.0886730863018244,56.1202023011108153,96.6860819525870454],"luv":[79.0886730863018244,-6.5340457953894715,55.7385266387743386],"rgb":[0.733333333333333282,0.8,0.466666666666666674],"xyz":[0.454143987529143811,0.550823415166659225,0.2569286018888991],"hpluv":[96.6860819525870454,110.256785788709905,79.0886730863018244],"hsluv":[96.6860819525870454,62.6323703341884,79.0886730863018244]},"#bbcc88":{"lch":[79.3444074564468451,46.6379090458556931,98.6154841820407],"luv":[79.3444074564468451,-6.9864776714612713,46.1116437563841473],"rgb":[0.733333333333333282,0.8,0.533333333333333326],"xyz":[0.465284404631087611,0.555279582007436767,0.315601465292471295],"hpluv":[98.6154841820407,92.9740665461038702,79.3444074564468451],"hsluv":[98.6154841820407,51.4293340198482483,79.3444074564468451]},"#bbcc99":{"lch":[79.6424016540563,36.1659853952486898,101.956116252097843],"luv":[79.6424016540563,-7.49223418159530397,35.3814206410296137],"rgb":[0.733333333333333282,0.8,0.6],"xyz":[0.478341368740160311,0.560502367651066,0.38436814293358923],"hpluv":[101.956116252097843,73.3480812445522616,79.6424016540563],"hsluv":[101.956116252097843,39.0205672484538439,79.6424016540563]},"#bbccaa":{"lch":[79.9837682606211899,25.01387761080953,108.762036830266098],"luv":[79.9837682606211899,-8.04542335958215382,23.6847046866463593],"rgb":[0.733333333333333282,0.8,0.66666666666666663],"xyz":[0.493399061705412867,0.566525444837167,0.463671992550587775],"hpluv":[108.762036830266098,51.7527419020047645,79.9837682606211899],"hsluv":[108.762036830266098,25.5939208298632828,79.9837682606211899]},"#bbccbb":{"lch":[80.3693561861161356,14.1229851396422195,127.715012949226079],"luv":[80.3693561861161356,-8.63951499109438892,11.1721748094634776],"rgb":[0.733333333333333282,0.8,0.733333333333333282],"xyz":[0.510536653812749486,0.573380481680101806,0.553929977649229577],"hpluv":[127.715012949226079,29.8960175179438359,80.3693561861161356],"hsluv":[127.715012949226079,11.3539027840963094,80.3693561861161356]},"#bbcccc":{"lch":[80.7997661027856537,9.48102181692548207,192.177050630058517],"luv":[80.7997661027856537,-9.26770319062559622,-1.99986306118322021],"rgb":[0.733333333333333282,0.8,0.8],"xyz":[0.52982902925647124,0.581097431857590663,0.655536488319499733],"hpluv":[192.177050630058517,20.5979746439306091,80.7997661027856537],"hsluv":[192.177050630058517,14.8313634310922779,80.7997661027856537]},"#bbccdd":{"lch":[81.2753646562375138,18.5534915910332536,237.666646406054781],"luv":[81.2753646562375138,-9.9232294288842251,-15.6767843616051454],"rgb":[0.733333333333333282,0.8,0.866666666666666696],"xyz":[0.551347354807104839,0.589704762077844169,0.76886633621950573],"hpluv":[237.666646406054781,41.5059211719903089,81.2753646562375138],"hsluv":[237.666646406054781,34.6395739712995834,81.2753646562375138]},"#bbccee":{"lch":[81.7962983545147466,31.5457627715974915,250.366116177600304],"luv":[81.7962983545147466,-10.5996485000078611,-29.7116576534899401],"rgb":[0.733333333333333282,0.8,0.933333333333333348],"xyz":[0.575159535073279549,0.599229634184314186,0.894277152288029],"hpluv":[250.366116177600304,72.9233806917818725,81.7962983545147466],"hsluv":[250.366116177600304,65.9765826509477478,81.7962983545147466]},"#bbccff":{"lch":[82.3625076456434329,45.3963265868234203,255.598148289110497],"luv":[82.3625076456434329,-11.2910283768039683,-43.9697526234994669],"rgb":[0.733333333333333282,0.8,1],"xyz":[0.601330583483111,0.60969805354824691,1.0321113405798108],"hpluv":[255.598148289110497,108.847942718229262,82.3625076456434329],"hsluv":[255.598148289110497,99.9999999999958789,82.3625076456434329]},"#99dd00":{"lch":[81.0072374435841738,100.100388992767378,110.059278565234735],"luv":[81.0072374435841738,-34.3336498242400623,94.028125400062109],"rgb":[0.6,0.866666666666666696,0],"xyz":[0.389918951048281226,0.584841851451462,0.0923421668915964389],"hpluv":[110.059278565234735,220.251619684458433,81.0072374435841738],"hsluv":[110.059278565234735,100.000000000002245,81.0072374435841738]},"#99dd11":{"lch":[81.0296061686003,99.1554895677318626,110.248463134872608],"luv":[81.0296061686003,-34.3169109383134483,93.0277417498051733],"rgb":[0.6,0.866666666666666696,0.0666666666666666657],"xyz":[0.39093061654791833,0.585246517651316855,0.0976702718563520755],"hpluv":[110.248463134872608,218.472914234601802,81.0296061686003],"hsluv":[110.248463134872608,98.8616036668283,81.0296061686003]},"#99dd22":{"lch":[81.0710445633976,97.4178442494470431,110.606606003803336],"luv":[81.0710445633976,-34.2861684396920552,91.184949591117217],"rgb":[0.6,0.866666666666666696,0.133333333333333331],"xyz":[0.392805974686395387,0.585996660906707656,0.107547158052331268],"hpluv":[110.606606003803336,215.192819254761019,81.0710445633976],"hsluv":[110.606606003803336,96.7659338960775131,81.0710445633976]},"#99dd33":{"lch":[81.1391953168863154,94.5961335984436857,111.218234049095599],"luv":[81.1391953168863154,-34.2363517117206513,88.1833358024404106],"rgb":[0.6,0.866666666666666696,0.2],"xyz":[0.395893725418853093,0.587231761199690783,0.123809311909942404],"hpluv":[111.218234049095599,209.840835623165077,81.1391953168863154],"hsluv":[111.218234049095599,93.3562182204636599,81.1391953168863154]},"#99dd44":{"lch":[81.2374208116197565,90.6080011845065343,112.152709421166279],"luv":[81.2374208116197565,-34.1661449288095653,83.9195115533635487],"rgb":[0.6,0.866666666666666696,0.266666666666666663],"xyz":[0.400351720663072,0.589014959297378349,0.147288086862829043],"hpluv":[112.152709421166279,202.22119953609328,81.2374208116197565],"hsluv":[112.152709421166279,88.5208972681928827,81.2374208116197565]},"#99dd55":{"lch":[81.3684846041416421,85.4315699411036604,113.506988965296216],"luv":[81.3684846041416421,-34.0753153837539244,78.3417259453695607],"rgb":[0.6,0.866666666666666696,0.333333333333333315],"xyz":[0.406314134702434,0.591399924913123098,0.178690134136802958],"hpluv":[113.506988965296216,192.231211336261111,81.3684846041416421],"hsluv":[113.506988965296216,82.2103932307851579,81.3684846041416421]},"#99dd66":{"lch":[81.5347071887187695,79.1067404569191837,115.426438711198742],"luv":[81.5347071887187695,-33.9646313013793,71.4442454385217758],"rgb":[0.6,0.866666666666666696,0.4],"xyz":[0.413899130475942179,0.594433923222526417,0.21863777854394692],"hpluv":[115.426438711198742,179.864586291563711,81.5347071887187695],"hsluv":[115.426438711198742,74.4308834765056,81.5347071887187695]},"#99dd77":{"lch":[81.7380487099571,71.7428264562351217,118.139890255285593],"luv":[81.7380487099571,-33.8357763954940651,63.2627329764024324],"rgb":[0.6,0.866666666666666696,0.466666666666666674],"xyz":[0.423213143496144084,0.598159528430607268,0.267691580450344802],"hpluv":[118.139890255285593,165.232292085670224,81.7380487099571],"hsluv":[118.139890255285593,65.2389156719347,81.7380487099571]},"#99dd88":{"lch":[81.9801580086414248,63.5371271244577898,122.023063704989269],"luv":[81.9801580086414248,-33.6912346765093815,53.8689820694792942],"rgb":[0.6,0.866666666666666696,0.533333333333333326],"xyz":[0.434353560598087884,0.60261569527138481,0.326364443853917],"hpluv":[122.023063704989269,148.614644251947254,81.9801580086414248],"hsluv":[122.023063704989269,54.7350081565161943,81.9801580086414248]},"#99dd99":{"lch":[82.2624042681600827,54.8181455895933,127.715012949238044],"luv":[82.2624042681600827,-33.5341421039979721,43.3646215160552],"rgb":[0.6,0.866666666666666696,0.6],"xyz":[0.447410524707160584,0.607838480915014,0.395131121495034932],"hpluv":[127.715012949238044,130.58293025992694,82.2624042681600827],"hsluv":[127.715012949238044,43.0558433261763724,82.2624042681600827]},"#99ddaa":{"lch":[82.5858991321833855,46.1452119261310898,136.311935434488049],"luv":[82.5858991321833855,-33.3681126370237138,31.8739649675161907],"rgb":[0.6,0.866666666666666696,0.66666666666666663],"xyz":[0.46246821767241314,0.61386155810111509,0.474434971112033477],"hpluv":[136.311935434488049,112.281381223378744,82.5858991321833855],"hsluv":[136.311935434488049,44.8180878493830122,82.5858991321833855]},"#99ddbb":{"lch":[82.9515135213076,38.5190468703316,149.523212457301526],"luv":[82.9515135213076,-33.1970516149390349,19.536446347119437],"rgb":[0.6,0.866666666666666696,0.733333333333333282],"xyz":[0.479605809779749814,0.620716594944049849,0.564692956210675279],"hpluv":[149.523212457301526,96.0401150933983416,82.9515135213076],"hsluv":[149.523212457301526,46.6955526922259807,82.9515135213076]},"#99ddcc":{"lch":[83.3598915829196585,33.6584009809739158,168.866706644517421],"luv":[83.3598915829196585,-33.0249710093605202,6.49917274942921],"rgb":[0.6,0.866666666666666696,0.8],"xyz":[0.498898185223471513,0.628433545121538706,0.666299466880945435],"hpluv":[168.866706644517421,86.2854242091523,83.3598915829196585],"hsluv":[168.866706644517421,48.6618587245334879,83.3598915829196585]},"#99dddd":{"lch":[83.811463234187741,33.6120761253887,192.17705063006062],"luv":[83.811463234187741,-32.85581988586,-7.08990557672323529],"rgb":[0.6,0.866666666666666696,0.866666666666666696],"xyz":[0.520416510774105112,0.637040875341792212,0.779629314780951432],"hpluv":[192.17705063006062,88.9162454401141,83.811463234187741],"hsluv":[192.17705063006062,50.6906605199231777,83.811463234187741]},"#99ddee":{"lch":[84.3064561843391402,38.9043785470910208,212.822778279485817],"luv":[84.3064561843391402,-32.6933403312743565,-21.0878203738277712],"rgb":[0.6,0.866666666666666696,0.933333333333333348],"xyz":[0.544228691040279822,0.646565747448262229,0.905040130849474656],"hpluv":[212.822778279485817,106.615167592423816,84.3064561843391402],"hsluv":[212.822778279485817,60.6575363344623781,84.3064561843391402]},"#99ddff":{"lch":[84.8449079615810575,48.055447414973429,227.378328123916845],"luv":[84.8449079615810575,-32.5409551013358396,-35.3611689193969099],"rgb":[0.6,0.866666666666666696,1],"xyz":[0.570399739450111243,0.657034166812195,1.04287431914125639],"hpluv":[227.378328123916845,137.001856984753886,84.8449079615810575],"hsluv":[227.378328123916845,99.999999999994813,84.8449079615810575]},"#445500":{"lch":[33.4053570608210535,38.7644311760376397,101.469350612776353],"luv":[33.4053570608210535,-7.7080633936099785,37.9903525006263791],"rgb":[0.266666666666666663,0.333333333333333315,0],"xyz":[0.0563220008404254485,0.0772588357738427239,0.0119452840524730177],"hpluv":[101.469350612776353,147.25044771073371,33.4053570608210535],"hsluv":[101.469350612776353,100.000000000002245,33.4053570608210535]},"#445511":{"lch":[33.4914653280992525,35.8039831739898275,102.524785035338],"luv":[33.4914653280992525,-7.76452054412734,34.9519303021045076],"rgb":[0.266666666666666663,0.333333333333333315,0.0666666666666666657],"xyz":[0.0573336663400625668,0.0776635019736975768,0.0172733890172286492],"hpluv":[102.524785035338,135.655223597469387,33.4914653280992525],"hsluv":[102.524785035338,91.5452633494882093,33.4914653280992525]},"#445522":{"lch":[33.6502992474903806,30.5965852313305291,104.897478349629381],"luv":[33.6502992474903806,-7.86608410210478493,29.5681543001366229],"rgb":[0.266666666666666663,0.333333333333333315,0.133333333333333331],"xyz":[0.0592090244785395889,0.0784136452290883912,0.0271502752132078452],"hpluv":[104.897478349629381,115.378092601865731,33.6502992474903806],"hsluv":[104.897478349629381,76.6558497494370243,33.6502992474903806]},"#445533":{"lch":[33.9096245159150911,22.79863905315759,110.61032755328398],"luv":[33.9096245159150911,-8.02535730567797501,21.3394372651287],"rgb":[0.266666666666666663,0.333333333333333315,0.2],"xyz":[0.0622967752109973294,0.0796487455220715,0.0434124290708189919],"hpluv":[110.61032755328398,85.3149751467856419,33.9096245159150911],"hsluv":[110.61032755328398,54.1403397653178331,33.9096245159150911]},"#445544":{"lch":[34.2793424585633204,13.4702363502677187,127.715012949235046],"luv":[34.2793424585633204,-8.24020614134090401,10.6558092175245633],"rgb":[0.266666666666666663,0.333333333333333315,0.266666666666666663],"xyz":[0.0667547704552162,0.081431943619759084,0.0668912040237056305],"hpluv":[127.715012949235046,49.8634197051089814,34.2793424585633204],"hsluv":[127.715012949235046,25.3893680776039865,34.2793424585633204]},"#445555":{"lch":[34.7654846399243738,8.70030094248716424,192.177050630060222],"luv":[34.7654846399243738,-8.50454817645784544,-1.83518304377262664],"rgb":[0.266666666666666663,0.333333333333333315,0.333333333333333315],"xyz":[0.0727171844945782,0.0838169092355039169,0.098293251297679532],"hpluv":[192.177050630060222,31.7559649298661668,34.7654846399243738],"hsluv":[192.177050630060222,31.6316627668381969,34.7654846399243738]},"#445566":{"lch":[35.3707740335649916,17.7582093223154978,240.254504050727519],"luv":[35.3707740335649916,-8.81070452432763318,-15.4183489427423961],"rgb":[0.266666666666666663,0.333333333333333315,0.4],"xyz":[0.0803021802680863733,0.0868509075449072354,0.138240895704823508],"hpluv":[240.254504050727519,63.7079944588343352,35.3707740335649916],"hsluv":[240.254504050727519,38.2083413049732812,35.3707740335649916]},"#445577":{"lch":[36.0950574442792913,30.8488081821149329,252.743594747999822],"luv":[36.0950574442792913,-9.15124765847803623,-29.4602042177260124],"rgb":[0.266666666666666663,0.333333333333333315,0.466666666666666674],"xyz":[0.0896161932882882928,0.0905765127529880448,0.187294697611221417],"hpluv":[252.743594747999822,108.450105614435046,36.0950574442792913],"hsluv":[252.743594747999822,44.7362415879762878,36.0950574442792913]},"#445588":{"lch":[36.935739068143242,44.5159055243500319,257.651563208142],"luv":[36.935739068143242,-9.5200062368872409,-43.4860359874579245],"rgb":[0.266666666666666663,0.333333333333333315,0.533333333333333326],"xyz":[0.100756610390232121,0.0950326795937656427,0.245967561014793584],"hpluv":[257.651563208142,152.935302017774575,36.935739068143242],"hsluv":[257.651563208142,50.9359550606187952,36.935739068143242]},"#445599":{"lch":[37.8882410462664865,58.0440865604997711,260.167284745959819],"luv":[37.8882410462664865,-9.91231220062277885,-57.1914508600732674],"rgb":[0.266666666666666663,0.333333333333333315,0.6],"xyz":[0.113813574499304834,0.1002554652373948,0.314734238655911491],"hpluv":[260.167284745959819,194.398479571090235,37.8882410462664865],"hsluv":[260.167284745959819,56.6374271499956805,37.8882410462664865]},"#4455aa":{"lch":[38.9464770503006932,71.1678309986128141,261.658277796723496],"luv":[38.9464770503006932,-10.3247958657557941,-70.4149043837850144],"rgb":[0.266666666666666663,0.333333333333333315,0.66666666666666663],"xyz":[0.128871267464557376,0.106278542423495909,0.394038088272910092],"hpluv":[261.658277796723496,231.875507383352442,38.9464770503006932],"hsluv":[261.658277796723496,61.7617646139185652,38.9464770503006932]},"#4455bb":{"lch":[40.1033117689144,83.7900384834958,262.625350778636744],"luv":[40.1033117689144,-10.7550224317659584,-83.0969316013408417],"rgb":[0.266666666666666663,0.333333333333333315,0.733333333333333282],"xyz":[0.146008859571894023,0.113133579266430667,0.484296073371551838],"hpluv":[262.625350778636744,265.125486140416797,40.1033117689144],"hsluv":[262.625350778636744,66.2950009745661,40.1033117689144]},"#4455cc":{"lch":[41.3509797710146,95.8983760986006075,263.292411358069444],"luv":[41.3509797710146,-11.2011488171863753,-95.24196975873555],"rgb":[0.266666666666666663,0.333333333333333315,0.8],"xyz":[0.165301235015615777,0.120850529443919469,0.585902584041821939],"hpluv":[263.292411358069444,294.28272942652967,41.3509797710146],"hsluv":[263.292411358069444,71.9850161095278906,41.3509797710146]},"#4455dd":{"lch":[42.6814446156526657,107.523441304607104,263.773623462042394],"luv":[42.6814446156526657,-11.661670844638417,-106.88917561239117],"rgb":[0.266666666666666663,0.333333333333333315,0.866666666666666696],"xyz":[0.186819560566249321,0.129457859664173,0.699232431941827937],"hpluv":[263.773623462042394,319.67109728436958,42.6814446156526657],"hsluv":[263.773623462042394,81.2732363837730247,42.6814446156526657]},"#4455ee":{"lch":[44.0866885883675,118.714724855013472,264.132858108854521],"luv":[44.0866885883675,-12.1352655753704255,-118.092850024109339],"rgb":[0.266666666666666663,0.333333333333333315,0.933333333333333348],"xyz":[0.21063174083242403,0.13898273177064302,0.82464324801035116],"hpluv":[264.132858108854521,341.693279595385377,44.0866885883675],"hsluv":[264.132858108854521,90.5684283810677186,44.0866885883675]},"#4455ff":{"lch":[45.5589321196955765,129.526958246416882,264.408404412275218],"luv":[45.5589321196955765,-12.6207071057408875,-128.910630534181024],"rgb":[0.266666666666666663,0.333333333333333315,1],"xyz":[0.236802789242255451,0.149451151134575744,0.962477436302133],"hpluv":[264.408404412275218,360.766296003954039,45.5589321196955765],"hsluv":[264.408404412275218,99.9999999999992752,45.5589321196955765]},"#bbdd00":{"lch":[83.0607051195576673,95.2176030862527796,99.223939245402],"luv":[83.0607051195576673,-15.2627740644400269,93.9863802119702427],"rgb":[0.733333333333333282,0.866666666666666696,0],"xyz":[0.463483785628456102,0.622773719281865423,0.0957905185125420555],"hpluv":[99.223939245402,239.164338292747971,83.0607051195576673],"hsluv":[99.223939245402,100.00000000000216,83.0607051195576673]},"#bbdd11":{"lch":[83.082156377860457,94.2793845093074765,99.3314951275217481],"luv":[83.082156377860457,-15.2870500651298524,93.0317604034238457],"rgb":[0.733333333333333282,0.866666666666666696,0.0666666666666666657],"xyz":[0.464495451128093206,0.623178385481720332,0.101118623477297692],"hpluv":[99.3314951275217481,237.15213625798873,83.082156377860457],"hsluv":[99.3314951275217481,98.93507934353417,83.082156377860457]},"#bbdd22":{"lch":[83.1218967422411765,92.5513012339483794,99.5354402549794486],"luv":[83.1218967422411765,-15.3318301742674485,91.2725497814347],"rgb":[0.733333333333333282,0.866666666666666696,0.133333333333333331],"xyz":[0.466370809266570263,0.623928528737111132,0.110995509673276885],"hpluv":[99.5354402549794486,233.433860498438293,83.1218967422411765],"hsluv":[99.5354402549794486,96.9737920722735538,83.1218967422411765]},"#bbdd33":{"lch":[83.1872593514570298,89.7372330308786,99.8847694763800718],"luv":[83.1872593514570298,-15.4049421957575614,88.4050832700449263],"rgb":[0.733333333333333282,0.866666666666666696,0.2],"xyz":[0.469458559999027969,0.625163629030094259,0.127257663530888021],"hpluv":[99.8847694763800718,227.34486653748678,83.1872593514570298],"hsluv":[99.8847694763800718,93.7802848880547373,83.1872593514570298]},"#bbdd44":{"lch":[83.2814760883348697,85.7419087717973,100.421139587323779],"luv":[83.2814760883348697,-15.5091702542505097,84.3275788686944452],"rgb":[0.733333333333333282,0.866666666666666696,0.266666666666666663],"xyz":[0.473916555243246884,0.626946827127781825,0.15073643848377466],"hpluv":[100.421139587323779,218.62539011377612,83.2814760883348697],"hsluv":[100.421139587323779,89.2463889616074511,83.2814760883348697]},"#bbdd55":{"lch":[83.4072088624658,80.5207963453540572,101.204557559233223],"luv":[83.4072088624658,-15.6461875861262687,78.9860459708531835],"rgb":[0.733333333333333282,0.866666666666666696,0.333333333333333315],"xyz":[0.479878969282608869,0.629331792743526575,0.182138485757748575],"hpluv":[101.204557559233223,207.093501481883948,83.4072088624658],"hsluv":[101.204557559233223,83.3201121340644448,83.4072088624658]},"#bbdd66":{"lch":[83.5666996797624364,74.0772937371066149,102.328486133362119],"luv":[83.5666996797624364,-15.816696660053216,72.3690372616455164],"rgb":[0.733333333333333282,0.866666666666666696,0.4],"xyz":[0.487463965056117055,0.632365791052929893,0.222086130164892537],"hpluv":[102.328486133362119,192.635686460640301,83.5666996797624364],"hsluv":[102.328486133362119,75.9999631534792854,83.5666996797624364]},"#bbdd77":{"lch":[83.7618505003220122,66.4632811318093388,103.948126608074304],"luv":[83.7618505003220122,-16.0205304866066705,64.5035684418593149],"rgb":[0.733333333333333282,0.866666666666666696,0.466666666666666674],"xyz":[0.49677797807631896,0.636091396261010744,0.271139932071290446],"hpluv":[103.948126608074304,175.207590447676779,83.7618505003220122],"hsluv":[103.948126608074304,67.3303268013154,83.7618505003220122]},"#bbdd88":{"lch":[83.9942706402616,57.7845188457632091,106.339844930601203],"luv":[83.9942706402616,-16.2567564016803381,55.4505950331715454],"rgb":[0.733333333333333282,0.866666666666666696,0.533333333333333326],"xyz":[0.50791839517826276,0.640547563101788286,0.329812795474862641],"hpluv":[106.339844930601203,154.850612540446264,83.9942706402616],"hsluv":[106.339844930601203,57.39610210967858,83.9942706402616]},"#bbdd99":{"lch":[84.2653073070245711,48.2191913160874819,110.040291826115165],"luv":[84.2653073070245711,-16.5237946272095257,45.2996095159246153],"rgb":[0.733333333333333282,0.866666666666666696,0.6],"xyz":[0.520975359287335515,0.6457703487454175,0.39857947311598052],"hpluv":[110.040291826115165,131.749772406416298,84.2653073070245711],"hsluv":[110.040291826115165,46.3161497548768466,84.2653073070245711]},"#bbddaa":{"lch":[84.5760668100806328,38.0784660246866622,116.212889721452115],"luv":[84.5760668100806328,-16.8195514991441222,34.1624393473425059],"rgb":[0.733333333333333282,0.866666666666666696,0.66666666666666663],"xyz":[0.536033052252588,0.651793425931518566,0.477883322732979121],"hpluv":[116.212889721452115,106.421399158629868,84.5760668100806328],"hsluv":[116.212889721452115,34.2356923349747433,84.5760668100806328]},"#bbddbb":{"lch":[84.9274305013996553,28.0212505683590543,127.715012949233824],"luv":[84.9274305013996553,-17.1415612181778,22.1665821095230058],"rgb":[0.733333333333333282,0.866666666666666696,0.733333333333333282],"xyz":[0.55317064435992469,0.658648462774453325,0.568141307831620868],"hpluv":[127.715012949233824,80.3800713533813109,84.9274305013996553],"hsluv":[127.715012949233824,21.3181094477761164,84.9274305013996553]},"#bbddcc":{"lch":[85.3200677868051,19.876471170849122,151.617083508593169],"luv":[85.3200677868051,-17.4871274790593141,9.44851727715650291],"rgb":[0.733333333333333282,0.866666666666666696,0.8],"xyz":[0.572463019803646445,0.666365412951942182,0.669747818501891],"hpluv":[151.617083508593169,58.7374284962306703,85.3200677868051],"hsluv":[151.617083508593169,24.0698773292010699,85.3200677868051]},"#bbdddd":{"lch":[85.7544476215988,18.2643967282432129,192.177050630059739],"luv":[85.7544476215988,-17.8534562098583329,-3.85256916996079246],"rgb":[0.733333333333333282,0.866666666666666696,0.866666666666666696],"xyz":[0.593981345354279933,0.674972743172195688,0.783077666401897],"hpluv":[192.177050630059739,55.8245506661868234,85.7544476215988],"hsluv":[192.177050630059739,26.9205986284609722,85.7544476215988]},"#bbddee":{"lch":[86.2308493598319359,25.3453434934362818,223.980933900351914],"luv":[86.2308493598319359,-18.2377721186398958,-17.6002870700688909],"rgb":[0.733333333333333282,0.866666666666666696,0.933333333333333348],"xyz":[0.617793525620454753,0.684497615278665705,0.908488482470420244],"hpluv":[223.980933900351914,80.4705047412629142,86.2308493598319359],"hsluv":[223.980933900351914,55.5800524236117397,86.2308493598319359]},"#bbddff":{"lch":[86.7493734858622076,36.743147173338194,239.520163688183],"luv":[86.7493734858622076,-18.6374141011141354,-31.6655279416778761],"rgb":[0.733333333333333282,0.866666666666666696,1],"xyz":[0.643964574030286063,0.694966034642598429,1.0463226707622022],"hpluv":[239.520163688183,121.752323062157373,86.7493734858622076],"hsluv":[239.520163688183,99.9999999999938325,86.7493734858622076]},"#99ee00":{"lch":[85.9664003491010646,109.204546268980621,112.979852313128234],"luv":[85.9664003491010646,-42.6342645949387915,100.538313136150634],"rgb":[0.6,0.933333333333333348,0],"xyz":[0.437097727388796042,0.679199404132492912,0.108068425671767623],"hpluv":[112.979852313128234,339.428934639809256,85.9664003491010646],"hsluv":[112.979852313128234,100.000000000002444,85.9664003491010646]},"#99ee11":{"lch":[85.9866468155118326,108.350123359521945,113.156064955940181],"luv":[85.9866468155118326,-42.6072764400583495,99.6211284135251702],"rgb":[0.6,0.933333333333333348,0.0666666666666666657],"xyz":[0.438109392888433147,0.67960407033234782,0.11339653063652326],"hpluv":[113.156064955940181,337.317445797395,85.9866468155118326],"hsluv":[113.156064955940181,99.0182391276988,85.9866468155118326]},"#99ee22":{"lch":[86.0241571186350455,106.77763062148405,113.488368653358094],"luv":[86.0241571186350455,-42.5576013317541353,97.9301433166804287],"rgb":[0.6,0.933333333333333348,0.133333333333333331],"xyz":[0.439984751026910204,0.680354213587738621,0.123273416832502453],"hpluv":[113.488368653358094,333.419677856626379,86.0241571186350455],"hsluv":[113.488368653358094,97.2091916908085238,86.0241571186350455]},"#99ee33":{"lch":[86.0858572784747906,104.220652596579697,114.05202992935186],"luv":[86.0858572784747906,-42.476800751453851,95.1717701084636],"rgb":[0.6,0.933333333333333348,0.2],"xyz":[0.443072501759367909,0.681589313880721748,0.139535570690113603],"hpluv":[114.05202992935186,327.048640581280779,86.0858572784747906],"hsluv":[114.05202992935186,94.2610252844147709,86.0858572784747906]},"#99ee44":{"lch":[86.1748066309051239,100.599171066032113,114.904029942881266],"luv":[86.1748066309051239,-42.3622716989010186,91.2448966007484756],"rgb":[0.6,0.933333333333333348,0.266666666666666663],"xyz":[0.447530497003586825,0.683372511978409314,0.163014345643000241],"hpluv":[114.904029942881266,317.953677409096201,86.1748066309051239],"hsluv":[114.904029942881266,90.0700159696272777,86.1748066309051239]},"#99ee55":{"lch":[86.2935317577421586,95.884762204841536,116.119599614249481],"luv":[86.2935317577421586,-42.2129155656731854,86.0927254913233355],"rgb":[0.6,0.933333333333333348,0.333333333333333315],"xyz":[0.45349291104294881,0.685757477594154063,0.194416392916974157],"hpluv":[116.119599614249481,305.984138616458665,86.2935317577421586],"hsluv":[116.119599614249481,84.5822993375075924,86.2935317577421586]},"#99ee66":{"lch":[86.4441689863048879,90.1009507230509143,117.805124209421223],"luv":[86.4441689863048879,-42.0290075887870955,79.6978283411745565],"rgb":[0.6,0.933333333333333348,0.4],"xyz":[0.461077906816457,0.688791475903557382,0.234364037324118091],"hpluv":[117.805124209421223,291.090686380889622,86.4441689863048879],"hsluv":[117.805124209421223,77.7887546135139587,86.4441689863048879]},"#99ee77":{"lch":[86.6285404402691199,83.3280712532883712,120.117619079442107],"luv":[86.6285404402691199,-41.8120893585486826,72.0785449510868261],"rgb":[0.6,0.933333333333333348,0.466666666666666674],"xyz":[0.470391919836658901,0.692517081111638233,0.283417839230516],"hpluv":[120.117619079442107,273.344218704658658,86.6285404402691199],"hsluv":[120.117619079442107,69.7211272565473,86.6285404402691199]},"#99ee88":{"lch":[86.8481992617441563,75.7142340291470646,123.296374810060541],"luv":[86.8481992617441563,-41.5648380664255939,63.2851441582641],"rgb":[0.6,0.933333333333333348,0.533333333333333326],"xyz":[0.481532336938602701,0.696973247952415775,0.342090702634088195],"hpluv":[123.296374810060541,252.981665625798911,86.8481992617441563],"hsluv":[123.296374810060541,60.4476982156994964,86.8481992617441563]},"#99ee99":{"lch":[87.1044587056640864,67.4980907628946483,127.715012949238613],"luv":[87.1044587056640864,-41.2908999939099388,53.3952604107227131],"rgb":[0.6,0.933333333333333348,0.6],"xyz":[0.4945893010476754,0.702196033596045,0.410857380275206074],"hpluv":[127.715012949238613,230.504268403717248,87.1044587056640864],"hsluv":[127.715012949238613,50.0680020008431583,87.1044587056640864]},"#99eeaa":{"lch":[87.3984122167822477,59.0554460818204134,133.961345837807],"luv":[87.3984122167822477,-40.9946911699179566,42.5085992218733182],"rgb":[0.6,0.933333333333333348,0.66666666666666663],"xyz":[0.509646994012928,0.708219110782146,0.490161229892204675],"hpluv":[133.961345837807,206.883546406693341,87.3984122167822477],"hsluv":[133.961345837807,51.4281429353489514,87.3984122167822477]},"#99eebb":{"lch":[87.7309483141988409,50.9899623050450046,142.923108379062683],"luv":[87.7309483141988409,-40.6811762109167603,30.7411476358032338],"rgb":[0.6,0.933333333333333348,0.733333333333333282],"xyz":[0.526784586120264575,0.715074147625080814,0.580419214990846477],"hpluv":[142.923108379062683,183.977628608542716,87.7309483141988409],"hsluv":[142.923108379062683,52.8887094272277523,87.7309483141988409]},"#99eecc":{"lch":[88.1027624984453581,44.2777406304916781,155.702396707036257],"luv":[88.1027624984453581,-40.3556400464907483,18.219237958245273],"rgb":[0.6,0.933333333333333348,0.8],"xyz":[0.546076961563986329,0.722791097802569671,0.682025725661116633],"hpluv":[155.702396707036257,165.259943503195302,88.1027624984453581],"hsluv":[155.702396707036257,54.4312604691531305,88.1027624984453581]},"#99eedd":{"lch":[88.514367527899708,40.3437945821223494,172.775068456479858],"luv":[88.514367527899708,-40.023467685182176,5.07383442158517628],"rgb":[0.6,0.933333333333333348,0.866666666666666696],"xyz":[0.567595287114619929,0.731398428022823177,0.795355573561122631],"hpluv":[172.775068456479858,156.503534311163719,88.514367527899708],"hsluv":[172.775068456479858,56.0368199873083199,88.514367527899708]},"#99eeee":{"lch":[88.9661029048661476,40.6035054290346196,192.177050630060762],"luv":[88.9661029048661476,-39.6899452486728,-8.56463071492281891],"rgb":[0.6,0.933333333333333348,0.933333333333333348],"xyz":[0.591407467380794638,0.740923300129293194,0.920766389629645854],"hpluv":[192.177050630060762,164.568757380081195,88.9661029048661476],"hsluv":[192.177050630060762,57.6866071933722324,88.9661029048661476]},"#99eeff":{"lch":[89.4581440962481338,45.3723498615675496,209.831659516829347],"luv":[89.4581440962481338,-39.3600920674606272,-22.5706287994267498],"rgb":[0.6,0.933333333333333348,1],"xyz":[0.617578515790626059,0.751391719493225918,1.05860057792142759],"hpluv":[209.831659516829347,193.255751503994162,89.4581440962481338],"hsluv":[209.831659516829347,99.9999999999917293,89.4581440962481338]},"#446600":{"lch":[39.1245088935371612,48.4489514943966242,110.29724752770484],"luv":[39.1245088935371612,-16.806485623906017,45.4405429311736668],"rgb":[0.266666666666666663,0.4,0],"xyz":[0.0713500585462719106,0.107314951185536064,0.0169546366210883669],"hpluv":[110.29724752770484,157.13568029472475,39.1245088935371612],"hsluv":[110.29724752770484,100.000000000002302,39.1245088935371612]},"#446611":{"lch":[39.1937103273453289,46.0071342898824156,111.370502443062165],"luv":[39.1937103273453289,-16.7648801632844737,42.843846683952],"rgb":[0.266666666666666663,0.4,0.0666666666666666657],"xyz":[0.0723617240459090288,0.107719617385390917,0.022282741585844],"hpluv":[111.370502443062165,148.9526145018813,39.1937103273453289],"hsluv":[111.370502443062165,93.861989786091,39.1937103273453289]},"#446622":{"lch":[39.3215343087732165,41.6757739733598,113.610346420587263],"luv":[39.3215343087732165,-16.6917518579939177,38.1871124358693947],"rgb":[0.266666666666666663,0.4,0.133333333333333331],"xyz":[0.0742370821843860579,0.108469760640781732,0.0321596277818231926],"hpluv":[113.610346420587263,134.490790122462073,39.3215343087732165],"hsluv":[113.610346420587263,82.9003633409612,39.3215343087732165]},"#446633":{"lch":[39.530716823468623,35.0960892868442684,118.194686061271412],"luv":[39.530716823468623,-16.5818151114938139,30.931842668007679],"rgb":[0.266666666666666663,0.4,0.2],"xyz":[0.0773248329168437915,0.109704860933764844,0.0484217816394343359],"hpluv":[118.194686061271412,112.658344014206364,39.530716823468623],"hsluv":[118.194686061271412,65.945418212904,39.530716823468623]},"#446644":{"lch":[39.8299759493166761,26.8801274380109838,127.715012949238059],"luv":[39.8299759493166761,-16.4434970133495142,21.2638815143349724],"rgb":[0.266666666666666663,0.4,0.266666666666666663],"xyz":[0.0817828281610626651,0.111488059031452424,0.0719005565923209744],"hpluv":[127.715012949238059,85.6368345314009,39.8299759493166761],"hsluv":[127.715012949238059,43.6044123282566858,39.8299759493166761]},"#446655":{"lch":[40.2252775564066809,18.9132283301115756,149.466153210293243],"luv":[40.2252775564066809,-16.2905155992652197,9.6088140463343148],"rgb":[0.266666666666666663,0.4,0.333333333333333315],"xyz":[0.087745242200424664,0.113873024647197257,0.10330260386629489],"hpluv":[149.466153210293243,59.6631175613842473,40.2252775564066809],"hsluv":[149.466153210293243,47.2452022491104273,40.2252775564066809]},"#446666":{"lch":[40.7202569602655728,16.510473073285187,192.177050630060847],"luv":[40.7202569602655728,-16.1389950297194247,-3.48260829470770128],"rgb":[0.266666666666666663,0.4,0.4],"xyz":[0.0953302379739328354,0.116907022956600576,0.143250248273438852],"hpluv":[192.177050630060847,51.4503500463259655,40.7202569602655728],"hsluv":[192.177050630060847,51.2489582821824214,40.7202569602655728]},"#446677":{"lch":[41.3164898648363632,23.6752994583974647,227.46784435344162],"luv":[41.3164898648363632,-16.0045942322577233,-17.4462823519963166],"rgb":[0.266666666666666663,0.4,0.466666666666666674],"xyz":[0.104644250994134755,0.120632628164681385,0.192304050179836761],"hpluv":[227.46784435344162,72.7128872034151783,41.3164898648363632],"hsluv":[227.46784435344162,55.4049423234493261,41.3164898648363632]},"#446688":{"lch":[42.0137303768536654,35.5424939627414,243.425378218088099],"luv":[42.0137303768536654,-15.9003964812462133,-31.7875175002811758],"rgb":[0.266666666666666663,0.4,0.533333333333333326],"xyz":[0.115784668096078583,0.125088795005458969,0.2509769135834089],"hpluv":[243.425378218088099,107.348500116853913,42.0137303768536654],"hsluv":[243.425378218088099,59.5313600522085409,42.0137303768536654]},"#446699":{"lch":[42.8101553746289696,48.7666560663799089,251.050944767945737],"luv":[42.8101553746289696,-15.8358652521886238,-46.1238779333558782],"rgb":[0.266666666666666663,0.4,0.6],"xyz":[0.128841632205151296,0.130311580649088155,0.319743591224526835],"hpluv":[251.050944767945737,144.549135771893674,42.8101553746289696],"hsluv":[251.050944767945737,63.4907652576423231,42.8101553746289696]},"#4466aa":{"lch":[43.7026231888915078,62.2363741998113298,255.27738032783347],"luv":[43.7026231888915078,-15.8167390859625119,-60.1929982491778404],"rgb":[0.266666666666666663,0.4,0.66666666666666663],"xyz":[0.143899325170403825,0.136334657835189249,0.399047440841525436],"hpluv":[255.27738032783347,180.707469421570693,43.7026231888915078],"hsluv":[255.27738032783347,67.1924648453768896,43.7026231888915078]},"#4466bb":{"lch":[44.6869405362706402,75.5191451090451409,257.888120209084718],"luv":[44.6869405362706402,-15.8455247037125186,-73.83807029483539],"rgb":[0.266666666666666663,0.4,0.733333333333333282],"xyz":[0.161036917277740499,0.143189694678124,0.489305425940167182],"hpluv":[257.888120209084718,214.444923406304468,44.6869405362706402],"hsluv":[257.888120209084718,70.5866413561882098,44.6869405362706402]},"#4466cc":{"lch":[45.7581261645645299,88.428992560325014,259.626929599743789],"luv":[45.7581261645645299,-15.9222446749778896,-86.983727499712],"rgb":[0.266666666666666663,0.4,0.8],"xyz":[0.180329292721462225,0.150906644855612809,0.590911936610437283],"hpluv":[259.626929599743789,245.225581131482073,45.7581261645645299],"hsluv":[259.626929599743789,73.6549291646736179,45.7581261645645299]},"#4466dd":{"lch":[46.9106590907269165,100.895184366494064,260.849495088158733],"luv":[46.9106590907269165,-16.0451985527389489,-99.6111933055317422],"rgb":[0.266666666666666663,0.4,0.866666666666666696],"xyz":[0.201847618272095769,0.159513975075866343,0.704241784510443281],"hpluv":[260.849495088158733,272.92180192815988,46.9106590907269165],"hsluv":[260.849495088158733,78.541907894368677,46.9106590907269165]},"#4466ee":{"lch":[48.1387014995781897,112.90717489320852,261.744736192665698],"luv":[48.1387014995781897,-16.2116120228509466,-111.737253313235385],"rgb":[0.266666666666666663,0.4,0.933333333333333348],"xyz":[0.225659798538270506,0.16903884718233636,0.829652600578966504],"hpluv":[261.744736192665698,297.623004098842955,48.1387014995781897],"hsluv":[261.744736192665698,89.2025828989012126,48.1387014995781897]},"#4466ff":{"lch":[49.4362898036433194,124.485902067172418,262.421323096893047],"luv":[49.4362898036433194,-16.4181334215125325,-123.398479360286501],"rgb":[0.266666666666666663,0.4,1],"xyz":[0.251830846948101872,0.179507266546269084,0.967486788870748349],"hpluv":[262.421323096893047,319.531462910383539,49.4362898036433194],"hsluv":[262.421323096893047,99.9999999999992,49.4362898036433194]},"#bbee00":{"lch":[87.830324097455545,103.474670767003104,103.901308289378321],"luv":[87.830324097455545,-24.8598111448325625,100.444000717728017],"rgb":[0.733333333333333282,0.933333333333333348,0],"xyz":[0.510662561968970863,0.717131271962896388,0.111516777292713254],"hpluv":[103.901308289378321,376.707439149390723,87.830324097455545],"hsluv":[103.901308289378321,100.000000000002331,87.830324097455545]},"#bbee11":{"lch":[87.8498503793181413,102.621932764236291,104.023160127863235],"luv":[87.8498503793181413,-24.8667401733108697,99.5635792718425705],"rgb":[0.733333333333333282,0.933333333333333348,0.0666666666666666657],"xyz":[0.511674227468608,0.717535938162751297,0.116844882257468891],"hpluv":[104.023160127863235,374.263941750279344,87.8498503793181413],"hsluv":[104.023160127863235,99.0733759990956315,87.8498503793181413]},"#bbee22":{"lch":[87.8860274909110757,101.050540606732312,104.253301125000391],"luv":[87.8860274909110757,-24.8795662288424886,97.9398741125263],"rgb":[0.733333333333333282,0.933333333333333348,0.133333333333333331],"xyz":[0.513549585607085,0.718286081418142097,0.126721768453448069],"hpluv":[104.253301125000391,369.744422226518111,87.8860274909110757],"hsluv":[104.253301125000391,97.3653524759520224,87.8860274909110757]},"#bbee33":{"lch":[87.9455377581158899,98.4895893313188111,104.644745385959411],"luv":[87.9455377581158899,-24.9006321902472507,95.2898615970127878],"rgb":[0.733333333333333282,0.933333333333333348,0.2],"xyz":[0.516637336339542785,0.719521181711125224,0.142983922311059219],"hpluv":[104.644745385959411,362.331462484484575,87.9455377581158899],"hsluv":[104.644745385959411,94.5802259429375454,87.9455377581158899]},"#bbee44":{"lch":[88.03133674845418,94.8494424101932339,105.239087045756335],"luv":[88.03133674845418,-24.9309340294718567,91.5142898892991781],"rgb":[0.733333333333333282,0.933333333333333348,0.266666666666666663],"xyz":[0.521095331583761645,0.72130437980881279,0.166462697263945858],"hpluv":[105.239087045756335,351.690778632920285,88.03133674845418],"hsluv":[105.239087045756335,90.61757843521751,88.03133674845418]},"#bbee55":{"lch":[88.145869167101,90.085489786575252,106.092871571181419],"luv":[88.145869167101,-24.9712578135623886,86.5553681367929499],"rgb":[0.733333333333333282,0.933333333333333348,0.333333333333333315],"xyz":[0.527057745623123575,0.72368934542455754,0.197864744537919773],"hpluv":[106.092871571181419,337.573290416608245,88.145869167101],"hsluv":[106.092871571181419,85.422816781051381,88.145869167101]},"#bbee66":{"lch":[88.2912067804751786,84.1961694748550116,107.288882190620882],"luv":[88.2912067804751786,-25.0222263001917433,80.3920589686599527],"rgb":[0.733333333333333282,0.933333333333333348,0.4],"xyz":[0.534642741396631815,0.726723343733960858,0.237812388945063735],"hpluv":[107.288882190620882,319.804166688067426,88.2912067804751786],"hsluv":[107.288882190620882,78.9823949944632631,88.2912067804751786]},"#bbee77":{"lch":[88.4691221578712828,77.2243366572971439,108.954917992899311],"luv":[88.4691221578712828,-25.0843250262429365,73.0368044901840534],"rgb":[0.733333333333333282,0.933333333333333348,0.466666666666666674],"xyz":[0.543956754416833665,0.730448948942041709,0.286866190851461644],"hpluv":[108.954917992899311,298.285685525501094,88.4691221578712828],"hsluv":[108.954917992899311,71.3203705839542,88.4691221578712828]},"#bbee88":{"lch":[88.6811325759484106,69.2626802552854599,111.298371855766348],"luv":[88.6811325759484106,-25.1579200624522237,64.5321465184381822],"rgb":[0.733333333333333282,0.933333333333333348,0.533333333333333326],"xyz":[0.555097171518777577,0.734905115782819252,0.34553905425503384],"hpluv":[111.298371855766348,273.019747479454225,88.6811325759484106],"hsluv":[111.298371855766348,62.4946759175697224,88.6811325759484106]},"#bbee99":{"lch":[88.9285282571087095,60.4678989000773228,114.674688063820184],"luv":[88.9285282571087095,-25.2432722518949362,54.9467378777547069],"rgb":[0.733333333333333282,0.933333333333333348,0.6],"xyz":[0.568154135627850221,0.740127901426448465,0.414305731896151719],"hpluv":[114.674688063820184,244.173567048365754,88.9285282571087095],"hsluv":[114.674688063820184,52.5925914284503548,88.9285282571087095]},"#bbeeaa":{"lch":[89.2123917942545148,51.0969811847688931,119.731125412935242],"luv":[89.2123917942545148,-25.3405499711494109,44.3706886734509212],"rgb":[0.733333333333333282,0.933333333333333348,0.66666666666666663],"xyz":[0.583211828593102832,0.746150978612549531,0.493609581513150319],"hpluv":[119.731125412935242,212.254877789093854,89.2123917942545148],"hsluv":[119.731125412935242,41.7253920748903084,89.2123917942545148]},"#bbeebb":{"lch":[89.5336124490095,41.6027669810227181,127.715012949236097],"luv":[89.5336124490095,-25.4498411950279184,32.9104208971130276],"rgb":[0.733333333333333282,0.933333333333333348,0.733333333333333282],"xyz":[0.600349420700439396,0.75300601545548429,0.583867566611792066],"hpluv":[127.715012949236097,178.587287563939924,89.5336124490095],"hsluv":[127.715012949236097,37.7465419844818,89.5336124490095]},"#bbeecc":{"lch":[89.8928974614309766,32.8889663829363883,141.03222670888556],"luv":[89.8928974614309766,-25.571165029146556,20.6833176446640721],"rgb":[0.733333333333333282,0.933333333333333348,0.8],"xyz":[0.61964179614416115,0.760722965632973147,0.685474077282062222],"hpluv":[141.03222670888556,146.627829178506289,89.8928974614309766],"hsluv":[141.03222670888556,37.1073685119788,89.8928974614309766]},"#bbeedd":{"lch":[90.290781675649967,26.8655052232995288,163.094148385079734],"luv":[90.290781675649967,-25.704482585445124,7.81248653872008436],"rgb":[0.733333333333333282,0.933333333333333348,0.866666666666666696],"xyz":[0.641160121694794749,0.769330295853226653,0.79880392518206822],"hpluv":[163.094148385079734,125.084011642469022,90.290781675649967],"hsluv":[163.094148385079734,36.2429238875219255,90.290781675649967]},"#bbeeee":{"lch":[90.7276363011350782,26.4447005646089579,192.177050630060336],"luv":[90.7276363011350782,-25.8497069757021904,-5.5780675168164624],"rgb":[0.733333333333333282,0.933333333333333348,0.933333333333333348],"xyz":[0.664972301960969459,0.77885516795969667,0.924214741250591443],"hpluv":[192.177050630060336,129.38009793870765,90.7276363011350782],"hsluv":[192.177050630060336,36.8413123479339077,90.7276363011350782]},"#bbeeff":{"lch":[91.2036773284388289,32.4261328799939648,216.675663960190036],"luv":[91.2036773284388289,-26.0067122100428421,-19.367627980086624],"rgb":[0.733333333333333282,0.933333333333333348,1],"xyz":[0.69114335037080088,0.789323587323629394,1.06204892954237318],"hpluv":[216.675663960190036,167.86892764061264,91.2036773284388289],"hsluv":[216.675663960190036,99.9999999999901235,91.2036773284388289]},"#99ff00":{"lch":[90.9122626200542214,118.290950299530564,115.261698016578393],"luv":[90.9122626200542214,-50.4810643573161286,106.978554225220847],"rgb":[0.6,1,0],"xyz":[0.48895009981846993,0.782904148991842,0.125352549814991721],"hpluv":[115.261698016578393,591.369219456757151,90.9122626200542214],"hsluv":[115.261698016578393,100.000000000002402,90.9122626200542214]},"#99ff11":{"lch":[90.9306796583728,117.513960007406183,115.422432906031332],"luv":[90.9306796583728,-50.4474247175277384,106.134764031356056],"rgb":[0.6,1,0.0666666666666666657],"xyz":[0.489961765318107034,0.783308815191696928,0.130680654779747357],"hpluv":[115.422432906031332,588.764777700997797,90.9306796583728],"hsluv":[115.422432906031332,99.9999999999905356,90.9306796583728]},"#99ff22":{"lch":[90.9648031673089577,116.082935310332914,115.724658723180369],"luv":[90.9648031673089577,-50.3854319755480944,104.577990585497247],"rgb":[0.6,1,0.133333333333333331],"xyz":[0.491837123456584091,0.784058958447087728,0.140557540975726536],"hpluv":[115.724658723180369,583.951350293788323,90.9648031673089577],"hsluv":[115.724658723180369,99.9999999999904219,90.9648031673089577]},"#99ff33":{"lch":[91.0209396556716399,113.753057852482627,116.234667099004312],"luv":[91.0209396556716399,-50.2843870930134642,102.035477092383132],"rgb":[0.6,1,0.2],"xyz":[0.494924874189041797,0.785294058740070855,0.156819694833337686],"hpluv":[116.234667099004312,576.067585056329449,91.0209396556716399],"hsluv":[116.234667099004312,99.9999999999905924,91.0209396556716399]},"#99ff44":{"lch":[91.1018839706868562,110.446777199697451,116.999375135233294],"luv":[91.1018839706868562,-50.1407143313292565,98.409345898362929],"rgb":[0.6,1,0.266666666666666663],"xyz":[0.499382869433260712,0.787077256837758421,0.180298469786224325],"hpluv":[116.999375135233294,564.777897061868,91.1018839706868562],"hsluv":[116.999375135233294,99.9999999999903793,91.1018839706868562]},"#99ff55":{"lch":[91.2099533036034558,106.130684884370282,118.07780645420398],"luv":[91.2099533036034558,-49.9525457622324112,93.6400846106921279],"rgb":[0.6,1,0.333333333333333315],"xyz":[0.505345283472622642,0.789462222453503171,0.21170051706019824],"hpluv":[118.07780645420398,549.854625367801646,91.2099533036034558],"hsluv":[118.07780645420398,99.9999999999901377,91.2099533036034558]},"#99ff66":{"lch":[91.3471179899501351,100.815112661229691,119.549522622156928],"luv":[91.3471179899501351,-49.7195590247369807,87.7020660605103899],"rgb":[0.6,1,0.4],"xyz":[0.512930279246130882,0.792496220762906489,0.251648161467342202],"hpluv":[119.549522622156928,531.176396965461777,91.3471179899501351],"hsluv":[119.549522622156928,99.9999999999902656,91.3471179899501351]},"#99ff77":{"lch":[91.5150716426202,94.5571579863012488,121.52621580287979],"luv":[91.5150716426202,-49.442863485124569,80.6006164792656534],"rgb":[0.6,1,0.466666666666666674],"xyz":[0.522244292266332732,0.79622182597098734,0.300701963373740111],"hpluv":[121.52621580287979,508.746904082031563,91.5150716426202],"hsluv":[121.52621580287979,99.9999999999900098,91.5150716426202]},"#99ff88":{"lch":[91.7152730008064481,87.4673964918121385,124.169042550433474],"luv":[91.7152730008064481,-49.1248751175299461,72.3691377159004077],"rgb":[0.6,1,0.533333333333333326],"xyz":[0.533384709368276644,0.800677992811764883,0.359374826777312251],"hpluv":[124.169042550433474,482.74240688111388,91.7152730008064481],"hsluv":[124.169042550433474,99.999999999989754,91.7152730008064481]},"#99ff99":{"lch":[91.9489728509177,79.7227767672504,127.715012949239039],"luv":[91.9489728509177,-48.7691602166467675,63.0657604984184559],"rgb":[0.6,1,0.6],"xyz":[0.546441673477349288,0.805900778455394096,0.428141504418430185],"hpluv":[127.715012949239039,453.611771943482722,91.9489728509177],"hsluv":[127.715012949239039,99.9999999999896119,91.9489728509177]},"#99ffaa":{"lch":[92.2172324754492365,71.5909188251234525,132.515331265000469],"luv":[92.2172324754492365,-48.380245540777544,52.769418223432119],"rgb":[0.6,1,0.66666666666666663],"xyz":[0.561499366442601899,0.811923855641495162,0.507445354035428786],"hpluv":[132.515331265000469,422.278899597361089,92.2172324754492365],"hsluv":[132.515331265000469,99.999999999989285,92.2172324754492365]},"#99ffbb":{"lch":[92.5209371039878334,63.4744472180726902,139.080731133451],"luv":[92.5209371039878334,-47.9634018094000325,41.5754439123617558],"rgb":[0.6,1,0.733333333333333282],"xyz":[0.578636958549938463,0.818778892484429921,0.597703339134070477],"hpluv":[139.080731133451,390.542311531215887,92.5209371039878334],"hsluv":[139.080731133451,99.9999999999889866,92.5209371039878334]},"#99ffcc":{"lch":[92.8608063839845,55.9838497302527216,148.091690615728766],"luv":[92.8608063839845,-47.524412431304512,29.5909049148346774],"rgb":[0.6,1,0.8],"xyz":[0.597929333993660217,0.826495842661918778,0.699309849804340633],"hpluv":[148.091690615728766,361.818313682118117,92.8608063839845],"hsluv":[148.091690615728766,99.999999999988475,92.8608063839845]},"#99ffdd":{"lch":[93.237403107538583,50.0214511206169306,160.217319691395858],"luv":[93.237403107538583,-47.0693412211659066,16.9299347080170577],"rgb":[0.6,1,0.866666666666666696],"xyz":[0.619447659544293816,0.835103172882172284,0.812639697704346631],"hpluv":[160.217319691395858,342.295010089686684,93.237403107538583],"hsluv":[160.217319691395858,99.999999999988,93.237403107538583]},"#99ffee":{"lch":[93.6511409780710267,46.7516947594382444,175.449324589633676],"luv":[93.6511409780710267,-46.6043124006013088,3.70931645277729727],"rgb":[0.6,1,0.933333333333333348],"xyz":[0.643259839810468526,0.844628044988642301,0.938050513772869854],"hpluv":[175.449324589633676,341.869484566500148,93.6511409780710267],"hsluv":[175.449324589633676,99.9999999999875,93.6511409780710267]},"#99ffff":{"lch":[94.102291921527609,47.1972299789563579,192.177050630060847],"luv":[94.102291921527609,-46.1353140316371437,-9.95546668362271703],"rgb":[0.6,1,1],"xyz":[0.6694308882203,0.855096464352575,1.07588470206465181],"hpluv":[192.177050630060847,372.830957625984183,94.102291921527609],"hsluv":[192.177050630060847,99.999999999986585,94.102291921527609]},"#447700":{"lch":[44.83248944102629,58.4741115144389809,115.479055163134589],"luv":[44.83248944102629,-25.1544589141716,52.7870714677211339],"rgb":[0.266666666666666663,0.466666666666666674,0],"xyz":[0.0898037965996895393,0.144222427292371835,0.0231058826388940708],"hpluv":[115.479055163134589,165.50461307776385,44.83248944102629],"hsluv":[115.479055163134589,100.00000000000216,44.83248944102629]},"#447711":{"lch":[44.8893318820142468,56.4264635629906337,116.3750363045054],"luv":[44.8893318820142468,-25.0671673404006405,50.5527735317644158],"rgb":[0.266666666666666663,0.466666666666666674,0.0666666666666666657],"xyz":[0.0908154620993266576,0.144627093492226688,0.0284339876036497],"hpluv":[116.3750363045054,159.506732057184706,44.8893318820142468],"hsluv":[116.3750363045054,95.4073228169634433,44.8893318820142468]},"#447722":{"lch":[44.9944227930058389,52.7636609180533824,118.171656995978211],"luv":[44.9944227930058389,-24.9105023189221484,46.5131248971114388],"rgb":[0.266666666666666663,0.466666666666666674,0.133333333333333331],"xyz":[0.0926908202378036866,0.145377236747617516,0.0383108737996289],"hpluv":[118.171656995978211,148.804327803607492,44.9944227930058389],"hsluv":[118.171656995978211,87.128369469673089,44.9944227930058389]},"#447733":{"lch":[45.1666686690004795,47.1090234718488,121.574089601592789],"luv":[45.1666686690004795,-24.6663168629185812,40.1351828809748881],"rgb":[0.266666666666666663,0.466666666666666674,0.2],"xyz":[0.0957785709702614202,0.146612337040600615,0.0545730276572400433],"hpluv":[121.574089601592789,132.350433634303585,45.1666686690004795],"hsluv":[121.574089601592789,74.1245535442141232,45.1666686690004795]},"#447744":{"lch":[45.4136534494367368,39.7908238780444137,127.715012949239082],"luv":[45.4136534494367368,-24.3414133770851677,31.4770592606648769],"rgb":[0.266666666666666663,0.466666666666666674,0.266666666666666663],"xyz":[0.100236566214480294,0.148395535138288209,0.0780518026101266749],"hpluv":[127.715012949239082,111.18234158710581,45.4136534494367368],"hsluv":[127.715012949239082,56.6116285441109,45.4136534494367368]},"#447755":{"lch":[45.7409133262359902,31.7219583115713704,139.030718806592802],"luv":[45.7409133262359902,-23.9520203549447466,20.798638417872084],"rgb":[0.266666666666666663,0.466666666666666674,0.333333333333333315],"xyz":[0.106198980253842293,0.150780500754033042,0.10945384988410059],"hpluv":[139.030718806592802,88.0023935360314766,45.7409133262359902],"hsluv":[139.030718806592802,58.7992252631310066,45.7409133262359902]},"#447766":{"lch":[46.1522822994750328,25.0075472636366349,160.141849635166039],"luv":[46.1522822994750328,-23.5205108300662609,8.49488024846472],"rgb":[0.266666666666666663,0.466666666666666674,0.4],"xyz":[0.113783976027350464,0.153814499063436333,0.149401494291244552],"hpluv":[160.141849635166039,68.7570511480334,46.1522822994750328],"hsluv":[160.141849635166039,61.2825519214888672,46.1522822994750328]},"#447777":{"lch":[46.650089933282672,23.6026970305602966,192.177050630060933],"luv":[46.650089933282672,-23.0716472128555,-4.97859438013953248],"rgb":[0.266666666666666663,0.466666666666666674,0.466666666666666674],"xyz":[0.123097989047552384,0.157540104271517156,0.198455296197642461],"hpluv":[192.177050630060933,64.2019875277067,46.650089933282672],"hsluv":[192.177050630060933,63.9506821134950414,46.650089933282672]},"#447788":{"lch":[47.2353114433284134,29.6592888392359697,220.273189901853613],"luv":[47.2353114433284134,-22.6291741496980734,-19.1727382434503575],"rgb":[0.266666666666666663,0.466666666666666674,0.533333333333333326],"xyz":[0.134238406149496226,0.161996271112294754,0.257128159601214601],"hpluv":[220.273189901853613,79.6770556088496,47.2353114433284134],"hsluv":[220.273189901853613,66.6958169909158585,47.2353114433284134]},"#447799":{"lch":[47.9077085122244526,40.3569508451274856,236.603980798736757],"luv":[47.9077085122244526,-22.2133832668581981,-33.6934576046404],"rgb":[0.266666666666666663,0.466666666666666674,0.6],"xyz":[0.147295370258568925,0.167219056755923912,0.325894837242332536],"hpluv":[236.603980798736757,106.893740352524901,47.9077085122244526],"hsluv":[236.603980798736757,69.4246608010291197,47.9077085122244526]},"#4477aa":{"lch":[48.6659751090485,52.9419227285019574,245.636459716194196],"luv":[48.6659751090485,-21.8398581964299439,-48.2272513849846476],"rgb":[0.266666666666666663,0.466666666666666674,0.66666666666666663],"xyz":[0.162353063223821481,0.173242133942025,0.405198686859331136],"hpluv":[245.636459716194196,138.042751347741245,48.6659751090485],"hsluv":[245.636459716194196,72.0643617009564,48.6659751090485]},"#4477bb":{"lch":[49.5078912458612,66.145388752002,251.014275727268966],"luv":[49.5078912458612,-21.5192486824625604,-62.5470573991759125],"rgb":[0.266666666666666663,0.466666666666666674,0.733333333333333282],"xyz":[0.1794906553311581,0.180097170784959765,0.495456671957972883],"hpluv":[251.014275727268966,169.536991245322184,49.5078912458612],"hsluv":[251.014275727268966,74.5637193650047578,49.5078912458612]},"#4477cc":{"lch":[50.4304819457797606,79.4031370336833,254.471410742848605],"luv":[50.4304819457797606,-21.2577420931439356,-76.5046833330565761],"rgb":[0.266666666666666663,0.466666666666666674,0.8],"xyz":[0.198783030774879854,0.187814120962448566,0.597063182628243094],"hpluv":[254.471410742848605,199.794656417231295,50.4304819457797606],"hsluv":[254.471410742848605,76.8911855438839638,50.4304819457797606]},"#4477dd":{"lch":[51.4301761714764183,92.4467030892661654,256.833353640671476],"luv":[51.4301761714764183,-21.0578873175855144,-90.0164334652001514],"rgb":[0.266666666666666663,0.466666666666666674,0.866666666666666696],"xyz":[0.220301356325513398,0.1964214511827021,0.710393030528249092],"hpluv":[256.833353640671476,228.093412194404408,51.4301761714764183],"hsluv":[256.833353640671476,79.0312420746427904,51.4301761714764183]},"#4477ee":{"lch":[52.5029598761355913,105.148975578657073,258.524369979875587],"luv":[52.5029598761355913,-20.9195063280493,-103.046985983248078],"rgb":[0.266666666666666663,0.466666666666666674,0.933333333333333348],"xyz":[0.244113536591688135,0.205946323289172145,0.835803846596772315],"hpluv":[258.524369979875587,254.132720010738154,52.5029598761355913],"hsluv":[258.524369979875587,87.6254974090696,52.5029598761355913]},"#4477ff":{"lch":[53.6445179522116,117.458222301342076,259.779939364455799],"luv":[53.6445179522116,-20.8405325230258285,-115.594576820663164],"rgb":[0.266666666666666663,0.466666666666666674,1],"xyz":[0.270284585001519528,0.216414742653104841,0.973638034888554],"hpluv":[259.779939364455799,277.841684308431127,53.6445179522116],"hsluv":[259.779939364455799,99.999999999999,53.6445179522116]},"#bbff00":{"lch":[92.6117448358007778,112.09772632761252,107.605046807390437],"luv":[92.6117448358007778,-33.9043888880720843,106.847520616749406],"rgb":[0.733333333333333282,1,0],"xyz":[0.56251493439864475,0.820836016822245496,0.128800901435937365],"hpluv":[107.605046807390437,698.685604225905081,92.6117448358007778],"hsluv":[107.605046807390437,100.000000000002302,92.6117448358007778]},"#bbff11":{"lch":[92.6295901709342,111.320425805292416,107.729052066712285],"luv":[92.6295901709342,-33.8988588935206678,106.033506813595423],"rgb":[0.733333333333333282,1,0.0666666666666666657],"xyz":[0.56352659989828191,0.821240683022100404,0.134129006400693],"hpluv":[107.729052066712285,695.618439183936061,92.6295901709342],"hsluv":[107.729052066712285,99.9999999999893703,92.6295901709342]},"#bbff22":{"lch":[92.6626551654141,109.887399193340656,107.962519071076329],"luv":[92.6626551654141,-33.888700280085942,104.531318248662245],"rgb":[0.733333333333333282,1,0.133333333333333331],"xyz":[0.565401958036758856,0.821990826277491204,0.14400589259667218],"hpluv":[107.962519071076329,689.937572971075,92.6626551654141],"hsluv":[107.962519071076329,99.9999999999891713,92.6626551654141]},"#bbff33":{"lch":[92.7170524122382318,107.550157892444602,108.357408717671873],"luv":[92.7170524122382318,-33.8722333827189388,102.076972272674624],"rgb":[0.733333333333333282,1,0.2],"xyz":[0.568489708769216673,0.823225926570474331,0.160268046454283331],"hpluv":[108.357408717671873,680.59767216104342,92.7170524122382318],"hsluv":[108.357408717671873,99.9999999999894271,92.7170524122382318]},"#bbff44":{"lch":[92.7954935084343475,104.224206838295117,108.951712424811362],"luv":[92.7954935084343475,-33.8490183743317,98.5744857768270464],"rgb":[0.733333333333333282,1,0.266666666666666663],"xyz":[0.572947704013435533,0.825009124668161897,0.183746821407169969],"hpluv":[108.951712424811362,667.142517523628385,92.7954935084343475],"hsluv":[108.951712424811362,99.9999999999890576,92.7954935084343475]},"#bbff55":{"lch":[92.9002292713318809,99.8647848732016,109.794505003516988],"luv":[92.9002292713318809,-33.8189779888925628,93.9640994505754605],"rgb":[0.733333333333333282,1,0.333333333333333315],"xyz":[0.578910118052797462,0.827394090283906647,0.215148868681143884],"hpluv":[109.794505003516988,649.201221057988732,92.9002292713318809],"hsluv":[109.794505003516988,99.9999999999888445,92.9002292713318809]},"#bbff66":{"lch":[93.0331768315467826,94.4651128464689691,110.953951756581517],"luv":[93.0331768315467826,-33.7823795150753,88.2179595059619146],"rgb":[0.733333333333333282,1,0.4],"xyz":[0.586495113826305703,0.83042808859331,0.255096513088287846],"hpluv":[110.953951756581517,626.470359589551208,93.0331768315467826],"hsluv":[110.953951756581517,99.9999999999888871,93.0331768315467826]},"#bbff77":{"lch":[93.1959878807374196,88.0576290523864742,112.529317332402641],"luv":[93.1959878807374196,-33.7398191848892566,81.3373876867131571],"rgb":[0.733333333333333282,1,0.466666666666666674],"xyz":[0.595809126846507553,0.834153693801390816,0.304150314994685755],"hpluv":[112.529317332402641,598.713569857690459,93.1959878807374196],"hsluv":[112.529317332402641,99.9999999999886455,93.1959878807374196]},"#bbff88":{"lch":[93.3900894470196334,80.7182094219550805,114.670873894576516],"luv":[93.3900894470196334,-33.6921989698203319,73.3502901212028888],"rgb":[0.733333333333333282,1,0.533333333333333326],"xyz":[0.606949543948451464,0.838609860642168359,0.362823178398257951],"hpluv":[114.670873894576516,565.785048639302204,93.3900894470196334],"hsluv":[114.670873894576516,99.9999999999880913,93.3900894470196334]},"#bbff99":{"lch":[93.6167101348934239,72.575742292483838,117.61482369288214],"luv":[93.6167101348934239,-33.6406927329059684,64.3081811417119411],"rgb":[0.733333333333333282,1,0.6],"xyz":[0.620006508057524108,0.843832646285797572,0.43158985603937583],"hpluv":[117.61482369288214,527.702623330867254,93.6167101348934239],"hsluv":[117.61482369288214,99.9999999999881,93.6167101348934239]},"#bbffaa":{"lch":[93.8768980816178384,63.8331941826517948,121.746607961207644],"luv":[93.8768980816178384,-33.5867019719833948,54.2826872050868303],"rgb":[0.733333333333333282,1,0.66666666666666663],"xyz":[0.63506420102277672,0.849855723471898639,0.510893705656374486],"hpluv":[121.746607961207644,484.836572610502856,93.8768980816178384],"hsluv":[121.746607961207644,99.9999999999878781,93.8768980816178384]},"#bbffbb":{"lch":[94.1715339943383,54.8143223318485937,127.715012949237362],"luv":[94.1715339943383,-33.5318032859449531,43.3615970772812602],"rgb":[0.733333333333333282,1,0.733333333333333282],"xyz":[0.652201793130113283,0.856710760314833397,0.601151690755016177],"hpluv":[127.715012949237362,438.38038704048256,94.1715339943383],"hsluv":[127.715012949237362,99.999999999986926,94.1715339943383]},"#bbffcc":{"lch":[94.5013412228876888,46.0666753200389323,136.612331153023604],"luv":[94.5013412228876888,-33.4776907719138919,31.6446329670924698],"rgb":[0.733333333333333282,1,0.8],"xyz":[0.671494168573835,0.864427710492322254,0.702758201425286333],"hpluv":[136.612331153023604,391.513584290668746,94.5013412228876888],"hsluv":[136.612331153023604,99.9999999999865707,94.5013412228876888]},"#bbffdd":{"lch":[94.8668940681869515,38.5674836948257322,150.076437256866],"luv":[94.8668940681869515,-33.4261169986321818,19.2391658068743077],"rgb":[0.733333333333333282,1,0.866666666666666696],"xyz":[0.693012494124468637,0.873035040712575761,0.816088049325292331],"hpluv":[150.076437256866,352.109825744613431,94.8668940681869515],"hsluv":[150.076437256866,99.9999999999853628,94.8668940681869515]},"#bbffee":{"lch":[95.2686250900245568,33.9600576278843675,169.384373669661102],"luv":[95.2686250900245568,-33.3788361105619771,6.25610214058809699],"rgb":[0.733333333333333282,1,0.933333333333333348],"xyz":[0.716824674390643346,0.882559912819045778,0.941498865393815554],"hpluv":[169.384373669661102,337.406400875084444,95.2686250900245568],"hsluv":[169.384373669661102,99.9999999999845,95.2686250900245568]},"#bbffff":{"lch":[95.7068319095003,34.1048965933827191,192.177050630060478],"luv":[95.7068319095003,-33.3375521201936849,-7.19385781613020914],"rgb":[0.733333333333333282,1,1],"xyz":[0.742995722800474767,0.893028332182978501,1.0793330536855974],"hpluv":[192.177050630060478,374.679972152143307,95.7068319095003],"hsluv":[192.177050630060478,99.9999999999829186,95.7068319095003]},"#448800":{"lch":[50.4956227619448157,68.4221216779621244,118.715311426014551],"luv":[50.4956227619448157,-32.873947818662586,60.0074186224478723],"rgb":[0.266666666666666663,0.533333333333333326,0],"xyz":[0.111876166324659992,0.18836716674231338,0.0304633392138840171],"hpluv":[118.715311426014551,171.942062028892252,50.4956227619448157],"hsluv":[118.715311426014551,100.000000000002373,50.4956227619448157]},"#448811":{"lch":[50.543205868460916,66.6756511812714763,119.435612575278299],"luv":[50.543205868460916,-32.7674265649617098,58.0683925794095899],"rgb":[0.266666666666666663,0.533333333333333326,0.0666666666666666657],"xyz":[0.112887831824297111,0.188771832942168233,0.0357914441786396503],"hpluv":[119.435612575278299,167.395510973175305,50.543205868460916],"hsluv":[119.435612575278299,96.4702491056824272,50.543205868460916]},"#448822":{"lch":[50.6312327062127565,63.5295563644356918,120.846986072134357],"luv":[50.6312327062127565,-32.5745953261955492,54.5426463530750425],"rgb":[0.266666666666666663,0.533333333333333326,0.133333333333333331],"xyz":[0.11476318996277414,0.189521976197559061,0.0456683303746188429],"hpluv":[120.846986072134357,159.219643782083125,50.6312327062127565],"hsluv":[120.846986072134357,90.0662104861249,50.6312327062127565]},"#448833":{"lch":[50.775662969350762,58.6076690216783831,123.408487274566809],"luv":[50.775662969350762,-32.2696404838739213,48.9237076599487182],"rgb":[0.266666666666666663,0.533333333333333326,0.2],"xyz":[0.117850940695231873,0.19075707649054216,0.0619304842322299931],"hpluv":[123.408487274566809,146.466455796741883,50.775662969350762],"hsluv":[123.408487274566809,79.8990388198805732,50.775662969350762]},"#448844":{"lch":[50.9830910358637652,52.0733509329185,127.715012949239537],"luv":[50.9830910358637652,-31.855056956676961,41.1933152789351382],"rgb":[0.266666666666666663,0.533333333333333326,0.266666666666666663],"xyz":[0.122308935939450747,0.192540274588229754,0.0854092591851166316],"hpluv":[127.715012949239537,129.607069016793787,50.9830910358637652],"hsluv":[127.715012949239537,65.9930987522981241,50.9830910358637652]},"#448855":{"lch":[51.2585265038955384,44.4350179761376651,134.860489600104756],"luv":[51.2585265038955384,-31.3437036744621551,31.4967151066136601],"rgb":[0.266666666666666663,0.533333333333333326,0.333333333333333315],"xyz":[0.128271349978812732,0.194925240203974587,0.116811306459090533],"hpluv":[134.860489600104756,110.001490313735033,51.2585265038955384],"hsluv":[134.860489600104756,67.3517725464548676,51.2585265038955384]},"#448866":{"lch":[51.6056896491522537,36.7437212642011914,146.829747927558799],"luv":[51.6056896491522537,-30.7562765884277063,20.1035445321824895],"rgb":[0.266666666666666663,0.533333333333333326,0.4],"xyz":[0.135856345752320917,0.197959238513377878,0.156758950866234509],"hpluv":[146.829747927558799,90.3493178961374781,51.6056896491522537],"hsluv":[146.829747927558799,68.9308752248562797,51.6056896491522537]},"#448877":{"lch":[52.0271709342862039,31.0045548915217921,166.266503182991642],"luv":[52.0271709342862039,-30.1181499011556575,7.36067052332227245],"rgb":[0.266666666666666663,0.533333333333333326,0.466666666666666674],"xyz":[0.145170358772522823,0.201684843721458701,0.205812752772632418],"hpluv":[166.266503182991642,75.6196418937204555,52.0271709342862039],"hsluv":[166.266503182991642,70.6726995402934506,52.0271709342862039]},"#448888":{"lch":[52.5245390493459041,30.1341009641634088,192.177050630061],"luv":[52.5245390493459041,-29.456097564679137,-6.35628485662009179],"rgb":[0.266666666666666663,0.533333333333333326,0.533333333333333326],"xyz":[0.156310775874466679,0.206141010562236299,0.264485616176204585],"hpluv":[192.177050630061,72.8006598676027181,52.5245390493459041],"hsluv":[192.177050630061,72.5156967272479847,52.5245390493459041]},"#448899":{"lch":[53.0984315279962118,35.4547108695225,215.690916113393854],"luv":[53.0984315279962118,-28.7954664423823949,-20.6847198484066084],"rgb":[0.266666666666666663,0.533333333333333326,0.6],"xyz":[0.169367739983539378,0.211363796205865456,0.333252293817322465],"hpluv":[215.690916113393854,84.7289026839812,53.0984315279962118],"hsluv":[215.690916113393854,74.4011420122721319,53.0984315279962118]},"#4488aa":{"lch":[53.7486427971268625,45.1587425535104146,231.425064236121358],"luv":[53.7486427971268625,-28.1581765792043193,-35.3048030832715654],"rgb":[0.266666666666666663,0.533333333333333326,0.66666666666666663],"xyz":[0.184425432948791934,0.217386873391966551,0.412556143434321065],"hpluv":[231.425064236121358,106.613859301848393,53.7486427971268625],"hsluv":[231.425064236121358,76.2778611087785,53.7486427971268625]},"#4488bb":{"lch":[54.4742155909258514,57.0545505189943469,241.113543257937238],"luv":[54.4742155909258514,-27.5616516575745152,-49.9557513488787208],"rgb":[0.266666666666666663,0.533333333333333326,0.733333333333333282],"xyz":[0.201563025056128553,0.224241910234901309,0.502814128532962812],"hpluv":[241.113543257937238,132.904176722924205,54.4742155909258514],"hsluv":[241.113543257937238,78.1047803623200707,54.4742155909258514]},"#4488cc":{"lch":[55.273536978614473,69.875332030770025,247.25266296501286],"luv":[55.273536978614473,-27.0185618464256976,-64.4403549195783398],"rgb":[0.266666666666666663,0.533333333333333326,0.8],"xyz":[0.220855400499850307,0.231958860412390111,0.604420639203233],"hpluv":[247.25266296501286,160.415361718249983,55.273536978614473],"hsluv":[247.25266296501286,79.8515774594708603,55.273536978614473]},"#4488dd":{"lch":[56.1444377207636194,82.97891177410213,251.348812353132246],"luv":[56.1444377207636194,-26.53714651812043,-78.6211145551246631],"rgb":[0.266666666666666663,0.533333333333333326,0.866666666666666696],"xyz":[0.242373726050483851,0.240566190632643645,0.717750487103239],"hpluv":[251.348812353132246,187.542769341675751,56.1444377207636194],"hsluv":[251.348812353132246,81.4979766670821,56.1444377207636194]},"#4488ee":{"lch":[57.0842924141545609,96.0325607902411775,254.216059778839536],"luv":[57.0842924141545609,-26.1218678035424112,-92.4115834426919776],"rgb":[0.266666666666666663,0.533333333333333326,0.933333333333333348],"xyz":[0.266185906316658616,0.25009106273911369,0.843161303171762189],"hpluv":[254.216059778839536,213.472145126724115,57.0842924141545609],"hsluv":[254.216059778839536,85.8050168900109469,57.0842924141545609]},"#4488ff":{"lch":[58.090117466996233,108.861046277687535,256.304473865935392],"luv":[58.090117466996233,-25.7741898685227575,-105.765866579412872],"rgb":[0.266666666666666663,0.533333333333333326,1],"xyz":[0.29235695472649,0.260559482103046358,0.980995491463544],"hpluv":[256.304473865935392,237.798754650411269,58.090117466996233],"hsluv":[256.304473865935392,99.9999999999988631,58.090117466996233]},"#449900":{"lch":[56.0984423000037538,78.159424491283,120.852962610827774],"luv":[56.0984423000037538,-40.0830169860907191,67.0987882610508279],"rgb":[0.266666666666666663,0.6,0],"xyz":[0.137745766777127493,0.240106367647249075,0.0390865393647062687],"hpluv":[120.852962610827774,176.794958777624345,56.0984423000037538],"hsluv":[120.852962610827774,100.000000000002416,56.0984423000037538]},"#449911":{"lch":[56.1389235634784143,76.6482268999804859,121.431666795625887],"luv":[56.1389235634784143,-39.9706170908808929,65.4010738159938256],"rgb":[0.266666666666666663,0.6,0.0666666666666666657],"xyz":[0.138757432276764625,0.240511033847103928,0.0444146443294619],"hpluv":[121.431666795625887,173.251641588156104,56.1389235634784143],"hsluv":[121.431666795625887,97.2234127009916,56.1389235634784143]},"#449922":{"lch":[56.21384509356389,73.9109075723002746,122.549403254372123],"luv":[56.21384509356389,-39.7660359546788555,62.3015621201611793],"rgb":[0.266666666666666663,0.6,0.133333333333333331],"xyz":[0.140632790415241626,0.241261177102494756,0.0542915305254411],"hpluv":[122.549403254372123,166.841685682494415,56.21384509356389],"hsluv":[122.549403254372123,92.1627352690631,56.21384509356389]},"#449933":{"lch":[56.3368647095541064,69.5846668696270143,124.526315047954697],"luv":[56.3368647095541064,-39.4395235157555177,57.3284383897480296],"rgb":[0.266666666666666663,0.6,0.2],"xyz":[0.143720541147699388,0.242496277395477855,0.0705536843830522342],"hpluv":[124.526315047954697,156.73291295139785,56.3368647095541064],"hsluv":[124.526315047954697,84.0665441712718859,56.3368647095541064]},"#449944":{"lch":[56.5137417426914368,63.7361451042890153,127.715012949239735],"luv":[56.5137417426914368,-38.9895886498958575,50.4193233757345922],"rgb":[0.266666666666666663,0.6,0.266666666666666663],"xyz":[0.148178536391918247,0.244279475493165449,0.0940324593359388727],"hpluv":[127.715012949239735,143.110354253444,56.5137417426914368],"hsluv":[127.715012949239735,72.8686777069245,56.5137417426914368]},"#449955":{"lch":[56.7489681974646629,56.6620380577650309,132.698160989074609],"luv":[56.7489681974646629,-38.4245724364924328,41.642992086692793],"rgb":[0.266666666666666663,0.6,0.333333333333333315],"xyz":[0.154140950431280233,0.246664441108910282,0.125434506609912788],"hpluv":[132.698160989074609,126.69910537289924,56.7489681974646629],"hsluv":[132.698160989074609,73.7405349232989664,56.7489681974646629]},"#449966":{"lch":[57.0460268500437166,48.9673458777373511,140.456743036678859],"luv":[57.0460268500437166,-37.7608817984154683,31.1755796757022061],"rgb":[0.266666666666666663,0.6,0.4],"xyz":[0.161725946204788418,0.249698439418313572,0.16538215101705675],"hpluv":[140.456743036678859,108.923224533285605,57.0460268500437166],"hsluv":[140.456743036678859,74.7718537787272766,57.0460268500437166]},"#449977":{"lch":[57.4075272841014481,41.7361359201695734,152.500832231763781],"luv":[57.4075272841014481,-37.0206846158697,19.2710651526888199],"rgb":[0.266666666666666663,0.6,0.466666666666666674],"xyz":[0.171039959224990323,0.253424044626394396,0.214435952923454659],"hpluv":[152.500832231763781,92.2534727828265915,57.4075272841014481],"hsluv":[152.500832231763781,75.9325502249844817,57.4075272841014481]},"#449988":{"lch":[57.8352917232380861,36.7607331244742284,170.245603374965924],"luv":[57.8352917232380861,-36.2292854489646174,6.22819200942437323],"rgb":[0.266666666666666663,0.6,0.533333333333333326],"xyz":[0.182180376326934179,0.257880211467172,0.273108816327026827],"hpluv":[170.245603374965924,80.6548633994409414,57.8352917232380861],"hsluv":[170.245603374965924,77.1878957355486222,57.8352917232380861]},"#449999":{"lch":[58.3304201548299517,36.2276744984656105,192.17705063006116],"luv":[58.3304201548299517,-35.4125684996312486,-7.64162232943372643],"rgb":[0.266666666666666663,0.6,0.6],"xyz":[0.195237340436006879,0.263102997110801151,0.341875493968144761],"hpluv":[192.17705063006116,78.8106081595615251,58.3304201548299517],"hsluv":[192.17705063006116,78.5021203184449803,58.3304201548299517]},"#4499aa":{"lch":[58.8933484328044585,41.0197173156303379,212.502133513081617],"luv":[58.8933484328044585,-34.5948579745346478,-22.041166266239177],"rgb":[0.266666666666666663,0.6,0.66666666666666663],"xyz":[0.210295033401259435,0.269126074296902273,0.421179343585143307],"hpluv":[212.502133513081617,88.3823902117899536,58.8933484328044585],"hsluv":[212.502133513081617,79.8414276244135692,58.8933484328044585]},"#4499bb":{"lch":[59.523905851944221,49.8962585520308082,227.36281958486083],"luv":[59.523905851944221,-33.7974051546762055,-36.7065664738854878],"rgb":[0.266666666666666663,0.6,0.733333333333333282],"xyz":[0.227432625508596054,0.275981111139837032,0.511437328683785108],"hpluv":[227.36281958486083,106.36919851968392,59.523905851944221],"hsluv":[227.36281958486083,81.1761313086710885,59.523905851944221]},"#4499cc":{"lch":[60.2213749252976385,61.1171242450200438,237.278146949597897],"luv":[60.2213749252976385,-33.0375484580145766,-51.4181219791773],"rgb":[0.266666666666666663,0.6,0.8],"xyz":[0.246725000952317808,0.283698061317325834,0.613043839354055264],"hpluv":[237.278146949597897,128.780934100622716,60.2213749252976385],"hsluv":[237.278146949597897,82.4818489079811741,60.2213749252976385]},"#4499dd":{"lch":[60.9845539619455508,73.4958381074912,243.904542785491344],"luv":[60.9845539619455508,-32.3284648877968195,-66.0038527445257728],"rgb":[0.266666666666666663,0.6,0.866666666666666696],"xyz":[0.268243326502951351,0.29230539153757934,0.726373687254061262],"hpluv":[243.904542785491344,152.926314240713424,60.9845539619455508],"hsluv":[243.904542785491344,83.7398679369964469,60.9845539619455508]},"#4499ee":{"lch":[61.8118218103912653,86.3580647779335351,248.479300934605874],"luv":[61.8118218103912653,-31.6793620640961606,-80.3376211460214193],"rgb":[0.266666666666666663,0.6,0.933333333333333348],"xyz":[0.292055506769126061,0.301830263644049357,0.851784503322584485],"hpluv":[248.479300934605874,177.284466220706,61.8118218103912653],"hsluv":[248.479300934605874,84.9368954206658344,61.8118218103912653]},"#4499ff":{"lch":[62.7012034705467585,99.3269113509348,251.755860244601337],"luv":[62.7012034705467585,-31.0959452870692914,-94.3338619225358173],"rgb":[0.266666666666666663,0.6,1],"xyz":[0.318226555178957482,0.312298683007982081,0.98961869161436633],"hpluv":[251.755860244601337,201.015886170810859,62.7012034705467585],"hsluv":[251.755860244601337,99.9999999999986073,62.7012034705467585]},"#330000":{"lch":[6.35863201887414942,21.3842798011123882,12.1770506300617836],"luv":[6.35863201887414942,20.9031433498234946,4.51065635013277699],"rgb":[0.2,0,0],"xyz":[0.0136521011456799905,0.00703936465324139522,0.000639942241203736136],"hpluv":[12.1770506300617836,426.746789183125031,6.35863201887414942],"hsluv":[12.1770506300617836,100.000000000002217,6.35863201887414942]},"#330011":{"lch":[6.72416549840036915,18.2596394021459751,358.956333183931122],"luv":[6.72416549840036915,18.2566101970553,-0.332588648601129133],"rgb":[0.2,0,0.0666666666666666657],"xyz":[0.0146637666453171122,0.00744403085309625,0.00596804720595936738],"hpluv":[358.956333183931122,344.582429927088697,6.72416549840036915],"hsluv":[358.956333183931122,99.9999999999970868,6.72416549840036915]},"#330022":{"lch":[7.4017671226143058,16.6083885778583671,334.642609555635659],"luv":[7.4017671226143058,15.0082373074967617,-7.11276205668364714],"rgb":[0.2,0,0.133333333333333331],"xyz":[0.0165391247837941326,0.00819417410848706854,0.0158449334019385643],"hpluv":[334.642609555635659,284.728805881674077,7.4017671226143058],"hsluv":[334.642609555635659,99.999999999998,7.4017671226143058]},"#330033":{"lch":[8.50665746950019,19.3767863388894384,307.715012949243601],"luv":[8.50665746950019,11.8534455994177517,-15.3282639670843448],"rgb":[0.2,0,0.2],"xyz":[0.0196268755162518696,0.00942927440147018139,0.0321070872595497075],"hpluv":[307.715012949243601,289.042783730483279,8.50665746950019],"hsluv":[307.715012949243601,99.9999999999987921,8.50665746950019]},"#330044":{"lch":[9.96321399083228343,25.9151774110163871,290.632214162589],"luv":[9.96321399083228343,9.13167627644372,-24.2530185467023678],"rgb":[0.2,0,0.266666666666666663],"xyz":[0.0240848707604707502,0.0112124724991577579,0.0555858622124363461],"hpluv":[290.632214162589,330.060881015257678,9.96321399083228343],"hsluv":[290.632214162589,99.9999999999994,9.96321399083228343]},"#330055":{"lch":[11.6870713271151807,34.2775786608295405,281.502617436257196],"luv":[11.6870713271151807,6.83538450996046,-33.589133919325],"rgb":[0.2,0,0.333333333333333315],"xyz":[0.0300472847998327422,0.0135974381149025891,0.0869879094864102614],"hpluv":[281.502617436257196,372.172061509357604,11.6870713271151807],"hsluv":[281.502617436257196,99.9999999999999289,11.6870713271151807]},"#330066":{"lch":[13.6097387714237676,43.4818398400869768,276.434806151814087],"luv":[13.6097387714237676,4.87312317733106592,-43.2079051375733059],"rgb":[0.2,0,0.4],"xyz":[0.0376322805733409205,0.0166314364243059024,0.126935553893554209],"hpluv":[276.434806151814087,405.412793254212261,13.6097387714237676],"hsluv":[276.434806151814087,100.00000000000027,13.6097387714237676]},"#330077":{"lch":[15.6735112457106673,53.108485659557914,273.408523183706109],"luv":[15.6735112457106673,3.15755804167271537,-53.0145364618510655],"rgb":[0.2,0,0.466666666666666674],"xyz":[0.046946293593542833,0.0203570416323867187,0.175989355799952119],"hpluv":[273.408523183706109,429.968801903614121,15.6735112457106673],"hsluv":[273.408523183706109,100.000000000000313,15.6735112457106673]},"#330088":{"lch":[17.8339183845063687,62.9511834901283365,271.47985970994057],"luv":[17.8339183845063687,1.62574911173865799,-62.9301870538574448],"rgb":[0.2,0,0.533333333333333326],"xyz":[0.058086710695486661,0.0248132084731643096,0.234662219203524286],"hpluv":[271.47985970994057,447.91587095992594,17.8339183845063687],"hsluv":[271.47985970994057,100.000000000000441,17.8339183845063687]},"#330099":{"lch":[20.0583065104412341,72.8932825114363,270.184356583024851],"luv":[20.0583065104412341,0.234543162084408924,-72.8929051746271313],"rgb":[0.2,0,0.6],"xyz":[0.0711436748045593814,0.0300359941167934706,0.303428896844642193],"hpluv":[270.184356583024851,461.139761646516433,20.0583065104412341],"hsluv":[270.184356583024851,100.000000000000625,20.0583065104412341]},"#3300aa":{"lch":[22.3232943619689834,82.8637729479105474,269.276671227287579],"luv":[22.3232943619689834,-1.04608331699459467,-82.8571697371855578],"rgb":[0.2,0,0.66666666666666663],"xyz":[0.0862013677698119235,0.0360590713028945756,0.382732746461640794],"hpluv":[269.276671227287579,471.026936966419044,22.3232943619689834],"hsluv":[269.276671227287579,100.000000000000554,22.3232943619689834]},"#3300bb":{"lch":[24.6123405885396807,92.8181896970849,268.61855571411644],"luv":[24.6123405885396807,-2.23769945956788,-92.7912120826788538],"rgb":[0.2,0,0.733333333333333282],"xyz":[0.10333895987714857,0.0429141081458293341,0.47299073156028254],"hpluv":[268.61855571411644,478.541387025058441,24.6123405885396807],"hsluv":[268.61855571411644,100.000000000000625,24.6123405885396807]},"#3300cc":{"lch":[26.9138017967000778,102.728605647013808,268.127719933063759],"luv":[26.9138017967000778,-3.35631165306985224,-102.673762910819349],"rgb":[0.2,0,0.8],"xyz":[0.122631335320870311,0.0506310583233181358,0.574597242230552752],"hpluv":[268.127719933063759,484.345947247320225,26.9138017967000778],"hsluv":[268.127719933063759,100.000000000000881,26.9138017967000778]},"#3300dd":{"lch":[29.2194977691074271,112.577730384171886,267.752877980499],"luv":[29.2194977691074271,-4.41413050162269105,-112.49115889867052],"rgb":[0.2,0,0.866666666666666696],"xyz":[0.144149660871503854,0.0592383885435716698,0.687927090130558749],"hpluv":[267.752877980499,488.89890937186334,29.2194977691074271],"hsluv":[267.752877980499,100.000000000000753,29.2194977691074271]},"#3300ee":{"lch":[31.5236887929336334,122.355215968494591,267.460804758990776],"luv":[31.5236887929336334,-5.42068013199621,-122.235081304851008],"rgb":[0.2,0,0.933333333333333348],"xyz":[0.167961841137678591,0.0687632606500417,0.813337906199082],"hpluv":[267.460804758990776,492.52103452607281,31.5236887929336334],"hsluv":[267.460804758990776,100.000000000000824,31.5236887929336334]},"#3300ff":{"lch":[33.8223579343154,132.055276159319874,267.229255072945307],"luv":[33.8223579343154,-6.38352242786170443,-131.900896899631505],"rgb":[0.2,0,1],"xyz":[0.194132889547509985,0.0792316800139744,0.951172094490863818],"hpluv":[267.229255072945307,495.440155164142311,33.8223579343154],"hsluv":[267.229255072945307,100.000000000000881,33.8223579343154]},"#331100":{"lch":[9.83576796362177319,19.9321083570360571,25.9770166386959609],"luv":[9.83576796362177319,17.918363864654,8.73047421223431108],"rgb":[0.2,0.0666666666666666657,0],"xyz":[0.0156565014066084,0.0110481651750982679,0.00130807566151318702],"hpluv":[25.9770166386959609,257.148675223584291,9.83576796362177319],"hsluv":[25.9770166386959609,100.000000000002302,9.83576796362177319]},"#331111":{"lch":[10.1474261289244687,16.4836545456174051,12.1770506300618813],"luv":[10.1474261289244687,16.1127799065782149,3.4769513746129066],"rgb":[0.2,0.0666666666666666657,0.0666666666666666657],"xyz":[0.0166681669062455212,0.0114528313749531225,0.00663618062626881826],"hpluv":[12.1770506300618813,206.127972902374523,10.1474261289244687],"hsluv":[12.1770506300618813,48.3021731216650707,10.1474261289244687]},"#331122":{"lch":[10.7062693823806221,14.2435433110065777,342.375847990242676],"luv":[10.7062693823806221,13.5749958919169824,-4.31254131423193],"rgb":[0.2,0.0666666666666666657,0.133333333333333331],"xyz":[0.0185435250447225398,0.0122029746303439404,0.0165130668222480161],"hpluv":[342.375847990242676,168.818174775843545,10.7062693823806221],"hsluv":[342.375847990242676,57.1044970617697913,10.7062693823806221]},"#331133":{"lch":[11.5784810016780177,17.5377888786733784,307.715012949244169],"luv":[11.5784810016780177,10.7284677021084427,-13.8735006223280077],"rgb":[0.2,0.0666666666666666657,0.2],"xyz":[0.0216312757771802804,0.0134380749233270532,0.0327752206798591628],"hpluv":[307.715012949244169,192.204068690519591,11.5784810016780177],"hsluv":[307.715012949244169,66.4967539441281,11.5784810016780177]},"#331144":{"lch":[12.7480449023252049,25.2894553184220108,288.641508688419037],"luv":[12.7480449023252049,8.08366941467993172,-23.9626968243691536],"rgb":[0.2,0.0666666666666666657,0.266666666666666663],"xyz":[0.0260892710213991574,0.0152212730210146297,0.0562539956327458],"hpluv":[288.641508688419037,251.73014018207067,12.7480449023252049],"hsluv":[288.641508688419037,74.5439781366083309,12.7480449023252049]},"#331155":{"lch":[14.1772863520069095,34.570642435857458,279.659572498507771],"luv":[14.1772863520069095,5.80074057604611415,-34.0805036230000695],"rgb":[0.2,0.0666666666666666657,0.333333333333333315],"xyz":[0.0320516850607611564,0.0176062386367594609,0.0876560429067197],"hpluv":[279.659572498507771,309.423764447612427,14.1772863520069095],"hsluv":[279.659572498507771,80.733364837348816,14.1772863520069095]},"#331166":{"lch":[15.8197098676790517,44.2946391552180785,274.993838621827194],"luv":[15.8197098676790517,3.85578699555013271,-44.1264995726595686],"rgb":[0.2,0.0666666666666666657,0.4],"xyz":[0.0396366808342693278,0.0206402369461627724,0.127603687313863678],"hpluv":[274.993838621827194,355.297359803625511,15.8197098676790517],"hsluv":[274.993838621827194,85.2848648605675095,15.8197098676790517]},"#331177":{"lch":[17.6293493428787755,54.1580116435351115,272.303494486185969],"luv":[17.6293493428787755,2.17675853502087469,-54.1142490242773135],"rgb":[0.2,0.0666666666666666657,0.466666666666666674],"xyz":[0.0489506938544712472,0.0243658421542435888,0.176657489220261588],"hpluv":[272.303494486185969,389.821469213037517,17.6293493428787755],"hsluv":[272.303494486185969,88.5936990192462588,17.6293493428787755]},"#331188":{"lch":[19.5658128626021437,64.0679547566568,270.623065923527406],"luv":[19.5658128626021437,0.696696562564985133,-64.064166587888522],"rgb":[0.2,0.0666666666666666657,0.533333333333333326],"xyz":[0.0600911109564150753,0.0288220089950211832,0.235330352623833755],"hpluv":[270.623065923527406,415.51077593183,19.5658128626021437],"hsluv":[270.623065923527406,91.0112456871911348,19.5658128626021437]},"#331199":{"lch":[21.5959931816331263,73.9854871429769645,269.508319412823],"luv":[21.5959931816331263,-0.634894604710849,-73.9827629696574576],"rgb":[0.2,0.0666666666666666657,0.6],"xyz":[0.0731480750654877887,0.0340447946386503442,0.304097030264951662],"hpluv":[269.508319412823,434.723064450461493,21.5959931816331263],"hsluv":[269.508319412823,92.7998436287799,21.5959931816331263]},"#3311aa":{"lch":[23.6938673935249824,83.8866252842298792,268.733700318675346],"luv":[23.6938673935249824,-1.85383566080119344,-83.8661385478044821],"rgb":[0.2,0.0666666666666666657,0.66666666666666663],"xyz":[0.0882057680307403308,0.0400678718247514457,0.383400879881950263],"hpluv":[268.733700318675346,449.258286440651602,23.6938673935249824],"hsluv":[268.733700318675346,94.1436997610677,23.6938673935249824]},"#3311bb":{"lch":[25.8394818705352094,93.7535423490500079,268.175268957576],"luv":[25.8394818705352094,-2.98531729009247,-93.7060007879569525],"rgb":[0.2,0.0666666666666666657,0.733333333333333282],"xyz":[0.105343360138076977,0.0469229086676862042,0.473658864980592],"hpluv":[268.175268957576,460.408371224539451,25.8394818705352094],"hsluv":[268.175268957576,95.1697562295976525,25.8394818705352094]},"#3311cc":{"lch":[28.017750605254669,103.572636018550753,267.760492630427507],"luv":[28.017750605254669,-4.04728980779695124,-103.493528189171812],"rgb":[0.2,0.0666666666666666657,0.8],"xyz":[0.124635735581798718,0.0546398588451750059,0.57526537565086211],"hpluv":[267.760492630427507,469.084508820223505,28.017750605254669],"hsluv":[267.760492630427507,95.9655004656031423,28.017750605254669]},"#3311dd":{"lch":[30.2173526676312889,113.33386550323506,267.444704079349265],"luv":[30.2173526676312889,-5.05282540459801588,-113.221173043455181],"rgb":[0.2,0.0666666666666666657,0.866666666666666696],"xyz":[0.146154061132432261,0.0632471890654285329,0.688595223550868107],"hpluv":[267.444704079349265,475.929488946899937,30.2173526676312889],"hsluv":[267.444704079349265,96.591763702558211,30.2173526676312889]},"#3311ee":{"lch":[32.429822932533412,123.030197380053124,267.199217974228532],"luv":[32.429822932533412,-6.01167404447580456,-122.883234180085807],"rgb":[0.2,0.0666666666666666657,0.933333333333333348],"xyz":[0.169966241398607,0.0727720611718985777,0.814006039619391331],"hpluv":[267.199217974228532,481.400425551936735,32.429822932533412],"hsluv":[267.199217974228532,97.0913881744298095,32.429822932533412]},"#3311ff":{"lch":[34.6488414224811834,132.657034918193688,267.004954598207064],"luv":[34.6488414224811834,-6.93127707868383425,-132.475832933200962],"rgb":[0.2,0.0666666666666666657,1],"xyz":[0.196137289808438392,0.0832404805358312738,0.951840227911173176],"hpluv":[267.004954598207064,485.826158631145177,34.6488414224811834],"hsluv":[267.004954598207064,99.999999999999531,34.6488414224811834]},"#88aa00":{"lch":[64.9493872277699467,75.8454165204624502,102.522158340464031],"luv":[64.9493872277699467,-16.4445883060260414,74.0412231301438624],"rgb":[0.533333333333333326,0.66666666666666663,0],"xyz":[0.245272120749672057,0.339833923051985953,0.0526729261635559762],"hpluv":[102.522158340464031,148.181371186867864,64.9493872277699467],"hsluv":[102.522158340464031,100.000000000002217,64.9493872277699467]},"#88aa11":{"lch":[64.9815053546997206,74.514883993558044,102.764001416735823],"luv":[64.9815053546997206,-16.4630035423646639,72.6734989589568414],"rgb":[0.533333333333333326,0.66666666666666663,0.0666666666666666657],"xyz":[0.246283786249309189,0.340238589251840806,0.0580010311283116059],"hpluv":[102.764001416735823,145.509915409181133,64.9815053546997206],"hsluv":[102.764001416735823,98.0498740713468635,64.9815053546997206]},"#88aa22":{"lch":[65.040976504183746,72.0784265262596762,103.230826782560158],"luv":[65.040976504183746,-16.4969246852166869,70.1651697527462801],"rgb":[0.533333333333333326,0.66666666666666663,0.133333333333333331],"xyz":[0.24815914438778619,0.340988732507231607,0.0678779173242908],"hpluv":[103.230826782560158,140.623392494363173,65.040976504183746],"hsluv":[103.230826782560158,94.4776072436414296,65.040976504183746]},"#88aa33":{"lch":[65.138705174337673,68.1506383708936596,104.056367163177015],"luv":[65.138705174337673,-16.5521781693680836,66.1100212389152],"rgb":[0.533333333333333326,0.66666666666666663,0.2],"xyz":[0.251246895120243952,0.342223832800214733,0.0841400711819019487],"hpluv":[104.056367163177015,132.760883332008575,65.138705174337673],"hsluv":[104.056367163177015,88.7139905695652544,65.138705174337673]},"#88aa44":{"lch":[65.2793887406011,62.6606585185119442,105.391240881396499],"luv":[65.2793887406011,-16.6306856640551395,60.4133960336360687],"rgb":[0.533333333333333326,0.66666666666666663,0.266666666666666663],"xyz":[0.255704890364462811,0.344007030897902299,0.107618846134788587],"hpluv":[105.391240881396499,121.803060858356815,65.2793887406011],"hsluv":[105.391240881396499,80.6421361820775,65.2793887406011]},"#88aa55":{"lch":[65.4667902277309821,55.6467221212728731,107.50018297907917],"luv":[65.4667902277309821,-16.7334615527701551,53.0711687011330397],"rgb":[0.533333333333333326,0.66666666666666663,0.333333333333333315],"xyz":[0.261667304403824796,0.34639199651364716,0.139020893408762503],"hpluv":[107.50018297907917,107.859366541167589,65.4667902277309821],"hsluv":[107.50018297907917,70.2829236383929157,65.4667902277309821]},"#88aa66":{"lch":[65.7039511656785606,47.2674293485405386,110.898270106627507],"luv":[65.7039511656785606,-16.8607549547505542,44.1579530727492582],"rgb":[0.533333333333333326,0.66666666666666663,0.4],"xyz":[0.269252300177333,0.349425994823050479,0.178968537815906464],"hpluv":[110.898270106627507,91.2871867148882075,65.7039511656785606],"hsluv":[110.898270106627507,57.7776943224234358,65.7039511656785606]},"#88aa77":{"lch":[65.993303036365262,37.8517489546572605,116.707912668539493],"luv":[65.993303036365262,-17.0121797895697142,33.8133204186420073],"rgb":[0.533333333333333326,0.66666666666666663,0.466666666666666674],"xyz":[0.278566313197534887,0.353151600031131274,0.228022339722304374],"hpluv":[116.707912668539493,72.782239014817236,65.993303036365262],"hsluv":[116.707912668539493,43.3670204896631262,65.993303036365262]},"#88aa88":{"lch":[66.3367341259492,28.0952907790087707,127.715012949235486],"luv":[66.3367341259492,-17.1868541575625393,22.2251526006848934],"rgb":[0.533333333333333326,0.66666666666666663,0.533333333333333326],"xyz":[0.289706730299478743,0.357607766871908872,0.286695203125876541],"hpluv":[127.715012949235486,53.7426121206727316,66.3367341259492],"hsluv":[127.715012949235486,27.3645684281827677,66.3367341259492]},"#88aa99":{"lch":[66.7356352778598705,19.8636867466165334,151.061783220075199],"luv":[66.7356352778598705,-17.3835461247401071,9.6113669837720046],"rgb":[0.533333333333333326,0.66666666666666663,0.6],"xyz":[0.302763694408551443,0.36283055251553803,0.35546188076699442],"hpluv":[151.061783220075199,37.7695130125235536,66.7356352778598705],"hsluv":[151.061783220075199,30.5390729913306274,66.7356352778598705]},"#88aaaa":{"lch":[67.1909358184889811,18.0059400546344968,192.177050630060364],"luv":[67.1909358184889811,-17.6008146924254447,-3.79805205519771905],"rgb":[0.533333333333333326,0.66666666666666663,0.66666666666666663],"xyz":[0.317821387373804,0.368853629701639152,0.434765730383993],"hpluv":[192.177050630060364,34.0051297749840913,67.1909358184889811],"hsluv":[192.177050630060364,33.872023720911649,67.1909358184889811]},"#88aabb":{"lch":[67.7031355134684674,25.1829477340388976,224.903065382651],"luv":[67.7031355134684674,-17.8371340556046292,-17.7768812016541453],"rgb":[0.533333333333333326,0.66666666666666663,0.733333333333333282],"xyz":[0.334958979481140617,0.37570866654457391,0.525023715482634823],"hpluv":[224.903065382651,47.1994684953027459,67.7031355134684674],"hsluv":[224.903065382651,37.296330310174362,67.7031355134684674]},"#88aacc":{"lch":[68.2723356589922901,36.8600300209604939,240.606662797769701],"luv":[68.2723356589922901,-18.0909926283411373,-32.1150712106857341],"rgb":[0.533333333333333326,0.66666666666666663,0.8],"xyz":[0.354251354924862372,0.383425616722062712,0.626630226152905],"hpluv":[240.606662797769701,68.5094136262693,68.2723356589922901],"hsluv":[240.606662797769701,40.7502319604911136,68.2723356589922901]},"#88aadd":{"lch":[68.8982708583434,50.1120766914241216,248.506358436024811],"luv":[68.8982708583434,-18.3609632112572676,-46.6271944285953168],"rgb":[0.533333333333333326,0.66666666666666663,0.866666666666666696],"xyz":[0.375769680475495915,0.392032946942316218,0.739960074052911],"hpluv":[248.506358436024811,92.2939864083951278,68.8982708583434],"hsluv":[248.506358436024811,59.5109742880650217,68.8982708583434]},"#88aaee":{"lch":[69.5803420919898,63.9362726255054454,253.044423586561948],"luv":[69.5803420919898,-18.6457452648911577,-61.1570367231747554],"rgb":[0.533333333333333326,0.66666666666666663,0.933333333333333348],"xyz":[0.39958186074167068,0.401557819048786235,0.8653708901214342],"hpluv":[253.044423586561948,116.600410917186778,69.5803420919898],"hsluv":[253.044423586561948,79.2673662112875093,69.5803420919898]},"#88aaff":{"lch":[70.3176511000829549,77.916964899147743,255.928474825822],"luv":[70.3176511000829549,-18.9441834980668631,-75.578907974954177],"rgb":[0.533333333333333326,0.66666666666666663,1],"xyz":[0.425752909151502046,0.412026238412718959,1.00320507841321604],"hpluv":[255.928474825822,140.607018245256825,70.3176511000829549],"hsluv":[255.928474825822,99.9999999999979394,70.3176511000829549]},"#332200":{"lch":[14.6681357538016819,18.4720509904151484,54.0318728094203635],"luv":[14.6681357538016819,10.8492842291989344,14.9502407842332925],"rgb":[0.2,0.133333333333333331,0],"xyz":[0.0193721251413763347,0.0184794126446342424,0.00254661690643579732],"hpluv":[54.0318728094203635,159.801011716648361,14.6681357538016819],"hsluv":[54.0318728094203635,100.000000000002359,14.6681357538016819]},"#332211":{"lch":[14.8903804788128475,14.003495227987683,44.8263438888978243],"luv":[14.8903804788128475,9.93193249146711,9.87190941941900668],"rgb":[0.2,0.133333333333333331,0.0666666666666666657],"xyz":[0.0203837906410134564,0.0188840788444890953,0.00787472187119143],"hpluv":[44.8263438888978243,119.33558852926538,14.8903804788128475],"hsluv":[44.8263438888978243,67.0844803779226595,14.8903804788128475]},"#332222":{"lch":[15.2941064614028619,8.70381909014442101,12.1770506300622809],"luv":[15.2941064614028619,8.50798716741232397,1.83592513820952408],"rgb":[0.2,0.133333333333333331,0.133333333333333331],"xyz":[0.0222591487794904751,0.0196342220998799166,0.0177516080671706253],"hpluv":[12.1770506300622809,72.2146104972558476,15.2941064614028619],"hsluv":[12.1770506300622809,16.9221215783466867,15.2941064614028619]},"#332233":{"lch":[15.9369990430381634,10.9638268591401484,307.7150129492465],"luv":[15.9369990430381634,6.70694938589646661,-8.67308072902737],"rgb":[0.2,0.133333333333333331,0.2],"xyz":[0.0253468995119482156,0.0208693223928630295,0.0340137619247817685],"hpluv":[307.7150129492465,87.2961214462547,15.9369990430381634],"hsluv":[307.7150129492465,30.2017993044426838,15.9369990430381634]},"#332244":{"lch":[16.8218835175385664,20.7382675483863608,283.478697838556343],"luv":[16.8218835175385664,4.83375477674434428,-20.1670661145035197],"rgb":[0.2,0.133333333333333331,0.266666666666666663],"xyz":[0.0298048947561670927,0.0226525204905506025,0.057492536877668407],"hpluv":[283.478697838556343,156.436171283708973,16.8218835175385664],"hsluv":[283.478697838556343,43.2894908809756558,16.8218835175385664]},"#332255":{"lch":[17.9355503164319856,31.8518286021958055,275.537546938931484],"luv":[17.9355503164319856,3.0736387963894658,-31.7031816992078603],"rgb":[0.2,0.133333333333333331,0.333333333333333315],"xyz":[0.0357673087955290847,0.0250374861062954354,0.0888945841516423224],"hpluv":[275.537546938931484,225.350740722061715,17.9355503164319856],"hsluv":[275.537546938931484,54.6600619512456092,17.9355503164319856]},"#332266":{"lch":[19.2543827660255502,42.9346801988288,271.988815040461645],"luv":[19.2543827660255502,1.49002234071320738,-42.9088172430781114],"rgb":[0.2,0.133333333333333331,0.4],"xyz":[0.043352304569037263,0.028071484415698747,0.12884222855878627],"hpluv":[271.988815040461645,282.955381276792764,19.2543827660255502],"hsluv":[271.988815040461645,63.8744485302889515,19.2543827660255502]},"#332277":{"lch":[20.7496984269819,53.7295137018198687,270.083996688769219],"luv":[20.7496984269819,0.0787684479011579453,-53.7294559637975908],"rgb":[0.2,0.133333333333333331,0.466666666666666674],"xyz":[0.0526663175892391755,0.0317970896237795633,0.17789603046518418],"hpluv":[270.083996688769219,328.579487011522247,20.7496984269819],"hsluv":[270.083996688769219,71.0892762838988546,20.7496984269819]},"#332288":{"lch":[22.3919640579388926,64.2366699579867,268.940142222195846],"luv":[22.3919640579388926,-1.18818265954209568,-64.2256801385464087],"rgb":[0.2,0.133333333333333331,0.533333333333333326],"xyz":[0.063806734691183,0.0362532564645571542,0.236568893868756347],"hpluv":[268.940142222195846,364.024117005976393,22.3919640579388926],"hsluv":[268.940142222195846,76.6637840765232426,22.3919640579388926]},"#332299":{"lch":[24.1535324867621668,74.5121507797046689,268.199285594367666],"luv":[24.1535324867621668,-2.34141182983712737,-74.4753543426316469],"rgb":[0.2,0.133333333333333331,0.6],"xyz":[0.076863698800255717,0.0414760421081863187,0.305335571509874282],"hpluv":[268.199285594367666,391.458538227207669,24.1535324867621668],"hsluv":[268.199285594367666,80.9654036049547301,24.1535324867621668]},"#3322aa":{"lch":[26.0100477302332607,84.6098540849434926,267.692459882235937],"luv":[26.0100477302332607,-3.40667075751279169,-84.541244387726735],"rgb":[0.2,0.133333333333333331,0.66666666666666663],"xyz":[0.0919213917655082591,0.0474991192942874202,0.384639421126872882],"hpluv":[267.692459882235937,412.780453116303818,26.0100477302332607],"hsluv":[267.692459882235937,84.3023702715129,26.0100477302332607]},"#3322bb":{"lch":[27.9408960039881222,94.5690254119923281,267.330995248517297],"luv":[27.9408960039881222,-4.40370835341661504,-94.4664380619492761],"rgb":[0.2,0.133333333333333331,0.733333333333333282],"xyz":[0.109058983872844906,0.0543541561372221788,0.474897406225514629],"hpluv":[267.330995248517297,429.484911570580266,27.9408960039881222],"hsluv":[267.330995248517297,86.9134730370406743,27.9408960039881222]},"#3322cc":{"lch":[29.9290875828623939,104.415306333233346,267.064581258752071],"luv":[29.9290875828623939,-5.34714045276937444,-104.278302084572317],"rgb":[0.2,0.133333333333333331,0.8],"xyz":[0.12835135931656666,0.0620711063147109804,0.576503916895784729],"hpluv":[267.064581258752071,442.700503900749,29.9290875828623939],"hsluv":[267.064581258752071,88.9774620844202389,29.9290875828623939]},"#3322dd":{"lch":[31.9608605817263296,114.164622106097937,266.862904678446171],"luv":[31.9608605817263296,-6.2476920173399213,-113.993540541052639],"rgb":[0.2,0.133333333333333331,0.866666666666666696],"xyz":[0.149869684867200204,0.0706784365349645144,0.689833764795790727],"hpluv":[266.862904678446171,453.265229710644405,31.9608605817263296],"hsluv":[266.862904678446171,90.6264253960307826,31.9608605817263296]},"#3322ee":{"lch":[34.0251904593745635,123.826689560879501,266.706806867468629],"luv":[34.0251904593745635,-7.11327635006579229,-123.622208147136817],"rgb":[0.2,0.133333333333333331,0.933333333333333348],"xyz":[0.173681865133374941,0.0802033086414345453,0.815244580864314],"hpluv":[266.706806867468629,461.799038215803307,34.0251904593745635],"hsluv":[266.706806867468629,93.6430785136650741,34.0251904593745635]},"#3322ff":{"lch":[36.1133053940478774,133.407509730883817,266.583697157343806],"luv":[36.1133053940478774,-7.94980801741223875,-133.170432923686747],"rgb":[0.2,0.133333333333333331,1],"xyz":[0.199852913543206334,0.0906717280053672414,0.953078769156095795],"hpluv":[266.583697157343806,468.761962088723578,36.1133053940478774],"hsluv":[266.583697157343806,99.999999999999531,36.1133053940478774]},"#aaaa00":{"lch":[67.4983691984715506,74.4102446110960472,85.8743202181747449],"luv":[67.4983691984715506,5.35340686476390193,74.217420717938225],"rgb":[0.66666666666666663,0.66666666666666663,0],"xyz":[0.309512896760441802,0.372958073182539818,0.0556842125390607443],"hpluv":[85.8743202181747449,139.887458074797593,67.4983691984715506],"hsluv":[85.8743202181747449,100.000000000002373,67.4983691984715506]},"#aaaa11":{"lch":[67.528557359020084,73.1276023311446863,85.8743202181746881],"luv":[67.528557359020084,5.26112782412359792,72.9381022286724345],"rgb":[0.66666666666666663,0.66666666666666663,0.0666666666666666657],"xyz":[0.310524562260078907,0.373362739382394671,0.061012317503816374],"hpluv":[85.8743202181746881,137.414698385368666,67.528557359020084],"hsluv":[85.8743202181746881,98.2323220941626118,67.528557359020084]},"#aaaa22":{"lch":[67.5844605157977,70.7729399531690575,85.8743202181746],"luv":[67.5844605157977,5.09172284764045369,70.589541633712912],"rgb":[0.66666666666666663,0.66666666666666663,0.133333333333333331],"xyz":[0.312399920398555964,0.374112882637785471,0.0708892036997955666],"hpluv":[85.8743202181746,132.880028295953878,67.5844605157977],"hsluv":[85.8743202181746,94.9906661574379854,67.5844605157977]},"#aaaa33":{"lch":[67.6763416895574181,66.9597491826677924,85.8743202181744607],"luv":[67.6763416895574181,4.81738479440415723,66.7862322215321882],"rgb":[0.66666666666666663,0.66666666666666663,0.2],"xyz":[0.315487671131013669,0.375347982930768598,0.0871513575574067167],"hpluv":[85.8743202181744607,125.549870841925909,67.6763416895574181],"hsluv":[85.8743202181744607,89.7506270896691376,67.6763416895574181]},"#aaaa44":{"lch":[67.8086418759902898,61.5895608625658824,85.8743202181741623],"luv":[67.8086418759902898,4.43102935143870269,61.429960004304057],"rgb":[0.66666666666666663,0.66666666666666663,0.266666666666666663],"xyz":[0.319945666375232585,0.377131181028456164,0.110630132510293355],"hpluv":[85.8743202181741623,115.255428047766188,67.8086418759902898],"hsluv":[85.8743202181741623,82.3915379076671854,67.8086418759902898]},"#aaaa55":{"lch":[67.9849384953625844,54.6449851984581514,85.8743202181737786],"luv":[67.9849384953625844,3.93140541890911,54.5033802508787772],"rgb":[0.66666666666666663,0.66666666666666663,0.333333333333333315],"xyz":[0.32590808041459457,0.379516146644201,0.142032179784267271],"hpluv":[85.8743202181737786,101.994541545207838,67.9849384953625844],"hsluv":[85.8743202181737786,72.9118556794948631,67.9849384953625844]},"#aaaa66":{"lch":[68.2081473948541515,46.1798212544818156,85.8743202181731675],"luv":[68.2081473948541515,3.32238354287766668,46.0601526125338268],"rgb":[0.66666666666666663,0.66666666666666663,0.4],"xyz":[0.333493076188102755,0.382550144953604343,0.181979824191411232],"hpluv":[85.8743202181731675,85.9122949373369806,68.2081473948541515],"hsluv":[85.8743202181731675,61.415294923296095,68.2081473948541515]},"#aaaa77":{"lch":[68.4806287458147551,36.3079853189649668,85.874320218171988],"luv":[68.4806287458147551,2.61215937225179973,36.2138981792368284],"rgb":[0.66666666666666663,0.66666666666666663,0.466666666666666674],"xyz":[0.342807089208304661,0.386275750161685139,0.231033626097809142],"hpluv":[85.874320218171988,67.2781031791916604,68.4806287458147551],"hsluv":[85.874320218171988,48.0944497134402909,68.4806287458147551]},"#aaaa88":{"lch":[68.804250183835336,25.1900382005990835,85.8743202181696574],"luv":[68.804250183835336,1.81228437202058101,25.1247616884732103],"rgb":[0.66666666666666663,0.66666666666666663,0.533333333333333326],"xyz":[0.353947506310248461,0.390731917002462736,0.289706489501381281],"hpluv":[85.8743202181696574,46.4571845078746506,68.804250183835336],"hsluv":[85.8743202181696574,33.210400093935057,68.804250183835336]},"#aaaa99":{"lch":[69.1804292601881485,13.0180161266067085,85.8743202181625236],"luv":[69.1804292601881485,0.936574490007753058,12.9842817320504498],"rgb":[0.66666666666666663,0.66666666666666663,0.6],"xyz":[0.36700447041932116,0.395954702646091894,0.358473167142499216],"hpluv":[85.8743202181625236,23.8781611725121081,69.1804292601881485],"hsluv":[85.8743202181625236,17.0695511242654057,69.1804292601881485]},"#aaaaaa":{"lch":[69.6101658300367916,3.6866289517569387e-12,0],"luv":[69.6101658300367916,3.46613397703382525e-12,1.25584564385283521e-12],"rgb":[0.66666666666666663,0.66666666666666663,0.66666666666666663],"xyz":[0.382062163384573716,0.401977779832193,0.437777016759497817],"hpluv":[0,6.72041492281092149e-12,69.6101658300367916],"hsluv":[0,4.48262290109626775e-12,69.6101658300367916]},"#aaaabb":{"lch":[70.0940699613229441,13.6540669730780309,265.874320218191428],"luv":[70.0940699613229441,-0.982334841759501587,-13.618684340418703],"rgb":[0.66666666666666663,0.66666666666666663,0.733333333333333282],"xyz":[0.399199755491910391,0.408832816675127775,0.528035001858139563],"hpluv":[265.874320218191428,24.7183841606301087,70.0940699613229441],"hsluv":[265.874320218191428,17.6184615311656536,70.0940699613229441]},"#aaaacc":{"lch":[70.6323884029978188,27.7441307883788433,265.87432021818438],"luv":[70.6323884029978188,-1.99603725260327192,-27.6722356973355303],"rgb":[0.66666666666666663,0.66666666666666663,0.8],"xyz":[0.41849213093563209,0.416549766852616576,0.629641512528409719],"hpluv":[265.87432021818438,49.8432735452352063,70.6323884029978188],"hsluv":[265.87432021818438,36.467826786828347,70.6323884029978188]},"#aaaadd":{"lch":[71.2250312240615813,42.0886841218373817,265.874320218182],"luv":[71.2250312240615813,-3.02804878123905441,-41.979617097899343],"rgb":[0.66666666666666663,0.66666666666666663,0.866666666666666696],"xyz":[0.440010456486265689,0.425157097072870083,0.742971360428415717],"hpluv":[265.874320218182,74.9845908684596,71.2250312240615813],"hsluv":[265.874320218182,56.4865697219014891,71.2250312240615813]},"#aaaaee":{"lch":[71.8715993709786432,56.5301989351418541,265.874320218180742],"luv":[71.8715993709786432,-4.0670361537863835,-56.3837087159979902],"rgb":[0.66666666666666663,0.66666666666666663,0.933333333333333348],"xyz":[0.463822636752440398,0.4346819691793401,0.86838217649693894],"hpluv":[265.874320218180742,99.8073514218055,71.8715993709786432],"hsluv":[265.874320218180742,77.6546881169827259,71.8715993709786432]},"#aaaaff":{"lch":[72.5714133442747595,70.9376272522327,265.87432021818006],"luv":[72.5714133442747595,-5.10357119085512778,-70.7538021683399],"rgb":[0.66666666666666663,0.66666666666666663,1],"xyz":[0.489993685162271819,0.445150388543272824,1.00621636478872079],"hpluv":[265.87432021818006,124.036757123492009,72.5714133442747595],"hsluv":[265.87432021818006,99.999999999997641,72.5714133442747595]},"#88bb00":{"lch":[70.0174964893220135,84.793654921948729,107.670265811619984],"luv":[70.0174964893220135,-25.7381496181260658,80.7930168347331659],"rgb":[0.533333333333333326,0.733333333333333282,0],"xyz":[0.279226618658270809,0.407742918869184512,0.0639910921330886],"hpluv":[107.670265811619984,153.672481251000221,70.0174964893220135],"hsluv":[107.670265811619984,100.000000000002288,70.0174964893220135]},"#88bb11":{"lch":[70.045943224524,83.6147085810298,107.921872667069366],"luv":[70.045943224524,-25.7299069713944561,79.5574721715938296],"rgb":[0.533333333333333326,0.733333333333333282,0.0666666666666666657],"xyz":[0.280238284157907913,0.408147585069039365,0.0693191970978442318],"hpluv":[107.921872667069366,151.474322676164348,70.045943224524],"hsluv":[107.921872667069366,98.3704135852689,70.045943224524]},"#88bb22":{"lch":[70.0986261940145567,81.4532385975490172,108.403169751544382],"luv":[70.0986261940145567,-25.7149121100318041,77.2876016784231],"rgb":[0.533333333333333326,0.733333333333333282,0.133333333333333331],"xyz":[0.28211364229638497,0.408897728324430165,0.0791960832938234244],"hpluv":[108.403169751544382,147.447759071005407,70.0986261940145567],"hsluv":[108.403169751544382,95.3794817356858431,70.0986261940145567]},"#88bb33":{"lch":[70.185227758130182,77.9617926087192643,109.240455548552404],"luv":[70.185227758130182,-25.6910124331637526,73.6071530961765887],"rgb":[0.533333333333333326,0.733333333333333282,0.2],"xyz":[0.285201393028842676,0.410132828617413292,0.0954582371514345607],"hpluv":[109.240455548552404,140.95335886915251,70.185227758130182],"hsluv":[109.240455548552404,90.5378353052476399,70.185227758130182]},"#88bb44":{"lch":[70.3099541281250708,73.067556170236557,110.558097475340105],"luv":[70.3099541281250708,-25.6581823155790048,68.4143657790612281],"rgb":[0.533333333333333326,0.733333333333333282,0.266666666666666663],"xyz":[0.289659388273061591,0.411916026715100858,0.118937012104321199],"hpluv":[110.558097475340105,131.870330314080604,70.3099541281250708],"hsluv":[110.558097475340105,83.7238240635208655,70.3099541281250708]},"#88bb55":{"lch":[70.4762099132372,66.7907607981454845,112.553407091589676],"luv":[70.4762099132372,-25.6172250438111178,61.682765089203194],"rgb":[0.533333333333333326,0.733333333333333282,0.333333333333333315],"xyz":[0.295621802312423576,0.414300992330845719,0.150339059378295115],"hpluv":[112.553407091589676,120.257778383662554,70.4762099132372],"hsluv":[112.553407091589676,74.9213657205140606,70.4762099132372]},"#88bb66":{"lch":[70.6867901559138687,59.2534136994931373,115.564788197424377],"luv":[70.6867901559138687,-25.56971066242372,53.4523800375924836],"rgb":[0.533333333333333326,0.733333333333333282,0.4],"xyz":[0.303206798085931761,0.417334990640249037,0.190286703785439076],"hpluv":[115.564788197424377,106.368844477737383,70.6867901559138687],"hsluv":[115.564788197424377,64.2082802413586791,70.6867901559138687]},"#88bb77":{"lch":[70.9439811929011483,50.7088031944788611,120.213509646437856],"luv":[70.9439811929011483,-25.5178724843925657,43.8203252530908287],"rgb":[0.533333333333333326,0.733333333333333282,0.466666666666666674],"xyz":[0.312520811106133667,0.421060595848329833,0.239340505691836986],"hpluv":[120.213509646437856,90.6999673798200519,70.9439811929011483],"hsluv":[120.213509646437856,51.7430673824667338,70.9439811929011483]},"#88bb88":{"lch":[71.2496205680497781,41.6266624709187667,127.715012949237462],"luv":[71.2496205680497781,-25.4644588867656232,32.9293237414924747],"rgb":[0.533333333333333326,0.733333333333333282,0.533333333333333326],"xyz":[0.323661228208077467,0.425516762689107431,0.298013369095409153],"hpluv":[127.715012949237462,74.1358655131278397,71.2496205680497781],"hsluv":[127.715012949237462,37.7483692132655,71.2496205680497781]},"#88bb99":{"lch":[71.605136773449729,32.9376822973712677,140.491872589160209],"luv":[71.605136773449729,-25.4125532319559895,20.9545473192710077],"rgb":[0.533333333333333326,0.733333333333333282,0.6],"xyz":[0.336718192317150167,0.430739548332736588,0.366780046736527088],"hpluv":[140.491872589160209,58.3697971606621948,71.605136773449729],"hsluv":[140.491872589160209,40.0947707109065163,71.605136773449729]},"#88bbaa":{"lch":[72.0115788449514298,26.624214972975043,162.310745910586235],"luv":[72.0115788449514298,-25.3653817896029707,8.0898843993512255],"rgb":[0.533333333333333326,0.733333333333333282,0.66666666666666663],"xyz":[0.351775885282402723,0.43676262551883771,0.446083896353525633],"hpluv":[162.310745910586235,46.9152251525928463,72.0115788449514298],"hsluv":[162.310745910586235,42.5902472855224445,72.0115788449514298]},"#88bbbb":{"lch":[72.4696411221425478,25.9090725846495289,192.177050630060563],"luv":[72.4696411221425478,-25.3261303787159093,-5.46508574835939687],"rgb":[0.533333333333333326,0.733333333333333282,0.733333333333333282],"xyz":[0.368913477389739397,0.443617662361772469,0.536341881452167435],"hpluv":[192.177050630060563,45.3664800039612786,72.4696411221425478],"hsluv":[192.177050630060563,45.1889022919971595,72.4696411221425478]},"#88bbcc":{"lch":[72.9796861172365539,31.9509756483125074,217.648879320727843],"luv":[72.9796861172365539,-25.297786835453639,-19.5163220435359541],"rgb":[0.533333333333333326,0.733333333333333282,0.8],"xyz":[0.388205852833461096,0.451334612539261271,0.637948392122437591],"hpluv":[217.648879320727843,55.5547835161394303,72.9796861172365539],"hsluv":[217.648879320727843,47.846459663484211,72.9796861172365539]},"#88bbdd":{"lch":[73.5417671198988501,42.2771793498237827,233.271065498294831],"luv":[73.5417671198988501,-25.2830202693059967,-33.8840490472881442],"rgb":[0.533333333333333326,0.733333333333333282,0.866666666666666696],"xyz":[0.409724178384094695,0.459941942759514777,0.751278240022443589],"hpluv":[233.271065498294831,72.9476439375157781,73.5417671198988501],"hsluv":[233.271065498294831,52.600286903313318,73.5417671198988501]},"#88bbee":{"lch":[74.1556513704433655,54.6140049995012049,242.42172167609948],"luv":[74.1556513704433655,-25.2841013367454792,-48.4087157615106349],"rgb":[0.533333333333333326,0.733333333333333282,0.933333333333333348],"xyz":[0.433536358650269404,0.469466814865984794,0.876689056090966812],"hpluv":[242.42172167609948,93.4542589851821646,74.1556513704433655],"hsluv":[242.42172167609948,75.5983078602269387,74.1556513704433655]},"#88bbff":{"lch":[74.8208441285393206,67.8489412305869877,248.103607922481928],"luv":[74.8208441285393206,-25.3028619495915343,-62.9543009116260492],"rgb":[0.533333333333333326,0.733333333333333282,1],"xyz":[0.459707407060100826,0.479935234229917518,1.01452324438274855],"hpluv":[248.103607922481928,115.069386567942303,74.8208441285393206],"hsluv":[248.103607922481928,99.9999999999973568,74.8208441285393206]},"#333300":{"lch":[20.3279441284931792,22.4095383785379596,85.8743202181747449],"luv":[20.3279441284931792,1.61224273913978733,22.3514671484727536],"rgb":[0.2,0.2,0],"xyz":[0.0254898472303871464,0.0307148568226560392,0.00458585760277267773],"hpluv":[85.8743202181747449,139.887458074797735,20.3279441284931792],"hsluv":[85.8743202181747449,100.000000000002458,20.3279441284931792]},"#333311":{"lch":[20.4867879892499971,17.9332091798965507,85.8743202181741],"luv":[20.4867879892499971,1.2901955319819518,17.8867377399899183],"rgb":[0.2,0.2,0.0666666666666666657],"xyz":[0.0265015127300242681,0.0311195230225108921,0.00991396256752831],"hpluv":[85.8743202181741,111.076827622251201,20.4867879892499971],"hsluv":[85.8743202181741,79.4044220625277717,20.4867879892499971]},"#333322":{"lch":[20.7776374982028358,10.4602453251552614,85.8743202181717749],"luv":[20.7776374982028358,0.752556982220839221,10.4331390411008691],"rgb":[0.2,0.2,0.133333333333333331],"xyz":[0.0283768708685012867,0.0318696662779017134,0.019790848763507507],"hpluv":[85.8743202181717749,63.8829601302186703,20.7776374982028358],"hsluv":[85.8743202181717749,45.6673964981637113,20.7776374982028358]},"#333333":{"lch":[21.246731294981295,1.12524964979295229e-12,0],"luv":[21.246731294981295,1.05794917113478783e-12,3.83314917077821647e-13],"rgb":[0.2,0.2,0.2],"xyz":[0.0314646216009590307,0.0331047665708848263,0.0360530026211186502],"hpluv":[0,6.72041492281092149e-12,21.246731294981295],"hsluv":[0,1.92419399944792236e-12,21.246731294981295]},"#333344":{"lch":[21.9038391599933462,12.2084714240410825,265.874320218182163],"luv":[21.9038391599933462,-0.878332211796974,-12.176834853004598],"rgb":[0.2,0.2,0.266666666666666663],"xyz":[0.0359226168451779043,0.0348879646685724,0.0595317775740052887],"hpluv":[265.874320218182163,70.7262082967351517,21.9038391599933462],"hsluv":[265.874320218182163,13.7757030029577514,21.9038391599933462]},"#333355":{"lch":[22.7485838486986935,25.0264321710322868,265.874320218179776],"luv":[22.7485838486986935,-1.80051382017376982,-24.9615796213830023],"rgb":[0.2,0.2,0.333333333333333315],"xyz":[0.0418850308845399,0.0372729302843172322,0.0909338248479792],"hpluv":[265.874320218179776,139.599512106194084,22.7485838486986935],"hsluv":[265.874320218179776,27.1905063829271256,22.7485838486986935]},"#333366":{"lch":[23.7726526978294,37.7235732610660364,265.874320218179],"luv":[23.7726526978294,-2.71400312032964841,-37.625817820292724],"rgb":[0.2,0.2,0.4],"xyz":[0.0494700266580480746,0.0403069285937205438,0.130881469255123173],"hpluv":[265.874320218179,201.360603518100845,23.7726526978294],"hsluv":[265.874320218179,39.2200280117306193,23.7726526978294]},"#333377":{"lch":[24.9621315786770737,49.9646270765614062,265.874320218178639],"luv":[24.9621315786770737,-3.59467945556105306,-49.8351506319748268],"rgb":[0.2,0.2,0.466666666666666674],"xyz":[0.0587840396782499941,0.0440325338018013601,0.179935271161521082],"hpluv":[265.874320218178639,253.992158426909725,24.9621315786770737],"hsluv":[265.874320218178639,49.4713434217918646,24.9621315786770737]},"#333388":{"lch":[26.2997861111378413,61.6680265106551175,265.874320218178468],"luv":[26.2997861111378413,-4.43667452222106906,-61.5082223194812912],"rgb":[0.2,0.2,0.533333333333333326],"xyz":[0.0699244567801938222,0.048488700642578958,0.238608134565093222],"hpluv":[265.874320218178468,297.541234413863208,26.2997861111378413],"hsluv":[265.874320218178468,57.953618257344317,26.2997861111378413]},"#333399":{"lch":[27.7670269025285634,72.8744236647892336,265.874320218178354],"luv":[27.7670269025285634,-5.24291301488723782,-72.6855796399362788],"rgb":[0.2,0.2,0.6],"xyz":[0.0829814208892665356,0.0537114862862081155,0.307374812206211157],"hpluv":[265.874320218178354,333.031319879373427,27.7670269025285634],"hsluv":[265.874320218178354,64.8662025552495862,27.7670269025285634]},"#3333aa":{"lch":[29.34539826905295,83.6653121043175361,265.874320218178241],"luv":[29.34539826905295,-6.01925794630032573,-83.4485049793509575],"rgb":[0.2,0.2,0.66666666666666663],"xyz":[0.0980391138545190777,0.059734563472309217,0.386678661823209757],"hpluv":[265.874320218178241,361.780166220798492,29.34539826905295],"hsluv":[265.874320218178241,70.4657614516561353,29.34539826905295]},"#3333bb":{"lch":[31.0175640968910713,94.1237197643615247,265.874320218178184],"luv":[31.0175640968910713,-6.77168271864664284,-93.8798111173964855],"rgb":[0.2,0.2,0.733333333333333282],"xyz":[0.115176705961855724,0.0665896003152439686,0.476936646921851504],"hpluv":[265.874320218178184,385.062051502536349,31.0175640968910713],"hsluv":[265.874320218178184,75.0004925607309758,31.0175640968910713]},"#3333cc":{"lch":[32.7678589751368321,104.319620441623087,265.874320218178127],"luv":[32.7678589751368321,-7.50522156082274261,-104.049290523324899],"rgb":[0.2,0.2,0.8],"xyz":[0.134469081405577451,0.0743065504927327702,0.578543157592121604],"hpluv":[265.874320218178127,403.977575952485893,32.7678589751368321],"hsluv":[265.874320218178127,79.524052836351089,32.7678589751368321]},"#3333dd":{"lch":[34.5825131799139243,114.307143948468337,265.874320218178127],"luv":[34.5825131799139243,-8.22376881440244745,-114.010932739554079],"rgb":[0.2,0.2,0.866666666666666696],"xyz":[0.155987406956211,0.0829138807129863,0.691873005492127602],"hpluv":[265.874320218178127,419.426773039758132,34.5825131799139243],"hsluv":[265.874320218178127,86.1542613798901584,34.5825131799139243]},"#3333ee":{"lch":[36.4496605331747929,124.126383834434506,265.87432021817807],"luv":[36.4496605331747929,-8.93020898923314732,-123.80472741871364],"rgb":[0.2,0.2,0.933333333333333348],"xyz":[0.179799587222385732,0.092438752819456349,0.817283821560650825],"hpluv":[265.87432021817807,432.12554656995303,36.4496605331747929],"hsluv":[265.87432021817807,92.9362870993519,36.4496605331747929]},"#3333ff":{"lch":[38.3592184432327414,133.806417871427385,265.87432021817807],"luv":[38.3592184432327414,-9.62663407069321231,-133.45967698167118],"rgb":[0.2,0.2,1],"xyz":[0.205970635632217125,0.102907172183389045,0.95511800985243267],"hpluv":[265.87432021817807,442.635784237250618,38.3592184432327414],"hsluv":[265.87432021817807,99.99999999999946,38.3592184432327414]},"#aabb00":{"lch":[72.2864137555308162,81.0402066187271686,93.9104624709461291],"luv":[72.2864137555308162,-5.52673715975233737,80.8515322376329664],"rgb":[0.66666666666666663,0.733333333333333282,0],"xyz":[0.343467394669040582,0.440867068999738376,0.0670023785085933632],"hpluv":[93.9104624709461291,142.260125307220505,72.2864137555308162],"hsluv":[93.9104624709461291,100.00000000000226,72.2864137555308162]},"#aabb11":{"lch":[72.3134178153803759,79.8795424406406198,94.0047051989067199],"luv":[72.3134178153803759,-5.5786590117117969,79.6845020324350912],"rgb":[0.66666666666666663,0.733333333333333282,0.0666666666666666657],"xyz":[0.344479060168677687,0.441271735199593229,0.072330483473349],"hpluv":[94.0047051989067199,140.170301198642704,72.3134178153803759],"hsluv":[94.0047051989067199,98.4998030851846522,72.3134178153803759]},"#aabb22":{"lch":[72.3634325080893319,77.7463008610920667,94.1853407287125179],"luv":[72.3634325080893319,-5.67416055225396132,77.5389656857163],"rgb":[0.66666666666666663,0.733333333333333282,0.133333333333333331],"xyz":[0.346354418307154743,0.44202187845498403,0.0822073696693281925],"hpluv":[94.1853407287125179,136.332658010127801,72.3634325080893319],"hsluv":[94.1853407287125179,95.7441801677588131,72.3634325080893319]},"#aabb33":{"lch":[72.4456578556837343,74.284969405898,94.5007685828256427],"luv":[72.4456578556837343,-5.82932493434540167,74.0558954469191377],"rgb":[0.66666666666666663,0.733333333333333282,0.2],"xyz":[0.349442169039612449,0.443256978747967156,0.0984695235269393288],"hpluv":[94.5007685828256427,130.115164427369336,72.4456578556837343],"hsluv":[94.5007685828256427,91.2774770665997721,72.4456578556837343]},"#aabb44":{"lch":[72.5641031469497193,69.3968632274838768,95.0004815565242922],"luv":[72.5641031469497193,-6.04891620231322502,69.1327363742496317],"rgb":[0.66666666666666663,0.733333333333333282,0.266666666666666663],"xyz":[0.353900164283831364,0.445040176845654722,0.121948298479825967],"hpluv":[95.0004815565242922,121.354905136961719,72.5641031469497193],"hsluv":[95.0004815565242922,84.978619462346515,72.5641031469497193]},"#aabb55":{"lch":[72.7220260779140659,63.0543258899363366,95.7659530899235705],"luv":[72.7220260779140659,-6.33475857174489843,62.7353078200147181],"rgb":[0.66666666666666663,0.733333333333333282,0.333333333333333315],"xyz":[0.359862578323193349,0.447425142461399583,0.153350345753799883],"hpluv":[95.7659530899235705,110.024206089370551,72.7220260779140659],"hsluv":[95.7659530899235705,76.8198788639563475,72.7220260779140659]},"#aabb66":{"lch":[72.922116394456026,55.2958006214329245,96.9449007941817342],"luv":[72.922116394456026,-6.68608027099689206,54.8900892418207675],"rgb":[0.66666666666666663,0.733333333333333282,0.4],"xyz":[0.367447574096701535,0.450459140770802902,0.193297990160943844],"hpluv":[96.9449007941817342,96.2215198645611167,72.922116394456026],"hsluv":[96.9449007941817342,66.8569788454327778,72.922116394456026]},"#aabb77":{"lch":[73.1665925415562555,46.2248747385797927,98.8352478745929801],"luv":[73.1665925415562555,-7.09985217623529596,45.6763740206356488],"rgb":[0.66666666666666663,0.733333333333333282,0.466666666666666674],"xyz":[0.37676158711690344,0.454184745978883697,0.242351792067341754],"hpluv":[98.8352478745929801,80.1682197570307267,73.1665925415562555],"hsluv":[98.8352478745929801,55.2184354086421223,73.1665925415562555]},"#aabb88":{"lch":[73.4572589636137,36.0214199172978056,102.133241078873],"luv":[73.4572589636137,-7.57119112276486117,35.2167539367396216],"rgb":[0.66666666666666663,0.733333333333333282,0.533333333333333326],"xyz":[0.387902004218847241,0.458640912819661295,0.301024655470913949],"hpluv":[102.133241078873,62.2250760292602862,73.4572589636137],"hsluv":[102.133241078873,42.0922357464751116,73.4572589636137]},"#aabb99":{"lch":[73.7955437608147236,25.0118273668521454,108.880774444702425],"luv":[73.7955437608147236,-8.09382587885112592,23.6660408786948082],"rgb":[0.66666666666666663,0.733333333333333282,0.6],"xyz":[0.40095896832792,0.463863698463290453,0.369791333112031828],"hpluv":[108.880774444702425,43.0085312761643337,73.7955437608147236],"hsluv":[108.880774444702425,27.7101400322224,73.7955437608147236]},"#aabbaa":{"lch":[74.1825262226786464,14.1574418893213867,127.715012949227386],"luv":[74.1825262226786464,-8.66059336811296632,11.1994322785447302],"rgb":[0.66666666666666663,0.733333333333333282,0.66666666666666663],"xyz":[0.416016661293172496,0.469886775649391575,0.449095182729030429],"hpluv":[127.715012949227386,24.2171200924073027,74.1825262226786464],"hsluv":[127.715012949227386,12.3308304853939106,74.1825262226786464]},"#aabbbb":{"lch":[74.6189593067414734,9.47715438031144153,192.177050630059],"luv":[74.6189593067414734,-9.26392276955498417,-1.99904729008021675],"rgb":[0.66666666666666663,0.733333333333333282,0.733333333333333282],"xyz":[0.43315425340050917,0.476741812492326333,0.539353167827672175],"hpluv":[192.177050630059,16.1164020856357908,74.6189593067414734],"hsluv":[192.177050630059,16.0533177597809029,74.6189593067414734]},"#aabbcc":{"lch":[75.1052899078477623,18.5983929047544514,237.852316168687679],"luv":[75.1052899078477623,-9.89626817417043547,-15.7468757175676597],"rgb":[0.66666666666666663,0.733333333333333282,0.8],"xyz":[0.452446628844230925,0.484458762669815135,0.640959678497942331],"hpluv":[237.852316168687679,31.4227520087917149,75.1052899078477623],"hsluv":[237.852316168687679,25.8004515395991127,75.1052899078477623]},"#aabbdd":{"lch":[75.6416785331857682,31.6798915222297,250.547006926215033],"luv":[75.6416785331857682,-10.5504613433008458,-29.8714461033234144],"rgb":[0.66666666666666663,0.733333333333333282,0.866666666666666696],"xyz":[0.473964954394864413,0.493066092890068641,0.754289526397948329],"hpluv":[250.547006926215033,53.1449318902714438,75.6416785331857682],"hsluv":[250.547006926215033,48.9122949421499484,75.6416785331857682]},"#aabbee":{"lch":[76.2280192594463699,45.6175545861468166,255.761586302643195],"luv":[76.2280192594463699,-11.2199701465387403,-44.2162137267639],"rgb":[0.66666666666666663,0.733333333333333282,0.933333333333333348],"xyz":[0.497777134661039178,0.502590964996538658,0.879700342466471552],"hpluv":[255.761586302643195,76.8288153841444483,76.2280192594463699],"hsluv":[255.761586302643195,73.6249760737912311,76.2280192594463699]},"#aabbff":{"lch":[76.863960378353255,59.8395450787859247,258.530312903596609],"luv":[76.863960378353255,-11.8990616804050067,-58.6445520603744583],"rgb":[0.66666666666666663,0.733333333333333282,1],"xyz":[0.523948183070870543,0.513059384360471382,1.01753453075825329],"hpluv":[258.530312903596609,104.151140840900069,76.863960378353255],"hsluv":[258.530312903596609,99.9999999999969305,76.863960378353255]},"#88cc00":{"lch":[75.0884647575288,93.9986167747887,111.475410134903882],"luv":[75.0884647575288,-34.413070492851,87.4727416674912348],"rgb":[0.533333333333333326,0.8,0],"xyz":[0.317450361967887784,0.484190405488419406,0.0767323399029605363],"hpluv":[111.475410134903882,158.85012628624969,75.0884647575288],"hsluv":[111.475410134903882,100.000000000002288,75.0884647575288]},"#88cc11":{"lch":[75.1138336746799,92.9472917959209752,111.713770271434171],"luv":[75.1138336746799,-34.3877142984514421,86.3520941119794685],"rgb":[0.533333333333333326,0.8,0.0666666666666666657],"xyz":[0.318462027467524889,0.484595071688274259,0.082060444867716173],"hpluv":[111.713770271434171,157.020421425354783,75.1138336746799],"hsluv":[111.713770271434171,98.6248626695712289,75.1138336746799]},"#88cc22":{"lch":[75.1608235532889495,91.0175657840787551,112.166724150973],"luv":[75.1608235532889495,-34.3412008388942667,84.2904455214339805],"rgb":[0.533333333333333326,0.8,0.133333333333333331],"xyz":[0.320337385606001945,0.48534521494366506,0.0919373310636953656],"hpluv":[112.166724150973,153.664310911800271,75.1608235532889495],"hsluv":[112.166724150973,96.0970283406349,75.1608235532889495]},"#88cc33":{"lch":[75.2380863503033908,87.8942550668024865,112.94545296029041],"luv":[75.2380863503033908,-34.2659803117460342,80.9397471396048331],"rgb":[0.533333333333333326,0.8,0.2],"xyz":[0.323425136338459651,0.486580315236648187,0.108199484921306516],"hpluv":[112.94545296029041,148.2388630129999,75.2380863503033908],"hsluv":[112.94545296029041,91.9942509365254324,75.2380863503033908]},"#88cc44":{"lch":[75.3494055810326415,83.5027286146262,114.147802574759467],"luv":[75.3494055810326415,-34.1602904869016655,76.1956707427555244],"rgb":[0.533333333333333326,0.8,0.266666666666666663],"xyz":[0.327883131582678566,0.488363513334335753,0.131678259874193154],"hpluv":[114.147802574759467,140.624231819797672,75.3494055810326415],"hsluv":[114.147802574759467,86.1974134191241177,75.3494055810326415]},"#88cc55":{"lch":[75.4978684165763241,77.8461227965530469,115.917002828128631],"luv":[75.4978684165763241,-34.0241050685150555,70.0169915716368365],"rgb":[0.533333333333333326,0.8,0.333333333333333315],"xyz":[0.333845545622040552,0.490748478950080613,0.16308030714816707],"hpluv":[115.917002828128631,130.840327774204638,75.4978684165763241],"hsluv":[115.917002828128631,78.6694108520956092,75.4978684165763241]},"#88cc66":{"lch":[75.6860396561484663,71.0106875190110287,118.477611184333398],"luv":[75.6860396561484663,-33.8589835890750237,62.4186428259808963],"rgb":[0.533333333333333326,0.8,0.4],"xyz":[0.341430541395548737,0.493782477259483932,0.203027951555311],"hpluv":[118.477611184333398,119.054896833398359,75.6860396561484663],"hsluv":[118.477611184333398,69.4467240035668141,75.6860396561484663]},"#88cc77":{"lch":[75.9160535408259705,63.1826013081171638,122.199343200922883],"luv":[75.9160535408259705,-33.6678964132470924,53.4650713940171656],"rgb":[0.533333333333333326,0.8,0.466666666666666674],"xyz":[0.350744554415750642,0.497508082467564727,0.252081753461708913],"hpluv":[122.199343200922883,105.609553255175555,75.9160535408259705],"hsluv":[122.199343200922883,58.6308874961384063,75.9160535408259705]},"#88cc88":{"lch":[76.1896681333118124,54.6887581458639929,127.715012949238314],"luv":[76.1896681333118124,-33.4549913615237,43.2622678616965288],"rgb":[0.533333333333333326,0.8,0.533333333333333326],"xyz":[0.361884971517694443,0.50196424930834227,0.310754616865281108],"hpluv":[127.715012949238314,91.92606633748386,76.1896681333118124],"hsluv":[127.715012949238314,46.3779062484352878,76.1896681333118124]},"#88cc99":{"lch":[76.5083007543168492,46.0935908553499587,136.122445502284393],"luv":[76.5083007543168492,-33.2253063874269188,31.9483666781575764],"rgb":[0.533333333333333326,0.8,0.6],"xyz":[0.374941935626767142,0.507187034951971483,0.379521294506399],"hpluv":[136.122445502284393,78.7570782006024643,76.5083007543168492],"hsluv":[136.122445502284393,48.1280089891728622,76.5083007543168492]},"#88ccaa":{"lch":[76.8730534179438223,38.4110576559043437,149.173477570542047],"luv":[76.8730534179438223,-32.9844501501569098,19.6833787378341469],"rgb":[0.533333333333333326,0.8,0.66666666666666663],"xyz":[0.389999628592019698,0.513210112138072549,0.458825144123397588],"hpluv":[149.173477570542047,66.8865090410736229,76.8730534179438223],"hsluv":[149.173477570542047,50.0095890879800891,76.8730534179438223]},"#88ccbb":{"lch":[77.2847330465352087,33.404634806871222,168.536638924911273],"luv":[77.2847330465352087,-32.73827895277973,6.638879257104497],"rgb":[0.533333333333333326,0.8,0.733333333333333282],"xyz":[0.407137220699356372,0.520065148981007308,0.54908312922203939],"hpluv":[168.536638924911273,59.444025112992847,77.2847330465352087],"hsluv":[168.536638924911273,51.9915664660802292,77.2847330465352087]},"#88cccc":{"lch":[77.7438691793350074,33.2404934388306,192.177050630060876],"luv":[77.7438691793350074,-32.4925976386916417,-7.01152642061846443],"rgb":[0.533333333333333326,0.8,0.8],"xyz":[0.426429596143078071,0.527782099158496165,0.650689639892309546],"hpluv":[192.177050630060876,60.6231146417445359,77.7438691793350074],"hsluv":[192.177050630060876,54.0427382519684585,77.7438691793350074]},"#88ccdd":{"lch":[78.2507307533704,38.5418325774740964,213.193277164244591],"luv":[78.2507307533704,-32.2529061156020589,-21.1003058159876602],"rgb":[0.533333333333333326,0.8,0.866666666666666696],"xyz":[0.44794792169371167,0.536389429378749671,0.764019487792315544],"hpluv":[213.193277164244591,72.2588367593471759,78.2507307533704],"hsluv":[213.193277164244591,56.1332045791076126,78.2507307533704]},"#88ccee":{"lch":[78.8053428571366368,47.78945312574524,227.924421751618695],"luv":[78.8053428571366368,-32.0242046898233,-35.4722728908382834],"rgb":[0.533333333333333326,0.8,0.933333333333333348],"xyz":[0.47176010195988638,0.545914301485219688,0.889430303860838767],"hpluv":[227.924421751618695,92.3999074491721473,78.8053428571366368],"hsluv":[227.924421751618695,70.4270935368067796,78.8053428571366368]},"#88ccff":{"lch":[79.4075039272108114,59.2521837878726885,237.529017152572294],"luv":[79.4075039272108114,-31.8108626015509195,-49.9889018100727327],"rgb":[0.533333333333333326,0.8,1],"xyz":[0.497931150369717801,0.556382720849152412,1.02726449215262061],"hpluv":[237.529017152572294,118.549697277888072,79.4075039272108114],"hsluv":[237.529017152572294,99.999999999996561,79.4075039272108114]},"#334400":{"lch":[26.2681529832905483,31.0251081485104194,104.276907196552472],"luv":[26.2681529832905483,-7.65105337509169647,30.0669040288198879],"rgb":[0.2,0.266666666666666663,0],"xyz":[0.034322417713353183,0.0483799977885883553,0.00753004776376127276],"hpluv":[104.276907196552472,149.872894059772364,26.2681529832905483],"hsluv":[104.276907196552472,100.000000000002302,26.2681529832905483]},"#334411":{"lch":[26.3856741683463127,27.3886432490873446,106.295788944443402],"luv":[26.3856741683463127,-7.68514827558869662,26.2883296351821087],"rgb":[0.2,0.266666666666666663,0.0666666666666666657],"xyz":[0.0353340832129903082,0.0487846639884432082,0.0128581527285169042],"hpluv":[106.295788944443402,131.716945387015755,26.3856741683463127],"hsluv":[106.295788944443402,86.6296124974134614,26.3856741683463127]},"#334422":{"lch":[26.6018195362025054,21.2226436820006832,111.412237748000109],"luv":[26.6018195362025054,-7.74787020962619799,19.7578114189793403],"rgb":[0.2,0.266666666666666663,0.133333333333333331],"xyz":[0.0372094413514673233,0.0495348072438340295,0.0227350389244961],"hpluv":[111.412237748000109,101.234249163259577,26.6018195362025054],"hsluv":[111.412237748000109,63.7673799144094,26.6018195362025054]},"#334433":{"lch":[26.9529945323855813,12.8320575385027151,127.715012949236225],"luv":[26.9529945323855813,-7.8498102472204323,10.150969399721264],"rgb":[0.2,0.266666666666666663,0.2],"xyz":[0.0402971920839250639,0.0507699075368171424,0.038997192782107247],"hpluv":[127.715012949236225,60.4127494816677171,26.9529945323855813],"hsluv":[127.715012949236225,30.7608572023581708,26.9529945323855813]},"#334444":{"lch":[27.4501004194092673,8.17817622085537721,192.177050630060421],"luv":[27.4501004194092673,-7.99417102070306651,-1.72504956193021397],"rgb":[0.2,0.266666666666666663,0.266666666666666663],"xyz":[0.0447551873281439444,0.0525531056345047154,0.0624759677349938855],"hpluv":[192.177050630060421,37.8052272806132379,27.4501004194092673],"hsluv":[192.177050630060421,37.6572465300637518,27.4501004194092673]},"#334455":{"lch":[28.0976851129048839,16.9879579660521678,241.20654356816641],"luv":[28.0976851129048839,-8.1823109542023289,-14.8875956186718064],"rgb":[0.2,0.266666666666666663,0.333333333333333315],"xyz":[0.0507176013675059364,0.0549380712502495483,0.0938780150089678],"hpluv":[241.20654356816641,76.720241835207986,28.0976851129048839],"hsluv":[241.20654356816641,44.9859363973003568,28.0976851129048839]},"#334466":{"lch":[28.8949601880565652,29.7043747380071501,253.545194757545516],"luv":[28.8949601880565652,-8.41402976058801855,-28.487786536758108],"rgb":[0.2,0.266666666666666663,0.4],"xyz":[0.0583025971410141147,0.0579720695596528598,0.133825659416111742],"hpluv":[253.545194757545516,130.448064952476017,28.8949601880565652],"hsluv":[253.545194757545516,52.1427730716471629,28.8949601880565652]},"#334477":{"lch":[29.8367962202096138,42.8398018741040758,258.299336276781332],"luv":[29.8367962202096138,-8.68785350705267589,-41.9496105590085691],"rgb":[0.2,0.266666666666666663,0.466666666666666674],"xyz":[0.0676166101612160342,0.0616976747677336762,0.182879461322509651],"hpluv":[258.299336276781332,182.19421868795277,29.8367962202096138],"hsluv":[258.299336276781332,58.7347196438674857,29.8367962202096138]},"#334488":{"lch":[30.9147794404111025,55.6960507233291082,260.699324576281469],"luv":[30.9147794404111025,-9.00134255207500189,-54.9638599302837605],"rgb":[0.2,0.266666666666666663,0.533333333333333326],"xyz":[0.0787570272631598622,0.066153841608511274,0.241552324726081818],"hpluv":[260.699324576281469,228.611238042833349,30.9147794404111025],"hsluv":[260.699324576281469,64.5716173949788583,30.9147794404111025]},"#334499":{"lch":[32.1182691124294664,68.0605660836803281,262.102678541403236],"luv":[32.1182691124294664,-9.35140200670356769,-67.4150720250304],"rgb":[0.2,0.266666666666666663,0.6],"xyz":[0.0918139913722325618,0.0713766272521404316,0.310319002367199726],"hpluv":[262.102678541403236,268.895014901030436,32.1182691124294664],"hsluv":[262.102678541403236,69.6097770986353623,32.1182691124294664]},"#3344aa":{"lch":[33.435366318838156,79.8975403264742852,263.001802037450773],"luv":[33.435366318838156,-9.73456660877536528,-79.3023023824649158],"rgb":[0.2,0.266666666666666663,0.66666666666666663],"xyz":[0.106871684337485118,0.07739970443824154,0.389622851984198326],"hpluv":[263.001802037450773,303.226149032408784,33.435366318838156],"hsluv":[263.001802037450773,73.891501645941716,33.435366318838156]},"#3344bb":{"lch":[34.8537252521307721,91.2457354427413492,263.615054402289786],"luv":[34.8537252521307721,-10.1472390443123768,-90.6797539490724773],"rgb":[0.2,0.266666666666666663,0.733333333333333282],"xyz":[0.124009276444821764,0.0842547412811763,0.479880837082840073],"hpluv":[263.615054402289786,332.202349056841342,34.8537252521307721],"hsluv":[263.615054402289786,77.4995146205371412,34.8537252521307721]},"#3344cc":{"lch":[36.3611746115969083,102.170263494902102,264.052905077601281],"luv":[36.3611746115969083,-10.5858721727669973,-101.620382074461631],"rgb":[0.2,0.266666666666666663,0.8],"xyz":[0.143301651888543491,0.0919716914586651,0.581487347753110284],"hpluv":[264.052905077601281,356.55451128807033,36.3611746115969083],"hsluv":[264.052905077601281,80.5286468598271767,36.3611746115969083]},"#3344dd":{"lch":[37.9461503215655611,112.73940211649635,264.376684246138268],"luv":[37.9461503215655611,-11.0470957042534899,-112.196855865421313],"rgb":[0.2,0.266666666666666663,0.866666666666666696],"xyz":[0.164819977439177034,0.100579021678918634,0.694817195653116282],"hpluv":[264.376684246138268,377.005191833442723,37.9461503215655611],"hsluv":[264.376684246138268,84.1625325255073,37.9461503215655611]},"#3344ee":{"lch":[39.5979632159824462,123.014623823289881,264.622878978329823],"luv":[39.5979632159824462,-11.5277944422180187,-122.473293536523641],"rgb":[0.2,0.266666666666666663,0.933333333333333348],"xyz":[0.188632157705351772,0.110103893785388651,0.820228011721639505],"hpluv":[264.622878978329823,394.205992168221826,39.5979632159824462],"hsluv":[264.622878978329823,91.9832832027675664,39.5979632159824462]},"#3344ff":{"lch":[41.3069357297154482,133.047388274610427,264.814390787746049],"luv":[41.3069357297154482,-12.0251481753234213,-132.502842754623401],"rgb":[0.2,0.266666666666666663,1],"xyz":[0.214803206115183165,0.120572313149321361,0.95806220001342135],"hpluv":[264.814390787746049,408.716999433792864,41.3069357297154482],"hsluv":[264.814390787746049,99.9999999999994458,41.3069357297154482]},"#aacc00":{"lch":[77.1199831352121,88.8460909387721,100.173289143969555],"luv":[77.1199831352121,-15.692520471132994,87.4492577233428108],"rgb":[0.66666666666666663,0.8,0],"xyz":[0.381691137978657502,0.517314555618973326,0.0797436262784653],"hpluv":[100.173289143969555,156.730643533439519,77.1199831352121],"hsluv":[100.173289143969555,100.000000000002373,77.1199831352121]},"#aacc11":{"lch":[77.1442576556984676,87.800209961997254,100.311366942902],"luv":[77.1442576556984676,-15.7160097521192821,86.3821967007212237],"rgb":[0.66666666666666663,0.8,0.0666666666666666657],"xyz":[0.382702803478294606,0.517719221818828235,0.085071731243220941],"hpluv":[100.311366942902,155.08420894585916,77.1442576556984676],"hsluv":[100.311366942902,98.7181568051142,77.1442576556984676]},"#aacc22":{"lch":[77.1892227090432641,85.8765024717939411,100.574350259733862],"luv":[77.1892227090432641,-15.7593085348968636,84.4181134075499102],"rgb":[0.66666666666666663,0.8,0.133333333333333331],"xyz":[0.384578161616771663,0.518469365074219,0.0949486174392001336],"hpluv":[100.574350259733862,152.047171814071362,77.1892227090432641],"hsluv":[100.574350259733862,96.3604791744028404,77.1892227090432641]},"#aacc33":{"lch":[77.2631626362465482,82.7513779572315116,101.028364552392574],"luv":[77.2631626362465482,-15.8299191574657527,81.2231753460099668],"rgb":[0.66666666666666663,0.8,0.2],"xyz":[0.387665912349229369,0.519704465367202162,0.111210771296811284],"hpluv":[101.028364552392574,147.088857703341773,77.2631626362465482],"hsluv":[101.028364552392574,92.5301726329619,77.2631626362465482]},"#aacc44":{"lch":[77.3697083481362569,78.3307208035327278,101.734312614214147],"luv":[77.3697083481362569,-15.9304072801298968,76.6937021240348],"rgb":[0.66666666666666663,0.8,0.266666666666666663],"xyz":[0.392123907593448284,0.521487663464889728,0.134689546249697922],"hpluv":[101.734312614214147,140.021584702469511,77.3697083481362569],"hsluv":[101.734312614214147,87.1104907412273377,77.3697083481362569]},"#aacc55":{"lch":[77.5118305539362495,72.5836718124644875,102.784946304826448],"luv":[77.5118305539362495,-16.0622064150904862,70.7841432727597493],"rgb":[0.66666666666666663,0.8,0.333333333333333315],"xyz":[0.398086321632810269,0.523872629080634478,0.16609159352367181],"hpluv":[102.784946304826448,130.736122666873541,77.5118305539362495],"hsluv":[102.784946304826448,80.0585735006639,77.5118305539362495]},"#aacc66":{"lch":[77.6920071630818114,65.5409770618580865,104.333567867024144],"luv":[77.6920071630818114,-16.225762577214013,63.5007425390513731],"rgb":[0.66666666666666663,0.8,0.4],"xyz":[0.405671317406318455,0.526906627390037796,0.2060392379308158],"hpluv":[104.333567867024144,119.198186871977654,77.6920071630818114],"hsluv":[104.333567867024144,71.3979720959128,77.6920071630818114]},"#aacc77":{"lch":[77.912311817127474,57.2990991241466574,106.653185897117098],"luv":[77.912311817127474,-16.4206512214041886,54.8958010589496865],"rgb":[0.66666666666666663,0.8,0.466666666666666674],"xyz":[0.41498533042652036,0.530632232598118647,0.255093039837213709],"hpluv":[106.653185897117098,105.457526508453554,77.912311817127474],"hsluv":[106.653185897117098,61.2114900666368769,77.912311817127474]},"#aacc88":{"lch":[78.1744663257663,48.0371110011961946,110.274462486898784],"luv":[78.1744663257663,-16.6457037997795574,45.0608985524173633],"rgb":[0.66666666666666663,0.8,0.533333333333333326],"xyz":[0.42612574752846416,0.53508839943889619,0.313765903240785848],"hpluv":[110.274462486898784,89.6844859178180513,78.1744663257663],"hsluv":[110.274462486898784,49.6324036967210418,78.1744663257663]},"#aacc99":{"lch":[78.4798746855988583,38.0746183254558517,116.349336294343573],"luv":[78.4798746855988583,-16.8991518201031816,34.1188397866961779],"rgb":[0.66666666666666663,0.8,0.6],"xyz":[0.43918271163753686,0.540311185082525403,0.382532580881903783],"hpluv":[116.349336294343573,72.2917022308792383,78.4798746855988583],"hsluv":[116.349336294343573,36.8338589582570535,78.4798746855988583]},"#aaccaa":{"lch":[78.8296472340984593,28.0820980315160789,127.715012949234293],"luv":[78.8296472340984593,-17.1787837008838338,22.2147163027108476],"rgb":[0.66666666666666663,0.8,0.66666666666666663],"xyz":[0.454240404602789416,0.546334262268626469,0.461836430498902384],"hpluv":[127.715012949234293,54.3703242245777503,78.8296472340984593],"hsluv":[127.715012949234293,23.0170216670413055,78.8296472340984593]},"#aaccbb":{"lch":[79.2246195207133,19.8998018903229301,151.462718702096396],"luv":[79.2246195207133,-17.4821042808439238,9.50674209115818236],"rgb":[0.66666666666666663,0.8,0.733333333333333282],"xyz":[0.47137799671012609,0.553189299111561228,0.55209441559754413],"hpluv":[151.462718702096396,39.3999249764932173,79.2246195207133],"hsluv":[151.462718702096396,25.9022649263565761,79.2246195207133]},"#aacccc":{"lch":[79.665368512397464,18.216345023755192,192.177050630059796],"luv":[79.665368512397464,-17.80648564660072,-3.84243346616347603],"rgb":[0.66666666666666663,0.8,0.8],"xyz":[0.490670372153847789,0.560906249289050085,0.653700926267814286],"hpluv":[192.177050630059796,36.9937893704297878,79.665368512397464],"hsluv":[192.177050630059796,28.9019874878943099,79.665368512397464]},"#aaccdd":{"lch":[80.1522276755556504,25.332665849504842,224.238778454296437],"luv":[80.1522276755556504,-18.1492995031005968,-17.6733382978265112],"rgb":[0.66666666666666663,0.8,0.866666666666666696],"xyz":[0.512188697704481388,0.569513579509303591,0.767030774167820284],"hpluv":[224.238778454296437,52.9363308364733882,80.1522276755556504],"hsluv":[224.238778454296437,37.9969627853472787,80.1522276755556504]},"#aaccee":{"lch":[80.6853018377357216,36.8247992939862954,239.828051209207672],"luv":[80.6853018377357216,-18.5080244281037345,-31.8358112007702587],"rgb":[0.66666666666666663,0.8,0.933333333333333348],"xyz":[0.536000877970656098,0.579038451615773608,0.892441590236343507],"hpluv":[239.828051209207672,79.4490805971393854,80.6853018377357216],"hsluv":[239.828051209207672,67.7857500876551313,80.6853018377357216]},"#aaccff":{"lch":[81.2644823279674284,49.9029399741520834,247.769045833277914],"luv":[81.2644823279674284,-18.8803249793402337,-46.1934708236816434],"rgb":[0.66666666666666663,0.8,1],"xyz":[0.562171926380487519,0.589506870979706332,1.03027577852812535],"hpluv":[247.769045833277914,111.562078640814406,81.2644823279674284],"hsluv":[247.769045833277914,99.9999999999962625,81.2644823279674284]},"#88dd00":{"lch":[80.1491214608994085,103.252993693735874,114.339076779275487],"luv":[80.1491214608994085,-42.5542610136121837,94.0761158653142218],"rgb":[0.533333333333333326,0.866666666666666696,0],"xyz":[0.360084352515062933,0.569458386582770926,0.0909436700853518548],"hpluv":[114.339076779275487,215.722602995807392,80.1491214608994085],"hsluv":[114.339076779275487,100.000000000002288,80.1491214608994085]},"#88dd11":{"lch":[80.1718911006532551,102.308936337717924,114.55620444532569],"luv":[80.1718911006532551,-42.518128048011647,93.0555062414261727],"rgb":[0.533333333333333326,0.866666666666666696,0.0666666666666666657],"xyz":[0.361096018014700038,0.569863052782625834,0.0962717750501074915],"hpluv":[114.55620444532569,214.038948901986089,80.1718911006532551],"hsluv":[114.55620444532569,98.8288322371321186,80.1718911006532551]},"#88dd22":{"lch":[80.2140714473537315,100.574216022873557,114.966813202702411],"luv":[80.2140714473537315,-42.4516967311958453,91.1757992740300125],"rgb":[0.533333333333333326,0.866666666666666696,0.133333333333333331],"xyz":[0.362971376153177094,0.570613196038016635,0.106148661246086684],"hpluv":[114.966813202702411,210.937294411552,80.2140714473537315],"hsluv":[114.966813202702411,96.6732644510524,80.2140714473537315]},"#88dd33":{"lch":[80.283440325316,97.7612202004146695,115.666709499512805],"luv":[80.283440325316,-42.3438510501166832,88.1150069699792908],"rgb":[0.533333333333333326,0.866666666666666696,0.2],"xyz":[0.3660591268856348,0.571848296330999761,0.122410815103697834],"hpluv":[115.666709499512805,205.88559104418357,80.283440325316],"hsluv":[115.666709499512805,93.1672856447162303,80.283440325316]},"#88dd44":{"lch":[80.3834168948860821,93.7943752395521,116.732715571790365],"luv":[80.3834168948860821,-42.1914333437924896,83.7691338081886698],"rgb":[0.533333333333333326,0.866666666666666696,0.266666666666666663],"xyz":[0.370517122129853715,0.573631494428687327,0.145889590056584473],"hpluv":[116.732715571790365,198.714220363605108,80.3834168948860821],"hsluv":[116.732715571790365,88.1979852499996184,80.3834168948860821]},"#88dd55":{"lch":[80.5168087418625475,88.6629430887769,118.270203219525229],"luv":[80.5168087418625475,-41.9934519908601374,78.0875628192801088],"rgb":[0.533333333333333326,0.866666666666666696,0.333333333333333315],"xyz":[0.376479536169215701,0.576016460044432077,0.17729163733055836],"hpluv":[118.270203219525229,189.352414361266369,80.5168087418625475],"hsluv":[118.270203219525229,81.7170886524359474,80.5168087418625475]},"#88dd66":{"lch":[80.6859701106092757,82.4238546620344437,120.433562333743893],"luv":[80.6859701106092757,-41.7508898851674672,71.0672569552589266],"rgb":[0.533333333333333326,0.866666666666666696,0.4],"xyz":[0.384064531942723886,0.579050458353835396,0.21723928173770235],"hpluv":[120.433562333743893,177.835721711884361,80.6859701106092757],"hsluv":[120.433562333743893,73.7344666622195604,80.6859701106092757]},"#88dd77":{"lch":[80.8928858528116734,75.2114908165065827,123.458458278308711],"luv":[80.8928858528116734,-41.4665196955592208,62.7478772165182832],"rgb":[0.533333333333333326,0.866666666666666696,0.466666666666666674],"xyz":[0.393378544962925791,0.582776063561916247,0.266293083644100259],"hpluv":[123.458458278308711,164.332036041008877,80.8928858528116734],"hsluv":[123.458458278308711,64.312379996729149,80.8928858528116734]},"#88dd88":{"lch":[81.1392211885512,67.2590471315356524,127.71501294923884],"luv":[81.1392211885512,-41.1446687958856145,53.2061617739807531],"rgb":[0.533333333333333326,0.866666666666666696,0.533333333333333326],"xyz":[0.404518962064869592,0.587232230402693789,0.324965947047672399],"hpluv":[127.71501294923884,149.199726190229825,81.1392211885512],"hsluv":[127.71501294923884,53.5585775308776633,81.1392211885512]},"#88dd99":{"lch":[81.4263538436063072,58.943488890057,133.791370377408185],"luv":[81.4263538436063072,-40.7909253788266,42.5492102073736831],"rgb":[0.533333333333333326,0.866666666666666696,0.6],"xyz":[0.417575926173942347,0.592455016046323,0.393732624688790334],"hpluv":[133.791370377408185,133.11083868071384,81.4263538436063072],"hsluv":[133.791370377408185,54.8771054313611515,81.4263538436063072]},"#88ddaa":{"lch":[81.7553965772464437,50.8758256364689956,142.591286230634154],"luv":[81.7553965772464437,-40.4117997418374131,30.906893661738728],"rgb":[0.533333333333333326,0.866666666666666696,0.66666666666666663],"xyz":[0.432633619139194847,0.598478093232424069,0.473036474305788934],"hpluv":[142.591286230634154,117.302359569381537,81.7553965772464437],"hsluv":[142.591286230634154,56.3076629138628,81.7553965772464437]},"#88ddbb":{"lch":[82.1272144034785327,44.0521153731503716,155.27715859232552],"luv":[82.1272144034785327,-40.0143654100278567,18.4238820470094566],"rgb":[0.533333333333333326,0.866666666666666696,0.733333333333333282],"xyz":[0.449771211246531522,0.605333130075358827,0.563294459404430681],"hpluv":[155.27715859232552,104.020343594656595,82.1272144034785327],"hsluv":[155.27715859232552,57.829298146967858,82.1272144034785327]},"#88ddcc":{"lch":[82.542438979776648,39.9525966793572422,172.446474622419316],"luv":[82.542438979776648,-39.6059077008678173,5.25186220437346396],"rgb":[0.533333333333333326,0.866666666666666696,0.8],"xyz":[0.469063586690253276,0.613050080252847684,0.664900970074700837],"hpluv":[172.446474622419316,96.9346789585341355,82.542438979776648],"hsluv":[172.446474622419316,59.4202271347422908,82.542438979776648]},"#88dddd":{"lch":[83.0014816422074375,40.0957403917498354,192.177050630060734],"luv":[83.0014816422074375,-39.1936046909777,-8.4575261684472629],"rgb":[0.533333333333333326,0.866666666666666696,0.866666666666666696],"xyz":[0.490581912240886764,0.621657410473101191,0.778230817974706834],"hpluv":[192.177050630060734,100.308679558078737,83.0014816422074375],"hsluv":[192.177050630060734,61.0588228331018783,83.0014816422074375]},"#88ddee":{"lch":[83.5045459788204,44.8677054153188,210.184175125347622],"luv":[83.5045459788204,-38.7842593009493157,-22.5586395802706683],"rgb":[0.533333333333333326,0.866666666666666696,0.933333333333333348],"xyz":[0.514394092507061584,0.631182282579571208,0.903641634043230058],"hpluv":[210.184175125347622,116.175045715242419,83.5045459788204],"hsluv":[210.184175125347622,62.7244468832174746,83.5045459788204]},"#88ddff":{"lch":[84.0516404633952732,53.2556266987753659,223.883407592331508],"luv":[84.0516404633952732,-38.3840933399078779,-36.9164347351224436],"rgb":[0.533333333333333326,0.866666666666666696,1],"xyz":[0.540565140916892894,0.641650701943503932,1.04147582233501179],"hpluv":[223.883407592331508,143.298172182841085,84.0516404633952732],"hsluv":[223.883407592331508,99.9999999999952,84.0516404633952732]},"#335500":{"lch":[32.2593993637483862,41.1235506245754365,113.326494368716226],"luv":[32.2593993637483862,-16.2836990313566261,37.7622504868051223],"rgb":[0.2,0.333333333333333315,0],"xyz":[0.0461356744276991415,0.0720065112172806193,0.0114678000018764836],"hpluv":[113.326494368716226,161.760937136611716,32.2593993637483862],"hsluv":[113.326494368716226,100.000000000002288,32.2593993637483862]},"#335511":{"lch":[32.3496341583576381,38.1897920123001313,115.090818108356473],"luv":[32.3496341583576381,-16.1945453684027605,34.5860797757347456],"rgb":[0.2,0.333333333333333315,0.0666666666666666657],"xyz":[0.0471473399273362598,0.0724111774171354722,0.016795904966632115],"hpluv":[115.090818108356473,149.801873896373706,32.3496341583576381],"hsluv":[115.090818108356473,90.8995446090399923,32.3496341583576381]},"#335522":{"lch":[32.5160201858231659,33.1206139518783189,118.966642902489184],"luv":[32.5160201858231659,-16.0403246718637718,28.9772851207727022],"rgb":[0.2,0.333333333333333315,0.133333333333333331],"xyz":[0.0490226980658132819,0.0731613206725262866,0.0266727911626113111],"hpluv":[118.966642902489184,129.252907346834121,32.5160201858231659],"hsluv":[118.966642902489184,74.935129302234273,32.5160201858231659]},"#335533":{"lch":[32.7875119073456176,25.8516304293262671,127.715012949238741],"luv":[32.7875119073456176,-15.8143300747053051,20.4502753072602665],"rgb":[0.2,0.333333333333333315,0.2],"xyz":[0.0521104487982710224,0.0743964209655094,0.0429349450202224578],"hpluv":[127.715012949238741,100.050394151032577,32.7875119073456176],"hsluv":[127.715012949238741,50.9434831873252207,32.7875119073456176]},"#335544":{"lch":[33.1742322541989836,18.1915220066791647,148.674883917516439],"luv":[33.1742322541989836,-15.539762262897943,9.45765624941535421],"rgb":[0.2,0.333333333333333315,0.266666666666666663],"xyz":[0.0565684440424899,0.0761796190631969794,0.0664137199731090894],"hpluv":[148.674883917516439,69.5836942134034899,33.1742322541989836],"hsluv":[148.674883917516439,54.5088767633859703,33.1742322541989836]},"#335555":{"lch":[33.6821363315134121,15.5994691341387064,192.177050630060819],"luv":[33.6821363315134121,-15.2484882598238034,-3.29044724269541522],"rgb":[0.2,0.333333333333333315,0.333333333333333315],"xyz":[0.0625308580818519,0.0785645846789418123,0.097815767247083],"hpluv":[192.177050630060819,58.7691644617976934,33.6821363315134121],"hsluv":[192.177050630060819,58.539124710901028,33.6821363315134121]},"#335566":{"lch":[34.3136156967701496,22.6822476529859181,228.692277460856218],"luv":[34.3136156967701496,-14.9726179113300351,-17.0383412183435361],"rgb":[0.2,0.333333333333333315,0.4],"xyz":[0.0701158538553600663,0.0815985829883451308,0.137763411654226953],"hpluv":[228.692277460856218,83.8800984368335,34.3136156967701496],"hsluv":[228.692277460856218,62.7386213411417089,34.3136156967701496]},"#335577":{"lch":[35.0679836745485218,34.4527831327976131,244.673076132176305],"luv":[35.0679836745485218,-14.7383029974912176,-31.1412377780608658],"rgb":[0.2,0.333333333333333315,0.466666666666666674],"xyz":[0.0794298668755619858,0.0853241881964259402,0.186817213560624862],"hpluv":[244.673076132176305,124.667382519216758,35.0679836745485218],"hsluv":[244.673076132176305,66.8604241763398335,35.0679836745485218]},"#335588":{"lch":[35.9419713942028523,47.4274747217606318,252.117898483801355],"luv":[35.9419713942028523,-14.5630489263951493,-45.1362710516793229],"rgb":[0.2,0.333333333333333315,0.533333333333333326],"xyz":[0.0905702839775058138,0.089780355037203538,0.245490076964197029],"hpluv":[252.117898483801355,167.443168522882189,35.9419713942028523],"hsluv":[252.117898483801355,70.7327730687023433,35.9419713942028523]},"#335599":{"lch":[36.9302538454711851,60.4953772811161272,256.174865065393647],"luv":[36.9302538454711851,-14.4559426241851021,-58.7427986669927833],"rgb":[0.2,0.333333333333333315,0.6],"xyz":[0.103627248086578527,0.0950031406808327,0.314256754605314936],"hpluv":[256.174865065393647,207.863972679723531,36.9302538454711851],"hsluv":[256.174865065393647,74.2581677802949258,36.9302538454711851]},"#3355aa":{"lch":[38.0259842211890557,73.2582460718320903,258.648348715518409],"luv":[38.0259842211890557,-14.4194259870406505,-71.8251402485603165],"rgb":[0.2,0.333333333333333315,0.66666666666666663],"xyz":[0.118684941051831069,0.101026217866933804,0.393560604222313537],"hpluv":[258.648348715518409,244.464262316607687,38.0259842211890557],"hsluv":[258.648348715518409,77.3978910060545,38.0259842211890557]},"#3355bb":{"lch":[39.2213032744107579,85.5750988898230815,260.277622363739169],"luv":[39.2213032744107579,-14.4514388960387397,-84.3460340729607623],"rgb":[0.2,0.333333333333333315,0.733333333333333282],"xyz":[0.135822533159167702,0.107881254709868563,0.483818589320955283],"hpluv":[260.277622363739169,276.862869377010384,39.2213032744107579],"hsluv":[260.277622363739169,80.1529964351826578,39.2213032744107579]},"#3355cc":{"lch":[40.5077939091134667,97.4185991778777,261.412040351160215],"luv":[40.5077939091134667,-14.5472816309580448,-96.326320717286734],"rgb":[0.2,0.333333333333333315,0.8],"xyz":[0.155114908602889456,0.115598204887357364,0.585425099991225495],"hpluv":[261.412040351160215,305.17054630009352,40.5077939091134667],"hsluv":[261.412040351160215,82.5478264076183734,40.5077939091134667]},"#3355dd":{"lch":[41.8768615158020552,108.813506268261335,262.235450095721887],"luv":[41.8768615158020552,-14.7009821832840935,-107.815862790406285],"rgb":[0.2,0.333333333333333315,0.866666666666666696],"xyz":[0.176633234153523,0.124205535107610898,0.698754947891231493],"hpluv":[262.235450095721887,329.72206067647727,41.8768615158020552],"hsluv":[262.235450095721887,84.6180359154754456,41.8768615158020552]},"#3355ee":{"lch":[43.3200322197542533,119.805986402952101,262.852770803428143],"luv":[43.3200322197542533,-14.9061911990543372,-118.875059797762361],"rgb":[0.2,0.333333333333333315,0.933333333333333348],"xyz":[0.200445414419697737,0.133730407214080915,0.824165763959754716],"hpluv":[262.852770803428143,350.936931775297865,43.3200322197542533],"hsluv":[262.852770803428143,90.8055999978327577,43.3200322197542533]},"#3355ff":{"lch":[44.8291710285026497,130.447860525532377,263.327743444412704],"luv":[44.8291710285026497,-15.1567128937849134,-129.564340657235334],"rgb":[0.2,0.333333333333333315,1],"xyz":[0.226616462829529131,0.144198826578013639,0.961999952251536561],"hpluv":[263.327743444412704,369.245812735261836,44.8291710285026497],"hsluv":[263.327743444412704,99.9999999999993,44.8291710285026497]},"#aadd00":{"lch":[81.9783608763648175,97.3184216433040916,105.014728605041086],"luv":[81.9783608763648175,-25.2120246284188454,93.9958988747909245],"rgb":[0.66666666666666663,0.866666666666666696,0],"xyz":[0.424325128525832707,0.602582536713324846,0.0939549564608566229],"hpluv":[105.014728605041086,227.603505169437568,81.9783608763648175],"hsluv":[105.014728605041086,100.000000000002203,81.9783608763648175]},"#aadd11":{"lch":[82.0002885274849262,96.374791846509865,105.167446282879951],"luv":[82.0002885274849262,-25.2155818179290208,93.017605521973266],"rgb":[0.66666666666666663,0.866666666666666696,0.0666666666666666657],"xyz":[0.425336794025469811,0.602987202913179754,0.0992830614256122596],"hpluv":[105.167446282879951,225.71449396257529,82.0002885274849262],"hsluv":[105.167446282879951,98.8971907906987298,82.0002885274849262]},"#aadd22":{"lch":[82.0409106120811,94.6380623122949345,105.456830413527484],"luv":[82.0409106120811,-25.2222030700150874,91.2151484706391216],"rgb":[0.66666666666666663,0.866666666666666696,0.133333333333333331],"xyz":[0.427212152163946868,0.603737346168570554,0.109159947621591452],"hpluv":[105.456830413527484,222.227322886837186,82.0409106120811],"hsluv":[105.456830413527484,96.86659260915998,82.0409106120811]},"#aadd33":{"lch":[82.1077210543303693,91.8137349028061891,105.951891130476156],"luv":[82.1077210543303693,-25.2331804702422886,88.2782448860360773],"rgb":[0.66666666666666663,0.866666666666666696,0.2],"xyz":[0.430299902896404574,0.604972446461553681,0.125422101479202602],"hpluv":[105.951891130476156,216.526835376233663,82.1077210543303693],"hsluv":[105.951891130476156,93.5615293661406469,82.1077210543303693]},"#aadd44":{"lch":[82.204019596801416,87.812555976334508,106.710442618715334],"luv":[82.204019596801416,-25.2491908313752447,84.1042409718896238],"rgb":[0.66666666666666663,0.866666666666666696,0.266666666666666663],"xyz":[0.434757898140623489,0.606755644559241247,0.148900876432089241],"hpluv":[106.710442618715334,208.386709262610594,82.204019596801416],"hsluv":[106.710442618715334,88.8720213109455415,82.204019596801416]},"#aadd55":{"lch":[82.332521082647844,82.6008871447080537,107.814707884186447],"luv":[82.332521082647844,-25.2708912490316564,78.6402480449573],"rgb":[0.66666666666666663,0.866666666666666696,0.333333333333333315],"xyz":[0.440720312179985474,0.609140610174986,0.180302923706063156],"hpluv":[107.814707884186447,197.666387369374576,82.332521082647844],"hsluv":[107.814707884186447,82.7472331150865,82.332521082647844]},"#aadd66":{"lch":[82.495508489392364,76.2000100439918526,109.390646830849064],"luv":[82.495508489392364,-25.2989483474785786,71.8777068583581666],"rgb":[0.66666666666666663,0.866666666666666696,0.4],"xyz":[0.448305307953493659,0.612174608484389315,0.22025056811320709],"hpluv":[109.390646830849064,184.308617744019813,82.495508489392364],"hsluv":[109.390646830849064,75.1895211365387723,82.495508489392364]},"#aadd77":{"lch":[82.694914273715753,68.6905071379487,111.642517734809914],"luv":[82.694914273715753,-25.3340491820501299,63.8480361711309499],"rgb":[0.66666666666666663,0.866666666666666696,0.466666666666666674],"xyz":[0.457619320973695565,0.615900213692470166,0.269304370019605],"hpluv":[111.642517734809914,168.351618208890358,82.694914273715753],"hsluv":[111.642517734809914,66.2494286969421182,82.694914273715753]},"#aadd88":{"lch":[82.9323686283524921,60.2252781448786436,114.920875432447886],"luv":[82.9323686283524921,-25.3769003534370228,54.6177357282387277],"rgb":[0.66666666666666663,0.866666666666666696,0.533333333333333326],"xyz":[0.468759738075639365,0.620356380533247709,0.327977233423177195],"hpluv":[114.920875432447886,149.967217229555729,82.9323686283524921],"hsluv":[114.920875432447886,56.0198042099318698,82.9323686283524921]},"#aadd99":{"lch":[83.2092305924335,51.0640475908324305,119.865599423026282],"luv":[83.2092305924335,-25.4282188712646082,44.2825320120006438],"rgb":[0.66666666666666663,0.866666666666666696,0.6],"xyz":[0.481816702184712065,0.625579166176876922,0.396743911064295074],"hpluv":[119.865599423026282,129.562195810811914,83.2092305924335],"hsluv":[119.865599423026282,44.6286172342680487,83.2092305924335]},"#aaddaa":{"lch":[83.526609727912188,41.6663179647472717,127.715012949236481],"luv":[83.526609727912188,-25.4887175141036408,32.9606937461220255],"rgb":[0.66666666666666663,0.866666666666666696,0.66666666666666663],"xyz":[0.496874395149964621,0.631602243362978,0.476047760681293675],"hpluv":[127.715012949236481,108.050849780995421,83.526609727912188],"hsluv":[127.715012949236481,32.2306770176982198,83.526609727912188]},"#aaddbb":{"lch":[83.8853825066367449,32.9442078204095523,140.880295511025736],"luv":[83.8853825066367449,-25.5590871805440472,20.7859060762739638],"rgb":[0.66666666666666663,0.866666666666666696,0.733333333333333282],"xyz":[0.514011987257301239,0.638457280205912747,0.566305745779935421],"hpluv":[140.880295511025736,87.605014056209555,83.8853825066367449],"hsluv":[140.880295511025736,34.4766875289621382,83.8853825066367449]},"#aaddcc":{"lch":[84.2862057978904602,26.8294893367150316,162.87488866986746],"luv":[84.2862057978904602,-25.639978502468459,7.90018990036700242],"rgb":[0.66666666666666663,0.866666666666666696,0.8],"xyz":[0.533304362701023,0.646174230383401604,0.667912256450205577],"hpluv":[162.87488866986746,73.4171355960865526,84.2862057978904602],"hsluv":[162.87488866986746,36.8333761539634708,84.2862057978904602]},"#aadddd":{"lch":[84.729528894444158,26.3242685722419552,192.177050630060421],"luv":[84.729528894444158,-25.7319846477226655,-5.55266440124834],"rgb":[0.66666666666666663,0.866666666666666696,0.866666666666666696],"xyz":[0.554822688251656593,0.654781560603655111,0.781242104350211575],"hpluv":[192.177050630060421,74.4077864529294146,84.729528894444158],"hsluv":[192.177050630060421,39.269697519551606,84.729528894444158]},"#aaddee":{"lch":[85.2156049558348769,32.3281965376105802,216.94937298104162],"luv":[85.2156049558348769,-25.8356267715816657,-19.4327733659894548],"rgb":[0.66666666666666663,0.866666666666666696,0.933333333333333348],"xyz":[0.578634868517831302,0.664306432710125128,0.906652920418734798],"hpluv":[216.94937298104162,94.7745998726022094,85.2156049558348769],"hsluv":[216.94937298104162,58.4216362813771397,85.2156049558348769]},"#aaddff":{"lch":[85.744502396509489,42.4619511969095527,232.326067904807843],"luv":[85.744502396509489,-25.9513430438233641,-33.608705623253762],"rgb":[0.66666666666666663,0.866666666666666696,1],"xyz":[0.604805916927662723,0.674774852074057852,1.04448710871051675],"hpluv":[232.326067904807843,129.682154580054771,85.744502396509489],"hsluv":[232.326067904807843,99.9999999999945572,85.744502396509489]},"#88ee00":{"lch":[85.1906878331824515,112.448241602139106,116.535675589642423],"luv":[85.1906878331824515,-50.2368100475369914,100.602534538950536],"rgb":[0.533333333333333326,0.933333333333333348,0],"xyz":[0.40726312885557775,0.663815939263801891,0.106669928865523039],"hpluv":[116.535675589642423,329.03324103323672,85.1906878331824515],"hsluv":[116.535675589642423,100.000000000002416,85.1906878331824515]},"#88ee11":{"lch":[85.2112458075113182,111.594873497969587,116.730132104203335],"luv":[85.2112458075113182,-50.1941202672300193,99.669283541253],"rgb":[0.533333333333333326,0.933333333333333348,0.0666666666666666657],"xyz":[0.408274794355214854,0.664220605463656799,0.111998033830278676],"hpluv":[116.730132104203335,327.047318494663614,85.2112458075113182],"hsluv":[116.730132104203335,98.9939616796445,85.2112458075113182]},"#88ee22":{"lch":[85.2493327369145,110.025246585506409,117.096539077460619],"luv":[85.2493327369145,-50.115524286233132,97.9489107224652429],"rgb":[0.533333333333333326,0.933333333333333348,0.133333333333333331],"xyz":[0.410150152493691911,0.6649707487190476,0.121874920026257869],"hpluv":[117.096539077460619,323.384561507736407,85.2493327369145],"hsluv":[117.096539077460619,97.140453749143191,85.2493327369145]},"#88ee33":{"lch":[85.3119799721786,107.475578977757436,117.717135468026783],"luv":[85.3119799721786,-49.9876247553973769,95.1432469906181097],"rgb":[0.533333333333333326,0.933333333333333348,0.2],"xyz":[0.413237903226149617,0.666205849012030726,0.138137073883869],"hpluv":[117.717135468026783,317.406918528502,85.3119799721786],"hsluv":[117.717135468026783,94.120593299189423,85.3119799721786]},"#88ee44":{"lch":[85.4022915890189864,103.870397610997969,118.652974854946393],"luv":[85.4022915890189864,-49.8062112723248518,91.1504296126099],"rgb":[0.533333333333333326,0.933333333333333348,0.266666666666666663],"xyz":[0.417695898470368532,0.667989047109718292,0.161615848836755643],"hpluv":[118.652974854946393,308.894438519259097,85.4022915890189864],"hsluv":[118.652974854946393,89.8292917088674869,85.4022915890189864]},"#88ee55":{"lch":[85.5228293578601466,99.1885702075232,119.98340282305692],"luv":[85.5228293578601466,-49.5693999595221584,85.9141842041562],"rgb":[0.533333333333333326,0.933333333333333348,0.333333333333333315],"xyz":[0.423658312509730517,0.670374012725463,0.193017896110729559],"hpluv":[119.98340282305692,297.731707367046795,85.5228293578601466],"hsluv":[119.98340282305692,84.2131356884780473,85.5228293578601466]},"#88ee66":{"lch":[85.6757572108422,93.4644574192068234,121.818598205465591],"luv":[85.6757572108422,-49.2774194314266083,79.4187681524083189],"rgb":[0.533333333333333326,0.933333333333333348,0.4],"xyz":[0.431243308283238702,0.673408011034866361,0.232965540517873521],"hpluv":[121.818598205465591,283.912655540997662,85.6757572108422],"hsluv":[121.818598205465591,77.2651144072775082,85.6757572108422]},"#88ee77":{"lch":[85.8629182835971676,86.7937408847250822,124.317503927832064],"luv":[85.8629182835971676,-48.9324360738715,71.6852157466327071],"rgb":[0.533333333333333326,0.933333333333333348,0.466666666666666674],"xyz":[0.440557321303440608,0.677133616242947212,0.282019342424271402],"hpluv":[124.317503927832064,267.563092583833793,85.8629182835971676],"hsluv":[124.317503927832064,69.0205357789205749,85.8629182835971676]},"#88ee88":{"lch":[86.0858807036169793,79.3454652904755164,127.71501294923921],"luv":[86.0858807036169793,-48.5383458294846,62.7672832477191918],"rgb":[0.533333333333333326,0.933333333333333348,0.533333333333333326],"xyz":[0.451697738405384408,0.681589783083724754,0.340692205827843597],"hpluv":[127.71501294923921,248.989760930573482,86.0858807036169793],"hsluv":[127.71501294923921,59.5524101967812,86.0858807036169793]},"#88ee99":{"lch":[86.3459670558122525,71.3853284581525429,132.362204285947513],"luv":[86.3459670558122525,-48.1005130697284287,52.7466184841000825],"rgb":[0.533333333333333326,0.933333333333333348,0.6],"xyz":[0.464754702514457163,0.686812568727354,0.409458883468961532],"hpluv":[132.362204285947513,228.778132650246619,86.3459670558122525],"hsluv":[132.362204285947513,60.5562348819982645,86.3459670558122525]},"#88eeaa":{"lch":[86.6442747471204768,63.319361027400987,138.776693085718904],"luv":[86.6442747471204768,-47.625461320552418,41.7271723811105204],"rgb":[0.533333333333333326,0.933333333333333348,0.66666666666666663],"xyz":[0.479812395479709664,0.692835645913455,0.488762733085960077],"hpluv":[138.776693085718904,207.981038552319745,86.6442747471204768],"hsluv":[138.776693085718904,61.6537348625427342,86.6442747471204768]},"#88eebb":{"lch":[86.9816911545789679,55.7684583245382299,147.664608842749317],"luv":[86.9816911545789679,-47.1205330954276,29.8291184029711189],"rgb":[0.533333333333333326,0.933333333333333348,0.733333333333333282],"xyz":[0.496949987587046338,0.699690682756389792,0.579020718184601879],"hpluv":[147.664608842749317,188.458500832318975,86.9816911545789679],"hsluv":[147.664608842749317,62.830800627143077,86.9816911545789679]},"#88eecc":{"lch":[87.3589058048410294,49.6608679924305463,159.75715297219557],"luv":[87.3589058048410294,-46.5935415809549696,17.182656741768227],"rgb":[0.533333333333333326,0.933333333333333348,0.8],"xyz":[0.516242363030768092,0.70740763293387865,0.680627228854872],"hpluv":[159.75715297219557,173.371642714007834,87.3589058048410294],"hsluv":[159.75715297219557,64.0722902507549179,87.3589058048410294]},"#88eedd":{"lch":[87.7764209496729,46.2191498548509543,175.132102674355139],"luv":[87.7764209496729,-46.0524373199716166,3.92209512827700335],"rgb":[0.533333333333333326,0.933333333333333348,0.866666666666666696],"xyz":[0.53776068858140158,0.716014963154132156,0.793957076754878],"hpluv":[175.132102674355139,167.447502067072264,87.7764209496729],"hsluv":[175.132102674355139,65.3626972838926434,87.7764209496729]},"#88eeee":{"lch":[88.2345613859691866,46.5524177333431339,192.177050630060933],"luv":[88.2345613859691866,-45.5050097647113958,-9.8194543195231],"rgb":[0.533333333333333326,0.933333333333333348,0.933333333333333348],"xyz":[0.56157286884757629,0.725539835260602173,0.919367892823401256],"hpluv":[192.177050630060933,175.887543813927181,88.2345613859691866],"hsluv":[192.177050630060933,66.6867488369664443,88.2345613859691866]},"#88eeff":{"lch":[88.7334840469836763,50.9233073192915242,208.009521596121829],"luv":[88.7334840469836763,-44.9586380478967271,-23.9145163700465169],"rgb":[0.533333333333333326,0.933333333333333348,1],"xyz":[0.587743917257407711,0.736008254624534897,1.05720208111518299],"hpluv":[208.009521596121829,201.749007974481685,88.7334840469836763],"hsluv":[208.009521596121829,99.9999999999925109,88.7334840469836763]},"#336600":{"lch":[38.2101034680229574,51.4017776291135888,118.130952889189317],"luv":[38.2101034680229574,-24.2353400261634,45.3298029694491902],"rgb":[0.2,0.4,0],"xyz":[0.0611637321335456105,0.10206262662897396,0.0164771525704918292],"hpluv":[118.130952889189317,170.702252266418213,38.2101034680229574],"hsluv":[118.130952889189317,100.000000000002288,38.2101034680229574]},"#336611":{"lch":[38.2816545292110959,48.9828222693822468,119.470954908934345],"luv":[38.2816545292110959,-24.0986808399199681,42.6447002480913682],"rgb":[0.2,0.4,0.0666666666666666657],"xyz":[0.0621753976331827357,0.102467292828828813,0.021805257535247459],"hpluv":[119.470954908934345,162.365005406289157,38.2816545292110959],"hsluv":[119.470954908934345,93.5286374368429,38.2816545292110959]},"#336622":{"lch":[38.4137944304132617,44.7307250918699282,122.230818066602779],"luv":[38.4137944304132617,-23.8562978467226365,37.8380076152656173],"rgb":[0.2,0.4,0.133333333333333331],"xyz":[0.0640507557716597509,0.103217436084219627,0.0316821437312266585],"hpluv":[122.230818066602779,147.760399550800031,38.4137944304132617],"hsluv":[122.230818066602779,81.994947572555219,38.4137944304132617]},"#336633":{"lch":[38.6299730126545171,38.3921679396875817,127.715012949239437],"luv":[38.6299730126545171,-23.4858075099586969,30.3706339201924216],"rgb":[0.2,0.4,0.2],"xyz":[0.0671385065041174844,0.10445253637720274,0.0479442975888378],"hpluv":[127.715012949239437,126.112332565807833,38.6299730126545171],"hsluv":[127.715012949239437,64.2136550115152,38.6299730126545171]},"#336644":{"lch":[38.9390987599147635,30.7877900918170191,138.353415806708398],"luv":[38.9390987599147635,-23.0064236741332095,20.4595329483365589],"rgb":[0.2,0.4,0.266666666666666663],"xyz":[0.0715965017483363719,0.10623573447489032,0.0714230725417244472],"hpluv":[138.353415806708398,100.330262339301328,38.9390987599147635],"hsluv":[138.353415806708398,66.1490613915476899,38.9390987599147635]},"#336655":{"lch":[39.3471830293532108,24.0314899024670439,159.111050143656939],"luv":[39.3471830293532108,-22.4519783641565418,8.56861566811244479],"rgb":[0.2,0.4,0.333333333333333315],"xyz":[0.077558915787698357,0.108620700090635153,0.102825119815698349],"hpluv":[159.111050143656939,77.5008343503898089,39.3471830293532108],"hsluv":[159.111050143656939,68.4324421599544337,39.3471830293532108]},"#336666":{"lch":[39.8577781510875653,22.3660784387423632,192.177050630061],"luv":[39.8577781510875653,-21.8628519700770774,-4.71775036033837925],"rgb":[0.2,0.4,0.4],"xyz":[0.0851439115612065422,0.111654698400038471,0.142772764222842297],"hpluv":[192.177050630061,71.205917149352544,39.8577781510875653],"hsluv":[192.177050630061,70.9271962998489727,39.8577781510875653]},"#336677":{"lch":[40.4722660639059,28.403364995264031,221.483563289625266],"luv":[40.4722660639059,-21.2782609928981294,-18.8145356618838697],"rgb":[0.2,0.4,0.466666666666666674],"xyz":[0.0944579245814084478,0.115380303608119281,0.191826566129240206],"hpluv":[221.483563289625266,89.0536244466218534,40.4722660639059],"hsluv":[221.483563289625266,73.4989606489913,40.4722660639059]},"#336688":{"lch":[41.1901179582142731,39.1584560294521253,238.034471274574031],"luv":[41.1901179582142731,-20.7308371309926542,-33.2207325394668516],"rgb":[0.2,0.4,0.533333333333333326],"xyz":[0.105598341683352276,0.119836470448896878,0.250499429532812401],"hpluv":[238.034471274574031,120.634589470818128,41.1901179582142731],"hsluv":[238.034471274574031,76.0346320246428746,41.1901179582142731]},"#336699":{"lch":[42.0091634944821948,51.6886413393569626,246.942440261812],"luv":[42.0091634944821948,-20.2441498032976277,-47.5593318103852951],"rgb":[0.2,0.4,0.6],"xyz":[0.118655305792425,0.12505925609252605,0.31926610717393028],"hpluv":[246.942440261812,156.131455895945,42.0091634944821948],"hsluv":[246.942440261812,78.4511744564818514,42.0091634944821948]},"#3366aa":{"lch":[42.9258754740709847,64.6951641030825,252.148217293940775],"luv":[42.9258754740709847,-19.832670948043944,-61.5802681172418218],"rgb":[0.2,0.4,0.66666666666666663],"xyz":[0.133712998757677531,0.131082333278627144,0.398569956790928881],"hpluv":[252.148217293940775,191.245834212653307,42.9258754740709847],"hsluv":[252.148217293940775,80.6959595489171,42.9258754740709847]},"#3366bb":{"lch":[43.9356615222631106,77.6311657782158164,255.449757662516049],"luv":[43.9356615222631106,-19.5031901130623,-75.1413566253536374],"rgb":[0.2,0.4,0.733333333333333282],"xyz":[0.150850590865014178,0.137937370121561903,0.488827941889570627],"hpluv":[255.449757662516049,224.211696450950683,43.9356615222631106],"hsluv":[255.449757662516049,82.7420790911240402,43.9356615222631106]},"#3366cc":{"lch":[45.0331492258045287,90.2591849706621332,257.681278432902445],"luv":[45.0331492258045287,-19.2567634880452658,-88.1810497302775786],"rgb":[0.2,0.4,0.8],"xyz":[0.170142966308735932,0.145654320299050705,0.590434452559840839],"hpluv":[257.681278432902445,254.330482568364204,45.0331492258045287],"hsluv":[257.681278432902445,84.5818015821218694,45.0331492258045287]},"#3366dd":{"lch":[46.2124513047425367,102.485732700579547,259.264483160570819],"luv":[46.2124513047425367,-19.0906003056708045,-100.691977769551045],"rgb":[0.2,0.4,0.866666666666666696],"xyz":[0.191661291859369476,0.154261650519304239,0.703764300459846837],"hpluv":[259.264483160570819,281.412724566330553,46.2124513047425367],"hsluv":[259.264483160570819,86.2202337385041488,46.2124513047425367]},"#3366ee":{"lch":[47.467400384741687,114.289765210034219,260.43068521754094],"luv":[47.467400384741687,-18.99960653492559,-112.699447129445844],"rgb":[0.2,0.4,0.933333333333333348],"xyz":[0.215473472125544213,0.163786522625774256,0.82917511652837006],"hpluv":[260.43068521754094,305.528142270574733,47.467400384741687],"hsluv":[260.43068521754094,89.4216395109538524,47.467400384741687]},"#3366ff":{"lch":[48.7917470574018068,125.686826272807437,261.315666926990161],"luv":[48.7917470574018068,-18.9775194272026404,-124.245853270525785],"rgb":[0.2,0.4,1],"xyz":[0.241644520535375606,0.17425494198970698,0.967009304820151905],"hpluv":[261.315666926990161,326.875761207371056,48.7917470574018068],"hsluv":[261.315666926990161,99.9999999999992184,48.7917470574018068]},"#aaee00":{"lch":[86.8465682321076713,106.130019137569278,108.773889799394041],"luv":[86.8465682321076713,-34.1562767274136,100.483479847491182],"rgb":[0.66666666666666663,0.933333333333333348,0],"xyz":[0.471503904866347523,0.696940089394355811,0.109681215241027807],"hpluv":[108.773889799394041,354.560190530248747,86.8465682321076713],"hsluv":[108.773889799394041,100.000000000002302,86.8465682321076713]},"#aaee11":{"lch":[86.8664697406872364,105.275413073012288,108.926122010215039],"luv":[86.8664697406872364,-34.1459453835818323,99.5839696515197801],"rgb":[0.66666666666666663,0.933333333333333348,0.0666666666666666657],"xyz":[0.472515570365984627,0.697344755594210719,0.115009320205783444],"hpluv":[108.926122010215039,352.296735211520456,86.8664697406872364],"hsluv":[108.926122010215039,99.0448212343627,86.8664697406872364]},"#aaee22":{"lch":[86.9033414770782286,103.701584155213482,109.21343759479339],"luv":[86.9033414770782286,-34.1269596340241961,97.9253245204656224],"rgb":[0.66666666666666663,0.933333333333333348,0.133333333333333331],"xyz":[0.474390928504461684,0.69809489884960152,0.124886206401762637],"hpluv":[109.21343759479339,348.114419217609168,86.9033414770782286],"hsluv":[109.21343759479339,97.2844700630890742,86.9033414770782286]},"#aaee33":{"lch":[86.9639927659971,101.139559122436452,109.701502859778287],"luv":[86.9639927659971,-34.0961634116812462,95.2190215245081504],"rgb":[0.66666666666666663,0.933333333333333348,0.2],"xyz":[0.47747867923691939,0.699329999142584646,0.141148360259373773],"hpluv":[109.701502859778287,341.266668172598315,86.9639927659971],"hsluv":[109.701502859778287,94.4148698146506,86.9639927659971]},"#aaee44":{"lch":[87.0514332975086091,97.5044422856038864,110.440992284795044],"luv":[87.0514332975086091,-34.052698770047833,91.3648180204122298],"rgb":[0.66666666666666663,0.933333333333333348,0.266666666666666663],"xyz":[0.481936674481138305,0.701113197240272212,0.164627135212260411],"hpluv":[110.440992284795044,331.464832239423686,87.0514332975086091],"hsluv":[110.440992284795044,90.3338544995677353,87.0514332975086091]},"#aaee55":{"lch":[87.1681505263978,92.7597711807761556,111.499860176168639],"luv":[87.1681505263978,-33.9963593100021271,86.3054036730909644],"rgb":[0.66666666666666663,0.933333333333333348,0.333333333333333315],"xyz":[0.48789908852050029,0.703498162856017,0.196029182486234327],"hpluv":[111.499860176168639,318.513853400728863,87.1681505263978],"hsluv":[111.499860176168639,84.9871568734489813,87.1681505263978]},"#aaee66":{"lch":[87.3162499846890086,86.9168013961255923,112.975973936880195],"luv":[87.3162499846890086,-33.9275471197994563,80.0215715377255492],"rgb":[0.66666666666666663,0.933333333333333348,0.4],"xyz":[0.495484084294008476,0.70653216116542028,0.235976826893378289],"hpluv":[112.975973936880195,302.308385752370668,87.3162499846890086],"hsluv":[112.975973936880195,78.3634586897027106,87.3162499846890086]},"#aaee77":{"lch":[87.4975302296396,80.0378594698754853,115.017197938190947],"luv":[87.4975302296396,-33.8472328521792534,72.5287789554594298],"rgb":[0.66666666666666663,0.933333333333333348,0.466666666666666674],"xyz":[0.504798097314210326,0.710257766373501132,0.285030628799776198],"hpluv":[115.017197938190947,282.845349503141222,87.4975302296396],"hsluv":[115.017197938190947,70.4907283307095,87.4975302296396]},"#aaee88":{"lch":[87.7135274362348838,72.2451165326571072,117.856267937731204],"luv":[87.7135274362348838,-33.7569011423620324,63.8735351149597861],"rgb":[0.66666666666666663,0.933333333333333348,0.533333333333333326],"xyz":[0.515938514416154237,0.714713933214278674,0.343703492203348393],"hpluv":[117.856267937731204,260.261444274219798,87.7135274362348838],"hsluv":[117.856267937731204,61.4321883079204412,87.7135274362348838]},"#aaee99":{"lch":[87.9655440812905312,63.7405265694191954,121.874104620002555],"luv":[87.9655440812905312,-33.6584769753751445,54.1291202131068871],"rgb":[0.66666666666666663,0.933333333333333348,0.6],"xyz":[0.528995478525226881,0.719936718857907887,0.412470169844466272],"hpluv":[121.874104620002555,234.922523447188695,87.9655440812905312],"hsluv":[121.874104620002555,51.2814060811362182,87.9655440812905312]},"#aaeeaa":{"lch":[88.2546687059401,54.8509913255605497,127.715012949237604],"luv":[88.2546687059401,-33.5542349686064441,43.3906045713616138],"rgb":[0.66666666666666663,0.933333333333333348,0.66666666666666663],"xyz":[0.544053171490479492,0.725959796044009,0.491774019461464873],"hpluv":[127.715012949237604,207.631017102058365,88.2546687059401],"hsluv":[127.715012949237604,42.8122115000723795,88.2546687059401]},"#aaeebb":{"lch":[88.5817905154621457,46.1299748711590425,136.47329364537066],"luv":[88.5817905154621457,-33.4466969972147226,31.7693726974624511],"rgb":[0.66666666666666663,0.933333333333333348,0.733333333333333282],"xyz":[0.561190763597816056,0.732814832886943712,0.582032004560106619],"hpluv":[136.47329364537066,180.106084736741337,88.5817905154621457],"hsluv":[136.47329364537066,42.5306558804052,88.5817905154621457]},"#aaeecc":{"lch":[88.947610994722524,38.5659339652702471,149.820563383504265],"luv":[88.947610994722524,-33.3385252257337896,19.3874701388989088],"rgb":[0.66666666666666663,0.933333333333333348,0.8],"xyz":[0.58048313904153781,0.740531783064432569,0.683638515230376775],"hpluv":[149.820563383504265,156.025185046421541,88.947610994722524],"hsluv":[149.820563383504265,43.7743007306855176,88.947610994722524]},"#aaeedd":{"lch":[89.3526538659385636,33.8378115459028308,169.14561851222],"luv":[89.3526538659385636,-33.2324178366612202,6.37211856022751721],"rgb":[0.66666666666666663,0.933333333333333348,0.866666666666666696],"xyz":[0.602001464592171409,0.749139113284686076,0.796968363130382773],"hpluv":[169.14561851222,142.575756051086472,89.3526538659385636],"hsluv":[169.14561851222,45.7128350403065866,89.3526538659385636]},"#aaeeee":{"lch":[89.797274219494,33.893604395025335,192.177050630060734],"luv":[89.797274219494,-33.1310138990311174,-7.14928925898844092],"rgb":[0.66666666666666663,0.933333333333333348,0.933333333333333348],"xyz":[0.625813644858346119,0.758663985391156093,0.922379179198906],"hpluv":[192.177050630060734,149.574468983420843,89.797274219494],"hsluv":[192.177050630060734,47.7079369778472326,89.797274219494]},"#aaeeff":{"lch":[90.2816673401601406,39.1749897548907384,212.508271358442045],"luv":[90.2816673401601406,-33.0368122621910558,-21.0534761464356919],"rgb":[0.66666666666666663,0.933333333333333348,1],"xyz":[0.65198469326817754,0.769132404755088817,1.06021336749068773],"hpluv":[212.508271358442045,182.211685385120148,90.2816673401601406],"hsluv":[212.508271358442045,99.9999999999910898,90.2816673401601406]},"#88ff00":{"lch":[90.2073775103659727,121.530167505498795,118.25137340908573],"luv":[90.2073775103659727,-57.5251845782800331,107.053420090856534],"rgb":[0.533333333333333326,1,0],"xyz":[0.459115501285251582,0.767520684123151,0.12395405300874715],"hpluv":[118.25137340908573,560.639311859311,90.2073775103659727],"hsluv":[118.25137340908573,100.00000000000226,90.2073775103659727]},"#88ff11":{"lch":[90.2260397586701828,120.75410845816802,118.424372307304225],"luv":[90.2260397586701828,-57.4787561773275684,106.196738640291272],"rgb":[0.533333333333333326,1,0.0666666666666666657],"xyz":[0.460127166784888686,0.767925350323005906,0.129282157973502787],"hpluv":[118.424372307304225,558.207032378019221,90.2260397586701828],"hsluv":[118.424372307304225,99.9999999999909335,90.2260397586701828]},"#88ff22":{"lch":[90.260617257984066,119.32542599803422,118.749452026898098],"luv":[90.260617257984066,-57.393189210317729,104.616342518179295],"rgb":[0.533333333333333326,1,0.133333333333333331],"xyz":[0.462002524923365743,0.768675493578396707,0.139159044169481966],"hpluv":[118.749452026898098,553.71568515647823,90.260617257984066],"hsluv":[118.749452026898098,99.9999999999907772,90.260617257984066]},"#88ff33":{"lch":[90.3174996442954665,117.001153508636776,119.297411154505227],"luv":[90.3174996442954665,-57.253701051451273,102.035697862378711],"rgb":[0.533333333333333326,1,0.2],"xyz":[0.465090275655823449,0.769910593871379834,0.155421198027093116],"hpluv":[119.297411154505227,546.370637823869743,90.3174996442954665],"hsluv":[119.297411154505227,99.9999999999907914,90.3174996442954665]},"#88ff44":{"lch":[90.399517385893148,113.706822542904789,120.117552028257023],"luv":[90.399517385893148,-57.0553255590242614,98.3561452994036074],"rgb":[0.533333333333333326,1,0.266666666666666663],"xyz":[0.469548270900042364,0.7716937919690674,0.178899972979979754],"hpluv":[120.117552028257023,535.877566613280692,90.399517385893148],"hsluv":[120.117552028257023,99.9999999999907914,90.399517385893148]},"#88ff55":{"lch":[90.5090160073098389,109.413894688598035,121.271093020798972],"luv":[90.5090160073098389,-56.7954345723420317,93.518334901057969],"rgb":[0.533333333333333326,1,0.333333333333333315],"xyz":[0.475510684939404349,0.774078757584812149,0.21030202025395367],"hpluv":[121.271093020798972,522.05545338002139,90.5090160073098389],"hsluv":[121.271093020798972,99.9999999999906493,90.5090160073098389]},"#88ff66":{"lch":[90.6479884721694,104.139810410505333,122.839359042112989],"luv":[90.6479884721694,-56.4735097148607039,87.4976731851854908],"rgb":[0.533333333333333326,1,0.4],"xyz":[0.483095680712912534,0.777112755894215468,0.250249664661097659],"hpluv":[122.839359042112989,504.839052288882328,90.6479884721694],"hsluv":[122.839359042112989,99.9999999999905498,90.6479884721694]},"#88ff77":{"lch":[90.8181461195308515,97.9515013566305441,124.934550835890477],"luv":[90.8181461195308515,-56.0909812525741813,80.3012978733306],"rgb":[0.533333333333333326,1,0.466666666666666674],"xyz":[0.49240969373311444,0.780838361102296319,0.299303466567495513],"hpluv":[124.934550835890477,484.301391198376791,90.8181461195308515],"hsluv":[124.934550835890477,99.9999999999904,90.8181461195308515]},"#88ff88":{"lch":[91.0209609702079803,90.9725812653771,127.715012949239437],"luv":[91.0209609702079803,-55.6510519447396348,71.9650676337452779],"rgb":[0.533333333333333326,1,0.533333333333333326],"xyz":[0.503550110835058295,0.785294527943073861,0.357976329971067708],"hpluv":[127.715012949239437,460.703998076760797,91.0209609702079803],"hsluv":[127.715012949239437,99.9999999999902087,91.0209609702079803]},"#88ff99":{"lch":[91.2576929391802167,83.3964386150156116,131.406800448379954],"luv":[91.2576929391802167,-55.158478848678719,62.5500454417735057],"rgb":[0.533333333333333326,1,0.6],"xyz":[0.51660707494413094,0.790517313586703074,0.426743007612185643],"hpluv":[131.406800448379954,434.595507650037121,91.2576929391802167],"hsluv":[131.406800448379954,99.9999999999900524,91.2576929391802167]},"#88ffaa":{"lch":[91.5294084976530229,75.5094657025462226,136.33125230150921],"luv":[91.5294084976530229,-54.6193101996060264,52.1383770748881048],"rgb":[0.533333333333333326,1,0.66666666666666663],"xyz":[0.531664767909383551,0.796540390772804141,0.506046857229184188],"hpluv":[136.33125230150921,406.99849880976177,91.5294084976530229],"hsluv":[136.33125230150921,99.9999999999897824,91.5294084976530229]},"#88ffbb":{"lch":[91.8369943060547911,67.7301008509963225,142.928263991524119],"luv":[91.8369943060547911,-54.0405872892441,40.8286846067776423],"rgb":[0.533333333333333326,1,0.733333333333333282],"xyz":[0.548802360016720114,0.8033954276157389,0.596304842327826],"hpluv":[142.928263991524119,379.751065707187763,91.8369943060547911],"hsluv":[142.928263991524119,99.9999999999894413,91.8369943060547911]},"#88ffcc":{"lch":[92.1811678623774498,60.665065650155249,151.731515164157571],"luv":[92.1811678623774498,-53.4300279465168941,28.7312078404662543],"rgb":[0.533333333333333326,1,0.8],"xyz":[0.568094735460441869,0.811112377793227757,0.697911352998096146],"hpluv":[151.731515164157571,356.080713038752435,92.1811678623774498],"hsluv":[151.731515164157571,99.9999999999893134,92.1811678623774498]},"#88ffdd":{"lch":[92.5624864174544371,55.1561732277505712,163.177123134509742],"luv":[92.5624864174544371,-52.7957106082625316,15.9629692256241533],"rgb":[0.533333333333333326,1,0.866666666666666696],"xyz":[0.589613061011075468,0.819719708013481263,0.811241200898102144],"hpluv":[163.177123134509742,341.369587308077,92.5624864174544371],"hsluv":[163.177123134509742,99.9999999999887,92.5624864174544371]},"#88ffee":{"lch":[92.9813549493531752,52.2127257219241301,177.098205352907513],"luv":[92.9813549493531752,-52.1457771028834927,2.64322864112605771],"rgb":[0.533333333333333326,1,0.933333333333333348],"xyz":[0.613425241277250177,0.82924458011995128,0.936652016966625367],"hpluv":[177.098205352907513,343.566349205584061,92.9813549493531752],"hsluv":[177.098205352907513,99.9999999999882,92.9813549493531752]},"#88ffff":{"lch":[93.4380337051328524,52.6732939730945162,192.177050630061075],"luv":[93.4380337051328524,-51.4881691068088543,-11.1105508416409933],"rgb":[0.533333333333333326,1,1],"xyz":[0.639596289687081598,0.839712999483884,1.07448620525840721],"hpluv":[192.177050630061075,372.044084252862206,93.4380337051328524],"hsluv":[192.177050630061075,99.9999999999874802,93.4380337051328524]},"#337700":{"lch":[44.0848685544221084,61.4877933810524127,120.932619831412623],"luv":[44.0848685544221084,-31.6065510805688668,52.7425318283298168],"rgb":[0.2,0.466666666666666674,0],"xyz":[0.0796174701869632462,0.138970102735809731,0.0226283985882975332],"hpluv":[120.932619831412623,176.985906279588789,44.0848685544221084],"hsluv":[120.932619831412623,100.000000000002217,44.0848685544221084]},"#337711":{"lch":[44.1431322932100159,59.4532082216814146,121.943929432148849],"luv":[44.1431322932100159,-31.4560442613915434,50.449987584497805],"rgb":[0.2,0.466666666666666674,0.0666666666666666657],"xyz":[0.0806291356866003645,0.139374768935664584,0.0279565035530531664],"hpluv":[121.943929432148849,170.903703930819205,44.1431322932100159],"hsluv":[121.943929432148849,95.223210781581642,44.1431322932100159]},"#337722":{"lch":[44.2508401312458517,55.8308883755444327,123.957293362486936],"luv":[44.2508401312458517,-31.1857277137109214,46.3091619851707605],"rgb":[0.2,0.466666666666666674,0.133333333333333331],"xyz":[0.0825044938250774,0.140124912191055412,0.037833389749032359],"hpluv":[123.957293362486936,160.100373243526178,44.2508401312458517],"hsluv":[123.957293362486936,86.6219708852072,44.2508401312458517]},"#337733":{"lch":[44.4273451577554681,50.2894934834324943,127.715012949239792],"luv":[44.4273451577554681,-30.7638100974309978,39.782171171385329],"rgb":[0.2,0.466666666666666674,0.2],"xyz":[0.0855922445575351271,0.141360012484038511,0.0540955436066435091],"hpluv":[127.715012949239792,143.636966976451419,44.4273451577554681],"hsluv":[127.715012949239792,73.1368174441878409,44.4273451577554681]},"#337744":{"lch":[44.6803728315295743,43.2379901525315873,134.305487238163835],"luv":[44.6803728315295743,-30.2010367205865329,30.9422231494797764],"rgb":[0.2,0.466666666666666674,0.266666666666666663],"xyz":[0.090050239801754,0.143143210581726105,0.0775743185595301477],"hpluv":[134.305487238163835,122.797079037201513,44.6803728315295743],"hsluv":[134.305487238163835,74.2422920898123664,44.6803728315295743]},"#337755":{"lch":[45.0155248592042057,35.7001949681147,145.791078733963843],"luv":[45.0155248592042057,-29.5238129364495734,20.071083439987369],"rgb":[0.2,0.466666666666666674,0.333333333333333315],"xyz":[0.096012653841116,0.145528176197470938,0.108976365833504049],"hpluv":[145.791078733963843,100.634662922797503,45.0155248592042057],"hsluv":[145.791078733963843,75.5860232244433377,45.0155248592042057]},"#337766":{"lch":[45.436632811343884,29.7520619336037022,165.22669317203713],"luv":[45.436632811343884,-28.7685269489331041,7.58663604567268468],"rgb":[0.2,0.466666666666666674,0.4],"xyz":[0.103597649614624171,0.148562174506874228,0.148924010240648025],"hpluv":[165.22669317203713,83.0902864995861847,45.436632811343884],"hsluv":[165.22669317203713,77.1054195363406194,45.436632811343884]},"#337777":{"lch":[45.9459628200325696,28.6191137838588361,192.177050630061018],"luv":[45.9459628200325696,-27.9751968985082726,-6.03672363647301413],"rgb":[0.2,0.466666666666666674,0.466666666666666674],"xyz":[0.11291166263482609,0.152287779714955052,0.197977812147045934],"hpluv":[192.177050630061018,79.0402219352416324,45.9459628200325696],"hsluv":[192.177050630061018,78.7308353184449743,45.9459628200325696]},"#337788":{"lch":[46.5443737533918309,33.948531272854666,216.805091226728479],"luv":[46.5443737533918309,-27.1818468531358306,-20.3383867904182836],"rgb":[0.2,0.466666666666666674,0.533333333333333326],"xyz":[0.124052079736769919,0.156743946555732649,0.256650675550618101],"hpluv":[216.805091226728479,92.5535593562344587,46.5443737533918309],"hsluv":[216.805091226728479,80.3955897349876381,46.5443737533918309]},"#337799":{"lch":[47.2314677007312085,43.7891028043947799,232.889035089769209],"luv":[47.2314677007312085,-26.4206199262946413,-34.9204290798973105],"rgb":[0.2,0.466666666666666674,0.6],"xyz":[0.137109043845842632,0.161966732199361807,0.325417353191736],"hpluv":[232.889035089769209,117.645124104106614,47.2314677007312085],"hsluv":[232.889035089769209,82.0429045074046144,47.2314677007312085]},"#3377aa":{"lch":[48.0057466772197472,55.756363166772573,242.534195481556935],"luv":[48.0057466772197472,-25.7159019754829359,-49.471854818395343],"rgb":[0.2,0.466666666666666674,0.66666666666666663],"xyz":[0.15216673681109516,0.167989809385462902,0.404721202808734581],"hpluv":[242.534195481556935,147.380673097935755,48.0057466772197472],"hsluv":[242.534195481556935,83.6292827510673078,48.0057466772197472]},"#3377bb":{"lch":[48.8647777502949623,68.5281348418467076,248.528316013511841],"luv":[48.8647777502949623,-25.0841318464231762,-63.7721851155626],"rgb":[0.2,0.466666666666666674,0.733333333333333282],"xyz":[0.169304328918431835,0.17484484622839766,0.494979187907376328],"hpluv":[248.528316013511841,177.955866809146045,48.8647777502949623],"hsluv":[248.528316013511841,85.1249045257873,48.8647777502949623]},"#3377cc":{"lch":[49.8053630390326845,81.4640551302433096,252.471981644912631],"luv":[49.8053630390326845,-24.5347040681135518,-77.6816617648812553],"rgb":[0.2,0.466666666666666674,0.8],"xyz":[0.188596704362153561,0.182561796405886462,0.596585698577646539],"hpluv":[252.471981644912631,207.553107999557341,49.8053630390326845],"hsluv":[252.471981644912631,86.5120902950020678,49.8053630390326845]},"#3377dd":{"lch":[50.8237086019957047,94.2508792352234,255.202895611269554],"luv":[50.8237086019957047,-24.0713820337122506,-91.1251710758325],"rgb":[0.2,0.466666666666666674,0.866666666666666696],"xyz":[0.210115029912787105,0.19116912662614,0.709915546477652537],"hpluv":[255.202895611269554,235.319753343529385,50.8237086019957047],"hsluv":[255.202895611269554,87.7828608732328,50.8237086019957047]},"#3377ee":{"lch":[51.9155858415672498,106.73807185779232,257.174602046687482],"luv":[51.9155858415672498,-23.6937959642247655,-104.075069141100855],"rgb":[0.2,0.466666666666666674,0.933333333333333348],"xyz":[0.233927210178961842,0.200693998732610041,0.83532636254617576],"hpluv":[257.174602046687482,260.892095272406607,51.9155858415672498],"hsluv":[257.174602046687482,88.9363454602875692,51.9155858415672498]},"#3377ff":{"lch":[53.0764799083082721,118.861737619173724,258.646767383963777],"luv":[53.0764799083082721,-23.3987809317452253,-116.535873106771263],"rgb":[0.2,0.466666666666666674,1],"xyz":[0.260098258588793207,0.211162418096542737,0.973160550837957605],"hpluv":[258.646767383963777,284.170694785425781,53.0764799083082721],"hsluv":[258.646767383963777,99.9999999999990763,53.0764799083082721]},"#aaff00":{"lch":[91.7137860391432156,115.080534629040301,111.722667154579099],"luv":[91.7137860391432156,-42.5929524944460596,106.908230966149674],"rgb":[0.66666666666666663,1,0],"xyz":[0.523356277296021299,0.800644834253704918,0.126965339384251918],"hpluv":[111.722667154579099,635.020942157405898,91.7137860391432156],"hsluv":[111.722667154579099,100.000000000002359,91.7137860391432156]},"#aaff11":{"lch":[91.7319300755291209,114.302910123776968,111.867287470019974],"luv":[91.7319300755291209,-42.5730312099484394,106.078707931238455],"rgb":[0.66666666666666663,1,0.0666666666666666657],"xyz":[0.524367942795658459,0.801049500453559826,0.132293444349007555],"hpluv":[111.867287470019974,632.205251281199821,91.7319300755291209],"hsluv":[111.867287470019974,99.9999999999902087,91.7319300755291209]},"#aaff22":{"lch":[91.76554812600844,112.870020698142184,112.139393409643191],"luv":[91.76554812600844,-42.5363318976714595,104.548084827461963],"rgb":[0.66666666666666663,1,0.133333333333333331],"xyz":[0.526243300934135405,0.801799643708950627,0.142170330544986734],"hpluv":[112.139393409643191,626.996151229530483,91.76554812600844],"hsluv":[112.139393409643191,99.9999999999901,91.76554812600844]},"#aaff33":{"lch":[91.8208541183991116,110.535111156119868,112.599114759903571],"luv":[91.8208541183991116,-42.4765495373732875,102.047800258971023],"rgb":[0.66666666666666663,1,0.2],"xyz":[0.529331051666593222,0.803034744001933753,0.158432484402597884],"hpluv":[112.599114759903571,618.449193227995465,91.8208541183991116],"hsluv":[112.599114759903571,99.9999999999900808,91.8208541183991116]},"#aaff44":{"lch":[91.9006031807778498,107.217215837920833,113.289723447654],"luv":[91.9006031807778498,-42.3916247074254713,98.4808688360338],"rgb":[0.66666666666666663,1,0.266666666666666663],"xyz":[0.533789046910812082,0.80481794209962132,0.181911259355484523],"hpluv":[113.289723447654,606.175591066234915,91.9006031807778498],"hsluv":[113.289723447654,99.9999999999900808,91.9006031807778498]},"#aaff55":{"lch":[92.0070808640835338,102.877427982590888,114.266397603879824],"luv":[92.0070808640835338,-42.2805422001356135,93.7876374559873796],"rgb":[0.66666666666666663,1,0.333333333333333315],"xyz":[0.539751460950174,0.807202907715366069,0.213313306629458438],"hpluv":[114.266397603879824,589.885725054723707,92.0070808640835338],"hsluv":[114.266397603879824,99.9999999999897,92.0070808640835338]},"#aaff66":{"lch":[92.142232175119787,97.5178938455906,115.604656391492952],"luv":[92.142232175119787,-42.1432392632638226,87.9413839126902559],"rgb":[0.66666666666666663,1,0.4],"xyz":[0.547336456723682252,0.810236906024769388,0.2532609510366024],"hpluv":[115.604656391492952,569.381090837871511,92.142232175119787],"hsluv":[115.604656391492952,99.9999999999898,92.142232175119787]},"#aaff77":{"lch":[92.3077308115560555,91.1840841453542197,117.412488820025033],"luv":[92.3077308115560555,-41.9805406670279666,80.9454841651530899],"rgb":[0.66666666666666663,1,0.466666666666666674],"xyz":[0.556650469743884102,0.813962511232850239,0.302314752943000309],"hpluv":[117.412488820025033,544.56608764574878,92.3077308115560555],"hsluv":[117.412488820025033,99.9999999999895692,92.3077308115560555]},"#aaff88":{"lch":[92.5050204995058749,83.9705472319660657,119.849478645386625],"luv":[92.5050204995058749,-41.7940850853900727,72.8306752289927601],"rgb":[0.66666666666666663,1,0.533333333333333326],"xyz":[0.567790886845828,0.818418678073627781,0.360987616346572504],"hpluv":[119.849478645386625,515.487838204951345,92.5050204995058749],"hsluv":[119.849478645386625,99.9999999999892708,92.5050204995058749]},"#aaff99":{"lch":[92.7353415895377,76.0327408171719,123.158131820453576],"luv":[92.7353415895377,-41.5862309318022625,63.6518897838709137],"rgb":[0.66666666666666663,1,0.6],"xyz":[0.580847850954900657,0.823641463717257,0.429754293987690383],"hpluv":[123.158131820453576,482.430180447041607,92.7353415895377],"hsluv":[123.158131820453576,99.9999999999891145,92.7353415895377]},"#aaffaa":{"lch":[92.9997492696274435,67.6109506527765802,127.715012949238414],"luv":[92.9997492696274435,-41.3599402641421108,53.4845397242865488],"rgb":[0.66666666666666663,1,0.66666666666666663],"xyz":[0.595905543920153269,0.829664540903358061,0.509058143604689],"hpluv":[127.715012949238414,446.121940639593902,92.9997492696274435],"hsluv":[127.715012949238414,99.9999999999887308,92.9997492696274435]},"#aaffbb":{"lch":[93.2991268167713201,59.0781485982363,134.10730048328],"luv":[93.2991268167713201,-41.1186450338129887,42.4203332421914823],"rgb":[0.66666666666666663,1,0.733333333333333282],"xyz":[0.613043136027489832,0.836519577746292819,0.599316128703330731],"hpluv":[134.10730048328,408.190288953842469,93.2991268167713201],"hsluv":[134.10730048328,99.9999999999883613,93.2991268167713201]},"#aaffcc":{"lch":[93.6341958749929404,51.0306218960527929,143.208028901391231],"luv":[93.6341958749929404,-40.8661030238149436,30.5628204644932246],"rgb":[0.66666666666666663,1,0.8],"xyz":[0.632335511471211587,0.844236527923781677,0.700922639373600886],"hpluv":[143.208028901391231,372.11656739719416,93.6341958749929404],"hsluv":[143.208028901391231,99.9999999999879492,93.6341958749929404]},"#aaffdd":{"lch":[94.005524978734,44.4262644213682094,156.066165366624773],"luv":[94.005524978734,-40.6062520520773305,18.0229094410556279],"rgb":[0.66666666666666663,1,0.866666666666666696],"xyz":[0.653853837021845186,0.852843858144035183,0.814252487273606884],"hpluv":[156.066165366624773,345.018188987702331,94.005524978734],"hsluv":[156.066165366624773,99.999999999986926,94.005524978734]},"#aaffee":{"lch":[94.4135370960349576,40.641316399200953,173.054449077896464],"luv":[94.4135370960349576,-40.3430708217409446,4.91459411670529711],"rgb":[0.66666666666666663,1,0.933333333333333348],"xyz":[0.677666017288019895,0.8623687302505052,0.939663303342130107],"hpluv":[173.054449077896464,339.745490646316398,94.4135370960349576],"hsluv":[173.054449077896464,99.9999999999862865,94.4135370960349576]},"#aaffff":{"lch":[94.8585166918378633,41.0030022313427764,192.177050630060705],"luv":[94.8585166918378633,-40.0804535568370639,-8.64889788711415264],"rgb":[0.66666666666666663,1,1],"xyz":[0.703837065697851316,0.872837149614437924,1.07749749163391195],"hpluv":[192.177050630060705,373.711432895013843,94.8585166918378633],"hsluv":[192.177050630060705,99.9999999999852491,94.8585166918378633]},"#338800":{"lch":[49.8717454753508918,71.2965557675853461,122.69380865426514],"luv":[49.8717454753508918,-38.5107906934601871,60.0009821960016509],"rgb":[0.2,0.533333333333333326,0],"xyz":[0.101689839911933699,0.183114842185751275,0.0299858551632874795],"hpluv":[122.69380865426514,181.406693814272955,49.8717454753508918],"hsluv":[122.69380865426514,100.000000000002245,49.8717454753508918]},"#338811":{"lch":[49.9202331837381053,69.5570511040883162,123.47043015419375],"luv":[49.9202331837381053,-38.361169332567485,58.0224443274741475],"rgb":[0.2,0.533333333333333326,0.0666666666666666657],"xyz":[0.102701505411570818,0.183519508385606128,0.0353139601280431092],"hpluv":[123.47043015419375,176.808802540010674,49.9202331837381053],"hsluv":[123.47043015419375,96.3624965314944291,49.9202331837381053]},"#338822":{"lch":[50.0099282713402,66.4316762124597915,124.985970570646856],"luv":[50.0099282713402,-38.0903182709230137,54.426971791721833],"rgb":[0.2,0.533333333333333326,0.133333333333333331],"xyz":[0.104576863550047847,0.184269651640996956,0.0451908463240223088],"hpluv":[124.985970570646856,168.561468288507513,50.0099282713402],"hsluv":[124.985970570646856,89.7672781446156876,50.0099282713402]},"#338833":{"lch":[50.1570811029395429,61.5658815699287487,127.715012949239991],"luv":[50.1570811029395429,-37.6619639194057143,48.7025076070614134],"rgb":[0.2,0.533333333333333326,0.2],"xyz":[0.10766461428250558,0.185504751933980055,0.061453000181633452],"hpluv":[127.715012949239991,155.756856758587162,50.1570811029395429],"hsluv":[127.715012949239991,79.3080015418374416,50.1570811029395429]},"#338844":{"lch":[50.3683877843642165,55.1600753981733334,132.238380805917416],"luv":[50.3683877843642165,-37.0795228857786441,40.8380080377971524],"rgb":[0.2,0.533333333333333326,0.266666666666666663],"xyz":[0.112122609526724454,0.187287950031667649,0.0849317751345200905],"hpluv":[132.238380805917416,138.965222681713072,50.3683877843642165],"hsluv":[132.238380805917416,79.9701630926319922,50.3683877843642165]},"#338855":{"lch":[50.648916869713247,47.7759983149871488,139.558488969535745],"luv":[50.648916869713247,-36.3608093871966886,30.990926990033774],"rgb":[0.2,0.533333333333333326,0.333333333333333315],"xyz":[0.118085023566086453,0.189672915647412482,0.116333822408493992],"hpluv":[139.558488969535745,119.695806374350084,50.648916869713247],"hsluv":[139.558488969535745,80.7922551095087726,50.648916869713247]},"#338866":{"lch":[51.0024095938582747,40.50700493167151,151.3112863122482],"luv":[51.0024095938582747,-35.5343950908498,19.4454162738124445],"rgb":[0.2,0.533333333333333326,0.4],"xyz":[0.125670019339594624,0.192706913956815773,0.156281466815637954],"hpluv":[151.3112863122482,100.78102351571394,51.0024095938582747],"hsluv":[151.3112863122482,81.7453783644028249,51.0024095938582747]},"#338877":{"lch":[51.4314426692160964,35.2513066472794421,169.271441625736571],"luv":[51.4314426692160964,-34.635118433957949,6.56225505495134165],"rgb":[0.2,0.533333333333333326,0.466666666666666674],"xyz":[0.134984032359796557,0.196432519164896596,0.205335268722035863],"hpluv":[169.271441625736571,86.9732781104886499,51.4314426692160964],"hsluv":[169.271441625736571,82.7938072280844182,51.4314426692160964]},"#338888":{"lch":[51.9375397067754818,34.4751674240590873,192.177050630061075],"luv":[51.9375397067754818,-33.6994920276336458,-7.27196025816705482],"rgb":[0.2,0.533333333333333326,0.533333333333333326],"xyz":[0.146124449461740358,0.200888686005674194,0.26400813212560803],"hpluv":[192.177050630061075,84.229522237058,51.9375397067754818],"hsluv":[192.177050630061075,83.8998231764876579,51.9375397067754818]},"#338899":{"lch":[52.5212658253882267,39.2899369869163,213.503984387174484],"luv":[52.5212658253882267,-32.7618132949538179,-21.68784770470414],"rgb":[0.2,0.533333333333333326,0.6],"xyz":[0.159181413570813085,0.206111471649303352,0.332774809766725965],"hpluv":[213.503984387174484,94.9260641143146415,52.5212658253882267],"hsluv":[213.503984387174484,85.0278067813718081,52.5212658253882267]},"#3388aa":{"lch":[53.1823203703714142,48.3403865273999855,228.783963154055925],"luv":[53.1823203703714142,-31.8514822326876157,-36.3631138545534753],"rgb":[0.2,0.533333333333333326,0.66666666666666663],"xyz":[0.174239106536065613,0.212134548835404446,0.412078659383724566],"hpluv":[228.783963154055925,115.340588590435829,53.1823203703714142],"hsluv":[228.783963154055925,86.1470646970195588,53.1823203703714142]},"#3388bb":{"lch":[53.9196335036436238,59.7107302664646866,238.732819450220632],"luv":[53.9196335036436238,-30.9916356267104831,-51.0381213421469],"rgb":[0.2,0.533333333333333326,0.733333333333333282],"xyz":[0.191376698643402288,0.218989585678339205,0.502336644482366257],"hpluv":[238.732819450220632,140.522147305520861,53.9196335036436238],"hsluv":[238.732819450220632,87.2332789223686262,53.9196335036436238]},"#3388cc":{"lch":[54.7314676322995268,72.1439684856409826,245.254262274299492],"luv":[54.7314676322995268,-30.1989009668194051,-65.5192992121664446],"rgb":[0.2,0.533333333333333326,0.8],"xyz":[0.210669074087124014,0.226706535855828,0.603943155152636413],"hpluv":[245.254262274299492,167.263916186866481,54.7314676322995268],"hsluv":[245.254262274299492,88.2687848362996,54.7314676322995268]},"#3388dd":{"lch":[55.6155220749816692,84.9545141717074728,249.692682338977761],"luv":[55.6155220749816692,-29.4839257322198733,-79.6741338300441697],"rgb":[0.2,0.533333333333333326,0.866666666666666696],"xyz":[0.232187399637757558,0.23531386607608154,0.717273003052642411],"hpluv":[249.692682338977761,193.833915517882872,55.6155220749816692],"hsluv":[249.692682338977761,89.2420383366021923,55.6155220749816692]},"#3388ee":{"lch":[56.5690381344568323,97.7754852991564434,252.83721230554255],"luv":[56.5690381344568323,-28.8523290085395629,-93.4215640859675602],"rgb":[0.2,0.533333333333333326,0.933333333333333348],"xyz":[0.255999579903932295,0.244838738182551585,0.842683819121165634],"hpluv":[252.83721230554255,219.32619909500923,56.5690381344568323],"hsluv":[252.83721230554255,90.146641202583325,56.5690381344568323]},"#3388ff":{"lch":[57.5889013880528182,110.410831334845568,255.145344615238457],"luv":[57.5889013880528182,-28.3057941013035759,-106.720821287817699],"rgb":[0.2,0.533333333333333326,1],"xyz":[0.282170628313763716,0.255307157546484254,0.980518007412947479],"hpluv":[255.145344615238457,243.283252172694205,57.5889013880528182],"hsluv":[255.145344615238457,99.9999999999988489,57.5889013880528182]},"#339900":{"lch":[55.5688440832231,80.82821284508357,123.866754715109295],"luv":[55.5688440832231,-45.0426054376311527,67.1145564473163603],"rgb":[0.2,0.6,0],"xyz":[0.127559440364401172,0.23485404309068697,0.0386090553141097345],"hpluv":[123.866754715109295,184.574176757765827,55.5688440832231],"hsluv":[123.866754715109295,100.00000000000226,55.5688440832231]},"#339911":{"lch":[55.6099261578814463,79.3206910999707446,124.475743785225987],"luv":[55.6099261578814463,-44.9000555787807372,65.3892731692238556],"rgb":[0.2,0.6,0.0666666666666666657],"xyz":[0.128571105864038304,0.235258709290541823,0.0439371602788653642],"hpluv":[124.475743785225987,180.997883954149785,55.6099261578814463],"hsluv":[124.475743785225987,97.1571693172972601,55.6099261578814463]},"#339922":{"lch":[55.6859569378682124,76.5942224429011418,125.649114872203555],"luv":[55.6859569378682124,-44.6406262928881503,62.240576763164114],"rgb":[0.2,0.6,0.133333333333333331],"xyz":[0.130446464002515305,0.236008852545932651,0.0538140464748445638],"hpluv":[125.649114872203555,174.537861698610129,55.6859569378682124],"hsluv":[125.649114872203555,91.9778413864117113,55.6859569378682124]},"#339933":{"lch":[55.8107903110879278,72.2971425020977563,127.715012949240148],"luv":[55.8107903110879278,-44.2266447414942618,57.191613973364035],"rgb":[0.2,0.6,0.2],"xyz":[0.133534214734973067,0.23724395283891575,0.070076200332455707],"hpluv":[127.715012949240148,164.377468022308932,55.8107903110879278],"hsluv":[127.715012949240148,83.6974291768240874,55.8107903110879278]},"#339944":{"lch":[55.9902586993563602,66.5149718399310501,131.021169741293448],"luv":[55.9902586993563602,-43.6562926505411042,50.1833597009719128],"rgb":[0.2,0.6,0.266666666666666663],"xyz":[0.137992209979191927,0.239027150936603344,0.0935549752853423455],"hpluv":[131.021169741293448,150.746162046382238,55.9902586993563602],"hsluv":[131.021169741293448,84.1112663411127386,55.9902586993563602]},"#339955":{"lch":[56.2289015921924,59.572114639014508,136.121417864766215],"luv":[56.2289015921924,-42.9401916463123783,41.2913645202220323],"rgb":[0.2,0.6,0.333333333333333315],"xyz":[0.143954624018553912,0.241412116552348177,0.124957022559316261],"hpluv":[136.121417864766215,134.438216783596687,56.2289015921924],"hsluv":[136.121417864766215,84.6329955380286236,56.2289015921924]},"#339966":{"lch":[56.5302268191487514,52.1043875673731947,143.898662284026642],"luv":[56.5302268191487514,-42.0991012865816785,30.700698275986678],"rgb":[0.2,0.6,0.4],"xyz":[0.151539619792062097,0.244446114861751468,0.164904666966460223],"hpluv":[143.898662284026642,116.958797396111564,56.5302268191487514],"hsluv":[143.898662284026642,85.2491724948614689,56.5302268191487514]},"#339977":{"lch":[56.8968484427531678,45.1992705399313124,155.596009487994166],"luv":[56.8968484427531678,-41.1609366004351855,18.6748856895258584],"rgb":[0.2,0.6,0.466666666666666674],"xyz":[0.160853632812264,0.248171720069832291,0.213958468872858132],"hpluv":[155.596009487994166,100.805108459810327,56.8968484427531678],"hsluv":[155.596009487994166,85.9413862611579873,56.8968484427531678]},"#339988":{"lch":[57.330574208667926,40.5351988689668303,172.17134267960472],"luv":[57.330574208667926,-40.1574041849560217,5.52134371985359085],"rgb":[0.2,0.6,0.533333333333333326],"xyz":[0.171994049914207858,0.252627886910609889,0.272631332276430272],"hpluv":[172.17134267960472,89.7191897797317,57.330574208667926],"hsluv":[172.17134267960472,86.6885468018933665,57.330574208667926]},"#339999":{"lch":[57.8324724587931627,40.0212192418936539,192.177050630061103],"luv":[57.8324724587931627,-39.1207602326874735,-8.44180717763071],"rgb":[0.2,0.6,0.6],"xyz":[0.185051014023280558,0.257850672554239047,0.341398009917548206],"hpluv":[192.177050630061103,87.8128114771670312,57.8324724587931627],"hsluv":[192.177050630061103,87.4690863712762194,57.8324724587931627]},"#3399aa":{"lch":[58.4029323329449568,44.4430671798845367,211.035048784986628],"luv":[58.4029323329449568,-38.0811346860811923,-22.913170914918652],"rgb":[0.2,0.6,0.66666666666666663],"xyz":[0.200108706988533114,0.263873749740340169,0.420701859534546807],"hpluv":[211.035048784986628,96.5625435737210154,58.4029323329449568],"hsluv":[211.035048784986628,88.2627766327166,58.4029323329449568]},"#3399bb":{"lch":[59.0417237507550823,52.8166449153409445,225.431517702392057],"luv":[59.0417237507550823,-37.064675814253917,-37.6272213549907448],"rgb":[0.2,0.6,0.733333333333333282],"xyz":[0.217246299095869733,0.270728786583274927,0.510959844633188554],"hpluv":[225.431517702392057,113.514439229551684,59.0417237507550823],"hsluv":[225.431517702392057,89.0519907331041196,59.0417237507550823]},"#3399cc":{"lch":[59.7480598269018373,63.5982744854026194,235.423336237979868],"luv":[59.7480598269018373,-36.0925574956591646,-52.364757336811472],"rgb":[0.2,0.6,0.8],"xyz":[0.236538674539591487,0.278445736760763729,0.612566355303458709],"hpluv":[235.423336237979868,135.070607162709791,59.7480598269018373],"hsluv":[235.423336237979868,89.8223822716188636,59.7480598269018373]},"#3399dd":{"lch":[60.5206621982976856,75.6357863680042186,242.281144195606601],"luv":[60.5206621982976856,-35.1807304699237235,-66.9558689220665286],"rgb":[0.2,0.6,0.866666666666666696],"xyz":[0.25805700009022503,0.287053066981017235,0.725896203203464707],"hpluv":[242.281144195606601,158.58531958905732,60.5206621982976856],"hsluv":[242.281144195606601,90.5630616197976508,60.5206621982976856]},"#3399ee":{"lch":[61.3578284965586818,88.2341933332873083,247.095644636752098],"luv":[61.3578284965586818,-34.3402162860227946,-81.277441019049661],"rgb":[0.2,0.6,0.933333333333333348],"xyz":[0.28186918035639974,0.296577939087487252,0.85130701927198793],"hpluv":[247.095644636752098,182.476215369006297,61.3578284965586818],"hsluv":[247.095644636752098,91.2664056494933504,61.3578284965586818]},"#3399ff":{"lch":[62.2575005434706554,100.992674077385175,250.5808182685887],"luv":[62.2575005434706554,-33.5777301361133595,-95.2473425151972],"rgb":[0.2,0.6,1],"xyz":[0.308040228766231161,0.30704635845142,0.989141207563769775],"hpluv":[250.5808182685887,205.84367033720622,62.2575005434706554],"hsluv":[250.5808182685887,99.9999999999985789,62.2575005434706554]},"#220000":{"lch":[3.07250446727781679,10.3329293192956264,12.1770506300617765],"luv":[3.07250446727781679,10.1004431663672367,2.17955870775360072],"rgb":[0.133333333333333331,0,0],"xyz":[0.00659672420629513,0.00340143591887099878,0.000309221447170077699],"hpluv":[12.1770506300617765,426.746789183125429,3.07250446727781679],"hsluv":[12.1770506300617765,100.000000000002217,3.07250446727781679]},"#220011":{"lch":[3.43803794680403607,8.12070857757986353,344.488545895364155],"luv":[3.43803794680403607,7.82492808895188574,-2.17172931202554675],"rgb":[0.133333333333333331,0,0.0666666666666666657],"xyz":[0.00760838970593225201,0.00380610211872585338,0.00563732641192570948],"hpluv":[344.488545895364155,299.724735916282839,3.43803794680403607],"hsluv":[344.488545895364155,99.9999999999976836,3.43803794680403607]},"#220022":{"lch":[4.11563957101797229,9.37475958111893348,307.715012949243601],"luv":[4.11563957101797229,5.73486236359989565,-7.41602797151862436],"rgb":[0.133333333333333331,0,0.133333333333333331],"xyz":[0.00948374784440927,0.00455624537411667124,0.0155142126079049047],"hpluv":[307.715012949243601,289.042783730483393,4.11563957101797229],"hsluv":[307.715012949243601,99.9999999999988205,4.11563957101797229]},"#220033":{"lch":[5.23130109110515384,14.2535250315243012,286.735013267555587],"luv":[5.23130109110515384,4.10424250296207127,-13.6498413654214126],"rgb":[0.133333333333333331,0,0.2],"xyz":[0.0125714985768670112,0.00579134566709978496,0.0317763664655160497],"hpluv":[286.735013267555587,345.74180296647927,5.23130109110515384],"hsluv":[286.735013267555587,99.9999999999995737,5.23130109110515384]},"#220044":{"lch":[6.84205732813722722,21.3889830656619786,277.641816515271671],"luv":[6.84205732813722722,2.84430225454687724,-21.1990221771654959],"rgb":[0.133333333333333331,0,0.266666666666666663],"xyz":[0.01702949382108589,0.0075745437647873606,0.0552551414184026882],"hpluv":[277.641816515271671,396.682237683346386,6.84205732813722722],"hsluv":[277.641816515271671,100.000000000000085,6.84205732813722722]},"#220055":{"lch":[8.95766614306443,30.4428627575942237,273.263558660643355],"luv":[8.95766614306443,1.73308321478426808,-30.3934913336449455],"rgb":[0.133333333333333331,0,0.333333333333333315],"xyz":[0.0229919078604478855,0.00995950938053219263,0.0866571886923766],"hpluv":[273.263558660643355,431.250830347711485,8.95766614306443],"hsluv":[273.263558660643355,100.000000000000242,8.95766614306443]},"#220066":{"lch":[11.2709410858812937,40.3162667149428913,270.881506896841],"luv":[11.2709410858812937,0.620249265146302853,-40.3114952920317435],"rgb":[0.133333333333333331,0,0.4],"xyz":[0.0305769036339560568,0.0129935076899355059,0.126604833099520558],"hpluv":[270.881506896841,453.899240935372916,11.2709410858812937],"hsluv":[270.881506896841,100.000000000000469,11.2709410858812937]},"#220077":{"lch":[13.6616791408408957,50.492834518379162,269.459540268375122],"luv":[13.6616791408408957,-0.476281836738408071,-50.4905881656414763],"rgb":[0.133333333333333331,0,0.466666666666666674],"xyz":[0.0398909166541579763,0.0167191128980163223,0.175658635005918468],"hpluv":[269.459540268375122,468.991527020998944,13.6616791408408957],"hsluv":[269.459540268375122,100.000000000000711,13.6616791408408957]},"#220088":{"lch":[16.0923146306383913,60.7890037695263104,268.549935621017426],"luv":[16.0923146306383913,-1.53830805749361632,-60.7695366743217278],"rgb":[0.133333333333333331,0,0.533333333333333326],"xyz":[0.0510313337561018043,0.0211752797387939132,0.234331498409490635],"hpluv":[268.549935621017426,479.34239057424071,16.0923146306383913],"hsluv":[268.549935621017426,100.000000000000711,16.0923146306383913]},"#220099":{"lch":[18.5394450926422749,71.1015482986176437,267.936483797094468],"luv":[18.5394450926422749,-2.56017951479828287,-71.0554406876254916],"rgb":[0.133333333333333331,0,0.6],"xyz":[0.0640882978651745178,0.0263980653824230742,0.30309817605060857],"hpluv":[267.936483797094468,486.655519564945394,18.5394450926422749],"hsluv":[267.936483797094468,100.000000000000739,18.5394450926422749]},"#2200aa":{"lch":[20.9885603179873783,81.3727160976321,267.505178931910336],"luv":[20.9885603179873783,-3.54207977840461252,-81.2955878012407851],"rgb":[0.133333333333333331,0,0.66666666666666663],"xyz":[0.0791459908304270598,0.0324211425685241791,0.382402025667607171],"hpluv":[267.505178931910336,491.966452636739518,20.9885603179873783],"hsluv":[267.505178931910336,100.000000000000782,20.9885603179873783]},"#2200bb":{"lch":[23.4306921856835828,91.57073581353,267.191578225858507],"luv":[23.4306921856835828,-4.48665301772878333,-91.4607544366971155],"rgb":[0.133333333333333331,0,0.733333333333333282],"xyz":[0.0962835829377637,0.0392761794114589377,0.472660010766248917],"hpluv":[267.191578225858507,495.919187528698728,23.4306921856835828],"hsluv":[267.191578225858507,100.000000000000909,23.4306921856835828]},"#2200cc":{"lch":[25.860342630381858,101.678845182637474,266.957159441292106],"luv":[25.860342630381858,-5.39738007409318588,-101.535490573545474],"rgb":[0.133333333333333331,0,0.8],"xyz":[0.115575958381485447,0.0469931295889477393,0.574266521436519],"hpluv":[266.957159441292106,498.925449111647538,25.860342630381858],"hsluv":[266.957159441292106,100.000000000000881,25.860342630381858]},"#2200dd":{"lch":[28.2742062228116282,111.689036790699618,266.777814373778199],"luv":[28.2742062228116282,-6.27782958394359714,-111.512464751476173],"rgb":[0.133333333333333331,0,0.866666666666666696],"xyz":[0.137094283932118977,0.0556004598092012733,0.687596369336525],"hpluv":[266.777814373778199,501.255846139694427,28.2742062228116282],"hsluv":[266.777814373778199,100.000000000000838,28.2742062228116282]},"#2200ee":{"lch":[30.6703766456275062,121.598437280905173,266.637867063772376],"luv":[30.6703766456275062,-7.13133722672581882,-121.389142753859758],"rgb":[0.133333333333333331,0,0.933333333333333348],"xyz":[0.160906464198293714,0.0651253319156713,0.813007185405048238],"hpluv":[266.637867063772376,503.092926092128948,30.6703766456275062],"hsluv":[266.637867063772376,100.000000000000838,30.6703766456275062]},"#2200ff":{"lch":[33.0478477502328261,131.407178056457695,266.526788769360394],"luv":[33.0478477502328261,-7.96089030872800674,-131.165813649189772],"rgb":[0.133333333333333331,0,1],"xyz":[0.187077512608125107,0.0755937512796040073,0.950841373696830083],"hpluv":[266.526788769360394,504.562807291912918,33.0478477502328261],"hsluv":[266.526788769360394,100.000000000000824,33.0478477502328261]},"#221100":{"lch":[6.69363913087575835,9.72440836304526535,42.3457761997067053],"luv":[6.69363913087575835,7.18724369375563921,6.55039282011655288],"rgb":[0.133333333333333331,0.0666666666666666657,0],"xyz":[0.00860112446722354,0.00741023644072787233,0.000977354867479528471],"hpluv":[42.3457761997067053,184.348759610596915,6.69363913087575835],"hsluv":[42.3457761997067053,100.000000000002402,6.69363913087575835]},"#221111":{"lch":[7.0591726104019763,6.19439175917428564,12.1770506300621],"luv":[7.0591726104019763,6.05502079617615863,1.30660339200560327],"rgb":[0.133333333333333331,0.0666666666666666657,0.0666666666666666657],"xyz":[0.00961278996686066103,0.00781490264058272606,0.00630545983223516],"hpluv":[12.1770506300621,111.348454543071412,7.0591726104019763],"hsluv":[12.1770506300621,26.092394217240134,7.0591726104019763]},"#221122":{"lch":[7.73677423461591474,7.55259268754738677,307.715012949245249],"luv":[7.73677423461591474,4.62018030186617779,-5.97457866985129],"rgb":[0.133333333333333331,0.0666666666666666657,0.133333333333333331],"xyz":[0.0114881481053376797,0.00856504589597354565,0.0161823460282143547],"hpluv":[307.715012949245249,123.872660774597591,7.73677423461591474],"hsluv":[307.715012949245249,42.856167926372315,7.73677423461591474]},"#221133":{"lch":[8.8238329822443653,14.9761175001236957,282.095598903329574],"luv":[8.8238329822443653,3.13814740657790647,-14.6436377390353236],"rgb":[0.133333333333333331,0.0666666666666666657,0.2],"xyz":[0.0145758988377954202,0.00980014618895665851,0.0324444998858255],"hpluv":[282.095598903329574,215.36805510923017,8.8238329822443653],"hsluv":[282.095598903329574,58.3941618505161273,8.8238329822443653]},"#221144":{"lch":[10.2463738670161,23.9334379374521049,274.255517801158362],"luv":[10.2463738670161,1.77596948547040223,-23.8674544912638211],"rgb":[0.133333333333333331,0.0666666666666666657,0.266666666666666663],"xyz":[0.0190338940820143,0.011583344286644235,0.0559232748387121364],"hpluv":[274.255517801158362,296.397281412249697,10.2463738670161],"hsluv":[274.255517801158362,70.1230959508528287,10.2463738670161]},"#221155":{"lch":[11.9365395500671561,33.3852442414483903,270.945812779521702],"luv":[11.9365395500671561,0.551083463009601,-33.3806956200430349],"rgb":[0.133333333333333331,0.0666666666666666657,0.333333333333333315],"xyz":[0.0249963081213762928,0.0139683099023890662,0.0873253221126860518],"hpluv":[270.945812779521702,354.907717298979946,11.9365395500671561],"hsluv":[270.945812779521702,78.3035236172291,11.9365395500671561]},"#221166":{"lch":[13.8282163263251512,43.1006504094303509,269.247085426223],"luv":[13.8282163263251512,-0.566362377205730683,-43.0969291176716496],"rgb":[0.133333333333333331,0.0666666666666666657,0.4],"xyz":[0.0325813038948844641,0.0170023082117923795,0.12727296651983],"hpluv":[269.247085426223,395.509560036398682,13.8282163263251512],"hsluv":[269.247085426223,83.9084652674952167,13.8282163263251512]},"#221177":{"lch":[15.8647012598499089,52.9790758801604,268.263491631539182],"luv":[15.8647012598499089,-1.60543281970815044,-52.954745458525224],"rgb":[0.133333333333333331,0.0666666666666666657,0.466666666666666674],"xyz":[0.0418953169150863836,0.0207279134198731958,0.176326768426227909],"hpluv":[268.263491631539182,423.75204448359591,15.8647012598499089],"hsluv":[268.263491631539182,87.783734282584831,15.8647012598499089]},"#221188":{"lch":[18.0016522099437424,62.9493123294311872,267.645454528547475],"luv":[18.0016522099437424,-2.58614693443793442,-62.8961665507666297],"rgb":[0.133333333333333331,0.0666666666666666657,0.533333333333333326],"xyz":[0.0530357340170302116,0.0251840802606507867,0.234999631829800076],"hpluv":[267.645454528547475,443.729139668046173,18.0016522099437424],"hsluv":[267.645454528547475,90.5156952975567464,18.0016522099437424]},"#221199":{"lch":[20.2061107483083475,72.9561611588118524,267.23334268313738],"luv":[20.2061107483083475,-3.52148568403582729,-72.8711231531918742],"rgb":[0.133333333333333331,0.0666666666666666657,0.6],"xyz":[0.066092698126102925,0.0304068659042799477,0.303766309470918],"hpluv":[267.23334268313738,458.161478440778865,20.2061107483083475],"hsluv":[267.23334268313738,92.4853336382361704,20.2061107483083475]},"#2211aa":{"lch":[22.4542330055690798,82.9584275230068471,266.945798214496847],"luv":[22.4542330055690798,-4.42007776686241449,-82.8405915576709759],"rgb":[0.133333333333333331,0.0666666666666666657,0.66666666666666663],"xyz":[0.0811503910913554671,0.0364299430903810492,0.383070159087916584],"hpluv":[266.945798214496847,468.815123306781686,22.4542330055690798],"hsluv":[266.945798214496847,93.9373181855700921,22.4542330055690798]},"#2211bb":{"lch":[24.7289983316777295,92.9268656932788701,266.737844101991243],"luv":[24.7289983316777295,-5.28796663316276483,-92.7762888698575097],"rgb":[0.133333333333333331,0.0666666666666666657,0.733333333333333282],"xyz":[0.0982879831986921138,0.0432849799333158078,0.473328144186558331],"hpluv":[266.737844101991243,476.841549380862261,24.7289983316777295],"hsluv":[266.737844101991243,95.0302193246277369,24.7289983316777295]},"#2211cc":{"lch":[27.0183279904475668,102.841627589427389,266.583003116257],"luv":[27.0183279904475668,-6.12961814831514129,-102.658794784462174],"rgb":[0.133333333333333331,0.0666666666666666657,0.8],"xyz":[0.117580358642413854,0.0510019301108046094,0.574934654856828486],"hpluv":[266.583003116257,483.002966655360069,27.0183279904475668],"hsluv":[266.583003116257,95.8686128249461689,27.0183279904475668]},"#2211dd":{"lch":[29.313669578695368,112.689841457512074,266.464886381494523],"luv":[29.313669578695368,-6.94848190374932617,-112.475414944566779],"rgb":[0.133333333333333331,0.0666666666666666657,0.866666666666666696],"xyz":[0.139098684193047384,0.0596092603310581434,0.688264502756834484],"hpluv":[266.464886381494523,487.813602393737767,29.313669578695368],"hsluv":[266.464886381494523,96.5228774582602256,29.313669578695368]},"#2211ee":{"lch":[31.6089746608533417,122.463629630364608,266.372923821556242],"luv":[31.6089746608533417,-7.74731231829930689,-122.21832814306471],"rgb":[0.133333333333333331,0.0666666666666666657,0.933333333333333348],"xyz":[0.162910864459222149,0.0691341324375281813,0.813675318825357707],"hpluv":[266.372923821556242,491.627361233059389,31.6089746608533417],"hsluv":[266.372923821556242,97.0413663214109761,31.6089746608533417]},"#2211ff":{"lch":[33.8999739889387115,132.15860685194221,266.300059947999785],"luv":[33.8999739889387115,-8.52836196764118,-131.883146789857562],"rgb":[0.133333333333333331,0.0666666666666666657,1],"xyz":[0.189081912869053514,0.0796025518014608774,0.951509507117139552],"hpluv":[266.300059947999785,494.692599475339,33.8999739889387115],"hsluv":[266.300059947999785,99.9999999999995737,33.8999739889387115]},"#77aa00":{"lch":[63.8935034159882491,78.4053265973676616,109.262687899665323],"luv":[63.8935034159882491,-25.8658938451783591,74.0158819067222424],"rgb":[0.466666666666666674,0.66666666666666663,0],"xyz":[0.219816749274909073,0.326708497135311,0.0514797056256764834],"hpluv":[109.262687899665323,155.714190603412163,63.8935034159882491],"hsluv":[109.262687899665323,100.000000000002132,63.8935034159882491]},"#77aa11":{"lch":[63.9264755829735662,77.0719876411919,109.595002167467626],"luv":[63.9264755829735662,-25.8475857965541422,72.6084952843247464],"rgb":[0.466666666666666674,0.66666666666666663,0.0666666666666666657],"xyz":[0.220828414774546206,0.32711316333516588,0.0568078105904321132],"hpluv":[109.595002167467626,152.98720995680398,63.9264755829735662],"hsluv":[109.595002167467626,97.9667163347824612,63.9264755829735662]},"#77aa22":{"lch":[63.9875253363426424,74.6349938152274603,110.235118064089221],"luv":[63.9875253363426424,-25.8142561390327501,70.0286118796271],"rgb":[0.466666666666666674,0.66666666666666663,0.133333333333333331],"xyz":[0.222703772913023207,0.32786330659055668,0.0666846967864113127],"hpluv":[110.235118064089221,148.008450888663447,63.9875253363426424],"hsluv":[110.235118064089221,94.2440053809013421,63.9875253363426424]},"#77aa33":{"lch":[64.0878403339217328,70.7199026331045,111.362593229805157],"luv":[64.0878403339217328,-25.7610573917560757,65.8610093340090685],"rgb":[0.466666666666666674,0.66666666666666663,0.2],"xyz":[0.22579152364548094,0.329098406883539807,0.0829468506440224629],"hpluv":[111.362593229805157,140.024923426145421,64.0878403339217328],"hsluv":[111.362593229805157,88.2427941375042,64.0878403339217328]},"#77aa44":{"lch":[64.2322300921174616,65.2796522257345,113.17268826837423],"luv":[64.2322300921174616,-25.6877867579927681,60.0130869576689463],"rgb":[0.466666666666666674,0.66666666666666663,0.266666666666666663],"xyz":[0.230249518889699828,0.330881604981227373,0.106425625596909101],"hpluv":[113.17268826837423,128.962712139229978,64.2322300921174616],"hsluv":[113.17268826837423,79.8488372015295482,64.2322300921174616]},"#77aa55":{"lch":[64.4245377454048338,58.3957340906732298,115.996670283872277],"luv":[64.4245377454048338,-25.5959546947607706,52.487225714952487],"rgb":[0.466666666666666674,0.66666666666666663,0.333333333333333315],"xyz":[0.236211932929061841,0.333266570596972234,0.137827672870883],"hpluv":[115.996670283872277,115.018880896771989,64.4245377454048338],"hsluv":[115.996670283872277,69.0944053471027075,64.4245377454048338]},"#77aa66":{"lch":[64.6678576456364,50.3036055521827663,120.443938093288892],"luv":[64.6678576456364,-25.4885877435648602,43.368013862617552],"rgb":[0.466666666666666674,0.66666666666666663,0.4],"xyz":[0.24379692870257,0.336300568906375552,0.177775317278026979],"hpluv":[120.443938093288892,98.707457943709727,64.6678576456364],"hsluv":[120.443938093288892,56.1391996219007723,64.6678576456364]},"#77aa77":{"lch":[64.964649263009,41.4721527505437351,127.71501294923786],"luv":[64.964649263009,-25.3699399849719889,32.8070967768157118],"rgb":[0.466666666666666674,0.66666666666666663,0.466666666666666674],"xyz":[0.253110941722771932,0.340026174114456348,0.226829119184424888],"hpluv":[127.71501294923786,81.006302212696113,64.964649263009],"hsluv":[127.71501294923786,41.2466460512923874,64.964649263009]},"#77aa88":{"lch":[65.3168057391263375,32.8409027786736161,140.238161573904051],"luv":[65.3168057391263375,-25.2451203613846147,21.004970679758074],"rgb":[0.466666666666666674,0.66666666666666663,0.533333333333333326],"xyz":[0.264251358824715732,0.344482340955233945,0.285501982587997],"hpluv":[140.238161573904051,63.8012923553667,65.3168057391263375],"hsluv":[140.238161573904051,43.6199696205744232,65.3168057391263375]},"#77aa99":{"lch":[65.7257012160132,26.4214783611449491,161.939459903532622],"luv":[65.7257012160132,-25.1196781367095241,8.19123245284666],"rgb":[0.466666666666666674,0.66666666666666663,0.6],"xyz":[0.277308322933788487,0.349705126598863103,0.354268660229114962],"hpluv":[161.939459903532622,51.0106916742292213,65.7257012160132],"hsluv":[161.939459903532622,46.1685656356417766,65.7257012160132]},"#77aaaa":{"lch":[66.1922284915170565,25.5746156232648509,192.177050630060677],"luv":[66.1922284915170565,-24.9991985449953802,-5.39453764336142338],"rgb":[0.466666666666666674,0.66666666666666663,0.66666666666666663],"xyz":[0.292366015899041,0.355728203784964225,0.433572509846113563],"hpluv":[192.177050630060677,49.0276908522131265,66.1922284915170565],"hsluv":[192.177050630060677,48.8357820868943122,66.1922284915170565]},"#77aabb":{"lch":[66.7168329685055568,31.6300901405034409,218.105494045696133],"luv":[66.7168329685055568,-24.8889541052261336,-19.519287021925777],"rgb":[0.466666666666666674,0.66666666666666663,0.733333333333333282],"xyz":[0.309503608006377662,0.362583240627899,0.523830494944755309],"hpluv":[218.105494045696133,60.1595160354738923,66.7168329685055568],"hsluv":[218.105494045696133,51.56699221483656,66.7168329685055568]},"#77aacc":{"lch":[67.2995460165272306,42.0550186755790207,233.874741843371567],"luv":[67.2995460165272306,-24.7936410920562054,-33.9691029790543908],"rgb":[0.466666666666666674,0.66666666666666663,0.8],"xyz":[0.328795983450099416,0.370300190805387786,0.625437005615025465],"hpluv":[233.874741843371567,79.2948573353567099,67.2995460165272306],"hsluv":[233.874741843371567,54.3124963748670382,67.2995460165272306]},"#77aadd":{"lch":[67.9400192524912,54.4863937886276304,243.022531341574677],"luv":[67.9400192524912,-24.7172120267711577,-48.557456046554158],"rgb":[0.466666666666666674,0.66666666666666663,0.866666666666666696],"xyz":[0.350314309000732904,0.378907521025641292,0.738766853515031463],"hpluv":[243.022531341574677,101.765770647841308,67.9400192524912],"hsluv":[243.022531341574677,60.6446157506369659,67.9400192524912]},"#77aaee":{"lch":[68.6375602707836,67.7758398266106781,248.660849953701415],"luv":[68.6375602707836,-24.6627990544268876,-63.1293181256010882],"rgb":[0.466666666666666674,0.66666666666666663,0.933333333333333348],"xyz":[0.374126489266907669,0.388432393132111309,0.864177669583554686],"hpluv":[248.660849953701415,125.300382334337471,68.6375602707836],"hsluv":[248.660849953701415,79.8712566390148453,68.6375602707836]},"#77aaff":{"lch":[69.3911697465266428,81.3794470542267874,252.380781260055755],"luv":[69.3911697465266428,-24.6327125013740549,-77.5618712878715399],"rgb":[0.466666666666666674,0.66666666666666663,1],"xyz":[0.400297537676739035,0.398900812496044033,1.00201185787533653],"hpluv":[252.380781260055755,148.816077288451226,69.3911697465266428],"hsluv":[252.380781260055755,99.9999999999980531,69.3911697465266428]},"#222200":{"lch":[12.5069288045758107,13.787646171799997,85.8743202181747307],"luv":[12.5069288045758107,0.991945128669063814,13.751917387057734],"rgb":[0.133333333333333331,0.133333333333333331,0],"xyz":[0.0123167482019914745,0.014841483910263846,0.002215896112402139],"hpluv":[85.8743202181747307,139.887458074797621,12.5069288045758107],"hsluv":[85.8743202181747307,100.000000000002359,12.5069288045758107]},"#222211":{"lch":[12.7636979604368612,8.34346759842367,85.8743202181729828],"luv":[12.7636979604368612,0.600266494900015157,8.32184665209868513],"rgb":[0.133333333333333331,0.133333333333333331,0.0666666666666666657],"xyz":[0.0133284137016285963,0.0152461501101187,0.00754400107715777046],"hpluv":[85.8743202181729828,82.9486632734846552,12.7636979604368612],"hsluv":[85.8743202181729828,59.2967120963297631,12.7636979604368612]},"#222222":{"lch":[13.2279109842717837,6.86787642036123471e-13,0],"luv":[13.2279109842717837,6.53891093021720259e-13,2.10008818196756883e-13],"rgb":[0.133333333333333331,0.133333333333333331,0.133333333333333331],"xyz":[0.0152037718401056149,0.0159962933655095202,0.0174208872731369674],"hpluv":[0,6.58825703928357502e-12,13.2279109842717837],"hsluv":[0,1.88635445986832e-12,13.2279109842717837]},"#222233":{"lch":[13.9615854376221584,10.5260121123804868,265.874320218180912],"luv":[13.9615854376221584,-0.757288539977712838,-10.4987354027615698],"rgb":[0.133333333333333331,0.133333333333333331,0.2],"xyz":[0.0182915225725633554,0.017231393658492633,0.0336830411307481106],"hpluv":[265.874320218180912,95.6683874279760431,13.9615854376221584],"hsluv":[265.874320218180912,18.6338179823007195,13.9615854376221584]},"#222244":{"lch":[14.9613810506728697,21.7214686924654536,265.874320218179207],"luv":[14.9613810506728697,-1.5627399186581008,-21.6651805001571454],"rgb":[0.133333333333333331,0.133333333333333331,0.266666666666666663],"xyz":[0.0227495178167822359,0.0190145917561802061,0.0571618160836347491],"hpluv":[265.874320218179207,184.228505509793536,14.9613810506728697],"hsluv":[265.874320218179207,35.8831222215914138,14.9613810506728697]},"#222255":{"lch":[16.2052187005970154,32.8139057554865161,265.874320218178639],"luv":[16.2052187005970154,-2.3607796110480268,-32.728873041368395],"rgb":[0.133333333333333331,0.133333333333333331,0.333333333333333315],"xyz":[0.028711931856144228,0.021399557371925039,0.0885638633576086576],"hpluv":[265.874320218178639,256.946292996249099,16.2052187005970154],"hsluv":[265.874320218178639,50.0467352240393097,16.2052187005970154]},"#222266":{"lch":[17.6604729086265309,43.5908485911403716,265.874320218178354],"luv":[17.6604729086265309,-3.13612123314657865,-43.477888915018994],"rgb":[0.133333333333333331,0.133333333333333331,0.4],"xyz":[0.0362969276296524063,0.0244335556813283505,0.128511507764752619],"hpluv":[265.874320218178354,313.207621322876264,17.6604729086265309],"hsluv":[265.874320218178354,61.00504004829466,17.6604729086265309]},"#222277":{"lch":[19.2910482951380544,54.0745009411091573,265.874320218178241],"luv":[19.2910482951380544,-3.89036222175517965,-53.9343743248547867],"rgb":[0.133333333333333331,0.133333333333333331,0.466666666666666674],"xyz":[0.0456109406498543188,0.0281591608894091669,0.177565309671150529],"hpluv":[265.874320218178241,355.693573155256843,19.2910482951380544],"hsluv":[265.874320218178241,69.2802447897283429,19.2910482951380544]},"#222288":{"lch":[21.0622605487373207,64.3390225585563371,265.874320218178184],"luv":[21.0622605487373207,-4.62883796225993471,-64.1722968492601353],"rgb":[0.133333333333333331,0.133333333333333331,0.533333333333333326],"xyz":[0.0567513577517981468,0.0326153277301867578,0.236238173074722696],"hpluv":[265.874320218178184,387.622344883614403,21.0622605487373207],"hsluv":[265.874320218178184,75.4991739133377706,21.0622605487373207]},"#222299":{"lch":[22.9434551626666803,74.4470789880776351,265.874320218178127],"luv":[22.9434551626666803,-5.35605689510984373,-74.2541596437089737],"rgb":[0.133333333333333331,0.133333333333333331,0.6],"xyz":[0.0698083218608708533,0.0378381133738159223,0.305004850715840603],"hpluv":[265.874320218178127,411.744842564929684,22.9434551626666803],"hsluv":[265.874320218178127,80.1976353712613559,22.9434551626666803]},"#2222aa":{"lch":[24.9089307040763188,84.4389391258505526,265.87432021817807],"luv":[24.9089307040763188,-6.07491614537627278,-84.2201272530844705],"rgb":[0.133333333333333331,0.133333333333333331,0.66666666666666663],"xyz":[0.0848660148261234093,0.0438611905599170238,0.384308700332839204],"hpluv":[265.87432021817807,430.157015573344836,24.9089307040763188],"hsluv":[265.87432021817807,83.7838678741945557,24.9089307040763188]},"#2222bb":{"lch":[26.937850813592469,94.3371638934954149,265.87432021817807],"luv":[26.937850813592469,-6.78703884698804139,-94.0927021354881106],"rgb":[0.133333333333333331,0.133333333333333331,0.733333333333333282],"xyz":[0.102003606933460056,0.0507162274028517823,0.47456668543148095],"hpluv":[265.87432021817807,444.384803230596,26.937850813592469],"hsluv":[265.87432021817807,86.5550863782758,26.937850813592469]},"#2222cc":{"lch":[29.0136770200274086,104.153206308830732,265.874320218178],"luv":[29.0136770200274086,-7.49324898143496743,-103.883307629821275],"rgb":[0.133333333333333331,0.133333333333333331,0.8],"xyz":[0.121295982377181782,0.058433177580340584,0.576173196101751106],"hpluv":[265.874320218178,455.521834046362642,29.0136770200274086],"hsluv":[265.874320218178,88.7243024658832695,29.0136770200274086]},"#2222dd":{"lch":[31.1234509916598299,113.892375340460845,265.874320218178],"luv":[31.1234509916598299,-8.19392849973896809,-113.597238947227837],"rgb":[0.133333333333333331,0.133333333333333331,0.866666666666666696],"xyz":[0.142814307927815326,0.067040507800594118,0.689503044001757104],"hpluv":[265.874320218178,464.350835522916555,31.1234509916598299],"hsluv":[265.874320218178,90.4439719502614565,31.1234509916598299]},"#2222ee":{"lch":[33.2570959032629503,123.556928623667645,265.874320218178],"luv":[33.2570959032629503,-8.88923982631188103,-123.236747872639071],"rgb":[0.133333333333333331,0.133333333333333331,0.933333333333333348],"xyz":[0.166626488193990063,0.0765653799070641489,0.814913860070280327],"hpluv":[265.874320218178,471.435310205520636,33.2570959032629503],"hsluv":[265.874320218178,93.8546607467714296,33.2570959032629503]},"#2222ff":{"lch":[35.4068078244889,133.147814572056944,265.874320218177957],"luv":[35.4068078244889,-9.57925119428392335,-132.802780361977625],"rgb":[0.133333333333333331,0.133333333333333331,1],"xyz":[0.192797536603821457,0.0870337992709968589,0.952748048362062172],"hpluv":[265.874320218177957,477.184793215987838,35.4068078244889],"hsluv":[265.874320218177957,99.999999999999531,35.4068078244889]},"#77bb00":{"lch":[69.0844312744863629,87.8096536524333544,113.037133893102563],"luv":[69.0844312744863629,-34.3623439699837476,80.8069588058406225],"rgb":[0.466666666666666674,0.733333333333333282,0],"xyz":[0.253771247183507853,0.394617492952509585,0.0627978715952091093],"hpluv":[113.037133893102563,161.287757631366873,69.0844312744863629],"hsluv":[113.037133893102563,100.000000000002331,69.0844312744863629]},"#77bb11":{"lch":[69.1135050244688216,86.6316159473835654,113.342165034517933],"luv":[69.1135050244688216,-34.3252912529264051,79.5412550948043275],"rgb":[0.466666666666666674,0.733333333333333282,0.0666666666666666657],"xyz":[0.254782912683144958,0.395022159152364438,0.068125976559964746],"hpluv":[113.342165034517933,159.057013433643618,69.1135050244688216],"hsluv":[113.342165034517933,98.3127503818399,69.1135050244688216]},"#77bb22":{"lch":[69.1673475306790664,84.4748154027895595,113.924619678029501],"luv":[69.1673475306790664,-34.2574435126740582,77.2167209955934197],"rgb":[0.466666666666666674,0.733333333333333282,0.133333333333333331],"xyz":[0.256658270821622,0.395772302407755239,0.0780028627559439386],"hpluv":[113.924619678029501,154.976360107776344,69.1673475306790664],"hsluv":[113.924619678029501,95.2170715716625438,69.1673475306790664]},"#77bb33":{"lch":[69.2558504240405313,80.9996568929936132,114.934551128374181],"luv":[69.2558504240405313,-34.1480550559542593,73.4496749664571666],"rgb":[0.466666666666666674,0.733333333333333282,0.2],"xyz":[0.25974602155407972,0.397007402700738365,0.0942650166135550749],"hpluv":[114.934551128374181,148.410982175614635,69.2558504240405313],"hsluv":[114.934551128374181,90.2088459481891363,69.2558504240405313]},"#77bb44":{"lch":[69.3833048234310752,76.148419012573342,116.514961433737128],"luv":[69.3833048234310752,-33.9950520676451049,68.1389620777462426],"rgb":[0.466666666666666674,0.733333333333333282,0.266666666666666663],"xyz":[0.264204016798298635,0.398790600798425932,0.117743791566441713],"hpluv":[116.514961433737128,139.266042804817573,69.3833048234310752],"hsluv":[116.514961433737128,83.166634884803841,69.3833048234310752]},"#77bb55":{"lch":[69.5531781358710788,69.9670725739878918,118.886197685461212],"luv":[69.5531781358710788,-33.7990968432466516,61.2618339356121666],"rgb":[0.466666666666666674,0.733333333333333282,0.333333333333333315],"xyz":[0.270166430837660621,0.401175566414170792,0.149145838840415629],"hpluv":[118.886197685461212,127.648598426560824,69.5531781358710788],"hsluv":[118.886197685461212,74.0801666731923092,69.5531781358710788]},"#77bb66":{"lch":[69.7683097004737647,62.6192143930699672,122.411113057511386],"luv":[69.7683097004737647,-33.5633071802414804,52.8646424591145],"rgb":[0.466666666666666674,0.733333333333333282,0.4],"xyz":[0.277751426611168806,0.404209564723574111,0.189093483247559591],"hpluv":[122.411113057511386,113.8908252780179,69.7683097004737647],"hsluv":[122.411113057511386,63.0377921091212627,69.7683097004737647]},"#77bb77":{"lch":[70.0310134677453391,54.4237865803123384,127.71501294923867],"luv":[70.0310134677453391,-33.2928991557924476,43.0526585885427053],"rgb":[0.466666666666666674,0.733333333333333282,0.466666666666666674],"xyz":[0.287065439631370711,0.407935169931654906,0.2381472851539575],"hpluv":[127.71501294923867,98.6137944921033522,70.0310134677453391],"hsluv":[127.71501294923867,50.2119979074062357,70.0310134677453391]},"#77bb88":{"lch":[70.3431390634792422,45.948041729110173,135.896820739423845],"luv":[70.3431390634792422,-32.9947227526694,31.9776610966863863],"rgb":[0.466666666666666674,0.733333333333333282,0.533333333333333326],"xyz":[0.298205856733314512,0.412391336772432504,0.296820148557529695],"hpluv":[135.896820739423845,82.8866502392756246,70.3431390634792422],"hsluv":[135.896820739423845,51.9268484553617711,70.3431390634792422]},"#77bb99":{"lch":[70.7061124793432612,38.2197788608509725,148.75629343317604],"luv":[70.7061124793432612,-32.6767203094589,19.8238100775241328],"rgb":[0.466666666666666674,0.733333333333333282,0.6],"xyz":[0.311262820842387211,0.417614122416061662,0.365586826198647574],"hpluv":[148.75629343317604,68.5915373148405,70.7061124793432612],"hsluv":[148.75629343317604,53.7921873551213565,70.7061124793432612]},"#77bbaa":{"lch":[71.1209666334754615,33.0529501718716148,168.140026251468868],"luv":[71.1209666334754615,-32.3473621836046874,6.79306078486928744],"rgb":[0.466666666666666674,0.733333333333333282,0.66666666666666663],"xyz":[0.326320513807639767,0.423637199602162784,0.444890675815646175],"hpluv":[168.140026251468868,58.9728212370576585,71.1209666334754615],"hsluv":[168.140026251468868,55.7713219876506372,71.1209666334754615]},"#77bbbb":{"lch":[71.5883672123020744,32.7520226121926044,192.177050630060876],"luv":[71.5883672123020744,-32.0151171807858432,-6.90849166534396097],"rgb":[0.466666666666666674,0.733333333333333282,0.733333333333333282],"xyz":[0.343458105914976441,0.430492236445097542,0.535148660914287921],"hpluv":[192.177050630060876,58.0543804308889762,71.5883672123020744],"hsluv":[192.177050630060876,57.8271385543864938,71.5883672123020744]},"#77bbcc":{"lch":[72.1086367753872111,38.0603267014846267,213.636027248927832],"luv":[72.1086367753872111,-31.6880044447458609,-21.0821925551758049],"rgb":[0.466666666666666674,0.733333333333333282,0.8],"xyz":[0.36275048135869814,0.438209186622586344,0.636755171584558077],"hpluv":[213.636027248927832,66.97682452789428,72.1086367753872111],"hsluv":[213.636027248927832,59.9241419588218278,72.1086367753872111]},"#77bbdd":{"lch":[72.6817787487410101,47.4106862821029651,228.567760630430627],"luv":[72.6817787487410101,-31.3732552756954277,-35.5456330249727728],"rgb":[0.466666666666666674,0.733333333333333282,0.866666666666666696],"xyz":[0.384268806909331739,0.44681651684283985,0.750085019484564075],"hpluv":[228.567760630430627,82.7732525696479371,72.6817787487410101],"hsluv":[228.567760630430627,62.0300015657167449,72.6817787487410101]},"#77bbee":{"lch":[73.3075021126589803,58.9885691422652769,238.208313348868131],"luv":[73.3075021126589803,-31.0770938488335098,-50.1384635520735316],"rgb":[0.466666666666666674,0.733333333333333282,0.933333333333333348],"xyz":[0.408080987175506449,0.456341388949309867,0.875495835553087298],"hpluv":[238.208313348868131,102.107764199280055,73.3075021126589803],"hsluv":[238.208313348868131,76.3238953534044,73.3075021126589803]},"#77bbff":{"lch":[73.9852470697490219,71.6819577745528846,244.548916872628638],"luv":[73.9852470697490219,-30.8046295043453391,-64.7254036023940102],"rgb":[0.466666666666666674,0.733333333333333282,1],"xyz":[0.43425203558533787,0.466809808313242591,1.01333002384486903],"hpluv":[244.548916872628638,122.943070755930805,73.9852470697490219],"hsluv":[244.548916872628638,99.9999999999974,73.9852470697490219]},"#223300":{"lch":[18.8330192465532917,22.9063411551717806,108.204985820955727],"luv":[18.8330192465532917,-7.15634373768739707,21.7597612446731326],"rgb":[0.133333333333333331,0.2,0],"xyz":[0.0184344702910022862,0.0270769280882856428,0.00425513680873902],"hpluv":[108.204985820955727,154.338793470845559,18.8330192465532917],"hsluv":[108.204985820955727,100.000000000002331,18.8330192465532917]},"#223311":{"lch":[19.0056890338669575,18.4529510656336271,112.754551304246377],"luv":[19.0056890338669575,-7.13731020483261602,17.0167625026225657],"rgb":[0.133333333333333331,0.2,0.0666666666666666657],"xyz":[0.0194461357906394079,0.0274815942881404957,0.0095832417734946513],"hpluv":[112.754551304246377,123.203072156705915,19.0056890338669575],"hsluv":[112.754551304246377,76.6034511576994248,19.0056890338669575]},"#223322":{"lch":[19.3213416797184507,11.6344605438365232,127.71501294923759],"luv":[19.3213416797184507,-7.11719904028337247,9.20359440474635],"rgb":[0.133333333333333331,0.2,0.133333333333333331],"xyz":[0.0213214939291164265,0.028231737543531317,0.0194601279694738491],"hpluv":[127.71501294923759,76.4096652359405084,19.3213416797184507],"hsluv":[127.71501294923759,38.9061385447444366,19.3213416797184507]},"#223333":{"lch":[19.8290945906418372,7.27996715422488894,192.177050630060677],"luv":[19.8290945906418372,-7.11617124458192585,-1.53558737438758408],"rgb":[0.133333333333333331,0.2,0.2],"xyz":[0.0244092446615741671,0.0294668378365144298,0.0357222818270849923],"hpluv":[192.177050630060677,46.5871198449043149,19.8290945906418372],"hsluv":[192.177050630060677,46.4047641905018935,19.8290945906418372]},"#223344":{"lch":[20.5377244517829496,15.5714684077650816,242.621028364370432],"luv":[20.5377244517829496,-7.16091210703038339,-13.8272183091687548],"rgb":[0.133333333333333331,0.2,0.266666666666666663],"xyz":[0.0288672399057930476,0.031250035934202,0.0592010567799716309],"hpluv":[242.621028364370432,96.2091932027738181,20.5377244517829496],"hsluv":[242.621028364370432,54.472556800898019,20.5377244517829496]},"#223355":{"lch":[21.4445377167678828,27.4997828393463344,254.670418676715883],"luv":[21.4445377167678828,-7.27014529691604761,-26.5213695644274097],"rgb":[0.133333333333333331,0.2,0.333333333333333315],"xyz":[0.0348296539451550397,0.0336350015499468358,0.0906031040539455323],"hpluv":[254.670418676715883,162.72410902482622,21.4445377167678828],"hsluv":[254.670418676715883,62.1025047738862597,21.4445377167678828]},"#223366":{"lch":[22.538163137523668,39.6650934211933617,259.172698399253136],"luv":[22.538163137523668,-7.45106225263504562,-38.9589695374422647],"rgb":[0.133333333333333331,0.2,0.4],"xyz":[0.042414649718663211,0.0366689998593501473,0.130550748461089494],"hpluv":[259.172698399253136,223.320859110196579,22.538163137523668],"hsluv":[259.172698399253136,68.7622962285398103,22.538163137523668]},"#223377":{"lch":[23.8014699151847751,51.4679604591091,261.393782909523054],"luv":[23.8014699151847751,-7.70180102721624227,-50.8884389105972517],"rgb":[0.133333333333333331,0.2,0.466666666666666674],"xyz":[0.0517286627388651304,0.0403946050674309637,0.179604550367487403],"hpluv":[261.393782909523054,274.392670476726266,23.8014699151847751],"hsluv":[261.393782909523054,74.3066649079193837,23.8014699151847751]},"#223388":{"lch":[25.214303338898695,62.8010579136007649,262.667168962641028],"luv":[25.214303338898695,-8.01548446335257658,-62.2874376089207189],"rgb":[0.133333333333333331,0.2,0.533333333333333326],"xyz":[0.0628690798408089585,0.0448507719082085615,0.238277413771059571],"hpluv":[262.667168962641028,316.052560368409843,25.214303338898695],"hsluv":[262.667168962641028,78.8060188103052184,25.214303338898695]},"#223399":{"lch":[26.7557115473943199,73.7050787305795723,263.468936800572067],"luv":[26.7557115473943199,-8.38335327394953111,-73.2267575314180732],"rgb":[0.133333333333333331,0.2,0.6],"xyz":[0.0759260439498816719,0.0500735575518377191,0.307044091412177478],"hpluv":[263.468936800572067,349.558796760350788,26.7557115473943199],"hsluv":[263.468936800572067,82.4151943494814105,26.7557115473943199]},"#2233aa":{"lch":[28.4055164492709622,84.2578478733767184,264.007358934798901],"luv":[28.4055164492709622,-8.79658068794244485,-83.7974050699281],"rgb":[0.133333333333333331,0.2,0.66666666666666663],"xyz":[0.090983736915134214,0.0560966347379388205,0.386347941029176078],"hpluv":[264.007358934798901,376.397732872534505,28.4055164492709622],"hsluv":[264.007358934798901,85.301735461295209,28.4055164492709622]},"#2233bb":{"lch":[30.1452579578322855,94.5340435151979506,264.386468786418391],"luv":[30.1452579578322855,-9.24712484322681583,-94.0806891209195868],"rgb":[0.133333333333333331,0.2,0.733333333333333282],"xyz":[0.108121329022470861,0.0629516715808735861,0.476605926127817825],"hpluv":[264.386468786418391,397.931717533943186,30.1452579578322855],"hsluv":[264.386468786418391,87.6154589527103553,30.1452579578322855]},"#2233cc":{"lch":[31.9586404471462444,104.593501952517812,264.663323368501551],"luv":[31.9586404471462444,-9.72802821613955615,-104.140127317558722],"rgb":[0.133333333333333331,0.2,0.8],"xyz":[0.127413704466192601,0.0706686217583623877,0.578212436798088],"hpluv":[264.663323368501551,415.294074833826699,31.9586404471462444],"hsluv":[264.663323368501551,89.4797268300864,31.9586404471462444]},"#2233dd":{"lch":[33.8316358854510284,114.480561125644712,264.87147297862515],"luv":[33.8316358854510284,-10.233440845943651,-114.022259072932982],"rgb":[0.133333333333333331,0.2,0.866666666666666696],"xyz":[0.148932030016826145,0.0792759519786159217,0.691542284698094],"hpluv":[264.87147297862515,429.386195390892226,33.8316358854510284],"hsluv":[264.87147297862515,90.9921469937159,33.8316358854510284]},"#2233ee":{"lch":[35.7523793143002209,124.226868169083772,265.031742065807748],"luv":[35.7523793143002209,-10.7585230682670669,-123.760126682580946],"rgb":[0.133333333333333331,0.2,0.933333333333333348],"xyz":[0.172744210283000882,0.0888008240850859387,0.816953100766617202],"hpluv":[265.031742065807748,440.909964314972513,35.7523793143002209],"hsluv":[265.031742065807748,93.1343838757889557,35.7523793143002209]},"#2233ff":{"lch":[37.7109573358094536,133.854664271403067,265.157628752861342],"luv":[37.7109573358094536,-11.2993072928814158,-133.376897556927247],"rgb":[0.133333333333333331,0.2,1],"xyz":[0.198915258692832275,0.0992692434490186487,0.954787289058399],"hpluv":[265.157628752861342,450.407151983715153,37.7109573358094536],"hsluv":[265.157628752861342,99.9999999999994884,37.7109573358094536]},"#77cc00":{"lch":[74.2578384949046892,97.2071675743180776,115.806356387580706],"luv":[74.2578384949046892,-42.3172913249353897,87.5127435448238202],"rgb":[0.466666666666666674,0.8,0],"xyz":[0.291994990493124773,0.47106497957174448,0.0755391193650810505],"hpluv":[115.806356387580706,166.109821583261578,74.2578384949046892],"hsluv":[115.806356387580706,100.000000000002331,74.2578384949046892]},"#77cc11":{"lch":[74.283676291108776,96.1575231653334441,116.077287726142885],"luv":[74.283676291108776,-42.2692272766684525,86.3688698937585144],"rgb":[0.466666666666666674,0.8,0.0666666666666666657],"xyz":[0.293006655992761877,0.471469645771599333,0.0808672243298366872],"hpluv":[116.077287726142885,164.2590118749402,74.283676291108776],"hsluv":[116.077287726142885,98.5840266713216522,74.283676291108776]},"#77cc22":{"lch":[74.3315335987815331,94.2328042547367914,116.591431825394338],"luv":[74.3315335987815331,-42.1809937248656581,84.2649699821603519],"rgb":[0.466666666666666674,0.8,0.133333333333333331],"xyz":[0.294882014131238934,0.472219789026990133,0.0907441105258158798],"hpluv":[116.591431825394338,160.867513369155,74.3315335987815331],"hsluv":[116.591431825394338,95.9817736999432611,74.3315335987815331]},"#77cc33":{"lch":[74.410219680569412,91.1231466477069176,117.473161926834081],"luv":[74.410219680569412,-42.0381214847294515,80.8469182901527148],"rgb":[0.466666666666666674,0.8,0.2],"xyz":[0.29796976486369664,0.47345488931997326,0.10700626438342703],"hpluv":[117.473161926834081,155.394430123968846,74.410219680569412],"hsluv":[117.473161926834081,91.7599970515073551,74.410219680569412]},"#77cc44":{"lch":[74.5235830687713445,86.7634188586395,118.828926444460791],"luv":[74.5235830687713445,-41.8369758074171045,76.0102513305232748],"rgb":[0.466666666666666674,0.8,0.266666666666666663],"xyz":[0.302427760107915555,0.475238087417660826,0.130485039336313668],"hpluv":[118.828926444460791,147.734611978654129,74.5235830687713445],"hsluv":[118.828926444460791,85.7987877580492153,74.5235830687713445]},"#77cc55":{"lch":[74.6747602628398,81.1723246922669688,120.810965560633605],"luv":[74.6747602628398,-41.5770530159641396,69.7158156981220571],"rgb":[0.466666666666666674,0.8,0.333333333333333315],"xyz":[0.30839017414727754,0.477623053033405687,0.161887086610287556],"hpluv":[120.810965560633605,137.934680546119694,74.6747602628398],"hsluv":[120.810965560633605,78.0638956664307671,74.6747602628398]},"#77cc66":{"lch":[74.866352492363319,74.4599116278811692,123.651008617564372],"luv":[74.866352492363319,-41.2606832822808798,61.982533464768764],"rgb":[0.466666666666666674,0.8,0.4],"xyz":[0.315975169920785726,0.480657051342809,0.201834731017431546],"hpluv":[123.651008617564372,126.204595224585091,74.866352492363319],"hsluv":[123.651008617564372,68.5978490432360388,74.866352492363319]},"#77cc77":{"lch":[75.1005189251371519,66.8471540376336719,127.715012949239053],"luv":[75.1005189251371519,-40.8926996459993219,52.8803282761483189],"rgb":[0.466666666666666674,0.8,0.466666666666666674],"xyz":[0.325289182940987631,0.484382656550889801,0.250888532923829455],"hpluv":[127.715012949239053,112.948199149412858,75.1005189251371519],"hsluv":[127.715012949239053,57.5107647824030153,75.1005189251371519]},"#77cc88":{"lch":[75.3790318815133,58.7087525381891311,133.590980823477452],"luv":[75.3790318815133,-40.4800101313413947,42.5215992685696946],"rgb":[0.466666666666666674,0.8,0.533333333333333326],"xyz":[0.336429600042931432,0.488838823391667399,0.309561396327401595],"hpluv":[133.590980823477452,98.8306436104363542,75.3790318815133],"hsluv":[133.590980823477452,58.7660231359317748,75.3790318815133]},"#77cc99":{"lch":[75.7033128937519848,50.6622606125816759,142.200076129410462],"luv":[75.7033128937519848,-40.0310804193600305,31.0512036938324556],"rgb":[0.466666666666666674,0.8,0.6],"xyz":[0.349486564152004187,0.494061609035296556,0.378328073968519529],"hpluv":[142.200076129410462,84.9198084445103802,75.7033128937519848],"hsluv":[142.200076129410462,60.1459848784672815,75.7033128937519848]},"#77ccaa":{"lch":[76.0744587192654,43.7254195479873289,154.773618890386814],"luv":[76.0744587192654,-39.5553661600219684,18.6355928962322395],"rgb":[0.466666666666666674,0.8,0.66666666666666663],"xyz":[0.364544257117256687,0.500084686221397678,0.45763192358551813],"hpluv":[154.773618890386814,73.067319501552376,76.0744587192654],"hsluv":[154.773618890386814,61.6269813218812459,76.0744587192654]},"#77ccbb":{"lch":[76.4932621718819235,39.4413790272598561,172.054536865796422],"luv":[76.4932621718819235,-39.0627454070693716,5.45199970968949721],"rgb":[0.466666666666666674,0.8,0.733333333333333282],"xyz":[0.381681849224593361,0.506939723064332437,0.547889908684159876],"hpluv":[172.054536865796422,67.3385729198675733,76.4932621718819235],"hsluv":[172.054536865796422,63.1840553036415713,76.4932621718819235]},"#77cccc":{"lch":[76.9602305249106,39.4506200876857847,192.177050630060961],"luv":[76.9602305249106,-38.5629992967744357,-8.32144882456723778],"rgb":[0.466666666666666674,0.8,0.8],"xyz":[0.400974224668315116,0.514656673241821183,0.64949641935443],"hpluv":[192.177050630060961,69.0111626451701312,76.9602305249106],"hsluv":[192.177050630060961,64.792316690459316,76.9602305249106]},"#77ccdd":{"lch":[77.4756030772436475,44.2250390945155942,210.602473757279853],"luv":[77.4756030772436475,-38.0653777824919359,-22.5140200139291444],"rgb":[0.466666666666666674,0.8,0.866666666666666696],"xyz":[0.422492550218948604,0.5232640034620748,0.762826267254436],"hpluv":[210.602473757279853,79.5030322309331439,77.4756030772436475],"hsluv":[210.602473757279853,66.4280770246703156,77.4756030772436475]},"#77ccee":{"lch":[78.0393687787239116,52.7144148097026246,224.531483635923479],"luv":[78.0393687787239116,-37.5782716813780482,-36.9686762837126182],"rgb":[0.466666666666666674,0.8,0.933333333333333348],"xyz":[0.446304730485123369,0.532788875568544817,0.888237083322959253],"hpluv":[224.531483635923479,97.6926138158747648,78.0393687787239116],"hsluv":[224.531483635923479,71.3781641956177282,78.0393687787239116]},"#77ccff":{"lch":[78.6512843692400736,63.5145451324089052,234.249283216901347],"luv":[78.6512843692400736,-37.1089966152940249,-51.5462880679385549],"rgb":[0.466666666666666674,0.8,1],"xyz":[0.472475778894954734,0.54325729493247743,1.0260712716147411],"hpluv":[234.249283216901347,121.749546403725816,78.6512843692400736],"hsluv":[234.249283216901347,99.9999999999968168,78.6512843692400736]},"#224400":{"lch":[25.1809799681870601,33.4179584834008523,116.999863609689683],"luv":[25.1809799681870601,-15.1713647924420147,29.7756551486773162],"rgb":[0.133333333333333331,0.266666666666666663,0],"xyz":[0.0272670407739683193,0.0447420690542179589,0.00719932696972761486],"hpluv":[116.999863609689683,168.401755360818214,25.1809799681870601],"hsluv":[116.999863609689683,100.000000000002217,25.1809799681870601]},"#224411":{"lch":[25.304760275593587,29.8643723317269938,120.153298663054528],"luv":[25.304760275593587,-15.0013316265206242,25.8232605261065515],"rgb":[0.133333333333333331,0.266666666666666663,0.0666666666666666657],"xyz":[0.0282787062736054411,0.0451467352540728117,0.0125274319344832463],"hpluv":[120.153298663054528,149.758158325470362,25.304760275593587],"hsluv":[120.153298663054528,85.5029145399767287,25.304760275593587]},"#224422":{"lch":[25.5322735505540379,24.0578500603585184,127.715012949239281],"luv":[25.5322735505540379,-14.7170130248608242,19.0312815425753499],"rgb":[0.133333333333333331,0.266666666666666663,0.133333333333333331],"xyz":[0.0301540644120824597,0.0458968785094636331,0.0224043181304624424],"hpluv":[127.715012949239281,119.565711231297882,25.5322735505540379],"hsluv":[127.715012949239281,60.8802579098014363,25.5322735505540379]},"#224433":{"lch":[25.9015299317797343,16.981905402382786,147.498859327993841],"luv":[25.9015299317797343,-14.3222120947549634,9.12465625699578098],"rgb":[0.133333333333333331,0.266666666666666663,0.2],"xyz":[0.0332418151445402,0.0471319788024467459,0.0386664719880735891],"hpluv":[147.498859327993841,83.1955939146196357,25.9015299317797343],"hsluv":[147.498859327993841,64.09678513773909,25.9015299317797343]},"#224444":{"lch":[26.423438440277998,14.1959776348833024,192.177050630061],"luv":[26.423438440277998,-13.8765746732054378,-2.99440417262938974],"rgb":[0.133333333333333331,0.266666666666666663,0.266666666666666663],"xyz":[0.0376998103887590807,0.048915176900134319,0.0621452469409602276],"hpluv":[192.177050630061,68.1734546180548762,26.423438440277998],"hsluv":[192.177050630061,67.9066037165366367,26.423438440277998]},"#224455":{"lch":[27.1020089847707979,21.1158760403194243,230.453768193421723],"luv":[27.1020089847707979,-13.4444916811297333,-16.2826860310628518],"rgb":[0.133333333333333331,0.266666666666666663,0.333333333333333315],"xyz":[0.0436622244281210728,0.0513001425158791519,0.0935472942149341291],"hpluv":[230.453768193421723,98.865995891455,27.1020089847707979],"hsluv":[230.453768193421723,71.8953118433392717,27.1020089847707979]},"#224466":{"lch":[27.935501760142138,32.6185654266362306,246.366656325875056],"luv":[27.935501760142138,-13.0762038460066634,-29.8828329224226863],"rgb":[0.133333333333333331,0.266666666666666663,0.4],"xyz":[0.0512472202016292511,0.0543341408252824634,0.133494938622078091],"hpluv":[246.366656325875056,148.165710166053657,27.935501760142138],"hsluv":[246.366656325875056,75.7322080769735351,27.935501760142138]},"#224477":{"lch":[28.9175817086007072,45.1016041758277453,253.511262930840303],"luv":[28.9175817086007072,-12.8010466495854338,-43.2468253621948548],"rgb":[0.133333333333333331,0.266666666666666663,0.466666666666666674],"xyz":[0.0605612332218311636,0.0580597460333632798,0.182548740528476],"hpluv":[253.511262930840303,197.910731630760921,28.9175817086007072],"hsluv":[253.511262930840303,79.2164102145581381,28.9175817086007072]},"#224488":{"lch":[30.0385370730522183,57.5093846577101502,257.31357801273],"luv":[30.0385370730522183,-12.6299243743950456,-56.1053859625395432],"rgb":[0.133333333333333331,0.266666666666666663,0.533333333333333326],"xyz":[0.0717016503237749847,0.0625159128741408776,0.241221603932048168],"hpluv":[257.31357801273,242.94013543841632,30.0385370730522183],"hsluv":[257.31357801273,82.2624245727818106,30.0385370730522183]},"#224499":{"lch":[31.2864747985506213,69.5224780150470139,259.59064804278853],"luv":[31.2864747985506213,-12.5612993437317204,-68.3782765807230675],"rgb":[0.133333333333333331,0.266666666666666663,0.6],"xyz":[0.084758614432847712,0.0677386985177700351,0.309988281573166102],"hpluv":[259.59064804278853,281.973268281811727,31.2864747985506213],"hsluv":[259.59064804278853,84.8626039888072796,31.2864747985506213]},"#2244aa":{"lch":[32.6483868166792277,81.0719578322086676,261.068394107427196],"luv":[32.6483868166792277,-12.5868550230291323,-80.0889095154670372],"rgb":[0.133333333333333331,0.266666666666666663,0.66666666666666663],"xyz":[0.0998163073981002402,0.0737617757038711297,0.389292131190164703],"hpluv":[261.068394107427196,315.099896322028769,32.6483868166792277],"hsluv":[261.068394107427196,87.0515845849570695,32.6483868166792277]},"#2244bb":{"lch":[34.1110146972578292,92.183713113584,262.084105297610279],"luv":[34.1110146972578292,-12.6954785449376448,-91.3053217940914266],"rgb":[0.133333333333333331,0.266666666666666663,0.733333333333333282],"xyz":[0.116953899505436887,0.0806168125468058883,0.479550116288806449],"hpluv":[262.084105297610279,342.924793116778346,34.1110146972578292],"hsluv":[262.084105297610279,88.8814901896574128,34.1110146972578292]},"#2244cc":{"lch":[35.6614866183058439,102.915147630289923,262.812952152813068],"luv":[35.6614866183058439,-12.875606592693158,-102.106544191029045],"rgb":[0.133333333333333331,0.266666666666666663,0.8],"xyz":[0.136246274949158641,0.0883337627242946899,0.58115662695907655],"hpluv":[262.812952152813068,366.200711918304478,35.6614866183058439],"hsluv":[262.812952152813068,90.4075680541016453,35.6614866183058439]},"#2244dd":{"lch":[37.2877389569632456,113.32806156453313,263.353781276912969],"luv":[37.2877389569632456,-13.1164125913708496,-112.566465959927598],"rgb":[0.133333333333333331,0.266666666666666663,0.866666666666666696],"xyz":[0.157764600499792185,0.0969410929445482239,0.694486474859082548],"hpluv":[263.353781276912969,385.665452845521429,37.2877389569632456],"hsluv":[263.353781276912969,91.6811227311716408,37.2877389569632456]},"#2244ee":{"lch":[38.9787575249373575,123.477944203962494,263.76603971616106],"luv":[38.9787575249373575,-13.4082956886680194,-122.74779147325674],"rgb":[0.133333333333333331,0.266666666666666663,0.933333333333333348],"xyz":[0.181576780765966922,0.106465965051018269,0.819897290927605771],"hpluv":[263.76603971616106,401.976556214066079,38.9787575249373575],"hsluv":[263.76603971616106,92.7467647141115208,38.9787575249373575]},"#2244ff":{"lch":[40.7246816385265333,133.410810959437413,264.087324287658078],"luv":[40.7246816385265333,-13.7429938745542355,-132.701072340123574],"rgb":[0.133333333333333331,0.266666666666666663,1],"xyz":[0.207747829175798315,0.116934384414950965,0.957731479219387616],"hpluv":[264.087324287658078,415.692943868353552,40.7246816385265333],"hsluv":[264.087324287658078,99.9999999999994174,40.7246816385265333]},"#77dd00":{"lch":[79.4046595803128525,106.500737968556749,117.886764510297155],"luv":[79.4046595803128525,-49.8131268255250319,94.1332012826045457],"rgb":[0.466666666666666674,0.866666666666666696,0],"xyz":[0.3346289810403,0.556332960666096,0.089750449547472369],"hpluv":[117.886764510297155,213.048114553231642,79.4046595803128525],"hsluv":[117.886764510297155,100.000000000002288,79.4046595803128525]},"#77dd11":{"lch":[79.427785829561941,105.558219679332908,118.124490997004173],"luv":[79.427785829561941,-49.7589732732473422,93.0944806133132801],"rgb":[0.466666666666666674,0.866666666666666696,0.0666666666666666657],"xyz":[0.335640646539937082,0.556737626865951,0.095078554512228],"hpluv":[118.124490997004173,211.44368721760469,79.427785829561941],"hsluv":[118.124490997004173,98.7993418471683498,79.427785829561941]},"#77dd22":{"lch":[79.4706261070012658,103.827566318990023,118.57359388187615],"luv":[79.4706261070012658,-49.6593926395600249,91.1817319993116],"rgb":[0.466666666666666674,0.866666666666666696,0.133333333333333331],"xyz":[0.337516004678414139,0.557487770121341764,0.104955440708207198],"hpluv":[118.57359388187615,208.49071074424171,79.4706261070012658],"hsluv":[118.57359388187615,96.5898934808467,79.4706261070012658]},"#77dd33":{"lch":[79.5410783702752582,101.02472031386101,119.337697767432388],"luv":[79.5410783702752582,-49.4976803830995067,88.0680063995226874],"rgb":[0.466666666666666674,0.866666666666666696,0.2],"xyz":[0.340603755410871845,0.55872287041432489,0.121217594565818348],"hpluv":[119.337697767432388,203.689012727245881,79.5410783702752582],"hsluv":[119.337697767432388,92.9973786049096276,79.5410783702752582]},"#77dd44":{"lch":[79.6426121547728485,97.0801788178617073,120.498016398630853],"luv":[79.6426121547728485,-49.2690191092090188,83.6488187323909642],"rgb":[0.466666666666666674,0.866666666666666696,0.266666666666666663],"xyz":[0.34506175065509076,0.560506068512012456,0.144696369518705],"hpluv":[120.498016398630853,196.890303230407255,79.6426121547728485],"hsluv":[120.498016398630853,87.9077551580221126,79.6426121547728485]},"#77dd55":{"lch":[79.7780740091910729,91.9929116678805912,122.163902680224],"luv":[79.7780740091910729,-48.9717875622404577,77.8746417012192325],"rgb":[0.466666666666666674,0.866666666666666696,0.333333333333333315],"xyz":[0.351024164694452745,0.562891034127757206,0.176098416792678902],"hpluv":[122.163902680224,188.049297266091,79.7780740091910729],"hsluv":[122.163902680224,81.2740392578912889,79.7780740091910729]},"#77dd66":{"lch":[79.9498479155991788,85.8342168020908645,124.492086237753256],"luv":[79.9498479155991788,-48.6072648253697466,70.7449403153661],"rgb":[0.466666666666666674,0.866666666666666696,0.4],"xyz":[0.35860916046796093,0.565925032437160525,0.216046061199822836],"hpluv":[124.492086237753256,177.233761467474238,79.9498479155991788],"hsluv":[124.492086237753256,73.1095665987697174,79.9498479155991788]},"#77dd77":{"lch":[80.1599403321921,78.7586110849663896,127.715012949239352],"luv":[80.1599403321921,-48.1793469594900188,62.3030444407821093],"rgb":[0.466666666666666674,0.866666666666666696,0.466666666666666674],"xyz":[0.367923173488162836,0.569650637645241376,0.265099863106220746],"hpluv":[127.715012949239352,164.652954432832814,80.1599403321921],"hsluv":[127.715012949239352,63.4818861677236654,80.1599403321921]},"#77dd88":{"lch":[80.4100305893493754,71.0258644695610855,132.183293417803185],"luv":[80.4100305893493754,-47.69419139775556,52.6301959958607597],"rgb":[0.466666666666666674,0.866666666666666696,0.533333333333333326],"xyz":[0.379063590590106636,0.574106804486018918,0.323772726509792941],"hpluv":[132.183293417803185,150.716476916292407,80.4100305893493754],"hsluv":[132.183293417803185,64.4129914780986184,80.4100305893493754]},"#77dd99":{"lch":[80.7015034668449829,63.0436351039456042,138.421724913218469],"luv":[80.7015034668449829,-47.1597772740100254,41.838443261971527],"rgb":[0.466666666666666674,0.866666666666666696,0.6],"xyz":[0.392120554699179391,0.579329590129648131,0.39253940415091082],"hpluv":[138.421724913218469,136.149613262507529,80.7015034668449829],"hsluv":[138.421724913218469,65.4455974050235909,80.7015034668449829]},"#77ddaa":{"lch":[81.0354720941451916,55.4433276111880673,147.164903113494319],"luv":[81.0354720941451916,-46.5854032558204594,30.0626475895607292],"rgb":[0.466666666666666674,0.866666666666666696,0.66666666666666663],"xyz":[0.407178247664431892,0.585352667315749198,0.471843253767909421],"hpluv":[147.164903113494319,122.204418643173668,81.0354720941451916],"hsluv":[147.164903113494319,66.5644374268903505,81.0354720941451916]},"#77ddbb":{"lch":[81.4127955433910415,49.1817473647014651,159.215751775487576],"luv":[81.4127955433910415,-45.9811599326092804,17.452140415923953],"rgb":[0.466666666666666674,0.866666666666666696,0.733333333333333282],"xyz":[0.424315839771768566,0.592207704158684,0.562101238866551167],"hpluv":[159.215751775487576,110.971854928909636,81.4127955433910415],"hsluv":[159.215751775487576,67.7527973989238461,81.4127955433910415]},"#77ddcc":{"lch":[81.8340936239464298,45.5480287935550479,174.756411210455894],"luv":[81.8340936239464298,-45.3574175840417197,4.16264304083146897],"rgb":[0.466666666666666674,0.866666666666666696,0.8],"xyz":[0.44360821521549032,0.599924654336172813,0.663707749536821323],"hpluv":[174.756411210455894,105.54602277980743,81.8340936239464298],"hsluv":[174.756411210455894,68.9933910523739371,81.8340936239464298]},"#77dddd":{"lch":[82.299760373596115,45.7538051586653296,192.177050630060847],"luv":[82.299760373596115,-44.7243656053231931,-9.65100034703627],"rgb":[0.466666666666666674,0.866666666666666696,0.866666666666666696],"xyz":[0.465126540766123808,0.60853198455642632,0.777037597436827321],"hpluv":[192.177050630060847,109.256318691998032,82.299760373596115],"hsluv":[192.177050630060847,70.2691471280789557,82.299760373596115]},"#77ddee":{"lch":[82.8099771424448221,50.1244355238275574,208.400620203695752],"luv":[82.8099771424448221,-44.0916301090396274,-23.8408722766172367],"rgb":[0.466666666666666674,0.866666666666666696,0.933333333333333348],"xyz":[0.488938721032298573,0.618056856662896337,0.902448413505350544],"hpluv":[208.400620203695752,123.794681382199428,82.8099771424448221],"hsluv":[208.400620203695752,71.5638635335918,82.8099771424448221]},"#77ddff":{"lch":[83.364725787715372,57.9146258331384161,221.361714592462022],"luv":[83.364725787715372,-43.4679842885535521,-38.2705921992655504],"rgb":[0.466666666666666674,0.866666666666666696,1],"xyz":[0.515109769442129939,0.628525276026829061,1.0402826017971325],"hpluv":[221.361714592462022,148.517135389694232,83.364725787715372],"hsluv":[221.361714592462022,99.9999999999953531,83.364725787715372]},"#225500":{"lch":[31.4325909084541877,43.9203091385023825,121.065637009975248],"luv":[31.4325909084541877,-22.6637443991712324,37.6211143459447541],"rgb":[0.133333333333333331,0.333333333333333315,0],"xyz":[0.0390802974883142848,0.0683685824829102229,0.0111370792078428239],"hpluv":[121.065637009975248,177.306450001223254,31.4325909084541877],"hsluv":[121.065637009975248,100.000000000002373,31.4325909084541877]},"#225511":{"lch":[31.5259896590935043,41.027632513747335,123.178290947815412],"luv":[31.5259896590935043,-22.452213479362328,34.3389682366875704],"rgb":[0.133333333333333331,0.333333333333333315,0.0666666666666666657],"xyz":[0.04009196298795141,0.0687732486827650757,0.0164651841725984571],"hpluv":[123.178290947815412,165.138012967735222,31.5259896590935043],"hsluv":[123.178290947815412,90.3912533003173877,31.5259896590935043]},"#225522":{"lch":[31.6981615382414716,36.1013694166085486,127.715012949239792],"luv":[31.6981615382414716,-22.0844473877159331,28.5584673491706482],"rgb":[0.133333333333333331,0.333333333333333315,0.133333333333333331],"xyz":[0.0419673211264284252,0.0695233919381558901,0.0263420703685776497],"hpluv":[127.715012949239792,144.520324593974209,31.6981615382414716],"hsluv":[127.715012949239792,73.5866039174798345,31.6981615382414716]},"#225533":{"lch":[31.9789617713411829,29.2625646618711706,137.400330584271074],"luv":[31.9789617713411829,-21.5402028917408828,19.8070025489176231],"rgb":[0.133333333333333331,0.333333333333333315,0.2],"xyz":[0.0450550718588861657,0.070758492231139,0.0426042242261888],"hpluv":[137.400330584271074,116.114739730974975,31.9789617713411829],"hsluv":[137.400330584271074,75.0932106461487,31.9789617713411829]},"#225544":{"lch":[32.3786649626227785,22.5648709259736577,157.632626155133437],"luv":[32.3786649626227785,-20.8671549807805796,8.58692278490586247],"rgb":[0.133333333333333331,0.333333333333333315,0.266666666666666663],"xyz":[0.0495130671031050462,0.072541690328826583,0.0660829991790754384],"hpluv":[157.632626155133437,88.4327727432137465,32.3786649626227785],"hsluv":[157.632626155133437,76.9882679005547459,32.3786649626227785]},"#225555":{"lch":[32.9031430542149863,20.5945867127178737,192.177050630061132],"luv":[32.9031430542149863,-20.1312179923833199,-4.34408379417313384],"rgb":[0.133333333333333331,0.333333333333333315,0.333333333333333315],"xyz":[0.0554754811424670383,0.0749266559445714159,0.0974850464530493399],"hpluv":[192.177050630061132,79.4245973683706268,32.9031430542149863],"hsluv":[192.177050630061132,79.1137061933639245,32.9031430542149863]},"#225566":{"lch":[33.5545056011551,26.6006796322727546,223.177731373198952],"luv":[33.5545056011551,-19.398136743372234,-18.2018803364993715],"rgb":[0.133333333333333331,0.333333333333333315,0.4],"xyz":[0.0630604769159752165,0.0779606542539747344,0.137432690860193302],"hpluv":[223.177731373198952,100.596116474312993,33.5545056011551],"hsluv":[223.177731373198952,81.3097794801720113,33.5545056011551]},"#225577":{"lch":[34.3316296590174,37.3644949384619807,239.932022094073261],"luv":[34.3316296590174,-18.7206257951117045,-32.3364137134245127],"rgb":[0.133333333333333331,0.333333333333333315,0.466666666666666674],"xyz":[0.0723744899361771221,0.0816862594620555438,0.186486492766591211],"hpluv":[239.932022094073261,138.103289638438355,34.3316296590174],"hsluv":[239.932022094073261,83.4469752602442298,34.3316296590174]},"#225588":{"lch":[35.230707776085,49.7211482448765594,248.610781811292384],"luv":[35.230707776085,-18.1333810040152876,-46.2965773697387775],"rgb":[0.133333333333333331,0.333333333333333315,0.533333333333333326],"xyz":[0.0835149070381209502,0.0861424263028331416,0.245159356170163378],"hpluv":[248.610781811292384,179.084957393431893,35.230707776085],"hsluv":[248.610781811292384,85.4385601139613158,35.230707776085]},"#225599":{"lch":[36.2458273864096512,62.3718238545276336,253.557833057747018],"luv":[36.2458273864096512,-17.6541819100499602,-59.8211858126123],"rgb":[0.133333333333333331,0.333333333333333315,0.6],"xyz":[0.0965718711471936775,0.0913652119464623,0.313926033811281313],"hpluv":[253.557833057747018,218.35832406203005,36.2458273864096512],"hsluv":[253.557833057747018,87.2381583586425791,36.2458273864096512]},"#2255aa":{"lch":[37.3695533294905928,74.8190204360075,256.640324292617947],"luv":[37.3695533294905928,-17.2879233745104131,-72.7943234352841841],"rgb":[0.133333333333333331,0.333333333333333315,0.66666666666666663],"xyz":[0.111629564112446206,0.0973882891325634,0.393229883428279914],"hpluv":[256.640324292617947,254.058329165629146,37.3695533294905928],"hsluv":[256.640324292617947,88.8301308270208807,37.3695533294905928]},"#2255bb":{"lch":[38.5934754222231291,86.8805221786483,258.695157685582501],"luv":[38.5934754222231291,-17.0311035792378,-85.1948745225196831],"rgb":[0.133333333333333331,0.333333333333333315,0.733333333333333282],"xyz":[0.128767156219782852,0.104243325975498152,0.48348786852692166],"hpluv":[258.695157685582501,285.658965815982469,38.5934754222231291],"hsluv":[258.695157685582501,90.2188193496234874,38.5934754222231291]},"#2255cc":{"lch":[39.9086891196534097,98.5112685419302,260.136263381096],"luv":[39.9086891196534097,-16.8755295039118458,-97.0550695930042],"rgb":[0.133333333333333331,0.333333333333333315,0.8],"xyz":[0.148059531663504607,0.111960276152986954,0.585094379197191761],"hpluv":[260.136263381096,313.22597901471056,39.9086891196534097],"hsluv":[260.136263381096,91.4196885710314433,39.9086891196534097]},"#2255dd":{"lch":[41.3061900239028503,109.727240919989157,261.187210775965298],"luv":[41.3061900239028503,-16.8109176424286737,-108.431823962952976],"rgb":[0.133333333333333331,0.333333333333333315,0.866666666666666696],"xyz":[0.16957785721413815,0.120567606373240488,0.698424227097197758],"hpluv":[261.187210775965298,337.084394380702577,41.3061900239028503],"hsluv":[261.187210775965298,92.4531471705562353,41.3061900239028503]},"#2255ee":{"lch":[42.7771763125841602,120.569176865205208,261.977669343247612],"luv":[42.7771763125841602,-16.8265186863462972,-119.389256965822398],"rgb":[0.133333333333333331,0.333333333333333315,0.933333333333333348],"xyz":[0.193390037480312887,0.130092478479710533,0.823835043165721],"hpluv":[261.977669343247612,357.654347674158601,42.7771763125841602],"hsluv":[261.977669343247612,93.3407272081067,42.7771763125841602]},"#2255ff":{"lch":[44.3132637322964129,131.084767922007643,262.587267096581058],"luv":[44.3132637322964129,-16.9120289519133,-129.989229007238322],"rgb":[0.133333333333333331,0.333333333333333315,1],"xyz":[0.219561085890144281,0.140560897843643229,0.961669231457502827],"hpluv":[262.587267096581058,375.368494421854962,44.3132637322964129],"hsluv":[262.587267096581058,99.9999999999993463,44.3132637322964129]},"#77ee00":{"lch":[84.5193058633960703,115.647601499010833,119.483871035599748],"luv":[84.5193058633960703,-56.9192667804191,100.670575649757225],"rgb":[0.466666666666666674,0.933333333333333348,0],"xyz":[0.381807757380814794,0.650690513347127,0.105476708327643554],"hpluv":[119.483871035599748,321.869538605652735,84.5193058633960703],"hsluv":[119.483871035599748,100.000000000002359,84.5193058633960703]},"#77ee11":{"lch":[84.5401392884337355,114.795422022346642,119.691827475064969],"luv":[84.5401392884337355,-56.862163274863434,99.7230329712822083],"rgb":[0.466666666666666674,0.933333333333333348,0.0666666666666666657],"xyz":[0.382819422880451898,0.651095179546981928,0.11080481329239919],"hpluv":[119.691827475064969,319.985367790437692,84.5401392884337355],"hsluv":[119.691827475064969,98.9722780394741477,84.5401392884337355]},"#77ee22":{"lch":[84.5787360835130499,113.228793274865538,120.083373039169615],"luv":[84.5787360835130499,-56.7570256545281637,97.9765260934141651],"rgb":[0.466666666666666674,0.933333333333333348,0.133333333333333331],"xyz":[0.384694781018928955,0.651845322802372729,0.120681699488378383],"hpluv":[120.083373039169615,316.512949618186383,84.5787360835130499],"hsluv":[120.083373039169615,97.0790709390529,84.5787360835130499]},"#77ee33":{"lch":[84.6422206992536275,110.686316006337648,120.745647293955486],"luv":[84.6422206992536275,-56.585921413754825,95.1288286946244313],"rgb":[0.466666666666666674,0.933333333333333348,0.2],"xyz":[0.387782531751386661,0.653080423095355855,0.136943853345989519],"hpluv":[120.745647293955486,310.853610471304819,84.6422206992536275],"hsluv":[120.745647293955486,93.9952250088888093,84.6422206992536275]},"#77ee44":{"lch":[84.7337366993681513,107.096480548503891,121.742158736883837],"luv":[84.7337366993681513,-56.3431952848259598,91.0774422728923412],"rgb":[0.466666666666666674,0.933333333333333348,0.266666666666666663],"xyz":[0.392240526995605576,0.654863621193043421,0.160422628298876158],"hpluv":[121.742158736883837,302.811644310583176,84.7337366993681513],"hsluv":[121.742158736883837,89.6144795711786628,84.7337366993681513]},"#77ee55":{"lch":[84.8558768548969766,102.444399932600575,123.154228511336783],"luv":[84.8558768548969766,-56.0262879596216621,85.7666026785261266],"rgb":[0.466666666666666674,0.933333333333333348,0.333333333333333315],"xyz":[0.398202941034967561,0.657248586808788171,0.191824675572850073],"hpluv":[123.154228511336783,292.298881153811294,84.8558768548969766],"hsluv":[123.154228511336783,83.883891015311761,84.8558768548969766]},"#77ee66":{"lch":[85.0108293450033159,96.7735040486586,125.092887734820366],"luv":[85.0108293450033159,-55.6354444449268186,79.1821217654036],"rgb":[0.466666666666666674,0.933333333333333348,0.4],"xyz":[0.405787936808475747,0.66028258511819149,0.231772319979994035],"hpluv":[125.092887734820366,279.341716913636219,85.0108293450033159],"hsluv":[125.092887734820366,76.7984153057879411,85.0108293450033159]},"#77ee77":{"lch":[85.2004556710930814,90.1918871908529667,127.71501294923965],"luv":[85.2004556710930814,-55.1734745704367882,71.3474892261312306],"rgb":[0.466666666666666674,0.933333333333333348,0.466666666666666674],"xyz":[0.415101949828677652,0.664008190326272341,0.280826121886391944],"hpluv":[127.71501294923965,264.105357222364148,85.2004556710930814],"hsluv":[127.71501294923965,68.3966317942099522,85.2004556710930814]},"#77ee88":{"lch":[85.4263369442757323,82.8846309918514521,131.246169999264879],"luv":[85.4263369442757323,-54.6454688778224167,62.3196179848555],"rgb":[0.466666666666666674,0.933333333333333348,0.533333333333333326],"xyz":[0.426242366930621452,0.668464357167049883,0.339498985289964139],"hpluv":[131.246169999264879,246.94310788397641,85.4263369442757323],"hsluv":[131.246169999264879,69.0963798671032379,85.4263369442757323]},"#77ee99":{"lch":[85.6898036798217,75.1362836057233,136.010896750223054],"luv":[85.6898036798217,-54.0584447513185395,52.1837682153016473],"rgb":[0.466666666666666674,0.933333333333333348,0.6],"xyz":[0.439299331039694207,0.673687142810679096,0.408265662931082],"hpluv":[136.010896750223054,228.489214549916312,85.6898036798217],"hsluv":[136.010896750223054,69.8780652000076827,85.6898036798217]},"#77eeaa":{"lch":[85.9919564191548602,67.3699388554866232,142.461966648640384],"luv":[85.9919564191548602,-53.4209300451477489,41.0476904892764551],"rgb":[0.466666666666666674,0.933333333333333348,0.66666666666666663],"xyz":[0.454357024004946708,0.679710219996780163,0.487569512548080619],"hpluv":[142.461966648640384,209.826142071523691,85.9919564191548602],"hsluv":[142.461966648640384,70.7318226594993575,85.9919564191548602]},"#77eebb":{"lch":[86.3336811163097337,60.2064759054885243,151.166773543866697],"luv":[86.3336811163097337,-52.7425080063862524,29.0352818163428843],"rgb":[0.466666666666666674,0.933333333333333348,0.733333333333333282],"xyz":[0.471494616112283382,0.686565256839714921,0.577827497646722366],"hpluv":[151.166773543866697,192.758378827545073,86.3336811163097337],"hsluv":[151.166773543866697,71.6464628016145895,86.3336811163097337]},"#77eecc":{"lch":[86.7156615657761449,54.5207620102438284,162.626180625161169],"luv":[86.7156615657761449,-52.0333543078463094,16.2801575438255028],"rgb":[0.466666666666666674,0.933333333333333348,0.8],"xyz":[0.490786991556005137,0.694282207017203778,0.679434008316992522],"hpluv":[162.626180625161169,180.150974339718545,86.7156615657761449],"hsluv":[162.626180625161169,72.6100300694190111,86.7156615657761449]},"#77eedd":{"lch":[87.1383902516757445,51.3868015721907483,176.742975614533037],"luv":[87.1383902516757445,-51.3037971188162771,2.91955082350760353],"rgb":[0.466666666666666674,0.933333333333333348,0.866666666666666696],"xyz":[0.512305317106638625,0.702889537237457285,0.792763856216998519],"hpluv":[176.742975614533037,175.997429168902841,87.1383902516757445],"hsluv":[176.742975614533037,73.6103328445444305,87.1383902516757445]},"#77eeee":{"lch":[87.6021784736708327,51.7277775307036,192.177050630061075],"luv":[87.6021784736708327,-50.5639263491039941,-10.9111099540033418],"rgb":[0.466666666666666674,0.933333333333333348,0.933333333333333348],"xyz":[0.536117497372813334,0.712414409343927302,0.918174672285521742],"hpluv":[192.177050630061075,184.503896016801804,87.6021784736708327],"hsluv":[192.177050630061075,74.6354143053272594,87.6021784736708327]},"#77eeff":{"lch":[88.107166277409533,55.7808213308350673,206.722210113893169],"luv":[88.107166277409533,-49.8232704905303336,-25.0826981397535107],"rgb":[0.466666666666666674,0.933333333333333348,1],"xyz":[0.562288545782644755,0.72288282870786,1.05600886057730348],"hpluv":[206.722210113893169,208.278116369071,88.107166277409533],"hsluv":[206.722210113893169,99.9999999999928804,88.107166277409533]},"#226600":{"lch":[37.5582057574881532,54.1200869321592961,123.236537452327113],"luv":[37.5582057574881532,-29.6630419039077431,45.2668505040000824],"rgb":[0.133333333333333331,0.4,0],"xyz":[0.0541083551941607538,0.0984246978946035633,0.0161464317764581713],"hpluv":[123.236537452327113,182.849162381267462,37.5582057574881532],"hsluv":[123.236537452327113,100.000000000002288,37.5582057574881532]},"#226611":{"lch":[37.6315056544729529,51.7196180195473119,124.710513292064419],"luv":[37.6315056544729529,-29.4507212427394194,42.5155725160833242],"rgb":[0.133333333333333331,0.4,0.0666666666666666657],"xyz":[0.0551200206937978721,0.0988293640944584162,0.0214745367412138],"hpluv":[124.710513292064419,174.398618448608886,37.6315056544729529],"hsluv":[124.710513292064419,93.2756924270169918,37.6315056544729529]},"#226622":{"lch":[37.7668566222969062,47.5272711912458519,127.715012949240034],"luv":[37.7668566222969062,-29.0740638670039928,37.5970785719263176],"rgb":[0.133333333333333331,0.4,0.133333333333333331],"xyz":[0.0569953788322748942,0.0995795073498492306,0.031351422937193],"hpluv":[127.715012949240034,159.687663587322874,37.7668566222969062],"hsluv":[127.715012949240034,81.309482828258183,37.7668566222969062]},"#226633":{"lch":[37.9882367851431084,41.3581300307957349,133.555287588173542],"luv":[37.9882367851431084,-28.497993426715972,29.9726423642471254],"rgb":[0.133333333333333331,0.4,0.2],"xyz":[0.0600831295647326347,0.100814607642832343,0.0476135767948041438],"hpluv":[133.555287588173542,138.150062101989391,37.9882367851431084],"hsluv":[133.555287588173542,82.0766642375396742,37.9882367851431084]},"#226644":{"lch":[38.3046909892153806,34.1393686276432291,144.379277801066621],"luv":[38.3046909892153806,-27.7515572052733894,19.8833488873617412],"rgb":[0.133333333333333331,0.4,0.266666666666666663],"xyz":[0.0645411248089515083,0.102597805740519923,0.0710923517476907824],"hpluv":[144.379277801066621,113.094855071532635,38.3046909892153806],"hsluv":[144.379277801066621,83.0794073538424414,38.3046909892153806]},"#226655":{"lch":[38.7222568592555234,28.0005039743963025,163.778220785970291],"luv":[38.7222568592555234,-26.8857357715149732,7.82211191715276755],"rgb":[0.133333333333333331,0.4,0.333333333333333315],"xyz":[0.0705035388483135073,0.104982771356264756,0.102494399021664684],"hpluv":[163.778220785970291,91.7581213405574516,38.7222568592555234],"hsluv":[163.778220785970291,84.2573678500350809,38.7222568592555234]},"#226666":{"lch":[39.2444156655659739,26.5583838540848376,192.177050630061103],"luv":[39.2444156655659739,-25.9608324434988,-5.60204710632589631],"rgb":[0.133333333333333331,0.4,0.4],"xyz":[0.0780885346218216786,0.108016769665668075,0.142442043428808646],"hpluv":[192.177050630061103,85.8742788705857691,39.2444156655659739],"hsluv":[192.177050630061103,85.5381417500271652,39.2444156655659739]},"#226677":{"lch":[39.8723950361637449,31.9118423017057466,218.325872967111877],"luv":[39.8723950361637449,-25.034725973132506,-19.7895976345933065],"rgb":[0.133333333333333331,0.4,0.466666666666666674],"xyz":[0.0874025476420236,0.111742374873748884,0.191495845335206555],"hpluv":[218.325872967111877,101.559108573692257,39.8723950361637449],"hsluv":[218.325872967111877,86.8516914397336137,39.8723950361637449]},"#226688":{"lch":[40.6054458094686836,41.8995680003496318,234.7955790683381],"luv":[40.6054458094686836,-24.1549067561574908,-34.2361545477476241],"rgb":[0.133333333333333331,0.4,0.533333333333333326],"xyz":[0.0985429647439674261,0.116198541714526482,0.250168708738778722],"hpluv":[234.7955790683381,130.937664052949941,40.6054458094686836],"hsluv":[234.7955790683381,88.1401386465251733,40.6054458094686836]},"#226699":{"lch":[41.4411308461218226,53.8933488408681782,244.319142730286046],"luv":[41.4411308461218226,-23.3551142576285748,-48.5698639826860301],"rgb":[0.133333333333333331,0.4,0.6],"xyz":[0.11159992885304014,0.12142132735815564,0.318935386379896657],"hpluv":[244.319142730286046,165.022400136876769,41.4411308461218226],"hsluv":[244.319142730286046,89.3619383181549267,41.4411308461218226]},"#2266aa":{"lch":[42.3756299296545578,66.5269840788925251,250.089735516440328],"luv":[42.3756299296545578,-22.655631138578233,-62.5504755245386193],"rgb":[0.133333333333333331,0.4,0.66666666666666663],"xyz":[0.126657621818292682,0.127444404544256734,0.398239235996895258],"hpluv":[250.089735516440328,199.214522587526545,42.3756299296545578],"hsluv":[250.089735516440328,90.4915899210210597,42.3756299296545578]},"#2266bb":{"lch":[43.404050412459263,79.1834510223872599,253.819475134999237],"luv":[43.404050412459263,-22.0656311263342282,-76.0468726432017803],"rgb":[0.133333333333333331,0.4,0.733333333333333282],"xyz":[0.143795213925629328,0.134299441387191493,0.488497221095537],"hpluv":[253.819475134999237,231.496000814517572,43.404050412459263],"hsluv":[253.819475134999237,91.5168425909476895,43.404050412459263]},"#2266cc":{"lch":[44.520728505208055,91.5877705166709,256.367788484306971],"luv":[44.520728505208055,-21.5861851194902563,-89.0076194502553193],"rgb":[0.133333333333333331,0.4,0.8],"xyz":[0.163087589369351083,0.142016391564680294,0.590103731765807105],"hpluv":[256.367788484306971,261.044502527732277,44.520728505208055],"hsluv":[256.367788484306971,92.43509558526695,44.520728505208055]},"#2266dd":{"lch":[45.7195068588792211,103.627896901795907,258.1878164043369],"luv":[45.7195068588792211,-21.2130654589597789,-101.433460308337743],"rgb":[0.133333333333333331,0.4,0.866666666666666696],"xyz":[0.184605914919984626,0.150623721784933828,0.703433579665813102],"hpluv":[258.1878164043369,287.616948003961852,45.7195068588792211],"hsluv":[258.1878164043369,93.2500413525610696,45.7195068588792211]},"#2266ee":{"lch":[46.9939777237187144,115.273293340910215,259.534328145616598],"luv":[46.9939777237187144,-20.9389771714321675,-113.35559709460216],"rgb":[0.133333333333333331,0.4,0.933333333333333348],"xyz":[0.208418095186159336,0.160148593891403873,0.828844395734336326],"hpluv":[259.534328145616598,311.261797341727515,46.9939777237187144],"hsluv":[259.534328145616598,93.969002023907521,46.9939777237187144]},"#2266ff":{"lch":[48.3376856243364728,126.534150990995641,260.559220542156197],"luv":[48.3376856243364728,-20.75515631493003,-124.820330288598825],"rgb":[0.133333333333333331,0.4,1],"xyz":[0.234589143595990757,0.170617013255336569,0.966678584026118171],"hpluv":[260.559220542156197,332.170629177470857,48.3376856243364728],"hsluv":[260.559220542156197,99.9999999999992184,48.3376856243364728]},"#77ff00":{"lch":[89.5984732569245921,124.632639236881928,120.733702851753719],"luv":[89.5984732569245921,-63.6933378884713406,107.128210438594465],"rgb":[0.466666666666666674,1,0],"xyz":[0.433660129810488626,0.754395258206476127,0.122760832470867665],"hpluv":[120.733702851753719,538.628162219261071,89.5984732569245921],"hsluv":[120.733702851753719,100.000000000002359,89.5984732569245921]},"#77ff11":{"lch":[89.6173512893739144,123.857431845856226,120.915842858481739],"luv":[89.6173512893739144,-63.635285050623331,106.260123846986147],"rgb":[0.466666666666666674,1,0.0666666666666666657],"xyz":[0.43467179531012573,0.754799924406331,0.128088937435623301],"hpluv":[120.915842858481739,536.333532616984598,89.6173512893739144],"hsluv":[120.915842858481739,99.9999999999912461,89.6173512893739144]},"#77ff22":{"lch":[89.6523282897647107,122.430860002153082,121.257903913559275],"luv":[89.6523282897647107,-63.5282943614823736,104.658832863679763],"rgb":[0.466666666666666674,1,0.133333333333333331],"xyz":[0.436547153448602787,0.755550067661721836,0.13796582363160248],"hpluv":[121.257903913559275,532.099457877515,89.6523282897647107],"hsluv":[121.257903913559275,99.9999999999912319,89.6523282897647107]},"#77ff33":{"lch":[89.7098670229763684,120.111567958755899,121.833904144252088],"luv":[89.7098670229763684,-63.3538816193187557,102.044472860004433],"rgb":[0.466666666666666674,1,0.2],"xyz":[0.439634904181060493,0.756785167954705,0.15422797748921363],"hpluv":[121.833904144252088,525.184015431200237,89.7098670229763684],"hsluv":[121.833904144252088,99.9999999999911893,89.7098670229763684]},"#77ff44":{"lch":[89.7928292607091834,116.827732221897932,122.694629127971339],"luv":[89.7928292607091834,-63.1058355300939766,98.317712230097257],"rgb":[0.466666666666666674,1,0.266666666666666663],"xyz":[0.444092899425279408,0.758568366052392529,0.177706752442100269],"hpluv":[122.694629127971339,515.324540814372313,89.7928292607091834],"hsluv":[122.694629127971339,99.9999999999912319,89.7928292607091834]},"#77ff55":{"lch":[89.9035853929870683,112.554947355203538,123.902387884937639],"luv":[89.9035853929870683,-62.7808648215699492,93.4193726503684161],"rgb":[0.466666666666666674,1,0.333333333333333315],"xyz":[0.450055313464641393,0.760953331668137278,0.209108799716074184],"hpluv":[123.902387884937639,502.374863630046946,89.9035853929870683],"hsluv":[123.902387884937639,99.9999999999911466,89.9035853929870683]},"#77ff66":{"lch":[90.0441481999633169,107.316590618570714,125.538864396596409],"luv":[90.0441481999633169,-62.3783098318914213,87.3258099562234662],"rgb":[0.466666666666666674,1,0.4],"xyz":[0.457640309238149579,0.763987329977540597,0.249056444123218146],"hpluv":[125.538864396596409,486.310350268178581,90.0441481999633169],"hsluv":[125.538864396596409,99.9999999999909193,90.0441481999633169]},"#77ff77":{"lch":[90.2162444924982,101.18761180958829,127.715012949239778],"luv":[90.2162444924982,-61.8999369112410065,80.0458031011764746],"rgb":[0.466666666666666674,1,0.466666666666666674],"xyz":[0.466954322258351484,0.767712935185621448,0.298110246029616055],"hpluv":[127.715012949239778,467.252180695244249,90.2162444924982],"hsluv":[127.715012949239778,99.9999999999908908,90.2162444924982]},"#77ff88":{"lch":[90.4213578195287084,94.3018691223763312,130.584388318929172],"luv":[90.4213578195287084,-61.3497133683486666,71.6174223886566352],"rgb":[0.466666666666666674,1,0.533333333333333326],"xyz":[0.478094739360295284,0.772169102026399,0.35678310943318825],"hpluv":[130.584388318929172,445.517691352744919,90.4213578195287084],"hsluv":[130.584388318929172,99.999999999990834,90.4213578195287084]},"#77ff99":{"lch":[90.660755936805927,86.8649116623181,134.360625617567337],"luv":[90.660755936805927,-60.7335297134313734,62.1043577106315],"rgb":[0.466666666666666674,1,0.6],"xyz":[0.491151703469368,0.777391887670028203,0.425549787074306129],"hpluv":[134.360625617567337,421.714412879972315,90.660755936805927],"hsluv":[134.360625617567337,99.9999999999904645,90.660755936805927]},"#77ffaa":{"lch":[90.9355096576679927,79.1755179707932513,139.336843070371486],"luv":[90.9355096576679927,-60.0588662825700368,51.5916197341755947],"rgb":[0.466666666666666674,1,0.66666666666666663],"xyz":[0.506209396434620595,0.78341496485612927,0.504853636691304786],"hpluv":[139.336843070371486,396.909453229520182,90.9355096576679927],"hsluv":[139.336843070371486,99.9999999999902371,90.9355096576679927]},"#77ffbb":{"lch":[91.2465066485729466,71.6593730134265599,145.894485367843032],"luv":[91.2465066485729466,-59.3344173347434776,40.1807498713488229],"rgb":[0.466666666666666674,1,0.733333333333333282],"xyz":[0.523346988541957159,0.790270001699064,0.595111621789946477],"hpluv":[145.894485367843032,372.920765055848051,91.2465066485729466],"hsluv":[145.894485367843032,99.9999999999901803,91.2465066485729466]},"#77ffcc":{"lch":[91.5944622372901591,64.9119206982031329,154.461378490718602],"luv":[91.5944622372901591,-58.5696939322881676,27.9847887504604707],"rgb":[0.466666666666666674,1,0.8],"xyz":[0.542639363985678913,0.797986951876552886,0.696718132460216633],"hpluv":[154.461378490718602,352.767904832744364,91.5944622372901591],"hsluv":[154.461378490718602,99.999999999989825,91.5944622372901591]},"#77ffdd":{"lch":[91.9799284987297,59.7212008687906604,165.331177548206284],"luv":[91.9799284987297,-57.7746296637575298,15.1232933062250314],"rgb":[0.466666666666666674,1,0.866666666666666696],"xyz":[0.564157689536312512,0.806594282096806392,0.81004798036022263],"hpluv":[165.331177548206284,341.200809564626638,91.9799284987297],"hsluv":[165.331177548206284,99.9999999999894698,91.9799284987297]},"#77ffee":{"lch":[92.4033024177180238,56.9851054432815545,178.272694676027839],"luv":[92.4033024177180238,-56.9592119034112,1.71767916801026743],"rgb":[0.466666666666666674,1,0.933333333333333348],"xyz":[0.587969869802487222,0.816119154203276409,0.935458796428745853],"hpluv":[178.272694676027839,344.865805035808421,92.4033024177180238],"hsluv":[178.272694676027839,99.9999999999889582,92.4033024177180238]},"#77ffff":{"lch":[92.8648336399367196,57.4251975820971623,192.177050630061018],"luv":[92.8648336399367196,-56.1331570721439945,-12.112885471963672],"rgb":[0.466666666666666674,1,1],"xyz":[0.614140918212318643,0.826587573567209133,1.0732929847205277],"hpluv":[192.177050630061018,371.354821198433683,92.8648336399367196],"hsluv":[192.177050630061018,99.9999999999883187,92.8648336399367196]},"#227700":{"lch":[43.5559297152692295,63.9882214930525208,124.519604676885976],"luv":[43.5559297152692295,-36.2613695379953711,52.7219647687080268],"rgb":[0.133333333333333331,0.466666666666666674,0],"xyz":[0.0725620932475783825,0.13533217400143932,0.0222976777942638753],"hpluv":[124.519604676885976,186.419817132403381,43.5559297152692295],"hsluv":[124.519604676885976,100.000000000002331,43.5559297152692295]},"#227711":{"lch":[43.6152314308602769,61.9621092027414093,125.591738779589861],"luv":[43.6152314308602769,-36.0623023987336282,50.3866383335378174],"rgb":[0.133333333333333331,0.466666666666666674,0.0666666666666666657],"xyz":[0.0735737587472155,0.135736840201294173,0.0276257827590195085],"hpluv":[125.591738779589861,180.271610265320959,43.6152314308602769],"hsluv":[125.591738779589861,95.0867888092805345,43.6152314308602769]},"#227722":{"lch":[43.7248500006056062,58.3665782213362476,127.715012949240148],"luv":[43.7248500006056062,-35.7048401974777292,46.1716562377823081],"rgb":[0.133333333333333331,0.466666666666666674,0.133333333333333331],"xyz":[0.0754491168856925298,0.136486983456685,0.0375026689549987],"hpluv":[127.715012949240148,169.385110384242353,43.7248500006056062],"hsluv":[127.715012949240148,86.2472116803111248,43.7248500006056062]},"#227733":{"lch":[43.9044636679785,52.8998675233047422,131.63685913347058],"luv":[43.9044636679785,-35.1470498804547518,39.5358175416168365],"rgb":[0.133333333333333331,0.466666666666666674,0.2],"xyz":[0.0785368676181502634,0.137722083749668101,0.0537648228126098443],"hpluv":[131.63685913347058,152.892166506547881,43.9044636679785],"hsluv":[131.63685913347058,86.6671370230467204,43.9044636679785]},"#227744":{"lch":[44.1618994548856207,46.0187725021067919,138.382113458020484],"luv":[44.1618994548856207,-34.403210499316,30.5638107889119937],"rgb":[0.133333333333333331,0.466666666666666674,0.266666666666666663],"xyz":[0.082994862862369137,0.139505281847355694,0.0772435977654964828],"hpluv":[138.382113458020484,132.228969104156789,44.1618994548856207],"hsluv":[138.382113458020484,87.230083060842972,44.1618994548856207]},"#227755":{"lch":[44.5028042963196171,38.7961505601339098,149.7341572603126],"luv":[44.5028042963196171,-33.5080868304533865,19.5537570621958743],"rgb":[0.133333333333333331,0.466666666666666674,0.333333333333333315],"xyz":[0.088957276901731136,0.141890247463100527,0.108645645039470398],"hpluv":[149.7341572603126,110.621765171639552,44.5028042963196171],"hsluv":[149.7341572603126,87.9126674499387235,44.5028042963196171]},"#227766":{"lch":[44.9310046324235657,33.2418513983527504,167.948858330193701],"luv":[44.9310046324235657,-32.5092552143098246,6.94038974417402166],"rgb":[0.133333333333333331,0.466666666666666674,0.4],"xyz":[0.0965422726752393073,0.144924245772503818,0.148593289446614346],"hpluv":[167.948858330193701,93.8811500215461,44.9310046324235657],"hsluv":[167.948858330193701,88.6822605795820778,44.9310046324235657]},"#227777":{"lch":[45.4487163896678652,32.1827345016432886,192.177050630061217],"luv":[45.4487163896678652,-31.4586377906525136,-6.7884098550242733],"rgb":[0.133333333333333331,0.466666666666666674,0.466666666666666674],"xyz":[0.105856285695441227,0.148649850980584641,0.197647091353012255],"hpluv":[192.177050630061217,89.8546686552558,45.4487163896678652],"hsluv":[192.177050630061217,89.5029511213474,45.4487163896678652]},"#227788":{"lch":[46.0567093690380389,37.0457871068229778,214.840569513336618],"luv":[46.0567093690380389,-30.4051407329018595,-21.1640676472289648],"rgb":[0.133333333333333331,0.466666666666666674,0.533333333333333326],"xyz":[0.116996702797385055,0.153106017821362239,0.256319954756584423],"hpluv":[214.840569513336618,102.066975938242322,46.0567093690380389],"hsluv":[214.840569513336618,90.3407286635711415,46.0567093690380389]},"#227799":{"lch":[46.7544651468991219,46.3079141704010908,230.605362437026685],"luv":[46.7544651468991219,-29.3896969252833173,-35.7864308006991223],"rgb":[0.133333333333333331,0.466666666666666674,0.6],"xyz":[0.130053666906457754,0.158328803464991397,0.325086632397702358],"hpluv":[230.605362437026685,125.681528260779189,46.7544651468991219],"hsluv":[230.605362437026685,91.1669787694701,46.7544651468991219]},"#2277aa":{"lch":[47.5403420753171133,57.8256716053654429,240.536105931551504],"luv":[47.5403420753171133,-28.4430017925967782,-50.3468365007961935],"rgb":[0.133333333333333331,0.466666666666666674,0.66666666666666663],"xyz":[0.14511135987171031,0.164351880651092491,0.404390482014700958],"hpluv":[240.536105931551504,154.346828351852139,47.5403420753171133],"hsluv":[240.536105931551504,91.9600907928071365,47.5403420753171133]},"#2277bb":{"lch":[48.4117490016133161,70.2708193466387172,246.886175208709233],"luv":[48.4117490016133161,-27.5854458877112236,-64.6299561103370337],"rgb":[0.133333333333333331,0.466666666666666674,0.733333333333333282],"xyz":[0.162248951979046957,0.17120691749402725,0.494648467113342705],"hpluv":[246.886175208709233,184.188949495161438,48.4117490016133161],"hsluv":[246.886175208709233,92.7055270960754427,48.4117490016133161]},"#2277cc":{"lch":[49.3653235224945348,82.9601291275659634,251.131977113837081],"luv":[49.3653235224945348,-26.8284223951791141,-78.5023488607078],"rgb":[0.133333333333333331,0.466666666666666674,0.8],"xyz":[0.181541327422768684,0.178923867671516051,0.596254977783612805],"hpluv":[251.131977113837081,213.248879712122147,49.3653235224945348],"hsluv":[251.131977113837081,93.3949294454883301,49.3653235224945348]},"#2277dd":{"lch":[50.3971082370692898,95.5506012475210156,254.100456017762497],"luv":[50.3971082370692898,-26.1762366694964186,-91.8951687118820928],"rgb":[0.133333333333333331,0.466666666666666674,0.866666666666666696],"xyz":[0.203059652973402227,0.187531197891769585,0.709584825683618803],"hpluv":[254.100456017762497,240.584217083197558,50.3971082370692898],"hsluv":[254.100456017762497,94.0248036114472399,50.3971082370692898]},"#2277ee":{"lch":[51.5027182397596448,107.874744495734575,256.256689112315712],"luv":[51.5027182397596448,-25.6280715933506258,-104.786270314512635],"rgb":[0.133333333333333331,0.466666666666666674,0.933333333333333348],"xyz":[0.226871833239577,0.19705606999823963,0.834995641752142],"hpluv":[256.256689112315712,265.784074864026707,51.5027182397596448],"hsluv":[256.256689112315712,94.5951642228933594,51.5027182397596448]},"#2277ff":{"lch":[52.6774941409559432,119.859275592882611,257.873120264558906],"luv":[52.6774941409559432,-25.1797078347732324,-117.18459053564186],"rgb":[0.133333333333333331,0.466666666666666674,1],"xyz":[0.253042881649408358,0.207524489362172326,0.972829830043923871],"hpluv":[257.873120264558906,288.725982332353851,52.6774941409559432],"hsluv":[257.873120264558906,99.9999999999990195,52.6774941409559432]},"#228800":{"lch":[49.4326013626652951,73.5543249838887903,125.335546592141156],"luv":[49.4326013626652951,-42.5411625112882845,60.0040683289365475],"rgb":[0.133333333333333331,0.533333333333333326,0],"xyz":[0.0946344629725488357,0.179476913451380865,0.0296551343692538216],"hpluv":[125.335546592141156,188.81394887832684,49.4326013626652951],"hsluv":[125.335546592141156,100.000000000002359,49.4326013626652951]},"#228811":{"lch":[49.4817413630627669,71.8188220709608,126.143293588176633],"luv":[49.4817413630627669,-42.3592238010278379,57.9968909738682825],"rgb":[0.133333333333333331,0.533333333333333326,0.0666666666666666657],"xyz":[0.0956461284721859539,0.179881579651235718,0.0349832393340094513],"hpluv":[126.143293588176633,184.175827324420425,49.4817413630627669],"hsluv":[126.143293588176633,96.2839239867753776,49.4817413630627669]},"#228822":{"lch":[49.5726392440562904,68.7061860444130161,127.715012949240233],"luv":[49.5726392440562904,-42.0299333634258545,54.3509402148249521],"rgb":[0.133333333333333331,0.533333333333333326,0.133333333333333331],"xyz":[0.097521486610662983,0.180631722906626546,0.0448601255299886509],"hpluv":[127.715012949240233,175.870551812838869,49.5726392440562904],"hsluv":[127.715012949240233,89.549457305464,49.5726392440562904]},"#228833":{"lch":[49.7217546026668913,63.8760413965615115,130.529662443073192],"luv":[49.7217546026668913,-41.5093107949551552,48.5502397710151357],"rgb":[0.133333333333333331,0.533333333333333326,0.2],"xyz":[0.100609237343120717,0.181866823199609645,0.0611222793875997941],"hpluv":[130.529662443073192,163.016240956960957,49.7217546026668913],"hsluv":[130.529662443073192,89.7937238944362122,49.7217546026668913]},"#228844":{"lch":[49.9358562328630171,57.5522088774297558,135.149605574971361],"luv":[49.9358562328630171,-40.8016788905052792,40.5891579906186308],"rgb":[0.133333333333333331,0.533333333333333326,0.266666666666666663],"xyz":[0.10506723258733959,0.183650021297297239,0.0846010543404864257],"hpluv":[135.149605574971361,146.247625060139768,49.9358562328630171],"hsluv":[135.149605574971361,90.1269016918236616,49.9358562328630171]},"#228855":{"lch":[50.2200542052193697,50.3265642713731509,142.503880569306347],"luv":[50.2200542052193697,-39.9288227743001443,30.6341669254964764],"rgb":[0.133333333333333331,0.533333333333333326,0.333333333333333315],"xyz":[0.111029646626701589,0.186034986913042072,0.116003101614460341],"hpluv":[142.503880569306347,127.162609675202816,50.2200542052193697],"hsluv":[142.503880569306347,90.5399352865824341,50.2200542052193697]},"#228866":{"lch":[50.5781035519961648,43.3062651916131074,154.006170397495453],"luv":[50.5781035519961648,-38.9254575775356315,18.9800252166796355],"rgb":[0.133333333333333331,0.533333333333333326,0.4],"xyz":[0.11861464240020976,0.189068985222445363,0.155950746021604303],"hpluv":[154.006170397495453,108.649446020320369,50.5781035519961648],"hsluv":[154.006170397495453,91.0179493017372607,50.5781035519961648]},"#228877":{"lch":[51.0125694858746357,38.3061120533697519,170.992189866461246],"luv":[51.0125694858746357,-37.8336830583721451,5.997553408179356],"rgb":[0.133333333333333331,0.533333333333333326,0.466666666666666674],"xyz":[0.12792865542041168,0.192794590430526186,0.205004547928002212],"hpluv":[170.992189866461246,95.2862426106229634,51.0125694858746357],"hsluv":[170.992189866461246,91.5427076584867621,51.0125694858746357]},"#228888":{"lch":[51.5249413470067594,37.5420496271247259,192.177050630061103],"luv":[51.5249413470067594,-36.6973707929670923,-7.91886779085127834],"rgb":[0.133333333333333331,0.533333333333333326,0.533333333333333326],"xyz":[0.139069072522355508,0.197250757271303784,0.263677411331574407],"hpluv":[192.177050630061103,92.4570004995607775,51.5249413470067594],"hsluv":[192.177050630061103,92.0950966753639761,51.5249413470067594]},"#228899":{"lch":[52.1157302062907064,42.0223592343639183,212.203992327233067],"luv":[52.1157302062907064,-35.5574728144251,-22.3951959730954577],"rgb":[0.133333333333333331,0.533333333333333326,0.6],"xyz":[0.152126036631428208,0.202473542914932941,0.332444088972692287],"hpluv":[212.203992327233067,102.317738016510475,52.1157302062907064],"hsluv":[212.203992327233067,92.6571999954113465,52.1157302062907064]},"#2288aa":{"lch":[52.784565077464336,50.6329849579481888,227.127925237574203],"luv":[52.784565077464336,-34.4488478228089221,-37.1076279143892478],"rgb":[0.133333333333333331,0.533333333333333326,0.66666666666666663],"xyz":[0.167183729596680763,0.208496620101034036,0.411747938589690887],"hpluv":[227.127925237574203,121.72111165959474,52.784565077464336],"hsluv":[227.127925237574203,93.213704377986,52.784565077464336]},"#2288bb":{"lch":[53.5302933631107294,61.6316847476891141,237.186375672219185],"luv":[53.5302933631107294,-33.3987075035381409,-51.7975955226846381],"rgb":[0.133333333333333331,0.533333333333333326,0.733333333333333282],"xyz":[0.18432132170401741,0.215351656943968794,0.502005923688332634],"hpluv":[237.186375672219185,146.097822373379188,53.5302933631107294],"hsluv":[237.186375672219185,93.7525919029994,53.5302933631107294]},"#2288cc":{"lch":[54.351086283976727,73.7818378825302261,243.928624140525301],"luv":[54.351086283976727,-32.4264148607849876,-66.274333045306733],"rgb":[0.133333333333333331,0.533333333333333326,0.8],"xyz":[0.203613697147739137,0.223068607121457596,0.60361243435860279],"hpluv":[243.928624140525301,172.258462735913952,54.351086283976727],"hsluv":[243.928624140525301,94.2652369190112864,54.351086283976727]},"#2288dd":{"lch":[55.2445474530087779,86.375042864399532,248.580085361336785],"luv":[55.2445474530087779,-31.544198041281593,-80.4090268549449831],"rgb":[0.133333333333333331,0.533333333333333326,0.866666666666666696],"xyz":[0.22513202269837268,0.23167593734171113,0.716942282258608787],"hpluv":[248.580085361336785,198.39840761978212,55.2445474530087779],"hsluv":[248.580085361336785,94.7460999996689566,55.2445474530087779]},"#2288ee":{"lch":[56.2078215466105604,99.0227420546019772,251.903461744910402],"luv":[56.2078215466105604,-30.7583451142169402,-94.1245326673496265],"rgb":[0.133333333333333331,0.533333333333333326,0.933333333333333348],"xyz":[0.248944202964547445,0.241200809448181175,0.842353098327132],"hpluv":[251.903461744910402,223.551465466634539,56.2078215466105604],"hsluv":[251.903461744910402,95.1922101623356838,56.2078215466105604]},"#2288ff":{"lch":[57.2376997180489866,111.514610807296222,254.356224713070389],"luv":[57.2376997180489866,-30.0705415498761575,-107.383755542446536],"rgb":[0.133333333333333331,0.533333333333333326,1],"xyz":[0.275115251374378811,0.251669228812113843,0.980187286618913856],"hpluv":[254.356224713070389,247.223031548482197,57.2376997180489866],"hsluv":[254.356224713070389,99.9999999999988773,57.2376997180489866]},"#229900":{"lch":[55.1973816023000694,82.8565734474734086,125.883775052172936],"luv":[55.1973816023000694,-48.5657961090338617,67.1310301704979508],"rgb":[0.133333333333333331,0.6,0],"xyz":[0.120504063425016322,0.23121611435631656,0.0382783345200760766],"hpluv":[125.883775052172936,190.479314261094402,55.1973816023000694],"hsluv":[125.883775052172936,100.000000000002331,55.1973816023000694]},"#229911":{"lch":[55.2388931006948951,81.3509781714907376,126.510168490119042],"luv":[55.2388931006948951,-48.4010205856972817,65.3859530459048273],"rgb":[0.133333333333333331,0.6,0.0666666666666666657],"xyz":[0.121515728924653441,0.231620780556171413,0.0436064394848317063],"hpluv":[126.510168490119042,186.877552842351321,55.2388931006948951],"hsluv":[126.510168490119042,97.109403045153627,55.2388931006948951]},"#229922":{"lch":[55.3157166450500739,78.6308396618125869,127.715012949240275],"luv":[55.3157166450500739,-48.1011847922964293,62.2019691609440102],"rgb":[0.133333333333333331,0.6,0.133333333333333331],"xyz":[0.12339108706313047,0.232370923811562241,0.0534833256808109059],"hpluv":[127.715012949240275,180.378053709807,55.3157166450500739],"hsluv":[127.715012949240275,91.8445791693357592,55.3157166450500739]},"#229933":{"lch":[55.4418461137647,74.3518111171957656,129.829614369777261],"luv":[55.4418461137647,-47.6228343175573201,57.0986643273697],"rgb":[0.133333333333333331,0.6,0.2],"xyz":[0.126478837795588217,0.23360602410454534,0.0697454795384220561],"hpluv":[129.829614369777261,170.173995330187722,55.4418461137647],"hsluv":[129.829614369777261,91.9941043082508827,55.4418461137647]},"#229944":{"lch":[55.6231658975890042,68.6117263626113925,133.195472742568398],"luv":[55.6231658975890042,-46.964006542137362,50.0195070344354846],"rgb":[0.133333333333333331,0.6,0.266666666666666663],"xyz":[0.130936833039807077,0.235389222202232934,0.0932242544913087],"hpluv":[133.195472742568398,156.524371813771666,55.6231658975890042],"hsluv":[133.195472742568398,92.2005608183228844,55.6231658975890042]},"#229955":{"lch":[55.8642490130281715,61.7521412094073696,138.342726405552],"luv":[55.8642490130281715,-46.1371272258517706,41.0450049980768625],"rgb":[0.133333333333333331,0.6,0.333333333333333315],"xyz":[0.136899247079169062,0.237774187817977767,0.124626301765282596],"hpluv":[138.342726405552,140.267605312348593,55.8642490130281715],"hsluv":[138.342726405552,92.4605995247666357,55.8642490130281715]},"#229966":{"lch":[56.1686206396836383,54.4254646973719787,146.085824005346524],"luv":[56.1686206396836383,-45.1662924386951516,30.3667126121210664],"rgb":[0.133333333333333331,0.6,0.4],"xyz":[0.144484242852677247,0.240808186127381058,0.164573946172426544],"hpluv":[146.085824005346524,122.955430161041207,56.1686206396836383],"hsluv":[146.085824005346524,92.7673635780271,56.1686206396836383]},"#229977":{"lch":[56.5388973522399,47.7139826201784629,157.505617321427167],"luv":[56.5388973522399,-44.0837619060267798,18.2550287233801534],"rgb":[0.133333333333333331,0.6,0.466666666666666674],"xyz":[0.153798255872879153,0.244533791335461881,0.213627748078824453],"hpluv":[157.505617321427167,107.087223886255089,56.5388973522399],"hsluv":[157.505617321427167,93.1115325865156,56.5388973522399]},"#229988":{"lch":[56.9768757530356,43.2189787336254057,173.325138204180888],"luv":[56.9768757530356,-42.9260293704251126,5.02355703331473169],"rgb":[0.133333333333333331,0.6,0.533333333333333326],"xyz":[0.164938672974823,0.248989958176239479,0.272300611482396648],"hpluv":[173.325138204180888,96.2532040641867,56.9768757530356],"hsluv":[173.325138204180888,93.4824878896153706,56.9768757530356]},"#229999":{"lch":[57.4836007022547477,42.6905833214490045,192.177050630061103],"luv":[57.4836007022547477,-41.7300648492924537,-9.00486490733903366],"rgb":[0.133333333333333331,0.6,0.6],"xyz":[0.177995637083895708,0.254212743819868636,0.341067289123514528],"hpluv":[192.177050630061103,94.2383018299879467,57.4836007022547477],"hsluv":[192.177050630061103,93.8694254698009587,57.4836007022547477]},"#2299aa":{"lch":[58.0594270662980563,46.8633307325653,210.133219640519371],"luv":[58.0594270662980563,-40.5302437993065823,-23.5259666096543114],"rgb":[0.133333333333333331,0.6,0.66666666666666663],"xyz":[0.193053330049148264,0.260235821005969759,0.420371138740513128],"hpluv":[210.133219640519371,102.423528384682896,58.0594270662980563],"hsluv":[210.133219640519371,94.2622655036202701,58.0594270662980563]},"#2299bb":{"lch":[58.704081470592044,54.8976329577059445,224.200669016044458],"luv":[58.704081470592044,-39.3562485070025474,-38.2731734745639],"rgb":[0.133333333333333331,0.6,0.733333333333333282],"xyz":[0.210190922156484883,0.267090857848904517,0.51062912383915493],"hpluv":[224.200669016044458,118.665547847191604,58.704081470592044],"hsluv":[224.200669016044458,94.6522748426748279,58.704081470592044]},"#2299cc":{"lch":[59.4167266489170771,65.3729917945351247,234.209137470411804],"luv":[59.4167266489170771,-38.231976961148348,-53.0277662532618663],"rgb":[0.133333333333333331,0.6,0.8],"xyz":[0.229483297600206637,0.274807808026393319,0.612235634509425086],"hpluv":[234.209137470411804,139.613998456385502,59.4167266489170771],"hsluv":[234.209137470411804,95.032392249276171,59.4167266489170771]},"#2299dd":{"lch":[60.1960287785942114,77.1664383037622201,241.199920521286145],"luv":[60.1960287785942114,-37.1753089722913614,-67.6214137925481],"rgb":[0.133333333333333331,0.6,0.866666666666666696],"xyz":[0.251001623150840181,0.283415138246646825,0.725565482409431084],"hpluv":[241.199920521286145,162.667181112599422,60.1960287785942114],"hsluv":[241.199920521286145,95.397300800485425,60.1960287785942114]},"#2299ee":{"lch":[61.0402269370523243,89.5733454479413211,246.163931095701571],"luv":[61.0402269370523243,-36.1984881015500051,-81.9332269222821],"rgb":[0.133333333333333331,0.6,0.933333333333333348],"xyz":[0.27481380341701489,0.292940010353116842,0.850976298477954307],"hpluv":[246.163931095701571,186.209563381880429,61.0402269370523243],"hsluv":[246.163931095701571,95.74331870201,61.0402269370523243]},"#2299ff":{"lch":[61.9472031658153384,102.178145565387652,249.783903318571561],"luv":[61.9472031658153384,-35.3088685699608078,-95.8835607989752532],"rgb":[0.133333333333333331,0.6,1],"xyz":[0.300984851826846311,0.303408429717049566,0.988810486769736152],"hpluv":[249.783903318571561,209.303089797111312,61.9472031658153384],"hsluv":[249.783903318571561,99.9999999999986,61.9472031658153384]},"#110000":{"lch":[1.07666134976862637,3.62084603829176643,12.1770506300617818],"luv":[1.07666134976862637,3.53937866928378497,0.763756943295526236],"rgb":[0.0666666666666666657,0,0],"xyz":[0.00231161193210362246,0.00119192490249095569,0.000108356809317355026],"hpluv":[12.1770506300617818,426.746789183125145,1.07666134976862637],"hsluv":[12.1770506300617818,100.000000000002203,1.07666134976862637]},"#110011":{"lch":[1.44219482929484544,3.28508596549136378,307.715012949243601],"luv":[1.44219482929484544,2.00959989444743092,-2.59871084672866193],"rgb":[0.0666666666666666657,0,0.0666666666666666657],"xyz":[0.0033232774317407442,0.00159659110234581,0.00543646177407298634],"hpluv":[307.715012949243601,289.042783730483393,1.44219482929484544],"hsluv":[307.715012949243601,99.9999999999988347,1.44219482929484544]},"#110022":{"lch":[2.1197964535087821,6.27745605271938789,280.884754167684719],"luv":[2.1197964535087821,1.18539805862553327,-6.16451830530416167],"rgb":[0.0666666666666666657,0,0.133333333333333331],"xyz":[0.00519863557021776369,0.00234673435773662814,0.0153133479700521824],"hpluv":[280.884754167684719,375.775833064690062,2.1197964535087821],"hsluv":[280.884754167684719,99.9999999999998721,2.1197964535087821]},"#110033":{"lch":[3.23545797359596321,11.0622687483975319,272.972319481398301],"luv":[3.23545797359596321,0.57361730895702967,-11.0473867065762477],"rgb":[0.0666666666666666657,0,0.2],"xyz":[0.00828638630267550247,0.00358183465071974143,0.0315755018276633256],"hpluv":[272.972319481398301,433.858158519435221,3.23545797359596321],"hsluv":[272.972319481398301,100.000000000000355,3.23545797359596321]},"#110044":{"lch":[4.84621421062803659,17.7312810137515946,269.891014646828467],"luv":[4.84621421062803659,-0.0337275934556249754,-17.7312489362161827],"rgb":[0.0666666666666666657,0,0.266666666666666663],"xyz":[0.012744381546894383,0.0053650327484073175,0.0550542767805499642],"hpluv":[269.891014646828467,464.276639746945534,4.84621421062803659],"hsluv":[269.891014646828467,100.000000000000711,4.84621421062803659]},"#110055":{"lch":[7.00054481789469563,26.532890242342738,268.413820694361107],"luv":[7.00054481789469563,-0.734444075336115332,-26.5227233992365541],"rgb":[0.0666666666666666657,0,0.333333333333333315],"xyz":[0.0187067955862563751,0.00774999836415214954,0.0864563240545238726],"hpluv":[268.413820694361107,480.941270902403687,7.00054481789469563],"hsluv":[268.413820694361107,100.000000000000682,7.00054481789469563]},"#110066":{"lch":[9.62818818466394,37.2351477319955,267.604082628906383],"luv":[9.62818818466394,-1.55659527409507947,-37.20259719127408],"rgb":[0.0666666666666666657,0,0.4],"xyz":[0.0262917913597645499,0.010783996673555462,0.126403968461667848],"hpluv":[267.604082628906383,490.735908571457742,9.62818818466394],"hsluv":[267.604082628906383,100.000000000000753,9.62818818466394]},"#110077":{"lch":[12.2928363787590555,48.1341065988899643,267.117295446388],"luv":[12.2928363787590555,-2.42073458662620622,-48.0731969202633138],"rgb":[0.0666666666666666657,0,0.466666666666666674],"xyz":[0.0356058043799664659,0.0145096018816362783,0.175457770368065757],"hpluv":[267.117295446388,496.866985521105335,12.2928363787590555],"hsluv":[267.117295446388,100.000000000000739,12.2928363787590555]},"#110088":{"lch":[14.9348588897968106,58.9551979191609803,266.804247897724281],"luv":[14.9348588897968106,-3.28660375460643372,-58.8635166928348781],"rgb":[0.0666666666666666657,0,0.533333333333333326],"xyz":[0.0467462214819102939,0.0189657687224138727,0.234130633771637925],"hpluv":[266.804247897724281,500.910695182750828,14.9348588897968106],"hsluv":[266.804247897724281,100.000000000000753,14.9348588897968106]},"#110099":{"lch":[17.5475874535139624,69.6538923837914297,266.59230255326986],"luv":[17.5475874535139624,-4.14026096141065292,-69.5307339482636],"rgb":[0.0666666666666666657,0,0.6],"xyz":[0.0598031855909830073,0.0241885543660430302,0.302897311412755832],"hpluv":[266.59230255326986,503.694607743992833,17.5475874535139624],"hsluv":[266.59230255326986,100.000000000000796,17.5475874535139624]},"#1100aa":{"lch":[20.1284543895036734,80.2134478690449,266.442863009455],"luv":[20.1284543895036734,-4.97675334080985809,-80.0589104673847203],"rgb":[0.0666666666666666657,0,0.66666666666666663],"xyz":[0.0748608785562355494,0.0302116315521441317,0.382201161029754433],"hpluv":[266.442863009455,505.680355905096519,20.1284543895036734],"hsluv":[266.442863009455,100.000000000000782,20.1284543895036734]},"#1100bb":{"lch":[22.6769756305364183,90.6302333913987894,266.3339747285724],"luv":[22.6769756305364183,-5.79494806122388795,-90.444777525002138],"rgb":[0.0666666666666666657,0,0.733333333333333282],"xyz":[0.0919984706635722,0.0370666683950788903,0.472459146128396179],"hpluv":[266.3339747285724,507.139328846885462,22.6769756305364183],"hsluv":[266.3339747285724,100.000000000001,22.6769756305364183]},"#1100cc":{"lch":[25.1937235339869332,100.906819147977927,266.252448568601267],"luv":[25.1937235339869332,-6.59531864805210422,-100.691051849175651],"rgb":[0.0666666666666666657,0,0.8],"xyz":[0.111290846107293936,0.0447836185725676919,0.574065656798666279],"hpluv":[266.252448568601267,508.238409831726415,25.1937235339869332],"hsluv":[266.252448568601267,100.000000000000824,25.1937235339869332]},"#1100dd":{"lch":[27.6797893663012289,111.048607057141055,266.189998210144608],"luv":[27.6797893663012289,-7.37896669992084409,-110.803176758488192],"rgb":[0.0666666666666666657,0,0.866666666666666696],"xyz":[0.132809171657927494,0.0533909487928212259,0.687395504698672277],"hpluv":[266.189998210144608,509.084249760461944,27.6797893663012289],"hsluv":[266.189998210144608,100.000000000000938,27.6797893663012289]},"#1100ee":{"lch":[30.1364964584496846,121.062148077250455,266.141219022825339],"luv":[30.1364964584496846,-8.14718371295858823,-120.787694301304626],"rgb":[0.0666666666666666657,0,0.933333333333333348],"xyz":[0.156621351924102231,0.0629158208992912638,0.8128063207671955],"hpluv":[266.141219022825339,509.74730741907581,30.1364964584496846],"hsluv":[266.141219022825339,100.000000000000952,30.1364964584496846]},"#1100ff":{"lch":[32.5652456752648263,130.954293728553409,266.102472093749839],"luv":[32.5652456752648263,-8.90125725083502495,-130.651424275813781],"rgb":[0.0666666666666666657,0,1],"xyz":[0.182792400333933625,0.0733842402632239599,0.950640509058977345],"hpluv":[266.102472093749839,510.275492181060656,32.5652456752648263],"hsluv":[266.102472093749839,100.000000000001108,32.5652456752648263]},"#111100":{"lch":[4.69779601336656771,5.17885327658484673,85.8743202181747307],"luv":[4.69779601336656771,0.372589941443898953,5.16543299210515716],"rgb":[0.0666666666666666657,0.0666666666666666657,0],"xyz":[0.00431601219303203148,0.00520072542434782924,0.000776490229626805866],"hpluv":[85.8743202181747307,139.887458074797621,4.69779601336656771],"hsluv":[85.8743202181747307,100.000000000002359,4.69779601336656771]},"#111111":{"lch":[5.06332949289278655,2.68159353999537178e-13,0],"luv":[5.06332949289278655,2.52120910544652531e-13,9.13481559944393266e-14],"rgb":[0.0666666666666666657,0.0666666666666666657,0.0666666666666666657],"xyz":[0.00532767769266915322,0.00560539162420268383,0.00610459519438243722],"hpluv":[0,6.72041492281092e-12,5.06332949289278655],"hsluv":[0,1.92419399944792277e-12,5.06332949289278655]},"#111122":{"lch":[5.74093111710672321,6.60006851394265048,265.874320218179719],"luv":[5.74093111710672321,-0.474838542395297381,-6.58296534605743222],"rgb":[0.0666666666666666657,0.0666666666666666657,0.133333333333333331],"xyz":[0.00720303583114617271,0.00635553487959350169,0.0159814813903616341],"hpluv":[265.874320218179719,145.883251481840432,5.74093111710672321],"hsluv":[265.874320218179719,28.41442223352254,5.74093111710672321]},"#111133":{"lch":[6.85659263719390388,14.212336546779186,265.874320218178582],"luv":[6.85659263719390388,-1.02249925976518052,-14.1755072354640976],"rgb":[0.0666666666666666657,0.0666666666666666657,0.2],"xyz":[0.0102907865636039132,0.00759063517257661455,0.0322436352479727809],"hpluv":[265.874320218178582,263.024656142887807,6.85659263719390388],"hsluv":[265.874320218178582,51.2306489028398957,6.85659263719390388]},"#111144":{"lch":[8.45853257854777141,22.7927945223118087,265.874320218178241],"luv":[8.45853257854777141,-1.63981590573345759,-22.7337301367732181],"rgb":[0.0666666666666666657,0.0666666666666666657,0.266666666666666663],"xyz":[0.0147487818078227903,0.00937383327026419105,0.0557224102008594194],"hpluv":[265.874320218178241,341.933676209697239,8.45853257854777141],"hsluv":[265.874320218178241,66.600159737267461,8.45853257854777141]},"#111155":{"lch":[10.3782295585045325,32.1242805487719707,265.874320218178127],"luv":[10.3782295585045325,-2.31116487943396587,-32.0410349033279545],"rgb":[0.0666666666666666657,0.0666666666666666657,0.333333333333333315],"xyz":[0.0207111958471847858,0.011758798886009024,0.0871244574748333278],"hpluv":[265.874320218178127,392.780088665713265,10.3782295585045325],"hsluv":[265.874320218178127,76.5037738801481453,10.3782295585045325]},"#111166":{"lch":[12.4757228248048477,41.8651930040424887,265.87432021817807],"luv":[12.4757228248048477,-3.01196982745712916,-41.7567051265328644],"rgb":[0.0666666666666666657,0.0666666666666666657,0.4],"xyz":[0.0282961916206929606,0.0147927971954123355,0.12707210188197729],"hpluv":[265.87432021817807,425.820638501567,12.4757228248048477],"hsluv":[265.87432021817807,82.9392496755345263,12.4757228248048477]},"#111177":{"lch":[14.6896895275036599,51.8467212520223697,265.874320218178],"luv":[14.6896895275036599,-3.73008575521422614,-51.7123676197837199],"rgb":[0.0666666666666666657,0.0666666666666666657,0.466666666666666674],"xyz":[0.0376102046408948731,0.0185184024034931519,0.176125903788375199],"hpluv":[265.874320218178,447.865910041391658,14.6896895275036599],"hsluv":[265.874320218178,87.2331192419333235,14.6896895275036599]},"#111188":{"lch":[16.9766940539391484,61.9476661879793511,265.874320218178],"luv":[16.9766940539391484,-4.45679305530888747,-61.7871373491236469],"rgb":[0.0666666666666666657,0.0666666666666666657,0.533333333333333326],"xyz":[0.0487506217428387,0.0229745692442707428,0.234798767191947366],"hpluv":[265.874320218178,463.03215765547759,16.9766940539391484],"hsluv":[265.874320218178,90.1871263608273495,16.9766940539391484]},"#111199":{"lch":[19.3069968916820471,72.0861980616198537,265.874320218178],"luv":[19.3069968916820471,-5.18620452834737478,-71.8993966147786],"rgb":[0.0666666666666666657,0.0666666666666666657,0.6],"xyz":[0.0618075858519114146,0.0281973548878999072,0.303565444833065246],"hpluv":[265.874320218178,473.779996738615694,19.3069968916820471],"hsluv":[265.874320218178,92.280537596895428,19.3069968916820471]},"#1111aa":{"lch":[21.6605350192491244,82.2093341223612839,265.874320218177957],"luv":[21.6605350192491244,-5.91450835752722703,-81.9962999636616274],"rgb":[0.0666666666666666657,0.0666666666666666657,0.66666666666666663],"xyz":[0.0768652788171639567,0.0342204320740010087,0.382869294450063846],"hpluv":[265.874320218177957,481.605322004481,21.6605350192491244],"hsluv":[265.874320218177957,93.8047159652847569,21.6605350192491244]},"#1111bb":{"lch":[24.0238472654082429,92.2838634174554215,265.874320218177957],"luv":[24.0238472654082429,-6.63931519789526092,-92.0447225046312241],"rgb":[0.0666666666666666657,0.0666666666666666657,0.733333333333333282],"xyz":[0.0940028709245006,0.0410754689169357673,0.473127279548705593],"hpluv":[265.874320218177957,487.441538809997496,24.0238472654082429],"hsluv":[265.874320218177957,94.9414655706975736,24.0238472654082429]},"#1111cc":{"lch":[26.3879200105999,102.289669569688542,265.874320218177957],"luv":[26.3879200105999,-7.35917778701558589,-102.024599989292597],"rgb":[0.0666666666666666657,0.0666666666666666657,0.8],"xyz":[0.113295246368222344,0.0487924190944245689,0.574733790218975749],"hpluv":[265.874320218177957,491.887677819884516,26.3879200105999],"hsluv":[265.874320218177957,95.8074626598259727,26.3879200105999]},"#1111dd":{"lch":[28.7467318202544035,112.215160110792439,265.874320218177957],"luv":[28.7467318202544035,-8.07326211070735766,-111.924369989661315],"rgb":[0.0666666666666666657,0.0666666666666666657,0.866666666666666696],"xyz":[0.134813571918855901,0.0573997493146781,0.688063638118981746],"hpluv":[265.874320218177957,495.338839734480189,28.7467318202544035],"hsluv":[265.874320218177957,96.479663003878315,28.7467318202544035]},"#1111ee":{"lch":[31.096282761883856,122.054240127147821,265.874320218177957],"luv":[31.096282761883856,-8.78112967353786367,-121.737953386246701],"rgb":[0.0666666666666666657,0.0666666666666666657,0.933333333333333348],"xyz":[0.158625752185030638,0.0669246214211481338,0.813474454187505],"hpluv":[265.874320218177957,498.062358817216193,31.096282761883856],"hsluv":[265.874320218177957,97.0101366558694451,31.096282761883856]},"#1111ff":{"lch":[33.4339475813396589,131.804336466263976,265.874320218177957],"luv":[33.4339475813396589,-9.48259535137154863,-131.462783694528071],"rgb":[0.0666666666666666657,0.0666666666666666657,1],"xyz":[0.184796800594862032,0.07739304078508083,0.951308642479286815],"hpluv":[265.874320218177957,500.243401112503761,33.4339475813396589],"hsluv":[265.874320218177957,99.9999999999995168,33.4339475813396589]},"#66aa00":{"lch":[62.9888010115071921,81.5107592316300185,114.758667910078074],"luv":[62.9888010115071921,-34.136471206054587,74.0182761493062884],"rgb":[0.4,0.66666666666666663,0],"xyz":[0.198534632170994735,0.315734905503604946,0.0504821063864305253],"hpluv":[114.758667910078074,164.206718875588678,62.9888010115071921],"hsluv":[114.758667910078074,100.000000000002245,62.9888010115071921]},"#66aa11":{"lch":[63.0225323172591345,80.1801511939703744,115.156040801232848],"luv":[63.0225323172591345,-34.0833758310267285,72.5753411114886262],"rgb":[0.4,0.66666666666666663,0.0666666666666666657],"xyz":[0.199546297670631867,0.316139571703459799,0.055810211351186155],"hpluv":[115.156040801232848,161.439702186697787,63.0225323172591345],"hsluv":[115.156040801232848,97.8915472494395,63.0225323172591345]},"#66aa22":{"lch":[63.0849851082382287,77.7526522520100372,115.919582231606014],"luv":[63.0849851082382287,-33.9864002990590066,69.9313915701248],"rgb":[0.4,0.66666666666666663,0.133333333333333331],"xyz":[0.201421655809108868,0.316889714958850599,0.0656870975471653545],"hpluv":[115.919582231606014,156.397041701241,63.0849851082382287],"hsluv":[115.919582231606014,94.0329763727763748,63.0849851082382287]},"#66aa33":{"lch":[63.1875983682703577,73.8659889058236416,117.258215410479664],"luv":[63.1875983682703577,-33.8307250746429062,65.6632801340230827],"rgb":[0.4,0.66666666666666663,0.2],"xyz":[0.20450940654156663,0.318124815251833726,0.0819492514047764908],"hpluv":[117.258215410479664,148.337854737344315,63.1875983682703577],"hsluv":[117.258215410479664,87.8175568215645228,63.1875983682703577]},"#66aa44":{"lch":[63.3352806074861121,68.495891054581449,119.389904478135335],"luv":[63.3352806074861121,-33.6143748396710436,59.6804900742209057],"rgb":[0.4,0.66666666666666663,0.266666666666666663],"xyz":[0.208967401785785489,0.319908013349521292,0.105428026357663129],"hpluv":[119.389904478135335,137.232870385557277,63.3352806074861121],"hsluv":[119.389904478135335,79.1339200396795093,63.3352806074861121]},"#66aa55":{"lch":[63.5319451116367162,61.7628687774086131,122.670093374403834],"luv":[63.5319451116367162,-33.3396585938880747,51.9915293529473],"rgb":[0.4,0.66666666666666663,0.333333333333333315],"xyz":[0.214929815825147474,0.322292978965266153,0.136830073631637045],"hpluv":[122.670093374403834,123.360077774302084,63.5319451116367162],"hsluv":[122.670093374403834,68.0252461175988401,63.5319451116367162]},"#66aa66":{"lch":[63.7807317293932101,53.9656100581627314,127.715012949238869],"luv":[63.7807317293932101,-33.0126168434810836,42.6902119706049703],"rgb":[0.4,0.66666666666666663,0.4],"xyz":[0.22251481159865566,0.325326977274669471,0.176777718038781],"hpluv":[127.715012949238869,107.366036241042551,63.7807317293932101],"hsluv":[127.715012949238869,54.6684489206366493,63.7807317293932101]},"#66aa77":{"lch":[64.0841229578331308,45.668717811445795,135.623736827110406],"luv":[64.0841229578331308,-32.6422859505805931,31.9392071670853355],"rgb":[0.4,0.66666666666666663,0.466666666666666674],"xyz":[0.231828824618857565,0.329052582482750267,0.225831519945178916],"hpluv":[135.623736827110406,90.428994130424627,64.0841229578331308],"hsluv":[135.623736827110406,56.3153951517164302,64.0841229578331308]},"#66aa88":{"lch":[64.4440140424290888,37.9133385548872752,148.25026899586868],"luv":[64.4440140424290888,-32.239785461804118,19.9503752785341248],"rgb":[0.4,0.66666666666666663,0.533333333333333326],"xyz":[0.242969241720801421,0.333508749323527864,0.284504383348751055],"hpluv":[148.25026899586868,74.65325904191441,64.4440140424290888],"hsluv":[148.25026899586868,58.1346686170252127,64.4440140424290888]},"#66aa99":{"lch":[64.861761772217136,32.5704605989434484,167.654678216446086],"luv":[64.861761772217136,-31.8173259789585323,6.96366793981576304],"rgb":[0.4,0.66666666666666663,0.6],"xyz":[0.256026205829874121,0.338731534967157,0.353271060989869],"hpluv":[167.654678216446086,63.7198120272805681,64.861761772217136],"hsluv":[167.654678216446086,60.083023100845935,64.861761772217136]},"#66aaaa":{"lch":[65.3382237636027,32.1097126044189949,192.177050630060876],"luv":[65.3382237636027,-31.387258852500235,-6.77300710648746396],"rgb":[0.4,0.66666666666666663,0.66666666666666663],"xyz":[0.271083898795126677,0.344754612153258144,0.432574910606867591],"hpluv":[192.177050630060876,62.3603323483304592,65.3382237636027],"hsluv":[192.177050630060876,62.1162357127798757,65.3382237636027]},"#66aabb":{"lch":[65.8737942906507641,37.4229485671739255,214.174175962111633],"luv":[65.8737942906507641,-30.9612713447490577,-21.020864781881972],"rgb":[0.4,0.66666666666666663,0.733333333333333282],"xyz":[0.288221490902463295,0.351609648996192903,0.522832895705509282],"hpluv":[214.174175962111633,72.0882777495769744,65.8737942906507641],"hsluv":[214.174175962111633,64.192083786910942,65.8737942906507641]},"#66aacc":{"lch":[66.4684397846860833,46.8829891397435361,229.336310284400895],"luv":[66.4684397846860833,-30.5497910563422188,-35.5629714322516],"rgb":[0.4,0.66666666666666663,0.8],"xyz":[0.30751386634618505,0.359326599173681704,0.624439406375779438],"hpluv":[229.336310284400895,89.5033179536005,66.4684397846860833],"hsluv":[229.336310284400895,66.2725553364081748,66.4684397846860833]},"#66aadd":{"lch":[67.1217354618507471,58.5746749070863473,239.007496148652194],"luv":[67.1217354618507471,-30.1616186688116876,-50.2122425285710676],"rgb":[0.4,0.66666666666666663,0.866666666666666696],"xyz":[0.329032191896818593,0.367933929393935211,0.737769254275785435],"hpluv":[239.007496148652194,110.735287258409116,67.1217354618507471],"hsluv":[239.007496148652194,68.3252248927570349,67.1217354618507471]},"#66aaee":{"lch":[67.8329035309127,71.3390505041132,245.305718817638592],"luv":[67.8329035309127,-29.803771094245274,-64.8150858627082584],"rgb":[0.4,0.66666666666666663,0.933333333333333348],"xyz":[0.352844372162993358,0.377458801500405228,0.863180070344308659],"hpluv":[245.305718817638592,133.452355648257935,67.8329035309127],"hsluv":[245.305718817638592,80.362890995181445,67.8329035309127]},"#66aaff":{"lch":[68.6008528128324144,84.5574659264264312,249.594848961048797],"luv":[68.6008528128324144,-29.4814940521041038,-79.2515397475312],"rgb":[0.4,0.66666666666666663,1],"xyz":[0.379015420572824724,0.387927220864337952,1.00101425863609061],"hpluv":[249.594848961048797,156.409011428865199,68.6008528128324144],"hsluv":[249.594848961048797,99.9999999999981,68.6008528128324144]},"#112200":{"lch":[11.0156269675282488,14.1286449823385087,113.920199516574741],"luv":[11.0156269675282488,-5.72865521459208082,12.9151507335100835],"rgb":[0.0666666666666666657,0.133333333333333331,0],"xyz":[0.00803163592779996757,0.0126319728938838038,0.00201503147454941628],"hpluv":[113.920199516574741,162.753605553330914,11.0156269675282488],"hsluv":[113.920199516574741,100.000000000002302,11.0156269675282488]},"#112211":{"lch":[11.3010826742418828,9.17677244733547,127.715012949238741],"luv":[11.3010826742418828,-5.61374683501564142,7.25940762201209555],"rgb":[0.0666666666666666657,0.133333333333333331,0.0666666666666666657],"xyz":[0.00904330142743709,0.0130366390937386584,0.00734313643930504731],"hpluv":[127.715012949238741,103.040803658029205,11.3010826742418828],"hsluv":[127.715012949238741,52.4661346244892783,11.3010826742418828]},"#112222":{"lch":[11.8149934741043623,5.60956124878379736,192.177050630060876],"luv":[11.8149934741043623,-5.48334870304322308,-1.18324317225625331],"rgb":[0.0666666666666666657,0.133333333333333331,0.133333333333333331],"xyz":[0.0109186595659141079,0.0137867823491294762,0.0172200226352842434],"hpluv":[192.177050630060876,60.2469040904941551,11.8149934741043623],"hsluv":[192.177050630060876,60.0110800331641911,11.8149934741043623]},"#112233":{"lch":[12.6219648570067733,12.7575995118883281,244.93155638428982],"luv":[12.6219648570067733,-5.40540262923445,-11.5558629154900672],"rgb":[0.0666666666666666657,0.133333333333333331,0.2],"xyz":[0.0140064102983718484,0.0150218826421125891,0.0334821764928953866],"hpluv":[244.93155638428982,128.257072990564865,12.6219648570067733],"hsluv":[244.93155638428982,68.2965554989448265,12.6219648570067733]},"#112244":{"lch":[13.7124312845167182,23.0561698733830092,256.354402060867073],"luv":[13.7124312845167182,-5.43930918870511082,-22.4053762472305387],"rgb":[0.0666666666666666657,0.133333333333333331,0.266666666666666663],"xyz":[0.0184644055425907255,0.0168050807398001656,0.0569609514457820251],"hpluv":[256.354402060867073,213.359519949101497,13.7124312845167182],"hsluv":[256.354402060867073,75.5965994738604508,13.7124312845167182]},"#112255":{"lch":[15.056320299603339,33.5848303856462849,260.40485184836416],"luv":[15.056320299603339,-5.59809589119781581,-33.114983835502386],"rgb":[0.0666666666666666657,0.133333333333333331,0.333333333333333315],"xyz":[0.024426819581952721,0.019190046355545,0.0883629987197559336],"hpluv":[260.40485184836416,283.050313811336878,15.056320299603339],"hsluv":[260.40485184836416,81.3424686793067,15.056320299603339]},"#112266":{"lch":[16.6136212231118279,43.9645077489691118,262.329755848243337],"luv":[16.6136212231118279,-5.86800935048734384,-43.5711419160865958],"rgb":[0.0666666666666666657,0.133333333333333331,0.4],"xyz":[0.0320118153554608958,0.02222404466494831,0.128310643126899909],"hpluv":[262.329755848243337,335.797328537363626,16.6136212231118279],"hsluv":[262.329755848243337,85.6428490187558396,16.6136212231118279]},"#112277":{"lch":[18.3427569840269769,54.1821774694947678,263.400149453671133],"luv":[18.3427569840269769,-6.22740469049246936,-53.8231157232341815],"rgb":[0.0666666666666666657,0.133333333333333331,0.466666666666666674],"xyz":[0.0413258283756628153,0.0259496498730291264,0.177364445033297818],"hpluv":[263.400149453671133,374.827260372181627,18.3427569840269769],"hsluv":[263.400149453671133,88.8099744527525559,18.3427569840269769]},"#112288":{"lch":[20.2056943122802366,64.2803592359499,264.056887374403459],"luv":[20.2056943122802366,-6.65565132438349316,-63.9348644242795103],"rgb":[0.0666666666666666657,0.133333333333333331,0.533333333333333326],"xyz":[0.0524662454776066434,0.0304058167138067173,0.236037308436869986],"hpluv":[264.056887374403459,403.686144257890874,20.2056943122802366],"hsluv":[264.056887374403459,91.1461001738222762,20.2056943122802366]},"#112299":{"lch":[22.17018380613613,74.2918952905243799,264.488199331991609],"luv":[22.17018380613613,-7.13579321215933149,-73.9484020185124677],"rgb":[0.0666666666666666657,0.133333333333333331,0.6],"xyz":[0.0655232095866793568,0.0356286023574358818,0.304803986077987865],"hpluv":[264.488199331991609,425.217833826531262,22.17018380613613],"hsluv":[264.488199331991609,92.8866294242426136,22.17018380613613]},"#1122aa":{"lch":[24.2101316823922517,84.2333021684004848,264.786067280823943],"luv":[24.2101316823922517,-7.6546801533155886,-83.8847725510625537],"rgb":[0.0666666666666666657,0.133333333333333331,0.66666666666666663],"xyz":[0.0805809025519319,0.0416516795435369833,0.384107835694986466],"hpluv":[264.786067280823943,441.495215422381477,24.2101316823922517],"hsluv":[264.786067280823943,94.2012423737010209,24.2101316823922517]},"#1122bb":{"lch":[26.3050242232650149,94.1101405136049891,264.999933480500431],"luv":[26.3050242232650149,-8.20234804116949334,-93.7520134935884926],"rgb":[0.0666666666666666657,0.133333333333333331,0.733333333333333282],"xyz":[0.0977184946592685455,0.0485067163864717418,0.474365820793628212],"hpluv":[264.999933480500431,453.98033637772636,26.3050242232650149],"hsluv":[264.999933480500431,95.2089691602506605,26.3050242232650149]},"#1122cc":{"lch":[28.4390102065576187,103.92243186966887,265.158337172634162],"luv":[28.4390102065576187,-8.77130520241401612,-103.551610565708117],"rgb":[0.0666666666666666657,0.133333333333333331,0.8],"xyz":[0.117010870102990286,0.0562236665639605435,0.575972331463898368],"hpluv":[265.158337172634162,463.69685512523705,28.4390102065576187],"hsluv":[265.158337172634162,95.9928942328389496,28.4390102065576187]},"#1122dd":{"lch":[30.599961250020371,113.668086087716972,265.278693166229971],"luv":[30.599961250020371,-9.35592092097037664,-113.282392888591403],"rgb":[0.0666666666666666657,0.133333333333333331,0.866666666666666696],"xyz":[0.138529195653623816,0.0648309967842140705,0.689302179363904366],"hpluv":[265.278693166229971,471.364637015548908,30.599961250020371],"hsluv":[265.278693166229971,96.6113336559982,30.599961250020371]},"#1122ee":{"lch":[32.7786459144851463,123.344693870669801,265.37211393361406],"luv":[32.7786459144851463,-9.95194954038693247,-122.942556531067964],"rgb":[0.0666666666666666657,0.133333333333333331,0.933333333333333348],"xyz":[0.162341375919798553,0.0743558688906841,0.814712995432427589],"hpluv":[265.37211393361406,477.494956838131543,32.7786459144851463],"hsluv":[265.37211393361406,97.1056530386567118,32.7786459144851463]},"#1122ff":{"lch":[34.9680553815075,132.950321242967135,265.445956583698],"luv":[34.9680553815075,-10.5561742154436597,-132.530581770930752],"rgb":[0.0666666666666666657,0.133333333333333331,1],"xyz":[0.188512424329629946,0.0848242882546168114,0.952547183724209434],"hpluv":[265.445956583698,482.455471693424897,34.9680553815075],"hsluv":[265.445956583698,99.9999999999995595,34.9680553815075]},"#66bb00":{"lch":[68.2883247343563,91.0397787832552297,117.384795663234385],"luv":[68.2883247343563,-41.875036539852637,80.8376313092488914],"rgb":[0.4,0.733333333333333282,0],"xyz":[0.232489130079593515,0.383643901320803504,0.0618002723559631373],"hpluv":[117.384795663234385,169.170277477244,68.2883247343563],"hsluv":[117.384795663234385,100.000000000002402,68.2883247343563]},"#66bb11":{"lch":[68.3179499939719079,89.8644626985519466,117.727722441428654],"luv":[68.3179499939719079,-41.8112733484955896,79.5452014710932644],"rgb":[0.4,0.733333333333333282,0.0666666666666666657],"xyz":[0.233500795579230647,0.384048567520658357,0.0671283773207187739],"hpluv":[117.727722441428654,166.91389144855998,68.3179499939719079],"hsluv":[117.727722441428654,98.2613130840239108,68.3179499939719079]},"#66bb22":{"lch":[68.3728123300379309,87.7153655991844374,118.381366327960222],"luv":[68.3728123300379309,-41.6944557120635579,77.1722600749346839],"rgb":[0.4,0.733333333333333282,0.133333333333333331],"xyz":[0.235376153717707648,0.384798710776049158,0.0770052635166979665],"hpluv":[118.381366327960222,162.791438416492724,68.3728123300379309],"hsluv":[118.381366327960222,95.072259168186676,68.3728123300379309]},"#66bb33":{"lch":[68.4629872592027766,84.2604886941914515,119.511012469656151],"luv":[68.4629872592027766,-41.5059446288263274,73.3286200296498691],"rgb":[0.4,0.733333333333333282,0.2],"xyz":[0.238463904450165409,0.386033811069032284,0.0932674173743091],"hpluv":[119.511012469656151,156.173540237969377,68.4629872592027766],"hsluv":[119.511012469656151,89.9157079277594846,68.4629872592027766]},"#66bb44":{"lch":[68.5928402387875451,79.4555052917154683,121.268984442668796],"luv":[68.5928402387875451,-41.2418962487648457,67.9137932600435761],"rgb":[0.4,0.733333333333333282,0.266666666666666663],"xyz":[0.242921899694384269,0.38781700916671985,0.116746192327195741],"hpluv":[121.268984442668796,146.988898097842537,68.5928402387875451],"hsluv":[121.268984442668796,82.6706505658268,68.5928402387875451]},"#66bb55":{"lch":[68.7658933773114711,73.3682686647690474,123.883282583110088],"luv":[68.7658933773114711,-40.9030232283392365,60.9085013577552417],"rgb":[0.4,0.733333333333333282,0.333333333333333315],"xyz":[0.248884313733746254,0.390201974782464711,0.148148239601169657],"hpluv":[123.883282583110088,135.386233996967292,68.7658933773114711],"hsluv":[123.883282583110088,73.3323147762666565,68.7658933773114711]},"#66bb66":{"lch":[68.985024233854773,66.1955602149500493,127.715012949239338],"luv":[68.985024233854773,-40.4940973290304953,52.3648763359380354],"rgb":[0.4,0.733333333333333282,0.4],"xyz":[0.256469309507254439,0.39323597309186803,0.188095884008313619],"hpluv":[127.715012949239338,121.76244699215377,68.985024233854773],"hsluv":[127.715012949239338,61.9987879490855889,68.985024233854773]},"#66bb77":{"lch":[69.2525700917713,58.3030977404443149,133.351332140289912],"luv":[69.2525700917713,-40.0233333378199134,42.395565742911792],"rgb":[0.4,0.733333333333333282,0.466666666666666674],"xyz":[0.265783322527456345,0.396961578299948825,0.237149685914711528],"hpluv":[133.351332140289912,106.830450835327468,69.2525700917713],"hsluv":[133.351332140289912,63.1630001095548,69.2525700917713]},"#66bb88":{"lch":[69.5703900447947632,50.3125315521488901,141.732198444264128],"luv":[69.5703900447947632,-39.5016033478381487,31.1604583428427624],"rgb":[0.4,0.733333333333333282,0.533333333333333326],"xyz":[0.276923739629400201,0.401417745140726423,0.295822549318283667],"hpluv":[141.732198444264128,91.7679559652102625,69.5703900447947632],"hsluv":[141.732198444264128,64.4651291783298888,69.5703900447947632]},"#66bb99":{"lch":[69.9399065468101924,43.264635747530761,154.168279853010262],"luv":[69.9399065468101924,-38.9415329854338594,18.8516767188195544],"rgb":[0.4,0.733333333333333282,0.6],"xyz":[0.2899807037384729,0.406640530784355581,0.364589226959401602],"hpluv":[154.168279853010262,78.4959645714096865,69.9399065468101924],"hsluv":[154.168279853010262,65.8787579381207848,69.9399065468101924]},"#66bbaa":{"lch":[70.3621368583926881,38.7745898249838348,171.579209782291855],"luv":[70.3621368583926881,-38.3565710720190296,5.67822786553099768],"rgb":[0.4,0.733333333333333282,0.66666666666666663],"xyz":[0.305038396703725456,0.412663607970456703,0.443893076576400203],"hpluv":[171.579209782291855,69.9274221790226278,70.3621368583926881],"hsluv":[171.579209782291855,67.37547943529961,70.3621368583926881]},"#66bbbb":{"lch":[70.8377198879813221,38.6292683935386592,192.177050630060933],"luv":[70.8377198879813221,-37.7601276376370194,-8.14819841495072161],"rgb":[0.4,0.733333333333333282,0.733333333333333282],"xyz":[0.322175988811062075,0.419518644813391461,0.534151061675042],"hpluv":[192.177050630060933,69.1976324805594629,70.8377198879813221],"hsluv":[192.177050630060933,68.9267726464228758,70.8377198879813221]},"#66bbcc":{"lch":[71.3669414392261103,43.4063518114314,211.106579982723787],"luv":[71.3669414392261103,-37.1648552128157,-22.4250956427882215],"rgb":[0.4,0.733333333333333282,0.8],"xyz":[0.341468364254783829,0.427235594990880263,0.635757572345312161],"hpluv":[211.106579982723787,77.1783568223693806,71.3669414392261103],"hsluv":[211.106579982723787,70.5055674968506736,71.3669414392261103]},"#66bbdd":{"lch":[71.9497594848613602,52.0084901368895629,225.300588521911806],"luv":[71.9497594848613602,-36.5821167433876298,-36.9679831866995059],"rgb":[0.4,0.733333333333333282,0.866666666666666696],"xyz":[0.362986689805417373,0.435842925211133769,0.749087420245318159],"hpluv":[225.300588521911806,91.724261948179759,71.9497594848613602],"hsluv":[225.300588521911806,72.0874065633031336,71.9497594848613602]},"#66bbee":{"lch":[72.5858302461357852,62.9426478584387183,235.089705553804919],"luv":[72.5858302461357852,-36.0216507769597953,-51.6160594653851135],"rgb":[0.4,0.733333333333333282,0.933333333333333348],"xyz":[0.386798870071592082,0.445367797317603786,0.874498236313841382],"hpluv":[235.089705553804919,110.035415213757233,72.5858302461357852],"hsluv":[235.089705553804919,76.908955535231712,72.5858302461357852]},"#66bbff":{"lch":[73.2745353232689638,75.1445669264803513,241.815748730615525],"luv":[73.2745353232689638,-35.4914181095182641,-66.2349241650025817],"rgb":[0.4,0.733333333333333282,1],"xyz":[0.412969918481423504,0.45583621668153651,1.01233242460562312],"hpluv":[241.815748730615525,130.131920555189879,73.2745353232689638],"hsluv":[241.815748730615525,99.9999999999976552,73.2745353232689638]},"#113300":{"lch":[17.8585390793191152,25.0449080182821966,121.332554648991049],"luv":[17.8585390793191152,-13.0234653569097247,21.3924465113644295],"rgb":[0.0666666666666666657,0.2,0],"xyz":[0.0141493580168107792,0.0248674170719056023,0.00405427217088629669],"hpluv":[121.332554648991049,177.956083469309505,17.8585390793191152],"hsluv":[121.332554648991049,100.000000000002288,17.8585390793191152]},"#113311":{"lch":[18.041211184449395,20.8015074137336562,127.715012949239792],"luv":[18.041211184449395,-12.7249964056056086,16.4553084796651738],"rgb":[0.0666666666666666657,0.2,0.0666666666666666657],"xyz":[0.015161023516447901,0.0252720832717604552,0.00938237713564192902],"hpluv":[127.715012949239792,146.308124837666583,18.041211184449395],"hsluv":[127.715012949239792,74.4969128915689254,18.041211184449395]},"#113322":{"lch":[18.3747440863758129,14.8635488733567129,145.575764327225926],"luv":[18.3747440863758129,-12.2605616690393529,8.40260154180516672],"rgb":[0.0666666666666666657,0.2,0.133333333333333331],"xyz":[0.0170363816549249196,0.0260222265271512765,0.0192592633316211251],"hpluv":[145.575764327225926,102.645648490479701,18.3747440863758129],"hsluv":[145.575764327225926,76.8412554017051,18.3747440863758129]},"#113333":{"lch":[18.910205854271,11.9516732098830207,192.177050630061075],"luv":[18.910205854271,-11.6827660646039035,-2.5210056714682163],"rgb":[0.0666666666666666657,0.2,0.2],"xyz":[0.0201241323873826601,0.0272573268201343893,0.0355214171892322683],"hpluv":[192.177050630061075,80.19952200231,18.910205854271],"hsluv":[192.177050630061075,79.885597544945341,18.910205854271]},"#113344":{"lch":[19.6554681695294136,18.5554908550806559,233.185939638237187],"luv":[19.6554681695294136,-11.1188227079461566,-14.8552355236207116],"rgb":[0.0666666666666666657,0.2,0.266666666666666663],"xyz":[0.0245821276316015372,0.0290405249178219624,0.0590001921421189068],"hpluv":[233.185939638237187,119.79215597403514,19.6554681695294136],"hsluv":[233.185939638237187,83.0941728600946163,19.6554681695294136]},"#113355":{"lch":[20.6059777210847557,29.4541985213363553,248.778672986371305],"luv":[20.6059777210847557,-10.6615827984222822,-27.4568837045772334],"rgb":[0.0666666666666666657,0.2,0.333333333333333315],"xyz":[0.0305445416709635327,0.0314254905335667953,0.0904022394160928222],"hpluv":[248.778672986371305,181.381634101163,20.6059777210847557],"hsluv":[248.778672986371305,86.0667890851332089,20.6059777210847557]},"#113366":{"lch":[21.7480278014825927,41.0513772817531262,255.392805777322508],"luv":[21.7480278014825927,-10.3527823296753354,-39.7244946445288178],"rgb":[0.0666666666666666657,0.2,0.4],"xyz":[0.0381295374444717075,0.0344594888429701068,0.130349883823236784],"hpluv":[255.392805777322508,239.522976201191227,21.7480278014825927],"hsluv":[255.392805777322508,88.6137215649990537,21.7480278014825927]},"#113377":{"lch":[23.0621320749224097,52.4639032010768602,258.793139915612699],"luv":[23.0621320749224097,-10.1964540550792755,-51.4635158514711293],"rgb":[0.0666666666666666657,0.2,0.466666666666666674],"xyz":[0.04744355046467362,0.0381850940510509232,0.179403685729634693],"hpluv":[258.793139915612699,288.669213908808,23.0621320749224097],"hsluv":[258.793139915612699,90.7010140503724926,23.0621320749224097]},"#113388":{"lch":[24.5260866455155693,63.5079254673071389,260.778240759541745],"luv":[24.5260866455155693,-10.1775299952298717,-62.6871157444433322],"rgb":[0.0666666666666666657,0.2,0.533333333333333326],"xyz":[0.0585839675666174481,0.0426412608918285141,0.238076549133206861],"hpluv":[260.778240759541745,328.5783880762134,24.5260866455155693],"hsluv":[260.778240759541745,92.3732755032704,24.5260866455155693]},"#113399":{"lch":[26.1173586094444445,74.1961224571638667,262.040130643645512],"luv":[26.1173586094444445,-10.2746398160742789,-73.4812653968914447],"rgb":[0.0666666666666666657,0.2,0.6],"xyz":[0.0716409316756901615,0.0478640465354576786,0.30684322677432474],"hpluv":[262.040130643645512,360.488391101723778,26.1173586094444445],"hsluv":[262.040130643645512,93.700931793532277,26.1173586094444445]},"#1133aa":{"lch":[27.8146812937100378,84.589542856674214,262.892366774415223],"luv":[27.8146812937100378,-10.4665753413372666,-83.9395113240792767],"rgb":[0.0666666666666666657,0.2,0.66666666666666663],"xyz":[0.0866986246409427,0.0538871237215587801,0.386147076391323341],"hpluv":[262.892366774415223,385.906342473210088,27.8146812937100378],"hsluv":[262.892366774415223,94.7540719156047544,27.8146812937100378]},"#1133bb":{"lch":[29.5989386642012917,94.7497677250031245,263.494633441352278],"luv":[29.5989386642012917,-10.734795769033445,-94.1396974912241],"rgb":[0.0666666666666666657,0.2,0.733333333333333282],"xyz":[0.10383621674827935,0.0607421605644935386,0.476405061489965087],"hpluv":[263.494633441352278,406.201330660618282,29.5989386642012917],"hsluv":[263.494633441352278,95.59270717643426,29.5989386642012917]},"#1133cc":{"lch":[31.4535171675710927,104.725970292241058,263.935552719695806],"luv":[31.4535171675710927,-11.0639900580249932,-104.139891384844844],"rgb":[0.0666666666666666657,0.2,0.8],"xyz":[0.123128592192001091,0.0684591107419823403,0.578011572160235243],"hpluv":[263.935552719695806,422.497850271701509,31.4535171675710927],"hsluv":[263.935552719695806,96.2648935085394299,31.4535171675710927]},"#1133dd":{"lch":[33.3643121953656845,114.554023382916327,264.267643395871801],"luv":[33.3643121953656845,-11.4418472625073555,-113.981175658242762],"rgb":[0.0666666666666666657,0.2,0.866666666666666696],"xyz":[0.144646917742634634,0.0770664409622358743,0.691341420060241241],"hpluv":[264.267643395871801,435.679872957086786,33.3643121953656845],"hsluv":[264.267643395871801,96.8079128297289913,33.3643121953656845]},"#1133ee":{"lch":[35.3195411096734375,124.259061611723823,264.523680461367292],"luv":[35.3195411096734375,-11.8585821660500468,-123.691909281234786],"rgb":[0.0666666666666666657,0.2,0.933333333333333348],"xyz":[0.168459098008809371,0.0865913130687059,0.816752236128764464],"hpluv":[264.523680461367292,446.428943593210363,35.3195411096734375],"hsluv":[264.523680461367292,97.2502875158067752,35.3195411096734375]},"#1133ff":{"lch":[37.3094684856901466,133.858437412957159,264.724991571549936],"luv":[37.3094684856901466,-12.3064438760062309,-133.291532760957],"rgb":[0.0666666666666666657,0.2,1],"xyz":[0.194630146418640765,0.0970597324326386,0.954586424420546309],"hpluv":[264.724991571549936,455.266836240216,37.3094684856901466],"hsluv":[264.724991571549936,99.9999999999995168,37.3094684856901466]},"#66cc00":{"lch":[73.5514640948473328,100.417876322708906,119.311479215942285],"luv":[73.5514640948473328,-49.1602904566029579,87.5614968315714322],"rgb":[0.4,0.8,0],"xyz":[0.270712873389210462,0.460091387940038399,0.0745415201258350923],"hpluv":[119.311479215942285,173.244332851636557,73.5514640948473328],"hsluv":[119.311479215942285,100.00000000000226,73.5514640948473328]},"#66cc11":{"lch":[73.5777109322390572,99.3703085818509,119.605548775623987],"luv":[73.5777109322390572,-49.0915230219986611,86.397225621155485],"rgb":[0.4,0.8,0.0666666666666666657],"xyz":[0.271724538888847567,0.460496054139893252,0.079869625090590729],"hpluv":[119.605548775623987,171.375877908330068,73.5777109322390572],"hsluv":[119.605548775623987,98.5479766016144652,73.5777109322390572]},"#66cc22":{"lch":[73.626324929263788,97.4510710028789333,120.162888823436575],"luv":[73.626324929263788,-48.965269014871545,84.2562381661406192],"rgb":[0.4,0.8,0.133333333333333331],"xyz":[0.273599897027324623,0.461246197395284052,0.0897465112865699216],"hpluv":[120.162888823436575,167.954954584373922,73.626324929263788],"hsluv":[120.162888823436575,95.8800576342850377,73.626324929263788]},"#66cc33":{"lch":[73.7062524827218084,94.3550745227874,121.116489614327122],"luv":[73.7062524827218084,-48.7607908304490252,80.779114663321],"rgb":[0.4,0.8,0.2],"xyz":[0.276687647759782329,0.462481297688267179,0.106008665144181058],"hpluv":[121.116489614327122,162.442721914772306,73.7062524827218084],"hsluv":[121.116489614327122,91.5533619475712896,73.7062524827218084]},"#66cc44":{"lch":[73.8213986639243,90.0253172969507318,122.577193203242018],"luv":[73.8213986639243,-48.472817822786439,75.8613451418811451],"rgb":[0.4,0.8,0.266666666666666663],"xyz":[0.281145643004001244,0.464264495785954745,0.129487440097067696],"hpluv":[122.577193203242018,154.746814564283426,73.8213986639243],"hsluv":[122.577193203242018,85.4474048693987527,73.8213986639243]},"#66cc55":{"lch":[73.974942724102462,84.4934421806047879,124.700104619680829],"luv":[73.974942724102462,-48.100513339115345,69.4656921655632118],"rgb":[0.4,0.8,0.333333333333333315],"xyz":[0.28710805704336323,0.466649461401699606,0.160889487371041612],"hpluv":[124.700104619680829,144.936474170198323,73.974942724102462],"hsluv":[124.700104619680829,77.5306238992907,73.974942724102462]},"#66cc66":{"lch":[74.1695172801941567,77.8884466842553564,127.715012949239551],"luv":[74.1695172801941567,-47.6470375142611218,61.6146893443493937],"rgb":[0.4,0.8,0.4],"xyz":[0.294693052816871415,0.469683459711102924,0.200837131778185574],"hpluv":[127.715012949239551,133.256044234036153,74.1695172801941567],"hsluv":[127.715012949239551,67.8510775159793,74.1695172801941567]},"#66cc77":{"lch":[74.407302734023375,70.4570986939790203,131.971622948486811],"luv":[74.407302734023375,-47.1190629819757234,52.3831715350808551],"rgb":[0.4,0.8,0.466666666666666674],"xyz":[0.30400706583707332,0.47340906491918372,0.249890933684583483],"hpluv":[131.971622948486811,120.156846155807528,74.407302734023375],"hsluv":[131.971622948486811,68.6882673601907499,74.407302734023375]},"#66cc88":{"lch":[74.6900832163393602,62.6050444414555045,138.002106903522986],"luv":[74.6900832163393602,-46.5261552249599859,41.8892404980031543],"rgb":[0.4,0.8,0.533333333333333326],"xyz":[0.315147482939017121,0.477865231759961318,0.308563797088155622],"hpluv":[138.002106903522986,106.361808066007058,74.6900832163393602],"hsluv":[138.002106903522986,69.6340873295455367,74.6900832163393602]},"#66cc99":{"lch":[75.0192831982140405,54.9734389641357382,146.572693391746668],"luv":[75.0192831982140405,-45.8800303566060634,30.2836887782922481],"rgb":[0.4,0.8,0.6],"xyz":[0.32820444704808982,0.483088017403590475,0.377330474729273557],"hpluv":[146.572693391746668,92.9863760296957338,75.0192831982140405],"hsluv":[146.572693391746668,70.6723780843603,75.0192831982140405]},"#66ccaa":{"lch":[75.3959940236094,48.5503126646653,158.569930493367366],"luv":[75.3959940236094,-45.1937477629490587,17.7386026218441692],"rgb":[0.4,0.8,0.66666666666666663],"xyz":[0.343262140013342376,0.489111094589691597,0.456634324346272158],"hpluv":[158.569930493367366,81.7114817988577187,75.3959940236094],"hsluv":[158.569930493367366,71.7849539596152368,75.3959940236094]},"#66ccbb":{"lch":[75.8209952994642,44.7015709258060667,174.304687468137473],"luv":[75.8209952994642,-44.4809102105153755,4.43610979112772],"rgb":[0.4,0.8,0.733333333333333282],"xyz":[0.360399732120679051,0.495966131432626356,0.546892309444913849],"hpluv":[174.304687468137473,74.8122352806046109,75.8209952994642],"hsluv":[174.304687468137473,72.9527506991265113,75.8209952994642]},"#66cccc":{"lch":[76.2947739303160262,44.7620652034609634,192.177050630061018],"luv":[76.2947739303160262,-43.7549393425641924,-9.44180938207391],"rgb":[0.4,0.8,0.8],"xyz":[0.379692107564400749,0.503683081610115102,0.648498820115184],"hpluv":[192.177050630061018,75.6461904464395,76.2947739303160262],"hsluv":[192.177050630061018,74.1568646821725679,76.2947739303160262]},"#66ccdd":{"lch":[76.8175423984245782,49.1342213212598082,208.868111129197587],"luv":[76.8175423984245782,-43.0284772118039101,-23.7217590764220851],"rgb":[0.4,0.8,0.866666666666666696],"xyz":[0.401210433115034348,0.512290411830368719,0.76182866801519],"hpluv":[208.868111129197587,85.3113130970085791,76.8175423984245782],"hsluv":[208.868111129197587,75.3794120212671714,76.8175423984245782]},"#66ccee":{"lch":[77.3892571801628435,57.0358051623713038,222.109360872917676],"luv":[77.3892571801628435,-42.312941633688304,-38.245235531031426],"rgb":[0.4,0.8,0.933333333333333348],"xyz":[0.425022613381209058,0.521815283936838736,0.887239484083713226],"hpluv":[222.109360872917676,102.061631830010029,77.3892571801628435],"hsluv":[222.109360872917676,76.6041682601332923,77.3892571801628435]},"#66ccff":{"lch":[78.0096377377628158,67.2874731922355664,231.792303901557148],"luv":[78.0096377377628158,-41.6182406850010267,-52.872734853430309],"rgb":[0.4,0.8,1],"xyz":[0.451193661791040479,0.53228370330077146,1.02507367237549518],"hpluv":[231.792303901557148,124.498094909356865,78.0096377377628158],"hsluv":[231.792303901557148,99.9999999999966604,78.0096377377628158]},"#114400":{"lch":[24.4916204196936391,35.767443133059956,124.131260038140155],"luv":[24.4916204196936391,-20.0687794552527912,29.6066559991685239],"rgb":[0.0666666666666666657,0.266666666666666663,0],"xyz":[0.0229819284997768124,0.0425325580378379114,0.00699846233187489172],"hpluv":[124.131260038140155,185.314627891622,24.4916204196936391],"hsluv":[124.131260038140155,100.000000000002416,24.4916204196936391]},"#114411":{"lch":[24.6196313539200702,32.2821952767626144,127.715012949240105],"luv":[24.6196313539200702,-19.7481274165088401,25.5372589646650674],"rgb":[0.0666666666666666657,0.266666666666666663,0.0666666666666666657],"xyz":[0.0239935939994139341,0.0429372242376927643,0.0123265672966305223],"hpluv":[127.715012949240105,166.387555424049935,24.6196313539200702],"hsluv":[127.715012949240105,84.7209219338948,24.6196313539200702]},"#114422":{"lch":[24.8548180969752792,26.7199561105771828,135.968420687644709],"luv":[24.8548180969752792,-19.2104947057918238,18.5718321042894203],"rgb":[0.0666666666666666657,0.266666666666666663,0.133333333333333331],"xyz":[0.0258689521378909527,0.0436873674930835856,0.0222034534926097184],"hpluv":[135.968420687644709,136.415738329938534,24.8548180969752792],"hsluv":[135.968420687644709,85.5945702875542338,24.8548180969752792]},"#114433":{"lch":[25.2362525898650887,20.3101465248311648,155.348193219538018],"luv":[25.2362525898650887,-18.4590663004995292,8.4714180143512],"rgb":[0.0666666666666666657,0.266666666666666663,0.2],"xyz":[0.0289567028703486933,0.0449224677860667,0.0384656073502208651],"hpluv":[155.348193219538018,102.123929581721498,25.2362525898650887],"hsluv":[155.348193219538018,86.8340768870874911,25.2362525898650887]},"#114444":{"lch":[25.774812755707849,18.0038630185053101,192.177050630061132],"luv":[25.774812755707849,-17.5987843886529483,-3.79761393914762779],"rgb":[0.0666666666666666657,0.266666666666666663,0.266666666666666663],"xyz":[0.0334146981145675703,0.0467056658837542715,0.0619443823031075036],"hpluv":[192.177050630061132,88.6358691141452226,25.774812755707849],"hsluv":[192.177050630061132,88.2889223192016743,25.774812755707849]},"#114455":{"lch":[26.4741010086829718,23.9697809957076196,225.699525295295985],"luv":[26.4741010086829718,-16.7410035671662349,-17.1548593857925162],"rgb":[0.0666666666666666657,0.266666666666666663,0.333333333333333315],"xyz":[0.0393771121539295693,0.0490906314994991044,0.0933464295770814],"hpluv":[225.699525295295985,114.889984549549212,26.4741010086829718],"hsluv":[225.699525295295985,89.7968555301121398,26.4741010086829718]},"#114466":{"lch":[27.3316922889079734,34.6428172107851182,242.548035964380944],"luv":[27.3316922889079734,-15.9705048052882308,-30.7419544037807526],"rgb":[0.0666666666666666657,0.266666666666666663,0.4],"xyz":[0.0469621079274377407,0.052124629808902416,0.133294073984225381],"hpluv":[242.548035964380944,160.837015687659374,27.3316922889079734],"hsluv":[242.548035964380944,91.2329185483074525,27.3316922889079734]},"#114477":{"lch":[28.3404051997208484,46.6267191674415,250.798290317077829],"luv":[28.3404051997208484,-15.3352867062553546,-44.0327142242719844],"rgb":[0.0666666666666666657,0.266666666666666663,0.466666666666666674],"xyz":[0.0562761209476396601,0.0558502350169832323,0.18234787589062329],"hpluv":[250.798290317077829,208.770018220734585,28.3404051997208484],"hsluv":[250.798290317077829,92.5248535524246734,28.3404051997208484]},"#114488":{"lch":[29.4896359978219706,58.6954673108201632,255.342505689020953],"luv":[29.4896359978219706,-14.8523182742844106,-56.7852667926718055],"rgb":[0.0666666666666666657,0.266666666666666663,0.533333333333333326],"xyz":[0.0674165380495834882,0.0603064018577608302,0.241020739294195457],"hpluv":[255.342505689020953,252.565763352450517,29.4896359978219706],"hsluv":[255.342505689020953,93.6449802292742817,29.4896359978219706]},"#114499":{"lch":[30.7666487879374699,70.4540899928233699,258.107815399211404],"luv":[30.7666487879374699,-14.5185243824624628,-68.9419411278265102],"rgb":[0.0666666666666666657,0.266666666666666663,0.6],"xyz":[0.0804735021586562,0.0655291875013899877,0.309787416935313364],"hpluv":[258.107815399211404,290.579747717257874,30.7666487879374699],"hsluv":[258.107815399211404,94.5943513350065359,30.7666487879374699]},"#1144aa":{"lch":[32.1577052090601185,81.8040240174920541,259.917940759024589],"luv":[32.1577052090601185,-14.3204852090806973,-80.5408098347099894],"rgb":[0.0666666666666666657,0.266666666666666663,0.66666666666666663],"xyz":[0.0955311951239087437,0.0715522646874911,0.389091266552311965],"hpluv":[259.917940759024589,322.796594575352628,32.1577052090601185],"hsluv":[259.917940759024589,95.3887741756132925,32.1577052090601185]},"#1144bb":{"lch":[33.6489603009756664,92.7573184463875435,261.168522985608377],"luv":[33.6489603009756664,-14.2409127099882671,-91.6576048702508928],"rgb":[0.0666666666666666657,0.266666666666666663,0.733333333333333282],"xyz":[0.11266878723124539,0.0784073015304258547,0.479349251650953712],"hpluv":[261.168522985608377,349.796823816496214,33.6489603009756664],"hsluv":[261.168522985608377,96.0495339612535872,33.6489603009756664]},"#1144cc":{"lch":[35.2271045850644597,103.362934076908545,262.068884255867147],"luv":[35.2271045850644597,-14.262270250582695,-102.374234005860515],"rgb":[0.0666666666666666657,0.266666666666666663,0.8],"xyz":[0.131961162674967131,0.0861242517079146563,0.580955762321223812],"hpluv":[262.068884255867147,372.329293739207799,35.2271045850644597],"hsluv":[262.068884255867147,96.5982694251149638,35.2271045850644597]},"#1144dd":{"lch":[36.8797734412618,113.676357292171801,262.73849416957313],"luv":[36.8797734412618,-14.3684841809298494,-112.764625967365617],"rgb":[0.0666666666666666657,0.266666666666666663,0.866666666666666696],"xyz":[0.153479488225600674,0.0947315819281681903,0.69428561022122981],"hpluv":[262.73849416957313,391.13009227787353,36.8797734412618],"hsluv":[262.73849416957313,97.0546019825808,36.8797734412618]},"#1144ee":{"lch":[38.5957670998368911,123.747928777943088,263.249741523271325],"luv":[38.5957670998368911,-14.5455638799169762,-122.890099065165245],"rgb":[0.0666666666666666657,0.266666666666666663,0.933333333333333348],"xyz":[0.177291668491775412,0.104256454034638207,0.819696426289753],"hpluv":[263.249741523271325,406.853061330967478,38.5957670998368911],"hsluv":[263.249741523271325,97.4353215147193623,38.5957670998368911]},"#1144ff":{"lch":[40.3651306844127546,133.619394536005728,263.648645306126298],"luv":[40.3651306844127546,-14.7816672391382209,-132.799265471613751],"rgb":[0.0666666666666666657,0.266666666666666663,1],"xyz":[0.203462716901606805,0.114724873398570917,0.957530614581534878],"hpluv":[263.648645306126298,420.051425771921231,40.3651306844127546],"hsluv":[263.648645306126298,99.9999999999994458,40.3651306844127546]},"#66dd00":{"lch":[78.7732081443282084,109.616469768408933,120.762072840728067],"luv":[78.7732081443282084,-56.0659919017112145,94.1932853050883],"rgb":[0.4,0.866666666666666696,0],"xyz":[0.313346863936385611,0.54535936903439,0.0887528503082264109],"hpluv":[120.762072840728067,211.559351010719155,78.7732081443282084],"hsluv":[120.762072840728067,100.000000000002444,78.7732081443282084]},"#66dd11":{"lch":[78.7966434753788576,108.675393583239966,121.014553037765893],"luv":[78.7966434753788576,-55.9956244091473678,93.1387739746547],"rgb":[0.4,0.866666666666666696,0.0666666666666666657],"xyz":[0.314358529436022716,0.545764035234244882,0.0940809552729820475],"hpluv":[121.014553037765893,210.019013530063148,78.7966434753788576],"hsluv":[121.014553037765893,98.7735218244661866,78.7966434753788576]},"#66dd22":{"lch":[78.8400557089289435,106.948443645027297,121.491090191754736],"luv":[78.8400557089289435,-55.866227309203758,91.1972271745690506],"rgb":[0.4,0.866666666666666696,0.133333333333333331],"xyz":[0.316233887574499772,0.546514178489635682,0.10395784146896124],"hpluv":[121.491090191754736,207.186246213049145,78.8400557089289435],"hsluv":[121.491090191754736,96.5169147905729,78.8400557089289435]},"#66dd33":{"lch":[78.911446872650572,104.154611952746194,122.300539429107701],"luv":[78.911446872650572,-55.6560904548950788,88.037394249850891],"rgb":[0.4,0.866666666666666696,0.2],"xyz":[0.319321638306957478,0.547749278782618809,0.120219995326572376],"hpluv":[122.300539429107701,202.586476802368111,78.911446872650572],"hsluv":[122.300539429107701,92.8487034899531807,78.911446872650572]},"#66dd44":{"lch":[79.0143300648071687,100.229492569308348,123.526451276321851],"luv":[79.0143300648071687,-55.3589437481663,83.5544045983716899],"rgb":[0.4,0.866666666666666696,0.266666666666666663],"xyz":[0.323779633551176393,0.549532476880306375,0.143698770279459015],"hpluv":[123.526451276321851,196.088207898644384,79.0143300648071687],"hsluv":[123.526451276321851,87.6539206040991843,79.0143300648071687]},"#66dd55":{"lch":[79.1515854502963,95.1800529291645603,125.27945296022996],"luv":[79.1515854502963,-54.9726586351532518,77.699737954393882],"rgb":[0.4,0.866666666666666696,0.333333333333333315],"xyz":[0.329742047590538379,0.551917442496051125,0.17510081755343293],"hpluv":[125.27945296022996,187.665730733793509,79.1515854502963],"hsluv":[125.27945296022996,80.8868034505971707,79.1515854502963]},"#66dd66":{"lch":[79.3256225689869723,89.0890908185611607,127.715012949239735],"luv":[79.3256225689869723,-54.4988561596450722,70.4751075215082921],"rgb":[0.4,0.866666666666666696,0.4],"xyz":[0.337327043364046564,0.554951440805454443,0.215048461960576892],"hpluv":[127.715012949239735,177.410630109117562,79.3256225689869723],"hsluv":[127.715012949239735,72.5638298210149,79.3256225689869723]},"#66dd77":{"lch":[79.538466322575843,82.1265081512392072,131.057978326052336],"luv":[79.538466322575843,-53.9425296262626048,61.9271090770055395],"rgb":[0.4,0.866666666666666696,0.466666666666666674],"xyz":[0.346641056384248469,0.558677046013535294,0.264102263866974774],"hpluv":[131.057978326052336,165.560886464635786,79.538466322575843],"hsluv":[131.057978326052336,73.175897046832489,79.538466322575843]},"#66dd88":{"lch":[79.7918079202835173,74.5708009722257543,135.636001638862723],"luv":[79.7918079202835173,-53.3115731427918,52.1409678341327378],"rgb":[0.4,0.866666666666666696,0.533333333333333326],"xyz":[0.35778147348619227,0.563133212854312837,0.322775127270546969],"hpluv":[135.636001638862723,152.557764790666909,79.7918079202835173],"hsluv":[135.636001638862723,73.8730513922454435,79.7918079202835173]},"#66dd99":{"lch":[80.0870378401123162,66.8478260511747919,141.915708870878916],"luv":[80.0870378401123162,-52.6162023759431392,41.2330825345609924],"rgb":[0.4,0.866666666666666696,0.6],"xyz":[0.370838437595265,0.568355998497942,0.391541804911664904],"hpluv":[141.915708870878916,139.150468179242381,80.0870378401123162],"hsluv":[141.915708870878916,74.6453790933081791,80.0870378401123162]},"#66ddaa":{"lch":[80.4252690581998877,59.592891473004542,150.502508447871207],"luv":[80.4252690581998877,-51.8682972227800931,29.3426729750825572],"rgb":[0.4,0.866666666666666696,0.66666666666666663],"xyz":[0.385896130560517525,0.574379075684043117,0.470845654528663449],"hpluv":[150.502508447871207,126.571308780245914,80.4252690581998877],"hsluv":[150.502508447871207,75.4812281571350638,80.4252690581998877]},"#66ddbb":{"lch":[80.807354973374558,53.7174771102931672,161.973645166837599],"luv":[80.807354973374558,-51.0807157732000334,16.6231111165276104],"rgb":[0.4,0.866666666666666696,0.733333333333333282],"xyz":[0.4030337226678542,0.581234112526977875,0.561103639627305251],"hpluv":[161.973645166837599,116.757770235740637,80.807354973374558],"hsluv":[161.973645166837599,76.3679029554368753,80.807354973374558]},"#66ddcc":{"lch":[81.2339045655681389,50.3705316419042148,176.319314132685548],"luv":[81.2339045655681389,-50.2666331071559256,3.23358221770368903],"rgb":[0.4,0.866666666666666696,0.8],"xyz":[0.422326098111575954,0.588951062704466732,0.662710150297575407],"hpluv":[176.319314132685548,112.393665646206941,81.2339045655681389],"hsluv":[176.319314132685548,77.2923330418296501,81.2339045655681389]},"#66dddd":{"lch":[81.7052962965957903,50.5769089008318389,192.177050630061],"luv":[81.7052962965957903,-49.4389517336029,-10.6683534552210038],"rgb":[0.4,0.866666666666666696,0.866666666666666696],"xyz":[0.443844423662209442,0.597558392924720239,0.776039998197581404],"hpluv":[192.177050630061,116.242714563462513,81.7052962965957903],"hsluv":[192.177050630061,78.2416694753709407,81.7052962965957903]},"#66ddee":{"lch":[82.2216916522674524,54.6311568672274745,207.154140846621715],"luv":[82.2216916522674524,-48.6098170936026577,-24.9328895793911158],"rgb":[0.4,0.866666666666666696,0.933333333333333348],"xyz":[0.467656603928384207,0.607083265031190256,0.901450814266104627],"hpluv":[207.154140846621715,129.793318723999505,82.2216916522674524],"hsluv":[207.154140846621715,79.2037752530793,82.2216916522674524]},"#66ddff":{"lch":[82.7830488398693376,61.9519841783888339,219.519505956683815],"luv":[82.7830488398693376,-47.7902556034158366,-39.4225799891321387],"rgb":[0.4,0.866666666666666696,1],"xyz":[0.493827652338215572,0.617551684395123,1.03928500255788636],"hpluv":[219.519505956683815,152.730665075356086,82.7830488398693376],"hsluv":[219.519505956683815,99.9999999999957,82.7830488398693376]},"#115500":{"lch":[30.9160157060817227,46.0913193883500583,125.457330883646421],"luv":[30.9160157060817227,-26.7374134918097575,37.543580579466358],"rgb":[0.0666666666666666657,0.333333333333333315,0],"xyz":[0.0347951852141227744,0.0661590714665301755,0.0109362145699901016],"hpluv":[125.457330883646421,189.179880792461034,30.9160157060817227],"hsluv":[125.457330883646421,100.000000000002402,30.9160157060817227]},"#115511":{"lch":[31.0114762783458957,43.2230667766736616,127.715012949240275],"luv":[31.0114762783458957,-26.4410342208804181,34.1921805521528697],"rgb":[0.0666666666666666657,0.333333333333333315,0.0666666666666666657],"xyz":[0.0358068507137599,0.0665637376663850283,0.0162643195347457331],"hpluv":[127.715012949240275,176.861157643680144,31.0114762783458957],"hsluv":[127.715012949240275,90.0538522348087156,31.0114762783458957]},"#115522":{"lch":[31.1874163697014737,38.3803455570512071,132.492971129528541],"luv":[31.1874163697014737,-25.925914044022,28.3001396827055132],"rgb":[0.0666666666666666657,0.333333333333333315,0.133333333333333331],"xyz":[0.0376822088522369147,0.0673138809217758427,0.0261412057307249292],"hpluv":[132.492971129528541,156.159643444286843,31.1874163697014737],"hsluv":[132.492971129528541,90.4316047034468653,31.1874163697014737]},"#115533":{"lch":[31.4742731349983,31.7764378074468219,142.363318860140765],"luv":[31.4742731349983,-25.163724938647551,19.4043538140960301],"rgb":[0.0666666666666666657,0.333333333333333315,0.2],"xyz":[0.0407699595846946553,0.0685489812147589556,0.0424033595883360759],"hpluv":[142.363318860140765,128.111709873485438,31.4742731349983],"hsluv":[142.363318860140765,90.9947325890089616,31.4742731349983]},"#115544":{"lch":[31.8824114421380642,25.5202649789159608,161.635705606154772],"luv":[31.8824114421380642,-24.2205825435089714,8.04035483341083435],"rgb":[0.0666666666666666657,0.333333333333333315,0.266666666666666663],"xyz":[0.0452279548289135358,0.0703321793124465355,0.0658821345412227144],"hpluv":[161.635705606154772,101.571845607751229,31.8824114421380642],"hsluv":[161.635705606154772,91.6999843863076194,31.8824114421380642]},"#115555":{"lch":[32.417637609391285,23.7206023942150033,192.177050630061103],"luv":[32.417637609391285,-23.1868997601056,-5.00346454561771115],"rgb":[0.0666666666666666657,0.333333333333333315,0.333333333333333315],"xyz":[0.0511903688682755278,0.0727171449281913684,0.0972841818151966159],"hpluv":[192.177050630061103,92.8503782686988899,32.417637609391285],"hsluv":[192.177050630061103,92.4869346485079,32.417637609391285]},"#115566":{"lch":[33.0818646063754045,29.1355194477524577,220.509575549450261],"luv":[33.0818646063754045,-22.1516601517912761,-18.9257085999416219],"rgb":[0.0666666666666666657,0.333333333333333315,0.4],"xyz":[0.0587753646417837061,0.0757511432375946869,0.137231826222340592],"hpluv":[220.509575549450261,111.756325010930979,33.0818646063754045],"hsluv":[220.509575549450261,93.2955878193037904,33.0818646063754045]},"#115577":{"lch":[33.8736729304774826,39.2775515041961185,237.359341141202208],"luv":[33.8736729304774826,-21.1850732372535866,-33.0744421585153958],"rgb":[0.0666666666666666657,0.333333333333333315,0.466666666666666674],"xyz":[0.0680893776619856117,0.0794767484456755,0.186285628128738501],"hpluv":[237.359341141202208,147.13684637222039,33.8736729304774826],"hsluv":[237.359341141202208,94.078253732623736,33.8736729304774826]},"#115588":{"lch":[34.7888943497230514,51.2161985161337938,246.60972521059881],"luv":[34.7888943497230514,-20.3324266151093482,-47.0073549392562455],"rgb":[0.0666666666666666657,0.333333333333333315,0.533333333333333326],"xyz":[0.0792297947639294398,0.0839329152864531,0.244958491532310668],"hpluv":[246.60972521059881,186.812546427038342,34.7888943497230514],"hsluv":[246.60972521059881,94.8038015691112719,34.7888943497230514]},"#115599":{"lch":[35.8212274371681403,63.5782184467896,252.028930114170464],"luv":[35.8212274371681403,-19.6162163870228632,-60.476391389741444],"rgb":[0.0666666666666666657,0.333333333333333315,0.6],"xyz":[0.0922867588730021671,0.0891557009300822517,0.313725169173428575],"hpluv":[252.028930114170464,225.22013661091745,35.8212274371681403],"hsluv":[252.028930114170464,95.4562831747131355,35.8212274371681403]},"#1155aa":{"lch":[36.9628521043173777,75.808874965898184,255.452401876993463],"luv":[36.9628521043173777,-19.0419916394553752,-73.3783897206670588],"rgb":[0.0666666666666666657,0.333333333333333315,0.66666666666666663],"xyz":[0.107344451838254695,0.0951787781161833601,0.393029018790427176],"hpluv":[255.452401876993463,260.251896817562397,36.9628521043173777],"hsluv":[255.452401876993463,96.0310300088164155,36.9628521043173777]},"#1155bb":{"lch":[38.2050019251475845,87.6984258792502089,257.752076786877694],"luv":[38.2050019251475845,-18.6045414354547205,-85.7023041678273216],"rgb":[0.0666666666666666657,0.333333333333333315,0.733333333333333282],"xyz":[0.124482043945591342,0.102033814959118119,0.483287003889068922],"hpluv":[257.752076786877694,291.280156181798475,38.2050019251475845],"hsluv":[257.752076786877694,96.5305142623785,38.2050019251475845]},"#1155cc":{"lch":[39.5384610498345523,99.1886562531622,259.372402836059223],"luv":[39.5384610498345523,-18.292845239891637,-97.4872368176334447],"rgb":[0.0666666666666666657,0.333333333333333315,0.8],"xyz":[0.143774419389313096,0.10975076513660692,0.584893514559339],"hpluv":[259.372402836059223,318.332933912315752,39.5384610498345523],"hsluv":[259.372402836059223,96.9610449958707,39.5384610498345523]},"#1155dd":{"lch":[40.9539668975822053,110.288480556245688,260.557616930578945],"luv":[40.9539668975822053,-18.0934548393737415,-108.7941902648341],"rgb":[0.0666666666666666657,0.333333333333333315,0.866666666666666696],"xyz":[0.16529274493994664,0.118358095356860454,0.698223362459345],"hpluv":[260.557616930578945,341.722445031840948,40.9539668975822053],"hsluv":[260.557616930578945,97.330522563257,40.9539668975822053]},"#1155ee":{"lch":[42.4425141949683038,121.034132372772049,261.450904748640312],"luv":[42.4425141949683038,-17.992549051743687,-119.689303523123172],"rgb":[0.0666666666666666657,0.333333333333333315,0.933333333333333348],"xyz":[0.189104925206121377,0.127882967463330471,0.823634178527868244],"hpluv":[261.450904748640312,361.864588035447412,42.4425141949683038],"hsluv":[261.450904748640312,97.6470858685672596,42.4425141949683038]},"#1155ff":{"lch":[43.9955669218353762,131.469960671873054,262.140820458865903],"luv":[43.9955669218353762,-17.9770474653633769,-130.235081001594637],"rgb":[0.0666666666666666657,0.333333333333333315,1],"xyz":[0.21527597361595277,0.138351386827263168,0.961468366819650089],"hpluv":[262.140820458865903,379.190057269809415,43.9955669218353762],"hsluv":[262.140820458865903,99.9999999999993321,43.9955669218353762]},"#66ee00":{"lch":[83.9510288300903511,118.631054776009961,121.878900606421581],"luv":[83.9510288300903511,-62.6521043104729145,100.737485489455693],"rgb":[0.4,0.933333333333333348,0],"xyz":[0.360525640276900428,0.639716921715420939,0.104479109088397595],"hpluv":[121.878900606421581,316.932305812441825,83.9510288300903511],"hsluv":[121.878900606421581,100.000000000002245,83.9510288300903511]},"#66ee11":{"lch":[83.9720997528394406,117.779830021225337,122.096631719604488],"luv":[83.9720997528394406,-62.5821687959979371,99.7775551344988401],"rgb":[0.4,0.933333333333333348,0.0666666666666666657],"xyz":[0.361537305776537532,0.640121587915275847,0.109807214053153232],"hpluv":[122.096631719604488,315.12898496103287,83.9720997528394406],"hsluv":[122.096631719604488,98.9534187198870825,83.9720997528394406]},"#66ee22":{"lch":[84.0111361497279461,116.215639794016113,122.506307539641156],"luv":[84.0111361497279461,-62.4534076072217061,98.0084017366813498],"rgb":[0.4,0.933333333333333348,0.133333333333333331],"xyz":[0.363412663915014589,0.640871731170666648,0.119684100249132425],"hpluv":[122.506307539641156,311.807725961995743,84.0111361497279461],"hsluv":[122.506307539641156,97.0256918708191,84.0111361497279461]},"#66ee33":{"lch":[84.0753427139745213,113.679067087327056,123.198426402241765],"luv":[84.0753427139745213,-62.2438639038254564,95.1242960560921],"rgb":[0.4,0.933333333333333348,0.2],"xyz":[0.366500414647472295,0.642106831463649774,0.135946254106743575],"hpluv":[123.198426402241765,306.400922934277446,84.0753427139745213],"hsluv":[123.198426402241765,93.8862320250161133,84.0753427139745213]},"#66ee44":{"lch":[84.1678970009459704,110.10189342016568,124.237870325737177],"luv":[84.1678970009459704,-61.946619900698991,91.0222127702015626],"rgb":[0.4,0.933333333333333348,0.266666666666666663],"xyz":[0.37095840989169121,0.64389002956133734,0.159425029059630213],"hpluv":[124.237870325737177,298.731636810455427,84.1678970009459704],"hsluv":[124.237870325737177,89.4277949312148337,84.1678970009459704]},"#66ee55":{"lch":[84.2914184237995414,105.474359140243067,125.706632503417083],"luv":[84.2914184237995414,-61.5585501093914829,85.6468641835444657],"rgb":[0.4,0.933333333333333348,0.333333333333333315],"xyz":[0.376920823931053195,0.64627499517708209,0.190827076333604129],"hpluv":[125.706632503417083,288.732343582820249,84.2914184237995414],"hsluv":[125.706632503417083,83.5978964235977315,84.2914184237995414]},"#66ee66":{"lch":[84.4481159447294374,99.8471979874678652,127.715012949239849],"luv":[84.4481159447294374,-61.0799597466417339,78.9854509596370633],"rgb":[0.4,0.933333333333333348,0.4],"xyz":[0.38450581970456138,0.649308993486485408,0.230774720740748063],"hpluv":[127.715012949239849,276.453302697114395,84.4481159447294374],"hsluv":[127.715012949239849,76.3932656313124454,84.4481159447294374]},"#66ee77":{"lch":[84.6398667383604391,93.3381964812165,130.416076861551431],"luv":[84.6398667383604391,-60.5142850922984863,71.0636350191446127],"rgb":[0.4,0.933333333333333348,0.466666666666666674],"xyz":[0.393819832724763286,0.65303459869456626,0.279828522647145972],"hpluv":[130.416076861551431,262.087365127001192,84.6398667383604391],"hsluv":[130.416076861551431,76.8478121958162461,84.6398667383604391]},"#66ee88":{"lch":[84.8682629083727704,86.1443361377895513,134.024834696689027],"luv":[84.8682629083727704,-59.8677379892917187,61.9411058721588503],"rgb":[0.4,0.933333333333333348,0.533333333333333326],"xyz":[0.404960249826707086,0.657490765535343802,0.338501386050718167],"hpluv":[134.024834696689027,246.018013362770375,84.8682629083727704],"hsluv":[134.024834696689027,77.3690194462974858,84.8682629083727704]},"#66ee99":{"lch":[85.1346415661787432,78.5628931277068,138.840952739605655],"luv":[85.1346415661787432,-59.1488647733143296,51.7062856200641718],"rgb":[0.4,0.933333333333333348,0.6],"xyz":[0.418017213935779841,0.662713551178973,0.407268063691836046],"hpluv":[138.840952739605655,228.905884969324347,85.1346415661787432],"hsluv":[138.840952739605655,77.9507906120806,85.1346415661787432]},"#66eeaa":{"lch":[85.4401056772853451,71.025817565124143,145.263991147699045],"luv":[85.4401056772853451,-58.3680297483556387,40.4702342974360576],"rgb":[0.4,0.933333333333333348,0.66666666666666663],"xyz":[0.433074906901032342,0.668736628365074082,0.486571913308834647],"hpluv":[145.263991147699045,211.83630636980061,85.4401056772853451],"hsluv":[145.263991147699045,78.5856392083502868,85.4401056772853451]},"#66eebb":{"lch":[85.7855396574798448,64.1465768711300228,153.7611846199909],"luv":[85.7855396574798448,-57.5368534805651,28.3600743271201026],"rgb":[0.4,0.933333333333333348,0.733333333333333282],"xyz":[0.450212499008369,0.67559166520800884,0.576829898407476449],"hpluv":[153.7611846199909,196.542528595596508,85.7855396574798448],"hsluv":[153.7611846199909,79.2651091664321683,85.7855396574798448]},"#66eecc":{"lch":[86.1716220205593,58.7524914026155827,164.690737532459508],"luv":[86.1716220205593,-56.6676444389915517,15.5123602250092176],"rgb":[0.4,0.933333333333333348,0.8],"xyz":[0.46950487445209077,0.683308615385497697,0.678436409077746605],"hpluv":[164.690737532459508,185.645341664818176,86.1716220205593],"hsluv":[164.690737532459508,79.9801993176568118,86.1716220205593]},"#66eedd":{"lch":[86.5988364705929285,55.8111450312658164,177.877712634427581],"luv":[86.5988364705929285,-55.7728621696499403,2.06682246606168096],"rgb":[0.4,0.933333333333333348,0.866666666666666696],"xyz":[0.491023200002724258,0.691915945605751204,0.791766256977752603],"hpluv":[177.877712634427581,182.628088950326941,86.5988364705929285],"hsluv":[177.877712634427581,80.7217641095277543,86.5988364705929285]},"#66eeee":{"lch":[87.0674822997282263,56.1274864183573783,192.177050630061075],"luv":[87.0674822997282263,-54.8646438121880493,-11.8391549953798521],"rgb":[0.4,0.933333333333333348,0.933333333333333348],"xyz":[0.514835380268899,0.701440817712221221,0.917177073046275826],"hpluv":[192.177050630061075,191.066910285097691,87.0674822997282263],"hsluv":[192.177050630061075,81.4808670778618165,87.0674822997282263]},"#66eeff":{"lch":[87.5776846199412518,59.9248574237073512,205.793536431897621],"luv":[87.5776846199412518,-53.9544158989052178,-26.0750751151289606],"rgb":[0.4,0.933333333333333348,1],"xyz":[0.541006428678730389,0.711909237076154,1.05501126133805756],"hpluv":[205.793536431897621,213.276590696447101,87.5776846199412518],"hsluv":[205.793536431897621,99.9999999999933351,87.5776846199412518]},"#116600":{"lch":[37.1543973335168118,56.0416844920186463,126.180156646926719],"luv":[37.1543973335168118,-33.0828721903909511,45.2348755755691201],"rgb":[0.0666666666666666657,0.4,0],"xyz":[0.0498232429199692434,0.0962151868782235159,0.0159455671386054508],"hpluv":[126.180156646926719,191.399273993181851,37.1543973335168118],"hsluv":[126.180156646926719,100.000000000002359,37.1543973335168118]},"#116611":{"lch":[37.2288128297302237,53.6508389550451668,127.715012949240304],"luv":[37.2288128297302237,-32.820060550512963,42.4412081124095124],"rgb":[0.0666666666666666657,0.4,0.0666666666666666657],"xyz":[0.0508349084196063616,0.0966198530780783688,0.021273672103361084],"hpluv":[127.715012949240304,182.867554307566394,37.2288128297302237],"hsluv":[127.715012949240304,93.1121786917857719,37.2288128297302237]},"#116622":{"lch":[37.366211587350719,49.4912288674311,130.823584918521846],"luv":[37.366211587350719,-32.3540076461773722,37.4513006989015125],"rgb":[0.0666666666666666657,0.4,0.133333333333333331],"xyz":[0.0527102665580833837,0.0973699963334691831,0.0311505582993402766],"hpluv":[130.823584918521846,168.069340269208539,37.366211587350719],"hsluv":[130.823584918521846,93.2954788878505639,37.366211587350719]},"#116633":{"lch":[37.5909073580641291,43.4152735453156,136.786924005406348],"luv":[37.5909073580641291,-31.6415889136076061,29.7270218494359924],"rgb":[0.0666666666666666657,0.4,0.2],"xyz":[0.0557980172905411242,0.0986050966264523,0.0474127121569514198],"hpluv":[136.786924005406348,146.554466726503705,37.5909073580641291],"hsluv":[136.786924005406348,93.5769168130898095,37.5909073580641291]},"#116644":{"lch":[37.9120295698984506,36.3990668435195417,147.559563985674146],"luv":[37.9120295698984506,-30.7189764474867033,19.525279846848818],"rgb":[0.0666666666666666657,0.4,0.266666666666666663],"xyz":[0.0602560125347600048,0.100388294724139876,0.0708914871098380583],"hpluv":[147.559563985674146,121.829522477327146,37.9120295698984506],"hsluv":[147.559563985674146,93.9439470857740559,37.9120295698984506]},"#116655":{"lch":[38.335629212958338,30.5483862618043851,166.063087397862887],"luv":[38.335629212958338,-29.6490880228798659,7.35768187759708869],"rgb":[0.0666666666666666657,0.4,0.333333333333333315],"xyz":[0.066218426574122,0.102773260339884709,0.102293534383811974],"hpluv":[166.063087397862887,101.117192726530064,38.335629212958338],"hsluv":[166.063087397862887,94.3739252192313529,38.335629212958338]},"#116666":{"lch":[38.8651381017916293,29.1618890828208741,192.177050630061217],"luv":[38.8651381017916293,-28.5057600031098204,-6.15121301239451324],"rgb":[0.0666666666666666657,0.4,0.4],"xyz":[0.0738034223476301682,0.105807258649288027,0.142241178790955936],"hpluv":[192.177050630061217,95.2126746116157392,38.8651381017916293],"hsluv":[192.177050630061217,94.8399842705083245,38.8651381017916293]},"#116677":{"lch":[39.5016809883423079,34.1234106492309124,216.700227589977857],"luv":[39.5016809883423079,-27.3592385518708738,-20.3931169809293316],"rgb":[0.0666666666666666657,0.4,0.466666666666666674],"xyz":[0.0831174353678320876,0.109532863857368837,0.191294980697353845],"hpluv":[216.700227589977857,109.616563248578402,39.5016809883423079],"hsluv":[216.700227589977857,95.3164106037614687,39.5016809883423079]},"#116688":{"lch":[40.2443638992953723,43.6497103352843823,233.004065811630028],"luv":[40.2443638992953723,-26.2665776267255495,-34.862072688430807],"rgb":[0.0666666666666666657,0.4,0.533333333333333326],"xyz":[0.0942578524697759157,0.113989030698146435,0.249967844100926],"hpluv":[233.004065811630028,137.630797119362086,40.2443638992953723],"hsluv":[233.004065811630028,95.7822055324918864,40.2443638992953723]},"#116699":{"lch":[41.090575936542443,55.3002439505846866,242.81143298809],"luv":[41.090575936542443,-25.2678118474637223,-49.189985418125],"rgb":[0.0666666666666666657,0.4,0.6],"xyz":[0.107314816578848629,0.119211816341775592,0.318734521742043919],"hpluv":[242.81143298809,170.774941475023041,41.090575936542443],"hsluv":[242.81143298809,96.2225162944548202,41.090575936542443]},"#1166aa":{"lch":[42.0363074660961757,67.6887016451143,248.882871092507173],"luv":[42.0363074660961757,-24.3865946332867658,-63.1431257746482615],"rgb":[0.0666666666666666657,0.4,0.66666666666666663],"xyz":[0.122372509544101171,0.125234893527876701,0.39803837135904252],"hpluv":[248.882871092507173,204.329442679703192,42.0363074660961757],"hsluv":[248.882871092507173,96.6284204735347885,42.0363074660961757]},"#1166bb":{"lch":[43.0764730814379746,80.16050208662584,252.853006907061769],"luv":[43.0764730814379746,-23.6332520973097289,-76.5974901030376429],"rgb":[0.0666666666666666657,0.4,0.733333333333333282],"xyz":[0.139510101651437818,0.132089930370811459,0.488296356457684266],"hpluv":[252.853006907061769,236.134594524550181,43.0764730814379746],"hsluv":[252.853006907061769,96.9958197331145,43.0764730814379746]},"#1166cc":{"lch":[44.2052232400861271,92.4179309088515737,255.583916344807051],"luv":[44.2052232400861271,-23.008531750755072,-89.5079964033815259],"rgb":[0.0666666666666666657,0.4,0.8],"xyz":[0.158802477095159544,0.139806880548300261,0.589902867127954367],"hpluv":[255.583916344807051,265.290671800528912,44.2052232400861271],"hsluv":[255.583916344807051,97.3240770235992159,44.2052232400861271]},"#1166dd":{"lch":[45.4162296513266455,104.336857924373376,257.542523527564185],"luv":[45.4162296513266455,-22.507022318245486,-101.880390006599782],"rgb":[0.0666666666666666657,0.4,0.866666666666666696],"xyz":[0.180320802645793088,0.148414210768553795,0.703232715027960364],"hpluv":[257.542523527564185,291.518421142394175,45.4162296513266455],"hsluv":[257.542523527564185,97.6147741074162,45.4162296513266455]},"#1166ee":{"lch":[46.7029335650228674,115.880201424536907,258.995545526323895],"luv":[46.7029335650228674,-22.1198283610194721,-113.74943637429719],"rgb":[0.0666666666666666657,0.4,0.933333333333333348],"xyz":[0.204132982911967853,0.157939082875023812,0.828643531096483588],"hpluv":[258.995545526323895,314.850514307077333,46.7029335650228674],"hsluv":[258.995545526323895,97.870742288996567,46.7029335650228674]},"#1166ff":{"lch":[48.0587511138394348,127.054293237547355,260.103604495506659],"luv":[48.0587511138394348,-21.8364562757409573,-125.163743182322264],"rgb":[0.0666666666666666657,0.4,1],"xyz":[0.230304031321799219,0.168407502238956508,0.966477719388265433],"hpluv":[260.103604495506659,335.471932494038299,48.0587511138394348],"hsluv":[260.103604495506659,99.9999999999992184,48.0587511138394348]},"#66ff00":{"lch":[89.0839511722278417,127.467952451328657,122.755484474710229],"luv":[89.0839511722278417,-68.9671698198214074,107.198919720201],"rgb":[0.4,1,0],"xyz":[0.41237801270657426,0.74342166657477,0.121763233231621706],"hpluv":[122.755484474710229,522.717702913530729,89.0839511722278417],"hsluv":[122.755484474710229,100.000000000002402,89.0839511722278417]},"#66ff11":{"lch":[89.1030144718140917,126.693355761899767,122.944319876693868],"luv":[89.1030144718140917,-68.8988566751164342,106.320994836735167],"rgb":[0.4,1,0.0666666666666666657],"xyz":[0.413389678206211364,0.743826332774625,0.127091338196377329],"hpluv":[122.944319876693868,520.53129302948,89.1030144718140917],"hsluv":[122.944319876693868,99.9999999999913456,89.1030144718140917]},"#66ff22":{"lch":[89.1383344673707825,125.268361506965746,123.29878008449495],"luv":[89.1383344673707825,-68.7729595958538482,104.70168300016438],"rgb":[0.4,1,0.133333333333333331],"xyz":[0.415265036344688421,0.744576476030015755,0.136968224392356536],"hpluv":[123.29878008449495,516.49933125362179,89.1383344673707825],"hsluv":[123.29878008449495,99.9999999999914877,89.1383344673707825]},"#66ff33":{"lch":[89.1964366933732,122.952924407393425,123.895139690212403],"luv":[89.1964366933732,-68.5677350303770368,102.0582546055644],"rgb":[0.4,1,0.2],"xyz":[0.418352787077146127,0.745811576322998881,0.153230378249967686],"hpluv":[123.895139690212403,509.920932540516333,89.1964366933732],"hsluv":[123.895139690212403,99.9999999999913456,89.1964366933732]},"#66ff44":{"lch":[89.2802097655713,119.677402261160566,124.785058224819977],"luv":[89.2802097655713,-68.2758869475835439,98.2908127624369143],"rgb":[0.4,1,0.266666666666666663],"xyz":[0.422810782321365042,0.747594774420686448,0.176709153202854324],"hpluv":[124.785058224819977,500.557479589511445,89.2802097655713],"hsluv":[124.785058224819977,99.9999999999914451,89.2802097655713]},"#66ff55":{"lch":[89.392045372062455,115.420778437487911,126.031255758612545],"luv":[89.392045372062455,-67.8935601171189802,93.3403481337991536],"rgb":[0.4,1,0.333333333333333315],"xyz":[0.428773196360727,0.749979740036431197,0.20811120047682824],"hpluv":[126.031255758612545,488.288652672415253,89.392045372062455],"hsluv":[126.031255758612545,99.9999999999912177,89.392045372062455]},"#66ff66":{"lch":[89.5339732348528088,110.211236984550467,127.715012949239977],"luv":[89.5339732348528088,-67.4199983006921428,87.1840615410833664],"rgb":[0.4,1,0.4],"xyz":[0.436358192134235212,0.753013738345834516,0.248058844883972174],"hpluv":[127.715012949239977,473.1190638884799,89.5339732348528088],"hsluv":[127.715012949239977,99.9999999999912177,89.5339732348528088]},"#66ff77":{"lch":[89.7077333531255,104.130085615398272,129.945267186452298],"luv":[89.7077333531255,-66.8572982376138754,79.8321764869086223],"rgb":[0.4,1,0.466666666666666674],"xyz":[0.445672205154437118,0.756739343553915367,0.297112646790370083],"hpluv":[129.945267186452298,455.203211628206077,89.7077333531255],"hsluv":[129.945267186452298,99.9999999999911466,89.7077333531255]},"#66ff88":{"lch":[89.9148190538961529,97.3190386909276413,132.870301628739924],"luv":[89.9148190538961529,-66.2101394375234378,71.3246992800528687],"rgb":[0.4,1,0.533333333333333326],"xyz":[0.456812622256380918,0.761195510394692909,0.355785510193942278],"hpluv":[132.870301628739924,434.894743355908361,89.9148190538961529],"hsluv":[132.870301628739924,99.999999999990834,89.9148190538961529]},"#66ff99":{"lch":[90.1565046807361,89.9924560427222247,136.692010716646195],"luv":[90.1565046807361,-65.4854512845448795,61.7276098246221707],"rgb":[0.4,1,0.6],"xyz":[0.469869586365453618,0.766418296038322122,0.424552187835060157],"hpluv":[136.692010716646195,412.835114866532763,90.1565046807361],"hsluv":[136.692010716646195,99.9999999999909903,90.1565046807361]},"#66ffaa":{"lch":[90.4338646074596113,82.4570841698328678,141.679424663280656],"luv":[90.4338646074596113,-64.6920148236146,51.1284064669742264],"rgb":[0.4,1,0.66666666666666663],"xyz":[0.484927279330706174,0.772441373224423189,0.503856037452058758],"hpluv":[141.679424663280656,390.10709074414774,90.4338646074596113],"hsluv":[141.679424663280656,99.9999999999905924,90.4338646074596113]},"#66ffbb":{"lch":[90.747787175062669,75.1410408914244101,148.168460326052468],"luv":[90.747787175062669,-63.84001546278364,39.631155067172358],"rgb":[0.4,1,0.733333333333333282],"xyz":[0.502064871438042792,0.779296410067358,0.59411402255070056],"hpluv":[148.168460326052468,368.486167720556807,90.747787175062669],"hsluv":[148.168460326052468,99.9999999999904077,90.747787175062669]},"#66ffcc":{"lch":[91.0989856399247486,68.6265957122477,156.512275503644645],"luv":[91.0989856399247486,-62.9405723747737085,27.3513068826366492],"rgb":[0.4,1,0.8],"xyz":[0.521357246881764547,0.787013360244846805,0.695720533220970716],"hpluv":[156.512275503644645,350.804850059399143,91.0989856399247486],"hsluv":[156.512275503644645,99.9999999999903508,91.0989856399247486]},"#66ffdd":{"lch":[91.4880074096490716,63.6578272942329875,166.916209854529029],"luv":[91.4880074096490716,-62.0052733715472826,14.410588119229697],"rgb":[0.4,1,0.866666666666666696],"xyz":[0.542875572432398146,0.795620690465100311,0.809050381120976714],"hpluv":[166.916209854529029,341.336295176875581,91.4880074096490716],"hsluv":[166.916209854529029,99.9999999999898819,91.4880074096490716]},"#66ffee":{"lch":[91.9152423718395113,61.0528599966611765,179.125088100836763],"luv":[91.9152423718395113,-61.045742111776633,0.93224663816584552],"rgb":[0.4,1,0.933333333333333348],"xyz":[0.566687752698572855,0.805145562571570328,0.934461197189499937],"hpluv":[179.125088100836763,345.840646438583576,91.9152423718395113],"hsluv":[179.125088100836763,99.9999999999894,91.9152423718395113]},"#66ffff":{"lch":[92.3809308294128,61.4559907165056,192.17705063006116],"luv":[92.3809308294128,-60.0732592166006256,-12.9631139022354667],"rgb":[0.4,1,1],"xyz":[0.592858801108404276,0.815613981935503,1.07229538548128178],"hpluv":[192.17705063006116,370.76546272919029,92.3809308294128],"hsluv":[192.17705063006116,99.9999999999889866,92.3809308294128]},"#117700":{"lch":[43.2300348418233042,65.6725964696673685,126.613348243544976],"luv":[43.2300348418233042,-39.1679175007181684,52.7139845365981],"rgb":[0.0666666666666666657,0.466666666666666674,0],"xyz":[0.0682769809733868721,0.133122662985059287,0.0220968131564111547],"hpluv":[126.613348243544976,192.769325646383436,43.2300348418233042],"hsluv":[126.613348243544976,100.000000000002359,43.2300348418233042]},"#117711":{"lch":[43.289989941732955,63.6505577690815443,127.715012949240403],"luv":[43.289989941732955,-38.9372319378938414,50.351618378457772],"rgb":[0.0666666666666666657,0.466666666666666674,0.0666666666666666657],"xyz":[0.0692886464730239904,0.13352732918491414,0.0274249181211667845],"hpluv":[127.715012949240403,186.57525992916959,43.289989941732955],"hsluv":[127.715012949240403,95.0000616991484321,43.289989941732955]},"#117722":{"lch":[43.400811094951429,60.069144786817489,129.889765673233825],"luv":[43.400811094951429,-38.5230987158151308,46.089836414888758],"rgb":[0.0666666666666666657,0.466666666666666674,0.133333333333333331],"xyz":[0.0711640046115010194,0.134277472440304968,0.037301804317145984],"hpluv":[129.889765673233825,175.627665872500842,43.400811094951429],"hsluv":[129.889765673233825,95.0973605906006725,43.400811094951429]},"#117733":{"lch":[43.5823807888255317,54.6433249694405205,133.881596062605809],"luv":[43.5823807888255317,-37.8771324094584756,39.3854770715327476],"rgb":[0.0666666666666666657,0.466666666666666674,0.2],"xyz":[0.074251755343958753,0.135512572733288067,0.0535639581747571272],"hpluv":[133.881596062605809,159.098283206795713,43.5823807888255317],"hsluv":[133.881596062605809,95.249567515942033,43.5823807888255317]},"#117744":{"lch":[43.8425891980029,47.8554364611196803,140.669149905405504],"luv":[43.8425891980029,-37.0161352468332083,30.3306533110056051],"rgb":[0.0666666666666666657,0.466666666666666674,0.266666666666666663],"xyz":[0.0787097505881776266,0.137295770830975661,0.0770427331276437588],"hpluv":[140.669149905405504,138.507858249946878,43.8425891980029],"hsluv":[140.669149905405504,95.4533619015585373,43.8425891980029]},"#117755":{"lch":[44.18711059062651,40.7988283335817243,151.872601466806259],"luv":[44.18711059062651,-35.9805491223838843,19.2339407882209947],"rgb":[0.0666666666666666657,0.466666666666666674,0.333333333333333315],"xyz":[0.0846721646275396256,0.139680736446720494,0.108444780401617674],"hpluv":[151.872601466806259,117.163251003272293,44.18711059062651],"hsluv":[151.872601466806259,95.7000805167539426,44.18711059062651]},"#117766":{"lch":[44.6197667240920879,35.4343089397309186,169.362936023125116],"luv":[44.6197667240920879,-34.8254110013137463,6.54071850990925796],"rgb":[0.0666666666666666657,0.466666666666666674,0.4],"xyz":[0.0922571604010478,0.142714734756123784,0.148392424808761636],"hpluv":[169.362936023125116,100.771099800457392,44.6197667240920879],"hsluv":[169.362936023125116,95.9777414193434453,44.6197667240920879]},"#117777":{"lch":[45.1427402486772138,34.384087641882445,192.177050630061217],"luv":[45.1427402486772138,-33.6104614986274584,-7.25274850066749],"rgb":[0.0666666666666666657,0.466666666666666674,0.466666666666666674],"xyz":[0.101571173421249716,0.146440339964204608,0.197446226715159545],"hpluv":[192.177050630061217,96.651570122263351,45.1427402486772138],"hsluv":[192.177050630061217,96.2732475219964385,45.1427402486772138]},"#117788":{"lch":[45.7567431438856502,38.9735922704815891,213.78628123605418],"luv":[45.7567431438856502,-32.3916401681270685,-21.6730833451154119],"rgb":[0.0666666666666666657,0.466666666666666674,0.533333333333333326],"xyz":[0.112711590523193544,0.150896506804982206,0.256119090118731685],"hpluv":[213.78628123605418,108.082320192335175,45.7567431438856502],"hsluv":[213.78628123605418,96.5742797371803192,45.7567431438856502]},"#117799":{"lch":[46.4611794427891169,47.8902134896154763,229.321579893426758],"luv":[46.4611794427891169,-31.2154548044213769,-36.3189747850083791],"rgb":[0.0666666666666666657,0.466666666666666674,0.6],"xyz":[0.125768554632266272,0.156119292448611363,0.32488576775984962],"hpluv":[229.321579893426758,130.796423620493698,46.4611794427891169],"hsluv":[229.321579893426758,96.8705519561321,46.4611794427891169]},"#1177aa":{"lch":[47.254315604307827,59.1280670765604199,239.379878554404911],"luv":[47.254315604307827,-30.1165063567495856,-50.8834389666627231],"rgb":[0.0666666666666666657,0.466666666666666674,0.66666666666666663],"xyz":[0.1408262475975188,0.162142369634712458,0.40418961737684822],"hpluv":[239.379878554404911,158.77844008322549,47.254315604307827],"hsluv":[239.379878554404911,97.1543662497403488,47.254315604307827]},"#1177bb":{"lch":[48.1334597651774914,71.3648635001192133,245.920143546346225],"luv":[48.1334597651774914,-29.1175429122131746,-65.1545273725937761],"rgb":[0.0666666666666666657,0.466666666666666674,0.733333333333333282],"xyz":[0.157963839704855447,0.168997406477647216,0.494447602475489967],"hpluv":[245.920143546346225,188.138070935962588,48.1334597651774914],"hsluv":[245.920143546346225,97.4206074841270464,48.1334597651774914]},"#1177cc":{"lch":[49.0951452720171488,83.8954152066927463,250.336037436893122],"luv":[49.0951452720171488,-28.2310616920000612,-79.0028344329863756],"rgb":[0.0666666666666666657,0.466666666666666674,0.8],"xyz":[0.177256215148577201,0.176714356655136018,0.596054113145760178],"hpluv":[250.336037436893122,216.83980339157776,49.0951452720171488],"hsluv":[250.336037436893122,97.666394869173061,49.0951452720171488]},"#1177dd":{"lch":[50.1353116048344702,96.3594544857749,253.441700788778064],"luv":[50.1353116048344702,-27.4615589113116805,-92.3634519220491512],"rgb":[0.0666666666666666657,0.466666666666666674,0.866666666666666696],"xyz":[0.198774540699210744,0.185321686875389552,0.709383961045766176],"hpluv":[253.441700788778064,243.887723915279508,50.1353116048344702],"hsluv":[253.441700788778064,97.8905898818146341,50.1353116048344702]},"#1177ee":{"lch":[51.2494756916451593,108.579054392530807,255.706052301270915],"luv":[51.2494756916451593,-26.8078049752198453,-105.217644172385562],"rgb":[0.0666666666666666657,0.466666666666666674,0.933333333333333348],"xyz":[0.222586720965385454,0.194846558981859597,0.834794777114289399],"hpluv":[255.706052301270915,268.841280267375566,51.2494756916451593],"hsluv":[255.706052301270915,98.0932983984315,51.2494756916451593]},"#1177ff":{"lch":[52.4328877873246739,120.474912105814852,257.407785454377859],"luv":[52.4328877873246739,-26.2648114927385947,-117.577056112809359],"rgb":[0.0666666666666666657,0.466666666666666674,1],"xyz":[0.248757769375216875,0.205314978345792293,0.972628965406071133],"hpluv":[257.407785454377859,291.562836812545811,52.4328877873246739],"hsluv":[257.407785454377859,99.9999999999990905,52.4328877873246739]},"#118800":{"lch":[49.1629818744817157,75.0325981068150725,126.891404302910644],"luv":[49.1629818744817157,-45.0420871994947447,60.0091756264985],"rgb":[0.0666666666666666657,0.533333333333333326,0],"xyz":[0.0903493506983573252,0.177267402435000831,0.0294542697314011],"hpluv":[126.891404302910644,193.664979881129256,49.1629818744817157],"hsluv":[126.891404302910644,100.000000000002487,49.1629818744817157]},"#118811":{"lch":[49.2125288978643,73.2988946552939211,127.715012949240403],"luv":[49.2125288978643,-44.8394509336223663,57.9840633075946883],"rgb":[0.0666666666666666657,0.533333333333333326,0.0666666666666666657],"xyz":[0.0913610161979944435,0.177672068634855684,0.0347823746961567343],"hpluv":[127.715012949240403,188.999680167490567,49.2125288978643],"hsluv":[127.715012949240403,96.2345237189928326,49.2125288978643]},"#118822":{"lch":[49.3041772439320312,70.1927728141533,129.31476933948187],"luv":[49.3041772439320312,-44.4727599639014315,54.3065279366352556],"rgb":[0.0666666666666666657,0.533333333333333326,0.133333333333333331],"xyz":[0.0932363743364714725,0.178422211890246513,0.0446592608921359269],"hpluv":[129.31476933948187,180.6541776618526,49.3041772439320312],"hsluv":[129.31476933948187,96.2899748067816859,49.3041772439320312]},"#118833":{"lch":[49.454516912369769,65.3819990709954766,132.170105234646456],"luv":[49.454516912369769,-43.8931572746598917,48.4581938064309767],"rgb":[0.0666666666666666657,0.533333333333333326,0.2],"xyz":[0.0963241250689292,0.179657312183229612,0.060921414749747077],"hpluv":[132.170105234646456,167.761213036429979,49.454516912369769],"hsluv":[132.170105234646456,96.3778002926358,49.454516912369769]},"#118844":{"lch":[49.6703617695526,59.1036258375550787,136.829676092870073],"luv":[49.6703617695526,-43.1056388924535057,40.4368950689726887],"rgb":[0.0666666666666666657,0.533333333333333326,0.266666666666666663],"xyz":[0.10078212031314808,0.181440510280917205,0.0844001897026337156],"hpluv":[136.829676092870073,150.9927614306973,49.6703617695526],"hsluv":[136.829676092870073,96.4975069627829356,49.6703617695526]},"#118855":{"lch":[49.9568473676091145,51.9652717779864091,144.176427678513875],"luv":[49.9568473676091145,-42.1346422468413806,30.4148219408018328],"rgb":[0.0666666666666666657,0.533333333333333326,0.333333333333333315],"xyz":[0.106744534352510079,0.183825475896662038,0.115802236976607617],"hpluv":[144.176427678513875,131.995007799011802,49.9568473676091145],"hsluv":[144.176427678513875,96.6457662191899658,49.9568473676091145]},"#118866":{"lch":[50.3177367885428879,45.0776565581224133,155.49998607369966],"luv":[50.3177367885428879,-41.0189171061503615,18.6934095394821433],"rgb":[0.0666666666666666657,0.533333333333333326,0.4],"xyz":[0.11432953012601825,0.186859474206065329,0.155749881383751593],"hpluv":[155.49998607369966,113.67882025976219,50.3177367885428879],"hsluv":[155.49998607369966,96.8171590628882512,50.3177367885428879]},"#118877":{"lch":[50.7555873970602391,40.2042284802375036,171.921706717236162],"luv":[50.7555873970602391,-39.8052806191025255,5.64974535051283322],"rgb":[0.0666666666666666657,0.533333333333333326,0.466666666666666674],"xyz":[0.12364354314622017,0.190585079414146152,0.204803683290149502],"hpluv":[171.921706717236162,100.514149141729121,50.7555873970602391],"hsluv":[171.921706717236162,97.0050762990714333,50.7555873970602391]},"#118888":{"lch":[51.2718664023781088,39.4294820301430349,192.17705063006116],"luv":[51.2718664023781088,-38.5423368357954814,-8.3169901046866368],"rgb":[0.0666666666666666657,0.533333333333333326,0.533333333333333326],"xyz":[0.134783960248164,0.19504124625492375,0.263476546693721669],"hpluv":[192.17705063006116,97.5845966821491118,51.2718664023781088],"hsluv":[192.17705063006116,97.2026219422035,51.2718664023781088]},"#118899":{"lch":[51.8670503792929907,43.7110075029310678,211.486174513119295],"luv":[51.8670503792929907,-37.2752705782940623,-22.8299448145688864],"rgb":[0.0666666666666666657,0.533333333333333326,0.6],"xyz":[0.147840924357236725,0.200264031898552908,0.332243224334839549],"hpluv":[211.486174513119295,106.93960912970239,51.8670503792929907],"hsluv":[211.486174513119295,97.4033619208845,51.8670503792929907]},"#1188aa":{"lch":[52.5407237145479371,52.059033028958666,226.184651315961702],"luv":[52.5407237145479371,-36.0423686073764102,-37.5644856890150507],"rgb":[0.0666666666666666657,0.533333333333333326,0.66666666666666663],"xyz":[0.162898617322489253,0.206287109084654,0.411547073951838149],"hpluv":[226.184651315961702,125.730132415512543,52.5407237145479371],"hsluv":[226.184651315961702,97.6018250350267,52.5407237145479371]},"#1188bb":{"lch":[53.2916815113449047,62.8295543710454396,236.286042109927791],"luv":[53.2916815113449047,-34.8733609598062557,-52.2628127623381573],"rgb":[0.0666666666666666657,0.533333333333333326,0.733333333333333282],"xyz":[0.1800362094298259,0.213142145927588761,0.501805059050479896],"hpluv":[236.286042109927791,149.604233097343041,53.2916815113449047],"hsluv":[236.286042109927791,97.7937430875757201,53.2916815113449047]},"#1188cc":{"lch":[54.1180375597057548,74.8024459991104607,243.146336149822275],"luv":[54.1180375597057548,-33.7892633498457826,-66.735984369188742],"rgb":[0.0666666666666666657,0.533333333333333326,0.8],"xyz":[0.199328584873547654,0.220859096105077563,0.60341156972075],"hpluv":[243.146336149822275,175.393335022858878,54.1180375597057548],"hsluv":[243.146336149822275,97.9760759990174819,54.1180375597057548]},"#1188dd":{"lch":[55.0173353812408266,87.2581949437380331,247.918019831454984],"luv":[55.0173353812408266,-32.8032215872693484,-80.8575366823396138],"rgb":[0.0666666666666666657,0.533333333333333326,0.866666666666666696],"xyz":[0.220846910424181198,0.229466426325331097,0.716741417620756],"hpluv":[247.918019831454984,201.254684785248685,55.0173353812408266],"hsluv":[247.918019831454984,98.1468934162311513,55.0173353812408266]},"#1188ee":{"lch":[55.9866591638471363,99.7959623087877645,251.344854654704591],"luv":[55.9866591638471363,-31.921869990719685,-94.5527805483930734],"rgb":[0.0666666666666666657,0.533333333333333326,0.933333333333333348],"xyz":[0.244659090690355907,0.238991298431801141,0.842152233689279273],"hpluv":[251.344854654704591,226.187053837960264,55.9866591638471363],"hsluv":[251.344854654704591,98.3051827042817,55.9866591638471363]},"#1188ff":{"lch":[57.0227411270994082,112.196885547184024,253.882464988485651],"luv":[57.0227411270994082,-31.1468293758358783,-107.786901552649141],"rgb":[0.0666666666666666657,0.533333333333333326,1],"xyz":[0.270830139100187328,0.249459717795733837,0.979986421981061118],"hpluv":[253.882464988485651,249.673263359937977,57.0227411270994082],"hsluv":[253.882464988485651,99.9999999999988916,57.0227411270994082]},"#119900":{"lch":[54.9698669410824721,84.160615619067471,127.079428544988929],"luv":[54.9698669410824721,-50.7422517332937772,67.1433772639973],"rgb":[0.0666666666666666657,0.6,0],"xyz":[0.116218951150824812,0.229006603339936526,0.0380774698822233526],"hpluv":[127.079428544988929,194.277964405092661,54.9698669410824721],"hsluv":[127.079428544988929,100.000000000002373,54.9698669410824721]},"#119911":{"lch":[55.0116447857556494,82.6558224500047,127.715012949240403],"luv":[55.0116447857556494,-50.563404981135136,65.3859852078442],"rgb":[0.0666666666666666657,0.6,0.0666666666666666657],"xyz":[0.11723061665046193,0.229411269539791379,0.0434055748469789823],"hpluv":[127.715012949240403,190.659367551848248,55.0116447857556494],"hsluv":[127.715012949240403,97.0796004133795094,55.0116447857556494]},"#119922":{"lch":[55.0889600096002852,79.9388272851777657,128.936266554168185],"luv":[55.0889600096002852,-50.237998627918941,62.1800579091938204],"rgb":[0.0666666666666666657,0.6,0.133333333333333331],"xyz":[0.119105974788938959,0.230161412795182208,0.0532824610429581819],"hpluv":[128.936266554168185,184.133380166819137,55.0889600096002852],"hsluv":[128.936266554168185,97.113065541928691,55.0889600096002852]},"#119933":{"lch":[55.215893256771821,75.6695179958245916,131.075562701176153],"luv":[55.215893256771821,-49.7189430335536,57.0429895547794175],"rgb":[0.0666666666666666657,0.6,0.2],"xyz":[0.122193725521396693,0.231396513088165307,0.0695446149005693182],"hpluv":[131.075562701176153,173.898642472918851,55.215893256771821],"hsluv":[131.075562701176153,97.1665253707361,55.215893256771821]},"#119944":{"lch":[55.398361036949,69.9528706873860671,134.469703140623466],"luv":[55.398361036949,-49.0042253731102591,49.9198358669935303],"rgb":[0.0666666666666666657,0.6,0.266666666666666663],"xyz":[0.126651720765615566,0.2331797111858529,0.0930233898534559567],"hpluv":[134.469703140623466,160.231519707698453,55.398361036949],"hsluv":[134.469703140623466,97.2403070889690184,55.398361036949]},"#119955":{"lch":[55.6409569880907497,63.1400511875114887,139.633471194580181],"luv":[55.6409569880907497,-48.1074656204671172,40.8942271664002206],"rgb":[0.0666666666666666657,0.6,0.333333333333333315],"xyz":[0.132614134804977579,0.235564676801597733,0.124425437127429872],"hpluv":[139.633471194580181,143.995747016857166,55.6409569880907497],"hsluv":[139.633471194580181,97.3331834328701575,55.6409569880907497]},"#119966":{"lch":[55.9472168173363,55.8918514512489466,147.340496807064056],"luv":[55.9472168173363,-47.0549257965888,30.1617807320125095],"rgb":[0.0666666666666666657,0.6,0.4],"xyz":[0.140199130578485737,0.238598675111001024,0.164373081534573834],"hpluv":[147.340496807064056,126.76791164907155,55.9472168173363],"hsluv":[147.340496807064056,97.4426708460479,55.9472168173363]},"#119977":{"lch":[56.319758368673476,49.2851425936320169,158.582299284916047],"luv":[56.319758368673476,-45.8816608646539308,17.9971796894826],"rgb":[0.0666666666666666657,0.6,0.466666666666666674],"xyz":[0.14951314359868767,0.242324280319081847,0.213426883440971743],"hpluv":[158.582299284916047,111.043862853999471,56.319758368673476],"hsluv":[158.582299284916047,97.5654087237770398,56.319758368673476]},"#119988":{"lch":[56.7603710001512951,44.8759084930006864,173.96527373508107],"luv":[56.7603710001512951,-44.6272223318454451,4.71785862613608131],"rgb":[0.0666666666666666657,0.6,0.533333333333333326],"xyz":[0.16065356070063147,0.246780447159859445,0.27209974684454391],"hpluv":[173.96527373508107,100.324581054675164,56.7603710001512951],"hsluv":[173.96527373508107,97.6975811674153647,56.7603710001512951]},"#119999":{"lch":[57.2700846473106822,44.3289506401906692,192.177050630061103],"luv":[57.2700846473106822,-43.3315696575835219,-9.35045110518458422],"rgb":[0.0666666666666666657,0.6,0.6],"xyz":[0.173710524809704198,0.252003232803488575,0.340866424485661845],"hpluv":[192.177050630061103,98.2197789195824384,57.2700846473106822],"hsluv":[192.177050630061103,97.8353178900151903,57.2700846473106822]},"#1199aa":{"lch":[57.849232550626823,48.3524707931101716,209.625127722111756],"luv":[57.849232550626823,-42.0317498411296384,-23.9017454821038378],"rgb":[0.0666666666666666657,0.6,0.66666666666666663],"xyz":[0.188768217774956726,0.258026309989589697,0.42017027410266039],"hpluv":[209.625127722111756,106.062142541807418,57.849232550626823],"hsluv":[209.625127722111756,97.9750198241805492,57.849232550626823]},"#1199bb":{"lch":[58.4975141278551263,56.1838887208170235,223.492153209811363],"luv":[58.4975141278551263,-40.7596491137071553,-38.6688551152037832],"rgb":[0.0666666666666666657,0.6,0.733333333333333282],"xyz":[0.2059058098822934,0.264881346832524456,0.510428259201302192],"hpluv":[223.492153209811363,121.8747424026255,58.4975141278551263],"hsluv":[223.492153209811363,98.1135798876595686,58.4975141278551263]},"#1199cc":{"lch":[59.2140605434028515,66.4726101728698211,233.498474693243395],"luv":[59.2140605434028515,-39.5408457239066138,-53.4334111079625274],"rgb":[0.0666666666666666657,0.6,0.8],"xyz":[0.225198185326015127,0.272598297010013257,0.612034769871572348],"hpluv":[233.498474693243395,142.448281943894045,59.2140605434028515],"hsluv":[233.498474693243395,98.2484961488154482,59.2140605434028515]},"#1199dd":{"lch":[59.9975033067865553,78.1149919905427907,240.560044488236258],"luv":[59.9975033067865553,-38.3943918665613637,-68.0281018909060151],"rgb":[0.0666666666666666657,0.6,0.866666666666666696],"xyz":[0.24671651087664867,0.281205627230266819,0.725364617771578346],"hpluv":[240.560044488236258,165.211601361935521,59.9975033067865553],"hsluv":[240.560044488236258,98.3778942246892285,59.9975033067865553]},"#1199ee":{"lch":[60.8460449735814706,90.4022578402124,245.60857134482],"luv":[60.8460449735814706,-37.3332566635070862,-82.3334450239084106],"rgb":[0.0666666666666666657,0.6,0.933333333333333348],"xyz":[0.270528691142823408,0.290730499336736836,0.850775433840101569],"hpluv":[245.60857134482,188.532510112076068,60.8460449735814706],"hsluv":[245.60857134482,98.5004851129029788,60.8460449735814706]},"#1199ff":{"lch":[61.7575303771721877,102.910627792409826,249.306643617498082],"luv":[61.7575303771721877,-36.3651553748586,-96.2713497733895167],"rgb":[0.0666666666666666657,0.6,1],"xyz":[0.296699739552654829,0.301198918700669505,0.988609622131883414],"hpluv":[249.306643617498082,211.450946466820028,61.7575303771721877],"hsluv":[249.306643617498082,99.9999999999986215,61.7575303771721877]},"#000000":{"lch":[0,0,0],"luv":[0,0,0],"rgb":[0,0,0],"xyz":[0,0,0],"hpluv":[0,0,0],"hsluv":[0,0,0]},"#000011":{"lch":[0.365533479526218952,1.47895322486610792,265.8743202181779],"luv":[0.365533479526218952,-0.106402530834795422,-1.47512072142377915],"rgb":[0,0,0.0666666666666666657],"xyz":[0.00101166549963712174,0.000404666199854854377,0.00532810496475563146],"hpluv":[265.8743202181779,513.41269684428039,0.365533479526218952],"hsluv":[265.8743202181779,100.000000000000867,0.365533479526218952]},"#000022":{"lch":[1.04313510374015572,4.22053823263236,265.8743202181779],"luv":[1.04313510374015572,-0.303644457367982512,-4.20960128950726],"rgb":[0,0,0.133333333333333331],"xyz":[0.0028870236381141408,0.00115480945524567245,0.0152049911607348275],"hpluv":[265.8743202181779,513.41269684428039,1.04313510374015572],"hsluv":[265.8743202181779,100.000000000000838,1.04313510374015572]},"#000033":{"lch":[2.15879662382733661,8.73451929157831,265.8743202181779],"luv":[2.15879662382733661,-0.62840050829424543,-8.71188498868810868],"rgb":[0,0,0.2],"xyz":[0.00597477437057188088,0.00238990974822878574,0.0314671450183459725],"hpluv":[265.8743202181779,513.412696844280276,2.15879662382733661],"hsluv":[265.8743202181779,100.000000000000838,2.15879662382733661]},"#000044":{"lch":[3.76955286085941,15.251660031516769,265.874320218177957],"luv":[3.76955286085941,-1.0972728545435857,-15.2121374566379668],"rgb":[0,0,0.266666666666666663],"xyz":[0.0104327696147907597,0.00417310784591636182,0.054945919971232611],"hpluv":[265.874320218177957,513.41269684428039,3.76955286085941],"hsluv":[265.874320218177957,100.000000000000981,3.76955286085941]},"#000055":{"lch":[5.92388346812606947,23.9681097618519345,265.8743202181779],"luv":[5.92388346812606947,-1.7243733575266309,-23.905999708860417],"rgb":[0,0,0.333333333333333315],"xyz":[0.0163951836541527535,0.00655807346166119385,0.0863479672452065194],"hpluv":[265.8743202181779,513.41269684428039,5.92388346812606947],"hsluv":[265.8743202181779,100.000000000000838,5.92388346812606947]},"#000066":{"lch":[8.64689012997685,34.9854302247980513,265.8743202181779],"luv":[8.64689012997685,-2.51700882467034193,-34.8947703043127149],"rgb":[0,0,0.4],"xyz":[0.0239801794276609283,0.00959207177106450627,0.126295611652350481],"hpluv":[265.8743202181779,513.412696844280276,8.64689012997685],"hsluv":[265.8743202181779,100.000000000000838,8.64689012997685]},"#000077":{"lch":[11.4958709948623863,46.5124439559768703,265.874320218177957],"luv":[11.4958709948623863,-3.34631391244679577,-46.3919133681426672],"rgb":[0,0,0.466666666666666674],"xyz":[0.0332941924478628443,0.0133176769791453226,0.17534941355874839],"hpluv":[265.874320218177957,513.412696844280276,11.4958709948623863],"hsluv":[265.874320218177957,100.000000000001,11.4958709948623863]},"#000088":{"lch":[14.2727431262745554,57.7477048111956535,265.874320218177957],"luv":[14.2727431262745554,-4.15462898927595781,-57.598059593379169],"rgb":[0,0,0.533333333333333326],"xyz":[0.0444346095498066723,0.0177738438199229153,0.234022276962320558],"hpluv":[265.874320218177957,513.41269684428039,14.2727431262745554],"hsluv":[265.874320218177957,100.000000000000952,14.2727431262745554]},"#000099":{"lch":[16.9872454361813823,68.7306165552763701,265.874320218177957],"luv":[16.9872454361813823,-4.94478893879780923,-68.5525106354185567],"rgb":[0,0,0.6],"xyz":[0.0574915736588793858,0.0229966294635520763,0.302788954603438465],"hpluv":[265.874320218177957,513.412696844280163,16.9872454361813823],"hsluv":[265.874320218177957,100.000000000000952,16.9872454361813823]},"#0000aa":{"lch":[19.6469460262523299,79.4917998262647529,265.8743202181779],"luv":[19.6469460262523299,-5.71899674710351302,-79.2858077831434116],"rgb":[0,0,0.66666666666666663],"xyz":[0.0725492666241319278,0.0290197066496531778,0.382092804220437066],"hpluv":[265.8743202181779,513.41269684428039,19.6469460262523299],"hsluv":[265.8743202181779,100.000000000000824,19.6469460262523299]},"#0000bb":{"lch":[22.2578820656552736,90.0556810893410926,265.8743202181779],"luv":[22.2578820656552736,-6.47900976369593895,-89.8223142039161644],"rgb":[0,0,0.733333333333333282],"xyz":[0.0896868587314685745,0.0358747434925879363,0.472350789319078812],"hpluv":[265.8743202181779,513.41269684428039,22.2578820656552736],"hsluv":[265.8743202181779,100.000000000000796,22.2578820656552736]},"#0000cc":{"lch":[24.8249727536546274,100.442163488877583,265.874320218177957],"luv":[24.8249727536546274,-7.22625991008361535,-100.18188146585355],"rgb":[0,0,0.8],"xyz":[0.108979234175190315,0.043591693670076738,0.573957299989349],"hpluv":[265.874320218177957,513.41269684428039,24.8249727536546274],"hsluv":[265.874320218177957,100.000000000001,24.8249727536546274]},"#0000dd":{"lch":[27.3522973211786535,110.667751646404724,265.8743202181779],"luv":[27.3522973211786535,-7.96193460279319343,-110.380971421034161],"rgb":[0,0,0.866666666666666696],"xyz":[0.130497559725823858,0.052199023890330272,0.687287147889355],"hpluv":[265.8743202181779,513.412696844280276,27.3522973211786535],"hsluv":[265.8743202181779,100.000000000000824,27.3522973211786535]},"#0000ee":{"lch":[29.8432887766479737,120.746335558760222,265.8743202181779],"luv":[29.8432887766479737,-8.68703315051946,-120.433438072283309],"rgb":[0,0,0.933333333333333348],"xyz":[0.154309739991998596,0.0617238959968003,0.812697963957878189],"hpluv":[265.8743202181779,513.41269684428039,29.8432887766479737],"hsluv":[265.8743202181779,100.000000000000838,29.8432887766479737]},"#0000ff":{"lch":[32.3008729039800215,130.68975298582734,265.8743202181779],"luv":[32.3008729039800215,-9.40240721482262,-130.351088503561101],"rgb":[0,0,1],"xyz":[0.18048078840183,0.072192315360733,0.95053215224966],"hpluv":[265.8743202181779,513.41269684428039,32.3008729039800215],"hsluv":[265.8743202181779,100.000000000000824,32.3008729039800215]},"#001100":{"lch":[3.62113466359794112,5.60448249758782424,127.715012949240474],"luv":[3.62113466359794112,-3.42845440085753106,4.43350025228474376],"rgb":[0,0.0666666666666666657,0],"xyz":[0.00200440026092840902,0.00400880052185687355,0.00066813342030945088],"hpluv":[127.715012949240474,196.394882900214469,3.62113466359794112],"hsluv":[127.715012949240474,100.000000000002217,3.62113466359794112]},"#001111":{"lch":[3.9866681431241604,3.15408977882195618,192.17705063006116],"luv":[3.9866681431241604,-3.08312421078118115,-0.665302512969894178],"rgb":[0,0.0666666666666666657,0.0666666666666666657],"xyz":[0.00301606576056553076,0.00441346672171172814,0.00599623838506508234],"hpluv":[192.17705063006116,100.392967527320764,3.9866681431241604],"hsluv":[192.17705063006116,99.9999999999914,3.9866681431241604]},"#001122":{"lch":[4.66426976733809706,7.30142401028103372,246.87889630792742],"luv":[4.66426976733809706,-2.86709314837997242,-6.71495118794031054],"rgb":[0,0.0666666666666666657,0.133333333333333331],"xyz":[0.00489142389904254939,0.005163609977102546,0.0158731245810442775],"hpluv":[246.87889630792742,198.638412351210178,4.66426976733809706],"hsluv":[246.87889630792742,99.9999999999921414,4.66426976733809706]},"#001133":{"lch":[5.77993128742527773,13.8979406242137369,257.974087263939282],"luv":[5.77993128742527773,-2.89569220292521434,-13.5929290537429299],"rgb":[0,0.0666666666666666657,0.2],"xyz":[0.00797917463150029,0.00639871027008565886,0.0321352784386554208],"hpluv":[257.974087263939282,305.117489912579458,5.77993128742527773],"hsluv":[257.974087263939282,99.9999999999925,5.77993128742527773]},"#001144":{"lch":[7.39068752445735111,21.802452480470059,261.611708702028636],"luv":[7.39068752445735111,-3.1805605696034065,-21.569213444774455],"rgb":[0,0.0666666666666666657,0.266666666666666663],"xyz":[0.0124371698757191687,0.00818190836777323537,0.0556140533915420593],"hpluv":[261.611708702028636,374.334482048802613,7.39068752445735111],"hsluv":[261.611708702028636,99.9999999999929656,7.39068752445735111]},"#001155":{"lch":[9.4550232844459714,31.0886305445366773,263.238579866128873],"luv":[9.4550232844459714,-3.6602302532303379,-30.8724094237562916],"rgb":[0,0.0666666666666666657,0.333333333333333315],"xyz":[0.0183995839150811608,0.0105668739835180665,0.0870161006655159747],"hpluv":[263.238579866128873,417.232678203522596,9.4550232844459714],"hsluv":[263.238579866128873,99.9999999999929514,9.4550232844459714]},"#001166":{"lch":[11.6894020192987682,40.9340765206813302,264.100423242359113],"luv":[11.6894020192987682,-4.20741678933990659,-40.7172723123955791],"rgb":[0,0.0666666666666666657,0.4],"xyz":[0.025984579688589339,0.0136008722929213798,0.126963745072659923],"hpluv":[264.100423242359113,444.357002567308371,11.6894020192987682],"hsluv":[264.100423242359113,99.9999999999928235,11.6894020192987682]},"#001177":{"lch":[14.0165943101603965,51.0460922578313898,264.608714664977526],"luv":[14.0165943101603965,-4.79613195559092276,-50.8202779710972621],"rgb":[0,0.0666666666666666657,0.466666666666666674],"xyz":[0.0352985927087912515,0.0173264775010021979,0.176017546979057832],"hpluv":[264.608714664977526,462.124851551559573,14.0165943101603965],"hsluv":[264.608714664977526,99.9999999999931504,14.0165943101603965]},"#001188":{"lch":[16.3962585295353378,61.2721603523949625,264.931782730652174],"luv":[16.3962585295353378,-5.41289085195630371,-61.0325998698597871],"rgb":[0,0.0666666666666666657,0.533333333333333326],"xyz":[0.0464390098107350796,0.0217826443417797888,0.23469041038263],"hpluv":[264.931782730652174,474.195864485329537,16.3962585295353378],"hsluv":[264.931782730652174,99.9999999999933209,16.3962585295353378]},"#001199":{"lch":[18.8023327262484941,71.5200065602600148,265.148843888859801],"luv":[18.8023327262484941,-6.04826966448705239,-71.2638040834565771],"rgb":[0,0.0666666666666666657,0.6],"xyz":[0.059495973919807793,0.0270054299854089498,0.303457088023747934],"hpluv":[265.148843888859801,482.675370310212884,18.8023327262484941],"hsluv":[265.148843888859801,99.9999999999930651,18.8023327262484941]},"#0011aa":{"lch":[21.2181090603332123,81.7349311996174919,265.301088447161305],"luv":[21.2181090603332123,-6.69569086805443892,-81.4602154551880488],"rgb":[0,0.0666666666666666657,0.66666666666666663],"xyz":[0.0745536668850603351,0.0330285071715100548,0.382760937640746535],"hpluv":[265.301088447161305,488.81030222212587,21.2181090603332123],"hsluv":[265.301088447161305,99.9999999999931788,21.2181090603332123]},"#0011bb":{"lch":[23.6329047323064216,91.8852368853417,265.411605614461337],"luv":[23.6329047323064216,-7.35054503717070418,-91.590754146539723],"rgb":[0,0.0666666666666666657,0.733333333333333282],"xyz":[0.0916912589923969817,0.0398835440144448133,0.473018922739388281],"hpluv":[265.411605614461337,493.364573724961247,23.6329047323064216],"hsluv":[265.411605614461337,99.999999999993,23.6329047323064216]},"#0011cc":{"lch":[26.0399131129061345,101.953231398784169,265.494123438592396],"luv":[26.0399131129061345,-8.00958293333115,-101.638122640513785],"rgb":[0,0.0666666666666666657,0.8],"xyz":[0.110983634436118722,0.047600494191933615,0.574625433409658437],"hpluv":[265.494123438592396,496.821968194535657,26.0399131129061345],"hsluv":[265.494123438592396,99.9999999999927383,26.0399131129061345]},"#0011dd":{"lch":[28.43483595206839,111.929749681002491,265.557201901085818],"luv":[28.43483595206839,-8.67050070949402496,-111.593419524175076],"rgb":[0,0.0666666666666666657,0.866666666666666696],"xyz":[0.132501959986752266,0.056207824412187149,0.687955281309664435],"hpluv":[265.557201901085818,499.498435149301031,28.43483595206839],"hsluv":[265.557201901085818,99.9999999999932214,28.43483595206839]},"#0011ee":{"lch":[30.8150119654139019,121.810820553676152,265.60639254385444],"luv":[30.8150119654139019,-9.33165721729429798,-121.452855781734542],"rgb":[0,0.0666666666666666657,0.933333333333333348],"xyz":[0.156314140252927,0.0657326965186571799,0.813366097378187658],"hpluv":[265.60639254385444,501.606152289563909,30.8150119654139019],"hsluv":[265.60639254385444,99.9999999999933635,30.8150119654139019]},"#0011ff":{"lch":[33.1788572452669683,131.59562707663585,265.645416939351662],"luv":[33.1788572452669683,-9.99188030865750321,-131.215743695604147],"rgb":[0,0.0666666666666666657,1],"xyz":[0.182485188662758396,0.076201115882589876,0.951200285669969503],"hpluv":[265.645416939351662,503.291227463659,33.1788572452669683],"hsluv":[265.645416939351662,99.9999999999995,33.1788572452669683]},"#55aa00":{"lch":[62.2364297391950743,84.7105424007581291,119.071642820441127],"luv":[62.2364297391950743,-41.1610955154551661,74.0380997176333437],"rgb":[0.333333333333333315,0.66666666666666663,0],"xyz":[0.181203244729902568,0.306798408854291604,0.0496696976001293408],"hpluv":[119.071642820441127,172.715819722381468,62.2364297391950743],"hsluv":[119.071642820441127,100.00000000000216,62.2364297391950743]},"#55aa11":{"lch":[62.270812500354296,83.3839078255156352,119.512873370738717],"luv":[62.270812500354296,-41.0765057562956173,72.5644317769187808],"rgb":[0.333333333333333315,0.66666666666666663,0.0666666666666666657],"xyz":[0.182214910229539701,0.307203075054146457,0.0549978025648849705],"hpluv":[119.512873370738717,169.917081036602212,62.270812500354296],"hsluv":[119.512873370738717,97.826098763204655,62.270812500354296]},"#55aa22":{"lch":[62.3344691942433826,80.9675552156414,120.358690899927907],"luv":[62.3344691942433826,-40.9219560187625078,69.8651451955580285],"rgb":[0.333333333333333315,0.66666666666666663,0.133333333333333331],"xyz":[0.184090268368016702,0.307953218309537258,0.0648746887608641631],"hpluv":[120.358690899927907,164.824621464176317,62.3344691942433826],"hsluv":[120.358690899927907,93.8493385636837729,62.3344691942433826]},"#55aa33":{"lch":[62.4390542004851312,77.1100321042589343,121.835090998601942],"luv":[62.4390542004851312,-40.6737079775314143,65.5103543760705094],"rgb":[0.333333333333333315,0.66666666666666663,0.2],"xyz":[0.187178019100474435,0.309188318602520384,0.0811368426184753133],"hpluv":[121.835090998601942,156.708983850290963,62.4390542004851312],"hsluv":[121.835090998601942,87.4478443822902,62.4390542004851312]},"#55aa44":{"lch":[62.5895604608427192,71.8060360850404322,124.168545167949461],"luv":[62.5895604608427192,-40.3283690350335959,59.4115264003566281],"rgb":[0.333333333333333315,0.66666666666666663,0.266666666666666663],"xyz":[0.191636014344693323,0.310971516700207951,0.104615617571361952],"hpluv":[124.168545167949461,145.578881327618376,62.5895604608427192],"hsluv":[124.168545167949461,78.5131262768233569,62.5895604608427192]},"#55aa55":{"lch":[62.7899606618147317,65.2067785819955361,127.715012949239551],"luv":[62.7899606618147317,-39.8892256495404212,51.582687503865472],"rgb":[0.333333333333333315,0.66666666666666663,0.333333333333333315],"xyz":[0.197598428384055336,0.313356482315952811,0.136017664845335867],"hpluv":[127.715012949239551,131.777681042751937,62.7899606618147317],"hsluv":[127.715012949239551,67.0983271543339583,62.7899606618147317]},"#55aa66":{"lch":[63.0434325957243402,57.6560159218084,133.059858461454269],"luv":[63.0434325957243402,-39.3653397911167744,42.1258376190401904],"rgb":[0.333333333333333315,0.66666666666666663,0.4],"xyz":[0.205183424157563493,0.31639048062535613,0.175965309252479829],"hpluv":[133.059858461454269,116.049721847977636,63.0434325957243402],"hsluv":[133.059858461454269,68.1368400599560289,63.0434325957243402]},"#55aa77":{"lch":[63.3524771250310863,49.7736139598232441,141.163090238883626],"luv":[63.3524771250310863,-38.7703675351212311,31.2133184364163512],"rgb":[0.333333333333333315,0.66666666666666663,0.466666666666666674],"xyz":[0.214497437177765427,0.320116085833436925,0.225019111158877738],"hpluv":[141.163090238883626,99.6953496544650903,63.3524771250310863],"hsluv":[141.163090238883626,69.3257510819996696,63.3524771250310863]},"#55aa88":{"lch":[63.7189896387035901,42.62351374085884,153.427389325734708],"luv":[63.7189896387035901,-38.1211143540371324,19.0668446268281784],"rgb":[0.333333333333333315,0.66666666666666663,0.533333333333333326],"xyz":[0.225637854279709227,0.324572252674214523,0.283691974562449878],"hpluv":[153.427389325734708,84.882799477410984,63.7189896387035901],"hsluv":[153.427389325734708,70.6362499177174783,63.7189896387035901]},"#55aa99":{"lch":[64.1443101574831473,37.9035590936142697,170.991128647613664],"luv":[64.1443101574831473,-37.4359848569684885,5.93521943587048106],"rgb":[0.333333333333333315,0.66666666666666663,0.6],"xyz":[0.238694818388781954,0.329795038317843681,0.352458652203567813],"hpluv":[170.991128647613664,74.9827180661079211,64.1443101574831473],"hsluv":[170.991128647613664,72.0364673991159918,64.1443101574831473]},"#55aaaa":{"lch":[64.6292640862610881,37.5790288142004414,192.177050630061],"luv":[64.6292640862610881,-36.7335179653569526,-7.92666793219602717],"rgb":[0.333333333333333315,0.66666666666666663,0.66666666666666663],"xyz":[0.253752511354034482,0.335818115503944803,0.431762501820566413],"hpluv":[192.177050630061,73.7828909738526,64.6292640862610881],"hsluv":[192.177050630061,73.4940830927894808,64.6292640862610881]},"#55aabb":{"lch":[65.1741997434662466,42.3607987370151307,211.725401595501864],"luv":[65.1741997434662466,-36.0311661131296148,-22.2753751520813346],"rgb":[0.333333333333333315,0.66666666666666663,0.733333333333333282],"xyz":[0.270890103461371157,0.342673152346879561,0.522020486919208104],"hpluv":[211.725401595501864,82.4760322189960249,65.1741997434662466],"hsluv":[211.725401595501864,74.9784994025983,65.1741997434662466]},"#55aacc":{"lch":[65.7790257871148327,51.0903516363502916,226.227071697937646],"luv":[65.7790257871148327,-35.3444111183519212,-36.8916878581455236],"rgb":[0.333333333333333315,0.66666666666666663,0.8],"xyz":[0.290182478905092855,0.350390102524368363,0.62362699758947826],"hpluv":[226.227071697937646,98.5577501957325808,65.7790257871148327],"hsluv":[226.227071697937646,76.4624197891718,65.7790257871148327]},"#55aadd":{"lch":[66.4432499478878071,62.1650528283955595,236.084470311275709],"luv":[66.4432499478878071,-34.6862381636523693,-51.5883579425784404],"rgb":[0.333333333333333315,0.66666666666666663,0.866666666666666696],"xyz":[0.311700804455726455,0.358997432744621869,0.736956845489484258],"hpluv":[236.084470311275709,118.722973851074883,66.4432499478878071],"hsluv":[236.084470311275709,77.9227939155192928,66.4432499478878071]},"#55aaee":{"lch":[67.1660194476775274,74.4631251020179832,242.774049894046698],"luv":[67.1660194476775274,-34.0669326024190866,-66.2133000462974763],"rgb":[0.333333333333333315,0.66666666666666663,0.933333333333333348],"xyz":[0.335512984721901164,0.368522304851091886,0.862367661558007481],"hpluv":[242.774049894046698,140.679551339708695,67.1660194476775274],"hsluv":[242.774049894046698,80.7550915423080085,67.1660194476775274]},"#55aaff":{"lch":[67.9461628502375135,87.3278464079016,247.446578213330071],"luv":[67.9461628502375135,-33.4941307575646476,-80.6492155140842897],"rgb":[0.333333333333333315,0.66666666666666663,1],"xyz":[0.361684033131732585,0.37899072421502461,1.00020184984978933],"hpluv":[247.446578213330071,163.089927997179217,67.9461628502375135],"hsluv":[247.446578213330071,99.9999999999981,67.9461628502375135]},"#002200":{"lch":[10.1376941245203973,15.6902558355344119,127.715012949240474],"luv":[10.1376941245203973,-9.59826829561359141,12.4119850914324186],"rgb":[0,0.133333333333333331,0],"xyz":[0.00572002399569634425,0.0114400479913928481,0.00190667466523206119],"hpluv":[127.715012949240474,196.394882900214583,10.1376941245203973],"hsluv":[127.715012949240474,100.000000000002331,10.1376941245203973]},"#002211":{"lch":[10.4423176349325608,11.2803579121031614,143.951720967420982],"luv":[10.4423176349325608,-9.12041102953238614,6.63811549142769763],"rgb":[0,0.133333333333333331,0.0666666666666666657],"xyz":[0.00673168949533346599,0.0118447141912477027,0.00723477962998769243],"hpluv":[143.951720967420982,137.077225818420459,10.4423176349325608],"hsluv":[143.951720967420982,99.9999999999911,10.4423176349325608]},"#002222":{"lch":[10.9891417742670896,8.69416226881610399,192.17705063006116],"luv":[10.9891417742670896,-8.49854762011842,-1.83388819318003415],"rgb":[0,0.133333333333333331,0.133333333333333331],"xyz":[0.00860704763381048461,0.0125948574466385205,0.0171116658259668902],"hpluv":[192.17705063006116,100.392967527320849,10.9891417742670896],"hsluv":[192.17705063006116,99.9999999999915,10.9891417742670896]},"#002233":{"lch":[11.8439988341371283,14.4341695325786503,236.81663495428262],"luv":[11.8439988341371283,-7.90011340243738758,-12.0802921456333543],"rgb":[0,0.133333333333333331,0.2],"xyz":[0.0116947983662682251,0.0138299577396216334,0.0333738196835780335],"hpluv":[236.81663495428262,154.643892414528665,11.8439988341371283],"hsluv":[236.81663495428262,99.9999999999918572,11.8439988341371283]},"#002244":{"lch":[12.9926705590666103,23.9154033254141893,251.756603241059679],"luv":[12.9926705590666103,-7.48682111947174356,-22.713300635140282],"rgb":[0,0.133333333333333331,0.266666666666666663],"xyz":[0.0161527936104871039,0.0156131558373092099,0.056852594636464672],"hpluv":[251.756603241059679,233.570832873869165,12.9926705590666103],"hsluv":[251.756603241059679,99.9999999999922551,12.9926705590666103]},"#002255":{"lch":[14.3995425627967926,34.0053227001087492,257.612107564284656],"luv":[14.3995425627967926,-7.29512566501762105,-33.2135983216232162],"rgb":[0,0.133333333333333331,0.333333333333333315],"xyz":[0.022115207649849096,0.0179981214530540411,0.0882546419104385804],"hpluv":[257.612107564284656,299.666041626864057,14.3995425627967926],"hsluv":[257.612107564284656,99.9999999999922551,14.3995425627967926]},"#002266":{"lch":[16.0198287291043684,44.1221041927951489,260.479541157990241],"luv":[16.0198287291043684,-7.29778599254304705,-43.514392998258792],"rgb":[0,0.133333333333333331,0.4],"xyz":[0.0297002034233572743,0.0210321197624573561,0.128202286317582542],"hpluv":[260.479541157990241,349.492349810916096,16.0198287291043684],"hsluv":[260.479541157990241,99.9999999999926672,16.0198287291043684]},"#002277":{"lch":[17.8086814865908138,54.1839210795750787,262.094384047744654],"luv":[17.8086814865908138,-7.45254493353373,-53.6689563674502708],"rgb":[0,0.133333333333333331,0.466666666666666674],"xyz":[0.0390142164435591868,0.0247577249705381724,0.177256088223980451],"hpluv":[262.094384047744654,386.080609388904179,17.8086814865908138],"hsluv":[262.094384047744654,99.9999999999926246,17.8086814865908138]},"#002288":{"lch":[19.7262797638069571,64.1945165648047862,263.091662768615947],"luv":[19.7262797638069571,-7.7213996360385595,-63.7284547486409778],"rgb":[0,0.133333333333333331,0.533333333333333326],"xyz":[0.0501546335455030148,0.0292138918113157633,0.235928951627552619],"hpluv":[263.091662768615947,412.944865974292611,19.7262797638069571],"hsluv":[263.091662768615947,99.9999999999928093,19.7262797638069571]},"#002299":{"lch":[21.7396965211461932,74.1610579713059082,263.749129578079874],"luv":[21.7396965211461932,-8.0748025544340809,-73.7201470639492129],"rgb":[0,0.133333333333333331,0.6],"xyz":[0.0632115976545757352,0.0344366774549449278,0.304695629268670554],"hpluv":[263.749129578079874,432.874263951475,21.7396965211461932],"hsluv":[263.749129578079874,99.9999999999928662,21.7396965211461932]},"#0022aa":{"lch":[23.8228560713303921,84.0831956926279389,264.204285416148139],"luv":[23.8228560713303921,-8.49087961251211532,-83.6533846373868641],"rgb":[0,0.133333333333333331,0.66666666666666663],"xyz":[0.0782692906198282773,0.0404597546410460224,0.383999478885669154],"hpluv":[264.204285416148139,447.872821658188343,23.8228560713303921],"hsluv":[264.204285416148139,99.9999999999925251,23.8228560713303921]},"#0022bb":{"lch":[25.9556350824861326,93.9557715434331868,264.531619021467236],"luv":[25.9556350824861326,-8.95364890679069,-93.5281731756572725],"rgb":[0,0.133333333333333331,0.733333333333333282],"xyz":[0.0954068827271649239,0.0473147914839807809,0.474257463984310901],"hpluv":[264.531619021467236,459.336683180505304,25.9556350824861326],"hsluv":[264.531619021467236,99.9999999999932783,25.9556350824861326]},"#0022cc":{"lch":[28.122733334265547,103.772183036952711,264.774345627526145],"luv":[28.122733334265547,-9.45141286238599143,-103.340876555018355],"rgb":[0,0.133333333333333331,0.8],"xyz":[0.114699258170886664,0.0550317416614695826,0.575863974654581057],"hpluv":[264.774345627526145,468.233789407088068,28.122733334265547],"hsluv":[264.774345627526145,99.9999999999932,28.122733334265547]},"#0022dd":{"lch":[30.3126112219004114,113.526334495176528,264.958927468127968],"luv":[30.3126112219004114,-9.97554123069502552,-113.087210599012522],"rgb":[0,0.133333333333333331,0.866666666666666696],"xyz":[0.136217583721520208,0.0636390718817231166,0.689193822554587],"hpluv":[264.958927468127968,475.239568383116307,30.3126112219004114],"hsluv":[264.958927468127968,99.9999999999930651,30.3126112219004114]},"#0022ee":{"lch":[32.516600051948771,123.213441320075319,265.102292473050682],"luv":[32.516600051948771,-10.519601137712538,-122.76355368691101],"rgb":[0,0.133333333333333331,0.933333333333333348],"xyz":[0.160029763987694945,0.0731639439881931475,0.814604638623110278],"hpluv":[265.102292473050682,480.830806343612153,32.516600051948771],"hsluv":[265.102292473050682,99.9999999999931504,32.516600051948771]},"#0022ff":{"lch":[34.728199222084136,132.830192238289243,265.215668718406278],"luv":[34.728199222084136,-11.0787458291525667,-132.367372720447662],"rgb":[0,0.133333333333333331,1],"xyz":[0.186200812397526339,0.0836323633521258575,0.952438826914892123],"hpluv":[265.215668718406278,485.348691920142073,34.728199222084136],"hsluv":[265.215668718406278,99.9999999999995595,34.728199222084136]},"#55bb00":{"lch":[67.6287132051522093,94.1564927152114421,120.799924159261636],"luv":[67.6287132051522093,-48.2120532219748839,80.8767150949587403],"rgb":[0.333333333333333315,0.733333333333333282,0],"xyz":[0.215157742638501348,0.374707404671490163,0.0609878635696619598],"hpluv":[120.799924159261636,176.668237076728246,67.6287132051522093],"hsluv":[120.799924159261636,100.000000000002245,67.6287132051522093]},"#55bb11":{"lch":[67.658807387059241,92.983820197622,121.168613223743336],"luv":[67.658807387059241,-48.1245535730997,79.5614112615755],"rgb":[0.333333333333333315,0.733333333333333282,0.0666666666666666657],"xyz":[0.21616940813813848,0.375112070871345,0.0663159685344176],"hpluv":[121.168613223743336,174.390319462510746,67.658807387059241],"hsluv":[121.168613223743336,98.2170484527892853,67.658807387059241]},"#55bb22":{"lch":[67.7145367797011,90.8418307914021739,121.8702408444057],"luv":[67.7145367797011,-47.9642424389893733,77.1470651987980318],"rgb":[0.333333333333333315,0.733333333333333282,0.133333333333333331],"xyz":[0.218044766276615481,0.375862214126735816,0.076192854730396789],"hpluv":[121.8702408444057,170.232819736279453,67.7145367797011],"hsluv":[121.8702408444057,94.9476871157098401,67.7145367797011]},"#55bb33":{"lch":[67.8061331119394595,87.4049119918652337,123.079288563119889],"luv":[67.8061331119394595,-47.7055226907732077,73.2379802090816128],"rgb":[0.333333333333333315,0.733333333333333282,0.2],"xyz":[0.221132517009073215,0.377097314419718943,0.0924550085880079253],"hpluv":[123.079288563119889,163.570954697809668,67.8061331119394595],"hsluv":[123.079288563119889,89.6636954368763526,67.8061331119394595]},"#55bb44":{"lch":[67.9380247917114701,82.6396215824211851,124.951716096499126],"luv":[67.9380247917114701,-47.3430758547011195,67.7343356349037293],"rgb":[0.333333333333333315,0.733333333333333282,0.266666666666666663],"xyz":[0.225590512253292103,0.378880512517406509,0.115933783540894564],"hpluv":[124.951716096499126,154.352877500253584,67.9380247917114701],"hsluv":[124.951716096499126,82.2446152582935213,67.9380247917114701]},"#55bb55":{"lch":[68.1137800414251,76.6309713561306154,127.715012949239735],"luv":[68.1137800414251,-46.8777966745344372,60.6199467990950964],"rgb":[0.333333333333333315,0.733333333333333282,0.333333333333333315],"xyz":[0.231552926292654115,0.38126547813315137,0.147335830814868479],"hpluv":[127.715012949239735,142.760701907139094,68.1137800414251],"hsluv":[127.715012949239735,72.6906423420812189,68.1137800414251]},"#55bb66":{"lch":[68.3363083667640723,69.6002362161904813,131.717534816394789],"luv":[68.3363083667640723,-46.3160914021311,51.9520216986687728],"rgb":[0.333333333333333315,0.733333333333333282,0.4],"xyz":[0.239137922066162273,0.384299476442554688,0.187283475222012441],"hpluv":[131.717534816394789,129.240469264566769,68.3363083667640723],"hsluv":[131.717534816394789,73.4099839145656432,68.3363083667640723]},"#55bb77":{"lch":[68.6079661831172416,61.943926665161591,137.498849513297245],"luv":[68.6079661831172416,-45.6690129611091,41.8496273084595956],"rgb":[0.333333333333333315,0.733333333333333282,0.466666666666666674],"xyz":[0.248451935086364206,0.388025081650635484,0.23633727712841035],"hpluv":[137.498849513297245,114.568047908441656,68.6079661831172416],"hsluv":[137.498849513297245,74.2430874467708719,68.6079661831172416]},"#55bb88":{"lch":[68.930619778887035,54.3103726013937376,145.860320527647957],"luv":[68.930619778887035,-44.9511677919681389,30.4796503628330058],"rgb":[0.333333333333333315,0.733333333333333282,0.533333333333333326],"xyz":[0.259592352188308,0.392481248491413082,0.29501014053198249],"hpluv":[145.860320527647957,99.9792617157038421,68.930619778887035],"hsluv":[145.860320527647957,75.173468866550067,68.930619778887035]},"#55bb99":{"lch":[69.3056876145919176,47.7211055743842465,157.786981113384826],"luv":[69.3056876145919176,-44.1794697421466793,18.0410191104680564],"rgb":[0.333333333333333315,0.733333333333333282,0.6],"xyz":[0.272649316297380762,0.397704034135042239,0.363776818173100425],"hpluv":[157.786981113384826,87.3737441175344713,69.3056876145919176],"hsluv":[157.786981113384826,76.1818306173187807,69.3056876145919176]},"#55bbaa":{"lch":[69.7341725511637378,43.6310575063277497,173.751690425302456],"luv":[69.7341725511637378,-43.37186937951342,4.74869725787034813],"rgb":[0.333333333333333315,0.733333333333333282,0.66666666666666663],"xyz":[0.287707009262633262,0.403727111321143362,0.443080667790099],"hpluv":[173.751690425302456,79.3943164161001675,69.7341725511637378],"hsluv":[173.751690425302456,77.247554342351421,69.7341725511637378]},"#55bbbb":{"lch":[70.2166895771587605,43.5254926875218899,192.177050630061075],"luv":[70.2166895771587605,-42.5461891389785691,-9.18097508120914796],"rgb":[0.333333333333333315,0.733333333333333282,0.733333333333333282],"xyz":[0.304844601369969936,0.41058214816407812,0.533338652888740716],"hpluv":[192.177050630061075,78.6579587560082274,70.2166895771587605],"hsluv":[192.177050630061075,78.350068429440185,70.2166895771587605]},"#55bbcc":{"lch":[70.753492069254392,47.9033609117661214,209.436295084806801],"luv":[70.753492069254392,-41.719164640327179,-23.5423721905035848],"rgb":[0.333333333333333315,0.733333333333333282,0.8],"xyz":[0.324136976813691691,0.418299098341566922,0.634945163559010872],"hpluv":[209.436295084806801,85.9127126132272849,70.753492069254392],"hsluv":[209.436295084806801,79.4699741443966445,70.753492069254392]},"#55bbdd":{"lch":[71.3444981992470701,55.9344204047748121,223.003151043067675],"luv":[71.3444981992470701,-40.905747403701568,-38.1494327004039633],"rgb":[0.333333333333333315,0.733333333333333282,0.866666666666666696],"xyz":[0.345655302364325179,0.426906428561820428,0.74827501145901687],"hpluv":[223.003151043067675,99.4850863142100081,71.3444981992470701],"hsluv":[223.003151043067675,80.5898663629362,71.3444981992470701]},"#55bbee":{"lch":[71.9893182406489,66.3452770137575385,232.793079173014576],"luv":[71.9893182406489,-40.1186787976363846,-52.8411524624918272],"rgb":[0.333333333333333315,0.733333333333333282,0.933333333333333348],"xyz":[0.369467482630499944,0.436431300668290445,0.873685827527540093],"hpluv":[232.793079173014576,116.944897502912525,71.9893182406489],"hsluv":[232.793079173014576,81.6948376758296888,71.9893182406489]},"#55bbff":{"lch":[72.6872829834048417,78.1278426582451146,239.741904567598624],"luv":[72.6872829834048417,-39.3683093588317803,-67.4840426816504788],"rgb":[0.333333333333333315,0.733333333333333282,1],"xyz":[0.395638531040331309,0.446899720032223169,1.01152001581932205],"hpluv":[239.741904567598624,136.39131713467242,72.6872829834048417],"hsluv":[239.741904567598624,99.9999999999976126,72.6872829834048417]},"#003300":{"lch":[17.3086983277836381,26.7889227675687067,127.71501294924046],"luv":[17.3086983277836381,-16.3877039844862402,21.1917328494772867],"rgb":[0,0.2,0],"xyz":[0.0118377460847071559,0.0236754921694146449,0.00394591536156894181],"hpluv":[127.71501294924046,196.394882900214611,17.3086983277836381],"hsluv":[127.71501294924046,100.000000000002402,17.3086983277836381]},"#003311":{"lch":[17.4974002223845133,22.6621201022865968,134.58430385811792],"luv":[17.4974002223845133,-15.9078557679049606,16.1403783226414816],"rgb":[0,0.2,0.0666666666666666657],"xyz":[0.0128494115843442776,0.0240801583692694977,0.00927402032632457241],"hpluv":[134.58430385811792,164.348724425256108,17.4974002223845133],"hsluv":[134.58430385811792,99.9999999999909335,17.4974002223845133]},"#003322":{"lch":[17.8416856931397234,17.1190432019509622,152.323942273369369],"luv":[17.8416856931397234,-15.1604156821769873,7.95131665159082601],"rgb":[0,0.2,0.133333333333333331],"xyz":[0.0147247697228212963,0.0248303016246603156,0.0191509065223037685],"hpluv":[152.323942273369369,121.753913655152402,17.8416856931397234],"hsluv":[152.323942273369369,99.9999999999912177,17.8416856931397234]},"#003333":{"lch":[18.3937448040413543,14.5523831926532932,192.17705063006116],"luv":[18.3937448040413543,-14.2249612699966086,-3.06958196712752551],"rgb":[0,0.2,0.2],"xyz":[0.017812520455279035,0.0260654019176434319,0.0354130603799149152],"hpluv":[192.17705063006116,100.392967527320849,18.3937448040413543],"hsluv":[192.17705063006116,99.9999999999915,18.3937448040413543]},"#003344":{"lch":[19.1608294605123817,20.3566459399555,229.223567805483242],"luv":[19.1608294605123817,-13.2951121246929258,-15.41535038578591],"rgb":[0,0.2,0.266666666666666663],"xyz":[0.0222705156994979156,0.0278486000153310084,0.0588918353328015537],"hpluv":[229.223567805483242,134.812835768594709,19.1608294605123817],"hsluv":[229.223567805483242,99.9999999999917577,19.1608294605123817]},"#003355":{"lch":[20.1371955335767296,30.6237106081975696,245.893961784182551],"luv":[20.1371955335767296,-12.5075398018694361,-27.9530517031554915],"rgb":[0,0.2,0.333333333333333315],"xyz":[0.0282329297388599076,0.0302335656310758379,0.0902938826067754552],"hpluv":[245.893961784182551,192.973712242731381,20.1371955335767296],"hsluv":[245.893961784182551,99.9999999999920419,20.1371955335767296]},"#003366":{"lch":[21.3076868402923836,41.8514919359335167,253.451236278131262],"luv":[21.3076868402923836,-11.9206140697212764,-40.1179054471226308],"rgb":[0,0.2,0.4],"xyz":[0.0358179255123680859,0.0332675639404791529,0.130241527013919417],"hpluv":[253.451236278131262,249.237832456686277,21.3076868402923836],"hsluv":[253.451236278131262,99.9999999999920846,21.3076868402923836]},"#003377":{"lch":[22.6513946103128916,53.0186284648852251,257.430711853641924],"luv":[22.6513946103128916,-11.5379190314963687,-51.7479602372902434],"rgb":[0,0.2,0.466666666666666674],"xyz":[0.04513193853257,0.0369931691485599692,0.179295328920317326],"hpluv":[257.430711853641924,297.011229333042763,22.6513946103128916],"hsluv":[257.430711853641924,99.9999999999922409,22.6513946103128916]},"#003388":{"lch":[24.1449124481648099,63.8887963004775941,259.778872090702237],"luv":[24.1449124481648099,-11.3369168899634012,-62.8748964862287636],"rgb":[0,0.2,0.533333333333333326],"xyz":[0.0562723556345138265,0.0414493359893375601,0.237968192323889494],"hpluv":[259.778872090702237,335.767299249073346,24.1449124481648099],"hsluv":[259.778872090702237,99.9999999999925677,24.1449124481648099]},"#003399":{"lch":[25.764809398314533,74.4520642325545481,261.279947020055374],"luv":[25.764809398314533,-11.2874373109462987,-73.5914643653724596],"rgb":[0,0.2,0.6],"xyz":[0.0693293197435865399,0.0466721216329667177,0.306734869965007428],"hpluv":[261.279947020055374,366.681615332004242,25.764809398314533],"hsluv":[261.279947020055374,99.9999999999928662,25.764809398314533]},"#0033aa":{"lch":[27.4892253326185596,84.7561178753388447,262.297068677869788],"luv":[27.4892253326185596,-11.360446037840406,-83.9913077831251],"rgb":[0,0.2,0.66666666666666663],"xyz":[0.084387012708839082,0.0526951988190678261,0.386038719582006029],"hpluv":[262.297068677869788,391.244172205097584,27.4892253326185596],"hsluv":[262.297068677869788,99.9999999999925819,27.4892253326185596]},"#0033bb":{"lch":[29.2987082140811808,94.8530383242648725,263.01737082090068],"luv":[29.2987082140811808,-11.531133966499155,-94.1495184734957178],"rgb":[0,0.2,0.733333333333333282],"xyz":[0.101524604816175729,0.0595502356620025847,0.476296704680647776],"hpluv":[263.01737082090068,410.811034734971429,29.2987082140811808],"hsluv":[263.01737082090068,99.999999999992923,29.2987082140811808]},"#0033cc":{"lch":[31.1765026722858281,104.784892642773883,263.545454640352943],"luv":[31.1765026722858281,-11.7793879173059235,-104.120697973319764],"rgb":[0,0.2,0.8],"xyz":[0.120816980259897469,0.0672671858394913863,0.577903215350917931],"hpluv":[263.545454640352943,426.491720029659064,31.1765026722858281],"hsluv":[263.545454640352943,99.9999999999928519,31.1765026722858281]},"#0033dd":{"lch":[33.108496036114694,114.582250296133722,263.943596884481394],"luv":[33.108496036114694,-12.0892798728815123,-113.942711022166648],"rgb":[0,0.2,0.866666666666666696],"xyz":[0.142335305810531026,0.0758745160597449203,0.691233063250923929],"hpluv":[263.943596884481394,439.154381827523366,33.108496036114694],"hsluv":[263.943596884481394,99.999999999992724,33.108496036114694]},"#0033ee":{"lch":[35.0829820911796091,124.266344101148519,264.250786122927309],"luv":[35.0829820911796091,-12.4483077284590724,-123.641271066592637],"rgb":[0,0.2,0.933333333333333348],"xyz":[0.166147486076705764,0.0853993881662149512,0.816643879319447152],"hpluv":[264.250786122927309,449.46548401365061,35.0829820911796091],"hsluv":[264.250786122927309,99.9999999999932214,35.0829820911796091]},"#0033ff":{"lch":[37.0903499028545482,133.851694130242549,264.492451291459133],"luv":[37.0903499028545482,-12.8466699872586325,-133.233776092154926],"rgb":[0,0.2,1],"xyz":[0.192318534486537157,0.0958678075301476473,0.954478067611229],"hpluv":[264.492451291459133,457.933345064777,37.0903499028545482],"hsluv":[264.492451291459133,99.999999999999531,37.0903499028545482]},"#55cc00":{"lch":[72.9678739916599,103.392643433537373,122.072672834653702],"luv":[72.9678739916599,-54.9009234662034089,87.6123696673744661],"rgb":[0.333333333333333315,0.8,0],"xyz":[0.253381485948118268,0.451154891290725057,0.0737291113395339148],"hpluv":[122.072672834653702,179.803140433373983,72.9678739916599],"hsluv":[122.072672834653702,100.000000000002444,72.9678739916599]},"#55cc11":{"lch":[72.9944661394807497,102.34674561848017,122.382691003133885],"luv":[72.9944661394807497,-54.8140205324080085,86.4307786136781431],"rgb":[0.333333333333333315,0.8,0.0666666666666666657],"xyz":[0.254393151447755372,0.45155955749057991,0.0790572163042895515],"hpluv":[122.382691003133885,177.91945009175069,72.9944661394807497],"hsluv":[122.382691003133885,98.5172338886757757,72.9944661394807497]},"#55cc22":{"lch":[73.0437189009647909,100.431941691916791,122.969611448584445],"luv":[73.0437189009647909,-54.6544745496639663,84.2583130836875114],"rgb":[0.333333333333333315,0.8,0.133333333333333331],"xyz":[0.256268509586232429,0.452309700745970711,0.0889341025002687441],"hpluv":[122.969611448584445,174.473032354427772,73.0437189009647909],"hsluv":[122.969611448584445,95.7933392549395,73.0437189009647909]},"#55cc33":{"lch":[73.1246943704287702,97.3470237033586,123.971835615120114],"luv":[73.1246943704287702,-54.3960871275936384,80.7310889875115123],"rgb":[0.333333333333333315,0.8,0.2],"xyz":[0.259356260318690135,0.453544801038953838,0.10519625635787988],"hpluv":[123.971835615120114,168.926560877595364,73.1246943704287702],"hsluv":[123.971835615120114,91.3772697810403542,73.1246943704287702]},"#55cc44":{"lch":[73.2413452172043,93.0415252478239836,125.502056943833935],"luv":[73.2413452172043,-54.0322080150887771,75.7446098244333399],"rgb":[0.333333333333333315,0.8,0.266666666666666663],"xyz":[0.26381425556290905,0.455327999136641404,0.128675031310766519],"hpluv":[125.502056943833935,161.198069131808353,73.2413452172043],"hsluv":[125.502056943833935,85.148140842768953,73.2413452172043]},"#55cc55":{"lch":[73.3968865779486919,87.5572640326508207,127.71501294923992],"luv":[73.3968865779486919,-53.5617851120033066,69.2633356148757144],"rgb":[0.333333333333333315,0.8,0.333333333333333315],"xyz":[0.269776669602271035,0.457712964752386264,0.160077078584740434],"hpluv":[127.71501294923992,151.374900584602614,73.3968865779486919],"hsluv":[127.71501294923992,77.0768048277098,73.3968865779486919]},"#55cc66":{"lch":[73.5939772793636,81.0375847478920832,130.834727778769576],"luv":[73.5939772793636,-52.9887999422805,61.3129449826769175],"rgb":[0.333333333333333315,0.8,0.4],"xyz":[0.277361665375779221,0.460746963061789583,0.200024722991884396],"hpluv":[130.834727778769576,139.728031568505,73.5939772793636],"hsluv":[130.834727778769576,77.5857883184082766,73.5939772793636]},"#55cc77":{"lch":[73.8348152761848553,73.7475179973278898,135.191797127350526],"luv":[73.8348152761848553,-52.3216404431773,51.972515352838883],"rgb":[0.333333333333333315,0.8,0.466666666666666674],"xyz":[0.286675678395981126,0.464472568269870378,0.249078524898282305],"hpluv":[135.191797127350526,126.743455190439619,73.8348152761848553],"hsluv":[135.191797127350526,78.1806978106980779,73.8348152761848553]},"#55cc88":{"lch":[74.1211942127210648,66.1117924559585646,141.267644806662588],"luv":[74.1211942127210648,-51.5723023085178269,41.3650424433311343],"rgb":[0.333333333333333315,0.8,0.533333333333333326],"xyz":[0.297816095497924926,0.468928735110648,0.307751388301854445],"hpluv":[141.267644806662588,113.181605649052202,74.1211942127210648],"hsluv":[141.267644806662588,78.852064841283763,74.1211942127210648]},"#55cc99":{"lch":[74.4545405069311,58.7794373107374923,149.710693018120253],"luv":[74.4545405069311,-50.7554383804248,29.646377947024483],"rgb":[0.333333333333333315,0.8,0.6],"xyz":[0.310873059606997626,0.474151520754277134,0.37651806594297238],"hpluv":[149.710693018120253,100.178278207809555,74.4545405069311],"hsluv":[149.710693018120253,79.5881732610030355,74.4545405069311]},"#55ccaa":{"lch":[74.8359403329188808,52.7021878309829361,161.189357777818884],"luv":[74.8359403329188808,-49.8873315971569866,16.9933736582089097],"rgb":[0.333333333333333315,0.8,0.66666666666666663],"xyz":[0.325930752572250182,0.480174597940378256,0.455821915559971],"hpluv":[161.189357777818884,89.3630022499163772,74.8359403329188808],"hsluv":[161.189357777818884,80.3759073289738097,74.8359403329188808]},"#55ccbb":{"lch":[75.2661614985634,49.1164256219739315,175.805780272408356],"luv":[75.2661614985634,-48.9848849956305372,3.59225665059547428],"rgb":[0.333333333333333315,0.8,0.733333333333333282],"xyz":[0.343068344679586856,0.487029634783313,0.546079900658612782],"hpluv":[175.805780272408356,82.8068592257523619,75.2661614985634],"hsluv":[175.805780272408356,81.2015846585734238,75.2661614985634]},"#55cccc":{"lch":[75.7456730324682894,49.1710405410584386,192.177050630061103],"luv":[75.7456730324682894,-48.0647147647340063,-10.3718090261618983],"rgb":[0.333333333333333315,0.8,0.8],"xyz":[0.362360720123308555,0.494746584960801816,0.647686411328882938],"hpluv":[192.177050630061103,82.3741405590198639,75.7456730324682894],"hsluv":[192.177050630061103,82.0517040066532815,75.7456730324682894]},"#55ccdd":{"lch":[76.2746640882933349,53.2320113470533514,207.674227909684788],"luv":[76.2746640882933349,-47.1424090239802069,-24.7232745296525458],"rgb":[0.333333333333333315,0.8,0.866666666666666696],"xyz":[0.383879045673942154,0.503353915181055322,0.761016259228888936],"hpluv":[207.674227909684788,89.8673986045394,76.2746640882933349],"hsluv":[207.674227909684788,82.913556803619926,76.2746640882933349]},"#55ccee":{"lch":[76.8530630513789674,60.6801737900983298,220.368363670310828],"luv":[76.8530630513789674,-46.2319850937693673,-39.3025068600722207],"rgb":[0.333333333333333315,0.8,0.933333333333333348],"xyz":[0.407691225940116864,0.51287878728752534,0.886427075297412159],"hpluv":[220.368363670310828,105.55411204702996,76.8530630513789674],"hsluv":[220.368363670310828,83.7756757275922865,76.8530630513789674]},"#55ccff":{"lch":[77.4805572724897758,70.4908339109135511,229.9629437526429],"luv":[77.4805572724897758,-45.3455492712466395,-53.9697955040126445],"rgb":[0.333333333333333315,0.8,1],"xyz":[0.433862274349948285,0.523347206651458063,1.02426126358919389],"hpluv":[229.9629437526429,126.754412601721029,77.4805572724897758],"hsluv":[229.9629437526429,99.9999999999968878,77.4805572724897758]},"#004400":{"lch":[24.1097877444294397,37.3150672336374782,127.715012949240432],"luv":[24.1097877444294397,-22.8269080205926969,29.5185791133361732],"rgb":[0,0.266666666666666663,0],"xyz":[0.0206703165676731908,0.0413406331353469575,0.00689010552255753684],"hpluv":[127.715012949240432,196.39488290021464,24.1097877444294397],"hsluv":[127.715012949240432,100.000000000002458,24.1097877444294397]},"#004411":{"lch":[24.2402356883412295,33.8624764720942082,131.447767669063751],"luv":[24.2402356883412295,-22.4148262696793807,25.3819399598065552],"rgb":[0,0.266666666666666663,0.0666666666666666657],"xyz":[0.0216819820673103125,0.0417452993352018104,0.0122182104873131692],"hpluv":[131.447767669063751,177.264269230781338,24.2402356883412295],"hsluv":[131.447767669063751,99.9999999999909335,24.2402356883412295]},"#004422":{"lch":[24.4798388415780295,28.4164365287723264,139.862893984056171],"luv":[24.4798388415780295,-21.7244820008415864,18.3177713379345413],"rgb":[0,0.266666666666666663,0.133333333333333331],"xyz":[0.0235573402057873311,0.0424954425905926317,0.0220950966832923652],"hpluv":[139.862893984056171,147.299199898382369,24.4798388415780295],"hsluv":[139.862893984056171,99.9999999999911466,24.4798388415780295]},"#004433":{"lch":[24.8682723444395748,22.2877633761795622,158.664607016269599],"luv":[24.8682723444395748,-20.760308528761005,8.10888316004269427],"rgb":[0,0.266666666666666663,0.2],"xyz":[0.0266450909382450717,0.0437305428835757445,0.0383572505409035119],"hpluv":[158.664607016269599,113.726114076625834,24.8682723444395748],"hsluv":[158.664607016269599,99.9999999999913172,24.8682723444395748]},"#004444":{"lch":[25.4163828994624552,20.1084089871091685,192.17705063006116],"luv":[25.4163828994624552,-19.6559790417892835,-4.24153273022775057],"rgb":[0,0.266666666666666663,0.266666666666666663],"xyz":[0.0311030861824639487,0.0455137409812633176,0.0618360254937901505],"hpluv":[192.17705063006116,100.392967527320792,25.4163828994624552],"hsluv":[192.17705063006116,99.9999999999914166,25.4163828994624552]},"#004455":{"lch":[26.1275223832094383,25.5944772375096541,223.546306053382096],"luv":[26.1275223832094383,-18.5513329588178841,-17.6330743352507042],"rgb":[0,0.266666666666666663,0.333333333333333315],"xyz":[0.0370655002218259477,0.0478987065970081505,0.093238072767764052],"hpluv":[223.546306053382096,124.304646155287358,26.1275223832094383],"hsluv":[223.546306053382096,99.999999999991644,26.1275223832094383]},"#004466":{"lch":[26.9988561724938734,35.8050932952910514,240.647496291889979],"luv":[26.9988561724938734,-17.5509899640931621,-31.2084516944496499],"rgb":[0,0.266666666666666663,0.4],"xyz":[0.0446504959953341191,0.050932704906411462,0.133185717174908],"hpluv":[240.647496291889979,168.282428552664811,26.9988561724938734],"hsluv":[240.647496291889979,99.9999999999920135,26.9988561724938734]},"#004477":{"lch":[28.0227048150185141,47.4927479988473422,249.396343090395135],"luv":[28.0227048150185141,-16.7127641209025413,-44.4549730392572684],"rgb":[0,0.266666666666666663,0.466666666666666674],"xyz":[0.0539645090155360385,0.0546583101144922784,0.182239519081305923],"hpluv":[249.396343090395135,215.05848085050232,28.0227048150185141],"hsluv":[249.396343090395135,99.9999999999921698,28.0227048150185141]},"#004488":{"lch":[29.1879465441319326,59.3592998069098,254.306666373838311],"luv":[29.1879465441319326,-16.0560040952153962,-57.1465765034181956],"rgb":[0,0.266666666666666663,0.533333333333333326],"xyz":[0.0651049261174798666,0.0591144769552698762,0.24091238248487809],"hpluv":[254.306666373838311,258.06229412425995,29.1879465441319326],"hsluv":[254.306666373838311,99.9999999999923,29.1879465441319326]},"#004499":{"lch":[30.4813623757938217,70.9684349502494,257.321762040288718],"luv":[30.4813623757938217,-15.5758442205369825,-69.2380808233832141],"rgb":[0,0.266666666666666663,0.6],"xyz":[0.07816189022655258,0.0643372625988990338,0.309679060125996],"hpluv":[257.321762040288718,295.440602563868879,30.4813623757938217],"hsluv":[257.321762040288718,99.9999999999926672,30.4813623757938217]},"#0044aa":{"lch":[31.8888011745219231,82.2033012029853,259.305022310013101],"luv":[31.8888011745219231,-15.2553283345918977,-80.7753532092093138],"rgb":[0,0.266666666666666663,0.66666666666666663],"xyz":[0.0932195831918051221,0.0703603397850001422,0.388982909742994598],"hpluv":[259.305022310013101,327.107417663034141,31.8888011745219231],"hsluv":[259.305022310013101,99.9999999999925109,31.8888011745219231]},"#0044bb":{"lch":[33.3960915948532602,93.0667571364503,260.679203518012741],"luv":[33.3960915948532602,-15.0732787327803415,-91.8379962332527],"rgb":[0,0.266666666666666663,0.733333333333333282],"xyz":[0.110357175299141769,0.0772153766279349,0.479240894841636345],"hpluv":[260.679203518012741,353.621176249907,33.3960915948532602],"hsluv":[260.679203518012741,99.9999999999929656,33.3960915948532602]},"#0044cc":{"lch":[34.9896851087579108,103.60206818965716,261.670396128603272],"luv":[34.9896851087579108,-15.0085679377548828,-102.509177255659253],"rgb":[0,0.266666666666666663,0.8],"xyz":[0.129649550742863495,0.0849323268054237,0.5808474055119065],"hpluv":[261.670396128603272,375.722944942957042,34.9896851087579108],"hsluv":[261.670396128603272,99.999999999992923,34.9896851087579108]},"#0044dd":{"lch":[36.6570567010139499,113.860579159150092,262.408492682931296],"luv":[36.6570567010139499,-15.0420602661110987,-112.862606338006245],"rgb":[0,0.266666666666666663,0.866666666666666696],"xyz":[0.151167876293497039,0.0935396570256772364,0.694177253411912498],"hpluv":[262.408492682931296,394.144185167595538,36.6570567010139499],"hsluv":[262.408492682931296,99.9999999999929088,36.6570567010139499]},"#0044ee":{"lch":[38.386911506645724,123.889384104134805,262.972536787865295],"luv":[38.386911506645724,-15.1572566165017264,-122.958680318078251],"rgb":[0,0.266666666666666663,0.933333333333333348],"xyz":[0.174980056559671776,0.103064529132147253,0.819588069480435721],"hpluv":[262.972536787865295,409.534269399062566,38.386911506645724],"hsluv":[262.972536787865295,99.9999999999931,38.386911506645724]},"#0044ff":{"lch":[40.1692504091911928,133.727629508879147,263.412926975584469],"luv":[40.1692504091911928,-15.3403008413028115,-132.844849595919101],"rgb":[0,0.266666666666666663,1],"xyz":[0.201151104969503169,0.113532948496079963,0.957422257772217566],"hpluv":[263.412926975584469,422.441664595501038,40.1692504091911928],"hsluv":[263.412926975584469,99.9999999999994174,40.1692504091911928]},"#55dd00":{"lch":[78.2526895057908121,112.425836873112019,123.034721453117925],"luv":[78.2526895057908121,-61.2886270790004488,94.2511166373683267],"rgb":[0.333333333333333315,0.866666666666666696,0],"xyz":[0.296015476495293473,0.536422872385076577,0.0879404415219252333],"hpluv":[123.034721453117925,210.800433631405241,78.2526895057908121],"hsluv":[123.034721453117925,100.000000000002288,78.2526895057908121]},"#55dd11":{"lch":[78.2763843013059102,111.485784004679431,123.297526334296066],"luv":[78.2763843013059102,-61.2042162992655108,93.1832814529020368],"rgb":[0.333333333333333315,0.866666666666666696,0.0666666666666666657],"xyz":[0.297027141994930577,0.536827538584931485,0.09326854648668087],"hpluv":[123.297526334296066,209.310421322213443,78.2763843013059102],"hsluv":[123.297526334296066,98.7516598856555561,78.2763843013059102]},"#55dd22":{"lch":[78.3202766586626353,109.761570808260174,123.793166282380056],"luv":[78.3202766586626353,-61.0490014413279738,91.2174426812846235],"rgb":[0.333333333333333315,0.866666666666666696,0.133333333333333331],"xyz":[0.298902500133407634,0.537577681840322286,0.103145432682660063],"hpluv":[123.793166282380056,206.571995072092733,78.3202766586626353],"hsluv":[123.793166282380056,96.4551350157602201,78.3202766586626353]},"#55dd33":{"lch":[78.3924559312840898,106.97461234521991,124.633900466047606],"luv":[78.3924559312840898,-60.7969536029841819,88.018737317724927],"rgb":[0.333333333333333315,0.866666666666666696,0.2],"xyz":[0.30199025086586534,0.538812782133305412,0.119407586540271199],"hpluv":[124.633900466047606,202.130538056106332,78.3924559312840898],"hsluv":[124.633900466047606,92.7228817840519355,78.3924559312840898]},"#55dd44":{"lch":[78.4964717161501255,103.064578059178857,125.904361390923313],"luv":[78.4964717161501255,-60.4405744101571756,83.4819993500804],"rgb":[0.333333333333333315,0.866666666666666696,0.266666666666666663],"xyz":[0.306448246110084255,0.540595980230993,0.142886361493157837],"hpluv":[125.904361390923313,195.867385876976442,78.4964717161501255],"hsluv":[125.904361390923313,87.4391970363123221,78.4964717161501255]},"#55dd55":{"lch":[78.635232286968062,98.0447483954765175,127.715012949239977],"luv":[78.635232286968062,-59.9773394353739,77.559599291037074],"rgb":[0.333333333333333315,0.866666666666666696,0.333333333333333315],"xyz":[0.31241066014944624,0.542980945846737728,0.174288408767131753],"hpluv":[127.715012949239977,187.771435495127037,78.635232286968062],"hsluv":[127.715012949239977,80.5594181605674891,78.635232286968062]},"#55dd66":{"lch":[78.8111684825228451,92.0067823672703469,130.218539636235505],"luv":[78.8111684825228451,-59.4092211255214551,70.2551951590567],"rgb":[0.333333333333333315,0.866666666666666696,0.4],"xyz":[0.319995655922954425,0.546014944156141,0.214236053174275715],"hpluv":[130.218539636235505,177.951388767985407,78.8111684825228451],"hsluv":[130.218539636235505,80.9267337864342693,78.8111684825228451]},"#55dd77":{"lch":[79.0263204832261863,85.1319563310668315,133.631202536406704],"luv":[79.0263204832261863,-58.7422260542947043,61.618186170487121],"rgb":[0.333333333333333315,0.866666666666666696,0.466666666666666674],"xyz":[0.329309668943156331,0.549740549364221898,0.263289855080673596],"hpluv":[133.631202536406704,166.66460441184762,79.0263204832261863],"hsluv":[133.631202536406704,81.3592233632428,79.0263204832261863]},"#55dd88":{"lch":[79.2823892178289,77.7115996221609322,138.259418470179128],"luv":[79.2823892178289,-57.9858175415186921,51.7371982221375],"rgb":[0.333333333333333315,0.866666666666666696,0.533333333333333326],"xyz":[0.340450086045100131,0.55419671620499944,0.321962718484245791],"hpluv":[138.259418470179128,154.371102046011828,79.2823892178289],"hsluv":[138.259418470179128,81.8514411788724,79.2823892178289]},"#55dd99":{"lch":[79.5807696492298504,70.1818875082800133,144.522564094970761],"luv":[79.5807696492298504,-57.1522092721799737,40.7323251181885624],"rgb":[0.333333333333333315,0.866666666666666696,0.6],"xyz":[0.353507050154172831,0.559419501848628653,0.390729396125363726],"hpluv":[144.522564094970761,141.828030979619143,79.5807696492298504],"hsluv":[144.522564094970761,82.3962440946128538,79.5807696492298504]},"#55ddaa":{"lch":[79.9225742847085,63.1747442044720913,152.933070337002903],"luv":[79.9225742847085,-56.2555676549498145,28.7464678372812266],"rgb":[0.333333333333333315,0.866666666666666696,0.66666666666666663],"xyz":[0.368564743119425386,0.56544257903472972,0.470033245742362271],"hpluv":[152.933070337002903,130.236824512138128,79.9225742847085],"hsluv":[152.933070337002903,82.9852754707380313,79.9225742847085]},"#55ddbb":{"lch":[80.3086513857730466,57.5612329714098649,163.927126105934775],"luv":[80.3086513857730466,-55.3111838467604926,15.9363886328987263],"rgb":[0.333333333333333315,0.866666666666666696,0.733333333333333282],"xyz":[0.385702335226762061,0.572297615877664478,0.560291230841004073],"hpluv":[163.927126105934775,121.406580229851471,80.3086513857730466],"hsluv":[163.927126105934775,83.6094665313934,80.3086513857730466]},"#55ddcc":{"lch":[80.7396004409482657,54.3905283694756534,177.403333860877041],"luv":[80.7396004409482657,-54.3346805898883076,2.46415533308082235],"rgb":[0.333333333333333315,0.866666666666666696,0.8],"xyz":[0.40499471067048376,0.580014566055153336,0.661897741511274229],"hpluv":[177.403333860877041,117.73427745544555,80.7396004409482657],"hsluv":[177.403333860877041,84.2595162876674664,80.7396004409482657]},"#55dddd":{"lch":[81.2157864208401605,54.5690893966631236,192.177050630061103],"luv":[81.2157864208401605,-53.3413100060750764,-11.5104371948595805],"rgb":[0.333333333333333315,0.866666666666666696,0.866666666666666696],"xyz":[0.426513036221117359,0.588621896275406842,0.775227589411280227],"hpluv":[192.177050630061103,121.625211000731653,81.2157864208401605],"hsluv":[192.177050630061103,84.9263164151063847,81.2157864208401605]},"#55ddee":{"lch":[81.73735371635685,58.3741450028570412,206.269517439458],"luv":[81.73735371635685,-52.3453816136692609,-25.8360567528002605],"rgb":[0.333333333333333315,0.866666666666666696,0.933333333333333348],"xyz":[0.450325216487292068,0.598146768381876859,0.90063840547980345],"hpluv":[206.269517439458,134.436687270459231,81.73735371635685],"hsluv":[206.269517439458,85.6012975649288421,81.73735371635685]},"#55ddff":{"lch":[82.3042402700550753,65.3293790133507599,218.171205050819623],"luv":[82.3042402700550753,-51.3598401525014268,-40.374429801293],"rgb":[0.333333333333333315,0.866666666666666696,1],"xyz":[0.476496264897123489,0.608615187745809583,1.0384725937715853],"hpluv":[218.171205050819623,156.046773818868189,82.3042402700550753],"hsluv":[218.171205050819623,99.9999999999958078,82.3042402700550753]},"#005500":{"lch":[30.6325595368381371,47.4104554868850059,127.715012949240474],"luv":[30.6325595368381371,-29.0026036892131067,37.5046699588244152],"rgb":[0,0.333333333333333315,0],"xyz":[0.0324835732820191528,0.0649671465640392215,0.0108278577606727468],"hpluv":[127.715012949240474,196.39488290021464,30.6325595368381371],"hsluv":[127.715012949240474,100.000000000002331,30.6325595368381371]},"#005511":{"lch":[30.7291805540017933,44.5531719728198325,130.030983014983661],"luv":[30.7291805540017933,-28.6566785608310113,34.1142185415534129],"rgb":[0,0.333333333333333315,0.0666666666666666657],"xyz":[0.033495238781656278,0.0653718127638940744,0.01615596272542838],"hpluv":[130.030983014983661,183.978458821492183,30.7291805540017933],"hsluv":[130.030983014983661,99.9999999999909335,30.7291805540017933]},"#005522":{"lch":[30.9072407208055395,39.7502752239143149,134.89425658266407],"luv":[30.9072407208055395,-28.0557665948475297,28.1595159964153758],"rgb":[0,0.333333333333333315,0.133333333333333331],"xyz":[0.0353705969201332932,0.0661219560192848888,0.0260328489214075726],"hpluv":[134.89425658266407,163.199653312489744,30.9072407208055395],"hsluv":[134.89425658266407,99.9999999999909903,30.9072407208055395]},"#005533":{"lch":[31.1975029455576802,33.2574057268159,144.773587953954916],"luv":[31.1975029455576802,-27.1672793055155033,19.1831689460880241],"rgb":[0,0.333333333333333315,0.2],"xyz":[0.0384583476525910337,0.067357056312268,0.0422950027790187227],"hpluv":[144.773587953954916,135.271984326190278,31.1975029455576802],"hsluv":[144.773587953954916,99.9999999999912177,31.1975029455576802]},"#005544":{"lch":[31.6103799108948778,27.1932751339722678,163.464109831123295],"luv":[31.6103799108948778,-26.0686058468900157,7.73963834500076331],"rgb":[0,0.333333333333333315,0.266666666666666663],"xyz":[0.0429163428968099142,0.0691402544099555816,0.0657737777319053613],"hpluv":[163.464109831123295,109.16191048912313,31.6103799108948778],"hsluv":[163.464109831123295,99.999999999991374,31.6103799108948778]},"#005555":{"lch":[32.1516370434520482,25.4370682812028797,192.17705063006116],"luv":[32.1516370434520482,-24.8647459548099441,-5.36552433088697445],"rgb":[0,0.333333333333333315,0.333333333333333315],"xyz":[0.0488787569361719063,0.0715252200257004145,0.0971758250058792628],"hpluv":[192.17705063006116,100.392967527320877,32.1516370434520482],"hsluv":[192.17705063006116,99.9999999999915,32.1516370434520482]},"#005566":{"lch":[32.8230722751799036,30.545644410021449,219.238547792689275],"luv":[32.8230722751799036,-23.6581848019048806,-19.3216636007977201],"rgb":[0,0.333333333333333315,0.4],"xyz":[0.0564637527096800845,0.074559218335103733,0.137123469413023225],"hpluv":[219.238547792689275,118.088984839520307,32.8230722751799036],"hsluv":[219.238547792689275,99.9999999999916298,32.8230722751799036]},"#005577":{"lch":[33.6230950493472065,40.3511971197610322,236.060106868306946],"luv":[33.6230950493472065,-22.5289967279924532,-33.4763112577822142],"rgb":[0,0.333333333333333315,0.466666666666666674],"xyz":[0.065777765729882,0.0782848235431845424,0.186177271319421134],"hpluv":[236.060106868306946,152.285327594300298,33.6230950493472065],"hsluv":[236.060106868306946,99.9999999999918,33.6230950493472065]},"#005588":{"lch":[34.5473308406039266,52.0529464564925703,245.569923252468897],"luv":[34.5473308406039266,-21.5281838547339461,-47.3924733973576764],"rgb":[0,0.333333333333333315,0.533333333333333326],"xyz":[0.076918182831825832,0.0827409903839621402,0.244850134722993301],"hpluv":[245.569923252468897,191.192188881903292,34.5473308406039266],"hsluv":[245.569923252468897,99.9999999999919709,34.5473308406039266]},"#005599":{"lch":[35.5892574919693772,64.2489447401961655,251.22324643469841],"luv":[35.5892574919693772,-20.6805523421639172,-60.8296116628390067],"rgb":[0,0.333333333333333315,0.6],"xyz":[0.0899751469408985316,0.0879637760275913,0.313616812364111208],"hpluv":[251.22324643469841,229.079590546614583,35.5892574919693772],"hsluv":[251.22324643469841,99.9999999999922125,35.5892574919693772]},"#0055aa":{"lch":[36.7408379507026,76.3552968047486189,254.821646708521541],"luv":[36.7408379507026,-19.9916927982920107,-73.6916791042243347],"rgb":[0,0.333333333333333315,0.66666666666666663],"xyz":[0.105032839906151088,0.0939868532136924,0.392920661981109809],"hpluv":[254.821646708521541,263.711724718685957,36.7408379507026],"hsluv":[254.821646708521541,99.9999999999921556,36.7408379507026]},"#0055bb":{"lch":[37.993106438468665,88.146943006458784,257.249085911334646],"luv":[37.993106438468665,-19.4551758320548949,-85.9731335635018],"rgb":[0,0.333333333333333315,0.733333333333333282],"xyz":[0.122170432013487734,0.100841890056627165,0.483178647079751555],"hpluv":[257.249085911334646,294.402692429224658,37.993106438468665],"hsluv":[257.249085911334646,99.9999999999924114,37.993106438468665]},"#0055cc":{"lch":[39.3366742314503384,99.5579220492412,258.963845190076711],"luv":[39.3366742314503384,-19.0582121518786707,-97.7167559446012888],"rgb":[0,0.333333333333333315,0.8],"xyz":[0.141462807457209461,0.108558840234115966,0.584785157750021711],"hpluv":[258.963845190076711,321.157087606315883,39.3366742314503384],"hsluv":[258.963845190076711,99.9999999999926,39.3366742314503384]},"#0055dd":{"lch":[40.7621365800243538,110.592821589198408,260.220233587680809],"luv":[40.7621365800243538,-18.7854624460211568,-108.985680654613518],"rgb":[0,0.333333333333333315,0.866666666666666696],"xyz":[0.162981133007843,0.1171661704543695,0.698115005650027709],"hpluv":[260.220233587680809,344.278042660470817,40.7621365800243538],"hsluv":[260.220233587680809,99.9999999999926672,40.7621365800243538]},"#0055ee":{"lch":[42.2603772648371105,121.285075365136905,261.168248695532611],"luv":[42.2603772648371105,-18.6213165580406681,-119.847052846418293],"rgb":[0,0.333333333333333315,0.933333333333333348],"xyz":[0.186793313274017742,0.126691042560839517,0.823525821718550932],"hpluv":[261.168248695532611,364.177675198016914,42.2603772648371105],"hsluv":[261.168248695532611,99.9999999999924256,42.2603772648371105]},"#0055ff":{"lch":[43.8227784910393,131.676969611306021,261.90102950371454],"luv":[43.8227784910393,-18.5511048350842884,-130.363648443170376],"rgb":[0,0.333333333333333315,1],"xyz":[0.212964361683849135,0.137159461924772241,0.961360010010332777],"hpluv":[261.90102950371454,381.28457852045068,43.8227784910393],"hsluv":[261.90102950371454,99.9999999999993321,43.8227784910393]},"#55ee00":{"lch":[83.4834241678481277,121.26988118033438,123.77813801339137],"luv":[83.4834241678481277,-67.423446821455,100.799121524975831],"rgb":[0.333333333333333315,0.933333333333333348,0],"xyz":[0.343194252835808289,0.630780425066107542,0.103666700302096418],"hpluv":[123.77813801339137,313.542875178701877,83.4834241678481277],"hsluv":[123.77813801339137,100.000000000002402,83.4834241678481277]},"#55ee11":{"lch":[83.5046935730824487,120.419265504422668,124.002811201886018],"luv":[83.5046935730824487,-67.3424968648776456,99.8287915414615412],"rgb":[0.333333333333333315,0.933333333333333348,0.0666666666666666657],"xyz":[0.344205918335445393,0.63118509126596245,0.108994805266852055],"hpluv":[124.002811201886018,311.80236567126093,83.5046935730824487],"hsluv":[124.002811201886018,98.9375412624106616,83.5046935730824487]},"#55ee22":{"lch":[83.5440973470955868,118.856748008926118,124.425313598414533],"luv":[83.5440973470955868,-67.1934622190367463,98.0406302625408728],"rgb":[0.333333333333333315,0.933333333333333348,0.133333333333333331],"xyz":[0.34608127647392245,0.631935234521353251,0.118871691462831247],"hpluv":[124.425313598414533,308.59848358059196,83.5440973470955868],"hsluv":[124.425313598414533,96.9807587800033133,83.5440973470955868]},"#55ee33":{"lch":[83.6089072227085524,116.32446068797897,125.138397832270286],"luv":[83.6089072227085524,-66.950941309724243,95.1259775880964469],"rgb":[0.333333333333333315,0.933333333333333348,0.2],"xyz":[0.349169027206380156,0.633170334814336377,0.135133845320442397],"hpluv":[125.138397832270286,303.387603747434184,83.6089072227085524],"hsluv":[125.138397832270286,93.7945051225822084,83.6089072227085524]},"#55ee44":{"lch":[83.7023291233000748,112.756808619009803,126.207644663357115],"luv":[83.7023291233000748,-66.6069499756988535,90.9813832873448547],"rgb":[0.333333333333333315,0.933333333333333348,0.266666666666666663],"xyz":[0.353627022450599071,0.634953532912023944,0.158612620273329036],"hpluv":[126.207644663357115,296.007020538140409,83.7023291233000748],"hsluv":[126.207644663357115,89.2707337544585,83.7023291233000748]},"#55ee55":{"lch":[83.8270046653184,108.148092962556504,127.715012949240077],"luv":[83.8270046653184,-66.1579022543843,85.5519840841642747],"rgb":[0.333333333333333315,0.933333333333333348,0.333333333333333315],"xyz":[0.359589436489961056,0.637338498527768693,0.190014667547302951],"hpluv":[127.715012949240077,286.404562223907249,83.8270046653184],"hsluv":[127.715012949240077,83.3573838846113091,83.8270046653184]},"#55ee66":{"lch":[83.985160091985378,102.554744038676162,129.769393513035965],"luv":[83.985160091985378,-65.6041880698479645,78.8261760618539853],"rgb":[0.333333333333333315,0.933333333333333348,0.4],"xyz":[0.367174432263469241,0.640372496837172,0.229962311954446885],"hpluv":[129.769393513035965,274.647728218817576,83.985160091985378],"hsluv":[129.769393513035965,83.6273111034757477,83.985160091985378]},"#55ee77":{"lch":[84.1786855608653752,96.1019099790829756,132.519661951802362],"luv":[84.1786855608653752,-64.9498200787083,70.8314758661090451],"rgb":[0.333333333333333315,0.933333333333333348,0.466666666666666674],"xyz":[0.376488445283671147,0.644098102045252863,0.279016113860844794],"hpluv":[132.519661951802362,260.948457539577589,84.1786855608653752],"hsluv":[132.519661951802362,83.9470254314832687,84.1786855608653752]},"#55ee88":{"lch":[84.4091822183787741,88.9952087097784,136.170997575445568],"luv":[84.4091822183787741,-64.2020140446184371,61.6299323860706],"rgb":[0.333333333333333315,0.933333333333333348,0.533333333333333326],"xyz":[0.387628862385614947,0.648554268886030405,0.337688977264417],"hpluv":[136.170997575445568,245.709397001158351,84.4091822183787741],"hsluv":[136.170997575445568,84.3134084109568533,84.4091822183787741]},"#55ee99":{"lch":[84.6779925165317877,81.540352796223317,141.002136712429774],"luv":[84.6779925165317877,-63.3706695007570531,51.3126434824633151],"rgb":[0.333333333333333315,0.933333333333333348,0.6],"xyz":[0.400685826494687647,0.653777054529659618,0.406455654905534869],"hpluv":[141.002136712429774,229.604367075154897,84.6779925165317877],"hsluv":[141.002136712429774,84.7220894550445394,84.6779925165317877]},"#55eeaa":{"lch":[84.9862212486181363,74.1734332109310373,147.37159021859884],"luv":[84.9862212486181363,-62.4677637576075426,39.9934580327855755],"rgb":[0.333333333333333315,0.933333333333333348,0.66666666666666663],"xyz":[0.415743519459940203,0.659800131715760685,0.48575950452253347],"hpluv":[147.37159021859884,213.709694911287,84.9862212486181363],"hsluv":[147.37159021859884,85.1677250765186358,84.9862212486181363]},"#55eebb":{"lch":[85.334751323756052,67.4984157699475418,155.676120933413],"luv":[85.334751323756052,-61.5066955643592337,27.8022037293077737],"rgb":[0.333333333333333315,0.933333333333333348,0.733333333333333282],"xyz":[0.432881111567276877,0.666655168558695443,0.576017489621175272],"hpluv":[155.676120933413,199.690784145783283,85.334751323756052],"hsluv":[155.676120933413,85.6443005177139298,85.334751323756052]},"#55eecc":{"lch":[85.7242566025865784,62.3040769944455,166.184583472908372],"luv":[85.7242566025865784,-60.5016239571924643,14.8778865660505755],"rgb":[0.333333333333333315,0.933333333333333348,0.8],"xyz":[0.452173487010998576,0.674372118736184301,0.677624000291445427],"hpluv":[166.184583472908372,189.979166061651426,85.7242566025865784],"hsluv":[166.184583472908372,86.1454332210543186,85.7242566025865784]},"#55eedd":{"lch":[86.1552131978466349,59.4824491826881427,178.687660418725557],"luv":[86.1552131978466349,-59.4668469392298462,1.36230535390821395],"rgb":[0.333333333333333315,0.933333333333333348,0.866666666666666696],"xyz":[0.473691812561632175,0.682979448956437807,0.790953848191451425],"hpluv":[178.687660418725557,187.703134777137279,86.1552131978466349],"hsluv":[178.687660418725557,86.6646578889921,86.1552131978466349]},"#55eeee":{"lch":[86.6279101052896578,59.7608483004272202,192.177050630061245],"luv":[86.6279101052896578,-58.4162567245265265,-12.6055519466972967],"rgb":[0.333333333333333315,0.933333333333333348,0.933333333333333348],"xyz":[0.497503992827806885,0.692504321062907824,0.916364664259974648],"hpluv":[192.177050630061245,196.025490067494644,86.6279101052896578],"hsluv":[192.177050630061245,87.195676441965972,86.6279101052896578]},"#55eeff":{"lch":[87.1424596935915901,63.3545065705612274,205.119112492248092],"luv":[87.1424596935915901,-57.3628964007582169,-26.8940814923128677],"rgb":[0.333333333333333315,0.933333333333333348,1],"xyz":[0.523675041237638306,0.702972740426840548,1.05419885255175649],"hpluv":[205.119112492248092,217.06231600799947,87.1424596935915901],"hsluv":[205.119112492248092,99.9999999999933,87.1424596935915901]},"#006600":{"lch":[36.9339903888407548,57.1632711650289735,127.71501294924046],"luv":[36.9339903888407548,-34.9687359497521086,45.2197642227726249],"rgb":[0,0.4,0],"xyz":[0.0475116309878656218,0.0950232619757325619,0.0158372103292880942],"hpluv":[127.71501294924046,196.394882900214554,36.9339903888407548],"hsluv":[127.71501294924046,100.000000000002331,36.9339903888407548]},"#006611":{"lch":[37.0090255636121412,54.7765813256580216,129.276595687178855],"luv":[37.0090255636121412,-34.6771211058740789,42.4024897091546933],"rgb":[0,0.4,0.0666666666666666657],"xyz":[0.04852329648750274,0.0954279281755874148,0.0211653152940437239],"hpluv":[129.276595687178855,187.813410896691579,37.0090255636121412],"hsluv":[129.276595687178855,99.9999999999908908,37.0090255636121412]},"#006622":{"lch":[37.1475616040544949,50.6324758020482761,132.428423847637788],"luv":[37.1475616040544949,-34.160143827310165,37.3728802682170453],"rgb":[0,0.4,0.133333333333333331],"xyz":[0.0503986546259797621,0.0961780714309782292,0.0310422014900229234],"hpluv":[132.428423847637788,172.957013965329963,37.1475616040544949],"hsluv":[132.428423847637788,99.9999999999909619,37.1475616040544949]},"#006633":{"lch":[37.3740982281225911,44.601943170857588,138.432874640413417],"luv":[37.3740982281225911,-33.3702331720845464,29.5932572160807972],"rgb":[0,0.4,0.2],"xyz":[0.0534864053584375,0.0974131717239613421,0.0473043553476340667],"hpluv":[138.432874640413417,151.43364776149042,37.3740982281225911],"hsluv":[138.432874640413417,99.9999999999910187,37.3740982281225911]},"#006644":{"lch":[37.6978110334583292,37.6830106217376226,149.139540405640531],"luv":[37.6978110334583292,-32.3478161181420845,19.3294615006434647],"rgb":[0,0.4,0.266666666666666663],"xyz":[0.0579444006026563832,0.099196369821648922,0.0707831303005207],"hpluv":[149.139540405640531,126.843666215367492,37.6978110334583292],"hsluv":[149.139540405640531,99.9999999999911893,37.6978110334583292]},"#006655":{"lch":[38.1247572916394191,31.9621551107412678,167.158861879927684],"luv":[38.1247572916394191,-31.1627826377188839,7.10354401671241],"rgb":[0,0.4,0.333333333333333315],"xyz":[0.0639068146420183752,0.101581335437393755,0.102185177574494607],"hpluv":[167.158861879927684,106.382034992292617,38.1247572916394191],"hsluv":[167.158861879927684,99.9999999999912461,38.1247572916394191]},"#006666":{"lch":[38.6583399620500714,30.584907136256998,192.177050630061132],"luv":[38.6583399620500714,-29.8967608054288689,-6.45137488264605441],"rgb":[0,0.4,0.4],"xyz":[0.0714918104155265466,0.104615333746797073,0.142132821981638569],"hpluv":[192.177050630061132,100.392967527320849,38.6583399620500714],"hsluv":[192.177050630061132,99.9999999999914877,38.6583399620500714]},"#006677":{"lch":[39.2996251720959648,35.3400629634721852,215.899751113488037],"luv":[39.2996251720959648,-28.6270125920824867,-20.7223116547099835],"rgb":[0,0.4,0.466666666666666674],"xyz":[0.080805823435728466,0.108340938954877883,0.191186623888036478],"hpluv":[215.899751113488037,114.108563264217921,39.2996251720959648],"hsluv":[215.899751113488037,99.999999999991644,39.2996251720959648]},"#006688":{"lch":[40.0476371065618721,44.619030030948764,232.088426656893603],"luv":[40.0476371065618721,-27.4159210327312195,-35.2026293738089109],"rgb":[0,0.4,0.533333333333333326],"xyz":[0.0919462405376723,0.112797105795655481,0.249859487291608645],"hpluv":[232.088426656893603,141.378234692038774,40.0476371065618721],"hsluv":[232.088426656893603,99.9999999999918145,40.0476371065618721]},"#006699":{"lch":[40.8996671875350728,56.0796471869528546,242.024131169727298],"luv":[40.8996671875350728,-26.3069429553173038,-49.5264735364712863],"rgb":[0,0.4,0.6],"xyz":[0.105003204646745008,0.118019891439284638,0.318626164932726552],"hpluv":[242.024131169727298,173.990215160848891,40.8996671875350728],"hsluv":[242.024131169727298,99.9999999999919,40.8996671875350728]},"#0066aa":{"lch":[41.8515997707465104,68.3303466488807345,248.245335088520562],"luv":[41.8515997707465104,-25.3254853434547229,-63.4638169768779861],"rgb":[0,0.4,0.66666666666666663],"xyz":[0.12006089761199755,0.124042968625385747,0.397930014549725153],"hpluv":[248.245335088520562,207.176688473106537,41.8515997707465104],"hsluv":[248.245335088520562,99.9999999999921,41.8515997707465104]},"#0066bb":{"lch":[42.8982420202673396,80.6980154219041452,252.339105133311591],"luv":[42.8982420202673396,-24.4823887435570384,-76.8946183711398],"rgb":[0,0.4,0.733333333333333282],"xyz":[0.137198489719334182,0.130898005468320505,0.488187999648366899],"hpluv":[252.339105133311591,238.705643004687346,42.8982420202673396],"hsluv":[252.339105133311591,99.9999999999922125,42.8982420202673396]},"#0066cc":{"lch":[44.0336413015701211,92.8728169416488356,255.165448618736946],"luv":[44.0336413015701211,-23.7781103155697018,-89.7772888680517696],"rgb":[0,0.4,0.8],"xyz":[0.156490865163055937,0.138614955645809307,0.589794510318637],"hpluv":[255.165448618736946,267.63526922347819,44.0336413015701211],"hsluv":[255.165448618736946,99.9999999999922835,44.0336413015701211]},"#0066dd":{"lch":[45.2513748624169807,104.723900430114114,257.197154574648096],"luv":[45.2513748624169807,-23.2064943358636171,-102.120291528843495],"rgb":[0,0.4,0.866666666666666696],"xyz":[0.17800919071368948,0.147222285866062841,0.703124358218643],"hpluv":[257.197154574648096,293.665789717253858,45.2513748624169807],"hsluv":[257.197154574648096,99.9999999999923119,45.2513748624169807]},"#0066ee":{"lch":[46.5448008930790422,116.210429262859975,258.70668283343889],"luv":[46.5448008930790422,-22.7576936505684415,-113.960305585607557],"rgb":[0,0.4,0.933333333333333348],"xyz":[0.201821370979864217,0.156747157972532858,0.828535174287166276],"hpluv":[258.70668283343889,316.82048544727013,46.5448008930790422],"hsluv":[258.70668283343889,99.9999999999923119,46.5448008930790422]},"#0066ff":{"lch":[47.9072652547968758,127.336469583599694,259.859032010401279],"luv":[47.9072652547968758,-22.4202120236612075,-125.347160234402949],"rgb":[0,0.4,1],"xyz":[0.227992419389695611,0.167215577336465582,0.966369362578948121],"hpluv":[259.859032010401279,337.280125749862,47.9072652547968758],"hsluv":[259.859032010401279,99.9999999999992326,47.9072652547968758]},"#55ff00":{"lch":[88.6611895097861691,129.940408372856581,124.363532639485271],"luv":[88.6611895097861691,-73.3437881830395213,107.262288168144963],"rgb":[0.333333333333333315,1,0],"xyz":[0.395046625265482121,0.734485169925456649,0.120950824445320529],"hpluv":[124.363532639485271,511.214684976108288,88.6611895097861691],"hsluv":[124.363532639485271,100.000000000002203,88.6611895097861691]},"#55ff11":{"lch":[88.6804070841335488,129.16615931328721,124.557188606571273],"luv":[88.6804070841335488,-73.2667318726085597,106.376137890284312],"rgb":[0.333333333333333315,1,0.0666666666666666657],"xyz":[0.396058290765119225,0.734889836125311557,0.126278929410076152],"hpluv":[124.557188606571273,509.111714190739917,88.6804070841335488],"hsluv":[124.557188606571273,99.999999999991374,88.6804070841335488]},"#55ff22":{"lch":[88.7160126920472862,127.742171235629925,124.920549061750862],"luv":[88.7160126920472862,-73.1247263453711867,104.741762009752222],"rgb":[0.333333333333333315,1,0.133333333333333331],"xyz":[0.397933648903596282,0.735639979380702358,0.136155815606055358],"hpluv":[124.920549061750862,505.235489858807625,88.7160126920472862],"hsluv":[124.920549061750862,99.9999999999912461,88.7160126920472862]},"#55ff33":{"lch":[88.7745841250638819,125.429409451765778,125.531442964179078],"luv":[88.7745841250638819,-72.893256299655377,102.074041467218606],"rgb":[0.333333333333333315,1,0.2],"xyz":[0.401021399636054,0.736875079673685485,0.152417969463666508],"hpluv":[125.531442964179078,498.916518871762833,88.7745841250638819],"hsluv":[125.531442964179078,99.9999999999915445,88.7745841250638819]},"#55ff44":{"lch":[88.8590323294941271,122.159967165607114,126.442013329478428],"luv":[88.8590323294941271,-72.5641116581323189,98.2726171279075658],"rgb":[0.333333333333333315,1,0.266666666666666663],"xyz":[0.405479394880272903,0.738658277771373,0.175896744416553147],"hpluv":[126.442013329478428,489.934204596741552,88.8590323294941271],"hsluv":[126.442013329478428,99.9999999999914735,88.8590323294941271]},"#55ff55":{"lch":[88.9717666926620154,117.915518658848484,127.715012949240119],"luv":[88.9717666926620154,-72.1329719647303,93.2786357968462],"rgb":[0.333333333333333315,1,0.333333333333333315],"xyz":[0.411441808919634888,0.7410432433871178,0.207298791690527062],"hpluv":[127.715012949240119,478.187207442594797,88.9717666926620154],"hsluv":[127.715012949240119,99.9999999999912461,88.9717666926620154]},"#55ff66":{"lch":[89.1148309932425,112.728028648536309,129.430986513959965],"luv":[89.1148309932425,-71.5990188667543919,87.0700232014633713],"rgb":[0.333333333333333315,1,0.4],"xyz":[0.419026804693143073,0.744077241696521119,0.247246436097671],"hpluv":[129.430986513959965,463.701047487447568,89.1148309932425],"hsluv":[129.430986513959965,99.999999999991374,89.1148309932425]},"#55ff77":{"lch":[89.2899761450384233,106.6837193332601,131.696695826109391],"luv":[89.2899761450384233,-70.9646547782272705,79.6582308552282825],"rgb":[0.333333333333333315,1,0.466666666666666674],"xyz":[0.428340817713345,0.747802846904602,0.296300238004068905],"hpluv":[131.696695826109391,446.653165807945641,89.2899761450384233],"hsluv":[131.696695826109391,99.9999999999911466,89.2899761450384233]},"#55ff88":{"lch":[89.4987035327786344,99.9302046144725722,134.655503696120093],"luv":[89.4987035327786344,-70.2351927280585784,71.0849034376696807],"rgb":[0.333333333333333315,1,0.533333333333333326],"xyz":[0.439481234815288779,0.752259013745379512,0.354973101407641101],"hpluv":[134.655503696120093,427.420708471833962,89.4987035327786344],"hsluv":[134.655503696120093,99.9999999999910472,89.4987035327786344]},"#55ff99":{"lch":[89.7422928839939544,92.6881300553494185,138.499225093055145],"luv":[89.7422928839939544,-69.4184746025382395,61.4179520744067275],"rgb":[0.333333333333333315,1,0.6],"xyz":[0.452538198924361534,0.757481799389008725,0.423739779048759],"hpluv":[138.499225093055145,406.664135605650245,89.7422928839939544],"hsluv":[138.499225093055145,99.9999999999909193,89.7422928839939544]},"#55ffaa":{"lch":[90.021821419032733,85.2692799565717081,143.477548510033301],"luv":[90.021821419032733,-68.524415632830582,50.7469660816416095],"rgb":[0.333333333333333315,1,0.66666666666666663],"xyz":[0.467595891889614035,0.763504876575109792,0.503043628665757581],"hpluv":[143.477548510033301,385.467603776639692,90.021821419032733],"hsluv":[143.477548510033301,99.9999999999908908,90.021821419032733]},"#55ffbb":{"lch":[90.3381779071049635,78.1017696608261929,149.892156464581973],"luv":[90.3381779071049635,-67.5644942943643514,39.178125719584358],"rgb":[0.333333333333333315,1,0.733333333333333282],"xyz":[0.484733483996950709,0.770359913418044551,0.593301613764399383],"hpluv":[149.892156464581973,365.560319764238727,90.3381779071049635],"hsluv":[149.892156464581973,99.9999999999906,90.3381779071049635]},"#55ffcc":{"lch":[90.6920737330737836,71.7555158590460849,158.04408297895796],"luv":[90.6920737330737836,-66.5512174426729217,26.828893251416094],"rgb":[0.333333333333333315,1,0.8],"xyz":[0.504025859440672463,0.778076863595533408,0.694908124434669539],"hpluv":[158.04408297895796,349.620992563925881,90.6920737330737836],"hsluv":[158.04408297895796,99.9999999999905214,90.6920737330737836]},"#55ffdd":{"lch":[91.0840522607878142,66.9403052018893874,168.083008151042208],"luv":[91.0840522607878142,-65.4975936461766,13.8227959213187273],"rgb":[0.333333333333333315,1,0.866666666666666696],"xyz":[0.525544184991306,0.786684193815786914,0.808237972334675536],"hpluv":[168.083008151042208,341.570927955438208,91.0840522607878142],"hsluv":[168.083008151042208,99.9999999999901092,91.0840522607878142]},"#55ffee":{"lch":[91.5144973031429,64.4172738793593,179.746868091755],"luv":[91.5144973031429,-64.4166452130874347,0.284593639433804613],"rgb":[0.333333333333333315,1,0.933333333333333348],"xyz":[0.549356365257480661,0.796209065922256931,0.933648788403198759],"hpluv":[179.746868091755,346.559914030924404,91.5144973031429],"hsluv":[179.746868091755,99.9999999999898108,91.5144973031429]},"#55ffff":{"lch":[91.9836412143362,64.7784688708661918,192.177050630061103],"luv":[91.9836412143362,-63.3209831419883,-13.663935128132529],"rgb":[0.333333333333333315,1,1],"xyz":[0.575527413667312082,0.806677485286189655,1.07148297669498049],"hpluv":[192.177050630061103,370.276433987554753,91.9836412143362],"hsluv":[192.177050630061103,99.9999999999890719,91.9836412143362]},"#007700":{"lch":[43.052730924646589,66.6333343982289534,127.715012949240503],"luv":[43.052730924646589,-40.7618988300426395,52.7111834129681611],"rgb":[0,0.466666666666666674,0],"xyz":[0.0659653690412832505,0.131930738082568333,0.0219884563470937981],"hpluv":[127.715012949240503,196.394882900214441,43.052730924646589],"hsluv":[127.715012949240503,100.000000000002217,43.052730924646589]},"#007711":{"lch":[43.1130460407029,64.6129906803504497,128.830381027920708],"luv":[43.1130460407029,-40.513441406878222,50.333881531534],"rgb":[0,0.466666666666666674,0.0666666666666666657],"xyz":[0.0669770345409203688,0.132335404282423186,0.0273165613118494313],"hpluv":[128.830381027920708,190.173702516526191,43.1130460407029],"hsluv":[128.830381027920708,99.9999999999908908,43.1130460407029]},"#007722":{"lch":[43.2245297597171856,61.038201507507992,131.028383581415682],"luv":[43.2245297597171856,-40.0674788501528809,46.0462721820529381],"rgb":[0,0.466666666666666674,0.133333333333333331],"xyz":[0.0688523926793974,0.133085547537814014,0.0371934475078286239],"hpluv":[131.028383581415682,179.188765673473426,43.2245297597171856],"hsluv":[131.028383581415682,99.9999999999909193,43.2245297597171856]},"#007733":{"lch":[43.4071769639209251,55.6324991773261601,135.049443606961],"luv":[43.4071769639209251,-39.3720497464739694,39.3041558041433419],"rgb":[0,0.466666666666666674,0.2],"xyz":[0.0719401434118551314,0.134320647830797113,0.0534556013654397671],"hpluv":[135.049443606961,162.632131787412106,43.4071769639209251],"hsluv":[135.049443606961,99.9999999999909193,43.4071769639209251]},"#007744":{"lch":[43.6689123670523855,48.8909209361139787,141.845848120172377],"luv":[43.6689123670523855,-38.4454486392046704,30.2038015639029105],"rgb":[0,0.466666666666666674,0.266666666666666663],"xyz":[0.076398138656074,0.136103845928484707,0.0769343763183264],"hpluv":[141.845848120172377,142.067640978907804,43.6689123670523855],"hsluv":[141.845848120172377,99.9999999999910614,43.6689123670523855]},"#007755":{"lch":[44.0154249216106,41.9153980271179,152.953344682219807],"luv":[44.0154249216106,-37.3313854656975224,19.0595973457790286],"rgb":[0,0.466666666666666674,0.333333333333333315],"xyz":[0.082360552695436,0.13848881154422954,0.108336423592300321],"hpluv":[152.953344682219807,120.839250305189026,44.0154249216106],"hsluv":[152.953344682219807,99.9999999999912461,44.0154249216106]},"#007766":{"lch":[44.4505333250062549,36.6388362985735725,170.062665906075836],"luv":[44.4505333250062549,-36.0891470448365865,6.32279929223085357],"rgb":[0,0.466666666666666674,0.4],"xyz":[0.0899455484689441753,0.141522809853632831,0.148284067999444269],"hpluv":[170.062665906075836,104.593337643625588,44.4505333250062549],"hsluv":[170.062665906075836,99.9999999999913314,44.4505333250062549]},"#007777":{"lch":[44.9764013416840669,35.58350047386471,192.17705063006116],"luv":[44.9764013416840669,-34.7828880940388601,-7.50574458738768],"rgb":[0,0.466666666666666674,0.466666666666666674],"xyz":[0.0992595614891461,0.145248415061713654,0.197337869905842178],"hpluv":[192.17705063006116,100.392967527320835,44.9764013416840669],"hsluv":[192.17705063006116,99.9999999999914451,44.9764013416840669]},"#007788":{"lch":[45.5937085159301603,40.0276538709377,213.25546015720218],"luv":[45.5937085159301603,-33.4724811425817,-21.9500815618326577],"rgb":[0,0.466666666666666674,0.533333333333333326],"xyz":[0.110399978591089923,0.149704581902491252,0.256010733309414373],"hpluv":[213.25546015720218,111.402399127386914,45.5937085159301603],"hsluv":[213.25546015720218,99.9999999999916156,45.5937085159301603]},"#007799":{"lch":[46.3018156057360244,48.7595612734022907,228.659125647543163],"luv":[46.3018156057360244,-32.2075160625452597,-36.6083422822662357],"rgb":[0,0.466666666666666674,0.6],"xyz":[0.123456942700162636,0.154927367546120409,0.324777410950532253],"hpluv":[228.659125647543163,133.62911578541167,46.3018156057360244],"hsluv":[228.659125647543163,99.9999999999917577,46.3018156057360244]},"#0077aa":{"lch":[47.0989379645613795,59.8445186957143,238.773531847525192],"luv":[47.0989379645613795,-31.0247207616125031,-51.1745358511991597],"rgb":[0,0.466666666666666674,0.66666666666666663],"xyz":[0.138514635665415164,0.160950444732221504,0.404081260567530853],"hpluv":[238.773531847525192,161.232500989130415,47.0989379645613795],"hsluv":[238.773531847525192,99.999999999991914,47.0989379645613795]},"#0077bb":{"lch":[47.9823278818304146,71.9659744020705432,245.408717039049918],"luv":[47.9823278818304146,-29.9480972873728,-65.4386196408934495],"rgb":[0,0.466666666666666674,0.733333333333333282],"xyz":[0.155652227772751839,0.167805481575156262,0.4943392456661726],"hpluv":[245.408717039049918,190.32034768447943,47.9823278818304146],"hsluv":[245.408717039049918,99.9999999999920561,47.9823278818304146]},"#0077cc":{"lch":[48.9484610491917067,84.4081580704908276,249.9122747909542],"luv":[48.9484610491917067,-28.9906993044602252,-79.2734287305105454],"rgb":[0,0.466666666666666674,0.8],"xyz":[0.174944603216473565,0.175522431752645064,0.595945756336442756],"hpluv":[249.9122747909542,218.818838178067409,48.9484610491917067],"hsluv":[249.9122747909542,99.9999999999922125,48.9484610491917067]},"#0077dd":{"lch":[49.9932200675849,96.8017840095652389,253.089738624096071],"luv":[49.9932200675849,-28.15707849035525,-92.6162206005108715],"rgb":[0,0.466666666666666674,0.866666666666666696],"xyz":[0.196462928767107109,0.184129761972898598,0.709275604236448753],"hpluv":[253.089738624096071,245.70363248193695,49.9932200675849],"hsluv":[253.089738624096071,99.9999999999921272,49.9932200675849]},"#0077ee":{"lch":[51.1120678627821547,108.963279527823246,255.411176145550684],"luv":[51.1120678627821547,-27.4457353077348785,-105.450120430828804],"rgb":[0,0.466666666666666674,0.933333333333333348],"xyz":[0.220275109033281846,0.193654634079368643,0.834686420304972],"hpluv":[255.411176145550684,270.517920771775039,51.1120678627821547],"hsluv":[255.411176145550684,99.9999999999922551,51.1120678627821547]},"#0077ff":{"lch":[52.300205122294,120.810007187166491,257.158195690943],"luv":[52.300205122294,-26.851223719183885,-117.788240590245493],"rgb":[0,0.466666666666666674,1],"xyz":[0.24644615744311324,0.204123053443301339,0.972520608596753822],"hpluv":[257.158195690943,293.11554041762389,52.300205122294],"hsluv":[257.158195690943,99.9999999999991189,52.300205122294]},"#008800":{"lch":[49.0166039301270473,75.8637069146273291,127.71501294924046],"luv":[49.0166039301270473,-46.4084346679225348,60.0129920808956214],"rgb":[0,0.533333333333333326,0],"xyz":[0.0880377387662537,0.176075477532509878,0.0293459129220837445],"hpluv":[127.71501294924046,196.394882900214583,49.0166039301270473],"hsluv":[127.71501294924046,100.000000000002359,49.0166039301270473]},"#008811":{"lch":[49.066374048408079,74.1307167522113133,128.546257021813432],"luv":[49.066374048408079,-46.1942790787678064,57.9780281364371461],"rgb":[0,0.533333333333333326,0.0666666666666666657],"xyz":[0.0890494042658908219,0.17648014373236473,0.0346740178868393742],"hpluv":[128.546257021813432,191.713881645209739,49.066374048408079],"hsluv":[128.546257021813432,99.9999999999908908,49.066374048408079]},"#008822":{"lch":[49.1584337135343503,71.0276132120671,130.159311596065152],"luv":[49.1584337135343503,-45.8067815452400779,54.2831521106656112],"rgb":[0,0.533333333333333326,0.133333333333333331],"xyz":[0.090924762404367851,0.177230286987755559,0.0445509040828185737],"hpluv":[130.159311596065152,183.344763498744726,49.1584337135343503],"hsluv":[130.159311596065152,99.9999999999909335,49.1584337135343503]},"#008833":{"lch":[49.3094443496477197,66.226384742663825,133.033255321350083],"luv":[49.3094443496477197,-45.1943905199784481,48.4086882864121648],"rgb":[0,0.533333333333333326,0.2],"xyz":[0.0940125131368255845,0.178465387280738658,0.060813057940429717],"hpluv":[133.033255321350083,170.427732437953466,49.3094443496477197],"hsluv":[133.033255321350083,99.9999999999909903,49.3094443496477197]},"#008844":{"lch":[49.5262444349700388,59.9709063982634589,137.708745518338219],"luv":[49.5262444349700388,-44.3625073014275202,40.3543995143041],"rgb":[0,0.533333333333333326,0.266666666666666663],"xyz":[0.0984705083810444581,0.180248585378426252,0.0842918328933163485],"hpluv":[137.708745518338219,153.654237765673173,49.5262444349700388],"hsluv":[137.708745518338219,99.9999999999910756,49.5262444349700388]},"#008855":{"lch":[49.8139833497656355,52.876539169604392,145.043769270071607],"luv":[49.8139833497656355,-43.3370811793054074,30.2956397756013871],"rgb":[0,0.533333333333333326,0.333333333333333315],"xyz":[0.104432922420406457,0.182633550994171084,0.115693880167290264],"hpluv":[145.043769270071607,134.694876863850226,49.8139833497656355],"hsluv":[145.043769270071607,99.9999999999911893,49.8139833497656355]},"#008866":{"lch":[50.1764284055384593,46.0546718070978613,156.264738854980266],"luv":[50.1764284055384593,-42.1591397878491918,18.5375221539472825],"rgb":[0,0.533333333333333326,0.4],"xyz":[0.112017918193914628,0.185667549303574375,0.155641524574434226],"hpluv":[156.264738854980266,116.469784961641182,50.1764284055384593],"hsluv":[156.264738854980266,99.9999999999912461,50.1764284055384593]},"#008877":{"lch":[50.6161324463586766,41.2412500498738694,172.391379993232761],"luv":[50.6161324463586766,-40.8781468825216336,5.46056893805106114],"rgb":[0,0.533333333333333326,0.466666666666666674],"xyz":[0.121331931214116548,0.189393154511655198,0.204695326480832135],"hpluv":[172.391379993232761,103.390869865470918,50.6161324463586766],"hsluv":[172.391379993232761,99.9999999999913456,50.6161324463586766]},"#008888":{"lch":[51.1345503085294695,40.4555776108317602,192.177050630061132],"luv":[51.1345503085294695,-39.545345738280993,-8.53342781453345],"rgb":[0,0.533333333333333326,0.533333333333333326],"xyz":[0.132472348316060362,0.193849321352432796,0.263368189884404302],"hpluv":[192.177050630061132,100.392967527320849,51.1345503085294695],"hsluv":[192.177050630061132,99.9999999999914877,51.1345503085294695]},"#008899":{"lch":[51.7321394091786715,44.6308971675799881,211.11913642158629],"luv":[51.7321394091786715,-38.208266400248,-23.066108485628412],"rgb":[0,0.533333333333333326,0.6],"xyz":[0.145529312425133089,0.199072106996061954,0.332134867525522237],"hpluv":[211.11913642158629,109.474886689832829,51.7321394091786715],"hsluv":[211.11913642158629,99.999999999991573,51.7321394091786715]},"#0088aa":{"lch":[52.4084594351014914,52.8385448128107598,225.694192047300788],"luv":[52.4084594351014914,-36.9070805124816346,-37.8124215831333572],"rgb":[0,0.533333333333333326,0.66666666666666663],"xyz":[0.160587005390385618,0.205095184182163048,0.411438717142520782],"hpluv":[225.694192047300788,127.934825585488483,52.4084594351014914],"hsluv":[225.694192047300788,99.9999999999917,52.4084594351014914]},"#0088bb":{"lch":[53.1622766119302952,63.4852929684367,235.812153399491365],"luv":[53.1622766119302952,-35.672889398211332,-52.5150205681309856],"rgb":[0,0.533333333333333326,0.733333333333333282],"xyz":[0.177724597497722292,0.211950221025097807,0.501696702241162584],"hpluv":[235.812153399491365,151.533580059798538,53.1622766119302952],"hsluv":[235.812153399491365,99.9999999999918572,53.1622766119302952]},"#0088cc":{"lch":[53.9916730817088961,75.3609801883338406,242.731381598031476],"luv":[53.9916730817088961,-34.5275961267233455,-66.9859868976812578],"rgb":[0,0.533333333333333326,0.8],"xyz":[0.197016972941444019,0.219667171202586609,0.60330321291143274],"hpluv":[242.731381598031476,177.116523654060018,53.9916730817088961],"hsluv":[242.731381598031476,99.9999999999919282,53.9916730817088961]},"#0088dd":{"lch":[54.894159312243417,87.7409205251226,247.565131731451658],"luv":[54.894159312243417,-33.4848266090853,-81.1001573460580545],"rgb":[0,0.533333333333333326,0.866666666666666696],"xyz":[0.218535298492077562,0.228274501422840143,0.716633060811438738],"hpluv":[247.565131731451658,202.822146488853946,54.894159312243417],"hsluv":[247.565131731451658,99.9999999999921414,54.894159312243417]},"#0088ee":{"lch":[55.8667862779657725,100.217939448335898,251.046181944553609],"luv":[55.8667862779657725,-32.551381555669181,-94.7841914355319091],"rgb":[0,0.533333333333333326,0.933333333333333348],"xyz":[0.242347478758252299,0.237799373529310187,0.842043876879962],"hpluv":[251.046181944553609,227.630842720065772,55.8667862779657725],"hsluv":[251.046181944553609,99.9999999999923261,55.8667862779657725]},"#0088ff":{"lch":[56.9062538959811803,112.568622459607909,253.628629682131134],"luv":[56.9062538959811803,-31.728824885135996,-108.00452043253614],"rgb":[0,0.533333333333333326,1],"xyz":[0.268518527168083665,0.248267792893242883,0.979878065171743806],"hpluv":[253.628629682131134,251.013269675548315,56.9062538959811803],"hsluv":[253.628629682131134,99.9999999999989,56.9062538959811803]},"#009900":{"lch":[54.8465256129575778,84.8867610313905629,127.71501294924046],"luv":[54.8465256129575778,-51.9281467214630865,67.1507987776363677],"rgb":[0,0.6,0],"xyz":[0.11390733921872119,0.227814678437445572,0.037969113072906],"hpluv":[127.71501294924046,196.394882900214611,54.8465256129575778],"hsluv":[127.71501294924046,100.000000000002359,54.8465256129575778]},"#009911":{"lch":[54.8884489227774139,83.3822613920475533,128.355135015114286],"luv":[54.8884489227774139,-51.7415219578455918,65.3866685214771195],"rgb":[0,0.6,0.0666666666666666657],"xyz":[0.114919004718358309,0.228219344637300425,0.0432972180376616292],"hpluv":[128.355135015114286,192.766711025891595,54.8884489227774139],"hsluv":[128.355135015114286,99.9999999999908908,54.8884489227774139]},"#009922":{"lch":[54.9660326693047665,80.6666974094322882,129.584419925030318],"luv":[54.9660326693047665,-51.4019848556742147,62.168738316310943],"rgb":[0,0.6,0.133333333333333331],"xyz":[0.116794362856835338,0.228969487892691254,0.0531741042336408287],"hpluv":[129.584419925030318,186.225526863887183,54.9660326693047665],"hsluv":[129.584419925030318,99.9999999999908766,54.9660326693047665]},"#009933":{"lch":[55.0934048637144826,76.4021664793699529,131.735569901926],"luv":[55.0934048637144826,-50.8604445821364948,57.0132109221080725],"rgb":[0,0.6,0.2],"xyz":[0.119882113589293071,0.230204588185674353,0.0694362580912519789],"hpluv":[131.735569901926,175.972736191316358,55.0934048637144826],"hsluv":[131.735569901926,99.9999999999909903,55.0934048637144826]},"#009944":{"lch":[55.2764995203901321,70.6973886175228614,135.142608572152881],"luv":[55.2764995203901321,-50.1148739946869739,49.8660221176072795],"rgb":[0,0.6,0.266666666666666663],"xyz":[0.124340108833511945,0.231987786283361946,0.0929150330441386174],"hpluv":[135.142608572152881,162.293888564466016,55.2764995203901321],"hsluv":[135.142608572152881,99.9999999999910472,55.2764995203901321]},"#009955":{"lch":[55.5199214835444792,63.9084670453141044,140.311824754994205],"luv":[55.5199214835444792,-49.1795700812718,40.8125231602173173],"rgb":[0,0.6,0.333333333333333315],"xyz":[0.130302522872873944,0.234372751899106779,0.124317080318112519],"hpluv":[140.311824754994205,146.065915008593578,55.5199214835444792],"hsluv":[140.311824754994205,99.999999999991033,55.5199214835444792]},"#009966":{"lch":[55.8272121342916847,56.7002292022714229,147.995210176352344],"luv":[55.8272121342916847,-48.0820094218291771,30.0505634148387166],"rgb":[0,0.6,0.4],"xyz":[0.137887518646382129,0.23740675020851007,0.164264724725256495],"hpluv":[147.995210176352344,128.877825594911201,55.8272121342916847],"hsluv":[147.995210176352344,99.9999999999911893,55.8272121342916847]},"#009977":{"lch":[56.2009899164422393,50.1460500452165832,159.138923639260469],"luv":[56.2009899164422393,-46.85880632633,17.8571723631952],"rgb":[0,0.6,0.466666666666666674],"xyz":[0.147201531666584035,0.241132355416590893,0.213318526631654404],"hpluv":[159.138923639260469,113.222330796973324,56.2009899164422393],"hsluv":[159.138923639260469,99.9999999999912887,56.2009899164422393]},"#009988":{"lch":[56.6430401241061077,45.7780774967248476,174.293450088826631],"luv":[56.6430401241061077,-45.5512109338885409,4.55187453172192669],"rgb":[0,0.6,0.533333333333333326],"xyz":[0.158341948768527863,0.245588522257368491,0.271991390035226543],"hpluv":[174.293450088826631,102.553461073272217,56.6430401241061077],"hsluv":[174.293450088826631,99.9999999999913456,56.6430401241061077]},"#009999":{"lch":[57.1543844255405133,45.2182256610376498,192.177050630061132],"luv":[57.1543844255405133,-44.2008363998384866,-9.53802880511673301],"rgb":[0,0.6,0.6],"xyz":[0.171398912877600562,0.250811307900997649,0.340758067676344478],"hpluv":[192.177050630061132,100.392967527320849,57.1543844255405133],"hsluv":[192.177050630061132,99.9999999999914877,57.1543844255405133]},"#0099aa":{"lch":[57.7353441317496,49.1617433665336065,209.362441333496832],"luv":[57.7353441317496,-42.8462007667450138,-24.1056028900479831],"rgb":[0,0.6,0.66666666666666663],"xyz":[0.186456605842853118,0.256834385087098771,0.420061917293343079],"hpluv":[209.362441333496832,108.050017888493571,57.7353441317496],"hsluv":[209.362441333496832,99.9999999999915872,57.7353441317496]},"#0099bb":{"lch":[58.3856036871333686,56.8846197873520509,223.121526867409756],"luv":[58.3856036871333686,-41.5203973647636531,-38.8833713947714656],"rgb":[0,0.6,0.733333333333333282],"xyz":[0.203594197950189765,0.26368942193003353,0.51031990239198477],"hpluv":[223.121526867409756,123.631292939903787,58.3856036871333686],"hsluv":[223.121526867409756,99.9999999999917151,58.3856036871333686]},"#0099cc":{"lch":[59.1042769117952531,67.0724902608298237,233.123241992210865],"luv":[59.1042769117952531,-40.2499186561976856,-53.6531732328907225],"rgb":[0,0.6,0.8],"xyz":[0.222886573393911491,0.271406372107522331,0.611926413062254926],"hpluv":[233.123241992210865,144.000781521109104,59.1042769117952531],"hsluv":[233.123241992210865,99.9999999999918572,59.1042769117952531]},"#0099dd":{"lch":[59.889976295668248,78.6325369214165448,240.220044999287609],"luv":[59.889976295668248,-39.0544489896310338,-68.2482664747921888],"rgb":[0,0.6,0.866666666666666696],"xyz":[0.244404898944545035,0.280013702327775837,0.725256260962260924],"hpluv":[240.220044999287609,166.60478591483178,59.889976295668248],"hsluv":[240.220044999287609,99.9999999999918288,59.889976295668248]},"#0099ee":{"lch":[60.7408843834734853,90.8542474807105549,245.312254820906361],"luv":[60.7408843834734853,-37.9473430473261288,-82.5499451298106521],"rgb":[0,0.6,0.933333333333333348],"xyz":[0.2682170792107198,0.289538574434245854,0.850667077030784147],"hpluv":[245.312254820906361,189.803165481490907,60.7408843834734853],"hsluv":[245.312254820906361,99.9999999999919424,60.7408843834734853]},"#0099ff":{"lch":[61.6548256470178444,103.309645725501895,249.051296659176671],"luv":[61.6548256470178444,-36.936501733242423,-96.4809708680364082],"rgb":[0,0.6,1],"xyz":[0.294388127620551165,0.300006993798178578,0.988501265322566],"hpluv":[249.051296659176671,212.624411607996194,61.6548256470178444],"hsluv":[249.051296659176671,99.9999999999986926,61.6548256470178444]},"#44aa00":{"lch":[61.6346835386869714,87.655425968627469,122.331376925101353],"luv":[61.6346835386869714,-46.8794507107122556,74.0661245293922],"rgb":[0.266666666666666663,0.66666666666666663,0],"xyz":[0.167579386406696784,0.29977360690638849,0.0490310792412290836],"hpluv":[122.331376925101353,180.464989524422549,61.6346835386869714],"hsluv":[122.331376925101353,100.00000000000226,61.6346835386869714]},"#44aa11":{"lch":[61.6696010074672927,86.3319887480293175,122.80087722620695],"luv":[61.6696010074672927,-46.7678581574140253,72.5670705248452492],"rgb":[0.266666666666666663,0.66666666666666663,0.0666666666666666657],"xyz":[0.168591051906333916,0.300178273106243343,0.0543591842059847133],"hpluv":[122.80087722620695,177.639660035048053,61.6696010074672927],"hsluv":[122.80087722620695,97.7717273205757778,61.6696010074672927]},"#44aa22":{"lch":[61.7342457720645541,83.9245562706402097,123.699102784065559],"luv":[61.7342457720645541,-46.5639790081192,69.8221097085679],"rgb":[0.266666666666666663,0.66666666666666663,0.133333333333333331],"xyz":[0.170466410044810918,0.300928416361634143,0.0642360704019639128],"hpluv":[123.699102784065559,172.505216938407472,61.7342457720645541],"hsluv":[123.699102784065559,93.6968530578778882,61.7342457720645541]},"#44aa33":{"lch":[61.8404488118369784,80.0901636841586111,125.261260913590505],"luv":[61.8404488118369784,-46.2365065380172098,65.3958697634278],"rgb":[0.266666666666666663,0.66666666666666663,0.2],"xyz":[0.173554160777268651,0.30216351665461727,0.080498224259575063],"hpluv":[125.261260913590505,164.340980941234676,61.8404488118369784],"hsluv":[125.261260913590505,87.1410828818075913,61.8404488118369784]},"#44aa44":{"lch":[61.9932720073472,74.8379874444649573,127.71501294923992],"luv":[61.9932720073472,-45.7809668449718501,59.2015830825281526],"rgb":[0.266666666666666663,0.66666666666666663,0.266666666666666663],"xyz":[0.178012156021487539,0.303946714752304836,0.103976999212461702],"hpluv":[127.71501294923992,153.185220958209158,61.9932720073472],"hsluv":[127.71501294923992,77.998580561819125,61.9932720073472]},"#44aa55":{"lch":[62.1967362447927883,68.3415808764166854,131.40733952388851],"luv":[62.1967362447927883,-45.2016647888952292,51.2579864704043118],"rgb":[0.266666666666666663,0.66666666666666663,0.333333333333333315],"xyz":[0.183974570060849552,0.306331680368049697,0.135379046486435617],"hpluv":[131.40733952388851,139.430168232009549,62.1967362447927883],"hsluv":[131.40733952388851,78.575415606985473,62.1967362447927883]},"#44aa66":{"lch":[62.4540496972210377,60.9745995384144,136.885019691281769],"luv":[62.4540496972210377,-44.510458035487396,41.6739836629655684],"rgb":[0.266666666666666663,0.66666666666666663,0.4],"xyz":[0.191559565834357709,0.309365678677453,0.175326690893579551],"hpluv":[136.885019691281769,123.88755407265441,62.4540496972210377],"hsluv":[136.885019691281769,79.2669246679894854,62.4540496972210377]},"#44aa77":{"lch":[62.7677273349888196,53.3862032124370103,144.988299459670287],"luv":[62.7677273349888196,-43.7251633677153,30.629998072253084],"rgb":[0.266666666666666663,0.66666666666666663,0.466666666666666674],"xyz":[0.200873578854559642,0.313091283885533811,0.22438049279997746],"hpluv":[144.988299459670287,107.927460302012818,62.7677273349888196],"hsluv":[144.988299459670287,80.0573307147673603,62.7677273349888196]},"#44aa88":{"lch":[63.1396635168947142,46.6323085826041606,156.819414130132799],"luv":[63.1396635168947142,-42.8676249510766354,18.3558964585511255],"rgb":[0.266666666666666663,0.66666666666666663,0.533333333333333326],"xyz":[0.212013995956503443,0.317547450726311409,0.283053356203549655],"hpluv":[156.819414130132799,93.7182088199909,63.1396635168947142],"hsluv":[156.819414130132799,80.9270306732118456,63.1396635168947142]},"#44aa99":{"lch":[63.5711832083111,42.2713825005608328,173.059905511526438],"luv":[63.5711832083111,-41.9616613239929848,5.10771548142927578],"rgb":[0.266666666666666663,0.66666666666666663,0.6],"xyz":[0.22507096006557617,0.322770236369940566,0.351820033844667535],"hpluv":[173.059905511526438,84.3772726773670598,63.5711832083111],"hsluv":[173.059905511526438,81.8544924931781281,63.5711832083111]},"#44aaaa":{"lch":[64.0630839897801536,41.9755778813547948,192.177050630061],"luv":[64.0630839897801536,-41.03114670244819,-8.85404646225986802],"rgb":[0.266666666666666663,0.66666666666666663,0.66666666666666663],"xyz":[0.240128653030828698,0.328793313556041689,0.431123883461666135],"hpluv":[192.177050630061,83.1434743556685731,64.0630839897801536],"hsluv":[192.177050630061,82.8180264051213868,64.0630839897801536]},"#44aabb":{"lch":[64.6156750410269893,46.3675567205894481,210.140689328835606],"luv":[64.6156750410269893,-40.0984334486196374,-23.2823098339426302],"rgb":[0.266666666666666663,0.66666666666666663,0.733333333333333282],"xyz":[0.257266245138165373,0.335648350398976447,0.521381868560307882],"hpluv":[210.140689328835606,91.0574853549996135,64.6156750410269893],"hsluv":[210.140689328835606,83.7972417316187,64.6156750410269893]},"#44aacc":{"lch":[65.2288162125558131,54.5527176111565382,224.088695054270687],"luv":[65.2288162125558131,-39.1832309762682058,-37.956203827872514],"rgb":[0.266666666666666663,0.66666666666666663,0.8],"xyz":[0.276558620581887071,0.343365300576465249,0.622988379230578],"hpluv":[224.088695054270687,106.124637545316332,65.2288162125558131],"hsluv":[224.088695054270687,84.7740840933985424,65.2288162125558131]},"#44aadd":{"lch":[65.9019585504415772,65.1392687949415574,233.984713087438024],"luv":[65.9019585504415772,-38.3019605797345406,-52.6885581021924381],"rgb":[0.266666666666666663,0.66666666666666663,0.866666666666666696],"xyz":[0.29807694613252067,0.351972630796718755,0.736318227130584],"hpluv":[233.984713087438024,125.424934833645892,65.9019585504415772],"hsluv":[233.984713087438024,85.7334354760652246,65.9019585504415772]},"#44aaee":{"lch":[66.634186587349916,77.0517400481588,240.904642753345257],"luv":[66.634186587349916,-37.4675316968449081,-67.3287064556787698],"rgb":[0.266666666666666663,0.66666666666666663,0.933333333333333348],"xyz":[0.32188912639869538,0.361497502903188772,0.861729043199107259],"hpluv":[240.904642753345257,146.73194579095005,66.634186587349916],"hsluv":[240.904642753345257,86.6633273618325717,66.634186587349916]},"#44aaff":{"lch":[67.4242620727880677,89.6163291450103827,245.832487512483851],"luv":[67.4242620727880677,-36.6894434071527229,-81.7616731231704534],"rgb":[0.266666666666666663,0.66666666666666663,1],"xyz":[0.348060174808526801,0.371965922267121496,0.999563231490889104],"hpluv":[245.832487512483851,168.659292786049974,67.4242620727880677],"hsluv":[245.832487512483851,99.9999999999982094,67.4242620727880677]},"#44bb00":{"lch":[67.1028050092269126,96.9162111575721497,123.392710981560953],"luv":[67.1028050092269126,-53.3402140179528601,80.9170782570533476],"rgb":[0.266666666666666663,0.733333333333333282,0],"xyz":[0.201533884315295564,0.367682602723587049,0.0603492452107617],"hpluv":[123.392710981560953,183.271561122122193,67.1028050092269126],"hsluv":[123.392710981560953,100.00000000000226,67.1028050092269126]},"#44bb11":{"lch":[67.1332810832727347,95.7453830613523138,123.778355355208646],"luv":[67.1332810832727347,-53.2326764896654581,79.5830417319651673],"rgb":[0.266666666666666663,0.733333333333333282,0.0666666666666666657],"xyz":[0.202545549814932696,0.368087268923441902,0.0656773501755173322],"hpluv":[123.778355355208646,180.975295348072393,67.1332810832727347],"hsluv":[123.778355355208646,98.1806384027583334,67.1332810832727347]},"#44bb22":{"lch":[67.1897165718252438,93.6085464076245728,124.511290753684577],"luv":[67.1897165718252438,-53.03566579282883,77.1348048189646391],"rgb":[0.266666666666666663,0.733333333333333282,0.133333333333333331],"xyz":[0.204420907953409697,0.368837412178832702,0.0755542363714965248],"hpluv":[124.511290753684577,176.787689053856155,67.1897165718252438],"hsluv":[124.511290753684577,94.8452524510698538,67.1897165718252438]},"#44bb33":{"lch":[67.2824703298360873,90.1849869824975627,125.771296969252688],"luv":[67.2824703298360873,-52.7177504009765485,73.1721987485246501],"rgb":[0.266666666666666663,0.733333333333333282,0.2],"xyz":[0.207508658685867431,0.370072512471815829,0.091816390229107675],"hpluv":[125.771296969252688,170.087205132927863,67.2824703298360873],"hsluv":[125.771296969252688,89.4565739304913308,67.2824703298360873]},"#44bb44":{"lch":[67.4160218575577375,85.4495691526201284,127.715012949240077],"luv":[67.4160218575577375,-52.2724357759646807,67.5960156105081182],"rgb":[0.266666666666666663,0.733333333333333282,0.266666666666666663],"xyz":[0.211966653930086318,0.371855710569503395,0.115295165181994314],"hpluv":[127.715012949240077,160.837043785954393,67.4160218575577375],"hsluv":[127.715012949240077,81.8947222100884318,67.4160218575577375]},"#44bb55":{"lch":[67.5939766620447813,79.5000401119176,130.566112214394138],"luv":[67.5939766620447813,-51.7008659583180759,60.3926886051327756],"rgb":[0.266666666666666663,0.733333333333333282,0.333333333333333315],"xyz":[0.217929067969448331,0.374240676185248256,0.146697212455968229],"hpluv":[130.566112214394138,149.244617358403957,67.5939766620447813],"hsluv":[130.566112214394138,82.2871698148834412,67.5939766620447813]},"#44bb66":{"lch":[67.8192698910356313,72.5749222232247,134.657948179728322],"luv":[67.8192698910356313,-51.0109407747319139,51.6236695420221778],"rgb":[0.266666666666666663,0.733333333333333282,0.4],"xyz":[0.225514063742956489,0.377274674494651574,0.186644856863112191],"hpluv":[134.657948179728322,135.791565604529097,67.8192698910356313],"hsluv":[134.657948179728322,82.7624878443234451,67.8192698910356313]},"#44bb77":{"lch":[68.0942730594189527,65.0902087481164671,140.487577627549143],"luv":[68.0942730594189527,-50.2162275054035163,41.4133525568618168],"rgb":[0.266666666666666663,0.733333333333333282,0.466666666666666674],"xyz":[0.234828076763158422,0.38100027970273237,0.2356986587695101],"hpluv":[140.487577627549143,121.295420087000366,68.0942730594189527],"hsluv":[140.487577627549143,83.3123735080707206,68.0942730594189527]},"#44bb88":{"lch":[68.4208577329380461,57.7058903955470939,148.752185803016886],"luv":[68.4208577329380461,-49.3345927236295907,29.9343907092910229],"rgb":[0.266666666666666663,0.733333333333333282,0.533333333333333326],"xyz":[0.245968493865102222,0.385456446543509967,0.294371522173082267],"hpluv":[148.752185803016886,107.021481540968693,68.4208577329380461],"hsluv":[148.752185803016886,83.9257037652282776,68.4208577329380461]},"#44bb99":{"lch":[68.8004384509552267,51.4171630403873507,160.23039633414129],"luv":[68.8004384509552267,-48.3866530594068536,17.3912754227620781],"rgb":[0.266666666666666663,0.733333333333333282,0.6],"xyz":[0.259025457974175,0.390679232187139125,0.363138199814200147],"hpluv":[160.23039633414129,94.8322885243955,68.8004384509552267],"hsluv":[160.23039633414129,84.5895330052649683,68.8004384509552267]},"#44bbaa":{"lch":[69.2340056114394571,47.5630236168925,175.171204236910796],"luv":[69.2340056114394571,-47.3942071553531576,4.003791165451279],"rgb":[0.266666666666666663,0.733333333333333282,0.66666666666666663],"xyz":[0.274083150939427478,0.396702309373240247,0.442442049431198747],"hpluv":[175.171204236910796,87.1744714415039113,69.2340056114394571],"hsluv":[175.171204236910796,85.2901010545764251,69.2340056114394571]},"#44bbbb":{"lch":[69.722153945093,47.4463312905994243,192.177050630061103],"luv":[69.722153945093,-46.3788106784417877,-10.0080104411700219],"rgb":[0.266666666666666663,0.733333333333333282,0.733333333333333282],"xyz":[0.291220743046764152,0.403557346216175,0.532700034529840494],"hpluv":[192.177050630061103,86.3517549054621156,69.722153945093],"hsluv":[192.177050630061103,86.0137488036252,69.722153945093]},"#44bbcc":{"lch":[70.265109629848,51.5238495855336254,208.311647260201596],"luv":[70.265109629848,-45.3606162241423405,-24.4360711219862],"rgb":[0.266666666666666663,0.733333333333333282,0.8],"xyz":[0.310513118490485907,0.411274296393663807,0.63430654520011065],"hpluv":[208.311647260201596,93.0481841100277478,70.265109629848],"hsluv":[208.311647260201596,86.7476639801695484,70.265109629848]},"#44bbdd":{"lch":[70.8627576511434683,59.1258582536945,221.390354970453018],"luv":[70.8627576511434683,-44.357542252504274,-39.0931651258026491],"rgb":[0.266666666666666663,0.733333333333333282,0.866666666666666696],"xyz":[0.332031444041119395,0.419881626613917314,0.747636393100116647],"hpluv":[221.390354970453018,105.876295000483495,70.8627576511434683],"hsluv":[221.390354970453018,87.4804162985680449,70.8627576511434683]},"#44bbee":{"lch":[71.5146701379092207,69.1277260896420813,231.126492355228834],"luv":[71.5146701379092207,-43.3847784652122499,-53.8182451576511269],"rgb":[0.266666666666666663,0.733333333333333282,0.933333333333333348],"xyz":[0.35584362430729416,0.429406498720387331,0.873047209168639871],"hpluv":[231.126492355228834,122.65816352572412,71.5146701379092207],"hsluv":[231.126492355228834,88.202277385306985,71.5146701379092207]},"#44bbff":{"lch":[72.2201358507708,80.5712163793027685,238.202407995552562],"luv":[72.2201358507708,-42.4545914747530801,-68.4786723845625573],"rgb":[0.266666666666666663,0.733333333333333282,1],"xyz":[0.382014672717125525,0.439874918084320055,1.01088139746042183],"hpluv":[238.202407995552562,141.566646923483631,72.2201358507708],"hsluv":[238.202407995552562,99.9999999999976694,72.2201358507708]},"#44cc00":{"lch":[72.503692055952385,105.959797206167082,124.178253965335855],"luv":[72.503692055952385,-59.5249745926526543,87.6598883396283384],"rgb":[0.266666666666666663,0.8,0],"xyz":[0.239757627624912484,0.444130089342821943,0.0730904929806336506],"hpluv":[124.178253965335855,185.447217969921951,72.503692055952385],"hsluv":[124.178253965335855,100.000000000002359,72.503692055952385]},"#44cc11":{"lch":[72.5305637479271752,104.914943747871533,124.498982817725434],"luv":[72.5305637479271752,-59.4229434801529877,86.4642076802510928],"rgb":[0.266666666666666663,0.8,0.0666666666666666657],"xyz":[0.240769293124549616,0.444534755542676796,0.0784185979453892873],"hpluv":[124.498982817725434,183.55052269402043,72.5305637479271752],"hsluv":[124.498982817725434,98.4921383302381628,72.5305637479271752]},"#44cc22":{"lch":[72.5803335982668,103.003123626508128,125.105641856618192],"luv":[72.5803335982668,-59.2356349500081265,84.2661440252673088],"rgb":[0.266666666666666663,0.8,0.133333333333333331],"xyz":[0.242644651263026617,0.445284898798067597,0.0882954841413684799],"hpluv":[125.105641856618192,180.082189217111164,72.5803335982668],"hsluv":[125.105641856618192,95.7225658430248387,72.5803335982668]},"#44cc33":{"lch":[72.6621573160580283,99.9260617146724144,126.139923542820412],"luv":[72.6621573160580283,-58.9323161564504758,80.6982027200153],"rgb":[0.266666666666666663,0.8,0.2],"xyz":[0.245732401995484351,0.446519999091050723,0.10455763799897963],"hpluv":[126.139923542820412,174.505777504147545,72.6621573160580283],"hsluv":[126.139923542820412,91.233607132201584,72.6621573160580283]},"#44cc44":{"lch":[72.780026014363628,95.6382843785450518,127.715012949240148],"luv":[72.780026014363628,-58.5052227586060383,75.6559339961998],"rgb":[0.266666666666666663,0.8,0.266666666666666663],"xyz":[0.250190397239703266,0.448303197188738289,0.128036412951866269],"hpluv":[127.715012949240148,166.747333178852926,72.780026014363628],"hsluv":[127.715012949240148,84.9041129363740339,72.780026014363628]},"#44cc55":{"lch":[72.9371837422115732,90.1892610669535912,129.983942971096695],"luv":[72.9371837422115732,-57.9531752136704,69.1052262456084492],"rgb":[0.266666666666666663,0.8,0.333333333333333315],"xyz":[0.256152811279065251,0.45068816280448315,0.159438460225840184],"hpluv":[129.983942971096695,156.908028239254975,72.9371837422115732],"hsluv":[129.983942971096695,85.1779272269293557,72.9371837422115732]},"#44cc66":{"lch":[73.1363103507417236,83.732792729713168,133.164212643981188],"luv":[73.1363103507417236,-57.28090462038152,61.074368962666],"rgb":[0.266666666666666663,0.8,0.4],"xyz":[0.263737807052573436,0.453722161113886469,0.199386104632984118],"hpluv":[133.164212643981188,145.278670258241675,73.1363103507417236],"hsluv":[133.164212643981188,85.5122241677148764,73.1363103507417236]},"#44cc77":{"lch":[73.3796177536812309,76.5464624175537,137.569101073773794],"luv":[73.3796177536812309,-56.4983001604517625,51.6459387330839],"rgb":[0.266666666666666663,0.8,0.466666666666666674],"xyz":[0.273051820072775342,0.457447766321967264,0.248439906539382027],"hpluv":[137.569101073773794,132.369828459728325,73.3796177536812309],"hsluv":[137.569101073773794,85.9026534082125153,73.3796177536812309]},"#44cc88":{"lch":[73.6689069899719442,69.0664605730878378,143.639563525196422],"luv":[73.6689069899719442,-55.6194534086204087,40.9469459010095278],"rgb":[0.266666666666666663,0.8,0.533333333333333326],"xyz":[0.284192237174719142,0.461903933162744862,0.307112769942954222],"hpluv":[143.639563525196422,118.965846887396481,73.6689069899719442],"hsluv":[143.639563525196422,86.3428682965135863,73.6689069899719442]},"#44cc99":{"lch":[74.0056056952011,61.9424628035573548,151.940118655705163],"luv":[74.0056056952011,-54.661526046940331,29.1373689338922652],"rgb":[0.266666666666666663,0.8,0.6],"xyz":[0.297249201283791842,0.467126718806374,0.375879447584072102],"hpluv":[151.940118655705163,106.209454381597496,74.0056056952011],"hsluv":[151.940118655705163,86.8250568088678,74.0056056952011]},"#44ccaa":{"lch":[74.3907954563299256,56.0938540204294327,163.002493202880316],"luv":[74.3907954563299256,-53.6435329798001206,16.3979214631106132],"rgb":[0.266666666666666663,0.8,0.66666666666666663],"xyz":[0.312306894249044398,0.473149795992475142,0.455183297201070702],"hpluv":[163.002493202880316,95.6831366692641581,74.3907954563299256],"hsluv":[163.002493202880316,87.3405106459777727,74.3907954563299256]},"#44ccbb":{"lch":[74.8252340948823331,52.6660587979454959,176.823724318960615],"luv":[74.8252340948823331,-52.5851528012588929,2.91812511330579927],"rgb":[0.266666666666666663,0.8,0.733333333333333282],"xyz":[0.329444486356381072,0.4800048328354099,0.545441282299712449],"hpluv":[176.823724318960615,89.3145186414393493,74.8252340948823331],"hsluv":[176.823724318960615,87.8801809558037235,74.8252340948823331]},"#44cccc":{"lch":[75.3093757141467393,52.6911947618550442,192.177050630061103],"luv":[75.3093757141467393,-51.5056671360628826,-11.1143267137884898],"rgb":[0.266666666666666663,0.8,0.8],"xyz":[0.348736861800102771,0.487721783012898702,0.647047792969982605],"hpluv":[192.177050630061103,88.7826952764381758,75.3093757141467393],"hsluv":[192.177050630061103,88.4351737608208168,75.3093757141467393]},"#44ccdd":{"lch":[75.8433901234223669,56.5143539908888,206.846753698803184],"luv":[75.8433901234223669,-50.423101427505074,-25.5222069860548118],"rgb":[0.266666666666666663,0.8,0.866666666666666696],"xyz":[0.37025518735073637,0.496329113233152208,0.760377640869988602],"hpluv":[206.846753698803184,94.5540981724771257,75.8433901234223669],"hsluv":[206.846753698803184,88.9971515077065334,75.8433901234223669]},"#44ccee":{"lch":[76.4271825186181104,63.6191993934700264,219.125479385679029],"luv":[76.4271825186181104,-49.3536035237008,-40.1450414209705926],"rgb":[0.266666666666666663,0.8,0.933333333333333348],"xyz":[0.39406736761691108,0.505853985339622225,0.885788456938511826],"hpluv":[219.125479385679029,108.248092211119214,76.4271825186181104],"hsluv":[219.125479385679029,89.5586239337052,76.4271825186181104]},"#44ccff":{"lch":[77.0604138316104752,73.087044724203011,228.6232677289035],"luv":[77.0604138316104752,-48.3110621928290342,-54.8430248647743426],"rgb":[0.266666666666666663,0.8,1],"xyz":[0.420238416026742501,0.516322404703555,1.02362264523029367],"hpluv":[228.6232677289035,128.526456918779161,77.0604138316104752],"hsluv":[228.6232677289035,99.9999999999969731,77.0604138316104752]},"#44dd00":{"lch":[77.8394471675691193,114.806757868746558,124.774603647715026],"luv":[77.8394471675691193,-65.4799812263264869,94.3025116894186],"rgb":[0.266666666666666663,0.866666666666666696,0],"xyz":[0.282391618172087688,0.529398070437173462,0.0873018231630249691],"hpluv":[124.774603647715026,210.465861771712326,77.8394471675691193],"hsluv":[124.774603647715026,100.000000000002174,77.8394471675691193]},"#44dd11":{"lch":[77.8633510332093692,113.867279553553601,125.04447057905567],"luv":[77.8633510332093692,-65.3839645843072503,93.2238946202376724],"rgb":[0.266666666666666663,0.866666666666666696,0.0666666666666666657],"xyz":[0.283403283671724793,0.529802736637028371,0.0926299281277806],"hpluv":[125.04447057905567,209.014039294370775,77.8633510332093692],"hsluv":[125.04447057905567,98.7339197526847272,77.8633510332093692]},"#44dd22":{"lch":[77.9076302523257738,112.144788460185168,125.553114236235714],"luv":[77.9076302523257738,-65.2074178024426914,91.2384033306006472],"rgb":[0.266666666666666663,0.866666666666666696,0.133333333333333331],"xyz":[0.28527864181020185,0.530552879892419171,0.102506814323759798],"hpluv":[125.553114236235714,206.347170822894697,77.9076302523257738],"hsluv":[125.553114236235714,96.4050109160080382,77.9076302523257738]},"#44dd33":{"lch":[77.9804445180848802,109.362510567887881,126.41495586461761],"luv":[77.9804445180848802,-64.9207541848309546,88.0082632130877869],"rgb":[0.266666666666666663,0.866666666666666696,0.2],"xyz":[0.288366392542659555,0.531787980185402298,0.118768968181370949],"hpluv":[126.41495586461761,202.025685311970193,77.9804445180848802],"hsluv":[126.41495586461761,92.6208241654068729,77.9804445180848802]},"#44dd44":{"lch":[78.0853727898892345,105.463232003770898,127.715012949240119],"luv":[78.0853727898892345,-64.5154806081751389,83.428089194092081],"rgb":[0.266666666666666663,0.866666666666666696,0.266666666666666663],"xyz":[0.292824387786878471,0.533571178283089864,0.142247743134257587],"hpluv":[127.715012949240119,195.940425098340825,78.0853727898892345],"hsluv":[127.715012949240119,87.2650912217990395,78.0853727898892345]},"#44dd55":{"lch":[78.2253459168282888,100.46502238820301,129.562971792001804],"luv":[78.2253459168282888,-63.9887749627021662,77.4510000079714303],"rgb":[0.266666666666666663,0.866666666666666696,0.333333333333333315],"xyz":[0.298786801826240456,0.535956143898834614,0.173649790408231475],"hpluv":[129.562971792001804,188.090878204767051,78.2253459168282888],"hsluv":[129.562971792001804,87.4605090914447,78.2253459168282888]},"#44dd66":{"lch":[78.4028117957757615,94.4661355921174,132.108441056441876],"luv":[78.4028117957757615,-63.3429373931831776,70.0822592109557],"rgb":[0.266666666666666663,0.866666666666666696,0.4],"xyz":[0.306371797599748641,0.538990142208237932,0.213597434815375464],"hpluv":[132.108441056441876,178.59774401526758,78.4028117957757615],"hsluv":[132.108441056441876,87.7006053461373654,78.4028117957757615]},"#44dd77":{"lch":[78.6198227824069278,87.656024220764337,135.559861003190832],"luv":[78.6198227824069278,-62.584854150819659,61.3735660778470375],"rgb":[0.266666666666666663,0.866666666666666696,0.466666666666666674],"xyz":[0.315685810619950546,0.542715747416318783,0.262651236721773373],"hpluv":[135.559861003190832,167.73117312681623,78.6198227824069278],"hsluv":[135.559861003190832,87.9831439767702221,78.6198227824069278]},"#44dd88":{"lch":[78.8780874692010201,80.3346414261830404,140.206181380764804],"luv":[78.8780874692010201,-61.7253288138421823,51.416324216113189],"rgb":[0.266666666666666663,0.866666666666666696,0.533333333333333326],"xyz":[0.326826227721894347,0.547171914257096326,0.321324100125345513],"hpluv":[140.206181380764804,155.961921377148798,78.8780874692010201],"hsluv":[140.206181380764804,88.3044935606717729,78.8780874692010201]},"#44dd99":{"lch":[79.1790042342924,72.9438114093828602,146.430978952194238],"luv":[79.1790042342924,-60.7782665628728651,40.3336328210091182],"rgb":[0.266666666666666663,0.866666666666666696,0.6],"xyz":[0.339883191830967046,0.552394699900725539,0.390090777766463448],"hpluv":[146.430978952194238,144.047423549525234,79.1790042342924],"hsluv":[146.430978952194238,88.6599152631773109,79.1790042342924]},"#44ddaa":{"lch":[79.5236849812282,66.109750002698334,154.681927012774025],"luv":[79.5236849812282,-59.7597565852220498,28.2713731236083063],"rgb":[0.266666666666666663,0.866666666666666696,0.66666666666666663],"xyz":[0.354940884796219602,0.558417777086826606,0.469394627383462049],"hpluv":[154.681927012774025,133.15854000611057,79.5236849812282],"hsluv":[154.681927012774025,89.0438856180527267,79.5236849812282]},"#44ddbb":{"lch":[79.9129735834354733,60.6712530747818448,165.306614809553963],"luv":[79.9129735834354733,-58.687123678359157,15.3890371376899697],"rgb":[0.266666666666666663,0.866666666666666696,0.733333333333333282],"xyz":[0.372078476903556277,0.565272813929761364,0.55965261248210374],"hpluv":[165.306614809553963,125.005338667233715,79.9129735834354733],"hsluv":[165.306614809553963,89.4504295982059574,79.9129735834354733]},"#44ddcc":{"lch":[80.3474616163736783,57.6077690930220925,178.158710030216184],"luv":[80.3474616163736783,-57.5780241737671616,1.85099760130491053],"rgb":[0.266666666666666663,0.866666666666666696,0.8],"xyz":[0.391370852347278,0.572989764107250221,0.661259123152373895],"hpluv":[178.158710030216184,121.786592068950441,80.3474616163736783],"hsluv":[178.158710030216184,89.8734379183952399,80.3474616163736783]},"#44dddd":{"lch":[80.8275029051271758,57.7489755309586,192.177050630061132],"luv":[80.8275029051271758,-56.4496501662069505,-12.1811810177875159],"rgb":[0.266666666666666663,0.866666666666666696,0.866666666666666696],"xyz":[0.412889177897911575,0.581597094327503727,0.774588971052379893],"hpluv":[192.177050630061132,125.674721736272474,80.8275029051271758],"hsluv":[192.177050630061132,90.3069463225795204,80.8275029051271758]},"#44ddee":{"lch":[81.3532277894993143,61.361693698739991,205.642938459455962],"luv":[81.3532277894993143,-55.3180860243278758,-26.5549771640468073],"rgb":[0.266666666666666663,0.866666666666666696,0.933333333333333348],"xyz":[0.436701358164086284,0.591121966433973745,0.899999787120903116],"hpluv":[205.642938459455962,137.939634766348263,81.3532277894993143],"hsluv":[205.642938459455962,90.7453615563817806,81.3532277894993143]},"#44ddff":{"lch":[81.9245576129038113,68.0382655080336463,217.195369709248553],"luv":[81.9245576129038113,-54.1978382178125813,-41.1314953029609],"rgb":[0.266666666666666663,0.866666666666666696,1],"xyz":[0.462872406573917705,0.601590385797906468,1.03783397541268507],"hpluv":[217.195369709248553,158.576151866946,81.9245576129038113],"hsluv":[217.195369709248553,99.9999999999957367,81.9245576129038113]},"#44ee00":{"lch":[83.112739541513335,123.476763986331008,125.23710114083579],"luv":[83.112739541513335,-71.241317589729718,100.852297507867192],"rgb":[0.266666666666666663,0.933333333333333348,0],"xyz":[0.329570394512602505,0.623755623118204428,0.103028081943196154],"hpluv":[125.23710114083579,311.240798427125753,83.112739541513335],"hsluv":[125.23710114083579,100.000000000002402,83.112739541513335]},"#44ee11":{"lch":[83.1341682891089135,122.626446998812852,125.466600012922257],"luv":[83.1341682891089135,-71.1513320296005674,99.8735873690646656],"rgb":[0.266666666666666663,0.933333333333333348,0.0666666666666666657],"xyz":[0.330582060012239609,0.624160289318059336,0.10835618690795179],"hpluv":[125.466600012922257,309.547675363147619,83.1341682891089135],"hsluv":[125.466600012922257,98.9247180409442279,83.1341682891089135]},"#44ee22":{"lch":[83.1738669889620184,121.064908518289769,125.897986234483838],"luv":[83.1738669889620184,-70.9856689153146192,98.0701120789979],"rgb":[0.266666666666666663,0.933333333333333348,0.133333333333333331],"xyz":[0.332457418150716666,0.624910432573450136,0.118233073103930983],"hpluv":[125.897986234483838,306.432309176179558,83.1738669889620184],"hsluv":[125.897986234483838,96.9444732717922,83.1738669889620184]},"#44ee33":{"lch":[83.2391611795664517,118.535427876706891,126.625494433478437],"luv":[83.2391611795664517,-70.7161072615436694,95.1308563805026921],"rgb":[0.266666666666666663,0.933333333333333348,0.2],"xyz":[0.335545168883174372,0.626145532866433263,0.134495226961542119],"hpluv":[126.625494433478437,301.369067751793693,83.2391611795664517],"hsluv":[126.625494433478437,93.7204451717133651,83.2391611795664517]},"#44ee44":{"lch":[83.3332795320092714,114.974418092600288,127.715012949240275],"luv":[83.3332795320092714,-70.3337997514069855,90.9520391649414],"rgb":[0.266666666666666663,0.933333333333333348,0.266666666666666663],"xyz":[0.340003164127393287,0.627928730964120829,0.157974001914428758],"hpluv":[127.715012949240275,294.205765091151079,83.3332795320092714],"hsluv":[127.715012949240275,89.1439564147074321,83.3332795320092714]},"#44ee55":{"lch":[83.4588814464859183,110.379279114867671,129.248151137931956],"luv":[83.4588814464859183,-69.8347997913980123,85.479155330485213],"rgb":[0.266666666666666663,0.933333333333333348,0.333333333333333315],"xyz":[0.345965578166755272,0.630313696579865579,0.189376049188402673],"hpluv":[129.248151137931956,284.901382538762221,83.4588814464859183],"hsluv":[129.248151137931956,89.2862876088480419,83.4588814464859183]},"#44ee66":{"lch":[83.6182069813856,104.810737833959209,131.33226272314829],"luv":[83.6182069813856,-69.2195888954281,78.7015837099029],"rgb":[0.266666666666666663,0.933333333333333348,0.4],"xyz":[0.353550573940263457,0.633347694889268897,0.229323693595546635],"hpluv":[131.33226272314829,273.53562680177663,83.6182069813856],"hsluv":[131.33226272314829,89.462046779026835,83.6182069813856]},"#44ee77":{"lch":[83.8131566406418642,98.3993759238413759,134.112401675041724],"luv":[83.8131566406418642,-68.4926783274834889,70.6483559449852123],"rgb":[0.266666666666666663,0.933333333333333348,0.466666666666666674],"xyz":[0.362864586960465363,0.637073300097349748,0.278377495501944572],"hpluv":[134.112401675041724,260.333399951005049,83.8131566406418642],"hsluv":[134.112401675041724,89.6701381262035682,83.8131566406418642]},"#44ee88":{"lch":[84.045338735079568,91.3569443918750892,137.785521400150031],"luv":[84.045338735079568,-67.6621349200187439,61.3834406553211949],"rgb":[0.266666666666666663,0.933333333333333348,0.533333333333333326],"xyz":[0.374005004062409163,0.641529466938127291,0.337050358905516712],"hpluv":[137.785521400150031,245.709311488591595,84.045338735079568],"hsluv":[137.785521400150031,89.9084899734552323,84.045338735079568]},"#44ee99":{"lch":[84.3160998906388386,83.9946679616676306,142.613931790318958],"luv":[84.3160998906388386,-66.738995210465,51.0001055321292895],"rgb":[0.266666666666666663,0.933333333333333348,0.6],"xyz":[0.387061968171481863,0.646752252581756504,0.405817036546634591],"hpluv":[142.613931790318958,230.343048149298568,84.3160998906388386],"hsluv":[142.613931790318958,90.1742147406472725,84.3160998906388386]},"#44eeaa":{"lch":[84.626546237332235,76.7502660373389887,148.925817786423067],"luv":[84.626546237332235,-65.7365837009088239,39.6144531722415607],"rgb":[0.266666666666666663,0.933333333333333348,0.66666666666666663],"xyz":[0.402119661136734419,0.652775329767857571,0.485120886163633247],"hpluv":[148.925817786423067,215.298316825794302,84.626546237332235],"hsluv":[148.925817786423067,90.4637941794664897,84.626546237332235]},"#44eebb":{"lch":[84.9775593290447,70.218708007349818,157.069253127653155],"luv":[84.9775593290447,-64.6697768267590618,27.3584889823731068],"rgb":[0.266666666666666663,0.933333333333333348,0.733333333333333282],"xyz":[0.419257253244071093,0.659630366610792329,0.575378871262274938],"hpluv":[157.069253127653155,202.183693696822303,84.9775593290447],"hsluv":[157.069253127653155,90.7732788992861401,84.9775593290447]},"#44eecc":{"lch":[85.3698091329633826,65.1592886039499462,167.256585364158155],"luv":[85.3698091329633826,-63.5542641697608914,14.3731832665241086],"rgb":[0.266666666666666663,0.933333333333333348,0.8],"xyz":[0.438549628687792792,0.667347316788281186,0.676985381932545094],"hpluv":[167.256585364158155,193.290067765431047,85.3698091329633826],"hsluv":[167.256585364158155,91.0984884260964,85.3698091329633826]},"#44eedd":{"lch":[85.803765500838054,62.4110099600490216,179.263728091065275],"luv":[85.803765500838054,-62.4058570040272613,0.801982435119061421],"rgb":[0.266666666666666663,0.933333333333333348,0.866666666666666696],"xyz":[0.460067954238426391,0.675954647008534693,0.790315229832551092],"hpluv":[179.263728091065275,191.499842549603557,85.803765500838054],"hsluv":[179.263728091065275,91.4351983708881875,85.803765500838054]},"#44eeee":{"lch":[86.2797089909746546,62.6494691870182407,192.17705063006116],"luv":[86.2797089909746546,-61.2398849709435922,-13.2148582346064085],"rgb":[0.266666666666666663,0.933333333333333348,0.933333333333333348],"xyz":[0.4838801345046011,0.68547951911500471,0.915726045901074315],"hpluv":[192.17705063006116,199.700166684316315,86.2797089909746546],"hsluv":[192.17705063006116,91.7793037580661775,86.2797089909746546]},"#44eeff":{"lch":[86.7977415696122847,66.0848691943621134,204.633388514668525],"luv":[86.7977415696122847,-60.0707080483631159,-27.5448719547627086],"rgb":[0.266666666666666663,0.933333333333333348,1],"xyz":[0.510051182914432522,0.695947938478937433,1.05356023419285627],"hpluv":[204.633388514668525,219.870556477974674,86.7977415696122847],"hsluv":[204.633388514668525,99.9999999999936904,86.7977415696122847]},"#44ff00":{"lch":[88.3264513606833,131.987460278186802,125.602389702763816],"luv":[88.3264513606833,-76.837408418496949,107.315899745634312],"rgb":[0.266666666666666663,1,0],"xyz":[0.381422766942276337,0.727460367977553535,0.120312206086420265],"hpluv":[125.602389702763816,502.990651378155178,88.3264513606833],"hsluv":[125.602389702763816,100.000000000002331,88.3264513606833]},"#44ff11":{"lch":[88.3457924202418496,131.213348009411362,125.799444038401859],"luv":[88.3457924202418496,-76.7532223203665609,106.423143908077066],"rgb":[0.266666666666666663,1,0.0666666666666666657],"xyz":[0.382434432441913441,0.727865034177408443,0.125640311051175901],"hpluv":[125.799444038401859,500.950310911531346,88.3457924202418496],"hsluv":[125.799444038401859,99.9999999999917577,88.3457924202418496]},"#44ff22":{"lch":[88.3816266358799538,129.789896608084,126.169061428897493],"luv":[88.3816266358799538,-76.5980824061806089,104.776672180562713],"rgb":[0.266666666666666663,1,0.133333333333333331],"xyz":[0.384309790580390498,0.728615177432799244,0.13551719724715508],"hpluv":[126.169061428897493,497.190929074143924,88.3816266358799538],"hsluv":[126.169061428897493,99.9999999999915445,88.3816266358799538]},"#44ff33":{"lch":[88.4405736189592204,127.478814054469,126.790121098902588],"luv":[88.4405736189592204,-76.3452168675528071,102.089450454884],"rgb":[0.266666666666666663,1,0.2],"xyz":[0.387397541312848204,0.72985027772578237,0.15177935110476623],"hpluv":[126.790121098902588,491.06642972530841,88.4405736189592204],"hsluv":[126.790121098902588,99.9999999999916,88.4405736189592204]},"#44ff44":{"lch":[88.5255621746627099,124.213522374992053,127.715012949240247],"luv":[88.5255621746627099,-75.9856771103925,98.2607552122302],"rgb":[0.266666666666666663,1,0.266666666666666663],"xyz":[0.391855536557067119,0.731633475823469936,0.175258126057652869],"hpluv":[127.715012949240247,482.369437382385513,88.5255621746627099],"hsluv":[127.715012949240247,99.9999999999915872,88.5255621746627099]},"#44ff55":{"lch":[88.6390158335401,119.977757557138,129.006344472088813],"luv":[88.6390158335401,-75.5147735105559832,93.2318684253877734],"rgb":[0.266666666666666663,1,0.333333333333333315],"xyz":[0.397817950596429104,0.734018441439214686,0.206660173331626784],"hpluv":[129.006344472088813,471.012302242813519,88.6390158335401],"hsluv":[129.006344472088813,99.9999999999916724,88.6390158335401]},"#44ff66":{"lch":[88.7829895920100256,114.806361082699226,130.743859599912923],"luv":[88.7829895920100256,-74.9316504675157518,86.9813100801842438],"rgb":[0.266666666666666663,1,0.4],"xyz":[0.405402946369937289,0.737052439748618,0.246607817738770746],"hpluv":[130.743859599912923,457.03528250903878,88.7829895920100256],"hsluv":[130.743859599912923,99.999999999991374,88.7829895920100256]},"#44ff77":{"lch":[88.9592430558717524,108.789243130847709,133.032335199193767],"luv":[88.9592430558717524,-74.2389756563468239,79.5215311376676226],"rgb":[0.266666666666666663,1,0.466666666666666674],"xyz":[0.414716959390139195,0.740778044956698856,0.295661619645168683],"hpluv":[133.032335199193767,440.631455855157412,88.9592430558717524],"hsluv":[133.032335199193767,99.999999999991374,88.9592430558717524]},"#44ff88":{"lch":[89.1692840038805343,102.078340317719523,136.01097660716411],"luv":[89.1692840038805343,-73.4425963051882462,70.8955048643657904],"rgb":[0.266666666666666663,1,0.533333333333333326],"xyz":[0.425857376492083,0.745234211797476398,0.354334483048740823],"hpluv":[136.01097660716411,422.1930512248951,89.1692840038805343],"hsluv":[136.01097660716411,99.9999999999912177,89.1692840038805343]},"#44ff99":{"lch":[89.4143964062191117,94.8987049380611438,139.863519733640288],"luv":[89.4143964062191117,-72.5511163277215303,61.1727040314764139],"rgb":[0.266666666666666663,1,0.6],"xyz":[0.43891434060115575,0.750456997441105611,0.423101160689858702],"hpluv":[139.863519733640288,402.3908266141122,89.4143964062191117],"hsluv":[139.863519733640288,99.9999999999912,89.4143964062191117]},"#44ffaa":{"lch":[89.695659684091666,87.5652599917726207,144.82485232612342],"luv":[89.695659684091666,-71.5753927145854192,50.4444042008586777],"rgb":[0.266666666666666663,1,0.66666666666666663],"xyz":[0.453972033566408251,0.756480074627206678,0.502405010306857358],"hpluv":[144.82485232612342,382.304282325397367,89.695659684091666],"hsluv":[144.82485232612342,99.9999999999909335,89.695659684091666]},"#44ffbb":{"lch":[90.0139628620153616,80.5050918065685153,151.171682460988421],"luv":[90.0139628620153616,-70.527972915407986,38.8184858440859557],"rgb":[0.266666666666666663,1,0.733333333333333282],"xyz":[0.471109625673744925,0.763335111470141436,0.592662995405499],"hpluv":[151.171682460988421,363.621116250194575,90.0139628620153616],"hsluv":[151.171682460988421,99.999999999990834,90.0139628620153616]},"#44ffcc":{"lch":[90.3700157308713443,74.2777558665274853,159.169074542576084],"luv":[90.3700157308713443,-69.4225064855060481,26.4140229771485018],"rgb":[0.266666666666666663,1,0.8],"xyz":[0.490402001117466679,0.771052061647630294,0.694269506075769205],"hpluv":[159.169074542576084,348.900804743837909,90.3700157308713443],"hsluv":[159.169074542576084,99.9999999999905924,90.3700157308713443]},"#44ffdd":{"lch":[90.7643583149998,69.56728840997188,168.931262835156701],"luv":[90.7643583149998,-68.2731674827513899,13.3559806299794577],"rgb":[0.266666666666666663,1,0.866666666666666696],"xyz":[0.511920326668100167,0.7796593918678838,0.807599353975775203],"hpluv":[168.931262835156701,341.810509676969502,90.7643583149998],"hsluv":[168.931262835156701,99.9999999999902798,90.7643583149998]},"#44ffee":{"lch":[91.1973694573754869,67.0945142582603182,180.196137266844971],"luv":[91.1973694573754869,-67.094121132442,-0.229680249688981986],"rgb":[0.266666666666666663,1,0.933333333333333348],"xyz":[0.535732506934274877,0.789184263974353817,0.933010170044298426],"hpluv":[180.196137266844971,347.079488330816218,91.1973694573754869],"hsluv":[180.196137266844971,99.999999999989825,91.1973694573754869]},"#44ffff":{"lch":[91.6692750397398726,67.4158875874256,192.177050630061103],"luv":[91.6692750397398726,-65.8990611515587261,-14.2202545175369188],"rgb":[0.266666666666666663,1,1],"xyz":[0.561903555344106298,0.799652683338286541,1.07084435833608027],"hpluv":[192.177050630061103,369.886157390881351,91.6692750397398726],"hsluv":[192.177050630061103,99.9999999999897,91.6692750397398726]},"#33aa00":{"lch":[61.1785977172963129,90.1064171712311435,124.683940112874311],"luv":[61.1785977172963129,-51.2749716142469723,74.09482911373847],"rgb":[0.2,0.66666666666666663,0],"xyz":[0.157393059993970491,0.294521282349826385,0.0485535951906325494],"hpluv":[124.683940112874311,186.894073454811917,61.1785977172963129],"hsluv":[124.683940112874311,100.000000000002302,61.1785977172963129]},"#33aa11":{"lch":[61.2139288108167818,88.7849168066190089,125.171000261233829],"luv":[61.2139288108167818,-51.1417680861379793,72.5760360544852148],"rgb":[0.2,0.66666666666666663,0.0666666666666666657],"xyz":[0.158404725493607623,0.294925948549681238,0.0538817001553881791],"hpluv":[125.171000261233829,184.046797309440706,61.2139288108167818],"hsluv":[125.171000261233829,97.729263879491441,61.2139288108167818]},"#33aa22":{"lch":[61.2793378507832642,86.3832953662584657,126.10140218084841],"luv":[61.2793378507832642,-50.8984310656693708,69.7955831939783593],"rgb":[0.2,0.66666666666666663,0.133333333333333331],"xyz":[0.160280083632084625,0.295676091805072039,0.0637585863513673717],"hpluv":[126.10140218084841,178.877217305585333,61.2793378507832642],"hsluv":[126.10140218084841,93.5778090815338146,61.2793378507832642]},"#33aa33":{"lch":[61.3867923044640946,82.5646745763668548,127.715012949240119],"luv":[61.3867923044640946,-50.5076466968263134,65.3138814728533],"rgb":[0.2,0.66666666666666663,0.2],"xyz":[0.163367834364542386,0.296911192098055166,0.0800207402089785219],"hpluv":[127.715012949240119,170.670578118814461,61.3867923044640946],"hsluv":[127.715012949240119,86.9017438736093339,61.3867923044640946]},"#33aa44":{"lch":[61.5414071550205364,77.3485744588317488,130.237764523164799],"luv":[61.5414071550205364,-49.9641607354037305,59.0456146789935588],"rgb":[0.2,0.66666666666666663,0.266666666666666663],"xyz":[0.167825829608761246,0.298694390195742732,0.10349951516186516],"hpluv":[130.237764523164799,159.486606837004757,61.5414071550205364],"hsluv":[130.237764523164799,87.1702267355774723,61.5414071550205364]},"#33aa55":{"lch":[61.7472402279952775,70.9239260559490106,134.00596147156574],"luv":[61.7472402279952775,-49.2732069613111605,51.0132763399638876],"rgb":[0.2,0.66666666666666663,0.333333333333333315],"xyz":[0.173788243648123231,0.301079355811487592,0.134901562435839062],"hpluv":[134.00596147156574,145.752006815371971,61.7472402279952775],"hsluv":[134.00596147156574,87.512567621072165,61.7472402279952775]},"#33aa66":{"lch":[62.0075227235960824,63.6834089970413046,139.532932917076664],"luv":[62.0075227235960824,-48.4490087982300253,41.3312246123130436],"rgb":[0.2,0.66666666666666663,0.4],"xyz":[0.181373239421631416,0.304113354120890911,0.174849206842983024],"hpluv":[139.532932917076664,130.323054003441854,62.0075227235960824],"hsluv":[139.532932917076664,87.9225345315596769,62.0075227235960824]},"#33aa77":{"lch":[62.3247799262656201,56.2910074750267,147.571074265173024],"luv":[62.3247799262656201,-47.5128361285441727,30.1862207898839152],"rgb":[0.2,0.66666666666666663,0.466666666666666674],"xyz":[0.190687252441833321,0.307838959328971706,0.223903008749380933],"hpluv":[147.571074265173024,114.608702125460667,62.3247799262656201],"hsluv":[147.571074265173024,88.3905588997681519,62.3247799262656201]},"#33aa88":{"lch":[62.7009046876535052,49.786919253891476,159.033972270618222],"luv":[62.7009046876535052,-46.4906641824602147,17.8144736848221363],"rgb":[0.2,0.66666666666666663,0.533333333333333326],"xyz":[0.201827669543777177,0.312295126169749304,0.2825758721529531],"hpluv":[159.033972270618222,100.758286424528237,62.7009046876535052],"hsluv":[159.033972270618222,88.9048289963628804,62.7009046876535052]},"#33aa99":{"lch":[63.1372095297142835,45.6309193537352797,174.368717478757389],"luv":[63.1372095297142835,-45.4107033068770818,4.47759156711236095],"rgb":[0.2,0.66666666666666663,0.6],"xyz":[0.214884633652849877,0.317517911813378462,0.351342549794071035],"hpluv":[174.368717478757389,91.7092542399893631,63.1372095297142835],"hsluv":[174.368717478757389,89.4524406674979,63.1372095297142835]},"#33aaaa":{"lch":[63.6344696573538897,45.3208071547743288,192.17705063006116],"luv":[63.6344696573538897,-44.3011098571894,-9.5596666563997],"rgb":[0.2,0.66666666666666663,0.66666666666666663],"xyz":[0.229942326618102433,0.323540988999479584,0.430646399411069636],"hpluv":[192.17705063006116,90.3742140686623117,63.6344696573538897],"hsluv":[192.17705063006116,90.0204628815860559,63.6344696573538897]},"#33aabb":{"lch":[64.1929631055189844,49.4317459506583177,209.109442205543161],"luv":[64.1929631055189844,-43.188124160558381,-24.0475245965695663],"rgb":[0.2,0.66666666666666663,0.733333333333333282],"xyz":[0.247079918725439052,0.330396025842414343,0.520904384509711327],"hpluv":[209.109442205543161,97.7142389408223835,64.1929631055189844],"hsluv":[209.109442205543161,90.5968047396532228,64.1929631055189844]},"#33aacc":{"lch":[64.8125111239688181,57.2242456540803062,222.641155468482083],"luv":[64.8125111239688181,-42.0947673064025736,-38.7639633693247347],"rgb":[0.2,0.66666666666666663,0.8],"xyz":[0.266372294169160806,0.338112976019903144,0.622510895179981483],"hpluv":[222.641155468482083,112.036763534802631,64.8125111239688181],"hsluv":[222.641155468482083,91.1708232266795875,64.8125111239688181]},"#33aadd":{"lch":[65.4925201274692199,67.4454999587780151,232.519386199289158],"luv":[65.4925201274692199,-41.0401119544032653,-53.5220017886062465],"rgb":[0.2,0.66666666666666663,0.866666666666666696],"xyz":[0.28789061971979435,0.34672030624015665,0.73584074307998748],"hpluv":[232.519386199289158,130.67743538587149,65.4925201274692199],"hsluv":[232.519386199289158,91.7336648454097485,65.4925201274692199]},"#33aaee":{"lch":[66.23202547083838,79.0605595482254,239.573325902293959],"luv":[66.23202547083838,-40.039054494753934,-68.1721804788773],"rgb":[0.2,0.66666666666666663,0.933333333333333348],"xyz":[0.311702799985969059,0.356245178346626667,0.861251559148510704],"hpluv":[239.573325902293959,151.471586303299148,66.23202547083838],"hsluv":[239.573325902293959,92.278374899274425,66.23202547083838]},"#33aaff":{"lch":[67.0297366624436,91.3892467801412778,244.667711773110682],"luv":[67.0297366624436,-39.1024682991195291,-82.6014007142609898],"rgb":[0.2,0.66666666666666663,1],"xyz":[0.33787384839580048,0.366713597710559391,0.999085747440292549],"hpluv":[244.667711773110682,173.00828905748071,67.0297366624436],"hsluv":[244.667711773110682,99.9999999999982094,67.0297366624436]},"#33bb00":{"lch":[66.705199456007648,99.1588934495857757,125.274120260315158],"luv":[66.705199456007648,-57.2631629787864327,80.9531735993793262],"rgb":[0.2,0.733333333333333282,0],"xyz":[0.191347557902569271,0.362430278167024944,0.0598717611601651684],"hpluv":[125.274120260315158,188.630237299381349,66.705199456007648],"hsluv":[125.274120260315158,100.000000000002331,66.705199456007648]},"#33bb11":{"lch":[66.7359690986495764,97.9890755357957914,125.670572132139952],"luv":[66.7359690986495764,-57.1397853669544133,79.6046723036925385],"rgb":[0.2,0.733333333333333282,0.0666666666666666657],"xyz":[0.192359223402206403,0.362834944366879797,0.0651998661249208],"hpluv":[125.670572132139952,186.318944611331347,66.7359690986495764],"hsluv":[125.670572132139952,98.1524285745497451,66.7359690986495764]},"#33bb22":{"lch":[66.7929473545782,95.8553977164860243,126.423299967719473],"luv":[66.7929473545782,-56.9137739802675,77.1302768224563],"rgb":[0.2,0.733333333333333282,0.133333333333333331],"xyz":[0.194234581540683404,0.363585087622270597,0.0750767523209],"hpluv":[126.423299967719473,182.106434833594022,66.7929473545782],"hsluv":[126.423299967719473,94.7659081903439073,66.7929473545782]},"#33bb33":{"lch":[66.8865907457163,92.4406335233364302,127.715012949240233],"luv":[66.8865907457163,-56.5491099236273058,73.126389853740946],"rgb":[0.2,0.733333333333333282,0.2],"xyz":[0.197322332273141166,0.364820187915253724,0.0913389061785111478],"hpluv":[127.715012949240233,175.373180985258983,66.8865907457163],"hsluv":[127.715012949240233,89.2962069049265637,66.8865907457163]},"#33bb44":{"lch":[67.0214179407225572,87.725631811763563,129.70178400392939],"luv":[67.0214179407225572,-56.0384119529137763,67.4943172612971409],"rgb":[0.2,0.733333333333333282,0.266666666666666663],"xyz":[0.201780327517360025,0.36660338601294129,0.114817681131397786],"hpluv":[129.70178400392939,166.093340387543549,67.0214179407225572],"hsluv":[129.70178400392939,89.4761749642590871,67.0214179407225572]},"#33bb55":{"lch":[67.2010629421400552,81.8171313208689099,132.60288320444127],"luv":[67.2010629421400552,-55.3830806540106479,60.2225651632978796],"rgb":[0.2,0.733333333333333282,0.333333333333333315],"xyz":[0.207742741556722,0.368988351628686151,0.146219728405371674],"hpluv":[132.60288320444127,154.492511096020365,67.2010629421400552],"hsluv":[132.60288320444127,89.7076242739581,67.2010629421400552]},"#33bb66":{"lch":[67.4284803792762091,74.9653268862145,136.738510871982356],"luv":[67.4284803792762091,-54.5922668909562248,51.3759148907695788],"rgb":[0.2,0.733333333333333282,0.4],"xyz":[0.215327737330230196,0.372022349938089469,0.186167372812515663],"hpluv":[136.738510871982356,141.07705768332076,67.4284803792762091],"hsluv":[136.738510871982356,89.9877463438330096,67.4284803792762091]},"#33bb77":{"lch":[67.7060530794905446,67.5982244112705,142.572908280802977],"luv":[67.7060530794905446,-53.681598162732449,41.0829156980295878],"rgb":[0.2,0.733333333333333282,0.466666666666666674],"xyz":[0.224641750350432101,0.375747955146170265,0.235221174718913573],"hpluv":[142.572908280802977,126.69139486293237,67.7060530794905446],"hsluv":[142.572908280802977,90.3115397167098,67.7060530794905446]},"#33bb88":{"lch":[68.0356563096068641,60.380187227113133,150.730801091974854],"luv":[68.0356563096068641,-52.67158330257773,29.5206931148449],"rgb":[0.2,0.733333333333333282,0.533333333333333326],"xyz":[0.235782167452375957,0.380204121986947863,0.293894038122485712],"hpluv":[150.730801091974854,112.615249481580875,68.0356563096068641],"hsluv":[150.730801091974854,90.6723452470342437,68.0356563096068641]},"#33bb99":{"lch":[68.4187011865960244,54.2829584497859159,161.862695711717],"luv":[68.4187011865960244,-51.585814888834193,16.8980259295610082],"rgb":[0.2,0.733333333333333282,0.6],"xyz":[0.248839131561448657,0.385426907630577,0.362660715763603647],"hpluv":[161.862695711717,100.676477021468287,68.4187011865960244],"hsluv":[161.862695711717,91.0624469223214,68.4187011865960244]},"#33bbaa":{"lch":[68.8561680799326439,50.5661966451060749,176.101011456941364],"luv":[68.8561680799326439,-50.4491601398581224,3.43838397135738649],"rgb":[0.2,0.733333333333333282,0.66666666666666663],"xyz":[0.263896824526701212,0.391449984816678143,0.441964565380602248],"hpluv":[176.101011456941364,93.1873079321678404,68.8561680799326439],"hsluv":[176.101011456941364,91.473675634614068,68.8561680799326439]},"#33bbbb":{"lch":[69.3486356756669835,50.4205674478029,192.177050630061103],"luv":[69.3486356756669835,-49.286127891295429,-10.635375839212843],"rgb":[0.2,0.733333333333333282,0.733333333333333282],"xyz":[0.281034416634037831,0.398305021659612901,0.532222550479243939],"hpluv":[192.177050630061103,92.2590830970113132,69.3486356756669835],"hsluv":[192.177050630061103,91.8979539795913922,69.3486356756669835]},"#33bbcc":{"lch":[69.8963087653012423,54.2786660468549442,207.559867588447844],"luv":[69.8963087653012423,-48.1195504219082224,-25.1133919457216273],"rgb":[0.2,0.733333333333333282,0.8],"xyz":[0.300326792077759586,0.406021971837101703,0.633829061149514095],"hpluv":[207.559867588447844,98.540384199822455,69.8963087653012423],"hsluv":[207.559867588447844,92.3277362004695306,69.8963087653012423]},"#33bbdd":{"lch":[70.4990463576295241,61.569428837921933,220.28187220447964],"luv":[70.4990463576295241,-46.9696505240293618,-39.807618580850594],"rgb":[0.2,0.733333333333333282,0.866666666666666696],"xyz":[0.321845117628393129,0.414629302057355209,0.747158909049520092],"hpluv":[220.28187220447964,110.820781636478685,70.4990463576295241],"hsluv":[220.28187220447964,92.7563200135089119,70.4990463576295241]},"#33bbee":{"lch":[71.1563908243766576,71.2672074810155181,229.953995552192254],"luv":[71.1563908243766576,-45.8534981630350487,-54.557048750410388],"rgb":[0.2,0.733333333333333282,0.933333333333333348],"xyz":[0.345657297894567894,0.424154174163825226,0.872569725118043316],"hpluv":[229.953995552192254,127.091105244163856,71.1563908243766576],"hsluv":[229.953995552192254,93.1780289437208893,71.1563908243766576]},"#33bbff":{"lch":[71.8675982303626597,82.4526478797043296,237.101125866277243],"luv":[71.8675982303626597,-44.7848112977892,-69.2297610814592161],"rgb":[0.2,0.733333333333333282,1],"xyz":[0.37182834630439926,0.43462259352775795,1.01040391340982527],"hpluv":[237.101125866277243,145.583046200088774,71.8675982303626597],"hsluv":[237.101125866277243,99.9999999999977831,71.8675982303626597]},"#33cc00":{"lch":[72.1534232831706532,108.011475964841438,125.713046635977918],"luv":[72.1534232831706532,-63.0491190384013507,87.6999859098336287],"rgb":[0.2,0.8,0],"xyz":[0.229571301212186191,0.438877764786259839,0.0726130089300371234],"hpluv":[125.713046635977918,189.955680955455,72.1534232831706532],"hsluv":[125.713046635977918,100.000000000002402,72.1534232831706532]},"#33cc11":{"lch":[72.1805088449519,106.967132064598133,126.040754358939225],"luv":[72.1805088449519,-62.9352412435677095,86.493483868665578],"rgb":[0.2,0.8,0.0666666666666666657],"xyz":[0.230582966711823323,0.439282430986114691,0.0779411138947927601],"hpluv":[126.040754358939225,188.048441784684599,72.1805088449519],"hsluv":[126.040754358939225,98.4728126855506645,72.1805088449519]},"#33cc22":{"lch":[72.2306742907645543,105.057034533260762,126.660198785960176],"luv":[72.2306742907645543,-62.7261976516662614,84.2757653960309199],"rgb":[0.2,0.8,0.133333333333333331],"xyz":[0.232458324850300324,0.440032574241505492,0.0878180000907719527],"hpluv":[126.660198785960176,184.562215611711281,72.2306742907645543],"hsluv":[126.660198785960176,95.6680740449206866,72.2306742907645543]},"#33cc33":{"lch":[72.31314692234902,101.984984863208481,127.715012949240304],"luv":[72.31314692234902,-62.3877173898115416,80.6765756365369668],"rgb":[0.2,0.8,0.2],"xyz":[0.235546075582758085,0.441267674534488619,0.104080153948383103],"hpluv":[127.715012949240304,178.960959976488198,72.31314692234902],"hsluv":[127.715012949240304,91.1230258822071306,72.31314692234902]},"#33cc44":{"lch":[72.4319472107582669,97.7091257880760651,129.318260791805528],"luv":[72.4319472107582669,-61.9111863445413135,75.5915224590797123],"rgb":[0.2,0.8,0.266666666666666663],"xyz":[0.240004070826976945,0.443050872632176185,0.127558928901269741],"hpluv":[129.318260791805528,171.176559629977817,72.4319472107582669],"hsluv":[129.318260791805528,91.2471619418673612,72.4319472107582669]},"#33cc55":{"lch":[72.590341240881628,92.2844112105744756,131.621023493746776],"luv":[72.590341240881628,-61.2953573189119396,68.9876200751215407],"rgb":[0.2,0.8,0.333333333333333315],"xyz":[0.24596648486633893,0.445435838247921045,0.158960976175243629],"hpluv":[131.621023493746776,161.32023063104279,72.590341240881628],"hsluv":[131.621023493746776,91.4078622695478,72.590341240881628]},"#33cc66":{"lch":[72.7910248315973405,85.8719567505974197,134.835055825888389],"luv":[72.7910248315973405,-60.5455878238572112,60.8951948123993319],"rgb":[0.2,0.8,0.4],"xyz":[0.253551480639847115,0.448469836557324364,0.198908620582387619],"hpluv":[134.835055825888389,149.696915507144809,72.7910248315973405],"hsluv":[134.835055825888389,91.6039613293452533,72.7910248315973405]},"#33cc77":{"lch":[73.0362204241858421,78.757716060864837,139.259917231121676],"luv":[73.0362204241858421,-59.6729854923348,51.3995393126768079],"rgb":[0.2,0.8,0.466666666666666674],"xyz":[0.262865493660049,0.452195441765405159,0.247962422488785528],"hpluv":[139.259917231121676,136.834039856532058,73.0362204241858421],"hsluv":[139.259917231121676,91.8328510325735294,73.0362204241858421]},"#33cc88":{"lch":[73.3277345291399,71.3846311778678597,145.306874573990314],"luv":[73.3277345291399,-58.6933246064594201,40.6307668527313197],"rgb":[0.2,0.8,0.533333333333333326],"xyz":[0.274005910761992877,0.456651608606182757,0.306635285892357667],"hpluv":[145.306874573990314,123.530949311180805,73.3277345291399],"hsluv":[145.306874573990314,92.0907512285691894,73.3277345291399]},"#33cc99":{"lch":[73.6669954969027714,64.400374936046,153.483372150156],"luv":[73.6669954969027714,-57.6257667092137709,28.7520312861295437],"rgb":[0.2,0.8,0.6],"xyz":[0.287062874871065576,0.461874394249811915,0.375401963533475602],"hpluv":[153.483372150156,110.931469165383049,73.6669954969027714],"hsluv":[153.483372150156,92.3730273510429072,73.6669954969027714]},"#33ccaa":{"lch":[74.0550811623464114,58.6991946004706691,164.236139418897579],"luv":[74.0550811623464114,-56.4914910882685106,15.9470022690160835],"rgb":[0.2,0.8,0.66666666666666663],"xyz":[0.302120567836318132,0.467897471435913037,0.454705813150474203],"hpluv":[164.236139418897579,100.581152280716978,74.0550811623464114],"hsluv":[164.236139418897579,92.6745296641919794,74.0550811623464114]},"#33ccbb":{"lch":[74.4927414449451106,55.3647402049724846,177.507530206592946],"luv":[74.4927414449451106,-55.3123621552270137,2.40770653799565881],"rgb":[0.2,0.8,0.733333333333333282],"xyz":[0.319258159943654751,0.474752508278847796,0.544963798249115894],"hpluv":[177.507530206592946,94.310193436061823,74.4927414449451106],"hsluv":[177.507530206592946,92.9899230693886,74.4927414449451106]},"#33cccc":{"lch":[74.9804187561532416,55.3552144916165361,192.177050630061132],"luv":[74.9804187561532416,-54.1097476482840918,-11.6762571422475752],"rgb":[0.2,0.8,0.8],"xyz":[0.338550535387376506,0.482469458456336597,0.646570308919386],"hpluv":[192.177050630061132,93.6806731785530928,74.9804187561532416],"hsluv":[192.177050630061132,93.3139795405001422,74.9804187561532416]},"#33ccdd":{"lch":[75.5182678303382602,59.0031963362726231,206.282454691493683],"luv":[75.5182678303382602,-52.9035678654544128,-26.1264173778571198],"rgb":[0.2,0.8,0.866666666666666696],"xyz":[0.360068860938010049,0.491076788676590104,0.759900156819392],"hpluv":[206.282454691493683,99.1431801932779564,75.5182678303382602],"hsluv":[206.282454691493683,93.6418135046530296,75.5182678303382602]},"#33ccee":{"lch":[76.106175853756767,65.8577115847402439,218.26062431545347],"luv":[76.106175853756767,-51.7116147040808585,-40.7817003063324606],"rgb":[0.2,0.8,0.933333333333333348],"xyz":[0.383881041204184759,0.500601660783060121,0.885310972887915271],"hpluv":[218.26062431545347,110.229350215344013,76.106175853756767],"hsluv":[218.26062431545347,93.969050662624,76.106175853756767]},"#33ccff":{"lch":[76.7437832939395435,75.0714180144803,227.674056146546604],"luv":[76.7437832939395435,-50.5491406549608,-55.5022718611574248],"rgb":[0.2,0.8,1],"xyz":[0.41005208961401618,0.511070080146992844,1.02314516117969712],"hpluv":[227.674056146546604,129.845560156838474,76.7437832939395435],"hsluv":[227.674056146546604,99.9999999999969731,76.7437832939395435]},"#33dd00":{"lch":[77.5280782787270653,116.686614644285086,126.047543424376144],"luv":[77.5280782787270653,-68.6649809221669187,94.3445092843369508],"rgb":[0.2,0.866666666666666696,0],"xyz":[0.272205291759361367,0.524145745880611358,0.0868243391124284419],"hpluv":[126.047543424376144,210.356208283509261,77.5280782787270653],"hsluv":[126.047543424376144,100.000000000002416,77.5280782787270653]},"#33dd11":{"lch":[77.5521415069474926,115.747372453695789,126.322097671746874],"luv":[77.5521415069474926,-68.5599423432795,93.2576459912042],"rgb":[0.2,0.866666666666666696,0.0666666666666666657],"xyz":[0.273216957258998472,0.524550412080466266,0.0921524440771840786],"hpluv":[126.322097671746874,208.932074165120611,77.5521415069474926],"hsluv":[126.322097671746874,98.7203227917640902,77.5521415069474926]},"#33dd22":{"lch":[77.5967156031793337,114.025807364398673,126.839335004613],"luv":[77.5967156031793337,-68.36681588768,91.2571270119929778],"rgb":[0.2,0.866666666666666696,0.133333333333333331],"xyz":[0.275092315397475529,0.525300555335857067,0.102029330273163271],"hpluv":[126.839335004613,206.31706664059891,77.5967156031793337],"hsluv":[126.839335004613,96.3665979525037102,77.5967156031793337]},"#33dd33":{"lch":[77.670013861504259,111.246421345384377,127.715012949240332],"luv":[77.670013861504259,-68.0532561222895,88.0029578668175247],"rgb":[0.2,0.866666666666666696,0.2],"xyz":[0.278180066129933234,0.526535655628840193,0.118291484130774421],"hpluv":[127.715012949240332,202.082466523340599,77.670013861504259],"hsluv":[127.715012949240332,92.5426273046004439,77.670013861504259]},"#33dd44":{"lch":[77.7756375941771267,107.354265763003397,129.034195217585733],"luv":[77.7756375941771267,-67.6100090567609726,83.3895979895470134],"rgb":[0.2,0.866666666666666696,0.266666666666666663],"xyz":[0.28263806137415215,0.52831885372652776,0.14177025908366106],"hpluv":[129.034195217585733,196.125875311323085,77.7756375941771267],"hsluv":[129.034195217585733,92.6304308505642098,77.7756375941771267]},"#33dd55":{"lch":[77.9165348137244,102.370875286307594,130.905664069221132],"luv":[77.9165348137244,-67.0340391276217105,77.3707548439410431],"rgb":[0.2,0.866666666666666696,0.333333333333333315],"xyz":[0.288600475413514135,0.530703819342272509,0.173172306357634975],"hpluv":[130.905664069221132,188.454179514464698,77.9165348137244],"hsluv":[130.905664069221132,92.7446831943234287,77.9165348137244]},"#33dd66":{"lch":[78.095166356878579,96.3992072274516261,133.476315028685519],"luv":[78.095166356878579,-66.3279238591037767,69.9529389705828777],"rgb":[0.2,0.866666666666666696,0.4],"xyz":[0.29618547118702232,0.533737817651675828,0.213119950764778909],"hpluv":[133.476315028685519,179.196222734944627,78.095166356878579],"hsluv":[133.476315028685519,92.8850067954864187,78.095166356878579]},"#33dd77":{"lch":[78.3135937781308513,89.6343875602499196,136.948304354896891],"luv":[78.3135937781308513,-65.499258897229538,61.1896275296294192],"rgb":[0.2,0.866666666666666696,0.466666666666666674],"xyz":[0.305499484207224226,0.537463422859756679,0.262173752671176818],"hpluv":[136.948304354896891,168.630388284117117,78.3135937781308513],"hsluv":[136.948304354896891,93.050064801238122,78.3135937781308513]},"#33dd88":{"lch":[78.5735314106716487,82.3820261839553609,141.59738099104726],"luv":[78.5735314106716487,-64.5599157920348432,51.1743638074698],"rgb":[0.2,0.866666666666666696,0.533333333333333326],"xyz":[0.316639901309168,0.541919589700534221,0.320846616074749],"hpluv":[141.59738099104726,157.233383580683977,78.5735314106716487],"hsluv":[141.59738099104726,93.2377028740416449,78.5735314106716487]},"#33dd99":{"lch":[78.8763801167060592,75.0869406053615762,147.781507566587862],"luv":[78.8763801167060592,-63.5251386535812799,40.0325543591259105],"rgb":[0.2,0.866666666666666696,0.6],"xyz":[0.329696865418240725,0.547142375344163434,0.389613293715866893],"hpluv":[147.781507566587862,145.760006886720333,78.8763801167060592],"hsluv":[147.781507566587862,93.4451205095912343,78.8763801167060592]},"#33ddaa":{"lch":[79.2232512041385633,68.3697583649377094,155.904677195463563],"luv":[79.2232512041385633,-62.4125308872686801,27.9123601138582131],"rgb":[0.2,0.866666666666666696,0.66666666666666663],"xyz":[0.344754558383493281,0.553165452530264501,0.468917143332865494],"hpluv":[155.904677195463563,135.355769729163313,79.2232512041385633],"hsluv":[155.904677195463563,93.6690625743759,79.2232512041385633]},"#33ddbb":{"lch":[79.6149850527770866,63.045401416642612,166.259028854183981],"luv":[79.6149850527770866,-61.2410113290283604,14.9753521221847095],"rgb":[0.2,0.866666666666666696,0.733333333333333282],"xyz":[0.361892150490829956,0.560020489373199259,0.559175128431507296],"hpluv":[166.259028854183981,127.658944712944631,79.6149850527770866],"hsluv":[166.259028854183981,93.9060163408359614,79.6149850527770866]},"#33ddcc":{"lch":[80.0521670478692613,60.0458591823856054,178.675787060338223],"luv":[80.0521670478692613,-60.0298228841068138,1.3876488942262355],"rgb":[0.2,0.866666666666666696,0.8],"xyz":[0.381184525934551655,0.567737439550688117,0.660781639101777452],"hpluv":[178.675787060338223,124.734340702728062,80.0521670478692613],"hsluv":[178.675787060338223,94.1523985056595905,80.0521670478692613]},"#33dddd":{"lch":[80.5351423549551555,60.1510343961145963,192.177050630061245],"luv":[80.5351423549551555,-58.7976638126828,-12.6878551809710149],"rgb":[0.2,0.866666666666666696,0.866666666666666696],"xyz":[0.402702851485185254,0.576344769770941623,0.774111487001783449],"hpluv":[192.177050630061245,128.603021497070955,80.5351423549551555],"hsluv":[192.177050630061245,94.4047190696773271,80.5351423549551555]},"#33ddee":{"lch":[81.0640304387754,63.6213092914002303,205.209077734070348],"luv":[81.0640304387754,-57.5619892131040913,-27.0977562499646396],"rgb":[0.2,0.866666666666666696,0.933333333333333348],"xyz":[0.426515031751359963,0.58586964187741164,0.899522303070306672],"hpluv":[205.209077734070348,140.476637056352985,81.0640304387754],"hsluv":[205.209077734070348,94.6597131799347835,81.0640304387754]},"#33ddff":{"lch":[81.6387398294900208,70.0938175080633528,216.50946924270437],"luv":[81.6387398294900208,-56.3385046754299452,-41.7027114680837769],"rgb":[0.2,0.866666666666666696,1],"xyz":[0.452686080161191384,0.596338061241344364,1.03735649136208852],"hpluv":[216.50946924270437,160.421433033358312,81.6387398294900208],"hsluv":[216.50946924270437,99.999999999996,81.6387398294900208]},"#33ee00":{"lch":[82.833762600699373,125.203353646442437,126.3077634478595],"luv":[82.833762600699373,-74.1357070958390239,100.894879442497455],"rgb":[0.2,0.933333333333333348,0],"xyz":[0.319384068099876184,0.618503298561642323,0.102550597892599626],"hpluv":[126.3077634478595,309.713105305240845,82.833762600699373],"hsluv":[126.3077634478595,100.000000000002302,82.833762600699373]},"#33ee11":{"lch":[82.85531245284119,124.353122892884315,126.540515263097504],"luv":[82.85531245284119,-74.0387382831010541,99.9097813362598544],"rgb":[0.2,0.933333333333333348,0.0666666666666666657],"xyz":[0.320395733599513288,0.618907964761497231,0.107878702857355263],"hpluv":[126.540515263097504,308.054239915702169,82.85531245284119],"hsluv":[126.540515263097504,98.9149262576223833,82.85531245284119]},"#33ee22":{"lch":[82.8952353009988,122.792060636983948,126.977870705292972],"luv":[82.8952353009988,-73.860225327277135,98.0946342573363808],"rgb":[0.2,0.933333333333333348,0.133333333333333331],"xyz":[0.322271091737990345,0.619658108016888,0.117755589053334456],"hpluv":[126.977870705292972,305.002845011722627,82.8952353009988],"hsluv":[126.977870705292972,96.9167682151396264,82.8952353009988]},"#33ee33":{"lch":[82.9608975691188846,120.264250910780831,127.715012949240375],"luv":[82.9608975691188846,-73.5697721383487391,95.1366316128687259],"rgb":[0.2,0.933333333333333348,0.2],"xyz":[0.325358842470448051,0.620893208309871159,0.134017742910945592],"hpluv":[127.715012949240375,300.046240285686,82.9608975691188846],"hsluv":[127.715012949240375,93.6639064416312834,82.9608975691188846]},"#33ee44":{"lch":[83.0555452014946241,116.707569363843,128.817932535493583],"luv":[83.0555452014946241,-73.1578713419028,90.9317469728687513],"rgb":[0.2,0.933333333333333348,0.266666666666666663],"xyz":[0.329816837714666966,0.622676406407558725,0.157496517863832231],"hpluv":[128.817932535493583,293.039720989359807,83.0555452014946241],"hsluv":[128.817932535493583,93.7274034182796356,83.0555452014946241]},"#33ee55":{"lch":[83.1818510898783643,112.121671621867506,130.367812557605703],"luv":[83.1818510898783643,-72.6203079673681202,85.4257579305358092],"rgb":[0.2,0.933333333333333348,0.333333333333333315],"xyz":[0.335779251754028951,0.625061372023303474,0.188898565137806146],"hpluv":[130.367812557605703,283.950089878719211,83.1818510898783643],"hsluv":[130.367812557605703,93.8103653792530139,83.1818510898783643]},"#33ee66":{"lch":[83.3420657578551,106.5703857928128,132.470647679843353],"luv":[83.3420657578551,-71.9576476395269,78.6088040502757224],"rgb":[0.2,0.933333333333333348,0.4],"xyz":[0.343364247527537136,0.628095370332706793,0.228846209544950108],"hpluv":[132.470647679843353,272.865433725808,83.3420657578551],"hsluv":[132.470647679843353,93.912785079345241,83.3420657578551]},"#33ee77":{"lch":[83.5380975272703523,100.188150337510052,135.268396470867572],"luv":[83.5380975272703523,-71.1748024762597851,70.5110839550557387],"rgb":[0.2,0.933333333333333348,0.466666666666666674],"xyz":[0.352678260547739042,0.631820975540787644,0.277900011451348],"hpluv":[135.268396470867572,260.019238129472967,83.5380975272703523],"hsluv":[135.268396470867572,94.0340074276028304,83.5380975272703523]},"#33ee88":{"lch":[83.7715600973053682,93.1909370684561651,138.951686086792108],"luv":[83.7715600973053682,-70.2805135444840801,61.1980405537673],"rgb":[0.2,0.933333333333333348,0.533333333333333326],"xyz":[0.363818677649682842,0.636277142381565186,0.336572874854920157],"hpluv":[138.951686086792108,245.83342468256393,83.7715600973053682],"hsluv":[138.951686086792108,94.1728069818675237,83.7715600973053682]},"#33ee99":{"lch":[84.0438031984902807,85.8935006436990278,143.770719305914184],"luv":[84.0438031984902807,-69.2867121669879822,50.7646035138469784],"rgb":[0.2,0.933333333333333348,0.6],"xyz":[0.376875641758755542,0.641499928025194399,0.405339552496038091],"hpluv":[143.770719305914184,230.989810482694878,84.0438031984902807],"hsluv":[143.770719305914184,94.3274826341768886,84.0438031984902807]},"#33eeaa":{"lch":[84.3559338989094698,78.7339796376561907,150.032255922422308],"luv":[84.3559338989094698,-68.2077782157370223,39.328596980513943],"rgb":[0.2,0.933333333333333348,0.66666666666666663],"xyz":[0.391933334724008098,0.647523005211295466,0.484643402113036692],"hpluv":[150.032255922422308,216.540119706931335,84.3559338989094698],"hsluv":[150.032255922422308,94.495967075681591,84.3559338989094698]},"#33eebb":{"lch":[84.7088326356722,72.2999891840671,158.051587623557367],"luv":[84.7088326356722,-67.0597412553262,27.0236847743774931],"rgb":[0.2,0.933333333333333348,0.733333333333333282],"xyz":[0.409070926831344772,0.654378042054230225,0.574901387211678383],"hpluv":[158.051587623557367,204.04938686040532,84.7088326356722],"hsluv":[158.051587623557367,94.6759444498571838,84.7088326356722]},"#33eecc":{"lch":[85.1031663228954,67.3294619946068451,168.005441410177127],"luv":[85.1031663228954,-65.8594808644086,13.992327638881461],"rgb":[0.2,0.933333333333333348,0.8],"xyz":[0.428363302275066471,0.662094992231719082,0.676507897881948539],"hpluv":[168.005441410177127,195.708498626929867,85.1031663228954],"hsluv":[168.005441410177127,94.8649680125767389,85.1031663228954]},"#33eedd":{"lch":[85.539399954776755,64.6250931348259314,179.663789762776076],"luv":[85.539399954776755,-64.6239805156479861,0.37921629457989664],"rgb":[0.2,0.933333333333333348,0.866666666666666696],"xyz":[0.44988162782570007,0.670702322451972588,0.789837745781954537],"hpluv":[179.663789762776076,194.233009793031641,85.539399954776755],"hsluv":[179.663789762776076,95.0605698730458926,85.539399954776755]},"#33eeee":{"lch":[86.0178075751720286,64.8282855412949601,192.177050630061217],"luv":[86.0178075751720286,-63.3696789602654533,-13.6744431219908602],"rgb":[0.2,0.933333333333333348,0.933333333333333348],"xyz":[0.47369380809187478,0.680227194558442605,0.91524856185047776],"hpluv":[192.177050630061217,202.327515221469156,86.0178075751720286],"hsluv":[192.177050630061217,95.2603564020327127,86.0178075751720286]},"#33eeff":{"lch":[86.538483142230433,68.1460620684978124,204.293044736593487],"luv":[86.538483142230433,-62.1119480142598803,-28.035543321245509],"rgb":[0.2,0.933333333333333348,1],"xyz":[0.499864856501706201,0.690695613922375329,1.05308275014225972],"hpluv":[204.293044736593487,221.878852364873978,86.538483142230433],"hsluv":[204.293044736593487,99.999999999993932,86.538483142230433]},"#33ff00":{"lch":[88.074762753062231,133.577745567808222,126.513803819973305],"luv":[88.074762753062231,-79.4809541468946,107.358241597361044],"rgb":[0.2,1,0],"xyz":[0.37123644052955,0.72220804342099143,0.119834722035823737],"hpluv":[126.513803819973305,497.272976699974663,88.074762753062231],"hsluv":[126.513803819973305,100.00000000000226,88.074762753062231]},"#33ff11":{"lch":[88.0941974462199,132.80363803677966,126.71317891025123],"luv":[88.0941974462199,-79.3912833442141448,106.460464045403725],"rgb":[0.2,1,0.0666666666666666657],"xyz":[0.37224810602918712,0.722612709620846339,0.125162827000579374],"hpluv":[126.71317891025123,495.277769978645495,88.0941974462199],"hsluv":[126.71317891025123,99.9999999999917861,88.0941974462199]},"#33ff22":{"lch":[88.1302050034733355,131.38040615815558,127.087058789859782],"luv":[88.1302050034733355,-79.2260405323659285,104.804797713872986],"rgb":[0.2,1,0.133333333333333331],"xyz":[0.374123464167664177,0.723362852876237139,0.135039713196558553],"hpluv":[127.087058789859782,491.602558840386564,88.1302050034733355],"hsluv":[127.087058789859782,99.9999999999915161,88.1302050034733355]},"#33ff33":{"lch":[88.1894367416410745,129.070276381710187,127.715012949240347],"luv":[88.1894367416410745,-78.9567203165017162,102.10275491931047],"rgb":[0.2,1,0.2],"xyz":[0.377211214900121883,0.724597953169220266,0.151301867054169703],"hpluv":[127.715012949240347,485.618062737129037,88.1894367416410745],"hsluv":[127.715012949240347,99.9999999999917577,88.1894367416410745]},"#33ff44":{"lch":[88.2748349985884,125.807640063387211,128.649544439126117],"luv":[88.2748349985884,-78.5738101086462137,98.2533391968394909],"rgb":[0.2,1,0.266666666666666663],"xyz":[0.381669210144340798,0.726381151266907832,0.174780642007056342],"hpluv":[128.649544439126117,477.126267833886629,88.2748349985884],"hsluv":[128.649544439126117,99.9999999999917151,88.2748349985884]},"#33ff55":{"lch":[88.3888340150102181,121.57774004888698,129.95306271607248],"luv":[88.3888340150102181,-78.0723424240601,93.1979410921456122],"rgb":[0.2,1,0.333333333333333315],"xyz":[0.387631624183702783,0.728766116882652581,0.206182689281030257],"hpluv":[129.95306271607248,466.04908765344419,88.3888340150102181],"hsluv":[129.95306271607248,99.999999999991644,88.3888340150102181]},"#33ff66":{"lch":[88.5334972733264,116.417510431790106,131.704600668064415],"luv":[88.5334972733264,-77.4514410423726929,86.9155395518881],"rgb":[0.2,1,0.4],"xyz":[0.395216619957210968,0.7318001151920559,0.246130333688174219],"hpluv":[131.704600668064415,452.43688525451455,88.5334972733264],"hsluv":[131.704600668064415,99.9999999999913882,88.5334972733264]},"#33ff77":{"lch":[88.7105909437740081,110.419515958012653,134.007319384137503],"luv":[88.7105909437740081,-76.7139872603015505,79.419353202025647],"rgb":[0.2,1,0.466666666666666674],"xyz":[0.404530632977412874,0.735525720400136751,0.295184135594572128],"hpluv":[134.007319384137503,436.493157669178117,88.7105909437740081],"hsluv":[134.007319384137503,99.9999999999915,88.7105909437740081]},"#33ff88":{"lch":[88.9216276204312379,103.738746998712813,136.99719245927011],"luv":[88.9216276204312379,-75.8662497359534882,70.7533729221786558],"rgb":[0.2,1,0.533333333333333326],"xyz":[0.415671050079356674,0.739981887240914293,0.353856998998144268],"hpluv":[136.99719245927011,418.619650658891032,88.9216276204312379],"hsluv":[136.99719245927011,99.9999999999912603,88.9216276204312379]},"#33ff99":{"lch":[89.1678944508512359,96.6032590942606788,140.85189111032139],"luv":[89.1678944508512359,-74.9174292298428242,60.9882649796200695],"rgb":[0.2,1,0.6],"xyz":[0.428728014188429429,0.745204672884543506,0.422623676639262202],"hpluv":[140.85189111032139,399.492483487252343,89.1678944508512359],"hsluv":[140.85189111032139,99.9999999999913456,89.1678944508512359]},"#33ffaa":{"lch":[89.4504724790268426,89.3298939826383105,145.795546705853383],"luv":[89.4504724790268426,-73.8791171714821,50.2165909327964926],"rgb":[0.2,1,0.66666666666666663],"xyz":[0.44378570715368193,0.751227750070644573,0.501927526256260803],"hpluv":[145.795546705853383,380.184928602968114,89.4504724790268426],"hsluv":[145.795546705853383,99.9999999999912,89.4504724790268426]},"#33ffbb":{"lch":[89.7702508712150262,82.3444719603705,152.087330110215447],"luv":[89.7702508712150262,-72.7646918614874494,38.5475249625060314],"rgb":[0.2,1,0.733333333333333282],"xyz":[0.460923299261018604,0.758082786913579332,0.592185511354902605],"hpluv":[152.087330110215447,362.351543222333419,89.7702508712150262],"hsluv":[152.087330110215447,99.9999999999909761,89.7702508712150262]},"#33ffcc":{"lch":[90.127938152783571,76.1985663634222,159.968053619612647],"luv":[90.127938152783571,-71.5886883295869723,26.1013643147272063],"rgb":[0.2,1,0.8],"xyz":[0.480215674704740358,0.765799737091068189,0.693792022025172761],"hpluv":[159.968053619612647,348.464440630653087,90.127938152783571],"hsluv":[159.968053619612647,99.999999999990834,90.127938152783571]},"#33ffdd":{"lch":[90.5240717550146314,71.5577226375514357,169.529475161807255],"luv":[90.5240717550146314,-70.3661811113599924,13.0041618290463337],"rgb":[0.2,1,0.866666666666666696],"xyz":[0.501734000255373846,0.774407067311321695,0.807121869925178759],"hpluv":[169.529475161807255,342.013155745428833,90.5240717550146314],"hsluv":[169.529475161807255,99.9999999999904077,90.5240717550146314]},"#33ffee":{"lch":[90.9590266887802,69.1149718308150511,180.51167449693034],"luv":[90.9590266887802,-69.1122158161064561,-0.61721646306864264],"rgb":[0.2,1,0.933333333333333348],"xyz":[0.525546180521548667,0.783931939417791712,0.932532685993702],"hpluv":[180.51167449693034,347.442342228089899,90.9590266887802],"hsluv":[180.51167449693034,99.9999999999901519,90.9590266887802]},"#33ffff":{"lch":[91.4330238629877243,69.4028497051403122,192.177050630061132],"luv":[91.4330238629877243,-67.8413175363212702,-14.6393709608822622],"rgb":[0.2,1,1],"xyz":[0.55171722893138,0.794400358781724436,1.07036687428548372],"hpluv":[192.177050630061132,369.590917988860895,91.4330238629877243],"hsluv":[192.177050630061132,99.9999999999897256,91.4330238629877243]},"#22aa00":{"lch":[60.8595101229647923,91.9296409673314656,126.268252023172565],"luv":[60.8595101229647923,-54.3824975763784053,74.1188427172042594],"rgb":[0.133333333333333331,0.66666666666666663,0],"xyz":[0.150337683054585614,0.290883353615456,0.0482228743965988915],"hpluv":[126.268252023172565,191.675426474830772,60.8595101229647923],"hsluv":[126.268252023172565,100.000000000002288,60.8595101229647923]},"#22aa11":{"lch":[60.8951349805759605,90.6090655032342482,126.765726538166419],"luv":[60.8951349805759605,-54.2335583573106,72.5859759132132893],"rgb":[0.133333333333333331,0.66666666666666663,0.0666666666666666657],"xyz":[0.151349348554222746,0.291288019815310828,0.0535509793613545212],"hpluv":[126.765726538166419,188.811473003651798,60.8951349805759605],"hsluv":[126.765726538166419,97.6988909499644365,60.8951349805759605]},"#22aa22":{"lch":[60.9610867967894592,88.21068058626,127.715012949240347],"luv":[60.9610867967894592,-53.9615024560723953,69.7802294505720226],"rgb":[0.133333333333333331,0.66666666666666663,0.133333333333333331],"xyz":[0.153224706692699747,0.292038163070701628,0.0634278655573337208],"hpluv":[127.715012949240347,183.614848439340193,60.9610867967894592],"hsluv":[127.715012949240347,93.4926845994439475,60.9610867967894592]},"#22aa33":{"lch":[61.0694299105106495,84.4016098893730629,129.358188857231823],"luv":[61.0694299105106495,-53.5246691509727626,65.259034196016259],"rgb":[0.133333333333333331,0.66666666666666663,0.2],"xyz":[0.156312457425157481,0.293273263363684755,0.0796900194149448571],"hpluv":[129.358188857231823,175.374397166590711,61.0694299105106495],"hsluv":[129.358188857231823,93.5882360519160699,61.0694299105106495]},"#22aa44":{"lch":[61.2253168994486145,79.2082340196825214,131.918899994809664],"luv":[61.2253168994486145,-52.917281977470445,58.938150671985575],"rgb":[0.133333333333333331,0.66666666666666663,0.266666666666666663],"xyz":[0.160770452669376368,0.295056461461372321,0.103168794367831496],"hpluv":[131.918899994809664,164.164260791814144,61.2253168994486145],"hsluv":[131.918899994809664,93.7213426507132397,61.2253168994486145]},"#22aa55":{"lch":[61.4328316402448422,72.8294169380228169,135.724592815827151],"luv":[61.4328316402448422,-52.1453123372646488,50.8428005993127883],"rgb":[0.133333333333333331,0.66666666666666663,0.333333333333333315],"xyz":[0.166732866708738381,0.297441427077117182,0.134570841641805411],"hpluv":[135.724592815827151,150.433869175471955,61.4328316402448422],"hsluv":[135.724592815827151,93.8909627694616802,61.4328316402448422]},"#22aa66":{"lch":[61.695221435526193,65.6694032551541511,141.26425661379642],"luv":[61.695221435526193,-51.2247747289881588,41.0912761769754056],"rgb":[0.133333333333333331,0.66666666666666663,0.4],"xyz":[0.174317862482246538,0.3004754253865205,0.174518486048949373],"hpluv":[141.26425661379642,135.067502346464636,61.695221435526193],"hsluv":[141.26425661379642,94.0939374356695737,61.695221435526193]},"#22aa77":{"lch":[62.015018576984005,58.3994247120946,149.232117680428786],"luv":[62.015018576984005,-50.1795183581889,29.8748848373309741],"rgb":[0.133333333333333331,0.66666666666666663,0.466666666666666674],"xyz":[0.183631875502448472,0.304201030594601296,0.223572287955347282],"hpluv":[149.232117680428786,119.495353216490457,62.015018576984005],"hsluv":[149.232117680428786,94.3254538020573534,62.015018576984005]},"#22aa88":{"lch":[62.3941144695078265,52.0455462506657582,160.428514439052776],"luv":[62.3941144695078265,-49.0385773736463904,17.4343572780611709],"rgb":[0.133333333333333331,0.66666666666666663,0.533333333333333326],"xyz":[0.194772292604392272,0.308657197435378894,0.282245151358919477],"hpluv":[160.428514439052776,105.847175197261592,62.3941144695078265],"hsluv":[160.428514439052776,94.5795977554836753,62.3941144695078265]},"#22aa99":{"lch":[62.8338123759312168,48.0032947436357915,175.177921691935865],"luv":[62.8338123759312168,-47.8333890460383486,4.03524455451089725],"rgb":[0.133333333333333331,0.66666666666666663,0.6],"xyz":[0.207829256713465,0.313879983079008051,0.351011829000037356],"hpluv":[175.177921691935865,96.9431131493944918,62.8338123759312168],"hsluv":[175.177921691935865,94.8499327714938119,62.8338123759312168]},"#22aaaa":{"lch":[63.334871160235295,47.6677335272966047,192.177050630061132],"luv":[63.334871160235295,-46.595231466735612,-10.0547115418935782],"rgb":[0.133333333333333331,0.66666666666666663,0.66666666666666663],"xyz":[0.222886949678717528,0.319903060265109174,0.430315678617035957],"hpluv":[192.177050630061132,95.5038628742744748,63.334871160235295],"hsluv":[192.177050630061132,95.1300327368807075,63.334871160235295]},"#22aabb":{"lch":[63.8975462810157211,51.5875561200845425,208.460106210027732],"luv":[63.8975462810157211,-45.3531553267970224,-24.5838818811491713],"rgb":[0.133333333333333331,0.66666666666666663,0.733333333333333282],"xyz":[0.240024541786054202,0.326758097108043932,0.520573663715677704],"hpluv":[208.460106210027732,102.447201536891086,63.8975462810157211],"hsluv":[208.460106210027732,95.4139121453229393,63.8975462810157211]},"#22aacc":{"lch":[64.5216311304052681,59.1142282054053112,221.706391964203618],"luv":[64.5216311304052681,-44.1325525375176184,-39.3295027027292079],"rgb":[0.133333333333333331,0.66666666666666663,0.8],"xyz":[0.259316917229775901,0.334475047285532734,0.62218017438594786],"hpluv":[221.706391964203618,116.258847224370101,64.5216311304052681],"hsluv":[221.706391964203618,95.6963242429470853,64.5216311304052681]},"#22aadd":{"lch":[65.2065000175346796,69.0826091468118619,231.553565124642319],"luv":[65.2065000175346796,-42.9543721979751538,-54.1047945713593279],"rgb":[0.133333333333333331,0.66666666666666663,0.866666666666666696],"xyz":[0.2808352427804095,0.34308237750578624,0.735510022285953857],"hpluv":[231.553565124642319,134.436491082611866,65.2065000175346796],"hsluv":[231.553565124642319,95.9729250289437,65.2065000175346796]},"#22aaee":{"lch":[65.951153016283925,80.4876559434330687,238.683318882444183],"luv":[65.951153016283925,-41.8348964739996418,-68.7612114224159825],"rgb":[0.133333333333333331,0.66666666666666663,0.933333333333333348],"xyz":[0.304647423046584209,0.352607249612256257,0.86092083835447708],"hpluv":[238.683318882444183,154.862481256054423,65.951153016283925],"hsluv":[238.683318882444183,96.2403212652285305,65.951153016283925]},"#22aaff":{"lch":[66.7542622474436911,92.6475815050926741,243.881654723446388],"luv":[66.7542622474436911,-40.785937465112724,-83.187028218555227],"rgb":[0.133333333333333331,0.66666666666666663,1],"xyz":[0.33081847145641563,0.363075668976189,0.998755026646258925],"hpluv":[243.881654723446388,176.114215620682756,66.7542622474436911],"hsluv":[243.881654723446388,99.9999999999982521,66.7542622474436911]},"#22bb00":{"lch":[66.4275479271698117,100.802558180890344,126.547308547849156],"luv":[66.4275479271698117,-60.0265444602621798,80.9812922592122533],"rgb":[0.133333333333333331,0.733333333333333282,0],"xyz":[0.184292180963184393,0.358792349432654534,0.0595410403661315105],"hpluv":[126.547308547849156,192.558484368086766,66.4275479271698117],"hsluv":[126.547308547849156,100.000000000002402,66.4275479271698117]},"#22bb11":{"lch":[66.4585250929908682,99.6331665050874449,126.950333401467461],"luv":[66.4585250929908682,-59.891738470658936,79.6225315522727612],"rgb":[0.133333333333333331,0.733333333333333282,0.0666666666666666657],"xyz":[0.185303846462821525,0.359197015632509387,0.0648691453308871402],"hpluv":[126.950333401467461,190.235936561387632,66.4585250929908682],"hsluv":[126.950333401467461,98.1323711753334464,66.4585250929908682]},"#22bb22":{"lch":[66.5158870179191553,97.5011623585143496,127.715012949240375],"luv":[66.5158870179191553,-59.6448091899021904,77.1295883430057785],"rgb":[0.133333333333333331,0.733333333333333282,0.133333333333333331],"xyz":[0.187179204601298527,0.359947158887900187,0.0747460315268663328],"hpluv":[127.715012949240375,186.004620566556611,66.5158870179191553],"hsluv":[127.715012949240375,94.7095045552014341,66.5158870179191553]},"#22bb33":{"lch":[66.6101592341861561,94.091611241079562,129.025604662043349],"luv":[66.6101592341861561,-59.2464412491434089,73.0964465979998721],"rgb":[0.133333333333333331,0.733333333333333282,0.2],"xyz":[0.19026695533375626,0.361182259180883314,0.091008185384477483],"hpluv":[129.025604662043349,179.246118589082698,66.6101592341861561],"hsluv":[129.025604662043349,94.7728361420699628,66.6101592341861561]},"#22bb44":{"lch":[66.7458880420052907,89.3893698914418735,131.03732282887168],"luv":[66.7458880420052907,-58.6886365964374903,67.424797990356],"rgb":[0.133333333333333331,0.733333333333333282,0.266666666666666663],"xyz":[0.194724950577975148,0.36296545727857088,0.114486960337364121],"hpluv":[131.03732282887168,169.941985039444177,66.7458880420052907],"hsluv":[131.03732282887168,94.8616428317247511,66.7458880420052907]},"#22bb55":{"lch":[66.9267274999506,83.5071173210959472,133.96576260666626],"luv":[66.9267274999506,-57.9730125462468777,60.1046459068846488],"rgb":[0.133333333333333331,0.733333333333333282,0.333333333333333315],"xyz":[0.200687364617337161,0.365350422894315741,0.145889007611338023],"hpluv":[133.96576260666626,158.330006142604873,66.9267274999506],"hsluv":[133.96576260666626,94.9758066387206128,66.9267274999506]},"#22bb66":{"lch":[67.1556458878222315,76.7025221245859541,138.121353671725132],"luv":[67.1556458878222315,-57.1096598103208919,51.2031606116460054],"rgb":[0.133333333333333331,0.733333333333333282,0.4],"xyz":[0.208272360390845318,0.368384421203719059,0.185836652018481985],"hpluv":[138.121353671725132,144.932719296840418,67.1556458878222315],"hsluv":[138.121353671725132,95.1139083236691363,67.1556458878222315]},"#22bb77":{"lch":[67.4350338747947831,69.4107315991336407,143.945643371462126],"luv":[67.4350338747947831,-56.1157304677756557,40.8518598743670935],"rgb":[0.133333333333333331,0.733333333333333282,0.466666666666666674],"xyz":[0.217586373411047251,0.372110026411799855,0.234890453924879894],"hpluv":[143.945643371462126,130.611184627207962,67.4350338747947831],"hsluv":[143.945643371462126,95.2734443978328471,67.4350338747947831]},"#22bb88":{"lch":[67.7667691572368653,62.2973404800357571,152.016434409622292],"luv":[67.7667691572368653,-55.0136735570032656,29.2310511724943218],"rgb":[0.133333333333333331,0.733333333333333282,0.533333333333333326],"xyz":[0.228726790512991052,0.376566193252577452,0.293563317328452089],"hpluv":[152.016434409622292,116.65196328010299,67.7667691572368653],"hsluv":[152.016434409622292,95.4510958201536823,67.7667691572368653]},"#22bb99":{"lch":[68.1522602188863402,56.3167420179958214,162.907285030510934],"luv":[68.1522602188863402,-53.8292536917802948,16.552549003324323],"rgb":[0.133333333333333331,0.733333333333333282,0.6],"xyz":[0.241783754622063779,0.38178897889620661,0.362329994969569968],"hpluv":[162.907285030510934,104.856796539193,68.1522602188863402],"hsluv":[162.907285030510934,95.6430286983925555,68.1522602188863402]},"#22bbaa":{"lch":[68.5924801056558238,52.6774965449754617,176.68900923381463],"luv":[68.5924801056558238,-52.5895649511659542,3.04241688349887474],"rgb":[0.133333333333333331,0.733333333333333282,0.66666666666666663],"xyz":[0.256841447587316307,0.387812056082307732,0.441633844586568569],"hpluv":[176.68900923381463,97.4513697523019,68.5924801056558238],"hsluv":[176.68900923381463,95.8451953079369616,68.5924801056558238]},"#22bbbb":{"lch":[69.087995915136645,52.5025293878432677,192.177050630061075],"luv":[69.087995915136645,-51.3212466461144174,-11.0745309069971647],"rgb":[0.133333333333333331,0.733333333333333282,0.733333333333333282],"xyz":[0.273979039694653,0.394667092925242491,0.531891829685210316],"hpluv":[192.177050630061075,96.4310638968393903,69.087995915136645],"hsluv":[192.177050630061075,96.05360442262905,69.087995915136645]},"#22bbcc":{"lch":[69.6389970716796824,56.2104265974936,207.07804051519031],"luv":[69.6389970716796824,-50.0490518690675117,-25.5871933841835393],"rgb":[0.133333333333333331,0.733333333333333282,0.8],"xyz":[0.293271415138374736,0.402384043102731292,0.633498340355480472],"hpluv":[207.07804051519031,102.424464009042,69.6389970716796824],"hsluv":[207.07804051519031,96.2645382772070519,69.6389970716796824]},"#22bbdd":{"lch":[70.2453239794146924,63.2897284454122868,219.558412279776348],"luv":[70.2453239794146924,-48.7948432782897541,-40.3069844585422956],"rgb":[0.133333333333333331,0.733333333333333282,0.866666666666666696],"xyz":[0.314789740689008224,0.410991373322984799,0.746828188255486469],"hpluv":[219.558412279776348,114.328666738486675,70.2453239794146924],"hsluv":[219.558412279776348,96.4747049793171101,70.2453239794146924]},"#22bbee":{"lch":[70.9064977498674409,72.7777709471329644,229.176572531806158],"luv":[70.9064977498674409,-47.5770176148035588,-55.072963774560229],"rgb":[0.133333333333333331,0.733333333333333282,0.933333333333333348],"xyz":[0.338601920955183,0.420516245429454816,0.872239004324009692],"hpluv":[229.176572531806158,130.242295294742263,70.9064977498674409],"hsluv":[229.176572531806158,96.6813261778791286,70.9064977498674409]},"#22bbff":{"lch":[71.621751136046143,83.782469360031385,236.362391595167765],"luv":[71.621751136046143,-46.4103062114400586,-69.7537500742789121],"rgb":[0.133333333333333331,0.733333333333333282,1],"xyz":[0.364772969365014355,0.43098466479338754,1.01007319261579154],"hpluv":[236.362391595167765,148.438838585801221,71.621751136046143],"hsluv":[236.362391595167765,99.9999999999977405,71.621751136046143]},"#22cc00":{"lch":[71.9091745039523431,109.499123564337054,126.755635680122666],"luv":[71.9091745039523431,-65.5246489265194185,87.7301455852794732],"rgb":[0.133333333333333331,0.8,0],"xyz":[0.222515924272801313,0.435239836051889428,0.0722822881360034586],"hpluv":[126.755635680122666,193.226045742870838,71.9091745039523431],"hsluv":[126.755635680122666,100.000000000002288,71.9091745039523431]},"#22cc11":{"lch":[71.9364107151438077,108.454952609175663,127.087674169957992],"luv":[71.9364107151438077,-65.4022833696805,86.5159989567857508],"rgb":[0.133333333333333331,0.8,0.0666666666666666657],"xyz":[0.223527589772438445,0.435644502251744281,0.0776103931007591],"hpluv":[127.087674169957992,191.311003889673145,71.9364107151438077],"hsluv":[127.087674169957992,98.4591341389350418,71.9364107151438077]},"#22cc22":{"lch":[71.9868548113652196,106.54571101335867,127.715012949240403],"luv":[71.9868548113652196,-65.1776701905061771,84.2843985793322332],"rgb":[0.133333333333333331,0.8,0.133333333333333331],"xyz":[0.225402947910915447,0.436394645507135082,0.0874872792967382878],"hpluv":[127.715012949240403,187.811464536348922,71.9868548113652196],"hsluv":[127.715012949240403,95.6295101801496,71.9868548113652196]},"#22cc33":{"lch":[72.0697845089905229,103.47656324227728,128.782383231673776],"luv":[72.0697845089905229,-64.8140104316899084,80.6631464312780224],"rgb":[0.133333333333333331,0.8,0.2],"xyz":[0.22849069864337318,0.437629745800118208,0.103749433154349424],"hpluv":[128.782383231673776,182.191494825933376,72.0697845089905229],"hsluv":[128.782383231673776,95.6728206524347,72.0697845089905229]},"#22cc44":{"lch":[72.1892409305665126,99.2080881077430092,130.402545810446583],"luv":[72.1892409305665126,-64.3020931154350563,75.5479024657046381],"rgb":[0.133333333333333331,0.8,0.266666666666666663],"xyz":[0.232948693887592068,0.439412943897805774,0.127228208107236063],"hpluv":[130.402545810446583,174.38692971209278,72.1892409305665126],"hsluv":[130.402545810446583,95.7338579762306807,72.1892409305665126]},"#22cc55":{"lch":[72.3485056391290584,93.798910065649892,132.724941359454647],"luv":[72.3485056391290584,-63.6406395178356732,68.9064912128369116],"rgb":[0.133333333333333331,0.8,0.333333333333333315],"xyz":[0.23891110792695408,0.441797909513550635,0.158630255381209978],"hpluv":[132.724941359454647,164.515777124050715,72.3485056391290584],"hsluv":[132.724941359454647,95.8128514989610665,72.3485056391290584]},"#22cc66":{"lch":[72.5502856399570106,87.4149553130202577,135.957009780349864],"luv":[72.5502856399570106,-62.8354766726053597,60.7706942835425821],"rgb":[0.133333333333333331,0.8,0.4],"xyz":[0.246496103700462238,0.444831907822953954,0.19857789978835394],"hpluv":[135.957009780349864,152.89241471165704,72.5502856399570106],"hsluv":[135.957009780349864,95.9092114165347454,72.5502856399570106]},"#22cc77":{"lch":[72.7968107106438,80.347487444586676,140.388595454497391],"luv":[72.7968107106438,-61.8986076052927601,51.2277377519640922],"rgb":[0.133333333333333331,0.8,0.466666666666666674],"xyz":[0.255810116720664171,0.448557513031034749,0.247631701694751849],"hpluv":[140.388595454497391,140.055211607516185,72.7968107106438],"hsluv":[140.388595454497391,96.0216367005683651,72.7968107106438]},"#22cc88":{"lch":[73.0898911189871399,73.0433057087839899,146.410934307510047],"luv":[73.0898911189871399,-60.8470337434031379,40.4099368162836328],"rgb":[0.133333333333333331,0.8,0.533333333333333326],"xyz":[0.266950533822607972,0.453013679871812347,0.306304565098324044],"hpluv":[146.410934307510047,126.812607157634474,73.0898911189871399],"hsluv":[146.410934307510047,96.1482500942118463,73.0898911189871399]},"#22cc99":{"lch":[73.4309556061454316,66.1476907411168,154.494840416347301],"luv":[73.4309556061454316,-59.7013675833161201,28.4826912187770667],"rgb":[0.133333333333333331,0.8,0.6],"xyz":[0.280007497931680671,0.458236465515441505,0.375071242739441923],"hpluv":[154.494840416347301,114.307528246897718,73.4309556061454316],"hsluv":[154.494840416347301,96.2867563581127826,73.4309556061454316]},"#22ccaa":{"lch":[73.8210792378530272,60.5373530055450857,165.03572853292485],"luv":[73.8210792378530272,-58.4843517505691963,15.631753236079188],"rgb":[0.133333333333333331,0.8,0.66666666666666663],"xyz":[0.295065190896933227,0.464259542701542627,0.454375092356440524],"hpluv":[165.03572853292485,104.059650734936554,73.8210792378530272],"hsluv":[165.03572853292485,96.4346108423233233,73.8210792378530272]},"#22ccbb":{"lch":[74.2610062314211916,57.2561659312404601,177.947236116536601],"luv":[74.2610062314211916,-57.2194225987583565,2.05090580243043252],"rgb":[0.133333333333333331,0.8,0.733333333333333282],"xyz":[0.312202783004269901,0.471114579544477385,0.544633077455082271],"hpluv":[177.947236116536601,97.8364666306377302,74.2610062314211916],"hsluv":[177.947236116536601,96.5891828531354406,74.2610062314211916]},"#22cccc":{"lch":[74.7511706210643467,57.2167927817266,192.177050630061132],"luv":[74.7511706210643467,-55.9294412838427633,-12.0689259631595149],"rgb":[0.133333333333333331,0.8,0.8],"xyz":[0.3314951584479916,0.478831529721966187,0.646239588125352427],"hpluv":[192.177050630061132,97.128087782713564,74.7511706210643467],"hsluv":[192.177050630061132,96.747899952527,74.7511706210643467]},"#22ccdd":{"lch":[75.2917163799825602,60.7443465218384091,205.915913497891523],"luv":[75.2917163799825602,-54.6356779140553357,-26.5484148912282159],"rgb":[0.133333333333333331,0.8,0.866666666666666696],"xyz":[0.353013483998625199,0.487438859942219693,0.759569436025358424],"hpluv":[205.915913497891523,102.375961416692178,75.2917163799825602],"hsluv":[205.915913497891523,96.9083635301369,75.2917163799825602]},"#22ccee":{"lch":[75.8825178700112843,67.4282526949852894,217.691288579377613],"luv":[75.8825178700112843,-53.3570890727704779,-41.2260877015904583],"rgb":[0.133333333333333331,0.8,0.933333333333333348],"xyz":[0.376825664264799909,0.49696373204868971,0.884980252093881647],"hpluv":[217.691288579377613,112.755958051566466,75.8825178700112843],"hsluv":[217.691288579377613,97.0684311053177851,75.8825178700112843]},"#22ccff":{"lch":[76.5232010138481,76.4669756721874165,227.041443142980768],"luv":[76.5232010138481,-52.1098871667616095,-55.9621124325938553],"rgb":[0.133333333333333331,0.8,1],"xyz":[0.40299671267463133,0.507432151412622434,1.02281444038566338],"hpluv":[227.041443142980768,130.754689276117347,76.5232010138481],"hsluv":[227.041443142980768,99.999999999997,76.5232010138481]},"#22dd00":{"lch":[77.3111928538645543,118.038829613749726,126.914864539429317],"luv":[77.3111928538645543,-70.8973873693031607,94.3754510494695],"rgb":[0.133333333333333331,0.866666666666666696,0],"xyz":[0.265149914819976518,0.520507817146241,0.0864936183183947771],"hpluv":[126.914864539429317,210.347075729226248,77.3111928538645543],"hsluv":[126.914864539429317,100.000000000002288,77.3111928538645543]},"#22dd11":{"lch":[77.3353680300965323,117.099630973594756,127.192375056145337],"luv":[77.3353680300965323,-70.7859197567446756,93.2827805028547346],"rgb":[0.133333333333333331,0.866666666666666696,0.0666666666666666657],"xyz":[0.266161580319613622,0.520912483346095856,0.0918217232831504138],"hpluv":[127.192375056145337,208.941659016378082,77.3353680300965323],"hsluv":[127.192375056145337,98.7107326231664217,77.3353680300965323]},"#22dd22":{"lch":[77.3801492665193535,115.37848303888174,127.715012949240432],"luv":[77.3801492665193535,-70.5809801545768636,91.2716801027172409],"rgb":[0.133333333333333331,0.866666666666666696,0.133333333333333331],"xyz":[0.268036938458090679,0.521662626601486656,0.101698609479129606],"hpluv":[127.715012949240432,206.361699793513822,77.3801492665193535],"hsluv":[127.715012949240432,96.3395071146262154,77.3801492665193535]},"#22dd33":{"lch":[77.4537875025684315,112.600723810091978,128.59932725776207],"luv":[77.4537875025684315,-70.24826089977104,88.0005956974969195],"rgb":[0.133333333333333331,0.866666666666666696,0.2],"xyz":[0.271124689190548385,0.522897726894469783,0.117960763336740743],"hpluv":[128.59932725776207,202.185786680839726,77.4537875025684315],"hsluv":[128.59932725776207,96.3699377868481122,77.4537875025684315]},"#22dd44":{"lch":[77.5598997380018,108.71293616133481,129.930302741787841],"luv":[77.5598997380018,-69.7779723132927217,83.3638834787812],"rgb":[0.133333333333333331,0.866666666666666696,0.266666666666666663],"xyz":[0.2755826844347673,0.524680924992157349,0.141439538289627381],"hpluv":[129.930302741787841,196.316024449944422,77.5598997380018],"hsluv":[129.930302741787841,96.4129906320409162,77.5598997380018]},"#22dd55":{"lch":[77.7014460191091416,103.73899221962921,131.815952634500974],"luv":[77.7014460191091416,-69.1669361195931,77.3156740549574266],"rgb":[0.133333333333333331,0.866666666666666696,0.333333333333333315],"xyz":[0.281545098474129285,0.527065890607902099,0.172841585563601297],"hpluv":[131.815952634500974,188.764163413831653,77.7014460191091416],"hsluv":[131.815952634500974,96.4690009350202189,77.7014460191091416]},"#22dd66":{"lch":[77.880896240080375,97.784990294992113,134.401120560320578],"luv":[77.880896240080375,-68.4179393254247117,69.8633659756971923],"rgb":[0.133333333333333331,0.866666666666666696,0.4],"xyz":[0.28913009424763747,0.530099888917305417,0.212789229970745258],"hpluv":[134.401120560320578,179.664283635232721,77.880896240080375],"hsluv":[134.401120560320578,96.5377748783722467,77.880896240080375]},"#22dd77":{"lch":[78.1003183749745205,91.0497694522495635,137.883451987021573],"luv":[78.1003183749745205,-67.5390964016577584,61.0616980975421],"rgb":[0.133333333333333331,0.866666666666666696,0.466666666666666674],"xyz":[0.298444107267839376,0.533825494125386268,0.261843031877143195],"hpluv":[137.883451987021573,169.299836923025936,78.1003183749745205],"hsluv":[137.883451987021573,96.6186469084632478,78.1003183749745205]},"#22dd88":{"lch":[78.3614307373917285,83.8424849668191143,142.529576014285681],"luv":[78.3614307373917285,-66.5430534683674608,51.0057283108209205],"rgb":[0.133333333333333331,0.866666666666666696,0.533333333333333326],"xyz":[0.309584524369783176,0.538281660966163811,0.320515895280715335],"hpluv":[142.529576014285681,158.150702843881334,78.3614307373917285],"hsluv":[142.529576014285681,96.7105501690208,78.3614307373917285]},"#22dd99":{"lch":[78.665635872828048,76.6094810635621144,148.680389056502293],"luv":[78.665635872828048,-65.4460211356496586,39.8224924677044854],"rgb":[0.133333333333333331,0.866666666666666696,0.6],"xyz":[0.322641488478855876,0.543504446609793,0.389282572921833214],"hpluv":[148.680389056502293,146.968629494944878,78.665635872828048],"hsluv":[148.680389056502293,96.8121015046769884,78.665635872828048]},"#22ddaa":{"lch":[79.0140446006893882,69.96699558248838,156.711923446039975],"luv":[79.0140446006893882,-64.2666918031728613,27.6617569130368608],"rgb":[0.133333333333333331,0.866666666666666696,0.66666666666666663],"xyz":[0.337699181444108432,0.549527523795894091,0.46858642253883187],"hpluv":[156.711923446039975,136.880679993502099,79.0140446006893882],"hsluv":[156.711923446039975,96.9216963326973513,79.0140446006893882]},"#22ddbb":{"lch":[79.4074947696843196,64.7136880558744849,166.88262774299784],"luv":[79.4074947696843196,-63.0251268096233161,14.6865520944819572],"rgb":[0.133333333333333331,0.866666666666666696,0.733333333333333282],"xyz":[0.354836773551445106,0.556382560638828849,0.558844407637473561],"hpluv":[166.88262774299784,129.476815865977585,79.4074947696843196],"hsluv":[166.88262774299784,97.0376060255481,79.4074947696843196]},"#22ddcc":{"lch":[79.8465673347569123,61.7508733998812431,179.012513434233142],"luv":[79.8465673347569123,-61.7417023409151184,1.06421693934889783],"rgb":[0.133333333333333331,0.866666666666666696,0.8],"xyz":[0.374129148995166805,0.564099510816317706,0.660450918307743717],"hpluv":[179.012513434233142,126.735630147597362,79.8465673347569123],"hsluv":[179.012513434233142,97.1580701030331824,79.8465673347569123]},"#22dddd":{"lch":[80.3316012938198867,61.8272738566169,192.177050630061245],"luv":[80.3316012938198867,-60.4361886569793,-13.0414298740249546],"rgb":[0.133333333333333331,0.866666666666666696,0.866666666666666696],"xyz":[0.395647474545800404,0.572706841036571213,0.773780766207749715],"hpluv":[192.177050630061245,130.583134255532286,80.3316012938198867],"hsluv":[192.177050630061245,97.2813767637234434,80.3316012938198867]},"#22ddee":{"lch":[80.8627083873859078,65.1993477029452606,204.924336649163848],"luv":[80.8627083873859078,-59.1270126845314579,-27.4763773429615092],"rgb":[0.133333333333333331,0.866666666666666696,0.933333333333333348],"xyz":[0.419459654811975113,0.58223171314304123,0.899191582276272938],"hpluv":[204.924336649163848,142.193638870282854,80.8627083873859078],"hsluv":[204.924336649163848,97.405927410883,80.8627083873859078]},"#22ddff":{"lch":[81.4397880620905141,71.5324096951162574,216.054756332513932],"luv":[81.4397880620905141,-57.8307265123863,-42.1009822669203544],"rgb":[0.133333333333333331,0.866666666666666696,1],"xyz":[0.445630703221806534,0.592700132506974,1.03702577056805478],"hpluv":[216.054756332513932,161.676156351457934,81.4397880620905141],"hsluv":[216.054756332513932,99.9999999999961,81.4397880620905141]},"#22ee00":{"lch":[82.639607109796458,126.437751030410212,127.039022267349651],"luv":[82.639607109796458,-76.1608929793909368,100.92583052028732],"rgb":[0.133333333333333331,0.933333333333333348,0],"xyz":[0.312328691160491334,0.614865369827271913,0.102219877098565962],"hpluv":[127.039022267349651,308.746810598848469,82.639607109796458],"hsluv":[127.039022267349651,100.000000000002203,82.639607109796458]},"#22ee11":{"lch":[82.6612418520526262,125.587498690937579,127.273852876359626],"luv":[82.6612418520526262,-76.0589691017437,99.9362449095734462],"rgb":[0.133333333333333331,0.933333333333333348,0.0666666666666666657],"xyz":[0.313340356660128438,0.615270036027126821,0.107547982063321598],"hpluv":[127.273852876359626,307.111076239802628,82.6612418520526262],"hsluv":[127.273852876359626,98.9080389542438638,82.6612418520526262]},"#22ee22":{"lch":[82.7013218186993271,124.026614606467561,127.715012949240375],"luv":[82.7013218186993271,-75.8713392100017643,98.112899341636421],"rgb":[0.133333333333333331,0.933333333333333348,0.133333333333333331],"xyz":[0.315215714798605495,0.616020179282517621,0.117424868259300791],"hpluv":[127.715012949240375,304.102865014696874,82.7013218186993271],"hsluv":[127.715012949240375,96.8972824334497176,82.7013218186993271]},"#22ee33":{"lch":[82.7672420886773921,121.499708898279266,128.458265706389938],"luv":[82.7672420886773921,-75.5660658728233443,95.1417308591278754],"rgb":[0.133333333333333331,0.933333333333333348,0.2],"xyz":[0.318303465531063201,0.617255279575500748,0.133687022116911941],"hpluv":[128.458265706389938,299.21821405622444,82.7672420886773921],"hsluv":[128.458265706389938,96.9191735237910308,82.7672420886773921]},"#22ee44":{"lch":[82.8622607061112575,117.945648419515081,129.569612755667265],"luv":[82.8622607061112575,-75.1331770294334,90.918544261133448],"rgb":[0.133333333333333331,0.933333333333333348,0.266666666666666663],"xyz":[0.322761460775282116,0.619038477673188314,0.15716579706979858],"hpluv":[129.569612755667265,292.317409010606752,82.8622607061112575],"hsluv":[129.569612755667265,96.9502397298715692,82.8622607061112575]},"#22ee55":{"lch":[82.9890600071846194,113.365618159982461,131.129866929811442],"luv":[82.9890600071846194,-74.5682726576598185,85.3893207236587],"rgb":[0.133333333333333331,0.933333333333333348,0.333333333333333315],"xyz":[0.328723874814644101,0.621423443288933064,0.188567844343772495],"hpluv":[131.129866929811442,283.372415217622233,82.9890600071846194],"hsluv":[131.129866929811442,96.9908233877961266,82.9890600071846194]},"#22ee66":{"lch":[83.1498978333136,107.825536766413322,133.243989823694022],"luv":[83.1498978333136,-73.8719849852999175,78.5447402013449647],"rgb":[0.133333333333333331,0.933333333333333348,0.4],"xyz":[0.336308870588152287,0.624457441598336382,0.228515488750916429],"hpluv":[133.243989823694022,272.476761047092111,83.1498978333136],"hsluv":[133.243989823694022,97.0409162623008683,83.1498978333136]},"#22ee77":{"lch":[83.3466879629012709,101.462411308546436,136.05169958656856],"luv":[83.3466879629012709,-73.0495185954435726,70.415827350948561],"rgb":[0.133333333333333331,0.933333333333333348,0.466666666666666674],"xyz":[0.345622883608354192,0.628183046806417233,0.277569290657314338],"hpluv":[136.05169958656856,259.869348467080897,83.3466879629012709],"hsluv":[136.05169958656856,97.1001922741487391,83.3466879629012709]},"#22ee88":{"lch":[83.5810478428977746,94.494960715205238,139.739189865999265],"luv":[83.5810478428977746,-72.1101014829990277,61.0690663485185681],"rgb":[0.133333333333333331,0.933333333333333348,0.533333333333333326],"xyz":[0.356763300710298,0.632639213647194776,0.336242154060886533],"hpluv":[139.739189865999265,245.976403795765407,83.5810478428977746],"hsluv":[139.739189865999265,97.1680458209452098,83.5810478428977746]},"#22ee99":{"lch":[83.8543293451422187,87.2401092672494514,144.548413258572367],"luv":[83.8543293451422187,-71.0663081347816,50.6005584263049286],"rgb":[0.133333333333333331,0.933333333333333348,0.6],"xyz":[0.369820264819370692,0.637861999290824,0.405008831702004413],"hpluv":[144.548413258572367,231.480208097577446,83.8543293451422187],"hsluv":[144.548413258572367,97.2436385928483844,83.8543293451422187]},"#22eeaa":{"lch":[84.1676401551603846,80.1359348037682508,150.771943883792943],"luv":[84.1676401551603846,-69.9332745317766324,39.1293388665967328],"rgb":[0.133333333333333331,0.933333333333333348,0.66666666666666663],"xyz":[0.384877957784623248,0.643885076476925056,0.484312681319003],"hpluv":[150.771943883792943,217.42312560604816,84.1676401551603846],"hsluv":[150.771943883792943,97.3259536357082311,84.1676401551603846]},"#22eebb":{"lch":[84.5218598825754697,73.7647249619211181,158.704077932293842],"luv":[84.5218598825754697,-68.7278540770417834,26.7902355844945639],"rgb":[0.133333333333333331,0.933333333333333348,0.733333333333333282],"xyz":[0.402015549891959922,0.650740113319859814,0.57457066641764476],"hpluv":[158.704077932293842,205.339796192481117,84.5218598825754697],"hsluv":[158.704077932293842,97.4138533690930331,84.5218598825754697]},"#22eecc":{"lch":[84.9176532530853621,68.8500130904050422,168.499772582144715],"luv":[84.9176532530853621,-67.467774257192545,13.7267526869778429],"rgb":[0.133333333333333331,0.933333333333333348,0.8],"xyz":[0.421307925335681621,0.658457063497348671,0.676177177087914916],"hpluv":[168.499772582144715,197.354512375483154,84.9176532530853621],"hsluv":[168.499772582144715,97.5061375012374896,84.9176532530853621]},"#22eedd":{"lch":[85.3554818050158275,66.1709053937965166,179.926877690260085],"luv":[85.3554818050158275,-66.170851505859261,0.0844489448895467398],"rgb":[0.133333333333333331,0.933333333333333348,0.866666666666666696],"xyz":[0.44282625088631522,0.667064393717602178,0.789507024987920913],"hpluv":[179.926877690260085,196.075052309852396,85.3554818050158275],"hsluv":[179.926877690260085,97.6015969291830174,85.3554818050158275]},"#22eeee":{"lch":[85.8356149635753667,66.3470894225537648,192.177050630061245],"luv":[85.8356149635753667,-64.8543104533760868,-13.9948094114017536],"rgb":[0.133333333333333331,0.933333333333333348,0.933333333333333348],"xyz":[0.46663843115248993,0.676589265824072195,0.914917841056444137],"hpluv":[192.177050630061245,204.089886920334152,85.8356149635753667],"hsluv":[192.177050630061245,97.6990604766853608,85.8356149635753667]},"#22eeff":{"lch":[86.35814102124138,69.583621560973242,204.067857145017655],"luv":[86.35814102124138,-63.5342376580599435,-28.377474072755291],"rgb":[0.133333333333333331,0.933333333333333348,1],"xyz":[0.492809479562321351,0.687057685188004919,1.05275202934822598],"hpluv":[204.067857145017655,223.225826840448832,86.35814102124138],"hsluv":[204.067857145017655,99.9999999999940883,86.35814102124138]},"#22ff00":{"lch":[87.8997189713237361,134.70927246092154,127.137510750393233],"luv":[87.8997189713237361,-81.328032504319566,107.388729464162736],"rgb":[0.133333333333333331,1,0],"xyz":[0.364181063590165166,0.718570114686621,0.119504001241790073],"hpluv":[127.137510750393233,493.515561032875894,87.8997189713237361],"hsluv":[127.137510750393233,100.000000000002359,87.8997189713237361]},"#22ff11":{"lch":[87.9192191859362708,133.935112153716517,127.338384986715198],"luv":[87.9192191859362708,-81.2344832365115792,106.487431187561],"rgb":[0.133333333333333331,1,0.0666666666666666657],"xyz":[0.36519272908980227,0.718974780886475928,0.124832106206545709],"hpluv":[127.338384986715198,491.550771148457443,87.9192191859362708],"hsluv":[127.338384986715198,99.9999999999918572,87.9192191859362708]},"#22ff22":{"lch":[87.9553480404818089,132.511927889398493,127.71501294924046],"luv":[87.9553480404818089,-81.0620967295481449,104.825319015849075],"rgb":[0.133333333333333331,1,0.133333333333333331],"xyz":[0.367068087228279327,0.719724924141866729,0.134708992402524902],"hpluv":[127.71501294924046,487.932270281505453,87.9553480404818089],"hsluv":[127.71501294924046,99.9999999999918,87.9553480404818089]},"#22ff33":{"lch":[88.0147790356886,130.202284180175667,128.347396099003475],"luv":[88.0147790356886,-80.7811428723405101,102.112887345201102],"rgb":[0.133333333333333331,1,0.2],"xyz":[0.370155837960737033,0.720960024434849855,0.150971146260136052],"hpluv":[128.347396099003475,482.0420586134328,88.0147790356886],"hsluv":[128.347396099003475,99.9999999999918572,88.0147790356886]},"#22ff44":{"lch":[88.1004639745127349,126.941230298117631,129.288082018787549],"luv":[88.1004639745127349,-80.3817123888383,98.2489504424236486],"rgb":[0.133333333333333331,1,0.266666666666666663],"xyz":[0.374613833204955948,0.722743222532537422,0.174449921213022691],"hpluv":[129.288082018787549,473.688351575452941,88.1004639745127349],"hsluv":[129.288082018787549,99.9999999999917719,88.1004639745127349]},"#22ff55":{"lch":[88.2148445849976497,122.715034192366474,130.599301535876663],"luv":[88.2148445849976497,-79.8586444797792865,93.1749779645044498],"rgb":[0.133333333333333331,1,0.333333333333333315],"xyz":[0.380576247244317933,0.725128188148282171,0.205851968486996606],"hpluv":[130.599301535876663,462.799362736769183,88.2148445849976497],"hsluv":[130.599301535876663,99.9999999999917,88.2148445849976497]},"#22ff66":{"lch":[88.3599902775167863,117.562049147645283,132.359544385640646],"luv":[88.3599902775167863,-79.2110524978463104,86.8702743288911279],"rgb":[0.133333333333333331,1,0.4],"xyz":[0.388161243017826119,0.72816218645768549,0.24579961289414054],"hpluv":[132.359544385640646,449.432018335727776,88.3599902775167863],"hsluv":[132.359544385640646,99.999999999991644,88.3599902775167863]},"#22ff77":{"lch":[88.5376718023346427,111.576626717172417,134.67079586388752],"luv":[88.5376718023346427,-78.441973739162,79.3486004003085839],"rgb":[0.133333333333333331,1,0.466666666666666674],"xyz":[0.397475256038028,0.731887791665766341,0.294853414800538449],"hpluv":[134.67079586388752,433.796433649144,88.5376718023346427],"hsluv":[134.67079586388752,99.9999999999914593,88.5376718023346427]},"#22ff88":{"lch":[88.7494051061703,104.915784817642518,137.666744209541747],"luv":[88.7494051061703,-77.5579802767934581,70.6546643845003786],"rgb":[0.133333333333333331,1,0.533333333333333326],"xyz":[0.408615673139971824,0.736343958506543883,0.353526278204110644],"hpluv":[137.666744209541747,416.300130961303353,88.7494051061703],"hsluv":[137.666744209541747,99.9999999999915161,88.7494051061703]},"#22ff99":{"lch":[88.996479539624346,97.8095196496336143,141.520869213027311],"luv":[88.996479539624346,-76.5687003963823827,60.8599725082183696],"rgb":[0.133333333333333331,1,0.6],"xyz":[0.42167263724904458,0.741566744150173096,0.422292955845228524],"hpluv":[141.520869213027311,397.621886071746928,88.996479539624346],"hsluv":[141.520869213027311,99.9999999999913882,88.996479539624346]},"#22ffaa":{"lch":[89.2799772586324281,90.5758041558366784,146.450029989774293],"luv":[89.2799772586324281,-75.4862499862398,50.057989986528554],"rgb":[0.133333333333333331,1,0.66666666666666663],"xyz":[0.43673033021429708,0.747589821336274163,0.50159680546222718],"hpluv":[146.450029989774293,378.829469872945424,89.2799772586324281],"hsluv":[146.450029989774293,99.9999999999911893,89.2799772586324281]},"#22ffbb":{"lch":[89.6007875020334552,83.6393655876379825,152.701818689515648],"luv":[89.6007875020334552,-74.3245992165371661,38.3587985630895787],"rgb":[0.133333333333333331,1,0.733333333333333282],"xyz":[0.453867922321633754,0.754444858179208921,0.591854790560868871],"hpluv":[152.701818689515648,361.553698033539774,89.6007875020334552],"hsluv":[152.701818689515648,99.9999999999909903,89.6007875020334552]},"#22ffcc":{"lch":[89.9596178804745,77.5461751086222,160.50148390925915],"luv":[89.9596178804745,-73.0989125181650223,25.8835519710636532],"rgb":[0.133333333333333331,1,0.8],"xyz":[0.473160297765355509,0.762161808356697779,0.693461301231139],"hpluv":[160.50148390925915,348.207300802542932,89.9596178804745],"hsluv":[160.50148390925915,99.999999999990834,89.9596178804745]},"#22ffdd":{"lch":[90.3570039795250466,72.9493687180361,169.926987012389134],"luv":[90.3570039795250466,-71.8249031216737421,12.7590629719491808],"rgb":[0.133333333333333331,1,0.866666666666666696],"xyz":[0.494678623315989,0.770769138576951285,0.806791149131145],"hpluv":[169.926987012389134,342.16275562632859,90.3570039795250466],"hsluv":[169.926987012389134,99.9999999999906,90.3570039795250466]},"#22ffee":{"lch":[90.793318095908873,70.5238201303846637,180.720785562676866],"luv":[90.793318095908873,-70.5182397089352,-0.887171987837557796],"rgb":[0.133333333333333331,1,0.933333333333333348],"xyz":[0.518490803582163817,0.780294010683421302,0.932201965199668248],"hpluv":[180.720785562676866,347.681124246536797,90.793318095908873],"hsluv":[180.720785562676866,99.9999999999901661,90.793318095908873]},"#22ffff":{"lch":[91.2687776254429082,70.7867026205843786,192.177050630061217],"luv":[91.2687776254429082,-69.1940343982234225,-14.9312715999851058],"rgb":[0.133333333333333331,1,1],"xyz":[0.544661851991995127,0.790762430047354,1.0700361534914502],"hpluv":[192.177050630061217,369.384676987995,91.2687776254429082],"hsluv":[192.177050630061217,99.9999999999901803,91.2687776254429082]},"#11aa00":{"lch":[60.6644104521350869,93.0873160838275,127.211890667698796],"luv":[60.6644104521350869,-56.2958954857129186,74.1351506854346241],"rgb":[0.0666666666666666657,0.66666666666666663,0],"xyz":[0.146052570780394131,0.288673842599075969,0.0480220097587461675],"hpluv":[127.211890667698796,194.713406103753528,60.6644104521350869],"hsluv":[127.211890667698796,100.000000000002444,60.6644104521350869]},"#11aa11":{"lch":[60.7002167335786424,91.7670835597914447,127.715012949240375],"luv":[60.7002167335786424,-56.1370762813229547,72.5935692169401],"rgb":[0.0666666666666666657,0.66666666666666663,0.0666666666666666657],"xyz":[0.147064236280031263,0.289078508798930822,0.0533501147235018],"hpluv":[127.715012949240375,191.838607973199288,60.7002167335786424],"hsluv":[127.715012949240375,97.6800439707354826,60.7002167335786424]},"#11aa22":{"lch":[60.7665037483511696,89.3702510768545153,128.6744569519864],"luv":[60.7665037483511696,-55.8469935821418844,69.7721655488506229],"rgb":[0.0666666666666666657,0.66666666666666663,0.133333333333333331],"xyz":[0.148939594418508264,0.289828652054321623,0.063227000919481],"hpluv":[128.6744569519864,186.624241227076766,60.7665037483511696],"hsluv":[128.6744569519864,97.7012125574833163,60.7665037483511696]},"#11aa33":{"lch":[60.8753956347493101,85.5662665428975799,130.333267948257316],"luv":[60.8753956347493101,-55.3812688292774595,65.2265362636212274],"rgb":[0.0666666666666666657,0.66666666666666663,0.2],"xyz":[0.152027345150966,0.291063752347304749,0.0794891547770921469],"hpluv":[130.333267948257316,178.361088002118152,60.8753956347493101],"hsluv":[130.333267948257316,97.7352371443594876,60.8753956347493101]},"#11aa44":{"lch":[61.0320681383245898,80.3855440613202603,132.913331110856149],"luv":[61.0320681383245898,-54.7338170014505394,58.8731260464924233],"rgb":[0.0666666666666666657,0.66666666666666663,0.266666666666666663],"xyz":[0.156485340395184885,0.292846950444992316,0.102967929729978785],"hpluv":[132.913331110856149,167.131840298358668,61.0320681383245898],"hsluv":[132.913331110856149,97.7826211010278428,61.0320681383245898]},"#11aa55":{"lch":[61.2406211479126199,74.0326893716562466,136.73626291081149],"luv":[61.2406211479126199,-53.9110982897111626,50.7388665304739064],"rgb":[0.0666666666666666657,0.66666666666666663,0.333333333333333315],"xyz":[0.162447754434546898,0.295231916060737176,0.134369977003952701],"hpluv":[136.73626291081149,153.399260409180499,61.2406211479126199],"hsluv":[136.73626291081149,97.8429805383323412,61.2406211479126199]},"#11aa66":{"lch":[61.5043118059827236,66.9183608277608926,142.276062400218507],"luv":[61.5043118059827236,-52.9302802927860938,40.944504442006675],"rgb":[0.0666666666666666657,0.66666666666666663,0.4],"xyz":[0.170032750208055056,0.298265914370140495,0.174317621411096635],"hpluv":[142.276062400218507,138.063556785316223,61.5043118059827236],"hsluv":[142.276062400218507,97.9151756761398246,61.5043118059827236]},"#11aa77":{"lch":[61.8256765996828648,59.7171413308715628,150.193024237310198],"luv":[61.8256765996828648,-51.8168585560505335,29.6841731923518672],"rgb":[0.0666666666666666657,0.66666666666666663,0.466666666666666674],"xyz":[0.179346763228257,0.30199151957822129,0.223371423317494544],"hpluv":[150.193024237310198,122.565843528602272,61.8256765996828648],"hsluv":[150.193024237310198,97.9974781059027578,61.8256765996828648]},"#11aa88":{"lch":[62.2066058842594,53.445591933814967,161.225226782668472],"luv":[62.2066058842594,-50.6018085779820197,17.201403018159084],"rgb":[0.0666666666666666657,0.66666666666666663,0.533333333333333326],"xyz":[0.190487180330200789,0.306447686418998888,0.282044286721066739],"hpluv":[161.225226782668472,109.022142353571084,62.2066058842594],"hsluv":[161.225226782668472,98.0877698343988698,62.2066058842594]},"#11aa99":{"lch":[62.6483970296267643,49.4620441969123803,175.635441576327452],"luv":[62.6483970296267643,-49.3186051456987613,3.76417356400704],"rgb":[0.0666666666666666657,0.66666666666666663,0.6],"xyz":[0.203544144439273517,0.311670472062628046,0.350810964362184619],"hpluv":[175.635441576327452,100.184705161952,62.6483970296267643],"hsluv":[175.635441576327452,98.1837511724305756,62.6483970296267643]},"#11aaaa":{"lch":[63.1517986220979424,49.10533458105958,192.177050630061103],"luv":[63.1517986220979424,-48.0004871585874326,-10.3579494522848794],"rgb":[0.0666666666666666657,0.66666666666666663,0.66666666666666663],"xyz":[0.218601837404526045,0.317693549248729168,0.430114813979183219],"hpluv":[192.177050630061103,98.6693521766944741,63.1517986220979424],"hsluv":[192.177050630061103,98.283131385506934,63.1517986220979424]},"#11aabb":{"lch":[63.7170519890822931,52.9100997091116483,208.088870357104184],"luv":[63.7170519890822931,-46.6782604891356812,-24.9122188681885817],"rgb":[0.0666666666666666657,0.66666666666666663,0.733333333333333282],"xyz":[0.235739429511862719,0.324548586091663926,0.520372799077825],"hpluv":[208.088870357104184,105.371274370578277,63.7170519890822931],"hsluv":[208.088870357104184,98.3837818799450474,63.7170519890822931]},"#11aacc":{"lch":[64.3439331362496603,60.2774830024396,221.163749704229559],"luv":[64.3439331362496603,-45.3787880982832661,-39.6754401089704345],"rgb":[0.0666666666666666657,0.66666666666666663,0.8],"xyz":[0.255031804955584418,0.332265536269152728,0.621979309748095122],"hpluv":[221.163749704229559,118.873987633214512,64.3439331362496603],"hsluv":[221.163749704229559,98.4838416101877385,64.3439331362496603]},"#11aadd":{"lch":[65.0317963778061738,70.0923801470555,230.985682804055784],"luv":[65.0317963778061738,-44.1241742926816372,-54.4609860144708762],"rgb":[0.0666666666666666657,0.66666666666666663,0.866666666666666696],"xyz":[0.276550130506218,0.340872866489406234,0.735309157648101119],"hpluv":[230.985682804055784,136.767964522831733,65.0317963778061738],"hsluv":[230.985682804055784,98.5817742563244,65.0317963778061738]},"#11aaee":{"lch":[65.7796198544585877,81.3683973110580325,238.155251398024461],"luv":[65.7796198544585877,-42.9315457639956293,-69.1208974137644248],"rgb":[0.0666666666666666657,0.66666666666666663,0.933333333333333348],"xyz":[0.300362310772392727,0.350397738595876251,0.860719973716624343],"hpluv":[238.155251398024461,156.965326989669,65.7796198544585877],"hsluv":[238.155251398024461,98.676383948407647,65.7796198544585877]},"#11aaff":{"lch":[66.5860524818013317,93.423779787985481,243.412392023658668],"luv":[66.5860524818013317,-41.8132782993845566,-83.5443139162218529],"rgb":[0.0666666666666666657,0.66666666666666663,1],"xyz":[0.326533359182224148,0.360866157959809,0.998554162008406188],"hpluv":[243.412392023658668,178.038321821181739,66.5860524818013317],"hsluv":[243.412392023658668,99.9999999999982805,66.5860524818013317]},"#11bb00":{"lch":[66.2579979425279788,101.837028338191359,127.308350947248712],"luv":[66.2579979425279788,-61.7238643700190792,80.9996599251199285],"rgb":[0.0666666666666666657,0.733333333333333282,0],"xyz":[0.180007068688992911,0.356582838416274528,0.0593401757282787864],"hpluv":[127.308350947248712,195.032386644097869,66.2579979425279788],"hsluv":[127.308350947248712,100.000000000002416,66.2579979425279788]},"#11bb11":{"lch":[66.2891028676776,100.667761827005108,127.715012949240403],"luv":[66.2891028676776,-61.5819268253258301,79.6345688739434507],"rgb":[0.0666666666666666657,0.733333333333333282,0.0666666666666666657],"xyz":[0.181018734188630043,0.356987504616129381,0.0646682806930344162],"hpluv":[127.715012949240403,192.702610495025482,66.2891028676776],"hsluv":[127.715012949240403,98.1199752505464318,66.2891028676776]},"#11bb22":{"lch":[66.3467009890152895,98.5365229927559199,128.48627008521666],"luv":[66.3467009890152895,-61.3219466901703356,77.130183570569983],"rgb":[0.0666666666666666657,0.733333333333333282,0.133333333333333331],"xyz":[0.182894092327107044,0.357737647871520181,0.0745451668890136088],"hpluv":[128.48627008521666,188.459149582366734,66.3467009890152895],"hsluv":[128.48627008521666,98.1339007760711155,66.3467009890152895]},"#11bb33":{"lch":[66.4413603116689586,95.1297105779412107,129.807139434656818],"luv":[66.4413603116689586,-60.9025570517959949,73.0790009455219121],"rgb":[0.0666666666666666657,0.733333333333333282,0.2],"xyz":[0.185981843059564778,0.358972748164503308,0.0908073207466247589],"hpluv":[129.807139434656818,181.684126992490178,66.4413603116689586],"hsluv":[129.807139434656818,98.1563849168539093,66.4413603116689586]},"#11bb44":{"lch":[66.5776441235544,90.4345556189602888,131.832147550242752],"luv":[66.5776441235544,-60.3153845158839061,67.3829595721343679],"rgb":[0.0666666666666666657,0.733333333333333282,0.266666666666666663],"xyz":[0.190439838303783665,0.360755946262190874,0.114286095699511397],"hpluv":[131.832147550242752,172.363503065423913,66.5776441235544],"hsluv":[131.832147550242752,98.1879073212924567,66.5776441235544]},"#11bb55":{"lch":[66.7592187944261,84.5672269635890501,134.774448398028227],"luv":[66.7592187944261,-59.5621947933412841,60.0329978237906374],"rgb":[0.0666666666666666657,0.733333333333333282,0.333333333333333315],"xyz":[0.196402252343145678,0.363140911877935735,0.145688142973485313],"hpluv":[134.774448398028227,160.742297130584,66.7592187944261],"hsluv":[134.774448398028227,98.2284201297941451,66.7592187944261]},"#11bb66":{"lch":[66.9890609579081513,77.7896938122995749,138.938350400658521],"luv":[66.9890609579081513,-58.6536805127572336,51.0977712402284752],"rgb":[0.0666666666666666657,0.733333333333333282,0.4],"xyz":[0.203987248116653835,0.366174910187339053,0.185635787380629275],"hpluv":[138.938350400658521,147.352496635070423,66.9890609579081513],"hsluv":[138.938350400658521,98.2774122804504486,66.9890609579081513]},"#11bb77":{"lch":[67.2695660469751573,70.5410036497719375,144.751753478195667],"luv":[67.2695660469751573,-57.6079608572489548,40.7106379437464625],"rgb":[0.0666666666666666657,0.733333333333333282,0.466666666666666674],"xyz":[0.213301261136855769,0.369900515395419849,0.234689589287027184],"hpluv":[144.751753478195667,133.064539371584743,67.2695660469751573],"hsluv":[144.751753478195667,98.33398740837616,67.2695660469751573]},"#11bb88":{"lch":[67.6026131767386289,63.4868829762913904,152.765342955174589],"luv":[67.6026131767386289,-56.44870944299889,29.0538725863731493],"rgb":[0.0666666666666666657,0.733333333333333282,0.533333333333333326],"xyz":[0.224441678238799569,0.374356682236197447,0.293362452690599351],"hpluv":[152.765342955174589,119.168054047142519,67.6026131767386289],"hsluv":[152.765342955174589,98.3969602233376293,67.6026131767386289]},"#11bb99":{"lch":[67.9896091217093357,57.5709210660889568,163.510238814203348],"luv":[67.9896091217093357,-55.2030563361408468,16.3411604100414145],"rgb":[0.0666666666666666657,0.733333333333333282,0.6],"xyz":[0.237498642347872296,0.379579467879826604,0.362129130331717231],"hpluv":[163.510238814203348,107.448401728013394,67.9896091217093357],"hsluv":[163.510238814203348,98.464964167861,67.9896091217093357]},"#11bbaa":{"lch":[68.431522322705149,53.97217733059707,177.026074660918823],"luv":[68.431522322705149,-53.8994902384006807,2.80015675382041573],"rgb":[0.0666666666666666657,0.733333333333333282,0.66666666666666663],"xyz":[0.252556335313124825,0.385602545065927726,0.441432979948715831],"hpluv":[177.026074660918823,100.081328983600983,68.431522322705149],"hsluv":[177.026074660918823,98.5365589333087684,68.431522322705149]},"#11bbbb":{"lch":[68.9289126417652511,53.7759127589290102,192.177050630061103],"luv":[68.9289126417652511,-52.5659794775517426,-11.3431298424003177],"rgb":[0.0666666666666666657,0.733333333333333282,0.733333333333333282],"xyz":[0.269693927420461499,0.392457581908862485,0.531690965047357578],"hpluv":[192.177050630061103,98.9978332941913095,68.9289126417652511],"hsluv":[192.177050630061103,98.6103267315429122,68.9289126417652511]},"#11bbcc":{"lch":[69.4819599404948463,57.3930965266865485,206.799543430538137],"luv":[69.4819599404948463,-51.2284702417124365,-25.8768499940688805],"rgb":[0.0666666666666666657,0.733333333333333282,0.8],"xyz":[0.288986302864183253,0.400174532086351287,0.633297475717627734],"hpluv":[206.799543430538137,104.81584090136549,69.4819599404948463],"hsluv":[206.799543430538137,98.6849492658553658,69.4819599404948463]},"#11bbdd":{"lch":[70.0904930703520535,64.3454332007566876,219.135570681285316],"luv":[70.0904930703520535,-49.9098388382008054,-40.6121011637893901],"rgb":[0.0666666666666666657,0.733333333333333282,0.866666666666666696],"xyz":[0.310504628414816741,0.408781862306604793,0.746627323617633731],"hpluv":[219.135570681285316,116.492493254234162,70.0904930703520535],"hsluv":[219.135570681285316,98.7592614999562244,70.0904930703520535]},"#11bbee":{"lch":[70.7540199625255184,73.7064384587933858,228.717665412779098],"luv":[70.7540199625255184,-48.6292974270947838,-55.3879996211006826],"rgb":[0.0666666666666666657,0.733333333333333282,0.933333333333333348],"xyz":[0.334316808680991506,0.41830673441307481,0.872038139686157],"hpluv":[228.717665412779098,132.188487390259695,70.7540199625255184],"hsluv":[228.717665412779098,98.8322822642660412,70.7540199625255184]},"#11bbff":{"lch":[71.471758937406932,84.600620314641418,235.923069973878228],"luv":[71.471758937406932,-47.4021956671632836,-70.0735099988154246],"rgb":[0.0666666666666666657,0.733333333333333282,1],"xyz":[0.360487857090822872,0.428775153777007534,1.00987232797793891],"hpluv":[235.923069973878228,150.202929688167188,71.471758937406932],"hsluv":[235.923069973878228,99.9999999999978115,71.471758937406932]},"#11cc00":{"lch":[71.760164015117,110.429324102022079,127.380540485202317],"luv":[71.760164015117,-67.042304751477019,87.7494444155603617],"rgb":[0.0666666666666666657,0.8,0],"xyz":[0.21823081199860983,0.433030325035509422,0.0720814234981507346],"hpluv":[127.380540485202317,195.272154443078705,71.760164015117],"hsluv":[127.380540485202317,100.000000000002245,71.760164015117]},"#11cc11":{"lch":[71.7874927519263366,109.385174124956521,127.715012949240432],"luv":[71.7874927519263366,-66.9146672826053219,86.5305935539869466],"rgb":[0.0666666666666666657,0.8,0.0666666666666666657],"xyz":[0.219242477498246963,0.433434991235364275,0.0774095284629063712],"hpluv":[127.715012949240432,193.352149077988855,71.7874927519263366],"hsluv":[127.715012949240432,98.4507061603193563,71.7874927519263366]},"#11cc22":{"lch":[71.8381079866900905,107.476295008714118,128.346772012349533],"luv":[71.8381079866900905,-66.680384726115463,84.2904519004221129],"rgb":[0.0666666666666666657,0.8,0.133333333333333331],"xyz":[0.221117835636723964,0.434185134490755076,0.0872864146588855638],"hpluv":[128.346772012349533,189.84411001864018,71.8381079866900905],"hsluv":[128.346772012349533,98.4601754700601361,71.8381079866900905]},"#11cc33":{"lch":[71.9213183931711626,104.40864440796355,129.421122123890029],"luv":[71.9213183931711626,-66.3010906987881441,80.6556284412913556],"rgb":[0.0666666666666666657,0.8,0.2],"xyz":[0.224205586369181697,0.435420234783738203,0.103548568516496714],"hpluv":[129.421122123890029,184.212095875088124,71.9213183931711626],"hsluv":[129.421122123890029,98.4755168761512749,71.9213183931711626]},"#11cc44":{"lch":[72.0411777660314669,100.144250866202455,131.050559631523186],"luv":[72.0411777660314669,-65.7672084530810395,75.5218198525557085],"rgb":[0.0666666666666666657,0.8,0.266666666666666663],"xyz":[0.228663581613400585,0.437203432881425769,0.127027343469383353],"hpluv":[131.050559631523186,176.394298837834185,72.0411777660314669],"hsluv":[131.050559631523186,98.4971346697200261,72.0411777660314669]},"#11cc55":{"lch":[72.2009771566369523,94.7439152050601621,133.383427271112737],"luv":[72.2009771566369523,-65.077446685205,68.8573554627095],"rgb":[0.0666666666666666657,0.8,0.333333333333333315],"xyz":[0.234625995652762598,0.439588398497170629,0.158429390743357268],"hpluv":[133.383427271112737,166.512782767528847,72.2009771566369523],"hsluv":[133.383427271112737,98.5251071985599225,72.2009771566369523]},"#11cc66":{"lch":[72.4034304155724,88.37638367841096,136.624435218533876],"luv":[72.4034304155724,-64.2379326004453333,60.6949191225620339],"rgb":[0.0666666666666666657,0.8,0.4],"xyz":[0.242210991426270755,0.442622396806573948,0.198377035150501202],"hpluv":[136.624435218533876,154.887514188688357,72.4034304155724],"hsluv":[136.624435218533876,98.5592219307307289,72.4034304155724]},"#11cc77":{"lch":[72.6507717937069657,81.3359578844494422,141.057484765247835],"luv":[72.6507717937069657,-63.261234579889333,51.1229326663597],"rgb":[0.0666666666666666657,0.8,0.466666666666666674],"xyz":[0.251525004446472689,0.446348002014654743,0.247430837056899111],"hpluv":[141.057484765247835,142.063228414279422,72.6507717937069657],"hsluv":[141.057484765247835,98.5990140248714795,72.6507717937069657]},"#11cc88":{"lch":[72.9448138267759703,74.0714793913140284,147.061910762632237],"luv":[72.9448138267759703,-62.1651250648783815,40.2750702654370087],"rgb":[0.0666666666666666657,0.8,0.533333333333333326],"xyz":[0.262665421548416489,0.450804168855432341,0.306103700460471306],"hpluv":[147.061910762632237,128.853412583983044,72.9448138267759703],"hsluv":[147.061910762632237,98.6438145792393755,72.9448138267759703]},"#11cc99":{"lch":[73.286985449663689,67.2264361640895203,155.087429558943455],"luv":[73.286985449663689,-60.9711251229010074,28.3181147072320734],"rgb":[0.0666666666666666657,0.8,0.6],"xyz":[0.275722385657489188,0.456026954499061499,0.374870378101589186],"hpluv":[155.087429558943455,116.399886643338576,73.286985449663689],"hsluv":[155.087429558943455,98.6928071276572609,73.286985449663689]},"#11ccaa":{"lch":[73.6783599756885224,61.6669147974486336,165.501022011161467],"luv":[73.6783599756885224,-59.7029534543248275,15.4390974304365383],"rgb":[0.0666666666666666657,0.8,0.66666666666666663],"xyz":[0.290780078622741744,0.462050031685162621,0.454174227718587786],"hpluv":[165.501022011161467,106.206622375239988,73.6783599756885224],"hsluv":[165.501022011161467,98.7450877264532494,73.6783599756885224]},"#11ccbb":{"lch":[74.1196780643846864,58.4137876130139801,178.201908682105085],"luv":[74.1196780643846864,-58.3850250256368426,1.83287644266177074],"rgb":[0.0666666666666666657,0.8,0.733333333333333282],"xyz":[0.307917670730078419,0.46890506852809738,0.544432212817229533],"hpluv":[178.201908682105085,100.004874571957387,74.1196780643846864],"hsluv":[178.201908682105085,98.7997230732590452,74.1196780643846864]},"#11cccc":{"lch":[74.6113685470067,58.3540675645504,192.177050630061103],"luv":[74.6113685470067,-57.0411279075965751,-12.3088150671508707],"rgb":[0.0666666666666666657,0.8,0.8],"xyz":[0.327210046173800118,0.476622018705586181,0.646038723487499689],"hpluv":[192.177050630061103,99.244272920381249,74.6113685470067],"hsluv":[192.177050630061103,98.8558017207376167,74.6113685470067]},"#11ccdd":{"lch":[75.1535687293590087,61.8087365466066316,205.702276410621693],"luv":[75.1535687293590087,-55.6933672323303881,-26.8061328768737823],"rgb":[0.0666666666666666657,0.8,0.866666666666666696],"xyz":[0.348728371724433717,0.485229348925839687,0.759368571387505686],"hpluv":[205.702276410621693,104.361325002032586,75.1535687293590087],"hsluv":[205.702276410621693,98.9124749687685352,75.1535687293590087]},"#11ccee":{"lch":[75.7461450403856418,68.3900229325434168,217.356690237772426],"luv":[75.7461450403856418,-54.3614174191380712,-41.4973677827407],"rgb":[0.0666666666666666657,0.8,0.933333333333333348],"xyz":[0.372540551990608426,0.494754221032309704,0.88477938745602891],"hpluv":[217.356690237772426,114.570165581500433,75.7461450403856418],"hsluv":[217.356690237772426,98.968985855810871,75.7461450403856418]},"#11ccff":{"lch":[76.3887144168947714,77.3228649101567811,226.666757851513921],"luv":[76.3887144168947714,-53.0620799518220849,-56.2426982736496726],"rgb":[0.0666666666666666657,0.8,1],"xyz":[0.398711600400439847,0.505222640396242428,1.02261357574781075],"hpluv":[226.666757851513921,131.304642630845649,76.3887144168947714],"hsluv":[226.666757851513921,99.9999999999969162,76.3887144168947714]},"#11dd00":{"lch":[77.1789729208637851,118.880191052714352,127.435820588671049],"luv":[77.1789729208637851,-72.2639845338074,94.3950017957916572],"rgb":[0.0666666666666666657,0.866666666666666696,0],"xyz":[0.260864802545785,0.518298306129860942,0.0862927536805420531],"hpluv":[127.435820588671049,210.367240137055802,77.1789729208637851],"hsluv":[127.435820588671049,100.000000000002302,77.1789729208637851]},"#11dd11":{"lch":[77.2032167276219,117.940964566200989,127.715012949240474],"luv":[77.2032167276219,-72.148538100067,93.2987651195291],"rgb":[0.0666666666666666657,0.866666666666666696,0.0666666666666666657],"xyz":[0.261876468045422084,0.51870297232971585,0.0916208586452976897],"hpluv":[127.715012949240474,208.973000844217893,77.2032167276219],"hsluv":[127.715012949240474,98.7048375113237739,77.2032167276219]},"#11dd22":{"lch":[77.2481249515021773,116.219968574506154,128.240715222563949],"luv":[77.2481249515021773,-71.936288170647174,91.2811674974022509],"rgb":[0.0666666666666666657,0.866666666666666696,0.133333333333333331],"xyz":[0.263751826183899141,0.519453115585106651,0.101497744841276882],"hpluv":[128.240715222563949,206.413967447437244,77.2481249515021773],"hsluv":[128.240715222563949,98.7114617332334348,77.2481249515021773]},"#11dd33":{"lch":[77.3219716074714114,113.443027450646795,129.129905575085218],"luv":[77.3219716074714114,-71.591714193384675,87.9996984996024],"rgb":[0.0666666666666666657,0.866666666666666696,0.2],"xyz":[0.266839576916356847,0.520688215878089777,0.117759898698888033],"hpluv":[129.129905575085218,202.273081507843187,77.3219716074714114],"hsluv":[129.129905575085218,98.7222220245650419,77.3219716074714114]},"#11dd44":{"lch":[77.4283833065767,109.557638087167803,130.467479357182611],"luv":[77.4283833065767,-71.1046976382296378,83.3486534805139],"rgb":[0.0666666666666666657,0.866666666666666696,0.266666666666666663],"xyz":[0.271297572160575762,0.522471413975777343,0.141238673651774671],"hpluv":[130.467479357182611,196.45511110559741,77.4283833065767],"hsluv":[130.467479357182611,98.737444128486942,77.4283833065767]},"#11dd55":{"lch":[77.5703274630482156,104.589066335953675,132.360930841179908],"luv":[77.5703274630482156,-70.4719757705036471,77.2824263854860192],"rgb":[0.0666666666666666657,0.866666666666666696,0.333333333333333315],"xyz":[0.277259986199937747,0.524856379591522093,0.172640720925748559],"hpluv":[132.360930841179908,188.974657198429043,77.5703274630482156],"hsluv":[132.360930841179908,98.7572451358875583,77.5703274630482156]},"#11dd66":{"lch":[77.7502795105496176,98.645271303892585,134.953797592355841],"luv":[77.7502795105496176,-69.6964700953403167,69.8089650895062732],"rgb":[0.0666666666666666657,0.866666666666666696,0.4],"xyz":[0.284844981973445932,0.527890377900925412,0.212588365332892548],"hpluv":[134.953797592355841,179.968822287066047,77.7502795105496176],"hsluv":[134.953797592355841,98.7815546318288114,77.7502795105496176]},"#11dd77":{"lch":[77.9703113413929714,91.9272626112809377,138.440937564009943],"luv":[77.9703113413929714,-68.7866216277350588,60.9837871589344616],"rgb":[0.0666666666666666657,0.866666666666666696,0.466666666666666674],"xyz":[0.294158994993647838,0.531615983109006263,0.261642167239290457],"hpluv":[138.440937564009943,169.723893920939275,77.9703113413929714],"hsluv":[138.440937564009943,98.8101351189296,77.9703113413929714]},"#11dd88":{"lch":[78.2321436880382919,84.7462074021241705,143.083472555296623],"luv":[78.2321436880382919,-67.7555613828794492,50.90288371727776],"rgb":[0.0666666666666666657,0.866666666666666696,0.533333333333333326],"xyz":[0.305299412095591638,0.536072149949783805,0.320315030642862597],"hpluv":[143.083472555296623,158.721324423216174,78.2321436880382919],"hsluv":[143.083472555296623,98.842607114853692,78.2321436880382919]},"#11dd99":{"lch":[78.5371801027425,77.5491781494168748,149.212222309724666],"luv":[78.5371801027425,-66.6201031545698,39.6942928810235145],"rgb":[0.0666666666666666657,0.866666666666666696,0.6],"xyz":[0.318356376204664393,0.541294935593413,0.389081708283980532],"hpluv":[149.212222309724666,147.710574340426348,78.5371801027425],"hsluv":[149.212222309724666,98.8784794246756746,78.5371801027425]},"#11ddaa":{"lch":[78.8865310768390771,70.9495750262721288,157.187121587348372],"luv":[78.8865310768390771,-65.3996173248364414,27.5087667875819264],"rgb":[0.0666666666666666657,0.866666666666666696,0.66666666666666663],"xyz":[0.333414069169916893,0.547318012779514085,0.468385557900979133],"hpluv":[157.187121587348372,137.807232739715857,78.8865310768390771],"hsluv":[157.187121587348372,98.9171828916172728,78.8865310768390771]},"#11ddbb":{"lch":[79.2810328759594398,65.7363215025974483,167.247861929956969],"luv":[79.2810328759594398,-64.1148749316804611,14.5102300873497096],"rgb":[0.0666666666666666657,0.866666666666666696,0.733333333333333282],"xyz":[0.350551661277253568,0.554173049622448843,0.558643542999620824],"hpluv":[167.247861929956969,130.572542181043048,79.2810328759594398],"hsluv":[167.247861929956969,98.9581049946704496,79.2810328759594398]},"#11ddcc":{"lch":[79.7212637056701396,62.7929370759791,179.209087927276954],"luv":[79.7212637056701396,-62.7869545437069903,0.866767416521026846],"rgb":[0.0666666666666666657,0.866666666666666696,0.8],"xyz":[0.369844036720975322,0.561889999799937701,0.660250053669891],"hpluv":[179.209087927276954,127.935201467087722,79.7212637056701396],"hsluv":[179.209087927276954,99.0006225499112,79.7212637056701396]},"#11dddd":{"lch":[80.2075587483664378,62.8503941808937796,192.177050630061132],"luv":[80.2075587483664378,-61.4362892449526,-13.2572400032679489],"rgb":[0.0666666666666666657,0.866666666666666696,0.866666666666666696],"xyz":[0.39136236227160881,0.570497330020191207,0.773579901569897],"hpluv":[192.177050630061132,131.767009082741112,80.2075587483664378],"hsluv":[192.177050630061132,99.0441302201931109,80.2075587483664378]},"#11ddee":{"lch":[80.7400249746916643,66.1629514334268691,204.757295278220823],"luv":[80.7400249746916643,-60.0819052998990202,-27.707414132610225],"rgb":[0.0666666666666666657,0.866666666666666696,0.933333333333333348],"xyz":[0.415174542537783575,0.580022202126661224,0.8989907176384202],"hpluv":[204.757295278220823,143.22067561241397,80.7400249746916643],"hsluv":[204.757295278220823,99.0880633014724594,80.7400249746916643]},"#11ddff":{"lch":[81.3185562290371848,72.4120095186264194,215.786316478612605],"luv":[81.3185562290371848,-58.7408753400219084,-42.3439332940817934],"rgb":[0.0666666666666666657,0.866666666666666696,1],"xyz":[0.441345590947614941,0.590490621490594,1.03682490593020216],"hpluv":[215.786316478612605,162.428807277722512,81.3185562290371848],"hsluv":[215.786316478612605,99.9999999999959925,81.3185562290371848]}} \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv.go new file mode 100644 index 0000000..d19fb64 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/hsluv.go @@ -0,0 +1,207 @@ +package colorful + +import "math" + +// Source: https://github.com/hsluv/hsluv-go +// Under MIT License +// Modified so that Saturation and Luminance are in [0..1] instead of [0..100]. + +// HSLuv uses a rounded version of the D65. This has no impact on the final RGB +// values, but to keep high levels of accuracy for internal operations and when +// comparing to the test values, this modified white reference is used internally. +// +// See this GitHub thread for details on these values: +// https://github.com/hsluv/hsluv/issues/79 +var hSLuvD65 = [3]float64{0.95045592705167, 1.0, 1.089057750759878} + +func LuvLChToHSLuv(l, c, h float64) (float64, float64, float64) { + // [-1..1] but the code expects it to be [-100..100] + c *= 100.0 + l *= 100.0 + + var s, max float64 + if l > 99.9999999 || l < 0.00000001 { + s = 0.0 + } else { + max = maxChromaForLH(l, h) + s = c / max * 100.0 + } + return h, clamp01(s / 100.0), clamp01(l / 100.0) +} + +func HSLuvToLuvLCh(h, s, l float64) (float64, float64, float64) { + l *= 100.0 + s *= 100.0 + + var c, max float64 + if l > 99.9999999 || l < 0.00000001 { + c = 0.0 + } else { + max = maxChromaForLH(l, h) + c = max / 100.0 * s + } + + // c is [-100..100], but for LCh it's supposed to be almost [-1..1] + return clamp01(l / 100.0), c / 100.0, h +} + +func LuvLChToHPLuv(l, c, h float64) (float64, float64, float64) { + // [-1..1] but the code expects it to be [-100..100] + c *= 100.0 + l *= 100.0 + + var s, max float64 + if l > 99.9999999 || l < 0.00000001 { + s = 0.0 + } else { + max = maxSafeChromaForL(l) + s = c / max * 100.0 + } + return h, s / 100.0, l / 100.0 +} + +func HPLuvToLuvLCh(h, s, l float64) (float64, float64, float64) { + // [-1..1] but the code expects it to be [-100..100] + l *= 100.0 + s *= 100.0 + + var c, max float64 + if l > 99.9999999 || l < 0.00000001 { + c = 0.0 + } else { + max = maxSafeChromaForL(l) + c = max / 100.0 * s + } + return l / 100.0, c / 100.0, h +} + +// HSLuv creates a new Color from values in the HSLuv color space. +// Hue in [0..360], a Saturation [0..1], and a Luminance (lightness) in [0..1]. +// +// The returned color values are clamped (using .Clamped), so this will never output +// an invalid color. +func HSLuv(h, s, l float64) Color { + // HSLuv -> LuvLCh -> CIELUV -> CIEXYZ -> Linear RGB -> sRGB + l, u, v := LuvLChToLuv(HSLuvToLuvLCh(h, s, l)) + return LinearRgb(XyzToLinearRgb(LuvToXyzWhiteRef(l, u, v, hSLuvD65))).Clamped() +} + +// HPLuv creates a new Color from values in the HPLuv color space. +// Hue in [0..360], a Saturation [0..1], and a Luminance (lightness) in [0..1]. +// +// The returned color values are clamped (using .Clamped), so this will never output +// an invalid color. +func HPLuv(h, s, l float64) Color { + // HPLuv -> LuvLCh -> CIELUV -> CIEXYZ -> Linear RGB -> sRGB + l, u, v := LuvLChToLuv(HPLuvToLuvLCh(h, s, l)) + return LinearRgb(XyzToLinearRgb(LuvToXyzWhiteRef(l, u, v, hSLuvD65))).Clamped() +} + +// HSLuv returns the Hue, Saturation and Luminance of the color in the HSLuv +// color space. Hue in [0..360], a Saturation [0..1], and a Luminance +// (lightness) in [0..1]. +func (col Color) HSLuv() (h, s, l float64) { + // sRGB -> Linear RGB -> CIEXYZ -> CIELUV -> LuvLCh -> HSLuv + return LuvLChToHSLuv(col.LuvLChWhiteRef(hSLuvD65)) +} + +// HPLuv returns the Hue, Saturation and Luminance of the color in the HSLuv +// color space. Hue in [0..360], a Saturation [0..1], and a Luminance +// (lightness) in [0..1]. +// +// Note that HPLuv can only represent pastel colors, and so the Saturation +// value could be much larger than 1 for colors it can't represent. +func (col Color) HPLuv() (h, s, l float64) { + return LuvLChToHPLuv(col.LuvLChWhiteRef(hSLuvD65)) +} + +// DistanceHSLuv calculates Euclidan distance in the HSLuv colorspace. No idea +// how useful this is. +// +// The Hue value is divided by 100 before the calculation, so that H, S, and L +// have the same relative ranges. +func (c1 Color) DistanceHSLuv(c2 Color) float64 { + h1, s1, l1 := c1.HSLuv() + h2, s2, l2 := c2.HSLuv() + return math.Sqrt(sq((h1-h2)/100.0) + sq(s1-s2) + sq(l1-l2)) +} + +// DistanceHPLuv calculates Euclidean distance in the HPLuv colorspace. No idea +// how useful this is. +// +// The Hue value is divided by 100 before the calculation, so that H, S, and L +// have the same relative ranges. +func (c1 Color) DistanceHPLuv(c2 Color) float64 { + h1, s1, l1 := c1.HPLuv() + h2, s2, l2 := c2.HPLuv() + return math.Sqrt(sq((h1-h2)/100.0) + sq(s1-s2) + sq(l1-l2)) +} + +var m = [3][3]float64{ + {3.2409699419045214, -1.5373831775700935, -0.49861076029300328}, + {-0.96924363628087983, 1.8759675015077207, 0.041555057407175613}, + {0.055630079696993609, -0.20397695888897657, 1.0569715142428786}, +} + +const kappa = 903.2962962962963 +const epsilon = 0.0088564516790356308 + +func maxChromaForLH(l, h float64) float64 { + hRad := h / 360.0 * math.Pi * 2.0 + minLength := math.MaxFloat64 + for _, line := range getBounds(l) { + length := lengthOfRayUntilIntersect(hRad, line[0], line[1]) + if length > 0.0 && length < minLength { + minLength = length + } + } + return minLength +} + +func getBounds(l float64) [6][2]float64 { + var sub2 float64 + var ret [6][2]float64 + sub1 := math.Pow(l+16.0, 3.0) / 1560896.0 + if sub1 > epsilon { + sub2 = sub1 + } else { + sub2 = l / kappa + } + for i := range m { + for k := 0; k < 2; k++ { + top1 := (284517.0*m[i][0] - 94839.0*m[i][2]) * sub2 + top2 := (838422.0*m[i][2]+769860.0*m[i][1]+731718.0*m[i][0])*l*sub2 - 769860.0*float64(k)*l + bottom := (632260.0*m[i][2]-126452.0*m[i][1])*sub2 + 126452.0*float64(k) + ret[i*2+k][0] = top1 / bottom + ret[i*2+k][1] = top2 / bottom + } + } + return ret +} + +func lengthOfRayUntilIntersect(theta, x, y float64) (length float64) { + length = y / (math.Sin(theta) - x*math.Cos(theta)) + return +} + +func maxSafeChromaForL(l float64) float64 { + minLength := math.MaxFloat64 + for _, line := range getBounds(l) { + m1 := line[0] + b1 := line[1] + x := intersectLineLine(m1, b1, -1.0/m1, 0.0) + dist := distanceFromPole(x, b1+x*m1) + if dist < minLength { + minLength = dist + } + } + return minLength +} + +func intersectLineLine(x1, y1, x2, y2 float64) float64 { + return (y1 - y2) / (x2 - x1) +} + +func distanceFromPole(x, y float64) float64 { + return math.Sqrt(math.Pow(x, 2.0) + math.Pow(y, 2.0)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go new file mode 100644 index 0000000..9f7bf6f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/soft_palettegen.go @@ -0,0 +1,185 @@ +// Largely inspired by the descriptions in http://lab.medialab.sciences-po.fr/iwanthue/ +// but written from scratch. + +package colorful + +import ( + "fmt" + "math" + "math/rand" +) + +// The algorithm works in L*a*b* color space and converts to RGB in the end. +// L* in [0..1], a* and b* in [-1..1] +type lab_t struct { + L, A, B float64 +} + +type SoftPaletteSettings struct { + // A function which can be used to restrict the allowed color-space. + CheckColor func(l, a, b float64) bool + + // The higher, the better quality but the slower. Usually two figures. + Iterations int + + // Use up to 160000 or 8000 samples of the L*a*b* space (and thus calls to CheckColor). + // Set this to true only if your CheckColor shapes the Lab space weirdly. + ManySamples bool +} + +// Yeah, windows-stype Foo, FooEx, screw you golang... +// Uses K-means to cluster the color-space and return the means of the clusters +// as a new palette of distinctive colors. Falls back to K-medoid if the mean +// happens to fall outside of the color-space, which can only happen if you +// specify a CheckColor function. +func SoftPaletteEx(colorsCount int, settings SoftPaletteSettings) ([]Color, error) { + + // Checks whether it's a valid RGB and also fulfills the potentially provided constraint. + check := func(col lab_t) bool { + c := Lab(col.L, col.A, col.B) + return c.IsValid() && (settings.CheckColor == nil || settings.CheckColor(col.L, col.A, col.B)) + } + + // Sample the color space. These will be the points k-means is run on. + dl := 0.05 + dab := 0.1 + if settings.ManySamples { + dl = 0.01 + dab = 0.05 + } + + samples := make([]lab_t, 0, int(1.0/dl*2.0/dab*2.0/dab)) + for l := 0.0; l <= 1.0; l += dl { + for a := -1.0; a <= 1.0; a += dab { + for b := -1.0; b <= 1.0; b += dab { + if check(lab_t{l, a, b}) { + samples = append(samples, lab_t{l, a, b}) + } + } + } + } + + // That would cause some infinite loops down there... + if len(samples) < colorsCount { + return nil, fmt.Errorf("palettegen: more colors requested (%v) than samples available (%v). Your requested color count may be wrong, you might want to use many samples or your constraint function makes the valid color space too small", colorsCount, len(samples)) + } else if len(samples) == colorsCount { + return labs2cols(samples), nil // Oops? + } + + // We take the initial means out of the samples, so they are in fact medoids. + // This helps us avoid infinite loops or arbitrary cutoffs with too restrictive constraints. + means := make([]lab_t, colorsCount) + for i := 0; i < colorsCount; i++ { + for means[i] = samples[rand.Intn(len(samples))]; in(means, i, means[i]); means[i] = samples[rand.Intn(len(samples))] { + } + } + + clusters := make([]int, len(samples)) + samples_used := make([]bool, len(samples)) + + // The actual k-means/medoid iterations + for i := 0; i < settings.Iterations; i++ { + // Reassing the samples to clusters, i.e. to their closest mean. + // By the way, also check if any sample is used as a medoid and if so, mark that. + for isample, sample := range samples { + samples_used[isample] = false + mindist := math.Inf(+1) + for imean, mean := range means { + dist := lab_dist(sample, mean) + if dist < mindist { + mindist = dist + clusters[isample] = imean + } + + // Mark samples which are used as a medoid. + if lab_eq(sample, mean) { + samples_used[isample] = true + } + } + } + + // Compute new means according to the samples. + for imean := range means { + // The new mean is the average of all samples belonging to it.. + nsamples := 0 + newmean := lab_t{0.0, 0.0, 0.0} + for isample, sample := range samples { + if clusters[isample] == imean { + nsamples++ + newmean.L += sample.L + newmean.A += sample.A + newmean.B += sample.B + } + } + if nsamples > 0 { + newmean.L /= float64(nsamples) + newmean.A /= float64(nsamples) + newmean.B /= float64(nsamples) + } else { + // That mean doesn't have any samples? Get a new mean from the sample list! + var inewmean int + for inewmean = rand.Intn(len(samples_used)); samples_used[inewmean]; inewmean = rand.Intn(len(samples_used)) { + } + newmean = samples[inewmean] + samples_used[inewmean] = true + } + + // But now we still need to check whether the new mean is an allowed color. + if nsamples > 0 && check(newmean) { + // It does, life's good (TM) + means[imean] = newmean + } else { + // New mean isn't an allowed color or doesn't have any samples! + // Switch to medoid mode and pick the closest (unused) sample. + // This should always find something thanks to len(samples) >= colorsCount + mindist := math.Inf(+1) + for isample, sample := range samples { + if !samples_used[isample] { + dist := lab_dist(sample, newmean) + if dist < mindist { + mindist = dist + newmean = sample + } + } + } + } + } + } + return labs2cols(means), nil +} + +// A wrapper which uses common parameters. +func SoftPalette(colorsCount int) ([]Color, error) { + return SoftPaletteEx(colorsCount, SoftPaletteSettings{nil, 50, false}) +} + +func in(haystack []lab_t, upto int, needle lab_t) bool { + for i := 0; i < upto && i < len(haystack); i++ { + if haystack[i] == needle { + return true + } + } + return false +} + +const LAB_DELTA = 1e-6 + +func lab_eq(lab1, lab2 lab_t) bool { + return math.Abs(lab1.L-lab2.L) < LAB_DELTA && + math.Abs(lab1.A-lab2.A) < LAB_DELTA && + math.Abs(lab1.B-lab2.B) < LAB_DELTA +} + +// That's faster than using colorful's DistanceLab since we would have to +// convert back and forth for that. Here is no conversion. +func lab_dist(lab1, lab2 lab_t) float64 { + return math.Sqrt(sq(lab1.L-lab2.L) + sq(lab1.A-lab2.A) + sq(lab1.B-lab2.B)) +} + +func labs2cols(labs []lab_t) (cols []Color) { + cols = make([]Color, len(labs)) + for k, v := range labs { + cols[k] = Lab(v.L, v.A, v.B) + } + return cols +} diff --git a/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go new file mode 100644 index 0000000..00f42a5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/lucasb-eyer/go-colorful/warm_palettegen.go @@ -0,0 +1,25 @@ +package colorful + +import ( + "math/rand" +) + +// Uses the HSV color space to generate colors with similar S,V but distributed +// evenly along their Hue. This is fast but not always pretty. +// If you've got time to spare, use Lab (the non-fast below). +func FastWarmPalette(colorsCount int) (colors []Color) { + colors = make([]Color, colorsCount) + + for i := 0; i < colorsCount; i++ { + colors[i] = Hsv(float64(i)*(360.0/float64(colorsCount)), 0.55+rand.Float64()*0.2, 0.35+rand.Float64()*0.2) + } + return +} + +func WarmPalette(colorsCount int) ([]Color, error) { + warmy := func(l, a, b float64) bool { + _, c, _ := LabToHcl(l, a, b) + return 0.1 <= c && c <= 0.4 && 0.2 <= l && l <= 0.5 + } + return SoftPaletteEx(colorsCount, SoftPaletteSettings{warmy, 50, true}) +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/LICENSE b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/LICENSE new file mode 100644 index 0000000..65dc692 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/LICENSE @@ -0,0 +1,9 @@ +Copyright (c) Yasuhiro MATSUMOTO + +MIT License (Expat) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/README.md b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/README.md new file mode 100644 index 0000000..3841835 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/README.md @@ -0,0 +1,50 @@ +# go-isatty + +[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty) +[![Codecov](https://codecov.io/gh/mattn/go-isatty/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-isatty) +[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master) +[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty) + +isatty for golang + +## Usage + +```go +package main + +import ( + "fmt" + "github.com/mattn/go-isatty" + "os" +) + +func main() { + if isatty.IsTerminal(os.Stdout.Fd()) { + fmt.Println("Is Terminal") + } else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { + fmt.Println("Is Cygwin/MSYS2 Terminal") + } else { + fmt.Println("Is Not Terminal") + } +} +``` + +## Installation + +``` +$ go get github.com/mattn/go-isatty +``` + +## License + +MIT + +## Author + +Yasuhiro Matsumoto (a.k.a mattn) + +## Thanks + +* k-takata: base idea for IsCygwinTerminal + + https://github.com/k-takata/go-iscygpty diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/doc.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/doc.go new file mode 100644 index 0000000..17d4f90 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/doc.go @@ -0,0 +1,2 @@ +// Package isatty implements interface to isatty +package isatty diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/go.test.sh b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/go.test.sh new file mode 100644 index 0000000..012162b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/go.test.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +set -e +echo "" > coverage.txt + +for d in $(go list ./... | grep -v vendor); do + go test -race -coverprofile=profile.out -covermode=atomic "$d" + if [ -f profile.out ]; then + cat profile.out >> coverage.txt + rm profile.out + fi +done diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_bsd.go new file mode 100644 index 0000000..d0ea68f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -0,0 +1,20 @@ +//go:build (darwin || freebsd || openbsd || netbsd || dragonfly || hurd) && !appengine && !tinygo +// +build darwin freebsd openbsd netbsd dragonfly hurd +// +build !appengine +// +build !tinygo + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TIOCGETA) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_others.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_others.go new file mode 100644 index 0000000..7402e06 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -0,0 +1,17 @@ +//go:build (appengine || js || nacl || tinygo || wasm) && !windows +// +build appengine js nacl tinygo wasm +// +build !windows + +package isatty + +// IsTerminal returns true if the file descriptor is terminal which +// is always false on js and appengine classic which is a sandboxed PaaS. +func IsTerminal(fd uintptr) bool { + return false +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_plan9.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_plan9.go new file mode 100644 index 0000000..bae7f9b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_plan9.go @@ -0,0 +1,23 @@ +//go:build plan9 +// +build plan9 + +package isatty + +import ( + "syscall" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +func IsTerminal(fd uintptr) bool { + path, err := syscall.Fd2path(int(fd)) + if err != nil { + return false + } + return path == "/dev/cons" || path == "/mnt/term/dev/cons" +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_solaris.go new file mode 100644 index 0000000..0c3acf2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_solaris.go @@ -0,0 +1,21 @@ +//go:build solaris && !appengine +// +build solaris,!appengine + +package isatty + +import ( + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +// see: https://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/isatty.c +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermio(int(fd), unix.TCGETA) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_tcgets.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_tcgets.go new file mode 100644 index 0000000..0337d8c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_tcgets.go @@ -0,0 +1,20 @@ +//go:build (linux || aix || zos) && !appengine && !tinygo +// +build linux aix zos +// +build !appengine +// +build !tinygo + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_windows.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_windows.go new file mode 100644 index 0000000..8e3c991 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-isatty/isatty_windows.go @@ -0,0 +1,125 @@ +//go:build windows && !appengine +// +build windows,!appengine + +package isatty + +import ( + "errors" + "strings" + "syscall" + "unicode/utf16" + "unsafe" +) + +const ( + objectNameInfo uintptr = 1 + fileNameInfo = 2 + fileTypePipe = 3 +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + ntdll = syscall.NewLazyDLL("ntdll.dll") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procGetFileInformationByHandleEx = kernel32.NewProc("GetFileInformationByHandleEx") + procGetFileType = kernel32.NewProc("GetFileType") + procNtQueryObject = ntdll.NewProc("NtQueryObject") +) + +func init() { + // Check if GetFileInformationByHandleEx is available. + if procGetFileInformationByHandleEx.Find() != nil { + procGetFileInformationByHandleEx = nil + } +} + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +} + +// Check pipe name is used for cygwin/msys2 pty. +// Cygwin/MSYS2 PTY has a name like: +// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master +func isCygwinPipeName(name string) bool { + token := strings.Split(name, "-") + if len(token) < 5 { + return false + } + + if token[0] != `\msys` && + token[0] != `\cygwin` && + token[0] != `\Device\NamedPipe\msys` && + token[0] != `\Device\NamedPipe\cygwin` { + return false + } + + if token[1] == "" { + return false + } + + if !strings.HasPrefix(token[2], "pty") { + return false + } + + if token[3] != `from` && token[3] != `to` { + return false + } + + if token[4] != "master" { + return false + } + + return true +} + +// getFileNameByHandle use the undocomented ntdll NtQueryObject to get file full name from file handler +// since GetFileInformationByHandleEx is not available under windows Vista and still some old fashion +// guys are using Windows XP, this is a workaround for those guys, it will also work on system from +// Windows vista to 10 +// see https://stackoverflow.com/a/18792477 for details +func getFileNameByHandle(fd uintptr) (string, error) { + if procNtQueryObject == nil { + return "", errors.New("ntdll.dll: NtQueryObject not supported") + } + + var buf [4 + syscall.MAX_PATH]uint16 + var result int + r, _, e := syscall.Syscall6(procNtQueryObject.Addr(), 5, + fd, objectNameInfo, uintptr(unsafe.Pointer(&buf)), uintptr(2*len(buf)), uintptr(unsafe.Pointer(&result)), 0) + if r != 0 { + return "", e + } + return string(utf16.Decode(buf[4 : 4+buf[0]/2])), nil +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. +func IsCygwinTerminal(fd uintptr) bool { + if procGetFileInformationByHandleEx == nil { + name, err := getFileNameByHandle(fd) + if err != nil { + return false + } + return isCygwinPipeName(name) + } + + // Cygwin/msys's pty is a pipe. + ft, _, e := syscall.Syscall(procGetFileType.Addr(), 1, fd, 0, 0) + if ft != fileTypePipe || e != 0 { + return false + } + + var buf [2 + syscall.MAX_PATH]uint16 + r, _, e := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), + 4, fd, fileNameInfo, uintptr(unsafe.Pointer(&buf)), + uintptr(len(buf)*2), 0, 0) + if r == 0 || e != 0 { + return false + } + + l := *(*uint32)(unsafe.Pointer(&buf)) + return isCygwinPipeName(string(utf16.Decode(buf[2 : 2+l/2]))) +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/README.md b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/README.md new file mode 100644 index 0000000..9e10953 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/README.md @@ -0,0 +1,23 @@ +# go-localereader + +CodePage decoder for Windows + +## Usage + +``` +io.Copy(os.Stdout, localereader.NewAcpReader(bytes.Reader(bytesSjis))) +``` + +## Installation + +``` +$ go get github.com/mattn/go-localereader +``` + +## License + +MIT + +## Author + +Yasuhiro Matsumoto (a.k.a. mattn) diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader.go new file mode 100644 index 0000000..47a3137 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader.go @@ -0,0 +1,19 @@ +package localereader + +import ( + "bytes" + "io" +) + +func NewReader(r io.Reader) io.Reader { + return newReader(r) +} + +func UTF8(b []byte) ([]byte, error) { + var buf bytes.Buffer + n, err := io.Copy(&buf, newReader(bytes.NewReader(b))) + if err != nil { + return nil, err + } + return buf.Bytes()[:n], nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_unix.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_unix.go new file mode 100644 index 0000000..d85e12e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_unix.go @@ -0,0 +1,11 @@ +// +build !windows + +package localereader + +import ( + "io" +) + +func newReader(r io.Reader) io.Reader { + return r +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_windows.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_windows.go new file mode 100644 index 0000000..57c238f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-localereader/localereader_windows.go @@ -0,0 +1,85 @@ +// +build windows + +package localereader + +import ( + "io" + "syscall" + "unicode/utf8" + "unsafe" + + "golang.org/x/text/transform" +) + +const ( + CP_ACP = 0 + MB_ERR_INVALID_CHARS = 8 +) + +var ( + modkernel32 = syscall.NewLazyDLL("kernel32.dll") + procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") + procIsDBCSLeadByte = modkernel32.NewProc("IsDBCSLeadByte") +) + +type codepageDecoder struct { + transform.NopResetter + + cp int +} + +func (codepageDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + r, size := rune(0), 0 +loop: + for ; nSrc < len(src); nSrc += size { + switch c0 := src[nSrc]; { + case c0 < utf8.RuneSelf: + r, size = rune(c0), 1 + + default: + br, _, _ := procIsDBCSLeadByte.Call(uintptr(src[nSrc])) + if br == 0 { + r = rune(src[nSrc]) + size = 1 + break + } + if nSrc >= len(src)-1 { + r = rune(src[nSrc]) + size = 1 + break + } + n, _, _ := procMultiByteToWideChar.Call(CP_ACP, 0, uintptr(unsafe.Pointer(&src[nSrc])), uintptr(2), uintptr(0), 0) + if n <= 0 { + err = syscall.GetLastError() + break + } + var us [1]uint16 + rc, _, _ := procMultiByteToWideChar.Call(CP_ACP, 0, uintptr(unsafe.Pointer(&src[nSrc])), uintptr(2), uintptr(unsafe.Pointer(&us[0])), 1) + if rc == 0 { + size = 1 + break + } + r = rune(us[0]) + size = 2 + } + if nDst+utf8.RuneLen(r) > len(dst) { + err = transform.ErrShortDst + break loop + } + nDst += utf8.EncodeRune(dst[nDst:], r) + } + return nDst, nSrc, err + +} + +func newReader(r io.Reader) io.Reader { + return transform.NewReader(r, NewAcpDecoder()) +} + +func NewCodePageDecoder(cp int) transform.Transformer { + return &codepageDecoder{cp: cp} +} + +func NewAcpDecoder() transform.Transformer { + return &codepageDecoder{cp: CP_ACP} +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/LICENSE b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/LICENSE new file mode 100644 index 0000000..91b5cef --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Yasuhiro Matsumoto + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/README.md b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/README.md new file mode 100644 index 0000000..5e2cfd9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/README.md @@ -0,0 +1,27 @@ +go-runewidth +============ + +[![Build Status](https://github.com/mattn/go-runewidth/workflows/test/badge.svg?branch=master)](https://github.com/mattn/go-runewidth/actions?query=workflow%3Atest) +[![Codecov](https://codecov.io/gh/mattn/go-runewidth/branch/master/graph/badge.svg)](https://codecov.io/gh/mattn/go-runewidth) +[![GoDoc](https://godoc.org/github.com/mattn/go-runewidth?status.svg)](http://godoc.org/github.com/mattn/go-runewidth) +[![Go Report Card](https://goreportcard.com/badge/github.com/mattn/go-runewidth)](https://goreportcard.com/report/github.com/mattn/go-runewidth) + +Provides functions to get fixed width of the character or string. + +Usage +----- + +```go +runewidth.StringWidth("つのだ☆HIRO") == 12 +``` + + +Author +------ + +Yasuhiro Matsumoto + +License +------- + +under the MIT License: http://mattn.mit-license.org/2013 diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth.go new file mode 100644 index 0000000..7dfbb3b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth.go @@ -0,0 +1,358 @@ +package runewidth + +import ( + "os" + "strings" + + "github.com/rivo/uniseg" +) + +//go:generate go run script/generate.go + +var ( + // EastAsianWidth will be set true if the current locale is CJK + EastAsianWidth bool + + // StrictEmojiNeutral should be set false if handle broken fonts + StrictEmojiNeutral bool = true + + // DefaultCondition is a condition in current locale + DefaultCondition = &Condition{ + EastAsianWidth: false, + StrictEmojiNeutral: true, + } +) + +func init() { + handleEnv() +} + +func handleEnv() { + env := os.Getenv("RUNEWIDTH_EASTASIAN") + if env == "" { + EastAsianWidth = IsEastAsian() + } else { + EastAsianWidth = env == "1" + } + // update DefaultCondition + if DefaultCondition.EastAsianWidth != EastAsianWidth { + DefaultCondition.EastAsianWidth = EastAsianWidth + if len(DefaultCondition.combinedLut) > 0 { + DefaultCondition.combinedLut = DefaultCondition.combinedLut[:0] + CreateLUT() + } + } +} + +type interval struct { + first rune + last rune +} + +type table []interval + +func inTables(r rune, ts ...table) bool { + for _, t := range ts { + if inTable(r, t) { + return true + } + } + return false +} + +func inTable(r rune, t table) bool { + if r < t[0].first { + return false + } + + bot := 0 + top := len(t) - 1 + for top >= bot { + mid := (bot + top) >> 1 + + switch { + case t[mid].last < r: + bot = mid + 1 + case t[mid].first > r: + top = mid - 1 + default: + return true + } + } + + return false +} + +var private = table{ + {0x00E000, 0x00F8FF}, {0x0F0000, 0x0FFFFD}, {0x100000, 0x10FFFD}, +} + +var nonprint = table{ + {0x0000, 0x001F}, {0x007F, 0x009F}, {0x00AD, 0x00AD}, + {0x070F, 0x070F}, {0x180B, 0x180E}, {0x200B, 0x200F}, + {0x2028, 0x202E}, {0x206A, 0x206F}, {0xD800, 0xDFFF}, + {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFB}, {0xFFFE, 0xFFFF}, +} + +// Condition have flag EastAsianWidth whether the current locale is CJK or not. +type Condition struct { + combinedLut []byte + EastAsianWidth bool + StrictEmojiNeutral bool +} + +// NewCondition return new instance of Condition which is current locale. +func NewCondition() *Condition { + return &Condition{ + EastAsianWidth: EastAsianWidth, + StrictEmojiNeutral: StrictEmojiNeutral, + } +} + +// RuneWidth returns the number of cells in r. +// See http://www.unicode.org/reports/tr11/ +func (c *Condition) RuneWidth(r rune) int { + if r < 0 || r > 0x10FFFF { + return 0 + } + if len(c.combinedLut) > 0 { + return int(c.combinedLut[r>>1]>>(uint(r&1)*4)) & 3 + } + // optimized version, verified by TestRuneWidthChecksums() + if !c.EastAsianWidth { + switch { + case r < 0x20: + return 0 + case (r >= 0x7F && r <= 0x9F) || r == 0xAD: // nonprint + return 0 + case r < 0x300: + return 1 + case inTable(r, narrow): + return 1 + case inTables(r, nonprint, combining): + return 0 + case inTable(r, doublewidth): + return 2 + default: + return 1 + } + } else { + switch { + case inTables(r, nonprint, combining): + return 0 + case inTable(r, narrow): + return 1 + case inTables(r, ambiguous, doublewidth): + return 2 + case !c.StrictEmojiNeutral && inTables(r, ambiguous, emoji, narrow): + return 2 + default: + return 1 + } + } +} + +// CreateLUT will create an in-memory lookup table of 557056 bytes for faster operation. +// This should not be called concurrently with other operations on c. +// If options in c is changed, CreateLUT should be called again. +func (c *Condition) CreateLUT() { + const max = 0x110000 + lut := c.combinedLut + if len(c.combinedLut) != 0 { + // Remove so we don't use it. + c.combinedLut = nil + } else { + lut = make([]byte, max/2) + } + for i := range lut { + i32 := int32(i * 2) + x0 := c.RuneWidth(i32) + x1 := c.RuneWidth(i32 + 1) + lut[i] = uint8(x0) | uint8(x1)<<4 + } + c.combinedLut = lut +} + +// StringWidth return width as you can see +func (c *Condition) StringWidth(s string) (width int) { + g := uniseg.NewGraphemes(s) + for g.Next() { + var chWidth int + for _, r := range g.Runes() { + chWidth = c.RuneWidth(r) + if chWidth > 0 { + break // Our best guess at this point is to use the width of the first non-zero-width rune. + } + } + width += chWidth + } + return +} + +// Truncate return string truncated with w cells +func (c *Condition) Truncate(s string, w int, tail string) string { + if c.StringWidth(s) <= w { + return s + } + w -= c.StringWidth(tail) + var width int + pos := len(s) + g := uniseg.NewGraphemes(s) + for g.Next() { + var chWidth int + for _, r := range g.Runes() { + chWidth = c.RuneWidth(r) + if chWidth > 0 { + break // See StringWidth() for details. + } + } + if width+chWidth > w { + pos, _ = g.Positions() + break + } + width += chWidth + } + return s[:pos] + tail +} + +// TruncateLeft cuts w cells from the beginning of the `s`. +func (c *Condition) TruncateLeft(s string, w int, prefix string) string { + if c.StringWidth(s) <= w { + return prefix + } + + var width int + pos := len(s) + + g := uniseg.NewGraphemes(s) + for g.Next() { + var chWidth int + for _, r := range g.Runes() { + chWidth = c.RuneWidth(r) + if chWidth > 0 { + break // See StringWidth() for details. + } + } + + if width+chWidth > w { + if width < w { + _, pos = g.Positions() + prefix += strings.Repeat(" ", width+chWidth-w) + } else { + pos, _ = g.Positions() + } + + break + } + + width += chWidth + } + + return prefix + s[pos:] +} + +// Wrap return string wrapped with w cells +func (c *Condition) Wrap(s string, w int) string { + width := 0 + out := "" + for _, r := range s { + cw := c.RuneWidth(r) + if r == '\n' { + out += string(r) + width = 0 + continue + } else if width+cw > w { + out += "\n" + width = 0 + out += string(r) + width += cw + continue + } + out += string(r) + width += cw + } + return out +} + +// FillLeft return string filled in left by spaces in w cells +func (c *Condition) FillLeft(s string, w int) string { + width := c.StringWidth(s) + count := w - width + if count > 0 { + b := make([]byte, count) + for i := range b { + b[i] = ' ' + } + return string(b) + s + } + return s +} + +// FillRight return string filled in left by spaces in w cells +func (c *Condition) FillRight(s string, w int) string { + width := c.StringWidth(s) + count := w - width + if count > 0 { + b := make([]byte, count) + for i := range b { + b[i] = ' ' + } + return s + string(b) + } + return s +} + +// RuneWidth returns the number of cells in r. +// See http://www.unicode.org/reports/tr11/ +func RuneWidth(r rune) int { + return DefaultCondition.RuneWidth(r) +} + +// IsAmbiguousWidth returns whether is ambiguous width or not. +func IsAmbiguousWidth(r rune) bool { + return inTables(r, private, ambiguous) +} + +// IsNeutralWidth returns whether is neutral width or not. +func IsNeutralWidth(r rune) bool { + return inTable(r, neutral) +} + +// StringWidth return width as you can see +func StringWidth(s string) (width int) { + return DefaultCondition.StringWidth(s) +} + +// Truncate return string truncated with w cells +func Truncate(s string, w int, tail string) string { + return DefaultCondition.Truncate(s, w, tail) +} + +// TruncateLeft cuts w cells from the beginning of the `s`. +func TruncateLeft(s string, w int, prefix string) string { + return DefaultCondition.TruncateLeft(s, w, prefix) +} + +// Wrap return string wrapped with w cells +func Wrap(s string, w int) string { + return DefaultCondition.Wrap(s, w) +} + +// FillLeft return string filled in left by spaces in w cells +func FillLeft(s string, w int) string { + return DefaultCondition.FillLeft(s, w) +} + +// FillRight return string filled in left by spaces in w cells +func FillRight(s string, w int) string { + return DefaultCondition.FillRight(s, w) +} + +// CreateLUT will create an in-memory lookup table of 557055 bytes for faster operation. +// This should not be called concurrently with other operations. +func CreateLUT() { + if len(DefaultCondition.combinedLut) > 0 { + return + } + DefaultCondition.CreateLUT() +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go new file mode 100644 index 0000000..84b6528 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go @@ -0,0 +1,9 @@ +//go:build appengine +// +build appengine + +package runewidth + +// IsEastAsian return true if the current locale is CJK +func IsEastAsian() bool { + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_js.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_js.go new file mode 100644 index 0000000..c2abbc2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_js.go @@ -0,0 +1,9 @@ +//go:build js && !appengine +// +build js,!appengine + +package runewidth + +func IsEastAsian() bool { + // TODO: Implement this for the web. Detect east asian in a compatible way, and return true. + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_posix.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_posix.go new file mode 100644 index 0000000..5a31d73 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_posix.go @@ -0,0 +1,81 @@ +//go:build !windows && !js && !appengine +// +build !windows,!js,!appengine + +package runewidth + +import ( + "os" + "regexp" + "strings" +) + +var reLoc = regexp.MustCompile(`^[a-z][a-z][a-z]?(?:_[A-Z][A-Z])?\.(.+)`) + +var mblenTable = map[string]int{ + "utf-8": 6, + "utf8": 6, + "jis": 8, + "eucjp": 3, + "euckr": 2, + "euccn": 2, + "sjis": 2, + "cp932": 2, + "cp51932": 2, + "cp936": 2, + "cp949": 2, + "cp950": 2, + "big5": 2, + "gbk": 2, + "gb2312": 2, +} + +func isEastAsian(locale string) bool { + charset := strings.ToLower(locale) + r := reLoc.FindStringSubmatch(locale) + if len(r) == 2 { + charset = strings.ToLower(r[1]) + } + + if strings.HasSuffix(charset, "@cjk_narrow") { + return false + } + + for pos, b := range []byte(charset) { + if b == '@' { + charset = charset[:pos] + break + } + } + max := 1 + if m, ok := mblenTable[charset]; ok { + max = m + } + if max > 1 && (charset[0] != 'u' || + strings.HasPrefix(locale, "ja") || + strings.HasPrefix(locale, "ko") || + strings.HasPrefix(locale, "zh")) { + return true + } + return false +} + +// IsEastAsian return true if the current locale is CJK +func IsEastAsian() bool { + locale := os.Getenv("LC_ALL") + if locale == "" { + locale = os.Getenv("LC_CTYPE") + } + if locale == "" { + locale = os.Getenv("LANG") + } + + // ignore C locale + if locale == "POSIX" || locale == "C" { + return false + } + if len(locale) > 1 && locale[0] == 'C' && (locale[1] == '.' || locale[1] == '-') { + return false + } + + return isEastAsian(locale) +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_table.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_table.go new file mode 100644 index 0000000..ad025ad --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_table.go @@ -0,0 +1,450 @@ +// Code generated by script/generate.go. DO NOT EDIT. + +package runewidth + +var combining = table{ + {0x0300, 0x036F}, {0x0483, 0x0489}, {0x07EB, 0x07F3}, + {0x0C00, 0x0C00}, {0x0C04, 0x0C04}, {0x0CF3, 0x0CF3}, + {0x0D00, 0x0D01}, {0x135D, 0x135F}, {0x1A7F, 0x1A7F}, + {0x1AB0, 0x1ACE}, {0x1B6B, 0x1B73}, {0x1DC0, 0x1DFF}, + {0x20D0, 0x20F0}, {0x2CEF, 0x2CF1}, {0x2DE0, 0x2DFF}, + {0x3099, 0x309A}, {0xA66F, 0xA672}, {0xA674, 0xA67D}, + {0xA69E, 0xA69F}, {0xA6F0, 0xA6F1}, {0xA8E0, 0xA8F1}, + {0xFE20, 0xFE2F}, {0x101FD, 0x101FD}, {0x10376, 0x1037A}, + {0x10EAB, 0x10EAC}, {0x10F46, 0x10F50}, {0x10F82, 0x10F85}, + {0x11300, 0x11301}, {0x1133B, 0x1133C}, {0x11366, 0x1136C}, + {0x11370, 0x11374}, {0x16AF0, 0x16AF4}, {0x1CF00, 0x1CF2D}, + {0x1CF30, 0x1CF46}, {0x1D165, 0x1D169}, {0x1D16D, 0x1D172}, + {0x1D17B, 0x1D182}, {0x1D185, 0x1D18B}, {0x1D1AA, 0x1D1AD}, + {0x1D242, 0x1D244}, {0x1E000, 0x1E006}, {0x1E008, 0x1E018}, + {0x1E01B, 0x1E021}, {0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, + {0x1E08F, 0x1E08F}, {0x1E8D0, 0x1E8D6}, +} + +var doublewidth = table{ + {0x1100, 0x115F}, {0x231A, 0x231B}, {0x2329, 0x232A}, + {0x23E9, 0x23EC}, {0x23F0, 0x23F0}, {0x23F3, 0x23F3}, + {0x25FD, 0x25FE}, {0x2614, 0x2615}, {0x2648, 0x2653}, + {0x267F, 0x267F}, {0x2693, 0x2693}, {0x26A1, 0x26A1}, + {0x26AA, 0x26AB}, {0x26BD, 0x26BE}, {0x26C4, 0x26C5}, + {0x26CE, 0x26CE}, {0x26D4, 0x26D4}, {0x26EA, 0x26EA}, + {0x26F2, 0x26F3}, {0x26F5, 0x26F5}, {0x26FA, 0x26FA}, + {0x26FD, 0x26FD}, {0x2705, 0x2705}, {0x270A, 0x270B}, + {0x2728, 0x2728}, {0x274C, 0x274C}, {0x274E, 0x274E}, + {0x2753, 0x2755}, {0x2757, 0x2757}, {0x2795, 0x2797}, + {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, {0x2B1B, 0x2B1C}, + {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x2E80, 0x2E99}, + {0x2E9B, 0x2EF3}, {0x2F00, 0x2FD5}, {0x2FF0, 0x303E}, + {0x3041, 0x3096}, {0x3099, 0x30FF}, {0x3105, 0x312F}, + {0x3131, 0x318E}, {0x3190, 0x31E3}, {0x31EF, 0x321E}, + {0x3220, 0x3247}, {0x3250, 0x4DBF}, {0x4E00, 0xA48C}, + {0xA490, 0xA4C6}, {0xA960, 0xA97C}, {0xAC00, 0xD7A3}, + {0xF900, 0xFAFF}, {0xFE10, 0xFE19}, {0xFE30, 0xFE52}, + {0xFE54, 0xFE66}, {0xFE68, 0xFE6B}, {0xFF01, 0xFF60}, + {0xFFE0, 0xFFE6}, {0x16FE0, 0x16FE4}, {0x16FF0, 0x16FF1}, + {0x17000, 0x187F7}, {0x18800, 0x18CD5}, {0x18D00, 0x18D08}, + {0x1AFF0, 0x1AFF3}, {0x1AFF5, 0x1AFFB}, {0x1AFFD, 0x1AFFE}, + {0x1B000, 0x1B122}, {0x1B132, 0x1B132}, {0x1B150, 0x1B152}, + {0x1B155, 0x1B155}, {0x1B164, 0x1B167}, {0x1B170, 0x1B2FB}, + {0x1F004, 0x1F004}, {0x1F0CF, 0x1F0CF}, {0x1F18E, 0x1F18E}, + {0x1F191, 0x1F19A}, {0x1F200, 0x1F202}, {0x1F210, 0x1F23B}, + {0x1F240, 0x1F248}, {0x1F250, 0x1F251}, {0x1F260, 0x1F265}, + {0x1F300, 0x1F320}, {0x1F32D, 0x1F335}, {0x1F337, 0x1F37C}, + {0x1F37E, 0x1F393}, {0x1F3A0, 0x1F3CA}, {0x1F3CF, 0x1F3D3}, + {0x1F3E0, 0x1F3F0}, {0x1F3F4, 0x1F3F4}, {0x1F3F8, 0x1F43E}, + {0x1F440, 0x1F440}, {0x1F442, 0x1F4FC}, {0x1F4FF, 0x1F53D}, + {0x1F54B, 0x1F54E}, {0x1F550, 0x1F567}, {0x1F57A, 0x1F57A}, + {0x1F595, 0x1F596}, {0x1F5A4, 0x1F5A4}, {0x1F5FB, 0x1F64F}, + {0x1F680, 0x1F6C5}, {0x1F6CC, 0x1F6CC}, {0x1F6D0, 0x1F6D2}, + {0x1F6D5, 0x1F6D7}, {0x1F6DC, 0x1F6DF}, {0x1F6EB, 0x1F6EC}, + {0x1F6F4, 0x1F6FC}, {0x1F7E0, 0x1F7EB}, {0x1F7F0, 0x1F7F0}, + {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1F9FF}, + {0x1FA70, 0x1FA7C}, {0x1FA80, 0x1FA88}, {0x1FA90, 0x1FABD}, + {0x1FABF, 0x1FAC5}, {0x1FACE, 0x1FADB}, {0x1FAE0, 0x1FAE8}, + {0x1FAF0, 0x1FAF8}, {0x20000, 0x2FFFD}, {0x30000, 0x3FFFD}, +} + +var ambiguous = table{ + {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8}, + {0x00AA, 0x00AA}, {0x00AD, 0x00AE}, {0x00B0, 0x00B4}, + {0x00B6, 0x00BA}, {0x00BC, 0x00BF}, {0x00C6, 0x00C6}, + {0x00D0, 0x00D0}, {0x00D7, 0x00D8}, {0x00DE, 0x00E1}, + {0x00E6, 0x00E6}, {0x00E8, 0x00EA}, {0x00EC, 0x00ED}, + {0x00F0, 0x00F0}, {0x00F2, 0x00F3}, {0x00F7, 0x00FA}, + {0x00FC, 0x00FC}, {0x00FE, 0x00FE}, {0x0101, 0x0101}, + {0x0111, 0x0111}, {0x0113, 0x0113}, {0x011B, 0x011B}, + {0x0126, 0x0127}, {0x012B, 0x012B}, {0x0131, 0x0133}, + {0x0138, 0x0138}, {0x013F, 0x0142}, {0x0144, 0x0144}, + {0x0148, 0x014B}, {0x014D, 0x014D}, {0x0152, 0x0153}, + {0x0166, 0x0167}, {0x016B, 0x016B}, {0x01CE, 0x01CE}, + {0x01D0, 0x01D0}, {0x01D2, 0x01D2}, {0x01D4, 0x01D4}, + {0x01D6, 0x01D6}, {0x01D8, 0x01D8}, {0x01DA, 0x01DA}, + {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261}, + {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB}, + {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB}, + {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0300, 0x036F}, + {0x0391, 0x03A1}, {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, + {0x03C3, 0x03C9}, {0x0401, 0x0401}, {0x0410, 0x044F}, + {0x0451, 0x0451}, {0x2010, 0x2010}, {0x2013, 0x2016}, + {0x2018, 0x2019}, {0x201C, 0x201D}, {0x2020, 0x2022}, + {0x2024, 0x2027}, {0x2030, 0x2030}, {0x2032, 0x2033}, + {0x2035, 0x2035}, {0x203B, 0x203B}, {0x203E, 0x203E}, + {0x2074, 0x2074}, {0x207F, 0x207F}, {0x2081, 0x2084}, + {0x20AC, 0x20AC}, {0x2103, 0x2103}, {0x2105, 0x2105}, + {0x2109, 0x2109}, {0x2113, 0x2113}, {0x2116, 0x2116}, + {0x2121, 0x2122}, {0x2126, 0x2126}, {0x212B, 0x212B}, + {0x2153, 0x2154}, {0x215B, 0x215E}, {0x2160, 0x216B}, + {0x2170, 0x2179}, {0x2189, 0x2189}, {0x2190, 0x2199}, + {0x21B8, 0x21B9}, {0x21D2, 0x21D2}, {0x21D4, 0x21D4}, + {0x21E7, 0x21E7}, {0x2200, 0x2200}, {0x2202, 0x2203}, + {0x2207, 0x2208}, {0x220B, 0x220B}, {0x220F, 0x220F}, + {0x2211, 0x2211}, {0x2215, 0x2215}, {0x221A, 0x221A}, + {0x221D, 0x2220}, {0x2223, 0x2223}, {0x2225, 0x2225}, + {0x2227, 0x222C}, {0x222E, 0x222E}, {0x2234, 0x2237}, + {0x223C, 0x223D}, {0x2248, 0x2248}, {0x224C, 0x224C}, + {0x2252, 0x2252}, {0x2260, 0x2261}, {0x2264, 0x2267}, + {0x226A, 0x226B}, {0x226E, 0x226F}, {0x2282, 0x2283}, + {0x2286, 0x2287}, {0x2295, 0x2295}, {0x2299, 0x2299}, + {0x22A5, 0x22A5}, {0x22BF, 0x22BF}, {0x2312, 0x2312}, + {0x2460, 0x24E9}, {0x24EB, 0x254B}, {0x2550, 0x2573}, + {0x2580, 0x258F}, {0x2592, 0x2595}, {0x25A0, 0x25A1}, + {0x25A3, 0x25A9}, {0x25B2, 0x25B3}, {0x25B6, 0x25B7}, + {0x25BC, 0x25BD}, {0x25C0, 0x25C1}, {0x25C6, 0x25C8}, + {0x25CB, 0x25CB}, {0x25CE, 0x25D1}, {0x25E2, 0x25E5}, + {0x25EF, 0x25EF}, {0x2605, 0x2606}, {0x2609, 0x2609}, + {0x260E, 0x260F}, {0x261C, 0x261C}, {0x261E, 0x261E}, + {0x2640, 0x2640}, {0x2642, 0x2642}, {0x2660, 0x2661}, + {0x2663, 0x2665}, {0x2667, 0x266A}, {0x266C, 0x266D}, + {0x266F, 0x266F}, {0x269E, 0x269F}, {0x26BF, 0x26BF}, + {0x26C6, 0x26CD}, {0x26CF, 0x26D3}, {0x26D5, 0x26E1}, + {0x26E3, 0x26E3}, {0x26E8, 0x26E9}, {0x26EB, 0x26F1}, + {0x26F4, 0x26F4}, {0x26F6, 0x26F9}, {0x26FB, 0x26FC}, + {0x26FE, 0x26FF}, {0x273D, 0x273D}, {0x2776, 0x277F}, + {0x2B56, 0x2B59}, {0x3248, 0x324F}, {0xE000, 0xF8FF}, + {0xFE00, 0xFE0F}, {0xFFFD, 0xFFFD}, {0x1F100, 0x1F10A}, + {0x1F110, 0x1F12D}, {0x1F130, 0x1F169}, {0x1F170, 0x1F18D}, + {0x1F18F, 0x1F190}, {0x1F19B, 0x1F1AC}, {0xE0100, 0xE01EF}, + {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD}, +} +var narrow = table{ + {0x0020, 0x007E}, {0x00A2, 0x00A3}, {0x00A5, 0x00A6}, + {0x00AC, 0x00AC}, {0x00AF, 0x00AF}, {0x27E6, 0x27ED}, + {0x2985, 0x2986}, +} + +var neutral = table{ + {0x0000, 0x001F}, {0x007F, 0x00A0}, {0x00A9, 0x00A9}, + {0x00AB, 0x00AB}, {0x00B5, 0x00B5}, {0x00BB, 0x00BB}, + {0x00C0, 0x00C5}, {0x00C7, 0x00CF}, {0x00D1, 0x00D6}, + {0x00D9, 0x00DD}, {0x00E2, 0x00E5}, {0x00E7, 0x00E7}, + {0x00EB, 0x00EB}, {0x00EE, 0x00EF}, {0x00F1, 0x00F1}, + {0x00F4, 0x00F6}, {0x00FB, 0x00FB}, {0x00FD, 0x00FD}, + {0x00FF, 0x0100}, {0x0102, 0x0110}, {0x0112, 0x0112}, + {0x0114, 0x011A}, {0x011C, 0x0125}, {0x0128, 0x012A}, + {0x012C, 0x0130}, {0x0134, 0x0137}, {0x0139, 0x013E}, + {0x0143, 0x0143}, {0x0145, 0x0147}, {0x014C, 0x014C}, + {0x014E, 0x0151}, {0x0154, 0x0165}, {0x0168, 0x016A}, + {0x016C, 0x01CD}, {0x01CF, 0x01CF}, {0x01D1, 0x01D1}, + {0x01D3, 0x01D3}, {0x01D5, 0x01D5}, {0x01D7, 0x01D7}, + {0x01D9, 0x01D9}, {0x01DB, 0x01DB}, {0x01DD, 0x0250}, + {0x0252, 0x0260}, {0x0262, 0x02C3}, {0x02C5, 0x02C6}, + {0x02C8, 0x02C8}, {0x02CC, 0x02CC}, {0x02CE, 0x02CF}, + {0x02D1, 0x02D7}, {0x02DC, 0x02DC}, {0x02DE, 0x02DE}, + {0x02E0, 0x02FF}, {0x0370, 0x0377}, {0x037A, 0x037F}, + {0x0384, 0x038A}, {0x038C, 0x038C}, {0x038E, 0x0390}, + {0x03AA, 0x03B0}, {0x03C2, 0x03C2}, {0x03CA, 0x0400}, + {0x0402, 0x040F}, {0x0450, 0x0450}, {0x0452, 0x052F}, + {0x0531, 0x0556}, {0x0559, 0x058A}, {0x058D, 0x058F}, + {0x0591, 0x05C7}, {0x05D0, 0x05EA}, {0x05EF, 0x05F4}, + {0x0600, 0x070D}, {0x070F, 0x074A}, {0x074D, 0x07B1}, + {0x07C0, 0x07FA}, {0x07FD, 0x082D}, {0x0830, 0x083E}, + {0x0840, 0x085B}, {0x085E, 0x085E}, {0x0860, 0x086A}, + {0x0870, 0x088E}, {0x0890, 0x0891}, {0x0898, 0x0983}, + {0x0985, 0x098C}, {0x098F, 0x0990}, {0x0993, 0x09A8}, + {0x09AA, 0x09B0}, {0x09B2, 0x09B2}, {0x09B6, 0x09B9}, + {0x09BC, 0x09C4}, {0x09C7, 0x09C8}, {0x09CB, 0x09CE}, + {0x09D7, 0x09D7}, {0x09DC, 0x09DD}, {0x09DF, 0x09E3}, + {0x09E6, 0x09FE}, {0x0A01, 0x0A03}, {0x0A05, 0x0A0A}, + {0x0A0F, 0x0A10}, {0x0A13, 0x0A28}, {0x0A2A, 0x0A30}, + {0x0A32, 0x0A33}, {0x0A35, 0x0A36}, {0x0A38, 0x0A39}, + {0x0A3C, 0x0A3C}, {0x0A3E, 0x0A42}, {0x0A47, 0x0A48}, + {0x0A4B, 0x0A4D}, {0x0A51, 0x0A51}, {0x0A59, 0x0A5C}, + {0x0A5E, 0x0A5E}, {0x0A66, 0x0A76}, {0x0A81, 0x0A83}, + {0x0A85, 0x0A8D}, {0x0A8F, 0x0A91}, {0x0A93, 0x0AA8}, + {0x0AAA, 0x0AB0}, {0x0AB2, 0x0AB3}, {0x0AB5, 0x0AB9}, + {0x0ABC, 0x0AC5}, {0x0AC7, 0x0AC9}, {0x0ACB, 0x0ACD}, + {0x0AD0, 0x0AD0}, {0x0AE0, 0x0AE3}, {0x0AE6, 0x0AF1}, + {0x0AF9, 0x0AFF}, {0x0B01, 0x0B03}, {0x0B05, 0x0B0C}, + {0x0B0F, 0x0B10}, {0x0B13, 0x0B28}, {0x0B2A, 0x0B30}, + {0x0B32, 0x0B33}, {0x0B35, 0x0B39}, {0x0B3C, 0x0B44}, + {0x0B47, 0x0B48}, {0x0B4B, 0x0B4D}, {0x0B55, 0x0B57}, + {0x0B5C, 0x0B5D}, {0x0B5F, 0x0B63}, {0x0B66, 0x0B77}, + {0x0B82, 0x0B83}, {0x0B85, 0x0B8A}, {0x0B8E, 0x0B90}, + {0x0B92, 0x0B95}, {0x0B99, 0x0B9A}, {0x0B9C, 0x0B9C}, + {0x0B9E, 0x0B9F}, {0x0BA3, 0x0BA4}, {0x0BA8, 0x0BAA}, + {0x0BAE, 0x0BB9}, {0x0BBE, 0x0BC2}, {0x0BC6, 0x0BC8}, + {0x0BCA, 0x0BCD}, {0x0BD0, 0x0BD0}, {0x0BD7, 0x0BD7}, + {0x0BE6, 0x0BFA}, {0x0C00, 0x0C0C}, {0x0C0E, 0x0C10}, + {0x0C12, 0x0C28}, {0x0C2A, 0x0C39}, {0x0C3C, 0x0C44}, + {0x0C46, 0x0C48}, {0x0C4A, 0x0C4D}, {0x0C55, 0x0C56}, + {0x0C58, 0x0C5A}, {0x0C5D, 0x0C5D}, {0x0C60, 0x0C63}, + {0x0C66, 0x0C6F}, {0x0C77, 0x0C8C}, {0x0C8E, 0x0C90}, + {0x0C92, 0x0CA8}, {0x0CAA, 0x0CB3}, {0x0CB5, 0x0CB9}, + {0x0CBC, 0x0CC4}, {0x0CC6, 0x0CC8}, {0x0CCA, 0x0CCD}, + {0x0CD5, 0x0CD6}, {0x0CDD, 0x0CDE}, {0x0CE0, 0x0CE3}, + {0x0CE6, 0x0CEF}, {0x0CF1, 0x0CF3}, {0x0D00, 0x0D0C}, + {0x0D0E, 0x0D10}, {0x0D12, 0x0D44}, {0x0D46, 0x0D48}, + {0x0D4A, 0x0D4F}, {0x0D54, 0x0D63}, {0x0D66, 0x0D7F}, + {0x0D81, 0x0D83}, {0x0D85, 0x0D96}, {0x0D9A, 0x0DB1}, + {0x0DB3, 0x0DBB}, {0x0DBD, 0x0DBD}, {0x0DC0, 0x0DC6}, + {0x0DCA, 0x0DCA}, {0x0DCF, 0x0DD4}, {0x0DD6, 0x0DD6}, + {0x0DD8, 0x0DDF}, {0x0DE6, 0x0DEF}, {0x0DF2, 0x0DF4}, + {0x0E01, 0x0E3A}, {0x0E3F, 0x0E5B}, {0x0E81, 0x0E82}, + {0x0E84, 0x0E84}, {0x0E86, 0x0E8A}, {0x0E8C, 0x0EA3}, + {0x0EA5, 0x0EA5}, {0x0EA7, 0x0EBD}, {0x0EC0, 0x0EC4}, + {0x0EC6, 0x0EC6}, {0x0EC8, 0x0ECE}, {0x0ED0, 0x0ED9}, + {0x0EDC, 0x0EDF}, {0x0F00, 0x0F47}, {0x0F49, 0x0F6C}, + {0x0F71, 0x0F97}, {0x0F99, 0x0FBC}, {0x0FBE, 0x0FCC}, + {0x0FCE, 0x0FDA}, {0x1000, 0x10C5}, {0x10C7, 0x10C7}, + {0x10CD, 0x10CD}, {0x10D0, 0x10FF}, {0x1160, 0x1248}, + {0x124A, 0x124D}, {0x1250, 0x1256}, {0x1258, 0x1258}, + {0x125A, 0x125D}, {0x1260, 0x1288}, {0x128A, 0x128D}, + {0x1290, 0x12B0}, {0x12B2, 0x12B5}, {0x12B8, 0x12BE}, + {0x12C0, 0x12C0}, {0x12C2, 0x12C5}, {0x12C8, 0x12D6}, + {0x12D8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135A}, + {0x135D, 0x137C}, {0x1380, 0x1399}, {0x13A0, 0x13F5}, + {0x13F8, 0x13FD}, {0x1400, 0x169C}, {0x16A0, 0x16F8}, + {0x1700, 0x1715}, {0x171F, 0x1736}, {0x1740, 0x1753}, + {0x1760, 0x176C}, {0x176E, 0x1770}, {0x1772, 0x1773}, + {0x1780, 0x17DD}, {0x17E0, 0x17E9}, {0x17F0, 0x17F9}, + {0x1800, 0x1819}, {0x1820, 0x1878}, {0x1880, 0x18AA}, + {0x18B0, 0x18F5}, {0x1900, 0x191E}, {0x1920, 0x192B}, + {0x1930, 0x193B}, {0x1940, 0x1940}, {0x1944, 0x196D}, + {0x1970, 0x1974}, {0x1980, 0x19AB}, {0x19B0, 0x19C9}, + {0x19D0, 0x19DA}, {0x19DE, 0x1A1B}, {0x1A1E, 0x1A5E}, + {0x1A60, 0x1A7C}, {0x1A7F, 0x1A89}, {0x1A90, 0x1A99}, + {0x1AA0, 0x1AAD}, {0x1AB0, 0x1ACE}, {0x1B00, 0x1B4C}, + {0x1B50, 0x1B7E}, {0x1B80, 0x1BF3}, {0x1BFC, 0x1C37}, + {0x1C3B, 0x1C49}, {0x1C4D, 0x1C88}, {0x1C90, 0x1CBA}, + {0x1CBD, 0x1CC7}, {0x1CD0, 0x1CFA}, {0x1D00, 0x1F15}, + {0x1F18, 0x1F1D}, {0x1F20, 0x1F45}, {0x1F48, 0x1F4D}, + {0x1F50, 0x1F57}, {0x1F59, 0x1F59}, {0x1F5B, 0x1F5B}, + {0x1F5D, 0x1F5D}, {0x1F5F, 0x1F7D}, {0x1F80, 0x1FB4}, + {0x1FB6, 0x1FC4}, {0x1FC6, 0x1FD3}, {0x1FD6, 0x1FDB}, + {0x1FDD, 0x1FEF}, {0x1FF2, 0x1FF4}, {0x1FF6, 0x1FFE}, + {0x2000, 0x200F}, {0x2011, 0x2012}, {0x2017, 0x2017}, + {0x201A, 0x201B}, {0x201E, 0x201F}, {0x2023, 0x2023}, + {0x2028, 0x202F}, {0x2031, 0x2031}, {0x2034, 0x2034}, + {0x2036, 0x203A}, {0x203C, 0x203D}, {0x203F, 0x2064}, + {0x2066, 0x2071}, {0x2075, 0x207E}, {0x2080, 0x2080}, + {0x2085, 0x208E}, {0x2090, 0x209C}, {0x20A0, 0x20A8}, + {0x20AA, 0x20AB}, {0x20AD, 0x20C0}, {0x20D0, 0x20F0}, + {0x2100, 0x2102}, {0x2104, 0x2104}, {0x2106, 0x2108}, + {0x210A, 0x2112}, {0x2114, 0x2115}, {0x2117, 0x2120}, + {0x2123, 0x2125}, {0x2127, 0x212A}, {0x212C, 0x2152}, + {0x2155, 0x215A}, {0x215F, 0x215F}, {0x216C, 0x216F}, + {0x217A, 0x2188}, {0x218A, 0x218B}, {0x219A, 0x21B7}, + {0x21BA, 0x21D1}, {0x21D3, 0x21D3}, {0x21D5, 0x21E6}, + {0x21E8, 0x21FF}, {0x2201, 0x2201}, {0x2204, 0x2206}, + {0x2209, 0x220A}, {0x220C, 0x220E}, {0x2210, 0x2210}, + {0x2212, 0x2214}, {0x2216, 0x2219}, {0x221B, 0x221C}, + {0x2221, 0x2222}, {0x2224, 0x2224}, {0x2226, 0x2226}, + {0x222D, 0x222D}, {0x222F, 0x2233}, {0x2238, 0x223B}, + {0x223E, 0x2247}, {0x2249, 0x224B}, {0x224D, 0x2251}, + {0x2253, 0x225F}, {0x2262, 0x2263}, {0x2268, 0x2269}, + {0x226C, 0x226D}, {0x2270, 0x2281}, {0x2284, 0x2285}, + {0x2288, 0x2294}, {0x2296, 0x2298}, {0x229A, 0x22A4}, + {0x22A6, 0x22BE}, {0x22C0, 0x2311}, {0x2313, 0x2319}, + {0x231C, 0x2328}, {0x232B, 0x23E8}, {0x23ED, 0x23EF}, + {0x23F1, 0x23F2}, {0x23F4, 0x2426}, {0x2440, 0x244A}, + {0x24EA, 0x24EA}, {0x254C, 0x254F}, {0x2574, 0x257F}, + {0x2590, 0x2591}, {0x2596, 0x259F}, {0x25A2, 0x25A2}, + {0x25AA, 0x25B1}, {0x25B4, 0x25B5}, {0x25B8, 0x25BB}, + {0x25BE, 0x25BF}, {0x25C2, 0x25C5}, {0x25C9, 0x25CA}, + {0x25CC, 0x25CD}, {0x25D2, 0x25E1}, {0x25E6, 0x25EE}, + {0x25F0, 0x25FC}, {0x25FF, 0x2604}, {0x2607, 0x2608}, + {0x260A, 0x260D}, {0x2610, 0x2613}, {0x2616, 0x261B}, + {0x261D, 0x261D}, {0x261F, 0x263F}, {0x2641, 0x2641}, + {0x2643, 0x2647}, {0x2654, 0x265F}, {0x2662, 0x2662}, + {0x2666, 0x2666}, {0x266B, 0x266B}, {0x266E, 0x266E}, + {0x2670, 0x267E}, {0x2680, 0x2692}, {0x2694, 0x269D}, + {0x26A0, 0x26A0}, {0x26A2, 0x26A9}, {0x26AC, 0x26BC}, + {0x26C0, 0x26C3}, {0x26E2, 0x26E2}, {0x26E4, 0x26E7}, + {0x2700, 0x2704}, {0x2706, 0x2709}, {0x270C, 0x2727}, + {0x2729, 0x273C}, {0x273E, 0x274B}, {0x274D, 0x274D}, + {0x274F, 0x2752}, {0x2756, 0x2756}, {0x2758, 0x2775}, + {0x2780, 0x2794}, {0x2798, 0x27AF}, {0x27B1, 0x27BE}, + {0x27C0, 0x27E5}, {0x27EE, 0x2984}, {0x2987, 0x2B1A}, + {0x2B1D, 0x2B4F}, {0x2B51, 0x2B54}, {0x2B5A, 0x2B73}, + {0x2B76, 0x2B95}, {0x2B97, 0x2CF3}, {0x2CF9, 0x2D25}, + {0x2D27, 0x2D27}, {0x2D2D, 0x2D2D}, {0x2D30, 0x2D67}, + {0x2D6F, 0x2D70}, {0x2D7F, 0x2D96}, {0x2DA0, 0x2DA6}, + {0x2DA8, 0x2DAE}, {0x2DB0, 0x2DB6}, {0x2DB8, 0x2DBE}, + {0x2DC0, 0x2DC6}, {0x2DC8, 0x2DCE}, {0x2DD0, 0x2DD6}, + {0x2DD8, 0x2DDE}, {0x2DE0, 0x2E5D}, {0x303F, 0x303F}, + {0x4DC0, 0x4DFF}, {0xA4D0, 0xA62B}, {0xA640, 0xA6F7}, + {0xA700, 0xA7CA}, {0xA7D0, 0xA7D1}, {0xA7D3, 0xA7D3}, + {0xA7D5, 0xA7D9}, {0xA7F2, 0xA82C}, {0xA830, 0xA839}, + {0xA840, 0xA877}, {0xA880, 0xA8C5}, {0xA8CE, 0xA8D9}, + {0xA8E0, 0xA953}, {0xA95F, 0xA95F}, {0xA980, 0xA9CD}, + {0xA9CF, 0xA9D9}, {0xA9DE, 0xA9FE}, {0xAA00, 0xAA36}, + {0xAA40, 0xAA4D}, {0xAA50, 0xAA59}, {0xAA5C, 0xAAC2}, + {0xAADB, 0xAAF6}, {0xAB01, 0xAB06}, {0xAB09, 0xAB0E}, + {0xAB11, 0xAB16}, {0xAB20, 0xAB26}, {0xAB28, 0xAB2E}, + {0xAB30, 0xAB6B}, {0xAB70, 0xABED}, {0xABF0, 0xABF9}, + {0xD7B0, 0xD7C6}, {0xD7CB, 0xD7FB}, {0xD800, 0xDFFF}, + {0xFB00, 0xFB06}, {0xFB13, 0xFB17}, {0xFB1D, 0xFB36}, + {0xFB38, 0xFB3C}, {0xFB3E, 0xFB3E}, {0xFB40, 0xFB41}, + {0xFB43, 0xFB44}, {0xFB46, 0xFBC2}, {0xFBD3, 0xFD8F}, + {0xFD92, 0xFDC7}, {0xFDCF, 0xFDCF}, {0xFDF0, 0xFDFF}, + {0xFE20, 0xFE2F}, {0xFE70, 0xFE74}, {0xFE76, 0xFEFC}, + {0xFEFF, 0xFEFF}, {0xFFF9, 0xFFFC}, {0x10000, 0x1000B}, + {0x1000D, 0x10026}, {0x10028, 0x1003A}, {0x1003C, 0x1003D}, + {0x1003F, 0x1004D}, {0x10050, 0x1005D}, {0x10080, 0x100FA}, + {0x10100, 0x10102}, {0x10107, 0x10133}, {0x10137, 0x1018E}, + {0x10190, 0x1019C}, {0x101A0, 0x101A0}, {0x101D0, 0x101FD}, + {0x10280, 0x1029C}, {0x102A0, 0x102D0}, {0x102E0, 0x102FB}, + {0x10300, 0x10323}, {0x1032D, 0x1034A}, {0x10350, 0x1037A}, + {0x10380, 0x1039D}, {0x1039F, 0x103C3}, {0x103C8, 0x103D5}, + {0x10400, 0x1049D}, {0x104A0, 0x104A9}, {0x104B0, 0x104D3}, + {0x104D8, 0x104FB}, {0x10500, 0x10527}, {0x10530, 0x10563}, + {0x1056F, 0x1057A}, {0x1057C, 0x1058A}, {0x1058C, 0x10592}, + {0x10594, 0x10595}, {0x10597, 0x105A1}, {0x105A3, 0x105B1}, + {0x105B3, 0x105B9}, {0x105BB, 0x105BC}, {0x10600, 0x10736}, + {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10780, 0x10785}, + {0x10787, 0x107B0}, {0x107B2, 0x107BA}, {0x10800, 0x10805}, + {0x10808, 0x10808}, {0x1080A, 0x10835}, {0x10837, 0x10838}, + {0x1083C, 0x1083C}, {0x1083F, 0x10855}, {0x10857, 0x1089E}, + {0x108A7, 0x108AF}, {0x108E0, 0x108F2}, {0x108F4, 0x108F5}, + {0x108FB, 0x1091B}, {0x1091F, 0x10939}, {0x1093F, 0x1093F}, + {0x10980, 0x109B7}, {0x109BC, 0x109CF}, {0x109D2, 0x10A03}, + {0x10A05, 0x10A06}, {0x10A0C, 0x10A13}, {0x10A15, 0x10A17}, + {0x10A19, 0x10A35}, {0x10A38, 0x10A3A}, {0x10A3F, 0x10A48}, + {0x10A50, 0x10A58}, {0x10A60, 0x10A9F}, {0x10AC0, 0x10AE6}, + {0x10AEB, 0x10AF6}, {0x10B00, 0x10B35}, {0x10B39, 0x10B55}, + {0x10B58, 0x10B72}, {0x10B78, 0x10B91}, {0x10B99, 0x10B9C}, + {0x10BA9, 0x10BAF}, {0x10C00, 0x10C48}, {0x10C80, 0x10CB2}, + {0x10CC0, 0x10CF2}, {0x10CFA, 0x10D27}, {0x10D30, 0x10D39}, + {0x10E60, 0x10E7E}, {0x10E80, 0x10EA9}, {0x10EAB, 0x10EAD}, + {0x10EB0, 0x10EB1}, {0x10EFD, 0x10F27}, {0x10F30, 0x10F59}, + {0x10F70, 0x10F89}, {0x10FB0, 0x10FCB}, {0x10FE0, 0x10FF6}, + {0x11000, 0x1104D}, {0x11052, 0x11075}, {0x1107F, 0x110C2}, + {0x110CD, 0x110CD}, {0x110D0, 0x110E8}, {0x110F0, 0x110F9}, + {0x11100, 0x11134}, {0x11136, 0x11147}, {0x11150, 0x11176}, + {0x11180, 0x111DF}, {0x111E1, 0x111F4}, {0x11200, 0x11211}, + {0x11213, 0x11241}, {0x11280, 0x11286}, {0x11288, 0x11288}, + {0x1128A, 0x1128D}, {0x1128F, 0x1129D}, {0x1129F, 0x112A9}, + {0x112B0, 0x112EA}, {0x112F0, 0x112F9}, {0x11300, 0x11303}, + {0x11305, 0x1130C}, {0x1130F, 0x11310}, {0x11313, 0x11328}, + {0x1132A, 0x11330}, {0x11332, 0x11333}, {0x11335, 0x11339}, + {0x1133B, 0x11344}, {0x11347, 0x11348}, {0x1134B, 0x1134D}, + {0x11350, 0x11350}, {0x11357, 0x11357}, {0x1135D, 0x11363}, + {0x11366, 0x1136C}, {0x11370, 0x11374}, {0x11400, 0x1145B}, + {0x1145D, 0x11461}, {0x11480, 0x114C7}, {0x114D0, 0x114D9}, + {0x11580, 0x115B5}, {0x115B8, 0x115DD}, {0x11600, 0x11644}, + {0x11650, 0x11659}, {0x11660, 0x1166C}, {0x11680, 0x116B9}, + {0x116C0, 0x116C9}, {0x11700, 0x1171A}, {0x1171D, 0x1172B}, + {0x11730, 0x11746}, {0x11800, 0x1183B}, {0x118A0, 0x118F2}, + {0x118FF, 0x11906}, {0x11909, 0x11909}, {0x1190C, 0x11913}, + {0x11915, 0x11916}, {0x11918, 0x11935}, {0x11937, 0x11938}, + {0x1193B, 0x11946}, {0x11950, 0x11959}, {0x119A0, 0x119A7}, + {0x119AA, 0x119D7}, {0x119DA, 0x119E4}, {0x11A00, 0x11A47}, + {0x11A50, 0x11AA2}, {0x11AB0, 0x11AF8}, {0x11B00, 0x11B09}, + {0x11C00, 0x11C08}, {0x11C0A, 0x11C36}, {0x11C38, 0x11C45}, + {0x11C50, 0x11C6C}, {0x11C70, 0x11C8F}, {0x11C92, 0x11CA7}, + {0x11CA9, 0x11CB6}, {0x11D00, 0x11D06}, {0x11D08, 0x11D09}, + {0x11D0B, 0x11D36}, {0x11D3A, 0x11D3A}, {0x11D3C, 0x11D3D}, + {0x11D3F, 0x11D47}, {0x11D50, 0x11D59}, {0x11D60, 0x11D65}, + {0x11D67, 0x11D68}, {0x11D6A, 0x11D8E}, {0x11D90, 0x11D91}, + {0x11D93, 0x11D98}, {0x11DA0, 0x11DA9}, {0x11EE0, 0x11EF8}, + {0x11F00, 0x11F10}, {0x11F12, 0x11F3A}, {0x11F3E, 0x11F59}, + {0x11FB0, 0x11FB0}, {0x11FC0, 0x11FF1}, {0x11FFF, 0x12399}, + {0x12400, 0x1246E}, {0x12470, 0x12474}, {0x12480, 0x12543}, + {0x12F90, 0x12FF2}, {0x13000, 0x13455}, {0x14400, 0x14646}, + {0x16800, 0x16A38}, {0x16A40, 0x16A5E}, {0x16A60, 0x16A69}, + {0x16A6E, 0x16ABE}, {0x16AC0, 0x16AC9}, {0x16AD0, 0x16AED}, + {0x16AF0, 0x16AF5}, {0x16B00, 0x16B45}, {0x16B50, 0x16B59}, + {0x16B5B, 0x16B61}, {0x16B63, 0x16B77}, {0x16B7D, 0x16B8F}, + {0x16E40, 0x16E9A}, {0x16F00, 0x16F4A}, {0x16F4F, 0x16F87}, + {0x16F8F, 0x16F9F}, {0x1BC00, 0x1BC6A}, {0x1BC70, 0x1BC7C}, + {0x1BC80, 0x1BC88}, {0x1BC90, 0x1BC99}, {0x1BC9C, 0x1BCA3}, + {0x1CF00, 0x1CF2D}, {0x1CF30, 0x1CF46}, {0x1CF50, 0x1CFC3}, + {0x1D000, 0x1D0F5}, {0x1D100, 0x1D126}, {0x1D129, 0x1D1EA}, + {0x1D200, 0x1D245}, {0x1D2C0, 0x1D2D3}, {0x1D2E0, 0x1D2F3}, + {0x1D300, 0x1D356}, {0x1D360, 0x1D378}, {0x1D400, 0x1D454}, + {0x1D456, 0x1D49C}, {0x1D49E, 0x1D49F}, {0x1D4A2, 0x1D4A2}, + {0x1D4A5, 0x1D4A6}, {0x1D4A9, 0x1D4AC}, {0x1D4AE, 0x1D4B9}, + {0x1D4BB, 0x1D4BB}, {0x1D4BD, 0x1D4C3}, {0x1D4C5, 0x1D505}, + {0x1D507, 0x1D50A}, {0x1D50D, 0x1D514}, {0x1D516, 0x1D51C}, + {0x1D51E, 0x1D539}, {0x1D53B, 0x1D53E}, {0x1D540, 0x1D544}, + {0x1D546, 0x1D546}, {0x1D54A, 0x1D550}, {0x1D552, 0x1D6A5}, + {0x1D6A8, 0x1D7CB}, {0x1D7CE, 0x1DA8B}, {0x1DA9B, 0x1DA9F}, + {0x1DAA1, 0x1DAAF}, {0x1DF00, 0x1DF1E}, {0x1DF25, 0x1DF2A}, + {0x1E000, 0x1E006}, {0x1E008, 0x1E018}, {0x1E01B, 0x1E021}, + {0x1E023, 0x1E024}, {0x1E026, 0x1E02A}, {0x1E030, 0x1E06D}, + {0x1E08F, 0x1E08F}, {0x1E100, 0x1E12C}, {0x1E130, 0x1E13D}, + {0x1E140, 0x1E149}, {0x1E14E, 0x1E14F}, {0x1E290, 0x1E2AE}, + {0x1E2C0, 0x1E2F9}, {0x1E2FF, 0x1E2FF}, {0x1E4D0, 0x1E4F9}, + {0x1E7E0, 0x1E7E6}, {0x1E7E8, 0x1E7EB}, {0x1E7ED, 0x1E7EE}, + {0x1E7F0, 0x1E7FE}, {0x1E800, 0x1E8C4}, {0x1E8C7, 0x1E8D6}, + {0x1E900, 0x1E94B}, {0x1E950, 0x1E959}, {0x1E95E, 0x1E95F}, + {0x1EC71, 0x1ECB4}, {0x1ED01, 0x1ED3D}, {0x1EE00, 0x1EE03}, + {0x1EE05, 0x1EE1F}, {0x1EE21, 0x1EE22}, {0x1EE24, 0x1EE24}, + {0x1EE27, 0x1EE27}, {0x1EE29, 0x1EE32}, {0x1EE34, 0x1EE37}, + {0x1EE39, 0x1EE39}, {0x1EE3B, 0x1EE3B}, {0x1EE42, 0x1EE42}, + {0x1EE47, 0x1EE47}, {0x1EE49, 0x1EE49}, {0x1EE4B, 0x1EE4B}, + {0x1EE4D, 0x1EE4F}, {0x1EE51, 0x1EE52}, {0x1EE54, 0x1EE54}, + {0x1EE57, 0x1EE57}, {0x1EE59, 0x1EE59}, {0x1EE5B, 0x1EE5B}, + {0x1EE5D, 0x1EE5D}, {0x1EE5F, 0x1EE5F}, {0x1EE61, 0x1EE62}, + {0x1EE64, 0x1EE64}, {0x1EE67, 0x1EE6A}, {0x1EE6C, 0x1EE72}, + {0x1EE74, 0x1EE77}, {0x1EE79, 0x1EE7C}, {0x1EE7E, 0x1EE7E}, + {0x1EE80, 0x1EE89}, {0x1EE8B, 0x1EE9B}, {0x1EEA1, 0x1EEA3}, + {0x1EEA5, 0x1EEA9}, {0x1EEAB, 0x1EEBB}, {0x1EEF0, 0x1EEF1}, + {0x1F000, 0x1F003}, {0x1F005, 0x1F02B}, {0x1F030, 0x1F093}, + {0x1F0A0, 0x1F0AE}, {0x1F0B1, 0x1F0BF}, {0x1F0C1, 0x1F0CE}, + {0x1F0D1, 0x1F0F5}, {0x1F10B, 0x1F10F}, {0x1F12E, 0x1F12F}, + {0x1F16A, 0x1F16F}, {0x1F1AD, 0x1F1AD}, {0x1F1E6, 0x1F1FF}, + {0x1F321, 0x1F32C}, {0x1F336, 0x1F336}, {0x1F37D, 0x1F37D}, + {0x1F394, 0x1F39F}, {0x1F3CB, 0x1F3CE}, {0x1F3D4, 0x1F3DF}, + {0x1F3F1, 0x1F3F3}, {0x1F3F5, 0x1F3F7}, {0x1F43F, 0x1F43F}, + {0x1F441, 0x1F441}, {0x1F4FD, 0x1F4FE}, {0x1F53E, 0x1F54A}, + {0x1F54F, 0x1F54F}, {0x1F568, 0x1F579}, {0x1F57B, 0x1F594}, + {0x1F597, 0x1F5A3}, {0x1F5A5, 0x1F5FA}, {0x1F650, 0x1F67F}, + {0x1F6C6, 0x1F6CB}, {0x1F6CD, 0x1F6CF}, {0x1F6D3, 0x1F6D4}, + {0x1F6E0, 0x1F6EA}, {0x1F6F0, 0x1F6F3}, {0x1F700, 0x1F776}, + {0x1F77B, 0x1F7D9}, {0x1F800, 0x1F80B}, {0x1F810, 0x1F847}, + {0x1F850, 0x1F859}, {0x1F860, 0x1F887}, {0x1F890, 0x1F8AD}, + {0x1F8B0, 0x1F8B1}, {0x1F900, 0x1F90B}, {0x1F93B, 0x1F93B}, + {0x1F946, 0x1F946}, {0x1FA00, 0x1FA53}, {0x1FA60, 0x1FA6D}, + {0x1FB00, 0x1FB92}, {0x1FB94, 0x1FBCA}, {0x1FBF0, 0x1FBF9}, + {0xE0001, 0xE0001}, {0xE0020, 0xE007F}, +} + +var emoji = table{ + {0x203C, 0x203C}, {0x2049, 0x2049}, {0x2122, 0x2122}, + {0x2139, 0x2139}, {0x2194, 0x2199}, {0x21A9, 0x21AA}, + {0x231A, 0x231B}, {0x2328, 0x2328}, {0x2388, 0x2388}, + {0x23CF, 0x23CF}, {0x23E9, 0x23F3}, {0x23F8, 0x23FA}, + {0x24C2, 0x24C2}, {0x25AA, 0x25AB}, {0x25B6, 0x25B6}, + {0x25C0, 0x25C0}, {0x25FB, 0x25FE}, {0x2600, 0x2605}, + {0x2607, 0x2612}, {0x2614, 0x2685}, {0x2690, 0x2705}, + {0x2708, 0x2712}, {0x2714, 0x2714}, {0x2716, 0x2716}, + {0x271D, 0x271D}, {0x2721, 0x2721}, {0x2728, 0x2728}, + {0x2733, 0x2734}, {0x2744, 0x2744}, {0x2747, 0x2747}, + {0x274C, 0x274C}, {0x274E, 0x274E}, {0x2753, 0x2755}, + {0x2757, 0x2757}, {0x2763, 0x2767}, {0x2795, 0x2797}, + {0x27A1, 0x27A1}, {0x27B0, 0x27B0}, {0x27BF, 0x27BF}, + {0x2934, 0x2935}, {0x2B05, 0x2B07}, {0x2B1B, 0x2B1C}, + {0x2B50, 0x2B50}, {0x2B55, 0x2B55}, {0x3030, 0x3030}, + {0x303D, 0x303D}, {0x3297, 0x3297}, {0x3299, 0x3299}, + {0x1F000, 0x1F0FF}, {0x1F10D, 0x1F10F}, {0x1F12F, 0x1F12F}, + {0x1F16C, 0x1F171}, {0x1F17E, 0x1F17F}, {0x1F18E, 0x1F18E}, + {0x1F191, 0x1F19A}, {0x1F1AD, 0x1F1E5}, {0x1F201, 0x1F20F}, + {0x1F21A, 0x1F21A}, {0x1F22F, 0x1F22F}, {0x1F232, 0x1F23A}, + {0x1F23C, 0x1F23F}, {0x1F249, 0x1F3FA}, {0x1F400, 0x1F53D}, + {0x1F546, 0x1F64F}, {0x1F680, 0x1F6FF}, {0x1F774, 0x1F77F}, + {0x1F7D5, 0x1F7FF}, {0x1F80C, 0x1F80F}, {0x1F848, 0x1F84F}, + {0x1F85A, 0x1F85F}, {0x1F888, 0x1F88F}, {0x1F8AE, 0x1F8FF}, + {0x1F90C, 0x1F93A}, {0x1F93C, 0x1F945}, {0x1F947, 0x1FAFF}, + {0x1FC00, 0x1FFFD}, +} diff --git a/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_windows.go b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_windows.go new file mode 100644 index 0000000..5f987a3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/mattn/go-runewidth/runewidth_windows.go @@ -0,0 +1,28 @@ +//go:build windows && !appengine +// +build windows,!appengine + +package runewidth + +import ( + "syscall" +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32") + procGetConsoleOutputCP = kernel32.NewProc("GetConsoleOutputCP") +) + +// IsEastAsian return true if the current locale is CJK +func IsEastAsian() bool { + r1, _, _ := procGetConsoleOutputCP.Call() + if r1 == 0 { + return false + } + + switch int(r1) { + case 932, 51932, 936, 949, 950: + return true + } + + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/.gitignore b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/.gitignore new file mode 100644 index 0000000..66fd13c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/.gitignore @@ -0,0 +1,15 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/.golangci.yml new file mode 100644 index 0000000..cd299e2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/.golangci.yml @@ -0,0 +1,27 @@ +run: + tests: false + +issues: + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + - bodyclose + - dupl + - exportloopref + - goconst + - godot + - godox + - goimports + - golint + - goprintffuncname + - gosec + - ifshort + - misspell + - prealloc + - rowserrcheck + - sqlclosecheck + - unconvert + - unparam + - whitespace diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/LICENSE b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/LICENSE new file mode 100644 index 0000000..bd9cdc6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Christian Muehlhaeuser + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/README.md b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/README.md new file mode 100644 index 0000000..f9d0fe9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/README.md @@ -0,0 +1,31 @@ +# ansi + +[![Latest Release](https://img.shields.io/github/release/muesli/ansi.svg)](https://github.com/muesli/ansi/releases) +[![Build Status](https://github.com/muesli/ansi/workflows/build/badge.svg)](https://github.com/muesli/ansi/actions) +[![Coverage Status](https://coveralls.io/repos/github/muesli/ansi/badge.svg?branch=master)](https://coveralls.io/github/muesli/ansi?branch=master) +[![Go ReportCard](https://goreportcard.com/badge/muesli/ansi)](https://goreportcard.com/report/muesli/ansi) +[![GoDoc](https://godoc.org/github.com/golang/gddo?status.svg)](https://pkg.go.dev/github.com/muesli/ansi) + +Raw ANSI sequence helpers + +## ANSI Writer + +```go +import "github.com/muesli/ansi" + +w := ansi.Writer{Forward: os.Stdout} +w.Write([]byte("\x1b[31mHello, world!\x1b[0m")) +w.Close() +``` + +## Compressor + +The ANSI compressor eliminates unnecessary/redundant ANSI sequences. + +```go +import "github.com/muesli/ansi/compressor" + +w := compressor.Writer{Forward: os.Stdout} +w.Write([]byte("\x1b[31mHello, world!\x1b[0m")) +w.Close() +``` diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/ansi.go b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/ansi.go new file mode 100644 index 0000000..f3d0700 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/ansi.go @@ -0,0 +1,7 @@ +package ansi + +const Marker = '\x1B' + +func IsTerminator(c rune) bool { + return (c >= 0x40 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/buffer.go b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/buffer.go new file mode 100644 index 0000000..471bcaf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/buffer.go @@ -0,0 +1,40 @@ +package ansi + +import ( + "bytes" + + "github.com/mattn/go-runewidth" +) + +// Buffer is a buffer aware of ANSI escape sequences. +type Buffer struct { + bytes.Buffer +} + +// PrintableRuneWidth returns the cell width of all printable runes in the +// buffer. +func (w Buffer) PrintableRuneWidth() int { + return PrintableRuneWidth(w.String()) +} + +// PrintableRuneWidth returns the cell width of the given string. +func PrintableRuneWidth(s string) int { + var n int + var ansi bool + + for _, c := range s { + if c == Marker { + // ANSI escape sequence + ansi = true + } else if ansi { + if IsTerminator(c) { + // ANSI sequence terminated + ansi = false + } + } else { + n += runewidth.RuneWidth(c) + } + } + + return n +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/compressor/writer.go b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/compressor/writer.go new file mode 100644 index 0000000..98c5482 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/compressor/writer.go @@ -0,0 +1,132 @@ +package compressor + +import ( + "bytes" + "io" + "unicode/utf8" + + "github.com/muesli/ansi" +) + +type Writer struct { + Forward io.Writer + + ansi bool + ansiseq bytes.Buffer + lastseq bytes.Buffer + prevlastseq bytes.Buffer + resetreq bool + runeBuf []byte + compressed int + uncompressed int +} + +// Bytes is shorthand for declaring a new default compressor instance, +// used to immediately compress a byte slice. +func Bytes(b []byte) []byte { + var buf bytes.Buffer + f := Writer{ + Forward: &buf, + } + _, _ = f.Write(b) + _ = f.Close() + + return buf.Bytes() +} + +// String is shorthand for declaring a new default compressor instance, +// used to immediately compress a string. +func String(s string) string { + return string(Bytes([]byte(s))) +} + +// Write is used to write content to the ANSI buffer. +func (w *Writer) Write(b []byte) (int, error) { + w.uncompressed += len(b) + + for _, c := range string(b) { + if c == ansi.Marker { + // ANSI escape sequence + w.ansi = true + _, _ = w.ansiseq.WriteRune(c) + } else if w.ansi { + _, _ = w.ansiseq.WriteRune(c) + if ansi.IsTerminator(c) { + // ANSI sequence terminated + w.ansi = false + + terminated := false + if bytes.HasSuffix(w.ansiseq.Bytes(), []byte("[0m")) { + // reset sequence + w.prevlastseq.Reset() + w.prevlastseq.Write(w.lastseq.Bytes()) + + w.lastseq.Reset() + terminated = true + w.resetreq = true + } else if c == 'm' { + // color code + _, _ = w.lastseq.Write(w.ansiseq.Bytes()) + } + + if !terminated { + // did we reset the sequence just to restore it again? + if bytes.Equal(w.ansiseq.Bytes(), w.prevlastseq.Bytes()) { + w.resetreq = false + w.ansiseq.Reset() + } + + w.prevlastseq.Reset() + + if w.resetreq { + w.ResetAnsi() + } + + _, _ = w.Forward.Write(w.ansiseq.Bytes()) + w.compressed += w.ansiseq.Len() + } + + w.ansiseq.Reset() + } + } else { + if w.resetreq { + w.ResetAnsi() + } + + _, err := w.writeRune(c) + if err != nil { + return 0, err + } + } + } + + return len(b), nil +} + +func (w *Writer) writeRune(r rune) (int, error) { + if w.runeBuf == nil { + w.runeBuf = make([]byte, utf8.UTFMax) + } + n := utf8.EncodeRune(w.runeBuf, r) + w.compressed += n + return w.Forward.Write(w.runeBuf[:n]) +} + +// Close finishes the compression operation. Always call it before trying to +// retrieve the final result. +func (w *Writer) Close() error { + if w.resetreq { + w.ResetAnsi() + } + + // log.Println("Written uncompressed: ", w.uncompressed) + // log.Println("Written compressed: ", w.compressed) + + return nil +} + +func (w *Writer) ResetAnsi() { + w.prevlastseq.Reset() + _, _ = w.Forward.Write([]byte("\x1b[0m")) + w.resetreq = false +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/ansi/writer.go b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/writer.go new file mode 100644 index 0000000..a6aaa1e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/ansi/writer.go @@ -0,0 +1,76 @@ +package ansi + +import ( + "bytes" + "io" + "unicode/utf8" +) + +type Writer struct { + Forward io.Writer + + ansi bool + ansiseq bytes.Buffer + lastseq bytes.Buffer + seqchanged bool + runeBuf []byte +} + +// Write is used to write content to the ANSI buffer. +func (w *Writer) Write(b []byte) (int, error) { + for _, c := range string(b) { + if c == Marker { + // ANSI escape sequence + w.ansi = true + w.seqchanged = true + _, _ = w.ansiseq.WriteRune(c) + } else if w.ansi { + _, _ = w.ansiseq.WriteRune(c) + if IsTerminator(c) { + // ANSI sequence terminated + w.ansi = false + + if bytes.HasSuffix(w.ansiseq.Bytes(), []byte("[0m")) { + // reset sequence + w.lastseq.Reset() + w.seqchanged = false + } else if c == 'm' { + // color code + _, _ = w.lastseq.Write(w.ansiseq.Bytes()) + } + + _, _ = w.ansiseq.WriteTo(w.Forward) + } + } else { + _, err := w.writeRune(c) + if err != nil { + return 0, err + } + } + } + + return len(b), nil +} + +func (w *Writer) writeRune(r rune) (int, error) { + if w.runeBuf == nil { + w.runeBuf = make([]byte, utf8.UTFMax) + } + n := utf8.EncodeRune(w.runeBuf, r) + return w.Forward.Write(w.runeBuf[:n]) +} + +func (w *Writer) LastSequence() string { + return w.lastseq.String() +} + +func (w *Writer) ResetAnsi() { + if !w.seqchanged { + return + } + _, _ = w.Forward.Write([]byte("\x1b[0m")) +} + +func (w *Writer) RestoreAnsi() { + _, _ = w.Forward.Write(w.lastseq.Bytes()) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.gitignore b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.gitignore new file mode 100644 index 0000000..66fd13c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.gitignore @@ -0,0 +1,15 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci-soft.yml b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci-soft.yml new file mode 100644 index 0000000..ef456e0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci-soft.yml @@ -0,0 +1,47 @@ +run: + tests: false + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + # - dupl + - exhaustive + # - exhaustivestruct + - goconst + - godot + - godox + - gomnd + - gomoddirectives + - goprintffuncname + - ifshort + # - lll + - misspell + - nakedret + - nestif + - noctx + - nolintlint + - prealloc + - wrapcheck + + # disable default linters, they are already enabled in .golangci.yml + disable: + - deadcode + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - structcheck + - typecheck + - unused + - varcheck diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci.yml new file mode 100644 index 0000000..a5a91d0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/.golangci.yml @@ -0,0 +1,29 @@ +run: + tests: false + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + - bodyclose + - exportloopref + - goimports + - gosec + - nilerr + - predeclared + - revive + - rowserrcheck + - sqlclosecheck + - tparallel + - unconvert + - unparam + - whitespace diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/LICENSE b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/LICENSE new file mode 100644 index 0000000..4b19b92 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Erik Geiser and Christian Muehlhaeuser + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/README.md b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/README.md new file mode 100644 index 0000000..83609fb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/README.md @@ -0,0 +1,64 @@ +# CancelReader + +[![Latest Release](https://img.shields.io/github/release/muesli/cancelreader.svg?style=for-the-badge)](https://github.com/muesli/cancelreader/releases) +[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=for-the-badge)](https://pkg.go.dev/github.com/muesli/cancelreader) +[![Software License](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)](/LICENSE) +[![Build Status](https://img.shields.io/github/workflow/status/muesli/cancelreader/build?style=for-the-badge)](https://github.com/muesli/cancelreader/actions) +[![Go ReportCard](https://goreportcard.com/badge/github.com/muesli/cancelreader?style=for-the-badge)](https://goreportcard.com/report/muesli/cancelreader) + +A cancelable reader for Go + +This package is based on the fantastic work of [Erik Geiser](https://github.com/erikgeiser) +in Charm's [Bubble Tea](https://github.com/charmbracelet/bubbletea) framework. + +## Usage + +`NewReader` returns a reader with a `Cancel` function. If the input reader is a +`File`, the cancel function can be used to interrupt a blocking `Read` call. +In this case, the cancel function returns true if the call was canceled +successfully. If the input reader is not a `File`, the cancel function does +nothing and always returns false. + +```go +r, err := cancelreader.NewReader(file) +if err != nil { + // handle error + ... +} + +// cancel after five seconds +go func() { + time.Sleep(5 * time.Second) + r.Cancel() +}() + +// keep reading +for { + var buf [1024]byte + _, err := r.Read(buf[:]) + + if errors.Is(err, cancelreader.ErrCanceled) { + fmt.Println("canceled!") + break + } + if err != nil { + // handle other errors + ... + } + + // handle data + ... +} +``` + +## Implementations + +- The Linux implementation is based on the epoll mechanism +- The BSD and macOS implementation is based on the kqueue mechanism +- The generic Unix implementation is based on the posix select syscall + +## Caution + +The Windows implementation is based on WaitForMultipleObject with overlapping +reads from CONIN$. At this point it only supports canceling reads from +`os.Stdin`. diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader.go new file mode 100644 index 0000000..18d3825 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader.go @@ -0,0 +1,93 @@ +package cancelreader + +import ( + "fmt" + "io" + "sync" +) + +// ErrCanceled gets returned when trying to read from a canceled reader. +var ErrCanceled = fmt.Errorf("read canceled") + +// CancelReader is a io.Reader whose Read() calls can be canceled without data +// being consumed. The cancelReader has to be closed. +type CancelReader interface { + io.ReadCloser + + // Cancel cancels ongoing and future reads an returns true if it succeeded. + Cancel() bool +} + +// File represents an input/output resource with a file descriptor. +type File interface { + io.ReadWriteCloser + + // Fd returns its file descriptor + Fd() uintptr + + // Name returns its file name. + Name() string +} + +// fallbackCancelReader implements cancelReader but does not actually support +// cancelation during an ongoing Read() call. Thus, Cancel() always returns +// false. However, after calling Cancel(), new Read() calls immediately return +// errCanceled and don't consume any data anymore. +type fallbackCancelReader struct { + r io.Reader + cancelMixin +} + +// newFallbackCancelReader is a fallback for NewReader that cannot actually +// cancel an ongoing read but will immediately return on future reads if it has +// been canceled. +func newFallbackCancelReader(reader io.Reader) (CancelReader, error) { + return &fallbackCancelReader{r: reader}, nil +} + +func (r *fallbackCancelReader) Read(data []byte) (int, error) { + if r.isCanceled() { + return 0, ErrCanceled + } + + n, err := r.r.Read(data) + /* + If the underlying reader is a blocking reader (e.g. an open connection), + it might happen that 1 goroutine cancels the reader while its stuck in + the read call waiting for something. + If that happens, we should still cancel the read. + */ + if r.isCanceled() { + return 0, ErrCanceled + } + return n, err // nolint: wrapcheck +} + +func (r *fallbackCancelReader) Cancel() bool { + r.setCanceled() + return false +} + +func (r *fallbackCancelReader) Close() error { + return nil +} + +// cancelMixin represents a goroutine-safe cancelation status. +type cancelMixin struct { + unsafeCanceled bool + lock sync.Mutex +} + +func (c *cancelMixin) isCanceled() bool { + c.lock.Lock() + defer c.lock.Unlock() + + return c.unsafeCanceled +} + +func (c *cancelMixin) setCanceled() { + c.lock.Lock() + defer c.lock.Unlock() + + c.unsafeCanceled = true +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_bsd.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_bsd.go new file mode 100644 index 0000000..3ddb6cf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_bsd.go @@ -0,0 +1,146 @@ +//go:build darwin || freebsd || netbsd || openbsd || dragonfly +// +build darwin freebsd netbsd openbsd dragonfly + +package cancelreader + +import ( + "errors" + "fmt" + "io" + "os" + "strings" + + "golang.org/x/sys/unix" +) + +// NewReader returns a reader and a cancel function. If the input reader is a +// File, the cancel function can be used to interrupt a blocking read call. +// In this case, the cancel function returns true if the call was canceled +// successfully. If the input reader is not a File, the cancel function +// does nothing and always returns false. The BSD and macOS implementation is +// based on the kqueue mechanism. +func NewReader(reader io.Reader) (CancelReader, error) { + file, ok := reader.(File) + if !ok { + return newFallbackCancelReader(reader) + } + + // kqueue returns instantly when polling /dev/tty so fallback to select + if file.Name() == "/dev/tty" { + return newSelectCancelReader(reader) + } + + kQueue, err := unix.Kqueue() + if err != nil { + return nil, fmt.Errorf("create kqueue: %w", err) + } + + r := &kqueueCancelReader{ + file: file, + kQueue: kQueue, + } + + r.cancelSignalReader, r.cancelSignalWriter, err = os.Pipe() + if err != nil { + _ = unix.Close(kQueue) + return nil, err + } + + unix.SetKevent(&r.kQueueEvents[0], int(file.Fd()), unix.EVFILT_READ, unix.EV_ADD) + unix.SetKevent(&r.kQueueEvents[1], int(r.cancelSignalReader.Fd()), unix.EVFILT_READ, unix.EV_ADD) + + return r, nil +} + +type kqueueCancelReader struct { + file File + cancelSignalReader File + cancelSignalWriter File + cancelMixin + kQueue int + kQueueEvents [2]unix.Kevent_t +} + +func (r *kqueueCancelReader) Read(data []byte) (int, error) { + if r.isCanceled() { + return 0, ErrCanceled + } + + err := r.wait() + if err != nil { + if errors.Is(err, ErrCanceled) { + // remove signal from pipe + var b [1]byte + _, errRead := r.cancelSignalReader.Read(b[:]) + if errRead != nil { + return 0, fmt.Errorf("reading cancel signal: %w", errRead) + } + } + + return 0, err + } + + return r.file.Read(data) +} + +func (r *kqueueCancelReader) Cancel() bool { + r.setCanceled() + + // send cancel signal + _, err := r.cancelSignalWriter.Write([]byte{'c'}) + return err == nil +} + +func (r *kqueueCancelReader) Close() error { + var errMsgs []string + + // close kqueue + err := unix.Close(r.kQueue) + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing kqueue: %v", err)) + } + + // close pipe + err = r.cancelSignalWriter.Close() + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing cancel signal writer: %v", err)) + } + + err = r.cancelSignalReader.Close() + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing cancel signal reader: %v", err)) + } + + if len(errMsgs) > 0 { + return fmt.Errorf(strings.Join(errMsgs, ", ")) + } + + return nil +} + +func (r *kqueueCancelReader) wait() error { + events := make([]unix.Kevent_t, 1) + + for { + _, err := unix.Kevent(r.kQueue, r.kQueueEvents[:], events, nil) + if errors.Is(err, unix.EINTR) { + continue // try again if the syscall was interrupted + } + + if err != nil { + return fmt.Errorf("kevent: %w", err) + } + + break + } + + ident := uint64(events[0].Ident) + switch ident { + case uint64(r.file.Fd()): + return nil + case uint64(r.cancelSignalReader.Fd()): + return ErrCanceled + } + + return fmt.Errorf("unknown error") +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_default.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_default.go new file mode 100644 index 0000000..8e275fa --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_default.go @@ -0,0 +1,12 @@ +//go:build !darwin && !windows && !linux && !solaris && !freebsd && !netbsd && !openbsd && !dragonfly +// +build !darwin,!windows,!linux,!solaris,!freebsd,!netbsd,!openbsd,!dragonfly + +package cancelreader + +import "io" + +// NewReader returns a fallbackCancelReader that satisfies the CancelReader but +// does not actually support cancellation. +func NewReader(reader io.Reader) (CancelReader, error) { + return newFallbackCancelReader(reader) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_linux.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_linux.go new file mode 100644 index 0000000..09f7369 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_linux.go @@ -0,0 +1,154 @@ +//go:build linux +// +build linux + +package cancelreader + +import ( + "errors" + "fmt" + "io" + "os" + "strings" + + "golang.org/x/sys/unix" +) + +// NewReader returns a reader and a cancel function. If the input reader is a +// File, the cancel function can be used to interrupt a blocking read call. +// In this case, the cancel function returns true if the call was canceled +// successfully. If the input reader is not a File, the cancel function +// does nothing and always returns false. The Linux implementation is based on +// the epoll mechanism. +func NewReader(reader io.Reader) (CancelReader, error) { + file, ok := reader.(File) + if !ok { + return newFallbackCancelReader(reader) + } + + epoll, err := unix.EpollCreate1(0) + if err != nil { + return nil, fmt.Errorf("create epoll: %w", err) + } + + r := &epollCancelReader{ + file: file, + epoll: epoll, + } + + r.cancelSignalReader, r.cancelSignalWriter, err = os.Pipe() + if err != nil { + _ = unix.Close(epoll) + return nil, err + } + + err = unix.EpollCtl(epoll, unix.EPOLL_CTL_ADD, int(file.Fd()), &unix.EpollEvent{ + Events: unix.EPOLLIN, + Fd: int32(file.Fd()), + }) + if err != nil { + _ = unix.Close(epoll) + return nil, fmt.Errorf("add reader to epoll interest list") + } + + err = unix.EpollCtl(epoll, unix.EPOLL_CTL_ADD, int(r.cancelSignalReader.Fd()), &unix.EpollEvent{ + Events: unix.EPOLLIN, + Fd: int32(r.cancelSignalReader.Fd()), + }) + if err != nil { + _ = unix.Close(epoll) + return nil, fmt.Errorf("add reader to epoll interest list") + } + + return r, nil +} + +type epollCancelReader struct { + file File + cancelSignalReader File + cancelSignalWriter File + cancelMixin + epoll int +} + +func (r *epollCancelReader) Read(data []byte) (int, error) { + if r.isCanceled() { + return 0, ErrCanceled + } + + err := r.wait() + if err != nil { + if errors.Is(err, ErrCanceled) { + // remove signal from pipe + var b [1]byte + _, readErr := r.cancelSignalReader.Read(b[:]) + if readErr != nil { + return 0, fmt.Errorf("reading cancel signal: %w", readErr) + } + } + + return 0, err + } + + return r.file.Read(data) +} + +func (r *epollCancelReader) Cancel() bool { + r.setCanceled() + + // send cancel signal + _, err := r.cancelSignalWriter.Write([]byte{'c'}) + return err == nil +} + +func (r *epollCancelReader) Close() error { + var errMsgs []string + + // close kqueue + err := unix.Close(r.epoll) + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing epoll: %v", err)) + } + + // close pipe + err = r.cancelSignalWriter.Close() + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing cancel signal writer: %v", err)) + } + + err = r.cancelSignalReader.Close() + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing cancel signal reader: %v", err)) + } + + if len(errMsgs) > 0 { + return fmt.Errorf(strings.Join(errMsgs, ", ")) + } + + return nil +} + +func (r *epollCancelReader) wait() error { + events := make([]unix.EpollEvent, 1) + + for { + _, err := unix.EpollWait(r.epoll, events, -1) + if errors.Is(err, unix.EINTR) { + continue // try again if the syscall was interrupted + } + + if err != nil { + return fmt.Errorf("kevent: %w", err) + } + + break + } + + switch events[0].Fd { + case int32(r.file.Fd()): + return nil + case int32(r.cancelSignalReader.Fd()): + return ErrCanceled + } + + return fmt.Errorf("unknown error") +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_select.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_select.go new file mode 100644 index 0000000..03f2a3e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_select.go @@ -0,0 +1,136 @@ +//go:build solaris || darwin || freebsd || netbsd || openbsd || dragonfly +// +build solaris darwin freebsd netbsd openbsd dragonfly + +package cancelreader + +import ( + "errors" + "fmt" + "io" + "os" + "strings" + + "golang.org/x/sys/unix" +) + +// newSelectCancelReader returns a reader and a cancel function. If the input +// reader is a File, the cancel function can be used to interrupt a +// blocking call read call. In this case, the cancel function returns true if +// the call was canceled successfully. If the input reader is not a File or +// the file descriptor is 1024 or larger, the cancel function does nothing and +// always returns false. The generic unix implementation is based on the posix +// select syscall. +func newSelectCancelReader(reader io.Reader) (CancelReader, error) { + file, ok := reader.(File) + if !ok || file.Fd() >= unix.FD_SETSIZE { + return newFallbackCancelReader(reader) + } + r := &selectCancelReader{file: file} + + var err error + + r.cancelSignalReader, r.cancelSignalWriter, err = os.Pipe() + if err != nil { + return nil, err + } + + return r, nil +} + +type selectCancelReader struct { + file File + cancelSignalReader File + cancelSignalWriter File + cancelMixin +} + +func (r *selectCancelReader) Read(data []byte) (int, error) { + if r.isCanceled() { + return 0, ErrCanceled + } + + for { + err := waitForRead(r.file, r.cancelSignalReader) + if err != nil { + if errors.Is(err, unix.EINTR) { + continue // try again if the syscall was interrupted + } + + if errors.Is(err, ErrCanceled) { + // remove signal from pipe + var b [1]byte + _, readErr := r.cancelSignalReader.Read(b[:]) + if readErr != nil { + return 0, fmt.Errorf("reading cancel signal: %w", readErr) + } + } + + return 0, err + } + + return r.file.Read(data) + } +} + +func (r *selectCancelReader) Cancel() bool { + r.setCanceled() + + // send cancel signal + _, err := r.cancelSignalWriter.Write([]byte{'c'}) + return err == nil +} + +func (r *selectCancelReader) Close() error { + var errMsgs []string + + // close pipe + err := r.cancelSignalWriter.Close() + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing cancel signal writer: %v", err)) + } + + err = r.cancelSignalReader.Close() + if err != nil { + errMsgs = append(errMsgs, fmt.Sprintf("closing cancel signal reader: %v", err)) + } + + if len(errMsgs) > 0 { + return fmt.Errorf(strings.Join(errMsgs, ", ")) + } + + return nil +} + +func waitForRead(reader, abort File) error { + readerFd := int(reader.Fd()) + abortFd := int(abort.Fd()) + + maxFd := readerFd + if abortFd > maxFd { + maxFd = abortFd + } + + // this is a limitation of the select syscall + if maxFd >= unix.FD_SETSIZE { + return fmt.Errorf("cannot select on file descriptor %d which is larger than 1024", maxFd) + } + + fdSet := &unix.FdSet{} + fdSet.Set(int(reader.Fd())) + fdSet.Set(int(abort.Fd())) + + _, err := unix.Select(maxFd+1, fdSet, nil, nil, nil) + if err != nil { + return fmt.Errorf("select: %w", err) + } + + if fdSet.IsSet(abortFd) { + return ErrCanceled + } + + if fdSet.IsSet(readerFd) { + return nil + } + + return fmt.Errorf("select returned without setting a file descriptor") +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_unix.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_unix.go new file mode 100644 index 0000000..3c10ee0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_unix.go @@ -0,0 +1,18 @@ +//go:build solaris +// +build solaris + +package cancelreader + +import ( + "io" +) + +// NewReader returns a reader and a cancel function. If the input reader is a +// File, the cancel function can be used to interrupt a blocking read call. +// In this case, the cancel function returns true if the call was canceled +// successfully. If the input reader is not a File or the file descriptor +// is 1024 or larger, the cancel function does nothing and always returns false. +// The generic unix implementation is based on the posix select syscall. +func NewReader(reader io.Reader) (CancelReader, error) { + return newSelectCancelReader(reader) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_windows.go b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_windows.go new file mode 100644 index 0000000..c1dc8d5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/cancelreader/cancelreader_windows.go @@ -0,0 +1,244 @@ +//go:build windows +// +build windows + +package cancelreader + +import ( + "fmt" + "io" + "os" + "syscall" + "time" + "unicode/utf16" + + "golang.org/x/sys/windows" +) + +var fileShareValidFlags uint32 = 0x00000007 + +// NewReader returns a reader and a cancel function. If the input reader is a +// File with the same file descriptor as os.Stdin, the cancel function can +// be used to interrupt a blocking read call. In this case, the cancel function +// returns true if the call was canceled successfully. If the input reader is +// not a File with the same file descriptor as os.Stdin, the cancel +// function does nothing and always returns false. The Windows implementation +// is based on WaitForMultipleObject with overlapping reads from CONIN$. +func NewReader(reader io.Reader) (CancelReader, error) { + if f, ok := reader.(File); !ok || f.Fd() != os.Stdin.Fd() { + return newFallbackCancelReader(reader) + } + + // it is necessary to open CONIN$ (NOT windows.STD_INPUT_HANDLE) in + // overlapped mode to be able to use it with WaitForMultipleObjects. + conin, err := windows.CreateFile( + &(utf16.Encode([]rune("CONIN$\x00"))[0]), windows.GENERIC_READ|windows.GENERIC_WRITE, + fileShareValidFlags, nil, windows.OPEN_EXISTING, windows.FILE_FLAG_OVERLAPPED, 0) + if err != nil { + return nil, fmt.Errorf("open CONIN$ in overlapping mode: %w", err) + } + + resetConsole, err := prepareConsole(conin) + if err != nil { + return nil, fmt.Errorf("prepare console: %w", err) + } + + // flush input, otherwise it can contain events which trigger + // WaitForMultipleObjects but which ReadFile cannot read, resulting in an + // un-cancelable read + err = flushConsoleInputBuffer(conin) + if err != nil { + return nil, fmt.Errorf("flush console input buffer: %w", err) + } + + cancelEvent, err := windows.CreateEvent(nil, 0, 0, nil) + if err != nil { + return nil, fmt.Errorf("create stop event: %w", err) + } + + return &winCancelReader{ + conin: conin, + cancelEvent: cancelEvent, + resetConsole: resetConsole, + blockingReadSignal: make(chan struct{}, 1), + }, nil +} + +type winCancelReader struct { + conin windows.Handle + cancelEvent windows.Handle + cancelMixin + + resetConsole func() error + blockingReadSignal chan struct{} +} + +func (r *winCancelReader) Read(data []byte) (int, error) { + if r.isCanceled() { + return 0, ErrCanceled + } + + err := r.wait() + if err != nil { + return 0, err + } + + if r.isCanceled() { + return 0, ErrCanceled + } + + // windows.Read does not work on overlapping windows.Handles + return r.readAsync(data) +} + +// Cancel cancels ongoing and future Read() calls and returns true if the +// cancelation of the ongoing Read() was successful. On Windows Terminal, +// WaitForMultipleObjects sometimes immediately returns without input being +// available. In this case, graceful cancelation is not possible and Cancel() +// returns false. +func (r *winCancelReader) Cancel() bool { + r.setCanceled() + + select { + case r.blockingReadSignal <- struct{}{}: + err := windows.SetEvent(r.cancelEvent) + if err != nil { + return false + } + <-r.blockingReadSignal + case <-time.After(100 * time.Millisecond): + // Read() hangs in a GetOverlappedResult which is likely due to + // WaitForMultipleObjects returning without input being available + // so we cannot cancel this ongoing read. + return false + } + + return true +} + +func (r *winCancelReader) Close() error { + err := windows.CloseHandle(r.cancelEvent) + if err != nil { + return fmt.Errorf("closing cancel event handle: %w", err) + } + + err = r.resetConsole() + if err != nil { + return err + } + + err = windows.Close(r.conin) + if err != nil { + return fmt.Errorf("closing CONIN$") + } + + return nil +} + +func (r *winCancelReader) wait() error { + event, err := windows.WaitForMultipleObjects([]windows.Handle{r.conin, r.cancelEvent}, false, windows.INFINITE) + switch { + case windows.WAIT_OBJECT_0 <= event && event < windows.WAIT_OBJECT_0+2: + if event == windows.WAIT_OBJECT_0+1 { + return ErrCanceled + } + + if event == windows.WAIT_OBJECT_0 { + return nil + } + + return fmt.Errorf("unexpected wait object is ready: %d", event-windows.WAIT_OBJECT_0) + case windows.WAIT_ABANDONED <= event && event < windows.WAIT_ABANDONED+2: + return fmt.Errorf("abandoned") + case event == uint32(windows.WAIT_TIMEOUT): + return fmt.Errorf("timeout") + case event == windows.WAIT_FAILED: + return fmt.Errorf("failed") + default: + return fmt.Errorf("unexpected error: %w", error(err)) + } +} + +// readAsync is necessary to read from a windows.Handle in overlapping mode. +func (r *winCancelReader) readAsync(data []byte) (int, error) { + hevent, err := windows.CreateEvent(nil, 0, 0, nil) + if err != nil { + return 0, fmt.Errorf("create event: %w", err) + } + + overlapped := windows.Overlapped{ + HEvent: hevent, + } + + var n uint32 + + err = windows.ReadFile(r.conin, data, &n, &overlapped) + if err != nil && err != windows.ERROR_IO_PENDING { + return int(n), err + } + + r.blockingReadSignal <- struct{}{} + err = windows.GetOverlappedResult(r.conin, &overlapped, &n, true) + if err != nil { + return int(n), nil + } + <-r.blockingReadSignal + + return int(n), nil +} + +func prepareConsole(input windows.Handle) (reset func() error, err error) { + var originalMode uint32 + + err = windows.GetConsoleMode(input, &originalMode) + if err != nil { + return nil, fmt.Errorf("get console mode: %w", err) + } + + var newMode uint32 + newMode &^= windows.ENABLE_ECHO_INPUT + newMode &^= windows.ENABLE_LINE_INPUT + newMode &^= windows.ENABLE_MOUSE_INPUT + newMode &^= windows.ENABLE_WINDOW_INPUT + newMode &^= windows.ENABLE_PROCESSED_INPUT + + newMode |= windows.ENABLE_EXTENDED_FLAGS + newMode |= windows.ENABLE_INSERT_MODE + newMode |= windows.ENABLE_QUICK_EDIT_MODE + + // Enabling virtual terminal input is necessary for processing certain + // types of input like X10 mouse events and arrows keys with the current + // bytes-based input reader. It does, however, prevent cancelReader from + // being able to cancel input. The planned solution for this is to read + // Windows events in a more native fashion, rather than the current simple + // bytes-based input reader which works well on unix systems. + newMode |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT + + err = windows.SetConsoleMode(input, newMode) + if err != nil { + return nil, fmt.Errorf("set console mode: %w", err) + } + + return func() error { + err := windows.SetConsoleMode(input, originalMode) + if err != nil { + return fmt.Errorf("reset console mode: %w", err) + } + + return nil + }, nil +} + +var ( + modkernel32 = windows.NewLazySystemDLL("kernel32.dll") + procFlushConsoleInputBuffer = modkernel32.NewProc("FlushConsoleInputBuffer") +) + +func flushConsoleInputBuffer(consoleInput windows.Handle) error { + r, _, e := syscall.Syscall(procFlushConsoleInputBuffer.Addr(), 1, + uintptr(consoleInput), 0, 0) + if r == 0 { + return error(e) + } + + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.gitignore b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.gitignore new file mode 100644 index 0000000..66fd13c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.gitignore @@ -0,0 +1,15 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci-soft.yml b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci-soft.yml new file mode 100644 index 0000000..84e3d41 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci-soft.yml @@ -0,0 +1,43 @@ +run: + tests: false + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + # - dupl + - exhaustive + # - exhaustivestruct + - goconst + - godot + - godox + - mnd + - gomoddirectives + - goprintffuncname + # - lll + - misspell + - nakedret + - nestif + - noctx + - nolintlint + - prealloc + - wrapcheck + + # disable default linters, they are already enabled in .golangci.yml + disable: + - errcheck + - gosimple + - govet + - ineffassign + - staticcheck + - typecheck + - unused diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci.yml b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci.yml new file mode 100644 index 0000000..684d54b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/.golangci.yml @@ -0,0 +1,28 @@ +run: + tests: false + +issues: + include: + - EXC0001 + - EXC0005 + - EXC0011 + - EXC0012 + - EXC0013 + + max-issues-per-linter: 0 + max-same-issues: 0 + +linters: + enable: + - bodyclose + - goimports + - gosec + - nilerr + - predeclared + - revive + - rowserrcheck + - sqlclosecheck + - tparallel + - unconvert + - unparam + - whitespace diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/LICENSE b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/LICENSE new file mode 100644 index 0000000..8532c45 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Christian Muehlhaeuser + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/README.md b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/README.md new file mode 100644 index 0000000..fa7929d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/README.md @@ -0,0 +1,431 @@ +

+ termenv Logo +
+
Latest Release + GoDoc + Build Status + Coverage Status + Go ReportCard +
+ Example terminal output +

+ +`termenv` lets you safely use advanced styling options on the terminal. It +gathers information about the terminal environment in terms of its ANSI & color +support and offers you convenient methods to colorize and style your output, +without you having to deal with all kinds of weird ANSI escape sequences and +color conversions. + +## Features + +- RGB/TrueColor support +- Detects the supported color range of your terminal +- Automatically converts colors to the best matching, available colors +- Terminal theme (light/dark) detection +- Chainable syntax +- Nested styles + +## Installation + +```bash +go get github.com/muesli/termenv +``` + +## Usage + +```go +output := termenv.NewOutput(os.Stdout) +``` + +`termenv` queries the terminal's capabilities it is running in, so you can +safely use advanced features, like RGB colors or ANSI styles. `output.Profile` +returns the supported profile: + +- `termenv.Ascii` - no ANSI support detected, ASCII only +- `termenv.ANSI` - 16 color ANSI support +- `termenv.ANSI256` - Extended 256 color ANSI support +- `termenv.TrueColor` - RGB/TrueColor support + +Alternatively, you can use `termenv.EnvColorProfile` which evaluates the +terminal like `ColorProfile`, but also respects the `NO_COLOR` and +`CLICOLOR_FORCE` environment variables. + +You can also query the terminal for its color scheme, so you know whether your +app is running in a light- or dark-themed environment: + +```go +// Returns terminal's foreground color +color := output.ForegroundColor() + +// Returns terminal's background color +color := output.BackgroundColor() + +// Returns whether terminal uses a dark-ish background +darkTheme := output.HasDarkBackground() +``` + +### Manual Profile Selection + +If you don't want to rely on the automatic detection, you can manually select +the profile you want to use: + +```go +output := termenv.NewOutput(os.Stdout, termenv.WithProfile(termenv.TrueColor)) +``` + +## Colors + +`termenv` supports multiple color profiles: Ascii (black & white only), +ANSI (16 colors), ANSI Extended (256 colors), and TrueColor (24-bit RGB). Colors +will automatically be degraded to the best matching available color in the +desired profile: + +`TrueColor` => `ANSI 256 Colors` => `ANSI 16 Colors` => `Ascii` + +```go +s := output.String("Hello World") + +// Supports hex values +// Will automatically degrade colors on terminals not supporting RGB +s.Foreground(output.Color("#abcdef")) +// but also supports ANSI colors (0-255) +s.Background(output.Color("69")) +// ...or the color.Color interface +s.Foreground(output.FromColor(color.RGBA{255, 128, 0, 255})) + +// Combine fore- & background colors +s.Foreground(output.Color("#ffffff")).Background(output.Color("#0000ff")) + +// Supports the fmt.Stringer interface +fmt.Println(s) +``` + +## Styles + +You can use a chainable syntax to compose your own styles: + +```go +s := output.String("foobar") + +// Text styles +s.Bold() +s.Faint() +s.Italic() +s.CrossOut() +s.Underline() +s.Overline() + +// Reverse swaps current fore- & background colors +s.Reverse() + +// Blinking text +s.Blink() + +// Combine multiple options +s.Bold().Underline() +``` + +## Template Helpers + +`termenv` provides a set of helper functions to style your Go templates: + +```go +// load template helpers +f := output.TemplateFuncs() +tpl := template.New("tpl").Funcs(f) + +// apply bold style in a template +bold := `{{ Bold "Hello World" }}` + +// examples for colorized templates +col := `{{ Color "#ff0000" "#0000ff" "Red on Blue" }}` +fg := `{{ Foreground "#ff0000" "Red Foreground" }}` +bg := `{{ Background "#0000ff" "Blue Background" }}` + +// wrap styles +wrap := `{{ Bold (Underline "Hello World") }}` + +// parse and render +tpl, err = tpl.Parse(bold) + +var buf bytes.Buffer +tpl.Execute(&buf, nil) +fmt.Println(&buf) +``` + +Other available helper functions are: `Faint`, `Italic`, `CrossOut`, +`Underline`, `Overline`, `Reverse`, and `Blink`. + +## Positioning + +```go +// Move the cursor to a given position +output.MoveCursor(row, column) + +// Save the cursor position +output.SaveCursorPosition() + +// Restore a saved cursor position +output.RestoreCursorPosition() + +// Move the cursor up a given number of lines +output.CursorUp(n) + +// Move the cursor down a given number of lines +output.CursorDown(n) + +// Move the cursor up a given number of lines +output.CursorForward(n) + +// Move the cursor backwards a given number of cells +output.CursorBack(n) + +// Move the cursor down a given number of lines and place it at the beginning +// of the line +output.CursorNextLine(n) + +// Move the cursor up a given number of lines and place it at the beginning of +// the line +output.CursorPrevLine(n) +``` + +## Screen + +```go +// Reset the terminal to its default style, removing any active styles +output.Reset() + +// RestoreScreen restores a previously saved screen state +output.RestoreScreen() + +// SaveScreen saves the screen state +output.SaveScreen() + +// Switch to the altscreen. The former view can be restored with ExitAltScreen() +output.AltScreen() + +// Exit the altscreen and return to the former terminal view +output.ExitAltScreen() + +// Clear the visible portion of the terminal +output.ClearScreen() + +// Clear the current line +output.ClearLine() + +// Clear a given number of lines +output.ClearLines(n) + +// Set the scrolling region of the terminal +output.ChangeScrollingRegion(top, bottom) + +// Insert the given number of lines at the top of the scrollable region, pushing +// lines below down +output.InsertLines(n) + +// Delete the given number of lines, pulling any lines in the scrollable region +// below up +output.DeleteLines(n) +``` + +## Session + +```go +// SetWindowTitle sets the terminal window title +output.SetWindowTitle(title) + +// SetForegroundColor sets the default foreground color +output.SetForegroundColor(color) + +// SetBackgroundColor sets the default background color +output.SetBackgroundColor(color) + +// SetCursorColor sets the cursor color +output.SetCursorColor(color) + +// Hide the cursor +output.HideCursor() + +// Show the cursor +output.ShowCursor() + +// Copy to clipboard +output.Copy(message) + +// Copy to primary clipboard (X11) +output.CopyPrimary(message) + +// Trigger notification +output.Notify(title, body) +``` + +## Mouse + +```go +// Enable X10 mouse mode, only button press events are sent +output.EnableMousePress() + +// Disable X10 mouse mode +output.DisableMousePress() + +// Enable Mouse Tracking mode +output.EnableMouse() + +// Disable Mouse Tracking mode +output.DisableMouse() + +// Enable Hilite Mouse Tracking mode +output.EnableMouseHilite() + +// Disable Hilite Mouse Tracking mode +output.DisableMouseHilite() + +// Enable Cell Motion Mouse Tracking mode +output.EnableMouseCellMotion() + +// Disable Cell Motion Mouse Tracking mode +output.DisableMouseCellMotion() + +// Enable All Motion Mouse mode +output.EnableMouseAllMotion() + +// Disable All Motion Mouse mode +output.DisableMouseAllMotion() +``` + +## Bracketed Paste + +```go +// Enables bracketed paste mode +termenv.EnableBracketedPaste() + +// Disables bracketed paste mode +termenv.DisableBracketedPaste() +``` + +## Terminal Feature Support + +### Color Support + +- 24-bit (RGB): alacritty, foot, iTerm, kitty, Konsole, st, tmux, vte-based, wezterm, Ghostty, Windows Terminal +- 8-bit (256): rxvt, screen, xterm, Apple Terminal +- 4-bit (16): Linux Console + +### Control Sequences + +
+Click to show feature matrix + +| Terminal | Query Color Scheme | Query Cursor Position | Set Window Title | Change Cursor Color | Change Default Foreground Setting | Change Default Background Setting | Bracketed Paste | Extended Mouse (SGR) | Pixels Mouse (SGR-Pixels) | +| ---------------- | :----------------: | :-------------------: | :--------------: | :-----------------: | :-------------------------------: | :-------------------------------: | :-------------: | :------------------: | :-----------------------: | +| alacritty | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | +| foot | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| kitty | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Konsole | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | +| rxvt | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | +| urxvt | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | +| screen | ⛔[^mux] | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | +| st | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | +| tmux | ⛔[^mux] | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | +| vte-based[^vte] | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | +| wezterm | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| xterm | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | +| Linux Console | ❌ | ✅ | ⛔ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | +| Apple Terminal | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | +| iTerm | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | +| Windows cmd | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | +| Windows Terminal | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | + +[^vte]: This covers all vte-based terminals, including Gnome Terminal, guake, Pantheon Terminal, Terminator, Tilix, XFCE Terminal. +[^mux]: Unavailable as multiplexers (like tmux or screen) can be connected to multiple terminals (with different color settings) at the same time. + +You can help improve this list! Check out [how to](ansi_compat.md) and open an issue or pull request. + +
+ +### System Commands + +
+Click to show feature matrix + +| Terminal | Copy to Clipboard (OSC52) | Hyperlinks (OSC8) | Notifications (OSC777) | +| ---------------- | :-----------------------: | :---------------: | :--------------------: | +| alacritty | ✅ | ✅[^alacritty] | ❌ | +| foot | ✅ | ✅ | ✅ | +| kitty | ✅ | ✅ | ✅ | +| Konsole | ❌[^konsole] | ✅ | ❌ | +| rxvt | ❌ | ❌ | ❌ | +| urxvt | ✅[^urxvt] | ❌ | ✅ | +| screen | ✅ | ❌[^screen] | ❌ | +| st | ✅ | ❌ | ❌ | +| tmux | ✅ | ❌[^tmux] | ❌ | +| vte-based[^vte] | ❌[^vte] | ✅ | ❌ | +| wezterm | ✅ | ✅ | ❌ | +| xterm | ✅ | ❌ | ❌ | +| Linux Console | ⛔ | ⛔ | ❌ | +| Apple Terminal | ✅[^apple] | ❌ | ❌ | +| iTerm | ✅ | ✅ | ❌ | +| Windows cmd | ❌ | ❌ | ❌ | +| Windows Terminal | ✅ | ✅ | ❌ | + +[^vte]: This covers all vte-based terminals, including Gnome Terminal, guake, Pantheon Terminal, Terminator, Tilix, XFCE Terminal. OSC52 is not supported, see [issue#2495](https://gitlab.gnome.org/GNOME/vte/-/issues/2495). +[^urxvt]: Workaround for urxvt not supporting OSC52. See [this](https://unix.stackexchange.com/a/629485) for more information. +[^konsole]: OSC52 is not supported, for more info see [bug#372116](https://bugs.kde.org/show_bug.cgi?id=372116). +[^apple]: OSC52 works with a [workaround](https://github.com/roy2220/osc52pty). +[^tmux]: OSC8 is not supported, for more info see [issue#911](https://github.com/tmux/tmux/issues/911). +[^screen]: OSC8 is not supported, for more info see [bug#50952](https://savannah.gnu.org/bugs/index.php?50952). +[^alacritty]: OSC8 is supported since [v0.11.0](https://github.com/alacritty/alacritty/releases/tag/v0.11.0) + +
+ +## Platform Support + +`termenv` works on Unix systems (like Linux, macOS, or BSD) and Windows. While +terminal applications on Unix support ANSI styling out-of-the-box, on Windows +you need to enable ANSI processing in your application first: + +```go + restoreConsole, err := termenv.EnableVirtualTerminalProcessing(termenv.DefaultOutput()) + if err != nil { + panic(err) + } + defer restoreConsole() +``` + +The above code is safe to include on non-Windows systems or when os.Stdout does +not refer to a terminal (e.g. in tests). + +## Color Chart + +![ANSI color chart](https://github.com/muesli/termenv/raw/master/examples/color-chart/color-chart.png) + +You can find the source code used to create this chart in `termenv`'s examples. + +## Related Projects + +- [reflow](https://github.com/muesli/reflow) - ANSI-aware text operations +- [Lip Gloss](https://github.com/charmbracelet/lipgloss) - style definitions for nice terminal layouts 👄 +- [ansi](https://github.com/muesli/ansi) - ANSI sequence helpers + +## termenv in the Wild + +Need some inspiration or just want to see how others are using `termenv`? Check +out these projects: + +- [Bubble Tea](https://github.com/charmbracelet/bubbletea) - a powerful little TUI framework 🏗 +- [Glamour](https://github.com/charmbracelet/glamour) - stylesheet-based markdown rendering for your CLI apps 💇🏻‍♀️ +- [Glow](https://github.com/charmbracelet/glow) - a markdown renderer for the command-line 💅🏻 +- [duf](https://github.com/muesli/duf) - Disk Usage/Free Utility - a better 'df' alternative +- [gitty](https://github.com/muesli/gitty) - contextual information about your git projects +- [slides](https://github.com/maaslalani/slides) - terminal-based presentation tool + +## Feedback + +Got some feedback or suggestions? Please open an issue or drop me a note! + +- [Twitter](https://twitter.com/mueslix) +- [The Fediverse](https://mastodon.social/@fribbledom) + +## License + +[MIT](https://github.com/muesli/termenv/raw/master/LICENSE) diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansi_compat.md b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansi_compat.md new file mode 100644 index 0000000..6b68a3a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansi_compat.md @@ -0,0 +1,65 @@ +## Change Foreground Color + +This command should enable a blue foreground color: + +```bash +echo -ne "\033]10;#0000ff\007" +``` + +## Change Background Color + +This command should enable a green background color: + +```bash +echo -ne "\033]11;#00ff00\007" +``` + +## Change Cursor Color + +This command should enable a red cursor color: + +```bash +echo -ne "\033]12;#ff0000\007" +``` + +## Query Color Scheme + +These two commands should print out the currently active color scheme: + +```bash +echo -ne "\033]10;?\033\\" +echo -ne "\033]11;?\033\\" +``` + +## Query Cursor Position + +This command should print out the current cursor position: + +```bash +echo -ne "\033[6n" +``` + +## Set Window Title + +This command should set the window title to "Test": + +```bash +echo -ne "\033]2;Test\007" && sleep 10 +``` + +## Bracketed paste + +Enter this command, then paste a word from the clipboard. The text +displayed on the terminal should contain the codes `200~` and `201~`: + +```bash +echo -ne "\033[?2004h" && sleep 10 +``` + +## Trigger Notification + +This command should trigger a notification: + +```bash +echo -ne "\033]777;notify;Title;Body\033\\" +``` diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansicolors.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansicolors.go new file mode 100644 index 0000000..1a301b0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/ansicolors.go @@ -0,0 +1,281 @@ +package termenv + +// ANSI color codes. +const ( + ANSIBlack ANSIColor = iota + ANSIRed + ANSIGreen + ANSIYellow + ANSIBlue + ANSIMagenta + ANSICyan + ANSIWhite + ANSIBrightBlack + ANSIBrightRed + ANSIBrightGreen + ANSIBrightYellow + ANSIBrightBlue + ANSIBrightMagenta + ANSIBrightCyan + ANSIBrightWhite +) + +// RGB values of ANSI colors (0-255). +var ansiHex = []string{ + "#000000", + "#800000", + "#008000", + "#808000", + "#000080", + "#800080", + "#008080", + "#c0c0c0", + "#808080", + "#ff0000", + "#00ff00", + "#ffff00", + "#0000ff", + "#ff00ff", + "#00ffff", + "#ffffff", + "#000000", + "#00005f", + "#000087", + "#0000af", + "#0000d7", + "#0000ff", + "#005f00", + "#005f5f", + "#005f87", + "#005faf", + "#005fd7", + "#005fff", + "#008700", + "#00875f", + "#008787", + "#0087af", + "#0087d7", + "#0087ff", + "#00af00", + "#00af5f", + "#00af87", + "#00afaf", + "#00afd7", + "#00afff", + "#00d700", + "#00d75f", + "#00d787", + "#00d7af", + "#00d7d7", + "#00d7ff", + "#00ff00", + "#00ff5f", + "#00ff87", + "#00ffaf", + "#00ffd7", + "#00ffff", + "#5f0000", + "#5f005f", + "#5f0087", + "#5f00af", + "#5f00d7", + "#5f00ff", + "#5f5f00", + "#5f5f5f", + "#5f5f87", + "#5f5faf", + "#5f5fd7", + "#5f5fff", + "#5f8700", + "#5f875f", + "#5f8787", + "#5f87af", + "#5f87d7", + "#5f87ff", + "#5faf00", + "#5faf5f", + "#5faf87", + "#5fafaf", + "#5fafd7", + "#5fafff", + "#5fd700", + "#5fd75f", + "#5fd787", + "#5fd7af", + "#5fd7d7", + "#5fd7ff", + "#5fff00", + "#5fff5f", + "#5fff87", + "#5fffaf", + "#5fffd7", + "#5fffff", + "#870000", + "#87005f", + "#870087", + "#8700af", + "#8700d7", + "#8700ff", + "#875f00", + "#875f5f", + "#875f87", + "#875faf", + "#875fd7", + "#875fff", + "#878700", + "#87875f", + "#878787", + "#8787af", + "#8787d7", + "#8787ff", + "#87af00", + "#87af5f", + "#87af87", + "#87afaf", + "#87afd7", + "#87afff", + "#87d700", + "#87d75f", + "#87d787", + "#87d7af", + "#87d7d7", + "#87d7ff", + "#87ff00", + "#87ff5f", + "#87ff87", + "#87ffaf", + "#87ffd7", + "#87ffff", + "#af0000", + "#af005f", + "#af0087", + "#af00af", + "#af00d7", + "#af00ff", + "#af5f00", + "#af5f5f", + "#af5f87", + "#af5faf", + "#af5fd7", + "#af5fff", + "#af8700", + "#af875f", + "#af8787", + "#af87af", + "#af87d7", + "#af87ff", + "#afaf00", + "#afaf5f", + "#afaf87", + "#afafaf", + "#afafd7", + "#afafff", + "#afd700", + "#afd75f", + "#afd787", + "#afd7af", + "#afd7d7", + "#afd7ff", + "#afff00", + "#afff5f", + "#afff87", + "#afffaf", + "#afffd7", + "#afffff", + "#d70000", + "#d7005f", + "#d70087", + "#d700af", + "#d700d7", + "#d700ff", + "#d75f00", + "#d75f5f", + "#d75f87", + "#d75faf", + "#d75fd7", + "#d75fff", + "#d78700", + "#d7875f", + "#d78787", + "#d787af", + "#d787d7", + "#d787ff", + "#d7af00", + "#d7af5f", + "#d7af87", + "#d7afaf", + "#d7afd7", + "#d7afff", + "#d7d700", + "#d7d75f", + "#d7d787", + "#d7d7af", + "#d7d7d7", + "#d7d7ff", + "#d7ff00", + "#d7ff5f", + "#d7ff87", + "#d7ffaf", + "#d7ffd7", + "#d7ffff", + "#ff0000", + "#ff005f", + "#ff0087", + "#ff00af", + "#ff00d7", + "#ff00ff", + "#ff5f00", + "#ff5f5f", + "#ff5f87", + "#ff5faf", + "#ff5fd7", + "#ff5fff", + "#ff8700", + "#ff875f", + "#ff8787", + "#ff87af", + "#ff87d7", + "#ff87ff", + "#ffaf00", + "#ffaf5f", + "#ffaf87", + "#ffafaf", + "#ffafd7", + "#ffafff", + "#ffd700", + "#ffd75f", + "#ffd787", + "#ffd7af", + "#ffd7d7", + "#ffd7ff", + "#ffff00", + "#ffff5f", + "#ffff87", + "#ffffaf", + "#ffffd7", + "#ffffff", + "#080808", + "#121212", + "#1c1c1c", + "#262626", + "#303030", + "#3a3a3a", + "#444444", + "#4e4e4e", + "#585858", + "#626262", + "#6c6c6c", + "#767676", + "#808080", + "#8a8a8a", + "#949494", + "#9e9e9e", + "#a8a8a8", + "#b2b2b2", + "#bcbcbc", + "#c6c6c6", + "#d0d0d0", + "#dadada", + "#e4e4e4", + "#eeeeee", +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/color.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/color.go new file mode 100644 index 0000000..59e639b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/color.go @@ -0,0 +1,205 @@ +package termenv + +import ( + "errors" + "fmt" + "math" + "strings" + + "github.com/lucasb-eyer/go-colorful" +) + +// ErrInvalidColor gets returned when a color is invalid. +var ErrInvalidColor = errors.New("invalid color") + +// Foreground and Background sequence codes. +const ( + Foreground = "38" + Background = "48" +) + +// Color is an interface implemented by all colors that can be converted to an +// ANSI sequence. +type Color interface { + // Sequence returns the ANSI Sequence for the color. + Sequence(bg bool) string +} + +// NoColor is a nop for terminals that don't support colors. +type NoColor struct{} + +func (c NoColor) String() string { + return "" +} + +// ANSIColor is a color (0-15) as defined by the ANSI Standard. +type ANSIColor int + +func (c ANSIColor) String() string { + return ansiHex[c] +} + +// ANSI256Color is a color (16-255) as defined by the ANSI Standard. +type ANSI256Color int + +func (c ANSI256Color) String() string { + return ansiHex[c] +} + +// RGBColor is a hex-encoded color, e.g. "#abcdef". +type RGBColor string + +// ConvertToRGB converts a Color to a colorful.Color. +func ConvertToRGB(c Color) colorful.Color { + var hex string + switch v := c.(type) { + case RGBColor: + hex = string(v) + case ANSIColor: + hex = ansiHex[v] + case ANSI256Color: + hex = ansiHex[v] + } + + ch, _ := colorful.Hex(hex) + return ch +} + +// Sequence returns the ANSI Sequence for the color. +func (c NoColor) Sequence(_ bool) string { + return "" +} + +// Sequence returns the ANSI Sequence for the color. +// +//nolint:mnd +func (c ANSIColor) Sequence(bg bool) string { + col := int(c) + bgMod := func(c int) int { + if bg { + return c + 10 + } + return c + } + + if col < 8 { + return fmt.Sprintf("%d", bgMod(col)+30) //nolint:mnd + } + return fmt.Sprintf("%d", bgMod(col-8)+90) //nolint:mnd +} + +// Sequence returns the ANSI Sequence for the color. +func (c ANSI256Color) Sequence(bg bool) string { + prefix := Foreground + if bg { + prefix = Background + } + return fmt.Sprintf("%s;5;%d", prefix, c) +} + +// Sequence returns the ANSI Sequence for the color. +func (c RGBColor) Sequence(bg bool) string { + f, err := colorful.Hex(string(c)) + if err != nil { + return "" + } + + prefix := Foreground + if bg { + prefix = Background + } + return fmt.Sprintf("%s;2;%d;%d;%d", prefix, uint8(f.R*255), uint8(f.G*255), uint8(f.B*255)) //nolint:mnd +} + +func xTermColor(s string) (RGBColor, error) { + if len(s) < 24 || len(s) > 25 { + return RGBColor(""), ErrInvalidColor + } + + switch { + case strings.HasSuffix(s, string(BEL)): + s = strings.TrimSuffix(s, string(BEL)) + case strings.HasSuffix(s, string(ESC)): + s = strings.TrimSuffix(s, string(ESC)) + case strings.HasSuffix(s, ST): + s = strings.TrimSuffix(s, ST) + default: + return RGBColor(""), ErrInvalidColor + } + + s = s[4:] + + prefix := ";rgb:" + if !strings.HasPrefix(s, prefix) { + return RGBColor(""), ErrInvalidColor + } + s = strings.TrimPrefix(s, prefix) + + h := strings.Split(s, "/") + hex := fmt.Sprintf("#%s%s%s", h[0][:2], h[1][:2], h[2][:2]) + return RGBColor(hex), nil +} + +func ansi256ToANSIColor(c ANSI256Color) ANSIColor { + var r int + md := math.MaxFloat64 + + h, _ := colorful.Hex(ansiHex[c]) + for i := 0; i <= 15; i++ { + hb, _ := colorful.Hex(ansiHex[i]) + d := h.DistanceHSLuv(hb) + + if d < md { + md = d + r = i + } + } + + return ANSIColor(r) +} + +//nolint:mnd +func hexToANSI256Color(c colorful.Color) ANSI256Color { + v2ci := func(v float64) int { + if v < 48 { + return 0 + } + if v < 115 { + return 1 + } + return int((v - 35) / 40) + } + + // Calculate the nearest 0-based color index at 16..231 + r := v2ci(c.R * 255.0) // 0..5 each + g := v2ci(c.G * 255.0) + b := v2ci(c.B * 255.0) + ci := 36*r + 6*g + b /* 0..215 */ + + // Calculate the represented colors back from the index + i2cv := [6]int{0, 0x5f, 0x87, 0xaf, 0xd7, 0xff} + cr := i2cv[r] // r/g/b, 0..255 each + cg := i2cv[g] + cb := i2cv[b] + + // Calculate the nearest 0-based gray index at 232..255 + var grayIdx int + average := (r + g + b) / 3 + if average > 238 { + grayIdx = 23 + } else { + grayIdx = (average - 3) / 10 // 0..23 + } + gv := 8 + 10*grayIdx // same value for r/g/b, 0..255 + + // Return the one which is nearer to the original input rgb value + c2 := colorful.Color{R: float64(cr) / 255.0, G: float64(cg) / 255.0, B: float64(cb) / 255.0} + g2 := colorful.Color{R: float64(gv) / 255.0, G: float64(gv) / 255.0, B: float64(gv) / 255.0} + colorDist := c.DistanceHSLuv(c2) + grayDist := c.DistanceHSLuv(g2) + + if colorDist <= grayDist { + return ANSI256Color(16 + ci) + } + return ANSI256Color(232 + grayIdx) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_linux.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_linux.go new file mode 100644 index 0000000..4262f03 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_linux.go @@ -0,0 +1,8 @@ +package termenv + +import "golang.org/x/sys/unix" + +const ( + tcgetattr = unix.TCGETS + tcsetattr = unix.TCSETS +) diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_solaris.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_solaris.go new file mode 100644 index 0000000..4262f03 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_solaris.go @@ -0,0 +1,8 @@ +package termenv + +import "golang.org/x/sys/unix" + +const ( + tcgetattr = unix.TCGETS + tcsetattr = unix.TCSETS +) diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_unix.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_unix.go new file mode 100644 index 0000000..5d66424 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_unix.go @@ -0,0 +1,13 @@ +//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && !solaris && !illumos +// +build darwin dragonfly freebsd netbsd openbsd +// +build !solaris +// +build !illumos + +package termenv + +import "golang.org/x/sys/unix" + +const ( + tcgetattr = unix.TIOCGETA + tcsetattr = unix.TIOCSETA +) diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_zos.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_zos.go new file mode 100644 index 0000000..4262f03 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/constants_zos.go @@ -0,0 +1,8 @@ +package termenv + +import "golang.org/x/sys/unix" + +const ( + tcgetattr = unix.TCGETS + tcsetattr = unix.TCSETS +) diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/copy.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/copy.go new file mode 100644 index 0000000..4bf5c9f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/copy.go @@ -0,0 +1,37 @@ +package termenv + +import ( + "strings" + + "github.com/aymanbagabas/go-osc52/v2" +) + +// Copy copies text to clipboard using OSC 52 escape sequence. +func (o Output) Copy(str string) { + s := osc52.New(str) + if strings.HasPrefix(o.environ.Getenv("TERM"), "screen") { + s = s.Screen() + } + _, _ = s.WriteTo(o) +} + +// CopyPrimary copies text to primary clipboard (X11) using OSC 52 escape +// sequence. +func (o Output) CopyPrimary(str string) { + s := osc52.New(str).Primary() + if strings.HasPrefix(o.environ.Getenv("TERM"), "screen") { + s = s.Screen() + } + _, _ = s.WriteTo(o) +} + +// Copy copies text to clipboard using OSC 52 escape sequence. +func Copy(str string) { + output.Copy(str) +} + +// CopyPrimary copies text to primary clipboard (X11) using OSC 52 escape +// sequence. +func CopyPrimary(str string) { + output.CopyPrimary(str) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/hyperlink.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/hyperlink.go new file mode 100644 index 0000000..97e760a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/hyperlink.go @@ -0,0 +1,11 @@ +package termenv + +// Hyperlink creates a hyperlink using OSC8. +func Hyperlink(link, name string) string { + return output.Hyperlink(link, name) +} + +// Hyperlink creates a hyperlink using OSC8. +func (o *Output) Hyperlink(link, name string) string { + return OSC + "8;;" + link + ST + name + OSC + "8;;" + ST +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/notification.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/notification.go new file mode 100644 index 0000000..2a8cf06 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/notification.go @@ -0,0 +1,11 @@ +package termenv + +// Notify triggers a notification using OSC777. +func Notify(title, body string) { + output.Notify(title, body) +} + +// Notify triggers a notification using OSC777. +func (o *Output) Notify(title, body string) { + _, _ = o.WriteString(OSC + "777;notify;" + title + ";" + body + ST) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/output.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/output.go new file mode 100644 index 0000000..e4434de --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/output.go @@ -0,0 +1,205 @@ +package termenv + +import ( + "io" + "os" + "sync" +) + +// output is the default global output. +var output = NewOutput(os.Stdout) + +// File represents a file descriptor. +// +// Deprecated: Use *os.File instead. +type File interface { + io.ReadWriter + Fd() uintptr +} + +// OutputOption sets an option on Output. +type OutputOption = func(*Output) + +// Output is a terminal output. +type Output struct { + Profile + w io.Writer + environ Environ + + assumeTTY bool + unsafe bool + cache bool + fgSync *sync.Once + fgColor Color + bgSync *sync.Once + bgColor Color +} + +// Environ is an interface for getting environment variables. +type Environ interface { + Environ() []string + Getenv(string) string +} + +type osEnviron struct{} + +func (oe *osEnviron) Environ() []string { + return os.Environ() +} + +func (oe *osEnviron) Getenv(key string) string { + return os.Getenv(key) +} + +// DefaultOutput returns the default global output. +func DefaultOutput() *Output { + return output +} + +// SetDefaultOutput sets the default global output. +func SetDefaultOutput(o *Output) { + output = o +} + +// NewOutput returns a new Output for the given writer. +func NewOutput(w io.Writer, opts ...OutputOption) *Output { + o := &Output{ + w: w, + environ: &osEnviron{}, + Profile: -1, + fgSync: &sync.Once{}, + fgColor: NoColor{}, + bgSync: &sync.Once{}, + bgColor: NoColor{}, + } + + if o.w == nil { + o.w = os.Stdout + } + for _, opt := range opts { + opt(o) + } + if o.Profile < 0 { + o.Profile = o.EnvColorProfile() + } + + return o +} + +// WithEnvironment returns a new OutputOption for the given environment. +func WithEnvironment(environ Environ) OutputOption { + return func(o *Output) { + o.environ = environ + } +} + +// WithProfile returns a new OutputOption for the given profile. +func WithProfile(profile Profile) OutputOption { + return func(o *Output) { + o.Profile = profile + } +} + +// WithColorCache returns a new OutputOption with fore- and background color values +// pre-fetched and cached. +func WithColorCache(v bool) OutputOption { + return func(o *Output) { + o.cache = v + + // cache the values now + _ = o.ForegroundColor() + _ = o.BackgroundColor() + } +} + +// WithTTY returns a new OutputOption to assume whether or not the output is a TTY. +// This is useful when mocking console output. +func WithTTY(v bool) OutputOption { + return func(o *Output) { + o.assumeTTY = v + } +} + +// WithUnsafe returns a new OutputOption with unsafe mode enabled. Unsafe mode doesn't +// check whether or not the terminal is a TTY. +// +// This option supersedes WithTTY. +// +// This is useful when mocking console output and enforcing ANSI escape output +// e.g. on SSH sessions. +func WithUnsafe() OutputOption { + return func(o *Output) { + o.unsafe = true + } +} + +// ForegroundColor returns the terminal's default foreground color. +func (o *Output) ForegroundColor() Color { + f := func() { + if !o.isTTY() { + return + } + + o.fgColor = o.foregroundColor() + } + + if o.cache { + o.fgSync.Do(f) + } else { + f() + } + + return o.fgColor +} + +// BackgroundColor returns the terminal's default background color. +func (o *Output) BackgroundColor() Color { + f := func() { + if !o.isTTY() { + return + } + + o.bgColor = o.backgroundColor() + } + + if o.cache { + o.bgSync.Do(f) + } else { + f() + } + + return o.bgColor +} + +// HasDarkBackground returns whether terminal uses a dark-ish background. +func (o *Output) HasDarkBackground() bool { + c := ConvertToRGB(o.BackgroundColor()) + _, _, l := c.Hsl() + return l < 0.5 //nolint:mnd +} + +// TTY returns the terminal's file descriptor. This may be nil if the output is +// not a terminal. +// +// Deprecated: Use Writer() instead. +func (o Output) TTY() File { + if f, ok := o.w.(File); ok { + return f + } + return nil +} + +// Writer returns the underlying writer. This may be of type io.Writer, +// io.ReadWriter, or *os.File. +func (o Output) Writer() io.Writer { + return o.w +} + +func (o Output) Write(p []byte) (int, error) { + return o.w.Write(p) //nolint:wrapcheck +} + +// WriteString writes the given string to the output. +func (o Output) WriteString(s string) (int, error) { + return o.Write([]byte(s)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/profile.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/profile.go new file mode 100644 index 0000000..7d38f5f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/profile.go @@ -0,0 +1,112 @@ +package termenv + +import ( + "image/color" + "strconv" + "strings" + + "github.com/lucasb-eyer/go-colorful" +) + +// Profile is a color profile: Ascii, ANSI, ANSI256, or TrueColor. +type Profile int + +const ( + // TrueColor, 24-bit color profile. + TrueColor = Profile(iota) + // ANSI256, 8-bit color profile. + ANSI256 + // ANSI, 4-bit color profile. + ANSI + // Ascii, uncolored profile. + Ascii //nolint:revive +) + +// Name returns the profile name as a string. +func (p Profile) Name() string { + switch p { + case Ascii: + return "Ascii" + case ANSI: + return "ANSI" + case ANSI256: + return "ANSI256" + case TrueColor: + return "TrueColor" + } + return "Unknown" +} + +// String returns a new Style. +func (p Profile) String(s ...string) Style { + return Style{ + profile: p, + string: strings.Join(s, " "), + } +} + +// Convert transforms a given Color to a Color supported within the Profile. +func (p Profile) Convert(c Color) Color { + if p == Ascii { + return NoColor{} + } + + switch v := c.(type) { + case ANSIColor: + return v + + case ANSI256Color: + if p == ANSI { + return ansi256ToANSIColor(v) + } + return v + + case RGBColor: + h, err := colorful.Hex(string(v)) + if err != nil { + return nil + } + if p != TrueColor { + ac := hexToANSI256Color(h) + if p == ANSI { + return ansi256ToANSIColor(ac) + } + return ac + } + return v + } + + return c +} + +// Color creates a Color from a string. Valid inputs are hex colors, as well as +// ANSI color codes (0-15, 16-255). +func (p Profile) Color(s string) Color { + if len(s) == 0 { + return nil + } + + var c Color + if strings.HasPrefix(s, "#") { + c = RGBColor(s) + } else { + i, err := strconv.Atoi(s) + if err != nil { + return nil + } + + if i < 16 { //nolint:mnd + c = ANSIColor(i) + } else { + c = ANSI256Color(i) + } + } + + return p.Convert(c) +} + +// FromColor creates a Color from a color.Color. +func (p Profile) FromColor(c color.Color) Color { + col, _ := colorful.MakeColor(c) + return p.Color(col.Hex()) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/screen.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/screen.go new file mode 100644 index 0000000..75c11d0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/screen.go @@ -0,0 +1,590 @@ +package termenv + +import ( + "fmt" + "strings" +) + +// Sequence definitions. +const ( + // Cursor positioning. + CursorUpSeq = "%dA" + CursorDownSeq = "%dB" + CursorForwardSeq = "%dC" + CursorBackSeq = "%dD" + CursorNextLineSeq = "%dE" + CursorPreviousLineSeq = "%dF" + CursorHorizontalSeq = "%dG" + CursorPositionSeq = "%d;%dH" + EraseDisplaySeq = "%dJ" + EraseLineSeq = "%dK" + ScrollUpSeq = "%dS" + ScrollDownSeq = "%dT" + SaveCursorPositionSeq = "s" + RestoreCursorPositionSeq = "u" + ChangeScrollingRegionSeq = "%d;%dr" + InsertLineSeq = "%dL" + DeleteLineSeq = "%dM" + + // Explicit values for EraseLineSeq. + EraseLineRightSeq = "0K" + EraseLineLeftSeq = "1K" + EraseEntireLineSeq = "2K" + + // Mouse. + EnableMousePressSeq = "?9h" // press only (X10) + DisableMousePressSeq = "?9l" + EnableMouseSeq = "?1000h" // press, release, wheel + DisableMouseSeq = "?1000l" + EnableMouseHiliteSeq = "?1001h" // highlight + DisableMouseHiliteSeq = "?1001l" + EnableMouseCellMotionSeq = "?1002h" // press, release, move on pressed, wheel + DisableMouseCellMotionSeq = "?1002l" + EnableMouseAllMotionSeq = "?1003h" // press, release, move, wheel + DisableMouseAllMotionSeq = "?1003l" + EnableMouseExtendedModeSeq = "?1006h" // press, release, move, wheel, extended coordinates + DisableMouseExtendedModeSeq = "?1006l" + EnableMousePixelsModeSeq = "?1016h" // press, release, move, wheel, extended pixel coordinates + DisableMousePixelsModeSeq = "?1016l" + + // Screen. + RestoreScreenSeq = "?47l" + SaveScreenSeq = "?47h" + AltScreenSeq = "?1049h" + ExitAltScreenSeq = "?1049l" + + // Bracketed paste. + // https://en.wikipedia.org/wiki/Bracketed-paste + EnableBracketedPasteSeq = "?2004h" + DisableBracketedPasteSeq = "?2004l" + StartBracketedPasteSeq = "200~" + EndBracketedPasteSeq = "201~" + + // Session. + SetWindowTitleSeq = "2;%s" + string(BEL) + SetForegroundColorSeq = "10;%s" + string(BEL) + SetBackgroundColorSeq = "11;%s" + string(BEL) + SetCursorColorSeq = "12;%s" + string(BEL) + ShowCursorSeq = "?25h" + HideCursorSeq = "?25l" +) + +// Reset the terminal to its default style, removing any active styles. +func (o Output) Reset() { + fmt.Fprint(o.w, CSI+ResetSeq+"m") //nolint:errcheck +} + +// SetForegroundColor sets the default foreground color. +func (o Output) SetForegroundColor(color Color) { + fmt.Fprintf(o.w, OSC+SetForegroundColorSeq, color) //nolint:errcheck +} + +// SetBackgroundColor sets the default background color. +func (o Output) SetBackgroundColor(color Color) { + fmt.Fprintf(o.w, OSC+SetBackgroundColorSeq, color) //nolint:errcheck +} + +// SetCursorColor sets the cursor color. +func (o Output) SetCursorColor(color Color) { + fmt.Fprintf(o.w, OSC+SetCursorColorSeq, color) //nolint:errcheck +} + +// RestoreScreen restores a previously saved screen state. +func (o Output) RestoreScreen() { + fmt.Fprint(o.w, CSI+RestoreScreenSeq) //nolint:errcheck +} + +// SaveScreen saves the screen state. +func (o Output) SaveScreen() { + fmt.Fprint(o.w, CSI+SaveScreenSeq) //nolint:errcheck +} + +// AltScreen switches to the alternate screen buffer. The former view can be +// restored with ExitAltScreen(). +func (o Output) AltScreen() { + fmt.Fprint(o.w, CSI+AltScreenSeq) //nolint:errcheck +} + +// ExitAltScreen exits the alternate screen buffer and returns to the former +// terminal view. +func (o Output) ExitAltScreen() { + fmt.Fprint(o.w, CSI+ExitAltScreenSeq) //nolint:errcheck +} + +// ClearScreen clears the visible portion of the terminal. +func (o Output) ClearScreen() { + fmt.Fprintf(o.w, CSI+EraseDisplaySeq, 2) //nolint:errcheck,mnd + o.MoveCursor(1, 1) +} + +// MoveCursor moves the cursor to a given position. +func (o Output) MoveCursor(row int, column int) { + fmt.Fprintf(o.w, CSI+CursorPositionSeq, row, column) //nolint:errcheck +} + +// HideCursor hides the cursor. +func (o Output) HideCursor() { + fmt.Fprint(o.w, CSI+HideCursorSeq) //nolint:errcheck +} + +// ShowCursor shows the cursor. +func (o Output) ShowCursor() { + fmt.Fprint(o.w, CSI+ShowCursorSeq) //nolint:errcheck +} + +// SaveCursorPosition saves the cursor position. +func (o Output) SaveCursorPosition() { + fmt.Fprint(o.w, CSI+SaveCursorPositionSeq) //nolint:errcheck +} + +// RestoreCursorPosition restores a saved cursor position. +func (o Output) RestoreCursorPosition() { + fmt.Fprint(o.w, CSI+RestoreCursorPositionSeq) //nolint:errcheck +} + +// CursorUp moves the cursor up a given number of lines. +func (o Output) CursorUp(n int) { + fmt.Fprintf(o.w, CSI+CursorUpSeq, n) //nolint:errcheck +} + +// CursorDown moves the cursor down a given number of lines. +func (o Output) CursorDown(n int) { + fmt.Fprintf(o.w, CSI+CursorDownSeq, n) //nolint:errcheck +} + +// CursorForward moves the cursor up a given number of lines. +func (o Output) CursorForward(n int) { + fmt.Fprintf(o.w, CSI+CursorForwardSeq, n) //nolint:errcheck +} + +// CursorBack moves the cursor backwards a given number of cells. +func (o Output) CursorBack(n int) { + fmt.Fprintf(o.w, CSI+CursorBackSeq, n) //nolint:errcheck +} + +// CursorNextLine moves the cursor down a given number of lines and places it at +// the beginning of the line. +func (o Output) CursorNextLine(n int) { + fmt.Fprintf(o.w, CSI+CursorNextLineSeq, n) //nolint:errcheck +} + +// CursorPrevLine moves the cursor up a given number of lines and places it at +// the beginning of the line. +func (o Output) CursorPrevLine(n int) { + fmt.Fprintf(o.w, CSI+CursorPreviousLineSeq, n) //nolint:errcheck +} + +// ClearLine clears the current line. +func (o Output) ClearLine() { + fmt.Fprint(o.w, CSI+EraseEntireLineSeq) //nolint:errcheck +} + +// ClearLineLeft clears the line to the left of the cursor. +func (o Output) ClearLineLeft() { + fmt.Fprint(o.w, CSI+EraseLineLeftSeq) //nolint:errcheck +} + +// ClearLineRight clears the line to the right of the cursor. +func (o Output) ClearLineRight() { + fmt.Fprint(o.w, CSI+EraseLineRightSeq) //nolint:errcheck +} + +// ClearLines clears a given number of lines. +func (o Output) ClearLines(n int) { + clearLine := fmt.Sprintf(CSI+EraseLineSeq, 2) //nolint:mnd + cursorUp := fmt.Sprintf(CSI+CursorUpSeq, 1) + fmt.Fprint(o.w, clearLine+strings.Repeat(cursorUp+clearLine, n)) //nolint:errcheck +} + +// ChangeScrollingRegion sets the scrolling region of the terminal. +func (o Output) ChangeScrollingRegion(top, bottom int) { + fmt.Fprintf(o.w, CSI+ChangeScrollingRegionSeq, top, bottom) //nolint:errcheck +} + +// InsertLines inserts the given number of lines at the top of the scrollable +// region, pushing lines below down. +func (o Output) InsertLines(n int) { + fmt.Fprintf(o.w, CSI+InsertLineSeq, n) //nolint:errcheck +} + +// DeleteLines deletes the given number of lines, pulling any lines in +// the scrollable region below up. +func (o Output) DeleteLines(n int) { + fmt.Fprintf(o.w, CSI+DeleteLineSeq, n) //nolint:errcheck +} + +// EnableMousePress enables X10 mouse mode. Button press events are sent only. +func (o Output) EnableMousePress() { + fmt.Fprint(o.w, CSI+EnableMousePressSeq) //nolint:errcheck +} + +// DisableMousePress disables X10 mouse mode. +func (o Output) DisableMousePress() { + fmt.Fprint(o.w, CSI+DisableMousePressSeq) //nolint:errcheck +} + +// EnableMouse enables Mouse Tracking mode. +func (o Output) EnableMouse() { + fmt.Fprint(o.w, CSI+EnableMouseSeq) //nolint:errcheck +} + +// DisableMouse disables Mouse Tracking mode. +func (o Output) DisableMouse() { + fmt.Fprint(o.w, CSI+DisableMouseSeq) //nolint:errcheck +} + +// EnableMouseHilite enables Hilite Mouse Tracking mode. +func (o Output) EnableMouseHilite() { + fmt.Fprint(o.w, CSI+EnableMouseHiliteSeq) //nolint:errcheck +} + +// DisableMouseHilite disables Hilite Mouse Tracking mode. +func (o Output) DisableMouseHilite() { + fmt.Fprint(o.w, CSI+DisableMouseHiliteSeq) //nolint:errcheck +} + +// EnableMouseCellMotion enables Cell Motion Mouse Tracking mode. +func (o Output) EnableMouseCellMotion() { + fmt.Fprint(o.w, CSI+EnableMouseCellMotionSeq) //nolint:errcheck +} + +// DisableMouseCellMotion disables Cell Motion Mouse Tracking mode. +func (o Output) DisableMouseCellMotion() { + fmt.Fprint(o.w, CSI+DisableMouseCellMotionSeq) //nolint:errcheck +} + +// EnableMouseAllMotion enables All Motion Mouse mode. +func (o Output) EnableMouseAllMotion() { + fmt.Fprint(o.w, CSI+EnableMouseAllMotionSeq) //nolint:errcheck +} + +// DisableMouseAllMotion disables All Motion Mouse mode. +func (o Output) DisableMouseAllMotion() { + fmt.Fprint(o.w, CSI+DisableMouseAllMotionSeq) //nolint:errcheck +} + +// EnableMouseExtendedMotion enables Extended Mouse mode (SGR). This should be +// enabled in conjunction with EnableMouseCellMotion, and EnableMouseAllMotion. +func (o Output) EnableMouseExtendedMode() { + fmt.Fprint(o.w, CSI+EnableMouseExtendedModeSeq) //nolint:errcheck +} + +// DisableMouseExtendedMotion disables Extended Mouse mode (SGR). +func (o Output) DisableMouseExtendedMode() { + fmt.Fprint(o.w, CSI+DisableMouseExtendedModeSeq) //nolint:errcheck +} + +// EnableMousePixelsMotion enables Pixel Motion Mouse mode (SGR-Pixels). This +// should be enabled in conjunction with EnableMouseCellMotion, and +// EnableMouseAllMotion. +func (o Output) EnableMousePixelsMode() { + fmt.Fprint(o.w, CSI+EnableMousePixelsModeSeq) //nolint:errcheck +} + +// DisableMousePixelsMotion disables Pixel Motion Mouse mode (SGR-Pixels). +func (o Output) DisableMousePixelsMode() { + fmt.Fprint(o.w, CSI+DisableMousePixelsModeSeq) //nolint:errcheck +} + +// SetWindowTitle sets the terminal window title. +func (o Output) SetWindowTitle(title string) { + fmt.Fprintf(o.w, OSC+SetWindowTitleSeq, title) //nolint:errcheck +} + +// EnableBracketedPaste enables bracketed paste. +func (o Output) EnableBracketedPaste() { + fmt.Fprintf(o.w, CSI+EnableBracketedPasteSeq) //nolint:errcheck +} + +// DisableBracketedPaste disables bracketed paste. +func (o Output) DisableBracketedPaste() { + fmt.Fprintf(o.w, CSI+DisableBracketedPasteSeq) //nolint:errcheck +} + +// Legacy functions. + +// Reset the terminal to its default style, removing any active styles. +// +// Deprecated: please use termenv.Output instead. +func Reset() { + output.Reset() +} + +// SetForegroundColor sets the default foreground color. +// +// Deprecated: please use termenv.Output instead. +func SetForegroundColor(color Color) { + output.SetForegroundColor(color) +} + +// SetBackgroundColor sets the default background color. +// +// Deprecated: please use termenv.Output instead. +func SetBackgroundColor(color Color) { + output.SetBackgroundColor(color) +} + +// SetCursorColor sets the cursor color. +// +// Deprecated: please use termenv.Output instead. +func SetCursorColor(color Color) { + output.SetCursorColor(color) +} + +// RestoreScreen restores a previously saved screen state. +// +// Deprecated: please use termenv.Output instead. +func RestoreScreen() { + output.RestoreScreen() +} + +// SaveScreen saves the screen state. +// +// Deprecated: please use termenv.Output instead. +func SaveScreen() { + output.SaveScreen() +} + +// AltScreen switches to the alternate screen buffer. The former view can be +// restored with ExitAltScreen(). +// +// Deprecated: please use termenv.Output instead. +func AltScreen() { + output.AltScreen() +} + +// ExitAltScreen exits the alternate screen buffer and returns to the former +// terminal view. +// +// Deprecated: please use termenv.Output instead. +func ExitAltScreen() { + output.ExitAltScreen() +} + +// ClearScreen clears the visible portion of the terminal. +// +// Deprecated: please use termenv.Output instead. +func ClearScreen() { + output.ClearScreen() +} + +// MoveCursor moves the cursor to a given position. +// +// Deprecated: please use termenv.Output instead. +func MoveCursor(row int, column int) { + output.MoveCursor(row, column) +} + +// HideCursor hides the cursor. +// +// Deprecated: please use termenv.Output instead. +func HideCursor() { + output.HideCursor() +} + +// ShowCursor shows the cursor. +// +// Deprecated: please use termenv.Output instead. +func ShowCursor() { + output.ShowCursor() +} + +// SaveCursorPosition saves the cursor position. +// +// Deprecated: please use termenv.Output instead. +func SaveCursorPosition() { + output.SaveCursorPosition() +} + +// RestoreCursorPosition restores a saved cursor position. +// +// Deprecated: please use termenv.Output instead. +func RestoreCursorPosition() { + output.RestoreCursorPosition() +} + +// CursorUp moves the cursor up a given number of lines. +// +// Deprecated: please use termenv.Output instead. +func CursorUp(n int) { + output.CursorUp(n) +} + +// CursorDown moves the cursor down a given number of lines. +// +// Deprecated: please use termenv.Output instead. +func CursorDown(n int) { + output.CursorDown(n) +} + +// CursorForward moves the cursor up a given number of lines. +// +// Deprecated: please use termenv.Output instead. +func CursorForward(n int) { + output.CursorForward(n) +} + +// CursorBack moves the cursor backwards a given number of cells. +// +// Deprecated: please use termenv.Output instead. +func CursorBack(n int) { + output.CursorBack(n) +} + +// CursorNextLine moves the cursor down a given number of lines and places it at +// the beginning of the line. +// +// Deprecated: please use termenv.Output instead. +func CursorNextLine(n int) { + output.CursorNextLine(n) +} + +// CursorPrevLine moves the cursor up a given number of lines and places it at +// the beginning of the line. +// +// Deprecated: please use termenv.Output instead. +func CursorPrevLine(n int) { + output.CursorPrevLine(n) +} + +// ClearLine clears the current line. +// +// Deprecated: please use termenv.Output instead. +func ClearLine() { + output.ClearLine() +} + +// ClearLineLeft clears the line to the left of the cursor. +// +// Deprecated: please use termenv.Output instead. +func ClearLineLeft() { + output.ClearLineLeft() +} + +// ClearLineRight clears the line to the right of the cursor. +// +// Deprecated: please use termenv.Output instead. +func ClearLineRight() { + output.ClearLineRight() +} + +// ClearLines clears a given number of lines. +// +// Deprecated: please use termenv.Output instead. +func ClearLines(n int) { + output.ClearLines(n) +} + +// ChangeScrollingRegion sets the scrolling region of the terminal. +// +// Deprecated: please use termenv.Output instead. +func ChangeScrollingRegion(top, bottom int) { + output.ChangeScrollingRegion(top, bottom) +} + +// InsertLines inserts the given number of lines at the top of the scrollable +// region, pushing lines below down. +// +// Deprecated: please use termenv.Output instead. +func InsertLines(n int) { + output.InsertLines(n) +} + +// DeleteLines deletes the given number of lines, pulling any lines in +// the scrollable region below up. +// +// Deprecated: please use termenv.Output instead. +func DeleteLines(n int) { + output.DeleteLines(n) +} + +// EnableMousePress enables X10 mouse mode. Button press events are sent only. +// +// Deprecated: please use termenv.Output instead. +func EnableMousePress() { + output.EnableMousePress() +} + +// DisableMousePress disables X10 mouse mode. +// +// Deprecated: please use termenv.Output instead. +func DisableMousePress() { + output.DisableMousePress() +} + +// EnableMouse enables Mouse Tracking mode. +// +// Deprecated: please use termenv.Output instead. +func EnableMouse() { + output.EnableMouse() +} + +// DisableMouse disables Mouse Tracking mode. +// +// Deprecated: please use termenv.Output instead. +func DisableMouse() { + output.DisableMouse() +} + +// EnableMouseHilite enables Hilite Mouse Tracking mode. +// +// Deprecated: please use termenv.Output instead. +func EnableMouseHilite() { + output.EnableMouseHilite() +} + +// DisableMouseHilite disables Hilite Mouse Tracking mode. +// +// Deprecated: please use termenv.Output instead. +func DisableMouseHilite() { + output.DisableMouseHilite() +} + +// EnableMouseCellMotion enables Cell Motion Mouse Tracking mode. +// +// Deprecated: please use termenv.Output instead. +func EnableMouseCellMotion() { + output.EnableMouseCellMotion() +} + +// DisableMouseCellMotion disables Cell Motion Mouse Tracking mode. +// +// Deprecated: please use termenv.Output instead. +func DisableMouseCellMotion() { + output.DisableMouseCellMotion() +} + +// EnableMouseAllMotion enables All Motion Mouse mode. +// +// Deprecated: please use termenv.Output instead. +func EnableMouseAllMotion() { + output.EnableMouseAllMotion() +} + +// DisableMouseAllMotion disables All Motion Mouse mode. +// +// Deprecated: please use termenv.Output instead. +func DisableMouseAllMotion() { + output.DisableMouseAllMotion() +} + +// SetWindowTitle sets the terminal window title. +// +// Deprecated: please use termenv.Output instead. +func SetWindowTitle(title string) { + output.SetWindowTitle(title) +} + +// EnableBracketedPaste enables bracketed paste. +// +// Deprecated: please use termenv.Output instead. +func EnableBracketedPaste() { + output.EnableBracketedPaste() +} + +// DisableBracketedPaste disables bracketed paste. +// +// Deprecated: please use termenv.Output instead. +func DisableBracketedPaste() { + output.DisableBracketedPaste() +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/style.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/style.go new file mode 100644 index 0000000..dedc1f9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/style.go @@ -0,0 +1,126 @@ +package termenv + +import ( + "fmt" + "strings" + + "github.com/rivo/uniseg" +) + +// Sequence definitions. +const ( + ResetSeq = "0" + BoldSeq = "1" + FaintSeq = "2" + ItalicSeq = "3" + UnderlineSeq = "4" + BlinkSeq = "5" + ReverseSeq = "7" + CrossOutSeq = "9" + OverlineSeq = "53" +) + +// Style is a string that various rendering styles can be applied to. +type Style struct { + profile Profile + string + styles []string +} + +// String returns a new Style. +func String(s ...string) Style { + return Style{ + profile: ANSI, + string: strings.Join(s, " "), + } +} + +func (t Style) String() string { + return t.Styled(t.string) +} + +// Styled renders s with all applied styles. +func (t Style) Styled(s string) string { + if t.profile == Ascii { + return s + } + if len(t.styles) == 0 { + return s + } + + seq := strings.Join(t.styles, ";") + if seq == "" { + return s + } + + return fmt.Sprintf("%s%sm%s%sm", CSI, seq, s, CSI+ResetSeq) +} + +// Foreground sets a foreground color. +func (t Style) Foreground(c Color) Style { + if c != nil { + t.styles = append(t.styles, c.Sequence(false)) + } + return t +} + +// Background sets a background color. +func (t Style) Background(c Color) Style { + if c != nil { + t.styles = append(t.styles, c.Sequence(true)) + } + return t +} + +// Bold enables bold rendering. +func (t Style) Bold() Style { + t.styles = append(t.styles, BoldSeq) + return t +} + +// Faint enables faint rendering. +func (t Style) Faint() Style { + t.styles = append(t.styles, FaintSeq) + return t +} + +// Italic enables italic rendering. +func (t Style) Italic() Style { + t.styles = append(t.styles, ItalicSeq) + return t +} + +// Underline enables underline rendering. +func (t Style) Underline() Style { + t.styles = append(t.styles, UnderlineSeq) + return t +} + +// Overline enables overline rendering. +func (t Style) Overline() Style { + t.styles = append(t.styles, OverlineSeq) + return t +} + +// Blink enables blink mode. +func (t Style) Blink() Style { + t.styles = append(t.styles, BlinkSeq) + return t +} + +// Reverse enables reverse color mode. +func (t Style) Reverse() Style { + t.styles = append(t.styles, ReverseSeq) + return t +} + +// CrossOut enables crossed-out rendering. +func (t Style) CrossOut() Style { + t.styles = append(t.styles, CrossOutSeq) + return t +} + +// Width returns the width required to print all runes in Style. +func (t Style) Width() int { + return uniseg.StringWidth(t.string) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/templatehelper.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/templatehelper.go new file mode 100644 index 0000000..4c7c80f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/templatehelper.go @@ -0,0 +1,88 @@ +package termenv + +import ( + "text/template" +) + +// TemplateFuncs returns template helpers for the given output. +func (o Output) TemplateFuncs() template.FuncMap { + return TemplateFuncs(o.Profile) +} + +// TemplateFuncs contains a few useful template helpers. +// +//nolint:mnd +func TemplateFuncs(p Profile) template.FuncMap { + if p == Ascii { + return noopTemplateFuncs + } + + return template.FuncMap{ + "Color": func(values ...interface{}) string { + s := p.String(values[len(values)-1].(string)) + switch len(values) { + case 2: + s = s.Foreground(p.Color(values[0].(string))) + case 3: + s = s. + Foreground(p.Color(values[0].(string))). + Background(p.Color(values[1].(string))) + } + + return s.String() + }, + "Foreground": func(values ...interface{}) string { + s := p.String(values[len(values)-1].(string)) + if len(values) == 2 { + s = s.Foreground(p.Color(values[0].(string))) + } + + return s.String() + }, + "Background": func(values ...interface{}) string { + s := p.String(values[len(values)-1].(string)) + if len(values) == 2 { + s = s.Background(p.Color(values[0].(string))) + } + + return s.String() + }, + "Bold": styleFunc(p, Style.Bold), + "Faint": styleFunc(p, Style.Faint), + "Italic": styleFunc(p, Style.Italic), + "Underline": styleFunc(p, Style.Underline), + "Overline": styleFunc(p, Style.Overline), + "Blink": styleFunc(p, Style.Blink), + "Reverse": styleFunc(p, Style.Reverse), + "CrossOut": styleFunc(p, Style.CrossOut), + } +} + +func styleFunc(p Profile, f func(Style) Style) func(...interface{}) string { + return func(values ...interface{}) string { + s := p.String(values[0].(string)) + return f(s).String() + } +} + +var noopTemplateFuncs = template.FuncMap{ + "Color": noColorFunc, + "Foreground": noColorFunc, + "Background": noColorFunc, + "Bold": noStyleFunc, + "Faint": noStyleFunc, + "Italic": noStyleFunc, + "Underline": noStyleFunc, + "Overline": noStyleFunc, + "Blink": noStyleFunc, + "Reverse": noStyleFunc, + "CrossOut": noStyleFunc, +} + +func noColorFunc(values ...interface{}) string { + return values[len(values)-1].(string) +} + +func noStyleFunc(values ...interface{}) string { + return values[0].(string) +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv.go new file mode 100644 index 0000000..d702cd5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv.go @@ -0,0 +1,115 @@ +package termenv + +import ( + "errors" + "os" + + "github.com/mattn/go-isatty" +) + +var ( + // ErrStatusReport gets returned when the terminal can't be queried. + ErrStatusReport = errors.New("unable to retrieve status report") +) + +const ( + // Escape character. + ESC = '\x1b' + // Bell. + BEL = '\a' + // Control Sequence Introducer. + CSI = string(ESC) + "[" + // Operating System Command. + OSC = string(ESC) + "]" + // String Terminator. + ST = string(ESC) + `\` +) + +func (o *Output) isTTY() bool { + if o.assumeTTY || o.unsafe { + return true + } + if len(o.environ.Getenv("CI")) > 0 { + return false + } + if f, ok := o.Writer().(*os.File); ok { + return isatty.IsTerminal(f.Fd()) + } + + return false +} + +// ColorProfile returns the supported color profile: +// Ascii, ANSI, ANSI256, or TrueColor. +func ColorProfile() Profile { + return output.ColorProfile() +} + +// ForegroundColor returns the terminal's default foreground color. +func ForegroundColor() Color { + return output.ForegroundColor() +} + +// BackgroundColor returns the terminal's default background color. +func BackgroundColor() Color { + return output.BackgroundColor() +} + +// HasDarkBackground returns whether terminal uses a dark-ish background. +func HasDarkBackground() bool { + return output.HasDarkBackground() +} + +// EnvNoColor returns true if the environment variables explicitly disable color output +// by setting NO_COLOR (https://no-color.org/) +// or CLICOLOR/CLICOLOR_FORCE (https://bixense.com/clicolors/) +// If NO_COLOR is set, this will return true, ignoring CLICOLOR/CLICOLOR_FORCE +// If CLICOLOR=="0", it will be true only if CLICOLOR_FORCE is also "0" or is unset. +func (o *Output) EnvNoColor() bool { + return o.environ.Getenv("NO_COLOR") != "" || (o.environ.Getenv("CLICOLOR") == "0" && !o.cliColorForced()) +} + +// EnvNoColor returns true if the environment variables explicitly disable color output +// by setting NO_COLOR (https://no-color.org/) +// or CLICOLOR/CLICOLOR_FORCE (https://bixense.com/clicolors/) +// If NO_COLOR is set, this will return true, ignoring CLICOLOR/CLICOLOR_FORCE +// If CLICOLOR=="0", it will be true only if CLICOLOR_FORCE is also "0" or is unset. +func EnvNoColor() bool { + return output.EnvNoColor() +} + +// EnvColorProfile returns the color profile based on environment variables set +// Supports NO_COLOR (https://no-color.org/) +// and CLICOLOR/CLICOLOR_FORCE (https://bixense.com/clicolors/) +// If none of these environment variables are set, this behaves the same as ColorProfile() +// It will return the Ascii color profile if EnvNoColor() returns true +// If the terminal does not support any colors, but CLICOLOR_FORCE is set and not "0" +// then the ANSI color profile will be returned. +func EnvColorProfile() Profile { + return output.EnvColorProfile() +} + +// EnvColorProfile returns the color profile based on environment variables set +// Supports NO_COLOR (https://no-color.org/) +// and CLICOLOR/CLICOLOR_FORCE (https://bixense.com/clicolors/) +// If none of these environment variables are set, this behaves the same as ColorProfile() +// It will return the Ascii color profile if EnvNoColor() returns true +// If the terminal does not support any colors, but CLICOLOR_FORCE is set and not "0" +// then the ANSI color profile will be returned. +func (o *Output) EnvColorProfile() Profile { + if o.EnvNoColor() { + return Ascii + } + p := o.ColorProfile() + if o.cliColorForced() && p == Ascii { + return ANSI + } + return p +} + +func (o *Output) cliColorForced() bool { + if forced := o.environ.Getenv("CLICOLOR_FORCE"); forced != "" { + return forced != "0" + } + return false +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_other.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_other.go new file mode 100644 index 0000000..93a43b6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_other.go @@ -0,0 +1,30 @@ +//go:build js || plan9 || aix +// +build js plan9 aix + +package termenv + +import "io" + +// ColorProfile returns the supported color profile: +// ANSI256 +func (o Output) ColorProfile() Profile { + return ANSI256 +} + +func (o Output) foregroundColor() Color { + // default gray + return ANSIColor(7) +} + +func (o Output) backgroundColor() Color { + // default black + return ANSIColor(0) +} + +// EnableVirtualTerminalProcessing enables virtual terminal processing on +// Windows for w and returns a function that restores w to its previous state. +// On non-Windows platforms, or if w does not refer to a terminal, then it +// returns a non-nil no-op function and no error. +func EnableVirtualTerminalProcessing(w io.Writer) (func() error, error) { + return func() error { return nil }, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_posix.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_posix.go new file mode 100644 index 0000000..c971dd9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_posix.go @@ -0,0 +1,17 @@ +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || zos +// +build darwin dragonfly freebsd linux netbsd openbsd zos + +package termenv + +import ( + "golang.org/x/sys/unix" +) + +func isForeground(fd int) bool { + pgrp, err := unix.IoctlGetInt(fd, unix.TIOCGPGRP) + if err != nil { + return false + } + + return pgrp == unix.Getpgrp() +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_solaris.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_solaris.go new file mode 100644 index 0000000..27a95a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_solaris.go @@ -0,0 +1,22 @@ +//go:build solaris || illumos +// +build solaris illumos + +package termenv + +import ( + "golang.org/x/sys/unix" +) + +func isForeground(fd int) bool { + pgrp, err := unix.IoctlGetInt(fd, unix.TIOCGPGRP) + if err != nil { + return false + } + + g, err := unix.Getpgrp() + if err != nil { + return false + } + + return pgrp == g +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_unix.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_unix.go new file mode 100644 index 0000000..bef49ca --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_unix.go @@ -0,0 +1,301 @@ +//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos +// +build darwin dragonfly freebsd linux netbsd openbsd solaris zos + +package termenv + +import ( + "fmt" + "io" + "strconv" + "strings" + "time" + + "golang.org/x/sys/unix" +) + +const ( + // timeout for OSC queries. + OSCTimeout = 5 * time.Second +) + +// ColorProfile returns the supported color profile: +// Ascii, ANSI, ANSI256, or TrueColor. +func (o *Output) ColorProfile() Profile { + if !o.isTTY() { + return Ascii + } + + if o.environ.Getenv("GOOGLE_CLOUD_SHELL") == "true" { + return TrueColor + } + + term := o.environ.Getenv("TERM") + colorTerm := o.environ.Getenv("COLORTERM") + + switch strings.ToLower(colorTerm) { + case "24bit": + fallthrough + case "truecolor": + if strings.HasPrefix(term, "screen") { + // tmux supports TrueColor, screen only ANSI256 + if o.environ.Getenv("TERM_PROGRAM") != "tmux" { + return ANSI256 + } + } + return TrueColor + case "yes": + fallthrough + case "true": + return ANSI256 + } + + switch term { + case + "alacritty", + "contour", + "rio", + "wezterm", + "xterm-ghostty", + "xterm-kitty": + return TrueColor + case "linux", "xterm": + return ANSI + } + + if strings.Contains(term, "256color") { + return ANSI256 + } + if strings.Contains(term, "color") { + return ANSI + } + if strings.Contains(term, "ansi") { + return ANSI + } + + return Ascii +} + +//nolint:mnd +func (o Output) foregroundColor() Color { + s, err := o.termStatusReport(10) + if err == nil { + c, err := xTermColor(s) + if err == nil { + return c + } + } + + colorFGBG := o.environ.Getenv("COLORFGBG") + if strings.Contains(colorFGBG, ";") { + c := strings.Split(colorFGBG, ";") + i, err := strconv.Atoi(c[0]) + if err == nil { + return ANSIColor(i) + } + } + + // default gray + return ANSIColor(7) +} + +//nolint:mnd +func (o Output) backgroundColor() Color { + s, err := o.termStatusReport(11) + if err == nil { + c, err := xTermColor(s) + if err == nil { + return c + } + } + + colorFGBG := o.environ.Getenv("COLORFGBG") + if strings.Contains(colorFGBG, ";") { + c := strings.Split(colorFGBG, ";") + i, err := strconv.Atoi(c[len(c)-1]) + if err == nil { + return ANSIColor(i) + } + } + + // default black + return ANSIColor(0) +} + +func (o *Output) waitForData(timeout time.Duration) error { + fd := o.TTY().Fd() + tv := unix.NsecToTimeval(int64(timeout)) + var readfds unix.FdSet + readfds.Set(int(fd)) //nolint:gosec + + for { + n, err := unix.Select(int(fd)+1, &readfds, nil, nil, &tv) //nolint:gosec + if err == unix.EINTR { + continue + } + if err != nil { + return err //nolint:wrapcheck + } + if n == 0 { + return fmt.Errorf("timeout") + } + + break + } + + return nil +} + +func (o *Output) readNextByte() (byte, error) { + if !o.unsafe { + if err := o.waitForData(OSCTimeout); err != nil { + return 0, err + } + } + + var b [1]byte + n, err := o.TTY().Read(b[:]) + if err != nil { + return 0, err //nolint:wrapcheck + } + + if n == 0 { + panic("read returned no data") + } + + return b[0], nil +} + +// readNextResponse reads either an OSC response or a cursor position response: +// - OSC response: "\x1b]11;rgb:1111/1111/1111\x1b\\" +// - cursor position response: "\x1b[42;1R" +func (o *Output) readNextResponse() (response string, isOSC bool, err error) { + start, err := o.readNextByte() + if err != nil { + return "", false, err + } + + // first byte must be ESC + for start != ESC { + start, err = o.readNextByte() + if err != nil { + return "", false, err + } + } + + response += string(start) + + // next byte is either '[' (cursor position response) or ']' (OSC response) + tpe, err := o.readNextByte() + if err != nil { + return "", false, err + } + + response += string(tpe) + + var oscResponse bool + switch tpe { + case '[': + oscResponse = false + case ']': + oscResponse = true + default: + return "", false, ErrStatusReport + } + + for { + b, err := o.readNextByte() + if err != nil { + return "", false, err + } + + response += string(b) + + if oscResponse { + // OSC can be terminated by BEL (\a) or ST (ESC) + if b == BEL || strings.HasSuffix(response, string(ESC)) { + return response, true, nil + } + } else { + // cursor position response is terminated by 'R' + if b == 'R' { + return response, false, nil + } + } + + // both responses have less than 25 bytes, so if we read more, that's an error + if len(response) > 25 { //nolint:mnd + break + } + } + + return "", false, ErrStatusReport +} + +func (o Output) termStatusReport(sequence int) (string, error) { + // screen/tmux can't support OSC, because they can be connected to multiple + // terminals concurrently. + term := o.environ.Getenv("TERM") + if strings.HasPrefix(term, "screen") || strings.HasPrefix(term, "tmux") || strings.HasPrefix(term, "dumb") { + return "", ErrStatusReport + } + + tty := o.TTY() + if tty == nil { + return "", ErrStatusReport + } + + if !o.unsafe { + fd := int(tty.Fd()) //nolint:gosec + // if in background, we can't control the terminal + if !isForeground(fd) { + return "", ErrStatusReport + } + + t, err := unix.IoctlGetTermios(fd, tcgetattr) + if err != nil { + return "", fmt.Errorf("%s: %s", ErrStatusReport, err) + } + defer unix.IoctlSetTermios(fd, tcsetattr, t) //nolint:errcheck + + noecho := *t + noecho.Lflag = noecho.Lflag &^ unix.ECHO + noecho.Lflag = noecho.Lflag &^ unix.ICANON + if err := unix.IoctlSetTermios(fd, tcsetattr, &noecho); err != nil { + return "", fmt.Errorf("%s: %s", ErrStatusReport, err) + } + } + + // first, send OSC query, which is ignored by terminal which do not support it + fmt.Fprintf(tty, OSC+"%d;?"+ST, sequence) //nolint:errcheck + + // then, query cursor position, should be supported by all terminals + fmt.Fprintf(tty, CSI+"6n") //nolint:errcheck + + // read the next response + res, isOSC, err := o.readNextResponse() + if err != nil { + return "", fmt.Errorf("%s: %s", ErrStatusReport, err) + } + + // if this is not OSC response, then the terminal does not support it + if !isOSC { + return "", ErrStatusReport + } + + // read the cursor query response next and discard the result + _, _, err = o.readNextResponse() + if err != nil { + return "", err + } + + // fmt.Println("Rcvd", res[1:]) + return res, nil +} + +// EnableVirtualTerminalProcessing enables virtual terminal processing on +// Windows for w and returns a function that restores w to its previous state. +// On non-Windows platforms, or if w does not refer to a terminal, then it +// returns a non-nil no-op function and no error. +func EnableVirtualTerminalProcessing(_ io.Writer) (func() error, error) { + return func() error { return nil }, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_windows.go b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_windows.go new file mode 100644 index 0000000..f9b1def --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/muesli/termenv/termenv_windows.go @@ -0,0 +1,140 @@ +//go:build windows +// +build windows + +package termenv + +import ( + "fmt" + "os" + "strconv" + + "golang.org/x/sys/windows" +) + +func (o *Output) ColorProfile() Profile { + if !o.isTTY() { + return Ascii + } + + if o.environ.Getenv("ConEmuANSI") == "ON" { + return TrueColor + } + + winVersion, _, buildNumber := windows.RtlGetNtVersionNumbers() + if buildNumber < 10586 || winVersion < 10 { + // No ANSI support before Windows 10 build 10586. + if o.environ.Getenv("ANSICON") != "" { + conVersion := o.environ.Getenv("ANSICON_VER") + cv, err := strconv.ParseInt(conVersion, 10, 64) + if err != nil || cv < 181 { + // No 8 bit color support before v1.81 release. + return ANSI + } + + return ANSI256 + } + + return Ascii + } + if buildNumber < 14931 { + // No true color support before build 14931. + return ANSI256 + } + + return TrueColor +} + +func (o Output) foregroundColor() Color { + // default gray + return ANSIColor(7) +} + +func (o Output) backgroundColor() Color { + // default black + return ANSIColor(0) +} + +// EnableWindowsANSIConsole enables virtual terminal processing on Windows +// platforms. This allows the use of ANSI escape sequences in Windows console +// applications. Ensure this gets called before anything gets rendered with +// termenv. +// +// Returns the original console mode and an error if one occurred. +func EnableWindowsANSIConsole() (uint32, error) { + handle, err := windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) + if err != nil { + return 0, err + } + + var mode uint32 + err = windows.GetConsoleMode(handle, &mode) + if err != nil { + return 0, err + } + + // See https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences + if mode&windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING != windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING { + vtpmode := mode | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING + if err := windows.SetConsoleMode(handle, vtpmode); err != nil { + return 0, err + } + } + + return mode, nil +} + +// RestoreWindowsConsole restores the console mode to a previous state. +func RestoreWindowsConsole(mode uint32) error { + handle, err := windows.GetStdHandle(windows.STD_OUTPUT_HANDLE) + if err != nil { + return err + } + + return windows.SetConsoleMode(handle, mode) +} + +// EnableVirtualTerminalProcessing enables virtual terminal processing on +// Windows for o and returns a function that restores o to its previous state. +// On non-Windows platforms, or if o does not refer to a terminal, then it +// returns a non-nil no-op function and no error. +func EnableVirtualTerminalProcessing(o *Output) (restoreFunc func() error, err error) { + // There is nothing to restore until we set the console mode. + restoreFunc = func() error { + return nil + } + + // If o is not a tty, then there is nothing to do. + tty, ok := o.Writer().(*os.File) + if tty == nil || !ok { + return + } + + // Get the current console mode. If there is an error, assume that o is not + // a terminal, discard the error, and return. + var mode uint32 + if err2 := windows.GetConsoleMode(windows.Handle(tty.Fd()), &mode); err2 != nil { + return + } + + // If virtual terminal processing is already set, then there is nothing to + // do and nothing to restore. + if mode&windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING == windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING { + return + } + + // Enable virtual terminal processing. See + // https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences + if err2 := windows.SetConsoleMode(windows.Handle(tty.Fd()), mode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err2 != nil { + err = fmt.Errorf("windows.SetConsoleMode: %w", err2) + return + } + + // Set the restore function. We maintain a reference to the tty in the + // closure (rather than just its handle) to ensure that the tty is not + // closed by a finalizer. + restoreFunc = func() error { + return windows.SetConsoleMode(windows.Handle(tty.Fd()), mode) + } + + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.dockerignore b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.dockerignore new file mode 100644 index 0000000..7b58834 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.dockerignore @@ -0,0 +1,2 @@ +cmd/tomll/tomll +cmd/tomljson/tomljson diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitattributes b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitattributes new file mode 100644 index 0000000..34a0a21 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitattributes @@ -0,0 +1,4 @@ +* text=auto + +benchmark/benchmark.toml text eol=lf +testdata/** text eol=lf diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitignore b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitignore new file mode 100644 index 0000000..4b7c4ed --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.gitignore @@ -0,0 +1,7 @@ +test_program/test_program_bin +fuzz/ +cmd/tomll/tomll +cmd/tomljson/tomljson +cmd/tomltestgen/tomltestgen +dist +tests/ diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.golangci.toml b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.golangci.toml new file mode 100644 index 0000000..067db55 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.golangci.toml @@ -0,0 +1,84 @@ +[service] +golangci-lint-version = "1.39.0" + +[linters-settings.wsl] +allow-assign-and-anything = true + +[linters-settings.exhaustive] +default-signifies-exhaustive = true + +[linters] +disable-all = true +enable = [ + "asciicheck", + "bodyclose", + "cyclop", + "deadcode", + "depguard", + "dogsled", + "dupl", + "durationcheck", + "errcheck", + "errorlint", + "exhaustive", + # "exhaustivestruct", + "exportloopref", + "forbidigo", + # "forcetypeassert", + "funlen", + "gci", + # "gochecknoglobals", + "gochecknoinits", + "gocognit", + "goconst", + "gocritic", + "gocyclo", + "godot", + "godox", + # "goerr113", + "gofmt", + "gofumpt", + "goheader", + "goimports", + "golint", + "gomnd", + # "gomoddirectives", + "gomodguard", + "goprintffuncname", + "gosec", + "gosimple", + "govet", + # "ifshort", + "importas", + "ineffassign", + "lll", + "makezero", + "misspell", + "nakedret", + "nestif", + "nilerr", + # "nlreturn", + "noctx", + "nolintlint", + #"paralleltest", + "prealloc", + "predeclared", + "revive", + "rowserrcheck", + "sqlclosecheck", + "staticcheck", + "structcheck", + "stylecheck", + # "testpackage", + "thelper", + "tparallel", + "typecheck", + "unconvert", + "unparam", + "unused", + "varcheck", + "wastedassign", + "whitespace", + # "wrapcheck", + # "wsl" +] diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.goreleaser.yaml b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.goreleaser.yaml new file mode 100644 index 0000000..47f0f59 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/.goreleaser.yaml @@ -0,0 +1,127 @@ +version: 2 +before: + hooks: + - go mod tidy + - go fmt ./... + - go test ./... +builds: + - id: tomll + main: ./cmd/tomll + binary: tomll + env: + - CGO_ENABLED=0 + flags: + - -trimpath + ldflags: + - -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} + mod_timestamp: '{{ .CommitTimestamp }}' + targets: + - linux_amd64 + - linux_arm64 + - linux_arm + - linux_riscv64 + - windows_amd64 + - windows_arm64 + - windows_arm + - darwin_amd64 + - darwin_arm64 + - id: tomljson + main: ./cmd/tomljson + binary: tomljson + env: + - CGO_ENABLED=0 + flags: + - -trimpath + ldflags: + - -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} + mod_timestamp: '{{ .CommitTimestamp }}' + targets: + - linux_amd64 + - linux_arm64 + - linux_arm + - linux_riscv64 + - windows_amd64 + - windows_arm64 + - windows_arm + - darwin_amd64 + - darwin_arm64 + - id: jsontoml + main: ./cmd/jsontoml + binary: jsontoml + env: + - CGO_ENABLED=0 + flags: + - -trimpath + ldflags: + - -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} + mod_timestamp: '{{ .CommitTimestamp }}' + targets: + - linux_amd64 + - linux_arm64 + - linux_riscv64 + - linux_arm + - windows_amd64 + - windows_arm64 + - windows_arm + - darwin_amd64 + - darwin_arm64 +universal_binaries: + - id: tomll + replace: true + name_template: tomll + - id: tomljson + replace: true + name_template: tomljson + - id: jsontoml + replace: true + name_template: jsontoml +archives: +- id: jsontoml + format: tar.xz + builds: + - jsontoml + files: + - none* + name_template: "{{ .Binary }}_{{.Version}}_{{ .Os }}_{{ .Arch }}" +- id: tomljson + format: tar.xz + builds: + - tomljson + files: + - none* + name_template: "{{ .Binary }}_{{.Version}}_{{ .Os }}_{{ .Arch }}" +- id: tomll + format: tar.xz + builds: + - tomll + files: + - none* + name_template: "{{ .Binary }}_{{.Version}}_{{ .Os }}_{{ .Arch }}" +dockers: + - id: tools + goos: linux + goarch: amd64 + ids: + - jsontoml + - tomljson + - tomll + image_templates: + - "ghcr.io/pelletier/go-toml:latest" + - "ghcr.io/pelletier/go-toml:{{ .Tag }}" + - "ghcr.io/pelletier/go-toml:v{{ .Major }}" + skip_push: false +checksum: + name_template: 'sha256sums.txt' +snapshot: + version_template: "{{ incpatch .Version }}-next" +release: + github: + owner: pelletier + name: go-toml + draft: true + prerelease: auto + mode: replace +changelog: + use: github-native +announce: + skip: true diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/CONTRIBUTING.md b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/CONTRIBUTING.md new file mode 100644 index 0000000..96ecf9e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/CONTRIBUTING.md @@ -0,0 +1,193 @@ +# Contributing + +Thank you for your interest in go-toml! We appreciate you considering +contributing to go-toml! + +The main goal is the project is to provide an easy-to-use and efficient TOML +implementation for Go that gets the job done and gets out of your way – dealing +with TOML is probably not the central piece of your project. + +As the single maintainer of go-toml, time is scarce. All help, big or small, is +more than welcomed! + +## Ask questions + +Any question you may have, somebody else might have it too. Always feel free to +ask them on the [discussion board][discussions]. We will try to answer them as +clearly and quickly as possible, time permitting. + +Asking questions also helps us identify areas where the documentation needs +improvement, or new features that weren't envisioned before. Sometimes, a +seemingly innocent question leads to the fix of a bug. Don't hesitate and ask +away! + +[discussions]: https://github.com/pelletier/go-toml/discussions + +## Improve the documentation + +The best way to share your knowledge and experience with go-toml is to improve +the documentation. Fix a typo, clarify an interface, add an example, anything +goes! + +The documentation is present in the [README][readme] and thorough the source +code. On release, it gets updated on [pkg.go.dev][pkg.go.dev]. To make a change +to the documentation, create a pull request with your proposed changes. For +simple changes like that, the easiest way to go is probably the "Fork this +project and edit the file" button on Github, displayed at the top right of the +file. Unless it's a trivial change (for example a typo), provide a little bit of +context in your pull request description or commit message. + +## Report a bug + +Found a bug! Sorry to hear that :(. Help us and other track them down and fix by +reporting it. [File a new bug report][bug-report] on the [issues +tracker][issues-tracker]. The template should provide enough guidance on what to +include. When in doubt: add more details! By reducing ambiguity and providing +more information, it decreases back and forth and saves everyone time. + +## Code changes + +Want to contribute a patch? Very happy to hear that! + +First, some high-level rules: + +- A short proposal with some POC code is better than a lengthy piece of text + with no code. Code speaks louder than words. That being said, bigger changes + should probably start with a [discussion][discussions]. +- No backward-incompatible patch will be accepted unless discussed. Sometimes + it's hard, but we try not to break people's programs unless we absolutely have + to. +- If you are writing a new feature or extending an existing one, make sure to + write some documentation. +- Bug fixes need to be accompanied with regression tests. +- New code needs to be tested. +- Your commit messages need to explain why the change is needed, even if already + included in the PR description. + +It does sound like a lot, but those best practices are here to save time overall +and continuously improve the quality of the project, which is something everyone +benefits from. + +### Get started + +The fairly standard code contribution process looks like that: + +1. [Fork the project][fork]. +2. Make your changes, commit on any branch you like. +3. [Open up a pull request][pull-request] +4. Review, potential ask for changes. +5. Merge. + +Feel free to ask for help! You can create draft pull requests to gather +some early feedback! + +### Run the tests + +You can run tests for go-toml using Go's test tool: `go test -race ./...`. + +During the pull request process, all tests will be ran on Linux, Windows, and +MacOS on the last two versions of Go. + +However, given GitHub's new policy to _not_ run Actions on pull requests until a +maintainer clicks on button, it is highly recommended that you run them locally +as you make changes. + +### Check coverage + +We use `go tool cover` to compute test coverage. Most code editors have a way to +run and display code coverage, but at the end of the day, we do this: + +``` +go test -covermode=atomic -coverprofile=coverage.out +go tool cover -func=coverage.out +``` + +and verify that the overall percentage of tested code does not go down. This is +a requirement. As a rule of thumb, all lines of code touched by your changes +should be covered. On Unix you can use `./ci.sh coverage -d v2` to check if your +code lowers the coverage. + +### Verify performance + +Go-toml aims to stay efficient. We rely on a set of scenarios executed with Go's +builtin benchmark systems. Because of their noisy nature, containers provided by +Github Actions cannot be reliably used for benchmarking. As a result, you are +responsible for checking that your changes do not incur a performance penalty. +You can run their following to execute benchmarks: + +``` +go test ./... -bench=. -count=10 +``` + +Benchmark results should be compared against each other with +[benchstat][benchstat]. Typical flow looks like this: + +1. On the `v2` branch, run `go test ./... -bench=. -count 10` and save output to + a file (for example `old.txt`). +2. Make some code changes. +3. Run `go test ....` again, and save the output to an other file (for example + `new.txt`). +4. Run `benchstat old.txt new.txt` to check that time/op does not go up in any + test. + +On Unix you can use `./ci.sh benchmark -d v2` to verify how your code impacts +performance. + +It is highly encouraged to add the benchstat results to your pull request +description. Pull requests that lower performance will receive more scrutiny. + +[benchstat]: https://pkg.go.dev/golang.org/x/perf/cmd/benchstat + +### Style + +Try to look around and follow the same format and structure as the rest of the +code. We enforce using `go fmt` on the whole code base. + +--- + +## Maintainers-only + +### Merge pull request + +Checklist: + +- Passing CI. +- Does not introduce backward-incompatible changes (unless discussed). +- Has relevant doc changes. +- Benchstat does not show performance regression. +- Pull request is [labeled appropriately][pr-labels]. +- Title will be understandable in the changelog. + +1. Merge using "squash and merge". +2. Make sure to edit the commit message to keep all the useful information + nice and clean. +3. Make sure the commit title is clear and contains the PR number (#123). + +### New release + +1. Decide on the next version number. Use semver. Review commits since last + version to assess. +2. Tag release. For example: +``` +git checkout v2 +git pull +git tag v2.2.0 +git push --tags +``` +3. CI automatically builds a draft Github release. Review it and edit as + necessary. Look for "Other changes". That would indicate a pull request not + labeled properly. Tweak labels and pull request titles until changelog looks + good for users. +4. Check "create discussion" box, in the "Releases" category. +5. If new version is an alpha or beta only, check pre-release box. + + +[issues-tracker]: https://github.com/pelletier/go-toml/issues +[bug-report]: https://github.com/pelletier/go-toml/issues/new?template=bug_report.md +[pkg.go.dev]: https://pkg.go.dev/github.com/pelletier/go-toml +[readme]: ./README.md +[fork]: https://help.github.com/articles/fork-a-repo +[pull-request]: https://help.github.com/en/articles/creating-a-pull-request +[new-release]: https://github.com/pelletier/go-toml/releases/new +[gh]: https://github.com/cli/cli +[pr-labels]: https://github.com/pelletier/go-toml/blob/v2/.github/release.yml diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/Dockerfile b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/Dockerfile new file mode 100644 index 0000000..b9e9332 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/Dockerfile @@ -0,0 +1,5 @@ +FROM scratch +ENV PATH "$PATH:/bin" +COPY tomll /bin/tomll +COPY tomljson /bin/tomljson +COPY jsontoml /bin/jsontoml diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/LICENSE b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/LICENSE new file mode 100644 index 0000000..991e2ae --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +go-toml v2 +Copyright (c) 2021 - 2023 Thomas Pelletier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/README.md b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/README.md new file mode 100644 index 0000000..0755e55 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/README.md @@ -0,0 +1,576 @@ +# go-toml v2 + +Go library for the [TOML](https://toml.io/en/) format. + +This library supports [TOML v1.0.0](https://toml.io/en/v1.0.0). + +[🐞 Bug Reports](https://github.com/pelletier/go-toml/issues) + +[💬 Anything else](https://github.com/pelletier/go-toml/discussions) + +## Documentation + +Full API, examples, and implementation notes are available in the Go +documentation. + +[![Go Reference](https://pkg.go.dev/badge/github.com/pelletier/go-toml/v2.svg)](https://pkg.go.dev/github.com/pelletier/go-toml/v2) + +## Import + +```go +import "github.com/pelletier/go-toml/v2" +``` + +See [Modules](#Modules). + +## Features + +### Stdlib behavior + +As much as possible, this library is designed to behave similarly as the +standard library's `encoding/json`. + +### Performance + +While go-toml favors usability, it is written with performance in mind. Most +operations should not be shockingly slow. See [benchmarks](#benchmarks). + +### Strict mode + +`Decoder` can be set to "strict mode", which makes it error when some parts of +the TOML document was not present in the target structure. This is a great way +to check for typos. [See example in the documentation][strict]. + +[strict]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#example-Decoder.DisallowUnknownFields + +### Contextualized errors + +When most decoding errors occur, go-toml returns [`DecodeError`][decode-err], +which contains a human readable contextualized version of the error. For +example: + +``` +1| [server] +2| path = 100 + | ~~~ cannot decode TOML integer into struct field toml_test.Server.Path of type string +3| port = 50 +``` + +[decode-err]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#DecodeError + +### Local date and time support + +TOML supports native [local date/times][ldt]. It allows to represent a given +date, time, or date-time without relation to a timezone or offset. To support +this use-case, go-toml provides [`LocalDate`][tld], [`LocalTime`][tlt], and +[`LocalDateTime`][tldt]. Those types can be transformed to and from `time.Time`, +making them convenient yet unambiguous structures for their respective TOML +representation. + +[ldt]: https://toml.io/en/v1.0.0#local-date-time +[tld]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#LocalDate +[tlt]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#LocalTime +[tldt]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#LocalDateTime + +### Commented config + +Since TOML is often used for configuration files, go-toml can emit documents +annotated with [comments and commented-out values][comments-example]. For +example, it can generate the following file: + +```toml +# Host IP to connect to. +host = '127.0.0.1' +# Port of the remote server. +port = 4242 + +# Encryption parameters (optional) +# [TLS] +# cipher = 'AEAD-AES128-GCM-SHA256' +# version = 'TLS 1.3' +``` + +[comments-example]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#example-Marshal-Commented + +## Getting started + +Given the following struct, let's see how to read it and write it as TOML: + +```go +type MyConfig struct { + Version int + Name string + Tags []string +} +``` + +### Unmarshaling + +[`Unmarshal`][unmarshal] reads a TOML document and fills a Go structure with its +content. For example: + +```go +doc := ` +version = 2 +name = "go-toml" +tags = ["go", "toml"] +` + +var cfg MyConfig +err := toml.Unmarshal([]byte(doc), &cfg) +if err != nil { + panic(err) +} +fmt.Println("version:", cfg.Version) +fmt.Println("name:", cfg.Name) +fmt.Println("tags:", cfg.Tags) + +// Output: +// version: 2 +// name: go-toml +// tags: [go toml] +``` + +[unmarshal]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#Unmarshal + +### Marshaling + +[`Marshal`][marshal] is the opposite of Unmarshal: it represents a Go structure +as a TOML document: + +```go +cfg := MyConfig{ + Version: 2, + Name: "go-toml", + Tags: []string{"go", "toml"}, +} + +b, err := toml.Marshal(cfg) +if err != nil { + panic(err) +} +fmt.Println(string(b)) + +// Output: +// Version = 2 +// Name = 'go-toml' +// Tags = ['go', 'toml'] +``` + +[marshal]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#Marshal + +## Unstable API + +This API does not yet follow the backward compatibility guarantees of this +library. They provide early access to features that may have rough edges or an +API subject to change. + +### Parser + +Parser is the unstable API that allows iterative parsing of a TOML document at +the AST level. See https://pkg.go.dev/github.com/pelletier/go-toml/v2/unstable. + +## Benchmarks + +Execution time speedup compared to other Go TOML libraries: + + + + + + + + + + + + + +
Benchmarkgo-toml v1BurntSushi/toml
Marshal/HugoFrontMatter-21.9x2.2x
Marshal/ReferenceFile/map-21.7x2.1x
Marshal/ReferenceFile/struct-22.2x3.0x
Unmarshal/HugoFrontMatter-22.9x2.7x
Unmarshal/ReferenceFile/map-22.6x2.7x
Unmarshal/ReferenceFile/struct-24.6x5.1x
+
See more +

The table above has the results of the most common use-cases. The table below +contains the results of all benchmarks, including unrealistic ones. It is +provided for completeness.

+ + + + + + + + + + + + + + + + + + +
Benchmarkgo-toml v1BurntSushi/toml
Marshal/SimpleDocument/map-21.8x2.7x
Marshal/SimpleDocument/struct-22.7x3.8x
Unmarshal/SimpleDocument/map-23.8x3.0x
Unmarshal/SimpleDocument/struct-25.6x4.1x
UnmarshalDataset/example-23.0x3.2x
UnmarshalDataset/code-22.3x2.9x
UnmarshalDataset/twitter-22.6x2.7x
UnmarshalDataset/citm_catalog-22.2x2.3x
UnmarshalDataset/canada-21.8x1.5x
UnmarshalDataset/config-24.1x2.9x
geomean2.7x2.8x
+

This table can be generated with ./ci.sh benchmark -a -html.

+
+ +## Modules + +go-toml uses Go's standard modules system. + +Installation instructions: + +- Go ≥ 1.16: Nothing to do. Use the import in your code. The `go` command deals + with it automatically. +- Go ≥ 1.13: `GO111MODULE=on go get github.com/pelletier/go-toml/v2`. + +In case of trouble: [Go Modules FAQ][mod-faq]. + +[mod-faq]: https://github.com/golang/go/wiki/Modules#why-does-installing-a-tool-via-go-get-fail-with-error-cannot-find-main-module + +## Tools + +Go-toml provides three handy command line tools: + + * `tomljson`: Reads a TOML file and outputs its JSON representation. + + ``` + $ go install github.com/pelletier/go-toml/v2/cmd/tomljson@latest + $ tomljson --help + ``` + + * `jsontoml`: Reads a JSON file and outputs a TOML representation. + + ``` + $ go install github.com/pelletier/go-toml/v2/cmd/jsontoml@latest + $ jsontoml --help + ``` + + * `tomll`: Lints and reformats a TOML file. + + ``` + $ go install github.com/pelletier/go-toml/v2/cmd/tomll@latest + $ tomll --help + ``` + +### Docker image + +Those tools are also available as a [Docker image][docker]. For example, to use +`tomljson`: + +``` +docker run -i ghcr.io/pelletier/go-toml:v2 tomljson < example.toml +``` + +Multiple versions are available on [ghcr.io][docker]. + +[docker]: https://github.com/pelletier/go-toml/pkgs/container/go-toml + +## Migrating from v1 + +This section describes the differences between v1 and v2, with some pointers on +how to get the original behavior when possible. + +### Decoding / Unmarshal + +#### Automatic field name guessing + +When unmarshaling to a struct, if a key in the TOML document does not exactly +match the name of a struct field or any of the `toml`-tagged field, v1 tries +multiple variations of the key ([code][v1-keys]). + +V2 instead does a case-insensitive matching, like `encoding/json`. + +This could impact you if you are relying on casing to differentiate two fields, +and one of them is a not using the `toml` struct tag. The recommended solution +is to be specific about tag names for those fields using the `toml` struct tag. + +[v1-keys]: https://github.com/pelletier/go-toml/blob/a2e52561804c6cd9392ebf0048ca64fe4af67a43/marshal.go#L775-L781 + +#### Ignore preexisting value in interface + +When decoding into a non-nil `interface{}`, go-toml v1 uses the type of the +element in the interface to decode the object. For example: + +```go +type inner struct { + B interface{} +} +type doc struct { + A interface{} +} + +d := doc{ + A: inner{ + B: "Before", + }, +} + +data := ` +[A] +B = "After" +` + +toml.Unmarshal([]byte(data), &d) +fmt.Printf("toml v1: %#v\n", d) + +// toml v1: main.doc{A:main.inner{B:"After"}} +``` + +In this case, field `A` is of type `interface{}`, containing a `inner` struct. +V1 sees that type and uses it when decoding the object. + +When decoding an object into an `interface{}`, V2 instead disregards whatever +value the `interface{}` may contain and replaces it with a +`map[string]interface{}`. With the same data structure as above, here is what +the result looks like: + +```go +toml.Unmarshal([]byte(data), &d) +fmt.Printf("toml v2: %#v\n", d) + +// toml v2: main.doc{A:map[string]interface {}{"B":"After"}} +``` + +This is to match `encoding/json`'s behavior. There is no way to make the v2 +decoder behave like v1. + +#### Values out of array bounds ignored + +When decoding into an array, v1 returns an error when the number of elements +contained in the doc is superior to the capacity of the array. For example: + +```go +type doc struct { + A [2]string +} +d := doc{} +err := toml.Unmarshal([]byte(`A = ["one", "two", "many"]`), &d) +fmt.Println(err) + +// (1, 1): unmarshal: TOML array length (3) exceeds destination array length (2) +``` + +In the same situation, v2 ignores the last value: + +```go +err := toml.Unmarshal([]byte(`A = ["one", "two", "many"]`), &d) +fmt.Println("err:", err, "d:", d) +// err: d: {[one two]} +``` + +This is to match `encoding/json`'s behavior. There is no way to make the v2 +decoder behave like v1. + +#### Support for `toml.Unmarshaler` has been dropped + +This method was not widely used, poorly defined, and added a lot of complexity. +A similar effect can be achieved by implementing the `encoding.TextUnmarshaler` +interface and use strings. + +#### Support for `default` struct tag has been dropped + +This feature adds complexity and a poorly defined API for an effect that can be +accomplished outside of the library. + +It does not seem like other format parsers in Go support that feature (the +project referenced in the original ticket #202 has not been updated since 2017). +Given that go-toml v2 should not touch values not in the document, the same +effect can be achieved by pre-filling the struct with defaults (libraries like +[go-defaults][go-defaults] can help). Also, string representation is not well +defined for all types: it creates issues like #278. + +The recommended replacement is pre-filling the struct before unmarshaling. + +[go-defaults]: https://github.com/mcuadros/go-defaults + +#### `toml.Tree` replacement + +This structure was the initial attempt at providing a document model for +go-toml. It allows manipulating the structure of any document, encoding and +decoding from their TOML representation. While a more robust feature was +initially planned in go-toml v2, this has been ultimately [removed from +scope][nodoc] of this library, with no plan to add it back at the moment. The +closest equivalent at the moment would be to unmarshal into an `interface{}` and +use type assertions and/or reflection to manipulate the arbitrary +structure. However this would fall short of providing all of the TOML features +such as adding comments and be specific about whitespace. + + +#### `toml.Position` are not retrievable anymore + +The API for retrieving the position (line, column) of a specific TOML element do +not exist anymore. This was done to minimize the amount of concepts introduced +by the library (query path), and avoid the performance hit related to storing +positions in the absence of a document model, for a feature that seemed to have +little use. Errors however have gained more detailed position +information. Position retrieval seems better fitted for a document model, which +has been [removed from the scope][nodoc] of go-toml v2 at the moment. + +### Encoding / Marshal + +#### Default struct fields order + +V1 emits struct fields order alphabetically by default. V2 struct fields are +emitted in order they are defined. For example: + +```go +type S struct { + B string + A string +} + +data := S{ + B: "B", + A: "A", +} + +b, _ := tomlv1.Marshal(data) +fmt.Println("v1:\n" + string(b)) + +b, _ = tomlv2.Marshal(data) +fmt.Println("v2:\n" + string(b)) + +// Output: +// v1: +// A = "A" +// B = "B" + +// v2: +// B = 'B' +// A = 'A' +``` + +There is no way to make v2 encoder behave like v1. A workaround could be to +manually sort the fields alphabetically in the struct definition, or generate +struct types using `reflect.StructOf`. + +#### No indentation by default + +V1 automatically indents content of tables by default. V2 does not. However the +same behavior can be obtained using [`Encoder.SetIndentTables`][sit]. For example: + +```go +data := map[string]interface{}{ + "table": map[string]string{ + "key": "value", + }, +} + +b, _ := tomlv1.Marshal(data) +fmt.Println("v1:\n" + string(b)) + +b, _ = tomlv2.Marshal(data) +fmt.Println("v2:\n" + string(b)) + +buf := bytes.Buffer{} +enc := tomlv2.NewEncoder(&buf) +enc.SetIndentTables(true) +enc.Encode(data) +fmt.Println("v2 Encoder:\n" + string(buf.Bytes())) + +// Output: +// v1: +// +// [table] +// key = "value" +// +// v2: +// [table] +// key = 'value' +// +// +// v2 Encoder: +// [table] +// key = 'value' +``` + +[sit]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#Encoder.SetIndentTables + +#### Keys and strings are single quoted + +V1 always uses double quotes (`"`) around strings and keys that cannot be +represented bare (unquoted). V2 uses single quotes instead by default (`'`), +unless a character cannot be represented, then falls back to double quotes. As a +result of this change, `Encoder.QuoteMapKeys` has been removed, as it is not +useful anymore. + +There is no way to make v2 encoder behave like v1. + +#### `TextMarshaler` emits as a string, not TOML + +Types that implement [`encoding.TextMarshaler`][tm] can emit arbitrary TOML in +v1. The encoder would append the result to the output directly. In v2 the result +is wrapped in a string. As a result, this interface cannot be implemented by the +root object. + +There is no way to make v2 encoder behave like v1. + +[tm]: https://golang.org/pkg/encoding/#TextMarshaler + +#### `Encoder.CompactComments` has been removed + +Emitting compact comments is now the default behavior of go-toml. This option +is not necessary anymore. + +#### Struct tags have been merged + +V1 used to provide multiple struct tags: `comment`, `commented`, `multiline`, +`toml`, and `omitempty`. To behave more like the standard library, v2 has merged +`toml`, `multiline`, `commented`, and `omitempty`. For example: + +```go +type doc struct { + // v1 + F string `toml:"field" multiline:"true" omitempty:"true" commented:"true"` + // v2 + F string `toml:"field,multiline,omitempty,commented"` +} +``` + +Has a result, the `Encoder.SetTag*` methods have been removed, as there is just +one tag now. + +#### `Encoder.ArraysWithOneElementPerLine` has been renamed + +The new name is `Encoder.SetArraysMultiline`. The behavior should be the same. + +#### `Encoder.Indentation` has been renamed + +The new name is `Encoder.SetIndentSymbol`. The behavior should be the same. + + +#### Embedded structs behave like stdlib + +V1 defaults to merging embedded struct fields into the embedding struct. This +behavior was unexpected because it does not follow the standard library. To +avoid breaking backward compatibility, the `Encoder.PromoteAnonymous` method was +added to make the encoder behave correctly. Given backward compatibility is not +a problem anymore, v2 does the right thing by default: it follows the behavior +of `encoding/json`. `Encoder.PromoteAnonymous` has been removed. + +[nodoc]: https://github.com/pelletier/go-toml/discussions/506#discussioncomment-1526038 + +### `query` + +go-toml v1 provided the [`go-toml/query`][query] package. It allowed to run +JSONPath-style queries on TOML files. This feature is not available in v2. For a +replacement, check out [dasel][dasel]. + +This package has been removed because it was essentially not supported anymore +(last commit May 2020), increased the complexity of the code base, and more +complete solutions exist out there. + +[query]: https://github.com/pelletier/go-toml/tree/f99d6bbca119636aeafcf351ee52b3d202782627/query +[dasel]: https://github.com/TomWright/dasel + +## Versioning + +Expect for parts explicitly marked otherwise, go-toml follows [Semantic +Versioning](https://semver.org). The supported version of +[TOML](https://github.com/toml-lang/toml) is indicated at the beginning of this +document. The last two major versions of Go are supported (see [Go Release +Policy](https://golang.org/doc/devel/release.html#policy)). + +## License + +The MIT License (MIT). Read [LICENSE](LICENSE). diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/SECURITY.md b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/SECURITY.md new file mode 100644 index 0000000..d4d554f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/SECURITY.md @@ -0,0 +1,16 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ---------- | ------------------ | +| Latest 2.x | :white_check_mark: | +| All 1.x | :x: | +| All 0.x | :x: | + +## Reporting a Vulnerability + +Email a vulnerability report to `security@pelletier.codes`. Make sure to include +as many details as possible to reproduce the vulnerability. This is a +side-project: I will try to get back to you as quickly as possible, time +permitting in my personal life. Providing a working patch helps very much! diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/ci.sh b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/ci.sh new file mode 100644 index 0000000..86217a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/ci.sh @@ -0,0 +1,284 @@ +#!/usr/bin/env bash + + +stderr() { + echo "$@" 1>&2 +} + +usage() { + b=$(basename "$0") + echo $b: ERROR: "$@" 1>&2 + + cat 1>&2 < coverage.out + go tool cover -func=coverage.out + echo "Coverage profile for ${branch}: ${dir}/coverage.out" >&2 + popd + + if [ "${branch}" != "HEAD" ]; then + git worktree remove --force "$dir" + fi +} + +coverage() { + case "$1" in + -d) + shift + target="${1?Need to provide a target branch argument}" + + output_dir="$(mktemp -d)" + target_out="${output_dir}/target.txt" + head_out="${output_dir}/head.txt" + + cover "${target}" > "${target_out}" + cover "HEAD" > "${head_out}" + + cat "${target_out}" + cat "${head_out}" + + echo "" + + target_pct="$(tail -n2 ${target_out} | head -n1 | sed -E 's/.*total.*\t([0-9.]+)%.*/\1/')" + head_pct="$(tail -n2 ${head_out} | head -n1 | sed -E 's/.*total.*\t([0-9.]+)%/\1/')" + echo "Results: ${target} ${target_pct}% HEAD ${head_pct}%" + + delta_pct=$(echo "$head_pct - $target_pct" | bc -l) + echo "Delta: ${delta_pct}" + + if [[ $delta_pct = \-* ]]; then + echo "Regression!"; + + target_diff="${output_dir}/target.diff.txt" + head_diff="${output_dir}/head.diff.txt" + cat "${target_out}" | grep -E '^github.com/pelletier/go-toml' | tr -s "\t " | cut -f 2,3 | sort > "${target_diff}" + cat "${head_out}" | grep -E '^github.com/pelletier/go-toml' | tr -s "\t " | cut -f 2,3 | sort > "${head_diff}" + + diff --side-by-side --suppress-common-lines "${target_diff}" "${head_diff}" + return 1 + fi + return 0 + ;; + esac + + cover "${1-HEAD}" +} + +bench() { + branch="${1}" + out="${2}" + replace="${3}" + dir="$(mktemp -d)" + + stderr "Executing benchmark for ${branch} at ${dir}" + + if [ "${branch}" = "HEAD" ]; then + cp -r . "${dir}/" + else + git worktree add "$dir" "$branch" + fi + + pushd "$dir" + + if [ "${replace}" != "" ]; then + find ./benchmark/ -iname '*.go' -exec sed -i -E "s|github.com/pelletier/go-toml/v2|${replace}|g" {} \; + go get "${replace}" + fi + + export GOMAXPROCS=2 + go test '-bench=^Benchmark(Un)?[mM]arshal' -count=10 -run=Nothing ./... | tee "${out}" + popd + + if [ "${branch}" != "HEAD" ]; then + git worktree remove --force "$dir" + fi +} + +fmktemp() { + if mktemp --version &> /dev/null; then + # GNU + mktemp --suffix=-$1 + else + # BSD + mktemp -t $1 + fi +} + +benchstathtml() { +python3 - $1 <<'EOF' +import sys + +lines = [] +stop = False + +with open(sys.argv[1]) as f: + for line in f.readlines(): + line = line.strip() + if line == "": + stop = True + if not stop: + lines.append(line.split(',')) + +results = [] +for line in reversed(lines[2:]): + if len(line) < 8 or line[0] == "": + continue + v2 = float(line[1]) + results.append([ + line[0].replace("-32", ""), + "%.1fx" % (float(line[3])/v2), # v1 + "%.1fx" % (float(line[7])/v2), # bs + ]) +# move geomean to the end +results.append(results[0]) +del results[0] + + +def printtable(data): + print(""" + + + + + """) + + for r in data: + print(" ".format(*r)) + + print(""" +
Benchmarkgo-toml v1BurntSushi/toml
{}{}{}
""") + + +def match(x): + return "ReferenceFile" in x[0] or "HugoFrontMatter" in x[0] + +above = [x for x in results if match(x)] +below = [x for x in results if not match(x)] + +printtable(above) +print("
See more") +print("""

The table above has the results of the most common use-cases. The table below +contains the results of all benchmarks, including unrealistic ones. It is +provided for completeness.

""") +printtable(below) +print('

This table can be generated with ./ci.sh benchmark -a -html.

') +print("
") + +EOF +} + +benchmark() { + case "$1" in + -d) + shift + target="${1?Need to provide a target branch argument}" + + old=`fmktemp ${target}` + bench "${target}" "${old}" + + new=`fmktemp HEAD` + bench HEAD "${new}" + + benchstat "${old}" "${new}" + return 0 + ;; + -a) + shift + + v2stats=`fmktemp go-toml-v2` + bench HEAD "${v2stats}" "github.com/pelletier/go-toml/v2" + v1stats=`fmktemp go-toml-v1` + bench HEAD "${v1stats}" "github.com/pelletier/go-toml" + bsstats=`fmktemp bs-toml` + bench HEAD "${bsstats}" "github.com/BurntSushi/toml" + + cp "${v2stats}" go-toml-v2.txt + cp "${v1stats}" go-toml-v1.txt + cp "${bsstats}" bs-toml.txt + + if [ "$1" = "-html" ]; then + tmpcsv=`fmktemp csv` + benchstat -format csv go-toml-v2.txt go-toml-v1.txt bs-toml.txt > $tmpcsv + benchstathtml $tmpcsv + else + benchstat go-toml-v2.txt go-toml-v1.txt bs-toml.txt + fi + + rm -f go-toml-v2.txt go-toml-v1.txt bs-toml.txt + return $? + esac + + bench "${1-HEAD}" `mktemp` +} + +case "$1" in + coverage) shift; coverage $@;; + benchmark) shift; benchmark $@;; + *) usage "bad argument $1";; +esac diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/decode.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/decode.go new file mode 100644 index 0000000..f0ec3b1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/decode.go @@ -0,0 +1,550 @@ +package toml + +import ( + "fmt" + "math" + "strconv" + "time" + + "github.com/pelletier/go-toml/v2/unstable" +) + +func parseInteger(b []byte) (int64, error) { + if len(b) > 2 && b[0] == '0' { + switch b[1] { + case 'x': + return parseIntHex(b) + case 'b': + return parseIntBin(b) + case 'o': + return parseIntOct(b) + default: + panic(fmt.Errorf("invalid base '%c', should have been checked by scanIntOrFloat", b[1])) + } + } + + return parseIntDec(b) +} + +func parseLocalDate(b []byte) (LocalDate, error) { + // full-date = date-fullyear "-" date-month "-" date-mday + // date-fullyear = 4DIGIT + // date-month = 2DIGIT ; 01-12 + // date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year + var date LocalDate + + if len(b) != 10 || b[4] != '-' || b[7] != '-' { + return date, unstable.NewParserError(b, "dates are expected to have the format YYYY-MM-DD") + } + + var err error + + date.Year, err = parseDecimalDigits(b[0:4]) + if err != nil { + return LocalDate{}, err + } + + date.Month, err = parseDecimalDigits(b[5:7]) + if err != nil { + return LocalDate{}, err + } + + date.Day, err = parseDecimalDigits(b[8:10]) + if err != nil { + return LocalDate{}, err + } + + if !isValidDate(date.Year, date.Month, date.Day) { + return LocalDate{}, unstable.NewParserError(b, "impossible date") + } + + return date, nil +} + +func parseDecimalDigits(b []byte) (int, error) { + v := 0 + + for i, c := range b { + if c < '0' || c > '9' { + return 0, unstable.NewParserError(b[i:i+1], "expected digit (0-9)") + } + v *= 10 + v += int(c - '0') + } + + return v, nil +} + +func parseDateTime(b []byte) (time.Time, error) { + // offset-date-time = full-date time-delim full-time + // full-time = partial-time time-offset + // time-offset = "Z" / time-numoffset + // time-numoffset = ( "+" / "-" ) time-hour ":" time-minute + + dt, b, err := parseLocalDateTime(b) + if err != nil { + return time.Time{}, err + } + + var zone *time.Location + + if len(b) == 0 { + // parser should have checked that when assigning the date time node + panic("date time should have a timezone") + } + + if b[0] == 'Z' || b[0] == 'z' { + b = b[1:] + zone = time.UTC + } else { + const dateTimeByteLen = 6 + if len(b) != dateTimeByteLen { + return time.Time{}, unstable.NewParserError(b, "invalid date-time timezone") + } + var direction int + switch b[0] { + case '-': + direction = -1 + case '+': + direction = +1 + default: + return time.Time{}, unstable.NewParserError(b[:1], "invalid timezone offset character") + } + + if b[3] != ':' { + return time.Time{}, unstable.NewParserError(b[3:4], "expected a : separator") + } + + hours, err := parseDecimalDigits(b[1:3]) + if err != nil { + return time.Time{}, err + } + if hours > 23 { + return time.Time{}, unstable.NewParserError(b[:1], "invalid timezone offset hours") + } + + minutes, err := parseDecimalDigits(b[4:6]) + if err != nil { + return time.Time{}, err + } + if minutes > 59 { + return time.Time{}, unstable.NewParserError(b[:1], "invalid timezone offset minutes") + } + + seconds := direction * (hours*3600 + minutes*60) + if seconds == 0 { + zone = time.UTC + } else { + zone = time.FixedZone("", seconds) + } + b = b[dateTimeByteLen:] + } + + if len(b) > 0 { + return time.Time{}, unstable.NewParserError(b, "extra bytes at the end of the timezone") + } + + t := time.Date( + dt.Year, + time.Month(dt.Month), + dt.Day, + dt.Hour, + dt.Minute, + dt.Second, + dt.Nanosecond, + zone) + + return t, nil +} + +func parseLocalDateTime(b []byte) (LocalDateTime, []byte, error) { + var dt LocalDateTime + + const localDateTimeByteMinLen = 11 + if len(b) < localDateTimeByteMinLen { + return dt, nil, unstable.NewParserError(b, "local datetimes are expected to have the format YYYY-MM-DDTHH:MM:SS[.NNNNNNNNN]") + } + + date, err := parseLocalDate(b[:10]) + if err != nil { + return dt, nil, err + } + dt.LocalDate = date + + sep := b[10] + if sep != 'T' && sep != ' ' && sep != 't' { + return dt, nil, unstable.NewParserError(b[10:11], "datetime separator is expected to be T or a space") + } + + t, rest, err := parseLocalTime(b[11:]) + if err != nil { + return dt, nil, err + } + dt.LocalTime = t + + return dt, rest, nil +} + +// parseLocalTime is a bit different because it also returns the remaining +// []byte that is didn't need. This is to allow parseDateTime to parse those +// remaining bytes as a timezone. +func parseLocalTime(b []byte) (LocalTime, []byte, error) { + var ( + nspow = [10]int{0, 1e8, 1e7, 1e6, 1e5, 1e4, 1e3, 1e2, 1e1, 1e0} + t LocalTime + ) + + // check if b matches to have expected format HH:MM:SS[.NNNNNN] + const localTimeByteLen = 8 + if len(b) < localTimeByteLen { + return t, nil, unstable.NewParserError(b, "times are expected to have the format HH:MM:SS[.NNNNNN]") + } + + var err error + + t.Hour, err = parseDecimalDigits(b[0:2]) + if err != nil { + return t, nil, err + } + + if t.Hour > 23 { + return t, nil, unstable.NewParserError(b[0:2], "hour cannot be greater 23") + } + if b[2] != ':' { + return t, nil, unstable.NewParserError(b[2:3], "expecting colon between hours and minutes") + } + + t.Minute, err = parseDecimalDigits(b[3:5]) + if err != nil { + return t, nil, err + } + if t.Minute > 59 { + return t, nil, unstable.NewParserError(b[3:5], "minutes cannot be greater 59") + } + if b[5] != ':' { + return t, nil, unstable.NewParserError(b[5:6], "expecting colon between minutes and seconds") + } + + t.Second, err = parseDecimalDigits(b[6:8]) + if err != nil { + return t, nil, err + } + + if t.Second > 60 { + return t, nil, unstable.NewParserError(b[6:8], "seconds cannot be greater 60") + } + + b = b[8:] + + if len(b) >= 1 && b[0] == '.' { + frac := 0 + precision := 0 + digits := 0 + + for i, c := range b[1:] { + if !isDigit(c) { + if i == 0 { + return t, nil, unstable.NewParserError(b[0:1], "need at least one digit after fraction point") + } + break + } + digits++ + + const maxFracPrecision = 9 + if i >= maxFracPrecision { + // go-toml allows decoding fractional seconds + // beyond the supported precision of 9 + // digits. It truncates the fractional component + // to the supported precision and ignores the + // remaining digits. + // + // https://github.com/pelletier/go-toml/discussions/707 + continue + } + + frac *= 10 + frac += int(c - '0') + precision++ + } + + if precision == 0 { + return t, nil, unstable.NewParserError(b[:1], "nanoseconds need at least one digit") + } + + t.Nanosecond = frac * nspow[precision] + t.Precision = precision + + return t, b[1+digits:], nil + } + return t, b, nil +} + +//nolint:cyclop +func parseFloat(b []byte) (float64, error) { + if len(b) == 4 && (b[0] == '+' || b[0] == '-') && b[1] == 'n' && b[2] == 'a' && b[3] == 'n' { + return math.NaN(), nil + } + + cleaned, err := checkAndRemoveUnderscoresFloats(b) + if err != nil { + return 0, err + } + + if cleaned[0] == '.' { + return 0, unstable.NewParserError(b, "float cannot start with a dot") + } + + if cleaned[len(cleaned)-1] == '.' { + return 0, unstable.NewParserError(b, "float cannot end with a dot") + } + + dotAlreadySeen := false + for i, c := range cleaned { + if c == '.' { + if dotAlreadySeen { + return 0, unstable.NewParserError(b[i:i+1], "float can have at most one decimal point") + } + if !isDigit(cleaned[i-1]) { + return 0, unstable.NewParserError(b[i-1:i+1], "float decimal point must be preceded by a digit") + } + if !isDigit(cleaned[i+1]) { + return 0, unstable.NewParserError(b[i:i+2], "float decimal point must be followed by a digit") + } + dotAlreadySeen = true + } + } + + start := 0 + if cleaned[0] == '+' || cleaned[0] == '-' { + start = 1 + } + if cleaned[start] == '0' && len(cleaned) > start+1 && isDigit(cleaned[start+1]) { + return 0, unstable.NewParserError(b, "float integer part cannot have leading zeroes") + } + + f, err := strconv.ParseFloat(string(cleaned), 64) + if err != nil { + return 0, unstable.NewParserError(b, "unable to parse float: %w", err) + } + + return f, nil +} + +func parseIntHex(b []byte) (int64, error) { + cleaned, err := checkAndRemoveUnderscoresIntegers(b[2:]) + if err != nil { + return 0, err + } + + i, err := strconv.ParseInt(string(cleaned), 16, 64) + if err != nil { + return 0, unstable.NewParserError(b, "couldn't parse hexadecimal number: %w", err) + } + + return i, nil +} + +func parseIntOct(b []byte) (int64, error) { + cleaned, err := checkAndRemoveUnderscoresIntegers(b[2:]) + if err != nil { + return 0, err + } + + i, err := strconv.ParseInt(string(cleaned), 8, 64) + if err != nil { + return 0, unstable.NewParserError(b, "couldn't parse octal number: %w", err) + } + + return i, nil +} + +func parseIntBin(b []byte) (int64, error) { + cleaned, err := checkAndRemoveUnderscoresIntegers(b[2:]) + if err != nil { + return 0, err + } + + i, err := strconv.ParseInt(string(cleaned), 2, 64) + if err != nil { + return 0, unstable.NewParserError(b, "couldn't parse binary number: %w", err) + } + + return i, nil +} + +func isSign(b byte) bool { + return b == '+' || b == '-' +} + +func parseIntDec(b []byte) (int64, error) { + cleaned, err := checkAndRemoveUnderscoresIntegers(b) + if err != nil { + return 0, err + } + + startIdx := 0 + + if isSign(cleaned[0]) { + startIdx++ + } + + if len(cleaned) > startIdx+1 && cleaned[startIdx] == '0' { + return 0, unstable.NewParserError(b, "leading zero not allowed on decimal number") + } + + i, err := strconv.ParseInt(string(cleaned), 10, 64) + if err != nil { + return 0, unstable.NewParserError(b, "couldn't parse decimal number: %w", err) + } + + return i, nil +} + +func checkAndRemoveUnderscoresIntegers(b []byte) ([]byte, error) { + start := 0 + if b[start] == '+' || b[start] == '-' { + start++ + } + + if len(b) == start { + return b, nil + } + + if b[start] == '_' { + return nil, unstable.NewParserError(b[start:start+1], "number cannot start with underscore") + } + + if b[len(b)-1] == '_' { + return nil, unstable.NewParserError(b[len(b)-1:], "number cannot end with underscore") + } + + // fast path + i := 0 + for ; i < len(b); i++ { + if b[i] == '_' { + break + } + } + if i == len(b) { + return b, nil + } + + before := false + cleaned := make([]byte, i, len(b)) + copy(cleaned, b) + + for i++; i < len(b); i++ { + c := b[i] + if c == '_' { + if !before { + return nil, unstable.NewParserError(b[i-1:i+1], "number must have at least one digit between underscores") + } + before = false + } else { + before = true + cleaned = append(cleaned, c) + } + } + + return cleaned, nil +} + +func checkAndRemoveUnderscoresFloats(b []byte) ([]byte, error) { + if b[0] == '_' { + return nil, unstable.NewParserError(b[0:1], "number cannot start with underscore") + } + + if b[len(b)-1] == '_' { + return nil, unstable.NewParserError(b[len(b)-1:], "number cannot end with underscore") + } + + // fast path + i := 0 + for ; i < len(b); i++ { + if b[i] == '_' { + break + } + } + if i == len(b) { + return b, nil + } + + before := false + cleaned := make([]byte, 0, len(b)) + + for i := 0; i < len(b); i++ { + c := b[i] + + switch c { + case '_': + if !before { + return nil, unstable.NewParserError(b[i-1:i+1], "number must have at least one digit between underscores") + } + if i < len(b)-1 && (b[i+1] == 'e' || b[i+1] == 'E') { + return nil, unstable.NewParserError(b[i+1:i+2], "cannot have underscore before exponent") + } + before = false + case '+', '-': + // signed exponents + cleaned = append(cleaned, c) + before = false + case 'e', 'E': + if i < len(b)-1 && b[i+1] == '_' { + return nil, unstable.NewParserError(b[i+1:i+2], "cannot have underscore after exponent") + } + cleaned = append(cleaned, c) + case '.': + if i < len(b)-1 && b[i+1] == '_' { + return nil, unstable.NewParserError(b[i+1:i+2], "cannot have underscore after decimal point") + } + if i > 0 && b[i-1] == '_' { + return nil, unstable.NewParserError(b[i-1:i], "cannot have underscore before decimal point") + } + cleaned = append(cleaned, c) + default: + before = true + cleaned = append(cleaned, c) + } + } + + return cleaned, nil +} + +// isValidDate checks if a provided date is a date that exists. +func isValidDate(year int, month int, day int) bool { + return month > 0 && month < 13 && day > 0 && day <= daysIn(month, year) +} + +// daysBefore[m] counts the number of days in a non-leap year +// before month m begins. There is an entry for m=12, counting +// the number of days before January of next year (365). +var daysBefore = [...]int32{ + 0, + 31, + 31 + 28, + 31 + 28 + 31, + 31 + 28 + 31 + 30, + 31 + 28 + 31 + 30 + 31, + 31 + 28 + 31 + 30 + 31 + 30, + 31 + 28 + 31 + 30 + 31 + 30 + 31, + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31, +} + +func daysIn(m int, year int) int { + if m == 2 && isLeap(year) { + return 29 + } + return int(daysBefore[m] - daysBefore[m-1]) +} + +func isLeap(year int) bool { + return year%4 == 0 && (year%100 != 0 || year%400 == 0) +} + +func isDigit(r byte) bool { + return r >= '0' && r <= '9' +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/doc.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/doc.go new file mode 100644 index 0000000..b7bc599 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/doc.go @@ -0,0 +1,2 @@ +// Package toml is a library to read and write TOML documents. +package toml diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/errors.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/errors.go new file mode 100644 index 0000000..309733f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/errors.go @@ -0,0 +1,252 @@ +package toml + +import ( + "fmt" + "strconv" + "strings" + + "github.com/pelletier/go-toml/v2/internal/danger" + "github.com/pelletier/go-toml/v2/unstable" +) + +// DecodeError represents an error encountered during the parsing or decoding +// of a TOML document. +// +// In addition to the error message, it contains the position in the document +// where it happened, as well as a human-readable representation that shows +// where the error occurred in the document. +type DecodeError struct { + message string + line int + column int + key Key + + human string +} + +// StrictMissingError occurs in a TOML document that does not have a +// corresponding field in the target value. It contains all the missing fields +// in Errors. +// +// Emitted by Decoder when DisallowUnknownFields() was called. +type StrictMissingError struct { + // One error per field that could not be found. + Errors []DecodeError +} + +// Error returns the canonical string for this error. +func (s *StrictMissingError) Error() string { + return "strict mode: fields in the document are missing in the target struct" +} + +// String returns a human readable description of all errors. +func (s *StrictMissingError) String() string { + var buf strings.Builder + + for i, e := range s.Errors { + if i > 0 { + buf.WriteString("\n---\n") + } + + buf.WriteString(e.String()) + } + + return buf.String() +} + +type Key []string + +// Error returns the error message contained in the DecodeError. +func (e *DecodeError) Error() string { + return "toml: " + e.message +} + +// String returns the human-readable contextualized error. This string is multi-line. +func (e *DecodeError) String() string { + return e.human +} + +// Position returns the (line, column) pair indicating where the error +// occurred in the document. Positions are 1-indexed. +func (e *DecodeError) Position() (row int, column int) { + return e.line, e.column +} + +// Key that was being processed when the error occurred. The key is present only +// if this DecodeError is part of a StrictMissingError. +func (e *DecodeError) Key() Key { + return e.key +} + +// decodeErrorFromHighlight creates a DecodeError referencing a highlighted +// range of bytes from document. +// +// highlight needs to be a sub-slice of document, or this function panics. +// +// The function copies all bytes used in DecodeError, so that document and +// highlight can be freely deallocated. +// +//nolint:funlen +func wrapDecodeError(document []byte, de *unstable.ParserError) *DecodeError { + offset := danger.SubsliceOffset(document, de.Highlight) + + errMessage := de.Error() + errLine, errColumn := positionAtEnd(document[:offset]) + before, after := linesOfContext(document, de.Highlight, offset, 3) + + var buf strings.Builder + + maxLine := errLine + len(after) - 1 + lineColumnWidth := len(strconv.Itoa(maxLine)) + + // Write the lines of context strictly before the error. + for i := len(before) - 1; i > 0; i-- { + line := errLine - i + buf.WriteString(formatLineNumber(line, lineColumnWidth)) + buf.WriteString("|") + + if len(before[i]) > 0 { + buf.WriteString(" ") + buf.Write(before[i]) + } + + buf.WriteRune('\n') + } + + // Write the document line that contains the error. + + buf.WriteString(formatLineNumber(errLine, lineColumnWidth)) + buf.WriteString("| ") + + if len(before) > 0 { + buf.Write(before[0]) + } + + buf.Write(de.Highlight) + + if len(after) > 0 { + buf.Write(after[0]) + } + + buf.WriteRune('\n') + + // Write the line with the error message itself (so it does not have a line + // number). + + buf.WriteString(strings.Repeat(" ", lineColumnWidth)) + buf.WriteString("| ") + + if len(before) > 0 { + buf.WriteString(strings.Repeat(" ", len(before[0]))) + } + + buf.WriteString(strings.Repeat("~", len(de.Highlight))) + + if len(errMessage) > 0 { + buf.WriteString(" ") + buf.WriteString(errMessage) + } + + // Write the lines of context strictly after the error. + + for i := 1; i < len(after); i++ { + buf.WriteRune('\n') + line := errLine + i + buf.WriteString(formatLineNumber(line, lineColumnWidth)) + buf.WriteString("|") + + if len(after[i]) > 0 { + buf.WriteString(" ") + buf.Write(after[i]) + } + } + + return &DecodeError{ + message: errMessage, + line: errLine, + column: errColumn, + key: de.Key, + human: buf.String(), + } +} + +func formatLineNumber(line int, width int) string { + format := "%" + strconv.Itoa(width) + "d" + + return fmt.Sprintf(format, line) +} + +func linesOfContext(document []byte, highlight []byte, offset int, linesAround int) ([][]byte, [][]byte) { + return beforeLines(document, offset, linesAround), afterLines(document, highlight, offset, linesAround) +} + +func beforeLines(document []byte, offset int, linesAround int) [][]byte { + var beforeLines [][]byte + + // Walk the document backward from the highlight to find previous lines + // of context. + rest := document[:offset] +backward: + for o := len(rest) - 1; o >= 0 && len(beforeLines) <= linesAround && len(rest) > 0; { + switch { + case rest[o] == '\n': + // handle individual lines + beforeLines = append(beforeLines, rest[o+1:]) + rest = rest[:o] + o = len(rest) - 1 + case o == 0: + // add the first line only if it's non-empty + beforeLines = append(beforeLines, rest) + + break backward + default: + o-- + } + } + + return beforeLines +} + +func afterLines(document []byte, highlight []byte, offset int, linesAround int) [][]byte { + var afterLines [][]byte + + // Walk the document forward from the highlight to find the following + // lines of context. + rest := document[offset+len(highlight):] +forward: + for o := 0; o < len(rest) && len(afterLines) <= linesAround; { + switch { + case rest[o] == '\n': + // handle individual lines + afterLines = append(afterLines, rest[:o]) + rest = rest[o+1:] + o = 0 + + case o == len(rest)-1: + // add last line only if it's non-empty + afterLines = append(afterLines, rest) + + break forward + default: + o++ + } + } + + return afterLines +} + +func positionAtEnd(b []byte) (row int, column int) { + row = 1 + column = 1 + + for _, c := range b { + if c == '\n' { + row++ + column = 1 + } else { + column++ + } + } + + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/ascii.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/ascii.go new file mode 100644 index 0000000..80f698d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/ascii.go @@ -0,0 +1,42 @@ +package characters + +var invalidAsciiTable = [256]bool{ + 0x00: true, + 0x01: true, + 0x02: true, + 0x03: true, + 0x04: true, + 0x05: true, + 0x06: true, + 0x07: true, + 0x08: true, + // 0x09 TAB + // 0x0A LF + 0x0B: true, + 0x0C: true, + // 0x0D CR + 0x0E: true, + 0x0F: true, + 0x10: true, + 0x11: true, + 0x12: true, + 0x13: true, + 0x14: true, + 0x15: true, + 0x16: true, + 0x17: true, + 0x18: true, + 0x19: true, + 0x1A: true, + 0x1B: true, + 0x1C: true, + 0x1D: true, + 0x1E: true, + 0x1F: true, + // 0x20 - 0x7E Printable ASCII characters + 0x7F: true, +} + +func InvalidAscii(b byte) bool { + return invalidAsciiTable[b] +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/utf8.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/utf8.go new file mode 100644 index 0000000..db4f45a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/characters/utf8.go @@ -0,0 +1,199 @@ +package characters + +import ( + "unicode/utf8" +) + +type utf8Err struct { + Index int + Size int +} + +func (u utf8Err) Zero() bool { + return u.Size == 0 +} + +// Verified that a given string is only made of valid UTF-8 characters allowed +// by the TOML spec: +// +// Any Unicode character may be used except those that must be escaped: +// quotation mark, backslash, and the control characters other than tab (U+0000 +// to U+0008, U+000A to U+001F, U+007F). +// +// It is a copy of the Go 1.17 utf8.Valid implementation, tweaked to exit early +// when a character is not allowed. +// +// The returned utf8Err is Zero() if the string is valid, or contains the byte +// index and size of the invalid character. +// +// quotation mark => already checked +// backslash => already checked +// 0-0x8 => invalid +// 0x9 => tab, ok +// 0xA - 0x1F => invalid +// 0x7F => invalid +func Utf8TomlValidAlreadyEscaped(p []byte) (err utf8Err) { + // Fast path. Check for and skip 8 bytes of ASCII characters per iteration. + offset := 0 + for len(p) >= 8 { + // Combining two 32 bit loads allows the same code to be used + // for 32 and 64 bit platforms. + // The compiler can generate a 32bit load for first32 and second32 + // on many platforms. See test/codegen/memcombine.go. + first32 := uint32(p[0]) | uint32(p[1])<<8 | uint32(p[2])<<16 | uint32(p[3])<<24 + second32 := uint32(p[4]) | uint32(p[5])<<8 | uint32(p[6])<<16 | uint32(p[7])<<24 + if (first32|second32)&0x80808080 != 0 { + // Found a non ASCII byte (>= RuneSelf). + break + } + + for i, b := range p[:8] { + if InvalidAscii(b) { + err.Index = offset + i + err.Size = 1 + return + } + } + + p = p[8:] + offset += 8 + } + n := len(p) + for i := 0; i < n; { + pi := p[i] + if pi < utf8.RuneSelf { + if InvalidAscii(pi) { + err.Index = offset + i + err.Size = 1 + return + } + i++ + continue + } + x := first[pi] + if x == xx { + // Illegal starter byte. + err.Index = offset + i + err.Size = 1 + return + } + size := int(x & 7) + if i+size > n { + // Short or invalid. + err.Index = offset + i + err.Size = n - i + return + } + accept := acceptRanges[x>>4] + if c := p[i+1]; c < accept.lo || accept.hi < c { + err.Index = offset + i + err.Size = 2 + return + } else if size == 2 { + } else if c := p[i+2]; c < locb || hicb < c { + err.Index = offset + i + err.Size = 3 + return + } else if size == 3 { + } else if c := p[i+3]; c < locb || hicb < c { + err.Index = offset + i + err.Size = 4 + return + } + i += size + } + return +} + +// Return the size of the next rune if valid, 0 otherwise. +func Utf8ValidNext(p []byte) int { + c := p[0] + + if c < utf8.RuneSelf { + if InvalidAscii(c) { + return 0 + } + return 1 + } + + x := first[c] + if x == xx { + // Illegal starter byte. + return 0 + } + size := int(x & 7) + if size > len(p) { + // Short or invalid. + return 0 + } + accept := acceptRanges[x>>4] + if c := p[1]; c < accept.lo || accept.hi < c { + return 0 + } else if size == 2 { + } else if c := p[2]; c < locb || hicb < c { + return 0 + } else if size == 3 { + } else if c := p[3]; c < locb || hicb < c { + return 0 + } + + return size +} + +// acceptRange gives the range of valid values for the second byte in a UTF-8 +// sequence. +type acceptRange struct { + lo uint8 // lowest value for second byte. + hi uint8 // highest value for second byte. +} + +// acceptRanges has size 16 to avoid bounds checks in the code that uses it. +var acceptRanges = [16]acceptRange{ + 0: {locb, hicb}, + 1: {0xA0, hicb}, + 2: {locb, 0x9F}, + 3: {0x90, hicb}, + 4: {locb, 0x8F}, +} + +// first is information about the first byte in a UTF-8 sequence. +var first = [256]uint8{ + // 1 2 3 4 5 6 7 8 9 A B C D E F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x00-0x0F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x10-0x1F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x20-0x2F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x30-0x3F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x40-0x4F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x50-0x5F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x60-0x6F + as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x70-0x7F + // 1 2 3 4 5 6 7 8 9 A B C D E F + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x80-0x8F + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x90-0x9F + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xA0-0xAF + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xB0-0xBF + xx, xx, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xC0-0xCF + s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xD0-0xDF + s2, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s4, s3, s3, // 0xE0-0xEF + s5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF +} + +const ( + // The default lowest and highest continuation byte. + locb = 0b10000000 + hicb = 0b10111111 + + // These names of these constants are chosen to give nice alignment in the + // table below. The first nibble is an index into acceptRanges or F for + // special one-byte cases. The second nibble is the Rune length or the + // Status for the special one-byte case. + xx = 0xF1 // invalid: size 1 + as = 0xF0 // ASCII: size 1 + s1 = 0x02 // accept 0, size 2 + s2 = 0x13 // accept 1, size 3 + s3 = 0x03 // accept 0, size 3 + s4 = 0x23 // accept 2, size 3 + s5 = 0x34 // accept 3, size 4 + s6 = 0x04 // accept 0, size 4 + s7 = 0x44 // accept 4, size 4 +) diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/danger.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/danger.go new file mode 100644 index 0000000..e38e113 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/danger.go @@ -0,0 +1,65 @@ +package danger + +import ( + "fmt" + "reflect" + "unsafe" +) + +const maxInt = uintptr(int(^uint(0) >> 1)) + +func SubsliceOffset(data []byte, subslice []byte) int { + datap := (*reflect.SliceHeader)(unsafe.Pointer(&data)) + hlp := (*reflect.SliceHeader)(unsafe.Pointer(&subslice)) + + if hlp.Data < datap.Data { + panic(fmt.Errorf("subslice address (%d) is before data address (%d)", hlp.Data, datap.Data)) + } + offset := hlp.Data - datap.Data + + if offset > maxInt { + panic(fmt.Errorf("slice offset larger than int (%d)", offset)) + } + + intoffset := int(offset) + + if intoffset > datap.Len { + panic(fmt.Errorf("slice offset (%d) is farther than data length (%d)", intoffset, datap.Len)) + } + + if intoffset+hlp.Len > datap.Len { + panic(fmt.Errorf("slice ends (%d+%d) is farther than data length (%d)", intoffset, hlp.Len, datap.Len)) + } + + return intoffset +} + +func BytesRange(start []byte, end []byte) []byte { + if start == nil || end == nil { + panic("cannot call BytesRange with nil") + } + startp := (*reflect.SliceHeader)(unsafe.Pointer(&start)) + endp := (*reflect.SliceHeader)(unsafe.Pointer(&end)) + + if startp.Data > endp.Data { + panic(fmt.Errorf("start pointer address (%d) is after end pointer address (%d)", startp.Data, endp.Data)) + } + + l := startp.Len + endLen := int(endp.Data-startp.Data) + endp.Len + if endLen > l { + l = endLen + } + + if l > startp.Cap { + panic(fmt.Errorf("range length is larger than capacity")) + } + + return start[:l] +} + +func Stride(ptr unsafe.Pointer, size uintptr, offset int) unsafe.Pointer { + // TODO: replace with unsafe.Add when Go 1.17 is released + // https://github.com/golang/go/issues/40481 + return unsafe.Pointer(uintptr(ptr) + uintptr(int(size)*offset)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/typeid.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/typeid.go new file mode 100644 index 0000000..9d41c28 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/danger/typeid.go @@ -0,0 +1,23 @@ +package danger + +import ( + "reflect" + "unsafe" +) + +// typeID is used as key in encoder and decoder caches to enable using +// the optimize runtime.mapaccess2_fast64 function instead of the more +// expensive lookup if we were to use reflect.Type as map key. +// +// typeID holds the pointer to the reflect.Type value, which is unique +// in the program. +// +// https://github.com/segmentio/encoding/blob/master/json/codec.go#L59-L61 +type TypeID unsafe.Pointer + +func MakeTypeID(t reflect.Type) TypeID { + // reflect.Type has the fields: + // typ unsafe.Pointer + // ptr unsafe.Pointer + return TypeID((*[2]unsafe.Pointer)(unsafe.Pointer(&t))[1]) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/key.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/key.go new file mode 100644 index 0000000..149b17f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/key.go @@ -0,0 +1,48 @@ +package tracker + +import "github.com/pelletier/go-toml/v2/unstable" + +// KeyTracker is a tracker that keeps track of the current Key as the AST is +// walked. +type KeyTracker struct { + k []string +} + +// UpdateTable sets the state of the tracker with the AST table node. +func (t *KeyTracker) UpdateTable(node *unstable.Node) { + t.reset() + t.Push(node) +} + +// UpdateArrayTable sets the state of the tracker with the AST array table node. +func (t *KeyTracker) UpdateArrayTable(node *unstable.Node) { + t.reset() + t.Push(node) +} + +// Push the given key on the stack. +func (t *KeyTracker) Push(node *unstable.Node) { + it := node.Key() + for it.Next() { + t.k = append(t.k, string(it.Node().Data)) + } +} + +// Pop key from stack. +func (t *KeyTracker) Pop(node *unstable.Node) { + it := node.Key() + for it.Next() { + t.k = t.k[:len(t.k)-1] + } +} + +// Key returns the current key +func (t *KeyTracker) Key() []string { + k := make([]string, len(t.k)) + copy(k, t.k) + return k +} + +func (t *KeyTracker) reset() { + t.k = t.k[:0] +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/seen.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/seen.go new file mode 100644 index 0000000..76df2d5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/seen.go @@ -0,0 +1,358 @@ +package tracker + +import ( + "bytes" + "fmt" + "sync" + + "github.com/pelletier/go-toml/v2/unstable" +) + +type keyKind uint8 + +const ( + invalidKind keyKind = iota + valueKind + tableKind + arrayTableKind +) + +func (k keyKind) String() string { + switch k { + case invalidKind: + return "invalid" + case valueKind: + return "value" + case tableKind: + return "table" + case arrayTableKind: + return "array table" + } + panic("missing keyKind string mapping") +} + +// SeenTracker tracks which keys have been seen with which TOML type to flag +// duplicates and mismatches according to the spec. +// +// Each node in the visited tree is represented by an entry. Each entry has an +// identifier, which is provided by a counter. Entries are stored in the array +// entries. As new nodes are discovered (referenced for the first time in the +// TOML document), entries are created and appended to the array. An entry +// points to its parent using its id. +// +// To find whether a given key (sequence of []byte) has already been visited, +// the entries are linearly searched, looking for one with the right name and +// parent id. +// +// Given that all keys appear in the document after their parent, it is +// guaranteed that all descendants of a node are stored after the node, this +// speeds up the search process. +// +// When encountering [[array tables]], the descendants of that node are removed +// to allow that branch of the tree to be "rediscovered". To maintain the +// invariant above, the deletion process needs to keep the order of entries. +// This results in more copies in that case. +type SeenTracker struct { + entries []entry + currentIdx int +} + +var pool = sync.Pool{ + New: func() interface{} { + return &SeenTracker{} + }, +} + +func (s *SeenTracker) reset() { + // Always contains a root element at index 0. + s.currentIdx = 0 + if len(s.entries) == 0 { + s.entries = make([]entry, 1, 2) + } else { + s.entries = s.entries[:1] + } + s.entries[0].child = -1 + s.entries[0].next = -1 +} + +type entry struct { + // Use -1 to indicate no child or no sibling. + child int + next int + + name []byte + kind keyKind + explicit bool + kv bool +} + +// Find the index of the child of parentIdx with key k. Returns -1 if +// it does not exist. +func (s *SeenTracker) find(parentIdx int, k []byte) int { + for i := s.entries[parentIdx].child; i >= 0; i = s.entries[i].next { + if bytes.Equal(s.entries[i].name, k) { + return i + } + } + return -1 +} + +// Remove all descendants of node at position idx. +func (s *SeenTracker) clear(idx int) { + if idx >= len(s.entries) { + return + } + + for i := s.entries[idx].child; i >= 0; { + next := s.entries[i].next + n := s.entries[0].next + s.entries[0].next = i + s.entries[i].next = n + s.entries[i].name = nil + s.clear(i) + i = next + } + + s.entries[idx].child = -1 +} + +func (s *SeenTracker) create(parentIdx int, name []byte, kind keyKind, explicit bool, kv bool) int { + e := entry{ + child: -1, + next: s.entries[parentIdx].child, + + name: name, + kind: kind, + explicit: explicit, + kv: kv, + } + var idx int + if s.entries[0].next >= 0 { + idx = s.entries[0].next + s.entries[0].next = s.entries[idx].next + s.entries[idx] = e + } else { + idx = len(s.entries) + s.entries = append(s.entries, e) + } + + s.entries[parentIdx].child = idx + + return idx +} + +func (s *SeenTracker) setExplicitFlag(parentIdx int) { + for i := s.entries[parentIdx].child; i >= 0; i = s.entries[i].next { + if s.entries[i].kv { + s.entries[i].explicit = true + s.entries[i].kv = false + } + s.setExplicitFlag(i) + } +} + +// CheckExpression takes a top-level node and checks that it does not contain +// keys that have been seen in previous calls, and validates that types are +// consistent. It returns true if it is the first time this node's key is seen. +// Useful to clear array tables on first use. +func (s *SeenTracker) CheckExpression(node *unstable.Node) (bool, error) { + if s.entries == nil { + s.reset() + } + switch node.Kind { + case unstable.KeyValue: + return s.checkKeyValue(node) + case unstable.Table: + return s.checkTable(node) + case unstable.ArrayTable: + return s.checkArrayTable(node) + default: + panic(fmt.Errorf("this should not be a top level node type: %s", node.Kind)) + } +} + +func (s *SeenTracker) checkTable(node *unstable.Node) (bool, error) { + if s.currentIdx >= 0 { + s.setExplicitFlag(s.currentIdx) + } + + it := node.Key() + + parentIdx := 0 + + // This code is duplicated in checkArrayTable. This is because factoring + // it in a function requires to copy the iterator, or allocate it to the + // heap, which is not cheap. + for it.Next() { + if it.IsLast() { + break + } + + k := it.Node().Data + + idx := s.find(parentIdx, k) + + if idx < 0 { + idx = s.create(parentIdx, k, tableKind, false, false) + } else { + entry := s.entries[idx] + if entry.kind == valueKind { + return false, fmt.Errorf("toml: expected %s to be a table, not a %s", string(k), entry.kind) + } + } + parentIdx = idx + } + + k := it.Node().Data + idx := s.find(parentIdx, k) + + first := false + if idx >= 0 { + kind := s.entries[idx].kind + if kind != tableKind { + return false, fmt.Errorf("toml: key %s should be a table, not a %s", string(k), kind) + } + if s.entries[idx].explicit { + return false, fmt.Errorf("toml: table %s already exists", string(k)) + } + s.entries[idx].explicit = true + } else { + idx = s.create(parentIdx, k, tableKind, true, false) + first = true + } + + s.currentIdx = idx + + return first, nil +} + +func (s *SeenTracker) checkArrayTable(node *unstable.Node) (bool, error) { + if s.currentIdx >= 0 { + s.setExplicitFlag(s.currentIdx) + } + + it := node.Key() + + parentIdx := 0 + + for it.Next() { + if it.IsLast() { + break + } + + k := it.Node().Data + + idx := s.find(parentIdx, k) + + if idx < 0 { + idx = s.create(parentIdx, k, tableKind, false, false) + } else { + entry := s.entries[idx] + if entry.kind == valueKind { + return false, fmt.Errorf("toml: expected %s to be a table, not a %s", string(k), entry.kind) + } + } + + parentIdx = idx + } + + k := it.Node().Data + idx := s.find(parentIdx, k) + + firstTime := idx < 0 + if firstTime { + idx = s.create(parentIdx, k, arrayTableKind, true, false) + } else { + kind := s.entries[idx].kind + if kind != arrayTableKind { + return false, fmt.Errorf("toml: key %s already exists as a %s, but should be an array table", kind, string(k)) + } + s.clear(idx) + } + + s.currentIdx = idx + + return firstTime, nil +} + +func (s *SeenTracker) checkKeyValue(node *unstable.Node) (bool, error) { + parentIdx := s.currentIdx + it := node.Key() + + for it.Next() { + k := it.Node().Data + + idx := s.find(parentIdx, k) + + if idx < 0 { + idx = s.create(parentIdx, k, tableKind, false, true) + } else { + entry := s.entries[idx] + if it.IsLast() { + return false, fmt.Errorf("toml: key %s is already defined", string(k)) + } else if entry.kind != tableKind { + return false, fmt.Errorf("toml: expected %s to be a table, not a %s", string(k), entry.kind) + } else if entry.explicit { + return false, fmt.Errorf("toml: cannot redefine table %s that has already been explicitly defined", string(k)) + } + } + + parentIdx = idx + } + + s.entries[parentIdx].kind = valueKind + + value := node.Value() + + switch value.Kind { + case unstable.InlineTable: + return s.checkInlineTable(value) + case unstable.Array: + return s.checkArray(value) + } + + return false, nil +} + +func (s *SeenTracker) checkArray(node *unstable.Node) (first bool, err error) { + it := node.Children() + for it.Next() { + n := it.Node() + switch n.Kind { + case unstable.InlineTable: + first, err = s.checkInlineTable(n) + if err != nil { + return false, err + } + case unstable.Array: + first, err = s.checkArray(n) + if err != nil { + return false, err + } + } + } + return first, nil +} + +func (s *SeenTracker) checkInlineTable(node *unstable.Node) (first bool, err error) { + s = pool.Get().(*SeenTracker) + s.reset() + + it := node.Children() + for it.Next() { + n := it.Node() + first, err = s.checkKeyValue(n) + if err != nil { + return false, err + } + } + + // As inline tables are self-contained, the tracker does not + // need to retain the details of what they contain. The + // keyValue element that creates the inline table is kept to + // mark the presence of the inline table and prevent + // redefinition of its keys: check* functions cannot walk into + // a value. + pool.Put(s) + return first, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/tracker.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/tracker.go new file mode 100644 index 0000000..bf03173 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/internal/tracker/tracker.go @@ -0,0 +1 @@ +package tracker diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/localtime.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/localtime.go new file mode 100644 index 0000000..a856bfd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/localtime.go @@ -0,0 +1,122 @@ +package toml + +import ( + "fmt" + "strings" + "time" + + "github.com/pelletier/go-toml/v2/unstable" +) + +// LocalDate represents a calendar day in no specific timezone. +type LocalDate struct { + Year int + Month int + Day int +} + +// AsTime converts d into a specific time instance at midnight in zone. +func (d LocalDate) AsTime(zone *time.Location) time.Time { + return time.Date(d.Year, time.Month(d.Month), d.Day, 0, 0, 0, 0, zone) +} + +// String returns RFC 3339 representation of d. +func (d LocalDate) String() string { + return fmt.Sprintf("%04d-%02d-%02d", d.Year, d.Month, d.Day) +} + +// MarshalText returns RFC 3339 representation of d. +func (d LocalDate) MarshalText() ([]byte, error) { + return []byte(d.String()), nil +} + +// UnmarshalText parses b using RFC 3339 to fill d. +func (d *LocalDate) UnmarshalText(b []byte) error { + res, err := parseLocalDate(b) + if err != nil { + return err + } + *d = res + return nil +} + +// LocalTime represents a time of day of no specific day in no specific +// timezone. +type LocalTime struct { + Hour int // Hour of the day: [0; 24[ + Minute int // Minute of the hour: [0; 60[ + Second int // Second of the minute: [0; 60[ + Nanosecond int // Nanoseconds within the second: [0, 1000000000[ + Precision int // Number of digits to display for Nanosecond. +} + +// String returns RFC 3339 representation of d. +// If d.Nanosecond and d.Precision are zero, the time won't have a nanosecond +// component. If d.Nanosecond > 0 but d.Precision = 0, then the minimum number +// of digits for nanoseconds is provided. +func (d LocalTime) String() string { + s := fmt.Sprintf("%02d:%02d:%02d", d.Hour, d.Minute, d.Second) + + if d.Precision > 0 { + s += fmt.Sprintf(".%09d", d.Nanosecond)[:d.Precision+1] + } else if d.Nanosecond > 0 { + // Nanoseconds are specified, but precision is not provided. Use the + // minimum. + s += strings.Trim(fmt.Sprintf(".%09d", d.Nanosecond), "0") + } + + return s +} + +// MarshalText returns RFC 3339 representation of d. +func (d LocalTime) MarshalText() ([]byte, error) { + return []byte(d.String()), nil +} + +// UnmarshalText parses b using RFC 3339 to fill d. +func (d *LocalTime) UnmarshalText(b []byte) error { + res, left, err := parseLocalTime(b) + if err == nil && len(left) != 0 { + err = unstable.NewParserError(left, "extra characters") + } + if err != nil { + return err + } + *d = res + return nil +} + +// LocalDateTime represents a time of a specific day in no specific timezone. +type LocalDateTime struct { + LocalDate + LocalTime +} + +// AsTime converts d into a specific time instance in zone. +func (d LocalDateTime) AsTime(zone *time.Location) time.Time { + return time.Date(d.Year, time.Month(d.Month), d.Day, d.Hour, d.Minute, d.Second, d.Nanosecond, zone) +} + +// String returns RFC 3339 representation of d. +func (d LocalDateTime) String() string { + return d.LocalDate.String() + "T" + d.LocalTime.String() +} + +// MarshalText returns RFC 3339 representation of d. +func (d LocalDateTime) MarshalText() ([]byte, error) { + return []byte(d.String()), nil +} + +// UnmarshalText parses b using RFC 3339 to fill d. +func (d *LocalDateTime) UnmarshalText(data []byte) error { + res, left, err := parseLocalDateTime(data) + if err == nil && len(left) != 0 { + err = unstable.NewParserError(left, "extra characters") + } + if err != nil { + return err + } + + *d = res + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/marshaler.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/marshaler.go new file mode 100644 index 0000000..161acd9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/marshaler.go @@ -0,0 +1,1133 @@ +package toml + +import ( + "bytes" + "encoding" + "encoding/json" + "fmt" + "io" + "math" + "reflect" + "slices" + "strconv" + "strings" + "time" + "unicode" + + "github.com/pelletier/go-toml/v2/internal/characters" +) + +// Marshal serializes a Go value as a TOML document. +// +// It is a shortcut for Encoder.Encode() with the default options. +func Marshal(v interface{}) ([]byte, error) { + var buf bytes.Buffer + enc := NewEncoder(&buf) + + err := enc.Encode(v) + if err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +// Encoder writes a TOML document to an output stream. +type Encoder struct { + // output + w io.Writer + + // global settings + tablesInline bool + arraysMultiline bool + indentSymbol string + indentTables bool + marshalJsonNumbers bool +} + +// NewEncoder returns a new Encoder that writes to w. +func NewEncoder(w io.Writer) *Encoder { + return &Encoder{ + w: w, + indentSymbol: " ", + } +} + +// SetTablesInline forces the encoder to emit all tables inline. +// +// This behavior can be controlled on an individual struct field basis with the +// inline tag: +// +// MyField `toml:",inline"` +func (enc *Encoder) SetTablesInline(inline bool) *Encoder { + enc.tablesInline = inline + return enc +} + +// SetArraysMultiline forces the encoder to emit all arrays with one element per +// line. +// +// This behavior can be controlled on an individual struct field basis with the multiline tag: +// +// MyField `multiline:"true"` +func (enc *Encoder) SetArraysMultiline(multiline bool) *Encoder { + enc.arraysMultiline = multiline + return enc +} + +// SetIndentSymbol defines the string that should be used for indentation. The +// provided string is repeated for each indentation level. Defaults to two +// spaces. +func (enc *Encoder) SetIndentSymbol(s string) *Encoder { + enc.indentSymbol = s + return enc +} + +// SetIndentTables forces the encoder to intent tables and array tables. +func (enc *Encoder) SetIndentTables(indent bool) *Encoder { + enc.indentTables = indent + return enc +} + +// SetMarshalJsonNumbers forces the encoder to serialize `json.Number` as a +// float or integer instead of relying on TextMarshaler to emit a string. +// +// *Unstable:* This method does not follow the compatibility guarantees of +// semver. It can be changed or removed without a new major version being +// issued. +func (enc *Encoder) SetMarshalJsonNumbers(indent bool) *Encoder { + enc.marshalJsonNumbers = indent + return enc +} + +// Encode writes a TOML representation of v to the stream. +// +// If v cannot be represented to TOML it returns an error. +// +// # Encoding rules +// +// A top level slice containing only maps or structs is encoded as [[table +// array]]. +// +// All slices not matching rule 1 are encoded as [array]. As a result, any map +// or struct they contain is encoded as an {inline table}. +// +// Nil interfaces and nil pointers are not supported. +// +// Keys in key-values always have one part. +// +// Intermediate tables are always printed. +// +// By default, strings are encoded as literal string, unless they contain either +// a newline character or a single quote. In that case they are emitted as +// quoted strings. +// +// Unsigned integers larger than math.MaxInt64 cannot be encoded. Doing so +// results in an error. This rule exists because the TOML specification only +// requires parsers to support at least the 64 bits integer range. Allowing +// larger numbers would create non-standard TOML documents, which may not be +// readable (at best) by other implementations. To encode such numbers, a +// solution is a custom type that implements encoding.TextMarshaler. +// +// When encoding structs, fields are encoded in order of definition, with their +// exact name. +// +// Tables and array tables are separated by empty lines. However, consecutive +// subtables definitions are not. For example: +// +// [top1] +// +// [top2] +// [top2.child1] +// +// [[array]] +// +// [[array]] +// [array.child2] +// +// # Struct tags +// +// The encoding of each public struct field can be customized by the format +// string in the "toml" key of the struct field's tag. This follows +// encoding/json's convention. The format string starts with the name of the +// field, optionally followed by a comma-separated list of options. The name may +// be empty in order to provide options without overriding the default name. +// +// The "multiline" option emits strings as quoted multi-line TOML strings. It +// has no effect on fields that would not be encoded as strings. +// +// The "inline" option turns fields that would be emitted as tables into inline +// tables instead. It has no effect on other fields. +// +// The "omitempty" option prevents empty values or groups from being emitted. +// +// The "commented" option prefixes the value and all its children with a comment +// symbol. +// +// In addition to the "toml" tag struct tag, a "comment" tag can be used to emit +// a TOML comment before the value being annotated. Comments are ignored inside +// inline tables. For array tables, the comment is only present before the first +// element of the array. +func (enc *Encoder) Encode(v interface{}) error { + var ( + b []byte + ctx encoderCtx + ) + + ctx.inline = enc.tablesInline + + if v == nil { + return fmt.Errorf("toml: cannot encode a nil interface") + } + + b, err := enc.encode(b, ctx, reflect.ValueOf(v)) + if err != nil { + return err + } + + _, err = enc.w.Write(b) + if err != nil { + return fmt.Errorf("toml: cannot write: %w", err) + } + + return nil +} + +type valueOptions struct { + multiline bool + omitempty bool + commented bool + comment string +} + +type encoderCtx struct { + // Current top-level key. + parentKey []string + + // Key that should be used for a KV. + key string + // Extra flag to account for the empty string + hasKey bool + + // Set to true to indicate that the encoder is inside a KV, so that all + // tables need to be inlined. + insideKv bool + + // Set to true to skip the first table header in an array table. + skipTableHeader bool + + // Should the next table be encoded as inline + inline bool + + // Indentation level + indent int + + // Prefix the current value with a comment. + commented bool + + // Options coming from struct tags + options valueOptions +} + +func (ctx *encoderCtx) shiftKey() { + if ctx.hasKey { + ctx.parentKey = append(ctx.parentKey, ctx.key) + ctx.clearKey() + } +} + +func (ctx *encoderCtx) setKey(k string) { + ctx.key = k + ctx.hasKey = true +} + +func (ctx *encoderCtx) clearKey() { + ctx.key = "" + ctx.hasKey = false +} + +func (ctx *encoderCtx) isRoot() bool { + return len(ctx.parentKey) == 0 && !ctx.hasKey +} + +func (enc *Encoder) encode(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) { + i := v.Interface() + + switch x := i.(type) { + case time.Time: + if x.Nanosecond() > 0 { + return x.AppendFormat(b, time.RFC3339Nano), nil + } + return x.AppendFormat(b, time.RFC3339), nil + case LocalTime: + return append(b, x.String()...), nil + case LocalDate: + return append(b, x.String()...), nil + case LocalDateTime: + return append(b, x.String()...), nil + case json.Number: + if enc.marshalJsonNumbers { + if x == "" { /// Useful zero value. + return append(b, "0"...), nil + } else if v, err := x.Int64(); err == nil { + return enc.encode(b, ctx, reflect.ValueOf(v)) + } else if f, err := x.Float64(); err == nil { + return enc.encode(b, ctx, reflect.ValueOf(f)) + } else { + return nil, fmt.Errorf("toml: unable to convert %q to int64 or float64", x) + } + } + } + + hasTextMarshaler := v.Type().Implements(textMarshalerType) + if hasTextMarshaler || (v.CanAddr() && reflect.PointerTo(v.Type()).Implements(textMarshalerType)) { + if !hasTextMarshaler { + v = v.Addr() + } + + if ctx.isRoot() { + return nil, fmt.Errorf("toml: type %s implementing the TextMarshaler interface cannot be a root element", v.Type()) + } + + text, err := v.Interface().(encoding.TextMarshaler).MarshalText() + if err != nil { + return nil, err + } + + b = enc.encodeString(b, string(text), ctx.options) + + return b, nil + } + + switch v.Kind() { + // containers + case reflect.Map: + return enc.encodeMap(b, ctx, v) + case reflect.Struct: + return enc.encodeStruct(b, ctx, v) + case reflect.Slice, reflect.Array: + return enc.encodeSlice(b, ctx, v) + case reflect.Interface: + if v.IsNil() { + return nil, fmt.Errorf("toml: encoding a nil interface is not supported") + } + + return enc.encode(b, ctx, v.Elem()) + case reflect.Ptr: + if v.IsNil() { + return enc.encode(b, ctx, reflect.Zero(v.Type().Elem())) + } + + return enc.encode(b, ctx, v.Elem()) + + // values + case reflect.String: + b = enc.encodeString(b, v.String(), ctx.options) + case reflect.Float32: + f := v.Float() + + if math.IsNaN(f) { + b = append(b, "nan"...) + } else if f > math.MaxFloat32 { + b = append(b, "inf"...) + } else if f < -math.MaxFloat32 { + b = append(b, "-inf"...) + } else if math.Trunc(f) == f { + b = strconv.AppendFloat(b, f, 'f', 1, 32) + } else { + b = strconv.AppendFloat(b, f, 'f', -1, 32) + } + case reflect.Float64: + f := v.Float() + if math.IsNaN(f) { + b = append(b, "nan"...) + } else if f > math.MaxFloat64 { + b = append(b, "inf"...) + } else if f < -math.MaxFloat64 { + b = append(b, "-inf"...) + } else if math.Trunc(f) == f { + b = strconv.AppendFloat(b, f, 'f', 1, 64) + } else { + b = strconv.AppendFloat(b, f, 'f', -1, 64) + } + case reflect.Bool: + if v.Bool() { + b = append(b, "true"...) + } else { + b = append(b, "false"...) + } + case reflect.Uint64, reflect.Uint32, reflect.Uint16, reflect.Uint8, reflect.Uint: + x := v.Uint() + if x > uint64(math.MaxInt64) { + return nil, fmt.Errorf("toml: not encoding uint (%d) greater than max int64 (%d)", x, int64(math.MaxInt64)) + } + b = strconv.AppendUint(b, x, 10) + case reflect.Int64, reflect.Int32, reflect.Int16, reflect.Int8, reflect.Int: + b = strconv.AppendInt(b, v.Int(), 10) + default: + return nil, fmt.Errorf("toml: cannot encode value of type %s", v.Kind()) + } + + return b, nil +} + +func isNil(v reflect.Value) bool { + switch v.Kind() { + case reflect.Ptr, reflect.Interface, reflect.Map: + return v.IsNil() + default: + return false + } +} + +func shouldOmitEmpty(options valueOptions, v reflect.Value) bool { + return options.omitempty && isEmptyValue(v) +} + +func (enc *Encoder) encodeKv(b []byte, ctx encoderCtx, options valueOptions, v reflect.Value) ([]byte, error) { + var err error + + if !ctx.inline { + b = enc.encodeComment(ctx.indent, options.comment, b) + b = enc.commented(ctx.commented, b) + b = enc.indent(ctx.indent, b) + } + + b = enc.encodeKey(b, ctx.key) + b = append(b, " = "...) + + // create a copy of the context because the value of a KV shouldn't + // modify the global context. + subctx := ctx + subctx.insideKv = true + subctx.shiftKey() + subctx.options = options + + b, err = enc.encode(b, subctx, v) + if err != nil { + return nil, err + } + + return b, nil +} + +func (enc *Encoder) commented(commented bool, b []byte) []byte { + if commented { + return append(b, "# "...) + } + return b +} + +func isEmptyValue(v reflect.Value) bool { + switch v.Kind() { + case reflect.Struct: + return isEmptyStruct(v) + case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + return v.Len() == 0 + case reflect.Bool: + return !v.Bool() + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + return false +} + +func isEmptyStruct(v reflect.Value) bool { + // TODO: merge with walkStruct and cache. + typ := v.Type() + for i := 0; i < typ.NumField(); i++ { + fieldType := typ.Field(i) + + // only consider exported fields + if fieldType.PkgPath != "" { + continue + } + + tag := fieldType.Tag.Get("toml") + + // special field name to skip field + if tag == "-" { + continue + } + + f := v.Field(i) + + if !isEmptyValue(f) { + return false + } + } + + return true +} + +const literalQuote = '\'' + +func (enc *Encoder) encodeString(b []byte, v string, options valueOptions) []byte { + if needsQuoting(v) { + return enc.encodeQuotedString(options.multiline, b, v) + } + + return enc.encodeLiteralString(b, v) +} + +func needsQuoting(v string) bool { + // TODO: vectorize + for _, b := range []byte(v) { + if b == '\'' || b == '\r' || b == '\n' || characters.InvalidAscii(b) { + return true + } + } + return false +} + +// caller should have checked that the string does not contain new lines or ' . +func (enc *Encoder) encodeLiteralString(b []byte, v string) []byte { + b = append(b, literalQuote) + b = append(b, v...) + b = append(b, literalQuote) + + return b +} + +func (enc *Encoder) encodeQuotedString(multiline bool, b []byte, v string) []byte { + stringQuote := `"` + + if multiline { + stringQuote = `"""` + } + + b = append(b, stringQuote...) + if multiline { + b = append(b, '\n') + } + + const ( + hextable = "0123456789ABCDEF" + // U+0000 to U+0008, U+000A to U+001F, U+007F + nul = 0x0 + bs = 0x8 + lf = 0xa + us = 0x1f + del = 0x7f + ) + + for _, r := range []byte(v) { + switch r { + case '\\': + b = append(b, `\\`...) + case '"': + b = append(b, `\"`...) + case '\b': + b = append(b, `\b`...) + case '\f': + b = append(b, `\f`...) + case '\n': + if multiline { + b = append(b, r) + } else { + b = append(b, `\n`...) + } + case '\r': + b = append(b, `\r`...) + case '\t': + b = append(b, `\t`...) + default: + switch { + case r >= nul && r <= bs, r >= lf && r <= us, r == del: + b = append(b, `\u00`...) + b = append(b, hextable[r>>4]) + b = append(b, hextable[r&0x0f]) + default: + b = append(b, r) + } + } + } + + b = append(b, stringQuote...) + + return b +} + +// caller should have checked that the string is in A-Z / a-z / 0-9 / - / _ . +func (enc *Encoder) encodeUnquotedKey(b []byte, v string) []byte { + return append(b, v...) +} + +func (enc *Encoder) encodeTableHeader(ctx encoderCtx, b []byte) ([]byte, error) { + if len(ctx.parentKey) == 0 { + return b, nil + } + + b = enc.encodeComment(ctx.indent, ctx.options.comment, b) + + b = enc.commented(ctx.commented, b) + + b = enc.indent(ctx.indent, b) + + b = append(b, '[') + + b = enc.encodeKey(b, ctx.parentKey[0]) + + for _, k := range ctx.parentKey[1:] { + b = append(b, '.') + b = enc.encodeKey(b, k) + } + + b = append(b, "]\n"...) + + return b, nil +} + +//nolint:cyclop +func (enc *Encoder) encodeKey(b []byte, k string) []byte { + needsQuotation := false + cannotUseLiteral := false + + if len(k) == 0 { + return append(b, "''"...) + } + + for _, c := range k { + if (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '-' || c == '_' { + continue + } + + if c == literalQuote { + cannotUseLiteral = true + } + + needsQuotation = true + } + + if needsQuotation && needsQuoting(k) { + cannotUseLiteral = true + } + + switch { + case cannotUseLiteral: + return enc.encodeQuotedString(false, b, k) + case needsQuotation: + return enc.encodeLiteralString(b, k) + default: + return enc.encodeUnquotedKey(b, k) + } +} + +func (enc *Encoder) keyToString(k reflect.Value) (string, error) { + keyType := k.Type() + switch { + case keyType.Kind() == reflect.String: + return k.String(), nil + + case keyType.Implements(textMarshalerType): + keyB, err := k.Interface().(encoding.TextMarshaler).MarshalText() + if err != nil { + return "", fmt.Errorf("toml: error marshalling key %v from text: %w", k, err) + } + return string(keyB), nil + + case keyType.Kind() == reflect.Int || keyType.Kind() == reflect.Int8 || keyType.Kind() == reflect.Int16 || keyType.Kind() == reflect.Int32 || keyType.Kind() == reflect.Int64: + return strconv.FormatInt(k.Int(), 10), nil + + case keyType.Kind() == reflect.Uint || keyType.Kind() == reflect.Uint8 || keyType.Kind() == reflect.Uint16 || keyType.Kind() == reflect.Uint32 || keyType.Kind() == reflect.Uint64: + return strconv.FormatUint(k.Uint(), 10), nil + + case keyType.Kind() == reflect.Float32: + return strconv.FormatFloat(k.Float(), 'f', -1, 32), nil + + case keyType.Kind() == reflect.Float64: + return strconv.FormatFloat(k.Float(), 'f', -1, 64), nil + } + return "", fmt.Errorf("toml: type %s is not supported as a map key", keyType.Kind()) +} + +func (enc *Encoder) encodeMap(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) { + var ( + t table + emptyValueOptions valueOptions + ) + + iter := v.MapRange() + for iter.Next() { + v := iter.Value() + + if isNil(v) { + continue + } + + k, err := enc.keyToString(iter.Key()) + if err != nil { + return nil, err + } + + if willConvertToTableOrArrayTable(ctx, v) { + t.pushTable(k, v, emptyValueOptions) + } else { + t.pushKV(k, v, emptyValueOptions) + } + } + + sortEntriesByKey(t.kvs) + sortEntriesByKey(t.tables) + + return enc.encodeTable(b, ctx, t) +} + +func sortEntriesByKey(e []entry) { + slices.SortFunc(e, func(a, b entry) int { + return strings.Compare(a.Key, b.Key) + }) +} + +type entry struct { + Key string + Value reflect.Value + Options valueOptions +} + +type table struct { + kvs []entry + tables []entry +} + +func (t *table) pushKV(k string, v reflect.Value, options valueOptions) { + for _, e := range t.kvs { + if e.Key == k { + return + } + } + + t.kvs = append(t.kvs, entry{Key: k, Value: v, Options: options}) +} + +func (t *table) pushTable(k string, v reflect.Value, options valueOptions) { + for _, e := range t.tables { + if e.Key == k { + return + } + } + t.tables = append(t.tables, entry{Key: k, Value: v, Options: options}) +} + +func walkStruct(ctx encoderCtx, t *table, v reflect.Value) { + // TODO: cache this + typ := v.Type() + for i := 0; i < typ.NumField(); i++ { + fieldType := typ.Field(i) + + // only consider exported fields + if fieldType.PkgPath != "" { + continue + } + + tag := fieldType.Tag.Get("toml") + + // special field name to skip field + if tag == "-" { + continue + } + + k, opts := parseTag(tag) + if !isValidName(k) { + k = "" + } + + f := v.Field(i) + + if k == "" { + if fieldType.Anonymous { + if fieldType.Type.Kind() == reflect.Struct { + walkStruct(ctx, t, f) + } else if fieldType.Type.Kind() == reflect.Ptr && !f.IsNil() && f.Elem().Kind() == reflect.Struct { + walkStruct(ctx, t, f.Elem()) + } + continue + } else { + k = fieldType.Name + } + } + + if isNil(f) { + continue + } + + options := valueOptions{ + multiline: opts.multiline, + omitempty: opts.omitempty, + commented: opts.commented, + comment: fieldType.Tag.Get("comment"), + } + + if opts.inline || !willConvertToTableOrArrayTable(ctx, f) { + t.pushKV(k, f, options) + } else { + t.pushTable(k, f, options) + } + } +} + +func (enc *Encoder) encodeStruct(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) { + var t table + + walkStruct(ctx, &t, v) + + return enc.encodeTable(b, ctx, t) +} + +func (enc *Encoder) encodeComment(indent int, comment string, b []byte) []byte { + for len(comment) > 0 { + var line string + idx := strings.IndexByte(comment, '\n') + if idx >= 0 { + line = comment[:idx] + comment = comment[idx+1:] + } else { + line = comment + comment = "" + } + b = enc.indent(indent, b) + b = append(b, "# "...) + b = append(b, line...) + b = append(b, '\n') + } + return b +} + +func isValidName(s string) bool { + if s == "" { + return false + } + for _, c := range s { + switch { + case strings.ContainsRune("!#$%&()*+-./:;<=>?@[]^_{|}~ ", c): + // Backslash and quote chars are reserved, but + // otherwise any punctuation chars are allowed + // in a tag name. + case !unicode.IsLetter(c) && !unicode.IsDigit(c): + return false + } + } + return true +} + +type tagOptions struct { + multiline bool + inline bool + omitempty bool + commented bool +} + +func parseTag(tag string) (string, tagOptions) { + opts := tagOptions{} + + idx := strings.Index(tag, ",") + if idx == -1 { + return tag, opts + } + + raw := tag[idx+1:] + tag = string(tag[:idx]) + for raw != "" { + var o string + i := strings.Index(raw, ",") + if i >= 0 { + o, raw = raw[:i], raw[i+1:] + } else { + o, raw = raw, "" + } + switch o { + case "multiline": + opts.multiline = true + case "inline": + opts.inline = true + case "omitempty": + opts.omitempty = true + case "commented": + opts.commented = true + } + } + + return tag, opts +} + +func (enc *Encoder) encodeTable(b []byte, ctx encoderCtx, t table) ([]byte, error) { + var err error + + ctx.shiftKey() + + if ctx.insideKv || (ctx.inline && !ctx.isRoot()) { + return enc.encodeTableInline(b, ctx, t) + } + + if !ctx.skipTableHeader { + b, err = enc.encodeTableHeader(ctx, b) + if err != nil { + return nil, err + } + + if enc.indentTables && len(ctx.parentKey) > 0 { + ctx.indent++ + } + } + ctx.skipTableHeader = false + + hasNonEmptyKV := false + for _, kv := range t.kvs { + if shouldOmitEmpty(kv.Options, kv.Value) { + continue + } + hasNonEmptyKV = true + + ctx.setKey(kv.Key) + ctx2 := ctx + ctx2.commented = kv.Options.commented || ctx2.commented + + b, err = enc.encodeKv(b, ctx2, kv.Options, kv.Value) + if err != nil { + return nil, err + } + + b = append(b, '\n') + } + + first := true + for _, table := range t.tables { + if shouldOmitEmpty(table.Options, table.Value) { + continue + } + if first { + first = false + if hasNonEmptyKV { + b = append(b, '\n') + } + } else { + b = append(b, "\n"...) + } + + ctx.setKey(table.Key) + + ctx.options = table.Options + ctx2 := ctx + ctx2.commented = ctx2.commented || ctx.options.commented + + b, err = enc.encode(b, ctx2, table.Value) + if err != nil { + return nil, err + } + } + + return b, nil +} + +func (enc *Encoder) encodeTableInline(b []byte, ctx encoderCtx, t table) ([]byte, error) { + var err error + + b = append(b, '{') + + first := true + for _, kv := range t.kvs { + if shouldOmitEmpty(kv.Options, kv.Value) { + continue + } + + if first { + first = false + } else { + b = append(b, `, `...) + } + + ctx.setKey(kv.Key) + + b, err = enc.encodeKv(b, ctx, kv.Options, kv.Value) + if err != nil { + return nil, err + } + } + + if len(t.tables) > 0 { + panic("inline table cannot contain nested tables, only key-values") + } + + b = append(b, "}"...) + + return b, nil +} + +func willConvertToTable(ctx encoderCtx, v reflect.Value) bool { + if !v.IsValid() { + return false + } + if v.Type() == timeType || v.Type().Implements(textMarshalerType) || (v.Kind() != reflect.Ptr && v.CanAddr() && reflect.PointerTo(v.Type()).Implements(textMarshalerType)) { + return false + } + + t := v.Type() + switch t.Kind() { + case reflect.Map, reflect.Struct: + return !ctx.inline + case reflect.Interface: + return willConvertToTable(ctx, v.Elem()) + case reflect.Ptr: + if v.IsNil() { + return false + } + + return willConvertToTable(ctx, v.Elem()) + default: + return false + } +} + +func willConvertToTableOrArrayTable(ctx encoderCtx, v reflect.Value) bool { + if ctx.insideKv { + return false + } + t := v.Type() + + if t.Kind() == reflect.Interface { + return willConvertToTableOrArrayTable(ctx, v.Elem()) + } + + if t.Kind() == reflect.Slice || t.Kind() == reflect.Array { + if v.Len() == 0 { + // An empty slice should be a kv = []. + return false + } + + for i := 0; i < v.Len(); i++ { + t := willConvertToTable(ctx, v.Index(i)) + + if !t { + return false + } + } + + return true + } + + return willConvertToTable(ctx, v) +} + +func (enc *Encoder) encodeSlice(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) { + if v.Len() == 0 { + b = append(b, "[]"...) + + return b, nil + } + + if willConvertToTableOrArrayTable(ctx, v) { + return enc.encodeSliceAsArrayTable(b, ctx, v) + } + + return enc.encodeSliceAsArray(b, ctx, v) +} + +// caller should have checked that v is a slice that only contains values that +// encode into tables. +func (enc *Encoder) encodeSliceAsArrayTable(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) { + ctx.shiftKey() + + scratch := make([]byte, 0, 64) + + scratch = enc.commented(ctx.commented, scratch) + + if enc.indentTables { + scratch = enc.indent(ctx.indent, scratch) + } + + scratch = append(scratch, "[["...) + + for i, k := range ctx.parentKey { + if i > 0 { + scratch = append(scratch, '.') + } + + scratch = enc.encodeKey(scratch, k) + } + + scratch = append(scratch, "]]\n"...) + ctx.skipTableHeader = true + + b = enc.encodeComment(ctx.indent, ctx.options.comment, b) + + if enc.indentTables { + ctx.indent++ + } + + for i := 0; i < v.Len(); i++ { + if i != 0 { + b = append(b, "\n"...) + } + + b = append(b, scratch...) + + var err error + b, err = enc.encode(b, ctx, v.Index(i)) + if err != nil { + return nil, err + } + } + + return b, nil +} + +func (enc *Encoder) encodeSliceAsArray(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) { + multiline := ctx.options.multiline || enc.arraysMultiline + separator := ", " + + b = append(b, '[') + + subCtx := ctx + subCtx.options = valueOptions{} + + if multiline { + separator = ",\n" + + b = append(b, '\n') + + subCtx.indent++ + } + + var err error + first := true + + for i := 0; i < v.Len(); i++ { + if first { + first = false + } else { + b = append(b, separator...) + } + + if multiline { + b = enc.indent(subCtx.indent, b) + } + + b, err = enc.encode(b, subCtx, v.Index(i)) + if err != nil { + return nil, err + } + } + + if multiline { + b = append(b, '\n') + b = enc.indent(ctx.indent, b) + } + + b = append(b, ']') + + return b, nil +} + +func (enc *Encoder) indent(level int, b []byte) []byte { + for i := 0; i < level; i++ { + b = append(b, enc.indentSymbol...) + } + + return b +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/strict.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/strict.go new file mode 100644 index 0000000..802e7e4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/strict.go @@ -0,0 +1,107 @@ +package toml + +import ( + "github.com/pelletier/go-toml/v2/internal/danger" + "github.com/pelletier/go-toml/v2/internal/tracker" + "github.com/pelletier/go-toml/v2/unstable" +) + +type strict struct { + Enabled bool + + // Tracks the current key being processed. + key tracker.KeyTracker + + missing []unstable.ParserError +} + +func (s *strict) EnterTable(node *unstable.Node) { + if !s.Enabled { + return + } + + s.key.UpdateTable(node) +} + +func (s *strict) EnterArrayTable(node *unstable.Node) { + if !s.Enabled { + return + } + + s.key.UpdateArrayTable(node) +} + +func (s *strict) EnterKeyValue(node *unstable.Node) { + if !s.Enabled { + return + } + + s.key.Push(node) +} + +func (s *strict) ExitKeyValue(node *unstable.Node) { + if !s.Enabled { + return + } + + s.key.Pop(node) +} + +func (s *strict) MissingTable(node *unstable.Node) { + if !s.Enabled { + return + } + + s.missing = append(s.missing, unstable.ParserError{ + Highlight: keyLocation(node), + Message: "missing table", + Key: s.key.Key(), + }) +} + +func (s *strict) MissingField(node *unstable.Node) { + if !s.Enabled { + return + } + + s.missing = append(s.missing, unstable.ParserError{ + Highlight: keyLocation(node), + Message: "missing field", + Key: s.key.Key(), + }) +} + +func (s *strict) Error(doc []byte) error { + if !s.Enabled || len(s.missing) == 0 { + return nil + } + + err := &StrictMissingError{ + Errors: make([]DecodeError, 0, len(s.missing)), + } + + for _, derr := range s.missing { + derr := derr + err.Errors = append(err.Errors, *wrapDecodeError(doc, &derr)) + } + + return err +} + +func keyLocation(node *unstable.Node) []byte { + k := node.Key() + + hasOne := k.Next() + if !hasOne { + panic("should not be called with empty key") + } + + start := k.Node().Data + end := k.Node().Data + + for k.Next() { + end = k.Node().Data + } + + return danger.BytesRange(start, end) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/toml.abnf b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/toml.abnf new file mode 100644 index 0000000..473f374 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/toml.abnf @@ -0,0 +1,243 @@ +;; This document describes TOML's syntax, using the ABNF format (defined in +;; RFC 5234 -- https://www.ietf.org/rfc/rfc5234.txt). +;; +;; All valid TOML documents will match this description, however certain +;; invalid documents would need to be rejected as per the semantics described +;; in the supporting text description. + +;; It is possible to try this grammar interactively, using instaparse. +;; http://instaparse.mojombo.com/ +;; +;; To do so, in the lower right, click on Options and change `:input-format` to +;; ':abnf'. Then paste this entire ABNF document into the grammar entry box +;; (above the options). Then you can type or paste a sample TOML document into +;; the beige box on the left. Tada! + +;; Overall Structure + +toml = expression *( newline expression ) + +expression = ws [ comment ] +expression =/ ws keyval ws [ comment ] +expression =/ ws table ws [ comment ] + +;; Whitespace + +ws = *wschar +wschar = %x20 ; Space +wschar =/ %x09 ; Horizontal tab + +;; Newline + +newline = %x0A ; LF +newline =/ %x0D.0A ; CRLF + +;; Comment + +comment-start-symbol = %x23 ; # +non-ascii = %x80-D7FF / %xE000-10FFFF +non-eol = %x09 / %x20-7F / non-ascii + +comment = comment-start-symbol *non-eol + +;; Key-Value pairs + +keyval = key keyval-sep val + +key = simple-key / dotted-key +simple-key = quoted-key / unquoted-key + +unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _ +quoted-key = basic-string / literal-string +dotted-key = simple-key 1*( dot-sep simple-key ) + +dot-sep = ws %x2E ws ; . Period +keyval-sep = ws %x3D ws ; = + +val = string / boolean / array / inline-table / date-time / float / integer + +;; String + +string = ml-basic-string / basic-string / ml-literal-string / literal-string + +;; Basic String + +basic-string = quotation-mark *basic-char quotation-mark + +quotation-mark = %x22 ; " + +basic-char = basic-unescaped / escaped +basic-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii +escaped = escape escape-seq-char + +escape = %x5C ; \ +escape-seq-char = %x22 ; " quotation mark U+0022 +escape-seq-char =/ %x5C ; \ reverse solidus U+005C +escape-seq-char =/ %x62 ; b backspace U+0008 +escape-seq-char =/ %x66 ; f form feed U+000C +escape-seq-char =/ %x6E ; n line feed U+000A +escape-seq-char =/ %x72 ; r carriage return U+000D +escape-seq-char =/ %x74 ; t tab U+0009 +escape-seq-char =/ %x75 4HEXDIG ; uXXXX U+XXXX +escape-seq-char =/ %x55 8HEXDIG ; UXXXXXXXX U+XXXXXXXX + +;; Multiline Basic String + +ml-basic-string = ml-basic-string-delim [ newline ] ml-basic-body + ml-basic-string-delim +ml-basic-string-delim = 3quotation-mark +ml-basic-body = *mlb-content *( mlb-quotes 1*mlb-content ) [ mlb-quotes ] + +mlb-content = mlb-char / newline / mlb-escaped-nl +mlb-char = mlb-unescaped / escaped +mlb-quotes = 1*2quotation-mark +mlb-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii +mlb-escaped-nl = escape ws newline *( wschar / newline ) + +;; Literal String + +literal-string = apostrophe *literal-char apostrophe + +apostrophe = %x27 ; ' apostrophe + +literal-char = %x09 / %x20-26 / %x28-7E / non-ascii + +;; Multiline Literal String + +ml-literal-string = ml-literal-string-delim [ newline ] ml-literal-body + ml-literal-string-delim +ml-literal-string-delim = 3apostrophe +ml-literal-body = *mll-content *( mll-quotes 1*mll-content ) [ mll-quotes ] + +mll-content = mll-char / newline +mll-char = %x09 / %x20-26 / %x28-7E / non-ascii +mll-quotes = 1*2apostrophe + +;; Integer + +integer = dec-int / hex-int / oct-int / bin-int + +minus = %x2D ; - +plus = %x2B ; + +underscore = %x5F ; _ +digit1-9 = %x31-39 ; 1-9 +digit0-7 = %x30-37 ; 0-7 +digit0-1 = %x30-31 ; 0-1 + +hex-prefix = %x30.78 ; 0x +oct-prefix = %x30.6F ; 0o +bin-prefix = %x30.62 ; 0b + +dec-int = [ minus / plus ] unsigned-dec-int +unsigned-dec-int = DIGIT / digit1-9 1*( DIGIT / underscore DIGIT ) + +hex-int = hex-prefix HEXDIG *( HEXDIG / underscore HEXDIG ) +oct-int = oct-prefix digit0-7 *( digit0-7 / underscore digit0-7 ) +bin-int = bin-prefix digit0-1 *( digit0-1 / underscore digit0-1 ) + +;; Float + +float = float-int-part ( exp / frac [ exp ] ) +float =/ special-float + +float-int-part = dec-int +frac = decimal-point zero-prefixable-int +decimal-point = %x2E ; . +zero-prefixable-int = DIGIT *( DIGIT / underscore DIGIT ) + +exp = "e" float-exp-part +float-exp-part = [ minus / plus ] zero-prefixable-int + +special-float = [ minus / plus ] ( inf / nan ) +inf = %x69.6e.66 ; inf +nan = %x6e.61.6e ; nan + +;; Boolean + +boolean = true / false + +true = %x74.72.75.65 ; true +false = %x66.61.6C.73.65 ; false + +;; Date and Time (as defined in RFC 3339) + +date-time = offset-date-time / local-date-time / local-date / local-time + +date-fullyear = 4DIGIT +date-month = 2DIGIT ; 01-12 +date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year +time-delim = "T" / %x20 ; T, t, or space +time-hour = 2DIGIT ; 00-23 +time-minute = 2DIGIT ; 00-59 +time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second rules +time-secfrac = "." 1*DIGIT +time-numoffset = ( "+" / "-" ) time-hour ":" time-minute +time-offset = "Z" / time-numoffset + +partial-time = time-hour ":" time-minute ":" time-second [ time-secfrac ] +full-date = date-fullyear "-" date-month "-" date-mday +full-time = partial-time time-offset + +;; Offset Date-Time + +offset-date-time = full-date time-delim full-time + +;; Local Date-Time + +local-date-time = full-date time-delim partial-time + +;; Local Date + +local-date = full-date + +;; Local Time + +local-time = partial-time + +;; Array + +array = array-open [ array-values ] ws-comment-newline array-close + +array-open = %x5B ; [ +array-close = %x5D ; ] + +array-values = ws-comment-newline val ws-comment-newline array-sep array-values +array-values =/ ws-comment-newline val ws-comment-newline [ array-sep ] + +array-sep = %x2C ; , Comma + +ws-comment-newline = *( wschar / [ comment ] newline ) + +;; Table + +table = std-table / array-table + +;; Standard Table + +std-table = std-table-open key std-table-close + +std-table-open = %x5B ws ; [ Left square bracket +std-table-close = ws %x5D ; ] Right square bracket + +;; Inline Table + +inline-table = inline-table-open [ inline-table-keyvals ] inline-table-close + +inline-table-open = %x7B ws ; { +inline-table-close = ws %x7D ; } +inline-table-sep = ws %x2C ws ; , Comma + +inline-table-keyvals = keyval [ inline-table-sep inline-table-keyvals ] + +;; Array Table + +array-table = array-table-open key array-table-close + +array-table-open = %x5B.5B ws ; [[ Double left square bracket +array-table-close = ws %x5D.5D ; ]] Double right square bracket + +;; Built-in ABNF terms, reproduced here for clarity + +ALPHA = %x41-5A / %x61-7A ; A-Z / a-z +DIGIT = %x30-39 ; 0-9 +HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/types.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/types.go new file mode 100644 index 0000000..3c6b8fe --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/types.go @@ -0,0 +1,14 @@ +package toml + +import ( + "encoding" + "reflect" + "time" +) + +var timeType = reflect.TypeOf((*time.Time)(nil)).Elem() +var textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem() +var textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem() +var mapStringInterfaceType = reflect.TypeOf(map[string]interface{}(nil)) +var sliceInterfaceType = reflect.TypeOf([]interface{}(nil)) +var stringType = reflect.TypeOf("") diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unmarshaler.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unmarshaler.go new file mode 100644 index 0000000..189be52 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unmarshaler.go @@ -0,0 +1,1334 @@ +package toml + +import ( + "encoding" + "errors" + "fmt" + "io" + "math" + "reflect" + "strconv" + "strings" + "sync/atomic" + "time" + + "github.com/pelletier/go-toml/v2/internal/danger" + "github.com/pelletier/go-toml/v2/internal/tracker" + "github.com/pelletier/go-toml/v2/unstable" +) + +// Unmarshal deserializes a TOML document into a Go value. +// +// It is a shortcut for Decoder.Decode() with the default options. +func Unmarshal(data []byte, v interface{}) error { + d := decoder{} + d.p.Reset(data) + return d.FromParser(v) +} + +// Decoder reads and decode a TOML document from an input stream. +type Decoder struct { + // input + r io.Reader + + // global settings + strict bool + + // toggles unmarshaler interface + unmarshalerInterface bool +} + +// NewDecoder creates a new Decoder that will read from r. +func NewDecoder(r io.Reader) *Decoder { + return &Decoder{r: r} +} + +// DisallowUnknownFields causes the Decoder to return an error when the +// destination is a struct and the input contains a key that does not match a +// non-ignored field. +// +// In that case, the Decoder returns a StrictMissingError that can be used to +// retrieve the individual errors as well as generate a human readable +// description of the missing fields. +func (d *Decoder) DisallowUnknownFields() *Decoder { + d.strict = true + return d +} + +// EnableUnmarshalerInterface allows to enable unmarshaler interface. +// +// With this feature enabled, types implementing the unstable/Unmarshaler +// interface can be decoded from any structure of the document. It allows types +// that don't have a straightforward TOML representation to provide their own +// decoding logic. +// +// Currently, types can only decode from a single value. Tables and array tables +// are not supported. +// +// *Unstable:* This method does not follow the compatibility guarantees of +// semver. It can be changed or removed without a new major version being +// issued. +func (d *Decoder) EnableUnmarshalerInterface() *Decoder { + d.unmarshalerInterface = true + return d +} + +// Decode the whole content of r into v. +// +// By default, values in the document that don't exist in the target Go value +// are ignored. See Decoder.DisallowUnknownFields() to change this behavior. +// +// When a TOML local date, time, or date-time is decoded into a time.Time, its +// value is represented in time.Local timezone. Otherwise the appropriate Local* +// structure is used. For time values, precision up to the nanosecond is +// supported by truncating extra digits. +// +// Empty tables decoded in an interface{} create an empty initialized +// map[string]interface{}. +// +// Types implementing the encoding.TextUnmarshaler interface are decoded from a +// TOML string. +// +// When decoding a number, go-toml will return an error if the number is out of +// bounds for the target type (which includes negative numbers when decoding +// into an unsigned int). +// +// If an error occurs while decoding the content of the document, this function +// returns a toml.DecodeError, providing context about the issue. When using +// strict mode and a field is missing, a `toml.StrictMissingError` is +// returned. In any other case, this function returns a standard Go error. +// +// # Type mapping +// +// List of supported TOML types and their associated accepted Go types: +// +// String -> string +// Integer -> uint*, int*, depending on size +// Float -> float*, depending on size +// Boolean -> bool +// Offset Date-Time -> time.Time +// Local Date-time -> LocalDateTime, time.Time +// Local Date -> LocalDate, time.Time +// Local Time -> LocalTime, time.Time +// Array -> slice and array, depending on elements types +// Table -> map and struct +// Inline Table -> same as Table +// Array of Tables -> same as Array and Table +func (d *Decoder) Decode(v interface{}) error { + b, err := io.ReadAll(d.r) + if err != nil { + return fmt.Errorf("toml: %w", err) + } + + dec := decoder{ + strict: strict{ + Enabled: d.strict, + }, + unmarshalerInterface: d.unmarshalerInterface, + } + dec.p.Reset(b) + + return dec.FromParser(v) +} + +type decoder struct { + // Which parser instance in use for this decoding session. + p unstable.Parser + + // Flag indicating that the current expression is stashed. + // If set to true, calling nextExpr will not actually pull a new expression + // but turn off the flag instead. + stashedExpr bool + + // Skip expressions until a table is found. This is set to true when a + // table could not be created (missing field in map), so all KV expressions + // need to be skipped. + skipUntilTable bool + + // Flag indicating that the current array/slice table should be cleared because + // it is the first encounter of an array table. + clearArrayTable bool + + // Tracks position in Go arrays. + // This is used when decoding [[array tables]] into Go arrays. Given array + // tables are separate TOML expression, we need to keep track of where we + // are at in the Go array, as we can't just introspect its size. + arrayIndexes map[reflect.Value]int + + // Tracks keys that have been seen, with which type. + seen tracker.SeenTracker + + // Strict mode + strict strict + + // Flag that enables/disables unmarshaler interface. + unmarshalerInterface bool + + // Current context for the error. + errorContext *errorContext +} + +type errorContext struct { + Struct reflect.Type + Field []int +} + +func (d *decoder) typeMismatchError(toml string, target reflect.Type) error { + return fmt.Errorf("toml: %s", d.typeMismatchString(toml, target)) +} + +func (d *decoder) typeMismatchString(toml string, target reflect.Type) string { + if d.errorContext != nil && d.errorContext.Struct != nil { + ctx := d.errorContext + f := ctx.Struct.FieldByIndex(ctx.Field) + return fmt.Sprintf("cannot decode TOML %s into struct field %s.%s of type %s", toml, ctx.Struct, f.Name, f.Type) + } + return fmt.Sprintf("cannot decode TOML %s into a Go value of type %s", toml, target) +} + +func (d *decoder) expr() *unstable.Node { + return d.p.Expression() +} + +func (d *decoder) nextExpr() bool { + if d.stashedExpr { + d.stashedExpr = false + return true + } + return d.p.NextExpression() +} + +func (d *decoder) stashExpr() { + d.stashedExpr = true +} + +func (d *decoder) arrayIndex(shouldAppend bool, v reflect.Value) int { + if d.arrayIndexes == nil { + d.arrayIndexes = make(map[reflect.Value]int, 1) + } + + idx, ok := d.arrayIndexes[v] + + if !ok { + d.arrayIndexes[v] = 0 + } else if shouldAppend { + idx++ + d.arrayIndexes[v] = idx + } + + return idx +} + +func (d *decoder) FromParser(v interface{}) error { + r := reflect.ValueOf(v) + if r.Kind() != reflect.Ptr { + return fmt.Errorf("toml: decoding can only be performed into a pointer, not %s", r.Kind()) + } + + if r.IsNil() { + return fmt.Errorf("toml: decoding pointer target cannot be nil") + } + + r = r.Elem() + if r.Kind() == reflect.Interface && r.IsNil() { + newMap := map[string]interface{}{} + r.Set(reflect.ValueOf(newMap)) + } + + err := d.fromParser(r) + if err == nil { + return d.strict.Error(d.p.Data()) + } + + var e *unstable.ParserError + if errors.As(err, &e) { + return wrapDecodeError(d.p.Data(), e) + } + + return err +} + +func (d *decoder) fromParser(root reflect.Value) error { + for d.nextExpr() { + err := d.handleRootExpression(d.expr(), root) + if err != nil { + return err + } + } + + return d.p.Error() +} + +/* +Rules for the unmarshal code: + +- The stack is used to keep track of which values need to be set where. +- handle* functions <=> switch on a given unstable.Kind. +- unmarshalX* functions need to unmarshal a node of kind X. +- An "object" is either a struct or a map. +*/ + +func (d *decoder) handleRootExpression(expr *unstable.Node, v reflect.Value) error { + var x reflect.Value + var err error + var first bool // used for to clear array tables on first use + + if !(d.skipUntilTable && expr.Kind == unstable.KeyValue) { + first, err = d.seen.CheckExpression(expr) + if err != nil { + return err + } + } + + switch expr.Kind { + case unstable.KeyValue: + if d.skipUntilTable { + return nil + } + x, err = d.handleKeyValue(expr, v) + case unstable.Table: + d.skipUntilTable = false + d.strict.EnterTable(expr) + x, err = d.handleTable(expr.Key(), v) + case unstable.ArrayTable: + d.skipUntilTable = false + d.strict.EnterArrayTable(expr) + d.clearArrayTable = first + x, err = d.handleArrayTable(expr.Key(), v) + default: + panic(fmt.Errorf("parser should not permit expression of kind %s at document root", expr.Kind)) + } + + if d.skipUntilTable { + if expr.Kind == unstable.Table || expr.Kind == unstable.ArrayTable { + d.strict.MissingTable(expr) + } + } else if err == nil && x.IsValid() { + v.Set(x) + } + + return err +} + +func (d *decoder) handleArrayTable(key unstable.Iterator, v reflect.Value) (reflect.Value, error) { + if key.Next() { + return d.handleArrayTablePart(key, v) + } + return d.handleKeyValues(v) +} + +func (d *decoder) handleArrayTableCollectionLast(key unstable.Iterator, v reflect.Value) (reflect.Value, error) { + switch v.Kind() { + case reflect.Interface: + elem := v.Elem() + if !elem.IsValid() { + elem = reflect.New(sliceInterfaceType).Elem() + elem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16)) + } else if elem.Kind() == reflect.Slice { + if elem.Type() != sliceInterfaceType { + elem = reflect.New(sliceInterfaceType).Elem() + elem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16)) + } else if !elem.CanSet() { + nelem := reflect.New(sliceInterfaceType).Elem() + nelem.Set(reflect.MakeSlice(sliceInterfaceType, elem.Len(), elem.Cap())) + reflect.Copy(nelem, elem) + elem = nelem + } + if d.clearArrayTable && elem.Len() > 0 { + elem.SetLen(0) + d.clearArrayTable = false + } + } + return d.handleArrayTableCollectionLast(key, elem) + case reflect.Ptr: + elem := v.Elem() + if !elem.IsValid() { + ptr := reflect.New(v.Type().Elem()) + v.Set(ptr) + elem = ptr.Elem() + } + + elem, err := d.handleArrayTableCollectionLast(key, elem) + if err != nil { + return reflect.Value{}, err + } + v.Elem().Set(elem) + + return v, nil + case reflect.Slice: + if d.clearArrayTable && v.Len() > 0 { + v.SetLen(0) + d.clearArrayTable = false + } + elemType := v.Type().Elem() + var elem reflect.Value + if elemType.Kind() == reflect.Interface { + elem = makeMapStringInterface() + } else { + elem = reflect.New(elemType).Elem() + } + elem2, err := d.handleArrayTable(key, elem) + if err != nil { + return reflect.Value{}, err + } + if elem2.IsValid() { + elem = elem2 + } + return reflect.Append(v, elem), nil + case reflect.Array: + idx := d.arrayIndex(true, v) + if idx >= v.Len() { + return v, fmt.Errorf("%s at position %d", d.typeMismatchError("array table", v.Type()), idx) + } + elem := v.Index(idx) + _, err := d.handleArrayTable(key, elem) + return v, err + default: + return reflect.Value{}, d.typeMismatchError("array table", v.Type()) + } +} + +// When parsing an array table expression, each part of the key needs to be +// evaluated like a normal key, but if it returns a collection, it also needs to +// point to the last element of the collection. Unless it is the last part of +// the key, then it needs to create a new element at the end. +func (d *decoder) handleArrayTableCollection(key unstable.Iterator, v reflect.Value) (reflect.Value, error) { + if key.IsLast() { + return d.handleArrayTableCollectionLast(key, v) + } + + switch v.Kind() { + case reflect.Ptr: + elem := v.Elem() + if !elem.IsValid() { + ptr := reflect.New(v.Type().Elem()) + v.Set(ptr) + elem = ptr.Elem() + } + + elem, err := d.handleArrayTableCollection(key, elem) + if err != nil { + return reflect.Value{}, err + } + if elem.IsValid() { + v.Elem().Set(elem) + } + + return v, nil + case reflect.Slice: + elem := v.Index(v.Len() - 1) + x, err := d.handleArrayTable(key, elem) + if err != nil || d.skipUntilTable { + return reflect.Value{}, err + } + if x.IsValid() { + elem.Set(x) + } + + return v, err + case reflect.Array: + idx := d.arrayIndex(false, v) + if idx >= v.Len() { + return v, fmt.Errorf("%s at position %d", d.typeMismatchError("array table", v.Type()), idx) + } + elem := v.Index(idx) + _, err := d.handleArrayTable(key, elem) + return v, err + } + + return d.handleArrayTable(key, v) +} + +func (d *decoder) handleKeyPart(key unstable.Iterator, v reflect.Value, nextFn handlerFn, makeFn valueMakerFn) (reflect.Value, error) { + var rv reflect.Value + + // First, dispatch over v to make sure it is a valid object. + // There is no guarantee over what it could be. + switch v.Kind() { + case reflect.Ptr: + elem := v.Elem() + if !elem.IsValid() { + v.Set(reflect.New(v.Type().Elem())) + } + elem = v.Elem() + return d.handleKeyPart(key, elem, nextFn, makeFn) + case reflect.Map: + vt := v.Type() + + // Create the key for the map element. Convert to key type. + mk, err := d.keyFromData(vt.Key(), key.Node().Data) + if err != nil { + return reflect.Value{}, err + } + + // If the map does not exist, create it. + if v.IsNil() { + vt := v.Type() + v = reflect.MakeMap(vt) + rv = v + } + + mv := v.MapIndex(mk) + set := false + if !mv.IsValid() { + // If there is no value in the map, create a new one according to + // the map type. If the element type is interface, create either a + // map[string]interface{} or a []interface{} depending on whether + // this is the last part of the array table key. + + t := vt.Elem() + if t.Kind() == reflect.Interface { + mv = makeFn() + } else { + mv = reflect.New(t).Elem() + } + set = true + } else if mv.Kind() == reflect.Interface { + mv = mv.Elem() + if !mv.IsValid() { + mv = makeFn() + } + set = true + } else if !mv.CanAddr() { + vt := v.Type() + t := vt.Elem() + oldmv := mv + mv = reflect.New(t).Elem() + mv.Set(oldmv) + set = true + } + + x, err := nextFn(key, mv) + if err != nil { + return reflect.Value{}, err + } + + if x.IsValid() { + mv = x + set = true + } + + if set { + v.SetMapIndex(mk, mv) + } + case reflect.Struct: + path, found := structFieldPath(v, string(key.Node().Data)) + if !found { + d.skipUntilTable = true + return reflect.Value{}, nil + } + + if d.errorContext == nil { + d.errorContext = new(errorContext) + } + t := v.Type() + d.errorContext.Struct = t + d.errorContext.Field = path + + f := fieldByIndex(v, path) + x, err := nextFn(key, f) + if err != nil || d.skipUntilTable { + return reflect.Value{}, err + } + if x.IsValid() { + f.Set(x) + } + d.errorContext.Field = nil + d.errorContext.Struct = nil + case reflect.Interface: + if v.Elem().IsValid() { + v = v.Elem() + } else { + v = makeMapStringInterface() + } + + x, err := d.handleKeyPart(key, v, nextFn, makeFn) + if err != nil { + return reflect.Value{}, err + } + if x.IsValid() { + v = x + } + rv = v + default: + panic(fmt.Errorf("unhandled part: %s", v.Kind())) + } + + return rv, nil +} + +// HandleArrayTablePart navigates the Go structure v using the key v. It is +// only used for the prefix (non-last) parts of an array-table. When +// encountering a collection, it should go to the last element. +func (d *decoder) handleArrayTablePart(key unstable.Iterator, v reflect.Value) (reflect.Value, error) { + var makeFn valueMakerFn + if key.IsLast() { + makeFn = makeSliceInterface + } else { + makeFn = makeMapStringInterface + } + return d.handleKeyPart(key, v, d.handleArrayTableCollection, makeFn) +} + +// HandleTable returns a reference when it has checked the next expression but +// cannot handle it. +func (d *decoder) handleTable(key unstable.Iterator, v reflect.Value) (reflect.Value, error) { + if v.Kind() == reflect.Slice { + if v.Len() == 0 { + return reflect.Value{}, unstable.NewParserError(key.Node().Data, "cannot store a table in a slice") + } + elem := v.Index(v.Len() - 1) + x, err := d.handleTable(key, elem) + if err != nil { + return reflect.Value{}, err + } + if x.IsValid() { + elem.Set(x) + } + return reflect.Value{}, nil + } + if key.Next() { + // Still scoping the key + return d.handleTablePart(key, v) + } + // Done scoping the key. + // Now handle all the key-value expressions in this table. + return d.handleKeyValues(v) +} + +// Handle root expressions until the end of the document or the next +// non-key-value. +func (d *decoder) handleKeyValues(v reflect.Value) (reflect.Value, error) { + var rv reflect.Value + for d.nextExpr() { + expr := d.expr() + if expr.Kind != unstable.KeyValue { + // Stash the expression so that fromParser can just loop and use + // the right handler. + // We could just recurse ourselves here, but at least this gives a + // chance to pop the stack a bit. + d.stashExpr() + break + } + + _, err := d.seen.CheckExpression(expr) + if err != nil { + return reflect.Value{}, err + } + + x, err := d.handleKeyValue(expr, v) + if err != nil { + return reflect.Value{}, err + } + if x.IsValid() { + v = x + rv = x + } + } + return rv, nil +} + +type ( + handlerFn func(key unstable.Iterator, v reflect.Value) (reflect.Value, error) + valueMakerFn func() reflect.Value +) + +func makeMapStringInterface() reflect.Value { + return reflect.MakeMap(mapStringInterfaceType) +} + +func makeSliceInterface() reflect.Value { + return reflect.MakeSlice(sliceInterfaceType, 0, 16) +} + +func (d *decoder) handleTablePart(key unstable.Iterator, v reflect.Value) (reflect.Value, error) { + return d.handleKeyPart(key, v, d.handleTable, makeMapStringInterface) +} + +func (d *decoder) tryTextUnmarshaler(node *unstable.Node, v reflect.Value) (bool, error) { + // Special case for time, because we allow to unmarshal to it from + // different kind of AST nodes. + if v.Type() == timeType { + return false, nil + } + + if v.CanAddr() && v.Addr().Type().Implements(textUnmarshalerType) { + err := v.Addr().Interface().(encoding.TextUnmarshaler).UnmarshalText(node.Data) + if err != nil { + return false, unstable.NewParserError(d.p.Raw(node.Raw), "%w", err) + } + + return true, nil + } + + return false, nil +} + +func (d *decoder) handleValue(value *unstable.Node, v reflect.Value) error { + for v.Kind() == reflect.Ptr { + v = initAndDereferencePointer(v) + } + + if d.unmarshalerInterface { + if v.CanAddr() && v.Addr().CanInterface() { + if outi, ok := v.Addr().Interface().(unstable.Unmarshaler); ok { + return outi.UnmarshalTOML(value) + } + } + } + + ok, err := d.tryTextUnmarshaler(value, v) + if ok || err != nil { + return err + } + + switch value.Kind { + case unstable.String: + return d.unmarshalString(value, v) + case unstable.Integer: + return d.unmarshalInteger(value, v) + case unstable.Float: + return d.unmarshalFloat(value, v) + case unstable.Bool: + return d.unmarshalBool(value, v) + case unstable.DateTime: + return d.unmarshalDateTime(value, v) + case unstable.LocalDate: + return d.unmarshalLocalDate(value, v) + case unstable.LocalTime: + return d.unmarshalLocalTime(value, v) + case unstable.LocalDateTime: + return d.unmarshalLocalDateTime(value, v) + case unstable.InlineTable: + return d.unmarshalInlineTable(value, v) + case unstable.Array: + return d.unmarshalArray(value, v) + default: + panic(fmt.Errorf("handleValue not implemented for %s", value.Kind)) + } +} + +func (d *decoder) unmarshalArray(array *unstable.Node, v reflect.Value) error { + switch v.Kind() { + case reflect.Slice: + if v.IsNil() { + v.Set(reflect.MakeSlice(v.Type(), 0, 16)) + } else { + v.SetLen(0) + } + case reflect.Array: + // arrays are always initialized + case reflect.Interface: + elem := v.Elem() + if !elem.IsValid() { + elem = reflect.New(sliceInterfaceType).Elem() + elem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16)) + } else if elem.Kind() == reflect.Slice { + if elem.Type() != sliceInterfaceType { + elem = reflect.New(sliceInterfaceType).Elem() + elem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16)) + } else if !elem.CanSet() { + nelem := reflect.New(sliceInterfaceType).Elem() + nelem.Set(reflect.MakeSlice(sliceInterfaceType, elem.Len(), elem.Cap())) + reflect.Copy(nelem, elem) + elem = nelem + } + } + err := d.unmarshalArray(array, elem) + if err != nil { + return err + } + v.Set(elem) + return nil + default: + // TODO: use newDecodeError, but first the parser needs to fill + // array.Data. + return d.typeMismatchError("array", v.Type()) + } + + elemType := v.Type().Elem() + + it := array.Children() + idx := 0 + for it.Next() { + n := it.Node() + + // TODO: optimize + if v.Kind() == reflect.Slice { + elem := reflect.New(elemType).Elem() + + err := d.handleValue(n, elem) + if err != nil { + return err + } + + v.Set(reflect.Append(v, elem)) + } else { // array + if idx >= v.Len() { + return nil + } + elem := v.Index(idx) + err := d.handleValue(n, elem) + if err != nil { + return err + } + idx++ + } + } + + return nil +} + +func (d *decoder) unmarshalInlineTable(itable *unstable.Node, v reflect.Value) error { + // Make sure v is an initialized object. + switch v.Kind() { + case reflect.Map: + if v.IsNil() { + v.Set(reflect.MakeMap(v.Type())) + } + case reflect.Struct: + // structs are always initialized. + case reflect.Interface: + elem := v.Elem() + if !elem.IsValid() { + elem = makeMapStringInterface() + v.Set(elem) + } + return d.unmarshalInlineTable(itable, elem) + default: + return unstable.NewParserError(d.p.Raw(itable.Raw), "cannot store inline table in Go type %s", v.Kind()) + } + + it := itable.Children() + for it.Next() { + n := it.Node() + + x, err := d.handleKeyValue(n, v) + if err != nil { + return err + } + if x.IsValid() { + v = x + } + } + + return nil +} + +func (d *decoder) unmarshalDateTime(value *unstable.Node, v reflect.Value) error { + dt, err := parseDateTime(value.Data) + if err != nil { + return err + } + + v.Set(reflect.ValueOf(dt)) + return nil +} + +func (d *decoder) unmarshalLocalDate(value *unstable.Node, v reflect.Value) error { + ld, err := parseLocalDate(value.Data) + if err != nil { + return err + } + + if v.Type() == timeType { + cast := ld.AsTime(time.Local) + v.Set(reflect.ValueOf(cast)) + return nil + } + + v.Set(reflect.ValueOf(ld)) + + return nil +} + +func (d *decoder) unmarshalLocalTime(value *unstable.Node, v reflect.Value) error { + lt, rest, err := parseLocalTime(value.Data) + if err != nil { + return err + } + + if len(rest) > 0 { + return unstable.NewParserError(rest, "extra characters at the end of a local time") + } + + v.Set(reflect.ValueOf(lt)) + return nil +} + +func (d *decoder) unmarshalLocalDateTime(value *unstable.Node, v reflect.Value) error { + ldt, rest, err := parseLocalDateTime(value.Data) + if err != nil { + return err + } + + if len(rest) > 0 { + return unstable.NewParserError(rest, "extra characters at the end of a local date time") + } + + if v.Type() == timeType { + cast := ldt.AsTime(time.Local) + + v.Set(reflect.ValueOf(cast)) + return nil + } + + v.Set(reflect.ValueOf(ldt)) + + return nil +} + +func (d *decoder) unmarshalBool(value *unstable.Node, v reflect.Value) error { + b := value.Data[0] == 't' + + switch v.Kind() { + case reflect.Bool: + v.SetBool(b) + case reflect.Interface: + v.Set(reflect.ValueOf(b)) + default: + return unstable.NewParserError(value.Data, "cannot assign boolean to a %t", b) + } + + return nil +} + +func (d *decoder) unmarshalFloat(value *unstable.Node, v reflect.Value) error { + f, err := parseFloat(value.Data) + if err != nil { + return err + } + + switch v.Kind() { + case reflect.Float64: + v.SetFloat(f) + case reflect.Float32: + if f > math.MaxFloat32 { + return unstable.NewParserError(value.Data, "number %f does not fit in a float32", f) + } + v.SetFloat(f) + case reflect.Interface: + v.Set(reflect.ValueOf(f)) + default: + return unstable.NewParserError(value.Data, "float cannot be assigned to %s", v.Kind()) + } + + return nil +} + +const ( + maxInt = int64(^uint(0) >> 1) + minInt = -maxInt - 1 +) + +// Maximum value of uint for decoding. Currently the decoder parses the integer +// into an int64. As a result, on architectures where uint is 64 bits, the +// effective maximum uint we can decode is the maximum of int64. On +// architectures where uint is 32 bits, the maximum value we can decode is +// lower: the maximum of uint32. I didn't find a way to figure out this value at +// compile time, so it is computed during initialization. +var maxUint int64 = math.MaxInt64 + +func init() { + m := uint64(^uint(0)) + if m < uint64(maxUint) { + maxUint = int64(m) + } +} + +func (d *decoder) unmarshalInteger(value *unstable.Node, v reflect.Value) error { + kind := v.Kind() + if kind == reflect.Float32 || kind == reflect.Float64 { + return d.unmarshalFloat(value, v) + } + + i, err := parseInteger(value.Data) + if err != nil { + return err + } + + var r reflect.Value + + switch kind { + case reflect.Int64: + v.SetInt(i) + return nil + case reflect.Int32: + if i < math.MinInt32 || i > math.MaxInt32 { + return fmt.Errorf("toml: number %d does not fit in an int32", i) + } + + r = reflect.ValueOf(int32(i)) + case reflect.Int16: + if i < math.MinInt16 || i > math.MaxInt16 { + return fmt.Errorf("toml: number %d does not fit in an int16", i) + } + + r = reflect.ValueOf(int16(i)) + case reflect.Int8: + if i < math.MinInt8 || i > math.MaxInt8 { + return fmt.Errorf("toml: number %d does not fit in an int8", i) + } + + r = reflect.ValueOf(int8(i)) + case reflect.Int: + if i < minInt || i > maxInt { + return fmt.Errorf("toml: number %d does not fit in an int", i) + } + + r = reflect.ValueOf(int(i)) + case reflect.Uint64: + if i < 0 { + return fmt.Errorf("toml: negative number %d does not fit in an uint64", i) + } + + r = reflect.ValueOf(uint64(i)) + case reflect.Uint32: + if i < 0 || i > math.MaxUint32 { + return fmt.Errorf("toml: negative number %d does not fit in an uint32", i) + } + + r = reflect.ValueOf(uint32(i)) + case reflect.Uint16: + if i < 0 || i > math.MaxUint16 { + return fmt.Errorf("toml: negative number %d does not fit in an uint16", i) + } + + r = reflect.ValueOf(uint16(i)) + case reflect.Uint8: + if i < 0 || i > math.MaxUint8 { + return fmt.Errorf("toml: negative number %d does not fit in an uint8", i) + } + + r = reflect.ValueOf(uint8(i)) + case reflect.Uint: + if i < 0 || i > maxUint { + return fmt.Errorf("toml: negative number %d does not fit in an uint", i) + } + + r = reflect.ValueOf(uint(i)) + case reflect.Interface: + r = reflect.ValueOf(i) + default: + return unstable.NewParserError(d.p.Raw(value.Raw), d.typeMismatchString("integer", v.Type())) + } + + if !r.Type().AssignableTo(v.Type()) { + r = r.Convert(v.Type()) + } + + v.Set(r) + + return nil +} + +func (d *decoder) unmarshalString(value *unstable.Node, v reflect.Value) error { + switch v.Kind() { + case reflect.String: + v.SetString(string(value.Data)) + case reflect.Interface: + v.Set(reflect.ValueOf(string(value.Data))) + default: + return unstable.NewParserError(d.p.Raw(value.Raw), d.typeMismatchString("string", v.Type())) + } + + return nil +} + +func (d *decoder) handleKeyValue(expr *unstable.Node, v reflect.Value) (reflect.Value, error) { + d.strict.EnterKeyValue(expr) + + v, err := d.handleKeyValueInner(expr.Key(), expr.Value(), v) + if d.skipUntilTable { + d.strict.MissingField(expr) + d.skipUntilTable = false + } + + d.strict.ExitKeyValue(expr) + + return v, err +} + +func (d *decoder) handleKeyValueInner(key unstable.Iterator, value *unstable.Node, v reflect.Value) (reflect.Value, error) { + if key.Next() { + // Still scoping the key + return d.handleKeyValuePart(key, value, v) + } + // Done scoping the key. + // v is whatever Go value we need to fill. + return reflect.Value{}, d.handleValue(value, v) +} + +func (d *decoder) keyFromData(keyType reflect.Type, data []byte) (reflect.Value, error) { + switch { + case stringType.AssignableTo(keyType): + return reflect.ValueOf(string(data)), nil + + case stringType.ConvertibleTo(keyType): + return reflect.ValueOf(string(data)).Convert(keyType), nil + + case keyType.Implements(textUnmarshalerType): + mk := reflect.New(keyType.Elem()) + if err := mk.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { + return reflect.Value{}, fmt.Errorf("toml: error unmarshalling key type %s from text: %w", stringType, err) + } + return mk, nil + + case reflect.PointerTo(keyType).Implements(textUnmarshalerType): + mk := reflect.New(keyType) + if err := mk.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil { + return reflect.Value{}, fmt.Errorf("toml: error unmarshalling key type %s from text: %w", stringType, err) + } + return mk.Elem(), nil + + case keyType.Kind() == reflect.Int || keyType.Kind() == reflect.Int8 || keyType.Kind() == reflect.Int16 || keyType.Kind() == reflect.Int32 || keyType.Kind() == reflect.Int64: + key, err := strconv.ParseInt(string(data), 10, 64) + if err != nil { + return reflect.Value{}, fmt.Errorf("toml: error parsing key of type %s from integer: %w", stringType, err) + } + return reflect.ValueOf(key).Convert(keyType), nil + case keyType.Kind() == reflect.Uint || keyType.Kind() == reflect.Uint8 || keyType.Kind() == reflect.Uint16 || keyType.Kind() == reflect.Uint32 || keyType.Kind() == reflect.Uint64: + key, err := strconv.ParseUint(string(data), 10, 64) + if err != nil { + return reflect.Value{}, fmt.Errorf("toml: error parsing key of type %s from unsigned integer: %w", stringType, err) + } + return reflect.ValueOf(key).Convert(keyType), nil + + case keyType.Kind() == reflect.Float32: + key, err := strconv.ParseFloat(string(data), 32) + if err != nil { + return reflect.Value{}, fmt.Errorf("toml: error parsing key of type %s from float: %w", stringType, err) + } + return reflect.ValueOf(float32(key)), nil + + case keyType.Kind() == reflect.Float64: + key, err := strconv.ParseFloat(string(data), 64) + if err != nil { + return reflect.Value{}, fmt.Errorf("toml: error parsing key of type %s from float: %w", stringType, err) + } + return reflect.ValueOf(float64(key)), nil + } + return reflect.Value{}, fmt.Errorf("toml: cannot convert map key of type %s to expected type %s", stringType, keyType) +} + +func (d *decoder) handleKeyValuePart(key unstable.Iterator, value *unstable.Node, v reflect.Value) (reflect.Value, error) { + // contains the replacement for v + var rv reflect.Value + + // First, dispatch over v to make sure it is a valid object. + // There is no guarantee over what it could be. + switch v.Kind() { + case reflect.Map: + vt := v.Type() + + mk, err := d.keyFromData(vt.Key(), key.Node().Data) + if err != nil { + return reflect.Value{}, err + } + + // If the map does not exist, create it. + if v.IsNil() { + v = reflect.MakeMap(vt) + rv = v + } + + mv := v.MapIndex(mk) + set := false + if !mv.IsValid() || key.IsLast() { + set = true + mv = reflect.New(v.Type().Elem()).Elem() + } + + nv, err := d.handleKeyValueInner(key, value, mv) + if err != nil { + return reflect.Value{}, err + } + if nv.IsValid() { + mv = nv + set = true + } + + if set { + v.SetMapIndex(mk, mv) + } + case reflect.Struct: + path, found := structFieldPath(v, string(key.Node().Data)) + if !found { + d.skipUntilTable = true + break + } + + if d.errorContext == nil { + d.errorContext = new(errorContext) + } + t := v.Type() + d.errorContext.Struct = t + d.errorContext.Field = path + + f := fieldByIndex(v, path) + + if !f.CanAddr() { + // If the field is not addressable, need to take a slower path and + // make a copy of the struct itself to a new location. + nvp := reflect.New(v.Type()) + nvp.Elem().Set(v) + v = nvp.Elem() + _, err := d.handleKeyValuePart(key, value, v) + if err != nil { + return reflect.Value{}, err + } + return nvp.Elem(), nil + } + x, err := d.handleKeyValueInner(key, value, f) + if err != nil { + return reflect.Value{}, err + } + + if x.IsValid() { + f.Set(x) + } + d.errorContext.Struct = nil + d.errorContext.Field = nil + case reflect.Interface: + v = v.Elem() + + // Following encoding/json: decoding an object into an + // interface{}, it needs to always hold a + // map[string]interface{}. This is for the types to be + // consistent whether a previous value was set or not. + if !v.IsValid() || v.Type() != mapStringInterfaceType { + v = makeMapStringInterface() + } + + x, err := d.handleKeyValuePart(key, value, v) + if err != nil { + return reflect.Value{}, err + } + if x.IsValid() { + v = x + } + rv = v + case reflect.Ptr: + elem := v.Elem() + if !elem.IsValid() { + ptr := reflect.New(v.Type().Elem()) + v.Set(ptr) + rv = v + elem = ptr.Elem() + } + + elem2, err := d.handleKeyValuePart(key, value, elem) + if err != nil { + return reflect.Value{}, err + } + if elem2.IsValid() { + elem = elem2 + } + v.Elem().Set(elem) + default: + return reflect.Value{}, fmt.Errorf("unhandled kv part: %s", v.Kind()) + } + + return rv, nil +} + +func initAndDereferencePointer(v reflect.Value) reflect.Value { + var elem reflect.Value + if v.IsNil() { + ptr := reflect.New(v.Type().Elem()) + v.Set(ptr) + } + elem = v.Elem() + return elem +} + +// Same as reflect.Value.FieldByIndex, but creates pointers if needed. +func fieldByIndex(v reflect.Value, path []int) reflect.Value { + for _, x := range path { + v = v.Field(x) + + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(v.Type().Elem())) + } + v = v.Elem() + } + } + return v +} + +type fieldPathsMap = map[string][]int + +var globalFieldPathsCache atomic.Value // map[danger.TypeID]fieldPathsMap + +func structFieldPath(v reflect.Value, name string) ([]int, bool) { + t := v.Type() + + cache, _ := globalFieldPathsCache.Load().(map[danger.TypeID]fieldPathsMap) + fieldPaths, ok := cache[danger.MakeTypeID(t)] + + if !ok { + fieldPaths = map[string][]int{} + + forEachField(t, nil, func(name string, path []int) { + fieldPaths[name] = path + // extra copy for the case-insensitive match + fieldPaths[strings.ToLower(name)] = path + }) + + newCache := make(map[danger.TypeID]fieldPathsMap, len(cache)+1) + newCache[danger.MakeTypeID(t)] = fieldPaths + for k, v := range cache { + newCache[k] = v + } + globalFieldPathsCache.Store(newCache) + } + + path, ok := fieldPaths[name] + if !ok { + path, ok = fieldPaths[strings.ToLower(name)] + } + return path, ok +} + +func forEachField(t reflect.Type, path []int, do func(name string, path []int)) { + n := t.NumField() + for i := 0; i < n; i++ { + f := t.Field(i) + + if !f.Anonymous && f.PkgPath != "" { + // only consider exported fields. + continue + } + + fieldPath := append(path, i) + fieldPath = fieldPath[:len(fieldPath):len(fieldPath)] + + name := f.Tag.Get("toml") + if name == "-" { + continue + } + + if i := strings.IndexByte(name, ','); i >= 0 { + name = name[:i] + } + + if f.Anonymous && name == "" { + t2 := f.Type + if t2.Kind() == reflect.Ptr { + t2 = t2.Elem() + } + + if t2.Kind() == reflect.Struct { + forEachField(t2, fieldPath, do) + } + continue + } + + if name == "" { + name = f.Name + } + + do(name, fieldPath) + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go new file mode 100644 index 0000000..f526bf2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/ast.go @@ -0,0 +1,136 @@ +package unstable + +import ( + "fmt" + "unsafe" + + "github.com/pelletier/go-toml/v2/internal/danger" +) + +// Iterator over a sequence of nodes. +// +// Starts uninitialized, you need to call Next() first. +// +// For example: +// +// it := n.Children() +// for it.Next() { +// n := it.Node() +// // do something with n +// } +type Iterator struct { + started bool + node *Node +} + +// Next moves the iterator forward and returns true if points to a +// node, false otherwise. +func (c *Iterator) Next() bool { + if !c.started { + c.started = true + } else if c.node.Valid() { + c.node = c.node.Next() + } + return c.node.Valid() +} + +// IsLast returns true if the current node of the iterator is the last +// one. Subsequent calls to Next() will return false. +func (c *Iterator) IsLast() bool { + return c.node.next == 0 +} + +// Node returns a pointer to the node pointed at by the iterator. +func (c *Iterator) Node() *Node { + return c.node +} + +// Node in a TOML expression AST. +// +// Depending on Kind, its sequence of children should be interpreted +// differently. +// +// - Array have one child per element in the array. +// - InlineTable have one child per key-value in the table (each of kind +// InlineTable). +// - KeyValue have at least two children. The first one is the value. The rest +// make a potentially dotted key. +// - Table and ArrayTable's children represent a dotted key (same as +// KeyValue, but without the first node being the value). +// +// When relevant, Raw describes the range of bytes this node is referring to in +// the input document. Use Parser.Raw() to retrieve the actual bytes. +type Node struct { + Kind Kind + Raw Range // Raw bytes from the input. + Data []byte // Node value (either allocated or referencing the input). + + // References to other nodes, as offsets in the backing array + // from this node. References can go backward, so those can be + // negative. + next int // 0 if last element + child int // 0 if no child +} + +// Range of bytes in the document. +type Range struct { + Offset uint32 + Length uint32 +} + +// Next returns a pointer to the next node, or nil if there is no next node. +func (n *Node) Next() *Node { + if n.next == 0 { + return nil + } + ptr := unsafe.Pointer(n) + size := unsafe.Sizeof(Node{}) + return (*Node)(danger.Stride(ptr, size, n.next)) +} + +// Child returns a pointer to the first child node of this node. Other children +// can be accessed calling Next on the first child. Returns an nil if this Node +// has no child. +func (n *Node) Child() *Node { + if n.child == 0 { + return nil + } + ptr := unsafe.Pointer(n) + size := unsafe.Sizeof(Node{}) + return (*Node)(danger.Stride(ptr, size, n.child)) +} + +// Valid returns true if the node's kind is set (not to Invalid). +func (n *Node) Valid() bool { + return n != nil +} + +// Key returns the children nodes making the Key on a supported node. Panics +// otherwise. They are guaranteed to be all be of the Kind Key. A simple key +// would return just one element. +func (n *Node) Key() Iterator { + switch n.Kind { + case KeyValue: + value := n.Child() + if !value.Valid() { + panic(fmt.Errorf("KeyValue should have at least two children")) + } + return Iterator{node: value.Next()} + case Table, ArrayTable: + return Iterator{node: n.Child()} + default: + panic(fmt.Errorf("Key() is not supported on a %s", n.Kind)) + } +} + +// Value returns a pointer to the value node of a KeyValue. +// Guaranteed to be non-nil. Panics if not called on a KeyValue node, +// or if the Children are malformed. +func (n *Node) Value() *Node { + return n.Child() +} + +// Children returns an iterator over a node's children. +func (n *Node) Children() Iterator { + return Iterator{node: n.Child()} +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/builder.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/builder.go new file mode 100644 index 0000000..9538e30 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/builder.go @@ -0,0 +1,71 @@ +package unstable + +// root contains a full AST. +// +// It is immutable once constructed with Builder. +type root struct { + nodes []Node +} + +// Iterator over the top level nodes. +func (r *root) Iterator() Iterator { + it := Iterator{} + if len(r.nodes) > 0 { + it.node = &r.nodes[0] + } + return it +} + +func (r *root) at(idx reference) *Node { + return &r.nodes[idx] +} + +type reference int + +const invalidReference reference = -1 + +func (r reference) Valid() bool { + return r != invalidReference +} + +type builder struct { + tree root + lastIdx int +} + +func (b *builder) Tree() *root { + return &b.tree +} + +func (b *builder) NodeAt(ref reference) *Node { + return b.tree.at(ref) +} + +func (b *builder) Reset() { + b.tree.nodes = b.tree.nodes[:0] + b.lastIdx = 0 +} + +func (b *builder) Push(n Node) reference { + b.lastIdx = len(b.tree.nodes) + b.tree.nodes = append(b.tree.nodes, n) + return reference(b.lastIdx) +} + +func (b *builder) PushAndChain(n Node) reference { + newIdx := len(b.tree.nodes) + b.tree.nodes = append(b.tree.nodes, n) + if b.lastIdx >= 0 { + b.tree.nodes[b.lastIdx].next = newIdx - b.lastIdx + } + b.lastIdx = newIdx + return reference(b.lastIdx) +} + +func (b *builder) AttachChild(parent reference, child reference) { + b.tree.nodes[parent].child = int(child) - int(parent) +} + +func (b *builder) Chain(from reference, to reference) { + b.tree.nodes[from].next = int(to) - int(from) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/doc.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/doc.go new file mode 100644 index 0000000..7ff26c5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/doc.go @@ -0,0 +1,3 @@ +// Package unstable provides APIs that do not meet the backward compatibility +// guarantees yet. +package unstable diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/kind.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/kind.go new file mode 100644 index 0000000..ff9df1b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/kind.go @@ -0,0 +1,71 @@ +package unstable + +import "fmt" + +// Kind represents the type of TOML structure contained in a given Node. +type Kind int + +const ( + // Meta + Invalid Kind = iota + Comment + Key + + // Top level structures + Table + ArrayTable + KeyValue + + // Containers values + Array + InlineTable + + // Values + String + Bool + Float + Integer + LocalDate + LocalTime + LocalDateTime + DateTime +) + +// String implementation of fmt.Stringer. +func (k Kind) String() string { + switch k { + case Invalid: + return "Invalid" + case Comment: + return "Comment" + case Key: + return "Key" + case Table: + return "Table" + case ArrayTable: + return "ArrayTable" + case KeyValue: + return "KeyValue" + case Array: + return "Array" + case InlineTable: + return "InlineTable" + case String: + return "String" + case Bool: + return "Bool" + case Float: + return "Float" + case Integer: + return "Integer" + case LocalDate: + return "LocalDate" + case LocalTime: + return "LocalTime" + case LocalDateTime: + return "LocalDateTime" + case DateTime: + return "DateTime" + } + panic(fmt.Errorf("Kind.String() not implemented for '%d'", k)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go new file mode 100644 index 0000000..50358a4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/parser.go @@ -0,0 +1,1245 @@ +package unstable + +import ( + "bytes" + "fmt" + "unicode" + + "github.com/pelletier/go-toml/v2/internal/characters" + "github.com/pelletier/go-toml/v2/internal/danger" +) + +// ParserError describes an error relative to the content of the document. +// +// It cannot outlive the instance of Parser it refers to, and may cause panics +// if the parser is reset. +type ParserError struct { + Highlight []byte + Message string + Key []string // optional +} + +// Error is the implementation of the error interface. +func (e *ParserError) Error() string { + return e.Message +} + +// NewParserError is a convenience function to create a ParserError +// +// Warning: Highlight needs to be a subslice of Parser.data, so only slices +// returned by Parser.Raw are valid candidates. +func NewParserError(highlight []byte, format string, args ...interface{}) error { + return &ParserError{ + Highlight: highlight, + Message: fmt.Errorf(format, args...).Error(), + } +} + +// Parser scans over a TOML-encoded document and generates an iterative AST. +// +// To prime the Parser, first reset it with the contents of a TOML document. +// Then, process all top-level expressions sequentially. See Example. +// +// Don't forget to check Error() after you're done parsing. +// +// Each top-level expression needs to be fully processed before calling +// NextExpression() again. Otherwise, calls to various Node methods may panic if +// the parser has moved on the next expression. +// +// For performance reasons, go-toml doesn't make a copy of the input bytes to +// the parser. Make sure to copy all the bytes you need to outlive the slice +// given to the parser. +type Parser struct { + data []byte + builder builder + ref reference + left []byte + err error + first bool + + KeepComments bool +} + +// Data returns the slice provided to the last call to Reset. +func (p *Parser) Data() []byte { + return p.data +} + +// Range returns a range description that corresponds to a given slice of the +// input. If the argument is not a subslice of the parser input, this function +// panics. +func (p *Parser) Range(b []byte) Range { + return Range{ + Offset: uint32(danger.SubsliceOffset(p.data, b)), + Length: uint32(len(b)), + } +} + +// Raw returns the slice corresponding to the bytes in the given range. +func (p *Parser) Raw(raw Range) []byte { + return p.data[raw.Offset : raw.Offset+raw.Length] +} + +// Reset brings the parser to its initial state for a given input. It wipes an +// reuses internal storage to reduce allocation. +func (p *Parser) Reset(b []byte) { + p.builder.Reset() + p.ref = invalidReference + p.data = b + p.left = b + p.err = nil + p.first = true +} + +// NextExpression parses the next top-level expression. If an expression was +// successfully parsed, it returns true. If the parser is at the end of the +// document or an error occurred, it returns false. +// +// Retrieve the parsed expression with Expression(). +func (p *Parser) NextExpression() bool { + if len(p.left) == 0 || p.err != nil { + return false + } + + p.builder.Reset() + p.ref = invalidReference + + for { + if len(p.left) == 0 || p.err != nil { + return false + } + + if !p.first { + p.left, p.err = p.parseNewline(p.left) + } + + if len(p.left) == 0 || p.err != nil { + return false + } + + p.ref, p.left, p.err = p.parseExpression(p.left) + + if p.err != nil { + return false + } + + p.first = false + + if p.ref.Valid() { + return true + } + } +} + +// Expression returns a pointer to the node representing the last successfully +// parsed expression. +func (p *Parser) Expression() *Node { + return p.builder.NodeAt(p.ref) +} + +// Error returns any error that has occurred during parsing. +func (p *Parser) Error() error { + return p.err +} + +// Position describes a position in the input. +type Position struct { + // Number of bytes from the beginning of the input. + Offset int + // Line number, starting at 1. + Line int + // Column number, starting at 1. + Column int +} + +// Shape describes the position of a range in the input. +type Shape struct { + Start Position + End Position +} + +func (p *Parser) position(b []byte) Position { + offset := danger.SubsliceOffset(p.data, b) + + lead := p.data[:offset] + + return Position{ + Offset: offset, + Line: bytes.Count(lead, []byte{'\n'}) + 1, + Column: len(lead) - bytes.LastIndex(lead, []byte{'\n'}), + } +} + +// Shape returns the shape of the given range in the input. Will +// panic if the range is not a subslice of the input. +func (p *Parser) Shape(r Range) Shape { + raw := p.Raw(r) + return Shape{ + Start: p.position(raw), + End: p.position(raw[r.Length:]), + } +} + +func (p *Parser) parseNewline(b []byte) ([]byte, error) { + if b[0] == '\n' { + return b[1:], nil + } + + if b[0] == '\r' { + _, rest, err := scanWindowsNewline(b) + return rest, err + } + + return nil, NewParserError(b[0:1], "expected newline but got %#U", b[0]) +} + +func (p *Parser) parseComment(b []byte) (reference, []byte, error) { + ref := invalidReference + data, rest, err := scanComment(b) + if p.KeepComments && err == nil { + ref = p.builder.Push(Node{ + Kind: Comment, + Raw: p.Range(data), + Data: data, + }) + } + return ref, rest, err +} + +func (p *Parser) parseExpression(b []byte) (reference, []byte, error) { + // expression = ws [ comment ] + // expression =/ ws keyval ws [ comment ] + // expression =/ ws table ws [ comment ] + ref := invalidReference + + b = p.parseWhitespace(b) + + if len(b) == 0 { + return ref, b, nil + } + + if b[0] == '#' { + ref, rest, err := p.parseComment(b) + return ref, rest, err + } + + if b[0] == '\n' || b[0] == '\r' { + return ref, b, nil + } + + var err error + if b[0] == '[' { + ref, b, err = p.parseTable(b) + } else { + ref, b, err = p.parseKeyval(b) + } + + if err != nil { + return ref, nil, err + } + + b = p.parseWhitespace(b) + + if len(b) > 0 && b[0] == '#' { + cref, rest, err := p.parseComment(b) + if cref != invalidReference { + p.builder.Chain(ref, cref) + } + return ref, rest, err + } + + return ref, b, nil +} + +func (p *Parser) parseTable(b []byte) (reference, []byte, error) { + // table = std-table / array-table + if len(b) > 1 && b[1] == '[' { + return p.parseArrayTable(b) + } + + return p.parseStdTable(b) +} + +func (p *Parser) parseArrayTable(b []byte) (reference, []byte, error) { + // array-table = array-table-open key array-table-close + // array-table-open = %x5B.5B ws ; [[ Double left square bracket + // array-table-close = ws %x5D.5D ; ]] Double right square bracket + ref := p.builder.Push(Node{ + Kind: ArrayTable, + }) + + b = b[2:] + b = p.parseWhitespace(b) + + k, b, err := p.parseKey(b) + if err != nil { + return ref, nil, err + } + + p.builder.AttachChild(ref, k) + b = p.parseWhitespace(b) + + b, err = expect(']', b) + if err != nil { + return ref, nil, err + } + + b, err = expect(']', b) + + return ref, b, err +} + +func (p *Parser) parseStdTable(b []byte) (reference, []byte, error) { + // std-table = std-table-open key std-table-close + // std-table-open = %x5B ws ; [ Left square bracket + // std-table-close = ws %x5D ; ] Right square bracket + ref := p.builder.Push(Node{ + Kind: Table, + }) + + b = b[1:] + b = p.parseWhitespace(b) + + key, b, err := p.parseKey(b) + if err != nil { + return ref, nil, err + } + + p.builder.AttachChild(ref, key) + + b = p.parseWhitespace(b) + + b, err = expect(']', b) + + return ref, b, err +} + +func (p *Parser) parseKeyval(b []byte) (reference, []byte, error) { + // keyval = key keyval-sep val + ref := p.builder.Push(Node{ + Kind: KeyValue, + }) + + key, b, err := p.parseKey(b) + if err != nil { + return invalidReference, nil, err + } + + // keyval-sep = ws %x3D ws ; = + + b = p.parseWhitespace(b) + + if len(b) == 0 { + return invalidReference, nil, NewParserError(b, "expected = after a key, but the document ends there") + } + + b, err = expect('=', b) + if err != nil { + return invalidReference, nil, err + } + + b = p.parseWhitespace(b) + + valRef, b, err := p.parseVal(b) + if err != nil { + return ref, b, err + } + + p.builder.Chain(valRef, key) + p.builder.AttachChild(ref, valRef) + + return ref, b, err +} + +//nolint:cyclop,funlen +func (p *Parser) parseVal(b []byte) (reference, []byte, error) { + // val = string / boolean / array / inline-table / date-time / float / integer + ref := invalidReference + + if len(b) == 0 { + return ref, nil, NewParserError(b, "expected value, not eof") + } + + var err error + c := b[0] + + switch c { + case '"': + var raw []byte + var v []byte + if scanFollowsMultilineBasicStringDelimiter(b) { + raw, v, b, err = p.parseMultilineBasicString(b) + } else { + raw, v, b, err = p.parseBasicString(b) + } + + if err == nil { + ref = p.builder.Push(Node{ + Kind: String, + Raw: p.Range(raw), + Data: v, + }) + } + + return ref, b, err + case '\'': + var raw []byte + var v []byte + if scanFollowsMultilineLiteralStringDelimiter(b) { + raw, v, b, err = p.parseMultilineLiteralString(b) + } else { + raw, v, b, err = p.parseLiteralString(b) + } + + if err == nil { + ref = p.builder.Push(Node{ + Kind: String, + Raw: p.Range(raw), + Data: v, + }) + } + + return ref, b, err + case 't': + if !scanFollowsTrue(b) { + return ref, nil, NewParserError(atmost(b, 4), "expected 'true'") + } + + ref = p.builder.Push(Node{ + Kind: Bool, + Data: b[:4], + }) + + return ref, b[4:], nil + case 'f': + if !scanFollowsFalse(b) { + return ref, nil, NewParserError(atmost(b, 5), "expected 'false'") + } + + ref = p.builder.Push(Node{ + Kind: Bool, + Data: b[:5], + }) + + return ref, b[5:], nil + case '[': + return p.parseValArray(b) + case '{': + return p.parseInlineTable(b) + default: + return p.parseIntOrFloatOrDateTime(b) + } +} + +func atmost(b []byte, n int) []byte { + if n >= len(b) { + return b + } + + return b[:n] +} + +func (p *Parser) parseLiteralString(b []byte) ([]byte, []byte, []byte, error) { + v, rest, err := scanLiteralString(b) + if err != nil { + return nil, nil, nil, err + } + + return v, v[1 : len(v)-1], rest, nil +} + +func (p *Parser) parseInlineTable(b []byte) (reference, []byte, error) { + // inline-table = inline-table-open [ inline-table-keyvals ] inline-table-close + // inline-table-open = %x7B ws ; { + // inline-table-close = ws %x7D ; } + // inline-table-sep = ws %x2C ws ; , Comma + // inline-table-keyvals = keyval [ inline-table-sep inline-table-keyvals ] + parent := p.builder.Push(Node{ + Kind: InlineTable, + Raw: p.Range(b[:1]), + }) + + first := true + + var child reference + + b = b[1:] + + var err error + + for len(b) > 0 { + previousB := b + b = p.parseWhitespace(b) + + if len(b) == 0 { + return parent, nil, NewParserError(previousB[:1], "inline table is incomplete") + } + + if b[0] == '}' { + break + } + + if !first { + b, err = expect(',', b) + if err != nil { + return parent, nil, err + } + b = p.parseWhitespace(b) + } + + var kv reference + + kv, b, err = p.parseKeyval(b) + if err != nil { + return parent, nil, err + } + + if first { + p.builder.AttachChild(parent, kv) + } else { + p.builder.Chain(child, kv) + } + child = kv + + first = false + } + + rest, err := expect('}', b) + + return parent, rest, err +} + +//nolint:funlen,cyclop +func (p *Parser) parseValArray(b []byte) (reference, []byte, error) { + // array = array-open [ array-values ] ws-comment-newline array-close + // array-open = %x5B ; [ + // array-close = %x5D ; ] + // array-values = ws-comment-newline val ws-comment-newline array-sep array-values + // array-values =/ ws-comment-newline val ws-comment-newline [ array-sep ] + // array-sep = %x2C ; , Comma + // ws-comment-newline = *( wschar / [ comment ] newline ) + arrayStart := b + b = b[1:] + + parent := p.builder.Push(Node{ + Kind: Array, + }) + + // First indicates whether the parser is looking for the first element + // (non-comment) of the array. + first := true + + lastChild := invalidReference + + addChild := func(valueRef reference) { + if lastChild == invalidReference { + p.builder.AttachChild(parent, valueRef) + } else { + p.builder.Chain(lastChild, valueRef) + } + lastChild = valueRef + } + + var err error + for len(b) > 0 { + cref := invalidReference + cref, b, err = p.parseOptionalWhitespaceCommentNewline(b) + if err != nil { + return parent, nil, err + } + + if cref != invalidReference { + addChild(cref) + } + + if len(b) == 0 { + return parent, nil, NewParserError(arrayStart[:1], "array is incomplete") + } + + if b[0] == ']' { + break + } + + if b[0] == ',' { + if first { + return parent, nil, NewParserError(b[0:1], "array cannot start with comma") + } + b = b[1:] + + cref, b, err = p.parseOptionalWhitespaceCommentNewline(b) + if err != nil { + return parent, nil, err + } + if cref != invalidReference { + addChild(cref) + } + } else if !first { + return parent, nil, NewParserError(b[0:1], "array elements must be separated by commas") + } + + // TOML allows trailing commas in arrays. + if len(b) > 0 && b[0] == ']' { + break + } + + var valueRef reference + valueRef, b, err = p.parseVal(b) + if err != nil { + return parent, nil, err + } + + addChild(valueRef) + + cref, b, err = p.parseOptionalWhitespaceCommentNewline(b) + if err != nil { + return parent, nil, err + } + if cref != invalidReference { + addChild(cref) + } + + first = false + } + + rest, err := expect(']', b) + + return parent, rest, err +} + +func (p *Parser) parseOptionalWhitespaceCommentNewline(b []byte) (reference, []byte, error) { + rootCommentRef := invalidReference + latestCommentRef := invalidReference + + addComment := func(ref reference) { + if rootCommentRef == invalidReference { + rootCommentRef = ref + } else if latestCommentRef == invalidReference { + p.builder.AttachChild(rootCommentRef, ref) + latestCommentRef = ref + } else { + p.builder.Chain(latestCommentRef, ref) + latestCommentRef = ref + } + } + + for len(b) > 0 { + var err error + b = p.parseWhitespace(b) + + if len(b) > 0 && b[0] == '#' { + var ref reference + ref, b, err = p.parseComment(b) + if err != nil { + return invalidReference, nil, err + } + if ref != invalidReference { + addComment(ref) + } + } + + if len(b) == 0 { + break + } + + if b[0] == '\n' || b[0] == '\r' { + b, err = p.parseNewline(b) + if err != nil { + return invalidReference, nil, err + } + } else { + break + } + } + + return rootCommentRef, b, nil +} + +func (p *Parser) parseMultilineLiteralString(b []byte) ([]byte, []byte, []byte, error) { + token, rest, err := scanMultilineLiteralString(b) + if err != nil { + return nil, nil, nil, err + } + + i := 3 + + // skip the immediate new line + if token[i] == '\n' { + i++ + } else if token[i] == '\r' && token[i+1] == '\n' { + i += 2 + } + + return token, token[i : len(token)-3], rest, err +} + +//nolint:funlen,gocognit,cyclop +func (p *Parser) parseMultilineBasicString(b []byte) ([]byte, []byte, []byte, error) { + // ml-basic-string = ml-basic-string-delim [ newline ] ml-basic-body + // ml-basic-string-delim + // ml-basic-string-delim = 3quotation-mark + // ml-basic-body = *mlb-content *( mlb-quotes 1*mlb-content ) [ mlb-quotes ] + // + // mlb-content = mlb-char / newline / mlb-escaped-nl + // mlb-char = mlb-unescaped / escaped + // mlb-quotes = 1*2quotation-mark + // mlb-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii + // mlb-escaped-nl = escape ws newline *( wschar / newline ) + token, escaped, rest, err := scanMultilineBasicString(b) + if err != nil { + return nil, nil, nil, err + } + + i := 3 + + // skip the immediate new line + if token[i] == '\n' { + i++ + } else if token[i] == '\r' && token[i+1] == '\n' { + i += 2 + } + + // fast path + startIdx := i + endIdx := len(token) - len(`"""`) + + if !escaped { + str := token[startIdx:endIdx] + verr := characters.Utf8TomlValidAlreadyEscaped(str) + if verr.Zero() { + return token, str, rest, nil + } + return nil, nil, nil, NewParserError(str[verr.Index:verr.Index+verr.Size], "invalid UTF-8") + } + + var builder bytes.Buffer + + // The scanner ensures that the token starts and ends with quotes and that + // escapes are balanced. + for i < len(token)-3 { + c := token[i] + + //nolint:nestif + if c == '\\' { + // When the last non-whitespace character on a line is an unescaped \, + // it will be trimmed along with all whitespace (including newlines) up + // to the next non-whitespace character or closing delimiter. + + isLastNonWhitespaceOnLine := false + j := 1 + findEOLLoop: + for ; j < len(token)-3-i; j++ { + switch token[i+j] { + case ' ', '\t': + continue + case '\r': + if token[i+j+1] == '\n' { + continue + } + case '\n': + isLastNonWhitespaceOnLine = true + } + break findEOLLoop + } + if isLastNonWhitespaceOnLine { + i += j + for ; i < len(token)-3; i++ { + c := token[i] + if !(c == '\n' || c == '\r' || c == ' ' || c == '\t') { + i-- + break + } + } + i++ + continue + } + + // handle escaping + i++ + c = token[i] + + switch c { + case '"', '\\': + builder.WriteByte(c) + case 'b': + builder.WriteByte('\b') + case 'f': + builder.WriteByte('\f') + case 'n': + builder.WriteByte('\n') + case 'r': + builder.WriteByte('\r') + case 't': + builder.WriteByte('\t') + case 'e': + builder.WriteByte(0x1B) + case 'u': + x, err := hexToRune(atmost(token[i+1:], 4), 4) + if err != nil { + return nil, nil, nil, err + } + builder.WriteRune(x) + i += 4 + case 'U': + x, err := hexToRune(atmost(token[i+1:], 8), 8) + if err != nil { + return nil, nil, nil, err + } + + builder.WriteRune(x) + i += 8 + default: + return nil, nil, nil, NewParserError(token[i:i+1], "invalid escaped character %#U", c) + } + i++ + } else { + size := characters.Utf8ValidNext(token[i:]) + if size == 0 { + return nil, nil, nil, NewParserError(token[i:i+1], "invalid character %#U", c) + } + builder.Write(token[i : i+size]) + i += size + } + } + + return token, builder.Bytes(), rest, nil +} + +func (p *Parser) parseKey(b []byte) (reference, []byte, error) { + // key = simple-key / dotted-key + // simple-key = quoted-key / unquoted-key + // + // unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _ + // quoted-key = basic-string / literal-string + // dotted-key = simple-key 1*( dot-sep simple-key ) + // + // dot-sep = ws %x2E ws ; . Period + raw, key, b, err := p.parseSimpleKey(b) + if err != nil { + return invalidReference, nil, err + } + + ref := p.builder.Push(Node{ + Kind: Key, + Raw: p.Range(raw), + Data: key, + }) + + for { + b = p.parseWhitespace(b) + if len(b) > 0 && b[0] == '.' { + b = p.parseWhitespace(b[1:]) + + raw, key, b, err = p.parseSimpleKey(b) + if err != nil { + return ref, nil, err + } + + p.builder.PushAndChain(Node{ + Kind: Key, + Raw: p.Range(raw), + Data: key, + }) + } else { + break + } + } + + return ref, b, nil +} + +func (p *Parser) parseSimpleKey(b []byte) (raw, key, rest []byte, err error) { + if len(b) == 0 { + return nil, nil, nil, NewParserError(b, "expected key but found none") + } + + // simple-key = quoted-key / unquoted-key + // unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _ + // quoted-key = basic-string / literal-string + switch { + case b[0] == '\'': + return p.parseLiteralString(b) + case b[0] == '"': + return p.parseBasicString(b) + case isUnquotedKeyChar(b[0]): + key, rest = scanUnquotedKey(b) + return key, key, rest, nil + default: + return nil, nil, nil, NewParserError(b[0:1], "invalid character at start of key: %c", b[0]) + } +} + +//nolint:funlen,cyclop +func (p *Parser) parseBasicString(b []byte) ([]byte, []byte, []byte, error) { + // basic-string = quotation-mark *basic-char quotation-mark + // quotation-mark = %x22 ; " + // basic-char = basic-unescaped / escaped + // basic-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii + // escaped = escape escape-seq-char + // escape-seq-char = %x22 ; " quotation mark U+0022 + // escape-seq-char =/ %x5C ; \ reverse solidus U+005C + // escape-seq-char =/ %x62 ; b backspace U+0008 + // escape-seq-char =/ %x66 ; f form feed U+000C + // escape-seq-char =/ %x6E ; n line feed U+000A + // escape-seq-char =/ %x72 ; r carriage return U+000D + // escape-seq-char =/ %x74 ; t tab U+0009 + // escape-seq-char =/ %x75 4HEXDIG ; uXXXX U+XXXX + // escape-seq-char =/ %x55 8HEXDIG ; UXXXXXXXX U+XXXXXXXX + token, escaped, rest, err := scanBasicString(b) + if err != nil { + return nil, nil, nil, err + } + + startIdx := len(`"`) + endIdx := len(token) - len(`"`) + + // Fast path. If there is no escape sequence, the string should just be + // an UTF-8 encoded string, which is the same as Go. In that case, + // validate the string and return a direct reference to the buffer. + if !escaped { + str := token[startIdx:endIdx] + verr := characters.Utf8TomlValidAlreadyEscaped(str) + if verr.Zero() { + return token, str, rest, nil + } + return nil, nil, nil, NewParserError(str[verr.Index:verr.Index+verr.Size], "invalid UTF-8") + } + + i := startIdx + + var builder bytes.Buffer + + // The scanner ensures that the token starts and ends with quotes and that + // escapes are balanced. + for i < len(token)-1 { + c := token[i] + if c == '\\' { + i++ + c = token[i] + + switch c { + case '"', '\\': + builder.WriteByte(c) + case 'b': + builder.WriteByte('\b') + case 'f': + builder.WriteByte('\f') + case 'n': + builder.WriteByte('\n') + case 'r': + builder.WriteByte('\r') + case 't': + builder.WriteByte('\t') + case 'e': + builder.WriteByte(0x1B) + case 'u': + x, err := hexToRune(token[i+1:len(token)-1], 4) + if err != nil { + return nil, nil, nil, err + } + + builder.WriteRune(x) + i += 4 + case 'U': + x, err := hexToRune(token[i+1:len(token)-1], 8) + if err != nil { + return nil, nil, nil, err + } + + builder.WriteRune(x) + i += 8 + default: + return nil, nil, nil, NewParserError(token[i:i+1], "invalid escaped character %#U", c) + } + i++ + } else { + size := characters.Utf8ValidNext(token[i:]) + if size == 0 { + return nil, nil, nil, NewParserError(token[i:i+1], "invalid character %#U", c) + } + builder.Write(token[i : i+size]) + i += size + } + } + + return token, builder.Bytes(), rest, nil +} + +func hexToRune(b []byte, length int) (rune, error) { + if len(b) < length { + return -1, NewParserError(b, "unicode point needs %d character, not %d", length, len(b)) + } + b = b[:length] + + var r uint32 + for i, c := range b { + d := uint32(0) + switch { + case '0' <= c && c <= '9': + d = uint32(c - '0') + case 'a' <= c && c <= 'f': + d = uint32(c - 'a' + 10) + case 'A' <= c && c <= 'F': + d = uint32(c - 'A' + 10) + default: + return -1, NewParserError(b[i:i+1], "non-hex character") + } + r = r*16 + d + } + + if r > unicode.MaxRune || 0xD800 <= r && r < 0xE000 { + return -1, NewParserError(b, "escape sequence is invalid Unicode code point") + } + + return rune(r), nil +} + +func (p *Parser) parseWhitespace(b []byte) []byte { + // ws = *wschar + // wschar = %x20 ; Space + // wschar =/ %x09 ; Horizontal tab + _, rest := scanWhitespace(b) + + return rest +} + +//nolint:cyclop +func (p *Parser) parseIntOrFloatOrDateTime(b []byte) (reference, []byte, error) { + switch b[0] { + case 'i': + if !scanFollowsInf(b) { + return invalidReference, nil, NewParserError(atmost(b, 3), "expected 'inf'") + } + + return p.builder.Push(Node{ + Kind: Float, + Data: b[:3], + Raw: p.Range(b[:3]), + }), b[3:], nil + case 'n': + if !scanFollowsNan(b) { + return invalidReference, nil, NewParserError(atmost(b, 3), "expected 'nan'") + } + + return p.builder.Push(Node{ + Kind: Float, + Data: b[:3], + Raw: p.Range(b[:3]), + }), b[3:], nil + case '+', '-': + return p.scanIntOrFloat(b) + } + + if len(b) < 3 { + return p.scanIntOrFloat(b) + } + + s := 5 + if len(b) < s { + s = len(b) + } + + for idx, c := range b[:s] { + if isDigit(c) { + continue + } + + if idx == 2 && c == ':' || (idx == 4 && c == '-') { + return p.scanDateTime(b) + } + + break + } + + return p.scanIntOrFloat(b) +} + +func (p *Parser) scanDateTime(b []byte) (reference, []byte, error) { + // scans for contiguous characters in [0-9T:Z.+-], and up to one space if + // followed by a digit. + hasDate := false + hasTime := false + hasTz := false + seenSpace := false + + i := 0 +byteLoop: + for ; i < len(b); i++ { + c := b[i] + + switch { + case isDigit(c): + case c == '-': + hasDate = true + const minOffsetOfTz = 8 + if i >= minOffsetOfTz { + hasTz = true + } + case c == 'T' || c == 't' || c == ':' || c == '.': + hasTime = true + case c == '+' || c == '-' || c == 'Z' || c == 'z': + hasTz = true + case c == ' ': + if !seenSpace && i+1 < len(b) && isDigit(b[i+1]) { + i += 2 + // Avoid reaching past the end of the document in case the time + // is malformed. See TestIssue585. + if i >= len(b) { + i-- + } + seenSpace = true + hasTime = true + } else { + break byteLoop + } + default: + break byteLoop + } + } + + var kind Kind + + if hasTime { + if hasDate { + if hasTz { + kind = DateTime + } else { + kind = LocalDateTime + } + } else { + kind = LocalTime + } + } else { + kind = LocalDate + } + + return p.builder.Push(Node{ + Kind: kind, + Data: b[:i], + }), b[i:], nil +} + +//nolint:funlen,gocognit,cyclop +func (p *Parser) scanIntOrFloat(b []byte) (reference, []byte, error) { + i := 0 + + if len(b) > 2 && b[0] == '0' && b[1] != '.' && b[1] != 'e' && b[1] != 'E' { + var isValidRune validRuneFn + + switch b[1] { + case 'x': + isValidRune = isValidHexRune + case 'o': + isValidRune = isValidOctalRune + case 'b': + isValidRune = isValidBinaryRune + default: + i++ + } + + if isValidRune != nil { + i += 2 + for ; i < len(b); i++ { + if !isValidRune(b[i]) { + break + } + } + } + + return p.builder.Push(Node{ + Kind: Integer, + Data: b[:i], + Raw: p.Range(b[:i]), + }), b[i:], nil + } + + isFloat := false + + for ; i < len(b); i++ { + c := b[i] + + if c >= '0' && c <= '9' || c == '+' || c == '-' || c == '_' { + continue + } + + if c == '.' || c == 'e' || c == 'E' { + isFloat = true + + continue + } + + if c == 'i' { + if scanFollowsInf(b[i:]) { + return p.builder.Push(Node{ + Kind: Float, + Data: b[:i+3], + Raw: p.Range(b[:i+3]), + }), b[i+3:], nil + } + + return invalidReference, nil, NewParserError(b[i:i+1], "unexpected character 'i' while scanning for a number") + } + + if c == 'n' { + if scanFollowsNan(b[i:]) { + return p.builder.Push(Node{ + Kind: Float, + Data: b[:i+3], + Raw: p.Range(b[:i+3]), + }), b[i+3:], nil + } + + return invalidReference, nil, NewParserError(b[i:i+1], "unexpected character 'n' while scanning for a number") + } + + break + } + + if i == 0 { + return invalidReference, b, NewParserError(b, "incomplete number") + } + + kind := Integer + + if isFloat { + kind = Float + } + + return p.builder.Push(Node{ + Kind: kind, + Data: b[:i], + Raw: p.Range(b[:i]), + }), b[i:], nil +} + +func isDigit(r byte) bool { + return r >= '0' && r <= '9' +} + +type validRuneFn func(r byte) bool + +func isValidHexRune(r byte) bool { + return r >= 'a' && r <= 'f' || + r >= 'A' && r <= 'F' || + r >= '0' && r <= '9' || + r == '_' +} + +func isValidOctalRune(r byte) bool { + return r >= '0' && r <= '7' || r == '_' +} + +func isValidBinaryRune(r byte) bool { + return r == '0' || r == '1' || r == '_' +} + +func expect(x byte, b []byte) ([]byte, error) { + if len(b) == 0 { + return nil, NewParserError(b, "expected character %c but the document ended here", x) + } + + if b[0] != x { + return nil, NewParserError(b[0:1], "expected character %c", x) + } + + return b[1:], nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/scanner.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/scanner.go new file mode 100644 index 0000000..0512181 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/scanner.go @@ -0,0 +1,270 @@ +package unstable + +import "github.com/pelletier/go-toml/v2/internal/characters" + +func scanFollows(b []byte, pattern string) bool { + n := len(pattern) + + return len(b) >= n && string(b[:n]) == pattern +} + +func scanFollowsMultilineBasicStringDelimiter(b []byte) bool { + return scanFollows(b, `"""`) +} + +func scanFollowsMultilineLiteralStringDelimiter(b []byte) bool { + return scanFollows(b, `'''`) +} + +func scanFollowsTrue(b []byte) bool { + return scanFollows(b, `true`) +} + +func scanFollowsFalse(b []byte) bool { + return scanFollows(b, `false`) +} + +func scanFollowsInf(b []byte) bool { + return scanFollows(b, `inf`) +} + +func scanFollowsNan(b []byte) bool { + return scanFollows(b, `nan`) +} + +func scanUnquotedKey(b []byte) ([]byte, []byte) { + // unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _ + for i := 0; i < len(b); i++ { + if !isUnquotedKeyChar(b[i]) { + return b[:i], b[i:] + } + } + + return b, b[len(b):] +} + +func isUnquotedKeyChar(r byte) bool { + return (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '-' || r == '_' +} + +func scanLiteralString(b []byte) ([]byte, []byte, error) { + // literal-string = apostrophe *literal-char apostrophe + // apostrophe = %x27 ; ' apostrophe + // literal-char = %x09 / %x20-26 / %x28-7E / non-ascii + for i := 1; i < len(b); { + switch b[i] { + case '\'': + return b[:i+1], b[i+1:], nil + case '\n', '\r': + return nil, nil, NewParserError(b[i:i+1], "literal strings cannot have new lines") + } + size := characters.Utf8ValidNext(b[i:]) + if size == 0 { + return nil, nil, NewParserError(b[i:i+1], "invalid character") + } + i += size + } + + return nil, nil, NewParserError(b[len(b):], "unterminated literal string") +} + +func scanMultilineLiteralString(b []byte) ([]byte, []byte, error) { + // ml-literal-string = ml-literal-string-delim [ newline ] ml-literal-body + // ml-literal-string-delim + // ml-literal-string-delim = 3apostrophe + // ml-literal-body = *mll-content *( mll-quotes 1*mll-content ) [ mll-quotes ] + // + // mll-content = mll-char / newline + // mll-char = %x09 / %x20-26 / %x28-7E / non-ascii + // mll-quotes = 1*2apostrophe + for i := 3; i < len(b); { + switch b[i] { + case '\'': + if scanFollowsMultilineLiteralStringDelimiter(b[i:]) { + i += 3 + + // At that point we found 3 apostrophe, and i is the + // index of the byte after the third one. The scanner + // needs to be eager, because there can be an extra 2 + // apostrophe that can be accepted at the end of the + // string. + + if i >= len(b) || b[i] != '\'' { + return b[:i], b[i:], nil + } + i++ + + if i >= len(b) || b[i] != '\'' { + return b[:i], b[i:], nil + } + i++ + + if i < len(b) && b[i] == '\'' { + return nil, nil, NewParserError(b[i-3:i+1], "''' not allowed in multiline literal string") + } + + return b[:i], b[i:], nil + } + case '\r': + if len(b) < i+2 { + return nil, nil, NewParserError(b[len(b):], `need a \n after \r`) + } + if b[i+1] != '\n' { + return nil, nil, NewParserError(b[i:i+2], `need a \n after \r`) + } + i += 2 // skip the \n + continue + } + size := characters.Utf8ValidNext(b[i:]) + if size == 0 { + return nil, nil, NewParserError(b[i:i+1], "invalid character") + } + i += size + } + + return nil, nil, NewParserError(b[len(b):], `multiline literal string not terminated by '''`) +} + +func scanWindowsNewline(b []byte) ([]byte, []byte, error) { + const lenCRLF = 2 + if len(b) < lenCRLF { + return nil, nil, NewParserError(b, "windows new line expected") + } + + if b[1] != '\n' { + return nil, nil, NewParserError(b, `windows new line should be \r\n`) + } + + return b[:lenCRLF], b[lenCRLF:], nil +} + +func scanWhitespace(b []byte) ([]byte, []byte) { + for i := 0; i < len(b); i++ { + switch b[i] { + case ' ', '\t': + continue + default: + return b[:i], b[i:] + } + } + + return b, b[len(b):] +} + +func scanComment(b []byte) ([]byte, []byte, error) { + // comment-start-symbol = %x23 ; # + // non-ascii = %x80-D7FF / %xE000-10FFFF + // non-eol = %x09 / %x20-7F / non-ascii + // + // comment = comment-start-symbol *non-eol + + for i := 1; i < len(b); { + if b[i] == '\n' { + return b[:i], b[i:], nil + } + if b[i] == '\r' { + if i+1 < len(b) && b[i+1] == '\n' { + return b[:i+1], b[i+1:], nil + } + return nil, nil, NewParserError(b[i:i+1], "invalid character in comment") + } + size := characters.Utf8ValidNext(b[i:]) + if size == 0 { + return nil, nil, NewParserError(b[i:i+1], "invalid character in comment") + } + + i += size + } + + return b, b[len(b):], nil +} + +func scanBasicString(b []byte) ([]byte, bool, []byte, error) { + // basic-string = quotation-mark *basic-char quotation-mark + // quotation-mark = %x22 ; " + // basic-char = basic-unescaped / escaped + // basic-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii + // escaped = escape escape-seq-char + escaped := false + i := 1 + + for ; i < len(b); i++ { + switch b[i] { + case '"': + return b[:i+1], escaped, b[i+1:], nil + case '\n', '\r': + return nil, escaped, nil, NewParserError(b[i:i+1], "basic strings cannot have new lines") + case '\\': + if len(b) < i+2 { + return nil, escaped, nil, NewParserError(b[i:i+1], "need a character after \\") + } + escaped = true + i++ // skip the next character + } + } + + return nil, escaped, nil, NewParserError(b[len(b):], `basic string not terminated by "`) +} + +func scanMultilineBasicString(b []byte) ([]byte, bool, []byte, error) { + // ml-basic-string = ml-basic-string-delim [ newline ] ml-basic-body + // ml-basic-string-delim + // ml-basic-string-delim = 3quotation-mark + // ml-basic-body = *mlb-content *( mlb-quotes 1*mlb-content ) [ mlb-quotes ] + // + // mlb-content = mlb-char / newline / mlb-escaped-nl + // mlb-char = mlb-unescaped / escaped + // mlb-quotes = 1*2quotation-mark + // mlb-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii + // mlb-escaped-nl = escape ws newline *( wschar / newline ) + + escaped := false + i := 3 + + for ; i < len(b); i++ { + switch b[i] { + case '"': + if scanFollowsMultilineBasicStringDelimiter(b[i:]) { + i += 3 + + // At that point we found 3 apostrophe, and i is the + // index of the byte after the third one. The scanner + // needs to be eager, because there can be an extra 2 + // apostrophe that can be accepted at the end of the + // string. + + if i >= len(b) || b[i] != '"' { + return b[:i], escaped, b[i:], nil + } + i++ + + if i >= len(b) || b[i] != '"' { + return b[:i], escaped, b[i:], nil + } + i++ + + if i < len(b) && b[i] == '"' { + return nil, escaped, nil, NewParserError(b[i-3:i+1], `""" not allowed in multiline basic string`) + } + + return b[:i], escaped, b[i:], nil + } + case '\\': + if len(b) < i+2 { + return nil, escaped, nil, NewParserError(b[len(b):], "need a character after \\") + } + escaped = true + i++ // skip the next character + case '\r': + if len(b) < i+2 { + return nil, escaped, nil, NewParserError(b[len(b):], `need a \n after \r`) + } + if b[i+1] != '\n' { + return nil, escaped, nil, NewParserError(b[i:i+2], `need a \n after \r`) + } + i++ // skip the \n + } + } + + return nil, escaped, nil, NewParserError(b[len(b):], `multiline basic string not terminated by """`) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/unmarshaler.go b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/unmarshaler.go new file mode 100644 index 0000000..00cfd6d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pelletier/go-toml/v2/unstable/unmarshaler.go @@ -0,0 +1,7 @@ +package unstable + +// The Unmarshaler interface may be implemented by types to customize their +// behavior when being unmarshaled from a TOML document. +type Unmarshaler interface { + UnmarshalTOML(value *Node) error +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/.gitignore b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/.gitignore new file mode 100644 index 0000000..caf2dca --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/.gitignore @@ -0,0 +1,10 @@ +.*.swo +.*.swp + +server_standalone/server_standalone + +examples/*/id_rsa +examples/*/id_rsa.pub + +memprofile.out +memprofile.svg diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/CONTRIBUTORS b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/CONTRIBUTORS new file mode 100644 index 0000000..5c7196a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/CONTRIBUTORS @@ -0,0 +1,3 @@ +Dave Cheney +Saulius Gurklys +John Eikenberry diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/LICENSE b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/LICENSE new file mode 100644 index 0000000..b7b5392 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/LICENSE @@ -0,0 +1,9 @@ +Copyright (c) 2013, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/Makefile b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/Makefile new file mode 100644 index 0000000..4d3a007 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/Makefile @@ -0,0 +1,27 @@ +.PHONY: integration integration_w_race benchmark + +integration: + go test -integration -v ./... + go test -testserver -v ./... + go test -integration -testserver -v ./... + go test -integration -allocator -v ./... + go test -testserver -allocator -v ./... + go test -integration -testserver -allocator -v ./... + +integration_w_race: + go test -race -integration -v ./... + go test -race -testserver -v ./... + go test -race -integration -testserver -v ./... + go test -race -integration -allocator -v ./... + go test -race -testserver -allocator -v ./... + go test -race -integration -allocator -testserver -v ./... + +COUNT ?= 1 +BENCHMARK_PATTERN ?= "." + +benchmark: + go test -integration -run=NONE -bench=$(BENCHMARK_PATTERN) -benchmem -count=$(COUNT) + +benchmark_w_memprofile: + go test -integration -run=NONE -bench=$(BENCHMARK_PATTERN) -benchmem -count=$(COUNT) -memprofile memprofile.out + go tool pprof -svg -output=memprofile.svg memprofile.out diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/README.md b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/README.md new file mode 100644 index 0000000..5e78cd3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/README.md @@ -0,0 +1,44 @@ +sftp +---- + +The `sftp` package provides support for file system operations on remote ssh +servers using the SFTP subsystem. It also implements an SFTP server for serving +files from the filesystem. + +![CI Status](https://github.com/pkg/sftp/workflows/CI/badge.svg?branch=master&event=push) [![Go Reference](https://pkg.go.dev/badge/github.com/pkg/sftp.svg)](https://pkg.go.dev/github.com/pkg/sftp) + +usage and examples +------------------ + +See [https://pkg.go.dev/github.com/pkg/sftp](https://pkg.go.dev/github.com/pkg/sftp) for +examples and usage. + +The basic operation of the package mirrors the facilities of the +[os](http://golang.org/pkg/os) package. + +The Walker interface for directory traversal is heavily inspired by Keith +Rarick's [fs](https://pkg.go.dev/github.com/kr/fs) package. + +roadmap +------- + +* There is way too much duplication in the Client methods. If there was an + unmarshal(interface{}) method this would reduce a heap of the duplication. + +contributing +------------ + +We welcome pull requests, bug fixes and issue reports. + +Before proposing a large change, first please discuss your change by raising an +issue. + +For API/code bugs, please include a small, self contained code example to +reproduce the issue. For pull requests, remember test coverage. + +We try to handle issues and pull requests with a 0 open philosophy. That means +we will try to address the submission as soon as possible and will work toward +a resolution. If progress can no longer be made (eg. unreproducible bug) or +stops (eg. unresponsive submitter), we will close the bug. + +Thanks. diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/SECURITY.md b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/SECURITY.md new file mode 100644 index 0000000..9ebc263 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/SECURITY.md @@ -0,0 +1,13 @@ +# Security Policy + +## Supported Versions + +Security updates are provided for the latest released version of this package. +We also welcome vulnerability reports for the development version to help us ensure it is secure before the next release. + +## Reporting a Vulnerability + +If you believe you’ve found a security vulnerability in this project, we strongly encourage you to report it privately using GitHub’s [security advisory system](https://github.com/pkg/sftp/security/advisories/new). +This will allow us to review and address the issue before public disclosure. + +Thank you for helping us keep the project secure. diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/allocator.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/allocator.go new file mode 100644 index 0000000..3e67e54 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/allocator.go @@ -0,0 +1,96 @@ +package sftp + +import ( + "sync" +) + +type allocator struct { + sync.Mutex + available [][]byte + // map key is the request order + used map[uint32][][]byte +} + +func newAllocator() *allocator { + return &allocator{ + // micro optimization: initialize available pages with an initial capacity + available: make([][]byte, 0, SftpServerWorkerCount*2), + used: make(map[uint32][][]byte), + } +} + +// GetPage returns a previously allocated and unused []byte or create a new one. +// The slice have a fixed size = maxMsgLength, this value is suitable for both +// receiving new packets and reading the files to serve +func (a *allocator) GetPage(requestOrderID uint32) []byte { + a.Lock() + defer a.Unlock() + + var result []byte + + // get an available page and remove it from the available ones. + if len(a.available) > 0 { + truncLength := len(a.available) - 1 + result = a.available[truncLength] + + a.available[truncLength] = nil // clear out the internal pointer + a.available = a.available[:truncLength] // truncate the slice + } + + // no preallocated slice found, just allocate a new one + if result == nil { + result = make([]byte, maxMsgLength) + } + + // put result in used pages + a.used[requestOrderID] = append(a.used[requestOrderID], result) + + return result +} + +// ReleasePages marks unused all pages in use for the given requestID +func (a *allocator) ReleasePages(requestOrderID uint32) { + a.Lock() + defer a.Unlock() + + if used := a.used[requestOrderID]; len(used) > 0 { + a.available = append(a.available, used...) + } + delete(a.used, requestOrderID) +} + +// Free removes all the used and available pages. +// Call this method when the allocator is not needed anymore +func (a *allocator) Free() { + a.Lock() + defer a.Unlock() + + a.available = nil + a.used = make(map[uint32][][]byte) +} + +func (a *allocator) countUsedPages() int { + a.Lock() + defer a.Unlock() + + num := 0 + for _, p := range a.used { + num += len(p) + } + return num +} + +func (a *allocator) countAvailablePages() int { + a.Lock() + defer a.Unlock() + + return len(a.available) +} + +func (a *allocator) isRequestOrderIDUsed(requestOrderID uint32) bool { + a.Lock() + defer a.Unlock() + + _, ok := a.used[requestOrderID] + return ok +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs.go new file mode 100644 index 0000000..74ac03b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs.go @@ -0,0 +1,136 @@ +package sftp + +// ssh_FXP_ATTRS support +// see https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-5 + +import ( + "os" + "time" +) + +const ( + sshFileXferAttrSize = 0x00000001 + sshFileXferAttrUIDGID = 0x00000002 + sshFileXferAttrPermissions = 0x00000004 + sshFileXferAttrACmodTime = 0x00000008 + sshFileXferAttrExtended = 0x80000000 + + sshFileXferAttrAll = sshFileXferAttrSize | sshFileXferAttrUIDGID | sshFileXferAttrPermissions | + sshFileXferAttrACmodTime | sshFileXferAttrExtended +) + +// fileInfo is an artificial type designed to satisfy os.FileInfo. +type fileInfo struct { + name string + stat *FileStat +} + +// Name returns the base name of the file. +func (fi *fileInfo) Name() string { return fi.name } + +// Size returns the length in bytes for regular files; system-dependent for others. +func (fi *fileInfo) Size() int64 { return int64(fi.stat.Size) } + +// Mode returns file mode bits. +func (fi *fileInfo) Mode() os.FileMode { return fi.stat.FileMode() } + +// ModTime returns the last modification time of the file. +func (fi *fileInfo) ModTime() time.Time { return fi.stat.ModTime() } + +// IsDir returns true if the file is a directory. +func (fi *fileInfo) IsDir() bool { return fi.Mode().IsDir() } + +func (fi *fileInfo) Sys() interface{} { return fi.stat } + +// FileStat holds the original unmarshalled values from a call to READDIR or +// *STAT. It is exported for the purposes of accessing the raw values via +// os.FileInfo.Sys(). It is also used server side to store the unmarshalled +// values for SetStat. +type FileStat struct { + Size uint64 + Mode uint32 + Mtime uint32 + Atime uint32 + UID uint32 + GID uint32 + Extended []StatExtended +} + +// ModTime returns the Mtime SFTP file attribute converted to a time.Time +func (fs *FileStat) ModTime() time.Time { + return time.Unix(int64(fs.Mtime), 0) +} + +// AccessTime returns the Atime SFTP file attribute converted to a time.Time +func (fs *FileStat) AccessTime() time.Time { + return time.Unix(int64(fs.Atime), 0) +} + +// FileMode returns the Mode SFTP file attribute converted to an os.FileMode +func (fs *FileStat) FileMode() os.FileMode { + return toFileMode(fs.Mode) +} + +// StatExtended contains additional, extended information for a FileStat. +type StatExtended struct { + ExtType string + ExtData string +} + +func fileInfoFromStat(stat *FileStat, name string) os.FileInfo { + return &fileInfo{ + name: name, + stat: stat, + } +} + +// FileInfoUidGid extends os.FileInfo and adds callbacks for Uid and Gid retrieval, +// as an alternative to *syscall.Stat_t objects on unix systems. +type FileInfoUidGid interface { + os.FileInfo + Uid() uint32 + Gid() uint32 +} + +// FileInfoUidGid extends os.FileInfo and adds a callbacks for extended data retrieval. +type FileInfoExtendedData interface { + os.FileInfo + Extended() []StatExtended +} + +func fileStatFromInfo(fi os.FileInfo) (uint32, *FileStat) { + mtime := fi.ModTime().Unix() + atime := mtime + var flags uint32 = sshFileXferAttrSize | + sshFileXferAttrPermissions | + sshFileXferAttrACmodTime + + fileStat := &FileStat{ + Size: uint64(fi.Size()), + Mode: fromFileMode(fi.Mode()), + Mtime: uint32(mtime), + Atime: uint32(atime), + } + + // os specific file stat decoding + fileStatFromInfoOs(fi, &flags, fileStat) + + // The call above will include the sshFileXferAttrUIDGID in case + // the os.FileInfo can be casted to *syscall.Stat_t on unix. + // If fi implements FileInfoUidGid, retrieve Uid, Gid from it instead. + if fiExt, ok := fi.(FileInfoUidGid); ok { + flags |= sshFileXferAttrUIDGID + fileStat.UID = fiExt.Uid() + fileStat.GID = fiExt.Gid() + } + + // if fi implements FileInfoExtendedData, retrieve extended data from it + if fiExt, ok := fi.(FileInfoExtendedData); ok { + fileStat.Extended = fiExt.Extended() + if len(fileStat.Extended) > 0 { + flags |= sshFileXferAttrExtended + } + } + + return flags, fileStat +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_stubs.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_stubs.go new file mode 100644 index 0000000..d20348c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_stubs.go @@ -0,0 +1,12 @@ +//go:build plan9 || windows || android +// +build plan9 windows android + +package sftp + +import ( + "os" +) + +func fileStatFromInfoOs(fi os.FileInfo, flags *uint32, fileStat *FileStat) { + // todo +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_unix.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_unix.go new file mode 100644 index 0000000..96ffc03 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/attrs_unix.go @@ -0,0 +1,17 @@ +//go:build darwin || dragonfly || freebsd || (!android && linux) || netbsd || openbsd || solaris || aix || js || zos +// +build darwin dragonfly freebsd !android,linux netbsd openbsd solaris aix js zos + +package sftp + +import ( + "os" + "syscall" +) + +func fileStatFromInfoOs(fi os.FileInfo, flags *uint32, fileStat *FileStat) { + if statt, ok := fi.Sys().(*syscall.Stat_t); ok { + *flags |= sshFileXferAttrUIDGID + fileStat.UID = statt.Uid + fileStat.GID = statt.Gid + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/client.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/client.go new file mode 100644 index 0000000..307a35e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/client.go @@ -0,0 +1,2298 @@ +package sftp + +import ( + "bytes" + "context" + "encoding/binary" + "errors" + "fmt" + "io" + "math" + "os" + "path" + "sync" + "sync/atomic" + "syscall" + "time" + + "github.com/kr/fs" + "golang.org/x/crypto/ssh" + + "github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh" +) + +var ( + // ErrInternalInconsistency indicates the packets sent and the data queued to be + // written to the file don't match up. It is an unusual error and usually is + // caused by bad behavior server side or connection issues. The error is + // limited in scope to the call where it happened, the client object is still + // OK to use as long as the connection is still open. + ErrInternalInconsistency = errors.New("internal inconsistency") + // InternalInconsistency alias for ErrInternalInconsistency. + // + // Deprecated: please use ErrInternalInconsistency + InternalInconsistency = ErrInternalInconsistency +) + +// A ClientOption is a function which applies configuration to a Client. +type ClientOption func(*Client) error + +// MaxPacketChecked sets the maximum size of the payload, measured in bytes. +// This option only accepts sizes servers should support, ie. <= 32768 bytes. +// +// If you get the error "failed to send packet header: EOF" when copying a +// large file, try lowering this number. +// +// The default packet size is 32768 bytes. +func MaxPacketChecked(size int) ClientOption { + return func(c *Client) error { + if size < 1 { + return errors.New("size must be greater or equal to 1") + } + if size > 32768 { + return errors.New("sizes larger than 32KB might not work with all servers") + } + c.maxPacket = size + return nil + } +} + +// MaxPacketUnchecked sets the maximum size of the payload, measured in bytes. +// It accepts sizes larger than the 32768 bytes all servers should support. +// Only use a setting higher than 32768 if your application always connects to +// the same server or after sufficiently broad testing. +// +// If you get the error "failed to send packet header: EOF" when copying a +// large file, try lowering this number. +// +// The default packet size is 32768 bytes. +func MaxPacketUnchecked(size int) ClientOption { + return func(c *Client) error { + if size < 1 { + return errors.New("size must be greater or equal to 1") + } + c.maxPacket = size + return nil + } +} + +// MaxPacket sets the maximum size of the payload, measured in bytes. +// This option only accepts sizes servers should support, ie. <= 32768 bytes. +// This is a synonym for MaxPacketChecked that provides backward compatibility. +// +// If you get the error "failed to send packet header: EOF" when copying a +// large file, try lowering this number. +// +// The default packet size is 32768 bytes. +func MaxPacket(size int) ClientOption { + return MaxPacketChecked(size) +} + +// MaxConcurrentRequestsPerFile sets the maximum concurrent requests allowed for a single file. +// +// The default maximum concurrent requests is 64. +func MaxConcurrentRequestsPerFile(n int) ClientOption { + return func(c *Client) error { + if n < 1 { + return errors.New("n must be greater or equal to 1") + } + c.maxConcurrentRequests = n + return nil + } +} + +// UseConcurrentWrites allows the Client to perform concurrent Writes. +// +// Using concurrency while doing writes, requires special consideration. +// A write to a later offset in a file after an error, +// could end up with a file length longer than what was successfully written. +// +// When using this option, if you receive an error during `io.Copy` or `io.WriteTo`, +// you may need to `Truncate` the target Writer to avoid “holes” in the data written. +func UseConcurrentWrites(value bool) ClientOption { + return func(c *Client) error { + c.useConcurrentWrites = value + return nil + } +} + +// UseConcurrentReads allows the Client to perform concurrent Reads. +// +// Concurrent reads are generally safe to use and not using them will degrade +// performance, so this option is enabled by default. +// +// When enabled, WriteTo will use Stat/Fstat to get the file size and determines +// how many concurrent workers to use. +// Some "read once" servers will delete the file if they receive a stat call on an +// open file and then the download will fail. +// Disabling concurrent reads you will be able to download files from these servers. +// If concurrent reads are disabled, the UseFstat option is ignored. +func UseConcurrentReads(value bool) ClientOption { + return func(c *Client) error { + c.disableConcurrentReads = !value + return nil + } +} + +// UseFstat sets whether to use Fstat or Stat when File.WriteTo is called +// (usually when copying files). +// Some servers limit the amount of open files and calling Stat after opening +// the file will throw an error From the server. Setting this flag will call +// Fstat instead of Stat which is suppose to be called on an open file handle. +// +// It has been found that that with IBM Sterling SFTP servers which have +// "extractability" level set to 1 which means only 1 file can be opened at +// any given time. +// +// If the server you are working with still has an issue with both Stat and +// Fstat calls you can always open a file and read it until the end. +// +// Another reason to read the file until its end and Fstat doesn't work is +// that in some servers, reading a full file will automatically delete the +// file as some of these mainframes map the file to a message in a queue. +// Once the file has been read it will get deleted. +func UseFstat(value bool) ClientOption { + return func(c *Client) error { + c.useFstat = value + return nil + } +} + +// CopyStderrTo specifies a writer to which the standard error of the remote sftp-server command should be written. +// +// The writer passed in will not be automatically closed. +// It is the responsibility of the caller to coordinate closure of any writers. +func CopyStderrTo(wr io.Writer) ClientOption { + return func(c *Client) error { + c.stderrTo = wr + return nil + } +} + +// Client represents an SFTP session on a *ssh.ClientConn SSH connection. +// Multiple Clients can be active on a single SSH connection, and a Client +// may be called concurrently from multiple Goroutines. +// +// Client implements the github.com/kr/fs.FileSystem interface. +type Client struct { + clientConn + + stderrTo io.Writer + + ext map[string]string // Extensions (name -> data). + + maxPacket int // max packet size read or written. + maxConcurrentRequests int + nextid uint32 + + // write concurrency is… error prone. + // Default behavior should be to not use it. + useConcurrentWrites bool + useFstat bool + disableConcurrentReads bool +} + +// NewClient creates a new SFTP client on conn, using zero or more option +// functions. +func NewClient(conn *ssh.Client, opts ...ClientOption) (*Client, error) { + s, err := conn.NewSession() + if err != nil { + return nil, err + } + + pw, err := s.StdinPipe() + if err != nil { + return nil, err + } + pr, err := s.StdoutPipe() + if err != nil { + return nil, err + } + perr, err := s.StderrPipe() + if err != nil { + return nil, err + } + + if err := s.RequestSubsystem("sftp"); err != nil { + return nil, err + } + + return newClientPipe(pr, perr, pw, s.Wait, opts...) +} + +// NewClientPipe creates a new SFTP client given a Reader and a WriteCloser. +// This can be used for connecting to an SFTP server over TCP/TLS or by using +// the system's ssh client program (e.g. via exec.Command). +func NewClientPipe(rd io.Reader, wr io.WriteCloser, opts ...ClientOption) (*Client, error) { + return newClientPipe(rd, nil, wr, nil, opts...) +} + +func newClientPipe(rd, stderr io.Reader, wr io.WriteCloser, wait func() error, opts ...ClientOption) (*Client, error) { + c := &Client{ + clientConn: clientConn{ + conn: conn{ + Reader: rd, + WriteCloser: wr, + }, + inflight: make(map[uint32]chan<- result), + closed: make(chan struct{}), + wait: wait, + }, + + ext: make(map[string]string), + + maxPacket: 1 << 15, + maxConcurrentRequests: 64, + } + + for _, opt := range opts { + if err := opt(c); err != nil { + wr.Close() + return nil, err + } + } + + if stderr != nil { + wr := io.Discard + if c.stderrTo != nil { + wr = c.stderrTo + } + + go func() { + // DO NOT close the writer! + // Programs may pass in `os.Stderr` to write the remote stderr to, + // and the program may continue after disconnect by reconnecting. + // But if we've closed their stderr, then we just messed everything up. + + if _, err := io.Copy(wr, stderr); err != nil { + debug("error copying stderr: %v", err) + } + }() + } + + if err := c.sendInit(); err != nil { + wr.Close() + return nil, fmt.Errorf("error sending init packet to server: %w", err) + } + + if err := c.recvVersion(); err != nil { + wr.Close() + return nil, fmt.Errorf("error receiving version packet from server: %w", err) + } + + c.clientConn.wg.Add(1) + go func() { + defer c.clientConn.wg.Done() + + if err := c.clientConn.recv(); err != nil { + c.clientConn.broadcastErr(err) + } + }() + + return c, nil +} + +// Create creates the named file mode 0666 (before umask), truncating it if it +// already exists. If successful, methods on the returned File can be used for +// I/O; the associated file descriptor has mode O_RDWR. If you need more +// control over the flags/mode used to open the file see client.OpenFile. +// +// Note that some SFTP servers (eg. AWS Transfer) do not support opening files +// read/write at the same time. For those services you will need to use +// `client.OpenFile(os.O_WRONLY|os.O_CREATE|os.O_TRUNC)`. +func (c *Client) Create(path string) (*File, error) { + return c.open(path, toPflags(os.O_RDWR|os.O_CREATE|os.O_TRUNC)) +} + +const sftpProtocolVersion = 3 // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt + +func (c *Client) sendInit() error { + return c.clientConn.conn.sendPacket(&sshFxInitPacket{ + Version: sftpProtocolVersion, // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt + }) +} + +// returns the next value of c.nextid +func (c *Client) nextID() uint32 { + return atomic.AddUint32(&c.nextid, 1) +} + +func (c *Client) recvVersion() error { + typ, data, err := c.recvPacket(0) + if err != nil { + if err == io.EOF { + return fmt.Errorf("server unexpectedly closed connection: %w", io.ErrUnexpectedEOF) + } + + return err + } + + if typ != sshFxpVersion { + return &unexpectedPacketErr{sshFxpVersion, typ} + } + + version, data, err := unmarshalUint32Safe(data) + if err != nil { + return err + } + + if version != sftpProtocolVersion { + return &unexpectedVersionErr{sftpProtocolVersion, version} + } + + for len(data) > 0 { + var ext extensionPair + ext, data, err = unmarshalExtensionPair(data) + if err != nil { + return err + } + c.ext[ext.Name] = ext.Data + } + + return nil +} + +// HasExtension checks whether the server supports a named extension. +// +// The first return value is the extension data reported by the server +// (typically a version number). +func (c *Client) HasExtension(name string) (string, bool) { + data, ok := c.ext[name] + return data, ok +} + +// Walk returns a new Walker rooted at root. +func (c *Client) Walk(root string) *fs.Walker { + return fs.WalkFS(root, c) +} + +// ReadDir reads the directory named by p +// and returns a list of directory entries. +func (c *Client) ReadDir(p string) ([]os.FileInfo, error) { + return c.ReadDirContext(context.Background(), p) +} + +// ReadDirContext reads the directory named by p +// and returns a list of directory entries. +// The passed context can be used to cancel the operation +// returning all entries listed up to the cancellation. +func (c *Client) ReadDirContext(ctx context.Context, p string) ([]os.FileInfo, error) { + handle, err := c.opendir(ctx, p) + if err != nil { + return nil, err + } + defer c.close(handle) // this has to defer earlier than the lock below + var entries []os.FileInfo + var done = false + for !done { + id := c.nextID() + typ, data, err1 := c.sendPacket(ctx, nil, &sshFxpReaddirPacket{ + ID: id, + Handle: handle, + }) + if err1 != nil { + err = err1 + done = true + break + } + switch typ { + case sshFxpName: + sid, data := unmarshalUint32(data) + if sid != id { + return nil, &unexpectedIDErr{id, sid} + } + count, data := unmarshalUint32(data) + for i := uint32(0); i < count; i++ { + var filename string + filename, data = unmarshalString(data) + _, data = unmarshalString(data) // discard longname + var attr *FileStat + attr, data, err = unmarshalAttrs(data) + if err != nil { + return nil, err + } + if filename == "." || filename == ".." { + continue + } + entries = append(entries, fileInfoFromStat(attr, path.Base(filename))) + } + case sshFxpStatus: + // TODO(dfc) scope warning! + err = normaliseError(unmarshalStatus(id, data)) + done = true + default: + return nil, unimplementedPacketErr(typ) + } + } + if err == io.EOF { + err = nil + } + return entries, err +} + +func (c *Client) opendir(ctx context.Context, path string) (string, error) { + id := c.nextID() + typ, data, err := c.sendPacket(ctx, nil, &sshFxpOpendirPacket{ + ID: id, + Path: path, + }) + if err != nil { + return "", err + } + switch typ { + case sshFxpHandle: + sid, data := unmarshalUint32(data) + if sid != id { + return "", &unexpectedIDErr{id, sid} + } + handle, _ := unmarshalString(data) + return handle, nil + case sshFxpStatus: + return "", normaliseError(unmarshalStatus(id, data)) + default: + return "", unimplementedPacketErr(typ) + } +} + +// Stat returns a FileInfo structure describing the file specified by path 'p'. +// If 'p' is a symbolic link, the returned FileInfo structure describes the referent file. +func (c *Client) Stat(p string) (os.FileInfo, error) { + fs, err := c.stat(p) + if err != nil { + return nil, err + } + return fileInfoFromStat(fs, path.Base(p)), nil +} + +// Lstat returns a FileInfo structure describing the file specified by path 'p'. +// If 'p' is a symbolic link, the returned FileInfo structure describes the symbolic link. +func (c *Client) Lstat(p string) (os.FileInfo, error) { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpLstatPacket{ + ID: id, + Path: p, + }) + if err != nil { + return nil, err + } + switch typ { + case sshFxpAttrs: + sid, data := unmarshalUint32(data) + if sid != id { + return nil, &unexpectedIDErr{id, sid} + } + attr, _, err := unmarshalAttrs(data) + if err != nil { + // avoid returning a valid value from fileInfoFromStats if err != nil. + return nil, err + } + return fileInfoFromStat(attr, path.Base(p)), nil + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) + default: + return nil, unimplementedPacketErr(typ) + } +} + +// ReadLink reads the target of a symbolic link. +func (c *Client) ReadLink(p string) (string, error) { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpReadlinkPacket{ + ID: id, + Path: p, + }) + if err != nil { + return "", err + } + switch typ { + case sshFxpName: + sid, data := unmarshalUint32(data) + if sid != id { + return "", &unexpectedIDErr{id, sid} + } + count, data := unmarshalUint32(data) + if count != 1 { + return "", unexpectedCount(1, count) + } + filename, _ := unmarshalString(data) // ignore dummy attributes + return filename, nil + case sshFxpStatus: + return "", normaliseError(unmarshalStatus(id, data)) + default: + return "", unimplementedPacketErr(typ) + } +} + +// Link creates a hard link at 'newname', pointing at the same inode as 'oldname' +func (c *Client) Link(oldname, newname string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpHardlinkPacket{ + ID: id, + Oldpath: oldname, + Newpath: newname, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +// Symlink creates a symbolic link at 'newname', pointing at target 'oldname' +func (c *Client) Symlink(oldname, newname string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpSymlinkPacket{ + ID: id, + Linkpath: newname, + Targetpath: oldname, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +func (c *Client) fsetstat(handle string, flags uint32, attrs interface{}) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpFsetstatPacket{ + ID: id, + Handle: handle, + Flags: flags, + Attrs: attrs, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +// setstat is a convience wrapper to allow for changing of various parts of the file descriptor. +func (c *Client) setstat(path string, flags uint32, attrs interface{}) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpSetstatPacket{ + ID: id, + Path: path, + Flags: flags, + Attrs: attrs, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +// Chtimes changes the access and modification times of the named file. +func (c *Client) Chtimes(path string, atime time.Time, mtime time.Time) error { + type times struct { + Atime uint32 + Mtime uint32 + } + attrs := times{uint32(atime.Unix()), uint32(mtime.Unix())} + return c.setstat(path, sshFileXferAttrACmodTime, attrs) +} + +// Chown changes the user and group owners of the named file. +func (c *Client) Chown(path string, uid, gid int) error { + type owner struct { + UID uint32 + GID uint32 + } + attrs := owner{uint32(uid), uint32(gid)} + return c.setstat(path, sshFileXferAttrUIDGID, attrs) +} + +// Chmod changes the permissions of the named file. +// +// Chmod does not apply a umask, because even retrieving the umask is not +// possible in a portable way without causing a race condition. Callers +// should mask off umask bits, if desired. +func (c *Client) Chmod(path string, mode os.FileMode) error { + return c.setstat(path, sshFileXferAttrPermissions, toChmodPerm(mode)) +} + +// Truncate sets the size of the named file. Although it may be safely assumed +// that if the size is less than its current size it will be truncated to fit, +// the SFTP protocol does not specify what behavior the server should do when setting +// size greater than the current size. +func (c *Client) Truncate(path string, size int64) error { + return c.setstat(path, sshFileXferAttrSize, uint64(size)) +} + +// SetExtendedData sets extended attributes of the named file. It uses the +// SSH_FILEXFER_ATTR_EXTENDED flag in the setstat request. +// +// This flag provides a general extension mechanism for vendor-specific extensions. +// Names of the attributes should be a string of the format "name@domain", where "domain" +// is a valid, registered domain name and "name" identifies the method. Server +// implementations SHOULD ignore extended data fields that they do not understand. +func (c *Client) SetExtendedData(path string, extended []StatExtended) error { + attrs := &FileStat{ + Extended: extended, + } + return c.setstat(path, sshFileXferAttrExtended, attrs) +} + +// Open opens the named file for reading. If successful, methods on the +// returned file can be used for reading; the associated file descriptor +// has mode O_RDONLY. +func (c *Client) Open(path string) (*File, error) { + return c.open(path, toPflags(os.O_RDONLY)) +} + +// OpenFile is the generalized open call; most users will use Open or +// Create instead. It opens the named file with specified flag (O_RDONLY +// etc.). If successful, methods on the returned File can be used for I/O. +func (c *Client) OpenFile(path string, f int) (*File, error) { + return c.open(path, toPflags(f)) +} + +func (c *Client) open(path string, pflags uint32) (*File, error) { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpOpenPacket{ + ID: id, + Path: path, + Pflags: pflags, + }) + if err != nil { + return nil, err + } + switch typ { + case sshFxpHandle: + sid, data := unmarshalUint32(data) + if sid != id { + return nil, &unexpectedIDErr{id, sid} + } + handle, _ := unmarshalString(data) + return &File{c: c, path: path, handle: handle}, nil + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) + default: + return nil, unimplementedPacketErr(typ) + } +} + +// close closes a handle handle previously returned in the response +// to SSH_FXP_OPEN or SSH_FXP_OPENDIR. The handle becomes invalid +// immediately after this request has been sent. +func (c *Client) close(handle string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpClosePacket{ + ID: id, + Handle: handle, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +func (c *Client) stat(path string) (*FileStat, error) { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpStatPacket{ + ID: id, + Path: path, + }) + if err != nil { + return nil, err + } + switch typ { + case sshFxpAttrs: + sid, data := unmarshalUint32(data) + if sid != id { + return nil, &unexpectedIDErr{id, sid} + } + attr, _, err := unmarshalAttrs(data) + return attr, err + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) + default: + return nil, unimplementedPacketErr(typ) + } +} + +func (c *Client) fstat(handle string) (*FileStat, error) { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpFstatPacket{ + ID: id, + Handle: handle, + }) + if err != nil { + return nil, err + } + switch typ { + case sshFxpAttrs: + sid, data := unmarshalUint32(data) + if sid != id { + return nil, &unexpectedIDErr{id, sid} + } + attr, _, err := unmarshalAttrs(data) + return attr, err + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) + default: + return nil, unimplementedPacketErr(typ) + } +} + +// StatVFS retrieves VFS statistics from a remote host. +// +// It implements the statvfs@openssh.com SSH_FXP_EXTENDED feature +// from http://www.opensource.apple.com/source/OpenSSH/OpenSSH-175/openssh/PROTOCOL?txt. +func (c *Client) StatVFS(path string) (*StatVFS, error) { + // send the StatVFS packet to the server + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpStatvfsPacket{ + ID: id, + Path: path, + }) + if err != nil { + return nil, err + } + + switch typ { + // server responded with valid data + case sshFxpExtendedReply: + var response StatVFS + err = binary.Read(bytes.NewReader(data), binary.BigEndian, &response) + if err != nil { + return nil, errors.New("can not parse reply") + } + + return &response, nil + + // the resquest failed + case sshFxpStatus: + return nil, normaliseError(unmarshalStatus(id, data)) + + default: + return nil, unimplementedPacketErr(typ) + } +} + +// Join joins any number of path elements into a single path, adding a +// separating slash if necessary. The result is Cleaned; in particular, all +// empty strings are ignored. +func (c *Client) Join(elem ...string) string { return path.Join(elem...) } + +// Remove removes the specified file or directory. An error will be returned if no +// file or directory with the specified path exists, or if the specified directory +// is not empty. +func (c *Client) Remove(path string) error { + errF := c.removeFile(path) + if errF == nil { + return nil + } + + errD := c.RemoveDirectory(path) + if errD == nil { + return nil + } + + // Both failed: figure out which error to return. + + if errF, ok := errF.(*os.PathError); ok { + // The only time it makes sense to compare errors, is when both are `*os.PathError`. + // We cannot test these directly with errF == errD, as that would be a pointer comparison. + + if errD, ok := errD.(*os.PathError); ok && errors.Is(errF.Err, errD.Err) { + // If they are both pointers to PathError, + // and the same underlying error, then return that. + return errF + } + } + + fi, err := c.Stat(path) + if err != nil { + return err + } + + if fi.IsDir() { + return errD + } + + return errF +} + +func (c *Client) removeFile(path string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpRemovePacket{ + ID: id, + Filename: path, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(id, data)) + if err == nil { + return nil + } + return &os.PathError{ + Op: "remove", + Path: path, + Err: err, + } + default: + return unimplementedPacketErr(typ) + } +} + +// RemoveDirectory removes a directory path. +func (c *Client) RemoveDirectory(path string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpRmdirPacket{ + ID: id, + Path: path, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(id, data)) + if err == nil { + return nil + } + return &os.PathError{ + Op: "remove", + Path: path, + Err: err, + } + default: + return unimplementedPacketErr(typ) + } +} + +// Rename renames a file. +func (c *Client) Rename(oldname, newname string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpRenamePacket{ + ID: id, + Oldpath: oldname, + Newpath: newname, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +// PosixRename renames a file using the posix-rename@openssh.com extension +// which will replace newname if it already exists. +func (c *Client) PosixRename(oldname, newname string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpPosixRenamePacket{ + ID: id, + Oldpath: oldname, + Newpath: newname, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +// RealPath can be used to have the server canonicalize any given path name to an absolute path. +// +// This is useful for converting path names containing ".." components, +// or relative pathnames without a leading slash into absolute paths. +func (c *Client) RealPath(path string) (string, error) { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpRealpathPacket{ + ID: id, + Path: path, + }) + if err != nil { + return "", err + } + switch typ { + case sshFxpName: + sid, data := unmarshalUint32(data) + if sid != id { + return "", &unexpectedIDErr{id, sid} + } + count, data := unmarshalUint32(data) + if count != 1 { + return "", unexpectedCount(1, count) + } + filename, _ := unmarshalString(data) // ignore attributes + return filename, nil + case sshFxpStatus: + return "", normaliseError(unmarshalStatus(id, data)) + default: + return "", unimplementedPacketErr(typ) + } +} + +// Getwd returns the current working directory of the server. Operations +// involving relative paths will be based at this location. +func (c *Client) Getwd() (string, error) { + return c.RealPath(".") +} + +// Mkdir creates the specified directory. An error will be returned if a file or +// directory with the specified path already exists, or if the directory's +// parent folder does not exist (the method cannot create complete paths). +func (c *Client) Mkdir(path string) error { + id := c.nextID() + typ, data, err := c.sendPacket(context.Background(), nil, &sshFxpMkdirPacket{ + ID: id, + Path: path, + }) + if err != nil { + return err + } + switch typ { + case sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return unimplementedPacketErr(typ) + } +} + +// MkdirAll creates a directory named path, along with any necessary parents, +// and returns nil, or else returns an error. +// If path is already a directory, MkdirAll does nothing and returns nil. +// If, while making any directory, that path is found to already be a regular file, an error is returned. +func (c *Client) MkdirAll(path string) error { + // Most of this code mimics https://golang.org/src/os/path.go?s=514:561#L13 + // Fast path: if we can tell whether path is a directory or file, stop with success or error. + dir, err := c.Stat(path) + if err == nil { + if dir.IsDir() { + return nil + } + return &os.PathError{Op: "mkdir", Path: path, Err: syscall.ENOTDIR} + } + + // Slow path: make sure parent exists and then call Mkdir for path. + i := len(path) + for i > 0 && path[i-1] == '/' { // Skip trailing path separator. + i-- + } + + j := i + for j > 0 && path[j-1] != '/' { // Scan backward over element. + j-- + } + + if j > 1 { + // Create parent + err = c.MkdirAll(path[0 : j-1]) + if err != nil { + return err + } + } + + // Parent now exists; invoke Mkdir and use its result. + err = c.Mkdir(path) + if err != nil { + // Handle arguments like "foo/." by + // double-checking that directory doesn't exist. + dir, err1 := c.Lstat(path) + if err1 == nil && dir.IsDir() { + return nil + } + return err + } + return nil +} + +// RemoveAll delete files recursively in the directory and Recursively delete subdirectories. +// An error will be returned if no file or directory with the specified path exists +func (c *Client) RemoveAll(path string) error { + + // Get the file/directory information + fi, err := c.Stat(path) + if err != nil { + return err + } + + if fi.IsDir() { + // Delete files recursively in the directory + files, err := c.ReadDir(path) + if err != nil { + return err + } + + for _, file := range files { + if file.IsDir() { + // Recursively delete subdirectories + err = c.RemoveAll(path + "/" + file.Name()) + if err != nil { + return err + } + } else { + // Delete individual files + err = c.Remove(path + "/" + file.Name()) + if err != nil { + return err + } + } + } + + } + + return c.Remove(path) + +} + +// File represents a remote file. +type File struct { + c *Client + path string + + mu sync.RWMutex + handle string + offset int64 // current offset within remote file +} + +// Close closes the File, rendering it unusable for I/O. It returns an +// error, if any. +func (f *File) Close() error { + f.mu.Lock() + defer f.mu.Unlock() + + if f.handle == "" { + return os.ErrClosed + } + + // The design principle here is that when `openssh-portable/sftp-server.c` is doing `handle_close`, + // it will unconditionally mark the handle as unused, + // so we need to also unconditionally mark this handle as invalid. + // By invalidating our local copy of the handle, + // we ensure that there cannot be any erroneous use-after-close requests sent after Close. + + handle := f.handle + f.handle = "" + + return f.c.close(handle) +} + +// Name returns the name of the file as presented to Open or Create. +func (f *File) Name() string { + return f.path +} + +// Read reads up to len(b) bytes from the File. It returns the number of bytes +// read and an error, if any. Read follows io.Reader semantics, so when Read +// encounters an error or EOF condition after successfully reading n > 0 bytes, +// it returns the number of bytes read. +// +// To maximise throughput for transferring the entire file (especially +// over high latency links) it is recommended to use WriteTo rather +// than calling Read multiple times. io.Copy will do this +// automatically. +func (f *File) Read(b []byte) (int, error) { + f.mu.Lock() + defer f.mu.Unlock() + + n, err := f.readAt(b, f.offset) + f.offset += int64(n) + return n, err +} + +// readChunkAt attempts to read the whole entire length of the buffer from the file starting at the offset. +// It will continue progressively reading into the buffer until it fills the whole buffer, or an error occurs. +func (f *File) readChunkAt(ch chan result, b []byte, off int64) (n int, err error) { + for err == nil && n < len(b) { + id := f.c.nextID() + typ, data, err := f.c.sendPacket(context.Background(), ch, &sshFxpReadPacket{ + ID: id, + Handle: f.handle, + Offset: uint64(off) + uint64(n), + Len: uint32(len(b) - n), + }) + if err != nil { + return n, err + } + + switch typ { + case sshFxpStatus: + return n, normaliseError(unmarshalStatus(id, data)) + + case sshFxpData: + sid, data := unmarshalUint32(data) + if id != sid { + return n, &unexpectedIDErr{id, sid} + } + + l, data := unmarshalUint32(data) + n += copy(b[n:], data[:l]) + + default: + return n, unimplementedPacketErr(typ) + } + } + + return +} + +func (f *File) readAtSequential(b []byte, off int64) (read int, err error) { + for read < len(b) { + rb := b[read:] + if len(rb) > f.c.maxPacket { + rb = rb[:f.c.maxPacket] + } + n, err := f.readChunkAt(nil, rb, off+int64(read)) + if n < 0 { + panic("sftp.File: returned negative count from readChunkAt") + } + if n > 0 { + read += n + } + if err != nil { + return read, err + } + } + return read, nil +} + +// ReadAt reads up to len(b) byte from the File at a given offset `off`. It returns +// the number of bytes read and an error, if any. ReadAt follows io.ReaderAt semantics, +// so the file offset is not altered during the read. +func (f *File) ReadAt(b []byte, off int64) (int, error) { + f.mu.RLock() + defer f.mu.RUnlock() + + return f.readAt(b, off) +} + +// readAt must be called while holding either the Read or Write mutex in File. +// This code is concurrent safe with itself, but not with Close. +func (f *File) readAt(b []byte, off int64) (int, error) { + if f.handle == "" { + return 0, os.ErrClosed + } + + if len(b) <= f.c.maxPacket { + // This should be able to be serviced with 1/2 requests. + // So, just do it directly. + return f.readChunkAt(nil, b, off) + } + + if f.c.disableConcurrentReads { + return f.readAtSequential(b, off) + } + + // Split the read into multiple maxPacket-sized concurrent reads bounded by maxConcurrentRequests. + // This allows writes with a suitably large buffer to transfer data at a much faster rate + // by overlapping round trip times. + + cancel := make(chan struct{}) + + concurrency := len(b)/f.c.maxPacket + 1 + if concurrency > f.c.maxConcurrentRequests || concurrency < 1 { + concurrency = f.c.maxConcurrentRequests + } + + resPool := newResChanPool(concurrency) + + type work struct { + id uint32 + res chan result + + b []byte + off int64 + } + workCh := make(chan work) + + // Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets. + go func() { + defer close(workCh) + + b := b + offset := off + chunkSize := f.c.maxPacket + + for len(b) > 0 { + rb := b + if len(rb) > chunkSize { + rb = rb[:chunkSize] + } + + id := f.c.nextID() + res := resPool.Get() + + f.c.dispatchRequest(res, &sshFxpReadPacket{ + ID: id, + Handle: f.handle, + Offset: uint64(offset), + Len: uint32(len(rb)), + }) + + select { + case workCh <- work{id, res, rb, offset}: + case <-cancel: + return + } + + offset += int64(len(rb)) + b = b[len(rb):] + } + }() + + type rErr struct { + off int64 + err error + } + errCh := make(chan rErr) + + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets work, and then performs the Read into its buffer from its respective offset. + go func() { + defer wg.Done() + + for packet := range workCh { + var n int + + s := <-packet.res + resPool.Put(packet.res) + + err := s.err + if err == nil { + switch s.typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(packet.id, s.data)) + + case sshFxpData: + sid, data := unmarshalUint32(s.data) + if packet.id != sid { + err = &unexpectedIDErr{packet.id, sid} + + } else { + l, data := unmarshalUint32(data) + n = copy(packet.b, data[:l]) + + // For normal disk files, it is guaranteed that this will read + // the specified number of bytes, or up to end of file. + // This implies, if we have a short read, that means EOF. + if n < len(packet.b) { + err = io.EOF + } + } + + default: + err = unimplementedPacketErr(s.typ) + } + } + + if err != nil { + // return the offset as the start + how much we read before the error. + errCh <- rErr{packet.off + int64(n), err} + + // DO NOT return. + // We want to ensure that workCh is drained before wg.Wait returns. + } + } + }() + } + + // Wait for long tail, before closing results. + go func() { + wg.Wait() + close(errCh) + }() + + // Reduce: collect all the results into a relevant return: the earliest offset to return an error. + firstErr := rErr{math.MaxInt64, nil} + for rErr := range errCh { + if rErr.off <= firstErr.off { + firstErr = rErr + } + + select { + case <-cancel: + default: + // stop any more work from being distributed. (Just in case.) + close(cancel) + } + } + + if firstErr.err != nil { + // firstErr.err != nil if and only if firstErr.off > our starting offset. + return int(firstErr.off - off), firstErr.err + } + + // As per spec for io.ReaderAt, we return nil error if and only if we read everything. + return len(b), nil +} + +// writeToSequential implements WriteTo, but works sequentially with no parallelism. +func (f *File) writeToSequential(w io.Writer) (written int64, err error) { + b := make([]byte, f.c.maxPacket) + ch := make(chan result, 1) // reusable channel + + for { + n, err := f.readChunkAt(ch, b, f.offset) + if n < 0 { + panic("sftp.File: returned negative count from readChunkAt") + } + + if n > 0 { + f.offset += int64(n) + + m, err := w.Write(b[:n]) + written += int64(m) + + if err != nil { + return written, err + } + } + + if err != nil { + if err == io.EOF { + return written, nil // return nil explicitly. + } + + return written, err + } + } +} + +// WriteTo writes the file to the given Writer. +// The return value is the number of bytes written. +// Any error encountered during the write is also returned. +// +// This method is preferred over calling Read multiple times +// to maximise throughput for transferring the entire file, +// especially over high latency links. +func (f *File) WriteTo(w io.Writer) (written int64, err error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.handle == "" { + return 0, os.ErrClosed + } + + if f.c.disableConcurrentReads { + return f.writeToSequential(w) + } + + // For concurrency, we want to guess how many concurrent workers we should use. + var fileStat *FileStat + if f.c.useFstat { + fileStat, err = f.c.fstat(f.handle) + } else { + fileStat, err = f.c.stat(f.path) + } + if err != nil { + return 0, err + } + + fileSize := fileStat.Size + if fileSize <= uint64(f.c.maxPacket) || !isRegular(fileStat.Mode) { + // only regular files are guaranteed to return (full read) xor (partial read, next error) + return f.writeToSequential(w) + } + + concurrency64 := fileSize/uint64(f.c.maxPacket) + 1 // a bad guess, but better than no guess + if concurrency64 > uint64(f.c.maxConcurrentRequests) || concurrency64 < 1 { + concurrency64 = uint64(f.c.maxConcurrentRequests) + } + // Now that concurrency64 is saturated to an int value, we know this assignment cannot possibly overflow. + concurrency := int(concurrency64) + + chunkSize := f.c.maxPacket + pool := newBufPool(concurrency, chunkSize) + resPool := newResChanPool(concurrency) + + cancel := make(chan struct{}) + var wg sync.WaitGroup + defer func() { + // Once the writing Reduce phase has ended, all the feed work needs to unconditionally stop. + close(cancel) + + // We want to wait until all outstanding goroutines with an `f` or `f.c` reference have completed. + // Just to be sure we don’t orphan any goroutines any hanging references. + wg.Wait() + }() + + type writeWork struct { + b []byte + off int64 + err error + + next chan writeWork + } + writeCh := make(chan writeWork) + + type readWork struct { + id uint32 + res chan result + off int64 + + cur, next chan writeWork + } + readCh := make(chan readWork) + + // Slice: hand out chunks of work on demand, with a `cur` and `next` channel built-in for sequencing. + go func() { + defer close(readCh) + + off := f.offset + + cur := writeCh + for { + id := f.c.nextID() + res := resPool.Get() + + next := make(chan writeWork) + readWork := readWork{ + id: id, + res: res, + off: off, + + cur: cur, + next: next, + } + + f.c.dispatchRequest(res, &sshFxpReadPacket{ + ID: id, + Handle: f.handle, + Offset: uint64(off), + Len: uint32(chunkSize), + }) + + select { + case readCh <- readWork: + case <-cancel: + return + } + + off += int64(chunkSize) + cur = next + } + }() + + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets readWork, and does the Read into a buffer at the given offset. + go func() { + defer wg.Done() + + for readWork := range readCh { + var b []byte + var n int + + s := <-readWork.res + resPool.Put(readWork.res) + + err := s.err + if err == nil { + switch s.typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(readWork.id, s.data)) + + case sshFxpData: + sid, data := unmarshalUint32(s.data) + if readWork.id != sid { + err = &unexpectedIDErr{readWork.id, sid} + + } else { + l, data := unmarshalUint32(data) + b = pool.Get()[:l] + n = copy(b, data[:l]) + b = b[:n] + } + + default: + err = unimplementedPacketErr(s.typ) + } + } + + writeWork := writeWork{ + b: b, + off: readWork.off, + err: err, + + next: readWork.next, + } + + select { + case readWork.cur <- writeWork: + case <-cancel: + } + + // DO NOT return. + // We want to ensure that readCh is drained before wg.Wait returns. + } + }() + } + + // Reduce: serialize the results from the reads into sequential writes. + cur := writeCh + for { + packet, ok := <-cur + if !ok { + return written, errors.New("sftp.File.WriteTo: unexpectedly closed channel") + } + + // Because writes are serialized, this will always be the last successfully read byte. + f.offset = packet.off + int64(len(packet.b)) + + if len(packet.b) > 0 { + n, err := w.Write(packet.b) + written += int64(n) + if err != nil { + return written, err + } + } + + if packet.err != nil { + if packet.err == io.EOF { + return written, nil + } + + return written, packet.err + } + + pool.Put(packet.b) + cur = packet.next + } +} + +// Stat returns the FileInfo structure describing file. If there is an +// error. +func (f *File) Stat() (os.FileInfo, error) { + f.mu.RLock() + defer f.mu.RUnlock() + + if f.handle == "" { + return nil, os.ErrClosed + } + + return f.stat() +} + +func (f *File) stat() (os.FileInfo, error) { + fs, err := f.c.fstat(f.handle) + if err != nil { + return nil, err + } + return fileInfoFromStat(fs, path.Base(f.path)), nil +} + +// Write writes len(b) bytes to the File. It returns the number of bytes +// written and an error, if any. Write returns a non-nil error when n != +// len(b). +// +// To maximise throughput for transferring the entire file (especially +// over high latency links) it is recommended to use ReadFrom rather +// than calling Write multiple times. io.Copy will do this +// automatically. +func (f *File) Write(b []byte) (int, error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.handle == "" { + return 0, os.ErrClosed + } + + n, err := f.writeAt(b, f.offset) + f.offset += int64(n) + return n, err +} + +func (f *File) writeChunkAt(ch chan result, b []byte, off int64) (int, error) { + typ, data, err := f.c.sendPacket(context.Background(), ch, &sshFxpWritePacket{ + ID: f.c.nextID(), + Handle: f.handle, + Offset: uint64(off), + Length: uint32(len(b)), + Data: b, + }) + if err != nil { + return 0, err + } + + switch typ { + case sshFxpStatus: + id, _ := unmarshalUint32(data) + err := normaliseError(unmarshalStatus(id, data)) + if err != nil { + return 0, err + } + + default: + return 0, unimplementedPacketErr(typ) + } + + return len(b), nil +} + +// writeAtConcurrent implements WriterAt, but works concurrently rather than sequentially. +func (f *File) writeAtConcurrent(b []byte, off int64) (int, error) { + // Split the write into multiple maxPacket sized concurrent writes + // bounded by maxConcurrentRequests. This allows writes with a suitably + // large buffer to transfer data at a much faster rate due to + // overlapping round trip times. + + cancel := make(chan struct{}) + + type work struct { + id uint32 + res chan result + + off int64 + } + workCh := make(chan work) + + concurrency := len(b)/f.c.maxPacket + 1 + if concurrency > f.c.maxConcurrentRequests || concurrency < 1 { + concurrency = f.c.maxConcurrentRequests + } + + pool := newResChanPool(concurrency) + + // Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets. + go func() { + defer close(workCh) + + var read int + chunkSize := f.c.maxPacket + + for read < len(b) { + wb := b[read:] + if len(wb) > chunkSize { + wb = wb[:chunkSize] + } + + id := f.c.nextID() + res := pool.Get() + off := off + int64(read) + + f.c.dispatchRequest(res, &sshFxpWritePacket{ + ID: id, + Handle: f.handle, + Offset: uint64(off), + Length: uint32(len(wb)), + Data: wb, + }) + + select { + case workCh <- work{id, res, off}: + case <-cancel: + return + } + + read += len(wb) + } + }() + + type wErr struct { + off int64 + err error + } + errCh := make(chan wErr) + + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets work, and does the Write from each buffer to its respective offset. + go func() { + defer wg.Done() + + for work := range workCh { + s := <-work.res + pool.Put(work.res) + + err := s.err + if err == nil { + switch s.typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(work.id, s.data)) + default: + err = unimplementedPacketErr(s.typ) + } + } + + if err != nil { + errCh <- wErr{work.off, err} + } + } + }() + } + + // Wait for long tail, before closing results. + go func() { + wg.Wait() + close(errCh) + }() + + // Reduce: collect all the results into a relevant return: the earliest offset to return an error. + firstErr := wErr{math.MaxInt64, nil} + for wErr := range errCh { + if wErr.off <= firstErr.off { + firstErr = wErr + } + + select { + case <-cancel: + default: + // stop any more work from being distributed. (Just in case.) + close(cancel) + } + } + + if firstErr.err != nil { + // firstErr.err != nil if and only if firstErr.off >= our starting offset. + return int(firstErr.off - off), firstErr.err + } + + return len(b), nil +} + +// WriteAt writes up to len(b) byte to the File at a given offset `off`. It returns +// the number of bytes written and an error, if any. WriteAt follows io.WriterAt semantics, +// so the file offset is not altered during the write. +func (f *File) WriteAt(b []byte, off int64) (written int, err error) { + f.mu.RLock() + defer f.mu.RUnlock() + + if f.handle == "" { + return 0, os.ErrClosed + } + + return f.writeAt(b, off) +} + +// writeAt must be called while holding either the Read or Write mutex in File. +// This code is concurrent safe with itself, but not with Close. +func (f *File) writeAt(b []byte, off int64) (written int, err error) { + if len(b) <= f.c.maxPacket { + // We can do this in one write. + return f.writeChunkAt(nil, b, off) + } + + if f.c.useConcurrentWrites { + return f.writeAtConcurrent(b, off) + } + + ch := make(chan result, 1) // reusable channel + + chunkSize := f.c.maxPacket + + for written < len(b) { + wb := b[written:] + if len(wb) > chunkSize { + wb = wb[:chunkSize] + } + + n, err := f.writeChunkAt(ch, wb, off+int64(written)) + if n > 0 { + written += n + } + + if err != nil { + return written, err + } + } + + return len(b), nil +} + +// ReadFromWithConcurrency implements ReaderFrom, +// but uses the given concurrency to issue multiple requests at the same time. +// +// Giving a concurrency of less than one will default to the Client’s max concurrency. +// +// Otherwise, the given concurrency will be capped by the Client's max concurrency. +// +// When one needs to guarantee concurrent reads/writes, this method is preferred +// over ReadFrom. +func (f *File) ReadFromWithConcurrency(r io.Reader, concurrency int) (read int64, err error) { + f.mu.Lock() + defer f.mu.Unlock() + + return f.readFromWithConcurrency(r, concurrency) +} + +func (f *File) readFromWithConcurrency(r io.Reader, concurrency int) (read int64, err error) { + if f.handle == "" { + return 0, os.ErrClosed + } + + // Split the write into multiple maxPacket sized concurrent writes. + // This allows writes with a suitably large reader + // to transfer data at a much faster rate due to overlapping round trip times. + + cancel := make(chan struct{}) + + type work struct { + id uint32 + res chan result + + off int64 + } + workCh := make(chan work) + + type rwErr struct { + off int64 + err error + } + errCh := make(chan rwErr) + + if concurrency > f.c.maxConcurrentRequests || concurrency < 1 { + concurrency = f.c.maxConcurrentRequests + } + + pool := newResChanPool(concurrency) + + // Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets. + go func() { + defer close(workCh) + + b := make([]byte, f.c.maxPacket) + off := f.offset + + for { + // Fill the entire buffer. + n, err := io.ReadFull(r, b) + + if n > 0 { + read += int64(n) + + id := f.c.nextID() + res := pool.Get() + + f.c.dispatchRequest(res, &sshFxpWritePacket{ + ID: id, + Handle: f.handle, + Offset: uint64(off), + Length: uint32(n), + Data: b[:n], + }) + + select { + case workCh <- work{id, res, off}: + case <-cancel: + return + } + + off += int64(n) + } + + if err != nil { + if !errors.Is(err, io.EOF) && !errors.Is(err, io.ErrUnexpectedEOF) { + errCh <- rwErr{off, err} + } + return + } + } + }() + + var wg sync.WaitGroup + wg.Add(concurrency) + for i := 0; i < concurrency; i++ { + // Map_i: each worker gets work, and does the Write from each buffer to its respective offset. + go func() { + defer wg.Done() + + for work := range workCh { + s := <-work.res + pool.Put(work.res) + + err := s.err + if err == nil { + switch s.typ { + case sshFxpStatus: + err = normaliseError(unmarshalStatus(work.id, s.data)) + default: + err = unimplementedPacketErr(s.typ) + } + } + + if err != nil { + errCh <- rwErr{work.off, err} + + // DO NOT return. + // We want to ensure that workCh is drained before wg.Wait returns. + } + } + }() + } + + // Wait for long tail, before closing results. + go func() { + wg.Wait() + close(errCh) + }() + + // Reduce: Collect all the results into a relevant return: the earliest offset to return an error. + firstErr := rwErr{math.MaxInt64, nil} + for rwErr := range errCh { + if rwErr.off <= firstErr.off { + firstErr = rwErr + } + + select { + case <-cancel: + default: + // stop any more work from being distributed. + close(cancel) + } + } + + if firstErr.err != nil { + // firstErr.err != nil if and only if firstErr.off is a valid offset. + // + // firstErr.off will then be the lesser of: + // * the offset of the first error from writing, + // * the last successfully read offset. + // + // This could be less than the last successfully written offset, + // which is the whole reason for the UseConcurrentWrites() ClientOption. + // + // Callers are responsible for truncating any SFTP files to a safe length. + f.offset = firstErr.off + + // ReadFrom is defined to return the read bytes, regardless of any writer errors. + return read, firstErr.err + } + + f.offset += read + return read, nil +} + +// ReadFrom reads data from r until EOF and writes it to the file. The return +// value is the number of bytes read. Any error except io.EOF encountered +// during the read is also returned. +// +// This method is preferred over calling Write multiple times +// to maximise throughput for transferring the entire file, +// especially over high-latency links. +// +// To ensure concurrent writes, the given r needs to implement one of +// the following receiver methods: +// +// Len() int +// Size() int64 +// Stat() (os.FileInfo, error) +// +// or be an instance of [io.LimitedReader] to determine the number of possible +// concurrent requests. Otherwise, reads/writes are performed sequentially. +// ReadFromWithConcurrency can be used explicitly to guarantee concurrent +// processing of the reader. +func (f *File) ReadFrom(r io.Reader) (int64, error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.handle == "" { + return 0, os.ErrClosed + } + + if f.c.useConcurrentWrites { + var remain int64 + switch r := r.(type) { + case interface{ Len() int }: + remain = int64(r.Len()) + + case interface{ Size() int64 }: + remain = r.Size() + + case *io.LimitedReader: + remain = r.N + + case interface{ Stat() (os.FileInfo, error) }: + info, err := r.Stat() + if err == nil { + remain = info.Size() + } + } + + if remain < 0 { + // We can strongly assert that we want default max concurrency here. + return f.readFromWithConcurrency(r, f.c.maxConcurrentRequests) + } + + if remain > int64(f.c.maxPacket) { + // Otherwise, only use concurrency, if it would be at least two packets. + + // This is the best reasonable guess we can make. + concurrency64 := remain/int64(f.c.maxPacket) + 1 + + // We need to cap this value to an `int` size value to avoid overflow on 32-bit machines. + // So, we may as well pre-cap it to `f.c.maxConcurrentRequests`. + if concurrency64 > int64(f.c.maxConcurrentRequests) { + concurrency64 = int64(f.c.maxConcurrentRequests) + } + + return f.readFromWithConcurrency(r, int(concurrency64)) + } + } + + ch := make(chan result, 1) // reusable channel + + b := make([]byte, f.c.maxPacket) + + var read int64 + for { + // Fill the entire buffer. + n, err := io.ReadFull(r, b) + if n < 0 { + panic("sftp.File: reader returned negative count from Read") + } + + if n > 0 { + read += int64(n) + + m, err2 := f.writeChunkAt(ch, b[:n], f.offset) + f.offset += int64(m) + + if err == nil { + err = err2 + } + } + + if err != nil { + if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) { + return read, nil // return nil explicitly. + } + + return read, err + } + } +} + +// Seek implements io.Seeker by setting the client offset for the next Read or +// Write. It returns the next offset read. Seeking before or after the end of +// the file is undefined. Seeking relative to the end calls Stat. +func (f *File) Seek(offset int64, whence int) (int64, error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.handle == "" { + return 0, os.ErrClosed + } + + switch whence { + case io.SeekStart: + case io.SeekCurrent: + offset += f.offset + case io.SeekEnd: + fi, err := f.stat() + if err != nil { + return f.offset, err + } + offset += fi.Size() + default: + return f.offset, unimplementedSeekWhence(whence) + } + + if offset < 0 { + return f.offset, os.ErrInvalid + } + + f.offset = offset + return f.offset, nil +} + +// Chown changes the uid/gid of the current file. +func (f *File) Chown(uid, gid int) error { + f.mu.RLock() + defer f.mu.RUnlock() + + if f.handle == "" { + return os.ErrClosed + } + + return f.c.fsetstat(f.handle, sshFileXferAttrUIDGID, &FileStat{ + UID: uint32(uid), + GID: uint32(gid), + }) +} + +// Chmod changes the permissions of the current file. +// +// See Client.Chmod for details. +func (f *File) Chmod(mode os.FileMode) error { + f.mu.RLock() + defer f.mu.RUnlock() + + if f.handle == "" { + return os.ErrClosed + } + + return f.c.fsetstat(f.handle, sshFileXferAttrPermissions, toChmodPerm(mode)) +} + +// SetExtendedData sets extended attributes of the current file. It uses the +// SSH_FILEXFER_ATTR_EXTENDED flag in the setstat request. +// +// This flag provides a general extension mechanism for vendor-specific extensions. +// Names of the attributes should be a string of the format "name@domain", where "domain" +// is a valid, registered domain name and "name" identifies the method. Server +// implementations SHOULD ignore extended data fields that they do not understand. +func (f *File) SetExtendedData(path string, extended []StatExtended) error { + f.mu.RLock() + defer f.mu.RUnlock() + + if f.handle == "" { + return os.ErrClosed + } + + attrs := &FileStat{ + Extended: extended, + } + + return f.c.fsetstat(f.handle, sshFileXferAttrExtended, attrs) +} + +// Truncate sets the size of the current file. Although it may be safely assumed +// that if the size is less than its current size it will be truncated to fit, +// the SFTP protocol does not specify what behavior the server should do when setting +// size greater than the current size. +// We send a SSH_FXP_FSETSTAT here since we have a file handle +func (f *File) Truncate(size int64) error { + f.mu.RLock() + defer f.mu.RUnlock() + + if f.handle == "" { + return os.ErrClosed + } + + return f.c.fsetstat(f.handle, sshFileXferAttrSize, uint64(size)) +} + +// Sync requests a flush of the contents of a File to stable storage. +// +// Sync requires the server to support the fsync@openssh.com extension. +func (f *File) Sync() error { + f.mu.Lock() + defer f.mu.Unlock() + + if f.handle == "" { + return os.ErrClosed + } + + if data, ok := f.c.HasExtension(openssh.ExtensionFSync().Name); !ok || data != "1" { + return &StatusError{ + Code: sshFxOPUnsupported, + msg: "fsync not supported", + } + } + + id := f.c.nextID() + typ, data, err := f.c.sendPacket(context.Background(), nil, &sshFxpFsyncPacket{ + ID: id, + Handle: f.handle, + }) + + switch { + case err != nil: + return err + case typ == sshFxpStatus: + return normaliseError(unmarshalStatus(id, data)) + default: + return &unexpectedPacketErr{want: sshFxpStatus, got: typ} + } +} + +// normaliseError normalises an error into a more standard form that can be +// checked against stdlib errors like io.EOF or os.ErrNotExist. +func normaliseError(err error) error { + switch err := err.(type) { + case *StatusError: + switch err.Code { + case sshFxEOF: + return io.EOF + case sshFxNoSuchFile: + return os.ErrNotExist + case sshFxPermissionDenied: + return os.ErrPermission + case sshFxOk: + return nil + default: + return err + } + default: + return err + } +} + +// flags converts the flags passed to OpenFile into ssh flags. +// Unsupported flags are ignored. +func toPflags(f int) uint32 { + var out uint32 + switch f & (os.O_RDONLY | os.O_WRONLY | os.O_RDWR) { + case os.O_RDONLY: + out |= sshFxfRead + case os.O_WRONLY: + out |= sshFxfWrite + case os.O_RDWR: + out |= sshFxfRead | sshFxfWrite + } + if f&os.O_APPEND == os.O_APPEND { + out |= sshFxfAppend + } + if f&os.O_CREATE == os.O_CREATE { + out |= sshFxfCreat + } + if f&os.O_TRUNC == os.O_TRUNC { + out |= sshFxfTrunc + } + if f&os.O_EXCL == os.O_EXCL { + out |= sshFxfExcl + } + return out +} + +// toChmodPerm converts Go permission bits to POSIX permission bits. +// +// This differs from fromFileMode in that we preserve the POSIX versions of +// setuid, setgid and sticky in m, because we've historically supported those +// bits, and we mask off any non-permission bits. +func toChmodPerm(m os.FileMode) (perm uint32) { + const mask = os.ModePerm | os.FileMode(s_ISUID|s_ISGID|s_ISVTX) + perm = uint32(m & mask) + + if m&os.ModeSetuid != 0 { + perm |= s_ISUID + } + if m&os.ModeSetgid != 0 { + perm |= s_ISGID + } + if m&os.ModeSticky != 0 { + perm |= s_ISVTX + } + + return perm +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/conn.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/conn.go new file mode 100644 index 0000000..e68a2bd --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/conn.go @@ -0,0 +1,212 @@ +package sftp + +import ( + "context" + "encoding" + "fmt" + "io" + "sync" +) + +// conn implements a bidirectional channel on which client and server +// connections are multiplexed. +type conn struct { + io.Reader + io.WriteCloser + // this is the same allocator used in packet manager + alloc *allocator + sync.Mutex // used to serialise writes to sendPacket +} + +// the orderID is used in server mode if the allocator is enabled. +// For the client mode just pass 0. +// It returns io.EOF if the connection is closed and +// there are no more packets to read. +func (c *conn) recvPacket(orderID uint32) (fxp, []byte, error) { + return recvPacket(c, c.alloc, orderID) +} + +func (c *conn) sendPacket(m encoding.BinaryMarshaler) error { + c.Lock() + defer c.Unlock() + + return sendPacket(c, m) +} + +func (c *conn) Close() error { + c.Lock() + defer c.Unlock() + return c.WriteCloser.Close() +} + +type clientConn struct { + conn + wg sync.WaitGroup + + wait func() error // if non-nil, call this during Wait() to get a possible remote status error. + + sync.Mutex // protects inflight + inflight map[uint32]chan<- result // outstanding requests + + closed chan struct{} + err error +} + +// Wait blocks until the conn has shut down, and return the error +// causing the shutdown. It can be called concurrently from multiple +// goroutines. +func (c *clientConn) Wait() error { + <-c.closed + + if c.wait == nil { + // Only return this error if c.wait won't return something more useful. + return c.err + } + + if err := c.wait(); err != nil { + + // TODO: when https://github.com/golang/go/issues/35025 is fixed, + // we can remove this if block entirely. + // Right now, it’s always going to return this, so it is not useful. + // But we have this code here so that as soon as the ssh library is updated, + // we can return a possibly more useful error. + if err.Error() == "ssh: session not started" { + return c.err + } + + return err + } + + // c.wait returned no error; so, let's return something maybe more useful. + return c.err +} + +// Close closes the SFTP session. +func (c *clientConn) Close() error { + defer c.wg.Wait() + return c.conn.Close() +} + +// recv continuously reads from the server and forwards responses to the +// appropriate channel. +func (c *clientConn) recv() error { + defer c.conn.Close() + + for { + typ, data, err := c.recvPacket(0) + if err != nil { + return err + } + sid, _, err := unmarshalUint32Safe(data) + if err != nil { + return err + } + + ch, ok := c.getChannel(sid) + if !ok { + // This is an unexpected occurrence. Send the error + // back to all listeners so that they terminate + // gracefully. + return fmt.Errorf("sid not found: %d", sid) + } + + ch <- result{typ: typ, data: data} + } +} + +func (c *clientConn) putChannel(ch chan<- result, sid uint32) bool { + c.Lock() + defer c.Unlock() + + select { + case <-c.closed: + // already closed with broadcastErr, return error on chan. + ch <- result{err: ErrSSHFxConnectionLost} + return false + default: + } + + c.inflight[sid] = ch + return true +} + +func (c *clientConn) getChannel(sid uint32) (chan<- result, bool) { + c.Lock() + defer c.Unlock() + + ch, ok := c.inflight[sid] + delete(c.inflight, sid) + + return ch, ok +} + +// result captures the result of receiving the a packet from the server +type result struct { + typ fxp + data []byte + err error +} + +type idmarshaler interface { + id() uint32 + encoding.BinaryMarshaler +} + +func (c *clientConn) sendPacket(ctx context.Context, ch chan result, p idmarshaler) (fxp, []byte, error) { + if cap(ch) < 1 { + ch = make(chan result, 1) + } + + c.dispatchRequest(ch, p) + + select { + case <-ctx.Done(): + return 0, nil, ctx.Err() + case s := <-ch: + return s.typ, s.data, s.err + } +} + +// dispatchRequest should ideally only be called by race-detection tests outside of this file, +// where you have to ensure two packets are in flight sequentially after each other. +func (c *clientConn) dispatchRequest(ch chan<- result, p idmarshaler) { + sid := p.id() + + if !c.putChannel(ch, sid) { + // already closed. + return + } + + if err := c.conn.sendPacket(p); err != nil { + if ch, ok := c.getChannel(sid); ok { + ch <- result{err: err} + } + } +} + +// broadcastErr sends an error to all goroutines waiting for a response. +func (c *clientConn) broadcastErr(err error) { + c.Lock() + defer c.Unlock() + + bcastRes := result{err: ErrSSHFxConnectionLost} + for sid, ch := range c.inflight { + ch <- bcastRes + + // Replace the chan in inflight, + // we have hijacked this chan, + // and this guarantees always-only-once sending. + c.inflight[sid] = make(chan<- result, 1) + } + + c.err = err + close(c.closed) +} + +type serverConn struct { + conn +} + +func (s *serverConn) sendError(id uint32, err error) error { + return s.sendPacket(statusFromError(id, err)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/debug.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/debug.go new file mode 100644 index 0000000..f0db14d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/debug.go @@ -0,0 +1,10 @@ +//go:build debug +// +build debug + +package sftp + +import "log" + +func debug(fmt string, args ...interface{}) { + log.Printf(fmt, args...) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_plan9.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_plan9.go new file mode 100644 index 0000000..cf9d390 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_plan9.go @@ -0,0 +1,42 @@ +package sftp + +import ( + "os" + "syscall" +) + +var EBADF = syscall.NewError("fd out of range or not open") + +func wrapPathError(filepath string, err error) error { + if errno, ok := err.(syscall.ErrorString); ok { + return &os.PathError{Path: filepath, Err: errno} + } + return err +} + +// translateErrno translates a syscall error number to a SFTP error code. +func translateErrno(errno syscall.ErrorString) uint32 { + switch errno { + case "": + return sshFxOk + case syscall.ENOENT: + return sshFxNoSuchFile + case syscall.EPERM: + return sshFxPermissionDenied + } + + return sshFxFailure +} + +func translateSyscallError(err error) (uint32, bool) { + switch e := err.(type) { + case syscall.ErrorString: + return translateErrno(e), true + case *os.PathError: + debug("statusFromError,pathError: error is %T %#v", e.Err, e.Err) + if errno, ok := e.Err.(syscall.ErrorString); ok { + return translateErrno(errno), true + } + } + return 0, false +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_posix.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_posix.go new file mode 100644 index 0000000..cd87e1b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/errno_posix.go @@ -0,0 +1,45 @@ +//go:build !plan9 +// +build !plan9 + +package sftp + +import ( + "os" + "syscall" +) + +const EBADF = syscall.EBADF + +func wrapPathError(filepath string, err error) error { + if errno, ok := err.(syscall.Errno); ok { + return &os.PathError{Path: filepath, Err: errno} + } + return err +} + +// translateErrno translates a syscall error number to a SFTP error code. +func translateErrno(errno syscall.Errno) uint32 { + switch errno { + case 0: + return sshFxOk + case syscall.ENOENT: + return sshFxNoSuchFile + case syscall.EACCES, syscall.EPERM: + return sshFxPermissionDenied + } + + return sshFxFailure +} + +func translateSyscallError(err error) (uint32, bool) { + switch e := err.(type) { + case syscall.Errno: + return translateErrno(e), true + case *os.PathError: + debug("statusFromError,pathError: error is %T %#v", e.Err, e.Err) + if errno, ok := e.Err.(syscall.Errno); ok { + return translateErrno(errno), true + } + } + return 0, false +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/fuzz.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/fuzz.go new file mode 100644 index 0000000..f2f1fc3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/fuzz.go @@ -0,0 +1,23 @@ +//go:build gofuzz +// +build gofuzz + +package sftp + +import "bytes" + +type sinkfuzz struct{} + +func (*sinkfuzz) Close() error { return nil } +func (*sinkfuzz) Write(p []byte) (int, error) { return len(p), nil } + +var devnull = &sinkfuzz{} + +// To run: go-fuzz-build && go-fuzz +func Fuzz(data []byte) int { + c, err := NewClientPipe(bytes.NewReader(data), devnull) + if err != nil { + return 0 + } + c.Close() + return 1 +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/attrs.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/attrs.go new file mode 100644 index 0000000..3aec937 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/attrs.go @@ -0,0 +1,296 @@ +package sshfx + +// Attributes related flags. +const ( + AttrSize = 1 << iota // SSH_FILEXFER_ATTR_SIZE + AttrUIDGID // SSH_FILEXFER_ATTR_UIDGID + AttrPermissions // SSH_FILEXFER_ATTR_PERMISSIONS + AttrACModTime // SSH_FILEXFER_ACMODTIME + + AttrExtended = 1 << 31 // SSH_FILEXFER_ATTR_EXTENDED +) + +// Attributes defines the file attributes type defined in draft-ietf-secsh-filexfer-02 +// +// Defined in: https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-5 +type Attributes struct { + Flags uint32 + + // AttrSize + Size uint64 + + // AttrUIDGID + UID uint32 + GID uint32 + + // AttrPermissions + Permissions FileMode + + // AttrACmodTime + ATime uint32 + MTime uint32 + + // AttrExtended + ExtendedAttributes []ExtendedAttribute +} + +// GetSize returns the Size field and a bool that is true if and only if the value is valid/defined. +func (a *Attributes) GetSize() (size uint64, ok bool) { + return a.Size, a.Flags&AttrSize != 0 +} + +// SetSize is a convenience function that sets the Size field, +// and marks the field as valid/defined in Flags. +func (a *Attributes) SetSize(size uint64) { + a.Flags |= AttrSize + a.Size = size +} + +// GetUIDGID returns the UID and GID fields and a bool that is true if and only if the values are valid/defined. +func (a *Attributes) GetUIDGID() (uid, gid uint32, ok bool) { + return a.UID, a.GID, a.Flags&AttrUIDGID != 0 +} + +// SetUIDGID is a convenience function that sets the UID and GID fields, +// and marks the fields as valid/defined in Flags. +func (a *Attributes) SetUIDGID(uid, gid uint32) { + a.Flags |= AttrUIDGID + a.UID = uid + a.GID = gid +} + +// GetPermissions returns the Permissions field and a bool that is true if and only if the value is valid/defined. +func (a *Attributes) GetPermissions() (perms FileMode, ok bool) { + return a.Permissions, a.Flags&AttrPermissions != 0 +} + +// SetPermissions is a convenience function that sets the Permissions field, +// and marks the field as valid/defined in Flags. +func (a *Attributes) SetPermissions(perms FileMode) { + a.Flags |= AttrPermissions + a.Permissions = perms +} + +// GetACModTime returns the ATime and MTime fields and a bool that is true if and only if the values are valid/defined. +func (a *Attributes) GetACModTime() (atime, mtime uint32, ok bool) { + return a.ATime, a.MTime, a.Flags&AttrACModTime != 0 +} + +// SetACModTime is a convenience function that sets the ATime and MTime fields, +// and marks the fields as valid/defined in Flags. +func (a *Attributes) SetACModTime(atime, mtime uint32) { + a.Flags |= AttrACModTime + a.ATime = atime + a.MTime = mtime +} + +// Len returns the number of bytes a would marshal into. +func (a *Attributes) Len() int { + length := 4 + + if a.Flags&AttrSize != 0 { + length += 8 + } + + if a.Flags&AttrUIDGID != 0 { + length += 4 + 4 + } + + if a.Flags&AttrPermissions != 0 { + length += 4 + } + + if a.Flags&AttrACModTime != 0 { + length += 4 + 4 + } + + if a.Flags&AttrExtended != 0 { + length += 4 + + for _, ext := range a.ExtendedAttributes { + length += ext.Len() + } + } + + return length +} + +// MarshalInto marshals e onto the end of the given Buffer. +func (a *Attributes) MarshalInto(buf *Buffer) { + buf.AppendUint32(a.Flags) + + if a.Flags&AttrSize != 0 { + buf.AppendUint64(a.Size) + } + + if a.Flags&AttrUIDGID != 0 { + buf.AppendUint32(a.UID) + buf.AppendUint32(a.GID) + } + + if a.Flags&AttrPermissions != 0 { + buf.AppendUint32(uint32(a.Permissions)) + } + + if a.Flags&AttrACModTime != 0 { + buf.AppendUint32(a.ATime) + buf.AppendUint32(a.MTime) + } + + if a.Flags&AttrExtended != 0 { + buf.AppendUint32(uint32(len(a.ExtendedAttributes))) + + for _, ext := range a.ExtendedAttributes { + ext.MarshalInto(buf) + } + } +} + +// MarshalBinary returns a as the binary encoding of a. +func (a *Attributes) MarshalBinary() ([]byte, error) { + buf := NewBuffer(make([]byte, 0, a.Len())) + a.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom unmarshals an Attributes from the given Buffer into e. +// +// NOTE: The values of fields not covered in the a.Flags are explicitly undefined. +func (a *Attributes) UnmarshalFrom(buf *Buffer) (err error) { + flags := buf.ConsumeUint32() + + return a.XXX_UnmarshalByFlags(flags, buf) +} + +// XXX_UnmarshalByFlags uses the pre-existing a.Flags field to determine which fields to decode. +// DO NOT USE THIS: it is an anti-corruption function to implement existing internal usage in pkg/sftp. +// This function is not a part of any compatibility promise. +func (a *Attributes) XXX_UnmarshalByFlags(flags uint32, buf *Buffer) (err error) { + a.Flags = flags + + // Short-circuit dummy attributes. + if a.Flags == 0 { + return buf.Err + } + + if a.Flags&AttrSize != 0 { + a.Size = buf.ConsumeUint64() + } + + if a.Flags&AttrUIDGID != 0 { + a.UID = buf.ConsumeUint32() + a.GID = buf.ConsumeUint32() + } + + if a.Flags&AttrPermissions != 0 { + a.Permissions = FileMode(buf.ConsumeUint32()) + } + + if a.Flags&AttrACModTime != 0 { + a.ATime = buf.ConsumeUint32() + a.MTime = buf.ConsumeUint32() + } + + if a.Flags&AttrExtended != 0 { + count := buf.ConsumeCount() + + a.ExtendedAttributes = make([]ExtendedAttribute, count) + for i := range a.ExtendedAttributes { + a.ExtendedAttributes[i].UnmarshalFrom(buf) + } + } + + return buf.Err +} + +// UnmarshalBinary decodes the binary encoding of Attributes into e. +func (a *Attributes) UnmarshalBinary(data []byte) error { + return a.UnmarshalFrom(NewBuffer(data)) +} + +// ExtendedAttribute defines the extended file attribute type defined in draft-ietf-secsh-filexfer-02 +// +// Defined in: https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-5 +type ExtendedAttribute struct { + Type string + Data string +} + +// Len returns the number of bytes e would marshal into. +func (e *ExtendedAttribute) Len() int { + return 4 + len(e.Type) + 4 + len(e.Data) +} + +// MarshalInto marshals e onto the end of the given Buffer. +func (e *ExtendedAttribute) MarshalInto(buf *Buffer) { + buf.AppendString(e.Type) + buf.AppendString(e.Data) +} + +// MarshalBinary returns e as the binary encoding of e. +func (e *ExtendedAttribute) MarshalBinary() ([]byte, error) { + buf := NewBuffer(make([]byte, 0, e.Len())) + e.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom unmarshals an ExtendedAattribute from the given Buffer into e. +func (e *ExtendedAttribute) UnmarshalFrom(buf *Buffer) (err error) { + *e = ExtendedAttribute{ + Type: buf.ConsumeString(), + Data: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the binary encoding of ExtendedAttribute into e. +func (e *ExtendedAttribute) UnmarshalBinary(data []byte) error { + return e.UnmarshalFrom(NewBuffer(data)) +} + +// NameEntry implements the SSH_FXP_NAME repeated data type from draft-ietf-secsh-filexfer-02 +// +// This type is incompatible with versions 4 or higher. +type NameEntry struct { + Filename string + Longname string + Attrs Attributes +} + +// Len returns the number of bytes e would marshal into. +func (e *NameEntry) Len() int { + return 4 + len(e.Filename) + 4 + len(e.Longname) + e.Attrs.Len() +} + +// MarshalInto marshals e onto the end of the given Buffer. +func (e *NameEntry) MarshalInto(buf *Buffer) { + buf.AppendString(e.Filename) + buf.AppendString(e.Longname) + + e.Attrs.MarshalInto(buf) +} + +// MarshalBinary returns e as the binary encoding of e. +func (e *NameEntry) MarshalBinary() ([]byte, error) { + buf := NewBuffer(make([]byte, 0, e.Len())) + e.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom unmarshals an NameEntry from the given Buffer into e. +// +// NOTE: The values of fields not covered in the a.Flags are explicitly undefined. +func (e *NameEntry) UnmarshalFrom(buf *Buffer) (err error) { + *e = NameEntry{ + Filename: buf.ConsumeString(), + Longname: buf.ConsumeString(), + } + + return e.Attrs.UnmarshalFrom(buf) +} + +// UnmarshalBinary decodes the binary encoding of NameEntry into e. +func (e *NameEntry) UnmarshalBinary(data []byte) error { + return e.UnmarshalFrom(NewBuffer(data)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/buffer.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/buffer.go new file mode 100644 index 0000000..bd4783b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/buffer.go @@ -0,0 +1,340 @@ +package sshfx + +import ( + "encoding/binary" + "errors" +) + +// Various encoding errors. +var ( + ErrShortPacket = errors.New("packet too short") + ErrLongPacket = errors.New("packet too long") +) + +// Buffer wraps up the various encoding details of the SSH format. +// +// Data types are encoded as per section 4 from https://tools.ietf.org/html/draft-ietf-secsh-architecture-09#page-8 +type Buffer struct { + b []byte + off int + Err error +} + +// NewBuffer creates and initializes a new buffer using buf as its initial contents. +// The new buffer takes ownership of buf, and the caller should not use buf after this call. +// +// In most cases, new(Buffer) (or just declaring a Buffer variable) is sufficient to initialize a Buffer. +func NewBuffer(buf []byte) *Buffer { + return &Buffer{ + b: buf, + } +} + +// NewMarshalBuffer creates a new Buffer ready to start marshaling a Packet into. +// It preallocates enough space for uint32(length), uint8(type), uint32(request-id) and size more bytes. +func NewMarshalBuffer(size int) *Buffer { + return NewBuffer(make([]byte, 4+1+4+size)) +} + +// Bytes returns a slice of length b.Len() holding the unconsumed bytes in the Buffer. +// The slice is valid for use only until the next buffer modification +// (that is, only until the next call to an Append or Consume method). +func (b *Buffer) Bytes() []byte { + return b.b[b.off:] +} + +// Len returns the number of unconsumed bytes in the buffer. +func (b *Buffer) Len() int { return len(b.b) - b.off } + +// Cap returns the capacity of the buffer’s underlying byte slice, +// that is, the total space allocated for the buffer’s data. +func (b *Buffer) Cap() int { return cap(b.b) } + +// Reset resets the buffer to be empty, but it retains the underlying storage for use by future Appends. +func (b *Buffer) Reset() { + *b = Buffer{ + b: b.b[:0], + } +} + +// StartPacket resets and initializes the buffer to be ready to start marshaling a packet into. +// It truncates the buffer, reserves space for uint32(length), then appends the given packetType and requestID. +func (b *Buffer) StartPacket(packetType PacketType, requestID uint32) { + *b = Buffer{ + b: append(b.b[:0], make([]byte, 4)...), + } + + b.AppendUint8(uint8(packetType)) + b.AppendUint32(requestID) +} + +// Packet finalizes the packet started from StartPacket. +// It is expected that this will end the ownership of the underlying byte-slice, +// and so the returned byte-slices may be reused the same as any other byte-slice, +// the caller should not use this buffer after this call. +// +// It writes the packet body length into the first four bytes of the buffer in network byte order (big endian). +// The packet body length is the length of this buffer less the 4-byte length itself, plus the length of payload. +// +// It is assumed that no Consume methods have been called on this buffer, +// and so it returns the whole underlying slice. +func (b *Buffer) Packet(payload []byte) (header, payloadPassThru []byte, err error) { + b.PutLength(len(b.b) - 4 + len(payload)) + + return b.b, payload, nil +} + +// ConsumeUint8 consumes a single byte from the buffer. +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeUint8() uint8 { + if b.Err != nil { + return 0 + } + + if b.Len() < 1 { + b.off = len(b.b) + b.Err = ErrShortPacket + return 0 + } + + var v uint8 + v, b.off = b.b[b.off], b.off+1 + return v +} + +// AppendUint8 appends a single byte into the buffer. +func (b *Buffer) AppendUint8(v uint8) { + b.b = append(b.b, v) +} + +// ConsumeBool consumes a single byte from the buffer, and returns true if that byte is non-zero. +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeBool() bool { + return b.ConsumeUint8() != 0 +} + +// AppendBool appends a single bool into the buffer. +// It encodes it as a single byte, with false as 0, and true as 1. +func (b *Buffer) AppendBool(v bool) { + if v { + b.AppendUint8(1) + } else { + b.AppendUint8(0) + } +} + +// ConsumeUint16 consumes a single uint16 from the buffer, in network byte order (big-endian). +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeUint16() uint16 { + if b.Err != nil { + return 0 + } + + if b.Len() < 2 { + b.off = len(b.b) + b.Err = ErrShortPacket + return 0 + } + + v := binary.BigEndian.Uint16(b.b[b.off:]) + b.off += 2 + return v +} + +// AppendUint16 appends single uint16 into the buffer, in network byte order (big-endian). +func (b *Buffer) AppendUint16(v uint16) { + b.b = append(b.b, + byte(v>>8), + byte(v>>0), + ) +} + +// unmarshalUint32 is used internally to read the packet length. +// It is unsafe, and so not exported. +// Even within this package, its use should be avoided. +func unmarshalUint32(b []byte) uint32 { + return binary.BigEndian.Uint32(b[:4]) +} + +// ConsumeUint32 consumes a single uint32 from the buffer, in network byte order (big-endian). +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeUint32() uint32 { + if b.Err != nil { + return 0 + } + + if b.Len() < 4 { + b.off = len(b.b) + b.Err = ErrShortPacket + return 0 + } + + v := binary.BigEndian.Uint32(b.b[b.off:]) + b.off += 4 + return v +} + +// AppendUint32 appends a single uint32 into the buffer, in network byte order (big-endian). +func (b *Buffer) AppendUint32(v uint32) { + b.b = append(b.b, + byte(v>>24), + byte(v>>16), + byte(v>>8), + byte(v>>0), + ) +} + +// ConsumeCount consumes a single uint32 count from the buffer, in network byte order (big-endian) as an int. +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeCount() int { + return int(b.ConsumeUint32()) +} + +// AppendCount appends a single int length as a uint32 into the buffer, in network byte order (big-endian). +func (b *Buffer) AppendCount(v int) { + b.AppendUint32(uint32(v)) +} + +// ConsumeUint64 consumes a single uint64 from the buffer, in network byte order (big-endian). +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeUint64() uint64 { + if b.Err != nil { + return 0 + } + + if b.Len() < 8 { + b.off = len(b.b) + b.Err = ErrShortPacket + return 0 + } + + v := binary.BigEndian.Uint64(b.b[b.off:]) + b.off += 8 + return v +} + +// AppendUint64 appends a single uint64 into the buffer, in network byte order (big-endian). +func (b *Buffer) AppendUint64(v uint64) { + b.b = append(b.b, + byte(v>>56), + byte(v>>48), + byte(v>>40), + byte(v>>32), + byte(v>>24), + byte(v>>16), + byte(v>>8), + byte(v>>0), + ) +} + +// ConsumeInt64 consumes a single int64 from the buffer, in network byte order (big-endian) with two’s complement. +// If the buffer does not have enough data, it will set Err to ErrShortPacket. +func (b *Buffer) ConsumeInt64() int64 { + return int64(b.ConsumeUint64()) +} + +// AppendInt64 appends a single int64 into the buffer, in network byte order (big-endian) with two’s complement. +func (b *Buffer) AppendInt64(v int64) { + b.AppendUint64(uint64(v)) +} + +// ConsumeByteSlice consumes a single string of raw binary data from the buffer. +// A string is a uint32 length, followed by that number of raw bytes. +// If the buffer does not have enough data, or defines a length larger than available, it will set Err to ErrShortPacket. +// +// The returned slice aliases the buffer contents, and is valid only as long as the buffer is not reused +// (that is, only until the next call to Reset, PutLength, StartPacket, or UnmarshalBinary). +// +// In no case will any Consume calls return overlapping slice aliases, +// and Append calls are guaranteed to not disturb this slice alias. +func (b *Buffer) ConsumeByteSlice() []byte { + length := int(b.ConsumeUint32()) + if b.Err != nil { + return nil + } + + if b.Len() < length || length < 0 { + b.off = len(b.b) + b.Err = ErrShortPacket + return nil + } + + v := b.b[b.off:] + if len(v) > length || cap(v) > length { + v = v[:length:length] + } + b.off += int(length) + return v +} + +// ConsumeByteSliceCopy consumes a single string of raw binary data as a copy from the buffer. +// A string is a uint32 length, followed by that number of raw bytes. +// If the buffer does not have enough data, or defines a length larger than available, it will set Err to ErrShortPacket. +// +// The returned slice does not alias any buffer contents, +// and will therefore be valid even if the buffer is later reused. +// +// If hint has sufficient capacity to hold the data, it will be reused and overwritten, +// otherwise a new backing slice will be allocated and returned. +func (b *Buffer) ConsumeByteSliceCopy(hint []byte) []byte { + data := b.ConsumeByteSlice() + + if grow := len(data) - len(hint); grow > 0 { + hint = append(hint, make([]byte, grow)...) + } + + n := copy(hint, data) + hint = hint[:n] + return hint +} + +// AppendByteSlice appends a single string of raw binary data into the buffer. +// A string is a uint32 length, followed by that number of raw bytes. +func (b *Buffer) AppendByteSlice(v []byte) { + b.AppendUint32(uint32(len(v))) + b.b = append(b.b, v...) +} + +// ConsumeString consumes a single string of binary data from the buffer. +// A string is a uint32 length, followed by that number of raw bytes. +// If the buffer does not have enough data, or defines a length larger than available, it will set Err to ErrShortPacket. +// +// NOTE: Go implicitly assumes that strings contain UTF-8 encoded data. +// All caveats on using arbitrary binary data in Go strings applies. +func (b *Buffer) ConsumeString() string { + return string(b.ConsumeByteSlice()) +} + +// AppendString appends a single string of binary data into the buffer. +// A string is a uint32 length, followed by that number of raw bytes. +func (b *Buffer) AppendString(v string) { + b.AppendByteSlice([]byte(v)) +} + +// PutLength writes the given size into the first four bytes of the buffer in network byte order (big endian). +func (b *Buffer) PutLength(size int) { + if len(b.b) < 4 { + b.b = append(b.b, make([]byte, 4-len(b.b))...) + } + + binary.BigEndian.PutUint32(b.b, uint32(size)) +} + +// MarshalBinary returns a clone of the full internal buffer. +func (b *Buffer) MarshalBinary() ([]byte, error) { + clone := make([]byte, len(b.b)) + n := copy(clone, b.b) + return clone[:n], nil +} + +// UnmarshalBinary sets the internal buffer of b to be a clone of data, and zeros the internal offset. +func (b *Buffer) UnmarshalBinary(data []byte) error { + if grow := len(data) - len(b.b); grow > 0 { + b.b = append(b.b, make([]byte, grow)...) + } + + n := copy(b.b, data) + b.b = b.b[:n] + b.off = 0 + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extended_packets.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extended_packets.go new file mode 100644 index 0000000..f717425 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extended_packets.go @@ -0,0 +1,143 @@ +package sshfx + +import ( + "encoding" + "sync" +) + +// ExtendedData aliases the untyped interface composition of encoding.BinaryMarshaler and encoding.BinaryUnmarshaler. +type ExtendedData = interface { + encoding.BinaryMarshaler + encoding.BinaryUnmarshaler +} + +// ExtendedDataConstructor defines a function that returns a new(ArbitraryExtendedPacket). +type ExtendedDataConstructor func() ExtendedData + +var extendedPacketTypes = struct { + mu sync.RWMutex + constructors map[string]ExtendedDataConstructor +}{ + constructors: make(map[string]ExtendedDataConstructor), +} + +// RegisterExtendedPacketType defines a specific ExtendedDataConstructor for the given extension string. +func RegisterExtendedPacketType(extension string, constructor ExtendedDataConstructor) { + extendedPacketTypes.mu.Lock() + defer extendedPacketTypes.mu.Unlock() + + if _, exist := extendedPacketTypes.constructors[extension]; exist { + panic("encoding/ssh/filexfer: multiple registration of extended packet type " + extension) + } + + extendedPacketTypes.constructors[extension] = constructor +} + +func newExtendedPacket(extension string) ExtendedData { + extendedPacketTypes.mu.RLock() + defer extendedPacketTypes.mu.RUnlock() + + if f := extendedPacketTypes.constructors[extension]; f != nil { + return f() + } + + return new(Buffer) +} + +// ExtendedPacket defines the SSH_FXP_CLOSE packet. +type ExtendedPacket struct { + ExtendedRequest string + + Data ExtendedData +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *ExtendedPacket) Type() PacketType { + return PacketTypeExtended +} + +// MarshalPacket returns p as a two-part binary encoding of p. +// +// The Data is marshaled into binary, and returned as the payload. +func (p *ExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.ExtendedRequest) // string(extended-request) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeExtended, reqid) + buf.AppendString(p.ExtendedRequest) + + if p.Data != nil { + payload, err = p.Data.MarshalBinary() + if err != nil { + return nil, nil, err + } + } + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +// +// If p.Data is nil, and the extension has been registered, a new type will be made from the registration. +// If the extension has not been registered, then a new Buffer will be allocated. +// Then the request-specific-data will be unmarshaled from the rest of the buffer. +func (p *ExtendedPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + p.ExtendedRequest = buf.ConsumeString() + if buf.Err != nil { + return buf.Err + } + + if p.Data == nil { + p.Data = newExtendedPacket(p.ExtendedRequest) + } + + return p.Data.UnmarshalBinary(buf.Bytes()) +} + +// ExtendedReplyPacket defines the SSH_FXP_CLOSE packet. +type ExtendedReplyPacket struct { + Data ExtendedData +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *ExtendedReplyPacket) Type() PacketType { + return PacketTypeExtendedReply +} + +// MarshalPacket returns p as a two-part binary encoding of p. +// +// The Data is marshaled into binary, and returned as the payload. +func (p *ExtendedReplyPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + buf = NewMarshalBuffer(0) + } + + buf.StartPacket(PacketTypeExtendedReply, reqid) + + if p.Data != nil { + payload, err = p.Data.MarshalBinary() + if err != nil { + return nil, nil, err + } + } + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +// +// If p.Data is nil, and there is request-specific-data, +// then the request-specific-data will be wrapped in a Buffer and assigned to p.Data. +func (p *ExtendedReplyPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + if p.Data == nil { + p.Data = new(Buffer) + } + + return p.Data.UnmarshalBinary(buf.Bytes()) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extensions.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extensions.go new file mode 100644 index 0000000..c425780 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/extensions.go @@ -0,0 +1,43 @@ +package sshfx + +// ExtensionPair defines the extension-pair type defined in draft-ietf-secsh-filexfer-13. +// This type is backwards-compatible with how draft-ietf-secsh-filexfer-02 defines extensions. +// +// Defined in: https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-4.2 +type ExtensionPair struct { + Name string + Data string +} + +// Len returns the number of bytes e would marshal into. +func (e *ExtensionPair) Len() int { + return 4 + len(e.Name) + 4 + len(e.Data) +} + +// MarshalInto marshals e onto the end of the given Buffer. +func (e *ExtensionPair) MarshalInto(buf *Buffer) { + buf.AppendString(e.Name) + buf.AppendString(e.Data) +} + +// MarshalBinary returns e as the binary encoding of e. +func (e *ExtensionPair) MarshalBinary() ([]byte, error) { + buf := NewBuffer(make([]byte, 0, e.Len())) + e.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom unmarshals an ExtensionPair from the given Buffer into e. +func (e *ExtensionPair) UnmarshalFrom(buf *Buffer) (err error) { + *e = ExtensionPair{ + Name: buf.ConsumeString(), + Data: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the binary encoding of ExtensionPair into e. +func (e *ExtensionPair) UnmarshalBinary(data []byte) error { + return e.UnmarshalFrom(NewBuffer(data)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/filexfer.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/filexfer.go new file mode 100644 index 0000000..d300999 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/filexfer.go @@ -0,0 +1,54 @@ +// Package sshfx implements the wire encoding for secsh-filexfer as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt +package sshfx + +// PacketMarshaller narrowly defines packets that will only be transmitted. +// +// ExtendedPacket types will often only implement this interface, +// since decoding the whole packet body of an ExtendedPacket can only be done dependent on the ExtendedRequest field. +type PacketMarshaller interface { + // MarshalPacket is the primary intended way to encode a packet. + // The request-id for the packet is set from reqid. + // + // An optional buffer may be given in b. + // If the buffer has a minimum capacity, it shall be truncated and used to marshal the header into. + // The minimum capacity for the packet must be a constant expression, and should be at least 9. + // + // It shall return the main body of the encoded packet in header, + // and may optionally return an additional payload to be written immediately after the header. + // + // It shall encode in the first 4-bytes of the header the proper length of the rest of the header+payload. + MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) +} + +// Packet defines the behavior of a full generic SFTP packet. +// +// InitPacket, and VersionPacket are not generic SFTP packets, and instead implement (Un)MarshalBinary. +// +// ExtendedPacket types should not iplement this interface, +// since decoding the whole packet body of an ExtendedPacket can only be done dependent on the ExtendedRequest field. +type Packet interface { + PacketMarshaller + + // Type returns the SSH_FXP_xy value associated with the specific packet. + Type() PacketType + + // UnmarshalPacketBody decodes a packet body from the given Buffer. + // It is assumed that the common header values of the length, type and request-id have already been consumed. + // + // Implementations should not alias the given Buffer, + // instead they can consider prepopulating an internal buffer as a hint, + // and copying into that buffer if it has sufficient length. + UnmarshalPacketBody(buf *Buffer) error +} + +// ComposePacket converts returns from MarshalPacket into an equivalent call to MarshalBinary. +func ComposePacket(header, payload []byte, err error) ([]byte, error) { + return append(header, payload...), err +} + +// Default length values, +// Defined in draft-ietf-secsh-filexfer-02 section 3. +const ( + DefaultMaxPacketLength = 34000 + DefaultMaxDataLength = 32768 +) diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fx.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fx.go new file mode 100644 index 0000000..9abcbaf --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fx.go @@ -0,0 +1,147 @@ +package sshfx + +import ( + "fmt" +) + +// Status defines the SFTP error codes used in SSH_FXP_STATUS response packets. +type Status uint32 + +// Defines the various SSH_FX_* values. +const ( + // see draft-ietf-secsh-filexfer-02 + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-7 + StatusOK = Status(iota) + StatusEOF + StatusNoSuchFile + StatusPermissionDenied + StatusFailure + StatusBadMessage + StatusNoConnection + StatusConnectionLost + StatusOPUnsupported + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-03.txt#section-7 + StatusV4InvalidHandle + StatusV4NoSuchPath + StatusV4FileAlreadyExists + StatusV4WriteProtect + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-04.txt#section-7 + StatusV4NoMedia + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-05.txt#section-7 + StatusV5NoSpaceOnFilesystem + StatusV5QuotaExceeded + StatusV5UnknownPrincipal + StatusV5LockConflict + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-06.txt#section-8 + StatusV6DirNotEmpty + StatusV6NotADirectory + StatusV6InvalidFilename + StatusV6LinkLoop + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-07.txt#section-8 + StatusV6CannotDelete + StatusV6InvalidParameter + StatusV6FileIsADirectory + StatusV6ByteRangeLockConflict + StatusV6ByteRangeLockRefused + StatusV6DeletePending + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-08.txt#section-8.1 + StatusV6FileCorrupt + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-10.txt#section-9.1 + StatusV6OwnerInvalid + StatusV6GroupInvalid + + // https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.1 + StatusV6NoMatchingByteRangeLock +) + +func (s Status) Error() string { + return s.String() +} + +// Is returns true if the target is the same Status code, +// or target is a StatusPacket with the same Status code. +func (s Status) Is(target error) bool { + if target, ok := target.(*StatusPacket); ok { + return target.StatusCode == s + } + + return s == target +} + +func (s Status) String() string { + switch s { + case StatusOK: + return "SSH_FX_OK" + case StatusEOF: + return "SSH_FX_EOF" + case StatusNoSuchFile: + return "SSH_FX_NO_SUCH_FILE" + case StatusPermissionDenied: + return "SSH_FX_PERMISSION_DENIED" + case StatusFailure: + return "SSH_FX_FAILURE" + case StatusBadMessage: + return "SSH_FX_BAD_MESSAGE" + case StatusNoConnection: + return "SSH_FX_NO_CONNECTION" + case StatusConnectionLost: + return "SSH_FX_CONNECTION_LOST" + case StatusOPUnsupported: + return "SSH_FX_OP_UNSUPPORTED" + case StatusV4InvalidHandle: + return "SSH_FX_INVALID_HANDLE" + case StatusV4NoSuchPath: + return "SSH_FX_NO_SUCH_PATH" + case StatusV4FileAlreadyExists: + return "SSH_FX_FILE_ALREADY_EXISTS" + case StatusV4WriteProtect: + return "SSH_FX_WRITE_PROTECT" + case StatusV4NoMedia: + return "SSH_FX_NO_MEDIA" + case StatusV5NoSpaceOnFilesystem: + return "SSH_FX_NO_SPACE_ON_FILESYSTEM" + case StatusV5QuotaExceeded: + return "SSH_FX_QUOTA_EXCEEDED" + case StatusV5UnknownPrincipal: + return "SSH_FX_UNKNOWN_PRINCIPAL" + case StatusV5LockConflict: + return "SSH_FX_LOCK_CONFLICT" + case StatusV6DirNotEmpty: + return "SSH_FX_DIR_NOT_EMPTY" + case StatusV6NotADirectory: + return "SSH_FX_NOT_A_DIRECTORY" + case StatusV6InvalidFilename: + return "SSH_FX_INVALID_FILENAME" + case StatusV6LinkLoop: + return "SSH_FX_LINK_LOOP" + case StatusV6CannotDelete: + return "SSH_FX_CANNOT_DELETE" + case StatusV6InvalidParameter: + return "SSH_FX_INVALID_PARAMETER" + case StatusV6FileIsADirectory: + return "SSH_FX_FILE_IS_A_DIRECTORY" + case StatusV6ByteRangeLockConflict: + return "SSH_FX_BYTE_RANGE_LOCK_CONFLICT" + case StatusV6ByteRangeLockRefused: + return "SSH_FX_BYTE_RANGE_LOCK_REFUSED" + case StatusV6DeletePending: + return "SSH_FX_DELETE_PENDING" + case StatusV6FileCorrupt: + return "SSH_FX_FILE_CORRUPT" + case StatusV6OwnerInvalid: + return "SSH_FX_OWNER_INVALID" + case StatusV6GroupInvalid: + return "SSH_FX_GROUP_INVALID" + case StatusV6NoMatchingByteRangeLock: + return "SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK" + default: + return fmt.Sprintf("SSH_FX_UNKNOWN(%d)", s) + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fxp.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fxp.go new file mode 100644 index 0000000..7808002 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/fxp.go @@ -0,0 +1,169 @@ +package sshfx + +import ( + "fmt" +) + +// PacketType defines the various SFTP packet types. +type PacketType uint8 + +// Request packet types. +const ( + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3 + PacketTypeInit = PacketType(iota + 1) + PacketTypeVersion + PacketTypeOpen + PacketTypeClose + PacketTypeRead + PacketTypeWrite + PacketTypeLStat + PacketTypeFStat + PacketTypeSetstat + PacketTypeFSetstat + PacketTypeOpenDir + PacketTypeReadDir + PacketTypeRemove + PacketTypeMkdir + PacketTypeRmdir + PacketTypeRealPath + PacketTypeStat + PacketTypeRename + PacketTypeReadLink + PacketTypeSymlink + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-07.txt#section-3.3 + PacketTypeV6Link + + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-08.txt#section-3.3 + PacketTypeV6Block + PacketTypeV6Unblock +) + +// Response packet types. +const ( + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3 + PacketTypeStatus = PacketType(iota + 101) + PacketTypeHandle + PacketTypeData + PacketTypeName + PacketTypeAttrs +) + +// Extended packet types. +const ( + // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3 + PacketTypeExtended = PacketType(iota + 200) + PacketTypeExtendedReply +) + +func (f PacketType) String() string { + switch f { + case PacketTypeInit: + return "SSH_FXP_INIT" + case PacketTypeVersion: + return "SSH_FXP_VERSION" + case PacketTypeOpen: + return "SSH_FXP_OPEN" + case PacketTypeClose: + return "SSH_FXP_CLOSE" + case PacketTypeRead: + return "SSH_FXP_READ" + case PacketTypeWrite: + return "SSH_FXP_WRITE" + case PacketTypeLStat: + return "SSH_FXP_LSTAT" + case PacketTypeFStat: + return "SSH_FXP_FSTAT" + case PacketTypeSetstat: + return "SSH_FXP_SETSTAT" + case PacketTypeFSetstat: + return "SSH_FXP_FSETSTAT" + case PacketTypeOpenDir: + return "SSH_FXP_OPENDIR" + case PacketTypeReadDir: + return "SSH_FXP_READDIR" + case PacketTypeRemove: + return "SSH_FXP_REMOVE" + case PacketTypeMkdir: + return "SSH_FXP_MKDIR" + case PacketTypeRmdir: + return "SSH_FXP_RMDIR" + case PacketTypeRealPath: + return "SSH_FXP_REALPATH" + case PacketTypeStat: + return "SSH_FXP_STAT" + case PacketTypeRename: + return "SSH_FXP_RENAME" + case PacketTypeReadLink: + return "SSH_FXP_READLINK" + case PacketTypeSymlink: + return "SSH_FXP_SYMLINK" + case PacketTypeV6Link: + return "SSH_FXP_LINK" + case PacketTypeV6Block: + return "SSH_FXP_BLOCK" + case PacketTypeV6Unblock: + return "SSH_FXP_UNBLOCK" + case PacketTypeStatus: + return "SSH_FXP_STATUS" + case PacketTypeHandle: + return "SSH_FXP_HANDLE" + case PacketTypeData: + return "SSH_FXP_DATA" + case PacketTypeName: + return "SSH_FXP_NAME" + case PacketTypeAttrs: + return "SSH_FXP_ATTRS" + case PacketTypeExtended: + return "SSH_FXP_EXTENDED" + case PacketTypeExtendedReply: + return "SSH_FXP_EXTENDED_REPLY" + default: + return fmt.Sprintf("SSH_FXP_UNKNOWN(%d)", f) + } +} + +func newPacketFromType(typ PacketType) (Packet, error) { + switch typ { + case PacketTypeOpen: + return new(OpenPacket), nil + case PacketTypeClose: + return new(ClosePacket), nil + case PacketTypeRead: + return new(ReadPacket), nil + case PacketTypeWrite: + return new(WritePacket), nil + case PacketTypeLStat: + return new(LStatPacket), nil + case PacketTypeFStat: + return new(FStatPacket), nil + case PacketTypeSetstat: + return new(SetstatPacket), nil + case PacketTypeFSetstat: + return new(FSetstatPacket), nil + case PacketTypeOpenDir: + return new(OpenDirPacket), nil + case PacketTypeReadDir: + return new(ReadDirPacket), nil + case PacketTypeRemove: + return new(RemovePacket), nil + case PacketTypeMkdir: + return new(MkdirPacket), nil + case PacketTypeRmdir: + return new(RmdirPacket), nil + case PacketTypeRealPath: + return new(RealPathPacket), nil + case PacketTypeStat: + return new(StatPacket), nil + case PacketTypeRename: + return new(RenamePacket), nil + case PacketTypeReadLink: + return new(ReadLinkPacket), nil + case PacketTypeSymlink: + return new(SymlinkPacket), nil + case PacketTypeExtended: + return new(ExtendedPacket), nil + default: + return nil, fmt.Errorf("unexpected request packet type: %v", typ) + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/handle_packets.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/handle_packets.go new file mode 100644 index 0000000..44594ac --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/handle_packets.go @@ -0,0 +1,230 @@ +package sshfx + +// ClosePacket defines the SSH_FXP_CLOSE packet. +type ClosePacket struct { + Handle string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *ClosePacket) Type() PacketType { + return PacketTypeClose +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *ClosePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Handle) // string(handle) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeClose, reqid) + buf.AppendString(p.Handle) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *ClosePacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = ClosePacket{ + Handle: buf.ConsumeString(), + } + + return buf.Err +} + +// ReadPacket defines the SSH_FXP_READ packet. +type ReadPacket struct { + Handle string + Offset uint64 + Length uint32 +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *ReadPacket) Type() PacketType { + return PacketTypeRead +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *ReadPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + // string(handle) + uint64(offset) + uint32(len) + size := 4 + len(p.Handle) + 8 + 4 + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeRead, reqid) + buf.AppendString(p.Handle) + buf.AppendUint64(p.Offset) + buf.AppendUint32(p.Length) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *ReadPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = ReadPacket{ + Handle: buf.ConsumeString(), + Offset: buf.ConsumeUint64(), + Length: buf.ConsumeUint32(), + } + + return buf.Err +} + +// WritePacket defines the SSH_FXP_WRITE packet. +type WritePacket struct { + Handle string + Offset uint64 + Data []byte +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *WritePacket) Type() PacketType { + return PacketTypeWrite +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *WritePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + // string(handle) + uint64(offset) + uint32(len(data)); data content in payload + size := 4 + len(p.Handle) + 8 + 4 + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeWrite, reqid) + buf.AppendString(p.Handle) + buf.AppendUint64(p.Offset) + buf.AppendUint32(uint32(len(p.Data))) + + return buf.Packet(p.Data) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +// +// If p.Data is already populated, and of sufficient length to hold the data, +// then this will copy the data into that byte slice. +// +// If p.Data has a length insufficient to hold the data, +// then this will make a new slice of sufficient length, and copy the data into that. +// +// This means this _does not_ alias any of the data buffer that is passed in. +func (p *WritePacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = WritePacket{ + Handle: buf.ConsumeString(), + Offset: buf.ConsumeUint64(), + Data: buf.ConsumeByteSliceCopy(p.Data), + } + + return buf.Err +} + +// FStatPacket defines the SSH_FXP_FSTAT packet. +type FStatPacket struct { + Handle string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *FStatPacket) Type() PacketType { + return PacketTypeFStat +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *FStatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Handle) // string(handle) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeFStat, reqid) + buf.AppendString(p.Handle) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *FStatPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = FStatPacket{ + Handle: buf.ConsumeString(), + } + + return buf.Err +} + +// FSetstatPacket defines the SSH_FXP_FSETSTAT packet. +type FSetstatPacket struct { + Handle string + Attrs Attributes +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *FSetstatPacket) Type() PacketType { + return PacketTypeFSetstat +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *FSetstatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Handle) + p.Attrs.Len() // string(handle) + ATTRS(attrs) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeFSetstat, reqid) + buf.AppendString(p.Handle) + + p.Attrs.MarshalInto(buf) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *FSetstatPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = FSetstatPacket{ + Handle: buf.ConsumeString(), + } + + return p.Attrs.UnmarshalFrom(buf) +} + +// ReadDirPacket defines the SSH_FXP_READDIR packet. +type ReadDirPacket struct { + Handle string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *ReadDirPacket) Type() PacketType { + return PacketTypeReadDir +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *ReadDirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Handle) // string(handle) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeReadDir, reqid) + buf.AppendString(p.Handle) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *ReadDirPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = ReadDirPacket{ + Handle: buf.ConsumeString(), + } + + return buf.Err +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/init_packets.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/init_packets.go new file mode 100644 index 0000000..c553ee2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/init_packets.go @@ -0,0 +1,99 @@ +package sshfx + +// InitPacket defines the SSH_FXP_INIT packet. +type InitPacket struct { + Version uint32 + Extensions []*ExtensionPair +} + +// MarshalBinary returns p as the binary encoding of p. +func (p *InitPacket) MarshalBinary() ([]byte, error) { + size := 1 + 4 // byte(type) + uint32(version) + + for _, ext := range p.Extensions { + size += ext.Len() + } + + b := NewBuffer(make([]byte, 4, 4+size)) + b.AppendUint8(uint8(PacketTypeInit)) + b.AppendUint32(p.Version) + + for _, ext := range p.Extensions { + ext.MarshalInto(b) + } + + b.PutLength(size) + + return b.Bytes(), nil +} + +// UnmarshalBinary unmarshals a full raw packet out of the given data. +// It is assumed that the uint32(length) has already been consumed to receive the data. +// It is also assumed that the uint8(type) has already been consumed to which packet to unmarshal into. +func (p *InitPacket) UnmarshalBinary(data []byte) (err error) { + buf := NewBuffer(data) + + *p = InitPacket{ + Version: buf.ConsumeUint32(), + } + + for buf.Len() > 0 { + var ext ExtensionPair + if err := ext.UnmarshalFrom(buf); err != nil { + return err + } + + p.Extensions = append(p.Extensions, &ext) + } + + return buf.Err +} + +// VersionPacket defines the SSH_FXP_VERSION packet. +type VersionPacket struct { + Version uint32 + Extensions []*ExtensionPair +} + +// MarshalBinary returns p as the binary encoding of p. +func (p *VersionPacket) MarshalBinary() ([]byte, error) { + size := 1 + 4 // byte(type) + uint32(version) + + for _, ext := range p.Extensions { + size += ext.Len() + } + + b := NewBuffer(make([]byte, 4, 4+size)) + b.AppendUint8(uint8(PacketTypeVersion)) + b.AppendUint32(p.Version) + + for _, ext := range p.Extensions { + ext.MarshalInto(b) + } + + b.PutLength(size) + + return b.Bytes(), nil +} + +// UnmarshalBinary unmarshals a full raw packet out of the given data. +// It is assumed that the uint32(length) has already been consumed to receive the data. +// It is also assumed that the uint8(type) has already been consumed to which packet to unmarshal into. +func (p *VersionPacket) UnmarshalBinary(data []byte) (err error) { + buf := NewBuffer(data) + + *p = VersionPacket{ + Version: buf.ConsumeUint32(), + } + + for buf.Len() > 0 { + var ext ExtensionPair + if err := ext.UnmarshalFrom(buf); err != nil { + return err + } + + p.Extensions = append(p.Extensions, &ext) + } + + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/open_packets.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/open_packets.go new file mode 100644 index 0000000..896ba16 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/open_packets.go @@ -0,0 +1,86 @@ +package sshfx + +// SSH_FXF_* flags. +const ( + FlagRead = 1 << iota // SSH_FXF_READ + FlagWrite // SSH_FXF_WRITE + FlagAppend // SSH_FXF_APPEND + FlagCreate // SSH_FXF_CREAT + FlagTruncate // SSH_FXF_TRUNC + FlagExclusive // SSH_FXF_EXCL +) + +// OpenPacket defines the SSH_FXP_OPEN packet. +type OpenPacket struct { + Filename string + PFlags uint32 + Attrs Attributes +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *OpenPacket) Type() PacketType { + return PacketTypeOpen +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *OpenPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + // string(filename) + uint32(pflags) + ATTRS(attrs) + size := 4 + len(p.Filename) + 4 + p.Attrs.Len() + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeOpen, reqid) + buf.AppendString(p.Filename) + buf.AppendUint32(p.PFlags) + + p.Attrs.MarshalInto(buf) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *OpenPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = OpenPacket{ + Filename: buf.ConsumeString(), + PFlags: buf.ConsumeUint32(), + } + + return p.Attrs.UnmarshalFrom(buf) +} + +// OpenDirPacket defines the SSH_FXP_OPENDIR packet. +type OpenDirPacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *OpenDirPacket) Type() PacketType { + return PacketTypeOpenDir +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *OpenDirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeOpenDir, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *OpenDirPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = OpenDirPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/fsync.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/fsync.go new file mode 100644 index 0000000..708a4ba --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/fsync.go @@ -0,0 +1,73 @@ +package openssh + +import ( + sshfx "github.com/pkg/sftp/internal/encoding/ssh/filexfer" +) + +const extensionFSync = "fsync@openssh.com" + +// RegisterExtensionFSync registers the "fsync@openssh.com" extended packet with the encoding/ssh/filexfer package. +func RegisterExtensionFSync() { + sshfx.RegisterExtendedPacketType(extensionFSync, func() sshfx.ExtendedData { + return new(FSyncExtendedPacket) + }) +} + +// ExtensionFSync returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket. +func ExtensionFSync() *sshfx.ExtensionPair { + return &sshfx.ExtensionPair{ + Name: extensionFSync, + Data: "1", + } +} + +// FSyncExtendedPacket defines the fsync@openssh.com extend packet. +type FSyncExtendedPacket struct { + Handle string +} + +// Type returns the SSH_FXP_EXTENDED packet type. +func (ep *FSyncExtendedPacket) Type() sshfx.PacketType { + return sshfx.PacketTypeExtended +} + +// MarshalPacket returns ep as a two-part binary encoding of the full extended packet. +func (ep *FSyncExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + p := &sshfx.ExtendedPacket{ + ExtendedRequest: extensionFSync, + + Data: ep, + } + return p.MarshalPacket(reqid, b) +} + +// MarshalInto encodes ep into the binary encoding of the fsync@openssh.com extended packet-specific data. +func (ep *FSyncExtendedPacket) MarshalInto(buf *sshfx.Buffer) { + buf.AppendString(ep.Handle) +} + +// MarshalBinary encodes ep into the binary encoding of the fsync@openssh.com extended packet-specific data. +// +// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet. +func (ep *FSyncExtendedPacket) MarshalBinary() ([]byte, error) { + // string(handle) + size := 4 + len(ep.Handle) + + buf := sshfx.NewBuffer(make([]byte, 0, size)) + ep.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom decodes the fsync@openssh.com extended packet-specific data from buf. +func (ep *FSyncExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) { + *ep = FSyncExtendedPacket{ + Handle: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the fsync@openssh.com extended packet-specific data into ep. +func (ep *FSyncExtendedPacket) UnmarshalBinary(data []byte) (err error) { + return ep.UnmarshalFrom(sshfx.NewBuffer(data)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/hardlink.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/hardlink.go new file mode 100644 index 0000000..f48d25a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/hardlink.go @@ -0,0 +1,76 @@ +package openssh + +import ( + sshfx "github.com/pkg/sftp/internal/encoding/ssh/filexfer" +) + +const extensionHardlink = "hardlink@openssh.com" + +// RegisterExtensionHardlink registers the "hardlink@openssh.com" extended packet with the encoding/ssh/filexfer package. +func RegisterExtensionHardlink() { + sshfx.RegisterExtendedPacketType(extensionHardlink, func() sshfx.ExtendedData { + return new(HardlinkExtendedPacket) + }) +} + +// ExtensionHardlink returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket. +func ExtensionHardlink() *sshfx.ExtensionPair { + return &sshfx.ExtensionPair{ + Name: extensionHardlink, + Data: "1", + } +} + +// HardlinkExtendedPacket defines the hardlink@openssh.com extend packet. +type HardlinkExtendedPacket struct { + OldPath string + NewPath string +} + +// Type returns the SSH_FXP_EXTENDED packet type. +func (ep *HardlinkExtendedPacket) Type() sshfx.PacketType { + return sshfx.PacketTypeExtended +} + +// MarshalPacket returns ep as a two-part binary encoding of the full extended packet. +func (ep *HardlinkExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + p := &sshfx.ExtendedPacket{ + ExtendedRequest: extensionHardlink, + + Data: ep, + } + return p.MarshalPacket(reqid, b) +} + +// MarshalInto encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data. +func (ep *HardlinkExtendedPacket) MarshalInto(buf *sshfx.Buffer) { + buf.AppendString(ep.OldPath) + buf.AppendString(ep.NewPath) +} + +// MarshalBinary encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data. +// +// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet. +func (ep *HardlinkExtendedPacket) MarshalBinary() ([]byte, error) { + // string(oldpath) + string(newpath) + size := 4 + len(ep.OldPath) + 4 + len(ep.NewPath) + + buf := sshfx.NewBuffer(make([]byte, 0, size)) + ep.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom decodes the hardlink@openssh.com extended packet-specific data from buf. +func (ep *HardlinkExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) { + *ep = HardlinkExtendedPacket{ + OldPath: buf.ConsumeString(), + NewPath: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the hardlink@openssh.com extended packet-specific data into ep. +func (ep *HardlinkExtendedPacket) UnmarshalBinary(data []byte) (err error) { + return ep.UnmarshalFrom(sshfx.NewBuffer(data)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/openssh.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/openssh.go new file mode 100644 index 0000000..f93ff17 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/openssh.go @@ -0,0 +1,2 @@ +// Package openssh implements the openssh secsh-filexfer extensions as described in https://github.com/openssh/openssh-portable/blob/master/PROTOCOL +package openssh diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/posix-rename.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/posix-rename.go new file mode 100644 index 0000000..5166489 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/posix-rename.go @@ -0,0 +1,76 @@ +package openssh + +import ( + sshfx "github.com/pkg/sftp/internal/encoding/ssh/filexfer" +) + +const extensionPOSIXRename = "posix-rename@openssh.com" + +// RegisterExtensionPOSIXRename registers the "posix-rename@openssh.com" extended packet with the encoding/ssh/filexfer package. +func RegisterExtensionPOSIXRename() { + sshfx.RegisterExtendedPacketType(extensionPOSIXRename, func() sshfx.ExtendedData { + return new(POSIXRenameExtendedPacket) + }) +} + +// ExtensionPOSIXRename returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket. +func ExtensionPOSIXRename() *sshfx.ExtensionPair { + return &sshfx.ExtensionPair{ + Name: extensionPOSIXRename, + Data: "1", + } +} + +// POSIXRenameExtendedPacket defines the posix-rename@openssh.com extend packet. +type POSIXRenameExtendedPacket struct { + OldPath string + NewPath string +} + +// Type returns the SSH_FXP_EXTENDED packet type. +func (ep *POSIXRenameExtendedPacket) Type() sshfx.PacketType { + return sshfx.PacketTypeExtended +} + +// MarshalPacket returns ep as a two-part binary encoding of the full extended packet. +func (ep *POSIXRenameExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + p := &sshfx.ExtendedPacket{ + ExtendedRequest: extensionPOSIXRename, + + Data: ep, + } + return p.MarshalPacket(reqid, b) +} + +// MarshalInto encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data. +func (ep *POSIXRenameExtendedPacket) MarshalInto(buf *sshfx.Buffer) { + buf.AppendString(ep.OldPath) + buf.AppendString(ep.NewPath) +} + +// MarshalBinary encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data. +// +// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet. +func (ep *POSIXRenameExtendedPacket) MarshalBinary() ([]byte, error) { + // string(oldpath) + string(newpath) + size := 4 + len(ep.OldPath) + 4 + len(ep.NewPath) + + buf := sshfx.NewBuffer(make([]byte, 0, size)) + ep.MarshalInto(buf) + return buf.Bytes(), nil +} + +// UnmarshalFrom decodes the hardlink@openssh.com extended packet-specific data from buf. +func (ep *POSIXRenameExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) { + *ep = POSIXRenameExtendedPacket{ + OldPath: buf.ConsumeString(), + NewPath: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the hardlink@openssh.com extended packet-specific data into ep. +func (ep *POSIXRenameExtendedPacket) UnmarshalBinary(data []byte) (err error) { + return ep.UnmarshalFrom(sshfx.NewBuffer(data)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/statvfs.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/statvfs.go new file mode 100644 index 0000000..51029ca --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh/statvfs.go @@ -0,0 +1,236 @@ +package openssh + +import ( + sshfx "github.com/pkg/sftp/internal/encoding/ssh/filexfer" +) + +const extensionStatVFS = "statvfs@openssh.com" + +// RegisterExtensionStatVFS registers the "statvfs@openssh.com" extended packet with the encoding/ssh/filexfer package. +func RegisterExtensionStatVFS() { + sshfx.RegisterExtendedPacketType(extensionStatVFS, func() sshfx.ExtendedData { + return new(StatVFSExtendedPacket) + }) +} + +// ExtensionStatVFS returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket. +func ExtensionStatVFS() *sshfx.ExtensionPair { + return &sshfx.ExtensionPair{ + Name: extensionStatVFS, + Data: "2", + } +} + +// StatVFSExtendedPacket defines the statvfs@openssh.com extend packet. +type StatVFSExtendedPacket struct { + Path string +} + +// Type returns the SSH_FXP_EXTENDED packet type. +func (ep *StatVFSExtendedPacket) Type() sshfx.PacketType { + return sshfx.PacketTypeExtended +} + +// MarshalPacket returns ep as a two-part binary encoding of the full extended packet. +func (ep *StatVFSExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + p := &sshfx.ExtendedPacket{ + ExtendedRequest: extensionStatVFS, + + Data: ep, + } + return p.MarshalPacket(reqid, b) +} + +// MarshalInto encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data. +func (ep *StatVFSExtendedPacket) MarshalInto(buf *sshfx.Buffer) { + buf.AppendString(ep.Path) +} + +// MarshalBinary encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data. +// +// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet. +func (ep *StatVFSExtendedPacket) MarshalBinary() ([]byte, error) { + size := 4 + len(ep.Path) // string(path) + + buf := sshfx.NewBuffer(make([]byte, 0, size)) + + ep.MarshalInto(buf) + + return buf.Bytes(), nil +} + +// UnmarshalFrom decodes the statvfs@openssh.com extended packet-specific data into ep. +func (ep *StatVFSExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) { + *ep = StatVFSExtendedPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the statvfs@openssh.com extended packet-specific data into ep. +func (ep *StatVFSExtendedPacket) UnmarshalBinary(data []byte) (err error) { + return ep.UnmarshalFrom(sshfx.NewBuffer(data)) +} + +const extensionFStatVFS = "fstatvfs@openssh.com" + +// RegisterExtensionFStatVFS registers the "fstatvfs@openssh.com" extended packet with the encoding/ssh/filexfer package. +func RegisterExtensionFStatVFS() { + sshfx.RegisterExtendedPacketType(extensionFStatVFS, func() sshfx.ExtendedData { + return new(FStatVFSExtendedPacket) + }) +} + +// ExtensionFStatVFS returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket. +func ExtensionFStatVFS() *sshfx.ExtensionPair { + return &sshfx.ExtensionPair{ + Name: extensionFStatVFS, + Data: "2", + } +} + +// FStatVFSExtendedPacket defines the fstatvfs@openssh.com extend packet. +type FStatVFSExtendedPacket struct { + Path string +} + +// Type returns the SSH_FXP_EXTENDED packet type. +func (ep *FStatVFSExtendedPacket) Type() sshfx.PacketType { + return sshfx.PacketTypeExtended +} + +// MarshalPacket returns ep as a two-part binary encoding of the full extended packet. +func (ep *FStatVFSExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + p := &sshfx.ExtendedPacket{ + ExtendedRequest: extensionFStatVFS, + + Data: ep, + } + return p.MarshalPacket(reqid, b) +} + +// MarshalInto encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data. +func (ep *FStatVFSExtendedPacket) MarshalInto(buf *sshfx.Buffer) { + buf.AppendString(ep.Path) +} + +// MarshalBinary encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data. +// +// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet. +func (ep *FStatVFSExtendedPacket) MarshalBinary() ([]byte, error) { + size := 4 + len(ep.Path) // string(path) + + buf := sshfx.NewBuffer(make([]byte, 0, size)) + + ep.MarshalInto(buf) + + return buf.Bytes(), nil +} + +// UnmarshalFrom decodes the statvfs@openssh.com extended packet-specific data into ep. +func (ep *FStatVFSExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) { + *ep = FStatVFSExtendedPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the statvfs@openssh.com extended packet-specific data into ep. +func (ep *FStatVFSExtendedPacket) UnmarshalBinary(data []byte) (err error) { + return ep.UnmarshalFrom(sshfx.NewBuffer(data)) +} + +// The values for the MountFlags field. +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL +const ( + MountFlagsReadOnly = 0x1 // SSH_FXE_STATVFS_ST_RDONLY + MountFlagsNoSUID = 0x2 // SSH_FXE_STATVFS_ST_NOSUID +) + +// StatVFSExtendedReplyPacket defines the extended reply packet for statvfs@openssh.com and fstatvfs@openssh.com requests. +type StatVFSExtendedReplyPacket struct { + BlockSize uint64 /* f_bsize: file system block size */ + FragmentSize uint64 /* f_frsize: fundamental fs block size / fagment size */ + Blocks uint64 /* f_blocks: number of blocks (unit f_frsize) */ + BlocksFree uint64 /* f_bfree: free blocks in filesystem */ + BlocksAvail uint64 /* f_bavail: free blocks for non-root */ + Files uint64 /* f_files: total file inodes */ + FilesFree uint64 /* f_ffree: free file inodes */ + FilesAvail uint64 /* f_favail: free file inodes for to non-root */ + FilesystemID uint64 /* f_fsid: file system id */ + MountFlags uint64 /* f_flag: bit mask of mount flag values */ + MaxNameLength uint64 /* f_namemax: maximum filename length */ +} + +// Type returns the SSH_FXP_EXTENDED_REPLY packet type. +func (ep *StatVFSExtendedReplyPacket) Type() sshfx.PacketType { + return sshfx.PacketTypeExtendedReply +} + +// MarshalPacket returns ep as a two-part binary encoding of the full extended reply packet. +func (ep *StatVFSExtendedReplyPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + p := &sshfx.ExtendedReplyPacket{ + Data: ep, + } + return p.MarshalPacket(reqid, b) +} + +// UnmarshalPacketBody returns ep as a two-part binary encoding of the full extended reply packet. +func (ep *StatVFSExtendedReplyPacket) UnmarshalPacketBody(buf *sshfx.Buffer) (err error) { + p := &sshfx.ExtendedReplyPacket{ + Data: ep, + } + return p.UnmarshalPacketBody(buf) +} + +// MarshalInto encodes ep into the binary encoding of the (f)statvfs@openssh.com extended reply packet-specific data. +func (ep *StatVFSExtendedReplyPacket) MarshalInto(buf *sshfx.Buffer) { + buf.AppendUint64(ep.BlockSize) + buf.AppendUint64(ep.FragmentSize) + buf.AppendUint64(ep.Blocks) + buf.AppendUint64(ep.BlocksFree) + buf.AppendUint64(ep.BlocksAvail) + buf.AppendUint64(ep.Files) + buf.AppendUint64(ep.FilesFree) + buf.AppendUint64(ep.FilesAvail) + buf.AppendUint64(ep.FilesystemID) + buf.AppendUint64(ep.MountFlags) + buf.AppendUint64(ep.MaxNameLength) +} + +// MarshalBinary encodes ep into the binary encoding of the (f)statvfs@openssh.com extended reply packet-specific data. +// +// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended reply packet. +func (ep *StatVFSExtendedReplyPacket) MarshalBinary() ([]byte, error) { + size := 11 * 8 // 11 × uint64(various) + + b := sshfx.NewBuffer(make([]byte, 0, size)) + ep.MarshalInto(b) + return b.Bytes(), nil +} + +// UnmarshalFrom decodes the fstatvfs@openssh.com extended reply packet-specific data into ep. +func (ep *StatVFSExtendedReplyPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) { + *ep = StatVFSExtendedReplyPacket{ + BlockSize: buf.ConsumeUint64(), + FragmentSize: buf.ConsumeUint64(), + Blocks: buf.ConsumeUint64(), + BlocksFree: buf.ConsumeUint64(), + BlocksAvail: buf.ConsumeUint64(), + Files: buf.ConsumeUint64(), + FilesFree: buf.ConsumeUint64(), + FilesAvail: buf.ConsumeUint64(), + FilesystemID: buf.ConsumeUint64(), + MountFlags: buf.ConsumeUint64(), + MaxNameLength: buf.ConsumeUint64(), + } + + return buf.Err +} + +// UnmarshalBinary decodes the fstatvfs@openssh.com extended reply packet-specific data into ep. +func (ep *StatVFSExtendedReplyPacket) UnmarshalBinary(data []byte) (err error) { + return ep.UnmarshalFrom(sshfx.NewBuffer(data)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/packets.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/packets.go new file mode 100644 index 0000000..fdf65d0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/packets.go @@ -0,0 +1,273 @@ +package sshfx + +import ( + "errors" + "io" +) + +// smallBufferSize is an initial allocation minimal capacity. +const smallBufferSize = 64 + +// RawPacket implements the general packet format from draft-ietf-secsh-filexfer-02 +// +// RawPacket is intended for use in clients receiving responses, +// where a response will be expected to be of a limited number of types, +// and unmarshaling unknown/unexpected response packets is unnecessary. +// +// For servers expecting to receive arbitrary request packet types, +// use RequestPacket. +// +// Defined in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3 +type RawPacket struct { + PacketType PacketType + RequestID uint32 + + Data Buffer +} + +// Type returns the Type field defining the SSH_FXP_xy type for this packet. +func (p *RawPacket) Type() PacketType { + return p.PacketType +} + +// Reset clears the pointers and reference-semantic variables of RawPacket, +// releasing underlying resources, and making them and the RawPacket suitable to be reused, +// so long as no other references have been kept. +func (p *RawPacket) Reset() { + p.Data = Buffer{} +} + +// MarshalPacket returns p as a two-part binary encoding of p. +// +// The internal p.RequestID is overridden by the reqid argument. +func (p *RawPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + buf = NewMarshalBuffer(0) + } + + buf.StartPacket(p.PacketType, reqid) + + return buf.Packet(p.Data.Bytes()) +} + +// MarshalBinary returns p as the binary encoding of p. +// +// This is a convenience implementation primarily intended for tests, +// because it is inefficient with allocations. +func (p *RawPacket) MarshalBinary() ([]byte, error) { + return ComposePacket(p.MarshalPacket(p.RequestID, nil)) +} + +// UnmarshalFrom decodes a RawPacket from the given Buffer into p. +// +// The Data field will alias the passed in Buffer, +// so the buffer passed in should not be reused before RawPacket.Reset(). +func (p *RawPacket) UnmarshalFrom(buf *Buffer) error { + *p = RawPacket{ + PacketType: PacketType(buf.ConsumeUint8()), + RequestID: buf.ConsumeUint32(), + } + + p.Data = *buf + + return buf.Err +} + +// UnmarshalBinary decodes a full raw packet out of the given data. +// It is assumed that the uint32(length) has already been consumed to receive the data. +// +// This is a convenience implementation primarily intended for tests, +// because this must clone the given data byte slice, +// as Data is not allowed to alias any part of the data byte slice. +func (p *RawPacket) UnmarshalBinary(data []byte) error { + clone := make([]byte, len(data)) + n := copy(clone, data) + return p.UnmarshalFrom(NewBuffer(clone[:n])) +} + +// readPacket reads a uint32 length-prefixed binary data packet from r. +// using the given byte slice as a backing array. +// +// If the packet length read from r is bigger than maxPacketLength, +// or greater than math.MaxInt32 on a 32-bit implementation, +// then a `ErrLongPacket` error will be returned. +// +// If the given byte slice is insufficient to hold the packet, +// then it will be extended to fill the packet size. +func readPacket(r io.Reader, b []byte, maxPacketLength uint32) ([]byte, error) { + if cap(b) < 4 { + // We will need allocate our own buffer just for reading the packet length. + + // However, we don’t really want to allocate an extremely narrow buffer (4-bytes), + // and cause unnecessary allocation churn from both length reads and small packet reads, + // so we use smallBufferSize from the bytes package as a reasonable guess. + + // But if callers really do want to force narrow throw-away allocation of every packet body, + // they can do so with a buffer of capacity 4. + b = make([]byte, smallBufferSize) + } + + if _, err := io.ReadFull(r, b[:4]); err != nil { + return nil, err + } + + length := unmarshalUint32(b) + if int(length) < 5 { + // Must have at least uint8(type) and uint32(request-id) + + if int(length) < 0 { + // Only possible when strconv.IntSize == 32, + // the packet length is longer than math.MaxInt32, + // and thus longer than any possible slice. + return nil, ErrLongPacket + } + + return nil, ErrShortPacket + } + if length > maxPacketLength { + return nil, ErrLongPacket + } + + if int(length) > cap(b) { + // We know int(length) must be positive, because of tests above. + b = make([]byte, length) + } + + n, err := io.ReadFull(r, b[:length]) + return b[:n], err +} + +// ReadFrom provides a simple functional packet reader, +// using the given byte slice as a backing array. +// +// To protect against potential denial of service attacks, +// if the read packet length is longer than maxPacketLength, +// then no packet data will be read, and ErrLongPacket will be returned. +// (On 32-bit int architectures, all packets >= 2^31 in length +// will return ErrLongPacket regardless of maxPacketLength.) +// +// If the read packet length is longer than cap(b), +// then a throw-away slice will allocated to meet the exact packet length. +// This can be used to limit the length of reused buffers, +// while still allowing reception of occasional large packets. +// +// The Data field may alias the passed in byte slice, +// so the byte slice passed in should not be reused before RawPacket.Reset(). +func (p *RawPacket) ReadFrom(r io.Reader, b []byte, maxPacketLength uint32) error { + b, err := readPacket(r, b, maxPacketLength) + if err != nil { + return err + } + + return p.UnmarshalFrom(NewBuffer(b)) +} + +// RequestPacket implements the general packet format from draft-ietf-secsh-filexfer-02 +// but also automatically decode/encodes valid request packets (2 < type < 100 || type == 200). +// +// RequestPacket is intended for use in servers receiving requests, +// where any arbitrary request may be received, and so decoding them automatically +// is useful. +// +// For clients expecting to receive specific response packet types, +// where automatic unmarshaling of the packet body does not make sense, +// use RawPacket. +// +// Defined in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3 +type RequestPacket struct { + RequestID uint32 + + Request Packet +} + +// Type returns the SSH_FXP_xy value associated with the underlying packet. +func (p *RequestPacket) Type() PacketType { + return p.Request.Type() +} + +// Reset clears the pointers and reference-semantic variables in RequestPacket, +// releasing underlying resources, and making them and the RequestPacket suitable to be reused, +// so long as no other references have been kept. +func (p *RequestPacket) Reset() { + p.Request = nil +} + +// MarshalPacket returns p as a two-part binary encoding of p. +// +// The internal p.RequestID is overridden by the reqid argument. +func (p *RequestPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + if p.Request == nil { + return nil, nil, errors.New("empty request packet") + } + + return p.Request.MarshalPacket(reqid, b) +} + +// MarshalBinary returns p as the binary encoding of p. +// +// This is a convenience implementation primarily intended for tests, +// because it is inefficient with allocations. +func (p *RequestPacket) MarshalBinary() ([]byte, error) { + return ComposePacket(p.MarshalPacket(p.RequestID, nil)) +} + +// UnmarshalFrom decodes a RequestPacket from the given Buffer into p. +// +// The Request field may alias the passed in Buffer, (e.g. SSH_FXP_WRITE), +// so the buffer passed in should not be reused before RequestPacket.Reset(). +func (p *RequestPacket) UnmarshalFrom(buf *Buffer) error { + typ := PacketType(buf.ConsumeUint8()) + if buf.Err != nil { + return buf.Err + } + + req, err := newPacketFromType(typ) + if err != nil { + return err + } + + *p = RequestPacket{ + RequestID: buf.ConsumeUint32(), + Request: req, + } + + return p.Request.UnmarshalPacketBody(buf) +} + +// UnmarshalBinary decodes a full request packet out of the given data. +// It is assumed that the uint32(length) has already been consumed to receive the data. +// +// This is a convenience implementation primarily intended for tests, +// because this must clone the given data byte slice, +// as Request is not allowed to alias any part of the data byte slice. +func (p *RequestPacket) UnmarshalBinary(data []byte) error { + clone := make([]byte, len(data)) + n := copy(clone, data) + return p.UnmarshalFrom(NewBuffer(clone[:n])) +} + +// ReadFrom provides a simple functional packet reader, +// using the given byte slice as a backing array. +// +// To protect against potential denial of service attacks, +// if the read packet length is longer than maxPacketLength, +// then no packet data will be read, and ErrLongPacket will be returned. +// (On 32-bit int architectures, all packets >= 2^31 in length +// will return ErrLongPacket regardless of maxPacketLength.) +// +// If the read packet length is longer than cap(b), +// then a throw-away slice will allocated to meet the exact packet length. +// This can be used to limit the length of reused buffers, +// while still allowing reception of occasional large packets. +// +// The Request field may alias the passed in byte slice, +// so the byte slice passed in should not be reused before RawPacket.Reset(). +func (p *RequestPacket) ReadFrom(r io.Reader, b []byte, maxPacketLength uint32) error { + b, err := readPacket(r, b, maxPacketLength) + if err != nil { + return err + } + + return p.UnmarshalFrom(NewBuffer(b)) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/path_packets.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/path_packets.go new file mode 100644 index 0000000..0180326 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/path_packets.go @@ -0,0 +1,362 @@ +package sshfx + +// LStatPacket defines the SSH_FXP_LSTAT packet. +type LStatPacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *LStatPacket) Type() PacketType { + return PacketTypeLStat +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *LStatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeLStat, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *LStatPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = LStatPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// SetstatPacket defines the SSH_FXP_SETSTAT packet. +type SetstatPacket struct { + Path string + Attrs Attributes +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *SetstatPacket) Type() PacketType { + return PacketTypeSetstat +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *SetstatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) + p.Attrs.Len() // string(path) + ATTRS(attrs) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeSetstat, reqid) + buf.AppendString(p.Path) + + p.Attrs.MarshalInto(buf) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *SetstatPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = SetstatPacket{ + Path: buf.ConsumeString(), + } + + return p.Attrs.UnmarshalFrom(buf) +} + +// RemovePacket defines the SSH_FXP_REMOVE packet. +type RemovePacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *RemovePacket) Type() PacketType { + return PacketTypeRemove +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *RemovePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeRemove, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *RemovePacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = RemovePacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// MkdirPacket defines the SSH_FXP_MKDIR packet. +type MkdirPacket struct { + Path string + Attrs Attributes +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *MkdirPacket) Type() PacketType { + return PacketTypeMkdir +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *MkdirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) + p.Attrs.Len() // string(path) + ATTRS(attrs) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeMkdir, reqid) + buf.AppendString(p.Path) + + p.Attrs.MarshalInto(buf) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *MkdirPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = MkdirPacket{ + Path: buf.ConsumeString(), + } + + return p.Attrs.UnmarshalFrom(buf) +} + +// RmdirPacket defines the SSH_FXP_RMDIR packet. +type RmdirPacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *RmdirPacket) Type() PacketType { + return PacketTypeRmdir +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *RmdirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeRmdir, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *RmdirPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = RmdirPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// RealPathPacket defines the SSH_FXP_REALPATH packet. +type RealPathPacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *RealPathPacket) Type() PacketType { + return PacketTypeRealPath +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *RealPathPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeRealPath, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *RealPathPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = RealPathPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// StatPacket defines the SSH_FXP_STAT packet. +type StatPacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *StatPacket) Type() PacketType { + return PacketTypeStat +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *StatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeStat, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *StatPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = StatPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// RenamePacket defines the SSH_FXP_RENAME packet. +type RenamePacket struct { + OldPath string + NewPath string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *RenamePacket) Type() PacketType { + return PacketTypeRename +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *RenamePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + // string(oldpath) + string(newpath) + size := 4 + len(p.OldPath) + 4 + len(p.NewPath) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeRename, reqid) + buf.AppendString(p.OldPath) + buf.AppendString(p.NewPath) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *RenamePacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = RenamePacket{ + OldPath: buf.ConsumeString(), + NewPath: buf.ConsumeString(), + } + + return buf.Err +} + +// ReadLinkPacket defines the SSH_FXP_READLINK packet. +type ReadLinkPacket struct { + Path string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *ReadLinkPacket) Type() PacketType { + return PacketTypeReadLink +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *ReadLinkPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + size := 4 + len(p.Path) // string(path) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeReadLink, reqid) + buf.AppendString(p.Path) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *ReadLinkPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = ReadLinkPacket{ + Path: buf.ConsumeString(), + } + + return buf.Err +} + +// SymlinkPacket defines the SSH_FXP_SYMLINK packet. +// +// The order of the arguments to the SSH_FXP_SYMLINK method was inadvertently reversed. +// Unfortunately, the reversal was not noticed until the server was widely deployed. +// Covered in Section 4.1 of https://github.com/openssh/openssh-portable/blob/master/PROTOCOL +type SymlinkPacket struct { + LinkPath string + TargetPath string +} + +// Type returns the SSH_FXP_xy value associated with this packet type. +func (p *SymlinkPacket) Type() PacketType { + return PacketTypeSymlink +} + +// MarshalPacket returns p as a two-part binary encoding of p. +func (p *SymlinkPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) { + buf := NewBuffer(b) + if buf.Cap() < 9 { + // string(targetpath) + string(linkpath) + size := 4 + len(p.TargetPath) + 4 + len(p.LinkPath) + buf = NewMarshalBuffer(size) + } + + buf.StartPacket(PacketTypeSymlink, reqid) + + // Arguments were inadvertently reversed. + buf.AppendString(p.TargetPath) + buf.AppendString(p.LinkPath) + + return buf.Packet(payload) +} + +// UnmarshalPacketBody unmarshals the packet body from the given Buffer. +// It is assumed that the uint32(request-id) has already been consumed. +func (p *SymlinkPacket) UnmarshalPacketBody(buf *Buffer) (err error) { + *p = SymlinkPacket{ + // Arguments were inadvertently reversed. + TargetPath: buf.ConsumeString(), + LinkPath: buf.ConsumeString(), + } + + return buf.Err +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/permissions.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/permissions.go new file mode 100644 index 0000000..0143ec0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/internal/encoding/ssh/filexfer/permissions.go @@ -0,0 +1,114 @@ +package sshfx + +// FileMode represents a file’s mode and permission bits. +// The bits are defined according to POSIX standards, +// and may not apply to the OS being built for. +type FileMode uint32 + +// Permission flags, defined here to avoid potential inconsistencies in individual OS implementations. +const ( + ModePerm FileMode = 0o0777 // S_IRWXU | S_IRWXG | S_IRWXO + ModeUserRead FileMode = 0o0400 // S_IRUSR + ModeUserWrite FileMode = 0o0200 // S_IWUSR + ModeUserExec FileMode = 0o0100 // S_IXUSR + ModeGroupRead FileMode = 0o0040 // S_IRGRP + ModeGroupWrite FileMode = 0o0020 // S_IWGRP + ModeGroupExec FileMode = 0o0010 // S_IXGRP + ModeOtherRead FileMode = 0o0004 // S_IROTH + ModeOtherWrite FileMode = 0o0002 // S_IWOTH + ModeOtherExec FileMode = 0o0001 // S_IXOTH + + ModeSetUID FileMode = 0o4000 // S_ISUID + ModeSetGID FileMode = 0o2000 // S_ISGID + ModeSticky FileMode = 0o1000 // S_ISVTX + + ModeType FileMode = 0xF000 // S_IFMT + ModeNamedPipe FileMode = 0x1000 // S_IFIFO + ModeCharDevice FileMode = 0x2000 // S_IFCHR + ModeDir FileMode = 0x4000 // S_IFDIR + ModeDevice FileMode = 0x6000 // S_IFBLK + ModeRegular FileMode = 0x8000 // S_IFREG + ModeSymlink FileMode = 0xA000 // S_IFLNK + ModeSocket FileMode = 0xC000 // S_IFSOCK +) + +// IsDir reports whether m describes a directory. +// That is, it tests for m.Type() == ModeDir. +func (m FileMode) IsDir() bool { + return (m & ModeType) == ModeDir +} + +// IsRegular reports whether m describes a regular file. +// That is, it tests for m.Type() == ModeRegular +func (m FileMode) IsRegular() bool { + return (m & ModeType) == ModeRegular +} + +// Perm returns the POSIX permission bits in m (m & ModePerm). +func (m FileMode) Perm() FileMode { + return (m & ModePerm) +} + +// Type returns the type bits in m (m & ModeType). +func (m FileMode) Type() FileMode { + return (m & ModeType) +} + +// String returns a `-rwxrwxrwx` style string representing the `ls -l` POSIX permissions string. +func (m FileMode) String() string { + var buf [10]byte + + switch m.Type() { + case ModeRegular: + buf[0] = '-' + case ModeDir: + buf[0] = 'd' + case ModeSymlink: + buf[0] = 'l' + case ModeDevice: + buf[0] = 'b' + case ModeCharDevice: + buf[0] = 'c' + case ModeNamedPipe: + buf[0] = 'p' + case ModeSocket: + buf[0] = 's' + default: + buf[0] = '?' + } + + const rwx = "rwxrwxrwx" + for i, c := range rwx { + if m&(1<>24), byte(v>>16), byte(v>>8), byte(v)) +} + +func marshalUint64(b []byte, v uint64) []byte { + return marshalUint32(marshalUint32(b, uint32(v>>32)), uint32(v)) +} + +func marshalString(b []byte, v string) []byte { + return append(marshalUint32(b, uint32(len(v))), v...) +} + +func marshalFileInfo(b []byte, fi os.FileInfo) []byte { + // attributes variable struct, and also variable per protocol version + // spec version 3 attributes: + // uint32 flags + // uint64 size present only if flag SSH_FILEXFER_ATTR_SIZE + // uint32 uid present only if flag SSH_FILEXFER_ATTR_UIDGID + // uint32 gid present only if flag SSH_FILEXFER_ATTR_UIDGID + // uint32 permissions present only if flag SSH_FILEXFER_ATTR_PERMISSIONS + // uint32 atime present only if flag SSH_FILEXFER_ACMODTIME + // uint32 mtime present only if flag SSH_FILEXFER_ACMODTIME + // uint32 extended_count present only if flag SSH_FILEXFER_ATTR_EXTENDED + // string extended_type + // string extended_data + // ... more extended data (extended_type - extended_data pairs), + // so that number of pairs equals extended_count + + flags, fileStat := fileStatFromInfo(fi) + + b = marshalUint32(b, flags) + + return marshalFileStat(b, flags, fileStat) +} + +func marshalFileStat(b []byte, flags uint32, fileStat *FileStat) []byte { + if flags&sshFileXferAttrSize != 0 { + b = marshalUint64(b, fileStat.Size) + } + if flags&sshFileXferAttrUIDGID != 0 { + b = marshalUint32(b, fileStat.UID) + b = marshalUint32(b, fileStat.GID) + } + if flags&sshFileXferAttrPermissions != 0 { + b = marshalUint32(b, fileStat.Mode) + } + if flags&sshFileXferAttrACmodTime != 0 { + b = marshalUint32(b, fileStat.Atime) + b = marshalUint32(b, fileStat.Mtime) + } + + if flags&sshFileXferAttrExtended != 0 { + b = marshalUint32(b, uint32(len(fileStat.Extended))) + + for _, attr := range fileStat.Extended { + b = marshalString(b, attr.ExtType) + b = marshalString(b, attr.ExtData) + } + } + + return b +} + +func marshalStatus(b []byte, err StatusError) []byte { + b = marshalUint32(b, err.Code) + b = marshalString(b, err.msg) + b = marshalString(b, err.lang) + return b +} + +func marshal(b []byte, v interface{}) []byte { + switch v := v.(type) { + case nil: + return b + case uint8: + return append(b, v) + case uint32: + return marshalUint32(b, v) + case uint64: + return marshalUint64(b, v) + case string: + return marshalString(b, v) + case []byte: + return append(b, v...) + case os.FileInfo: + return marshalFileInfo(b, v) + default: + switch d := reflect.ValueOf(v); d.Kind() { + case reflect.Struct: + for i, n := 0, d.NumField(); i < n; i++ { + b = marshal(b, d.Field(i).Interface()) + } + return b + case reflect.Slice: + for i, n := 0, d.Len(); i < n; i++ { + b = marshal(b, d.Index(i).Interface()) + } + return b + default: + panic(fmt.Sprintf("marshal(%#v): cannot handle type %T", v, v)) + } + } +} + +func unmarshalUint32(b []byte) (uint32, []byte) { + v := uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 + return v, b[4:] +} + +func unmarshalUint32Safe(b []byte) (uint32, []byte, error) { + var v uint32 + if len(b) < 4 { + return 0, nil, errShortPacket + } + v, b = unmarshalUint32(b) + return v, b, nil +} + +func unmarshalUint64(b []byte) (uint64, []byte) { + h, b := unmarshalUint32(b) + l, b := unmarshalUint32(b) + return uint64(h)<<32 | uint64(l), b +} + +func unmarshalUint64Safe(b []byte) (uint64, []byte, error) { + var v uint64 + if len(b) < 8 { + return 0, nil, errShortPacket + } + v, b = unmarshalUint64(b) + return v, b, nil +} + +func unmarshalString(b []byte) (string, []byte) { + n, b := unmarshalUint32(b) + return string(b[:n]), b[n:] +} + +func unmarshalStringSafe(b []byte) (string, []byte, error) { + n, b, err := unmarshalUint32Safe(b) + if err != nil { + return "", nil, err + } + if int64(n) > int64(len(b)) { + return "", nil, errShortPacket + } + return string(b[:n]), b[n:], nil +} + +func unmarshalAttrs(b []byte) (*FileStat, []byte, error) { + flags, b, err := unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + return unmarshalFileStat(flags, b) +} + +func unmarshalFileStat(flags uint32, b []byte) (*FileStat, []byte, error) { + var fs FileStat + var err error + + if flags&sshFileXferAttrSize == sshFileXferAttrSize { + fs.Size, b, err = unmarshalUint64Safe(b) + if err != nil { + return nil, b, err + } + } + if flags&sshFileXferAttrUIDGID == sshFileXferAttrUIDGID { + fs.UID, b, err = unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + fs.GID, b, err = unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + } + if flags&sshFileXferAttrPermissions == sshFileXferAttrPermissions { + fs.Mode, b, err = unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + } + if flags&sshFileXferAttrACmodTime == sshFileXferAttrACmodTime { + fs.Atime, b, err = unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + fs.Mtime, b, err = unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + } + if flags&sshFileXferAttrExtended == sshFileXferAttrExtended { + var count uint32 + count, b, err = unmarshalUint32Safe(b) + if err != nil { + return nil, b, err + } + + ext := make([]StatExtended, count) + for i := uint32(0); i < count; i++ { + var typ string + var data string + typ, b, err = unmarshalStringSafe(b) + if err != nil { + return nil, b, err + } + data, b, err = unmarshalStringSafe(b) + if err != nil { + return nil, b, err + } + ext[i] = StatExtended{ + ExtType: typ, + ExtData: data, + } + } + fs.Extended = ext + } + return &fs, b, nil +} + +func unmarshalStatus(id uint32, data []byte) error { + sid, data := unmarshalUint32(data) + if sid != id { + return &unexpectedIDErr{id, sid} + } + code, data := unmarshalUint32(data) + msg, data, _ := unmarshalStringSafe(data) + lang, _, _ := unmarshalStringSafe(data) + return &StatusError{ + Code: code, + msg: msg, + lang: lang, + } +} + +type packetMarshaler interface { + marshalPacket() (header, payload []byte, err error) +} + +func marshalPacket(m encoding.BinaryMarshaler) (header, payload []byte, err error) { + if m, ok := m.(packetMarshaler); ok { + return m.marshalPacket() + } + + header, err = m.MarshalBinary() + return +} + +// sendPacket marshals p according to RFC 4234. +func sendPacket(w io.Writer, m encoding.BinaryMarshaler) error { + header, payload, err := marshalPacket(m) + if err != nil { + return fmt.Errorf("binary marshaller failed: %w", err) + } + + length := len(header) + len(payload) - 4 // subtract the uint32(length) from the start + if debugDumpTxPacketBytes { + debug("send packet: %s %d bytes %x%x", fxp(header[4]), length, header[5:], payload) + } else if debugDumpTxPacket { + debug("send packet: %s %d bytes", fxp(header[4]), length) + } + + binary.BigEndian.PutUint32(header[:4], uint32(length)) + + if _, err := w.Write(header); err != nil { + return fmt.Errorf("failed to send packet: %w", err) + } + + if len(payload) > 0 { + if _, err := w.Write(payload); err != nil { + return fmt.Errorf("failed to send packet payload: %w", err) + } + } + + return nil +} + +func recvPacket(r io.Reader, alloc *allocator, orderID uint32) (fxp, []byte, error) { + var b []byte + if alloc != nil { + b = alloc.GetPage(orderID) + } else { + b = make([]byte, 4) + } + + if n, err := io.ReadFull(r, b[:4]); err != nil { + if err == io.EOF { + return 0, nil, err + } + + return 0, nil, fmt.Errorf("error reading packet length: %d of 4: %w", n, err) + } + + length, _ := unmarshalUint32(b) + if length > maxMsgLength { + debug("recv packet %d bytes too long", length) + return 0, nil, errLongPacket + } + if length == 0 { + debug("recv packet of 0 bytes too short") + return 0, nil, errShortPacket + } + + if alloc == nil { + b = make([]byte, length) + } + + n, err := io.ReadFull(r, b[:length]) + b = b[:n] + + if err != nil { + debug("recv packet error: %d of %d bytes: %x", n, length, b) + + // ReadFull only returns EOF if it has read no bytes. + // In this case, that means a partial packet, and thus unexpected. + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + + if n == 0 { + return 0, nil, fmt.Errorf("error reading packet body: %d of %d: %w", n, length, err) + } + + return 0, nil, fmt.Errorf("error reading packet body: %d of %d: (%s) %w", n, length, fxp(b[0]), err) + } + + typ, payload := fxp(b[0]), b[1:n] + + if debugDumpRxPacketBytes { + debug("recv packet: %s %d bytes %x", typ, length, payload) + } else if debugDumpRxPacket { + debug("recv packet: %s %d bytes", typ, length) + } + + return typ, payload, nil +} + +type extensionPair struct { + Name string + Data string +} + +func unmarshalExtensionPair(b []byte) (extensionPair, []byte, error) { + var ep extensionPair + var err error + ep.Name, b, err = unmarshalStringSafe(b) + if err != nil { + return ep, b, err + } + ep.Data, b, err = unmarshalStringSafe(b) + return ep, b, err +} + +// Here starts the definition of packets along with their MarshalBinary +// implementations. +// Manually writing the marshalling logic wins us a lot of time and +// allocation. + +type sshFxInitPacket struct { + Version uint32 + Extensions []extensionPair +} + +func (p *sshFxInitPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(version) + for _, e := range p.Extensions { + l += 4 + len(e.Name) + 4 + len(e.Data) + } + + b := make([]byte, 4, l) + b = append(b, sshFxpInit) + b = marshalUint32(b, p.Version) + + for _, e := range p.Extensions { + b = marshalString(b, e.Name) + b = marshalString(b, e.Data) + } + + return b, nil +} + +func (p *sshFxInitPacket) UnmarshalBinary(b []byte) error { + var err error + if p.Version, b, err = unmarshalUint32Safe(b); err != nil { + return err + } + for len(b) > 0 { + var ep extensionPair + ep, b, err = unmarshalExtensionPair(b) + if err != nil { + return err + } + p.Extensions = append(p.Extensions, ep) + } + return nil +} + +type sshFxVersionPacket struct { + Version uint32 + Extensions []sshExtensionPair +} + +type sshExtensionPair struct { + Name, Data string +} + +func (p *sshFxVersionPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(version) + for _, e := range p.Extensions { + l += 4 + len(e.Name) + 4 + len(e.Data) + } + + b := make([]byte, 4, l) + b = append(b, sshFxpVersion) + b = marshalUint32(b, p.Version) + + for _, e := range p.Extensions { + b = marshalString(b, e.Name) + b = marshalString(b, e.Data) + } + + return b, nil +} + +func marshalIDStringPacket(packetType byte, id uint32, str string) ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(str) + + b := make([]byte, 4, l) + b = append(b, packetType) + b = marshalUint32(b, id) + b = marshalString(b, str) + + return b, nil +} + +func unmarshalIDString(b []byte, id *uint32, str *string) error { + var err error + *id, b, err = unmarshalUint32Safe(b) + if err != nil { + return err + } + *str, _, err = unmarshalStringSafe(b) + return err +} + +type sshFxpReaddirPacket struct { + ID uint32 + Handle string +} + +func (p *sshFxpReaddirPacket) id() uint32 { return p.ID } + +func (p *sshFxpReaddirPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpReaddir, p.ID, p.Handle) +} + +func (p *sshFxpReaddirPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Handle) +} + +type sshFxpOpendirPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpOpendirPacket) id() uint32 { return p.ID } + +func (p *sshFxpOpendirPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpOpendir, p.ID, p.Path) +} + +func (p *sshFxpOpendirPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Path) +} + +type sshFxpLstatPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpLstatPacket) id() uint32 { return p.ID } + +func (p *sshFxpLstatPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpLstat, p.ID, p.Path) +} + +func (p *sshFxpLstatPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Path) +} + +type sshFxpStatPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpStatPacket) id() uint32 { return p.ID } + +func (p *sshFxpStatPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpStat, p.ID, p.Path) +} + +func (p *sshFxpStatPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Path) +} + +type sshFxpFstatPacket struct { + ID uint32 + Handle string +} + +func (p *sshFxpFstatPacket) id() uint32 { return p.ID } + +func (p *sshFxpFstatPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpFstat, p.ID, p.Handle) +} + +func (p *sshFxpFstatPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Handle) +} + +type sshFxpClosePacket struct { + ID uint32 + Handle string +} + +func (p *sshFxpClosePacket) id() uint32 { return p.ID } + +func (p *sshFxpClosePacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpClose, p.ID, p.Handle) +} + +func (p *sshFxpClosePacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Handle) +} + +type sshFxpRemovePacket struct { + ID uint32 + Filename string +} + +func (p *sshFxpRemovePacket) id() uint32 { return p.ID } + +func (p *sshFxpRemovePacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpRemove, p.ID, p.Filename) +} + +func (p *sshFxpRemovePacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Filename) +} + +type sshFxpRmdirPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpRmdirPacket) id() uint32 { return p.ID } + +func (p *sshFxpRmdirPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpRmdir, p.ID, p.Path) +} + +func (p *sshFxpRmdirPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Path) +} + +type sshFxpSymlinkPacket struct { + ID uint32 + + // The order of the arguments to the SSH_FXP_SYMLINK method was inadvertently reversed. + // Unfortunately, the reversal was not noticed until the server was widely deployed. + // Covered in Section 4.1 of https://github.com/openssh/openssh-portable/blob/master/PROTOCOL + + Targetpath string + Linkpath string +} + +func (p *sshFxpSymlinkPacket) id() uint32 { return p.ID } + +func (p *sshFxpSymlinkPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Targetpath) + + 4 + len(p.Linkpath) + + b := make([]byte, 4, l) + b = append(b, sshFxpSymlink) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Targetpath) + b = marshalString(b, p.Linkpath) + + return b, nil +} + +func (p *sshFxpSymlinkPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Targetpath, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Linkpath, _, err = unmarshalStringSafe(b); err != nil { + return err + } + return nil +} + +type sshFxpHardlinkPacket struct { + ID uint32 + Oldpath string + Newpath string +} + +func (p *sshFxpHardlinkPacket) id() uint32 { return p.ID } + +func (p *sshFxpHardlinkPacket) MarshalBinary() ([]byte, error) { + const ext = "hardlink@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Oldpath) + + 4 + len(p.Newpath) + + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) + b = marshalUint32(b, p.ID) + b = marshalString(b, ext) + b = marshalString(b, p.Oldpath) + b = marshalString(b, p.Newpath) + + return b, nil +} + +type sshFxpReadlinkPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpReadlinkPacket) id() uint32 { return p.ID } + +func (p *sshFxpReadlinkPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpReadlink, p.ID, p.Path) +} + +func (p *sshFxpReadlinkPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Path) +} + +type sshFxpRealpathPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpRealpathPacket) id() uint32 { return p.ID } + +func (p *sshFxpRealpathPacket) MarshalBinary() ([]byte, error) { + return marshalIDStringPacket(sshFxpRealpath, p.ID, p.Path) +} + +func (p *sshFxpRealpathPacket) UnmarshalBinary(b []byte) error { + return unmarshalIDString(b, &p.ID, &p.Path) +} + +type sshFxpNameAttr struct { + Name string + LongName string + Attrs []interface{} +} + +func (p *sshFxpNameAttr) MarshalBinary() ([]byte, error) { + var b []byte + b = marshalString(b, p.Name) + b = marshalString(b, p.LongName) + for _, attr := range p.Attrs { + b = marshal(b, attr) + } + return b, nil +} + +type sshFxpNamePacket struct { + ID uint32 + NameAttrs []*sshFxpNameAttr +} + +func (p *sshFxpNamePacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + + b := make([]byte, 4, l) + b = append(b, sshFxpName) + b = marshalUint32(b, p.ID) + b = marshalUint32(b, uint32(len(p.NameAttrs))) + + var payload []byte + for _, na := range p.NameAttrs { + ab, err := na.MarshalBinary() + if err != nil { + return nil, nil, err + } + + payload = append(payload, ab...) + } + + return b, payload, nil +} + +func (p *sshFxpNamePacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +type sshFxpOpenPacket struct { + ID uint32 + Path string + Pflags uint32 + Flags uint32 + Attrs interface{} +} + +func (p *sshFxpOpenPacket) id() uint32 { return p.ID } + +func (p *sshFxpOpenPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Path) + + 4 + 4 + + b := make([]byte, 4, l) + b = append(b, sshFxpOpen) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Path) + b = marshalUint32(b, p.Pflags) + b = marshalUint32(b, p.Flags) + + switch attrs := p.Attrs.(type) { + case []byte: + return b, attrs, nil // may as well short-ciruit this case. + case os.FileInfo: + _, fs := fileStatFromInfo(attrs) // we throw away the flags, and override with those in packet. + return b, marshalFileStat(nil, p.Flags, fs), nil + case *FileStat: + return b, marshalFileStat(nil, p.Flags, attrs), nil + } + + return b, marshal(nil, p.Attrs), nil +} + +func (p *sshFxpOpenPacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +func (p *sshFxpOpenPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Path, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Pflags, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Flags, b, err = unmarshalUint32Safe(b); err != nil { + return err + } + p.Attrs = b + return nil +} + +func (p *sshFxpOpenPacket) unmarshalFileStat(flags uint32) (*FileStat, error) { + switch attrs := p.Attrs.(type) { + case *FileStat: + return attrs, nil + case []byte: + fs, _, err := unmarshalFileStat(flags, attrs) + return fs, err + default: + return nil, fmt.Errorf("invalid type in unmarshalFileStat: %T", attrs) + } +} + +type sshFxpReadPacket struct { + ID uint32 + Len uint32 + Offset uint64 + Handle string +} + +func (p *sshFxpReadPacket) id() uint32 { return p.ID } + +func (p *sshFxpReadPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Handle) + + 8 + 4 // uint64 + uint32 + + b := make([]byte, 4, l) + b = append(b, sshFxpRead) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Handle) + b = marshalUint64(b, p.Offset) + b = marshalUint32(b, p.Len) + + return b, nil +} + +func (p *sshFxpReadPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Handle, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Offset, b, err = unmarshalUint64Safe(b); err != nil { + return err + } else if p.Len, _, err = unmarshalUint32Safe(b); err != nil { + return err + } + return nil +} + +// We need allocate bigger slices with extra capacity to avoid a re-allocation in sshFxpDataPacket.MarshalBinary +// So, we need: uint32(length) + byte(type) + uint32(id) + uint32(data_length) +const dataHeaderLen = 4 + 1 + 4 + 4 + +func (p *sshFxpReadPacket) getDataSlice(alloc *allocator, orderID uint32, maxTxPacket uint32) []byte { + dataLen := p.Len + if dataLen > maxTxPacket { + dataLen = maxTxPacket + } + + if alloc != nil { + // GetPage returns a slice with capacity = maxMsgLength this is enough to avoid new allocations in + // sshFxpDataPacket.MarshalBinary + return alloc.GetPage(orderID)[:dataLen] + } + + // allocate with extra space for the header + return make([]byte, dataLen, dataLen+dataHeaderLen) +} + +type sshFxpRenamePacket struct { + ID uint32 + Oldpath string + Newpath string +} + +func (p *sshFxpRenamePacket) id() uint32 { return p.ID } + +func (p *sshFxpRenamePacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Oldpath) + + 4 + len(p.Newpath) + + b := make([]byte, 4, l) + b = append(b, sshFxpRename) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Oldpath) + b = marshalString(b, p.Newpath) + + return b, nil +} + +func (p *sshFxpRenamePacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil { + return err + } + return nil +} + +type sshFxpPosixRenamePacket struct { + ID uint32 + Oldpath string + Newpath string +} + +func (p *sshFxpPosixRenamePacket) id() uint32 { return p.ID } + +func (p *sshFxpPosixRenamePacket) MarshalBinary() ([]byte, error) { + const ext = "posix-rename@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Oldpath) + + 4 + len(p.Newpath) + + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) + b = marshalUint32(b, p.ID) + b = marshalString(b, ext) + b = marshalString(b, p.Oldpath) + b = marshalString(b, p.Newpath) + + return b, nil +} + +type sshFxpWritePacket struct { + ID uint32 + Length uint32 + Offset uint64 + Handle string + Data []byte +} + +func (p *sshFxpWritePacket) id() uint32 { return p.ID } + +func (p *sshFxpWritePacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Handle) + + 8 + // uint64 + 4 + + b := make([]byte, 4, l) + b = append(b, sshFxpWrite) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Handle) + b = marshalUint64(b, p.Offset) + b = marshalUint32(b, p.Length) + + return b, p.Data, nil +} + +func (p *sshFxpWritePacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +func (p *sshFxpWritePacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Handle, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Offset, b, err = unmarshalUint64Safe(b); err != nil { + return err + } else if p.Length, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if uint32(len(b)) < p.Length { + return errShortPacket + } + + p.Data = b[:p.Length] + return nil +} + +type sshFxpMkdirPacket struct { + ID uint32 + Flags uint32 // ignored + Path string +} + +func (p *sshFxpMkdirPacket) id() uint32 { return p.ID } + +func (p *sshFxpMkdirPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Path) + + 4 // uint32 + + b := make([]byte, 4, l) + b = append(b, sshFxpMkdir) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Path) + b = marshalUint32(b, p.Flags) + + return b, nil +} + +func (p *sshFxpMkdirPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Path, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Flags, _, err = unmarshalUint32Safe(b); err != nil { + return err + } + return nil +} + +type sshFxpSetstatPacket struct { + ID uint32 + Flags uint32 + Path string + Attrs interface{} +} + +type sshFxpFsetstatPacket struct { + ID uint32 + Flags uint32 + Handle string + Attrs interface{} +} + +func (p *sshFxpSetstatPacket) id() uint32 { return p.ID } +func (p *sshFxpFsetstatPacket) id() uint32 { return p.ID } + +func (p *sshFxpSetstatPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Path) + + 4 // uint32 + + b := make([]byte, 4, l) + b = append(b, sshFxpSetstat) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Path) + b = marshalUint32(b, p.Flags) + + switch attrs := p.Attrs.(type) { + case []byte: + return b, attrs, nil // may as well short-ciruit this case. + case os.FileInfo: + _, fs := fileStatFromInfo(attrs) // we throw away the flags, and override with those in packet. + return b, marshalFileStat(nil, p.Flags, fs), nil + case *FileStat: + return b, marshalFileStat(nil, p.Flags, attrs), nil + } + + return b, marshal(nil, p.Attrs), nil +} + +func (p *sshFxpSetstatPacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +func (p *sshFxpFsetstatPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Handle) + + 4 // uint32 + + b := make([]byte, 4, l) + b = append(b, sshFxpFsetstat) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Handle) + b = marshalUint32(b, p.Flags) + + switch attrs := p.Attrs.(type) { + case []byte: + return b, attrs, nil // may as well short-ciruit this case. + case os.FileInfo: + _, fs := fileStatFromInfo(attrs) // we throw away the flags, and override with those in packet. + return b, marshalFileStat(nil, p.Flags, fs), nil + case *FileStat: + return b, marshalFileStat(nil, p.Flags, attrs), nil + } + + return b, marshal(nil, p.Attrs), nil +} + +func (p *sshFxpFsetstatPacket) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +func (p *sshFxpSetstatPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Path, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Flags, b, err = unmarshalUint32Safe(b); err != nil { + return err + } + p.Attrs = b + return nil +} + +func (p *sshFxpSetstatPacket) unmarshalFileStat(flags uint32) (*FileStat, error) { + switch attrs := p.Attrs.(type) { + case *FileStat: + return attrs, nil + case []byte: + fs, _, err := unmarshalFileStat(flags, attrs) + return fs, err + default: + return nil, fmt.Errorf("invalid type in unmarshalFileStat: %T", attrs) + } +} + +func (p *sshFxpFsetstatPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Handle, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Flags, b, err = unmarshalUint32Safe(b); err != nil { + return err + } + p.Attrs = b + return nil +} + +func (p *sshFxpFsetstatPacket) unmarshalFileStat(flags uint32) (*FileStat, error) { + switch attrs := p.Attrs.(type) { + case *FileStat: + return attrs, nil + case []byte: + fs, _, err := unmarshalFileStat(flags, attrs) + return fs, err + default: + return nil, fmt.Errorf("invalid type in unmarshalFileStat: %T", attrs) + } +} + +type sshFxpHandlePacket struct { + ID uint32 + Handle string +} + +func (p *sshFxpHandlePacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(p.Handle) + + b := make([]byte, 4, l) + b = append(b, sshFxpHandle) + b = marshalUint32(b, p.ID) + b = marshalString(b, p.Handle) + + return b, nil +} + +type sshFxpStatusPacket struct { + ID uint32 + StatusError +} + +func (p *sshFxpStatusPacket) MarshalBinary() ([]byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + + 4 + len(p.StatusError.msg) + + 4 + len(p.StatusError.lang) + + b := make([]byte, 4, l) + b = append(b, sshFxpStatus) + b = marshalUint32(b, p.ID) + b = marshalStatus(b, p.StatusError) + + return b, nil +} + +type sshFxpDataPacket struct { + ID uint32 + Length uint32 + Data []byte +} + +func (p *sshFxpDataPacket) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + + b := make([]byte, 4, l) + b = append(b, sshFxpData) + b = marshalUint32(b, p.ID) + b = marshalUint32(b, p.Length) + + return b, p.Data, nil +} + +// MarshalBinary encodes the receiver into a binary form and returns the result. +// To avoid a new allocation the Data slice must have a capacity >= Length + 9 +// +// This is hand-coded rather than just append(header, payload...), +// in order to try and reuse the r.Data backing store in the packet. +func (p *sshFxpDataPacket) MarshalBinary() ([]byte, error) { + b := append(p.Data, make([]byte, dataHeaderLen)...) + copy(b[dataHeaderLen:], p.Data[:p.Length]) + // b[0:4] will be overwritten with the length in sendPacket + b[4] = sshFxpData + binary.BigEndian.PutUint32(b[5:9], p.ID) + binary.BigEndian.PutUint32(b[9:13], p.Length) + return b, nil +} + +func (p *sshFxpDataPacket) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.Length, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if uint32(len(b)) < p.Length { + return errShortPacket + } + + p.Data = b[:p.Length] + return nil +} + +type sshFxpStatvfsPacket struct { + ID uint32 + Path string +} + +func (p *sshFxpStatvfsPacket) id() uint32 { return p.ID } + +func (p *sshFxpStatvfsPacket) MarshalBinary() ([]byte, error) { + const ext = "statvfs@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Path) + + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) + b = marshalUint32(b, p.ID) + b = marshalString(b, ext) + b = marshalString(b, p.Path) + + return b, nil +} + +// A StatVFS contains statistics about a filesystem. +type StatVFS struct { + ID uint32 + Bsize uint64 /* file system block size */ + Frsize uint64 /* fundamental fs block size */ + Blocks uint64 /* number of blocks (unit f_frsize) */ + Bfree uint64 /* free blocks in file system */ + Bavail uint64 /* free blocks for non-root */ + Files uint64 /* total file inodes */ + Ffree uint64 /* free file inodes */ + Favail uint64 /* free file inodes for to non-root */ + Fsid uint64 /* file system id */ + Flag uint64 /* bit mask of f_flag values */ + Namemax uint64 /* maximum filename length */ +} + +// TotalSpace calculates the amount of total space in a filesystem. +func (p *StatVFS) TotalSpace() uint64 { + return p.Frsize * p.Blocks +} + +// FreeSpace calculates the amount of free space in a filesystem. +func (p *StatVFS) FreeSpace() uint64 { + return p.Frsize * p.Bfree +} + +// marshalPacket converts to ssh_FXP_EXTENDED_REPLY packet binary format +func (p *StatVFS) marshalPacket() ([]byte, []byte, error) { + header := []byte{0, 0, 0, 0, sshFxpExtendedReply} + + var buf bytes.Buffer + err := binary.Write(&buf, binary.BigEndian, p) + + return header, buf.Bytes(), err +} + +// MarshalBinary encodes the StatVFS as an SSH_FXP_EXTENDED_REPLY packet. +func (p *StatVFS) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +type sshFxpFsyncPacket struct { + ID uint32 + Handle string +} + +func (p *sshFxpFsyncPacket) id() uint32 { return p.ID } + +func (p *sshFxpFsyncPacket) MarshalBinary() ([]byte, error) { + const ext = "fsync@openssh.com" + l := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id) + 4 + len(ext) + + 4 + len(p.Handle) + + b := make([]byte, 4, l) + b = append(b, sshFxpExtended) + b = marshalUint32(b, p.ID) + b = marshalString(b, ext) + b = marshalString(b, p.Handle) + + return b, nil +} + +type sshFxpExtendedPacket struct { + ID uint32 + ExtendedRequest string + SpecificPacket interface { + serverRespondablePacket + readonly() bool + } +} + +func (p *sshFxpExtendedPacket) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacket) readonly() bool { + if p.SpecificPacket == nil { + return true + } + return p.SpecificPacket.readonly() +} + +func (p *sshFxpExtendedPacket) respond(svr *Server) responsePacket { + if p.SpecificPacket == nil { + return statusFromError(p.ID, nil) + } + return p.SpecificPacket.respond(svr) +} + +func (p *sshFxpExtendedPacket) UnmarshalBinary(b []byte) error { + var err error + bOrig := b + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.ExtendedRequest, _, err = unmarshalStringSafe(b); err != nil { + return err + } + + // specific unmarshalling + switch p.ExtendedRequest { + case "statvfs@openssh.com": + p.SpecificPacket = &sshFxpExtendedPacketStatVFS{} + case "posix-rename@openssh.com": + p.SpecificPacket = &sshFxpExtendedPacketPosixRename{} + case "hardlink@openssh.com": + p.SpecificPacket = &sshFxpExtendedPacketHardlink{} + default: + return fmt.Errorf("packet type %v: %w", p.SpecificPacket, errUnknownExtendedPacket) + } + + return p.SpecificPacket.UnmarshalBinary(bOrig) +} + +type sshFxpExtendedPacketStatVFS struct { + ID uint32 + ExtendedRequest string + Path string +} + +func (p *sshFxpExtendedPacketStatVFS) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacketStatVFS) readonly() bool { return true } +func (p *sshFxpExtendedPacketStatVFS) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Path, _, err = unmarshalStringSafe(b); err != nil { + return err + } + return nil +} + +type sshFxpExtendedPacketPosixRename struct { + ID uint32 + ExtendedRequest string + Oldpath string + Newpath string +} + +func (p *sshFxpExtendedPacketPosixRename) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacketPosixRename) readonly() bool { return false } +func (p *sshFxpExtendedPacketPosixRename) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil { + return err + } + return nil +} + +func (p *sshFxpExtendedPacketPosixRename) respond(s *Server) responsePacket { + err := os.Rename(s.toLocalPath(p.Oldpath), s.toLocalPath(p.Newpath)) + return statusFromError(p.ID, err) +} + +type sshFxpExtendedPacketHardlink struct { + ID uint32 + ExtendedRequest string + Oldpath string + Newpath string +} + +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL +func (p *sshFxpExtendedPacketHardlink) id() uint32 { return p.ID } +func (p *sshFxpExtendedPacketHardlink) readonly() bool { return true } +func (p *sshFxpExtendedPacketHardlink) UnmarshalBinary(b []byte) error { + var err error + if p.ID, b, err = unmarshalUint32Safe(b); err != nil { + return err + } else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil { + return err + } else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil { + return err + } + return nil +} + +func (p *sshFxpExtendedPacketHardlink) respond(s *Server) responsePacket { + err := os.Link(s.toLocalPath(p.Oldpath), s.toLocalPath(p.Newpath)) + return statusFromError(p.ID, err) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/pool.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/pool.go new file mode 100644 index 0000000..3612629 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/pool.go @@ -0,0 +1,79 @@ +package sftp + +// bufPool provides a pool of byte-slices to be reused in various parts of the package. +// It is safe to use concurrently through a pointer. +type bufPool struct { + ch chan []byte + blen int +} + +func newBufPool(depth, bufLen int) *bufPool { + return &bufPool{ + ch: make(chan []byte, depth), + blen: bufLen, + } +} + +func (p *bufPool) Get() []byte { + if p.blen <= 0 { + panic("bufPool: new buffer creation length must be greater than zero") + } + + for { + select { + case b := <-p.ch: + if cap(b) < p.blen { + // just in case: throw away any buffer with insufficient capacity. + continue + } + + return b[:p.blen] + + default: + return make([]byte, p.blen) + } + } +} + +func (p *bufPool) Put(b []byte) { + if p == nil { + // functional default: no reuse. + return + } + + if cap(b) < p.blen || cap(b) > p.blen*2 { + // DO NOT reuse buffers with insufficient capacity. + // This could cause panics when resizing to p.blen. + + // DO NOT reuse buffers with excessive capacity. + // This could cause memory leaks. + return + } + + select { + case p.ch <- b: + default: + } +} + +type resChanPool chan chan result + +func newResChanPool(depth int) resChanPool { + return make(chan chan result, depth) +} + +func (p resChanPool) Get() chan result { + select { + case ch := <-p: + return ch + default: + return make(chan result, 1) + } +} + +func (p resChanPool) Put(ch chan result) { + select { + case p <- ch: + default: + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/release.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/release.go new file mode 100644 index 0000000..9ecedc4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/release.go @@ -0,0 +1,6 @@ +//go:build !debug +// +build !debug + +package sftp + +func debug(fmt string, args ...interface{}) {} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-attrs.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-attrs.go new file mode 100644 index 0000000..476c565 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-attrs.go @@ -0,0 +1,57 @@ +package sftp + +// Methods on the Request object to make working with the Flags bitmasks and +// Attr(ibutes) byte blob easier. Use Pflags() when working with an Open/Write +// request and AttrFlags() and Attributes() when working with SetStat requests. + +// FileOpenFlags defines Open and Write Flags. Correlate directly with with os.OpenFile flags +// (https://golang.org/pkg/os/#pkg-constants). +type FileOpenFlags struct { + Read, Write, Append, Creat, Trunc, Excl bool +} + +func newFileOpenFlags(flags uint32) FileOpenFlags { + return FileOpenFlags{ + Read: flags&sshFxfRead != 0, + Write: flags&sshFxfWrite != 0, + Append: flags&sshFxfAppend != 0, + Creat: flags&sshFxfCreat != 0, + Trunc: flags&sshFxfTrunc != 0, + Excl: flags&sshFxfExcl != 0, + } +} + +// Pflags converts the bitmap/uint32 from SFTP Open packet pflag values, +// into a FileOpenFlags struct with booleans set for flags set in bitmap. +func (r *Request) Pflags() FileOpenFlags { + return newFileOpenFlags(r.Flags) +} + +// FileAttrFlags that indicate whether SFTP file attributes were passed. When a flag is +// true the corresponding attribute should be available from the FileStat +// object returned by Attributes method. Used with SetStat. +type FileAttrFlags struct { + Size, UidGid, Permissions, Acmodtime bool +} + +func newFileAttrFlags(flags uint32) FileAttrFlags { + return FileAttrFlags{ + Size: (flags & sshFileXferAttrSize) != 0, + UidGid: (flags & sshFileXferAttrUIDGID) != 0, + Permissions: (flags & sshFileXferAttrPermissions) != 0, + Acmodtime: (flags & sshFileXferAttrACmodTime) != 0, + } +} + +// AttrFlags returns a FileAttrFlags boolean struct based on the +// bitmap/uint32 file attribute flags from the SFTP packaet. +func (r *Request) AttrFlags() FileAttrFlags { + return newFileAttrFlags(r.Flags) +} + +// Attributes parses file attributes byte blob and return them in a +// FileStat object. +func (r *Request) Attributes() *FileStat { + fs, _, _ := unmarshalFileStat(r.Flags, r.Attrs) + return fs +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-errors.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-errors.go new file mode 100644 index 0000000..6505b5c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-errors.go @@ -0,0 +1,54 @@ +package sftp + +type fxerr uint32 + +// Error types that match the SFTP's SSH_FXP_STATUS codes. Gives you more +// direct control of the errors being sent vs. letting the library work them +// out from the standard os/io errors. +const ( + ErrSSHFxOk = fxerr(sshFxOk) + ErrSSHFxEOF = fxerr(sshFxEOF) + ErrSSHFxNoSuchFile = fxerr(sshFxNoSuchFile) + ErrSSHFxPermissionDenied = fxerr(sshFxPermissionDenied) + ErrSSHFxFailure = fxerr(sshFxFailure) + ErrSSHFxBadMessage = fxerr(sshFxBadMessage) + ErrSSHFxNoConnection = fxerr(sshFxNoConnection) + ErrSSHFxConnectionLost = fxerr(sshFxConnectionLost) + ErrSSHFxOpUnsupported = fxerr(sshFxOPUnsupported) +) + +// Deprecated error types, these are aliases for the new ones, please use the new ones directly +const ( + ErrSshFxOk = ErrSSHFxOk + ErrSshFxEof = ErrSSHFxEOF + ErrSshFxNoSuchFile = ErrSSHFxNoSuchFile + ErrSshFxPermissionDenied = ErrSSHFxPermissionDenied + ErrSshFxFailure = ErrSSHFxFailure + ErrSshFxBadMessage = ErrSSHFxBadMessage + ErrSshFxNoConnection = ErrSSHFxNoConnection + ErrSshFxConnectionLost = ErrSSHFxConnectionLost + ErrSshFxOpUnsupported = ErrSSHFxOpUnsupported +) + +func (e fxerr) Error() string { + switch e { + case ErrSSHFxOk: + return "OK" + case ErrSSHFxEOF: + return "EOF" + case ErrSSHFxNoSuchFile: + return "no such file" + case ErrSSHFxPermissionDenied: + return "permission denied" + case ErrSSHFxBadMessage: + return "bad message" + case ErrSSHFxNoConnection: + return "no connection" + case ErrSSHFxConnectionLost: + return "connection lost" + case ErrSSHFxOpUnsupported: + return "operation unsupported" + default: + return "failure" + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-example.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-example.go new file mode 100644 index 0000000..f003e71 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-example.go @@ -0,0 +1,647 @@ +package sftp + +// This serves as an example of how to implement the request server handler as +// well as a dummy backend for testing. It implements an in-memory backend that +// works as a very simple filesystem with simple flat key-value lookup system. + +import ( + "errors" + "io" + "os" + "path" + "sort" + "strings" + "sync" + "syscall" + "time" +) + +const maxSymlinkFollows = 5 + +var errTooManySymlinks = errors.New("too many symbolic links") + +// InMemHandler returns a Handlers object with the test handlers. +func InMemHandler() Handlers { + root := &root{ + rootFile: &memFile{name: "/", modtime: time.Now(), isdir: true}, + files: make(map[string]*memFile), + } + return Handlers{root, root, root, root} +} + +// Example Handlers +func (fs *root) Fileread(r *Request) (io.ReaderAt, error) { + flags := r.Pflags() + if !flags.Read { + // sanity check + return nil, os.ErrInvalid + } + + return fs.OpenFile(r) +} + +func (fs *root) Filewrite(r *Request) (io.WriterAt, error) { + flags := r.Pflags() + if !flags.Write { + // sanity check + return nil, os.ErrInvalid + } + + return fs.OpenFile(r) +} + +func (fs *root) OpenFile(r *Request) (WriterAtReaderAt, error) { + if fs.mockErr != nil { + return nil, fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + return fs.openfile(r.Filepath, r.Flags) +} + +func (fs *root) putfile(pathname string, file *memFile) error { + pathname, err := fs.canonName(pathname) + if err != nil { + return err + } + + if !strings.HasPrefix(pathname, "/") { + return os.ErrInvalid + } + + if _, err := fs.lfetch(pathname); err != os.ErrNotExist { + return os.ErrExist + } + + file.name = pathname + fs.files[pathname] = file + + return nil +} + +func (fs *root) openfile(pathname string, flags uint32) (*memFile, error) { + pflags := newFileOpenFlags(flags) + + file, err := fs.fetch(pathname) + if err == os.ErrNotExist { + if !pflags.Creat { + return nil, os.ErrNotExist + } + + var count int + // You can create files through dangling symlinks. + link, err := fs.lfetch(pathname) + for err == nil && link.symlink != "" { + if pflags.Excl { + // unless you also passed in O_EXCL + return nil, os.ErrInvalid + } + + if count++; count > maxSymlinkFollows { + return nil, errTooManySymlinks + } + + pathname = link.symlink + link, err = fs.lfetch(pathname) + } + + file := &memFile{ + modtime: time.Now(), + } + + if err := fs.putfile(pathname, file); err != nil { + return nil, err + } + + return file, nil + } + + if err != nil { + return nil, err + } + + if pflags.Creat && pflags.Excl { + return nil, os.ErrExist + } + + if file.IsDir() { + return nil, os.ErrInvalid + } + + if pflags.Trunc { + if err := file.Truncate(0); err != nil { + return nil, err + } + } + + return file, nil +} + +func (fs *root) Filecmd(r *Request) error { + if fs.mockErr != nil { + return fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + switch r.Method { + case "Setstat": + file, err := fs.openfile(r.Filepath, sshFxfWrite) + if err != nil { + return err + } + + if r.AttrFlags().Size { + return file.Truncate(int64(r.Attributes().Size)) + } + + return nil + + case "Rename": + // SFTP-v2: "It is an error if there already exists a file with the name specified by newpath." + // This varies from the POSIX specification, which allows limited replacement of target files. + if fs.exists(r.Target) { + return os.ErrExist + } + + return fs.rename(r.Filepath, r.Target) + + case "Rmdir": + return fs.rmdir(r.Filepath) + + case "Remove": + // IEEE 1003.1 remove explicitly can unlink files and remove empty directories. + // We use instead here the semantics of unlink, which is allowed to be restricted against directories. + return fs.unlink(r.Filepath) + + case "Mkdir": + return fs.mkdir(r.Filepath) + + case "Link": + return fs.link(r.Filepath, r.Target) + + case "Symlink": + // NOTE: r.Filepath is the target, and r.Target is the linkpath. + return fs.symlink(r.Filepath, r.Target) + } + + return errors.New("unsupported") +} + +func (fs *root) rename(oldpath, newpath string) error { + file, err := fs.lfetch(oldpath) + if err != nil { + return err + } + + newpath, err = fs.canonName(newpath) + if err != nil { + return err + } + + if !strings.HasPrefix(newpath, "/") { + return os.ErrInvalid + } + + target, err := fs.lfetch(newpath) + if err != os.ErrNotExist { + if target == file { + // IEEE 1003.1: if oldpath and newpath are the same directory entry, + // then return no error, and perform no further action. + return nil + } + + switch { + case file.IsDir(): + // IEEE 1003.1: if oldpath is a directory, and newpath exists, + // then newpath must be a directory, and empty. + // It is to be removed prior to rename. + if err := fs.rmdir(newpath); err != nil { + return err + } + + case target.IsDir(): + // IEEE 1003.1: if oldpath is not a directory, and newpath exists, + // then newpath may not be a directory. + return syscall.EISDIR + } + } + + fs.files[newpath] = file + + if file.IsDir() { + dirprefix := file.name + "/" + + for name, file := range fs.files { + if strings.HasPrefix(name, dirprefix) { + newname := path.Join(newpath, strings.TrimPrefix(name, dirprefix)) + + fs.files[newname] = file + file.name = newname + delete(fs.files, name) + } + } + } + + file.name = newpath + delete(fs.files, oldpath) + + return nil +} + +func (fs *root) PosixRename(r *Request) error { + if fs.mockErr != nil { + return fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + return fs.rename(r.Filepath, r.Target) +} + +func (fs *root) StatVFS(r *Request) (*StatVFS, error) { + if fs.mockErr != nil { + return nil, fs.mockErr + } + + return getStatVFSForPath(r.Filepath) +} + +func (fs *root) mkdir(pathname string) error { + dir := &memFile{ + modtime: time.Now(), + isdir: true, + } + + return fs.putfile(pathname, dir) +} + +func (fs *root) rmdir(pathname string) error { + // IEEE 1003.1: If pathname is a symlink, then rmdir should fail with ENOTDIR. + dir, err := fs.lfetch(pathname) + if err != nil { + return err + } + + if !dir.IsDir() { + return syscall.ENOTDIR + } + + // use the dir‘s internal name not the pathname we passed in. + // the dir.name is always the canonical name of a directory. + pathname = dir.name + + for name := range fs.files { + if path.Dir(name) == pathname { + return errors.New("directory not empty") + } + } + + delete(fs.files, pathname) + + return nil +} + +func (fs *root) link(oldpath, newpath string) error { + file, err := fs.lfetch(oldpath) + if err != nil { + return err + } + + if file.IsDir() { + return errors.New("hard link not allowed for directory") + } + + return fs.putfile(newpath, file) +} + +// symlink() creates a symbolic link named `linkpath` which contains the string `target`. +// NOTE! This would be called with `symlink(req.Filepath, req.Target)` due to different semantics. +func (fs *root) symlink(target, linkpath string) error { + link := &memFile{ + modtime: time.Now(), + symlink: target, + } + + return fs.putfile(linkpath, link) +} + +func (fs *root) unlink(pathname string) error { + // does not follow symlinks! + file, err := fs.lfetch(pathname) + if err != nil { + return err + } + + if file.IsDir() { + // IEEE 1003.1: implementations may opt out of allowing the unlinking of directories. + // SFTP-v2: SSH_FXP_REMOVE may not remove directories. + return os.ErrInvalid + } + + // DO NOT use the file’s internal name. + // because of hard-links files cannot have a single canonical name. + delete(fs.files, pathname) + + return nil +} + +type listerat []os.FileInfo + +// Modeled after strings.Reader's ReadAt() implementation +func (f listerat) ListAt(ls []os.FileInfo, offset int64) (int, error) { + var n int + if offset >= int64(len(f)) { + return 0, io.EOF + } + n = copy(ls, f[offset:]) + if n < len(ls) { + return n, io.EOF + } + return n, nil +} + +func (fs *root) Filelist(r *Request) (ListerAt, error) { + if fs.mockErr != nil { + return nil, fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + switch r.Method { + case "List": + files, err := fs.readdir(r.Filepath) + if err != nil { + return nil, err + } + return listerat(files), nil + + case "Stat": + file, err := fs.fetch(r.Filepath) + if err != nil { + return nil, err + } + return listerat{file}, nil + } + + return nil, errors.New("unsupported") +} + +func (fs *root) readdir(pathname string) ([]os.FileInfo, error) { + dir, err := fs.fetch(pathname) + if err != nil { + return nil, err + } + + if !dir.IsDir() { + return nil, syscall.ENOTDIR + } + + var files []os.FileInfo + + for name, file := range fs.files { + if path.Dir(name) == dir.name { + files = append(files, file) + } + } + + sort.Slice(files, func(i, j int) bool { return files[i].Name() < files[j].Name() }) + + return files, nil +} + +func (fs *root) Readlink(pathname string) (string, error) { + file, err := fs.lfetch(pathname) + if err != nil { + return "", err + } + + if file.symlink == "" { + return "", os.ErrInvalid + } + + return file.symlink, nil +} + +// implements LstatFileLister interface +func (fs *root) Lstat(r *Request) (ListerAt, error) { + if fs.mockErr != nil { + return nil, fs.mockErr + } + _ = r.WithContext(r.Context()) // initialize context for deadlock testing + + fs.mu.Lock() + defer fs.mu.Unlock() + + file, err := fs.lfetch(r.Filepath) + if err != nil { + return nil, err + } + return listerat{file}, nil +} + +// In memory file-system-y thing that the Handlers live on +type root struct { + rootFile *memFile + mockErr error + + mu sync.Mutex + files map[string]*memFile +} + +// Set a mocked error that the next handler call will return. +// Set to nil to reset for no error. +func (fs *root) returnErr(err error) { + fs.mockErr = err +} + +func (fs *root) lfetch(path string) (*memFile, error) { + if path == "/" { + return fs.rootFile, nil + } + + file, ok := fs.files[path] + if file == nil { + if ok { + delete(fs.files, path) + } + + return nil, os.ErrNotExist + } + + return file, nil +} + +// canonName returns the “canonical” name of a file, that is: +// if the directory of the pathname is a symlink, it follows that symlink to the valid directory name. +// this is relatively easy, since `dir.name` will be the only valid canonical path for a directory. +func (fs *root) canonName(pathname string) (string, error) { + dirname, filename := path.Dir(pathname), path.Base(pathname) + + dir, err := fs.fetch(dirname) + if err != nil { + return "", err + } + + if !dir.IsDir() { + return "", syscall.ENOTDIR + } + + return path.Join(dir.name, filename), nil +} + +func (fs *root) exists(path string) bool { + path, err := fs.canonName(path) + if err != nil { + return false + } + + _, err = fs.lfetch(path) + + return err != os.ErrNotExist +} + +func (fs *root) fetch(pathname string) (*memFile, error) { + file, err := fs.lfetch(pathname) + if err != nil { + return nil, err + } + + var count int + for file.symlink != "" { + if count++; count > maxSymlinkFollows { + return nil, errTooManySymlinks + } + + linkTarget := file.symlink + if !path.IsAbs(linkTarget) { + linkTarget = path.Join(path.Dir(file.name), linkTarget) + } + + file, err = fs.lfetch(linkTarget) + if err != nil { + return nil, err + } + } + + return file, nil +} + +// Implements os.FileInfo, io.ReaderAt and io.WriterAt interfaces. +// These are the 3 interfaces necessary for the Handlers. +// Implements the optional interface TransferError. +type memFile struct { + name string + modtime time.Time + symlink string + isdir bool + + mu sync.RWMutex + content []byte + err error +} + +// These are helper functions, they must be called while holding the memFile.mu mutex +func (f *memFile) size() int64 { return int64(len(f.content)) } +func (f *memFile) grow(n int64) { f.content = append(f.content, make([]byte, n)...) } + +// Have memFile fulfill os.FileInfo interface +func (f *memFile) Name() string { return path.Base(f.name) } +func (f *memFile) Size() int64 { + f.mu.Lock() + defer f.mu.Unlock() + + return f.size() +} +func (f *memFile) Mode() os.FileMode { + if f.isdir { + return os.FileMode(0755) | os.ModeDir + } + if f.symlink != "" { + return os.FileMode(0777) | os.ModeSymlink + } + return os.FileMode(0644) +} +func (f *memFile) ModTime() time.Time { return f.modtime } +func (f *memFile) IsDir() bool { return f.isdir } +func (f *memFile) Sys() interface{} { + return fakeFileInfoSys() +} + +func (f *memFile) ReadAt(b []byte, off int64) (int, error) { + f.mu.Lock() + defer f.mu.Unlock() + + if f.err != nil { + return 0, f.err + } + + if off < 0 { + return 0, errors.New("memFile.ReadAt: negative offset") + } + + if off >= f.size() { + return 0, io.EOF + } + + n := copy(b, f.content[off:]) + if n < len(b) { + return n, io.EOF + } + + return n, nil +} + +func (f *memFile) WriteAt(b []byte, off int64) (int, error) { + // fmt.Println(string(p), off) + // mimic write delays, should be optional + time.Sleep(time.Microsecond * time.Duration(len(b))) + + f.mu.Lock() + defer f.mu.Unlock() + + if f.err != nil { + return 0, f.err + } + + grow := int64(len(b)) + off - f.size() + if grow > 0 { + f.grow(grow) + } + + return copy(f.content[off:], b), nil +} + +func (f *memFile) Truncate(size int64) error { + f.mu.Lock() + defer f.mu.Unlock() + + if f.err != nil { + return f.err + } + + grow := size - f.size() + if grow <= 0 { + f.content = f.content[:size] + } else { + f.grow(grow) + } + + return nil +} + +func (f *memFile) TransferError(err error) { + f.mu.Lock() + defer f.mu.Unlock() + + f.err = err +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-interfaces.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-interfaces.go new file mode 100644 index 0000000..13e7577 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-interfaces.go @@ -0,0 +1,159 @@ +package sftp + +import ( + "io" + "os" +) + +// WriterAtReaderAt defines the interface to return when a file is to +// be opened for reading and writing +type WriterAtReaderAt interface { + io.WriterAt + io.ReaderAt +} + +// Interfaces are differentiated based on required returned values. +// All input arguments are to be pulled from Request (the only arg). + +// The Handler interfaces all take the Request object as its only argument. +// All the data you should need to handle the call are in the Request object. +// The request.Method attribute is initially the most important one as it +// determines which Handler gets called. + +// FileReader should return an io.ReaderAt for the filepath +// Note in cases of an error, the error text will be sent to the client. +// Called for Methods: Get +type FileReader interface { + Fileread(*Request) (io.ReaderAt, error) +} + +// FileWriter should return an io.WriterAt for the filepath. +// +// The request server code will call Close() on the returned io.WriterAt +// object if an io.Closer type assertion succeeds. +// Note in cases of an error, the error text will be sent to the client. +// Note when receiving an Append flag it is important to not open files using +// O_APPEND if you plan to use WriteAt, as they conflict. +// Called for Methods: Put, Open +type FileWriter interface { + Filewrite(*Request) (io.WriterAt, error) +} + +// OpenFileWriter is a FileWriter that implements the generic OpenFile method. +// You need to implement this optional interface if you want to be able +// to read and write from/to the same handle. +// Called for Methods: Open +type OpenFileWriter interface { + FileWriter + OpenFile(*Request) (WriterAtReaderAt, error) +} + +// FileCmder should return an error +// Note in cases of an error, the error text will be sent to the client. +// Called for Methods: Setstat, Rename, Rmdir, Mkdir, Link, Symlink, Remove +type FileCmder interface { + Filecmd(*Request) error +} + +// PosixRenameFileCmder is a FileCmder that implements the PosixRename method. +// If this interface is implemented PosixRename requests will call it +// otherwise they will be handled in the same way as Rename +type PosixRenameFileCmder interface { + FileCmder + PosixRename(*Request) error +} + +// StatVFSFileCmder is a FileCmder that implements the StatVFS method. +// You need to implement this interface if you want to handle statvfs requests. +// Please also be sure that the statvfs@openssh.com extension is enabled +type StatVFSFileCmder interface { + FileCmder + StatVFS(*Request) (*StatVFS, error) +} + +// FileLister should return an object that fulfils the ListerAt interface +// Note in cases of an error, the error text will be sent to the client. +// Called for Methods: List, Stat, Readlink +// +// Since Filelist returns an os.FileInfo, this can make it non-ideal for implementing Readlink. +// This is because the Name receiver method defined by that interface defines that it should only return the base name. +// However, Readlink is required to be capable of returning essentially any arbitrary valid path relative or absolute. +// In order to implement this more expressive requirement, implement [ReadlinkFileLister] which will then be used instead. +type FileLister interface { + Filelist(*Request) (ListerAt, error) +} + +// LstatFileLister is a FileLister that implements the Lstat method. +// If this interface is implemented Lstat requests will call it +// otherwise they will be handled in the same way as Stat +type LstatFileLister interface { + FileLister + Lstat(*Request) (ListerAt, error) +} + +// RealPathFileLister is a FileLister that implements the Realpath method. +// The built-in RealPath implementation does not resolve symbolic links. +// By implementing this interface you can customize the returned path +// and, for example, resolve symbolinc links if needed for your use case. +// You have to return an absolute POSIX path. +// +// Up to v1.13.5 the signature for the RealPath method was: +// +// # RealPath(string) string +// +// we have added a legacyRealPathFileLister that implements the old method +// to ensure that your code does not break. +// You should use the new method signature to avoid future issues +type RealPathFileLister interface { + FileLister + RealPath(string) (string, error) +} + +// ReadlinkFileLister is a FileLister that implements the Readlink method. +// By implementing the Readlink method, it is possible to return any arbitrary valid path relative or absolute. +// This allows giving a better response than via the default FileLister (which is limited to os.FileInfo, whose Name method should only return the base name of a file) +type ReadlinkFileLister interface { + FileLister + Readlink(string) (string, error) +} + +// This interface is here for backward compatibility only +type legacyRealPathFileLister interface { + FileLister + RealPath(string) string +} + +// NameLookupFileLister is a FileLister that implmeents the LookupUsername and LookupGroupName methods. +// If this interface is implemented, then longname ls formatting will use these to convert usernames and groupnames. +type NameLookupFileLister interface { + FileLister + LookupUserName(string) string + LookupGroupName(string) string +} + +// ListerAt does for file lists what io.ReaderAt does for files, i.e. a []os.FileInfo buffer is passed to the ListAt function +// and the entries that are populated in the buffer will be passed to the client. +// +// ListAt should return the number of entries copied and an io.EOF error if at end of list. +// This is testable by comparing how many you copied to how many could be copied (eg. n < len(ls) below). +// The copy() builtin is best for the copying. +// +// Uid and gid information will on unix systems be retrieved from [os.FileInfo.Sys] +// if this function returns a [syscall.Stat_t] when called on a populated entry. +// Alternatively, if the entry implements [FileInfoUidGid], it will be used for uid and gid information. +// +// If a populated entry implements [FileInfoExtendedData], extended attributes will also be returned to the client. +// +// The request server code will call Close() on ListerAt if an io.Closer type assertion succeeds. +// +// Note in cases of an error, the error text will be sent to the client. +type ListerAt interface { + ListAt([]os.FileInfo, int64) (int, error) +} + +// TransferError is an optional interface that readerAt and writerAt +// can implement to be notified about the error causing Serve() to exit +// with the request still open +type TransferError interface { + TransferError(err error) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-plan9.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-plan9.go new file mode 100644 index 0000000..38f91bc --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-plan9.go @@ -0,0 +1,16 @@ +//go:build plan9 +// +build plan9 + +package sftp + +import ( + "syscall" +) + +func fakeFileInfoSys() interface{} { + return &syscall.Dir{} +} + +func testOsSys(sys interface{}) error { + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-readme.md b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-readme.md new file mode 100644 index 0000000..f8b81f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-readme.md @@ -0,0 +1,53 @@ +# Request Based SFTP API + +The request based API allows for custom backends in a way similar to the http +package. In order to create a backend you need to implement 4 handler +interfaces; one for reading, one for writing, one for misc commands and one for +listing files. Each has 1 required method and in each case those methods take +the Request as the only parameter and they each return something different. +These 4 interfaces are enough to handle all the SFTP traffic in a simplified +manner. + +The Request structure has 5 public fields which you will deal with. + +- Method (string) - string name of incoming call +- Filepath (string) - POSIX path of file to act on +- Flags (uint32) - 32bit bitmask value of file open/create flags +- Attrs ([]byte) - byte string of file attribute data +- Target (string) - target path for renames and sym-links + +Below are the methods and a brief description of what they need to do. + +### Fileread(*Request) (io.Reader, error) + +Handler for "Get" method and returns an io.Reader for the file which the server +then sends to the client. + +### Filewrite(*Request) (io.Writer, error) + +Handler for "Put" method and returns an io.Writer for the file which the server +then writes the uploaded file to. The file opening "pflags" are currently +preserved in the Request.Flags field as a 32bit bitmask value. See the [SFTP +spec](https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-6.3) for +details. + +### Filecmd(*Request) error + +Handles "SetStat", "Rename", "Rmdir", "Mkdir" and "Symlink" methods. Makes the +appropriate changes and returns nil for success or an filesystem like error +(eg. os.ErrNotExist). The attributes are currently propagated in their raw form +([]byte) and will need to be unmarshalled to be useful. See the respond method +on sshFxpSetstatPacket for example of you might want to do this. + +### Fileinfo(*Request) ([]os.FileInfo, error) + +Handles "List", "Stat", "Readlink" methods. Gathers/creates FileInfo structs +with the data on the files and returns in a list (list of 1 for Stat and +Readlink). + + +## TODO + +- Add support for API users to see trace/debugging info of what is going on +inside SFTP server. +- Unmarshal the file attributes into a structure on the Request object. diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-server.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-server.go new file mode 100644 index 0000000..08c24d7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-server.go @@ -0,0 +1,355 @@ +package sftp + +import ( + "context" + "errors" + "io" + "path" + "path/filepath" + "strconv" + "sync" +) + +const defaultMaxTxPacket uint32 = 1 << 15 + +// Handlers contains the 4 SFTP server request handlers. +type Handlers struct { + FileGet FileReader + FilePut FileWriter + FileCmd FileCmder + FileList FileLister +} + +// RequestServer abstracts the sftp protocol with an http request-like protocol +type RequestServer struct { + Handlers Handlers + + *serverConn + pktMgr *packetManager + + startDirectory string + maxTxPacket uint32 + + mu sync.RWMutex + handleCount int + openRequests map[string]*Request +} + +// A RequestServerOption is a function which applies configuration to a RequestServer. +type RequestServerOption func(*RequestServer) + +// WithRSAllocator enable the allocator. +// After processing a packet we keep in memory the allocated slices +// and we reuse them for new packets. +// The allocator is experimental +func WithRSAllocator() RequestServerOption { + return func(rs *RequestServer) { + alloc := newAllocator() + rs.pktMgr.alloc = alloc + rs.conn.alloc = alloc + } +} + +// WithStartDirectory sets a start directory to use as base for relative paths. +// If unset the default is "/" +func WithStartDirectory(startDirectory string) RequestServerOption { + return func(rs *RequestServer) { + rs.startDirectory = cleanPath(startDirectory) + } +} + +// WithRSMaxTxPacket sets the maximum size of the payload returned to the client, +// measured in bytes. The default value is 32768 bytes, and this option +// can only be used to increase it. Setting this option to a larger value +// should be safe, because the client decides the size of the requested payload. +// +// The default maximum packet size is 32768 bytes. +func WithRSMaxTxPacket(size uint32) RequestServerOption { + return func(rs *RequestServer) { + if size < defaultMaxTxPacket { + return + } + + rs.maxTxPacket = size + } +} + +// NewRequestServer creates/allocates/returns new RequestServer. +// Normally there will be one server per user-session. +func NewRequestServer(rwc io.ReadWriteCloser, h Handlers, options ...RequestServerOption) *RequestServer { + svrConn := &serverConn{ + conn: conn{ + Reader: rwc, + WriteCloser: rwc, + }, + } + rs := &RequestServer{ + Handlers: h, + + serverConn: svrConn, + pktMgr: newPktMgr(svrConn), + + startDirectory: "/", + maxTxPacket: defaultMaxTxPacket, + + openRequests: make(map[string]*Request), + } + + for _, o := range options { + o(rs) + } + return rs +} + +// New Open packet/Request +func (rs *RequestServer) nextRequest(r *Request) string { + rs.mu.Lock() + defer rs.mu.Unlock() + + rs.handleCount++ + + r.handle = strconv.Itoa(rs.handleCount) + rs.openRequests[r.handle] = r + + return r.handle +} + +// Returns Request from openRequests, bool is false if it is missing. +// +// The Requests in openRequests work essentially as open file descriptors that +// you can do different things with. What you are doing with it are denoted by +// the first packet of that type (read/write/etc). +func (rs *RequestServer) getRequest(handle string) (*Request, bool) { + rs.mu.RLock() + defer rs.mu.RUnlock() + + r, ok := rs.openRequests[handle] + return r, ok +} + +// Close the Request and clear from openRequests map +func (rs *RequestServer) closeRequest(handle string) error { + rs.mu.Lock() + defer rs.mu.Unlock() + + if r, ok := rs.openRequests[handle]; ok { + delete(rs.openRequests, handle) + return r.close() + } + + return EBADF +} + +// Close the read/write/closer to trigger exiting the main server loop +func (rs *RequestServer) Close() error { return rs.conn.Close() } + +func (rs *RequestServer) serveLoop(pktChan chan<- orderedRequest) error { + defer close(pktChan) // shuts down sftpServerWorkers + + var err error + var pkt requestPacket + var pktType fxp + var pktBytes []byte + + for { + pktType, pktBytes, err = rs.serverConn.recvPacket(rs.pktMgr.getNextOrderID()) + if err != nil { + // we don't care about releasing allocated pages here, the server will quit and the allocator freed + return err + } + + pkt, err = makePacket(rxPacket{pktType, pktBytes}) + if err != nil { + switch { + case errors.Is(err, errUnknownExtendedPacket): + // do nothing + default: + debug("makePacket err: %v", err) + rs.conn.Close() // shuts down recvPacket + return err + } + } + + pktChan <- rs.pktMgr.newOrderedRequest(pkt) + } +} + +// Serve requests for user session +func (rs *RequestServer) Serve() error { + defer func() { + if rs.pktMgr.alloc != nil { + rs.pktMgr.alloc.Free() + } + }() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var wg sync.WaitGroup + runWorker := func(ch chan orderedRequest) { + wg.Add(1) + go func() { + defer wg.Done() + if err := rs.packetWorker(ctx, ch); err != nil { + rs.conn.Close() // shuts down recvPacket + } + }() + } + pktChan := rs.pktMgr.workerChan(runWorker) + + err := rs.serveLoop(pktChan) + + wg.Wait() // wait for all workers to exit + + rs.mu.Lock() + defer rs.mu.Unlock() + + // make sure all open requests are properly closed + // (eg. possible on dropped connections, client crashes, etc.) + for handle, req := range rs.openRequests { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + req.transferError(err) + + delete(rs.openRequests, handle) + req.close() + } + + return err +} + +func (rs *RequestServer) packetWorker(ctx context.Context, pktChan chan orderedRequest) error { + for pkt := range pktChan { + orderID := pkt.orderID() + if epkt, ok := pkt.requestPacket.(*sshFxpExtendedPacket); ok { + if epkt.SpecificPacket != nil { + pkt.requestPacket = epkt.SpecificPacket + } + } + + var rpkt responsePacket + switch pkt := pkt.requestPacket.(type) { + case *sshFxInitPacket: + rpkt = &sshFxVersionPacket{Version: sftpProtocolVersion, Extensions: sftpExtensions} + case *sshFxpClosePacket: + handle := pkt.getHandle() + rpkt = statusFromError(pkt.ID, rs.closeRequest(handle)) + case *sshFxpRealpathPacket: + var realPath string + var err error + + switch pather := rs.Handlers.FileList.(type) { + case RealPathFileLister: + realPath, err = pather.RealPath(pkt.getPath()) + case legacyRealPathFileLister: + realPath = pather.RealPath(pkt.getPath()) + default: + realPath = cleanPathWithBase(rs.startDirectory, pkt.getPath()) + } + if err != nil { + rpkt = statusFromError(pkt.ID, err) + } else { + rpkt = cleanPacketPath(pkt, realPath) + } + case *sshFxpOpendirPacket: + request := requestFromPacket(ctx, pkt, rs.startDirectory) + handle := rs.nextRequest(request) + rpkt = request.opendir(rs.Handlers, pkt) + if _, ok := rpkt.(*sshFxpHandlePacket); !ok { + // if we return an error we have to remove the handle from the active ones + rs.closeRequest(handle) + } + case *sshFxpOpenPacket: + request := requestFromPacket(ctx, pkt, rs.startDirectory) + handle := rs.nextRequest(request) + rpkt = request.open(rs.Handlers, pkt) + if _, ok := rpkt.(*sshFxpHandlePacket); !ok { + // if we return an error we have to remove the handle from the active ones + rs.closeRequest(handle) + } + case *sshFxpFstatPacket: + handle := pkt.getHandle() + request, ok := rs.getRequest(handle) + if !ok { + rpkt = statusFromError(pkt.ID, EBADF) + } else { + request = &Request{ + Method: "Stat", + Filepath: cleanPathWithBase(rs.startDirectory, request.Filepath), + } + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID, rs.maxTxPacket) + } + case *sshFxpFsetstatPacket: + handle := pkt.getHandle() + request, ok := rs.getRequest(handle) + if !ok { + rpkt = statusFromError(pkt.ID, EBADF) + } else { + request = &Request{ + Method: "Setstat", + Filepath: cleanPathWithBase(rs.startDirectory, request.Filepath), + } + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID, rs.maxTxPacket) + } + case *sshFxpExtendedPacketPosixRename: + request := &Request{ + Method: "PosixRename", + Filepath: cleanPathWithBase(rs.startDirectory, pkt.Oldpath), + Target: cleanPathWithBase(rs.startDirectory, pkt.Newpath), + } + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID, rs.maxTxPacket) + case *sshFxpExtendedPacketStatVFS: + request := &Request{ + Method: "StatVFS", + Filepath: cleanPathWithBase(rs.startDirectory, pkt.Path), + } + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID, rs.maxTxPacket) + case hasHandle: + handle := pkt.getHandle() + request, ok := rs.getRequest(handle) + if !ok { + rpkt = statusFromError(pkt.id(), EBADF) + } else { + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID, rs.maxTxPacket) + } + case hasPath: + request := requestFromPacket(ctx, pkt, rs.startDirectory) + rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID, rs.maxTxPacket) + request.close() + default: + rpkt = statusFromError(pkt.id(), ErrSSHFxOpUnsupported) + } + + rs.pktMgr.readyPacket( + rs.pktMgr.newOrderedResponse(rpkt, orderID)) + } + return nil +} + +// clean and return name packet for file +func cleanPacketPath(pkt *sshFxpRealpathPacket, realPath string) responsePacket { + return &sshFxpNamePacket{ + ID: pkt.id(), + NameAttrs: []*sshFxpNameAttr{ + { + Name: realPath, + LongName: realPath, + Attrs: emptyFileStat, + }, + }, + } +} + +// Makes sure we have a clean POSIX (/) absolute path to work with +func cleanPath(p string) string { + return cleanPathWithBase("/", p) +} + +func cleanPathWithBase(base, p string) string { + p = filepath.ToSlash(filepath.Clean(p)) + if !path.IsAbs(p) { + return path.Join(base, p) + } + return p +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-unix.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-unix.go new file mode 100644 index 0000000..e3e037d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request-unix.go @@ -0,0 +1,24 @@ +//go:build !windows && !plan9 +// +build !windows,!plan9 + +package sftp + +import ( + "errors" + "syscall" +) + +func fakeFileInfoSys() interface{} { + return &syscall.Stat_t{Uid: 65534, Gid: 65534} +} + +func testOsSys(sys interface{}) error { + fstat := sys.(*FileStat) + if fstat.UID != uint32(65534) { + return errors.New("Uid failed to match") + } + if fstat.GID != uint32(65534) { + return errors.New("Gid failed to match") + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request.go new file mode 100644 index 0000000..e7c47a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request.go @@ -0,0 +1,670 @@ +package sftp + +import ( + "context" + "errors" + "fmt" + "io" + "os" + "strings" + "sync" + "syscall" +) + +// MaxFilelist is the max number of files to return in a readdir batch. +var MaxFilelist int64 = 100 + +// state encapsulates the reader/writer/readdir from handlers. +type state struct { + mu sync.RWMutex + + writerAt io.WriterAt + readerAt io.ReaderAt + writerAtReaderAt WriterAtReaderAt + listerAt ListerAt + lsoffset int64 +} + +// copy returns a shallow copy the state. +// This is broken out to specific fields, +// because we have to copy around the mutex in state. +func (s *state) copy() state { + s.mu.RLock() + defer s.mu.RUnlock() + + return state{ + writerAt: s.writerAt, + readerAt: s.readerAt, + writerAtReaderAt: s.writerAtReaderAt, + listerAt: s.listerAt, + lsoffset: s.lsoffset, + } +} + +func (s *state) setReaderAt(rd io.ReaderAt) { + s.mu.Lock() + defer s.mu.Unlock() + + s.readerAt = rd +} + +func (s *state) getReaderAt() io.ReaderAt { + s.mu.RLock() + defer s.mu.RUnlock() + + return s.readerAt +} + +func (s *state) setWriterAt(rd io.WriterAt) { + s.mu.Lock() + defer s.mu.Unlock() + + s.writerAt = rd +} + +func (s *state) getWriterAt() io.WriterAt { + s.mu.RLock() + defer s.mu.RUnlock() + + return s.writerAt +} + +func (s *state) setWriterAtReaderAt(rw WriterAtReaderAt) { + s.mu.Lock() + defer s.mu.Unlock() + + s.writerAtReaderAt = rw +} + +func (s *state) getWriterAtReaderAt() WriterAtReaderAt { + s.mu.RLock() + defer s.mu.RUnlock() + + return s.writerAtReaderAt +} + +func (s *state) getAllReaderWriters() (io.ReaderAt, io.WriterAt, WriterAtReaderAt) { + s.mu.RLock() + defer s.mu.RUnlock() + + return s.readerAt, s.writerAt, s.writerAtReaderAt +} + +// Returns current offset for file list +func (s *state) lsNext() int64 { + s.mu.RLock() + defer s.mu.RUnlock() + + return s.lsoffset +} + +// Increases next offset +func (s *state) lsInc(offset int64) { + s.mu.Lock() + defer s.mu.Unlock() + + s.lsoffset += offset +} + +// manage file read/write state +func (s *state) setListerAt(la ListerAt) { + s.mu.Lock() + defer s.mu.Unlock() + + s.listerAt = la +} + +func (s *state) getListerAt() ListerAt { + s.mu.RLock() + defer s.mu.RUnlock() + + return s.listerAt +} + +func (s *state) closeListerAt() error { + s.mu.Lock() + defer s.mu.Unlock() + + var err error + + if s.listerAt != nil { + if c, ok := s.listerAt.(io.Closer); ok { + err = c.Close() + } + s.listerAt = nil + } + + return err +} + +// Request contains the data and state for the incoming service request. +type Request struct { + // Get, Put, Setstat, Stat, Rename, Remove + // Rmdir, Mkdir, List, Readlink, Link, Symlink + Method string + Filepath string + Flags uint32 + Attrs []byte // convert to sub-struct + Target string // for renames and sym-links + handle string + + // reader/writer/readdir from handlers + state + + // context lasts duration of request + ctx context.Context + cancelCtx context.CancelFunc +} + +// NewRequest creates a new Request object. +func NewRequest(method, path string) *Request { + return &Request{ + Method: method, + Filepath: cleanPath(path), + } +} + +// copy returns a shallow copy of existing request. +// This is broken out to specific fields, +// because we have to copy around the mutex in state. +func (r *Request) copy() *Request { + return &Request{ + Method: r.Method, + Filepath: r.Filepath, + Flags: r.Flags, + Attrs: r.Attrs, + Target: r.Target, + handle: r.handle, + + state: r.state.copy(), + + ctx: r.ctx, + cancelCtx: r.cancelCtx, + } +} + +// New Request initialized based on packet data +func requestFromPacket(ctx context.Context, pkt hasPath, baseDir string) *Request { + request := &Request{ + Method: requestMethod(pkt), + Filepath: cleanPathWithBase(baseDir, pkt.getPath()), + } + request.ctx, request.cancelCtx = context.WithCancel(ctx) + + switch p := pkt.(type) { + case *sshFxpOpenPacket: + request.Flags = p.Pflags + request.Attrs = p.Attrs.([]byte) + case *sshFxpSetstatPacket: + request.Flags = p.Flags + request.Attrs = p.Attrs.([]byte) + case *sshFxpRenamePacket: + request.Target = cleanPathWithBase(baseDir, p.Newpath) + case *sshFxpSymlinkPacket: + // NOTE: given a POSIX compliant signature: symlink(target, linkpath string) + // this makes Request.Target the linkpath, and Request.Filepath the target. + request.Target = cleanPathWithBase(baseDir, p.Linkpath) + request.Filepath = p.Targetpath + case *sshFxpExtendedPacketHardlink: + request.Target = cleanPathWithBase(baseDir, p.Newpath) + } + return request +} + +// Context returns the request's context. To change the context, +// use WithContext. +// +// The returned context is always non-nil; it defaults to the +// background context. +// +// For incoming server requests, the context is canceled when the +// request is complete or the client's connection closes. +func (r *Request) Context() context.Context { + if r.ctx != nil { + return r.ctx + } + return context.Background() +} + +// WithContext returns a copy of r with its context changed to ctx. +// The provided ctx must be non-nil. +func (r *Request) WithContext(ctx context.Context) *Request { + if ctx == nil { + panic("nil context") + } + r2 := r.copy() + r2.ctx = ctx + r2.cancelCtx = nil + return r2 +} + +// Close reader/writer if possible +func (r *Request) close() error { + defer func() { + if r.cancelCtx != nil { + r.cancelCtx() + } + }() + + err := r.state.closeListerAt() + + rd, wr, rw := r.getAllReaderWriters() + + // Close errors on a Writer are far more likely to be the important one. + // As they can be information that there was a loss of data. + if c, ok := wr.(io.Closer); ok { + if err2 := c.Close(); err == nil { + // update error if it is still nil + err = err2 + } + } + + if c, ok := rw.(io.Closer); ok { + if err2 := c.Close(); err == nil { + // update error if it is still nil + err = err2 + + r.setWriterAtReaderAt(nil) + } + } + + if c, ok := rd.(io.Closer); ok { + if err2 := c.Close(); err == nil { + // update error if it is still nil + err = err2 + } + } + + return err +} + +// Notify transfer error if any +func (r *Request) transferError(err error) { + if err == nil { + return + } + + rd, wr, rw := r.getAllReaderWriters() + + if t, ok := wr.(TransferError); ok { + t.TransferError(err) + } + + if t, ok := rw.(TransferError); ok { + t.TransferError(err) + } + + if t, ok := rd.(TransferError); ok { + t.TransferError(err) + } +} + +// called from worker to handle packet/request +func (r *Request) call(handlers Handlers, pkt requestPacket, alloc *allocator, orderID uint32, maxTxPacket uint32) responsePacket { + switch r.Method { + case "Get": + return fileget(handlers.FileGet, r, pkt, alloc, orderID, maxTxPacket) + case "Put": + return fileput(handlers.FilePut, r, pkt, alloc, orderID, maxTxPacket) + case "Open": + return fileputget(handlers.FilePut, r, pkt, alloc, orderID, maxTxPacket) + case "Setstat", "Rename", "Rmdir", "Mkdir", "Link", "Symlink", "Remove", "PosixRename", "StatVFS": + return filecmd(handlers.FileCmd, r, pkt) + case "List": + return filelist(handlers.FileList, r, pkt) + case "Stat", "Lstat": + return filestat(handlers.FileList, r, pkt) + case "Readlink": + if readlinkFileLister, ok := handlers.FileList.(ReadlinkFileLister); ok { + return readlink(readlinkFileLister, r, pkt) + } + return filestat(handlers.FileList, r, pkt) + default: + return statusFromError(pkt.id(), fmt.Errorf("unexpected method: %s", r.Method)) + } +} + +// Additional initialization for Open packets +func (r *Request) open(h Handlers, pkt requestPacket) responsePacket { + flags := r.Pflags() + + id := pkt.id() + + switch { + case flags.Write, flags.Append, flags.Creat, flags.Trunc: + if flags.Read { + if openFileWriter, ok := h.FilePut.(OpenFileWriter); ok { + r.Method = "Open" + rw, err := openFileWriter.OpenFile(r) + if err != nil { + return statusFromError(id, err) + } + + r.setWriterAtReaderAt(rw) + + return &sshFxpHandlePacket{ + ID: id, + Handle: r.handle, + } + } + } + + r.Method = "Put" + wr, err := h.FilePut.Filewrite(r) + if err != nil { + return statusFromError(id, err) + } + + r.setWriterAt(wr) + + case flags.Read: + r.Method = "Get" + rd, err := h.FileGet.Fileread(r) + if err != nil { + return statusFromError(id, err) + } + + r.setReaderAt(rd) + + default: + return statusFromError(id, errors.New("bad file flags")) + } + + return &sshFxpHandlePacket{ + ID: id, + Handle: r.handle, + } +} + +func (r *Request) opendir(h Handlers, pkt requestPacket) responsePacket { + r.Method = "List" + la, err := h.FileList.Filelist(r) + if err != nil { + return statusFromError(pkt.id(), wrapPathError(r.Filepath, err)) + } + + r.setListerAt(la) + + return &sshFxpHandlePacket{ + ID: pkt.id(), + Handle: r.handle, + } +} + +// wrap FileReader handler +func fileget(h FileReader, r *Request, pkt requestPacket, alloc *allocator, orderID uint32, maxTxPacket uint32) responsePacket { + rd := r.getReaderAt() + if rd == nil { + return statusFromError(pkt.id(), errors.New("unexpected read packet")) + } + + data, offset, _ := packetData(pkt, alloc, orderID, maxTxPacket) + + n, err := rd.ReadAt(data, offset) + // only return EOF error if no data left to read + if err != nil && (err != io.EOF || n == 0) { + return statusFromError(pkt.id(), err) + } + + return &sshFxpDataPacket{ + ID: pkt.id(), + Length: uint32(n), + Data: data[:n], + } +} + +// wrap FileWriter handler +func fileput(h FileWriter, r *Request, pkt requestPacket, alloc *allocator, orderID uint32, maxTxPacket uint32) responsePacket { + wr := r.getWriterAt() + if wr == nil { + return statusFromError(pkt.id(), errors.New("unexpected write packet")) + } + + data, offset, _ := packetData(pkt, alloc, orderID, maxTxPacket) + + _, err := wr.WriteAt(data, offset) + return statusFromError(pkt.id(), err) +} + +// wrap OpenFileWriter handler +func fileputget(h FileWriter, r *Request, pkt requestPacket, alloc *allocator, orderID uint32, maxTxPacket uint32) responsePacket { + rw := r.getWriterAtReaderAt() + if rw == nil { + return statusFromError(pkt.id(), errors.New("unexpected write and read packet")) + } + + switch p := pkt.(type) { + case *sshFxpReadPacket: + data, offset := p.getDataSlice(alloc, orderID, maxTxPacket), int64(p.Offset) + + n, err := rw.ReadAt(data, offset) + // only return EOF error if no data left to read + if err != nil && (err != io.EOF || n == 0) { + return statusFromError(pkt.id(), err) + } + + return &sshFxpDataPacket{ + ID: pkt.id(), + Length: uint32(n), + Data: data[:n], + } + + case *sshFxpWritePacket: + data, offset := p.Data, int64(p.Offset) + + _, err := rw.WriteAt(data, offset) + return statusFromError(pkt.id(), err) + + default: + return statusFromError(pkt.id(), errors.New("unexpected packet type for read or write")) + } +} + +// file data for additional read/write packets +func packetData(p requestPacket, alloc *allocator, orderID uint32, maxTxPacket uint32) (data []byte, offset int64, length uint32) { + switch p := p.(type) { + case *sshFxpReadPacket: + return p.getDataSlice(alloc, orderID, maxTxPacket), int64(p.Offset), p.Len + case *sshFxpWritePacket: + return p.Data, int64(p.Offset), p.Length + } + return +} + +// wrap FileCmder handler +func filecmd(h FileCmder, r *Request, pkt requestPacket) responsePacket { + switch p := pkt.(type) { + case *sshFxpFsetstatPacket: + r.Flags = p.Flags + r.Attrs = p.Attrs.([]byte) + } + + switch r.Method { + case "PosixRename": + if posixRenamer, ok := h.(PosixRenameFileCmder); ok { + err := posixRenamer.PosixRename(r) + return statusFromError(pkt.id(), err) + } + + // PosixRenameFileCmder not implemented handle this request as a Rename + r.Method = "Rename" + err := h.Filecmd(r) + return statusFromError(pkt.id(), err) + + case "StatVFS": + if statVFSCmdr, ok := h.(StatVFSFileCmder); ok { + stat, err := statVFSCmdr.StatVFS(r) + if err != nil { + return statusFromError(pkt.id(), err) + } + stat.ID = pkt.id() + return stat + } + + return statusFromError(pkt.id(), ErrSSHFxOpUnsupported) + } + + err := h.Filecmd(r) + return statusFromError(pkt.id(), err) +} + +// wrap FileLister handler +func filelist(h FileLister, r *Request, pkt requestPacket) responsePacket { + lister := r.getListerAt() + if lister == nil { + return statusFromError(pkt.id(), errors.New("unexpected dir packet")) + } + + offset := r.lsNext() + finfo := make([]os.FileInfo, MaxFilelist) + n, err := lister.ListAt(finfo, offset) + r.lsInc(int64(n)) + // ignore EOF as we only return it when there are no results + finfo = finfo[:n] // avoid need for nil tests below + + switch r.Method { + case "List": + if err != nil && (err != io.EOF || n == 0) { + return statusFromError(pkt.id(), err) + } + + nameAttrs := make([]*sshFxpNameAttr, 0, len(finfo)) + + // If the type conversion fails, we get untyped `nil`, + // which is handled by not looking up any names. + idLookup, _ := h.(NameLookupFileLister) + + for _, fi := range finfo { + nameAttrs = append(nameAttrs, &sshFxpNameAttr{ + Name: fi.Name(), + LongName: runLs(idLookup, fi), + Attrs: []interface{}{fi}, + }) + } + + return &sshFxpNamePacket{ + ID: pkt.id(), + NameAttrs: nameAttrs, + } + + default: + err = fmt.Errorf("unexpected method: %s", r.Method) + return statusFromError(pkt.id(), err) + } +} + +func filestat(h FileLister, r *Request, pkt requestPacket) responsePacket { + var lister ListerAt + var err error + + if r.Method == "Lstat" { + if lstatFileLister, ok := h.(LstatFileLister); ok { + lister, err = lstatFileLister.Lstat(r) + } else { + // LstatFileLister not implemented handle this request as a Stat + r.Method = "Stat" + lister, err = h.Filelist(r) + } + } else { + lister, err = h.Filelist(r) + } + if err != nil { + return statusFromError(pkt.id(), err) + } + finfo := make([]os.FileInfo, 1) + n, err := lister.ListAt(finfo, 0) + finfo = finfo[:n] // avoid need for nil tests below + + switch r.Method { + case "Stat", "Lstat": + if err != nil && err != io.EOF { + return statusFromError(pkt.id(), err) + } + if n == 0 { + err = &os.PathError{ + Op: strings.ToLower(r.Method), + Path: r.Filepath, + Err: syscall.ENOENT, + } + return statusFromError(pkt.id(), err) + } + return &sshFxpStatResponse{ + ID: pkt.id(), + info: finfo[0], + } + case "Readlink": + if err != nil && err != io.EOF { + return statusFromError(pkt.id(), err) + } + if n == 0 { + err = &os.PathError{ + Op: "readlink", + Path: r.Filepath, + Err: syscall.ENOENT, + } + return statusFromError(pkt.id(), err) + } + filename := finfo[0].Name() + return &sshFxpNamePacket{ + ID: pkt.id(), + NameAttrs: []*sshFxpNameAttr{ + { + Name: filename, + LongName: filename, + Attrs: emptyFileStat, + }, + }, + } + default: + err = fmt.Errorf("unexpected method: %s", r.Method) + return statusFromError(pkt.id(), err) + } +} + +func readlink(readlinkFileLister ReadlinkFileLister, r *Request, pkt requestPacket) responsePacket { + resolved, err := readlinkFileLister.Readlink(r.Filepath) + if err != nil { + return statusFromError(pkt.id(), err) + } + return &sshFxpNamePacket{ + ID: pkt.id(), + NameAttrs: []*sshFxpNameAttr{ + { + Name: resolved, + LongName: resolved, + Attrs: emptyFileStat, + }, + }, + } +} + +// init attributes of request object from packet data +func requestMethod(p requestPacket) (method string) { + switch p.(type) { + case *sshFxpReadPacket, *sshFxpWritePacket, *sshFxpOpenPacket: + // set in open() above + case *sshFxpOpendirPacket, *sshFxpReaddirPacket: + // set in opendir() above + case *sshFxpSetstatPacket, *sshFxpFsetstatPacket: + method = "Setstat" + case *sshFxpRenamePacket: + method = "Rename" + case *sshFxpSymlinkPacket: + method = "Symlink" + case *sshFxpRemovePacket: + method = "Remove" + case *sshFxpStatPacket, *sshFxpFstatPacket: + method = "Stat" + case *sshFxpLstatPacket: + method = "Lstat" + case *sshFxpRmdirPacket: + method = "Rmdir" + case *sshFxpReadlinkPacket: + method = "Readlink" + case *sshFxpMkdirPacket: + method = "Mkdir" + case *sshFxpExtendedPacketHardlink: + method = "Link" + } + return method +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request_windows.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request_windows.go new file mode 100644 index 0000000..bd1d686 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/request_windows.go @@ -0,0 +1,13 @@ +package sftp + +import ( + "syscall" +) + +func fakeFileInfoSys() interface{} { + return syscall.Win32FileAttributeData{} +} + +func testOsSys(sys interface{}) error { + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server.go new file mode 100644 index 0000000..7735c42 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server.go @@ -0,0 +1,657 @@ +package sftp + +// sftp server counterpart + +import ( + "encoding" + "errors" + "fmt" + "io" + "io/fs" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "sync" + "syscall" + "time" +) + +const ( + // SftpServerWorkerCount defines the number of workers for the SFTP server + SftpServerWorkerCount = 8 +) + +type file interface { + Stat() (os.FileInfo, error) + ReadAt(b []byte, off int64) (int, error) + WriteAt(b []byte, off int64) (int, error) + Readdir(int) ([]os.FileInfo, error) + Name() string + Truncate(int64) error + Chmod(mode fs.FileMode) error + Chown(uid, gid int) error + Close() error +} + +// Server is an SSH File Transfer Protocol (sftp) server. +// This is intended to provide the sftp subsystem to an ssh server daemon. +// This implementation currently supports most of sftp server protocol version 3, +// as specified at https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt +type Server struct { + *serverConn + debugStream io.Writer + readOnly bool + pktMgr *packetManager + openFiles map[string]file + openFilesLock sync.RWMutex + handleCount int + workDir string + winRoot bool + maxTxPacket uint32 +} + +func (svr *Server) nextHandle(f file) string { + svr.openFilesLock.Lock() + defer svr.openFilesLock.Unlock() + svr.handleCount++ + handle := strconv.Itoa(svr.handleCount) + svr.openFiles[handle] = f + return handle +} + +func (svr *Server) closeHandle(handle string) error { + svr.openFilesLock.Lock() + defer svr.openFilesLock.Unlock() + if f, ok := svr.openFiles[handle]; ok { + delete(svr.openFiles, handle) + return f.Close() + } + + return EBADF +} + +func (svr *Server) getHandle(handle string) (file, bool) { + svr.openFilesLock.RLock() + defer svr.openFilesLock.RUnlock() + f, ok := svr.openFiles[handle] + return f, ok +} + +type serverRespondablePacket interface { + encoding.BinaryUnmarshaler + id() uint32 + respond(svr *Server) responsePacket +} + +// NewServer creates a new Server instance around the provided streams, serving +// content from the root of the filesystem. Optionally, ServerOption +// functions may be specified to further configure the Server. +// +// A subsequent call to Serve() is required to begin serving files over SFTP. +func NewServer(rwc io.ReadWriteCloser, options ...ServerOption) (*Server, error) { + svrConn := &serverConn{ + conn: conn{ + Reader: rwc, + WriteCloser: rwc, + }, + } + s := &Server{ + serverConn: svrConn, + debugStream: ioutil.Discard, + pktMgr: newPktMgr(svrConn), + openFiles: make(map[string]file), + maxTxPacket: defaultMaxTxPacket, + } + + for _, o := range options { + if err := o(s); err != nil { + return nil, err + } + } + + return s, nil +} + +// A ServerOption is a function which applies configuration to a Server. +type ServerOption func(*Server) error + +// WithDebug enables Server debugging output to the supplied io.Writer. +func WithDebug(w io.Writer) ServerOption { + return func(s *Server) error { + s.debugStream = w + return nil + } +} + +// ReadOnly configures a Server to serve files in read-only mode. +func ReadOnly() ServerOption { + return func(s *Server) error { + s.readOnly = true + return nil + } +} + +// WindowsRootEnumeratesDrives configures a Server to serve a virtual '/' for windows that lists all drives +func WindowsRootEnumeratesDrives() ServerOption { + return func(s *Server) error { + s.winRoot = true + return nil + } +} + +// WithAllocator enable the allocator. +// After processing a packet we keep in memory the allocated slices +// and we reuse them for new packets. +// The allocator is experimental +func WithAllocator() ServerOption { + return func(s *Server) error { + alloc := newAllocator() + s.pktMgr.alloc = alloc + s.conn.alloc = alloc + return nil + } +} + +// WithServerWorkingDirectory sets a working directory to use as base +// for relative paths. +// If unset the default is current working directory (os.Getwd). +func WithServerWorkingDirectory(workDir string) ServerOption { + return func(s *Server) error { + s.workDir = cleanPath(workDir) + return nil + } +} + +// WithMaxTxPacket sets the maximum size of the payload returned to the client, +// measured in bytes. The default value is 32768 bytes, and this option +// can only be used to increase it. Setting this option to a larger value +// should be safe, because the client decides the size of the requested payload. +// +// The default maximum packet size is 32768 bytes. +func WithMaxTxPacket(size uint32) ServerOption { + return func(s *Server) error { + if size < defaultMaxTxPacket { + return errors.New("size must be greater than or equal to 32768") + } + + s.maxTxPacket = size + + return nil + } +} + +type rxPacket struct { + pktType fxp + pktBytes []byte +} + +// Up to N parallel servers +func (svr *Server) sftpServerWorker(pktChan chan orderedRequest) error { + for pkt := range pktChan { + // readonly checks + readonly := true + switch pkt := pkt.requestPacket.(type) { + case notReadOnly: + readonly = false + case *sshFxpOpenPacket: + readonly = pkt.readonly() + case *sshFxpExtendedPacket: + readonly = pkt.readonly() + } + + // If server is operating read-only and a write operation is requested, + // return permission denied + if !readonly && svr.readOnly { + svr.pktMgr.readyPacket( + svr.pktMgr.newOrderedResponse(statusFromError(pkt.id(), syscall.EPERM), pkt.orderID()), + ) + continue + } + + if err := handlePacket(svr, pkt); err != nil { + return err + } + } + return nil +} + +func handlePacket(s *Server, p orderedRequest) error { + var rpkt responsePacket + orderID := p.orderID() + switch p := p.requestPacket.(type) { + case *sshFxInitPacket: + rpkt = &sshFxVersionPacket{ + Version: sftpProtocolVersion, + Extensions: sftpExtensions, + } + case *sshFxpStatPacket: + // stat the requested file + info, err := os.Stat(s.toLocalPath(p.Path)) + rpkt = &sshFxpStatResponse{ + ID: p.ID, + info: info, + } + if err != nil { + rpkt = statusFromError(p.ID, err) + } + case *sshFxpLstatPacket: + // stat the requested file + info, err := s.lstat(s.toLocalPath(p.Path)) + rpkt = &sshFxpStatResponse{ + ID: p.ID, + info: info, + } + if err != nil { + rpkt = statusFromError(p.ID, err) + } + case *sshFxpFstatPacket: + f, ok := s.getHandle(p.Handle) + var err error = EBADF + var info os.FileInfo + if ok { + info, err = f.Stat() + rpkt = &sshFxpStatResponse{ + ID: p.ID, + info: info, + } + } + if err != nil { + rpkt = statusFromError(p.ID, err) + } + case *sshFxpMkdirPacket: + // TODO FIXME: ignore flags field + err := os.Mkdir(s.toLocalPath(p.Path), 0o755) + rpkt = statusFromError(p.ID, err) + case *sshFxpRmdirPacket: + err := os.Remove(s.toLocalPath(p.Path)) + rpkt = statusFromError(p.ID, err) + case *sshFxpRemovePacket: + err := os.Remove(s.toLocalPath(p.Filename)) + rpkt = statusFromError(p.ID, err) + case *sshFxpRenamePacket: + err := os.Rename(s.toLocalPath(p.Oldpath), s.toLocalPath(p.Newpath)) + rpkt = statusFromError(p.ID, err) + case *sshFxpSymlinkPacket: + err := os.Symlink(s.toLocalPath(p.Targetpath), s.toLocalPath(p.Linkpath)) + rpkt = statusFromError(p.ID, err) + case *sshFxpClosePacket: + rpkt = statusFromError(p.ID, s.closeHandle(p.Handle)) + case *sshFxpReadlinkPacket: + f, err := os.Readlink(s.toLocalPath(p.Path)) + rpkt = &sshFxpNamePacket{ + ID: p.ID, + NameAttrs: []*sshFxpNameAttr{ + { + Name: f, + LongName: f, + Attrs: emptyFileStat, + }, + }, + } + if err != nil { + rpkt = statusFromError(p.ID, err) + } + case *sshFxpRealpathPacket: + f, err := filepath.Abs(s.toLocalPath(p.Path)) + f = cleanPath(f) + rpkt = &sshFxpNamePacket{ + ID: p.ID, + NameAttrs: []*sshFxpNameAttr{ + { + Name: f, + LongName: f, + Attrs: emptyFileStat, + }, + }, + } + if err != nil { + rpkt = statusFromError(p.ID, err) + } + case *sshFxpOpendirPacket: + lp := s.toLocalPath(p.Path) + + if stat, err := s.stat(lp); err != nil { + rpkt = statusFromError(p.ID, err) + } else if !stat.IsDir() { + rpkt = statusFromError(p.ID, &os.PathError{ + Path: lp, Err: syscall.ENOTDIR, + }) + } else { + rpkt = (&sshFxpOpenPacket{ + ID: p.ID, + Path: p.Path, + Pflags: sshFxfRead, + }).respond(s) + } + case *sshFxpReadPacket: + var err error = EBADF + f, ok := s.getHandle(p.Handle) + if ok { + err = nil + data := p.getDataSlice(s.pktMgr.alloc, orderID, s.maxTxPacket) + n, _err := f.ReadAt(data, int64(p.Offset)) + if _err != nil && (_err != io.EOF || n == 0) { + err = _err + } + rpkt = &sshFxpDataPacket{ + ID: p.ID, + Length: uint32(n), + Data: data[:n], + // do not use data[:n:n] here to clamp the capacity, we allocated extra capacity above to avoid reallocations + } + } + if err != nil { + rpkt = statusFromError(p.ID, err) + } + + case *sshFxpWritePacket: + f, ok := s.getHandle(p.Handle) + var err error = EBADF + if ok { + _, err = f.WriteAt(p.Data, int64(p.Offset)) + } + rpkt = statusFromError(p.ID, err) + case *sshFxpExtendedPacket: + if p.SpecificPacket == nil { + rpkt = statusFromError(p.ID, ErrSSHFxOpUnsupported) + } else { + rpkt = p.respond(s) + } + case serverRespondablePacket: + rpkt = p.respond(s) + default: + return fmt.Errorf("unexpected packet type %T", p) + } + + s.pktMgr.readyPacket(s.pktMgr.newOrderedResponse(rpkt, orderID)) + return nil +} + +// Serve serves SFTP connections until the streams stop or the SFTP subsystem +// is stopped. It returns nil if the server exits cleanly. +func (svr *Server) Serve() error { + defer func() { + if svr.pktMgr.alloc != nil { + svr.pktMgr.alloc.Free() + } + }() + var wg sync.WaitGroup + runWorker := func(ch chan orderedRequest) { + wg.Add(1) + go func() { + defer wg.Done() + if err := svr.sftpServerWorker(ch); err != nil { + svr.conn.Close() // shuts down recvPacket + } + }() + } + pktChan := svr.pktMgr.workerChan(runWorker) + + var err error + var pkt requestPacket + var pktType fxp + var pktBytes []byte + for { + pktType, pktBytes, err = svr.serverConn.recvPacket(svr.pktMgr.getNextOrderID()) + if err != nil { + // Check whether the connection terminated cleanly in-between packets. + if err == io.EOF { + err = nil + } + // we don't care about releasing allocated pages here, the server will quit and the allocator freed + break + } + + pkt, err = makePacket(rxPacket{pktType, pktBytes}) + if err != nil { + switch { + case errors.Is(err, errUnknownExtendedPacket): + //if err := svr.serverConn.sendError(pkt, ErrSshFxOpUnsupported); err != nil { + // debug("failed to send err packet: %v", err) + // svr.conn.Close() // shuts down recvPacket + // break + //} + default: + debug("makePacket err: %v", err) + svr.conn.Close() // shuts down recvPacket + break + } + } + + pktChan <- svr.pktMgr.newOrderedRequest(pkt) + } + + close(pktChan) // shuts down sftpServerWorkers + wg.Wait() // wait for all workers to exit + + // close any still-open files + for handle, file := range svr.openFiles { + fmt.Fprintf(svr.debugStream, "sftp server file with handle %q left open: %v\n", handle, file.Name()) + file.Close() + } + return err // error from recvPacket +} + +type ider interface { + id() uint32 +} + +// The init packet has no ID, so we just return a zero-value ID +func (p *sshFxInitPacket) id() uint32 { return 0 } + +type sshFxpStatResponse struct { + ID uint32 + info os.FileInfo +} + +func (p *sshFxpStatResponse) marshalPacket() ([]byte, []byte, error) { + l := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(id) + + b := make([]byte, 4, l) + b = append(b, sshFxpAttrs) + b = marshalUint32(b, p.ID) + + var payload []byte + payload = marshalFileInfo(payload, p.info) + + return b, payload, nil +} + +func (p *sshFxpStatResponse) MarshalBinary() ([]byte, error) { + header, payload, err := p.marshalPacket() + return append(header, payload...), err +} + +var emptyFileStat = []interface{}{uint32(0)} + +func (p *sshFxpOpenPacket) readonly() bool { + return !p.hasPflags(sshFxfWrite) +} + +func (p *sshFxpOpenPacket) hasPflags(flags ...uint32) bool { + for _, f := range flags { + if p.Pflags&f == 0 { + return false + } + } + return true +} + +func (p *sshFxpOpenPacket) respond(svr *Server) responsePacket { + var osFlags int + if p.hasPflags(sshFxfRead, sshFxfWrite) { + osFlags |= os.O_RDWR + } else if p.hasPflags(sshFxfWrite) { + osFlags |= os.O_WRONLY + } else if p.hasPflags(sshFxfRead) { + osFlags |= os.O_RDONLY + } else { + // how are they opening? + return statusFromError(p.ID, syscall.EINVAL) + } + + // Don't use O_APPEND flag as it conflicts with WriteAt. + // The sshFxfAppend flag is a no-op here as the client sends the offsets. + + if p.hasPflags(sshFxfCreat) { + osFlags |= os.O_CREATE + } + if p.hasPflags(sshFxfTrunc) { + osFlags |= os.O_TRUNC + } + if p.hasPflags(sshFxfExcl) { + osFlags |= os.O_EXCL + } + + mode := os.FileMode(0o644) + // Like OpenSSH, we only handle permissions here, and only when the file is being created. + // Otherwise, the permissions are ignored. + if p.Flags&sshFileXferAttrPermissions != 0 { + fs, err := p.unmarshalFileStat(p.Flags) + if err != nil { + return statusFromError(p.ID, err) + } + mode = fs.FileMode() & os.ModePerm + } + + f, err := svr.openfile(svr.toLocalPath(p.Path), osFlags, mode) + if err != nil { + return statusFromError(p.ID, err) + } + + handle := svr.nextHandle(f) + return &sshFxpHandlePacket{ID: p.ID, Handle: handle} +} + +func (p *sshFxpReaddirPacket) respond(svr *Server) responsePacket { + f, ok := svr.getHandle(p.Handle) + if !ok { + return statusFromError(p.ID, EBADF) + } + + dirents, err := f.Readdir(128) + if err != nil { + return statusFromError(p.ID, err) + } + + idLookup := osIDLookup{} + + ret := &sshFxpNamePacket{ID: p.ID} + for _, dirent := range dirents { + ret.NameAttrs = append(ret.NameAttrs, &sshFxpNameAttr{ + Name: dirent.Name(), + LongName: runLs(idLookup, dirent), + Attrs: []interface{}{dirent}, + }) + } + return ret +} + +func (p *sshFxpSetstatPacket) respond(svr *Server) responsePacket { + path := svr.toLocalPath(p.Path) + + debug("setstat name %q", path) + + fs, err := p.unmarshalFileStat(p.Flags) + + if err == nil && (p.Flags&sshFileXferAttrSize) != 0 { + err = os.Truncate(path, int64(fs.Size)) + } + if err == nil && (p.Flags&sshFileXferAttrPermissions) != 0 { + err = os.Chmod(path, fs.FileMode()) + } + if err == nil && (p.Flags&sshFileXferAttrUIDGID) != 0 { + err = os.Chown(path, int(fs.UID), int(fs.GID)) + } + if err == nil && (p.Flags&sshFileXferAttrACmodTime) != 0 { + err = os.Chtimes(path, fs.AccessTime(), fs.ModTime()) + } + + return statusFromError(p.ID, err) +} + +func (p *sshFxpFsetstatPacket) respond(svr *Server) responsePacket { + f, ok := svr.getHandle(p.Handle) + if !ok { + return statusFromError(p.ID, EBADF) + } + + path := f.Name() + + debug("fsetstat name %q", path) + + fs, err := p.unmarshalFileStat(p.Flags) + + if err == nil && (p.Flags&sshFileXferAttrSize) != 0 { + err = f.Truncate(int64(fs.Size)) + } + if err == nil && (p.Flags&sshFileXferAttrPermissions) != 0 { + err = f.Chmod(fs.FileMode()) + } + if err == nil && (p.Flags&sshFileXferAttrUIDGID) != 0 { + err = f.Chown(int(fs.UID), int(fs.GID)) + } + if err == nil && (p.Flags&sshFileXferAttrACmodTime) != 0 { + type chtimer interface { + Chtimes(atime, mtime time.Time) error + } + + switch f := interface{}(f).(type) { + case chtimer: + // future-compatible, for when/if *os.File supports Chtimes. + err = f.Chtimes(fs.AccessTime(), fs.ModTime()) + default: + err = os.Chtimes(path, fs.AccessTime(), fs.ModTime()) + } + } + + return statusFromError(p.ID, err) +} + +func statusFromError(id uint32, err error) *sshFxpStatusPacket { + ret := &sshFxpStatusPacket{ + ID: id, + StatusError: StatusError{ + // sshFXOk = 0 + // sshFXEOF = 1 + // sshFXNoSuchFile = 2 ENOENT + // sshFXPermissionDenied = 3 + // sshFXFailure = 4 + // sshFXBadMessage = 5 + // sshFXNoConnection = 6 + // sshFXConnectionLost = 7 + // sshFXOPUnsupported = 8 + Code: sshFxOk, + }, + } + if err == nil { + return ret + } + + debug("statusFromError: error is %T %#v", err, err) + ret.StatusError.Code = sshFxFailure + ret.StatusError.msg = err.Error() + + if os.IsNotExist(err) { + ret.StatusError.Code = sshFxNoSuchFile + return ret + } + if code, ok := translateSyscallError(err); ok { + ret.StatusError.Code = code + return ret + } + + if errors.Is(err, io.EOF) { + ret.StatusError.Code = sshFxEOF + return ret + } + + var e fxerr + if errors.As(err, &e) { + ret.StatusError.Code = uint32(e) + return ret + } + + return ret +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_plan9.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_plan9.go new file mode 100644 index 0000000..4e8ed06 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_plan9.go @@ -0,0 +1,27 @@ +package sftp + +import ( + "path" + "path/filepath" +) + +func (s *Server) toLocalPath(p string) string { + if s.workDir != "" && !path.IsAbs(p) { + p = path.Join(s.workDir, p) + } + + lp := filepath.FromSlash(p) + + if path.IsAbs(p) { + tmp := lp[1:] + + if filepath.IsAbs(tmp) { + // If the FromSlash without any starting slashes is absolute, + // then we have a filepath encoded with a prefix '/'. + // e.g. "/#s/boot" to "#s/boot" + return tmp + } + } + + return lp +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_posix.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_posix.go new file mode 100644 index 0000000..c07d70a --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_posix.go @@ -0,0 +1,21 @@ +//go:build !windows +// +build !windows + +package sftp + +import ( + "io/fs" + "os" +) + +func (s *Server) openfile(path string, flag int, mode fs.FileMode) (file, error) { + return os.OpenFile(path, flag, mode) +} + +func (s *Server) lstat(name string) (os.FileInfo, error) { + return os.Lstat(name) +} + +func (s *Server) stat(name string) (os.FileInfo, error) { + return os.Stat(name) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_darwin.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_darwin.go new file mode 100644 index 0000000..8c01dac --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_darwin.go @@ -0,0 +1,21 @@ +package sftp + +import ( + "syscall" +) + +func statvfsFromStatfst(stat *syscall.Statfs_t) (*StatVFS, error) { + return &StatVFS{ + Bsize: uint64(stat.Bsize), + Frsize: uint64(stat.Bsize), // fragment size is a linux thing; use block size here + Blocks: stat.Blocks, + Bfree: stat.Bfree, + Bavail: stat.Bavail, + Files: stat.Files, + Ffree: stat.Ffree, + Favail: stat.Ffree, // not sure how to calculate Favail + Fsid: uint64(uint64(stat.Fsid.Val[1])<<32 | uint64(stat.Fsid.Val[0])), // endianness? + Flag: uint64(stat.Flags), // assuming POSIX? + Namemax: 1024, // man 2 statfs shows: #define MAXPATHLEN 1024 + }, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_impl.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_impl.go new file mode 100644 index 0000000..a547079 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_impl.go @@ -0,0 +1,30 @@ +//go:build darwin || linux +// +build darwin linux + +// fill in statvfs structure with OS specific values +// Statfs_t is different per-kernel, and only exists on some unixes (not Solaris for instance) + +package sftp + +import ( + "syscall" +) + +func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { + retPkt, err := getStatVFSForPath(p.Path) + if err != nil { + return statusFromError(p.ID, err) + } + retPkt.ID = p.ID + + return retPkt +} + +func getStatVFSForPath(name string) (*StatVFS, error) { + var stat syscall.Statfs_t + if err := syscall.Statfs(name, &stat); err != nil { + return nil, err + } + + return statvfsFromStatfst(&stat) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_linux.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_linux.go new file mode 100644 index 0000000..615c415 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_linux.go @@ -0,0 +1,23 @@ +//go:build linux +// +build linux + +package sftp + +import ( + "syscall" +) + +func statvfsFromStatfst(stat *syscall.Statfs_t) (*StatVFS, error) { + return &StatVFS{ + Bsize: uint64(stat.Bsize), + Frsize: uint64(stat.Frsize), + Blocks: stat.Blocks, + Bfree: stat.Bfree, + Bavail: stat.Bavail, + Files: stat.Files, + Ffree: stat.Ffree, + Favail: stat.Ffree, // not sure how to calculate Favail + Flag: uint64(stat.Flags), // assuming POSIX? + Namemax: uint64(stat.Namelen), + }, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_plan9.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_plan9.go new file mode 100644 index 0000000..e71a27d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_plan9.go @@ -0,0 +1,13 @@ +package sftp + +import ( + "syscall" +) + +func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { + return statusFromError(p.ID, syscall.EPLAN9) +} + +func getStatVFSForPath(name string) (*StatVFS, error) { + return nil, syscall.EPLAN9 +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_stubs.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_stubs.go new file mode 100644 index 0000000..dd4705b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_statvfs_stubs.go @@ -0,0 +1,16 @@ +//go:build !darwin && !linux && !plan9 +// +build !darwin,!linux,!plan9 + +package sftp + +import ( + "syscall" +) + +func (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket { + return statusFromError(p.ID, syscall.ENOTSUP) +} + +func getStatVFSForPath(name string) (*StatVFS, error) { + return nil, syscall.ENOTSUP +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_unix.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_unix.go new file mode 100644 index 0000000..495b397 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_unix.go @@ -0,0 +1,16 @@ +//go:build !windows && !plan9 +// +build !windows,!plan9 + +package sftp + +import ( + "path" +) + +func (s *Server) toLocalPath(p string) string { + if s.workDir != "" && !path.IsAbs(p) { + p = path.Join(s.workDir, p) + } + + return p +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_windows.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_windows.go new file mode 100644 index 0000000..e940dba --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/server_windows.go @@ -0,0 +1,193 @@ +package sftp + +import ( + "fmt" + "io" + "io/fs" + "os" + "path" + "path/filepath" + "time" + + "golang.org/x/sys/windows" +) + +func (s *Server) toLocalPath(p string) string { + if s.workDir != "" && !path.IsAbs(p) { + p = path.Join(s.workDir, p) + } + + lp := filepath.FromSlash(p) + + if path.IsAbs(p) { // starts with '/' + if len(p) == 1 && s.winRoot { + return `\\.\` // for openfile + } + + tmp := lp + for len(tmp) > 0 && tmp[0] == '\\' { + tmp = tmp[1:] + } + + if filepath.IsAbs(tmp) { + // If the FromSlash without any starting slashes is absolute, + // then we have a filepath encoded with a prefix '/'. + // e.g. "/C:/Windows" to "C:\\Windows" + return tmp + } + + tmp += "\\" + + if filepath.IsAbs(tmp) { + // If the FromSlash without any starting slashes but with extra end slash is absolute, + // then we have a filepath encoded with a prefix '/' and a dropped '/' at the end. + // e.g. "/C:" to "C:\\" + return tmp + } + + if s.winRoot { + // Make it so that "/Windows" is not found, and "/c:/Windows" has to be used + return `\\.\` + tmp + } + } + + return lp +} + +func bitsToDrives(bitmap uint32) []string { + var drive rune = 'a' + var drives []string + + for bitmap != 0 && drive <= 'z' { + if bitmap&1 == 1 { + drives = append(drives, string(drive)+":") + } + drive++ + bitmap >>= 1 + } + + return drives +} + +func getDrives() ([]string, error) { + mask, err := windows.GetLogicalDrives() + if err != nil { + return nil, fmt.Errorf("GetLogicalDrives: %w", err) + } + return bitsToDrives(mask), nil +} + +type driveInfo struct { + fs.FileInfo + name string +} + +func (i *driveInfo) Name() string { + return i.name // since the Name() returned from a os.Stat("C:\\") is "\\" +} + +type winRoot struct { + drives []string +} + +func newWinRoot() (*winRoot, error) { + drives, err := getDrives() + if err != nil { + return nil, err + } + return &winRoot{ + drives: drives, + }, nil +} + +func (f *winRoot) Readdir(n int) ([]os.FileInfo, error) { + drives := f.drives + if n > 0 && len(drives) > n { + drives = drives[:n] + } + f.drives = f.drives[len(drives):] + if len(drives) == 0 { + return nil, io.EOF + } + + var infos []os.FileInfo + for _, drive := range drives { + fi, err := os.Stat(drive + `\`) + if err != nil { + return nil, err + } + + di := &driveInfo{ + FileInfo: fi, + name: drive, + } + infos = append(infos, di) + } + + return infos, nil +} + +func (f *winRoot) Stat() (os.FileInfo, error) { + return rootFileInfo, nil +} +func (f *winRoot) ReadAt(b []byte, off int64) (int, error) { + return 0, os.ErrPermission +} +func (f *winRoot) WriteAt(b []byte, off int64) (int, error) { + return 0, os.ErrPermission +} +func (f *winRoot) Name() string { + return "/" +} +func (f *winRoot) Truncate(int64) error { + return os.ErrPermission +} +func (f *winRoot) Chmod(mode fs.FileMode) error { + return os.ErrPermission +} +func (f *winRoot) Chown(uid, gid int) error { + return os.ErrPermission +} +func (f *winRoot) Close() error { + f.drives = nil + return nil +} + +func (s *Server) openfile(path string, flag int, mode fs.FileMode) (file, error) { + if path == `\\.\` && s.winRoot { + return newWinRoot() + } + return os.OpenFile(path, flag, mode) +} + +type winRootFileInfo struct { + name string + modTime time.Time +} + +func (w *winRootFileInfo) Name() string { return w.name } +func (w *winRootFileInfo) Size() int64 { return 0 } +func (w *winRootFileInfo) Mode() fs.FileMode { return fs.ModeDir | 0555 } // read+execute for all +func (w *winRootFileInfo) ModTime() time.Time { return w.modTime } +func (w *winRootFileInfo) IsDir() bool { return true } +func (w *winRootFileInfo) Sys() interface{} { return nil } + +// Create a new root FileInfo +var rootFileInfo = &winRootFileInfo{ + name: "/", + modTime: time.Now(), +} + +func (s *Server) lstat(name string) (os.FileInfo, error) { + if name == `\\.\` && s.winRoot { + return rootFileInfo, nil + } + return os.Lstat(name) +} + +func (s *Server) stat(name string) (os.FileInfo, error) { + if name == `\\.\` && s.winRoot { + return rootFileInfo, nil + } + return os.Stat(name) +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/sftp.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/sftp.go new file mode 100644 index 0000000..1e698bb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/sftp.go @@ -0,0 +1,258 @@ +// Package sftp implements the SSH File Transfer Protocol as described in +// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt +package sftp + +import ( + "fmt" +) + +const ( + sshFxpInit = 1 + sshFxpVersion = 2 + sshFxpOpen = 3 + sshFxpClose = 4 + sshFxpRead = 5 + sshFxpWrite = 6 + sshFxpLstat = 7 + sshFxpFstat = 8 + sshFxpSetstat = 9 + sshFxpFsetstat = 10 + sshFxpOpendir = 11 + sshFxpReaddir = 12 + sshFxpRemove = 13 + sshFxpMkdir = 14 + sshFxpRmdir = 15 + sshFxpRealpath = 16 + sshFxpStat = 17 + sshFxpRename = 18 + sshFxpReadlink = 19 + sshFxpSymlink = 20 + sshFxpStatus = 101 + sshFxpHandle = 102 + sshFxpData = 103 + sshFxpName = 104 + sshFxpAttrs = 105 + sshFxpExtended = 200 + sshFxpExtendedReply = 201 +) + +const ( + sshFxOk = 0 + sshFxEOF = 1 + sshFxNoSuchFile = 2 + sshFxPermissionDenied = 3 + sshFxFailure = 4 + sshFxBadMessage = 5 + sshFxNoConnection = 6 + sshFxConnectionLost = 7 + sshFxOPUnsupported = 8 + + // see draft-ietf-secsh-filexfer-13 + // https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.1 + sshFxInvalidHandle = 9 + sshFxNoSuchPath = 10 + sshFxFileAlreadyExists = 11 + sshFxWriteProtect = 12 + sshFxNoMedia = 13 + sshFxNoSpaceOnFilesystem = 14 + sshFxQuotaExceeded = 15 + sshFxUnknownPrincipal = 16 + sshFxLockConflict = 17 + sshFxDirNotEmpty = 18 + sshFxNotADirectory = 19 + sshFxInvalidFilename = 20 + sshFxLinkLoop = 21 + sshFxCannotDelete = 22 + sshFxInvalidParameter = 23 + sshFxFileIsADirectory = 24 + sshFxByteRangeLockConflict = 25 + sshFxByteRangeLockRefused = 26 + sshFxDeletePending = 27 + sshFxFileCorrupt = 28 + sshFxOwnerInvalid = 29 + sshFxGroupInvalid = 30 + sshFxNoMatchingByteRangeLock = 31 +) + +const ( + sshFxfRead = 0x00000001 + sshFxfWrite = 0x00000002 + sshFxfAppend = 0x00000004 + sshFxfCreat = 0x00000008 + sshFxfTrunc = 0x00000010 + sshFxfExcl = 0x00000020 +) + +var ( + // supportedSFTPExtensions defines the supported extensions + supportedSFTPExtensions = []sshExtensionPair{ + {"hardlink@openssh.com", "1"}, + {"posix-rename@openssh.com", "1"}, + {"statvfs@openssh.com", "2"}, + } + sftpExtensions = supportedSFTPExtensions +) + +type fxp uint8 + +func (f fxp) String() string { + switch f { + case sshFxpInit: + return "SSH_FXP_INIT" + case sshFxpVersion: + return "SSH_FXP_VERSION" + case sshFxpOpen: + return "SSH_FXP_OPEN" + case sshFxpClose: + return "SSH_FXP_CLOSE" + case sshFxpRead: + return "SSH_FXP_READ" + case sshFxpWrite: + return "SSH_FXP_WRITE" + case sshFxpLstat: + return "SSH_FXP_LSTAT" + case sshFxpFstat: + return "SSH_FXP_FSTAT" + case sshFxpSetstat: + return "SSH_FXP_SETSTAT" + case sshFxpFsetstat: + return "SSH_FXP_FSETSTAT" + case sshFxpOpendir: + return "SSH_FXP_OPENDIR" + case sshFxpReaddir: + return "SSH_FXP_READDIR" + case sshFxpRemove: + return "SSH_FXP_REMOVE" + case sshFxpMkdir: + return "SSH_FXP_MKDIR" + case sshFxpRmdir: + return "SSH_FXP_RMDIR" + case sshFxpRealpath: + return "SSH_FXP_REALPATH" + case sshFxpStat: + return "SSH_FXP_STAT" + case sshFxpRename: + return "SSH_FXP_RENAME" + case sshFxpReadlink: + return "SSH_FXP_READLINK" + case sshFxpSymlink: + return "SSH_FXP_SYMLINK" + case sshFxpStatus: + return "SSH_FXP_STATUS" + case sshFxpHandle: + return "SSH_FXP_HANDLE" + case sshFxpData: + return "SSH_FXP_DATA" + case sshFxpName: + return "SSH_FXP_NAME" + case sshFxpAttrs: + return "SSH_FXP_ATTRS" + case sshFxpExtended: + return "SSH_FXP_EXTENDED" + case sshFxpExtendedReply: + return "SSH_FXP_EXTENDED_REPLY" + default: + return "unknown" + } +} + +type fx uint8 + +func (f fx) String() string { + switch f { + case sshFxOk: + return "SSH_FX_OK" + case sshFxEOF: + return "SSH_FX_EOF" + case sshFxNoSuchFile: + return "SSH_FX_NO_SUCH_FILE" + case sshFxPermissionDenied: + return "SSH_FX_PERMISSION_DENIED" + case sshFxFailure: + return "SSH_FX_FAILURE" + case sshFxBadMessage: + return "SSH_FX_BAD_MESSAGE" + case sshFxNoConnection: + return "SSH_FX_NO_CONNECTION" + case sshFxConnectionLost: + return "SSH_FX_CONNECTION_LOST" + case sshFxOPUnsupported: + return "SSH_FX_OP_UNSUPPORTED" + default: + return "unknown" + } +} + +type unexpectedPacketErr struct { + want, got fxp +} + +func (u *unexpectedPacketErr) Error() string { + return fmt.Sprintf("sftp: unexpected packet: want %v, got %v", u.want, u.got) +} + +func unimplementedPacketErr(u fxp) error { + return fmt.Errorf("sftp: unimplemented packet type: got %v", u) +} + +type unexpectedIDErr struct{ want, got uint32 } + +func (u *unexpectedIDErr) Error() string { + return fmt.Sprintf("sftp: unexpected id: want %d, got %d", u.want, u.got) +} + +func unimplementedSeekWhence(whence int) error { + return fmt.Errorf("sftp: unimplemented seek whence %d", whence) +} + +func unexpectedCount(want, got uint32) error { + return fmt.Errorf("sftp: unexpected count: want %d, got %d", want, got) +} + +type unexpectedVersionErr struct{ want, got uint32 } + +func (u *unexpectedVersionErr) Error() string { + return fmt.Sprintf("sftp: unexpected server version: want %v, got %v", u.want, u.got) +} + +// A StatusError is returned when an SFTP operation fails, and provides +// additional information about the failure. +type StatusError struct { + Code uint32 + msg, lang string +} + +func (s *StatusError) Error() string { + return fmt.Sprintf("sftp: %q (%v)", s.msg, fx(s.Code)) +} + +// FxCode returns the error code typed to match against the exported codes +func (s *StatusError) FxCode() fxerr { + return fxerr(s.Code) +} + +func getSupportedExtensionByName(extensionName string) (sshExtensionPair, error) { + for _, supportedExtension := range supportedSFTPExtensions { + if supportedExtension.Name == extensionName { + return supportedExtension, nil + } + } + return sshExtensionPair{}, fmt.Errorf("unsupported extension: %s", extensionName) +} + +// SetSFTPExtensions allows to customize the supported server extensions. +// See the variable supportedSFTPExtensions for supported extensions. +// This method accepts a slice of sshExtensionPair names for example 'hardlink@openssh.com'. +// If an invalid extension is given an error will be returned and nothing will be changed +func SetSFTPExtensions(extensions ...string) error { + tempExtensions := []sshExtensionPair{} + for _, extension := range extensions { + sftpExtension, err := getSupportedExtensionByName(extension) + if err != nil { + return err + } + tempExtensions = append(tempExtensions, sftpExtension) + } + sftpExtensions = tempExtensions + return nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/pkg/sftp/stat.go b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/stat.go new file mode 100644 index 0000000..2bb2c13 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/pkg/sftp/stat.go @@ -0,0 +1,94 @@ +package sftp + +import ( + "os" + + sshfx "github.com/pkg/sftp/internal/encoding/ssh/filexfer" +) + +// isRegular returns true if the mode describes a regular file. +func isRegular(mode uint32) bool { + return sshfx.FileMode(mode)&sshfx.ModeType == sshfx.ModeRegular +} + +// toFileMode converts sftp filemode bits to the os.FileMode specification +func toFileMode(mode uint32) os.FileMode { + var fm = os.FileMode(mode & 0777) + + switch sshfx.FileMode(mode) & sshfx.ModeType { + case sshfx.ModeDevice: + fm |= os.ModeDevice + case sshfx.ModeCharDevice: + fm |= os.ModeDevice | os.ModeCharDevice + case sshfx.ModeDir: + fm |= os.ModeDir + case sshfx.ModeNamedPipe: + fm |= os.ModeNamedPipe + case sshfx.ModeSymlink: + fm |= os.ModeSymlink + case sshfx.ModeRegular: + // nothing to do + case sshfx.ModeSocket: + fm |= os.ModeSocket + } + + if sshfx.FileMode(mode)&sshfx.ModeSetUID != 0 { + fm |= os.ModeSetuid + } + if sshfx.FileMode(mode)&sshfx.ModeSetGID != 0 { + fm |= os.ModeSetgid + } + if sshfx.FileMode(mode)&sshfx.ModeSticky != 0 { + fm |= os.ModeSticky + } + + return fm +} + +// fromFileMode converts from the os.FileMode specification to sftp filemode bits +func fromFileMode(mode os.FileMode) uint32 { + ret := sshfx.FileMode(mode & os.ModePerm) + + switch mode & os.ModeType { + case os.ModeDevice | os.ModeCharDevice: + ret |= sshfx.ModeCharDevice + case os.ModeDevice: + ret |= sshfx.ModeDevice + case os.ModeDir: + ret |= sshfx.ModeDir + case os.ModeNamedPipe: + ret |= sshfx.ModeNamedPipe + case os.ModeSymlink: + ret |= sshfx.ModeSymlink + case 0: + ret |= sshfx.ModeRegular + case os.ModeSocket: + ret |= sshfx.ModeSocket + } + + if mode&os.ModeSetuid != 0 { + ret |= sshfx.ModeSetUID + } + if mode&os.ModeSetgid != 0 { + ret |= sshfx.ModeSetGID + } + if mode&os.ModeSticky != 0 { + ret |= sshfx.ModeSticky + } + + return uint32(ret) +} + +const ( + s_ISUID = uint32(sshfx.ModeSetUID) + s_ISGID = uint32(sshfx.ModeSetGID) + s_ISVTX = uint32(sshfx.ModeSticky) +) + +// S_IFMT is a legacy export, and was brought in to support GOOS environments whose sysconfig.S_IFMT may be different from the value used internally by SFTP standards. +// There should be no reason why you need to import it, or use it, but unexporting it could cause code to break in a way that cannot be readily fixed. +// As such, we continue to export this value as the value used in the SFTP standard. +// +// Deprecated: Remove use of this value, and avoid any future use as well. +// There is no alternative provided, you should never need to access this value. +const S_IFMT = uint32(sshfx.ModeType) diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/LICENSE.txt b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/LICENSE.txt new file mode 100644 index 0000000..5040f1e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Oliver Kuederle + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/README.md b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/README.md new file mode 100644 index 0000000..a8191b8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/README.md @@ -0,0 +1,137 @@ +# Unicode Text Segmentation for Go + +[![Go Reference](https://pkg.go.dev/badge/github.com/rivo/uniseg.svg)](https://pkg.go.dev/github.com/rivo/uniseg) +[![Go Report](https://img.shields.io/badge/go%20report-A%2B-brightgreen.svg)](https://goreportcard.com/report/github.com/rivo/uniseg) + +This Go package implements Unicode Text Segmentation according to [Unicode Standard Annex #29](https://unicode.org/reports/tr29/), Unicode Line Breaking according to [Unicode Standard Annex #14](https://unicode.org/reports/tr14/) (Unicode version 15.0.0), and monospace font string width calculation similar to [wcwidth](https://man7.org/linux/man-pages/man3/wcwidth.3.html). + +## Background + +### Grapheme Clusters + +In Go, [strings are read-only slices of bytes](https://go.dev/blog/strings). They can be turned into Unicode code points using the `for` loop or by casting: `[]rune(str)`. However, multiple code points may be combined into one user-perceived character or what the Unicode specification calls "grapheme cluster". Here are some examples: + +|String|Bytes (UTF-8)|Code points (runes)|Grapheme clusters| +|-|-|-|-| +|Käse|6 bytes: `4b 61 cc 88 73 65`|5 code points: `4b 61 308 73 65`|4 clusters: `[4b],[61 308],[73],[65]`| +|🏳️‍🌈|14 bytes: `f0 9f 8f b3 ef b8 8f e2 80 8d f0 9f 8c 88`|4 code points: `1f3f3 fe0f 200d 1f308`|1 cluster: `[1f3f3 fe0f 200d 1f308]`| +|🇩🇪|8 bytes: `f0 9f 87 a9 f0 9f 87 aa`|2 code points: `1f1e9 1f1ea`|1 cluster: `[1f1e9 1f1ea]`| + +This package provides tools to iterate over these grapheme clusters. This may be used to determine the number of user-perceived characters, to split strings in their intended places, or to extract individual characters which form a unit. + +### Word Boundaries + +Word boundaries are used in a number of different contexts. The most familiar ones are selection (double-click mouse selection), cursor movement ("move to next word" control-arrow keys), and the dialog option "Whole Word Search" for search and replace. They are also used in database queries, to determine whether elements are within a certain number of words of one another. Searching may also use word boundaries in determining matching items. This package provides tools to determine word boundaries within strings. + +### Sentence Boundaries + +Sentence boundaries are often used for triple-click or some other method of selecting or iterating through blocks of text that are larger than single words. They are also used to determine whether words occur within the same sentence in database queries. This package provides tools to determine sentence boundaries within strings. + +### Line Breaking + +Line breaking, also known as word wrapping, is the process of breaking a section of text into lines such that it will fit in the available width of a page, window or other display area. This package provides tools to determine where a string may or may not be broken and where it must be broken (for example after newline characters). + +### Monospace Width + +Most terminals or text displays / text editors using a monospace font (for example source code editors) use a fixed width for each character. Some characters such as emojis or characters found in Asian and other languages may take up more than one character cell. This package provides tools to determine the number of cells a string will take up when displayed in a monospace font. See [here](https://pkg.go.dev/github.com/rivo/uniseg#hdr-Monospace_Width) for more information. + +## Installation + +```bash +go get github.com/rivo/uniseg +``` + +## Examples + +### Counting Characters in a String + +```go +n := uniseg.GraphemeClusterCount("🇩🇪🏳️‍🌈") +fmt.Println(n) +// 2 +``` + +### Calculating the Monospace String Width + +```go +width := uniseg.StringWidth("🇩🇪🏳️‍🌈!") +fmt.Println(width) +// 5 +``` + +### Using the [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) Class + +This is the most convenient method of iterating over grapheme clusters: + +```go +gr := uniseg.NewGraphemes("👍🏼!") +for gr.Next() { + fmt.Printf("%x ", gr.Runes()) +} +// [1f44d 1f3fc] [21] +``` + +### Using the [`Step`](https://pkg.go.dev/github.com/rivo/uniseg#Step) or [`StepString`](https://pkg.go.dev/github.com/rivo/uniseg#StepString) Function + +This avoids allocating a new `Graphemes` object but it requires the handling of states and boundaries: + +```go +str := "🇩🇪🏳️‍🌈" +state := -1 +var c string +for len(str) > 0 { + c, str, _, state = uniseg.StepString(str, state) + fmt.Printf("%x ", []rune(c)) +} +// [1f1e9 1f1ea] [1f3f3 fe0f 200d 1f308] +``` + +### Advanced Examples + +The [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) class offers the most convenient way to access all functionality of this package. But in some cases, it may be better to use the specialized functions directly. For example, if you're only interested in word segmentation, use [`FirstWord`](https://pkg.go.dev/github.com/rivo/uniseg#FirstWord) or [`FirstWordInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstWordInString): + +```go +str := "Hello, world!" +state := -1 +var c string +for len(str) > 0 { + c, str, state = uniseg.FirstWordInString(str, state) + fmt.Printf("(%s)\n", c) +} +// (Hello) +// (,) +// ( ) +// (world) +// (!) +``` + +Similarly, use + +- [`FirstGraphemeCluster`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeCluster) or [`FirstGraphemeClusterInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeClusterInString) for grapheme cluster determination only, +- [`FirstSentence`](https://pkg.go.dev/github.com/rivo/uniseg#FirstSentence) or [`FirstSentenceInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstSentenceInString) for sentence segmentation only, and +- [`FirstLineSegment`](https://pkg.go.dev/github.com/rivo/uniseg#FirstLineSegment) or [`FirstLineSegmentInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstLineSegmentInString) for line breaking / word wrapping (although using [`Step`](https://pkg.go.dev/github.com/rivo/uniseg#Step) or [`StepString`](https://pkg.go.dev/github.com/rivo/uniseg#StepString) is preferred as it will observe grapheme cluster boundaries). + +If you're only interested in the width of characters, use [`FirstGraphemeCluster`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeCluster) or [`FirstGraphemeClusterInString`](https://pkg.go.dev/github.com/rivo/uniseg#FirstGraphemeClusterInString). It is much faster than using [`Step`](https://pkg.go.dev/github.com/rivo/uniseg#Step), [`StepString`](https://pkg.go.dev/github.com/rivo/uniseg#StepString), or the [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) class because it does not include the logic for word / sentence / line boundaries. + +Finally, if you need to reverse a string while preserving grapheme clusters, use [`ReverseString`](https://pkg.go.dev/github.com/rivo/uniseg#ReverseString): + +```go +fmt.Println(uniseg.ReverseString("🇩🇪🏳️‍🌈")) +// 🏳️‍🌈🇩🇪 +``` + +## Documentation + +Refer to https://pkg.go.dev/github.com/rivo/uniseg for the package's documentation. + +## Dependencies + +This package does not depend on any packages outside the standard library. + +## Sponsor this Project + +[Become a Sponsor on GitHub](https://github.com/sponsors/rivo?metadata_source=uniseg_readme) to support this project! + +## Your Feedback + +Add your issue here on GitHub, preferably before submitting any PR's. Feel free to get in touch if you have any questions. \ No newline at end of file diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/doc.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/doc.go new file mode 100644 index 0000000..11224ae --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/doc.go @@ -0,0 +1,108 @@ +/* +Package uniseg implements Unicode Text Segmentation, Unicode Line Breaking, and +string width calculation for monospace fonts. Unicode Text Segmentation conforms +to Unicode Standard Annex #29 (https://unicode.org/reports/tr29/) and Unicode +Line Breaking conforms to Unicode Standard Annex #14 +(https://unicode.org/reports/tr14/). + +In short, using this package, you can split a string into grapheme clusters +(what people would usually refer to as a "character"), into words, and into +sentences. Or, in its simplest case, this package allows you to count the number +of characters in a string, especially when it contains complex characters such +as emojis, combining characters, or characters from Asian, Arabic, Hebrew, or +other languages. Additionally, you can use it to implement line breaking (or +"word wrapping"), that is, to determine where text can be broken over to the +next line when the width of the line is not big enough to fit the entire text. +Finally, you can use it to calculate the display width of a string for monospace +fonts. + +# Getting Started + +If you just want to count the number of characters in a string, you can use +[GraphemeClusterCount]. If you want to determine the display width of a string, +you can use [StringWidth]. If you want to iterate over a string, you can use +[Step], [StepString], or the [Graphemes] class (more convenient but less +performant). This will provide you with all information: grapheme clusters, +word boundaries, sentence boundaries, line breaks, and monospace character +widths. The specialized functions [FirstGraphemeCluster], +[FirstGraphemeClusterInString], [FirstWord], [FirstWordInString], +[FirstSentence], and [FirstSentenceInString] can be used if only one type of +information is needed. + +# Grapheme Clusters + +Consider the rainbow flag emoji: 🏳️‍🌈. On most modern systems, it appears as one +character. But its string representation actually has 14 bytes, so counting +bytes (or using len("🏳️‍🌈")) will not work as expected. Counting runes won't, +either: The flag has 4 Unicode code points, thus 4 runes. The stdlib function +utf8.RuneCountInString("🏳️‍🌈") and len([]rune("🏳️‍🌈")) will both return 4. + +The [GraphemeClusterCount] function will return 1 for the rainbow flag emoji. +The Graphemes class and a variety of functions in this package will allow you to +split strings into its grapheme clusters. + +# Word Boundaries + +Word boundaries are used in a number of different contexts. The most familiar +ones are selection (double-click mouse selection), cursor movement ("move to +next word" control-arrow keys), and the dialog option "Whole Word Search" for +search and replace. This package provides methods for determining word +boundaries. + +# Sentence Boundaries + +Sentence boundaries are often used for triple-click or some other method of +selecting or iterating through blocks of text that are larger than single words. +They are also used to determine whether words occur within the same sentence in +database queries. This package provides methods for determining sentence +boundaries. + +# Line Breaking + +Line breaking, also known as word wrapping, is the process of breaking a section +of text into lines such that it will fit in the available width of a page, +window or other display area. This package provides methods to determine the +positions in a string where a line must be broken, may be broken, or must not be +broken. + +# Monospace Width + +Monospace width, as referred to in this package, is the width of a string in a +monospace font. This is commonly used in terminal user interfaces or text +displays or editors that don't support proportional fonts. A width of 1 +corresponds to a single character cell. The C function [wcswidth()] and its +implementation in other programming languages is in widespread use for the same +purpose. However, there is no standard for the calculation of such widths, and +this package differs from wcswidth() in a number of ways, presumably to generate +more visually pleasing results. + +To start, we assume that every code point has a width of 1, with the following +exceptions: + + - Code points with grapheme cluster break properties Control, CR, LF, Extend, + and ZWJ have a width of 0. + - U+2E3A, Two-Em Dash, has a width of 3. + - U+2E3B, Three-Em Dash, has a width of 4. + - Characters with the East-Asian Width properties "Fullwidth" (F) and "Wide" + (W) have a width of 2. (Properties "Ambiguous" (A) and "Neutral" (N) both + have a width of 1.) + - Code points with grapheme cluster break property Regional Indicator have a + width of 2. + - Code points with grapheme cluster break property Extended Pictographic have + a width of 2, unless their Emoji Presentation flag is "No", in which case + the width is 1. + +For Hangul grapheme clusters composed of conjoining Jamo and for Regional +Indicators (flags), all code points except the first one have a width of 0. For +grapheme clusters starting with an Extended Pictographic, any additional code +point will force a total width of 2, except if the Variation Selector-15 +(U+FE0E) is included, in which case the total width is always 1. Grapheme +clusters ending with Variation Selector-16 (U+FE0F) have a width of 2. + +Note that whether these widths appear correct depends on your application's +render engine, to which extent it conforms to the Unicode Standard, and its +choice of font. + +[wcswidth()]: https://man7.org/linux/man-pages/man3/wcswidth.3.html +*/ +package uniseg diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/eastasianwidth.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/eastasianwidth.go new file mode 100644 index 0000000..5fc54d9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/eastasianwidth.go @@ -0,0 +1,2588 @@ +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// eastAsianWidth are taken from +// https://www.unicode.org/Public/15.0.0/ucd/EastAsianWidth.txt +// and +// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var eastAsianWidth = [][3]int{ + {0x0000, 0x001F, prN}, // Cc [32] .. + {0x0020, 0x0020, prNa}, // Zs SPACE + {0x0021, 0x0023, prNa}, // Po [3] EXCLAMATION MARK..NUMBER SIGN + {0x0024, 0x0024, prNa}, // Sc DOLLAR SIGN + {0x0025, 0x0027, prNa}, // Po [3] PERCENT SIGN..APOSTROPHE + {0x0028, 0x0028, prNa}, // Ps LEFT PARENTHESIS + {0x0029, 0x0029, prNa}, // Pe RIGHT PARENTHESIS + {0x002A, 0x002A, prNa}, // Po ASTERISK + {0x002B, 0x002B, prNa}, // Sm PLUS SIGN + {0x002C, 0x002C, prNa}, // Po COMMA + {0x002D, 0x002D, prNa}, // Pd HYPHEN-MINUS + {0x002E, 0x002F, prNa}, // Po [2] FULL STOP..SOLIDUS + {0x0030, 0x0039, prNa}, // Nd [10] DIGIT ZERO..DIGIT NINE + {0x003A, 0x003B, prNa}, // Po [2] COLON..SEMICOLON + {0x003C, 0x003E, prNa}, // Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN + {0x003F, 0x0040, prNa}, // Po [2] QUESTION MARK..COMMERCIAL AT + {0x0041, 0x005A, prNa}, // Lu [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z + {0x005B, 0x005B, prNa}, // Ps LEFT SQUARE BRACKET + {0x005C, 0x005C, prNa}, // Po REVERSE SOLIDUS + {0x005D, 0x005D, prNa}, // Pe RIGHT SQUARE BRACKET + {0x005E, 0x005E, prNa}, // Sk CIRCUMFLEX ACCENT + {0x005F, 0x005F, prNa}, // Pc LOW LINE + {0x0060, 0x0060, prNa}, // Sk GRAVE ACCENT + {0x0061, 0x007A, prNa}, // Ll [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z + {0x007B, 0x007B, prNa}, // Ps LEFT CURLY BRACKET + {0x007C, 0x007C, prNa}, // Sm VERTICAL LINE + {0x007D, 0x007D, prNa}, // Pe RIGHT CURLY BRACKET + {0x007E, 0x007E, prNa}, // Sm TILDE + {0x007F, 0x007F, prN}, // Cc + {0x0080, 0x009F, prN}, // Cc [32] .. + {0x00A0, 0x00A0, prN}, // Zs NO-BREAK SPACE + {0x00A1, 0x00A1, prA}, // Po INVERTED EXCLAMATION MARK + {0x00A2, 0x00A3, prNa}, // Sc [2] CENT SIGN..POUND SIGN + {0x00A4, 0x00A4, prA}, // Sc CURRENCY SIGN + {0x00A5, 0x00A5, prNa}, // Sc YEN SIGN + {0x00A6, 0x00A6, prNa}, // So BROKEN BAR + {0x00A7, 0x00A7, prA}, // Po SECTION SIGN + {0x00A8, 0x00A8, prA}, // Sk DIAERESIS + {0x00A9, 0x00A9, prN}, // So COPYRIGHT SIGN + {0x00AA, 0x00AA, prA}, // Lo FEMININE ORDINAL INDICATOR + {0x00AB, 0x00AB, prN}, // Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + {0x00AC, 0x00AC, prNa}, // Sm NOT SIGN + {0x00AD, 0x00AD, prA}, // Cf SOFT HYPHEN + {0x00AE, 0x00AE, prA}, // So REGISTERED SIGN + {0x00AF, 0x00AF, prNa}, // Sk MACRON + {0x00B0, 0x00B0, prA}, // So DEGREE SIGN + {0x00B1, 0x00B1, prA}, // Sm PLUS-MINUS SIGN + {0x00B2, 0x00B3, prA}, // No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE + {0x00B4, 0x00B4, prA}, // Sk ACUTE ACCENT + {0x00B5, 0x00B5, prN}, // Ll MICRO SIGN + {0x00B6, 0x00B7, prA}, // Po [2] PILCROW SIGN..MIDDLE DOT + {0x00B8, 0x00B8, prA}, // Sk CEDILLA + {0x00B9, 0x00B9, prA}, // No SUPERSCRIPT ONE + {0x00BA, 0x00BA, prA}, // Lo MASCULINE ORDINAL INDICATOR + {0x00BB, 0x00BB, prN}, // Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + {0x00BC, 0x00BE, prA}, // No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS + {0x00BF, 0x00BF, prA}, // Po INVERTED QUESTION MARK + {0x00C0, 0x00C5, prN}, // Lu [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE + {0x00C6, 0x00C6, prA}, // Lu LATIN CAPITAL LETTER AE + {0x00C7, 0x00CF, prN}, // Lu [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS + {0x00D0, 0x00D0, prA}, // Lu LATIN CAPITAL LETTER ETH + {0x00D1, 0x00D6, prN}, // Lu [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS + {0x00D7, 0x00D7, prA}, // Sm MULTIPLICATION SIGN + {0x00D8, 0x00D8, prA}, // Lu LATIN CAPITAL LETTER O WITH STROKE + {0x00D9, 0x00DD, prN}, // Lu [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE + {0x00DE, 0x00E1, prA}, // L& [4] LATIN CAPITAL LETTER THORN..LATIN SMALL LETTER A WITH ACUTE + {0x00E2, 0x00E5, prN}, // Ll [4] LATIN SMALL LETTER A WITH CIRCUMFLEX..LATIN SMALL LETTER A WITH RING ABOVE + {0x00E6, 0x00E6, prA}, // Ll LATIN SMALL LETTER AE + {0x00E7, 0x00E7, prN}, // Ll LATIN SMALL LETTER C WITH CEDILLA + {0x00E8, 0x00EA, prA}, // Ll [3] LATIN SMALL LETTER E WITH GRAVE..LATIN SMALL LETTER E WITH CIRCUMFLEX + {0x00EB, 0x00EB, prN}, // Ll LATIN SMALL LETTER E WITH DIAERESIS + {0x00EC, 0x00ED, prA}, // Ll [2] LATIN SMALL LETTER I WITH GRAVE..LATIN SMALL LETTER I WITH ACUTE + {0x00EE, 0x00EF, prN}, // Ll [2] LATIN SMALL LETTER I WITH CIRCUMFLEX..LATIN SMALL LETTER I WITH DIAERESIS + {0x00F0, 0x00F0, prA}, // Ll LATIN SMALL LETTER ETH + {0x00F1, 0x00F1, prN}, // Ll LATIN SMALL LETTER N WITH TILDE + {0x00F2, 0x00F3, prA}, // Ll [2] LATIN SMALL LETTER O WITH GRAVE..LATIN SMALL LETTER O WITH ACUTE + {0x00F4, 0x00F6, prN}, // Ll [3] LATIN SMALL LETTER O WITH CIRCUMFLEX..LATIN SMALL LETTER O WITH DIAERESIS + {0x00F7, 0x00F7, prA}, // Sm DIVISION SIGN + {0x00F8, 0x00FA, prA}, // Ll [3] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER U WITH ACUTE + {0x00FB, 0x00FB, prN}, // Ll LATIN SMALL LETTER U WITH CIRCUMFLEX + {0x00FC, 0x00FC, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS + {0x00FD, 0x00FD, prN}, // Ll LATIN SMALL LETTER Y WITH ACUTE + {0x00FE, 0x00FE, prA}, // Ll LATIN SMALL LETTER THORN + {0x00FF, 0x00FF, prN}, // Ll LATIN SMALL LETTER Y WITH DIAERESIS + {0x0100, 0x0100, prN}, // Lu LATIN CAPITAL LETTER A WITH MACRON + {0x0101, 0x0101, prA}, // Ll LATIN SMALL LETTER A WITH MACRON + {0x0102, 0x0110, prN}, // L& [15] LATIN CAPITAL LETTER A WITH BREVE..LATIN CAPITAL LETTER D WITH STROKE + {0x0111, 0x0111, prA}, // Ll LATIN SMALL LETTER D WITH STROKE + {0x0112, 0x0112, prN}, // Lu LATIN CAPITAL LETTER E WITH MACRON + {0x0113, 0x0113, prA}, // Ll LATIN SMALL LETTER E WITH MACRON + {0x0114, 0x011A, prN}, // L& [7] LATIN CAPITAL LETTER E WITH BREVE..LATIN CAPITAL LETTER E WITH CARON + {0x011B, 0x011B, prA}, // Ll LATIN SMALL LETTER E WITH CARON + {0x011C, 0x0125, prN}, // L& [10] LATIN CAPITAL LETTER G WITH CIRCUMFLEX..LATIN SMALL LETTER H WITH CIRCUMFLEX + {0x0126, 0x0127, prA}, // L& [2] LATIN CAPITAL LETTER H WITH STROKE..LATIN SMALL LETTER H WITH STROKE + {0x0128, 0x012A, prN}, // L& [3] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH MACRON + {0x012B, 0x012B, prA}, // Ll LATIN SMALL LETTER I WITH MACRON + {0x012C, 0x0130, prN}, // L& [5] LATIN CAPITAL LETTER I WITH BREVE..LATIN CAPITAL LETTER I WITH DOT ABOVE + {0x0131, 0x0133, prA}, // L& [3] LATIN SMALL LETTER DOTLESS I..LATIN SMALL LIGATURE IJ + {0x0134, 0x0137, prN}, // L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA + {0x0138, 0x0138, prA}, // Ll LATIN SMALL LETTER KRA + {0x0139, 0x013E, prN}, // L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON + {0x013F, 0x0142, prA}, // L& [4] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH STROKE + {0x0143, 0x0143, prN}, // Lu LATIN CAPITAL LETTER N WITH ACUTE + {0x0144, 0x0144, prA}, // Ll LATIN SMALL LETTER N WITH ACUTE + {0x0145, 0x0147, prN}, // L& [3] LATIN CAPITAL LETTER N WITH CEDILLA..LATIN CAPITAL LETTER N WITH CARON + {0x0148, 0x014B, prA}, // L& [4] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER ENG + {0x014C, 0x014C, prN}, // Lu LATIN CAPITAL LETTER O WITH MACRON + {0x014D, 0x014D, prA}, // Ll LATIN SMALL LETTER O WITH MACRON + {0x014E, 0x0151, prN}, // L& [4] LATIN CAPITAL LETTER O WITH BREVE..LATIN SMALL LETTER O WITH DOUBLE ACUTE + {0x0152, 0x0153, prA}, // L& [2] LATIN CAPITAL LIGATURE OE..LATIN SMALL LIGATURE OE + {0x0154, 0x0165, prN}, // L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON + {0x0166, 0x0167, prA}, // L& [2] LATIN CAPITAL LETTER T WITH STROKE..LATIN SMALL LETTER T WITH STROKE + {0x0168, 0x016A, prN}, // L& [3] LATIN CAPITAL LETTER U WITH TILDE..LATIN CAPITAL LETTER U WITH MACRON + {0x016B, 0x016B, prA}, // Ll LATIN SMALL LETTER U WITH MACRON + {0x016C, 0x017F, prN}, // L& [20] LATIN CAPITAL LETTER U WITH BREVE..LATIN SMALL LETTER LONG S + {0x0180, 0x01BA, prN}, // L& [59] LATIN SMALL LETTER B WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL + {0x01BB, 0x01BB, prN}, // Lo LATIN LETTER TWO WITH STROKE + {0x01BC, 0x01BF, prN}, // L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN + {0x01C0, 0x01C3, prN}, // Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK + {0x01C4, 0x01CD, prN}, // L& [10] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER A WITH CARON + {0x01CE, 0x01CE, prA}, // Ll LATIN SMALL LETTER A WITH CARON + {0x01CF, 0x01CF, prN}, // Lu LATIN CAPITAL LETTER I WITH CARON + {0x01D0, 0x01D0, prA}, // Ll LATIN SMALL LETTER I WITH CARON + {0x01D1, 0x01D1, prN}, // Lu LATIN CAPITAL LETTER O WITH CARON + {0x01D2, 0x01D2, prA}, // Ll LATIN SMALL LETTER O WITH CARON + {0x01D3, 0x01D3, prN}, // Lu LATIN CAPITAL LETTER U WITH CARON + {0x01D4, 0x01D4, prA}, // Ll LATIN SMALL LETTER U WITH CARON + {0x01D5, 0x01D5, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + {0x01D6, 0x01D6, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + {0x01D7, 0x01D7, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + {0x01D8, 0x01D8, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + {0x01D9, 0x01D9, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + {0x01DA, 0x01DA, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND CARON + {0x01DB, 0x01DB, prN}, // Lu LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + {0x01DC, 0x01DC, prA}, // Ll LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE + {0x01DD, 0x024F, prN}, // L& [115] LATIN SMALL LETTER TURNED E..LATIN SMALL LETTER Y WITH STROKE + {0x0250, 0x0250, prN}, // Ll LATIN SMALL LETTER TURNED A + {0x0251, 0x0251, prA}, // Ll LATIN SMALL LETTER ALPHA + {0x0252, 0x0260, prN}, // Ll [15] LATIN SMALL LETTER TURNED ALPHA..LATIN SMALL LETTER G WITH HOOK + {0x0261, 0x0261, prA}, // Ll LATIN SMALL LETTER SCRIPT G + {0x0262, 0x0293, prN}, // Ll [50] LATIN LETTER SMALL CAPITAL G..LATIN SMALL LETTER EZH WITH CURL + {0x0294, 0x0294, prN}, // Lo LATIN LETTER GLOTTAL STOP + {0x0295, 0x02AF, prN}, // Ll [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL + {0x02B0, 0x02C1, prN}, // Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP + {0x02C2, 0x02C3, prN}, // Sk [2] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER RIGHT ARROWHEAD + {0x02C4, 0x02C4, prA}, // Sk MODIFIER LETTER UP ARROWHEAD + {0x02C5, 0x02C5, prN}, // Sk MODIFIER LETTER DOWN ARROWHEAD + {0x02C6, 0x02C6, prN}, // Lm MODIFIER LETTER CIRCUMFLEX ACCENT + {0x02C7, 0x02C7, prA}, // Lm CARON + {0x02C8, 0x02C8, prN}, // Lm MODIFIER LETTER VERTICAL LINE + {0x02C9, 0x02CB, prA}, // Lm [3] MODIFIER LETTER MACRON..MODIFIER LETTER GRAVE ACCENT + {0x02CC, 0x02CC, prN}, // Lm MODIFIER LETTER LOW VERTICAL LINE + {0x02CD, 0x02CD, prA}, // Lm MODIFIER LETTER LOW MACRON + {0x02CE, 0x02CF, prN}, // Lm [2] MODIFIER LETTER LOW GRAVE ACCENT..MODIFIER LETTER LOW ACUTE ACCENT + {0x02D0, 0x02D0, prA}, // Lm MODIFIER LETTER TRIANGULAR COLON + {0x02D1, 0x02D1, prN}, // Lm MODIFIER LETTER HALF TRIANGULAR COLON + {0x02D2, 0x02D7, prN}, // Sk [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN + {0x02D8, 0x02DB, prA}, // Sk [4] BREVE..OGONEK + {0x02DC, 0x02DC, prN}, // Sk SMALL TILDE + {0x02DD, 0x02DD, prA}, // Sk DOUBLE ACUTE ACCENT + {0x02DE, 0x02DE, prN}, // Sk MODIFIER LETTER RHOTIC HOOK + {0x02DF, 0x02DF, prA}, // Sk MODIFIER LETTER CROSS ACCENT + {0x02E0, 0x02E4, prN}, // Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + {0x02E5, 0x02EB, prN}, // Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK + {0x02EC, 0x02EC, prN}, // Lm MODIFIER LETTER VOICING + {0x02ED, 0x02ED, prN}, // Sk MODIFIER LETTER UNASPIRATED + {0x02EE, 0x02EE, prN}, // Lm MODIFIER LETTER DOUBLE APOSTROPHE + {0x02EF, 0x02FF, prN}, // Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW + {0x0300, 0x036F, prA}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X + {0x0370, 0x0373, prN}, // L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI + {0x0374, 0x0374, prN}, // Lm GREEK NUMERAL SIGN + {0x0375, 0x0375, prN}, // Sk GREEK LOWER NUMERAL SIGN + {0x0376, 0x0377, prN}, // L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA + {0x037A, 0x037A, prN}, // Lm GREEK YPOGEGRAMMENI + {0x037B, 0x037D, prN}, // Ll [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL + {0x037E, 0x037E, prN}, // Po GREEK QUESTION MARK + {0x037F, 0x037F, prN}, // Lu GREEK CAPITAL LETTER YOT + {0x0384, 0x0385, prN}, // Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS + {0x0386, 0x0386, prN}, // Lu GREEK CAPITAL LETTER ALPHA WITH TONOS + {0x0387, 0x0387, prN}, // Po GREEK ANO TELEIA + {0x0388, 0x038A, prN}, // Lu [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS + {0x038C, 0x038C, prN}, // Lu GREEK CAPITAL LETTER OMICRON WITH TONOS + {0x038E, 0x0390, prN}, // L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + {0x0391, 0x03A1, prA}, // Lu [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO + {0x03A3, 0x03A9, prA}, // Lu [7] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER OMEGA + {0x03AA, 0x03B0, prN}, // L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS + {0x03B1, 0x03C1, prA}, // Ll [17] GREEK SMALL LETTER ALPHA..GREEK SMALL LETTER RHO + {0x03C2, 0x03C2, prN}, // Ll GREEK SMALL LETTER FINAL SIGMA + {0x03C3, 0x03C9, prA}, // Ll [7] GREEK SMALL LETTER SIGMA..GREEK SMALL LETTER OMEGA + {0x03CA, 0x03F5, prN}, // L& [44] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK LUNATE EPSILON SYMBOL + {0x03F6, 0x03F6, prN}, // Sm GREEK REVERSED LUNATE EPSILON SYMBOL + {0x03F7, 0x03FF, prN}, // L& [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL + {0x0400, 0x0400, prN}, // Lu CYRILLIC CAPITAL LETTER IE WITH GRAVE + {0x0401, 0x0401, prA}, // Lu CYRILLIC CAPITAL LETTER IO + {0x0402, 0x040F, prN}, // Lu [14] CYRILLIC CAPITAL LETTER DJE..CYRILLIC CAPITAL LETTER DZHE + {0x0410, 0x044F, prA}, // L& [64] CYRILLIC CAPITAL LETTER A..CYRILLIC SMALL LETTER YA + {0x0450, 0x0450, prN}, // Ll CYRILLIC SMALL LETTER IE WITH GRAVE + {0x0451, 0x0451, prA}, // Ll CYRILLIC SMALL LETTER IO + {0x0452, 0x0481, prN}, // L& [48] CYRILLIC SMALL LETTER DJE..CYRILLIC SMALL LETTER KOPPA + {0x0482, 0x0482, prN}, // So CYRILLIC THOUSANDS SIGN + {0x0483, 0x0487, prN}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE + {0x0488, 0x0489, prN}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN + {0x048A, 0x04FF, prN}, // L& [118] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER HA WITH STROKE + {0x0500, 0x052F, prN}, // L& [48] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER EL WITH DESCENDER + {0x0531, 0x0556, prN}, // Lu [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH + {0x0559, 0x0559, prN}, // Lm ARMENIAN MODIFIER LETTER LEFT HALF RING + {0x055A, 0x055F, prN}, // Po [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK + {0x0560, 0x0588, prN}, // Ll [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE + {0x0589, 0x0589, prN}, // Po ARMENIAN FULL STOP + {0x058A, 0x058A, prN}, // Pd ARMENIAN HYPHEN + {0x058D, 0x058E, prN}, // So [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN + {0x058F, 0x058F, prN}, // Sc ARMENIAN DRAM SIGN + {0x0591, 0x05BD, prN}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG + {0x05BE, 0x05BE, prN}, // Pd HEBREW PUNCTUATION MAQAF + {0x05BF, 0x05BF, prN}, // Mn HEBREW POINT RAFE + {0x05C0, 0x05C0, prN}, // Po HEBREW PUNCTUATION PASEQ + {0x05C1, 0x05C2, prN}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT + {0x05C3, 0x05C3, prN}, // Po HEBREW PUNCTUATION SOF PASUQ + {0x05C4, 0x05C5, prN}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT + {0x05C6, 0x05C6, prN}, // Po HEBREW PUNCTUATION NUN HAFUKHA + {0x05C7, 0x05C7, prN}, // Mn HEBREW POINT QAMATS QATAN + {0x05D0, 0x05EA, prN}, // Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV + {0x05EF, 0x05F2, prN}, // Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD + {0x05F3, 0x05F4, prN}, // Po [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM + {0x0600, 0x0605, prN}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE + {0x0606, 0x0608, prN}, // Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY + {0x0609, 0x060A, prN}, // Po [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN + {0x060B, 0x060B, prN}, // Sc AFGHANI SIGN + {0x060C, 0x060D, prN}, // Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR + {0x060E, 0x060F, prN}, // So [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA + {0x0610, 0x061A, prN}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA + {0x061B, 0x061B, prN}, // Po ARABIC SEMICOLON + {0x061C, 0x061C, prN}, // Cf ARABIC LETTER MARK + {0x061D, 0x061F, prN}, // Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK + {0x0620, 0x063F, prN}, // Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE + {0x0640, 0x0640, prN}, // Lm ARABIC TATWEEL + {0x0641, 0x064A, prN}, // Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH + {0x064B, 0x065F, prN}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW + {0x0660, 0x0669, prN}, // Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE + {0x066A, 0x066D, prN}, // Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR + {0x066E, 0x066F, prN}, // Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF + {0x0670, 0x0670, prN}, // Mn ARABIC LETTER SUPERSCRIPT ALEF + {0x0671, 0x06D3, prN}, // Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE + {0x06D4, 0x06D4, prN}, // Po ARABIC FULL STOP + {0x06D5, 0x06D5, prN}, // Lo ARABIC LETTER AE + {0x06D6, 0x06DC, prN}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN + {0x06DD, 0x06DD, prN}, // Cf ARABIC END OF AYAH + {0x06DE, 0x06DE, prN}, // So ARABIC START OF RUB EL HIZB + {0x06DF, 0x06E4, prN}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA + {0x06E5, 0x06E6, prN}, // Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH + {0x06E7, 0x06E8, prN}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON + {0x06E9, 0x06E9, prN}, // So ARABIC PLACE OF SAJDAH + {0x06EA, 0x06ED, prN}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM + {0x06EE, 0x06EF, prN}, // Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V + {0x06F0, 0x06F9, prN}, // Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE + {0x06FA, 0x06FC, prN}, // Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW + {0x06FD, 0x06FE, prN}, // So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN + {0x06FF, 0x06FF, prN}, // Lo ARABIC LETTER HEH WITH INVERTED V + {0x0700, 0x070D, prN}, // Po [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS + {0x070F, 0x070F, prN}, // Cf SYRIAC ABBREVIATION MARK + {0x0710, 0x0710, prN}, // Lo SYRIAC LETTER ALAPH + {0x0711, 0x0711, prN}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH + {0x0712, 0x072F, prN}, // Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH + {0x0730, 0x074A, prN}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH + {0x074D, 0x074F, prN}, // Lo [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE + {0x0750, 0x077F, prN}, // Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE + {0x0780, 0x07A5, prN}, // Lo [38] THAANA LETTER HAA..THAANA LETTER WAAVU + {0x07A6, 0x07B0, prN}, // Mn [11] THAANA ABAFILI..THAANA SUKUN + {0x07B1, 0x07B1, prN}, // Lo THAANA LETTER NAA + {0x07C0, 0x07C9, prN}, // Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE + {0x07CA, 0x07EA, prN}, // Lo [33] NKO LETTER A..NKO LETTER JONA RA + {0x07EB, 0x07F3, prN}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE + {0x07F4, 0x07F5, prN}, // Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE + {0x07F6, 0x07F6, prN}, // So NKO SYMBOL OO DENNEN + {0x07F7, 0x07F9, prN}, // Po [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK + {0x07FA, 0x07FA, prN}, // Lm NKO LAJANYALAN + {0x07FD, 0x07FD, prN}, // Mn NKO DANTAYALAN + {0x07FE, 0x07FF, prN}, // Sc [2] NKO DOROME SIGN..NKO TAMAN SIGN + {0x0800, 0x0815, prN}, // Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF + {0x0816, 0x0819, prN}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH + {0x081A, 0x081A, prN}, // Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT + {0x081B, 0x0823, prN}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A + {0x0824, 0x0824, prN}, // Lm SAMARITAN MODIFIER LETTER SHORT A + {0x0825, 0x0827, prN}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U + {0x0828, 0x0828, prN}, // Lm SAMARITAN MODIFIER LETTER I + {0x0829, 0x082D, prN}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA + {0x0830, 0x083E, prN}, // Po [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU + {0x0840, 0x0858, prN}, // Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN + {0x0859, 0x085B, prN}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK + {0x085E, 0x085E, prN}, // Po MANDAIC PUNCTUATION + {0x0860, 0x086A, prN}, // Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA + {0x0870, 0x0887, prN}, // Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT + {0x0888, 0x0888, prN}, // Sk ARABIC RAISED ROUND DOT + {0x0889, 0x088E, prN}, // Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL + {0x0890, 0x0891, prN}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE + {0x0898, 0x089F, prN}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA + {0x08A0, 0x08C8, prN}, // Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF + {0x08C9, 0x08C9, prN}, // Lm ARABIC SMALL FARSI YEH + {0x08CA, 0x08E1, prN}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA + {0x08E2, 0x08E2, prN}, // Cf ARABIC DISPUTED END OF AYAH + {0x08E3, 0x08FF, prN}, // Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA + {0x0900, 0x0902, prN}, // Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA + {0x0903, 0x0903, prN}, // Mc DEVANAGARI SIGN VISARGA + {0x0904, 0x0939, prN}, // Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA + {0x093A, 0x093A, prN}, // Mn DEVANAGARI VOWEL SIGN OE + {0x093B, 0x093B, prN}, // Mc DEVANAGARI VOWEL SIGN OOE + {0x093C, 0x093C, prN}, // Mn DEVANAGARI SIGN NUKTA + {0x093D, 0x093D, prN}, // Lo DEVANAGARI SIGN AVAGRAHA + {0x093E, 0x0940, prN}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II + {0x0941, 0x0948, prN}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI + {0x0949, 0x094C, prN}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU + {0x094D, 0x094D, prN}, // Mn DEVANAGARI SIGN VIRAMA + {0x094E, 0x094F, prN}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW + {0x0950, 0x0950, prN}, // Lo DEVANAGARI OM + {0x0951, 0x0957, prN}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE + {0x0958, 0x0961, prN}, // Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL + {0x0962, 0x0963, prN}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL + {0x0964, 0x0965, prN}, // Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA + {0x0966, 0x096F, prN}, // Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE + {0x0970, 0x0970, prN}, // Po DEVANAGARI ABBREVIATION SIGN + {0x0971, 0x0971, prN}, // Lm DEVANAGARI SIGN HIGH SPACING DOT + {0x0972, 0x097F, prN}, // Lo [14] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER BBA + {0x0980, 0x0980, prN}, // Lo BENGALI ANJI + {0x0981, 0x0981, prN}, // Mn BENGALI SIGN CANDRABINDU + {0x0982, 0x0983, prN}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA + {0x0985, 0x098C, prN}, // Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L + {0x098F, 0x0990, prN}, // Lo [2] BENGALI LETTER E..BENGALI LETTER AI + {0x0993, 0x09A8, prN}, // Lo [22] BENGALI LETTER O..BENGALI LETTER NA + {0x09AA, 0x09B0, prN}, // Lo [7] BENGALI LETTER PA..BENGALI LETTER RA + {0x09B2, 0x09B2, prN}, // Lo BENGALI LETTER LA + {0x09B6, 0x09B9, prN}, // Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA + {0x09BC, 0x09BC, prN}, // Mn BENGALI SIGN NUKTA + {0x09BD, 0x09BD, prN}, // Lo BENGALI SIGN AVAGRAHA + {0x09BE, 0x09C0, prN}, // Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II + {0x09C1, 0x09C4, prN}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR + {0x09C7, 0x09C8, prN}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI + {0x09CB, 0x09CC, prN}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU + {0x09CD, 0x09CD, prN}, // Mn BENGALI SIGN VIRAMA + {0x09CE, 0x09CE, prN}, // Lo BENGALI LETTER KHANDA TA + {0x09D7, 0x09D7, prN}, // Mc BENGALI AU LENGTH MARK + {0x09DC, 0x09DD, prN}, // Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA + {0x09DF, 0x09E1, prN}, // Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL + {0x09E2, 0x09E3, prN}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL + {0x09E6, 0x09EF, prN}, // Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE + {0x09F0, 0x09F1, prN}, // Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL + {0x09F2, 0x09F3, prN}, // Sc [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN + {0x09F4, 0x09F9, prN}, // No [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN + {0x09FA, 0x09FA, prN}, // So BENGALI ISSHAR + {0x09FB, 0x09FB, prN}, // Sc BENGALI GANDA MARK + {0x09FC, 0x09FC, prN}, // Lo BENGALI LETTER VEDIC ANUSVARA + {0x09FD, 0x09FD, prN}, // Po BENGALI ABBREVIATION SIGN + {0x09FE, 0x09FE, prN}, // Mn BENGALI SANDHI MARK + {0x0A01, 0x0A02, prN}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI + {0x0A03, 0x0A03, prN}, // Mc GURMUKHI SIGN VISARGA + {0x0A05, 0x0A0A, prN}, // Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU + {0x0A0F, 0x0A10, prN}, // Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI + {0x0A13, 0x0A28, prN}, // Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA + {0x0A2A, 0x0A30, prN}, // Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA + {0x0A32, 0x0A33, prN}, // Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA + {0x0A35, 0x0A36, prN}, // Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA + {0x0A38, 0x0A39, prN}, // Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA + {0x0A3C, 0x0A3C, prN}, // Mn GURMUKHI SIGN NUKTA + {0x0A3E, 0x0A40, prN}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II + {0x0A41, 0x0A42, prN}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU + {0x0A47, 0x0A48, prN}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI + {0x0A4B, 0x0A4D, prN}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA + {0x0A51, 0x0A51, prN}, // Mn GURMUKHI SIGN UDAAT + {0x0A59, 0x0A5C, prN}, // Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA + {0x0A5E, 0x0A5E, prN}, // Lo GURMUKHI LETTER FA + {0x0A66, 0x0A6F, prN}, // Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE + {0x0A70, 0x0A71, prN}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK + {0x0A72, 0x0A74, prN}, // Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR + {0x0A75, 0x0A75, prN}, // Mn GURMUKHI SIGN YAKASH + {0x0A76, 0x0A76, prN}, // Po GURMUKHI ABBREVIATION SIGN + {0x0A81, 0x0A82, prN}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA + {0x0A83, 0x0A83, prN}, // Mc GUJARATI SIGN VISARGA + {0x0A85, 0x0A8D, prN}, // Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E + {0x0A8F, 0x0A91, prN}, // Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O + {0x0A93, 0x0AA8, prN}, // Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA + {0x0AAA, 0x0AB0, prN}, // Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA + {0x0AB2, 0x0AB3, prN}, // Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA + {0x0AB5, 0x0AB9, prN}, // Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA + {0x0ABC, 0x0ABC, prN}, // Mn GUJARATI SIGN NUKTA + {0x0ABD, 0x0ABD, prN}, // Lo GUJARATI SIGN AVAGRAHA + {0x0ABE, 0x0AC0, prN}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II + {0x0AC1, 0x0AC5, prN}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E + {0x0AC7, 0x0AC8, prN}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI + {0x0AC9, 0x0AC9, prN}, // Mc GUJARATI VOWEL SIGN CANDRA O + {0x0ACB, 0x0ACC, prN}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU + {0x0ACD, 0x0ACD, prN}, // Mn GUJARATI SIGN VIRAMA + {0x0AD0, 0x0AD0, prN}, // Lo GUJARATI OM + {0x0AE0, 0x0AE1, prN}, // Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL + {0x0AE2, 0x0AE3, prN}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL + {0x0AE6, 0x0AEF, prN}, // Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE + {0x0AF0, 0x0AF0, prN}, // Po GUJARATI ABBREVIATION SIGN + {0x0AF1, 0x0AF1, prN}, // Sc GUJARATI RUPEE SIGN + {0x0AF9, 0x0AF9, prN}, // Lo GUJARATI LETTER ZHA + {0x0AFA, 0x0AFF, prN}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE + {0x0B01, 0x0B01, prN}, // Mn ORIYA SIGN CANDRABINDU + {0x0B02, 0x0B03, prN}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA + {0x0B05, 0x0B0C, prN}, // Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L + {0x0B0F, 0x0B10, prN}, // Lo [2] ORIYA LETTER E..ORIYA LETTER AI + {0x0B13, 0x0B28, prN}, // Lo [22] ORIYA LETTER O..ORIYA LETTER NA + {0x0B2A, 0x0B30, prN}, // Lo [7] ORIYA LETTER PA..ORIYA LETTER RA + {0x0B32, 0x0B33, prN}, // Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA + {0x0B35, 0x0B39, prN}, // Lo [5] ORIYA LETTER VA..ORIYA LETTER HA + {0x0B3C, 0x0B3C, prN}, // Mn ORIYA SIGN NUKTA + {0x0B3D, 0x0B3D, prN}, // Lo ORIYA SIGN AVAGRAHA + {0x0B3E, 0x0B3E, prN}, // Mc ORIYA VOWEL SIGN AA + {0x0B3F, 0x0B3F, prN}, // Mn ORIYA VOWEL SIGN I + {0x0B40, 0x0B40, prN}, // Mc ORIYA VOWEL SIGN II + {0x0B41, 0x0B44, prN}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR + {0x0B47, 0x0B48, prN}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI + {0x0B4B, 0x0B4C, prN}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU + {0x0B4D, 0x0B4D, prN}, // Mn ORIYA SIGN VIRAMA + {0x0B55, 0x0B56, prN}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK + {0x0B57, 0x0B57, prN}, // Mc ORIYA AU LENGTH MARK + {0x0B5C, 0x0B5D, prN}, // Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA + {0x0B5F, 0x0B61, prN}, // Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL + {0x0B62, 0x0B63, prN}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL + {0x0B66, 0x0B6F, prN}, // Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE + {0x0B70, 0x0B70, prN}, // So ORIYA ISSHAR + {0x0B71, 0x0B71, prN}, // Lo ORIYA LETTER WA + {0x0B72, 0x0B77, prN}, // No [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS + {0x0B82, 0x0B82, prN}, // Mn TAMIL SIGN ANUSVARA + {0x0B83, 0x0B83, prN}, // Lo TAMIL SIGN VISARGA + {0x0B85, 0x0B8A, prN}, // Lo [6] TAMIL LETTER A..TAMIL LETTER UU + {0x0B8E, 0x0B90, prN}, // Lo [3] TAMIL LETTER E..TAMIL LETTER AI + {0x0B92, 0x0B95, prN}, // Lo [4] TAMIL LETTER O..TAMIL LETTER KA + {0x0B99, 0x0B9A, prN}, // Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA + {0x0B9C, 0x0B9C, prN}, // Lo TAMIL LETTER JA + {0x0B9E, 0x0B9F, prN}, // Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA + {0x0BA3, 0x0BA4, prN}, // Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA + {0x0BA8, 0x0BAA, prN}, // Lo [3] TAMIL LETTER NA..TAMIL LETTER PA + {0x0BAE, 0x0BB9, prN}, // Lo [12] TAMIL LETTER MA..TAMIL LETTER HA + {0x0BBE, 0x0BBF, prN}, // Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I + {0x0BC0, 0x0BC0, prN}, // Mn TAMIL VOWEL SIGN II + {0x0BC1, 0x0BC2, prN}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU + {0x0BC6, 0x0BC8, prN}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI + {0x0BCA, 0x0BCC, prN}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU + {0x0BCD, 0x0BCD, prN}, // Mn TAMIL SIGN VIRAMA + {0x0BD0, 0x0BD0, prN}, // Lo TAMIL OM + {0x0BD7, 0x0BD7, prN}, // Mc TAMIL AU LENGTH MARK + {0x0BE6, 0x0BEF, prN}, // Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE + {0x0BF0, 0x0BF2, prN}, // No [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND + {0x0BF3, 0x0BF8, prN}, // So [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN + {0x0BF9, 0x0BF9, prN}, // Sc TAMIL RUPEE SIGN + {0x0BFA, 0x0BFA, prN}, // So TAMIL NUMBER SIGN + {0x0C00, 0x0C00, prN}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE + {0x0C01, 0x0C03, prN}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA + {0x0C04, 0x0C04, prN}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE + {0x0C05, 0x0C0C, prN}, // Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L + {0x0C0E, 0x0C10, prN}, // Lo [3] TELUGU LETTER E..TELUGU LETTER AI + {0x0C12, 0x0C28, prN}, // Lo [23] TELUGU LETTER O..TELUGU LETTER NA + {0x0C2A, 0x0C39, prN}, // Lo [16] TELUGU LETTER PA..TELUGU LETTER HA + {0x0C3C, 0x0C3C, prN}, // Mn TELUGU SIGN NUKTA + {0x0C3D, 0x0C3D, prN}, // Lo TELUGU SIGN AVAGRAHA + {0x0C3E, 0x0C40, prN}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II + {0x0C41, 0x0C44, prN}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR + {0x0C46, 0x0C48, prN}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI + {0x0C4A, 0x0C4D, prN}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA + {0x0C55, 0x0C56, prN}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK + {0x0C58, 0x0C5A, prN}, // Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA + {0x0C5D, 0x0C5D, prN}, // Lo TELUGU LETTER NAKAARA POLLU + {0x0C60, 0x0C61, prN}, // Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL + {0x0C62, 0x0C63, prN}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL + {0x0C66, 0x0C6F, prN}, // Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE + {0x0C77, 0x0C77, prN}, // Po TELUGU SIGN SIDDHAM + {0x0C78, 0x0C7E, prN}, // No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR + {0x0C7F, 0x0C7F, prN}, // So TELUGU SIGN TUUMU + {0x0C80, 0x0C80, prN}, // Lo KANNADA SIGN SPACING CANDRABINDU + {0x0C81, 0x0C81, prN}, // Mn KANNADA SIGN CANDRABINDU + {0x0C82, 0x0C83, prN}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA + {0x0C84, 0x0C84, prN}, // Po KANNADA SIGN SIDDHAM + {0x0C85, 0x0C8C, prN}, // Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L + {0x0C8E, 0x0C90, prN}, // Lo [3] KANNADA LETTER E..KANNADA LETTER AI + {0x0C92, 0x0CA8, prN}, // Lo [23] KANNADA LETTER O..KANNADA LETTER NA + {0x0CAA, 0x0CB3, prN}, // Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA + {0x0CB5, 0x0CB9, prN}, // Lo [5] KANNADA LETTER VA..KANNADA LETTER HA + {0x0CBC, 0x0CBC, prN}, // Mn KANNADA SIGN NUKTA + {0x0CBD, 0x0CBD, prN}, // Lo KANNADA SIGN AVAGRAHA + {0x0CBE, 0x0CBE, prN}, // Mc KANNADA VOWEL SIGN AA + {0x0CBF, 0x0CBF, prN}, // Mn KANNADA VOWEL SIGN I + {0x0CC0, 0x0CC4, prN}, // Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR + {0x0CC6, 0x0CC6, prN}, // Mn KANNADA VOWEL SIGN E + {0x0CC7, 0x0CC8, prN}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI + {0x0CCA, 0x0CCB, prN}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO + {0x0CCC, 0x0CCD, prN}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA + {0x0CD5, 0x0CD6, prN}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK + {0x0CDD, 0x0CDE, prN}, // Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA + {0x0CE0, 0x0CE1, prN}, // Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL + {0x0CE2, 0x0CE3, prN}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL + {0x0CE6, 0x0CEF, prN}, // Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE + {0x0CF1, 0x0CF2, prN}, // Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA + {0x0CF3, 0x0CF3, prN}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT + {0x0D00, 0x0D01, prN}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU + {0x0D02, 0x0D03, prN}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA + {0x0D04, 0x0D0C, prN}, // Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L + {0x0D0E, 0x0D10, prN}, // Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI + {0x0D12, 0x0D3A, prN}, // Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA + {0x0D3B, 0x0D3C, prN}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA + {0x0D3D, 0x0D3D, prN}, // Lo MALAYALAM SIGN AVAGRAHA + {0x0D3E, 0x0D40, prN}, // Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II + {0x0D41, 0x0D44, prN}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR + {0x0D46, 0x0D48, prN}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI + {0x0D4A, 0x0D4C, prN}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU + {0x0D4D, 0x0D4D, prN}, // Mn MALAYALAM SIGN VIRAMA + {0x0D4E, 0x0D4E, prN}, // Lo MALAYALAM LETTER DOT REPH + {0x0D4F, 0x0D4F, prN}, // So MALAYALAM SIGN PARA + {0x0D54, 0x0D56, prN}, // Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL + {0x0D57, 0x0D57, prN}, // Mc MALAYALAM AU LENGTH MARK + {0x0D58, 0x0D5E, prN}, // No [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH + {0x0D5F, 0x0D61, prN}, // Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL + {0x0D62, 0x0D63, prN}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL + {0x0D66, 0x0D6F, prN}, // Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE + {0x0D70, 0x0D78, prN}, // No [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS + {0x0D79, 0x0D79, prN}, // So MALAYALAM DATE MARK + {0x0D7A, 0x0D7F, prN}, // Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K + {0x0D81, 0x0D81, prN}, // Mn SINHALA SIGN CANDRABINDU + {0x0D82, 0x0D83, prN}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA + {0x0D85, 0x0D96, prN}, // Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA + {0x0D9A, 0x0DB1, prN}, // Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA + {0x0DB3, 0x0DBB, prN}, // Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA + {0x0DBD, 0x0DBD, prN}, // Lo SINHALA LETTER DANTAJA LAYANNA + {0x0DC0, 0x0DC6, prN}, // Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA + {0x0DCA, 0x0DCA, prN}, // Mn SINHALA SIGN AL-LAKUNA + {0x0DCF, 0x0DD1, prN}, // Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA + {0x0DD2, 0x0DD4, prN}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA + {0x0DD6, 0x0DD6, prN}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA + {0x0DD8, 0x0DDF, prN}, // Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA + {0x0DE6, 0x0DEF, prN}, // Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE + {0x0DF2, 0x0DF3, prN}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA + {0x0DF4, 0x0DF4, prN}, // Po SINHALA PUNCTUATION KUNDDALIYA + {0x0E01, 0x0E30, prN}, // Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A + {0x0E31, 0x0E31, prN}, // Mn THAI CHARACTER MAI HAN-AKAT + {0x0E32, 0x0E33, prN}, // Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM + {0x0E34, 0x0E3A, prN}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU + {0x0E3F, 0x0E3F, prN}, // Sc THAI CURRENCY SYMBOL BAHT + {0x0E40, 0x0E45, prN}, // Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO + {0x0E46, 0x0E46, prN}, // Lm THAI CHARACTER MAIYAMOK + {0x0E47, 0x0E4E, prN}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN + {0x0E4F, 0x0E4F, prN}, // Po THAI CHARACTER FONGMAN + {0x0E50, 0x0E59, prN}, // Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE + {0x0E5A, 0x0E5B, prN}, // Po [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT + {0x0E81, 0x0E82, prN}, // Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG + {0x0E84, 0x0E84, prN}, // Lo LAO LETTER KHO TAM + {0x0E86, 0x0E8A, prN}, // Lo [5] LAO LETTER PALI GHA..LAO LETTER SO TAM + {0x0E8C, 0x0EA3, prN}, // Lo [24] LAO LETTER PALI JHA..LAO LETTER LO LING + {0x0EA5, 0x0EA5, prN}, // Lo LAO LETTER LO LOOT + {0x0EA7, 0x0EB0, prN}, // Lo [10] LAO LETTER WO..LAO VOWEL SIGN A + {0x0EB1, 0x0EB1, prN}, // Mn LAO VOWEL SIGN MAI KAN + {0x0EB2, 0x0EB3, prN}, // Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM + {0x0EB4, 0x0EBC, prN}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO + {0x0EBD, 0x0EBD, prN}, // Lo LAO SEMIVOWEL SIGN NYO + {0x0EC0, 0x0EC4, prN}, // Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI + {0x0EC6, 0x0EC6, prN}, // Lm LAO KO LA + {0x0EC8, 0x0ECE, prN}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN + {0x0ED0, 0x0ED9, prN}, // Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE + {0x0EDC, 0x0EDF, prN}, // Lo [4] LAO HO NO..LAO LETTER KHMU NYO + {0x0F00, 0x0F00, prN}, // Lo TIBETAN SYLLABLE OM + {0x0F01, 0x0F03, prN}, // So [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA + {0x0F04, 0x0F12, prN}, // Po [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD + {0x0F13, 0x0F13, prN}, // So TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN + {0x0F14, 0x0F14, prN}, // Po TIBETAN MARK GTER TSHEG + {0x0F15, 0x0F17, prN}, // So [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS + {0x0F18, 0x0F19, prN}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS + {0x0F1A, 0x0F1F, prN}, // So [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG + {0x0F20, 0x0F29, prN}, // Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE + {0x0F2A, 0x0F33, prN}, // No [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO + {0x0F34, 0x0F34, prN}, // So TIBETAN MARK BSDUS RTAGS + {0x0F35, 0x0F35, prN}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA + {0x0F36, 0x0F36, prN}, // So TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN + {0x0F37, 0x0F37, prN}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS + {0x0F38, 0x0F38, prN}, // So TIBETAN MARK CHE MGO + {0x0F39, 0x0F39, prN}, // Mn TIBETAN MARK TSA -PHRU + {0x0F3A, 0x0F3A, prN}, // Ps TIBETAN MARK GUG RTAGS GYON + {0x0F3B, 0x0F3B, prN}, // Pe TIBETAN MARK GUG RTAGS GYAS + {0x0F3C, 0x0F3C, prN}, // Ps TIBETAN MARK ANG KHANG GYON + {0x0F3D, 0x0F3D, prN}, // Pe TIBETAN MARK ANG KHANG GYAS + {0x0F3E, 0x0F3F, prN}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES + {0x0F40, 0x0F47, prN}, // Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA + {0x0F49, 0x0F6C, prN}, // Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA + {0x0F71, 0x0F7E, prN}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO + {0x0F7F, 0x0F7F, prN}, // Mc TIBETAN SIGN RNAM BCAD + {0x0F80, 0x0F84, prN}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA + {0x0F85, 0x0F85, prN}, // Po TIBETAN MARK PALUTA + {0x0F86, 0x0F87, prN}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS + {0x0F88, 0x0F8C, prN}, // Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN + {0x0F8D, 0x0F97, prN}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA + {0x0F99, 0x0FBC, prN}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA + {0x0FBE, 0x0FC5, prN}, // So [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE + {0x0FC6, 0x0FC6, prN}, // Mn TIBETAN SYMBOL PADMA GDAN + {0x0FC7, 0x0FCC, prN}, // So [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL + {0x0FCE, 0x0FCF, prN}, // So [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM + {0x0FD0, 0x0FD4, prN}, // Po [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA + {0x0FD5, 0x0FD8, prN}, // So [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS + {0x0FD9, 0x0FDA, prN}, // Po [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS + {0x1000, 0x102A, prN}, // Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU + {0x102B, 0x102C, prN}, // Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA + {0x102D, 0x1030, prN}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU + {0x1031, 0x1031, prN}, // Mc MYANMAR VOWEL SIGN E + {0x1032, 0x1037, prN}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW + {0x1038, 0x1038, prN}, // Mc MYANMAR SIGN VISARGA + {0x1039, 0x103A, prN}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT + {0x103B, 0x103C, prN}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA + {0x103D, 0x103E, prN}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA + {0x103F, 0x103F, prN}, // Lo MYANMAR LETTER GREAT SA + {0x1040, 0x1049, prN}, // Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE + {0x104A, 0x104F, prN}, // Po [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE + {0x1050, 0x1055, prN}, // Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL + {0x1056, 0x1057, prN}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR + {0x1058, 0x1059, prN}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL + {0x105A, 0x105D, prN}, // Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE + {0x105E, 0x1060, prN}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA + {0x1061, 0x1061, prN}, // Lo MYANMAR LETTER SGAW KAREN SHA + {0x1062, 0x1064, prN}, // Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO + {0x1065, 0x1066, prN}, // Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA + {0x1067, 0x106D, prN}, // Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 + {0x106E, 0x1070, prN}, // Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA + {0x1071, 0x1074, prN}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE + {0x1075, 0x1081, prN}, // Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA + {0x1082, 0x1082, prN}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA + {0x1083, 0x1084, prN}, // Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E + {0x1085, 0x1086, prN}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y + {0x1087, 0x108C, prN}, // Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 + {0x108D, 0x108D, prN}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE + {0x108E, 0x108E, prN}, // Lo MYANMAR LETTER RUMAI PALAUNG FA + {0x108F, 0x108F, prN}, // Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 + {0x1090, 0x1099, prN}, // Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE + {0x109A, 0x109C, prN}, // Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A + {0x109D, 0x109D, prN}, // Mn MYANMAR VOWEL SIGN AITON AI + {0x109E, 0x109F, prN}, // So [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION + {0x10A0, 0x10C5, prN}, // Lu [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE + {0x10C7, 0x10C7, prN}, // Lu GEORGIAN CAPITAL LETTER YN + {0x10CD, 0x10CD, prN}, // Lu GEORGIAN CAPITAL LETTER AEN + {0x10D0, 0x10FA, prN}, // Ll [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN + {0x10FB, 0x10FB, prN}, // Po GEORGIAN PARAGRAPH SEPARATOR + {0x10FC, 0x10FC, prN}, // Lm MODIFIER LETTER GEORGIAN NAR + {0x10FD, 0x10FF, prN}, // Ll [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN + {0x1100, 0x115F, prW}, // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER + {0x1160, 0x11FF, prN}, // Lo [160] HANGUL JUNGSEONG FILLER..HANGUL JONGSEONG SSANGNIEUN + {0x1200, 0x1248, prN}, // Lo [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA + {0x124A, 0x124D, prN}, // Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE + {0x1250, 0x1256, prN}, // Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO + {0x1258, 0x1258, prN}, // Lo ETHIOPIC SYLLABLE QHWA + {0x125A, 0x125D, prN}, // Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE + {0x1260, 0x1288, prN}, // Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA + {0x128A, 0x128D, prN}, // Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE + {0x1290, 0x12B0, prN}, // Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA + {0x12B2, 0x12B5, prN}, // Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE + {0x12B8, 0x12BE, prN}, // Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO + {0x12C0, 0x12C0, prN}, // Lo ETHIOPIC SYLLABLE KXWA + {0x12C2, 0x12C5, prN}, // Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE + {0x12C8, 0x12D6, prN}, // Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O + {0x12D8, 0x1310, prN}, // Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA + {0x1312, 0x1315, prN}, // Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE + {0x1318, 0x135A, prN}, // Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA + {0x135D, 0x135F, prN}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK + {0x1360, 0x1368, prN}, // Po [9] ETHIOPIC SECTION MARK..ETHIOPIC PARAGRAPH SEPARATOR + {0x1369, 0x137C, prN}, // No [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND + {0x1380, 0x138F, prN}, // Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE + {0x1390, 0x1399, prN}, // So [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT + {0x13A0, 0x13F5, prN}, // Lu [86] CHEROKEE LETTER A..CHEROKEE LETTER MV + {0x13F8, 0x13FD, prN}, // Ll [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV + {0x1400, 0x1400, prN}, // Pd CANADIAN SYLLABICS HYPHEN + {0x1401, 0x166C, prN}, // Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA + {0x166D, 0x166D, prN}, // So CANADIAN SYLLABICS CHI SIGN + {0x166E, 0x166E, prN}, // Po CANADIAN SYLLABICS FULL STOP + {0x166F, 0x167F, prN}, // Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W + {0x1680, 0x1680, prN}, // Zs OGHAM SPACE MARK + {0x1681, 0x169A, prN}, // Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH + {0x169B, 0x169B, prN}, // Ps OGHAM FEATHER MARK + {0x169C, 0x169C, prN}, // Pe OGHAM REVERSED FEATHER MARK + {0x16A0, 0x16EA, prN}, // Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X + {0x16EB, 0x16ED, prN}, // Po [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION + {0x16EE, 0x16F0, prN}, // Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL + {0x16F1, 0x16F8, prN}, // Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC + {0x1700, 0x1711, prN}, // Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA + {0x1712, 0x1714, prN}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA + {0x1715, 0x1715, prN}, // Mc TAGALOG SIGN PAMUDPOD + {0x171F, 0x171F, prN}, // Lo TAGALOG LETTER ARCHAIC RA + {0x1720, 0x1731, prN}, // Lo [18] HANUNOO LETTER A..HANUNOO LETTER HA + {0x1732, 0x1733, prN}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U + {0x1734, 0x1734, prN}, // Mc HANUNOO SIGN PAMUDPOD + {0x1735, 0x1736, prN}, // Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION + {0x1740, 0x1751, prN}, // Lo [18] BUHID LETTER A..BUHID LETTER HA + {0x1752, 0x1753, prN}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U + {0x1760, 0x176C, prN}, // Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA + {0x176E, 0x1770, prN}, // Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA + {0x1772, 0x1773, prN}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U + {0x1780, 0x17B3, prN}, // Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU + {0x17B4, 0x17B5, prN}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA + {0x17B6, 0x17B6, prN}, // Mc KHMER VOWEL SIGN AA + {0x17B7, 0x17BD, prN}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA + {0x17BE, 0x17C5, prN}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU + {0x17C6, 0x17C6, prN}, // Mn KHMER SIGN NIKAHIT + {0x17C7, 0x17C8, prN}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU + {0x17C9, 0x17D3, prN}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT + {0x17D4, 0x17D6, prN}, // Po [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH + {0x17D7, 0x17D7, prN}, // Lm KHMER SIGN LEK TOO + {0x17D8, 0x17DA, prN}, // Po [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT + {0x17DB, 0x17DB, prN}, // Sc KHMER CURRENCY SYMBOL RIEL + {0x17DC, 0x17DC, prN}, // Lo KHMER SIGN AVAKRAHASANYA + {0x17DD, 0x17DD, prN}, // Mn KHMER SIGN ATTHACAN + {0x17E0, 0x17E9, prN}, // Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE + {0x17F0, 0x17F9, prN}, // No [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON + {0x1800, 0x1805, prN}, // Po [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS + {0x1806, 0x1806, prN}, // Pd MONGOLIAN TODO SOFT HYPHEN + {0x1807, 0x180A, prN}, // Po [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU + {0x180B, 0x180D, prN}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE + {0x180E, 0x180E, prN}, // Cf MONGOLIAN VOWEL SEPARATOR + {0x180F, 0x180F, prN}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR + {0x1810, 0x1819, prN}, // Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE + {0x1820, 0x1842, prN}, // Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI + {0x1843, 0x1843, prN}, // Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN + {0x1844, 0x1878, prN}, // Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS + {0x1880, 0x1884, prN}, // Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA + {0x1885, 0x1886, prN}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA + {0x1887, 0x18A8, prN}, // Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA + {0x18A9, 0x18A9, prN}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA + {0x18AA, 0x18AA, prN}, // Lo MONGOLIAN LETTER MANCHU ALI GALI LHA + {0x18B0, 0x18F5, prN}, // Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S + {0x1900, 0x191E, prN}, // Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA + {0x1920, 0x1922, prN}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U + {0x1923, 0x1926, prN}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU + {0x1927, 0x1928, prN}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O + {0x1929, 0x192B, prN}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA + {0x1930, 0x1931, prN}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA + {0x1932, 0x1932, prN}, // Mn LIMBU SMALL LETTER ANUSVARA + {0x1933, 0x1938, prN}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA + {0x1939, 0x193B, prN}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I + {0x1940, 0x1940, prN}, // So LIMBU SIGN LOO + {0x1944, 0x1945, prN}, // Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK + {0x1946, 0x194F, prN}, // Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE + {0x1950, 0x196D, prN}, // Lo [30] TAI LE LETTER KA..TAI LE LETTER AI + {0x1970, 0x1974, prN}, // Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 + {0x1980, 0x19AB, prN}, // Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA + {0x19B0, 0x19C9, prN}, // Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 + {0x19D0, 0x19D9, prN}, // Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE + {0x19DA, 0x19DA, prN}, // No NEW TAI LUE THAM DIGIT ONE + {0x19DE, 0x19DF, prN}, // So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV + {0x19E0, 0x19FF, prN}, // So [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC + {0x1A00, 0x1A16, prN}, // Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA + {0x1A17, 0x1A18, prN}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U + {0x1A19, 0x1A1A, prN}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O + {0x1A1B, 0x1A1B, prN}, // Mn BUGINESE VOWEL SIGN AE + {0x1A1E, 0x1A1F, prN}, // Po [2] BUGINESE PALLAWA..BUGINESE END OF SECTION + {0x1A20, 0x1A54, prN}, // Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA + {0x1A55, 0x1A55, prN}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA + {0x1A56, 0x1A56, prN}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA + {0x1A57, 0x1A57, prN}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI + {0x1A58, 0x1A5E, prN}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA + {0x1A60, 0x1A60, prN}, // Mn TAI THAM SIGN SAKOT + {0x1A61, 0x1A61, prN}, // Mc TAI THAM VOWEL SIGN A + {0x1A62, 0x1A62, prN}, // Mn TAI THAM VOWEL SIGN MAI SAT + {0x1A63, 0x1A64, prN}, // Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA + {0x1A65, 0x1A6C, prN}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW + {0x1A6D, 0x1A72, prN}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI + {0x1A73, 0x1A7C, prN}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN + {0x1A7F, 0x1A7F, prN}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT + {0x1A80, 0x1A89, prN}, // Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE + {0x1A90, 0x1A99, prN}, // Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE + {0x1AA0, 0x1AA6, prN}, // Po [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA + {0x1AA7, 0x1AA7, prN}, // Lm TAI THAM SIGN MAI YAMOK + {0x1AA8, 0x1AAD, prN}, // Po [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG + {0x1AB0, 0x1ABD, prN}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW + {0x1ABE, 0x1ABE, prN}, // Me COMBINING PARENTHESES OVERLAY + {0x1ABF, 0x1ACE, prN}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T + {0x1B00, 0x1B03, prN}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG + {0x1B04, 0x1B04, prN}, // Mc BALINESE SIGN BISAH + {0x1B05, 0x1B33, prN}, // Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA + {0x1B34, 0x1B34, prN}, // Mn BALINESE SIGN REREKAN + {0x1B35, 0x1B35, prN}, // Mc BALINESE VOWEL SIGN TEDUNG + {0x1B36, 0x1B3A, prN}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA + {0x1B3B, 0x1B3B, prN}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG + {0x1B3C, 0x1B3C, prN}, // Mn BALINESE VOWEL SIGN LA LENGA + {0x1B3D, 0x1B41, prN}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG + {0x1B42, 0x1B42, prN}, // Mn BALINESE VOWEL SIGN PEPET + {0x1B43, 0x1B44, prN}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG + {0x1B45, 0x1B4C, prN}, // Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA + {0x1B50, 0x1B59, prN}, // Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE + {0x1B5A, 0x1B60, prN}, // Po [7] BALINESE PANTI..BALINESE PAMENENG + {0x1B61, 0x1B6A, prN}, // So [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE + {0x1B6B, 0x1B73, prN}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG + {0x1B74, 0x1B7C, prN}, // So [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING + {0x1B7D, 0x1B7E, prN}, // Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG + {0x1B80, 0x1B81, prN}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR + {0x1B82, 0x1B82, prN}, // Mc SUNDANESE SIGN PANGWISAD + {0x1B83, 0x1BA0, prN}, // Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA + {0x1BA1, 0x1BA1, prN}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL + {0x1BA2, 0x1BA5, prN}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU + {0x1BA6, 0x1BA7, prN}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG + {0x1BA8, 0x1BA9, prN}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG + {0x1BAA, 0x1BAA, prN}, // Mc SUNDANESE SIGN PAMAAEH + {0x1BAB, 0x1BAD, prN}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA + {0x1BAE, 0x1BAF, prN}, // Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA + {0x1BB0, 0x1BB9, prN}, // Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE + {0x1BBA, 0x1BBF, prN}, // Lo [6] SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M + {0x1BC0, 0x1BE5, prN}, // Lo [38] BATAK LETTER A..BATAK LETTER U + {0x1BE6, 0x1BE6, prN}, // Mn BATAK SIGN TOMPI + {0x1BE7, 0x1BE7, prN}, // Mc BATAK VOWEL SIGN E + {0x1BE8, 0x1BE9, prN}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE + {0x1BEA, 0x1BEC, prN}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O + {0x1BED, 0x1BED, prN}, // Mn BATAK VOWEL SIGN KARO O + {0x1BEE, 0x1BEE, prN}, // Mc BATAK VOWEL SIGN U + {0x1BEF, 0x1BF1, prN}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H + {0x1BF2, 0x1BF3, prN}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN + {0x1BFC, 0x1BFF, prN}, // Po [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT + {0x1C00, 0x1C23, prN}, // Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A + {0x1C24, 0x1C2B, prN}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU + {0x1C2C, 0x1C33, prN}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T + {0x1C34, 0x1C35, prN}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG + {0x1C36, 0x1C37, prN}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA + {0x1C3B, 0x1C3F, prN}, // Po [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK + {0x1C40, 0x1C49, prN}, // Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE + {0x1C4D, 0x1C4F, prN}, // Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA + {0x1C50, 0x1C59, prN}, // Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE + {0x1C5A, 0x1C77, prN}, // Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH + {0x1C78, 0x1C7D, prN}, // Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD + {0x1C7E, 0x1C7F, prN}, // Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD + {0x1C80, 0x1C88, prN}, // Ll [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK + {0x1C90, 0x1CBA, prN}, // Lu [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN + {0x1CBD, 0x1CBF, prN}, // Lu [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN + {0x1CC0, 0x1CC7, prN}, // Po [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA + {0x1CD0, 0x1CD2, prN}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA + {0x1CD3, 0x1CD3, prN}, // Po VEDIC SIGN NIHSHVASA + {0x1CD4, 0x1CE0, prN}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA + {0x1CE1, 0x1CE1, prN}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA + {0x1CE2, 0x1CE8, prN}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL + {0x1CE9, 0x1CEC, prN}, // Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL + {0x1CED, 0x1CED, prN}, // Mn VEDIC SIGN TIRYAK + {0x1CEE, 0x1CF3, prN}, // Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA + {0x1CF4, 0x1CF4, prN}, // Mn VEDIC TONE CANDRA ABOVE + {0x1CF5, 0x1CF6, prN}, // Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA + {0x1CF7, 0x1CF7, prN}, // Mc VEDIC SIGN ATIKRAMA + {0x1CF8, 0x1CF9, prN}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE + {0x1CFA, 0x1CFA, prN}, // Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA + {0x1D00, 0x1D2B, prN}, // Ll [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL + {0x1D2C, 0x1D6A, prN}, // Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI + {0x1D6B, 0x1D77, prN}, // Ll [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G + {0x1D78, 0x1D78, prN}, // Lm MODIFIER LETTER CYRILLIC EN + {0x1D79, 0x1D7F, prN}, // Ll [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE + {0x1D80, 0x1D9A, prN}, // Ll [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK + {0x1D9B, 0x1DBF, prN}, // Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA + {0x1DC0, 0x1DFF, prN}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + {0x1E00, 0x1EFF, prN}, // L& [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP + {0x1F00, 0x1F15, prN}, // L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + {0x1F18, 0x1F1D, prN}, // Lu [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + {0x1F20, 0x1F45, prN}, // L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + {0x1F48, 0x1F4D, prN}, // Lu [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + {0x1F50, 0x1F57, prN}, // Ll [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + {0x1F59, 0x1F59, prN}, // Lu GREEK CAPITAL LETTER UPSILON WITH DASIA + {0x1F5B, 0x1F5B, prN}, // Lu GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + {0x1F5D, 0x1F5D, prN}, // Lu GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + {0x1F5F, 0x1F7D, prN}, // L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA + {0x1F80, 0x1FB4, prN}, // L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + {0x1FB6, 0x1FBC, prN}, // L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + {0x1FBD, 0x1FBD, prN}, // Sk GREEK KORONIS + {0x1FBE, 0x1FBE, prN}, // Ll GREEK PROSGEGRAMMENI + {0x1FBF, 0x1FC1, prN}, // Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI + {0x1FC2, 0x1FC4, prN}, // Ll [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + {0x1FC6, 0x1FCC, prN}, // L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + {0x1FCD, 0x1FCF, prN}, // Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI + {0x1FD0, 0x1FD3, prN}, // Ll [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA + {0x1FD6, 0x1FDB, prN}, // L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA + {0x1FDD, 0x1FDF, prN}, // Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI + {0x1FE0, 0x1FEC, prN}, // L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA + {0x1FED, 0x1FEF, prN}, // Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA + {0x1FF2, 0x1FF4, prN}, // Ll [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + {0x1FF6, 0x1FFC, prN}, // L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + {0x1FFD, 0x1FFE, prN}, // Sk [2] GREEK OXIA..GREEK DASIA + {0x2000, 0x200A, prN}, // Zs [11] EN QUAD..HAIR SPACE + {0x200B, 0x200F, prN}, // Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK + {0x2010, 0x2010, prA}, // Pd HYPHEN + {0x2011, 0x2012, prN}, // Pd [2] NON-BREAKING HYPHEN..FIGURE DASH + {0x2013, 0x2015, prA}, // Pd [3] EN DASH..HORIZONTAL BAR + {0x2016, 0x2016, prA}, // Po DOUBLE VERTICAL LINE + {0x2017, 0x2017, prN}, // Po DOUBLE LOW LINE + {0x2018, 0x2018, prA}, // Pi LEFT SINGLE QUOTATION MARK + {0x2019, 0x2019, prA}, // Pf RIGHT SINGLE QUOTATION MARK + {0x201A, 0x201A, prN}, // Ps SINGLE LOW-9 QUOTATION MARK + {0x201B, 0x201B, prN}, // Pi SINGLE HIGH-REVERSED-9 QUOTATION MARK + {0x201C, 0x201C, prA}, // Pi LEFT DOUBLE QUOTATION MARK + {0x201D, 0x201D, prA}, // Pf RIGHT DOUBLE QUOTATION MARK + {0x201E, 0x201E, prN}, // Ps DOUBLE LOW-9 QUOTATION MARK + {0x201F, 0x201F, prN}, // Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK + {0x2020, 0x2022, prA}, // Po [3] DAGGER..BULLET + {0x2023, 0x2023, prN}, // Po TRIANGULAR BULLET + {0x2024, 0x2027, prA}, // Po [4] ONE DOT LEADER..HYPHENATION POINT + {0x2028, 0x2028, prN}, // Zl LINE SEPARATOR + {0x2029, 0x2029, prN}, // Zp PARAGRAPH SEPARATOR + {0x202A, 0x202E, prN}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE + {0x202F, 0x202F, prN}, // Zs NARROW NO-BREAK SPACE + {0x2030, 0x2030, prA}, // Po PER MILLE SIGN + {0x2031, 0x2031, prN}, // Po PER TEN THOUSAND SIGN + {0x2032, 0x2033, prA}, // Po [2] PRIME..DOUBLE PRIME + {0x2034, 0x2034, prN}, // Po TRIPLE PRIME + {0x2035, 0x2035, prA}, // Po REVERSED PRIME + {0x2036, 0x2038, prN}, // Po [3] REVERSED DOUBLE PRIME..CARET + {0x2039, 0x2039, prN}, // Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK + {0x203A, 0x203A, prN}, // Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + {0x203B, 0x203B, prA}, // Po REFERENCE MARK + {0x203C, 0x203D, prN}, // Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG + {0x203E, 0x203E, prA}, // Po OVERLINE + {0x203F, 0x2040, prN}, // Pc [2] UNDERTIE..CHARACTER TIE + {0x2041, 0x2043, prN}, // Po [3] CARET INSERTION POINT..HYPHEN BULLET + {0x2044, 0x2044, prN}, // Sm FRACTION SLASH + {0x2045, 0x2045, prN}, // Ps LEFT SQUARE BRACKET WITH QUILL + {0x2046, 0x2046, prN}, // Pe RIGHT SQUARE BRACKET WITH QUILL + {0x2047, 0x2051, prN}, // Po [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY + {0x2052, 0x2052, prN}, // Sm COMMERCIAL MINUS SIGN + {0x2053, 0x2053, prN}, // Po SWUNG DASH + {0x2054, 0x2054, prN}, // Pc INVERTED UNDERTIE + {0x2055, 0x205E, prN}, // Po [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS + {0x205F, 0x205F, prN}, // Zs MEDIUM MATHEMATICAL SPACE + {0x2060, 0x2064, prN}, // Cf [5] WORD JOINER..INVISIBLE PLUS + {0x2066, 0x206F, prN}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES + {0x2070, 0x2070, prN}, // No SUPERSCRIPT ZERO + {0x2071, 0x2071, prN}, // Lm SUPERSCRIPT LATIN SMALL LETTER I + {0x2074, 0x2074, prA}, // No SUPERSCRIPT FOUR + {0x2075, 0x2079, prN}, // No [5] SUPERSCRIPT FIVE..SUPERSCRIPT NINE + {0x207A, 0x207C, prN}, // Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN + {0x207D, 0x207D, prN}, // Ps SUPERSCRIPT LEFT PARENTHESIS + {0x207E, 0x207E, prN}, // Pe SUPERSCRIPT RIGHT PARENTHESIS + {0x207F, 0x207F, prA}, // Lm SUPERSCRIPT LATIN SMALL LETTER N + {0x2080, 0x2080, prN}, // No SUBSCRIPT ZERO + {0x2081, 0x2084, prA}, // No [4] SUBSCRIPT ONE..SUBSCRIPT FOUR + {0x2085, 0x2089, prN}, // No [5] SUBSCRIPT FIVE..SUBSCRIPT NINE + {0x208A, 0x208C, prN}, // Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN + {0x208D, 0x208D, prN}, // Ps SUBSCRIPT LEFT PARENTHESIS + {0x208E, 0x208E, prN}, // Pe SUBSCRIPT RIGHT PARENTHESIS + {0x2090, 0x209C, prN}, // Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T + {0x20A0, 0x20A8, prN}, // Sc [9] EURO-CURRENCY SIGN..RUPEE SIGN + {0x20A9, 0x20A9, prH}, // Sc WON SIGN + {0x20AA, 0x20AB, prN}, // Sc [2] NEW SHEQEL SIGN..DONG SIGN + {0x20AC, 0x20AC, prA}, // Sc EURO SIGN + {0x20AD, 0x20C0, prN}, // Sc [20] KIP SIGN..SOM SIGN + {0x20D0, 0x20DC, prN}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE + {0x20DD, 0x20E0, prN}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH + {0x20E1, 0x20E1, prN}, // Mn COMBINING LEFT RIGHT ARROW ABOVE + {0x20E2, 0x20E4, prN}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE + {0x20E5, 0x20F0, prN}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE + {0x2100, 0x2101, prN}, // So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT + {0x2102, 0x2102, prN}, // Lu DOUBLE-STRUCK CAPITAL C + {0x2103, 0x2103, prA}, // So DEGREE CELSIUS + {0x2104, 0x2104, prN}, // So CENTRE LINE SYMBOL + {0x2105, 0x2105, prA}, // So CARE OF + {0x2106, 0x2106, prN}, // So CADA UNA + {0x2107, 0x2107, prN}, // Lu EULER CONSTANT + {0x2108, 0x2108, prN}, // So SCRUPLE + {0x2109, 0x2109, prA}, // So DEGREE FAHRENHEIT + {0x210A, 0x2112, prN}, // L& [9] SCRIPT SMALL G..SCRIPT CAPITAL L + {0x2113, 0x2113, prA}, // Ll SCRIPT SMALL L + {0x2114, 0x2114, prN}, // So L B BAR SYMBOL + {0x2115, 0x2115, prN}, // Lu DOUBLE-STRUCK CAPITAL N + {0x2116, 0x2116, prA}, // So NUMERO SIGN + {0x2117, 0x2117, prN}, // So SOUND RECORDING COPYRIGHT + {0x2118, 0x2118, prN}, // Sm SCRIPT CAPITAL P + {0x2119, 0x211D, prN}, // Lu [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R + {0x211E, 0x2120, prN}, // So [3] PRESCRIPTION TAKE..SERVICE MARK + {0x2121, 0x2122, prA}, // So [2] TELEPHONE SIGN..TRADE MARK SIGN + {0x2123, 0x2123, prN}, // So VERSICLE + {0x2124, 0x2124, prN}, // Lu DOUBLE-STRUCK CAPITAL Z + {0x2125, 0x2125, prN}, // So OUNCE SIGN + {0x2126, 0x2126, prA}, // Lu OHM SIGN + {0x2127, 0x2127, prN}, // So INVERTED OHM SIGN + {0x2128, 0x2128, prN}, // Lu BLACK-LETTER CAPITAL Z + {0x2129, 0x2129, prN}, // So TURNED GREEK SMALL LETTER IOTA + {0x212A, 0x212A, prN}, // Lu KELVIN SIGN + {0x212B, 0x212B, prA}, // Lu ANGSTROM SIGN + {0x212C, 0x212D, prN}, // Lu [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C + {0x212E, 0x212E, prN}, // So ESTIMATED SYMBOL + {0x212F, 0x2134, prN}, // L& [6] SCRIPT SMALL E..SCRIPT SMALL O + {0x2135, 0x2138, prN}, // Lo [4] ALEF SYMBOL..DALET SYMBOL + {0x2139, 0x2139, prN}, // Ll INFORMATION SOURCE + {0x213A, 0x213B, prN}, // So [2] ROTATED CAPITAL Q..FACSIMILE SIGN + {0x213C, 0x213F, prN}, // L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI + {0x2140, 0x2144, prN}, // Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y + {0x2145, 0x2149, prN}, // L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J + {0x214A, 0x214A, prN}, // So PROPERTY LINE + {0x214B, 0x214B, prN}, // Sm TURNED AMPERSAND + {0x214C, 0x214D, prN}, // So [2] PER SIGN..AKTIESELSKAB + {0x214E, 0x214E, prN}, // Ll TURNED SMALL F + {0x214F, 0x214F, prN}, // So SYMBOL FOR SAMARITAN SOURCE + {0x2150, 0x2152, prN}, // No [3] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION ONE TENTH + {0x2153, 0x2154, prA}, // No [2] VULGAR FRACTION ONE THIRD..VULGAR FRACTION TWO THIRDS + {0x2155, 0x215A, prN}, // No [6] VULGAR FRACTION ONE FIFTH..VULGAR FRACTION FIVE SIXTHS + {0x215B, 0x215E, prA}, // No [4] VULGAR FRACTION ONE EIGHTH..VULGAR FRACTION SEVEN EIGHTHS + {0x215F, 0x215F, prN}, // No FRACTION NUMERATOR ONE + {0x2160, 0x216B, prA}, // Nl [12] ROMAN NUMERAL ONE..ROMAN NUMERAL TWELVE + {0x216C, 0x216F, prN}, // Nl [4] ROMAN NUMERAL FIFTY..ROMAN NUMERAL ONE THOUSAND + {0x2170, 0x2179, prA}, // Nl [10] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL TEN + {0x217A, 0x2182, prN}, // Nl [9] SMALL ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TEN THOUSAND + {0x2183, 0x2184, prN}, // L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C + {0x2185, 0x2188, prN}, // Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND + {0x2189, 0x2189, prA}, // No VULGAR FRACTION ZERO THIRDS + {0x218A, 0x218B, prN}, // So [2] TURNED DIGIT TWO..TURNED DIGIT THREE + {0x2190, 0x2194, prA}, // Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW + {0x2195, 0x2199, prA}, // So [5] UP DOWN ARROW..SOUTH WEST ARROW + {0x219A, 0x219B, prN}, // Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE + {0x219C, 0x219F, prN}, // So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW + {0x21A0, 0x21A0, prN}, // Sm RIGHTWARDS TWO HEADED ARROW + {0x21A1, 0x21A2, prN}, // So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL + {0x21A3, 0x21A3, prN}, // Sm RIGHTWARDS ARROW WITH TAIL + {0x21A4, 0x21A5, prN}, // So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR + {0x21A6, 0x21A6, prN}, // Sm RIGHTWARDS ARROW FROM BAR + {0x21A7, 0x21AD, prN}, // So [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW + {0x21AE, 0x21AE, prN}, // Sm LEFT RIGHT ARROW WITH STROKE + {0x21AF, 0x21B7, prN}, // So [9] DOWNWARDS ZIGZAG ARROW..CLOCKWISE TOP SEMICIRCLE ARROW + {0x21B8, 0x21B9, prA}, // So [2] NORTH WEST ARROW TO LONG BAR..LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR + {0x21BA, 0x21CD, prN}, // So [20] ANTICLOCKWISE OPEN CIRCLE ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE + {0x21CE, 0x21CF, prN}, // Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE + {0x21D0, 0x21D1, prN}, // So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW + {0x21D2, 0x21D2, prA}, // Sm RIGHTWARDS DOUBLE ARROW + {0x21D3, 0x21D3, prN}, // So DOWNWARDS DOUBLE ARROW + {0x21D4, 0x21D4, prA}, // Sm LEFT RIGHT DOUBLE ARROW + {0x21D5, 0x21E6, prN}, // So [18] UP DOWN DOUBLE ARROW..LEFTWARDS WHITE ARROW + {0x21E7, 0x21E7, prA}, // So UPWARDS WHITE ARROW + {0x21E8, 0x21F3, prN}, // So [12] RIGHTWARDS WHITE ARROW..UP DOWN WHITE ARROW + {0x21F4, 0x21FF, prN}, // Sm [12] RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW + {0x2200, 0x2200, prA}, // Sm FOR ALL + {0x2201, 0x2201, prN}, // Sm COMPLEMENT + {0x2202, 0x2203, prA}, // Sm [2] PARTIAL DIFFERENTIAL..THERE EXISTS + {0x2204, 0x2206, prN}, // Sm [3] THERE DOES NOT EXIST..INCREMENT + {0x2207, 0x2208, prA}, // Sm [2] NABLA..ELEMENT OF + {0x2209, 0x220A, prN}, // Sm [2] NOT AN ELEMENT OF..SMALL ELEMENT OF + {0x220B, 0x220B, prA}, // Sm CONTAINS AS MEMBER + {0x220C, 0x220E, prN}, // Sm [3] DOES NOT CONTAIN AS MEMBER..END OF PROOF + {0x220F, 0x220F, prA}, // Sm N-ARY PRODUCT + {0x2210, 0x2210, prN}, // Sm N-ARY COPRODUCT + {0x2211, 0x2211, prA}, // Sm N-ARY SUMMATION + {0x2212, 0x2214, prN}, // Sm [3] MINUS SIGN..DOT PLUS + {0x2215, 0x2215, prA}, // Sm DIVISION SLASH + {0x2216, 0x2219, prN}, // Sm [4] SET MINUS..BULLET OPERATOR + {0x221A, 0x221A, prA}, // Sm SQUARE ROOT + {0x221B, 0x221C, prN}, // Sm [2] CUBE ROOT..FOURTH ROOT + {0x221D, 0x2220, prA}, // Sm [4] PROPORTIONAL TO..ANGLE + {0x2221, 0x2222, prN}, // Sm [2] MEASURED ANGLE..SPHERICAL ANGLE + {0x2223, 0x2223, prA}, // Sm DIVIDES + {0x2224, 0x2224, prN}, // Sm DOES NOT DIVIDE + {0x2225, 0x2225, prA}, // Sm PARALLEL TO + {0x2226, 0x2226, prN}, // Sm NOT PARALLEL TO + {0x2227, 0x222C, prA}, // Sm [6] LOGICAL AND..DOUBLE INTEGRAL + {0x222D, 0x222D, prN}, // Sm TRIPLE INTEGRAL + {0x222E, 0x222E, prA}, // Sm CONTOUR INTEGRAL + {0x222F, 0x2233, prN}, // Sm [5] SURFACE INTEGRAL..ANTICLOCKWISE CONTOUR INTEGRAL + {0x2234, 0x2237, prA}, // Sm [4] THEREFORE..PROPORTION + {0x2238, 0x223B, prN}, // Sm [4] DOT MINUS..HOMOTHETIC + {0x223C, 0x223D, prA}, // Sm [2] TILDE OPERATOR..REVERSED TILDE + {0x223E, 0x2247, prN}, // Sm [10] INVERTED LAZY S..NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO + {0x2248, 0x2248, prA}, // Sm ALMOST EQUAL TO + {0x2249, 0x224B, prN}, // Sm [3] NOT ALMOST EQUAL TO..TRIPLE TILDE + {0x224C, 0x224C, prA}, // Sm ALL EQUAL TO + {0x224D, 0x2251, prN}, // Sm [5] EQUIVALENT TO..GEOMETRICALLY EQUAL TO + {0x2252, 0x2252, prA}, // Sm APPROXIMATELY EQUAL TO OR THE IMAGE OF + {0x2253, 0x225F, prN}, // Sm [13] IMAGE OF OR APPROXIMATELY EQUAL TO..QUESTIONED EQUAL TO + {0x2260, 0x2261, prA}, // Sm [2] NOT EQUAL TO..IDENTICAL TO + {0x2262, 0x2263, prN}, // Sm [2] NOT IDENTICAL TO..STRICTLY EQUIVALENT TO + {0x2264, 0x2267, prA}, // Sm [4] LESS-THAN OR EQUAL TO..GREATER-THAN OVER EQUAL TO + {0x2268, 0x2269, prN}, // Sm [2] LESS-THAN BUT NOT EQUAL TO..GREATER-THAN BUT NOT EQUAL TO + {0x226A, 0x226B, prA}, // Sm [2] MUCH LESS-THAN..MUCH GREATER-THAN + {0x226C, 0x226D, prN}, // Sm [2] BETWEEN..NOT EQUIVALENT TO + {0x226E, 0x226F, prA}, // Sm [2] NOT LESS-THAN..NOT GREATER-THAN + {0x2270, 0x2281, prN}, // Sm [18] NEITHER LESS-THAN NOR EQUAL TO..DOES NOT SUCCEED + {0x2282, 0x2283, prA}, // Sm [2] SUBSET OF..SUPERSET OF + {0x2284, 0x2285, prN}, // Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF + {0x2286, 0x2287, prA}, // Sm [2] SUBSET OF OR EQUAL TO..SUPERSET OF OR EQUAL TO + {0x2288, 0x2294, prN}, // Sm [13] NEITHER A SUBSET OF NOR EQUAL TO..SQUARE CUP + {0x2295, 0x2295, prA}, // Sm CIRCLED PLUS + {0x2296, 0x2298, prN}, // Sm [3] CIRCLED MINUS..CIRCLED DIVISION SLASH + {0x2299, 0x2299, prA}, // Sm CIRCLED DOT OPERATOR + {0x229A, 0x22A4, prN}, // Sm [11] CIRCLED RING OPERATOR..DOWN TACK + {0x22A5, 0x22A5, prA}, // Sm UP TACK + {0x22A6, 0x22BE, prN}, // Sm [25] ASSERTION..RIGHT ANGLE WITH ARC + {0x22BF, 0x22BF, prA}, // Sm RIGHT TRIANGLE + {0x22C0, 0x22FF, prN}, // Sm [64] N-ARY LOGICAL AND..Z NOTATION BAG MEMBERSHIP + {0x2300, 0x2307, prN}, // So [8] DIAMETER SIGN..WAVY LINE + {0x2308, 0x2308, prN}, // Ps LEFT CEILING + {0x2309, 0x2309, prN}, // Pe RIGHT CEILING + {0x230A, 0x230A, prN}, // Ps LEFT FLOOR + {0x230B, 0x230B, prN}, // Pe RIGHT FLOOR + {0x230C, 0x2311, prN}, // So [6] BOTTOM RIGHT CROP..SQUARE LOZENGE + {0x2312, 0x2312, prA}, // So ARC + {0x2313, 0x2319, prN}, // So [7] SEGMENT..TURNED NOT SIGN + {0x231A, 0x231B, prW}, // So [2] WATCH..HOURGLASS + {0x231C, 0x231F, prN}, // So [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER + {0x2320, 0x2321, prN}, // Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL + {0x2322, 0x2328, prN}, // So [7] FROWN..KEYBOARD + {0x2329, 0x2329, prW}, // Ps LEFT-POINTING ANGLE BRACKET + {0x232A, 0x232A, prW}, // Pe RIGHT-POINTING ANGLE BRACKET + {0x232B, 0x237B, prN}, // So [81] ERASE TO THE LEFT..NOT CHECK MARK + {0x237C, 0x237C, prN}, // Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW + {0x237D, 0x239A, prN}, // So [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL + {0x239B, 0x23B3, prN}, // Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM + {0x23B4, 0x23DB, prN}, // So [40] TOP SQUARE BRACKET..FUSE + {0x23DC, 0x23E1, prN}, // Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET + {0x23E2, 0x23E8, prN}, // So [7] WHITE TRAPEZIUM..DECIMAL EXPONENT SYMBOL + {0x23E9, 0x23EC, prW}, // So [4] BLACK RIGHT-POINTING DOUBLE TRIANGLE..BLACK DOWN-POINTING DOUBLE TRIANGLE + {0x23ED, 0x23EF, prN}, // So [3] BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR + {0x23F0, 0x23F0, prW}, // So ALARM CLOCK + {0x23F1, 0x23F2, prN}, // So [2] STOPWATCH..TIMER CLOCK + {0x23F3, 0x23F3, prW}, // So HOURGLASS WITH FLOWING SAND + {0x23F4, 0x23FF, prN}, // So [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL + {0x2400, 0x2426, prN}, // So [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO + {0x2440, 0x244A, prN}, // So [11] OCR HOOK..OCR DOUBLE BACKSLASH + {0x2460, 0x249B, prA}, // No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP + {0x249C, 0x24E9, prA}, // So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z + {0x24EA, 0x24EA, prN}, // No CIRCLED DIGIT ZERO + {0x24EB, 0x24FF, prA}, // No [21] NEGATIVE CIRCLED NUMBER ELEVEN..NEGATIVE CIRCLED DIGIT ZERO + {0x2500, 0x254B, prA}, // So [76] BOX DRAWINGS LIGHT HORIZONTAL..BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL + {0x254C, 0x254F, prN}, // So [4] BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL..BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL + {0x2550, 0x2573, prA}, // So [36] BOX DRAWINGS DOUBLE HORIZONTAL..BOX DRAWINGS LIGHT DIAGONAL CROSS + {0x2574, 0x257F, prN}, // So [12] BOX DRAWINGS LIGHT LEFT..BOX DRAWINGS HEAVY UP AND LIGHT DOWN + {0x2580, 0x258F, prA}, // So [16] UPPER HALF BLOCK..LEFT ONE EIGHTH BLOCK + {0x2590, 0x2591, prN}, // So [2] RIGHT HALF BLOCK..LIGHT SHADE + {0x2592, 0x2595, prA}, // So [4] MEDIUM SHADE..RIGHT ONE EIGHTH BLOCK + {0x2596, 0x259F, prN}, // So [10] QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT + {0x25A0, 0x25A1, prA}, // So [2] BLACK SQUARE..WHITE SQUARE + {0x25A2, 0x25A2, prN}, // So WHITE SQUARE WITH ROUNDED CORNERS + {0x25A3, 0x25A9, prA}, // So [7] WHITE SQUARE CONTAINING BLACK SMALL SQUARE..SQUARE WITH DIAGONAL CROSSHATCH FILL + {0x25AA, 0x25B1, prN}, // So [8] BLACK SMALL SQUARE..WHITE PARALLELOGRAM + {0x25B2, 0x25B3, prA}, // So [2] BLACK UP-POINTING TRIANGLE..WHITE UP-POINTING TRIANGLE + {0x25B4, 0x25B5, prN}, // So [2] BLACK UP-POINTING SMALL TRIANGLE..WHITE UP-POINTING SMALL TRIANGLE + {0x25B6, 0x25B6, prA}, // So BLACK RIGHT-POINTING TRIANGLE + {0x25B7, 0x25B7, prA}, // Sm WHITE RIGHT-POINTING TRIANGLE + {0x25B8, 0x25BB, prN}, // So [4] BLACK RIGHT-POINTING SMALL TRIANGLE..WHITE RIGHT-POINTING POINTER + {0x25BC, 0x25BD, prA}, // So [2] BLACK DOWN-POINTING TRIANGLE..WHITE DOWN-POINTING TRIANGLE + {0x25BE, 0x25BF, prN}, // So [2] BLACK DOWN-POINTING SMALL TRIANGLE..WHITE DOWN-POINTING SMALL TRIANGLE + {0x25C0, 0x25C0, prA}, // So BLACK LEFT-POINTING TRIANGLE + {0x25C1, 0x25C1, prA}, // Sm WHITE LEFT-POINTING TRIANGLE + {0x25C2, 0x25C5, prN}, // So [4] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE LEFT-POINTING POINTER + {0x25C6, 0x25C8, prA}, // So [3] BLACK DIAMOND..WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND + {0x25C9, 0x25CA, prN}, // So [2] FISHEYE..LOZENGE + {0x25CB, 0x25CB, prA}, // So WHITE CIRCLE + {0x25CC, 0x25CD, prN}, // So [2] DOTTED CIRCLE..CIRCLE WITH VERTICAL FILL + {0x25CE, 0x25D1, prA}, // So [4] BULLSEYE..CIRCLE WITH RIGHT HALF BLACK + {0x25D2, 0x25E1, prN}, // So [16] CIRCLE WITH LOWER HALF BLACK..LOWER HALF CIRCLE + {0x25E2, 0x25E5, prA}, // So [4] BLACK LOWER RIGHT TRIANGLE..BLACK UPPER RIGHT TRIANGLE + {0x25E6, 0x25EE, prN}, // So [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK + {0x25EF, 0x25EF, prA}, // So LARGE CIRCLE + {0x25F0, 0x25F7, prN}, // So [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT + {0x25F8, 0x25FC, prN}, // Sm [5] UPPER LEFT TRIANGLE..BLACK MEDIUM SQUARE + {0x25FD, 0x25FE, prW}, // Sm [2] WHITE MEDIUM SMALL SQUARE..BLACK MEDIUM SMALL SQUARE + {0x25FF, 0x25FF, prN}, // Sm LOWER RIGHT TRIANGLE + {0x2600, 0x2604, prN}, // So [5] BLACK SUN WITH RAYS..COMET + {0x2605, 0x2606, prA}, // So [2] BLACK STAR..WHITE STAR + {0x2607, 0x2608, prN}, // So [2] LIGHTNING..THUNDERSTORM + {0x2609, 0x2609, prA}, // So SUN + {0x260A, 0x260D, prN}, // So [4] ASCENDING NODE..OPPOSITION + {0x260E, 0x260F, prA}, // So [2] BLACK TELEPHONE..WHITE TELEPHONE + {0x2610, 0x2613, prN}, // So [4] BALLOT BOX..SALTIRE + {0x2614, 0x2615, prW}, // So [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE + {0x2616, 0x261B, prN}, // So [6] WHITE SHOGI PIECE..BLACK RIGHT POINTING INDEX + {0x261C, 0x261C, prA}, // So WHITE LEFT POINTING INDEX + {0x261D, 0x261D, prN}, // So WHITE UP POINTING INDEX + {0x261E, 0x261E, prA}, // So WHITE RIGHT POINTING INDEX + {0x261F, 0x263F, prN}, // So [33] WHITE DOWN POINTING INDEX..MERCURY + {0x2640, 0x2640, prA}, // So FEMALE SIGN + {0x2641, 0x2641, prN}, // So EARTH + {0x2642, 0x2642, prA}, // So MALE SIGN + {0x2643, 0x2647, prN}, // So [5] JUPITER..PLUTO + {0x2648, 0x2653, prW}, // So [12] ARIES..PISCES + {0x2654, 0x265F, prN}, // So [12] WHITE CHESS KING..BLACK CHESS PAWN + {0x2660, 0x2661, prA}, // So [2] BLACK SPADE SUIT..WHITE HEART SUIT + {0x2662, 0x2662, prN}, // So WHITE DIAMOND SUIT + {0x2663, 0x2665, prA}, // So [3] BLACK CLUB SUIT..BLACK HEART SUIT + {0x2666, 0x2666, prN}, // So BLACK DIAMOND SUIT + {0x2667, 0x266A, prA}, // So [4] WHITE CLUB SUIT..EIGHTH NOTE + {0x266B, 0x266B, prN}, // So BEAMED EIGHTH NOTES + {0x266C, 0x266D, prA}, // So [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN + {0x266E, 0x266E, prN}, // So MUSIC NATURAL SIGN + {0x266F, 0x266F, prA}, // Sm MUSIC SHARP SIGN + {0x2670, 0x267E, prN}, // So [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN + {0x267F, 0x267F, prW}, // So WHEELCHAIR SYMBOL + {0x2680, 0x2692, prN}, // So [19] DIE FACE-1..HAMMER AND PICK + {0x2693, 0x2693, prW}, // So ANCHOR + {0x2694, 0x269D, prN}, // So [10] CROSSED SWORDS..OUTLINED WHITE STAR + {0x269E, 0x269F, prA}, // So [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT + {0x26A0, 0x26A0, prN}, // So WARNING SIGN + {0x26A1, 0x26A1, prW}, // So HIGH VOLTAGE SIGN + {0x26A2, 0x26A9, prN}, // So [8] DOUBLED FEMALE SIGN..HORIZONTAL MALE WITH STROKE SIGN + {0x26AA, 0x26AB, prW}, // So [2] MEDIUM WHITE CIRCLE..MEDIUM BLACK CIRCLE + {0x26AC, 0x26BC, prN}, // So [17] MEDIUM SMALL WHITE CIRCLE..SESQUIQUADRATE + {0x26BD, 0x26BE, prW}, // So [2] SOCCER BALL..BASEBALL + {0x26BF, 0x26BF, prA}, // So SQUARED KEY + {0x26C0, 0x26C3, prN}, // So [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING + {0x26C4, 0x26C5, prW}, // So [2] SNOWMAN WITHOUT SNOW..SUN BEHIND CLOUD + {0x26C6, 0x26CD, prA}, // So [8] RAIN..DISABLED CAR + {0x26CE, 0x26CE, prW}, // So OPHIUCHUS + {0x26CF, 0x26D3, prA}, // So [5] PICK..CHAINS + {0x26D4, 0x26D4, prW}, // So NO ENTRY + {0x26D5, 0x26E1, prA}, // So [13] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..RESTRICTED LEFT ENTRY-2 + {0x26E2, 0x26E2, prN}, // So ASTRONOMICAL SYMBOL FOR URANUS + {0x26E3, 0x26E3, prA}, // So HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE + {0x26E4, 0x26E7, prN}, // So [4] PENTAGRAM..INVERTED PENTAGRAM + {0x26E8, 0x26E9, prA}, // So [2] BLACK CROSS ON SHIELD..SHINTO SHRINE + {0x26EA, 0x26EA, prW}, // So CHURCH + {0x26EB, 0x26F1, prA}, // So [7] CASTLE..UMBRELLA ON GROUND + {0x26F2, 0x26F3, prW}, // So [2] FOUNTAIN..FLAG IN HOLE + {0x26F4, 0x26F4, prA}, // So FERRY + {0x26F5, 0x26F5, prW}, // So SAILBOAT + {0x26F6, 0x26F9, prA}, // So [4] SQUARE FOUR CORNERS..PERSON WITH BALL + {0x26FA, 0x26FA, prW}, // So TENT + {0x26FB, 0x26FC, prA}, // So [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL + {0x26FD, 0x26FD, prW}, // So FUEL PUMP + {0x26FE, 0x26FF, prA}, // So [2] CUP ON BLACK SQUARE..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE + {0x2700, 0x2704, prN}, // So [5] BLACK SAFETY SCISSORS..WHITE SCISSORS + {0x2705, 0x2705, prW}, // So WHITE HEAVY CHECK MARK + {0x2706, 0x2709, prN}, // So [4] TELEPHONE LOCATION SIGN..ENVELOPE + {0x270A, 0x270B, prW}, // So [2] RAISED FIST..RAISED HAND + {0x270C, 0x2727, prN}, // So [28] VICTORY HAND..WHITE FOUR POINTED STAR + {0x2728, 0x2728, prW}, // So SPARKLES + {0x2729, 0x273C, prN}, // So [20] STRESS OUTLINED WHITE STAR..OPEN CENTRE TEARDROP-SPOKED ASTERISK + {0x273D, 0x273D, prA}, // So HEAVY TEARDROP-SPOKED ASTERISK + {0x273E, 0x274B, prN}, // So [14] SIX PETALLED BLACK AND WHITE FLORETTE..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK + {0x274C, 0x274C, prW}, // So CROSS MARK + {0x274D, 0x274D, prN}, // So SHADOWED WHITE CIRCLE + {0x274E, 0x274E, prW}, // So NEGATIVE SQUARED CROSS MARK + {0x274F, 0x2752, prN}, // So [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE + {0x2753, 0x2755, prW}, // So [3] BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT + {0x2756, 0x2756, prN}, // So BLACK DIAMOND MINUS WHITE X + {0x2757, 0x2757, prW}, // So HEAVY EXCLAMATION MARK SYMBOL + {0x2758, 0x2767, prN}, // So [16] LIGHT VERTICAL BAR..ROTATED FLORAL HEART BULLET + {0x2768, 0x2768, prN}, // Ps MEDIUM LEFT PARENTHESIS ORNAMENT + {0x2769, 0x2769, prN}, // Pe MEDIUM RIGHT PARENTHESIS ORNAMENT + {0x276A, 0x276A, prN}, // Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT + {0x276B, 0x276B, prN}, // Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT + {0x276C, 0x276C, prN}, // Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT + {0x276D, 0x276D, prN}, // Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT + {0x276E, 0x276E, prN}, // Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT + {0x276F, 0x276F, prN}, // Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT + {0x2770, 0x2770, prN}, // Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT + {0x2771, 0x2771, prN}, // Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT + {0x2772, 0x2772, prN}, // Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT + {0x2773, 0x2773, prN}, // Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT + {0x2774, 0x2774, prN}, // Ps MEDIUM LEFT CURLY BRACKET ORNAMENT + {0x2775, 0x2775, prN}, // Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT + {0x2776, 0x277F, prA}, // No [10] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED NUMBER TEN + {0x2780, 0x2793, prN}, // No [20] DINGBAT CIRCLED SANS-SERIF DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN + {0x2794, 0x2794, prN}, // So HEAVY WIDE-HEADED RIGHTWARDS ARROW + {0x2795, 0x2797, prW}, // So [3] HEAVY PLUS SIGN..HEAVY DIVISION SIGN + {0x2798, 0x27AF, prN}, // So [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW + {0x27B0, 0x27B0, prW}, // So CURLY LOOP + {0x27B1, 0x27BE, prN}, // So [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW + {0x27BF, 0x27BF, prW}, // So DOUBLE CURLY LOOP + {0x27C0, 0x27C4, prN}, // Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET + {0x27C5, 0x27C5, prN}, // Ps LEFT S-SHAPED BAG DELIMITER + {0x27C6, 0x27C6, prN}, // Pe RIGHT S-SHAPED BAG DELIMITER + {0x27C7, 0x27E5, prN}, // Sm [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK + {0x27E6, 0x27E6, prNa}, // Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET + {0x27E7, 0x27E7, prNa}, // Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET + {0x27E8, 0x27E8, prNa}, // Ps MATHEMATICAL LEFT ANGLE BRACKET + {0x27E9, 0x27E9, prNa}, // Pe MATHEMATICAL RIGHT ANGLE BRACKET + {0x27EA, 0x27EA, prNa}, // Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET + {0x27EB, 0x27EB, prNa}, // Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET + {0x27EC, 0x27EC, prNa}, // Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET + {0x27ED, 0x27ED, prNa}, // Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET + {0x27EE, 0x27EE, prN}, // Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS + {0x27EF, 0x27EF, prN}, // Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS + {0x27F0, 0x27FF, prN}, // Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW + {0x2800, 0x28FF, prN}, // So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 + {0x2900, 0x297F, prN}, // Sm [128] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..DOWN FISH TAIL + {0x2980, 0x2982, prN}, // Sm [3] TRIPLE VERTICAL BAR DELIMITER..Z NOTATION TYPE COLON + {0x2983, 0x2983, prN}, // Ps LEFT WHITE CURLY BRACKET + {0x2984, 0x2984, prN}, // Pe RIGHT WHITE CURLY BRACKET + {0x2985, 0x2985, prNa}, // Ps LEFT WHITE PARENTHESIS + {0x2986, 0x2986, prNa}, // Pe RIGHT WHITE PARENTHESIS + {0x2987, 0x2987, prN}, // Ps Z NOTATION LEFT IMAGE BRACKET + {0x2988, 0x2988, prN}, // Pe Z NOTATION RIGHT IMAGE BRACKET + {0x2989, 0x2989, prN}, // Ps Z NOTATION LEFT BINDING BRACKET + {0x298A, 0x298A, prN}, // Pe Z NOTATION RIGHT BINDING BRACKET + {0x298B, 0x298B, prN}, // Ps LEFT SQUARE BRACKET WITH UNDERBAR + {0x298C, 0x298C, prN}, // Pe RIGHT SQUARE BRACKET WITH UNDERBAR + {0x298D, 0x298D, prN}, // Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER + {0x298E, 0x298E, prN}, // Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER + {0x298F, 0x298F, prN}, // Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER + {0x2990, 0x2990, prN}, // Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER + {0x2991, 0x2991, prN}, // Ps LEFT ANGLE BRACKET WITH DOT + {0x2992, 0x2992, prN}, // Pe RIGHT ANGLE BRACKET WITH DOT + {0x2993, 0x2993, prN}, // Ps LEFT ARC LESS-THAN BRACKET + {0x2994, 0x2994, prN}, // Pe RIGHT ARC GREATER-THAN BRACKET + {0x2995, 0x2995, prN}, // Ps DOUBLE LEFT ARC GREATER-THAN BRACKET + {0x2996, 0x2996, prN}, // Pe DOUBLE RIGHT ARC LESS-THAN BRACKET + {0x2997, 0x2997, prN}, // Ps LEFT BLACK TORTOISE SHELL BRACKET + {0x2998, 0x2998, prN}, // Pe RIGHT BLACK TORTOISE SHELL BRACKET + {0x2999, 0x29D7, prN}, // Sm [63] DOTTED FENCE..BLACK HOURGLASS + {0x29D8, 0x29D8, prN}, // Ps LEFT WIGGLY FENCE + {0x29D9, 0x29D9, prN}, // Pe RIGHT WIGGLY FENCE + {0x29DA, 0x29DA, prN}, // Ps LEFT DOUBLE WIGGLY FENCE + {0x29DB, 0x29DB, prN}, // Pe RIGHT DOUBLE WIGGLY FENCE + {0x29DC, 0x29FB, prN}, // Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS + {0x29FC, 0x29FC, prN}, // Ps LEFT-POINTING CURVED ANGLE BRACKET + {0x29FD, 0x29FD, prN}, // Pe RIGHT-POINTING CURVED ANGLE BRACKET + {0x29FE, 0x29FF, prN}, // Sm [2] TINY..MINY + {0x2A00, 0x2AFF, prN}, // Sm [256] N-ARY CIRCLED DOT OPERATOR..N-ARY WHITE VERTICAL BAR + {0x2B00, 0x2B1A, prN}, // So [27] NORTH EAST WHITE ARROW..DOTTED SQUARE + {0x2B1B, 0x2B1C, prW}, // So [2] BLACK LARGE SQUARE..WHITE LARGE SQUARE + {0x2B1D, 0x2B2F, prN}, // So [19] BLACK VERY SMALL SQUARE..WHITE VERTICAL ELLIPSE + {0x2B30, 0x2B44, prN}, // Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET + {0x2B45, 0x2B46, prN}, // So [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW + {0x2B47, 0x2B4C, prN}, // Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR + {0x2B4D, 0x2B4F, prN}, // So [3] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW + {0x2B50, 0x2B50, prW}, // So WHITE MEDIUM STAR + {0x2B51, 0x2B54, prN}, // So [4] BLACK SMALL STAR..WHITE RIGHT-POINTING PENTAGON + {0x2B55, 0x2B55, prW}, // So HEAVY LARGE CIRCLE + {0x2B56, 0x2B59, prA}, // So [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE + {0x2B5A, 0x2B73, prN}, // So [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR + {0x2B76, 0x2B95, prN}, // So [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW + {0x2B97, 0x2BFF, prN}, // So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL + {0x2C00, 0x2C5F, prN}, // L& [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI + {0x2C60, 0x2C7B, prN}, // L& [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E + {0x2C7C, 0x2C7D, prN}, // Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V + {0x2C7E, 0x2C7F, prN}, // Lu [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL + {0x2C80, 0x2CE4, prN}, // L& [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI + {0x2CE5, 0x2CEA, prN}, // So [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA + {0x2CEB, 0x2CEE, prN}, // L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA + {0x2CEF, 0x2CF1, prN}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS + {0x2CF2, 0x2CF3, prN}, // L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI + {0x2CF9, 0x2CFC, prN}, // Po [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER + {0x2CFD, 0x2CFD, prN}, // No COPTIC FRACTION ONE HALF + {0x2CFE, 0x2CFF, prN}, // Po [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER + {0x2D00, 0x2D25, prN}, // Ll [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE + {0x2D27, 0x2D27, prN}, // Ll GEORGIAN SMALL LETTER YN + {0x2D2D, 0x2D2D, prN}, // Ll GEORGIAN SMALL LETTER AEN + {0x2D30, 0x2D67, prN}, // Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO + {0x2D6F, 0x2D6F, prN}, // Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK + {0x2D70, 0x2D70, prN}, // Po TIFINAGH SEPARATOR MARK + {0x2D7F, 0x2D7F, prN}, // Mn TIFINAGH CONSONANT JOINER + {0x2D80, 0x2D96, prN}, // Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE + {0x2DA0, 0x2DA6, prN}, // Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO + {0x2DA8, 0x2DAE, prN}, // Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO + {0x2DB0, 0x2DB6, prN}, // Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO + {0x2DB8, 0x2DBE, prN}, // Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO + {0x2DC0, 0x2DC6, prN}, // Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO + {0x2DC8, 0x2DCE, prN}, // Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO + {0x2DD0, 0x2DD6, prN}, // Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO + {0x2DD8, 0x2DDE, prN}, // Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO + {0x2DE0, 0x2DFF, prN}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS + {0x2E00, 0x2E01, prN}, // Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER + {0x2E02, 0x2E02, prN}, // Pi LEFT SUBSTITUTION BRACKET + {0x2E03, 0x2E03, prN}, // Pf RIGHT SUBSTITUTION BRACKET + {0x2E04, 0x2E04, prN}, // Pi LEFT DOTTED SUBSTITUTION BRACKET + {0x2E05, 0x2E05, prN}, // Pf RIGHT DOTTED SUBSTITUTION BRACKET + {0x2E06, 0x2E08, prN}, // Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER + {0x2E09, 0x2E09, prN}, // Pi LEFT TRANSPOSITION BRACKET + {0x2E0A, 0x2E0A, prN}, // Pf RIGHT TRANSPOSITION BRACKET + {0x2E0B, 0x2E0B, prN}, // Po RAISED SQUARE + {0x2E0C, 0x2E0C, prN}, // Pi LEFT RAISED OMISSION BRACKET + {0x2E0D, 0x2E0D, prN}, // Pf RIGHT RAISED OMISSION BRACKET + {0x2E0E, 0x2E16, prN}, // Po [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE + {0x2E17, 0x2E17, prN}, // Pd DOUBLE OBLIQUE HYPHEN + {0x2E18, 0x2E19, prN}, // Po [2] INVERTED INTERROBANG..PALM BRANCH + {0x2E1A, 0x2E1A, prN}, // Pd HYPHEN WITH DIAERESIS + {0x2E1B, 0x2E1B, prN}, // Po TILDE WITH RING ABOVE + {0x2E1C, 0x2E1C, prN}, // Pi LEFT LOW PARAPHRASE BRACKET + {0x2E1D, 0x2E1D, prN}, // Pf RIGHT LOW PARAPHRASE BRACKET + {0x2E1E, 0x2E1F, prN}, // Po [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW + {0x2E20, 0x2E20, prN}, // Pi LEFT VERTICAL BAR WITH QUILL + {0x2E21, 0x2E21, prN}, // Pf RIGHT VERTICAL BAR WITH QUILL + {0x2E22, 0x2E22, prN}, // Ps TOP LEFT HALF BRACKET + {0x2E23, 0x2E23, prN}, // Pe TOP RIGHT HALF BRACKET + {0x2E24, 0x2E24, prN}, // Ps BOTTOM LEFT HALF BRACKET + {0x2E25, 0x2E25, prN}, // Pe BOTTOM RIGHT HALF BRACKET + {0x2E26, 0x2E26, prN}, // Ps LEFT SIDEWAYS U BRACKET + {0x2E27, 0x2E27, prN}, // Pe RIGHT SIDEWAYS U BRACKET + {0x2E28, 0x2E28, prN}, // Ps LEFT DOUBLE PARENTHESIS + {0x2E29, 0x2E29, prN}, // Pe RIGHT DOUBLE PARENTHESIS + {0x2E2A, 0x2E2E, prN}, // Po [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK + {0x2E2F, 0x2E2F, prN}, // Lm VERTICAL TILDE + {0x2E30, 0x2E39, prN}, // Po [10] RING POINT..TOP HALF SECTION SIGN + {0x2E3A, 0x2E3B, prN}, // Pd [2] TWO-EM DASH..THREE-EM DASH + {0x2E3C, 0x2E3F, prN}, // Po [4] STENOGRAPHIC FULL STOP..CAPITULUM + {0x2E40, 0x2E40, prN}, // Pd DOUBLE HYPHEN + {0x2E41, 0x2E41, prN}, // Po REVERSED COMMA + {0x2E42, 0x2E42, prN}, // Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK + {0x2E43, 0x2E4F, prN}, // Po [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER + {0x2E50, 0x2E51, prN}, // So [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR + {0x2E52, 0x2E54, prN}, // Po [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK + {0x2E55, 0x2E55, prN}, // Ps LEFT SQUARE BRACKET WITH STROKE + {0x2E56, 0x2E56, prN}, // Pe RIGHT SQUARE BRACKET WITH STROKE + {0x2E57, 0x2E57, prN}, // Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE + {0x2E58, 0x2E58, prN}, // Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE + {0x2E59, 0x2E59, prN}, // Ps TOP HALF LEFT PARENTHESIS + {0x2E5A, 0x2E5A, prN}, // Pe TOP HALF RIGHT PARENTHESIS + {0x2E5B, 0x2E5B, prN}, // Ps BOTTOM HALF LEFT PARENTHESIS + {0x2E5C, 0x2E5C, prN}, // Pe BOTTOM HALF RIGHT PARENTHESIS + {0x2E5D, 0x2E5D, prN}, // Pd OBLIQUE HYPHEN + {0x2E80, 0x2E99, prW}, // So [26] CJK RADICAL REPEAT..CJK RADICAL RAP + {0x2E9B, 0x2EF3, prW}, // So [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE + {0x2F00, 0x2FD5, prW}, // So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE + {0x2FF0, 0x2FFB, prW}, // So [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID + {0x3000, 0x3000, prF}, // Zs IDEOGRAPHIC SPACE + {0x3001, 0x3003, prW}, // Po [3] IDEOGRAPHIC COMMA..DITTO MARK + {0x3004, 0x3004, prW}, // So JAPANESE INDUSTRIAL STANDARD SYMBOL + {0x3005, 0x3005, prW}, // Lm IDEOGRAPHIC ITERATION MARK + {0x3006, 0x3006, prW}, // Lo IDEOGRAPHIC CLOSING MARK + {0x3007, 0x3007, prW}, // Nl IDEOGRAPHIC NUMBER ZERO + {0x3008, 0x3008, prW}, // Ps LEFT ANGLE BRACKET + {0x3009, 0x3009, prW}, // Pe RIGHT ANGLE BRACKET + {0x300A, 0x300A, prW}, // Ps LEFT DOUBLE ANGLE BRACKET + {0x300B, 0x300B, prW}, // Pe RIGHT DOUBLE ANGLE BRACKET + {0x300C, 0x300C, prW}, // Ps LEFT CORNER BRACKET + {0x300D, 0x300D, prW}, // Pe RIGHT CORNER BRACKET + {0x300E, 0x300E, prW}, // Ps LEFT WHITE CORNER BRACKET + {0x300F, 0x300F, prW}, // Pe RIGHT WHITE CORNER BRACKET + {0x3010, 0x3010, prW}, // Ps LEFT BLACK LENTICULAR BRACKET + {0x3011, 0x3011, prW}, // Pe RIGHT BLACK LENTICULAR BRACKET + {0x3012, 0x3013, prW}, // So [2] POSTAL MARK..GETA MARK + {0x3014, 0x3014, prW}, // Ps LEFT TORTOISE SHELL BRACKET + {0x3015, 0x3015, prW}, // Pe RIGHT TORTOISE SHELL BRACKET + {0x3016, 0x3016, prW}, // Ps LEFT WHITE LENTICULAR BRACKET + {0x3017, 0x3017, prW}, // Pe RIGHT WHITE LENTICULAR BRACKET + {0x3018, 0x3018, prW}, // Ps LEFT WHITE TORTOISE SHELL BRACKET + {0x3019, 0x3019, prW}, // Pe RIGHT WHITE TORTOISE SHELL BRACKET + {0x301A, 0x301A, prW}, // Ps LEFT WHITE SQUARE BRACKET + {0x301B, 0x301B, prW}, // Pe RIGHT WHITE SQUARE BRACKET + {0x301C, 0x301C, prW}, // Pd WAVE DASH + {0x301D, 0x301D, prW}, // Ps REVERSED DOUBLE PRIME QUOTATION MARK + {0x301E, 0x301F, prW}, // Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK + {0x3020, 0x3020, prW}, // So POSTAL MARK FACE + {0x3021, 0x3029, prW}, // Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE + {0x302A, 0x302D, prW}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK + {0x302E, 0x302F, prW}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK + {0x3030, 0x3030, prW}, // Pd WAVY DASH + {0x3031, 0x3035, prW}, // Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF + {0x3036, 0x3037, prW}, // So [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL + {0x3038, 0x303A, prW}, // Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY + {0x303B, 0x303B, prW}, // Lm VERTICAL IDEOGRAPHIC ITERATION MARK + {0x303C, 0x303C, prW}, // Lo MASU MARK + {0x303D, 0x303D, prW}, // Po PART ALTERNATION MARK + {0x303E, 0x303E, prW}, // So IDEOGRAPHIC VARIATION INDICATOR + {0x303F, 0x303F, prN}, // So IDEOGRAPHIC HALF FILL SPACE + {0x3041, 0x3096, prW}, // Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE + {0x3099, 0x309A, prW}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x309B, 0x309C, prW}, // Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x309D, 0x309E, prW}, // Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK + {0x309F, 0x309F, prW}, // Lo HIRAGANA DIGRAPH YORI + {0x30A0, 0x30A0, prW}, // Pd KATAKANA-HIRAGANA DOUBLE HYPHEN + {0x30A1, 0x30FA, prW}, // Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO + {0x30FB, 0x30FB, prW}, // Po KATAKANA MIDDLE DOT + {0x30FC, 0x30FE, prW}, // Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK + {0x30FF, 0x30FF, prW}, // Lo KATAKANA DIGRAPH KOTO + {0x3105, 0x312F, prW}, // Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN + {0x3131, 0x318E, prW}, // Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE + {0x3190, 0x3191, prW}, // So [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK + {0x3192, 0x3195, prW}, // No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK + {0x3196, 0x319F, prW}, // So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK + {0x31A0, 0x31BF, prW}, // Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH + {0x31C0, 0x31E3, prW}, // So [36] CJK STROKE T..CJK STROKE Q + {0x31F0, 0x31FF, prW}, // Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO + {0x3200, 0x321E, prW}, // So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU + {0x3220, 0x3229, prW}, // No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN + {0x322A, 0x3247, prW}, // So [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO + {0x3248, 0x324F, prA}, // No [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE + {0x3250, 0x3250, prW}, // So PARTNERSHIP SIGN + {0x3251, 0x325F, prW}, // No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE + {0x3260, 0x327F, prW}, // So [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL + {0x3280, 0x3289, prW}, // No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN + {0x328A, 0x32B0, prW}, // So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT + {0x32B1, 0x32BF, prW}, // No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY + {0x32C0, 0x32FF, prW}, // So [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA + {0x3300, 0x33FF, prW}, // So [256] SQUARE APAATO..SQUARE GAL + {0x3400, 0x4DBF, prW}, // Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF + {0x4DC0, 0x4DFF, prN}, // So [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION + {0x4E00, 0x9FFF, prW}, // Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF + {0xA000, 0xA014, prW}, // Lo [21] YI SYLLABLE IT..YI SYLLABLE E + {0xA015, 0xA015, prW}, // Lm YI SYLLABLE WU + {0xA016, 0xA48C, prW}, // Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR + {0xA490, 0xA4C6, prW}, // So [55] YI RADICAL QOT..YI RADICAL KE + {0xA4D0, 0xA4F7, prN}, // Lo [40] LISU LETTER BA..LISU LETTER OE + {0xA4F8, 0xA4FD, prN}, // Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU + {0xA4FE, 0xA4FF, prN}, // Po [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP + {0xA500, 0xA60B, prN}, // Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG + {0xA60C, 0xA60C, prN}, // Lm VAI SYLLABLE LENGTHENER + {0xA60D, 0xA60F, prN}, // Po [3] VAI COMMA..VAI QUESTION MARK + {0xA610, 0xA61F, prN}, // Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG + {0xA620, 0xA629, prN}, // Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE + {0xA62A, 0xA62B, prN}, // Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO + {0xA640, 0xA66D, prN}, // L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O + {0xA66E, 0xA66E, prN}, // Lo CYRILLIC LETTER MULTIOCULAR O + {0xA66F, 0xA66F, prN}, // Mn COMBINING CYRILLIC VZMET + {0xA670, 0xA672, prN}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN + {0xA673, 0xA673, prN}, // Po SLAVONIC ASTERISK + {0xA674, 0xA67D, prN}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK + {0xA67E, 0xA67E, prN}, // Po CYRILLIC KAVYKA + {0xA67F, 0xA67F, prN}, // Lm CYRILLIC PAYEROK + {0xA680, 0xA69B, prN}, // L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O + {0xA69C, 0xA69D, prN}, // Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN + {0xA69E, 0xA69F, prN}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E + {0xA6A0, 0xA6E5, prN}, // Lo [70] BAMUM LETTER A..BAMUM LETTER KI + {0xA6E6, 0xA6EF, prN}, // Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM + {0xA6F0, 0xA6F1, prN}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS + {0xA6F2, 0xA6F7, prN}, // Po [6] BAMUM NJAEMLI..BAMUM QUESTION MARK + {0xA700, 0xA716, prN}, // Sk [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR + {0xA717, 0xA71F, prN}, // Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK + {0xA720, 0xA721, prN}, // Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE + {0xA722, 0xA76F, prN}, // L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON + {0xA770, 0xA770, prN}, // Lm MODIFIER LETTER US + {0xA771, 0xA787, prN}, // L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T + {0xA788, 0xA788, prN}, // Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT + {0xA789, 0xA78A, prN}, // Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN + {0xA78B, 0xA78E, prN}, // L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT + {0xA78F, 0xA78F, prN}, // Lo LATIN LETTER SINOLOGICAL DOT + {0xA790, 0xA7CA, prN}, // L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY + {0xA7D0, 0xA7D1, prN}, // L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G + {0xA7D3, 0xA7D3, prN}, // Ll LATIN SMALL LETTER DOUBLE THORN + {0xA7D5, 0xA7D9, prN}, // L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S + {0xA7F2, 0xA7F4, prN}, // Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q + {0xA7F5, 0xA7F6, prN}, // L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H + {0xA7F7, 0xA7F7, prN}, // Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I + {0xA7F8, 0xA7F9, prN}, // Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE + {0xA7FA, 0xA7FA, prN}, // Ll LATIN LETTER SMALL CAPITAL TURNED M + {0xA7FB, 0xA7FF, prN}, // Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M + {0xA800, 0xA801, prN}, // Lo [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I + {0xA802, 0xA802, prN}, // Mn SYLOTI NAGRI SIGN DVISVARA + {0xA803, 0xA805, prN}, // Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O + {0xA806, 0xA806, prN}, // Mn SYLOTI NAGRI SIGN HASANTA + {0xA807, 0xA80A, prN}, // Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO + {0xA80B, 0xA80B, prN}, // Mn SYLOTI NAGRI SIGN ANUSVARA + {0xA80C, 0xA822, prN}, // Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO + {0xA823, 0xA824, prN}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I + {0xA825, 0xA826, prN}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E + {0xA827, 0xA827, prN}, // Mc SYLOTI NAGRI VOWEL SIGN OO + {0xA828, 0xA82B, prN}, // So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 + {0xA82C, 0xA82C, prN}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA + {0xA830, 0xA835, prN}, // No [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS + {0xA836, 0xA837, prN}, // So [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK + {0xA838, 0xA838, prN}, // Sc NORTH INDIC RUPEE MARK + {0xA839, 0xA839, prN}, // So NORTH INDIC QUANTITY MARK + {0xA840, 0xA873, prN}, // Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU + {0xA874, 0xA877, prN}, // Po [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD + {0xA880, 0xA881, prN}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA + {0xA882, 0xA8B3, prN}, // Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA + {0xA8B4, 0xA8C3, prN}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU + {0xA8C4, 0xA8C5, prN}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU + {0xA8CE, 0xA8CF, prN}, // Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA + {0xA8D0, 0xA8D9, prN}, // Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE + {0xA8E0, 0xA8F1, prN}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA + {0xA8F2, 0xA8F7, prN}, // Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA + {0xA8F8, 0xA8FA, prN}, // Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET + {0xA8FB, 0xA8FB, prN}, // Lo DEVANAGARI HEADSTROKE + {0xA8FC, 0xA8FC, prN}, // Po DEVANAGARI SIGN SIDDHAM + {0xA8FD, 0xA8FE, prN}, // Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY + {0xA8FF, 0xA8FF, prN}, // Mn DEVANAGARI VOWEL SIGN AY + {0xA900, 0xA909, prN}, // Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE + {0xA90A, 0xA925, prN}, // Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO + {0xA926, 0xA92D, prN}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU + {0xA92E, 0xA92F, prN}, // Po [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA + {0xA930, 0xA946, prN}, // Lo [23] REJANG LETTER KA..REJANG LETTER A + {0xA947, 0xA951, prN}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R + {0xA952, 0xA953, prN}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA + {0xA95F, 0xA95F, prN}, // Po REJANG SECTION MARK + {0xA960, 0xA97C, prW}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH + {0xA980, 0xA982, prN}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR + {0xA983, 0xA983, prN}, // Mc JAVANESE SIGN WIGNYAN + {0xA984, 0xA9B2, prN}, // Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA + {0xA9B3, 0xA9B3, prN}, // Mn JAVANESE SIGN CECAK TELU + {0xA9B4, 0xA9B5, prN}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG + {0xA9B6, 0xA9B9, prN}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT + {0xA9BA, 0xA9BB, prN}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE + {0xA9BC, 0xA9BD, prN}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET + {0xA9BE, 0xA9C0, prN}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON + {0xA9C1, 0xA9CD, prN}, // Po [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH + {0xA9CF, 0xA9CF, prN}, // Lm JAVANESE PANGRANGKEP + {0xA9D0, 0xA9D9, prN}, // Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE + {0xA9DE, 0xA9DF, prN}, // Po [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN + {0xA9E0, 0xA9E4, prN}, // Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA + {0xA9E5, 0xA9E5, prN}, // Mn MYANMAR SIGN SHAN SAW + {0xA9E6, 0xA9E6, prN}, // Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION + {0xA9E7, 0xA9EF, prN}, // Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA + {0xA9F0, 0xA9F9, prN}, // Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE + {0xA9FA, 0xA9FE, prN}, // Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA + {0xAA00, 0xAA28, prN}, // Lo [41] CHAM LETTER A..CHAM LETTER HA + {0xAA29, 0xAA2E, prN}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE + {0xAA2F, 0xAA30, prN}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI + {0xAA31, 0xAA32, prN}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE + {0xAA33, 0xAA34, prN}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA + {0xAA35, 0xAA36, prN}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA + {0xAA40, 0xAA42, prN}, // Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG + {0xAA43, 0xAA43, prN}, // Mn CHAM CONSONANT SIGN FINAL NG + {0xAA44, 0xAA4B, prN}, // Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS + {0xAA4C, 0xAA4C, prN}, // Mn CHAM CONSONANT SIGN FINAL M + {0xAA4D, 0xAA4D, prN}, // Mc CHAM CONSONANT SIGN FINAL H + {0xAA50, 0xAA59, prN}, // Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE + {0xAA5C, 0xAA5F, prN}, // Po [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA + {0xAA60, 0xAA6F, prN}, // Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA + {0xAA70, 0xAA70, prN}, // Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION + {0xAA71, 0xAA76, prN}, // Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM + {0xAA77, 0xAA79, prN}, // So [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO + {0xAA7A, 0xAA7A, prN}, // Lo MYANMAR LETTER AITON RA + {0xAA7B, 0xAA7B, prN}, // Mc MYANMAR SIGN PAO KAREN TONE + {0xAA7C, 0xAA7C, prN}, // Mn MYANMAR SIGN TAI LAING TONE-2 + {0xAA7D, 0xAA7D, prN}, // Mc MYANMAR SIGN TAI LAING TONE-5 + {0xAA7E, 0xAA7F, prN}, // Lo [2] MYANMAR LETTER SHWE PALAUNG CHA..MYANMAR LETTER SHWE PALAUNG SHA + {0xAA80, 0xAAAF, prN}, // Lo [48] TAI VIET LETTER LOW KO..TAI VIET LETTER HIGH O + {0xAAB0, 0xAAB0, prN}, // Mn TAI VIET MAI KANG + {0xAAB1, 0xAAB1, prN}, // Lo TAI VIET VOWEL AA + {0xAAB2, 0xAAB4, prN}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U + {0xAAB5, 0xAAB6, prN}, // Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O + {0xAAB7, 0xAAB8, prN}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA + {0xAAB9, 0xAABD, prN}, // Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN + {0xAABE, 0xAABF, prN}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK + {0xAAC0, 0xAAC0, prN}, // Lo TAI VIET TONE MAI NUENG + {0xAAC1, 0xAAC1, prN}, // Mn TAI VIET TONE MAI THO + {0xAAC2, 0xAAC2, prN}, // Lo TAI VIET TONE MAI SONG + {0xAADB, 0xAADC, prN}, // Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG + {0xAADD, 0xAADD, prN}, // Lm TAI VIET SYMBOL SAM + {0xAADE, 0xAADF, prN}, // Po [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI + {0xAAE0, 0xAAEA, prN}, // Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA + {0xAAEB, 0xAAEB, prN}, // Mc MEETEI MAYEK VOWEL SIGN II + {0xAAEC, 0xAAED, prN}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI + {0xAAEE, 0xAAEF, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU + {0xAAF0, 0xAAF1, prN}, // Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM + {0xAAF2, 0xAAF2, prN}, // Lo MEETEI MAYEK ANJI + {0xAAF3, 0xAAF4, prN}, // Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK + {0xAAF5, 0xAAF5, prN}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA + {0xAAF6, 0xAAF6, prN}, // Mn MEETEI MAYEK VIRAMA + {0xAB01, 0xAB06, prN}, // Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO + {0xAB09, 0xAB0E, prN}, // Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO + {0xAB11, 0xAB16, prN}, // Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO + {0xAB20, 0xAB26, prN}, // Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO + {0xAB28, 0xAB2E, prN}, // Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO + {0xAB30, 0xAB5A, prN}, // Ll [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG + {0xAB5B, 0xAB5B, prN}, // Sk MODIFIER BREVE WITH INVERTED BREVE + {0xAB5C, 0xAB5F, prN}, // Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK + {0xAB60, 0xAB68, prN}, // Ll [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE + {0xAB69, 0xAB69, prN}, // Lm MODIFIER LETTER SMALL TURNED W + {0xAB6A, 0xAB6B, prN}, // Sk [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK + {0xAB70, 0xABBF, prN}, // Ll [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA + {0xABC0, 0xABE2, prN}, // Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM + {0xABE3, 0xABE4, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP + {0xABE5, 0xABE5, prN}, // Mn MEETEI MAYEK VOWEL SIGN ANAP + {0xABE6, 0xABE7, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP + {0xABE8, 0xABE8, prN}, // Mn MEETEI MAYEK VOWEL SIGN UNAP + {0xABE9, 0xABEA, prN}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG + {0xABEB, 0xABEB, prN}, // Po MEETEI MAYEK CHEIKHEI + {0xABEC, 0xABEC, prN}, // Mc MEETEI MAYEK LUM IYEK + {0xABED, 0xABED, prN}, // Mn MEETEI MAYEK APUN IYEK + {0xABF0, 0xABF9, prN}, // Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE + {0xAC00, 0xD7A3, prW}, // Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH + {0xD7B0, 0xD7C6, prN}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E + {0xD7CB, 0xD7FB, prN}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH + {0xD800, 0xDB7F, prN}, // Cs [896] .. + {0xDB80, 0xDBFF, prN}, // Cs [128] .. + {0xDC00, 0xDFFF, prN}, // Cs [1024] .. + {0xE000, 0xF8FF, prA}, // Co [6400] .. + {0xF900, 0xFA6D, prW}, // Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D + {0xFA6E, 0xFA6F, prW}, // Cn [2] .. + {0xFA70, 0xFAD9, prW}, // Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 + {0xFADA, 0xFAFF, prW}, // Cn [38] .. + {0xFB00, 0xFB06, prN}, // Ll [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST + {0xFB13, 0xFB17, prN}, // Ll [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH + {0xFB1D, 0xFB1D, prN}, // Lo HEBREW LETTER YOD WITH HIRIQ + {0xFB1E, 0xFB1E, prN}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA + {0xFB1F, 0xFB28, prN}, // Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV + {0xFB29, 0xFB29, prN}, // Sm HEBREW LETTER ALTERNATIVE PLUS SIGN + {0xFB2A, 0xFB36, prN}, // Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH + {0xFB38, 0xFB3C, prN}, // Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH + {0xFB3E, 0xFB3E, prN}, // Lo HEBREW LETTER MEM WITH DAGESH + {0xFB40, 0xFB41, prN}, // Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH + {0xFB43, 0xFB44, prN}, // Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH + {0xFB46, 0xFB4F, prN}, // Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED + {0xFB50, 0xFBB1, prN}, // Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM + {0xFBB2, 0xFBC2, prN}, // Sk [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE + {0xFBD3, 0xFD3D, prN}, // Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM + {0xFD3E, 0xFD3E, prN}, // Pe ORNATE LEFT PARENTHESIS + {0xFD3F, 0xFD3F, prN}, // Ps ORNATE RIGHT PARENTHESIS + {0xFD40, 0xFD4F, prN}, // So [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH + {0xFD50, 0xFD8F, prN}, // Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM + {0xFD92, 0xFDC7, prN}, // Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM + {0xFDCF, 0xFDCF, prN}, // So ARABIC LIGATURE SALAAMUHU ALAYNAA + {0xFDF0, 0xFDFB, prN}, // Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU + {0xFDFC, 0xFDFC, prN}, // Sc RIAL SIGN + {0xFDFD, 0xFDFF, prN}, // So [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL + {0xFE00, 0xFE0F, prA}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 + {0xFE10, 0xFE16, prW}, // Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK + {0xFE17, 0xFE17, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET + {0xFE18, 0xFE18, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET + {0xFE19, 0xFE19, prW}, // Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS + {0xFE20, 0xFE2F, prN}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF + {0xFE30, 0xFE30, prW}, // Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER + {0xFE31, 0xFE32, prW}, // Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH + {0xFE33, 0xFE34, prW}, // Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE + {0xFE35, 0xFE35, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS + {0xFE36, 0xFE36, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS + {0xFE37, 0xFE37, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET + {0xFE38, 0xFE38, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET + {0xFE39, 0xFE39, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET + {0xFE3A, 0xFE3A, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET + {0xFE3B, 0xFE3B, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET + {0xFE3C, 0xFE3C, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET + {0xFE3D, 0xFE3D, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET + {0xFE3E, 0xFE3E, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET + {0xFE3F, 0xFE3F, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET + {0xFE40, 0xFE40, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET + {0xFE41, 0xFE41, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET + {0xFE42, 0xFE42, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET + {0xFE43, 0xFE43, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET + {0xFE44, 0xFE44, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET + {0xFE45, 0xFE46, prW}, // Po [2] SESAME DOT..WHITE SESAME DOT + {0xFE47, 0xFE47, prW}, // Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET + {0xFE48, 0xFE48, prW}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET + {0xFE49, 0xFE4C, prW}, // Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE + {0xFE4D, 0xFE4F, prW}, // Pc [3] DASHED LOW LINE..WAVY LOW LINE + {0xFE50, 0xFE52, prW}, // Po [3] SMALL COMMA..SMALL FULL STOP + {0xFE54, 0xFE57, prW}, // Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK + {0xFE58, 0xFE58, prW}, // Pd SMALL EM DASH + {0xFE59, 0xFE59, prW}, // Ps SMALL LEFT PARENTHESIS + {0xFE5A, 0xFE5A, prW}, // Pe SMALL RIGHT PARENTHESIS + {0xFE5B, 0xFE5B, prW}, // Ps SMALL LEFT CURLY BRACKET + {0xFE5C, 0xFE5C, prW}, // Pe SMALL RIGHT CURLY BRACKET + {0xFE5D, 0xFE5D, prW}, // Ps SMALL LEFT TORTOISE SHELL BRACKET + {0xFE5E, 0xFE5E, prW}, // Pe SMALL RIGHT TORTOISE SHELL BRACKET + {0xFE5F, 0xFE61, prW}, // Po [3] SMALL NUMBER SIGN..SMALL ASTERISK + {0xFE62, 0xFE62, prW}, // Sm SMALL PLUS SIGN + {0xFE63, 0xFE63, prW}, // Pd SMALL HYPHEN-MINUS + {0xFE64, 0xFE66, prW}, // Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN + {0xFE68, 0xFE68, prW}, // Po SMALL REVERSE SOLIDUS + {0xFE69, 0xFE69, prW}, // Sc SMALL DOLLAR SIGN + {0xFE6A, 0xFE6B, prW}, // Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT + {0xFE70, 0xFE74, prN}, // Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM + {0xFE76, 0xFEFC, prN}, // Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM + {0xFEFF, 0xFEFF, prN}, // Cf ZERO WIDTH NO-BREAK SPACE + {0xFF01, 0xFF03, prF}, // Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN + {0xFF04, 0xFF04, prF}, // Sc FULLWIDTH DOLLAR SIGN + {0xFF05, 0xFF07, prF}, // Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE + {0xFF08, 0xFF08, prF}, // Ps FULLWIDTH LEFT PARENTHESIS + {0xFF09, 0xFF09, prF}, // Pe FULLWIDTH RIGHT PARENTHESIS + {0xFF0A, 0xFF0A, prF}, // Po FULLWIDTH ASTERISK + {0xFF0B, 0xFF0B, prF}, // Sm FULLWIDTH PLUS SIGN + {0xFF0C, 0xFF0C, prF}, // Po FULLWIDTH COMMA + {0xFF0D, 0xFF0D, prF}, // Pd FULLWIDTH HYPHEN-MINUS + {0xFF0E, 0xFF0F, prF}, // Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS + {0xFF10, 0xFF19, prF}, // Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE + {0xFF1A, 0xFF1B, prF}, // Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON + {0xFF1C, 0xFF1E, prF}, // Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN + {0xFF1F, 0xFF20, prF}, // Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT + {0xFF21, 0xFF3A, prF}, // Lu [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z + {0xFF3B, 0xFF3B, prF}, // Ps FULLWIDTH LEFT SQUARE BRACKET + {0xFF3C, 0xFF3C, prF}, // Po FULLWIDTH REVERSE SOLIDUS + {0xFF3D, 0xFF3D, prF}, // Pe FULLWIDTH RIGHT SQUARE BRACKET + {0xFF3E, 0xFF3E, prF}, // Sk FULLWIDTH CIRCUMFLEX ACCENT + {0xFF3F, 0xFF3F, prF}, // Pc FULLWIDTH LOW LINE + {0xFF40, 0xFF40, prF}, // Sk FULLWIDTH GRAVE ACCENT + {0xFF41, 0xFF5A, prF}, // Ll [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z + {0xFF5B, 0xFF5B, prF}, // Ps FULLWIDTH LEFT CURLY BRACKET + {0xFF5C, 0xFF5C, prF}, // Sm FULLWIDTH VERTICAL LINE + {0xFF5D, 0xFF5D, prF}, // Pe FULLWIDTH RIGHT CURLY BRACKET + {0xFF5E, 0xFF5E, prF}, // Sm FULLWIDTH TILDE + {0xFF5F, 0xFF5F, prF}, // Ps FULLWIDTH LEFT WHITE PARENTHESIS + {0xFF60, 0xFF60, prF}, // Pe FULLWIDTH RIGHT WHITE PARENTHESIS + {0xFF61, 0xFF61, prH}, // Po HALFWIDTH IDEOGRAPHIC FULL STOP + {0xFF62, 0xFF62, prH}, // Ps HALFWIDTH LEFT CORNER BRACKET + {0xFF63, 0xFF63, prH}, // Pe HALFWIDTH RIGHT CORNER BRACKET + {0xFF64, 0xFF65, prH}, // Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT + {0xFF66, 0xFF6F, prH}, // Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU + {0xFF70, 0xFF70, prH}, // Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK + {0xFF71, 0xFF9D, prH}, // Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N + {0xFF9E, 0xFF9F, prH}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + {0xFFA0, 0xFFBE, prH}, // Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH + {0xFFC2, 0xFFC7, prH}, // Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E + {0xFFCA, 0xFFCF, prH}, // Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE + {0xFFD2, 0xFFD7, prH}, // Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU + {0xFFDA, 0xFFDC, prH}, // Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I + {0xFFE0, 0xFFE1, prF}, // Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN + {0xFFE2, 0xFFE2, prF}, // Sm FULLWIDTH NOT SIGN + {0xFFE3, 0xFFE3, prF}, // Sk FULLWIDTH MACRON + {0xFFE4, 0xFFE4, prF}, // So FULLWIDTH BROKEN BAR + {0xFFE5, 0xFFE6, prF}, // Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN + {0xFFE8, 0xFFE8, prH}, // So HALFWIDTH FORMS LIGHT VERTICAL + {0xFFE9, 0xFFEC, prH}, // Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW + {0xFFED, 0xFFEE, prH}, // So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE + {0xFFF9, 0xFFFB, prN}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR + {0xFFFC, 0xFFFC, prN}, // So OBJECT REPLACEMENT CHARACTER + {0xFFFD, 0xFFFD, prA}, // So REPLACEMENT CHARACTER + {0x10000, 0x1000B, prN}, // Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE + {0x1000D, 0x10026, prN}, // Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO + {0x10028, 0x1003A, prN}, // Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO + {0x1003C, 0x1003D, prN}, // Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE + {0x1003F, 0x1004D, prN}, // Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO + {0x10050, 0x1005D, prN}, // Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 + {0x10080, 0x100FA, prN}, // Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 + {0x10100, 0x10102, prN}, // Po [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK + {0x10107, 0x10133, prN}, // No [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND + {0x10137, 0x1013F, prN}, // So [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT + {0x10140, 0x10174, prN}, // Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS + {0x10175, 0x10178, prN}, // No [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN + {0x10179, 0x10189, prN}, // So [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN + {0x1018A, 0x1018B, prN}, // No [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN + {0x1018C, 0x1018E, prN}, // So [3] GREEK SINUSOID SIGN..NOMISMA SIGN + {0x10190, 0x1019C, prN}, // So [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL + {0x101A0, 0x101A0, prN}, // So GREEK SYMBOL TAU RHO + {0x101D0, 0x101FC, prN}, // So [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND + {0x101FD, 0x101FD, prN}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE + {0x10280, 0x1029C, prN}, // Lo [29] LYCIAN LETTER A..LYCIAN LETTER X + {0x102A0, 0x102D0, prN}, // Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 + {0x102E0, 0x102E0, prN}, // Mn COPTIC EPACT THOUSANDS MARK + {0x102E1, 0x102FB, prN}, // No [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED + {0x10300, 0x1031F, prN}, // Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS + {0x10320, 0x10323, prN}, // No [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY + {0x1032D, 0x1032F, prN}, // Lo [3] OLD ITALIC LETTER YE..OLD ITALIC LETTER SOUTHERN TSE + {0x10330, 0x10340, prN}, // Lo [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA + {0x10341, 0x10341, prN}, // Nl GOTHIC LETTER NINETY + {0x10342, 0x10349, prN}, // Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL + {0x1034A, 0x1034A, prN}, // Nl GOTHIC LETTER NINE HUNDRED + {0x10350, 0x10375, prN}, // Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA + {0x10376, 0x1037A, prN}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII + {0x10380, 0x1039D, prN}, // Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU + {0x1039F, 0x1039F, prN}, // Po UGARITIC WORD DIVIDER + {0x103A0, 0x103C3, prN}, // Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA + {0x103C8, 0x103CF, prN}, // Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH + {0x103D0, 0x103D0, prN}, // Po OLD PERSIAN WORD DIVIDER + {0x103D1, 0x103D5, prN}, // Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED + {0x10400, 0x1044F, prN}, // L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW + {0x10450, 0x1047F, prN}, // Lo [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW + {0x10480, 0x1049D, prN}, // Lo [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO + {0x104A0, 0x104A9, prN}, // Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE + {0x104B0, 0x104D3, prN}, // Lu [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA + {0x104D8, 0x104FB, prN}, // Ll [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA + {0x10500, 0x10527, prN}, // Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE + {0x10530, 0x10563, prN}, // Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW + {0x1056F, 0x1056F, prN}, // Po CAUCASIAN ALBANIAN CITATION MARK + {0x10570, 0x1057A, prN}, // Lu [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA + {0x1057C, 0x1058A, prN}, // Lu [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE + {0x1058C, 0x10592, prN}, // Lu [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE + {0x10594, 0x10595, prN}, // Lu [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE + {0x10597, 0x105A1, prN}, // Ll [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA + {0x105A3, 0x105B1, prN}, // Ll [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE + {0x105B3, 0x105B9, prN}, // Ll [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE + {0x105BB, 0x105BC, prN}, // Ll [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE + {0x10600, 0x10736, prN}, // Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 + {0x10740, 0x10755, prN}, // Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE + {0x10760, 0x10767, prN}, // Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 + {0x10780, 0x10785, prN}, // Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK + {0x10787, 0x107B0, prN}, // Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK + {0x107B2, 0x107BA, prN}, // Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL + {0x10800, 0x10805, prN}, // Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA + {0x10808, 0x10808, prN}, // Lo CYPRIOT SYLLABLE JO + {0x1080A, 0x10835, prN}, // Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO + {0x10837, 0x10838, prN}, // Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE + {0x1083C, 0x1083C, prN}, // Lo CYPRIOT SYLLABLE ZA + {0x1083F, 0x1083F, prN}, // Lo CYPRIOT SYLLABLE ZO + {0x10840, 0x10855, prN}, // Lo [22] IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW + {0x10857, 0x10857, prN}, // Po IMPERIAL ARAMAIC SECTION SIGN + {0x10858, 0x1085F, prN}, // No [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND + {0x10860, 0x10876, prN}, // Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW + {0x10877, 0x10878, prN}, // So [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON + {0x10879, 0x1087F, prN}, // No [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY + {0x10880, 0x1089E, prN}, // Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW + {0x108A7, 0x108AF, prN}, // No [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED + {0x108E0, 0x108F2, prN}, // Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH + {0x108F4, 0x108F5, prN}, // Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW + {0x108FB, 0x108FF, prN}, // No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED + {0x10900, 0x10915, prN}, // Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU + {0x10916, 0x1091B, prN}, // No [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE + {0x1091F, 0x1091F, prN}, // Po PHOENICIAN WORD SEPARATOR + {0x10920, 0x10939, prN}, // Lo [26] LYDIAN LETTER A..LYDIAN LETTER C + {0x1093F, 0x1093F, prN}, // Po LYDIAN TRIANGULAR MARK + {0x10980, 0x1099F, prN}, // Lo [32] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 + {0x109A0, 0x109B7, prN}, // Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA + {0x109BC, 0x109BD, prN}, // No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF + {0x109BE, 0x109BF, prN}, // Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN + {0x109C0, 0x109CF, prN}, // No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY + {0x109D2, 0x109FF, prN}, // No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS + {0x10A00, 0x10A00, prN}, // Lo KHAROSHTHI LETTER A + {0x10A01, 0x10A03, prN}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R + {0x10A05, 0x10A06, prN}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O + {0x10A0C, 0x10A0F, prN}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA + {0x10A10, 0x10A13, prN}, // Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA + {0x10A15, 0x10A17, prN}, // Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA + {0x10A19, 0x10A35, prN}, // Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA + {0x10A38, 0x10A3A, prN}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW + {0x10A3F, 0x10A3F, prN}, // Mn KHAROSHTHI VIRAMA + {0x10A40, 0x10A48, prN}, // No [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF + {0x10A50, 0x10A58, prN}, // Po [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES + {0x10A60, 0x10A7C, prN}, // Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH + {0x10A7D, 0x10A7E, prN}, // No [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY + {0x10A7F, 0x10A7F, prN}, // Po OLD SOUTH ARABIAN NUMERIC INDICATOR + {0x10A80, 0x10A9C, prN}, // Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH + {0x10A9D, 0x10A9F, prN}, // No [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY + {0x10AC0, 0x10AC7, prN}, // Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW + {0x10AC8, 0x10AC8, prN}, // So MANICHAEAN SIGN UD + {0x10AC9, 0x10AE4, prN}, // Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW + {0x10AE5, 0x10AE6, prN}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW + {0x10AEB, 0x10AEF, prN}, // No [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED + {0x10AF0, 0x10AF6, prN}, // Po [7] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION LINE FILLER + {0x10B00, 0x10B35, prN}, // Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE + {0x10B39, 0x10B3F, prN}, // Po [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION + {0x10B40, 0x10B55, prN}, // Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW + {0x10B58, 0x10B5F, prN}, // No [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND + {0x10B60, 0x10B72, prN}, // Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW + {0x10B78, 0x10B7F, prN}, // No [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND + {0x10B80, 0x10B91, prN}, // Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW + {0x10B99, 0x10B9C, prN}, // Po [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT + {0x10BA9, 0x10BAF, prN}, // No [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED + {0x10C00, 0x10C48, prN}, // Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH + {0x10C80, 0x10CB2, prN}, // Lu [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US + {0x10CC0, 0x10CF2, prN}, // Ll [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US + {0x10CFA, 0x10CFF, prN}, // No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND + {0x10D00, 0x10D23, prN}, // Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA + {0x10D24, 0x10D27, prN}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI + {0x10D30, 0x10D39, prN}, // Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE + {0x10E60, 0x10E7E, prN}, // No [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS + {0x10E80, 0x10EA9, prN}, // Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET + {0x10EAB, 0x10EAC, prN}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK + {0x10EAD, 0x10EAD, prN}, // Pd YEZIDI HYPHENATION MARK + {0x10EB0, 0x10EB1, prN}, // Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE + {0x10EFD, 0x10EFF, prN}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA + {0x10F00, 0x10F1C, prN}, // Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL + {0x10F1D, 0x10F26, prN}, // No [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF + {0x10F27, 0x10F27, prN}, // Lo OLD SOGDIAN LIGATURE AYIN-DALETH + {0x10F30, 0x10F45, prN}, // Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN + {0x10F46, 0x10F50, prN}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW + {0x10F51, 0x10F54, prN}, // No [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED + {0x10F55, 0x10F59, prN}, // Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT + {0x10F70, 0x10F81, prN}, // Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH + {0x10F82, 0x10F85, prN}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW + {0x10F86, 0x10F89, prN}, // Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS + {0x10FB0, 0x10FC4, prN}, // Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW + {0x10FC5, 0x10FCB, prN}, // No [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED + {0x10FE0, 0x10FF6, prN}, // Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH + {0x11000, 0x11000, prN}, // Mc BRAHMI SIGN CANDRABINDU + {0x11001, 0x11001, prN}, // Mn BRAHMI SIGN ANUSVARA + {0x11002, 0x11002, prN}, // Mc BRAHMI SIGN VISARGA + {0x11003, 0x11037, prN}, // Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA + {0x11038, 0x11046, prN}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA + {0x11047, 0x1104D, prN}, // Po [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS + {0x11052, 0x11065, prN}, // No [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND + {0x11066, 0x1106F, prN}, // Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE + {0x11070, 0x11070, prN}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA + {0x11071, 0x11072, prN}, // Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O + {0x11073, 0x11074, prN}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O + {0x11075, 0x11075, prN}, // Lo BRAHMI LETTER OLD TAMIL LLA + {0x1107F, 0x1107F, prN}, // Mn BRAHMI NUMBER JOINER + {0x11080, 0x11081, prN}, // Mn [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA + {0x11082, 0x11082, prN}, // Mc KAITHI SIGN VISARGA + {0x11083, 0x110AF, prN}, // Lo [45] KAITHI LETTER A..KAITHI LETTER HA + {0x110B0, 0x110B2, prN}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II + {0x110B3, 0x110B6, prN}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI + {0x110B7, 0x110B8, prN}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU + {0x110B9, 0x110BA, prN}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA + {0x110BB, 0x110BC, prN}, // Po [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN + {0x110BD, 0x110BD, prN}, // Cf KAITHI NUMBER SIGN + {0x110BE, 0x110C1, prN}, // Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA + {0x110C2, 0x110C2, prN}, // Mn KAITHI VOWEL SIGN VOCALIC R + {0x110CD, 0x110CD, prN}, // Cf KAITHI NUMBER SIGN ABOVE + {0x110D0, 0x110E8, prN}, // Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE + {0x110F0, 0x110F9, prN}, // Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE + {0x11100, 0x11102, prN}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA + {0x11103, 0x11126, prN}, // Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA + {0x11127, 0x1112B, prN}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU + {0x1112C, 0x1112C, prN}, // Mc CHAKMA VOWEL SIGN E + {0x1112D, 0x11134, prN}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA + {0x11136, 0x1113F, prN}, // Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE + {0x11140, 0x11143, prN}, // Po [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK + {0x11144, 0x11144, prN}, // Lo CHAKMA LETTER LHAA + {0x11145, 0x11146, prN}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI + {0x11147, 0x11147, prN}, // Lo CHAKMA LETTER VAA + {0x11150, 0x11172, prN}, // Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA + {0x11173, 0x11173, prN}, // Mn MAHAJANI SIGN NUKTA + {0x11174, 0x11175, prN}, // Po [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK + {0x11176, 0x11176, prN}, // Lo MAHAJANI LIGATURE SHRI + {0x11180, 0x11181, prN}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA + {0x11182, 0x11182, prN}, // Mc SHARADA SIGN VISARGA + {0x11183, 0x111B2, prN}, // Lo [48] SHARADA LETTER A..SHARADA LETTER HA + {0x111B3, 0x111B5, prN}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II + {0x111B6, 0x111BE, prN}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O + {0x111BF, 0x111C0, prN}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA + {0x111C1, 0x111C4, prN}, // Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM + {0x111C5, 0x111C8, prN}, // Po [4] SHARADA DANDA..SHARADA SEPARATOR + {0x111C9, 0x111CC, prN}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK + {0x111CD, 0x111CD, prN}, // Po SHARADA SUTRA MARK + {0x111CE, 0x111CE, prN}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E + {0x111CF, 0x111CF, prN}, // Mn SHARADA SIGN INVERTED CANDRABINDU + {0x111D0, 0x111D9, prN}, // Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE + {0x111DA, 0x111DA, prN}, // Lo SHARADA EKAM + {0x111DB, 0x111DB, prN}, // Po SHARADA SIGN SIDDHAM + {0x111DC, 0x111DC, prN}, // Lo SHARADA HEADSTROKE + {0x111DD, 0x111DF, prN}, // Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 + {0x111E1, 0x111F4, prN}, // No [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND + {0x11200, 0x11211, prN}, // Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA + {0x11213, 0x1122B, prN}, // Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA + {0x1122C, 0x1122E, prN}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II + {0x1122F, 0x11231, prN}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI + {0x11232, 0x11233, prN}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU + {0x11234, 0x11234, prN}, // Mn KHOJKI SIGN ANUSVARA + {0x11235, 0x11235, prN}, // Mc KHOJKI SIGN VIRAMA + {0x11236, 0x11237, prN}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA + {0x11238, 0x1123D, prN}, // Po [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN + {0x1123E, 0x1123E, prN}, // Mn KHOJKI SIGN SUKUN + {0x1123F, 0x11240, prN}, // Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I + {0x11241, 0x11241, prN}, // Mn KHOJKI VOWEL SIGN VOCALIC R + {0x11280, 0x11286, prN}, // Lo [7] MULTANI LETTER A..MULTANI LETTER GA + {0x11288, 0x11288, prN}, // Lo MULTANI LETTER GHA + {0x1128A, 0x1128D, prN}, // Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA + {0x1128F, 0x1129D, prN}, // Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA + {0x1129F, 0x112A8, prN}, // Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA + {0x112A9, 0x112A9, prN}, // Po MULTANI SECTION MARK + {0x112B0, 0x112DE, prN}, // Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA + {0x112DF, 0x112DF, prN}, // Mn KHUDAWADI SIGN ANUSVARA + {0x112E0, 0x112E2, prN}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II + {0x112E3, 0x112EA, prN}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA + {0x112F0, 0x112F9, prN}, // Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE + {0x11300, 0x11301, prN}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU + {0x11302, 0x11303, prN}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA + {0x11305, 0x1130C, prN}, // Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L + {0x1130F, 0x11310, prN}, // Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI + {0x11313, 0x11328, prN}, // Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA + {0x1132A, 0x11330, prN}, // Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA + {0x11332, 0x11333, prN}, // Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA + {0x11335, 0x11339, prN}, // Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA + {0x1133B, 0x1133C, prN}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA + {0x1133D, 0x1133D, prN}, // Lo GRANTHA SIGN AVAGRAHA + {0x1133E, 0x1133F, prN}, // Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I + {0x11340, 0x11340, prN}, // Mn GRANTHA VOWEL SIGN II + {0x11341, 0x11344, prN}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR + {0x11347, 0x11348, prN}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI + {0x1134B, 0x1134D, prN}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA + {0x11350, 0x11350, prN}, // Lo GRANTHA OM + {0x11357, 0x11357, prN}, // Mc GRANTHA AU LENGTH MARK + {0x1135D, 0x11361, prN}, // Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL + {0x11362, 0x11363, prN}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL + {0x11366, 0x1136C, prN}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX + {0x11370, 0x11374, prN}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA + {0x11400, 0x11434, prN}, // Lo [53] NEWA LETTER A..NEWA LETTER HA + {0x11435, 0x11437, prN}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II + {0x11438, 0x1143F, prN}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI + {0x11440, 0x11441, prN}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU + {0x11442, 0x11444, prN}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA + {0x11445, 0x11445, prN}, // Mc NEWA SIGN VISARGA + {0x11446, 0x11446, prN}, // Mn NEWA SIGN NUKTA + {0x11447, 0x1144A, prN}, // Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI + {0x1144B, 0x1144F, prN}, // Po [5] NEWA DANDA..NEWA ABBREVIATION SIGN + {0x11450, 0x11459, prN}, // Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE + {0x1145A, 0x1145B, prN}, // Po [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK + {0x1145D, 0x1145D, prN}, // Po NEWA INSERTION SIGN + {0x1145E, 0x1145E, prN}, // Mn NEWA SANDHI MARK + {0x1145F, 0x11461, prN}, // Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA + {0x11480, 0x114AF, prN}, // Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA + {0x114B0, 0x114B2, prN}, // Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II + {0x114B3, 0x114B8, prN}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL + {0x114B9, 0x114B9, prN}, // Mc TIRHUTA VOWEL SIGN E + {0x114BA, 0x114BA, prN}, // Mn TIRHUTA VOWEL SIGN SHORT E + {0x114BB, 0x114BE, prN}, // Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU + {0x114BF, 0x114C0, prN}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA + {0x114C1, 0x114C1, prN}, // Mc TIRHUTA SIGN VISARGA + {0x114C2, 0x114C3, prN}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA + {0x114C4, 0x114C5, prN}, // Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG + {0x114C6, 0x114C6, prN}, // Po TIRHUTA ABBREVIATION SIGN + {0x114C7, 0x114C7, prN}, // Lo TIRHUTA OM + {0x114D0, 0x114D9, prN}, // Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE + {0x11580, 0x115AE, prN}, // Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA + {0x115AF, 0x115B1, prN}, // Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II + {0x115B2, 0x115B5, prN}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR + {0x115B8, 0x115BB, prN}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU + {0x115BC, 0x115BD, prN}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA + {0x115BE, 0x115BE, prN}, // Mc SIDDHAM SIGN VISARGA + {0x115BF, 0x115C0, prN}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA + {0x115C1, 0x115D7, prN}, // Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES + {0x115D8, 0x115DB, prN}, // Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U + {0x115DC, 0x115DD, prN}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU + {0x11600, 0x1162F, prN}, // Lo [48] MODI LETTER A..MODI LETTER LLA + {0x11630, 0x11632, prN}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II + {0x11633, 0x1163A, prN}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI + {0x1163B, 0x1163C, prN}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU + {0x1163D, 0x1163D, prN}, // Mn MODI SIGN ANUSVARA + {0x1163E, 0x1163E, prN}, // Mc MODI SIGN VISARGA + {0x1163F, 0x11640, prN}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA + {0x11641, 0x11643, prN}, // Po [3] MODI DANDA..MODI ABBREVIATION SIGN + {0x11644, 0x11644, prN}, // Lo MODI SIGN HUVA + {0x11650, 0x11659, prN}, // Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE + {0x11660, 0x1166C, prN}, // Po [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT + {0x11680, 0x116AA, prN}, // Lo [43] TAKRI LETTER A..TAKRI LETTER RRA + {0x116AB, 0x116AB, prN}, // Mn TAKRI SIGN ANUSVARA + {0x116AC, 0x116AC, prN}, // Mc TAKRI SIGN VISARGA + {0x116AD, 0x116AD, prN}, // Mn TAKRI VOWEL SIGN AA + {0x116AE, 0x116AF, prN}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II + {0x116B0, 0x116B5, prN}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU + {0x116B6, 0x116B6, prN}, // Mc TAKRI SIGN VIRAMA + {0x116B7, 0x116B7, prN}, // Mn TAKRI SIGN NUKTA + {0x116B8, 0x116B8, prN}, // Lo TAKRI LETTER ARCHAIC KHA + {0x116B9, 0x116B9, prN}, // Po TAKRI ABBREVIATION SIGN + {0x116C0, 0x116C9, prN}, // Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE + {0x11700, 0x1171A, prN}, // Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA + {0x1171D, 0x1171F, prN}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA + {0x11720, 0x11721, prN}, // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA + {0x11722, 0x11725, prN}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU + {0x11726, 0x11726, prN}, // Mc AHOM VOWEL SIGN E + {0x11727, 0x1172B, prN}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER + {0x11730, 0x11739, prN}, // Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE + {0x1173A, 0x1173B, prN}, // No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY + {0x1173C, 0x1173E, prN}, // Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI + {0x1173F, 0x1173F, prN}, // So AHOM SYMBOL VI + {0x11740, 0x11746, prN}, // Lo [7] AHOM LETTER CA..AHOM LETTER LLA + {0x11800, 0x1182B, prN}, // Lo [44] DOGRA LETTER A..DOGRA LETTER RRA + {0x1182C, 0x1182E, prN}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II + {0x1182F, 0x11837, prN}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA + {0x11838, 0x11838, prN}, // Mc DOGRA SIGN VISARGA + {0x11839, 0x1183A, prN}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA + {0x1183B, 0x1183B, prN}, // Po DOGRA ABBREVIATION SIGN + {0x118A0, 0x118DF, prN}, // L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO + {0x118E0, 0x118E9, prN}, // Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE + {0x118EA, 0x118F2, prN}, // No [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY + {0x118FF, 0x118FF, prN}, // Lo WARANG CITI OM + {0x11900, 0x11906, prN}, // Lo [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E + {0x11909, 0x11909, prN}, // Lo DIVES AKURU LETTER O + {0x1190C, 0x11913, prN}, // Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA + {0x11915, 0x11916, prN}, // Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA + {0x11918, 0x1192F, prN}, // Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA + {0x11930, 0x11935, prN}, // Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E + {0x11937, 0x11938, prN}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O + {0x1193B, 0x1193C, prN}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU + {0x1193D, 0x1193D, prN}, // Mc DIVES AKURU SIGN HALANTA + {0x1193E, 0x1193E, prN}, // Mn DIVES AKURU VIRAMA + {0x1193F, 0x1193F, prN}, // Lo DIVES AKURU PREFIXED NASAL SIGN + {0x11940, 0x11940, prN}, // Mc DIVES AKURU MEDIAL YA + {0x11941, 0x11941, prN}, // Lo DIVES AKURU INITIAL RA + {0x11942, 0x11942, prN}, // Mc DIVES AKURU MEDIAL RA + {0x11943, 0x11943, prN}, // Mn DIVES AKURU SIGN NUKTA + {0x11944, 0x11946, prN}, // Po [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK + {0x11950, 0x11959, prN}, // Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE + {0x119A0, 0x119A7, prN}, // Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR + {0x119AA, 0x119D0, prN}, // Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA + {0x119D1, 0x119D3, prN}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II + {0x119D4, 0x119D7, prN}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR + {0x119DA, 0x119DB, prN}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI + {0x119DC, 0x119DF, prN}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA + {0x119E0, 0x119E0, prN}, // Mn NANDINAGARI SIGN VIRAMA + {0x119E1, 0x119E1, prN}, // Lo NANDINAGARI SIGN AVAGRAHA + {0x119E2, 0x119E2, prN}, // Po NANDINAGARI SIGN SIDDHAM + {0x119E3, 0x119E3, prN}, // Lo NANDINAGARI HEADSTROKE + {0x119E4, 0x119E4, prN}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E + {0x11A00, 0x11A00, prN}, // Lo ZANABAZAR SQUARE LETTER A + {0x11A01, 0x11A0A, prN}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK + {0x11A0B, 0x11A32, prN}, // Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA + {0x11A33, 0x11A38, prN}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA + {0x11A39, 0x11A39, prN}, // Mc ZANABAZAR SQUARE SIGN VISARGA + {0x11A3A, 0x11A3A, prN}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA + {0x11A3B, 0x11A3E, prN}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA + {0x11A3F, 0x11A46, prN}, // Po [8] ZANABAZAR SQUARE INITIAL HEAD MARK..ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK + {0x11A47, 0x11A47, prN}, // Mn ZANABAZAR SQUARE SUBJOINER + {0x11A50, 0x11A50, prN}, // Lo SOYOMBO LETTER A + {0x11A51, 0x11A56, prN}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE + {0x11A57, 0x11A58, prN}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU + {0x11A59, 0x11A5B, prN}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK + {0x11A5C, 0x11A89, prN}, // Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA + {0x11A8A, 0x11A96, prN}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA + {0x11A97, 0x11A97, prN}, // Mc SOYOMBO SIGN VISARGA + {0x11A98, 0x11A99, prN}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER + {0x11A9A, 0x11A9C, prN}, // Po [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD + {0x11A9D, 0x11A9D, prN}, // Lo SOYOMBO MARK PLUTA + {0x11A9E, 0x11AA2, prN}, // Po [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2 + {0x11AB0, 0x11ABF, prN}, // Lo [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA + {0x11AC0, 0x11AF8, prN}, // Lo [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL + {0x11B00, 0x11B09, prN}, // Po [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU + {0x11C00, 0x11C08, prN}, // Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L + {0x11C0A, 0x11C2E, prN}, // Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA + {0x11C2F, 0x11C2F, prN}, // Mc BHAIKSUKI VOWEL SIGN AA + {0x11C30, 0x11C36, prN}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L + {0x11C38, 0x11C3D, prN}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA + {0x11C3E, 0x11C3E, prN}, // Mc BHAIKSUKI SIGN VISARGA + {0x11C3F, 0x11C3F, prN}, // Mn BHAIKSUKI SIGN VIRAMA + {0x11C40, 0x11C40, prN}, // Lo BHAIKSUKI SIGN AVAGRAHA + {0x11C41, 0x11C45, prN}, // Po [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2 + {0x11C50, 0x11C59, prN}, // Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE + {0x11C5A, 0x11C6C, prN}, // No [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK + {0x11C70, 0x11C71, prN}, // Po [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD + {0x11C72, 0x11C8F, prN}, // Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A + {0x11C92, 0x11CA7, prN}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA + {0x11CA9, 0x11CA9, prN}, // Mc MARCHEN SUBJOINED LETTER YA + {0x11CAA, 0x11CB0, prN}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA + {0x11CB1, 0x11CB1, prN}, // Mc MARCHEN VOWEL SIGN I + {0x11CB2, 0x11CB3, prN}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E + {0x11CB4, 0x11CB4, prN}, // Mc MARCHEN VOWEL SIGN O + {0x11CB5, 0x11CB6, prN}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU + {0x11D00, 0x11D06, prN}, // Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E + {0x11D08, 0x11D09, prN}, // Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O + {0x11D0B, 0x11D30, prN}, // Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA + {0x11D31, 0x11D36, prN}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R + {0x11D3A, 0x11D3A, prN}, // Mn MASARAM GONDI VOWEL SIGN E + {0x11D3C, 0x11D3D, prN}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O + {0x11D3F, 0x11D45, prN}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA + {0x11D46, 0x11D46, prN}, // Lo MASARAM GONDI REPHA + {0x11D47, 0x11D47, prN}, // Mn MASARAM GONDI RA-KARA + {0x11D50, 0x11D59, prN}, // Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE + {0x11D60, 0x11D65, prN}, // Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU + {0x11D67, 0x11D68, prN}, // Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI + {0x11D6A, 0x11D89, prN}, // Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA + {0x11D8A, 0x11D8E, prN}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU + {0x11D90, 0x11D91, prN}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI + {0x11D93, 0x11D94, prN}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU + {0x11D95, 0x11D95, prN}, // Mn GUNJALA GONDI SIGN ANUSVARA + {0x11D96, 0x11D96, prN}, // Mc GUNJALA GONDI SIGN VISARGA + {0x11D97, 0x11D97, prN}, // Mn GUNJALA GONDI VIRAMA + {0x11D98, 0x11D98, prN}, // Lo GUNJALA GONDI OM + {0x11DA0, 0x11DA9, prN}, // Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE + {0x11EE0, 0x11EF2, prN}, // Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA + {0x11EF3, 0x11EF4, prN}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U + {0x11EF5, 0x11EF6, prN}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O + {0x11EF7, 0x11EF8, prN}, // Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION + {0x11F00, 0x11F01, prN}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA + {0x11F02, 0x11F02, prN}, // Lo KAWI SIGN REPHA + {0x11F03, 0x11F03, prN}, // Mc KAWI SIGN VISARGA + {0x11F04, 0x11F10, prN}, // Lo [13] KAWI LETTER A..KAWI LETTER O + {0x11F12, 0x11F33, prN}, // Lo [34] KAWI LETTER KA..KAWI LETTER JNYA + {0x11F34, 0x11F35, prN}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA + {0x11F36, 0x11F3A, prN}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R + {0x11F3E, 0x11F3F, prN}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI + {0x11F40, 0x11F40, prN}, // Mn KAWI VOWEL SIGN EU + {0x11F41, 0x11F41, prN}, // Mc KAWI SIGN KILLER + {0x11F42, 0x11F42, prN}, // Mn KAWI CONJOINER + {0x11F43, 0x11F4F, prN}, // Po [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL + {0x11F50, 0x11F59, prN}, // Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE + {0x11FB0, 0x11FB0, prN}, // Lo LISU LETTER YHA + {0x11FC0, 0x11FD4, prN}, // No [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH + {0x11FD5, 0x11FDC, prN}, // So [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI + {0x11FDD, 0x11FE0, prN}, // Sc [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN + {0x11FE1, 0x11FF1, prN}, // So [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA + {0x11FFF, 0x11FFF, prN}, // Po TAMIL PUNCTUATION END OF TEXT + {0x12000, 0x12399, prN}, // Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U + {0x12400, 0x1246E, prN}, // Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM + {0x12470, 0x12474, prN}, // Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON + {0x12480, 0x12543, prN}, // Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU + {0x12F90, 0x12FF0, prN}, // Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 + {0x12FF1, 0x12FF2, prN}, // Po [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 + {0x13000, 0x1342F, prN}, // Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D + {0x13430, 0x1343F, prN}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE + {0x13440, 0x13440, prN}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY + {0x13441, 0x13446, prN}, // Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN + {0x13447, 0x13455, prN}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED + {0x14400, 0x14646, prN}, // Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 + {0x16800, 0x16A38, prN}, // Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ + {0x16A40, 0x16A5E, prN}, // Lo [31] MRO LETTER TA..MRO LETTER TEK + {0x16A60, 0x16A69, prN}, // Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE + {0x16A6E, 0x16A6F, prN}, // Po [2] MRO DANDA..MRO DOUBLE DANDA + {0x16A70, 0x16ABE, prN}, // Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA + {0x16AC0, 0x16AC9, prN}, // Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE + {0x16AD0, 0x16AED, prN}, // Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I + {0x16AF0, 0x16AF4, prN}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE + {0x16AF5, 0x16AF5, prN}, // Po BASSA VAH FULL STOP + {0x16B00, 0x16B2F, prN}, // Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU + {0x16B30, 0x16B36, prN}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM + {0x16B37, 0x16B3B, prN}, // Po [5] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS FEEM + {0x16B3C, 0x16B3F, prN}, // So [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB + {0x16B40, 0x16B43, prN}, // Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM + {0x16B44, 0x16B44, prN}, // Po PAHAWH HMONG SIGN XAUS + {0x16B45, 0x16B45, prN}, // So PAHAWH HMONG SIGN CIM TSOV ROG + {0x16B50, 0x16B59, prN}, // Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE + {0x16B5B, 0x16B61, prN}, // No [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS + {0x16B63, 0x16B77, prN}, // Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS + {0x16B7D, 0x16B8F, prN}, // Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ + {0x16E40, 0x16E7F, prN}, // L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y + {0x16E80, 0x16E96, prN}, // No [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM + {0x16E97, 0x16E9A, prN}, // Po [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH + {0x16F00, 0x16F4A, prN}, // Lo [75] MIAO LETTER PA..MIAO LETTER RTE + {0x16F4F, 0x16F4F, prN}, // Mn MIAO SIGN CONSONANT MODIFIER BAR + {0x16F50, 0x16F50, prN}, // Lo MIAO LETTER NASALIZATION + {0x16F51, 0x16F87, prN}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI + {0x16F8F, 0x16F92, prN}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW + {0x16F93, 0x16F9F, prN}, // Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 + {0x16FE0, 0x16FE1, prW}, // Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK + {0x16FE2, 0x16FE2, prW}, // Po OLD CHINESE HOOK MARK + {0x16FE3, 0x16FE3, prW}, // Lm OLD CHINESE ITERATION MARK + {0x16FE4, 0x16FE4, prW}, // Mn KHITAN SMALL SCRIPT FILLER + {0x16FF0, 0x16FF1, prW}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY + {0x17000, 0x187F7, prW}, // Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 + {0x18800, 0x18AFF, prW}, // Lo [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 + {0x18B00, 0x18CD5, prW}, // Lo [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 + {0x18D00, 0x18D08, prW}, // Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 + {0x1AFF0, 0x1AFF3, prW}, // Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 + {0x1AFF5, 0x1AFFB, prW}, // Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 + {0x1AFFD, 0x1AFFE, prW}, // Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 + {0x1B000, 0x1B0FF, prW}, // Lo [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 + {0x1B100, 0x1B122, prW}, // Lo [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU + {0x1B132, 0x1B132, prW}, // Lo HIRAGANA LETTER SMALL KO + {0x1B150, 0x1B152, prW}, // Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO + {0x1B155, 0x1B155, prW}, // Lo KATAKANA LETTER SMALL KO + {0x1B164, 0x1B167, prW}, // Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N + {0x1B170, 0x1B2FB, prW}, // Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB + {0x1BC00, 0x1BC6A, prN}, // Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M + {0x1BC70, 0x1BC7C, prN}, // Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK + {0x1BC80, 0x1BC88, prN}, // Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL + {0x1BC90, 0x1BC99, prN}, // Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW + {0x1BC9C, 0x1BC9C, prN}, // So DUPLOYAN SIGN O WITH CROSS + {0x1BC9D, 0x1BC9E, prN}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK + {0x1BC9F, 0x1BC9F, prN}, // Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP + {0x1BCA0, 0x1BCA3, prN}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP + {0x1CF00, 0x1CF2D, prN}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT + {0x1CF30, 0x1CF46, prN}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG + {0x1CF50, 0x1CFC3, prN}, // So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK + {0x1D000, 0x1D0F5, prN}, // So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO + {0x1D100, 0x1D126, prN}, // So [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 + {0x1D129, 0x1D164, prN}, // So [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE + {0x1D165, 0x1D166, prN}, // Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM + {0x1D167, 0x1D169, prN}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 + {0x1D16A, 0x1D16C, prN}, // So [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 + {0x1D16D, 0x1D172, prN}, // Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 + {0x1D173, 0x1D17A, prN}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE + {0x1D17B, 0x1D182, prN}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE + {0x1D183, 0x1D184, prN}, // So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN + {0x1D185, 0x1D18B, prN}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE + {0x1D18C, 0x1D1A9, prN}, // So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH + {0x1D1AA, 0x1D1AD, prN}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO + {0x1D1AE, 0x1D1EA, prN}, // So [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON + {0x1D200, 0x1D241, prN}, // So [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 + {0x1D242, 0x1D244, prN}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME + {0x1D245, 0x1D245, prN}, // So GREEK MUSICAL LEIMMA + {0x1D2C0, 0x1D2D3, prN}, // No [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN + {0x1D2E0, 0x1D2F3, prN}, // No [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN + {0x1D300, 0x1D356, prN}, // So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING + {0x1D360, 0x1D378, prN}, // No [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE + {0x1D400, 0x1D454, prN}, // L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G + {0x1D456, 0x1D49C, prN}, // L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A + {0x1D49E, 0x1D49F, prN}, // Lu [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D + {0x1D4A2, 0x1D4A2, prN}, // Lu MATHEMATICAL SCRIPT CAPITAL G + {0x1D4A5, 0x1D4A6, prN}, // Lu [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K + {0x1D4A9, 0x1D4AC, prN}, // Lu [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q + {0x1D4AE, 0x1D4B9, prN}, // L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D + {0x1D4BB, 0x1D4BB, prN}, // Ll MATHEMATICAL SCRIPT SMALL F + {0x1D4BD, 0x1D4C3, prN}, // Ll [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N + {0x1D4C5, 0x1D505, prN}, // L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B + {0x1D507, 0x1D50A, prN}, // Lu [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G + {0x1D50D, 0x1D514, prN}, // Lu [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q + {0x1D516, 0x1D51C, prN}, // Lu [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y + {0x1D51E, 0x1D539, prN}, // L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B + {0x1D53B, 0x1D53E, prN}, // Lu [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G + {0x1D540, 0x1D544, prN}, // Lu [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M + {0x1D546, 0x1D546, prN}, // Lu MATHEMATICAL DOUBLE-STRUCK CAPITAL O + {0x1D54A, 0x1D550, prN}, // Lu [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y + {0x1D552, 0x1D6A5, prN}, // L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J + {0x1D6A8, 0x1D6C0, prN}, // Lu [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA + {0x1D6C1, 0x1D6C1, prN}, // Sm MATHEMATICAL BOLD NABLA + {0x1D6C2, 0x1D6DA, prN}, // Ll [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA + {0x1D6DB, 0x1D6DB, prN}, // Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL + {0x1D6DC, 0x1D6FA, prN}, // L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA + {0x1D6FB, 0x1D6FB, prN}, // Sm MATHEMATICAL ITALIC NABLA + {0x1D6FC, 0x1D714, prN}, // Ll [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA + {0x1D715, 0x1D715, prN}, // Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL + {0x1D716, 0x1D734, prN}, // L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA + {0x1D735, 0x1D735, prN}, // Sm MATHEMATICAL BOLD ITALIC NABLA + {0x1D736, 0x1D74E, prN}, // Ll [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA + {0x1D74F, 0x1D74F, prN}, // Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL + {0x1D750, 0x1D76E, prN}, // L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA + {0x1D76F, 0x1D76F, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD NABLA + {0x1D770, 0x1D788, prN}, // Ll [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA + {0x1D789, 0x1D789, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL + {0x1D78A, 0x1D7A8, prN}, // L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA + {0x1D7A9, 0x1D7A9, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA + {0x1D7AA, 0x1D7C2, prN}, // Ll [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA + {0x1D7C3, 0x1D7C3, prN}, // Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL + {0x1D7C4, 0x1D7CB, prN}, // L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA + {0x1D7CE, 0x1D7FF, prN}, // Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE + {0x1D800, 0x1D9FF, prN}, // So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD + {0x1DA00, 0x1DA36, prN}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN + {0x1DA37, 0x1DA3A, prN}, // So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE + {0x1DA3B, 0x1DA6C, prN}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT + {0x1DA6D, 0x1DA74, prN}, // So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING + {0x1DA75, 0x1DA75, prN}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS + {0x1DA76, 0x1DA83, prN}, // So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH + {0x1DA84, 0x1DA84, prN}, // Mn SIGNWRITING LOCATION HEAD NECK + {0x1DA85, 0x1DA86, prN}, // So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS + {0x1DA87, 0x1DA8B, prN}, // Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS + {0x1DA9B, 0x1DA9F, prN}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 + {0x1DAA1, 0x1DAAF, prN}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + {0x1DF00, 0x1DF09, prN}, // Ll [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + {0x1DF0A, 0x1DF0A, prN}, // Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + {0x1DF0B, 0x1DF1E, prN}, // Ll [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL + {0x1DF25, 0x1DF2A, prN}, // Ll [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK + {0x1E000, 0x1E006, prN}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE + {0x1E008, 0x1E018, prN}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU + {0x1E01B, 0x1E021, prN}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI + {0x1E023, 0x1E024, prN}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS + {0x1E026, 0x1E02A, prN}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA + {0x1E030, 0x1E06D, prN}, // Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + {0x1E08F, 0x1E08F, prN}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + {0x1E100, 0x1E12C, prN}, // Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W + {0x1E130, 0x1E136, prN}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D + {0x1E137, 0x1E13D, prN}, // Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER + {0x1E140, 0x1E149, prN}, // Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE + {0x1E14E, 0x1E14E, prN}, // Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ + {0x1E14F, 0x1E14F, prN}, // So NYIAKENG PUACHUE HMONG CIRCLED CA + {0x1E290, 0x1E2AD, prN}, // Lo [30] TOTO LETTER PA..TOTO LETTER A + {0x1E2AE, 0x1E2AE, prN}, // Mn TOTO SIGN RISING TONE + {0x1E2C0, 0x1E2EB, prN}, // Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH + {0x1E2EC, 0x1E2EF, prN}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI + {0x1E2F0, 0x1E2F9, prN}, // Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE + {0x1E2FF, 0x1E2FF, prN}, // Sc WANCHO NGUN SIGN + {0x1E4D0, 0x1E4EA, prN}, // Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL + {0x1E4EB, 0x1E4EB, prN}, // Lm NAG MUNDARI SIGN OJOD + {0x1E4EC, 0x1E4EF, prN}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH + {0x1E4F0, 0x1E4F9, prN}, // Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE + {0x1E7E0, 0x1E7E6, prN}, // Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO + {0x1E7E8, 0x1E7EB, prN}, // Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE + {0x1E7ED, 0x1E7EE, prN}, // Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE + {0x1E7F0, 0x1E7FE, prN}, // Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE + {0x1E800, 0x1E8C4, prN}, // Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON + {0x1E8C7, 0x1E8CF, prN}, // No [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE + {0x1E8D0, 0x1E8D6, prN}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS + {0x1E900, 0x1E943, prN}, // L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA + {0x1E944, 0x1E94A, prN}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA + {0x1E94B, 0x1E94B, prN}, // Lm ADLAM NASALIZATION MARK + {0x1E950, 0x1E959, prN}, // Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE + {0x1E95E, 0x1E95F, prN}, // Po [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK + {0x1EC71, 0x1ECAB, prN}, // No [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE + {0x1ECAC, 0x1ECAC, prN}, // So INDIC SIYAQ PLACEHOLDER + {0x1ECAD, 0x1ECAF, prN}, // No [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS + {0x1ECB0, 0x1ECB0, prN}, // Sc INDIC SIYAQ RUPEE MARK + {0x1ECB1, 0x1ECB4, prN}, // No [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK + {0x1ED01, 0x1ED2D, prN}, // No [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND + {0x1ED2E, 0x1ED2E, prN}, // So OTTOMAN SIYAQ MARRATAN + {0x1ED2F, 0x1ED3D, prN}, // No [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH + {0x1EE00, 0x1EE03, prN}, // Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL + {0x1EE05, 0x1EE1F, prN}, // Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF + {0x1EE21, 0x1EE22, prN}, // Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM + {0x1EE24, 0x1EE24, prN}, // Lo ARABIC MATHEMATICAL INITIAL HEH + {0x1EE27, 0x1EE27, prN}, // Lo ARABIC MATHEMATICAL INITIAL HAH + {0x1EE29, 0x1EE32, prN}, // Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF + {0x1EE34, 0x1EE37, prN}, // Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH + {0x1EE39, 0x1EE39, prN}, // Lo ARABIC MATHEMATICAL INITIAL DAD + {0x1EE3B, 0x1EE3B, prN}, // Lo ARABIC MATHEMATICAL INITIAL GHAIN + {0x1EE42, 0x1EE42, prN}, // Lo ARABIC MATHEMATICAL TAILED JEEM + {0x1EE47, 0x1EE47, prN}, // Lo ARABIC MATHEMATICAL TAILED HAH + {0x1EE49, 0x1EE49, prN}, // Lo ARABIC MATHEMATICAL TAILED YEH + {0x1EE4B, 0x1EE4B, prN}, // Lo ARABIC MATHEMATICAL TAILED LAM + {0x1EE4D, 0x1EE4F, prN}, // Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN + {0x1EE51, 0x1EE52, prN}, // Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF + {0x1EE54, 0x1EE54, prN}, // Lo ARABIC MATHEMATICAL TAILED SHEEN + {0x1EE57, 0x1EE57, prN}, // Lo ARABIC MATHEMATICAL TAILED KHAH + {0x1EE59, 0x1EE59, prN}, // Lo ARABIC MATHEMATICAL TAILED DAD + {0x1EE5B, 0x1EE5B, prN}, // Lo ARABIC MATHEMATICAL TAILED GHAIN + {0x1EE5D, 0x1EE5D, prN}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON + {0x1EE5F, 0x1EE5F, prN}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF + {0x1EE61, 0x1EE62, prN}, // Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM + {0x1EE64, 0x1EE64, prN}, // Lo ARABIC MATHEMATICAL STRETCHED HEH + {0x1EE67, 0x1EE6A, prN}, // Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF + {0x1EE6C, 0x1EE72, prN}, // Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF + {0x1EE74, 0x1EE77, prN}, // Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH + {0x1EE79, 0x1EE7C, prN}, // Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH + {0x1EE7E, 0x1EE7E, prN}, // Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH + {0x1EE80, 0x1EE89, prN}, // Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH + {0x1EE8B, 0x1EE9B, prN}, // Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN + {0x1EEA1, 0x1EEA3, prN}, // Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL + {0x1EEA5, 0x1EEA9, prN}, // Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH + {0x1EEAB, 0x1EEBB, prN}, // Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN + {0x1EEF0, 0x1EEF1, prN}, // Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL + {0x1F000, 0x1F003, prN}, // So [4] MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND + {0x1F004, 0x1F004, prW}, // So MAHJONG TILE RED DRAGON + {0x1F005, 0x1F02B, prN}, // So [39] MAHJONG TILE GREEN DRAGON..MAHJONG TILE BACK + {0x1F030, 0x1F093, prN}, // So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 + {0x1F0A0, 0x1F0AE, prN}, // So [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES + {0x1F0B1, 0x1F0BF, prN}, // So [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER + {0x1F0C1, 0x1F0CE, prN}, // So [14] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD KING OF DIAMONDS + {0x1F0CF, 0x1F0CF, prW}, // So PLAYING CARD BLACK JOKER + {0x1F0D1, 0x1F0F5, prN}, // So [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 + {0x1F100, 0x1F10A, prA}, // No [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA + {0x1F10B, 0x1F10C, prN}, // No [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO + {0x1F10D, 0x1F10F, prN}, // So [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH + {0x1F110, 0x1F12D, prA}, // So [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD + {0x1F12E, 0x1F12F, prN}, // So [2] CIRCLED WZ..COPYLEFT SYMBOL + {0x1F130, 0x1F169, prA}, // So [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z + {0x1F16A, 0x1F16F, prN}, // So [6] RAISED MC SIGN..CIRCLED HUMAN FIGURE + {0x1F170, 0x1F18D, prA}, // So [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA + {0x1F18E, 0x1F18E, prW}, // So NEGATIVE SQUARED AB + {0x1F18F, 0x1F190, prA}, // So [2] NEGATIVE SQUARED WC..SQUARE DJ + {0x1F191, 0x1F19A, prW}, // So [10] SQUARED CL..SQUARED VS + {0x1F19B, 0x1F1AC, prA}, // So [18] SQUARED THREE D..SQUARED VOD + {0x1F1AD, 0x1F1AD, prN}, // So MASK WORK SYMBOL + {0x1F1E6, 0x1F1FF, prN}, // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z + {0x1F200, 0x1F202, prW}, // So [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA + {0x1F210, 0x1F23B, prW}, // So [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D + {0x1F240, 0x1F248, prW}, // So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 + {0x1F250, 0x1F251, prW}, // So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT + {0x1F260, 0x1F265, prW}, // So [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI + {0x1F300, 0x1F320, prW}, // So [33] CYCLONE..SHOOTING STAR + {0x1F321, 0x1F32C, prN}, // So [12] THERMOMETER..WIND BLOWING FACE + {0x1F32D, 0x1F335, prW}, // So [9] HOT DOG..CACTUS + {0x1F336, 0x1F336, prN}, // So HOT PEPPER + {0x1F337, 0x1F37C, prW}, // So [70] TULIP..BABY BOTTLE + {0x1F37D, 0x1F37D, prN}, // So FORK AND KNIFE WITH PLATE + {0x1F37E, 0x1F393, prW}, // So [22] BOTTLE WITH POPPING CORK..GRADUATION CAP + {0x1F394, 0x1F39F, prN}, // So [12] HEART WITH TIP ON THE LEFT..ADMISSION TICKETS + {0x1F3A0, 0x1F3CA, prW}, // So [43] CAROUSEL HORSE..SWIMMER + {0x1F3CB, 0x1F3CE, prN}, // So [4] WEIGHT LIFTER..RACING CAR + {0x1F3CF, 0x1F3D3, prW}, // So [5] CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL + {0x1F3D4, 0x1F3DF, prN}, // So [12] SNOW CAPPED MOUNTAIN..STADIUM + {0x1F3E0, 0x1F3F0, prW}, // So [17] HOUSE BUILDING..EUROPEAN CASTLE + {0x1F3F1, 0x1F3F3, prN}, // So [3] WHITE PENNANT..WAVING WHITE FLAG + {0x1F3F4, 0x1F3F4, prW}, // So WAVING BLACK FLAG + {0x1F3F5, 0x1F3F7, prN}, // So [3] ROSETTE..LABEL + {0x1F3F8, 0x1F3FA, prW}, // So [3] BADMINTON RACQUET AND SHUTTLECOCK..AMPHORA + {0x1F3FB, 0x1F3FF, prW}, // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 + {0x1F400, 0x1F43E, prW}, // So [63] RAT..PAW PRINTS + {0x1F43F, 0x1F43F, prN}, // So CHIPMUNK + {0x1F440, 0x1F440, prW}, // So EYES + {0x1F441, 0x1F441, prN}, // So EYE + {0x1F442, 0x1F4FC, prW}, // So [187] EAR..VIDEOCASSETTE + {0x1F4FD, 0x1F4FE, prN}, // So [2] FILM PROJECTOR..PORTABLE STEREO + {0x1F4FF, 0x1F53D, prW}, // So [63] PRAYER BEADS..DOWN-POINTING SMALL RED TRIANGLE + {0x1F53E, 0x1F54A, prN}, // So [13] LOWER RIGHT SHADOWED WHITE CIRCLE..DOVE OF PEACE + {0x1F54B, 0x1F54E, prW}, // So [4] KAABA..MENORAH WITH NINE BRANCHES + {0x1F54F, 0x1F54F, prN}, // So BOWL OF HYGIEIA + {0x1F550, 0x1F567, prW}, // So [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY + {0x1F568, 0x1F579, prN}, // So [18] RIGHT SPEAKER..JOYSTICK + {0x1F57A, 0x1F57A, prW}, // So MAN DANCING + {0x1F57B, 0x1F594, prN}, // So [26] LEFT HAND TELEPHONE RECEIVER..REVERSED VICTORY HAND + {0x1F595, 0x1F596, prW}, // So [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS + {0x1F597, 0x1F5A3, prN}, // So [13] WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX + {0x1F5A4, 0x1F5A4, prW}, // So BLACK HEART + {0x1F5A5, 0x1F5FA, prN}, // So [86] DESKTOP COMPUTER..WORLD MAP + {0x1F5FB, 0x1F5FF, prW}, // So [5] MOUNT FUJI..MOYAI + {0x1F600, 0x1F64F, prW}, // So [80] GRINNING FACE..PERSON WITH FOLDED HANDS + {0x1F650, 0x1F67F, prN}, // So [48] NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD + {0x1F680, 0x1F6C5, prW}, // So [70] ROCKET..LEFT LUGGAGE + {0x1F6C6, 0x1F6CB, prN}, // So [6] TRIANGLE WITH ROUNDED CORNERS..COUCH AND LAMP + {0x1F6CC, 0x1F6CC, prW}, // So SLEEPING ACCOMMODATION + {0x1F6CD, 0x1F6CF, prN}, // So [3] SHOPPING BAGS..BED + {0x1F6D0, 0x1F6D2, prW}, // So [3] PLACE OF WORSHIP..SHOPPING TROLLEY + {0x1F6D3, 0x1F6D4, prN}, // So [2] STUPA..PAGODA + {0x1F6D5, 0x1F6D7, prW}, // So [3] HINDU TEMPLE..ELEVATOR + {0x1F6DC, 0x1F6DF, prW}, // So [4] WIRELESS..RING BUOY + {0x1F6E0, 0x1F6EA, prN}, // So [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE + {0x1F6EB, 0x1F6EC, prW}, // So [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING + {0x1F6F0, 0x1F6F3, prN}, // So [4] SATELLITE..PASSENGER SHIP + {0x1F6F4, 0x1F6FC, prW}, // So [9] SCOOTER..ROLLER SKATE + {0x1F700, 0x1F776, prN}, // So [119] ALCHEMICAL SYMBOL FOR QUINTESSENCE..LUNAR ECLIPSE + {0x1F77B, 0x1F77F, prN}, // So [5] HAUMEA..ORCUS + {0x1F780, 0x1F7D9, prN}, // So [90] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NINE POINTED WHITE STAR + {0x1F7E0, 0x1F7EB, prW}, // So [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE + {0x1F7F0, 0x1F7F0, prW}, // So HEAVY EQUALS SIGN + {0x1F800, 0x1F80B, prN}, // So [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD + {0x1F810, 0x1F847, prN}, // So [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW + {0x1F850, 0x1F859, prN}, // So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW + {0x1F860, 0x1F887, prN}, // So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW + {0x1F890, 0x1F8AD, prN}, // So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS + {0x1F8B0, 0x1F8B1, prN}, // So [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST + {0x1F900, 0x1F90B, prN}, // So [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT + {0x1F90C, 0x1F93A, prW}, // So [47] PINCHED FINGERS..FENCER + {0x1F93B, 0x1F93B, prN}, // So MODERN PENTATHLON + {0x1F93C, 0x1F945, prW}, // So [10] WRESTLERS..GOAL NET + {0x1F946, 0x1F946, prN}, // So RIFLE + {0x1F947, 0x1F9FF, prW}, // So [185] FIRST PLACE MEDAL..NAZAR AMULET + {0x1FA00, 0x1FA53, prN}, // So [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP + {0x1FA60, 0x1FA6D, prN}, // So [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER + {0x1FA70, 0x1FA7C, prW}, // So [13] BALLET SHOES..CRUTCH + {0x1FA80, 0x1FA88, prW}, // So [9] YO-YO..FLUTE + {0x1FA90, 0x1FABD, prW}, // So [46] RINGED PLANET..WING + {0x1FABF, 0x1FAC5, prW}, // So [7] GOOSE..PERSON WITH CROWN + {0x1FACE, 0x1FADB, prW}, // So [14] MOOSE..PEA POD + {0x1FAE0, 0x1FAE8, prW}, // So [9] MELTING FACE..SHAKING FACE + {0x1FAF0, 0x1FAF8, prW}, // So [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND + {0x1FB00, 0x1FB92, prN}, // So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK + {0x1FB94, 0x1FBCA, prN}, // So [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON + {0x1FBF0, 0x1FBF9, prN}, // Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE + {0x20000, 0x2A6DF, prW}, // Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF + {0x2A6E0, 0x2A6FF, prW}, // Cn [32] .. + {0x2A700, 0x2B739, prW}, // Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 + {0x2B73A, 0x2B73F, prW}, // Cn [6] .. + {0x2B740, 0x2B81D, prW}, // Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D + {0x2B81E, 0x2B81F, prW}, // Cn [2] .. + {0x2B820, 0x2CEA1, prW}, // Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 + {0x2CEA2, 0x2CEAF, prW}, // Cn [14] .. + {0x2CEB0, 0x2EBE0, prW}, // Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 + {0x2EBE1, 0x2F7FF, prW}, // Cn [3103] .. + {0x2F800, 0x2FA1D, prW}, // Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + {0x2FA1E, 0x2FA1F, prW}, // Cn [2] .. + {0x2FA20, 0x2FFFD, prW}, // Cn [1502] .. + {0x30000, 0x3134A, prW}, // Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A + {0x3134B, 0x3134F, prW}, // Cn [5] .. + {0x31350, 0x323AF, prW}, // Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF + {0x323B0, 0x3FFFD, prW}, // Cn [56398] .. + {0xE0001, 0xE0001, prN}, // Cf LANGUAGE TAG + {0xE0020, 0xE007F, prN}, // Cf [96] TAG SPACE..CANCEL TAG + {0xE0100, 0xE01EF, prA}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + {0xF0000, 0xFFFFD, prA}, // Co [65534] .. + {0x100000, 0x10FFFD, prA}, // Co [65534] .. +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/emojipresentation.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/emojipresentation.go new file mode 100644 index 0000000..9b5f499 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/emojipresentation.go @@ -0,0 +1,295 @@ +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// emojiPresentation are taken from +// +// and +// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var emojiPresentation = [][3]int{ + {0x231A, 0x231B, prEmojiPresentation}, // E0.6 [2] (⌚..⌛) watch..hourglass done + {0x23E9, 0x23EC, prEmojiPresentation}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button + {0x23F0, 0x23F0, prEmojiPresentation}, // E0.6 [1] (⏰) alarm clock + {0x23F3, 0x23F3, prEmojiPresentation}, // E0.6 [1] (⏳) hourglass not done + {0x25FD, 0x25FE, prEmojiPresentation}, // E0.6 [2] (◽..◾) white medium-small square..black medium-small square + {0x2614, 0x2615, prEmojiPresentation}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage + {0x2648, 0x2653, prEmojiPresentation}, // E0.6 [12] (♈..♓) Aries..Pisces + {0x267F, 0x267F, prEmojiPresentation}, // E0.6 [1] (♿) wheelchair symbol + {0x2693, 0x2693, prEmojiPresentation}, // E0.6 [1] (⚓) anchor + {0x26A1, 0x26A1, prEmojiPresentation}, // E0.6 [1] (⚡) high voltage + {0x26AA, 0x26AB, prEmojiPresentation}, // E0.6 [2] (⚪..⚫) white circle..black circle + {0x26BD, 0x26BE, prEmojiPresentation}, // E0.6 [2] (⚽..⚾) soccer ball..baseball + {0x26C4, 0x26C5, prEmojiPresentation}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud + {0x26CE, 0x26CE, prEmojiPresentation}, // E0.6 [1] (⛎) Ophiuchus + {0x26D4, 0x26D4, prEmojiPresentation}, // E0.6 [1] (⛔) no entry + {0x26EA, 0x26EA, prEmojiPresentation}, // E0.6 [1] (⛪) church + {0x26F2, 0x26F3, prEmojiPresentation}, // E0.6 [2] (⛲..⛳) fountain..flag in hole + {0x26F5, 0x26F5, prEmojiPresentation}, // E0.6 [1] (⛵) sailboat + {0x26FA, 0x26FA, prEmojiPresentation}, // E0.6 [1] (⛺) tent + {0x26FD, 0x26FD, prEmojiPresentation}, // E0.6 [1] (⛽) fuel pump + {0x2705, 0x2705, prEmojiPresentation}, // E0.6 [1] (✅) check mark button + {0x270A, 0x270B, prEmojiPresentation}, // E0.6 [2] (✊..✋) raised fist..raised hand + {0x2728, 0x2728, prEmojiPresentation}, // E0.6 [1] (✨) sparkles + {0x274C, 0x274C, prEmojiPresentation}, // E0.6 [1] (❌) cross mark + {0x274E, 0x274E, prEmojiPresentation}, // E0.6 [1] (❎) cross mark button + {0x2753, 0x2755, prEmojiPresentation}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark + {0x2757, 0x2757, prEmojiPresentation}, // E0.6 [1] (❗) red exclamation mark + {0x2795, 0x2797, prEmojiPresentation}, // E0.6 [3] (➕..➗) plus..divide + {0x27B0, 0x27B0, prEmojiPresentation}, // E0.6 [1] (➰) curly loop + {0x27BF, 0x27BF, prEmojiPresentation}, // E1.0 [1] (➿) double curly loop + {0x2B1B, 0x2B1C, prEmojiPresentation}, // E0.6 [2] (⬛..⬜) black large square..white large square + {0x2B50, 0x2B50, prEmojiPresentation}, // E0.6 [1] (⭐) star + {0x2B55, 0x2B55, prEmojiPresentation}, // E0.6 [1] (⭕) hollow red circle + {0x1F004, 0x1F004, prEmojiPresentation}, // E0.6 [1] (🀄) mahjong red dragon + {0x1F0CF, 0x1F0CF, prEmojiPresentation}, // E0.6 [1] (🃏) joker + {0x1F18E, 0x1F18E, prEmojiPresentation}, // E0.6 [1] (🆎) AB button (blood type) + {0x1F191, 0x1F19A, prEmojiPresentation}, // E0.6 [10] (🆑..🆚) CL button..VS button + {0x1F1E6, 0x1F1FF, prEmojiPresentation}, // E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z + {0x1F201, 0x1F201, prEmojiPresentation}, // E0.6 [1] (🈁) Japanese “here” button + {0x1F21A, 0x1F21A, prEmojiPresentation}, // E0.6 [1] (🈚) Japanese “free of charge” button + {0x1F22F, 0x1F22F, prEmojiPresentation}, // E0.6 [1] (🈯) Japanese “reserved” button + {0x1F232, 0x1F236, prEmojiPresentation}, // E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button + {0x1F238, 0x1F23A, prEmojiPresentation}, // E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button + {0x1F250, 0x1F251, prEmojiPresentation}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button + {0x1F300, 0x1F30C, prEmojiPresentation}, // E0.6 [13] (🌀..🌌) cyclone..milky way + {0x1F30D, 0x1F30E, prEmojiPresentation}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas + {0x1F30F, 0x1F30F, prEmojiPresentation}, // E0.6 [1] (🌏) globe showing Asia-Australia + {0x1F310, 0x1F310, prEmojiPresentation}, // E1.0 [1] (🌐) globe with meridians + {0x1F311, 0x1F311, prEmojiPresentation}, // E0.6 [1] (🌑) new moon + {0x1F312, 0x1F312, prEmojiPresentation}, // E1.0 [1] (🌒) waxing crescent moon + {0x1F313, 0x1F315, prEmojiPresentation}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon + {0x1F316, 0x1F318, prEmojiPresentation}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon + {0x1F319, 0x1F319, prEmojiPresentation}, // E0.6 [1] (🌙) crescent moon + {0x1F31A, 0x1F31A, prEmojiPresentation}, // E1.0 [1] (🌚) new moon face + {0x1F31B, 0x1F31B, prEmojiPresentation}, // E0.6 [1] (🌛) first quarter moon face + {0x1F31C, 0x1F31C, prEmojiPresentation}, // E0.7 [1] (🌜) last quarter moon face + {0x1F31D, 0x1F31E, prEmojiPresentation}, // E1.0 [2] (🌝..🌞) full moon face..sun with face + {0x1F31F, 0x1F320, prEmojiPresentation}, // E0.6 [2] (🌟..🌠) glowing star..shooting star + {0x1F32D, 0x1F32F, prEmojiPresentation}, // E1.0 [3] (🌭..🌯) hot dog..burrito + {0x1F330, 0x1F331, prEmojiPresentation}, // E0.6 [2] (🌰..🌱) chestnut..seedling + {0x1F332, 0x1F333, prEmojiPresentation}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree + {0x1F334, 0x1F335, prEmojiPresentation}, // E0.6 [2] (🌴..🌵) palm tree..cactus + {0x1F337, 0x1F34A, prEmojiPresentation}, // E0.6 [20] (🌷..🍊) tulip..tangerine + {0x1F34B, 0x1F34B, prEmojiPresentation}, // E1.0 [1] (🍋) lemon + {0x1F34C, 0x1F34F, prEmojiPresentation}, // E0.6 [4] (🍌..🍏) banana..green apple + {0x1F350, 0x1F350, prEmojiPresentation}, // E1.0 [1] (🍐) pear + {0x1F351, 0x1F37B, prEmojiPresentation}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs + {0x1F37C, 0x1F37C, prEmojiPresentation}, // E1.0 [1] (🍼) baby bottle + {0x1F37E, 0x1F37F, prEmojiPresentation}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn + {0x1F380, 0x1F393, prEmojiPresentation}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap + {0x1F3A0, 0x1F3C4, prEmojiPresentation}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing + {0x1F3C5, 0x1F3C5, prEmojiPresentation}, // E1.0 [1] (🏅) sports medal + {0x1F3C6, 0x1F3C6, prEmojiPresentation}, // E0.6 [1] (🏆) trophy + {0x1F3C7, 0x1F3C7, prEmojiPresentation}, // E1.0 [1] (🏇) horse racing + {0x1F3C8, 0x1F3C8, prEmojiPresentation}, // E0.6 [1] (🏈) american football + {0x1F3C9, 0x1F3C9, prEmojiPresentation}, // E1.0 [1] (🏉) rugby football + {0x1F3CA, 0x1F3CA, prEmojiPresentation}, // E0.6 [1] (🏊) person swimming + {0x1F3CF, 0x1F3D3, prEmojiPresentation}, // E1.0 [5] (🏏..🏓) cricket game..ping pong + {0x1F3E0, 0x1F3E3, prEmojiPresentation}, // E0.6 [4] (🏠..🏣) house..Japanese post office + {0x1F3E4, 0x1F3E4, prEmojiPresentation}, // E1.0 [1] (🏤) post office + {0x1F3E5, 0x1F3F0, prEmojiPresentation}, // E0.6 [12] (🏥..🏰) hospital..castle + {0x1F3F4, 0x1F3F4, prEmojiPresentation}, // E1.0 [1] (🏴) black flag + {0x1F3F8, 0x1F407, prEmojiPresentation}, // E1.0 [16] (🏸..🐇) badminton..rabbit + {0x1F408, 0x1F408, prEmojiPresentation}, // E0.7 [1] (🐈) cat + {0x1F409, 0x1F40B, prEmojiPresentation}, // E1.0 [3] (🐉..🐋) dragon..whale + {0x1F40C, 0x1F40E, prEmojiPresentation}, // E0.6 [3] (🐌..🐎) snail..horse + {0x1F40F, 0x1F410, prEmojiPresentation}, // E1.0 [2] (🐏..🐐) ram..goat + {0x1F411, 0x1F412, prEmojiPresentation}, // E0.6 [2] (🐑..🐒) ewe..monkey + {0x1F413, 0x1F413, prEmojiPresentation}, // E1.0 [1] (🐓) rooster + {0x1F414, 0x1F414, prEmojiPresentation}, // E0.6 [1] (🐔) chicken + {0x1F415, 0x1F415, prEmojiPresentation}, // E0.7 [1] (🐕) dog + {0x1F416, 0x1F416, prEmojiPresentation}, // E1.0 [1] (🐖) pig + {0x1F417, 0x1F429, prEmojiPresentation}, // E0.6 [19] (🐗..🐩) boar..poodle + {0x1F42A, 0x1F42A, prEmojiPresentation}, // E1.0 [1] (🐪) camel + {0x1F42B, 0x1F43E, prEmojiPresentation}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints + {0x1F440, 0x1F440, prEmojiPresentation}, // E0.6 [1] (👀) eyes + {0x1F442, 0x1F464, prEmojiPresentation}, // E0.6 [35] (👂..👤) ear..bust in silhouette + {0x1F465, 0x1F465, prEmojiPresentation}, // E1.0 [1] (👥) busts in silhouette + {0x1F466, 0x1F46B, prEmojiPresentation}, // E0.6 [6] (👦..👫) boy..woman and man holding hands + {0x1F46C, 0x1F46D, prEmojiPresentation}, // E1.0 [2] (👬..👭) men holding hands..women holding hands + {0x1F46E, 0x1F4AC, prEmojiPresentation}, // E0.6 [63] (👮..💬) police officer..speech balloon + {0x1F4AD, 0x1F4AD, prEmojiPresentation}, // E1.0 [1] (💭) thought balloon + {0x1F4AE, 0x1F4B5, prEmojiPresentation}, // E0.6 [8] (💮..💵) white flower..dollar banknote + {0x1F4B6, 0x1F4B7, prEmojiPresentation}, // E1.0 [2] (💶..💷) euro banknote..pound banknote + {0x1F4B8, 0x1F4EB, prEmojiPresentation}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag + {0x1F4EC, 0x1F4ED, prEmojiPresentation}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag + {0x1F4EE, 0x1F4EE, prEmojiPresentation}, // E0.6 [1] (📮) postbox + {0x1F4EF, 0x1F4EF, prEmojiPresentation}, // E1.0 [1] (📯) postal horn + {0x1F4F0, 0x1F4F4, prEmojiPresentation}, // E0.6 [5] (📰..📴) newspaper..mobile phone off + {0x1F4F5, 0x1F4F5, prEmojiPresentation}, // E1.0 [1] (📵) no mobile phones + {0x1F4F6, 0x1F4F7, prEmojiPresentation}, // E0.6 [2] (📶..📷) antenna bars..camera + {0x1F4F8, 0x1F4F8, prEmojiPresentation}, // E1.0 [1] (📸) camera with flash + {0x1F4F9, 0x1F4FC, prEmojiPresentation}, // E0.6 [4] (📹..📼) video camera..videocassette + {0x1F4FF, 0x1F502, prEmojiPresentation}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button + {0x1F503, 0x1F503, prEmojiPresentation}, // E0.6 [1] (🔃) clockwise vertical arrows + {0x1F504, 0x1F507, prEmojiPresentation}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker + {0x1F508, 0x1F508, prEmojiPresentation}, // E0.7 [1] (🔈) speaker low volume + {0x1F509, 0x1F509, prEmojiPresentation}, // E1.0 [1] (🔉) speaker medium volume + {0x1F50A, 0x1F514, prEmojiPresentation}, // E0.6 [11] (🔊..🔔) speaker high volume..bell + {0x1F515, 0x1F515, prEmojiPresentation}, // E1.0 [1] (🔕) bell with slash + {0x1F516, 0x1F52B, prEmojiPresentation}, // E0.6 [22] (🔖..🔫) bookmark..water pistol + {0x1F52C, 0x1F52D, prEmojiPresentation}, // E1.0 [2] (🔬..🔭) microscope..telescope + {0x1F52E, 0x1F53D, prEmojiPresentation}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button + {0x1F54B, 0x1F54E, prEmojiPresentation}, // E1.0 [4] (🕋..🕎) kaaba..menorah + {0x1F550, 0x1F55B, prEmojiPresentation}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock + {0x1F55C, 0x1F567, prEmojiPresentation}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty + {0x1F57A, 0x1F57A, prEmojiPresentation}, // E3.0 [1] (🕺) man dancing + {0x1F595, 0x1F596, prEmojiPresentation}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute + {0x1F5A4, 0x1F5A4, prEmojiPresentation}, // E3.0 [1] (🖤) black heart + {0x1F5FB, 0x1F5FF, prEmojiPresentation}, // E0.6 [5] (🗻..🗿) mount fuji..moai + {0x1F600, 0x1F600, prEmojiPresentation}, // E1.0 [1] (😀) grinning face + {0x1F601, 0x1F606, prEmojiPresentation}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face + {0x1F607, 0x1F608, prEmojiPresentation}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns + {0x1F609, 0x1F60D, prEmojiPresentation}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes + {0x1F60E, 0x1F60E, prEmojiPresentation}, // E1.0 [1] (😎) smiling face with sunglasses + {0x1F60F, 0x1F60F, prEmojiPresentation}, // E0.6 [1] (😏) smirking face + {0x1F610, 0x1F610, prEmojiPresentation}, // E0.7 [1] (😐) neutral face + {0x1F611, 0x1F611, prEmojiPresentation}, // E1.0 [1] (😑) expressionless face + {0x1F612, 0x1F614, prEmojiPresentation}, // E0.6 [3] (😒..😔) unamused face..pensive face + {0x1F615, 0x1F615, prEmojiPresentation}, // E1.0 [1] (😕) confused face + {0x1F616, 0x1F616, prEmojiPresentation}, // E0.6 [1] (😖) confounded face + {0x1F617, 0x1F617, prEmojiPresentation}, // E1.0 [1] (😗) kissing face + {0x1F618, 0x1F618, prEmojiPresentation}, // E0.6 [1] (😘) face blowing a kiss + {0x1F619, 0x1F619, prEmojiPresentation}, // E1.0 [1] (😙) kissing face with smiling eyes + {0x1F61A, 0x1F61A, prEmojiPresentation}, // E0.6 [1] (😚) kissing face with closed eyes + {0x1F61B, 0x1F61B, prEmojiPresentation}, // E1.0 [1] (😛) face with tongue + {0x1F61C, 0x1F61E, prEmojiPresentation}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face + {0x1F61F, 0x1F61F, prEmojiPresentation}, // E1.0 [1] (😟) worried face + {0x1F620, 0x1F625, prEmojiPresentation}, // E0.6 [6] (😠..😥) angry face..sad but relieved face + {0x1F626, 0x1F627, prEmojiPresentation}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face + {0x1F628, 0x1F62B, prEmojiPresentation}, // E0.6 [4] (😨..😫) fearful face..tired face + {0x1F62C, 0x1F62C, prEmojiPresentation}, // E1.0 [1] (😬) grimacing face + {0x1F62D, 0x1F62D, prEmojiPresentation}, // E0.6 [1] (😭) loudly crying face + {0x1F62E, 0x1F62F, prEmojiPresentation}, // E1.0 [2] (😮..😯) face with open mouth..hushed face + {0x1F630, 0x1F633, prEmojiPresentation}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face + {0x1F634, 0x1F634, prEmojiPresentation}, // E1.0 [1] (😴) sleeping face + {0x1F635, 0x1F635, prEmojiPresentation}, // E0.6 [1] (😵) face with crossed-out eyes + {0x1F636, 0x1F636, prEmojiPresentation}, // E1.0 [1] (😶) face without mouth + {0x1F637, 0x1F640, prEmojiPresentation}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat + {0x1F641, 0x1F644, prEmojiPresentation}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes + {0x1F645, 0x1F64F, prEmojiPresentation}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands + {0x1F680, 0x1F680, prEmojiPresentation}, // E0.6 [1] (🚀) rocket + {0x1F681, 0x1F682, prEmojiPresentation}, // E1.0 [2] (🚁..🚂) helicopter..locomotive + {0x1F683, 0x1F685, prEmojiPresentation}, // E0.6 [3] (🚃..🚅) railway car..bullet train + {0x1F686, 0x1F686, prEmojiPresentation}, // E1.0 [1] (🚆) train + {0x1F687, 0x1F687, prEmojiPresentation}, // E0.6 [1] (🚇) metro + {0x1F688, 0x1F688, prEmojiPresentation}, // E1.0 [1] (🚈) light rail + {0x1F689, 0x1F689, prEmojiPresentation}, // E0.6 [1] (🚉) station + {0x1F68A, 0x1F68B, prEmojiPresentation}, // E1.0 [2] (🚊..🚋) tram..tram car + {0x1F68C, 0x1F68C, prEmojiPresentation}, // E0.6 [1] (🚌) bus + {0x1F68D, 0x1F68D, prEmojiPresentation}, // E0.7 [1] (🚍) oncoming bus + {0x1F68E, 0x1F68E, prEmojiPresentation}, // E1.0 [1] (🚎) trolleybus + {0x1F68F, 0x1F68F, prEmojiPresentation}, // E0.6 [1] (🚏) bus stop + {0x1F690, 0x1F690, prEmojiPresentation}, // E1.0 [1] (🚐) minibus + {0x1F691, 0x1F693, prEmojiPresentation}, // E0.6 [3] (🚑..🚓) ambulance..police car + {0x1F694, 0x1F694, prEmojiPresentation}, // E0.7 [1] (🚔) oncoming police car + {0x1F695, 0x1F695, prEmojiPresentation}, // E0.6 [1] (🚕) taxi + {0x1F696, 0x1F696, prEmojiPresentation}, // E1.0 [1] (🚖) oncoming taxi + {0x1F697, 0x1F697, prEmojiPresentation}, // E0.6 [1] (🚗) automobile + {0x1F698, 0x1F698, prEmojiPresentation}, // E0.7 [1] (🚘) oncoming automobile + {0x1F699, 0x1F69A, prEmojiPresentation}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck + {0x1F69B, 0x1F6A1, prEmojiPresentation}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway + {0x1F6A2, 0x1F6A2, prEmojiPresentation}, // E0.6 [1] (🚢) ship + {0x1F6A3, 0x1F6A3, prEmojiPresentation}, // E1.0 [1] (🚣) person rowing boat + {0x1F6A4, 0x1F6A5, prEmojiPresentation}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light + {0x1F6A6, 0x1F6A6, prEmojiPresentation}, // E1.0 [1] (🚦) vertical traffic light + {0x1F6A7, 0x1F6AD, prEmojiPresentation}, // E0.6 [7] (🚧..🚭) construction..no smoking + {0x1F6AE, 0x1F6B1, prEmojiPresentation}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water + {0x1F6B2, 0x1F6B2, prEmojiPresentation}, // E0.6 [1] (🚲) bicycle + {0x1F6B3, 0x1F6B5, prEmojiPresentation}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking + {0x1F6B6, 0x1F6B6, prEmojiPresentation}, // E0.6 [1] (🚶) person walking + {0x1F6B7, 0x1F6B8, prEmojiPresentation}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing + {0x1F6B9, 0x1F6BE, prEmojiPresentation}, // E0.6 [6] (🚹..🚾) men’s room..water closet + {0x1F6BF, 0x1F6BF, prEmojiPresentation}, // E1.0 [1] (🚿) shower + {0x1F6C0, 0x1F6C0, prEmojiPresentation}, // E0.6 [1] (🛀) person taking bath + {0x1F6C1, 0x1F6C5, prEmojiPresentation}, // E1.0 [5] (🛁..🛅) bathtub..left luggage + {0x1F6CC, 0x1F6CC, prEmojiPresentation}, // E1.0 [1] (🛌) person in bed + {0x1F6D0, 0x1F6D0, prEmojiPresentation}, // E1.0 [1] (🛐) place of worship + {0x1F6D1, 0x1F6D2, prEmojiPresentation}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart + {0x1F6D5, 0x1F6D5, prEmojiPresentation}, // E12.0 [1] (🛕) hindu temple + {0x1F6D6, 0x1F6D7, prEmojiPresentation}, // E13.0 [2] (🛖..🛗) hut..elevator + {0x1F6DC, 0x1F6DC, prEmojiPresentation}, // E15.0 [1] (🛜) wireless + {0x1F6DD, 0x1F6DF, prEmojiPresentation}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy + {0x1F6EB, 0x1F6EC, prEmojiPresentation}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival + {0x1F6F4, 0x1F6F6, prEmojiPresentation}, // E3.0 [3] (🛴..🛶) kick scooter..canoe + {0x1F6F7, 0x1F6F8, prEmojiPresentation}, // E5.0 [2] (🛷..🛸) sled..flying saucer + {0x1F6F9, 0x1F6F9, prEmojiPresentation}, // E11.0 [1] (🛹) skateboard + {0x1F6FA, 0x1F6FA, prEmojiPresentation}, // E12.0 [1] (🛺) auto rickshaw + {0x1F6FB, 0x1F6FC, prEmojiPresentation}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate + {0x1F7E0, 0x1F7EB, prEmojiPresentation}, // E12.0 [12] (🟠..🟫) orange circle..brown square + {0x1F7F0, 0x1F7F0, prEmojiPresentation}, // E14.0 [1] (🟰) heavy equals sign + {0x1F90C, 0x1F90C, prEmojiPresentation}, // E13.0 [1] (🤌) pinched fingers + {0x1F90D, 0x1F90F, prEmojiPresentation}, // E12.0 [3] (🤍..🤏) white heart..pinching hand + {0x1F910, 0x1F918, prEmojiPresentation}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns + {0x1F919, 0x1F91E, prEmojiPresentation}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers + {0x1F91F, 0x1F91F, prEmojiPresentation}, // E5.0 [1] (🤟) love-you gesture + {0x1F920, 0x1F927, prEmojiPresentation}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face + {0x1F928, 0x1F92F, prEmojiPresentation}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head + {0x1F930, 0x1F930, prEmojiPresentation}, // E3.0 [1] (🤰) pregnant woman + {0x1F931, 0x1F932, prEmojiPresentation}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together + {0x1F933, 0x1F93A, prEmojiPresentation}, // E3.0 [8] (🤳..🤺) selfie..person fencing + {0x1F93C, 0x1F93E, prEmojiPresentation}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball + {0x1F93F, 0x1F93F, prEmojiPresentation}, // E12.0 [1] (🤿) diving mask + {0x1F940, 0x1F945, prEmojiPresentation}, // E3.0 [6] (🥀..🥅) wilted flower..goal net + {0x1F947, 0x1F94B, prEmojiPresentation}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform + {0x1F94C, 0x1F94C, prEmojiPresentation}, // E5.0 [1] (🥌) curling stone + {0x1F94D, 0x1F94F, prEmojiPresentation}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc + {0x1F950, 0x1F95E, prEmojiPresentation}, // E3.0 [15] (🥐..🥞) croissant..pancakes + {0x1F95F, 0x1F96B, prEmojiPresentation}, // E5.0 [13] (🥟..🥫) dumpling..canned food + {0x1F96C, 0x1F970, prEmojiPresentation}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts + {0x1F971, 0x1F971, prEmojiPresentation}, // E12.0 [1] (🥱) yawning face + {0x1F972, 0x1F972, prEmojiPresentation}, // E13.0 [1] (🥲) smiling face with tear + {0x1F973, 0x1F976, prEmojiPresentation}, // E11.0 [4] (🥳..🥶) partying face..cold face + {0x1F977, 0x1F978, prEmojiPresentation}, // E13.0 [2] (🥷..🥸) ninja..disguised face + {0x1F979, 0x1F979, prEmojiPresentation}, // E14.0 [1] (🥹) face holding back tears + {0x1F97A, 0x1F97A, prEmojiPresentation}, // E11.0 [1] (🥺) pleading face + {0x1F97B, 0x1F97B, prEmojiPresentation}, // E12.0 [1] (🥻) sari + {0x1F97C, 0x1F97F, prEmojiPresentation}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe + {0x1F980, 0x1F984, prEmojiPresentation}, // E1.0 [5] (🦀..🦄) crab..unicorn + {0x1F985, 0x1F991, prEmojiPresentation}, // E3.0 [13] (🦅..🦑) eagle..squid + {0x1F992, 0x1F997, prEmojiPresentation}, // E5.0 [6] (🦒..🦗) giraffe..cricket + {0x1F998, 0x1F9A2, prEmojiPresentation}, // E11.0 [11] (🦘..🦢) kangaroo..swan + {0x1F9A3, 0x1F9A4, prEmojiPresentation}, // E13.0 [2] (🦣..🦤) mammoth..dodo + {0x1F9A5, 0x1F9AA, prEmojiPresentation}, // E12.0 [6] (🦥..🦪) sloth..oyster + {0x1F9AB, 0x1F9AD, prEmojiPresentation}, // E13.0 [3] (🦫..🦭) beaver..seal + {0x1F9AE, 0x1F9AF, prEmojiPresentation}, // E12.0 [2] (🦮..🦯) guide dog..white cane + {0x1F9B0, 0x1F9B9, prEmojiPresentation}, // E11.0 [10] (🦰..🦹) red hair..supervillain + {0x1F9BA, 0x1F9BF, prEmojiPresentation}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg + {0x1F9C0, 0x1F9C0, prEmojiPresentation}, // E1.0 [1] (🧀) cheese wedge + {0x1F9C1, 0x1F9C2, prEmojiPresentation}, // E11.0 [2] (🧁..🧂) cupcake..salt + {0x1F9C3, 0x1F9CA, prEmojiPresentation}, // E12.0 [8] (🧃..🧊) beverage box..ice + {0x1F9CB, 0x1F9CB, prEmojiPresentation}, // E13.0 [1] (🧋) bubble tea + {0x1F9CC, 0x1F9CC, prEmojiPresentation}, // E14.0 [1] (🧌) troll + {0x1F9CD, 0x1F9CF, prEmojiPresentation}, // E12.0 [3] (🧍..🧏) person standing..deaf person + {0x1F9D0, 0x1F9E6, prEmojiPresentation}, // E5.0 [23] (🧐..🧦) face with monocle..socks + {0x1F9E7, 0x1F9FF, prEmojiPresentation}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet + {0x1FA70, 0x1FA73, prEmojiPresentation}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts + {0x1FA74, 0x1FA74, prEmojiPresentation}, // E13.0 [1] (🩴) thong sandal + {0x1FA75, 0x1FA77, prEmojiPresentation}, // E15.0 [3] (🩵..🩷) light blue heart..pink heart + {0x1FA78, 0x1FA7A, prEmojiPresentation}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope + {0x1FA7B, 0x1FA7C, prEmojiPresentation}, // E14.0 [2] (🩻..🩼) x-ray..crutch + {0x1FA80, 0x1FA82, prEmojiPresentation}, // E12.0 [3] (🪀..🪂) yo-yo..parachute + {0x1FA83, 0x1FA86, prEmojiPresentation}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls + {0x1FA87, 0x1FA88, prEmojiPresentation}, // E15.0 [2] (🪇..🪈) maracas..flute + {0x1FA90, 0x1FA95, prEmojiPresentation}, // E12.0 [6] (🪐..🪕) ringed planet..banjo + {0x1FA96, 0x1FAA8, prEmojiPresentation}, // E13.0 [19] (🪖..🪨) military helmet..rock + {0x1FAA9, 0x1FAAC, prEmojiPresentation}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa + {0x1FAAD, 0x1FAAF, prEmojiPresentation}, // E15.0 [3] (🪭..🪯) folding hand fan..khanda + {0x1FAB0, 0x1FAB6, prEmojiPresentation}, // E13.0 [7] (🪰..🪶) fly..feather + {0x1FAB7, 0x1FABA, prEmojiPresentation}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs + {0x1FABB, 0x1FABD, prEmojiPresentation}, // E15.0 [3] (🪻..🪽) hyacinth..wing + {0x1FABF, 0x1FABF, prEmojiPresentation}, // E15.0 [1] (🪿) goose + {0x1FAC0, 0x1FAC2, prEmojiPresentation}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging + {0x1FAC3, 0x1FAC5, prEmojiPresentation}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown + {0x1FACE, 0x1FACF, prEmojiPresentation}, // E15.0 [2] (🫎..🫏) moose..donkey + {0x1FAD0, 0x1FAD6, prEmojiPresentation}, // E13.0 [7] (🫐..🫖) blueberries..teapot + {0x1FAD7, 0x1FAD9, prEmojiPresentation}, // E14.0 [3] (🫗..🫙) pouring liquid..jar + {0x1FADA, 0x1FADB, prEmojiPresentation}, // E15.0 [2] (🫚..🫛) ginger root..pea pod + {0x1FAE0, 0x1FAE7, prEmojiPresentation}, // E14.0 [8] (🫠..🫧) melting face..bubbles + {0x1FAE8, 0x1FAE8, prEmojiPresentation}, // E15.0 [1] (🫨) shaking face + {0x1FAF0, 0x1FAF6, prEmojiPresentation}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands + {0x1FAF7, 0x1FAF8, prEmojiPresentation}, // E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_breaktest.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_breaktest.go new file mode 100644 index 0000000..6bfbeb5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_breaktest.go @@ -0,0 +1,215 @@ +//go:build generate + +// This program generates a Go containing a slice of test cases based on the +// Unicode Character Database auxiliary data files. The command line arguments +// are as follows: +// +// 1. The name of the Unicode data file (just the filename, without extension). +// 2. The name of the locally generated Go file. +// 3. The name of the slice containing the test cases. +// 4. The name of the generator, for logging purposes. +// +//go:generate go run gen_breaktest.go GraphemeBreakTest graphemebreak_test.go graphemeBreakTestCases graphemes +//go:generate go run gen_breaktest.go WordBreakTest wordbreak_test.go wordBreakTestCases words +//go:generate go run gen_breaktest.go SentenceBreakTest sentencebreak_test.go sentenceBreakTestCases sentences +//go:generate go run gen_breaktest.go LineBreakTest linebreak_test.go lineBreakTestCases lines + +package main + +import ( + "bufio" + "bytes" + "errors" + "fmt" + "go/format" + "io/ioutil" + "log" + "net/http" + "os" + "time" +) + +// We want to test against a specific version rather than the latest. When the +// package is upgraded to a new version, change these to generate new tests. +const ( + testCaseURL = `https://www.unicode.org/Public/15.0.0/ucd/auxiliary/%s.txt` +) + +func main() { + if len(os.Args) < 5 { + fmt.Println("Not enough arguments, see code for details") + os.Exit(1) + } + + log.SetPrefix("gen_breaktest (" + os.Args[4] + "): ") + log.SetFlags(0) + + // Read text of testcases and parse into Go source code. + src, err := parse(fmt.Sprintf(testCaseURL, os.Args[1])) + if err != nil { + log.Fatal(err) + } + + // Format the Go code. + formatted, err := format.Source(src) + if err != nil { + log.Fatalln("gofmt:", err) + } + + // Write it out. + log.Print("Writing to ", os.Args[2]) + if err := ioutil.WriteFile(os.Args[2], formatted, 0644); err != nil { + log.Fatal(err) + } +} + +// parse reads a break text file, either from a local file or from a URL. It +// parses the file data into Go source code representing the test cases. +func parse(url string) ([]byte, error) { + log.Printf("Parsing %s", url) + res, err := http.Get(url) + if err != nil { + return nil, err + } + body := res.Body + defer body.Close() + + buf := new(bytes.Buffer) + buf.Grow(120 << 10) + buf.WriteString(`// Code generated via go generate from gen_breaktest.go. DO NOT EDIT. + +package uniseg + +// ` + os.Args[3] + ` are Grapheme testcases taken from +// ` + url + ` +// on ` + time.Now().Format("January 2, 2006") + `. See +// https://www.unicode.org/license.html for the Unicode license agreement. +var ` + os.Args[3] + ` = []testCase { +`) + + sc := bufio.NewScanner(body) + num := 1 + var line []byte + original := make([]byte, 0, 64) + expected := make([]byte, 0, 64) + for sc.Scan() { + num++ + line = sc.Bytes() + if len(line) == 0 || line[0] == '#' { + continue + } + var comment []byte + if i := bytes.IndexByte(line, '#'); i >= 0 { + comment = bytes.TrimSpace(line[i+1:]) + line = bytes.TrimSpace(line[:i]) + } + original, expected, err := parseRuneSequence(line, original[:0], expected[:0]) + if err != nil { + return nil, fmt.Errorf(`line %d: %v: %q`, num, err, line) + } + fmt.Fprintf(buf, "\t{original: \"%s\", expected: %s}, // %s\n", original, expected, comment) + } + if err := sc.Err(); err != nil { + return nil, err + } + + // Check for final "# EOF", useful check if we're streaming via HTTP + if !bytes.Equal(line, []byte("# EOF")) { + return nil, fmt.Errorf(`line %d: exected "# EOF" as final line, got %q`, num, line) + } + buf.WriteString("}\n") + return buf.Bytes(), nil +} + +// Used by parseRuneSequence to match input via bytes.HasPrefix. +var ( + prefixBreak = []byte("÷ ") + prefixDontBreak = []byte("× ") + breakOk = []byte("÷") + breakNo = []byte("×") +) + +// parseRuneSequence parses a rune + breaking opportunity sequence from b +// and appends the Go code for testcase.original to orig +// and appends the Go code for testcase.expected to exp. +// It retuns the new orig and exp slices. +// +// E.g. for the input b="÷ 0020 × 0308 ÷ 1F1E6 ÷" +// it will append +// +// "\u0020\u0308\U0001F1E6" +// +// and "[][]rune{{0x0020,0x0308},{0x1F1E6},}" +// to orig and exp respectively. +// +// The formatting of exp is expected to be cleaned up by gofmt or format.Source. +// Note we explicitly require the sequence to start with ÷ and we implicitly +// require it to end with ÷. +func parseRuneSequence(b, orig, exp []byte) ([]byte, []byte, error) { + // Check for and remove first ÷ or ×. + if !bytes.HasPrefix(b, prefixBreak) && !bytes.HasPrefix(b, prefixDontBreak) { + return nil, nil, errors.New("expected ÷ or × as first character") + } + if bytes.HasPrefix(b, prefixBreak) { + b = b[len(prefixBreak):] + } else { + b = b[len(prefixDontBreak):] + } + + boundary := true + exp = append(exp, "[][]rune{"...) + for len(b) > 0 { + if boundary { + exp = append(exp, '{') + } + exp = append(exp, "0x"...) + // Find end of hex digits. + var i int + for i = 0; i < len(b) && b[i] != ' '; i++ { + if d := b[i]; ('0' <= d || d <= '9') || + ('A' <= d || d <= 'F') || + ('a' <= d || d <= 'f') { + continue + } + return nil, nil, errors.New("bad hex digit") + } + switch i { + case 4: + orig = append(orig, "\\u"...) + case 5: + orig = append(orig, "\\U000"...) + default: + return nil, nil, errors.New("unsupport code point hex length") + } + orig = append(orig, b[:i]...) + exp = append(exp, b[:i]...) + b = b[i:] + + // Check for space between hex and ÷ or ×. + if len(b) < 1 || b[0] != ' ' { + return nil, nil, errors.New("bad input") + } + b = b[1:] + + // Check for next boundary. + switch { + case bytes.HasPrefix(b, breakOk): + boundary = true + b = b[len(breakOk):] + case bytes.HasPrefix(b, breakNo): + boundary = false + b = b[len(breakNo):] + default: + return nil, nil, errors.New("missing ÷ or ×") + } + if boundary { + exp = append(exp, '}') + } + exp = append(exp, ',') + if len(b) > 0 && b[0] == ' ' { + b = b[1:] + } + } + exp = append(exp, '}') + return orig, exp, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_properties.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_properties.go new file mode 100644 index 0000000..8992d2c --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/gen_properties.go @@ -0,0 +1,261 @@ +//go:build generate + +// This program generates a property file in Go file from Unicode Character +// Database auxiliary data files. The command line arguments are as follows: +// +// 1. The name of the Unicode data file (just the filename, without extension). +// Can be "-" (to skip) if the emoji flag is included. +// 2. The name of the locally generated Go file. +// 3. The name of the slice mapping code points to properties. +// 4. The name of the generator, for logging purposes. +// 5. (Optional) Flags, comma-separated. The following flags are available: +// - "emojis=": include the specified emoji properties (e.g. +// "Extended_Pictographic"). +// - "gencat": include general category properties. +// +//go:generate go run gen_properties.go auxiliary/GraphemeBreakProperty graphemeproperties.go graphemeCodePoints graphemes emojis=Extended_Pictographic +//go:generate go run gen_properties.go auxiliary/WordBreakProperty wordproperties.go workBreakCodePoints words emojis=Extended_Pictographic +//go:generate go run gen_properties.go auxiliary/SentenceBreakProperty sentenceproperties.go sentenceBreakCodePoints sentences +//go:generate go run gen_properties.go LineBreak lineproperties.go lineBreakCodePoints lines gencat +//go:generate go run gen_properties.go EastAsianWidth eastasianwidth.go eastAsianWidth eastasianwidth +//go:generate go run gen_properties.go - emojipresentation.go emojiPresentation emojipresentation emojis=Emoji_Presentation +package main + +import ( + "bufio" + "bytes" + "errors" + "fmt" + "go/format" + "io/ioutil" + "log" + "net/http" + "os" + "regexp" + "sort" + "strconv" + "strings" + "time" +) + +// We want to test against a specific version rather than the latest. When the +// package is upgraded to a new version, change these to generate new tests. +const ( + propertyURL = `https://www.unicode.org/Public/15.0.0/ucd/%s.txt` + emojiURL = `https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt` +) + +// The regular expression for a line containing a code point range property. +var propertyPattern = regexp.MustCompile(`^([0-9A-F]{4,6})(\.\.([0-9A-F]{4,6}))?\s*;\s*([A-Za-z0-9_]+)\s*#\s(.+)$`) + +func main() { + if len(os.Args) < 5 { + fmt.Println("Not enough arguments, see code for details") + os.Exit(1) + } + + log.SetPrefix("gen_properties (" + os.Args[4] + "): ") + log.SetFlags(0) + + // Parse flags. + flags := make(map[string]string) + if len(os.Args) >= 6 { + for _, flag := range strings.Split(os.Args[5], ",") { + flagFields := strings.Split(flag, "=") + if len(flagFields) == 1 { + flags[flagFields[0]] = "yes" + } else { + flags[flagFields[0]] = flagFields[1] + } + } + } + + // Parse the text file and generate Go source code from it. + _, includeGeneralCategory := flags["gencat"] + var mainURL string + if os.Args[1] != "-" { + mainURL = fmt.Sprintf(propertyURL, os.Args[1]) + } + src, err := parse(mainURL, flags["emojis"], includeGeneralCategory) + if err != nil { + log.Fatal(err) + } + + // Format the Go code. + formatted, err := format.Source([]byte(src)) + if err != nil { + log.Fatal("gofmt:", err) + } + + // Save it to the (local) target file. + log.Print("Writing to ", os.Args[2]) + if err := ioutil.WriteFile(os.Args[2], formatted, 0644); err != nil { + log.Fatal(err) + } +} + +// parse parses the Unicode Properties text files located at the given URLs and +// returns their equivalent Go source code to be used in the uniseg package. If +// "emojiProperty" is not an empty string, emoji code points for that emoji +// property (e.g. "Extended_Pictographic") will be included. In those cases, you +// may pass an empty "propertyURL" to skip parsing the main properties file. If +// "includeGeneralCategory" is true, the Unicode General Category property will +// be extracted from the comments and included in the output. +func parse(propertyURL, emojiProperty string, includeGeneralCategory bool) (string, error) { + if propertyURL == "" && emojiProperty == "" { + return "", errors.New("no properties to parse") + } + + // Temporary buffer to hold properties. + var properties [][4]string + + // Open the first URL. + if propertyURL != "" { + log.Printf("Parsing %s", propertyURL) + res, err := http.Get(propertyURL) + if err != nil { + return "", err + } + in1 := res.Body + defer in1.Close() + + // Parse it. + scanner := bufio.NewScanner(in1) + num := 0 + for scanner.Scan() { + num++ + line := strings.TrimSpace(scanner.Text()) + + // Skip comments and empty lines. + if strings.HasPrefix(line, "#") || line == "" { + continue + } + + // Everything else must be a code point range, a property and a comment. + from, to, property, comment, err := parseProperty(line) + if err != nil { + return "", fmt.Errorf("%s line %d: %v", os.Args[4], num, err) + } + properties = append(properties, [4]string{from, to, property, comment}) + } + if err := scanner.Err(); err != nil { + return "", err + } + } + + // Open the second URL. + if emojiProperty != "" { + log.Printf("Parsing %s", emojiURL) + res, err := http.Get(emojiURL) + if err != nil { + return "", err + } + in2 := res.Body + defer in2.Close() + + // Parse it. + scanner := bufio.NewScanner(in2) + num := 0 + for scanner.Scan() { + num++ + line := scanner.Text() + + // Skip comments, empty lines, and everything not containing + // "Extended_Pictographic". + if strings.HasPrefix(line, "#") || line == "" || !strings.Contains(line, emojiProperty) { + continue + } + + // Everything else must be a code point range, a property and a comment. + from, to, property, comment, err := parseProperty(line) + if err != nil { + return "", fmt.Errorf("emojis line %d: %v", num, err) + } + properties = append(properties, [4]string{from, to, property, comment}) + } + if err := scanner.Err(); err != nil { + return "", err + } + } + + // Avoid overflow during binary search. + if len(properties) >= 1<<31 { + return "", errors.New("too many properties") + } + + // Sort properties. + sort.Slice(properties, func(i, j int) bool { + left, _ := strconv.ParseUint(properties[i][0], 16, 64) + right, _ := strconv.ParseUint(properties[j][0], 16, 64) + return left < right + }) + + // Header. + var ( + buf bytes.Buffer + emojiComment string + ) + columns := 3 + if includeGeneralCategory { + columns = 4 + } + if emojiURL != "" { + emojiComment = ` +// and +// ` + emojiURL + ` +// ("Extended_Pictographic" only)` + } + buf.WriteString(`// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// ` + os.Args[3] + ` are taken from +// ` + propertyURL + emojiComment + ` +// on ` + time.Now().Format("January 2, 2006") + `. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var ` + os.Args[3] + ` = [][` + strconv.Itoa(columns) + `]int{ + `) + + // Properties. + for _, prop := range properties { + if includeGeneralCategory { + generalCategory := "gc" + prop[3][:2] + if generalCategory == "gcL&" { + generalCategory = "gcLC" + } + prop[3] = prop[3][3:] + fmt.Fprintf(&buf, "{0x%s,0x%s,%s,%s}, // %s\n", prop[0], prop[1], translateProperty("pr", prop[2]), generalCategory, prop[3]) + } else { + fmt.Fprintf(&buf, "{0x%s,0x%s,%s}, // %s\n", prop[0], prop[1], translateProperty("pr", prop[2]), prop[3]) + } + } + + // Tail. + buf.WriteString("}") + + return buf.String(), nil +} + +// parseProperty parses a line of the Unicode properties text file containing a +// property for a code point range and returns it along with its comment. +func parseProperty(line string) (from, to, property, comment string, err error) { + fields := propertyPattern.FindStringSubmatch(line) + if fields == nil { + err = errors.New("no property found") + return + } + from = fields[1] + to = fields[3] + if to == "" { + to = from + } + property = fields[4] + comment = fields[5] + return +} + +// translateProperty translates a property name as used in the Unicode data file +// to a variable used in the Go code. +func translateProperty(prefix, property string) string { + return prefix + strings.ReplaceAll(property, "_", "") +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/grapheme.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/grapheme.go new file mode 100644 index 0000000..b12403d --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/grapheme.go @@ -0,0 +1,331 @@ +package uniseg + +import "unicode/utf8" + +// Graphemes implements an iterator over Unicode grapheme clusters, or +// user-perceived characters. While iterating, it also provides information +// about word boundaries, sentence boundaries, line breaks, and monospace +// character widths. +// +// After constructing the class via [NewGraphemes] for a given string "str", +// [Graphemes.Next] is called for every grapheme cluster in a loop until it +// returns false. Inside the loop, information about the grapheme cluster as +// well as boundary information and character width is available via the various +// methods (see examples below). +// +// This class basically wraps the [StepString] parser and provides a convenient +// interface to it. If you are only interested in some parts of this package's +// functionality, using the specialized functions starting with "First" is +// almost always faster. +type Graphemes struct { + // The original string. + original string + + // The remaining string to be parsed. + remaining string + + // The current grapheme cluster. + cluster string + + // The byte offset of the current grapheme cluster relative to the original + // string. + offset int + + // The current boundary information of the [Step] parser. + boundaries int + + // The current state of the [Step] parser. + state int +} + +// NewGraphemes returns a new grapheme cluster iterator. +func NewGraphemes(str string) *Graphemes { + return &Graphemes{ + original: str, + remaining: str, + state: -1, + } +} + +// Next advances the iterator by one grapheme cluster and returns false if no +// clusters are left. This function must be called before the first cluster is +// accessed. +func (g *Graphemes) Next() bool { + if len(g.remaining) == 0 { + // We're already past the end. + g.state = -2 + g.cluster = "" + return false + } + g.offset += len(g.cluster) + g.cluster, g.remaining, g.boundaries, g.state = StepString(g.remaining, g.state) + return true +} + +// Runes returns a slice of runes (code points) which corresponds to the current +// grapheme cluster. If the iterator is already past the end or [Graphemes.Next] +// has not yet been called, nil is returned. +func (g *Graphemes) Runes() []rune { + if g.state < 0 { + return nil + } + return []rune(g.cluster) +} + +// Str returns a substring of the original string which corresponds to the +// current grapheme cluster. If the iterator is already past the end or +// [Graphemes.Next] has not yet been called, an empty string is returned. +func (g *Graphemes) Str() string { + return g.cluster +} + +// Bytes returns a byte slice which corresponds to the current grapheme cluster. +// If the iterator is already past the end or [Graphemes.Next] has not yet been +// called, nil is returned. +func (g *Graphemes) Bytes() []byte { + if g.state < 0 { + return nil + } + return []byte(g.cluster) +} + +// Positions returns the interval of the current grapheme cluster as byte +// positions into the original string. The first returned value "from" indexes +// the first byte and the second returned value "to" indexes the first byte that +// is not included anymore, i.e. str[from:to] is the current grapheme cluster of +// the original string "str". If [Graphemes.Next] has not yet been called, both +// values are 0. If the iterator is already past the end, both values are 1. +func (g *Graphemes) Positions() (int, int) { + if g.state == -1 { + return 0, 0 + } else if g.state == -2 { + return 1, 1 + } + return g.offset, g.offset + len(g.cluster) +} + +// IsWordBoundary returns true if a word ends after the current grapheme +// cluster. +func (g *Graphemes) IsWordBoundary() bool { + if g.state < 0 { + return true + } + return g.boundaries&MaskWord != 0 +} + +// IsSentenceBoundary returns true if a sentence ends after the current +// grapheme cluster. +func (g *Graphemes) IsSentenceBoundary() bool { + if g.state < 0 { + return true + } + return g.boundaries&MaskSentence != 0 +} + +// LineBreak returns whether the line can be broken after the current grapheme +// cluster. A value of [LineDontBreak] means the line may not be broken, a value +// of [LineMustBreak] means the line must be broken, and a value of +// [LineCanBreak] means the line may or may not be broken. +func (g *Graphemes) LineBreak() int { + if g.state == -1 { + return LineDontBreak + } + if g.state == -2 { + return LineMustBreak + } + return g.boundaries & MaskLine +} + +// Width returns the monospace width of the current grapheme cluster. +func (g *Graphemes) Width() int { + if g.state < 0 { + return 0 + } + return g.boundaries >> ShiftWidth +} + +// Reset puts the iterator into its initial state such that the next call to +// [Graphemes.Next] sets it to the first grapheme cluster again. +func (g *Graphemes) Reset() { + g.state = -1 + g.offset = 0 + g.cluster = "" + g.remaining = g.original +} + +// GraphemeClusterCount returns the number of user-perceived characters +// (grapheme clusters) for the given string. +func GraphemeClusterCount(s string) (n int) { + state := -1 + for len(s) > 0 { + _, s, _, state = FirstGraphemeClusterInString(s, state) + n++ + } + return +} + +// ReverseString reverses the given string while observing grapheme cluster +// boundaries. +func ReverseString(s string) string { + str := []byte(s) + reversed := make([]byte, len(str)) + state := -1 + index := len(str) + for len(str) > 0 { + var cluster []byte + cluster, str, _, state = FirstGraphemeCluster(str, state) + index -= len(cluster) + copy(reversed[index:], cluster) + if index <= len(str)/2 { + break + } + } + return string(reversed) +} + +// The number of bits the grapheme property must be shifted to make place for +// grapheme states. +const shiftGraphemePropState = 4 + +// FirstGraphemeCluster returns the first grapheme cluster found in the given +// byte slice according to the rules of [Unicode Standard Annex #29, Grapheme +// Cluster Boundaries]. This function can be called continuously to extract all +// grapheme clusters from a byte slice, as illustrated in the example below. +// +// If you don't know the current state, for example when calling the function +// for the first time, you must pass -1. For consecutive calls, pass the state +// and rest slice returned by the previous call. +// +// The "rest" slice is the sub-slice of the original byte slice "b" starting +// after the last byte of the identified grapheme cluster. If the length of the +// "rest" slice is 0, the entire byte slice "b" has been processed. The +// "cluster" byte slice is the sub-slice of the input slice containing the +// identified grapheme cluster. +// +// The returned width is the width of the grapheme cluster for most monospace +// fonts where a value of 1 represents one character cell. +// +// Given an empty byte slice "b", the function returns nil values. +// +// While slightly less convenient than using the Graphemes class, this function +// has much better performance and makes no allocations. It lends itself well to +// large byte slices. +// +// [Unicode Standard Annex #29, Grapheme Cluster Boundaries]: http://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries +func FirstGraphemeCluster(b []byte, state int) (cluster, rest []byte, width, newState int) { + // An empty byte slice returns nothing. + if len(b) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRune(b) + if len(b) <= length { // If we're already past the end, there is nothing else to parse. + var prop int + if state < 0 { + prop = propertyGraphemes(r) + } else { + prop = state >> shiftGraphemePropState + } + return b, nil, runeWidth(r, prop), grAny | (prop << shiftGraphemePropState) + } + + // If we don't know the state, determine it now. + var firstProp int + if state < 0 { + state, firstProp, _ = transitionGraphemeState(state, r) + } else { + firstProp = state >> shiftGraphemePropState + } + width += runeWidth(r, firstProp) + + // Transition until we find a boundary. + for { + var ( + prop int + boundary bool + ) + + r, l := utf8.DecodeRune(b[length:]) + state, prop, boundary = transitionGraphemeState(state&maskGraphemeState, r) + + if boundary { + return b[:length], b[length:], width, state | (prop << shiftGraphemePropState) + } + + if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else if r == vs16 { + width = 2 + } + } else if firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } + + length += l + if len(b) <= length { + return b, nil, width, grAny | (prop << shiftGraphemePropState) + } + } +} + +// FirstGraphemeClusterInString is like [FirstGraphemeCluster] but its input and +// outputs are strings. +func FirstGraphemeClusterInString(str string, state int) (cluster, rest string, width, newState int) { + // An empty string returns nothing. + if len(str) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRuneInString(str) + if len(str) <= length { // If we're already past the end, there is nothing else to parse. + var prop int + if state < 0 { + prop = propertyGraphemes(r) + } else { + prop = state >> shiftGraphemePropState + } + return str, "", runeWidth(r, prop), grAny | (prop << shiftGraphemePropState) + } + + // If we don't know the state, determine it now. + var firstProp int + if state < 0 { + state, firstProp, _ = transitionGraphemeState(state, r) + } else { + firstProp = state >> shiftGraphemePropState + } + width += runeWidth(r, firstProp) + + // Transition until we find a boundary. + for { + var ( + prop int + boundary bool + ) + + r, l := utf8.DecodeRuneInString(str[length:]) + state, prop, boundary = transitionGraphemeState(state&maskGraphemeState, r) + + if boundary { + return str[:length], str[length:], width, state | (prop << shiftGraphemePropState) + } + + if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else if r == vs16 { + width = 2 + } + } else if firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } + + length += l + if len(str) <= length { + return str, "", width, grAny | (prop << shiftGraphemePropState) + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemeproperties.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemeproperties.go new file mode 100644 index 0000000..0aff4a6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemeproperties.go @@ -0,0 +1,1915 @@ +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// graphemeCodePoints are taken from +// https://www.unicode.org/Public/15.0.0/ucd/auxiliary/GraphemeBreakProperty.txt +// and +// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var graphemeCodePoints = [][3]int{ + {0x0000, 0x0009, prControl}, // Cc [10] .. + {0x000A, 0x000A, prLF}, // Cc + {0x000B, 0x000C, prControl}, // Cc [2] .. + {0x000D, 0x000D, prCR}, // Cc + {0x000E, 0x001F, prControl}, // Cc [18] .. + {0x007F, 0x009F, prControl}, // Cc [33] .. + {0x00A9, 0x00A9, prExtendedPictographic}, // E0.6 [1] (©️) copyright + {0x00AD, 0x00AD, prControl}, // Cf SOFT HYPHEN + {0x00AE, 0x00AE, prExtendedPictographic}, // E0.6 [1] (®️) registered + {0x0300, 0x036F, prExtend}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X + {0x0483, 0x0487, prExtend}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE + {0x0488, 0x0489, prExtend}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN + {0x0591, 0x05BD, prExtend}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG + {0x05BF, 0x05BF, prExtend}, // Mn HEBREW POINT RAFE + {0x05C1, 0x05C2, prExtend}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT + {0x05C4, 0x05C5, prExtend}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT + {0x05C7, 0x05C7, prExtend}, // Mn HEBREW POINT QAMATS QATAN + {0x0600, 0x0605, prPrepend}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE + {0x0610, 0x061A, prExtend}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA + {0x061C, 0x061C, prControl}, // Cf ARABIC LETTER MARK + {0x064B, 0x065F, prExtend}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW + {0x0670, 0x0670, prExtend}, // Mn ARABIC LETTER SUPERSCRIPT ALEF + {0x06D6, 0x06DC, prExtend}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN + {0x06DD, 0x06DD, prPrepend}, // Cf ARABIC END OF AYAH + {0x06DF, 0x06E4, prExtend}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA + {0x06E7, 0x06E8, prExtend}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON + {0x06EA, 0x06ED, prExtend}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM + {0x070F, 0x070F, prPrepend}, // Cf SYRIAC ABBREVIATION MARK + {0x0711, 0x0711, prExtend}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH + {0x0730, 0x074A, prExtend}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH + {0x07A6, 0x07B0, prExtend}, // Mn [11] THAANA ABAFILI..THAANA SUKUN + {0x07EB, 0x07F3, prExtend}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE + {0x07FD, 0x07FD, prExtend}, // Mn NKO DANTAYALAN + {0x0816, 0x0819, prExtend}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH + {0x081B, 0x0823, prExtend}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A + {0x0825, 0x0827, prExtend}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U + {0x0829, 0x082D, prExtend}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA + {0x0859, 0x085B, prExtend}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK + {0x0890, 0x0891, prPrepend}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE + {0x0898, 0x089F, prExtend}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA + {0x08CA, 0x08E1, prExtend}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA + {0x08E2, 0x08E2, prPrepend}, // Cf ARABIC DISPUTED END OF AYAH + {0x08E3, 0x0902, prExtend}, // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA + {0x0903, 0x0903, prSpacingMark}, // Mc DEVANAGARI SIGN VISARGA + {0x093A, 0x093A, prExtend}, // Mn DEVANAGARI VOWEL SIGN OE + {0x093B, 0x093B, prSpacingMark}, // Mc DEVANAGARI VOWEL SIGN OOE + {0x093C, 0x093C, prExtend}, // Mn DEVANAGARI SIGN NUKTA + {0x093E, 0x0940, prSpacingMark}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II + {0x0941, 0x0948, prExtend}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI + {0x0949, 0x094C, prSpacingMark}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU + {0x094D, 0x094D, prExtend}, // Mn DEVANAGARI SIGN VIRAMA + {0x094E, 0x094F, prSpacingMark}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW + {0x0951, 0x0957, prExtend}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE + {0x0962, 0x0963, prExtend}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL + {0x0981, 0x0981, prExtend}, // Mn BENGALI SIGN CANDRABINDU + {0x0982, 0x0983, prSpacingMark}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA + {0x09BC, 0x09BC, prExtend}, // Mn BENGALI SIGN NUKTA + {0x09BE, 0x09BE, prExtend}, // Mc BENGALI VOWEL SIGN AA + {0x09BF, 0x09C0, prSpacingMark}, // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II + {0x09C1, 0x09C4, prExtend}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR + {0x09C7, 0x09C8, prSpacingMark}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI + {0x09CB, 0x09CC, prSpacingMark}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU + {0x09CD, 0x09CD, prExtend}, // Mn BENGALI SIGN VIRAMA + {0x09D7, 0x09D7, prExtend}, // Mc BENGALI AU LENGTH MARK + {0x09E2, 0x09E3, prExtend}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL + {0x09FE, 0x09FE, prExtend}, // Mn BENGALI SANDHI MARK + {0x0A01, 0x0A02, prExtend}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI + {0x0A03, 0x0A03, prSpacingMark}, // Mc GURMUKHI SIGN VISARGA + {0x0A3C, 0x0A3C, prExtend}, // Mn GURMUKHI SIGN NUKTA + {0x0A3E, 0x0A40, prSpacingMark}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II + {0x0A41, 0x0A42, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU + {0x0A47, 0x0A48, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI + {0x0A4B, 0x0A4D, prExtend}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA + {0x0A51, 0x0A51, prExtend}, // Mn GURMUKHI SIGN UDAAT + {0x0A70, 0x0A71, prExtend}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK + {0x0A75, 0x0A75, prExtend}, // Mn GURMUKHI SIGN YAKASH + {0x0A81, 0x0A82, prExtend}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA + {0x0A83, 0x0A83, prSpacingMark}, // Mc GUJARATI SIGN VISARGA + {0x0ABC, 0x0ABC, prExtend}, // Mn GUJARATI SIGN NUKTA + {0x0ABE, 0x0AC0, prSpacingMark}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II + {0x0AC1, 0x0AC5, prExtend}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E + {0x0AC7, 0x0AC8, prExtend}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI + {0x0AC9, 0x0AC9, prSpacingMark}, // Mc GUJARATI VOWEL SIGN CANDRA O + {0x0ACB, 0x0ACC, prSpacingMark}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU + {0x0ACD, 0x0ACD, prExtend}, // Mn GUJARATI SIGN VIRAMA + {0x0AE2, 0x0AE3, prExtend}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL + {0x0AFA, 0x0AFF, prExtend}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE + {0x0B01, 0x0B01, prExtend}, // Mn ORIYA SIGN CANDRABINDU + {0x0B02, 0x0B03, prSpacingMark}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA + {0x0B3C, 0x0B3C, prExtend}, // Mn ORIYA SIGN NUKTA + {0x0B3E, 0x0B3E, prExtend}, // Mc ORIYA VOWEL SIGN AA + {0x0B3F, 0x0B3F, prExtend}, // Mn ORIYA VOWEL SIGN I + {0x0B40, 0x0B40, prSpacingMark}, // Mc ORIYA VOWEL SIGN II + {0x0B41, 0x0B44, prExtend}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR + {0x0B47, 0x0B48, prSpacingMark}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI + {0x0B4B, 0x0B4C, prSpacingMark}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU + {0x0B4D, 0x0B4D, prExtend}, // Mn ORIYA SIGN VIRAMA + {0x0B55, 0x0B56, prExtend}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK + {0x0B57, 0x0B57, prExtend}, // Mc ORIYA AU LENGTH MARK + {0x0B62, 0x0B63, prExtend}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL + {0x0B82, 0x0B82, prExtend}, // Mn TAMIL SIGN ANUSVARA + {0x0BBE, 0x0BBE, prExtend}, // Mc TAMIL VOWEL SIGN AA + {0x0BBF, 0x0BBF, prSpacingMark}, // Mc TAMIL VOWEL SIGN I + {0x0BC0, 0x0BC0, prExtend}, // Mn TAMIL VOWEL SIGN II + {0x0BC1, 0x0BC2, prSpacingMark}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU + {0x0BC6, 0x0BC8, prSpacingMark}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI + {0x0BCA, 0x0BCC, prSpacingMark}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU + {0x0BCD, 0x0BCD, prExtend}, // Mn TAMIL SIGN VIRAMA + {0x0BD7, 0x0BD7, prExtend}, // Mc TAMIL AU LENGTH MARK + {0x0C00, 0x0C00, prExtend}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE + {0x0C01, 0x0C03, prSpacingMark}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA + {0x0C04, 0x0C04, prExtend}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE + {0x0C3C, 0x0C3C, prExtend}, // Mn TELUGU SIGN NUKTA + {0x0C3E, 0x0C40, prExtend}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II + {0x0C41, 0x0C44, prSpacingMark}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR + {0x0C46, 0x0C48, prExtend}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI + {0x0C4A, 0x0C4D, prExtend}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA + {0x0C55, 0x0C56, prExtend}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK + {0x0C62, 0x0C63, prExtend}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL + {0x0C81, 0x0C81, prExtend}, // Mn KANNADA SIGN CANDRABINDU + {0x0C82, 0x0C83, prSpacingMark}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA + {0x0CBC, 0x0CBC, prExtend}, // Mn KANNADA SIGN NUKTA + {0x0CBE, 0x0CBE, prSpacingMark}, // Mc KANNADA VOWEL SIGN AA + {0x0CBF, 0x0CBF, prExtend}, // Mn KANNADA VOWEL SIGN I + {0x0CC0, 0x0CC1, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U + {0x0CC2, 0x0CC2, prExtend}, // Mc KANNADA VOWEL SIGN UU + {0x0CC3, 0x0CC4, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR + {0x0CC6, 0x0CC6, prExtend}, // Mn KANNADA VOWEL SIGN E + {0x0CC7, 0x0CC8, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI + {0x0CCA, 0x0CCB, prSpacingMark}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO + {0x0CCC, 0x0CCD, prExtend}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA + {0x0CD5, 0x0CD6, prExtend}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK + {0x0CE2, 0x0CE3, prExtend}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL + {0x0CF3, 0x0CF3, prSpacingMark}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT + {0x0D00, 0x0D01, prExtend}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU + {0x0D02, 0x0D03, prSpacingMark}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA + {0x0D3B, 0x0D3C, prExtend}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA + {0x0D3E, 0x0D3E, prExtend}, // Mc MALAYALAM VOWEL SIGN AA + {0x0D3F, 0x0D40, prSpacingMark}, // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II + {0x0D41, 0x0D44, prExtend}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR + {0x0D46, 0x0D48, prSpacingMark}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI + {0x0D4A, 0x0D4C, prSpacingMark}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU + {0x0D4D, 0x0D4D, prExtend}, // Mn MALAYALAM SIGN VIRAMA + {0x0D4E, 0x0D4E, prPrepend}, // Lo MALAYALAM LETTER DOT REPH + {0x0D57, 0x0D57, prExtend}, // Mc MALAYALAM AU LENGTH MARK + {0x0D62, 0x0D63, prExtend}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL + {0x0D81, 0x0D81, prExtend}, // Mn SINHALA SIGN CANDRABINDU + {0x0D82, 0x0D83, prSpacingMark}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA + {0x0DCA, 0x0DCA, prExtend}, // Mn SINHALA SIGN AL-LAKUNA + {0x0DCF, 0x0DCF, prExtend}, // Mc SINHALA VOWEL SIGN AELA-PILLA + {0x0DD0, 0x0DD1, prSpacingMark}, // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA + {0x0DD2, 0x0DD4, prExtend}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA + {0x0DD6, 0x0DD6, prExtend}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA + {0x0DD8, 0x0DDE, prSpacingMark}, // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA + {0x0DDF, 0x0DDF, prExtend}, // Mc SINHALA VOWEL SIGN GAYANUKITTA + {0x0DF2, 0x0DF3, prSpacingMark}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA + {0x0E31, 0x0E31, prExtend}, // Mn THAI CHARACTER MAI HAN-AKAT + {0x0E33, 0x0E33, prSpacingMark}, // Lo THAI CHARACTER SARA AM + {0x0E34, 0x0E3A, prExtend}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU + {0x0E47, 0x0E4E, prExtend}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN + {0x0EB1, 0x0EB1, prExtend}, // Mn LAO VOWEL SIGN MAI KAN + {0x0EB3, 0x0EB3, prSpacingMark}, // Lo LAO VOWEL SIGN AM + {0x0EB4, 0x0EBC, prExtend}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO + {0x0EC8, 0x0ECE, prExtend}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN + {0x0F18, 0x0F19, prExtend}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS + {0x0F35, 0x0F35, prExtend}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA + {0x0F37, 0x0F37, prExtend}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS + {0x0F39, 0x0F39, prExtend}, // Mn TIBETAN MARK TSA -PHRU + {0x0F3E, 0x0F3F, prSpacingMark}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES + {0x0F71, 0x0F7E, prExtend}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO + {0x0F7F, 0x0F7F, prSpacingMark}, // Mc TIBETAN SIGN RNAM BCAD + {0x0F80, 0x0F84, prExtend}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA + {0x0F86, 0x0F87, prExtend}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS + {0x0F8D, 0x0F97, prExtend}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA + {0x0F99, 0x0FBC, prExtend}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA + {0x0FC6, 0x0FC6, prExtend}, // Mn TIBETAN SYMBOL PADMA GDAN + {0x102D, 0x1030, prExtend}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU + {0x1031, 0x1031, prSpacingMark}, // Mc MYANMAR VOWEL SIGN E + {0x1032, 0x1037, prExtend}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW + {0x1039, 0x103A, prExtend}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT + {0x103B, 0x103C, prSpacingMark}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA + {0x103D, 0x103E, prExtend}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA + {0x1056, 0x1057, prSpacingMark}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR + {0x1058, 0x1059, prExtend}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL + {0x105E, 0x1060, prExtend}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA + {0x1071, 0x1074, prExtend}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE + {0x1082, 0x1082, prExtend}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA + {0x1084, 0x1084, prSpacingMark}, // Mc MYANMAR VOWEL SIGN SHAN E + {0x1085, 0x1086, prExtend}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y + {0x108D, 0x108D, prExtend}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE + {0x109D, 0x109D, prExtend}, // Mn MYANMAR VOWEL SIGN AITON AI + {0x1100, 0x115F, prL}, // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER + {0x1160, 0x11A7, prV}, // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE + {0x11A8, 0x11FF, prT}, // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN + {0x135D, 0x135F, prExtend}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK + {0x1712, 0x1714, prExtend}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA + {0x1715, 0x1715, prSpacingMark}, // Mc TAGALOG SIGN PAMUDPOD + {0x1732, 0x1733, prExtend}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U + {0x1734, 0x1734, prSpacingMark}, // Mc HANUNOO SIGN PAMUDPOD + {0x1752, 0x1753, prExtend}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U + {0x1772, 0x1773, prExtend}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U + {0x17B4, 0x17B5, prExtend}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA + {0x17B6, 0x17B6, prSpacingMark}, // Mc KHMER VOWEL SIGN AA + {0x17B7, 0x17BD, prExtend}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA + {0x17BE, 0x17C5, prSpacingMark}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU + {0x17C6, 0x17C6, prExtend}, // Mn KHMER SIGN NIKAHIT + {0x17C7, 0x17C8, prSpacingMark}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU + {0x17C9, 0x17D3, prExtend}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT + {0x17DD, 0x17DD, prExtend}, // Mn KHMER SIGN ATTHACAN + {0x180B, 0x180D, prExtend}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE + {0x180E, 0x180E, prControl}, // Cf MONGOLIAN VOWEL SEPARATOR + {0x180F, 0x180F, prExtend}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR + {0x1885, 0x1886, prExtend}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA + {0x18A9, 0x18A9, prExtend}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA + {0x1920, 0x1922, prExtend}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U + {0x1923, 0x1926, prSpacingMark}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU + {0x1927, 0x1928, prExtend}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O + {0x1929, 0x192B, prSpacingMark}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA + {0x1930, 0x1931, prSpacingMark}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA + {0x1932, 0x1932, prExtend}, // Mn LIMBU SMALL LETTER ANUSVARA + {0x1933, 0x1938, prSpacingMark}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA + {0x1939, 0x193B, prExtend}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I + {0x1A17, 0x1A18, prExtend}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U + {0x1A19, 0x1A1A, prSpacingMark}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O + {0x1A1B, 0x1A1B, prExtend}, // Mn BUGINESE VOWEL SIGN AE + {0x1A55, 0x1A55, prSpacingMark}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA + {0x1A56, 0x1A56, prExtend}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA + {0x1A57, 0x1A57, prSpacingMark}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI + {0x1A58, 0x1A5E, prExtend}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA + {0x1A60, 0x1A60, prExtend}, // Mn TAI THAM SIGN SAKOT + {0x1A62, 0x1A62, prExtend}, // Mn TAI THAM VOWEL SIGN MAI SAT + {0x1A65, 0x1A6C, prExtend}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW + {0x1A6D, 0x1A72, prSpacingMark}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI + {0x1A73, 0x1A7C, prExtend}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN + {0x1A7F, 0x1A7F, prExtend}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT + {0x1AB0, 0x1ABD, prExtend}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW + {0x1ABE, 0x1ABE, prExtend}, // Me COMBINING PARENTHESES OVERLAY + {0x1ABF, 0x1ACE, prExtend}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T + {0x1B00, 0x1B03, prExtend}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG + {0x1B04, 0x1B04, prSpacingMark}, // Mc BALINESE SIGN BISAH + {0x1B34, 0x1B34, prExtend}, // Mn BALINESE SIGN REREKAN + {0x1B35, 0x1B35, prExtend}, // Mc BALINESE VOWEL SIGN TEDUNG + {0x1B36, 0x1B3A, prExtend}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA + {0x1B3B, 0x1B3B, prSpacingMark}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG + {0x1B3C, 0x1B3C, prExtend}, // Mn BALINESE VOWEL SIGN LA LENGA + {0x1B3D, 0x1B41, prSpacingMark}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG + {0x1B42, 0x1B42, prExtend}, // Mn BALINESE VOWEL SIGN PEPET + {0x1B43, 0x1B44, prSpacingMark}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG + {0x1B6B, 0x1B73, prExtend}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG + {0x1B80, 0x1B81, prExtend}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR + {0x1B82, 0x1B82, prSpacingMark}, // Mc SUNDANESE SIGN PANGWISAD + {0x1BA1, 0x1BA1, prSpacingMark}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL + {0x1BA2, 0x1BA5, prExtend}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU + {0x1BA6, 0x1BA7, prSpacingMark}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG + {0x1BA8, 0x1BA9, prExtend}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG + {0x1BAA, 0x1BAA, prSpacingMark}, // Mc SUNDANESE SIGN PAMAAEH + {0x1BAB, 0x1BAD, prExtend}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA + {0x1BE6, 0x1BE6, prExtend}, // Mn BATAK SIGN TOMPI + {0x1BE7, 0x1BE7, prSpacingMark}, // Mc BATAK VOWEL SIGN E + {0x1BE8, 0x1BE9, prExtend}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE + {0x1BEA, 0x1BEC, prSpacingMark}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O + {0x1BED, 0x1BED, prExtend}, // Mn BATAK VOWEL SIGN KARO O + {0x1BEE, 0x1BEE, prSpacingMark}, // Mc BATAK VOWEL SIGN U + {0x1BEF, 0x1BF1, prExtend}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H + {0x1BF2, 0x1BF3, prSpacingMark}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN + {0x1C24, 0x1C2B, prSpacingMark}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU + {0x1C2C, 0x1C33, prExtend}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T + {0x1C34, 0x1C35, prSpacingMark}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG + {0x1C36, 0x1C37, prExtend}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA + {0x1CD0, 0x1CD2, prExtend}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA + {0x1CD4, 0x1CE0, prExtend}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA + {0x1CE1, 0x1CE1, prSpacingMark}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA + {0x1CE2, 0x1CE8, prExtend}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL + {0x1CED, 0x1CED, prExtend}, // Mn VEDIC SIGN TIRYAK + {0x1CF4, 0x1CF4, prExtend}, // Mn VEDIC TONE CANDRA ABOVE + {0x1CF7, 0x1CF7, prSpacingMark}, // Mc VEDIC SIGN ATIKRAMA + {0x1CF8, 0x1CF9, prExtend}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE + {0x1DC0, 0x1DFF, prExtend}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + {0x200B, 0x200B, prControl}, // Cf ZERO WIDTH SPACE + {0x200C, 0x200C, prExtend}, // Cf ZERO WIDTH NON-JOINER + {0x200D, 0x200D, prZWJ}, // Cf ZERO WIDTH JOINER + {0x200E, 0x200F, prControl}, // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK + {0x2028, 0x2028, prControl}, // Zl LINE SEPARATOR + {0x2029, 0x2029, prControl}, // Zp PARAGRAPH SEPARATOR + {0x202A, 0x202E, prControl}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE + {0x203C, 0x203C, prExtendedPictographic}, // E0.6 [1] (‼️) double exclamation mark + {0x2049, 0x2049, prExtendedPictographic}, // E0.6 [1] (⁉️) exclamation question mark + {0x2060, 0x2064, prControl}, // Cf [5] WORD JOINER..INVISIBLE PLUS + {0x2065, 0x2065, prControl}, // Cn + {0x2066, 0x206F, prControl}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES + {0x20D0, 0x20DC, prExtend}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE + {0x20DD, 0x20E0, prExtend}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH + {0x20E1, 0x20E1, prExtend}, // Mn COMBINING LEFT RIGHT ARROW ABOVE + {0x20E2, 0x20E4, prExtend}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE + {0x20E5, 0x20F0, prExtend}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE + {0x2122, 0x2122, prExtendedPictographic}, // E0.6 [1] (™️) trade mark + {0x2139, 0x2139, prExtendedPictographic}, // E0.6 [1] (ℹ️) information + {0x2194, 0x2199, prExtendedPictographic}, // E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow + {0x21A9, 0x21AA, prExtendedPictographic}, // E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right + {0x231A, 0x231B, prExtendedPictographic}, // E0.6 [2] (⌚..⌛) watch..hourglass done + {0x2328, 0x2328, prExtendedPictographic}, // E1.0 [1] (⌨️) keyboard + {0x2388, 0x2388, prExtendedPictographic}, // E0.0 [1] (⎈) HELM SYMBOL + {0x23CF, 0x23CF, prExtendedPictographic}, // E1.0 [1] (⏏️) eject button + {0x23E9, 0x23EC, prExtendedPictographic}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button + {0x23ED, 0x23EE, prExtendedPictographic}, // E0.7 [2] (⏭️..⏮️) next track button..last track button + {0x23EF, 0x23EF, prExtendedPictographic}, // E1.0 [1] (⏯️) play or pause button + {0x23F0, 0x23F0, prExtendedPictographic}, // E0.6 [1] (⏰) alarm clock + {0x23F1, 0x23F2, prExtendedPictographic}, // E1.0 [2] (⏱️..⏲️) stopwatch..timer clock + {0x23F3, 0x23F3, prExtendedPictographic}, // E0.6 [1] (⏳) hourglass not done + {0x23F8, 0x23FA, prExtendedPictographic}, // E0.7 [3] (⏸️..⏺️) pause button..record button + {0x24C2, 0x24C2, prExtendedPictographic}, // E0.6 [1] (Ⓜ️) circled M + {0x25AA, 0x25AB, prExtendedPictographic}, // E0.6 [2] (▪️..▫️) black small square..white small square + {0x25B6, 0x25B6, prExtendedPictographic}, // E0.6 [1] (▶️) play button + {0x25C0, 0x25C0, prExtendedPictographic}, // E0.6 [1] (◀️) reverse button + {0x25FB, 0x25FE, prExtendedPictographic}, // E0.6 [4] (◻️..◾) white medium square..black medium-small square + {0x2600, 0x2601, prExtendedPictographic}, // E0.6 [2] (☀️..☁️) sun..cloud + {0x2602, 0x2603, prExtendedPictographic}, // E0.7 [2] (☂️..☃️) umbrella..snowman + {0x2604, 0x2604, prExtendedPictographic}, // E1.0 [1] (☄️) comet + {0x2605, 0x2605, prExtendedPictographic}, // E0.0 [1] (★) BLACK STAR + {0x2607, 0x260D, prExtendedPictographic}, // E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION + {0x260E, 0x260E, prExtendedPictographic}, // E0.6 [1] (☎️) telephone + {0x260F, 0x2610, prExtendedPictographic}, // E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX + {0x2611, 0x2611, prExtendedPictographic}, // E0.6 [1] (☑️) check box with check + {0x2612, 0x2612, prExtendedPictographic}, // E0.0 [1] (☒) BALLOT BOX WITH X + {0x2614, 0x2615, prExtendedPictographic}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage + {0x2616, 0x2617, prExtendedPictographic}, // E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE + {0x2618, 0x2618, prExtendedPictographic}, // E1.0 [1] (☘️) shamrock + {0x2619, 0x261C, prExtendedPictographic}, // E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX + {0x261D, 0x261D, prExtendedPictographic}, // E0.6 [1] (☝️) index pointing up + {0x261E, 0x261F, prExtendedPictographic}, // E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX + {0x2620, 0x2620, prExtendedPictographic}, // E1.0 [1] (☠️) skull and crossbones + {0x2621, 0x2621, prExtendedPictographic}, // E0.0 [1] (☡) CAUTION SIGN + {0x2622, 0x2623, prExtendedPictographic}, // E1.0 [2] (☢️..☣️) radioactive..biohazard + {0x2624, 0x2625, prExtendedPictographic}, // E0.0 [2] (☤..☥) CADUCEUS..ANKH + {0x2626, 0x2626, prExtendedPictographic}, // E1.0 [1] (☦️) orthodox cross + {0x2627, 0x2629, prExtendedPictographic}, // E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM + {0x262A, 0x262A, prExtendedPictographic}, // E0.7 [1] (☪️) star and crescent + {0x262B, 0x262D, prExtendedPictographic}, // E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE + {0x262E, 0x262E, prExtendedPictographic}, // E1.0 [1] (☮️) peace symbol + {0x262F, 0x262F, prExtendedPictographic}, // E0.7 [1] (☯️) yin yang + {0x2630, 0x2637, prExtendedPictographic}, // E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH + {0x2638, 0x2639, prExtendedPictographic}, // E0.7 [2] (☸️..☹️) wheel of dharma..frowning face + {0x263A, 0x263A, prExtendedPictographic}, // E0.6 [1] (☺️) smiling face + {0x263B, 0x263F, prExtendedPictographic}, // E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY + {0x2640, 0x2640, prExtendedPictographic}, // E4.0 [1] (♀️) female sign + {0x2641, 0x2641, prExtendedPictographic}, // E0.0 [1] (♁) EARTH + {0x2642, 0x2642, prExtendedPictographic}, // E4.0 [1] (♂️) male sign + {0x2643, 0x2647, prExtendedPictographic}, // E0.0 [5] (♃..♇) JUPITER..PLUTO + {0x2648, 0x2653, prExtendedPictographic}, // E0.6 [12] (♈..♓) Aries..Pisces + {0x2654, 0x265E, prExtendedPictographic}, // E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT + {0x265F, 0x265F, prExtendedPictographic}, // E11.0 [1] (♟️) chess pawn + {0x2660, 0x2660, prExtendedPictographic}, // E0.6 [1] (♠️) spade suit + {0x2661, 0x2662, prExtendedPictographic}, // E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT + {0x2663, 0x2663, prExtendedPictographic}, // E0.6 [1] (♣️) club suit + {0x2664, 0x2664, prExtendedPictographic}, // E0.0 [1] (♤) WHITE SPADE SUIT + {0x2665, 0x2666, prExtendedPictographic}, // E0.6 [2] (♥️..♦️) heart suit..diamond suit + {0x2667, 0x2667, prExtendedPictographic}, // E0.0 [1] (♧) WHITE CLUB SUIT + {0x2668, 0x2668, prExtendedPictographic}, // E0.6 [1] (♨️) hot springs + {0x2669, 0x267A, prExtendedPictographic}, // E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS + {0x267B, 0x267B, prExtendedPictographic}, // E0.6 [1] (♻️) recycling symbol + {0x267C, 0x267D, prExtendedPictographic}, // E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL + {0x267E, 0x267E, prExtendedPictographic}, // E11.0 [1] (♾️) infinity + {0x267F, 0x267F, prExtendedPictographic}, // E0.6 [1] (♿) wheelchair symbol + {0x2680, 0x2685, prExtendedPictographic}, // E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 + {0x2690, 0x2691, prExtendedPictographic}, // E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG + {0x2692, 0x2692, prExtendedPictographic}, // E1.0 [1] (⚒️) hammer and pick + {0x2693, 0x2693, prExtendedPictographic}, // E0.6 [1] (⚓) anchor + {0x2694, 0x2694, prExtendedPictographic}, // E1.0 [1] (⚔️) crossed swords + {0x2695, 0x2695, prExtendedPictographic}, // E4.0 [1] (⚕️) medical symbol + {0x2696, 0x2697, prExtendedPictographic}, // E1.0 [2] (⚖️..⚗️) balance scale..alembic + {0x2698, 0x2698, prExtendedPictographic}, // E0.0 [1] (⚘) FLOWER + {0x2699, 0x2699, prExtendedPictographic}, // E1.0 [1] (⚙️) gear + {0x269A, 0x269A, prExtendedPictographic}, // E0.0 [1] (⚚) STAFF OF HERMES + {0x269B, 0x269C, prExtendedPictographic}, // E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis + {0x269D, 0x269F, prExtendedPictographic}, // E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT + {0x26A0, 0x26A1, prExtendedPictographic}, // E0.6 [2] (⚠️..⚡) warning..high voltage + {0x26A2, 0x26A6, prExtendedPictographic}, // E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN + {0x26A7, 0x26A7, prExtendedPictographic}, // E13.0 [1] (⚧️) transgender symbol + {0x26A8, 0x26A9, prExtendedPictographic}, // E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN + {0x26AA, 0x26AB, prExtendedPictographic}, // E0.6 [2] (⚪..⚫) white circle..black circle + {0x26AC, 0x26AF, prExtendedPictographic}, // E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL + {0x26B0, 0x26B1, prExtendedPictographic}, // E1.0 [2] (⚰️..⚱️) coffin..funeral urn + {0x26B2, 0x26BC, prExtendedPictographic}, // E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE + {0x26BD, 0x26BE, prExtendedPictographic}, // E0.6 [2] (⚽..⚾) soccer ball..baseball + {0x26BF, 0x26C3, prExtendedPictographic}, // E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING + {0x26C4, 0x26C5, prExtendedPictographic}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud + {0x26C6, 0x26C7, prExtendedPictographic}, // E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN + {0x26C8, 0x26C8, prExtendedPictographic}, // E0.7 [1] (⛈️) cloud with lightning and rain + {0x26C9, 0x26CD, prExtendedPictographic}, // E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR + {0x26CE, 0x26CE, prExtendedPictographic}, // E0.6 [1] (⛎) Ophiuchus + {0x26CF, 0x26CF, prExtendedPictographic}, // E0.7 [1] (⛏️) pick + {0x26D0, 0x26D0, prExtendedPictographic}, // E0.0 [1] (⛐) CAR SLIDING + {0x26D1, 0x26D1, prExtendedPictographic}, // E0.7 [1] (⛑️) rescue worker’s helmet + {0x26D2, 0x26D2, prExtendedPictographic}, // E0.0 [1] (⛒) CIRCLED CROSSING LANES + {0x26D3, 0x26D3, prExtendedPictographic}, // E0.7 [1] (⛓️) chains + {0x26D4, 0x26D4, prExtendedPictographic}, // E0.6 [1] (⛔) no entry + {0x26D5, 0x26E8, prExtendedPictographic}, // E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD + {0x26E9, 0x26E9, prExtendedPictographic}, // E0.7 [1] (⛩️) shinto shrine + {0x26EA, 0x26EA, prExtendedPictographic}, // E0.6 [1] (⛪) church + {0x26EB, 0x26EF, prExtendedPictographic}, // E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE + {0x26F0, 0x26F1, prExtendedPictographic}, // E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground + {0x26F2, 0x26F3, prExtendedPictographic}, // E0.6 [2] (⛲..⛳) fountain..flag in hole + {0x26F4, 0x26F4, prExtendedPictographic}, // E0.7 [1] (⛴️) ferry + {0x26F5, 0x26F5, prExtendedPictographic}, // E0.6 [1] (⛵) sailboat + {0x26F6, 0x26F6, prExtendedPictographic}, // E0.0 [1] (⛶) SQUARE FOUR CORNERS + {0x26F7, 0x26F9, prExtendedPictographic}, // E0.7 [3] (⛷️..⛹️) skier..person bouncing ball + {0x26FA, 0x26FA, prExtendedPictographic}, // E0.6 [1] (⛺) tent + {0x26FB, 0x26FC, prExtendedPictographic}, // E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL + {0x26FD, 0x26FD, prExtendedPictographic}, // E0.6 [1] (⛽) fuel pump + {0x26FE, 0x2701, prExtendedPictographic}, // E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS + {0x2702, 0x2702, prExtendedPictographic}, // E0.6 [1] (✂️) scissors + {0x2703, 0x2704, prExtendedPictographic}, // E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS + {0x2705, 0x2705, prExtendedPictographic}, // E0.6 [1] (✅) check mark button + {0x2708, 0x270C, prExtendedPictographic}, // E0.6 [5] (✈️..✌️) airplane..victory hand + {0x270D, 0x270D, prExtendedPictographic}, // E0.7 [1] (✍️) writing hand + {0x270E, 0x270E, prExtendedPictographic}, // E0.0 [1] (✎) LOWER RIGHT PENCIL + {0x270F, 0x270F, prExtendedPictographic}, // E0.6 [1] (✏️) pencil + {0x2710, 0x2711, prExtendedPictographic}, // E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB + {0x2712, 0x2712, prExtendedPictographic}, // E0.6 [1] (✒️) black nib + {0x2714, 0x2714, prExtendedPictographic}, // E0.6 [1] (✔️) check mark + {0x2716, 0x2716, prExtendedPictographic}, // E0.6 [1] (✖️) multiply + {0x271D, 0x271D, prExtendedPictographic}, // E0.7 [1] (✝️) latin cross + {0x2721, 0x2721, prExtendedPictographic}, // E0.7 [1] (✡️) star of David + {0x2728, 0x2728, prExtendedPictographic}, // E0.6 [1] (✨) sparkles + {0x2733, 0x2734, prExtendedPictographic}, // E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star + {0x2744, 0x2744, prExtendedPictographic}, // E0.6 [1] (❄️) snowflake + {0x2747, 0x2747, prExtendedPictographic}, // E0.6 [1] (❇️) sparkle + {0x274C, 0x274C, prExtendedPictographic}, // E0.6 [1] (❌) cross mark + {0x274E, 0x274E, prExtendedPictographic}, // E0.6 [1] (❎) cross mark button + {0x2753, 0x2755, prExtendedPictographic}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark + {0x2757, 0x2757, prExtendedPictographic}, // E0.6 [1] (❗) red exclamation mark + {0x2763, 0x2763, prExtendedPictographic}, // E1.0 [1] (❣️) heart exclamation + {0x2764, 0x2764, prExtendedPictographic}, // E0.6 [1] (❤️) red heart + {0x2765, 0x2767, prExtendedPictographic}, // E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET + {0x2795, 0x2797, prExtendedPictographic}, // E0.6 [3] (➕..➗) plus..divide + {0x27A1, 0x27A1, prExtendedPictographic}, // E0.6 [1] (➡️) right arrow + {0x27B0, 0x27B0, prExtendedPictographic}, // E0.6 [1] (➰) curly loop + {0x27BF, 0x27BF, prExtendedPictographic}, // E1.0 [1] (➿) double curly loop + {0x2934, 0x2935, prExtendedPictographic}, // E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down + {0x2B05, 0x2B07, prExtendedPictographic}, // E0.6 [3] (⬅️..⬇️) left arrow..down arrow + {0x2B1B, 0x2B1C, prExtendedPictographic}, // E0.6 [2] (⬛..⬜) black large square..white large square + {0x2B50, 0x2B50, prExtendedPictographic}, // E0.6 [1] (⭐) star + {0x2B55, 0x2B55, prExtendedPictographic}, // E0.6 [1] (⭕) hollow red circle + {0x2CEF, 0x2CF1, prExtend}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS + {0x2D7F, 0x2D7F, prExtend}, // Mn TIFINAGH CONSONANT JOINER + {0x2DE0, 0x2DFF, prExtend}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS + {0x302A, 0x302D, prExtend}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK + {0x302E, 0x302F, prExtend}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK + {0x3030, 0x3030, prExtendedPictographic}, // E0.6 [1] (〰️) wavy dash + {0x303D, 0x303D, prExtendedPictographic}, // E0.6 [1] (〽️) part alternation mark + {0x3099, 0x309A, prExtend}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x3297, 0x3297, prExtendedPictographic}, // E0.6 [1] (㊗️) Japanese “congratulations” button + {0x3299, 0x3299, prExtendedPictographic}, // E0.6 [1] (㊙️) Japanese “secret” button + {0xA66F, 0xA66F, prExtend}, // Mn COMBINING CYRILLIC VZMET + {0xA670, 0xA672, prExtend}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN + {0xA674, 0xA67D, prExtend}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK + {0xA69E, 0xA69F, prExtend}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E + {0xA6F0, 0xA6F1, prExtend}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS + {0xA802, 0xA802, prExtend}, // Mn SYLOTI NAGRI SIGN DVISVARA + {0xA806, 0xA806, prExtend}, // Mn SYLOTI NAGRI SIGN HASANTA + {0xA80B, 0xA80B, prExtend}, // Mn SYLOTI NAGRI SIGN ANUSVARA + {0xA823, 0xA824, prSpacingMark}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I + {0xA825, 0xA826, prExtend}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E + {0xA827, 0xA827, prSpacingMark}, // Mc SYLOTI NAGRI VOWEL SIGN OO + {0xA82C, 0xA82C, prExtend}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA + {0xA880, 0xA881, prSpacingMark}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA + {0xA8B4, 0xA8C3, prSpacingMark}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU + {0xA8C4, 0xA8C5, prExtend}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU + {0xA8E0, 0xA8F1, prExtend}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA + {0xA8FF, 0xA8FF, prExtend}, // Mn DEVANAGARI VOWEL SIGN AY + {0xA926, 0xA92D, prExtend}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU + {0xA947, 0xA951, prExtend}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R + {0xA952, 0xA953, prSpacingMark}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA + {0xA960, 0xA97C, prL}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH + {0xA980, 0xA982, prExtend}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR + {0xA983, 0xA983, prSpacingMark}, // Mc JAVANESE SIGN WIGNYAN + {0xA9B3, 0xA9B3, prExtend}, // Mn JAVANESE SIGN CECAK TELU + {0xA9B4, 0xA9B5, prSpacingMark}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG + {0xA9B6, 0xA9B9, prExtend}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT + {0xA9BA, 0xA9BB, prSpacingMark}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE + {0xA9BC, 0xA9BD, prExtend}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET + {0xA9BE, 0xA9C0, prSpacingMark}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON + {0xA9E5, 0xA9E5, prExtend}, // Mn MYANMAR SIGN SHAN SAW + {0xAA29, 0xAA2E, prExtend}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE + {0xAA2F, 0xAA30, prSpacingMark}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI + {0xAA31, 0xAA32, prExtend}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE + {0xAA33, 0xAA34, prSpacingMark}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA + {0xAA35, 0xAA36, prExtend}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA + {0xAA43, 0xAA43, prExtend}, // Mn CHAM CONSONANT SIGN FINAL NG + {0xAA4C, 0xAA4C, prExtend}, // Mn CHAM CONSONANT SIGN FINAL M + {0xAA4D, 0xAA4D, prSpacingMark}, // Mc CHAM CONSONANT SIGN FINAL H + {0xAA7C, 0xAA7C, prExtend}, // Mn MYANMAR SIGN TAI LAING TONE-2 + {0xAAB0, 0xAAB0, prExtend}, // Mn TAI VIET MAI KANG + {0xAAB2, 0xAAB4, prExtend}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U + {0xAAB7, 0xAAB8, prExtend}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA + {0xAABE, 0xAABF, prExtend}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK + {0xAAC1, 0xAAC1, prExtend}, // Mn TAI VIET TONE MAI THO + {0xAAEB, 0xAAEB, prSpacingMark}, // Mc MEETEI MAYEK VOWEL SIGN II + {0xAAEC, 0xAAED, prExtend}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI + {0xAAEE, 0xAAEF, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU + {0xAAF5, 0xAAF5, prSpacingMark}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA + {0xAAF6, 0xAAF6, prExtend}, // Mn MEETEI MAYEK VIRAMA + {0xABE3, 0xABE4, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP + {0xABE5, 0xABE5, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN ANAP + {0xABE6, 0xABE7, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP + {0xABE8, 0xABE8, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN UNAP + {0xABE9, 0xABEA, prSpacingMark}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG + {0xABEC, 0xABEC, prSpacingMark}, // Mc MEETEI MAYEK LUM IYEK + {0xABED, 0xABED, prExtend}, // Mn MEETEI MAYEK APUN IYEK + {0xAC00, 0xAC00, prLV}, // Lo HANGUL SYLLABLE GA + {0xAC01, 0xAC1B, prLVT}, // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH + {0xAC1C, 0xAC1C, prLV}, // Lo HANGUL SYLLABLE GAE + {0xAC1D, 0xAC37, prLVT}, // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH + {0xAC38, 0xAC38, prLV}, // Lo HANGUL SYLLABLE GYA + {0xAC39, 0xAC53, prLVT}, // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH + {0xAC54, 0xAC54, prLV}, // Lo HANGUL SYLLABLE GYAE + {0xAC55, 0xAC6F, prLVT}, // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH + {0xAC70, 0xAC70, prLV}, // Lo HANGUL SYLLABLE GEO + {0xAC71, 0xAC8B, prLVT}, // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH + {0xAC8C, 0xAC8C, prLV}, // Lo HANGUL SYLLABLE GE + {0xAC8D, 0xACA7, prLVT}, // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH + {0xACA8, 0xACA8, prLV}, // Lo HANGUL SYLLABLE GYEO + {0xACA9, 0xACC3, prLVT}, // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH + {0xACC4, 0xACC4, prLV}, // Lo HANGUL SYLLABLE GYE + {0xACC5, 0xACDF, prLVT}, // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH + {0xACE0, 0xACE0, prLV}, // Lo HANGUL SYLLABLE GO + {0xACE1, 0xACFB, prLVT}, // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH + {0xACFC, 0xACFC, prLV}, // Lo HANGUL SYLLABLE GWA + {0xACFD, 0xAD17, prLVT}, // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH + {0xAD18, 0xAD18, prLV}, // Lo HANGUL SYLLABLE GWAE + {0xAD19, 0xAD33, prLVT}, // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH + {0xAD34, 0xAD34, prLV}, // Lo HANGUL SYLLABLE GOE + {0xAD35, 0xAD4F, prLVT}, // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH + {0xAD50, 0xAD50, prLV}, // Lo HANGUL SYLLABLE GYO + {0xAD51, 0xAD6B, prLVT}, // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH + {0xAD6C, 0xAD6C, prLV}, // Lo HANGUL SYLLABLE GU + {0xAD6D, 0xAD87, prLVT}, // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH + {0xAD88, 0xAD88, prLV}, // Lo HANGUL SYLLABLE GWEO + {0xAD89, 0xADA3, prLVT}, // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH + {0xADA4, 0xADA4, prLV}, // Lo HANGUL SYLLABLE GWE + {0xADA5, 0xADBF, prLVT}, // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH + {0xADC0, 0xADC0, prLV}, // Lo HANGUL SYLLABLE GWI + {0xADC1, 0xADDB, prLVT}, // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH + {0xADDC, 0xADDC, prLV}, // Lo HANGUL SYLLABLE GYU + {0xADDD, 0xADF7, prLVT}, // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH + {0xADF8, 0xADF8, prLV}, // Lo HANGUL SYLLABLE GEU + {0xADF9, 0xAE13, prLVT}, // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH + {0xAE14, 0xAE14, prLV}, // Lo HANGUL SYLLABLE GYI + {0xAE15, 0xAE2F, prLVT}, // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH + {0xAE30, 0xAE30, prLV}, // Lo HANGUL SYLLABLE GI + {0xAE31, 0xAE4B, prLVT}, // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH + {0xAE4C, 0xAE4C, prLV}, // Lo HANGUL SYLLABLE GGA + {0xAE4D, 0xAE67, prLVT}, // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH + {0xAE68, 0xAE68, prLV}, // Lo HANGUL SYLLABLE GGAE + {0xAE69, 0xAE83, prLVT}, // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH + {0xAE84, 0xAE84, prLV}, // Lo HANGUL SYLLABLE GGYA + {0xAE85, 0xAE9F, prLVT}, // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH + {0xAEA0, 0xAEA0, prLV}, // Lo HANGUL SYLLABLE GGYAE + {0xAEA1, 0xAEBB, prLVT}, // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH + {0xAEBC, 0xAEBC, prLV}, // Lo HANGUL SYLLABLE GGEO + {0xAEBD, 0xAED7, prLVT}, // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH + {0xAED8, 0xAED8, prLV}, // Lo HANGUL SYLLABLE GGE + {0xAED9, 0xAEF3, prLVT}, // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH + {0xAEF4, 0xAEF4, prLV}, // Lo HANGUL SYLLABLE GGYEO + {0xAEF5, 0xAF0F, prLVT}, // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH + {0xAF10, 0xAF10, prLV}, // Lo HANGUL SYLLABLE GGYE + {0xAF11, 0xAF2B, prLVT}, // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH + {0xAF2C, 0xAF2C, prLV}, // Lo HANGUL SYLLABLE GGO + {0xAF2D, 0xAF47, prLVT}, // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH + {0xAF48, 0xAF48, prLV}, // Lo HANGUL SYLLABLE GGWA + {0xAF49, 0xAF63, prLVT}, // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH + {0xAF64, 0xAF64, prLV}, // Lo HANGUL SYLLABLE GGWAE + {0xAF65, 0xAF7F, prLVT}, // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH + {0xAF80, 0xAF80, prLV}, // Lo HANGUL SYLLABLE GGOE + {0xAF81, 0xAF9B, prLVT}, // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH + {0xAF9C, 0xAF9C, prLV}, // Lo HANGUL SYLLABLE GGYO + {0xAF9D, 0xAFB7, prLVT}, // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH + {0xAFB8, 0xAFB8, prLV}, // Lo HANGUL SYLLABLE GGU + {0xAFB9, 0xAFD3, prLVT}, // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH + {0xAFD4, 0xAFD4, prLV}, // Lo HANGUL SYLLABLE GGWEO + {0xAFD5, 0xAFEF, prLVT}, // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH + {0xAFF0, 0xAFF0, prLV}, // Lo HANGUL SYLLABLE GGWE + {0xAFF1, 0xB00B, prLVT}, // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH + {0xB00C, 0xB00C, prLV}, // Lo HANGUL SYLLABLE GGWI + {0xB00D, 0xB027, prLVT}, // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH + {0xB028, 0xB028, prLV}, // Lo HANGUL SYLLABLE GGYU + {0xB029, 0xB043, prLVT}, // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH + {0xB044, 0xB044, prLV}, // Lo HANGUL SYLLABLE GGEU + {0xB045, 0xB05F, prLVT}, // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH + {0xB060, 0xB060, prLV}, // Lo HANGUL SYLLABLE GGYI + {0xB061, 0xB07B, prLVT}, // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH + {0xB07C, 0xB07C, prLV}, // Lo HANGUL SYLLABLE GGI + {0xB07D, 0xB097, prLVT}, // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH + {0xB098, 0xB098, prLV}, // Lo HANGUL SYLLABLE NA + {0xB099, 0xB0B3, prLVT}, // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH + {0xB0B4, 0xB0B4, prLV}, // Lo HANGUL SYLLABLE NAE + {0xB0B5, 0xB0CF, prLVT}, // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH + {0xB0D0, 0xB0D0, prLV}, // Lo HANGUL SYLLABLE NYA + {0xB0D1, 0xB0EB, prLVT}, // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH + {0xB0EC, 0xB0EC, prLV}, // Lo HANGUL SYLLABLE NYAE + {0xB0ED, 0xB107, prLVT}, // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH + {0xB108, 0xB108, prLV}, // Lo HANGUL SYLLABLE NEO + {0xB109, 0xB123, prLVT}, // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH + {0xB124, 0xB124, prLV}, // Lo HANGUL SYLLABLE NE + {0xB125, 0xB13F, prLVT}, // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH + {0xB140, 0xB140, prLV}, // Lo HANGUL SYLLABLE NYEO + {0xB141, 0xB15B, prLVT}, // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH + {0xB15C, 0xB15C, prLV}, // Lo HANGUL SYLLABLE NYE + {0xB15D, 0xB177, prLVT}, // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH + {0xB178, 0xB178, prLV}, // Lo HANGUL SYLLABLE NO + {0xB179, 0xB193, prLVT}, // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH + {0xB194, 0xB194, prLV}, // Lo HANGUL SYLLABLE NWA + {0xB195, 0xB1AF, prLVT}, // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH + {0xB1B0, 0xB1B0, prLV}, // Lo HANGUL SYLLABLE NWAE + {0xB1B1, 0xB1CB, prLVT}, // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH + {0xB1CC, 0xB1CC, prLV}, // Lo HANGUL SYLLABLE NOE + {0xB1CD, 0xB1E7, prLVT}, // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH + {0xB1E8, 0xB1E8, prLV}, // Lo HANGUL SYLLABLE NYO + {0xB1E9, 0xB203, prLVT}, // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH + {0xB204, 0xB204, prLV}, // Lo HANGUL SYLLABLE NU + {0xB205, 0xB21F, prLVT}, // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH + {0xB220, 0xB220, prLV}, // Lo HANGUL SYLLABLE NWEO + {0xB221, 0xB23B, prLVT}, // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH + {0xB23C, 0xB23C, prLV}, // Lo HANGUL SYLLABLE NWE + {0xB23D, 0xB257, prLVT}, // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH + {0xB258, 0xB258, prLV}, // Lo HANGUL SYLLABLE NWI + {0xB259, 0xB273, prLVT}, // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH + {0xB274, 0xB274, prLV}, // Lo HANGUL SYLLABLE NYU + {0xB275, 0xB28F, prLVT}, // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH + {0xB290, 0xB290, prLV}, // Lo HANGUL SYLLABLE NEU + {0xB291, 0xB2AB, prLVT}, // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH + {0xB2AC, 0xB2AC, prLV}, // Lo HANGUL SYLLABLE NYI + {0xB2AD, 0xB2C7, prLVT}, // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH + {0xB2C8, 0xB2C8, prLV}, // Lo HANGUL SYLLABLE NI + {0xB2C9, 0xB2E3, prLVT}, // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH + {0xB2E4, 0xB2E4, prLV}, // Lo HANGUL SYLLABLE DA + {0xB2E5, 0xB2FF, prLVT}, // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH + {0xB300, 0xB300, prLV}, // Lo HANGUL SYLLABLE DAE + {0xB301, 0xB31B, prLVT}, // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH + {0xB31C, 0xB31C, prLV}, // Lo HANGUL SYLLABLE DYA + {0xB31D, 0xB337, prLVT}, // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH + {0xB338, 0xB338, prLV}, // Lo HANGUL SYLLABLE DYAE + {0xB339, 0xB353, prLVT}, // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH + {0xB354, 0xB354, prLV}, // Lo HANGUL SYLLABLE DEO + {0xB355, 0xB36F, prLVT}, // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH + {0xB370, 0xB370, prLV}, // Lo HANGUL SYLLABLE DE + {0xB371, 0xB38B, prLVT}, // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH + {0xB38C, 0xB38C, prLV}, // Lo HANGUL SYLLABLE DYEO + {0xB38D, 0xB3A7, prLVT}, // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH + {0xB3A8, 0xB3A8, prLV}, // Lo HANGUL SYLLABLE DYE + {0xB3A9, 0xB3C3, prLVT}, // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH + {0xB3C4, 0xB3C4, prLV}, // Lo HANGUL SYLLABLE DO + {0xB3C5, 0xB3DF, prLVT}, // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH + {0xB3E0, 0xB3E0, prLV}, // Lo HANGUL SYLLABLE DWA + {0xB3E1, 0xB3FB, prLVT}, // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH + {0xB3FC, 0xB3FC, prLV}, // Lo HANGUL SYLLABLE DWAE + {0xB3FD, 0xB417, prLVT}, // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH + {0xB418, 0xB418, prLV}, // Lo HANGUL SYLLABLE DOE + {0xB419, 0xB433, prLVT}, // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH + {0xB434, 0xB434, prLV}, // Lo HANGUL SYLLABLE DYO + {0xB435, 0xB44F, prLVT}, // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH + {0xB450, 0xB450, prLV}, // Lo HANGUL SYLLABLE DU + {0xB451, 0xB46B, prLVT}, // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH + {0xB46C, 0xB46C, prLV}, // Lo HANGUL SYLLABLE DWEO + {0xB46D, 0xB487, prLVT}, // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH + {0xB488, 0xB488, prLV}, // Lo HANGUL SYLLABLE DWE + {0xB489, 0xB4A3, prLVT}, // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH + {0xB4A4, 0xB4A4, prLV}, // Lo HANGUL SYLLABLE DWI + {0xB4A5, 0xB4BF, prLVT}, // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH + {0xB4C0, 0xB4C0, prLV}, // Lo HANGUL SYLLABLE DYU + {0xB4C1, 0xB4DB, prLVT}, // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH + {0xB4DC, 0xB4DC, prLV}, // Lo HANGUL SYLLABLE DEU + {0xB4DD, 0xB4F7, prLVT}, // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH + {0xB4F8, 0xB4F8, prLV}, // Lo HANGUL SYLLABLE DYI + {0xB4F9, 0xB513, prLVT}, // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH + {0xB514, 0xB514, prLV}, // Lo HANGUL SYLLABLE DI + {0xB515, 0xB52F, prLVT}, // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH + {0xB530, 0xB530, prLV}, // Lo HANGUL SYLLABLE DDA + {0xB531, 0xB54B, prLVT}, // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH + {0xB54C, 0xB54C, prLV}, // Lo HANGUL SYLLABLE DDAE + {0xB54D, 0xB567, prLVT}, // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH + {0xB568, 0xB568, prLV}, // Lo HANGUL SYLLABLE DDYA + {0xB569, 0xB583, prLVT}, // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH + {0xB584, 0xB584, prLV}, // Lo HANGUL SYLLABLE DDYAE + {0xB585, 0xB59F, prLVT}, // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH + {0xB5A0, 0xB5A0, prLV}, // Lo HANGUL SYLLABLE DDEO + {0xB5A1, 0xB5BB, prLVT}, // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH + {0xB5BC, 0xB5BC, prLV}, // Lo HANGUL SYLLABLE DDE + {0xB5BD, 0xB5D7, prLVT}, // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH + {0xB5D8, 0xB5D8, prLV}, // Lo HANGUL SYLLABLE DDYEO + {0xB5D9, 0xB5F3, prLVT}, // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH + {0xB5F4, 0xB5F4, prLV}, // Lo HANGUL SYLLABLE DDYE + {0xB5F5, 0xB60F, prLVT}, // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH + {0xB610, 0xB610, prLV}, // Lo HANGUL SYLLABLE DDO + {0xB611, 0xB62B, prLVT}, // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH + {0xB62C, 0xB62C, prLV}, // Lo HANGUL SYLLABLE DDWA + {0xB62D, 0xB647, prLVT}, // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH + {0xB648, 0xB648, prLV}, // Lo HANGUL SYLLABLE DDWAE + {0xB649, 0xB663, prLVT}, // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH + {0xB664, 0xB664, prLV}, // Lo HANGUL SYLLABLE DDOE + {0xB665, 0xB67F, prLVT}, // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH + {0xB680, 0xB680, prLV}, // Lo HANGUL SYLLABLE DDYO + {0xB681, 0xB69B, prLVT}, // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH + {0xB69C, 0xB69C, prLV}, // Lo HANGUL SYLLABLE DDU + {0xB69D, 0xB6B7, prLVT}, // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH + {0xB6B8, 0xB6B8, prLV}, // Lo HANGUL SYLLABLE DDWEO + {0xB6B9, 0xB6D3, prLVT}, // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH + {0xB6D4, 0xB6D4, prLV}, // Lo HANGUL SYLLABLE DDWE + {0xB6D5, 0xB6EF, prLVT}, // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH + {0xB6F0, 0xB6F0, prLV}, // Lo HANGUL SYLLABLE DDWI + {0xB6F1, 0xB70B, prLVT}, // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH + {0xB70C, 0xB70C, prLV}, // Lo HANGUL SYLLABLE DDYU + {0xB70D, 0xB727, prLVT}, // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH + {0xB728, 0xB728, prLV}, // Lo HANGUL SYLLABLE DDEU + {0xB729, 0xB743, prLVT}, // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH + {0xB744, 0xB744, prLV}, // Lo HANGUL SYLLABLE DDYI + {0xB745, 0xB75F, prLVT}, // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH + {0xB760, 0xB760, prLV}, // Lo HANGUL SYLLABLE DDI + {0xB761, 0xB77B, prLVT}, // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH + {0xB77C, 0xB77C, prLV}, // Lo HANGUL SYLLABLE RA + {0xB77D, 0xB797, prLVT}, // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH + {0xB798, 0xB798, prLV}, // Lo HANGUL SYLLABLE RAE + {0xB799, 0xB7B3, prLVT}, // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH + {0xB7B4, 0xB7B4, prLV}, // Lo HANGUL SYLLABLE RYA + {0xB7B5, 0xB7CF, prLVT}, // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH + {0xB7D0, 0xB7D0, prLV}, // Lo HANGUL SYLLABLE RYAE + {0xB7D1, 0xB7EB, prLVT}, // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH + {0xB7EC, 0xB7EC, prLV}, // Lo HANGUL SYLLABLE REO + {0xB7ED, 0xB807, prLVT}, // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH + {0xB808, 0xB808, prLV}, // Lo HANGUL SYLLABLE RE + {0xB809, 0xB823, prLVT}, // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH + {0xB824, 0xB824, prLV}, // Lo HANGUL SYLLABLE RYEO + {0xB825, 0xB83F, prLVT}, // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH + {0xB840, 0xB840, prLV}, // Lo HANGUL SYLLABLE RYE + {0xB841, 0xB85B, prLVT}, // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH + {0xB85C, 0xB85C, prLV}, // Lo HANGUL SYLLABLE RO + {0xB85D, 0xB877, prLVT}, // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH + {0xB878, 0xB878, prLV}, // Lo HANGUL SYLLABLE RWA + {0xB879, 0xB893, prLVT}, // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH + {0xB894, 0xB894, prLV}, // Lo HANGUL SYLLABLE RWAE + {0xB895, 0xB8AF, prLVT}, // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH + {0xB8B0, 0xB8B0, prLV}, // Lo HANGUL SYLLABLE ROE + {0xB8B1, 0xB8CB, prLVT}, // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH + {0xB8CC, 0xB8CC, prLV}, // Lo HANGUL SYLLABLE RYO + {0xB8CD, 0xB8E7, prLVT}, // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH + {0xB8E8, 0xB8E8, prLV}, // Lo HANGUL SYLLABLE RU + {0xB8E9, 0xB903, prLVT}, // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH + {0xB904, 0xB904, prLV}, // Lo HANGUL SYLLABLE RWEO + {0xB905, 0xB91F, prLVT}, // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH + {0xB920, 0xB920, prLV}, // Lo HANGUL SYLLABLE RWE + {0xB921, 0xB93B, prLVT}, // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH + {0xB93C, 0xB93C, prLV}, // Lo HANGUL SYLLABLE RWI + {0xB93D, 0xB957, prLVT}, // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH + {0xB958, 0xB958, prLV}, // Lo HANGUL SYLLABLE RYU + {0xB959, 0xB973, prLVT}, // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH + {0xB974, 0xB974, prLV}, // Lo HANGUL SYLLABLE REU + {0xB975, 0xB98F, prLVT}, // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH + {0xB990, 0xB990, prLV}, // Lo HANGUL SYLLABLE RYI + {0xB991, 0xB9AB, prLVT}, // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH + {0xB9AC, 0xB9AC, prLV}, // Lo HANGUL SYLLABLE RI + {0xB9AD, 0xB9C7, prLVT}, // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH + {0xB9C8, 0xB9C8, prLV}, // Lo HANGUL SYLLABLE MA + {0xB9C9, 0xB9E3, prLVT}, // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH + {0xB9E4, 0xB9E4, prLV}, // Lo HANGUL SYLLABLE MAE + {0xB9E5, 0xB9FF, prLVT}, // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH + {0xBA00, 0xBA00, prLV}, // Lo HANGUL SYLLABLE MYA + {0xBA01, 0xBA1B, prLVT}, // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH + {0xBA1C, 0xBA1C, prLV}, // Lo HANGUL SYLLABLE MYAE + {0xBA1D, 0xBA37, prLVT}, // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH + {0xBA38, 0xBA38, prLV}, // Lo HANGUL SYLLABLE MEO + {0xBA39, 0xBA53, prLVT}, // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH + {0xBA54, 0xBA54, prLV}, // Lo HANGUL SYLLABLE ME + {0xBA55, 0xBA6F, prLVT}, // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH + {0xBA70, 0xBA70, prLV}, // Lo HANGUL SYLLABLE MYEO + {0xBA71, 0xBA8B, prLVT}, // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH + {0xBA8C, 0xBA8C, prLV}, // Lo HANGUL SYLLABLE MYE + {0xBA8D, 0xBAA7, prLVT}, // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH + {0xBAA8, 0xBAA8, prLV}, // Lo HANGUL SYLLABLE MO + {0xBAA9, 0xBAC3, prLVT}, // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH + {0xBAC4, 0xBAC4, prLV}, // Lo HANGUL SYLLABLE MWA + {0xBAC5, 0xBADF, prLVT}, // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH + {0xBAE0, 0xBAE0, prLV}, // Lo HANGUL SYLLABLE MWAE + {0xBAE1, 0xBAFB, prLVT}, // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH + {0xBAFC, 0xBAFC, prLV}, // Lo HANGUL SYLLABLE MOE + {0xBAFD, 0xBB17, prLVT}, // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH + {0xBB18, 0xBB18, prLV}, // Lo HANGUL SYLLABLE MYO + {0xBB19, 0xBB33, prLVT}, // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH + {0xBB34, 0xBB34, prLV}, // Lo HANGUL SYLLABLE MU + {0xBB35, 0xBB4F, prLVT}, // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH + {0xBB50, 0xBB50, prLV}, // Lo HANGUL SYLLABLE MWEO + {0xBB51, 0xBB6B, prLVT}, // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH + {0xBB6C, 0xBB6C, prLV}, // Lo HANGUL SYLLABLE MWE + {0xBB6D, 0xBB87, prLVT}, // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH + {0xBB88, 0xBB88, prLV}, // Lo HANGUL SYLLABLE MWI + {0xBB89, 0xBBA3, prLVT}, // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH + {0xBBA4, 0xBBA4, prLV}, // Lo HANGUL SYLLABLE MYU + {0xBBA5, 0xBBBF, prLVT}, // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH + {0xBBC0, 0xBBC0, prLV}, // Lo HANGUL SYLLABLE MEU + {0xBBC1, 0xBBDB, prLVT}, // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH + {0xBBDC, 0xBBDC, prLV}, // Lo HANGUL SYLLABLE MYI + {0xBBDD, 0xBBF7, prLVT}, // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH + {0xBBF8, 0xBBF8, prLV}, // Lo HANGUL SYLLABLE MI + {0xBBF9, 0xBC13, prLVT}, // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH + {0xBC14, 0xBC14, prLV}, // Lo HANGUL SYLLABLE BA + {0xBC15, 0xBC2F, prLVT}, // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH + {0xBC30, 0xBC30, prLV}, // Lo HANGUL SYLLABLE BAE + {0xBC31, 0xBC4B, prLVT}, // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH + {0xBC4C, 0xBC4C, prLV}, // Lo HANGUL SYLLABLE BYA + {0xBC4D, 0xBC67, prLVT}, // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH + {0xBC68, 0xBC68, prLV}, // Lo HANGUL SYLLABLE BYAE + {0xBC69, 0xBC83, prLVT}, // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH + {0xBC84, 0xBC84, prLV}, // Lo HANGUL SYLLABLE BEO + {0xBC85, 0xBC9F, prLVT}, // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH + {0xBCA0, 0xBCA0, prLV}, // Lo HANGUL SYLLABLE BE + {0xBCA1, 0xBCBB, prLVT}, // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH + {0xBCBC, 0xBCBC, prLV}, // Lo HANGUL SYLLABLE BYEO + {0xBCBD, 0xBCD7, prLVT}, // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH + {0xBCD8, 0xBCD8, prLV}, // Lo HANGUL SYLLABLE BYE + {0xBCD9, 0xBCF3, prLVT}, // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH + {0xBCF4, 0xBCF4, prLV}, // Lo HANGUL SYLLABLE BO + {0xBCF5, 0xBD0F, prLVT}, // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH + {0xBD10, 0xBD10, prLV}, // Lo HANGUL SYLLABLE BWA + {0xBD11, 0xBD2B, prLVT}, // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH + {0xBD2C, 0xBD2C, prLV}, // Lo HANGUL SYLLABLE BWAE + {0xBD2D, 0xBD47, prLVT}, // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH + {0xBD48, 0xBD48, prLV}, // Lo HANGUL SYLLABLE BOE + {0xBD49, 0xBD63, prLVT}, // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH + {0xBD64, 0xBD64, prLV}, // Lo HANGUL SYLLABLE BYO + {0xBD65, 0xBD7F, prLVT}, // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH + {0xBD80, 0xBD80, prLV}, // Lo HANGUL SYLLABLE BU + {0xBD81, 0xBD9B, prLVT}, // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH + {0xBD9C, 0xBD9C, prLV}, // Lo HANGUL SYLLABLE BWEO + {0xBD9D, 0xBDB7, prLVT}, // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH + {0xBDB8, 0xBDB8, prLV}, // Lo HANGUL SYLLABLE BWE + {0xBDB9, 0xBDD3, prLVT}, // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH + {0xBDD4, 0xBDD4, prLV}, // Lo HANGUL SYLLABLE BWI + {0xBDD5, 0xBDEF, prLVT}, // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH + {0xBDF0, 0xBDF0, prLV}, // Lo HANGUL SYLLABLE BYU + {0xBDF1, 0xBE0B, prLVT}, // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH + {0xBE0C, 0xBE0C, prLV}, // Lo HANGUL SYLLABLE BEU + {0xBE0D, 0xBE27, prLVT}, // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH + {0xBE28, 0xBE28, prLV}, // Lo HANGUL SYLLABLE BYI + {0xBE29, 0xBE43, prLVT}, // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH + {0xBE44, 0xBE44, prLV}, // Lo HANGUL SYLLABLE BI + {0xBE45, 0xBE5F, prLVT}, // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH + {0xBE60, 0xBE60, prLV}, // Lo HANGUL SYLLABLE BBA + {0xBE61, 0xBE7B, prLVT}, // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH + {0xBE7C, 0xBE7C, prLV}, // Lo HANGUL SYLLABLE BBAE + {0xBE7D, 0xBE97, prLVT}, // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH + {0xBE98, 0xBE98, prLV}, // Lo HANGUL SYLLABLE BBYA + {0xBE99, 0xBEB3, prLVT}, // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH + {0xBEB4, 0xBEB4, prLV}, // Lo HANGUL SYLLABLE BBYAE + {0xBEB5, 0xBECF, prLVT}, // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH + {0xBED0, 0xBED0, prLV}, // Lo HANGUL SYLLABLE BBEO + {0xBED1, 0xBEEB, prLVT}, // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH + {0xBEEC, 0xBEEC, prLV}, // Lo HANGUL SYLLABLE BBE + {0xBEED, 0xBF07, prLVT}, // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH + {0xBF08, 0xBF08, prLV}, // Lo HANGUL SYLLABLE BBYEO + {0xBF09, 0xBF23, prLVT}, // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH + {0xBF24, 0xBF24, prLV}, // Lo HANGUL SYLLABLE BBYE + {0xBF25, 0xBF3F, prLVT}, // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH + {0xBF40, 0xBF40, prLV}, // Lo HANGUL SYLLABLE BBO + {0xBF41, 0xBF5B, prLVT}, // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH + {0xBF5C, 0xBF5C, prLV}, // Lo HANGUL SYLLABLE BBWA + {0xBF5D, 0xBF77, prLVT}, // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH + {0xBF78, 0xBF78, prLV}, // Lo HANGUL SYLLABLE BBWAE + {0xBF79, 0xBF93, prLVT}, // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH + {0xBF94, 0xBF94, prLV}, // Lo HANGUL SYLLABLE BBOE + {0xBF95, 0xBFAF, prLVT}, // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH + {0xBFB0, 0xBFB0, prLV}, // Lo HANGUL SYLLABLE BBYO + {0xBFB1, 0xBFCB, prLVT}, // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH + {0xBFCC, 0xBFCC, prLV}, // Lo HANGUL SYLLABLE BBU + {0xBFCD, 0xBFE7, prLVT}, // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH + {0xBFE8, 0xBFE8, prLV}, // Lo HANGUL SYLLABLE BBWEO + {0xBFE9, 0xC003, prLVT}, // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH + {0xC004, 0xC004, prLV}, // Lo HANGUL SYLLABLE BBWE + {0xC005, 0xC01F, prLVT}, // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH + {0xC020, 0xC020, prLV}, // Lo HANGUL SYLLABLE BBWI + {0xC021, 0xC03B, prLVT}, // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH + {0xC03C, 0xC03C, prLV}, // Lo HANGUL SYLLABLE BBYU + {0xC03D, 0xC057, prLVT}, // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH + {0xC058, 0xC058, prLV}, // Lo HANGUL SYLLABLE BBEU + {0xC059, 0xC073, prLVT}, // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH + {0xC074, 0xC074, prLV}, // Lo HANGUL SYLLABLE BBYI + {0xC075, 0xC08F, prLVT}, // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH + {0xC090, 0xC090, prLV}, // Lo HANGUL SYLLABLE BBI + {0xC091, 0xC0AB, prLVT}, // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH + {0xC0AC, 0xC0AC, prLV}, // Lo HANGUL SYLLABLE SA + {0xC0AD, 0xC0C7, prLVT}, // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH + {0xC0C8, 0xC0C8, prLV}, // Lo HANGUL SYLLABLE SAE + {0xC0C9, 0xC0E3, prLVT}, // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH + {0xC0E4, 0xC0E4, prLV}, // Lo HANGUL SYLLABLE SYA + {0xC0E5, 0xC0FF, prLVT}, // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH + {0xC100, 0xC100, prLV}, // Lo HANGUL SYLLABLE SYAE + {0xC101, 0xC11B, prLVT}, // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH + {0xC11C, 0xC11C, prLV}, // Lo HANGUL SYLLABLE SEO + {0xC11D, 0xC137, prLVT}, // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH + {0xC138, 0xC138, prLV}, // Lo HANGUL SYLLABLE SE + {0xC139, 0xC153, prLVT}, // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH + {0xC154, 0xC154, prLV}, // Lo HANGUL SYLLABLE SYEO + {0xC155, 0xC16F, prLVT}, // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH + {0xC170, 0xC170, prLV}, // Lo HANGUL SYLLABLE SYE + {0xC171, 0xC18B, prLVT}, // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH + {0xC18C, 0xC18C, prLV}, // Lo HANGUL SYLLABLE SO + {0xC18D, 0xC1A7, prLVT}, // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH + {0xC1A8, 0xC1A8, prLV}, // Lo HANGUL SYLLABLE SWA + {0xC1A9, 0xC1C3, prLVT}, // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH + {0xC1C4, 0xC1C4, prLV}, // Lo HANGUL SYLLABLE SWAE + {0xC1C5, 0xC1DF, prLVT}, // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH + {0xC1E0, 0xC1E0, prLV}, // Lo HANGUL SYLLABLE SOE + {0xC1E1, 0xC1FB, prLVT}, // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH + {0xC1FC, 0xC1FC, prLV}, // Lo HANGUL SYLLABLE SYO + {0xC1FD, 0xC217, prLVT}, // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH + {0xC218, 0xC218, prLV}, // Lo HANGUL SYLLABLE SU + {0xC219, 0xC233, prLVT}, // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH + {0xC234, 0xC234, prLV}, // Lo HANGUL SYLLABLE SWEO + {0xC235, 0xC24F, prLVT}, // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH + {0xC250, 0xC250, prLV}, // Lo HANGUL SYLLABLE SWE + {0xC251, 0xC26B, prLVT}, // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH + {0xC26C, 0xC26C, prLV}, // Lo HANGUL SYLLABLE SWI + {0xC26D, 0xC287, prLVT}, // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH + {0xC288, 0xC288, prLV}, // Lo HANGUL SYLLABLE SYU + {0xC289, 0xC2A3, prLVT}, // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH + {0xC2A4, 0xC2A4, prLV}, // Lo HANGUL SYLLABLE SEU + {0xC2A5, 0xC2BF, prLVT}, // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH + {0xC2C0, 0xC2C0, prLV}, // Lo HANGUL SYLLABLE SYI + {0xC2C1, 0xC2DB, prLVT}, // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH + {0xC2DC, 0xC2DC, prLV}, // Lo HANGUL SYLLABLE SI + {0xC2DD, 0xC2F7, prLVT}, // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH + {0xC2F8, 0xC2F8, prLV}, // Lo HANGUL SYLLABLE SSA + {0xC2F9, 0xC313, prLVT}, // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH + {0xC314, 0xC314, prLV}, // Lo HANGUL SYLLABLE SSAE + {0xC315, 0xC32F, prLVT}, // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH + {0xC330, 0xC330, prLV}, // Lo HANGUL SYLLABLE SSYA + {0xC331, 0xC34B, prLVT}, // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH + {0xC34C, 0xC34C, prLV}, // Lo HANGUL SYLLABLE SSYAE + {0xC34D, 0xC367, prLVT}, // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH + {0xC368, 0xC368, prLV}, // Lo HANGUL SYLLABLE SSEO + {0xC369, 0xC383, prLVT}, // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH + {0xC384, 0xC384, prLV}, // Lo HANGUL SYLLABLE SSE + {0xC385, 0xC39F, prLVT}, // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH + {0xC3A0, 0xC3A0, prLV}, // Lo HANGUL SYLLABLE SSYEO + {0xC3A1, 0xC3BB, prLVT}, // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH + {0xC3BC, 0xC3BC, prLV}, // Lo HANGUL SYLLABLE SSYE + {0xC3BD, 0xC3D7, prLVT}, // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH + {0xC3D8, 0xC3D8, prLV}, // Lo HANGUL SYLLABLE SSO + {0xC3D9, 0xC3F3, prLVT}, // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH + {0xC3F4, 0xC3F4, prLV}, // Lo HANGUL SYLLABLE SSWA + {0xC3F5, 0xC40F, prLVT}, // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH + {0xC410, 0xC410, prLV}, // Lo HANGUL SYLLABLE SSWAE + {0xC411, 0xC42B, prLVT}, // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH + {0xC42C, 0xC42C, prLV}, // Lo HANGUL SYLLABLE SSOE + {0xC42D, 0xC447, prLVT}, // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH + {0xC448, 0xC448, prLV}, // Lo HANGUL SYLLABLE SSYO + {0xC449, 0xC463, prLVT}, // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH + {0xC464, 0xC464, prLV}, // Lo HANGUL SYLLABLE SSU + {0xC465, 0xC47F, prLVT}, // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH + {0xC480, 0xC480, prLV}, // Lo HANGUL SYLLABLE SSWEO + {0xC481, 0xC49B, prLVT}, // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH + {0xC49C, 0xC49C, prLV}, // Lo HANGUL SYLLABLE SSWE + {0xC49D, 0xC4B7, prLVT}, // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH + {0xC4B8, 0xC4B8, prLV}, // Lo HANGUL SYLLABLE SSWI + {0xC4B9, 0xC4D3, prLVT}, // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH + {0xC4D4, 0xC4D4, prLV}, // Lo HANGUL SYLLABLE SSYU + {0xC4D5, 0xC4EF, prLVT}, // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH + {0xC4F0, 0xC4F0, prLV}, // Lo HANGUL SYLLABLE SSEU + {0xC4F1, 0xC50B, prLVT}, // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH + {0xC50C, 0xC50C, prLV}, // Lo HANGUL SYLLABLE SSYI + {0xC50D, 0xC527, prLVT}, // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH + {0xC528, 0xC528, prLV}, // Lo HANGUL SYLLABLE SSI + {0xC529, 0xC543, prLVT}, // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH + {0xC544, 0xC544, prLV}, // Lo HANGUL SYLLABLE A + {0xC545, 0xC55F, prLVT}, // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH + {0xC560, 0xC560, prLV}, // Lo HANGUL SYLLABLE AE + {0xC561, 0xC57B, prLVT}, // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH + {0xC57C, 0xC57C, prLV}, // Lo HANGUL SYLLABLE YA + {0xC57D, 0xC597, prLVT}, // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH + {0xC598, 0xC598, prLV}, // Lo HANGUL SYLLABLE YAE + {0xC599, 0xC5B3, prLVT}, // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH + {0xC5B4, 0xC5B4, prLV}, // Lo HANGUL SYLLABLE EO + {0xC5B5, 0xC5CF, prLVT}, // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH + {0xC5D0, 0xC5D0, prLV}, // Lo HANGUL SYLLABLE E + {0xC5D1, 0xC5EB, prLVT}, // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH + {0xC5EC, 0xC5EC, prLV}, // Lo HANGUL SYLLABLE YEO + {0xC5ED, 0xC607, prLVT}, // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH + {0xC608, 0xC608, prLV}, // Lo HANGUL SYLLABLE YE + {0xC609, 0xC623, prLVT}, // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH + {0xC624, 0xC624, prLV}, // Lo HANGUL SYLLABLE O + {0xC625, 0xC63F, prLVT}, // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH + {0xC640, 0xC640, prLV}, // Lo HANGUL SYLLABLE WA + {0xC641, 0xC65B, prLVT}, // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH + {0xC65C, 0xC65C, prLV}, // Lo HANGUL SYLLABLE WAE + {0xC65D, 0xC677, prLVT}, // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH + {0xC678, 0xC678, prLV}, // Lo HANGUL SYLLABLE OE + {0xC679, 0xC693, prLVT}, // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH + {0xC694, 0xC694, prLV}, // Lo HANGUL SYLLABLE YO + {0xC695, 0xC6AF, prLVT}, // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH + {0xC6B0, 0xC6B0, prLV}, // Lo HANGUL SYLLABLE U + {0xC6B1, 0xC6CB, prLVT}, // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH + {0xC6CC, 0xC6CC, prLV}, // Lo HANGUL SYLLABLE WEO + {0xC6CD, 0xC6E7, prLVT}, // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH + {0xC6E8, 0xC6E8, prLV}, // Lo HANGUL SYLLABLE WE + {0xC6E9, 0xC703, prLVT}, // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH + {0xC704, 0xC704, prLV}, // Lo HANGUL SYLLABLE WI + {0xC705, 0xC71F, prLVT}, // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH + {0xC720, 0xC720, prLV}, // Lo HANGUL SYLLABLE YU + {0xC721, 0xC73B, prLVT}, // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH + {0xC73C, 0xC73C, prLV}, // Lo HANGUL SYLLABLE EU + {0xC73D, 0xC757, prLVT}, // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH + {0xC758, 0xC758, prLV}, // Lo HANGUL SYLLABLE YI + {0xC759, 0xC773, prLVT}, // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH + {0xC774, 0xC774, prLV}, // Lo HANGUL SYLLABLE I + {0xC775, 0xC78F, prLVT}, // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH + {0xC790, 0xC790, prLV}, // Lo HANGUL SYLLABLE JA + {0xC791, 0xC7AB, prLVT}, // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH + {0xC7AC, 0xC7AC, prLV}, // Lo HANGUL SYLLABLE JAE + {0xC7AD, 0xC7C7, prLVT}, // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH + {0xC7C8, 0xC7C8, prLV}, // Lo HANGUL SYLLABLE JYA + {0xC7C9, 0xC7E3, prLVT}, // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH + {0xC7E4, 0xC7E4, prLV}, // Lo HANGUL SYLLABLE JYAE + {0xC7E5, 0xC7FF, prLVT}, // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH + {0xC800, 0xC800, prLV}, // Lo HANGUL SYLLABLE JEO + {0xC801, 0xC81B, prLVT}, // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH + {0xC81C, 0xC81C, prLV}, // Lo HANGUL SYLLABLE JE + {0xC81D, 0xC837, prLVT}, // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH + {0xC838, 0xC838, prLV}, // Lo HANGUL SYLLABLE JYEO + {0xC839, 0xC853, prLVT}, // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH + {0xC854, 0xC854, prLV}, // Lo HANGUL SYLLABLE JYE + {0xC855, 0xC86F, prLVT}, // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH + {0xC870, 0xC870, prLV}, // Lo HANGUL SYLLABLE JO + {0xC871, 0xC88B, prLVT}, // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH + {0xC88C, 0xC88C, prLV}, // Lo HANGUL SYLLABLE JWA + {0xC88D, 0xC8A7, prLVT}, // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH + {0xC8A8, 0xC8A8, prLV}, // Lo HANGUL SYLLABLE JWAE + {0xC8A9, 0xC8C3, prLVT}, // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH + {0xC8C4, 0xC8C4, prLV}, // Lo HANGUL SYLLABLE JOE + {0xC8C5, 0xC8DF, prLVT}, // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH + {0xC8E0, 0xC8E0, prLV}, // Lo HANGUL SYLLABLE JYO + {0xC8E1, 0xC8FB, prLVT}, // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH + {0xC8FC, 0xC8FC, prLV}, // Lo HANGUL SYLLABLE JU + {0xC8FD, 0xC917, prLVT}, // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH + {0xC918, 0xC918, prLV}, // Lo HANGUL SYLLABLE JWEO + {0xC919, 0xC933, prLVT}, // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH + {0xC934, 0xC934, prLV}, // Lo HANGUL SYLLABLE JWE + {0xC935, 0xC94F, prLVT}, // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH + {0xC950, 0xC950, prLV}, // Lo HANGUL SYLLABLE JWI + {0xC951, 0xC96B, prLVT}, // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH + {0xC96C, 0xC96C, prLV}, // Lo HANGUL SYLLABLE JYU + {0xC96D, 0xC987, prLVT}, // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH + {0xC988, 0xC988, prLV}, // Lo HANGUL SYLLABLE JEU + {0xC989, 0xC9A3, prLVT}, // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH + {0xC9A4, 0xC9A4, prLV}, // Lo HANGUL SYLLABLE JYI + {0xC9A5, 0xC9BF, prLVT}, // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH + {0xC9C0, 0xC9C0, prLV}, // Lo HANGUL SYLLABLE JI + {0xC9C1, 0xC9DB, prLVT}, // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH + {0xC9DC, 0xC9DC, prLV}, // Lo HANGUL SYLLABLE JJA + {0xC9DD, 0xC9F7, prLVT}, // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH + {0xC9F8, 0xC9F8, prLV}, // Lo HANGUL SYLLABLE JJAE + {0xC9F9, 0xCA13, prLVT}, // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH + {0xCA14, 0xCA14, prLV}, // Lo HANGUL SYLLABLE JJYA + {0xCA15, 0xCA2F, prLVT}, // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH + {0xCA30, 0xCA30, prLV}, // Lo HANGUL SYLLABLE JJYAE + {0xCA31, 0xCA4B, prLVT}, // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH + {0xCA4C, 0xCA4C, prLV}, // Lo HANGUL SYLLABLE JJEO + {0xCA4D, 0xCA67, prLVT}, // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH + {0xCA68, 0xCA68, prLV}, // Lo HANGUL SYLLABLE JJE + {0xCA69, 0xCA83, prLVT}, // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH + {0xCA84, 0xCA84, prLV}, // Lo HANGUL SYLLABLE JJYEO + {0xCA85, 0xCA9F, prLVT}, // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH + {0xCAA0, 0xCAA0, prLV}, // Lo HANGUL SYLLABLE JJYE + {0xCAA1, 0xCABB, prLVT}, // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH + {0xCABC, 0xCABC, prLV}, // Lo HANGUL SYLLABLE JJO + {0xCABD, 0xCAD7, prLVT}, // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH + {0xCAD8, 0xCAD8, prLV}, // Lo HANGUL SYLLABLE JJWA + {0xCAD9, 0xCAF3, prLVT}, // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH + {0xCAF4, 0xCAF4, prLV}, // Lo HANGUL SYLLABLE JJWAE + {0xCAF5, 0xCB0F, prLVT}, // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH + {0xCB10, 0xCB10, prLV}, // Lo HANGUL SYLLABLE JJOE + {0xCB11, 0xCB2B, prLVT}, // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH + {0xCB2C, 0xCB2C, prLV}, // Lo HANGUL SYLLABLE JJYO + {0xCB2D, 0xCB47, prLVT}, // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH + {0xCB48, 0xCB48, prLV}, // Lo HANGUL SYLLABLE JJU + {0xCB49, 0xCB63, prLVT}, // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH + {0xCB64, 0xCB64, prLV}, // Lo HANGUL SYLLABLE JJWEO + {0xCB65, 0xCB7F, prLVT}, // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH + {0xCB80, 0xCB80, prLV}, // Lo HANGUL SYLLABLE JJWE + {0xCB81, 0xCB9B, prLVT}, // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH + {0xCB9C, 0xCB9C, prLV}, // Lo HANGUL SYLLABLE JJWI + {0xCB9D, 0xCBB7, prLVT}, // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH + {0xCBB8, 0xCBB8, prLV}, // Lo HANGUL SYLLABLE JJYU + {0xCBB9, 0xCBD3, prLVT}, // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH + {0xCBD4, 0xCBD4, prLV}, // Lo HANGUL SYLLABLE JJEU + {0xCBD5, 0xCBEF, prLVT}, // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH + {0xCBF0, 0xCBF0, prLV}, // Lo HANGUL SYLLABLE JJYI + {0xCBF1, 0xCC0B, prLVT}, // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH + {0xCC0C, 0xCC0C, prLV}, // Lo HANGUL SYLLABLE JJI + {0xCC0D, 0xCC27, prLVT}, // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH + {0xCC28, 0xCC28, prLV}, // Lo HANGUL SYLLABLE CA + {0xCC29, 0xCC43, prLVT}, // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH + {0xCC44, 0xCC44, prLV}, // Lo HANGUL SYLLABLE CAE + {0xCC45, 0xCC5F, prLVT}, // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH + {0xCC60, 0xCC60, prLV}, // Lo HANGUL SYLLABLE CYA + {0xCC61, 0xCC7B, prLVT}, // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH + {0xCC7C, 0xCC7C, prLV}, // Lo HANGUL SYLLABLE CYAE + {0xCC7D, 0xCC97, prLVT}, // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH + {0xCC98, 0xCC98, prLV}, // Lo HANGUL SYLLABLE CEO + {0xCC99, 0xCCB3, prLVT}, // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH + {0xCCB4, 0xCCB4, prLV}, // Lo HANGUL SYLLABLE CE + {0xCCB5, 0xCCCF, prLVT}, // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH + {0xCCD0, 0xCCD0, prLV}, // Lo HANGUL SYLLABLE CYEO + {0xCCD1, 0xCCEB, prLVT}, // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH + {0xCCEC, 0xCCEC, prLV}, // Lo HANGUL SYLLABLE CYE + {0xCCED, 0xCD07, prLVT}, // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH + {0xCD08, 0xCD08, prLV}, // Lo HANGUL SYLLABLE CO + {0xCD09, 0xCD23, prLVT}, // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH + {0xCD24, 0xCD24, prLV}, // Lo HANGUL SYLLABLE CWA + {0xCD25, 0xCD3F, prLVT}, // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH + {0xCD40, 0xCD40, prLV}, // Lo HANGUL SYLLABLE CWAE + {0xCD41, 0xCD5B, prLVT}, // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH + {0xCD5C, 0xCD5C, prLV}, // Lo HANGUL SYLLABLE COE + {0xCD5D, 0xCD77, prLVT}, // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH + {0xCD78, 0xCD78, prLV}, // Lo HANGUL SYLLABLE CYO + {0xCD79, 0xCD93, prLVT}, // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH + {0xCD94, 0xCD94, prLV}, // Lo HANGUL SYLLABLE CU + {0xCD95, 0xCDAF, prLVT}, // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH + {0xCDB0, 0xCDB0, prLV}, // Lo HANGUL SYLLABLE CWEO + {0xCDB1, 0xCDCB, prLVT}, // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH + {0xCDCC, 0xCDCC, prLV}, // Lo HANGUL SYLLABLE CWE + {0xCDCD, 0xCDE7, prLVT}, // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH + {0xCDE8, 0xCDE8, prLV}, // Lo HANGUL SYLLABLE CWI + {0xCDE9, 0xCE03, prLVT}, // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH + {0xCE04, 0xCE04, prLV}, // Lo HANGUL SYLLABLE CYU + {0xCE05, 0xCE1F, prLVT}, // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH + {0xCE20, 0xCE20, prLV}, // Lo HANGUL SYLLABLE CEU + {0xCE21, 0xCE3B, prLVT}, // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH + {0xCE3C, 0xCE3C, prLV}, // Lo HANGUL SYLLABLE CYI + {0xCE3D, 0xCE57, prLVT}, // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH + {0xCE58, 0xCE58, prLV}, // Lo HANGUL SYLLABLE CI + {0xCE59, 0xCE73, prLVT}, // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH + {0xCE74, 0xCE74, prLV}, // Lo HANGUL SYLLABLE KA + {0xCE75, 0xCE8F, prLVT}, // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH + {0xCE90, 0xCE90, prLV}, // Lo HANGUL SYLLABLE KAE + {0xCE91, 0xCEAB, prLVT}, // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH + {0xCEAC, 0xCEAC, prLV}, // Lo HANGUL SYLLABLE KYA + {0xCEAD, 0xCEC7, prLVT}, // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH + {0xCEC8, 0xCEC8, prLV}, // Lo HANGUL SYLLABLE KYAE + {0xCEC9, 0xCEE3, prLVT}, // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH + {0xCEE4, 0xCEE4, prLV}, // Lo HANGUL SYLLABLE KEO + {0xCEE5, 0xCEFF, prLVT}, // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH + {0xCF00, 0xCF00, prLV}, // Lo HANGUL SYLLABLE KE + {0xCF01, 0xCF1B, prLVT}, // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH + {0xCF1C, 0xCF1C, prLV}, // Lo HANGUL SYLLABLE KYEO + {0xCF1D, 0xCF37, prLVT}, // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH + {0xCF38, 0xCF38, prLV}, // Lo HANGUL SYLLABLE KYE + {0xCF39, 0xCF53, prLVT}, // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH + {0xCF54, 0xCF54, prLV}, // Lo HANGUL SYLLABLE KO + {0xCF55, 0xCF6F, prLVT}, // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH + {0xCF70, 0xCF70, prLV}, // Lo HANGUL SYLLABLE KWA + {0xCF71, 0xCF8B, prLVT}, // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH + {0xCF8C, 0xCF8C, prLV}, // Lo HANGUL SYLLABLE KWAE + {0xCF8D, 0xCFA7, prLVT}, // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH + {0xCFA8, 0xCFA8, prLV}, // Lo HANGUL SYLLABLE KOE + {0xCFA9, 0xCFC3, prLVT}, // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH + {0xCFC4, 0xCFC4, prLV}, // Lo HANGUL SYLLABLE KYO + {0xCFC5, 0xCFDF, prLVT}, // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH + {0xCFE0, 0xCFE0, prLV}, // Lo HANGUL SYLLABLE KU + {0xCFE1, 0xCFFB, prLVT}, // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH + {0xCFFC, 0xCFFC, prLV}, // Lo HANGUL SYLLABLE KWEO + {0xCFFD, 0xD017, prLVT}, // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH + {0xD018, 0xD018, prLV}, // Lo HANGUL SYLLABLE KWE + {0xD019, 0xD033, prLVT}, // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH + {0xD034, 0xD034, prLV}, // Lo HANGUL SYLLABLE KWI + {0xD035, 0xD04F, prLVT}, // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH + {0xD050, 0xD050, prLV}, // Lo HANGUL SYLLABLE KYU + {0xD051, 0xD06B, prLVT}, // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH + {0xD06C, 0xD06C, prLV}, // Lo HANGUL SYLLABLE KEU + {0xD06D, 0xD087, prLVT}, // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH + {0xD088, 0xD088, prLV}, // Lo HANGUL SYLLABLE KYI + {0xD089, 0xD0A3, prLVT}, // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH + {0xD0A4, 0xD0A4, prLV}, // Lo HANGUL SYLLABLE KI + {0xD0A5, 0xD0BF, prLVT}, // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH + {0xD0C0, 0xD0C0, prLV}, // Lo HANGUL SYLLABLE TA + {0xD0C1, 0xD0DB, prLVT}, // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH + {0xD0DC, 0xD0DC, prLV}, // Lo HANGUL SYLLABLE TAE + {0xD0DD, 0xD0F7, prLVT}, // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH + {0xD0F8, 0xD0F8, prLV}, // Lo HANGUL SYLLABLE TYA + {0xD0F9, 0xD113, prLVT}, // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH + {0xD114, 0xD114, prLV}, // Lo HANGUL SYLLABLE TYAE + {0xD115, 0xD12F, prLVT}, // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH + {0xD130, 0xD130, prLV}, // Lo HANGUL SYLLABLE TEO + {0xD131, 0xD14B, prLVT}, // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH + {0xD14C, 0xD14C, prLV}, // Lo HANGUL SYLLABLE TE + {0xD14D, 0xD167, prLVT}, // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH + {0xD168, 0xD168, prLV}, // Lo HANGUL SYLLABLE TYEO + {0xD169, 0xD183, prLVT}, // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH + {0xD184, 0xD184, prLV}, // Lo HANGUL SYLLABLE TYE + {0xD185, 0xD19F, prLVT}, // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH + {0xD1A0, 0xD1A0, prLV}, // Lo HANGUL SYLLABLE TO + {0xD1A1, 0xD1BB, prLVT}, // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH + {0xD1BC, 0xD1BC, prLV}, // Lo HANGUL SYLLABLE TWA + {0xD1BD, 0xD1D7, prLVT}, // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH + {0xD1D8, 0xD1D8, prLV}, // Lo HANGUL SYLLABLE TWAE + {0xD1D9, 0xD1F3, prLVT}, // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH + {0xD1F4, 0xD1F4, prLV}, // Lo HANGUL SYLLABLE TOE + {0xD1F5, 0xD20F, prLVT}, // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH + {0xD210, 0xD210, prLV}, // Lo HANGUL SYLLABLE TYO + {0xD211, 0xD22B, prLVT}, // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH + {0xD22C, 0xD22C, prLV}, // Lo HANGUL SYLLABLE TU + {0xD22D, 0xD247, prLVT}, // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH + {0xD248, 0xD248, prLV}, // Lo HANGUL SYLLABLE TWEO + {0xD249, 0xD263, prLVT}, // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH + {0xD264, 0xD264, prLV}, // Lo HANGUL SYLLABLE TWE + {0xD265, 0xD27F, prLVT}, // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH + {0xD280, 0xD280, prLV}, // Lo HANGUL SYLLABLE TWI + {0xD281, 0xD29B, prLVT}, // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH + {0xD29C, 0xD29C, prLV}, // Lo HANGUL SYLLABLE TYU + {0xD29D, 0xD2B7, prLVT}, // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH + {0xD2B8, 0xD2B8, prLV}, // Lo HANGUL SYLLABLE TEU + {0xD2B9, 0xD2D3, prLVT}, // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH + {0xD2D4, 0xD2D4, prLV}, // Lo HANGUL SYLLABLE TYI + {0xD2D5, 0xD2EF, prLVT}, // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH + {0xD2F0, 0xD2F0, prLV}, // Lo HANGUL SYLLABLE TI + {0xD2F1, 0xD30B, prLVT}, // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH + {0xD30C, 0xD30C, prLV}, // Lo HANGUL SYLLABLE PA + {0xD30D, 0xD327, prLVT}, // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH + {0xD328, 0xD328, prLV}, // Lo HANGUL SYLLABLE PAE + {0xD329, 0xD343, prLVT}, // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH + {0xD344, 0xD344, prLV}, // Lo HANGUL SYLLABLE PYA + {0xD345, 0xD35F, prLVT}, // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH + {0xD360, 0xD360, prLV}, // Lo HANGUL SYLLABLE PYAE + {0xD361, 0xD37B, prLVT}, // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH + {0xD37C, 0xD37C, prLV}, // Lo HANGUL SYLLABLE PEO + {0xD37D, 0xD397, prLVT}, // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH + {0xD398, 0xD398, prLV}, // Lo HANGUL SYLLABLE PE + {0xD399, 0xD3B3, prLVT}, // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH + {0xD3B4, 0xD3B4, prLV}, // Lo HANGUL SYLLABLE PYEO + {0xD3B5, 0xD3CF, prLVT}, // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH + {0xD3D0, 0xD3D0, prLV}, // Lo HANGUL SYLLABLE PYE + {0xD3D1, 0xD3EB, prLVT}, // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH + {0xD3EC, 0xD3EC, prLV}, // Lo HANGUL SYLLABLE PO + {0xD3ED, 0xD407, prLVT}, // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH + {0xD408, 0xD408, prLV}, // Lo HANGUL SYLLABLE PWA + {0xD409, 0xD423, prLVT}, // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH + {0xD424, 0xD424, prLV}, // Lo HANGUL SYLLABLE PWAE + {0xD425, 0xD43F, prLVT}, // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH + {0xD440, 0xD440, prLV}, // Lo HANGUL SYLLABLE POE + {0xD441, 0xD45B, prLVT}, // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH + {0xD45C, 0xD45C, prLV}, // Lo HANGUL SYLLABLE PYO + {0xD45D, 0xD477, prLVT}, // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH + {0xD478, 0xD478, prLV}, // Lo HANGUL SYLLABLE PU + {0xD479, 0xD493, prLVT}, // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH + {0xD494, 0xD494, prLV}, // Lo HANGUL SYLLABLE PWEO + {0xD495, 0xD4AF, prLVT}, // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH + {0xD4B0, 0xD4B0, prLV}, // Lo HANGUL SYLLABLE PWE + {0xD4B1, 0xD4CB, prLVT}, // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH + {0xD4CC, 0xD4CC, prLV}, // Lo HANGUL SYLLABLE PWI + {0xD4CD, 0xD4E7, prLVT}, // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH + {0xD4E8, 0xD4E8, prLV}, // Lo HANGUL SYLLABLE PYU + {0xD4E9, 0xD503, prLVT}, // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH + {0xD504, 0xD504, prLV}, // Lo HANGUL SYLLABLE PEU + {0xD505, 0xD51F, prLVT}, // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH + {0xD520, 0xD520, prLV}, // Lo HANGUL SYLLABLE PYI + {0xD521, 0xD53B, prLVT}, // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH + {0xD53C, 0xD53C, prLV}, // Lo HANGUL SYLLABLE PI + {0xD53D, 0xD557, prLVT}, // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH + {0xD558, 0xD558, prLV}, // Lo HANGUL SYLLABLE HA + {0xD559, 0xD573, prLVT}, // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH + {0xD574, 0xD574, prLV}, // Lo HANGUL SYLLABLE HAE + {0xD575, 0xD58F, prLVT}, // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH + {0xD590, 0xD590, prLV}, // Lo HANGUL SYLLABLE HYA + {0xD591, 0xD5AB, prLVT}, // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH + {0xD5AC, 0xD5AC, prLV}, // Lo HANGUL SYLLABLE HYAE + {0xD5AD, 0xD5C7, prLVT}, // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH + {0xD5C8, 0xD5C8, prLV}, // Lo HANGUL SYLLABLE HEO + {0xD5C9, 0xD5E3, prLVT}, // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH + {0xD5E4, 0xD5E4, prLV}, // Lo HANGUL SYLLABLE HE + {0xD5E5, 0xD5FF, prLVT}, // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH + {0xD600, 0xD600, prLV}, // Lo HANGUL SYLLABLE HYEO + {0xD601, 0xD61B, prLVT}, // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH + {0xD61C, 0xD61C, prLV}, // Lo HANGUL SYLLABLE HYE + {0xD61D, 0xD637, prLVT}, // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH + {0xD638, 0xD638, prLV}, // Lo HANGUL SYLLABLE HO + {0xD639, 0xD653, prLVT}, // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH + {0xD654, 0xD654, prLV}, // Lo HANGUL SYLLABLE HWA + {0xD655, 0xD66F, prLVT}, // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH + {0xD670, 0xD670, prLV}, // Lo HANGUL SYLLABLE HWAE + {0xD671, 0xD68B, prLVT}, // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH + {0xD68C, 0xD68C, prLV}, // Lo HANGUL SYLLABLE HOE + {0xD68D, 0xD6A7, prLVT}, // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH + {0xD6A8, 0xD6A8, prLV}, // Lo HANGUL SYLLABLE HYO + {0xD6A9, 0xD6C3, prLVT}, // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH + {0xD6C4, 0xD6C4, prLV}, // Lo HANGUL SYLLABLE HU + {0xD6C5, 0xD6DF, prLVT}, // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH + {0xD6E0, 0xD6E0, prLV}, // Lo HANGUL SYLLABLE HWEO + {0xD6E1, 0xD6FB, prLVT}, // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH + {0xD6FC, 0xD6FC, prLV}, // Lo HANGUL SYLLABLE HWE + {0xD6FD, 0xD717, prLVT}, // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH + {0xD718, 0xD718, prLV}, // Lo HANGUL SYLLABLE HWI + {0xD719, 0xD733, prLVT}, // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH + {0xD734, 0xD734, prLV}, // Lo HANGUL SYLLABLE HYU + {0xD735, 0xD74F, prLVT}, // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH + {0xD750, 0xD750, prLV}, // Lo HANGUL SYLLABLE HEU + {0xD751, 0xD76B, prLVT}, // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH + {0xD76C, 0xD76C, prLV}, // Lo HANGUL SYLLABLE HYI + {0xD76D, 0xD787, prLVT}, // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH + {0xD788, 0xD788, prLV}, // Lo HANGUL SYLLABLE HI + {0xD789, 0xD7A3, prLVT}, // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH + {0xD7B0, 0xD7C6, prV}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E + {0xD7CB, 0xD7FB, prT}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH + {0xFB1E, 0xFB1E, prExtend}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA + {0xFE00, 0xFE0F, prExtend}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 + {0xFE20, 0xFE2F, prExtend}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF + {0xFEFF, 0xFEFF, prControl}, // Cf ZERO WIDTH NO-BREAK SPACE + {0xFF9E, 0xFF9F, prExtend}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + {0xFFF0, 0xFFF8, prControl}, // Cn [9] .. + {0xFFF9, 0xFFFB, prControl}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR + {0x101FD, 0x101FD, prExtend}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE + {0x102E0, 0x102E0, prExtend}, // Mn COPTIC EPACT THOUSANDS MARK + {0x10376, 0x1037A, prExtend}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII + {0x10A01, 0x10A03, prExtend}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R + {0x10A05, 0x10A06, prExtend}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O + {0x10A0C, 0x10A0F, prExtend}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA + {0x10A38, 0x10A3A, prExtend}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW + {0x10A3F, 0x10A3F, prExtend}, // Mn KHAROSHTHI VIRAMA + {0x10AE5, 0x10AE6, prExtend}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW + {0x10D24, 0x10D27, prExtend}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI + {0x10EAB, 0x10EAC, prExtend}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK + {0x10EFD, 0x10EFF, prExtend}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA + {0x10F46, 0x10F50, prExtend}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW + {0x10F82, 0x10F85, prExtend}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW + {0x11000, 0x11000, prSpacingMark}, // Mc BRAHMI SIGN CANDRABINDU + {0x11001, 0x11001, prExtend}, // Mn BRAHMI SIGN ANUSVARA + {0x11002, 0x11002, prSpacingMark}, // Mc BRAHMI SIGN VISARGA + {0x11038, 0x11046, prExtend}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA + {0x11070, 0x11070, prExtend}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA + {0x11073, 0x11074, prExtend}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O + {0x1107F, 0x11081, prExtend}, // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA + {0x11082, 0x11082, prSpacingMark}, // Mc KAITHI SIGN VISARGA + {0x110B0, 0x110B2, prSpacingMark}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II + {0x110B3, 0x110B6, prExtend}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI + {0x110B7, 0x110B8, prSpacingMark}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU + {0x110B9, 0x110BA, prExtend}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA + {0x110BD, 0x110BD, prPrepend}, // Cf KAITHI NUMBER SIGN + {0x110C2, 0x110C2, prExtend}, // Mn KAITHI VOWEL SIGN VOCALIC R + {0x110CD, 0x110CD, prPrepend}, // Cf KAITHI NUMBER SIGN ABOVE + {0x11100, 0x11102, prExtend}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA + {0x11127, 0x1112B, prExtend}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU + {0x1112C, 0x1112C, prSpacingMark}, // Mc CHAKMA VOWEL SIGN E + {0x1112D, 0x11134, prExtend}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA + {0x11145, 0x11146, prSpacingMark}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI + {0x11173, 0x11173, prExtend}, // Mn MAHAJANI SIGN NUKTA + {0x11180, 0x11181, prExtend}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA + {0x11182, 0x11182, prSpacingMark}, // Mc SHARADA SIGN VISARGA + {0x111B3, 0x111B5, prSpacingMark}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II + {0x111B6, 0x111BE, prExtend}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O + {0x111BF, 0x111C0, prSpacingMark}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA + {0x111C2, 0x111C3, prPrepend}, // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA + {0x111C9, 0x111CC, prExtend}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK + {0x111CE, 0x111CE, prSpacingMark}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E + {0x111CF, 0x111CF, prExtend}, // Mn SHARADA SIGN INVERTED CANDRABINDU + {0x1122C, 0x1122E, prSpacingMark}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II + {0x1122F, 0x11231, prExtend}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI + {0x11232, 0x11233, prSpacingMark}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU + {0x11234, 0x11234, prExtend}, // Mn KHOJKI SIGN ANUSVARA + {0x11235, 0x11235, prSpacingMark}, // Mc KHOJKI SIGN VIRAMA + {0x11236, 0x11237, prExtend}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA + {0x1123E, 0x1123E, prExtend}, // Mn KHOJKI SIGN SUKUN + {0x11241, 0x11241, prExtend}, // Mn KHOJKI VOWEL SIGN VOCALIC R + {0x112DF, 0x112DF, prExtend}, // Mn KHUDAWADI SIGN ANUSVARA + {0x112E0, 0x112E2, prSpacingMark}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II + {0x112E3, 0x112EA, prExtend}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA + {0x11300, 0x11301, prExtend}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU + {0x11302, 0x11303, prSpacingMark}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA + {0x1133B, 0x1133C, prExtend}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA + {0x1133E, 0x1133E, prExtend}, // Mc GRANTHA VOWEL SIGN AA + {0x1133F, 0x1133F, prSpacingMark}, // Mc GRANTHA VOWEL SIGN I + {0x11340, 0x11340, prExtend}, // Mn GRANTHA VOWEL SIGN II + {0x11341, 0x11344, prSpacingMark}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR + {0x11347, 0x11348, prSpacingMark}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI + {0x1134B, 0x1134D, prSpacingMark}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA + {0x11357, 0x11357, prExtend}, // Mc GRANTHA AU LENGTH MARK + {0x11362, 0x11363, prSpacingMark}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL + {0x11366, 0x1136C, prExtend}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX + {0x11370, 0x11374, prExtend}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA + {0x11435, 0x11437, prSpacingMark}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II + {0x11438, 0x1143F, prExtend}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI + {0x11440, 0x11441, prSpacingMark}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU + {0x11442, 0x11444, prExtend}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA + {0x11445, 0x11445, prSpacingMark}, // Mc NEWA SIGN VISARGA + {0x11446, 0x11446, prExtend}, // Mn NEWA SIGN NUKTA + {0x1145E, 0x1145E, prExtend}, // Mn NEWA SANDHI MARK + {0x114B0, 0x114B0, prExtend}, // Mc TIRHUTA VOWEL SIGN AA + {0x114B1, 0x114B2, prSpacingMark}, // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II + {0x114B3, 0x114B8, prExtend}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL + {0x114B9, 0x114B9, prSpacingMark}, // Mc TIRHUTA VOWEL SIGN E + {0x114BA, 0x114BA, prExtend}, // Mn TIRHUTA VOWEL SIGN SHORT E + {0x114BB, 0x114BC, prSpacingMark}, // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O + {0x114BD, 0x114BD, prExtend}, // Mc TIRHUTA VOWEL SIGN SHORT O + {0x114BE, 0x114BE, prSpacingMark}, // Mc TIRHUTA VOWEL SIGN AU + {0x114BF, 0x114C0, prExtend}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA + {0x114C1, 0x114C1, prSpacingMark}, // Mc TIRHUTA SIGN VISARGA + {0x114C2, 0x114C3, prExtend}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA + {0x115AF, 0x115AF, prExtend}, // Mc SIDDHAM VOWEL SIGN AA + {0x115B0, 0x115B1, prSpacingMark}, // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II + {0x115B2, 0x115B5, prExtend}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR + {0x115B8, 0x115BB, prSpacingMark}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU + {0x115BC, 0x115BD, prExtend}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA + {0x115BE, 0x115BE, prSpacingMark}, // Mc SIDDHAM SIGN VISARGA + {0x115BF, 0x115C0, prExtend}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA + {0x115DC, 0x115DD, prExtend}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU + {0x11630, 0x11632, prSpacingMark}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II + {0x11633, 0x1163A, prExtend}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI + {0x1163B, 0x1163C, prSpacingMark}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU + {0x1163D, 0x1163D, prExtend}, // Mn MODI SIGN ANUSVARA + {0x1163E, 0x1163E, prSpacingMark}, // Mc MODI SIGN VISARGA + {0x1163F, 0x11640, prExtend}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA + {0x116AB, 0x116AB, prExtend}, // Mn TAKRI SIGN ANUSVARA + {0x116AC, 0x116AC, prSpacingMark}, // Mc TAKRI SIGN VISARGA + {0x116AD, 0x116AD, prExtend}, // Mn TAKRI VOWEL SIGN AA + {0x116AE, 0x116AF, prSpacingMark}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II + {0x116B0, 0x116B5, prExtend}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU + {0x116B6, 0x116B6, prSpacingMark}, // Mc TAKRI SIGN VIRAMA + {0x116B7, 0x116B7, prExtend}, // Mn TAKRI SIGN NUKTA + {0x1171D, 0x1171F, prExtend}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA + {0x11722, 0x11725, prExtend}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU + {0x11726, 0x11726, prSpacingMark}, // Mc AHOM VOWEL SIGN E + {0x11727, 0x1172B, prExtend}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER + {0x1182C, 0x1182E, prSpacingMark}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II + {0x1182F, 0x11837, prExtend}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA + {0x11838, 0x11838, prSpacingMark}, // Mc DOGRA SIGN VISARGA + {0x11839, 0x1183A, prExtend}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA + {0x11930, 0x11930, prExtend}, // Mc DIVES AKURU VOWEL SIGN AA + {0x11931, 0x11935, prSpacingMark}, // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E + {0x11937, 0x11938, prSpacingMark}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O + {0x1193B, 0x1193C, prExtend}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU + {0x1193D, 0x1193D, prSpacingMark}, // Mc DIVES AKURU SIGN HALANTA + {0x1193E, 0x1193E, prExtend}, // Mn DIVES AKURU VIRAMA + {0x1193F, 0x1193F, prPrepend}, // Lo DIVES AKURU PREFIXED NASAL SIGN + {0x11940, 0x11940, prSpacingMark}, // Mc DIVES AKURU MEDIAL YA + {0x11941, 0x11941, prPrepend}, // Lo DIVES AKURU INITIAL RA + {0x11942, 0x11942, prSpacingMark}, // Mc DIVES AKURU MEDIAL RA + {0x11943, 0x11943, prExtend}, // Mn DIVES AKURU SIGN NUKTA + {0x119D1, 0x119D3, prSpacingMark}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II + {0x119D4, 0x119D7, prExtend}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR + {0x119DA, 0x119DB, prExtend}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI + {0x119DC, 0x119DF, prSpacingMark}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA + {0x119E0, 0x119E0, prExtend}, // Mn NANDINAGARI SIGN VIRAMA + {0x119E4, 0x119E4, prSpacingMark}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E + {0x11A01, 0x11A0A, prExtend}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK + {0x11A33, 0x11A38, prExtend}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA + {0x11A39, 0x11A39, prSpacingMark}, // Mc ZANABAZAR SQUARE SIGN VISARGA + {0x11A3A, 0x11A3A, prPrepend}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA + {0x11A3B, 0x11A3E, prExtend}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA + {0x11A47, 0x11A47, prExtend}, // Mn ZANABAZAR SQUARE SUBJOINER + {0x11A51, 0x11A56, prExtend}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE + {0x11A57, 0x11A58, prSpacingMark}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU + {0x11A59, 0x11A5B, prExtend}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK + {0x11A84, 0x11A89, prPrepend}, // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA + {0x11A8A, 0x11A96, prExtend}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA + {0x11A97, 0x11A97, prSpacingMark}, // Mc SOYOMBO SIGN VISARGA + {0x11A98, 0x11A99, prExtend}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER + {0x11C2F, 0x11C2F, prSpacingMark}, // Mc BHAIKSUKI VOWEL SIGN AA + {0x11C30, 0x11C36, prExtend}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L + {0x11C38, 0x11C3D, prExtend}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA + {0x11C3E, 0x11C3E, prSpacingMark}, // Mc BHAIKSUKI SIGN VISARGA + {0x11C3F, 0x11C3F, prExtend}, // Mn BHAIKSUKI SIGN VIRAMA + {0x11C92, 0x11CA7, prExtend}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA + {0x11CA9, 0x11CA9, prSpacingMark}, // Mc MARCHEN SUBJOINED LETTER YA + {0x11CAA, 0x11CB0, prExtend}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA + {0x11CB1, 0x11CB1, prSpacingMark}, // Mc MARCHEN VOWEL SIGN I + {0x11CB2, 0x11CB3, prExtend}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E + {0x11CB4, 0x11CB4, prSpacingMark}, // Mc MARCHEN VOWEL SIGN O + {0x11CB5, 0x11CB6, prExtend}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU + {0x11D31, 0x11D36, prExtend}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R + {0x11D3A, 0x11D3A, prExtend}, // Mn MASARAM GONDI VOWEL SIGN E + {0x11D3C, 0x11D3D, prExtend}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O + {0x11D3F, 0x11D45, prExtend}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA + {0x11D46, 0x11D46, prPrepend}, // Lo MASARAM GONDI REPHA + {0x11D47, 0x11D47, prExtend}, // Mn MASARAM GONDI RA-KARA + {0x11D8A, 0x11D8E, prSpacingMark}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU + {0x11D90, 0x11D91, prExtend}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI + {0x11D93, 0x11D94, prSpacingMark}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU + {0x11D95, 0x11D95, prExtend}, // Mn GUNJALA GONDI SIGN ANUSVARA + {0x11D96, 0x11D96, prSpacingMark}, // Mc GUNJALA GONDI SIGN VISARGA + {0x11D97, 0x11D97, prExtend}, // Mn GUNJALA GONDI VIRAMA + {0x11EF3, 0x11EF4, prExtend}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U + {0x11EF5, 0x11EF6, prSpacingMark}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O + {0x11F00, 0x11F01, prExtend}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA + {0x11F02, 0x11F02, prPrepend}, // Lo KAWI SIGN REPHA + {0x11F03, 0x11F03, prSpacingMark}, // Mc KAWI SIGN VISARGA + {0x11F34, 0x11F35, prSpacingMark}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA + {0x11F36, 0x11F3A, prExtend}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R + {0x11F3E, 0x11F3F, prSpacingMark}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI + {0x11F40, 0x11F40, prExtend}, // Mn KAWI VOWEL SIGN EU + {0x11F41, 0x11F41, prSpacingMark}, // Mc KAWI SIGN KILLER + {0x11F42, 0x11F42, prExtend}, // Mn KAWI CONJOINER + {0x13430, 0x1343F, prControl}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE + {0x13440, 0x13440, prExtend}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY + {0x13447, 0x13455, prExtend}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED + {0x16AF0, 0x16AF4, prExtend}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE + {0x16B30, 0x16B36, prExtend}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM + {0x16F4F, 0x16F4F, prExtend}, // Mn MIAO SIGN CONSONANT MODIFIER BAR + {0x16F51, 0x16F87, prSpacingMark}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI + {0x16F8F, 0x16F92, prExtend}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW + {0x16FE4, 0x16FE4, prExtend}, // Mn KHITAN SMALL SCRIPT FILLER + {0x16FF0, 0x16FF1, prSpacingMark}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY + {0x1BC9D, 0x1BC9E, prExtend}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK + {0x1BCA0, 0x1BCA3, prControl}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP + {0x1CF00, 0x1CF2D, prExtend}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT + {0x1CF30, 0x1CF46, prExtend}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG + {0x1D165, 0x1D165, prExtend}, // Mc MUSICAL SYMBOL COMBINING STEM + {0x1D166, 0x1D166, prSpacingMark}, // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM + {0x1D167, 0x1D169, prExtend}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 + {0x1D16D, 0x1D16D, prSpacingMark}, // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT + {0x1D16E, 0x1D172, prExtend}, // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5 + {0x1D173, 0x1D17A, prControl}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE + {0x1D17B, 0x1D182, prExtend}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE + {0x1D185, 0x1D18B, prExtend}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE + {0x1D1AA, 0x1D1AD, prExtend}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO + {0x1D242, 0x1D244, prExtend}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME + {0x1DA00, 0x1DA36, prExtend}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN + {0x1DA3B, 0x1DA6C, prExtend}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT + {0x1DA75, 0x1DA75, prExtend}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS + {0x1DA84, 0x1DA84, prExtend}, // Mn SIGNWRITING LOCATION HEAD NECK + {0x1DA9B, 0x1DA9F, prExtend}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 + {0x1DAA1, 0x1DAAF, prExtend}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + {0x1E000, 0x1E006, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE + {0x1E008, 0x1E018, prExtend}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU + {0x1E01B, 0x1E021, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI + {0x1E023, 0x1E024, prExtend}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS + {0x1E026, 0x1E02A, prExtend}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA + {0x1E08F, 0x1E08F, prExtend}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + {0x1E130, 0x1E136, prExtend}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D + {0x1E2AE, 0x1E2AE, prExtend}, // Mn TOTO SIGN RISING TONE + {0x1E2EC, 0x1E2EF, prExtend}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI + {0x1E4EC, 0x1E4EF, prExtend}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH + {0x1E8D0, 0x1E8D6, prExtend}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS + {0x1E944, 0x1E94A, prExtend}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA + {0x1F000, 0x1F003, prExtendedPictographic}, // E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND + {0x1F004, 0x1F004, prExtendedPictographic}, // E0.6 [1] (🀄) mahjong red dragon + {0x1F005, 0x1F0CE, prExtendedPictographic}, // E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS + {0x1F0CF, 0x1F0CF, prExtendedPictographic}, // E0.6 [1] (🃏) joker + {0x1F0D0, 0x1F0FF, prExtendedPictographic}, // E0.0 [48] (🃐..🃿) .. + {0x1F10D, 0x1F10F, prExtendedPictographic}, // E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH + {0x1F12F, 0x1F12F, prExtendedPictographic}, // E0.0 [1] (🄯) COPYLEFT SYMBOL + {0x1F16C, 0x1F16F, prExtendedPictographic}, // E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE + {0x1F170, 0x1F171, prExtendedPictographic}, // E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) + {0x1F17E, 0x1F17F, prExtendedPictographic}, // E0.6 [2] (🅾️..🅿️) O button (blood type)..P button + {0x1F18E, 0x1F18E, prExtendedPictographic}, // E0.6 [1] (🆎) AB button (blood type) + {0x1F191, 0x1F19A, prExtendedPictographic}, // E0.6 [10] (🆑..🆚) CL button..VS button + {0x1F1AD, 0x1F1E5, prExtendedPictographic}, // E0.0 [57] (🆭..🇥) MASK WORK SYMBOL.. + {0x1F1E6, 0x1F1FF, prRegionalIndicator}, // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z + {0x1F201, 0x1F202, prExtendedPictographic}, // E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button + {0x1F203, 0x1F20F, prExtendedPictographic}, // E0.0 [13] (🈃..🈏) .. + {0x1F21A, 0x1F21A, prExtendedPictographic}, // E0.6 [1] (🈚) Japanese “free of charge” button + {0x1F22F, 0x1F22F, prExtendedPictographic}, // E0.6 [1] (🈯) Japanese “reserved” button + {0x1F232, 0x1F23A, prExtendedPictographic}, // E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button + {0x1F23C, 0x1F23F, prExtendedPictographic}, // E0.0 [4] (🈼..🈿) .. + {0x1F249, 0x1F24F, prExtendedPictographic}, // E0.0 [7] (🉉..🉏) .. + {0x1F250, 0x1F251, prExtendedPictographic}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button + {0x1F252, 0x1F2FF, prExtendedPictographic}, // E0.0 [174] (🉒..🋿) .. + {0x1F300, 0x1F30C, prExtendedPictographic}, // E0.6 [13] (🌀..🌌) cyclone..milky way + {0x1F30D, 0x1F30E, prExtendedPictographic}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas + {0x1F30F, 0x1F30F, prExtendedPictographic}, // E0.6 [1] (🌏) globe showing Asia-Australia + {0x1F310, 0x1F310, prExtendedPictographic}, // E1.0 [1] (🌐) globe with meridians + {0x1F311, 0x1F311, prExtendedPictographic}, // E0.6 [1] (🌑) new moon + {0x1F312, 0x1F312, prExtendedPictographic}, // E1.0 [1] (🌒) waxing crescent moon + {0x1F313, 0x1F315, prExtendedPictographic}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon + {0x1F316, 0x1F318, prExtendedPictographic}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon + {0x1F319, 0x1F319, prExtendedPictographic}, // E0.6 [1] (🌙) crescent moon + {0x1F31A, 0x1F31A, prExtendedPictographic}, // E1.0 [1] (🌚) new moon face + {0x1F31B, 0x1F31B, prExtendedPictographic}, // E0.6 [1] (🌛) first quarter moon face + {0x1F31C, 0x1F31C, prExtendedPictographic}, // E0.7 [1] (🌜) last quarter moon face + {0x1F31D, 0x1F31E, prExtendedPictographic}, // E1.0 [2] (🌝..🌞) full moon face..sun with face + {0x1F31F, 0x1F320, prExtendedPictographic}, // E0.6 [2] (🌟..🌠) glowing star..shooting star + {0x1F321, 0x1F321, prExtendedPictographic}, // E0.7 [1] (🌡️) thermometer + {0x1F322, 0x1F323, prExtendedPictographic}, // E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN + {0x1F324, 0x1F32C, prExtendedPictographic}, // E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face + {0x1F32D, 0x1F32F, prExtendedPictographic}, // E1.0 [3] (🌭..🌯) hot dog..burrito + {0x1F330, 0x1F331, prExtendedPictographic}, // E0.6 [2] (🌰..🌱) chestnut..seedling + {0x1F332, 0x1F333, prExtendedPictographic}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree + {0x1F334, 0x1F335, prExtendedPictographic}, // E0.6 [2] (🌴..🌵) palm tree..cactus + {0x1F336, 0x1F336, prExtendedPictographic}, // E0.7 [1] (🌶️) hot pepper + {0x1F337, 0x1F34A, prExtendedPictographic}, // E0.6 [20] (🌷..🍊) tulip..tangerine + {0x1F34B, 0x1F34B, prExtendedPictographic}, // E1.0 [1] (🍋) lemon + {0x1F34C, 0x1F34F, prExtendedPictographic}, // E0.6 [4] (🍌..🍏) banana..green apple + {0x1F350, 0x1F350, prExtendedPictographic}, // E1.0 [1] (🍐) pear + {0x1F351, 0x1F37B, prExtendedPictographic}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs + {0x1F37C, 0x1F37C, prExtendedPictographic}, // E1.0 [1] (🍼) baby bottle + {0x1F37D, 0x1F37D, prExtendedPictographic}, // E0.7 [1] (🍽️) fork and knife with plate + {0x1F37E, 0x1F37F, prExtendedPictographic}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn + {0x1F380, 0x1F393, prExtendedPictographic}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap + {0x1F394, 0x1F395, prExtendedPictographic}, // E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS + {0x1F396, 0x1F397, prExtendedPictographic}, // E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon + {0x1F398, 0x1F398, prExtendedPictographic}, // E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS + {0x1F399, 0x1F39B, prExtendedPictographic}, // E0.7 [3] (🎙️..🎛️) studio microphone..control knobs + {0x1F39C, 0x1F39D, prExtendedPictographic}, // E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES + {0x1F39E, 0x1F39F, prExtendedPictographic}, // E0.7 [2] (🎞️..🎟️) film frames..admission tickets + {0x1F3A0, 0x1F3C4, prExtendedPictographic}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing + {0x1F3C5, 0x1F3C5, prExtendedPictographic}, // E1.0 [1] (🏅) sports medal + {0x1F3C6, 0x1F3C6, prExtendedPictographic}, // E0.6 [1] (🏆) trophy + {0x1F3C7, 0x1F3C7, prExtendedPictographic}, // E1.0 [1] (🏇) horse racing + {0x1F3C8, 0x1F3C8, prExtendedPictographic}, // E0.6 [1] (🏈) american football + {0x1F3C9, 0x1F3C9, prExtendedPictographic}, // E1.0 [1] (🏉) rugby football + {0x1F3CA, 0x1F3CA, prExtendedPictographic}, // E0.6 [1] (🏊) person swimming + {0x1F3CB, 0x1F3CE, prExtendedPictographic}, // E0.7 [4] (🏋️..🏎️) person lifting weights..racing car + {0x1F3CF, 0x1F3D3, prExtendedPictographic}, // E1.0 [5] (🏏..🏓) cricket game..ping pong + {0x1F3D4, 0x1F3DF, prExtendedPictographic}, // E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium + {0x1F3E0, 0x1F3E3, prExtendedPictographic}, // E0.6 [4] (🏠..🏣) house..Japanese post office + {0x1F3E4, 0x1F3E4, prExtendedPictographic}, // E1.0 [1] (🏤) post office + {0x1F3E5, 0x1F3F0, prExtendedPictographic}, // E0.6 [12] (🏥..🏰) hospital..castle + {0x1F3F1, 0x1F3F2, prExtendedPictographic}, // E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT + {0x1F3F3, 0x1F3F3, prExtendedPictographic}, // E0.7 [1] (🏳️) white flag + {0x1F3F4, 0x1F3F4, prExtendedPictographic}, // E1.0 [1] (🏴) black flag + {0x1F3F5, 0x1F3F5, prExtendedPictographic}, // E0.7 [1] (🏵️) rosette + {0x1F3F6, 0x1F3F6, prExtendedPictographic}, // E0.0 [1] (🏶) BLACK ROSETTE + {0x1F3F7, 0x1F3F7, prExtendedPictographic}, // E0.7 [1] (🏷️) label + {0x1F3F8, 0x1F3FA, prExtendedPictographic}, // E1.0 [3] (🏸..🏺) badminton..amphora + {0x1F3FB, 0x1F3FF, prExtend}, // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 + {0x1F400, 0x1F407, prExtendedPictographic}, // E1.0 [8] (🐀..🐇) rat..rabbit + {0x1F408, 0x1F408, prExtendedPictographic}, // E0.7 [1] (🐈) cat + {0x1F409, 0x1F40B, prExtendedPictographic}, // E1.0 [3] (🐉..🐋) dragon..whale + {0x1F40C, 0x1F40E, prExtendedPictographic}, // E0.6 [3] (🐌..🐎) snail..horse + {0x1F40F, 0x1F410, prExtendedPictographic}, // E1.0 [2] (🐏..🐐) ram..goat + {0x1F411, 0x1F412, prExtendedPictographic}, // E0.6 [2] (🐑..🐒) ewe..monkey + {0x1F413, 0x1F413, prExtendedPictographic}, // E1.0 [1] (🐓) rooster + {0x1F414, 0x1F414, prExtendedPictographic}, // E0.6 [1] (🐔) chicken + {0x1F415, 0x1F415, prExtendedPictographic}, // E0.7 [1] (🐕) dog + {0x1F416, 0x1F416, prExtendedPictographic}, // E1.0 [1] (🐖) pig + {0x1F417, 0x1F429, prExtendedPictographic}, // E0.6 [19] (🐗..🐩) boar..poodle + {0x1F42A, 0x1F42A, prExtendedPictographic}, // E1.0 [1] (🐪) camel + {0x1F42B, 0x1F43E, prExtendedPictographic}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints + {0x1F43F, 0x1F43F, prExtendedPictographic}, // E0.7 [1] (🐿️) chipmunk + {0x1F440, 0x1F440, prExtendedPictographic}, // E0.6 [1] (👀) eyes + {0x1F441, 0x1F441, prExtendedPictographic}, // E0.7 [1] (👁️) eye + {0x1F442, 0x1F464, prExtendedPictographic}, // E0.6 [35] (👂..👤) ear..bust in silhouette + {0x1F465, 0x1F465, prExtendedPictographic}, // E1.0 [1] (👥) busts in silhouette + {0x1F466, 0x1F46B, prExtendedPictographic}, // E0.6 [6] (👦..👫) boy..woman and man holding hands + {0x1F46C, 0x1F46D, prExtendedPictographic}, // E1.0 [2] (👬..👭) men holding hands..women holding hands + {0x1F46E, 0x1F4AC, prExtendedPictographic}, // E0.6 [63] (👮..💬) police officer..speech balloon + {0x1F4AD, 0x1F4AD, prExtendedPictographic}, // E1.0 [1] (💭) thought balloon + {0x1F4AE, 0x1F4B5, prExtendedPictographic}, // E0.6 [8] (💮..💵) white flower..dollar banknote + {0x1F4B6, 0x1F4B7, prExtendedPictographic}, // E1.0 [2] (💶..💷) euro banknote..pound banknote + {0x1F4B8, 0x1F4EB, prExtendedPictographic}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag + {0x1F4EC, 0x1F4ED, prExtendedPictographic}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag + {0x1F4EE, 0x1F4EE, prExtendedPictographic}, // E0.6 [1] (📮) postbox + {0x1F4EF, 0x1F4EF, prExtendedPictographic}, // E1.0 [1] (📯) postal horn + {0x1F4F0, 0x1F4F4, prExtendedPictographic}, // E0.6 [5] (📰..📴) newspaper..mobile phone off + {0x1F4F5, 0x1F4F5, prExtendedPictographic}, // E1.0 [1] (📵) no mobile phones + {0x1F4F6, 0x1F4F7, prExtendedPictographic}, // E0.6 [2] (📶..📷) antenna bars..camera + {0x1F4F8, 0x1F4F8, prExtendedPictographic}, // E1.0 [1] (📸) camera with flash + {0x1F4F9, 0x1F4FC, prExtendedPictographic}, // E0.6 [4] (📹..📼) video camera..videocassette + {0x1F4FD, 0x1F4FD, prExtendedPictographic}, // E0.7 [1] (📽️) film projector + {0x1F4FE, 0x1F4FE, prExtendedPictographic}, // E0.0 [1] (📾) PORTABLE STEREO + {0x1F4FF, 0x1F502, prExtendedPictographic}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button + {0x1F503, 0x1F503, prExtendedPictographic}, // E0.6 [1] (🔃) clockwise vertical arrows + {0x1F504, 0x1F507, prExtendedPictographic}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker + {0x1F508, 0x1F508, prExtendedPictographic}, // E0.7 [1] (🔈) speaker low volume + {0x1F509, 0x1F509, prExtendedPictographic}, // E1.0 [1] (🔉) speaker medium volume + {0x1F50A, 0x1F514, prExtendedPictographic}, // E0.6 [11] (🔊..🔔) speaker high volume..bell + {0x1F515, 0x1F515, prExtendedPictographic}, // E1.0 [1] (🔕) bell with slash + {0x1F516, 0x1F52B, prExtendedPictographic}, // E0.6 [22] (🔖..🔫) bookmark..water pistol + {0x1F52C, 0x1F52D, prExtendedPictographic}, // E1.0 [2] (🔬..🔭) microscope..telescope + {0x1F52E, 0x1F53D, prExtendedPictographic}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button + {0x1F546, 0x1F548, prExtendedPictographic}, // E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS + {0x1F549, 0x1F54A, prExtendedPictographic}, // E0.7 [2] (🕉️..🕊️) om..dove + {0x1F54B, 0x1F54E, prExtendedPictographic}, // E1.0 [4] (🕋..🕎) kaaba..menorah + {0x1F54F, 0x1F54F, prExtendedPictographic}, // E0.0 [1] (🕏) BOWL OF HYGIEIA + {0x1F550, 0x1F55B, prExtendedPictographic}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock + {0x1F55C, 0x1F567, prExtendedPictographic}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty + {0x1F568, 0x1F56E, prExtendedPictographic}, // E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK + {0x1F56F, 0x1F570, prExtendedPictographic}, // E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock + {0x1F571, 0x1F572, prExtendedPictographic}, // E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY + {0x1F573, 0x1F579, prExtendedPictographic}, // E0.7 [7] (🕳️..🕹️) hole..joystick + {0x1F57A, 0x1F57A, prExtendedPictographic}, // E3.0 [1] (🕺) man dancing + {0x1F57B, 0x1F586, prExtendedPictographic}, // E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE + {0x1F587, 0x1F587, prExtendedPictographic}, // E0.7 [1] (🖇️) linked paperclips + {0x1F588, 0x1F589, prExtendedPictographic}, // E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL + {0x1F58A, 0x1F58D, prExtendedPictographic}, // E0.7 [4] (🖊️..🖍️) pen..crayon + {0x1F58E, 0x1F58F, prExtendedPictographic}, // E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN + {0x1F590, 0x1F590, prExtendedPictographic}, // E0.7 [1] (🖐️) hand with fingers splayed + {0x1F591, 0x1F594, prExtendedPictographic}, // E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND + {0x1F595, 0x1F596, prExtendedPictographic}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute + {0x1F597, 0x1F5A3, prExtendedPictographic}, // E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX + {0x1F5A4, 0x1F5A4, prExtendedPictographic}, // E3.0 [1] (🖤) black heart + {0x1F5A5, 0x1F5A5, prExtendedPictographic}, // E0.7 [1] (🖥️) desktop computer + {0x1F5A6, 0x1F5A7, prExtendedPictographic}, // E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS + {0x1F5A8, 0x1F5A8, prExtendedPictographic}, // E0.7 [1] (🖨️) printer + {0x1F5A9, 0x1F5B0, prExtendedPictographic}, // E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE + {0x1F5B1, 0x1F5B2, prExtendedPictographic}, // E0.7 [2] (🖱️..🖲️) computer mouse..trackball + {0x1F5B3, 0x1F5BB, prExtendedPictographic}, // E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE + {0x1F5BC, 0x1F5BC, prExtendedPictographic}, // E0.7 [1] (🖼️) framed picture + {0x1F5BD, 0x1F5C1, prExtendedPictographic}, // E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER + {0x1F5C2, 0x1F5C4, prExtendedPictographic}, // E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet + {0x1F5C5, 0x1F5D0, prExtendedPictographic}, // E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES + {0x1F5D1, 0x1F5D3, prExtendedPictographic}, // E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar + {0x1F5D4, 0x1F5DB, prExtendedPictographic}, // E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL + {0x1F5DC, 0x1F5DE, prExtendedPictographic}, // E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper + {0x1F5DF, 0x1F5E0, prExtendedPictographic}, // E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART + {0x1F5E1, 0x1F5E1, prExtendedPictographic}, // E0.7 [1] (🗡️) dagger + {0x1F5E2, 0x1F5E2, prExtendedPictographic}, // E0.0 [1] (🗢) LIPS + {0x1F5E3, 0x1F5E3, prExtendedPictographic}, // E0.7 [1] (🗣️) speaking head + {0x1F5E4, 0x1F5E7, prExtendedPictographic}, // E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT + {0x1F5E8, 0x1F5E8, prExtendedPictographic}, // E2.0 [1] (🗨️) left speech bubble + {0x1F5E9, 0x1F5EE, prExtendedPictographic}, // E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE + {0x1F5EF, 0x1F5EF, prExtendedPictographic}, // E0.7 [1] (🗯️) right anger bubble + {0x1F5F0, 0x1F5F2, prExtendedPictographic}, // E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD + {0x1F5F3, 0x1F5F3, prExtendedPictographic}, // E0.7 [1] (🗳️) ballot box with ballot + {0x1F5F4, 0x1F5F9, prExtendedPictographic}, // E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK + {0x1F5FA, 0x1F5FA, prExtendedPictographic}, // E0.7 [1] (🗺️) world map + {0x1F5FB, 0x1F5FF, prExtendedPictographic}, // E0.6 [5] (🗻..🗿) mount fuji..moai + {0x1F600, 0x1F600, prExtendedPictographic}, // E1.0 [1] (😀) grinning face + {0x1F601, 0x1F606, prExtendedPictographic}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face + {0x1F607, 0x1F608, prExtendedPictographic}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns + {0x1F609, 0x1F60D, prExtendedPictographic}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes + {0x1F60E, 0x1F60E, prExtendedPictographic}, // E1.0 [1] (😎) smiling face with sunglasses + {0x1F60F, 0x1F60F, prExtendedPictographic}, // E0.6 [1] (😏) smirking face + {0x1F610, 0x1F610, prExtendedPictographic}, // E0.7 [1] (😐) neutral face + {0x1F611, 0x1F611, prExtendedPictographic}, // E1.0 [1] (😑) expressionless face + {0x1F612, 0x1F614, prExtendedPictographic}, // E0.6 [3] (😒..😔) unamused face..pensive face + {0x1F615, 0x1F615, prExtendedPictographic}, // E1.0 [1] (😕) confused face + {0x1F616, 0x1F616, prExtendedPictographic}, // E0.6 [1] (😖) confounded face + {0x1F617, 0x1F617, prExtendedPictographic}, // E1.0 [1] (😗) kissing face + {0x1F618, 0x1F618, prExtendedPictographic}, // E0.6 [1] (😘) face blowing a kiss + {0x1F619, 0x1F619, prExtendedPictographic}, // E1.0 [1] (😙) kissing face with smiling eyes + {0x1F61A, 0x1F61A, prExtendedPictographic}, // E0.6 [1] (😚) kissing face with closed eyes + {0x1F61B, 0x1F61B, prExtendedPictographic}, // E1.0 [1] (😛) face with tongue + {0x1F61C, 0x1F61E, prExtendedPictographic}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face + {0x1F61F, 0x1F61F, prExtendedPictographic}, // E1.0 [1] (😟) worried face + {0x1F620, 0x1F625, prExtendedPictographic}, // E0.6 [6] (😠..😥) angry face..sad but relieved face + {0x1F626, 0x1F627, prExtendedPictographic}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face + {0x1F628, 0x1F62B, prExtendedPictographic}, // E0.6 [4] (😨..😫) fearful face..tired face + {0x1F62C, 0x1F62C, prExtendedPictographic}, // E1.0 [1] (😬) grimacing face + {0x1F62D, 0x1F62D, prExtendedPictographic}, // E0.6 [1] (😭) loudly crying face + {0x1F62E, 0x1F62F, prExtendedPictographic}, // E1.0 [2] (😮..😯) face with open mouth..hushed face + {0x1F630, 0x1F633, prExtendedPictographic}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face + {0x1F634, 0x1F634, prExtendedPictographic}, // E1.0 [1] (😴) sleeping face + {0x1F635, 0x1F635, prExtendedPictographic}, // E0.6 [1] (😵) face with crossed-out eyes + {0x1F636, 0x1F636, prExtendedPictographic}, // E1.0 [1] (😶) face without mouth + {0x1F637, 0x1F640, prExtendedPictographic}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat + {0x1F641, 0x1F644, prExtendedPictographic}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes + {0x1F645, 0x1F64F, prExtendedPictographic}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands + {0x1F680, 0x1F680, prExtendedPictographic}, // E0.6 [1] (🚀) rocket + {0x1F681, 0x1F682, prExtendedPictographic}, // E1.0 [2] (🚁..🚂) helicopter..locomotive + {0x1F683, 0x1F685, prExtendedPictographic}, // E0.6 [3] (🚃..🚅) railway car..bullet train + {0x1F686, 0x1F686, prExtendedPictographic}, // E1.0 [1] (🚆) train + {0x1F687, 0x1F687, prExtendedPictographic}, // E0.6 [1] (🚇) metro + {0x1F688, 0x1F688, prExtendedPictographic}, // E1.0 [1] (🚈) light rail + {0x1F689, 0x1F689, prExtendedPictographic}, // E0.6 [1] (🚉) station + {0x1F68A, 0x1F68B, prExtendedPictographic}, // E1.0 [2] (🚊..🚋) tram..tram car + {0x1F68C, 0x1F68C, prExtendedPictographic}, // E0.6 [1] (🚌) bus + {0x1F68D, 0x1F68D, prExtendedPictographic}, // E0.7 [1] (🚍) oncoming bus + {0x1F68E, 0x1F68E, prExtendedPictographic}, // E1.0 [1] (🚎) trolleybus + {0x1F68F, 0x1F68F, prExtendedPictographic}, // E0.6 [1] (🚏) bus stop + {0x1F690, 0x1F690, prExtendedPictographic}, // E1.0 [1] (🚐) minibus + {0x1F691, 0x1F693, prExtendedPictographic}, // E0.6 [3] (🚑..🚓) ambulance..police car + {0x1F694, 0x1F694, prExtendedPictographic}, // E0.7 [1] (🚔) oncoming police car + {0x1F695, 0x1F695, prExtendedPictographic}, // E0.6 [1] (🚕) taxi + {0x1F696, 0x1F696, prExtendedPictographic}, // E1.0 [1] (🚖) oncoming taxi + {0x1F697, 0x1F697, prExtendedPictographic}, // E0.6 [1] (🚗) automobile + {0x1F698, 0x1F698, prExtendedPictographic}, // E0.7 [1] (🚘) oncoming automobile + {0x1F699, 0x1F69A, prExtendedPictographic}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck + {0x1F69B, 0x1F6A1, prExtendedPictographic}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway + {0x1F6A2, 0x1F6A2, prExtendedPictographic}, // E0.6 [1] (🚢) ship + {0x1F6A3, 0x1F6A3, prExtendedPictographic}, // E1.0 [1] (🚣) person rowing boat + {0x1F6A4, 0x1F6A5, prExtendedPictographic}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light + {0x1F6A6, 0x1F6A6, prExtendedPictographic}, // E1.0 [1] (🚦) vertical traffic light + {0x1F6A7, 0x1F6AD, prExtendedPictographic}, // E0.6 [7] (🚧..🚭) construction..no smoking + {0x1F6AE, 0x1F6B1, prExtendedPictographic}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water + {0x1F6B2, 0x1F6B2, prExtendedPictographic}, // E0.6 [1] (🚲) bicycle + {0x1F6B3, 0x1F6B5, prExtendedPictographic}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking + {0x1F6B6, 0x1F6B6, prExtendedPictographic}, // E0.6 [1] (🚶) person walking + {0x1F6B7, 0x1F6B8, prExtendedPictographic}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing + {0x1F6B9, 0x1F6BE, prExtendedPictographic}, // E0.6 [6] (🚹..🚾) men’s room..water closet + {0x1F6BF, 0x1F6BF, prExtendedPictographic}, // E1.0 [1] (🚿) shower + {0x1F6C0, 0x1F6C0, prExtendedPictographic}, // E0.6 [1] (🛀) person taking bath + {0x1F6C1, 0x1F6C5, prExtendedPictographic}, // E1.0 [5] (🛁..🛅) bathtub..left luggage + {0x1F6C6, 0x1F6CA, prExtendedPictographic}, // E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL + {0x1F6CB, 0x1F6CB, prExtendedPictographic}, // E0.7 [1] (🛋️) couch and lamp + {0x1F6CC, 0x1F6CC, prExtendedPictographic}, // E1.0 [1] (🛌) person in bed + {0x1F6CD, 0x1F6CF, prExtendedPictographic}, // E0.7 [3] (🛍️..🛏️) shopping bags..bed + {0x1F6D0, 0x1F6D0, prExtendedPictographic}, // E1.0 [1] (🛐) place of worship + {0x1F6D1, 0x1F6D2, prExtendedPictographic}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart + {0x1F6D3, 0x1F6D4, prExtendedPictographic}, // E0.0 [2] (🛓..🛔) STUPA..PAGODA + {0x1F6D5, 0x1F6D5, prExtendedPictographic}, // E12.0 [1] (🛕) hindu temple + {0x1F6D6, 0x1F6D7, prExtendedPictographic}, // E13.0 [2] (🛖..🛗) hut..elevator + {0x1F6D8, 0x1F6DB, prExtendedPictographic}, // E0.0 [4] (🛘..🛛) .. + {0x1F6DC, 0x1F6DC, prExtendedPictographic}, // E15.0 [1] (🛜) wireless + {0x1F6DD, 0x1F6DF, prExtendedPictographic}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy + {0x1F6E0, 0x1F6E5, prExtendedPictographic}, // E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat + {0x1F6E6, 0x1F6E8, prExtendedPictographic}, // E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE + {0x1F6E9, 0x1F6E9, prExtendedPictographic}, // E0.7 [1] (🛩️) small airplane + {0x1F6EA, 0x1F6EA, prExtendedPictographic}, // E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE + {0x1F6EB, 0x1F6EC, prExtendedPictographic}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival + {0x1F6ED, 0x1F6EF, prExtendedPictographic}, // E0.0 [3] (🛭..🛯) .. + {0x1F6F0, 0x1F6F0, prExtendedPictographic}, // E0.7 [1] (🛰️) satellite + {0x1F6F1, 0x1F6F2, prExtendedPictographic}, // E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE + {0x1F6F3, 0x1F6F3, prExtendedPictographic}, // E0.7 [1] (🛳️) passenger ship + {0x1F6F4, 0x1F6F6, prExtendedPictographic}, // E3.0 [3] (🛴..🛶) kick scooter..canoe + {0x1F6F7, 0x1F6F8, prExtendedPictographic}, // E5.0 [2] (🛷..🛸) sled..flying saucer + {0x1F6F9, 0x1F6F9, prExtendedPictographic}, // E11.0 [1] (🛹) skateboard + {0x1F6FA, 0x1F6FA, prExtendedPictographic}, // E12.0 [1] (🛺) auto rickshaw + {0x1F6FB, 0x1F6FC, prExtendedPictographic}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate + {0x1F6FD, 0x1F6FF, prExtendedPictographic}, // E0.0 [3] (🛽..🛿) .. + {0x1F774, 0x1F77F, prExtendedPictographic}, // E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS + {0x1F7D5, 0x1F7DF, prExtendedPictographic}, // E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE.. + {0x1F7E0, 0x1F7EB, prExtendedPictographic}, // E12.0 [12] (🟠..🟫) orange circle..brown square + {0x1F7EC, 0x1F7EF, prExtendedPictographic}, // E0.0 [4] (🟬..🟯) .. + {0x1F7F0, 0x1F7F0, prExtendedPictographic}, // E14.0 [1] (🟰) heavy equals sign + {0x1F7F1, 0x1F7FF, prExtendedPictographic}, // E0.0 [15] (🟱..🟿) .. + {0x1F80C, 0x1F80F, prExtendedPictographic}, // E0.0 [4] (🠌..🠏) .. + {0x1F848, 0x1F84F, prExtendedPictographic}, // E0.0 [8] (🡈..🡏) .. + {0x1F85A, 0x1F85F, prExtendedPictographic}, // E0.0 [6] (🡚..🡟) .. + {0x1F888, 0x1F88F, prExtendedPictographic}, // E0.0 [8] (🢈..🢏) .. + {0x1F8AE, 0x1F8FF, prExtendedPictographic}, // E0.0 [82] (🢮..🣿) .. + {0x1F90C, 0x1F90C, prExtendedPictographic}, // E13.0 [1] (🤌) pinched fingers + {0x1F90D, 0x1F90F, prExtendedPictographic}, // E12.0 [3] (🤍..🤏) white heart..pinching hand + {0x1F910, 0x1F918, prExtendedPictographic}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns + {0x1F919, 0x1F91E, prExtendedPictographic}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers + {0x1F91F, 0x1F91F, prExtendedPictographic}, // E5.0 [1] (🤟) love-you gesture + {0x1F920, 0x1F927, prExtendedPictographic}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face + {0x1F928, 0x1F92F, prExtendedPictographic}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head + {0x1F930, 0x1F930, prExtendedPictographic}, // E3.0 [1] (🤰) pregnant woman + {0x1F931, 0x1F932, prExtendedPictographic}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together + {0x1F933, 0x1F93A, prExtendedPictographic}, // E3.0 [8] (🤳..🤺) selfie..person fencing + {0x1F93C, 0x1F93E, prExtendedPictographic}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball + {0x1F93F, 0x1F93F, prExtendedPictographic}, // E12.0 [1] (🤿) diving mask + {0x1F940, 0x1F945, prExtendedPictographic}, // E3.0 [6] (🥀..🥅) wilted flower..goal net + {0x1F947, 0x1F94B, prExtendedPictographic}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform + {0x1F94C, 0x1F94C, prExtendedPictographic}, // E5.0 [1] (🥌) curling stone + {0x1F94D, 0x1F94F, prExtendedPictographic}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc + {0x1F950, 0x1F95E, prExtendedPictographic}, // E3.0 [15] (🥐..🥞) croissant..pancakes + {0x1F95F, 0x1F96B, prExtendedPictographic}, // E5.0 [13] (🥟..🥫) dumpling..canned food + {0x1F96C, 0x1F970, prExtendedPictographic}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts + {0x1F971, 0x1F971, prExtendedPictographic}, // E12.0 [1] (🥱) yawning face + {0x1F972, 0x1F972, prExtendedPictographic}, // E13.0 [1] (🥲) smiling face with tear + {0x1F973, 0x1F976, prExtendedPictographic}, // E11.0 [4] (🥳..🥶) partying face..cold face + {0x1F977, 0x1F978, prExtendedPictographic}, // E13.0 [2] (🥷..🥸) ninja..disguised face + {0x1F979, 0x1F979, prExtendedPictographic}, // E14.0 [1] (🥹) face holding back tears + {0x1F97A, 0x1F97A, prExtendedPictographic}, // E11.0 [1] (🥺) pleading face + {0x1F97B, 0x1F97B, prExtendedPictographic}, // E12.0 [1] (🥻) sari + {0x1F97C, 0x1F97F, prExtendedPictographic}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe + {0x1F980, 0x1F984, prExtendedPictographic}, // E1.0 [5] (🦀..🦄) crab..unicorn + {0x1F985, 0x1F991, prExtendedPictographic}, // E3.0 [13] (🦅..🦑) eagle..squid + {0x1F992, 0x1F997, prExtendedPictographic}, // E5.0 [6] (🦒..🦗) giraffe..cricket + {0x1F998, 0x1F9A2, prExtendedPictographic}, // E11.0 [11] (🦘..🦢) kangaroo..swan + {0x1F9A3, 0x1F9A4, prExtendedPictographic}, // E13.0 [2] (🦣..🦤) mammoth..dodo + {0x1F9A5, 0x1F9AA, prExtendedPictographic}, // E12.0 [6] (🦥..🦪) sloth..oyster + {0x1F9AB, 0x1F9AD, prExtendedPictographic}, // E13.0 [3] (🦫..🦭) beaver..seal + {0x1F9AE, 0x1F9AF, prExtendedPictographic}, // E12.0 [2] (🦮..🦯) guide dog..white cane + {0x1F9B0, 0x1F9B9, prExtendedPictographic}, // E11.0 [10] (🦰..🦹) red hair..supervillain + {0x1F9BA, 0x1F9BF, prExtendedPictographic}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg + {0x1F9C0, 0x1F9C0, prExtendedPictographic}, // E1.0 [1] (🧀) cheese wedge + {0x1F9C1, 0x1F9C2, prExtendedPictographic}, // E11.0 [2] (🧁..🧂) cupcake..salt + {0x1F9C3, 0x1F9CA, prExtendedPictographic}, // E12.0 [8] (🧃..🧊) beverage box..ice + {0x1F9CB, 0x1F9CB, prExtendedPictographic}, // E13.0 [1] (🧋) bubble tea + {0x1F9CC, 0x1F9CC, prExtendedPictographic}, // E14.0 [1] (🧌) troll + {0x1F9CD, 0x1F9CF, prExtendedPictographic}, // E12.0 [3] (🧍..🧏) person standing..deaf person + {0x1F9D0, 0x1F9E6, prExtendedPictographic}, // E5.0 [23] (🧐..🧦) face with monocle..socks + {0x1F9E7, 0x1F9FF, prExtendedPictographic}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet + {0x1FA00, 0x1FA6F, prExtendedPictographic}, // E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING.. + {0x1FA70, 0x1FA73, prExtendedPictographic}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts + {0x1FA74, 0x1FA74, prExtendedPictographic}, // E13.0 [1] (🩴) thong sandal + {0x1FA75, 0x1FA77, prExtendedPictographic}, // E15.0 [3] (🩵..🩷) light blue heart..pink heart + {0x1FA78, 0x1FA7A, prExtendedPictographic}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope + {0x1FA7B, 0x1FA7C, prExtendedPictographic}, // E14.0 [2] (🩻..🩼) x-ray..crutch + {0x1FA7D, 0x1FA7F, prExtendedPictographic}, // E0.0 [3] (🩽..🩿) .. + {0x1FA80, 0x1FA82, prExtendedPictographic}, // E12.0 [3] (🪀..🪂) yo-yo..parachute + {0x1FA83, 0x1FA86, prExtendedPictographic}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls + {0x1FA87, 0x1FA88, prExtendedPictographic}, // E15.0 [2] (🪇..🪈) maracas..flute + {0x1FA89, 0x1FA8F, prExtendedPictographic}, // E0.0 [7] (🪉..🪏) .. + {0x1FA90, 0x1FA95, prExtendedPictographic}, // E12.0 [6] (🪐..🪕) ringed planet..banjo + {0x1FA96, 0x1FAA8, prExtendedPictographic}, // E13.0 [19] (🪖..🪨) military helmet..rock + {0x1FAA9, 0x1FAAC, prExtendedPictographic}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa + {0x1FAAD, 0x1FAAF, prExtendedPictographic}, // E15.0 [3] (🪭..🪯) folding hand fan..khanda + {0x1FAB0, 0x1FAB6, prExtendedPictographic}, // E13.0 [7] (🪰..🪶) fly..feather + {0x1FAB7, 0x1FABA, prExtendedPictographic}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs + {0x1FABB, 0x1FABD, prExtendedPictographic}, // E15.0 [3] (🪻..🪽) hyacinth..wing + {0x1FABE, 0x1FABE, prExtendedPictographic}, // E0.0 [1] (🪾) + {0x1FABF, 0x1FABF, prExtendedPictographic}, // E15.0 [1] (🪿) goose + {0x1FAC0, 0x1FAC2, prExtendedPictographic}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging + {0x1FAC3, 0x1FAC5, prExtendedPictographic}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown + {0x1FAC6, 0x1FACD, prExtendedPictographic}, // E0.0 [8] (🫆..🫍) .. + {0x1FACE, 0x1FACF, prExtendedPictographic}, // E15.0 [2] (🫎..🫏) moose..donkey + {0x1FAD0, 0x1FAD6, prExtendedPictographic}, // E13.0 [7] (🫐..🫖) blueberries..teapot + {0x1FAD7, 0x1FAD9, prExtendedPictographic}, // E14.0 [3] (🫗..🫙) pouring liquid..jar + {0x1FADA, 0x1FADB, prExtendedPictographic}, // E15.0 [2] (🫚..🫛) ginger root..pea pod + {0x1FADC, 0x1FADF, prExtendedPictographic}, // E0.0 [4] (🫜..🫟) .. + {0x1FAE0, 0x1FAE7, prExtendedPictographic}, // E14.0 [8] (🫠..🫧) melting face..bubbles + {0x1FAE8, 0x1FAE8, prExtendedPictographic}, // E15.0 [1] (🫨) shaking face + {0x1FAE9, 0x1FAEF, prExtendedPictographic}, // E0.0 [7] (🫩..🫯) .. + {0x1FAF0, 0x1FAF6, prExtendedPictographic}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands + {0x1FAF7, 0x1FAF8, prExtendedPictographic}, // E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand + {0x1FAF9, 0x1FAFF, prExtendedPictographic}, // E0.0 [7] (🫹..🫿) .. + {0x1FC00, 0x1FFFD, prExtendedPictographic}, // E0.0[1022] (🰀..🿽) .. + {0xE0000, 0xE0000, prControl}, // Cn + {0xE0001, 0xE0001, prControl}, // Cf LANGUAGE TAG + {0xE0002, 0xE001F, prControl}, // Cn [30] .. + {0xE0020, 0xE007F, prExtend}, // Cf [96] TAG SPACE..CANCEL TAG + {0xE0080, 0xE00FF, prControl}, // Cn [128] .. + {0xE0100, 0xE01EF, prExtend}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + {0xE01F0, 0xE0FFF, prControl}, // Cn [3600] .. +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemerules.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemerules.go new file mode 100644 index 0000000..5d399d2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/graphemerules.go @@ -0,0 +1,176 @@ +package uniseg + +// The states of the grapheme cluster parser. +const ( + grAny = iota + grCR + grControlLF + grL + grLVV + grLVTT + grPrepend + grExtendedPictographic + grExtendedPictographicZWJ + grRIOdd + grRIEven +) + +// The grapheme cluster parser's breaking instructions. +const ( + grNoBoundary = iota + grBoundary +) + +// grTransitions implements the grapheme cluster parser's state transitions. +// Maps state and property to a new state, a breaking instruction, and rule +// number. The breaking instruction always refers to the boundary between the +// last and next code point. Returns negative values if no transition is found. +// +// This function is used as follows: +// +// 1. Find specific state + specific property. Stop if found. +// 2. Find specific state + any property. +// 3. Find any state + specific property. +// 4. If only (2) or (3) (but not both) was found, stop. +// 5. If both (2) and (3) were found, use state from (3) and breaking instruction +// from the transition with the lower rule number, prefer (3) if rule numbers +// are equal. Stop. +// 6. Assume grAny and grBoundary. +// +// Unicode version 15.0.0. +func grTransitions(state, prop int) (newState int, newProp int, boundary int) { + // It turns out that using a big switch statement is much faster than using + // a map. + + switch uint64(state) | uint64(prop)<<32 { + // GB5 + case grAny | prCR<<32: + return grCR, grBoundary, 50 + case grAny | prLF<<32: + return grControlLF, grBoundary, 50 + case grAny | prControl<<32: + return grControlLF, grBoundary, 50 + + // GB4 + case grCR | prAny<<32: + return grAny, grBoundary, 40 + case grControlLF | prAny<<32: + return grAny, grBoundary, 40 + + // GB3 + case grCR | prLF<<32: + return grControlLF, grNoBoundary, 30 + + // GB6 + case grAny | prL<<32: + return grL, grBoundary, 9990 + case grL | prL<<32: + return grL, grNoBoundary, 60 + case grL | prV<<32: + return grLVV, grNoBoundary, 60 + case grL | prLV<<32: + return grLVV, grNoBoundary, 60 + case grL | prLVT<<32: + return grLVTT, grNoBoundary, 60 + + // GB7 + case grAny | prLV<<32: + return grLVV, grBoundary, 9990 + case grAny | prV<<32: + return grLVV, grBoundary, 9990 + case grLVV | prV<<32: + return grLVV, grNoBoundary, 70 + case grLVV | prT<<32: + return grLVTT, grNoBoundary, 70 + + // GB8 + case grAny | prLVT<<32: + return grLVTT, grBoundary, 9990 + case grAny | prT<<32: + return grLVTT, grBoundary, 9990 + case grLVTT | prT<<32: + return grLVTT, grNoBoundary, 80 + + // GB9 + case grAny | prExtend<<32: + return grAny, grNoBoundary, 90 + case grAny | prZWJ<<32: + return grAny, grNoBoundary, 90 + + // GB9a + case grAny | prSpacingMark<<32: + return grAny, grNoBoundary, 91 + + // GB9b + case grAny | prPrepend<<32: + return grPrepend, grBoundary, 9990 + case grPrepend | prAny<<32: + return grAny, grNoBoundary, 92 + + // GB11 + case grAny | prExtendedPictographic<<32: + return grExtendedPictographic, grBoundary, 9990 + case grExtendedPictographic | prExtend<<32: + return grExtendedPictographic, grNoBoundary, 110 + case grExtendedPictographic | prZWJ<<32: + return grExtendedPictographicZWJ, grNoBoundary, 110 + case grExtendedPictographicZWJ | prExtendedPictographic<<32: + return grExtendedPictographic, grNoBoundary, 110 + + // GB12 / GB13 + case grAny | prRegionalIndicator<<32: + return grRIOdd, grBoundary, 9990 + case grRIOdd | prRegionalIndicator<<32: + return grRIEven, grNoBoundary, 120 + case grRIEven | prRegionalIndicator<<32: + return grRIOdd, grBoundary, 120 + default: + return -1, -1, -1 + } +} + +// transitionGraphemeState determines the new state of the grapheme cluster +// parser given the current state and the next code point. It also returns the +// code point's grapheme property (the value mapped by the [graphemeCodePoints] +// table) and whether a cluster boundary was detected. +func transitionGraphemeState(state int, r rune) (newState, prop int, boundary bool) { + // Determine the property of the next character. + prop = propertyGraphemes(r) + + // Find the applicable transition. + nextState, nextProp, _ := grTransitions(state, prop) + if nextState >= 0 { + // We have a specific transition. We'll use it. + return nextState, prop, nextProp == grBoundary + } + + // No specific transition found. Try the less specific ones. + anyPropState, anyPropProp, anyPropRule := grTransitions(state, prAny) + anyStateState, anyStateProp, anyStateRule := grTransitions(grAny, prop) + if anyPropState >= 0 && anyStateState >= 0 { + // Both apply. We'll use a mix (see comments for grTransitions). + newState = anyStateState + boundary = anyStateProp == grBoundary + if anyPropRule < anyStateRule { + boundary = anyPropProp == grBoundary + } + return + } + + if anyPropState >= 0 { + // We only have a specific state. + return anyPropState, prop, anyPropProp == grBoundary + // This branch will probably never be reached because okAnyState will + // always be true given the current transition map. But we keep it here + // for future modifications to the transition map where this may not be + // true anymore. + } + + if anyStateState >= 0 { + // We only have a specific property. + return anyStateState, prop, anyStateProp == grBoundary + } + + // No known transition. GB999: Any ÷ Any. + return grAny, prop, true +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/line.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/line.go new file mode 100644 index 0000000..7a46318 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/line.go @@ -0,0 +1,134 @@ +package uniseg + +import "unicode/utf8" + +// FirstLineSegment returns the prefix of the given byte slice after which a +// decision to break the string over to the next line can or must be made, +// according to the rules of [Unicode Standard Annex #14]. This is used to +// implement line breaking. +// +// Line breaking, also known as word wrapping, is the process of breaking a +// section of text into lines such that it will fit in the available width of a +// page, window or other display area. +// +// The returned "segment" may not be broken into smaller parts, unless no other +// breaking opportunities present themselves, in which case you may break by +// grapheme clusters (using the [FirstGraphemeCluster] function to determine the +// grapheme clusters). +// +// The "mustBreak" flag indicates whether you MUST break the line after the +// given segment (true), for example after newline characters, or you MAY break +// the line after the given segment (false). +// +// This function can be called continuously to extract all non-breaking sub-sets +// from a byte slice, as illustrated in the example below. +// +// If you don't know the current state, for example when calling the function +// for the first time, you must pass -1. For consecutive calls, pass the state +// and rest slice returned by the previous call. +// +// The "rest" slice is the sub-slice of the original byte slice "b" starting +// after the last byte of the identified line segment. If the length of the +// "rest" slice is 0, the entire byte slice "b" has been processed. The +// "segment" byte slice is the sub-slice of the input slice containing the +// identified line segment. +// +// Given an empty byte slice "b", the function returns nil values. +// +// Note that in accordance with [UAX #14 LB3], the final segment will end with +// "mustBreak" set to true. You can choose to ignore this by checking if the +// length of the "rest" slice is 0 and calling [HasTrailingLineBreak] or +// [HasTrailingLineBreakInString] on the last rune. +// +// Note also that this algorithm may break within grapheme clusters. This is +// addressed in Section 8.2 Example 6 of UAX #14. To avoid this, you can use +// the [Step] function instead. +// +// [Unicode Standard Annex #14]: https://www.unicode.org/reports/tr14/ +// [UAX #14 LB3]: https://www.unicode.org/reports/tr14/#Algorithm +func FirstLineSegment(b []byte, state int) (segment, rest []byte, mustBreak bool, newState int) { + // An empty byte slice returns nothing. + if len(b) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRune(b) + if len(b) <= length { // If we're already past the end, there is nothing else to parse. + return b, nil, true, lbAny // LB3. + } + + // If we don't know the state, determine it now. + if state < 0 { + state, _ = transitionLineBreakState(state, r, b[length:], "") + } + + // Transition until we find a boundary. + var boundary int + for { + r, l := utf8.DecodeRune(b[length:]) + state, boundary = transitionLineBreakState(state, r, b[length+l:], "") + + if boundary != LineDontBreak { + return b[:length], b[length:], boundary == LineMustBreak, state + } + + length += l + if len(b) <= length { + return b, nil, true, lbAny // LB3 + } + } +} + +// FirstLineSegmentInString is like [FirstLineSegment] but its input and outputs +// are strings. +func FirstLineSegmentInString(str string, state int) (segment, rest string, mustBreak bool, newState int) { + // An empty byte slice returns nothing. + if len(str) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRuneInString(str) + if len(str) <= length { // If we're already past the end, there is nothing else to parse. + return str, "", true, lbAny // LB3. + } + + // If we don't know the state, determine it now. + if state < 0 { + state, _ = transitionLineBreakState(state, r, nil, str[length:]) + } + + // Transition until we find a boundary. + var boundary int + for { + r, l := utf8.DecodeRuneInString(str[length:]) + state, boundary = transitionLineBreakState(state, r, nil, str[length+l:]) + + if boundary != LineDontBreak { + return str[:length], str[length:], boundary == LineMustBreak, state + } + + length += l + if len(str) <= length { + return str, "", true, lbAny // LB3. + } + } +} + +// HasTrailingLineBreak returns true if the last rune in the given byte slice is +// one of the hard line break code points defined in LB4 and LB5 of [UAX #14]. +// +// [UAX #14]: https://www.unicode.org/reports/tr14/#Algorithm +func HasTrailingLineBreak(b []byte) bool { + r, _ := utf8.DecodeLastRune(b) + property, _ := propertyLineBreak(r) + return property == prBK || property == prCR || property == prLF || property == prNL +} + +// HasTrailingLineBreakInString is like [HasTrailingLineBreak] but for a string. +func HasTrailingLineBreakInString(str string) bool { + r, _ := utf8.DecodeLastRuneInString(str) + property, _ := propertyLineBreak(r) + return property == prBK || property == prCR || property == prLF || property == prNL +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/lineproperties.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/lineproperties.go new file mode 100644 index 0000000..ac7fac4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/lineproperties.go @@ -0,0 +1,3554 @@ +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// lineBreakCodePoints are taken from +// https://www.unicode.org/Public/15.0.0/ucd/LineBreak.txt +// and +// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var lineBreakCodePoints = [][4]int{ + {0x0000, 0x0008, prCM, gcCc}, // [9] .. + {0x0009, 0x0009, prBA, gcCc}, // + {0x000A, 0x000A, prLF, gcCc}, // + {0x000B, 0x000C, prBK, gcCc}, // [2] .. + {0x000D, 0x000D, prCR, gcCc}, // + {0x000E, 0x001F, prCM, gcCc}, // [18] .. + {0x0020, 0x0020, prSP, gcZs}, // SPACE + {0x0021, 0x0021, prEX, gcPo}, // EXCLAMATION MARK + {0x0022, 0x0022, prQU, gcPo}, // QUOTATION MARK + {0x0023, 0x0023, prAL, gcPo}, // NUMBER SIGN + {0x0024, 0x0024, prPR, gcSc}, // DOLLAR SIGN + {0x0025, 0x0025, prPO, gcPo}, // PERCENT SIGN + {0x0026, 0x0026, prAL, gcPo}, // AMPERSAND + {0x0027, 0x0027, prQU, gcPo}, // APOSTROPHE + {0x0028, 0x0028, prOP, gcPs}, // LEFT PARENTHESIS + {0x0029, 0x0029, prCP, gcPe}, // RIGHT PARENTHESIS + {0x002A, 0x002A, prAL, gcPo}, // ASTERISK + {0x002B, 0x002B, prPR, gcSm}, // PLUS SIGN + {0x002C, 0x002C, prIS, gcPo}, // COMMA + {0x002D, 0x002D, prHY, gcPd}, // HYPHEN-MINUS + {0x002E, 0x002E, prIS, gcPo}, // FULL STOP + {0x002F, 0x002F, prSY, gcPo}, // SOLIDUS + {0x0030, 0x0039, prNU, gcNd}, // [10] DIGIT ZERO..DIGIT NINE + {0x003A, 0x003B, prIS, gcPo}, // [2] COLON..SEMICOLON + {0x003C, 0x003E, prAL, gcSm}, // [3] LESS-THAN SIGN..GREATER-THAN SIGN + {0x003F, 0x003F, prEX, gcPo}, // QUESTION MARK + {0x0040, 0x0040, prAL, gcPo}, // COMMERCIAL AT + {0x0041, 0x005A, prAL, gcLu}, // [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z + {0x005B, 0x005B, prOP, gcPs}, // LEFT SQUARE BRACKET + {0x005C, 0x005C, prPR, gcPo}, // REVERSE SOLIDUS + {0x005D, 0x005D, prCP, gcPe}, // RIGHT SQUARE BRACKET + {0x005E, 0x005E, prAL, gcSk}, // CIRCUMFLEX ACCENT + {0x005F, 0x005F, prAL, gcPc}, // LOW LINE + {0x0060, 0x0060, prAL, gcSk}, // GRAVE ACCENT + {0x0061, 0x007A, prAL, gcLl}, // [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z + {0x007B, 0x007B, prOP, gcPs}, // LEFT CURLY BRACKET + {0x007C, 0x007C, prBA, gcSm}, // VERTICAL LINE + {0x007D, 0x007D, prCL, gcPe}, // RIGHT CURLY BRACKET + {0x007E, 0x007E, prAL, gcSm}, // TILDE + {0x007F, 0x007F, prCM, gcCc}, // + {0x0080, 0x0084, prCM, gcCc}, // [5] .. + {0x0085, 0x0085, prNL, gcCc}, // + {0x0086, 0x009F, prCM, gcCc}, // [26] .. + {0x00A0, 0x00A0, prGL, gcZs}, // NO-BREAK SPACE + {0x00A1, 0x00A1, prOP, gcPo}, // INVERTED EXCLAMATION MARK + {0x00A2, 0x00A2, prPO, gcSc}, // CENT SIGN + {0x00A3, 0x00A5, prPR, gcSc}, // [3] POUND SIGN..YEN SIGN + {0x00A6, 0x00A6, prAL, gcSo}, // BROKEN BAR + {0x00A7, 0x00A7, prAI, gcPo}, // SECTION SIGN + {0x00A8, 0x00A8, prAI, gcSk}, // DIAERESIS + {0x00A9, 0x00A9, prAL, gcSo}, // COPYRIGHT SIGN + {0x00AA, 0x00AA, prAI, gcLo}, // FEMININE ORDINAL INDICATOR + {0x00AB, 0x00AB, prQU, gcPi}, // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + {0x00AC, 0x00AC, prAL, gcSm}, // NOT SIGN + {0x00AD, 0x00AD, prBA, gcCf}, // SOFT HYPHEN + {0x00AE, 0x00AE, prAL, gcSo}, // REGISTERED SIGN + {0x00AF, 0x00AF, prAL, gcSk}, // MACRON + {0x00B0, 0x00B0, prPO, gcSo}, // DEGREE SIGN + {0x00B1, 0x00B1, prPR, gcSm}, // PLUS-MINUS SIGN + {0x00B2, 0x00B3, prAI, gcNo}, // [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE + {0x00B4, 0x00B4, prBB, gcSk}, // ACUTE ACCENT + {0x00B5, 0x00B5, prAL, gcLl}, // MICRO SIGN + {0x00B6, 0x00B7, prAI, gcPo}, // [2] PILCROW SIGN..MIDDLE DOT + {0x00B8, 0x00B8, prAI, gcSk}, // CEDILLA + {0x00B9, 0x00B9, prAI, gcNo}, // SUPERSCRIPT ONE + {0x00BA, 0x00BA, prAI, gcLo}, // MASCULINE ORDINAL INDICATOR + {0x00BB, 0x00BB, prQU, gcPf}, // RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + {0x00BC, 0x00BE, prAI, gcNo}, // [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS + {0x00BF, 0x00BF, prOP, gcPo}, // INVERTED QUESTION MARK + {0x00C0, 0x00D6, prAL, gcLu}, // [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS + {0x00D7, 0x00D7, prAI, gcSm}, // MULTIPLICATION SIGN + {0x00D8, 0x00F6, prAL, gcLC}, // [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS + {0x00F7, 0x00F7, prAI, gcSm}, // DIVISION SIGN + {0x00F8, 0x00FF, prAL, gcLl}, // [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS + {0x0100, 0x017F, prAL, gcLC}, // [128] LATIN CAPITAL LETTER A WITH MACRON..LATIN SMALL LETTER LONG S + {0x0180, 0x01BA, prAL, gcLC}, // [59] LATIN SMALL LETTER B WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL + {0x01BB, 0x01BB, prAL, gcLo}, // LATIN LETTER TWO WITH STROKE + {0x01BC, 0x01BF, prAL, gcLC}, // [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN + {0x01C0, 0x01C3, prAL, gcLo}, // [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK + {0x01C4, 0x024F, prAL, gcLC}, // [140] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER Y WITH STROKE + {0x0250, 0x0293, prAL, gcLl}, // [68] LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER EZH WITH CURL + {0x0294, 0x0294, prAL, gcLo}, // LATIN LETTER GLOTTAL STOP + {0x0295, 0x02AF, prAL, gcLl}, // [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL + {0x02B0, 0x02C1, prAL, gcLm}, // [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP + {0x02C2, 0x02C5, prAL, gcSk}, // [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD + {0x02C6, 0x02C6, prAL, gcLm}, // MODIFIER LETTER CIRCUMFLEX ACCENT + {0x02C7, 0x02C7, prAI, gcLm}, // CARON + {0x02C8, 0x02C8, prBB, gcLm}, // MODIFIER LETTER VERTICAL LINE + {0x02C9, 0x02CB, prAI, gcLm}, // [3] MODIFIER LETTER MACRON..MODIFIER LETTER GRAVE ACCENT + {0x02CC, 0x02CC, prBB, gcLm}, // MODIFIER LETTER LOW VERTICAL LINE + {0x02CD, 0x02CD, prAI, gcLm}, // MODIFIER LETTER LOW MACRON + {0x02CE, 0x02CF, prAL, gcLm}, // [2] MODIFIER LETTER LOW GRAVE ACCENT..MODIFIER LETTER LOW ACUTE ACCENT + {0x02D0, 0x02D0, prAI, gcLm}, // MODIFIER LETTER TRIANGULAR COLON + {0x02D1, 0x02D1, prAL, gcLm}, // MODIFIER LETTER HALF TRIANGULAR COLON + {0x02D2, 0x02D7, prAL, gcSk}, // [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN + {0x02D8, 0x02DB, prAI, gcSk}, // [4] BREVE..OGONEK + {0x02DC, 0x02DC, prAL, gcSk}, // SMALL TILDE + {0x02DD, 0x02DD, prAI, gcSk}, // DOUBLE ACUTE ACCENT + {0x02DE, 0x02DE, prAL, gcSk}, // MODIFIER LETTER RHOTIC HOOK + {0x02DF, 0x02DF, prBB, gcSk}, // MODIFIER LETTER CROSS ACCENT + {0x02E0, 0x02E4, prAL, gcLm}, // [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + {0x02E5, 0x02EB, prAL, gcSk}, // [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK + {0x02EC, 0x02EC, prAL, gcLm}, // MODIFIER LETTER VOICING + {0x02ED, 0x02ED, prAL, gcSk}, // MODIFIER LETTER UNASPIRATED + {0x02EE, 0x02EE, prAL, gcLm}, // MODIFIER LETTER DOUBLE APOSTROPHE + {0x02EF, 0x02FF, prAL, gcSk}, // [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW + {0x0300, 0x034E, prCM, gcMn}, // [79] COMBINING GRAVE ACCENT..COMBINING UPWARDS ARROW BELOW + {0x034F, 0x034F, prGL, gcMn}, // COMBINING GRAPHEME JOINER + {0x0350, 0x035B, prCM, gcMn}, // [12] COMBINING RIGHT ARROWHEAD ABOVE..COMBINING ZIGZAG ABOVE + {0x035C, 0x0362, prGL, gcMn}, // [7] COMBINING DOUBLE BREVE BELOW..COMBINING DOUBLE RIGHTWARDS ARROW BELOW + {0x0363, 0x036F, prCM, gcMn}, // [13] COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X + {0x0370, 0x0373, prAL, gcLC}, // [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI + {0x0374, 0x0374, prAL, gcLm}, // GREEK NUMERAL SIGN + {0x0375, 0x0375, prAL, gcSk}, // GREEK LOWER NUMERAL SIGN + {0x0376, 0x0377, prAL, gcLC}, // [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA + {0x037A, 0x037A, prAL, gcLm}, // GREEK YPOGEGRAMMENI + {0x037B, 0x037D, prAL, gcLl}, // [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL + {0x037E, 0x037E, prIS, gcPo}, // GREEK QUESTION MARK + {0x037F, 0x037F, prAL, gcLu}, // GREEK CAPITAL LETTER YOT + {0x0384, 0x0385, prAL, gcSk}, // [2] GREEK TONOS..GREEK DIALYTIKA TONOS + {0x0386, 0x0386, prAL, gcLu}, // GREEK CAPITAL LETTER ALPHA WITH TONOS + {0x0387, 0x0387, prAL, gcPo}, // GREEK ANO TELEIA + {0x0388, 0x038A, prAL, gcLu}, // [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS + {0x038C, 0x038C, prAL, gcLu}, // GREEK CAPITAL LETTER OMICRON WITH TONOS + {0x038E, 0x03A1, prAL, gcLC}, // [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO + {0x03A3, 0x03F5, prAL, gcLC}, // [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL + {0x03F6, 0x03F6, prAL, gcSm}, // GREEK REVERSED LUNATE EPSILON SYMBOL + {0x03F7, 0x03FF, prAL, gcLC}, // [9] GREEK CAPITAL LETTER SHO..GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL + {0x0400, 0x0481, prAL, gcLC}, // [130] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER KOPPA + {0x0482, 0x0482, prAL, gcSo}, // CYRILLIC THOUSANDS SIGN + {0x0483, 0x0487, prCM, gcMn}, // [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE + {0x0488, 0x0489, prCM, gcMe}, // [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN + {0x048A, 0x04FF, prAL, gcLC}, // [118] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER HA WITH STROKE + {0x0500, 0x052F, prAL, gcLC}, // [48] CYRILLIC CAPITAL LETTER KOMI DE..CYRILLIC SMALL LETTER EL WITH DESCENDER + {0x0531, 0x0556, prAL, gcLu}, // [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH + {0x0559, 0x0559, prAL, gcLm}, // ARMENIAN MODIFIER LETTER LEFT HALF RING + {0x055A, 0x055F, prAL, gcPo}, // [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK + {0x0560, 0x0588, prAL, gcLl}, // [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE + {0x0589, 0x0589, prIS, gcPo}, // ARMENIAN FULL STOP + {0x058A, 0x058A, prBA, gcPd}, // ARMENIAN HYPHEN + {0x058D, 0x058E, prAL, gcSo}, // [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN + {0x058F, 0x058F, prPR, gcSc}, // ARMENIAN DRAM SIGN + {0x0591, 0x05BD, prCM, gcMn}, // [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG + {0x05BE, 0x05BE, prBA, gcPd}, // HEBREW PUNCTUATION MAQAF + {0x05BF, 0x05BF, prCM, gcMn}, // HEBREW POINT RAFE + {0x05C0, 0x05C0, prAL, gcPo}, // HEBREW PUNCTUATION PASEQ + {0x05C1, 0x05C2, prCM, gcMn}, // [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT + {0x05C3, 0x05C3, prAL, gcPo}, // HEBREW PUNCTUATION SOF PASUQ + {0x05C4, 0x05C5, prCM, gcMn}, // [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT + {0x05C6, 0x05C6, prEX, gcPo}, // HEBREW PUNCTUATION NUN HAFUKHA + {0x05C7, 0x05C7, prCM, gcMn}, // HEBREW POINT QAMATS QATAN + {0x05D0, 0x05EA, prHL, gcLo}, // [27] HEBREW LETTER ALEF..HEBREW LETTER TAV + {0x05EF, 0x05F2, prHL, gcLo}, // [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD + {0x05F3, 0x05F4, prAL, gcPo}, // [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM + {0x0600, 0x0605, prAL, gcCf}, // [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE + {0x0606, 0x0608, prAL, gcSm}, // [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY + {0x0609, 0x060A, prPO, gcPo}, // [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN + {0x060B, 0x060B, prPO, gcSc}, // AFGHANI SIGN + {0x060C, 0x060D, prIS, gcPo}, // [2] ARABIC COMMA..ARABIC DATE SEPARATOR + {0x060E, 0x060F, prAL, gcSo}, // [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA + {0x0610, 0x061A, prCM, gcMn}, // [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA + {0x061B, 0x061B, prEX, gcPo}, // ARABIC SEMICOLON + {0x061C, 0x061C, prCM, gcCf}, // ARABIC LETTER MARK + {0x061D, 0x061F, prEX, gcPo}, // [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK + {0x0620, 0x063F, prAL, gcLo}, // [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE + {0x0640, 0x0640, prAL, gcLm}, // ARABIC TATWEEL + {0x0641, 0x064A, prAL, gcLo}, // [10] ARABIC LETTER FEH..ARABIC LETTER YEH + {0x064B, 0x065F, prCM, gcMn}, // [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW + {0x0660, 0x0669, prNU, gcNd}, // [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE + {0x066A, 0x066A, prPO, gcPo}, // ARABIC PERCENT SIGN + {0x066B, 0x066C, prNU, gcPo}, // [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR + {0x066D, 0x066D, prAL, gcPo}, // ARABIC FIVE POINTED STAR + {0x066E, 0x066F, prAL, gcLo}, // [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF + {0x0670, 0x0670, prCM, gcMn}, // ARABIC LETTER SUPERSCRIPT ALEF + {0x0671, 0x06D3, prAL, gcLo}, // [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE + {0x06D4, 0x06D4, prEX, gcPo}, // ARABIC FULL STOP + {0x06D5, 0x06D5, prAL, gcLo}, // ARABIC LETTER AE + {0x06D6, 0x06DC, prCM, gcMn}, // [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN + {0x06DD, 0x06DD, prAL, gcCf}, // ARABIC END OF AYAH + {0x06DE, 0x06DE, prAL, gcSo}, // ARABIC START OF RUB EL HIZB + {0x06DF, 0x06E4, prCM, gcMn}, // [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA + {0x06E5, 0x06E6, prAL, gcLm}, // [2] ARABIC SMALL WAW..ARABIC SMALL YEH + {0x06E7, 0x06E8, prCM, gcMn}, // [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON + {0x06E9, 0x06E9, prAL, gcSo}, // ARABIC PLACE OF SAJDAH + {0x06EA, 0x06ED, prCM, gcMn}, // [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM + {0x06EE, 0x06EF, prAL, gcLo}, // [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V + {0x06F0, 0x06F9, prNU, gcNd}, // [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE + {0x06FA, 0x06FC, prAL, gcLo}, // [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW + {0x06FD, 0x06FE, prAL, gcSo}, // [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN + {0x06FF, 0x06FF, prAL, gcLo}, // ARABIC LETTER HEH WITH INVERTED V + {0x0700, 0x070D, prAL, gcPo}, // [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS + {0x070F, 0x070F, prAL, gcCf}, // SYRIAC ABBREVIATION MARK + {0x0710, 0x0710, prAL, gcLo}, // SYRIAC LETTER ALAPH + {0x0711, 0x0711, prCM, gcMn}, // SYRIAC LETTER SUPERSCRIPT ALAPH + {0x0712, 0x072F, prAL, gcLo}, // [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH + {0x0730, 0x074A, prCM, gcMn}, // [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH + {0x074D, 0x074F, prAL, gcLo}, // [3] SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE + {0x0750, 0x077F, prAL, gcLo}, // [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE + {0x0780, 0x07A5, prAL, gcLo}, // [38] THAANA LETTER HAA..THAANA LETTER WAAVU + {0x07A6, 0x07B0, prCM, gcMn}, // [11] THAANA ABAFILI..THAANA SUKUN + {0x07B1, 0x07B1, prAL, gcLo}, // THAANA LETTER NAA + {0x07C0, 0x07C9, prNU, gcNd}, // [10] NKO DIGIT ZERO..NKO DIGIT NINE + {0x07CA, 0x07EA, prAL, gcLo}, // [33] NKO LETTER A..NKO LETTER JONA RA + {0x07EB, 0x07F3, prCM, gcMn}, // [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE + {0x07F4, 0x07F5, prAL, gcLm}, // [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE + {0x07F6, 0x07F6, prAL, gcSo}, // NKO SYMBOL OO DENNEN + {0x07F7, 0x07F7, prAL, gcPo}, // NKO SYMBOL GBAKURUNEN + {0x07F8, 0x07F8, prIS, gcPo}, // NKO COMMA + {0x07F9, 0x07F9, prEX, gcPo}, // NKO EXCLAMATION MARK + {0x07FA, 0x07FA, prAL, gcLm}, // NKO LAJANYALAN + {0x07FD, 0x07FD, prCM, gcMn}, // NKO DANTAYALAN + {0x07FE, 0x07FF, prPR, gcSc}, // [2] NKO DOROME SIGN..NKO TAMAN SIGN + {0x0800, 0x0815, prAL, gcLo}, // [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF + {0x0816, 0x0819, prCM, gcMn}, // [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH + {0x081A, 0x081A, prAL, gcLm}, // SAMARITAN MODIFIER LETTER EPENTHETIC YUT + {0x081B, 0x0823, prCM, gcMn}, // [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A + {0x0824, 0x0824, prAL, gcLm}, // SAMARITAN MODIFIER LETTER SHORT A + {0x0825, 0x0827, prCM, gcMn}, // [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U + {0x0828, 0x0828, prAL, gcLm}, // SAMARITAN MODIFIER LETTER I + {0x0829, 0x082D, prCM, gcMn}, // [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA + {0x0830, 0x083E, prAL, gcPo}, // [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU + {0x0840, 0x0858, prAL, gcLo}, // [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN + {0x0859, 0x085B, prCM, gcMn}, // [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK + {0x085E, 0x085E, prAL, gcPo}, // MANDAIC PUNCTUATION + {0x0860, 0x086A, prAL, gcLo}, // [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA + {0x0870, 0x0887, prAL, gcLo}, // [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT + {0x0888, 0x0888, prAL, gcSk}, // ARABIC RAISED ROUND DOT + {0x0889, 0x088E, prAL, gcLo}, // [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL + {0x0890, 0x0891, prAL, gcCf}, // [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE + {0x0898, 0x089F, prCM, gcMn}, // [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA + {0x08A0, 0x08C8, prAL, gcLo}, // [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF + {0x08C9, 0x08C9, prAL, gcLm}, // ARABIC SMALL FARSI YEH + {0x08CA, 0x08E1, prCM, gcMn}, // [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA + {0x08E2, 0x08E2, prAL, gcCf}, // ARABIC DISPUTED END OF AYAH + {0x08E3, 0x08FF, prCM, gcMn}, // [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA + {0x0900, 0x0902, prCM, gcMn}, // [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA + {0x0903, 0x0903, prCM, gcMc}, // DEVANAGARI SIGN VISARGA + {0x0904, 0x0939, prAL, gcLo}, // [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA + {0x093A, 0x093A, prCM, gcMn}, // DEVANAGARI VOWEL SIGN OE + {0x093B, 0x093B, prCM, gcMc}, // DEVANAGARI VOWEL SIGN OOE + {0x093C, 0x093C, prCM, gcMn}, // DEVANAGARI SIGN NUKTA + {0x093D, 0x093D, prAL, gcLo}, // DEVANAGARI SIGN AVAGRAHA + {0x093E, 0x0940, prCM, gcMc}, // [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II + {0x0941, 0x0948, prCM, gcMn}, // [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI + {0x0949, 0x094C, prCM, gcMc}, // [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU + {0x094D, 0x094D, prCM, gcMn}, // DEVANAGARI SIGN VIRAMA + {0x094E, 0x094F, prCM, gcMc}, // [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW + {0x0950, 0x0950, prAL, gcLo}, // DEVANAGARI OM + {0x0951, 0x0957, prCM, gcMn}, // [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE + {0x0958, 0x0961, prAL, gcLo}, // [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL + {0x0962, 0x0963, prCM, gcMn}, // [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL + {0x0964, 0x0965, prBA, gcPo}, // [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA + {0x0966, 0x096F, prNU, gcNd}, // [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE + {0x0970, 0x0970, prAL, gcPo}, // DEVANAGARI ABBREVIATION SIGN + {0x0971, 0x0971, prAL, gcLm}, // DEVANAGARI SIGN HIGH SPACING DOT + {0x0972, 0x097F, prAL, gcLo}, // [14] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER BBA + {0x0980, 0x0980, prAL, gcLo}, // BENGALI ANJI + {0x0981, 0x0981, prCM, gcMn}, // BENGALI SIGN CANDRABINDU + {0x0982, 0x0983, prCM, gcMc}, // [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA + {0x0985, 0x098C, prAL, gcLo}, // [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L + {0x098F, 0x0990, prAL, gcLo}, // [2] BENGALI LETTER E..BENGALI LETTER AI + {0x0993, 0x09A8, prAL, gcLo}, // [22] BENGALI LETTER O..BENGALI LETTER NA + {0x09AA, 0x09B0, prAL, gcLo}, // [7] BENGALI LETTER PA..BENGALI LETTER RA + {0x09B2, 0x09B2, prAL, gcLo}, // BENGALI LETTER LA + {0x09B6, 0x09B9, prAL, gcLo}, // [4] BENGALI LETTER SHA..BENGALI LETTER HA + {0x09BC, 0x09BC, prCM, gcMn}, // BENGALI SIGN NUKTA + {0x09BD, 0x09BD, prAL, gcLo}, // BENGALI SIGN AVAGRAHA + {0x09BE, 0x09C0, prCM, gcMc}, // [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II + {0x09C1, 0x09C4, prCM, gcMn}, // [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR + {0x09C7, 0x09C8, prCM, gcMc}, // [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI + {0x09CB, 0x09CC, prCM, gcMc}, // [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU + {0x09CD, 0x09CD, prCM, gcMn}, // BENGALI SIGN VIRAMA + {0x09CE, 0x09CE, prAL, gcLo}, // BENGALI LETTER KHANDA TA + {0x09D7, 0x09D7, prCM, gcMc}, // BENGALI AU LENGTH MARK + {0x09DC, 0x09DD, prAL, gcLo}, // [2] BENGALI LETTER RRA..BENGALI LETTER RHA + {0x09DF, 0x09E1, prAL, gcLo}, // [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL + {0x09E2, 0x09E3, prCM, gcMn}, // [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL + {0x09E6, 0x09EF, prNU, gcNd}, // [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE + {0x09F0, 0x09F1, prAL, gcLo}, // [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL + {0x09F2, 0x09F3, prPO, gcSc}, // [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN + {0x09F4, 0x09F8, prAL, gcNo}, // [5] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR + {0x09F9, 0x09F9, prPO, gcNo}, // BENGALI CURRENCY DENOMINATOR SIXTEEN + {0x09FA, 0x09FA, prAL, gcSo}, // BENGALI ISSHAR + {0x09FB, 0x09FB, prPR, gcSc}, // BENGALI GANDA MARK + {0x09FC, 0x09FC, prAL, gcLo}, // BENGALI LETTER VEDIC ANUSVARA + {0x09FD, 0x09FD, prAL, gcPo}, // BENGALI ABBREVIATION SIGN + {0x09FE, 0x09FE, prCM, gcMn}, // BENGALI SANDHI MARK + {0x0A01, 0x0A02, prCM, gcMn}, // [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI + {0x0A03, 0x0A03, prCM, gcMc}, // GURMUKHI SIGN VISARGA + {0x0A05, 0x0A0A, prAL, gcLo}, // [6] GURMUKHI LETTER A..GURMUKHI LETTER UU + {0x0A0F, 0x0A10, prAL, gcLo}, // [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI + {0x0A13, 0x0A28, prAL, gcLo}, // [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA + {0x0A2A, 0x0A30, prAL, gcLo}, // [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA + {0x0A32, 0x0A33, prAL, gcLo}, // [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA + {0x0A35, 0x0A36, prAL, gcLo}, // [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA + {0x0A38, 0x0A39, prAL, gcLo}, // [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA + {0x0A3C, 0x0A3C, prCM, gcMn}, // GURMUKHI SIGN NUKTA + {0x0A3E, 0x0A40, prCM, gcMc}, // [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II + {0x0A41, 0x0A42, prCM, gcMn}, // [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU + {0x0A47, 0x0A48, prCM, gcMn}, // [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI + {0x0A4B, 0x0A4D, prCM, gcMn}, // [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA + {0x0A51, 0x0A51, prCM, gcMn}, // GURMUKHI SIGN UDAAT + {0x0A59, 0x0A5C, prAL, gcLo}, // [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA + {0x0A5E, 0x0A5E, prAL, gcLo}, // GURMUKHI LETTER FA + {0x0A66, 0x0A6F, prNU, gcNd}, // [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE + {0x0A70, 0x0A71, prCM, gcMn}, // [2] GURMUKHI TIPPI..GURMUKHI ADDAK + {0x0A72, 0x0A74, prAL, gcLo}, // [3] GURMUKHI IRI..GURMUKHI EK ONKAR + {0x0A75, 0x0A75, prCM, gcMn}, // GURMUKHI SIGN YAKASH + {0x0A76, 0x0A76, prAL, gcPo}, // GURMUKHI ABBREVIATION SIGN + {0x0A81, 0x0A82, prCM, gcMn}, // [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA + {0x0A83, 0x0A83, prCM, gcMc}, // GUJARATI SIGN VISARGA + {0x0A85, 0x0A8D, prAL, gcLo}, // [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E + {0x0A8F, 0x0A91, prAL, gcLo}, // [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O + {0x0A93, 0x0AA8, prAL, gcLo}, // [22] GUJARATI LETTER O..GUJARATI LETTER NA + {0x0AAA, 0x0AB0, prAL, gcLo}, // [7] GUJARATI LETTER PA..GUJARATI LETTER RA + {0x0AB2, 0x0AB3, prAL, gcLo}, // [2] GUJARATI LETTER LA..GUJARATI LETTER LLA + {0x0AB5, 0x0AB9, prAL, gcLo}, // [5] GUJARATI LETTER VA..GUJARATI LETTER HA + {0x0ABC, 0x0ABC, prCM, gcMn}, // GUJARATI SIGN NUKTA + {0x0ABD, 0x0ABD, prAL, gcLo}, // GUJARATI SIGN AVAGRAHA + {0x0ABE, 0x0AC0, prCM, gcMc}, // [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II + {0x0AC1, 0x0AC5, prCM, gcMn}, // [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E + {0x0AC7, 0x0AC8, prCM, gcMn}, // [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI + {0x0AC9, 0x0AC9, prCM, gcMc}, // GUJARATI VOWEL SIGN CANDRA O + {0x0ACB, 0x0ACC, prCM, gcMc}, // [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU + {0x0ACD, 0x0ACD, prCM, gcMn}, // GUJARATI SIGN VIRAMA + {0x0AD0, 0x0AD0, prAL, gcLo}, // GUJARATI OM + {0x0AE0, 0x0AE1, prAL, gcLo}, // [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL + {0x0AE2, 0x0AE3, prCM, gcMn}, // [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL + {0x0AE6, 0x0AEF, prNU, gcNd}, // [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE + {0x0AF0, 0x0AF0, prAL, gcPo}, // GUJARATI ABBREVIATION SIGN + {0x0AF1, 0x0AF1, prPR, gcSc}, // GUJARATI RUPEE SIGN + {0x0AF9, 0x0AF9, prAL, gcLo}, // GUJARATI LETTER ZHA + {0x0AFA, 0x0AFF, prCM, gcMn}, // [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE + {0x0B01, 0x0B01, prCM, gcMn}, // ORIYA SIGN CANDRABINDU + {0x0B02, 0x0B03, prCM, gcMc}, // [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA + {0x0B05, 0x0B0C, prAL, gcLo}, // [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L + {0x0B0F, 0x0B10, prAL, gcLo}, // [2] ORIYA LETTER E..ORIYA LETTER AI + {0x0B13, 0x0B28, prAL, gcLo}, // [22] ORIYA LETTER O..ORIYA LETTER NA + {0x0B2A, 0x0B30, prAL, gcLo}, // [7] ORIYA LETTER PA..ORIYA LETTER RA + {0x0B32, 0x0B33, prAL, gcLo}, // [2] ORIYA LETTER LA..ORIYA LETTER LLA + {0x0B35, 0x0B39, prAL, gcLo}, // [5] ORIYA LETTER VA..ORIYA LETTER HA + {0x0B3C, 0x0B3C, prCM, gcMn}, // ORIYA SIGN NUKTA + {0x0B3D, 0x0B3D, prAL, gcLo}, // ORIYA SIGN AVAGRAHA + {0x0B3E, 0x0B3E, prCM, gcMc}, // ORIYA VOWEL SIGN AA + {0x0B3F, 0x0B3F, prCM, gcMn}, // ORIYA VOWEL SIGN I + {0x0B40, 0x0B40, prCM, gcMc}, // ORIYA VOWEL SIGN II + {0x0B41, 0x0B44, prCM, gcMn}, // [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR + {0x0B47, 0x0B48, prCM, gcMc}, // [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI + {0x0B4B, 0x0B4C, prCM, gcMc}, // [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU + {0x0B4D, 0x0B4D, prCM, gcMn}, // ORIYA SIGN VIRAMA + {0x0B55, 0x0B56, prCM, gcMn}, // [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK + {0x0B57, 0x0B57, prCM, gcMc}, // ORIYA AU LENGTH MARK + {0x0B5C, 0x0B5D, prAL, gcLo}, // [2] ORIYA LETTER RRA..ORIYA LETTER RHA + {0x0B5F, 0x0B61, prAL, gcLo}, // [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL + {0x0B62, 0x0B63, prCM, gcMn}, // [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL + {0x0B66, 0x0B6F, prNU, gcNd}, // [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE + {0x0B70, 0x0B70, prAL, gcSo}, // ORIYA ISSHAR + {0x0B71, 0x0B71, prAL, gcLo}, // ORIYA LETTER WA + {0x0B72, 0x0B77, prAL, gcNo}, // [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS + {0x0B82, 0x0B82, prCM, gcMn}, // TAMIL SIGN ANUSVARA + {0x0B83, 0x0B83, prAL, gcLo}, // TAMIL SIGN VISARGA + {0x0B85, 0x0B8A, prAL, gcLo}, // [6] TAMIL LETTER A..TAMIL LETTER UU + {0x0B8E, 0x0B90, prAL, gcLo}, // [3] TAMIL LETTER E..TAMIL LETTER AI + {0x0B92, 0x0B95, prAL, gcLo}, // [4] TAMIL LETTER O..TAMIL LETTER KA + {0x0B99, 0x0B9A, prAL, gcLo}, // [2] TAMIL LETTER NGA..TAMIL LETTER CA + {0x0B9C, 0x0B9C, prAL, gcLo}, // TAMIL LETTER JA + {0x0B9E, 0x0B9F, prAL, gcLo}, // [2] TAMIL LETTER NYA..TAMIL LETTER TTA + {0x0BA3, 0x0BA4, prAL, gcLo}, // [2] TAMIL LETTER NNA..TAMIL LETTER TA + {0x0BA8, 0x0BAA, prAL, gcLo}, // [3] TAMIL LETTER NA..TAMIL LETTER PA + {0x0BAE, 0x0BB9, prAL, gcLo}, // [12] TAMIL LETTER MA..TAMIL LETTER HA + {0x0BBE, 0x0BBF, prCM, gcMc}, // [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I + {0x0BC0, 0x0BC0, prCM, gcMn}, // TAMIL VOWEL SIGN II + {0x0BC1, 0x0BC2, prCM, gcMc}, // [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU + {0x0BC6, 0x0BC8, prCM, gcMc}, // [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI + {0x0BCA, 0x0BCC, prCM, gcMc}, // [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU + {0x0BCD, 0x0BCD, prCM, gcMn}, // TAMIL SIGN VIRAMA + {0x0BD0, 0x0BD0, prAL, gcLo}, // TAMIL OM + {0x0BD7, 0x0BD7, prCM, gcMc}, // TAMIL AU LENGTH MARK + {0x0BE6, 0x0BEF, prNU, gcNd}, // [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE + {0x0BF0, 0x0BF2, prAL, gcNo}, // [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND + {0x0BF3, 0x0BF8, prAL, gcSo}, // [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN + {0x0BF9, 0x0BF9, prPR, gcSc}, // TAMIL RUPEE SIGN + {0x0BFA, 0x0BFA, prAL, gcSo}, // TAMIL NUMBER SIGN + {0x0C00, 0x0C00, prCM, gcMn}, // TELUGU SIGN COMBINING CANDRABINDU ABOVE + {0x0C01, 0x0C03, prCM, gcMc}, // [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA + {0x0C04, 0x0C04, prCM, gcMn}, // TELUGU SIGN COMBINING ANUSVARA ABOVE + {0x0C05, 0x0C0C, prAL, gcLo}, // [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L + {0x0C0E, 0x0C10, prAL, gcLo}, // [3] TELUGU LETTER E..TELUGU LETTER AI + {0x0C12, 0x0C28, prAL, gcLo}, // [23] TELUGU LETTER O..TELUGU LETTER NA + {0x0C2A, 0x0C39, prAL, gcLo}, // [16] TELUGU LETTER PA..TELUGU LETTER HA + {0x0C3C, 0x0C3C, prCM, gcMn}, // TELUGU SIGN NUKTA + {0x0C3D, 0x0C3D, prAL, gcLo}, // TELUGU SIGN AVAGRAHA + {0x0C3E, 0x0C40, prCM, gcMn}, // [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II + {0x0C41, 0x0C44, prCM, gcMc}, // [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR + {0x0C46, 0x0C48, prCM, gcMn}, // [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI + {0x0C4A, 0x0C4D, prCM, gcMn}, // [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA + {0x0C55, 0x0C56, prCM, gcMn}, // [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK + {0x0C58, 0x0C5A, prAL, gcLo}, // [3] TELUGU LETTER TSA..TELUGU LETTER RRRA + {0x0C5D, 0x0C5D, prAL, gcLo}, // TELUGU LETTER NAKAARA POLLU + {0x0C60, 0x0C61, prAL, gcLo}, // [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL + {0x0C62, 0x0C63, prCM, gcMn}, // [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL + {0x0C66, 0x0C6F, prNU, gcNd}, // [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE + {0x0C77, 0x0C77, prBB, gcPo}, // TELUGU SIGN SIDDHAM + {0x0C78, 0x0C7E, prAL, gcNo}, // [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR + {0x0C7F, 0x0C7F, prAL, gcSo}, // TELUGU SIGN TUUMU + {0x0C80, 0x0C80, prAL, gcLo}, // KANNADA SIGN SPACING CANDRABINDU + {0x0C81, 0x0C81, prCM, gcMn}, // KANNADA SIGN CANDRABINDU + {0x0C82, 0x0C83, prCM, gcMc}, // [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA + {0x0C84, 0x0C84, prBB, gcPo}, // KANNADA SIGN SIDDHAM + {0x0C85, 0x0C8C, prAL, gcLo}, // [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L + {0x0C8E, 0x0C90, prAL, gcLo}, // [3] KANNADA LETTER E..KANNADA LETTER AI + {0x0C92, 0x0CA8, prAL, gcLo}, // [23] KANNADA LETTER O..KANNADA LETTER NA + {0x0CAA, 0x0CB3, prAL, gcLo}, // [10] KANNADA LETTER PA..KANNADA LETTER LLA + {0x0CB5, 0x0CB9, prAL, gcLo}, // [5] KANNADA LETTER VA..KANNADA LETTER HA + {0x0CBC, 0x0CBC, prCM, gcMn}, // KANNADA SIGN NUKTA + {0x0CBD, 0x0CBD, prAL, gcLo}, // KANNADA SIGN AVAGRAHA + {0x0CBE, 0x0CBE, prCM, gcMc}, // KANNADA VOWEL SIGN AA + {0x0CBF, 0x0CBF, prCM, gcMn}, // KANNADA VOWEL SIGN I + {0x0CC0, 0x0CC4, prCM, gcMc}, // [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR + {0x0CC6, 0x0CC6, prCM, gcMn}, // KANNADA VOWEL SIGN E + {0x0CC7, 0x0CC8, prCM, gcMc}, // [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI + {0x0CCA, 0x0CCB, prCM, gcMc}, // [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO + {0x0CCC, 0x0CCD, prCM, gcMn}, // [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA + {0x0CD5, 0x0CD6, prCM, gcMc}, // [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK + {0x0CDD, 0x0CDE, prAL, gcLo}, // [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA + {0x0CE0, 0x0CE1, prAL, gcLo}, // [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL + {0x0CE2, 0x0CE3, prCM, gcMn}, // [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL + {0x0CE6, 0x0CEF, prNU, gcNd}, // [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE + {0x0CF1, 0x0CF2, prAL, gcLo}, // [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA + {0x0CF3, 0x0CF3, prCM, gcMc}, // KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT + {0x0D00, 0x0D01, prCM, gcMn}, // [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU + {0x0D02, 0x0D03, prCM, gcMc}, // [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA + {0x0D04, 0x0D0C, prAL, gcLo}, // [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L + {0x0D0E, 0x0D10, prAL, gcLo}, // [3] MALAYALAM LETTER E..MALAYALAM LETTER AI + {0x0D12, 0x0D3A, prAL, gcLo}, // [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA + {0x0D3B, 0x0D3C, prCM, gcMn}, // [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA + {0x0D3D, 0x0D3D, prAL, gcLo}, // MALAYALAM SIGN AVAGRAHA + {0x0D3E, 0x0D40, prCM, gcMc}, // [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II + {0x0D41, 0x0D44, prCM, gcMn}, // [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR + {0x0D46, 0x0D48, prCM, gcMc}, // [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI + {0x0D4A, 0x0D4C, prCM, gcMc}, // [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU + {0x0D4D, 0x0D4D, prCM, gcMn}, // MALAYALAM SIGN VIRAMA + {0x0D4E, 0x0D4E, prAL, gcLo}, // MALAYALAM LETTER DOT REPH + {0x0D4F, 0x0D4F, prAL, gcSo}, // MALAYALAM SIGN PARA + {0x0D54, 0x0D56, prAL, gcLo}, // [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL + {0x0D57, 0x0D57, prCM, gcMc}, // MALAYALAM AU LENGTH MARK + {0x0D58, 0x0D5E, prAL, gcNo}, // [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH + {0x0D5F, 0x0D61, prAL, gcLo}, // [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL + {0x0D62, 0x0D63, prCM, gcMn}, // [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL + {0x0D66, 0x0D6F, prNU, gcNd}, // [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE + {0x0D70, 0x0D78, prAL, gcNo}, // [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS + {0x0D79, 0x0D79, prPO, gcSo}, // MALAYALAM DATE MARK + {0x0D7A, 0x0D7F, prAL, gcLo}, // [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K + {0x0D81, 0x0D81, prCM, gcMn}, // SINHALA SIGN CANDRABINDU + {0x0D82, 0x0D83, prCM, gcMc}, // [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA + {0x0D85, 0x0D96, prAL, gcLo}, // [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA + {0x0D9A, 0x0DB1, prAL, gcLo}, // [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA + {0x0DB3, 0x0DBB, prAL, gcLo}, // [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA + {0x0DBD, 0x0DBD, prAL, gcLo}, // SINHALA LETTER DANTAJA LAYANNA + {0x0DC0, 0x0DC6, prAL, gcLo}, // [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA + {0x0DCA, 0x0DCA, prCM, gcMn}, // SINHALA SIGN AL-LAKUNA + {0x0DCF, 0x0DD1, prCM, gcMc}, // [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA + {0x0DD2, 0x0DD4, prCM, gcMn}, // [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA + {0x0DD6, 0x0DD6, prCM, gcMn}, // SINHALA VOWEL SIGN DIGA PAA-PILLA + {0x0DD8, 0x0DDF, prCM, gcMc}, // [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA + {0x0DE6, 0x0DEF, prNU, gcNd}, // [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE + {0x0DF2, 0x0DF3, prCM, gcMc}, // [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA + {0x0DF4, 0x0DF4, prAL, gcPo}, // SINHALA PUNCTUATION KUNDDALIYA + {0x0E01, 0x0E30, prSA, gcLo}, // [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A + {0x0E31, 0x0E31, prSA, gcMn}, // THAI CHARACTER MAI HAN-AKAT + {0x0E32, 0x0E33, prSA, gcLo}, // [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM + {0x0E34, 0x0E3A, prSA, gcMn}, // [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU + {0x0E3F, 0x0E3F, prPR, gcSc}, // THAI CURRENCY SYMBOL BAHT + {0x0E40, 0x0E45, prSA, gcLo}, // [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO + {0x0E46, 0x0E46, prSA, gcLm}, // THAI CHARACTER MAIYAMOK + {0x0E47, 0x0E4E, prSA, gcMn}, // [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN + {0x0E4F, 0x0E4F, prAL, gcPo}, // THAI CHARACTER FONGMAN + {0x0E50, 0x0E59, prNU, gcNd}, // [10] THAI DIGIT ZERO..THAI DIGIT NINE + {0x0E5A, 0x0E5B, prBA, gcPo}, // [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT + {0x0E81, 0x0E82, prSA, gcLo}, // [2] LAO LETTER KO..LAO LETTER KHO SUNG + {0x0E84, 0x0E84, prSA, gcLo}, // LAO LETTER KHO TAM + {0x0E86, 0x0E8A, prSA, gcLo}, // [5] LAO LETTER PALI GHA..LAO LETTER SO TAM + {0x0E8C, 0x0EA3, prSA, gcLo}, // [24] LAO LETTER PALI JHA..LAO LETTER LO LING + {0x0EA5, 0x0EA5, prSA, gcLo}, // LAO LETTER LO LOOT + {0x0EA7, 0x0EB0, prSA, gcLo}, // [10] LAO LETTER WO..LAO VOWEL SIGN A + {0x0EB1, 0x0EB1, prSA, gcMn}, // LAO VOWEL SIGN MAI KAN + {0x0EB2, 0x0EB3, prSA, gcLo}, // [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM + {0x0EB4, 0x0EBC, prSA, gcMn}, // [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO + {0x0EBD, 0x0EBD, prSA, gcLo}, // LAO SEMIVOWEL SIGN NYO + {0x0EC0, 0x0EC4, prSA, gcLo}, // [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI + {0x0EC6, 0x0EC6, prSA, gcLm}, // LAO KO LA + {0x0EC8, 0x0ECE, prSA, gcMn}, // [7] LAO TONE MAI EK..LAO YAMAKKAN + {0x0ED0, 0x0ED9, prNU, gcNd}, // [10] LAO DIGIT ZERO..LAO DIGIT NINE + {0x0EDC, 0x0EDF, prSA, gcLo}, // [4] LAO HO NO..LAO LETTER KHMU NYO + {0x0F00, 0x0F00, prAL, gcLo}, // TIBETAN SYLLABLE OM + {0x0F01, 0x0F03, prBB, gcSo}, // [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA + {0x0F04, 0x0F04, prBB, gcPo}, // TIBETAN MARK INITIAL YIG MGO MDUN MA + {0x0F05, 0x0F05, prAL, gcPo}, // TIBETAN MARK CLOSING YIG MGO SGAB MA + {0x0F06, 0x0F07, prBB, gcPo}, // [2] TIBETAN MARK CARET YIG MGO PHUR SHAD MA..TIBETAN MARK YIG MGO TSHEG SHAD MA + {0x0F08, 0x0F08, prGL, gcPo}, // TIBETAN MARK SBRUL SHAD + {0x0F09, 0x0F0A, prBB, gcPo}, // [2] TIBETAN MARK BSKUR YIG MGO..TIBETAN MARK BKA- SHOG YIG MGO + {0x0F0B, 0x0F0B, prBA, gcPo}, // TIBETAN MARK INTERSYLLABIC TSHEG + {0x0F0C, 0x0F0C, prGL, gcPo}, // TIBETAN MARK DELIMITER TSHEG BSTAR + {0x0F0D, 0x0F11, prEX, gcPo}, // [5] TIBETAN MARK SHAD..TIBETAN MARK RIN CHEN SPUNGS SHAD + {0x0F12, 0x0F12, prGL, gcPo}, // TIBETAN MARK RGYA GRAM SHAD + {0x0F13, 0x0F13, prAL, gcSo}, // TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN + {0x0F14, 0x0F14, prEX, gcPo}, // TIBETAN MARK GTER TSHEG + {0x0F15, 0x0F17, prAL, gcSo}, // [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS + {0x0F18, 0x0F19, prCM, gcMn}, // [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS + {0x0F1A, 0x0F1F, prAL, gcSo}, // [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG + {0x0F20, 0x0F29, prNU, gcNd}, // [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE + {0x0F2A, 0x0F33, prAL, gcNo}, // [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO + {0x0F34, 0x0F34, prBA, gcSo}, // TIBETAN MARK BSDUS RTAGS + {0x0F35, 0x0F35, prCM, gcMn}, // TIBETAN MARK NGAS BZUNG NYI ZLA + {0x0F36, 0x0F36, prAL, gcSo}, // TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN + {0x0F37, 0x0F37, prCM, gcMn}, // TIBETAN MARK NGAS BZUNG SGOR RTAGS + {0x0F38, 0x0F38, prAL, gcSo}, // TIBETAN MARK CHE MGO + {0x0F39, 0x0F39, prCM, gcMn}, // TIBETAN MARK TSA -PHRU + {0x0F3A, 0x0F3A, prOP, gcPs}, // TIBETAN MARK GUG RTAGS GYON + {0x0F3B, 0x0F3B, prCL, gcPe}, // TIBETAN MARK GUG RTAGS GYAS + {0x0F3C, 0x0F3C, prOP, gcPs}, // TIBETAN MARK ANG KHANG GYON + {0x0F3D, 0x0F3D, prCL, gcPe}, // TIBETAN MARK ANG KHANG GYAS + {0x0F3E, 0x0F3F, prCM, gcMc}, // [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES + {0x0F40, 0x0F47, prAL, gcLo}, // [8] TIBETAN LETTER KA..TIBETAN LETTER JA + {0x0F49, 0x0F6C, prAL, gcLo}, // [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA + {0x0F71, 0x0F7E, prCM, gcMn}, // [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO + {0x0F7F, 0x0F7F, prBA, gcMc}, // TIBETAN SIGN RNAM BCAD + {0x0F80, 0x0F84, prCM, gcMn}, // [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA + {0x0F85, 0x0F85, prBA, gcPo}, // TIBETAN MARK PALUTA + {0x0F86, 0x0F87, prCM, gcMn}, // [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS + {0x0F88, 0x0F8C, prAL, gcLo}, // [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN + {0x0F8D, 0x0F97, prCM, gcMn}, // [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA + {0x0F99, 0x0FBC, prCM, gcMn}, // [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA + {0x0FBE, 0x0FBF, prBA, gcSo}, // [2] TIBETAN KU RU KHA..TIBETAN KU RU KHA BZHI MIG CAN + {0x0FC0, 0x0FC5, prAL, gcSo}, // [6] TIBETAN CANTILLATION SIGN HEAVY BEAT..TIBETAN SYMBOL RDO RJE + {0x0FC6, 0x0FC6, prCM, gcMn}, // TIBETAN SYMBOL PADMA GDAN + {0x0FC7, 0x0FCC, prAL, gcSo}, // [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL + {0x0FCE, 0x0FCF, prAL, gcSo}, // [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM + {0x0FD0, 0x0FD1, prBB, gcPo}, // [2] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN + {0x0FD2, 0x0FD2, prBA, gcPo}, // TIBETAN MARK NYIS TSHEG + {0x0FD3, 0x0FD3, prBB, gcPo}, // TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA + {0x0FD4, 0x0FD4, prAL, gcPo}, // TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA + {0x0FD5, 0x0FD8, prAL, gcSo}, // [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS + {0x0FD9, 0x0FDA, prGL, gcPo}, // [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS + {0x1000, 0x102A, prSA, gcLo}, // [43] MYANMAR LETTER KA..MYANMAR LETTER AU + {0x102B, 0x102C, prSA, gcMc}, // [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA + {0x102D, 0x1030, prSA, gcMn}, // [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU + {0x1031, 0x1031, prSA, gcMc}, // MYANMAR VOWEL SIGN E + {0x1032, 0x1037, prSA, gcMn}, // [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW + {0x1038, 0x1038, prSA, gcMc}, // MYANMAR SIGN VISARGA + {0x1039, 0x103A, prSA, gcMn}, // [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT + {0x103B, 0x103C, prSA, gcMc}, // [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA + {0x103D, 0x103E, prSA, gcMn}, // [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA + {0x103F, 0x103F, prSA, gcLo}, // MYANMAR LETTER GREAT SA + {0x1040, 0x1049, prNU, gcNd}, // [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE + {0x104A, 0x104B, prBA, gcPo}, // [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION + {0x104C, 0x104F, prAL, gcPo}, // [4] MYANMAR SYMBOL LOCATIVE..MYANMAR SYMBOL GENITIVE + {0x1050, 0x1055, prSA, gcLo}, // [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL + {0x1056, 0x1057, prSA, gcMc}, // [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR + {0x1058, 0x1059, prSA, gcMn}, // [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL + {0x105A, 0x105D, prSA, gcLo}, // [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE + {0x105E, 0x1060, prSA, gcMn}, // [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA + {0x1061, 0x1061, prSA, gcLo}, // MYANMAR LETTER SGAW KAREN SHA + {0x1062, 0x1064, prSA, gcMc}, // [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO + {0x1065, 0x1066, prSA, gcLo}, // [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA + {0x1067, 0x106D, prSA, gcMc}, // [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 + {0x106E, 0x1070, prSA, gcLo}, // [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA + {0x1071, 0x1074, prSA, gcMn}, // [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE + {0x1075, 0x1081, prSA, gcLo}, // [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA + {0x1082, 0x1082, prSA, gcMn}, // MYANMAR CONSONANT SIGN SHAN MEDIAL WA + {0x1083, 0x1084, prSA, gcMc}, // [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E + {0x1085, 0x1086, prSA, gcMn}, // [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y + {0x1087, 0x108C, prSA, gcMc}, // [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 + {0x108D, 0x108D, prSA, gcMn}, // MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE + {0x108E, 0x108E, prSA, gcLo}, // MYANMAR LETTER RUMAI PALAUNG FA + {0x108F, 0x108F, prSA, gcMc}, // MYANMAR SIGN RUMAI PALAUNG TONE-5 + {0x1090, 0x1099, prNU, gcNd}, // [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE + {0x109A, 0x109C, prSA, gcMc}, // [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A + {0x109D, 0x109D, prSA, gcMn}, // MYANMAR VOWEL SIGN AITON AI + {0x109E, 0x109F, prSA, gcSo}, // [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION + {0x10A0, 0x10C5, prAL, gcLu}, // [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE + {0x10C7, 0x10C7, prAL, gcLu}, // GEORGIAN CAPITAL LETTER YN + {0x10CD, 0x10CD, prAL, gcLu}, // GEORGIAN CAPITAL LETTER AEN + {0x10D0, 0x10FA, prAL, gcLl}, // [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN + {0x10FB, 0x10FB, prAL, gcPo}, // GEORGIAN PARAGRAPH SEPARATOR + {0x10FC, 0x10FC, prAL, gcLm}, // MODIFIER LETTER GEORGIAN NAR + {0x10FD, 0x10FF, prAL, gcLl}, // [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN + {0x1100, 0x115F, prJL, gcLo}, // [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER + {0x1160, 0x11A7, prJV, gcLo}, // [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE + {0x11A8, 0x11FF, prJT, gcLo}, // [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN + {0x1200, 0x1248, prAL, gcLo}, // [73] ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE QWA + {0x124A, 0x124D, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE + {0x1250, 0x1256, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO + {0x1258, 0x1258, prAL, gcLo}, // ETHIOPIC SYLLABLE QHWA + {0x125A, 0x125D, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE + {0x1260, 0x1288, prAL, gcLo}, // [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA + {0x128A, 0x128D, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE + {0x1290, 0x12B0, prAL, gcLo}, // [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA + {0x12B2, 0x12B5, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE + {0x12B8, 0x12BE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO + {0x12C0, 0x12C0, prAL, gcLo}, // ETHIOPIC SYLLABLE KXWA + {0x12C2, 0x12C5, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE + {0x12C8, 0x12D6, prAL, gcLo}, // [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O + {0x12D8, 0x1310, prAL, gcLo}, // [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA + {0x1312, 0x1315, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE + {0x1318, 0x135A, prAL, gcLo}, // [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA + {0x135D, 0x135F, prCM, gcMn}, // [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK + {0x1360, 0x1360, prAL, gcPo}, // ETHIOPIC SECTION MARK + {0x1361, 0x1361, prBA, gcPo}, // ETHIOPIC WORDSPACE + {0x1362, 0x1368, prAL, gcPo}, // [7] ETHIOPIC FULL STOP..ETHIOPIC PARAGRAPH SEPARATOR + {0x1369, 0x137C, prAL, gcNo}, // [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND + {0x1380, 0x138F, prAL, gcLo}, // [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE + {0x1390, 0x1399, prAL, gcSo}, // [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT + {0x13A0, 0x13F5, prAL, gcLu}, // [86] CHEROKEE LETTER A..CHEROKEE LETTER MV + {0x13F8, 0x13FD, prAL, gcLl}, // [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV + {0x1400, 0x1400, prBA, gcPd}, // CANADIAN SYLLABICS HYPHEN + {0x1401, 0x166C, prAL, gcLo}, // [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA + {0x166D, 0x166D, prAL, gcSo}, // CANADIAN SYLLABICS CHI SIGN + {0x166E, 0x166E, prAL, gcPo}, // CANADIAN SYLLABICS FULL STOP + {0x166F, 0x167F, prAL, gcLo}, // [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W + {0x1680, 0x1680, prBA, gcZs}, // OGHAM SPACE MARK + {0x1681, 0x169A, prAL, gcLo}, // [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH + {0x169B, 0x169B, prOP, gcPs}, // OGHAM FEATHER MARK + {0x169C, 0x169C, prCL, gcPe}, // OGHAM REVERSED FEATHER MARK + {0x16A0, 0x16EA, prAL, gcLo}, // [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X + {0x16EB, 0x16ED, prBA, gcPo}, // [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION + {0x16EE, 0x16F0, prAL, gcNl}, // [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL + {0x16F1, 0x16F8, prAL, gcLo}, // [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC + {0x1700, 0x1711, prAL, gcLo}, // [18] TAGALOG LETTER A..TAGALOG LETTER HA + {0x1712, 0x1714, prCM, gcMn}, // [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA + {0x1715, 0x1715, prCM, gcMc}, // TAGALOG SIGN PAMUDPOD + {0x171F, 0x171F, prAL, gcLo}, // TAGALOG LETTER ARCHAIC RA + {0x1720, 0x1731, prAL, gcLo}, // [18] HANUNOO LETTER A..HANUNOO LETTER HA + {0x1732, 0x1733, prCM, gcMn}, // [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U + {0x1734, 0x1734, prCM, gcMc}, // HANUNOO SIGN PAMUDPOD + {0x1735, 0x1736, prBA, gcPo}, // [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION + {0x1740, 0x1751, prAL, gcLo}, // [18] BUHID LETTER A..BUHID LETTER HA + {0x1752, 0x1753, prCM, gcMn}, // [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U + {0x1760, 0x176C, prAL, gcLo}, // [13] TAGBANWA LETTER A..TAGBANWA LETTER YA + {0x176E, 0x1770, prAL, gcLo}, // [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA + {0x1772, 0x1773, prCM, gcMn}, // [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U + {0x1780, 0x17B3, prSA, gcLo}, // [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU + {0x17B4, 0x17B5, prSA, gcMn}, // [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA + {0x17B6, 0x17B6, prSA, gcMc}, // KHMER VOWEL SIGN AA + {0x17B7, 0x17BD, prSA, gcMn}, // [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA + {0x17BE, 0x17C5, prSA, gcMc}, // [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU + {0x17C6, 0x17C6, prSA, gcMn}, // KHMER SIGN NIKAHIT + {0x17C7, 0x17C8, prSA, gcMc}, // [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU + {0x17C9, 0x17D3, prSA, gcMn}, // [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT + {0x17D4, 0x17D5, prBA, gcPo}, // [2] KHMER SIGN KHAN..KHMER SIGN BARIYOOSAN + {0x17D6, 0x17D6, prNS, gcPo}, // KHMER SIGN CAMNUC PII KUUH + {0x17D7, 0x17D7, prSA, gcLm}, // KHMER SIGN LEK TOO + {0x17D8, 0x17D8, prBA, gcPo}, // KHMER SIGN BEYYAL + {0x17D9, 0x17D9, prAL, gcPo}, // KHMER SIGN PHNAEK MUAN + {0x17DA, 0x17DA, prBA, gcPo}, // KHMER SIGN KOOMUUT + {0x17DB, 0x17DB, prPR, gcSc}, // KHMER CURRENCY SYMBOL RIEL + {0x17DC, 0x17DC, prSA, gcLo}, // KHMER SIGN AVAKRAHASANYA + {0x17DD, 0x17DD, prSA, gcMn}, // KHMER SIGN ATTHACAN + {0x17E0, 0x17E9, prNU, gcNd}, // [10] KHMER DIGIT ZERO..KHMER DIGIT NINE + {0x17F0, 0x17F9, prAL, gcNo}, // [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON + {0x1800, 0x1801, prAL, gcPo}, // [2] MONGOLIAN BIRGA..MONGOLIAN ELLIPSIS + {0x1802, 0x1803, prEX, gcPo}, // [2] MONGOLIAN COMMA..MONGOLIAN FULL STOP + {0x1804, 0x1805, prBA, gcPo}, // [2] MONGOLIAN COLON..MONGOLIAN FOUR DOTS + {0x1806, 0x1806, prBB, gcPd}, // MONGOLIAN TODO SOFT HYPHEN + {0x1807, 0x1807, prAL, gcPo}, // MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER + {0x1808, 0x1809, prEX, gcPo}, // [2] MONGOLIAN MANCHU COMMA..MONGOLIAN MANCHU FULL STOP + {0x180A, 0x180A, prAL, gcPo}, // MONGOLIAN NIRUGU + {0x180B, 0x180D, prCM, gcMn}, // [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE + {0x180E, 0x180E, prGL, gcCf}, // MONGOLIAN VOWEL SEPARATOR + {0x180F, 0x180F, prCM, gcMn}, // MONGOLIAN FREE VARIATION SELECTOR FOUR + {0x1810, 0x1819, prNU, gcNd}, // [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE + {0x1820, 0x1842, prAL, gcLo}, // [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI + {0x1843, 0x1843, prAL, gcLm}, // MONGOLIAN LETTER TODO LONG VOWEL SIGN + {0x1844, 0x1878, prAL, gcLo}, // [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS + {0x1880, 0x1884, prAL, gcLo}, // [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA + {0x1885, 0x1886, prCM, gcMn}, // [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA + {0x1887, 0x18A8, prAL, gcLo}, // [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA + {0x18A9, 0x18A9, prCM, gcMn}, // MONGOLIAN LETTER ALI GALI DAGALGA + {0x18AA, 0x18AA, prAL, gcLo}, // MONGOLIAN LETTER MANCHU ALI GALI LHA + {0x18B0, 0x18F5, prAL, gcLo}, // [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S + {0x1900, 0x191E, prAL, gcLo}, // [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA + {0x1920, 0x1922, prCM, gcMn}, // [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U + {0x1923, 0x1926, prCM, gcMc}, // [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU + {0x1927, 0x1928, prCM, gcMn}, // [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O + {0x1929, 0x192B, prCM, gcMc}, // [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA + {0x1930, 0x1931, prCM, gcMc}, // [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA + {0x1932, 0x1932, prCM, gcMn}, // LIMBU SMALL LETTER ANUSVARA + {0x1933, 0x1938, prCM, gcMc}, // [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA + {0x1939, 0x193B, prCM, gcMn}, // [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I + {0x1940, 0x1940, prAL, gcSo}, // LIMBU SIGN LOO + {0x1944, 0x1945, prEX, gcPo}, // [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK + {0x1946, 0x194F, prNU, gcNd}, // [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE + {0x1950, 0x196D, prSA, gcLo}, // [30] TAI LE LETTER KA..TAI LE LETTER AI + {0x1970, 0x1974, prSA, gcLo}, // [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 + {0x1980, 0x19AB, prSA, gcLo}, // [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA + {0x19B0, 0x19C9, prSA, gcLo}, // [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 + {0x19D0, 0x19D9, prNU, gcNd}, // [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE + {0x19DA, 0x19DA, prSA, gcNo}, // NEW TAI LUE THAM DIGIT ONE + {0x19DE, 0x19DF, prSA, gcSo}, // [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV + {0x19E0, 0x19FF, prAL, gcSo}, // [32] KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC + {0x1A00, 0x1A16, prAL, gcLo}, // [23] BUGINESE LETTER KA..BUGINESE LETTER HA + {0x1A17, 0x1A18, prCM, gcMn}, // [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U + {0x1A19, 0x1A1A, prCM, gcMc}, // [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O + {0x1A1B, 0x1A1B, prCM, gcMn}, // BUGINESE VOWEL SIGN AE + {0x1A1E, 0x1A1F, prAL, gcPo}, // [2] BUGINESE PALLAWA..BUGINESE END OF SECTION + {0x1A20, 0x1A54, prSA, gcLo}, // [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA + {0x1A55, 0x1A55, prSA, gcMc}, // TAI THAM CONSONANT SIGN MEDIAL RA + {0x1A56, 0x1A56, prSA, gcMn}, // TAI THAM CONSONANT SIGN MEDIAL LA + {0x1A57, 0x1A57, prSA, gcMc}, // TAI THAM CONSONANT SIGN LA TANG LAI + {0x1A58, 0x1A5E, prSA, gcMn}, // [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA + {0x1A60, 0x1A60, prSA, gcMn}, // TAI THAM SIGN SAKOT + {0x1A61, 0x1A61, prSA, gcMc}, // TAI THAM VOWEL SIGN A + {0x1A62, 0x1A62, prSA, gcMn}, // TAI THAM VOWEL SIGN MAI SAT + {0x1A63, 0x1A64, prSA, gcMc}, // [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA + {0x1A65, 0x1A6C, prSA, gcMn}, // [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW + {0x1A6D, 0x1A72, prSA, gcMc}, // [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI + {0x1A73, 0x1A7C, prSA, gcMn}, // [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN + {0x1A7F, 0x1A7F, prCM, gcMn}, // TAI THAM COMBINING CRYPTOGRAMMIC DOT + {0x1A80, 0x1A89, prNU, gcNd}, // [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE + {0x1A90, 0x1A99, prNU, gcNd}, // [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE + {0x1AA0, 0x1AA6, prSA, gcPo}, // [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA + {0x1AA7, 0x1AA7, prSA, gcLm}, // TAI THAM SIGN MAI YAMOK + {0x1AA8, 0x1AAD, prSA, gcPo}, // [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG + {0x1AB0, 0x1ABD, prCM, gcMn}, // [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW + {0x1ABE, 0x1ABE, prCM, gcMe}, // COMBINING PARENTHESES OVERLAY + {0x1ABF, 0x1ACE, prCM, gcMn}, // [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T + {0x1B00, 0x1B03, prCM, gcMn}, // [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG + {0x1B04, 0x1B04, prCM, gcMc}, // BALINESE SIGN BISAH + {0x1B05, 0x1B33, prAL, gcLo}, // [47] BALINESE LETTER AKARA..BALINESE LETTER HA + {0x1B34, 0x1B34, prCM, gcMn}, // BALINESE SIGN REREKAN + {0x1B35, 0x1B35, prCM, gcMc}, // BALINESE VOWEL SIGN TEDUNG + {0x1B36, 0x1B3A, prCM, gcMn}, // [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA + {0x1B3B, 0x1B3B, prCM, gcMc}, // BALINESE VOWEL SIGN RA REPA TEDUNG + {0x1B3C, 0x1B3C, prCM, gcMn}, // BALINESE VOWEL SIGN LA LENGA + {0x1B3D, 0x1B41, prCM, gcMc}, // [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG + {0x1B42, 0x1B42, prCM, gcMn}, // BALINESE VOWEL SIGN PEPET + {0x1B43, 0x1B44, prCM, gcMc}, // [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG + {0x1B45, 0x1B4C, prAL, gcLo}, // [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA + {0x1B50, 0x1B59, prNU, gcNd}, // [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE + {0x1B5A, 0x1B5B, prBA, gcPo}, // [2] BALINESE PANTI..BALINESE PAMADA + {0x1B5C, 0x1B5C, prAL, gcPo}, // BALINESE WINDU + {0x1B5D, 0x1B60, prBA, gcPo}, // [4] BALINESE CARIK PAMUNGKAH..BALINESE PAMENENG + {0x1B61, 0x1B6A, prAL, gcSo}, // [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE + {0x1B6B, 0x1B73, prCM, gcMn}, // [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG + {0x1B74, 0x1B7C, prAL, gcSo}, // [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING + {0x1B7D, 0x1B7E, prBA, gcPo}, // [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG + {0x1B80, 0x1B81, prCM, gcMn}, // [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR + {0x1B82, 0x1B82, prCM, gcMc}, // SUNDANESE SIGN PANGWISAD + {0x1B83, 0x1BA0, prAL, gcLo}, // [30] SUNDANESE LETTER A..SUNDANESE LETTER HA + {0x1BA1, 0x1BA1, prCM, gcMc}, // SUNDANESE CONSONANT SIGN PAMINGKAL + {0x1BA2, 0x1BA5, prCM, gcMn}, // [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU + {0x1BA6, 0x1BA7, prCM, gcMc}, // [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG + {0x1BA8, 0x1BA9, prCM, gcMn}, // [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG + {0x1BAA, 0x1BAA, prCM, gcMc}, // SUNDANESE SIGN PAMAAEH + {0x1BAB, 0x1BAD, prCM, gcMn}, // [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA + {0x1BAE, 0x1BAF, prAL, gcLo}, // [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA + {0x1BB0, 0x1BB9, prNU, gcNd}, // [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE + {0x1BBA, 0x1BBF, prAL, gcLo}, // [6] SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M + {0x1BC0, 0x1BE5, prAL, gcLo}, // [38] BATAK LETTER A..BATAK LETTER U + {0x1BE6, 0x1BE6, prCM, gcMn}, // BATAK SIGN TOMPI + {0x1BE7, 0x1BE7, prCM, gcMc}, // BATAK VOWEL SIGN E + {0x1BE8, 0x1BE9, prCM, gcMn}, // [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE + {0x1BEA, 0x1BEC, prCM, gcMc}, // [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O + {0x1BED, 0x1BED, prCM, gcMn}, // BATAK VOWEL SIGN KARO O + {0x1BEE, 0x1BEE, prCM, gcMc}, // BATAK VOWEL SIGN U + {0x1BEF, 0x1BF1, prCM, gcMn}, // [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H + {0x1BF2, 0x1BF3, prCM, gcMc}, // [2] BATAK PANGOLAT..BATAK PANONGONAN + {0x1BFC, 0x1BFF, prAL, gcPo}, // [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT + {0x1C00, 0x1C23, prAL, gcLo}, // [36] LEPCHA LETTER KA..LEPCHA LETTER A + {0x1C24, 0x1C2B, prCM, gcMc}, // [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU + {0x1C2C, 0x1C33, prCM, gcMn}, // [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T + {0x1C34, 0x1C35, prCM, gcMc}, // [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG + {0x1C36, 0x1C37, prCM, gcMn}, // [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA + {0x1C3B, 0x1C3F, prBA, gcPo}, // [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK + {0x1C40, 0x1C49, prNU, gcNd}, // [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE + {0x1C4D, 0x1C4F, prAL, gcLo}, // [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA + {0x1C50, 0x1C59, prNU, gcNd}, // [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE + {0x1C5A, 0x1C77, prAL, gcLo}, // [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH + {0x1C78, 0x1C7D, prAL, gcLm}, // [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD + {0x1C7E, 0x1C7F, prBA, gcPo}, // [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD + {0x1C80, 0x1C88, prAL, gcLl}, // [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK + {0x1C90, 0x1CBA, prAL, gcLu}, // [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN + {0x1CBD, 0x1CBF, prAL, gcLu}, // [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN + {0x1CC0, 0x1CC7, prAL, gcPo}, // [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA + {0x1CD0, 0x1CD2, prCM, gcMn}, // [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA + {0x1CD3, 0x1CD3, prAL, gcPo}, // VEDIC SIGN NIHSHVASA + {0x1CD4, 0x1CE0, prCM, gcMn}, // [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA + {0x1CE1, 0x1CE1, prCM, gcMc}, // VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA + {0x1CE2, 0x1CE8, prCM, gcMn}, // [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL + {0x1CE9, 0x1CEC, prAL, gcLo}, // [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL + {0x1CED, 0x1CED, prCM, gcMn}, // VEDIC SIGN TIRYAK + {0x1CEE, 0x1CF3, prAL, gcLo}, // [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA + {0x1CF4, 0x1CF4, prCM, gcMn}, // VEDIC TONE CANDRA ABOVE + {0x1CF5, 0x1CF6, prAL, gcLo}, // [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA + {0x1CF7, 0x1CF7, prCM, gcMc}, // VEDIC SIGN ATIKRAMA + {0x1CF8, 0x1CF9, prCM, gcMn}, // [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE + {0x1CFA, 0x1CFA, prAL, gcLo}, // VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA + {0x1D00, 0x1D2B, prAL, gcLl}, // [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL + {0x1D2C, 0x1D6A, prAL, gcLm}, // [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI + {0x1D6B, 0x1D77, prAL, gcLl}, // [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G + {0x1D78, 0x1D78, prAL, gcLm}, // MODIFIER LETTER CYRILLIC EN + {0x1D79, 0x1D7F, prAL, gcLl}, // [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE + {0x1D80, 0x1D9A, prAL, gcLl}, // [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK + {0x1D9B, 0x1DBF, prAL, gcLm}, // [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA + {0x1DC0, 0x1DCC, prCM, gcMn}, // [13] COMBINING DOTTED GRAVE ACCENT..COMBINING MACRON-BREVE + {0x1DCD, 0x1DCD, prGL, gcMn}, // COMBINING DOUBLE CIRCUMFLEX ABOVE + {0x1DCE, 0x1DFB, prCM, gcMn}, // [46] COMBINING OGONEK ABOVE..COMBINING DELETION MARK + {0x1DFC, 0x1DFC, prGL, gcMn}, // COMBINING DOUBLE INVERTED BREVE BELOW + {0x1DFD, 0x1DFF, prCM, gcMn}, // [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + {0x1E00, 0x1EFF, prAL, gcLC}, // [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP + {0x1F00, 0x1F15, prAL, gcLC}, // [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + {0x1F18, 0x1F1D, prAL, gcLu}, // [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + {0x1F20, 0x1F45, prAL, gcLC}, // [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + {0x1F48, 0x1F4D, prAL, gcLu}, // [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + {0x1F50, 0x1F57, prAL, gcLl}, // [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + {0x1F59, 0x1F59, prAL, gcLu}, // GREEK CAPITAL LETTER UPSILON WITH DASIA + {0x1F5B, 0x1F5B, prAL, gcLu}, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + {0x1F5D, 0x1F5D, prAL, gcLu}, // GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + {0x1F5F, 0x1F7D, prAL, gcLC}, // [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA + {0x1F80, 0x1FB4, prAL, gcLC}, // [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + {0x1FB6, 0x1FBC, prAL, gcLC}, // [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + {0x1FBD, 0x1FBD, prAL, gcSk}, // GREEK KORONIS + {0x1FBE, 0x1FBE, prAL, gcLl}, // GREEK PROSGEGRAMMENI + {0x1FBF, 0x1FC1, prAL, gcSk}, // [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI + {0x1FC2, 0x1FC4, prAL, gcLl}, // [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + {0x1FC6, 0x1FCC, prAL, gcLC}, // [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + {0x1FCD, 0x1FCF, prAL, gcSk}, // [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI + {0x1FD0, 0x1FD3, prAL, gcLl}, // [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA + {0x1FD6, 0x1FDB, prAL, gcLC}, // [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA + {0x1FDD, 0x1FDF, prAL, gcSk}, // [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI + {0x1FE0, 0x1FEC, prAL, gcLC}, // [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA + {0x1FED, 0x1FEF, prAL, gcSk}, // [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA + {0x1FF2, 0x1FF4, prAL, gcLl}, // [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + {0x1FF6, 0x1FFC, prAL, gcLC}, // [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + {0x1FFD, 0x1FFD, prBB, gcSk}, // GREEK OXIA + {0x1FFE, 0x1FFE, prAL, gcSk}, // GREEK DASIA + {0x2000, 0x2006, prBA, gcZs}, // [7] EN QUAD..SIX-PER-EM SPACE + {0x2007, 0x2007, prGL, gcZs}, // FIGURE SPACE + {0x2008, 0x200A, prBA, gcZs}, // [3] PUNCTUATION SPACE..HAIR SPACE + {0x200B, 0x200B, prZW, gcCf}, // ZERO WIDTH SPACE + {0x200C, 0x200C, prCM, gcCf}, // ZERO WIDTH NON-JOINER + {0x200D, 0x200D, prZWJ, gcCf}, // ZERO WIDTH JOINER + {0x200E, 0x200F, prCM, gcCf}, // [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK + {0x2010, 0x2010, prBA, gcPd}, // HYPHEN + {0x2011, 0x2011, prGL, gcPd}, // NON-BREAKING HYPHEN + {0x2012, 0x2013, prBA, gcPd}, // [2] FIGURE DASH..EN DASH + {0x2014, 0x2014, prB2, gcPd}, // EM DASH + {0x2015, 0x2015, prAI, gcPd}, // HORIZONTAL BAR + {0x2016, 0x2016, prAI, gcPo}, // DOUBLE VERTICAL LINE + {0x2017, 0x2017, prAL, gcPo}, // DOUBLE LOW LINE + {0x2018, 0x2018, prQU, gcPi}, // LEFT SINGLE QUOTATION MARK + {0x2019, 0x2019, prQU, gcPf}, // RIGHT SINGLE QUOTATION MARK + {0x201A, 0x201A, prOP, gcPs}, // SINGLE LOW-9 QUOTATION MARK + {0x201B, 0x201C, prQU, gcPi}, // [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK + {0x201D, 0x201D, prQU, gcPf}, // RIGHT DOUBLE QUOTATION MARK + {0x201E, 0x201E, prOP, gcPs}, // DOUBLE LOW-9 QUOTATION MARK + {0x201F, 0x201F, prQU, gcPi}, // DOUBLE HIGH-REVERSED-9 QUOTATION MARK + {0x2020, 0x2021, prAI, gcPo}, // [2] DAGGER..DOUBLE DAGGER + {0x2022, 0x2023, prAL, gcPo}, // [2] BULLET..TRIANGULAR BULLET + {0x2024, 0x2026, prIN, gcPo}, // [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS + {0x2027, 0x2027, prBA, gcPo}, // HYPHENATION POINT + {0x2028, 0x2028, prBK, gcZl}, // LINE SEPARATOR + {0x2029, 0x2029, prBK, gcZp}, // PARAGRAPH SEPARATOR + {0x202A, 0x202E, prCM, gcCf}, // [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE + {0x202F, 0x202F, prGL, gcZs}, // NARROW NO-BREAK SPACE + {0x2030, 0x2037, prPO, gcPo}, // [8] PER MILLE SIGN..REVERSED TRIPLE PRIME + {0x2038, 0x2038, prAL, gcPo}, // CARET + {0x2039, 0x2039, prQU, gcPi}, // SINGLE LEFT-POINTING ANGLE QUOTATION MARK + {0x203A, 0x203A, prQU, gcPf}, // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + {0x203B, 0x203B, prAI, gcPo}, // REFERENCE MARK + {0x203C, 0x203D, prNS, gcPo}, // [2] DOUBLE EXCLAMATION MARK..INTERROBANG + {0x203E, 0x203E, prAL, gcPo}, // OVERLINE + {0x203F, 0x2040, prAL, gcPc}, // [2] UNDERTIE..CHARACTER TIE + {0x2041, 0x2043, prAL, gcPo}, // [3] CARET INSERTION POINT..HYPHEN BULLET + {0x2044, 0x2044, prIS, gcSm}, // FRACTION SLASH + {0x2045, 0x2045, prOP, gcPs}, // LEFT SQUARE BRACKET WITH QUILL + {0x2046, 0x2046, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH QUILL + {0x2047, 0x2049, prNS, gcPo}, // [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK + {0x204A, 0x2051, prAL, gcPo}, // [8] TIRONIAN SIGN ET..TWO ASTERISKS ALIGNED VERTICALLY + {0x2052, 0x2052, prAL, gcSm}, // COMMERCIAL MINUS SIGN + {0x2053, 0x2053, prAL, gcPo}, // SWUNG DASH + {0x2054, 0x2054, prAL, gcPc}, // INVERTED UNDERTIE + {0x2055, 0x2055, prAL, gcPo}, // FLOWER PUNCTUATION MARK + {0x2056, 0x2056, prBA, gcPo}, // THREE DOT PUNCTUATION + {0x2057, 0x2057, prPO, gcPo}, // QUADRUPLE PRIME + {0x2058, 0x205B, prBA, gcPo}, // [4] FOUR DOT PUNCTUATION..FOUR DOT MARK + {0x205C, 0x205C, prAL, gcPo}, // DOTTED CROSS + {0x205D, 0x205E, prBA, gcPo}, // [2] TRICOLON..VERTICAL FOUR DOTS + {0x205F, 0x205F, prBA, gcZs}, // MEDIUM MATHEMATICAL SPACE + {0x2060, 0x2060, prWJ, gcCf}, // WORD JOINER + {0x2061, 0x2064, prAL, gcCf}, // [4] FUNCTION APPLICATION..INVISIBLE PLUS + {0x2066, 0x206F, prCM, gcCf}, // [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES + {0x2070, 0x2070, prAL, gcNo}, // SUPERSCRIPT ZERO + {0x2071, 0x2071, prAL, gcLm}, // SUPERSCRIPT LATIN SMALL LETTER I + {0x2074, 0x2074, prAI, gcNo}, // SUPERSCRIPT FOUR + {0x2075, 0x2079, prAL, gcNo}, // [5] SUPERSCRIPT FIVE..SUPERSCRIPT NINE + {0x207A, 0x207C, prAL, gcSm}, // [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN + {0x207D, 0x207D, prOP, gcPs}, // SUPERSCRIPT LEFT PARENTHESIS + {0x207E, 0x207E, prCL, gcPe}, // SUPERSCRIPT RIGHT PARENTHESIS + {0x207F, 0x207F, prAI, gcLm}, // SUPERSCRIPT LATIN SMALL LETTER N + {0x2080, 0x2080, prAL, gcNo}, // SUBSCRIPT ZERO + {0x2081, 0x2084, prAI, gcNo}, // [4] SUBSCRIPT ONE..SUBSCRIPT FOUR + {0x2085, 0x2089, prAL, gcNo}, // [5] SUBSCRIPT FIVE..SUBSCRIPT NINE + {0x208A, 0x208C, prAL, gcSm}, // [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN + {0x208D, 0x208D, prOP, gcPs}, // SUBSCRIPT LEFT PARENTHESIS + {0x208E, 0x208E, prCL, gcPe}, // SUBSCRIPT RIGHT PARENTHESIS + {0x2090, 0x209C, prAL, gcLm}, // [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T + {0x20A0, 0x20A6, prPR, gcSc}, // [7] EURO-CURRENCY SIGN..NAIRA SIGN + {0x20A7, 0x20A7, prPO, gcSc}, // PESETA SIGN + {0x20A8, 0x20B5, prPR, gcSc}, // [14] RUPEE SIGN..CEDI SIGN + {0x20B6, 0x20B6, prPO, gcSc}, // LIVRE TOURNOIS SIGN + {0x20B7, 0x20BA, prPR, gcSc}, // [4] SPESMILO SIGN..TURKISH LIRA SIGN + {0x20BB, 0x20BB, prPO, gcSc}, // NORDIC MARK SIGN + {0x20BC, 0x20BD, prPR, gcSc}, // [2] MANAT SIGN..RUBLE SIGN + {0x20BE, 0x20BE, prPO, gcSc}, // LARI SIGN + {0x20BF, 0x20BF, prPR, gcSc}, // BITCOIN SIGN + {0x20C0, 0x20C0, prPO, gcSc}, // SOM SIGN + {0x20C1, 0x20CF, prPR, gcCn}, // [15] .. + {0x20D0, 0x20DC, prCM, gcMn}, // [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE + {0x20DD, 0x20E0, prCM, gcMe}, // [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH + {0x20E1, 0x20E1, prCM, gcMn}, // COMBINING LEFT RIGHT ARROW ABOVE + {0x20E2, 0x20E4, prCM, gcMe}, // [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE + {0x20E5, 0x20F0, prCM, gcMn}, // [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE + {0x2100, 0x2101, prAL, gcSo}, // [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT + {0x2102, 0x2102, prAL, gcLu}, // DOUBLE-STRUCK CAPITAL C + {0x2103, 0x2103, prPO, gcSo}, // DEGREE CELSIUS + {0x2104, 0x2104, prAL, gcSo}, // CENTRE LINE SYMBOL + {0x2105, 0x2105, prAI, gcSo}, // CARE OF + {0x2106, 0x2106, prAL, gcSo}, // CADA UNA + {0x2107, 0x2107, prAL, gcLu}, // EULER CONSTANT + {0x2108, 0x2108, prAL, gcSo}, // SCRUPLE + {0x2109, 0x2109, prPO, gcSo}, // DEGREE FAHRENHEIT + {0x210A, 0x2112, prAL, gcLC}, // [9] SCRIPT SMALL G..SCRIPT CAPITAL L + {0x2113, 0x2113, prAI, gcLl}, // SCRIPT SMALL L + {0x2114, 0x2114, prAL, gcSo}, // L B BAR SYMBOL + {0x2115, 0x2115, prAL, gcLu}, // DOUBLE-STRUCK CAPITAL N + {0x2116, 0x2116, prPR, gcSo}, // NUMERO SIGN + {0x2117, 0x2117, prAL, gcSo}, // SOUND RECORDING COPYRIGHT + {0x2118, 0x2118, prAL, gcSm}, // SCRIPT CAPITAL P + {0x2119, 0x211D, prAL, gcLu}, // [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R + {0x211E, 0x2120, prAL, gcSo}, // [3] PRESCRIPTION TAKE..SERVICE MARK + {0x2121, 0x2122, prAI, gcSo}, // [2] TELEPHONE SIGN..TRADE MARK SIGN + {0x2123, 0x2123, prAL, gcSo}, // VERSICLE + {0x2124, 0x2124, prAL, gcLu}, // DOUBLE-STRUCK CAPITAL Z + {0x2125, 0x2125, prAL, gcSo}, // OUNCE SIGN + {0x2126, 0x2126, prAL, gcLu}, // OHM SIGN + {0x2127, 0x2127, prAL, gcSo}, // INVERTED OHM SIGN + {0x2128, 0x2128, prAL, gcLu}, // BLACK-LETTER CAPITAL Z + {0x2129, 0x2129, prAL, gcSo}, // TURNED GREEK SMALL LETTER IOTA + {0x212A, 0x212A, prAL, gcLu}, // KELVIN SIGN + {0x212B, 0x212B, prAI, gcLu}, // ANGSTROM SIGN + {0x212C, 0x212D, prAL, gcLu}, // [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C + {0x212E, 0x212E, prAL, gcSo}, // ESTIMATED SYMBOL + {0x212F, 0x2134, prAL, gcLC}, // [6] SCRIPT SMALL E..SCRIPT SMALL O + {0x2135, 0x2138, prAL, gcLo}, // [4] ALEF SYMBOL..DALET SYMBOL + {0x2139, 0x2139, prAL, gcLl}, // INFORMATION SOURCE + {0x213A, 0x213B, prAL, gcSo}, // [2] ROTATED CAPITAL Q..FACSIMILE SIGN + {0x213C, 0x213F, prAL, gcLC}, // [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI + {0x2140, 0x2144, prAL, gcSm}, // [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y + {0x2145, 0x2149, prAL, gcLC}, // [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J + {0x214A, 0x214A, prAL, gcSo}, // PROPERTY LINE + {0x214B, 0x214B, prAL, gcSm}, // TURNED AMPERSAND + {0x214C, 0x214D, prAL, gcSo}, // [2] PER SIGN..AKTIESELSKAB + {0x214E, 0x214E, prAL, gcLl}, // TURNED SMALL F + {0x214F, 0x214F, prAL, gcSo}, // SYMBOL FOR SAMARITAN SOURCE + {0x2150, 0x2153, prAL, gcNo}, // [4] VULGAR FRACTION ONE SEVENTH..VULGAR FRACTION ONE THIRD + {0x2154, 0x2155, prAI, gcNo}, // [2] VULGAR FRACTION TWO THIRDS..VULGAR FRACTION ONE FIFTH + {0x2156, 0x215A, prAL, gcNo}, // [5] VULGAR FRACTION TWO FIFTHS..VULGAR FRACTION FIVE SIXTHS + {0x215B, 0x215B, prAI, gcNo}, // VULGAR FRACTION ONE EIGHTH + {0x215C, 0x215D, prAL, gcNo}, // [2] VULGAR FRACTION THREE EIGHTHS..VULGAR FRACTION FIVE EIGHTHS + {0x215E, 0x215E, prAI, gcNo}, // VULGAR FRACTION SEVEN EIGHTHS + {0x215F, 0x215F, prAL, gcNo}, // FRACTION NUMERATOR ONE + {0x2160, 0x216B, prAI, gcNl}, // [12] ROMAN NUMERAL ONE..ROMAN NUMERAL TWELVE + {0x216C, 0x216F, prAL, gcNl}, // [4] ROMAN NUMERAL FIFTY..ROMAN NUMERAL ONE THOUSAND + {0x2170, 0x2179, prAI, gcNl}, // [10] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL TEN + {0x217A, 0x2182, prAL, gcNl}, // [9] SMALL ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TEN THOUSAND + {0x2183, 0x2184, prAL, gcLC}, // [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C + {0x2185, 0x2188, prAL, gcNl}, // [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND + {0x2189, 0x2189, prAI, gcNo}, // VULGAR FRACTION ZERO THIRDS + {0x218A, 0x218B, prAL, gcSo}, // [2] TURNED DIGIT TWO..TURNED DIGIT THREE + {0x2190, 0x2194, prAI, gcSm}, // [5] LEFTWARDS ARROW..LEFT RIGHT ARROW + {0x2195, 0x2199, prAI, gcSo}, // [5] UP DOWN ARROW..SOUTH WEST ARROW + {0x219A, 0x219B, prAL, gcSm}, // [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE + {0x219C, 0x219F, prAL, gcSo}, // [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW + {0x21A0, 0x21A0, prAL, gcSm}, // RIGHTWARDS TWO HEADED ARROW + {0x21A1, 0x21A2, prAL, gcSo}, // [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL + {0x21A3, 0x21A3, prAL, gcSm}, // RIGHTWARDS ARROW WITH TAIL + {0x21A4, 0x21A5, prAL, gcSo}, // [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR + {0x21A6, 0x21A6, prAL, gcSm}, // RIGHTWARDS ARROW FROM BAR + {0x21A7, 0x21AD, prAL, gcSo}, // [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW + {0x21AE, 0x21AE, prAL, gcSm}, // LEFT RIGHT ARROW WITH STROKE + {0x21AF, 0x21CD, prAL, gcSo}, // [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE + {0x21CE, 0x21CF, prAL, gcSm}, // [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE + {0x21D0, 0x21D1, prAL, gcSo}, // [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW + {0x21D2, 0x21D2, prAI, gcSm}, // RIGHTWARDS DOUBLE ARROW + {0x21D3, 0x21D3, prAL, gcSo}, // DOWNWARDS DOUBLE ARROW + {0x21D4, 0x21D4, prAI, gcSm}, // LEFT RIGHT DOUBLE ARROW + {0x21D5, 0x21F3, prAL, gcSo}, // [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW + {0x21F4, 0x21FF, prAL, gcSm}, // [12] RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW + {0x2200, 0x2200, prAI, gcSm}, // FOR ALL + {0x2201, 0x2201, prAL, gcSm}, // COMPLEMENT + {0x2202, 0x2203, prAI, gcSm}, // [2] PARTIAL DIFFERENTIAL..THERE EXISTS + {0x2204, 0x2206, prAL, gcSm}, // [3] THERE DOES NOT EXIST..INCREMENT + {0x2207, 0x2208, prAI, gcSm}, // [2] NABLA..ELEMENT OF + {0x2209, 0x220A, prAL, gcSm}, // [2] NOT AN ELEMENT OF..SMALL ELEMENT OF + {0x220B, 0x220B, prAI, gcSm}, // CONTAINS AS MEMBER + {0x220C, 0x220E, prAL, gcSm}, // [3] DOES NOT CONTAIN AS MEMBER..END OF PROOF + {0x220F, 0x220F, prAI, gcSm}, // N-ARY PRODUCT + {0x2210, 0x2210, prAL, gcSm}, // N-ARY COPRODUCT + {0x2211, 0x2211, prAI, gcSm}, // N-ARY SUMMATION + {0x2212, 0x2213, prPR, gcSm}, // [2] MINUS SIGN..MINUS-OR-PLUS SIGN + {0x2214, 0x2214, prAL, gcSm}, // DOT PLUS + {0x2215, 0x2215, prAI, gcSm}, // DIVISION SLASH + {0x2216, 0x2219, prAL, gcSm}, // [4] SET MINUS..BULLET OPERATOR + {0x221A, 0x221A, prAI, gcSm}, // SQUARE ROOT + {0x221B, 0x221C, prAL, gcSm}, // [2] CUBE ROOT..FOURTH ROOT + {0x221D, 0x2220, prAI, gcSm}, // [4] PROPORTIONAL TO..ANGLE + {0x2221, 0x2222, prAL, gcSm}, // [2] MEASURED ANGLE..SPHERICAL ANGLE + {0x2223, 0x2223, prAI, gcSm}, // DIVIDES + {0x2224, 0x2224, prAL, gcSm}, // DOES NOT DIVIDE + {0x2225, 0x2225, prAI, gcSm}, // PARALLEL TO + {0x2226, 0x2226, prAL, gcSm}, // NOT PARALLEL TO + {0x2227, 0x222C, prAI, gcSm}, // [6] LOGICAL AND..DOUBLE INTEGRAL + {0x222D, 0x222D, prAL, gcSm}, // TRIPLE INTEGRAL + {0x222E, 0x222E, prAI, gcSm}, // CONTOUR INTEGRAL + {0x222F, 0x2233, prAL, gcSm}, // [5] SURFACE INTEGRAL..ANTICLOCKWISE CONTOUR INTEGRAL + {0x2234, 0x2237, prAI, gcSm}, // [4] THEREFORE..PROPORTION + {0x2238, 0x223B, prAL, gcSm}, // [4] DOT MINUS..HOMOTHETIC + {0x223C, 0x223D, prAI, gcSm}, // [2] TILDE OPERATOR..REVERSED TILDE + {0x223E, 0x2247, prAL, gcSm}, // [10] INVERTED LAZY S..NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO + {0x2248, 0x2248, prAI, gcSm}, // ALMOST EQUAL TO + {0x2249, 0x224B, prAL, gcSm}, // [3] NOT ALMOST EQUAL TO..TRIPLE TILDE + {0x224C, 0x224C, prAI, gcSm}, // ALL EQUAL TO + {0x224D, 0x2251, prAL, gcSm}, // [5] EQUIVALENT TO..GEOMETRICALLY EQUAL TO + {0x2252, 0x2252, prAI, gcSm}, // APPROXIMATELY EQUAL TO OR THE IMAGE OF + {0x2253, 0x225F, prAL, gcSm}, // [13] IMAGE OF OR APPROXIMATELY EQUAL TO..QUESTIONED EQUAL TO + {0x2260, 0x2261, prAI, gcSm}, // [2] NOT EQUAL TO..IDENTICAL TO + {0x2262, 0x2263, prAL, gcSm}, // [2] NOT IDENTICAL TO..STRICTLY EQUIVALENT TO + {0x2264, 0x2267, prAI, gcSm}, // [4] LESS-THAN OR EQUAL TO..GREATER-THAN OVER EQUAL TO + {0x2268, 0x2269, prAL, gcSm}, // [2] LESS-THAN BUT NOT EQUAL TO..GREATER-THAN BUT NOT EQUAL TO + {0x226A, 0x226B, prAI, gcSm}, // [2] MUCH LESS-THAN..MUCH GREATER-THAN + {0x226C, 0x226D, prAL, gcSm}, // [2] BETWEEN..NOT EQUIVALENT TO + {0x226E, 0x226F, prAI, gcSm}, // [2] NOT LESS-THAN..NOT GREATER-THAN + {0x2270, 0x2281, prAL, gcSm}, // [18] NEITHER LESS-THAN NOR EQUAL TO..DOES NOT SUCCEED + {0x2282, 0x2283, prAI, gcSm}, // [2] SUBSET OF..SUPERSET OF + {0x2284, 0x2285, prAL, gcSm}, // [2] NOT A SUBSET OF..NOT A SUPERSET OF + {0x2286, 0x2287, prAI, gcSm}, // [2] SUBSET OF OR EQUAL TO..SUPERSET OF OR EQUAL TO + {0x2288, 0x2294, prAL, gcSm}, // [13] NEITHER A SUBSET OF NOR EQUAL TO..SQUARE CUP + {0x2295, 0x2295, prAI, gcSm}, // CIRCLED PLUS + {0x2296, 0x2298, prAL, gcSm}, // [3] CIRCLED MINUS..CIRCLED DIVISION SLASH + {0x2299, 0x2299, prAI, gcSm}, // CIRCLED DOT OPERATOR + {0x229A, 0x22A4, prAL, gcSm}, // [11] CIRCLED RING OPERATOR..DOWN TACK + {0x22A5, 0x22A5, prAI, gcSm}, // UP TACK + {0x22A6, 0x22BE, prAL, gcSm}, // [25] ASSERTION..RIGHT ANGLE WITH ARC + {0x22BF, 0x22BF, prAI, gcSm}, // RIGHT TRIANGLE + {0x22C0, 0x22EE, prAL, gcSm}, // [47] N-ARY LOGICAL AND..VERTICAL ELLIPSIS + {0x22EF, 0x22EF, prIN, gcSm}, // MIDLINE HORIZONTAL ELLIPSIS + {0x22F0, 0x22FF, prAL, gcSm}, // [16] UP RIGHT DIAGONAL ELLIPSIS..Z NOTATION BAG MEMBERSHIP + {0x2300, 0x2307, prAL, gcSo}, // [8] DIAMETER SIGN..WAVY LINE + {0x2308, 0x2308, prOP, gcPs}, // LEFT CEILING + {0x2309, 0x2309, prCL, gcPe}, // RIGHT CEILING + {0x230A, 0x230A, prOP, gcPs}, // LEFT FLOOR + {0x230B, 0x230B, prCL, gcPe}, // RIGHT FLOOR + {0x230C, 0x2311, prAL, gcSo}, // [6] BOTTOM RIGHT CROP..SQUARE LOZENGE + {0x2312, 0x2312, prAI, gcSo}, // ARC + {0x2313, 0x2319, prAL, gcSo}, // [7] SEGMENT..TURNED NOT SIGN + {0x231A, 0x231B, prID, gcSo}, // [2] WATCH..HOURGLASS + {0x231C, 0x231F, prAL, gcSo}, // [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER + {0x2320, 0x2321, prAL, gcSm}, // [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL + {0x2322, 0x2328, prAL, gcSo}, // [7] FROWN..KEYBOARD + {0x2329, 0x2329, prOP, gcPs}, // LEFT-POINTING ANGLE BRACKET + {0x232A, 0x232A, prCL, gcPe}, // RIGHT-POINTING ANGLE BRACKET + {0x232B, 0x237B, prAL, gcSo}, // [81] ERASE TO THE LEFT..NOT CHECK MARK + {0x237C, 0x237C, prAL, gcSm}, // RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW + {0x237D, 0x239A, prAL, gcSo}, // [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL + {0x239B, 0x23B3, prAL, gcSm}, // [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM + {0x23B4, 0x23DB, prAL, gcSo}, // [40] TOP SQUARE BRACKET..FUSE + {0x23DC, 0x23E1, prAL, gcSm}, // [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET + {0x23E2, 0x23EF, prAL, gcSo}, // [14] WHITE TRAPEZIUM..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR + {0x23F0, 0x23F3, prID, gcSo}, // [4] ALARM CLOCK..HOURGLASS WITH FLOWING SAND + {0x23F4, 0x23FF, prAL, gcSo}, // [12] BLACK MEDIUM LEFT-POINTING TRIANGLE..OBSERVER EYE SYMBOL + {0x2400, 0x2426, prAL, gcSo}, // [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO + {0x2440, 0x244A, prAL, gcSo}, // [11] OCR HOOK..OCR DOUBLE BACKSLASH + {0x2460, 0x249B, prAI, gcNo}, // [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP + {0x249C, 0x24E9, prAI, gcSo}, // [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z + {0x24EA, 0x24FE, prAI, gcNo}, // [21] CIRCLED DIGIT ZERO..DOUBLE CIRCLED NUMBER TEN + {0x24FF, 0x24FF, prAL, gcNo}, // NEGATIVE CIRCLED DIGIT ZERO + {0x2500, 0x254B, prAI, gcSo}, // [76] BOX DRAWINGS LIGHT HORIZONTAL..BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL + {0x254C, 0x254F, prAL, gcSo}, // [4] BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL..BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL + {0x2550, 0x2574, prAI, gcSo}, // [37] BOX DRAWINGS DOUBLE HORIZONTAL..BOX DRAWINGS LIGHT LEFT + {0x2575, 0x257F, prAL, gcSo}, // [11] BOX DRAWINGS LIGHT UP..BOX DRAWINGS HEAVY UP AND LIGHT DOWN + {0x2580, 0x258F, prAI, gcSo}, // [16] UPPER HALF BLOCK..LEFT ONE EIGHTH BLOCK + {0x2590, 0x2591, prAL, gcSo}, // [2] RIGHT HALF BLOCK..LIGHT SHADE + {0x2592, 0x2595, prAI, gcSo}, // [4] MEDIUM SHADE..RIGHT ONE EIGHTH BLOCK + {0x2596, 0x259F, prAL, gcSo}, // [10] QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT + {0x25A0, 0x25A1, prAI, gcSo}, // [2] BLACK SQUARE..WHITE SQUARE + {0x25A2, 0x25A2, prAL, gcSo}, // WHITE SQUARE WITH ROUNDED CORNERS + {0x25A3, 0x25A9, prAI, gcSo}, // [7] WHITE SQUARE CONTAINING BLACK SMALL SQUARE..SQUARE WITH DIAGONAL CROSSHATCH FILL + {0x25AA, 0x25B1, prAL, gcSo}, // [8] BLACK SMALL SQUARE..WHITE PARALLELOGRAM + {0x25B2, 0x25B3, prAI, gcSo}, // [2] BLACK UP-POINTING TRIANGLE..WHITE UP-POINTING TRIANGLE + {0x25B4, 0x25B5, prAL, gcSo}, // [2] BLACK UP-POINTING SMALL TRIANGLE..WHITE UP-POINTING SMALL TRIANGLE + {0x25B6, 0x25B6, prAI, gcSo}, // BLACK RIGHT-POINTING TRIANGLE + {0x25B7, 0x25B7, prAI, gcSm}, // WHITE RIGHT-POINTING TRIANGLE + {0x25B8, 0x25BB, prAL, gcSo}, // [4] BLACK RIGHT-POINTING SMALL TRIANGLE..WHITE RIGHT-POINTING POINTER + {0x25BC, 0x25BD, prAI, gcSo}, // [2] BLACK DOWN-POINTING TRIANGLE..WHITE DOWN-POINTING TRIANGLE + {0x25BE, 0x25BF, prAL, gcSo}, // [2] BLACK DOWN-POINTING SMALL TRIANGLE..WHITE DOWN-POINTING SMALL TRIANGLE + {0x25C0, 0x25C0, prAI, gcSo}, // BLACK LEFT-POINTING TRIANGLE + {0x25C1, 0x25C1, prAI, gcSm}, // WHITE LEFT-POINTING TRIANGLE + {0x25C2, 0x25C5, prAL, gcSo}, // [4] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE LEFT-POINTING POINTER + {0x25C6, 0x25C8, prAI, gcSo}, // [3] BLACK DIAMOND..WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND + {0x25C9, 0x25CA, prAL, gcSo}, // [2] FISHEYE..LOZENGE + {0x25CB, 0x25CB, prAI, gcSo}, // WHITE CIRCLE + {0x25CC, 0x25CD, prAL, gcSo}, // [2] DOTTED CIRCLE..CIRCLE WITH VERTICAL FILL + {0x25CE, 0x25D1, prAI, gcSo}, // [4] BULLSEYE..CIRCLE WITH RIGHT HALF BLACK + {0x25D2, 0x25E1, prAL, gcSo}, // [16] CIRCLE WITH LOWER HALF BLACK..LOWER HALF CIRCLE + {0x25E2, 0x25E5, prAI, gcSo}, // [4] BLACK LOWER RIGHT TRIANGLE..BLACK UPPER RIGHT TRIANGLE + {0x25E6, 0x25EE, prAL, gcSo}, // [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK + {0x25EF, 0x25EF, prAI, gcSo}, // LARGE CIRCLE + {0x25F0, 0x25F7, prAL, gcSo}, // [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT + {0x25F8, 0x25FF, prAL, gcSm}, // [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE + {0x2600, 0x2603, prID, gcSo}, // [4] BLACK SUN WITH RAYS..SNOWMAN + {0x2604, 0x2604, prAL, gcSo}, // COMET + {0x2605, 0x2606, prAI, gcSo}, // [2] BLACK STAR..WHITE STAR + {0x2607, 0x2608, prAL, gcSo}, // [2] LIGHTNING..THUNDERSTORM + {0x2609, 0x2609, prAI, gcSo}, // SUN + {0x260A, 0x260D, prAL, gcSo}, // [4] ASCENDING NODE..OPPOSITION + {0x260E, 0x260F, prAI, gcSo}, // [2] BLACK TELEPHONE..WHITE TELEPHONE + {0x2610, 0x2613, prAL, gcSo}, // [4] BALLOT BOX..SALTIRE + {0x2614, 0x2615, prID, gcSo}, // [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE + {0x2616, 0x2617, prAI, gcSo}, // [2] WHITE SHOGI PIECE..BLACK SHOGI PIECE + {0x2618, 0x2618, prID, gcSo}, // SHAMROCK + {0x2619, 0x2619, prAL, gcSo}, // REVERSED ROTATED FLORAL HEART BULLET + {0x261A, 0x261C, prID, gcSo}, // [3] BLACK LEFT POINTING INDEX..WHITE LEFT POINTING INDEX + {0x261D, 0x261D, prEB, gcSo}, // WHITE UP POINTING INDEX + {0x261E, 0x261F, prID, gcSo}, // [2] WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX + {0x2620, 0x2638, prAL, gcSo}, // [25] SKULL AND CROSSBONES..WHEEL OF DHARMA + {0x2639, 0x263B, prID, gcSo}, // [3] WHITE FROWNING FACE..BLACK SMILING FACE + {0x263C, 0x263F, prAL, gcSo}, // [4] WHITE SUN WITH RAYS..MERCURY + {0x2640, 0x2640, prAI, gcSo}, // FEMALE SIGN + {0x2641, 0x2641, prAL, gcSo}, // EARTH + {0x2642, 0x2642, prAI, gcSo}, // MALE SIGN + {0x2643, 0x265F, prAL, gcSo}, // [29] JUPITER..BLACK CHESS PAWN + {0x2660, 0x2661, prAI, gcSo}, // [2] BLACK SPADE SUIT..WHITE HEART SUIT + {0x2662, 0x2662, prAL, gcSo}, // WHITE DIAMOND SUIT + {0x2663, 0x2665, prAI, gcSo}, // [3] BLACK CLUB SUIT..BLACK HEART SUIT + {0x2666, 0x2666, prAL, gcSo}, // BLACK DIAMOND SUIT + {0x2667, 0x2667, prAI, gcSo}, // WHITE CLUB SUIT + {0x2668, 0x2668, prID, gcSo}, // HOT SPRINGS + {0x2669, 0x266A, prAI, gcSo}, // [2] QUARTER NOTE..EIGHTH NOTE + {0x266B, 0x266B, prAL, gcSo}, // BEAMED EIGHTH NOTES + {0x266C, 0x266D, prAI, gcSo}, // [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN + {0x266E, 0x266E, prAL, gcSo}, // MUSIC NATURAL SIGN + {0x266F, 0x266F, prAI, gcSm}, // MUSIC SHARP SIGN + {0x2670, 0x267E, prAL, gcSo}, // [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN + {0x267F, 0x267F, prID, gcSo}, // WHEELCHAIR SYMBOL + {0x2680, 0x269D, prAL, gcSo}, // [30] DIE FACE-1..OUTLINED WHITE STAR + {0x269E, 0x269F, prAI, gcSo}, // [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT + {0x26A0, 0x26BC, prAL, gcSo}, // [29] WARNING SIGN..SESQUIQUADRATE + {0x26BD, 0x26C8, prID, gcSo}, // [12] SOCCER BALL..THUNDER CLOUD AND RAIN + {0x26C9, 0x26CC, prAI, gcSo}, // [4] TURNED WHITE SHOGI PIECE..CROSSING LANES + {0x26CD, 0x26CD, prID, gcSo}, // DISABLED CAR + {0x26CE, 0x26CE, prAL, gcSo}, // OPHIUCHUS + {0x26CF, 0x26D1, prID, gcSo}, // [3] PICK..HELMET WITH WHITE CROSS + {0x26D2, 0x26D2, prAI, gcSo}, // CIRCLED CROSSING LANES + {0x26D3, 0x26D4, prID, gcSo}, // [2] CHAINS..NO ENTRY + {0x26D5, 0x26D7, prAI, gcSo}, // [3] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..WHITE TWO-WAY LEFT WAY TRAFFIC + {0x26D8, 0x26D9, prID, gcSo}, // [2] BLACK LEFT LANE MERGE..WHITE LEFT LANE MERGE + {0x26DA, 0x26DB, prAI, gcSo}, // [2] DRIVE SLOW SIGN..HEAVY WHITE DOWN-POINTING TRIANGLE + {0x26DC, 0x26DC, prID, gcSo}, // LEFT CLOSED ENTRY + {0x26DD, 0x26DE, prAI, gcSo}, // [2] SQUARED SALTIRE..FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE + {0x26DF, 0x26E1, prID, gcSo}, // [3] BLACK TRUCK..RESTRICTED LEFT ENTRY-2 + {0x26E2, 0x26E2, prAL, gcSo}, // ASTRONOMICAL SYMBOL FOR URANUS + {0x26E3, 0x26E3, prAI, gcSo}, // HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE + {0x26E4, 0x26E7, prAL, gcSo}, // [4] PENTAGRAM..INVERTED PENTAGRAM + {0x26E8, 0x26E9, prAI, gcSo}, // [2] BLACK CROSS ON SHIELD..SHINTO SHRINE + {0x26EA, 0x26EA, prID, gcSo}, // CHURCH + {0x26EB, 0x26F0, prAI, gcSo}, // [6] CASTLE..MOUNTAIN + {0x26F1, 0x26F5, prID, gcSo}, // [5] UMBRELLA ON GROUND..SAILBOAT + {0x26F6, 0x26F6, prAI, gcSo}, // SQUARE FOUR CORNERS + {0x26F7, 0x26F8, prID, gcSo}, // [2] SKIER..ICE SKATE + {0x26F9, 0x26F9, prEB, gcSo}, // PERSON WITH BALL + {0x26FA, 0x26FA, prID, gcSo}, // TENT + {0x26FB, 0x26FC, prAI, gcSo}, // [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL + {0x26FD, 0x26FF, prID, gcSo}, // [3] FUEL PUMP..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE + {0x2700, 0x2704, prID, gcSo}, // [5] BLACK SAFETY SCISSORS..WHITE SCISSORS + {0x2705, 0x2707, prAL, gcSo}, // [3] WHITE HEAVY CHECK MARK..TAPE DRIVE + {0x2708, 0x2709, prID, gcSo}, // [2] AIRPLANE..ENVELOPE + {0x270A, 0x270D, prEB, gcSo}, // [4] RAISED FIST..WRITING HAND + {0x270E, 0x2756, prAL, gcSo}, // [73] LOWER RIGHT PENCIL..BLACK DIAMOND MINUS WHITE X + {0x2757, 0x2757, prAI, gcSo}, // HEAVY EXCLAMATION MARK SYMBOL + {0x2758, 0x275A, prAL, gcSo}, // [3] LIGHT VERTICAL BAR..HEAVY VERTICAL BAR + {0x275B, 0x2760, prQU, gcSo}, // [6] HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + {0x2761, 0x2761, prAL, gcSo}, // CURVED STEM PARAGRAPH SIGN ORNAMENT + {0x2762, 0x2763, prEX, gcSo}, // [2] HEAVY EXCLAMATION MARK ORNAMENT..HEAVY HEART EXCLAMATION MARK ORNAMENT + {0x2764, 0x2764, prID, gcSo}, // HEAVY BLACK HEART + {0x2765, 0x2767, prAL, gcSo}, // [3] ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET + {0x2768, 0x2768, prOP, gcPs}, // MEDIUM LEFT PARENTHESIS ORNAMENT + {0x2769, 0x2769, prCL, gcPe}, // MEDIUM RIGHT PARENTHESIS ORNAMENT + {0x276A, 0x276A, prOP, gcPs}, // MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT + {0x276B, 0x276B, prCL, gcPe}, // MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT + {0x276C, 0x276C, prOP, gcPs}, // MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT + {0x276D, 0x276D, prCL, gcPe}, // MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT + {0x276E, 0x276E, prOP, gcPs}, // HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT + {0x276F, 0x276F, prCL, gcPe}, // HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT + {0x2770, 0x2770, prOP, gcPs}, // HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT + {0x2771, 0x2771, prCL, gcPe}, // HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT + {0x2772, 0x2772, prOP, gcPs}, // LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT + {0x2773, 0x2773, prCL, gcPe}, // LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT + {0x2774, 0x2774, prOP, gcPs}, // MEDIUM LEFT CURLY BRACKET ORNAMENT + {0x2775, 0x2775, prCL, gcPe}, // MEDIUM RIGHT CURLY BRACKET ORNAMENT + {0x2776, 0x2793, prAI, gcNo}, // [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN + {0x2794, 0x27BF, prAL, gcSo}, // [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP + {0x27C0, 0x27C4, prAL, gcSm}, // [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET + {0x27C5, 0x27C5, prOP, gcPs}, // LEFT S-SHAPED BAG DELIMITER + {0x27C6, 0x27C6, prCL, gcPe}, // RIGHT S-SHAPED BAG DELIMITER + {0x27C7, 0x27E5, prAL, gcSm}, // [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK + {0x27E6, 0x27E6, prOP, gcPs}, // MATHEMATICAL LEFT WHITE SQUARE BRACKET + {0x27E7, 0x27E7, prCL, gcPe}, // MATHEMATICAL RIGHT WHITE SQUARE BRACKET + {0x27E8, 0x27E8, prOP, gcPs}, // MATHEMATICAL LEFT ANGLE BRACKET + {0x27E9, 0x27E9, prCL, gcPe}, // MATHEMATICAL RIGHT ANGLE BRACKET + {0x27EA, 0x27EA, prOP, gcPs}, // MATHEMATICAL LEFT DOUBLE ANGLE BRACKET + {0x27EB, 0x27EB, prCL, gcPe}, // MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET + {0x27EC, 0x27EC, prOP, gcPs}, // MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET + {0x27ED, 0x27ED, prCL, gcPe}, // MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET + {0x27EE, 0x27EE, prOP, gcPs}, // MATHEMATICAL LEFT FLATTENED PARENTHESIS + {0x27EF, 0x27EF, prCL, gcPe}, // MATHEMATICAL RIGHT FLATTENED PARENTHESIS + {0x27F0, 0x27FF, prAL, gcSm}, // [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW + {0x2800, 0x28FF, prAL, gcSo}, // [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678 + {0x2900, 0x297F, prAL, gcSm}, // [128] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..DOWN FISH TAIL + {0x2980, 0x2982, prAL, gcSm}, // [3] TRIPLE VERTICAL BAR DELIMITER..Z NOTATION TYPE COLON + {0x2983, 0x2983, prOP, gcPs}, // LEFT WHITE CURLY BRACKET + {0x2984, 0x2984, prCL, gcPe}, // RIGHT WHITE CURLY BRACKET + {0x2985, 0x2985, prOP, gcPs}, // LEFT WHITE PARENTHESIS + {0x2986, 0x2986, prCL, gcPe}, // RIGHT WHITE PARENTHESIS + {0x2987, 0x2987, prOP, gcPs}, // Z NOTATION LEFT IMAGE BRACKET + {0x2988, 0x2988, prCL, gcPe}, // Z NOTATION RIGHT IMAGE BRACKET + {0x2989, 0x2989, prOP, gcPs}, // Z NOTATION LEFT BINDING BRACKET + {0x298A, 0x298A, prCL, gcPe}, // Z NOTATION RIGHT BINDING BRACKET + {0x298B, 0x298B, prOP, gcPs}, // LEFT SQUARE BRACKET WITH UNDERBAR + {0x298C, 0x298C, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH UNDERBAR + {0x298D, 0x298D, prOP, gcPs}, // LEFT SQUARE BRACKET WITH TICK IN TOP CORNER + {0x298E, 0x298E, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER + {0x298F, 0x298F, prOP, gcPs}, // LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER + {0x2990, 0x2990, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER + {0x2991, 0x2991, prOP, gcPs}, // LEFT ANGLE BRACKET WITH DOT + {0x2992, 0x2992, prCL, gcPe}, // RIGHT ANGLE BRACKET WITH DOT + {0x2993, 0x2993, prOP, gcPs}, // LEFT ARC LESS-THAN BRACKET + {0x2994, 0x2994, prCL, gcPe}, // RIGHT ARC GREATER-THAN BRACKET + {0x2995, 0x2995, prOP, gcPs}, // DOUBLE LEFT ARC GREATER-THAN BRACKET + {0x2996, 0x2996, prCL, gcPe}, // DOUBLE RIGHT ARC LESS-THAN BRACKET + {0x2997, 0x2997, prOP, gcPs}, // LEFT BLACK TORTOISE SHELL BRACKET + {0x2998, 0x2998, prCL, gcPe}, // RIGHT BLACK TORTOISE SHELL BRACKET + {0x2999, 0x29D7, prAL, gcSm}, // [63] DOTTED FENCE..BLACK HOURGLASS + {0x29D8, 0x29D8, prOP, gcPs}, // LEFT WIGGLY FENCE + {0x29D9, 0x29D9, prCL, gcPe}, // RIGHT WIGGLY FENCE + {0x29DA, 0x29DA, prOP, gcPs}, // LEFT DOUBLE WIGGLY FENCE + {0x29DB, 0x29DB, prCL, gcPe}, // RIGHT DOUBLE WIGGLY FENCE + {0x29DC, 0x29FB, prAL, gcSm}, // [32] INCOMPLETE INFINITY..TRIPLE PLUS + {0x29FC, 0x29FC, prOP, gcPs}, // LEFT-POINTING CURVED ANGLE BRACKET + {0x29FD, 0x29FD, prCL, gcPe}, // RIGHT-POINTING CURVED ANGLE BRACKET + {0x29FE, 0x29FF, prAL, gcSm}, // [2] TINY..MINY + {0x2A00, 0x2AFF, prAL, gcSm}, // [256] N-ARY CIRCLED DOT OPERATOR..N-ARY WHITE VERTICAL BAR + {0x2B00, 0x2B2F, prAL, gcSo}, // [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE + {0x2B30, 0x2B44, prAL, gcSm}, // [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET + {0x2B45, 0x2B46, prAL, gcSo}, // [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW + {0x2B47, 0x2B4C, prAL, gcSm}, // [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR + {0x2B4D, 0x2B54, prAL, gcSo}, // [8] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..WHITE RIGHT-POINTING PENTAGON + {0x2B55, 0x2B59, prAI, gcSo}, // [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE + {0x2B5A, 0x2B73, prAL, gcSo}, // [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR + {0x2B76, 0x2B95, prAL, gcSo}, // [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW + {0x2B97, 0x2BFF, prAL, gcSo}, // [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL + {0x2C00, 0x2C5F, prAL, gcLC}, // [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI + {0x2C60, 0x2C7B, prAL, gcLC}, // [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E + {0x2C7C, 0x2C7D, prAL, gcLm}, // [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V + {0x2C7E, 0x2C7F, prAL, gcLu}, // [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL + {0x2C80, 0x2CE4, prAL, gcLC}, // [101] COPTIC CAPITAL LETTER ALFA..COPTIC SYMBOL KAI + {0x2CE5, 0x2CEA, prAL, gcSo}, // [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA + {0x2CEB, 0x2CEE, prAL, gcLC}, // [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA + {0x2CEF, 0x2CF1, prCM, gcMn}, // [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS + {0x2CF2, 0x2CF3, prAL, gcLC}, // [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI + {0x2CF9, 0x2CF9, prEX, gcPo}, // COPTIC OLD NUBIAN FULL STOP + {0x2CFA, 0x2CFC, prBA, gcPo}, // [3] COPTIC OLD NUBIAN DIRECT QUESTION MARK..COPTIC OLD NUBIAN VERSE DIVIDER + {0x2CFD, 0x2CFD, prAL, gcNo}, // COPTIC FRACTION ONE HALF + {0x2CFE, 0x2CFE, prEX, gcPo}, // COPTIC FULL STOP + {0x2CFF, 0x2CFF, prBA, gcPo}, // COPTIC MORPHOLOGICAL DIVIDER + {0x2D00, 0x2D25, prAL, gcLl}, // [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE + {0x2D27, 0x2D27, prAL, gcLl}, // GEORGIAN SMALL LETTER YN + {0x2D2D, 0x2D2D, prAL, gcLl}, // GEORGIAN SMALL LETTER AEN + {0x2D30, 0x2D67, prAL, gcLo}, // [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO + {0x2D6F, 0x2D6F, prAL, gcLm}, // TIFINAGH MODIFIER LETTER LABIALIZATION MARK + {0x2D70, 0x2D70, prBA, gcPo}, // TIFINAGH SEPARATOR MARK + {0x2D7F, 0x2D7F, prCM, gcMn}, // TIFINAGH CONSONANT JOINER + {0x2D80, 0x2D96, prAL, gcLo}, // [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE + {0x2DA0, 0x2DA6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO + {0x2DA8, 0x2DAE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO + {0x2DB0, 0x2DB6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO + {0x2DB8, 0x2DBE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO + {0x2DC0, 0x2DC6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO + {0x2DC8, 0x2DCE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO + {0x2DD0, 0x2DD6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO + {0x2DD8, 0x2DDE, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO + {0x2DE0, 0x2DFF, prCM, gcMn}, // [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS + {0x2E00, 0x2E01, prQU, gcPo}, // [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER + {0x2E02, 0x2E02, prQU, gcPi}, // LEFT SUBSTITUTION BRACKET + {0x2E03, 0x2E03, prQU, gcPf}, // RIGHT SUBSTITUTION BRACKET + {0x2E04, 0x2E04, prQU, gcPi}, // LEFT DOTTED SUBSTITUTION BRACKET + {0x2E05, 0x2E05, prQU, gcPf}, // RIGHT DOTTED SUBSTITUTION BRACKET + {0x2E06, 0x2E08, prQU, gcPo}, // [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER + {0x2E09, 0x2E09, prQU, gcPi}, // LEFT TRANSPOSITION BRACKET + {0x2E0A, 0x2E0A, prQU, gcPf}, // RIGHT TRANSPOSITION BRACKET + {0x2E0B, 0x2E0B, prQU, gcPo}, // RAISED SQUARE + {0x2E0C, 0x2E0C, prQU, gcPi}, // LEFT RAISED OMISSION BRACKET + {0x2E0D, 0x2E0D, prQU, gcPf}, // RIGHT RAISED OMISSION BRACKET + {0x2E0E, 0x2E15, prBA, gcPo}, // [8] EDITORIAL CORONIS..UPWARDS ANCORA + {0x2E16, 0x2E16, prAL, gcPo}, // DOTTED RIGHT-POINTING ANGLE + {0x2E17, 0x2E17, prBA, gcPd}, // DOUBLE OBLIQUE HYPHEN + {0x2E18, 0x2E18, prOP, gcPo}, // INVERTED INTERROBANG + {0x2E19, 0x2E19, prBA, gcPo}, // PALM BRANCH + {0x2E1A, 0x2E1A, prAL, gcPd}, // HYPHEN WITH DIAERESIS + {0x2E1B, 0x2E1B, prAL, gcPo}, // TILDE WITH RING ABOVE + {0x2E1C, 0x2E1C, prQU, gcPi}, // LEFT LOW PARAPHRASE BRACKET + {0x2E1D, 0x2E1D, prQU, gcPf}, // RIGHT LOW PARAPHRASE BRACKET + {0x2E1E, 0x2E1F, prAL, gcPo}, // [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW + {0x2E20, 0x2E20, prQU, gcPi}, // LEFT VERTICAL BAR WITH QUILL + {0x2E21, 0x2E21, prQU, gcPf}, // RIGHT VERTICAL BAR WITH QUILL + {0x2E22, 0x2E22, prOP, gcPs}, // TOP LEFT HALF BRACKET + {0x2E23, 0x2E23, prCL, gcPe}, // TOP RIGHT HALF BRACKET + {0x2E24, 0x2E24, prOP, gcPs}, // BOTTOM LEFT HALF BRACKET + {0x2E25, 0x2E25, prCL, gcPe}, // BOTTOM RIGHT HALF BRACKET + {0x2E26, 0x2E26, prOP, gcPs}, // LEFT SIDEWAYS U BRACKET + {0x2E27, 0x2E27, prCL, gcPe}, // RIGHT SIDEWAYS U BRACKET + {0x2E28, 0x2E28, prOP, gcPs}, // LEFT DOUBLE PARENTHESIS + {0x2E29, 0x2E29, prCL, gcPe}, // RIGHT DOUBLE PARENTHESIS + {0x2E2A, 0x2E2D, prBA, gcPo}, // [4] TWO DOTS OVER ONE DOT PUNCTUATION..FIVE DOT MARK + {0x2E2E, 0x2E2E, prEX, gcPo}, // REVERSED QUESTION MARK + {0x2E2F, 0x2E2F, prAL, gcLm}, // VERTICAL TILDE + {0x2E30, 0x2E31, prBA, gcPo}, // [2] RING POINT..WORD SEPARATOR MIDDLE DOT + {0x2E32, 0x2E32, prAL, gcPo}, // TURNED COMMA + {0x2E33, 0x2E34, prBA, gcPo}, // [2] RAISED DOT..RAISED COMMA + {0x2E35, 0x2E39, prAL, gcPo}, // [5] TURNED SEMICOLON..TOP HALF SECTION SIGN + {0x2E3A, 0x2E3B, prB2, gcPd}, // [2] TWO-EM DASH..THREE-EM DASH + {0x2E3C, 0x2E3E, prBA, gcPo}, // [3] STENOGRAPHIC FULL STOP..WIGGLY VERTICAL LINE + {0x2E3F, 0x2E3F, prAL, gcPo}, // CAPITULUM + {0x2E40, 0x2E40, prBA, gcPd}, // DOUBLE HYPHEN + {0x2E41, 0x2E41, prBA, gcPo}, // REVERSED COMMA + {0x2E42, 0x2E42, prOP, gcPs}, // DOUBLE LOW-REVERSED-9 QUOTATION MARK + {0x2E43, 0x2E4A, prBA, gcPo}, // [8] DASH WITH LEFT UPTURN..DOTTED SOLIDUS + {0x2E4B, 0x2E4B, prAL, gcPo}, // TRIPLE DAGGER + {0x2E4C, 0x2E4C, prBA, gcPo}, // MEDIEVAL COMMA + {0x2E4D, 0x2E4D, prAL, gcPo}, // PARAGRAPHUS MARK + {0x2E4E, 0x2E4F, prBA, gcPo}, // [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER + {0x2E50, 0x2E51, prAL, gcSo}, // [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR + {0x2E52, 0x2E52, prAL, gcPo}, // TIRONIAN SIGN CAPITAL ET + {0x2E53, 0x2E54, prEX, gcPo}, // [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK + {0x2E55, 0x2E55, prOP, gcPs}, // LEFT SQUARE BRACKET WITH STROKE + {0x2E56, 0x2E56, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH STROKE + {0x2E57, 0x2E57, prOP, gcPs}, // LEFT SQUARE BRACKET WITH DOUBLE STROKE + {0x2E58, 0x2E58, prCL, gcPe}, // RIGHT SQUARE BRACKET WITH DOUBLE STROKE + {0x2E59, 0x2E59, prOP, gcPs}, // TOP HALF LEFT PARENTHESIS + {0x2E5A, 0x2E5A, prCL, gcPe}, // TOP HALF RIGHT PARENTHESIS + {0x2E5B, 0x2E5B, prOP, gcPs}, // BOTTOM HALF LEFT PARENTHESIS + {0x2E5C, 0x2E5C, prCL, gcPe}, // BOTTOM HALF RIGHT PARENTHESIS + {0x2E5D, 0x2E5D, prBA, gcPd}, // OBLIQUE HYPHEN + {0x2E80, 0x2E99, prID, gcSo}, // [26] CJK RADICAL REPEAT..CJK RADICAL RAP + {0x2E9B, 0x2EF3, prID, gcSo}, // [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE + {0x2F00, 0x2FD5, prID, gcSo}, // [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE + {0x2FF0, 0x2FFB, prID, gcSo}, // [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID + {0x3000, 0x3000, prBA, gcZs}, // IDEOGRAPHIC SPACE + {0x3001, 0x3002, prCL, gcPo}, // [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP + {0x3003, 0x3003, prID, gcPo}, // DITTO MARK + {0x3004, 0x3004, prID, gcSo}, // JAPANESE INDUSTRIAL STANDARD SYMBOL + {0x3005, 0x3005, prNS, gcLm}, // IDEOGRAPHIC ITERATION MARK + {0x3006, 0x3006, prID, gcLo}, // IDEOGRAPHIC CLOSING MARK + {0x3007, 0x3007, prID, gcNl}, // IDEOGRAPHIC NUMBER ZERO + {0x3008, 0x3008, prOP, gcPs}, // LEFT ANGLE BRACKET + {0x3009, 0x3009, prCL, gcPe}, // RIGHT ANGLE BRACKET + {0x300A, 0x300A, prOP, gcPs}, // LEFT DOUBLE ANGLE BRACKET + {0x300B, 0x300B, prCL, gcPe}, // RIGHT DOUBLE ANGLE BRACKET + {0x300C, 0x300C, prOP, gcPs}, // LEFT CORNER BRACKET + {0x300D, 0x300D, prCL, gcPe}, // RIGHT CORNER BRACKET + {0x300E, 0x300E, prOP, gcPs}, // LEFT WHITE CORNER BRACKET + {0x300F, 0x300F, prCL, gcPe}, // RIGHT WHITE CORNER BRACKET + {0x3010, 0x3010, prOP, gcPs}, // LEFT BLACK LENTICULAR BRACKET + {0x3011, 0x3011, prCL, gcPe}, // RIGHT BLACK LENTICULAR BRACKET + {0x3012, 0x3013, prID, gcSo}, // [2] POSTAL MARK..GETA MARK + {0x3014, 0x3014, prOP, gcPs}, // LEFT TORTOISE SHELL BRACKET + {0x3015, 0x3015, prCL, gcPe}, // RIGHT TORTOISE SHELL BRACKET + {0x3016, 0x3016, prOP, gcPs}, // LEFT WHITE LENTICULAR BRACKET + {0x3017, 0x3017, prCL, gcPe}, // RIGHT WHITE LENTICULAR BRACKET + {0x3018, 0x3018, prOP, gcPs}, // LEFT WHITE TORTOISE SHELL BRACKET + {0x3019, 0x3019, prCL, gcPe}, // RIGHT WHITE TORTOISE SHELL BRACKET + {0x301A, 0x301A, prOP, gcPs}, // LEFT WHITE SQUARE BRACKET + {0x301B, 0x301B, prCL, gcPe}, // RIGHT WHITE SQUARE BRACKET + {0x301C, 0x301C, prNS, gcPd}, // WAVE DASH + {0x301D, 0x301D, prOP, gcPs}, // REVERSED DOUBLE PRIME QUOTATION MARK + {0x301E, 0x301F, prCL, gcPe}, // [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK + {0x3020, 0x3020, prID, gcSo}, // POSTAL MARK FACE + {0x3021, 0x3029, prID, gcNl}, // [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE + {0x302A, 0x302D, prCM, gcMn}, // [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK + {0x302E, 0x302F, prCM, gcMc}, // [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK + {0x3030, 0x3030, prID, gcPd}, // WAVY DASH + {0x3031, 0x3034, prID, gcLm}, // [4] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF + {0x3035, 0x3035, prCM, gcLm}, // VERTICAL KANA REPEAT MARK LOWER HALF + {0x3036, 0x3037, prID, gcSo}, // [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL + {0x3038, 0x303A, prID, gcNl}, // [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY + {0x303B, 0x303B, prNS, gcLm}, // VERTICAL IDEOGRAPHIC ITERATION MARK + {0x303C, 0x303C, prNS, gcLo}, // MASU MARK + {0x303D, 0x303D, prID, gcPo}, // PART ALTERNATION MARK + {0x303E, 0x303F, prID, gcSo}, // [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE + {0x3041, 0x3041, prCJ, gcLo}, // HIRAGANA LETTER SMALL A + {0x3042, 0x3042, prID, gcLo}, // HIRAGANA LETTER A + {0x3043, 0x3043, prCJ, gcLo}, // HIRAGANA LETTER SMALL I + {0x3044, 0x3044, prID, gcLo}, // HIRAGANA LETTER I + {0x3045, 0x3045, prCJ, gcLo}, // HIRAGANA LETTER SMALL U + {0x3046, 0x3046, prID, gcLo}, // HIRAGANA LETTER U + {0x3047, 0x3047, prCJ, gcLo}, // HIRAGANA LETTER SMALL E + {0x3048, 0x3048, prID, gcLo}, // HIRAGANA LETTER E + {0x3049, 0x3049, prCJ, gcLo}, // HIRAGANA LETTER SMALL O + {0x304A, 0x3062, prID, gcLo}, // [25] HIRAGANA LETTER O..HIRAGANA LETTER DI + {0x3063, 0x3063, prCJ, gcLo}, // HIRAGANA LETTER SMALL TU + {0x3064, 0x3082, prID, gcLo}, // [31] HIRAGANA LETTER TU..HIRAGANA LETTER MO + {0x3083, 0x3083, prCJ, gcLo}, // HIRAGANA LETTER SMALL YA + {0x3084, 0x3084, prID, gcLo}, // HIRAGANA LETTER YA + {0x3085, 0x3085, prCJ, gcLo}, // HIRAGANA LETTER SMALL YU + {0x3086, 0x3086, prID, gcLo}, // HIRAGANA LETTER YU + {0x3087, 0x3087, prCJ, gcLo}, // HIRAGANA LETTER SMALL YO + {0x3088, 0x308D, prID, gcLo}, // [6] HIRAGANA LETTER YO..HIRAGANA LETTER RO + {0x308E, 0x308E, prCJ, gcLo}, // HIRAGANA LETTER SMALL WA + {0x308F, 0x3094, prID, gcLo}, // [6] HIRAGANA LETTER WA..HIRAGANA LETTER VU + {0x3095, 0x3096, prCJ, gcLo}, // [2] HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE + {0x3099, 0x309A, prCM, gcMn}, // [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x309B, 0x309C, prNS, gcSk}, // [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x309D, 0x309E, prNS, gcLm}, // [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK + {0x309F, 0x309F, prID, gcLo}, // HIRAGANA DIGRAPH YORI + {0x30A0, 0x30A0, prNS, gcPd}, // KATAKANA-HIRAGANA DOUBLE HYPHEN + {0x30A1, 0x30A1, prCJ, gcLo}, // KATAKANA LETTER SMALL A + {0x30A2, 0x30A2, prID, gcLo}, // KATAKANA LETTER A + {0x30A3, 0x30A3, prCJ, gcLo}, // KATAKANA LETTER SMALL I + {0x30A4, 0x30A4, prID, gcLo}, // KATAKANA LETTER I + {0x30A5, 0x30A5, prCJ, gcLo}, // KATAKANA LETTER SMALL U + {0x30A6, 0x30A6, prID, gcLo}, // KATAKANA LETTER U + {0x30A7, 0x30A7, prCJ, gcLo}, // KATAKANA LETTER SMALL E + {0x30A8, 0x30A8, prID, gcLo}, // KATAKANA LETTER E + {0x30A9, 0x30A9, prCJ, gcLo}, // KATAKANA LETTER SMALL O + {0x30AA, 0x30C2, prID, gcLo}, // [25] KATAKANA LETTER O..KATAKANA LETTER DI + {0x30C3, 0x30C3, prCJ, gcLo}, // KATAKANA LETTER SMALL TU + {0x30C4, 0x30E2, prID, gcLo}, // [31] KATAKANA LETTER TU..KATAKANA LETTER MO + {0x30E3, 0x30E3, prCJ, gcLo}, // KATAKANA LETTER SMALL YA + {0x30E4, 0x30E4, prID, gcLo}, // KATAKANA LETTER YA + {0x30E5, 0x30E5, prCJ, gcLo}, // KATAKANA LETTER SMALL YU + {0x30E6, 0x30E6, prID, gcLo}, // KATAKANA LETTER YU + {0x30E7, 0x30E7, prCJ, gcLo}, // KATAKANA LETTER SMALL YO + {0x30E8, 0x30ED, prID, gcLo}, // [6] KATAKANA LETTER YO..KATAKANA LETTER RO + {0x30EE, 0x30EE, prCJ, gcLo}, // KATAKANA LETTER SMALL WA + {0x30EF, 0x30F4, prID, gcLo}, // [6] KATAKANA LETTER WA..KATAKANA LETTER VU + {0x30F5, 0x30F6, prCJ, gcLo}, // [2] KATAKANA LETTER SMALL KA..KATAKANA LETTER SMALL KE + {0x30F7, 0x30FA, prID, gcLo}, // [4] KATAKANA LETTER VA..KATAKANA LETTER VO + {0x30FB, 0x30FB, prNS, gcPo}, // KATAKANA MIDDLE DOT + {0x30FC, 0x30FC, prCJ, gcLm}, // KATAKANA-HIRAGANA PROLONGED SOUND MARK + {0x30FD, 0x30FE, prNS, gcLm}, // [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK + {0x30FF, 0x30FF, prID, gcLo}, // KATAKANA DIGRAPH KOTO + {0x3105, 0x312F, prID, gcLo}, // [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN + {0x3131, 0x318E, prID, gcLo}, // [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE + {0x3190, 0x3191, prID, gcSo}, // [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK + {0x3192, 0x3195, prID, gcNo}, // [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK + {0x3196, 0x319F, prID, gcSo}, // [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK + {0x31A0, 0x31BF, prID, gcLo}, // [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH + {0x31C0, 0x31E3, prID, gcSo}, // [36] CJK STROKE T..CJK STROKE Q + {0x31F0, 0x31FF, prCJ, gcLo}, // [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO + {0x3200, 0x321E, prID, gcSo}, // [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU + {0x3220, 0x3229, prID, gcNo}, // [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN + {0x322A, 0x3247, prID, gcSo}, // [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO + {0x3248, 0x324F, prAI, gcNo}, // [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE + {0x3250, 0x3250, prID, gcSo}, // PARTNERSHIP SIGN + {0x3251, 0x325F, prID, gcNo}, // [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE + {0x3260, 0x327F, prID, gcSo}, // [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL + {0x3280, 0x3289, prID, gcNo}, // [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN + {0x328A, 0x32B0, prID, gcSo}, // [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT + {0x32B1, 0x32BF, prID, gcNo}, // [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY + {0x32C0, 0x32FF, prID, gcSo}, // [64] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE ERA NAME REIWA + {0x3300, 0x33FF, prID, gcSo}, // [256] SQUARE APAATO..SQUARE GAL + {0x3400, 0x4DBF, prID, gcLo}, // [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF + {0x4DC0, 0x4DFF, prAL, gcSo}, // [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION + {0x4E00, 0x9FFF, prID, gcLo}, // [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF + {0xA000, 0xA014, prID, gcLo}, // [21] YI SYLLABLE IT..YI SYLLABLE E + {0xA015, 0xA015, prNS, gcLm}, // YI SYLLABLE WU + {0xA016, 0xA48C, prID, gcLo}, // [1143] YI SYLLABLE BIT..YI SYLLABLE YYR + {0xA490, 0xA4C6, prID, gcSo}, // [55] YI RADICAL QOT..YI RADICAL KE + {0xA4D0, 0xA4F7, prAL, gcLo}, // [40] LISU LETTER BA..LISU LETTER OE + {0xA4F8, 0xA4FD, prAL, gcLm}, // [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU + {0xA4FE, 0xA4FF, prBA, gcPo}, // [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP + {0xA500, 0xA60B, prAL, gcLo}, // [268] VAI SYLLABLE EE..VAI SYLLABLE NG + {0xA60C, 0xA60C, prAL, gcLm}, // VAI SYLLABLE LENGTHENER + {0xA60D, 0xA60D, prBA, gcPo}, // VAI COMMA + {0xA60E, 0xA60E, prEX, gcPo}, // VAI FULL STOP + {0xA60F, 0xA60F, prBA, gcPo}, // VAI QUESTION MARK + {0xA610, 0xA61F, prAL, gcLo}, // [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG + {0xA620, 0xA629, prNU, gcNd}, // [10] VAI DIGIT ZERO..VAI DIGIT NINE + {0xA62A, 0xA62B, prAL, gcLo}, // [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO + {0xA640, 0xA66D, prAL, gcLC}, // [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O + {0xA66E, 0xA66E, prAL, gcLo}, // CYRILLIC LETTER MULTIOCULAR O + {0xA66F, 0xA66F, prCM, gcMn}, // COMBINING CYRILLIC VZMET + {0xA670, 0xA672, prCM, gcMe}, // [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN + {0xA673, 0xA673, prAL, gcPo}, // SLAVONIC ASTERISK + {0xA674, 0xA67D, prCM, gcMn}, // [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK + {0xA67E, 0xA67E, prAL, gcPo}, // CYRILLIC KAVYKA + {0xA67F, 0xA67F, prAL, gcLm}, // CYRILLIC PAYEROK + {0xA680, 0xA69B, prAL, gcLC}, // [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O + {0xA69C, 0xA69D, prAL, gcLm}, // [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN + {0xA69E, 0xA69F, prCM, gcMn}, // [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E + {0xA6A0, 0xA6E5, prAL, gcLo}, // [70] BAMUM LETTER A..BAMUM LETTER KI + {0xA6E6, 0xA6EF, prAL, gcNl}, // [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM + {0xA6F0, 0xA6F1, prCM, gcMn}, // [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS + {0xA6F2, 0xA6F2, prAL, gcPo}, // BAMUM NJAEMLI + {0xA6F3, 0xA6F7, prBA, gcPo}, // [5] BAMUM FULL STOP..BAMUM QUESTION MARK + {0xA700, 0xA716, prAL, gcSk}, // [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR + {0xA717, 0xA71F, prAL, gcLm}, // [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK + {0xA720, 0xA721, prAL, gcSk}, // [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE + {0xA722, 0xA76F, prAL, gcLC}, // [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON + {0xA770, 0xA770, prAL, gcLm}, // MODIFIER LETTER US + {0xA771, 0xA787, prAL, gcLC}, // [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T + {0xA788, 0xA788, prAL, gcLm}, // MODIFIER LETTER LOW CIRCUMFLEX ACCENT + {0xA789, 0xA78A, prAL, gcSk}, // [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN + {0xA78B, 0xA78E, prAL, gcLC}, // [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT + {0xA78F, 0xA78F, prAL, gcLo}, // LATIN LETTER SINOLOGICAL DOT + {0xA790, 0xA7CA, prAL, gcLC}, // [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY + {0xA7D0, 0xA7D1, prAL, gcLC}, // [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G + {0xA7D3, 0xA7D3, prAL, gcLl}, // LATIN SMALL LETTER DOUBLE THORN + {0xA7D5, 0xA7D9, prAL, gcLC}, // [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S + {0xA7F2, 0xA7F4, prAL, gcLm}, // [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q + {0xA7F5, 0xA7F6, prAL, gcLC}, // [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H + {0xA7F7, 0xA7F7, prAL, gcLo}, // LATIN EPIGRAPHIC LETTER SIDEWAYS I + {0xA7F8, 0xA7F9, prAL, gcLm}, // [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE + {0xA7FA, 0xA7FA, prAL, gcLl}, // LATIN LETTER SMALL CAPITAL TURNED M + {0xA7FB, 0xA7FF, prAL, gcLo}, // [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M + {0xA800, 0xA801, prAL, gcLo}, // [2] SYLOTI NAGRI LETTER A..SYLOTI NAGRI LETTER I + {0xA802, 0xA802, prCM, gcMn}, // SYLOTI NAGRI SIGN DVISVARA + {0xA803, 0xA805, prAL, gcLo}, // [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O + {0xA806, 0xA806, prCM, gcMn}, // SYLOTI NAGRI SIGN HASANTA + {0xA807, 0xA80A, prAL, gcLo}, // [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO + {0xA80B, 0xA80B, prCM, gcMn}, // SYLOTI NAGRI SIGN ANUSVARA + {0xA80C, 0xA822, prAL, gcLo}, // [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO + {0xA823, 0xA824, prCM, gcMc}, // [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I + {0xA825, 0xA826, prCM, gcMn}, // [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E + {0xA827, 0xA827, prCM, gcMc}, // SYLOTI NAGRI VOWEL SIGN OO + {0xA828, 0xA82B, prAL, gcSo}, // [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4 + {0xA82C, 0xA82C, prCM, gcMn}, // SYLOTI NAGRI SIGN ALTERNATE HASANTA + {0xA830, 0xA835, prAL, gcNo}, // [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS + {0xA836, 0xA837, prAL, gcSo}, // [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK + {0xA838, 0xA838, prPO, gcSc}, // NORTH INDIC RUPEE MARK + {0xA839, 0xA839, prAL, gcSo}, // NORTH INDIC QUANTITY MARK + {0xA840, 0xA873, prAL, gcLo}, // [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU + {0xA874, 0xA875, prBB, gcPo}, // [2] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA DOUBLE HEAD MARK + {0xA876, 0xA877, prEX, gcPo}, // [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD + {0xA880, 0xA881, prCM, gcMc}, // [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA + {0xA882, 0xA8B3, prAL, gcLo}, // [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA + {0xA8B4, 0xA8C3, prCM, gcMc}, // [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU + {0xA8C4, 0xA8C5, prCM, gcMn}, // [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU + {0xA8CE, 0xA8CF, prBA, gcPo}, // [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA + {0xA8D0, 0xA8D9, prNU, gcNd}, // [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE + {0xA8E0, 0xA8F1, prCM, gcMn}, // [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA + {0xA8F2, 0xA8F7, prAL, gcLo}, // [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA + {0xA8F8, 0xA8FA, prAL, gcPo}, // [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET + {0xA8FB, 0xA8FB, prAL, gcLo}, // DEVANAGARI HEADSTROKE + {0xA8FC, 0xA8FC, prBB, gcPo}, // DEVANAGARI SIGN SIDDHAM + {0xA8FD, 0xA8FE, prAL, gcLo}, // [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY + {0xA8FF, 0xA8FF, prCM, gcMn}, // DEVANAGARI VOWEL SIGN AY + {0xA900, 0xA909, prNU, gcNd}, // [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE + {0xA90A, 0xA925, prAL, gcLo}, // [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO + {0xA926, 0xA92D, prCM, gcMn}, // [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU + {0xA92E, 0xA92F, prBA, gcPo}, // [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA + {0xA930, 0xA946, prAL, gcLo}, // [23] REJANG LETTER KA..REJANG LETTER A + {0xA947, 0xA951, prCM, gcMn}, // [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R + {0xA952, 0xA953, prCM, gcMc}, // [2] REJANG CONSONANT SIGN H..REJANG VIRAMA + {0xA95F, 0xA95F, prAL, gcPo}, // REJANG SECTION MARK + {0xA960, 0xA97C, prJL, gcLo}, // [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH + {0xA980, 0xA982, prCM, gcMn}, // [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR + {0xA983, 0xA983, prCM, gcMc}, // JAVANESE SIGN WIGNYAN + {0xA984, 0xA9B2, prAL, gcLo}, // [47] JAVANESE LETTER A..JAVANESE LETTER HA + {0xA9B3, 0xA9B3, prCM, gcMn}, // JAVANESE SIGN CECAK TELU + {0xA9B4, 0xA9B5, prCM, gcMc}, // [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG + {0xA9B6, 0xA9B9, prCM, gcMn}, // [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT + {0xA9BA, 0xA9BB, prCM, gcMc}, // [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE + {0xA9BC, 0xA9BD, prCM, gcMn}, // [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET + {0xA9BE, 0xA9C0, prCM, gcMc}, // [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON + {0xA9C1, 0xA9C6, prAL, gcPo}, // [6] JAVANESE LEFT RERENGGAN..JAVANESE PADA WINDU + {0xA9C7, 0xA9C9, prBA, gcPo}, // [3] JAVANESE PADA PANGKAT..JAVANESE PADA LUNGSI + {0xA9CA, 0xA9CD, prAL, gcPo}, // [4] JAVANESE PADA ADEG..JAVANESE TURNED PADA PISELEH + {0xA9CF, 0xA9CF, prAL, gcLm}, // JAVANESE PANGRANGKEP + {0xA9D0, 0xA9D9, prNU, gcNd}, // [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE + {0xA9DE, 0xA9DF, prAL, gcPo}, // [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN + {0xA9E0, 0xA9E4, prSA, gcLo}, // [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA + {0xA9E5, 0xA9E5, prSA, gcMn}, // MYANMAR SIGN SHAN SAW + {0xA9E6, 0xA9E6, prSA, gcLm}, // MYANMAR MODIFIER LETTER SHAN REDUPLICATION + {0xA9E7, 0xA9EF, prSA, gcLo}, // [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA + {0xA9F0, 0xA9F9, prNU, gcNd}, // [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE + {0xA9FA, 0xA9FE, prSA, gcLo}, // [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA + {0xAA00, 0xAA28, prAL, gcLo}, // [41] CHAM LETTER A..CHAM LETTER HA + {0xAA29, 0xAA2E, prCM, gcMn}, // [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE + {0xAA2F, 0xAA30, prCM, gcMc}, // [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI + {0xAA31, 0xAA32, prCM, gcMn}, // [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE + {0xAA33, 0xAA34, prCM, gcMc}, // [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA + {0xAA35, 0xAA36, prCM, gcMn}, // [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA + {0xAA40, 0xAA42, prAL, gcLo}, // [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG + {0xAA43, 0xAA43, prCM, gcMn}, // CHAM CONSONANT SIGN FINAL NG + {0xAA44, 0xAA4B, prAL, gcLo}, // [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS + {0xAA4C, 0xAA4C, prCM, gcMn}, // CHAM CONSONANT SIGN FINAL M + {0xAA4D, 0xAA4D, prCM, gcMc}, // CHAM CONSONANT SIGN FINAL H + {0xAA50, 0xAA59, prNU, gcNd}, // [10] CHAM DIGIT ZERO..CHAM DIGIT NINE + {0xAA5C, 0xAA5C, prAL, gcPo}, // CHAM PUNCTUATION SPIRAL + {0xAA5D, 0xAA5F, prBA, gcPo}, // [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA + {0xAA60, 0xAA6F, prSA, gcLo}, // [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA + {0xAA70, 0xAA70, prSA, gcLm}, // MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION + {0xAA71, 0xAA76, prSA, gcLo}, // [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM + {0xAA77, 0xAA79, prSA, gcSo}, // [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO + {0xAA7A, 0xAA7A, prSA, gcLo}, // MYANMAR LETTER AITON RA + {0xAA7B, 0xAA7B, prSA, gcMc}, // MYANMAR SIGN PAO KAREN TONE + {0xAA7C, 0xAA7C, prSA, gcMn}, // MYANMAR SIGN TAI LAING TONE-2 + {0xAA7D, 0xAA7D, prSA, gcMc}, // MYANMAR SIGN TAI LAING TONE-5 + {0xAA7E, 0xAA7F, prSA, gcLo}, // [2] MYANMAR LETTER SHWE PALAUNG CHA..MYANMAR LETTER SHWE PALAUNG SHA + {0xAA80, 0xAAAF, prSA, gcLo}, // [48] TAI VIET LETTER LOW KO..TAI VIET LETTER HIGH O + {0xAAB0, 0xAAB0, prSA, gcMn}, // TAI VIET MAI KANG + {0xAAB1, 0xAAB1, prSA, gcLo}, // TAI VIET VOWEL AA + {0xAAB2, 0xAAB4, prSA, gcMn}, // [3] TAI VIET VOWEL I..TAI VIET VOWEL U + {0xAAB5, 0xAAB6, prSA, gcLo}, // [2] TAI VIET VOWEL E..TAI VIET VOWEL O + {0xAAB7, 0xAAB8, prSA, gcMn}, // [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA + {0xAAB9, 0xAABD, prSA, gcLo}, // [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN + {0xAABE, 0xAABF, prSA, gcMn}, // [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK + {0xAAC0, 0xAAC0, prSA, gcLo}, // TAI VIET TONE MAI NUENG + {0xAAC1, 0xAAC1, prSA, gcMn}, // TAI VIET TONE MAI THO + {0xAAC2, 0xAAC2, prSA, gcLo}, // TAI VIET TONE MAI SONG + {0xAADB, 0xAADC, prSA, gcLo}, // [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG + {0xAADD, 0xAADD, prSA, gcLm}, // TAI VIET SYMBOL SAM + {0xAADE, 0xAADF, prSA, gcPo}, // [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI + {0xAAE0, 0xAAEA, prAL, gcLo}, // [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA + {0xAAEB, 0xAAEB, prCM, gcMc}, // MEETEI MAYEK VOWEL SIGN II + {0xAAEC, 0xAAED, prCM, gcMn}, // [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI + {0xAAEE, 0xAAEF, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU + {0xAAF0, 0xAAF1, prBA, gcPo}, // [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM + {0xAAF2, 0xAAF2, prAL, gcLo}, // MEETEI MAYEK ANJI + {0xAAF3, 0xAAF4, prAL, gcLm}, // [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK + {0xAAF5, 0xAAF5, prCM, gcMc}, // MEETEI MAYEK VOWEL SIGN VISARGA + {0xAAF6, 0xAAF6, prCM, gcMn}, // MEETEI MAYEK VIRAMA + {0xAB01, 0xAB06, prAL, gcLo}, // [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO + {0xAB09, 0xAB0E, prAL, gcLo}, // [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO + {0xAB11, 0xAB16, prAL, gcLo}, // [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO + {0xAB20, 0xAB26, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO + {0xAB28, 0xAB2E, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO + {0xAB30, 0xAB5A, prAL, gcLl}, // [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG + {0xAB5B, 0xAB5B, prAL, gcSk}, // MODIFIER BREVE WITH INVERTED BREVE + {0xAB5C, 0xAB5F, prAL, gcLm}, // [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK + {0xAB60, 0xAB68, prAL, gcLl}, // [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE + {0xAB69, 0xAB69, prAL, gcLm}, // MODIFIER LETTER SMALL TURNED W + {0xAB6A, 0xAB6B, prAL, gcSk}, // [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK + {0xAB70, 0xABBF, prAL, gcLl}, // [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA + {0xABC0, 0xABE2, prAL, gcLo}, // [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM + {0xABE3, 0xABE4, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP + {0xABE5, 0xABE5, prCM, gcMn}, // MEETEI MAYEK VOWEL SIGN ANAP + {0xABE6, 0xABE7, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP + {0xABE8, 0xABE8, prCM, gcMn}, // MEETEI MAYEK VOWEL SIGN UNAP + {0xABE9, 0xABEA, prCM, gcMc}, // [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG + {0xABEB, 0xABEB, prBA, gcPo}, // MEETEI MAYEK CHEIKHEI + {0xABEC, 0xABEC, prCM, gcMc}, // MEETEI MAYEK LUM IYEK + {0xABED, 0xABED, prCM, gcMn}, // MEETEI MAYEK APUN IYEK + {0xABF0, 0xABF9, prNU, gcNd}, // [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE + {0xAC00, 0xAC00, prH2, gcLo}, // HANGUL SYLLABLE GA + {0xAC01, 0xAC1B, prH3, gcLo}, // [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH + {0xAC1C, 0xAC1C, prH2, gcLo}, // HANGUL SYLLABLE GAE + {0xAC1D, 0xAC37, prH3, gcLo}, // [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH + {0xAC38, 0xAC38, prH2, gcLo}, // HANGUL SYLLABLE GYA + {0xAC39, 0xAC53, prH3, gcLo}, // [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH + {0xAC54, 0xAC54, prH2, gcLo}, // HANGUL SYLLABLE GYAE + {0xAC55, 0xAC6F, prH3, gcLo}, // [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH + {0xAC70, 0xAC70, prH2, gcLo}, // HANGUL SYLLABLE GEO + {0xAC71, 0xAC8B, prH3, gcLo}, // [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH + {0xAC8C, 0xAC8C, prH2, gcLo}, // HANGUL SYLLABLE GE + {0xAC8D, 0xACA7, prH3, gcLo}, // [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH + {0xACA8, 0xACA8, prH2, gcLo}, // HANGUL SYLLABLE GYEO + {0xACA9, 0xACC3, prH3, gcLo}, // [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH + {0xACC4, 0xACC4, prH2, gcLo}, // HANGUL SYLLABLE GYE + {0xACC5, 0xACDF, prH3, gcLo}, // [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH + {0xACE0, 0xACE0, prH2, gcLo}, // HANGUL SYLLABLE GO + {0xACE1, 0xACFB, prH3, gcLo}, // [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH + {0xACFC, 0xACFC, prH2, gcLo}, // HANGUL SYLLABLE GWA + {0xACFD, 0xAD17, prH3, gcLo}, // [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH + {0xAD18, 0xAD18, prH2, gcLo}, // HANGUL SYLLABLE GWAE + {0xAD19, 0xAD33, prH3, gcLo}, // [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH + {0xAD34, 0xAD34, prH2, gcLo}, // HANGUL SYLLABLE GOE + {0xAD35, 0xAD4F, prH3, gcLo}, // [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH + {0xAD50, 0xAD50, prH2, gcLo}, // HANGUL SYLLABLE GYO + {0xAD51, 0xAD6B, prH3, gcLo}, // [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH + {0xAD6C, 0xAD6C, prH2, gcLo}, // HANGUL SYLLABLE GU + {0xAD6D, 0xAD87, prH3, gcLo}, // [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH + {0xAD88, 0xAD88, prH2, gcLo}, // HANGUL SYLLABLE GWEO + {0xAD89, 0xADA3, prH3, gcLo}, // [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH + {0xADA4, 0xADA4, prH2, gcLo}, // HANGUL SYLLABLE GWE + {0xADA5, 0xADBF, prH3, gcLo}, // [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH + {0xADC0, 0xADC0, prH2, gcLo}, // HANGUL SYLLABLE GWI + {0xADC1, 0xADDB, prH3, gcLo}, // [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH + {0xADDC, 0xADDC, prH2, gcLo}, // HANGUL SYLLABLE GYU + {0xADDD, 0xADF7, prH3, gcLo}, // [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH + {0xADF8, 0xADF8, prH2, gcLo}, // HANGUL SYLLABLE GEU + {0xADF9, 0xAE13, prH3, gcLo}, // [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH + {0xAE14, 0xAE14, prH2, gcLo}, // HANGUL SYLLABLE GYI + {0xAE15, 0xAE2F, prH3, gcLo}, // [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH + {0xAE30, 0xAE30, prH2, gcLo}, // HANGUL SYLLABLE GI + {0xAE31, 0xAE4B, prH3, gcLo}, // [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH + {0xAE4C, 0xAE4C, prH2, gcLo}, // HANGUL SYLLABLE GGA + {0xAE4D, 0xAE67, prH3, gcLo}, // [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH + {0xAE68, 0xAE68, prH2, gcLo}, // HANGUL SYLLABLE GGAE + {0xAE69, 0xAE83, prH3, gcLo}, // [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH + {0xAE84, 0xAE84, prH2, gcLo}, // HANGUL SYLLABLE GGYA + {0xAE85, 0xAE9F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH + {0xAEA0, 0xAEA0, prH2, gcLo}, // HANGUL SYLLABLE GGYAE + {0xAEA1, 0xAEBB, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH + {0xAEBC, 0xAEBC, prH2, gcLo}, // HANGUL SYLLABLE GGEO + {0xAEBD, 0xAED7, prH3, gcLo}, // [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH + {0xAED8, 0xAED8, prH2, gcLo}, // HANGUL SYLLABLE GGE + {0xAED9, 0xAEF3, prH3, gcLo}, // [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH + {0xAEF4, 0xAEF4, prH2, gcLo}, // HANGUL SYLLABLE GGYEO + {0xAEF5, 0xAF0F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH + {0xAF10, 0xAF10, prH2, gcLo}, // HANGUL SYLLABLE GGYE + {0xAF11, 0xAF2B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH + {0xAF2C, 0xAF2C, prH2, gcLo}, // HANGUL SYLLABLE GGO + {0xAF2D, 0xAF47, prH3, gcLo}, // [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH + {0xAF48, 0xAF48, prH2, gcLo}, // HANGUL SYLLABLE GGWA + {0xAF49, 0xAF63, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH + {0xAF64, 0xAF64, prH2, gcLo}, // HANGUL SYLLABLE GGWAE + {0xAF65, 0xAF7F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH + {0xAF80, 0xAF80, prH2, gcLo}, // HANGUL SYLLABLE GGOE + {0xAF81, 0xAF9B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH + {0xAF9C, 0xAF9C, prH2, gcLo}, // HANGUL SYLLABLE GGYO + {0xAF9D, 0xAFB7, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH + {0xAFB8, 0xAFB8, prH2, gcLo}, // HANGUL SYLLABLE GGU + {0xAFB9, 0xAFD3, prH3, gcLo}, // [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH + {0xAFD4, 0xAFD4, prH2, gcLo}, // HANGUL SYLLABLE GGWEO + {0xAFD5, 0xAFEF, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH + {0xAFF0, 0xAFF0, prH2, gcLo}, // HANGUL SYLLABLE GGWE + {0xAFF1, 0xB00B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH + {0xB00C, 0xB00C, prH2, gcLo}, // HANGUL SYLLABLE GGWI + {0xB00D, 0xB027, prH3, gcLo}, // [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH + {0xB028, 0xB028, prH2, gcLo}, // HANGUL SYLLABLE GGYU + {0xB029, 0xB043, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH + {0xB044, 0xB044, prH2, gcLo}, // HANGUL SYLLABLE GGEU + {0xB045, 0xB05F, prH3, gcLo}, // [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH + {0xB060, 0xB060, prH2, gcLo}, // HANGUL SYLLABLE GGYI + {0xB061, 0xB07B, prH3, gcLo}, // [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH + {0xB07C, 0xB07C, prH2, gcLo}, // HANGUL SYLLABLE GGI + {0xB07D, 0xB097, prH3, gcLo}, // [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH + {0xB098, 0xB098, prH2, gcLo}, // HANGUL SYLLABLE NA + {0xB099, 0xB0B3, prH3, gcLo}, // [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH + {0xB0B4, 0xB0B4, prH2, gcLo}, // HANGUL SYLLABLE NAE + {0xB0B5, 0xB0CF, prH3, gcLo}, // [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH + {0xB0D0, 0xB0D0, prH2, gcLo}, // HANGUL SYLLABLE NYA + {0xB0D1, 0xB0EB, prH3, gcLo}, // [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH + {0xB0EC, 0xB0EC, prH2, gcLo}, // HANGUL SYLLABLE NYAE + {0xB0ED, 0xB107, prH3, gcLo}, // [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH + {0xB108, 0xB108, prH2, gcLo}, // HANGUL SYLLABLE NEO + {0xB109, 0xB123, prH3, gcLo}, // [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH + {0xB124, 0xB124, prH2, gcLo}, // HANGUL SYLLABLE NE + {0xB125, 0xB13F, prH3, gcLo}, // [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH + {0xB140, 0xB140, prH2, gcLo}, // HANGUL SYLLABLE NYEO + {0xB141, 0xB15B, prH3, gcLo}, // [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH + {0xB15C, 0xB15C, prH2, gcLo}, // HANGUL SYLLABLE NYE + {0xB15D, 0xB177, prH3, gcLo}, // [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH + {0xB178, 0xB178, prH2, gcLo}, // HANGUL SYLLABLE NO + {0xB179, 0xB193, prH3, gcLo}, // [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH + {0xB194, 0xB194, prH2, gcLo}, // HANGUL SYLLABLE NWA + {0xB195, 0xB1AF, prH3, gcLo}, // [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH + {0xB1B0, 0xB1B0, prH2, gcLo}, // HANGUL SYLLABLE NWAE + {0xB1B1, 0xB1CB, prH3, gcLo}, // [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH + {0xB1CC, 0xB1CC, prH2, gcLo}, // HANGUL SYLLABLE NOE + {0xB1CD, 0xB1E7, prH3, gcLo}, // [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH + {0xB1E8, 0xB1E8, prH2, gcLo}, // HANGUL SYLLABLE NYO + {0xB1E9, 0xB203, prH3, gcLo}, // [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH + {0xB204, 0xB204, prH2, gcLo}, // HANGUL SYLLABLE NU + {0xB205, 0xB21F, prH3, gcLo}, // [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH + {0xB220, 0xB220, prH2, gcLo}, // HANGUL SYLLABLE NWEO + {0xB221, 0xB23B, prH3, gcLo}, // [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH + {0xB23C, 0xB23C, prH2, gcLo}, // HANGUL SYLLABLE NWE + {0xB23D, 0xB257, prH3, gcLo}, // [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH + {0xB258, 0xB258, prH2, gcLo}, // HANGUL SYLLABLE NWI + {0xB259, 0xB273, prH3, gcLo}, // [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH + {0xB274, 0xB274, prH2, gcLo}, // HANGUL SYLLABLE NYU + {0xB275, 0xB28F, prH3, gcLo}, // [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH + {0xB290, 0xB290, prH2, gcLo}, // HANGUL SYLLABLE NEU + {0xB291, 0xB2AB, prH3, gcLo}, // [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH + {0xB2AC, 0xB2AC, prH2, gcLo}, // HANGUL SYLLABLE NYI + {0xB2AD, 0xB2C7, prH3, gcLo}, // [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH + {0xB2C8, 0xB2C8, prH2, gcLo}, // HANGUL SYLLABLE NI + {0xB2C9, 0xB2E3, prH3, gcLo}, // [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH + {0xB2E4, 0xB2E4, prH2, gcLo}, // HANGUL SYLLABLE DA + {0xB2E5, 0xB2FF, prH3, gcLo}, // [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH + {0xB300, 0xB300, prH2, gcLo}, // HANGUL SYLLABLE DAE + {0xB301, 0xB31B, prH3, gcLo}, // [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH + {0xB31C, 0xB31C, prH2, gcLo}, // HANGUL SYLLABLE DYA + {0xB31D, 0xB337, prH3, gcLo}, // [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH + {0xB338, 0xB338, prH2, gcLo}, // HANGUL SYLLABLE DYAE + {0xB339, 0xB353, prH3, gcLo}, // [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH + {0xB354, 0xB354, prH2, gcLo}, // HANGUL SYLLABLE DEO + {0xB355, 0xB36F, prH3, gcLo}, // [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH + {0xB370, 0xB370, prH2, gcLo}, // HANGUL SYLLABLE DE + {0xB371, 0xB38B, prH3, gcLo}, // [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH + {0xB38C, 0xB38C, prH2, gcLo}, // HANGUL SYLLABLE DYEO + {0xB38D, 0xB3A7, prH3, gcLo}, // [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH + {0xB3A8, 0xB3A8, prH2, gcLo}, // HANGUL SYLLABLE DYE + {0xB3A9, 0xB3C3, prH3, gcLo}, // [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH + {0xB3C4, 0xB3C4, prH2, gcLo}, // HANGUL SYLLABLE DO + {0xB3C5, 0xB3DF, prH3, gcLo}, // [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH + {0xB3E0, 0xB3E0, prH2, gcLo}, // HANGUL SYLLABLE DWA + {0xB3E1, 0xB3FB, prH3, gcLo}, // [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH + {0xB3FC, 0xB3FC, prH2, gcLo}, // HANGUL SYLLABLE DWAE + {0xB3FD, 0xB417, prH3, gcLo}, // [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH + {0xB418, 0xB418, prH2, gcLo}, // HANGUL SYLLABLE DOE + {0xB419, 0xB433, prH3, gcLo}, // [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH + {0xB434, 0xB434, prH2, gcLo}, // HANGUL SYLLABLE DYO + {0xB435, 0xB44F, prH3, gcLo}, // [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH + {0xB450, 0xB450, prH2, gcLo}, // HANGUL SYLLABLE DU + {0xB451, 0xB46B, prH3, gcLo}, // [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH + {0xB46C, 0xB46C, prH2, gcLo}, // HANGUL SYLLABLE DWEO + {0xB46D, 0xB487, prH3, gcLo}, // [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH + {0xB488, 0xB488, prH2, gcLo}, // HANGUL SYLLABLE DWE + {0xB489, 0xB4A3, prH3, gcLo}, // [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH + {0xB4A4, 0xB4A4, prH2, gcLo}, // HANGUL SYLLABLE DWI + {0xB4A5, 0xB4BF, prH3, gcLo}, // [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH + {0xB4C0, 0xB4C0, prH2, gcLo}, // HANGUL SYLLABLE DYU + {0xB4C1, 0xB4DB, prH3, gcLo}, // [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH + {0xB4DC, 0xB4DC, prH2, gcLo}, // HANGUL SYLLABLE DEU + {0xB4DD, 0xB4F7, prH3, gcLo}, // [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH + {0xB4F8, 0xB4F8, prH2, gcLo}, // HANGUL SYLLABLE DYI + {0xB4F9, 0xB513, prH3, gcLo}, // [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH + {0xB514, 0xB514, prH2, gcLo}, // HANGUL SYLLABLE DI + {0xB515, 0xB52F, prH3, gcLo}, // [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH + {0xB530, 0xB530, prH2, gcLo}, // HANGUL SYLLABLE DDA + {0xB531, 0xB54B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH + {0xB54C, 0xB54C, prH2, gcLo}, // HANGUL SYLLABLE DDAE + {0xB54D, 0xB567, prH3, gcLo}, // [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH + {0xB568, 0xB568, prH2, gcLo}, // HANGUL SYLLABLE DDYA + {0xB569, 0xB583, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH + {0xB584, 0xB584, prH2, gcLo}, // HANGUL SYLLABLE DDYAE + {0xB585, 0xB59F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH + {0xB5A0, 0xB5A0, prH2, gcLo}, // HANGUL SYLLABLE DDEO + {0xB5A1, 0xB5BB, prH3, gcLo}, // [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH + {0xB5BC, 0xB5BC, prH2, gcLo}, // HANGUL SYLLABLE DDE + {0xB5BD, 0xB5D7, prH3, gcLo}, // [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH + {0xB5D8, 0xB5D8, prH2, gcLo}, // HANGUL SYLLABLE DDYEO + {0xB5D9, 0xB5F3, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH + {0xB5F4, 0xB5F4, prH2, gcLo}, // HANGUL SYLLABLE DDYE + {0xB5F5, 0xB60F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH + {0xB610, 0xB610, prH2, gcLo}, // HANGUL SYLLABLE DDO + {0xB611, 0xB62B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH + {0xB62C, 0xB62C, prH2, gcLo}, // HANGUL SYLLABLE DDWA + {0xB62D, 0xB647, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH + {0xB648, 0xB648, prH2, gcLo}, // HANGUL SYLLABLE DDWAE + {0xB649, 0xB663, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH + {0xB664, 0xB664, prH2, gcLo}, // HANGUL SYLLABLE DDOE + {0xB665, 0xB67F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH + {0xB680, 0xB680, prH2, gcLo}, // HANGUL SYLLABLE DDYO + {0xB681, 0xB69B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH + {0xB69C, 0xB69C, prH2, gcLo}, // HANGUL SYLLABLE DDU + {0xB69D, 0xB6B7, prH3, gcLo}, // [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH + {0xB6B8, 0xB6B8, prH2, gcLo}, // HANGUL SYLLABLE DDWEO + {0xB6B9, 0xB6D3, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH + {0xB6D4, 0xB6D4, prH2, gcLo}, // HANGUL SYLLABLE DDWE + {0xB6D5, 0xB6EF, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH + {0xB6F0, 0xB6F0, prH2, gcLo}, // HANGUL SYLLABLE DDWI + {0xB6F1, 0xB70B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH + {0xB70C, 0xB70C, prH2, gcLo}, // HANGUL SYLLABLE DDYU + {0xB70D, 0xB727, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH + {0xB728, 0xB728, prH2, gcLo}, // HANGUL SYLLABLE DDEU + {0xB729, 0xB743, prH3, gcLo}, // [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH + {0xB744, 0xB744, prH2, gcLo}, // HANGUL SYLLABLE DDYI + {0xB745, 0xB75F, prH3, gcLo}, // [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH + {0xB760, 0xB760, prH2, gcLo}, // HANGUL SYLLABLE DDI + {0xB761, 0xB77B, prH3, gcLo}, // [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH + {0xB77C, 0xB77C, prH2, gcLo}, // HANGUL SYLLABLE RA + {0xB77D, 0xB797, prH3, gcLo}, // [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH + {0xB798, 0xB798, prH2, gcLo}, // HANGUL SYLLABLE RAE + {0xB799, 0xB7B3, prH3, gcLo}, // [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH + {0xB7B4, 0xB7B4, prH2, gcLo}, // HANGUL SYLLABLE RYA + {0xB7B5, 0xB7CF, prH3, gcLo}, // [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH + {0xB7D0, 0xB7D0, prH2, gcLo}, // HANGUL SYLLABLE RYAE + {0xB7D1, 0xB7EB, prH3, gcLo}, // [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH + {0xB7EC, 0xB7EC, prH2, gcLo}, // HANGUL SYLLABLE REO + {0xB7ED, 0xB807, prH3, gcLo}, // [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH + {0xB808, 0xB808, prH2, gcLo}, // HANGUL SYLLABLE RE + {0xB809, 0xB823, prH3, gcLo}, // [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH + {0xB824, 0xB824, prH2, gcLo}, // HANGUL SYLLABLE RYEO + {0xB825, 0xB83F, prH3, gcLo}, // [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH + {0xB840, 0xB840, prH2, gcLo}, // HANGUL SYLLABLE RYE + {0xB841, 0xB85B, prH3, gcLo}, // [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH + {0xB85C, 0xB85C, prH2, gcLo}, // HANGUL SYLLABLE RO + {0xB85D, 0xB877, prH3, gcLo}, // [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH + {0xB878, 0xB878, prH2, gcLo}, // HANGUL SYLLABLE RWA + {0xB879, 0xB893, prH3, gcLo}, // [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH + {0xB894, 0xB894, prH2, gcLo}, // HANGUL SYLLABLE RWAE + {0xB895, 0xB8AF, prH3, gcLo}, // [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH + {0xB8B0, 0xB8B0, prH2, gcLo}, // HANGUL SYLLABLE ROE + {0xB8B1, 0xB8CB, prH3, gcLo}, // [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH + {0xB8CC, 0xB8CC, prH2, gcLo}, // HANGUL SYLLABLE RYO + {0xB8CD, 0xB8E7, prH3, gcLo}, // [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH + {0xB8E8, 0xB8E8, prH2, gcLo}, // HANGUL SYLLABLE RU + {0xB8E9, 0xB903, prH3, gcLo}, // [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH + {0xB904, 0xB904, prH2, gcLo}, // HANGUL SYLLABLE RWEO + {0xB905, 0xB91F, prH3, gcLo}, // [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH + {0xB920, 0xB920, prH2, gcLo}, // HANGUL SYLLABLE RWE + {0xB921, 0xB93B, prH3, gcLo}, // [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH + {0xB93C, 0xB93C, prH2, gcLo}, // HANGUL SYLLABLE RWI + {0xB93D, 0xB957, prH3, gcLo}, // [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH + {0xB958, 0xB958, prH2, gcLo}, // HANGUL SYLLABLE RYU + {0xB959, 0xB973, prH3, gcLo}, // [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH + {0xB974, 0xB974, prH2, gcLo}, // HANGUL SYLLABLE REU + {0xB975, 0xB98F, prH3, gcLo}, // [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH + {0xB990, 0xB990, prH2, gcLo}, // HANGUL SYLLABLE RYI + {0xB991, 0xB9AB, prH3, gcLo}, // [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH + {0xB9AC, 0xB9AC, prH2, gcLo}, // HANGUL SYLLABLE RI + {0xB9AD, 0xB9C7, prH3, gcLo}, // [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH + {0xB9C8, 0xB9C8, prH2, gcLo}, // HANGUL SYLLABLE MA + {0xB9C9, 0xB9E3, prH3, gcLo}, // [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH + {0xB9E4, 0xB9E4, prH2, gcLo}, // HANGUL SYLLABLE MAE + {0xB9E5, 0xB9FF, prH3, gcLo}, // [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH + {0xBA00, 0xBA00, prH2, gcLo}, // HANGUL SYLLABLE MYA + {0xBA01, 0xBA1B, prH3, gcLo}, // [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH + {0xBA1C, 0xBA1C, prH2, gcLo}, // HANGUL SYLLABLE MYAE + {0xBA1D, 0xBA37, prH3, gcLo}, // [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH + {0xBA38, 0xBA38, prH2, gcLo}, // HANGUL SYLLABLE MEO + {0xBA39, 0xBA53, prH3, gcLo}, // [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH + {0xBA54, 0xBA54, prH2, gcLo}, // HANGUL SYLLABLE ME + {0xBA55, 0xBA6F, prH3, gcLo}, // [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH + {0xBA70, 0xBA70, prH2, gcLo}, // HANGUL SYLLABLE MYEO + {0xBA71, 0xBA8B, prH3, gcLo}, // [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH + {0xBA8C, 0xBA8C, prH2, gcLo}, // HANGUL SYLLABLE MYE + {0xBA8D, 0xBAA7, prH3, gcLo}, // [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH + {0xBAA8, 0xBAA8, prH2, gcLo}, // HANGUL SYLLABLE MO + {0xBAA9, 0xBAC3, prH3, gcLo}, // [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH + {0xBAC4, 0xBAC4, prH2, gcLo}, // HANGUL SYLLABLE MWA + {0xBAC5, 0xBADF, prH3, gcLo}, // [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH + {0xBAE0, 0xBAE0, prH2, gcLo}, // HANGUL SYLLABLE MWAE + {0xBAE1, 0xBAFB, prH3, gcLo}, // [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH + {0xBAFC, 0xBAFC, prH2, gcLo}, // HANGUL SYLLABLE MOE + {0xBAFD, 0xBB17, prH3, gcLo}, // [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH + {0xBB18, 0xBB18, prH2, gcLo}, // HANGUL SYLLABLE MYO + {0xBB19, 0xBB33, prH3, gcLo}, // [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH + {0xBB34, 0xBB34, prH2, gcLo}, // HANGUL SYLLABLE MU + {0xBB35, 0xBB4F, prH3, gcLo}, // [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH + {0xBB50, 0xBB50, prH2, gcLo}, // HANGUL SYLLABLE MWEO + {0xBB51, 0xBB6B, prH3, gcLo}, // [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH + {0xBB6C, 0xBB6C, prH2, gcLo}, // HANGUL SYLLABLE MWE + {0xBB6D, 0xBB87, prH3, gcLo}, // [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH + {0xBB88, 0xBB88, prH2, gcLo}, // HANGUL SYLLABLE MWI + {0xBB89, 0xBBA3, prH3, gcLo}, // [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH + {0xBBA4, 0xBBA4, prH2, gcLo}, // HANGUL SYLLABLE MYU + {0xBBA5, 0xBBBF, prH3, gcLo}, // [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH + {0xBBC0, 0xBBC0, prH2, gcLo}, // HANGUL SYLLABLE MEU + {0xBBC1, 0xBBDB, prH3, gcLo}, // [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH + {0xBBDC, 0xBBDC, prH2, gcLo}, // HANGUL SYLLABLE MYI + {0xBBDD, 0xBBF7, prH3, gcLo}, // [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH + {0xBBF8, 0xBBF8, prH2, gcLo}, // HANGUL SYLLABLE MI + {0xBBF9, 0xBC13, prH3, gcLo}, // [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH + {0xBC14, 0xBC14, prH2, gcLo}, // HANGUL SYLLABLE BA + {0xBC15, 0xBC2F, prH3, gcLo}, // [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH + {0xBC30, 0xBC30, prH2, gcLo}, // HANGUL SYLLABLE BAE + {0xBC31, 0xBC4B, prH3, gcLo}, // [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH + {0xBC4C, 0xBC4C, prH2, gcLo}, // HANGUL SYLLABLE BYA + {0xBC4D, 0xBC67, prH3, gcLo}, // [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH + {0xBC68, 0xBC68, prH2, gcLo}, // HANGUL SYLLABLE BYAE + {0xBC69, 0xBC83, prH3, gcLo}, // [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH + {0xBC84, 0xBC84, prH2, gcLo}, // HANGUL SYLLABLE BEO + {0xBC85, 0xBC9F, prH3, gcLo}, // [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH + {0xBCA0, 0xBCA0, prH2, gcLo}, // HANGUL SYLLABLE BE + {0xBCA1, 0xBCBB, prH3, gcLo}, // [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH + {0xBCBC, 0xBCBC, prH2, gcLo}, // HANGUL SYLLABLE BYEO + {0xBCBD, 0xBCD7, prH3, gcLo}, // [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH + {0xBCD8, 0xBCD8, prH2, gcLo}, // HANGUL SYLLABLE BYE + {0xBCD9, 0xBCF3, prH3, gcLo}, // [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH + {0xBCF4, 0xBCF4, prH2, gcLo}, // HANGUL SYLLABLE BO + {0xBCF5, 0xBD0F, prH3, gcLo}, // [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH + {0xBD10, 0xBD10, prH2, gcLo}, // HANGUL SYLLABLE BWA + {0xBD11, 0xBD2B, prH3, gcLo}, // [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH + {0xBD2C, 0xBD2C, prH2, gcLo}, // HANGUL SYLLABLE BWAE + {0xBD2D, 0xBD47, prH3, gcLo}, // [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH + {0xBD48, 0xBD48, prH2, gcLo}, // HANGUL SYLLABLE BOE + {0xBD49, 0xBD63, prH3, gcLo}, // [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH + {0xBD64, 0xBD64, prH2, gcLo}, // HANGUL SYLLABLE BYO + {0xBD65, 0xBD7F, prH3, gcLo}, // [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH + {0xBD80, 0xBD80, prH2, gcLo}, // HANGUL SYLLABLE BU + {0xBD81, 0xBD9B, prH3, gcLo}, // [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH + {0xBD9C, 0xBD9C, prH2, gcLo}, // HANGUL SYLLABLE BWEO + {0xBD9D, 0xBDB7, prH3, gcLo}, // [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH + {0xBDB8, 0xBDB8, prH2, gcLo}, // HANGUL SYLLABLE BWE + {0xBDB9, 0xBDD3, prH3, gcLo}, // [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH + {0xBDD4, 0xBDD4, prH2, gcLo}, // HANGUL SYLLABLE BWI + {0xBDD5, 0xBDEF, prH3, gcLo}, // [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH + {0xBDF0, 0xBDF0, prH2, gcLo}, // HANGUL SYLLABLE BYU + {0xBDF1, 0xBE0B, prH3, gcLo}, // [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH + {0xBE0C, 0xBE0C, prH2, gcLo}, // HANGUL SYLLABLE BEU + {0xBE0D, 0xBE27, prH3, gcLo}, // [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH + {0xBE28, 0xBE28, prH2, gcLo}, // HANGUL SYLLABLE BYI + {0xBE29, 0xBE43, prH3, gcLo}, // [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH + {0xBE44, 0xBE44, prH2, gcLo}, // HANGUL SYLLABLE BI + {0xBE45, 0xBE5F, prH3, gcLo}, // [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH + {0xBE60, 0xBE60, prH2, gcLo}, // HANGUL SYLLABLE BBA + {0xBE61, 0xBE7B, prH3, gcLo}, // [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH + {0xBE7C, 0xBE7C, prH2, gcLo}, // HANGUL SYLLABLE BBAE + {0xBE7D, 0xBE97, prH3, gcLo}, // [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH + {0xBE98, 0xBE98, prH2, gcLo}, // HANGUL SYLLABLE BBYA + {0xBE99, 0xBEB3, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH + {0xBEB4, 0xBEB4, prH2, gcLo}, // HANGUL SYLLABLE BBYAE + {0xBEB5, 0xBECF, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH + {0xBED0, 0xBED0, prH2, gcLo}, // HANGUL SYLLABLE BBEO + {0xBED1, 0xBEEB, prH3, gcLo}, // [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH + {0xBEEC, 0xBEEC, prH2, gcLo}, // HANGUL SYLLABLE BBE + {0xBEED, 0xBF07, prH3, gcLo}, // [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH + {0xBF08, 0xBF08, prH2, gcLo}, // HANGUL SYLLABLE BBYEO + {0xBF09, 0xBF23, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH + {0xBF24, 0xBF24, prH2, gcLo}, // HANGUL SYLLABLE BBYE + {0xBF25, 0xBF3F, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH + {0xBF40, 0xBF40, prH2, gcLo}, // HANGUL SYLLABLE BBO + {0xBF41, 0xBF5B, prH3, gcLo}, // [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH + {0xBF5C, 0xBF5C, prH2, gcLo}, // HANGUL SYLLABLE BBWA + {0xBF5D, 0xBF77, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH + {0xBF78, 0xBF78, prH2, gcLo}, // HANGUL SYLLABLE BBWAE + {0xBF79, 0xBF93, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH + {0xBF94, 0xBF94, prH2, gcLo}, // HANGUL SYLLABLE BBOE + {0xBF95, 0xBFAF, prH3, gcLo}, // [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH + {0xBFB0, 0xBFB0, prH2, gcLo}, // HANGUL SYLLABLE BBYO + {0xBFB1, 0xBFCB, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH + {0xBFCC, 0xBFCC, prH2, gcLo}, // HANGUL SYLLABLE BBU + {0xBFCD, 0xBFE7, prH3, gcLo}, // [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH + {0xBFE8, 0xBFE8, prH2, gcLo}, // HANGUL SYLLABLE BBWEO + {0xBFE9, 0xC003, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH + {0xC004, 0xC004, prH2, gcLo}, // HANGUL SYLLABLE BBWE + {0xC005, 0xC01F, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH + {0xC020, 0xC020, prH2, gcLo}, // HANGUL SYLLABLE BBWI + {0xC021, 0xC03B, prH3, gcLo}, // [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH + {0xC03C, 0xC03C, prH2, gcLo}, // HANGUL SYLLABLE BBYU + {0xC03D, 0xC057, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH + {0xC058, 0xC058, prH2, gcLo}, // HANGUL SYLLABLE BBEU + {0xC059, 0xC073, prH3, gcLo}, // [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH + {0xC074, 0xC074, prH2, gcLo}, // HANGUL SYLLABLE BBYI + {0xC075, 0xC08F, prH3, gcLo}, // [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH + {0xC090, 0xC090, prH2, gcLo}, // HANGUL SYLLABLE BBI + {0xC091, 0xC0AB, prH3, gcLo}, // [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH + {0xC0AC, 0xC0AC, prH2, gcLo}, // HANGUL SYLLABLE SA + {0xC0AD, 0xC0C7, prH3, gcLo}, // [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH + {0xC0C8, 0xC0C8, prH2, gcLo}, // HANGUL SYLLABLE SAE + {0xC0C9, 0xC0E3, prH3, gcLo}, // [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH + {0xC0E4, 0xC0E4, prH2, gcLo}, // HANGUL SYLLABLE SYA + {0xC0E5, 0xC0FF, prH3, gcLo}, // [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH + {0xC100, 0xC100, prH2, gcLo}, // HANGUL SYLLABLE SYAE + {0xC101, 0xC11B, prH3, gcLo}, // [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH + {0xC11C, 0xC11C, prH2, gcLo}, // HANGUL SYLLABLE SEO + {0xC11D, 0xC137, prH3, gcLo}, // [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH + {0xC138, 0xC138, prH2, gcLo}, // HANGUL SYLLABLE SE + {0xC139, 0xC153, prH3, gcLo}, // [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH + {0xC154, 0xC154, prH2, gcLo}, // HANGUL SYLLABLE SYEO + {0xC155, 0xC16F, prH3, gcLo}, // [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH + {0xC170, 0xC170, prH2, gcLo}, // HANGUL SYLLABLE SYE + {0xC171, 0xC18B, prH3, gcLo}, // [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH + {0xC18C, 0xC18C, prH2, gcLo}, // HANGUL SYLLABLE SO + {0xC18D, 0xC1A7, prH3, gcLo}, // [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH + {0xC1A8, 0xC1A8, prH2, gcLo}, // HANGUL SYLLABLE SWA + {0xC1A9, 0xC1C3, prH3, gcLo}, // [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH + {0xC1C4, 0xC1C4, prH2, gcLo}, // HANGUL SYLLABLE SWAE + {0xC1C5, 0xC1DF, prH3, gcLo}, // [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH + {0xC1E0, 0xC1E0, prH2, gcLo}, // HANGUL SYLLABLE SOE + {0xC1E1, 0xC1FB, prH3, gcLo}, // [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH + {0xC1FC, 0xC1FC, prH2, gcLo}, // HANGUL SYLLABLE SYO + {0xC1FD, 0xC217, prH3, gcLo}, // [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH + {0xC218, 0xC218, prH2, gcLo}, // HANGUL SYLLABLE SU + {0xC219, 0xC233, prH3, gcLo}, // [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH + {0xC234, 0xC234, prH2, gcLo}, // HANGUL SYLLABLE SWEO + {0xC235, 0xC24F, prH3, gcLo}, // [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH + {0xC250, 0xC250, prH2, gcLo}, // HANGUL SYLLABLE SWE + {0xC251, 0xC26B, prH3, gcLo}, // [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH + {0xC26C, 0xC26C, prH2, gcLo}, // HANGUL SYLLABLE SWI + {0xC26D, 0xC287, prH3, gcLo}, // [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH + {0xC288, 0xC288, prH2, gcLo}, // HANGUL SYLLABLE SYU + {0xC289, 0xC2A3, prH3, gcLo}, // [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH + {0xC2A4, 0xC2A4, prH2, gcLo}, // HANGUL SYLLABLE SEU + {0xC2A5, 0xC2BF, prH3, gcLo}, // [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH + {0xC2C0, 0xC2C0, prH2, gcLo}, // HANGUL SYLLABLE SYI + {0xC2C1, 0xC2DB, prH3, gcLo}, // [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH + {0xC2DC, 0xC2DC, prH2, gcLo}, // HANGUL SYLLABLE SI + {0xC2DD, 0xC2F7, prH3, gcLo}, // [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH + {0xC2F8, 0xC2F8, prH2, gcLo}, // HANGUL SYLLABLE SSA + {0xC2F9, 0xC313, prH3, gcLo}, // [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH + {0xC314, 0xC314, prH2, gcLo}, // HANGUL SYLLABLE SSAE + {0xC315, 0xC32F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH + {0xC330, 0xC330, prH2, gcLo}, // HANGUL SYLLABLE SSYA + {0xC331, 0xC34B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH + {0xC34C, 0xC34C, prH2, gcLo}, // HANGUL SYLLABLE SSYAE + {0xC34D, 0xC367, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH + {0xC368, 0xC368, prH2, gcLo}, // HANGUL SYLLABLE SSEO + {0xC369, 0xC383, prH3, gcLo}, // [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH + {0xC384, 0xC384, prH2, gcLo}, // HANGUL SYLLABLE SSE + {0xC385, 0xC39F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH + {0xC3A0, 0xC3A0, prH2, gcLo}, // HANGUL SYLLABLE SSYEO + {0xC3A1, 0xC3BB, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH + {0xC3BC, 0xC3BC, prH2, gcLo}, // HANGUL SYLLABLE SSYE + {0xC3BD, 0xC3D7, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH + {0xC3D8, 0xC3D8, prH2, gcLo}, // HANGUL SYLLABLE SSO + {0xC3D9, 0xC3F3, prH3, gcLo}, // [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH + {0xC3F4, 0xC3F4, prH2, gcLo}, // HANGUL SYLLABLE SSWA + {0xC3F5, 0xC40F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH + {0xC410, 0xC410, prH2, gcLo}, // HANGUL SYLLABLE SSWAE + {0xC411, 0xC42B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH + {0xC42C, 0xC42C, prH2, gcLo}, // HANGUL SYLLABLE SSOE + {0xC42D, 0xC447, prH3, gcLo}, // [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH + {0xC448, 0xC448, prH2, gcLo}, // HANGUL SYLLABLE SSYO + {0xC449, 0xC463, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH + {0xC464, 0xC464, prH2, gcLo}, // HANGUL SYLLABLE SSU + {0xC465, 0xC47F, prH3, gcLo}, // [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH + {0xC480, 0xC480, prH2, gcLo}, // HANGUL SYLLABLE SSWEO + {0xC481, 0xC49B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH + {0xC49C, 0xC49C, prH2, gcLo}, // HANGUL SYLLABLE SSWE + {0xC49D, 0xC4B7, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH + {0xC4B8, 0xC4B8, prH2, gcLo}, // HANGUL SYLLABLE SSWI + {0xC4B9, 0xC4D3, prH3, gcLo}, // [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH + {0xC4D4, 0xC4D4, prH2, gcLo}, // HANGUL SYLLABLE SSYU + {0xC4D5, 0xC4EF, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH + {0xC4F0, 0xC4F0, prH2, gcLo}, // HANGUL SYLLABLE SSEU + {0xC4F1, 0xC50B, prH3, gcLo}, // [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH + {0xC50C, 0xC50C, prH2, gcLo}, // HANGUL SYLLABLE SSYI + {0xC50D, 0xC527, prH3, gcLo}, // [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH + {0xC528, 0xC528, prH2, gcLo}, // HANGUL SYLLABLE SSI + {0xC529, 0xC543, prH3, gcLo}, // [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH + {0xC544, 0xC544, prH2, gcLo}, // HANGUL SYLLABLE A + {0xC545, 0xC55F, prH3, gcLo}, // [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH + {0xC560, 0xC560, prH2, gcLo}, // HANGUL SYLLABLE AE + {0xC561, 0xC57B, prH3, gcLo}, // [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH + {0xC57C, 0xC57C, prH2, gcLo}, // HANGUL SYLLABLE YA + {0xC57D, 0xC597, prH3, gcLo}, // [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH + {0xC598, 0xC598, prH2, gcLo}, // HANGUL SYLLABLE YAE + {0xC599, 0xC5B3, prH3, gcLo}, // [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH + {0xC5B4, 0xC5B4, prH2, gcLo}, // HANGUL SYLLABLE EO + {0xC5B5, 0xC5CF, prH3, gcLo}, // [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH + {0xC5D0, 0xC5D0, prH2, gcLo}, // HANGUL SYLLABLE E + {0xC5D1, 0xC5EB, prH3, gcLo}, // [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH + {0xC5EC, 0xC5EC, prH2, gcLo}, // HANGUL SYLLABLE YEO + {0xC5ED, 0xC607, prH3, gcLo}, // [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH + {0xC608, 0xC608, prH2, gcLo}, // HANGUL SYLLABLE YE + {0xC609, 0xC623, prH3, gcLo}, // [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH + {0xC624, 0xC624, prH2, gcLo}, // HANGUL SYLLABLE O + {0xC625, 0xC63F, prH3, gcLo}, // [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH + {0xC640, 0xC640, prH2, gcLo}, // HANGUL SYLLABLE WA + {0xC641, 0xC65B, prH3, gcLo}, // [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH + {0xC65C, 0xC65C, prH2, gcLo}, // HANGUL SYLLABLE WAE + {0xC65D, 0xC677, prH3, gcLo}, // [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH + {0xC678, 0xC678, prH2, gcLo}, // HANGUL SYLLABLE OE + {0xC679, 0xC693, prH3, gcLo}, // [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH + {0xC694, 0xC694, prH2, gcLo}, // HANGUL SYLLABLE YO + {0xC695, 0xC6AF, prH3, gcLo}, // [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH + {0xC6B0, 0xC6B0, prH2, gcLo}, // HANGUL SYLLABLE U + {0xC6B1, 0xC6CB, prH3, gcLo}, // [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH + {0xC6CC, 0xC6CC, prH2, gcLo}, // HANGUL SYLLABLE WEO + {0xC6CD, 0xC6E7, prH3, gcLo}, // [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH + {0xC6E8, 0xC6E8, prH2, gcLo}, // HANGUL SYLLABLE WE + {0xC6E9, 0xC703, prH3, gcLo}, // [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH + {0xC704, 0xC704, prH2, gcLo}, // HANGUL SYLLABLE WI + {0xC705, 0xC71F, prH3, gcLo}, // [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH + {0xC720, 0xC720, prH2, gcLo}, // HANGUL SYLLABLE YU + {0xC721, 0xC73B, prH3, gcLo}, // [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH + {0xC73C, 0xC73C, prH2, gcLo}, // HANGUL SYLLABLE EU + {0xC73D, 0xC757, prH3, gcLo}, // [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH + {0xC758, 0xC758, prH2, gcLo}, // HANGUL SYLLABLE YI + {0xC759, 0xC773, prH3, gcLo}, // [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH + {0xC774, 0xC774, prH2, gcLo}, // HANGUL SYLLABLE I + {0xC775, 0xC78F, prH3, gcLo}, // [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH + {0xC790, 0xC790, prH2, gcLo}, // HANGUL SYLLABLE JA + {0xC791, 0xC7AB, prH3, gcLo}, // [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH + {0xC7AC, 0xC7AC, prH2, gcLo}, // HANGUL SYLLABLE JAE + {0xC7AD, 0xC7C7, prH3, gcLo}, // [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH + {0xC7C8, 0xC7C8, prH2, gcLo}, // HANGUL SYLLABLE JYA + {0xC7C9, 0xC7E3, prH3, gcLo}, // [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH + {0xC7E4, 0xC7E4, prH2, gcLo}, // HANGUL SYLLABLE JYAE + {0xC7E5, 0xC7FF, prH3, gcLo}, // [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH + {0xC800, 0xC800, prH2, gcLo}, // HANGUL SYLLABLE JEO + {0xC801, 0xC81B, prH3, gcLo}, // [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH + {0xC81C, 0xC81C, prH2, gcLo}, // HANGUL SYLLABLE JE + {0xC81D, 0xC837, prH3, gcLo}, // [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH + {0xC838, 0xC838, prH2, gcLo}, // HANGUL SYLLABLE JYEO + {0xC839, 0xC853, prH3, gcLo}, // [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH + {0xC854, 0xC854, prH2, gcLo}, // HANGUL SYLLABLE JYE + {0xC855, 0xC86F, prH3, gcLo}, // [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH + {0xC870, 0xC870, prH2, gcLo}, // HANGUL SYLLABLE JO + {0xC871, 0xC88B, prH3, gcLo}, // [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH + {0xC88C, 0xC88C, prH2, gcLo}, // HANGUL SYLLABLE JWA + {0xC88D, 0xC8A7, prH3, gcLo}, // [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH + {0xC8A8, 0xC8A8, prH2, gcLo}, // HANGUL SYLLABLE JWAE + {0xC8A9, 0xC8C3, prH3, gcLo}, // [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH + {0xC8C4, 0xC8C4, prH2, gcLo}, // HANGUL SYLLABLE JOE + {0xC8C5, 0xC8DF, prH3, gcLo}, // [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH + {0xC8E0, 0xC8E0, prH2, gcLo}, // HANGUL SYLLABLE JYO + {0xC8E1, 0xC8FB, prH3, gcLo}, // [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH + {0xC8FC, 0xC8FC, prH2, gcLo}, // HANGUL SYLLABLE JU + {0xC8FD, 0xC917, prH3, gcLo}, // [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH + {0xC918, 0xC918, prH2, gcLo}, // HANGUL SYLLABLE JWEO + {0xC919, 0xC933, prH3, gcLo}, // [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH + {0xC934, 0xC934, prH2, gcLo}, // HANGUL SYLLABLE JWE + {0xC935, 0xC94F, prH3, gcLo}, // [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH + {0xC950, 0xC950, prH2, gcLo}, // HANGUL SYLLABLE JWI + {0xC951, 0xC96B, prH3, gcLo}, // [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH + {0xC96C, 0xC96C, prH2, gcLo}, // HANGUL SYLLABLE JYU + {0xC96D, 0xC987, prH3, gcLo}, // [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH + {0xC988, 0xC988, prH2, gcLo}, // HANGUL SYLLABLE JEU + {0xC989, 0xC9A3, prH3, gcLo}, // [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH + {0xC9A4, 0xC9A4, prH2, gcLo}, // HANGUL SYLLABLE JYI + {0xC9A5, 0xC9BF, prH3, gcLo}, // [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH + {0xC9C0, 0xC9C0, prH2, gcLo}, // HANGUL SYLLABLE JI + {0xC9C1, 0xC9DB, prH3, gcLo}, // [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH + {0xC9DC, 0xC9DC, prH2, gcLo}, // HANGUL SYLLABLE JJA + {0xC9DD, 0xC9F7, prH3, gcLo}, // [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH + {0xC9F8, 0xC9F8, prH2, gcLo}, // HANGUL SYLLABLE JJAE + {0xC9F9, 0xCA13, prH3, gcLo}, // [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH + {0xCA14, 0xCA14, prH2, gcLo}, // HANGUL SYLLABLE JJYA + {0xCA15, 0xCA2F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH + {0xCA30, 0xCA30, prH2, gcLo}, // HANGUL SYLLABLE JJYAE + {0xCA31, 0xCA4B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH + {0xCA4C, 0xCA4C, prH2, gcLo}, // HANGUL SYLLABLE JJEO + {0xCA4D, 0xCA67, prH3, gcLo}, // [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH + {0xCA68, 0xCA68, prH2, gcLo}, // HANGUL SYLLABLE JJE + {0xCA69, 0xCA83, prH3, gcLo}, // [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH + {0xCA84, 0xCA84, prH2, gcLo}, // HANGUL SYLLABLE JJYEO + {0xCA85, 0xCA9F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH + {0xCAA0, 0xCAA0, prH2, gcLo}, // HANGUL SYLLABLE JJYE + {0xCAA1, 0xCABB, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH + {0xCABC, 0xCABC, prH2, gcLo}, // HANGUL SYLLABLE JJO + {0xCABD, 0xCAD7, prH3, gcLo}, // [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH + {0xCAD8, 0xCAD8, prH2, gcLo}, // HANGUL SYLLABLE JJWA + {0xCAD9, 0xCAF3, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH + {0xCAF4, 0xCAF4, prH2, gcLo}, // HANGUL SYLLABLE JJWAE + {0xCAF5, 0xCB0F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH + {0xCB10, 0xCB10, prH2, gcLo}, // HANGUL SYLLABLE JJOE + {0xCB11, 0xCB2B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH + {0xCB2C, 0xCB2C, prH2, gcLo}, // HANGUL SYLLABLE JJYO + {0xCB2D, 0xCB47, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH + {0xCB48, 0xCB48, prH2, gcLo}, // HANGUL SYLLABLE JJU + {0xCB49, 0xCB63, prH3, gcLo}, // [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH + {0xCB64, 0xCB64, prH2, gcLo}, // HANGUL SYLLABLE JJWEO + {0xCB65, 0xCB7F, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH + {0xCB80, 0xCB80, prH2, gcLo}, // HANGUL SYLLABLE JJWE + {0xCB81, 0xCB9B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH + {0xCB9C, 0xCB9C, prH2, gcLo}, // HANGUL SYLLABLE JJWI + {0xCB9D, 0xCBB7, prH3, gcLo}, // [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH + {0xCBB8, 0xCBB8, prH2, gcLo}, // HANGUL SYLLABLE JJYU + {0xCBB9, 0xCBD3, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH + {0xCBD4, 0xCBD4, prH2, gcLo}, // HANGUL SYLLABLE JJEU + {0xCBD5, 0xCBEF, prH3, gcLo}, // [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH + {0xCBF0, 0xCBF0, prH2, gcLo}, // HANGUL SYLLABLE JJYI + {0xCBF1, 0xCC0B, prH3, gcLo}, // [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH + {0xCC0C, 0xCC0C, prH2, gcLo}, // HANGUL SYLLABLE JJI + {0xCC0D, 0xCC27, prH3, gcLo}, // [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH + {0xCC28, 0xCC28, prH2, gcLo}, // HANGUL SYLLABLE CA + {0xCC29, 0xCC43, prH3, gcLo}, // [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH + {0xCC44, 0xCC44, prH2, gcLo}, // HANGUL SYLLABLE CAE + {0xCC45, 0xCC5F, prH3, gcLo}, // [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH + {0xCC60, 0xCC60, prH2, gcLo}, // HANGUL SYLLABLE CYA + {0xCC61, 0xCC7B, prH3, gcLo}, // [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH + {0xCC7C, 0xCC7C, prH2, gcLo}, // HANGUL SYLLABLE CYAE + {0xCC7D, 0xCC97, prH3, gcLo}, // [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH + {0xCC98, 0xCC98, prH2, gcLo}, // HANGUL SYLLABLE CEO + {0xCC99, 0xCCB3, prH3, gcLo}, // [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH + {0xCCB4, 0xCCB4, prH2, gcLo}, // HANGUL SYLLABLE CE + {0xCCB5, 0xCCCF, prH3, gcLo}, // [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH + {0xCCD0, 0xCCD0, prH2, gcLo}, // HANGUL SYLLABLE CYEO + {0xCCD1, 0xCCEB, prH3, gcLo}, // [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH + {0xCCEC, 0xCCEC, prH2, gcLo}, // HANGUL SYLLABLE CYE + {0xCCED, 0xCD07, prH3, gcLo}, // [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH + {0xCD08, 0xCD08, prH2, gcLo}, // HANGUL SYLLABLE CO + {0xCD09, 0xCD23, prH3, gcLo}, // [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH + {0xCD24, 0xCD24, prH2, gcLo}, // HANGUL SYLLABLE CWA + {0xCD25, 0xCD3F, prH3, gcLo}, // [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH + {0xCD40, 0xCD40, prH2, gcLo}, // HANGUL SYLLABLE CWAE + {0xCD41, 0xCD5B, prH3, gcLo}, // [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH + {0xCD5C, 0xCD5C, prH2, gcLo}, // HANGUL SYLLABLE COE + {0xCD5D, 0xCD77, prH3, gcLo}, // [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH + {0xCD78, 0xCD78, prH2, gcLo}, // HANGUL SYLLABLE CYO + {0xCD79, 0xCD93, prH3, gcLo}, // [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH + {0xCD94, 0xCD94, prH2, gcLo}, // HANGUL SYLLABLE CU + {0xCD95, 0xCDAF, prH3, gcLo}, // [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH + {0xCDB0, 0xCDB0, prH2, gcLo}, // HANGUL SYLLABLE CWEO + {0xCDB1, 0xCDCB, prH3, gcLo}, // [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH + {0xCDCC, 0xCDCC, prH2, gcLo}, // HANGUL SYLLABLE CWE + {0xCDCD, 0xCDE7, prH3, gcLo}, // [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH + {0xCDE8, 0xCDE8, prH2, gcLo}, // HANGUL SYLLABLE CWI + {0xCDE9, 0xCE03, prH3, gcLo}, // [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH + {0xCE04, 0xCE04, prH2, gcLo}, // HANGUL SYLLABLE CYU + {0xCE05, 0xCE1F, prH3, gcLo}, // [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH + {0xCE20, 0xCE20, prH2, gcLo}, // HANGUL SYLLABLE CEU + {0xCE21, 0xCE3B, prH3, gcLo}, // [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH + {0xCE3C, 0xCE3C, prH2, gcLo}, // HANGUL SYLLABLE CYI + {0xCE3D, 0xCE57, prH3, gcLo}, // [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH + {0xCE58, 0xCE58, prH2, gcLo}, // HANGUL SYLLABLE CI + {0xCE59, 0xCE73, prH3, gcLo}, // [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH + {0xCE74, 0xCE74, prH2, gcLo}, // HANGUL SYLLABLE KA + {0xCE75, 0xCE8F, prH3, gcLo}, // [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH + {0xCE90, 0xCE90, prH2, gcLo}, // HANGUL SYLLABLE KAE + {0xCE91, 0xCEAB, prH3, gcLo}, // [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH + {0xCEAC, 0xCEAC, prH2, gcLo}, // HANGUL SYLLABLE KYA + {0xCEAD, 0xCEC7, prH3, gcLo}, // [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH + {0xCEC8, 0xCEC8, prH2, gcLo}, // HANGUL SYLLABLE KYAE + {0xCEC9, 0xCEE3, prH3, gcLo}, // [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH + {0xCEE4, 0xCEE4, prH2, gcLo}, // HANGUL SYLLABLE KEO + {0xCEE5, 0xCEFF, prH3, gcLo}, // [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH + {0xCF00, 0xCF00, prH2, gcLo}, // HANGUL SYLLABLE KE + {0xCF01, 0xCF1B, prH3, gcLo}, // [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH + {0xCF1C, 0xCF1C, prH2, gcLo}, // HANGUL SYLLABLE KYEO + {0xCF1D, 0xCF37, prH3, gcLo}, // [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH + {0xCF38, 0xCF38, prH2, gcLo}, // HANGUL SYLLABLE KYE + {0xCF39, 0xCF53, prH3, gcLo}, // [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH + {0xCF54, 0xCF54, prH2, gcLo}, // HANGUL SYLLABLE KO + {0xCF55, 0xCF6F, prH3, gcLo}, // [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH + {0xCF70, 0xCF70, prH2, gcLo}, // HANGUL SYLLABLE KWA + {0xCF71, 0xCF8B, prH3, gcLo}, // [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH + {0xCF8C, 0xCF8C, prH2, gcLo}, // HANGUL SYLLABLE KWAE + {0xCF8D, 0xCFA7, prH3, gcLo}, // [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH + {0xCFA8, 0xCFA8, prH2, gcLo}, // HANGUL SYLLABLE KOE + {0xCFA9, 0xCFC3, prH3, gcLo}, // [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH + {0xCFC4, 0xCFC4, prH2, gcLo}, // HANGUL SYLLABLE KYO + {0xCFC5, 0xCFDF, prH3, gcLo}, // [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH + {0xCFE0, 0xCFE0, prH2, gcLo}, // HANGUL SYLLABLE KU + {0xCFE1, 0xCFFB, prH3, gcLo}, // [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH + {0xCFFC, 0xCFFC, prH2, gcLo}, // HANGUL SYLLABLE KWEO + {0xCFFD, 0xD017, prH3, gcLo}, // [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH + {0xD018, 0xD018, prH2, gcLo}, // HANGUL SYLLABLE KWE + {0xD019, 0xD033, prH3, gcLo}, // [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH + {0xD034, 0xD034, prH2, gcLo}, // HANGUL SYLLABLE KWI + {0xD035, 0xD04F, prH3, gcLo}, // [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH + {0xD050, 0xD050, prH2, gcLo}, // HANGUL SYLLABLE KYU + {0xD051, 0xD06B, prH3, gcLo}, // [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH + {0xD06C, 0xD06C, prH2, gcLo}, // HANGUL SYLLABLE KEU + {0xD06D, 0xD087, prH3, gcLo}, // [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH + {0xD088, 0xD088, prH2, gcLo}, // HANGUL SYLLABLE KYI + {0xD089, 0xD0A3, prH3, gcLo}, // [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH + {0xD0A4, 0xD0A4, prH2, gcLo}, // HANGUL SYLLABLE KI + {0xD0A5, 0xD0BF, prH3, gcLo}, // [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH + {0xD0C0, 0xD0C0, prH2, gcLo}, // HANGUL SYLLABLE TA + {0xD0C1, 0xD0DB, prH3, gcLo}, // [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH + {0xD0DC, 0xD0DC, prH2, gcLo}, // HANGUL SYLLABLE TAE + {0xD0DD, 0xD0F7, prH3, gcLo}, // [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH + {0xD0F8, 0xD0F8, prH2, gcLo}, // HANGUL SYLLABLE TYA + {0xD0F9, 0xD113, prH3, gcLo}, // [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH + {0xD114, 0xD114, prH2, gcLo}, // HANGUL SYLLABLE TYAE + {0xD115, 0xD12F, prH3, gcLo}, // [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH + {0xD130, 0xD130, prH2, gcLo}, // HANGUL SYLLABLE TEO + {0xD131, 0xD14B, prH3, gcLo}, // [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH + {0xD14C, 0xD14C, prH2, gcLo}, // HANGUL SYLLABLE TE + {0xD14D, 0xD167, prH3, gcLo}, // [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH + {0xD168, 0xD168, prH2, gcLo}, // HANGUL SYLLABLE TYEO + {0xD169, 0xD183, prH3, gcLo}, // [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH + {0xD184, 0xD184, prH2, gcLo}, // HANGUL SYLLABLE TYE + {0xD185, 0xD19F, prH3, gcLo}, // [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH + {0xD1A0, 0xD1A0, prH2, gcLo}, // HANGUL SYLLABLE TO + {0xD1A1, 0xD1BB, prH3, gcLo}, // [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH + {0xD1BC, 0xD1BC, prH2, gcLo}, // HANGUL SYLLABLE TWA + {0xD1BD, 0xD1D7, prH3, gcLo}, // [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH + {0xD1D8, 0xD1D8, prH2, gcLo}, // HANGUL SYLLABLE TWAE + {0xD1D9, 0xD1F3, prH3, gcLo}, // [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH + {0xD1F4, 0xD1F4, prH2, gcLo}, // HANGUL SYLLABLE TOE + {0xD1F5, 0xD20F, prH3, gcLo}, // [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH + {0xD210, 0xD210, prH2, gcLo}, // HANGUL SYLLABLE TYO + {0xD211, 0xD22B, prH3, gcLo}, // [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH + {0xD22C, 0xD22C, prH2, gcLo}, // HANGUL SYLLABLE TU + {0xD22D, 0xD247, prH3, gcLo}, // [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH + {0xD248, 0xD248, prH2, gcLo}, // HANGUL SYLLABLE TWEO + {0xD249, 0xD263, prH3, gcLo}, // [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH + {0xD264, 0xD264, prH2, gcLo}, // HANGUL SYLLABLE TWE + {0xD265, 0xD27F, prH3, gcLo}, // [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH + {0xD280, 0xD280, prH2, gcLo}, // HANGUL SYLLABLE TWI + {0xD281, 0xD29B, prH3, gcLo}, // [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH + {0xD29C, 0xD29C, prH2, gcLo}, // HANGUL SYLLABLE TYU + {0xD29D, 0xD2B7, prH3, gcLo}, // [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH + {0xD2B8, 0xD2B8, prH2, gcLo}, // HANGUL SYLLABLE TEU + {0xD2B9, 0xD2D3, prH3, gcLo}, // [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH + {0xD2D4, 0xD2D4, prH2, gcLo}, // HANGUL SYLLABLE TYI + {0xD2D5, 0xD2EF, prH3, gcLo}, // [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH + {0xD2F0, 0xD2F0, prH2, gcLo}, // HANGUL SYLLABLE TI + {0xD2F1, 0xD30B, prH3, gcLo}, // [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH + {0xD30C, 0xD30C, prH2, gcLo}, // HANGUL SYLLABLE PA + {0xD30D, 0xD327, prH3, gcLo}, // [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH + {0xD328, 0xD328, prH2, gcLo}, // HANGUL SYLLABLE PAE + {0xD329, 0xD343, prH3, gcLo}, // [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH + {0xD344, 0xD344, prH2, gcLo}, // HANGUL SYLLABLE PYA + {0xD345, 0xD35F, prH3, gcLo}, // [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH + {0xD360, 0xD360, prH2, gcLo}, // HANGUL SYLLABLE PYAE + {0xD361, 0xD37B, prH3, gcLo}, // [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH + {0xD37C, 0xD37C, prH2, gcLo}, // HANGUL SYLLABLE PEO + {0xD37D, 0xD397, prH3, gcLo}, // [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH + {0xD398, 0xD398, prH2, gcLo}, // HANGUL SYLLABLE PE + {0xD399, 0xD3B3, prH3, gcLo}, // [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH + {0xD3B4, 0xD3B4, prH2, gcLo}, // HANGUL SYLLABLE PYEO + {0xD3B5, 0xD3CF, prH3, gcLo}, // [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH + {0xD3D0, 0xD3D0, prH2, gcLo}, // HANGUL SYLLABLE PYE + {0xD3D1, 0xD3EB, prH3, gcLo}, // [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH + {0xD3EC, 0xD3EC, prH2, gcLo}, // HANGUL SYLLABLE PO + {0xD3ED, 0xD407, prH3, gcLo}, // [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH + {0xD408, 0xD408, prH2, gcLo}, // HANGUL SYLLABLE PWA + {0xD409, 0xD423, prH3, gcLo}, // [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH + {0xD424, 0xD424, prH2, gcLo}, // HANGUL SYLLABLE PWAE + {0xD425, 0xD43F, prH3, gcLo}, // [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH + {0xD440, 0xD440, prH2, gcLo}, // HANGUL SYLLABLE POE + {0xD441, 0xD45B, prH3, gcLo}, // [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH + {0xD45C, 0xD45C, prH2, gcLo}, // HANGUL SYLLABLE PYO + {0xD45D, 0xD477, prH3, gcLo}, // [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH + {0xD478, 0xD478, prH2, gcLo}, // HANGUL SYLLABLE PU + {0xD479, 0xD493, prH3, gcLo}, // [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH + {0xD494, 0xD494, prH2, gcLo}, // HANGUL SYLLABLE PWEO + {0xD495, 0xD4AF, prH3, gcLo}, // [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH + {0xD4B0, 0xD4B0, prH2, gcLo}, // HANGUL SYLLABLE PWE + {0xD4B1, 0xD4CB, prH3, gcLo}, // [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH + {0xD4CC, 0xD4CC, prH2, gcLo}, // HANGUL SYLLABLE PWI + {0xD4CD, 0xD4E7, prH3, gcLo}, // [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH + {0xD4E8, 0xD4E8, prH2, gcLo}, // HANGUL SYLLABLE PYU + {0xD4E9, 0xD503, prH3, gcLo}, // [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH + {0xD504, 0xD504, prH2, gcLo}, // HANGUL SYLLABLE PEU + {0xD505, 0xD51F, prH3, gcLo}, // [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH + {0xD520, 0xD520, prH2, gcLo}, // HANGUL SYLLABLE PYI + {0xD521, 0xD53B, prH3, gcLo}, // [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH + {0xD53C, 0xD53C, prH2, gcLo}, // HANGUL SYLLABLE PI + {0xD53D, 0xD557, prH3, gcLo}, // [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH + {0xD558, 0xD558, prH2, gcLo}, // HANGUL SYLLABLE HA + {0xD559, 0xD573, prH3, gcLo}, // [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH + {0xD574, 0xD574, prH2, gcLo}, // HANGUL SYLLABLE HAE + {0xD575, 0xD58F, prH3, gcLo}, // [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH + {0xD590, 0xD590, prH2, gcLo}, // HANGUL SYLLABLE HYA + {0xD591, 0xD5AB, prH3, gcLo}, // [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH + {0xD5AC, 0xD5AC, prH2, gcLo}, // HANGUL SYLLABLE HYAE + {0xD5AD, 0xD5C7, prH3, gcLo}, // [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH + {0xD5C8, 0xD5C8, prH2, gcLo}, // HANGUL SYLLABLE HEO + {0xD5C9, 0xD5E3, prH3, gcLo}, // [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH + {0xD5E4, 0xD5E4, prH2, gcLo}, // HANGUL SYLLABLE HE + {0xD5E5, 0xD5FF, prH3, gcLo}, // [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH + {0xD600, 0xD600, prH2, gcLo}, // HANGUL SYLLABLE HYEO + {0xD601, 0xD61B, prH3, gcLo}, // [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH + {0xD61C, 0xD61C, prH2, gcLo}, // HANGUL SYLLABLE HYE + {0xD61D, 0xD637, prH3, gcLo}, // [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH + {0xD638, 0xD638, prH2, gcLo}, // HANGUL SYLLABLE HO + {0xD639, 0xD653, prH3, gcLo}, // [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH + {0xD654, 0xD654, prH2, gcLo}, // HANGUL SYLLABLE HWA + {0xD655, 0xD66F, prH3, gcLo}, // [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH + {0xD670, 0xD670, prH2, gcLo}, // HANGUL SYLLABLE HWAE + {0xD671, 0xD68B, prH3, gcLo}, // [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH + {0xD68C, 0xD68C, prH2, gcLo}, // HANGUL SYLLABLE HOE + {0xD68D, 0xD6A7, prH3, gcLo}, // [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH + {0xD6A8, 0xD6A8, prH2, gcLo}, // HANGUL SYLLABLE HYO + {0xD6A9, 0xD6C3, prH3, gcLo}, // [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH + {0xD6C4, 0xD6C4, prH2, gcLo}, // HANGUL SYLLABLE HU + {0xD6C5, 0xD6DF, prH3, gcLo}, // [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH + {0xD6E0, 0xD6E0, prH2, gcLo}, // HANGUL SYLLABLE HWEO + {0xD6E1, 0xD6FB, prH3, gcLo}, // [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH + {0xD6FC, 0xD6FC, prH2, gcLo}, // HANGUL SYLLABLE HWE + {0xD6FD, 0xD717, prH3, gcLo}, // [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH + {0xD718, 0xD718, prH2, gcLo}, // HANGUL SYLLABLE HWI + {0xD719, 0xD733, prH3, gcLo}, // [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH + {0xD734, 0xD734, prH2, gcLo}, // HANGUL SYLLABLE HYU + {0xD735, 0xD74F, prH3, gcLo}, // [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH + {0xD750, 0xD750, prH2, gcLo}, // HANGUL SYLLABLE HEU + {0xD751, 0xD76B, prH3, gcLo}, // [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH + {0xD76C, 0xD76C, prH2, gcLo}, // HANGUL SYLLABLE HYI + {0xD76D, 0xD787, prH3, gcLo}, // [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH + {0xD788, 0xD788, prH2, gcLo}, // HANGUL SYLLABLE HI + {0xD789, 0xD7A3, prH3, gcLo}, // [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH + {0xD7B0, 0xD7C6, prJV, gcLo}, // [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E + {0xD7CB, 0xD7FB, prJT, gcLo}, // [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH + {0xD800, 0xDB7F, prSG, gcCs}, // [896] .. + {0xDB80, 0xDBFF, prSG, gcCs}, // [128] .. + {0xDC00, 0xDFFF, prSG, gcCs}, // [1024] .. + {0xE000, 0xF8FF, prXX, gcCo}, // [6400] .. + {0xF900, 0xFA6D, prID, gcLo}, // [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D + {0xFA6E, 0xFA6F, prID, gcCn}, // [2] .. + {0xFA70, 0xFAD9, prID, gcLo}, // [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 + {0xFADA, 0xFAFF, prID, gcCn}, // [38] .. + {0xFB00, 0xFB06, prAL, gcLl}, // [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST + {0xFB13, 0xFB17, prAL, gcLl}, // [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH + {0xFB1D, 0xFB1D, prHL, gcLo}, // HEBREW LETTER YOD WITH HIRIQ + {0xFB1E, 0xFB1E, prCM, gcMn}, // HEBREW POINT JUDEO-SPANISH VARIKA + {0xFB1F, 0xFB28, prHL, gcLo}, // [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV + {0xFB29, 0xFB29, prAL, gcSm}, // HEBREW LETTER ALTERNATIVE PLUS SIGN + {0xFB2A, 0xFB36, prHL, gcLo}, // [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH + {0xFB38, 0xFB3C, prHL, gcLo}, // [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH + {0xFB3E, 0xFB3E, prHL, gcLo}, // HEBREW LETTER MEM WITH DAGESH + {0xFB40, 0xFB41, prHL, gcLo}, // [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH + {0xFB43, 0xFB44, prHL, gcLo}, // [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH + {0xFB46, 0xFB4F, prHL, gcLo}, // [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED + {0xFB50, 0xFBB1, prAL, gcLo}, // [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM + {0xFBB2, 0xFBC2, prAL, gcSk}, // [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE + {0xFBD3, 0xFD3D, prAL, gcLo}, // [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM + {0xFD3E, 0xFD3E, prCL, gcPe}, // ORNATE LEFT PARENTHESIS + {0xFD3F, 0xFD3F, prOP, gcPs}, // ORNATE RIGHT PARENTHESIS + {0xFD40, 0xFD4F, prAL, gcSo}, // [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH + {0xFD50, 0xFD8F, prAL, gcLo}, // [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM + {0xFD92, 0xFDC7, prAL, gcLo}, // [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM + {0xFDCF, 0xFDCF, prAL, gcSo}, // ARABIC LIGATURE SALAAMUHU ALAYNAA + {0xFDF0, 0xFDFB, prAL, gcLo}, // [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU + {0xFDFC, 0xFDFC, prPO, gcSc}, // RIAL SIGN + {0xFDFD, 0xFDFF, prAL, gcSo}, // [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL + {0xFE00, 0xFE0F, prCM, gcMn}, // [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 + {0xFE10, 0xFE10, prIS, gcPo}, // PRESENTATION FORM FOR VERTICAL COMMA + {0xFE11, 0xFE12, prCL, gcPo}, // [2] PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP + {0xFE13, 0xFE14, prIS, gcPo}, // [2] PRESENTATION FORM FOR VERTICAL COLON..PRESENTATION FORM FOR VERTICAL SEMICOLON + {0xFE15, 0xFE16, prEX, gcPo}, // [2] PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK..PRESENTATION FORM FOR VERTICAL QUESTION MARK + {0xFE17, 0xFE17, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET + {0xFE18, 0xFE18, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET + {0xFE19, 0xFE19, prIN, gcPo}, // PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS + {0xFE20, 0xFE2F, prCM, gcMn}, // [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF + {0xFE30, 0xFE30, prID, gcPo}, // PRESENTATION FORM FOR VERTICAL TWO DOT LEADER + {0xFE31, 0xFE32, prID, gcPd}, // [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH + {0xFE33, 0xFE34, prID, gcPc}, // [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE + {0xFE35, 0xFE35, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS + {0xFE36, 0xFE36, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS + {0xFE37, 0xFE37, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET + {0xFE38, 0xFE38, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET + {0xFE39, 0xFE39, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET + {0xFE3A, 0xFE3A, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET + {0xFE3B, 0xFE3B, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET + {0xFE3C, 0xFE3C, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET + {0xFE3D, 0xFE3D, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET + {0xFE3E, 0xFE3E, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET + {0xFE3F, 0xFE3F, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET + {0xFE40, 0xFE40, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET + {0xFE41, 0xFE41, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET + {0xFE42, 0xFE42, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET + {0xFE43, 0xFE43, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET + {0xFE44, 0xFE44, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET + {0xFE45, 0xFE46, prID, gcPo}, // [2] SESAME DOT..WHITE SESAME DOT + {0xFE47, 0xFE47, prOP, gcPs}, // PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET + {0xFE48, 0xFE48, prCL, gcPe}, // PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET + {0xFE49, 0xFE4C, prID, gcPo}, // [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE + {0xFE4D, 0xFE4F, prID, gcPc}, // [3] DASHED LOW LINE..WAVY LOW LINE + {0xFE50, 0xFE50, prCL, gcPo}, // SMALL COMMA + {0xFE51, 0xFE51, prID, gcPo}, // SMALL IDEOGRAPHIC COMMA + {0xFE52, 0xFE52, prCL, gcPo}, // SMALL FULL STOP + {0xFE54, 0xFE55, prNS, gcPo}, // [2] SMALL SEMICOLON..SMALL COLON + {0xFE56, 0xFE57, prEX, gcPo}, // [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK + {0xFE58, 0xFE58, prID, gcPd}, // SMALL EM DASH + {0xFE59, 0xFE59, prOP, gcPs}, // SMALL LEFT PARENTHESIS + {0xFE5A, 0xFE5A, prCL, gcPe}, // SMALL RIGHT PARENTHESIS + {0xFE5B, 0xFE5B, prOP, gcPs}, // SMALL LEFT CURLY BRACKET + {0xFE5C, 0xFE5C, prCL, gcPe}, // SMALL RIGHT CURLY BRACKET + {0xFE5D, 0xFE5D, prOP, gcPs}, // SMALL LEFT TORTOISE SHELL BRACKET + {0xFE5E, 0xFE5E, prCL, gcPe}, // SMALL RIGHT TORTOISE SHELL BRACKET + {0xFE5F, 0xFE61, prID, gcPo}, // [3] SMALL NUMBER SIGN..SMALL ASTERISK + {0xFE62, 0xFE62, prID, gcSm}, // SMALL PLUS SIGN + {0xFE63, 0xFE63, prID, gcPd}, // SMALL HYPHEN-MINUS + {0xFE64, 0xFE66, prID, gcSm}, // [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN + {0xFE68, 0xFE68, prID, gcPo}, // SMALL REVERSE SOLIDUS + {0xFE69, 0xFE69, prPR, gcSc}, // SMALL DOLLAR SIGN + {0xFE6A, 0xFE6A, prPO, gcPo}, // SMALL PERCENT SIGN + {0xFE6B, 0xFE6B, prID, gcPo}, // SMALL COMMERCIAL AT + {0xFE70, 0xFE74, prAL, gcLo}, // [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM + {0xFE76, 0xFEFC, prAL, gcLo}, // [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM + {0xFEFF, 0xFEFF, prWJ, gcCf}, // ZERO WIDTH NO-BREAK SPACE + {0xFF01, 0xFF01, prEX, gcPo}, // FULLWIDTH EXCLAMATION MARK + {0xFF02, 0xFF03, prID, gcPo}, // [2] FULLWIDTH QUOTATION MARK..FULLWIDTH NUMBER SIGN + {0xFF04, 0xFF04, prPR, gcSc}, // FULLWIDTH DOLLAR SIGN + {0xFF05, 0xFF05, prPO, gcPo}, // FULLWIDTH PERCENT SIGN + {0xFF06, 0xFF07, prID, gcPo}, // [2] FULLWIDTH AMPERSAND..FULLWIDTH APOSTROPHE + {0xFF08, 0xFF08, prOP, gcPs}, // FULLWIDTH LEFT PARENTHESIS + {0xFF09, 0xFF09, prCL, gcPe}, // FULLWIDTH RIGHT PARENTHESIS + {0xFF0A, 0xFF0A, prID, gcPo}, // FULLWIDTH ASTERISK + {0xFF0B, 0xFF0B, prID, gcSm}, // FULLWIDTH PLUS SIGN + {0xFF0C, 0xFF0C, prCL, gcPo}, // FULLWIDTH COMMA + {0xFF0D, 0xFF0D, prID, gcPd}, // FULLWIDTH HYPHEN-MINUS + {0xFF0E, 0xFF0E, prCL, gcPo}, // FULLWIDTH FULL STOP + {0xFF0F, 0xFF0F, prID, gcPo}, // FULLWIDTH SOLIDUS + {0xFF10, 0xFF19, prID, gcNd}, // [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE + {0xFF1A, 0xFF1B, prNS, gcPo}, // [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON + {0xFF1C, 0xFF1E, prID, gcSm}, // [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN + {0xFF1F, 0xFF1F, prEX, gcPo}, // FULLWIDTH QUESTION MARK + {0xFF20, 0xFF20, prID, gcPo}, // FULLWIDTH COMMERCIAL AT + {0xFF21, 0xFF3A, prID, gcLu}, // [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z + {0xFF3B, 0xFF3B, prOP, gcPs}, // FULLWIDTH LEFT SQUARE BRACKET + {0xFF3C, 0xFF3C, prID, gcPo}, // FULLWIDTH REVERSE SOLIDUS + {0xFF3D, 0xFF3D, prCL, gcPe}, // FULLWIDTH RIGHT SQUARE BRACKET + {0xFF3E, 0xFF3E, prID, gcSk}, // FULLWIDTH CIRCUMFLEX ACCENT + {0xFF3F, 0xFF3F, prID, gcPc}, // FULLWIDTH LOW LINE + {0xFF40, 0xFF40, prID, gcSk}, // FULLWIDTH GRAVE ACCENT + {0xFF41, 0xFF5A, prID, gcLl}, // [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z + {0xFF5B, 0xFF5B, prOP, gcPs}, // FULLWIDTH LEFT CURLY BRACKET + {0xFF5C, 0xFF5C, prID, gcSm}, // FULLWIDTH VERTICAL LINE + {0xFF5D, 0xFF5D, prCL, gcPe}, // FULLWIDTH RIGHT CURLY BRACKET + {0xFF5E, 0xFF5E, prID, gcSm}, // FULLWIDTH TILDE + {0xFF5F, 0xFF5F, prOP, gcPs}, // FULLWIDTH LEFT WHITE PARENTHESIS + {0xFF60, 0xFF60, prCL, gcPe}, // FULLWIDTH RIGHT WHITE PARENTHESIS + {0xFF61, 0xFF61, prCL, gcPo}, // HALFWIDTH IDEOGRAPHIC FULL STOP + {0xFF62, 0xFF62, prOP, gcPs}, // HALFWIDTH LEFT CORNER BRACKET + {0xFF63, 0xFF63, prCL, gcPe}, // HALFWIDTH RIGHT CORNER BRACKET + {0xFF64, 0xFF64, prCL, gcPo}, // HALFWIDTH IDEOGRAPHIC COMMA + {0xFF65, 0xFF65, prNS, gcPo}, // HALFWIDTH KATAKANA MIDDLE DOT + {0xFF66, 0xFF66, prID, gcLo}, // HALFWIDTH KATAKANA LETTER WO + {0xFF67, 0xFF6F, prCJ, gcLo}, // [9] HALFWIDTH KATAKANA LETTER SMALL A..HALFWIDTH KATAKANA LETTER SMALL TU + {0xFF70, 0xFF70, prCJ, gcLm}, // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK + {0xFF71, 0xFF9D, prID, gcLo}, // [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N + {0xFF9E, 0xFF9F, prNS, gcLm}, // [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + {0xFFA0, 0xFFBE, prID, gcLo}, // [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH + {0xFFC2, 0xFFC7, prID, gcLo}, // [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E + {0xFFCA, 0xFFCF, prID, gcLo}, // [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE + {0xFFD2, 0xFFD7, prID, gcLo}, // [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU + {0xFFDA, 0xFFDC, prID, gcLo}, // [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I + {0xFFE0, 0xFFE0, prPO, gcSc}, // FULLWIDTH CENT SIGN + {0xFFE1, 0xFFE1, prPR, gcSc}, // FULLWIDTH POUND SIGN + {0xFFE2, 0xFFE2, prID, gcSm}, // FULLWIDTH NOT SIGN + {0xFFE3, 0xFFE3, prID, gcSk}, // FULLWIDTH MACRON + {0xFFE4, 0xFFE4, prID, gcSo}, // FULLWIDTH BROKEN BAR + {0xFFE5, 0xFFE6, prPR, gcSc}, // [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN + {0xFFE8, 0xFFE8, prAL, gcSo}, // HALFWIDTH FORMS LIGHT VERTICAL + {0xFFE9, 0xFFEC, prAL, gcSm}, // [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW + {0xFFED, 0xFFEE, prAL, gcSo}, // [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE + {0xFFF9, 0xFFFB, prCM, gcCf}, // [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR + {0xFFFC, 0xFFFC, prCB, gcSo}, // OBJECT REPLACEMENT CHARACTER + {0xFFFD, 0xFFFD, prAI, gcSo}, // REPLACEMENT CHARACTER + {0x10000, 0x1000B, prAL, gcLo}, // [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE + {0x1000D, 0x10026, prAL, gcLo}, // [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO + {0x10028, 0x1003A, prAL, gcLo}, // [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO + {0x1003C, 0x1003D, prAL, gcLo}, // [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE + {0x1003F, 0x1004D, prAL, gcLo}, // [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO + {0x10050, 0x1005D, prAL, gcLo}, // [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 + {0x10080, 0x100FA, prAL, gcLo}, // [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 + {0x10100, 0x10102, prBA, gcPo}, // [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK + {0x10107, 0x10133, prAL, gcNo}, // [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND + {0x10137, 0x1013F, prAL, gcSo}, // [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT + {0x10140, 0x10174, prAL, gcNl}, // [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS + {0x10175, 0x10178, prAL, gcNo}, // [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN + {0x10179, 0x10189, prAL, gcSo}, // [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN + {0x1018A, 0x1018B, prAL, gcNo}, // [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN + {0x1018C, 0x1018E, prAL, gcSo}, // [3] GREEK SINUSOID SIGN..NOMISMA SIGN + {0x10190, 0x1019C, prAL, gcSo}, // [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL + {0x101A0, 0x101A0, prAL, gcSo}, // GREEK SYMBOL TAU RHO + {0x101D0, 0x101FC, prAL, gcSo}, // [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND + {0x101FD, 0x101FD, prCM, gcMn}, // PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE + {0x10280, 0x1029C, prAL, gcLo}, // [29] LYCIAN LETTER A..LYCIAN LETTER X + {0x102A0, 0x102D0, prAL, gcLo}, // [49] CARIAN LETTER A..CARIAN LETTER UUU3 + {0x102E0, 0x102E0, prCM, gcMn}, // COPTIC EPACT THOUSANDS MARK + {0x102E1, 0x102FB, prAL, gcNo}, // [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED + {0x10300, 0x1031F, prAL, gcLo}, // [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS + {0x10320, 0x10323, prAL, gcNo}, // [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY + {0x1032D, 0x1032F, prAL, gcLo}, // [3] OLD ITALIC LETTER YE..OLD ITALIC LETTER SOUTHERN TSE + {0x10330, 0x10340, prAL, gcLo}, // [17] GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA + {0x10341, 0x10341, prAL, gcNl}, // GOTHIC LETTER NINETY + {0x10342, 0x10349, prAL, gcLo}, // [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL + {0x1034A, 0x1034A, prAL, gcNl}, // GOTHIC LETTER NINE HUNDRED + {0x10350, 0x10375, prAL, gcLo}, // [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA + {0x10376, 0x1037A, prCM, gcMn}, // [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII + {0x10380, 0x1039D, prAL, gcLo}, // [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU + {0x1039F, 0x1039F, prBA, gcPo}, // UGARITIC WORD DIVIDER + {0x103A0, 0x103C3, prAL, gcLo}, // [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA + {0x103C8, 0x103CF, prAL, gcLo}, // [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH + {0x103D0, 0x103D0, prBA, gcPo}, // OLD PERSIAN WORD DIVIDER + {0x103D1, 0x103D5, prAL, gcNl}, // [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED + {0x10400, 0x1044F, prAL, gcLC}, // [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW + {0x10450, 0x1047F, prAL, gcLo}, // [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW + {0x10480, 0x1049D, prAL, gcLo}, // [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO + {0x104A0, 0x104A9, prNU, gcNd}, // [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE + {0x104B0, 0x104D3, prAL, gcLu}, // [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA + {0x104D8, 0x104FB, prAL, gcLl}, // [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA + {0x10500, 0x10527, prAL, gcLo}, // [40] ELBASAN LETTER A..ELBASAN LETTER KHE + {0x10530, 0x10563, prAL, gcLo}, // [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW + {0x1056F, 0x1056F, prAL, gcPo}, // CAUCASIAN ALBANIAN CITATION MARK + {0x10570, 0x1057A, prAL, gcLu}, // [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA + {0x1057C, 0x1058A, prAL, gcLu}, // [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE + {0x1058C, 0x10592, prAL, gcLu}, // [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE + {0x10594, 0x10595, prAL, gcLu}, // [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE + {0x10597, 0x105A1, prAL, gcLl}, // [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA + {0x105A3, 0x105B1, prAL, gcLl}, // [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE + {0x105B3, 0x105B9, prAL, gcLl}, // [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE + {0x105BB, 0x105BC, prAL, gcLl}, // [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE + {0x10600, 0x10736, prAL, gcLo}, // [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 + {0x10740, 0x10755, prAL, gcLo}, // [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE + {0x10760, 0x10767, prAL, gcLo}, // [8] LINEAR A SIGN A800..LINEAR A SIGN A807 + {0x10780, 0x10785, prAL, gcLm}, // [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK + {0x10787, 0x107B0, prAL, gcLm}, // [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK + {0x107B2, 0x107BA, prAL, gcLm}, // [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL + {0x10800, 0x10805, prAL, gcLo}, // [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA + {0x10808, 0x10808, prAL, gcLo}, // CYPRIOT SYLLABLE JO + {0x1080A, 0x10835, prAL, gcLo}, // [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO + {0x10837, 0x10838, prAL, gcLo}, // [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE + {0x1083C, 0x1083C, prAL, gcLo}, // CYPRIOT SYLLABLE ZA + {0x1083F, 0x1083F, prAL, gcLo}, // CYPRIOT SYLLABLE ZO + {0x10840, 0x10855, prAL, gcLo}, // [22] IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW + {0x10857, 0x10857, prBA, gcPo}, // IMPERIAL ARAMAIC SECTION SIGN + {0x10858, 0x1085F, prAL, gcNo}, // [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND + {0x10860, 0x10876, prAL, gcLo}, // [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW + {0x10877, 0x10878, prAL, gcSo}, // [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON + {0x10879, 0x1087F, prAL, gcNo}, // [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY + {0x10880, 0x1089E, prAL, gcLo}, // [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW + {0x108A7, 0x108AF, prAL, gcNo}, // [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED + {0x108E0, 0x108F2, prAL, gcLo}, // [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH + {0x108F4, 0x108F5, prAL, gcLo}, // [2] HATRAN LETTER SHIN..HATRAN LETTER TAW + {0x108FB, 0x108FF, prAL, gcNo}, // [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED + {0x10900, 0x10915, prAL, gcLo}, // [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU + {0x10916, 0x1091B, prAL, gcNo}, // [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE + {0x1091F, 0x1091F, prBA, gcPo}, // PHOENICIAN WORD SEPARATOR + {0x10920, 0x10939, prAL, gcLo}, // [26] LYDIAN LETTER A..LYDIAN LETTER C + {0x1093F, 0x1093F, prAL, gcPo}, // LYDIAN TRIANGULAR MARK + {0x10980, 0x1099F, prAL, gcLo}, // [32] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2 + {0x109A0, 0x109B7, prAL, gcLo}, // [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA + {0x109BC, 0x109BD, prAL, gcNo}, // [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF + {0x109BE, 0x109BF, prAL, gcLo}, // [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN + {0x109C0, 0x109CF, prAL, gcNo}, // [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY + {0x109D2, 0x109FF, prAL, gcNo}, // [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS + {0x10A00, 0x10A00, prAL, gcLo}, // KHAROSHTHI LETTER A + {0x10A01, 0x10A03, prCM, gcMn}, // [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R + {0x10A05, 0x10A06, prCM, gcMn}, // [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O + {0x10A0C, 0x10A0F, prCM, gcMn}, // [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA + {0x10A10, 0x10A13, prAL, gcLo}, // [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA + {0x10A15, 0x10A17, prAL, gcLo}, // [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA + {0x10A19, 0x10A35, prAL, gcLo}, // [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA + {0x10A38, 0x10A3A, prCM, gcMn}, // [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW + {0x10A3F, 0x10A3F, prCM, gcMn}, // KHAROSHTHI VIRAMA + {0x10A40, 0x10A48, prAL, gcNo}, // [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF + {0x10A50, 0x10A57, prBA, gcPo}, // [8] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION DOUBLE DANDA + {0x10A58, 0x10A58, prAL, gcPo}, // KHAROSHTHI PUNCTUATION LINES + {0x10A60, 0x10A7C, prAL, gcLo}, // [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH + {0x10A7D, 0x10A7E, prAL, gcNo}, // [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY + {0x10A7F, 0x10A7F, prAL, gcPo}, // OLD SOUTH ARABIAN NUMERIC INDICATOR + {0x10A80, 0x10A9C, prAL, gcLo}, // [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH + {0x10A9D, 0x10A9F, prAL, gcNo}, // [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY + {0x10AC0, 0x10AC7, prAL, gcLo}, // [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW + {0x10AC8, 0x10AC8, prAL, gcSo}, // MANICHAEAN SIGN UD + {0x10AC9, 0x10AE4, prAL, gcLo}, // [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW + {0x10AE5, 0x10AE6, prCM, gcMn}, // [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW + {0x10AEB, 0x10AEF, prAL, gcNo}, // [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED + {0x10AF0, 0x10AF5, prBA, gcPo}, // [6] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION TWO DOTS + {0x10AF6, 0x10AF6, prIN, gcPo}, // MANICHAEAN PUNCTUATION LINE FILLER + {0x10B00, 0x10B35, prAL, gcLo}, // [54] AVESTAN LETTER A..AVESTAN LETTER HE + {0x10B39, 0x10B3F, prBA, gcPo}, // [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION + {0x10B40, 0x10B55, prAL, gcLo}, // [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW + {0x10B58, 0x10B5F, prAL, gcNo}, // [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND + {0x10B60, 0x10B72, prAL, gcLo}, // [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW + {0x10B78, 0x10B7F, prAL, gcNo}, // [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND + {0x10B80, 0x10B91, prAL, gcLo}, // [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW + {0x10B99, 0x10B9C, prAL, gcPo}, // [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT + {0x10BA9, 0x10BAF, prAL, gcNo}, // [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED + {0x10C00, 0x10C48, prAL, gcLo}, // [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH + {0x10C80, 0x10CB2, prAL, gcLu}, // [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US + {0x10CC0, 0x10CF2, prAL, gcLl}, // [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US + {0x10CFA, 0x10CFF, prAL, gcNo}, // [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND + {0x10D00, 0x10D23, prAL, gcLo}, // [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA + {0x10D24, 0x10D27, prCM, gcMn}, // [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI + {0x10D30, 0x10D39, prNU, gcNd}, // [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE + {0x10E60, 0x10E7E, prAL, gcNo}, // [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS + {0x10E80, 0x10EA9, prAL, gcLo}, // [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET + {0x10EAB, 0x10EAC, prCM, gcMn}, // [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK + {0x10EAD, 0x10EAD, prBA, gcPd}, // YEZIDI HYPHENATION MARK + {0x10EB0, 0x10EB1, prAL, gcLo}, // [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE + {0x10EFD, 0x10EFF, prCM, gcMn}, // [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA + {0x10F00, 0x10F1C, prAL, gcLo}, // [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL + {0x10F1D, 0x10F26, prAL, gcNo}, // [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF + {0x10F27, 0x10F27, prAL, gcLo}, // OLD SOGDIAN LIGATURE AYIN-DALETH + {0x10F30, 0x10F45, prAL, gcLo}, // [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN + {0x10F46, 0x10F50, prCM, gcMn}, // [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW + {0x10F51, 0x10F54, prAL, gcNo}, // [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED + {0x10F55, 0x10F59, prAL, gcPo}, // [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT + {0x10F70, 0x10F81, prAL, gcLo}, // [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH + {0x10F82, 0x10F85, prCM, gcMn}, // [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW + {0x10F86, 0x10F89, prAL, gcPo}, // [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS + {0x10FB0, 0x10FC4, prAL, gcLo}, // [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW + {0x10FC5, 0x10FCB, prAL, gcNo}, // [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED + {0x10FE0, 0x10FF6, prAL, gcLo}, // [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH + {0x11000, 0x11000, prCM, gcMc}, // BRAHMI SIGN CANDRABINDU + {0x11001, 0x11001, prCM, gcMn}, // BRAHMI SIGN ANUSVARA + {0x11002, 0x11002, prCM, gcMc}, // BRAHMI SIGN VISARGA + {0x11003, 0x11037, prAL, gcLo}, // [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA + {0x11038, 0x11046, prCM, gcMn}, // [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA + {0x11047, 0x11048, prBA, gcPo}, // [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA + {0x11049, 0x1104D, prAL, gcPo}, // [5] BRAHMI PUNCTUATION DOT..BRAHMI PUNCTUATION LOTUS + {0x11052, 0x11065, prAL, gcNo}, // [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND + {0x11066, 0x1106F, prNU, gcNd}, // [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE + {0x11070, 0x11070, prCM, gcMn}, // BRAHMI SIGN OLD TAMIL VIRAMA + {0x11071, 0x11072, prAL, gcLo}, // [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O + {0x11073, 0x11074, prCM, gcMn}, // [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O + {0x11075, 0x11075, prAL, gcLo}, // BRAHMI LETTER OLD TAMIL LLA + {0x1107F, 0x1107F, prCM, gcMn}, // BRAHMI NUMBER JOINER + {0x11080, 0x11081, prCM, gcMn}, // [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA + {0x11082, 0x11082, prCM, gcMc}, // KAITHI SIGN VISARGA + {0x11083, 0x110AF, prAL, gcLo}, // [45] KAITHI LETTER A..KAITHI LETTER HA + {0x110B0, 0x110B2, prCM, gcMc}, // [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II + {0x110B3, 0x110B6, prCM, gcMn}, // [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI + {0x110B7, 0x110B8, prCM, gcMc}, // [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU + {0x110B9, 0x110BA, prCM, gcMn}, // [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA + {0x110BB, 0x110BC, prAL, gcPo}, // [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN + {0x110BD, 0x110BD, prAL, gcCf}, // KAITHI NUMBER SIGN + {0x110BE, 0x110C1, prBA, gcPo}, // [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA + {0x110C2, 0x110C2, prCM, gcMn}, // KAITHI VOWEL SIGN VOCALIC R + {0x110CD, 0x110CD, prAL, gcCf}, // KAITHI NUMBER SIGN ABOVE + {0x110D0, 0x110E8, prAL, gcLo}, // [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE + {0x110F0, 0x110F9, prNU, gcNd}, // [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE + {0x11100, 0x11102, prCM, gcMn}, // [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA + {0x11103, 0x11126, prAL, gcLo}, // [36] CHAKMA LETTER AA..CHAKMA LETTER HAA + {0x11127, 0x1112B, prCM, gcMn}, // [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU + {0x1112C, 0x1112C, prCM, gcMc}, // CHAKMA VOWEL SIGN E + {0x1112D, 0x11134, prCM, gcMn}, // [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA + {0x11136, 0x1113F, prNU, gcNd}, // [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE + {0x11140, 0x11143, prBA, gcPo}, // [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK + {0x11144, 0x11144, prAL, gcLo}, // CHAKMA LETTER LHAA + {0x11145, 0x11146, prCM, gcMc}, // [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI + {0x11147, 0x11147, prAL, gcLo}, // CHAKMA LETTER VAA + {0x11150, 0x11172, prAL, gcLo}, // [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA + {0x11173, 0x11173, prCM, gcMn}, // MAHAJANI SIGN NUKTA + {0x11174, 0x11174, prAL, gcPo}, // MAHAJANI ABBREVIATION SIGN + {0x11175, 0x11175, prBB, gcPo}, // MAHAJANI SECTION MARK + {0x11176, 0x11176, prAL, gcLo}, // MAHAJANI LIGATURE SHRI + {0x11180, 0x11181, prCM, gcMn}, // [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA + {0x11182, 0x11182, prCM, gcMc}, // SHARADA SIGN VISARGA + {0x11183, 0x111B2, prAL, gcLo}, // [48] SHARADA LETTER A..SHARADA LETTER HA + {0x111B3, 0x111B5, prCM, gcMc}, // [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II + {0x111B6, 0x111BE, prCM, gcMn}, // [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O + {0x111BF, 0x111C0, prCM, gcMc}, // [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA + {0x111C1, 0x111C4, prAL, gcLo}, // [4] SHARADA SIGN AVAGRAHA..SHARADA OM + {0x111C5, 0x111C6, prBA, gcPo}, // [2] SHARADA DANDA..SHARADA DOUBLE DANDA + {0x111C7, 0x111C7, prAL, gcPo}, // SHARADA ABBREVIATION SIGN + {0x111C8, 0x111C8, prBA, gcPo}, // SHARADA SEPARATOR + {0x111C9, 0x111CC, prCM, gcMn}, // [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK + {0x111CD, 0x111CD, prAL, gcPo}, // SHARADA SUTRA MARK + {0x111CE, 0x111CE, prCM, gcMc}, // SHARADA VOWEL SIGN PRISHTHAMATRA E + {0x111CF, 0x111CF, prCM, gcMn}, // SHARADA SIGN INVERTED CANDRABINDU + {0x111D0, 0x111D9, prNU, gcNd}, // [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE + {0x111DA, 0x111DA, prAL, gcLo}, // SHARADA EKAM + {0x111DB, 0x111DB, prBB, gcPo}, // SHARADA SIGN SIDDHAM + {0x111DC, 0x111DC, prAL, gcLo}, // SHARADA HEADSTROKE + {0x111DD, 0x111DF, prBA, gcPo}, // [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2 + {0x111E1, 0x111F4, prAL, gcNo}, // [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND + {0x11200, 0x11211, prAL, gcLo}, // [18] KHOJKI LETTER A..KHOJKI LETTER JJA + {0x11213, 0x1122B, prAL, gcLo}, // [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA + {0x1122C, 0x1122E, prCM, gcMc}, // [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II + {0x1122F, 0x11231, prCM, gcMn}, // [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI + {0x11232, 0x11233, prCM, gcMc}, // [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU + {0x11234, 0x11234, prCM, gcMn}, // KHOJKI SIGN ANUSVARA + {0x11235, 0x11235, prCM, gcMc}, // KHOJKI SIGN VIRAMA + {0x11236, 0x11237, prCM, gcMn}, // [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA + {0x11238, 0x11239, prBA, gcPo}, // [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA + {0x1123A, 0x1123A, prAL, gcPo}, // KHOJKI WORD SEPARATOR + {0x1123B, 0x1123C, prBA, gcPo}, // [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK + {0x1123D, 0x1123D, prAL, gcPo}, // KHOJKI ABBREVIATION SIGN + {0x1123E, 0x1123E, prCM, gcMn}, // KHOJKI SIGN SUKUN + {0x1123F, 0x11240, prAL, gcLo}, // [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I + {0x11241, 0x11241, prCM, gcMn}, // KHOJKI VOWEL SIGN VOCALIC R + {0x11280, 0x11286, prAL, gcLo}, // [7] MULTANI LETTER A..MULTANI LETTER GA + {0x11288, 0x11288, prAL, gcLo}, // MULTANI LETTER GHA + {0x1128A, 0x1128D, prAL, gcLo}, // [4] MULTANI LETTER CA..MULTANI LETTER JJA + {0x1128F, 0x1129D, prAL, gcLo}, // [15] MULTANI LETTER NYA..MULTANI LETTER BA + {0x1129F, 0x112A8, prAL, gcLo}, // [10] MULTANI LETTER BHA..MULTANI LETTER RHA + {0x112A9, 0x112A9, prBA, gcPo}, // MULTANI SECTION MARK + {0x112B0, 0x112DE, prAL, gcLo}, // [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA + {0x112DF, 0x112DF, prCM, gcMn}, // KHUDAWADI SIGN ANUSVARA + {0x112E0, 0x112E2, prCM, gcMc}, // [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II + {0x112E3, 0x112EA, prCM, gcMn}, // [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA + {0x112F0, 0x112F9, prNU, gcNd}, // [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE + {0x11300, 0x11301, prCM, gcMn}, // [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU + {0x11302, 0x11303, prCM, gcMc}, // [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA + {0x11305, 0x1130C, prAL, gcLo}, // [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L + {0x1130F, 0x11310, prAL, gcLo}, // [2] GRANTHA LETTER EE..GRANTHA LETTER AI + {0x11313, 0x11328, prAL, gcLo}, // [22] GRANTHA LETTER OO..GRANTHA LETTER NA + {0x1132A, 0x11330, prAL, gcLo}, // [7] GRANTHA LETTER PA..GRANTHA LETTER RA + {0x11332, 0x11333, prAL, gcLo}, // [2] GRANTHA LETTER LA..GRANTHA LETTER LLA + {0x11335, 0x11339, prAL, gcLo}, // [5] GRANTHA LETTER VA..GRANTHA LETTER HA + {0x1133B, 0x1133C, prCM, gcMn}, // [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA + {0x1133D, 0x1133D, prAL, gcLo}, // GRANTHA SIGN AVAGRAHA + {0x1133E, 0x1133F, prCM, gcMc}, // [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I + {0x11340, 0x11340, prCM, gcMn}, // GRANTHA VOWEL SIGN II + {0x11341, 0x11344, prCM, gcMc}, // [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR + {0x11347, 0x11348, prCM, gcMc}, // [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI + {0x1134B, 0x1134D, prCM, gcMc}, // [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA + {0x11350, 0x11350, prAL, gcLo}, // GRANTHA OM + {0x11357, 0x11357, prCM, gcMc}, // GRANTHA AU LENGTH MARK + {0x1135D, 0x11361, prAL, gcLo}, // [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL + {0x11362, 0x11363, prCM, gcMc}, // [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL + {0x11366, 0x1136C, prCM, gcMn}, // [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX + {0x11370, 0x11374, prCM, gcMn}, // [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA + {0x11400, 0x11434, prAL, gcLo}, // [53] NEWA LETTER A..NEWA LETTER HA + {0x11435, 0x11437, prCM, gcMc}, // [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II + {0x11438, 0x1143F, prCM, gcMn}, // [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI + {0x11440, 0x11441, prCM, gcMc}, // [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU + {0x11442, 0x11444, prCM, gcMn}, // [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA + {0x11445, 0x11445, prCM, gcMc}, // NEWA SIGN VISARGA + {0x11446, 0x11446, prCM, gcMn}, // NEWA SIGN NUKTA + {0x11447, 0x1144A, prAL, gcLo}, // [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI + {0x1144B, 0x1144E, prBA, gcPo}, // [4] NEWA DANDA..NEWA GAP FILLER + {0x1144F, 0x1144F, prAL, gcPo}, // NEWA ABBREVIATION SIGN + {0x11450, 0x11459, prNU, gcNd}, // [10] NEWA DIGIT ZERO..NEWA DIGIT NINE + {0x1145A, 0x1145B, prBA, gcPo}, // [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK + {0x1145D, 0x1145D, prAL, gcPo}, // NEWA INSERTION SIGN + {0x1145E, 0x1145E, prCM, gcMn}, // NEWA SANDHI MARK + {0x1145F, 0x11461, prAL, gcLo}, // [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA + {0x11480, 0x114AF, prAL, gcLo}, // [48] TIRHUTA ANJI..TIRHUTA LETTER HA + {0x114B0, 0x114B2, prCM, gcMc}, // [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II + {0x114B3, 0x114B8, prCM, gcMn}, // [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL + {0x114B9, 0x114B9, prCM, gcMc}, // TIRHUTA VOWEL SIGN E + {0x114BA, 0x114BA, prCM, gcMn}, // TIRHUTA VOWEL SIGN SHORT E + {0x114BB, 0x114BE, prCM, gcMc}, // [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU + {0x114BF, 0x114C0, prCM, gcMn}, // [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA + {0x114C1, 0x114C1, prCM, gcMc}, // TIRHUTA SIGN VISARGA + {0x114C2, 0x114C3, prCM, gcMn}, // [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA + {0x114C4, 0x114C5, prAL, gcLo}, // [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG + {0x114C6, 0x114C6, prAL, gcPo}, // TIRHUTA ABBREVIATION SIGN + {0x114C7, 0x114C7, prAL, gcLo}, // TIRHUTA OM + {0x114D0, 0x114D9, prNU, gcNd}, // [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE + {0x11580, 0x115AE, prAL, gcLo}, // [47] SIDDHAM LETTER A..SIDDHAM LETTER HA + {0x115AF, 0x115B1, prCM, gcMc}, // [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II + {0x115B2, 0x115B5, prCM, gcMn}, // [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR + {0x115B8, 0x115BB, prCM, gcMc}, // [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU + {0x115BC, 0x115BD, prCM, gcMn}, // [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA + {0x115BE, 0x115BE, prCM, gcMc}, // SIDDHAM SIGN VISARGA + {0x115BF, 0x115C0, prCM, gcMn}, // [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA + {0x115C1, 0x115C1, prBB, gcPo}, // SIDDHAM SIGN SIDDHAM + {0x115C2, 0x115C3, prBA, gcPo}, // [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA + {0x115C4, 0x115C5, prEX, gcPo}, // [2] SIDDHAM SEPARATOR DOT..SIDDHAM SEPARATOR BAR + {0x115C6, 0x115C8, prAL, gcPo}, // [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3 + {0x115C9, 0x115D7, prBA, gcPo}, // [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES + {0x115D8, 0x115DB, prAL, gcLo}, // [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U + {0x115DC, 0x115DD, prCM, gcMn}, // [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU + {0x11600, 0x1162F, prAL, gcLo}, // [48] MODI LETTER A..MODI LETTER LLA + {0x11630, 0x11632, prCM, gcMc}, // [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II + {0x11633, 0x1163A, prCM, gcMn}, // [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI + {0x1163B, 0x1163C, prCM, gcMc}, // [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU + {0x1163D, 0x1163D, prCM, gcMn}, // MODI SIGN ANUSVARA + {0x1163E, 0x1163E, prCM, gcMc}, // MODI SIGN VISARGA + {0x1163F, 0x11640, prCM, gcMn}, // [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA + {0x11641, 0x11642, prBA, gcPo}, // [2] MODI DANDA..MODI DOUBLE DANDA + {0x11643, 0x11643, prAL, gcPo}, // MODI ABBREVIATION SIGN + {0x11644, 0x11644, prAL, gcLo}, // MODI SIGN HUVA + {0x11650, 0x11659, prNU, gcNd}, // [10] MODI DIGIT ZERO..MODI DIGIT NINE + {0x11660, 0x1166C, prBB, gcPo}, // [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT + {0x11680, 0x116AA, prAL, gcLo}, // [43] TAKRI LETTER A..TAKRI LETTER RRA + {0x116AB, 0x116AB, prCM, gcMn}, // TAKRI SIGN ANUSVARA + {0x116AC, 0x116AC, prCM, gcMc}, // TAKRI SIGN VISARGA + {0x116AD, 0x116AD, prCM, gcMn}, // TAKRI VOWEL SIGN AA + {0x116AE, 0x116AF, prCM, gcMc}, // [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II + {0x116B0, 0x116B5, prCM, gcMn}, // [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU + {0x116B6, 0x116B6, prCM, gcMc}, // TAKRI SIGN VIRAMA + {0x116B7, 0x116B7, prCM, gcMn}, // TAKRI SIGN NUKTA + {0x116B8, 0x116B8, prAL, gcLo}, // TAKRI LETTER ARCHAIC KHA + {0x116B9, 0x116B9, prAL, gcPo}, // TAKRI ABBREVIATION SIGN + {0x116C0, 0x116C9, prNU, gcNd}, // [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE + {0x11700, 0x1171A, prSA, gcLo}, // [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA + {0x1171D, 0x1171F, prSA, gcMn}, // [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA + {0x11720, 0x11721, prSA, gcMc}, // [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA + {0x11722, 0x11725, prSA, gcMn}, // [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU + {0x11726, 0x11726, prSA, gcMc}, // AHOM VOWEL SIGN E + {0x11727, 0x1172B, prSA, gcMn}, // [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER + {0x11730, 0x11739, prNU, gcNd}, // [10] AHOM DIGIT ZERO..AHOM DIGIT NINE + {0x1173A, 0x1173B, prSA, gcNo}, // [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY + {0x1173C, 0x1173E, prBA, gcPo}, // [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI + {0x1173F, 0x1173F, prSA, gcSo}, // AHOM SYMBOL VI + {0x11740, 0x11746, prSA, gcLo}, // [7] AHOM LETTER CA..AHOM LETTER LLA + {0x11800, 0x1182B, prAL, gcLo}, // [44] DOGRA LETTER A..DOGRA LETTER RRA + {0x1182C, 0x1182E, prCM, gcMc}, // [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II + {0x1182F, 0x11837, prCM, gcMn}, // [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA + {0x11838, 0x11838, prCM, gcMc}, // DOGRA SIGN VISARGA + {0x11839, 0x1183A, prCM, gcMn}, // [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA + {0x1183B, 0x1183B, prAL, gcPo}, // DOGRA ABBREVIATION SIGN + {0x118A0, 0x118DF, prAL, gcLC}, // [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO + {0x118E0, 0x118E9, prNU, gcNd}, // [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE + {0x118EA, 0x118F2, prAL, gcNo}, // [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY + {0x118FF, 0x118FF, prAL, gcLo}, // WARANG CITI OM + {0x11900, 0x11906, prAL, gcLo}, // [7] DIVES AKURU LETTER A..DIVES AKURU LETTER E + {0x11909, 0x11909, prAL, gcLo}, // DIVES AKURU LETTER O + {0x1190C, 0x11913, prAL, gcLo}, // [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA + {0x11915, 0x11916, prAL, gcLo}, // [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA + {0x11918, 0x1192F, prAL, gcLo}, // [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA + {0x11930, 0x11935, prCM, gcMc}, // [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E + {0x11937, 0x11938, prCM, gcMc}, // [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O + {0x1193B, 0x1193C, prCM, gcMn}, // [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU + {0x1193D, 0x1193D, prCM, gcMc}, // DIVES AKURU SIGN HALANTA + {0x1193E, 0x1193E, prCM, gcMn}, // DIVES AKURU VIRAMA + {0x1193F, 0x1193F, prAL, gcLo}, // DIVES AKURU PREFIXED NASAL SIGN + {0x11940, 0x11940, prCM, gcMc}, // DIVES AKURU MEDIAL YA + {0x11941, 0x11941, prAL, gcLo}, // DIVES AKURU INITIAL RA + {0x11942, 0x11942, prCM, gcMc}, // DIVES AKURU MEDIAL RA + {0x11943, 0x11943, prCM, gcMn}, // DIVES AKURU SIGN NUKTA + {0x11944, 0x11946, prBA, gcPo}, // [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK + {0x11950, 0x11959, prNU, gcNd}, // [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE + {0x119A0, 0x119A7, prAL, gcLo}, // [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR + {0x119AA, 0x119D0, prAL, gcLo}, // [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA + {0x119D1, 0x119D3, prCM, gcMc}, // [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II + {0x119D4, 0x119D7, prCM, gcMn}, // [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR + {0x119DA, 0x119DB, prCM, gcMn}, // [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI + {0x119DC, 0x119DF, prCM, gcMc}, // [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA + {0x119E0, 0x119E0, prCM, gcMn}, // NANDINAGARI SIGN VIRAMA + {0x119E1, 0x119E1, prAL, gcLo}, // NANDINAGARI SIGN AVAGRAHA + {0x119E2, 0x119E2, prBB, gcPo}, // NANDINAGARI SIGN SIDDHAM + {0x119E3, 0x119E3, prAL, gcLo}, // NANDINAGARI HEADSTROKE + {0x119E4, 0x119E4, prCM, gcMc}, // NANDINAGARI VOWEL SIGN PRISHTHAMATRA E + {0x11A00, 0x11A00, prAL, gcLo}, // ZANABAZAR SQUARE LETTER A + {0x11A01, 0x11A0A, prCM, gcMn}, // [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK + {0x11A0B, 0x11A32, prAL, gcLo}, // [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA + {0x11A33, 0x11A38, prCM, gcMn}, // [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA + {0x11A39, 0x11A39, prCM, gcMc}, // ZANABAZAR SQUARE SIGN VISARGA + {0x11A3A, 0x11A3A, prAL, gcLo}, // ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA + {0x11A3B, 0x11A3E, prCM, gcMn}, // [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA + {0x11A3F, 0x11A3F, prBB, gcPo}, // ZANABAZAR SQUARE INITIAL HEAD MARK + {0x11A40, 0x11A40, prAL, gcPo}, // ZANABAZAR SQUARE CLOSING HEAD MARK + {0x11A41, 0x11A44, prBA, gcPo}, // [4] ZANABAZAR SQUARE MARK TSHEG..ZANABAZAR SQUARE MARK LONG TSHEG + {0x11A45, 0x11A45, prBB, gcPo}, // ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK + {0x11A46, 0x11A46, prAL, gcPo}, // ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK + {0x11A47, 0x11A47, prCM, gcMn}, // ZANABAZAR SQUARE SUBJOINER + {0x11A50, 0x11A50, prAL, gcLo}, // SOYOMBO LETTER A + {0x11A51, 0x11A56, prCM, gcMn}, // [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE + {0x11A57, 0x11A58, prCM, gcMc}, // [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU + {0x11A59, 0x11A5B, prCM, gcMn}, // [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK + {0x11A5C, 0x11A89, prAL, gcLo}, // [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA + {0x11A8A, 0x11A96, prCM, gcMn}, // [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA + {0x11A97, 0x11A97, prCM, gcMc}, // SOYOMBO SIGN VISARGA + {0x11A98, 0x11A99, prCM, gcMn}, // [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER + {0x11A9A, 0x11A9C, prBA, gcPo}, // [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD + {0x11A9D, 0x11A9D, prAL, gcLo}, // SOYOMBO MARK PLUTA + {0x11A9E, 0x11AA0, prBB, gcPo}, // [3] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO HEAD MARK WITH MOON AND SUN + {0x11AA1, 0x11AA2, prBA, gcPo}, // [2] SOYOMBO TERMINAL MARK-1..SOYOMBO TERMINAL MARK-2 + {0x11AB0, 0x11ABF, prAL, gcLo}, // [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA + {0x11AC0, 0x11AF8, prAL, gcLo}, // [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL + {0x11B00, 0x11B09, prBB, gcPo}, // [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU + {0x11C00, 0x11C08, prAL, gcLo}, // [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L + {0x11C0A, 0x11C2E, prAL, gcLo}, // [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA + {0x11C2F, 0x11C2F, prCM, gcMc}, // BHAIKSUKI VOWEL SIGN AA + {0x11C30, 0x11C36, prCM, gcMn}, // [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L + {0x11C38, 0x11C3D, prCM, gcMn}, // [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA + {0x11C3E, 0x11C3E, prCM, gcMc}, // BHAIKSUKI SIGN VISARGA + {0x11C3F, 0x11C3F, prCM, gcMn}, // BHAIKSUKI SIGN VIRAMA + {0x11C40, 0x11C40, prAL, gcLo}, // BHAIKSUKI SIGN AVAGRAHA + {0x11C41, 0x11C45, prBA, gcPo}, // [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2 + {0x11C50, 0x11C59, prNU, gcNd}, // [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE + {0x11C5A, 0x11C6C, prAL, gcNo}, // [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK + {0x11C70, 0x11C70, prBB, gcPo}, // MARCHEN HEAD MARK + {0x11C71, 0x11C71, prEX, gcPo}, // MARCHEN MARK SHAD + {0x11C72, 0x11C8F, prAL, gcLo}, // [30] MARCHEN LETTER KA..MARCHEN LETTER A + {0x11C92, 0x11CA7, prCM, gcMn}, // [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA + {0x11CA9, 0x11CA9, prCM, gcMc}, // MARCHEN SUBJOINED LETTER YA + {0x11CAA, 0x11CB0, prCM, gcMn}, // [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA + {0x11CB1, 0x11CB1, prCM, gcMc}, // MARCHEN VOWEL SIGN I + {0x11CB2, 0x11CB3, prCM, gcMn}, // [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E + {0x11CB4, 0x11CB4, prCM, gcMc}, // MARCHEN VOWEL SIGN O + {0x11CB5, 0x11CB6, prCM, gcMn}, // [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU + {0x11D00, 0x11D06, prAL, gcLo}, // [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E + {0x11D08, 0x11D09, prAL, gcLo}, // [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O + {0x11D0B, 0x11D30, prAL, gcLo}, // [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA + {0x11D31, 0x11D36, prCM, gcMn}, // [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R + {0x11D3A, 0x11D3A, prCM, gcMn}, // MASARAM GONDI VOWEL SIGN E + {0x11D3C, 0x11D3D, prCM, gcMn}, // [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O + {0x11D3F, 0x11D45, prCM, gcMn}, // [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA + {0x11D46, 0x11D46, prAL, gcLo}, // MASARAM GONDI REPHA + {0x11D47, 0x11D47, prCM, gcMn}, // MASARAM GONDI RA-KARA + {0x11D50, 0x11D59, prNU, gcNd}, // [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE + {0x11D60, 0x11D65, prAL, gcLo}, // [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU + {0x11D67, 0x11D68, prAL, gcLo}, // [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI + {0x11D6A, 0x11D89, prAL, gcLo}, // [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA + {0x11D8A, 0x11D8E, prCM, gcMc}, // [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU + {0x11D90, 0x11D91, prCM, gcMn}, // [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI + {0x11D93, 0x11D94, prCM, gcMc}, // [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU + {0x11D95, 0x11D95, prCM, gcMn}, // GUNJALA GONDI SIGN ANUSVARA + {0x11D96, 0x11D96, prCM, gcMc}, // GUNJALA GONDI SIGN VISARGA + {0x11D97, 0x11D97, prCM, gcMn}, // GUNJALA GONDI VIRAMA + {0x11D98, 0x11D98, prAL, gcLo}, // GUNJALA GONDI OM + {0x11DA0, 0x11DA9, prNU, gcNd}, // [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE + {0x11EE0, 0x11EF2, prAL, gcLo}, // [19] MAKASAR LETTER KA..MAKASAR ANGKA + {0x11EF3, 0x11EF4, prCM, gcMn}, // [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U + {0x11EF5, 0x11EF6, prCM, gcMc}, // [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O + {0x11EF7, 0x11EF8, prAL, gcPo}, // [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION + {0x11F00, 0x11F01, prCM, gcMn}, // [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA + {0x11F02, 0x11F02, prAL, gcLo}, // KAWI SIGN REPHA + {0x11F03, 0x11F03, prCM, gcMc}, // KAWI SIGN VISARGA + {0x11F04, 0x11F10, prAL, gcLo}, // [13] KAWI LETTER A..KAWI LETTER O + {0x11F12, 0x11F33, prAL, gcLo}, // [34] KAWI LETTER KA..KAWI LETTER JNYA + {0x11F34, 0x11F35, prCM, gcMc}, // [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA + {0x11F36, 0x11F3A, prCM, gcMn}, // [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R + {0x11F3E, 0x11F3F, prCM, gcMc}, // [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI + {0x11F40, 0x11F40, prCM, gcMn}, // KAWI VOWEL SIGN EU + {0x11F41, 0x11F41, prCM, gcMc}, // KAWI SIGN KILLER + {0x11F42, 0x11F42, prCM, gcMn}, // KAWI CONJOINER + {0x11F43, 0x11F44, prBA, gcPo}, // [2] KAWI DANDA..KAWI DOUBLE DANDA + {0x11F45, 0x11F4F, prID, gcPo}, // [11] KAWI PUNCTUATION SECTION MARKER..KAWI PUNCTUATION CLOSING SPIRAL + {0x11F50, 0x11F59, prNU, gcNd}, // [10] KAWI DIGIT ZERO..KAWI DIGIT NINE + {0x11FB0, 0x11FB0, prAL, gcLo}, // LISU LETTER YHA + {0x11FC0, 0x11FD4, prAL, gcNo}, // [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH + {0x11FD5, 0x11FDC, prAL, gcSo}, // [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI + {0x11FDD, 0x11FE0, prPO, gcSc}, // [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN + {0x11FE1, 0x11FF1, prAL, gcSo}, // [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA + {0x11FFF, 0x11FFF, prBA, gcPo}, // TAMIL PUNCTUATION END OF TEXT + {0x12000, 0x12399, prAL, gcLo}, // [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U + {0x12400, 0x1246E, prAL, gcNl}, // [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM + {0x12470, 0x12474, prBA, gcPo}, // [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON + {0x12480, 0x12543, prAL, gcLo}, // [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU + {0x12F90, 0x12FF0, prAL, gcLo}, // [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 + {0x12FF1, 0x12FF2, prAL, gcPo}, // [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302 + {0x13000, 0x13257, prAL, gcLo}, // [600] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH O006 + {0x13258, 0x1325A, prOP, gcLo}, // [3] EGYPTIAN HIEROGLYPH O006A..EGYPTIAN HIEROGLYPH O006C + {0x1325B, 0x1325D, prCL, gcLo}, // [3] EGYPTIAN HIEROGLYPH O006D..EGYPTIAN HIEROGLYPH O006F + {0x1325E, 0x13281, prAL, gcLo}, // [36] EGYPTIAN HIEROGLYPH O007..EGYPTIAN HIEROGLYPH O033 + {0x13282, 0x13282, prCL, gcLo}, // EGYPTIAN HIEROGLYPH O033A + {0x13283, 0x13285, prAL, gcLo}, // [3] EGYPTIAN HIEROGLYPH O034..EGYPTIAN HIEROGLYPH O036 + {0x13286, 0x13286, prOP, gcLo}, // EGYPTIAN HIEROGLYPH O036A + {0x13287, 0x13287, prCL, gcLo}, // EGYPTIAN HIEROGLYPH O036B + {0x13288, 0x13288, prOP, gcLo}, // EGYPTIAN HIEROGLYPH O036C + {0x13289, 0x13289, prCL, gcLo}, // EGYPTIAN HIEROGLYPH O036D + {0x1328A, 0x13378, prAL, gcLo}, // [239] EGYPTIAN HIEROGLYPH O037..EGYPTIAN HIEROGLYPH V011 + {0x13379, 0x13379, prOP, gcLo}, // EGYPTIAN HIEROGLYPH V011A + {0x1337A, 0x1337B, prCL, gcLo}, // [2] EGYPTIAN HIEROGLYPH V011B..EGYPTIAN HIEROGLYPH V011C + {0x1337C, 0x1342F, prAL, gcLo}, // [180] EGYPTIAN HIEROGLYPH V012..EGYPTIAN HIEROGLYPH V011D + {0x13430, 0x13436, prGL, gcCf}, // [7] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH OVERLAY MIDDLE + {0x13437, 0x13437, prOP, gcCf}, // EGYPTIAN HIEROGLYPH BEGIN SEGMENT + {0x13438, 0x13438, prCL, gcCf}, // EGYPTIAN HIEROGLYPH END SEGMENT + {0x13439, 0x1343B, prGL, gcCf}, // [3] EGYPTIAN HIEROGLYPH INSERT AT MIDDLE..EGYPTIAN HIEROGLYPH INSERT AT BOTTOM + {0x1343C, 0x1343C, prOP, gcCf}, // EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE + {0x1343D, 0x1343D, prCL, gcCf}, // EGYPTIAN HIEROGLYPH END ENCLOSURE + {0x1343E, 0x1343E, prOP, gcCf}, // EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE + {0x1343F, 0x1343F, prCL, gcCf}, // EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE + {0x13440, 0x13440, prCM, gcMn}, // EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY + {0x13441, 0x13446, prAL, gcLo}, // [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN + {0x13447, 0x13455, prCM, gcMn}, // [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED + {0x14400, 0x145CD, prAL, gcLo}, // [462] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A409 + {0x145CE, 0x145CE, prOP, gcLo}, // ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK + {0x145CF, 0x145CF, prCL, gcLo}, // ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK + {0x145D0, 0x14646, prAL, gcLo}, // [119] ANATOLIAN HIEROGLYPH A411..ANATOLIAN HIEROGLYPH A530 + {0x16800, 0x16A38, prAL, gcLo}, // [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ + {0x16A40, 0x16A5E, prAL, gcLo}, // [31] MRO LETTER TA..MRO LETTER TEK + {0x16A60, 0x16A69, prNU, gcNd}, // [10] MRO DIGIT ZERO..MRO DIGIT NINE + {0x16A6E, 0x16A6F, prBA, gcPo}, // [2] MRO DANDA..MRO DOUBLE DANDA + {0x16A70, 0x16ABE, prAL, gcLo}, // [79] TANGSA LETTER OZ..TANGSA LETTER ZA + {0x16AC0, 0x16AC9, prNU, gcNd}, // [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE + {0x16AD0, 0x16AED, prAL, gcLo}, // [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I + {0x16AF0, 0x16AF4, prCM, gcMn}, // [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE + {0x16AF5, 0x16AF5, prBA, gcPo}, // BASSA VAH FULL STOP + {0x16B00, 0x16B2F, prAL, gcLo}, // [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU + {0x16B30, 0x16B36, prCM, gcMn}, // [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM + {0x16B37, 0x16B39, prBA, gcPo}, // [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM + {0x16B3A, 0x16B3B, prAL, gcPo}, // [2] PAHAWH HMONG SIGN VOS THIAB..PAHAWH HMONG SIGN VOS FEEM + {0x16B3C, 0x16B3F, prAL, gcSo}, // [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB + {0x16B40, 0x16B43, prAL, gcLm}, // [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM + {0x16B44, 0x16B44, prBA, gcPo}, // PAHAWH HMONG SIGN XAUS + {0x16B45, 0x16B45, prAL, gcSo}, // PAHAWH HMONG SIGN CIM TSOV ROG + {0x16B50, 0x16B59, prNU, gcNd}, // [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE + {0x16B5B, 0x16B61, prAL, gcNo}, // [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS + {0x16B63, 0x16B77, prAL, gcLo}, // [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS + {0x16B7D, 0x16B8F, prAL, gcLo}, // [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ + {0x16E40, 0x16E7F, prAL, gcLC}, // [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y + {0x16E80, 0x16E96, prAL, gcNo}, // [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM + {0x16E97, 0x16E98, prBA, gcPo}, // [2] MEDEFAIDRIN COMMA..MEDEFAIDRIN FULL STOP + {0x16E99, 0x16E9A, prAL, gcPo}, // [2] MEDEFAIDRIN SYMBOL AIVA..MEDEFAIDRIN EXCLAMATION OH + {0x16F00, 0x16F4A, prAL, gcLo}, // [75] MIAO LETTER PA..MIAO LETTER RTE + {0x16F4F, 0x16F4F, prCM, gcMn}, // MIAO SIGN CONSONANT MODIFIER BAR + {0x16F50, 0x16F50, prAL, gcLo}, // MIAO LETTER NASALIZATION + {0x16F51, 0x16F87, prCM, gcMc}, // [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI + {0x16F8F, 0x16F92, prCM, gcMn}, // [4] MIAO TONE RIGHT..MIAO TONE BELOW + {0x16F93, 0x16F9F, prAL, gcLm}, // [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 + {0x16FE0, 0x16FE1, prNS, gcLm}, // [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK + {0x16FE2, 0x16FE2, prNS, gcPo}, // OLD CHINESE HOOK MARK + {0x16FE3, 0x16FE3, prNS, gcLm}, // OLD CHINESE ITERATION MARK + {0x16FE4, 0x16FE4, prGL, gcMn}, // KHITAN SMALL SCRIPT FILLER + {0x16FF0, 0x16FF1, prCM, gcMc}, // [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY + {0x17000, 0x187F7, prID, gcLo}, // [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 + {0x18800, 0x18AFF, prID, gcLo}, // [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768 + {0x18B00, 0x18CD5, prAL, gcLo}, // [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5 + {0x18D00, 0x18D08, prID, gcLo}, // [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 + {0x1AFF0, 0x1AFF3, prAL, gcLm}, // [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 + {0x1AFF5, 0x1AFFB, prAL, gcLm}, // [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 + {0x1AFFD, 0x1AFFE, prAL, gcLm}, // [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 + {0x1B000, 0x1B0FF, prID, gcLo}, // [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2 + {0x1B100, 0x1B122, prID, gcLo}, // [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU + {0x1B132, 0x1B132, prCJ, gcLo}, // HIRAGANA LETTER SMALL KO + {0x1B150, 0x1B152, prCJ, gcLo}, // [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO + {0x1B155, 0x1B155, prCJ, gcLo}, // KATAKANA LETTER SMALL KO + {0x1B164, 0x1B167, prCJ, gcLo}, // [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N + {0x1B170, 0x1B2FB, prID, gcLo}, // [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB + {0x1BC00, 0x1BC6A, prAL, gcLo}, // [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M + {0x1BC70, 0x1BC7C, prAL, gcLo}, // [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK + {0x1BC80, 0x1BC88, prAL, gcLo}, // [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL + {0x1BC90, 0x1BC99, prAL, gcLo}, // [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW + {0x1BC9C, 0x1BC9C, prAL, gcSo}, // DUPLOYAN SIGN O WITH CROSS + {0x1BC9D, 0x1BC9E, prCM, gcMn}, // [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK + {0x1BC9F, 0x1BC9F, prBA, gcPo}, // DUPLOYAN PUNCTUATION CHINOOK FULL STOP + {0x1BCA0, 0x1BCA3, prCM, gcCf}, // [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP + {0x1CF00, 0x1CF2D, prCM, gcMn}, // [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT + {0x1CF30, 0x1CF46, prCM, gcMn}, // [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG + {0x1CF50, 0x1CFC3, prAL, gcSo}, // [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK + {0x1D000, 0x1D0F5, prAL, gcSo}, // [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO + {0x1D100, 0x1D126, prAL, gcSo}, // [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2 + {0x1D129, 0x1D164, prAL, gcSo}, // [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE + {0x1D165, 0x1D166, prCM, gcMc}, // [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM + {0x1D167, 0x1D169, prCM, gcMn}, // [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 + {0x1D16A, 0x1D16C, prAL, gcSo}, // [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3 + {0x1D16D, 0x1D172, prCM, gcMc}, // [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 + {0x1D173, 0x1D17A, prCM, gcCf}, // [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE + {0x1D17B, 0x1D182, prCM, gcMn}, // [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE + {0x1D183, 0x1D184, prAL, gcSo}, // [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN + {0x1D185, 0x1D18B, prCM, gcMn}, // [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE + {0x1D18C, 0x1D1A9, prAL, gcSo}, // [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH + {0x1D1AA, 0x1D1AD, prCM, gcMn}, // [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO + {0x1D1AE, 0x1D1EA, prAL, gcSo}, // [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON + {0x1D200, 0x1D241, prAL, gcSo}, // [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54 + {0x1D242, 0x1D244, prCM, gcMn}, // [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME + {0x1D245, 0x1D245, prAL, gcSo}, // GREEK MUSICAL LEIMMA + {0x1D2C0, 0x1D2D3, prAL, gcNo}, // [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN + {0x1D2E0, 0x1D2F3, prAL, gcNo}, // [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN + {0x1D300, 0x1D356, prAL, gcSo}, // [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING + {0x1D360, 0x1D378, prAL, gcNo}, // [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE + {0x1D400, 0x1D454, prAL, gcLC}, // [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G + {0x1D456, 0x1D49C, prAL, gcLC}, // [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A + {0x1D49E, 0x1D49F, prAL, gcLu}, // [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D + {0x1D4A2, 0x1D4A2, prAL, gcLu}, // MATHEMATICAL SCRIPT CAPITAL G + {0x1D4A5, 0x1D4A6, prAL, gcLu}, // [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K + {0x1D4A9, 0x1D4AC, prAL, gcLu}, // [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q + {0x1D4AE, 0x1D4B9, prAL, gcLC}, // [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D + {0x1D4BB, 0x1D4BB, prAL, gcLl}, // MATHEMATICAL SCRIPT SMALL F + {0x1D4BD, 0x1D4C3, prAL, gcLl}, // [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N + {0x1D4C5, 0x1D505, prAL, gcLC}, // [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B + {0x1D507, 0x1D50A, prAL, gcLu}, // [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G + {0x1D50D, 0x1D514, prAL, gcLu}, // [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q + {0x1D516, 0x1D51C, prAL, gcLu}, // [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y + {0x1D51E, 0x1D539, prAL, gcLC}, // [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B + {0x1D53B, 0x1D53E, prAL, gcLu}, // [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G + {0x1D540, 0x1D544, prAL, gcLu}, // [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M + {0x1D546, 0x1D546, prAL, gcLu}, // MATHEMATICAL DOUBLE-STRUCK CAPITAL O + {0x1D54A, 0x1D550, prAL, gcLu}, // [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y + {0x1D552, 0x1D6A5, prAL, gcLC}, // [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J + {0x1D6A8, 0x1D6C0, prAL, gcLu}, // [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA + {0x1D6C1, 0x1D6C1, prAL, gcSm}, // MATHEMATICAL BOLD NABLA + {0x1D6C2, 0x1D6DA, prAL, gcLl}, // [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA + {0x1D6DB, 0x1D6DB, prAL, gcSm}, // MATHEMATICAL BOLD PARTIAL DIFFERENTIAL + {0x1D6DC, 0x1D6FA, prAL, gcLC}, // [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA + {0x1D6FB, 0x1D6FB, prAL, gcSm}, // MATHEMATICAL ITALIC NABLA + {0x1D6FC, 0x1D714, prAL, gcLl}, // [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA + {0x1D715, 0x1D715, prAL, gcSm}, // MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL + {0x1D716, 0x1D734, prAL, gcLC}, // [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA + {0x1D735, 0x1D735, prAL, gcSm}, // MATHEMATICAL BOLD ITALIC NABLA + {0x1D736, 0x1D74E, prAL, gcLl}, // [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA + {0x1D74F, 0x1D74F, prAL, gcSm}, // MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL + {0x1D750, 0x1D76E, prAL, gcLC}, // [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA + {0x1D76F, 0x1D76F, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD NABLA + {0x1D770, 0x1D788, prAL, gcLl}, // [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA + {0x1D789, 0x1D789, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL + {0x1D78A, 0x1D7A8, prAL, gcLC}, // [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA + {0x1D7A9, 0x1D7A9, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA + {0x1D7AA, 0x1D7C2, prAL, gcLl}, // [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA + {0x1D7C3, 0x1D7C3, prAL, gcSm}, // MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL + {0x1D7C4, 0x1D7CB, prAL, gcLC}, // [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA + {0x1D7CE, 0x1D7FF, prNU, gcNd}, // [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE + {0x1D800, 0x1D9FF, prAL, gcSo}, // [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD + {0x1DA00, 0x1DA36, prCM, gcMn}, // [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN + {0x1DA37, 0x1DA3A, prAL, gcSo}, // [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE + {0x1DA3B, 0x1DA6C, prCM, gcMn}, // [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT + {0x1DA6D, 0x1DA74, prAL, gcSo}, // [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING + {0x1DA75, 0x1DA75, prCM, gcMn}, // SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS + {0x1DA76, 0x1DA83, prAL, gcSo}, // [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH + {0x1DA84, 0x1DA84, prCM, gcMn}, // SIGNWRITING LOCATION HEAD NECK + {0x1DA85, 0x1DA86, prAL, gcSo}, // [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS + {0x1DA87, 0x1DA8A, prBA, gcPo}, // [4] SIGNWRITING COMMA..SIGNWRITING COLON + {0x1DA8B, 0x1DA8B, prAL, gcPo}, // SIGNWRITING PARENTHESIS + {0x1DA9B, 0x1DA9F, prCM, gcMn}, // [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 + {0x1DAA1, 0x1DAAF, prCM, gcMn}, // [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + {0x1DF00, 0x1DF09, prAL, gcLl}, // [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + {0x1DF0A, 0x1DF0A, prAL, gcLo}, // LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + {0x1DF0B, 0x1DF1E, prAL, gcLl}, // [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL + {0x1DF25, 0x1DF2A, prAL, gcLl}, // [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK + {0x1E000, 0x1E006, prCM, gcMn}, // [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE + {0x1E008, 0x1E018, prCM, gcMn}, // [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU + {0x1E01B, 0x1E021, prCM, gcMn}, // [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI + {0x1E023, 0x1E024, prCM, gcMn}, // [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS + {0x1E026, 0x1E02A, prCM, gcMn}, // [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA + {0x1E030, 0x1E06D, prAL, gcLm}, // [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + {0x1E08F, 0x1E08F, prCM, gcMn}, // COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + {0x1E100, 0x1E12C, prAL, gcLo}, // [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W + {0x1E130, 0x1E136, prCM, gcMn}, // [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D + {0x1E137, 0x1E13D, prAL, gcLm}, // [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER + {0x1E140, 0x1E149, prNU, gcNd}, // [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE + {0x1E14E, 0x1E14E, prAL, gcLo}, // NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ + {0x1E14F, 0x1E14F, prAL, gcSo}, // NYIAKENG PUACHUE HMONG CIRCLED CA + {0x1E290, 0x1E2AD, prAL, gcLo}, // [30] TOTO LETTER PA..TOTO LETTER A + {0x1E2AE, 0x1E2AE, prCM, gcMn}, // TOTO SIGN RISING TONE + {0x1E2C0, 0x1E2EB, prAL, gcLo}, // [44] WANCHO LETTER AA..WANCHO LETTER YIH + {0x1E2EC, 0x1E2EF, prCM, gcMn}, // [4] WANCHO TONE TUP..WANCHO TONE KOINI + {0x1E2F0, 0x1E2F9, prNU, gcNd}, // [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE + {0x1E2FF, 0x1E2FF, prPR, gcSc}, // WANCHO NGUN SIGN + {0x1E4D0, 0x1E4EA, prAL, gcLo}, // [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL + {0x1E4EB, 0x1E4EB, prAL, gcLm}, // NAG MUNDARI SIGN OJOD + {0x1E4EC, 0x1E4EF, prCM, gcMn}, // [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH + {0x1E4F0, 0x1E4F9, prNU, gcNd}, // [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE + {0x1E7E0, 0x1E7E6, prAL, gcLo}, // [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO + {0x1E7E8, 0x1E7EB, prAL, gcLo}, // [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE + {0x1E7ED, 0x1E7EE, prAL, gcLo}, // [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE + {0x1E7F0, 0x1E7FE, prAL, gcLo}, // [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE + {0x1E800, 0x1E8C4, prAL, gcLo}, // [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON + {0x1E8C7, 0x1E8CF, prAL, gcNo}, // [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE + {0x1E8D0, 0x1E8D6, prCM, gcMn}, // [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS + {0x1E900, 0x1E943, prAL, gcLC}, // [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA + {0x1E944, 0x1E94A, prCM, gcMn}, // [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA + {0x1E94B, 0x1E94B, prAL, gcLm}, // ADLAM NASALIZATION MARK + {0x1E950, 0x1E959, prNU, gcNd}, // [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE + {0x1E95E, 0x1E95F, prOP, gcPo}, // [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK + {0x1EC71, 0x1ECAB, prAL, gcNo}, // [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE + {0x1ECAC, 0x1ECAC, prPO, gcSo}, // INDIC SIYAQ PLACEHOLDER + {0x1ECAD, 0x1ECAF, prAL, gcNo}, // [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS + {0x1ECB0, 0x1ECB0, prPO, gcSc}, // INDIC SIYAQ RUPEE MARK + {0x1ECB1, 0x1ECB4, prAL, gcNo}, // [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK + {0x1ED01, 0x1ED2D, prAL, gcNo}, // [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND + {0x1ED2E, 0x1ED2E, prAL, gcSo}, // OTTOMAN SIYAQ MARRATAN + {0x1ED2F, 0x1ED3D, prAL, gcNo}, // [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH + {0x1EE00, 0x1EE03, prAL, gcLo}, // [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL + {0x1EE05, 0x1EE1F, prAL, gcLo}, // [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF + {0x1EE21, 0x1EE22, prAL, gcLo}, // [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM + {0x1EE24, 0x1EE24, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL HEH + {0x1EE27, 0x1EE27, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL HAH + {0x1EE29, 0x1EE32, prAL, gcLo}, // [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF + {0x1EE34, 0x1EE37, prAL, gcLo}, // [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH + {0x1EE39, 0x1EE39, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL DAD + {0x1EE3B, 0x1EE3B, prAL, gcLo}, // ARABIC MATHEMATICAL INITIAL GHAIN + {0x1EE42, 0x1EE42, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED JEEM + {0x1EE47, 0x1EE47, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED HAH + {0x1EE49, 0x1EE49, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED YEH + {0x1EE4B, 0x1EE4B, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED LAM + {0x1EE4D, 0x1EE4F, prAL, gcLo}, // [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN + {0x1EE51, 0x1EE52, prAL, gcLo}, // [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF + {0x1EE54, 0x1EE54, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED SHEEN + {0x1EE57, 0x1EE57, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED KHAH + {0x1EE59, 0x1EE59, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED DAD + {0x1EE5B, 0x1EE5B, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED GHAIN + {0x1EE5D, 0x1EE5D, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED DOTLESS NOON + {0x1EE5F, 0x1EE5F, prAL, gcLo}, // ARABIC MATHEMATICAL TAILED DOTLESS QAF + {0x1EE61, 0x1EE62, prAL, gcLo}, // [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM + {0x1EE64, 0x1EE64, prAL, gcLo}, // ARABIC MATHEMATICAL STRETCHED HEH + {0x1EE67, 0x1EE6A, prAL, gcLo}, // [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF + {0x1EE6C, 0x1EE72, prAL, gcLo}, // [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF + {0x1EE74, 0x1EE77, prAL, gcLo}, // [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH + {0x1EE79, 0x1EE7C, prAL, gcLo}, // [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH + {0x1EE7E, 0x1EE7E, prAL, gcLo}, // ARABIC MATHEMATICAL STRETCHED DOTLESS FEH + {0x1EE80, 0x1EE89, prAL, gcLo}, // [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH + {0x1EE8B, 0x1EE9B, prAL, gcLo}, // [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN + {0x1EEA1, 0x1EEA3, prAL, gcLo}, // [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL + {0x1EEA5, 0x1EEA9, prAL, gcLo}, // [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH + {0x1EEAB, 0x1EEBB, prAL, gcLo}, // [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN + {0x1EEF0, 0x1EEF1, prAL, gcSm}, // [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL + {0x1F000, 0x1F02B, prID, gcSo}, // [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK + {0x1F02C, 0x1F02F, prID, gcCn}, // [4] .. + {0x1F030, 0x1F093, prID, gcSo}, // [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 + {0x1F094, 0x1F09F, prID, gcCn}, // [12] .. + {0x1F0A0, 0x1F0AE, prID, gcSo}, // [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES + {0x1F0AF, 0x1F0B0, prID, gcCn}, // [2] .. + {0x1F0B1, 0x1F0BF, prID, gcSo}, // [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER + {0x1F0C0, 0x1F0C0, prID, gcCn}, // + {0x1F0C1, 0x1F0CF, prID, gcSo}, // [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER + {0x1F0D0, 0x1F0D0, prID, gcCn}, // + {0x1F0D1, 0x1F0F5, prID, gcSo}, // [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21 + {0x1F0F6, 0x1F0FF, prID, gcCn}, // [10] .. + {0x1F100, 0x1F10C, prAI, gcNo}, // [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO + {0x1F10D, 0x1F10F, prID, gcSo}, // [3] CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH + {0x1F110, 0x1F12D, prAI, gcSo}, // [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD + {0x1F12E, 0x1F12F, prAL, gcSo}, // [2] CIRCLED WZ..COPYLEFT SYMBOL + {0x1F130, 0x1F169, prAI, gcSo}, // [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z + {0x1F16A, 0x1F16C, prAL, gcSo}, // [3] RAISED MC SIGN..RAISED MR SIGN + {0x1F16D, 0x1F16F, prID, gcSo}, // [3] CIRCLED CC..CIRCLED HUMAN FIGURE + {0x1F170, 0x1F1AC, prAI, gcSo}, // [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD + {0x1F1AD, 0x1F1AD, prID, gcSo}, // MASK WORK SYMBOL + {0x1F1AE, 0x1F1E5, prID, gcCn}, // [56] .. + {0x1F1E6, 0x1F1FF, prRI, gcSo}, // [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z + {0x1F200, 0x1F202, prID, gcSo}, // [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA + {0x1F203, 0x1F20F, prID, gcCn}, // [13] .. + {0x1F210, 0x1F23B, prID, gcSo}, // [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D + {0x1F23C, 0x1F23F, prID, gcCn}, // [4] .. + {0x1F240, 0x1F248, prID, gcSo}, // [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 + {0x1F249, 0x1F24F, prID, gcCn}, // [7] .. + {0x1F250, 0x1F251, prID, gcSo}, // [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT + {0x1F252, 0x1F25F, prID, gcCn}, // [14] .. + {0x1F260, 0x1F265, prID, gcSo}, // [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI + {0x1F266, 0x1F2FF, prID, gcCn}, // [154] .. + {0x1F300, 0x1F384, prID, gcSo}, // [133] CYCLONE..CHRISTMAS TREE + {0x1F385, 0x1F385, prEB, gcSo}, // FATHER CHRISTMAS + {0x1F386, 0x1F39B, prID, gcSo}, // [22] FIREWORKS..CONTROL KNOBS + {0x1F39C, 0x1F39D, prAL, gcSo}, // [2] BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES + {0x1F39E, 0x1F3B4, prID, gcSo}, // [23] FILM FRAMES..FLOWER PLAYING CARDS + {0x1F3B5, 0x1F3B6, prAL, gcSo}, // [2] MUSICAL NOTE..MULTIPLE MUSICAL NOTES + {0x1F3B7, 0x1F3BB, prID, gcSo}, // [5] SAXOPHONE..VIOLIN + {0x1F3BC, 0x1F3BC, prAL, gcSo}, // MUSICAL SCORE + {0x1F3BD, 0x1F3C1, prID, gcSo}, // [5] RUNNING SHIRT WITH SASH..CHEQUERED FLAG + {0x1F3C2, 0x1F3C4, prEB, gcSo}, // [3] SNOWBOARDER..SURFER + {0x1F3C5, 0x1F3C6, prID, gcSo}, // [2] SPORTS MEDAL..TROPHY + {0x1F3C7, 0x1F3C7, prEB, gcSo}, // HORSE RACING + {0x1F3C8, 0x1F3C9, prID, gcSo}, // [2] AMERICAN FOOTBALL..RUGBY FOOTBALL + {0x1F3CA, 0x1F3CC, prEB, gcSo}, // [3] SWIMMER..GOLFER + {0x1F3CD, 0x1F3FA, prID, gcSo}, // [46] RACING MOTORCYCLE..AMPHORA + {0x1F3FB, 0x1F3FF, prEM, gcSk}, // [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 + {0x1F400, 0x1F441, prID, gcSo}, // [66] RAT..EYE + {0x1F442, 0x1F443, prEB, gcSo}, // [2] EAR..NOSE + {0x1F444, 0x1F445, prID, gcSo}, // [2] MOUTH..TONGUE + {0x1F446, 0x1F450, prEB, gcSo}, // [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN + {0x1F451, 0x1F465, prID, gcSo}, // [21] CROWN..BUSTS IN SILHOUETTE + {0x1F466, 0x1F478, prEB, gcSo}, // [19] BOY..PRINCESS + {0x1F479, 0x1F47B, prID, gcSo}, // [3] JAPANESE OGRE..GHOST + {0x1F47C, 0x1F47C, prEB, gcSo}, // BABY ANGEL + {0x1F47D, 0x1F480, prID, gcSo}, // [4] EXTRATERRESTRIAL ALIEN..SKULL + {0x1F481, 0x1F483, prEB, gcSo}, // [3] INFORMATION DESK PERSON..DANCER + {0x1F484, 0x1F484, prID, gcSo}, // LIPSTICK + {0x1F485, 0x1F487, prEB, gcSo}, // [3] NAIL POLISH..HAIRCUT + {0x1F488, 0x1F48E, prID, gcSo}, // [7] BARBER POLE..GEM STONE + {0x1F48F, 0x1F48F, prEB, gcSo}, // KISS + {0x1F490, 0x1F490, prID, gcSo}, // BOUQUET + {0x1F491, 0x1F491, prEB, gcSo}, // COUPLE WITH HEART + {0x1F492, 0x1F49F, prID, gcSo}, // [14] WEDDING..HEART DECORATION + {0x1F4A0, 0x1F4A0, prAL, gcSo}, // DIAMOND SHAPE WITH A DOT INSIDE + {0x1F4A1, 0x1F4A1, prID, gcSo}, // ELECTRIC LIGHT BULB + {0x1F4A2, 0x1F4A2, prAL, gcSo}, // ANGER SYMBOL + {0x1F4A3, 0x1F4A3, prID, gcSo}, // BOMB + {0x1F4A4, 0x1F4A4, prAL, gcSo}, // SLEEPING SYMBOL + {0x1F4A5, 0x1F4A9, prID, gcSo}, // [5] COLLISION SYMBOL..PILE OF POO + {0x1F4AA, 0x1F4AA, prEB, gcSo}, // FLEXED BICEPS + {0x1F4AB, 0x1F4AE, prID, gcSo}, // [4] DIZZY SYMBOL..WHITE FLOWER + {0x1F4AF, 0x1F4AF, prAL, gcSo}, // HUNDRED POINTS SYMBOL + {0x1F4B0, 0x1F4B0, prID, gcSo}, // MONEY BAG + {0x1F4B1, 0x1F4B2, prAL, gcSo}, // [2] CURRENCY EXCHANGE..HEAVY DOLLAR SIGN + {0x1F4B3, 0x1F4FF, prID, gcSo}, // [77] CREDIT CARD..PRAYER BEADS + {0x1F500, 0x1F506, prAL, gcSo}, // [7] TWISTED RIGHTWARDS ARROWS..HIGH BRIGHTNESS SYMBOL + {0x1F507, 0x1F516, prID, gcSo}, // [16] SPEAKER WITH CANCELLATION STROKE..BOOKMARK + {0x1F517, 0x1F524, prAL, gcSo}, // [14] LINK SYMBOL..INPUT SYMBOL FOR LATIN LETTERS + {0x1F525, 0x1F531, prID, gcSo}, // [13] FIRE..TRIDENT EMBLEM + {0x1F532, 0x1F549, prAL, gcSo}, // [24] BLACK SQUARE BUTTON..OM SYMBOL + {0x1F54A, 0x1F573, prID, gcSo}, // [42] DOVE OF PEACE..HOLE + {0x1F574, 0x1F575, prEB, gcSo}, // [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY + {0x1F576, 0x1F579, prID, gcSo}, // [4] DARK SUNGLASSES..JOYSTICK + {0x1F57A, 0x1F57A, prEB, gcSo}, // MAN DANCING + {0x1F57B, 0x1F58F, prID, gcSo}, // [21] LEFT HAND TELEPHONE RECEIVER..TURNED OK HAND SIGN + {0x1F590, 0x1F590, prEB, gcSo}, // RAISED HAND WITH FINGERS SPLAYED + {0x1F591, 0x1F594, prID, gcSo}, // [4] REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND + {0x1F595, 0x1F596, prEB, gcSo}, // [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS + {0x1F597, 0x1F5D3, prID, gcSo}, // [61] WHITE DOWN POINTING LEFT HAND INDEX..SPIRAL CALENDAR PAD + {0x1F5D4, 0x1F5DB, prAL, gcSo}, // [8] DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL + {0x1F5DC, 0x1F5F3, prID, gcSo}, // [24] COMPRESSION..BALLOT BOX WITH BALLOT + {0x1F5F4, 0x1F5F9, prAL, gcSo}, // [6] BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK + {0x1F5FA, 0x1F5FF, prID, gcSo}, // [6] WORLD MAP..MOYAI + {0x1F600, 0x1F644, prID, gcSo}, // [69] GRINNING FACE..FACE WITH ROLLING EYES + {0x1F645, 0x1F647, prEB, gcSo}, // [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY + {0x1F648, 0x1F64A, prID, gcSo}, // [3] SEE-NO-EVIL MONKEY..SPEAK-NO-EVIL MONKEY + {0x1F64B, 0x1F64F, prEB, gcSo}, // [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS + {0x1F650, 0x1F675, prAL, gcSo}, // [38] NORTH WEST POINTING LEAF..SWASH AMPERSAND ORNAMENT + {0x1F676, 0x1F678, prQU, gcSo}, // [3] SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT..SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + {0x1F679, 0x1F67B, prNS, gcSo}, // [3] HEAVY INTERROBANG ORNAMENT..HEAVY SANS-SERIF INTERROBANG ORNAMENT + {0x1F67C, 0x1F67F, prAL, gcSo}, // [4] VERY HEAVY SOLIDUS..REVERSE CHECKER BOARD + {0x1F680, 0x1F6A2, prID, gcSo}, // [35] ROCKET..SHIP + {0x1F6A3, 0x1F6A3, prEB, gcSo}, // ROWBOAT + {0x1F6A4, 0x1F6B3, prID, gcSo}, // [16] SPEEDBOAT..NO BICYCLES + {0x1F6B4, 0x1F6B6, prEB, gcSo}, // [3] BICYCLIST..PEDESTRIAN + {0x1F6B7, 0x1F6BF, prID, gcSo}, // [9] NO PEDESTRIANS..SHOWER + {0x1F6C0, 0x1F6C0, prEB, gcSo}, // BATH + {0x1F6C1, 0x1F6CB, prID, gcSo}, // [11] BATHTUB..COUCH AND LAMP + {0x1F6CC, 0x1F6CC, prEB, gcSo}, // SLEEPING ACCOMMODATION + {0x1F6CD, 0x1F6D7, prID, gcSo}, // [11] SHOPPING BAGS..ELEVATOR + {0x1F6D8, 0x1F6DB, prID, gcCn}, // [4] .. + {0x1F6DC, 0x1F6EC, prID, gcSo}, // [17] WIRELESS..AIRPLANE ARRIVING + {0x1F6ED, 0x1F6EF, prID, gcCn}, // [3] .. + {0x1F6F0, 0x1F6FC, prID, gcSo}, // [13] SATELLITE..ROLLER SKATE + {0x1F6FD, 0x1F6FF, prID, gcCn}, // [3] .. + {0x1F700, 0x1F773, prAL, gcSo}, // [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE + {0x1F774, 0x1F776, prID, gcSo}, // [3] LOT OF FORTUNE..LUNAR ECLIPSE + {0x1F777, 0x1F77A, prID, gcCn}, // [4] .. + {0x1F77B, 0x1F77F, prID, gcSo}, // [5] HAUMEA..ORCUS + {0x1F780, 0x1F7D4, prAL, gcSo}, // [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR + {0x1F7D5, 0x1F7D9, prID, gcSo}, // [5] CIRCLED TRIANGLE..NINE POINTED WHITE STAR + {0x1F7DA, 0x1F7DF, prID, gcCn}, // [6] .. + {0x1F7E0, 0x1F7EB, prID, gcSo}, // [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE + {0x1F7EC, 0x1F7EF, prID, gcCn}, // [4] .. + {0x1F7F0, 0x1F7F0, prID, gcSo}, // HEAVY EQUALS SIGN + {0x1F7F1, 0x1F7FF, prID, gcCn}, // [15] .. + {0x1F800, 0x1F80B, prAL, gcSo}, // [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD + {0x1F80C, 0x1F80F, prID, gcCn}, // [4] .. + {0x1F810, 0x1F847, prAL, gcSo}, // [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW + {0x1F848, 0x1F84F, prID, gcCn}, // [8] .. + {0x1F850, 0x1F859, prAL, gcSo}, // [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW + {0x1F85A, 0x1F85F, prID, gcCn}, // [6] .. + {0x1F860, 0x1F887, prAL, gcSo}, // [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW + {0x1F888, 0x1F88F, prID, gcCn}, // [8] .. + {0x1F890, 0x1F8AD, prAL, gcSo}, // [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS + {0x1F8AE, 0x1F8AF, prID, gcCn}, // [2] .. + {0x1F8B0, 0x1F8B1, prID, gcSo}, // [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST + {0x1F8B2, 0x1F8FF, prID, gcCn}, // [78] .. + {0x1F900, 0x1F90B, prAL, gcSo}, // [12] CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT + {0x1F90C, 0x1F90C, prEB, gcSo}, // PINCHED FINGERS + {0x1F90D, 0x1F90E, prID, gcSo}, // [2] WHITE HEART..BROWN HEART + {0x1F90F, 0x1F90F, prEB, gcSo}, // PINCHING HAND + {0x1F910, 0x1F917, prID, gcSo}, // [8] ZIPPER-MOUTH FACE..HUGGING FACE + {0x1F918, 0x1F91F, prEB, gcSo}, // [8] SIGN OF THE HORNS..I LOVE YOU HAND SIGN + {0x1F920, 0x1F925, prID, gcSo}, // [6] FACE WITH COWBOY HAT..LYING FACE + {0x1F926, 0x1F926, prEB, gcSo}, // FACE PALM + {0x1F927, 0x1F92F, prID, gcSo}, // [9] SNEEZING FACE..SHOCKED FACE WITH EXPLODING HEAD + {0x1F930, 0x1F939, prEB, gcSo}, // [10] PREGNANT WOMAN..JUGGLING + {0x1F93A, 0x1F93B, prID, gcSo}, // [2] FENCER..MODERN PENTATHLON + {0x1F93C, 0x1F93E, prEB, gcSo}, // [3] WRESTLERS..HANDBALL + {0x1F93F, 0x1F976, prID, gcSo}, // [56] DIVING MASK..FREEZING FACE + {0x1F977, 0x1F977, prEB, gcSo}, // NINJA + {0x1F978, 0x1F9B4, prID, gcSo}, // [61] DISGUISED FACE..BONE + {0x1F9B5, 0x1F9B6, prEB, gcSo}, // [2] LEG..FOOT + {0x1F9B7, 0x1F9B7, prID, gcSo}, // TOOTH + {0x1F9B8, 0x1F9B9, prEB, gcSo}, // [2] SUPERHERO..SUPERVILLAIN + {0x1F9BA, 0x1F9BA, prID, gcSo}, // SAFETY VEST + {0x1F9BB, 0x1F9BB, prEB, gcSo}, // EAR WITH HEARING AID + {0x1F9BC, 0x1F9CC, prID, gcSo}, // [17] MOTORIZED WHEELCHAIR..TROLL + {0x1F9CD, 0x1F9CF, prEB, gcSo}, // [3] STANDING PERSON..DEAF PERSON + {0x1F9D0, 0x1F9D0, prID, gcSo}, // FACE WITH MONOCLE + {0x1F9D1, 0x1F9DD, prEB, gcSo}, // [13] ADULT..ELF + {0x1F9DE, 0x1F9FF, prID, gcSo}, // [34] GENIE..NAZAR AMULET + {0x1FA00, 0x1FA53, prAL, gcSo}, // [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP + {0x1FA54, 0x1FA5F, prID, gcCn}, // [12] .. + {0x1FA60, 0x1FA6D, prID, gcSo}, // [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER + {0x1FA6E, 0x1FA6F, prID, gcCn}, // [2] .. + {0x1FA70, 0x1FA7C, prID, gcSo}, // [13] BALLET SHOES..CRUTCH + {0x1FA7D, 0x1FA7F, prID, gcCn}, // [3] .. + {0x1FA80, 0x1FA88, prID, gcSo}, // [9] YO-YO..FLUTE + {0x1FA89, 0x1FA8F, prID, gcCn}, // [7] .. + {0x1FA90, 0x1FABD, prID, gcSo}, // [46] RINGED PLANET..WING + {0x1FABE, 0x1FABE, prID, gcCn}, // + {0x1FABF, 0x1FAC2, prID, gcSo}, // [4] GOOSE..PEOPLE HUGGING + {0x1FAC3, 0x1FAC5, prEB, gcSo}, // [3] PREGNANT MAN..PERSON WITH CROWN + {0x1FAC6, 0x1FACD, prID, gcCn}, // [8] .. + {0x1FACE, 0x1FADB, prID, gcSo}, // [14] MOOSE..PEA POD + {0x1FADC, 0x1FADF, prID, gcCn}, // [4] .. + {0x1FAE0, 0x1FAE8, prID, gcSo}, // [9] MELTING FACE..SHAKING FACE + {0x1FAE9, 0x1FAEF, prID, gcCn}, // [7] .. + {0x1FAF0, 0x1FAF8, prEB, gcSo}, // [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND + {0x1FAF9, 0x1FAFF, prID, gcCn}, // [7] .. + {0x1FB00, 0x1FB92, prAL, gcSo}, // [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK + {0x1FB94, 0x1FBCA, prAL, gcSo}, // [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON + {0x1FBF0, 0x1FBF9, prNU, gcNd}, // [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE + {0x1FC00, 0x1FFFD, prID, gcCn}, // [1022] .. + {0x20000, 0x2A6DF, prID, gcLo}, // [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF + {0x2A6E0, 0x2A6FF, prID, gcCn}, // [32] .. + {0x2A700, 0x2B739, prID, gcLo}, // [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 + {0x2B73A, 0x2B73F, prID, gcCn}, // [6] .. + {0x2B740, 0x2B81D, prID, gcLo}, // [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D + {0x2B81E, 0x2B81F, prID, gcCn}, // [2] .. + {0x2B820, 0x2CEA1, prID, gcLo}, // [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 + {0x2CEA2, 0x2CEAF, prID, gcCn}, // [14] .. + {0x2CEB0, 0x2EBE0, prID, gcLo}, // [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 + {0x2EBE1, 0x2F7FF, prID, gcCn}, // [3103] .. + {0x2F800, 0x2FA1D, prID, gcLo}, // [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + {0x2FA1E, 0x2FA1F, prID, gcCn}, // [2] .. + {0x2FA20, 0x2FFFD, prID, gcCn}, // [1502] .. + {0x30000, 0x3134A, prID, gcLo}, // [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A + {0x3134B, 0x3134F, prID, gcCn}, // [5] .. + {0x31350, 0x323AF, prID, gcLo}, // [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF + {0x323B0, 0x3FFFD, prID, gcCn}, // [56398] .. + {0xE0001, 0xE0001, prCM, gcCf}, // LANGUAGE TAG + {0xE0020, 0xE007F, prCM, gcCf}, // [96] TAG SPACE..CANCEL TAG + {0xE0100, 0xE01EF, prCM, gcMn}, // [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 + {0xF0000, 0xFFFFD, prXX, gcCo}, // [65534] .. + {0x100000, 0x10FFFD, prXX, gcCo}, // [65534] .. +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/linerules.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/linerules.go new file mode 100644 index 0000000..7708ae0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/linerules.go @@ -0,0 +1,626 @@ +package uniseg + +import "unicode/utf8" + +// The states of the line break parser. +const ( + lbAny = iota + lbBK + lbCR + lbLF + lbNL + lbSP + lbZW + lbWJ + lbGL + lbBA + lbHY + lbCL + lbCP + lbEX + lbIS + lbSY + lbOP + lbQU + lbQUSP + lbNS + lbCLCPSP + lbB2 + lbB2SP + lbCB + lbBB + lbLB21a + lbHL + lbAL + lbNU + lbPR + lbEB + lbIDEM + lbNUNU + lbNUSY + lbNUIS + lbNUCL + lbNUCP + lbPO + lbJL + lbJV + lbJT + lbH2 + lbH3 + lbOddRI + lbEvenRI + lbExtPicCn + lbZWJBit = 64 + lbCPeaFWHBit = 128 +) + +// These constants define whether a given text may be broken into the next line. +// If the break is optional (LineCanBreak), you may choose to break or not based +// on your own criteria, for example, if the text has reached the available +// width. +const ( + LineDontBreak = iota // You may not break the line here. + LineCanBreak // You may or may not break the line here. + LineMustBreak // You must break the line here. +) + +// lbTransitions implements the line break parser's state transitions. It's +// anologous to [grTransitions], see comments there for details. +// +// Unicode version 15.0.0. +func lbTransitions(state, prop int) (newState, lineBreak, rule int) { + switch uint64(state) | uint64(prop)<<32 { + // LB4. + case lbBK | prAny<<32: + return lbAny, LineMustBreak, 40 + + // LB5. + case lbCR | prLF<<32: + return lbLF, LineDontBreak, 50 + case lbCR | prAny<<32: + return lbAny, LineMustBreak, 50 + case lbLF | prAny<<32: + return lbAny, LineMustBreak, 50 + case lbNL | prAny<<32: + return lbAny, LineMustBreak, 50 + + // LB6. + case lbAny | prBK<<32: + return lbBK, LineDontBreak, 60 + case lbAny | prCR<<32: + return lbCR, LineDontBreak, 60 + case lbAny | prLF<<32: + return lbLF, LineDontBreak, 60 + case lbAny | prNL<<32: + return lbNL, LineDontBreak, 60 + + // LB7. + case lbAny | prSP<<32: + return lbSP, LineDontBreak, 70 + case lbAny | prZW<<32: + return lbZW, LineDontBreak, 70 + + // LB8. + case lbZW | prSP<<32: + return lbZW, LineDontBreak, 70 + case lbZW | prAny<<32: + return lbAny, LineCanBreak, 80 + + // LB11. + case lbAny | prWJ<<32: + return lbWJ, LineDontBreak, 110 + case lbWJ | prAny<<32: + return lbAny, LineDontBreak, 110 + + // LB12. + case lbAny | prGL<<32: + return lbGL, LineCanBreak, 310 + case lbGL | prAny<<32: + return lbAny, LineDontBreak, 120 + + // LB13 (simple transitions). + case lbAny | prCL<<32: + return lbCL, LineCanBreak, 310 + case lbAny | prCP<<32: + return lbCP, LineCanBreak, 310 + case lbAny | prEX<<32: + return lbEX, LineDontBreak, 130 + case lbAny | prIS<<32: + return lbIS, LineCanBreak, 310 + case lbAny | prSY<<32: + return lbSY, LineCanBreak, 310 + + // LB14. + case lbAny | prOP<<32: + return lbOP, LineCanBreak, 310 + case lbOP | prSP<<32: + return lbOP, LineDontBreak, 70 + case lbOP | prAny<<32: + return lbAny, LineDontBreak, 140 + + // LB15. + case lbQU | prSP<<32: + return lbQUSP, LineDontBreak, 70 + case lbQU | prOP<<32: + return lbOP, LineDontBreak, 150 + case lbQUSP | prOP<<32: + return lbOP, LineDontBreak, 150 + + // LB16. + case lbCL | prSP<<32: + return lbCLCPSP, LineDontBreak, 70 + case lbNUCL | prSP<<32: + return lbCLCPSP, LineDontBreak, 70 + case lbCP | prSP<<32: + return lbCLCPSP, LineDontBreak, 70 + case lbNUCP | prSP<<32: + return lbCLCPSP, LineDontBreak, 70 + case lbCL | prNS<<32: + return lbNS, LineDontBreak, 160 + case lbNUCL | prNS<<32: + return lbNS, LineDontBreak, 160 + case lbCP | prNS<<32: + return lbNS, LineDontBreak, 160 + case lbNUCP | prNS<<32: + return lbNS, LineDontBreak, 160 + case lbCLCPSP | prNS<<32: + return lbNS, LineDontBreak, 160 + + // LB17. + case lbAny | prB2<<32: + return lbB2, LineCanBreak, 310 + case lbB2 | prSP<<32: + return lbB2SP, LineDontBreak, 70 + case lbB2 | prB2<<32: + return lbB2, LineDontBreak, 170 + case lbB2SP | prB2<<32: + return lbB2, LineDontBreak, 170 + + // LB18. + case lbSP | prAny<<32: + return lbAny, LineCanBreak, 180 + case lbQUSP | prAny<<32: + return lbAny, LineCanBreak, 180 + case lbCLCPSP | prAny<<32: + return lbAny, LineCanBreak, 180 + case lbB2SP | prAny<<32: + return lbAny, LineCanBreak, 180 + + // LB19. + case lbAny | prQU<<32: + return lbQU, LineDontBreak, 190 + case lbQU | prAny<<32: + return lbAny, LineDontBreak, 190 + + // LB20. + case lbAny | prCB<<32: + return lbCB, LineCanBreak, 200 + case lbCB | prAny<<32: + return lbAny, LineCanBreak, 200 + + // LB21. + case lbAny | prBA<<32: + return lbBA, LineDontBreak, 210 + case lbAny | prHY<<32: + return lbHY, LineDontBreak, 210 + case lbAny | prNS<<32: + return lbNS, LineDontBreak, 210 + case lbAny | prBB<<32: + return lbBB, LineCanBreak, 310 + case lbBB | prAny<<32: + return lbAny, LineDontBreak, 210 + + // LB21a. + case lbAny | prHL<<32: + return lbHL, LineCanBreak, 310 + case lbHL | prHY<<32: + return lbLB21a, LineDontBreak, 210 + case lbHL | prBA<<32: + return lbLB21a, LineDontBreak, 210 + case lbLB21a | prAny<<32: + return lbAny, LineDontBreak, 211 + + // LB21b. + case lbSY | prHL<<32: + return lbHL, LineDontBreak, 212 + case lbNUSY | prHL<<32: + return lbHL, LineDontBreak, 212 + + // LB22. + case lbAny | prIN<<32: + return lbAny, LineDontBreak, 220 + + // LB23. + case lbAny | prAL<<32: + return lbAL, LineCanBreak, 310 + case lbAny | prNU<<32: + return lbNU, LineCanBreak, 310 + case lbAL | prNU<<32: + return lbNU, LineDontBreak, 230 + case lbHL | prNU<<32: + return lbNU, LineDontBreak, 230 + case lbNU | prAL<<32: + return lbAL, LineDontBreak, 230 + case lbNU | prHL<<32: + return lbHL, LineDontBreak, 230 + case lbNUNU | prAL<<32: + return lbAL, LineDontBreak, 230 + case lbNUNU | prHL<<32: + return lbHL, LineDontBreak, 230 + + // LB23a. + case lbAny | prPR<<32: + return lbPR, LineCanBreak, 310 + case lbAny | prID<<32: + return lbIDEM, LineCanBreak, 310 + case lbAny | prEB<<32: + return lbEB, LineCanBreak, 310 + case lbAny | prEM<<32: + return lbIDEM, LineCanBreak, 310 + case lbPR | prID<<32: + return lbIDEM, LineDontBreak, 231 + case lbPR | prEB<<32: + return lbEB, LineDontBreak, 231 + case lbPR | prEM<<32: + return lbIDEM, LineDontBreak, 231 + case lbIDEM | prPO<<32: + return lbPO, LineDontBreak, 231 + case lbEB | prPO<<32: + return lbPO, LineDontBreak, 231 + + // LB24. + case lbAny | prPO<<32: + return lbPO, LineCanBreak, 310 + case lbPR | prAL<<32: + return lbAL, LineDontBreak, 240 + case lbPR | prHL<<32: + return lbHL, LineDontBreak, 240 + case lbPO | prAL<<32: + return lbAL, LineDontBreak, 240 + case lbPO | prHL<<32: + return lbHL, LineDontBreak, 240 + case lbAL | prPR<<32: + return lbPR, LineDontBreak, 240 + case lbAL | prPO<<32: + return lbPO, LineDontBreak, 240 + case lbHL | prPR<<32: + return lbPR, LineDontBreak, 240 + case lbHL | prPO<<32: + return lbPO, LineDontBreak, 240 + + // LB25 (simple transitions). + case lbPR | prNU<<32: + return lbNU, LineDontBreak, 250 + case lbPO | prNU<<32: + return lbNU, LineDontBreak, 250 + case lbOP | prNU<<32: + return lbNU, LineDontBreak, 250 + case lbHY | prNU<<32: + return lbNU, LineDontBreak, 250 + case lbNU | prNU<<32: + return lbNUNU, LineDontBreak, 250 + case lbNU | prSY<<32: + return lbNUSY, LineDontBreak, 250 + case lbNU | prIS<<32: + return lbNUIS, LineDontBreak, 250 + case lbNUNU | prNU<<32: + return lbNUNU, LineDontBreak, 250 + case lbNUNU | prSY<<32: + return lbNUSY, LineDontBreak, 250 + case lbNUNU | prIS<<32: + return lbNUIS, LineDontBreak, 250 + case lbNUSY | prNU<<32: + return lbNUNU, LineDontBreak, 250 + case lbNUSY | prSY<<32: + return lbNUSY, LineDontBreak, 250 + case lbNUSY | prIS<<32: + return lbNUIS, LineDontBreak, 250 + case lbNUIS | prNU<<32: + return lbNUNU, LineDontBreak, 250 + case lbNUIS | prSY<<32: + return lbNUSY, LineDontBreak, 250 + case lbNUIS | prIS<<32: + return lbNUIS, LineDontBreak, 250 + case lbNU | prCL<<32: + return lbNUCL, LineDontBreak, 250 + case lbNU | prCP<<32: + return lbNUCP, LineDontBreak, 250 + case lbNUNU | prCL<<32: + return lbNUCL, LineDontBreak, 250 + case lbNUNU | prCP<<32: + return lbNUCP, LineDontBreak, 250 + case lbNUSY | prCL<<32: + return lbNUCL, LineDontBreak, 250 + case lbNUSY | prCP<<32: + return lbNUCP, LineDontBreak, 250 + case lbNUIS | prCL<<32: + return lbNUCL, LineDontBreak, 250 + case lbNUIS | prCP<<32: + return lbNUCP, LineDontBreak, 250 + case lbNU | prPO<<32: + return lbPO, LineDontBreak, 250 + case lbNUNU | prPO<<32: + return lbPO, LineDontBreak, 250 + case lbNUSY | prPO<<32: + return lbPO, LineDontBreak, 250 + case lbNUIS | prPO<<32: + return lbPO, LineDontBreak, 250 + case lbNUCL | prPO<<32: + return lbPO, LineDontBreak, 250 + case lbNUCP | prPO<<32: + return lbPO, LineDontBreak, 250 + case lbNU | prPR<<32: + return lbPR, LineDontBreak, 250 + case lbNUNU | prPR<<32: + return lbPR, LineDontBreak, 250 + case lbNUSY | prPR<<32: + return lbPR, LineDontBreak, 250 + case lbNUIS | prPR<<32: + return lbPR, LineDontBreak, 250 + case lbNUCL | prPR<<32: + return lbPR, LineDontBreak, 250 + case lbNUCP | prPR<<32: + return lbPR, LineDontBreak, 250 + + // LB26. + case lbAny | prJL<<32: + return lbJL, LineCanBreak, 310 + case lbAny | prJV<<32: + return lbJV, LineCanBreak, 310 + case lbAny | prJT<<32: + return lbJT, LineCanBreak, 310 + case lbAny | prH2<<32: + return lbH2, LineCanBreak, 310 + case lbAny | prH3<<32: + return lbH3, LineCanBreak, 310 + case lbJL | prJL<<32: + return lbJL, LineDontBreak, 260 + case lbJL | prJV<<32: + return lbJV, LineDontBreak, 260 + case lbJL | prH2<<32: + return lbH2, LineDontBreak, 260 + case lbJL | prH3<<32: + return lbH3, LineDontBreak, 260 + case lbJV | prJV<<32: + return lbJV, LineDontBreak, 260 + case lbJV | prJT<<32: + return lbJT, LineDontBreak, 260 + case lbH2 | prJV<<32: + return lbJV, LineDontBreak, 260 + case lbH2 | prJT<<32: + return lbJT, LineDontBreak, 260 + case lbJT | prJT<<32: + return lbJT, LineDontBreak, 260 + case lbH3 | prJT<<32: + return lbJT, LineDontBreak, 260 + + // LB27. + case lbJL | prPO<<32: + return lbPO, LineDontBreak, 270 + case lbJV | prPO<<32: + return lbPO, LineDontBreak, 270 + case lbJT | prPO<<32: + return lbPO, LineDontBreak, 270 + case lbH2 | prPO<<32: + return lbPO, LineDontBreak, 270 + case lbH3 | prPO<<32: + return lbPO, LineDontBreak, 270 + case lbPR | prJL<<32: + return lbJL, LineDontBreak, 270 + case lbPR | prJV<<32: + return lbJV, LineDontBreak, 270 + case lbPR | prJT<<32: + return lbJT, LineDontBreak, 270 + case lbPR | prH2<<32: + return lbH2, LineDontBreak, 270 + case lbPR | prH3<<32: + return lbH3, LineDontBreak, 270 + + // LB28. + case lbAL | prAL<<32: + return lbAL, LineDontBreak, 280 + case lbAL | prHL<<32: + return lbHL, LineDontBreak, 280 + case lbHL | prAL<<32: + return lbAL, LineDontBreak, 280 + case lbHL | prHL<<32: + return lbHL, LineDontBreak, 280 + + // LB29. + case lbIS | prAL<<32: + return lbAL, LineDontBreak, 290 + case lbIS | prHL<<32: + return lbHL, LineDontBreak, 290 + case lbNUIS | prAL<<32: + return lbAL, LineDontBreak, 290 + case lbNUIS | prHL<<32: + return lbHL, LineDontBreak, 290 + + default: + return -1, -1, -1 + } +} + +// transitionLineBreakState determines the new state of the line break parser +// given the current state and the next code point. It also returns the type of +// line break: LineDontBreak, LineCanBreak, or LineMustBreak. If more than one +// code point is needed to determine the new state, the byte slice or the string +// starting after rune "r" can be used (whichever is not nil or empty) for +// further lookups. +func transitionLineBreakState(state int, r rune, b []byte, str string) (newState int, lineBreak int) { + // Determine the property of the next character. + nextProperty, generalCategory := propertyLineBreak(r) + + // Prepare. + var forceNoBreak, isCPeaFWH bool + if state >= 0 && state&lbCPeaFWHBit != 0 { + isCPeaFWH = true // LB30: CP but ea is not F, W, or H. + state = state &^ lbCPeaFWHBit + } + if state >= 0 && state&lbZWJBit != 0 { + state = state &^ lbZWJBit // Extract zero-width joiner bit. + forceNoBreak = true // LB8a. + } + + defer func() { + // Transition into LB30. + if newState == lbCP || newState == lbNUCP { + ea := propertyEastAsianWidth(r) + if ea != prF && ea != prW && ea != prH { + newState |= lbCPeaFWHBit + } + } + + // Override break. + if forceNoBreak { + lineBreak = LineDontBreak + } + }() + + // LB1. + if nextProperty == prAI || nextProperty == prSG || nextProperty == prXX { + nextProperty = prAL + } else if nextProperty == prSA { + if generalCategory == gcMn || generalCategory == gcMc { + nextProperty = prCM + } else { + nextProperty = prAL + } + } else if nextProperty == prCJ { + nextProperty = prNS + } + + // Combining marks. + if nextProperty == prZWJ || nextProperty == prCM { + var bit int + if nextProperty == prZWJ { + bit = lbZWJBit + } + mustBreakState := state < 0 || state == lbBK || state == lbCR || state == lbLF || state == lbNL + if !mustBreakState && state != lbSP && state != lbZW && state != lbQUSP && state != lbCLCPSP && state != lbB2SP { + // LB9. + return state | bit, LineDontBreak + } else { + // LB10. + if mustBreakState { + return lbAL | bit, LineMustBreak + } + return lbAL | bit, LineCanBreak + } + } + + // Find the applicable transition in the table. + var rule int + newState, lineBreak, rule = lbTransitions(state, nextProperty) + if newState < 0 { + // No specific transition found. Try the less specific ones. + anyPropProp, anyPropLineBreak, anyPropRule := lbTransitions(state, prAny) + anyStateProp, anyStateLineBreak, anyStateRule := lbTransitions(lbAny, nextProperty) + if anyPropProp >= 0 && anyStateProp >= 0 { + // Both apply. We'll use a mix (see comments for grTransitions). + newState, lineBreak, rule = anyStateProp, anyStateLineBreak, anyStateRule + if anyPropRule < anyStateRule { + lineBreak, rule = anyPropLineBreak, anyPropRule + } + } else if anyPropProp >= 0 { + // We only have a specific state. + newState, lineBreak, rule = anyPropProp, anyPropLineBreak, anyPropRule + // This branch will probably never be reached because okAnyState will + // always be true given the current transition map. But we keep it here + // for future modifications to the transition map where this may not be + // true anymore. + } else if anyStateProp >= 0 { + // We only have a specific property. + newState, lineBreak, rule = anyStateProp, anyStateLineBreak, anyStateRule + } else { + // No known transition. LB31: ALL ÷ ALL. + newState, lineBreak, rule = lbAny, LineCanBreak, 310 + } + } + + // LB12a. + if rule > 121 && + nextProperty == prGL && + (state != lbSP && state != lbBA && state != lbHY && state != lbLB21a && state != lbQUSP && state != lbCLCPSP && state != lbB2SP) { + return lbGL, LineDontBreak + } + + // LB13. + if rule > 130 && state != lbNU && state != lbNUNU { + switch nextProperty { + case prCL: + return lbCL, LineDontBreak + case prCP: + return lbCP, LineDontBreak + case prIS: + return lbIS, LineDontBreak + case prSY: + return lbSY, LineDontBreak + } + } + + // LB25 (look ahead). + if rule > 250 && + (state == lbPR || state == lbPO) && + nextProperty == prOP || nextProperty == prHY { + var r rune + if b != nil { // Byte slice version. + r, _ = utf8.DecodeRune(b) + } else { // String version. + r, _ = utf8.DecodeRuneInString(str) + } + if r != utf8.RuneError { + pr, _ := propertyLineBreak(r) + if pr == prNU { + return lbNU, LineDontBreak + } + } + } + + // LB30 (part one). + if rule > 300 { + if (state == lbAL || state == lbHL || state == lbNU || state == lbNUNU) && nextProperty == prOP { + ea := propertyEastAsianWidth(r) + if ea != prF && ea != prW && ea != prH { + return lbOP, LineDontBreak + } + } else if isCPeaFWH { + switch nextProperty { + case prAL: + return lbAL, LineDontBreak + case prHL: + return lbHL, LineDontBreak + case prNU: + return lbNU, LineDontBreak + } + } + } + + // LB30a. + if newState == lbAny && nextProperty == prRI { + if state != lbOddRI && state != lbEvenRI { // Includes state == -1. + // Transition into the first RI. + return lbOddRI, lineBreak + } + if state == lbOddRI { + // Don't break pairs of Regional Indicators. + return lbEvenRI, LineDontBreak + } + return lbOddRI, lineBreak + } + + // LB30b. + if rule > 302 { + if nextProperty == prEM { + if state == lbEB || state == lbExtPicCn { + return prAny, LineDontBreak + } + } + graphemeProperty := propertyGraphemes(r) + if graphemeProperty == prExtendedPictographic && generalCategory == gcCn { + return lbExtPicCn, LineCanBreak + } + } + + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/properties.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/properties.go new file mode 100644 index 0000000..6290e68 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/properties.go @@ -0,0 +1,208 @@ +package uniseg + +// The Unicode properties as used in the various parsers. Only the ones needed +// in the context of this package are included. +const ( + prXX = 0 // Same as prAny. + prAny = iota // prAny must be 0. + prPrepend // Grapheme properties must come first, to reduce the number of bits stored in the state vector. + prCR + prLF + prControl + prExtend + prRegionalIndicator + prSpacingMark + prL + prV + prT + prLV + prLVT + prZWJ + prExtendedPictographic + prNewline + prWSegSpace + prDoubleQuote + prSingleQuote + prMidNumLet + prNumeric + prMidLetter + prMidNum + prExtendNumLet + prALetter + prFormat + prHebrewLetter + prKatakana + prSp + prSTerm + prClose + prSContinue + prATerm + prUpper + prLower + prSep + prOLetter + prCM + prBA + prBK + prSP + prEX + prQU + prAL + prPR + prPO + prOP + prCP + prIS + prHY + prSY + prNU + prCL + prNL + prGL + prAI + prBB + prHL + prSA + prJL + prJV + prJT + prNS + prZW + prB2 + prIN + prWJ + prID + prEB + prCJ + prH2 + prH3 + prSG + prCB + prRI + prEM + prN + prNa + prA + prW + prH + prF + prEmojiPresentation +) + +// Unicode General Categories. Only the ones needed in the context of this +// package are included. +const ( + gcNone = iota // gcNone must be 0. + gcCc + gcZs + gcPo + gcSc + gcPs + gcPe + gcSm + gcPd + gcNd + gcLu + gcSk + gcPc + gcLl + gcSo + gcLo + gcPi + gcCf + gcNo + gcPf + gcLC + gcLm + gcMn + gcMe + gcMc + gcNl + gcZl + gcZp + gcCn + gcCs + gcCo +) + +// Special code points. +const ( + vs15 = 0xfe0e // Variation Selector-15 (text presentation) + vs16 = 0xfe0f // Variation Selector-16 (emoji presentation) +) + +// propertySearch performs a binary search on a property slice and returns the +// entry whose range (start = first array element, end = second array element) +// includes r, or an array of 0's if no such entry was found. +func propertySearch[E interface{ [3]int | [4]int }](dictionary []E, r rune) (result E) { + // Run a binary search. + from := 0 + to := len(dictionary) + for to > from { + middle := (from + to) / 2 + cpRange := dictionary[middle] + if int(r) < cpRange[0] { + to = middle + continue + } + if int(r) > cpRange[1] { + from = middle + 1 + continue + } + return cpRange + } + return +} + +// property returns the Unicode property value (see constants above) of the +// given code point. +func property(dictionary [][3]int, r rune) int { + return propertySearch(dictionary, r)[2] +} + +// propertyLineBreak returns the Unicode property value and General Category +// (see constants above) of the given code point, as listed in the line break +// code points table, while fast tracking ASCII digits and letters. +func propertyLineBreak(r rune) (property, generalCategory int) { + if r >= 'a' && r <= 'z' { + return prAL, gcLl + } + if r >= 'A' && r <= 'Z' { + return prAL, gcLu + } + if r >= '0' && r <= '9' { + return prNU, gcNd + } + entry := propertySearch(lineBreakCodePoints, r) + return entry[2], entry[3] +} + +// propertyGraphemes returns the Unicode grapheme cluster property value of the +// given code point while fast tracking ASCII characters. +func propertyGraphemes(r rune) int { + if r >= 0x20 && r <= 0x7e { + return prAny + } + if r == 0x0a { + return prLF + } + if r == 0x0d { + return prCR + } + if r >= 0 && r <= 0x1f || r == 0x7f { + return prControl + } + return property(graphemeCodePoints, r) +} + +// propertyEastAsianWidth returns the Unicode East Asian Width property value of +// the given code point while fast tracking ASCII characters. +func propertyEastAsianWidth(r rune) int { + if r >= 0x20 && r <= 0x7e { + return prNa + } + if r >= 0 && r <= 0x1f || r == 0x7f { + return prN + } + return property(eastAsianWidth, r) +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentence.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentence.go new file mode 100644 index 0000000..adc2a35 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentence.go @@ -0,0 +1,90 @@ +package uniseg + +import "unicode/utf8" + +// FirstSentence returns the first sentence found in the given byte slice +// according to the rules of [Unicode Standard Annex #29, Sentence Boundaries]. +// This function can be called continuously to extract all sentences from a byte +// slice, as illustrated in the example below. +// +// If you don't know the current state, for example when calling the function +// for the first time, you must pass -1. For consecutive calls, pass the state +// and rest slice returned by the previous call. +// +// The "rest" slice is the sub-slice of the original byte slice "b" starting +// after the last byte of the identified sentence. If the length of the "rest" +// slice is 0, the entire byte slice "b" has been processed. The "sentence" byte +// slice is the sub-slice of the input slice containing the identified sentence. +// +// Given an empty byte slice "b", the function returns nil values. +// +// [Unicode Standard Annex #29, Sentence Boundaries]: http://unicode.org/reports/tr29/#Sentence_Boundaries +func FirstSentence(b []byte, state int) (sentence, rest []byte, newState int) { + // An empty byte slice returns nothing. + if len(b) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRune(b) + if len(b) <= length { // If we're already past the end, there is nothing else to parse. + return b, nil, sbAny + } + + // If we don't know the state, determine it now. + if state < 0 { + state, _ = transitionSentenceBreakState(state, r, b[length:], "") + } + + // Transition until we find a boundary. + var boundary bool + for { + r, l := utf8.DecodeRune(b[length:]) + state, boundary = transitionSentenceBreakState(state, r, b[length+l:], "") + + if boundary { + return b[:length], b[length:], state + } + + length += l + if len(b) <= length { + return b, nil, sbAny + } + } +} + +// FirstSentenceInString is like [FirstSentence] but its input and outputs are +// strings. +func FirstSentenceInString(str string, state int) (sentence, rest string, newState int) { + // An empty byte slice returns nothing. + if len(str) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRuneInString(str) + if len(str) <= length { // If we're already past the end, there is nothing else to parse. + return str, "", sbAny + } + + // If we don't know the state, determine it now. + if state < 0 { + state, _ = transitionSentenceBreakState(state, r, nil, str[length:]) + } + + // Transition until we find a boundary. + var boundary bool + for { + r, l := utf8.DecodeRuneInString(str[length:]) + state, boundary = transitionSentenceBreakState(state, r, nil, str[length+l:]) + + if boundary { + return str[:length], str[length:], state + } + + length += l + if len(str) <= length { + return str, "", sbAny + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentenceproperties.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentenceproperties.go new file mode 100644 index 0000000..67717ec --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentenceproperties.go @@ -0,0 +1,2845 @@ +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// sentenceBreakCodePoints are taken from +// https://www.unicode.org/Public/15.0.0/ucd/auxiliary/SentenceBreakProperty.txt +// and +// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var sentenceBreakCodePoints = [][3]int{ + {0x0009, 0x0009, prSp}, // Cc + {0x000A, 0x000A, prLF}, // Cc + {0x000B, 0x000C, prSp}, // Cc [2] .. + {0x000D, 0x000D, prCR}, // Cc + {0x0020, 0x0020, prSp}, // Zs SPACE + {0x0021, 0x0021, prSTerm}, // Po EXCLAMATION MARK + {0x0022, 0x0022, prClose}, // Po QUOTATION MARK + {0x0027, 0x0027, prClose}, // Po APOSTROPHE + {0x0028, 0x0028, prClose}, // Ps LEFT PARENTHESIS + {0x0029, 0x0029, prClose}, // Pe RIGHT PARENTHESIS + {0x002C, 0x002C, prSContinue}, // Po COMMA + {0x002D, 0x002D, prSContinue}, // Pd HYPHEN-MINUS + {0x002E, 0x002E, prATerm}, // Po FULL STOP + {0x0030, 0x0039, prNumeric}, // Nd [10] DIGIT ZERO..DIGIT NINE + {0x003A, 0x003A, prSContinue}, // Po COLON + {0x003F, 0x003F, prSTerm}, // Po QUESTION MARK + {0x0041, 0x005A, prUpper}, // L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z + {0x005B, 0x005B, prClose}, // Ps LEFT SQUARE BRACKET + {0x005D, 0x005D, prClose}, // Pe RIGHT SQUARE BRACKET + {0x0061, 0x007A, prLower}, // L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z + {0x007B, 0x007B, prClose}, // Ps LEFT CURLY BRACKET + {0x007D, 0x007D, prClose}, // Pe RIGHT CURLY BRACKET + {0x0085, 0x0085, prSep}, // Cc + {0x00A0, 0x00A0, prSp}, // Zs NO-BREAK SPACE + {0x00AA, 0x00AA, prLower}, // Lo FEMININE ORDINAL INDICATOR + {0x00AB, 0x00AB, prClose}, // Pi LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + {0x00AD, 0x00AD, prFormat}, // Cf SOFT HYPHEN + {0x00B5, 0x00B5, prLower}, // L& MICRO SIGN + {0x00BA, 0x00BA, prLower}, // Lo MASCULINE ORDINAL INDICATOR + {0x00BB, 0x00BB, prClose}, // Pf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + {0x00C0, 0x00D6, prUpper}, // L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS + {0x00D8, 0x00DE, prUpper}, // L& [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN + {0x00DF, 0x00F6, prLower}, // L& [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS + {0x00F8, 0x00FF, prLower}, // L& [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS + {0x0100, 0x0100, prUpper}, // L& LATIN CAPITAL LETTER A WITH MACRON + {0x0101, 0x0101, prLower}, // L& LATIN SMALL LETTER A WITH MACRON + {0x0102, 0x0102, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE + {0x0103, 0x0103, prLower}, // L& LATIN SMALL LETTER A WITH BREVE + {0x0104, 0x0104, prUpper}, // L& LATIN CAPITAL LETTER A WITH OGONEK + {0x0105, 0x0105, prLower}, // L& LATIN SMALL LETTER A WITH OGONEK + {0x0106, 0x0106, prUpper}, // L& LATIN CAPITAL LETTER C WITH ACUTE + {0x0107, 0x0107, prLower}, // L& LATIN SMALL LETTER C WITH ACUTE + {0x0108, 0x0108, prUpper}, // L& LATIN CAPITAL LETTER C WITH CIRCUMFLEX + {0x0109, 0x0109, prLower}, // L& LATIN SMALL LETTER C WITH CIRCUMFLEX + {0x010A, 0x010A, prUpper}, // L& LATIN CAPITAL LETTER C WITH DOT ABOVE + {0x010B, 0x010B, prLower}, // L& LATIN SMALL LETTER C WITH DOT ABOVE + {0x010C, 0x010C, prUpper}, // L& LATIN CAPITAL LETTER C WITH CARON + {0x010D, 0x010D, prLower}, // L& LATIN SMALL LETTER C WITH CARON + {0x010E, 0x010E, prUpper}, // L& LATIN CAPITAL LETTER D WITH CARON + {0x010F, 0x010F, prLower}, // L& LATIN SMALL LETTER D WITH CARON + {0x0110, 0x0110, prUpper}, // L& LATIN CAPITAL LETTER D WITH STROKE + {0x0111, 0x0111, prLower}, // L& LATIN SMALL LETTER D WITH STROKE + {0x0112, 0x0112, prUpper}, // L& LATIN CAPITAL LETTER E WITH MACRON + {0x0113, 0x0113, prLower}, // L& LATIN SMALL LETTER E WITH MACRON + {0x0114, 0x0114, prUpper}, // L& LATIN CAPITAL LETTER E WITH BREVE + {0x0115, 0x0115, prLower}, // L& LATIN SMALL LETTER E WITH BREVE + {0x0116, 0x0116, prUpper}, // L& LATIN CAPITAL LETTER E WITH DOT ABOVE + {0x0117, 0x0117, prLower}, // L& LATIN SMALL LETTER E WITH DOT ABOVE + {0x0118, 0x0118, prUpper}, // L& LATIN CAPITAL LETTER E WITH OGONEK + {0x0119, 0x0119, prLower}, // L& LATIN SMALL LETTER E WITH OGONEK + {0x011A, 0x011A, prUpper}, // L& LATIN CAPITAL LETTER E WITH CARON + {0x011B, 0x011B, prLower}, // L& LATIN SMALL LETTER E WITH CARON + {0x011C, 0x011C, prUpper}, // L& LATIN CAPITAL LETTER G WITH CIRCUMFLEX + {0x011D, 0x011D, prLower}, // L& LATIN SMALL LETTER G WITH CIRCUMFLEX + {0x011E, 0x011E, prUpper}, // L& LATIN CAPITAL LETTER G WITH BREVE + {0x011F, 0x011F, prLower}, // L& LATIN SMALL LETTER G WITH BREVE + {0x0120, 0x0120, prUpper}, // L& LATIN CAPITAL LETTER G WITH DOT ABOVE + {0x0121, 0x0121, prLower}, // L& LATIN SMALL LETTER G WITH DOT ABOVE + {0x0122, 0x0122, prUpper}, // L& LATIN CAPITAL LETTER G WITH CEDILLA + {0x0123, 0x0123, prLower}, // L& LATIN SMALL LETTER G WITH CEDILLA + {0x0124, 0x0124, prUpper}, // L& LATIN CAPITAL LETTER H WITH CIRCUMFLEX + {0x0125, 0x0125, prLower}, // L& LATIN SMALL LETTER H WITH CIRCUMFLEX + {0x0126, 0x0126, prUpper}, // L& LATIN CAPITAL LETTER H WITH STROKE + {0x0127, 0x0127, prLower}, // L& LATIN SMALL LETTER H WITH STROKE + {0x0128, 0x0128, prUpper}, // L& LATIN CAPITAL LETTER I WITH TILDE + {0x0129, 0x0129, prLower}, // L& LATIN SMALL LETTER I WITH TILDE + {0x012A, 0x012A, prUpper}, // L& LATIN CAPITAL LETTER I WITH MACRON + {0x012B, 0x012B, prLower}, // L& LATIN SMALL LETTER I WITH MACRON + {0x012C, 0x012C, prUpper}, // L& LATIN CAPITAL LETTER I WITH BREVE + {0x012D, 0x012D, prLower}, // L& LATIN SMALL LETTER I WITH BREVE + {0x012E, 0x012E, prUpper}, // L& LATIN CAPITAL LETTER I WITH OGONEK + {0x012F, 0x012F, prLower}, // L& LATIN SMALL LETTER I WITH OGONEK + {0x0130, 0x0130, prUpper}, // L& LATIN CAPITAL LETTER I WITH DOT ABOVE + {0x0131, 0x0131, prLower}, // L& LATIN SMALL LETTER DOTLESS I + {0x0132, 0x0132, prUpper}, // L& LATIN CAPITAL LIGATURE IJ + {0x0133, 0x0133, prLower}, // L& LATIN SMALL LIGATURE IJ + {0x0134, 0x0134, prUpper}, // L& LATIN CAPITAL LETTER J WITH CIRCUMFLEX + {0x0135, 0x0135, prLower}, // L& LATIN SMALL LETTER J WITH CIRCUMFLEX + {0x0136, 0x0136, prUpper}, // L& LATIN CAPITAL LETTER K WITH CEDILLA + {0x0137, 0x0138, prLower}, // L& [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA + {0x0139, 0x0139, prUpper}, // L& LATIN CAPITAL LETTER L WITH ACUTE + {0x013A, 0x013A, prLower}, // L& LATIN SMALL LETTER L WITH ACUTE + {0x013B, 0x013B, prUpper}, // L& LATIN CAPITAL LETTER L WITH CEDILLA + {0x013C, 0x013C, prLower}, // L& LATIN SMALL LETTER L WITH CEDILLA + {0x013D, 0x013D, prUpper}, // L& LATIN CAPITAL LETTER L WITH CARON + {0x013E, 0x013E, prLower}, // L& LATIN SMALL LETTER L WITH CARON + {0x013F, 0x013F, prUpper}, // L& LATIN CAPITAL LETTER L WITH MIDDLE DOT + {0x0140, 0x0140, prLower}, // L& LATIN SMALL LETTER L WITH MIDDLE DOT + {0x0141, 0x0141, prUpper}, // L& LATIN CAPITAL LETTER L WITH STROKE + {0x0142, 0x0142, prLower}, // L& LATIN SMALL LETTER L WITH STROKE + {0x0143, 0x0143, prUpper}, // L& LATIN CAPITAL LETTER N WITH ACUTE + {0x0144, 0x0144, prLower}, // L& LATIN SMALL LETTER N WITH ACUTE + {0x0145, 0x0145, prUpper}, // L& LATIN CAPITAL LETTER N WITH CEDILLA + {0x0146, 0x0146, prLower}, // L& LATIN SMALL LETTER N WITH CEDILLA + {0x0147, 0x0147, prUpper}, // L& LATIN CAPITAL LETTER N WITH CARON + {0x0148, 0x0149, prLower}, // L& [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE + {0x014A, 0x014A, prUpper}, // L& LATIN CAPITAL LETTER ENG + {0x014B, 0x014B, prLower}, // L& LATIN SMALL LETTER ENG + {0x014C, 0x014C, prUpper}, // L& LATIN CAPITAL LETTER O WITH MACRON + {0x014D, 0x014D, prLower}, // L& LATIN SMALL LETTER O WITH MACRON + {0x014E, 0x014E, prUpper}, // L& LATIN CAPITAL LETTER O WITH BREVE + {0x014F, 0x014F, prLower}, // L& LATIN SMALL LETTER O WITH BREVE + {0x0150, 0x0150, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOUBLE ACUTE + {0x0151, 0x0151, prLower}, // L& LATIN SMALL LETTER O WITH DOUBLE ACUTE + {0x0152, 0x0152, prUpper}, // L& LATIN CAPITAL LIGATURE OE + {0x0153, 0x0153, prLower}, // L& LATIN SMALL LIGATURE OE + {0x0154, 0x0154, prUpper}, // L& LATIN CAPITAL LETTER R WITH ACUTE + {0x0155, 0x0155, prLower}, // L& LATIN SMALL LETTER R WITH ACUTE + {0x0156, 0x0156, prUpper}, // L& LATIN CAPITAL LETTER R WITH CEDILLA + {0x0157, 0x0157, prLower}, // L& LATIN SMALL LETTER R WITH CEDILLA + {0x0158, 0x0158, prUpper}, // L& LATIN CAPITAL LETTER R WITH CARON + {0x0159, 0x0159, prLower}, // L& LATIN SMALL LETTER R WITH CARON + {0x015A, 0x015A, prUpper}, // L& LATIN CAPITAL LETTER S WITH ACUTE + {0x015B, 0x015B, prLower}, // L& LATIN SMALL LETTER S WITH ACUTE + {0x015C, 0x015C, prUpper}, // L& LATIN CAPITAL LETTER S WITH CIRCUMFLEX + {0x015D, 0x015D, prLower}, // L& LATIN SMALL LETTER S WITH CIRCUMFLEX + {0x015E, 0x015E, prUpper}, // L& LATIN CAPITAL LETTER S WITH CEDILLA + {0x015F, 0x015F, prLower}, // L& LATIN SMALL LETTER S WITH CEDILLA + {0x0160, 0x0160, prUpper}, // L& LATIN CAPITAL LETTER S WITH CARON + {0x0161, 0x0161, prLower}, // L& LATIN SMALL LETTER S WITH CARON + {0x0162, 0x0162, prUpper}, // L& LATIN CAPITAL LETTER T WITH CEDILLA + {0x0163, 0x0163, prLower}, // L& LATIN SMALL LETTER T WITH CEDILLA + {0x0164, 0x0164, prUpper}, // L& LATIN CAPITAL LETTER T WITH CARON + {0x0165, 0x0165, prLower}, // L& LATIN SMALL LETTER T WITH CARON + {0x0166, 0x0166, prUpper}, // L& LATIN CAPITAL LETTER T WITH STROKE + {0x0167, 0x0167, prLower}, // L& LATIN SMALL LETTER T WITH STROKE + {0x0168, 0x0168, prUpper}, // L& LATIN CAPITAL LETTER U WITH TILDE + {0x0169, 0x0169, prLower}, // L& LATIN SMALL LETTER U WITH TILDE + {0x016A, 0x016A, prUpper}, // L& LATIN CAPITAL LETTER U WITH MACRON + {0x016B, 0x016B, prLower}, // L& LATIN SMALL LETTER U WITH MACRON + {0x016C, 0x016C, prUpper}, // L& LATIN CAPITAL LETTER U WITH BREVE + {0x016D, 0x016D, prLower}, // L& LATIN SMALL LETTER U WITH BREVE + {0x016E, 0x016E, prUpper}, // L& LATIN CAPITAL LETTER U WITH RING ABOVE + {0x016F, 0x016F, prLower}, // L& LATIN SMALL LETTER U WITH RING ABOVE + {0x0170, 0x0170, prUpper}, // L& LATIN CAPITAL LETTER U WITH DOUBLE ACUTE + {0x0171, 0x0171, prLower}, // L& LATIN SMALL LETTER U WITH DOUBLE ACUTE + {0x0172, 0x0172, prUpper}, // L& LATIN CAPITAL LETTER U WITH OGONEK + {0x0173, 0x0173, prLower}, // L& LATIN SMALL LETTER U WITH OGONEK + {0x0174, 0x0174, prUpper}, // L& LATIN CAPITAL LETTER W WITH CIRCUMFLEX + {0x0175, 0x0175, prLower}, // L& LATIN SMALL LETTER W WITH CIRCUMFLEX + {0x0176, 0x0176, prUpper}, // L& LATIN CAPITAL LETTER Y WITH CIRCUMFLEX + {0x0177, 0x0177, prLower}, // L& LATIN SMALL LETTER Y WITH CIRCUMFLEX + {0x0178, 0x0179, prUpper}, // L& [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE + {0x017A, 0x017A, prLower}, // L& LATIN SMALL LETTER Z WITH ACUTE + {0x017B, 0x017B, prUpper}, // L& LATIN CAPITAL LETTER Z WITH DOT ABOVE + {0x017C, 0x017C, prLower}, // L& LATIN SMALL LETTER Z WITH DOT ABOVE + {0x017D, 0x017D, prUpper}, // L& LATIN CAPITAL LETTER Z WITH CARON + {0x017E, 0x0180, prLower}, // L& [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE + {0x0181, 0x0182, prUpper}, // L& [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR + {0x0183, 0x0183, prLower}, // L& LATIN SMALL LETTER B WITH TOPBAR + {0x0184, 0x0184, prUpper}, // L& LATIN CAPITAL LETTER TONE SIX + {0x0185, 0x0185, prLower}, // L& LATIN SMALL LETTER TONE SIX + {0x0186, 0x0187, prUpper}, // L& [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK + {0x0188, 0x0188, prLower}, // L& LATIN SMALL LETTER C WITH HOOK + {0x0189, 0x018B, prUpper}, // L& [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR + {0x018C, 0x018D, prLower}, // L& [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA + {0x018E, 0x0191, prUpper}, // L& [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK + {0x0192, 0x0192, prLower}, // L& LATIN SMALL LETTER F WITH HOOK + {0x0193, 0x0194, prUpper}, // L& [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA + {0x0195, 0x0195, prLower}, // L& LATIN SMALL LETTER HV + {0x0196, 0x0198, prUpper}, // L& [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK + {0x0199, 0x019B, prLower}, // L& [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE + {0x019C, 0x019D, prUpper}, // L& [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK + {0x019E, 0x019E, prLower}, // L& LATIN SMALL LETTER N WITH LONG RIGHT LEG + {0x019F, 0x01A0, prUpper}, // L& [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN + {0x01A1, 0x01A1, prLower}, // L& LATIN SMALL LETTER O WITH HORN + {0x01A2, 0x01A2, prUpper}, // L& LATIN CAPITAL LETTER OI + {0x01A3, 0x01A3, prLower}, // L& LATIN SMALL LETTER OI + {0x01A4, 0x01A4, prUpper}, // L& LATIN CAPITAL LETTER P WITH HOOK + {0x01A5, 0x01A5, prLower}, // L& LATIN SMALL LETTER P WITH HOOK + {0x01A6, 0x01A7, prUpper}, // L& [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO + {0x01A8, 0x01A8, prLower}, // L& LATIN SMALL LETTER TONE TWO + {0x01A9, 0x01A9, prUpper}, // L& LATIN CAPITAL LETTER ESH + {0x01AA, 0x01AB, prLower}, // L& [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK + {0x01AC, 0x01AC, prUpper}, // L& LATIN CAPITAL LETTER T WITH HOOK + {0x01AD, 0x01AD, prLower}, // L& LATIN SMALL LETTER T WITH HOOK + {0x01AE, 0x01AF, prUpper}, // L& [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN + {0x01B0, 0x01B0, prLower}, // L& LATIN SMALL LETTER U WITH HORN + {0x01B1, 0x01B3, prUpper}, // L& [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK + {0x01B4, 0x01B4, prLower}, // L& LATIN SMALL LETTER Y WITH HOOK + {0x01B5, 0x01B5, prUpper}, // L& LATIN CAPITAL LETTER Z WITH STROKE + {0x01B6, 0x01B6, prLower}, // L& LATIN SMALL LETTER Z WITH STROKE + {0x01B7, 0x01B8, prUpper}, // L& [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED + {0x01B9, 0x01BA, prLower}, // L& [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL + {0x01BB, 0x01BB, prOLetter}, // Lo LATIN LETTER TWO WITH STROKE + {0x01BC, 0x01BC, prUpper}, // L& LATIN CAPITAL LETTER TONE FIVE + {0x01BD, 0x01BF, prLower}, // L& [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN + {0x01C0, 0x01C3, prOLetter}, // Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK + {0x01C4, 0x01C5, prUpper}, // L& [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON + {0x01C6, 0x01C6, prLower}, // L& LATIN SMALL LETTER DZ WITH CARON + {0x01C7, 0x01C8, prUpper}, // L& [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J + {0x01C9, 0x01C9, prLower}, // L& LATIN SMALL LETTER LJ + {0x01CA, 0x01CB, prUpper}, // L& [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J + {0x01CC, 0x01CC, prLower}, // L& LATIN SMALL LETTER NJ + {0x01CD, 0x01CD, prUpper}, // L& LATIN CAPITAL LETTER A WITH CARON + {0x01CE, 0x01CE, prLower}, // L& LATIN SMALL LETTER A WITH CARON + {0x01CF, 0x01CF, prUpper}, // L& LATIN CAPITAL LETTER I WITH CARON + {0x01D0, 0x01D0, prLower}, // L& LATIN SMALL LETTER I WITH CARON + {0x01D1, 0x01D1, prUpper}, // L& LATIN CAPITAL LETTER O WITH CARON + {0x01D2, 0x01D2, prLower}, // L& LATIN SMALL LETTER O WITH CARON + {0x01D3, 0x01D3, prUpper}, // L& LATIN CAPITAL LETTER U WITH CARON + {0x01D4, 0x01D4, prLower}, // L& LATIN SMALL LETTER U WITH CARON + {0x01D5, 0x01D5, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON + {0x01D6, 0x01D6, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS AND MACRON + {0x01D7, 0x01D7, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE + {0x01D8, 0x01D8, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE + {0x01D9, 0x01D9, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON + {0x01DA, 0x01DA, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS AND CARON + {0x01DB, 0x01DB, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE + {0x01DC, 0x01DD, prLower}, // L& [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E + {0x01DE, 0x01DE, prUpper}, // L& LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON + {0x01DF, 0x01DF, prLower}, // L& LATIN SMALL LETTER A WITH DIAERESIS AND MACRON + {0x01E0, 0x01E0, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON + {0x01E1, 0x01E1, prLower}, // L& LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON + {0x01E2, 0x01E2, prUpper}, // L& LATIN CAPITAL LETTER AE WITH MACRON + {0x01E3, 0x01E3, prLower}, // L& LATIN SMALL LETTER AE WITH MACRON + {0x01E4, 0x01E4, prUpper}, // L& LATIN CAPITAL LETTER G WITH STROKE + {0x01E5, 0x01E5, prLower}, // L& LATIN SMALL LETTER G WITH STROKE + {0x01E6, 0x01E6, prUpper}, // L& LATIN CAPITAL LETTER G WITH CARON + {0x01E7, 0x01E7, prLower}, // L& LATIN SMALL LETTER G WITH CARON + {0x01E8, 0x01E8, prUpper}, // L& LATIN CAPITAL LETTER K WITH CARON + {0x01E9, 0x01E9, prLower}, // L& LATIN SMALL LETTER K WITH CARON + {0x01EA, 0x01EA, prUpper}, // L& LATIN CAPITAL LETTER O WITH OGONEK + {0x01EB, 0x01EB, prLower}, // L& LATIN SMALL LETTER O WITH OGONEK + {0x01EC, 0x01EC, prUpper}, // L& LATIN CAPITAL LETTER O WITH OGONEK AND MACRON + {0x01ED, 0x01ED, prLower}, // L& LATIN SMALL LETTER O WITH OGONEK AND MACRON + {0x01EE, 0x01EE, prUpper}, // L& LATIN CAPITAL LETTER EZH WITH CARON + {0x01EF, 0x01F0, prLower}, // L& [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON + {0x01F1, 0x01F2, prUpper}, // L& [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z + {0x01F3, 0x01F3, prLower}, // L& LATIN SMALL LETTER DZ + {0x01F4, 0x01F4, prUpper}, // L& LATIN CAPITAL LETTER G WITH ACUTE + {0x01F5, 0x01F5, prLower}, // L& LATIN SMALL LETTER G WITH ACUTE + {0x01F6, 0x01F8, prUpper}, // L& [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE + {0x01F9, 0x01F9, prLower}, // L& LATIN SMALL LETTER N WITH GRAVE + {0x01FA, 0x01FA, prUpper}, // L& LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE + {0x01FB, 0x01FB, prLower}, // L& LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE + {0x01FC, 0x01FC, prUpper}, // L& LATIN CAPITAL LETTER AE WITH ACUTE + {0x01FD, 0x01FD, prLower}, // L& LATIN SMALL LETTER AE WITH ACUTE + {0x01FE, 0x01FE, prUpper}, // L& LATIN CAPITAL LETTER O WITH STROKE AND ACUTE + {0x01FF, 0x01FF, prLower}, // L& LATIN SMALL LETTER O WITH STROKE AND ACUTE + {0x0200, 0x0200, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOUBLE GRAVE + {0x0201, 0x0201, prLower}, // L& LATIN SMALL LETTER A WITH DOUBLE GRAVE + {0x0202, 0x0202, prUpper}, // L& LATIN CAPITAL LETTER A WITH INVERTED BREVE + {0x0203, 0x0203, prLower}, // L& LATIN SMALL LETTER A WITH INVERTED BREVE + {0x0204, 0x0204, prUpper}, // L& LATIN CAPITAL LETTER E WITH DOUBLE GRAVE + {0x0205, 0x0205, prLower}, // L& LATIN SMALL LETTER E WITH DOUBLE GRAVE + {0x0206, 0x0206, prUpper}, // L& LATIN CAPITAL LETTER E WITH INVERTED BREVE + {0x0207, 0x0207, prLower}, // L& LATIN SMALL LETTER E WITH INVERTED BREVE + {0x0208, 0x0208, prUpper}, // L& LATIN CAPITAL LETTER I WITH DOUBLE GRAVE + {0x0209, 0x0209, prLower}, // L& LATIN SMALL LETTER I WITH DOUBLE GRAVE + {0x020A, 0x020A, prUpper}, // L& LATIN CAPITAL LETTER I WITH INVERTED BREVE + {0x020B, 0x020B, prLower}, // L& LATIN SMALL LETTER I WITH INVERTED BREVE + {0x020C, 0x020C, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOUBLE GRAVE + {0x020D, 0x020D, prLower}, // L& LATIN SMALL LETTER O WITH DOUBLE GRAVE + {0x020E, 0x020E, prUpper}, // L& LATIN CAPITAL LETTER O WITH INVERTED BREVE + {0x020F, 0x020F, prLower}, // L& LATIN SMALL LETTER O WITH INVERTED BREVE + {0x0210, 0x0210, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOUBLE GRAVE + {0x0211, 0x0211, prLower}, // L& LATIN SMALL LETTER R WITH DOUBLE GRAVE + {0x0212, 0x0212, prUpper}, // L& LATIN CAPITAL LETTER R WITH INVERTED BREVE + {0x0213, 0x0213, prLower}, // L& LATIN SMALL LETTER R WITH INVERTED BREVE + {0x0214, 0x0214, prUpper}, // L& LATIN CAPITAL LETTER U WITH DOUBLE GRAVE + {0x0215, 0x0215, prLower}, // L& LATIN SMALL LETTER U WITH DOUBLE GRAVE + {0x0216, 0x0216, prUpper}, // L& LATIN CAPITAL LETTER U WITH INVERTED BREVE + {0x0217, 0x0217, prLower}, // L& LATIN SMALL LETTER U WITH INVERTED BREVE + {0x0218, 0x0218, prUpper}, // L& LATIN CAPITAL LETTER S WITH COMMA BELOW + {0x0219, 0x0219, prLower}, // L& LATIN SMALL LETTER S WITH COMMA BELOW + {0x021A, 0x021A, prUpper}, // L& LATIN CAPITAL LETTER T WITH COMMA BELOW + {0x021B, 0x021B, prLower}, // L& LATIN SMALL LETTER T WITH COMMA BELOW + {0x021C, 0x021C, prUpper}, // L& LATIN CAPITAL LETTER YOGH + {0x021D, 0x021D, prLower}, // L& LATIN SMALL LETTER YOGH + {0x021E, 0x021E, prUpper}, // L& LATIN CAPITAL LETTER H WITH CARON + {0x021F, 0x021F, prLower}, // L& LATIN SMALL LETTER H WITH CARON + {0x0220, 0x0220, prUpper}, // L& LATIN CAPITAL LETTER N WITH LONG RIGHT LEG + {0x0221, 0x0221, prLower}, // L& LATIN SMALL LETTER D WITH CURL + {0x0222, 0x0222, prUpper}, // L& LATIN CAPITAL LETTER OU + {0x0223, 0x0223, prLower}, // L& LATIN SMALL LETTER OU + {0x0224, 0x0224, prUpper}, // L& LATIN CAPITAL LETTER Z WITH HOOK + {0x0225, 0x0225, prLower}, // L& LATIN SMALL LETTER Z WITH HOOK + {0x0226, 0x0226, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOT ABOVE + {0x0227, 0x0227, prLower}, // L& LATIN SMALL LETTER A WITH DOT ABOVE + {0x0228, 0x0228, prUpper}, // L& LATIN CAPITAL LETTER E WITH CEDILLA + {0x0229, 0x0229, prLower}, // L& LATIN SMALL LETTER E WITH CEDILLA + {0x022A, 0x022A, prUpper}, // L& LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON + {0x022B, 0x022B, prLower}, // L& LATIN SMALL LETTER O WITH DIAERESIS AND MACRON + {0x022C, 0x022C, prUpper}, // L& LATIN CAPITAL LETTER O WITH TILDE AND MACRON + {0x022D, 0x022D, prLower}, // L& LATIN SMALL LETTER O WITH TILDE AND MACRON + {0x022E, 0x022E, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOT ABOVE + {0x022F, 0x022F, prLower}, // L& LATIN SMALL LETTER O WITH DOT ABOVE + {0x0230, 0x0230, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON + {0x0231, 0x0231, prLower}, // L& LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON + {0x0232, 0x0232, prUpper}, // L& LATIN CAPITAL LETTER Y WITH MACRON + {0x0233, 0x0239, prLower}, // L& [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH + {0x023A, 0x023B, prUpper}, // L& [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE + {0x023C, 0x023C, prLower}, // L& LATIN SMALL LETTER C WITH STROKE + {0x023D, 0x023E, prUpper}, // L& [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE + {0x023F, 0x0240, prLower}, // L& [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL + {0x0241, 0x0241, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL STOP + {0x0242, 0x0242, prLower}, // L& LATIN SMALL LETTER GLOTTAL STOP + {0x0243, 0x0246, prUpper}, // L& [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE + {0x0247, 0x0247, prLower}, // L& LATIN SMALL LETTER E WITH STROKE + {0x0248, 0x0248, prUpper}, // L& LATIN CAPITAL LETTER J WITH STROKE + {0x0249, 0x0249, prLower}, // L& LATIN SMALL LETTER J WITH STROKE + {0x024A, 0x024A, prUpper}, // L& LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL + {0x024B, 0x024B, prLower}, // L& LATIN SMALL LETTER Q WITH HOOK TAIL + {0x024C, 0x024C, prUpper}, // L& LATIN CAPITAL LETTER R WITH STROKE + {0x024D, 0x024D, prLower}, // L& LATIN SMALL LETTER R WITH STROKE + {0x024E, 0x024E, prUpper}, // L& LATIN CAPITAL LETTER Y WITH STROKE + {0x024F, 0x0293, prLower}, // L& [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL + {0x0294, 0x0294, prOLetter}, // Lo LATIN LETTER GLOTTAL STOP + {0x0295, 0x02AF, prLower}, // L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL + {0x02B0, 0x02B8, prLower}, // Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y + {0x02B9, 0x02BF, prOLetter}, // Lm [7] MODIFIER LETTER PRIME..MODIFIER LETTER LEFT HALF RING + {0x02C0, 0x02C1, prLower}, // Lm [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP + {0x02C6, 0x02D1, prOLetter}, // Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON + {0x02E0, 0x02E4, prLower}, // Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + {0x02EC, 0x02EC, prOLetter}, // Lm MODIFIER LETTER VOICING + {0x02EE, 0x02EE, prOLetter}, // Lm MODIFIER LETTER DOUBLE APOSTROPHE + {0x0300, 0x036F, prExtend}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X + {0x0370, 0x0370, prUpper}, // L& GREEK CAPITAL LETTER HETA + {0x0371, 0x0371, prLower}, // L& GREEK SMALL LETTER HETA + {0x0372, 0x0372, prUpper}, // L& GREEK CAPITAL LETTER ARCHAIC SAMPI + {0x0373, 0x0373, prLower}, // L& GREEK SMALL LETTER ARCHAIC SAMPI + {0x0374, 0x0374, prOLetter}, // Lm GREEK NUMERAL SIGN + {0x0376, 0x0376, prUpper}, // L& GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA + {0x0377, 0x0377, prLower}, // L& GREEK SMALL LETTER PAMPHYLIAN DIGAMMA + {0x037A, 0x037A, prLower}, // Lm GREEK YPOGEGRAMMENI + {0x037B, 0x037D, prLower}, // L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL + {0x037F, 0x037F, prUpper}, // L& GREEK CAPITAL LETTER YOT + {0x0386, 0x0386, prUpper}, // L& GREEK CAPITAL LETTER ALPHA WITH TONOS + {0x0388, 0x038A, prUpper}, // L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS + {0x038C, 0x038C, prUpper}, // L& GREEK CAPITAL LETTER OMICRON WITH TONOS + {0x038E, 0x038F, prUpper}, // L& [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS + {0x0390, 0x0390, prLower}, // L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS + {0x0391, 0x03A1, prUpper}, // L& [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO + {0x03A3, 0x03AB, prUpper}, // L& [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA + {0x03AC, 0x03CE, prLower}, // L& [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS + {0x03CF, 0x03CF, prUpper}, // L& GREEK CAPITAL KAI SYMBOL + {0x03D0, 0x03D1, prLower}, // L& [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL + {0x03D2, 0x03D4, prUpper}, // L& [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL + {0x03D5, 0x03D7, prLower}, // L& [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL + {0x03D8, 0x03D8, prUpper}, // L& GREEK LETTER ARCHAIC KOPPA + {0x03D9, 0x03D9, prLower}, // L& GREEK SMALL LETTER ARCHAIC KOPPA + {0x03DA, 0x03DA, prUpper}, // L& GREEK LETTER STIGMA + {0x03DB, 0x03DB, prLower}, // L& GREEK SMALL LETTER STIGMA + {0x03DC, 0x03DC, prUpper}, // L& GREEK LETTER DIGAMMA + {0x03DD, 0x03DD, prLower}, // L& GREEK SMALL LETTER DIGAMMA + {0x03DE, 0x03DE, prUpper}, // L& GREEK LETTER KOPPA + {0x03DF, 0x03DF, prLower}, // L& GREEK SMALL LETTER KOPPA + {0x03E0, 0x03E0, prUpper}, // L& GREEK LETTER SAMPI + {0x03E1, 0x03E1, prLower}, // L& GREEK SMALL LETTER SAMPI + {0x03E2, 0x03E2, prUpper}, // L& COPTIC CAPITAL LETTER SHEI + {0x03E3, 0x03E3, prLower}, // L& COPTIC SMALL LETTER SHEI + {0x03E4, 0x03E4, prUpper}, // L& COPTIC CAPITAL LETTER FEI + {0x03E5, 0x03E5, prLower}, // L& COPTIC SMALL LETTER FEI + {0x03E6, 0x03E6, prUpper}, // L& COPTIC CAPITAL LETTER KHEI + {0x03E7, 0x03E7, prLower}, // L& COPTIC SMALL LETTER KHEI + {0x03E8, 0x03E8, prUpper}, // L& COPTIC CAPITAL LETTER HORI + {0x03E9, 0x03E9, prLower}, // L& COPTIC SMALL LETTER HORI + {0x03EA, 0x03EA, prUpper}, // L& COPTIC CAPITAL LETTER GANGIA + {0x03EB, 0x03EB, prLower}, // L& COPTIC SMALL LETTER GANGIA + {0x03EC, 0x03EC, prUpper}, // L& COPTIC CAPITAL LETTER SHIMA + {0x03ED, 0x03ED, prLower}, // L& COPTIC SMALL LETTER SHIMA + {0x03EE, 0x03EE, prUpper}, // L& COPTIC CAPITAL LETTER DEI + {0x03EF, 0x03F3, prLower}, // L& [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT + {0x03F4, 0x03F4, prUpper}, // L& GREEK CAPITAL THETA SYMBOL + {0x03F5, 0x03F5, prLower}, // L& GREEK LUNATE EPSILON SYMBOL + {0x03F7, 0x03F7, prUpper}, // L& GREEK CAPITAL LETTER SHO + {0x03F8, 0x03F8, prLower}, // L& GREEK SMALL LETTER SHO + {0x03F9, 0x03FA, prUpper}, // L& [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN + {0x03FB, 0x03FC, prLower}, // L& [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL + {0x03FD, 0x042F, prUpper}, // L& [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA + {0x0430, 0x045F, prLower}, // L& [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE + {0x0460, 0x0460, prUpper}, // L& CYRILLIC CAPITAL LETTER OMEGA + {0x0461, 0x0461, prLower}, // L& CYRILLIC SMALL LETTER OMEGA + {0x0462, 0x0462, prUpper}, // L& CYRILLIC CAPITAL LETTER YAT + {0x0463, 0x0463, prLower}, // L& CYRILLIC SMALL LETTER YAT + {0x0464, 0x0464, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED E + {0x0465, 0x0465, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED E + {0x0466, 0x0466, prUpper}, // L& CYRILLIC CAPITAL LETTER LITTLE YUS + {0x0467, 0x0467, prLower}, // L& CYRILLIC SMALL LETTER LITTLE YUS + {0x0468, 0x0468, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS + {0x0469, 0x0469, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS + {0x046A, 0x046A, prUpper}, // L& CYRILLIC CAPITAL LETTER BIG YUS + {0x046B, 0x046B, prLower}, // L& CYRILLIC SMALL LETTER BIG YUS + {0x046C, 0x046C, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS + {0x046D, 0x046D, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED BIG YUS + {0x046E, 0x046E, prUpper}, // L& CYRILLIC CAPITAL LETTER KSI + {0x046F, 0x046F, prLower}, // L& CYRILLIC SMALL LETTER KSI + {0x0470, 0x0470, prUpper}, // L& CYRILLIC CAPITAL LETTER PSI + {0x0471, 0x0471, prLower}, // L& CYRILLIC SMALL LETTER PSI + {0x0472, 0x0472, prUpper}, // L& CYRILLIC CAPITAL LETTER FITA + {0x0473, 0x0473, prLower}, // L& CYRILLIC SMALL LETTER FITA + {0x0474, 0x0474, prUpper}, // L& CYRILLIC CAPITAL LETTER IZHITSA + {0x0475, 0x0475, prLower}, // L& CYRILLIC SMALL LETTER IZHITSA + {0x0476, 0x0476, prUpper}, // L& CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT + {0x0477, 0x0477, prLower}, // L& CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT + {0x0478, 0x0478, prUpper}, // L& CYRILLIC CAPITAL LETTER UK + {0x0479, 0x0479, prLower}, // L& CYRILLIC SMALL LETTER UK + {0x047A, 0x047A, prUpper}, // L& CYRILLIC CAPITAL LETTER ROUND OMEGA + {0x047B, 0x047B, prLower}, // L& CYRILLIC SMALL LETTER ROUND OMEGA + {0x047C, 0x047C, prUpper}, // L& CYRILLIC CAPITAL LETTER OMEGA WITH TITLO + {0x047D, 0x047D, prLower}, // L& CYRILLIC SMALL LETTER OMEGA WITH TITLO + {0x047E, 0x047E, prUpper}, // L& CYRILLIC CAPITAL LETTER OT + {0x047F, 0x047F, prLower}, // L& CYRILLIC SMALL LETTER OT + {0x0480, 0x0480, prUpper}, // L& CYRILLIC CAPITAL LETTER KOPPA + {0x0481, 0x0481, prLower}, // L& CYRILLIC SMALL LETTER KOPPA + {0x0483, 0x0487, prExtend}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE + {0x0488, 0x0489, prExtend}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN + {0x048A, 0x048A, prUpper}, // L& CYRILLIC CAPITAL LETTER SHORT I WITH TAIL + {0x048B, 0x048B, prLower}, // L& CYRILLIC SMALL LETTER SHORT I WITH TAIL + {0x048C, 0x048C, prUpper}, // L& CYRILLIC CAPITAL LETTER SEMISOFT SIGN + {0x048D, 0x048D, prLower}, // L& CYRILLIC SMALL LETTER SEMISOFT SIGN + {0x048E, 0x048E, prUpper}, // L& CYRILLIC CAPITAL LETTER ER WITH TICK + {0x048F, 0x048F, prLower}, // L& CYRILLIC SMALL LETTER ER WITH TICK + {0x0490, 0x0490, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH UPTURN + {0x0491, 0x0491, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH UPTURN + {0x0492, 0x0492, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH STROKE + {0x0493, 0x0493, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH STROKE + {0x0494, 0x0494, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK + {0x0495, 0x0495, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK + {0x0496, 0x0496, prUpper}, // L& CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER + {0x0497, 0x0497, prLower}, // L& CYRILLIC SMALL LETTER ZHE WITH DESCENDER + {0x0498, 0x0498, prUpper}, // L& CYRILLIC CAPITAL LETTER ZE WITH DESCENDER + {0x0499, 0x0499, prLower}, // L& CYRILLIC SMALL LETTER ZE WITH DESCENDER + {0x049A, 0x049A, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH DESCENDER + {0x049B, 0x049B, prLower}, // L& CYRILLIC SMALL LETTER KA WITH DESCENDER + {0x049C, 0x049C, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE + {0x049D, 0x049D, prLower}, // L& CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE + {0x049E, 0x049E, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH STROKE + {0x049F, 0x049F, prLower}, // L& CYRILLIC SMALL LETTER KA WITH STROKE + {0x04A0, 0x04A0, prUpper}, // L& CYRILLIC CAPITAL LETTER BASHKIR KA + {0x04A1, 0x04A1, prLower}, // L& CYRILLIC SMALL LETTER BASHKIR KA + {0x04A2, 0x04A2, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH DESCENDER + {0x04A3, 0x04A3, prLower}, // L& CYRILLIC SMALL LETTER EN WITH DESCENDER + {0x04A4, 0x04A4, prUpper}, // L& CYRILLIC CAPITAL LIGATURE EN GHE + {0x04A5, 0x04A5, prLower}, // L& CYRILLIC SMALL LIGATURE EN GHE + {0x04A6, 0x04A6, prUpper}, // L& CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK + {0x04A7, 0x04A7, prLower}, // L& CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK + {0x04A8, 0x04A8, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN HA + {0x04A9, 0x04A9, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN HA + {0x04AA, 0x04AA, prUpper}, // L& CYRILLIC CAPITAL LETTER ES WITH DESCENDER + {0x04AB, 0x04AB, prLower}, // L& CYRILLIC SMALL LETTER ES WITH DESCENDER + {0x04AC, 0x04AC, prUpper}, // L& CYRILLIC CAPITAL LETTER TE WITH DESCENDER + {0x04AD, 0x04AD, prLower}, // L& CYRILLIC SMALL LETTER TE WITH DESCENDER + {0x04AE, 0x04AE, prUpper}, // L& CYRILLIC CAPITAL LETTER STRAIGHT U + {0x04AF, 0x04AF, prLower}, // L& CYRILLIC SMALL LETTER STRAIGHT U + {0x04B0, 0x04B0, prUpper}, // L& CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE + {0x04B1, 0x04B1, prLower}, // L& CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE + {0x04B2, 0x04B2, prUpper}, // L& CYRILLIC CAPITAL LETTER HA WITH DESCENDER + {0x04B3, 0x04B3, prLower}, // L& CYRILLIC SMALL LETTER HA WITH DESCENDER + {0x04B4, 0x04B4, prUpper}, // L& CYRILLIC CAPITAL LIGATURE TE TSE + {0x04B5, 0x04B5, prLower}, // L& CYRILLIC SMALL LIGATURE TE TSE + {0x04B6, 0x04B6, prUpper}, // L& CYRILLIC CAPITAL LETTER CHE WITH DESCENDER + {0x04B7, 0x04B7, prLower}, // L& CYRILLIC SMALL LETTER CHE WITH DESCENDER + {0x04B8, 0x04B8, prUpper}, // L& CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE + {0x04B9, 0x04B9, prLower}, // L& CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE + {0x04BA, 0x04BA, prUpper}, // L& CYRILLIC CAPITAL LETTER SHHA + {0x04BB, 0x04BB, prLower}, // L& CYRILLIC SMALL LETTER SHHA + {0x04BC, 0x04BC, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE + {0x04BD, 0x04BD, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN CHE + {0x04BE, 0x04BE, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER + {0x04BF, 0x04BF, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER + {0x04C0, 0x04C1, prUpper}, // L& [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE + {0x04C2, 0x04C2, prLower}, // L& CYRILLIC SMALL LETTER ZHE WITH BREVE + {0x04C3, 0x04C3, prUpper}, // L& CYRILLIC CAPITAL LETTER KA WITH HOOK + {0x04C4, 0x04C4, prLower}, // L& CYRILLIC SMALL LETTER KA WITH HOOK + {0x04C5, 0x04C5, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH TAIL + {0x04C6, 0x04C6, prLower}, // L& CYRILLIC SMALL LETTER EL WITH TAIL + {0x04C7, 0x04C7, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH HOOK + {0x04C8, 0x04C8, prLower}, // L& CYRILLIC SMALL LETTER EN WITH HOOK + {0x04C9, 0x04C9, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH TAIL + {0x04CA, 0x04CA, prLower}, // L& CYRILLIC SMALL LETTER EN WITH TAIL + {0x04CB, 0x04CB, prUpper}, // L& CYRILLIC CAPITAL LETTER KHAKASSIAN CHE + {0x04CC, 0x04CC, prLower}, // L& CYRILLIC SMALL LETTER KHAKASSIAN CHE + {0x04CD, 0x04CD, prUpper}, // L& CYRILLIC CAPITAL LETTER EM WITH TAIL + {0x04CE, 0x04CF, prLower}, // L& [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA + {0x04D0, 0x04D0, prUpper}, // L& CYRILLIC CAPITAL LETTER A WITH BREVE + {0x04D1, 0x04D1, prLower}, // L& CYRILLIC SMALL LETTER A WITH BREVE + {0x04D2, 0x04D2, prUpper}, // L& CYRILLIC CAPITAL LETTER A WITH DIAERESIS + {0x04D3, 0x04D3, prLower}, // L& CYRILLIC SMALL LETTER A WITH DIAERESIS + {0x04D4, 0x04D4, prUpper}, // L& CYRILLIC CAPITAL LIGATURE A IE + {0x04D5, 0x04D5, prLower}, // L& CYRILLIC SMALL LIGATURE A IE + {0x04D6, 0x04D6, prUpper}, // L& CYRILLIC CAPITAL LETTER IE WITH BREVE + {0x04D7, 0x04D7, prLower}, // L& CYRILLIC SMALL LETTER IE WITH BREVE + {0x04D8, 0x04D8, prUpper}, // L& CYRILLIC CAPITAL LETTER SCHWA + {0x04D9, 0x04D9, prLower}, // L& CYRILLIC SMALL LETTER SCHWA + {0x04DA, 0x04DA, prUpper}, // L& CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS + {0x04DB, 0x04DB, prLower}, // L& CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS + {0x04DC, 0x04DC, prUpper}, // L& CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS + {0x04DD, 0x04DD, prLower}, // L& CYRILLIC SMALL LETTER ZHE WITH DIAERESIS + {0x04DE, 0x04DE, prUpper}, // L& CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS + {0x04DF, 0x04DF, prLower}, // L& CYRILLIC SMALL LETTER ZE WITH DIAERESIS + {0x04E0, 0x04E0, prUpper}, // L& CYRILLIC CAPITAL LETTER ABKHASIAN DZE + {0x04E1, 0x04E1, prLower}, // L& CYRILLIC SMALL LETTER ABKHASIAN DZE + {0x04E2, 0x04E2, prUpper}, // L& CYRILLIC CAPITAL LETTER I WITH MACRON + {0x04E3, 0x04E3, prLower}, // L& CYRILLIC SMALL LETTER I WITH MACRON + {0x04E4, 0x04E4, prUpper}, // L& CYRILLIC CAPITAL LETTER I WITH DIAERESIS + {0x04E5, 0x04E5, prLower}, // L& CYRILLIC SMALL LETTER I WITH DIAERESIS + {0x04E6, 0x04E6, prUpper}, // L& CYRILLIC CAPITAL LETTER O WITH DIAERESIS + {0x04E7, 0x04E7, prLower}, // L& CYRILLIC SMALL LETTER O WITH DIAERESIS + {0x04E8, 0x04E8, prUpper}, // L& CYRILLIC CAPITAL LETTER BARRED O + {0x04E9, 0x04E9, prLower}, // L& CYRILLIC SMALL LETTER BARRED O + {0x04EA, 0x04EA, prUpper}, // L& CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS + {0x04EB, 0x04EB, prLower}, // L& CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS + {0x04EC, 0x04EC, prUpper}, // L& CYRILLIC CAPITAL LETTER E WITH DIAERESIS + {0x04ED, 0x04ED, prLower}, // L& CYRILLIC SMALL LETTER E WITH DIAERESIS + {0x04EE, 0x04EE, prUpper}, // L& CYRILLIC CAPITAL LETTER U WITH MACRON + {0x04EF, 0x04EF, prLower}, // L& CYRILLIC SMALL LETTER U WITH MACRON + {0x04F0, 0x04F0, prUpper}, // L& CYRILLIC CAPITAL LETTER U WITH DIAERESIS + {0x04F1, 0x04F1, prLower}, // L& CYRILLIC SMALL LETTER U WITH DIAERESIS + {0x04F2, 0x04F2, prUpper}, // L& CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE + {0x04F3, 0x04F3, prLower}, // L& CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE + {0x04F4, 0x04F4, prUpper}, // L& CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS + {0x04F5, 0x04F5, prLower}, // L& CYRILLIC SMALL LETTER CHE WITH DIAERESIS + {0x04F6, 0x04F6, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH DESCENDER + {0x04F7, 0x04F7, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH DESCENDER + {0x04F8, 0x04F8, prUpper}, // L& CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS + {0x04F9, 0x04F9, prLower}, // L& CYRILLIC SMALL LETTER YERU WITH DIAERESIS + {0x04FA, 0x04FA, prUpper}, // L& CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK + {0x04FB, 0x04FB, prLower}, // L& CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK + {0x04FC, 0x04FC, prUpper}, // L& CYRILLIC CAPITAL LETTER HA WITH HOOK + {0x04FD, 0x04FD, prLower}, // L& CYRILLIC SMALL LETTER HA WITH HOOK + {0x04FE, 0x04FE, prUpper}, // L& CYRILLIC CAPITAL LETTER HA WITH STROKE + {0x04FF, 0x04FF, prLower}, // L& CYRILLIC SMALL LETTER HA WITH STROKE + {0x0500, 0x0500, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI DE + {0x0501, 0x0501, prLower}, // L& CYRILLIC SMALL LETTER KOMI DE + {0x0502, 0x0502, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI DJE + {0x0503, 0x0503, prLower}, // L& CYRILLIC SMALL LETTER KOMI DJE + {0x0504, 0x0504, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI ZJE + {0x0505, 0x0505, prLower}, // L& CYRILLIC SMALL LETTER KOMI ZJE + {0x0506, 0x0506, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI DZJE + {0x0507, 0x0507, prLower}, // L& CYRILLIC SMALL LETTER KOMI DZJE + {0x0508, 0x0508, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI LJE + {0x0509, 0x0509, prLower}, // L& CYRILLIC SMALL LETTER KOMI LJE + {0x050A, 0x050A, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI NJE + {0x050B, 0x050B, prLower}, // L& CYRILLIC SMALL LETTER KOMI NJE + {0x050C, 0x050C, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI SJE + {0x050D, 0x050D, prLower}, // L& CYRILLIC SMALL LETTER KOMI SJE + {0x050E, 0x050E, prUpper}, // L& CYRILLIC CAPITAL LETTER KOMI TJE + {0x050F, 0x050F, prLower}, // L& CYRILLIC SMALL LETTER KOMI TJE + {0x0510, 0x0510, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED ZE + {0x0511, 0x0511, prLower}, // L& CYRILLIC SMALL LETTER REVERSED ZE + {0x0512, 0x0512, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH HOOK + {0x0513, 0x0513, prLower}, // L& CYRILLIC SMALL LETTER EL WITH HOOK + {0x0514, 0x0514, prUpper}, // L& CYRILLIC CAPITAL LETTER LHA + {0x0515, 0x0515, prLower}, // L& CYRILLIC SMALL LETTER LHA + {0x0516, 0x0516, prUpper}, // L& CYRILLIC CAPITAL LETTER RHA + {0x0517, 0x0517, prLower}, // L& CYRILLIC SMALL LETTER RHA + {0x0518, 0x0518, prUpper}, // L& CYRILLIC CAPITAL LETTER YAE + {0x0519, 0x0519, prLower}, // L& CYRILLIC SMALL LETTER YAE + {0x051A, 0x051A, prUpper}, // L& CYRILLIC CAPITAL LETTER QA + {0x051B, 0x051B, prLower}, // L& CYRILLIC SMALL LETTER QA + {0x051C, 0x051C, prUpper}, // L& CYRILLIC CAPITAL LETTER WE + {0x051D, 0x051D, prLower}, // L& CYRILLIC SMALL LETTER WE + {0x051E, 0x051E, prUpper}, // L& CYRILLIC CAPITAL LETTER ALEUT KA + {0x051F, 0x051F, prLower}, // L& CYRILLIC SMALL LETTER ALEUT KA + {0x0520, 0x0520, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK + {0x0521, 0x0521, prLower}, // L& CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK + {0x0522, 0x0522, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK + {0x0523, 0x0523, prLower}, // L& CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK + {0x0524, 0x0524, prUpper}, // L& CYRILLIC CAPITAL LETTER PE WITH DESCENDER + {0x0525, 0x0525, prLower}, // L& CYRILLIC SMALL LETTER PE WITH DESCENDER + {0x0526, 0x0526, prUpper}, // L& CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER + {0x0527, 0x0527, prLower}, // L& CYRILLIC SMALL LETTER SHHA WITH DESCENDER + {0x0528, 0x0528, prUpper}, // L& CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK + {0x0529, 0x0529, prLower}, // L& CYRILLIC SMALL LETTER EN WITH LEFT HOOK + {0x052A, 0x052A, prUpper}, // L& CYRILLIC CAPITAL LETTER DZZHE + {0x052B, 0x052B, prLower}, // L& CYRILLIC SMALL LETTER DZZHE + {0x052C, 0x052C, prUpper}, // L& CYRILLIC CAPITAL LETTER DCHE + {0x052D, 0x052D, prLower}, // L& CYRILLIC SMALL LETTER DCHE + {0x052E, 0x052E, prUpper}, // L& CYRILLIC CAPITAL LETTER EL WITH DESCENDER + {0x052F, 0x052F, prLower}, // L& CYRILLIC SMALL LETTER EL WITH DESCENDER + {0x0531, 0x0556, prUpper}, // L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH + {0x0559, 0x0559, prOLetter}, // Lm ARMENIAN MODIFIER LETTER LEFT HALF RING + {0x055D, 0x055D, prSContinue}, // Po ARMENIAN COMMA + {0x0560, 0x0588, prLower}, // L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE + {0x0589, 0x0589, prSTerm}, // Po ARMENIAN FULL STOP + {0x0591, 0x05BD, prExtend}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG + {0x05BF, 0x05BF, prExtend}, // Mn HEBREW POINT RAFE + {0x05C1, 0x05C2, prExtend}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT + {0x05C4, 0x05C5, prExtend}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT + {0x05C7, 0x05C7, prExtend}, // Mn HEBREW POINT QAMATS QATAN + {0x05D0, 0x05EA, prOLetter}, // Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV + {0x05EF, 0x05F2, prOLetter}, // Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD + {0x05F3, 0x05F3, prOLetter}, // Po HEBREW PUNCTUATION GERESH + {0x0600, 0x0605, prFormat}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE + {0x060C, 0x060D, prSContinue}, // Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR + {0x0610, 0x061A, prExtend}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA + {0x061C, 0x061C, prFormat}, // Cf ARABIC LETTER MARK + {0x061D, 0x061F, prSTerm}, // Po [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK + {0x0620, 0x063F, prOLetter}, // Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE + {0x0640, 0x0640, prOLetter}, // Lm ARABIC TATWEEL + {0x0641, 0x064A, prOLetter}, // Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH + {0x064B, 0x065F, prExtend}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW + {0x0660, 0x0669, prNumeric}, // Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE + {0x066B, 0x066C, prNumeric}, // Po [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR + {0x066E, 0x066F, prOLetter}, // Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF + {0x0670, 0x0670, prExtend}, // Mn ARABIC LETTER SUPERSCRIPT ALEF + {0x0671, 0x06D3, prOLetter}, // Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE + {0x06D4, 0x06D4, prSTerm}, // Po ARABIC FULL STOP + {0x06D5, 0x06D5, prOLetter}, // Lo ARABIC LETTER AE + {0x06D6, 0x06DC, prExtend}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN + {0x06DD, 0x06DD, prFormat}, // Cf ARABIC END OF AYAH + {0x06DF, 0x06E4, prExtend}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA + {0x06E5, 0x06E6, prOLetter}, // Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH + {0x06E7, 0x06E8, prExtend}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON + {0x06EA, 0x06ED, prExtend}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM + {0x06EE, 0x06EF, prOLetter}, // Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V + {0x06F0, 0x06F9, prNumeric}, // Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE + {0x06FA, 0x06FC, prOLetter}, // Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW + {0x06FF, 0x06FF, prOLetter}, // Lo ARABIC LETTER HEH WITH INVERTED V + {0x0700, 0x0702, prSTerm}, // Po [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP + {0x070F, 0x070F, prFormat}, // Cf SYRIAC ABBREVIATION MARK + {0x0710, 0x0710, prOLetter}, // Lo SYRIAC LETTER ALAPH + {0x0711, 0x0711, prExtend}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH + {0x0712, 0x072F, prOLetter}, // Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH + {0x0730, 0x074A, prExtend}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH + {0x074D, 0x07A5, prOLetter}, // Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU + {0x07A6, 0x07B0, prExtend}, // Mn [11] THAANA ABAFILI..THAANA SUKUN + {0x07B1, 0x07B1, prOLetter}, // Lo THAANA LETTER NAA + {0x07C0, 0x07C9, prNumeric}, // Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE + {0x07CA, 0x07EA, prOLetter}, // Lo [33] NKO LETTER A..NKO LETTER JONA RA + {0x07EB, 0x07F3, prExtend}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE + {0x07F4, 0x07F5, prOLetter}, // Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE + {0x07F8, 0x07F8, prSContinue}, // Po NKO COMMA + {0x07F9, 0x07F9, prSTerm}, // Po NKO EXCLAMATION MARK + {0x07FA, 0x07FA, prOLetter}, // Lm NKO LAJANYALAN + {0x07FD, 0x07FD, prExtend}, // Mn NKO DANTAYALAN + {0x0800, 0x0815, prOLetter}, // Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF + {0x0816, 0x0819, prExtend}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH + {0x081A, 0x081A, prOLetter}, // Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT + {0x081B, 0x0823, prExtend}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A + {0x0824, 0x0824, prOLetter}, // Lm SAMARITAN MODIFIER LETTER SHORT A + {0x0825, 0x0827, prExtend}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U + {0x0828, 0x0828, prOLetter}, // Lm SAMARITAN MODIFIER LETTER I + {0x0829, 0x082D, prExtend}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA + {0x0837, 0x0837, prSTerm}, // Po SAMARITAN PUNCTUATION MELODIC QITSA + {0x0839, 0x0839, prSTerm}, // Po SAMARITAN PUNCTUATION QITSA + {0x083D, 0x083E, prSTerm}, // Po [2] SAMARITAN PUNCTUATION SOF MASHFAAT..SAMARITAN PUNCTUATION ANNAAU + {0x0840, 0x0858, prOLetter}, // Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN + {0x0859, 0x085B, prExtend}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK + {0x0860, 0x086A, prOLetter}, // Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA + {0x0870, 0x0887, prOLetter}, // Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT + {0x0889, 0x088E, prOLetter}, // Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL + {0x0890, 0x0891, prFormat}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE + {0x0898, 0x089F, prExtend}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA + {0x08A0, 0x08C8, prOLetter}, // Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF + {0x08C9, 0x08C9, prOLetter}, // Lm ARABIC SMALL FARSI YEH + {0x08CA, 0x08E1, prExtend}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA + {0x08E2, 0x08E2, prFormat}, // Cf ARABIC DISPUTED END OF AYAH + {0x08E3, 0x0902, prExtend}, // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA + {0x0903, 0x0903, prExtend}, // Mc DEVANAGARI SIGN VISARGA + {0x0904, 0x0939, prOLetter}, // Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA + {0x093A, 0x093A, prExtend}, // Mn DEVANAGARI VOWEL SIGN OE + {0x093B, 0x093B, prExtend}, // Mc DEVANAGARI VOWEL SIGN OOE + {0x093C, 0x093C, prExtend}, // Mn DEVANAGARI SIGN NUKTA + {0x093D, 0x093D, prOLetter}, // Lo DEVANAGARI SIGN AVAGRAHA + {0x093E, 0x0940, prExtend}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II + {0x0941, 0x0948, prExtend}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI + {0x0949, 0x094C, prExtend}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU + {0x094D, 0x094D, prExtend}, // Mn DEVANAGARI SIGN VIRAMA + {0x094E, 0x094F, prExtend}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW + {0x0950, 0x0950, prOLetter}, // Lo DEVANAGARI OM + {0x0951, 0x0957, prExtend}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE + {0x0958, 0x0961, prOLetter}, // Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL + {0x0962, 0x0963, prExtend}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL + {0x0964, 0x0965, prSTerm}, // Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA + {0x0966, 0x096F, prNumeric}, // Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE + {0x0971, 0x0971, prOLetter}, // Lm DEVANAGARI SIGN HIGH SPACING DOT + {0x0972, 0x0980, prOLetter}, // Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI + {0x0981, 0x0981, prExtend}, // Mn BENGALI SIGN CANDRABINDU + {0x0982, 0x0983, prExtend}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA + {0x0985, 0x098C, prOLetter}, // Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L + {0x098F, 0x0990, prOLetter}, // Lo [2] BENGALI LETTER E..BENGALI LETTER AI + {0x0993, 0x09A8, prOLetter}, // Lo [22] BENGALI LETTER O..BENGALI LETTER NA + {0x09AA, 0x09B0, prOLetter}, // Lo [7] BENGALI LETTER PA..BENGALI LETTER RA + {0x09B2, 0x09B2, prOLetter}, // Lo BENGALI LETTER LA + {0x09B6, 0x09B9, prOLetter}, // Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA + {0x09BC, 0x09BC, prExtend}, // Mn BENGALI SIGN NUKTA + {0x09BD, 0x09BD, prOLetter}, // Lo BENGALI SIGN AVAGRAHA + {0x09BE, 0x09C0, prExtend}, // Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II + {0x09C1, 0x09C4, prExtend}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR + {0x09C7, 0x09C8, prExtend}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI + {0x09CB, 0x09CC, prExtend}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU + {0x09CD, 0x09CD, prExtend}, // Mn BENGALI SIGN VIRAMA + {0x09CE, 0x09CE, prOLetter}, // Lo BENGALI LETTER KHANDA TA + {0x09D7, 0x09D7, prExtend}, // Mc BENGALI AU LENGTH MARK + {0x09DC, 0x09DD, prOLetter}, // Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA + {0x09DF, 0x09E1, prOLetter}, // Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL + {0x09E2, 0x09E3, prExtend}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL + {0x09E6, 0x09EF, prNumeric}, // Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE + {0x09F0, 0x09F1, prOLetter}, // Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL + {0x09FC, 0x09FC, prOLetter}, // Lo BENGALI LETTER VEDIC ANUSVARA + {0x09FE, 0x09FE, prExtend}, // Mn BENGALI SANDHI MARK + {0x0A01, 0x0A02, prExtend}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI + {0x0A03, 0x0A03, prExtend}, // Mc GURMUKHI SIGN VISARGA + {0x0A05, 0x0A0A, prOLetter}, // Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU + {0x0A0F, 0x0A10, prOLetter}, // Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI + {0x0A13, 0x0A28, prOLetter}, // Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA + {0x0A2A, 0x0A30, prOLetter}, // Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA + {0x0A32, 0x0A33, prOLetter}, // Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA + {0x0A35, 0x0A36, prOLetter}, // Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA + {0x0A38, 0x0A39, prOLetter}, // Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA + {0x0A3C, 0x0A3C, prExtend}, // Mn GURMUKHI SIGN NUKTA + {0x0A3E, 0x0A40, prExtend}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II + {0x0A41, 0x0A42, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU + {0x0A47, 0x0A48, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI + {0x0A4B, 0x0A4D, prExtend}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA + {0x0A51, 0x0A51, prExtend}, // Mn GURMUKHI SIGN UDAAT + {0x0A59, 0x0A5C, prOLetter}, // Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA + {0x0A5E, 0x0A5E, prOLetter}, // Lo GURMUKHI LETTER FA + {0x0A66, 0x0A6F, prNumeric}, // Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE + {0x0A70, 0x0A71, prExtend}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK + {0x0A72, 0x0A74, prOLetter}, // Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR + {0x0A75, 0x0A75, prExtend}, // Mn GURMUKHI SIGN YAKASH + {0x0A81, 0x0A82, prExtend}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA + {0x0A83, 0x0A83, prExtend}, // Mc GUJARATI SIGN VISARGA + {0x0A85, 0x0A8D, prOLetter}, // Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E + {0x0A8F, 0x0A91, prOLetter}, // Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O + {0x0A93, 0x0AA8, prOLetter}, // Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA + {0x0AAA, 0x0AB0, prOLetter}, // Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA + {0x0AB2, 0x0AB3, prOLetter}, // Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA + {0x0AB5, 0x0AB9, prOLetter}, // Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA + {0x0ABC, 0x0ABC, prExtend}, // Mn GUJARATI SIGN NUKTA + {0x0ABD, 0x0ABD, prOLetter}, // Lo GUJARATI SIGN AVAGRAHA + {0x0ABE, 0x0AC0, prExtend}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II + {0x0AC1, 0x0AC5, prExtend}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E + {0x0AC7, 0x0AC8, prExtend}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI + {0x0AC9, 0x0AC9, prExtend}, // Mc GUJARATI VOWEL SIGN CANDRA O + {0x0ACB, 0x0ACC, prExtend}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU + {0x0ACD, 0x0ACD, prExtend}, // Mn GUJARATI SIGN VIRAMA + {0x0AD0, 0x0AD0, prOLetter}, // Lo GUJARATI OM + {0x0AE0, 0x0AE1, prOLetter}, // Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL + {0x0AE2, 0x0AE3, prExtend}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL + {0x0AE6, 0x0AEF, prNumeric}, // Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE + {0x0AF9, 0x0AF9, prOLetter}, // Lo GUJARATI LETTER ZHA + {0x0AFA, 0x0AFF, prExtend}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE + {0x0B01, 0x0B01, prExtend}, // Mn ORIYA SIGN CANDRABINDU + {0x0B02, 0x0B03, prExtend}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA + {0x0B05, 0x0B0C, prOLetter}, // Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L + {0x0B0F, 0x0B10, prOLetter}, // Lo [2] ORIYA LETTER E..ORIYA LETTER AI + {0x0B13, 0x0B28, prOLetter}, // Lo [22] ORIYA LETTER O..ORIYA LETTER NA + {0x0B2A, 0x0B30, prOLetter}, // Lo [7] ORIYA LETTER PA..ORIYA LETTER RA + {0x0B32, 0x0B33, prOLetter}, // Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA + {0x0B35, 0x0B39, prOLetter}, // Lo [5] ORIYA LETTER VA..ORIYA LETTER HA + {0x0B3C, 0x0B3C, prExtend}, // Mn ORIYA SIGN NUKTA + {0x0B3D, 0x0B3D, prOLetter}, // Lo ORIYA SIGN AVAGRAHA + {0x0B3E, 0x0B3E, prExtend}, // Mc ORIYA VOWEL SIGN AA + {0x0B3F, 0x0B3F, prExtend}, // Mn ORIYA VOWEL SIGN I + {0x0B40, 0x0B40, prExtend}, // Mc ORIYA VOWEL SIGN II + {0x0B41, 0x0B44, prExtend}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR + {0x0B47, 0x0B48, prExtend}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI + {0x0B4B, 0x0B4C, prExtend}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU + {0x0B4D, 0x0B4D, prExtend}, // Mn ORIYA SIGN VIRAMA + {0x0B55, 0x0B56, prExtend}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK + {0x0B57, 0x0B57, prExtend}, // Mc ORIYA AU LENGTH MARK + {0x0B5C, 0x0B5D, prOLetter}, // Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA + {0x0B5F, 0x0B61, prOLetter}, // Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL + {0x0B62, 0x0B63, prExtend}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL + {0x0B66, 0x0B6F, prNumeric}, // Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE + {0x0B71, 0x0B71, prOLetter}, // Lo ORIYA LETTER WA + {0x0B82, 0x0B82, prExtend}, // Mn TAMIL SIGN ANUSVARA + {0x0B83, 0x0B83, prOLetter}, // Lo TAMIL SIGN VISARGA + {0x0B85, 0x0B8A, prOLetter}, // Lo [6] TAMIL LETTER A..TAMIL LETTER UU + {0x0B8E, 0x0B90, prOLetter}, // Lo [3] TAMIL LETTER E..TAMIL LETTER AI + {0x0B92, 0x0B95, prOLetter}, // Lo [4] TAMIL LETTER O..TAMIL LETTER KA + {0x0B99, 0x0B9A, prOLetter}, // Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA + {0x0B9C, 0x0B9C, prOLetter}, // Lo TAMIL LETTER JA + {0x0B9E, 0x0B9F, prOLetter}, // Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA + {0x0BA3, 0x0BA4, prOLetter}, // Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA + {0x0BA8, 0x0BAA, prOLetter}, // Lo [3] TAMIL LETTER NA..TAMIL LETTER PA + {0x0BAE, 0x0BB9, prOLetter}, // Lo [12] TAMIL LETTER MA..TAMIL LETTER HA + {0x0BBE, 0x0BBF, prExtend}, // Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I + {0x0BC0, 0x0BC0, prExtend}, // Mn TAMIL VOWEL SIGN II + {0x0BC1, 0x0BC2, prExtend}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU + {0x0BC6, 0x0BC8, prExtend}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI + {0x0BCA, 0x0BCC, prExtend}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU + {0x0BCD, 0x0BCD, prExtend}, // Mn TAMIL SIGN VIRAMA + {0x0BD0, 0x0BD0, prOLetter}, // Lo TAMIL OM + {0x0BD7, 0x0BD7, prExtend}, // Mc TAMIL AU LENGTH MARK + {0x0BE6, 0x0BEF, prNumeric}, // Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE + {0x0C00, 0x0C00, prExtend}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE + {0x0C01, 0x0C03, prExtend}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA + {0x0C04, 0x0C04, prExtend}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE + {0x0C05, 0x0C0C, prOLetter}, // Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L + {0x0C0E, 0x0C10, prOLetter}, // Lo [3] TELUGU LETTER E..TELUGU LETTER AI + {0x0C12, 0x0C28, prOLetter}, // Lo [23] TELUGU LETTER O..TELUGU LETTER NA + {0x0C2A, 0x0C39, prOLetter}, // Lo [16] TELUGU LETTER PA..TELUGU LETTER HA + {0x0C3C, 0x0C3C, prExtend}, // Mn TELUGU SIGN NUKTA + {0x0C3D, 0x0C3D, prOLetter}, // Lo TELUGU SIGN AVAGRAHA + {0x0C3E, 0x0C40, prExtend}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II + {0x0C41, 0x0C44, prExtend}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR + {0x0C46, 0x0C48, prExtend}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI + {0x0C4A, 0x0C4D, prExtend}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA + {0x0C55, 0x0C56, prExtend}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK + {0x0C58, 0x0C5A, prOLetter}, // Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA + {0x0C5D, 0x0C5D, prOLetter}, // Lo TELUGU LETTER NAKAARA POLLU + {0x0C60, 0x0C61, prOLetter}, // Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL + {0x0C62, 0x0C63, prExtend}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL + {0x0C66, 0x0C6F, prNumeric}, // Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE + {0x0C80, 0x0C80, prOLetter}, // Lo KANNADA SIGN SPACING CANDRABINDU + {0x0C81, 0x0C81, prExtend}, // Mn KANNADA SIGN CANDRABINDU + {0x0C82, 0x0C83, prExtend}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA + {0x0C85, 0x0C8C, prOLetter}, // Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L + {0x0C8E, 0x0C90, prOLetter}, // Lo [3] KANNADA LETTER E..KANNADA LETTER AI + {0x0C92, 0x0CA8, prOLetter}, // Lo [23] KANNADA LETTER O..KANNADA LETTER NA + {0x0CAA, 0x0CB3, prOLetter}, // Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA + {0x0CB5, 0x0CB9, prOLetter}, // Lo [5] KANNADA LETTER VA..KANNADA LETTER HA + {0x0CBC, 0x0CBC, prExtend}, // Mn KANNADA SIGN NUKTA + {0x0CBD, 0x0CBD, prOLetter}, // Lo KANNADA SIGN AVAGRAHA + {0x0CBE, 0x0CBE, prExtend}, // Mc KANNADA VOWEL SIGN AA + {0x0CBF, 0x0CBF, prExtend}, // Mn KANNADA VOWEL SIGN I + {0x0CC0, 0x0CC4, prExtend}, // Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR + {0x0CC6, 0x0CC6, prExtend}, // Mn KANNADA VOWEL SIGN E + {0x0CC7, 0x0CC8, prExtend}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI + {0x0CCA, 0x0CCB, prExtend}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO + {0x0CCC, 0x0CCD, prExtend}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA + {0x0CD5, 0x0CD6, prExtend}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK + {0x0CDD, 0x0CDE, prOLetter}, // Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA + {0x0CE0, 0x0CE1, prOLetter}, // Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL + {0x0CE2, 0x0CE3, prExtend}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL + {0x0CE6, 0x0CEF, prNumeric}, // Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE + {0x0CF1, 0x0CF2, prOLetter}, // Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA + {0x0CF3, 0x0CF3, prExtend}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT + {0x0D00, 0x0D01, prExtend}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU + {0x0D02, 0x0D03, prExtend}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA + {0x0D04, 0x0D0C, prOLetter}, // Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L + {0x0D0E, 0x0D10, prOLetter}, // Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI + {0x0D12, 0x0D3A, prOLetter}, // Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA + {0x0D3B, 0x0D3C, prExtend}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA + {0x0D3D, 0x0D3D, prOLetter}, // Lo MALAYALAM SIGN AVAGRAHA + {0x0D3E, 0x0D40, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II + {0x0D41, 0x0D44, prExtend}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR + {0x0D46, 0x0D48, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI + {0x0D4A, 0x0D4C, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU + {0x0D4D, 0x0D4D, prExtend}, // Mn MALAYALAM SIGN VIRAMA + {0x0D4E, 0x0D4E, prOLetter}, // Lo MALAYALAM LETTER DOT REPH + {0x0D54, 0x0D56, prOLetter}, // Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL + {0x0D57, 0x0D57, prExtend}, // Mc MALAYALAM AU LENGTH MARK + {0x0D5F, 0x0D61, prOLetter}, // Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL + {0x0D62, 0x0D63, prExtend}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL + {0x0D66, 0x0D6F, prNumeric}, // Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE + {0x0D7A, 0x0D7F, prOLetter}, // Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K + {0x0D81, 0x0D81, prExtend}, // Mn SINHALA SIGN CANDRABINDU + {0x0D82, 0x0D83, prExtend}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA + {0x0D85, 0x0D96, prOLetter}, // Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA + {0x0D9A, 0x0DB1, prOLetter}, // Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA + {0x0DB3, 0x0DBB, prOLetter}, // Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA + {0x0DBD, 0x0DBD, prOLetter}, // Lo SINHALA LETTER DANTAJA LAYANNA + {0x0DC0, 0x0DC6, prOLetter}, // Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA + {0x0DCA, 0x0DCA, prExtend}, // Mn SINHALA SIGN AL-LAKUNA + {0x0DCF, 0x0DD1, prExtend}, // Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA + {0x0DD2, 0x0DD4, prExtend}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA + {0x0DD6, 0x0DD6, prExtend}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA + {0x0DD8, 0x0DDF, prExtend}, // Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA + {0x0DE6, 0x0DEF, prNumeric}, // Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE + {0x0DF2, 0x0DF3, prExtend}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA + {0x0E01, 0x0E30, prOLetter}, // Lo [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A + {0x0E31, 0x0E31, prExtend}, // Mn THAI CHARACTER MAI HAN-AKAT + {0x0E32, 0x0E33, prOLetter}, // Lo [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM + {0x0E34, 0x0E3A, prExtend}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU + {0x0E40, 0x0E45, prOLetter}, // Lo [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO + {0x0E46, 0x0E46, prOLetter}, // Lm THAI CHARACTER MAIYAMOK + {0x0E47, 0x0E4E, prExtend}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN + {0x0E50, 0x0E59, prNumeric}, // Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE + {0x0E81, 0x0E82, prOLetter}, // Lo [2] LAO LETTER KO..LAO LETTER KHO SUNG + {0x0E84, 0x0E84, prOLetter}, // Lo LAO LETTER KHO TAM + {0x0E86, 0x0E8A, prOLetter}, // Lo [5] LAO LETTER PALI GHA..LAO LETTER SO TAM + {0x0E8C, 0x0EA3, prOLetter}, // Lo [24] LAO LETTER PALI JHA..LAO LETTER LO LING + {0x0EA5, 0x0EA5, prOLetter}, // Lo LAO LETTER LO LOOT + {0x0EA7, 0x0EB0, prOLetter}, // Lo [10] LAO LETTER WO..LAO VOWEL SIGN A + {0x0EB1, 0x0EB1, prExtend}, // Mn LAO VOWEL SIGN MAI KAN + {0x0EB2, 0x0EB3, prOLetter}, // Lo [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM + {0x0EB4, 0x0EBC, prExtend}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO + {0x0EBD, 0x0EBD, prOLetter}, // Lo LAO SEMIVOWEL SIGN NYO + {0x0EC0, 0x0EC4, prOLetter}, // Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI + {0x0EC6, 0x0EC6, prOLetter}, // Lm LAO KO LA + {0x0EC8, 0x0ECE, prExtend}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN + {0x0ED0, 0x0ED9, prNumeric}, // Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE + {0x0EDC, 0x0EDF, prOLetter}, // Lo [4] LAO HO NO..LAO LETTER KHMU NYO + {0x0F00, 0x0F00, prOLetter}, // Lo TIBETAN SYLLABLE OM + {0x0F18, 0x0F19, prExtend}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS + {0x0F20, 0x0F29, prNumeric}, // Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE + {0x0F35, 0x0F35, prExtend}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA + {0x0F37, 0x0F37, prExtend}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS + {0x0F39, 0x0F39, prExtend}, // Mn TIBETAN MARK TSA -PHRU + {0x0F3A, 0x0F3A, prClose}, // Ps TIBETAN MARK GUG RTAGS GYON + {0x0F3B, 0x0F3B, prClose}, // Pe TIBETAN MARK GUG RTAGS GYAS + {0x0F3C, 0x0F3C, prClose}, // Ps TIBETAN MARK ANG KHANG GYON + {0x0F3D, 0x0F3D, prClose}, // Pe TIBETAN MARK ANG KHANG GYAS + {0x0F3E, 0x0F3F, prExtend}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES + {0x0F40, 0x0F47, prOLetter}, // Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA + {0x0F49, 0x0F6C, prOLetter}, // Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA + {0x0F71, 0x0F7E, prExtend}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO + {0x0F7F, 0x0F7F, prExtend}, // Mc TIBETAN SIGN RNAM BCAD + {0x0F80, 0x0F84, prExtend}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA + {0x0F86, 0x0F87, prExtend}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS + {0x0F88, 0x0F8C, prOLetter}, // Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN + {0x0F8D, 0x0F97, prExtend}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA + {0x0F99, 0x0FBC, prExtend}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA + {0x0FC6, 0x0FC6, prExtend}, // Mn TIBETAN SYMBOL PADMA GDAN + {0x1000, 0x102A, prOLetter}, // Lo [43] MYANMAR LETTER KA..MYANMAR LETTER AU + {0x102B, 0x102C, prExtend}, // Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA + {0x102D, 0x1030, prExtend}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU + {0x1031, 0x1031, prExtend}, // Mc MYANMAR VOWEL SIGN E + {0x1032, 0x1037, prExtend}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW + {0x1038, 0x1038, prExtend}, // Mc MYANMAR SIGN VISARGA + {0x1039, 0x103A, prExtend}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT + {0x103B, 0x103C, prExtend}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA + {0x103D, 0x103E, prExtend}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA + {0x103F, 0x103F, prOLetter}, // Lo MYANMAR LETTER GREAT SA + {0x1040, 0x1049, prNumeric}, // Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE + {0x104A, 0x104B, prSTerm}, // Po [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION + {0x1050, 0x1055, prOLetter}, // Lo [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL + {0x1056, 0x1057, prExtend}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR + {0x1058, 0x1059, prExtend}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL + {0x105A, 0x105D, prOLetter}, // Lo [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE + {0x105E, 0x1060, prExtend}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA + {0x1061, 0x1061, prOLetter}, // Lo MYANMAR LETTER SGAW KAREN SHA + {0x1062, 0x1064, prExtend}, // Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO + {0x1065, 0x1066, prOLetter}, // Lo [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA + {0x1067, 0x106D, prExtend}, // Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 + {0x106E, 0x1070, prOLetter}, // Lo [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA + {0x1071, 0x1074, prExtend}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE + {0x1075, 0x1081, prOLetter}, // Lo [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA + {0x1082, 0x1082, prExtend}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA + {0x1083, 0x1084, prExtend}, // Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E + {0x1085, 0x1086, prExtend}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y + {0x1087, 0x108C, prExtend}, // Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 + {0x108D, 0x108D, prExtend}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE + {0x108E, 0x108E, prOLetter}, // Lo MYANMAR LETTER RUMAI PALAUNG FA + {0x108F, 0x108F, prExtend}, // Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 + {0x1090, 0x1099, prNumeric}, // Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE + {0x109A, 0x109C, prExtend}, // Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A + {0x109D, 0x109D, prExtend}, // Mn MYANMAR VOWEL SIGN AITON AI + {0x10A0, 0x10C5, prUpper}, // L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE + {0x10C7, 0x10C7, prUpper}, // L& GEORGIAN CAPITAL LETTER YN + {0x10CD, 0x10CD, prUpper}, // L& GEORGIAN CAPITAL LETTER AEN + {0x10D0, 0x10FA, prOLetter}, // L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN + {0x10FC, 0x10FC, prLower}, // Lm MODIFIER LETTER GEORGIAN NAR + {0x10FD, 0x10FF, prOLetter}, // L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN + {0x1100, 0x1248, prOLetter}, // Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA + {0x124A, 0x124D, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE + {0x1250, 0x1256, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO + {0x1258, 0x1258, prOLetter}, // Lo ETHIOPIC SYLLABLE QHWA + {0x125A, 0x125D, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE + {0x1260, 0x1288, prOLetter}, // Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA + {0x128A, 0x128D, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE + {0x1290, 0x12B0, prOLetter}, // Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA + {0x12B2, 0x12B5, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE + {0x12B8, 0x12BE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO + {0x12C0, 0x12C0, prOLetter}, // Lo ETHIOPIC SYLLABLE KXWA + {0x12C2, 0x12C5, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE + {0x12C8, 0x12D6, prOLetter}, // Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O + {0x12D8, 0x1310, prOLetter}, // Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA + {0x1312, 0x1315, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE + {0x1318, 0x135A, prOLetter}, // Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA + {0x135D, 0x135F, prExtend}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK + {0x1362, 0x1362, prSTerm}, // Po ETHIOPIC FULL STOP + {0x1367, 0x1368, prSTerm}, // Po [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR + {0x1380, 0x138F, prOLetter}, // Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE + {0x13A0, 0x13F5, prUpper}, // L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV + {0x13F8, 0x13FD, prLower}, // L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV + {0x1401, 0x166C, prOLetter}, // Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA + {0x166E, 0x166E, prSTerm}, // Po CANADIAN SYLLABICS FULL STOP + {0x166F, 0x167F, prOLetter}, // Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W + {0x1680, 0x1680, prSp}, // Zs OGHAM SPACE MARK + {0x1681, 0x169A, prOLetter}, // Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH + {0x169B, 0x169B, prClose}, // Ps OGHAM FEATHER MARK + {0x169C, 0x169C, prClose}, // Pe OGHAM REVERSED FEATHER MARK + {0x16A0, 0x16EA, prOLetter}, // Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X + {0x16EE, 0x16F0, prOLetter}, // Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL + {0x16F1, 0x16F8, prOLetter}, // Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC + {0x1700, 0x1711, prOLetter}, // Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA + {0x1712, 0x1714, prExtend}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA + {0x1715, 0x1715, prExtend}, // Mc TAGALOG SIGN PAMUDPOD + {0x171F, 0x1731, prOLetter}, // Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA + {0x1732, 0x1733, prExtend}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U + {0x1734, 0x1734, prExtend}, // Mc HANUNOO SIGN PAMUDPOD + {0x1735, 0x1736, prSTerm}, // Po [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION + {0x1740, 0x1751, prOLetter}, // Lo [18] BUHID LETTER A..BUHID LETTER HA + {0x1752, 0x1753, prExtend}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U + {0x1760, 0x176C, prOLetter}, // Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA + {0x176E, 0x1770, prOLetter}, // Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA + {0x1772, 0x1773, prExtend}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U + {0x1780, 0x17B3, prOLetter}, // Lo [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU + {0x17B4, 0x17B5, prExtend}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA + {0x17B6, 0x17B6, prExtend}, // Mc KHMER VOWEL SIGN AA + {0x17B7, 0x17BD, prExtend}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA + {0x17BE, 0x17C5, prExtend}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU + {0x17C6, 0x17C6, prExtend}, // Mn KHMER SIGN NIKAHIT + {0x17C7, 0x17C8, prExtend}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU + {0x17C9, 0x17D3, prExtend}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT + {0x17D7, 0x17D7, prOLetter}, // Lm KHMER SIGN LEK TOO + {0x17DC, 0x17DC, prOLetter}, // Lo KHMER SIGN AVAKRAHASANYA + {0x17DD, 0x17DD, prExtend}, // Mn KHMER SIGN ATTHACAN + {0x17E0, 0x17E9, prNumeric}, // Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE + {0x1802, 0x1802, prSContinue}, // Po MONGOLIAN COMMA + {0x1803, 0x1803, prSTerm}, // Po MONGOLIAN FULL STOP + {0x1808, 0x1808, prSContinue}, // Po MONGOLIAN MANCHU COMMA + {0x1809, 0x1809, prSTerm}, // Po MONGOLIAN MANCHU FULL STOP + {0x180B, 0x180D, prExtend}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE + {0x180E, 0x180E, prFormat}, // Cf MONGOLIAN VOWEL SEPARATOR + {0x180F, 0x180F, prExtend}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR + {0x1810, 0x1819, prNumeric}, // Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE + {0x1820, 0x1842, prOLetter}, // Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI + {0x1843, 0x1843, prOLetter}, // Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN + {0x1844, 0x1878, prOLetter}, // Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS + {0x1880, 0x1884, prOLetter}, // Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA + {0x1885, 0x1886, prExtend}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA + {0x1887, 0x18A8, prOLetter}, // Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA + {0x18A9, 0x18A9, prExtend}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA + {0x18AA, 0x18AA, prOLetter}, // Lo MONGOLIAN LETTER MANCHU ALI GALI LHA + {0x18B0, 0x18F5, prOLetter}, // Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S + {0x1900, 0x191E, prOLetter}, // Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA + {0x1920, 0x1922, prExtend}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U + {0x1923, 0x1926, prExtend}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU + {0x1927, 0x1928, prExtend}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O + {0x1929, 0x192B, prExtend}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA + {0x1930, 0x1931, prExtend}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA + {0x1932, 0x1932, prExtend}, // Mn LIMBU SMALL LETTER ANUSVARA + {0x1933, 0x1938, prExtend}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA + {0x1939, 0x193B, prExtend}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I + {0x1944, 0x1945, prSTerm}, // Po [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK + {0x1946, 0x194F, prNumeric}, // Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE + {0x1950, 0x196D, prOLetter}, // Lo [30] TAI LE LETTER KA..TAI LE LETTER AI + {0x1970, 0x1974, prOLetter}, // Lo [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6 + {0x1980, 0x19AB, prOLetter}, // Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA + {0x19B0, 0x19C9, prOLetter}, // Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2 + {0x19D0, 0x19D9, prNumeric}, // Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE + {0x1A00, 0x1A16, prOLetter}, // Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA + {0x1A17, 0x1A18, prExtend}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U + {0x1A19, 0x1A1A, prExtend}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O + {0x1A1B, 0x1A1B, prExtend}, // Mn BUGINESE VOWEL SIGN AE + {0x1A20, 0x1A54, prOLetter}, // Lo [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA + {0x1A55, 0x1A55, prExtend}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA + {0x1A56, 0x1A56, prExtend}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA + {0x1A57, 0x1A57, prExtend}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI + {0x1A58, 0x1A5E, prExtend}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA + {0x1A60, 0x1A60, prExtend}, // Mn TAI THAM SIGN SAKOT + {0x1A61, 0x1A61, prExtend}, // Mc TAI THAM VOWEL SIGN A + {0x1A62, 0x1A62, prExtend}, // Mn TAI THAM VOWEL SIGN MAI SAT + {0x1A63, 0x1A64, prExtend}, // Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA + {0x1A65, 0x1A6C, prExtend}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW + {0x1A6D, 0x1A72, prExtend}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI + {0x1A73, 0x1A7C, prExtend}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN + {0x1A7F, 0x1A7F, prExtend}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT + {0x1A80, 0x1A89, prNumeric}, // Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE + {0x1A90, 0x1A99, prNumeric}, // Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE + {0x1AA7, 0x1AA7, prOLetter}, // Lm TAI THAM SIGN MAI YAMOK + {0x1AA8, 0x1AAB, prSTerm}, // Po [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU + {0x1AB0, 0x1ABD, prExtend}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW + {0x1ABE, 0x1ABE, prExtend}, // Me COMBINING PARENTHESES OVERLAY + {0x1ABF, 0x1ACE, prExtend}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T + {0x1B00, 0x1B03, prExtend}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG + {0x1B04, 0x1B04, prExtend}, // Mc BALINESE SIGN BISAH + {0x1B05, 0x1B33, prOLetter}, // Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA + {0x1B34, 0x1B34, prExtend}, // Mn BALINESE SIGN REREKAN + {0x1B35, 0x1B35, prExtend}, // Mc BALINESE VOWEL SIGN TEDUNG + {0x1B36, 0x1B3A, prExtend}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA + {0x1B3B, 0x1B3B, prExtend}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG + {0x1B3C, 0x1B3C, prExtend}, // Mn BALINESE VOWEL SIGN LA LENGA + {0x1B3D, 0x1B41, prExtend}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG + {0x1B42, 0x1B42, prExtend}, // Mn BALINESE VOWEL SIGN PEPET + {0x1B43, 0x1B44, prExtend}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG + {0x1B45, 0x1B4C, prOLetter}, // Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA + {0x1B50, 0x1B59, prNumeric}, // Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE + {0x1B5A, 0x1B5B, prSTerm}, // Po [2] BALINESE PANTI..BALINESE PAMADA + {0x1B5E, 0x1B5F, prSTerm}, // Po [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN + {0x1B6B, 0x1B73, prExtend}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG + {0x1B7D, 0x1B7E, prSTerm}, // Po [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG + {0x1B80, 0x1B81, prExtend}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR + {0x1B82, 0x1B82, prExtend}, // Mc SUNDANESE SIGN PANGWISAD + {0x1B83, 0x1BA0, prOLetter}, // Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA + {0x1BA1, 0x1BA1, prExtend}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL + {0x1BA2, 0x1BA5, prExtend}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU + {0x1BA6, 0x1BA7, prExtend}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG + {0x1BA8, 0x1BA9, prExtend}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG + {0x1BAA, 0x1BAA, prExtend}, // Mc SUNDANESE SIGN PAMAAEH + {0x1BAB, 0x1BAD, prExtend}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA + {0x1BAE, 0x1BAF, prOLetter}, // Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA + {0x1BB0, 0x1BB9, prNumeric}, // Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE + {0x1BBA, 0x1BE5, prOLetter}, // Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U + {0x1BE6, 0x1BE6, prExtend}, // Mn BATAK SIGN TOMPI + {0x1BE7, 0x1BE7, prExtend}, // Mc BATAK VOWEL SIGN E + {0x1BE8, 0x1BE9, prExtend}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE + {0x1BEA, 0x1BEC, prExtend}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O + {0x1BED, 0x1BED, prExtend}, // Mn BATAK VOWEL SIGN KARO O + {0x1BEE, 0x1BEE, prExtend}, // Mc BATAK VOWEL SIGN U + {0x1BEF, 0x1BF1, prExtend}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H + {0x1BF2, 0x1BF3, prExtend}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN + {0x1C00, 0x1C23, prOLetter}, // Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A + {0x1C24, 0x1C2B, prExtend}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU + {0x1C2C, 0x1C33, prExtend}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T + {0x1C34, 0x1C35, prExtend}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG + {0x1C36, 0x1C37, prExtend}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA + {0x1C3B, 0x1C3C, prSTerm}, // Po [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL + {0x1C40, 0x1C49, prNumeric}, // Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE + {0x1C4D, 0x1C4F, prOLetter}, // Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA + {0x1C50, 0x1C59, prNumeric}, // Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE + {0x1C5A, 0x1C77, prOLetter}, // Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH + {0x1C78, 0x1C7D, prOLetter}, // Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD + {0x1C7E, 0x1C7F, prSTerm}, // Po [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD + {0x1C80, 0x1C88, prLower}, // L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK + {0x1C90, 0x1CBA, prOLetter}, // L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN + {0x1CBD, 0x1CBF, prOLetter}, // L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN + {0x1CD0, 0x1CD2, prExtend}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA + {0x1CD4, 0x1CE0, prExtend}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA + {0x1CE1, 0x1CE1, prExtend}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA + {0x1CE2, 0x1CE8, prExtend}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL + {0x1CE9, 0x1CEC, prOLetter}, // Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL + {0x1CED, 0x1CED, prExtend}, // Mn VEDIC SIGN TIRYAK + {0x1CEE, 0x1CF3, prOLetter}, // Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA + {0x1CF4, 0x1CF4, prExtend}, // Mn VEDIC TONE CANDRA ABOVE + {0x1CF5, 0x1CF6, prOLetter}, // Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA + {0x1CF7, 0x1CF7, prExtend}, // Mc VEDIC SIGN ATIKRAMA + {0x1CF8, 0x1CF9, prExtend}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE + {0x1CFA, 0x1CFA, prOLetter}, // Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA + {0x1D00, 0x1D2B, prLower}, // L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL + {0x1D2C, 0x1D6A, prLower}, // Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI + {0x1D6B, 0x1D77, prLower}, // L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G + {0x1D78, 0x1D78, prLower}, // Lm MODIFIER LETTER CYRILLIC EN + {0x1D79, 0x1D9A, prLower}, // L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK + {0x1D9B, 0x1DBF, prLower}, // Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA + {0x1DC0, 0x1DFF, prExtend}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + {0x1E00, 0x1E00, prUpper}, // L& LATIN CAPITAL LETTER A WITH RING BELOW + {0x1E01, 0x1E01, prLower}, // L& LATIN SMALL LETTER A WITH RING BELOW + {0x1E02, 0x1E02, prUpper}, // L& LATIN CAPITAL LETTER B WITH DOT ABOVE + {0x1E03, 0x1E03, prLower}, // L& LATIN SMALL LETTER B WITH DOT ABOVE + {0x1E04, 0x1E04, prUpper}, // L& LATIN CAPITAL LETTER B WITH DOT BELOW + {0x1E05, 0x1E05, prLower}, // L& LATIN SMALL LETTER B WITH DOT BELOW + {0x1E06, 0x1E06, prUpper}, // L& LATIN CAPITAL LETTER B WITH LINE BELOW + {0x1E07, 0x1E07, prLower}, // L& LATIN SMALL LETTER B WITH LINE BELOW + {0x1E08, 0x1E08, prUpper}, // L& LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE + {0x1E09, 0x1E09, prLower}, // L& LATIN SMALL LETTER C WITH CEDILLA AND ACUTE + {0x1E0A, 0x1E0A, prUpper}, // L& LATIN CAPITAL LETTER D WITH DOT ABOVE + {0x1E0B, 0x1E0B, prLower}, // L& LATIN SMALL LETTER D WITH DOT ABOVE + {0x1E0C, 0x1E0C, prUpper}, // L& LATIN CAPITAL LETTER D WITH DOT BELOW + {0x1E0D, 0x1E0D, prLower}, // L& LATIN SMALL LETTER D WITH DOT BELOW + {0x1E0E, 0x1E0E, prUpper}, // L& LATIN CAPITAL LETTER D WITH LINE BELOW + {0x1E0F, 0x1E0F, prLower}, // L& LATIN SMALL LETTER D WITH LINE BELOW + {0x1E10, 0x1E10, prUpper}, // L& LATIN CAPITAL LETTER D WITH CEDILLA + {0x1E11, 0x1E11, prLower}, // L& LATIN SMALL LETTER D WITH CEDILLA + {0x1E12, 0x1E12, prUpper}, // L& LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW + {0x1E13, 0x1E13, prLower}, // L& LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW + {0x1E14, 0x1E14, prUpper}, // L& LATIN CAPITAL LETTER E WITH MACRON AND GRAVE + {0x1E15, 0x1E15, prLower}, // L& LATIN SMALL LETTER E WITH MACRON AND GRAVE + {0x1E16, 0x1E16, prUpper}, // L& LATIN CAPITAL LETTER E WITH MACRON AND ACUTE + {0x1E17, 0x1E17, prLower}, // L& LATIN SMALL LETTER E WITH MACRON AND ACUTE + {0x1E18, 0x1E18, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW + {0x1E19, 0x1E19, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW + {0x1E1A, 0x1E1A, prUpper}, // L& LATIN CAPITAL LETTER E WITH TILDE BELOW + {0x1E1B, 0x1E1B, prLower}, // L& LATIN SMALL LETTER E WITH TILDE BELOW + {0x1E1C, 0x1E1C, prUpper}, // L& LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE + {0x1E1D, 0x1E1D, prLower}, // L& LATIN SMALL LETTER E WITH CEDILLA AND BREVE + {0x1E1E, 0x1E1E, prUpper}, // L& LATIN CAPITAL LETTER F WITH DOT ABOVE + {0x1E1F, 0x1E1F, prLower}, // L& LATIN SMALL LETTER F WITH DOT ABOVE + {0x1E20, 0x1E20, prUpper}, // L& LATIN CAPITAL LETTER G WITH MACRON + {0x1E21, 0x1E21, prLower}, // L& LATIN SMALL LETTER G WITH MACRON + {0x1E22, 0x1E22, prUpper}, // L& LATIN CAPITAL LETTER H WITH DOT ABOVE + {0x1E23, 0x1E23, prLower}, // L& LATIN SMALL LETTER H WITH DOT ABOVE + {0x1E24, 0x1E24, prUpper}, // L& LATIN CAPITAL LETTER H WITH DOT BELOW + {0x1E25, 0x1E25, prLower}, // L& LATIN SMALL LETTER H WITH DOT BELOW + {0x1E26, 0x1E26, prUpper}, // L& LATIN CAPITAL LETTER H WITH DIAERESIS + {0x1E27, 0x1E27, prLower}, // L& LATIN SMALL LETTER H WITH DIAERESIS + {0x1E28, 0x1E28, prUpper}, // L& LATIN CAPITAL LETTER H WITH CEDILLA + {0x1E29, 0x1E29, prLower}, // L& LATIN SMALL LETTER H WITH CEDILLA + {0x1E2A, 0x1E2A, prUpper}, // L& LATIN CAPITAL LETTER H WITH BREVE BELOW + {0x1E2B, 0x1E2B, prLower}, // L& LATIN SMALL LETTER H WITH BREVE BELOW + {0x1E2C, 0x1E2C, prUpper}, // L& LATIN CAPITAL LETTER I WITH TILDE BELOW + {0x1E2D, 0x1E2D, prLower}, // L& LATIN SMALL LETTER I WITH TILDE BELOW + {0x1E2E, 0x1E2E, prUpper}, // L& LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE + {0x1E2F, 0x1E2F, prLower}, // L& LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE + {0x1E30, 0x1E30, prUpper}, // L& LATIN CAPITAL LETTER K WITH ACUTE + {0x1E31, 0x1E31, prLower}, // L& LATIN SMALL LETTER K WITH ACUTE + {0x1E32, 0x1E32, prUpper}, // L& LATIN CAPITAL LETTER K WITH DOT BELOW + {0x1E33, 0x1E33, prLower}, // L& LATIN SMALL LETTER K WITH DOT BELOW + {0x1E34, 0x1E34, prUpper}, // L& LATIN CAPITAL LETTER K WITH LINE BELOW + {0x1E35, 0x1E35, prLower}, // L& LATIN SMALL LETTER K WITH LINE BELOW + {0x1E36, 0x1E36, prUpper}, // L& LATIN CAPITAL LETTER L WITH DOT BELOW + {0x1E37, 0x1E37, prLower}, // L& LATIN SMALL LETTER L WITH DOT BELOW + {0x1E38, 0x1E38, prUpper}, // L& LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON + {0x1E39, 0x1E39, prLower}, // L& LATIN SMALL LETTER L WITH DOT BELOW AND MACRON + {0x1E3A, 0x1E3A, prUpper}, // L& LATIN CAPITAL LETTER L WITH LINE BELOW + {0x1E3B, 0x1E3B, prLower}, // L& LATIN SMALL LETTER L WITH LINE BELOW + {0x1E3C, 0x1E3C, prUpper}, // L& LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW + {0x1E3D, 0x1E3D, prLower}, // L& LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW + {0x1E3E, 0x1E3E, prUpper}, // L& LATIN CAPITAL LETTER M WITH ACUTE + {0x1E3F, 0x1E3F, prLower}, // L& LATIN SMALL LETTER M WITH ACUTE + {0x1E40, 0x1E40, prUpper}, // L& LATIN CAPITAL LETTER M WITH DOT ABOVE + {0x1E41, 0x1E41, prLower}, // L& LATIN SMALL LETTER M WITH DOT ABOVE + {0x1E42, 0x1E42, prUpper}, // L& LATIN CAPITAL LETTER M WITH DOT BELOW + {0x1E43, 0x1E43, prLower}, // L& LATIN SMALL LETTER M WITH DOT BELOW + {0x1E44, 0x1E44, prUpper}, // L& LATIN CAPITAL LETTER N WITH DOT ABOVE + {0x1E45, 0x1E45, prLower}, // L& LATIN SMALL LETTER N WITH DOT ABOVE + {0x1E46, 0x1E46, prUpper}, // L& LATIN CAPITAL LETTER N WITH DOT BELOW + {0x1E47, 0x1E47, prLower}, // L& LATIN SMALL LETTER N WITH DOT BELOW + {0x1E48, 0x1E48, prUpper}, // L& LATIN CAPITAL LETTER N WITH LINE BELOW + {0x1E49, 0x1E49, prLower}, // L& LATIN SMALL LETTER N WITH LINE BELOW + {0x1E4A, 0x1E4A, prUpper}, // L& LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW + {0x1E4B, 0x1E4B, prLower}, // L& LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW + {0x1E4C, 0x1E4C, prUpper}, // L& LATIN CAPITAL LETTER O WITH TILDE AND ACUTE + {0x1E4D, 0x1E4D, prLower}, // L& LATIN SMALL LETTER O WITH TILDE AND ACUTE + {0x1E4E, 0x1E4E, prUpper}, // L& LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS + {0x1E4F, 0x1E4F, prLower}, // L& LATIN SMALL LETTER O WITH TILDE AND DIAERESIS + {0x1E50, 0x1E50, prUpper}, // L& LATIN CAPITAL LETTER O WITH MACRON AND GRAVE + {0x1E51, 0x1E51, prLower}, // L& LATIN SMALL LETTER O WITH MACRON AND GRAVE + {0x1E52, 0x1E52, prUpper}, // L& LATIN CAPITAL LETTER O WITH MACRON AND ACUTE + {0x1E53, 0x1E53, prLower}, // L& LATIN SMALL LETTER O WITH MACRON AND ACUTE + {0x1E54, 0x1E54, prUpper}, // L& LATIN CAPITAL LETTER P WITH ACUTE + {0x1E55, 0x1E55, prLower}, // L& LATIN SMALL LETTER P WITH ACUTE + {0x1E56, 0x1E56, prUpper}, // L& LATIN CAPITAL LETTER P WITH DOT ABOVE + {0x1E57, 0x1E57, prLower}, // L& LATIN SMALL LETTER P WITH DOT ABOVE + {0x1E58, 0x1E58, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOT ABOVE + {0x1E59, 0x1E59, prLower}, // L& LATIN SMALL LETTER R WITH DOT ABOVE + {0x1E5A, 0x1E5A, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOT BELOW + {0x1E5B, 0x1E5B, prLower}, // L& LATIN SMALL LETTER R WITH DOT BELOW + {0x1E5C, 0x1E5C, prUpper}, // L& LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON + {0x1E5D, 0x1E5D, prLower}, // L& LATIN SMALL LETTER R WITH DOT BELOW AND MACRON + {0x1E5E, 0x1E5E, prUpper}, // L& LATIN CAPITAL LETTER R WITH LINE BELOW + {0x1E5F, 0x1E5F, prLower}, // L& LATIN SMALL LETTER R WITH LINE BELOW + {0x1E60, 0x1E60, prUpper}, // L& LATIN CAPITAL LETTER S WITH DOT ABOVE + {0x1E61, 0x1E61, prLower}, // L& LATIN SMALL LETTER S WITH DOT ABOVE + {0x1E62, 0x1E62, prUpper}, // L& LATIN CAPITAL LETTER S WITH DOT BELOW + {0x1E63, 0x1E63, prLower}, // L& LATIN SMALL LETTER S WITH DOT BELOW + {0x1E64, 0x1E64, prUpper}, // L& LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE + {0x1E65, 0x1E65, prLower}, // L& LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE + {0x1E66, 0x1E66, prUpper}, // L& LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE + {0x1E67, 0x1E67, prLower}, // L& LATIN SMALL LETTER S WITH CARON AND DOT ABOVE + {0x1E68, 0x1E68, prUpper}, // L& LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE + {0x1E69, 0x1E69, prLower}, // L& LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE + {0x1E6A, 0x1E6A, prUpper}, // L& LATIN CAPITAL LETTER T WITH DOT ABOVE + {0x1E6B, 0x1E6B, prLower}, // L& LATIN SMALL LETTER T WITH DOT ABOVE + {0x1E6C, 0x1E6C, prUpper}, // L& LATIN CAPITAL LETTER T WITH DOT BELOW + {0x1E6D, 0x1E6D, prLower}, // L& LATIN SMALL LETTER T WITH DOT BELOW + {0x1E6E, 0x1E6E, prUpper}, // L& LATIN CAPITAL LETTER T WITH LINE BELOW + {0x1E6F, 0x1E6F, prLower}, // L& LATIN SMALL LETTER T WITH LINE BELOW + {0x1E70, 0x1E70, prUpper}, // L& LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW + {0x1E71, 0x1E71, prLower}, // L& LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW + {0x1E72, 0x1E72, prUpper}, // L& LATIN CAPITAL LETTER U WITH DIAERESIS BELOW + {0x1E73, 0x1E73, prLower}, // L& LATIN SMALL LETTER U WITH DIAERESIS BELOW + {0x1E74, 0x1E74, prUpper}, // L& LATIN CAPITAL LETTER U WITH TILDE BELOW + {0x1E75, 0x1E75, prLower}, // L& LATIN SMALL LETTER U WITH TILDE BELOW + {0x1E76, 0x1E76, prUpper}, // L& LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW + {0x1E77, 0x1E77, prLower}, // L& LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW + {0x1E78, 0x1E78, prUpper}, // L& LATIN CAPITAL LETTER U WITH TILDE AND ACUTE + {0x1E79, 0x1E79, prLower}, // L& LATIN SMALL LETTER U WITH TILDE AND ACUTE + {0x1E7A, 0x1E7A, prUpper}, // L& LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS + {0x1E7B, 0x1E7B, prLower}, // L& LATIN SMALL LETTER U WITH MACRON AND DIAERESIS + {0x1E7C, 0x1E7C, prUpper}, // L& LATIN CAPITAL LETTER V WITH TILDE + {0x1E7D, 0x1E7D, prLower}, // L& LATIN SMALL LETTER V WITH TILDE + {0x1E7E, 0x1E7E, prUpper}, // L& LATIN CAPITAL LETTER V WITH DOT BELOW + {0x1E7F, 0x1E7F, prLower}, // L& LATIN SMALL LETTER V WITH DOT BELOW + {0x1E80, 0x1E80, prUpper}, // L& LATIN CAPITAL LETTER W WITH GRAVE + {0x1E81, 0x1E81, prLower}, // L& LATIN SMALL LETTER W WITH GRAVE + {0x1E82, 0x1E82, prUpper}, // L& LATIN CAPITAL LETTER W WITH ACUTE + {0x1E83, 0x1E83, prLower}, // L& LATIN SMALL LETTER W WITH ACUTE + {0x1E84, 0x1E84, prUpper}, // L& LATIN CAPITAL LETTER W WITH DIAERESIS + {0x1E85, 0x1E85, prLower}, // L& LATIN SMALL LETTER W WITH DIAERESIS + {0x1E86, 0x1E86, prUpper}, // L& LATIN CAPITAL LETTER W WITH DOT ABOVE + {0x1E87, 0x1E87, prLower}, // L& LATIN SMALL LETTER W WITH DOT ABOVE + {0x1E88, 0x1E88, prUpper}, // L& LATIN CAPITAL LETTER W WITH DOT BELOW + {0x1E89, 0x1E89, prLower}, // L& LATIN SMALL LETTER W WITH DOT BELOW + {0x1E8A, 0x1E8A, prUpper}, // L& LATIN CAPITAL LETTER X WITH DOT ABOVE + {0x1E8B, 0x1E8B, prLower}, // L& LATIN SMALL LETTER X WITH DOT ABOVE + {0x1E8C, 0x1E8C, prUpper}, // L& LATIN CAPITAL LETTER X WITH DIAERESIS + {0x1E8D, 0x1E8D, prLower}, // L& LATIN SMALL LETTER X WITH DIAERESIS + {0x1E8E, 0x1E8E, prUpper}, // L& LATIN CAPITAL LETTER Y WITH DOT ABOVE + {0x1E8F, 0x1E8F, prLower}, // L& LATIN SMALL LETTER Y WITH DOT ABOVE + {0x1E90, 0x1E90, prUpper}, // L& LATIN CAPITAL LETTER Z WITH CIRCUMFLEX + {0x1E91, 0x1E91, prLower}, // L& LATIN SMALL LETTER Z WITH CIRCUMFLEX + {0x1E92, 0x1E92, prUpper}, // L& LATIN CAPITAL LETTER Z WITH DOT BELOW + {0x1E93, 0x1E93, prLower}, // L& LATIN SMALL LETTER Z WITH DOT BELOW + {0x1E94, 0x1E94, prUpper}, // L& LATIN CAPITAL LETTER Z WITH LINE BELOW + {0x1E95, 0x1E9D, prLower}, // L& [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE + {0x1E9E, 0x1E9E, prUpper}, // L& LATIN CAPITAL LETTER SHARP S + {0x1E9F, 0x1E9F, prLower}, // L& LATIN SMALL LETTER DELTA + {0x1EA0, 0x1EA0, prUpper}, // L& LATIN CAPITAL LETTER A WITH DOT BELOW + {0x1EA1, 0x1EA1, prLower}, // L& LATIN SMALL LETTER A WITH DOT BELOW + {0x1EA2, 0x1EA2, prUpper}, // L& LATIN CAPITAL LETTER A WITH HOOK ABOVE + {0x1EA3, 0x1EA3, prLower}, // L& LATIN SMALL LETTER A WITH HOOK ABOVE + {0x1EA4, 0x1EA4, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE + {0x1EA5, 0x1EA5, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE + {0x1EA6, 0x1EA6, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE + {0x1EA7, 0x1EA7, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE + {0x1EA8, 0x1EA8, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + {0x1EA9, 0x1EA9, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE + {0x1EAA, 0x1EAA, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE + {0x1EAB, 0x1EAB, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE + {0x1EAC, 0x1EAC, prUpper}, // L& LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW + {0x1EAD, 0x1EAD, prLower}, // L& LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW + {0x1EAE, 0x1EAE, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND ACUTE + {0x1EAF, 0x1EAF, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND ACUTE + {0x1EB0, 0x1EB0, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND GRAVE + {0x1EB1, 0x1EB1, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND GRAVE + {0x1EB2, 0x1EB2, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE + {0x1EB3, 0x1EB3, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE + {0x1EB4, 0x1EB4, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND TILDE + {0x1EB5, 0x1EB5, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND TILDE + {0x1EB6, 0x1EB6, prUpper}, // L& LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW + {0x1EB7, 0x1EB7, prLower}, // L& LATIN SMALL LETTER A WITH BREVE AND DOT BELOW + {0x1EB8, 0x1EB8, prUpper}, // L& LATIN CAPITAL LETTER E WITH DOT BELOW + {0x1EB9, 0x1EB9, prLower}, // L& LATIN SMALL LETTER E WITH DOT BELOW + {0x1EBA, 0x1EBA, prUpper}, // L& LATIN CAPITAL LETTER E WITH HOOK ABOVE + {0x1EBB, 0x1EBB, prLower}, // L& LATIN SMALL LETTER E WITH HOOK ABOVE + {0x1EBC, 0x1EBC, prUpper}, // L& LATIN CAPITAL LETTER E WITH TILDE + {0x1EBD, 0x1EBD, prLower}, // L& LATIN SMALL LETTER E WITH TILDE + {0x1EBE, 0x1EBE, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE + {0x1EBF, 0x1EBF, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE + {0x1EC0, 0x1EC0, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE + {0x1EC1, 0x1EC1, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE + {0x1EC2, 0x1EC2, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + {0x1EC3, 0x1EC3, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE + {0x1EC4, 0x1EC4, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE + {0x1EC5, 0x1EC5, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE + {0x1EC6, 0x1EC6, prUpper}, // L& LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW + {0x1EC7, 0x1EC7, prLower}, // L& LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW + {0x1EC8, 0x1EC8, prUpper}, // L& LATIN CAPITAL LETTER I WITH HOOK ABOVE + {0x1EC9, 0x1EC9, prLower}, // L& LATIN SMALL LETTER I WITH HOOK ABOVE + {0x1ECA, 0x1ECA, prUpper}, // L& LATIN CAPITAL LETTER I WITH DOT BELOW + {0x1ECB, 0x1ECB, prLower}, // L& LATIN SMALL LETTER I WITH DOT BELOW + {0x1ECC, 0x1ECC, prUpper}, // L& LATIN CAPITAL LETTER O WITH DOT BELOW + {0x1ECD, 0x1ECD, prLower}, // L& LATIN SMALL LETTER O WITH DOT BELOW + {0x1ECE, 0x1ECE, prUpper}, // L& LATIN CAPITAL LETTER O WITH HOOK ABOVE + {0x1ECF, 0x1ECF, prLower}, // L& LATIN SMALL LETTER O WITH HOOK ABOVE + {0x1ED0, 0x1ED0, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE + {0x1ED1, 0x1ED1, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE + {0x1ED2, 0x1ED2, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE + {0x1ED3, 0x1ED3, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE + {0x1ED4, 0x1ED4, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + {0x1ED5, 0x1ED5, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE + {0x1ED6, 0x1ED6, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE + {0x1ED7, 0x1ED7, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE + {0x1ED8, 0x1ED8, prUpper}, // L& LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW + {0x1ED9, 0x1ED9, prLower}, // L& LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW + {0x1EDA, 0x1EDA, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND ACUTE + {0x1EDB, 0x1EDB, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND ACUTE + {0x1EDC, 0x1EDC, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND GRAVE + {0x1EDD, 0x1EDD, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND GRAVE + {0x1EDE, 0x1EDE, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE + {0x1EDF, 0x1EDF, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE + {0x1EE0, 0x1EE0, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND TILDE + {0x1EE1, 0x1EE1, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND TILDE + {0x1EE2, 0x1EE2, prUpper}, // L& LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW + {0x1EE3, 0x1EE3, prLower}, // L& LATIN SMALL LETTER O WITH HORN AND DOT BELOW + {0x1EE4, 0x1EE4, prUpper}, // L& LATIN CAPITAL LETTER U WITH DOT BELOW + {0x1EE5, 0x1EE5, prLower}, // L& LATIN SMALL LETTER U WITH DOT BELOW + {0x1EE6, 0x1EE6, prUpper}, // L& LATIN CAPITAL LETTER U WITH HOOK ABOVE + {0x1EE7, 0x1EE7, prLower}, // L& LATIN SMALL LETTER U WITH HOOK ABOVE + {0x1EE8, 0x1EE8, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND ACUTE + {0x1EE9, 0x1EE9, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND ACUTE + {0x1EEA, 0x1EEA, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND GRAVE + {0x1EEB, 0x1EEB, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND GRAVE + {0x1EEC, 0x1EEC, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE + {0x1EED, 0x1EED, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE + {0x1EEE, 0x1EEE, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND TILDE + {0x1EEF, 0x1EEF, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND TILDE + {0x1EF0, 0x1EF0, prUpper}, // L& LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW + {0x1EF1, 0x1EF1, prLower}, // L& LATIN SMALL LETTER U WITH HORN AND DOT BELOW + {0x1EF2, 0x1EF2, prUpper}, // L& LATIN CAPITAL LETTER Y WITH GRAVE + {0x1EF3, 0x1EF3, prLower}, // L& LATIN SMALL LETTER Y WITH GRAVE + {0x1EF4, 0x1EF4, prUpper}, // L& LATIN CAPITAL LETTER Y WITH DOT BELOW + {0x1EF5, 0x1EF5, prLower}, // L& LATIN SMALL LETTER Y WITH DOT BELOW + {0x1EF6, 0x1EF6, prUpper}, // L& LATIN CAPITAL LETTER Y WITH HOOK ABOVE + {0x1EF7, 0x1EF7, prLower}, // L& LATIN SMALL LETTER Y WITH HOOK ABOVE + {0x1EF8, 0x1EF8, prUpper}, // L& LATIN CAPITAL LETTER Y WITH TILDE + {0x1EF9, 0x1EF9, prLower}, // L& LATIN SMALL LETTER Y WITH TILDE + {0x1EFA, 0x1EFA, prUpper}, // L& LATIN CAPITAL LETTER MIDDLE-WELSH LL + {0x1EFB, 0x1EFB, prLower}, // L& LATIN SMALL LETTER MIDDLE-WELSH LL + {0x1EFC, 0x1EFC, prUpper}, // L& LATIN CAPITAL LETTER MIDDLE-WELSH V + {0x1EFD, 0x1EFD, prLower}, // L& LATIN SMALL LETTER MIDDLE-WELSH V + {0x1EFE, 0x1EFE, prUpper}, // L& LATIN CAPITAL LETTER Y WITH LOOP + {0x1EFF, 0x1F07, prLower}, // L& [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI + {0x1F08, 0x1F0F, prUpper}, // L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI + {0x1F10, 0x1F15, prLower}, // L& [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + {0x1F18, 0x1F1D, prUpper}, // L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + {0x1F20, 0x1F27, prLower}, // L& [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI + {0x1F28, 0x1F2F, prUpper}, // L& [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI + {0x1F30, 0x1F37, prLower}, // L& [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI + {0x1F38, 0x1F3F, prUpper}, // L& [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI + {0x1F40, 0x1F45, prLower}, // L& [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + {0x1F48, 0x1F4D, prUpper}, // L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + {0x1F50, 0x1F57, prLower}, // L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + {0x1F59, 0x1F59, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA + {0x1F5B, 0x1F5B, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + {0x1F5D, 0x1F5D, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + {0x1F5F, 0x1F5F, prUpper}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI + {0x1F60, 0x1F67, prLower}, // L& [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI + {0x1F68, 0x1F6F, prUpper}, // L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI + {0x1F70, 0x1F7D, prLower}, // L& [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA + {0x1F80, 0x1F87, prLower}, // L& [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + {0x1F88, 0x1F8F, prUpper}, // L& [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + {0x1F90, 0x1F97, prLower}, // L& [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + {0x1F98, 0x1F9F, prUpper}, // L& [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + {0x1FA0, 0x1FA7, prLower}, // L& [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI + {0x1FA8, 0x1FAF, prUpper}, // L& [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI + {0x1FB0, 0x1FB4, prLower}, // L& [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + {0x1FB6, 0x1FB7, prLower}, // L& [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI + {0x1FB8, 0x1FBC, prUpper}, // L& [5] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + {0x1FBE, 0x1FBE, prLower}, // L& GREEK PROSGEGRAMMENI + {0x1FC2, 0x1FC4, prLower}, // L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + {0x1FC6, 0x1FC7, prLower}, // L& [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI + {0x1FC8, 0x1FCC, prUpper}, // L& [5] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + {0x1FD0, 0x1FD3, prLower}, // L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA + {0x1FD6, 0x1FD7, prLower}, // L& [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI + {0x1FD8, 0x1FDB, prUpper}, // L& [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA + {0x1FE0, 0x1FE7, prLower}, // L& [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI + {0x1FE8, 0x1FEC, prUpper}, // L& [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA + {0x1FF2, 0x1FF4, prLower}, // L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + {0x1FF6, 0x1FF7, prLower}, // L& [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI + {0x1FF8, 0x1FFC, prUpper}, // L& [5] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + {0x2000, 0x200A, prSp}, // Zs [11] EN QUAD..HAIR SPACE + {0x200B, 0x200B, prFormat}, // Cf ZERO WIDTH SPACE + {0x200C, 0x200D, prExtend}, // Cf [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER + {0x200E, 0x200F, prFormat}, // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK + {0x2013, 0x2014, prSContinue}, // Pd [2] EN DASH..EM DASH + {0x2018, 0x2018, prClose}, // Pi LEFT SINGLE QUOTATION MARK + {0x2019, 0x2019, prClose}, // Pf RIGHT SINGLE QUOTATION MARK + {0x201A, 0x201A, prClose}, // Ps SINGLE LOW-9 QUOTATION MARK + {0x201B, 0x201C, prClose}, // Pi [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK + {0x201D, 0x201D, prClose}, // Pf RIGHT DOUBLE QUOTATION MARK + {0x201E, 0x201E, prClose}, // Ps DOUBLE LOW-9 QUOTATION MARK + {0x201F, 0x201F, prClose}, // Pi DOUBLE HIGH-REVERSED-9 QUOTATION MARK + {0x2024, 0x2024, prATerm}, // Po ONE DOT LEADER + {0x2028, 0x2028, prSep}, // Zl LINE SEPARATOR + {0x2029, 0x2029, prSep}, // Zp PARAGRAPH SEPARATOR + {0x202A, 0x202E, prFormat}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE + {0x202F, 0x202F, prSp}, // Zs NARROW NO-BREAK SPACE + {0x2039, 0x2039, prClose}, // Pi SINGLE LEFT-POINTING ANGLE QUOTATION MARK + {0x203A, 0x203A, prClose}, // Pf SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + {0x203C, 0x203D, prSTerm}, // Po [2] DOUBLE EXCLAMATION MARK..INTERROBANG + {0x2045, 0x2045, prClose}, // Ps LEFT SQUARE BRACKET WITH QUILL + {0x2046, 0x2046, prClose}, // Pe RIGHT SQUARE BRACKET WITH QUILL + {0x2047, 0x2049, prSTerm}, // Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK + {0x205F, 0x205F, prSp}, // Zs MEDIUM MATHEMATICAL SPACE + {0x2060, 0x2064, prFormat}, // Cf [5] WORD JOINER..INVISIBLE PLUS + {0x2066, 0x206F, prFormat}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES + {0x2071, 0x2071, prLower}, // Lm SUPERSCRIPT LATIN SMALL LETTER I + {0x207D, 0x207D, prClose}, // Ps SUPERSCRIPT LEFT PARENTHESIS + {0x207E, 0x207E, prClose}, // Pe SUPERSCRIPT RIGHT PARENTHESIS + {0x207F, 0x207F, prLower}, // Lm SUPERSCRIPT LATIN SMALL LETTER N + {0x208D, 0x208D, prClose}, // Ps SUBSCRIPT LEFT PARENTHESIS + {0x208E, 0x208E, prClose}, // Pe SUBSCRIPT RIGHT PARENTHESIS + {0x2090, 0x209C, prLower}, // Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T + {0x20D0, 0x20DC, prExtend}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE + {0x20DD, 0x20E0, prExtend}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH + {0x20E1, 0x20E1, prExtend}, // Mn COMBINING LEFT RIGHT ARROW ABOVE + {0x20E2, 0x20E4, prExtend}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE + {0x20E5, 0x20F0, prExtend}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE + {0x2102, 0x2102, prUpper}, // L& DOUBLE-STRUCK CAPITAL C + {0x2107, 0x2107, prUpper}, // L& EULER CONSTANT + {0x210A, 0x210A, prLower}, // L& SCRIPT SMALL G + {0x210B, 0x210D, prUpper}, // L& [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H + {0x210E, 0x210F, prLower}, // L& [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI + {0x2110, 0x2112, prUpper}, // L& [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L + {0x2113, 0x2113, prLower}, // L& SCRIPT SMALL L + {0x2115, 0x2115, prUpper}, // L& DOUBLE-STRUCK CAPITAL N + {0x2119, 0x211D, prUpper}, // L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R + {0x2124, 0x2124, prUpper}, // L& DOUBLE-STRUCK CAPITAL Z + {0x2126, 0x2126, prUpper}, // L& OHM SIGN + {0x2128, 0x2128, prUpper}, // L& BLACK-LETTER CAPITAL Z + {0x212A, 0x212D, prUpper}, // L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C + {0x212F, 0x212F, prLower}, // L& SCRIPT SMALL E + {0x2130, 0x2133, prUpper}, // L& [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M + {0x2134, 0x2134, prLower}, // L& SCRIPT SMALL O + {0x2135, 0x2138, prOLetter}, // Lo [4] ALEF SYMBOL..DALET SYMBOL + {0x2139, 0x2139, prLower}, // L& INFORMATION SOURCE + {0x213C, 0x213D, prLower}, // L& [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA + {0x213E, 0x213F, prUpper}, // L& [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI + {0x2145, 0x2145, prUpper}, // L& DOUBLE-STRUCK ITALIC CAPITAL D + {0x2146, 0x2149, prLower}, // L& [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J + {0x214E, 0x214E, prLower}, // L& TURNED SMALL F + {0x2160, 0x216F, prUpper}, // Nl [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND + {0x2170, 0x217F, prLower}, // Nl [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND + {0x2180, 0x2182, prOLetter}, // Nl [3] ROMAN NUMERAL ONE THOUSAND C D..ROMAN NUMERAL TEN THOUSAND + {0x2183, 0x2183, prUpper}, // L& ROMAN NUMERAL REVERSED ONE HUNDRED + {0x2184, 0x2184, prLower}, // L& LATIN SMALL LETTER REVERSED C + {0x2185, 0x2188, prOLetter}, // Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND + {0x2308, 0x2308, prClose}, // Ps LEFT CEILING + {0x2309, 0x2309, prClose}, // Pe RIGHT CEILING + {0x230A, 0x230A, prClose}, // Ps LEFT FLOOR + {0x230B, 0x230B, prClose}, // Pe RIGHT FLOOR + {0x2329, 0x2329, prClose}, // Ps LEFT-POINTING ANGLE BRACKET + {0x232A, 0x232A, prClose}, // Pe RIGHT-POINTING ANGLE BRACKET + {0x24B6, 0x24CF, prUpper}, // So [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z + {0x24D0, 0x24E9, prLower}, // So [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z + {0x275B, 0x2760, prClose}, // So [6] HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + {0x2768, 0x2768, prClose}, // Ps MEDIUM LEFT PARENTHESIS ORNAMENT + {0x2769, 0x2769, prClose}, // Pe MEDIUM RIGHT PARENTHESIS ORNAMENT + {0x276A, 0x276A, prClose}, // Ps MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT + {0x276B, 0x276B, prClose}, // Pe MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT + {0x276C, 0x276C, prClose}, // Ps MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT + {0x276D, 0x276D, prClose}, // Pe MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT + {0x276E, 0x276E, prClose}, // Ps HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT + {0x276F, 0x276F, prClose}, // Pe HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT + {0x2770, 0x2770, prClose}, // Ps HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT + {0x2771, 0x2771, prClose}, // Pe HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT + {0x2772, 0x2772, prClose}, // Ps LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT + {0x2773, 0x2773, prClose}, // Pe LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT + {0x2774, 0x2774, prClose}, // Ps MEDIUM LEFT CURLY BRACKET ORNAMENT + {0x2775, 0x2775, prClose}, // Pe MEDIUM RIGHT CURLY BRACKET ORNAMENT + {0x27C5, 0x27C5, prClose}, // Ps LEFT S-SHAPED BAG DELIMITER + {0x27C6, 0x27C6, prClose}, // Pe RIGHT S-SHAPED BAG DELIMITER + {0x27E6, 0x27E6, prClose}, // Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET + {0x27E7, 0x27E7, prClose}, // Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET + {0x27E8, 0x27E8, prClose}, // Ps MATHEMATICAL LEFT ANGLE BRACKET + {0x27E9, 0x27E9, prClose}, // Pe MATHEMATICAL RIGHT ANGLE BRACKET + {0x27EA, 0x27EA, prClose}, // Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET + {0x27EB, 0x27EB, prClose}, // Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET + {0x27EC, 0x27EC, prClose}, // Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET + {0x27ED, 0x27ED, prClose}, // Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET + {0x27EE, 0x27EE, prClose}, // Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS + {0x27EF, 0x27EF, prClose}, // Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS + {0x2983, 0x2983, prClose}, // Ps LEFT WHITE CURLY BRACKET + {0x2984, 0x2984, prClose}, // Pe RIGHT WHITE CURLY BRACKET + {0x2985, 0x2985, prClose}, // Ps LEFT WHITE PARENTHESIS + {0x2986, 0x2986, prClose}, // Pe RIGHT WHITE PARENTHESIS + {0x2987, 0x2987, prClose}, // Ps Z NOTATION LEFT IMAGE BRACKET + {0x2988, 0x2988, prClose}, // Pe Z NOTATION RIGHT IMAGE BRACKET + {0x2989, 0x2989, prClose}, // Ps Z NOTATION LEFT BINDING BRACKET + {0x298A, 0x298A, prClose}, // Pe Z NOTATION RIGHT BINDING BRACKET + {0x298B, 0x298B, prClose}, // Ps LEFT SQUARE BRACKET WITH UNDERBAR + {0x298C, 0x298C, prClose}, // Pe RIGHT SQUARE BRACKET WITH UNDERBAR + {0x298D, 0x298D, prClose}, // Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER + {0x298E, 0x298E, prClose}, // Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER + {0x298F, 0x298F, prClose}, // Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER + {0x2990, 0x2990, prClose}, // Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER + {0x2991, 0x2991, prClose}, // Ps LEFT ANGLE BRACKET WITH DOT + {0x2992, 0x2992, prClose}, // Pe RIGHT ANGLE BRACKET WITH DOT + {0x2993, 0x2993, prClose}, // Ps LEFT ARC LESS-THAN BRACKET + {0x2994, 0x2994, prClose}, // Pe RIGHT ARC GREATER-THAN BRACKET + {0x2995, 0x2995, prClose}, // Ps DOUBLE LEFT ARC GREATER-THAN BRACKET + {0x2996, 0x2996, prClose}, // Pe DOUBLE RIGHT ARC LESS-THAN BRACKET + {0x2997, 0x2997, prClose}, // Ps LEFT BLACK TORTOISE SHELL BRACKET + {0x2998, 0x2998, prClose}, // Pe RIGHT BLACK TORTOISE SHELL BRACKET + {0x29D8, 0x29D8, prClose}, // Ps LEFT WIGGLY FENCE + {0x29D9, 0x29D9, prClose}, // Pe RIGHT WIGGLY FENCE + {0x29DA, 0x29DA, prClose}, // Ps LEFT DOUBLE WIGGLY FENCE + {0x29DB, 0x29DB, prClose}, // Pe RIGHT DOUBLE WIGGLY FENCE + {0x29FC, 0x29FC, prClose}, // Ps LEFT-POINTING CURVED ANGLE BRACKET + {0x29FD, 0x29FD, prClose}, // Pe RIGHT-POINTING CURVED ANGLE BRACKET + {0x2C00, 0x2C2F, prUpper}, // L& [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI + {0x2C30, 0x2C5F, prLower}, // L& [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI + {0x2C60, 0x2C60, prUpper}, // L& LATIN CAPITAL LETTER L WITH DOUBLE BAR + {0x2C61, 0x2C61, prLower}, // L& LATIN SMALL LETTER L WITH DOUBLE BAR + {0x2C62, 0x2C64, prUpper}, // L& [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL + {0x2C65, 0x2C66, prLower}, // L& [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE + {0x2C67, 0x2C67, prUpper}, // L& LATIN CAPITAL LETTER H WITH DESCENDER + {0x2C68, 0x2C68, prLower}, // L& LATIN SMALL LETTER H WITH DESCENDER + {0x2C69, 0x2C69, prUpper}, // L& LATIN CAPITAL LETTER K WITH DESCENDER + {0x2C6A, 0x2C6A, prLower}, // L& LATIN SMALL LETTER K WITH DESCENDER + {0x2C6B, 0x2C6B, prUpper}, // L& LATIN CAPITAL LETTER Z WITH DESCENDER + {0x2C6C, 0x2C6C, prLower}, // L& LATIN SMALL LETTER Z WITH DESCENDER + {0x2C6D, 0x2C70, prUpper}, // L& [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA + {0x2C71, 0x2C71, prLower}, // L& LATIN SMALL LETTER V WITH RIGHT HOOK + {0x2C72, 0x2C72, prUpper}, // L& LATIN CAPITAL LETTER W WITH HOOK + {0x2C73, 0x2C74, prLower}, // L& [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL + {0x2C75, 0x2C75, prUpper}, // L& LATIN CAPITAL LETTER HALF H + {0x2C76, 0x2C7B, prLower}, // L& [6] LATIN SMALL LETTER HALF H..LATIN LETTER SMALL CAPITAL TURNED E + {0x2C7C, 0x2C7D, prLower}, // Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V + {0x2C7E, 0x2C80, prUpper}, // L& [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA + {0x2C81, 0x2C81, prLower}, // L& COPTIC SMALL LETTER ALFA + {0x2C82, 0x2C82, prUpper}, // L& COPTIC CAPITAL LETTER VIDA + {0x2C83, 0x2C83, prLower}, // L& COPTIC SMALL LETTER VIDA + {0x2C84, 0x2C84, prUpper}, // L& COPTIC CAPITAL LETTER GAMMA + {0x2C85, 0x2C85, prLower}, // L& COPTIC SMALL LETTER GAMMA + {0x2C86, 0x2C86, prUpper}, // L& COPTIC CAPITAL LETTER DALDA + {0x2C87, 0x2C87, prLower}, // L& COPTIC SMALL LETTER DALDA + {0x2C88, 0x2C88, prUpper}, // L& COPTIC CAPITAL LETTER EIE + {0x2C89, 0x2C89, prLower}, // L& COPTIC SMALL LETTER EIE + {0x2C8A, 0x2C8A, prUpper}, // L& COPTIC CAPITAL LETTER SOU + {0x2C8B, 0x2C8B, prLower}, // L& COPTIC SMALL LETTER SOU + {0x2C8C, 0x2C8C, prUpper}, // L& COPTIC CAPITAL LETTER ZATA + {0x2C8D, 0x2C8D, prLower}, // L& COPTIC SMALL LETTER ZATA + {0x2C8E, 0x2C8E, prUpper}, // L& COPTIC CAPITAL LETTER HATE + {0x2C8F, 0x2C8F, prLower}, // L& COPTIC SMALL LETTER HATE + {0x2C90, 0x2C90, prUpper}, // L& COPTIC CAPITAL LETTER THETHE + {0x2C91, 0x2C91, prLower}, // L& COPTIC SMALL LETTER THETHE + {0x2C92, 0x2C92, prUpper}, // L& COPTIC CAPITAL LETTER IAUDA + {0x2C93, 0x2C93, prLower}, // L& COPTIC SMALL LETTER IAUDA + {0x2C94, 0x2C94, prUpper}, // L& COPTIC CAPITAL LETTER KAPA + {0x2C95, 0x2C95, prLower}, // L& COPTIC SMALL LETTER KAPA + {0x2C96, 0x2C96, prUpper}, // L& COPTIC CAPITAL LETTER LAULA + {0x2C97, 0x2C97, prLower}, // L& COPTIC SMALL LETTER LAULA + {0x2C98, 0x2C98, prUpper}, // L& COPTIC CAPITAL LETTER MI + {0x2C99, 0x2C99, prLower}, // L& COPTIC SMALL LETTER MI + {0x2C9A, 0x2C9A, prUpper}, // L& COPTIC CAPITAL LETTER NI + {0x2C9B, 0x2C9B, prLower}, // L& COPTIC SMALL LETTER NI + {0x2C9C, 0x2C9C, prUpper}, // L& COPTIC CAPITAL LETTER KSI + {0x2C9D, 0x2C9D, prLower}, // L& COPTIC SMALL LETTER KSI + {0x2C9E, 0x2C9E, prUpper}, // L& COPTIC CAPITAL LETTER O + {0x2C9F, 0x2C9F, prLower}, // L& COPTIC SMALL LETTER O + {0x2CA0, 0x2CA0, prUpper}, // L& COPTIC CAPITAL LETTER PI + {0x2CA1, 0x2CA1, prLower}, // L& COPTIC SMALL LETTER PI + {0x2CA2, 0x2CA2, prUpper}, // L& COPTIC CAPITAL LETTER RO + {0x2CA3, 0x2CA3, prLower}, // L& COPTIC SMALL LETTER RO + {0x2CA4, 0x2CA4, prUpper}, // L& COPTIC CAPITAL LETTER SIMA + {0x2CA5, 0x2CA5, prLower}, // L& COPTIC SMALL LETTER SIMA + {0x2CA6, 0x2CA6, prUpper}, // L& COPTIC CAPITAL LETTER TAU + {0x2CA7, 0x2CA7, prLower}, // L& COPTIC SMALL LETTER TAU + {0x2CA8, 0x2CA8, prUpper}, // L& COPTIC CAPITAL LETTER UA + {0x2CA9, 0x2CA9, prLower}, // L& COPTIC SMALL LETTER UA + {0x2CAA, 0x2CAA, prUpper}, // L& COPTIC CAPITAL LETTER FI + {0x2CAB, 0x2CAB, prLower}, // L& COPTIC SMALL LETTER FI + {0x2CAC, 0x2CAC, prUpper}, // L& COPTIC CAPITAL LETTER KHI + {0x2CAD, 0x2CAD, prLower}, // L& COPTIC SMALL LETTER KHI + {0x2CAE, 0x2CAE, prUpper}, // L& COPTIC CAPITAL LETTER PSI + {0x2CAF, 0x2CAF, prLower}, // L& COPTIC SMALL LETTER PSI + {0x2CB0, 0x2CB0, prUpper}, // L& COPTIC CAPITAL LETTER OOU + {0x2CB1, 0x2CB1, prLower}, // L& COPTIC SMALL LETTER OOU + {0x2CB2, 0x2CB2, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P ALEF + {0x2CB3, 0x2CB3, prLower}, // L& COPTIC SMALL LETTER DIALECT-P ALEF + {0x2CB4, 0x2CB4, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC AIN + {0x2CB5, 0x2CB5, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC AIN + {0x2CB6, 0x2CB6, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE + {0x2CB7, 0x2CB7, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC EIE + {0x2CB8, 0x2CB8, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P KAPA + {0x2CB9, 0x2CB9, prLower}, // L& COPTIC SMALL LETTER DIALECT-P KAPA + {0x2CBA, 0x2CBA, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P NI + {0x2CBB, 0x2CBB, prLower}, // L& COPTIC SMALL LETTER DIALECT-P NI + {0x2CBC, 0x2CBC, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI + {0x2CBD, 0x2CBD, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC NI + {0x2CBE, 0x2CBE, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC OOU + {0x2CBF, 0x2CBF, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC OOU + {0x2CC0, 0x2CC0, prUpper}, // L& COPTIC CAPITAL LETTER SAMPI + {0x2CC1, 0x2CC1, prLower}, // L& COPTIC SMALL LETTER SAMPI + {0x2CC2, 0x2CC2, prUpper}, // L& COPTIC CAPITAL LETTER CROSSED SHEI + {0x2CC3, 0x2CC3, prLower}, // L& COPTIC SMALL LETTER CROSSED SHEI + {0x2CC4, 0x2CC4, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC SHEI + {0x2CC5, 0x2CC5, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC SHEI + {0x2CC6, 0x2CC6, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC ESH + {0x2CC7, 0x2CC7, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC ESH + {0x2CC8, 0x2CC8, prUpper}, // L& COPTIC CAPITAL LETTER AKHMIMIC KHEI + {0x2CC9, 0x2CC9, prLower}, // L& COPTIC SMALL LETTER AKHMIMIC KHEI + {0x2CCA, 0x2CCA, prUpper}, // L& COPTIC CAPITAL LETTER DIALECT-P HORI + {0x2CCB, 0x2CCB, prLower}, // L& COPTIC SMALL LETTER DIALECT-P HORI + {0x2CCC, 0x2CCC, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HORI + {0x2CCD, 0x2CCD, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HORI + {0x2CCE, 0x2CCE, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HA + {0x2CCF, 0x2CCF, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HA + {0x2CD0, 0x2CD0, prUpper}, // L& COPTIC CAPITAL LETTER L-SHAPED HA + {0x2CD1, 0x2CD1, prLower}, // L& COPTIC SMALL LETTER L-SHAPED HA + {0x2CD2, 0x2CD2, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HEI + {0x2CD3, 0x2CD3, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HEI + {0x2CD4, 0x2CD4, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC HAT + {0x2CD5, 0x2CD5, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC HAT + {0x2CD6, 0x2CD6, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC GANGIA + {0x2CD7, 0x2CD7, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC GANGIA + {0x2CD8, 0x2CD8, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC DJA + {0x2CD9, 0x2CD9, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC DJA + {0x2CDA, 0x2CDA, prUpper}, // L& COPTIC CAPITAL LETTER OLD COPTIC SHIMA + {0x2CDB, 0x2CDB, prLower}, // L& COPTIC SMALL LETTER OLD COPTIC SHIMA + {0x2CDC, 0x2CDC, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN SHIMA + {0x2CDD, 0x2CDD, prLower}, // L& COPTIC SMALL LETTER OLD NUBIAN SHIMA + {0x2CDE, 0x2CDE, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN NGI + {0x2CDF, 0x2CDF, prLower}, // L& COPTIC SMALL LETTER OLD NUBIAN NGI + {0x2CE0, 0x2CE0, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN NYI + {0x2CE1, 0x2CE1, prLower}, // L& COPTIC SMALL LETTER OLD NUBIAN NYI + {0x2CE2, 0x2CE2, prUpper}, // L& COPTIC CAPITAL LETTER OLD NUBIAN WAU + {0x2CE3, 0x2CE4, prLower}, // L& [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI + {0x2CEB, 0x2CEB, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI + {0x2CEC, 0x2CEC, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI + {0x2CED, 0x2CED, prUpper}, // L& COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA + {0x2CEE, 0x2CEE, prLower}, // L& COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA + {0x2CEF, 0x2CF1, prExtend}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS + {0x2CF2, 0x2CF2, prUpper}, // L& COPTIC CAPITAL LETTER BOHAIRIC KHEI + {0x2CF3, 0x2CF3, prLower}, // L& COPTIC SMALL LETTER BOHAIRIC KHEI + {0x2D00, 0x2D25, prLower}, // L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE + {0x2D27, 0x2D27, prLower}, // L& GEORGIAN SMALL LETTER YN + {0x2D2D, 0x2D2D, prLower}, // L& GEORGIAN SMALL LETTER AEN + {0x2D30, 0x2D67, prOLetter}, // Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO + {0x2D6F, 0x2D6F, prOLetter}, // Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK + {0x2D7F, 0x2D7F, prExtend}, // Mn TIFINAGH CONSONANT JOINER + {0x2D80, 0x2D96, prOLetter}, // Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE + {0x2DA0, 0x2DA6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO + {0x2DA8, 0x2DAE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO + {0x2DB0, 0x2DB6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO + {0x2DB8, 0x2DBE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO + {0x2DC0, 0x2DC6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO + {0x2DC8, 0x2DCE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO + {0x2DD0, 0x2DD6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO + {0x2DD8, 0x2DDE, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO + {0x2DE0, 0x2DFF, prExtend}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS + {0x2E00, 0x2E01, prClose}, // Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER + {0x2E02, 0x2E02, prClose}, // Pi LEFT SUBSTITUTION BRACKET + {0x2E03, 0x2E03, prClose}, // Pf RIGHT SUBSTITUTION BRACKET + {0x2E04, 0x2E04, prClose}, // Pi LEFT DOTTED SUBSTITUTION BRACKET + {0x2E05, 0x2E05, prClose}, // Pf RIGHT DOTTED SUBSTITUTION BRACKET + {0x2E06, 0x2E08, prClose}, // Po [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER + {0x2E09, 0x2E09, prClose}, // Pi LEFT TRANSPOSITION BRACKET + {0x2E0A, 0x2E0A, prClose}, // Pf RIGHT TRANSPOSITION BRACKET + {0x2E0B, 0x2E0B, prClose}, // Po RAISED SQUARE + {0x2E0C, 0x2E0C, prClose}, // Pi LEFT RAISED OMISSION BRACKET + {0x2E0D, 0x2E0D, prClose}, // Pf RIGHT RAISED OMISSION BRACKET + {0x2E1C, 0x2E1C, prClose}, // Pi LEFT LOW PARAPHRASE BRACKET + {0x2E1D, 0x2E1D, prClose}, // Pf RIGHT LOW PARAPHRASE BRACKET + {0x2E20, 0x2E20, prClose}, // Pi LEFT VERTICAL BAR WITH QUILL + {0x2E21, 0x2E21, prClose}, // Pf RIGHT VERTICAL BAR WITH QUILL + {0x2E22, 0x2E22, prClose}, // Ps TOP LEFT HALF BRACKET + {0x2E23, 0x2E23, prClose}, // Pe TOP RIGHT HALF BRACKET + {0x2E24, 0x2E24, prClose}, // Ps BOTTOM LEFT HALF BRACKET + {0x2E25, 0x2E25, prClose}, // Pe BOTTOM RIGHT HALF BRACKET + {0x2E26, 0x2E26, prClose}, // Ps LEFT SIDEWAYS U BRACKET + {0x2E27, 0x2E27, prClose}, // Pe RIGHT SIDEWAYS U BRACKET + {0x2E28, 0x2E28, prClose}, // Ps LEFT DOUBLE PARENTHESIS + {0x2E29, 0x2E29, prClose}, // Pe RIGHT DOUBLE PARENTHESIS + {0x2E2E, 0x2E2E, prSTerm}, // Po REVERSED QUESTION MARK + {0x2E2F, 0x2E2F, prOLetter}, // Lm VERTICAL TILDE + {0x2E3C, 0x2E3C, prSTerm}, // Po STENOGRAPHIC FULL STOP + {0x2E42, 0x2E42, prClose}, // Ps DOUBLE LOW-REVERSED-9 QUOTATION MARK + {0x2E53, 0x2E54, prSTerm}, // Po [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK + {0x2E55, 0x2E55, prClose}, // Ps LEFT SQUARE BRACKET WITH STROKE + {0x2E56, 0x2E56, prClose}, // Pe RIGHT SQUARE BRACKET WITH STROKE + {0x2E57, 0x2E57, prClose}, // Ps LEFT SQUARE BRACKET WITH DOUBLE STROKE + {0x2E58, 0x2E58, prClose}, // Pe RIGHT SQUARE BRACKET WITH DOUBLE STROKE + {0x2E59, 0x2E59, prClose}, // Ps TOP HALF LEFT PARENTHESIS + {0x2E5A, 0x2E5A, prClose}, // Pe TOP HALF RIGHT PARENTHESIS + {0x2E5B, 0x2E5B, prClose}, // Ps BOTTOM HALF LEFT PARENTHESIS + {0x2E5C, 0x2E5C, prClose}, // Pe BOTTOM HALF RIGHT PARENTHESIS + {0x3000, 0x3000, prSp}, // Zs IDEOGRAPHIC SPACE + {0x3001, 0x3001, prSContinue}, // Po IDEOGRAPHIC COMMA + {0x3002, 0x3002, prSTerm}, // Po IDEOGRAPHIC FULL STOP + {0x3005, 0x3005, prOLetter}, // Lm IDEOGRAPHIC ITERATION MARK + {0x3006, 0x3006, prOLetter}, // Lo IDEOGRAPHIC CLOSING MARK + {0x3007, 0x3007, prOLetter}, // Nl IDEOGRAPHIC NUMBER ZERO + {0x3008, 0x3008, prClose}, // Ps LEFT ANGLE BRACKET + {0x3009, 0x3009, prClose}, // Pe RIGHT ANGLE BRACKET + {0x300A, 0x300A, prClose}, // Ps LEFT DOUBLE ANGLE BRACKET + {0x300B, 0x300B, prClose}, // Pe RIGHT DOUBLE ANGLE BRACKET + {0x300C, 0x300C, prClose}, // Ps LEFT CORNER BRACKET + {0x300D, 0x300D, prClose}, // Pe RIGHT CORNER BRACKET + {0x300E, 0x300E, prClose}, // Ps LEFT WHITE CORNER BRACKET + {0x300F, 0x300F, prClose}, // Pe RIGHT WHITE CORNER BRACKET + {0x3010, 0x3010, prClose}, // Ps LEFT BLACK LENTICULAR BRACKET + {0x3011, 0x3011, prClose}, // Pe RIGHT BLACK LENTICULAR BRACKET + {0x3014, 0x3014, prClose}, // Ps LEFT TORTOISE SHELL BRACKET + {0x3015, 0x3015, prClose}, // Pe RIGHT TORTOISE SHELL BRACKET + {0x3016, 0x3016, prClose}, // Ps LEFT WHITE LENTICULAR BRACKET + {0x3017, 0x3017, prClose}, // Pe RIGHT WHITE LENTICULAR BRACKET + {0x3018, 0x3018, prClose}, // Ps LEFT WHITE TORTOISE SHELL BRACKET + {0x3019, 0x3019, prClose}, // Pe RIGHT WHITE TORTOISE SHELL BRACKET + {0x301A, 0x301A, prClose}, // Ps LEFT WHITE SQUARE BRACKET + {0x301B, 0x301B, prClose}, // Pe RIGHT WHITE SQUARE BRACKET + {0x301D, 0x301D, prClose}, // Ps REVERSED DOUBLE PRIME QUOTATION MARK + {0x301E, 0x301F, prClose}, // Pe [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK + {0x3021, 0x3029, prOLetter}, // Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE + {0x302A, 0x302D, prExtend}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK + {0x302E, 0x302F, prExtend}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK + {0x3031, 0x3035, prOLetter}, // Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF + {0x3038, 0x303A, prOLetter}, // Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY + {0x303B, 0x303B, prOLetter}, // Lm VERTICAL IDEOGRAPHIC ITERATION MARK + {0x303C, 0x303C, prOLetter}, // Lo MASU MARK + {0x3041, 0x3096, prOLetter}, // Lo [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE + {0x3099, 0x309A, prExtend}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x309D, 0x309E, prOLetter}, // Lm [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK + {0x309F, 0x309F, prOLetter}, // Lo HIRAGANA DIGRAPH YORI + {0x30A1, 0x30FA, prOLetter}, // Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO + {0x30FC, 0x30FE, prOLetter}, // Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK + {0x30FF, 0x30FF, prOLetter}, // Lo KATAKANA DIGRAPH KOTO + {0x3105, 0x312F, prOLetter}, // Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN + {0x3131, 0x318E, prOLetter}, // Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE + {0x31A0, 0x31BF, prOLetter}, // Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH + {0x31F0, 0x31FF, prOLetter}, // Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO + {0x3400, 0x4DBF, prOLetter}, // Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF + {0x4E00, 0xA014, prOLetter}, // Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E + {0xA015, 0xA015, prOLetter}, // Lm YI SYLLABLE WU + {0xA016, 0xA48C, prOLetter}, // Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR + {0xA4D0, 0xA4F7, prOLetter}, // Lo [40] LISU LETTER BA..LISU LETTER OE + {0xA4F8, 0xA4FD, prOLetter}, // Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU + {0xA4FF, 0xA4FF, prSTerm}, // Po LISU PUNCTUATION FULL STOP + {0xA500, 0xA60B, prOLetter}, // Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG + {0xA60C, 0xA60C, prOLetter}, // Lm VAI SYLLABLE LENGTHENER + {0xA60E, 0xA60F, prSTerm}, // Po [2] VAI FULL STOP..VAI QUESTION MARK + {0xA610, 0xA61F, prOLetter}, // Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG + {0xA620, 0xA629, prNumeric}, // Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE + {0xA62A, 0xA62B, prOLetter}, // Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO + {0xA640, 0xA640, prUpper}, // L& CYRILLIC CAPITAL LETTER ZEMLYA + {0xA641, 0xA641, prLower}, // L& CYRILLIC SMALL LETTER ZEMLYA + {0xA642, 0xA642, prUpper}, // L& CYRILLIC CAPITAL LETTER DZELO + {0xA643, 0xA643, prLower}, // L& CYRILLIC SMALL LETTER DZELO + {0xA644, 0xA644, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED DZE + {0xA645, 0xA645, prLower}, // L& CYRILLIC SMALL LETTER REVERSED DZE + {0xA646, 0xA646, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTA + {0xA647, 0xA647, prLower}, // L& CYRILLIC SMALL LETTER IOTA + {0xA648, 0xA648, prUpper}, // L& CYRILLIC CAPITAL LETTER DJERV + {0xA649, 0xA649, prLower}, // L& CYRILLIC SMALL LETTER DJERV + {0xA64A, 0xA64A, prUpper}, // L& CYRILLIC CAPITAL LETTER MONOGRAPH UK + {0xA64B, 0xA64B, prLower}, // L& CYRILLIC SMALL LETTER MONOGRAPH UK + {0xA64C, 0xA64C, prUpper}, // L& CYRILLIC CAPITAL LETTER BROAD OMEGA + {0xA64D, 0xA64D, prLower}, // L& CYRILLIC SMALL LETTER BROAD OMEGA + {0xA64E, 0xA64E, prUpper}, // L& CYRILLIC CAPITAL LETTER NEUTRAL YER + {0xA64F, 0xA64F, prLower}, // L& CYRILLIC SMALL LETTER NEUTRAL YER + {0xA650, 0xA650, prUpper}, // L& CYRILLIC CAPITAL LETTER YERU WITH BACK YER + {0xA651, 0xA651, prLower}, // L& CYRILLIC SMALL LETTER YERU WITH BACK YER + {0xA652, 0xA652, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED YAT + {0xA653, 0xA653, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED YAT + {0xA654, 0xA654, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED YU + {0xA655, 0xA655, prLower}, // L& CYRILLIC SMALL LETTER REVERSED YU + {0xA656, 0xA656, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED A + {0xA657, 0xA657, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED A + {0xA658, 0xA658, prUpper}, // L& CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS + {0xA659, 0xA659, prLower}, // L& CYRILLIC SMALL LETTER CLOSED LITTLE YUS + {0xA65A, 0xA65A, prUpper}, // L& CYRILLIC CAPITAL LETTER BLENDED YUS + {0xA65B, 0xA65B, prLower}, // L& CYRILLIC SMALL LETTER BLENDED YUS + {0xA65C, 0xA65C, prUpper}, // L& CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS + {0xA65D, 0xA65D, prLower}, // L& CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS + {0xA65E, 0xA65E, prUpper}, // L& CYRILLIC CAPITAL LETTER YN + {0xA65F, 0xA65F, prLower}, // L& CYRILLIC SMALL LETTER YN + {0xA660, 0xA660, prUpper}, // L& CYRILLIC CAPITAL LETTER REVERSED TSE + {0xA661, 0xA661, prLower}, // L& CYRILLIC SMALL LETTER REVERSED TSE + {0xA662, 0xA662, prUpper}, // L& CYRILLIC CAPITAL LETTER SOFT DE + {0xA663, 0xA663, prLower}, // L& CYRILLIC SMALL LETTER SOFT DE + {0xA664, 0xA664, prUpper}, // L& CYRILLIC CAPITAL LETTER SOFT EL + {0xA665, 0xA665, prLower}, // L& CYRILLIC SMALL LETTER SOFT EL + {0xA666, 0xA666, prUpper}, // L& CYRILLIC CAPITAL LETTER SOFT EM + {0xA667, 0xA667, prLower}, // L& CYRILLIC SMALL LETTER SOFT EM + {0xA668, 0xA668, prUpper}, // L& CYRILLIC CAPITAL LETTER MONOCULAR O + {0xA669, 0xA669, prLower}, // L& CYRILLIC SMALL LETTER MONOCULAR O + {0xA66A, 0xA66A, prUpper}, // L& CYRILLIC CAPITAL LETTER BINOCULAR O + {0xA66B, 0xA66B, prLower}, // L& CYRILLIC SMALL LETTER BINOCULAR O + {0xA66C, 0xA66C, prUpper}, // L& CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O + {0xA66D, 0xA66D, prLower}, // L& CYRILLIC SMALL LETTER DOUBLE MONOCULAR O + {0xA66E, 0xA66E, prOLetter}, // Lo CYRILLIC LETTER MULTIOCULAR O + {0xA66F, 0xA66F, prExtend}, // Mn COMBINING CYRILLIC VZMET + {0xA670, 0xA672, prExtend}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN + {0xA674, 0xA67D, prExtend}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK + {0xA67F, 0xA67F, prOLetter}, // Lm CYRILLIC PAYEROK + {0xA680, 0xA680, prUpper}, // L& CYRILLIC CAPITAL LETTER DWE + {0xA681, 0xA681, prLower}, // L& CYRILLIC SMALL LETTER DWE + {0xA682, 0xA682, prUpper}, // L& CYRILLIC CAPITAL LETTER DZWE + {0xA683, 0xA683, prLower}, // L& CYRILLIC SMALL LETTER DZWE + {0xA684, 0xA684, prUpper}, // L& CYRILLIC CAPITAL LETTER ZHWE + {0xA685, 0xA685, prLower}, // L& CYRILLIC SMALL LETTER ZHWE + {0xA686, 0xA686, prUpper}, // L& CYRILLIC CAPITAL LETTER CCHE + {0xA687, 0xA687, prLower}, // L& CYRILLIC SMALL LETTER CCHE + {0xA688, 0xA688, prUpper}, // L& CYRILLIC CAPITAL LETTER DZZE + {0xA689, 0xA689, prLower}, // L& CYRILLIC SMALL LETTER DZZE + {0xA68A, 0xA68A, prUpper}, // L& CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK + {0xA68B, 0xA68B, prLower}, // L& CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK + {0xA68C, 0xA68C, prUpper}, // L& CYRILLIC CAPITAL LETTER TWE + {0xA68D, 0xA68D, prLower}, // L& CYRILLIC SMALL LETTER TWE + {0xA68E, 0xA68E, prUpper}, // L& CYRILLIC CAPITAL LETTER TSWE + {0xA68F, 0xA68F, prLower}, // L& CYRILLIC SMALL LETTER TSWE + {0xA690, 0xA690, prUpper}, // L& CYRILLIC CAPITAL LETTER TSSE + {0xA691, 0xA691, prLower}, // L& CYRILLIC SMALL LETTER TSSE + {0xA692, 0xA692, prUpper}, // L& CYRILLIC CAPITAL LETTER TCHE + {0xA693, 0xA693, prLower}, // L& CYRILLIC SMALL LETTER TCHE + {0xA694, 0xA694, prUpper}, // L& CYRILLIC CAPITAL LETTER HWE + {0xA695, 0xA695, prLower}, // L& CYRILLIC SMALL LETTER HWE + {0xA696, 0xA696, prUpper}, // L& CYRILLIC CAPITAL LETTER SHWE + {0xA697, 0xA697, prLower}, // L& CYRILLIC SMALL LETTER SHWE + {0xA698, 0xA698, prUpper}, // L& CYRILLIC CAPITAL LETTER DOUBLE O + {0xA699, 0xA699, prLower}, // L& CYRILLIC SMALL LETTER DOUBLE O + {0xA69A, 0xA69A, prUpper}, // L& CYRILLIC CAPITAL LETTER CROSSED O + {0xA69B, 0xA69B, prLower}, // L& CYRILLIC SMALL LETTER CROSSED O + {0xA69C, 0xA69D, prLower}, // Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN + {0xA69E, 0xA69F, prExtend}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E + {0xA6A0, 0xA6E5, prOLetter}, // Lo [70] BAMUM LETTER A..BAMUM LETTER KI + {0xA6E6, 0xA6EF, prOLetter}, // Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM + {0xA6F0, 0xA6F1, prExtend}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS + {0xA6F3, 0xA6F3, prSTerm}, // Po BAMUM FULL STOP + {0xA6F7, 0xA6F7, prSTerm}, // Po BAMUM QUESTION MARK + {0xA717, 0xA71F, prOLetter}, // Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK + {0xA722, 0xA722, prUpper}, // L& LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF + {0xA723, 0xA723, prLower}, // L& LATIN SMALL LETTER EGYPTOLOGICAL ALEF + {0xA724, 0xA724, prUpper}, // L& LATIN CAPITAL LETTER EGYPTOLOGICAL AIN + {0xA725, 0xA725, prLower}, // L& LATIN SMALL LETTER EGYPTOLOGICAL AIN + {0xA726, 0xA726, prUpper}, // L& LATIN CAPITAL LETTER HENG + {0xA727, 0xA727, prLower}, // L& LATIN SMALL LETTER HENG + {0xA728, 0xA728, prUpper}, // L& LATIN CAPITAL LETTER TZ + {0xA729, 0xA729, prLower}, // L& LATIN SMALL LETTER TZ + {0xA72A, 0xA72A, prUpper}, // L& LATIN CAPITAL LETTER TRESILLO + {0xA72B, 0xA72B, prLower}, // L& LATIN SMALL LETTER TRESILLO + {0xA72C, 0xA72C, prUpper}, // L& LATIN CAPITAL LETTER CUATRILLO + {0xA72D, 0xA72D, prLower}, // L& LATIN SMALL LETTER CUATRILLO + {0xA72E, 0xA72E, prUpper}, // L& LATIN CAPITAL LETTER CUATRILLO WITH COMMA + {0xA72F, 0xA731, prLower}, // L& [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S + {0xA732, 0xA732, prUpper}, // L& LATIN CAPITAL LETTER AA + {0xA733, 0xA733, prLower}, // L& LATIN SMALL LETTER AA + {0xA734, 0xA734, prUpper}, // L& LATIN CAPITAL LETTER AO + {0xA735, 0xA735, prLower}, // L& LATIN SMALL LETTER AO + {0xA736, 0xA736, prUpper}, // L& LATIN CAPITAL LETTER AU + {0xA737, 0xA737, prLower}, // L& LATIN SMALL LETTER AU + {0xA738, 0xA738, prUpper}, // L& LATIN CAPITAL LETTER AV + {0xA739, 0xA739, prLower}, // L& LATIN SMALL LETTER AV + {0xA73A, 0xA73A, prUpper}, // L& LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR + {0xA73B, 0xA73B, prLower}, // L& LATIN SMALL LETTER AV WITH HORIZONTAL BAR + {0xA73C, 0xA73C, prUpper}, // L& LATIN CAPITAL LETTER AY + {0xA73D, 0xA73D, prLower}, // L& LATIN SMALL LETTER AY + {0xA73E, 0xA73E, prUpper}, // L& LATIN CAPITAL LETTER REVERSED C WITH DOT + {0xA73F, 0xA73F, prLower}, // L& LATIN SMALL LETTER REVERSED C WITH DOT + {0xA740, 0xA740, prUpper}, // L& LATIN CAPITAL LETTER K WITH STROKE + {0xA741, 0xA741, prLower}, // L& LATIN SMALL LETTER K WITH STROKE + {0xA742, 0xA742, prUpper}, // L& LATIN CAPITAL LETTER K WITH DIAGONAL STROKE + {0xA743, 0xA743, prLower}, // L& LATIN SMALL LETTER K WITH DIAGONAL STROKE + {0xA744, 0xA744, prUpper}, // L& LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE + {0xA745, 0xA745, prLower}, // L& LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE + {0xA746, 0xA746, prUpper}, // L& LATIN CAPITAL LETTER BROKEN L + {0xA747, 0xA747, prLower}, // L& LATIN SMALL LETTER BROKEN L + {0xA748, 0xA748, prUpper}, // L& LATIN CAPITAL LETTER L WITH HIGH STROKE + {0xA749, 0xA749, prLower}, // L& LATIN SMALL LETTER L WITH HIGH STROKE + {0xA74A, 0xA74A, prUpper}, // L& LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY + {0xA74B, 0xA74B, prLower}, // L& LATIN SMALL LETTER O WITH LONG STROKE OVERLAY + {0xA74C, 0xA74C, prUpper}, // L& LATIN CAPITAL LETTER O WITH LOOP + {0xA74D, 0xA74D, prLower}, // L& LATIN SMALL LETTER O WITH LOOP + {0xA74E, 0xA74E, prUpper}, // L& LATIN CAPITAL LETTER OO + {0xA74F, 0xA74F, prLower}, // L& LATIN SMALL LETTER OO + {0xA750, 0xA750, prUpper}, // L& LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER + {0xA751, 0xA751, prLower}, // L& LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER + {0xA752, 0xA752, prUpper}, // L& LATIN CAPITAL LETTER P WITH FLOURISH + {0xA753, 0xA753, prLower}, // L& LATIN SMALL LETTER P WITH FLOURISH + {0xA754, 0xA754, prUpper}, // L& LATIN CAPITAL LETTER P WITH SQUIRREL TAIL + {0xA755, 0xA755, prLower}, // L& LATIN SMALL LETTER P WITH SQUIRREL TAIL + {0xA756, 0xA756, prUpper}, // L& LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER + {0xA757, 0xA757, prLower}, // L& LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER + {0xA758, 0xA758, prUpper}, // L& LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE + {0xA759, 0xA759, prLower}, // L& LATIN SMALL LETTER Q WITH DIAGONAL STROKE + {0xA75A, 0xA75A, prUpper}, // L& LATIN CAPITAL LETTER R ROTUNDA + {0xA75B, 0xA75B, prLower}, // L& LATIN SMALL LETTER R ROTUNDA + {0xA75C, 0xA75C, prUpper}, // L& LATIN CAPITAL LETTER RUM ROTUNDA + {0xA75D, 0xA75D, prLower}, // L& LATIN SMALL LETTER RUM ROTUNDA + {0xA75E, 0xA75E, prUpper}, // L& LATIN CAPITAL LETTER V WITH DIAGONAL STROKE + {0xA75F, 0xA75F, prLower}, // L& LATIN SMALL LETTER V WITH DIAGONAL STROKE + {0xA760, 0xA760, prUpper}, // L& LATIN CAPITAL LETTER VY + {0xA761, 0xA761, prLower}, // L& LATIN SMALL LETTER VY + {0xA762, 0xA762, prUpper}, // L& LATIN CAPITAL LETTER VISIGOTHIC Z + {0xA763, 0xA763, prLower}, // L& LATIN SMALL LETTER VISIGOTHIC Z + {0xA764, 0xA764, prUpper}, // L& LATIN CAPITAL LETTER THORN WITH STROKE + {0xA765, 0xA765, prLower}, // L& LATIN SMALL LETTER THORN WITH STROKE + {0xA766, 0xA766, prUpper}, // L& LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER + {0xA767, 0xA767, prLower}, // L& LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER + {0xA768, 0xA768, prUpper}, // L& LATIN CAPITAL LETTER VEND + {0xA769, 0xA769, prLower}, // L& LATIN SMALL LETTER VEND + {0xA76A, 0xA76A, prUpper}, // L& LATIN CAPITAL LETTER ET + {0xA76B, 0xA76B, prLower}, // L& LATIN SMALL LETTER ET + {0xA76C, 0xA76C, prUpper}, // L& LATIN CAPITAL LETTER IS + {0xA76D, 0xA76D, prLower}, // L& LATIN SMALL LETTER IS + {0xA76E, 0xA76E, prUpper}, // L& LATIN CAPITAL LETTER CON + {0xA76F, 0xA76F, prLower}, // L& LATIN SMALL LETTER CON + {0xA770, 0xA770, prLower}, // Lm MODIFIER LETTER US + {0xA771, 0xA778, prLower}, // L& [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM + {0xA779, 0xA779, prUpper}, // L& LATIN CAPITAL LETTER INSULAR D + {0xA77A, 0xA77A, prLower}, // L& LATIN SMALL LETTER INSULAR D + {0xA77B, 0xA77B, prUpper}, // L& LATIN CAPITAL LETTER INSULAR F + {0xA77C, 0xA77C, prLower}, // L& LATIN SMALL LETTER INSULAR F + {0xA77D, 0xA77E, prUpper}, // L& [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G + {0xA77F, 0xA77F, prLower}, // L& LATIN SMALL LETTER TURNED INSULAR G + {0xA780, 0xA780, prUpper}, // L& LATIN CAPITAL LETTER TURNED L + {0xA781, 0xA781, prLower}, // L& LATIN SMALL LETTER TURNED L + {0xA782, 0xA782, prUpper}, // L& LATIN CAPITAL LETTER INSULAR R + {0xA783, 0xA783, prLower}, // L& LATIN SMALL LETTER INSULAR R + {0xA784, 0xA784, prUpper}, // L& LATIN CAPITAL LETTER INSULAR S + {0xA785, 0xA785, prLower}, // L& LATIN SMALL LETTER INSULAR S + {0xA786, 0xA786, prUpper}, // L& LATIN CAPITAL LETTER INSULAR T + {0xA787, 0xA787, prLower}, // L& LATIN SMALL LETTER INSULAR T + {0xA788, 0xA788, prOLetter}, // Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT + {0xA78B, 0xA78B, prUpper}, // L& LATIN CAPITAL LETTER SALTILLO + {0xA78C, 0xA78C, prLower}, // L& LATIN SMALL LETTER SALTILLO + {0xA78D, 0xA78D, prUpper}, // L& LATIN CAPITAL LETTER TURNED H + {0xA78E, 0xA78E, prLower}, // L& LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT + {0xA78F, 0xA78F, prOLetter}, // Lo LATIN LETTER SINOLOGICAL DOT + {0xA790, 0xA790, prUpper}, // L& LATIN CAPITAL LETTER N WITH DESCENDER + {0xA791, 0xA791, prLower}, // L& LATIN SMALL LETTER N WITH DESCENDER + {0xA792, 0xA792, prUpper}, // L& LATIN CAPITAL LETTER C WITH BAR + {0xA793, 0xA795, prLower}, // L& [3] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER H WITH PALATAL HOOK + {0xA796, 0xA796, prUpper}, // L& LATIN CAPITAL LETTER B WITH FLOURISH + {0xA797, 0xA797, prLower}, // L& LATIN SMALL LETTER B WITH FLOURISH + {0xA798, 0xA798, prUpper}, // L& LATIN CAPITAL LETTER F WITH STROKE + {0xA799, 0xA799, prLower}, // L& LATIN SMALL LETTER F WITH STROKE + {0xA79A, 0xA79A, prUpper}, // L& LATIN CAPITAL LETTER VOLAPUK AE + {0xA79B, 0xA79B, prLower}, // L& LATIN SMALL LETTER VOLAPUK AE + {0xA79C, 0xA79C, prUpper}, // L& LATIN CAPITAL LETTER VOLAPUK OE + {0xA79D, 0xA79D, prLower}, // L& LATIN SMALL LETTER VOLAPUK OE + {0xA79E, 0xA79E, prUpper}, // L& LATIN CAPITAL LETTER VOLAPUK UE + {0xA79F, 0xA79F, prLower}, // L& LATIN SMALL LETTER VOLAPUK UE + {0xA7A0, 0xA7A0, prUpper}, // L& LATIN CAPITAL LETTER G WITH OBLIQUE STROKE + {0xA7A1, 0xA7A1, prLower}, // L& LATIN SMALL LETTER G WITH OBLIQUE STROKE + {0xA7A2, 0xA7A2, prUpper}, // L& LATIN CAPITAL LETTER K WITH OBLIQUE STROKE + {0xA7A3, 0xA7A3, prLower}, // L& LATIN SMALL LETTER K WITH OBLIQUE STROKE + {0xA7A4, 0xA7A4, prUpper}, // L& LATIN CAPITAL LETTER N WITH OBLIQUE STROKE + {0xA7A5, 0xA7A5, prLower}, // L& LATIN SMALL LETTER N WITH OBLIQUE STROKE + {0xA7A6, 0xA7A6, prUpper}, // L& LATIN CAPITAL LETTER R WITH OBLIQUE STROKE + {0xA7A7, 0xA7A7, prLower}, // L& LATIN SMALL LETTER R WITH OBLIQUE STROKE + {0xA7A8, 0xA7A8, prUpper}, // L& LATIN CAPITAL LETTER S WITH OBLIQUE STROKE + {0xA7A9, 0xA7A9, prLower}, // L& LATIN SMALL LETTER S WITH OBLIQUE STROKE + {0xA7AA, 0xA7AE, prUpper}, // L& [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I + {0xA7AF, 0xA7AF, prLower}, // L& LATIN LETTER SMALL CAPITAL Q + {0xA7B0, 0xA7B4, prUpper}, // L& [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA + {0xA7B5, 0xA7B5, prLower}, // L& LATIN SMALL LETTER BETA + {0xA7B6, 0xA7B6, prUpper}, // L& LATIN CAPITAL LETTER OMEGA + {0xA7B7, 0xA7B7, prLower}, // L& LATIN SMALL LETTER OMEGA + {0xA7B8, 0xA7B8, prUpper}, // L& LATIN CAPITAL LETTER U WITH STROKE + {0xA7B9, 0xA7B9, prLower}, // L& LATIN SMALL LETTER U WITH STROKE + {0xA7BA, 0xA7BA, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL A + {0xA7BB, 0xA7BB, prLower}, // L& LATIN SMALL LETTER GLOTTAL A + {0xA7BC, 0xA7BC, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL I + {0xA7BD, 0xA7BD, prLower}, // L& LATIN SMALL LETTER GLOTTAL I + {0xA7BE, 0xA7BE, prUpper}, // L& LATIN CAPITAL LETTER GLOTTAL U + {0xA7BF, 0xA7BF, prLower}, // L& LATIN SMALL LETTER GLOTTAL U + {0xA7C0, 0xA7C0, prUpper}, // L& LATIN CAPITAL LETTER OLD POLISH O + {0xA7C1, 0xA7C1, prLower}, // L& LATIN SMALL LETTER OLD POLISH O + {0xA7C2, 0xA7C2, prUpper}, // L& LATIN CAPITAL LETTER ANGLICANA W + {0xA7C3, 0xA7C3, prLower}, // L& LATIN SMALL LETTER ANGLICANA W + {0xA7C4, 0xA7C7, prUpper}, // L& [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY + {0xA7C8, 0xA7C8, prLower}, // L& LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY + {0xA7C9, 0xA7C9, prUpper}, // L& LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY + {0xA7CA, 0xA7CA, prLower}, // L& LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY + {0xA7D0, 0xA7D0, prUpper}, // L& LATIN CAPITAL LETTER CLOSED INSULAR G + {0xA7D1, 0xA7D1, prLower}, // L& LATIN SMALL LETTER CLOSED INSULAR G + {0xA7D3, 0xA7D3, prLower}, // L& LATIN SMALL LETTER DOUBLE THORN + {0xA7D5, 0xA7D5, prLower}, // L& LATIN SMALL LETTER DOUBLE WYNN + {0xA7D6, 0xA7D6, prUpper}, // L& LATIN CAPITAL LETTER MIDDLE SCOTS S + {0xA7D7, 0xA7D7, prLower}, // L& LATIN SMALL LETTER MIDDLE SCOTS S + {0xA7D8, 0xA7D8, prUpper}, // L& LATIN CAPITAL LETTER SIGMOID S + {0xA7D9, 0xA7D9, prLower}, // L& LATIN SMALL LETTER SIGMOID S + {0xA7F2, 0xA7F4, prLower}, // Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q + {0xA7F5, 0xA7F5, prUpper}, // L& LATIN CAPITAL LETTER REVERSED HALF H + {0xA7F6, 0xA7F6, prLower}, // L& LATIN SMALL LETTER REVERSED HALF H + {0xA7F7, 0xA7F7, prOLetter}, // Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I + {0xA7F8, 0xA7F9, prLower}, // Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE + {0xA7FA, 0xA7FA, prLower}, // L& LATIN LETTER SMALL CAPITAL TURNED M + {0xA7FB, 0xA801, prOLetter}, // Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I + {0xA802, 0xA802, prExtend}, // Mn SYLOTI NAGRI SIGN DVISVARA + {0xA803, 0xA805, prOLetter}, // Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O + {0xA806, 0xA806, prExtend}, // Mn SYLOTI NAGRI SIGN HASANTA + {0xA807, 0xA80A, prOLetter}, // Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO + {0xA80B, 0xA80B, prExtend}, // Mn SYLOTI NAGRI SIGN ANUSVARA + {0xA80C, 0xA822, prOLetter}, // Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO + {0xA823, 0xA824, prExtend}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I + {0xA825, 0xA826, prExtend}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E + {0xA827, 0xA827, prExtend}, // Mc SYLOTI NAGRI VOWEL SIGN OO + {0xA82C, 0xA82C, prExtend}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA + {0xA840, 0xA873, prOLetter}, // Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU + {0xA876, 0xA877, prSTerm}, // Po [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD + {0xA880, 0xA881, prExtend}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA + {0xA882, 0xA8B3, prOLetter}, // Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA + {0xA8B4, 0xA8C3, prExtend}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU + {0xA8C4, 0xA8C5, prExtend}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU + {0xA8CE, 0xA8CF, prSTerm}, // Po [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA + {0xA8D0, 0xA8D9, prNumeric}, // Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE + {0xA8E0, 0xA8F1, prExtend}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA + {0xA8F2, 0xA8F7, prOLetter}, // Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA + {0xA8FB, 0xA8FB, prOLetter}, // Lo DEVANAGARI HEADSTROKE + {0xA8FD, 0xA8FE, prOLetter}, // Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY + {0xA8FF, 0xA8FF, prExtend}, // Mn DEVANAGARI VOWEL SIGN AY + {0xA900, 0xA909, prNumeric}, // Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE + {0xA90A, 0xA925, prOLetter}, // Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO + {0xA926, 0xA92D, prExtend}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU + {0xA92F, 0xA92F, prSTerm}, // Po KAYAH LI SIGN SHYA + {0xA930, 0xA946, prOLetter}, // Lo [23] REJANG LETTER KA..REJANG LETTER A + {0xA947, 0xA951, prExtend}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R + {0xA952, 0xA953, prExtend}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA + {0xA960, 0xA97C, prOLetter}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH + {0xA980, 0xA982, prExtend}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR + {0xA983, 0xA983, prExtend}, // Mc JAVANESE SIGN WIGNYAN + {0xA984, 0xA9B2, prOLetter}, // Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA + {0xA9B3, 0xA9B3, prExtend}, // Mn JAVANESE SIGN CECAK TELU + {0xA9B4, 0xA9B5, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG + {0xA9B6, 0xA9B9, prExtend}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT + {0xA9BA, 0xA9BB, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE + {0xA9BC, 0xA9BD, prExtend}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET + {0xA9BE, 0xA9C0, prExtend}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON + {0xA9C8, 0xA9C9, prSTerm}, // Po [2] JAVANESE PADA LINGSA..JAVANESE PADA LUNGSI + {0xA9CF, 0xA9CF, prOLetter}, // Lm JAVANESE PANGRANGKEP + {0xA9D0, 0xA9D9, prNumeric}, // Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE + {0xA9E0, 0xA9E4, prOLetter}, // Lo [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA + {0xA9E5, 0xA9E5, prExtend}, // Mn MYANMAR SIGN SHAN SAW + {0xA9E6, 0xA9E6, prOLetter}, // Lm MYANMAR MODIFIER LETTER SHAN REDUPLICATION + {0xA9E7, 0xA9EF, prOLetter}, // Lo [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA + {0xA9F0, 0xA9F9, prNumeric}, // Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE + {0xA9FA, 0xA9FE, prOLetter}, // Lo [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA + {0xAA00, 0xAA28, prOLetter}, // Lo [41] CHAM LETTER A..CHAM LETTER HA + {0xAA29, 0xAA2E, prExtend}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE + {0xAA2F, 0xAA30, prExtend}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI + {0xAA31, 0xAA32, prExtend}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE + {0xAA33, 0xAA34, prExtend}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA + {0xAA35, 0xAA36, prExtend}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA + {0xAA40, 0xAA42, prOLetter}, // Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG + {0xAA43, 0xAA43, prExtend}, // Mn CHAM CONSONANT SIGN FINAL NG + {0xAA44, 0xAA4B, prOLetter}, // Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS + {0xAA4C, 0xAA4C, prExtend}, // Mn CHAM CONSONANT SIGN FINAL M + {0xAA4D, 0xAA4D, prExtend}, // Mc CHAM CONSONANT SIGN FINAL H + {0xAA50, 0xAA59, prNumeric}, // Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE + {0xAA5D, 0xAA5F, prSTerm}, // Po [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA + {0xAA60, 0xAA6F, prOLetter}, // Lo [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA + {0xAA70, 0xAA70, prOLetter}, // Lm MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION + {0xAA71, 0xAA76, prOLetter}, // Lo [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM + {0xAA7A, 0xAA7A, prOLetter}, // Lo MYANMAR LETTER AITON RA + {0xAA7B, 0xAA7B, prExtend}, // Mc MYANMAR SIGN PAO KAREN TONE + {0xAA7C, 0xAA7C, prExtend}, // Mn MYANMAR SIGN TAI LAING TONE-2 + {0xAA7D, 0xAA7D, prExtend}, // Mc MYANMAR SIGN TAI LAING TONE-5 + {0xAA7E, 0xAAAF, prOLetter}, // Lo [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O + {0xAAB0, 0xAAB0, prExtend}, // Mn TAI VIET MAI KANG + {0xAAB1, 0xAAB1, prOLetter}, // Lo TAI VIET VOWEL AA + {0xAAB2, 0xAAB4, prExtend}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U + {0xAAB5, 0xAAB6, prOLetter}, // Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O + {0xAAB7, 0xAAB8, prExtend}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA + {0xAAB9, 0xAABD, prOLetter}, // Lo [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN + {0xAABE, 0xAABF, prExtend}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK + {0xAAC0, 0xAAC0, prOLetter}, // Lo TAI VIET TONE MAI NUENG + {0xAAC1, 0xAAC1, prExtend}, // Mn TAI VIET TONE MAI THO + {0xAAC2, 0xAAC2, prOLetter}, // Lo TAI VIET TONE MAI SONG + {0xAADB, 0xAADC, prOLetter}, // Lo [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG + {0xAADD, 0xAADD, prOLetter}, // Lm TAI VIET SYMBOL SAM + {0xAAE0, 0xAAEA, prOLetter}, // Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA + {0xAAEB, 0xAAEB, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN II + {0xAAEC, 0xAAED, prExtend}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI + {0xAAEE, 0xAAEF, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU + {0xAAF0, 0xAAF1, prSTerm}, // Po [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM + {0xAAF2, 0xAAF2, prOLetter}, // Lo MEETEI MAYEK ANJI + {0xAAF3, 0xAAF4, prOLetter}, // Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK + {0xAAF5, 0xAAF5, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA + {0xAAF6, 0xAAF6, prExtend}, // Mn MEETEI MAYEK VIRAMA + {0xAB01, 0xAB06, prOLetter}, // Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO + {0xAB09, 0xAB0E, prOLetter}, // Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO + {0xAB11, 0xAB16, prOLetter}, // Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO + {0xAB20, 0xAB26, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO + {0xAB28, 0xAB2E, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO + {0xAB30, 0xAB5A, prLower}, // L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG + {0xAB5C, 0xAB5F, prLower}, // Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK + {0xAB60, 0xAB68, prLower}, // L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE + {0xAB69, 0xAB69, prLower}, // Lm MODIFIER LETTER SMALL TURNED W + {0xAB70, 0xABBF, prLower}, // L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA + {0xABC0, 0xABE2, prOLetter}, // Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM + {0xABE3, 0xABE4, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP + {0xABE5, 0xABE5, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN ANAP + {0xABE6, 0xABE7, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP + {0xABE8, 0xABE8, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN UNAP + {0xABE9, 0xABEA, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG + {0xABEB, 0xABEB, prSTerm}, // Po MEETEI MAYEK CHEIKHEI + {0xABEC, 0xABEC, prExtend}, // Mc MEETEI MAYEK LUM IYEK + {0xABED, 0xABED, prExtend}, // Mn MEETEI MAYEK APUN IYEK + {0xABF0, 0xABF9, prNumeric}, // Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE + {0xAC00, 0xD7A3, prOLetter}, // Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH + {0xD7B0, 0xD7C6, prOLetter}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E + {0xD7CB, 0xD7FB, prOLetter}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH + {0xF900, 0xFA6D, prOLetter}, // Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D + {0xFA70, 0xFAD9, prOLetter}, // Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 + {0xFB00, 0xFB06, prLower}, // L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST + {0xFB13, 0xFB17, prLower}, // L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH + {0xFB1D, 0xFB1D, prOLetter}, // Lo HEBREW LETTER YOD WITH HIRIQ + {0xFB1E, 0xFB1E, prExtend}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA + {0xFB1F, 0xFB28, prOLetter}, // Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV + {0xFB2A, 0xFB36, prOLetter}, // Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH + {0xFB38, 0xFB3C, prOLetter}, // Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH + {0xFB3E, 0xFB3E, prOLetter}, // Lo HEBREW LETTER MEM WITH DAGESH + {0xFB40, 0xFB41, prOLetter}, // Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH + {0xFB43, 0xFB44, prOLetter}, // Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH + {0xFB46, 0xFBB1, prOLetter}, // Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM + {0xFBD3, 0xFD3D, prOLetter}, // Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM + {0xFD3E, 0xFD3E, prClose}, // Pe ORNATE LEFT PARENTHESIS + {0xFD3F, 0xFD3F, prClose}, // Ps ORNATE RIGHT PARENTHESIS + {0xFD50, 0xFD8F, prOLetter}, // Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM + {0xFD92, 0xFDC7, prOLetter}, // Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM + {0xFDF0, 0xFDFB, prOLetter}, // Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU + {0xFE00, 0xFE0F, prExtend}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 + {0xFE10, 0xFE11, prSContinue}, // Po [2] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA + {0xFE13, 0xFE13, prSContinue}, // Po PRESENTATION FORM FOR VERTICAL COLON + {0xFE17, 0xFE17, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET + {0xFE18, 0xFE18, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET + {0xFE20, 0xFE2F, prExtend}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF + {0xFE31, 0xFE32, prSContinue}, // Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH + {0xFE35, 0xFE35, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS + {0xFE36, 0xFE36, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS + {0xFE37, 0xFE37, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET + {0xFE38, 0xFE38, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET + {0xFE39, 0xFE39, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET + {0xFE3A, 0xFE3A, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET + {0xFE3B, 0xFE3B, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET + {0xFE3C, 0xFE3C, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET + {0xFE3D, 0xFE3D, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET + {0xFE3E, 0xFE3E, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET + {0xFE3F, 0xFE3F, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET + {0xFE40, 0xFE40, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET + {0xFE41, 0xFE41, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET + {0xFE42, 0xFE42, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET + {0xFE43, 0xFE43, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET + {0xFE44, 0xFE44, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET + {0xFE47, 0xFE47, prClose}, // Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET + {0xFE48, 0xFE48, prClose}, // Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET + {0xFE50, 0xFE51, prSContinue}, // Po [2] SMALL COMMA..SMALL IDEOGRAPHIC COMMA + {0xFE52, 0xFE52, prATerm}, // Po SMALL FULL STOP + {0xFE55, 0xFE55, prSContinue}, // Po SMALL COLON + {0xFE56, 0xFE57, prSTerm}, // Po [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK + {0xFE58, 0xFE58, prSContinue}, // Pd SMALL EM DASH + {0xFE59, 0xFE59, prClose}, // Ps SMALL LEFT PARENTHESIS + {0xFE5A, 0xFE5A, prClose}, // Pe SMALL RIGHT PARENTHESIS + {0xFE5B, 0xFE5B, prClose}, // Ps SMALL LEFT CURLY BRACKET + {0xFE5C, 0xFE5C, prClose}, // Pe SMALL RIGHT CURLY BRACKET + {0xFE5D, 0xFE5D, prClose}, // Ps SMALL LEFT TORTOISE SHELL BRACKET + {0xFE5E, 0xFE5E, prClose}, // Pe SMALL RIGHT TORTOISE SHELL BRACKET + {0xFE63, 0xFE63, prSContinue}, // Pd SMALL HYPHEN-MINUS + {0xFE70, 0xFE74, prOLetter}, // Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM + {0xFE76, 0xFEFC, prOLetter}, // Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM + {0xFEFF, 0xFEFF, prFormat}, // Cf ZERO WIDTH NO-BREAK SPACE + {0xFF01, 0xFF01, prSTerm}, // Po FULLWIDTH EXCLAMATION MARK + {0xFF08, 0xFF08, prClose}, // Ps FULLWIDTH LEFT PARENTHESIS + {0xFF09, 0xFF09, prClose}, // Pe FULLWIDTH RIGHT PARENTHESIS + {0xFF0C, 0xFF0C, prSContinue}, // Po FULLWIDTH COMMA + {0xFF0D, 0xFF0D, prSContinue}, // Pd FULLWIDTH HYPHEN-MINUS + {0xFF0E, 0xFF0E, prATerm}, // Po FULLWIDTH FULL STOP + {0xFF10, 0xFF19, prNumeric}, // Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE + {0xFF1A, 0xFF1A, prSContinue}, // Po FULLWIDTH COLON + {0xFF1F, 0xFF1F, prSTerm}, // Po FULLWIDTH QUESTION MARK + {0xFF21, 0xFF3A, prUpper}, // L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z + {0xFF3B, 0xFF3B, prClose}, // Ps FULLWIDTH LEFT SQUARE BRACKET + {0xFF3D, 0xFF3D, prClose}, // Pe FULLWIDTH RIGHT SQUARE BRACKET + {0xFF41, 0xFF5A, prLower}, // L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z + {0xFF5B, 0xFF5B, prClose}, // Ps FULLWIDTH LEFT CURLY BRACKET + {0xFF5D, 0xFF5D, prClose}, // Pe FULLWIDTH RIGHT CURLY BRACKET + {0xFF5F, 0xFF5F, prClose}, // Ps FULLWIDTH LEFT WHITE PARENTHESIS + {0xFF60, 0xFF60, prClose}, // Pe FULLWIDTH RIGHT WHITE PARENTHESIS + {0xFF61, 0xFF61, prSTerm}, // Po HALFWIDTH IDEOGRAPHIC FULL STOP + {0xFF62, 0xFF62, prClose}, // Ps HALFWIDTH LEFT CORNER BRACKET + {0xFF63, 0xFF63, prClose}, // Pe HALFWIDTH RIGHT CORNER BRACKET + {0xFF64, 0xFF64, prSContinue}, // Po HALFWIDTH IDEOGRAPHIC COMMA + {0xFF66, 0xFF6F, prOLetter}, // Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU + {0xFF70, 0xFF70, prOLetter}, // Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK + {0xFF71, 0xFF9D, prOLetter}, // Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N + {0xFF9E, 0xFF9F, prExtend}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + {0xFFA0, 0xFFBE, prOLetter}, // Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH + {0xFFC2, 0xFFC7, prOLetter}, // Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E + {0xFFCA, 0xFFCF, prOLetter}, // Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE + {0xFFD2, 0xFFD7, prOLetter}, // Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU + {0xFFDA, 0xFFDC, prOLetter}, // Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I + {0xFFF9, 0xFFFB, prFormat}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR + {0x10000, 0x1000B, prOLetter}, // Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE + {0x1000D, 0x10026, prOLetter}, // Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO + {0x10028, 0x1003A, prOLetter}, // Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO + {0x1003C, 0x1003D, prOLetter}, // Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE + {0x1003F, 0x1004D, prOLetter}, // Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO + {0x10050, 0x1005D, prOLetter}, // Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 + {0x10080, 0x100FA, prOLetter}, // Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 + {0x10140, 0x10174, prOLetter}, // Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS + {0x101FD, 0x101FD, prExtend}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE + {0x10280, 0x1029C, prOLetter}, // Lo [29] LYCIAN LETTER A..LYCIAN LETTER X + {0x102A0, 0x102D0, prOLetter}, // Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 + {0x102E0, 0x102E0, prExtend}, // Mn COPTIC EPACT THOUSANDS MARK + {0x10300, 0x1031F, prOLetter}, // Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS + {0x1032D, 0x10340, prOLetter}, // Lo [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA + {0x10341, 0x10341, prOLetter}, // Nl GOTHIC LETTER NINETY + {0x10342, 0x10349, prOLetter}, // Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL + {0x1034A, 0x1034A, prOLetter}, // Nl GOTHIC LETTER NINE HUNDRED + {0x10350, 0x10375, prOLetter}, // Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA + {0x10376, 0x1037A, prExtend}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII + {0x10380, 0x1039D, prOLetter}, // Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU + {0x103A0, 0x103C3, prOLetter}, // Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA + {0x103C8, 0x103CF, prOLetter}, // Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH + {0x103D1, 0x103D5, prOLetter}, // Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED + {0x10400, 0x10427, prUpper}, // L& [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW + {0x10428, 0x1044F, prLower}, // L& [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW + {0x10450, 0x1049D, prOLetter}, // Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO + {0x104A0, 0x104A9, prNumeric}, // Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE + {0x104B0, 0x104D3, prUpper}, // L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA + {0x104D8, 0x104FB, prLower}, // L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA + {0x10500, 0x10527, prOLetter}, // Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE + {0x10530, 0x10563, prOLetter}, // Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW + {0x10570, 0x1057A, prUpper}, // L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA + {0x1057C, 0x1058A, prUpper}, // L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE + {0x1058C, 0x10592, prUpper}, // L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE + {0x10594, 0x10595, prUpper}, // L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE + {0x10597, 0x105A1, prLower}, // L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA + {0x105A3, 0x105B1, prLower}, // L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE + {0x105B3, 0x105B9, prLower}, // L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE + {0x105BB, 0x105BC, prLower}, // L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE + {0x10600, 0x10736, prOLetter}, // Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 + {0x10740, 0x10755, prOLetter}, // Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE + {0x10760, 0x10767, prOLetter}, // Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 + {0x10780, 0x10780, prLower}, // Lm MODIFIER LETTER SMALL CAPITAL AA + {0x10781, 0x10782, prOLetter}, // Lm [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON + {0x10783, 0x10785, prLower}, // Lm [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK + {0x10787, 0x107B0, prLower}, // Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK + {0x107B2, 0x107BA, prLower}, // Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL + {0x10800, 0x10805, prOLetter}, // Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA + {0x10808, 0x10808, prOLetter}, // Lo CYPRIOT SYLLABLE JO + {0x1080A, 0x10835, prOLetter}, // Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO + {0x10837, 0x10838, prOLetter}, // Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE + {0x1083C, 0x1083C, prOLetter}, // Lo CYPRIOT SYLLABLE ZA + {0x1083F, 0x10855, prOLetter}, // Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW + {0x10860, 0x10876, prOLetter}, // Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW + {0x10880, 0x1089E, prOLetter}, // Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW + {0x108E0, 0x108F2, prOLetter}, // Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH + {0x108F4, 0x108F5, prOLetter}, // Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW + {0x10900, 0x10915, prOLetter}, // Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU + {0x10920, 0x10939, prOLetter}, // Lo [26] LYDIAN LETTER A..LYDIAN LETTER C + {0x10980, 0x109B7, prOLetter}, // Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA + {0x109BE, 0x109BF, prOLetter}, // Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN + {0x10A00, 0x10A00, prOLetter}, // Lo KHAROSHTHI LETTER A + {0x10A01, 0x10A03, prExtend}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R + {0x10A05, 0x10A06, prExtend}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O + {0x10A0C, 0x10A0F, prExtend}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA + {0x10A10, 0x10A13, prOLetter}, // Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA + {0x10A15, 0x10A17, prOLetter}, // Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA + {0x10A19, 0x10A35, prOLetter}, // Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA + {0x10A38, 0x10A3A, prExtend}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW + {0x10A3F, 0x10A3F, prExtend}, // Mn KHAROSHTHI VIRAMA + {0x10A56, 0x10A57, prSTerm}, // Po [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA + {0x10A60, 0x10A7C, prOLetter}, // Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH + {0x10A80, 0x10A9C, prOLetter}, // Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH + {0x10AC0, 0x10AC7, prOLetter}, // Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW + {0x10AC9, 0x10AE4, prOLetter}, // Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW + {0x10AE5, 0x10AE6, prExtend}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW + {0x10B00, 0x10B35, prOLetter}, // Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE + {0x10B40, 0x10B55, prOLetter}, // Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW + {0x10B60, 0x10B72, prOLetter}, // Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW + {0x10B80, 0x10B91, prOLetter}, // Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW + {0x10C00, 0x10C48, prOLetter}, // Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH + {0x10C80, 0x10CB2, prUpper}, // L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US + {0x10CC0, 0x10CF2, prLower}, // L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US + {0x10D00, 0x10D23, prOLetter}, // Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA + {0x10D24, 0x10D27, prExtend}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI + {0x10D30, 0x10D39, prNumeric}, // Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE + {0x10E80, 0x10EA9, prOLetter}, // Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET + {0x10EAB, 0x10EAC, prExtend}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK + {0x10EB0, 0x10EB1, prOLetter}, // Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE + {0x10EFD, 0x10EFF, prExtend}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA + {0x10F00, 0x10F1C, prOLetter}, // Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL + {0x10F27, 0x10F27, prOLetter}, // Lo OLD SOGDIAN LIGATURE AYIN-DALETH + {0x10F30, 0x10F45, prOLetter}, // Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN + {0x10F46, 0x10F50, prExtend}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW + {0x10F55, 0x10F59, prSTerm}, // Po [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT + {0x10F70, 0x10F81, prOLetter}, // Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH + {0x10F82, 0x10F85, prExtend}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW + {0x10F86, 0x10F89, prSTerm}, // Po [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS + {0x10FB0, 0x10FC4, prOLetter}, // Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW + {0x10FE0, 0x10FF6, prOLetter}, // Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH + {0x11000, 0x11000, prExtend}, // Mc BRAHMI SIGN CANDRABINDU + {0x11001, 0x11001, prExtend}, // Mn BRAHMI SIGN ANUSVARA + {0x11002, 0x11002, prExtend}, // Mc BRAHMI SIGN VISARGA + {0x11003, 0x11037, prOLetter}, // Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA + {0x11038, 0x11046, prExtend}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA + {0x11047, 0x11048, prSTerm}, // Po [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA + {0x11066, 0x1106F, prNumeric}, // Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE + {0x11070, 0x11070, prExtend}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA + {0x11071, 0x11072, prOLetter}, // Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O + {0x11073, 0x11074, prExtend}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O + {0x11075, 0x11075, prOLetter}, // Lo BRAHMI LETTER OLD TAMIL LLA + {0x1107F, 0x11081, prExtend}, // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA + {0x11082, 0x11082, prExtend}, // Mc KAITHI SIGN VISARGA + {0x11083, 0x110AF, prOLetter}, // Lo [45] KAITHI LETTER A..KAITHI LETTER HA + {0x110B0, 0x110B2, prExtend}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II + {0x110B3, 0x110B6, prExtend}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI + {0x110B7, 0x110B8, prExtend}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU + {0x110B9, 0x110BA, prExtend}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA + {0x110BD, 0x110BD, prFormat}, // Cf KAITHI NUMBER SIGN + {0x110BE, 0x110C1, prSTerm}, // Po [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA + {0x110C2, 0x110C2, prExtend}, // Mn KAITHI VOWEL SIGN VOCALIC R + {0x110CD, 0x110CD, prFormat}, // Cf KAITHI NUMBER SIGN ABOVE + {0x110D0, 0x110E8, prOLetter}, // Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE + {0x110F0, 0x110F9, prNumeric}, // Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE + {0x11100, 0x11102, prExtend}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA + {0x11103, 0x11126, prOLetter}, // Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA + {0x11127, 0x1112B, prExtend}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU + {0x1112C, 0x1112C, prExtend}, // Mc CHAKMA VOWEL SIGN E + {0x1112D, 0x11134, prExtend}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA + {0x11136, 0x1113F, prNumeric}, // Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE + {0x11141, 0x11143, prSTerm}, // Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK + {0x11144, 0x11144, prOLetter}, // Lo CHAKMA LETTER LHAA + {0x11145, 0x11146, prExtend}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI + {0x11147, 0x11147, prOLetter}, // Lo CHAKMA LETTER VAA + {0x11150, 0x11172, prOLetter}, // Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA + {0x11173, 0x11173, prExtend}, // Mn MAHAJANI SIGN NUKTA + {0x11176, 0x11176, prOLetter}, // Lo MAHAJANI LIGATURE SHRI + {0x11180, 0x11181, prExtend}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA + {0x11182, 0x11182, prExtend}, // Mc SHARADA SIGN VISARGA + {0x11183, 0x111B2, prOLetter}, // Lo [48] SHARADA LETTER A..SHARADA LETTER HA + {0x111B3, 0x111B5, prExtend}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II + {0x111B6, 0x111BE, prExtend}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O + {0x111BF, 0x111C0, prExtend}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA + {0x111C1, 0x111C4, prOLetter}, // Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM + {0x111C5, 0x111C6, prSTerm}, // Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA + {0x111C9, 0x111CC, prExtend}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK + {0x111CD, 0x111CD, prSTerm}, // Po SHARADA SUTRA MARK + {0x111CE, 0x111CE, prExtend}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E + {0x111CF, 0x111CF, prExtend}, // Mn SHARADA SIGN INVERTED CANDRABINDU + {0x111D0, 0x111D9, prNumeric}, // Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE + {0x111DA, 0x111DA, prOLetter}, // Lo SHARADA EKAM + {0x111DC, 0x111DC, prOLetter}, // Lo SHARADA HEADSTROKE + {0x111DE, 0x111DF, prSTerm}, // Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2 + {0x11200, 0x11211, prOLetter}, // Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA + {0x11213, 0x1122B, prOLetter}, // Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA + {0x1122C, 0x1122E, prExtend}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II + {0x1122F, 0x11231, prExtend}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI + {0x11232, 0x11233, prExtend}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU + {0x11234, 0x11234, prExtend}, // Mn KHOJKI SIGN ANUSVARA + {0x11235, 0x11235, prExtend}, // Mc KHOJKI SIGN VIRAMA + {0x11236, 0x11237, prExtend}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA + {0x11238, 0x11239, prSTerm}, // Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA + {0x1123B, 0x1123C, prSTerm}, // Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK + {0x1123E, 0x1123E, prExtend}, // Mn KHOJKI SIGN SUKUN + {0x1123F, 0x11240, prOLetter}, // Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I + {0x11241, 0x11241, prExtend}, // Mn KHOJKI VOWEL SIGN VOCALIC R + {0x11280, 0x11286, prOLetter}, // Lo [7] MULTANI LETTER A..MULTANI LETTER GA + {0x11288, 0x11288, prOLetter}, // Lo MULTANI LETTER GHA + {0x1128A, 0x1128D, prOLetter}, // Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA + {0x1128F, 0x1129D, prOLetter}, // Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA + {0x1129F, 0x112A8, prOLetter}, // Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA + {0x112A9, 0x112A9, prSTerm}, // Po MULTANI SECTION MARK + {0x112B0, 0x112DE, prOLetter}, // Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA + {0x112DF, 0x112DF, prExtend}, // Mn KHUDAWADI SIGN ANUSVARA + {0x112E0, 0x112E2, prExtend}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II + {0x112E3, 0x112EA, prExtend}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA + {0x112F0, 0x112F9, prNumeric}, // Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE + {0x11300, 0x11301, prExtend}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU + {0x11302, 0x11303, prExtend}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA + {0x11305, 0x1130C, prOLetter}, // Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L + {0x1130F, 0x11310, prOLetter}, // Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI + {0x11313, 0x11328, prOLetter}, // Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA + {0x1132A, 0x11330, prOLetter}, // Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA + {0x11332, 0x11333, prOLetter}, // Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA + {0x11335, 0x11339, prOLetter}, // Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA + {0x1133B, 0x1133C, prExtend}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA + {0x1133D, 0x1133D, prOLetter}, // Lo GRANTHA SIGN AVAGRAHA + {0x1133E, 0x1133F, prExtend}, // Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I + {0x11340, 0x11340, prExtend}, // Mn GRANTHA VOWEL SIGN II + {0x11341, 0x11344, prExtend}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR + {0x11347, 0x11348, prExtend}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI + {0x1134B, 0x1134D, prExtend}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA + {0x11350, 0x11350, prOLetter}, // Lo GRANTHA OM + {0x11357, 0x11357, prExtend}, // Mc GRANTHA AU LENGTH MARK + {0x1135D, 0x11361, prOLetter}, // Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL + {0x11362, 0x11363, prExtend}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL + {0x11366, 0x1136C, prExtend}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX + {0x11370, 0x11374, prExtend}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA + {0x11400, 0x11434, prOLetter}, // Lo [53] NEWA LETTER A..NEWA LETTER HA + {0x11435, 0x11437, prExtend}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II + {0x11438, 0x1143F, prExtend}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI + {0x11440, 0x11441, prExtend}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU + {0x11442, 0x11444, prExtend}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA + {0x11445, 0x11445, prExtend}, // Mc NEWA SIGN VISARGA + {0x11446, 0x11446, prExtend}, // Mn NEWA SIGN NUKTA + {0x11447, 0x1144A, prOLetter}, // Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI + {0x1144B, 0x1144C, prSTerm}, // Po [2] NEWA DANDA..NEWA DOUBLE DANDA + {0x11450, 0x11459, prNumeric}, // Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE + {0x1145E, 0x1145E, prExtend}, // Mn NEWA SANDHI MARK + {0x1145F, 0x11461, prOLetter}, // Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA + {0x11480, 0x114AF, prOLetter}, // Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA + {0x114B0, 0x114B2, prExtend}, // Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II + {0x114B3, 0x114B8, prExtend}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL + {0x114B9, 0x114B9, prExtend}, // Mc TIRHUTA VOWEL SIGN E + {0x114BA, 0x114BA, prExtend}, // Mn TIRHUTA VOWEL SIGN SHORT E + {0x114BB, 0x114BE, prExtend}, // Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU + {0x114BF, 0x114C0, prExtend}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA + {0x114C1, 0x114C1, prExtend}, // Mc TIRHUTA SIGN VISARGA + {0x114C2, 0x114C3, prExtend}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA + {0x114C4, 0x114C5, prOLetter}, // Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG + {0x114C7, 0x114C7, prOLetter}, // Lo TIRHUTA OM + {0x114D0, 0x114D9, prNumeric}, // Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE + {0x11580, 0x115AE, prOLetter}, // Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA + {0x115AF, 0x115B1, prExtend}, // Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II + {0x115B2, 0x115B5, prExtend}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR + {0x115B8, 0x115BB, prExtend}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU + {0x115BC, 0x115BD, prExtend}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA + {0x115BE, 0x115BE, prExtend}, // Mc SIDDHAM SIGN VISARGA + {0x115BF, 0x115C0, prExtend}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA + {0x115C2, 0x115C3, prSTerm}, // Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA + {0x115C9, 0x115D7, prSTerm}, // Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES + {0x115D8, 0x115DB, prOLetter}, // Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U + {0x115DC, 0x115DD, prExtend}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU + {0x11600, 0x1162F, prOLetter}, // Lo [48] MODI LETTER A..MODI LETTER LLA + {0x11630, 0x11632, prExtend}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II + {0x11633, 0x1163A, prExtend}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI + {0x1163B, 0x1163C, prExtend}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU + {0x1163D, 0x1163D, prExtend}, // Mn MODI SIGN ANUSVARA + {0x1163E, 0x1163E, prExtend}, // Mc MODI SIGN VISARGA + {0x1163F, 0x11640, prExtend}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA + {0x11641, 0x11642, prSTerm}, // Po [2] MODI DANDA..MODI DOUBLE DANDA + {0x11644, 0x11644, prOLetter}, // Lo MODI SIGN HUVA + {0x11650, 0x11659, prNumeric}, // Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE + {0x11680, 0x116AA, prOLetter}, // Lo [43] TAKRI LETTER A..TAKRI LETTER RRA + {0x116AB, 0x116AB, prExtend}, // Mn TAKRI SIGN ANUSVARA + {0x116AC, 0x116AC, prExtend}, // Mc TAKRI SIGN VISARGA + {0x116AD, 0x116AD, prExtend}, // Mn TAKRI VOWEL SIGN AA + {0x116AE, 0x116AF, prExtend}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II + {0x116B0, 0x116B5, prExtend}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU + {0x116B6, 0x116B6, prExtend}, // Mc TAKRI SIGN VIRAMA + {0x116B7, 0x116B7, prExtend}, // Mn TAKRI SIGN NUKTA + {0x116B8, 0x116B8, prOLetter}, // Lo TAKRI LETTER ARCHAIC KHA + {0x116C0, 0x116C9, prNumeric}, // Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE + {0x11700, 0x1171A, prOLetter}, // Lo [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA + {0x1171D, 0x1171F, prExtend}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA + {0x11720, 0x11721, prExtend}, // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA + {0x11722, 0x11725, prExtend}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU + {0x11726, 0x11726, prExtend}, // Mc AHOM VOWEL SIGN E + {0x11727, 0x1172B, prExtend}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER + {0x11730, 0x11739, prNumeric}, // Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE + {0x1173C, 0x1173E, prSTerm}, // Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI + {0x11740, 0x11746, prOLetter}, // Lo [7] AHOM LETTER CA..AHOM LETTER LLA + {0x11800, 0x1182B, prOLetter}, // Lo [44] DOGRA LETTER A..DOGRA LETTER RRA + {0x1182C, 0x1182E, prExtend}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II + {0x1182F, 0x11837, prExtend}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA + {0x11838, 0x11838, prExtend}, // Mc DOGRA SIGN VISARGA + {0x11839, 0x1183A, prExtend}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA + {0x118A0, 0x118BF, prUpper}, // L& [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO + {0x118C0, 0x118DF, prLower}, // L& [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO + {0x118E0, 0x118E9, prNumeric}, // Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE + {0x118FF, 0x11906, prOLetter}, // Lo [8] WARANG CITI OM..DIVES AKURU LETTER E + {0x11909, 0x11909, prOLetter}, // Lo DIVES AKURU LETTER O + {0x1190C, 0x11913, prOLetter}, // Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA + {0x11915, 0x11916, prOLetter}, // Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA + {0x11918, 0x1192F, prOLetter}, // Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA + {0x11930, 0x11935, prExtend}, // Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E + {0x11937, 0x11938, prExtend}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O + {0x1193B, 0x1193C, prExtend}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU + {0x1193D, 0x1193D, prExtend}, // Mc DIVES AKURU SIGN HALANTA + {0x1193E, 0x1193E, prExtend}, // Mn DIVES AKURU VIRAMA + {0x1193F, 0x1193F, prOLetter}, // Lo DIVES AKURU PREFIXED NASAL SIGN + {0x11940, 0x11940, prExtend}, // Mc DIVES AKURU MEDIAL YA + {0x11941, 0x11941, prOLetter}, // Lo DIVES AKURU INITIAL RA + {0x11942, 0x11942, prExtend}, // Mc DIVES AKURU MEDIAL RA + {0x11943, 0x11943, prExtend}, // Mn DIVES AKURU SIGN NUKTA + {0x11944, 0x11944, prSTerm}, // Po DIVES AKURU DOUBLE DANDA + {0x11946, 0x11946, prSTerm}, // Po DIVES AKURU END OF TEXT MARK + {0x11950, 0x11959, prNumeric}, // Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE + {0x119A0, 0x119A7, prOLetter}, // Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR + {0x119AA, 0x119D0, prOLetter}, // Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA + {0x119D1, 0x119D3, prExtend}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II + {0x119D4, 0x119D7, prExtend}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR + {0x119DA, 0x119DB, prExtend}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI + {0x119DC, 0x119DF, prExtend}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA + {0x119E0, 0x119E0, prExtend}, // Mn NANDINAGARI SIGN VIRAMA + {0x119E1, 0x119E1, prOLetter}, // Lo NANDINAGARI SIGN AVAGRAHA + {0x119E3, 0x119E3, prOLetter}, // Lo NANDINAGARI HEADSTROKE + {0x119E4, 0x119E4, prExtend}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E + {0x11A00, 0x11A00, prOLetter}, // Lo ZANABAZAR SQUARE LETTER A + {0x11A01, 0x11A0A, prExtend}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK + {0x11A0B, 0x11A32, prOLetter}, // Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA + {0x11A33, 0x11A38, prExtend}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA + {0x11A39, 0x11A39, prExtend}, // Mc ZANABAZAR SQUARE SIGN VISARGA + {0x11A3A, 0x11A3A, prOLetter}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA + {0x11A3B, 0x11A3E, prExtend}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA + {0x11A42, 0x11A43, prSTerm}, // Po [2] ZANABAZAR SQUARE MARK SHAD..ZANABAZAR SQUARE MARK DOUBLE SHAD + {0x11A47, 0x11A47, prExtend}, // Mn ZANABAZAR SQUARE SUBJOINER + {0x11A50, 0x11A50, prOLetter}, // Lo SOYOMBO LETTER A + {0x11A51, 0x11A56, prExtend}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE + {0x11A57, 0x11A58, prExtend}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU + {0x11A59, 0x11A5B, prExtend}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK + {0x11A5C, 0x11A89, prOLetter}, // Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA + {0x11A8A, 0x11A96, prExtend}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA + {0x11A97, 0x11A97, prExtend}, // Mc SOYOMBO SIGN VISARGA + {0x11A98, 0x11A99, prExtend}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER + {0x11A9B, 0x11A9C, prSTerm}, // Po [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD + {0x11A9D, 0x11A9D, prOLetter}, // Lo SOYOMBO MARK PLUTA + {0x11AB0, 0x11AF8, prOLetter}, // Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL + {0x11C00, 0x11C08, prOLetter}, // Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L + {0x11C0A, 0x11C2E, prOLetter}, // Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA + {0x11C2F, 0x11C2F, prExtend}, // Mc BHAIKSUKI VOWEL SIGN AA + {0x11C30, 0x11C36, prExtend}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L + {0x11C38, 0x11C3D, prExtend}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA + {0x11C3E, 0x11C3E, prExtend}, // Mc BHAIKSUKI SIGN VISARGA + {0x11C3F, 0x11C3F, prExtend}, // Mn BHAIKSUKI SIGN VIRAMA + {0x11C40, 0x11C40, prOLetter}, // Lo BHAIKSUKI SIGN AVAGRAHA + {0x11C41, 0x11C42, prSTerm}, // Po [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA + {0x11C50, 0x11C59, prNumeric}, // Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE + {0x11C72, 0x11C8F, prOLetter}, // Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A + {0x11C92, 0x11CA7, prExtend}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA + {0x11CA9, 0x11CA9, prExtend}, // Mc MARCHEN SUBJOINED LETTER YA + {0x11CAA, 0x11CB0, prExtend}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA + {0x11CB1, 0x11CB1, prExtend}, // Mc MARCHEN VOWEL SIGN I + {0x11CB2, 0x11CB3, prExtend}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E + {0x11CB4, 0x11CB4, prExtend}, // Mc MARCHEN VOWEL SIGN O + {0x11CB5, 0x11CB6, prExtend}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU + {0x11D00, 0x11D06, prOLetter}, // Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E + {0x11D08, 0x11D09, prOLetter}, // Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O + {0x11D0B, 0x11D30, prOLetter}, // Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA + {0x11D31, 0x11D36, prExtend}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R + {0x11D3A, 0x11D3A, prExtend}, // Mn MASARAM GONDI VOWEL SIGN E + {0x11D3C, 0x11D3D, prExtend}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O + {0x11D3F, 0x11D45, prExtend}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA + {0x11D46, 0x11D46, prOLetter}, // Lo MASARAM GONDI REPHA + {0x11D47, 0x11D47, prExtend}, // Mn MASARAM GONDI RA-KARA + {0x11D50, 0x11D59, prNumeric}, // Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE + {0x11D60, 0x11D65, prOLetter}, // Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU + {0x11D67, 0x11D68, prOLetter}, // Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI + {0x11D6A, 0x11D89, prOLetter}, // Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA + {0x11D8A, 0x11D8E, prExtend}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU + {0x11D90, 0x11D91, prExtend}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI + {0x11D93, 0x11D94, prExtend}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU + {0x11D95, 0x11D95, prExtend}, // Mn GUNJALA GONDI SIGN ANUSVARA + {0x11D96, 0x11D96, prExtend}, // Mc GUNJALA GONDI SIGN VISARGA + {0x11D97, 0x11D97, prExtend}, // Mn GUNJALA GONDI VIRAMA + {0x11D98, 0x11D98, prOLetter}, // Lo GUNJALA GONDI OM + {0x11DA0, 0x11DA9, prNumeric}, // Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE + {0x11EE0, 0x11EF2, prOLetter}, // Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA + {0x11EF3, 0x11EF4, prExtend}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U + {0x11EF5, 0x11EF6, prExtend}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O + {0x11EF7, 0x11EF8, prSTerm}, // Po [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION + {0x11F00, 0x11F01, prExtend}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA + {0x11F02, 0x11F02, prOLetter}, // Lo KAWI SIGN REPHA + {0x11F03, 0x11F03, prExtend}, // Mc KAWI SIGN VISARGA + {0x11F04, 0x11F10, prOLetter}, // Lo [13] KAWI LETTER A..KAWI LETTER O + {0x11F12, 0x11F33, prOLetter}, // Lo [34] KAWI LETTER KA..KAWI LETTER JNYA + {0x11F34, 0x11F35, prExtend}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA + {0x11F36, 0x11F3A, prExtend}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R + {0x11F3E, 0x11F3F, prExtend}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI + {0x11F40, 0x11F40, prExtend}, // Mn KAWI VOWEL SIGN EU + {0x11F41, 0x11F41, prExtend}, // Mc KAWI SIGN KILLER + {0x11F42, 0x11F42, prExtend}, // Mn KAWI CONJOINER + {0x11F43, 0x11F44, prSTerm}, // Po [2] KAWI DANDA..KAWI DOUBLE DANDA + {0x11F50, 0x11F59, prNumeric}, // Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE + {0x11FB0, 0x11FB0, prOLetter}, // Lo LISU LETTER YHA + {0x12000, 0x12399, prOLetter}, // Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U + {0x12400, 0x1246E, prOLetter}, // Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM + {0x12480, 0x12543, prOLetter}, // Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU + {0x12F90, 0x12FF0, prOLetter}, // Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 + {0x13000, 0x1342F, prOLetter}, // Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D + {0x13430, 0x1343F, prFormat}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE + {0x13440, 0x13440, prExtend}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY + {0x13441, 0x13446, prOLetter}, // Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN + {0x13447, 0x13455, prExtend}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED + {0x14400, 0x14646, prOLetter}, // Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 + {0x16800, 0x16A38, prOLetter}, // Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ + {0x16A40, 0x16A5E, prOLetter}, // Lo [31] MRO LETTER TA..MRO LETTER TEK + {0x16A60, 0x16A69, prNumeric}, // Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE + {0x16A6E, 0x16A6F, prSTerm}, // Po [2] MRO DANDA..MRO DOUBLE DANDA + {0x16A70, 0x16ABE, prOLetter}, // Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA + {0x16AC0, 0x16AC9, prNumeric}, // Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE + {0x16AD0, 0x16AED, prOLetter}, // Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I + {0x16AF0, 0x16AF4, prExtend}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE + {0x16AF5, 0x16AF5, prSTerm}, // Po BASSA VAH FULL STOP + {0x16B00, 0x16B2F, prOLetter}, // Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU + {0x16B30, 0x16B36, prExtend}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM + {0x16B37, 0x16B38, prSTerm}, // Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB + {0x16B40, 0x16B43, prOLetter}, // Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM + {0x16B44, 0x16B44, prSTerm}, // Po PAHAWH HMONG SIGN XAUS + {0x16B50, 0x16B59, prNumeric}, // Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE + {0x16B63, 0x16B77, prOLetter}, // Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS + {0x16B7D, 0x16B8F, prOLetter}, // Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ + {0x16E40, 0x16E5F, prUpper}, // L& [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y + {0x16E60, 0x16E7F, prLower}, // L& [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y + {0x16E98, 0x16E98, prSTerm}, // Po MEDEFAIDRIN FULL STOP + {0x16F00, 0x16F4A, prOLetter}, // Lo [75] MIAO LETTER PA..MIAO LETTER RTE + {0x16F4F, 0x16F4F, prExtend}, // Mn MIAO SIGN CONSONANT MODIFIER BAR + {0x16F50, 0x16F50, prOLetter}, // Lo MIAO LETTER NASALIZATION + {0x16F51, 0x16F87, prExtend}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI + {0x16F8F, 0x16F92, prExtend}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW + {0x16F93, 0x16F9F, prOLetter}, // Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 + {0x16FE0, 0x16FE1, prOLetter}, // Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK + {0x16FE3, 0x16FE3, prOLetter}, // Lm OLD CHINESE ITERATION MARK + {0x16FE4, 0x16FE4, prExtend}, // Mn KHITAN SMALL SCRIPT FILLER + {0x16FF0, 0x16FF1, prExtend}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY + {0x17000, 0x187F7, prOLetter}, // Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7 + {0x18800, 0x18CD5, prOLetter}, // Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5 + {0x18D00, 0x18D08, prOLetter}, // Lo [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08 + {0x1AFF0, 0x1AFF3, prOLetter}, // Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 + {0x1AFF5, 0x1AFFB, prOLetter}, // Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 + {0x1AFFD, 0x1AFFE, prOLetter}, // Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 + {0x1B000, 0x1B122, prOLetter}, // Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU + {0x1B132, 0x1B132, prOLetter}, // Lo HIRAGANA LETTER SMALL KO + {0x1B150, 0x1B152, prOLetter}, // Lo [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO + {0x1B155, 0x1B155, prOLetter}, // Lo KATAKANA LETTER SMALL KO + {0x1B164, 0x1B167, prOLetter}, // Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N + {0x1B170, 0x1B2FB, prOLetter}, // Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB + {0x1BC00, 0x1BC6A, prOLetter}, // Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M + {0x1BC70, 0x1BC7C, prOLetter}, // Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK + {0x1BC80, 0x1BC88, prOLetter}, // Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL + {0x1BC90, 0x1BC99, prOLetter}, // Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW + {0x1BC9D, 0x1BC9E, prExtend}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK + {0x1BC9F, 0x1BC9F, prSTerm}, // Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP + {0x1BCA0, 0x1BCA3, prFormat}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP + {0x1CF00, 0x1CF2D, prExtend}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT + {0x1CF30, 0x1CF46, prExtend}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG + {0x1D165, 0x1D166, prExtend}, // Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM + {0x1D167, 0x1D169, prExtend}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 + {0x1D16D, 0x1D172, prExtend}, // Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 + {0x1D173, 0x1D17A, prFormat}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE + {0x1D17B, 0x1D182, prExtend}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE + {0x1D185, 0x1D18B, prExtend}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE + {0x1D1AA, 0x1D1AD, prExtend}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO + {0x1D242, 0x1D244, prExtend}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME + {0x1D400, 0x1D419, prUpper}, // L& [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z + {0x1D41A, 0x1D433, prLower}, // L& [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z + {0x1D434, 0x1D44D, prUpper}, // L& [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z + {0x1D44E, 0x1D454, prLower}, // L& [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G + {0x1D456, 0x1D467, prLower}, // L& [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z + {0x1D468, 0x1D481, prUpper}, // L& [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z + {0x1D482, 0x1D49B, prLower}, // L& [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z + {0x1D49C, 0x1D49C, prUpper}, // L& MATHEMATICAL SCRIPT CAPITAL A + {0x1D49E, 0x1D49F, prUpper}, // L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D + {0x1D4A2, 0x1D4A2, prUpper}, // L& MATHEMATICAL SCRIPT CAPITAL G + {0x1D4A5, 0x1D4A6, prUpper}, // L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K + {0x1D4A9, 0x1D4AC, prUpper}, // L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q + {0x1D4AE, 0x1D4B5, prUpper}, // L& [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z + {0x1D4B6, 0x1D4B9, prLower}, // L& [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D + {0x1D4BB, 0x1D4BB, prLower}, // L& MATHEMATICAL SCRIPT SMALL F + {0x1D4BD, 0x1D4C3, prLower}, // L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N + {0x1D4C5, 0x1D4CF, prLower}, // L& [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z + {0x1D4D0, 0x1D4E9, prUpper}, // L& [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z + {0x1D4EA, 0x1D503, prLower}, // L& [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z + {0x1D504, 0x1D505, prUpper}, // L& [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B + {0x1D507, 0x1D50A, prUpper}, // L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G + {0x1D50D, 0x1D514, prUpper}, // L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q + {0x1D516, 0x1D51C, prUpper}, // L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y + {0x1D51E, 0x1D537, prLower}, // L& [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z + {0x1D538, 0x1D539, prUpper}, // L& [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B + {0x1D53B, 0x1D53E, prUpper}, // L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G + {0x1D540, 0x1D544, prUpper}, // L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M + {0x1D546, 0x1D546, prUpper}, // L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O + {0x1D54A, 0x1D550, prUpper}, // L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y + {0x1D552, 0x1D56B, prLower}, // L& [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z + {0x1D56C, 0x1D585, prUpper}, // L& [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z + {0x1D586, 0x1D59F, prLower}, // L& [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z + {0x1D5A0, 0x1D5B9, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z + {0x1D5BA, 0x1D5D3, prLower}, // L& [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z + {0x1D5D4, 0x1D5ED, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z + {0x1D5EE, 0x1D607, prLower}, // L& [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z + {0x1D608, 0x1D621, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z + {0x1D622, 0x1D63B, prLower}, // L& [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z + {0x1D63C, 0x1D655, prUpper}, // L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z + {0x1D656, 0x1D66F, prLower}, // L& [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z + {0x1D670, 0x1D689, prUpper}, // L& [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z + {0x1D68A, 0x1D6A5, prLower}, // L& [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J + {0x1D6A8, 0x1D6C0, prUpper}, // L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA + {0x1D6C2, 0x1D6DA, prLower}, // L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA + {0x1D6DC, 0x1D6E1, prLower}, // L& [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL + {0x1D6E2, 0x1D6FA, prUpper}, // L& [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA + {0x1D6FC, 0x1D714, prLower}, // L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA + {0x1D716, 0x1D71B, prLower}, // L& [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL + {0x1D71C, 0x1D734, prUpper}, // L& [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA + {0x1D736, 0x1D74E, prLower}, // L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA + {0x1D750, 0x1D755, prLower}, // L& [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL + {0x1D756, 0x1D76E, prUpper}, // L& [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA + {0x1D770, 0x1D788, prLower}, // L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA + {0x1D78A, 0x1D78F, prLower}, // L& [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL + {0x1D790, 0x1D7A8, prUpper}, // L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA + {0x1D7AA, 0x1D7C2, prLower}, // L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA + {0x1D7C4, 0x1D7C9, prLower}, // L& [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL + {0x1D7CA, 0x1D7CA, prUpper}, // L& MATHEMATICAL BOLD CAPITAL DIGAMMA + {0x1D7CB, 0x1D7CB, prLower}, // L& MATHEMATICAL BOLD SMALL DIGAMMA + {0x1D7CE, 0x1D7FF, prNumeric}, // Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE + {0x1DA00, 0x1DA36, prExtend}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN + {0x1DA3B, 0x1DA6C, prExtend}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT + {0x1DA75, 0x1DA75, prExtend}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS + {0x1DA84, 0x1DA84, prExtend}, // Mn SIGNWRITING LOCATION HEAD NECK + {0x1DA88, 0x1DA88, prSTerm}, // Po SIGNWRITING FULL STOP + {0x1DA9B, 0x1DA9F, prExtend}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 + {0x1DAA1, 0x1DAAF, prExtend}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + {0x1DF00, 0x1DF09, prLower}, // L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + {0x1DF0A, 0x1DF0A, prOLetter}, // Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + {0x1DF0B, 0x1DF1E, prLower}, // L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL + {0x1DF25, 0x1DF2A, prLower}, // L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK + {0x1E000, 0x1E006, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE + {0x1E008, 0x1E018, prExtend}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU + {0x1E01B, 0x1E021, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI + {0x1E023, 0x1E024, prExtend}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS + {0x1E026, 0x1E02A, prExtend}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA + {0x1E030, 0x1E06D, prLower}, // Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + {0x1E08F, 0x1E08F, prExtend}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + {0x1E100, 0x1E12C, prOLetter}, // Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W + {0x1E130, 0x1E136, prExtend}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D + {0x1E137, 0x1E13D, prOLetter}, // Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER + {0x1E140, 0x1E149, prNumeric}, // Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE + {0x1E14E, 0x1E14E, prOLetter}, // Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ + {0x1E290, 0x1E2AD, prOLetter}, // Lo [30] TOTO LETTER PA..TOTO LETTER A + {0x1E2AE, 0x1E2AE, prExtend}, // Mn TOTO SIGN RISING TONE + {0x1E2C0, 0x1E2EB, prOLetter}, // Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH + {0x1E2EC, 0x1E2EF, prExtend}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI + {0x1E2F0, 0x1E2F9, prNumeric}, // Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE + {0x1E4D0, 0x1E4EA, prOLetter}, // Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL + {0x1E4EB, 0x1E4EB, prOLetter}, // Lm NAG MUNDARI SIGN OJOD + {0x1E4EC, 0x1E4EF, prExtend}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH + {0x1E4F0, 0x1E4F9, prNumeric}, // Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE + {0x1E7E0, 0x1E7E6, prOLetter}, // Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO + {0x1E7E8, 0x1E7EB, prOLetter}, // Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE + {0x1E7ED, 0x1E7EE, prOLetter}, // Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE + {0x1E7F0, 0x1E7FE, prOLetter}, // Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE + {0x1E800, 0x1E8C4, prOLetter}, // Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON + {0x1E8D0, 0x1E8D6, prExtend}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS + {0x1E900, 0x1E921, prUpper}, // L& [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA + {0x1E922, 0x1E943, prLower}, // L& [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA + {0x1E944, 0x1E94A, prExtend}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA + {0x1E94B, 0x1E94B, prOLetter}, // Lm ADLAM NASALIZATION MARK + {0x1E950, 0x1E959, prNumeric}, // Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE + {0x1EE00, 0x1EE03, prOLetter}, // Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL + {0x1EE05, 0x1EE1F, prOLetter}, // Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF + {0x1EE21, 0x1EE22, prOLetter}, // Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM + {0x1EE24, 0x1EE24, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL HEH + {0x1EE27, 0x1EE27, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL HAH + {0x1EE29, 0x1EE32, prOLetter}, // Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF + {0x1EE34, 0x1EE37, prOLetter}, // Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH + {0x1EE39, 0x1EE39, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL DAD + {0x1EE3B, 0x1EE3B, prOLetter}, // Lo ARABIC MATHEMATICAL INITIAL GHAIN + {0x1EE42, 0x1EE42, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED JEEM + {0x1EE47, 0x1EE47, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED HAH + {0x1EE49, 0x1EE49, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED YEH + {0x1EE4B, 0x1EE4B, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED LAM + {0x1EE4D, 0x1EE4F, prOLetter}, // Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN + {0x1EE51, 0x1EE52, prOLetter}, // Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF + {0x1EE54, 0x1EE54, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED SHEEN + {0x1EE57, 0x1EE57, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED KHAH + {0x1EE59, 0x1EE59, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED DAD + {0x1EE5B, 0x1EE5B, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED GHAIN + {0x1EE5D, 0x1EE5D, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON + {0x1EE5F, 0x1EE5F, prOLetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF + {0x1EE61, 0x1EE62, prOLetter}, // Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM + {0x1EE64, 0x1EE64, prOLetter}, // Lo ARABIC MATHEMATICAL STRETCHED HEH + {0x1EE67, 0x1EE6A, prOLetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF + {0x1EE6C, 0x1EE72, prOLetter}, // Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF + {0x1EE74, 0x1EE77, prOLetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH + {0x1EE79, 0x1EE7C, prOLetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH + {0x1EE7E, 0x1EE7E, prOLetter}, // Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH + {0x1EE80, 0x1EE89, prOLetter}, // Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH + {0x1EE8B, 0x1EE9B, prOLetter}, // Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN + {0x1EEA1, 0x1EEA3, prOLetter}, // Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL + {0x1EEA5, 0x1EEA9, prOLetter}, // Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH + {0x1EEAB, 0x1EEBB, prOLetter}, // Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN + {0x1F130, 0x1F149, prUpper}, // So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z + {0x1F150, 0x1F169, prUpper}, // So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z + {0x1F170, 0x1F189, prUpper}, // So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z + {0x1F676, 0x1F678, prClose}, // So [3] SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT..SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT + {0x1FBF0, 0x1FBF9, prNumeric}, // Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE + {0x20000, 0x2A6DF, prOLetter}, // Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF + {0x2A700, 0x2B739, prOLetter}, // Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739 + {0x2B740, 0x2B81D, prOLetter}, // Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D + {0x2B820, 0x2CEA1, prOLetter}, // Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1 + {0x2CEB0, 0x2EBE0, prOLetter}, // Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0 + {0x2F800, 0x2FA1D, prOLetter}, // Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D + {0x30000, 0x3134A, prOLetter}, // Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A + {0x31350, 0x323AF, prOLetter}, // Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF + {0xE0001, 0xE0001, prFormat}, // Cf LANGUAGE TAG + {0xE0020, 0xE007F, prExtend}, // Cf [96] TAG SPACE..CANCEL TAG + {0xE0100, 0xE01EF, prExtend}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentencerules.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentencerules.go new file mode 100644 index 0000000..0b29c7b --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/sentencerules.go @@ -0,0 +1,276 @@ +package uniseg + +import "unicode/utf8" + +// The states of the sentence break parser. +const ( + sbAny = iota + sbCR + sbParaSep + sbATerm + sbUpper + sbLower + sbSB7 + sbSB8Close + sbSB8Sp + sbSTerm + sbSB8aClose + sbSB8aSp +) + +// sbTransitions implements the sentence break parser's state transitions. It's +// anologous to [grTransitions], see comments there for details. +// +// Unicode version 15.0.0. +func sbTransitions(state, prop int) (newState int, sentenceBreak bool, rule int) { + switch uint64(state) | uint64(prop)<<32 { + // SB3. + case sbAny | prCR<<32: + return sbCR, false, 9990 + case sbCR | prLF<<32: + return sbParaSep, false, 30 + + // SB4. + case sbAny | prSep<<32: + return sbParaSep, false, 9990 + case sbAny | prLF<<32: + return sbParaSep, false, 9990 + case sbParaSep | prAny<<32: + return sbAny, true, 40 + case sbCR | prAny<<32: + return sbAny, true, 40 + + // SB6. + case sbAny | prATerm<<32: + return sbATerm, false, 9990 + case sbATerm | prNumeric<<32: + return sbAny, false, 60 + case sbSB7 | prNumeric<<32: + return sbAny, false, 60 // Because ATerm also appears in SB7. + + // SB7. + case sbAny | prUpper<<32: + return sbUpper, false, 9990 + case sbAny | prLower<<32: + return sbLower, false, 9990 + case sbUpper | prATerm<<32: + return sbSB7, false, 70 + case sbLower | prATerm<<32: + return sbSB7, false, 70 + case sbSB7 | prUpper<<32: + return sbUpper, false, 70 + + // SB8a. + case sbAny | prSTerm<<32: + return sbSTerm, false, 9990 + case sbATerm | prSContinue<<32: + return sbAny, false, 81 + case sbATerm | prATerm<<32: + return sbATerm, false, 81 + case sbATerm | prSTerm<<32: + return sbSTerm, false, 81 + case sbSB7 | prSContinue<<32: + return sbAny, false, 81 + case sbSB7 | prATerm<<32: + return sbATerm, false, 81 + case sbSB7 | prSTerm<<32: + return sbSTerm, false, 81 + case sbSB8Close | prSContinue<<32: + return sbAny, false, 81 + case sbSB8Close | prATerm<<32: + return sbATerm, false, 81 + case sbSB8Close | prSTerm<<32: + return sbSTerm, false, 81 + case sbSB8Sp | prSContinue<<32: + return sbAny, false, 81 + case sbSB8Sp | prATerm<<32: + return sbATerm, false, 81 + case sbSB8Sp | prSTerm<<32: + return sbSTerm, false, 81 + case sbSTerm | prSContinue<<32: + return sbAny, false, 81 + case sbSTerm | prATerm<<32: + return sbATerm, false, 81 + case sbSTerm | prSTerm<<32: + return sbSTerm, false, 81 + case sbSB8aClose | prSContinue<<32: + return sbAny, false, 81 + case sbSB8aClose | prATerm<<32: + return sbATerm, false, 81 + case sbSB8aClose | prSTerm<<32: + return sbSTerm, false, 81 + case sbSB8aSp | prSContinue<<32: + return sbAny, false, 81 + case sbSB8aSp | prATerm<<32: + return sbATerm, false, 81 + case sbSB8aSp | prSTerm<<32: + return sbSTerm, false, 81 + + // SB9. + case sbATerm | prClose<<32: + return sbSB8Close, false, 90 + case sbSB7 | prClose<<32: + return sbSB8Close, false, 90 + case sbSB8Close | prClose<<32: + return sbSB8Close, false, 90 + case sbATerm | prSp<<32: + return sbSB8Sp, false, 90 + case sbSB7 | prSp<<32: + return sbSB8Sp, false, 90 + case sbSB8Close | prSp<<32: + return sbSB8Sp, false, 90 + case sbSTerm | prClose<<32: + return sbSB8aClose, false, 90 + case sbSB8aClose | prClose<<32: + return sbSB8aClose, false, 90 + case sbSTerm | prSp<<32: + return sbSB8aSp, false, 90 + case sbSB8aClose | prSp<<32: + return sbSB8aSp, false, 90 + case sbATerm | prSep<<32: + return sbParaSep, false, 90 + case sbATerm | prCR<<32: + return sbParaSep, false, 90 + case sbATerm | prLF<<32: + return sbParaSep, false, 90 + case sbSB7 | prSep<<32: + return sbParaSep, false, 90 + case sbSB7 | prCR<<32: + return sbParaSep, false, 90 + case sbSB7 | prLF<<32: + return sbParaSep, false, 90 + case sbSB8Close | prSep<<32: + return sbParaSep, false, 90 + case sbSB8Close | prCR<<32: + return sbParaSep, false, 90 + case sbSB8Close | prLF<<32: + return sbParaSep, false, 90 + case sbSTerm | prSep<<32: + return sbParaSep, false, 90 + case sbSTerm | prCR<<32: + return sbParaSep, false, 90 + case sbSTerm | prLF<<32: + return sbParaSep, false, 90 + case sbSB8aClose | prSep<<32: + return sbParaSep, false, 90 + case sbSB8aClose | prCR<<32: + return sbParaSep, false, 90 + case sbSB8aClose | prLF<<32: + return sbParaSep, false, 90 + + // SB10. + case sbSB8Sp | prSp<<32: + return sbSB8Sp, false, 100 + case sbSB8aSp | prSp<<32: + return sbSB8aSp, false, 100 + case sbSB8Sp | prSep<<32: + return sbParaSep, false, 100 + case sbSB8Sp | prCR<<32: + return sbParaSep, false, 100 + case sbSB8Sp | prLF<<32: + return sbParaSep, false, 100 + + // SB11. + case sbATerm | prAny<<32: + return sbAny, true, 110 + case sbSB7 | prAny<<32: + return sbAny, true, 110 + case sbSB8Close | prAny<<32: + return sbAny, true, 110 + case sbSB8Sp | prAny<<32: + return sbAny, true, 110 + case sbSTerm | prAny<<32: + return sbAny, true, 110 + case sbSB8aClose | prAny<<32: + return sbAny, true, 110 + case sbSB8aSp | prAny<<32: + return sbAny, true, 110 + // We'll always break after ParaSep due to SB4. + + default: + return -1, false, -1 + } +} + +// transitionSentenceBreakState determines the new state of the sentence break +// parser given the current state and the next code point. It also returns +// whether a sentence boundary was detected. If more than one code point is +// needed to determine the new state, the byte slice or the string starting +// after rune "r" can be used (whichever is not nil or empty) for further +// lookups. +func transitionSentenceBreakState(state int, r rune, b []byte, str string) (newState int, sentenceBreak bool) { + // Determine the property of the next character. + nextProperty := property(sentenceBreakCodePoints, r) + + // SB5 (Replacing Ignore Rules). + if nextProperty == prExtend || nextProperty == prFormat { + if state == sbParaSep || state == sbCR { + return sbAny, true // Make sure we don't apply SB5 to SB3 or SB4. + } + if state < 0 { + return sbAny, true // SB1. + } + return state, false + } + + // Find the applicable transition in the table. + var rule int + newState, sentenceBreak, rule = sbTransitions(state, nextProperty) + if newState < 0 { + // No specific transition found. Try the less specific ones. + anyPropState, anyPropProp, anyPropRule := sbTransitions(state, prAny) + anyStateState, anyStateProp, anyStateRule := sbTransitions(sbAny, nextProperty) + if anyPropState >= 0 && anyStateState >= 0 { + // Both apply. We'll use a mix (see comments for grTransitions). + newState, sentenceBreak, rule = anyStateState, anyStateProp, anyStateRule + if anyPropRule < anyStateRule { + sentenceBreak, rule = anyPropProp, anyPropRule + } + } else if anyPropState >= 0 { + // We only have a specific state. + newState, sentenceBreak, rule = anyPropState, anyPropProp, anyPropRule + // This branch will probably never be reached because okAnyState will + // always be true given the current transition map. But we keep it here + // for future modifications to the transition map where this may not be + // true anymore. + } else if anyStateState >= 0 { + // We only have a specific property. + newState, sentenceBreak, rule = anyStateState, anyStateProp, anyStateRule + } else { + // No known transition. SB999: Any × Any. + newState, sentenceBreak, rule = sbAny, false, 9990 + } + } + + // SB8. + if rule > 80 && (state == sbATerm || state == sbSB8Close || state == sbSB8Sp || state == sbSB7) { + // Check the right side of the rule. + var length int + for nextProperty != prOLetter && + nextProperty != prUpper && + nextProperty != prLower && + nextProperty != prSep && + nextProperty != prCR && + nextProperty != prLF && + nextProperty != prATerm && + nextProperty != prSTerm { + // Move on to the next rune. + if b != nil { // Byte slice version. + r, length = utf8.DecodeRune(b) + b = b[length:] + } else { // String version. + r, length = utf8.DecodeRuneInString(str) + str = str[length:] + } + if r == utf8.RuneError { + break + } + nextProperty = property(sentenceBreakCodePoints, r) + } + if nextProperty == prLower { + return sbLower, false + } + } + + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/step.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/step.go new file mode 100644 index 0000000..9b72c5e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/step.go @@ -0,0 +1,242 @@ +package uniseg + +import "unicode/utf8" + +// The bit masks used to extract boundary information returned by [Step]. +const ( + MaskLine = 3 + MaskWord = 4 + MaskSentence = 8 +) + +// The number of bits to shift the boundary information returned by [Step] to +// obtain the monospace width of the grapheme cluster. +const ShiftWidth = 4 + +// The bit positions by which boundary flags are shifted by the [Step] function. +// These must correspond to the Mask constants. +const ( + shiftWord = 2 + shiftSentence = 3 + // shiftwWidth is ShiftWidth above. No mask as these are always the remaining bits. +) + +// The bit positions by which states are shifted by the [Step] function. These +// values must ensure state values defined for each of the boundary algorithms +// don't overlap (and that they all still fit in a single int). These must +// correspond to the Mask constants. +const ( + shiftWordState = 4 + shiftSentenceState = 9 + shiftLineState = 13 + shiftPropState = 21 // No mask as these are always the remaining bits. +) + +// The bit mask used to extract the state returned by the [Step] function, after +// shifting. These values must correspond to the shift constants. +const ( + maskGraphemeState = 0xf + maskWordState = 0x1f + maskSentenceState = 0xf + maskLineState = 0xff +) + +// Step returns the first grapheme cluster (user-perceived character) found in +// the given byte slice. It also returns information about the boundary between +// that grapheme cluster and the one following it as well as the monospace width +// of the grapheme cluster. There are three types of boundary information: word +// boundaries, sentence boundaries, and line breaks. This function is therefore +// a combination of [FirstGraphemeCluster], [FirstWord], [FirstSentence], and +// [FirstLineSegment]. +// +// The "boundaries" return value can be evaluated as follows: +// +// - boundaries&MaskWord != 0: The boundary is a word boundary. +// - boundaries&MaskWord == 0: The boundary is not a word boundary. +// - boundaries&MaskSentence != 0: The boundary is a sentence boundary. +// - boundaries&MaskSentence == 0: The boundary is not a sentence boundary. +// - boundaries&MaskLine == LineDontBreak: You must not break the line at the +// boundary. +// - boundaries&MaskLine == LineMustBreak: You must break the line at the +// boundary. +// - boundaries&MaskLine == LineCanBreak: You may or may not break the line at +// the boundary. +// - boundaries >> ShiftWidth: The width of the grapheme cluster for most +// monospace fonts where a value of 1 represents one character cell. +// +// This function can be called continuously to extract all grapheme clusters +// from a byte slice, as illustrated in the examples below. +// +// If you don't know which state to pass, for example when calling the function +// for the first time, you must pass -1. For consecutive calls, pass the state +// and rest slice returned by the previous call. +// +// The "rest" slice is the sub-slice of the original byte slice "b" starting +// after the last byte of the identified grapheme cluster. If the length of the +// "rest" slice is 0, the entire byte slice "b" has been processed. The +// "cluster" byte slice is the sub-slice of the input slice containing the +// first identified grapheme cluster. +// +// Given an empty byte slice "b", the function returns nil values. +// +// While slightly less convenient than using the Graphemes class, this function +// has much better performance and makes no allocations. It lends itself well to +// large byte slices. +// +// Note that in accordance with [UAX #14 LB3], the final segment will end with +// a mandatory line break (boundaries&MaskLine == LineMustBreak). You can choose +// to ignore this by checking if the length of the "rest" slice is 0 and calling +// [HasTrailingLineBreak] or [HasTrailingLineBreakInString] on the last rune. +// +// [UAX #14 LB3]: https://www.unicode.org/reports/tr14/#Algorithm +func Step(b []byte, state int) (cluster, rest []byte, boundaries int, newState int) { + // An empty byte slice returns nothing. + if len(b) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRune(b) + if len(b) <= length { // If we're already past the end, there is nothing else to parse. + var prop int + if state < 0 { + prop = propertyGraphemes(r) + } else { + prop = state >> shiftPropState + } + return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (runeWidth(r, prop) << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) + } + + // If we don't know the state, determine it now. + var graphemeState, wordState, sentenceState, lineState, firstProp int + remainder := b[length:] + if state < 0 { + graphemeState, firstProp, _ = transitionGraphemeState(state, r) + wordState, _ = transitionWordBreakState(state, r, remainder, "") + sentenceState, _ = transitionSentenceBreakState(state, r, remainder, "") + lineState, _ = transitionLineBreakState(state, r, remainder, "") + } else { + graphemeState = state & maskGraphemeState + wordState = (state >> shiftWordState) & maskWordState + sentenceState = (state >> shiftSentenceState) & maskSentenceState + lineState = (state >> shiftLineState) & maskLineState + firstProp = state >> shiftPropState + } + + // Transition until we find a grapheme cluster boundary. + width := runeWidth(r, firstProp) + for { + var ( + graphemeBoundary, wordBoundary, sentenceBoundary bool + lineBreak, prop int + ) + + r, l := utf8.DecodeRune(remainder) + remainder = b[length+l:] + + graphemeState, prop, graphemeBoundary = transitionGraphemeState(graphemeState, r) + wordState, wordBoundary = transitionWordBreakState(wordState, r, remainder, "") + sentenceState, sentenceBoundary = transitionSentenceBreakState(sentenceState, r, remainder, "") + lineState, lineBreak = transitionLineBreakState(lineState, r, remainder, "") + + if graphemeBoundary { + boundary := lineBreak | (width << ShiftWidth) + if wordBoundary { + boundary |= 1 << shiftWord + } + if sentenceBoundary { + boundary |= 1 << shiftSentence + } + return b[:length], b[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) | (prop << shiftPropState) + } + + if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else if r == vs16 { + width = 2 + } + } else if firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } + + length += l + if len(b) <= length { + return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (width << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) + } + } +} + +// StepString is like [Step] but its input and outputs are strings. +func StepString(str string, state int) (cluster, rest string, boundaries int, newState int) { + // An empty byte slice returns nothing. + if len(str) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRuneInString(str) + if len(str) <= length { // If we're already past the end, there is nothing else to parse. + prop := propertyGraphemes(r) + return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (runeWidth(r, prop) << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) + } + + // If we don't know the state, determine it now. + var graphemeState, wordState, sentenceState, lineState, firstProp int + remainder := str[length:] + if state < 0 { + graphemeState, firstProp, _ = transitionGraphemeState(state, r) + wordState, _ = transitionWordBreakState(state, r, nil, remainder) + sentenceState, _ = transitionSentenceBreakState(state, r, nil, remainder) + lineState, _ = transitionLineBreakState(state, r, nil, remainder) + } else { + graphemeState = state & maskGraphemeState + wordState = (state >> shiftWordState) & maskWordState + sentenceState = (state >> shiftSentenceState) & maskSentenceState + lineState = (state >> shiftLineState) & maskLineState + firstProp = state >> shiftPropState + } + + // Transition until we find a grapheme cluster boundary. + width := runeWidth(r, firstProp) + for { + var ( + graphemeBoundary, wordBoundary, sentenceBoundary bool + lineBreak, prop int + ) + + r, l := utf8.DecodeRuneInString(remainder) + remainder = str[length+l:] + + graphemeState, prop, graphemeBoundary = transitionGraphemeState(graphemeState, r) + wordState, wordBoundary = transitionWordBreakState(wordState, r, nil, remainder) + sentenceState, sentenceBoundary = transitionSentenceBreakState(sentenceState, r, nil, remainder) + lineState, lineBreak = transitionLineBreakState(lineState, r, nil, remainder) + + if graphemeBoundary { + boundary := lineBreak | (width << ShiftWidth) + if wordBoundary { + boundary |= 1 << shiftWord + } + if sentenceBoundary { + boundary |= 1 << shiftSentence + } + return str[:length], str[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) | (prop << shiftPropState) + } + + if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else if r == vs16 { + width = 2 + } + } else if firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } + + length += l + if len(str) <= length { + return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (width << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/width.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/width.go new file mode 100644 index 0000000..975a9f1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/width.go @@ -0,0 +1,61 @@ +package uniseg + +// EastAsianAmbiguousWidth specifies the monospace width for East Asian +// characters classified as Ambiguous. The default is 1 but some rare fonts +// render them with a width of 2. +var EastAsianAmbiguousWidth = 1 + +// runeWidth returns the monospace width for the given rune. The provided +// grapheme property is a value mapped by the [graphemeCodePoints] table. +// +// Every rune has a width of 1, except for runes with the following properties +// (evaluated in this order): +// +// - Control, CR, LF, Extend, ZWJ: Width of 0 +// - \u2e3a, TWO-EM DASH: Width of 3 +// - \u2e3b, THREE-EM DASH: Width of 4 +// - East-Asian width Fullwidth and Wide: Width of 2 (Ambiguous and Neutral +// have a width of 1) +// - Regional Indicator: Width of 2 +// - Extended Pictographic: Width of 2, unless Emoji Presentation is "No". +func runeWidth(r rune, graphemeProperty int) int { + switch graphemeProperty { + case prControl, prCR, prLF, prExtend, prZWJ: + return 0 + case prRegionalIndicator: + return 2 + case prExtendedPictographic: + if property(emojiPresentation, r) == prEmojiPresentation { + return 2 + } + return 1 + } + + switch r { + case 0x2e3a: + return 3 + case 0x2e3b: + return 4 + } + + switch propertyEastAsianWidth(r) { + case prW, prF: + return 2 + case prA: + return EastAsianAmbiguousWidth + } + + return 1 +} + +// StringWidth returns the monospace width for the given string, that is, the +// number of same-size cells to be occupied by the string. +func StringWidth(s string) (width int) { + state := -1 + for len(s) > 0 { + var w int + _, s, w, state = FirstGraphemeClusterInString(s, state) + width += w + } + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/word.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/word.go new file mode 100644 index 0000000..34fba7f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/word.go @@ -0,0 +1,89 @@ +package uniseg + +import "unicode/utf8" + +// FirstWord returns the first word found in the given byte slice according to +// the rules of [Unicode Standard Annex #29, Word Boundaries]. This function can +// be called continuously to extract all words from a byte slice, as illustrated +// in the example below. +// +// If you don't know the current state, for example when calling the function +// for the first time, you must pass -1. For consecutive calls, pass the state +// and rest slice returned by the previous call. +// +// The "rest" slice is the sub-slice of the original byte slice "b" starting +// after the last byte of the identified word. If the length of the "rest" slice +// is 0, the entire byte slice "b" has been processed. The "word" byte slice is +// the sub-slice of the input slice containing the identified word. +// +// Given an empty byte slice "b", the function returns nil values. +// +// [Unicode Standard Annex #29, Word Boundaries]: http://unicode.org/reports/tr29/#Word_Boundaries +func FirstWord(b []byte, state int) (word, rest []byte, newState int) { + // An empty byte slice returns nothing. + if len(b) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRune(b) + if len(b) <= length { // If we're already past the end, there is nothing else to parse. + return b, nil, wbAny + } + + // If we don't know the state, determine it now. + if state < 0 { + state, _ = transitionWordBreakState(state, r, b[length:], "") + } + + // Transition until we find a boundary. + var boundary bool + for { + r, l := utf8.DecodeRune(b[length:]) + state, boundary = transitionWordBreakState(state, r, b[length+l:], "") + + if boundary { + return b[:length], b[length:], state + } + + length += l + if len(b) <= length { + return b, nil, wbAny + } + } +} + +// FirstWordInString is like [FirstWord] but its input and outputs are strings. +func FirstWordInString(str string, state int) (word, rest string, newState int) { + // An empty byte slice returns nothing. + if len(str) == 0 { + return + } + + // Extract the first rune. + r, length := utf8.DecodeRuneInString(str) + if len(str) <= length { // If we're already past the end, there is nothing else to parse. + return str, "", wbAny + } + + // If we don't know the state, determine it now. + if state < 0 { + state, _ = transitionWordBreakState(state, r, nil, str[length:]) + } + + // Transition until we find a boundary. + var boundary bool + for { + r, l := utf8.DecodeRuneInString(str[length:]) + state, boundary = transitionWordBreakState(state, r, nil, str[length+l:]) + + if boundary { + return str[:length], str[length:], state + } + + length += l + if len(str) <= length { + return str, "", wbAny + } + } +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordproperties.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordproperties.go new file mode 100644 index 0000000..277ca10 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordproperties.go @@ -0,0 +1,1883 @@ +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +package uniseg + +// workBreakCodePoints are taken from +// https://www.unicode.org/Public/15.0.0/ucd/auxiliary/WordBreakProperty.txt +// and +// https://unicode.org/Public/15.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 5, 2023. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var workBreakCodePoints = [][3]int{ + {0x000A, 0x000A, prLF}, // Cc + {0x000B, 0x000C, prNewline}, // Cc [2] .. + {0x000D, 0x000D, prCR}, // Cc + {0x0020, 0x0020, prWSegSpace}, // Zs SPACE + {0x0022, 0x0022, prDoubleQuote}, // Po QUOTATION MARK + {0x0027, 0x0027, prSingleQuote}, // Po APOSTROPHE + {0x002C, 0x002C, prMidNum}, // Po COMMA + {0x002E, 0x002E, prMidNumLet}, // Po FULL STOP + {0x0030, 0x0039, prNumeric}, // Nd [10] DIGIT ZERO..DIGIT NINE + {0x003A, 0x003A, prMidLetter}, // Po COLON + {0x003B, 0x003B, prMidNum}, // Po SEMICOLON + {0x0041, 0x005A, prALetter}, // L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z + {0x005F, 0x005F, prExtendNumLet}, // Pc LOW LINE + {0x0061, 0x007A, prALetter}, // L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z + {0x0085, 0x0085, prNewline}, // Cc + {0x00A9, 0x00A9, prExtendedPictographic}, // E0.6 [1] (©️) copyright + {0x00AA, 0x00AA, prALetter}, // Lo FEMININE ORDINAL INDICATOR + {0x00AD, 0x00AD, prFormat}, // Cf SOFT HYPHEN + {0x00AE, 0x00AE, prExtendedPictographic}, // E0.6 [1] (®️) registered + {0x00B5, 0x00B5, prALetter}, // L& MICRO SIGN + {0x00B7, 0x00B7, prMidLetter}, // Po MIDDLE DOT + {0x00BA, 0x00BA, prALetter}, // Lo MASCULINE ORDINAL INDICATOR + {0x00C0, 0x00D6, prALetter}, // L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS + {0x00D8, 0x00F6, prALetter}, // L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS + {0x00F8, 0x01BA, prALetter}, // L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL + {0x01BB, 0x01BB, prALetter}, // Lo LATIN LETTER TWO WITH STROKE + {0x01BC, 0x01BF, prALetter}, // L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN + {0x01C0, 0x01C3, prALetter}, // Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK + {0x01C4, 0x0293, prALetter}, // L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL + {0x0294, 0x0294, prALetter}, // Lo LATIN LETTER GLOTTAL STOP + {0x0295, 0x02AF, prALetter}, // L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL + {0x02B0, 0x02C1, prALetter}, // Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP + {0x02C2, 0x02C5, prALetter}, // Sk [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD + {0x02C6, 0x02D1, prALetter}, // Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON + {0x02D2, 0x02D7, prALetter}, // Sk [6] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN + {0x02DE, 0x02DF, prALetter}, // Sk [2] MODIFIER LETTER RHOTIC HOOK..MODIFIER LETTER CROSS ACCENT + {0x02E0, 0x02E4, prALetter}, // Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP + {0x02E5, 0x02EB, prALetter}, // Sk [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK + {0x02EC, 0x02EC, prALetter}, // Lm MODIFIER LETTER VOICING + {0x02ED, 0x02ED, prALetter}, // Sk MODIFIER LETTER UNASPIRATED + {0x02EE, 0x02EE, prALetter}, // Lm MODIFIER LETTER DOUBLE APOSTROPHE + {0x02EF, 0x02FF, prALetter}, // Sk [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW + {0x0300, 0x036F, prExtend}, // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X + {0x0370, 0x0373, prALetter}, // L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI + {0x0374, 0x0374, prALetter}, // Lm GREEK NUMERAL SIGN + {0x0376, 0x0377, prALetter}, // L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA + {0x037A, 0x037A, prALetter}, // Lm GREEK YPOGEGRAMMENI + {0x037B, 0x037D, prALetter}, // L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL + {0x037E, 0x037E, prMidNum}, // Po GREEK QUESTION MARK + {0x037F, 0x037F, prALetter}, // L& GREEK CAPITAL LETTER YOT + {0x0386, 0x0386, prALetter}, // L& GREEK CAPITAL LETTER ALPHA WITH TONOS + {0x0387, 0x0387, prMidLetter}, // Po GREEK ANO TELEIA + {0x0388, 0x038A, prALetter}, // L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS + {0x038C, 0x038C, prALetter}, // L& GREEK CAPITAL LETTER OMICRON WITH TONOS + {0x038E, 0x03A1, prALetter}, // L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO + {0x03A3, 0x03F5, prALetter}, // L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL + {0x03F7, 0x0481, prALetter}, // L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA + {0x0483, 0x0487, prExtend}, // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE + {0x0488, 0x0489, prExtend}, // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN + {0x048A, 0x052F, prALetter}, // L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER + {0x0531, 0x0556, prALetter}, // L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH + {0x0559, 0x0559, prALetter}, // Lm ARMENIAN MODIFIER LETTER LEFT HALF RING + {0x055A, 0x055C, prALetter}, // Po [3] ARMENIAN APOSTROPHE..ARMENIAN EXCLAMATION MARK + {0x055E, 0x055E, prALetter}, // Po ARMENIAN QUESTION MARK + {0x055F, 0x055F, prMidLetter}, // Po ARMENIAN ABBREVIATION MARK + {0x0560, 0x0588, prALetter}, // L& [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE + {0x0589, 0x0589, prMidNum}, // Po ARMENIAN FULL STOP + {0x058A, 0x058A, prALetter}, // Pd ARMENIAN HYPHEN + {0x0591, 0x05BD, prExtend}, // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG + {0x05BF, 0x05BF, prExtend}, // Mn HEBREW POINT RAFE + {0x05C1, 0x05C2, prExtend}, // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT + {0x05C4, 0x05C5, prExtend}, // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT + {0x05C7, 0x05C7, prExtend}, // Mn HEBREW POINT QAMATS QATAN + {0x05D0, 0x05EA, prHebrewLetter}, // Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV + {0x05EF, 0x05F2, prHebrewLetter}, // Lo [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD + {0x05F3, 0x05F3, prALetter}, // Po HEBREW PUNCTUATION GERESH + {0x05F4, 0x05F4, prMidLetter}, // Po HEBREW PUNCTUATION GERSHAYIM + {0x0600, 0x0605, prFormat}, // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE + {0x060C, 0x060D, prMidNum}, // Po [2] ARABIC COMMA..ARABIC DATE SEPARATOR + {0x0610, 0x061A, prExtend}, // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA + {0x061C, 0x061C, prFormat}, // Cf ARABIC LETTER MARK + {0x0620, 0x063F, prALetter}, // Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE + {0x0640, 0x0640, prALetter}, // Lm ARABIC TATWEEL + {0x0641, 0x064A, prALetter}, // Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH + {0x064B, 0x065F, prExtend}, // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW + {0x0660, 0x0669, prNumeric}, // Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE + {0x066B, 0x066B, prNumeric}, // Po ARABIC DECIMAL SEPARATOR + {0x066C, 0x066C, prMidNum}, // Po ARABIC THOUSANDS SEPARATOR + {0x066E, 0x066F, prALetter}, // Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF + {0x0670, 0x0670, prExtend}, // Mn ARABIC LETTER SUPERSCRIPT ALEF + {0x0671, 0x06D3, prALetter}, // Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE + {0x06D5, 0x06D5, prALetter}, // Lo ARABIC LETTER AE + {0x06D6, 0x06DC, prExtend}, // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN + {0x06DD, 0x06DD, prFormat}, // Cf ARABIC END OF AYAH + {0x06DF, 0x06E4, prExtend}, // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA + {0x06E5, 0x06E6, prALetter}, // Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH + {0x06E7, 0x06E8, prExtend}, // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON + {0x06EA, 0x06ED, prExtend}, // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM + {0x06EE, 0x06EF, prALetter}, // Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V + {0x06F0, 0x06F9, prNumeric}, // Nd [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE + {0x06FA, 0x06FC, prALetter}, // Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW + {0x06FF, 0x06FF, prALetter}, // Lo ARABIC LETTER HEH WITH INVERTED V + {0x070F, 0x070F, prFormat}, // Cf SYRIAC ABBREVIATION MARK + {0x0710, 0x0710, prALetter}, // Lo SYRIAC LETTER ALAPH + {0x0711, 0x0711, prExtend}, // Mn SYRIAC LETTER SUPERSCRIPT ALAPH + {0x0712, 0x072F, prALetter}, // Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH + {0x0730, 0x074A, prExtend}, // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH + {0x074D, 0x07A5, prALetter}, // Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU + {0x07A6, 0x07B0, prExtend}, // Mn [11] THAANA ABAFILI..THAANA SUKUN + {0x07B1, 0x07B1, prALetter}, // Lo THAANA LETTER NAA + {0x07C0, 0x07C9, prNumeric}, // Nd [10] NKO DIGIT ZERO..NKO DIGIT NINE + {0x07CA, 0x07EA, prALetter}, // Lo [33] NKO LETTER A..NKO LETTER JONA RA + {0x07EB, 0x07F3, prExtend}, // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE + {0x07F4, 0x07F5, prALetter}, // Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE + {0x07F8, 0x07F8, prMidNum}, // Po NKO COMMA + {0x07FA, 0x07FA, prALetter}, // Lm NKO LAJANYALAN + {0x07FD, 0x07FD, prExtend}, // Mn NKO DANTAYALAN + {0x0800, 0x0815, prALetter}, // Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF + {0x0816, 0x0819, prExtend}, // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH + {0x081A, 0x081A, prALetter}, // Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT + {0x081B, 0x0823, prExtend}, // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A + {0x0824, 0x0824, prALetter}, // Lm SAMARITAN MODIFIER LETTER SHORT A + {0x0825, 0x0827, prExtend}, // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U + {0x0828, 0x0828, prALetter}, // Lm SAMARITAN MODIFIER LETTER I + {0x0829, 0x082D, prExtend}, // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA + {0x0840, 0x0858, prALetter}, // Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN + {0x0859, 0x085B, prExtend}, // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK + {0x0860, 0x086A, prALetter}, // Lo [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA + {0x0870, 0x0887, prALetter}, // Lo [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT + {0x0889, 0x088E, prALetter}, // Lo [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL + {0x0890, 0x0891, prFormat}, // Cf [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE + {0x0898, 0x089F, prExtend}, // Mn [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA + {0x08A0, 0x08C8, prALetter}, // Lo [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF + {0x08C9, 0x08C9, prALetter}, // Lm ARABIC SMALL FARSI YEH + {0x08CA, 0x08E1, prExtend}, // Mn [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA + {0x08E2, 0x08E2, prFormat}, // Cf ARABIC DISPUTED END OF AYAH + {0x08E3, 0x0902, prExtend}, // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA + {0x0903, 0x0903, prExtend}, // Mc DEVANAGARI SIGN VISARGA + {0x0904, 0x0939, prALetter}, // Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA + {0x093A, 0x093A, prExtend}, // Mn DEVANAGARI VOWEL SIGN OE + {0x093B, 0x093B, prExtend}, // Mc DEVANAGARI VOWEL SIGN OOE + {0x093C, 0x093C, prExtend}, // Mn DEVANAGARI SIGN NUKTA + {0x093D, 0x093D, prALetter}, // Lo DEVANAGARI SIGN AVAGRAHA + {0x093E, 0x0940, prExtend}, // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II + {0x0941, 0x0948, prExtend}, // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI + {0x0949, 0x094C, prExtend}, // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU + {0x094D, 0x094D, prExtend}, // Mn DEVANAGARI SIGN VIRAMA + {0x094E, 0x094F, prExtend}, // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW + {0x0950, 0x0950, prALetter}, // Lo DEVANAGARI OM + {0x0951, 0x0957, prExtend}, // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE + {0x0958, 0x0961, prALetter}, // Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL + {0x0962, 0x0963, prExtend}, // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL + {0x0966, 0x096F, prNumeric}, // Nd [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE + {0x0971, 0x0971, prALetter}, // Lm DEVANAGARI SIGN HIGH SPACING DOT + {0x0972, 0x0980, prALetter}, // Lo [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI + {0x0981, 0x0981, prExtend}, // Mn BENGALI SIGN CANDRABINDU + {0x0982, 0x0983, prExtend}, // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA + {0x0985, 0x098C, prALetter}, // Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L + {0x098F, 0x0990, prALetter}, // Lo [2] BENGALI LETTER E..BENGALI LETTER AI + {0x0993, 0x09A8, prALetter}, // Lo [22] BENGALI LETTER O..BENGALI LETTER NA + {0x09AA, 0x09B0, prALetter}, // Lo [7] BENGALI LETTER PA..BENGALI LETTER RA + {0x09B2, 0x09B2, prALetter}, // Lo BENGALI LETTER LA + {0x09B6, 0x09B9, prALetter}, // Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA + {0x09BC, 0x09BC, prExtend}, // Mn BENGALI SIGN NUKTA + {0x09BD, 0x09BD, prALetter}, // Lo BENGALI SIGN AVAGRAHA + {0x09BE, 0x09C0, prExtend}, // Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II + {0x09C1, 0x09C4, prExtend}, // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR + {0x09C7, 0x09C8, prExtend}, // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI + {0x09CB, 0x09CC, prExtend}, // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU + {0x09CD, 0x09CD, prExtend}, // Mn BENGALI SIGN VIRAMA + {0x09CE, 0x09CE, prALetter}, // Lo BENGALI LETTER KHANDA TA + {0x09D7, 0x09D7, prExtend}, // Mc BENGALI AU LENGTH MARK + {0x09DC, 0x09DD, prALetter}, // Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA + {0x09DF, 0x09E1, prALetter}, // Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL + {0x09E2, 0x09E3, prExtend}, // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL + {0x09E6, 0x09EF, prNumeric}, // Nd [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE + {0x09F0, 0x09F1, prALetter}, // Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL + {0x09FC, 0x09FC, prALetter}, // Lo BENGALI LETTER VEDIC ANUSVARA + {0x09FE, 0x09FE, prExtend}, // Mn BENGALI SANDHI MARK + {0x0A01, 0x0A02, prExtend}, // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI + {0x0A03, 0x0A03, prExtend}, // Mc GURMUKHI SIGN VISARGA + {0x0A05, 0x0A0A, prALetter}, // Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU + {0x0A0F, 0x0A10, prALetter}, // Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI + {0x0A13, 0x0A28, prALetter}, // Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA + {0x0A2A, 0x0A30, prALetter}, // Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA + {0x0A32, 0x0A33, prALetter}, // Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA + {0x0A35, 0x0A36, prALetter}, // Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA + {0x0A38, 0x0A39, prALetter}, // Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA + {0x0A3C, 0x0A3C, prExtend}, // Mn GURMUKHI SIGN NUKTA + {0x0A3E, 0x0A40, prExtend}, // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II + {0x0A41, 0x0A42, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU + {0x0A47, 0x0A48, prExtend}, // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI + {0x0A4B, 0x0A4D, prExtend}, // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA + {0x0A51, 0x0A51, prExtend}, // Mn GURMUKHI SIGN UDAAT + {0x0A59, 0x0A5C, prALetter}, // Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA + {0x0A5E, 0x0A5E, prALetter}, // Lo GURMUKHI LETTER FA + {0x0A66, 0x0A6F, prNumeric}, // Nd [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE + {0x0A70, 0x0A71, prExtend}, // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK + {0x0A72, 0x0A74, prALetter}, // Lo [3] GURMUKHI IRI..GURMUKHI EK ONKAR + {0x0A75, 0x0A75, prExtend}, // Mn GURMUKHI SIGN YAKASH + {0x0A81, 0x0A82, prExtend}, // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA + {0x0A83, 0x0A83, prExtend}, // Mc GUJARATI SIGN VISARGA + {0x0A85, 0x0A8D, prALetter}, // Lo [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E + {0x0A8F, 0x0A91, prALetter}, // Lo [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O + {0x0A93, 0x0AA8, prALetter}, // Lo [22] GUJARATI LETTER O..GUJARATI LETTER NA + {0x0AAA, 0x0AB0, prALetter}, // Lo [7] GUJARATI LETTER PA..GUJARATI LETTER RA + {0x0AB2, 0x0AB3, prALetter}, // Lo [2] GUJARATI LETTER LA..GUJARATI LETTER LLA + {0x0AB5, 0x0AB9, prALetter}, // Lo [5] GUJARATI LETTER VA..GUJARATI LETTER HA + {0x0ABC, 0x0ABC, prExtend}, // Mn GUJARATI SIGN NUKTA + {0x0ABD, 0x0ABD, prALetter}, // Lo GUJARATI SIGN AVAGRAHA + {0x0ABE, 0x0AC0, prExtend}, // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II + {0x0AC1, 0x0AC5, prExtend}, // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E + {0x0AC7, 0x0AC8, prExtend}, // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI + {0x0AC9, 0x0AC9, prExtend}, // Mc GUJARATI VOWEL SIGN CANDRA O + {0x0ACB, 0x0ACC, prExtend}, // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU + {0x0ACD, 0x0ACD, prExtend}, // Mn GUJARATI SIGN VIRAMA + {0x0AD0, 0x0AD0, prALetter}, // Lo GUJARATI OM + {0x0AE0, 0x0AE1, prALetter}, // Lo [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL + {0x0AE2, 0x0AE3, prExtend}, // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL + {0x0AE6, 0x0AEF, prNumeric}, // Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE + {0x0AF9, 0x0AF9, prALetter}, // Lo GUJARATI LETTER ZHA + {0x0AFA, 0x0AFF, prExtend}, // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE + {0x0B01, 0x0B01, prExtend}, // Mn ORIYA SIGN CANDRABINDU + {0x0B02, 0x0B03, prExtend}, // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA + {0x0B05, 0x0B0C, prALetter}, // Lo [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L + {0x0B0F, 0x0B10, prALetter}, // Lo [2] ORIYA LETTER E..ORIYA LETTER AI + {0x0B13, 0x0B28, prALetter}, // Lo [22] ORIYA LETTER O..ORIYA LETTER NA + {0x0B2A, 0x0B30, prALetter}, // Lo [7] ORIYA LETTER PA..ORIYA LETTER RA + {0x0B32, 0x0B33, prALetter}, // Lo [2] ORIYA LETTER LA..ORIYA LETTER LLA + {0x0B35, 0x0B39, prALetter}, // Lo [5] ORIYA LETTER VA..ORIYA LETTER HA + {0x0B3C, 0x0B3C, prExtend}, // Mn ORIYA SIGN NUKTA + {0x0B3D, 0x0B3D, prALetter}, // Lo ORIYA SIGN AVAGRAHA + {0x0B3E, 0x0B3E, prExtend}, // Mc ORIYA VOWEL SIGN AA + {0x0B3F, 0x0B3F, prExtend}, // Mn ORIYA VOWEL SIGN I + {0x0B40, 0x0B40, prExtend}, // Mc ORIYA VOWEL SIGN II + {0x0B41, 0x0B44, prExtend}, // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR + {0x0B47, 0x0B48, prExtend}, // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI + {0x0B4B, 0x0B4C, prExtend}, // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU + {0x0B4D, 0x0B4D, prExtend}, // Mn ORIYA SIGN VIRAMA + {0x0B55, 0x0B56, prExtend}, // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK + {0x0B57, 0x0B57, prExtend}, // Mc ORIYA AU LENGTH MARK + {0x0B5C, 0x0B5D, prALetter}, // Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA + {0x0B5F, 0x0B61, prALetter}, // Lo [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL + {0x0B62, 0x0B63, prExtend}, // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL + {0x0B66, 0x0B6F, prNumeric}, // Nd [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE + {0x0B71, 0x0B71, prALetter}, // Lo ORIYA LETTER WA + {0x0B82, 0x0B82, prExtend}, // Mn TAMIL SIGN ANUSVARA + {0x0B83, 0x0B83, prALetter}, // Lo TAMIL SIGN VISARGA + {0x0B85, 0x0B8A, prALetter}, // Lo [6] TAMIL LETTER A..TAMIL LETTER UU + {0x0B8E, 0x0B90, prALetter}, // Lo [3] TAMIL LETTER E..TAMIL LETTER AI + {0x0B92, 0x0B95, prALetter}, // Lo [4] TAMIL LETTER O..TAMIL LETTER KA + {0x0B99, 0x0B9A, prALetter}, // Lo [2] TAMIL LETTER NGA..TAMIL LETTER CA + {0x0B9C, 0x0B9C, prALetter}, // Lo TAMIL LETTER JA + {0x0B9E, 0x0B9F, prALetter}, // Lo [2] TAMIL LETTER NYA..TAMIL LETTER TTA + {0x0BA3, 0x0BA4, prALetter}, // Lo [2] TAMIL LETTER NNA..TAMIL LETTER TA + {0x0BA8, 0x0BAA, prALetter}, // Lo [3] TAMIL LETTER NA..TAMIL LETTER PA + {0x0BAE, 0x0BB9, prALetter}, // Lo [12] TAMIL LETTER MA..TAMIL LETTER HA + {0x0BBE, 0x0BBF, prExtend}, // Mc [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I + {0x0BC0, 0x0BC0, prExtend}, // Mn TAMIL VOWEL SIGN II + {0x0BC1, 0x0BC2, prExtend}, // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU + {0x0BC6, 0x0BC8, prExtend}, // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI + {0x0BCA, 0x0BCC, prExtend}, // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU + {0x0BCD, 0x0BCD, prExtend}, // Mn TAMIL SIGN VIRAMA + {0x0BD0, 0x0BD0, prALetter}, // Lo TAMIL OM + {0x0BD7, 0x0BD7, prExtend}, // Mc TAMIL AU LENGTH MARK + {0x0BE6, 0x0BEF, prNumeric}, // Nd [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE + {0x0C00, 0x0C00, prExtend}, // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE + {0x0C01, 0x0C03, prExtend}, // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA + {0x0C04, 0x0C04, prExtend}, // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE + {0x0C05, 0x0C0C, prALetter}, // Lo [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L + {0x0C0E, 0x0C10, prALetter}, // Lo [3] TELUGU LETTER E..TELUGU LETTER AI + {0x0C12, 0x0C28, prALetter}, // Lo [23] TELUGU LETTER O..TELUGU LETTER NA + {0x0C2A, 0x0C39, prALetter}, // Lo [16] TELUGU LETTER PA..TELUGU LETTER HA + {0x0C3C, 0x0C3C, prExtend}, // Mn TELUGU SIGN NUKTA + {0x0C3D, 0x0C3D, prALetter}, // Lo TELUGU SIGN AVAGRAHA + {0x0C3E, 0x0C40, prExtend}, // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II + {0x0C41, 0x0C44, prExtend}, // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR + {0x0C46, 0x0C48, prExtend}, // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI + {0x0C4A, 0x0C4D, prExtend}, // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA + {0x0C55, 0x0C56, prExtend}, // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK + {0x0C58, 0x0C5A, prALetter}, // Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA + {0x0C5D, 0x0C5D, prALetter}, // Lo TELUGU LETTER NAKAARA POLLU + {0x0C60, 0x0C61, prALetter}, // Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL + {0x0C62, 0x0C63, prExtend}, // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL + {0x0C66, 0x0C6F, prNumeric}, // Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE + {0x0C80, 0x0C80, prALetter}, // Lo KANNADA SIGN SPACING CANDRABINDU + {0x0C81, 0x0C81, prExtend}, // Mn KANNADA SIGN CANDRABINDU + {0x0C82, 0x0C83, prExtend}, // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA + {0x0C85, 0x0C8C, prALetter}, // Lo [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L + {0x0C8E, 0x0C90, prALetter}, // Lo [3] KANNADA LETTER E..KANNADA LETTER AI + {0x0C92, 0x0CA8, prALetter}, // Lo [23] KANNADA LETTER O..KANNADA LETTER NA + {0x0CAA, 0x0CB3, prALetter}, // Lo [10] KANNADA LETTER PA..KANNADA LETTER LLA + {0x0CB5, 0x0CB9, prALetter}, // Lo [5] KANNADA LETTER VA..KANNADA LETTER HA + {0x0CBC, 0x0CBC, prExtend}, // Mn KANNADA SIGN NUKTA + {0x0CBD, 0x0CBD, prALetter}, // Lo KANNADA SIGN AVAGRAHA + {0x0CBE, 0x0CBE, prExtend}, // Mc KANNADA VOWEL SIGN AA + {0x0CBF, 0x0CBF, prExtend}, // Mn KANNADA VOWEL SIGN I + {0x0CC0, 0x0CC4, prExtend}, // Mc [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR + {0x0CC6, 0x0CC6, prExtend}, // Mn KANNADA VOWEL SIGN E + {0x0CC7, 0x0CC8, prExtend}, // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI + {0x0CCA, 0x0CCB, prExtend}, // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO + {0x0CCC, 0x0CCD, prExtend}, // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA + {0x0CD5, 0x0CD6, prExtend}, // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK + {0x0CDD, 0x0CDE, prALetter}, // Lo [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA + {0x0CE0, 0x0CE1, prALetter}, // Lo [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL + {0x0CE2, 0x0CE3, prExtend}, // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL + {0x0CE6, 0x0CEF, prNumeric}, // Nd [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE + {0x0CF1, 0x0CF2, prALetter}, // Lo [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA + {0x0CF3, 0x0CF3, prExtend}, // Mc KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT + {0x0D00, 0x0D01, prExtend}, // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU + {0x0D02, 0x0D03, prExtend}, // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA + {0x0D04, 0x0D0C, prALetter}, // Lo [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L + {0x0D0E, 0x0D10, prALetter}, // Lo [3] MALAYALAM LETTER E..MALAYALAM LETTER AI + {0x0D12, 0x0D3A, prALetter}, // Lo [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA + {0x0D3B, 0x0D3C, prExtend}, // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA + {0x0D3D, 0x0D3D, prALetter}, // Lo MALAYALAM SIGN AVAGRAHA + {0x0D3E, 0x0D40, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II + {0x0D41, 0x0D44, prExtend}, // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR + {0x0D46, 0x0D48, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI + {0x0D4A, 0x0D4C, prExtend}, // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU + {0x0D4D, 0x0D4D, prExtend}, // Mn MALAYALAM SIGN VIRAMA + {0x0D4E, 0x0D4E, prALetter}, // Lo MALAYALAM LETTER DOT REPH + {0x0D54, 0x0D56, prALetter}, // Lo [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL + {0x0D57, 0x0D57, prExtend}, // Mc MALAYALAM AU LENGTH MARK + {0x0D5F, 0x0D61, prALetter}, // Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL + {0x0D62, 0x0D63, prExtend}, // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL + {0x0D66, 0x0D6F, prNumeric}, // Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE + {0x0D7A, 0x0D7F, prALetter}, // Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K + {0x0D81, 0x0D81, prExtend}, // Mn SINHALA SIGN CANDRABINDU + {0x0D82, 0x0D83, prExtend}, // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA + {0x0D85, 0x0D96, prALetter}, // Lo [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA + {0x0D9A, 0x0DB1, prALetter}, // Lo [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA + {0x0DB3, 0x0DBB, prALetter}, // Lo [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA + {0x0DBD, 0x0DBD, prALetter}, // Lo SINHALA LETTER DANTAJA LAYANNA + {0x0DC0, 0x0DC6, prALetter}, // Lo [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA + {0x0DCA, 0x0DCA, prExtend}, // Mn SINHALA SIGN AL-LAKUNA + {0x0DCF, 0x0DD1, prExtend}, // Mc [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA + {0x0DD2, 0x0DD4, prExtend}, // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA + {0x0DD6, 0x0DD6, prExtend}, // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA + {0x0DD8, 0x0DDF, prExtend}, // Mc [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA + {0x0DE6, 0x0DEF, prNumeric}, // Nd [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE + {0x0DF2, 0x0DF3, prExtend}, // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA + {0x0E31, 0x0E31, prExtend}, // Mn THAI CHARACTER MAI HAN-AKAT + {0x0E34, 0x0E3A, prExtend}, // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU + {0x0E47, 0x0E4E, prExtend}, // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN + {0x0E50, 0x0E59, prNumeric}, // Nd [10] THAI DIGIT ZERO..THAI DIGIT NINE + {0x0EB1, 0x0EB1, prExtend}, // Mn LAO VOWEL SIGN MAI KAN + {0x0EB4, 0x0EBC, prExtend}, // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO + {0x0EC8, 0x0ECE, prExtend}, // Mn [7] LAO TONE MAI EK..LAO YAMAKKAN + {0x0ED0, 0x0ED9, prNumeric}, // Nd [10] LAO DIGIT ZERO..LAO DIGIT NINE + {0x0F00, 0x0F00, prALetter}, // Lo TIBETAN SYLLABLE OM + {0x0F18, 0x0F19, prExtend}, // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS + {0x0F20, 0x0F29, prNumeric}, // Nd [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE + {0x0F35, 0x0F35, prExtend}, // Mn TIBETAN MARK NGAS BZUNG NYI ZLA + {0x0F37, 0x0F37, prExtend}, // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS + {0x0F39, 0x0F39, prExtend}, // Mn TIBETAN MARK TSA -PHRU + {0x0F3E, 0x0F3F, prExtend}, // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES + {0x0F40, 0x0F47, prALetter}, // Lo [8] TIBETAN LETTER KA..TIBETAN LETTER JA + {0x0F49, 0x0F6C, prALetter}, // Lo [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA + {0x0F71, 0x0F7E, prExtend}, // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO + {0x0F7F, 0x0F7F, prExtend}, // Mc TIBETAN SIGN RNAM BCAD + {0x0F80, 0x0F84, prExtend}, // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA + {0x0F86, 0x0F87, prExtend}, // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS + {0x0F88, 0x0F8C, prALetter}, // Lo [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN + {0x0F8D, 0x0F97, prExtend}, // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA + {0x0F99, 0x0FBC, prExtend}, // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA + {0x0FC6, 0x0FC6, prExtend}, // Mn TIBETAN SYMBOL PADMA GDAN + {0x102B, 0x102C, prExtend}, // Mc [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA + {0x102D, 0x1030, prExtend}, // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU + {0x1031, 0x1031, prExtend}, // Mc MYANMAR VOWEL SIGN E + {0x1032, 0x1037, prExtend}, // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW + {0x1038, 0x1038, prExtend}, // Mc MYANMAR SIGN VISARGA + {0x1039, 0x103A, prExtend}, // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT + {0x103B, 0x103C, prExtend}, // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA + {0x103D, 0x103E, prExtend}, // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA + {0x1040, 0x1049, prNumeric}, // Nd [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE + {0x1056, 0x1057, prExtend}, // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR + {0x1058, 0x1059, prExtend}, // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL + {0x105E, 0x1060, prExtend}, // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA + {0x1062, 0x1064, prExtend}, // Mc [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO + {0x1067, 0x106D, prExtend}, // Mc [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5 + {0x1071, 0x1074, prExtend}, // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE + {0x1082, 0x1082, prExtend}, // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA + {0x1083, 0x1084, prExtend}, // Mc [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E + {0x1085, 0x1086, prExtend}, // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y + {0x1087, 0x108C, prExtend}, // Mc [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3 + {0x108D, 0x108D, prExtend}, // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE + {0x108F, 0x108F, prExtend}, // Mc MYANMAR SIGN RUMAI PALAUNG TONE-5 + {0x1090, 0x1099, prNumeric}, // Nd [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE + {0x109A, 0x109C, prExtend}, // Mc [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A + {0x109D, 0x109D, prExtend}, // Mn MYANMAR VOWEL SIGN AITON AI + {0x10A0, 0x10C5, prALetter}, // L& [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE + {0x10C7, 0x10C7, prALetter}, // L& GEORGIAN CAPITAL LETTER YN + {0x10CD, 0x10CD, prALetter}, // L& GEORGIAN CAPITAL LETTER AEN + {0x10D0, 0x10FA, prALetter}, // L& [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN + {0x10FC, 0x10FC, prALetter}, // Lm MODIFIER LETTER GEORGIAN NAR + {0x10FD, 0x10FF, prALetter}, // L& [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN + {0x1100, 0x1248, prALetter}, // Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA + {0x124A, 0x124D, prALetter}, // Lo [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE + {0x1250, 0x1256, prALetter}, // Lo [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO + {0x1258, 0x1258, prALetter}, // Lo ETHIOPIC SYLLABLE QHWA + {0x125A, 0x125D, prALetter}, // Lo [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE + {0x1260, 0x1288, prALetter}, // Lo [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA + {0x128A, 0x128D, prALetter}, // Lo [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE + {0x1290, 0x12B0, prALetter}, // Lo [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA + {0x12B2, 0x12B5, prALetter}, // Lo [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE + {0x12B8, 0x12BE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO + {0x12C0, 0x12C0, prALetter}, // Lo ETHIOPIC SYLLABLE KXWA + {0x12C2, 0x12C5, prALetter}, // Lo [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE + {0x12C8, 0x12D6, prALetter}, // Lo [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O + {0x12D8, 0x1310, prALetter}, // Lo [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA + {0x1312, 0x1315, prALetter}, // Lo [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE + {0x1318, 0x135A, prALetter}, // Lo [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA + {0x135D, 0x135F, prExtend}, // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK + {0x1380, 0x138F, prALetter}, // Lo [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE + {0x13A0, 0x13F5, prALetter}, // L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV + {0x13F8, 0x13FD, prALetter}, // L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV + {0x1401, 0x166C, prALetter}, // Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA + {0x166F, 0x167F, prALetter}, // Lo [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W + {0x1680, 0x1680, prWSegSpace}, // Zs OGHAM SPACE MARK + {0x1681, 0x169A, prALetter}, // Lo [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH + {0x16A0, 0x16EA, prALetter}, // Lo [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X + {0x16EE, 0x16F0, prALetter}, // Nl [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL + {0x16F1, 0x16F8, prALetter}, // Lo [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC + {0x1700, 0x1711, prALetter}, // Lo [18] TAGALOG LETTER A..TAGALOG LETTER HA + {0x1712, 0x1714, prExtend}, // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA + {0x1715, 0x1715, prExtend}, // Mc TAGALOG SIGN PAMUDPOD + {0x171F, 0x1731, prALetter}, // Lo [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA + {0x1732, 0x1733, prExtend}, // Mn [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U + {0x1734, 0x1734, prExtend}, // Mc HANUNOO SIGN PAMUDPOD + {0x1740, 0x1751, prALetter}, // Lo [18] BUHID LETTER A..BUHID LETTER HA + {0x1752, 0x1753, prExtend}, // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U + {0x1760, 0x176C, prALetter}, // Lo [13] TAGBANWA LETTER A..TAGBANWA LETTER YA + {0x176E, 0x1770, prALetter}, // Lo [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA + {0x1772, 0x1773, prExtend}, // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U + {0x17B4, 0x17B5, prExtend}, // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA + {0x17B6, 0x17B6, prExtend}, // Mc KHMER VOWEL SIGN AA + {0x17B7, 0x17BD, prExtend}, // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA + {0x17BE, 0x17C5, prExtend}, // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU + {0x17C6, 0x17C6, prExtend}, // Mn KHMER SIGN NIKAHIT + {0x17C7, 0x17C8, prExtend}, // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU + {0x17C9, 0x17D3, prExtend}, // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT + {0x17DD, 0x17DD, prExtend}, // Mn KHMER SIGN ATTHACAN + {0x17E0, 0x17E9, prNumeric}, // Nd [10] KHMER DIGIT ZERO..KHMER DIGIT NINE + {0x180B, 0x180D, prExtend}, // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE + {0x180E, 0x180E, prFormat}, // Cf MONGOLIAN VOWEL SEPARATOR + {0x180F, 0x180F, prExtend}, // Mn MONGOLIAN FREE VARIATION SELECTOR FOUR + {0x1810, 0x1819, prNumeric}, // Nd [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE + {0x1820, 0x1842, prALetter}, // Lo [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI + {0x1843, 0x1843, prALetter}, // Lm MONGOLIAN LETTER TODO LONG VOWEL SIGN + {0x1844, 0x1878, prALetter}, // Lo [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS + {0x1880, 0x1884, prALetter}, // Lo [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA + {0x1885, 0x1886, prExtend}, // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA + {0x1887, 0x18A8, prALetter}, // Lo [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA + {0x18A9, 0x18A9, prExtend}, // Mn MONGOLIAN LETTER ALI GALI DAGALGA + {0x18AA, 0x18AA, prALetter}, // Lo MONGOLIAN LETTER MANCHU ALI GALI LHA + {0x18B0, 0x18F5, prALetter}, // Lo [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S + {0x1900, 0x191E, prALetter}, // Lo [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA + {0x1920, 0x1922, prExtend}, // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U + {0x1923, 0x1926, prExtend}, // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU + {0x1927, 0x1928, prExtend}, // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O + {0x1929, 0x192B, prExtend}, // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA + {0x1930, 0x1931, prExtend}, // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA + {0x1932, 0x1932, prExtend}, // Mn LIMBU SMALL LETTER ANUSVARA + {0x1933, 0x1938, prExtend}, // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA + {0x1939, 0x193B, prExtend}, // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I + {0x1946, 0x194F, prNumeric}, // Nd [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE + {0x19D0, 0x19D9, prNumeric}, // Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE + {0x1A00, 0x1A16, prALetter}, // Lo [23] BUGINESE LETTER KA..BUGINESE LETTER HA + {0x1A17, 0x1A18, prExtend}, // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U + {0x1A19, 0x1A1A, prExtend}, // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O + {0x1A1B, 0x1A1B, prExtend}, // Mn BUGINESE VOWEL SIGN AE + {0x1A55, 0x1A55, prExtend}, // Mc TAI THAM CONSONANT SIGN MEDIAL RA + {0x1A56, 0x1A56, prExtend}, // Mn TAI THAM CONSONANT SIGN MEDIAL LA + {0x1A57, 0x1A57, prExtend}, // Mc TAI THAM CONSONANT SIGN LA TANG LAI + {0x1A58, 0x1A5E, prExtend}, // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA + {0x1A60, 0x1A60, prExtend}, // Mn TAI THAM SIGN SAKOT + {0x1A61, 0x1A61, prExtend}, // Mc TAI THAM VOWEL SIGN A + {0x1A62, 0x1A62, prExtend}, // Mn TAI THAM VOWEL SIGN MAI SAT + {0x1A63, 0x1A64, prExtend}, // Mc [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA + {0x1A65, 0x1A6C, prExtend}, // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW + {0x1A6D, 0x1A72, prExtend}, // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI + {0x1A73, 0x1A7C, prExtend}, // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN + {0x1A7F, 0x1A7F, prExtend}, // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT + {0x1A80, 0x1A89, prNumeric}, // Nd [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE + {0x1A90, 0x1A99, prNumeric}, // Nd [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE + {0x1AB0, 0x1ABD, prExtend}, // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW + {0x1ABE, 0x1ABE, prExtend}, // Me COMBINING PARENTHESES OVERLAY + {0x1ABF, 0x1ACE, prExtend}, // Mn [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T + {0x1B00, 0x1B03, prExtend}, // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG + {0x1B04, 0x1B04, prExtend}, // Mc BALINESE SIGN BISAH + {0x1B05, 0x1B33, prALetter}, // Lo [47] BALINESE LETTER AKARA..BALINESE LETTER HA + {0x1B34, 0x1B34, prExtend}, // Mn BALINESE SIGN REREKAN + {0x1B35, 0x1B35, prExtend}, // Mc BALINESE VOWEL SIGN TEDUNG + {0x1B36, 0x1B3A, prExtend}, // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA + {0x1B3B, 0x1B3B, prExtend}, // Mc BALINESE VOWEL SIGN RA REPA TEDUNG + {0x1B3C, 0x1B3C, prExtend}, // Mn BALINESE VOWEL SIGN LA LENGA + {0x1B3D, 0x1B41, prExtend}, // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG + {0x1B42, 0x1B42, prExtend}, // Mn BALINESE VOWEL SIGN PEPET + {0x1B43, 0x1B44, prExtend}, // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG + {0x1B45, 0x1B4C, prALetter}, // Lo [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA + {0x1B50, 0x1B59, prNumeric}, // Nd [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE + {0x1B6B, 0x1B73, prExtend}, // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG + {0x1B80, 0x1B81, prExtend}, // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR + {0x1B82, 0x1B82, prExtend}, // Mc SUNDANESE SIGN PANGWISAD + {0x1B83, 0x1BA0, prALetter}, // Lo [30] SUNDANESE LETTER A..SUNDANESE LETTER HA + {0x1BA1, 0x1BA1, prExtend}, // Mc SUNDANESE CONSONANT SIGN PAMINGKAL + {0x1BA2, 0x1BA5, prExtend}, // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU + {0x1BA6, 0x1BA7, prExtend}, // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG + {0x1BA8, 0x1BA9, prExtend}, // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG + {0x1BAA, 0x1BAA, prExtend}, // Mc SUNDANESE SIGN PAMAAEH + {0x1BAB, 0x1BAD, prExtend}, // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA + {0x1BAE, 0x1BAF, prALetter}, // Lo [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA + {0x1BB0, 0x1BB9, prNumeric}, // Nd [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE + {0x1BBA, 0x1BE5, prALetter}, // Lo [44] SUNDANESE AVAGRAHA..BATAK LETTER U + {0x1BE6, 0x1BE6, prExtend}, // Mn BATAK SIGN TOMPI + {0x1BE7, 0x1BE7, prExtend}, // Mc BATAK VOWEL SIGN E + {0x1BE8, 0x1BE9, prExtend}, // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE + {0x1BEA, 0x1BEC, prExtend}, // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O + {0x1BED, 0x1BED, prExtend}, // Mn BATAK VOWEL SIGN KARO O + {0x1BEE, 0x1BEE, prExtend}, // Mc BATAK VOWEL SIGN U + {0x1BEF, 0x1BF1, prExtend}, // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H + {0x1BF2, 0x1BF3, prExtend}, // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN + {0x1C00, 0x1C23, prALetter}, // Lo [36] LEPCHA LETTER KA..LEPCHA LETTER A + {0x1C24, 0x1C2B, prExtend}, // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU + {0x1C2C, 0x1C33, prExtend}, // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T + {0x1C34, 0x1C35, prExtend}, // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG + {0x1C36, 0x1C37, prExtend}, // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA + {0x1C40, 0x1C49, prNumeric}, // Nd [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE + {0x1C4D, 0x1C4F, prALetter}, // Lo [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA + {0x1C50, 0x1C59, prNumeric}, // Nd [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE + {0x1C5A, 0x1C77, prALetter}, // Lo [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH + {0x1C78, 0x1C7D, prALetter}, // Lm [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD + {0x1C80, 0x1C88, prALetter}, // L& [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK + {0x1C90, 0x1CBA, prALetter}, // L& [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN + {0x1CBD, 0x1CBF, prALetter}, // L& [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN + {0x1CD0, 0x1CD2, prExtend}, // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA + {0x1CD4, 0x1CE0, prExtend}, // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA + {0x1CE1, 0x1CE1, prExtend}, // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA + {0x1CE2, 0x1CE8, prExtend}, // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL + {0x1CE9, 0x1CEC, prALetter}, // Lo [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL + {0x1CED, 0x1CED, prExtend}, // Mn VEDIC SIGN TIRYAK + {0x1CEE, 0x1CF3, prALetter}, // Lo [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA + {0x1CF4, 0x1CF4, prExtend}, // Mn VEDIC TONE CANDRA ABOVE + {0x1CF5, 0x1CF6, prALetter}, // Lo [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA + {0x1CF7, 0x1CF7, prExtend}, // Mc VEDIC SIGN ATIKRAMA + {0x1CF8, 0x1CF9, prExtend}, // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE + {0x1CFA, 0x1CFA, prALetter}, // Lo VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA + {0x1D00, 0x1D2B, prALetter}, // L& [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL + {0x1D2C, 0x1D6A, prALetter}, // Lm [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI + {0x1D6B, 0x1D77, prALetter}, // L& [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G + {0x1D78, 0x1D78, prALetter}, // Lm MODIFIER LETTER CYRILLIC EN + {0x1D79, 0x1D9A, prALetter}, // L& [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK + {0x1D9B, 0x1DBF, prALetter}, // Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA + {0x1DC0, 0x1DFF, prExtend}, // Mn [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW + {0x1E00, 0x1F15, prALetter}, // L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA + {0x1F18, 0x1F1D, prALetter}, // L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA + {0x1F20, 0x1F45, prALetter}, // L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA + {0x1F48, 0x1F4D, prALetter}, // L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA + {0x1F50, 0x1F57, prALetter}, // L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI + {0x1F59, 0x1F59, prALetter}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA + {0x1F5B, 0x1F5B, prALetter}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA + {0x1F5D, 0x1F5D, prALetter}, // L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA + {0x1F5F, 0x1F7D, prALetter}, // L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA + {0x1F80, 0x1FB4, prALetter}, // L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI + {0x1FB6, 0x1FBC, prALetter}, // L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI + {0x1FBE, 0x1FBE, prALetter}, // L& GREEK PROSGEGRAMMENI + {0x1FC2, 0x1FC4, prALetter}, // L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI + {0x1FC6, 0x1FCC, prALetter}, // L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI + {0x1FD0, 0x1FD3, prALetter}, // L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA + {0x1FD6, 0x1FDB, prALetter}, // L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA + {0x1FE0, 0x1FEC, prALetter}, // L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA + {0x1FF2, 0x1FF4, prALetter}, // L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI + {0x1FF6, 0x1FFC, prALetter}, // L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI + {0x2000, 0x2006, prWSegSpace}, // Zs [7] EN QUAD..SIX-PER-EM SPACE + {0x2008, 0x200A, prWSegSpace}, // Zs [3] PUNCTUATION SPACE..HAIR SPACE + {0x200C, 0x200C, prExtend}, // Cf ZERO WIDTH NON-JOINER + {0x200D, 0x200D, prZWJ}, // Cf ZERO WIDTH JOINER + {0x200E, 0x200F, prFormat}, // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK + {0x2018, 0x2018, prMidNumLet}, // Pi LEFT SINGLE QUOTATION MARK + {0x2019, 0x2019, prMidNumLet}, // Pf RIGHT SINGLE QUOTATION MARK + {0x2024, 0x2024, prMidNumLet}, // Po ONE DOT LEADER + {0x2027, 0x2027, prMidLetter}, // Po HYPHENATION POINT + {0x2028, 0x2028, prNewline}, // Zl LINE SEPARATOR + {0x2029, 0x2029, prNewline}, // Zp PARAGRAPH SEPARATOR + {0x202A, 0x202E, prFormat}, // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE + {0x202F, 0x202F, prExtendNumLet}, // Zs NARROW NO-BREAK SPACE + {0x203C, 0x203C, prExtendedPictographic}, // E0.6 [1] (‼️) double exclamation mark + {0x203F, 0x2040, prExtendNumLet}, // Pc [2] UNDERTIE..CHARACTER TIE + {0x2044, 0x2044, prMidNum}, // Sm FRACTION SLASH + {0x2049, 0x2049, prExtendedPictographic}, // E0.6 [1] (⁉️) exclamation question mark + {0x2054, 0x2054, prExtendNumLet}, // Pc INVERTED UNDERTIE + {0x205F, 0x205F, prWSegSpace}, // Zs MEDIUM MATHEMATICAL SPACE + {0x2060, 0x2064, prFormat}, // Cf [5] WORD JOINER..INVISIBLE PLUS + {0x2066, 0x206F, prFormat}, // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES + {0x2071, 0x2071, prALetter}, // Lm SUPERSCRIPT LATIN SMALL LETTER I + {0x207F, 0x207F, prALetter}, // Lm SUPERSCRIPT LATIN SMALL LETTER N + {0x2090, 0x209C, prALetter}, // Lm [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T + {0x20D0, 0x20DC, prExtend}, // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE + {0x20DD, 0x20E0, prExtend}, // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH + {0x20E1, 0x20E1, prExtend}, // Mn COMBINING LEFT RIGHT ARROW ABOVE + {0x20E2, 0x20E4, prExtend}, // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE + {0x20E5, 0x20F0, prExtend}, // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE + {0x2102, 0x2102, prALetter}, // L& DOUBLE-STRUCK CAPITAL C + {0x2107, 0x2107, prALetter}, // L& EULER CONSTANT + {0x210A, 0x2113, prALetter}, // L& [10] SCRIPT SMALL G..SCRIPT SMALL L + {0x2115, 0x2115, prALetter}, // L& DOUBLE-STRUCK CAPITAL N + {0x2119, 0x211D, prALetter}, // L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R + {0x2122, 0x2122, prExtendedPictographic}, // E0.6 [1] (™️) trade mark + {0x2124, 0x2124, prALetter}, // L& DOUBLE-STRUCK CAPITAL Z + {0x2126, 0x2126, prALetter}, // L& OHM SIGN + {0x2128, 0x2128, prALetter}, // L& BLACK-LETTER CAPITAL Z + {0x212A, 0x212D, prALetter}, // L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C + {0x212F, 0x2134, prALetter}, // L& [6] SCRIPT SMALL E..SCRIPT SMALL O + {0x2135, 0x2138, prALetter}, // Lo [4] ALEF SYMBOL..DALET SYMBOL + {0x2139, 0x2139, prExtendedPictographic}, // E0.6 [1] (ℹ️) information + {0x2139, 0x2139, prALetter}, // L& INFORMATION SOURCE + {0x213C, 0x213F, prALetter}, // L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI + {0x2145, 0x2149, prALetter}, // L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J + {0x214E, 0x214E, prALetter}, // L& TURNED SMALL F + {0x2160, 0x2182, prALetter}, // Nl [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND + {0x2183, 0x2184, prALetter}, // L& [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C + {0x2185, 0x2188, prALetter}, // Nl [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND + {0x2194, 0x2199, prExtendedPictographic}, // E0.6 [6] (↔️..↙️) left-right arrow..down-left arrow + {0x21A9, 0x21AA, prExtendedPictographic}, // E0.6 [2] (↩️..↪️) right arrow curving left..left arrow curving right + {0x231A, 0x231B, prExtendedPictographic}, // E0.6 [2] (⌚..⌛) watch..hourglass done + {0x2328, 0x2328, prExtendedPictographic}, // E1.0 [1] (⌨️) keyboard + {0x2388, 0x2388, prExtendedPictographic}, // E0.0 [1] (⎈) HELM SYMBOL + {0x23CF, 0x23CF, prExtendedPictographic}, // E1.0 [1] (⏏️) eject button + {0x23E9, 0x23EC, prExtendedPictographic}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button + {0x23ED, 0x23EE, prExtendedPictographic}, // E0.7 [2] (⏭️..⏮️) next track button..last track button + {0x23EF, 0x23EF, prExtendedPictographic}, // E1.0 [1] (⏯️) play or pause button + {0x23F0, 0x23F0, prExtendedPictographic}, // E0.6 [1] (⏰) alarm clock + {0x23F1, 0x23F2, prExtendedPictographic}, // E1.0 [2] (⏱️..⏲️) stopwatch..timer clock + {0x23F3, 0x23F3, prExtendedPictographic}, // E0.6 [1] (⏳) hourglass not done + {0x23F8, 0x23FA, prExtendedPictographic}, // E0.7 [3] (⏸️..⏺️) pause button..record button + {0x24B6, 0x24E9, prALetter}, // So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z + {0x24C2, 0x24C2, prExtendedPictographic}, // E0.6 [1] (Ⓜ️) circled M + {0x25AA, 0x25AB, prExtendedPictographic}, // E0.6 [2] (▪️..▫️) black small square..white small square + {0x25B6, 0x25B6, prExtendedPictographic}, // E0.6 [1] (▶️) play button + {0x25C0, 0x25C0, prExtendedPictographic}, // E0.6 [1] (◀️) reverse button + {0x25FB, 0x25FE, prExtendedPictographic}, // E0.6 [4] (◻️..◾) white medium square..black medium-small square + {0x2600, 0x2601, prExtendedPictographic}, // E0.6 [2] (☀️..☁️) sun..cloud + {0x2602, 0x2603, prExtendedPictographic}, // E0.7 [2] (☂️..☃️) umbrella..snowman + {0x2604, 0x2604, prExtendedPictographic}, // E1.0 [1] (☄️) comet + {0x2605, 0x2605, prExtendedPictographic}, // E0.0 [1] (★) BLACK STAR + {0x2607, 0x260D, prExtendedPictographic}, // E0.0 [7] (☇..☍) LIGHTNING..OPPOSITION + {0x260E, 0x260E, prExtendedPictographic}, // E0.6 [1] (☎️) telephone + {0x260F, 0x2610, prExtendedPictographic}, // E0.0 [2] (☏..☐) WHITE TELEPHONE..BALLOT BOX + {0x2611, 0x2611, prExtendedPictographic}, // E0.6 [1] (☑️) check box with check + {0x2612, 0x2612, prExtendedPictographic}, // E0.0 [1] (☒) BALLOT BOX WITH X + {0x2614, 0x2615, prExtendedPictographic}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage + {0x2616, 0x2617, prExtendedPictographic}, // E0.0 [2] (☖..☗) WHITE SHOGI PIECE..BLACK SHOGI PIECE + {0x2618, 0x2618, prExtendedPictographic}, // E1.0 [1] (☘️) shamrock + {0x2619, 0x261C, prExtendedPictographic}, // E0.0 [4] (☙..☜) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX + {0x261D, 0x261D, prExtendedPictographic}, // E0.6 [1] (☝️) index pointing up + {0x261E, 0x261F, prExtendedPictographic}, // E0.0 [2] (☞..☟) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX + {0x2620, 0x2620, prExtendedPictographic}, // E1.0 [1] (☠️) skull and crossbones + {0x2621, 0x2621, prExtendedPictographic}, // E0.0 [1] (☡) CAUTION SIGN + {0x2622, 0x2623, prExtendedPictographic}, // E1.0 [2] (☢️..☣️) radioactive..biohazard + {0x2624, 0x2625, prExtendedPictographic}, // E0.0 [2] (☤..☥) CADUCEUS..ANKH + {0x2626, 0x2626, prExtendedPictographic}, // E1.0 [1] (☦️) orthodox cross + {0x2627, 0x2629, prExtendedPictographic}, // E0.0 [3] (☧..☩) CHI RHO..CROSS OF JERUSALEM + {0x262A, 0x262A, prExtendedPictographic}, // E0.7 [1] (☪️) star and crescent + {0x262B, 0x262D, prExtendedPictographic}, // E0.0 [3] (☫..☭) FARSI SYMBOL..HAMMER AND SICKLE + {0x262E, 0x262E, prExtendedPictographic}, // E1.0 [1] (☮️) peace symbol + {0x262F, 0x262F, prExtendedPictographic}, // E0.7 [1] (☯️) yin yang + {0x2630, 0x2637, prExtendedPictographic}, // E0.0 [8] (☰..☷) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH + {0x2638, 0x2639, prExtendedPictographic}, // E0.7 [2] (☸️..☹️) wheel of dharma..frowning face + {0x263A, 0x263A, prExtendedPictographic}, // E0.6 [1] (☺️) smiling face + {0x263B, 0x263F, prExtendedPictographic}, // E0.0 [5] (☻..☿) BLACK SMILING FACE..MERCURY + {0x2640, 0x2640, prExtendedPictographic}, // E4.0 [1] (♀️) female sign + {0x2641, 0x2641, prExtendedPictographic}, // E0.0 [1] (♁) EARTH + {0x2642, 0x2642, prExtendedPictographic}, // E4.0 [1] (♂️) male sign + {0x2643, 0x2647, prExtendedPictographic}, // E0.0 [5] (♃..♇) JUPITER..PLUTO + {0x2648, 0x2653, prExtendedPictographic}, // E0.6 [12] (♈..♓) Aries..Pisces + {0x2654, 0x265E, prExtendedPictographic}, // E0.0 [11] (♔..♞) WHITE CHESS KING..BLACK CHESS KNIGHT + {0x265F, 0x265F, prExtendedPictographic}, // E11.0 [1] (♟️) chess pawn + {0x2660, 0x2660, prExtendedPictographic}, // E0.6 [1] (♠️) spade suit + {0x2661, 0x2662, prExtendedPictographic}, // E0.0 [2] (♡..♢) WHITE HEART SUIT..WHITE DIAMOND SUIT + {0x2663, 0x2663, prExtendedPictographic}, // E0.6 [1] (♣️) club suit + {0x2664, 0x2664, prExtendedPictographic}, // E0.0 [1] (♤) WHITE SPADE SUIT + {0x2665, 0x2666, prExtendedPictographic}, // E0.6 [2] (♥️..♦️) heart suit..diamond suit + {0x2667, 0x2667, prExtendedPictographic}, // E0.0 [1] (♧) WHITE CLUB SUIT + {0x2668, 0x2668, prExtendedPictographic}, // E0.6 [1] (♨️) hot springs + {0x2669, 0x267A, prExtendedPictographic}, // E0.0 [18] (♩..♺) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS + {0x267B, 0x267B, prExtendedPictographic}, // E0.6 [1] (♻️) recycling symbol + {0x267C, 0x267D, prExtendedPictographic}, // E0.0 [2] (♼..♽) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL + {0x267E, 0x267E, prExtendedPictographic}, // E11.0 [1] (♾️) infinity + {0x267F, 0x267F, prExtendedPictographic}, // E0.6 [1] (♿) wheelchair symbol + {0x2680, 0x2685, prExtendedPictographic}, // E0.0 [6] (⚀..⚅) DIE FACE-1..DIE FACE-6 + {0x2690, 0x2691, prExtendedPictographic}, // E0.0 [2] (⚐..⚑) WHITE FLAG..BLACK FLAG + {0x2692, 0x2692, prExtendedPictographic}, // E1.0 [1] (⚒️) hammer and pick + {0x2693, 0x2693, prExtendedPictographic}, // E0.6 [1] (⚓) anchor + {0x2694, 0x2694, prExtendedPictographic}, // E1.0 [1] (⚔️) crossed swords + {0x2695, 0x2695, prExtendedPictographic}, // E4.0 [1] (⚕️) medical symbol + {0x2696, 0x2697, prExtendedPictographic}, // E1.0 [2] (⚖️..⚗️) balance scale..alembic + {0x2698, 0x2698, prExtendedPictographic}, // E0.0 [1] (⚘) FLOWER + {0x2699, 0x2699, prExtendedPictographic}, // E1.0 [1] (⚙️) gear + {0x269A, 0x269A, prExtendedPictographic}, // E0.0 [1] (⚚) STAFF OF HERMES + {0x269B, 0x269C, prExtendedPictographic}, // E1.0 [2] (⚛️..⚜️) atom symbol..fleur-de-lis + {0x269D, 0x269F, prExtendedPictographic}, // E0.0 [3] (⚝..⚟) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT + {0x26A0, 0x26A1, prExtendedPictographic}, // E0.6 [2] (⚠️..⚡) warning..high voltage + {0x26A2, 0x26A6, prExtendedPictographic}, // E0.0 [5] (⚢..⚦) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN + {0x26A7, 0x26A7, prExtendedPictographic}, // E13.0 [1] (⚧️) transgender symbol + {0x26A8, 0x26A9, prExtendedPictographic}, // E0.0 [2] (⚨..⚩) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN + {0x26AA, 0x26AB, prExtendedPictographic}, // E0.6 [2] (⚪..⚫) white circle..black circle + {0x26AC, 0x26AF, prExtendedPictographic}, // E0.0 [4] (⚬..⚯) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL + {0x26B0, 0x26B1, prExtendedPictographic}, // E1.0 [2] (⚰️..⚱️) coffin..funeral urn + {0x26B2, 0x26BC, prExtendedPictographic}, // E0.0 [11] (⚲..⚼) NEUTER..SESQUIQUADRATE + {0x26BD, 0x26BE, prExtendedPictographic}, // E0.6 [2] (⚽..⚾) soccer ball..baseball + {0x26BF, 0x26C3, prExtendedPictographic}, // E0.0 [5] (⚿..⛃) SQUARED KEY..BLACK DRAUGHTS KING + {0x26C4, 0x26C5, prExtendedPictographic}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud + {0x26C6, 0x26C7, prExtendedPictographic}, // E0.0 [2] (⛆..⛇) RAIN..BLACK SNOWMAN + {0x26C8, 0x26C8, prExtendedPictographic}, // E0.7 [1] (⛈️) cloud with lightning and rain + {0x26C9, 0x26CD, prExtendedPictographic}, // E0.0 [5] (⛉..⛍) TURNED WHITE SHOGI PIECE..DISABLED CAR + {0x26CE, 0x26CE, prExtendedPictographic}, // E0.6 [1] (⛎) Ophiuchus + {0x26CF, 0x26CF, prExtendedPictographic}, // E0.7 [1] (⛏️) pick + {0x26D0, 0x26D0, prExtendedPictographic}, // E0.0 [1] (⛐) CAR SLIDING + {0x26D1, 0x26D1, prExtendedPictographic}, // E0.7 [1] (⛑️) rescue worker’s helmet + {0x26D2, 0x26D2, prExtendedPictographic}, // E0.0 [1] (⛒) CIRCLED CROSSING LANES + {0x26D3, 0x26D3, prExtendedPictographic}, // E0.7 [1] (⛓️) chains + {0x26D4, 0x26D4, prExtendedPictographic}, // E0.6 [1] (⛔) no entry + {0x26D5, 0x26E8, prExtendedPictographic}, // E0.0 [20] (⛕..⛨) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD + {0x26E9, 0x26E9, prExtendedPictographic}, // E0.7 [1] (⛩️) shinto shrine + {0x26EA, 0x26EA, prExtendedPictographic}, // E0.6 [1] (⛪) church + {0x26EB, 0x26EF, prExtendedPictographic}, // E0.0 [5] (⛫..⛯) CASTLE..MAP SYMBOL FOR LIGHTHOUSE + {0x26F0, 0x26F1, prExtendedPictographic}, // E0.7 [2] (⛰️..⛱️) mountain..umbrella on ground + {0x26F2, 0x26F3, prExtendedPictographic}, // E0.6 [2] (⛲..⛳) fountain..flag in hole + {0x26F4, 0x26F4, prExtendedPictographic}, // E0.7 [1] (⛴️) ferry + {0x26F5, 0x26F5, prExtendedPictographic}, // E0.6 [1] (⛵) sailboat + {0x26F6, 0x26F6, prExtendedPictographic}, // E0.0 [1] (⛶) SQUARE FOUR CORNERS + {0x26F7, 0x26F9, prExtendedPictographic}, // E0.7 [3] (⛷️..⛹️) skier..person bouncing ball + {0x26FA, 0x26FA, prExtendedPictographic}, // E0.6 [1] (⛺) tent + {0x26FB, 0x26FC, prExtendedPictographic}, // E0.0 [2] (⛻..⛼) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL + {0x26FD, 0x26FD, prExtendedPictographic}, // E0.6 [1] (⛽) fuel pump + {0x26FE, 0x2701, prExtendedPictographic}, // E0.0 [4] (⛾..✁) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS + {0x2702, 0x2702, prExtendedPictographic}, // E0.6 [1] (✂️) scissors + {0x2703, 0x2704, prExtendedPictographic}, // E0.0 [2] (✃..✄) LOWER BLADE SCISSORS..WHITE SCISSORS + {0x2705, 0x2705, prExtendedPictographic}, // E0.6 [1] (✅) check mark button + {0x2708, 0x270C, prExtendedPictographic}, // E0.6 [5] (✈️..✌️) airplane..victory hand + {0x270D, 0x270D, prExtendedPictographic}, // E0.7 [1] (✍️) writing hand + {0x270E, 0x270E, prExtendedPictographic}, // E0.0 [1] (✎) LOWER RIGHT PENCIL + {0x270F, 0x270F, prExtendedPictographic}, // E0.6 [1] (✏️) pencil + {0x2710, 0x2711, prExtendedPictographic}, // E0.0 [2] (✐..✑) UPPER RIGHT PENCIL..WHITE NIB + {0x2712, 0x2712, prExtendedPictographic}, // E0.6 [1] (✒️) black nib + {0x2714, 0x2714, prExtendedPictographic}, // E0.6 [1] (✔️) check mark + {0x2716, 0x2716, prExtendedPictographic}, // E0.6 [1] (✖️) multiply + {0x271D, 0x271D, prExtendedPictographic}, // E0.7 [1] (✝️) latin cross + {0x2721, 0x2721, prExtendedPictographic}, // E0.7 [1] (✡️) star of David + {0x2728, 0x2728, prExtendedPictographic}, // E0.6 [1] (✨) sparkles + {0x2733, 0x2734, prExtendedPictographic}, // E0.6 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star + {0x2744, 0x2744, prExtendedPictographic}, // E0.6 [1] (❄️) snowflake + {0x2747, 0x2747, prExtendedPictographic}, // E0.6 [1] (❇️) sparkle + {0x274C, 0x274C, prExtendedPictographic}, // E0.6 [1] (❌) cross mark + {0x274E, 0x274E, prExtendedPictographic}, // E0.6 [1] (❎) cross mark button + {0x2753, 0x2755, prExtendedPictographic}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark + {0x2757, 0x2757, prExtendedPictographic}, // E0.6 [1] (❗) red exclamation mark + {0x2763, 0x2763, prExtendedPictographic}, // E1.0 [1] (❣️) heart exclamation + {0x2764, 0x2764, prExtendedPictographic}, // E0.6 [1] (❤️) red heart + {0x2765, 0x2767, prExtendedPictographic}, // E0.0 [3] (❥..❧) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET + {0x2795, 0x2797, prExtendedPictographic}, // E0.6 [3] (➕..➗) plus..divide + {0x27A1, 0x27A1, prExtendedPictographic}, // E0.6 [1] (➡️) right arrow + {0x27B0, 0x27B0, prExtendedPictographic}, // E0.6 [1] (➰) curly loop + {0x27BF, 0x27BF, prExtendedPictographic}, // E1.0 [1] (➿) double curly loop + {0x2934, 0x2935, prExtendedPictographic}, // E0.6 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down + {0x2B05, 0x2B07, prExtendedPictographic}, // E0.6 [3] (⬅️..⬇️) left arrow..down arrow + {0x2B1B, 0x2B1C, prExtendedPictographic}, // E0.6 [2] (⬛..⬜) black large square..white large square + {0x2B50, 0x2B50, prExtendedPictographic}, // E0.6 [1] (⭐) star + {0x2B55, 0x2B55, prExtendedPictographic}, // E0.6 [1] (⭕) hollow red circle + {0x2C00, 0x2C7B, prALetter}, // L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E + {0x2C7C, 0x2C7D, prALetter}, // Lm [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V + {0x2C7E, 0x2CE4, prALetter}, // L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI + {0x2CEB, 0x2CEE, prALetter}, // L& [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA + {0x2CEF, 0x2CF1, prExtend}, // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS + {0x2CF2, 0x2CF3, prALetter}, // L& [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI + {0x2D00, 0x2D25, prALetter}, // L& [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE + {0x2D27, 0x2D27, prALetter}, // L& GEORGIAN SMALL LETTER YN + {0x2D2D, 0x2D2D, prALetter}, // L& GEORGIAN SMALL LETTER AEN + {0x2D30, 0x2D67, prALetter}, // Lo [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO + {0x2D6F, 0x2D6F, prALetter}, // Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK + {0x2D7F, 0x2D7F, prExtend}, // Mn TIFINAGH CONSONANT JOINER + {0x2D80, 0x2D96, prALetter}, // Lo [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE + {0x2DA0, 0x2DA6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO + {0x2DA8, 0x2DAE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO + {0x2DB0, 0x2DB6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO + {0x2DB8, 0x2DBE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO + {0x2DC0, 0x2DC6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO + {0x2DC8, 0x2DCE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO + {0x2DD0, 0x2DD6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO + {0x2DD8, 0x2DDE, prALetter}, // Lo [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO + {0x2DE0, 0x2DFF, prExtend}, // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS + {0x2E2F, 0x2E2F, prALetter}, // Lm VERTICAL TILDE + {0x3000, 0x3000, prWSegSpace}, // Zs IDEOGRAPHIC SPACE + {0x3005, 0x3005, prALetter}, // Lm IDEOGRAPHIC ITERATION MARK + {0x302A, 0x302D, prExtend}, // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK + {0x302E, 0x302F, prExtend}, // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK + {0x3030, 0x3030, prExtendedPictographic}, // E0.6 [1] (〰️) wavy dash + {0x3031, 0x3035, prKatakana}, // Lm [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF + {0x303B, 0x303B, prALetter}, // Lm VERTICAL IDEOGRAPHIC ITERATION MARK + {0x303C, 0x303C, prALetter}, // Lo MASU MARK + {0x303D, 0x303D, prExtendedPictographic}, // E0.6 [1] (〽️) part alternation mark + {0x3099, 0x309A, prExtend}, // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x309B, 0x309C, prKatakana}, // Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + {0x30A0, 0x30A0, prKatakana}, // Pd KATAKANA-HIRAGANA DOUBLE HYPHEN + {0x30A1, 0x30FA, prKatakana}, // Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO + {0x30FC, 0x30FE, prKatakana}, // Lm [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK + {0x30FF, 0x30FF, prKatakana}, // Lo KATAKANA DIGRAPH KOTO + {0x3105, 0x312F, prALetter}, // Lo [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN + {0x3131, 0x318E, prALetter}, // Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE + {0x31A0, 0x31BF, prALetter}, // Lo [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH + {0x31F0, 0x31FF, prKatakana}, // Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO + {0x3297, 0x3297, prExtendedPictographic}, // E0.6 [1] (㊗️) Japanese “congratulations” button + {0x3299, 0x3299, prExtendedPictographic}, // E0.6 [1] (㊙️) Japanese “secret” button + {0x32D0, 0x32FE, prKatakana}, // So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO + {0x3300, 0x3357, prKatakana}, // So [88] SQUARE APAATO..SQUARE WATTO + {0xA000, 0xA014, prALetter}, // Lo [21] YI SYLLABLE IT..YI SYLLABLE E + {0xA015, 0xA015, prALetter}, // Lm YI SYLLABLE WU + {0xA016, 0xA48C, prALetter}, // Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR + {0xA4D0, 0xA4F7, prALetter}, // Lo [40] LISU LETTER BA..LISU LETTER OE + {0xA4F8, 0xA4FD, prALetter}, // Lm [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU + {0xA500, 0xA60B, prALetter}, // Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG + {0xA60C, 0xA60C, prALetter}, // Lm VAI SYLLABLE LENGTHENER + {0xA610, 0xA61F, prALetter}, // Lo [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG + {0xA620, 0xA629, prNumeric}, // Nd [10] VAI DIGIT ZERO..VAI DIGIT NINE + {0xA62A, 0xA62B, prALetter}, // Lo [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO + {0xA640, 0xA66D, prALetter}, // L& [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O + {0xA66E, 0xA66E, prALetter}, // Lo CYRILLIC LETTER MULTIOCULAR O + {0xA66F, 0xA66F, prExtend}, // Mn COMBINING CYRILLIC VZMET + {0xA670, 0xA672, prExtend}, // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN + {0xA674, 0xA67D, prExtend}, // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK + {0xA67F, 0xA67F, prALetter}, // Lm CYRILLIC PAYEROK + {0xA680, 0xA69B, prALetter}, // L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O + {0xA69C, 0xA69D, prALetter}, // Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN + {0xA69E, 0xA69F, prExtend}, // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E + {0xA6A0, 0xA6E5, prALetter}, // Lo [70] BAMUM LETTER A..BAMUM LETTER KI + {0xA6E6, 0xA6EF, prALetter}, // Nl [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM + {0xA6F0, 0xA6F1, prExtend}, // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS + {0xA708, 0xA716, prALetter}, // Sk [15] MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR + {0xA717, 0xA71F, prALetter}, // Lm [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK + {0xA720, 0xA721, prALetter}, // Sk [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE + {0xA722, 0xA76F, prALetter}, // L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON + {0xA770, 0xA770, prALetter}, // Lm MODIFIER LETTER US + {0xA771, 0xA787, prALetter}, // L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T + {0xA788, 0xA788, prALetter}, // Lm MODIFIER LETTER LOW CIRCUMFLEX ACCENT + {0xA789, 0xA78A, prALetter}, // Sk [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN + {0xA78B, 0xA78E, prALetter}, // L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT + {0xA78F, 0xA78F, prALetter}, // Lo LATIN LETTER SINOLOGICAL DOT + {0xA790, 0xA7CA, prALetter}, // L& [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY + {0xA7D0, 0xA7D1, prALetter}, // L& [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G + {0xA7D3, 0xA7D3, prALetter}, // L& LATIN SMALL LETTER DOUBLE THORN + {0xA7D5, 0xA7D9, prALetter}, // L& [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S + {0xA7F2, 0xA7F4, prALetter}, // Lm [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q + {0xA7F5, 0xA7F6, prALetter}, // L& [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H + {0xA7F7, 0xA7F7, prALetter}, // Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I + {0xA7F8, 0xA7F9, prALetter}, // Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE + {0xA7FA, 0xA7FA, prALetter}, // L& LATIN LETTER SMALL CAPITAL TURNED M + {0xA7FB, 0xA801, prALetter}, // Lo [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I + {0xA802, 0xA802, prExtend}, // Mn SYLOTI NAGRI SIGN DVISVARA + {0xA803, 0xA805, prALetter}, // Lo [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O + {0xA806, 0xA806, prExtend}, // Mn SYLOTI NAGRI SIGN HASANTA + {0xA807, 0xA80A, prALetter}, // Lo [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO + {0xA80B, 0xA80B, prExtend}, // Mn SYLOTI NAGRI SIGN ANUSVARA + {0xA80C, 0xA822, prALetter}, // Lo [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO + {0xA823, 0xA824, prExtend}, // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I + {0xA825, 0xA826, prExtend}, // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E + {0xA827, 0xA827, prExtend}, // Mc SYLOTI NAGRI VOWEL SIGN OO + {0xA82C, 0xA82C, prExtend}, // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA + {0xA840, 0xA873, prALetter}, // Lo [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU + {0xA880, 0xA881, prExtend}, // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA + {0xA882, 0xA8B3, prALetter}, // Lo [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA + {0xA8B4, 0xA8C3, prExtend}, // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU + {0xA8C4, 0xA8C5, prExtend}, // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU + {0xA8D0, 0xA8D9, prNumeric}, // Nd [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE + {0xA8E0, 0xA8F1, prExtend}, // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA + {0xA8F2, 0xA8F7, prALetter}, // Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA + {0xA8FB, 0xA8FB, prALetter}, // Lo DEVANAGARI HEADSTROKE + {0xA8FD, 0xA8FE, prALetter}, // Lo [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY + {0xA8FF, 0xA8FF, prExtend}, // Mn DEVANAGARI VOWEL SIGN AY + {0xA900, 0xA909, prNumeric}, // Nd [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE + {0xA90A, 0xA925, prALetter}, // Lo [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO + {0xA926, 0xA92D, prExtend}, // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU + {0xA930, 0xA946, prALetter}, // Lo [23] REJANG LETTER KA..REJANG LETTER A + {0xA947, 0xA951, prExtend}, // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R + {0xA952, 0xA953, prExtend}, // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA + {0xA960, 0xA97C, prALetter}, // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH + {0xA980, 0xA982, prExtend}, // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR + {0xA983, 0xA983, prExtend}, // Mc JAVANESE SIGN WIGNYAN + {0xA984, 0xA9B2, prALetter}, // Lo [47] JAVANESE LETTER A..JAVANESE LETTER HA + {0xA9B3, 0xA9B3, prExtend}, // Mn JAVANESE SIGN CECAK TELU + {0xA9B4, 0xA9B5, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG + {0xA9B6, 0xA9B9, prExtend}, // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT + {0xA9BA, 0xA9BB, prExtend}, // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE + {0xA9BC, 0xA9BD, prExtend}, // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET + {0xA9BE, 0xA9C0, prExtend}, // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON + {0xA9CF, 0xA9CF, prALetter}, // Lm JAVANESE PANGRANGKEP + {0xA9D0, 0xA9D9, prNumeric}, // Nd [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE + {0xA9E5, 0xA9E5, prExtend}, // Mn MYANMAR SIGN SHAN SAW + {0xA9F0, 0xA9F9, prNumeric}, // Nd [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE + {0xAA00, 0xAA28, prALetter}, // Lo [41] CHAM LETTER A..CHAM LETTER HA + {0xAA29, 0xAA2E, prExtend}, // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE + {0xAA2F, 0xAA30, prExtend}, // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI + {0xAA31, 0xAA32, prExtend}, // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE + {0xAA33, 0xAA34, prExtend}, // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA + {0xAA35, 0xAA36, prExtend}, // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA + {0xAA40, 0xAA42, prALetter}, // Lo [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG + {0xAA43, 0xAA43, prExtend}, // Mn CHAM CONSONANT SIGN FINAL NG + {0xAA44, 0xAA4B, prALetter}, // Lo [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS + {0xAA4C, 0xAA4C, prExtend}, // Mn CHAM CONSONANT SIGN FINAL M + {0xAA4D, 0xAA4D, prExtend}, // Mc CHAM CONSONANT SIGN FINAL H + {0xAA50, 0xAA59, prNumeric}, // Nd [10] CHAM DIGIT ZERO..CHAM DIGIT NINE + {0xAA7B, 0xAA7B, prExtend}, // Mc MYANMAR SIGN PAO KAREN TONE + {0xAA7C, 0xAA7C, prExtend}, // Mn MYANMAR SIGN TAI LAING TONE-2 + {0xAA7D, 0xAA7D, prExtend}, // Mc MYANMAR SIGN TAI LAING TONE-5 + {0xAAB0, 0xAAB0, prExtend}, // Mn TAI VIET MAI KANG + {0xAAB2, 0xAAB4, prExtend}, // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U + {0xAAB7, 0xAAB8, prExtend}, // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA + {0xAABE, 0xAABF, prExtend}, // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK + {0xAAC1, 0xAAC1, prExtend}, // Mn TAI VIET TONE MAI THO + {0xAAE0, 0xAAEA, prALetter}, // Lo [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA + {0xAAEB, 0xAAEB, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN II + {0xAAEC, 0xAAED, prExtend}, // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI + {0xAAEE, 0xAAEF, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU + {0xAAF2, 0xAAF2, prALetter}, // Lo MEETEI MAYEK ANJI + {0xAAF3, 0xAAF4, prALetter}, // Lm [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK + {0xAAF5, 0xAAF5, prExtend}, // Mc MEETEI MAYEK VOWEL SIGN VISARGA + {0xAAF6, 0xAAF6, prExtend}, // Mn MEETEI MAYEK VIRAMA + {0xAB01, 0xAB06, prALetter}, // Lo [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO + {0xAB09, 0xAB0E, prALetter}, // Lo [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO + {0xAB11, 0xAB16, prALetter}, // Lo [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO + {0xAB20, 0xAB26, prALetter}, // Lo [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO + {0xAB28, 0xAB2E, prALetter}, // Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO + {0xAB30, 0xAB5A, prALetter}, // L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG + {0xAB5B, 0xAB5B, prALetter}, // Sk MODIFIER BREVE WITH INVERTED BREVE + {0xAB5C, 0xAB5F, prALetter}, // Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK + {0xAB60, 0xAB68, prALetter}, // L& [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE + {0xAB69, 0xAB69, prALetter}, // Lm MODIFIER LETTER SMALL TURNED W + {0xAB70, 0xABBF, prALetter}, // L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA + {0xABC0, 0xABE2, prALetter}, // Lo [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM + {0xABE3, 0xABE4, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP + {0xABE5, 0xABE5, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN ANAP + {0xABE6, 0xABE7, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP + {0xABE8, 0xABE8, prExtend}, // Mn MEETEI MAYEK VOWEL SIGN UNAP + {0xABE9, 0xABEA, prExtend}, // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG + {0xABEC, 0xABEC, prExtend}, // Mc MEETEI MAYEK LUM IYEK + {0xABED, 0xABED, prExtend}, // Mn MEETEI MAYEK APUN IYEK + {0xABF0, 0xABF9, prNumeric}, // Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE + {0xAC00, 0xD7A3, prALetter}, // Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH + {0xD7B0, 0xD7C6, prALetter}, // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E + {0xD7CB, 0xD7FB, prALetter}, // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH + {0xFB00, 0xFB06, prALetter}, // L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST + {0xFB13, 0xFB17, prALetter}, // L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH + {0xFB1D, 0xFB1D, prHebrewLetter}, // Lo HEBREW LETTER YOD WITH HIRIQ + {0xFB1E, 0xFB1E, prExtend}, // Mn HEBREW POINT JUDEO-SPANISH VARIKA + {0xFB1F, 0xFB28, prHebrewLetter}, // Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV + {0xFB2A, 0xFB36, prHebrewLetter}, // Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH + {0xFB38, 0xFB3C, prHebrewLetter}, // Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH + {0xFB3E, 0xFB3E, prHebrewLetter}, // Lo HEBREW LETTER MEM WITH DAGESH + {0xFB40, 0xFB41, prHebrewLetter}, // Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH + {0xFB43, 0xFB44, prHebrewLetter}, // Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH + {0xFB46, 0xFB4F, prHebrewLetter}, // Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED + {0xFB50, 0xFBB1, prALetter}, // Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM + {0xFBD3, 0xFD3D, prALetter}, // Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM + {0xFD50, 0xFD8F, prALetter}, // Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM + {0xFD92, 0xFDC7, prALetter}, // Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM + {0xFDF0, 0xFDFB, prALetter}, // Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU + {0xFE00, 0xFE0F, prExtend}, // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16 + {0xFE10, 0xFE10, prMidNum}, // Po PRESENTATION FORM FOR VERTICAL COMMA + {0xFE13, 0xFE13, prMidLetter}, // Po PRESENTATION FORM FOR VERTICAL COLON + {0xFE14, 0xFE14, prMidNum}, // Po PRESENTATION FORM FOR VERTICAL SEMICOLON + {0xFE20, 0xFE2F, prExtend}, // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF + {0xFE33, 0xFE34, prExtendNumLet}, // Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE + {0xFE4D, 0xFE4F, prExtendNumLet}, // Pc [3] DASHED LOW LINE..WAVY LOW LINE + {0xFE50, 0xFE50, prMidNum}, // Po SMALL COMMA + {0xFE52, 0xFE52, prMidNumLet}, // Po SMALL FULL STOP + {0xFE54, 0xFE54, prMidNum}, // Po SMALL SEMICOLON + {0xFE55, 0xFE55, prMidLetter}, // Po SMALL COLON + {0xFE70, 0xFE74, prALetter}, // Lo [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM + {0xFE76, 0xFEFC, prALetter}, // Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM + {0xFEFF, 0xFEFF, prFormat}, // Cf ZERO WIDTH NO-BREAK SPACE + {0xFF07, 0xFF07, prMidNumLet}, // Po FULLWIDTH APOSTROPHE + {0xFF0C, 0xFF0C, prMidNum}, // Po FULLWIDTH COMMA + {0xFF0E, 0xFF0E, prMidNumLet}, // Po FULLWIDTH FULL STOP + {0xFF10, 0xFF19, prNumeric}, // Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE + {0xFF1A, 0xFF1A, prMidLetter}, // Po FULLWIDTH COLON + {0xFF1B, 0xFF1B, prMidNum}, // Po FULLWIDTH SEMICOLON + {0xFF21, 0xFF3A, prALetter}, // L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z + {0xFF3F, 0xFF3F, prExtendNumLet}, // Pc FULLWIDTH LOW LINE + {0xFF41, 0xFF5A, prALetter}, // L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z + {0xFF66, 0xFF6F, prKatakana}, // Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU + {0xFF70, 0xFF70, prKatakana}, // Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK + {0xFF71, 0xFF9D, prKatakana}, // Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N + {0xFF9E, 0xFF9F, prExtend}, // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK + {0xFFA0, 0xFFBE, prALetter}, // Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH + {0xFFC2, 0xFFC7, prALetter}, // Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E + {0xFFCA, 0xFFCF, prALetter}, // Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE + {0xFFD2, 0xFFD7, prALetter}, // Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU + {0xFFDA, 0xFFDC, prALetter}, // Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I + {0xFFF9, 0xFFFB, prFormat}, // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR + {0x10000, 0x1000B, prALetter}, // Lo [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE + {0x1000D, 0x10026, prALetter}, // Lo [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO + {0x10028, 0x1003A, prALetter}, // Lo [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO + {0x1003C, 0x1003D, prALetter}, // Lo [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE + {0x1003F, 0x1004D, prALetter}, // Lo [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO + {0x10050, 0x1005D, prALetter}, // Lo [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089 + {0x10080, 0x100FA, prALetter}, // Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305 + {0x10140, 0x10174, prALetter}, // Nl [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS + {0x101FD, 0x101FD, prExtend}, // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE + {0x10280, 0x1029C, prALetter}, // Lo [29] LYCIAN LETTER A..LYCIAN LETTER X + {0x102A0, 0x102D0, prALetter}, // Lo [49] CARIAN LETTER A..CARIAN LETTER UUU3 + {0x102E0, 0x102E0, prExtend}, // Mn COPTIC EPACT THOUSANDS MARK + {0x10300, 0x1031F, prALetter}, // Lo [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS + {0x1032D, 0x10340, prALetter}, // Lo [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA + {0x10341, 0x10341, prALetter}, // Nl GOTHIC LETTER NINETY + {0x10342, 0x10349, prALetter}, // Lo [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL + {0x1034A, 0x1034A, prALetter}, // Nl GOTHIC LETTER NINE HUNDRED + {0x10350, 0x10375, prALetter}, // Lo [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA + {0x10376, 0x1037A, prExtend}, // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII + {0x10380, 0x1039D, prALetter}, // Lo [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU + {0x103A0, 0x103C3, prALetter}, // Lo [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA + {0x103C8, 0x103CF, prALetter}, // Lo [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH + {0x103D1, 0x103D5, prALetter}, // Nl [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED + {0x10400, 0x1044F, prALetter}, // L& [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW + {0x10450, 0x1049D, prALetter}, // Lo [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO + {0x104A0, 0x104A9, prNumeric}, // Nd [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE + {0x104B0, 0x104D3, prALetter}, // L& [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA + {0x104D8, 0x104FB, prALetter}, // L& [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA + {0x10500, 0x10527, prALetter}, // Lo [40] ELBASAN LETTER A..ELBASAN LETTER KHE + {0x10530, 0x10563, prALetter}, // Lo [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW + {0x10570, 0x1057A, prALetter}, // L& [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA + {0x1057C, 0x1058A, prALetter}, // L& [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE + {0x1058C, 0x10592, prALetter}, // L& [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE + {0x10594, 0x10595, prALetter}, // L& [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE + {0x10597, 0x105A1, prALetter}, // L& [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA + {0x105A3, 0x105B1, prALetter}, // L& [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE + {0x105B3, 0x105B9, prALetter}, // L& [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE + {0x105BB, 0x105BC, prALetter}, // L& [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE + {0x10600, 0x10736, prALetter}, // Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664 + {0x10740, 0x10755, prALetter}, // Lo [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE + {0x10760, 0x10767, prALetter}, // Lo [8] LINEAR A SIGN A800..LINEAR A SIGN A807 + {0x10780, 0x10785, prALetter}, // Lm [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK + {0x10787, 0x107B0, prALetter}, // Lm [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK + {0x107B2, 0x107BA, prALetter}, // Lm [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL + {0x10800, 0x10805, prALetter}, // Lo [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA + {0x10808, 0x10808, prALetter}, // Lo CYPRIOT SYLLABLE JO + {0x1080A, 0x10835, prALetter}, // Lo [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO + {0x10837, 0x10838, prALetter}, // Lo [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE + {0x1083C, 0x1083C, prALetter}, // Lo CYPRIOT SYLLABLE ZA + {0x1083F, 0x10855, prALetter}, // Lo [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW + {0x10860, 0x10876, prALetter}, // Lo [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW + {0x10880, 0x1089E, prALetter}, // Lo [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW + {0x108E0, 0x108F2, prALetter}, // Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH + {0x108F4, 0x108F5, prALetter}, // Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW + {0x10900, 0x10915, prALetter}, // Lo [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU + {0x10920, 0x10939, prALetter}, // Lo [26] LYDIAN LETTER A..LYDIAN LETTER C + {0x10980, 0x109B7, prALetter}, // Lo [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA + {0x109BE, 0x109BF, prALetter}, // Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN + {0x10A00, 0x10A00, prALetter}, // Lo KHAROSHTHI LETTER A + {0x10A01, 0x10A03, prExtend}, // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R + {0x10A05, 0x10A06, prExtend}, // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O + {0x10A0C, 0x10A0F, prExtend}, // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA + {0x10A10, 0x10A13, prALetter}, // Lo [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA + {0x10A15, 0x10A17, prALetter}, // Lo [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA + {0x10A19, 0x10A35, prALetter}, // Lo [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA + {0x10A38, 0x10A3A, prExtend}, // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW + {0x10A3F, 0x10A3F, prExtend}, // Mn KHAROSHTHI VIRAMA + {0x10A60, 0x10A7C, prALetter}, // Lo [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH + {0x10A80, 0x10A9C, prALetter}, // Lo [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH + {0x10AC0, 0x10AC7, prALetter}, // Lo [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW + {0x10AC9, 0x10AE4, prALetter}, // Lo [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW + {0x10AE5, 0x10AE6, prExtend}, // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW + {0x10B00, 0x10B35, prALetter}, // Lo [54] AVESTAN LETTER A..AVESTAN LETTER HE + {0x10B40, 0x10B55, prALetter}, // Lo [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW + {0x10B60, 0x10B72, prALetter}, // Lo [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW + {0x10B80, 0x10B91, prALetter}, // Lo [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW + {0x10C00, 0x10C48, prALetter}, // Lo [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH + {0x10C80, 0x10CB2, prALetter}, // L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US + {0x10CC0, 0x10CF2, prALetter}, // L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US + {0x10D00, 0x10D23, prALetter}, // Lo [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA + {0x10D24, 0x10D27, prExtend}, // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI + {0x10D30, 0x10D39, prNumeric}, // Nd [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE + {0x10E80, 0x10EA9, prALetter}, // Lo [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET + {0x10EAB, 0x10EAC, prExtend}, // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK + {0x10EB0, 0x10EB1, prALetter}, // Lo [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE + {0x10EFD, 0x10EFF, prExtend}, // Mn [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA + {0x10F00, 0x10F1C, prALetter}, // Lo [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL + {0x10F27, 0x10F27, prALetter}, // Lo OLD SOGDIAN LIGATURE AYIN-DALETH + {0x10F30, 0x10F45, prALetter}, // Lo [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN + {0x10F46, 0x10F50, prExtend}, // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW + {0x10F70, 0x10F81, prALetter}, // Lo [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH + {0x10F82, 0x10F85, prExtend}, // Mn [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW + {0x10FB0, 0x10FC4, prALetter}, // Lo [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW + {0x10FE0, 0x10FF6, prALetter}, // Lo [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH + {0x11000, 0x11000, prExtend}, // Mc BRAHMI SIGN CANDRABINDU + {0x11001, 0x11001, prExtend}, // Mn BRAHMI SIGN ANUSVARA + {0x11002, 0x11002, prExtend}, // Mc BRAHMI SIGN VISARGA + {0x11003, 0x11037, prALetter}, // Lo [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA + {0x11038, 0x11046, prExtend}, // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA + {0x11066, 0x1106F, prNumeric}, // Nd [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE + {0x11070, 0x11070, prExtend}, // Mn BRAHMI SIGN OLD TAMIL VIRAMA + {0x11071, 0x11072, prALetter}, // Lo [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O + {0x11073, 0x11074, prExtend}, // Mn [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O + {0x11075, 0x11075, prALetter}, // Lo BRAHMI LETTER OLD TAMIL LLA + {0x1107F, 0x11081, prExtend}, // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA + {0x11082, 0x11082, prExtend}, // Mc KAITHI SIGN VISARGA + {0x11083, 0x110AF, prALetter}, // Lo [45] KAITHI LETTER A..KAITHI LETTER HA + {0x110B0, 0x110B2, prExtend}, // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II + {0x110B3, 0x110B6, prExtend}, // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI + {0x110B7, 0x110B8, prExtend}, // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU + {0x110B9, 0x110BA, prExtend}, // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA + {0x110BD, 0x110BD, prFormat}, // Cf KAITHI NUMBER SIGN + {0x110C2, 0x110C2, prExtend}, // Mn KAITHI VOWEL SIGN VOCALIC R + {0x110CD, 0x110CD, prFormat}, // Cf KAITHI NUMBER SIGN ABOVE + {0x110D0, 0x110E8, prALetter}, // Lo [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE + {0x110F0, 0x110F9, prNumeric}, // Nd [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE + {0x11100, 0x11102, prExtend}, // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA + {0x11103, 0x11126, prALetter}, // Lo [36] CHAKMA LETTER AA..CHAKMA LETTER HAA + {0x11127, 0x1112B, prExtend}, // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU + {0x1112C, 0x1112C, prExtend}, // Mc CHAKMA VOWEL SIGN E + {0x1112D, 0x11134, prExtend}, // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA + {0x11136, 0x1113F, prNumeric}, // Nd [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE + {0x11144, 0x11144, prALetter}, // Lo CHAKMA LETTER LHAA + {0x11145, 0x11146, prExtend}, // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI + {0x11147, 0x11147, prALetter}, // Lo CHAKMA LETTER VAA + {0x11150, 0x11172, prALetter}, // Lo [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA + {0x11173, 0x11173, prExtend}, // Mn MAHAJANI SIGN NUKTA + {0x11176, 0x11176, prALetter}, // Lo MAHAJANI LIGATURE SHRI + {0x11180, 0x11181, prExtend}, // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA + {0x11182, 0x11182, prExtend}, // Mc SHARADA SIGN VISARGA + {0x11183, 0x111B2, prALetter}, // Lo [48] SHARADA LETTER A..SHARADA LETTER HA + {0x111B3, 0x111B5, prExtend}, // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II + {0x111B6, 0x111BE, prExtend}, // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O + {0x111BF, 0x111C0, prExtend}, // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA + {0x111C1, 0x111C4, prALetter}, // Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM + {0x111C9, 0x111CC, prExtend}, // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK + {0x111CE, 0x111CE, prExtend}, // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E + {0x111CF, 0x111CF, prExtend}, // Mn SHARADA SIGN INVERTED CANDRABINDU + {0x111D0, 0x111D9, prNumeric}, // Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE + {0x111DA, 0x111DA, prALetter}, // Lo SHARADA EKAM + {0x111DC, 0x111DC, prALetter}, // Lo SHARADA HEADSTROKE + {0x11200, 0x11211, prALetter}, // Lo [18] KHOJKI LETTER A..KHOJKI LETTER JJA + {0x11213, 0x1122B, prALetter}, // Lo [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA + {0x1122C, 0x1122E, prExtend}, // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II + {0x1122F, 0x11231, prExtend}, // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI + {0x11232, 0x11233, prExtend}, // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU + {0x11234, 0x11234, prExtend}, // Mn KHOJKI SIGN ANUSVARA + {0x11235, 0x11235, prExtend}, // Mc KHOJKI SIGN VIRAMA + {0x11236, 0x11237, prExtend}, // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA + {0x1123E, 0x1123E, prExtend}, // Mn KHOJKI SIGN SUKUN + {0x1123F, 0x11240, prALetter}, // Lo [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I + {0x11241, 0x11241, prExtend}, // Mn KHOJKI VOWEL SIGN VOCALIC R + {0x11280, 0x11286, prALetter}, // Lo [7] MULTANI LETTER A..MULTANI LETTER GA + {0x11288, 0x11288, prALetter}, // Lo MULTANI LETTER GHA + {0x1128A, 0x1128D, prALetter}, // Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA + {0x1128F, 0x1129D, prALetter}, // Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA + {0x1129F, 0x112A8, prALetter}, // Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA + {0x112B0, 0x112DE, prALetter}, // Lo [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA + {0x112DF, 0x112DF, prExtend}, // Mn KHUDAWADI SIGN ANUSVARA + {0x112E0, 0x112E2, prExtend}, // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II + {0x112E3, 0x112EA, prExtend}, // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA + {0x112F0, 0x112F9, prNumeric}, // Nd [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE + {0x11300, 0x11301, prExtend}, // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU + {0x11302, 0x11303, prExtend}, // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA + {0x11305, 0x1130C, prALetter}, // Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L + {0x1130F, 0x11310, prALetter}, // Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI + {0x11313, 0x11328, prALetter}, // Lo [22] GRANTHA LETTER OO..GRANTHA LETTER NA + {0x1132A, 0x11330, prALetter}, // Lo [7] GRANTHA LETTER PA..GRANTHA LETTER RA + {0x11332, 0x11333, prALetter}, // Lo [2] GRANTHA LETTER LA..GRANTHA LETTER LLA + {0x11335, 0x11339, prALetter}, // Lo [5] GRANTHA LETTER VA..GRANTHA LETTER HA + {0x1133B, 0x1133C, prExtend}, // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA + {0x1133D, 0x1133D, prALetter}, // Lo GRANTHA SIGN AVAGRAHA + {0x1133E, 0x1133F, prExtend}, // Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I + {0x11340, 0x11340, prExtend}, // Mn GRANTHA VOWEL SIGN II + {0x11341, 0x11344, prExtend}, // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR + {0x11347, 0x11348, prExtend}, // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI + {0x1134B, 0x1134D, prExtend}, // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA + {0x11350, 0x11350, prALetter}, // Lo GRANTHA OM + {0x11357, 0x11357, prExtend}, // Mc GRANTHA AU LENGTH MARK + {0x1135D, 0x11361, prALetter}, // Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL + {0x11362, 0x11363, prExtend}, // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL + {0x11366, 0x1136C, prExtend}, // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX + {0x11370, 0x11374, prExtend}, // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA + {0x11400, 0x11434, prALetter}, // Lo [53] NEWA LETTER A..NEWA LETTER HA + {0x11435, 0x11437, prExtend}, // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II + {0x11438, 0x1143F, prExtend}, // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI + {0x11440, 0x11441, prExtend}, // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU + {0x11442, 0x11444, prExtend}, // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA + {0x11445, 0x11445, prExtend}, // Mc NEWA SIGN VISARGA + {0x11446, 0x11446, prExtend}, // Mn NEWA SIGN NUKTA + {0x11447, 0x1144A, prALetter}, // Lo [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI + {0x11450, 0x11459, prNumeric}, // Nd [10] NEWA DIGIT ZERO..NEWA DIGIT NINE + {0x1145E, 0x1145E, prExtend}, // Mn NEWA SANDHI MARK + {0x1145F, 0x11461, prALetter}, // Lo [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA + {0x11480, 0x114AF, prALetter}, // Lo [48] TIRHUTA ANJI..TIRHUTA LETTER HA + {0x114B0, 0x114B2, prExtend}, // Mc [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II + {0x114B3, 0x114B8, prExtend}, // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL + {0x114B9, 0x114B9, prExtend}, // Mc TIRHUTA VOWEL SIGN E + {0x114BA, 0x114BA, prExtend}, // Mn TIRHUTA VOWEL SIGN SHORT E + {0x114BB, 0x114BE, prExtend}, // Mc [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU + {0x114BF, 0x114C0, prExtend}, // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA + {0x114C1, 0x114C1, prExtend}, // Mc TIRHUTA SIGN VISARGA + {0x114C2, 0x114C3, prExtend}, // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA + {0x114C4, 0x114C5, prALetter}, // Lo [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG + {0x114C7, 0x114C7, prALetter}, // Lo TIRHUTA OM + {0x114D0, 0x114D9, prNumeric}, // Nd [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE + {0x11580, 0x115AE, prALetter}, // Lo [47] SIDDHAM LETTER A..SIDDHAM LETTER HA + {0x115AF, 0x115B1, prExtend}, // Mc [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II + {0x115B2, 0x115B5, prExtend}, // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR + {0x115B8, 0x115BB, prExtend}, // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU + {0x115BC, 0x115BD, prExtend}, // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA + {0x115BE, 0x115BE, prExtend}, // Mc SIDDHAM SIGN VISARGA + {0x115BF, 0x115C0, prExtend}, // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA + {0x115D8, 0x115DB, prALetter}, // Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U + {0x115DC, 0x115DD, prExtend}, // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU + {0x11600, 0x1162F, prALetter}, // Lo [48] MODI LETTER A..MODI LETTER LLA + {0x11630, 0x11632, prExtend}, // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II + {0x11633, 0x1163A, prExtend}, // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI + {0x1163B, 0x1163C, prExtend}, // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU + {0x1163D, 0x1163D, prExtend}, // Mn MODI SIGN ANUSVARA + {0x1163E, 0x1163E, prExtend}, // Mc MODI SIGN VISARGA + {0x1163F, 0x11640, prExtend}, // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA + {0x11644, 0x11644, prALetter}, // Lo MODI SIGN HUVA + {0x11650, 0x11659, prNumeric}, // Nd [10] MODI DIGIT ZERO..MODI DIGIT NINE + {0x11680, 0x116AA, prALetter}, // Lo [43] TAKRI LETTER A..TAKRI LETTER RRA + {0x116AB, 0x116AB, prExtend}, // Mn TAKRI SIGN ANUSVARA + {0x116AC, 0x116AC, prExtend}, // Mc TAKRI SIGN VISARGA + {0x116AD, 0x116AD, prExtend}, // Mn TAKRI VOWEL SIGN AA + {0x116AE, 0x116AF, prExtend}, // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II + {0x116B0, 0x116B5, prExtend}, // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU + {0x116B6, 0x116B6, prExtend}, // Mc TAKRI SIGN VIRAMA + {0x116B7, 0x116B7, prExtend}, // Mn TAKRI SIGN NUKTA + {0x116B8, 0x116B8, prALetter}, // Lo TAKRI LETTER ARCHAIC KHA + {0x116C0, 0x116C9, prNumeric}, // Nd [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE + {0x1171D, 0x1171F, prExtend}, // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA + {0x11720, 0x11721, prExtend}, // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA + {0x11722, 0x11725, prExtend}, // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU + {0x11726, 0x11726, prExtend}, // Mc AHOM VOWEL SIGN E + {0x11727, 0x1172B, prExtend}, // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER + {0x11730, 0x11739, prNumeric}, // Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE + {0x11800, 0x1182B, prALetter}, // Lo [44] DOGRA LETTER A..DOGRA LETTER RRA + {0x1182C, 0x1182E, prExtend}, // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II + {0x1182F, 0x11837, prExtend}, // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA + {0x11838, 0x11838, prExtend}, // Mc DOGRA SIGN VISARGA + {0x11839, 0x1183A, prExtend}, // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA + {0x118A0, 0x118DF, prALetter}, // L& [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO + {0x118E0, 0x118E9, prNumeric}, // Nd [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE + {0x118FF, 0x11906, prALetter}, // Lo [8] WARANG CITI OM..DIVES AKURU LETTER E + {0x11909, 0x11909, prALetter}, // Lo DIVES AKURU LETTER O + {0x1190C, 0x11913, prALetter}, // Lo [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA + {0x11915, 0x11916, prALetter}, // Lo [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA + {0x11918, 0x1192F, prALetter}, // Lo [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA + {0x11930, 0x11935, prExtend}, // Mc [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E + {0x11937, 0x11938, prExtend}, // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O + {0x1193B, 0x1193C, prExtend}, // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU + {0x1193D, 0x1193D, prExtend}, // Mc DIVES AKURU SIGN HALANTA + {0x1193E, 0x1193E, prExtend}, // Mn DIVES AKURU VIRAMA + {0x1193F, 0x1193F, prALetter}, // Lo DIVES AKURU PREFIXED NASAL SIGN + {0x11940, 0x11940, prExtend}, // Mc DIVES AKURU MEDIAL YA + {0x11941, 0x11941, prALetter}, // Lo DIVES AKURU INITIAL RA + {0x11942, 0x11942, prExtend}, // Mc DIVES AKURU MEDIAL RA + {0x11943, 0x11943, prExtend}, // Mn DIVES AKURU SIGN NUKTA + {0x11950, 0x11959, prNumeric}, // Nd [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE + {0x119A0, 0x119A7, prALetter}, // Lo [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR + {0x119AA, 0x119D0, prALetter}, // Lo [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA + {0x119D1, 0x119D3, prExtend}, // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II + {0x119D4, 0x119D7, prExtend}, // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR + {0x119DA, 0x119DB, prExtend}, // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI + {0x119DC, 0x119DF, prExtend}, // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA + {0x119E0, 0x119E0, prExtend}, // Mn NANDINAGARI SIGN VIRAMA + {0x119E1, 0x119E1, prALetter}, // Lo NANDINAGARI SIGN AVAGRAHA + {0x119E3, 0x119E3, prALetter}, // Lo NANDINAGARI HEADSTROKE + {0x119E4, 0x119E4, prExtend}, // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E + {0x11A00, 0x11A00, prALetter}, // Lo ZANABAZAR SQUARE LETTER A + {0x11A01, 0x11A0A, prExtend}, // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK + {0x11A0B, 0x11A32, prALetter}, // Lo [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA + {0x11A33, 0x11A38, prExtend}, // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA + {0x11A39, 0x11A39, prExtend}, // Mc ZANABAZAR SQUARE SIGN VISARGA + {0x11A3A, 0x11A3A, prALetter}, // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA + {0x11A3B, 0x11A3E, prExtend}, // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA + {0x11A47, 0x11A47, prExtend}, // Mn ZANABAZAR SQUARE SUBJOINER + {0x11A50, 0x11A50, prALetter}, // Lo SOYOMBO LETTER A + {0x11A51, 0x11A56, prExtend}, // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE + {0x11A57, 0x11A58, prExtend}, // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU + {0x11A59, 0x11A5B, prExtend}, // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK + {0x11A5C, 0x11A89, prALetter}, // Lo [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA + {0x11A8A, 0x11A96, prExtend}, // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA + {0x11A97, 0x11A97, prExtend}, // Mc SOYOMBO SIGN VISARGA + {0x11A98, 0x11A99, prExtend}, // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER + {0x11A9D, 0x11A9D, prALetter}, // Lo SOYOMBO MARK PLUTA + {0x11AB0, 0x11AF8, prALetter}, // Lo [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL + {0x11C00, 0x11C08, prALetter}, // Lo [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L + {0x11C0A, 0x11C2E, prALetter}, // Lo [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA + {0x11C2F, 0x11C2F, prExtend}, // Mc BHAIKSUKI VOWEL SIGN AA + {0x11C30, 0x11C36, prExtend}, // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L + {0x11C38, 0x11C3D, prExtend}, // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA + {0x11C3E, 0x11C3E, prExtend}, // Mc BHAIKSUKI SIGN VISARGA + {0x11C3F, 0x11C3F, prExtend}, // Mn BHAIKSUKI SIGN VIRAMA + {0x11C40, 0x11C40, prALetter}, // Lo BHAIKSUKI SIGN AVAGRAHA + {0x11C50, 0x11C59, prNumeric}, // Nd [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE + {0x11C72, 0x11C8F, prALetter}, // Lo [30] MARCHEN LETTER KA..MARCHEN LETTER A + {0x11C92, 0x11CA7, prExtend}, // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA + {0x11CA9, 0x11CA9, prExtend}, // Mc MARCHEN SUBJOINED LETTER YA + {0x11CAA, 0x11CB0, prExtend}, // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA + {0x11CB1, 0x11CB1, prExtend}, // Mc MARCHEN VOWEL SIGN I + {0x11CB2, 0x11CB3, prExtend}, // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E + {0x11CB4, 0x11CB4, prExtend}, // Mc MARCHEN VOWEL SIGN O + {0x11CB5, 0x11CB6, prExtend}, // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU + {0x11D00, 0x11D06, prALetter}, // Lo [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E + {0x11D08, 0x11D09, prALetter}, // Lo [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O + {0x11D0B, 0x11D30, prALetter}, // Lo [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA + {0x11D31, 0x11D36, prExtend}, // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R + {0x11D3A, 0x11D3A, prExtend}, // Mn MASARAM GONDI VOWEL SIGN E + {0x11D3C, 0x11D3D, prExtend}, // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O + {0x11D3F, 0x11D45, prExtend}, // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA + {0x11D46, 0x11D46, prALetter}, // Lo MASARAM GONDI REPHA + {0x11D47, 0x11D47, prExtend}, // Mn MASARAM GONDI RA-KARA + {0x11D50, 0x11D59, prNumeric}, // Nd [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE + {0x11D60, 0x11D65, prALetter}, // Lo [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU + {0x11D67, 0x11D68, prALetter}, // Lo [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI + {0x11D6A, 0x11D89, prALetter}, // Lo [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA + {0x11D8A, 0x11D8E, prExtend}, // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU + {0x11D90, 0x11D91, prExtend}, // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI + {0x11D93, 0x11D94, prExtend}, // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU + {0x11D95, 0x11D95, prExtend}, // Mn GUNJALA GONDI SIGN ANUSVARA + {0x11D96, 0x11D96, prExtend}, // Mc GUNJALA GONDI SIGN VISARGA + {0x11D97, 0x11D97, prExtend}, // Mn GUNJALA GONDI VIRAMA + {0x11D98, 0x11D98, prALetter}, // Lo GUNJALA GONDI OM + {0x11DA0, 0x11DA9, prNumeric}, // Nd [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE + {0x11EE0, 0x11EF2, prALetter}, // Lo [19] MAKASAR LETTER KA..MAKASAR ANGKA + {0x11EF3, 0x11EF4, prExtend}, // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U + {0x11EF5, 0x11EF6, prExtend}, // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O + {0x11F00, 0x11F01, prExtend}, // Mn [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA + {0x11F02, 0x11F02, prALetter}, // Lo KAWI SIGN REPHA + {0x11F03, 0x11F03, prExtend}, // Mc KAWI SIGN VISARGA + {0x11F04, 0x11F10, prALetter}, // Lo [13] KAWI LETTER A..KAWI LETTER O + {0x11F12, 0x11F33, prALetter}, // Lo [34] KAWI LETTER KA..KAWI LETTER JNYA + {0x11F34, 0x11F35, prExtend}, // Mc [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA + {0x11F36, 0x11F3A, prExtend}, // Mn [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R + {0x11F3E, 0x11F3F, prExtend}, // Mc [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI + {0x11F40, 0x11F40, prExtend}, // Mn KAWI VOWEL SIGN EU + {0x11F41, 0x11F41, prExtend}, // Mc KAWI SIGN KILLER + {0x11F42, 0x11F42, prExtend}, // Mn KAWI CONJOINER + {0x11F50, 0x11F59, prNumeric}, // Nd [10] KAWI DIGIT ZERO..KAWI DIGIT NINE + {0x11FB0, 0x11FB0, prALetter}, // Lo LISU LETTER YHA + {0x12000, 0x12399, prALetter}, // Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U + {0x12400, 0x1246E, prALetter}, // Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM + {0x12480, 0x12543, prALetter}, // Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU + {0x12F90, 0x12FF0, prALetter}, // Lo [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114 + {0x13000, 0x1342F, prALetter}, // Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D + {0x13430, 0x1343F, prFormat}, // Cf [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE + {0x13440, 0x13440, prExtend}, // Mn EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY + {0x13441, 0x13446, prALetter}, // Lo [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN + {0x13447, 0x13455, prExtend}, // Mn [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED + {0x14400, 0x14646, prALetter}, // Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530 + {0x16800, 0x16A38, prALetter}, // Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ + {0x16A40, 0x16A5E, prALetter}, // Lo [31] MRO LETTER TA..MRO LETTER TEK + {0x16A60, 0x16A69, prNumeric}, // Nd [10] MRO DIGIT ZERO..MRO DIGIT NINE + {0x16A70, 0x16ABE, prALetter}, // Lo [79] TANGSA LETTER OZ..TANGSA LETTER ZA + {0x16AC0, 0x16AC9, prNumeric}, // Nd [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE + {0x16AD0, 0x16AED, prALetter}, // Lo [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I + {0x16AF0, 0x16AF4, prExtend}, // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE + {0x16B00, 0x16B2F, prALetter}, // Lo [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU + {0x16B30, 0x16B36, prExtend}, // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM + {0x16B40, 0x16B43, prALetter}, // Lm [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM + {0x16B50, 0x16B59, prNumeric}, // Nd [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE + {0x16B63, 0x16B77, prALetter}, // Lo [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS + {0x16B7D, 0x16B8F, prALetter}, // Lo [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ + {0x16E40, 0x16E7F, prALetter}, // L& [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y + {0x16F00, 0x16F4A, prALetter}, // Lo [75] MIAO LETTER PA..MIAO LETTER RTE + {0x16F4F, 0x16F4F, prExtend}, // Mn MIAO SIGN CONSONANT MODIFIER BAR + {0x16F50, 0x16F50, prALetter}, // Lo MIAO LETTER NASALIZATION + {0x16F51, 0x16F87, prExtend}, // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI + {0x16F8F, 0x16F92, prExtend}, // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW + {0x16F93, 0x16F9F, prALetter}, // Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 + {0x16FE0, 0x16FE1, prALetter}, // Lm [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK + {0x16FE3, 0x16FE3, prALetter}, // Lm OLD CHINESE ITERATION MARK + {0x16FE4, 0x16FE4, prExtend}, // Mn KHITAN SMALL SCRIPT FILLER + {0x16FF0, 0x16FF1, prExtend}, // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY + {0x1AFF0, 0x1AFF3, prKatakana}, // Lm [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5 + {0x1AFF5, 0x1AFFB, prKatakana}, // Lm [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5 + {0x1AFFD, 0x1AFFE, prKatakana}, // Lm [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8 + {0x1B000, 0x1B000, prKatakana}, // Lo KATAKANA LETTER ARCHAIC E + {0x1B120, 0x1B122, prKatakana}, // Lo [3] KATAKANA LETTER ARCHAIC YI..KATAKANA LETTER ARCHAIC WU + {0x1B155, 0x1B155, prKatakana}, // Lo KATAKANA LETTER SMALL KO + {0x1B164, 0x1B167, prKatakana}, // Lo [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N + {0x1BC00, 0x1BC6A, prALetter}, // Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M + {0x1BC70, 0x1BC7C, prALetter}, // Lo [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK + {0x1BC80, 0x1BC88, prALetter}, // Lo [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL + {0x1BC90, 0x1BC99, prALetter}, // Lo [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW + {0x1BC9D, 0x1BC9E, prExtend}, // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK + {0x1BCA0, 0x1BCA3, prFormat}, // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP + {0x1CF00, 0x1CF2D, prExtend}, // Mn [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT + {0x1CF30, 0x1CF46, prExtend}, // Mn [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG + {0x1D165, 0x1D166, prExtend}, // Mc [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM + {0x1D167, 0x1D169, prExtend}, // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3 + {0x1D16D, 0x1D172, prExtend}, // Mc [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5 + {0x1D173, 0x1D17A, prFormat}, // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE + {0x1D17B, 0x1D182, prExtend}, // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE + {0x1D185, 0x1D18B, prExtend}, // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE + {0x1D1AA, 0x1D1AD, prExtend}, // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO + {0x1D242, 0x1D244, prExtend}, // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME + {0x1D400, 0x1D454, prALetter}, // L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G + {0x1D456, 0x1D49C, prALetter}, // L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A + {0x1D49E, 0x1D49F, prALetter}, // L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D + {0x1D4A2, 0x1D4A2, prALetter}, // L& MATHEMATICAL SCRIPT CAPITAL G + {0x1D4A5, 0x1D4A6, prALetter}, // L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K + {0x1D4A9, 0x1D4AC, prALetter}, // L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q + {0x1D4AE, 0x1D4B9, prALetter}, // L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D + {0x1D4BB, 0x1D4BB, prALetter}, // L& MATHEMATICAL SCRIPT SMALL F + {0x1D4BD, 0x1D4C3, prALetter}, // L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N + {0x1D4C5, 0x1D505, prALetter}, // L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B + {0x1D507, 0x1D50A, prALetter}, // L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G + {0x1D50D, 0x1D514, prALetter}, // L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q + {0x1D516, 0x1D51C, prALetter}, // L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y + {0x1D51E, 0x1D539, prALetter}, // L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B + {0x1D53B, 0x1D53E, prALetter}, // L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G + {0x1D540, 0x1D544, prALetter}, // L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M + {0x1D546, 0x1D546, prALetter}, // L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O + {0x1D54A, 0x1D550, prALetter}, // L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y + {0x1D552, 0x1D6A5, prALetter}, // L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J + {0x1D6A8, 0x1D6C0, prALetter}, // L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA + {0x1D6C2, 0x1D6DA, prALetter}, // L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA + {0x1D6DC, 0x1D6FA, prALetter}, // L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA + {0x1D6FC, 0x1D714, prALetter}, // L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA + {0x1D716, 0x1D734, prALetter}, // L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA + {0x1D736, 0x1D74E, prALetter}, // L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA + {0x1D750, 0x1D76E, prALetter}, // L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA + {0x1D770, 0x1D788, prALetter}, // L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA + {0x1D78A, 0x1D7A8, prALetter}, // L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA + {0x1D7AA, 0x1D7C2, prALetter}, // L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA + {0x1D7C4, 0x1D7CB, prALetter}, // L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA + {0x1D7CE, 0x1D7FF, prNumeric}, // Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE + {0x1DA00, 0x1DA36, prExtend}, // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN + {0x1DA3B, 0x1DA6C, prExtend}, // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT + {0x1DA75, 0x1DA75, prExtend}, // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS + {0x1DA84, 0x1DA84, prExtend}, // Mn SIGNWRITING LOCATION HEAD NECK + {0x1DA9B, 0x1DA9F, prExtend}, // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6 + {0x1DAA1, 0x1DAAF, prExtend}, // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16 + {0x1DF00, 0x1DF09, prALetter}, // L& [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK + {0x1DF0A, 0x1DF0A, prALetter}, // Lo LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK + {0x1DF0B, 0x1DF1E, prALetter}, // L& [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL + {0x1DF25, 0x1DF2A, prALetter}, // L& [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK + {0x1E000, 0x1E006, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE + {0x1E008, 0x1E018, prExtend}, // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU + {0x1E01B, 0x1E021, prExtend}, // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI + {0x1E023, 0x1E024, prExtend}, // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS + {0x1E026, 0x1E02A, prExtend}, // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA + {0x1E030, 0x1E06D, prALetter}, // Lm [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE + {0x1E08F, 0x1E08F, prExtend}, // Mn COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + {0x1E100, 0x1E12C, prALetter}, // Lo [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W + {0x1E130, 0x1E136, prExtend}, // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D + {0x1E137, 0x1E13D, prALetter}, // Lm [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER + {0x1E140, 0x1E149, prNumeric}, // Nd [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE + {0x1E14E, 0x1E14E, prALetter}, // Lo NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ + {0x1E290, 0x1E2AD, prALetter}, // Lo [30] TOTO LETTER PA..TOTO LETTER A + {0x1E2AE, 0x1E2AE, prExtend}, // Mn TOTO SIGN RISING TONE + {0x1E2C0, 0x1E2EB, prALetter}, // Lo [44] WANCHO LETTER AA..WANCHO LETTER YIH + {0x1E2EC, 0x1E2EF, prExtend}, // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI + {0x1E2F0, 0x1E2F9, prNumeric}, // Nd [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE + {0x1E4D0, 0x1E4EA, prALetter}, // Lo [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL + {0x1E4EB, 0x1E4EB, prALetter}, // Lm NAG MUNDARI SIGN OJOD + {0x1E4EC, 0x1E4EF, prExtend}, // Mn [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH + {0x1E4F0, 0x1E4F9, prNumeric}, // Nd [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE + {0x1E7E0, 0x1E7E6, prALetter}, // Lo [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO + {0x1E7E8, 0x1E7EB, prALetter}, // Lo [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE + {0x1E7ED, 0x1E7EE, prALetter}, // Lo [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE + {0x1E7F0, 0x1E7FE, prALetter}, // Lo [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE + {0x1E800, 0x1E8C4, prALetter}, // Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON + {0x1E8D0, 0x1E8D6, prExtend}, // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS + {0x1E900, 0x1E943, prALetter}, // L& [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA + {0x1E944, 0x1E94A, prExtend}, // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA + {0x1E94B, 0x1E94B, prALetter}, // Lm ADLAM NASALIZATION MARK + {0x1E950, 0x1E959, prNumeric}, // Nd [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE + {0x1EE00, 0x1EE03, prALetter}, // Lo [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL + {0x1EE05, 0x1EE1F, prALetter}, // Lo [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF + {0x1EE21, 0x1EE22, prALetter}, // Lo [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM + {0x1EE24, 0x1EE24, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL HEH + {0x1EE27, 0x1EE27, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL HAH + {0x1EE29, 0x1EE32, prALetter}, // Lo [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF + {0x1EE34, 0x1EE37, prALetter}, // Lo [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH + {0x1EE39, 0x1EE39, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL DAD + {0x1EE3B, 0x1EE3B, prALetter}, // Lo ARABIC MATHEMATICAL INITIAL GHAIN + {0x1EE42, 0x1EE42, prALetter}, // Lo ARABIC MATHEMATICAL TAILED JEEM + {0x1EE47, 0x1EE47, prALetter}, // Lo ARABIC MATHEMATICAL TAILED HAH + {0x1EE49, 0x1EE49, prALetter}, // Lo ARABIC MATHEMATICAL TAILED YEH + {0x1EE4B, 0x1EE4B, prALetter}, // Lo ARABIC MATHEMATICAL TAILED LAM + {0x1EE4D, 0x1EE4F, prALetter}, // Lo [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN + {0x1EE51, 0x1EE52, prALetter}, // Lo [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF + {0x1EE54, 0x1EE54, prALetter}, // Lo ARABIC MATHEMATICAL TAILED SHEEN + {0x1EE57, 0x1EE57, prALetter}, // Lo ARABIC MATHEMATICAL TAILED KHAH + {0x1EE59, 0x1EE59, prALetter}, // Lo ARABIC MATHEMATICAL TAILED DAD + {0x1EE5B, 0x1EE5B, prALetter}, // Lo ARABIC MATHEMATICAL TAILED GHAIN + {0x1EE5D, 0x1EE5D, prALetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS NOON + {0x1EE5F, 0x1EE5F, prALetter}, // Lo ARABIC MATHEMATICAL TAILED DOTLESS QAF + {0x1EE61, 0x1EE62, prALetter}, // Lo [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM + {0x1EE64, 0x1EE64, prALetter}, // Lo ARABIC MATHEMATICAL STRETCHED HEH + {0x1EE67, 0x1EE6A, prALetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF + {0x1EE6C, 0x1EE72, prALetter}, // Lo [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF + {0x1EE74, 0x1EE77, prALetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH + {0x1EE79, 0x1EE7C, prALetter}, // Lo [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH + {0x1EE7E, 0x1EE7E, prALetter}, // Lo ARABIC MATHEMATICAL STRETCHED DOTLESS FEH + {0x1EE80, 0x1EE89, prALetter}, // Lo [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH + {0x1EE8B, 0x1EE9B, prALetter}, // Lo [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN + {0x1EEA1, 0x1EEA3, prALetter}, // Lo [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL + {0x1EEA5, 0x1EEA9, prALetter}, // Lo [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH + {0x1EEAB, 0x1EEBB, prALetter}, // Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN + {0x1F000, 0x1F003, prExtendedPictographic}, // E0.0 [4] (🀀..🀃) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND + {0x1F004, 0x1F004, prExtendedPictographic}, // E0.6 [1] (🀄) mahjong red dragon + {0x1F005, 0x1F0CE, prExtendedPictographic}, // E0.0 [202] (🀅..🃎) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS + {0x1F0CF, 0x1F0CF, prExtendedPictographic}, // E0.6 [1] (🃏) joker + {0x1F0D0, 0x1F0FF, prExtendedPictographic}, // E0.0 [48] (🃐..🃿) .. + {0x1F10D, 0x1F10F, prExtendedPictographic}, // E0.0 [3] (🄍..🄏) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH + {0x1F12F, 0x1F12F, prExtendedPictographic}, // E0.0 [1] (🄯) COPYLEFT SYMBOL + {0x1F130, 0x1F149, prALetter}, // So [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z + {0x1F150, 0x1F169, prALetter}, // So [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z + {0x1F16C, 0x1F16F, prExtendedPictographic}, // E0.0 [4] (🅬..🅯) RAISED MR SIGN..CIRCLED HUMAN FIGURE + {0x1F170, 0x1F189, prALetter}, // So [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z + {0x1F170, 0x1F171, prExtendedPictographic}, // E0.6 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) + {0x1F17E, 0x1F17F, prExtendedPictographic}, // E0.6 [2] (🅾️..🅿️) O button (blood type)..P button + {0x1F18E, 0x1F18E, prExtendedPictographic}, // E0.6 [1] (🆎) AB button (blood type) + {0x1F191, 0x1F19A, prExtendedPictographic}, // E0.6 [10] (🆑..🆚) CL button..VS button + {0x1F1AD, 0x1F1E5, prExtendedPictographic}, // E0.0 [57] (🆭..🇥) MASK WORK SYMBOL.. + {0x1F1E6, 0x1F1FF, prRegionalIndicator}, // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z + {0x1F201, 0x1F202, prExtendedPictographic}, // E0.6 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button + {0x1F203, 0x1F20F, prExtendedPictographic}, // E0.0 [13] (🈃..🈏) .. + {0x1F21A, 0x1F21A, prExtendedPictographic}, // E0.6 [1] (🈚) Japanese “free of charge” button + {0x1F22F, 0x1F22F, prExtendedPictographic}, // E0.6 [1] (🈯) Japanese “reserved” button + {0x1F232, 0x1F23A, prExtendedPictographic}, // E0.6 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button + {0x1F23C, 0x1F23F, prExtendedPictographic}, // E0.0 [4] (🈼..🈿) .. + {0x1F249, 0x1F24F, prExtendedPictographic}, // E0.0 [7] (🉉..🉏) .. + {0x1F250, 0x1F251, prExtendedPictographic}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button + {0x1F252, 0x1F2FF, prExtendedPictographic}, // E0.0 [174] (🉒..🋿) .. + {0x1F300, 0x1F30C, prExtendedPictographic}, // E0.6 [13] (🌀..🌌) cyclone..milky way + {0x1F30D, 0x1F30E, prExtendedPictographic}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas + {0x1F30F, 0x1F30F, prExtendedPictographic}, // E0.6 [1] (🌏) globe showing Asia-Australia + {0x1F310, 0x1F310, prExtendedPictographic}, // E1.0 [1] (🌐) globe with meridians + {0x1F311, 0x1F311, prExtendedPictographic}, // E0.6 [1] (🌑) new moon + {0x1F312, 0x1F312, prExtendedPictographic}, // E1.0 [1] (🌒) waxing crescent moon + {0x1F313, 0x1F315, prExtendedPictographic}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon + {0x1F316, 0x1F318, prExtendedPictographic}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon + {0x1F319, 0x1F319, prExtendedPictographic}, // E0.6 [1] (🌙) crescent moon + {0x1F31A, 0x1F31A, prExtendedPictographic}, // E1.0 [1] (🌚) new moon face + {0x1F31B, 0x1F31B, prExtendedPictographic}, // E0.6 [1] (🌛) first quarter moon face + {0x1F31C, 0x1F31C, prExtendedPictographic}, // E0.7 [1] (🌜) last quarter moon face + {0x1F31D, 0x1F31E, prExtendedPictographic}, // E1.0 [2] (🌝..🌞) full moon face..sun with face + {0x1F31F, 0x1F320, prExtendedPictographic}, // E0.6 [2] (🌟..🌠) glowing star..shooting star + {0x1F321, 0x1F321, prExtendedPictographic}, // E0.7 [1] (🌡️) thermometer + {0x1F322, 0x1F323, prExtendedPictographic}, // E0.0 [2] (🌢..🌣) BLACK DROPLET..WHITE SUN + {0x1F324, 0x1F32C, prExtendedPictographic}, // E0.7 [9] (🌤️..🌬️) sun behind small cloud..wind face + {0x1F32D, 0x1F32F, prExtendedPictographic}, // E1.0 [3] (🌭..🌯) hot dog..burrito + {0x1F330, 0x1F331, prExtendedPictographic}, // E0.6 [2] (🌰..🌱) chestnut..seedling + {0x1F332, 0x1F333, prExtendedPictographic}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree + {0x1F334, 0x1F335, prExtendedPictographic}, // E0.6 [2] (🌴..🌵) palm tree..cactus + {0x1F336, 0x1F336, prExtendedPictographic}, // E0.7 [1] (🌶️) hot pepper + {0x1F337, 0x1F34A, prExtendedPictographic}, // E0.6 [20] (🌷..🍊) tulip..tangerine + {0x1F34B, 0x1F34B, prExtendedPictographic}, // E1.0 [1] (🍋) lemon + {0x1F34C, 0x1F34F, prExtendedPictographic}, // E0.6 [4] (🍌..🍏) banana..green apple + {0x1F350, 0x1F350, prExtendedPictographic}, // E1.0 [1] (🍐) pear + {0x1F351, 0x1F37B, prExtendedPictographic}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs + {0x1F37C, 0x1F37C, prExtendedPictographic}, // E1.0 [1] (🍼) baby bottle + {0x1F37D, 0x1F37D, prExtendedPictographic}, // E0.7 [1] (🍽️) fork and knife with plate + {0x1F37E, 0x1F37F, prExtendedPictographic}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn + {0x1F380, 0x1F393, prExtendedPictographic}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap + {0x1F394, 0x1F395, prExtendedPictographic}, // E0.0 [2] (🎔..🎕) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS + {0x1F396, 0x1F397, prExtendedPictographic}, // E0.7 [2] (🎖️..🎗️) military medal..reminder ribbon + {0x1F398, 0x1F398, prExtendedPictographic}, // E0.0 [1] (🎘) MUSICAL KEYBOARD WITH JACKS + {0x1F399, 0x1F39B, prExtendedPictographic}, // E0.7 [3] (🎙️..🎛️) studio microphone..control knobs + {0x1F39C, 0x1F39D, prExtendedPictographic}, // E0.0 [2] (🎜..🎝) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES + {0x1F39E, 0x1F39F, prExtendedPictographic}, // E0.7 [2] (🎞️..🎟️) film frames..admission tickets + {0x1F3A0, 0x1F3C4, prExtendedPictographic}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing + {0x1F3C5, 0x1F3C5, prExtendedPictographic}, // E1.0 [1] (🏅) sports medal + {0x1F3C6, 0x1F3C6, prExtendedPictographic}, // E0.6 [1] (🏆) trophy + {0x1F3C7, 0x1F3C7, prExtendedPictographic}, // E1.0 [1] (🏇) horse racing + {0x1F3C8, 0x1F3C8, prExtendedPictographic}, // E0.6 [1] (🏈) american football + {0x1F3C9, 0x1F3C9, prExtendedPictographic}, // E1.0 [1] (🏉) rugby football + {0x1F3CA, 0x1F3CA, prExtendedPictographic}, // E0.6 [1] (🏊) person swimming + {0x1F3CB, 0x1F3CE, prExtendedPictographic}, // E0.7 [4] (🏋️..🏎️) person lifting weights..racing car + {0x1F3CF, 0x1F3D3, prExtendedPictographic}, // E1.0 [5] (🏏..🏓) cricket game..ping pong + {0x1F3D4, 0x1F3DF, prExtendedPictographic}, // E0.7 [12] (🏔️..🏟️) snow-capped mountain..stadium + {0x1F3E0, 0x1F3E3, prExtendedPictographic}, // E0.6 [4] (🏠..🏣) house..Japanese post office + {0x1F3E4, 0x1F3E4, prExtendedPictographic}, // E1.0 [1] (🏤) post office + {0x1F3E5, 0x1F3F0, prExtendedPictographic}, // E0.6 [12] (🏥..🏰) hospital..castle + {0x1F3F1, 0x1F3F2, prExtendedPictographic}, // E0.0 [2] (🏱..🏲) WHITE PENNANT..BLACK PENNANT + {0x1F3F3, 0x1F3F3, prExtendedPictographic}, // E0.7 [1] (🏳️) white flag + {0x1F3F4, 0x1F3F4, prExtendedPictographic}, // E1.0 [1] (🏴) black flag + {0x1F3F5, 0x1F3F5, prExtendedPictographic}, // E0.7 [1] (🏵️) rosette + {0x1F3F6, 0x1F3F6, prExtendedPictographic}, // E0.0 [1] (🏶) BLACK ROSETTE + {0x1F3F7, 0x1F3F7, prExtendedPictographic}, // E0.7 [1] (🏷️) label + {0x1F3F8, 0x1F3FA, prExtendedPictographic}, // E1.0 [3] (🏸..🏺) badminton..amphora + {0x1F3FB, 0x1F3FF, prExtend}, // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6 + {0x1F400, 0x1F407, prExtendedPictographic}, // E1.0 [8] (🐀..🐇) rat..rabbit + {0x1F408, 0x1F408, prExtendedPictographic}, // E0.7 [1] (🐈) cat + {0x1F409, 0x1F40B, prExtendedPictographic}, // E1.0 [3] (🐉..🐋) dragon..whale + {0x1F40C, 0x1F40E, prExtendedPictographic}, // E0.6 [3] (🐌..🐎) snail..horse + {0x1F40F, 0x1F410, prExtendedPictographic}, // E1.0 [2] (🐏..🐐) ram..goat + {0x1F411, 0x1F412, prExtendedPictographic}, // E0.6 [2] (🐑..🐒) ewe..monkey + {0x1F413, 0x1F413, prExtendedPictographic}, // E1.0 [1] (🐓) rooster + {0x1F414, 0x1F414, prExtendedPictographic}, // E0.6 [1] (🐔) chicken + {0x1F415, 0x1F415, prExtendedPictographic}, // E0.7 [1] (🐕) dog + {0x1F416, 0x1F416, prExtendedPictographic}, // E1.0 [1] (🐖) pig + {0x1F417, 0x1F429, prExtendedPictographic}, // E0.6 [19] (🐗..🐩) boar..poodle + {0x1F42A, 0x1F42A, prExtendedPictographic}, // E1.0 [1] (🐪) camel + {0x1F42B, 0x1F43E, prExtendedPictographic}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints + {0x1F43F, 0x1F43F, prExtendedPictographic}, // E0.7 [1] (🐿️) chipmunk + {0x1F440, 0x1F440, prExtendedPictographic}, // E0.6 [1] (👀) eyes + {0x1F441, 0x1F441, prExtendedPictographic}, // E0.7 [1] (👁️) eye + {0x1F442, 0x1F464, prExtendedPictographic}, // E0.6 [35] (👂..👤) ear..bust in silhouette + {0x1F465, 0x1F465, prExtendedPictographic}, // E1.0 [1] (👥) busts in silhouette + {0x1F466, 0x1F46B, prExtendedPictographic}, // E0.6 [6] (👦..👫) boy..woman and man holding hands + {0x1F46C, 0x1F46D, prExtendedPictographic}, // E1.0 [2] (👬..👭) men holding hands..women holding hands + {0x1F46E, 0x1F4AC, prExtendedPictographic}, // E0.6 [63] (👮..💬) police officer..speech balloon + {0x1F4AD, 0x1F4AD, prExtendedPictographic}, // E1.0 [1] (💭) thought balloon + {0x1F4AE, 0x1F4B5, prExtendedPictographic}, // E0.6 [8] (💮..💵) white flower..dollar banknote + {0x1F4B6, 0x1F4B7, prExtendedPictographic}, // E1.0 [2] (💶..💷) euro banknote..pound banknote + {0x1F4B8, 0x1F4EB, prExtendedPictographic}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag + {0x1F4EC, 0x1F4ED, prExtendedPictographic}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag + {0x1F4EE, 0x1F4EE, prExtendedPictographic}, // E0.6 [1] (📮) postbox + {0x1F4EF, 0x1F4EF, prExtendedPictographic}, // E1.0 [1] (📯) postal horn + {0x1F4F0, 0x1F4F4, prExtendedPictographic}, // E0.6 [5] (📰..📴) newspaper..mobile phone off + {0x1F4F5, 0x1F4F5, prExtendedPictographic}, // E1.0 [1] (📵) no mobile phones + {0x1F4F6, 0x1F4F7, prExtendedPictographic}, // E0.6 [2] (📶..📷) antenna bars..camera + {0x1F4F8, 0x1F4F8, prExtendedPictographic}, // E1.0 [1] (📸) camera with flash + {0x1F4F9, 0x1F4FC, prExtendedPictographic}, // E0.6 [4] (📹..📼) video camera..videocassette + {0x1F4FD, 0x1F4FD, prExtendedPictographic}, // E0.7 [1] (📽️) film projector + {0x1F4FE, 0x1F4FE, prExtendedPictographic}, // E0.0 [1] (📾) PORTABLE STEREO + {0x1F4FF, 0x1F502, prExtendedPictographic}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button + {0x1F503, 0x1F503, prExtendedPictographic}, // E0.6 [1] (🔃) clockwise vertical arrows + {0x1F504, 0x1F507, prExtendedPictographic}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker + {0x1F508, 0x1F508, prExtendedPictographic}, // E0.7 [1] (🔈) speaker low volume + {0x1F509, 0x1F509, prExtendedPictographic}, // E1.0 [1] (🔉) speaker medium volume + {0x1F50A, 0x1F514, prExtendedPictographic}, // E0.6 [11] (🔊..🔔) speaker high volume..bell + {0x1F515, 0x1F515, prExtendedPictographic}, // E1.0 [1] (🔕) bell with slash + {0x1F516, 0x1F52B, prExtendedPictographic}, // E0.6 [22] (🔖..🔫) bookmark..water pistol + {0x1F52C, 0x1F52D, prExtendedPictographic}, // E1.0 [2] (🔬..🔭) microscope..telescope + {0x1F52E, 0x1F53D, prExtendedPictographic}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button + {0x1F546, 0x1F548, prExtendedPictographic}, // E0.0 [3] (🕆..🕈) WHITE LATIN CROSS..CELTIC CROSS + {0x1F549, 0x1F54A, prExtendedPictographic}, // E0.7 [2] (🕉️..🕊️) om..dove + {0x1F54B, 0x1F54E, prExtendedPictographic}, // E1.0 [4] (🕋..🕎) kaaba..menorah + {0x1F54F, 0x1F54F, prExtendedPictographic}, // E0.0 [1] (🕏) BOWL OF HYGIEIA + {0x1F550, 0x1F55B, prExtendedPictographic}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock + {0x1F55C, 0x1F567, prExtendedPictographic}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty + {0x1F568, 0x1F56E, prExtendedPictographic}, // E0.0 [7] (🕨..🕮) RIGHT SPEAKER..BOOK + {0x1F56F, 0x1F570, prExtendedPictographic}, // E0.7 [2] (🕯️..🕰️) candle..mantelpiece clock + {0x1F571, 0x1F572, prExtendedPictographic}, // E0.0 [2] (🕱..🕲) BLACK SKULL AND CROSSBONES..NO PIRACY + {0x1F573, 0x1F579, prExtendedPictographic}, // E0.7 [7] (🕳️..🕹️) hole..joystick + {0x1F57A, 0x1F57A, prExtendedPictographic}, // E3.0 [1] (🕺) man dancing + {0x1F57B, 0x1F586, prExtendedPictographic}, // E0.0 [12] (🕻..🖆) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE + {0x1F587, 0x1F587, prExtendedPictographic}, // E0.7 [1] (🖇️) linked paperclips + {0x1F588, 0x1F589, prExtendedPictographic}, // E0.0 [2] (🖈..🖉) BLACK PUSHPIN..LOWER LEFT PENCIL + {0x1F58A, 0x1F58D, prExtendedPictographic}, // E0.7 [4] (🖊️..🖍️) pen..crayon + {0x1F58E, 0x1F58F, prExtendedPictographic}, // E0.0 [2] (🖎..🖏) LEFT WRITING HAND..TURNED OK HAND SIGN + {0x1F590, 0x1F590, prExtendedPictographic}, // E0.7 [1] (🖐️) hand with fingers splayed + {0x1F591, 0x1F594, prExtendedPictographic}, // E0.0 [4] (🖑..🖔) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND + {0x1F595, 0x1F596, prExtendedPictographic}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute + {0x1F597, 0x1F5A3, prExtendedPictographic}, // E0.0 [13] (🖗..🖣) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX + {0x1F5A4, 0x1F5A4, prExtendedPictographic}, // E3.0 [1] (🖤) black heart + {0x1F5A5, 0x1F5A5, prExtendedPictographic}, // E0.7 [1] (🖥️) desktop computer + {0x1F5A6, 0x1F5A7, prExtendedPictographic}, // E0.0 [2] (🖦..🖧) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS + {0x1F5A8, 0x1F5A8, prExtendedPictographic}, // E0.7 [1] (🖨️) printer + {0x1F5A9, 0x1F5B0, prExtendedPictographic}, // E0.0 [8] (🖩..🖰) POCKET CALCULATOR..TWO BUTTON MOUSE + {0x1F5B1, 0x1F5B2, prExtendedPictographic}, // E0.7 [2] (🖱️..🖲️) computer mouse..trackball + {0x1F5B3, 0x1F5BB, prExtendedPictographic}, // E0.0 [9] (🖳..🖻) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE + {0x1F5BC, 0x1F5BC, prExtendedPictographic}, // E0.7 [1] (🖼️) framed picture + {0x1F5BD, 0x1F5C1, prExtendedPictographic}, // E0.0 [5] (🖽..🗁) FRAME WITH TILES..OPEN FOLDER + {0x1F5C2, 0x1F5C4, prExtendedPictographic}, // E0.7 [3] (🗂️..🗄️) card index dividers..file cabinet + {0x1F5C5, 0x1F5D0, prExtendedPictographic}, // E0.0 [12] (🗅..🗐) EMPTY NOTE..PAGES + {0x1F5D1, 0x1F5D3, prExtendedPictographic}, // E0.7 [3] (🗑️..🗓️) wastebasket..spiral calendar + {0x1F5D4, 0x1F5DB, prExtendedPictographic}, // E0.0 [8] (🗔..🗛) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL + {0x1F5DC, 0x1F5DE, prExtendedPictographic}, // E0.7 [3] (🗜️..🗞️) clamp..rolled-up newspaper + {0x1F5DF, 0x1F5E0, prExtendedPictographic}, // E0.0 [2] (🗟..🗠) PAGE WITH CIRCLED TEXT..STOCK CHART + {0x1F5E1, 0x1F5E1, prExtendedPictographic}, // E0.7 [1] (🗡️) dagger + {0x1F5E2, 0x1F5E2, prExtendedPictographic}, // E0.0 [1] (🗢) LIPS + {0x1F5E3, 0x1F5E3, prExtendedPictographic}, // E0.7 [1] (🗣️) speaking head + {0x1F5E4, 0x1F5E7, prExtendedPictographic}, // E0.0 [4] (🗤..🗧) THREE RAYS ABOVE..THREE RAYS RIGHT + {0x1F5E8, 0x1F5E8, prExtendedPictographic}, // E2.0 [1] (🗨️) left speech bubble + {0x1F5E9, 0x1F5EE, prExtendedPictographic}, // E0.0 [6] (🗩..🗮) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE + {0x1F5EF, 0x1F5EF, prExtendedPictographic}, // E0.7 [1] (🗯️) right anger bubble + {0x1F5F0, 0x1F5F2, prExtendedPictographic}, // E0.0 [3] (🗰..🗲) MOOD BUBBLE..LIGHTNING MOOD + {0x1F5F3, 0x1F5F3, prExtendedPictographic}, // E0.7 [1] (🗳️) ballot box with ballot + {0x1F5F4, 0x1F5F9, prExtendedPictographic}, // E0.0 [6] (🗴..🗹) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK + {0x1F5FA, 0x1F5FA, prExtendedPictographic}, // E0.7 [1] (🗺️) world map + {0x1F5FB, 0x1F5FF, prExtendedPictographic}, // E0.6 [5] (🗻..🗿) mount fuji..moai + {0x1F600, 0x1F600, prExtendedPictographic}, // E1.0 [1] (😀) grinning face + {0x1F601, 0x1F606, prExtendedPictographic}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face + {0x1F607, 0x1F608, prExtendedPictographic}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns + {0x1F609, 0x1F60D, prExtendedPictographic}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes + {0x1F60E, 0x1F60E, prExtendedPictographic}, // E1.0 [1] (😎) smiling face with sunglasses + {0x1F60F, 0x1F60F, prExtendedPictographic}, // E0.6 [1] (😏) smirking face + {0x1F610, 0x1F610, prExtendedPictographic}, // E0.7 [1] (😐) neutral face + {0x1F611, 0x1F611, prExtendedPictographic}, // E1.0 [1] (😑) expressionless face + {0x1F612, 0x1F614, prExtendedPictographic}, // E0.6 [3] (😒..😔) unamused face..pensive face + {0x1F615, 0x1F615, prExtendedPictographic}, // E1.0 [1] (😕) confused face + {0x1F616, 0x1F616, prExtendedPictographic}, // E0.6 [1] (😖) confounded face + {0x1F617, 0x1F617, prExtendedPictographic}, // E1.0 [1] (😗) kissing face + {0x1F618, 0x1F618, prExtendedPictographic}, // E0.6 [1] (😘) face blowing a kiss + {0x1F619, 0x1F619, prExtendedPictographic}, // E1.0 [1] (😙) kissing face with smiling eyes + {0x1F61A, 0x1F61A, prExtendedPictographic}, // E0.6 [1] (😚) kissing face with closed eyes + {0x1F61B, 0x1F61B, prExtendedPictographic}, // E1.0 [1] (😛) face with tongue + {0x1F61C, 0x1F61E, prExtendedPictographic}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face + {0x1F61F, 0x1F61F, prExtendedPictographic}, // E1.0 [1] (😟) worried face + {0x1F620, 0x1F625, prExtendedPictographic}, // E0.6 [6] (😠..😥) angry face..sad but relieved face + {0x1F626, 0x1F627, prExtendedPictographic}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face + {0x1F628, 0x1F62B, prExtendedPictographic}, // E0.6 [4] (😨..😫) fearful face..tired face + {0x1F62C, 0x1F62C, prExtendedPictographic}, // E1.0 [1] (😬) grimacing face + {0x1F62D, 0x1F62D, prExtendedPictographic}, // E0.6 [1] (😭) loudly crying face + {0x1F62E, 0x1F62F, prExtendedPictographic}, // E1.0 [2] (😮..😯) face with open mouth..hushed face + {0x1F630, 0x1F633, prExtendedPictographic}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face + {0x1F634, 0x1F634, prExtendedPictographic}, // E1.0 [1] (😴) sleeping face + {0x1F635, 0x1F635, prExtendedPictographic}, // E0.6 [1] (😵) face with crossed-out eyes + {0x1F636, 0x1F636, prExtendedPictographic}, // E1.0 [1] (😶) face without mouth + {0x1F637, 0x1F640, prExtendedPictographic}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat + {0x1F641, 0x1F644, prExtendedPictographic}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes + {0x1F645, 0x1F64F, prExtendedPictographic}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands + {0x1F680, 0x1F680, prExtendedPictographic}, // E0.6 [1] (🚀) rocket + {0x1F681, 0x1F682, prExtendedPictographic}, // E1.0 [2] (🚁..🚂) helicopter..locomotive + {0x1F683, 0x1F685, prExtendedPictographic}, // E0.6 [3] (🚃..🚅) railway car..bullet train + {0x1F686, 0x1F686, prExtendedPictographic}, // E1.0 [1] (🚆) train + {0x1F687, 0x1F687, prExtendedPictographic}, // E0.6 [1] (🚇) metro + {0x1F688, 0x1F688, prExtendedPictographic}, // E1.0 [1] (🚈) light rail + {0x1F689, 0x1F689, prExtendedPictographic}, // E0.6 [1] (🚉) station + {0x1F68A, 0x1F68B, prExtendedPictographic}, // E1.0 [2] (🚊..🚋) tram..tram car + {0x1F68C, 0x1F68C, prExtendedPictographic}, // E0.6 [1] (🚌) bus + {0x1F68D, 0x1F68D, prExtendedPictographic}, // E0.7 [1] (🚍) oncoming bus + {0x1F68E, 0x1F68E, prExtendedPictographic}, // E1.0 [1] (🚎) trolleybus + {0x1F68F, 0x1F68F, prExtendedPictographic}, // E0.6 [1] (🚏) bus stop + {0x1F690, 0x1F690, prExtendedPictographic}, // E1.0 [1] (🚐) minibus + {0x1F691, 0x1F693, prExtendedPictographic}, // E0.6 [3] (🚑..🚓) ambulance..police car + {0x1F694, 0x1F694, prExtendedPictographic}, // E0.7 [1] (🚔) oncoming police car + {0x1F695, 0x1F695, prExtendedPictographic}, // E0.6 [1] (🚕) taxi + {0x1F696, 0x1F696, prExtendedPictographic}, // E1.0 [1] (🚖) oncoming taxi + {0x1F697, 0x1F697, prExtendedPictographic}, // E0.6 [1] (🚗) automobile + {0x1F698, 0x1F698, prExtendedPictographic}, // E0.7 [1] (🚘) oncoming automobile + {0x1F699, 0x1F69A, prExtendedPictographic}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck + {0x1F69B, 0x1F6A1, prExtendedPictographic}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway + {0x1F6A2, 0x1F6A2, prExtendedPictographic}, // E0.6 [1] (🚢) ship + {0x1F6A3, 0x1F6A3, prExtendedPictographic}, // E1.0 [1] (🚣) person rowing boat + {0x1F6A4, 0x1F6A5, prExtendedPictographic}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light + {0x1F6A6, 0x1F6A6, prExtendedPictographic}, // E1.0 [1] (🚦) vertical traffic light + {0x1F6A7, 0x1F6AD, prExtendedPictographic}, // E0.6 [7] (🚧..🚭) construction..no smoking + {0x1F6AE, 0x1F6B1, prExtendedPictographic}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water + {0x1F6B2, 0x1F6B2, prExtendedPictographic}, // E0.6 [1] (🚲) bicycle + {0x1F6B3, 0x1F6B5, prExtendedPictographic}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking + {0x1F6B6, 0x1F6B6, prExtendedPictographic}, // E0.6 [1] (🚶) person walking + {0x1F6B7, 0x1F6B8, prExtendedPictographic}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing + {0x1F6B9, 0x1F6BE, prExtendedPictographic}, // E0.6 [6] (🚹..🚾) men’s room..water closet + {0x1F6BF, 0x1F6BF, prExtendedPictographic}, // E1.0 [1] (🚿) shower + {0x1F6C0, 0x1F6C0, prExtendedPictographic}, // E0.6 [1] (🛀) person taking bath + {0x1F6C1, 0x1F6C5, prExtendedPictographic}, // E1.0 [5] (🛁..🛅) bathtub..left luggage + {0x1F6C6, 0x1F6CA, prExtendedPictographic}, // E0.0 [5] (🛆..🛊) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL + {0x1F6CB, 0x1F6CB, prExtendedPictographic}, // E0.7 [1] (🛋️) couch and lamp + {0x1F6CC, 0x1F6CC, prExtendedPictographic}, // E1.0 [1] (🛌) person in bed + {0x1F6CD, 0x1F6CF, prExtendedPictographic}, // E0.7 [3] (🛍️..🛏️) shopping bags..bed + {0x1F6D0, 0x1F6D0, prExtendedPictographic}, // E1.0 [1] (🛐) place of worship + {0x1F6D1, 0x1F6D2, prExtendedPictographic}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart + {0x1F6D3, 0x1F6D4, prExtendedPictographic}, // E0.0 [2] (🛓..🛔) STUPA..PAGODA + {0x1F6D5, 0x1F6D5, prExtendedPictographic}, // E12.0 [1] (🛕) hindu temple + {0x1F6D6, 0x1F6D7, prExtendedPictographic}, // E13.0 [2] (🛖..🛗) hut..elevator + {0x1F6D8, 0x1F6DB, prExtendedPictographic}, // E0.0 [4] (🛘..🛛) .. + {0x1F6DC, 0x1F6DC, prExtendedPictographic}, // E15.0 [1] (🛜) wireless + {0x1F6DD, 0x1F6DF, prExtendedPictographic}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy + {0x1F6E0, 0x1F6E5, prExtendedPictographic}, // E0.7 [6] (🛠️..🛥️) hammer and wrench..motor boat + {0x1F6E6, 0x1F6E8, prExtendedPictographic}, // E0.0 [3] (🛦..🛨) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE + {0x1F6E9, 0x1F6E9, prExtendedPictographic}, // E0.7 [1] (🛩️) small airplane + {0x1F6EA, 0x1F6EA, prExtendedPictographic}, // E0.0 [1] (🛪) NORTHEAST-POINTING AIRPLANE + {0x1F6EB, 0x1F6EC, prExtendedPictographic}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival + {0x1F6ED, 0x1F6EF, prExtendedPictographic}, // E0.0 [3] (🛭..🛯) .. + {0x1F6F0, 0x1F6F0, prExtendedPictographic}, // E0.7 [1] (🛰️) satellite + {0x1F6F1, 0x1F6F2, prExtendedPictographic}, // E0.0 [2] (🛱..🛲) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE + {0x1F6F3, 0x1F6F3, prExtendedPictographic}, // E0.7 [1] (🛳️) passenger ship + {0x1F6F4, 0x1F6F6, prExtendedPictographic}, // E3.0 [3] (🛴..🛶) kick scooter..canoe + {0x1F6F7, 0x1F6F8, prExtendedPictographic}, // E5.0 [2] (🛷..🛸) sled..flying saucer + {0x1F6F9, 0x1F6F9, prExtendedPictographic}, // E11.0 [1] (🛹) skateboard + {0x1F6FA, 0x1F6FA, prExtendedPictographic}, // E12.0 [1] (🛺) auto rickshaw + {0x1F6FB, 0x1F6FC, prExtendedPictographic}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate + {0x1F6FD, 0x1F6FF, prExtendedPictographic}, // E0.0 [3] (🛽..🛿) .. + {0x1F774, 0x1F77F, prExtendedPictographic}, // E0.0 [12] (🝴..🝿) LOT OF FORTUNE..ORCUS + {0x1F7D5, 0x1F7DF, prExtendedPictographic}, // E0.0 [11] (🟕..🟟) CIRCLED TRIANGLE.. + {0x1F7E0, 0x1F7EB, prExtendedPictographic}, // E12.0 [12] (🟠..🟫) orange circle..brown square + {0x1F7EC, 0x1F7EF, prExtendedPictographic}, // E0.0 [4] (🟬..🟯) .. + {0x1F7F0, 0x1F7F0, prExtendedPictographic}, // E14.0 [1] (🟰) heavy equals sign + {0x1F7F1, 0x1F7FF, prExtendedPictographic}, // E0.0 [15] (🟱..🟿) .. + {0x1F80C, 0x1F80F, prExtendedPictographic}, // E0.0 [4] (🠌..🠏) .. + {0x1F848, 0x1F84F, prExtendedPictographic}, // E0.0 [8] (🡈..🡏) .. + {0x1F85A, 0x1F85F, prExtendedPictographic}, // E0.0 [6] (🡚..🡟) .. + {0x1F888, 0x1F88F, prExtendedPictographic}, // E0.0 [8] (🢈..🢏) .. + {0x1F8AE, 0x1F8FF, prExtendedPictographic}, // E0.0 [82] (🢮..🣿) .. + {0x1F90C, 0x1F90C, prExtendedPictographic}, // E13.0 [1] (🤌) pinched fingers + {0x1F90D, 0x1F90F, prExtendedPictographic}, // E12.0 [3] (🤍..🤏) white heart..pinching hand + {0x1F910, 0x1F918, prExtendedPictographic}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns + {0x1F919, 0x1F91E, prExtendedPictographic}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers + {0x1F91F, 0x1F91F, prExtendedPictographic}, // E5.0 [1] (🤟) love-you gesture + {0x1F920, 0x1F927, prExtendedPictographic}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face + {0x1F928, 0x1F92F, prExtendedPictographic}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head + {0x1F930, 0x1F930, prExtendedPictographic}, // E3.0 [1] (🤰) pregnant woman + {0x1F931, 0x1F932, prExtendedPictographic}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together + {0x1F933, 0x1F93A, prExtendedPictographic}, // E3.0 [8] (🤳..🤺) selfie..person fencing + {0x1F93C, 0x1F93E, prExtendedPictographic}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball + {0x1F93F, 0x1F93F, prExtendedPictographic}, // E12.0 [1] (🤿) diving mask + {0x1F940, 0x1F945, prExtendedPictographic}, // E3.0 [6] (🥀..🥅) wilted flower..goal net + {0x1F947, 0x1F94B, prExtendedPictographic}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform + {0x1F94C, 0x1F94C, prExtendedPictographic}, // E5.0 [1] (🥌) curling stone + {0x1F94D, 0x1F94F, prExtendedPictographic}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc + {0x1F950, 0x1F95E, prExtendedPictographic}, // E3.0 [15] (🥐..🥞) croissant..pancakes + {0x1F95F, 0x1F96B, prExtendedPictographic}, // E5.0 [13] (🥟..🥫) dumpling..canned food + {0x1F96C, 0x1F970, prExtendedPictographic}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts + {0x1F971, 0x1F971, prExtendedPictographic}, // E12.0 [1] (🥱) yawning face + {0x1F972, 0x1F972, prExtendedPictographic}, // E13.0 [1] (🥲) smiling face with tear + {0x1F973, 0x1F976, prExtendedPictographic}, // E11.0 [4] (🥳..🥶) partying face..cold face + {0x1F977, 0x1F978, prExtendedPictographic}, // E13.0 [2] (🥷..🥸) ninja..disguised face + {0x1F979, 0x1F979, prExtendedPictographic}, // E14.0 [1] (🥹) face holding back tears + {0x1F97A, 0x1F97A, prExtendedPictographic}, // E11.0 [1] (🥺) pleading face + {0x1F97B, 0x1F97B, prExtendedPictographic}, // E12.0 [1] (🥻) sari + {0x1F97C, 0x1F97F, prExtendedPictographic}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe + {0x1F980, 0x1F984, prExtendedPictographic}, // E1.0 [5] (🦀..🦄) crab..unicorn + {0x1F985, 0x1F991, prExtendedPictographic}, // E3.0 [13] (🦅..🦑) eagle..squid + {0x1F992, 0x1F997, prExtendedPictographic}, // E5.0 [6] (🦒..🦗) giraffe..cricket + {0x1F998, 0x1F9A2, prExtendedPictographic}, // E11.0 [11] (🦘..🦢) kangaroo..swan + {0x1F9A3, 0x1F9A4, prExtendedPictographic}, // E13.0 [2] (🦣..🦤) mammoth..dodo + {0x1F9A5, 0x1F9AA, prExtendedPictographic}, // E12.0 [6] (🦥..🦪) sloth..oyster + {0x1F9AB, 0x1F9AD, prExtendedPictographic}, // E13.0 [3] (🦫..🦭) beaver..seal + {0x1F9AE, 0x1F9AF, prExtendedPictographic}, // E12.0 [2] (🦮..🦯) guide dog..white cane + {0x1F9B0, 0x1F9B9, prExtendedPictographic}, // E11.0 [10] (🦰..🦹) red hair..supervillain + {0x1F9BA, 0x1F9BF, prExtendedPictographic}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg + {0x1F9C0, 0x1F9C0, prExtendedPictographic}, // E1.0 [1] (🧀) cheese wedge + {0x1F9C1, 0x1F9C2, prExtendedPictographic}, // E11.0 [2] (🧁..🧂) cupcake..salt + {0x1F9C3, 0x1F9CA, prExtendedPictographic}, // E12.0 [8] (🧃..🧊) beverage box..ice + {0x1F9CB, 0x1F9CB, prExtendedPictographic}, // E13.0 [1] (🧋) bubble tea + {0x1F9CC, 0x1F9CC, prExtendedPictographic}, // E14.0 [1] (🧌) troll + {0x1F9CD, 0x1F9CF, prExtendedPictographic}, // E12.0 [3] (🧍..🧏) person standing..deaf person + {0x1F9D0, 0x1F9E6, prExtendedPictographic}, // E5.0 [23] (🧐..🧦) face with monocle..socks + {0x1F9E7, 0x1F9FF, prExtendedPictographic}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet + {0x1FA00, 0x1FA6F, prExtendedPictographic}, // E0.0 [112] (🨀..🩯) NEUTRAL CHESS KING.. + {0x1FA70, 0x1FA73, prExtendedPictographic}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts + {0x1FA74, 0x1FA74, prExtendedPictographic}, // E13.0 [1] (🩴) thong sandal + {0x1FA75, 0x1FA77, prExtendedPictographic}, // E15.0 [3] (🩵..🩷) light blue heart..pink heart + {0x1FA78, 0x1FA7A, prExtendedPictographic}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope + {0x1FA7B, 0x1FA7C, prExtendedPictographic}, // E14.0 [2] (🩻..🩼) x-ray..crutch + {0x1FA7D, 0x1FA7F, prExtendedPictographic}, // E0.0 [3] (🩽..🩿) .. + {0x1FA80, 0x1FA82, prExtendedPictographic}, // E12.0 [3] (🪀..🪂) yo-yo..parachute + {0x1FA83, 0x1FA86, prExtendedPictographic}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls + {0x1FA87, 0x1FA88, prExtendedPictographic}, // E15.0 [2] (🪇..🪈) maracas..flute + {0x1FA89, 0x1FA8F, prExtendedPictographic}, // E0.0 [7] (🪉..🪏) .. + {0x1FA90, 0x1FA95, prExtendedPictographic}, // E12.0 [6] (🪐..🪕) ringed planet..banjo + {0x1FA96, 0x1FAA8, prExtendedPictographic}, // E13.0 [19] (🪖..🪨) military helmet..rock + {0x1FAA9, 0x1FAAC, prExtendedPictographic}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa + {0x1FAAD, 0x1FAAF, prExtendedPictographic}, // E15.0 [3] (🪭..🪯) folding hand fan..khanda + {0x1FAB0, 0x1FAB6, prExtendedPictographic}, // E13.0 [7] (🪰..🪶) fly..feather + {0x1FAB7, 0x1FABA, prExtendedPictographic}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs + {0x1FABB, 0x1FABD, prExtendedPictographic}, // E15.0 [3] (🪻..🪽) hyacinth..wing + {0x1FABE, 0x1FABE, prExtendedPictographic}, // E0.0 [1] (🪾) + {0x1FABF, 0x1FABF, prExtendedPictographic}, // E15.0 [1] (🪿) goose + {0x1FAC0, 0x1FAC2, prExtendedPictographic}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging + {0x1FAC3, 0x1FAC5, prExtendedPictographic}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown + {0x1FAC6, 0x1FACD, prExtendedPictographic}, // E0.0 [8] (🫆..🫍) .. + {0x1FACE, 0x1FACF, prExtendedPictographic}, // E15.0 [2] (🫎..🫏) moose..donkey + {0x1FAD0, 0x1FAD6, prExtendedPictographic}, // E13.0 [7] (🫐..🫖) blueberries..teapot + {0x1FAD7, 0x1FAD9, prExtendedPictographic}, // E14.0 [3] (🫗..🫙) pouring liquid..jar + {0x1FADA, 0x1FADB, prExtendedPictographic}, // E15.0 [2] (🫚..🫛) ginger root..pea pod + {0x1FADC, 0x1FADF, prExtendedPictographic}, // E0.0 [4] (🫜..🫟) .. + {0x1FAE0, 0x1FAE7, prExtendedPictographic}, // E14.0 [8] (🫠..🫧) melting face..bubbles + {0x1FAE8, 0x1FAE8, prExtendedPictographic}, // E15.0 [1] (🫨) shaking face + {0x1FAE9, 0x1FAEF, prExtendedPictographic}, // E0.0 [7] (🫩..🫯) .. + {0x1FAF0, 0x1FAF6, prExtendedPictographic}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands + {0x1FAF7, 0x1FAF8, prExtendedPictographic}, // E15.0 [2] (🫷..🫸) leftwards pushing hand..rightwards pushing hand + {0x1FAF9, 0x1FAFF, prExtendedPictographic}, // E0.0 [7] (🫹..🫿) .. + {0x1FBF0, 0x1FBF9, prNumeric}, // Nd [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE + {0x1FC00, 0x1FFFD, prExtendedPictographic}, // E0.0[1022] (🰀..🿽) .. + {0xE0001, 0xE0001, prFormat}, // Cf LANGUAGE TAG + {0xE0020, 0xE007F, prExtend}, // Cf [96] TAG SPACE..CANCEL TAG + {0xE0100, 0xE01EF, prExtend}, // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256 +} diff --git a/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordrules.go b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordrules.go new file mode 100644 index 0000000..57a8c68 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/rivo/uniseg/wordrules.go @@ -0,0 +1,282 @@ +package uniseg + +import "unicode/utf8" + +// The states of the word break parser. +const ( + wbAny = iota + wbCR + wbLF + wbNewline + wbWSegSpace + wbHebrewLetter + wbALetter + wbWB7 + wbWB7c + wbNumeric + wbWB11 + wbKatakana + wbExtendNumLet + wbOddRI + wbEvenRI + wbZWJBit = 16 // This bit is set for any states followed by at least one zero-width joiner (see WB4 and WB3c). +) + +// wbTransitions implements the word break parser's state transitions. It's +// anologous to [grTransitions], see comments there for details. +// +// Unicode version 15.0.0. +func wbTransitions(state, prop int) (newState int, wordBreak bool, rule int) { + switch uint64(state) | uint64(prop)<<32 { + // WB3b. + case wbAny | prNewline<<32: + return wbNewline, true, 32 + case wbAny | prCR<<32: + return wbCR, true, 32 + case wbAny | prLF<<32: + return wbLF, true, 32 + + // WB3a. + case wbNewline | prAny<<32: + return wbAny, true, 31 + case wbCR | prAny<<32: + return wbAny, true, 31 + case wbLF | prAny<<32: + return wbAny, true, 31 + + // WB3. + case wbCR | prLF<<32: + return wbLF, false, 30 + + // WB3d. + case wbAny | prWSegSpace<<32: + return wbWSegSpace, true, 9990 + case wbWSegSpace | prWSegSpace<<32: + return wbWSegSpace, false, 34 + + // WB5. + case wbAny | prALetter<<32: + return wbALetter, true, 9990 + case wbAny | prHebrewLetter<<32: + return wbHebrewLetter, true, 9990 + case wbALetter | prALetter<<32: + return wbALetter, false, 50 + case wbALetter | prHebrewLetter<<32: + return wbHebrewLetter, false, 50 + case wbHebrewLetter | prALetter<<32: + return wbALetter, false, 50 + case wbHebrewLetter | prHebrewLetter<<32: + return wbHebrewLetter, false, 50 + + // WB7. Transitions to wbWB7 handled by transitionWordBreakState(). + case wbWB7 | prALetter<<32: + return wbALetter, false, 70 + case wbWB7 | prHebrewLetter<<32: + return wbHebrewLetter, false, 70 + + // WB7a. + case wbHebrewLetter | prSingleQuote<<32: + return wbAny, false, 71 + + // WB7c. Transitions to wbWB7c handled by transitionWordBreakState(). + case wbWB7c | prHebrewLetter<<32: + return wbHebrewLetter, false, 73 + + // WB8. + case wbAny | prNumeric<<32: + return wbNumeric, true, 9990 + case wbNumeric | prNumeric<<32: + return wbNumeric, false, 80 + + // WB9. + case wbALetter | prNumeric<<32: + return wbNumeric, false, 90 + case wbHebrewLetter | prNumeric<<32: + return wbNumeric, false, 90 + + // WB10. + case wbNumeric | prALetter<<32: + return wbALetter, false, 100 + case wbNumeric | prHebrewLetter<<32: + return wbHebrewLetter, false, 100 + + // WB11. Transitions to wbWB11 handled by transitionWordBreakState(). + case wbWB11 | prNumeric<<32: + return wbNumeric, false, 110 + + // WB13. + case wbAny | prKatakana<<32: + return wbKatakana, true, 9990 + case wbKatakana | prKatakana<<32: + return wbKatakana, false, 130 + + // WB13a. + case wbAny | prExtendNumLet<<32: + return wbExtendNumLet, true, 9990 + case wbALetter | prExtendNumLet<<32: + return wbExtendNumLet, false, 131 + case wbHebrewLetter | prExtendNumLet<<32: + return wbExtendNumLet, false, 131 + case wbNumeric | prExtendNumLet<<32: + return wbExtendNumLet, false, 131 + case wbKatakana | prExtendNumLet<<32: + return wbExtendNumLet, false, 131 + case wbExtendNumLet | prExtendNumLet<<32: + return wbExtendNumLet, false, 131 + + // WB13b. + case wbExtendNumLet | prALetter<<32: + return wbALetter, false, 132 + case wbExtendNumLet | prHebrewLetter<<32: + return wbHebrewLetter, false, 132 + case wbExtendNumLet | prNumeric<<32: + return wbNumeric, false, 132 + case wbExtendNumLet | prKatakana<<32: + return wbKatakana, false, 132 + + default: + return -1, false, -1 + } +} + +// transitionWordBreakState determines the new state of the word break parser +// given the current state and the next code point. It also returns whether a +// word boundary was detected. If more than one code point is needed to +// determine the new state, the byte slice or the string starting after rune "r" +// can be used (whichever is not nil or empty) for further lookups. +func transitionWordBreakState(state int, r rune, b []byte, str string) (newState int, wordBreak bool) { + // Determine the property of the next character. + nextProperty := property(workBreakCodePoints, r) + + // "Replacing Ignore Rules". + if nextProperty == prZWJ { + // WB4 (for zero-width joiners). + if state == wbNewline || state == wbCR || state == wbLF { + return wbAny | wbZWJBit, true // Make sure we don't apply WB4 to WB3a. + } + if state < 0 { + return wbAny | wbZWJBit, false + } + return state | wbZWJBit, false + } else if nextProperty == prExtend || nextProperty == prFormat { + // WB4 (for Extend and Format). + if state == wbNewline || state == wbCR || state == wbLF { + return wbAny, true // Make sure we don't apply WB4 to WB3a. + } + if state == wbWSegSpace || state == wbAny|wbZWJBit { + return wbAny, false // We don't break but this is also not WB3d or WB3c. + } + if state < 0 { + return wbAny, false + } + return state, false + } else if nextProperty == prExtendedPictographic && state >= 0 && state&wbZWJBit != 0 { + // WB3c. + return wbAny, false + } + if state >= 0 { + state = state &^ wbZWJBit + } + + // Find the applicable transition in the table. + var rule int + newState, wordBreak, rule = wbTransitions(state, nextProperty) + if newState < 0 { + // No specific transition found. Try the less specific ones. + anyPropState, anyPropWordBreak, anyPropRule := wbTransitions(state, prAny) + anyStateState, anyStateWordBreak, anyStateRule := wbTransitions(wbAny, nextProperty) + if anyPropState >= 0 && anyStateState >= 0 { + // Both apply. We'll use a mix (see comments for grTransitions). + newState, wordBreak, rule = anyStateState, anyStateWordBreak, anyStateRule + if anyPropRule < anyStateRule { + wordBreak, rule = anyPropWordBreak, anyPropRule + } + } else if anyPropState >= 0 { + // We only have a specific state. + newState, wordBreak, rule = anyPropState, anyPropWordBreak, anyPropRule + // This branch will probably never be reached because okAnyState will + // always be true given the current transition map. But we keep it here + // for future modifications to the transition map where this may not be + // true anymore. + } else if anyStateState >= 0 { + // We only have a specific property. + newState, wordBreak, rule = anyStateState, anyStateWordBreak, anyStateRule + } else { + // No known transition. WB999: Any ÷ Any. + newState, wordBreak, rule = wbAny, true, 9990 + } + } + + // For those rules that need to look up runes further in the string, we + // determine the property after nextProperty, skipping over Format, Extend, + // and ZWJ (according to WB4). It's -1 if not needed, if such a rune cannot + // be determined (because the text ends or the rune is faulty). + farProperty := -1 + if rule > 60 && + (state == wbALetter || state == wbHebrewLetter || state == wbNumeric) && + (nextProperty == prMidLetter || nextProperty == prMidNumLet || nextProperty == prSingleQuote || // WB6. + nextProperty == prDoubleQuote || // WB7b. + nextProperty == prMidNum) { // WB12. + for { + var ( + r rune + length int + ) + if b != nil { // Byte slice version. + r, length = utf8.DecodeRune(b) + b = b[length:] + } else { // String version. + r, length = utf8.DecodeRuneInString(str) + str = str[length:] + } + if r == utf8.RuneError { + break + } + prop := property(workBreakCodePoints, r) + if prop == prExtend || prop == prFormat || prop == prZWJ { + continue + } + farProperty = prop + break + } + } + + // WB6. + if rule > 60 && + (state == wbALetter || state == wbHebrewLetter) && + (nextProperty == prMidLetter || nextProperty == prMidNumLet || nextProperty == prSingleQuote) && + (farProperty == prALetter || farProperty == prHebrewLetter) { + return wbWB7, false + } + + // WB7b. + if rule > 72 && + state == wbHebrewLetter && + nextProperty == prDoubleQuote && + farProperty == prHebrewLetter { + return wbWB7c, false + } + + // WB12. + if rule > 120 && + state == wbNumeric && + (nextProperty == prMidNum || nextProperty == prMidNumLet || nextProperty == prSingleQuote) && + farProperty == prNumeric { + return wbWB11, false + } + + // WB15 and WB16. + if newState == wbAny && nextProperty == prRegionalIndicator { + if state != wbOddRI && state != wbEvenRI { // Includes state == -1. + // Transition into the first RI. + return wbOddRI, true + } + if state == wbOddRI { + // Don't break pairs of Regional Indicators. + return wbEvenRI, false + } + return wbOddRI, true // We can break after a pair. + } + + return +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/.gitignore b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/.gitignore new file mode 100644 index 0000000..368e0c0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/.gitignore @@ -0,0 +1,9 @@ +/.cache/ + +/cmd/infocmp/infocmp +/cmd/infocmp/.out/ + +/infocmp +/.out/ + +*.txt diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/LICENSE b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/LICENSE new file mode 100644 index 0000000..197dadb --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Anmol Sethi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/README.md b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/README.md new file mode 100644 index 0000000..e5002d2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/README.md @@ -0,0 +1,139 @@ +# About terminfo [![GoDoc][1]][2] + +Package `terminfo` provides a pure-Go implementation of reading information +from the terminfo database. + +`terminfo` is meant as a replacement for `ncurses` in simple Go programs. + +## Installing + +Install in the usual Go way: + +```sh +$ go get -u github.com/xo/terminfo +``` + +## Using + +Please see the [GoDoc API listing][2] for more information on using `terminfo`. + +```go +// _examples/simple/main.go +package main + +import ( + "bytes" + "fmt" + "log" + "os" + "os/signal" + "strings" + "sync" + "syscall" + + "github.com/xo/terminfo" +) + +func main() { + //r := rand.New(nil) + + // load terminfo + ti, err := terminfo.LoadFromEnv() + if err != nil { + log.Fatal(err) + } + + // cleanup + defer func() { + err := recover() + termreset(ti) + if err != nil { + log.Fatal(err) + } + }() + + terminit(ti) + termtitle(ti, "simple example!") + termputs(ti, 3, 3, "Ctrl-C to exit") + maxColors := termcolors(ti) + if maxColors > 256 { + maxColors = 256 + } + for i := 0; i < maxColors; i++ { + termputs(ti, 5+i/16, 5+i%16, ti.Colorf(i, 0, "█")) + } + + // wait for signal + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) + <-sigs +} + +// terminit initializes the special CA mode on the terminal, and makes the +// cursor invisible. +func terminit(ti *terminfo.Terminfo) { + buf := new(bytes.Buffer) + // set the cursor invisible + ti.Fprintf(buf, terminfo.CursorInvisible) + // enter special mode + ti.Fprintf(buf, terminfo.EnterCaMode) + // clear the screen + ti.Fprintf(buf, terminfo.ClearScreen) + os.Stdout.Write(buf.Bytes()) +} + +// termreset is the inverse of terminit. +func termreset(ti *terminfo.Terminfo) { + buf := new(bytes.Buffer) + ti.Fprintf(buf, terminfo.ExitCaMode) + ti.Fprintf(buf, terminfo.CursorNormal) + os.Stdout.Write(buf.Bytes()) +} + +// termputs puts a string at row, col, interpolating v. +func termputs(ti *terminfo.Terminfo, row, col int, s string, v ...interface{}) { + buf := new(bytes.Buffer) + ti.Fprintf(buf, terminfo.CursorAddress, row, col) + fmt.Fprintf(buf, s, v...) + os.Stdout.Write(buf.Bytes()) +} + +// sl is the status line terminfo. +var sl *terminfo.Terminfo + +// termtitle sets the window title. +func termtitle(ti *terminfo.Terminfo, s string) { + var once sync.Once + once.Do(func() { + if ti.Has(terminfo.HasStatusLine) { + return + } + // load the sl xterm if terminal is an xterm or has COLORTERM + if strings.Contains(strings.ToLower(os.Getenv("TERM")), "xterm") || os.Getenv("COLORTERM") == "truecolor" { + sl, _ = terminfo.Load("xterm+sl") + } + }) + if sl != nil { + ti = sl + } + if !ti.Has(terminfo.HasStatusLine) { + return + } + buf := new(bytes.Buffer) + ti.Fprintf(buf, terminfo.ToStatusLine) + fmt.Fprint(buf, s) + ti.Fprintf(buf, terminfo.FromStatusLine) + os.Stdout.Write(buf.Bytes()) +} + +// termcolors returns the maximum colors available for the terminal. +func termcolors(ti *terminfo.Terminfo) int { + if colors := ti.Num(terminfo.MaxColors); colors > 0 { + return colors + } + return int(terminfo.ColorLevelBasic) +} +``` + +[1]: https://godoc.org/github.com/xo/terminfo?status.svg +[2]: https://godoc.org/github.com/xo/terminfo diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/caps.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/caps.go new file mode 100644 index 0000000..e5e1d41 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/caps.go @@ -0,0 +1,31 @@ +package terminfo + +// BoolCapName returns the bool capability name. +func BoolCapName(i int) string { + return boolCapNames[2*i] +} + +// BoolCapNameShort returns the short bool capability name. +func BoolCapNameShort(i int) string { + return boolCapNames[2*i+1] +} + +// NumCapName returns the num capability name. +func NumCapName(i int) string { + return numCapNames[2*i] +} + +// NumCapNameShort returns the short num capability name. +func NumCapNameShort(i int) string { + return numCapNames[2*i+1] +} + +// StringCapName returns the string capability name. +func StringCapName(i int) string { + return stringCapNames[2*i] +} + +// StringCapNameShort returns the short string capability name. +func StringCapNameShort(i int) string { + return stringCapNames[2*i+1] +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/capvals.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/capvals.go new file mode 100644 index 0000000..0c2274e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/capvals.go @@ -0,0 +1,1525 @@ +package terminfo + +// Code generated by gen.go. DO NOT EDIT. +// Bool capabilities. +const ( + // The AutoLeftMargin [auto_left_margin, bw] bool capability indicates cub1 wraps from column 0 to last column. + AutoLeftMargin = iota + // The AutoRightMargin [auto_right_margin, am] bool capability indicates terminal has automatic margins. + AutoRightMargin + // The NoEscCtlc [no_esc_ctlc, xsb] bool capability indicates beehive (f1=escape, f2=ctrl C). + NoEscCtlc + // The CeolStandoutGlitch [ceol_standout_glitch, xhp] bool capability indicates standout not erased by overwriting (hp). + CeolStandoutGlitch + // The EatNewlineGlitch [eat_newline_glitch, xenl] bool capability indicates newline ignored after 80 cols (concept). + EatNewlineGlitch + // The EraseOverstrike [erase_overstrike, eo] bool capability indicates can erase overstrikes with a blank. + EraseOverstrike + // The GenericType [generic_type, gn] bool capability indicates generic line type. + GenericType + // The HardCopy [hard_copy, hc] bool capability indicates hardcopy terminal. + HardCopy + // The HasMetaKey [has_meta_key, km] bool capability indicates Has a meta key (i.e., sets 8th-bit). + HasMetaKey + // The HasStatusLine [has_status_line, hs] bool capability indicates has extra status line. + HasStatusLine + // The InsertNullGlitch [insert_null_glitch, in] bool capability indicates insert mode distinguishes nulls. + InsertNullGlitch + // The MemoryAbove [memory_above, da] bool capability indicates display may be retained above the screen. + MemoryAbove + // The MemoryBelow [memory_below, db] bool capability indicates display may be retained below the screen. + MemoryBelow + // The MoveInsertMode [move_insert_mode, mir] bool capability indicates safe to move while in insert mode. + MoveInsertMode + // The MoveStandoutMode [move_standout_mode, msgr] bool capability indicates safe to move while in standout mode. + MoveStandoutMode + // The OverStrike [over_strike, os] bool capability indicates terminal can overstrike. + OverStrike + // The StatusLineEscOk [status_line_esc_ok, eslok] bool capability indicates escape can be used on the status line. + StatusLineEscOk + // The DestTabsMagicSmso [dest_tabs_magic_smso, xt] bool capability indicates tabs destructive, magic so char (t1061). + DestTabsMagicSmso + // The TildeGlitch [tilde_glitch, hz] bool capability indicates cannot print ~'s (Hazeltine). + TildeGlitch + // The TransparentUnderline [transparent_underline, ul] bool capability indicates underline character overstrikes. + TransparentUnderline + // The XonXoff [xon_xoff, xon] bool capability indicates terminal uses xon/xoff handshaking. + XonXoff + // The NeedsXonXoff [needs_xon_xoff, nxon] bool capability indicates padding will not work, xon/xoff required. + NeedsXonXoff + // The PrtrSilent [prtr_silent, mc5i] bool capability indicates printer will not echo on screen. + PrtrSilent + // The HardCursor [hard_cursor, chts] bool capability indicates cursor is hard to see. + HardCursor + // The NonRevRmcup [non_rev_rmcup, nrrmc] bool capability indicates smcup does not reverse rmcup. + NonRevRmcup + // The NoPadChar [no_pad_char, npc] bool capability indicates pad character does not exist. + NoPadChar + // The NonDestScrollRegion [non_dest_scroll_region, ndscr] bool capability indicates scrolling region is non-destructive. + NonDestScrollRegion + // The CanChange [can_change, ccc] bool capability indicates terminal can re-define existing colors. + CanChange + // The BackColorErase [back_color_erase, bce] bool capability indicates screen erased with background color. + BackColorErase + // The HueLightnessSaturation [hue_lightness_saturation, hls] bool capability indicates terminal uses only HLS color notation (Tektronix). + HueLightnessSaturation + // The ColAddrGlitch [col_addr_glitch, xhpa] bool capability indicates only positive motion for hpa/mhpa caps. + ColAddrGlitch + // The CrCancelsMicroMode [cr_cancels_micro_mode, crxm] bool capability indicates using cr turns off micro mode. + CrCancelsMicroMode + // The HasPrintWheel [has_print_wheel, daisy] bool capability indicates printer needs operator to change character set. + HasPrintWheel + // The RowAddrGlitch [row_addr_glitch, xvpa] bool capability indicates only positive motion for vpa/mvpa caps. + RowAddrGlitch + // The SemiAutoRightMargin [semi_auto_right_margin, sam] bool capability indicates printing in last column causes cr. + SemiAutoRightMargin + // The CpiChangesRes [cpi_changes_res, cpix] bool capability indicates changing character pitch changes resolution. + CpiChangesRes + // The LpiChangesRes [lpi_changes_res, lpix] bool capability indicates changing line pitch changes resolution. + LpiChangesRes + // The BackspacesWithBs [backspaces_with_bs, OTbs] bool capability indicates uses ^H to move left. + BackspacesWithBs + // The CrtNoScrolling [crt_no_scrolling, OTns] bool capability indicates crt cannot scroll. + CrtNoScrolling + // The NoCorrectlyWorkingCr [no_correctly_working_cr, OTnc] bool capability indicates no way to go to start of line. + NoCorrectlyWorkingCr + // The GnuHasMetaKey [gnu_has_meta_key, OTMT] bool capability indicates has meta key. + GnuHasMetaKey + // The LinefeedIsNewline [linefeed_is_newline, OTNL] bool capability indicates move down with \n. + LinefeedIsNewline + // The HasHardwareTabs [has_hardware_tabs, OTpt] bool capability indicates has 8-char tabs invoked with ^I. + HasHardwareTabs + // The ReturnDoesClrEol [return_does_clr_eol, OTxr] bool capability indicates return clears the line. + ReturnDoesClrEol +) + +// Num capabilities. +const ( + // The Columns [columns, cols] num capability is number of columns in a line. + Columns = iota + // The InitTabs [init_tabs, it] num capability is tabs initially every # spaces. + InitTabs + // The Lines [lines, lines] num capability is number of lines on screen or page. + Lines + // The LinesOfMemory [lines_of_memory, lm] num capability is lines of memory if > line. 0 means varies. + LinesOfMemory + // The MagicCookieGlitch [magic_cookie_glitch, xmc] num capability is number of blank characters left by smso or rmso. + MagicCookieGlitch + // The PaddingBaudRate [padding_baud_rate, pb] num capability is lowest baud rate where padding needed. + PaddingBaudRate + // The VirtualTerminal [virtual_terminal, vt] num capability is virtual terminal number (CB/unix). + VirtualTerminal + // The WidthStatusLine [width_status_line, wsl] num capability is number of columns in status line. + WidthStatusLine + // The NumLabels [num_labels, nlab] num capability is number of labels on screen. + NumLabels + // The LabelHeight [label_height, lh] num capability is rows in each label. + LabelHeight + // The LabelWidth [label_width, lw] num capability is columns in each label. + LabelWidth + // The MaxAttributes [max_attributes, ma] num capability is maximum combined attributes terminal can handle. + MaxAttributes + // The MaximumWindows [maximum_windows, wnum] num capability is maximum number of definable windows. + MaximumWindows + // The MaxColors [max_colors, colors] num capability is maximum number of colors on screen. + MaxColors + // The MaxPairs [max_pairs, pairs] num capability is maximum number of color-pairs on the screen. + MaxPairs + // The NoColorVideo [no_color_video, ncv] num capability is video attributes that cannot be used with colors. + NoColorVideo + // The BufferCapacity [buffer_capacity, bufsz] num capability is numbers of bytes buffered before printing. + BufferCapacity + // The DotVertSpacing [dot_vert_spacing, spinv] num capability is spacing of pins vertically in pins per inch. + DotVertSpacing + // The DotHorzSpacing [dot_horz_spacing, spinh] num capability is spacing of dots horizontally in dots per inch. + DotHorzSpacing + // The MaxMicroAddress [max_micro_address, maddr] num capability is maximum value in micro_..._address. + MaxMicroAddress + // The MaxMicroJump [max_micro_jump, mjump] num capability is maximum value in parm_..._micro. + MaxMicroJump + // The MicroColSize [micro_col_size, mcs] num capability is character step size when in micro mode. + MicroColSize + // The MicroLineSize [micro_line_size, mls] num capability is line step size when in micro mode. + MicroLineSize + // The NumberOfPins [number_of_pins, npins] num capability is numbers of pins in print-head. + NumberOfPins + // The OutputResChar [output_res_char, orc] num capability is horizontal resolution in units per line. + OutputResChar + // The OutputResLine [output_res_line, orl] num capability is vertical resolution in units per line. + OutputResLine + // The OutputResHorzInch [output_res_horz_inch, orhi] num capability is horizontal resolution in units per inch. + OutputResHorzInch + // The OutputResVertInch [output_res_vert_inch, orvi] num capability is vertical resolution in units per inch. + OutputResVertInch + // The PrintRate [print_rate, cps] num capability is print rate in characters per second. + PrintRate + // The WideCharSize [wide_char_size, widcs] num capability is character step size when in double wide mode. + WideCharSize + // The Buttons [buttons, btns] num capability is number of buttons on mouse. + Buttons + // The BitImageEntwining [bit_image_entwining, bitwin] num capability is number of passes for each bit-image row. + BitImageEntwining + // The BitImageType [bit_image_type, bitype] num capability is type of bit-image device. + BitImageType + // The MagicCookieGlitchUl [magic_cookie_glitch_ul, OTug] num capability is number of blanks left by ul. + MagicCookieGlitchUl + // The CarriageReturnDelay [carriage_return_delay, OTdC] num capability is pad needed for CR. + CarriageReturnDelay + // The NewLineDelay [new_line_delay, OTdN] num capability is pad needed for LF. + NewLineDelay + // The BackspaceDelay [backspace_delay, OTdB] num capability is padding required for ^H. + BackspaceDelay + // The HorizontalTabDelay [horizontal_tab_delay, OTdT] num capability is padding required for ^I. + HorizontalTabDelay + // The NumberOfFunctionKeys [number_of_function_keys, OTkn] num capability is count of function keys. + NumberOfFunctionKeys +) + +// String capabilities. +const ( + // The BackTab [back_tab, cbt] string capability is the back tab (P). + BackTab = iota + // The Bell [bell, bel] string capability is the audible signal (bell) (P). + Bell + // The CarriageReturn [carriage_return, cr] string capability is the carriage return (P*) (P*). + CarriageReturn + // The ChangeScrollRegion [change_scroll_region, csr] string capability is the change region to line #1 to line #2 (P). + ChangeScrollRegion + // The ClearAllTabs [clear_all_tabs, tbc] string capability is the clear all tab stops (P). + ClearAllTabs + // The ClearScreen [clear_screen, clear] string capability is the clear screen and home cursor (P*). + ClearScreen + // The ClrEol [clr_eol, el] string capability is the clear to end of line (P). + ClrEol + // The ClrEos [clr_eos, ed] string capability is the clear to end of screen (P*). + ClrEos + // The ColumnAddress [column_address, hpa] string capability is the horizontal position #1, absolute (P). + ColumnAddress + // The CommandCharacter [command_character, cmdch] string capability is the terminal settable cmd character in prototype !?. + CommandCharacter + // The CursorAddress [cursor_address, cup] string capability is the move to row #1 columns #2. + CursorAddress + // The CursorDown [cursor_down, cud1] string capability is the down one line. + CursorDown + // The CursorHome [cursor_home, home] string capability is the home cursor (if no cup). + CursorHome + // The CursorInvisible [cursor_invisible, civis] string capability is the make cursor invisible. + CursorInvisible + // The CursorLeft [cursor_left, cub1] string capability is the move left one space. + CursorLeft + // The CursorMemAddress [cursor_mem_address, mrcup] string capability is the memory relative cursor addressing, move to row #1 columns #2. + CursorMemAddress + // The CursorNormal [cursor_normal, cnorm] string capability is the make cursor appear normal (undo civis/cvvis). + CursorNormal + // The CursorRight [cursor_right, cuf1] string capability is the non-destructive space (move right one space). + CursorRight + // The CursorToLl [cursor_to_ll, ll] string capability is the last line, first column (if no cup). + CursorToLl + // The CursorUp [cursor_up, cuu1] string capability is the up one line. + CursorUp + // The CursorVisible [cursor_visible, cvvis] string capability is the make cursor very visible. + CursorVisible + // The DeleteCharacter [delete_character, dch1] string capability is the delete character (P*). + DeleteCharacter + // The DeleteLine [delete_line, dl1] string capability is the delete line (P*). + DeleteLine + // The DisStatusLine [dis_status_line, dsl] string capability is the disable status line. + DisStatusLine + // The DownHalfLine [down_half_line, hd] string capability is the half a line down. + DownHalfLine + // The EnterAltCharsetMode [enter_alt_charset_mode, smacs] string capability is the start alternate character set (P). + EnterAltCharsetMode + // The EnterBlinkMode [enter_blink_mode, blink] string capability is the turn on blinking. + EnterBlinkMode + // The EnterBoldMode [enter_bold_mode, bold] string capability is the turn on bold (extra bright) mode. + EnterBoldMode + // The EnterCaMode [enter_ca_mode, smcup] string capability is the string to start programs using cup. + EnterCaMode + // The EnterDeleteMode [enter_delete_mode, smdc] string capability is the enter delete mode. + EnterDeleteMode + // The EnterDimMode [enter_dim_mode, dim] string capability is the turn on half-bright mode. + EnterDimMode + // The EnterInsertMode [enter_insert_mode, smir] string capability is the enter insert mode. + EnterInsertMode + // The EnterSecureMode [enter_secure_mode, invis] string capability is the turn on blank mode (characters invisible). + EnterSecureMode + // The EnterProtectedMode [enter_protected_mode, prot] string capability is the turn on protected mode. + EnterProtectedMode + // The EnterReverseMode [enter_reverse_mode, rev] string capability is the turn on reverse video mode. + EnterReverseMode + // The EnterStandoutMode [enter_standout_mode, smso] string capability is the begin standout mode. + EnterStandoutMode + // The EnterUnderlineMode [enter_underline_mode, smul] string capability is the begin underline mode. + EnterUnderlineMode + // The EraseChars [erase_chars, ech] string capability is the erase #1 characters (P). + EraseChars + // The ExitAltCharsetMode [exit_alt_charset_mode, rmacs] string capability is the end alternate character set (P). + ExitAltCharsetMode + // The ExitAttributeMode [exit_attribute_mode, sgr0] string capability is the turn off all attributes. + ExitAttributeMode + // The ExitCaMode [exit_ca_mode, rmcup] string capability is the strings to end programs using cup. + ExitCaMode + // The ExitDeleteMode [exit_delete_mode, rmdc] string capability is the end delete mode. + ExitDeleteMode + // The ExitInsertMode [exit_insert_mode, rmir] string capability is the exit insert mode. + ExitInsertMode + // The ExitStandoutMode [exit_standout_mode, rmso] string capability is the exit standout mode. + ExitStandoutMode + // The ExitUnderlineMode [exit_underline_mode, rmul] string capability is the exit underline mode. + ExitUnderlineMode + // The FlashScreen [flash_screen, flash] string capability is the visible bell (may not move cursor). + FlashScreen + // The FormFeed [form_feed, ff] string capability is the hardcopy terminal page eject (P*). + FormFeed + // The FromStatusLine [from_status_line, fsl] string capability is the return from status line. + FromStatusLine + // The Init1string [init_1string, is1] string capability is the initialization string. + Init1string + // The Init2string [init_2string, is2] string capability is the initialization string. + Init2string + // The Init3string [init_3string, is3] string capability is the initialization string. + Init3string + // The InitFile [init_file, if] string capability is the name of initialization file. + InitFile + // The InsertCharacter [insert_character, ich1] string capability is the insert character (P). + InsertCharacter + // The InsertLine [insert_line, il1] string capability is the insert line (P*). + InsertLine + // The InsertPadding [insert_padding, ip] string capability is the insert padding after inserted character. + InsertPadding + // The KeyBackspace [key_backspace, kbs] string capability is the backspace key. + KeyBackspace + // The KeyCatab [key_catab, ktbc] string capability is the clear-all-tabs key. + KeyCatab + // The KeyClear [key_clear, kclr] string capability is the clear-screen or erase key. + KeyClear + // The KeyCtab [key_ctab, kctab] string capability is the clear-tab key. + KeyCtab + // The KeyDc [key_dc, kdch1] string capability is the delete-character key. + KeyDc + // The KeyDl [key_dl, kdl1] string capability is the delete-line key. + KeyDl + // The KeyDown [key_down, kcud1] string capability is the down-arrow key. + KeyDown + // The KeyEic [key_eic, krmir] string capability is the sent by rmir or smir in insert mode. + KeyEic + // The KeyEol [key_eol, kel] string capability is the clear-to-end-of-line key. + KeyEol + // The KeyEos [key_eos, ked] string capability is the clear-to-end-of-screen key. + KeyEos + // The KeyF0 [key_f0, kf0] string capability is the F0 function key. + KeyF0 + // The KeyF1 [key_f1, kf1] string capability is the F1 function key. + KeyF1 + // The KeyF10 [key_f10, kf10] string capability is the F10 function key. + KeyF10 + // The KeyF2 [key_f2, kf2] string capability is the F2 function key. + KeyF2 + // The KeyF3 [key_f3, kf3] string capability is the F3 function key. + KeyF3 + // The KeyF4 [key_f4, kf4] string capability is the F4 function key. + KeyF4 + // The KeyF5 [key_f5, kf5] string capability is the F5 function key. + KeyF5 + // The KeyF6 [key_f6, kf6] string capability is the F6 function key. + KeyF6 + // The KeyF7 [key_f7, kf7] string capability is the F7 function key. + KeyF7 + // The KeyF8 [key_f8, kf8] string capability is the F8 function key. + KeyF8 + // The KeyF9 [key_f9, kf9] string capability is the F9 function key. + KeyF9 + // The KeyHome [key_home, khome] string capability is the home key. + KeyHome + // The KeyIc [key_ic, kich1] string capability is the insert-character key. + KeyIc + // The KeyIl [key_il, kil1] string capability is the insert-line key. + KeyIl + // The KeyLeft [key_left, kcub1] string capability is the left-arrow key. + KeyLeft + // The KeyLl [key_ll, kll] string capability is the lower-left key (home down). + KeyLl + // The KeyNpage [key_npage, knp] string capability is the next-page key. + KeyNpage + // The KeyPpage [key_ppage, kpp] string capability is the previous-page key. + KeyPpage + // The KeyRight [key_right, kcuf1] string capability is the right-arrow key. + KeyRight + // The KeySf [key_sf, kind] string capability is the scroll-forward key. + KeySf + // The KeySr [key_sr, kri] string capability is the scroll-backward key. + KeySr + // The KeyStab [key_stab, khts] string capability is the set-tab key. + KeyStab + // The KeyUp [key_up, kcuu1] string capability is the up-arrow key. + KeyUp + // The KeypadLocal [keypad_local, rmkx] string capability is the leave 'keyboard_transmit' mode. + KeypadLocal + // The KeypadXmit [keypad_xmit, smkx] string capability is the enter 'keyboard_transmit' mode. + KeypadXmit + // The LabF0 [lab_f0, lf0] string capability is the label on function key f0 if not f0. + LabF0 + // The LabF1 [lab_f1, lf1] string capability is the label on function key f1 if not f1. + LabF1 + // The LabF10 [lab_f10, lf10] string capability is the label on function key f10 if not f10. + LabF10 + // The LabF2 [lab_f2, lf2] string capability is the label on function key f2 if not f2. + LabF2 + // The LabF3 [lab_f3, lf3] string capability is the label on function key f3 if not f3. + LabF3 + // The LabF4 [lab_f4, lf4] string capability is the label on function key f4 if not f4. + LabF4 + // The LabF5 [lab_f5, lf5] string capability is the label on function key f5 if not f5. + LabF5 + // The LabF6 [lab_f6, lf6] string capability is the label on function key f6 if not f6. + LabF6 + // The LabF7 [lab_f7, lf7] string capability is the label on function key f7 if not f7. + LabF7 + // The LabF8 [lab_f8, lf8] string capability is the label on function key f8 if not f8. + LabF8 + // The LabF9 [lab_f9, lf9] string capability is the label on function key f9 if not f9. + LabF9 + // The MetaOff [meta_off, rmm] string capability is the turn off meta mode. + MetaOff + // The MetaOn [meta_on, smm] string capability is the turn on meta mode (8th-bit on). + MetaOn + // The Newline [newline, nel] string capability is the newline (behave like cr followed by lf). + Newline + // The PadChar [pad_char, pad] string capability is the padding char (instead of null). + PadChar + // The ParmDch [parm_dch, dch] string capability is the delete #1 characters (P*). + ParmDch + // The ParmDeleteLine [parm_delete_line, dl] string capability is the delete #1 lines (P*). + ParmDeleteLine + // The ParmDownCursor [parm_down_cursor, cud] string capability is the down #1 lines (P*). + ParmDownCursor + // The ParmIch [parm_ich, ich] string capability is the insert #1 characters (P*). + ParmIch + // The ParmIndex [parm_index, indn] string capability is the scroll forward #1 lines (P). + ParmIndex + // The ParmInsertLine [parm_insert_line, il] string capability is the insert #1 lines (P*). + ParmInsertLine + // The ParmLeftCursor [parm_left_cursor, cub] string capability is the move #1 characters to the left (P). + ParmLeftCursor + // The ParmRightCursor [parm_right_cursor, cuf] string capability is the move #1 characters to the right (P*). + ParmRightCursor + // The ParmRindex [parm_rindex, rin] string capability is the scroll back #1 lines (P). + ParmRindex + // The ParmUpCursor [parm_up_cursor, cuu] string capability is the up #1 lines (P*). + ParmUpCursor + // The PkeyKey [pkey_key, pfkey] string capability is the program function key #1 to type string #2. + PkeyKey + // The PkeyLocal [pkey_local, pfloc] string capability is the program function key #1 to execute string #2. + PkeyLocal + // The PkeyXmit [pkey_xmit, pfx] string capability is the program function key #1 to transmit string #2. + PkeyXmit + // The PrintScreen [print_screen, mc0] string capability is the print contents of screen. + PrintScreen + // The PrtrOff [prtr_off, mc4] string capability is the turn off printer. + PrtrOff + // The PrtrOn [prtr_on, mc5] string capability is the turn on printer. + PrtrOn + // The RepeatChar [repeat_char, rep] string capability is the repeat char #1 #2 times (P*). + RepeatChar + // The Reset1string [reset_1string, rs1] string capability is the reset string. + Reset1string + // The Reset2string [reset_2string, rs2] string capability is the reset string. + Reset2string + // The Reset3string [reset_3string, rs3] string capability is the reset string. + Reset3string + // The ResetFile [reset_file, rf] string capability is the name of reset file. + ResetFile + // The RestoreCursor [restore_cursor, rc] string capability is the restore cursor to position of last save_cursor. + RestoreCursor + // The RowAddress [row_address, vpa] string capability is the vertical position #1 absolute (P). + RowAddress + // The SaveCursor [save_cursor, sc] string capability is the save current cursor position (P). + SaveCursor + // The ScrollForward [scroll_forward, ind] string capability is the scroll text up (P). + ScrollForward + // The ScrollReverse [scroll_reverse, ri] string capability is the scroll text down (P). + ScrollReverse + // The SetAttributes [set_attributes, sgr] string capability is the define video attributes #1-#9 (PG9). + SetAttributes + // The SetTab [set_tab, hts] string capability is the set a tab in every row, current columns. + SetTab + // The SetWindow [set_window, wind] string capability is the current window is lines #1-#2 cols #3-#4. + SetWindow + // The Tab [tab, ht] string capability is the tab to next 8-space hardware tab stop. + Tab + // The ToStatusLine [to_status_line, tsl] string capability is the move to status line, column #1. + ToStatusLine + // The UnderlineChar [underline_char, uc] string capability is the underline char and move past it. + UnderlineChar + // The UpHalfLine [up_half_line, hu] string capability is the half a line up. + UpHalfLine + // The InitProg [init_prog, iprog] string capability is the path name of program for initialization. + InitProg + // The KeyA1 [key_a1, ka1] string capability is the upper left of keypad. + KeyA1 + // The KeyA3 [key_a3, ka3] string capability is the upper right of keypad. + KeyA3 + // The KeyB2 [key_b2, kb2] string capability is the center of keypad. + KeyB2 + // The KeyC1 [key_c1, kc1] string capability is the lower left of keypad. + KeyC1 + // The KeyC3 [key_c3, kc3] string capability is the lower right of keypad. + KeyC3 + // The PrtrNon [prtr_non, mc5p] string capability is the turn on printer for #1 bytes. + PrtrNon + // The CharPadding [char_padding, rmp] string capability is the like ip but when in insert mode. + CharPadding + // The AcsChars [acs_chars, acsc] string capability is the graphics charset pairs, based on vt100. + AcsChars + // The PlabNorm [plab_norm, pln] string capability is the program label #1 to show string #2. + PlabNorm + // The KeyBtab [key_btab, kcbt] string capability is the back-tab key. + KeyBtab + // The EnterXonMode [enter_xon_mode, smxon] string capability is the turn on xon/xoff handshaking. + EnterXonMode + // The ExitXonMode [exit_xon_mode, rmxon] string capability is the turn off xon/xoff handshaking. + ExitXonMode + // The EnterAmMode [enter_am_mode, smam] string capability is the turn on automatic margins. + EnterAmMode + // The ExitAmMode [exit_am_mode, rmam] string capability is the turn off automatic margins. + ExitAmMode + // The XonCharacter [xon_character, xonc] string capability is the XON character. + XonCharacter + // The XoffCharacter [xoff_character, xoffc] string capability is the XOFF character. + XoffCharacter + // The EnaAcs [ena_acs, enacs] string capability is the enable alternate char set. + EnaAcs + // The LabelOn [label_on, smln] string capability is the turn on soft labels. + LabelOn + // The LabelOff [label_off, rmln] string capability is the turn off soft labels. + LabelOff + // The KeyBeg [key_beg, kbeg] string capability is the begin key. + KeyBeg + // The KeyCancel [key_cancel, kcan] string capability is the cancel key. + KeyCancel + // The KeyClose [key_close, kclo] string capability is the close key. + KeyClose + // The KeyCommand [key_command, kcmd] string capability is the command key. + KeyCommand + // The KeyCopy [key_copy, kcpy] string capability is the copy key. + KeyCopy + // The KeyCreate [key_create, kcrt] string capability is the create key. + KeyCreate + // The KeyEnd [key_end, kend] string capability is the end key. + KeyEnd + // The KeyEnter [key_enter, kent] string capability is the enter/send key. + KeyEnter + // The KeyExit [key_exit, kext] string capability is the exit key. + KeyExit + // The KeyFind [key_find, kfnd] string capability is the find key. + KeyFind + // The KeyHelp [key_help, khlp] string capability is the help key. + KeyHelp + // The KeyMark [key_mark, kmrk] string capability is the mark key. + KeyMark + // The KeyMessage [key_message, kmsg] string capability is the message key. + KeyMessage + // The KeyMove [key_move, kmov] string capability is the move key. + KeyMove + // The KeyNext [key_next, knxt] string capability is the next key. + KeyNext + // The KeyOpen [key_open, kopn] string capability is the open key. + KeyOpen + // The KeyOptions [key_options, kopt] string capability is the options key. + KeyOptions + // The KeyPrevious [key_previous, kprv] string capability is the previous key. + KeyPrevious + // The KeyPrint [key_print, kprt] string capability is the print key. + KeyPrint + // The KeyRedo [key_redo, krdo] string capability is the redo key. + KeyRedo + // The KeyReference [key_reference, kref] string capability is the reference key. + KeyReference + // The KeyRefresh [key_refresh, krfr] string capability is the refresh key. + KeyRefresh + // The KeyReplace [key_replace, krpl] string capability is the replace key. + KeyReplace + // The KeyRestart [key_restart, krst] string capability is the restart key. + KeyRestart + // The KeyResume [key_resume, kres] string capability is the resume key. + KeyResume + // The KeySave [key_save, ksav] string capability is the save key. + KeySave + // The KeySuspend [key_suspend, kspd] string capability is the suspend key. + KeySuspend + // The KeyUndo [key_undo, kund] string capability is the undo key. + KeyUndo + // The KeySbeg [key_sbeg, kBEG] string capability is the shifted begin key. + KeySbeg + // The KeyScancel [key_scancel, kCAN] string capability is the shifted cancel key. + KeyScancel + // The KeyScommand [key_scommand, kCMD] string capability is the shifted command key. + KeyScommand + // The KeyScopy [key_scopy, kCPY] string capability is the shifted copy key. + KeyScopy + // The KeyScreate [key_screate, kCRT] string capability is the shifted create key. + KeyScreate + // The KeySdc [key_sdc, kDC] string capability is the shifted delete-character key. + KeySdc + // The KeySdl [key_sdl, kDL] string capability is the shifted delete-line key. + KeySdl + // The KeySelect [key_select, kslt] string capability is the select key. + KeySelect + // The KeySend [key_send, kEND] string capability is the shifted end key. + KeySend + // The KeySeol [key_seol, kEOL] string capability is the shifted clear-to-end-of-line key. + KeySeol + // The KeySexit [key_sexit, kEXT] string capability is the shifted exit key. + KeySexit + // The KeySfind [key_sfind, kFND] string capability is the shifted find key. + KeySfind + // The KeyShelp [key_shelp, kHLP] string capability is the shifted help key. + KeyShelp + // The KeyShome [key_shome, kHOM] string capability is the shifted home key. + KeyShome + // The KeySic [key_sic, kIC] string capability is the shifted insert-character key. + KeySic + // The KeySleft [key_sleft, kLFT] string capability is the shifted left-arrow key. + KeySleft + // The KeySmessage [key_smessage, kMSG] string capability is the shifted message key. + KeySmessage + // The KeySmove [key_smove, kMOV] string capability is the shifted move key. + KeySmove + // The KeySnext [key_snext, kNXT] string capability is the shifted next key. + KeySnext + // The KeySoptions [key_soptions, kOPT] string capability is the shifted options key. + KeySoptions + // The KeySprevious [key_sprevious, kPRV] string capability is the shifted previous key. + KeySprevious + // The KeySprint [key_sprint, kPRT] string capability is the shifted print key. + KeySprint + // The KeySredo [key_sredo, kRDO] string capability is the shifted redo key. + KeySredo + // The KeySreplace [key_sreplace, kRPL] string capability is the shifted replace key. + KeySreplace + // The KeySright [key_sright, kRIT] string capability is the shifted right-arrow key. + KeySright + // The KeySrsume [key_srsume, kRES] string capability is the shifted resume key. + KeySrsume + // The KeySsave [key_ssave, kSAV] string capability is the shifted save key. + KeySsave + // The KeySsuspend [key_ssuspend, kSPD] string capability is the shifted suspend key. + KeySsuspend + // The KeySundo [key_sundo, kUND] string capability is the shifted undo key. + KeySundo + // The ReqForInput [req_for_input, rfi] string capability is the send next input char (for ptys). + ReqForInput + // The KeyF11 [key_f11, kf11] string capability is the F11 function key. + KeyF11 + // The KeyF12 [key_f12, kf12] string capability is the F12 function key. + KeyF12 + // The KeyF13 [key_f13, kf13] string capability is the F13 function key. + KeyF13 + // The KeyF14 [key_f14, kf14] string capability is the F14 function key. + KeyF14 + // The KeyF15 [key_f15, kf15] string capability is the F15 function key. + KeyF15 + // The KeyF16 [key_f16, kf16] string capability is the F16 function key. + KeyF16 + // The KeyF17 [key_f17, kf17] string capability is the F17 function key. + KeyF17 + // The KeyF18 [key_f18, kf18] string capability is the F18 function key. + KeyF18 + // The KeyF19 [key_f19, kf19] string capability is the F19 function key. + KeyF19 + // The KeyF20 [key_f20, kf20] string capability is the F20 function key. + KeyF20 + // The KeyF21 [key_f21, kf21] string capability is the F21 function key. + KeyF21 + // The KeyF22 [key_f22, kf22] string capability is the F22 function key. + KeyF22 + // The KeyF23 [key_f23, kf23] string capability is the F23 function key. + KeyF23 + // The KeyF24 [key_f24, kf24] string capability is the F24 function key. + KeyF24 + // The KeyF25 [key_f25, kf25] string capability is the F25 function key. + KeyF25 + // The KeyF26 [key_f26, kf26] string capability is the F26 function key. + KeyF26 + // The KeyF27 [key_f27, kf27] string capability is the F27 function key. + KeyF27 + // The KeyF28 [key_f28, kf28] string capability is the F28 function key. + KeyF28 + // The KeyF29 [key_f29, kf29] string capability is the F29 function key. + KeyF29 + // The KeyF30 [key_f30, kf30] string capability is the F30 function key. + KeyF30 + // The KeyF31 [key_f31, kf31] string capability is the F31 function key. + KeyF31 + // The KeyF32 [key_f32, kf32] string capability is the F32 function key. + KeyF32 + // The KeyF33 [key_f33, kf33] string capability is the F33 function key. + KeyF33 + // The KeyF34 [key_f34, kf34] string capability is the F34 function key. + KeyF34 + // The KeyF35 [key_f35, kf35] string capability is the F35 function key. + KeyF35 + // The KeyF36 [key_f36, kf36] string capability is the F36 function key. + KeyF36 + // The KeyF37 [key_f37, kf37] string capability is the F37 function key. + KeyF37 + // The KeyF38 [key_f38, kf38] string capability is the F38 function key. + KeyF38 + // The KeyF39 [key_f39, kf39] string capability is the F39 function key. + KeyF39 + // The KeyF40 [key_f40, kf40] string capability is the F40 function key. + KeyF40 + // The KeyF41 [key_f41, kf41] string capability is the F41 function key. + KeyF41 + // The KeyF42 [key_f42, kf42] string capability is the F42 function key. + KeyF42 + // The KeyF43 [key_f43, kf43] string capability is the F43 function key. + KeyF43 + // The KeyF44 [key_f44, kf44] string capability is the F44 function key. + KeyF44 + // The KeyF45 [key_f45, kf45] string capability is the F45 function key. + KeyF45 + // The KeyF46 [key_f46, kf46] string capability is the F46 function key. + KeyF46 + // The KeyF47 [key_f47, kf47] string capability is the F47 function key. + KeyF47 + // The KeyF48 [key_f48, kf48] string capability is the F48 function key. + KeyF48 + // The KeyF49 [key_f49, kf49] string capability is the F49 function key. + KeyF49 + // The KeyF50 [key_f50, kf50] string capability is the F50 function key. + KeyF50 + // The KeyF51 [key_f51, kf51] string capability is the F51 function key. + KeyF51 + // The KeyF52 [key_f52, kf52] string capability is the F52 function key. + KeyF52 + // The KeyF53 [key_f53, kf53] string capability is the F53 function key. + KeyF53 + // The KeyF54 [key_f54, kf54] string capability is the F54 function key. + KeyF54 + // The KeyF55 [key_f55, kf55] string capability is the F55 function key. + KeyF55 + // The KeyF56 [key_f56, kf56] string capability is the F56 function key. + KeyF56 + // The KeyF57 [key_f57, kf57] string capability is the F57 function key. + KeyF57 + // The KeyF58 [key_f58, kf58] string capability is the F58 function key. + KeyF58 + // The KeyF59 [key_f59, kf59] string capability is the F59 function key. + KeyF59 + // The KeyF60 [key_f60, kf60] string capability is the F60 function key. + KeyF60 + // The KeyF61 [key_f61, kf61] string capability is the F61 function key. + KeyF61 + // The KeyF62 [key_f62, kf62] string capability is the F62 function key. + KeyF62 + // The KeyF63 [key_f63, kf63] string capability is the F63 function key. + KeyF63 + // The ClrBol [clr_bol, el1] string capability is the Clear to beginning of line. + ClrBol + // The ClearMargins [clear_margins, mgc] string capability is the clear right and left soft margins. + ClearMargins + // The SetLeftMargin [set_left_margin, smgl] string capability is the set left soft margin at current column. (ML is not in BSD termcap). + SetLeftMargin + // The SetRightMargin [set_right_margin, smgr] string capability is the set right soft margin at current column. + SetRightMargin + // The LabelFormat [label_format, fln] string capability is the label format. + LabelFormat + // The SetClock [set_clock, sclk] string capability is the set clock, #1 hrs #2 mins #3 secs. + SetClock + // The DisplayClock [display_clock, dclk] string capability is the display clock. + DisplayClock + // The RemoveClock [remove_clock, rmclk] string capability is the remove clock. + RemoveClock + // The CreateWindow [create_window, cwin] string capability is the define a window #1 from #2,#3 to #4,#5. + CreateWindow + // The GotoWindow [goto_window, wingo] string capability is the go to window #1. + GotoWindow + // The Hangup [hangup, hup] string capability is the hang-up phone. + Hangup + // The DialPhone [dial_phone, dial] string capability is the dial number #1. + DialPhone + // The QuickDial [quick_dial, qdial] string capability is the dial number #1 without checking. + QuickDial + // The Tone [tone, tone] string capability is the select touch tone dialing. + Tone + // The Pulse [pulse, pulse] string capability is the select pulse dialing. + Pulse + // The FlashHook [flash_hook, hook] string capability is the flash switch hook. + FlashHook + // The FixedPause [fixed_pause, pause] string capability is the pause for 2-3 seconds. + FixedPause + // The WaitTone [wait_tone, wait] string capability is the wait for dial-tone. + WaitTone + // The User0 [user0, u0] string capability is the User string #0. + User0 + // The User1 [user1, u1] string capability is the User string #1. + User1 + // The User2 [user2, u2] string capability is the User string #2. + User2 + // The User3 [user3, u3] string capability is the User string #3. + User3 + // The User4 [user4, u4] string capability is the User string #4. + User4 + // The User5 [user5, u5] string capability is the User string #5. + User5 + // The User6 [user6, u6] string capability is the User string #6. + User6 + // The User7 [user7, u7] string capability is the User string #7. + User7 + // The User8 [user8, u8] string capability is the User string #8. + User8 + // The User9 [user9, u9] string capability is the User string #9. + User9 + // The OrigPair [orig_pair, op] string capability is the Set default pair to its original value. + OrigPair + // The OrigColors [orig_colors, oc] string capability is the Set all color pairs to the original ones. + OrigColors + // The InitializeColor [initialize_color, initc] string capability is the initialize color #1 to (#2,#3,#4). + InitializeColor + // The InitializePair [initialize_pair, initp] string capability is the Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7). + InitializePair + // The SetColorPair [set_color_pair, scp] string capability is the Set current color pair to #1. + SetColorPair + // The SetForeground [set_foreground, setf] string capability is the Set foreground color #1. + SetForeground + // The SetBackground [set_background, setb] string capability is the Set background color #1. + SetBackground + // The ChangeCharPitch [change_char_pitch, cpi] string capability is the Change number of characters per inch to #1. + ChangeCharPitch + // The ChangeLinePitch [change_line_pitch, lpi] string capability is the Change number of lines per inch to #1. + ChangeLinePitch + // The ChangeResHorz [change_res_horz, chr] string capability is the Change horizontal resolution to #1. + ChangeResHorz + // The ChangeResVert [change_res_vert, cvr] string capability is the Change vertical resolution to #1. + ChangeResVert + // The DefineChar [define_char, defc] string capability is the Define a character #1, #2 dots wide, descender #3. + DefineChar + // The EnterDoublewideMode [enter_doublewide_mode, swidm] string capability is the Enter double-wide mode. + EnterDoublewideMode + // The EnterDraftQuality [enter_draft_quality, sdrfq] string capability is the Enter draft-quality mode. + EnterDraftQuality + // The EnterItalicsMode [enter_italics_mode, sitm] string capability is the Enter italic mode. + EnterItalicsMode + // The EnterLeftwardMode [enter_leftward_mode, slm] string capability is the Start leftward carriage motion. + EnterLeftwardMode + // The EnterMicroMode [enter_micro_mode, smicm] string capability is the Start micro-motion mode. + EnterMicroMode + // The EnterNearLetterQuality [enter_near_letter_quality, snlq] string capability is the Enter NLQ mode. + EnterNearLetterQuality + // The EnterNormalQuality [enter_normal_quality, snrmq] string capability is the Enter normal-quality mode. + EnterNormalQuality + // The EnterShadowMode [enter_shadow_mode, sshm] string capability is the Enter shadow-print mode. + EnterShadowMode + // The EnterSubscriptMode [enter_subscript_mode, ssubm] string capability is the Enter subscript mode. + EnterSubscriptMode + // The EnterSuperscriptMode [enter_superscript_mode, ssupm] string capability is the Enter superscript mode. + EnterSuperscriptMode + // The EnterUpwardMode [enter_upward_mode, sum] string capability is the Start upward carriage motion. + EnterUpwardMode + // The ExitDoublewideMode [exit_doublewide_mode, rwidm] string capability is the End double-wide mode. + ExitDoublewideMode + // The ExitItalicsMode [exit_italics_mode, ritm] string capability is the End italic mode. + ExitItalicsMode + // The ExitLeftwardMode [exit_leftward_mode, rlm] string capability is the End left-motion mode. + ExitLeftwardMode + // The ExitMicroMode [exit_micro_mode, rmicm] string capability is the End micro-motion mode. + ExitMicroMode + // The ExitShadowMode [exit_shadow_mode, rshm] string capability is the End shadow-print mode. + ExitShadowMode + // The ExitSubscriptMode [exit_subscript_mode, rsubm] string capability is the End subscript mode. + ExitSubscriptMode + // The ExitSuperscriptMode [exit_superscript_mode, rsupm] string capability is the End superscript mode. + ExitSuperscriptMode + // The ExitUpwardMode [exit_upward_mode, rum] string capability is the End reverse character motion. + ExitUpwardMode + // The MicroColumnAddress [micro_column_address, mhpa] string capability is the Like column_address in micro mode. + MicroColumnAddress + // The MicroDown [micro_down, mcud1] string capability is the Like cursor_down in micro mode. + MicroDown + // The MicroLeft [micro_left, mcub1] string capability is the Like cursor_left in micro mode. + MicroLeft + // The MicroRight [micro_right, mcuf1] string capability is the Like cursor_right in micro mode. + MicroRight + // The MicroRowAddress [micro_row_address, mvpa] string capability is the Like row_address #1 in micro mode. + MicroRowAddress + // The MicroUp [micro_up, mcuu1] string capability is the Like cursor_up in micro mode. + MicroUp + // The OrderOfPins [order_of_pins, porder] string capability is the Match software bits to print-head pins. + OrderOfPins + // The ParmDownMicro [parm_down_micro, mcud] string capability is the Like parm_down_cursor in micro mode. + ParmDownMicro + // The ParmLeftMicro [parm_left_micro, mcub] string capability is the Like parm_left_cursor in micro mode. + ParmLeftMicro + // The ParmRightMicro [parm_right_micro, mcuf] string capability is the Like parm_right_cursor in micro mode. + ParmRightMicro + // The ParmUpMicro [parm_up_micro, mcuu] string capability is the Like parm_up_cursor in micro mode. + ParmUpMicro + // The SelectCharSet [select_char_set, scs] string capability is the Select character set, #1. + SelectCharSet + // The SetBottomMargin [set_bottom_margin, smgb] string capability is the Set bottom margin at current line. + SetBottomMargin + // The SetBottomMarginParm [set_bottom_margin_parm, smgbp] string capability is the Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom. + SetBottomMarginParm + // The SetLeftMarginParm [set_left_margin_parm, smglp] string capability is the Set left (right) margin at column #1. + SetLeftMarginParm + // The SetRightMarginParm [set_right_margin_parm, smgrp] string capability is the Set right margin at column #1. + SetRightMarginParm + // The SetTopMargin [set_top_margin, smgt] string capability is the Set top margin at current line. + SetTopMargin + // The SetTopMarginParm [set_top_margin_parm, smgtp] string capability is the Set top (bottom) margin at row #1. + SetTopMarginParm + // The StartBitImage [start_bit_image, sbim] string capability is the Start printing bit image graphics. + StartBitImage + // The StartCharSetDef [start_char_set_def, scsd] string capability is the Start character set definition #1, with #2 characters in the set. + StartCharSetDef + // The StopBitImage [stop_bit_image, rbim] string capability is the Stop printing bit image graphics. + StopBitImage + // The StopCharSetDef [stop_char_set_def, rcsd] string capability is the End definition of character set #1. + StopCharSetDef + // The SubscriptCharacters [subscript_characters, subcs] string capability is the List of subscriptable characters. + SubscriptCharacters + // The SuperscriptCharacters [superscript_characters, supcs] string capability is the List of superscriptable characters. + SuperscriptCharacters + // The TheseCauseCr [these_cause_cr, docr] string capability is the Printing any of these characters causes CR. + TheseCauseCr + // The ZeroMotion [zero_motion, zerom] string capability is the No motion for subsequent character. + ZeroMotion + // The CharSetNames [char_set_names, csnm] string capability is the Produce #1'th item from list of character set names. + CharSetNames + // The KeyMouse [key_mouse, kmous] string capability is the Mouse event has occurred. + KeyMouse + // The MouseInfo [mouse_info, minfo] string capability is the Mouse status information. + MouseInfo + // The ReqMousePos [req_mouse_pos, reqmp] string capability is the Request mouse position. + ReqMousePos + // The GetMouse [get_mouse, getm] string capability is the Curses should get button events, parameter #1 not documented. + GetMouse + // The SetAForeground [set_a_foreground, setaf] string capability is the Set foreground color to #1, using ANSI escape. + SetAForeground + // The SetABackground [set_a_background, setab] string capability is the Set background color to #1, using ANSI escape. + SetABackground + // The PkeyPlab [pkey_plab, pfxl] string capability is the Program function key #1 to type string #2 and show string #3. + PkeyPlab + // The DeviceType [device_type, devt] string capability is the Indicate language/codeset support. + DeviceType + // The CodeSetInit [code_set_init, csin] string capability is the Init sequence for multiple codesets. + CodeSetInit + // The Set0DesSeq [set0_des_seq, s0ds] string capability is the Shift to codeset 0 (EUC set 0, ASCII). + Set0DesSeq + // The Set1DesSeq [set1_des_seq, s1ds] string capability is the Shift to codeset 1. + Set1DesSeq + // The Set2DesSeq [set2_des_seq, s2ds] string capability is the Shift to codeset 2. + Set2DesSeq + // The Set3DesSeq [set3_des_seq, s3ds] string capability is the Shift to codeset 3. + Set3DesSeq + // The SetLrMargin [set_lr_margin, smglr] string capability is the Set both left and right margins to #1, #2. (ML is not in BSD termcap). + SetLrMargin + // The SetTbMargin [set_tb_margin, smgtb] string capability is the Sets both top and bottom margins to #1, #2. + SetTbMargin + // The BitImageRepeat [bit_image_repeat, birep] string capability is the Repeat bit image cell #1 #2 times. + BitImageRepeat + // The BitImageNewline [bit_image_newline, binel] string capability is the Move to next row of the bit image. + BitImageNewline + // The BitImageCarriageReturn [bit_image_carriage_return, bicr] string capability is the Move to beginning of same row. + BitImageCarriageReturn + // The ColorNames [color_names, colornm] string capability is the Give name for color #1. + ColorNames + // The DefineBitImageRegion [define_bit_image_region, defbi] string capability is the Define rectangular bit image region. + DefineBitImageRegion + // The EndBitImageRegion [end_bit_image_region, endbi] string capability is the End a bit-image region. + EndBitImageRegion + // The SetColorBand [set_color_band, setcolor] string capability is the Change to ribbon color #1. + SetColorBand + // The SetPageLength [set_page_length, slines] string capability is the Set page length to #1 lines. + SetPageLength + // The DisplayPcChar [display_pc_char, dispc] string capability is the Display PC character #1. + DisplayPcChar + // The EnterPcCharsetMode [enter_pc_charset_mode, smpch] string capability is the Enter PC character display mode. + EnterPcCharsetMode + // The ExitPcCharsetMode [exit_pc_charset_mode, rmpch] string capability is the Exit PC character display mode. + ExitPcCharsetMode + // The EnterScancodeMode [enter_scancode_mode, smsc] string capability is the Enter PC scancode mode. + EnterScancodeMode + // The ExitScancodeMode [exit_scancode_mode, rmsc] string capability is the Exit PC scancode mode. + ExitScancodeMode + // The PcTermOptions [pc_term_options, pctrm] string capability is the PC terminal options. + PcTermOptions + // The ScancodeEscape [scancode_escape, scesc] string capability is the Escape for scancode emulation. + ScancodeEscape + // The AltScancodeEsc [alt_scancode_esc, scesa] string capability is the Alternate escape for scancode emulation. + AltScancodeEsc + // The EnterHorizontalHlMode [enter_horizontal_hl_mode, ehhlm] string capability is the Enter horizontal highlight mode. + EnterHorizontalHlMode + // The EnterLeftHlMode [enter_left_hl_mode, elhlm] string capability is the Enter left highlight mode. + EnterLeftHlMode + // The EnterLowHlMode [enter_low_hl_mode, elohlm] string capability is the Enter low highlight mode. + EnterLowHlMode + // The EnterRightHlMode [enter_right_hl_mode, erhlm] string capability is the Enter right highlight mode. + EnterRightHlMode + // The EnterTopHlMode [enter_top_hl_mode, ethlm] string capability is the Enter top highlight mode. + EnterTopHlMode + // The EnterVerticalHlMode [enter_vertical_hl_mode, evhlm] string capability is the Enter vertical highlight mode. + EnterVerticalHlMode + // The SetAAttributes [set_a_attributes, sgr1] string capability is the Define second set of video attributes #1-#6. + SetAAttributes + // The SetPglenInch [set_pglen_inch, slength] string capability is the Set page length to #1 hundredth of an inch (some implementations use sL for termcap). + SetPglenInch + // The TermcapInit2 [termcap_init2, OTi2] string capability is the secondary initialization string. + TermcapInit2 + // The TermcapReset [termcap_reset, OTrs] string capability is the terminal reset string. + TermcapReset + // The LinefeedIfNotLf [linefeed_if_not_lf, OTnl] string capability is the use to move down. + LinefeedIfNotLf + // The BackspaceIfNotBs [backspace_if_not_bs, OTbc] string capability is the move left, if not ^H. + BackspaceIfNotBs + // The OtherNonFunctionKeys [other_non_function_keys, OTko] string capability is the list of self-mapped keycaps. + OtherNonFunctionKeys + // The ArrowKeyMap [arrow_key_map, OTma] string capability is the map motion-keys for vi version 2. + ArrowKeyMap + // The AcsUlcorner [acs_ulcorner, OTG2] string capability is the single upper left. + AcsUlcorner + // The AcsLlcorner [acs_llcorner, OTG3] string capability is the single lower left. + AcsLlcorner + // The AcsUrcorner [acs_urcorner, OTG1] string capability is the single upper right. + AcsUrcorner + // The AcsLrcorner [acs_lrcorner, OTG4] string capability is the single lower right. + AcsLrcorner + // The AcsLtee [acs_ltee, OTGR] string capability is the tee pointing right. + AcsLtee + // The AcsRtee [acs_rtee, OTGL] string capability is the tee pointing left. + AcsRtee + // The AcsBtee [acs_btee, OTGU] string capability is the tee pointing up. + AcsBtee + // The AcsTtee [acs_ttee, OTGD] string capability is the tee pointing down. + AcsTtee + // The AcsHline [acs_hline, OTGH] string capability is the single horizontal line. + AcsHline + // The AcsVline [acs_vline, OTGV] string capability is the single vertical line. + AcsVline + // The AcsPlus [acs_plus, OTGC] string capability is the single intersection. + AcsPlus + // The MemoryLock [memory_lock, meml] string capability is the lock memory above cursor. + MemoryLock + // The MemoryUnlock [memory_unlock, memu] string capability is the unlock memory. + MemoryUnlock + // The BoxChars1 [box_chars_1, box1] string capability is the box characters primary set. + BoxChars1 +) +const ( + // CapCountBool is the count of bool capabilities. + CapCountBool = ReturnDoesClrEol + 1 + // CapCountNum is the count of num capabilities. + CapCountNum = NumberOfFunctionKeys + 1 + // CapCountString is the count of string capabilities. + CapCountString = BoxChars1 + 1 +) + +// boolCapNames are the bool term cap names. +var boolCapNames = [...]string{ + "auto_left_margin", "bw", + "auto_right_margin", "am", + "no_esc_ctlc", "xsb", + "ceol_standout_glitch", "xhp", + "eat_newline_glitch", "xenl", + "erase_overstrike", "eo", + "generic_type", "gn", + "hard_copy", "hc", + "has_meta_key", "km", + "has_status_line", "hs", + "insert_null_glitch", "in", + "memory_above", "da", + "memory_below", "db", + "move_insert_mode", "mir", + "move_standout_mode", "msgr", + "over_strike", "os", + "status_line_esc_ok", "eslok", + "dest_tabs_magic_smso", "xt", + "tilde_glitch", "hz", + "transparent_underline", "ul", + "xon_xoff", "xon", + "needs_xon_xoff", "nxon", + "prtr_silent", "mc5i", + "hard_cursor", "chts", + "non_rev_rmcup", "nrrmc", + "no_pad_char", "npc", + "non_dest_scroll_region", "ndscr", + "can_change", "ccc", + "back_color_erase", "bce", + "hue_lightness_saturation", "hls", + "col_addr_glitch", "xhpa", + "cr_cancels_micro_mode", "crxm", + "has_print_wheel", "daisy", + "row_addr_glitch", "xvpa", + "semi_auto_right_margin", "sam", + "cpi_changes_res", "cpix", + "lpi_changes_res", "lpix", + "backspaces_with_bs", "OTbs", + "crt_no_scrolling", "OTns", + "no_correctly_working_cr", "OTnc", + "gnu_has_meta_key", "OTMT", + "linefeed_is_newline", "OTNL", + "has_hardware_tabs", "OTpt", + "return_does_clr_eol", "OTxr", +} + +// numCapNames are the num term cap names. +var numCapNames = [...]string{ + "columns", "cols", + "init_tabs", "it", + "lines", "lines", + "lines_of_memory", "lm", + "magic_cookie_glitch", "xmc", + "padding_baud_rate", "pb", + "virtual_terminal", "vt", + "width_status_line", "wsl", + "num_labels", "nlab", + "label_height", "lh", + "label_width", "lw", + "max_attributes", "ma", + "maximum_windows", "wnum", + "max_colors", "colors", + "max_pairs", "pairs", + "no_color_video", "ncv", + "buffer_capacity", "bufsz", + "dot_vert_spacing", "spinv", + "dot_horz_spacing", "spinh", + "max_micro_address", "maddr", + "max_micro_jump", "mjump", + "micro_col_size", "mcs", + "micro_line_size", "mls", + "number_of_pins", "npins", + "output_res_char", "orc", + "output_res_line", "orl", + "output_res_horz_inch", "orhi", + "output_res_vert_inch", "orvi", + "print_rate", "cps", + "wide_char_size", "widcs", + "buttons", "btns", + "bit_image_entwining", "bitwin", + "bit_image_type", "bitype", + "magic_cookie_glitch_ul", "OTug", + "carriage_return_delay", "OTdC", + "new_line_delay", "OTdN", + "backspace_delay", "OTdB", + "horizontal_tab_delay", "OTdT", + "number_of_function_keys", "OTkn", +} + +// stringCapNames are the string term cap names. +var stringCapNames = [...]string{ + "back_tab", "cbt", + "bell", "bel", + "carriage_return", "cr", + "change_scroll_region", "csr", + "clear_all_tabs", "tbc", + "clear_screen", "clear", + "clr_eol", "el", + "clr_eos", "ed", + "column_address", "hpa", + "command_character", "cmdch", + "cursor_address", "cup", + "cursor_down", "cud1", + "cursor_home", "home", + "cursor_invisible", "civis", + "cursor_left", "cub1", + "cursor_mem_address", "mrcup", + "cursor_normal", "cnorm", + "cursor_right", "cuf1", + "cursor_to_ll", "ll", + "cursor_up", "cuu1", + "cursor_visible", "cvvis", + "delete_character", "dch1", + "delete_line", "dl1", + "dis_status_line", "dsl", + "down_half_line", "hd", + "enter_alt_charset_mode", "smacs", + "enter_blink_mode", "blink", + "enter_bold_mode", "bold", + "enter_ca_mode", "smcup", + "enter_delete_mode", "smdc", + "enter_dim_mode", "dim", + "enter_insert_mode", "smir", + "enter_secure_mode", "invis", + "enter_protected_mode", "prot", + "enter_reverse_mode", "rev", + "enter_standout_mode", "smso", + "enter_underline_mode", "smul", + "erase_chars", "ech", + "exit_alt_charset_mode", "rmacs", + "exit_attribute_mode", "sgr0", + "exit_ca_mode", "rmcup", + "exit_delete_mode", "rmdc", + "exit_insert_mode", "rmir", + "exit_standout_mode", "rmso", + "exit_underline_mode", "rmul", + "flash_screen", "flash", + "form_feed", "ff", + "from_status_line", "fsl", + "init_1string", "is1", + "init_2string", "is2", + "init_3string", "is3", + "init_file", "if", + "insert_character", "ich1", + "insert_line", "il1", + "insert_padding", "ip", + "key_backspace", "kbs", + "key_catab", "ktbc", + "key_clear", "kclr", + "key_ctab", "kctab", + "key_dc", "kdch1", + "key_dl", "kdl1", + "key_down", "kcud1", + "key_eic", "krmir", + "key_eol", "kel", + "key_eos", "ked", + "key_f0", "kf0", + "key_f1", "kf1", + "key_f10", "kf10", + "key_f2", "kf2", + "key_f3", "kf3", + "key_f4", "kf4", + "key_f5", "kf5", + "key_f6", "kf6", + "key_f7", "kf7", + "key_f8", "kf8", + "key_f9", "kf9", + "key_home", "khome", + "key_ic", "kich1", + "key_il", "kil1", + "key_left", "kcub1", + "key_ll", "kll", + "key_npage", "knp", + "key_ppage", "kpp", + "key_right", "kcuf1", + "key_sf", "kind", + "key_sr", "kri", + "key_stab", "khts", + "key_up", "kcuu1", + "keypad_local", "rmkx", + "keypad_xmit", "smkx", + "lab_f0", "lf0", + "lab_f1", "lf1", + "lab_f10", "lf10", + "lab_f2", "lf2", + "lab_f3", "lf3", + "lab_f4", "lf4", + "lab_f5", "lf5", + "lab_f6", "lf6", + "lab_f7", "lf7", + "lab_f8", "lf8", + "lab_f9", "lf9", + "meta_off", "rmm", + "meta_on", "smm", + "newline", "nel", + "pad_char", "pad", + "parm_dch", "dch", + "parm_delete_line", "dl", + "parm_down_cursor", "cud", + "parm_ich", "ich", + "parm_index", "indn", + "parm_insert_line", "il", + "parm_left_cursor", "cub", + "parm_right_cursor", "cuf", + "parm_rindex", "rin", + "parm_up_cursor", "cuu", + "pkey_key", "pfkey", + "pkey_local", "pfloc", + "pkey_xmit", "pfx", + "print_screen", "mc0", + "prtr_off", "mc4", + "prtr_on", "mc5", + "repeat_char", "rep", + "reset_1string", "rs1", + "reset_2string", "rs2", + "reset_3string", "rs3", + "reset_file", "rf", + "restore_cursor", "rc", + "row_address", "vpa", + "save_cursor", "sc", + "scroll_forward", "ind", + "scroll_reverse", "ri", + "set_attributes", "sgr", + "set_tab", "hts", + "set_window", "wind", + "tab", "ht", + "to_status_line", "tsl", + "underline_char", "uc", + "up_half_line", "hu", + "init_prog", "iprog", + "key_a1", "ka1", + "key_a3", "ka3", + "key_b2", "kb2", + "key_c1", "kc1", + "key_c3", "kc3", + "prtr_non", "mc5p", + "char_padding", "rmp", + "acs_chars", "acsc", + "plab_norm", "pln", + "key_btab", "kcbt", + "enter_xon_mode", "smxon", + "exit_xon_mode", "rmxon", + "enter_am_mode", "smam", + "exit_am_mode", "rmam", + "xon_character", "xonc", + "xoff_character", "xoffc", + "ena_acs", "enacs", + "label_on", "smln", + "label_off", "rmln", + "key_beg", "kbeg", + "key_cancel", "kcan", + "key_close", "kclo", + "key_command", "kcmd", + "key_copy", "kcpy", + "key_create", "kcrt", + "key_end", "kend", + "key_enter", "kent", + "key_exit", "kext", + "key_find", "kfnd", + "key_help", "khlp", + "key_mark", "kmrk", + "key_message", "kmsg", + "key_move", "kmov", + "key_next", "knxt", + "key_open", "kopn", + "key_options", "kopt", + "key_previous", "kprv", + "key_print", "kprt", + "key_redo", "krdo", + "key_reference", "kref", + "key_refresh", "krfr", + "key_replace", "krpl", + "key_restart", "krst", + "key_resume", "kres", + "key_save", "ksav", + "key_suspend", "kspd", + "key_undo", "kund", + "key_sbeg", "kBEG", + "key_scancel", "kCAN", + "key_scommand", "kCMD", + "key_scopy", "kCPY", + "key_screate", "kCRT", + "key_sdc", "kDC", + "key_sdl", "kDL", + "key_select", "kslt", + "key_send", "kEND", + "key_seol", "kEOL", + "key_sexit", "kEXT", + "key_sfind", "kFND", + "key_shelp", "kHLP", + "key_shome", "kHOM", + "key_sic", "kIC", + "key_sleft", "kLFT", + "key_smessage", "kMSG", + "key_smove", "kMOV", + "key_snext", "kNXT", + "key_soptions", "kOPT", + "key_sprevious", "kPRV", + "key_sprint", "kPRT", + "key_sredo", "kRDO", + "key_sreplace", "kRPL", + "key_sright", "kRIT", + "key_srsume", "kRES", + "key_ssave", "kSAV", + "key_ssuspend", "kSPD", + "key_sundo", "kUND", + "req_for_input", "rfi", + "key_f11", "kf11", + "key_f12", "kf12", + "key_f13", "kf13", + "key_f14", "kf14", + "key_f15", "kf15", + "key_f16", "kf16", + "key_f17", "kf17", + "key_f18", "kf18", + "key_f19", "kf19", + "key_f20", "kf20", + "key_f21", "kf21", + "key_f22", "kf22", + "key_f23", "kf23", + "key_f24", "kf24", + "key_f25", "kf25", + "key_f26", "kf26", + "key_f27", "kf27", + "key_f28", "kf28", + "key_f29", "kf29", + "key_f30", "kf30", + "key_f31", "kf31", + "key_f32", "kf32", + "key_f33", "kf33", + "key_f34", "kf34", + "key_f35", "kf35", + "key_f36", "kf36", + "key_f37", "kf37", + "key_f38", "kf38", + "key_f39", "kf39", + "key_f40", "kf40", + "key_f41", "kf41", + "key_f42", "kf42", + "key_f43", "kf43", + "key_f44", "kf44", + "key_f45", "kf45", + "key_f46", "kf46", + "key_f47", "kf47", + "key_f48", "kf48", + "key_f49", "kf49", + "key_f50", "kf50", + "key_f51", "kf51", + "key_f52", "kf52", + "key_f53", "kf53", + "key_f54", "kf54", + "key_f55", "kf55", + "key_f56", "kf56", + "key_f57", "kf57", + "key_f58", "kf58", + "key_f59", "kf59", + "key_f60", "kf60", + "key_f61", "kf61", + "key_f62", "kf62", + "key_f63", "kf63", + "clr_bol", "el1", + "clear_margins", "mgc", + "set_left_margin", "smgl", + "set_right_margin", "smgr", + "label_format", "fln", + "set_clock", "sclk", + "display_clock", "dclk", + "remove_clock", "rmclk", + "create_window", "cwin", + "goto_window", "wingo", + "hangup", "hup", + "dial_phone", "dial", + "quick_dial", "qdial", + "tone", "tone", + "pulse", "pulse", + "flash_hook", "hook", + "fixed_pause", "pause", + "wait_tone", "wait", + "user0", "u0", + "user1", "u1", + "user2", "u2", + "user3", "u3", + "user4", "u4", + "user5", "u5", + "user6", "u6", + "user7", "u7", + "user8", "u8", + "user9", "u9", + "orig_pair", "op", + "orig_colors", "oc", + "initialize_color", "initc", + "initialize_pair", "initp", + "set_color_pair", "scp", + "set_foreground", "setf", + "set_background", "setb", + "change_char_pitch", "cpi", + "change_line_pitch", "lpi", + "change_res_horz", "chr", + "change_res_vert", "cvr", + "define_char", "defc", + "enter_doublewide_mode", "swidm", + "enter_draft_quality", "sdrfq", + "enter_italics_mode", "sitm", + "enter_leftward_mode", "slm", + "enter_micro_mode", "smicm", + "enter_near_letter_quality", "snlq", + "enter_normal_quality", "snrmq", + "enter_shadow_mode", "sshm", + "enter_subscript_mode", "ssubm", + "enter_superscript_mode", "ssupm", + "enter_upward_mode", "sum", + "exit_doublewide_mode", "rwidm", + "exit_italics_mode", "ritm", + "exit_leftward_mode", "rlm", + "exit_micro_mode", "rmicm", + "exit_shadow_mode", "rshm", + "exit_subscript_mode", "rsubm", + "exit_superscript_mode", "rsupm", + "exit_upward_mode", "rum", + "micro_column_address", "mhpa", + "micro_down", "mcud1", + "micro_left", "mcub1", + "micro_right", "mcuf1", + "micro_row_address", "mvpa", + "micro_up", "mcuu1", + "order_of_pins", "porder", + "parm_down_micro", "mcud", + "parm_left_micro", "mcub", + "parm_right_micro", "mcuf", + "parm_up_micro", "mcuu", + "select_char_set", "scs", + "set_bottom_margin", "smgb", + "set_bottom_margin_parm", "smgbp", + "set_left_margin_parm", "smglp", + "set_right_margin_parm", "smgrp", + "set_top_margin", "smgt", + "set_top_margin_parm", "smgtp", + "start_bit_image", "sbim", + "start_char_set_def", "scsd", + "stop_bit_image", "rbim", + "stop_char_set_def", "rcsd", + "subscript_characters", "subcs", + "superscript_characters", "supcs", + "these_cause_cr", "docr", + "zero_motion", "zerom", + "char_set_names", "csnm", + "key_mouse", "kmous", + "mouse_info", "minfo", + "req_mouse_pos", "reqmp", + "get_mouse", "getm", + "set_a_foreground", "setaf", + "set_a_background", "setab", + "pkey_plab", "pfxl", + "device_type", "devt", + "code_set_init", "csin", + "set0_des_seq", "s0ds", + "set1_des_seq", "s1ds", + "set2_des_seq", "s2ds", + "set3_des_seq", "s3ds", + "set_lr_margin", "smglr", + "set_tb_margin", "smgtb", + "bit_image_repeat", "birep", + "bit_image_newline", "binel", + "bit_image_carriage_return", "bicr", + "color_names", "colornm", + "define_bit_image_region", "defbi", + "end_bit_image_region", "endbi", + "set_color_band", "setcolor", + "set_page_length", "slines", + "display_pc_char", "dispc", + "enter_pc_charset_mode", "smpch", + "exit_pc_charset_mode", "rmpch", + "enter_scancode_mode", "smsc", + "exit_scancode_mode", "rmsc", + "pc_term_options", "pctrm", + "scancode_escape", "scesc", + "alt_scancode_esc", "scesa", + "enter_horizontal_hl_mode", "ehhlm", + "enter_left_hl_mode", "elhlm", + "enter_low_hl_mode", "elohlm", + "enter_right_hl_mode", "erhlm", + "enter_top_hl_mode", "ethlm", + "enter_vertical_hl_mode", "evhlm", + "set_a_attributes", "sgr1", + "set_pglen_inch", "slength", + "termcap_init2", "OTi2", + "termcap_reset", "OTrs", + "linefeed_if_not_lf", "OTnl", + "backspace_if_not_bs", "OTbc", + "other_non_function_keys", "OTko", + "arrow_key_map", "OTma", + "acs_ulcorner", "OTG2", + "acs_llcorner", "OTG3", + "acs_urcorner", "OTG1", + "acs_lrcorner", "OTG4", + "acs_ltee", "OTGR", + "acs_rtee", "OTGL", + "acs_btee", "OTGU", + "acs_ttee", "OTGD", + "acs_hline", "OTGH", + "acs_vline", "OTGV", + "acs_plus", "OTGC", + "memory_lock", "meml", + "memory_unlock", "memu", + "box_chars_1", "box1", +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/color.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/color.go new file mode 100644 index 0000000..76c439f --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/color.go @@ -0,0 +1,88 @@ +package terminfo + +import ( + "os" + "strconv" + "strings" +) + +// ColorLevel is the color level supported by a terminal. +type ColorLevel uint + +// ColorLevel values. +const ( + ColorLevelNone ColorLevel = iota + ColorLevelBasic + ColorLevelHundreds + ColorLevelMillions +) + +// String satisfies the Stringer interface. +func (c ColorLevel) String() string { + switch c { + case ColorLevelBasic: + return "basic" + case ColorLevelHundreds: + return "hundreds" + case ColorLevelMillions: + return "millions" + } + return "none" +} + +// ChromaFormatterName returns the github.com/alecthomas/chroma compatible +// formatter name for the color level. +func (c ColorLevel) ChromaFormatterName() string { + switch c { + case ColorLevelBasic: + return "terminal" + case ColorLevelHundreds: + return "terminal256" + case ColorLevelMillions: + return "terminal16m" + } + return "noop" +} + +// ColorLevelFromEnv returns the color level COLORTERM, FORCE_COLOR, +// TERM_PROGRAM, or determined from the TERM environment variable. +func ColorLevelFromEnv() (ColorLevel, error) { + // check for overriding environment variables + colorTerm, termProg, forceColor := os.Getenv("COLORTERM"), os.Getenv("TERM_PROGRAM"), os.Getenv("FORCE_COLOR") + switch { + case strings.Contains(colorTerm, "truecolor") || strings.Contains(colorTerm, "24bit") || termProg == "Hyper": + return ColorLevelMillions, nil + case colorTerm != "" || forceColor != "": + return ColorLevelBasic, nil + case termProg == "Apple_Terminal": + return ColorLevelHundreds, nil + case termProg == "iTerm.app": + ver := os.Getenv("TERM_PROGRAM_VERSION") + if ver == "" { + return ColorLevelHundreds, nil + } + i, err := strconv.Atoi(strings.Split(ver, ".")[0]) + if err != nil { + return ColorLevelNone, ErrInvalidTermProgramVersion + } + if i == 3 { + return ColorLevelMillions, nil + } + return ColorLevelHundreds, nil + } + // otherwise determine from TERM's max_colors capability + if term := os.Getenv("TERM"); term != "" { + ti, err := Load(term) + if err != nil { + return ColorLevelNone, err + } + v, ok := ti.Nums[MaxColors] + switch { + case !ok || v <= 16: + return ColorLevelNone, nil + case ok && v >= 256: + return ColorLevelHundreds, nil + } + } + return ColorLevelBasic, nil +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/dec.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/dec.go new file mode 100644 index 0000000..dacc88e --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/dec.go @@ -0,0 +1,245 @@ +package terminfo + +import ( + "sort" +) + +const ( + // maxFileLength is the max file length. + maxFileLength = 4096 + // magic is the file magic for terminfo files. + magic = 0o432 + // magicExtended is the file magic for terminfo files with the extended + // number format. + magicExtended = 0o1036 +) + +// header fields. +const ( + fieldMagic = iota + fieldNameSize + fieldBoolCount + fieldNumCount + fieldStringCount + fieldTableSize +) + +// header extended fields. +const ( + fieldExtBoolCount = iota + fieldExtNumCount + fieldExtStringCount + fieldExtOffsetCount + fieldExtTableSize +) + +// hasInvalidCaps determines if the capabilities in h are invalid. +func hasInvalidCaps(h []int) bool { + return h[fieldBoolCount] > CapCountBool || + h[fieldNumCount] > CapCountNum || + h[fieldStringCount] > CapCountString +} + +// capLength returns the total length of the capabilities in bytes. +func capLength(h []int) int { + return h[fieldNameSize] + + h[fieldBoolCount] + + (h[fieldNameSize]+h[fieldBoolCount])%2 + // account for word align + h[fieldNumCount]*2 + + h[fieldStringCount]*2 + + h[fieldTableSize] +} + +// hasInvalidExtOffset determines if the extended offset field is valid. +func hasInvalidExtOffset(h []int) bool { + return h[fieldExtBoolCount]+ + h[fieldExtNumCount]+ + h[fieldExtStringCount]*2 != h[fieldExtOffsetCount] +} + +// extCapLength returns the total length of extended capabilities in bytes. +func extCapLength(h []int, numWidth int) int { + return h[fieldExtBoolCount] + + h[fieldExtBoolCount]%2 + // account for word align + h[fieldExtNumCount]*(numWidth/8) + + h[fieldExtOffsetCount]*2 + + h[fieldExtTableSize] +} + +// findNull finds the position of null in buf. +func findNull(buf []byte, i int) int { + for ; i < len(buf); i++ { + if buf[i] == 0 { + return i + } + } + return -1 +} + +// readStrings decodes n strings from string data table buf using the indexes in idx. +func readStrings(idx []int, buf []byte, n int) (map[int][]byte, int, error) { + var last int + m := make(map[int][]byte) + for i := 0; i < n; i++ { + start := idx[i] + if start < 0 { + continue + } + if end := findNull(buf, start); end != -1 { + m[i], last = buf[start:end], end+1 + } else { + return nil, 0, ErrInvalidStringTable + } + } + return m, last, nil +} + +// decoder holds state info while decoding a terminfo file. +type decoder struct { + buf []byte + pos int + n int +} + +// readBytes reads the next n bytes of buf, incrementing pos by n. +func (d *decoder) readBytes(n int) ([]byte, error) { + if d.n < d.pos+n { + return nil, ErrUnexpectedFileEnd + } + n, d.pos = d.pos, d.pos+n + return d.buf[n:d.pos], nil +} + +// readInts reads n number of ints with width w. +func (d *decoder) readInts(n, w int) ([]int, error) { + w /= 8 + l := n * w + buf, err := d.readBytes(l) + if err != nil { + return nil, err + } + // align + d.pos += d.pos % 2 + z := make([]int, n) + for i, j := 0, 0; i < l; i, j = i+w, j+1 { + switch w { + case 1: + z[i] = int(buf[i]) + case 2: + z[j] = int(int16(buf[i+1])<<8 | int16(buf[i])) + case 4: + z[j] = int(buf[i+3])<<24 | int(buf[i+2])<<16 | int(buf[i+1])<<8 | int(buf[i]) + } + } + return z, nil +} + +// readBools reads the next n bools. +func (d *decoder) readBools(n int) (map[int]bool, map[int]bool, error) { + buf, err := d.readInts(n, 8) + if err != nil { + return nil, nil, err + } + // process + bools, boolsM := make(map[int]bool), make(map[int]bool) + for i, b := range buf { + bools[i] = b == 1 + if int8(b) == -2 { + boolsM[i] = true + } + } + return bools, boolsM, nil +} + +// readNums reads the next n nums. +func (d *decoder) readNums(n, w int) (map[int]int, map[int]bool, error) { + buf, err := d.readInts(n, w) + if err != nil { + return nil, nil, err + } + // process + nums, numsM := make(map[int]int), make(map[int]bool) + for i := 0; i < n; i++ { + nums[i] = buf[i] + if buf[i] == -2 { + numsM[i] = true + } + } + return nums, numsM, nil +} + +// readStringTable reads the string data for n strings and the accompanying data +// table of length sz. +func (d *decoder) readStringTable(n, sz int) ([][]byte, []int, error) { + buf, err := d.readInts(n, 16) + if err != nil { + return nil, nil, err + } + // read string data table + data, err := d.readBytes(sz) + if err != nil { + return nil, nil, err + } + // align + d.pos += d.pos % 2 + // process + s := make([][]byte, n) + var m []int + for i := 0; i < n; i++ { + start := buf[i] + if start == -2 { + m = append(m, i) + } else if start >= 0 { + if end := findNull(data, start); end != -1 { + s[i] = data[start:end] + } else { + return nil, nil, ErrInvalidStringTable + } + } + } + return s, m, nil +} + +// readStrings reads the next n strings and processes the string data table of +// length sz. +func (d *decoder) readStrings(n, sz int) (map[int][]byte, map[int]bool, error) { + s, m, err := d.readStringTable(n, sz) + if err != nil { + return nil, nil, err + } + strs := make(map[int][]byte) + for k, v := range s { + if k == AcsChars { + v = canonicalizeAscChars(v) + } + strs[k] = v + } + strsM := make(map[int]bool, len(m)) + for _, k := range m { + strsM[k] = true + } + return strs, strsM, nil +} + +// canonicalizeAscChars reorders chars to be unique, in order. +// +// see repair_ascc in ncurses-6.3/progs/dump_entry.c +func canonicalizeAscChars(z []byte) []byte { + var c []byte + enc := make(map[byte]byte, len(z)/2) + for i := 0; i < len(z); i += 2 { + if _, ok := enc[z[i]]; !ok { + a, b := z[i], z[i+1] + // log.Printf(">>> a: %d %c, b: %d %c", a, a, b, b) + c, enc[a] = append(c, b), b + } + } + sort.Slice(c, func(i, j int) bool { + return c[i] < c[j] + }) + r := make([]byte, 2*len(c)) + for i := 0; i < len(c); i++ { + r[i*2], r[i*2+1] = c[i], enc[c[i]] + } + return r +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/load.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/load.go new file mode 100644 index 0000000..d7cd266 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/load.go @@ -0,0 +1,64 @@ +package terminfo + +import ( + "os" + "os/user" + "path" + "strings" + "sync" +) + +// termCache is the terminfo cache. +var termCache = struct { + db map[string]*Terminfo + sync.RWMutex +}{ + db: make(map[string]*Terminfo), +} + +// Load follows the behavior described in terminfo(5) to find correct the +// terminfo file using the name, reads the file and then returns a Terminfo +// struct that describes the file. +func Load(name string) (*Terminfo, error) { + if name == "" { + return nil, ErrEmptyTermName + } + termCache.RLock() + ti, ok := termCache.db[name] + termCache.RUnlock() + if ok { + return ti, nil + } + var checkDirs []string + // check $TERMINFO + if dir := os.Getenv("TERMINFO"); dir != "" { + checkDirs = append(checkDirs, dir) + } + // check $HOME/.terminfo + u, err := user.Current() + if err != nil { + return nil, err + } + checkDirs = append(checkDirs, path.Join(u.HomeDir, ".terminfo")) + // check $TERMINFO_DIRS + if dirs := os.Getenv("TERMINFO_DIRS"); dirs != "" { + checkDirs = append(checkDirs, strings.Split(dirs, ":")...) + } + // check fallback directories + checkDirs = append(checkDirs, "/etc/terminfo", "/lib/terminfo", "/usr/share/terminfo") + for _, dir := range checkDirs { + ti, err = Open(dir, name) + if err != nil && err != ErrFileNotFound && !os.IsNotExist(err) { + return nil, err + } else if err == nil { + return ti, nil + } + } + return nil, ErrDatabaseDirectoryNotFound +} + +// LoadFromEnv loads the terminal info based on the name contained in +// environment variable TERM. +func LoadFromEnv() (*Terminfo, error) { + return Load(os.Getenv("TERM")) +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/param.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/param.go new file mode 100644 index 0000000..ed4cb86 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/param.go @@ -0,0 +1,405 @@ +package terminfo + +import ( + "bytes" + "fmt" + "io" + "strconv" + "strings" + "sync" +) + +// parametizer represents the a scan state for a parameterized string. +type parametizer struct { + // z is the string to parameterize + z []byte + // pos is the current position in s. + pos int + // nest is the current nest level. + nest int + // s is the variable stack. + s stack + // skipElse keeps the state of skipping else. + skipElse bool + // buf is the result buffer. + buf *bytes.Buffer + // params are the parameters to interpolate. + params [9]interface{} + // vars are dynamic variables. + vars [26]interface{} +} + +// staticVars are the static, global variables. +var staticVars = struct { + vars [26]interface{} + sync.Mutex +}{} + +var parametizerPool = sync.Pool{ + New: func() interface{} { + p := new(parametizer) + p.buf = bytes.NewBuffer(make([]byte, 0, 45)) + return p + }, +} + +// newParametizer returns a new initialized parametizer from the pool. +func newParametizer(z []byte) *parametizer { + p := parametizerPool.Get().(*parametizer) + p.z = z + return p +} + +// reset resets the parametizer. +func (p *parametizer) reset() { + p.pos, p.nest = 0, 0 + p.s.reset() + p.buf.Reset() + p.params, p.vars = [9]interface{}{}, [26]interface{}{} + parametizerPool.Put(p) +} + +// stateFn represents the state of the scanner as a function that returns the +// next state. +type stateFn func() stateFn + +// exec executes the parameterizer, interpolating the supplied parameters. +func (p *parametizer) exec() string { + for state := p.scanTextFn; state != nil; { + state = state() + } + return p.buf.String() +} + +// peek returns the next byte. +func (p *parametizer) peek() (byte, error) { + if p.pos >= len(p.z) { + return 0, io.EOF + } + return p.z[p.pos], nil +} + +// writeFrom writes the characters from ppos to pos to the buffer. +func (p *parametizer) writeFrom(ppos int) { + if p.pos > ppos { + // append remaining characters. + p.buf.Write(p.z[ppos:p.pos]) + } +} + +func (p *parametizer) scanTextFn() stateFn { + ppos := p.pos + for { + ch, err := p.peek() + if err != nil { + p.writeFrom(ppos) + return nil + } + if ch == '%' { + p.writeFrom(ppos) + p.pos++ + return p.scanCodeFn + } + p.pos++ + } +} + +func (p *parametizer) scanCodeFn() stateFn { + ch, err := p.peek() + if err != nil { + return nil + } + switch ch { + case '%': + p.buf.WriteByte('%') + case ':': + // this character is used to avoid interpreting "%-" and "%+" as operators. + // the next character is where the format really begins. + p.pos++ + _, err = p.peek() + if err != nil { + return nil + } + return p.scanFormatFn + case '#', ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.': + return p.scanFormatFn + case 'o': + p.buf.WriteString(strconv.FormatInt(int64(p.s.popInt()), 8)) + case 'd': + p.buf.WriteString(strconv.Itoa(p.s.popInt())) + case 'x': + p.buf.WriteString(strconv.FormatInt(int64(p.s.popInt()), 16)) + case 'X': + p.buf.WriteString(strings.ToUpper(strconv.FormatInt(int64(p.s.popInt()), 16))) + case 's': + p.buf.WriteString(p.s.popString()) + case 'c': + p.buf.WriteByte(p.s.popByte()) + case 'p': + p.pos++ + return p.pushParamFn + case 'P': + p.pos++ + return p.setDsVarFn + case 'g': + p.pos++ + return p.getDsVarFn + case '\'': + p.pos++ + ch, err = p.peek() + if err != nil { + return nil + } + p.s.push(ch) + // skip the '\'' + p.pos++ + case '{': + p.pos++ + return p.pushIntfn + case 'l': + p.s.push(len(p.s.popString())) + case '+': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai + bi) + case '-': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai - bi) + case '*': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai * bi) + case '/': + bi, ai := p.s.popInt(), p.s.popInt() + if bi != 0 { + p.s.push(ai / bi) + } else { + p.s.push(0) + } + case 'm': + bi, ai := p.s.popInt(), p.s.popInt() + if bi != 0 { + p.s.push(ai % bi) + } else { + p.s.push(0) + } + case '&': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai & bi) + case '|': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai | bi) + case '^': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai ^ bi) + case '=': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai == bi) + case '>': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai > bi) + case '<': + bi, ai := p.s.popInt(), p.s.popInt() + p.s.push(ai < bi) + case 'A': + bi, ai := p.s.popBool(), p.s.popBool() + p.s.push(ai && bi) + case 'O': + bi, ai := p.s.popBool(), p.s.popBool() + p.s.push(ai || bi) + case '!': + p.s.push(!p.s.popBool()) + case '~': + p.s.push(^p.s.popInt()) + case 'i': + for i := range p.params[:2] { + if n, ok := p.params[i].(int); ok { + p.params[i] = n + 1 + } + } + case '?', ';': + case 't': + return p.scanThenFn + case 'e': + p.skipElse = true + return p.skipTextFn + } + p.pos++ + return p.scanTextFn +} + +func (p *parametizer) scanFormatFn() stateFn { + // the character was already read, so no need to check the error. + ch, _ := p.peek() + // 6 should be the maximum length of a format string, for example "%:-9.9d". + f := []byte{'%', ch, 0, 0, 0, 0} + var err error + for { + p.pos++ + ch, err = p.peek() + if err != nil { + return nil + } + f = append(f, ch) + switch ch { + case 'o', 'd', 'x', 'X': + fmt.Fprintf(p.buf, string(f), p.s.popInt()) + break + case 's': + fmt.Fprintf(p.buf, string(f), p.s.popString()) + break + case 'c': + fmt.Fprintf(p.buf, string(f), p.s.popByte()) + break + } + } + p.pos++ + return p.scanTextFn +} + +func (p *parametizer) pushParamFn() stateFn { + ch, err := p.peek() + if err != nil { + return nil + } + if ai := int(ch - '1'); ai >= 0 && ai < len(p.params) { + p.s.push(p.params[ai]) + } else { + p.s.push(0) + } + // skip the '}' + p.pos++ + return p.scanTextFn +} + +func (p *parametizer) setDsVarFn() stateFn { + ch, err := p.peek() + if err != nil { + return nil + } + if ch >= 'A' && ch <= 'Z' { + staticVars.Lock() + staticVars.vars[int(ch-'A')] = p.s.pop() + staticVars.Unlock() + } else if ch >= 'a' && ch <= 'z' { + p.vars[int(ch-'a')] = p.s.pop() + } + p.pos++ + return p.scanTextFn +} + +func (p *parametizer) getDsVarFn() stateFn { + ch, err := p.peek() + if err != nil { + return nil + } + var a byte + if ch >= 'A' && ch <= 'Z' { + a = 'A' + } else if ch >= 'a' && ch <= 'z' { + a = 'a' + } + staticVars.Lock() + p.s.push(staticVars.vars[int(ch-a)]) + staticVars.Unlock() + p.pos++ + return p.scanTextFn +} + +func (p *parametizer) pushIntfn() stateFn { + var ai int + for { + ch, err := p.peek() + if err != nil { + return nil + } + p.pos++ + if ch < '0' || ch > '9' { + p.s.push(ai) + return p.scanTextFn + } + ai = (ai * 10) + int(ch-'0') + } +} + +func (p *parametizer) scanThenFn() stateFn { + p.pos++ + if p.s.popBool() { + return p.scanTextFn + } + p.skipElse = false + return p.skipTextFn +} + +func (p *parametizer) skipTextFn() stateFn { + for { + ch, err := p.peek() + if err != nil { + return nil + } + p.pos++ + if ch == '%' { + break + } + } + if p.skipElse { + return p.skipElseFn + } + return p.skipThenFn +} + +func (p *parametizer) skipThenFn() stateFn { + ch, err := p.peek() + if err != nil { + return nil + } + p.pos++ + switch ch { + case ';': + if p.nest == 0 { + return p.scanTextFn + } + p.nest-- + case '?': + p.nest++ + case 'e': + if p.nest == 0 { + return p.scanTextFn + } + } + return p.skipTextFn +} + +func (p *parametizer) skipElseFn() stateFn { + ch, err := p.peek() + if err != nil { + return nil + } + p.pos++ + switch ch { + case ';': + if p.nest == 0 { + return p.scanTextFn + } + p.nest-- + case '?': + p.nest++ + } + return p.skipTextFn +} + +// Printf evaluates a parameterized terminfo value z, interpolating params. +func Printf(z []byte, params ...interface{}) string { + p := newParametizer(z) + defer p.reset() + // make sure we always have 9 parameters -- makes it easier + // later to skip checks and its faster + for i := 0; i < len(p.params) && i < len(params); i++ { + p.params[i] = params[i] + } + return p.exec() +} + +// Fprintf evaluates a parameterized terminfo value z, interpolating params and +// writing to w. +func Fprintf(w io.Writer, z []byte, params ...interface{}) { + w.Write([]byte(Printf(z, params...))) +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/stack.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/stack.go new file mode 100644 index 0000000..a6de395 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/stack.go @@ -0,0 +1,48 @@ +package terminfo + +type stack []interface{} + +func (s *stack) push(v interface{}) { + *s = append(*s, v) +} + +func (s *stack) pop() interface{} { + if len(*s) == 0 { + return nil + } + v := (*s)[len(*s)-1] + *s = (*s)[:len(*s)-1] + return v +} + +func (s *stack) popInt() int { + if i, ok := s.pop().(int); ok { + return i + } + return 0 +} + +func (s *stack) popBool() bool { + if b, ok := s.pop().(bool); ok { + return b + } + return false +} + +func (s *stack) popByte() byte { + if b, ok := s.pop().(byte); ok { + return b + } + return 0 +} + +func (s *stack) popString() string { + if a, ok := s.pop().(string); ok { + return a + } + return "" +} + +func (s *stack) reset() { + *s = (*s)[:0] +} diff --git a/src/vcom-0.2.5/vendor/github.com/xo/terminfo/terminfo.go b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/terminfo.go new file mode 100644 index 0000000..69e3b60 --- /dev/null +++ b/src/vcom-0.2.5/vendor/github.com/xo/terminfo/terminfo.go @@ -0,0 +1,479 @@ +// Package terminfo implements reading terminfo files in pure go. +package terminfo + +//go:generate go run gen.go + +import ( + "io" + "io/ioutil" + "path" + "strconv" + "strings" +) + +// Error is a terminfo error. +type Error string + +// Error satisfies the error interface. +func (err Error) Error() string { + return string(err) +} + +const ( + // ErrInvalidFileSize is the invalid file size error. + ErrInvalidFileSize Error = "invalid file size" + // ErrUnexpectedFileEnd is the unexpected file end error. + ErrUnexpectedFileEnd Error = "unexpected file end" + // ErrInvalidStringTable is the invalid string table error. + ErrInvalidStringTable Error = "invalid string table" + // ErrInvalidMagic is the invalid magic error. + ErrInvalidMagic Error = "invalid magic" + // ErrInvalidHeader is the invalid header error. + ErrInvalidHeader Error = "invalid header" + // ErrInvalidNames is the invalid names error. + ErrInvalidNames Error = "invalid names" + // ErrInvalidExtendedHeader is the invalid extended header error. + ErrInvalidExtendedHeader Error = "invalid extended header" + // ErrEmptyTermName is the empty term name error. + ErrEmptyTermName Error = "empty term name" + // ErrDatabaseDirectoryNotFound is the database directory not found error. + ErrDatabaseDirectoryNotFound Error = "database directory not found" + // ErrFileNotFound is the file not found error. + ErrFileNotFound Error = "file not found" + // ErrInvalidTermProgramVersion is the invalid TERM_PROGRAM_VERSION error. + ErrInvalidTermProgramVersion Error = "invalid TERM_PROGRAM_VERSION" +) + +// Terminfo describes a terminal's capabilities. +type Terminfo struct { + // File is the original source file. + File string + // Names are the provided cap names. + Names []string + // Bools are the bool capabilities. + Bools map[int]bool + // BoolsM are the missing bool capabilities. + BoolsM map[int]bool + // Nums are the num capabilities. + Nums map[int]int + // NumsM are the missing num capabilities. + NumsM map[int]bool + // Strings are the string capabilities. + Strings map[int][]byte + // StringsM are the missing string capabilities. + StringsM map[int]bool + // ExtBools are the extended bool capabilities. + ExtBools map[int]bool + // ExtBoolsNames is the map of extended bool capabilities to their index. + ExtBoolNames map[int][]byte + // ExtNums are the extended num capabilities. + ExtNums map[int]int + // ExtNumsNames is the map of extended num capabilities to their index. + ExtNumNames map[int][]byte + // ExtStrings are the extended string capabilities. + ExtStrings map[int][]byte + // ExtStringsNames is the map of extended string capabilities to their index. + ExtStringNames map[int][]byte +} + +// Decode decodes the terminfo data contained in buf. +func Decode(buf []byte) (*Terminfo, error) { + var err error + // check max file length + if len(buf) >= maxFileLength { + return nil, ErrInvalidFileSize + } + d := &decoder{ + buf: buf, + n: len(buf), + } + // read header + h, err := d.readInts(6, 16) + if err != nil { + return nil, err + } + var numWidth int + // check magic + switch { + case h[fieldMagic] == magic: + numWidth = 16 + case h[fieldMagic] == magicExtended: + numWidth = 32 + default: + return nil, ErrInvalidMagic + } + // check header + if hasInvalidCaps(h) { + return nil, ErrInvalidHeader + } + // check remaining length + if d.n-d.pos < capLength(h) { + return nil, ErrUnexpectedFileEnd + } + // read names + names, err := d.readBytes(h[fieldNameSize]) + if err != nil { + return nil, err + } + // check name is terminated properly + i := findNull(names, 0) + if i == -1 { + return nil, ErrInvalidNames + } + names = names[:i] + // read bool caps + bools, boolsM, err := d.readBools(h[fieldBoolCount]) + if err != nil { + return nil, err + } + // read num caps + nums, numsM, err := d.readNums(h[fieldNumCount], numWidth) + if err != nil { + return nil, err + } + // read string caps + strs, strsM, err := d.readStrings(h[fieldStringCount], h[fieldTableSize]) + if err != nil { + return nil, err + } + ti := &Terminfo{ + Names: strings.Split(string(names), "|"), + Bools: bools, + BoolsM: boolsM, + Nums: nums, + NumsM: numsM, + Strings: strs, + StringsM: strsM, + } + // at the end of file, so no extended caps + if d.pos >= d.n { + return ti, nil + } + // decode extended header + eh, err := d.readInts(5, 16) + if err != nil { + return nil, err + } + // check extended offset field + if hasInvalidExtOffset(eh) { + return nil, ErrInvalidExtendedHeader + } + // check extended cap lengths + if d.n-d.pos != extCapLength(eh, numWidth) { + return nil, ErrInvalidExtendedHeader + } + // read extended bool caps + ti.ExtBools, _, err = d.readBools(eh[fieldExtBoolCount]) + if err != nil { + return nil, err + } + // read extended num caps + ti.ExtNums, _, err = d.readNums(eh[fieldExtNumCount], numWidth) + if err != nil { + return nil, err + } + // read extended string data table indexes + extIndexes, err := d.readInts(eh[fieldExtOffsetCount], 16) + if err != nil { + return nil, err + } + // read string data table + extData, err := d.readBytes(eh[fieldExtTableSize]) + if err != nil { + return nil, err + } + // precautionary check that exactly at end of file + if d.pos != d.n { + return nil, ErrUnexpectedFileEnd + } + var last int + // read extended string caps + ti.ExtStrings, last, err = readStrings(extIndexes, extData, eh[fieldExtStringCount]) + if err != nil { + return nil, err + } + extIndexes, extData = extIndexes[eh[fieldExtStringCount]:], extData[last:] + // read extended bool names + ti.ExtBoolNames, _, err = readStrings(extIndexes, extData, eh[fieldExtBoolCount]) + if err != nil { + return nil, err + } + extIndexes = extIndexes[eh[fieldExtBoolCount]:] + // read extended num names + ti.ExtNumNames, _, err = readStrings(extIndexes, extData, eh[fieldExtNumCount]) + if err != nil { + return nil, err + } + extIndexes = extIndexes[eh[fieldExtNumCount]:] + // read extended string names + ti.ExtStringNames, _, err = readStrings(extIndexes, extData, eh[fieldExtStringCount]) + if err != nil { + return nil, err + } + // extIndexes = extIndexes[eh[fieldExtStringCount]:] + return ti, nil +} + +// Open reads the terminfo file name from the specified directory dir. +func Open(dir, name string) (*Terminfo, error) { + var err error + var buf []byte + var filename string + for _, f := range []string{ + path.Join(dir, name[0:1], name), + path.Join(dir, strconv.FormatUint(uint64(name[0]), 16), name), + } { + buf, err = ioutil.ReadFile(f) + if err == nil { + filename = f + break + } + } + if buf == nil { + return nil, ErrFileNotFound + } + // decode + ti, err := Decode(buf) + if err != nil { + return nil, err + } + // save original file name + ti.File = filename + // add to cache + termCache.Lock() + for _, n := range ti.Names { + termCache.db[n] = ti + } + termCache.Unlock() + return ti, nil +} + +// boolCaps returns all bool and extended capabilities using f to format the +// index key. +func (ti *Terminfo) boolCaps(f func(int) string, extended bool) map[string]bool { + m := make(map[string]bool, len(ti.Bools)+len(ti.ExtBools)) + if !extended { + for k, v := range ti.Bools { + m[f(k)] = v + } + } else { + for k, v := range ti.ExtBools { + m[string(ti.ExtBoolNames[k])] = v + } + } + return m +} + +// BoolCaps returns all bool capabilities. +func (ti *Terminfo) BoolCaps() map[string]bool { + return ti.boolCaps(BoolCapName, false) +} + +// BoolCapsShort returns all bool capabilities, using the short name as the +// index. +func (ti *Terminfo) BoolCapsShort() map[string]bool { + return ti.boolCaps(BoolCapNameShort, false) +} + +// ExtBoolCaps returns all extended bool capabilities. +func (ti *Terminfo) ExtBoolCaps() map[string]bool { + return ti.boolCaps(BoolCapName, true) +} + +// ExtBoolCapsShort returns all extended bool capabilities, using the short +// name as the index. +func (ti *Terminfo) ExtBoolCapsShort() map[string]bool { + return ti.boolCaps(BoolCapNameShort, true) +} + +// numCaps returns all num and extended capabilities using f to format the +// index key. +func (ti *Terminfo) numCaps(f func(int) string, extended bool) map[string]int { + m := make(map[string]int, len(ti.Nums)+len(ti.ExtNums)) + if !extended { + for k, v := range ti.Nums { + m[f(k)] = v + } + } else { + for k, v := range ti.ExtNums { + m[string(ti.ExtNumNames[k])] = v + } + } + return m +} + +// NumCaps returns all num capabilities. +func (ti *Terminfo) NumCaps() map[string]int { + return ti.numCaps(NumCapName, false) +} + +// NumCapsShort returns all num capabilities, using the short name as the +// index. +func (ti *Terminfo) NumCapsShort() map[string]int { + return ti.numCaps(NumCapNameShort, false) +} + +// ExtNumCaps returns all extended num capabilities. +func (ti *Terminfo) ExtNumCaps() map[string]int { + return ti.numCaps(NumCapName, true) +} + +// ExtNumCapsShort returns all extended num capabilities, using the short +// name as the index. +func (ti *Terminfo) ExtNumCapsShort() map[string]int { + return ti.numCaps(NumCapNameShort, true) +} + +// stringCaps returns all string and extended capabilities using f to format the +// index key. +func (ti *Terminfo) stringCaps(f func(int) string, extended bool) map[string][]byte { + m := make(map[string][]byte, len(ti.Strings)+len(ti.ExtStrings)) + if !extended { + for k, v := range ti.Strings { + m[f(k)] = v + } + } else { + for k, v := range ti.ExtStrings { + m[string(ti.ExtStringNames[k])] = v + } + } + return m +} + +// StringCaps returns all string capabilities. +func (ti *Terminfo) StringCaps() map[string][]byte { + return ti.stringCaps(StringCapName, false) +} + +// StringCapsShort returns all string capabilities, using the short name as the +// index. +func (ti *Terminfo) StringCapsShort() map[string][]byte { + return ti.stringCaps(StringCapNameShort, false) +} + +// ExtStringCaps returns all extended string capabilities. +func (ti *Terminfo) ExtStringCaps() map[string][]byte { + return ti.stringCaps(StringCapName, true) +} + +// ExtStringCapsShort returns all extended string capabilities, using the short +// name as the index. +func (ti *Terminfo) ExtStringCapsShort() map[string][]byte { + return ti.stringCaps(StringCapNameShort, true) +} + +// Has determines if the bool cap i is present. +func (ti *Terminfo) Has(i int) bool { + return ti.Bools[i] +} + +// Num returns the num cap i, or -1 if not present. +func (ti *Terminfo) Num(i int) int { + n, ok := ti.Nums[i] + if !ok { + return -1 + } + return n +} + +// Printf formats the string cap i, interpolating parameters v. +func (ti *Terminfo) Printf(i int, v ...interface{}) string { + return Printf(ti.Strings[i], v...) +} + +// Fprintf prints the string cap i to writer w, interpolating parameters v. +func (ti *Terminfo) Fprintf(w io.Writer, i int, v ...interface{}) { + Fprintf(w, ti.Strings[i], v...) +} + +// Color takes a foreground and background color and returns string that sets +// them for this terminal. +func (ti *Terminfo) Colorf(fg, bg int, str string) string { + maxColors := int(ti.Nums[MaxColors]) + // map bright colors to lower versions if the color table only holds 8. + if maxColors == 8 { + if fg > 7 && fg < 16 { + fg -= 8 + } + if bg > 7 && bg < 16 { + bg -= 8 + } + } + var s string + if maxColors > fg && fg >= 0 { + s += ti.Printf(SetAForeground, fg) + } + if maxColors > bg && bg >= 0 { + s += ti.Printf(SetABackground, bg) + } + return s + str + ti.Printf(ExitAttributeMode) +} + +// Goto returns a string suitable for addressing the cursor at the given +// row and column. The origin 0, 0 is in the upper left corner of the screen. +func (ti *Terminfo) Goto(row, col int) string { + return Printf(ti.Strings[CursorAddress], row, col) +} + +// Puts emits the string to the writer, but expands inline padding indications +// (of the form $<[delay]> where [delay] is msec) to a suitable number of +// padding characters (usually null bytes) based upon the supplied baud. At +// high baud rates, more padding characters will be inserted. +/*func (ti *Terminfo) Puts(w io.Writer, s string, lines, baud int) (int, error) { + var err error + for { + start := strings.Index(s, "$<") + if start == -1 { + // most strings don't need padding, which is good news! + return io.WriteString(w, s) + } + end := strings.Index(s, ">") + if end == -1 { + // unterminated... just emit bytes unadulterated. + return io.WriteString(w, "$<"+s) + } + var c int + c, err = io.WriteString(w, s[:start]) + if err != nil { + return n + c, err + } + n += c + s = s[start+2:] + val := s[:end] + s = s[end+1:] + var ms int + var dot, mandatory, asterisk bool + unit := 1000 + for _, ch := range val { + switch { + case ch >= '0' && ch <= '9': + ms = (ms * 10) + int(ch-'0') + if dot { + unit *= 10 + } + case ch == '.' && !dot: + dot = true + case ch == '*' && !asterisk: + ms *= lines + asterisk = true + case ch == '/': + mandatory = true + default: + break + } + } + z, pad := ((baud/8)/unit)*ms, ti.Strings[PadChar] + b := make([]byte, len(pad)*z) + for bp := copy(b, pad); bp < len(b); bp *= 2 { + copy(b[bp:], b[:bp]) + } + if (!ti.Bools[XonXoff] && baud > int(ti.Nums[PaddingBaudRate])) || mandatory { + c, err = w.Write(b) + if err != nil { + return n + c, err + } + n += c + } + } + return n, nil +}*/ diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/LICENSE b/src/vcom-0.2.5/vendor/golang.org/x/crypto/LICENSE new file mode 100644 index 0000000..2a7cf70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/PATENTS b/src/vcom-0.2.5/vendor/golang.org/x/crypto/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/block.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/block.go new file mode 100644 index 0000000..9d80f19 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/block.go @@ -0,0 +1,159 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blowfish + +// getNextWord returns the next big-endian uint32 value from the byte slice +// at the given position in a circular manner, updating the position. +func getNextWord(b []byte, pos *int) uint32 { + var w uint32 + j := *pos + for i := 0; i < 4; i++ { + w = w<<8 | uint32(b[j]) + j++ + if j >= len(b) { + j = 0 + } + } + *pos = j + return w +} + +// ExpandKey performs a key expansion on the given *Cipher. Specifically, it +// performs the Blowfish algorithm's key schedule which sets up the *Cipher's +// pi and substitution tables for calls to Encrypt. This is used, primarily, +// by the bcrypt package to reuse the Blowfish key schedule during its +// set up. It's unlikely that you need to use this directly. +func ExpandKey(key []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + // Using inlined getNextWord for performance. + var d uint32 + for k := 0; k < 4; k++ { + d = d<<8 | uint32(key[j]) + j++ + if j >= len(key) { + j = 0 + } + } + c.p[i] ^= d + } + + var l, r uint32 + for i := 0; i < 18; i += 2 { + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +// This is similar to ExpandKey, but folds the salt during the key +// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero +// salt passed in, reusing ExpandKey turns out to be a place of inefficiency +// and specializing it here is useful. +func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + c.p[i] ^= getNextWord(key, &j) + } + + j = 0 + var l, r uint32 + for i := 0; i < 18; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[0] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] + xr ^= c.p[17] + return xr, xl +} + +func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[17] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] + xr ^= c.p[0] + return xr, xl +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/cipher.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/cipher.go new file mode 100644 index 0000000..0898956 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/cipher.go @@ -0,0 +1,99 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. +// +// Blowfish is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package blowfish + +// The code is a port of Bruce Schneier's C implementation. +// See https://www.schneier.com/blowfish.html. + +import "strconv" + +// The Blowfish block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of Blowfish encryption using a particular key. +type Cipher struct { + p [18]uint32 + s0, s1, s2, s3 [256]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Blowfish key, from 1 to 56 bytes. +func NewCipher(key []byte) (*Cipher, error) { + var result Cipher + if k := len(key); k < 1 || k > 56 { + return nil, KeySizeError(k) + } + initCipher(&result) + ExpandKey(key, &result) + return &result, nil +} + +// NewSaltedCipher creates a returns a Cipher that folds a salt into its key +// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is +// sufficient and desirable. For bcrypt compatibility, the key can be over 56 +// bytes. +func NewSaltedCipher(key, salt []byte) (*Cipher, error) { + if len(salt) == 0 { + return NewCipher(key) + } + var result Cipher + if k := len(key); k < 1 { + return nil, KeySizeError(k) + } + initCipher(&result) + expandKeyWithSalt(key, salt, &result) + return &result, nil +} + +// BlockSize returns the Blowfish block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8-byte buffer src using the key k +// and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = encryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +// Decrypt decrypts the 8-byte buffer src using the key k +// and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = decryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +func initCipher(c *Cipher) { + copy(c.p[0:], p[0:]) + copy(c.s0[0:], s0[0:]) + copy(c.s1[0:], s1[0:]) + copy(c.s2[0:], s2[0:]) + copy(c.s3[0:], s3[0:]) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/const.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/const.go new file mode 100644 index 0000000..d040775 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/blowfish/const.go @@ -0,0 +1,199 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The startup permutation array and substitution boxes. +// They are the hexadecimal digits of PI; see: +// https://www.schneier.com/code/constants.txt. + +package blowfish + +var s0 = [256]uint32{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, +} + +var s1 = [256]uint32{ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, +} + +var s2 = [256]uint32{ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, +} + +var s3 = [256]uint32{ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var p = [18]uint32{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go new file mode 100644 index 0000000..661ea13 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +package chacha20 + +const bufSize = 256 + +//go:noescape +func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { + xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s new file mode 100644 index 0000000..769af38 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s @@ -0,0 +1,307 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +#include "textflag.h" + +#define NUM_ROUNDS 10 + +// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) +TEXT ·xorKeyStreamVX(SB), NOSPLIT, $0 + MOVD dst+0(FP), R1 + MOVD src+24(FP), R2 + MOVD src_len+32(FP), R3 + MOVD key+48(FP), R4 + MOVD nonce+56(FP), R6 + MOVD counter+64(FP), R7 + + MOVD $·constants(SB), R10 + MOVD $·incRotMatrix(SB), R11 + + MOVW (R7), R20 + + AND $~255, R3, R13 + ADD R2, R13, R12 // R12 for block end + AND $255, R3, R13 +loop: + MOVD $NUM_ROUNDS, R21 + VLD1 (R11), [V30.S4, V31.S4] + + // load constants + // VLD4R (R10), [V0.S4, V1.S4, V2.S4, V3.S4] + WORD $0x4D60E940 + + // load keys + // VLD4R 16(R4), [V4.S4, V5.S4, V6.S4, V7.S4] + WORD $0x4DFFE884 + // VLD4R 16(R4), [V8.S4, V9.S4, V10.S4, V11.S4] + WORD $0x4DFFE888 + SUB $32, R4 + + // load counter + nonce + // VLD1R (R7), [V12.S4] + WORD $0x4D40C8EC + + // VLD3R (R6), [V13.S4, V14.S4, V15.S4] + WORD $0x4D40E8CD + + // update counter + VADD V30.S4, V12.S4, V12.S4 + +chacha: + // V0..V3 += V4..V7 + // V12..V15 <<<= ((V12..V15 XOR V0..V3), 16) + VADD V0.S4, V4.S4, V0.S4 + VADD V1.S4, V5.S4, V1.S4 + VADD V2.S4, V6.S4, V2.S4 + VADD V3.S4, V7.S4, V3.S4 + VEOR V12.B16, V0.B16, V12.B16 + VEOR V13.B16, V1.B16, V13.B16 + VEOR V14.B16, V2.B16, V14.B16 + VEOR V15.B16, V3.B16, V15.B16 + VREV32 V12.H8, V12.H8 + VREV32 V13.H8, V13.H8 + VREV32 V14.H8, V14.H8 + VREV32 V15.H8, V15.H8 + // V8..V11 += V12..V15 + // V4..V7 <<<= ((V4..V7 XOR V8..V11), 12) + VADD V8.S4, V12.S4, V8.S4 + VADD V9.S4, V13.S4, V9.S4 + VADD V10.S4, V14.S4, V10.S4 + VADD V11.S4, V15.S4, V11.S4 + VEOR V8.B16, V4.B16, V16.B16 + VEOR V9.B16, V5.B16, V17.B16 + VEOR V10.B16, V6.B16, V18.B16 + VEOR V11.B16, V7.B16, V19.B16 + VSHL $12, V16.S4, V4.S4 + VSHL $12, V17.S4, V5.S4 + VSHL $12, V18.S4, V6.S4 + VSHL $12, V19.S4, V7.S4 + VSRI $20, V16.S4, V4.S4 + VSRI $20, V17.S4, V5.S4 + VSRI $20, V18.S4, V6.S4 + VSRI $20, V19.S4, V7.S4 + + // V0..V3 += V4..V7 + // V12..V15 <<<= ((V12..V15 XOR V0..V3), 8) + VADD V0.S4, V4.S4, V0.S4 + VADD V1.S4, V5.S4, V1.S4 + VADD V2.S4, V6.S4, V2.S4 + VADD V3.S4, V7.S4, V3.S4 + VEOR V12.B16, V0.B16, V12.B16 + VEOR V13.B16, V1.B16, V13.B16 + VEOR V14.B16, V2.B16, V14.B16 + VEOR V15.B16, V3.B16, V15.B16 + VTBL V31.B16, [V12.B16], V12.B16 + VTBL V31.B16, [V13.B16], V13.B16 + VTBL V31.B16, [V14.B16], V14.B16 + VTBL V31.B16, [V15.B16], V15.B16 + + // V8..V11 += V12..V15 + // V4..V7 <<<= ((V4..V7 XOR V8..V11), 7) + VADD V12.S4, V8.S4, V8.S4 + VADD V13.S4, V9.S4, V9.S4 + VADD V14.S4, V10.S4, V10.S4 + VADD V15.S4, V11.S4, V11.S4 + VEOR V8.B16, V4.B16, V16.B16 + VEOR V9.B16, V5.B16, V17.B16 + VEOR V10.B16, V6.B16, V18.B16 + VEOR V11.B16, V7.B16, V19.B16 + VSHL $7, V16.S4, V4.S4 + VSHL $7, V17.S4, V5.S4 + VSHL $7, V18.S4, V6.S4 + VSHL $7, V19.S4, V7.S4 + VSRI $25, V16.S4, V4.S4 + VSRI $25, V17.S4, V5.S4 + VSRI $25, V18.S4, V6.S4 + VSRI $25, V19.S4, V7.S4 + + // V0..V3 += V5..V7, V4 + // V15,V12-V14 <<<= ((V15,V12-V14 XOR V0..V3), 16) + VADD V0.S4, V5.S4, V0.S4 + VADD V1.S4, V6.S4, V1.S4 + VADD V2.S4, V7.S4, V2.S4 + VADD V3.S4, V4.S4, V3.S4 + VEOR V15.B16, V0.B16, V15.B16 + VEOR V12.B16, V1.B16, V12.B16 + VEOR V13.B16, V2.B16, V13.B16 + VEOR V14.B16, V3.B16, V14.B16 + VREV32 V12.H8, V12.H8 + VREV32 V13.H8, V13.H8 + VREV32 V14.H8, V14.H8 + VREV32 V15.H8, V15.H8 + + // V10 += V15; V5 <<<= ((V10 XOR V5), 12) + // ... + VADD V15.S4, V10.S4, V10.S4 + VADD V12.S4, V11.S4, V11.S4 + VADD V13.S4, V8.S4, V8.S4 + VADD V14.S4, V9.S4, V9.S4 + VEOR V10.B16, V5.B16, V16.B16 + VEOR V11.B16, V6.B16, V17.B16 + VEOR V8.B16, V7.B16, V18.B16 + VEOR V9.B16, V4.B16, V19.B16 + VSHL $12, V16.S4, V5.S4 + VSHL $12, V17.S4, V6.S4 + VSHL $12, V18.S4, V7.S4 + VSHL $12, V19.S4, V4.S4 + VSRI $20, V16.S4, V5.S4 + VSRI $20, V17.S4, V6.S4 + VSRI $20, V18.S4, V7.S4 + VSRI $20, V19.S4, V4.S4 + + // V0 += V5; V15 <<<= ((V0 XOR V15), 8) + // ... + VADD V5.S4, V0.S4, V0.S4 + VADD V6.S4, V1.S4, V1.S4 + VADD V7.S4, V2.S4, V2.S4 + VADD V4.S4, V3.S4, V3.S4 + VEOR V0.B16, V15.B16, V15.B16 + VEOR V1.B16, V12.B16, V12.B16 + VEOR V2.B16, V13.B16, V13.B16 + VEOR V3.B16, V14.B16, V14.B16 + VTBL V31.B16, [V12.B16], V12.B16 + VTBL V31.B16, [V13.B16], V13.B16 + VTBL V31.B16, [V14.B16], V14.B16 + VTBL V31.B16, [V15.B16], V15.B16 + + // V10 += V15; V5 <<<= ((V10 XOR V5), 7) + // ... + VADD V15.S4, V10.S4, V10.S4 + VADD V12.S4, V11.S4, V11.S4 + VADD V13.S4, V8.S4, V8.S4 + VADD V14.S4, V9.S4, V9.S4 + VEOR V10.B16, V5.B16, V16.B16 + VEOR V11.B16, V6.B16, V17.B16 + VEOR V8.B16, V7.B16, V18.B16 + VEOR V9.B16, V4.B16, V19.B16 + VSHL $7, V16.S4, V5.S4 + VSHL $7, V17.S4, V6.S4 + VSHL $7, V18.S4, V7.S4 + VSHL $7, V19.S4, V4.S4 + VSRI $25, V16.S4, V5.S4 + VSRI $25, V17.S4, V6.S4 + VSRI $25, V18.S4, V7.S4 + VSRI $25, V19.S4, V4.S4 + + SUB $1, R21 + CBNZ R21, chacha + + // VLD4R (R10), [V16.S4, V17.S4, V18.S4, V19.S4] + WORD $0x4D60E950 + + // VLD4R 16(R4), [V20.S4, V21.S4, V22.S4, V23.S4] + WORD $0x4DFFE894 + VADD V30.S4, V12.S4, V12.S4 + VADD V16.S4, V0.S4, V0.S4 + VADD V17.S4, V1.S4, V1.S4 + VADD V18.S4, V2.S4, V2.S4 + VADD V19.S4, V3.S4, V3.S4 + // VLD4R 16(R4), [V24.S4, V25.S4, V26.S4, V27.S4] + WORD $0x4DFFE898 + // restore R4 + SUB $32, R4 + + // load counter + nonce + // VLD1R (R7), [V28.S4] + WORD $0x4D40C8FC + // VLD3R (R6), [V29.S4, V30.S4, V31.S4] + WORD $0x4D40E8DD + + VADD V20.S4, V4.S4, V4.S4 + VADD V21.S4, V5.S4, V5.S4 + VADD V22.S4, V6.S4, V6.S4 + VADD V23.S4, V7.S4, V7.S4 + VADD V24.S4, V8.S4, V8.S4 + VADD V25.S4, V9.S4, V9.S4 + VADD V26.S4, V10.S4, V10.S4 + VADD V27.S4, V11.S4, V11.S4 + VADD V28.S4, V12.S4, V12.S4 + VADD V29.S4, V13.S4, V13.S4 + VADD V30.S4, V14.S4, V14.S4 + VADD V31.S4, V15.S4, V15.S4 + + VZIP1 V1.S4, V0.S4, V16.S4 + VZIP2 V1.S4, V0.S4, V17.S4 + VZIP1 V3.S4, V2.S4, V18.S4 + VZIP2 V3.S4, V2.S4, V19.S4 + VZIP1 V5.S4, V4.S4, V20.S4 + VZIP2 V5.S4, V4.S4, V21.S4 + VZIP1 V7.S4, V6.S4, V22.S4 + VZIP2 V7.S4, V6.S4, V23.S4 + VZIP1 V9.S4, V8.S4, V24.S4 + VZIP2 V9.S4, V8.S4, V25.S4 + VZIP1 V11.S4, V10.S4, V26.S4 + VZIP2 V11.S4, V10.S4, V27.S4 + VZIP1 V13.S4, V12.S4, V28.S4 + VZIP2 V13.S4, V12.S4, V29.S4 + VZIP1 V15.S4, V14.S4, V30.S4 + VZIP2 V15.S4, V14.S4, V31.S4 + VZIP1 V18.D2, V16.D2, V0.D2 + VZIP2 V18.D2, V16.D2, V4.D2 + VZIP1 V19.D2, V17.D2, V8.D2 + VZIP2 V19.D2, V17.D2, V12.D2 + VLD1.P 64(R2), [V16.B16, V17.B16, V18.B16, V19.B16] + + VZIP1 V22.D2, V20.D2, V1.D2 + VZIP2 V22.D2, V20.D2, V5.D2 + VZIP1 V23.D2, V21.D2, V9.D2 + VZIP2 V23.D2, V21.D2, V13.D2 + VLD1.P 64(R2), [V20.B16, V21.B16, V22.B16, V23.B16] + VZIP1 V26.D2, V24.D2, V2.D2 + VZIP2 V26.D2, V24.D2, V6.D2 + VZIP1 V27.D2, V25.D2, V10.D2 + VZIP2 V27.D2, V25.D2, V14.D2 + VLD1.P 64(R2), [V24.B16, V25.B16, V26.B16, V27.B16] + VZIP1 V30.D2, V28.D2, V3.D2 + VZIP2 V30.D2, V28.D2, V7.D2 + VZIP1 V31.D2, V29.D2, V11.D2 + VZIP2 V31.D2, V29.D2, V15.D2 + VLD1.P 64(R2), [V28.B16, V29.B16, V30.B16, V31.B16] + VEOR V0.B16, V16.B16, V16.B16 + VEOR V1.B16, V17.B16, V17.B16 + VEOR V2.B16, V18.B16, V18.B16 + VEOR V3.B16, V19.B16, V19.B16 + VST1.P [V16.B16, V17.B16, V18.B16, V19.B16], 64(R1) + VEOR V4.B16, V20.B16, V20.B16 + VEOR V5.B16, V21.B16, V21.B16 + VEOR V6.B16, V22.B16, V22.B16 + VEOR V7.B16, V23.B16, V23.B16 + VST1.P [V20.B16, V21.B16, V22.B16, V23.B16], 64(R1) + VEOR V8.B16, V24.B16, V24.B16 + VEOR V9.B16, V25.B16, V25.B16 + VEOR V10.B16, V26.B16, V26.B16 + VEOR V11.B16, V27.B16, V27.B16 + VST1.P [V24.B16, V25.B16, V26.B16, V27.B16], 64(R1) + VEOR V12.B16, V28.B16, V28.B16 + VEOR V13.B16, V29.B16, V29.B16 + VEOR V14.B16, V30.B16, V30.B16 + VEOR V15.B16, V31.B16, V31.B16 + VST1.P [V28.B16, V29.B16, V30.B16, V31.B16], 64(R1) + + ADD $4, R20 + MOVW R20, (R7) // update counter + + CMP R2, R12 + BGT loop + + RET + + +DATA ·constants+0x00(SB)/4, $0x61707865 +DATA ·constants+0x04(SB)/4, $0x3320646e +DATA ·constants+0x08(SB)/4, $0x79622d32 +DATA ·constants+0x0c(SB)/4, $0x6b206574 +GLOBL ·constants(SB), NOPTR|RODATA, $32 + +DATA ·incRotMatrix+0x00(SB)/4, $0x00000000 +DATA ·incRotMatrix+0x04(SB)/4, $0x00000001 +DATA ·incRotMatrix+0x08(SB)/4, $0x00000002 +DATA ·incRotMatrix+0x0c(SB)/4, $0x00000003 +DATA ·incRotMatrix+0x10(SB)/4, $0x02010003 +DATA ·incRotMatrix+0x14(SB)/4, $0x06050407 +DATA ·incRotMatrix+0x18(SB)/4, $0x0A09080B +DATA ·incRotMatrix+0x1c(SB)/4, $0x0E0D0C0F +GLOBL ·incRotMatrix(SB), NOPTR|RODATA, $32 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_generic.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_generic.go new file mode 100644 index 0000000..93eb5ae --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_generic.go @@ -0,0 +1,398 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package chacha20 implements the ChaCha20 and XChaCha20 encryption algorithms +// as specified in RFC 8439 and draft-irtf-cfrg-xchacha-01. +package chacha20 + +import ( + "crypto/cipher" + "encoding/binary" + "errors" + "math/bits" + + "golang.org/x/crypto/internal/alias" +) + +const ( + // KeySize is the size of the key used by this cipher, in bytes. + KeySize = 32 + + // NonceSize is the size of the nonce used with the standard variant of this + // cipher, in bytes. + // + // Note that this is too short to be safely generated at random if the same + // key is reused more than 2³² times. + NonceSize = 12 + + // NonceSizeX is the size of the nonce used with the XChaCha20 variant of + // this cipher, in bytes. + NonceSizeX = 24 +) + +// Cipher is a stateful instance of ChaCha20 or XChaCha20 using a particular key +// and nonce. A *Cipher implements the cipher.Stream interface. +type Cipher struct { + // The ChaCha20 state is 16 words: 4 constant, 8 of key, 1 of counter + // (incremented after each block), and 3 of nonce. + key [8]uint32 + counter uint32 + nonce [3]uint32 + + // The last len bytes of buf are leftover key stream bytes from the previous + // XORKeyStream invocation. The size of buf depends on how many blocks are + // computed at a time by xorKeyStreamBlocks. + buf [bufSize]byte + len int + + // overflow is set when the counter overflowed, no more blocks can be + // generated, and the next XORKeyStream call should panic. + overflow bool + + // The counter-independent results of the first round are cached after they + // are computed the first time. + precompDone bool + p1, p5, p9, p13 uint32 + p2, p6, p10, p14 uint32 + p3, p7, p11, p15 uint32 +} + +var _ cipher.Stream = (*Cipher)(nil) + +// NewUnauthenticatedCipher creates a new ChaCha20 stream cipher with the given +// 32 bytes key and a 12 or 24 bytes nonce. If a nonce of 24 bytes is provided, +// the XChaCha20 construction will be used. It returns an error if key or nonce +// have any other length. +// +// Note that ChaCha20, like all stream ciphers, is not authenticated and allows +// attackers to silently tamper with the plaintext. For this reason, it is more +// appropriate as a building block than as a standalone encryption mechanism. +// Instead, consider using package golang.org/x/crypto/chacha20poly1305. +func NewUnauthenticatedCipher(key, nonce []byte) (*Cipher, error) { + // This function is split into a wrapper so that the Cipher allocation will + // be inlined, and depending on how the caller uses the return value, won't + // escape to the heap. + c := &Cipher{} + return newUnauthenticatedCipher(c, key, nonce) +} + +func newUnauthenticatedCipher(c *Cipher, key, nonce []byte) (*Cipher, error) { + if len(key) != KeySize { + return nil, errors.New("chacha20: wrong key size") + } + if len(nonce) == NonceSizeX { + // XChaCha20 uses the ChaCha20 core to mix 16 bytes of the nonce into a + // derived key, allowing it to operate on a nonce of 24 bytes. See + // draft-irtf-cfrg-xchacha-01, Section 2.3. + key, _ = HChaCha20(key, nonce[0:16]) + cNonce := make([]byte, NonceSize) + copy(cNonce[4:12], nonce[16:24]) + nonce = cNonce + } else if len(nonce) != NonceSize { + return nil, errors.New("chacha20: wrong nonce size") + } + + key, nonce = key[:KeySize], nonce[:NonceSize] // bounds check elimination hint + c.key = [8]uint32{ + binary.LittleEndian.Uint32(key[0:4]), + binary.LittleEndian.Uint32(key[4:8]), + binary.LittleEndian.Uint32(key[8:12]), + binary.LittleEndian.Uint32(key[12:16]), + binary.LittleEndian.Uint32(key[16:20]), + binary.LittleEndian.Uint32(key[20:24]), + binary.LittleEndian.Uint32(key[24:28]), + binary.LittleEndian.Uint32(key[28:32]), + } + c.nonce = [3]uint32{ + binary.LittleEndian.Uint32(nonce[0:4]), + binary.LittleEndian.Uint32(nonce[4:8]), + binary.LittleEndian.Uint32(nonce[8:12]), + } + return c, nil +} + +// The constant first 4 words of the ChaCha20 state. +const ( + j0 uint32 = 0x61707865 // expa + j1 uint32 = 0x3320646e // nd 3 + j2 uint32 = 0x79622d32 // 2-by + j3 uint32 = 0x6b206574 // te k +) + +const blockSize = 64 + +// quarterRound is the core of ChaCha20. It shuffles the bits of 4 state words. +// It's executed 4 times for each of the 20 ChaCha20 rounds, operating on all 16 +// words each round, in columnar or diagonal groups of 4 at a time. +func quarterRound(a, b, c, d uint32) (uint32, uint32, uint32, uint32) { + a += b + d ^= a + d = bits.RotateLeft32(d, 16) + c += d + b ^= c + b = bits.RotateLeft32(b, 12) + a += b + d ^= a + d = bits.RotateLeft32(d, 8) + c += d + b ^= c + b = bits.RotateLeft32(b, 7) + return a, b, c, d +} + +// SetCounter sets the Cipher counter. The next invocation of XORKeyStream will +// behave as if (64 * counter) bytes had been encrypted so far. +// +// To prevent accidental counter reuse, SetCounter panics if counter is less +// than the current value. +// +// Note that the execution time of XORKeyStream is not independent of the +// counter value. +func (s *Cipher) SetCounter(counter uint32) { + // Internally, s may buffer multiple blocks, which complicates this + // implementation slightly. When checking whether the counter has rolled + // back, we must use both s.counter and s.len to determine how many blocks + // we have already output. + outputCounter := s.counter - uint32(s.len)/blockSize + if s.overflow || counter < outputCounter { + panic("chacha20: SetCounter attempted to rollback counter") + } + + // In the general case, we set the new counter value and reset s.len to 0, + // causing the next call to XORKeyStream to refill the buffer. However, if + // we're advancing within the existing buffer, we can save work by simply + // setting s.len. + if counter < s.counter { + s.len = int(s.counter-counter) * blockSize + } else { + s.counter = counter + s.len = 0 + } +} + +// XORKeyStream XORs each byte in the given slice with a byte from the +// cipher's key stream. Dst and src must overlap entirely or not at all. +// +// If len(dst) < len(src), XORKeyStream will panic. It is acceptable +// to pass a dst bigger than src, and in that case, XORKeyStream will +// only update dst[:len(src)] and will not touch the rest of dst. +// +// Multiple calls to XORKeyStream behave as if the concatenation of +// the src buffers was passed in a single run. That is, Cipher +// maintains state and does not reset at each XORKeyStream call. +func (s *Cipher) XORKeyStream(dst, src []byte) { + if len(src) == 0 { + return + } + if len(dst) < len(src) { + panic("chacha20: output smaller than input") + } + dst = dst[:len(src)] + if alias.InexactOverlap(dst, src) { + panic("chacha20: invalid buffer overlap") + } + + // First, drain any remaining key stream from a previous XORKeyStream. + if s.len != 0 { + keyStream := s.buf[bufSize-s.len:] + if len(src) < len(keyStream) { + keyStream = keyStream[:len(src)] + } + _ = src[len(keyStream)-1] // bounds check elimination hint + for i, b := range keyStream { + dst[i] = src[i] ^ b + } + s.len -= len(keyStream) + dst, src = dst[len(keyStream):], src[len(keyStream):] + } + if len(src) == 0 { + return + } + + // If we'd need to let the counter overflow and keep generating output, + // panic immediately. If instead we'd only reach the last block, remember + // not to generate any more output after the buffer is drained. + numBlocks := (uint64(len(src)) + blockSize - 1) / blockSize + if s.overflow || uint64(s.counter)+numBlocks > 1<<32 { + panic("chacha20: counter overflow") + } else if uint64(s.counter)+numBlocks == 1<<32 { + s.overflow = true + } + + // xorKeyStreamBlocks implementations expect input lengths that are a + // multiple of bufSize. Platform-specific ones process multiple blocks at a + // time, so have bufSizes that are a multiple of blockSize. + + full := len(src) - len(src)%bufSize + if full > 0 { + s.xorKeyStreamBlocks(dst[:full], src[:full]) + } + dst, src = dst[full:], src[full:] + + // If using a multi-block xorKeyStreamBlocks would overflow, use the generic + // one that does one block at a time. + const blocksPerBuf = bufSize / blockSize + if uint64(s.counter)+blocksPerBuf > 1<<32 { + s.buf = [bufSize]byte{} + numBlocks := (len(src) + blockSize - 1) / blockSize + buf := s.buf[bufSize-numBlocks*blockSize:] + copy(buf, src) + s.xorKeyStreamBlocksGeneric(buf, buf) + s.len = len(buf) - copy(dst, buf) + return + } + + // If we have a partial (multi-)block, pad it for xorKeyStreamBlocks, and + // keep the leftover keystream for the next XORKeyStream invocation. + if len(src) > 0 { + s.buf = [bufSize]byte{} + copy(s.buf[:], src) + s.xorKeyStreamBlocks(s.buf[:], s.buf[:]) + s.len = bufSize - copy(dst, s.buf[:]) + } +} + +func (s *Cipher) xorKeyStreamBlocksGeneric(dst, src []byte) { + if len(dst) != len(src) || len(dst)%blockSize != 0 { + panic("chacha20: internal error: wrong dst and/or src length") + } + + // To generate each block of key stream, the initial cipher state + // (represented below) is passed through 20 rounds of shuffling, + // alternatively applying quarterRounds by columns (like 1, 5, 9, 13) + // or by diagonals (like 1, 6, 11, 12). + // + // 0:cccccccc 1:cccccccc 2:cccccccc 3:cccccccc + // 4:kkkkkkkk 5:kkkkkkkk 6:kkkkkkkk 7:kkkkkkkk + // 8:kkkkkkkk 9:kkkkkkkk 10:kkkkkkkk 11:kkkkkkkk + // 12:bbbbbbbb 13:nnnnnnnn 14:nnnnnnnn 15:nnnnnnnn + // + // c=constant k=key b=blockcount n=nonce + var ( + c0, c1, c2, c3 = j0, j1, j2, j3 + c4, c5, c6, c7 = s.key[0], s.key[1], s.key[2], s.key[3] + c8, c9, c10, c11 = s.key[4], s.key[5], s.key[6], s.key[7] + _, c13, c14, c15 = s.counter, s.nonce[0], s.nonce[1], s.nonce[2] + ) + + // Three quarters of the first round don't depend on the counter, so we can + // calculate them here, and reuse them for multiple blocks in the loop, and + // for future XORKeyStream invocations. + if !s.precompDone { + s.p1, s.p5, s.p9, s.p13 = quarterRound(c1, c5, c9, c13) + s.p2, s.p6, s.p10, s.p14 = quarterRound(c2, c6, c10, c14) + s.p3, s.p7, s.p11, s.p15 = quarterRound(c3, c7, c11, c15) + s.precompDone = true + } + + // A condition of len(src) > 0 would be sufficient, but this also + // acts as a bounds check elimination hint. + for len(src) >= 64 && len(dst) >= 64 { + // The remainder of the first column round. + fcr0, fcr4, fcr8, fcr12 := quarterRound(c0, c4, c8, s.counter) + + // The second diagonal round. + x0, x5, x10, x15 := quarterRound(fcr0, s.p5, s.p10, s.p15) + x1, x6, x11, x12 := quarterRound(s.p1, s.p6, s.p11, fcr12) + x2, x7, x8, x13 := quarterRound(s.p2, s.p7, fcr8, s.p13) + x3, x4, x9, x14 := quarterRound(s.p3, fcr4, s.p9, s.p14) + + // The remaining 18 rounds. + for i := 0; i < 9; i++ { + // Column round. + x0, x4, x8, x12 = quarterRound(x0, x4, x8, x12) + x1, x5, x9, x13 = quarterRound(x1, x5, x9, x13) + x2, x6, x10, x14 = quarterRound(x2, x6, x10, x14) + x3, x7, x11, x15 = quarterRound(x3, x7, x11, x15) + + // Diagonal round. + x0, x5, x10, x15 = quarterRound(x0, x5, x10, x15) + x1, x6, x11, x12 = quarterRound(x1, x6, x11, x12) + x2, x7, x8, x13 = quarterRound(x2, x7, x8, x13) + x3, x4, x9, x14 = quarterRound(x3, x4, x9, x14) + } + + // Add back the initial state to generate the key stream, then + // XOR the key stream with the source and write out the result. + addXor(dst[0:4], src[0:4], x0, c0) + addXor(dst[4:8], src[4:8], x1, c1) + addXor(dst[8:12], src[8:12], x2, c2) + addXor(dst[12:16], src[12:16], x3, c3) + addXor(dst[16:20], src[16:20], x4, c4) + addXor(dst[20:24], src[20:24], x5, c5) + addXor(dst[24:28], src[24:28], x6, c6) + addXor(dst[28:32], src[28:32], x7, c7) + addXor(dst[32:36], src[32:36], x8, c8) + addXor(dst[36:40], src[36:40], x9, c9) + addXor(dst[40:44], src[40:44], x10, c10) + addXor(dst[44:48], src[44:48], x11, c11) + addXor(dst[48:52], src[48:52], x12, s.counter) + addXor(dst[52:56], src[52:56], x13, c13) + addXor(dst[56:60], src[56:60], x14, c14) + addXor(dst[60:64], src[60:64], x15, c15) + + s.counter += 1 + + src, dst = src[blockSize:], dst[blockSize:] + } +} + +// HChaCha20 uses the ChaCha20 core to generate a derived key from a 32 bytes +// key and a 16 bytes nonce. It returns an error if key or nonce have any other +// length. It is used as part of the XChaCha20 construction. +func HChaCha20(key, nonce []byte) ([]byte, error) { + // This function is split into a wrapper so that the slice allocation will + // be inlined, and depending on how the caller uses the return value, won't + // escape to the heap. + out := make([]byte, 32) + return hChaCha20(out, key, nonce) +} + +func hChaCha20(out, key, nonce []byte) ([]byte, error) { + if len(key) != KeySize { + return nil, errors.New("chacha20: wrong HChaCha20 key size") + } + if len(nonce) != 16 { + return nil, errors.New("chacha20: wrong HChaCha20 nonce size") + } + + x0, x1, x2, x3 := j0, j1, j2, j3 + x4 := binary.LittleEndian.Uint32(key[0:4]) + x5 := binary.LittleEndian.Uint32(key[4:8]) + x6 := binary.LittleEndian.Uint32(key[8:12]) + x7 := binary.LittleEndian.Uint32(key[12:16]) + x8 := binary.LittleEndian.Uint32(key[16:20]) + x9 := binary.LittleEndian.Uint32(key[20:24]) + x10 := binary.LittleEndian.Uint32(key[24:28]) + x11 := binary.LittleEndian.Uint32(key[28:32]) + x12 := binary.LittleEndian.Uint32(nonce[0:4]) + x13 := binary.LittleEndian.Uint32(nonce[4:8]) + x14 := binary.LittleEndian.Uint32(nonce[8:12]) + x15 := binary.LittleEndian.Uint32(nonce[12:16]) + + for i := 0; i < 10; i++ { + // Diagonal round. + x0, x4, x8, x12 = quarterRound(x0, x4, x8, x12) + x1, x5, x9, x13 = quarterRound(x1, x5, x9, x13) + x2, x6, x10, x14 = quarterRound(x2, x6, x10, x14) + x3, x7, x11, x15 = quarterRound(x3, x7, x11, x15) + + // Column round. + x0, x5, x10, x15 = quarterRound(x0, x5, x10, x15) + x1, x6, x11, x12 = quarterRound(x1, x6, x11, x12) + x2, x7, x8, x13 = quarterRound(x2, x7, x8, x13) + x3, x4, x9, x14 = quarterRound(x3, x4, x9, x14) + } + + _ = out[31] // bounds check elimination hint + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x12) + binary.LittleEndian.PutUint32(out[20:24], x13) + binary.LittleEndian.PutUint32(out[24:28], x14) + binary.LittleEndian.PutUint32(out[28:32], x15) + return out, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go new file mode 100644 index 0000000..c709b72 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego + +package chacha20 + +const bufSize = blockSize + +func (s *Cipher) xorKeyStreamBlocks(dst, src []byte) { + s.xorKeyStreamBlocksGeneric(dst, src) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go new file mode 100644 index 0000000..bd183d9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego && (ppc64 || ppc64le) + +package chacha20 + +const bufSize = 256 + +//go:noescape +func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { + chaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s new file mode 100644 index 0000000..a660b41 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s @@ -0,0 +1,501 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Based on CRYPTOGAMS code with the following comment: +// # ==================================================================== +// # Written by Andy Polyakov for the OpenSSL +// # project. The module is, however, dual licensed under OpenSSL and +// # CRYPTOGAMS licenses depending on where you obtain it. For further +// # details see http://www.openssl.org/~appro/cryptogams/. +// # ==================================================================== + +// Code for the perl script that generates the ppc64 assembler +// can be found in the cryptogams repository at the link below. It is based on +// the original from openssl. + +// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91 + +// The differences in this and the original implementation are +// due to the calling conventions and initialization of constants. + +//go:build gc && !purego && (ppc64 || ppc64le) + +#include "textflag.h" + +#define OUT R3 +#define INP R4 +#define LEN R5 +#define KEY R6 +#define CNT R7 +#define TMP R15 + +#define CONSTBASE R16 +#define BLOCKS R17 + +// for VPERMXOR +#define MASK R18 + +DATA consts<>+0x00(SB)/4, $0x61707865 +DATA consts<>+0x04(SB)/4, $0x3320646e +DATA consts<>+0x08(SB)/4, $0x79622d32 +DATA consts<>+0x0c(SB)/4, $0x6b206574 +DATA consts<>+0x10(SB)/4, $0x00000001 +DATA consts<>+0x14(SB)/4, $0x00000000 +DATA consts<>+0x18(SB)/4, $0x00000000 +DATA consts<>+0x1c(SB)/4, $0x00000000 +DATA consts<>+0x20(SB)/4, $0x00000004 +DATA consts<>+0x24(SB)/4, $0x00000000 +DATA consts<>+0x28(SB)/4, $0x00000000 +DATA consts<>+0x2c(SB)/4, $0x00000000 +DATA consts<>+0x30(SB)/4, $0x0e0f0c0d +DATA consts<>+0x34(SB)/4, $0x0a0b0809 +DATA consts<>+0x38(SB)/4, $0x06070405 +DATA consts<>+0x3c(SB)/4, $0x02030001 +DATA consts<>+0x40(SB)/4, $0x0d0e0f0c +DATA consts<>+0x44(SB)/4, $0x090a0b08 +DATA consts<>+0x48(SB)/4, $0x05060704 +DATA consts<>+0x4c(SB)/4, $0x01020300 +DATA consts<>+0x50(SB)/4, $0x61707865 +DATA consts<>+0x54(SB)/4, $0x61707865 +DATA consts<>+0x58(SB)/4, $0x61707865 +DATA consts<>+0x5c(SB)/4, $0x61707865 +DATA consts<>+0x60(SB)/4, $0x3320646e +DATA consts<>+0x64(SB)/4, $0x3320646e +DATA consts<>+0x68(SB)/4, $0x3320646e +DATA consts<>+0x6c(SB)/4, $0x3320646e +DATA consts<>+0x70(SB)/4, $0x79622d32 +DATA consts<>+0x74(SB)/4, $0x79622d32 +DATA consts<>+0x78(SB)/4, $0x79622d32 +DATA consts<>+0x7c(SB)/4, $0x79622d32 +DATA consts<>+0x80(SB)/4, $0x6b206574 +DATA consts<>+0x84(SB)/4, $0x6b206574 +DATA consts<>+0x88(SB)/4, $0x6b206574 +DATA consts<>+0x8c(SB)/4, $0x6b206574 +DATA consts<>+0x90(SB)/4, $0x00000000 +DATA consts<>+0x94(SB)/4, $0x00000001 +DATA consts<>+0x98(SB)/4, $0x00000002 +DATA consts<>+0x9c(SB)/4, $0x00000003 +DATA consts<>+0xa0(SB)/4, $0x11223300 +DATA consts<>+0xa4(SB)/4, $0x55667744 +DATA consts<>+0xa8(SB)/4, $0x99aabb88 +DATA consts<>+0xac(SB)/4, $0xddeeffcc +DATA consts<>+0xb0(SB)/4, $0x22330011 +DATA consts<>+0xb4(SB)/4, $0x66774455 +DATA consts<>+0xb8(SB)/4, $0xaabb8899 +DATA consts<>+0xbc(SB)/4, $0xeeffccdd +GLOBL consts<>(SB), RODATA, $0xc0 + +#ifdef GOARCH_ppc64 +#define BE_XXBRW_INIT() \ + LVSL (R0)(R0), V24 \ + VSPLTISB $3, V25 \ + VXOR V24, V25, V24 \ + +#define BE_XXBRW(vr) VPERM vr, vr, V24, vr +#else +#define BE_XXBRW_INIT() +#define BE_XXBRW(vr) +#endif + +//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) +TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40 + MOVD out+0(FP), OUT + MOVD inp+8(FP), INP + MOVD len+16(FP), LEN + MOVD key+24(FP), KEY + MOVD counter+32(FP), CNT + + // Addressing for constants + MOVD $consts<>+0x00(SB), CONSTBASE + MOVD $16, R8 + MOVD $32, R9 + MOVD $48, R10 + MOVD $64, R11 + SRD $6, LEN, BLOCKS + // for VPERMXOR + MOVD $consts<>+0xa0(SB), MASK + MOVD $16, R20 + // V16 + LXVW4X (CONSTBASE)(R0), VS48 + ADD $80,CONSTBASE + + // Load key into V17,V18 + LXVW4X (KEY)(R0), VS49 + LXVW4X (KEY)(R8), VS50 + + // Load CNT, NONCE into V19 + LXVW4X (CNT)(R0), VS51 + + // Clear V27 + VXOR V27, V27, V27 + + BE_XXBRW_INIT() + + // V28 + LXVW4X (CONSTBASE)(R11), VS60 + + // Load mask constants for VPERMXOR + LXVW4X (MASK)(R0), V20 + LXVW4X (MASK)(R20), V21 + + // splat slot from V19 -> V26 + VSPLTW $0, V19, V26 + + VSLDOI $4, V19, V27, V19 + VSLDOI $12, V27, V19, V19 + + VADDUWM V26, V28, V26 + + MOVD $10, R14 + MOVD R14, CTR + PCALIGN $16 +loop_outer_vsx: + // V0, V1, V2, V3 + LXVW4X (R0)(CONSTBASE), VS32 + LXVW4X (R8)(CONSTBASE), VS33 + LXVW4X (R9)(CONSTBASE), VS34 + LXVW4X (R10)(CONSTBASE), VS35 + + // splat values from V17, V18 into V4-V11 + VSPLTW $0, V17, V4 + VSPLTW $1, V17, V5 + VSPLTW $2, V17, V6 + VSPLTW $3, V17, V7 + VSPLTW $0, V18, V8 + VSPLTW $1, V18, V9 + VSPLTW $2, V18, V10 + VSPLTW $3, V18, V11 + + // VOR + VOR V26, V26, V12 + + // splat values from V19 -> V13, V14, V15 + VSPLTW $1, V19, V13 + VSPLTW $2, V19, V14 + VSPLTW $3, V19, V15 + + // splat const values + VSPLTISW $-16, V27 + VSPLTISW $12, V28 + VSPLTISW $8, V29 + VSPLTISW $7, V30 + PCALIGN $16 +loop_vsx: + VADDUWM V0, V4, V0 + VADDUWM V1, V5, V1 + VADDUWM V2, V6, V2 + VADDUWM V3, V7, V3 + + VPERMXOR V12, V0, V21, V12 + VPERMXOR V13, V1, V21, V13 + VPERMXOR V14, V2, V21, V14 + VPERMXOR V15, V3, V21, V15 + + VADDUWM V8, V12, V8 + VADDUWM V9, V13, V9 + VADDUWM V10, V14, V10 + VADDUWM V11, V15, V11 + + VXOR V4, V8, V4 + VXOR V5, V9, V5 + VXOR V6, V10, V6 + VXOR V7, V11, V7 + + VRLW V4, V28, V4 + VRLW V5, V28, V5 + VRLW V6, V28, V6 + VRLW V7, V28, V7 + + VADDUWM V0, V4, V0 + VADDUWM V1, V5, V1 + VADDUWM V2, V6, V2 + VADDUWM V3, V7, V3 + + VPERMXOR V12, V0, V20, V12 + VPERMXOR V13, V1, V20, V13 + VPERMXOR V14, V2, V20, V14 + VPERMXOR V15, V3, V20, V15 + + VADDUWM V8, V12, V8 + VADDUWM V9, V13, V9 + VADDUWM V10, V14, V10 + VADDUWM V11, V15, V11 + + VXOR V4, V8, V4 + VXOR V5, V9, V5 + VXOR V6, V10, V6 + VXOR V7, V11, V7 + + VRLW V4, V30, V4 + VRLW V5, V30, V5 + VRLW V6, V30, V6 + VRLW V7, V30, V7 + + VADDUWM V0, V5, V0 + VADDUWM V1, V6, V1 + VADDUWM V2, V7, V2 + VADDUWM V3, V4, V3 + + VPERMXOR V15, V0, V21, V15 + VPERMXOR V12, V1, V21, V12 + VPERMXOR V13, V2, V21, V13 + VPERMXOR V14, V3, V21, V14 + + VADDUWM V10, V15, V10 + VADDUWM V11, V12, V11 + VADDUWM V8, V13, V8 + VADDUWM V9, V14, V9 + + VXOR V5, V10, V5 + VXOR V6, V11, V6 + VXOR V7, V8, V7 + VXOR V4, V9, V4 + + VRLW V5, V28, V5 + VRLW V6, V28, V6 + VRLW V7, V28, V7 + VRLW V4, V28, V4 + + VADDUWM V0, V5, V0 + VADDUWM V1, V6, V1 + VADDUWM V2, V7, V2 + VADDUWM V3, V4, V3 + + VPERMXOR V15, V0, V20, V15 + VPERMXOR V12, V1, V20, V12 + VPERMXOR V13, V2, V20, V13 + VPERMXOR V14, V3, V20, V14 + + VADDUWM V10, V15, V10 + VADDUWM V11, V12, V11 + VADDUWM V8, V13, V8 + VADDUWM V9, V14, V9 + + VXOR V5, V10, V5 + VXOR V6, V11, V6 + VXOR V7, V8, V7 + VXOR V4, V9, V4 + + VRLW V5, V30, V5 + VRLW V6, V30, V6 + VRLW V7, V30, V7 + VRLW V4, V30, V4 + BDNZ loop_vsx + + VADDUWM V12, V26, V12 + + VMRGEW V0, V1, V27 + VMRGEW V2, V3, V28 + + VMRGOW V0, V1, V0 + VMRGOW V2, V3, V2 + + VMRGEW V4, V5, V29 + VMRGEW V6, V7, V30 + + XXPERMDI VS32, VS34, $0, VS33 + XXPERMDI VS32, VS34, $3, VS35 + XXPERMDI VS59, VS60, $0, VS32 + XXPERMDI VS59, VS60, $3, VS34 + + VMRGOW V4, V5, V4 + VMRGOW V6, V7, V6 + + VMRGEW V8, V9, V27 + VMRGEW V10, V11, V28 + + XXPERMDI VS36, VS38, $0, VS37 + XXPERMDI VS36, VS38, $3, VS39 + XXPERMDI VS61, VS62, $0, VS36 + XXPERMDI VS61, VS62, $3, VS38 + + VMRGOW V8, V9, V8 + VMRGOW V10, V11, V10 + + VMRGEW V12, V13, V29 + VMRGEW V14, V15, V30 + + XXPERMDI VS40, VS42, $0, VS41 + XXPERMDI VS40, VS42, $3, VS43 + XXPERMDI VS59, VS60, $0, VS40 + XXPERMDI VS59, VS60, $3, VS42 + + VMRGOW V12, V13, V12 + VMRGOW V14, V15, V14 + + VSPLTISW $4, V27 + VADDUWM V26, V27, V26 + + XXPERMDI VS44, VS46, $0, VS45 + XXPERMDI VS44, VS46, $3, VS47 + XXPERMDI VS61, VS62, $0, VS44 + XXPERMDI VS61, VS62, $3, VS46 + + VADDUWM V0, V16, V0 + VADDUWM V4, V17, V4 + VADDUWM V8, V18, V8 + VADDUWM V12, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + // Bottom of loop + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V1, V16, V0 + VADDUWM V5, V17, V4 + VADDUWM V9, V18, V8 + VADDUWM V13, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(V10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V2, V16, V0 + VADDUWM V6, V17, V4 + VADDUWM V10, V18, V8 + VADDUWM V14, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + BEQ done_vsx + + VADDUWM V3, V16, V0 + VADDUWM V7, V17, V4 + VADDUWM V11, V18, V8 + VADDUWM V15, V19, V12 + + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + + CMPU LEN, $64 + BLT tail_vsx + + LXVW4X (INP)(R0), VS59 + LXVW4X (INP)(R8), VS60 + LXVW4X (INP)(R9), VS61 + LXVW4X (INP)(R10), VS62 + + VXOR V27, V0, V27 + VXOR V28, V4, V28 + VXOR V29, V8, V29 + VXOR V30, V12, V30 + + STXVW4X VS59, (OUT)(R0) + STXVW4X VS60, (OUT)(R8) + ADD $64, INP + STXVW4X VS61, (OUT)(R9) + ADD $-64, LEN + STXVW4X VS62, (OUT)(R10) + ADD $64, OUT + + MOVD $10, R14 + MOVD R14, CTR + BNE loop_outer_vsx + +done_vsx: + // Increment counter by number of 64 byte blocks + MOVWZ (CNT), R14 + ADD BLOCKS, R14 + MOVWZ R14, (CNT) + RET + +tail_vsx: + ADD $32, R1, R11 + MOVD LEN, CTR + + // Save values on stack to copy from + STXVW4X VS32, (R11)(R0) + STXVW4X VS36, (R11)(R8) + STXVW4X VS40, (R11)(R9) + STXVW4X VS44, (R11)(R10) + ADD $-1, R11, R12 + ADD $-1, INP + ADD $-1, OUT + PCALIGN $16 +looptail_vsx: + // Copying the result to OUT + // in bytes. + MOVBZU 1(R12), KEY + MOVBZU 1(INP), TMP + XOR KEY, TMP, KEY + MOVBU KEY, 1(OUT) + BDNZ looptail_vsx + + // Clear the stack values + STXVW4X VS48, (R11)(R0) + STXVW4X VS48, (R11)(R8) + STXVW4X VS48, (R11)(R9) + STXVW4X VS48, (R11)(R10) + BR done_vsx diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go new file mode 100644 index 0000000..683ccfd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go @@ -0,0 +1,27 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +package chacha20 + +import "golang.org/x/sys/cpu" + +var haveAsm = cpu.S390X.HasVX + +const bufSize = 256 + +// xorKeyStreamVX is an assembly implementation of XORKeyStream. It must only +// be called when the vector facility is available. Implementation in asm_s390x.s. +// +//go:noescape +func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamBlocks(dst, src []byte) { + if cpu.S390X.HasVX { + xorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter) + } else { + c.xorKeyStreamBlocksGeneric(dst, src) + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s new file mode 100644 index 0000000..1eda91a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s @@ -0,0 +1,224 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +#include "go_asm.h" +#include "textflag.h" + +// This is an implementation of the ChaCha20 encryption algorithm as +// specified in RFC 7539. It uses vector instructions to compute +// 4 keystream blocks in parallel (256 bytes) which are then XORed +// with the bytes in the input slice. + +GLOBL ·constants<>(SB), RODATA|NOPTR, $32 +// BSWAP: swap bytes in each 4-byte element +DATA ·constants<>+0x00(SB)/4, $0x03020100 +DATA ·constants<>+0x04(SB)/4, $0x07060504 +DATA ·constants<>+0x08(SB)/4, $0x0b0a0908 +DATA ·constants<>+0x0c(SB)/4, $0x0f0e0d0c +// J0: [j0, j1, j2, j3] +DATA ·constants<>+0x10(SB)/4, $0x61707865 +DATA ·constants<>+0x14(SB)/4, $0x3320646e +DATA ·constants<>+0x18(SB)/4, $0x79622d32 +DATA ·constants<>+0x1c(SB)/4, $0x6b206574 + +#define BSWAP V5 +#define J0 V6 +#define KEY0 V7 +#define KEY1 V8 +#define NONCE V9 +#define CTR V10 +#define M0 V11 +#define M1 V12 +#define M2 V13 +#define M3 V14 +#define INC V15 +#define X0 V16 +#define X1 V17 +#define X2 V18 +#define X3 V19 +#define X4 V20 +#define X5 V21 +#define X6 V22 +#define X7 V23 +#define X8 V24 +#define X9 V25 +#define X10 V26 +#define X11 V27 +#define X12 V28 +#define X13 V29 +#define X14 V30 +#define X15 V31 + +#define NUM_ROUNDS 20 + +#define ROUND4(a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3) \ + VAF a1, a0, a0 \ + VAF b1, b0, b0 \ + VAF c1, c0, c0 \ + VAF d1, d0, d0 \ + VX a0, a2, a2 \ + VX b0, b2, b2 \ + VX c0, c2, c2 \ + VX d0, d2, d2 \ + VERLLF $16, a2, a2 \ + VERLLF $16, b2, b2 \ + VERLLF $16, c2, c2 \ + VERLLF $16, d2, d2 \ + VAF a2, a3, a3 \ + VAF b2, b3, b3 \ + VAF c2, c3, c3 \ + VAF d2, d3, d3 \ + VX a3, a1, a1 \ + VX b3, b1, b1 \ + VX c3, c1, c1 \ + VX d3, d1, d1 \ + VERLLF $12, a1, a1 \ + VERLLF $12, b1, b1 \ + VERLLF $12, c1, c1 \ + VERLLF $12, d1, d1 \ + VAF a1, a0, a0 \ + VAF b1, b0, b0 \ + VAF c1, c0, c0 \ + VAF d1, d0, d0 \ + VX a0, a2, a2 \ + VX b0, b2, b2 \ + VX c0, c2, c2 \ + VX d0, d2, d2 \ + VERLLF $8, a2, a2 \ + VERLLF $8, b2, b2 \ + VERLLF $8, c2, c2 \ + VERLLF $8, d2, d2 \ + VAF a2, a3, a3 \ + VAF b2, b3, b3 \ + VAF c2, c3, c3 \ + VAF d2, d3, d3 \ + VX a3, a1, a1 \ + VX b3, b1, b1 \ + VX c3, c1, c1 \ + VX d3, d1, d1 \ + VERLLF $7, a1, a1 \ + VERLLF $7, b1, b1 \ + VERLLF $7, c1, c1 \ + VERLLF $7, d1, d1 + +#define PERMUTE(mask, v0, v1, v2, v3) \ + VPERM v0, v0, mask, v0 \ + VPERM v1, v1, mask, v1 \ + VPERM v2, v2, mask, v2 \ + VPERM v3, v3, mask, v3 + +#define ADDV(x, v0, v1, v2, v3) \ + VAF x, v0, v0 \ + VAF x, v1, v1 \ + VAF x, v2, v2 \ + VAF x, v3, v3 + +#define XORV(off, dst, src, v0, v1, v2, v3) \ + VLM off(src), M0, M3 \ + PERMUTE(BSWAP, v0, v1, v2, v3) \ + VX v0, M0, M0 \ + VX v1, M1, M1 \ + VX v2, M2, M2 \ + VX v3, M3, M3 \ + VSTM M0, M3, off(dst) + +#define SHUFFLE(a, b, c, d, t, u, v, w) \ + VMRHF a, c, t \ // t = {a[0], c[0], a[1], c[1]} + VMRHF b, d, u \ // u = {b[0], d[0], b[1], d[1]} + VMRLF a, c, v \ // v = {a[2], c[2], a[3], c[3]} + VMRLF b, d, w \ // w = {b[2], d[2], b[3], d[3]} + VMRHF t, u, a \ // a = {a[0], b[0], c[0], d[0]} + VMRLF t, u, b \ // b = {a[1], b[1], c[1], d[1]} + VMRHF v, w, c \ // c = {a[2], b[2], c[2], d[2]} + VMRLF v, w, d // d = {a[3], b[3], c[3], d[3]} + +// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32) +TEXT ·xorKeyStreamVX(SB), NOSPLIT, $0 + MOVD $·constants<>(SB), R1 + MOVD dst+0(FP), R2 // R2=&dst[0] + LMG src+24(FP), R3, R4 // R3=&src[0] R4=len(src) + MOVD key+48(FP), R5 // R5=key + MOVD nonce+56(FP), R6 // R6=nonce + MOVD counter+64(FP), R7 // R7=counter + + // load BSWAP and J0 + VLM (R1), BSWAP, J0 + + // setup + MOVD $95, R0 + VLM (R5), KEY0, KEY1 + VLL R0, (R6), NONCE + VZERO M0 + VLEIB $7, $32, M0 + VSRLB M0, NONCE, NONCE + + // initialize counter values + VLREPF (R7), CTR + VZERO INC + VLEIF $1, $1, INC + VLEIF $2, $2, INC + VLEIF $3, $3, INC + VAF INC, CTR, CTR + VREPIF $4, INC + +chacha: + VREPF $0, J0, X0 + VREPF $1, J0, X1 + VREPF $2, J0, X2 + VREPF $3, J0, X3 + VREPF $0, KEY0, X4 + VREPF $1, KEY0, X5 + VREPF $2, KEY0, X6 + VREPF $3, KEY0, X7 + VREPF $0, KEY1, X8 + VREPF $1, KEY1, X9 + VREPF $2, KEY1, X10 + VREPF $3, KEY1, X11 + VLR CTR, X12 + VREPF $1, NONCE, X13 + VREPF $2, NONCE, X14 + VREPF $3, NONCE, X15 + + MOVD $(NUM_ROUNDS/2), R1 + +loop: + ROUND4(X0, X4, X12, X8, X1, X5, X13, X9, X2, X6, X14, X10, X3, X7, X15, X11) + ROUND4(X0, X5, X15, X10, X1, X6, X12, X11, X2, X7, X13, X8, X3, X4, X14, X9) + + ADD $-1, R1 + BNE loop + + // decrement length + ADD $-256, R4 + + // rearrange vectors + SHUFFLE(X0, X1, X2, X3, M0, M1, M2, M3) + ADDV(J0, X0, X1, X2, X3) + SHUFFLE(X4, X5, X6, X7, M0, M1, M2, M3) + ADDV(KEY0, X4, X5, X6, X7) + SHUFFLE(X8, X9, X10, X11, M0, M1, M2, M3) + ADDV(KEY1, X8, X9, X10, X11) + VAF CTR, X12, X12 + SHUFFLE(X12, X13, X14, X15, M0, M1, M2, M3) + ADDV(NONCE, X12, X13, X14, X15) + + // increment counters + VAF INC, CTR, CTR + + // xor keystream with plaintext + XORV(0*64, R2, R3, X0, X4, X8, X12) + XORV(1*64, R2, R3, X1, X5, X9, X13) + XORV(2*64, R2, R3, X2, X6, X10, X14) + XORV(3*64, R2, R3, X3, X7, X11, X15) + + // increment pointers + MOVD $256(R2), R2 + MOVD $256(R3), R3 + + CMPBNE R4, $0, chacha + + VSTEF $0, CTR, (R7) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/xor.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/xor.go new file mode 100644 index 0000000..c2d0485 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/chacha20/xor.go @@ -0,0 +1,42 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found src the LICENSE file. + +package chacha20 + +import "runtime" + +// Platforms that have fast unaligned 32-bit little endian accesses. +const unaligned = runtime.GOARCH == "386" || + runtime.GOARCH == "amd64" || + runtime.GOARCH == "arm64" || + runtime.GOARCH == "ppc64le" || + runtime.GOARCH == "s390x" + +// addXor reads a little endian uint32 from src, XORs it with (a + b) and +// places the result in little endian byte order in dst. +func addXor(dst, src []byte, a, b uint32) { + _, _ = src[3], dst[3] // bounds check elimination hint + if unaligned { + // The compiler should optimize this code into + // 32-bit unaligned little endian loads and stores. + // TODO: delete once the compiler does a reliably + // good job with the generic code below. + // See issue #25111 for more details. + v := uint32(src[0]) + v |= uint32(src[1]) << 8 + v |= uint32(src[2]) << 16 + v |= uint32(src[3]) << 24 + v ^= a + b + dst[0] = byte(v) + dst[1] = byte(v >> 8) + dst[2] = byte(v >> 16) + dst[3] = byte(v >> 24) + } else { + a += b + dst[0] = src[0] ^ byte(a) + dst[1] = src[1] ^ byte(a>>8) + dst[2] = src[2] ^ byte(a>>16) + dst[3] = src[3] ^ byte(a>>24) + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/curve25519/curve25519.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/curve25519/curve25519.go new file mode 100644 index 0000000..048faef --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/curve25519/curve25519.go @@ -0,0 +1,93 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package curve25519 provides an implementation of the X25519 function, which +// performs scalar multiplication on the elliptic curve known as Curve25519 +// according to [RFC 7748]. +// +// The curve25519 package is a wrapper for the X25519 implementation in the +// crypto/ecdh package. It is [frozen] and is not accepting new features. +// +// [RFC 7748]: https://datatracker.ietf.org/doc/html/rfc7748 +// [frozen]: https://go.dev/wiki/Frozen +package curve25519 + +import "crypto/ecdh" + +// ScalarMult sets dst to the product scalar * point. +// +// Deprecated: when provided a low-order point, ScalarMult will set dst to all +// zeroes, irrespective of the scalar. Instead, use the X25519 function, which +// will return an error. +func ScalarMult(dst, scalar, point *[32]byte) { + if _, err := x25519(dst, scalar[:], point[:]); err != nil { + // The only error condition for x25519 when the inputs are 32 bytes long + // is if the output would have been the all-zero value. + for i := range dst { + dst[i] = 0 + } + } +} + +// ScalarBaseMult sets dst to the product scalar * base where base is the +// standard generator. +// +// It is recommended to use the X25519 function with Basepoint instead, as +// copying into fixed size arrays can lead to unexpected bugs. +func ScalarBaseMult(dst, scalar *[32]byte) { + curve := ecdh.X25519() + priv, err := curve.NewPrivateKey(scalar[:]) + if err != nil { + panic("curve25519: " + err.Error()) + } + copy(dst[:], priv.PublicKey().Bytes()) +} + +const ( + // ScalarSize is the size of the scalar input to X25519. + ScalarSize = 32 + // PointSize is the size of the point input to X25519. + PointSize = 32 +) + +// Basepoint is the canonical Curve25519 generator. +var Basepoint []byte + +var basePoint = [32]byte{9} + +func init() { Basepoint = basePoint[:] } + +// X25519 returns the result of the scalar multiplication (scalar * point), +// according to RFC 7748, Section 5. scalar, point and the return value are +// slices of 32 bytes. +// +// scalar can be generated at random, for example with crypto/rand. point should +// be either Basepoint or the output of another X25519 call. +// +// If point is Basepoint (but not if it's a different slice with the same +// contents) a precomputed implementation might be used for performance. +func X25519(scalar, point []byte) ([]byte, error) { + // Outline the body of function, to let the allocation be inlined in the + // caller, and possibly avoid escaping to the heap. + var dst [32]byte + return x25519(&dst, scalar, point) +} + +func x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) { + curve := ecdh.X25519() + pub, err := curve.NewPublicKey(point) + if err != nil { + return nil, err + } + priv, err := curve.NewPrivateKey(scalar) + if err != nil { + return nil, err + } + out, err := priv.ECDH(pub) + if err != nil { + return nil, err + } + copy(dst[:], out) + return dst[:], nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias.go new file mode 100644 index 0000000..551ff0c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias.go @@ -0,0 +1,31 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !purego + +// Package alias implements memory aliasing tests. +package alias + +import "unsafe" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && + uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias_purego.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias_purego.go new file mode 100644 index 0000000..6fe61b5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/alias/alias_purego.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build purego + +// Package alias implements memory aliasing tests. +package alias + +// This is the Google App Engine standard variant based on reflect +// because the unsafe package and cgo are disallowed. + +import "reflect" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() && + reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer() +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go new file mode 100644 index 0000000..8d99551 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go @@ -0,0 +1,9 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego + +package poly1305 + +type mac struct{ macGeneric } diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go new file mode 100644 index 0000000..4aaea81 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go @@ -0,0 +1,99 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package poly1305 implements Poly1305 one-time message authentication code as +// specified in https://cr.yp.to/mac/poly1305-20050329.pdf. +// +// Poly1305 is a fast, one-time authentication function. It is infeasible for an +// attacker to generate an authenticator for a message without the key. However, a +// key must only be used for a single message. Authenticating two different +// messages with the same key allows an attacker to forge authenticators for other +// messages with the same key. +// +// Poly1305 was originally coupled with AES in order to make Poly1305-AES. AES was +// used with a fixed key in order to generate one-time keys from an nonce. +// However, in this package AES isn't used and the one-time key is specified +// directly. +package poly1305 + +import "crypto/subtle" + +// TagSize is the size, in bytes, of a poly1305 authenticator. +const TagSize = 16 + +// Sum generates an authenticator for msg using a one-time key and puts the +// 16-byte result into out. Authenticating two different messages with the same +// key allows an attacker to forge messages at will. +func Sum(out *[16]byte, m []byte, key *[32]byte) { + h := New(key) + h.Write(m) + h.Sum(out[:0]) +} + +// Verify returns true if mac is a valid authenticator for m with the given key. +func Verify(mac *[16]byte, m []byte, key *[32]byte) bool { + var tmp [16]byte + Sum(&tmp, m, key) + return subtle.ConstantTimeCompare(tmp[:], mac[:]) == 1 +} + +// New returns a new MAC computing an authentication +// tag of all data written to it with the given key. +// This allows writing the message progressively instead +// of passing it as a single slice. Common users should use +// the Sum function instead. +// +// The key must be unique for each message, as authenticating +// two different messages with the same key allows an attacker +// to forge messages at will. +func New(key *[32]byte) *MAC { + m := &MAC{} + initialize(key, &m.macState) + return m +} + +// MAC is an io.Writer computing an authentication tag +// of the data written to it. +// +// MAC cannot be used like common hash.Hash implementations, +// because using a poly1305 key twice breaks its security. +// Therefore writing data to a running MAC after calling +// Sum or Verify causes it to panic. +type MAC struct { + mac // platform-dependent implementation + + finalized bool +} + +// Size returns the number of bytes Sum will return. +func (h *MAC) Size() int { return TagSize } + +// Write adds more data to the running message authentication code. +// It never returns an error. +// +// It must not be called after the first call of Sum or Verify. +func (h *MAC) Write(p []byte) (n int, err error) { + if h.finalized { + panic("poly1305: write to MAC after Sum or Verify") + } + return h.mac.Write(p) +} + +// Sum computes the authenticator of all data written to the +// message authentication code. +func (h *MAC) Sum(b []byte) []byte { + var mac [TagSize]byte + h.mac.Sum(&mac) + h.finalized = true + return append(b, mac[:]...) +} + +// Verify returns whether the authenticator of all data written to +// the message authentication code matches the expected value. +func (h *MAC) Verify(expected []byte) bool { + var mac [TagSize]byte + h.mac.Sum(&mac) + h.finalized = true + return subtle.ConstantTimeCompare(expected, mac[:]) == 1 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s new file mode 100644 index 0000000..1337573 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s @@ -0,0 +1,93 @@ +// Code generated by command: go run sum_amd64_asm.go -out ../sum_amd64.s -pkg poly1305. DO NOT EDIT. + +//go:build gc && !purego + +// func update(state *macState, msg []byte) +TEXT ·update(SB), $0-32 + MOVQ state+0(FP), DI + MOVQ msg_base+8(FP), SI + MOVQ msg_len+16(FP), R15 + MOVQ (DI), R8 + MOVQ 8(DI), R9 + MOVQ 16(DI), R10 + MOVQ 24(DI), R11 + MOVQ 32(DI), R12 + CMPQ R15, $0x10 + JB bytes_between_0_and_15 + +loop: + ADDQ (SI), R8 + ADCQ 8(SI), R9 + ADCQ $0x01, R10 + LEAQ 16(SI), SI + +multiply: + MOVQ R11, AX + MULQ R8 + MOVQ AX, BX + MOVQ DX, CX + MOVQ R11, AX + MULQ R9 + ADDQ AX, CX + ADCQ $0x00, DX + MOVQ R11, R13 + IMULQ R10, R13 + ADDQ DX, R13 + MOVQ R12, AX + MULQ R8 + ADDQ AX, CX + ADCQ $0x00, DX + MOVQ DX, R8 + MOVQ R12, R14 + IMULQ R10, R14 + MOVQ R12, AX + MULQ R9 + ADDQ AX, R13 + ADCQ DX, R14 + ADDQ R8, R13 + ADCQ $0x00, R14 + MOVQ BX, R8 + MOVQ CX, R9 + MOVQ R13, R10 + ANDQ $0x03, R10 + MOVQ R13, BX + ANDQ $-4, BX + ADDQ BX, R8 + ADCQ R14, R9 + ADCQ $0x00, R10 + SHRQ $0x02, R14, R13 + SHRQ $0x02, R14 + ADDQ R13, R8 + ADCQ R14, R9 + ADCQ $0x00, R10 + SUBQ $0x10, R15 + CMPQ R15, $0x10 + JAE loop + +bytes_between_0_and_15: + TESTQ R15, R15 + JZ done + MOVQ $0x00000001, BX + XORQ CX, CX + XORQ R13, R13 + ADDQ R15, SI + +flush_buffer: + SHLQ $0x08, BX, CX + SHLQ $0x08, BX + MOVB -1(SI), R13 + XORQ R13, BX + DECQ SI + DECQ R15 + JNZ flush_buffer + ADDQ BX, R8 + ADCQ CX, R9 + ADCQ $0x00, R10 + MOVQ $0x00000010, R15 + JMP multiply + +done: + MOVQ R8, (DI) + MOVQ R9, 8(DI) + MOVQ R10, 16(DI) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go new file mode 100644 index 0000000..315b84a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go @@ -0,0 +1,47 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le) + +package poly1305 + +//go:noescape +func update(state *macState, msg []byte) + +// mac is a wrapper for macGeneric that redirects calls that would have gone to +// updateGeneric to update. +// +// Its Write and Sum methods are otherwise identical to the macGeneric ones, but +// using function pointers would carry a major performance cost. +type mac struct{ macGeneric } + +func (h *mac) Write(p []byte) (int, error) { + nn := len(p) + if h.offset > 0 { + n := copy(h.buffer[h.offset:], p) + if h.offset+n < TagSize { + h.offset += n + return nn, nil + } + p = p[n:] + h.offset = 0 + update(&h.macState, h.buffer[:]) + } + if n := len(p) - (len(p) % TagSize); n > 0 { + update(&h.macState, p[:n]) + p = p[n:] + } + if len(p) > 0 { + h.offset += copy(h.buffer[h.offset:], p) + } + return nn, nil +} + +func (h *mac) Sum(out *[16]byte) { + state := h.macState + if h.offset > 0 { + update(&state, h.buffer[:h.offset]) + } + finalize(out, &state.h, &state.s) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go new file mode 100644 index 0000000..ec2202b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go @@ -0,0 +1,312 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This file provides the generic implementation of Sum and MAC. Other files +// might provide optimized assembly implementations of some of this code. + +package poly1305 + +import ( + "encoding/binary" + "math/bits" +) + +// Poly1305 [RFC 7539] is a relatively simple algorithm: the authentication tag +// for a 64 bytes message is approximately +// +// s + m[0:16] * r⁴ + m[16:32] * r³ + m[32:48] * r² + m[48:64] * r mod 2¹³⁰ - 5 +// +// for some secret r and s. It can be computed sequentially like +// +// for len(msg) > 0: +// h += read(msg, 16) +// h *= r +// h %= 2¹³⁰ - 5 +// return h + s +// +// All the complexity is about doing performant constant-time math on numbers +// larger than any available numeric type. + +func sumGeneric(out *[TagSize]byte, msg []byte, key *[32]byte) { + h := newMACGeneric(key) + h.Write(msg) + h.Sum(out) +} + +func newMACGeneric(key *[32]byte) macGeneric { + m := macGeneric{} + initialize(key, &m.macState) + return m +} + +// macState holds numbers in saturated 64-bit little-endian limbs. That is, +// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸. +type macState struct { + // h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but + // can grow larger during and after rounds. It must, however, remain below + // 2 * (2¹³⁰ - 5). + h [3]uint64 + // r and s are the private key components. + r [2]uint64 + s [2]uint64 +} + +type macGeneric struct { + macState + + buffer [TagSize]byte + offset int +} + +// Write splits the incoming message into TagSize chunks, and passes them to +// update. It buffers incomplete chunks. +func (h *macGeneric) Write(p []byte) (int, error) { + nn := len(p) + if h.offset > 0 { + n := copy(h.buffer[h.offset:], p) + if h.offset+n < TagSize { + h.offset += n + return nn, nil + } + p = p[n:] + h.offset = 0 + updateGeneric(&h.macState, h.buffer[:]) + } + if n := len(p) - (len(p) % TagSize); n > 0 { + updateGeneric(&h.macState, p[:n]) + p = p[n:] + } + if len(p) > 0 { + h.offset += copy(h.buffer[h.offset:], p) + } + return nn, nil +} + +// Sum flushes the last incomplete chunk from the buffer, if any, and generates +// the MAC output. It does not modify its state, in order to allow for multiple +// calls to Sum, even if no Write is allowed after Sum. +func (h *macGeneric) Sum(out *[TagSize]byte) { + state := h.macState + if h.offset > 0 { + updateGeneric(&state, h.buffer[:h.offset]) + } + finalize(out, &state.h, &state.s) +} + +// [rMask0, rMask1] is the specified Poly1305 clamping mask in little-endian. It +// clears some bits of the secret coefficient to make it possible to implement +// multiplication more efficiently. +const ( + rMask0 = 0x0FFFFFFC0FFFFFFF + rMask1 = 0x0FFFFFFC0FFFFFFC +) + +// initialize loads the 256-bit key into the two 128-bit secret values r and s. +func initialize(key *[32]byte, m *macState) { + m.r[0] = binary.LittleEndian.Uint64(key[0:8]) & rMask0 + m.r[1] = binary.LittleEndian.Uint64(key[8:16]) & rMask1 + m.s[0] = binary.LittleEndian.Uint64(key[16:24]) + m.s[1] = binary.LittleEndian.Uint64(key[24:32]) +} + +// uint128 holds a 128-bit number as two 64-bit limbs, for use with the +// bits.Mul64 and bits.Add64 intrinsics. +type uint128 struct { + lo, hi uint64 +} + +func mul64(a, b uint64) uint128 { + hi, lo := bits.Mul64(a, b) + return uint128{lo, hi} +} + +func add128(a, b uint128) uint128 { + lo, c := bits.Add64(a.lo, b.lo, 0) + hi, c := bits.Add64(a.hi, b.hi, c) + if c != 0 { + panic("poly1305: unexpected overflow") + } + return uint128{lo, hi} +} + +func shiftRightBy2(a uint128) uint128 { + a.lo = a.lo>>2 | (a.hi&3)<<62 + a.hi = a.hi >> 2 + return a +} + +// updateGeneric absorbs msg into the state.h accumulator. For each chunk m of +// 128 bits of message, it computes +// +// h₊ = (h + m) * r mod 2¹³⁰ - 5 +// +// If the msg length is not a multiple of TagSize, it assumes the last +// incomplete chunk is the final one. +func updateGeneric(state *macState, msg []byte) { + h0, h1, h2 := state.h[0], state.h[1], state.h[2] + r0, r1 := state.r[0], state.r[1] + + for len(msg) > 0 { + var c uint64 + + // For the first step, h + m, we use a chain of bits.Add64 intrinsics. + // The resulting value of h might exceed 2¹³⁰ - 5, but will be partially + // reduced at the end of the multiplication below. + // + // The spec requires us to set a bit just above the message size, not to + // hide leading zeroes. For full chunks, that's 1 << 128, so we can just + // add 1 to the most significant (2¹²⁸) limb, h2. + if len(msg) >= TagSize { + h0, c = bits.Add64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0) + h1, c = bits.Add64(h1, binary.LittleEndian.Uint64(msg[8:16]), c) + h2 += c + 1 + + msg = msg[TagSize:] + } else { + var buf [TagSize]byte + copy(buf[:], msg) + buf[len(msg)] = 1 + + h0, c = bits.Add64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0) + h1, c = bits.Add64(h1, binary.LittleEndian.Uint64(buf[8:16]), c) + h2 += c + + msg = nil + } + + // Multiplication of big number limbs is similar to elementary school + // columnar multiplication. Instead of digits, there are 64-bit limbs. + // + // We are multiplying a 3 limbs number, h, by a 2 limbs number, r. + // + // h2 h1 h0 x + // r1 r0 = + // ---------------- + // h2r0 h1r0 h0r0 <-- individual 128-bit products + // + h2r1 h1r1 h0r1 + // ------------------------ + // m3 m2 m1 m0 <-- result in 128-bit overlapping limbs + // ------------------------ + // m3.hi m2.hi m1.hi m0.hi <-- carry propagation + // + m3.lo m2.lo m1.lo m0.lo + // ------------------------------- + // t4 t3 t2 t1 t0 <-- final result in 64-bit limbs + // + // The main difference from pen-and-paper multiplication is that we do + // carry propagation in a separate step, as if we wrote two digit sums + // at first (the 128-bit limbs), and then carried the tens all at once. + + h0r0 := mul64(h0, r0) + h1r0 := mul64(h1, r0) + h2r0 := mul64(h2, r0) + h0r1 := mul64(h0, r1) + h1r1 := mul64(h1, r1) + h2r1 := mul64(h2, r1) + + // Since h2 is known to be at most 7 (5 + 1 + 1), and r0 and r1 have their + // top 4 bits cleared by rMask{0,1}, we know that their product is not going + // to overflow 64 bits, so we can ignore the high part of the products. + // + // This also means that the product doesn't have a fifth limb (t4). + if h2r0.hi != 0 { + panic("poly1305: unexpected overflow") + } + if h2r1.hi != 0 { + panic("poly1305: unexpected overflow") + } + + m0 := h0r0 + m1 := add128(h1r0, h0r1) // These two additions don't overflow thanks again + m2 := add128(h2r0, h1r1) // to the 4 masked bits at the top of r0 and r1. + m3 := h2r1 + + t0 := m0.lo + t1, c := bits.Add64(m1.lo, m0.hi, 0) + t2, c := bits.Add64(m2.lo, m1.hi, c) + t3, _ := bits.Add64(m3.lo, m2.hi, c) + + // Now we have the result as 4 64-bit limbs, and we need to reduce it + // modulo 2¹³⁰ - 5. The special shape of this Crandall prime lets us do + // a cheap partial reduction according to the reduction identity + // + // c * 2¹³⁰ + n = c * 5 + n mod 2¹³⁰ - 5 + // + // because 2¹³⁰ = 5 mod 2¹³⁰ - 5. Partial reduction since the result is + // likely to be larger than 2¹³⁰ - 5, but still small enough to fit the + // assumptions we make about h in the rest of the code. + // + // See also https://speakerdeck.com/gtank/engineering-prime-numbers?slide=23 + + // We split the final result at the 2¹³⁰ mark into h and cc, the carry. + // Note that the carry bits are effectively shifted left by 2, in other + // words, cc = c * 4 for the c in the reduction identity. + h0, h1, h2 = t0, t1, t2&maskLow2Bits + cc := uint128{t2 & maskNotLow2Bits, t3} + + // To add c * 5 to h, we first add cc = c * 4, and then add (cc >> 2) = c. + + h0, c = bits.Add64(h0, cc.lo, 0) + h1, c = bits.Add64(h1, cc.hi, c) + h2 += c + + cc = shiftRightBy2(cc) + + h0, c = bits.Add64(h0, cc.lo, 0) + h1, c = bits.Add64(h1, cc.hi, c) + h2 += c + + // h2 is at most 3 + 1 + 1 = 5, making the whole of h at most + // + // 5 * 2¹²⁸ + (2¹²⁸ - 1) = 6 * 2¹²⁸ - 1 + } + + state.h[0], state.h[1], state.h[2] = h0, h1, h2 +} + +const ( + maskLow2Bits uint64 = 0x0000000000000003 + maskNotLow2Bits uint64 = ^maskLow2Bits +) + +// select64 returns x if v == 1 and y if v == 0, in constant time. +func select64(v, x, y uint64) uint64 { return ^(v-1)&x | (v-1)&y } + +// [p0, p1, p2] is 2¹³⁰ - 5 in little endian order. +const ( + p0 = 0xFFFFFFFFFFFFFFFB + p1 = 0xFFFFFFFFFFFFFFFF + p2 = 0x0000000000000003 +) + +// finalize completes the modular reduction of h and computes +// +// out = h + s mod 2¹²⁸ +func finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) { + h0, h1, h2 := h[0], h[1], h[2] + + // After the partial reduction in updateGeneric, h might be more than + // 2¹³⁰ - 5, but will be less than 2 * (2¹³⁰ - 5). To complete the reduction + // in constant time, we compute t = h - (2¹³⁰ - 5), and select h as the + // result if the subtraction underflows, and t otherwise. + + hMinusP0, b := bits.Sub64(h0, p0, 0) + hMinusP1, b := bits.Sub64(h1, p1, b) + _, b = bits.Sub64(h2, p2, b) + + // h = h if h < p else h - p + h0 = select64(b, h0, hMinusP0) + h1 = select64(b, h1, hMinusP1) + + // Finally, we compute the last Poly1305 step + // + // tag = h + s mod 2¹²⁸ + // + // by just doing a wide addition with the 128 low bits of h and discarding + // the overflow. + h0, c := bits.Add64(h0, s[0], 0) + h1, _ = bits.Add64(h1, s[1], c) + + binary.LittleEndian.PutUint64(out[0:8], h0) + binary.LittleEndian.PutUint64(out[8:16], h1) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s new file mode 100644 index 0000000..bc8361d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s @@ -0,0 +1,123 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +// func update(state *macState, msg []byte) +TEXT ·update(SB), $0-32 + MOVV state+0(FP), R4 + MOVV msg_base+8(FP), R5 + MOVV msg_len+16(FP), R6 + + MOVV $0x10, R7 + + MOVV (R4), R8 // h0 + MOVV 8(R4), R9 // h1 + MOVV 16(R4), R10 // h2 + MOVV 24(R4), R11 // r0 + MOVV 32(R4), R12 // r1 + + BLT R6, R7, bytes_between_0_and_15 + +loop: + MOVV (R5), R14 // msg[0:8] + MOVV 8(R5), R16 // msg[8:16] + ADDV R14, R8, R8 // h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow) + ADDV R16, R9, R27 + SGTU R14, R8, R24 // h0.carry + SGTU R9, R27, R28 + ADDV R27, R24, R9 // h1 + SGTU R27, R9, R24 + OR R24, R28, R24 // h1.carry + ADDV $0x01, R24, R24 + ADDV R10, R24, R10 // h2 + + ADDV $16, R5, R5 // msg = msg[16:] + +multiply: + MULV R8, R11, R14 // h0r0.lo + MULHVU R8, R11, R15 // h0r0.hi + MULV R9, R11, R13 // h1r0.lo + MULHVU R9, R11, R16 // h1r0.hi + ADDV R13, R15, R15 + SGTU R13, R15, R24 + ADDV R24, R16, R16 + MULV R10, R11, R25 + ADDV R16, R25, R25 + MULV R8, R12, R13 // h0r1.lo + MULHVU R8, R12, R16 // h0r1.hi + ADDV R13, R15, R15 + SGTU R13, R15, R24 + ADDV R24, R16, R16 + MOVV R16, R8 + MULV R10, R12, R26 // h2r1 + MULV R9, R12, R13 // h1r1.lo + MULHVU R9, R12, R16 // h1r1.hi + ADDV R13, R25, R25 + ADDV R16, R26, R27 + SGTU R13, R25, R24 + ADDV R27, R24, R26 + ADDV R8, R25, R25 + SGTU R8, R25, R24 + ADDV R24, R26, R26 + AND $3, R25, R10 + AND $-4, R25, R17 + ADDV R17, R14, R8 + ADDV R26, R15, R27 + SGTU R17, R8, R24 + SGTU R26, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R24, R10, R10 + SLLV $62, R26, R27 + SRLV $2, R25, R28 + SRLV $2, R26, R26 + OR R27, R28, R25 + ADDV R25, R8, R8 + ADDV R26, R9, R27 + SGTU R25, R8, R24 + SGTU R26, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R24, R10, R10 + + SUBV $16, R6, R6 + BGE R6, R7, loop + +bytes_between_0_and_15: + BEQ R6, R0, done + MOVV $1, R14 + XOR R15, R15 + ADDV R6, R5, R5 + +flush_buffer: + MOVBU -1(R5), R25 + SRLV $56, R14, R24 + SLLV $8, R15, R28 + SLLV $8, R14, R14 + OR R24, R28, R15 + XOR R25, R14, R14 + SUBV $1, R6, R6 + SUBV $1, R5, R5 + BNE R6, R0, flush_buffer + + ADDV R14, R8, R8 + SGTU R14, R8, R24 + ADDV R15, R9, R27 + SGTU R15, R27, R28 + ADDV R27, R24, R9 + SGTU R27, R9, R24 + OR R24, R28, R24 + ADDV R10, R24, R10 + + MOVV $16, R6 + JMP multiply + +done: + MOVV R8, (R4) + MOVV R9, 8(R4) + MOVV R10, 16(R4) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s new file mode 100644 index 0000000..6899a1d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s @@ -0,0 +1,187 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego && (ppc64 || ppc64le) + +#include "textflag.h" + +// This was ported from the amd64 implementation. + +#ifdef GOARCH_ppc64le +#define LE_MOVD MOVD +#define LE_MOVWZ MOVWZ +#define LE_MOVHZ MOVHZ +#else +#define LE_MOVD MOVDBR +#define LE_MOVWZ MOVWBR +#define LE_MOVHZ MOVHBR +#endif + +#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \ + LE_MOVD (msg)( R0), t0; \ + LE_MOVD (msg)(R24), t1; \ + MOVD $1, t2; \ + ADDC t0, h0, h0; \ + ADDE t1, h1, h1; \ + ADDE t2, h2; \ + ADD $16, msg + +#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3, t4, t5) \ + MULLD r0, h0, t0; \ + MULHDU r0, h0, t1; \ + MULLD r0, h1, t4; \ + MULHDU r0, h1, t5; \ + ADDC t4, t1, t1; \ + MULLD r0, h2, t2; \ + MULHDU r1, h0, t4; \ + MULLD r1, h0, h0; \ + ADDE t5, t2, t2; \ + ADDC h0, t1, t1; \ + MULLD h2, r1, t3; \ + ADDZE t4, h0; \ + MULHDU r1, h1, t5; \ + MULLD r1, h1, t4; \ + ADDC t4, t2, t2; \ + ADDE t5, t3, t3; \ + ADDC h0, t2, t2; \ + MOVD $-4, t4; \ + ADDZE t3; \ + RLDICL $0, t2, $62, h2; \ + AND t2, t4, h0; \ + ADDC t0, h0, h0; \ + ADDE t3, t1, h1; \ + SLD $62, t3, t4; \ + SRD $2, t2; \ + ADDZE h2; \ + OR t4, t2, t2; \ + SRD $2, t3; \ + ADDC t2, h0, h0; \ + ADDE t3, h1, h1; \ + ADDZE h2 + +// func update(state *[7]uint64, msg []byte) +TEXT ·update(SB), $0-32 + MOVD state+0(FP), R3 + MOVD msg_base+8(FP), R4 + MOVD msg_len+16(FP), R5 + + MOVD 0(R3), R8 // h0 + MOVD 8(R3), R9 // h1 + MOVD 16(R3), R10 // h2 + MOVD 24(R3), R11 // r0 + MOVD 32(R3), R12 // r1 + + MOVD $8, R24 + + CMP R5, $16 + BLT bytes_between_0_and_15 + +loop: + POLY1305_ADD(R4, R8, R9, R10, R20, R21, R22) + + PCALIGN $16 +multiply: + POLY1305_MUL(R8, R9, R10, R11, R12, R16, R17, R18, R14, R20, R21) + ADD $-16, R5 + CMP R5, $16 + BGE loop + +bytes_between_0_and_15: + CMP R5, $0 + BEQ done + MOVD $0, R16 // h0 + MOVD $0, R17 // h1 + +flush_buffer: + CMP R5, $8 + BLE just1 + + MOVD $8, R21 + SUB R21, R5, R21 + + // Greater than 8 -- load the rightmost remaining bytes in msg + // and put into R17 (h1) + LE_MOVD (R4)(R21), R17 + MOVD $16, R22 + + // Find the offset to those bytes + SUB R5, R22, R22 + SLD $3, R22 + + // Shift to get only the bytes in msg + SRD R22, R17, R17 + + // Put 1 at high end + MOVD $1, R23 + SLD $3, R21 + SLD R21, R23, R23 + OR R23, R17, R17 + + // Remainder is 8 + MOVD $8, R5 + +just1: + CMP R5, $8 + BLT less8 + + // Exactly 8 + LE_MOVD (R4), R16 + + CMP R17, $0 + + // Check if we've already set R17; if not + // set 1 to indicate end of msg. + BNE carry + MOVD $1, R17 + BR carry + +less8: + MOVD $0, R16 // h0 + MOVD $0, R22 // shift count + CMP R5, $4 + BLT less4 + LE_MOVWZ (R4), R16 + ADD $4, R4 + ADD $-4, R5 + MOVD $32, R22 + +less4: + CMP R5, $2 + BLT less2 + LE_MOVHZ (R4), R21 + SLD R22, R21, R21 + OR R16, R21, R16 + ADD $16, R22 + ADD $-2, R5 + ADD $2, R4 + +less2: + CMP R5, $0 + BEQ insert1 + MOVBZ (R4), R21 + SLD R22, R21, R21 + OR R16, R21, R16 + ADD $8, R22 + +insert1: + // Insert 1 at end of msg + MOVD $1, R21 + SLD R22, R21, R21 + OR R16, R21, R16 + +carry: + // Add new values to h0, h1, h2 + ADDC R16, R8 + ADDE R17, R9 + ADDZE R10, R10 + MOVD $16, R5 + ADD R5, R4 + BR multiply + +done: + // Save h0, h1, h2 in state + MOVD R8, 0(R3) + MOVD R9, 8(R3) + MOVD R10, 16(R3) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go new file mode 100644 index 0000000..e1d033a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go @@ -0,0 +1,76 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +package poly1305 + +import ( + "golang.org/x/sys/cpu" +) + +// updateVX is an assembly implementation of Poly1305 that uses vector +// instructions. It must only be called if the vector facility (vx) is +// available. +// +//go:noescape +func updateVX(state *macState, msg []byte) + +// mac is a replacement for macGeneric that uses a larger buffer and redirects +// calls that would have gone to updateGeneric to updateVX if the vector +// facility is installed. +// +// A larger buffer is required for good performance because the vector +// implementation has a higher fixed cost per call than the generic +// implementation. +type mac struct { + macState + + buffer [16 * TagSize]byte // size must be a multiple of block size (16) + offset int +} + +func (h *mac) Write(p []byte) (int, error) { + nn := len(p) + if h.offset > 0 { + n := copy(h.buffer[h.offset:], p) + if h.offset+n < len(h.buffer) { + h.offset += n + return nn, nil + } + p = p[n:] + h.offset = 0 + if cpu.S390X.HasVX { + updateVX(&h.macState, h.buffer[:]) + } else { + updateGeneric(&h.macState, h.buffer[:]) + } + } + + tail := len(p) % len(h.buffer) // number of bytes to copy into buffer + body := len(p) - tail // number of bytes to process now + if body > 0 { + if cpu.S390X.HasVX { + updateVX(&h.macState, p[:body]) + } else { + updateGeneric(&h.macState, p[:body]) + } + } + h.offset = copy(h.buffer[:], p[body:]) // copy tail bytes - can be 0 + return nn, nil +} + +func (h *mac) Sum(out *[TagSize]byte) { + state := h.macState + remainder := h.buffer[:h.offset] + + // Use the generic implementation if we have 2 or fewer blocks left + // to sum. The vector implementation has a higher startup time. + if cpu.S390X.HasVX && len(remainder) > 2*TagSize { + updateVX(&state, remainder) + } else if len(remainder) > 0 { + updateGeneric(&state, remainder) + } + finalize(out, &state.h, &state.s) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s new file mode 100644 index 0000000..0fe3a7c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s @@ -0,0 +1,503 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc && !purego + +#include "textflag.h" + +// This implementation of Poly1305 uses the vector facility (vx) +// to process up to 2 blocks (32 bytes) per iteration using an +// algorithm based on the one described in: +// +// NEON crypto, Daniel J. Bernstein & Peter Schwabe +// https://cryptojedi.org/papers/neoncrypto-20120320.pdf +// +// This algorithm uses 5 26-bit limbs to represent a 130-bit +// value. These limbs are, for the most part, zero extended and +// placed into 64-bit vector register elements. Each vector +// register is 128-bits wide and so holds 2 of these elements. +// Using 26-bit limbs allows us plenty of headroom to accommodate +// accumulations before and after multiplication without +// overflowing either 32-bits (before multiplication) or 64-bits +// (after multiplication). +// +// In order to parallelise the operations required to calculate +// the sum we use two separate accumulators and then sum those +// in an extra final step. For compatibility with the generic +// implementation we perform this summation at the end of every +// updateVX call. +// +// To use two accumulators we must multiply the message blocks +// by r² rather than r. Only the final message block should be +// multiplied by r. +// +// Example: +// +// We want to calculate the sum (h) for a 64 byte message (m): +// +// h = m[0:16]r⁴ + m[16:32]r³ + m[32:48]r² + m[48:64]r +// +// To do this we split the calculation into the even indices +// and odd indices of the message. These form our SIMD 'lanes': +// +// h = m[ 0:16]r⁴ + m[32:48]r² + <- lane 0 +// m[16:32]r³ + m[48:64]r <- lane 1 +// +// To calculate this iteratively we refactor so that both lanes +// are written in terms of r² and r: +// +// h = (m[ 0:16]r² + m[32:48])r² + <- lane 0 +// (m[16:32]r² + m[48:64])r <- lane 1 +// ^ ^ +// | coefficients for second iteration +// coefficients for first iteration +// +// So in this case we would have two iterations. In the first +// both lanes are multiplied by r². In the second only the +// first lane is multiplied by r² and the second lane is +// instead multiplied by r. This gives use the odd and even +// powers of r that we need from the original equation. +// +// Notation: +// +// h - accumulator +// r - key +// m - message +// +// [a, b] - SIMD register holding two 64-bit values +// [a, b, c, d] - SIMD register holding four 32-bit values +// xᵢ[n] - limb n of variable x with bit width i +// +// Limbs are expressed in little endian order, so for 26-bit +// limbs x₂₆[4] will be the most significant limb and x₂₆[0] +// will be the least significant limb. + +// masking constants +#define MOD24 V0 // [0x0000000000ffffff, 0x0000000000ffffff] - mask low 24-bits +#define MOD26 V1 // [0x0000000003ffffff, 0x0000000003ffffff] - mask low 26-bits + +// expansion constants (see EXPAND macro) +#define EX0 V2 +#define EX1 V3 +#define EX2 V4 + +// key (r², r or 1 depending on context) +#define R_0 V5 +#define R_1 V6 +#define R_2 V7 +#define R_3 V8 +#define R_4 V9 + +// precalculated coefficients (5r², 5r or 0 depending on context) +#define R5_1 V10 +#define R5_2 V11 +#define R5_3 V12 +#define R5_4 V13 + +// message block (m) +#define M_0 V14 +#define M_1 V15 +#define M_2 V16 +#define M_3 V17 +#define M_4 V18 + +// accumulator (h) +#define H_0 V19 +#define H_1 V20 +#define H_2 V21 +#define H_3 V22 +#define H_4 V23 + +// temporary registers (for short-lived values) +#define T_0 V24 +#define T_1 V25 +#define T_2 V26 +#define T_3 V27 +#define T_4 V28 + +GLOBL ·constants<>(SB), RODATA, $0x30 +// EX0 +DATA ·constants<>+0x00(SB)/8, $0x0006050403020100 +DATA ·constants<>+0x08(SB)/8, $0x1016151413121110 +// EX1 +DATA ·constants<>+0x10(SB)/8, $0x060c0b0a09080706 +DATA ·constants<>+0x18(SB)/8, $0x161c1b1a19181716 +// EX2 +DATA ·constants<>+0x20(SB)/8, $0x0d0d0d0d0d0f0e0d +DATA ·constants<>+0x28(SB)/8, $0x1d1d1d1d1d1f1e1d + +// MULTIPLY multiplies each lane of f and g, partially reduced +// modulo 2¹³⁰ - 5. The result, h, consists of partial products +// in each lane that need to be reduced further to produce the +// final result. +// +// h₁₃₀ = (f₁₃₀g₁₃₀) % 2¹³⁰ + (5f₁₃₀g₁₃₀) / 2¹³⁰ +// +// Note that the multiplication by 5 of the high bits is +// achieved by precalculating the multiplication of four of the +// g coefficients by 5. These are g51-g54. +#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \ + VMLOF f0, g0, h0 \ + VMLOF f0, g3, h3 \ + VMLOF f0, g1, h1 \ + VMLOF f0, g4, h4 \ + VMLOF f0, g2, h2 \ + VMLOF f1, g54, T_0 \ + VMLOF f1, g2, T_3 \ + VMLOF f1, g0, T_1 \ + VMLOF f1, g3, T_4 \ + VMLOF f1, g1, T_2 \ + VMALOF f2, g53, h0, h0 \ + VMALOF f2, g1, h3, h3 \ + VMALOF f2, g54, h1, h1 \ + VMALOF f2, g2, h4, h4 \ + VMALOF f2, g0, h2, h2 \ + VMALOF f3, g52, T_0, T_0 \ + VMALOF f3, g0, T_3, T_3 \ + VMALOF f3, g53, T_1, T_1 \ + VMALOF f3, g1, T_4, T_4 \ + VMALOF f3, g54, T_2, T_2 \ + VMALOF f4, g51, h0, h0 \ + VMALOF f4, g54, h3, h3 \ + VMALOF f4, g52, h1, h1 \ + VMALOF f4, g0, h4, h4 \ + VMALOF f4, g53, h2, h2 \ + VAG T_0, h0, h0 \ + VAG T_3, h3, h3 \ + VAG T_1, h1, h1 \ + VAG T_4, h4, h4 \ + VAG T_2, h2, h2 + +// REDUCE performs the following carry operations in four +// stages, as specified in Bernstein & Schwabe: +// +// 1: h₂₆[0]->h₂₆[1] h₂₆[3]->h₂₆[4] +// 2: h₂₆[1]->h₂₆[2] h₂₆[4]->h₂₆[0] +// 3: h₂₆[0]->h₂₆[1] h₂₆[2]->h₂₆[3] +// 4: h₂₆[3]->h₂₆[4] +// +// The result is that all of the limbs are limited to 26-bits +// except for h₂₆[1] and h₂₆[4] which are limited to 27-bits. +// +// Note that although each limb is aligned at 26-bit intervals +// they may contain values that exceed 2²⁶ - 1, hence the need +// to carry the excess bits in each limb. +#define REDUCE(h0, h1, h2, h3, h4) \ + VESRLG $26, h0, T_0 \ + VESRLG $26, h3, T_1 \ + VN MOD26, h0, h0 \ + VN MOD26, h3, h3 \ + VAG T_0, h1, h1 \ + VAG T_1, h4, h4 \ + VESRLG $26, h1, T_2 \ + VESRLG $26, h4, T_3 \ + VN MOD26, h1, h1 \ + VN MOD26, h4, h4 \ + VESLG $2, T_3, T_4 \ + VAG T_3, T_4, T_4 \ + VAG T_2, h2, h2 \ + VAG T_4, h0, h0 \ + VESRLG $26, h2, T_0 \ + VESRLG $26, h0, T_1 \ + VN MOD26, h2, h2 \ + VN MOD26, h0, h0 \ + VAG T_0, h3, h3 \ + VAG T_1, h1, h1 \ + VESRLG $26, h3, T_2 \ + VN MOD26, h3, h3 \ + VAG T_2, h4, h4 + +// EXPAND splits the 128-bit little-endian values in0 and in1 +// into 26-bit big-endian limbs and places the results into +// the first and second lane of d₂₆[0:4] respectively. +// +// The EX0, EX1 and EX2 constants are arrays of byte indices +// for permutation. The permutation both reverses the bytes +// in the input and ensures the bytes are copied into the +// destination limb ready to be shifted into their final +// position. +#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \ + VPERM in0, in1, EX0, d0 \ + VPERM in0, in1, EX1, d2 \ + VPERM in0, in1, EX2, d4 \ + VESRLG $26, d0, d1 \ + VESRLG $30, d2, d3 \ + VESRLG $4, d2, d2 \ + VN MOD26, d0, d0 \ // [in0₂₆[0], in1₂₆[0]] + VN MOD26, d3, d3 \ // [in0₂₆[3], in1₂₆[3]] + VN MOD26, d1, d1 \ // [in0₂₆[1], in1₂₆[1]] + VN MOD24, d4, d4 \ // [in0₂₆[4], in1₂₆[4]] + VN MOD26, d2, d2 // [in0₂₆[2], in1₂₆[2]] + +// func updateVX(state *macState, msg []byte) +TEXT ·updateVX(SB), NOSPLIT, $0 + MOVD state+0(FP), R1 + LMG msg+8(FP), R2, R3 // R2=msg_base, R3=msg_len + + // load EX0, EX1 and EX2 + MOVD $·constants<>(SB), R5 + VLM (R5), EX0, EX2 + + // generate masks + VGMG $(64-24), $63, MOD24 // [0x00ffffff, 0x00ffffff] + VGMG $(64-26), $63, MOD26 // [0x03ffffff, 0x03ffffff] + + // load h (accumulator) and r (key) from state + VZERO T_1 // [0, 0] + VL 0(R1), T_0 // [h₆₄[0], h₆₄[1]] + VLEG $0, 16(R1), T_1 // [h₆₄[2], 0] + VL 24(R1), T_2 // [r₆₄[0], r₆₄[1]] + VPDI $0, T_0, T_2, T_3 // [h₆₄[0], r₆₄[0]] + VPDI $5, T_0, T_2, T_4 // [h₆₄[1], r₆₄[1]] + + // unpack h and r into 26-bit limbs + // note: h₆₄[2] may have the low 3 bits set, so h₂₆[4] is a 27-bit value + VN MOD26, T_3, H_0 // [h₂₆[0], r₂₆[0]] + VZERO H_1 // [0, 0] + VZERO H_3 // [0, 0] + VGMG $(64-12-14), $(63-12), T_0 // [0x03fff000, 0x03fff000] - 26-bit mask with low 12 bits masked out + VESLG $24, T_1, T_1 // [h₆₄[2]<<24, 0] + VERIMG $-26&63, T_3, MOD26, H_1 // [h₂₆[1], r₂₆[1]] + VESRLG $+52&63, T_3, H_2 // [h₂₆[2], r₂₆[2]] - low 12 bits only + VERIMG $-14&63, T_4, MOD26, H_3 // [h₂₆[1], r₂₆[1]] + VESRLG $40, T_4, H_4 // [h₂₆[4], r₂₆[4]] - low 24 bits only + VERIMG $+12&63, T_4, T_0, H_2 // [h₂₆[2], r₂₆[2]] - complete + VO T_1, H_4, H_4 // [h₂₆[4], r₂₆[4]] - complete + + // replicate r across all 4 vector elements + VREPF $3, H_0, R_0 // [r₂₆[0], r₂₆[0], r₂₆[0], r₂₆[0]] + VREPF $3, H_1, R_1 // [r₂₆[1], r₂₆[1], r₂₆[1], r₂₆[1]] + VREPF $3, H_2, R_2 // [r₂₆[2], r₂₆[2], r₂₆[2], r₂₆[2]] + VREPF $3, H_3, R_3 // [r₂₆[3], r₂₆[3], r₂₆[3], r₂₆[3]] + VREPF $3, H_4, R_4 // [r₂₆[4], r₂₆[4], r₂₆[4], r₂₆[4]] + + // zero out lane 1 of h + VLEIG $1, $0, H_0 // [h₂₆[0], 0] + VLEIG $1, $0, H_1 // [h₂₆[1], 0] + VLEIG $1, $0, H_2 // [h₂₆[2], 0] + VLEIG $1, $0, H_3 // [h₂₆[3], 0] + VLEIG $1, $0, H_4 // [h₂₆[4], 0] + + // calculate 5r (ignore least significant limb) + VREPIF $5, T_0 + VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r₂₆[1], 5r₂₆[1], 5r₂₆[1]] + VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r₂₆[2], 5r₂₆[2], 5r₂₆[2]] + VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r₂₆[3], 5r₂₆[3], 5r₂₆[3]] + VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r₂₆[4], 5r₂₆[4], 5r₂₆[4]] + + // skip r² calculation if we are only calculating one block + CMPBLE R3, $16, skip + + // calculate r² + MULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, M_0, M_1, M_2, M_3, M_4) + REDUCE(M_0, M_1, M_2, M_3, M_4) + VGBM $0x0f0f, T_0 + VERIMG $0, M_0, T_0, R_0 // [r₂₆[0], r²₂₆[0], r₂₆[0], r²₂₆[0]] + VERIMG $0, M_1, T_0, R_1 // [r₂₆[1], r²₂₆[1], r₂₆[1], r²₂₆[1]] + VERIMG $0, M_2, T_0, R_2 // [r₂₆[2], r²₂₆[2], r₂₆[2], r²₂₆[2]] + VERIMG $0, M_3, T_0, R_3 // [r₂₆[3], r²₂₆[3], r₂₆[3], r²₂₆[3]] + VERIMG $0, M_4, T_0, R_4 // [r₂₆[4], r²₂₆[4], r₂₆[4], r²₂₆[4]] + + // calculate 5r² (ignore least significant limb) + VREPIF $5, T_0 + VMLF T_0, R_1, R5_1 // [5r₂₆[1], 5r²₂₆[1], 5r₂₆[1], 5r²₂₆[1]] + VMLF T_0, R_2, R5_2 // [5r₂₆[2], 5r²₂₆[2], 5r₂₆[2], 5r²₂₆[2]] + VMLF T_0, R_3, R5_3 // [5r₂₆[3], 5r²₂₆[3], 5r₂₆[3], 5r²₂₆[3]] + VMLF T_0, R_4, R5_4 // [5r₂₆[4], 5r²₂₆[4], 5r₂₆[4], 5r²₂₆[4]] + +loop: + CMPBLE R3, $32, b2 // 2 or fewer blocks remaining, need to change key coefficients + + // load next 2 blocks from message + VLM (R2), T_0, T_1 + + // update message slice + SUB $32, R3 + MOVD $32(R2), R2 + + // unpack message blocks into 26-bit big-endian limbs + EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) + + // add 2¹²⁸ to each message block value + VLEIB $4, $1, M_4 + VLEIB $12, $1, M_4 + +multiply: + // accumulate the incoming message + VAG H_0, M_0, M_0 + VAG H_3, M_3, M_3 + VAG H_1, M_1, M_1 + VAG H_4, M_4, M_4 + VAG H_2, M_2, M_2 + + // multiply the accumulator by the key coefficient + MULTIPLY(M_0, M_1, M_2, M_3, M_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4) + + // carry and partially reduce the partial products + REDUCE(H_0, H_1, H_2, H_3, H_4) + + CMPBNE R3, $0, loop + +finish: + // sum lane 0 and lane 1 and put the result in lane 1 + VZERO T_0 + VSUMQG H_0, T_0, H_0 + VSUMQG H_3, T_0, H_3 + VSUMQG H_1, T_0, H_1 + VSUMQG H_4, T_0, H_4 + VSUMQG H_2, T_0, H_2 + + // reduce again after summation + // TODO(mundaym): there might be a more efficient way to do this + // now that we only have 1 active lane. For example, we could + // simultaneously pack the values as we reduce them. + REDUCE(H_0, H_1, H_2, H_3, H_4) + + // carry h[1] through to h[4] so that only h[4] can exceed 2²⁶ - 1 + // TODO(mundaym): in testing this final carry was unnecessary. + // Needs a proof before it can be removed though. + VESRLG $26, H_1, T_1 + VN MOD26, H_1, H_1 + VAQ T_1, H_2, H_2 + VESRLG $26, H_2, T_2 + VN MOD26, H_2, H_2 + VAQ T_2, H_3, H_3 + VESRLG $26, H_3, T_3 + VN MOD26, H_3, H_3 + VAQ T_3, H_4, H_4 + + // h is now < 2(2¹³⁰ - 5) + // Pack each lane in h₂₆[0:4] into h₁₂₈[0:1]. + VESLG $26, H_1, H_1 + VESLG $26, H_3, H_3 + VO H_0, H_1, H_0 + VO H_2, H_3, H_2 + VESLG $4, H_2, H_2 + VLEIB $7, $48, H_1 + VSLB H_1, H_2, H_2 + VO H_0, H_2, H_0 + VLEIB $7, $104, H_1 + VSLB H_1, H_4, H_3 + VO H_3, H_0, H_0 + VLEIB $7, $24, H_1 + VSRLB H_1, H_4, H_1 + + // update state + VSTEG $1, H_0, 0(R1) + VSTEG $0, H_0, 8(R1) + VSTEG $1, H_1, 16(R1) + RET + +b2: // 2 or fewer blocks remaining + CMPBLE R3, $16, b1 + + // Load the 2 remaining blocks (17-32 bytes remaining). + MOVD $-17(R3), R0 // index of final byte to load modulo 16 + VL (R2), T_0 // load full 16 byte block + VLL R0, 16(R2), T_1 // load final (possibly partial) block and pad with zeros to 16 bytes + + // The Poly1305 algorithm requires that a 1 bit be appended to + // each message block. If the final block is less than 16 bytes + // long then it is easiest to insert the 1 before the message + // block is split into 26-bit limbs. If, on the other hand, the + // final message block is 16 bytes long then we append the 1 bit + // after expansion as normal. + MOVBZ $1, R0 + MOVD $-16(R3), R3 // index of byte in last block to insert 1 at (could be 16) + CMPBEQ R3, $16, 2(PC) // skip the insertion if the final block is 16 bytes long + VLVGB R3, R0, T_1 // insert 1 into the byte at index R3 + + // Split both blocks into 26-bit limbs in the appropriate lanes. + EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) + + // Append a 1 byte to the end of the second to last block. + VLEIB $4, $1, M_4 + + // Append a 1 byte to the end of the last block only if it is a + // full 16 byte block. + CMPBNE R3, $16, 2(PC) + VLEIB $12, $1, M_4 + + // Finally, set up the coefficients for the final multiplication. + // We have previously saved r and 5r in the 32-bit even indexes + // of the R_[0-4] and R5_[1-4] coefficient registers. + // + // We want lane 0 to be multiplied by r² so that can be kept the + // same. We want lane 1 to be multiplied by r so we need to move + // the saved r value into the 32-bit odd index in lane 1 by + // rotating the 64-bit lane by 32. + VGBM $0x00ff, T_0 // [0, 0xffffffffffffffff] - mask lane 1 only + VERIMG $32, R_0, T_0, R_0 // [_, r²₂₆[0], _, r₂₆[0]] + VERIMG $32, R_1, T_0, R_1 // [_, r²₂₆[1], _, r₂₆[1]] + VERIMG $32, R_2, T_0, R_2 // [_, r²₂₆[2], _, r₂₆[2]] + VERIMG $32, R_3, T_0, R_3 // [_, r²₂₆[3], _, r₂₆[3]] + VERIMG $32, R_4, T_0, R_4 // [_, r²₂₆[4], _, r₂₆[4]] + VERIMG $32, R5_1, T_0, R5_1 // [_, 5r²₂₆[1], _, 5r₂₆[1]] + VERIMG $32, R5_2, T_0, R5_2 // [_, 5r²₂₆[2], _, 5r₂₆[2]] + VERIMG $32, R5_3, T_0, R5_3 // [_, 5r²₂₆[3], _, 5r₂₆[3]] + VERIMG $32, R5_4, T_0, R5_4 // [_, 5r²₂₆[4], _, 5r₂₆[4]] + + MOVD $0, R3 + BR multiply + +skip: + CMPBEQ R3, $0, finish + +b1: // 1 block remaining + + // Load the final block (1-16 bytes). This will be placed into + // lane 0. + MOVD $-1(R3), R0 + VLL R0, (R2), T_0 // pad to 16 bytes with zeros + + // The Poly1305 algorithm requires that a 1 bit be appended to + // each message block. If the final block is less than 16 bytes + // long then it is easiest to insert the 1 before the message + // block is split into 26-bit limbs. If, on the other hand, the + // final message block is 16 bytes long then we append the 1 bit + // after expansion as normal. + MOVBZ $1, R0 + CMPBEQ R3, $16, 2(PC) + VLVGB R3, R0, T_0 + + // Set the message block in lane 1 to the value 0 so that it + // can be accumulated without affecting the final result. + VZERO T_1 + + // Split the final message block into 26-bit limbs in lane 0. + // Lane 1 will be contain 0. + EXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4) + + // Append a 1 byte to the end of the last block only if it is a + // full 16 byte block. + CMPBNE R3, $16, 2(PC) + VLEIB $4, $1, M_4 + + // We have previously saved r and 5r in the 32-bit even indexes + // of the R_[0-4] and R5_[1-4] coefficient registers. + // + // We want lane 0 to be multiplied by r so we need to move the + // saved r value into the 32-bit odd index in lane 0. We want + // lane 1 to be set to the value 1. This makes multiplication + // a no-op. We do this by setting lane 1 in every register to 0 + // and then just setting the 32-bit index 3 in R_0 to 1. + VZERO T_0 + MOVD $0, R0 + MOVD $0x10111213, R12 + VLVGP R12, R0, T_1 // [_, 0x10111213, _, 0x00000000] + VPERM T_0, R_0, T_1, R_0 // [_, r₂₆[0], _, 0] + VPERM T_0, R_1, T_1, R_1 // [_, r₂₆[1], _, 0] + VPERM T_0, R_2, T_1, R_2 // [_, r₂₆[2], _, 0] + VPERM T_0, R_3, T_1, R_3 // [_, r₂₆[3], _, 0] + VPERM T_0, R_4, T_1, R_4 // [_, r₂₆[4], _, 0] + VPERM T_0, R5_1, T_1, R5_1 // [_, 5r₂₆[1], _, 0] + VPERM T_0, R5_2, T_1, R5_2 // [_, 5r₂₆[2], _, 0] + VPERM T_0, R5_3, T_1, R5_3 // [_, 5r₂₆[3], _, 0] + VPERM T_0, R5_4, T_1, R5_4 // [_, 5r₂₆[4], _, 0] + + // Set the value of lane 1 to be 1. + VLEIF $3, $1, R_0 // [_, r₂₆[0], _, 1] + + MOVD $0, R3 + BR multiply diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/buffer.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/buffer.go new file mode 100644 index 0000000..1ab07d0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/buffer.go @@ -0,0 +1,97 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "io" + "sync" +) + +// buffer provides a linked list buffer for data exchange +// between producer and consumer. Theoretically the buffer is +// of unlimited capacity as it does no allocation of its own. +type buffer struct { + // protects concurrent access to head, tail and closed + *sync.Cond + + head *element // the buffer that will be read first + tail *element // the buffer that will be read last + + closed bool +} + +// An element represents a single link in a linked list. +type element struct { + buf []byte + next *element +} + +// newBuffer returns an empty buffer that is not closed. +func newBuffer() *buffer { + e := new(element) + b := &buffer{ + Cond: newCond(), + head: e, + tail: e, + } + return b +} + +// write makes buf available for Read to receive. +// buf must not be modified after the call to write. +func (b *buffer) write(buf []byte) { + b.Cond.L.Lock() + e := &element{buf: buf} + b.tail.next = e + b.tail = e + b.Cond.Signal() + b.Cond.L.Unlock() +} + +// eof closes the buffer. Reads from the buffer once all +// the data has been consumed will receive io.EOF. +func (b *buffer) eof() { + b.Cond.L.Lock() + b.closed = true + b.Cond.Signal() + b.Cond.L.Unlock() +} + +// Read reads data from the internal buffer in buf. Reads will block +// if no data is available, or until the buffer is closed. +func (b *buffer) Read(buf []byte) (n int, err error) { + b.Cond.L.Lock() + defer b.Cond.L.Unlock() + + for len(buf) > 0 { + // if there is data in b.head, copy it + if len(b.head.buf) > 0 { + r := copy(buf, b.head.buf) + buf, b.head.buf = buf[r:], b.head.buf[r:] + n += r + continue + } + // if there is a next buffer, make it the head + if len(b.head.buf) == 0 && b.head != b.tail { + b.head = b.head.next + continue + } + + // if at least one byte has been copied, return + if n > 0 { + break + } + + // if nothing was read, and there is nothing outstanding + // check to see if the buffer is closed. + if b.closed { + err = io.EOF + break + } + // out of buffers, wait for producer + b.Cond.Wait() + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/certs.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/certs.go new file mode 100644 index 0000000..139fa31 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/certs.go @@ -0,0 +1,624 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "io" + "net" + "sort" + "time" +) + +// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear +// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms. +// Unlike key algorithm names, these are not passed to AlgorithmSigner nor +// returned by MultiAlgorithmSigner and don't appear in the Signature.Format +// field. +const ( + CertAlgoRSAv01 = "ssh-rsa-cert-v01@openssh.com" + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + CertAlgoDSAv01 = InsecureCertAlgoDSAv01 + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + InsecureCertAlgoDSAv01 = "ssh-dss-cert-v01@openssh.com" + CertAlgoECDSA256v01 = "ecdsa-sha2-nistp256-cert-v01@openssh.com" + CertAlgoECDSA384v01 = "ecdsa-sha2-nistp384-cert-v01@openssh.com" + CertAlgoECDSA521v01 = "ecdsa-sha2-nistp521-cert-v01@openssh.com" + CertAlgoSKECDSA256v01 = "sk-ecdsa-sha2-nistp256-cert-v01@openssh.com" + CertAlgoED25519v01 = "ssh-ed25519-cert-v01@openssh.com" + CertAlgoSKED25519v01 = "sk-ssh-ed25519-cert-v01@openssh.com" + + // CertAlgoRSASHA256v01 and CertAlgoRSASHA512v01 can't appear as a + // Certificate.Type (or PublicKey.Type), but only in + // ClientConfig.HostKeyAlgorithms. + CertAlgoRSASHA256v01 = "rsa-sha2-256-cert-v01@openssh.com" + CertAlgoRSASHA512v01 = "rsa-sha2-512-cert-v01@openssh.com" +) + +const ( + // Deprecated: use CertAlgoRSAv01. + CertSigAlgoRSAv01 = CertAlgoRSAv01 + // Deprecated: use CertAlgoRSASHA256v01. + CertSigAlgoRSASHA2256v01 = CertAlgoRSASHA256v01 + // Deprecated: use CertAlgoRSASHA512v01. + CertSigAlgoRSASHA2512v01 = CertAlgoRSASHA512v01 +) + +// Certificate types distinguish between host and user +// certificates. The values can be set in the CertType field of +// Certificate. +const ( + UserCert = 1 + HostCert = 2 +) + +// Signature represents a cryptographic signature. +type Signature struct { + Format string + Blob []byte + Rest []byte `ssh:"rest"` +} + +// CertTimeInfinity can be used for OpenSSHCertV01.ValidBefore to indicate that +// a certificate does not expire. +const CertTimeInfinity = 1<<64 - 1 + +// An Certificate represents an OpenSSH certificate as defined in +// [PROTOCOL.certkeys]?rev=1.8. The Certificate type implements the +// PublicKey interface, so it can be unmarshaled using +// ParsePublicKey. +type Certificate struct { + Nonce []byte + Key PublicKey + Serial uint64 + CertType uint32 + KeyId string + ValidPrincipals []string + ValidAfter uint64 + ValidBefore uint64 + Permissions + Reserved []byte + SignatureKey PublicKey + Signature *Signature +} + +// genericCertData holds the key-independent part of the certificate data. +// Overall, certificates contain an nonce, public key fields and +// key-independent fields. +type genericCertData struct { + Serial uint64 + CertType uint32 + KeyId string + ValidPrincipals []byte + ValidAfter uint64 + ValidBefore uint64 + CriticalOptions []byte + Extensions []byte + Reserved []byte + SignatureKey []byte + Signature []byte +} + +func marshalStringList(namelist []string) []byte { + var to []byte + for _, name := range namelist { + s := struct{ N string }{name} + to = append(to, Marshal(&s)...) + } + return to +} + +type optionsTuple struct { + Key string + Value []byte +} + +type optionsTupleValue struct { + Value string +} + +// serialize a map of critical options or extensions +// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, +// we need two length prefixes for a non-empty string value +func marshalTuples(tups map[string]string) []byte { + keys := make([]string, 0, len(tups)) + for key := range tups { + keys = append(keys, key) + } + sort.Strings(keys) + + var ret []byte + for _, key := range keys { + s := optionsTuple{Key: key} + if value := tups[key]; len(value) > 0 { + s.Value = Marshal(&optionsTupleValue{value}) + } + ret = append(ret, Marshal(&s)...) + } + return ret +} + +// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation, +// we need two length prefixes for a non-empty option value +func parseTuples(in []byte) (map[string]string, error) { + tups := map[string]string{} + var lastKey string + var haveLastKey bool + + for len(in) > 0 { + var key, val, extra []byte + var ok bool + + if key, in, ok = parseString(in); !ok { + return nil, errShortRead + } + keyStr := string(key) + // according to [PROTOCOL.certkeys], the names must be in + // lexical order. + if haveLastKey && keyStr <= lastKey { + return nil, fmt.Errorf("ssh: certificate options are not in lexical order") + } + lastKey, haveLastKey = keyStr, true + // the next field is a data field, which if non-empty has a string embedded + if val, in, ok = parseString(in); !ok { + return nil, errShortRead + } + if len(val) > 0 { + val, extra, ok = parseString(val) + if !ok { + return nil, errShortRead + } + if len(extra) > 0 { + return nil, fmt.Errorf("ssh: unexpected trailing data after certificate option value") + } + tups[keyStr] = string(val) + } else { + tups[keyStr] = "" + } + } + return tups, nil +} + +func parseCert(in []byte, privAlgo string) (*Certificate, error) { + nonce, rest, ok := parseString(in) + if !ok { + return nil, errShortRead + } + + key, rest, err := parsePubKey(rest, privAlgo) + if err != nil { + return nil, err + } + + var g genericCertData + if err := Unmarshal(rest, &g); err != nil { + return nil, err + } + + c := &Certificate{ + Nonce: nonce, + Key: key, + Serial: g.Serial, + CertType: g.CertType, + KeyId: g.KeyId, + ValidAfter: g.ValidAfter, + ValidBefore: g.ValidBefore, + } + + for principals := g.ValidPrincipals; len(principals) > 0; { + principal, rest, ok := parseString(principals) + if !ok { + return nil, errShortRead + } + c.ValidPrincipals = append(c.ValidPrincipals, string(principal)) + principals = rest + } + + c.CriticalOptions, err = parseTuples(g.CriticalOptions) + if err != nil { + return nil, err + } + c.Extensions, err = parseTuples(g.Extensions) + if err != nil { + return nil, err + } + c.Reserved = g.Reserved + k, err := ParsePublicKey(g.SignatureKey) + if err != nil { + return nil, err + } + // The Type() function is intended to return only certificate key types, but + // we use certKeyAlgoNames anyway for safety, to match [Certificate.Type]. + if _, ok := certKeyAlgoNames[k.Type()]; ok { + return nil, fmt.Errorf("ssh: the signature key type %q is invalid for certificates", k.Type()) + } + c.SignatureKey = k + c.Signature, rest, ok = parseSignatureBody(g.Signature) + if !ok || len(rest) > 0 { + return nil, errors.New("ssh: signature parse error") + } + + return c, nil +} + +type openSSHCertSigner struct { + pub *Certificate + signer Signer +} + +type algorithmOpenSSHCertSigner struct { + *openSSHCertSigner + algorithmSigner AlgorithmSigner +} + +// NewCertSigner returns a Signer that signs with the given Certificate, whose +// private key is held by signer. It returns an error if the public key in cert +// doesn't match the key used by signer. +func NewCertSigner(cert *Certificate, signer Signer) (Signer, error) { + if !bytes.Equal(cert.Key.Marshal(), signer.PublicKey().Marshal()) { + return nil, errors.New("ssh: signer and cert have different public key") + } + + switch s := signer.(type) { + case MultiAlgorithmSigner: + return &multiAlgorithmSigner{ + AlgorithmSigner: &algorithmOpenSSHCertSigner{ + &openSSHCertSigner{cert, signer}, s}, + supportedAlgorithms: s.Algorithms(), + }, nil + case AlgorithmSigner: + return &algorithmOpenSSHCertSigner{ + &openSSHCertSigner{cert, signer}, s}, nil + default: + return &openSSHCertSigner{cert, signer}, nil + } +} + +func (s *openSSHCertSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { + return s.signer.Sign(rand, data) +} + +func (s *openSSHCertSigner) PublicKey() PublicKey { + return s.pub +} + +func (s *algorithmOpenSSHCertSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + return s.algorithmSigner.SignWithAlgorithm(rand, data, algorithm) +} + +const sourceAddressCriticalOption = "source-address" + +// CertChecker does the work of verifying a certificate. Its methods +// can be plugged into ClientConfig.HostKeyCallback and +// ServerConfig.PublicKeyCallback. For the CertChecker to work, +// minimally, the IsAuthority callback should be set. +type CertChecker struct { + // SupportedCriticalOptions lists the CriticalOptions that the + // server application layer understands. These are only used + // for user certificates. + SupportedCriticalOptions []string + + // IsUserAuthority should return true if the key is recognized as an + // authority for user certificate. This must be set if this CertChecker + // will be checking user certificates. + IsUserAuthority func(auth PublicKey) bool + + // IsHostAuthority should report whether the key is recognized as + // an authority for this host. This must be set if this CertChecker + // will be checking host certificates. + IsHostAuthority func(auth PublicKey, address string) bool + + // Clock is used for verifying time stamps. If nil, time.Now + // is used. + Clock func() time.Time + + // UserKeyFallback is called when CertChecker.Authenticate encounters a + // public key that is not a certificate. It must implement validation + // of user keys or else, if nil, all such keys are rejected. + UserKeyFallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) + + // HostKeyFallback is called when CertChecker.CheckHostKey encounters a + // public key that is not a certificate. It must implement host key + // validation or else, if nil, all such keys are rejected. + HostKeyFallback HostKeyCallback + + // IsRevoked is called for each certificate so that revocation checking + // can be implemented. It should return true if the given certificate + // is revoked and false otherwise. If nil, no certificates are + // considered to have been revoked. + IsRevoked func(cert *Certificate) bool +} + +// CheckHostKey checks a host key certificate. This method can be +// plugged into ClientConfig.HostKeyCallback. +func (c *CertChecker) CheckHostKey(addr string, remote net.Addr, key PublicKey) error { + cert, ok := key.(*Certificate) + if !ok { + if c.HostKeyFallback != nil { + return c.HostKeyFallback(addr, remote, key) + } + return errors.New("ssh: non-certificate host key") + } + if cert.CertType != HostCert { + return fmt.Errorf("ssh: certificate presented as a host key has type %d", cert.CertType) + } + if !c.IsHostAuthority(cert.SignatureKey, addr) { + return fmt.Errorf("ssh: no authorities for hostname: %v", addr) + } + + hostname, _, err := net.SplitHostPort(addr) + if err != nil { + return err + } + + // Pass hostname only as principal for host certificates (consistent with OpenSSH) + return c.CheckCert(hostname, cert) +} + +// Authenticate checks a user certificate. Authenticate can be used as +// a value for ServerConfig.PublicKeyCallback. +func (c *CertChecker) Authenticate(conn ConnMetadata, pubKey PublicKey) (*Permissions, error) { + cert, ok := pubKey.(*Certificate) + if !ok { + if c.UserKeyFallback != nil { + return c.UserKeyFallback(conn, pubKey) + } + return nil, errors.New("ssh: normal key pairs not accepted") + } + + if cert.CertType != UserCert { + return nil, fmt.Errorf("ssh: cert has type %d", cert.CertType) + } + if !c.IsUserAuthority(cert.SignatureKey) { + return nil, fmt.Errorf("ssh: certificate signed by unrecognized authority") + } + + if err := c.CheckCert(conn.User(), cert); err != nil { + return nil, err + } + + return &cert.Permissions, nil +} + +// CheckCert checks CriticalOptions, ValidPrincipals, revocation, timestamp and +// the signature of the certificate. +func (c *CertChecker) CheckCert(principal string, cert *Certificate) error { + if c.IsRevoked != nil && c.IsRevoked(cert) { + return fmt.Errorf("ssh: certificate serial %d revoked", cert.Serial) + } + + for opt := range cert.CriticalOptions { + // sourceAddressCriticalOption will be enforced by + // serverAuthenticate + if opt == sourceAddressCriticalOption { + continue + } + + found := false + for _, supp := range c.SupportedCriticalOptions { + if supp == opt { + found = true + break + } + } + if !found { + return fmt.Errorf("ssh: unsupported critical option %q in certificate", opt) + } + } + + if len(cert.ValidPrincipals) > 0 { + // By default, certs are valid for all users/hosts. + found := false + for _, p := range cert.ValidPrincipals { + if p == principal { + found = true + break + } + } + if !found { + return fmt.Errorf("ssh: principal %q not in the set of valid principals for given certificate: %q", principal, cert.ValidPrincipals) + } + } + + clock := c.Clock + if clock == nil { + clock = time.Now + } + + unixNow := clock().Unix() + if after := int64(cert.ValidAfter); after < 0 || unixNow < int64(cert.ValidAfter) { + return fmt.Errorf("ssh: cert is not yet valid") + } + if before := int64(cert.ValidBefore); cert.ValidBefore != uint64(CertTimeInfinity) && (unixNow >= before || before < 0) { + return fmt.Errorf("ssh: cert has expired") + } + if err := cert.SignatureKey.Verify(cert.bytesForSigning(), cert.Signature); err != nil { + return fmt.Errorf("ssh: certificate signature does not verify") + } + + return nil +} + +// SignCert signs the certificate with an authority, setting the Nonce, +// SignatureKey, and Signature fields. If the authority implements the +// MultiAlgorithmSigner interface the first algorithm in the list is used. This +// is useful if you want to sign with a specific algorithm. As specified in +// [SSH-CERTS], Section 2.1.1, authority can't be a [Certificate]. +func (c *Certificate) SignCert(rand io.Reader, authority Signer) error { + c.Nonce = make([]byte, 32) + if _, err := io.ReadFull(rand, c.Nonce); err != nil { + return err + } + // The Type() function is intended to return only certificate key types, but + // we use certKeyAlgoNames anyway for safety, to match [Certificate.Type]. + if _, ok := certKeyAlgoNames[authority.PublicKey().Type()]; ok { + return fmt.Errorf("ssh: certificates cannot be used as authority (public key type %q)", + authority.PublicKey().Type()) + } + c.SignatureKey = authority.PublicKey() + + if v, ok := authority.(MultiAlgorithmSigner); ok { + if len(v.Algorithms()) == 0 { + return errors.New("the provided authority has no signature algorithm") + } + // Use the first algorithm in the list. + sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), v.Algorithms()[0]) + if err != nil { + return err + } + c.Signature = sig + return nil + } else if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA { + // Default to KeyAlgoRSASHA512 for ssh-rsa signers. + // TODO: consider using KeyAlgoRSASHA256 as default. + sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512) + if err != nil { + return err + } + c.Signature = sig + return nil + } + + sig, err := authority.Sign(rand, c.bytesForSigning()) + if err != nil { + return err + } + c.Signature = sig + return nil +} + +// certKeyAlgoNames is a mapping from known certificate algorithm names to the +// corresponding public key signature algorithm. +// +// This map must be kept in sync with the one in agent/client.go. +var certKeyAlgoNames = map[string]string{ + CertAlgoRSAv01: KeyAlgoRSA, + CertAlgoRSASHA256v01: KeyAlgoRSASHA256, + CertAlgoRSASHA512v01: KeyAlgoRSASHA512, + InsecureCertAlgoDSAv01: InsecureKeyAlgoDSA, + CertAlgoECDSA256v01: KeyAlgoECDSA256, + CertAlgoECDSA384v01: KeyAlgoECDSA384, + CertAlgoECDSA521v01: KeyAlgoECDSA521, + CertAlgoSKECDSA256v01: KeyAlgoSKECDSA256, + CertAlgoED25519v01: KeyAlgoED25519, + CertAlgoSKED25519v01: KeyAlgoSKED25519, +} + +// underlyingAlgo returns the signature algorithm associated with algo (which is +// an advertised or negotiated public key or host key algorithm). These are +// usually the same, except for certificate algorithms. +func underlyingAlgo(algo string) string { + if a, ok := certKeyAlgoNames[algo]; ok { + return a + } + return algo +} + +// certificateAlgo returns the certificate algorithms that uses the provided +// underlying signature algorithm. +func certificateAlgo(algo string) (certAlgo string, ok bool) { + for certName, algoName := range certKeyAlgoNames { + if algoName == algo { + return certName, true + } + } + return "", false +} + +func (cert *Certificate) bytesForSigning() []byte { + c2 := *cert + c2.Signature = nil + out := c2.Marshal() + // Drop trailing signature length. + return out[:len(out)-4] +} + +// Marshal serializes c into OpenSSH's wire format. It is part of the +// PublicKey interface. +func (c *Certificate) Marshal() []byte { + generic := genericCertData{ + Serial: c.Serial, + CertType: c.CertType, + KeyId: c.KeyId, + ValidPrincipals: marshalStringList(c.ValidPrincipals), + ValidAfter: uint64(c.ValidAfter), + ValidBefore: uint64(c.ValidBefore), + CriticalOptions: marshalTuples(c.CriticalOptions), + Extensions: marshalTuples(c.Extensions), + Reserved: c.Reserved, + SignatureKey: c.SignatureKey.Marshal(), + } + if c.Signature != nil { + generic.Signature = Marshal(c.Signature) + } + genericBytes := Marshal(&generic) + keyBytes := c.Key.Marshal() + _, keyBytes, _ = parseString(keyBytes) + prefix := Marshal(&struct { + Name string + Nonce []byte + Key []byte `ssh:"rest"` + }{c.Type(), c.Nonce, keyBytes}) + + result := make([]byte, 0, len(prefix)+len(genericBytes)) + result = append(result, prefix...) + result = append(result, genericBytes...) + return result +} + +// Type returns the certificate algorithm name. It is part of the PublicKey interface. +func (c *Certificate) Type() string { + certName, ok := certificateAlgo(c.Key.Type()) + if !ok { + panic("unknown certificate type for key type " + c.Key.Type()) + } + return certName +} + +// Verify verifies a signature against the certificate's public +// key. It is part of the PublicKey interface. +func (c *Certificate) Verify(data []byte, sig *Signature) error { + return c.Key.Verify(data, sig) +} + +func parseSignatureBody(in []byte) (out *Signature, rest []byte, ok bool) { + format, in, ok := parseString(in) + if !ok { + return + } + + out = &Signature{ + Format: string(format), + } + + if out.Blob, in, ok = parseString(in); !ok { + return + } + + switch out.Format { + case KeyAlgoSKECDSA256, CertAlgoSKECDSA256v01, KeyAlgoSKED25519, CertAlgoSKED25519v01: + out.Rest = in + return out, nil, ok + } + + return out, in, ok +} + +func parseSignature(in []byte) (out *Signature, rest []byte, ok bool) { + sigBytes, rest, ok := parseString(in) + if !ok { + return + } + + out, trailing, ok := parseSignatureBody(sigBytes) + if !ok || len(trailing) > 0 { + return nil, nil, false + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/channel.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/channel.go new file mode 100644 index 0000000..cc0bb7a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/channel.go @@ -0,0 +1,645 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/binary" + "errors" + "fmt" + "io" + "log" + "sync" +) + +const ( + minPacketLength = 9 + // channelMaxPacket contains the maximum number of bytes that will be + // sent in a single packet. As per RFC 4253, section 6.1, 32k is also + // the minimum. + channelMaxPacket = 1 << 15 + // We follow OpenSSH here. + channelWindowSize = 64 * channelMaxPacket +) + +// NewChannel represents an incoming request to a channel. It must either be +// accepted for use by calling Accept, or rejected by calling Reject. +type NewChannel interface { + // Accept accepts the channel creation request. It returns the Channel + // and a Go channel containing SSH requests. The Go channel must be + // serviced otherwise the Channel will hang. + Accept() (Channel, <-chan *Request, error) + + // Reject rejects the channel creation request. After calling + // this, no other methods on the Channel may be called. + Reject(reason RejectionReason, message string) error + + // ChannelType returns the type of the channel, as supplied by the + // client. + ChannelType() string + + // ExtraData returns the arbitrary payload for this channel, as supplied + // by the client. This data is specific to the channel type. + ExtraData() []byte +} + +// A Channel is an ordered, reliable, flow-controlled, duplex stream +// that is multiplexed over an SSH connection. +type Channel interface { + // Read reads up to len(data) bytes from the channel. + Read(data []byte) (int, error) + + // Write writes len(data) bytes to the channel. + Write(data []byte) (int, error) + + // Close signals end of channel use. No data may be sent after this + // call. + Close() error + + // CloseWrite signals the end of sending in-band + // data. Requests may still be sent, and the other side may + // still send data + CloseWrite() error + + // SendRequest sends a channel request. If wantReply is true, + // it will wait for a reply and return the result as a + // boolean, otherwise the return value will be false. Channel + // requests are out-of-band messages so they may be sent even + // if the data stream is closed or blocked by flow control. + // If the channel is closed before a reply is returned, io.EOF + // is returned. + SendRequest(name string, wantReply bool, payload []byte) (bool, error) + + // Stderr returns an io.ReadWriter that writes to this channel + // with the extended data type set to stderr. Stderr may + // safely be read and written from a different goroutine than + // Read and Write respectively. + Stderr() io.ReadWriter +} + +// Request is a request sent outside of the normal stream of +// data. Requests can either be specific to an SSH channel, or they +// can be global. +type Request struct { + Type string + WantReply bool + Payload []byte + + ch *channel + mux *mux +} + +// Reply sends a response to a request. It must be called for all requests +// where WantReply is true and is a no-op otherwise. The payload argument is +// ignored for replies to channel-specific requests. +func (r *Request) Reply(ok bool, payload []byte) error { + if !r.WantReply { + return nil + } + + if r.ch == nil { + return r.mux.ackRequest(ok, payload) + } + + return r.ch.ackRequest(ok) +} + +// RejectionReason is an enumeration used when rejecting channel creation +// requests. See RFC 4254, section 5.1. +type RejectionReason uint32 + +const ( + Prohibited RejectionReason = iota + 1 + ConnectionFailed + UnknownChannelType + ResourceShortage +) + +// String converts the rejection reason to human readable form. +func (r RejectionReason) String() string { + switch r { + case Prohibited: + return "administratively prohibited" + case ConnectionFailed: + return "connect failed" + case UnknownChannelType: + return "unknown channel type" + case ResourceShortage: + return "resource shortage" + } + return fmt.Sprintf("unknown reason %d", int(r)) +} + +func min(a uint32, b int) uint32 { + if a < uint32(b) { + return a + } + return uint32(b) +} + +type channelDirection uint8 + +const ( + channelInbound channelDirection = iota + channelOutbound +) + +// channel is an implementation of the Channel interface that works +// with the mux class. +type channel struct { + // R/O after creation + chanType string + extraData []byte + localId, remoteId uint32 + + // maxIncomingPayload and maxRemotePayload are the maximum + // payload sizes of normal and extended data packets for + // receiving and sending, respectively. The wire packet will + // be 9 or 13 bytes larger (excluding encryption overhead). + maxIncomingPayload uint32 + maxRemotePayload uint32 + + mux *mux + + // decided is set to true if an accept or reject message has been sent + // (for outbound channels) or received (for inbound channels). + decided bool + + // direction contains either channelOutbound, for channels created + // locally, or channelInbound, for channels created by the peer. + direction channelDirection + + // Pending internal channel messages. + msg chan interface{} + + // Since requests have no ID, there can be only one request + // with WantReply=true outstanding. This lock is held by a + // goroutine that has such an outgoing request pending. + sentRequestMu sync.Mutex + + incomingRequests chan *Request + + sentEOF bool + + // thread-safe data + remoteWin window + pending *buffer + extPending *buffer + + // windowMu protects myWindow, the flow-control window, and myConsumed, + // the number of bytes consumed since we last increased myWindow + windowMu sync.Mutex + myWindow uint32 + myConsumed uint32 + + // writeMu serializes calls to mux.conn.writePacket() and + // protects sentClose and packetPool. This mutex must be + // different from windowMu, as writePacket can block if there + // is a key exchange pending. + writeMu sync.Mutex + sentClose bool + + // packetPool has a buffer for each extended channel ID to + // save allocations during writes. + packetPool map[uint32][]byte +} + +// writePacket sends a packet. If the packet is a channel close, it updates +// sentClose. This method takes the lock c.writeMu. +func (ch *channel) writePacket(packet []byte) error { + ch.writeMu.Lock() + if ch.sentClose { + ch.writeMu.Unlock() + return io.EOF + } + ch.sentClose = (packet[0] == msgChannelClose) + err := ch.mux.conn.writePacket(packet) + ch.writeMu.Unlock() + return err +} + +func (ch *channel) sendMessage(msg interface{}) error { + if debugMux { + log.Printf("send(%d): %#v", ch.mux.chanList.offset, msg) + } + + p := Marshal(msg) + binary.BigEndian.PutUint32(p[1:], ch.remoteId) + return ch.writePacket(p) +} + +// WriteExtended writes data to a specific extended stream. These streams are +// used, for example, for stderr. +func (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) { + if ch.sentEOF { + return 0, io.EOF + } + // 1 byte message type, 4 bytes remoteId, 4 bytes data length + opCode := byte(msgChannelData) + headerLength := uint32(9) + if extendedCode > 0 { + headerLength += 4 + opCode = msgChannelExtendedData + } + + ch.writeMu.Lock() + packet := ch.packetPool[extendedCode] + // We don't remove the buffer from packetPool, so + // WriteExtended calls from different goroutines will be + // flagged as errors by the race detector. + ch.writeMu.Unlock() + + for len(data) > 0 { + space := min(ch.maxRemotePayload, len(data)) + if space, err = ch.remoteWin.reserve(space); err != nil { + return n, err + } + if want := headerLength + space; uint32(cap(packet)) < want { + packet = make([]byte, want) + } else { + packet = packet[:want] + } + + todo := data[:space] + + packet[0] = opCode + binary.BigEndian.PutUint32(packet[1:], ch.remoteId) + if extendedCode > 0 { + binary.BigEndian.PutUint32(packet[5:], uint32(extendedCode)) + } + binary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo))) + copy(packet[headerLength:], todo) + if err = ch.writePacket(packet); err != nil { + return n, err + } + + n += len(todo) + data = data[len(todo):] + } + + ch.writeMu.Lock() + ch.packetPool[extendedCode] = packet + ch.writeMu.Unlock() + + return n, err +} + +func (ch *channel) handleData(packet []byte) error { + headerLen := 9 + isExtendedData := packet[0] == msgChannelExtendedData + if isExtendedData { + headerLen = 13 + } + if len(packet) < headerLen { + // malformed data packet + return parseError(packet[0]) + } + + var extended uint32 + if isExtendedData { + extended = binary.BigEndian.Uint32(packet[5:]) + } + + length := binary.BigEndian.Uint32(packet[headerLen-4 : headerLen]) + if length == 0 { + return nil + } + if length > ch.maxIncomingPayload { + // TODO(hanwen): should send Disconnect? + return errors.New("ssh: incoming packet exceeds maximum payload size") + } + + data := packet[headerLen:] + if length != uint32(len(data)) { + return errors.New("ssh: wrong packet length") + } + + ch.windowMu.Lock() + if ch.myWindow < length { + ch.windowMu.Unlock() + // TODO(hanwen): should send Disconnect with reason? + return errors.New("ssh: remote side wrote too much") + } + ch.myWindow -= length + ch.windowMu.Unlock() + + if extended == 1 { + ch.extPending.write(data) + } else if extended > 0 { + // discard other extended data. + } else { + ch.pending.write(data) + } + return nil +} + +func (c *channel) adjustWindow(adj uint32) error { + c.windowMu.Lock() + // Since myConsumed and myWindow are managed on our side, and can never + // exceed the initial window setting, we don't worry about overflow. + c.myConsumed += adj + var sendAdj uint32 + if (channelWindowSize-c.myWindow > 3*c.maxIncomingPayload) || + (c.myWindow < channelWindowSize/2) { + sendAdj = c.myConsumed + c.myConsumed = 0 + c.myWindow += sendAdj + } + c.windowMu.Unlock() + if sendAdj == 0 { + return nil + } + return c.sendMessage(windowAdjustMsg{ + AdditionalBytes: sendAdj, + }) +} + +func (c *channel) ReadExtended(data []byte, extended uint32) (n int, err error) { + switch extended { + case 1: + n, err = c.extPending.Read(data) + case 0: + n, err = c.pending.Read(data) + default: + return 0, fmt.Errorf("ssh: extended code %d unimplemented", extended) + } + + if n > 0 { + err = c.adjustWindow(uint32(n)) + // sendWindowAdjust can return io.EOF if the remote + // peer has closed the connection, however we want to + // defer forwarding io.EOF to the caller of Read until + // the buffer has been drained. + if n > 0 && err == io.EOF { + err = nil + } + } + + return n, err +} + +func (c *channel) close() { + c.pending.eof() + c.extPending.eof() + close(c.msg) + close(c.incomingRequests) + c.writeMu.Lock() + // This is not necessary for a normal channel teardown, but if + // there was another error, it is. + c.sentClose = true + c.writeMu.Unlock() + // Unblock writers. + c.remoteWin.close() +} + +// responseMessageReceived is called when a success or failure message is +// received on a channel to check that such a message is reasonable for the +// given channel. +func (ch *channel) responseMessageReceived() error { + if ch.direction == channelInbound { + return errors.New("ssh: channel response message received on inbound channel") + } + if ch.decided { + return errors.New("ssh: duplicate response received for channel") + } + ch.decided = true + return nil +} + +func (ch *channel) handlePacket(packet []byte) error { + switch packet[0] { + case msgChannelData, msgChannelExtendedData: + return ch.handleData(packet) + case msgChannelClose: + ch.sendMessage(channelCloseMsg{PeersID: ch.remoteId}) + ch.mux.chanList.remove(ch.localId) + ch.close() + return nil + case msgChannelEOF: + // RFC 4254 is mute on how EOF affects dataExt messages but + // it is logical to signal EOF at the same time. + ch.extPending.eof() + ch.pending.eof() + return nil + } + + decoded, err := decode(packet) + if err != nil { + return err + } + + switch msg := decoded.(type) { + case *channelOpenFailureMsg: + if err := ch.responseMessageReceived(); err != nil { + return err + } + ch.mux.chanList.remove(msg.PeersID) + ch.msg <- msg + case *channelOpenConfirmMsg: + if err := ch.responseMessageReceived(); err != nil { + return err + } + if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { + return fmt.Errorf("ssh: invalid MaxPacketSize %d from peer", msg.MaxPacketSize) + } + ch.remoteId = msg.MyID + ch.maxRemotePayload = msg.MaxPacketSize + ch.remoteWin.add(msg.MyWindow) + ch.msg <- msg + case *windowAdjustMsg: + if !ch.remoteWin.add(msg.AdditionalBytes) { + return fmt.Errorf("ssh: invalid window update for %d bytes", msg.AdditionalBytes) + } + case *channelRequestMsg: + req := Request{ + Type: msg.Request, + WantReply: msg.WantReply, + Payload: msg.RequestSpecificData, + ch: ch, + } + + ch.incomingRequests <- &req + default: + ch.msg <- msg + } + return nil +} + +func (m *mux) newChannel(chanType string, direction channelDirection, extraData []byte) *channel { + ch := &channel{ + remoteWin: window{Cond: newCond()}, + myWindow: channelWindowSize, + pending: newBuffer(), + extPending: newBuffer(), + direction: direction, + incomingRequests: make(chan *Request, chanSize), + msg: make(chan interface{}, chanSize), + chanType: chanType, + extraData: extraData, + mux: m, + packetPool: make(map[uint32][]byte), + } + ch.localId = m.chanList.add(ch) + return ch +} + +var errUndecided = errors.New("ssh: must Accept or Reject channel") +var errDecidedAlready = errors.New("ssh: can call Accept or Reject only once") + +type extChannel struct { + code uint32 + ch *channel +} + +func (e *extChannel) Write(data []byte) (n int, err error) { + return e.ch.WriteExtended(data, e.code) +} + +func (e *extChannel) Read(data []byte) (n int, err error) { + return e.ch.ReadExtended(data, e.code) +} + +func (ch *channel) Accept() (Channel, <-chan *Request, error) { + if ch.decided { + return nil, nil, errDecidedAlready + } + ch.maxIncomingPayload = channelMaxPacket + confirm := channelOpenConfirmMsg{ + PeersID: ch.remoteId, + MyID: ch.localId, + MyWindow: ch.myWindow, + MaxPacketSize: ch.maxIncomingPayload, + } + ch.decided = true + if err := ch.sendMessage(confirm); err != nil { + return nil, nil, err + } + + return ch, ch.incomingRequests, nil +} + +func (ch *channel) Reject(reason RejectionReason, message string) error { + if ch.decided { + return errDecidedAlready + } + reject := channelOpenFailureMsg{ + PeersID: ch.remoteId, + Reason: reason, + Message: message, + Language: "en", + } + ch.decided = true + return ch.sendMessage(reject) +} + +func (ch *channel) Read(data []byte) (int, error) { + if !ch.decided { + return 0, errUndecided + } + return ch.ReadExtended(data, 0) +} + +func (ch *channel) Write(data []byte) (int, error) { + if !ch.decided { + return 0, errUndecided + } + return ch.WriteExtended(data, 0) +} + +func (ch *channel) CloseWrite() error { + if !ch.decided { + return errUndecided + } + ch.sentEOF = true + return ch.sendMessage(channelEOFMsg{ + PeersID: ch.remoteId}) +} + +func (ch *channel) Close() error { + if !ch.decided { + return errUndecided + } + + return ch.sendMessage(channelCloseMsg{ + PeersID: ch.remoteId}) +} + +// Extended returns an io.ReadWriter that sends and receives data on the given, +// SSH extended stream. Such streams are used, for example, for stderr. +func (ch *channel) Extended(code uint32) io.ReadWriter { + if !ch.decided { + return nil + } + return &extChannel{code, ch} +} + +func (ch *channel) Stderr() io.ReadWriter { + return ch.Extended(1) +} + +func (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { + if !ch.decided { + return false, errUndecided + } + + if wantReply { + ch.sentRequestMu.Lock() + defer ch.sentRequestMu.Unlock() + } + + msg := channelRequestMsg{ + PeersID: ch.remoteId, + Request: name, + WantReply: wantReply, + RequestSpecificData: payload, + } + + if err := ch.sendMessage(msg); err != nil { + return false, err + } + + if wantReply { + m, ok := (<-ch.msg) + if !ok { + return false, io.EOF + } + switch m.(type) { + case *channelRequestFailureMsg: + return false, nil + case *channelRequestSuccessMsg: + return true, nil + default: + return false, fmt.Errorf("ssh: unexpected response to channel request: %#v", m) + } + } + + return false, nil +} + +// ackRequest either sends an ack or nack to the channel request. +func (ch *channel) ackRequest(ok bool) error { + if !ch.decided { + return errUndecided + } + + var msg interface{} + if !ok { + msg = channelRequestFailureMsg{ + PeersID: ch.remoteId, + } + } else { + msg = channelRequestSuccessMsg{ + PeersID: ch.remoteId, + } + } + return ch.sendMessage(msg) +} + +func (ch *channel) ChannelType() string { + return ch.chanType +} + +func (ch *channel) ExtraData() []byte { + return ch.extraData +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/cipher.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/cipher.go new file mode 100644 index 0000000..ad2b370 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/cipher.go @@ -0,0 +1,789 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/fips140" + "crypto/rc4" + "crypto/subtle" + "encoding/binary" + "errors" + "fmt" + "hash" + "io" + "slices" + + "golang.org/x/crypto/chacha20" + "golang.org/x/crypto/internal/poly1305" +) + +const ( + packetSizeMultiple = 16 // TODO(huin) this should be determined by the cipher. + + // RFC 4253 section 6.1 defines a minimum packet size of 32768 that implementations + // MUST be able to process (plus a few more kilobytes for padding and mac). The RFC + // indicates implementations SHOULD be able to handle larger packet sizes, but then + // waffles on about reasonable limits. + // + // OpenSSH caps their maxPacket at 256kB so we choose to do + // the same. maxPacket is also used to ensure that uint32 + // length fields do not overflow, so it should remain well + // below 4G. + maxPacket = 256 * 1024 +) + +// noneCipher implements cipher.Stream and provides no encryption. It is used +// by the transport before the first key-exchange. +type noneCipher struct{} + +func (c noneCipher) XORKeyStream(dst, src []byte) { + copy(dst, src) +} + +func newAESCTR(key, iv []byte) (cipher.Stream, error) { + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + return cipher.NewCTR(c, iv), nil +} + +func newRC4(key, iv []byte) (cipher.Stream, error) { + return rc4.NewCipher(key) +} + +type cipherMode struct { + keySize int + ivSize int + create func(key, iv []byte, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) +} + +func streamCipherMode(skip int, createFunc func(key, iv []byte) (cipher.Stream, error)) func(key, iv []byte, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + return func(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + stream, err := createFunc(key, iv) + if err != nil { + return nil, err + } + + var streamDump []byte + if skip > 0 { + streamDump = make([]byte, 512) + } + + for remainingToDump := skip; remainingToDump > 0; { + dumpThisTime := remainingToDump + if dumpThisTime > len(streamDump) { + dumpThisTime = len(streamDump) + } + stream.XORKeyStream(streamDump[:dumpThisTime], streamDump[:dumpThisTime]) + remainingToDump -= dumpThisTime + } + + mac := macModes[algs.MAC].new(macKey) + return &streamPacketCipher{ + mac: mac, + etm: macModes[algs.MAC].etm, + macResult: make([]byte, mac.Size()), + cipher: stream, + }, nil + } +} + +// cipherModes documents properties of supported ciphers. Ciphers not included +// are not supported and will not be negotiated, even if explicitly configured. +// When FIPS mode is enabled, only FIPS-approved algorithms are included. +var cipherModes = map[string]*cipherMode{} + +func init() { + cipherModes[CipherAES128CTR] = &cipherMode{16, aes.BlockSize, streamCipherMode(0, newAESCTR)} + cipherModes[CipherAES192CTR] = &cipherMode{24, aes.BlockSize, streamCipherMode(0, newAESCTR)} + cipherModes[CipherAES256CTR] = &cipherMode{32, aes.BlockSize, streamCipherMode(0, newAESCTR)} + // Use of GCM with arbitrary IVs is not allowed in FIPS 140-only mode, + // we'll wire it up to NewGCMForSSH in Go 1.26. + // + // For now it means we'll work with fips140=on but not fips140=only. + cipherModes[CipherAES128GCM] = &cipherMode{16, 12, newGCMCipher} + cipherModes[CipherAES256GCM] = &cipherMode{32, 12, newGCMCipher} + + if fips140.Enabled() { + defaultCiphers = slices.DeleteFunc(defaultCiphers, func(algo string) bool { + _, ok := cipherModes[algo] + return !ok + }) + return + } + + cipherModes[CipherChaCha20Poly1305] = &cipherMode{64, 0, newChaCha20Cipher} + // Insecure ciphers not included in the default configuration. + cipherModes[InsecureCipherRC4128] = &cipherMode{16, 0, streamCipherMode(1536, newRC4)} + cipherModes[InsecureCipherRC4256] = &cipherMode{32, 0, streamCipherMode(1536, newRC4)} + cipherModes[InsecureCipherRC4] = &cipherMode{16, 0, streamCipherMode(0, newRC4)} + // CBC mode is insecure and so is not included in the default config. + // (See https://www.ieee-security.org/TC/SP2013/papers/4977a526.pdf). If absolutely + // needed, it's possible to specify a custom Config to enable it. + // You should expect that an active attacker can recover plaintext if + // you do. + cipherModes[InsecureCipherAES128CBC] = &cipherMode{16, aes.BlockSize, newAESCBCCipher} + cipherModes[InsecureCipherTripleDESCBC] = &cipherMode{24, des.BlockSize, newTripleDESCBCCipher} +} + +// prefixLen is the length of the packet prefix that contains the packet length +// and number of padding bytes. +const prefixLen = 5 + +// streamPacketCipher is a packetCipher using a stream cipher. +type streamPacketCipher struct { + mac hash.Hash + cipher cipher.Stream + etm bool + + // The following members are to avoid per-packet allocations. + prefix [prefixLen]byte + seqNumBytes [4]byte + padding [2 * packetSizeMultiple]byte + packetData []byte + macResult []byte +} + +// readCipherPacket reads and decrypt a single packet from the reader argument. +func (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + if _, err := io.ReadFull(r, s.prefix[:]); err != nil { + return nil, err + } + + var encryptedPaddingLength [1]byte + if s.mac != nil && s.etm { + copy(encryptedPaddingLength[:], s.prefix[4:5]) + s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) + } else { + s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) + } + + length := binary.BigEndian.Uint32(s.prefix[0:4]) + paddingLength := uint32(s.prefix[4]) + + var macSize uint32 + if s.mac != nil { + s.mac.Reset() + binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) + s.mac.Write(s.seqNumBytes[:]) + if s.etm { + s.mac.Write(s.prefix[:4]) + s.mac.Write(encryptedPaddingLength[:]) + } else { + s.mac.Write(s.prefix[:]) + } + macSize = uint32(s.mac.Size()) + } + + if length <= paddingLength+1 { + return nil, errors.New("ssh: invalid packet length, packet too small") + } + + if length > maxPacket { + return nil, errors.New("ssh: invalid packet length, packet too large") + } + + // the maxPacket check above ensures that length-1+macSize + // does not overflow. + if uint32(cap(s.packetData)) < length-1+macSize { + s.packetData = make([]byte, length-1+macSize) + } else { + s.packetData = s.packetData[:length-1+macSize] + } + + if _, err := io.ReadFull(r, s.packetData); err != nil { + return nil, err + } + mac := s.packetData[length-1:] + data := s.packetData[:length-1] + + if s.mac != nil && s.etm { + s.mac.Write(data) + } + + s.cipher.XORKeyStream(data, data) + + if s.mac != nil { + if !s.etm { + s.mac.Write(data) + } + s.macResult = s.mac.Sum(s.macResult[:0]) + if subtle.ConstantTimeCompare(s.macResult, mac) != 1 { + return nil, errors.New("ssh: MAC failure") + } + } + + return s.packetData[:length-paddingLength-1], nil +} + +// writeCipherPacket encrypts and sends a packet of data to the writer argument +func (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { + if len(packet) > maxPacket { + return errors.New("ssh: packet too large") + } + + aadlen := 0 + if s.mac != nil && s.etm { + // packet length is not encrypted for EtM modes + aadlen = 4 + } + + paddingLength := packetSizeMultiple - (prefixLen+len(packet)-aadlen)%packetSizeMultiple + if paddingLength < 4 { + paddingLength += packetSizeMultiple + } + + length := len(packet) + 1 + paddingLength + binary.BigEndian.PutUint32(s.prefix[:], uint32(length)) + s.prefix[4] = byte(paddingLength) + padding := s.padding[:paddingLength] + if _, err := io.ReadFull(rand, padding); err != nil { + return err + } + + if s.mac != nil { + s.mac.Reset() + binary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum) + s.mac.Write(s.seqNumBytes[:]) + + if s.etm { + // For EtM algorithms, the packet length must stay unencrypted, + // but the following data (padding length) must be encrypted + s.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5]) + } + + s.mac.Write(s.prefix[:]) + + if !s.etm { + // For non-EtM algorithms, the algorithm is applied on unencrypted data + s.mac.Write(packet) + s.mac.Write(padding) + } + } + + if !(s.mac != nil && s.etm) { + // For EtM algorithms, the padding length has already been encrypted + // and the packet length must remain unencrypted + s.cipher.XORKeyStream(s.prefix[:], s.prefix[:]) + } + + s.cipher.XORKeyStream(packet, packet) + s.cipher.XORKeyStream(padding, padding) + + if s.mac != nil && s.etm { + // For EtM algorithms, packet and padding must be encrypted + s.mac.Write(packet) + s.mac.Write(padding) + } + + if _, err := w.Write(s.prefix[:]); err != nil { + return err + } + if _, err := w.Write(packet); err != nil { + return err + } + if _, err := w.Write(padding); err != nil { + return err + } + + if s.mac != nil { + s.macResult = s.mac.Sum(s.macResult[:0]) + if _, err := w.Write(s.macResult); err != nil { + return err + } + } + + return nil +} + +type gcmCipher struct { + aead cipher.AEAD + prefix [4]byte + iv []byte + buf []byte +} + +func newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs DirectionAlgorithms) (packetCipher, error) { + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + aead, err := cipher.NewGCM(c) + if err != nil { + return nil, err + } + + return &gcmCipher{ + aead: aead, + iv: iv, + }, nil +} + +const gcmTagSize = 16 + +func (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { + // Pad out to multiple of 16 bytes. This is different from the + // stream cipher because that encrypts the length too. + padding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple) + if padding < 4 { + padding += packetSizeMultiple + } + + length := uint32(len(packet) + int(padding) + 1) + binary.BigEndian.PutUint32(c.prefix[:], length) + if _, err := w.Write(c.prefix[:]); err != nil { + return err + } + + if cap(c.buf) < int(length) { + c.buf = make([]byte, length) + } else { + c.buf = c.buf[:length] + } + + c.buf[0] = padding + copy(c.buf[1:], packet) + if _, err := io.ReadFull(rand, c.buf[1+len(packet):]); err != nil { + return err + } + c.buf = c.aead.Seal(c.buf[:0], c.iv, c.buf, c.prefix[:]) + if _, err := w.Write(c.buf); err != nil { + return err + } + c.incIV() + + return nil +} + +func (c *gcmCipher) incIV() { + for i := 4 + 7; i >= 4; i-- { + c.iv[i]++ + if c.iv[i] != 0 { + break + } + } +} + +func (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + if _, err := io.ReadFull(r, c.prefix[:]); err != nil { + return nil, err + } + length := binary.BigEndian.Uint32(c.prefix[:]) + if length > maxPacket { + return nil, errors.New("ssh: max packet length exceeded") + } + + if cap(c.buf) < int(length+gcmTagSize) { + c.buf = make([]byte, length+gcmTagSize) + } else { + c.buf = c.buf[:length+gcmTagSize] + } + + if _, err := io.ReadFull(r, c.buf); err != nil { + return nil, err + } + + plain, err := c.aead.Open(c.buf[:0], c.iv, c.buf, c.prefix[:]) + if err != nil { + return nil, err + } + c.incIV() + + if len(plain) == 0 { + return nil, errors.New("ssh: empty packet") + } + + padding := plain[0] + if padding < 4 { + // padding is a byte, so it automatically satisfies + // the maximum size, which is 255. + return nil, fmt.Errorf("ssh: illegal padding %d", padding) + } + + if int(padding+1) >= len(plain) { + return nil, fmt.Errorf("ssh: padding %d too large", padding) + } + plain = plain[1 : length-uint32(padding)] + return plain, nil +} + +// cbcCipher implements aes128-cbc cipher defined in RFC 4253 section 6.1 +type cbcCipher struct { + mac hash.Hash + macSize uint32 + decrypter cipher.BlockMode + encrypter cipher.BlockMode + + // The following members are to avoid per-packet allocations. + seqNumBytes [4]byte + packetData []byte + macResult []byte + + // Amount of data we should still read to hide which + // verification error triggered. + oracleCamouflage uint32 +} + +func newCBCCipher(c cipher.Block, key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + cbc := &cbcCipher{ + mac: macModes[algs.MAC].new(macKey), + decrypter: cipher.NewCBCDecrypter(c, iv), + encrypter: cipher.NewCBCEncrypter(c, iv), + packetData: make([]byte, 1024), + } + if cbc.mac != nil { + cbc.macSize = uint32(cbc.mac.Size()) + } + + return cbc, nil +} + +func newAESCBCCipher(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + + cbc, err := newCBCCipher(c, key, iv, macKey, algs) + if err != nil { + return nil, err + } + + return cbc, nil +} + +func newTripleDESCBCCipher(key, iv, macKey []byte, algs DirectionAlgorithms) (packetCipher, error) { + c, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + + cbc, err := newCBCCipher(c, key, iv, macKey, algs) + if err != nil { + return nil, err + } + + return cbc, nil +} + +func maxUInt32(a, b int) uint32 { + if a > b { + return uint32(a) + } + return uint32(b) +} + +const ( + cbcMinPacketSizeMultiple = 8 + cbcMinPacketSize = 16 + cbcMinPaddingSize = 4 +) + +// cbcError represents a verification error that may leak information. +type cbcError string + +func (e cbcError) Error() string { return string(e) } + +func (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + p, err := c.readCipherPacketLeaky(seqNum, r) + if err != nil { + if _, ok := err.(cbcError); ok { + // Verification error: read a fixed amount of + // data, to make distinguishing between + // failing MAC and failing length check more + // difficult. + io.CopyN(io.Discard, r, int64(c.oracleCamouflage)) + } + } + return p, err +} + +func (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) { + blockSize := c.decrypter.BlockSize() + + // Read the header, which will include some of the subsequent data in the + // case of block ciphers - this is copied back to the payload later. + // How many bytes of payload/padding will be read with this first read. + firstBlockLength := uint32((prefixLen + blockSize - 1) / blockSize * blockSize) + firstBlock := c.packetData[:firstBlockLength] + if _, err := io.ReadFull(r, firstBlock); err != nil { + return nil, err + } + + c.oracleCamouflage = maxPacket + 4 + c.macSize - firstBlockLength + + c.decrypter.CryptBlocks(firstBlock, firstBlock) + length := binary.BigEndian.Uint32(firstBlock[:4]) + if length > maxPacket { + return nil, cbcError("ssh: packet too large") + } + if length+4 < maxUInt32(cbcMinPacketSize, blockSize) { + // The minimum size of a packet is 16 (or the cipher block size, whichever + // is larger) bytes. + return nil, cbcError("ssh: packet too small") + } + // The length of the packet (including the length field but not the MAC) must + // be a multiple of the block size or 8, whichever is larger. + if (length+4)%maxUInt32(cbcMinPacketSizeMultiple, blockSize) != 0 { + return nil, cbcError("ssh: invalid packet length multiple") + } + + paddingLength := uint32(firstBlock[4]) + if paddingLength < cbcMinPaddingSize || length <= paddingLength+1 { + return nil, cbcError("ssh: invalid packet length") + } + + // Positions within the c.packetData buffer: + macStart := 4 + length + paddingStart := macStart - paddingLength + + // Entire packet size, starting before length, ending at end of mac. + entirePacketSize := macStart + c.macSize + + // Ensure c.packetData is large enough for the entire packet data. + if uint32(cap(c.packetData)) < entirePacketSize { + // Still need to upsize and copy, but this should be rare at runtime, only + // on upsizing the packetData buffer. + c.packetData = make([]byte, entirePacketSize) + copy(c.packetData, firstBlock) + } else { + c.packetData = c.packetData[:entirePacketSize] + } + + n, err := io.ReadFull(r, c.packetData[firstBlockLength:]) + if err != nil { + return nil, err + } + c.oracleCamouflage -= uint32(n) + + remainingCrypted := c.packetData[firstBlockLength:macStart] + c.decrypter.CryptBlocks(remainingCrypted, remainingCrypted) + + mac := c.packetData[macStart:] + if c.mac != nil { + c.mac.Reset() + binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) + c.mac.Write(c.seqNumBytes[:]) + c.mac.Write(c.packetData[:macStart]) + c.macResult = c.mac.Sum(c.macResult[:0]) + if subtle.ConstantTimeCompare(c.macResult, mac) != 1 { + return nil, cbcError("ssh: MAC failure") + } + } + + return c.packetData[prefixLen:paddingStart], nil +} + +func (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { + effectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize()) + + // Length of encrypted portion of the packet (header, payload, padding). + // Enforce minimum padding and packet size. + encLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, cbcMinPacketSize) + // Enforce block size. + encLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * effectiveBlockSize + + length := encLength - 4 + paddingLength := int(length) - (1 + len(packet)) + + // Overall buffer contains: header, payload, padding, mac. + // Space for the MAC is reserved in the capacity but not the slice length. + bufferSize := encLength + c.macSize + if uint32(cap(c.packetData)) < bufferSize { + c.packetData = make([]byte, encLength, bufferSize) + } else { + c.packetData = c.packetData[:encLength] + } + + p := c.packetData + + // Packet header. + binary.BigEndian.PutUint32(p, length) + p = p[4:] + p[0] = byte(paddingLength) + + // Payload. + p = p[1:] + copy(p, packet) + + // Padding. + p = p[len(packet):] + if _, err := io.ReadFull(rand, p); err != nil { + return err + } + + if c.mac != nil { + c.mac.Reset() + binary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum) + c.mac.Write(c.seqNumBytes[:]) + c.mac.Write(c.packetData) + // The MAC is now appended into the capacity reserved for it earlier. + c.packetData = c.mac.Sum(c.packetData) + } + + c.encrypter.CryptBlocks(c.packetData[:encLength], c.packetData[:encLength]) + + if _, err := w.Write(c.packetData); err != nil { + return err + } + + return nil +} + +// chacha20Poly1305Cipher implements the chacha20-poly1305@openssh.com +// AEAD, which is described here: +// +// https://tools.ietf.org/html/draft-josefsson-ssh-chacha20-poly1305-openssh-00 +// +// the methods here also implement padding, which RFC 4253 Section 6 +// also requires of stream ciphers. +type chacha20Poly1305Cipher struct { + lengthKey [32]byte + contentKey [32]byte + buf []byte +} + +func newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs DirectionAlgorithms) (packetCipher, error) { + if len(key) != 64 { + panic(len(key)) + } + + c := &chacha20Poly1305Cipher{ + buf: make([]byte, 256), + } + + copy(c.contentKey[:], key[:32]) + copy(c.lengthKey[:], key[32:]) + return c, nil +} + +func (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + nonce := make([]byte, 12) + binary.BigEndian.PutUint32(nonce[8:], seqNum) + s, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce) + if err != nil { + return nil, err + } + var polyKey, discardBuf [32]byte + s.XORKeyStream(polyKey[:], polyKey[:]) + s.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes + + encryptedLength := c.buf[:4] + if _, err := io.ReadFull(r, encryptedLength); err != nil { + return nil, err + } + + var lenBytes [4]byte + ls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce) + if err != nil { + return nil, err + } + ls.XORKeyStream(lenBytes[:], encryptedLength) + + length := binary.BigEndian.Uint32(lenBytes[:]) + if length > maxPacket { + return nil, errors.New("ssh: invalid packet length, packet too large") + } + + contentEnd := 4 + length + packetEnd := contentEnd + poly1305.TagSize + if uint32(cap(c.buf)) < packetEnd { + c.buf = make([]byte, packetEnd) + copy(c.buf[:], encryptedLength) + } else { + c.buf = c.buf[:packetEnd] + } + + if _, err := io.ReadFull(r, c.buf[4:packetEnd]); err != nil { + return nil, err + } + + var mac [poly1305.TagSize]byte + copy(mac[:], c.buf[contentEnd:packetEnd]) + if !poly1305.Verify(&mac, c.buf[:contentEnd], &polyKey) { + return nil, errors.New("ssh: MAC failure") + } + + plain := c.buf[4:contentEnd] + s.XORKeyStream(plain, plain) + + if len(plain) == 0 { + return nil, errors.New("ssh: empty packet") + } + + padding := plain[0] + if padding < 4 { + // padding is a byte, so it automatically satisfies + // the maximum size, which is 255. + return nil, fmt.Errorf("ssh: illegal padding %d", padding) + } + + if int(padding)+1 >= len(plain) { + return nil, fmt.Errorf("ssh: padding %d too large", padding) + } + + plain = plain[1 : len(plain)-int(padding)] + + return plain, nil +} + +func (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error { + nonce := make([]byte, 12) + binary.BigEndian.PutUint32(nonce[8:], seqNum) + s, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce) + if err != nil { + return err + } + var polyKey, discardBuf [32]byte + s.XORKeyStream(polyKey[:], polyKey[:]) + s.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes + + // There is no blocksize, so fall back to multiple of 8 byte + // padding, as described in RFC 4253, Sec 6. + const packetSizeMultiple = 8 + + padding := packetSizeMultiple - (1+len(payload))%packetSizeMultiple + if padding < 4 { + padding += packetSizeMultiple + } + + // size (4 bytes), padding (1), payload, padding, tag. + totalLength := 4 + 1 + len(payload) + padding + poly1305.TagSize + if cap(c.buf) < totalLength { + c.buf = make([]byte, totalLength) + } else { + c.buf = c.buf[:totalLength] + } + + binary.BigEndian.PutUint32(c.buf, uint32(1+len(payload)+padding)) + ls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce) + if err != nil { + return err + } + ls.XORKeyStream(c.buf, c.buf[:4]) + c.buf[4] = byte(padding) + copy(c.buf[5:], payload) + packetEnd := 5 + len(payload) + padding + if _, err := io.ReadFull(rand, c.buf[5+len(payload):packetEnd]); err != nil { + return err + } + + s.XORKeyStream(c.buf[4:], c.buf[4:packetEnd]) + + var mac [poly1305.TagSize]byte + poly1305.Sum(&mac, c.buf[:packetEnd], &polyKey) + + copy(c.buf[packetEnd:], mac[:]) + + if _, err := w.Write(c.buf); err != nil { + return err + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client.go new file mode 100644 index 0000000..3307978 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client.go @@ -0,0 +1,283 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "net" + "os" + "sync" + "time" +) + +// Client implements a traditional SSH client that supports shells, +// subprocesses, TCP port/streamlocal forwarding and tunneled dialing. +type Client struct { + Conn + + handleForwardsOnce sync.Once // guards calling (*Client).handleForwards + + forwards forwardList // forwarded tcpip connections from the remote side + mu sync.Mutex + channelHandlers map[string]chan NewChannel +} + +// HandleChannelOpen returns a channel on which NewChannel requests +// for the given type are sent. If the type already is being handled, +// nil is returned. The channel is closed when the connection is closed. +func (c *Client) HandleChannelOpen(channelType string) <-chan NewChannel { + c.mu.Lock() + defer c.mu.Unlock() + if c.channelHandlers == nil { + // The SSH channel has been closed. + c := make(chan NewChannel) + close(c) + return c + } + + ch := c.channelHandlers[channelType] + if ch != nil { + return nil + } + + ch = make(chan NewChannel, chanSize) + c.channelHandlers[channelType] = ch + return ch +} + +// NewClient creates a Client on top of the given connection. +func NewClient(c Conn, chans <-chan NewChannel, reqs <-chan *Request) *Client { + conn := &Client{ + Conn: c, + channelHandlers: make(map[string]chan NewChannel, 1), + } + + go conn.handleGlobalRequests(reqs) + go conn.handleChannelOpens(chans) + go func() { + conn.Wait() + conn.forwards.closeAll() + }() + return conn +} + +// NewClientConn establishes an authenticated SSH connection using c +// as the underlying transport. The Request and NewChannel channels +// must be serviced or the connection will hang. +func NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) { + fullConf := *config + fullConf.SetDefaults() + if fullConf.HostKeyCallback == nil { + c.Close() + return nil, nil, nil, errors.New("ssh: must specify HostKeyCallback") + } + + conn := &connection{ + sshConn: sshConn{conn: c, user: fullConf.User}, + } + + if err := conn.clientHandshake(addr, &fullConf); err != nil { + c.Close() + return nil, nil, nil, fmt.Errorf("ssh: handshake failed: %w", err) + } + conn.mux = newMux(conn.transport) + return conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil +} + +// clientHandshake performs the client side key exchange. See RFC 4253 Section +// 7. +func (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error { + if config.ClientVersion != "" { + c.clientVersion = []byte(config.ClientVersion) + } else { + c.clientVersion = []byte(packageVersion) + } + var err error + c.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion) + if err != nil { + return err + } + + c.transport = newClientTransport( + newTransport(c.sshConn.conn, config.Rand, true /* is client */), + c.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr()) + if err := c.transport.waitSession(); err != nil { + return err + } + + c.sessionID = c.transport.getSessionID() + c.algorithms = c.transport.getAlgorithms() + return c.clientAuthenticate(config) +} + +// verifyHostKeySignature verifies the host key obtained in the key exchange. +// algo is the negotiated algorithm, and may be a certificate type. +func verifyHostKeySignature(hostKey PublicKey, algo string, result *kexResult) error { + sig, rest, ok := parseSignatureBody(result.Signature) + if len(rest) > 0 || !ok { + return errors.New("ssh: signature parse error") + } + + if a := underlyingAlgo(algo); sig.Format != a { + return fmt.Errorf("ssh: invalid signature algorithm %q, expected %q", sig.Format, a) + } + + return hostKey.Verify(result.H, sig) +} + +// NewSession opens a new Session for this client. (A session is a remote +// execution of a program.) +func (c *Client) NewSession() (*Session, error) { + ch, in, err := c.OpenChannel("session", nil) + if err != nil { + return nil, err + } + return newSession(ch, in) +} + +func (c *Client) handleGlobalRequests(incoming <-chan *Request) { + for r := range incoming { + // This handles keepalive messages and matches + // the behaviour of OpenSSH. + r.Reply(false, nil) + } +} + +// handleChannelOpens channel open messages from the remote side. +func (c *Client) handleChannelOpens(in <-chan NewChannel) { + for ch := range in { + c.mu.Lock() + handler := c.channelHandlers[ch.ChannelType()] + c.mu.Unlock() + + if handler != nil { + handler <- ch + } else { + ch.Reject(UnknownChannelType, fmt.Sprintf("unknown channel type: %v", ch.ChannelType())) + } + } + + c.mu.Lock() + for _, ch := range c.channelHandlers { + close(ch) + } + c.channelHandlers = nil + c.mu.Unlock() +} + +// Dial starts a client connection to the given SSH server. It is a +// convenience function that connects to the given network address, +// initiates the SSH handshake, and then sets up a Client. For access +// to incoming channels and requests, use net.Dial with NewClientConn +// instead. +func Dial(network, addr string, config *ClientConfig) (*Client, error) { + conn, err := net.DialTimeout(network, addr, config.Timeout) + if err != nil { + return nil, err + } + c, chans, reqs, err := NewClientConn(conn, addr, config) + if err != nil { + return nil, err + } + return NewClient(c, chans, reqs), nil +} + +// HostKeyCallback is the function type used for verifying server +// keys. A HostKeyCallback must return nil if the host key is OK, or +// an error to reject it. It receives the hostname as passed to Dial +// or NewClientConn. The remote address is the RemoteAddr of the +// net.Conn underlying the SSH connection. +type HostKeyCallback func(hostname string, remote net.Addr, key PublicKey) error + +// BannerCallback is the function type used for treat the banner sent by +// the server. A BannerCallback receives the message sent by the remote server. +type BannerCallback func(message string) error + +// A ClientConfig structure is used to configure a Client. It must not be +// modified after having been passed to an SSH function. +type ClientConfig struct { + // Config contains configuration that is shared between clients and + // servers. + Config + + // User contains the username to authenticate as. + User string + + // Auth contains possible authentication methods to use with the + // server. Only the first instance of a particular RFC 4252 method will + // be used during authentication. + Auth []AuthMethod + + // HostKeyCallback is called during the cryptographic + // handshake to validate the server's host key. The client + // configuration must supply this callback for the connection + // to succeed. The functions InsecureIgnoreHostKey or + // FixedHostKey can be used for simplistic host key checks. + HostKeyCallback HostKeyCallback + + // BannerCallback is called during the SSH dance to display a custom + // server's message. The client configuration can supply this callback to + // handle it as wished. The function BannerDisplayStderr can be used for + // simplistic display on Stderr. + BannerCallback BannerCallback + + // ClientVersion contains the version identification string that will + // be used for the connection. If empty, a reasonable default is used. + ClientVersion string + + // HostKeyAlgorithms lists the public key algorithms that the client will + // accept from the server for host key authentication, in order of + // preference. If empty, a reasonable default is used. Any + // string returned from a PublicKey.Type method may be used, or + // any of the CertAlgo and KeyAlgo constants. + HostKeyAlgorithms []string + + // Timeout is the maximum amount of time for the TCP connection to establish. + // + // A Timeout of zero means no timeout. + Timeout time.Duration +} + +// InsecureIgnoreHostKey returns a function that can be used for +// ClientConfig.HostKeyCallback to accept any host key. It should +// not be used for production code. +func InsecureIgnoreHostKey() HostKeyCallback { + return func(hostname string, remote net.Addr, key PublicKey) error { + return nil + } +} + +type fixedHostKey struct { + key PublicKey +} + +func (f *fixedHostKey) check(hostname string, remote net.Addr, key PublicKey) error { + if f.key == nil { + return fmt.Errorf("ssh: required host key was nil") + } + if !bytes.Equal(key.Marshal(), f.key.Marshal()) { + return fmt.Errorf("ssh: host key mismatch") + } + return nil +} + +// FixedHostKey returns a function for use in +// ClientConfig.HostKeyCallback to accept only a specific host key. +func FixedHostKey(key PublicKey) HostKeyCallback { + hk := &fixedHostKey{key} + return hk.check +} + +// BannerDisplayStderr returns a function that can be used for +// ClientConfig.BannerCallback to display banners on os.Stderr. +func BannerDisplayStderr() BannerCallback { + return func(banner string) error { + _, err := os.Stderr.WriteString(banner) + + return err + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client_auth.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client_auth.go new file mode 100644 index 0000000..4f2f75c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/client_auth.go @@ -0,0 +1,792 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "io" + "slices" + "strings" +) + +type authResult int + +const ( + authFailure authResult = iota + authPartialSuccess + authSuccess +) + +// clientAuthenticate authenticates with the remote server. See RFC 4252. +func (c *connection) clientAuthenticate(config *ClientConfig) error { + // initiate user auth session + if err := c.transport.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})); err != nil { + return err + } + packet, err := c.transport.readPacket() + if err != nil { + return err + } + // The server may choose to send a SSH_MSG_EXT_INFO at this point (if we + // advertised willingness to receive one, which we always do) or not. See + // RFC 8308, Section 2.4. + extensions := make(map[string][]byte) + if len(packet) > 0 && packet[0] == msgExtInfo { + var extInfo extInfoMsg + if err := Unmarshal(packet, &extInfo); err != nil { + return err + } + payload := extInfo.Payload + for i := uint32(0); i < extInfo.NumExtensions; i++ { + name, rest, ok := parseString(payload) + if !ok { + return parseError(msgExtInfo) + } + value, rest, ok := parseString(rest) + if !ok { + return parseError(msgExtInfo) + } + extensions[string(name)] = value + payload = rest + } + packet, err = c.transport.readPacket() + if err != nil { + return err + } + } + var serviceAccept serviceAcceptMsg + if err := Unmarshal(packet, &serviceAccept); err != nil { + return err + } + + // during the authentication phase the client first attempts the "none" method + // then any untried methods suggested by the server. + var tried []string + var lastMethods []string + + sessionID := c.transport.getSessionID() + for auth := AuthMethod(new(noneAuth)); auth != nil; { + ok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions) + if err != nil { + // On disconnect, return error immediately + if _, ok := err.(*disconnectMsg); ok { + return err + } + // We return the error later if there is no other method left to + // try. + ok = authFailure + } + if ok == authSuccess { + // success + return nil + } else if ok == authFailure { + if m := auth.method(); !slices.Contains(tried, m) { + tried = append(tried, m) + } + } + if methods == nil { + methods = lastMethods + } + lastMethods = methods + + auth = nil + + findNext: + for _, a := range config.Auth { + candidateMethod := a.method() + if slices.Contains(tried, candidateMethod) { + continue + } + for _, meth := range methods { + if meth == candidateMethod { + auth = a + break findNext + } + } + } + + if auth == nil && err != nil { + // We have an error and there are no other authentication methods to + // try, so we return it. + return err + } + } + return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", tried) +} + +// An AuthMethod represents an instance of an RFC 4252 authentication method. +type AuthMethod interface { + // auth authenticates user over transport t. + // Returns true if authentication is successful. + // If authentication is not successful, a []string of alternative + // method names is returned. If the slice is nil, it will be ignored + // and the previous set of possible methods will be reused. + auth(session []byte, user string, p packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) + + // method returns the RFC 4252 method name. + method() string +} + +// "none" authentication, RFC 4252 section 5.2. +type noneAuth int + +func (n *noneAuth) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + if err := c.writePacket(Marshal(&userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: "none", + })); err != nil { + return authFailure, nil, err + } + + return handleAuthResponse(c) +} + +func (n *noneAuth) method() string { + return "none" +} + +// passwordCallback is an AuthMethod that fetches the password through +// a function call, e.g. by prompting the user. +type passwordCallback func() (password string, err error) + +func (cb passwordCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + type passwordAuthMsg struct { + User string `sshtype:"50"` + Service string + Method string + Reply bool + Password string + } + + pw, err := cb() + // REVIEW NOTE: is there a need to support skipping a password attempt? + // The program may only find out that the user doesn't have a password + // when prompting. + if err != nil { + return authFailure, nil, err + } + + if err := c.writePacket(Marshal(&passwordAuthMsg{ + User: user, + Service: serviceSSH, + Method: cb.method(), + Reply: false, + Password: pw, + })); err != nil { + return authFailure, nil, err + } + + return handleAuthResponse(c) +} + +func (cb passwordCallback) method() string { + return "password" +} + +// Password returns an AuthMethod using the given password. +func Password(secret string) AuthMethod { + return passwordCallback(func() (string, error) { return secret, nil }) +} + +// PasswordCallback returns an AuthMethod that uses a callback for +// fetching a password. +func PasswordCallback(prompt func() (secret string, err error)) AuthMethod { + return passwordCallback(prompt) +} + +type publickeyAuthMsg struct { + User string `sshtype:"50"` + Service string + Method string + // HasSig indicates to the receiver packet that the auth request is signed and + // should be used for authentication of the request. + HasSig bool + Algoname string + PubKey []byte + // Sig is tagged with "rest" so Marshal will exclude it during + // validateKey + Sig []byte `ssh:"rest"` +} + +// publicKeyCallback is an AuthMethod that uses a set of key +// pairs for authentication. +type publicKeyCallback func() ([]Signer, error) + +func (cb publicKeyCallback) method() string { + return "publickey" +} + +func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiAlgorithmSigner, string, error) { + var as MultiAlgorithmSigner + keyFormat := signer.PublicKey().Type() + + // If the signer implements MultiAlgorithmSigner we use the algorithms it + // support, if it implements AlgorithmSigner we assume it supports all + // algorithms, otherwise only the key format one. + switch s := signer.(type) { + case MultiAlgorithmSigner: + as = s + case AlgorithmSigner: + as = &multiAlgorithmSigner{ + AlgorithmSigner: s, + supportedAlgorithms: algorithmsForKeyFormat(underlyingAlgo(keyFormat)), + } + default: + as = &multiAlgorithmSigner{ + AlgorithmSigner: algorithmSignerWrapper{signer}, + supportedAlgorithms: []string{underlyingAlgo(keyFormat)}, + } + } + + getFallbackAlgo := func() (string, error) { + // Fallback to use if there is no "server-sig-algs" extension or a + // common algorithm cannot be found. We use the public key format if the + // MultiAlgorithmSigner supports it, otherwise we return an error. + if !slices.Contains(as.Algorithms(), underlyingAlgo(keyFormat)) { + return "", fmt.Errorf("ssh: no common public key signature algorithm, server only supports %q for key type %q, signer only supports %v", + underlyingAlgo(keyFormat), keyFormat, as.Algorithms()) + } + return keyFormat, nil + } + + extPayload, ok := extensions["server-sig-algs"] + if !ok { + // If there is no "server-sig-algs" extension use the fallback + // algorithm. + algo, err := getFallbackAlgo() + return as, algo, err + } + + // The server-sig-algs extension only carries underlying signature + // algorithm, but we are trying to select a protocol-level public key + // algorithm, which might be a certificate type. Extend the list of server + // supported algorithms to include the corresponding certificate algorithms. + serverAlgos := strings.Split(string(extPayload), ",") + for _, algo := range serverAlgos { + if certAlgo, ok := certificateAlgo(algo); ok { + serverAlgos = append(serverAlgos, certAlgo) + } + } + + // Filter algorithms based on those supported by MultiAlgorithmSigner. + // Iterate over the signer's algorithms first to preserve its preference order. + supportedKeyAlgos := algorithmsForKeyFormat(keyFormat) + var keyAlgos []string + for _, signerAlgo := range as.Algorithms() { + if idx := slices.IndexFunc(supportedKeyAlgos, func(algo string) bool { + return underlyingAlgo(algo) == signerAlgo + }); idx >= 0 { + keyAlgos = append(keyAlgos, supportedKeyAlgos[idx]) + } + } + + algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos, true) + if err != nil { + // If there is no overlap, return the fallback algorithm to support + // servers that fail to list all supported algorithms. + algo, err := getFallbackAlgo() + return as, algo, err + } + return as, algo, nil +} + +func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) { + // Authentication is performed by sending an enquiry to test if a key is + // acceptable to the remote. If the key is acceptable, the client will + // attempt to authenticate with the valid key. If not the client will repeat + // the process with the remaining keys. + + signers, err := cb() + if err != nil { + return authFailure, nil, err + } + var methods []string + var errSigAlgo error + + origSignersLen := len(signers) + for idx := 0; idx < len(signers); idx++ { + signer := signers[idx] + pub := signer.PublicKey() + as, algo, err := pickSignatureAlgorithm(signer, extensions) + if err != nil && errSigAlgo == nil { + // If we cannot negotiate a signature algorithm store the first + // error so we can return it to provide a more meaningful message if + // no other signers work. + errSigAlgo = err + continue + } + ok, err := validateKey(pub, algo, user, c) + if err != nil { + return authFailure, nil, err + } + // OpenSSH 7.2-7.7 advertises support for rsa-sha2-256 and rsa-sha2-512 + // in the "server-sig-algs" extension but doesn't support these + // algorithms for certificate authentication, so if the server rejects + // the key try to use the obtained algorithm as if "server-sig-algs" had + // not been implemented if supported from the algorithm signer. + if !ok && idx < origSignersLen && isRSACert(algo) && algo != CertAlgoRSAv01 { + if slices.Contains(as.Algorithms(), KeyAlgoRSA) { + // We retry using the compat algorithm after all signers have + // been tried normally. + signers = append(signers, &multiAlgorithmSigner{ + AlgorithmSigner: as, + supportedAlgorithms: []string{KeyAlgoRSA}, + }) + } + } + if !ok { + continue + } + + pubKey := pub.Marshal() + data := buildDataSignedForAuth(session, userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: cb.method(), + }, algo, pubKey) + sign, err := as.SignWithAlgorithm(rand, data, underlyingAlgo(algo)) + if err != nil { + return authFailure, nil, err + } + + // manually wrap the serialized signature in a string + s := Marshal(sign) + sig := make([]byte, stringLength(len(s))) + marshalString(sig, s) + msg := publickeyAuthMsg{ + User: user, + Service: serviceSSH, + Method: cb.method(), + HasSig: true, + Algoname: algo, + PubKey: pubKey, + Sig: sig, + } + p := Marshal(&msg) + if err := c.writePacket(p); err != nil { + return authFailure, nil, err + } + var success authResult + success, methods, err = handleAuthResponse(c) + if err != nil { + return authFailure, nil, err + } + + // If authentication succeeds or the list of available methods does not + // contain the "publickey" method, do not attempt to authenticate with any + // other keys. According to RFC 4252 Section 7, the latter can occur when + // additional authentication methods are required. + if success == authSuccess || !slices.Contains(methods, cb.method()) { + return success, methods, err + } + } + + return authFailure, methods, errSigAlgo +} + +// validateKey validates the key provided is acceptable to the server. +func validateKey(key PublicKey, algo string, user string, c packetConn) (bool, error) { + pubKey := key.Marshal() + msg := publickeyAuthMsg{ + User: user, + Service: serviceSSH, + Method: "publickey", + HasSig: false, + Algoname: algo, + PubKey: pubKey, + } + if err := c.writePacket(Marshal(&msg)); err != nil { + return false, err + } + + return confirmKeyAck(key, c) +} + +func confirmKeyAck(key PublicKey, c packetConn) (bool, error) { + pubKey := key.Marshal() + + for { + packet, err := c.readPacket() + if err != nil { + return false, err + } + switch packet[0] { + case msgUserAuthBanner: + if err := handleBannerResponse(c, packet); err != nil { + return false, err + } + case msgUserAuthPubKeyOk: + var msg userAuthPubKeyOkMsg + if err := Unmarshal(packet, &msg); err != nil { + return false, err + } + // According to RFC 4252 Section 7 the algorithm in + // SSH_MSG_USERAUTH_PK_OK should match that of the request but some + // servers send the key type instead. OpenSSH allows any algorithm + // that matches the public key, so we do the same. + // https://github.com/openssh/openssh-portable/blob/86bdd385/sshconnect2.c#L709 + if !slices.Contains(algorithmsForKeyFormat(key.Type()), msg.Algo) { + return false, nil + } + if !bytes.Equal(msg.PubKey, pubKey) { + return false, nil + } + return true, nil + case msgUserAuthFailure: + return false, nil + default: + return false, unexpectedMessageError(msgUserAuthPubKeyOk, packet[0]) + } + } +} + +// PublicKeys returns an AuthMethod that uses the given key +// pairs. +func PublicKeys(signers ...Signer) AuthMethod { + return publicKeyCallback(func() ([]Signer, error) { return signers, nil }) +} + +// PublicKeysCallback returns an AuthMethod that runs the given +// function to obtain a list of key pairs. +func PublicKeysCallback(getSigners func() (signers []Signer, err error)) AuthMethod { + return publicKeyCallback(getSigners) +} + +// handleAuthResponse returns whether the preceding authentication request succeeded +// along with a list of remaining authentication methods to try next and +// an error if an unexpected response was received. +func handleAuthResponse(c packetConn) (authResult, []string, error) { + gotMsgExtInfo := false + for { + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + + switch packet[0] { + case msgUserAuthBanner: + if err := handleBannerResponse(c, packet); err != nil { + return authFailure, nil, err + } + case msgExtInfo: + // Ignore post-authentication RFC 8308 extensions, once. + if gotMsgExtInfo { + return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) + } + gotMsgExtInfo = true + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + return authFailure, msg.Methods, nil + case msgUserAuthSuccess: + return authSuccess, nil, nil + default: + return authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0]) + } + } +} + +func handleBannerResponse(c packetConn, packet []byte) error { + var msg userAuthBannerMsg + if err := Unmarshal(packet, &msg); err != nil { + return err + } + + transport, ok := c.(*handshakeTransport) + if !ok { + return nil + } + + if transport.bannerCallback != nil { + return transport.bannerCallback(msg.Message) + } + + return nil +} + +// KeyboardInteractiveChallenge should print questions, optionally +// disabling echoing (e.g. for passwords), and return all the answers. +// Challenge may be called multiple times in a single session. After +// successful authentication, the server may send a challenge with no +// questions, for which the name and instruction messages should be +// printed. RFC 4256 section 3.3 details how the UI should behave for +// both CLI and GUI environments. +type KeyboardInteractiveChallenge func(name, instruction string, questions []string, echos []bool) (answers []string, err error) + +// KeyboardInteractive returns an AuthMethod using a prompt/response +// sequence controlled by the server. +func KeyboardInteractive(challenge KeyboardInteractiveChallenge) AuthMethod { + return challenge +} + +func (cb KeyboardInteractiveChallenge) method() string { + return "keyboard-interactive" +} + +func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + type initiateMsg struct { + User string `sshtype:"50"` + Service string + Method string + Language string + Submethods string + } + + if err := c.writePacket(Marshal(&initiateMsg{ + User: user, + Service: serviceSSH, + Method: "keyboard-interactive", + })); err != nil { + return authFailure, nil, err + } + + gotMsgExtInfo := false + gotUserAuthInfoRequest := false + for { + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + + // like handleAuthResponse, but with less options. + switch packet[0] { + case msgUserAuthBanner: + if err := handleBannerResponse(c, packet); err != nil { + return authFailure, nil, err + } + continue + case msgExtInfo: + // Ignore post-authentication RFC 8308 extensions, once. + if gotMsgExtInfo { + return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } + gotMsgExtInfo = true + continue + case msgUserAuthInfoRequest: + // OK + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + if !gotUserAuthInfoRequest { + return authFailure, msg.Methods, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } + return authFailure, msg.Methods, nil + case msgUserAuthSuccess: + return authSuccess, nil, nil + default: + return authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } + + var msg userAuthInfoRequestMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + gotUserAuthInfoRequest = true + + // Manually unpack the prompt/echo pairs. + rest := msg.Prompts + var prompts []string + var echos []bool + for i := 0; i < int(msg.NumPrompts); i++ { + prompt, r, ok := parseString(rest) + if !ok || len(r) == 0 { + return authFailure, nil, errors.New("ssh: prompt format error") + } + prompts = append(prompts, string(prompt)) + echos = append(echos, r[0] != 0) + rest = r[1:] + } + + if len(rest) != 0 { + return authFailure, nil, errors.New("ssh: extra data following keyboard-interactive pairs") + } + + answers, err := cb(msg.Name, msg.Instruction, prompts, echos) + if err != nil { + return authFailure, nil, err + } + + if len(answers) != len(prompts) { + return authFailure, nil, fmt.Errorf("ssh: incorrect number of answers from keyboard-interactive callback %d (expected %d)", len(answers), len(prompts)) + } + responseLength := 1 + 4 + for _, a := range answers { + responseLength += stringLength(len(a)) + } + serialized := make([]byte, responseLength) + p := serialized + p[0] = msgUserAuthInfoResponse + p = p[1:] + p = marshalUint32(p, uint32(len(answers))) + for _, a := range answers { + p = marshalString(p, []byte(a)) + } + + if err := c.writePacket(serialized); err != nil { + return authFailure, nil, err + } + } +} + +type retryableAuthMethod struct { + authMethod AuthMethod + maxTries int +} + +func (r *retryableAuthMethod) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (ok authResult, methods []string, err error) { + for i := 0; r.maxTries <= 0 || i < r.maxTries; i++ { + ok, methods, err = r.authMethod.auth(session, user, c, rand, extensions) + if ok != authFailure || err != nil { // either success, partial success or error terminate + return ok, methods, err + } + } + return ok, methods, err +} + +func (r *retryableAuthMethod) method() string { + return r.authMethod.method() +} + +// RetryableAuthMethod is a decorator for other auth methods enabling them to +// be retried up to maxTries before considering that AuthMethod itself failed. +// If maxTries is <= 0, will retry indefinitely +// +// This is useful for interactive clients using challenge/response type +// authentication (e.g. Keyboard-Interactive, Password, etc) where the user +// could mistype their response resulting in the server issuing a +// SSH_MSG_USERAUTH_FAILURE (rfc4252 #8 [password] and rfc4256 #3.4 +// [keyboard-interactive]); Without this decorator, the non-retryable +// AuthMethod would be removed from future consideration, and never tried again +// (and so the user would never be able to retry their entry). +func RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod { + return &retryableAuthMethod{authMethod: auth, maxTries: maxTries} +} + +// GSSAPIWithMICAuthMethod is an AuthMethod with "gssapi-with-mic" authentication. +// See RFC 4462 section 3 +// gssAPIClient is implementation of the GSSAPIClient interface, see the definition of the interface for details. +// target is the server host you want to log in to. +func GSSAPIWithMICAuthMethod(gssAPIClient GSSAPIClient, target string) AuthMethod { + if gssAPIClient == nil { + panic("gss-api client must be not nil with enable gssapi-with-mic") + } + return &gssAPIWithMICCallback{gssAPIClient: gssAPIClient, target: target} +} + +type gssAPIWithMICCallback struct { + gssAPIClient GSSAPIClient + target string +} + +func (g *gssAPIWithMICCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) { + m := &userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: g.method(), + } + // The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST. + // See RFC 4462 section 3.2. + m.Payload = appendU32(m.Payload, 1) + m.Payload = appendString(m.Payload, string(krb5OID)) + if err := c.writePacket(Marshal(m)); err != nil { + return authFailure, nil, err + } + // The server responds to the SSH_MSG_USERAUTH_REQUEST with either an + // SSH_MSG_USERAUTH_FAILURE if none of the mechanisms are supported or + // with an SSH_MSG_USERAUTH_GSSAPI_RESPONSE. + // See RFC 4462 section 3.3. + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,so I don't want to check + // selected mech if it is valid. + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + userAuthGSSAPIResp := &userAuthGSSAPIResponse{} + if err := Unmarshal(packet, userAuthGSSAPIResp); err != nil { + return authFailure, nil, err + } + // Start the loop into the exchange token. + // See RFC 4462 section 3.4. + var token []byte + defer g.gssAPIClient.DeleteSecContext() + for { + // Initiates the establishment of a security context between the application and a remote peer. + nextToken, needContinue, err := g.gssAPIClient.InitSecContext("host@"+g.target, token, false) + if err != nil { + return authFailure, nil, err + } + if len(nextToken) > 0 { + if err := c.writePacket(Marshal(&userAuthGSSAPIToken{ + Token: nextToken, + })); err != nil { + return authFailure, nil, err + } + } + if !needContinue { + break + } + packet, err = c.readPacket() + if err != nil { + return authFailure, nil, err + } + switch packet[0] { + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + return authFailure, msg.Methods, nil + case msgUserAuthGSSAPIError: + userAuthGSSAPIErrorResp := &userAuthGSSAPIError{} + if err := Unmarshal(packet, userAuthGSSAPIErrorResp); err != nil { + return authFailure, nil, err + } + return authFailure, nil, fmt.Errorf("GSS-API Error:\n"+ + "Major Status: %d\n"+ + "Minor Status: %d\n"+ + "Error Message: %s\n", userAuthGSSAPIErrorResp.MajorStatus, userAuthGSSAPIErrorResp.MinorStatus, + userAuthGSSAPIErrorResp.Message) + case msgUserAuthGSSAPIToken: + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return authFailure, nil, err + } + token = userAuthGSSAPITokenReq.Token + } + } + // Binding Encryption Keys. + // See RFC 4462 section 3.5. + micField := buildMIC(string(session), user, "ssh-connection", "gssapi-with-mic") + micToken, err := g.gssAPIClient.GetMIC(micField) + if err != nil { + return authFailure, nil, err + } + if err := c.writePacket(Marshal(&userAuthGSSAPIMIC{ + MIC: micToken, + })); err != nil { + return authFailure, nil, err + } + return handleAuthResponse(c) +} + +func (g *gssAPIWithMICCallback) method() string { + return "gssapi-with-mic" +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/common.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/common.go new file mode 100644 index 0000000..2e44e9c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/common.go @@ -0,0 +1,727 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto" + "crypto/fips140" + "crypto/rand" + "fmt" + "io" + "math" + "slices" + "sync" + + _ "crypto/sha1" + _ "crypto/sha256" + _ "crypto/sha512" +) + +// These are string constants in the SSH protocol. +const ( + compressionNone = "none" + serviceUserAuth = "ssh-userauth" + serviceSSH = "ssh-connection" +) + +// The ciphers currently or previously implemented by this library, to use in +// [Config.Ciphers]. For a list, see the [Algorithms.Ciphers] returned by +// [SupportedAlgorithms] or [InsecureAlgorithms]. +const ( + CipherAES128GCM = "aes128-gcm@openssh.com" + CipherAES256GCM = "aes256-gcm@openssh.com" + CipherChaCha20Poly1305 = "chacha20-poly1305@openssh.com" + CipherAES128CTR = "aes128-ctr" + CipherAES192CTR = "aes192-ctr" + CipherAES256CTR = "aes256-ctr" + InsecureCipherAES128CBC = "aes128-cbc" + InsecureCipherTripleDESCBC = "3des-cbc" + InsecureCipherRC4 = "arcfour" + InsecureCipherRC4128 = "arcfour128" + InsecureCipherRC4256 = "arcfour256" +) + +// The key exchanges currently or previously implemented by this library, to use +// in [Config.KeyExchanges]. For a list, see the +// [Algorithms.KeyExchanges] returned by [SupportedAlgorithms] or +// [InsecureAlgorithms]. +const ( + InsecureKeyExchangeDH1SHA1 = "diffie-hellman-group1-sha1" + InsecureKeyExchangeDH14SHA1 = "diffie-hellman-group14-sha1" + KeyExchangeDH14SHA256 = "diffie-hellman-group14-sha256" + KeyExchangeDH16SHA512 = "diffie-hellman-group16-sha512" + KeyExchangeECDHP256 = "ecdh-sha2-nistp256" + KeyExchangeECDHP384 = "ecdh-sha2-nistp384" + KeyExchangeECDHP521 = "ecdh-sha2-nistp521" + KeyExchangeCurve25519 = "curve25519-sha256" + InsecureKeyExchangeDHGEXSHA1 = "diffie-hellman-group-exchange-sha1" + KeyExchangeDHGEXSHA256 = "diffie-hellman-group-exchange-sha256" + // KeyExchangeMLKEM768X25519 is supported from Go 1.24. + KeyExchangeMLKEM768X25519 = "mlkem768x25519-sha256" + + // An alias for KeyExchangeCurve25519SHA256. This kex ID will be added if + // KeyExchangeCurve25519SHA256 is requested for backward compatibility with + // OpenSSH versions up to 7.2. + keyExchangeCurve25519LibSSH = "curve25519-sha256@libssh.org" +) + +// The message authentication code (MAC) currently or previously implemented by +// this library, to use in [Config.MACs]. For a list, see the +// [Algorithms.MACs] returned by [SupportedAlgorithms] or +// [InsecureAlgorithms]. +const ( + HMACSHA256ETM = "hmac-sha2-256-etm@openssh.com" + HMACSHA512ETM = "hmac-sha2-512-etm@openssh.com" + HMACSHA256 = "hmac-sha2-256" + HMACSHA512 = "hmac-sha2-512" + HMACSHA1 = "hmac-sha1" + InsecureHMACSHA196 = "hmac-sha1-96" +) + +var ( + // supportedKexAlgos specifies key-exchange algorithms implemented by this + // package in preference order, excluding those with security issues. + supportedKexAlgos = []string{ + KeyExchangeMLKEM768X25519, + KeyExchangeCurve25519, + KeyExchangeECDHP256, + KeyExchangeECDHP384, + KeyExchangeECDHP521, + KeyExchangeDH14SHA256, + KeyExchangeDH16SHA512, + KeyExchangeDHGEXSHA256, + } + // defaultKexAlgos specifies the default preference for key-exchange + // algorithms in preference order. + defaultKexAlgos = []string{ + KeyExchangeMLKEM768X25519, + KeyExchangeCurve25519, + KeyExchangeECDHP256, + KeyExchangeECDHP384, + KeyExchangeECDHP521, + KeyExchangeDH14SHA256, + InsecureKeyExchangeDH14SHA1, + } + // insecureKexAlgos specifies key-exchange algorithms implemented by this + // package and which have security issues. + insecureKexAlgos = []string{ + InsecureKeyExchangeDH14SHA1, + InsecureKeyExchangeDH1SHA1, + InsecureKeyExchangeDHGEXSHA1, + } + // supportedCiphers specifies cipher algorithms implemented by this package + // in preference order, excluding those with security issues. + supportedCiphers = []string{ + CipherAES128GCM, + CipherAES256GCM, + CipherChaCha20Poly1305, + CipherAES128CTR, + CipherAES192CTR, + CipherAES256CTR, + } + // defaultCiphers specifies the default preference for ciphers algorithms + // in preference order. + defaultCiphers = supportedCiphers + // insecureCiphers specifies cipher algorithms implemented by this + // package and which have security issues. + insecureCiphers = []string{ + InsecureCipherAES128CBC, + InsecureCipherTripleDESCBC, + InsecureCipherRC4256, + InsecureCipherRC4128, + InsecureCipherRC4, + } + // supportedMACs specifies MAC algorithms implemented by this package in + // preference order, excluding those with security issues. + supportedMACs = []string{ + HMACSHA256ETM, + HMACSHA512ETM, + HMACSHA256, + HMACSHA512, + HMACSHA1, + } + // defaultMACs specifies the default preference for MAC algorithms in + // preference order. + defaultMACs = []string{ + HMACSHA256ETM, + HMACSHA512ETM, + HMACSHA256, + HMACSHA512, + HMACSHA1, + InsecureHMACSHA196, + } + // insecureMACs specifies MAC algorithms implemented by this + // package and which have security issues. + insecureMACs = []string{ + InsecureHMACSHA196, + } + // supportedHostKeyAlgos specifies the supported host-key algorithms (i.e. + // methods of authenticating servers) implemented by this package in + // preference order, excluding those with security issues. + supportedHostKeyAlgos = []string{ + CertAlgoRSASHA256v01, + CertAlgoRSASHA512v01, + CertAlgoECDSA256v01, + CertAlgoECDSA384v01, + CertAlgoECDSA521v01, + CertAlgoED25519v01, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoED25519, + } + // defaultHostKeyAlgos specifies the default preference for host-key + // algorithms in preference order. + defaultHostKeyAlgos = []string{ + CertAlgoRSASHA256v01, + CertAlgoRSASHA512v01, + CertAlgoRSAv01, + InsecureCertAlgoDSAv01, + CertAlgoECDSA256v01, + CertAlgoECDSA384v01, + CertAlgoECDSA521v01, + CertAlgoED25519v01, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + KeyAlgoRSA, + InsecureKeyAlgoDSA, + KeyAlgoED25519, + } + // insecureHostKeyAlgos specifies host-key algorithms implemented by this + // package and which have security issues. + insecureHostKeyAlgos = []string{ + KeyAlgoRSA, + InsecureKeyAlgoDSA, + CertAlgoRSAv01, + InsecureCertAlgoDSAv01, + } + // supportedPubKeyAuthAlgos specifies the supported client public key + // authentication algorithms. Note that this doesn't include certificate + // types since those use the underlying algorithm. Order is irrelevant. + supportedPubKeyAuthAlgos = []string{ + KeyAlgoED25519, + KeyAlgoSKED25519, + KeyAlgoSKECDSA256, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + } + + // defaultPubKeyAuthAlgos specifies the preferred client public key + // authentication algorithms. This list is sent to the client if it supports + // the server-sig-algs extension. Order is irrelevant. + defaultPubKeyAuthAlgos = []string{ + KeyAlgoED25519, + KeyAlgoSKED25519, + KeyAlgoSKECDSA256, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + KeyAlgoRSASHA256, + KeyAlgoRSASHA512, + KeyAlgoRSA, + InsecureKeyAlgoDSA, + } + // insecurePubKeyAuthAlgos specifies client public key authentication + // algorithms implemented by this package and which have security issues. + insecurePubKeyAuthAlgos = []string{ + KeyAlgoRSA, + InsecureKeyAlgoDSA, + } +) + +// NegotiatedAlgorithms defines algorithms negotiated between client and server. +type NegotiatedAlgorithms struct { + KeyExchange string + HostKey string + Read DirectionAlgorithms + Write DirectionAlgorithms +} + +// Algorithms defines a set of algorithms that can be configured in the client +// or server config for negotiation during a handshake. +type Algorithms struct { + KeyExchanges []string + Ciphers []string + MACs []string + HostKeys []string + PublicKeyAuths []string +} + +func init() { + if fips140.Enabled() { + defaultHostKeyAlgos = slices.DeleteFunc(defaultHostKeyAlgos, func(algo string) bool { + _, err := hashFunc(underlyingAlgo(algo)) + return err != nil + }) + defaultPubKeyAuthAlgos = slices.DeleteFunc(defaultPubKeyAuthAlgos, func(algo string) bool { + _, err := hashFunc(underlyingAlgo(algo)) + return err != nil + }) + } +} + +func hashFunc(format string) (crypto.Hash, error) { + switch format { + case KeyAlgoRSASHA256, KeyAlgoECDSA256, KeyAlgoSKED25519, KeyAlgoSKECDSA256: + return crypto.SHA256, nil + case KeyAlgoECDSA384: + return crypto.SHA384, nil + case KeyAlgoRSASHA512, KeyAlgoECDSA521: + return crypto.SHA512, nil + case KeyAlgoED25519: + // KeyAlgoED25519 doesn't pre-hash. + return 0, nil + case KeyAlgoRSA, InsecureKeyAlgoDSA: + if fips140.Enabled() { + return 0, fmt.Errorf("ssh: hash algorithm for format %q not allowed in FIPS 140 mode", format) + } + return crypto.SHA1, nil + default: + return 0, fmt.Errorf("ssh: hash algorithm for format %q not mapped", format) + } +} + +// SupportedAlgorithms returns algorithms currently implemented by this package, +// excluding those with security issues, which are returned by +// InsecureAlgorithms. The algorithms listed here are in preference order. +func SupportedAlgorithms() Algorithms { + return Algorithms{ + Ciphers: slices.Clone(supportedCiphers), + MACs: slices.Clone(supportedMACs), + KeyExchanges: slices.Clone(supportedKexAlgos), + HostKeys: slices.Clone(supportedHostKeyAlgos), + PublicKeyAuths: slices.Clone(supportedPubKeyAuthAlgos), + } +} + +// InsecureAlgorithms returns algorithms currently implemented by this package +// and which have security issues. +func InsecureAlgorithms() Algorithms { + return Algorithms{ + KeyExchanges: slices.Clone(insecureKexAlgos), + Ciphers: slices.Clone(insecureCiphers), + MACs: slices.Clone(insecureMACs), + HostKeys: slices.Clone(insecureHostKeyAlgos), + PublicKeyAuths: slices.Clone(insecurePubKeyAuthAlgos), + } +} + +var supportedCompressions = []string{compressionNone} + +// algorithmsForKeyFormat returns the supported signature algorithms for a given +// public key format (PublicKey.Type), in order of preference. See RFC 8332, +// Section 2. See also the note in sendKexInit on backwards compatibility. +func algorithmsForKeyFormat(keyFormat string) []string { + switch keyFormat { + case KeyAlgoRSA: + return []string{KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA} + case CertAlgoRSAv01: + return []string{CertAlgoRSASHA256v01, CertAlgoRSASHA512v01, CertAlgoRSAv01} + default: + return []string{keyFormat} + } +} + +// keyFormatForAlgorithm returns the key format corresponding to the given +// signature algorithm. It returns an empty string if the signature algorithm is +// invalid or unsupported. +func keyFormatForAlgorithm(sigAlgo string) string { + switch sigAlgo { + case KeyAlgoRSA, KeyAlgoRSASHA256, KeyAlgoRSASHA512: + return KeyAlgoRSA + case CertAlgoRSAv01, CertAlgoRSASHA256v01, CertAlgoRSASHA512v01: + return CertAlgoRSAv01 + case KeyAlgoED25519, + KeyAlgoSKED25519, + KeyAlgoSKECDSA256, + KeyAlgoECDSA256, + KeyAlgoECDSA384, + KeyAlgoECDSA521, + InsecureKeyAlgoDSA, + InsecureCertAlgoDSAv01, + CertAlgoECDSA256v01, + CertAlgoECDSA384v01, + CertAlgoECDSA521v01, + CertAlgoSKECDSA256v01, + CertAlgoED25519v01, + CertAlgoSKED25519v01: + return sigAlgo + default: + return "" + } +} + +// isRSA returns whether algo is a supported RSA algorithm, including certificate +// algorithms. +func isRSA(algo string) bool { + algos := algorithmsForKeyFormat(KeyAlgoRSA) + return slices.Contains(algos, underlyingAlgo(algo)) +} + +func isRSACert(algo string) bool { + _, ok := certKeyAlgoNames[algo] + if !ok { + return false + } + return isRSA(algo) +} + +// unexpectedMessageError results when the SSH message that we received didn't +// match what we wanted. +func unexpectedMessageError(expected, got uint8) error { + return fmt.Errorf("ssh: unexpected message type %d (expected %d)", got, expected) +} + +// parseError results from a malformed SSH message. +func parseError(tag uint8) error { + return fmt.Errorf("ssh: parse error in message type %d", tag) +} + +func findCommon(what string, client []string, server []string, isClient bool) (string, error) { + for _, c := range client { + for _, s := range server { + if c == s { + return c, nil + } + } + } + err := &AlgorithmNegotiationError{ + What: what, + } + if isClient { + err.SupportedAlgorithms = client + err.RequestedAlgorithms = server + } else { + err.SupportedAlgorithms = server + err.RequestedAlgorithms = client + } + return "", err +} + +// AlgorithmNegotiationError defines the error returned if the client and the +// server cannot agree on an algorithm for key exchange, host key, cipher, MAC. +type AlgorithmNegotiationError struct { + What string + // RequestedAlgorithms lists the algorithms supported by the peer. + RequestedAlgorithms []string + // SupportedAlgorithms lists the algorithms supported on our side. + SupportedAlgorithms []string +} + +func (a *AlgorithmNegotiationError) Error() string { + return fmt.Sprintf("ssh: no common algorithm for %s; we offered: %v, peer offered: %v", + a.What, a.SupportedAlgorithms, a.RequestedAlgorithms) +} + +// DirectionAlgorithms defines the algorithms negotiated in one direction +// (either read or write). +type DirectionAlgorithms struct { + Cipher string + MAC string + compression string +} + +// rekeyBytes returns a rekeying intervals in bytes. +func (a *DirectionAlgorithms) rekeyBytes() int64 { + // According to RFC 4344 block ciphers should rekey after + // 2^(BLOCKSIZE/4) blocks. For all AES flavors BLOCKSIZE is + // 128. + switch a.Cipher { + case CipherAES128CTR, CipherAES192CTR, CipherAES256CTR, CipherAES128GCM, CipherAES256GCM, InsecureCipherAES128CBC: + return 16 * (1 << 32) + + } + + // For others, stick with RFC 4253 recommendation to rekey after 1 Gb of data. + return 1 << 30 +} + +var aeadCiphers = map[string]bool{ + CipherAES128GCM: true, + CipherAES256GCM: true, + CipherChaCha20Poly1305: true, +} + +func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *NegotiatedAlgorithms, err error) { + result := &NegotiatedAlgorithms{} + + result.KeyExchange, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos, isClient) + if err != nil { + return + } + + result.HostKey, err = findCommon("host key", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos, isClient) + if err != nil { + return + } + + stoc, ctos := &result.Write, &result.Read + if isClient { + ctos, stoc = stoc, ctos + } + + ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer, isClient) + if err != nil { + return + } + + stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient, isClient) + if err != nil { + return + } + + if !aeadCiphers[ctos.Cipher] { + ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer, isClient) + if err != nil { + return + } + } + + if !aeadCiphers[stoc.Cipher] { + stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient, isClient) + if err != nil { + return + } + } + + ctos.compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer, isClient) + if err != nil { + return + } + + stoc.compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient, isClient) + if err != nil { + return + } + + return result, nil +} + +// If rekeythreshold is too small, we can't make any progress sending +// stuff. +const minRekeyThreshold uint64 = 256 + +// Config contains configuration data common to both ServerConfig and +// ClientConfig. +type Config struct { + // Rand provides the source of entropy for cryptographic + // primitives. If Rand is nil, the cryptographic random reader + // in package crypto/rand will be used. + Rand io.Reader + + // The maximum number of bytes sent or received after which a + // new key is negotiated. It must be at least 256. If + // unspecified, a size suitable for the chosen cipher is used. + RekeyThreshold uint64 + + // The allowed key exchanges algorithms. If unspecified then a default set + // of algorithms is used. Unsupported values are silently ignored. + KeyExchanges []string + + // The allowed cipher algorithms. If unspecified then a sensible default is + // used. Unsupported values are silently ignored. + Ciphers []string + + // The allowed MAC algorithms. If unspecified then a sensible default is + // used. Unsupported values are silently ignored. + MACs []string +} + +// SetDefaults sets sensible values for unset fields in config. This is +// exported for testing: Configs passed to SSH functions are copied and have +// default values set automatically. +func (c *Config) SetDefaults() { + if c.Rand == nil { + c.Rand = rand.Reader + } + if c.Ciphers == nil { + c.Ciphers = defaultCiphers + } + var ciphers []string + for _, c := range c.Ciphers { + if cipherModes[c] != nil { + // Ignore the cipher if we have no cipherModes definition. + ciphers = append(ciphers, c) + } + } + c.Ciphers = ciphers + + if c.KeyExchanges == nil { + c.KeyExchanges = defaultKexAlgos + } + var kexs []string + for _, k := range c.KeyExchanges { + if kexAlgoMap[k] != nil { + // Ignore the KEX if we have no kexAlgoMap definition. + kexs = append(kexs, k) + if k == KeyExchangeCurve25519 && !slices.Contains(c.KeyExchanges, keyExchangeCurve25519LibSSH) { + kexs = append(kexs, keyExchangeCurve25519LibSSH) + } + } + } + c.KeyExchanges = kexs + + if c.MACs == nil { + c.MACs = defaultMACs + } + var macs []string + for _, m := range c.MACs { + if macModes[m] != nil { + // Ignore the MAC if we have no macModes definition. + macs = append(macs, m) + } + } + c.MACs = macs + + if c.RekeyThreshold == 0 { + // cipher specific default + } else if c.RekeyThreshold < minRekeyThreshold { + c.RekeyThreshold = minRekeyThreshold + } else if c.RekeyThreshold >= math.MaxInt64 { + // Avoid weirdness if somebody uses -1 as a threshold. + c.RekeyThreshold = math.MaxInt64 + } +} + +// buildDataSignedForAuth returns the data that is signed in order to prove +// possession of a private key. See RFC 4252, section 7. algo is the advertised +// algorithm, and may be a certificate type. +func buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo string, pubKey []byte) []byte { + data := struct { + Session []byte + Type byte + User string + Service string + Method string + Sign bool + Algo string + PubKey []byte + }{ + sessionID, + msgUserAuthRequest, + req.User, + req.Service, + req.Method, + true, + algo, + pubKey, + } + return Marshal(data) +} + +func appendU16(buf []byte, n uint16) []byte { + return append(buf, byte(n>>8), byte(n)) +} + +func appendU32(buf []byte, n uint32) []byte { + return append(buf, byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) +} + +func appendU64(buf []byte, n uint64) []byte { + return append(buf, + byte(n>>56), byte(n>>48), byte(n>>40), byte(n>>32), + byte(n>>24), byte(n>>16), byte(n>>8), byte(n)) +} + +func appendInt(buf []byte, n int) []byte { + return appendU32(buf, uint32(n)) +} + +func appendString(buf []byte, s string) []byte { + buf = appendU32(buf, uint32(len(s))) + buf = append(buf, s...) + return buf +} + +func appendBool(buf []byte, b bool) []byte { + if b { + return append(buf, 1) + } + return append(buf, 0) +} + +// newCond is a helper to hide the fact that there is no usable zero +// value for sync.Cond. +func newCond() *sync.Cond { return sync.NewCond(new(sync.Mutex)) } + +// window represents the buffer available to clients +// wishing to write to a channel. +type window struct { + *sync.Cond + win uint32 // RFC 4254 5.2 says the window size can grow to 2^32-1 + writeWaiters int + closed bool +} + +// add adds win to the amount of window available +// for consumers. +func (w *window) add(win uint32) bool { + // a zero sized window adjust is a noop. + if win == 0 { + return true + } + w.L.Lock() + if w.win+win < win { + w.L.Unlock() + return false + } + w.win += win + // It is unusual that multiple goroutines would be attempting to reserve + // window space, but not guaranteed. Use broadcast to notify all waiters + // that additional window is available. + w.Broadcast() + w.L.Unlock() + return true +} + +// close sets the window to closed, so all reservations fail +// immediately. +func (w *window) close() { + w.L.Lock() + w.closed = true + w.Broadcast() + w.L.Unlock() +} + +// reserve reserves win from the available window capacity. +// If no capacity remains, reserve will block. reserve may +// return less than requested. +func (w *window) reserve(win uint32) (uint32, error) { + var err error + w.L.Lock() + w.writeWaiters++ + w.Broadcast() + for w.win == 0 && !w.closed { + w.Wait() + } + w.writeWaiters-- + if w.win < win { + win = w.win + } + w.win -= win + if w.closed { + err = io.EOF + } + w.L.Unlock() + return win, err +} + +// waitWriterBlocked waits until some goroutine is blocked for further +// writes. It is used in tests only. +func (w *window) waitWriterBlocked() { + w.Cond.L.Lock() + for w.writeWaiters == 0 { + w.Cond.Wait() + } + w.Cond.L.Unlock() +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/connection.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/connection.go new file mode 100644 index 0000000..613a71a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/connection.go @@ -0,0 +1,155 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "fmt" + "net" +) + +// OpenChannelError is returned if the other side rejects an +// OpenChannel request. +type OpenChannelError struct { + Reason RejectionReason + Message string +} + +func (e *OpenChannelError) Error() string { + return fmt.Sprintf("ssh: rejected: %s (%s)", e.Reason, e.Message) +} + +// ConnMetadata holds metadata for the connection. +type ConnMetadata interface { + // User returns the user ID for this connection. + User() string + + // SessionID returns the session hash, also denoted by H. + SessionID() []byte + + // ClientVersion returns the client's version string as hashed + // into the session ID. + ClientVersion() []byte + + // ServerVersion returns the server's version string as hashed + // into the session ID. + ServerVersion() []byte + + // RemoteAddr returns the remote address for this connection. + RemoteAddr() net.Addr + + // LocalAddr returns the local address for this connection. + LocalAddr() net.Addr +} + +// Conn represents an SSH connection for both server and client roles. +// Conn is the basis for implementing an application layer, such +// as ClientConn, which implements the traditional shell access for +// clients. +type Conn interface { + ConnMetadata + + // SendRequest sends a global request, and returns the + // reply. If wantReply is true, it returns the response status + // and payload. See also RFC 4254, section 4. + SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) + + // OpenChannel tries to open an channel. If the request is + // rejected, it returns *OpenChannelError. On success it returns + // the SSH Channel and a Go channel for incoming, out-of-band + // requests. The Go channel must be serviced, or the + // connection will hang. + OpenChannel(name string, data []byte) (Channel, <-chan *Request, error) + + // Close closes the underlying network connection + Close() error + + // Wait blocks until the connection has shut down, and returns the + // error causing the shutdown. + Wait() error + + // TODO(hanwen): consider exposing: + // RequestKeyChange + // Disconnect +} + +// AlgorithmsConnMetadata is a ConnMetadata that can return the algorithms +// negotiated between client and server. +type AlgorithmsConnMetadata interface { + ConnMetadata + Algorithms() NegotiatedAlgorithms +} + +// DiscardRequests consumes and rejects all requests from the +// passed-in channel. +func DiscardRequests(in <-chan *Request) { + for req := range in { + if req.WantReply { + req.Reply(false, nil) + } + } +} + +// A connection represents an incoming connection. +type connection struct { + transport *handshakeTransport + sshConn + + // The connection protocol. + *mux +} + +func (c *connection) Close() error { + return c.sshConn.conn.Close() +} + +// sshConn provides net.Conn metadata, but disallows direct reads and +// writes. +type sshConn struct { + conn net.Conn + + user string + sessionID []byte + clientVersion []byte + serverVersion []byte + algorithms NegotiatedAlgorithms +} + +func dup(src []byte) []byte { + dst := make([]byte, len(src)) + copy(dst, src) + return dst +} + +func (c *sshConn) User() string { + return c.user +} + +func (c *sshConn) RemoteAddr() net.Addr { + return c.conn.RemoteAddr() +} + +func (c *sshConn) Close() error { + return c.conn.Close() +} + +func (c *sshConn) LocalAddr() net.Addr { + return c.conn.LocalAddr() +} + +func (c *sshConn) SessionID() []byte { + return dup(c.sessionID) +} + +func (c *sshConn) ClientVersion() []byte { + return dup(c.clientVersion) +} + +func (c *sshConn) ServerVersion() []byte { + return dup(c.serverVersion) +} + +func (c *sshConn) Algorithms() NegotiatedAlgorithms { + return c.algorithms +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/doc.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/doc.go new file mode 100644 index 0000000..5b4de9e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/doc.go @@ -0,0 +1,34 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package ssh implements an SSH client and server. + +SSH is a transport security protocol, an authentication protocol and a +family of application protocols. The most typical application level +protocol is a remote shell and this is specifically implemented. However, +the multiplexed nature of SSH is exposed to users that wish to support +others. + +References: + + [PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD + [PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD + [SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1 + [SSH-CERTS]: https://datatracker.ietf.org/doc/html/draft-miller-ssh-cert-01 + [FIPS 140-3 mode]: https://go.dev/doc/security/fips140 + +This package does not fall under the stability promise of the Go language itself, +so its API may be changed when pressing needs arise. + +# FIPS 140-3 mode + +When the program is in [FIPS 140-3 mode], this package behaves as if only SP +800-140C and SP 800-140D approved cipher suites, signature algorithms, +certificate public key types and sizes, and key exchange and derivation +algorithms were implemented. Others are silently ignored and not negotiated, or +rejected. This set may depend on the algorithms supported by the FIPS 140-3 Go +Cryptographic Module selected with GOFIPS140, and may change across Go versions. +*/ +package ssh diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/handshake.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/handshake.go new file mode 100644 index 0000000..4be3cbb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/handshake.go @@ -0,0 +1,847 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "errors" + "fmt" + "io" + "log" + "net" + "slices" + "strings" + "sync" +) + +// debugHandshake, if set, prints messages sent and received. Key +// exchange messages are printed as if DH were used, so the debug +// messages are wrong when using ECDH. +const debugHandshake = false + +// chanSize sets the amount of buffering SSH connections. This is +// primarily for testing: setting chanSize=0 uncovers deadlocks more +// quickly. +const chanSize = 16 + +// maxPendingPackets sets the maximum number of packets to queue while waiting +// for KEX to complete. This limits the total pending data to maxPendingPackets +// * maxPacket bytes, which is ~16.8MB. +const maxPendingPackets = 64 + +// keyingTransport is a packet based transport that supports key +// changes. It need not be thread-safe. It should pass through +// msgNewKeys in both directions. +type keyingTransport interface { + packetConn + + // prepareKeyChange sets up a key change. The key change for a + // direction will be effected if a msgNewKeys message is sent + // or received. + prepareKeyChange(*NegotiatedAlgorithms, *kexResult) error + + // setStrictMode sets the strict KEX mode, notably triggering + // sequence number resets on sending or receiving msgNewKeys. + // If the sequence number is already > 1 when setStrictMode + // is called, an error is returned. + setStrictMode() error + + // setInitialKEXDone indicates to the transport that the initial key exchange + // was completed + setInitialKEXDone() +} + +// handshakeTransport implements rekeying on top of a keyingTransport +// and offers a thread-safe writePacket() interface. +type handshakeTransport struct { + conn keyingTransport + config *Config + + serverVersion []byte + clientVersion []byte + + // hostKeys is non-empty if we are the server. In that case, + // it contains all host keys that can be used to sign the + // connection. + hostKeys []Signer + + // publicKeyAuthAlgorithms is non-empty if we are the server. In that case, + // it contains the supported client public key authentication algorithms. + publicKeyAuthAlgorithms []string + + // hostKeyAlgorithms is non-empty if we are the client. In that case, + // we accept these key types from the server as host key. + hostKeyAlgorithms []string + + // On read error, incoming is closed, and readError is set. + incoming chan []byte + readError error + + mu sync.Mutex + // Condition for the above mutex. It is used to notify a completed key + // exchange or a write failure. Writes can wait for this condition while a + // key exchange is in progress. + writeCond *sync.Cond + writeError error + sentInitPacket []byte + sentInitMsg *kexInitMsg + // Used to queue writes when a key exchange is in progress. The length is + // limited by pendingPacketsSize. Once full, writes will block until the key + // exchange is completed or an error occurs. If not empty, it is emptied + // all at once when the key exchange is completed in kexLoop. + pendingPackets [][]byte + writePacketsLeft uint32 + writeBytesLeft int64 + userAuthComplete bool // whether the user authentication phase is complete + + // If the read loop wants to schedule a kex, it pings this + // channel, and the write loop will send out a kex + // message. + requestKex chan struct{} + + // If the other side requests or confirms a kex, its kexInit + // packet is sent here for the write loop to find it. + startKex chan *pendingKex + kexLoopDone chan struct{} // closed (with writeError non-nil) when kexLoop exits + + // data for host key checking + hostKeyCallback HostKeyCallback + dialAddress string + remoteAddr net.Addr + + // bannerCallback is non-empty if we are the client and it has been set in + // ClientConfig. In that case it is called during the user authentication + // dance to handle a custom server's message. + bannerCallback BannerCallback + + // Algorithms agreed in the last key exchange. + algorithms *NegotiatedAlgorithms + + // Counters exclusively owned by readLoop. + readPacketsLeft uint32 + readBytesLeft int64 + + // The session ID or nil if first kex did not complete yet. + sessionID []byte + + // strictMode indicates if the other side of the handshake indicated + // that we should be following the strict KEX protocol restrictions. + strictMode bool +} + +type pendingKex struct { + otherInit []byte + done chan error +} + +func newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport { + t := &handshakeTransport{ + conn: conn, + serverVersion: serverVersion, + clientVersion: clientVersion, + incoming: make(chan []byte, chanSize), + requestKex: make(chan struct{}, 1), + startKex: make(chan *pendingKex), + kexLoopDone: make(chan struct{}), + + config: config, + } + t.writeCond = sync.NewCond(&t.mu) + t.resetReadThresholds() + t.resetWriteThresholds() + + // We always start with a mandatory key exchange. + t.requestKex <- struct{}{} + return t +} + +func newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport { + t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) + t.dialAddress = dialAddr + t.remoteAddr = addr + t.hostKeyCallback = config.HostKeyCallback + t.bannerCallback = config.BannerCallback + if config.HostKeyAlgorithms != nil { + t.hostKeyAlgorithms = config.HostKeyAlgorithms + } else { + t.hostKeyAlgorithms = defaultHostKeyAlgos + } + go t.readLoop() + go t.kexLoop() + return t +} + +func newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport { + t := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion) + t.hostKeys = config.hostKeys + t.publicKeyAuthAlgorithms = config.PublicKeyAuthAlgorithms + go t.readLoop() + go t.kexLoop() + return t +} + +func (t *handshakeTransport) getSessionID() []byte { + return t.sessionID +} + +func (t *handshakeTransport) getAlgorithms() NegotiatedAlgorithms { + return *t.algorithms +} + +// waitSession waits for the session to be established. This should be +// the first thing to call after instantiating handshakeTransport. +func (t *handshakeTransport) waitSession() error { + p, err := t.readPacket() + if err != nil { + return err + } + if p[0] != msgNewKeys { + return fmt.Errorf("ssh: first packet should be msgNewKeys") + } + + return nil +} + +func (t *handshakeTransport) id() string { + if len(t.hostKeys) > 0 { + return "server" + } + return "client" +} + +func (t *handshakeTransport) printPacket(p []byte, write bool) { + action := "got" + if write { + action = "sent" + } + + if p[0] == msgChannelData || p[0] == msgChannelExtendedData { + log.Printf("%s %s data (packet %d bytes)", t.id(), action, len(p)) + } else { + msg, err := decode(p) + log.Printf("%s %s %T %v (%v)", t.id(), action, msg, msg, err) + } +} + +func (t *handshakeTransport) readPacket() ([]byte, error) { + p, ok := <-t.incoming + if !ok { + return nil, t.readError + } + return p, nil +} + +func (t *handshakeTransport) readLoop() { + first := true + for { + p, err := t.readOnePacket(first) + first = false + if err != nil { + t.readError = err + close(t.incoming) + break + } + // If this is the first kex, and strict KEX mode is enabled, + // we don't ignore any messages, as they may be used to manipulate + // the packet sequence numbers. + if !(t.sessionID == nil && t.strictMode) && (p[0] == msgIgnore || p[0] == msgDebug) { + continue + } + t.incoming <- p + } + + // Stop writers too. + t.recordWriteError(t.readError) + + // Unblock the writer should it wait for this. + close(t.startKex) + + // Don't close t.requestKex; it's also written to from writePacket. +} + +func (t *handshakeTransport) pushPacket(p []byte) error { + if debugHandshake { + t.printPacket(p, true) + } + return t.conn.writePacket(p) +} + +func (t *handshakeTransport) getWriteError() error { + t.mu.Lock() + defer t.mu.Unlock() + return t.writeError +} + +func (t *handshakeTransport) recordWriteError(err error) { + t.mu.Lock() + defer t.mu.Unlock() + if t.writeError == nil && err != nil { + t.writeError = err + t.writeCond.Broadcast() + } +} + +func (t *handshakeTransport) requestKeyExchange() { + select { + case t.requestKex <- struct{}{}: + default: + // something already requested a kex, so do nothing. + } +} + +func (t *handshakeTransport) resetWriteThresholds() { + t.writePacketsLeft = packetRekeyThreshold + if t.config.RekeyThreshold > 0 { + t.writeBytesLeft = int64(t.config.RekeyThreshold) + } else if t.algorithms != nil { + t.writeBytesLeft = t.algorithms.Write.rekeyBytes() + } else { + t.writeBytesLeft = 1 << 30 + } +} + +func (t *handshakeTransport) kexLoop() { + +write: + for t.getWriteError() == nil { + var request *pendingKex + var sent bool + + for request == nil || !sent { + var ok bool + select { + case request, ok = <-t.startKex: + if !ok { + break write + } + case <-t.requestKex: + break + } + + if !sent { + if err := t.sendKexInit(); err != nil { + t.recordWriteError(err) + break + } + sent = true + } + } + + if err := t.getWriteError(); err != nil { + if request != nil { + request.done <- err + } + break + } + + // We're not servicing t.requestKex, but that is OK: + // we never block on sending to t.requestKex. + + // We're not servicing t.startKex, but the remote end + // has just sent us a kexInitMsg, so it can't send + // another key change request, until we close the done + // channel on the pendingKex request. + + err := t.enterKeyExchange(request.otherInit) + + t.mu.Lock() + t.writeError = err + t.sentInitPacket = nil + t.sentInitMsg = nil + + t.resetWriteThresholds() + + // we have completed the key exchange. Since the + // reader is still blocked, it is safe to clear out + // the requestKex channel. This avoids the situation + // where: 1) we consumed our own request for the + // initial kex, and 2) the kex from the remote side + // caused another send on the requestKex channel, + clear: + for { + select { + case <-t.requestKex: + // + default: + break clear + } + } + + request.done <- t.writeError + + // kex finished. Push packets that we received while + // the kex was in progress. Don't look at t.startKex + // and don't increment writtenSinceKex: if we trigger + // another kex while we are still busy with the last + // one, things will become very confusing. + for _, p := range t.pendingPackets { + t.writeError = t.pushPacket(p) + if t.writeError != nil { + break + } + } + t.pendingPackets = t.pendingPackets[:0] + // Unblock writePacket if waiting for KEX. + t.writeCond.Broadcast() + t.mu.Unlock() + } + + // Unblock reader. + t.conn.Close() + + // drain startKex channel. We don't service t.requestKex + // because nobody does blocking sends there. + for request := range t.startKex { + request.done <- t.getWriteError() + } + + // Mark that the loop is done so that Close can return. + close(t.kexLoopDone) +} + +// The protocol uses uint32 for packet counters, so we can't let them +// reach 1<<32. We will actually read and write more packets than +// this, though: the other side may send more packets, and after we +// hit this limit on writing we will send a few more packets for the +// key exchange itself. +const packetRekeyThreshold = (1 << 31) + +func (t *handshakeTransport) resetReadThresholds() { + t.readPacketsLeft = packetRekeyThreshold + if t.config.RekeyThreshold > 0 { + t.readBytesLeft = int64(t.config.RekeyThreshold) + } else if t.algorithms != nil { + t.readBytesLeft = t.algorithms.Read.rekeyBytes() + } else { + t.readBytesLeft = 1 << 30 + } +} + +func (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) { + p, err := t.conn.readPacket() + if err != nil { + return nil, err + } + + if t.readPacketsLeft > 0 { + t.readPacketsLeft-- + } else { + t.requestKeyExchange() + } + + if t.readBytesLeft > 0 { + t.readBytesLeft -= int64(len(p)) + } else { + t.requestKeyExchange() + } + + if debugHandshake { + t.printPacket(p, false) + } + + if first && p[0] != msgKexInit { + return nil, fmt.Errorf("ssh: first packet should be msgKexInit") + } + + if p[0] != msgKexInit { + return p, nil + } + + firstKex := t.sessionID == nil + + kex := pendingKex{ + done: make(chan error, 1), + otherInit: p, + } + t.startKex <- &kex + err = <-kex.done + + if debugHandshake { + log.Printf("%s exited key exchange (first %v), err %v", t.id(), firstKex, err) + } + + if err != nil { + return nil, err + } + + t.resetReadThresholds() + + // By default, a key exchange is hidden from higher layers by + // translating it into msgIgnore. + successPacket := []byte{msgIgnore} + if firstKex { + // sendKexInit() for the first kex waits for + // msgNewKeys so the authentication process is + // guaranteed to happen over an encrypted transport. + successPacket = []byte{msgNewKeys} + } + + return successPacket, nil +} + +const ( + kexStrictClient = "kex-strict-c-v00@openssh.com" + kexStrictServer = "kex-strict-s-v00@openssh.com" +) + +// sendKexInit sends a key change message. +func (t *handshakeTransport) sendKexInit() error { + t.mu.Lock() + defer t.mu.Unlock() + if t.sentInitMsg != nil { + // kexInits may be sent either in response to the other side, + // or because our side wants to initiate a key change, so we + // may have already sent a kexInit. In that case, don't send a + // second kexInit. + return nil + } + + msg := &kexInitMsg{ + CiphersClientServer: t.config.Ciphers, + CiphersServerClient: t.config.Ciphers, + MACsClientServer: t.config.MACs, + MACsServerClient: t.config.MACs, + CompressionClientServer: supportedCompressions, + CompressionServerClient: supportedCompressions, + } + io.ReadFull(t.config.Rand, msg.Cookie[:]) + + // We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm, + // and possibly to add the ext-info extension algorithm. Since the slice may be the + // user owned KeyExchanges, we create our own slice in order to avoid using user + // owned memory by mistake. + msg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+2) // room for kex-strict and ext-info + msg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...) + + isServer := len(t.hostKeys) > 0 + if isServer { + for _, k := range t.hostKeys { + // If k is a MultiAlgorithmSigner, we restrict the signature + // algorithms. If k is a AlgorithmSigner, presume it supports all + // signature algorithms associated with the key format. If k is not + // an AlgorithmSigner, we can only assume it only supports the + // algorithms that matches the key format. (This means that Sign + // can't pick a different default). + keyFormat := k.PublicKey().Type() + + switch s := k.(type) { + case MultiAlgorithmSigner: + for _, algo := range algorithmsForKeyFormat(keyFormat) { + if slices.Contains(s.Algorithms(), underlyingAlgo(algo)) { + msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algo) + } + } + case AlgorithmSigner: + msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...) + default: + msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat) + } + } + + if t.sessionID == nil { + msg.KexAlgos = append(msg.KexAlgos, kexStrictServer) + } + } else { + msg.ServerHostKeyAlgos = t.hostKeyAlgorithms + + // As a client we opt in to receiving SSH_MSG_EXT_INFO so we know what + // algorithms the server supports for public key authentication. See RFC + // 8308, Section 2.1. + // + // We also send the strict KEX mode extension algorithm, in order to opt + // into the strict KEX mode. + if firstKeyExchange := t.sessionID == nil; firstKeyExchange { + msg.KexAlgos = append(msg.KexAlgos, "ext-info-c") + msg.KexAlgos = append(msg.KexAlgos, kexStrictClient) + } + + } + + packet := Marshal(msg) + + // writePacket destroys the contents, so save a copy. + packetCopy := make([]byte, len(packet)) + copy(packetCopy, packet) + + if err := t.pushPacket(packetCopy); err != nil { + return err + } + + t.sentInitMsg = msg + t.sentInitPacket = packet + + return nil +} + +var errSendBannerPhase = errors.New("ssh: SendAuthBanner outside of authentication phase") + +func (t *handshakeTransport) writePacket(p []byte) error { + t.mu.Lock() + defer t.mu.Unlock() + + switch p[0] { + case msgKexInit: + return errors.New("ssh: only handshakeTransport can send kexInit") + case msgNewKeys: + return errors.New("ssh: only handshakeTransport can send newKeys") + case msgUserAuthBanner: + if t.userAuthComplete { + return errSendBannerPhase + } + case msgUserAuthSuccess: + t.userAuthComplete = true + } + + if t.writeError != nil { + return t.writeError + } + + if t.sentInitMsg != nil { + if len(t.pendingPackets) < maxPendingPackets { + // Copy the packet so the writer can reuse the buffer. + cp := make([]byte, len(p)) + copy(cp, p) + t.pendingPackets = append(t.pendingPackets, cp) + return nil + } + for t.sentInitMsg != nil { + // Block and wait for KEX to complete or an error. + t.writeCond.Wait() + if t.writeError != nil { + return t.writeError + } + } + } + + if t.writeBytesLeft > 0 { + t.writeBytesLeft -= int64(len(p)) + } else { + t.requestKeyExchange() + } + + if t.writePacketsLeft > 0 { + t.writePacketsLeft-- + } else { + t.requestKeyExchange() + } + + if err := t.pushPacket(p); err != nil { + t.writeError = err + t.writeCond.Broadcast() + } + + return nil +} + +func (t *handshakeTransport) Close() error { + // Close the connection. This should cause the readLoop goroutine to wake up + // and close t.startKex, which will shut down kexLoop if running. + err := t.conn.Close() + + // Wait for the kexLoop goroutine to complete. + // At that point we know that the readLoop goroutine is complete too, + // because kexLoop itself waits for readLoop to close the startKex channel. + <-t.kexLoopDone + + return err +} + +func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { + if debugHandshake { + log.Printf("%s entered key exchange", t.id()) + } + + otherInit := &kexInitMsg{} + if err := Unmarshal(otherInitPacket, otherInit); err != nil { + return err + } + + magics := handshakeMagics{ + clientVersion: t.clientVersion, + serverVersion: t.serverVersion, + clientKexInit: otherInitPacket, + serverKexInit: t.sentInitPacket, + } + + clientInit := otherInit + serverInit := t.sentInitMsg + isClient := len(t.hostKeys) == 0 + if isClient { + clientInit, serverInit = serverInit, clientInit + + magics.clientKexInit = t.sentInitPacket + magics.serverKexInit = otherInitPacket + } + + var err error + t.algorithms, err = findAgreedAlgorithms(isClient, clientInit, serverInit) + if err != nil { + return err + } + + if t.sessionID == nil && ((isClient && slices.Contains(serverInit.KexAlgos, kexStrictServer)) || (!isClient && slices.Contains(clientInit.KexAlgos, kexStrictClient))) { + t.strictMode = true + if err := t.conn.setStrictMode(); err != nil { + return err + } + } + + // We don't send FirstKexFollows, but we handle receiving it. + // + // RFC 4253 section 7 defines the kex and the agreement method for + // first_kex_packet_follows. It states that the guessed packet + // should be ignored if the "kex algorithm and/or the host + // key algorithm is guessed wrong (server and client have + // different preferred algorithm), or if any of the other + // algorithms cannot be agreed upon". The other algorithms have + // already been checked above so the kex algorithm and host key + // algorithm are checked here. + if otherInit.FirstKexFollows && (clientInit.KexAlgos[0] != serverInit.KexAlgos[0] || clientInit.ServerHostKeyAlgos[0] != serverInit.ServerHostKeyAlgos[0]) { + // other side sent a kex message for the wrong algorithm, + // which we have to ignore. + if _, err := t.conn.readPacket(); err != nil { + return err + } + } + + kex, ok := kexAlgoMap[t.algorithms.KeyExchange] + if !ok { + return fmt.Errorf("ssh: unexpected key exchange algorithm %v", t.algorithms.KeyExchange) + } + + var result *kexResult + if len(t.hostKeys) > 0 { + result, err = t.server(kex, &magics) + } else { + result, err = t.client(kex, &magics) + } + + if err != nil { + return err + } + + firstKeyExchange := t.sessionID == nil + if firstKeyExchange { + t.sessionID = result.H + } + result.SessionID = t.sessionID + + if err := t.conn.prepareKeyChange(t.algorithms, result); err != nil { + return err + } + if err = t.conn.writePacket([]byte{msgNewKeys}); err != nil { + return err + } + + // On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO + // message with the server-sig-algs extension if the client supports it. See + // RFC 8308, Sections 2.4 and 3.1, and [PROTOCOL], Section 1.9. + if !isClient && firstKeyExchange && slices.Contains(clientInit.KexAlgos, "ext-info-c") { + supportedPubKeyAuthAlgosList := strings.Join(t.publicKeyAuthAlgorithms, ",") + extInfo := &extInfoMsg{ + NumExtensions: 2, + Payload: make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)+4+16+4+1), + } + extInfo.Payload = appendInt(extInfo.Payload, len("server-sig-algs")) + extInfo.Payload = append(extInfo.Payload, "server-sig-algs"...) + extInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList)) + extInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...) + extInfo.Payload = appendInt(extInfo.Payload, len("ping@openssh.com")) + extInfo.Payload = append(extInfo.Payload, "ping@openssh.com"...) + extInfo.Payload = appendInt(extInfo.Payload, 1) + extInfo.Payload = append(extInfo.Payload, "0"...) + if err := t.conn.writePacket(Marshal(extInfo)); err != nil { + return err + } + } + + if packet, err := t.conn.readPacket(); err != nil { + return err + } else if packet[0] != msgNewKeys { + return unexpectedMessageError(msgNewKeys, packet[0]) + } + + if firstKeyExchange { + // Indicates to the transport that the first key exchange is completed + // after receiving SSH_MSG_NEWKEYS. + t.conn.setInitialKEXDone() + } + + return nil +} + +// algorithmSignerWrapper is an AlgorithmSigner that only supports the default +// key format algorithm. +// +// This is technically a violation of the AlgorithmSigner interface, but it +// should be unreachable given where we use this. Anyway, at least it returns an +// error instead of panicing or producing an incorrect signature. +type algorithmSignerWrapper struct { + Signer +} + +func (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if algorithm != underlyingAlgo(a.PublicKey().Type()) { + return nil, errors.New("ssh: internal error: algorithmSignerWrapper invoked with non-default algorithm") + } + return a.Sign(rand, data) +} + +func pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner { + for _, k := range hostKeys { + if s, ok := k.(MultiAlgorithmSigner); ok { + if !slices.Contains(s.Algorithms(), underlyingAlgo(algo)) { + continue + } + } + + if algo == k.PublicKey().Type() { + return algorithmSignerWrapper{k} + } + + k, ok := k.(AlgorithmSigner) + if !ok { + continue + } + for _, a := range algorithmsForKeyFormat(k.PublicKey().Type()) { + if algo == a { + return k + } + } + } + return nil +} + +func (t *handshakeTransport) server(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { + hostKey := pickHostKey(t.hostKeys, t.algorithms.HostKey) + if hostKey == nil { + return nil, errors.New("ssh: internal error: negotiated unsupported signature type") + } + + r, err := kex.Server(t.conn, t.config.Rand, magics, hostKey, t.algorithms.HostKey) + return r, err +} + +func (t *handshakeTransport) client(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) { + result, err := kex.Client(t.conn, t.config.Rand, magics) + if err != nil { + return nil, err + } + + hostKey, err := ParsePublicKey(result.HostKey) + if err != nil { + return nil, err + } + + if err := verifyHostKeySignature(hostKey, t.algorithms.HostKey, result); err != nil { + return nil, err + } + + err = t.hostKeyCallback(t.dialAddress, t.remoteAddr, hostKey) + if err != nil { + return nil, err + } + + return result, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go new file mode 100644 index 0000000..af81d26 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.go @@ -0,0 +1,93 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package bcrypt_pbkdf implements bcrypt_pbkdf(3) from OpenBSD. +// +// See https://flak.tedunangst.com/post/bcrypt-pbkdf and +// https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libutil/bcrypt_pbkdf.c. +package bcrypt_pbkdf + +import ( + "crypto/sha512" + "errors" + "golang.org/x/crypto/blowfish" +) + +const blockSize = 32 + +// Key derives a key from the password, salt and rounds count, returning a +// []byte of length keyLen that can be used as cryptographic key. +func Key(password, salt []byte, rounds, keyLen int) ([]byte, error) { + if rounds < 1 { + return nil, errors.New("bcrypt_pbkdf: number of rounds is too small") + } + if len(password) == 0 { + return nil, errors.New("bcrypt_pbkdf: empty password") + } + if len(salt) == 0 || len(salt) > 1<<20 { + return nil, errors.New("bcrypt_pbkdf: bad salt length") + } + if keyLen > 1024 { + return nil, errors.New("bcrypt_pbkdf: keyLen is too large") + } + + numBlocks := (keyLen + blockSize - 1) / blockSize + key := make([]byte, numBlocks*blockSize) + + h := sha512.New() + h.Write(password) + shapass := h.Sum(nil) + + shasalt := make([]byte, 0, sha512.Size) + cnt, tmp := make([]byte, 4), make([]byte, blockSize) + for block := 1; block <= numBlocks; block++ { + h.Reset() + h.Write(salt) + cnt[0] = byte(block >> 24) + cnt[1] = byte(block >> 16) + cnt[2] = byte(block >> 8) + cnt[3] = byte(block) + h.Write(cnt) + bcryptHash(tmp, shapass, h.Sum(shasalt)) + + out := make([]byte, blockSize) + copy(out, tmp) + for i := 2; i <= rounds; i++ { + h.Reset() + h.Write(tmp) + bcryptHash(tmp, shapass, h.Sum(shasalt)) + for j := 0; j < len(out); j++ { + out[j] ^= tmp[j] + } + } + + for i, v := range out { + key[i*numBlocks+(block-1)] = v + } + } + return key[:keyLen], nil +} + +var magic = []byte("OxychromaticBlowfishSwatDynamite") + +func bcryptHash(out, shapass, shasalt []byte) { + c, err := blowfish.NewSaltedCipher(shapass, shasalt) + if err != nil { + panic(err) + } + for i := 0; i < 64; i++ { + blowfish.ExpandKey(shasalt, c) + blowfish.ExpandKey(shapass, c) + } + copy(out, magic) + for i := 0; i < 32; i += 8 { + for j := 0; j < 64; j++ { + c.Encrypt(out[i:i+8], out[i:i+8]) + } + } + // Swap bytes due to different endianness. + for i := 0; i < 32; i += 4 { + out[i+3], out[i+2], out[i+1], out[i] = out[i], out[i+1], out[i+2], out[i+3] + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/kex.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/kex.go new file mode 100644 index 0000000..5f7fdd8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/kex.go @@ -0,0 +1,807 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/fips140" + "crypto/rand" + "encoding/binary" + "errors" + "fmt" + "io" + "math/big" + "slices" + + "golang.org/x/crypto/curve25519" +) + +const ( + // This is the group called diffie-hellman-group1-sha1 in RFC 4253 and + // Oakley Group 2 in RFC 2409. + oakleyGroup2 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF" + // This is the group called diffie-hellman-group14-sha1 in RFC 4253 and + // Oakley Group 14 in RFC 3526. + oakleyGroup14 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF" + // This is the group called diffie-hellman-group15-sha512 in RFC 8268 and + // Oakley Group 15 in RFC 3526. + oakleyGroup15 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" + // This is the group called diffie-hellman-group16-sha512 in RFC 8268 and + // Oakley Group 16 in RFC 3526. + oakleyGroup16 = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF" +) + +// kexResult captures the outcome of a key exchange. +type kexResult struct { + // Session hash. See also RFC 4253, section 8. + H []byte + + // Shared secret. See also RFC 4253, section 8. + K []byte + + // Host key as hashed into H. + HostKey []byte + + // Signature of H. + Signature []byte + + // A cryptographic hash function that matches the security + // level of the key exchange algorithm. It is used for + // calculating H, and for deriving keys from H and K. + Hash crypto.Hash + + // The session ID, which is the first H computed. This is used + // to derive key material inside the transport. + SessionID []byte +} + +// handshakeMagics contains data that is always included in the +// session hash. +type handshakeMagics struct { + clientVersion, serverVersion []byte + clientKexInit, serverKexInit []byte +} + +func (m *handshakeMagics) write(w io.Writer) { + writeString(w, m.clientVersion) + writeString(w, m.serverVersion) + writeString(w, m.clientKexInit) + writeString(w, m.serverKexInit) +} + +// kexAlgorithm abstracts different key exchange algorithms. +type kexAlgorithm interface { + // Server runs server-side key agreement, signing the result + // with a hostkey. algo is the negotiated algorithm, and may + // be a certificate type. + Server(p packetConn, rand io.Reader, magics *handshakeMagics, s AlgorithmSigner, algo string) (*kexResult, error) + + // Client runs the client-side key agreement. Caller is + // responsible for verifying the host key signature. + Client(p packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) +} + +// dhGroup is a multiplicative group suitable for implementing Diffie-Hellman key agreement. +type dhGroup struct { + g, p, pMinus1 *big.Int + hashFunc crypto.Hash +} + +func (group *dhGroup) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) { + if theirPublic.Cmp(bigOne) <= 0 || theirPublic.Cmp(group.pMinus1) >= 0 { + return nil, errors.New("ssh: DH parameter out of bounds") + } + return new(big.Int).Exp(theirPublic, myPrivate, group.p), nil +} + +func (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { + var x *big.Int + for { + var err error + if x, err = rand.Int(randSource, group.pMinus1); err != nil { + return nil, err + } + if x.Sign() > 0 { + break + } + } + + X := new(big.Int).Exp(group.g, x, group.p) + kexDHInit := kexDHInitMsg{ + X: X, + } + if err := c.writePacket(Marshal(&kexDHInit)); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexDHReply kexDHReplyMsg + if err = Unmarshal(packet, &kexDHReply); err != nil { + return nil, err + } + + ki, err := group.diffieHellman(kexDHReply.Y, x) + if err != nil { + return nil, err + } + + h := group.hashFunc.New() + magics.write(h) + writeString(h, kexDHReply.HostKey) + writeInt(h, X) + writeInt(h, kexDHReply.Y) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: kexDHReply.HostKey, + Signature: kexDHReply.Signature, + Hash: group.hashFunc, + }, nil +} + +func (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + packet, err := c.readPacket() + if err != nil { + return + } + var kexDHInit kexDHInitMsg + if err = Unmarshal(packet, &kexDHInit); err != nil { + return + } + + var y *big.Int + for { + if y, err = rand.Int(randSource, group.pMinus1); err != nil { + return + } + if y.Sign() > 0 { + break + } + } + + Y := new(big.Int).Exp(group.g, y, group.p) + ki, err := group.diffieHellman(kexDHInit.X, y) + if err != nil { + return nil, err + } + + hostKeyBytes := priv.PublicKey().Marshal() + + h := group.hashFunc.New() + magics.write(h) + writeString(h, hostKeyBytes) + writeInt(h, kexDHInit.X) + writeInt(h, Y) + + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, randSource, H, algo) + if err != nil { + return nil, err + } + + kexDHReply := kexDHReplyMsg{ + HostKey: hostKeyBytes, + Y: Y, + Signature: sig, + } + packet = Marshal(&kexDHReply) + + err = c.writePacket(packet) + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: group.hashFunc, + }, err +} + +// ecdh performs Elliptic Curve Diffie-Hellman key exchange as +// described in RFC 5656, section 4. +type ecdh struct { + curve elliptic.Curve +} + +func (kex *ecdh) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { + ephKey, err := ecdsa.GenerateKey(kex.curve, rand) + if err != nil { + return nil, err + } + + kexInit := kexECDHInitMsg{ + ClientPubKey: elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y), + } + + serialized := Marshal(&kexInit) + if err := c.writePacket(serialized); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var reply kexECDHReplyMsg + if err = Unmarshal(packet, &reply); err != nil { + return nil, err + } + + x, y, err := unmarshalECKey(kex.curve, reply.EphemeralPubKey) + if err != nil { + return nil, err + } + + // generate shared secret + secret, _ := kex.curve.ScalarMult(x, y, ephKey.D.Bytes()) + + h := ecHash(kex.curve).New() + magics.write(h) + writeString(h, reply.HostKey) + writeString(h, kexInit.ClientPubKey) + writeString(h, reply.EphemeralPubKey) + K := make([]byte, intLength(secret)) + marshalInt(K, secret) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: reply.HostKey, + Signature: reply.Signature, + Hash: ecHash(kex.curve), + }, nil +} + +// unmarshalECKey parses and checks an EC key. +func unmarshalECKey(curve elliptic.Curve, pubkey []byte) (x, y *big.Int, err error) { + x, y = elliptic.Unmarshal(curve, pubkey) + if x == nil { + return nil, nil, errors.New("ssh: elliptic.Unmarshal failure") + } + if !validateECPublicKey(curve, x, y) { + return nil, nil, errors.New("ssh: public key not on curve") + } + return x, y, nil +} + +// validateECPublicKey checks that the point is a valid public key for +// the given curve. See [SEC1], 3.2.2 +func validateECPublicKey(curve elliptic.Curve, x, y *big.Int) bool { + if x.Sign() == 0 && y.Sign() == 0 { + return false + } + + if x.Cmp(curve.Params().P) >= 0 { + return false + } + + if y.Cmp(curve.Params().P) >= 0 { + return false + } + + if !curve.IsOnCurve(x, y) { + return false + } + + // We don't check if N * PubKey == 0, since + // + // - the NIST curves have cofactor = 1, so this is implicit. + // (We don't foresee an implementation that supports non NIST + // curves) + // + // - for ephemeral keys, we don't need to worry about small + // subgroup attacks. + return true +} + +func (kex *ecdh) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexECDHInit kexECDHInitMsg + if err = Unmarshal(packet, &kexECDHInit); err != nil { + return nil, err + } + + clientX, clientY, err := unmarshalECKey(kex.curve, kexECDHInit.ClientPubKey) + if err != nil { + return nil, err + } + + // We could cache this key across multiple users/multiple + // connection attempts, but the benefit is small. OpenSSH + // generates a new key for each incoming connection. + ephKey, err := ecdsa.GenerateKey(kex.curve, rand) + if err != nil { + return nil, err + } + + hostKeyBytes := priv.PublicKey().Marshal() + + serializedEphKey := elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y) + + // generate shared secret + secret, _ := kex.curve.ScalarMult(clientX, clientY, ephKey.D.Bytes()) + + h := ecHash(kex.curve).New() + magics.write(h) + writeString(h, hostKeyBytes) + writeString(h, kexECDHInit.ClientPubKey) + writeString(h, serializedEphKey) + + K := make([]byte, intLength(secret)) + marshalInt(K, secret) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, rand, H, algo) + if err != nil { + return nil, err + } + + reply := kexECDHReplyMsg{ + EphemeralPubKey: serializedEphKey, + HostKey: hostKeyBytes, + Signature: sig, + } + + serialized := Marshal(&reply) + if err := c.writePacket(serialized); err != nil { + return nil, err + } + + return &kexResult{ + H: H, + K: K, + HostKey: reply.HostKey, + Signature: sig, + Hash: ecHash(kex.curve), + }, nil +} + +// ecHash returns the hash to match the given elliptic curve, see RFC +// 5656, section 6.2.1 +func ecHash(curve elliptic.Curve) crypto.Hash { + bitSize := curve.Params().BitSize + switch { + case bitSize <= 256: + return crypto.SHA256 + case bitSize <= 384: + return crypto.SHA384 + } + return crypto.SHA512 +} + +// kexAlgoMap defines the supported KEXs. KEXs not included are not supported +// and will not be negotiated, even if explicitly configured. When FIPS mode is +// enabled, only FIPS-approved algorithms are included. +var kexAlgoMap = map[string]kexAlgorithm{} + +func init() { + // mlkem768x25519-sha256 we'll work with fips140=on but not fips140=only + // until Go 1.26. + kexAlgoMap[KeyExchangeMLKEM768X25519] = &mlkem768WithCurve25519sha256{} + kexAlgoMap[KeyExchangeECDHP521] = &ecdh{elliptic.P521()} + kexAlgoMap[KeyExchangeECDHP384] = &ecdh{elliptic.P384()} + kexAlgoMap[KeyExchangeECDHP256] = &ecdh{elliptic.P256()} + + if fips140.Enabled() { + defaultKexAlgos = slices.DeleteFunc(defaultKexAlgos, func(algo string) bool { + _, ok := kexAlgoMap[algo] + return !ok + }) + return + } + + p, _ := new(big.Int).SetString(oakleyGroup2, 16) + kexAlgoMap[InsecureKeyExchangeDH1SHA1] = &dhGroup{ + g: new(big.Int).SetInt64(2), + p: p, + pMinus1: new(big.Int).Sub(p, bigOne), + hashFunc: crypto.SHA1, + } + + p, _ = new(big.Int).SetString(oakleyGroup14, 16) + group14 := &dhGroup{ + g: new(big.Int).SetInt64(2), + p: p, + pMinus1: new(big.Int).Sub(p, bigOne), + } + + kexAlgoMap[InsecureKeyExchangeDH14SHA1] = &dhGroup{ + g: group14.g, p: group14.p, pMinus1: group14.pMinus1, + hashFunc: crypto.SHA1, + } + kexAlgoMap[KeyExchangeDH14SHA256] = &dhGroup{ + g: group14.g, p: group14.p, pMinus1: group14.pMinus1, + hashFunc: crypto.SHA256, + } + + p, _ = new(big.Int).SetString(oakleyGroup16, 16) + + kexAlgoMap[KeyExchangeDH16SHA512] = &dhGroup{ + g: new(big.Int).SetInt64(2), + p: p, + pMinus1: new(big.Int).Sub(p, bigOne), + hashFunc: crypto.SHA512, + } + + kexAlgoMap[KeyExchangeCurve25519] = &curve25519sha256{} + kexAlgoMap[keyExchangeCurve25519LibSSH] = &curve25519sha256{} + kexAlgoMap[InsecureKeyExchangeDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1} + kexAlgoMap[KeyExchangeDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256} +} + +// curve25519sha256 implements the curve25519-sha256 (formerly known as +// curve25519-sha256@libssh.org) key exchange method, as described in RFC 8731. +type curve25519sha256 struct{} + +type curve25519KeyPair struct { + priv [32]byte + pub [32]byte +} + +func (kp *curve25519KeyPair) generate(rand io.Reader) error { + if _, err := io.ReadFull(rand, kp.priv[:]); err != nil { + return err + } + p, err := curve25519.X25519(kp.priv[:], curve25519.Basepoint) + if err != nil { + return fmt.Errorf("curve25519: %w", err) + } + if len(p) != 32 { + return fmt.Errorf("curve25519: internal error: X25519 returned %d bytes, expected 32", len(p)) + } + copy(kp.pub[:], p) + return nil +} + +func (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { + var kp curve25519KeyPair + if err := kp.generate(rand); err != nil { + return nil, err + } + if err := c.writePacket(Marshal(&kexECDHInitMsg{kp.pub[:]})); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var reply kexECDHReplyMsg + if err = Unmarshal(packet, &reply); err != nil { + return nil, err + } + if len(reply.EphemeralPubKey) != 32 { + return nil, errors.New("ssh: peer's curve25519 public value has wrong length") + } + + secret, err := curve25519.X25519(kp.priv[:], reply.EphemeralPubKey) + if err != nil { + return nil, fmt.Errorf("ssh: peer's curve25519 public value is not valid: %w", err) + } + + h := crypto.SHA256.New() + magics.write(h) + writeString(h, reply.HostKey) + writeString(h, kp.pub[:]) + writeString(h, reply.EphemeralPubKey) + + ki := new(big.Int).SetBytes(secret[:]) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: reply.HostKey, + Signature: reply.Signature, + Hash: crypto.SHA256, + }, nil +} + +func (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + packet, err := c.readPacket() + if err != nil { + return + } + var kexInit kexECDHInitMsg + if err = Unmarshal(packet, &kexInit); err != nil { + return + } + + if len(kexInit.ClientPubKey) != 32 { + return nil, errors.New("ssh: peer's curve25519 public value has wrong length") + } + + var kp curve25519KeyPair + if err := kp.generate(rand); err != nil { + return nil, err + } + + secret, err := curve25519.X25519(kp.priv[:], kexInit.ClientPubKey) + if err != nil { + return nil, fmt.Errorf("ssh: peer's curve25519 public value is not valid: %w", err) + } + + hostKeyBytes := priv.PublicKey().Marshal() + + h := crypto.SHA256.New() + magics.write(h) + writeString(h, hostKeyBytes) + writeString(h, kexInit.ClientPubKey) + writeString(h, kp.pub[:]) + + ki := new(big.Int).SetBytes(secret[:]) + K := make([]byte, intLength(ki)) + marshalInt(K, ki) + h.Write(K) + + H := h.Sum(nil) + + sig, err := signAndMarshal(priv, rand, H, algo) + if err != nil { + return nil, err + } + + reply := kexECDHReplyMsg{ + EphemeralPubKey: kp.pub[:], + HostKey: hostKeyBytes, + Signature: sig, + } + if err := c.writePacket(Marshal(&reply)); err != nil { + return nil, err + } + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: crypto.SHA256, + }, nil +} + +// dhGEXSHA implements the diffie-hellman-group-exchange-sha1 and +// diffie-hellman-group-exchange-sha256 key agreement protocols, +// as described in RFC 4419 +type dhGEXSHA struct { + hashFunc crypto.Hash +} + +const ( + dhGroupExchangeMinimumBits = 2048 + dhGroupExchangePreferredBits = 2048 + dhGroupExchangeMaximumBits = 8192 +) + +func (gex *dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) { + // Send GexRequest + kexDHGexRequest := kexDHGexRequestMsg{ + MinBits: dhGroupExchangeMinimumBits, + PreferredBits: dhGroupExchangePreferredBits, + MaxBits: dhGroupExchangeMaximumBits, + } + if err := c.writePacket(Marshal(&kexDHGexRequest)); err != nil { + return nil, err + } + + // Receive GexGroup + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var msg kexDHGexGroupMsg + if err = Unmarshal(packet, &msg); err != nil { + return nil, err + } + + // reject if p's bit length < dhGroupExchangeMinimumBits or > dhGroupExchangeMaximumBits + if msg.P.BitLen() < dhGroupExchangeMinimumBits || msg.P.BitLen() > dhGroupExchangeMaximumBits { + return nil, fmt.Errorf("ssh: server-generated gex p is out of range (%d bits)", msg.P.BitLen()) + } + + // Check if g is safe by verifying that 1 < g < p-1 + pMinusOne := new(big.Int).Sub(msg.P, bigOne) + if msg.G.Cmp(bigOne) <= 0 || msg.G.Cmp(pMinusOne) >= 0 { + return nil, fmt.Errorf("ssh: server provided gex g is not safe") + } + + // Send GexInit + pHalf := new(big.Int).Rsh(msg.P, 1) + x, err := rand.Int(randSource, pHalf) + if err != nil { + return nil, err + } + X := new(big.Int).Exp(msg.G, x, msg.P) + kexDHGexInit := kexDHGexInitMsg{ + X: X, + } + if err := c.writePacket(Marshal(&kexDHGexInit)); err != nil { + return nil, err + } + + // Receive GexReply + packet, err = c.readPacket() + if err != nil { + return nil, err + } + + var kexDHGexReply kexDHGexReplyMsg + if err = Unmarshal(packet, &kexDHGexReply); err != nil { + return nil, err + } + + if kexDHGexReply.Y.Cmp(bigOne) <= 0 || kexDHGexReply.Y.Cmp(pMinusOne) >= 0 { + return nil, errors.New("ssh: DH parameter out of bounds") + } + kInt := new(big.Int).Exp(kexDHGexReply.Y, x, msg.P) + + // Check if k is safe by verifying that k > 1 and k < p - 1 + if kInt.Cmp(bigOne) <= 0 || kInt.Cmp(pMinusOne) >= 0 { + return nil, fmt.Errorf("ssh: derived k is not safe") + } + + h := gex.hashFunc.New() + magics.write(h) + writeString(h, kexDHGexReply.HostKey) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits)) + binary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits)) + writeInt(h, msg.P) + writeInt(h, msg.G) + writeInt(h, X) + writeInt(h, kexDHGexReply.Y) + K := make([]byte, intLength(kInt)) + marshalInt(K, kInt) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: kexDHGexReply.HostKey, + Signature: kexDHGexReply.Signature, + Hash: gex.hashFunc, + }, nil +} + +// Server half implementation of the Diffie Hellman Key Exchange with SHA1 and SHA256. +func (gex *dhGEXSHA) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) { + // Receive GexRequest + packet, err := c.readPacket() + if err != nil { + return + } + var kexDHGexRequest kexDHGexRequestMsg + if err = Unmarshal(packet, &kexDHGexRequest); err != nil { + return + } + // We check that the request received is valid and that the MaxBits + // requested are at least equal to our supported minimum. This is the same + // check done in OpenSSH: + // https://github.com/openssh/openssh-portable/blob/80a2f64b/kexgexs.c#L94 + // + // Furthermore, we also check that the required MinBits are less than or + // equal to 4096 because we can use up to Oakley Group 16. + if kexDHGexRequest.MaxBits < kexDHGexRequest.MinBits || kexDHGexRequest.PreferredBits < kexDHGexRequest.MinBits || + kexDHGexRequest.MaxBits < kexDHGexRequest.PreferredBits || kexDHGexRequest.MaxBits < dhGroupExchangeMinimumBits || + kexDHGexRequest.MinBits > 4096 { + return nil, fmt.Errorf("ssh: DH GEX request out of range, min: %d, max: %d, preferred: %d", kexDHGexRequest.MinBits, + kexDHGexRequest.MaxBits, kexDHGexRequest.PreferredBits) + } + + var p *big.Int + // We hardcode sending Oakley Group 14 (2048 bits), Oakley Group 15 (3072 + // bits) or Oakley Group 16 (4096 bits), based on the requested max size. + if kexDHGexRequest.MaxBits < 3072 { + p, _ = new(big.Int).SetString(oakleyGroup14, 16) + } else if kexDHGexRequest.MaxBits < 4096 { + p, _ = new(big.Int).SetString(oakleyGroup15, 16) + } else { + p, _ = new(big.Int).SetString(oakleyGroup16, 16) + } + + g := big.NewInt(2) + msg := &kexDHGexGroupMsg{ + P: p, + G: g, + } + if err := c.writePacket(Marshal(msg)); err != nil { + return nil, err + } + + // Receive GexInit + packet, err = c.readPacket() + if err != nil { + return + } + var kexDHGexInit kexDHGexInitMsg + if err = Unmarshal(packet, &kexDHGexInit); err != nil { + return + } + + pHalf := new(big.Int).Rsh(p, 1) + + y, err := rand.Int(randSource, pHalf) + if err != nil { + return + } + Y := new(big.Int).Exp(g, y, p) + + pMinusOne := new(big.Int).Sub(p, bigOne) + if kexDHGexInit.X.Cmp(bigOne) <= 0 || kexDHGexInit.X.Cmp(pMinusOne) >= 0 { + return nil, errors.New("ssh: DH parameter out of bounds") + } + kInt := new(big.Int).Exp(kexDHGexInit.X, y, p) + + hostKeyBytes := priv.PublicKey().Marshal() + + h := gex.hashFunc.New() + magics.write(h) + writeString(h, hostKeyBytes) + binary.Write(h, binary.BigEndian, kexDHGexRequest.MinBits) + binary.Write(h, binary.BigEndian, kexDHGexRequest.PreferredBits) + binary.Write(h, binary.BigEndian, kexDHGexRequest.MaxBits) + writeInt(h, p) + writeInt(h, g) + writeInt(h, kexDHGexInit.X) + writeInt(h, Y) + + K := make([]byte, intLength(kInt)) + marshalInt(K, kInt) + h.Write(K) + + H := h.Sum(nil) + + // H is already a hash, but the hostkey signing will apply its + // own key-specific hash algorithm. + sig, err := signAndMarshal(priv, randSource, H, algo) + if err != nil { + return nil, err + } + + kexDHGexReply := kexDHGexReplyMsg{ + HostKey: hostKeyBytes, + Y: Y, + Signature: sig, + } + packet = Marshal(&kexDHGexReply) + + err = c.writePacket(packet) + + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: gex.hashFunc, + }, err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/keys.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/keys.go new file mode 100644 index 0000000..47a0753 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/keys.go @@ -0,0 +1,1823 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "crypto" + "crypto/aes" + "crypto/cipher" + "crypto/dsa" + "crypto/ecdsa" + "crypto/ed25519" + "crypto/elliptic" + "crypto/md5" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "crypto/x509" + "encoding/asn1" + "encoding/base64" + "encoding/binary" + "encoding/hex" + "encoding/pem" + "errors" + "fmt" + "io" + "math/big" + "slices" + "strings" + + "golang.org/x/crypto/ssh/internal/bcrypt_pbkdf" +) + +// Public key algorithms names. These values can appear in PublicKey.Type, +// ClientConfig.HostKeyAlgorithms, Signature.Format, or as AlgorithmSigner +// arguments. +const ( + KeyAlgoRSA = "ssh-rsa" + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + KeyAlgoDSA = InsecureKeyAlgoDSA + // Deprecated: DSA is only supported at insecure key sizes, and was removed + // from major implementations. + InsecureKeyAlgoDSA = "ssh-dss" + KeyAlgoECDSA256 = "ecdsa-sha2-nistp256" + KeyAlgoSKECDSA256 = "sk-ecdsa-sha2-nistp256@openssh.com" + KeyAlgoECDSA384 = "ecdsa-sha2-nistp384" + KeyAlgoECDSA521 = "ecdsa-sha2-nistp521" + KeyAlgoED25519 = "ssh-ed25519" + KeyAlgoSKED25519 = "sk-ssh-ed25519@openssh.com" + + // KeyAlgoRSASHA256 and KeyAlgoRSASHA512 are only public key algorithms, not + // public key formats, so they can't appear as a PublicKey.Type. The + // corresponding PublicKey.Type is KeyAlgoRSA. See RFC 8332, Section 2. + KeyAlgoRSASHA256 = "rsa-sha2-256" + KeyAlgoRSASHA512 = "rsa-sha2-512" +) + +const ( + // Deprecated: use KeyAlgoRSA. + SigAlgoRSA = KeyAlgoRSA + // Deprecated: use KeyAlgoRSASHA256. + SigAlgoRSASHA2256 = KeyAlgoRSASHA256 + // Deprecated: use KeyAlgoRSASHA512. + SigAlgoRSASHA2512 = KeyAlgoRSASHA512 +) + +// parsePubKey parses a public key of the given algorithm. +// Use ParsePublicKey for keys with prepended algorithm. +func parsePubKey(in []byte, algo string) (pubKey PublicKey, rest []byte, err error) { + switch algo { + case KeyAlgoRSA: + return parseRSA(in) + case InsecureKeyAlgoDSA: + return parseDSA(in) + case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: + return parseECDSA(in) + case KeyAlgoSKECDSA256: + return parseSKECDSA(in) + case KeyAlgoED25519: + return parseED25519(in) + case KeyAlgoSKED25519: + return parseSKEd25519(in) + case CertAlgoRSAv01, InsecureCertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01: + cert, err := parseCert(in, certKeyAlgoNames[algo]) + if err != nil { + return nil, nil, err + } + return cert, nil, nil + } + if keyFormat := keyFormatForAlgorithm(algo); keyFormat != "" { + return nil, nil, fmt.Errorf("ssh: signature algorithm %q isn't a key format; key is malformed and should be re-encoded with type %q", + algo, keyFormat) + } + + return nil, nil, fmt.Errorf("ssh: unknown key algorithm: %v", algo) +} + +// parseAuthorizedKey parses a public key in OpenSSH authorized_keys format +// (see sshd(8) manual page) once the options and key type fields have been +// removed. +func parseAuthorizedKey(in []byte) (out PublicKey, comment string, err error) { + in = bytes.TrimSpace(in) + + i := bytes.IndexAny(in, " \t") + if i == -1 { + i = len(in) + } + base64Key := in[:i] + + key := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key))) + n, err := base64.StdEncoding.Decode(key, base64Key) + if err != nil { + return nil, "", err + } + key = key[:n] + out, err = ParsePublicKey(key) + if err != nil { + return nil, "", err + } + comment = string(bytes.TrimSpace(in[i:])) + return out, comment, nil +} + +// ParseKnownHosts parses an entry in the format of the known_hosts file. +// +// The known_hosts format is documented in the sshd(8) manual page. This +// function will parse a single entry from in. On successful return, marker +// will contain the optional marker value (i.e. "cert-authority" or "revoked") +// or else be empty, hosts will contain the hosts that this entry matches, +// pubKey will contain the public key and comment will contain any trailing +// comment at the end of the line. See the sshd(8) manual page for the various +// forms that a host string can take. +// +// The unparsed remainder of the input will be returned in rest. This function +// can be called repeatedly to parse multiple entries. +// +// If no entries were found in the input then err will be io.EOF. Otherwise a +// non-nil err value indicates a parse error. +func ParseKnownHosts(in []byte) (marker string, hosts []string, pubKey PublicKey, comment string, rest []byte, err error) { + for len(in) > 0 { + end := bytes.IndexByte(in, '\n') + if end != -1 { + rest = in[end+1:] + in = in[:end] + } else { + rest = nil + } + + end = bytes.IndexByte(in, '\r') + if end != -1 { + in = in[:end] + } + + in = bytes.TrimSpace(in) + if len(in) == 0 || in[0] == '#' { + in = rest + continue + } + + i := bytes.IndexAny(in, " \t") + if i == -1 { + in = rest + continue + } + + // Strip out the beginning of the known_host key. + // This is either an optional marker or a (set of) hostname(s). + keyFields := bytes.Fields(in) + if len(keyFields) < 3 || len(keyFields) > 5 { + return "", nil, nil, "", nil, errors.New("ssh: invalid entry in known_hosts data") + } + + // keyFields[0] is either "@cert-authority", "@revoked" or a comma separated + // list of hosts + marker := "" + if keyFields[0][0] == '@' { + marker = string(keyFields[0][1:]) + keyFields = keyFields[1:] + } + + hosts := string(keyFields[0]) + // keyFields[1] contains the key type (e.g. “ssh-rsa”). + // However, that information is duplicated inside the + // base64-encoded key and so is ignored here. + + key := bytes.Join(keyFields[2:], []byte(" ")) + if pubKey, comment, err = parseAuthorizedKey(key); err != nil { + return "", nil, nil, "", nil, err + } + + return marker, strings.Split(hosts, ","), pubKey, comment, rest, nil + } + + return "", nil, nil, "", nil, io.EOF +} + +// ParseAuthorizedKey parses a public key from an authorized_keys file used in +// OpenSSH according to the sshd(8) manual page. Invalid lines are ignored. +func ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []string, rest []byte, err error) { + var lastErr error + for len(in) > 0 { + end := bytes.IndexByte(in, '\n') + if end != -1 { + rest = in[end+1:] + in = in[:end] + } else { + rest = nil + } + + end = bytes.IndexByte(in, '\r') + if end != -1 { + in = in[:end] + } + + in = bytes.TrimSpace(in) + if len(in) == 0 || in[0] == '#' { + in = rest + continue + } + + i := bytes.IndexAny(in, " \t") + if i == -1 { + in = rest + continue + } + + if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { + return out, comment, options, rest, nil + } else { + lastErr = err + } + + // No key type recognised. Maybe there's an options field at + // the beginning. + var b byte + inQuote := false + var candidateOptions []string + optionStart := 0 + for i, b = range in { + isEnd := !inQuote && (b == ' ' || b == '\t') + if (b == ',' && !inQuote) || isEnd { + if i-optionStart > 0 { + candidateOptions = append(candidateOptions, string(in[optionStart:i])) + } + optionStart = i + 1 + } + if isEnd { + break + } + if b == '"' && (i == 0 || (i > 0 && in[i-1] != '\\')) { + inQuote = !inQuote + } + } + for i < len(in) && (in[i] == ' ' || in[i] == '\t') { + i++ + } + if i == len(in) { + // Invalid line: unmatched quote + in = rest + continue + } + + in = in[i:] + i = bytes.IndexAny(in, " \t") + if i == -1 { + in = rest + continue + } + + if out, comment, err = parseAuthorizedKey(in[i:]); err == nil { + options = candidateOptions + return out, comment, options, rest, nil + } else { + lastErr = err + } + + in = rest + continue + } + + if lastErr != nil { + return nil, "", nil, nil, fmt.Errorf("ssh: no key found; last parsing error for ignored line: %w", lastErr) + } + + return nil, "", nil, nil, errors.New("ssh: no key found") +} + +// ParsePublicKey parses an SSH public key or certificate formatted for use in +// the SSH wire protocol according to RFC 4253, section 6.6. +func ParsePublicKey(in []byte) (out PublicKey, err error) { + algo, in, ok := parseString(in) + if !ok { + return nil, errShortRead + } + var rest []byte + out, rest, err = parsePubKey(in, string(algo)) + if len(rest) > 0 { + return nil, errors.New("ssh: trailing junk in public key") + } + + return out, err +} + +// MarshalAuthorizedKey serializes key for inclusion in an OpenSSH +// authorized_keys file. The return value ends with newline. +func MarshalAuthorizedKey(key PublicKey) []byte { + b := &bytes.Buffer{} + b.WriteString(key.Type()) + b.WriteByte(' ') + e := base64.NewEncoder(base64.StdEncoding, b) + e.Write(key.Marshal()) + e.Close() + b.WriteByte('\n') + return b.Bytes() +} + +// MarshalPrivateKey returns a PEM block with the private key serialized in the +// OpenSSH format. +func MarshalPrivateKey(key crypto.PrivateKey, comment string) (*pem.Block, error) { + return marshalOpenSSHPrivateKey(key, comment, unencryptedOpenSSHMarshaler) +} + +// MarshalPrivateKeyWithPassphrase returns a PEM block holding the encrypted +// private key serialized in the OpenSSH format. +func MarshalPrivateKeyWithPassphrase(key crypto.PrivateKey, comment string, passphrase []byte) (*pem.Block, error) { + return marshalOpenSSHPrivateKey(key, comment, passphraseProtectedOpenSSHMarshaler(passphrase)) +} + +// PublicKey represents a public key using an unspecified algorithm. +// +// Some PublicKeys provided by this package also implement CryptoPublicKey. +type PublicKey interface { + // Type returns the key format name, e.g. "ssh-rsa". + Type() string + + // Marshal returns the serialized key data in SSH wire format, with the name + // prefix. To unmarshal the returned data, use the ParsePublicKey function. + Marshal() []byte + + // Verify that sig is a signature on the given data using this key. This + // method will hash the data appropriately first. sig.Format is allowed to + // be any signature algorithm compatible with the key type, the caller + // should check if it has more stringent requirements. + Verify(data []byte, sig *Signature) error +} + +// CryptoPublicKey, if implemented by a PublicKey, +// returns the underlying crypto.PublicKey form of the key. +type CryptoPublicKey interface { + CryptoPublicKey() crypto.PublicKey +} + +// A Signer can create signatures that verify against a public key. +// +// Some Signers provided by this package also implement MultiAlgorithmSigner. +type Signer interface { + // PublicKey returns the associated PublicKey. + PublicKey() PublicKey + + // Sign returns a signature for the given data. This method will hash the + // data appropriately first. The signature algorithm is expected to match + // the key format returned by the PublicKey.Type method (and not to be any + // alternative algorithm supported by the key format). + Sign(rand io.Reader, data []byte) (*Signature, error) +} + +// An AlgorithmSigner is a Signer that also supports specifying an algorithm to +// use for signing. +// +// An AlgorithmSigner can't advertise the algorithms it supports, unless it also +// implements MultiAlgorithmSigner, so it should be prepared to be invoked with +// every algorithm supported by the public key format. +type AlgorithmSigner interface { + Signer + + // SignWithAlgorithm is like Signer.Sign, but allows specifying a desired + // signing algorithm. Callers may pass an empty string for the algorithm in + // which case the AlgorithmSigner will use a default algorithm. This default + // doesn't currently control any behavior in this package. + SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) +} + +// MultiAlgorithmSigner is an AlgorithmSigner that also reports the algorithms +// supported by that signer. +type MultiAlgorithmSigner interface { + AlgorithmSigner + + // Algorithms returns the available algorithms in preference order. The list + // must not be empty, and it must not include certificate types. + Algorithms() []string +} + +// NewSignerWithAlgorithms returns a signer restricted to the specified +// algorithms. The algorithms must be set in preference order. The list must not +// be empty, and it must not include certificate types. An error is returned if +// the specified algorithms are incompatible with the public key type. +func NewSignerWithAlgorithms(signer AlgorithmSigner, algorithms []string) (MultiAlgorithmSigner, error) { + if len(algorithms) == 0 { + return nil, errors.New("ssh: please specify at least one valid signing algorithm") + } + var signerAlgos []string + supportedAlgos := algorithmsForKeyFormat(underlyingAlgo(signer.PublicKey().Type())) + if s, ok := signer.(*multiAlgorithmSigner); ok { + signerAlgos = s.Algorithms() + } else { + signerAlgos = supportedAlgos + } + + for _, algo := range algorithms { + if !slices.Contains(supportedAlgos, algo) { + return nil, fmt.Errorf("ssh: algorithm %q is not supported for key type %q", + algo, signer.PublicKey().Type()) + } + if !slices.Contains(signerAlgos, algo) { + return nil, fmt.Errorf("ssh: algorithm %q is restricted for the provided signer", algo) + } + } + return &multiAlgorithmSigner{ + AlgorithmSigner: signer, + supportedAlgorithms: algorithms, + }, nil +} + +type multiAlgorithmSigner struct { + AlgorithmSigner + supportedAlgorithms []string +} + +func (s *multiAlgorithmSigner) Algorithms() []string { + return s.supportedAlgorithms +} + +func (s *multiAlgorithmSigner) isAlgorithmSupported(algorithm string) bool { + if algorithm == "" { + algorithm = underlyingAlgo(s.PublicKey().Type()) + } + for _, algo := range s.supportedAlgorithms { + if algorithm == algo { + return true + } + } + return false +} + +func (s *multiAlgorithmSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if !s.isAlgorithmSupported(algorithm) { + return nil, fmt.Errorf("ssh: algorithm %q is not supported: %v", algorithm, s.supportedAlgorithms) + } + return s.AlgorithmSigner.SignWithAlgorithm(rand, data, algorithm) +} + +type rsaPublicKey rsa.PublicKey + +func (r *rsaPublicKey) Type() string { + return "ssh-rsa" +} + +// parseRSA parses an RSA key according to RFC 4253, section 6.6. +func parseRSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + E *big.Int + N *big.Int + Rest []byte `ssh:"rest"` + } + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + if w.E.BitLen() > 24 { + return nil, nil, errors.New("ssh: exponent too large") + } + e := w.E.Int64() + if e < 3 || e&1 == 0 { + return nil, nil, errors.New("ssh: incorrect exponent") + } + + var key rsa.PublicKey + key.E = int(e) + key.N = w.N + return (*rsaPublicKey)(&key), w.Rest, nil +} + +func (r *rsaPublicKey) Marshal() []byte { + e := new(big.Int).SetInt64(int64(r.E)) + // RSA publickey struct layout should match the struct used by + // parseRSACert in the x/crypto/ssh/agent package. + wirekey := struct { + Name string + E *big.Int + N *big.Int + }{ + KeyAlgoRSA, + e, + r.N, + } + return Marshal(&wirekey) +} + +func (r *rsaPublicKey) Verify(data []byte, sig *Signature) error { + supportedAlgos := algorithmsForKeyFormat(r.Type()) + if !slices.Contains(supportedAlgos, sig.Format) { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, r.Type()) + } + hash, err := hashFunc(sig.Format) + if err != nil { + return err + } + h := hash.New() + h.Write(data) + digest := h.Sum(nil) + + // Signatures in PKCS1v15 must match the key's modulus in + // length. However with SSH, some signers provide RSA + // signatures which are missing the MSB 0's of the bignum + // represented. With ssh-rsa signatures, this is encouraged by + // the spec (even though e.g. OpenSSH will give the full + // length unconditionally). With rsa-sha2-* signatures, the + // verifier is allowed to support these, even though they are + // out of spec. See RFC 4253 Section 6.6 for ssh-rsa and RFC + // 8332 Section 3 for rsa-sha2-* details. + // + // In practice: + // * OpenSSH always allows "short" signatures: + // https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L526 + // but always generates padded signatures: + // https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L439 + // + // * PuTTY versions 0.81 and earlier will generate short + // signatures for all RSA signature variants. Note that + // PuTTY is embedded in other software, such as WinSCP and + // FileZilla. At the time of writing, a patch has been + // applied to PuTTY to generate padded signatures for + // rsa-sha2-*, but not yet released: + // https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=a5bcf3d384e1bf15a51a6923c3724cbbee022d8e + // + // * SSH.NET versions 2024.0.0 and earlier will generate short + // signatures for all RSA signature variants, fixed in 2024.1.0: + // https://github.com/sshnet/SSH.NET/releases/tag/2024.1.0 + // + // As a result, we pad these up to the key size by inserting + // leading 0's. + // + // Note that support for short signatures with rsa-sha2-* may + // be removed in the future due to such signatures not being + // allowed by the spec. + blob := sig.Blob + keySize := (*rsa.PublicKey)(r).Size() + if len(blob) < keySize { + padded := make([]byte, keySize) + copy(padded[keySize-len(blob):], blob) + blob = padded + } + return rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, blob) +} + +func (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey { + return (*rsa.PublicKey)(r) +} + +type dsaPublicKey dsa.PublicKey + +func (k *dsaPublicKey) Type() string { + return "ssh-dss" +} + +func checkDSAParams(param *dsa.Parameters) error { + // SSH specifies FIPS 186-2, which only provided a single size + // (1024 bits) DSA key. FIPS 186-3 allows for larger key + // sizes, which would confuse SSH. + if l := param.P.BitLen(); l != 1024 { + return fmt.Errorf("ssh: unsupported DSA key size %d", l) + } + + return nil +} + +// parseDSA parses an DSA key according to RFC 4253, section 6.6. +func parseDSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + P, Q, G, Y *big.Int + Rest []byte `ssh:"rest"` + } + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + param := dsa.Parameters{ + P: w.P, + Q: w.Q, + G: w.G, + } + if err := checkDSAParams(¶m); err != nil { + return nil, nil, err + } + + key := &dsaPublicKey{ + Parameters: param, + Y: w.Y, + } + return key, w.Rest, nil +} + +func (k *dsaPublicKey) Marshal() []byte { + // DSA publickey struct layout should match the struct used by + // parseDSACert in the x/crypto/ssh/agent package. + w := struct { + Name string + P, Q, G, Y *big.Int + }{ + k.Type(), + k.P, + k.Q, + k.G, + k.Y, + } + + return Marshal(&w) +} + +func (k *dsaPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + hash, err := hashFunc(sig.Format) + if err != nil { + return err + } + h := hash.New() + h.Write(data) + digest := h.Sum(nil) + + // Per RFC 4253, section 6.6, + // The value for 'dss_signature_blob' is encoded as a string containing + // r, followed by s (which are 160-bit integers, without lengths or + // padding, unsigned, and in network byte order). + // For DSS purposes, sig.Blob should be exactly 40 bytes in length. + if len(sig.Blob) != 40 { + return errors.New("ssh: DSA signature parse error") + } + r := new(big.Int).SetBytes(sig.Blob[:20]) + s := new(big.Int).SetBytes(sig.Blob[20:]) + if dsa.Verify((*dsa.PublicKey)(k), digest, r, s) { + return nil + } + return errors.New("ssh: signature did not verify") +} + +func (k *dsaPublicKey) CryptoPublicKey() crypto.PublicKey { + return (*dsa.PublicKey)(k) +} + +type dsaPrivateKey struct { + *dsa.PrivateKey +} + +func (k *dsaPrivateKey) PublicKey() PublicKey { + return (*dsaPublicKey)(&k.PrivateKey.PublicKey) +} + +func (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) { + return k.SignWithAlgorithm(rand, data, k.PublicKey().Type()) +} + +func (k *dsaPrivateKey) Algorithms() []string { + return []string{k.PublicKey().Type()} +} + +func (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if algorithm != "" && algorithm != k.PublicKey().Type() { + return nil, fmt.Errorf("ssh: unsupported signature algorithm %s", algorithm) + } + + hash, err := hashFunc(k.PublicKey().Type()) + if err != nil { + return nil, err + } + h := hash.New() + h.Write(data) + digest := h.Sum(nil) + r, s, err := dsa.Sign(rand, k.PrivateKey, digest) + if err != nil { + return nil, err + } + + sig := make([]byte, 40) + rb := r.Bytes() + sb := s.Bytes() + + copy(sig[20-len(rb):20], rb) + copy(sig[40-len(sb):], sb) + + return &Signature{ + Format: k.PublicKey().Type(), + Blob: sig, + }, nil +} + +type ecdsaPublicKey ecdsa.PublicKey + +func (k *ecdsaPublicKey) Type() string { + return "ecdsa-sha2-" + k.nistID() +} + +func (k *ecdsaPublicKey) nistID() string { + switch k.Params().BitSize { + case 256: + return "nistp256" + case 384: + return "nistp384" + case 521: + return "nistp521" + } + panic("ssh: unsupported ecdsa key size") +} + +type ed25519PublicKey ed25519.PublicKey + +func (k ed25519PublicKey) Type() string { + return KeyAlgoED25519 +} + +func parseED25519(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + KeyBytes []byte + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + if l := len(w.KeyBytes); l != ed25519.PublicKeySize { + return nil, nil, fmt.Errorf("invalid size %d for Ed25519 public key", l) + } + + return ed25519PublicKey(w.KeyBytes), w.Rest, nil +} + +func (k ed25519PublicKey) Marshal() []byte { + w := struct { + Name string + KeyBytes []byte + }{ + KeyAlgoED25519, + []byte(k), + } + return Marshal(&w) +} + +func (k ed25519PublicKey) Verify(b []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + if l := len(k); l != ed25519.PublicKeySize { + return fmt.Errorf("ssh: invalid size %d for Ed25519 public key", l) + } + + if ok := ed25519.Verify(ed25519.PublicKey(k), b, sig.Blob); !ok { + return errors.New("ssh: signature did not verify") + } + + return nil +} + +func (k ed25519PublicKey) CryptoPublicKey() crypto.PublicKey { + return ed25519.PublicKey(k) +} + +func supportedEllipticCurve(curve elliptic.Curve) bool { + return curve == elliptic.P256() || curve == elliptic.P384() || curve == elliptic.P521() +} + +// parseECDSA parses an ECDSA key according to RFC 5656, section 3.1. +func parseECDSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + Curve string + KeyBytes []byte + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + key := new(ecdsa.PublicKey) + + switch w.Curve { + case "nistp256": + key.Curve = elliptic.P256() + case "nistp384": + key.Curve = elliptic.P384() + case "nistp521": + key.Curve = elliptic.P521() + default: + return nil, nil, errors.New("ssh: unsupported curve") + } + + key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) + if key.X == nil || key.Y == nil { + return nil, nil, errors.New("ssh: invalid curve point") + } + return (*ecdsaPublicKey)(key), w.Rest, nil +} + +func (k *ecdsaPublicKey) Marshal() []byte { + // See RFC 5656, section 3.1. + keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) + // ECDSA publickey struct layout should match the struct used by + // parseECDSACert in the x/crypto/ssh/agent package. + w := struct { + Name string + ID string + Key []byte + }{ + k.Type(), + k.nistID(), + keyBytes, + } + + return Marshal(&w) +} + +func (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + hash, err := hashFunc(sig.Format) + if err != nil { + return err + } + h := hash.New() + h.Write(data) + digest := h.Sum(nil) + + // Per RFC 5656, section 3.1.2, + // The ecdsa_signature_blob value has the following specific encoding: + // mpint r + // mpint s + var ecSig struct { + R *big.Int + S *big.Int + } + + if err := Unmarshal(sig.Blob, &ecSig); err != nil { + return err + } + + if ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) { + return nil + } + return errors.New("ssh: signature did not verify") +} + +func (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey { + return (*ecdsa.PublicKey)(k) +} + +// skFields holds the additional fields present in U2F/FIDO2 signatures. +// See openssh/PROTOCOL.u2f 'SSH U2F Signatures' for details. +type skFields struct { + // Flags contains U2F/FIDO2 flags such as 'user present' + Flags byte + // Counter is a monotonic signature counter which can be + // used to detect concurrent use of a private key, should + // it be extracted from hardware. + Counter uint32 +} + +type skECDSAPublicKey struct { + // application is a URL-like string, typically "ssh:" for SSH. + // see openssh/PROTOCOL.u2f for details. + application string + ecdsa.PublicKey +} + +func (k *skECDSAPublicKey) Type() string { + return KeyAlgoSKECDSA256 +} + +func (k *skECDSAPublicKey) nistID() string { + return "nistp256" +} + +func parseSKECDSA(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + Curve string + KeyBytes []byte + Application string + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + key := new(skECDSAPublicKey) + key.application = w.Application + + if w.Curve != "nistp256" { + return nil, nil, errors.New("ssh: unsupported curve") + } + key.Curve = elliptic.P256() + + key.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes) + if key.X == nil || key.Y == nil { + return nil, nil, errors.New("ssh: invalid curve point") + } + + return key, w.Rest, nil +} + +func (k *skECDSAPublicKey) Marshal() []byte { + // See RFC 5656, section 3.1. + keyBytes := elliptic.Marshal(k.Curve, k.X, k.Y) + w := struct { + Name string + ID string + Key []byte + Application string + }{ + k.Type(), + k.nistID(), + keyBytes, + k.application, + } + + return Marshal(&w) +} + +func (k *skECDSAPublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + hash, err := hashFunc(sig.Format) + if err != nil { + return err + } + h := hash.New() + h.Write([]byte(k.application)) + appDigest := h.Sum(nil) + + h.Reset() + h.Write(data) + dataDigest := h.Sum(nil) + + var ecSig struct { + R *big.Int + S *big.Int + } + if err := Unmarshal(sig.Blob, &ecSig); err != nil { + return err + } + + var skf skFields + if err := Unmarshal(sig.Rest, &skf); err != nil { + return err + } + + blob := struct { + ApplicationDigest []byte `ssh:"rest"` + Flags byte + Counter uint32 + MessageDigest []byte `ssh:"rest"` + }{ + appDigest, + skf.Flags, + skf.Counter, + dataDigest, + } + + original := Marshal(blob) + + h.Reset() + h.Write(original) + digest := h.Sum(nil) + + if ecdsa.Verify((*ecdsa.PublicKey)(&k.PublicKey), digest, ecSig.R, ecSig.S) { + return nil + } + return errors.New("ssh: signature did not verify") +} + +func (k *skECDSAPublicKey) CryptoPublicKey() crypto.PublicKey { + return &k.PublicKey +} + +type skEd25519PublicKey struct { + // application is a URL-like string, typically "ssh:" for SSH. + // see openssh/PROTOCOL.u2f for details. + application string + ed25519.PublicKey +} + +func (k *skEd25519PublicKey) Type() string { + return KeyAlgoSKED25519 +} + +func parseSKEd25519(in []byte) (out PublicKey, rest []byte, err error) { + var w struct { + KeyBytes []byte + Application string + Rest []byte `ssh:"rest"` + } + + if err := Unmarshal(in, &w); err != nil { + return nil, nil, err + } + + if l := len(w.KeyBytes); l != ed25519.PublicKeySize { + return nil, nil, fmt.Errorf("invalid size %d for Ed25519 public key", l) + } + + key := new(skEd25519PublicKey) + key.application = w.Application + key.PublicKey = ed25519.PublicKey(w.KeyBytes) + + return key, w.Rest, nil +} + +func (k *skEd25519PublicKey) Marshal() []byte { + w := struct { + Name string + KeyBytes []byte + Application string + }{ + KeyAlgoSKED25519, + []byte(k.PublicKey), + k.application, + } + return Marshal(&w) +} + +func (k *skEd25519PublicKey) Verify(data []byte, sig *Signature) error { + if sig.Format != k.Type() { + return fmt.Errorf("ssh: signature type %s for key type %s", sig.Format, k.Type()) + } + if l := len(k.PublicKey); l != ed25519.PublicKeySize { + return fmt.Errorf("invalid size %d for Ed25519 public key", l) + } + + hash, err := hashFunc(sig.Format) + if err != nil { + return err + } + h := hash.New() + h.Write([]byte(k.application)) + appDigest := h.Sum(nil) + + h.Reset() + h.Write(data) + dataDigest := h.Sum(nil) + + var edSig struct { + Signature []byte `ssh:"rest"` + } + + if err := Unmarshal(sig.Blob, &edSig); err != nil { + return err + } + + var skf skFields + if err := Unmarshal(sig.Rest, &skf); err != nil { + return err + } + + blob := struct { + ApplicationDigest []byte `ssh:"rest"` + Flags byte + Counter uint32 + MessageDigest []byte `ssh:"rest"` + }{ + appDigest, + skf.Flags, + skf.Counter, + dataDigest, + } + + original := Marshal(blob) + + if ok := ed25519.Verify(k.PublicKey, original, edSig.Signature); !ok { + return errors.New("ssh: signature did not verify") + } + + return nil +} + +func (k *skEd25519PublicKey) CryptoPublicKey() crypto.PublicKey { + return k.PublicKey +} + +// NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey, +// *ecdsa.PrivateKey or any other crypto.Signer and returns a +// corresponding Signer instance. ECDSA keys must use P-256, P-384 or +// P-521. DSA keys must use parameter size L1024N160. +func NewSignerFromKey(key interface{}) (Signer, error) { + switch key := key.(type) { + case crypto.Signer: + return NewSignerFromSigner(key) + case *dsa.PrivateKey: + return newDSAPrivateKey(key) + default: + return nil, fmt.Errorf("ssh: unsupported key type %T", key) + } +} + +func newDSAPrivateKey(key *dsa.PrivateKey) (Signer, error) { + if err := checkDSAParams(&key.PublicKey.Parameters); err != nil { + return nil, err + } + + return &dsaPrivateKey{key}, nil +} + +type wrappedSigner struct { + signer crypto.Signer + pubKey PublicKey +} + +// NewSignerFromSigner takes any crypto.Signer implementation and +// returns a corresponding Signer interface. This can be used, for +// example, with keys kept in hardware modules. +func NewSignerFromSigner(signer crypto.Signer) (Signer, error) { + pubKey, err := NewPublicKey(signer.Public()) + if err != nil { + return nil, err + } + + return &wrappedSigner{signer, pubKey}, nil +} + +func (s *wrappedSigner) PublicKey() PublicKey { + return s.pubKey +} + +func (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) { + return s.SignWithAlgorithm(rand, data, s.pubKey.Type()) +} + +func (s *wrappedSigner) Algorithms() []string { + return algorithmsForKeyFormat(s.pubKey.Type()) +} + +func (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) { + if algorithm == "" { + algorithm = s.pubKey.Type() + } + + if !slices.Contains(s.Algorithms(), algorithm) { + return nil, fmt.Errorf("ssh: unsupported signature algorithm %q for key format %q", algorithm, s.pubKey.Type()) + } + + hashFunc, err := hashFunc(algorithm) + if err != nil { + return nil, err + } + var digest []byte + if hashFunc != 0 { + h := hashFunc.New() + h.Write(data) + digest = h.Sum(nil) + } else { + digest = data + } + + signature, err := s.signer.Sign(rand, digest, hashFunc) + if err != nil { + return nil, err + } + + // crypto.Signer.Sign is expected to return an ASN.1-encoded signature + // for ECDSA and DSA, but that's not the encoding expected by SSH, so + // re-encode. + switch s.pubKey.(type) { + case *ecdsaPublicKey, *dsaPublicKey: + type asn1Signature struct { + R, S *big.Int + } + asn1Sig := new(asn1Signature) + _, err := asn1.Unmarshal(signature, asn1Sig) + if err != nil { + return nil, err + } + + switch s.pubKey.(type) { + case *ecdsaPublicKey: + signature = Marshal(asn1Sig) + + case *dsaPublicKey: + signature = make([]byte, 40) + r := asn1Sig.R.Bytes() + s := asn1Sig.S.Bytes() + copy(signature[20-len(r):20], r) + copy(signature[40-len(s):40], s) + } + } + + return &Signature{ + Format: algorithm, + Blob: signature, + }, nil +} + +// NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, +// or ed25519.PublicKey returns a corresponding PublicKey instance. +// ECDSA keys must use P-256, P-384 or P-521. +func NewPublicKey(key interface{}) (PublicKey, error) { + switch key := key.(type) { + case *rsa.PublicKey: + return (*rsaPublicKey)(key), nil + case *ecdsa.PublicKey: + if !supportedEllipticCurve(key.Curve) { + return nil, errors.New("ssh: only P-256, P-384 and P-521 EC keys are supported") + } + return (*ecdsaPublicKey)(key), nil + case *dsa.PublicKey: + return (*dsaPublicKey)(key), nil + case ed25519.PublicKey: + if l := len(key); l != ed25519.PublicKeySize { + return nil, fmt.Errorf("ssh: invalid size %d for Ed25519 public key", l) + } + return ed25519PublicKey(key), nil + default: + return nil, fmt.Errorf("ssh: unsupported key type %T", key) + } +} + +// ParsePrivateKey returns a Signer from a PEM encoded private key. It supports +// the same keys as ParseRawPrivateKey. If the private key is encrypted, it +// will return a PassphraseMissingError. +func ParsePrivateKey(pemBytes []byte) (Signer, error) { + key, err := ParseRawPrivateKey(pemBytes) + if err != nil { + return nil, err + } + + return NewSignerFromKey(key) +} + +// ParsePrivateKeyWithPassphrase returns a Signer from a PEM encoded private +// key and passphrase. It supports the same keys as +// ParseRawPrivateKeyWithPassphrase. +func ParsePrivateKeyWithPassphrase(pemBytes, passphrase []byte) (Signer, error) { + key, err := ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase) + if err != nil { + return nil, err + } + + return NewSignerFromKey(key) +} + +// encryptedBlock tells whether a private key is +// encrypted by examining its Proc-Type header +// for a mention of ENCRYPTED +// according to RFC 1421 Section 4.6.1.1. +func encryptedBlock(block *pem.Block) bool { + return strings.Contains(block.Headers["Proc-Type"], "ENCRYPTED") +} + +// A PassphraseMissingError indicates that parsing this private key requires a +// passphrase. Use ParsePrivateKeyWithPassphrase. +type PassphraseMissingError struct { + // PublicKey will be set if the private key format includes an unencrypted + // public key along with the encrypted private key. + PublicKey PublicKey +} + +func (*PassphraseMissingError) Error() string { + return "ssh: this private key is passphrase protected" +} + +// ParseRawPrivateKey returns a private key from a PEM encoded private key. It supports +// RSA, DSA, ECDSA, and Ed25519 private keys in PKCS#1, PKCS#8, OpenSSL, and OpenSSH +// formats. If the private key is encrypted, it will return a PassphraseMissingError. +func ParseRawPrivateKey(pemBytes []byte) (interface{}, error) { + block, _ := pem.Decode(pemBytes) + if block == nil { + return nil, errors.New("ssh: no key found") + } + + if encryptedBlock(block) { + return nil, &PassphraseMissingError{} + } + + switch block.Type { + case "RSA PRIVATE KEY": + return x509.ParsePKCS1PrivateKey(block.Bytes) + // RFC5208 - https://tools.ietf.org/html/rfc5208 + case "PRIVATE KEY": + return x509.ParsePKCS8PrivateKey(block.Bytes) + case "EC PRIVATE KEY": + return x509.ParseECPrivateKey(block.Bytes) + case "DSA PRIVATE KEY": + return ParseDSAPrivateKey(block.Bytes) + case "OPENSSH PRIVATE KEY": + return parseOpenSSHPrivateKey(block.Bytes, unencryptedOpenSSHKey) + default: + return nil, fmt.Errorf("ssh: unsupported key type %q", block.Type) + } +} + +// ParseRawPrivateKeyWithPassphrase returns a private key decrypted with +// passphrase from a PEM encoded private key. If the passphrase is wrong, it +// will return x509.IncorrectPasswordError. +func ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase []byte) (interface{}, error) { + block, _ := pem.Decode(pemBytes) + if block == nil { + return nil, errors.New("ssh: no key found") + } + + if block.Type == "OPENSSH PRIVATE KEY" { + return parseOpenSSHPrivateKey(block.Bytes, passphraseProtectedOpenSSHKey(passphrase)) + } + + if !encryptedBlock(block) || !x509.IsEncryptedPEMBlock(block) { + return nil, errors.New("ssh: not an encrypted key") + } + + buf, err := x509.DecryptPEMBlock(block, passphrase) + if err != nil { + if err == x509.IncorrectPasswordError { + return nil, err + } + return nil, fmt.Errorf("ssh: cannot decode encrypted private keys: %v", err) + } + + var result interface{} + + switch block.Type { + case "RSA PRIVATE KEY": + result, err = x509.ParsePKCS1PrivateKey(buf) + case "EC PRIVATE KEY": + result, err = x509.ParseECPrivateKey(buf) + case "DSA PRIVATE KEY": + result, err = ParseDSAPrivateKey(buf) + default: + err = fmt.Errorf("ssh: unsupported key type %q", block.Type) + } + // Because of deficiencies in the format, DecryptPEMBlock does not always + // detect an incorrect password. In these cases decrypted DER bytes is + // random noise. If the parsing of the key returns an asn1.StructuralError + // we return x509.IncorrectPasswordError. + if _, ok := err.(asn1.StructuralError); ok { + return nil, x509.IncorrectPasswordError + } + + return result, err +} + +// ParseDSAPrivateKey returns a DSA private key from its ASN.1 DER encoding, as +// specified by the OpenSSL DSA man page. +func ParseDSAPrivateKey(der []byte) (*dsa.PrivateKey, error) { + var k struct { + Version int + P *big.Int + Q *big.Int + G *big.Int + Pub *big.Int + Priv *big.Int + } + rest, err := asn1.Unmarshal(der, &k) + if err != nil { + return nil, errors.New("ssh: failed to parse DSA key: " + err.Error()) + } + if len(rest) > 0 { + return nil, errors.New("ssh: garbage after DSA key") + } + + return &dsa.PrivateKey{ + PublicKey: dsa.PublicKey{ + Parameters: dsa.Parameters{ + P: k.P, + Q: k.Q, + G: k.G, + }, + Y: k.Pub, + }, + X: k.Priv, + }, nil +} + +func unencryptedOpenSSHKey(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) { + if kdfName != "none" || cipherName != "none" { + return nil, &PassphraseMissingError{} + } + if kdfOpts != "" { + return nil, errors.New("ssh: invalid openssh private key") + } + return privKeyBlock, nil +} + +func passphraseProtectedOpenSSHKey(passphrase []byte) openSSHDecryptFunc { + return func(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) { + if kdfName == "none" || cipherName == "none" { + return nil, errors.New("ssh: key is not password protected") + } + if kdfName != "bcrypt" { + return nil, fmt.Errorf("ssh: unknown KDF %q, only supports %q", kdfName, "bcrypt") + } + + var opts struct { + Salt string + Rounds uint32 + } + if err := Unmarshal([]byte(kdfOpts), &opts); err != nil { + return nil, err + } + + k, err := bcrypt_pbkdf.Key(passphrase, []byte(opts.Salt), int(opts.Rounds), 32+16) + if err != nil { + return nil, err + } + key, iv := k[:32], k[32:] + + c, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + switch cipherName { + case "aes256-ctr": + ctr := cipher.NewCTR(c, iv) + ctr.XORKeyStream(privKeyBlock, privKeyBlock) + case "aes256-cbc": + if len(privKeyBlock)%c.BlockSize() != 0 { + return nil, fmt.Errorf("ssh: invalid encrypted private key length, not a multiple of the block size") + } + cbc := cipher.NewCBCDecrypter(c, iv) + cbc.CryptBlocks(privKeyBlock, privKeyBlock) + default: + return nil, fmt.Errorf("ssh: unknown cipher %q, only supports %q or %q", cipherName, "aes256-ctr", "aes256-cbc") + } + + return privKeyBlock, nil + } +} + +func unencryptedOpenSSHMarshaler(privKeyBlock []byte) ([]byte, string, string, string, error) { + key := generateOpenSSHPadding(privKeyBlock, 8) + return key, "none", "none", "", nil +} + +func passphraseProtectedOpenSSHMarshaler(passphrase []byte) openSSHEncryptFunc { + return func(privKeyBlock []byte) ([]byte, string, string, string, error) { + salt := make([]byte, 16) + if _, err := rand.Read(salt); err != nil { + return nil, "", "", "", err + } + + opts := struct { + Salt []byte + Rounds uint32 + }{salt, 16} + + // Derive key to encrypt the private key block. + k, err := bcrypt_pbkdf.Key(passphrase, salt, int(opts.Rounds), 32+aes.BlockSize) + if err != nil { + return nil, "", "", "", err + } + + // Add padding matching the block size of AES. + keyBlock := generateOpenSSHPadding(privKeyBlock, aes.BlockSize) + + // Encrypt the private key using the derived secret. + + dst := make([]byte, len(keyBlock)) + key, iv := k[:32], k[32:] + block, err := aes.NewCipher(key) + if err != nil { + return nil, "", "", "", err + } + + stream := cipher.NewCTR(block, iv) + stream.XORKeyStream(dst, keyBlock) + + return dst, "aes256-ctr", "bcrypt", string(Marshal(opts)), nil + } +} + +const privateKeyAuthMagic = "openssh-key-v1\x00" + +type openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error) +type openSSHEncryptFunc func(PrivKeyBlock []byte) (ProtectedKeyBlock []byte, cipherName, kdfName, kdfOptions string, err error) + +type openSSHEncryptedPrivateKey struct { + CipherName string + KdfName string + KdfOpts string + NumKeys uint32 + PubKey []byte + PrivKeyBlock []byte + Rest []byte `ssh:"rest"` +} + +type openSSHPrivateKey struct { + Check1 uint32 + Check2 uint32 + Keytype string + Rest []byte `ssh:"rest"` +} + +type openSSHRSAPrivateKey struct { + N *big.Int + E *big.Int + D *big.Int + Iqmp *big.Int + P *big.Int + Q *big.Int + Comment string + Pad []byte `ssh:"rest"` +} + +type openSSHEd25519PrivateKey struct { + Pub []byte + Priv []byte + Comment string + Pad []byte `ssh:"rest"` +} + +type openSSHECDSAPrivateKey struct { + Curve string + Pub []byte + D *big.Int + Comment string + Pad []byte `ssh:"rest"` +} + +// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt +// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used +// as the decrypt function to parse an unencrypted private key. See +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key. +func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) { + if len(key) < len(privateKeyAuthMagic) || string(key[:len(privateKeyAuthMagic)]) != privateKeyAuthMagic { + return nil, errors.New("ssh: invalid openssh private key format") + } + remaining := key[len(privateKeyAuthMagic):] + + var w openSSHEncryptedPrivateKey + if err := Unmarshal(remaining, &w); err != nil { + return nil, err + } + if w.NumKeys != 1 { + // We only support single key files, and so does OpenSSH. + // https://github.com/openssh/openssh-portable/blob/4103a3ec7/sshkey.c#L4171 + return nil, errors.New("ssh: multi-key files are not supported") + } + + privKeyBlock, err := decrypt(w.CipherName, w.KdfName, w.KdfOpts, w.PrivKeyBlock) + if err != nil { + if err, ok := err.(*PassphraseMissingError); ok { + pub, errPub := ParsePublicKey(w.PubKey) + if errPub != nil { + return nil, fmt.Errorf("ssh: failed to parse embedded public key: %v", errPub) + } + err.PublicKey = pub + } + return nil, err + } + + var pk1 openSSHPrivateKey + if err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 { + if w.CipherName != "none" { + return nil, x509.IncorrectPasswordError + } + return nil, errors.New("ssh: malformed OpenSSH key") + } + + switch pk1.Keytype { + case KeyAlgoRSA: + var key openSSHRSAPrivateKey + if err := Unmarshal(pk1.Rest, &key); err != nil { + return nil, err + } + + if err := checkOpenSSHKeyPadding(key.Pad); err != nil { + return nil, err + } + + pk := &rsa.PrivateKey{ + PublicKey: rsa.PublicKey{ + N: key.N, + E: int(key.E.Int64()), + }, + D: key.D, + Primes: []*big.Int{key.P, key.Q}, + } + + if err := pk.Validate(); err != nil { + return nil, err + } + + pk.Precompute() + + return pk, nil + case KeyAlgoED25519: + var key openSSHEd25519PrivateKey + if err := Unmarshal(pk1.Rest, &key); err != nil { + return nil, err + } + + if len(key.Priv) != ed25519.PrivateKeySize { + return nil, errors.New("ssh: private key unexpected length") + } + + if err := checkOpenSSHKeyPadding(key.Pad); err != nil { + return nil, err + } + + pk := ed25519.PrivateKey(make([]byte, ed25519.PrivateKeySize)) + copy(pk, key.Priv) + return &pk, nil + case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521: + var key openSSHECDSAPrivateKey + if err := Unmarshal(pk1.Rest, &key); err != nil { + return nil, err + } + + if err := checkOpenSSHKeyPadding(key.Pad); err != nil { + return nil, err + } + + var curve elliptic.Curve + switch key.Curve { + case "nistp256": + curve = elliptic.P256() + case "nistp384": + curve = elliptic.P384() + case "nistp521": + curve = elliptic.P521() + default: + return nil, errors.New("ssh: unhandled elliptic curve: " + key.Curve) + } + + X, Y := elliptic.Unmarshal(curve, key.Pub) + if X == nil || Y == nil { + return nil, errors.New("ssh: failed to unmarshal public key") + } + + if key.D.Cmp(curve.Params().N) >= 0 { + return nil, errors.New("ssh: scalar is out of range") + } + + x, y := curve.ScalarBaseMult(key.D.Bytes()) + if x.Cmp(X) != 0 || y.Cmp(Y) != 0 { + return nil, errors.New("ssh: public key does not match private key") + } + + return &ecdsa.PrivateKey{ + PublicKey: ecdsa.PublicKey{ + Curve: curve, + X: X, + Y: Y, + }, + D: key.D, + }, nil + default: + return nil, errors.New("ssh: unhandled key type") + } +} + +func marshalOpenSSHPrivateKey(key crypto.PrivateKey, comment string, encrypt openSSHEncryptFunc) (*pem.Block, error) { + var w openSSHEncryptedPrivateKey + var pk1 openSSHPrivateKey + + // Random check bytes. + var check uint32 + if err := binary.Read(rand.Reader, binary.BigEndian, &check); err != nil { + return nil, err + } + + pk1.Check1 = check + pk1.Check2 = check + w.NumKeys = 1 + + // Use a []byte directly on ed25519 keys. + if k, ok := key.(*ed25519.PrivateKey); ok { + key = *k + } + + switch k := key.(type) { + case *rsa.PrivateKey: + E := new(big.Int).SetInt64(int64(k.PublicKey.E)) + // Marshal public key: + // E and N are in reversed order in the public and private key. + pubKey := struct { + KeyType string + E *big.Int + N *big.Int + }{ + KeyAlgoRSA, + E, k.PublicKey.N, + } + w.PubKey = Marshal(pubKey) + + // Marshal private key. + key := openSSHRSAPrivateKey{ + N: k.PublicKey.N, + E: E, + D: k.D, + Iqmp: k.Precomputed.Qinv, + P: k.Primes[0], + Q: k.Primes[1], + Comment: comment, + } + pk1.Keytype = KeyAlgoRSA + pk1.Rest = Marshal(key) + case ed25519.PrivateKey: + pub := make([]byte, ed25519.PublicKeySize) + priv := make([]byte, ed25519.PrivateKeySize) + copy(pub, k[32:]) + copy(priv, k) + + // Marshal public key. + pubKey := struct { + KeyType string + Pub []byte + }{ + KeyAlgoED25519, pub, + } + w.PubKey = Marshal(pubKey) + + // Marshal private key. + key := openSSHEd25519PrivateKey{ + Pub: pub, + Priv: priv, + Comment: comment, + } + pk1.Keytype = KeyAlgoED25519 + pk1.Rest = Marshal(key) + case *ecdsa.PrivateKey: + var curve, keyType string + switch name := k.Curve.Params().Name; name { + case "P-256": + curve = "nistp256" + keyType = KeyAlgoECDSA256 + case "P-384": + curve = "nistp384" + keyType = KeyAlgoECDSA384 + case "P-521": + curve = "nistp521" + keyType = KeyAlgoECDSA521 + default: + return nil, errors.New("ssh: unhandled elliptic curve " + name) + } + + pub := elliptic.Marshal(k.Curve, k.PublicKey.X, k.PublicKey.Y) + + // Marshal public key. + pubKey := struct { + KeyType string + Curve string + Pub []byte + }{ + keyType, curve, pub, + } + w.PubKey = Marshal(pubKey) + + // Marshal private key. + key := openSSHECDSAPrivateKey{ + Curve: curve, + Pub: pub, + D: k.D, + Comment: comment, + } + pk1.Keytype = keyType + pk1.Rest = Marshal(key) + default: + return nil, fmt.Errorf("ssh: unsupported key type %T", k) + } + + var err error + // Add padding and encrypt the key if necessary. + w.PrivKeyBlock, w.CipherName, w.KdfName, w.KdfOpts, err = encrypt(Marshal(pk1)) + if err != nil { + return nil, err + } + + b := Marshal(w) + block := &pem.Block{ + Type: "OPENSSH PRIVATE KEY", + Bytes: append([]byte(privateKeyAuthMagic), b...), + } + return block, nil +} + +func checkOpenSSHKeyPadding(pad []byte) error { + for i, b := range pad { + if int(b) != i+1 { + return errors.New("ssh: padding not as expected") + } + } + return nil +} + +func generateOpenSSHPadding(block []byte, blockSize int) []byte { + for i, l := 0, len(block); (l+i)%blockSize != 0; i++ { + block = append(block, byte(i+1)) + } + return block +} + +// FingerprintLegacyMD5 returns the user presentation of the key's +// fingerprint as described by RFC 4716 section 4. +func FingerprintLegacyMD5(pubKey PublicKey) string { + md5sum := md5.Sum(pubKey.Marshal()) + hexarray := make([]string, len(md5sum)) + for i, c := range md5sum { + hexarray[i] = hex.EncodeToString([]byte{c}) + } + return strings.Join(hexarray, ":") +} + +// FingerprintSHA256 returns the user presentation of the key's +// fingerprint as unpadded base64 encoded sha256 hash. +// This format was introduced from OpenSSH 6.8. +// https://www.openssh.com/txt/release-6.8 +// https://tools.ietf.org/html/rfc4648#section-3.2 (unpadded base64 encoding) +func FingerprintSHA256(pubKey PublicKey) string { + sha256sum := sha256.Sum256(pubKey.Marshal()) + hash := base64.RawStdEncoding.EncodeToString(sha256sum[:]) + return "SHA256:" + hash +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mac.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mac.go new file mode 100644 index 0000000..87d626f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mac.go @@ -0,0 +1,84 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +// Message authentication support + +import ( + "crypto/fips140" + "crypto/hmac" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "hash" + "slices" +) + +type macMode struct { + keySize int + etm bool + new func(key []byte) hash.Hash +} + +// truncatingMAC wraps around a hash.Hash and truncates the output digest to +// a given size. +type truncatingMAC struct { + length int + hmac hash.Hash +} + +func (t truncatingMAC) Write(data []byte) (int, error) { + return t.hmac.Write(data) +} + +func (t truncatingMAC) Sum(in []byte) []byte { + out := t.hmac.Sum(in) + return out[:len(in)+t.length] +} + +func (t truncatingMAC) Reset() { + t.hmac.Reset() +} + +func (t truncatingMAC) Size() int { + return t.length +} + +func (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() } + +// macModes defines the supported MACs. MACs not included are not supported +// and will not be negotiated, even if explicitly configured. When FIPS mode is +// enabled, only FIPS-approved algorithms are included. +var macModes = map[string]*macMode{} + +func init() { + macModes[HMACSHA512ETM] = &macMode{64, true, func(key []byte) hash.Hash { + return hmac.New(sha512.New, key) + }} + macModes[HMACSHA256ETM] = &macMode{32, true, func(key []byte) hash.Hash { + return hmac.New(sha256.New, key) + }} + macModes[HMACSHA512] = &macMode{64, false, func(key []byte) hash.Hash { + return hmac.New(sha512.New, key) + }} + macModes[HMACSHA256] = &macMode{32, false, func(key []byte) hash.Hash { + return hmac.New(sha256.New, key) + }} + + if fips140.Enabled() { + defaultMACs = slices.DeleteFunc(defaultMACs, func(algo string) bool { + _, ok := macModes[algo] + return !ok + }) + return + } + + macModes[HMACSHA1] = &macMode{20, false, func(key []byte) hash.Hash { + return hmac.New(sha1.New, key) + }} + macModes[InsecureHMACSHA196] = &macMode{20, false, func(key []byte) hash.Hash { + return truncatingMAC{12, hmac.New(sha1.New, key)} + }} +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/messages.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/messages.go new file mode 100644 index 0000000..ab22c3d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/messages.go @@ -0,0 +1,893 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "math/big" + "reflect" + "strconv" + "strings" +) + +// These are SSH message type numbers. They are scattered around several +// documents but many were taken from [SSH-PARAMETERS]. +const ( + msgIgnore = 2 + msgUnimplemented = 3 + msgDebug = 4 + msgNewKeys = 21 +) + +// SSH messages: +// +// These structures mirror the wire format of the corresponding SSH messages. +// They are marshaled using reflection with the marshal and unmarshal functions +// in this file. The only wrinkle is that a final member of type []byte with a +// ssh tag of "rest" receives the remainder of a packet when unmarshaling. + +// See RFC 4253, section 11.1. +const msgDisconnect = 1 + +// disconnectMsg is the message that signals a disconnect. It is also +// the error type returned from mux.Wait() +type disconnectMsg struct { + Reason uint32 `sshtype:"1"` + Message string + Language string +} + +func (d *disconnectMsg) Error() string { + return fmt.Sprintf("ssh: disconnect, reason %d: %s", d.Reason, d.Message) +} + +// See RFC 4253, section 7.1. +const msgKexInit = 20 + +type kexInitMsg struct { + Cookie [16]byte `sshtype:"20"` + KexAlgos []string + ServerHostKeyAlgos []string + CiphersClientServer []string + CiphersServerClient []string + MACsClientServer []string + MACsServerClient []string + CompressionClientServer []string + CompressionServerClient []string + LanguagesClientServer []string + LanguagesServerClient []string + FirstKexFollows bool + Reserved uint32 +} + +// See RFC 4253, section 8. + +// Diffie-Hellman +const msgKexDHInit = 30 + +type kexDHInitMsg struct { + X *big.Int `sshtype:"30"` +} + +const msgKexECDHInit = 30 + +type kexECDHInitMsg struct { + ClientPubKey []byte `sshtype:"30"` +} + +const msgKexECDHReply = 31 + +type kexECDHReplyMsg struct { + HostKey []byte `sshtype:"31"` + EphemeralPubKey []byte + Signature []byte +} + +const msgKexDHReply = 31 + +type kexDHReplyMsg struct { + HostKey []byte `sshtype:"31"` + Y *big.Int + Signature []byte +} + +// See RFC 4419, section 5. +const msgKexDHGexGroup = 31 + +type kexDHGexGroupMsg struct { + P *big.Int `sshtype:"31"` + G *big.Int +} + +const msgKexDHGexInit = 32 + +type kexDHGexInitMsg struct { + X *big.Int `sshtype:"32"` +} + +const msgKexDHGexReply = 33 + +type kexDHGexReplyMsg struct { + HostKey []byte `sshtype:"33"` + Y *big.Int + Signature []byte +} + +const msgKexDHGexRequest = 34 + +type kexDHGexRequestMsg struct { + MinBits uint32 `sshtype:"34"` + PreferredBits uint32 + MaxBits uint32 +} + +// See RFC 4253, section 10. +const msgServiceRequest = 5 + +type serviceRequestMsg struct { + Service string `sshtype:"5"` +} + +// See RFC 4253, section 10. +const msgServiceAccept = 6 + +type serviceAcceptMsg struct { + Service string `sshtype:"6"` +} + +// See RFC 8308, section 2.3 +const msgExtInfo = 7 + +type extInfoMsg struct { + NumExtensions uint32 `sshtype:"7"` + Payload []byte `ssh:"rest"` +} + +// See RFC 4252, section 5. +const msgUserAuthRequest = 50 + +type userAuthRequestMsg struct { + User string `sshtype:"50"` + Service string + Method string + Payload []byte `ssh:"rest"` +} + +// Used for debug printouts of packets. +type userAuthSuccessMsg struct { +} + +// See RFC 4252, section 5.1 +const msgUserAuthFailure = 51 + +type userAuthFailureMsg struct { + Methods []string `sshtype:"51"` + PartialSuccess bool +} + +// See RFC 4252, section 5.1 +const msgUserAuthSuccess = 52 + +// See RFC 4252, section 5.4 +const msgUserAuthBanner = 53 + +type userAuthBannerMsg struct { + Message string `sshtype:"53"` + // unused, but required to allow message parsing + Language string +} + +// See RFC 4256, section 3.2 +const msgUserAuthInfoRequest = 60 +const msgUserAuthInfoResponse = 61 + +type userAuthInfoRequestMsg struct { + Name string `sshtype:"60"` + Instruction string + Language string + NumPrompts uint32 + Prompts []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.1. +const msgChannelOpen = 90 + +type channelOpenMsg struct { + ChanType string `sshtype:"90"` + PeersID uint32 + PeersWindow uint32 + MaxPacketSize uint32 + TypeSpecificData []byte `ssh:"rest"` +} + +const msgChannelExtendedData = 95 +const msgChannelData = 94 + +// Used for debug print outs of packets. +type channelDataMsg struct { + PeersID uint32 `sshtype:"94"` + Length uint32 + Rest []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.1. +const msgChannelOpenConfirm = 91 + +type channelOpenConfirmMsg struct { + PeersID uint32 `sshtype:"91"` + MyID uint32 + MyWindow uint32 + MaxPacketSize uint32 + TypeSpecificData []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.1. +const msgChannelOpenFailure = 92 + +type channelOpenFailureMsg struct { + PeersID uint32 `sshtype:"92"` + Reason RejectionReason + Message string + Language string +} + +const msgChannelRequest = 98 + +type channelRequestMsg struct { + PeersID uint32 `sshtype:"98"` + Request string + WantReply bool + RequestSpecificData []byte `ssh:"rest"` +} + +// See RFC 4254, section 5.4. +const msgChannelSuccess = 99 + +type channelRequestSuccessMsg struct { + PeersID uint32 `sshtype:"99"` +} + +// See RFC 4254, section 5.4. +const msgChannelFailure = 100 + +type channelRequestFailureMsg struct { + PeersID uint32 `sshtype:"100"` +} + +// See RFC 4254, section 5.3 +const msgChannelClose = 97 + +type channelCloseMsg struct { + PeersID uint32 `sshtype:"97"` +} + +// See RFC 4254, section 5.3 +const msgChannelEOF = 96 + +type channelEOFMsg struct { + PeersID uint32 `sshtype:"96"` +} + +// See RFC 4254, section 4 +const msgGlobalRequest = 80 + +type globalRequestMsg struct { + Type string `sshtype:"80"` + WantReply bool + Data []byte `ssh:"rest"` +} + +// See RFC 4254, section 4 +const msgRequestSuccess = 81 + +type globalRequestSuccessMsg struct { + Data []byte `ssh:"rest" sshtype:"81"` +} + +// See RFC 4254, section 4 +const msgRequestFailure = 82 + +type globalRequestFailureMsg struct { + Data []byte `ssh:"rest" sshtype:"82"` +} + +// See RFC 4254, section 5.2 +const msgChannelWindowAdjust = 93 + +type windowAdjustMsg struct { + PeersID uint32 `sshtype:"93"` + AdditionalBytes uint32 +} + +// See RFC 4252, section 7 +const msgUserAuthPubKeyOk = 60 + +type userAuthPubKeyOkMsg struct { + Algo string `sshtype:"60"` + PubKey []byte +} + +// See RFC 4462, section 3 +const msgUserAuthGSSAPIResponse = 60 + +type userAuthGSSAPIResponse struct { + SupportMech []byte `sshtype:"60"` +} + +const msgUserAuthGSSAPIToken = 61 + +type userAuthGSSAPIToken struct { + Token []byte `sshtype:"61"` +} + +const msgUserAuthGSSAPIMIC = 66 + +type userAuthGSSAPIMIC struct { + MIC []byte `sshtype:"66"` +} + +// See RFC 4462, section 3.9 +const msgUserAuthGSSAPIErrTok = 64 + +type userAuthGSSAPIErrTok struct { + ErrorToken []byte `sshtype:"64"` +} + +// See RFC 4462, section 3.8 +const msgUserAuthGSSAPIError = 65 + +type userAuthGSSAPIError struct { + MajorStatus uint32 `sshtype:"65"` + MinorStatus uint32 + Message string + LanguageTag string +} + +// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9 +const msgPing = 192 + +type pingMsg struct { + Data string `sshtype:"192"` +} + +// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9 +const msgPong = 193 + +type pongMsg struct { + Data string `sshtype:"193"` +} + +// typeTags returns the possible type bytes for the given reflect.Type, which +// should be a struct. The possible values are separated by a '|' character. +func typeTags(structType reflect.Type) (tags []byte) { + tagStr := structType.Field(0).Tag.Get("sshtype") + + for _, tag := range strings.Split(tagStr, "|") { + i, err := strconv.Atoi(tag) + if err == nil { + tags = append(tags, byte(i)) + } + } + + return tags +} + +func fieldError(t reflect.Type, field int, problem string) error { + if problem != "" { + problem = ": " + problem + } + return fmt.Errorf("ssh: unmarshal error for field %s of type %s%s", t.Field(field).Name, t.Name(), problem) +} + +var errShortRead = errors.New("ssh: short read") + +// Unmarshal parses data in SSH wire format into a structure. The out +// argument should be a pointer to struct. If the first member of the +// struct has the "sshtype" tag set to a '|'-separated set of numbers +// in decimal, the packet must start with one of those numbers. In +// case of error, Unmarshal returns a ParseError or +// UnexpectedMessageError. +func Unmarshal(data []byte, out interface{}) error { + v := reflect.ValueOf(out).Elem() + structType := v.Type() + expectedTypes := typeTags(structType) + + var expectedType byte + if len(expectedTypes) > 0 { + expectedType = expectedTypes[0] + } + + if len(data) == 0 { + return parseError(expectedType) + } + + if len(expectedTypes) > 0 { + goodType := false + for _, e := range expectedTypes { + if e > 0 && data[0] == e { + goodType = true + break + } + } + if !goodType { + return fmt.Errorf("ssh: unexpected message type %d (expected one of %v)", data[0], expectedTypes) + } + data = data[1:] + } + + var ok bool + for i := 0; i < v.NumField(); i++ { + field := v.Field(i) + t := field.Type() + switch t.Kind() { + case reflect.Bool: + if len(data) < 1 { + return errShortRead + } + field.SetBool(data[0] != 0) + data = data[1:] + case reflect.Array: + if t.Elem().Kind() != reflect.Uint8 { + return fieldError(structType, i, "array of unsupported type") + } + if len(data) < t.Len() { + return errShortRead + } + for j, n := 0, t.Len(); j < n; j++ { + field.Index(j).Set(reflect.ValueOf(data[j])) + } + data = data[t.Len():] + case reflect.Uint64: + var u64 uint64 + if u64, data, ok = parseUint64(data); !ok { + return errShortRead + } + field.SetUint(u64) + case reflect.Uint32: + var u32 uint32 + if u32, data, ok = parseUint32(data); !ok { + return errShortRead + } + field.SetUint(uint64(u32)) + case reflect.Uint8: + if len(data) < 1 { + return errShortRead + } + field.SetUint(uint64(data[0])) + data = data[1:] + case reflect.String: + var s []byte + if s, data, ok = parseString(data); !ok { + return fieldError(structType, i, "") + } + field.SetString(string(s)) + case reflect.Slice: + switch t.Elem().Kind() { + case reflect.Uint8: + if structType.Field(i).Tag.Get("ssh") == "rest" { + field.Set(reflect.ValueOf(data)) + data = nil + } else { + var s []byte + if s, data, ok = parseString(data); !ok { + return errShortRead + } + field.Set(reflect.ValueOf(s)) + } + case reflect.String: + var nl []string + if nl, data, ok = parseNameList(data); !ok { + return errShortRead + } + field.Set(reflect.ValueOf(nl)) + default: + return fieldError(structType, i, "slice of unsupported type") + } + case reflect.Ptr: + if t == bigIntType { + var n *big.Int + if n, data, ok = parseInt(data); !ok { + return errShortRead + } + field.Set(reflect.ValueOf(n)) + } else { + return fieldError(structType, i, "pointer to unsupported type") + } + default: + return fieldError(structType, i, fmt.Sprintf("unsupported type: %v", t)) + } + } + + if len(data) != 0 { + return parseError(expectedType) + } + + return nil +} + +// Marshal serializes the message in msg to SSH wire format. The msg +// argument should be a struct or pointer to struct. If the first +// member has the "sshtype" tag set to a number in decimal, that +// number is prepended to the result. If the last of member has the +// "ssh" tag set to "rest", its contents are appended to the output. +func Marshal(msg interface{}) []byte { + out := make([]byte, 0, 64) + return marshalStruct(out, msg) +} + +func marshalStruct(out []byte, msg interface{}) []byte { + v := reflect.Indirect(reflect.ValueOf(msg)) + msgTypes := typeTags(v.Type()) + if len(msgTypes) > 0 { + out = append(out, msgTypes[0]) + } + + for i, n := 0, v.NumField(); i < n; i++ { + field := v.Field(i) + switch t := field.Type(); t.Kind() { + case reflect.Bool: + var v uint8 + if field.Bool() { + v = 1 + } + out = append(out, v) + case reflect.Array: + if t.Elem().Kind() != reflect.Uint8 { + panic(fmt.Sprintf("array of non-uint8 in field %d: %T", i, field.Interface())) + } + for j, l := 0, t.Len(); j < l; j++ { + out = append(out, uint8(field.Index(j).Uint())) + } + case reflect.Uint32: + out = appendU32(out, uint32(field.Uint())) + case reflect.Uint64: + out = appendU64(out, uint64(field.Uint())) + case reflect.Uint8: + out = append(out, uint8(field.Uint())) + case reflect.String: + s := field.String() + out = appendInt(out, len(s)) + out = append(out, s...) + case reflect.Slice: + switch t.Elem().Kind() { + case reflect.Uint8: + if v.Type().Field(i).Tag.Get("ssh") != "rest" { + out = appendInt(out, field.Len()) + } + out = append(out, field.Bytes()...) + case reflect.String: + offset := len(out) + out = appendU32(out, 0) + if n := field.Len(); n > 0 { + for j := 0; j < n; j++ { + f := field.Index(j) + if j != 0 { + out = append(out, ',') + } + out = append(out, f.String()...) + } + // overwrite length value + binary.BigEndian.PutUint32(out[offset:], uint32(len(out)-offset-4)) + } + default: + panic(fmt.Sprintf("slice of unknown type in field %d: %T", i, field.Interface())) + } + case reflect.Ptr: + if t == bigIntType { + var n *big.Int + nValue := reflect.ValueOf(&n) + nValue.Elem().Set(field) + needed := intLength(n) + oldLength := len(out) + + if cap(out)-len(out) < needed { + newOut := make([]byte, len(out), 2*(len(out)+needed)) + copy(newOut, out) + out = newOut + } + out = out[:oldLength+needed] + marshalInt(out[oldLength:], n) + } else { + panic(fmt.Sprintf("pointer to unknown type in field %d: %T", i, field.Interface())) + } + } + } + + return out +} + +var bigOne = big.NewInt(1) + +func parseString(in []byte) (out, rest []byte, ok bool) { + if len(in) < 4 { + return + } + length := binary.BigEndian.Uint32(in) + in = in[4:] + if uint32(len(in)) < length { + return + } + out = in[:length] + rest = in[length:] + ok = true + return +} + +var ( + comma = []byte{','} + emptyNameList = []string{} +) + +func parseNameList(in []byte) (out []string, rest []byte, ok bool) { + contents, rest, ok := parseString(in) + if !ok { + return + } + if len(contents) == 0 { + out = emptyNameList + return + } + parts := bytes.Split(contents, comma) + out = make([]string, len(parts)) + for i, part := range parts { + out[i] = string(part) + } + return +} + +func parseInt(in []byte) (out *big.Int, rest []byte, ok bool) { + contents, rest, ok := parseString(in) + if !ok { + return + } + out = new(big.Int) + + if len(contents) > 0 && contents[0]&0x80 == 0x80 { + // This is a negative number + notBytes := make([]byte, len(contents)) + for i := range notBytes { + notBytes[i] = ^contents[i] + } + out.SetBytes(notBytes) + out.Add(out, bigOne) + out.Neg(out) + } else { + // Positive number + out.SetBytes(contents) + } + ok = true + return +} + +func parseUint32(in []byte) (uint32, []byte, bool) { + if len(in) < 4 { + return 0, nil, false + } + return binary.BigEndian.Uint32(in), in[4:], true +} + +func parseUint64(in []byte) (uint64, []byte, bool) { + if len(in) < 8 { + return 0, nil, false + } + return binary.BigEndian.Uint64(in), in[8:], true +} + +func intLength(n *big.Int) int { + length := 4 /* length bytes */ + if n.Sign() < 0 { + nMinus1 := new(big.Int).Neg(n) + nMinus1.Sub(nMinus1, bigOne) + bitLen := nMinus1.BitLen() + if bitLen%8 == 0 { + // The number will need 0xff padding + length++ + } + length += (bitLen + 7) / 8 + } else if n.Sign() == 0 { + // A zero is the zero length string + } else { + bitLen := n.BitLen() + if bitLen%8 == 0 { + // The number will need 0x00 padding + length++ + } + length += (bitLen + 7) / 8 + } + + return length +} + +func marshalUint32(to []byte, n uint32) []byte { + binary.BigEndian.PutUint32(to, n) + return to[4:] +} + +func marshalUint64(to []byte, n uint64) []byte { + binary.BigEndian.PutUint64(to, n) + return to[8:] +} + +func marshalInt(to []byte, n *big.Int) []byte { + lengthBytes := to + to = to[4:] + length := 0 + + if n.Sign() < 0 { + // A negative number has to be converted to two's-complement + // form. So we'll subtract 1 and invert. If the + // most-significant-bit isn't set then we'll need to pad the + // beginning with 0xff in order to keep the number negative. + nMinus1 := new(big.Int).Neg(n) + nMinus1.Sub(nMinus1, bigOne) + bytes := nMinus1.Bytes() + for i := range bytes { + bytes[i] ^= 0xff + } + if len(bytes) == 0 || bytes[0]&0x80 == 0 { + to[0] = 0xff + to = to[1:] + length++ + } + nBytes := copy(to, bytes) + to = to[nBytes:] + length += nBytes + } else if n.Sign() == 0 { + // A zero is the zero length string + } else { + bytes := n.Bytes() + if len(bytes) > 0 && bytes[0]&0x80 != 0 { + // We'll have to pad this with a 0x00 in order to + // stop it looking like a negative number. + to[0] = 0 + to = to[1:] + length++ + } + nBytes := copy(to, bytes) + to = to[nBytes:] + length += nBytes + } + + lengthBytes[0] = byte(length >> 24) + lengthBytes[1] = byte(length >> 16) + lengthBytes[2] = byte(length >> 8) + lengthBytes[3] = byte(length) + return to +} + +func writeInt(w io.Writer, n *big.Int) { + length := intLength(n) + buf := make([]byte, length) + marshalInt(buf, n) + w.Write(buf) +} + +func writeString(w io.Writer, s []byte) { + var lengthBytes [4]byte + lengthBytes[0] = byte(len(s) >> 24) + lengthBytes[1] = byte(len(s) >> 16) + lengthBytes[2] = byte(len(s) >> 8) + lengthBytes[3] = byte(len(s)) + w.Write(lengthBytes[:]) + w.Write(s) +} + +func stringLength(n int) int { + return 4 + n +} + +func marshalString(to []byte, s []byte) []byte { + to[0] = byte(len(s) >> 24) + to[1] = byte(len(s) >> 16) + to[2] = byte(len(s) >> 8) + to[3] = byte(len(s)) + to = to[4:] + copy(to, s) + return to[len(s):] +} + +var bigIntType = reflect.TypeFor[*big.Int]() + +// Decode a packet into its corresponding message. +func decode(packet []byte) (interface{}, error) { + var msg interface{} + switch packet[0] { + case msgDisconnect: + msg = new(disconnectMsg) + case msgServiceRequest: + msg = new(serviceRequestMsg) + case msgServiceAccept: + msg = new(serviceAcceptMsg) + case msgExtInfo: + msg = new(extInfoMsg) + case msgKexInit: + msg = new(kexInitMsg) + case msgKexDHInit: + msg = new(kexDHInitMsg) + case msgKexDHReply: + msg = new(kexDHReplyMsg) + case msgUserAuthRequest: + msg = new(userAuthRequestMsg) + case msgUserAuthSuccess: + return new(userAuthSuccessMsg), nil + case msgUserAuthFailure: + msg = new(userAuthFailureMsg) + case msgUserAuthBanner: + msg = new(userAuthBannerMsg) + case msgUserAuthPubKeyOk: + msg = new(userAuthPubKeyOkMsg) + case msgGlobalRequest: + msg = new(globalRequestMsg) + case msgRequestSuccess: + msg = new(globalRequestSuccessMsg) + case msgRequestFailure: + msg = new(globalRequestFailureMsg) + case msgChannelOpen: + msg = new(channelOpenMsg) + case msgChannelData: + msg = new(channelDataMsg) + case msgChannelOpenConfirm: + msg = new(channelOpenConfirmMsg) + case msgChannelOpenFailure: + msg = new(channelOpenFailureMsg) + case msgChannelWindowAdjust: + msg = new(windowAdjustMsg) + case msgChannelEOF: + msg = new(channelEOFMsg) + case msgChannelClose: + msg = new(channelCloseMsg) + case msgChannelRequest: + msg = new(channelRequestMsg) + case msgChannelSuccess: + msg = new(channelRequestSuccessMsg) + case msgChannelFailure: + msg = new(channelRequestFailureMsg) + case msgUserAuthGSSAPIToken: + msg = new(userAuthGSSAPIToken) + case msgUserAuthGSSAPIMIC: + msg = new(userAuthGSSAPIMIC) + case msgUserAuthGSSAPIErrTok: + msg = new(userAuthGSSAPIErrTok) + case msgUserAuthGSSAPIError: + msg = new(userAuthGSSAPIError) + default: + return nil, unexpectedMessageError(0, packet[0]) + } + if err := Unmarshal(packet, msg); err != nil { + return nil, err + } + return msg, nil +} + +var packetTypeNames = map[byte]string{ + msgDisconnect: "disconnectMsg", + msgServiceRequest: "serviceRequestMsg", + msgServiceAccept: "serviceAcceptMsg", + msgExtInfo: "extInfoMsg", + msgKexInit: "kexInitMsg", + msgKexDHInit: "kexDHInitMsg", + msgKexDHReply: "kexDHReplyMsg", + msgUserAuthRequest: "userAuthRequestMsg", + msgUserAuthSuccess: "userAuthSuccessMsg", + msgUserAuthFailure: "userAuthFailureMsg", + msgUserAuthPubKeyOk: "userAuthPubKeyOkMsg", + msgGlobalRequest: "globalRequestMsg", + msgRequestSuccess: "globalRequestSuccessMsg", + msgRequestFailure: "globalRequestFailureMsg", + msgChannelOpen: "channelOpenMsg", + msgChannelData: "channelDataMsg", + msgChannelOpenConfirm: "channelOpenConfirmMsg", + msgChannelOpenFailure: "channelOpenFailureMsg", + msgChannelWindowAdjust: "windowAdjustMsg", + msgChannelEOF: "channelEOFMsg", + msgChannelClose: "channelCloseMsg", + msgChannelRequest: "channelRequestMsg", + msgChannelSuccess: "channelRequestSuccessMsg", + msgChannelFailure: "channelRequestFailureMsg", +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mlkem.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mlkem.go new file mode 100644 index 0000000..ddc0ed1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mlkem.go @@ -0,0 +1,168 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "crypto" + "crypto/mlkem" + "crypto/sha256" + "errors" + "fmt" + "io" + + "golang.org/x/crypto/curve25519" +) + +// mlkem768WithCurve25519sha256 implements the hybrid ML-KEM768 with +// curve25519-sha256 key exchange method, as described by +// draft-kampanakis-curdle-ssh-pq-ke-05 section 2.3.3. +type mlkem768WithCurve25519sha256 struct{} + +func (kex *mlkem768WithCurve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) { + var c25519kp curve25519KeyPair + if err := c25519kp.generate(rand); err != nil { + return nil, err + } + + seed := make([]byte, mlkem.SeedSize) + if _, err := io.ReadFull(rand, seed); err != nil { + return nil, err + } + + mlkemDk, err := mlkem.NewDecapsulationKey768(seed) + if err != nil { + return nil, err + } + + hybridKey := append(mlkemDk.EncapsulationKey().Bytes(), c25519kp.pub[:]...) + if err := c.writePacket(Marshal(&kexECDHInitMsg{hybridKey})); err != nil { + return nil, err + } + + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var reply kexECDHReplyMsg + if err = Unmarshal(packet, &reply); err != nil { + return nil, err + } + + if len(reply.EphemeralPubKey) != mlkem.CiphertextSize768+32 { + return nil, errors.New("ssh: peer's mlkem768x25519 public value has wrong length") + } + + // Perform KEM decapsulate operation to obtain shared key from ML-KEM. + mlkem768Secret, err := mlkemDk.Decapsulate(reply.EphemeralPubKey[:mlkem.CiphertextSize768]) + if err != nil { + return nil, err + } + + // Complete Curve25519 ECDH to obtain its shared key. + c25519Secret, err := curve25519.X25519(c25519kp.priv[:], reply.EphemeralPubKey[mlkem.CiphertextSize768:]) + if err != nil { + return nil, fmt.Errorf("ssh: peer's mlkem768x25519 public value is not valid: %w", err) + } + // Compute actual shared key. + h := sha256.New() + h.Write(mlkem768Secret) + h.Write(c25519Secret) + secret := h.Sum(nil) + + h.Reset() + magics.write(h) + writeString(h, reply.HostKey) + writeString(h, hybridKey) + writeString(h, reply.EphemeralPubKey) + + K := make([]byte, stringLength(len(secret))) + marshalString(K, secret) + h.Write(K) + + return &kexResult{ + H: h.Sum(nil), + K: K, + HostKey: reply.HostKey, + Signature: reply.Signature, + Hash: crypto.SHA256, + }, nil +} + +func (kex *mlkem768WithCurve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (*kexResult, error) { + packet, err := c.readPacket() + if err != nil { + return nil, err + } + + var kexInit kexECDHInitMsg + if err = Unmarshal(packet, &kexInit); err != nil { + return nil, err + } + + if len(kexInit.ClientPubKey) != mlkem.EncapsulationKeySize768+32 { + return nil, errors.New("ssh: peer's ML-KEM768/curve25519 public value has wrong length") + } + + encapsulationKey, err := mlkem.NewEncapsulationKey768(kexInit.ClientPubKey[:mlkem.EncapsulationKeySize768]) + if err != nil { + return nil, fmt.Errorf("ssh: peer's ML-KEM768 encapsulation key is not valid: %w", err) + } + // Perform KEM encapsulate operation to obtain ciphertext and shared key. + mlkem768Secret, mlkem768Ciphertext := encapsulationKey.Encapsulate() + + // Perform server side of Curve25519 ECDH to obtain server public value and + // shared key. + var c25519kp curve25519KeyPair + if err := c25519kp.generate(rand); err != nil { + return nil, err + } + c25519Secret, err := curve25519.X25519(c25519kp.priv[:], kexInit.ClientPubKey[mlkem.EncapsulationKeySize768:]) + if err != nil { + return nil, fmt.Errorf("ssh: peer's ML-KEM768/curve25519 public value is not valid: %w", err) + } + hybridKey := append(mlkem768Ciphertext, c25519kp.pub[:]...) + + // Compute actual shared key. + h := sha256.New() + h.Write(mlkem768Secret) + h.Write(c25519Secret) + secret := h.Sum(nil) + + hostKeyBytes := priv.PublicKey().Marshal() + + h.Reset() + magics.write(h) + writeString(h, hostKeyBytes) + writeString(h, kexInit.ClientPubKey) + writeString(h, hybridKey) + + K := make([]byte, stringLength(len(secret))) + marshalString(K, secret) + h.Write(K) + + H := h.Sum(nil) + + sig, err := signAndMarshal(priv, rand, H, algo) + if err != nil { + return nil, err + } + + reply := kexECDHReplyMsg{ + EphemeralPubKey: hybridKey, + HostKey: hostKeyBytes, + Signature: sig, + } + if err := c.writePacket(Marshal(&reply)); err != nil { + return nil, err + } + return &kexResult{ + H: H, + K: K, + HostKey: hostKeyBytes, + Signature: sig, + Hash: crypto.SHA256, + }, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mux.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mux.go new file mode 100644 index 0000000..d2d24c6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/mux.go @@ -0,0 +1,357 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/binary" + "fmt" + "io" + "log" + "sync" + "sync/atomic" +) + +// debugMux, if set, causes messages in the connection protocol to be +// logged. +const debugMux = false + +// chanList is a thread safe channel list. +type chanList struct { + // protects concurrent access to chans + sync.Mutex + + // chans are indexed by the local id of the channel, which the + // other side should send in the PeersId field. + chans []*channel + + // This is a debugging aid: it offsets all IDs by this + // amount. This helps distinguish otherwise identical + // server/client muxes + offset uint32 +} + +// Assigns a channel ID to the given channel. +func (c *chanList) add(ch *channel) uint32 { + c.Lock() + defer c.Unlock() + for i := range c.chans { + if c.chans[i] == nil { + c.chans[i] = ch + return uint32(i) + c.offset + } + } + c.chans = append(c.chans, ch) + return uint32(len(c.chans)-1) + c.offset +} + +// getChan returns the channel for the given ID. +func (c *chanList) getChan(id uint32) *channel { + id -= c.offset + + c.Lock() + defer c.Unlock() + if id < uint32(len(c.chans)) { + return c.chans[id] + } + return nil +} + +func (c *chanList) remove(id uint32) { + id -= c.offset + c.Lock() + if id < uint32(len(c.chans)) { + c.chans[id] = nil + } + c.Unlock() +} + +// dropAll forgets all channels it knows, returning them in a slice. +func (c *chanList) dropAll() []*channel { + c.Lock() + defer c.Unlock() + var r []*channel + + for _, ch := range c.chans { + if ch == nil { + continue + } + r = append(r, ch) + } + c.chans = nil + return r +} + +// mux represents the state for the SSH connection protocol, which +// multiplexes many channels onto a single packet transport. +type mux struct { + conn packetConn + chanList chanList + + incomingChannels chan NewChannel + + globalSentMu sync.Mutex + globalResponses chan interface{} + incomingRequests chan *Request + + errCond *sync.Cond + err error +} + +// When debugging, each new chanList instantiation has a different +// offset. +var globalOff uint32 + +func (m *mux) Wait() error { + m.errCond.L.Lock() + defer m.errCond.L.Unlock() + for m.err == nil { + m.errCond.Wait() + } + return m.err +} + +// newMux returns a mux that runs over the given connection. +func newMux(p packetConn) *mux { + m := &mux{ + conn: p, + incomingChannels: make(chan NewChannel, chanSize), + globalResponses: make(chan interface{}, 1), + incomingRequests: make(chan *Request, chanSize), + errCond: newCond(), + } + if debugMux { + m.chanList.offset = atomic.AddUint32(&globalOff, 1) + } + + go m.loop() + return m +} + +func (m *mux) sendMessage(msg interface{}) error { + p := Marshal(msg) + if debugMux { + log.Printf("send global(%d): %#v", m.chanList.offset, msg) + } + return m.conn.writePacket(p) +} + +func (m *mux) SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) { + if wantReply { + m.globalSentMu.Lock() + defer m.globalSentMu.Unlock() + } + + if err := m.sendMessage(globalRequestMsg{ + Type: name, + WantReply: wantReply, + Data: payload, + }); err != nil { + return false, nil, err + } + + if !wantReply { + return false, nil, nil + } + + msg, ok := <-m.globalResponses + if !ok { + return false, nil, io.EOF + } + switch msg := msg.(type) { + case *globalRequestFailureMsg: + return false, msg.Data, nil + case *globalRequestSuccessMsg: + return true, msg.Data, nil + default: + return false, nil, fmt.Errorf("ssh: unexpected response to request: %#v", msg) + } +} + +// ackRequest must be called after processing a global request that +// has WantReply set. +func (m *mux) ackRequest(ok bool, data []byte) error { + if ok { + return m.sendMessage(globalRequestSuccessMsg{Data: data}) + } + return m.sendMessage(globalRequestFailureMsg{Data: data}) +} + +func (m *mux) Close() error { + return m.conn.Close() +} + +// loop runs the connection machine. It will process packets until an +// error is encountered. To synchronize on loop exit, use mux.Wait. +func (m *mux) loop() { + var err error + for err == nil { + err = m.onePacket() + } + + for _, ch := range m.chanList.dropAll() { + ch.close() + } + + close(m.incomingChannels) + close(m.incomingRequests) + close(m.globalResponses) + + m.conn.Close() + + m.errCond.L.Lock() + m.err = err + m.errCond.Broadcast() + m.errCond.L.Unlock() + + if debugMux { + log.Println("loop exit", err) + } +} + +// onePacket reads and processes one packet. +func (m *mux) onePacket() error { + packet, err := m.conn.readPacket() + if err != nil { + return err + } + + if debugMux { + if packet[0] == msgChannelData || packet[0] == msgChannelExtendedData { + log.Printf("decoding(%d): data packet - %d bytes", m.chanList.offset, len(packet)) + } else { + p, _ := decode(packet) + log.Printf("decoding(%d): %d %#v - %d bytes", m.chanList.offset, packet[0], p, len(packet)) + } + } + + switch packet[0] { + case msgChannelOpen: + return m.handleChannelOpen(packet) + case msgGlobalRequest, msgRequestSuccess, msgRequestFailure: + return m.handleGlobalPacket(packet) + case msgPing: + var msg pingMsg + if err := Unmarshal(packet, &msg); err != nil { + return fmt.Errorf("failed to unmarshal ping@openssh.com message: %w", err) + } + return m.sendMessage(pongMsg(msg)) + } + + // assume a channel packet. + if len(packet) < 5 { + return parseError(packet[0]) + } + id := binary.BigEndian.Uint32(packet[1:]) + ch := m.chanList.getChan(id) + if ch == nil { + return m.handleUnknownChannelPacket(id, packet) + } + + return ch.handlePacket(packet) +} + +func (m *mux) handleGlobalPacket(packet []byte) error { + msg, err := decode(packet) + if err != nil { + return err + } + + switch msg := msg.(type) { + case *globalRequestMsg: + m.incomingRequests <- &Request{ + Type: msg.Type, + WantReply: msg.WantReply, + Payload: msg.Data, + mux: m, + } + case *globalRequestSuccessMsg, *globalRequestFailureMsg: + m.globalResponses <- msg + default: + panic(fmt.Sprintf("not a global message %#v", msg)) + } + + return nil +} + +// handleChannelOpen schedules a channel to be Accept()ed. +func (m *mux) handleChannelOpen(packet []byte) error { + var msg channelOpenMsg + if err := Unmarshal(packet, &msg); err != nil { + return err + } + + if msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 { + failMsg := channelOpenFailureMsg{ + PeersID: msg.PeersID, + Reason: ConnectionFailed, + Message: "invalid request", + Language: "en_US.UTF-8", + } + return m.sendMessage(failMsg) + } + + c := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData) + c.remoteId = msg.PeersID + c.maxRemotePayload = msg.MaxPacketSize + c.remoteWin.add(msg.PeersWindow) + m.incomingChannels <- c + return nil +} + +func (m *mux) OpenChannel(chanType string, extra []byte) (Channel, <-chan *Request, error) { + ch, err := m.openChannel(chanType, extra) + if err != nil { + return nil, nil, err + } + + return ch, ch.incomingRequests, nil +} + +func (m *mux) openChannel(chanType string, extra []byte) (*channel, error) { + ch := m.newChannel(chanType, channelOutbound, extra) + + ch.maxIncomingPayload = channelMaxPacket + + open := channelOpenMsg{ + ChanType: chanType, + PeersWindow: ch.myWindow, + MaxPacketSize: ch.maxIncomingPayload, + TypeSpecificData: extra, + PeersID: ch.localId, + } + if err := m.sendMessage(open); err != nil { + return nil, err + } + + switch msg := (<-ch.msg).(type) { + case *channelOpenConfirmMsg: + return ch, nil + case *channelOpenFailureMsg: + return nil, &OpenChannelError{msg.Reason, msg.Message} + default: + return nil, fmt.Errorf("ssh: unexpected packet in response to channel open: %T", msg) + } +} + +func (m *mux) handleUnknownChannelPacket(id uint32, packet []byte) error { + msg, err := decode(packet) + if err != nil { + return err + } + + switch msg := msg.(type) { + // RFC 4254 section 5.4 says unrecognized channel requests should + // receive a failure response. + case *channelRequestMsg: + if msg.WantReply { + return m.sendMessage(channelRequestFailureMsg{ + PeersID: msg.PeersID, + }) + } + return nil + default: + return fmt.Errorf("ssh: invalid channel %d", id) + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/server.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/server.go new file mode 100644 index 0000000..064dcba --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/server.go @@ -0,0 +1,955 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bytes" + "errors" + "fmt" + "io" + "net" + "slices" + "strings" +) + +// The Permissions type holds fine-grained permissions that are +// specific to a user or a specific authentication method for a user. +// The Permissions value for a successful authentication attempt is +// available in ServerConn, so it can be used to pass information from +// the user-authentication phase to the application layer. +type Permissions struct { + // CriticalOptions indicate restrictions to the default + // permissions, and are typically used in conjunction with + // user certificates. The standard for SSH certificates + // defines "force-command" (only allow the given command to + // execute) and "source-address" (only allow connections from + // the given address). The SSH package currently only enforces + // the "source-address" critical option. It is up to server + // implementations to enforce other critical options, such as + // "force-command", by checking them after the SSH handshake + // is successful. In general, SSH servers should reject + // connections that specify critical options that are unknown + // or not supported. + CriticalOptions map[string]string + + // Extensions are extra functionality that the server may + // offer on authenticated connections. Lack of support for an + // extension does not preclude authenticating a user. Common + // extensions are "permit-agent-forwarding", + // "permit-X11-forwarding". The Go SSH library currently does + // not act on any extension, and it is up to server + // implementations to honor them. Extensions can be used to + // pass data from the authentication callbacks to the server + // application layer. + Extensions map[string]string + + // ExtraData allows to store user defined data. + ExtraData map[any]any +} + +type GSSAPIWithMICConfig struct { + // AllowLogin, must be set, is called when gssapi-with-mic + // authentication is selected (RFC 4462 section 3). The srcName is from the + // results of the GSS-API authentication. The format is username@DOMAIN. + // GSSAPI just guarantees to the server who the user is, but not if they can log in, and with what permissions. + // This callback is called after the user identity is established with GSSAPI to decide if the user can login with + // which permissions. If the user is allowed to login, it should return a nil error. + AllowLogin func(conn ConnMetadata, srcName string) (*Permissions, error) + + // Server must be set. It's the implementation + // of the GSSAPIServer interface. See GSSAPIServer interface for details. + Server GSSAPIServer +} + +// SendAuthBanner implements [ServerPreAuthConn]. +func (s *connection) SendAuthBanner(msg string) error { + return s.transport.writePacket(Marshal(&userAuthBannerMsg{ + Message: msg, + })) +} + +func (*connection) unexportedMethodForFutureProofing() {} + +// ServerPreAuthConn is the interface available on an incoming server +// connection before authentication has completed. +type ServerPreAuthConn interface { + unexportedMethodForFutureProofing() // permits growing ServerPreAuthConn safely later, ala testing.TB + + ConnMetadata + + // SendAuthBanner sends a banner message to the client. + // It returns an error once the authentication phase has ended. + SendAuthBanner(string) error +} + +// ServerConfig holds server specific configuration data. +type ServerConfig struct { + // Config contains configuration shared between client and server. + Config + + // PublicKeyAuthAlgorithms specifies the supported client public key + // authentication algorithms. Note that this should not include certificate + // types since those use the underlying algorithm. This list is sent to the + // client if it supports the server-sig-algs extension. Order is irrelevant. + // If unspecified then a default set of algorithms is used. + PublicKeyAuthAlgorithms []string + + hostKeys []Signer + + // NoClientAuth is true if clients are allowed to connect without + // authenticating. + // To determine NoClientAuth at runtime, set NoClientAuth to true + // and the optional NoClientAuthCallback to a non-nil value. + NoClientAuth bool + + // NoClientAuthCallback, if non-nil, is called when a user + // attempts to authenticate with auth method "none". + // NoClientAuth must also be set to true for this be used, or + // this func is unused. + NoClientAuthCallback func(ConnMetadata) (*Permissions, error) + + // MaxAuthTries specifies the maximum number of authentication attempts + // permitted per connection. If set to a negative number, the number of + // attempts are unlimited. If set to zero, the number of attempts are limited + // to 6. + MaxAuthTries int + + // PasswordCallback, if non-nil, is called when a user + // attempts to authenticate using a password. + PasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error) + + // PublicKeyCallback, if non-nil, is called when a client + // offers a public key for authentication. It must return a nil error + // if the given public key can be used to authenticate the + // given user. For example, see CertChecker.Authenticate. A + // call to this function does not guarantee that the key + // offered is in fact used to authenticate. To record any data + // depending on the public key, store it inside a + // Permissions.Extensions entry. + PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) + + // VerifiedPublicKeyCallback, if non-nil, is called after a client + // successfully confirms having control over a key that was previously + // approved by PublicKeyCallback. The permissions object passed to the + // callback is the one returned by PublicKeyCallback for the given public + // key and its ownership is transferred to the callback. The returned + // Permissions object can be the same object, optionally modified, or a + // completely new object. If VerifiedPublicKeyCallback is non-nil, + // PublicKeyCallback is not allowed to return a PartialSuccessError, which + // can instead be returned by VerifiedPublicKeyCallback. + // + // VerifiedPublicKeyCallback does not affect which authentication methods + // are included in the list of methods that can be attempted by the client. + VerifiedPublicKeyCallback func(conn ConnMetadata, key PublicKey, permissions *Permissions, + signatureAlgorithm string) (*Permissions, error) + + // KeyboardInteractiveCallback, if non-nil, is called when + // keyboard-interactive authentication is selected (RFC + // 4256). The client object's Challenge function should be + // used to query the user. The callback may offer multiple + // Challenge rounds. To avoid information leaks, the client + // should be presented a challenge even if the user is + // unknown. + KeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error) + + // AuthLogCallback, if non-nil, is called to log all authentication + // attempts. + AuthLogCallback func(conn ConnMetadata, method string, err error) + + // PreAuthConnCallback, if non-nil, is called upon receiving a new connection + // before any authentication has started. The provided ServerPreAuthConn + // can be used at any time before authentication is complete, including + // after this callback has returned. + PreAuthConnCallback func(ServerPreAuthConn) + + // ServerVersion is the version identification string to announce in + // the public handshake. + // If empty, a reasonable default is used. + // Note that RFC 4253 section 4.2 requires that this string start with + // "SSH-2.0-". + ServerVersion string + + // BannerCallback, if present, is called and the return string is sent to + // the client after key exchange completed but before authentication. + BannerCallback func(conn ConnMetadata) string + + // GSSAPIWithMICConfig includes gssapi server and callback, which if both non-nil, is used + // when gssapi-with-mic authentication is selected (RFC 4462 section 3). + GSSAPIWithMICConfig *GSSAPIWithMICConfig +} + +// AddHostKey adds a private key as a host key. If an existing host +// key exists with the same public key format, it is replaced. Each server +// config must have at least one host key. +func (s *ServerConfig) AddHostKey(key Signer) { + for i, k := range s.hostKeys { + if k.PublicKey().Type() == key.PublicKey().Type() { + s.hostKeys[i] = key + return + } + } + + s.hostKeys = append(s.hostKeys, key) +} + +// cachedPubKey contains the results of querying whether a public key is +// acceptable for a user. This is a FIFO cache. +type cachedPubKey struct { + user string + pubKeyData []byte + result error + perms *Permissions +} + +// maxCachedPubKeys is the number of cache entries we store. +// +// Due to consistent misuse of the PublicKeyCallback API, we have reduced this +// to 1, such that the only key in the cache is the most recently seen one. This +// forces the behavior that the last call to PublicKeyCallback will always be +// with the key that is used for authentication. +const maxCachedPubKeys = 1 + +// pubKeyCache caches tests for public keys. Since SSH clients +// will query whether a public key is acceptable before attempting to +// authenticate with it, we end up with duplicate queries for public +// key validity. The cache only applies to a single ServerConn. +type pubKeyCache struct { + keys []cachedPubKey +} + +// get returns the result for a given user/algo/key tuple. +func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) { + for _, k := range c.keys { + if k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) { + return k, true + } + } + return cachedPubKey{}, false +} + +// add adds the given tuple to the cache. +func (c *pubKeyCache) add(candidate cachedPubKey) { + if len(c.keys) >= maxCachedPubKeys { + c.keys = c.keys[1:] + } + c.keys = append(c.keys, candidate) +} + +// ServerConn is an authenticated SSH connection, as seen from the +// server +type ServerConn struct { + Conn + + // If the succeeding authentication callback returned a + // non-nil Permissions pointer, it is stored here. + Permissions *Permissions +} + +// NewServerConn starts a new SSH server with c as the underlying +// transport. It starts with a handshake and, if the handshake is +// unsuccessful, it closes the connection and returns an error. The +// Request and NewChannel channels must be serviced, or the connection +// will hang. +// +// The returned error may be of type *ServerAuthError for +// authentication errors. +func NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewChannel, <-chan *Request, error) { + fullConf := *config + fullConf.SetDefaults() + if fullConf.MaxAuthTries == 0 { + fullConf.MaxAuthTries = 6 + } + if len(fullConf.PublicKeyAuthAlgorithms) == 0 { + fullConf.PublicKeyAuthAlgorithms = defaultPubKeyAuthAlgos + } else { + for _, algo := range fullConf.PublicKeyAuthAlgorithms { + if !slices.Contains(SupportedAlgorithms().PublicKeyAuths, algo) && !slices.Contains(InsecureAlgorithms().PublicKeyAuths, algo) { + c.Close() + return nil, nil, nil, fmt.Errorf("ssh: unsupported public key authentication algorithm %s", algo) + } + } + } + + s := &connection{ + sshConn: sshConn{conn: c}, + } + perms, err := s.serverHandshake(&fullConf) + if err != nil { + c.Close() + return nil, nil, nil, err + } + return &ServerConn{s, perms}, s.mux.incomingChannels, s.mux.incomingRequests, nil +} + +// signAndMarshal signs the data with the appropriate algorithm, +// and serializes the result in SSH wire format. algo is the negotiate +// algorithm and may be a certificate type. +func signAndMarshal(k AlgorithmSigner, rand io.Reader, data []byte, algo string) ([]byte, error) { + sig, err := k.SignWithAlgorithm(rand, data, underlyingAlgo(algo)) + if err != nil { + return nil, err + } + + return Marshal(sig), nil +} + +// handshake performs key exchange and user authentication. +func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) { + if len(config.hostKeys) == 0 { + return nil, errors.New("ssh: server has no host keys") + } + + if !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil && + config.KeyboardInteractiveCallback == nil && (config.GSSAPIWithMICConfig == nil || + config.GSSAPIWithMICConfig.AllowLogin == nil || config.GSSAPIWithMICConfig.Server == nil) { + return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") + } + + if config.ServerVersion != "" { + s.serverVersion = []byte(config.ServerVersion) + } else { + s.serverVersion = []byte(packageVersion) + } + var err error + s.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion) + if err != nil { + return nil, err + } + + tr := newTransport(s.sshConn.conn, config.Rand, false /* not client */) + s.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, config) + + if err := s.transport.waitSession(); err != nil { + return nil, err + } + + // We just did the key change, so the session ID is established. + s.sessionID = s.transport.getSessionID() + s.algorithms = s.transport.getAlgorithms() + + var packet []byte + if packet, err = s.transport.readPacket(); err != nil { + return nil, err + } + + var serviceRequest serviceRequestMsg + if err = Unmarshal(packet, &serviceRequest); err != nil { + return nil, err + } + if serviceRequest.Service != serviceUserAuth { + return nil, errors.New("ssh: requested service '" + serviceRequest.Service + "' before authenticating") + } + serviceAccept := serviceAcceptMsg{ + Service: serviceUserAuth, + } + if err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil { + return nil, err + } + + perms, err := s.serverAuthenticate(config) + if err != nil { + return nil, err + } + s.mux = newMux(s.transport) + return perms, err +} + +func checkSourceAddress(addr net.Addr, sourceAddrs string) error { + if addr == nil { + return errors.New("ssh: no address known for client, but source-address match required") + } + + tcpAddr, ok := addr.(*net.TCPAddr) + if !ok { + return fmt.Errorf("ssh: remote address %v is not an TCP address when checking source-address match", addr) + } + + for _, sourceAddr := range strings.Split(sourceAddrs, ",") { + if allowedIP := net.ParseIP(sourceAddr); allowedIP != nil { + if allowedIP.Equal(tcpAddr.IP) { + return nil + } + } else { + _, ipNet, err := net.ParseCIDR(sourceAddr) + if err != nil { + return fmt.Errorf("ssh: error parsing source-address restriction %q: %v", sourceAddr, err) + } + + if ipNet.Contains(tcpAddr.IP) { + return nil + } + } + } + + return fmt.Errorf("ssh: remote address %v is not allowed because of source-address restriction", addr) +} + +func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, token []byte, s *connection, + sessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) { + gssAPIServer := gssapiConfig.Server + defer gssAPIServer.DeleteSecContext() + var srcName string + for { + var ( + outToken []byte + needContinue bool + ) + outToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(token) + if err != nil { + return err, nil, nil + } + if len(outToken) != 0 { + if err := s.transport.writePacket(Marshal(&userAuthGSSAPIToken{ + Token: outToken, + })); err != nil { + return nil, nil, err + } + } + if !needContinue { + break + } + packet, err := s.transport.readPacket() + if err != nil { + return nil, nil, err + } + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return nil, nil, err + } + token = userAuthGSSAPITokenReq.Token + } + packet, err := s.transport.readPacket() + if err != nil { + return nil, nil, err + } + userAuthGSSAPIMICReq := &userAuthGSSAPIMIC{} + if err := Unmarshal(packet, userAuthGSSAPIMICReq); err != nil { + return nil, nil, err + } + mic := buildMIC(string(sessionID), userAuthReq.User, userAuthReq.Service, userAuthReq.Method) + if err := gssAPIServer.VerifyMIC(mic, userAuthGSSAPIMICReq.MIC); err != nil { + return err, nil, nil + } + perms, authErr = gssapiConfig.AllowLogin(s, srcName) + return authErr, perms, nil +} + +// isAlgoCompatible checks if the signature format is compatible with the +// selected algorithm taking into account edge cases that occur with old +// clients. +func isAlgoCompatible(algo, sigFormat string) bool { + // Compatibility for old clients. + // + // For certificate authentication with OpenSSH 7.2-7.7 signature format can + // be rsa-sha2-256 or rsa-sha2-512 for the algorithm + // ssh-rsa-cert-v01@openssh.com. + // + // With gpg-agent < 2.2.6 the algorithm can be rsa-sha2-256 or rsa-sha2-512 + // for signature format ssh-rsa. + if isRSA(algo) && isRSA(sigFormat) { + return true + } + // Standard case: the underlying algorithm must match the signature format. + return underlyingAlgo(algo) == sigFormat +} + +// ServerAuthError represents server authentication errors and is +// sometimes returned by NewServerConn. It appends any authentication +// errors that may occur, and is returned if all of the authentication +// methods provided by the user failed to authenticate. +type ServerAuthError struct { + // Errors contains authentication errors returned by the authentication + // callback methods. The first entry is typically ErrNoAuth. + Errors []error +} + +func (l ServerAuthError) Error() string { + var errs []string + for _, err := range l.Errors { + errs = append(errs, err.Error()) + } + return "[" + strings.Join(errs, ", ") + "]" +} + +// ServerAuthCallbacks defines server-side authentication callbacks. +type ServerAuthCallbacks struct { + // PasswordCallback behaves like [ServerConfig.PasswordCallback]. + PasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error) + + // PublicKeyCallback behaves like [ServerConfig.PublicKeyCallback]. + PublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error) + + // KeyboardInteractiveCallback behaves like [ServerConfig.KeyboardInteractiveCallback]. + KeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error) + + // GSSAPIWithMICConfig behaves like [ServerConfig.GSSAPIWithMICConfig]. + GSSAPIWithMICConfig *GSSAPIWithMICConfig +} + +// PartialSuccessError can be returned by any of the [ServerConfig] +// authentication callbacks to indicate to the client that authentication has +// partially succeeded, but further steps are required. +type PartialSuccessError struct { + // Next defines the authentication callbacks to apply to further steps. The + // available methods communicated to the client are based on the non-nil + // ServerAuthCallbacks fields. + Next ServerAuthCallbacks +} + +func (p *PartialSuccessError) Error() string { + return "ssh: authenticated with partial success" +} + +// ErrNoAuth is the error value returned if no +// authentication method has been passed yet. This happens as a normal +// part of the authentication loop, since the client first tries +// 'none' authentication to discover available methods. +// It is returned in ServerAuthError.Errors from NewServerConn. +var ErrNoAuth = errors.New("ssh: no auth passed yet") + +// BannerError is an error that can be returned by authentication handlers in +// ServerConfig to send a banner message to the client. +type BannerError struct { + Err error + Message string +} + +func (b *BannerError) Unwrap() error { + return b.Err +} + +func (b *BannerError) Error() string { + if b.Err == nil { + return b.Message + } + return b.Err.Error() +} + +func (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) { + if config.PreAuthConnCallback != nil { + config.PreAuthConnCallback(s) + } + + sessionID := s.transport.getSessionID() + var cache pubKeyCache + var perms *Permissions + + authFailures := 0 + noneAuthCount := 0 + var authErrs []error + var calledBannerCallback bool + partialSuccessReturned := false + // Set the initial authentication callbacks from the config. They can be + // changed if a PartialSuccessError is returned. + authConfig := ServerAuthCallbacks{ + PasswordCallback: config.PasswordCallback, + PublicKeyCallback: config.PublicKeyCallback, + KeyboardInteractiveCallback: config.KeyboardInteractiveCallback, + GSSAPIWithMICConfig: config.GSSAPIWithMICConfig, + } + +userAuthLoop: + for { + if authFailures >= config.MaxAuthTries && config.MaxAuthTries > 0 { + discMsg := &disconnectMsg{ + Reason: 2, + Message: "too many authentication failures", + } + + if err := s.transport.writePacket(Marshal(discMsg)); err != nil { + return nil, err + } + authErrs = append(authErrs, discMsg) + return nil, &ServerAuthError{Errors: authErrs} + } + + var userAuthReq userAuthRequestMsg + if packet, err := s.transport.readPacket(); err != nil { + if err == io.EOF { + return nil, &ServerAuthError{Errors: authErrs} + } + return nil, err + } else if err = Unmarshal(packet, &userAuthReq); err != nil { + return nil, err + } + + if userAuthReq.Service != serviceSSH { + return nil, errors.New("ssh: client attempted to negotiate for unknown service: " + userAuthReq.Service) + } + + if s.user != userAuthReq.User && partialSuccessReturned { + return nil, fmt.Errorf("ssh: client changed the user after a partial success authentication, previous user %q, current user %q", + s.user, userAuthReq.User) + } + + s.user = userAuthReq.User + + if !calledBannerCallback && config.BannerCallback != nil { + calledBannerCallback = true + if msg := config.BannerCallback(s); msg != "" { + if err := s.SendAuthBanner(msg); err != nil { + return nil, err + } + } + } + + perms = nil + authErr := ErrNoAuth + + switch userAuthReq.Method { + case "none": + noneAuthCount++ + // We don't allow none authentication after a partial success + // response. + if config.NoClientAuth && !partialSuccessReturned { + if config.NoClientAuthCallback != nil { + perms, authErr = config.NoClientAuthCallback(s) + } else { + authErr = nil + } + } + case "password": + if authConfig.PasswordCallback == nil { + authErr = errors.New("ssh: password auth not configured") + break + } + payload := userAuthReq.Payload + if len(payload) < 1 || payload[0] != 0 { + return nil, parseError(msgUserAuthRequest) + } + payload = payload[1:] + password, payload, ok := parseString(payload) + if !ok || len(payload) > 0 { + return nil, parseError(msgUserAuthRequest) + } + + perms, authErr = authConfig.PasswordCallback(s, password) + case "keyboard-interactive": + if authConfig.KeyboardInteractiveCallback == nil { + authErr = errors.New("ssh: keyboard-interactive auth not configured") + break + } + + prompter := &sshClientKeyboardInteractive{s} + perms, authErr = authConfig.KeyboardInteractiveCallback(s, prompter.Challenge) + case "publickey": + if authConfig.PublicKeyCallback == nil { + authErr = errors.New("ssh: publickey auth not configured") + break + } + payload := userAuthReq.Payload + if len(payload) < 1 { + return nil, parseError(msgUserAuthRequest) + } + isQuery := payload[0] == 0 + payload = payload[1:] + algoBytes, payload, ok := parseString(payload) + if !ok { + return nil, parseError(msgUserAuthRequest) + } + algo := string(algoBytes) + if !slices.Contains(config.PublicKeyAuthAlgorithms, underlyingAlgo(algo)) { + authErr = fmt.Errorf("ssh: algorithm %q not accepted", algo) + break + } + + pubKeyData, payload, ok := parseString(payload) + if !ok { + return nil, parseError(msgUserAuthRequest) + } + + pubKey, err := ParsePublicKey(pubKeyData) + if err != nil { + return nil, err + } + + candidate, ok := cache.get(s.user, pubKeyData) + if !ok { + candidate.user = s.user + candidate.pubKeyData = pubKeyData + candidate.perms, candidate.result = authConfig.PublicKeyCallback(s, pubKey) + _, isPartialSuccessError := candidate.result.(*PartialSuccessError) + if isPartialSuccessError && config.VerifiedPublicKeyCallback != nil { + return nil, errors.New("ssh: invalid library usage: PublicKeyCallback must not return partial success when VerifiedPublicKeyCallback is defined") + } + + if (candidate.result == nil || isPartialSuccessError) && + candidate.perms != nil && + candidate.perms.CriticalOptions != nil && + candidate.perms.CriticalOptions[sourceAddressCriticalOption] != "" { + if err := checkSourceAddress( + s.RemoteAddr(), + candidate.perms.CriticalOptions[sourceAddressCriticalOption]); err != nil { + candidate.result = err + } + } + cache.add(candidate) + } + + if isQuery { + // The client can query if the given public key + // would be okay. + + if len(payload) > 0 { + return nil, parseError(msgUserAuthRequest) + } + _, isPartialSuccessError := candidate.result.(*PartialSuccessError) + if candidate.result == nil || isPartialSuccessError { + okMsg := userAuthPubKeyOkMsg{ + Algo: algo, + PubKey: pubKeyData, + } + if err = s.transport.writePacket(Marshal(&okMsg)); err != nil { + return nil, err + } + continue userAuthLoop + } + authErr = candidate.result + } else { + sig, payload, ok := parseSignature(payload) + if !ok || len(payload) > 0 { + return nil, parseError(msgUserAuthRequest) + } + // Ensure the declared public key algo is compatible with the + // decoded one. This check will ensure we don't accept e.g. + // ssh-rsa-cert-v01@openssh.com algorithm with ssh-rsa public + // key type. The algorithm and public key type must be + // consistent: both must be certificate algorithms, or neither. + if !slices.Contains(algorithmsForKeyFormat(pubKey.Type()), algo) { + authErr = fmt.Errorf("ssh: public key type %q not compatible with selected algorithm %q", + pubKey.Type(), algo) + break + } + // Ensure the public key algo and signature algo + // are supported. Compare the private key + // algorithm name that corresponds to algo with + // sig.Format. This is usually the same, but + // for certs, the names differ. + if !slices.Contains(config.PublicKeyAuthAlgorithms, sig.Format) { + authErr = fmt.Errorf("ssh: algorithm %q not accepted", sig.Format) + break + } + if !isAlgoCompatible(algo, sig.Format) { + authErr = fmt.Errorf("ssh: signature %q not compatible with selected algorithm %q", sig.Format, algo) + break + } + + signedData := buildDataSignedForAuth(sessionID, userAuthReq, algo, pubKeyData) + + if err := pubKey.Verify(signedData, sig); err != nil { + return nil, err + } + + authErr = candidate.result + perms = candidate.perms + if authErr == nil && config.VerifiedPublicKeyCallback != nil { + // Only call VerifiedPublicKeyCallback after the key has been accepted + // and successfully verified. If authErr is non-nil, the key is not + // considered verified and the callback must not run. + perms, authErr = config.VerifiedPublicKeyCallback(s, pubKey, perms, algo) + } + } + case "gssapi-with-mic": + if authConfig.GSSAPIWithMICConfig == nil { + authErr = errors.New("ssh: gssapi-with-mic auth not configured") + break + } + gssapiConfig := authConfig.GSSAPIWithMICConfig + userAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload) + if err != nil { + return nil, parseError(msgUserAuthRequest) + } + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication. + if userAuthRequestGSSAPI.N == 0 { + authErr = fmt.Errorf("ssh: Mechanism negotiation is not supported") + break + } + var i uint32 + present := false + for i = 0; i < userAuthRequestGSSAPI.N; i++ { + if userAuthRequestGSSAPI.OIDS[i].Equal(krb5Mesh) { + present = true + break + } + } + if !present { + authErr = fmt.Errorf("ssh: GSSAPI authentication must use the Kerberos V5 mechanism") + break + } + // Initial server response, see RFC 4462 section 3.3. + if err := s.transport.writePacket(Marshal(&userAuthGSSAPIResponse{ + SupportMech: krb5OID, + })); err != nil { + return nil, err + } + // Exchange token, see RFC 4462 section 3.4. + packet, err := s.transport.readPacket() + if err != nil { + return nil, err + } + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return nil, err + } + authErr, perms, err = gssExchangeToken(gssapiConfig, userAuthGSSAPITokenReq.Token, s, sessionID, + userAuthReq) + if err != nil { + return nil, err + } + default: + authErr = fmt.Errorf("ssh: unknown method %q", userAuthReq.Method) + } + + authErrs = append(authErrs, authErr) + + if config.AuthLogCallback != nil { + config.AuthLogCallback(s, userAuthReq.Method, authErr) + } + + var bannerErr *BannerError + if errors.As(authErr, &bannerErr) { + if bannerErr.Message != "" { + if err := s.SendAuthBanner(bannerErr.Message); err != nil { + return nil, err + } + } + } + + if authErr == nil { + break userAuthLoop + } + + var failureMsg userAuthFailureMsg + + if partialSuccess, ok := authErr.(*PartialSuccessError); ok { + // After a partial success error we don't allow changing the user + // name and execute the NoClientAuthCallback. + partialSuccessReturned = true + + // In case a partial success is returned, the server may send + // a new set of authentication methods. + authConfig = partialSuccess.Next + + // Reset pubkey cache, as the new PublicKeyCallback might + // accept a different set of public keys. + cache = pubKeyCache{} + + // Send back a partial success message to the user. + failureMsg.PartialSuccess = true + } else { + // Allow initial attempt of 'none' without penalty. + if authFailures > 0 || userAuthReq.Method != "none" || noneAuthCount != 1 { + authFailures++ + } + if config.MaxAuthTries > 0 && authFailures >= config.MaxAuthTries { + // If we have hit the max attempts, don't bother sending the + // final SSH_MSG_USERAUTH_FAILURE message, since there are + // no more authentication methods which can be attempted, + // and this message may cause the client to re-attempt + // authentication while we send the disconnect message. + // Continue, and trigger the disconnect at the start of + // the loop. + // + // The SSH specification is somewhat confusing about this, + // RFC 4252 Section 5.1 requires each authentication failure + // be responded to with a respective SSH_MSG_USERAUTH_FAILURE + // message, but Section 4 says the server should disconnect + // after some number of attempts, but it isn't explicit which + // message should take precedence (i.e. should there be a failure + // message than a disconnect message, or if we are going to + // disconnect, should we only send that message.) + // + // Either way, OpenSSH disconnects immediately after the last + // failed authentication attempt, and given they are typically + // considered the golden implementation it seems reasonable + // to match that behavior. + continue + } + } + + if authConfig.PasswordCallback != nil { + failureMsg.Methods = append(failureMsg.Methods, "password") + } + if authConfig.PublicKeyCallback != nil { + failureMsg.Methods = append(failureMsg.Methods, "publickey") + } + if authConfig.KeyboardInteractiveCallback != nil { + failureMsg.Methods = append(failureMsg.Methods, "keyboard-interactive") + } + if authConfig.GSSAPIWithMICConfig != nil && authConfig.GSSAPIWithMICConfig.Server != nil && + authConfig.GSSAPIWithMICConfig.AllowLogin != nil { + failureMsg.Methods = append(failureMsg.Methods, "gssapi-with-mic") + } + + if len(failureMsg.Methods) == 0 { + return nil, errors.New("ssh: no authentication methods available") + } + + if err := s.transport.writePacket(Marshal(&failureMsg)); err != nil { + return nil, err + } + } + + if err := s.transport.writePacket([]byte{msgUserAuthSuccess}); err != nil { + return nil, err + } + return perms, nil +} + +// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by +// asking the client on the other side of a ServerConn. +type sshClientKeyboardInteractive struct { + *connection +} + +func (c *sshClientKeyboardInteractive) Challenge(name, instruction string, questions []string, echos []bool) (answers []string, err error) { + if len(questions) != len(echos) { + return nil, errors.New("ssh: echos and questions must have equal length") + } + + var prompts []byte + for i := range questions { + prompts = appendString(prompts, questions[i]) + prompts = appendBool(prompts, echos[i]) + } + + if err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{ + Name: name, + Instruction: instruction, + NumPrompts: uint32(len(questions)), + Prompts: prompts, + })); err != nil { + return nil, err + } + + packet, err := c.transport.readPacket() + if err != nil { + return nil, err + } + if packet[0] != msgUserAuthInfoResponse { + return nil, unexpectedMessageError(msgUserAuthInfoResponse, packet[0]) + } + packet = packet[1:] + + n, packet, ok := parseUint32(packet) + if !ok || int(n) != len(questions) { + return nil, parseError(msgUserAuthInfoResponse) + } + + for i := uint32(0); i < n; i++ { + ans, rest, ok := parseString(packet) + if !ok { + return nil, parseError(msgUserAuthInfoResponse) + } + + answers = append(answers, string(ans)) + packet = rest + } + if len(packet) != 0 { + return nil, errors.New("ssh: junk at end of message") + } + + return answers, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/session.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/session.go new file mode 100644 index 0000000..acef622 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/session.go @@ -0,0 +1,647 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +// Session implements an interactive session described in +// "RFC 4254, section 6". + +import ( + "bytes" + "encoding/binary" + "errors" + "fmt" + "io" + "sync" +) + +type Signal string + +// POSIX signals as listed in RFC 4254 Section 6.10. +const ( + SIGABRT Signal = "ABRT" + SIGALRM Signal = "ALRM" + SIGFPE Signal = "FPE" + SIGHUP Signal = "HUP" + SIGILL Signal = "ILL" + SIGINT Signal = "INT" + SIGKILL Signal = "KILL" + SIGPIPE Signal = "PIPE" + SIGQUIT Signal = "QUIT" + SIGSEGV Signal = "SEGV" + SIGTERM Signal = "TERM" + SIGUSR1 Signal = "USR1" + SIGUSR2 Signal = "USR2" +) + +var signals = map[Signal]int{ + SIGABRT: 6, + SIGALRM: 14, + SIGFPE: 8, + SIGHUP: 1, + SIGILL: 4, + SIGINT: 2, + SIGKILL: 9, + SIGPIPE: 13, + SIGQUIT: 3, + SIGSEGV: 11, + SIGTERM: 15, +} + +type TerminalModes map[uint8]uint32 + +// POSIX terminal mode flags as listed in RFC 4254 Section 8. +const ( + tty_OP_END = 0 + VINTR = 1 + VQUIT = 2 + VERASE = 3 + VKILL = 4 + VEOF = 5 + VEOL = 6 + VEOL2 = 7 + VSTART = 8 + VSTOP = 9 + VSUSP = 10 + VDSUSP = 11 + VREPRINT = 12 + VWERASE = 13 + VLNEXT = 14 + VFLUSH = 15 + VSWTCH = 16 + VSTATUS = 17 + VDISCARD = 18 + IGNPAR = 30 + PARMRK = 31 + INPCK = 32 + ISTRIP = 33 + INLCR = 34 + IGNCR = 35 + ICRNL = 36 + IUCLC = 37 + IXON = 38 + IXANY = 39 + IXOFF = 40 + IMAXBEL = 41 + IUTF8 = 42 // RFC 8160 + ISIG = 50 + ICANON = 51 + XCASE = 52 + ECHO = 53 + ECHOE = 54 + ECHOK = 55 + ECHONL = 56 + NOFLSH = 57 + TOSTOP = 58 + IEXTEN = 59 + ECHOCTL = 60 + ECHOKE = 61 + PENDIN = 62 + OPOST = 70 + OLCUC = 71 + ONLCR = 72 + OCRNL = 73 + ONOCR = 74 + ONLRET = 75 + CS7 = 90 + CS8 = 91 + PARENB = 92 + PARODD = 93 + TTY_OP_ISPEED = 128 + TTY_OP_OSPEED = 129 +) + +// A Session represents a connection to a remote command or shell. +type Session struct { + // Stdin specifies the remote process's standard input. + // If Stdin is nil, the remote process reads from an empty + // bytes.Buffer. + Stdin io.Reader + + // Stdout and Stderr specify the remote process's standard + // output and error. + // + // If either is nil, Run connects the corresponding file + // descriptor to an instance of io.Discard. There is a + // fixed amount of buffering that is shared for the two streams. + // If either blocks it may eventually cause the remote + // command to block. + Stdout io.Writer + Stderr io.Writer + + ch Channel // the channel backing this session + started bool // true once Start, Run or Shell is invoked. + copyFuncs []func() error + errors chan error // one send per copyFunc + + // true if pipe method is active + stdinpipe, stdoutpipe, stderrpipe bool + + // stdinPipeWriter is non-nil if StdinPipe has not been called + // and Stdin was specified by the user; it is the write end of + // a pipe connecting Session.Stdin to the stdin channel. + stdinPipeWriter io.WriteCloser + + exitStatus chan error +} + +// SendRequest sends an out-of-band channel request on the SSH channel +// underlying the session. +func (s *Session) SendRequest(name string, wantReply bool, payload []byte) (bool, error) { + return s.ch.SendRequest(name, wantReply, payload) +} + +func (s *Session) Close() error { + return s.ch.Close() +} + +// RFC 4254 Section 6.4. +type setenvRequest struct { + Name string + Value string +} + +// Setenv sets an environment variable that will be applied to any +// command executed by Shell or Run. +func (s *Session) Setenv(name, value string) error { + msg := setenvRequest{ + Name: name, + Value: value, + } + ok, err := s.ch.SendRequest("env", true, Marshal(&msg)) + if err == nil && !ok { + err = errors.New("ssh: setenv failed") + } + return err +} + +// RFC 4254 Section 6.2. +type ptyRequestMsg struct { + Term string + Columns uint32 + Rows uint32 + Width uint32 + Height uint32 + Modelist string +} + +// RequestPty requests the association of a pty with the session on the remote host. +func (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) error { + var tm []byte + for k, v := range termmodes { + kv := struct { + Key byte + Val uint32 + }{k, v} + + tm = append(tm, Marshal(&kv)...) + } + tm = append(tm, tty_OP_END) + req := ptyRequestMsg{ + Term: term, + Columns: uint32(w), + Rows: uint32(h), + Width: uint32(w * 8), + Height: uint32(h * 8), + Modelist: string(tm), + } + ok, err := s.ch.SendRequest("pty-req", true, Marshal(&req)) + if err == nil && !ok { + err = errors.New("ssh: pty-req failed") + } + return err +} + +// RFC 4254 Section 6.5. +type subsystemRequestMsg struct { + Subsystem string +} + +// RequestSubsystem requests the association of a subsystem with the session on the remote host. +// A subsystem is a predefined command that runs in the background when the ssh session is initiated +func (s *Session) RequestSubsystem(subsystem string) error { + msg := subsystemRequestMsg{ + Subsystem: subsystem, + } + ok, err := s.ch.SendRequest("subsystem", true, Marshal(&msg)) + if err == nil && !ok { + err = errors.New("ssh: subsystem request failed") + } + return err +} + +// RFC 4254 Section 6.7. +type ptyWindowChangeMsg struct { + Columns uint32 + Rows uint32 + Width uint32 + Height uint32 +} + +// WindowChange informs the remote host about a terminal window dimension change to h rows and w columns. +func (s *Session) WindowChange(h, w int) error { + req := ptyWindowChangeMsg{ + Columns: uint32(w), + Rows: uint32(h), + Width: uint32(w * 8), + Height: uint32(h * 8), + } + _, err := s.ch.SendRequest("window-change", false, Marshal(&req)) + return err +} + +// RFC 4254 Section 6.9. +type signalMsg struct { + Signal string +} + +// Signal sends the given signal to the remote process. +// sig is one of the SIG* constants. +func (s *Session) Signal(sig Signal) error { + msg := signalMsg{ + Signal: string(sig), + } + + _, err := s.ch.SendRequest("signal", false, Marshal(&msg)) + return err +} + +// RFC 4254 Section 6.5. +type execMsg struct { + Command string +} + +// Start runs cmd on the remote host. Typically, the remote +// server passes cmd to the shell for interpretation. +// A Session only accepts one call to Run, Start or Shell. +func (s *Session) Start(cmd string) error { + if s.started { + return errors.New("ssh: session already started") + } + req := execMsg{ + Command: cmd, + } + + ok, err := s.ch.SendRequest("exec", true, Marshal(&req)) + if err == nil && !ok { + err = fmt.Errorf("ssh: command %v failed", cmd) + } + if err != nil { + return err + } + return s.start() +} + +// Run runs cmd on the remote host. Typically, the remote +// server passes cmd to the shell for interpretation. +// A Session only accepts one call to Run, Start, Shell, Output, +// or CombinedOutput. +// +// The returned error is nil if the command runs, has no problems +// copying stdin, stdout, and stderr, and exits with a zero exit +// status. +// +// If the remote server does not send an exit status, an error of type +// *ExitMissingError is returned. If the command completes +// unsuccessfully or is interrupted by a signal, the error is of type +// *ExitError. Other error types may be returned for I/O problems. +func (s *Session) Run(cmd string) error { + err := s.Start(cmd) + if err != nil { + return err + } + return s.Wait() +} + +// Output runs cmd on the remote host and returns its standard output. +func (s *Session) Output(cmd string) ([]byte, error) { + if s.Stdout != nil { + return nil, errors.New("ssh: Stdout already set") + } + var b bytes.Buffer + s.Stdout = &b + err := s.Run(cmd) + return b.Bytes(), err +} + +type singleWriter struct { + b bytes.Buffer + mu sync.Mutex +} + +func (w *singleWriter) Write(p []byte) (int, error) { + w.mu.Lock() + defer w.mu.Unlock() + return w.b.Write(p) +} + +// CombinedOutput runs cmd on the remote host and returns its combined +// standard output and standard error. +func (s *Session) CombinedOutput(cmd string) ([]byte, error) { + if s.Stdout != nil { + return nil, errors.New("ssh: Stdout already set") + } + if s.Stderr != nil { + return nil, errors.New("ssh: Stderr already set") + } + var b singleWriter + s.Stdout = &b + s.Stderr = &b + err := s.Run(cmd) + return b.b.Bytes(), err +} + +// Shell starts a login shell on the remote host. A Session only +// accepts one call to Run, Start, Shell, Output, or CombinedOutput. +func (s *Session) Shell() error { + if s.started { + return errors.New("ssh: session already started") + } + + ok, err := s.ch.SendRequest("shell", true, nil) + if err == nil && !ok { + return errors.New("ssh: could not start shell") + } + if err != nil { + return err + } + return s.start() +} + +func (s *Session) start() error { + s.started = true + + type F func(*Session) + for _, setupFd := range []F{(*Session).stdin, (*Session).stdout, (*Session).stderr} { + setupFd(s) + } + + s.errors = make(chan error, len(s.copyFuncs)) + for _, fn := range s.copyFuncs { + go func(fn func() error) { + s.errors <- fn() + }(fn) + } + return nil +} + +// Wait waits for the remote command to exit. +// +// The returned error is nil if the command runs, has no problems +// copying stdin, stdout, and stderr, and exits with a zero exit +// status. +// +// If the remote server does not send an exit status, an error of type +// *ExitMissingError is returned. If the command completes +// unsuccessfully or is interrupted by a signal, the error is of type +// *ExitError. Other error types may be returned for I/O problems. +func (s *Session) Wait() error { + if !s.started { + return errors.New("ssh: session not started") + } + waitErr := <-s.exitStatus + + if s.stdinPipeWriter != nil { + s.stdinPipeWriter.Close() + } + var copyError error + for range s.copyFuncs { + if err := <-s.errors; err != nil && copyError == nil { + copyError = err + } + } + if waitErr != nil { + return waitErr + } + return copyError +} + +func (s *Session) wait(reqs <-chan *Request) error { + wm := Waitmsg{status: -1} + // Wait for msg channel to be closed before returning. + for msg := range reqs { + switch msg.Type { + case "exit-status": + wm.status = int(binary.BigEndian.Uint32(msg.Payload)) + case "exit-signal": + var sigval struct { + Signal string + CoreDumped bool + Error string + Lang string + } + if err := Unmarshal(msg.Payload, &sigval); err != nil { + return err + } + + // Must sanitize strings? + wm.signal = sigval.Signal + wm.msg = sigval.Error + wm.lang = sigval.Lang + default: + // This handles keepalives and matches + // OpenSSH's behaviour. + if msg.WantReply { + msg.Reply(false, nil) + } + } + } + if wm.status == 0 { + return nil + } + if wm.status == -1 { + // exit-status was never sent from server + if wm.signal == "" { + // signal was not sent either. RFC 4254 + // section 6.10 recommends against this + // behavior, but it is allowed, so we let + // clients handle it. + return &ExitMissingError{} + } + wm.status = 128 + if _, ok := signals[Signal(wm.signal)]; ok { + wm.status += signals[Signal(wm.signal)] + } + } + + return &ExitError{wm} +} + +// ExitMissingError is returned if a session is torn down cleanly, but +// the server sends no confirmation of the exit status. +type ExitMissingError struct{} + +func (e *ExitMissingError) Error() string { + return "wait: remote command exited without exit status or exit signal" +} + +func (s *Session) stdin() { + if s.stdinpipe { + return + } + var stdin io.Reader + if s.Stdin == nil { + stdin = new(bytes.Buffer) + } else { + r, w := io.Pipe() + go func() { + _, err := io.Copy(w, s.Stdin) + w.CloseWithError(err) + }() + stdin, s.stdinPipeWriter = r, w + } + s.copyFuncs = append(s.copyFuncs, func() error { + _, err := io.Copy(s.ch, stdin) + if err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF { + err = err1 + } + return err + }) +} + +func (s *Session) stdout() { + if s.stdoutpipe { + return + } + if s.Stdout == nil { + s.Stdout = io.Discard + } + s.copyFuncs = append(s.copyFuncs, func() error { + _, err := io.Copy(s.Stdout, s.ch) + return err + }) +} + +func (s *Session) stderr() { + if s.stderrpipe { + return + } + if s.Stderr == nil { + s.Stderr = io.Discard + } + s.copyFuncs = append(s.copyFuncs, func() error { + _, err := io.Copy(s.Stderr, s.ch.Stderr()) + return err + }) +} + +// sessionStdin reroutes Close to CloseWrite. +type sessionStdin struct { + io.Writer + ch Channel +} + +func (s *sessionStdin) Close() error { + return s.ch.CloseWrite() +} + +// StdinPipe returns a pipe that will be connected to the +// remote command's standard input when the command starts. +func (s *Session) StdinPipe() (io.WriteCloser, error) { + if s.Stdin != nil { + return nil, errors.New("ssh: Stdin already set") + } + if s.started { + return nil, errors.New("ssh: StdinPipe after process started") + } + s.stdinpipe = true + return &sessionStdin{s.ch, s.ch}, nil +} + +// StdoutPipe returns a pipe that will be connected to the +// remote command's standard output when the command starts. +// There is a fixed amount of buffering that is shared between +// stdout and stderr streams. If the StdoutPipe reader is +// not serviced fast enough it may eventually cause the +// remote command to block. +func (s *Session) StdoutPipe() (io.Reader, error) { + if s.Stdout != nil { + return nil, errors.New("ssh: Stdout already set") + } + if s.started { + return nil, errors.New("ssh: StdoutPipe after process started") + } + s.stdoutpipe = true + return s.ch, nil +} + +// StderrPipe returns a pipe that will be connected to the +// remote command's standard error when the command starts. +// There is a fixed amount of buffering that is shared between +// stdout and stderr streams. If the StderrPipe reader is +// not serviced fast enough it may eventually cause the +// remote command to block. +func (s *Session) StderrPipe() (io.Reader, error) { + if s.Stderr != nil { + return nil, errors.New("ssh: Stderr already set") + } + if s.started { + return nil, errors.New("ssh: StderrPipe after process started") + } + s.stderrpipe = true + return s.ch.Stderr(), nil +} + +// newSession returns a new interactive session on the remote host. +func newSession(ch Channel, reqs <-chan *Request) (*Session, error) { + s := &Session{ + ch: ch, + } + s.exitStatus = make(chan error, 1) + go func() { + s.exitStatus <- s.wait(reqs) + }() + + return s, nil +} + +// An ExitError reports unsuccessful completion of a remote command. +type ExitError struct { + Waitmsg +} + +func (e *ExitError) Error() string { + return e.Waitmsg.String() +} + +// Waitmsg stores the information about an exited remote command +// as reported by Wait. +type Waitmsg struct { + status int + signal string + msg string + lang string +} + +// ExitStatus returns the exit status of the remote command. +func (w Waitmsg) ExitStatus() int { + return w.status +} + +// Signal returns the exit signal of the remote command if +// it was terminated violently. +func (w Waitmsg) Signal() string { + return w.signal +} + +// Msg returns the exit message given by the remote command +func (w Waitmsg) Msg() string { + return w.msg +} + +// Lang returns the language tag. See RFC 3066 +func (w Waitmsg) Lang() string { + return w.lang +} + +func (w Waitmsg) String() string { + str := fmt.Sprintf("Process exited with status %v", w.status) + if w.signal != "" { + str += fmt.Sprintf(" from signal %v", w.signal) + } + if w.msg != "" { + str += fmt.Sprintf(". Reason was: %v", w.msg) + } + return str +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/ssh_gss.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/ssh_gss.go new file mode 100644 index 0000000..a6249a1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/ssh_gss.go @@ -0,0 +1,145 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/asn1" + "errors" +) + +var krb5OID []byte + +func init() { + krb5OID, _ = asn1.Marshal(krb5Mesh) +} + +// GSSAPIClient provides the API to plug-in GSSAPI authentication for client logins. +type GSSAPIClient interface { + // InitSecContext initiates the establishment of a security context for GSS-API between the + // ssh client and ssh server. Initially the token parameter should be specified as nil. + // The routine may return a outputToken which should be transferred to + // the ssh server, where the ssh server will present it to + // AcceptSecContext. If no token need be sent, InitSecContext will indicate this by setting + // needContinue to false. To complete the context + // establishment, one or more reply tokens may be required from the ssh + // server;if so, InitSecContext will return a needContinue which is true. + // In this case, InitSecContext should be called again when the + // reply token is received from the ssh server, passing the reply + // token to InitSecContext via the token parameters. + // See RFC 2743 section 2.2.1 and RFC 4462 section 3.4. + InitSecContext(target string, token []byte, isGSSDelegCreds bool) (outputToken []byte, needContinue bool, err error) + // GetMIC generates a cryptographic MIC for the SSH2 message, and places + // the MIC in a token for transfer to the ssh server. + // The contents of the MIC field are obtained by calling GSS_GetMIC() + // over the following, using the GSS-API context that was just + // established: + // string session identifier + // byte SSH_MSG_USERAUTH_REQUEST + // string user name + // string service + // string "gssapi-with-mic" + // See RFC 2743 section 2.3.1 and RFC 4462 3.5. + GetMIC(micFiled []byte) ([]byte, error) + // Whenever possible, it should be possible for + // DeleteSecContext() calls to be successfully processed even + // if other calls cannot succeed, thereby enabling context-related + // resources to be released. + // In addition to deleting established security contexts, + // gss_delete_sec_context must also be able to delete "half-built" + // security contexts resulting from an incomplete sequence of + // InitSecContext()/AcceptSecContext() calls. + // See RFC 2743 section 2.2.3. + DeleteSecContext() error +} + +// GSSAPIServer provides the API to plug in GSSAPI authentication for server logins. +type GSSAPIServer interface { + // AcceptSecContext allows a remotely initiated security context between the application + // and a remote peer to be established by the ssh client. The routine may return a + // outputToken which should be transferred to the ssh client, + // where the ssh client will present it to InitSecContext. + // If no token need be sent, AcceptSecContext will indicate this + // by setting the needContinue to false. To + // complete the context establishment, one or more reply tokens may be + // required from the ssh client. if so, AcceptSecContext + // will return a needContinue which is true, in which case it + // should be called again when the reply token is received from the ssh + // client, passing the token to AcceptSecContext via the + // token parameters. + // The srcName return value is the authenticated username. + // See RFC 2743 section 2.2.2 and RFC 4462 section 3.4. + AcceptSecContext(token []byte) (outputToken []byte, srcName string, needContinue bool, err error) + // VerifyMIC verifies that a cryptographic MIC, contained in the token parameter, + // fits the supplied message is received from the ssh client. + // See RFC 2743 section 2.3.2. + VerifyMIC(micField []byte, micToken []byte) error + // Whenever possible, it should be possible for + // DeleteSecContext() calls to be successfully processed even + // if other calls cannot succeed, thereby enabling context-related + // resources to be released. + // In addition to deleting established security contexts, + // gss_delete_sec_context must also be able to delete "half-built" + // security contexts resulting from an incomplete sequence of + // InitSecContext()/AcceptSecContext() calls. + // See RFC 2743 section 2.2.3. + DeleteSecContext() error +} + +var ( + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication, + // so we also support the krb5 mechanism only. + // See RFC 1964 section 1. + krb5Mesh = asn1.ObjectIdentifier{1, 2, 840, 113554, 1, 2, 2} +) + +// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST +// See RFC 4462 section 3.2. +type userAuthRequestGSSAPI struct { + N uint32 + OIDS []asn1.ObjectIdentifier +} + +func parseGSSAPIPayload(payload []byte) (*userAuthRequestGSSAPI, error) { + n, rest, ok := parseUint32(payload) + if !ok { + return nil, errors.New("parse uint32 failed") + } + // Each ASN.1 encoded OID must have a minimum + // of 2 bytes; 64 maximum mechanisms is an + // arbitrary, but reasonable ceiling. + const maxMechs = 64 + if n > maxMechs || int(n)*2 > len(rest) { + return nil, errors.New("invalid mechanism count") + } + s := &userAuthRequestGSSAPI{ + N: n, + OIDS: make([]asn1.ObjectIdentifier, n), + } + for i := 0; i < int(n); i++ { + var ( + desiredMech []byte + err error + ) + desiredMech, rest, ok = parseString(rest) + if !ok { + return nil, errors.New("parse string failed") + } + if rest, err = asn1.Unmarshal(desiredMech, &s.OIDS[i]); err != nil { + return nil, err + } + } + return s, nil +} + +// See RFC 4462 section 3.6. +func buildMIC(sessionID string, username string, service string, authMethod string) []byte { + out := make([]byte, 0, 0) + out = appendString(out, sessionID) + out = append(out, msgUserAuthRequest) + out = appendString(out, username) + out = appendString(out, service) + out = appendString(out, authMethod) + return out +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/streamlocal.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/streamlocal.go new file mode 100644 index 0000000..152470f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/streamlocal.go @@ -0,0 +1,116 @@ +package ssh + +import ( + "errors" + "io" + "net" +) + +// streamLocalChannelOpenDirectMsg is a struct used for SSH_MSG_CHANNEL_OPEN message +// with "direct-streamlocal@openssh.com" string. +// +// See openssh-portable/PROTOCOL, section 2.4. connection: Unix domain socket forwarding +// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL#L235 +type streamLocalChannelOpenDirectMsg struct { + socketPath string + reserved0 string + reserved1 uint32 +} + +// forwardedStreamLocalPayload is a struct used for SSH_MSG_CHANNEL_OPEN message +// with "forwarded-streamlocal@openssh.com" string. +type forwardedStreamLocalPayload struct { + SocketPath string + Reserved0 string +} + +// streamLocalChannelForwardMsg is a struct used for SSH2_MSG_GLOBAL_REQUEST message +// with "streamlocal-forward@openssh.com"/"cancel-streamlocal-forward@openssh.com" string. +type streamLocalChannelForwardMsg struct { + socketPath string +} + +// ListenUnix is similar to ListenTCP but uses a Unix domain socket. +func (c *Client) ListenUnix(socketPath string) (net.Listener, error) { + c.handleForwardsOnce.Do(c.handleForwards) + m := streamLocalChannelForwardMsg{ + socketPath, + } + // send message + ok, _, err := c.SendRequest("streamlocal-forward@openssh.com", true, Marshal(&m)) + if err != nil { + return nil, err + } + if !ok { + return nil, errors.New("ssh: streamlocal-forward@openssh.com request denied by peer") + } + ch := c.forwards.add("unix", socketPath) + + return &unixListener{socketPath, c, ch}, nil +} + +func (c *Client) dialStreamLocal(socketPath string) (Channel, error) { + msg := streamLocalChannelOpenDirectMsg{ + socketPath: socketPath, + } + ch, in, err := c.OpenChannel("direct-streamlocal@openssh.com", Marshal(&msg)) + if err != nil { + return nil, err + } + go DiscardRequests(in) + return ch, err +} + +type unixListener struct { + socketPath string + + conn *Client + in <-chan forward +} + +// Accept waits for and returns the next connection to the listener. +func (l *unixListener) Accept() (net.Conn, error) { + s, ok := <-l.in + if !ok { + return nil, io.EOF + } + ch, incoming, err := s.newCh.Accept() + if err != nil { + return nil, err + } + go DiscardRequests(incoming) + + return &chanConn{ + Channel: ch, + laddr: &net.UnixAddr{ + Name: l.socketPath, + Net: "unix", + }, + raddr: &net.UnixAddr{ + Name: "@", + Net: "unix", + }, + }, nil +} + +// Close closes the listener. +func (l *unixListener) Close() error { + // this also closes the listener. + l.conn.forwards.remove("unix", l.socketPath) + m := streamLocalChannelForwardMsg{ + l.socketPath, + } + ok, _, err := l.conn.SendRequest("cancel-streamlocal-forward@openssh.com", true, Marshal(&m)) + if err == nil && !ok { + err = errors.New("ssh: cancel-streamlocal-forward@openssh.com failed") + } + return err +} + +// Addr returns the listener's network address. +func (l *unixListener) Addr() net.Addr { + return &net.UnixAddr{ + Name: l.socketPath, + Net: "unix", + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/tcpip.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/tcpip.go new file mode 100644 index 0000000..78c41fe --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/tcpip.go @@ -0,0 +1,545 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "context" + "errors" + "fmt" + "io" + "math/rand" + "net" + "net/netip" + "strconv" + "strings" + "sync" + "time" +) + +// Listen requests the remote peer open a listening socket on +// addr. Incoming connections will be available by calling Accept on +// the returned net.Listener. The listener must be serviced, or the +// SSH connection may hang. +// N must be "tcp", "tcp4", "tcp6", or "unix". +// +// If the address is a hostname, it is sent to the remote peer as-is, without +// being resolved locally, and the Listener Addr method will return a zero IP. +func (c *Client) Listen(n, addr string) (net.Listener, error) { + switch n { + case "tcp", "tcp4", "tcp6": + host, portStr, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + port, err := strconv.ParseInt(portStr, 10, 32) + if err != nil { + return nil, err + } + return c.listenTCPInternal(host, int(port)) + case "unix": + return c.ListenUnix(addr) + default: + return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) + } +} + +// Automatic port allocation is broken with OpenSSH before 6.0. See +// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017. In +// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0, +// rather than the actual port number. This means you can never open +// two different listeners with auto allocated ports. We work around +// this by trying explicit ports until we succeed. + +const openSSHPrefix = "OpenSSH_" + +var portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano())) + +// isBrokenOpenSSHVersion returns true if the given version string +// specifies a version of OpenSSH that is known to have a bug in port +// forwarding. +func isBrokenOpenSSHVersion(versionStr string) bool { + i := strings.Index(versionStr, openSSHPrefix) + if i < 0 { + return false + } + i += len(openSSHPrefix) + j := i + for ; j < len(versionStr); j++ { + if versionStr[j] < '0' || versionStr[j] > '9' { + break + } + } + version, _ := strconv.Atoi(versionStr[i:j]) + return version < 6 +} + +// autoPortListenWorkaround simulates automatic port allocation by +// trying random ports repeatedly. +func (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, error) { + var sshListener net.Listener + var err error + const tries = 10 + for i := 0; i < tries; i++ { + addr := *laddr + addr.Port = 1024 + portRandomizer.Intn(60000) + sshListener, err = c.ListenTCP(&addr) + if err == nil { + laddr.Port = addr.Port + return sshListener, err + } + } + return nil, fmt.Errorf("ssh: listen on random port failed after %d tries: %v", tries, err) +} + +// RFC 4254 7.1 +type channelForwardMsg struct { + addr string + rport uint32 +} + +// handleForwards starts goroutines handling forwarded connections. +// It's called on first use by (*Client).ListenTCP to not launch +// goroutines until needed. +func (c *Client) handleForwards() { + go c.forwards.handleChannels(c.HandleChannelOpen("forwarded-tcpip")) + go c.forwards.handleChannels(c.HandleChannelOpen("forwarded-streamlocal@openssh.com")) +} + +// ListenTCP requests the remote peer open a listening socket +// on laddr. Incoming connections will be available by calling +// Accept on the returned net.Listener. +// +// ListenTCP accepts an IP address, to provide a hostname use [Client.Listen] +// with "tcp", "tcp4", or "tcp6" network instead. +func (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) { + c.handleForwardsOnce.Do(c.handleForwards) + if laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) { + return c.autoPortListenWorkaround(laddr) + } + + return c.listenTCPInternal(laddr.IP.String(), laddr.Port) +} + +func (c *Client) listenTCPInternal(host string, port int) (net.Listener, error) { + c.handleForwardsOnce.Do(c.handleForwards) + + m := channelForwardMsg{ + host, + uint32(port), + } + // send message + ok, resp, err := c.SendRequest("tcpip-forward", true, Marshal(&m)) + if err != nil { + return nil, err + } + if !ok { + return nil, errors.New("ssh: tcpip-forward request denied by peer") + } + + // If the original port was 0, then the remote side will + // supply a real port number in the response. + if port == 0 { + var p struct { + Port uint32 + } + if err := Unmarshal(resp, &p); err != nil { + return nil, err + } + port = int(p.Port) + } + // Construct a local address placeholder for the remote listener. If the + // original host is an IP address, preserve it so that Listener.Addr() + // reports the same IP. If the host is a hostname or cannot be parsed as an + // IP, fall back to IPv4zero. The port field is always set, even if the + // original port was 0, because in that case the remote server will assign + // one, allowing callers to determine which port was selected. + ip := net.IPv4zero + if parsed, err := netip.ParseAddr(host); err == nil { + ip = net.IP(parsed.AsSlice()) + } + laddr := &net.TCPAddr{ + IP: ip, + Port: port, + } + addr := net.JoinHostPort(host, strconv.FormatInt(int64(port), 10)) + ch := c.forwards.add("tcp", addr) + + return &tcpListener{laddr, addr, c, ch}, nil +} + +// forwardList stores a mapping between remote +// forward requests and the tcpListeners. +type forwardList struct { + sync.Mutex + entries []forwardEntry +} + +// forwardEntry represents an established mapping of a laddr on a +// remote ssh server to a channel connected to a tcpListener. +type forwardEntry struct { + addr string // host:port or socket path + network string // tcp or unix + c chan forward +} + +// forward represents an incoming forwarded tcpip connection. The +// arguments to add/remove/lookup should be address as specified in +// the original forward-request. +type forward struct { + newCh NewChannel // the ssh client channel underlying this forward + raddr net.Addr // the raddr of the incoming connection +} + +func (l *forwardList) add(n, addr string) chan forward { + l.Lock() + defer l.Unlock() + f := forwardEntry{ + addr: addr, + network: n, + c: make(chan forward, 1), + } + l.entries = append(l.entries, f) + return f.c +} + +// See RFC 4254, section 7.2 +type forwardedTCPPayload struct { + Addr string + Port uint32 + OriginAddr string + OriginPort uint32 +} + +// parseTCPAddr parses the originating address from the remote into a *net.TCPAddr. +func parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) { + if port == 0 || port > 65535 { + return nil, fmt.Errorf("ssh: port number out of range: %d", port) + } + ip, err := netip.ParseAddr(addr) + if err != nil { + return nil, fmt.Errorf("ssh: cannot parse IP address %q", addr) + } + return &net.TCPAddr{IP: net.IP(ip.AsSlice()), Port: int(port)}, nil +} + +func (l *forwardList) handleChannels(in <-chan NewChannel) { + for ch := range in { + var ( + addr string + network string + raddr net.Addr + err error + ) + switch channelType := ch.ChannelType(); channelType { + case "forwarded-tcpip": + var payload forwardedTCPPayload + if err = Unmarshal(ch.ExtraData(), &payload); err != nil { + ch.Reject(ConnectionFailed, "could not parse forwarded-tcpip payload: "+err.Error()) + continue + } + + // RFC 4254 section 7.2 specifies that incoming addresses should + // list the address that was connected, in string format. It is the + // same address used in the tcpip-forward request. The originator + // address is an IP address instead. + addr = net.JoinHostPort(payload.Addr, strconv.FormatUint(uint64(payload.Port), 10)) + + raddr, err = parseTCPAddr(payload.OriginAddr, payload.OriginPort) + if err != nil { + ch.Reject(ConnectionFailed, err.Error()) + continue + } + network = "tcp" + case "forwarded-streamlocal@openssh.com": + var payload forwardedStreamLocalPayload + if err = Unmarshal(ch.ExtraData(), &payload); err != nil { + ch.Reject(ConnectionFailed, "could not parse forwarded-streamlocal@openssh.com payload: "+err.Error()) + continue + } + addr = payload.SocketPath + raddr = &net.UnixAddr{ + Name: "@", + Net: "unix", + } + network = "unix" + default: + panic(fmt.Errorf("ssh: unknown channel type %s", channelType)) + } + if ok := l.forward(network, addr, raddr, ch); !ok { + // Section 7.2, implementations MUST reject spurious incoming + // connections. + ch.Reject(Prohibited, "no forward for address") + continue + } + + } +} + +// remove removes the forward entry, and the channel feeding its +// listener. +func (l *forwardList) remove(n, addr string) { + l.Lock() + defer l.Unlock() + for i, f := range l.entries { + if n == f.network && addr == f.addr { + l.entries = append(l.entries[:i], l.entries[i+1:]...) + close(f.c) + return + } + } +} + +// closeAll closes and clears all forwards. +func (l *forwardList) closeAll() { + l.Lock() + defer l.Unlock() + for _, f := range l.entries { + close(f.c) + } + l.entries = nil +} + +func (l *forwardList) forward(n, addr string, raddr net.Addr, ch NewChannel) bool { + l.Lock() + defer l.Unlock() + for _, f := range l.entries { + if n == f.network && addr == f.addr { + f.c <- forward{newCh: ch, raddr: raddr} + return true + } + } + return false +} + +type tcpListener struct { + laddr *net.TCPAddr + addr string + + conn *Client + in <-chan forward +} + +// Accept waits for and returns the next connection to the listener. +func (l *tcpListener) Accept() (net.Conn, error) { + s, ok := <-l.in + if !ok { + return nil, io.EOF + } + ch, incoming, err := s.newCh.Accept() + if err != nil { + return nil, err + } + go DiscardRequests(incoming) + + return &chanConn{ + Channel: ch, + laddr: l.laddr, + raddr: s.raddr, + }, nil +} + +// Close closes the listener. +func (l *tcpListener) Close() error { + host, port, err := net.SplitHostPort(l.addr) + if err != nil { + return err + } + rport, err := strconv.ParseUint(port, 10, 32) + if err != nil { + return err + } + m := channelForwardMsg{ + host, + uint32(rport), + } + + // this also closes the listener. + l.conn.forwards.remove("tcp", l.addr) + ok, _, err := l.conn.SendRequest("cancel-tcpip-forward", true, Marshal(&m)) + if err == nil && !ok { + err = errors.New("ssh: cancel-tcpip-forward failed") + } + return err +} + +// Addr returns the listener's network address. +func (l *tcpListener) Addr() net.Addr { + return l.laddr +} + +// DialContext initiates a connection to the addr from the remote host. +// +// The provided Context must be non-nil. If the context expires before the +// connection is complete, an error is returned. Once successfully connected, +// any expiration of the context will not affect the connection. +// +// See func Dial for additional information. +func (c *Client) DialContext(ctx context.Context, n, addr string) (net.Conn, error) { + if err := ctx.Err(); err != nil { + return nil, err + } + type connErr struct { + conn net.Conn + err error + } + ch := make(chan connErr) + go func() { + conn, err := c.Dial(n, addr) + select { + case ch <- connErr{conn, err}: + case <-ctx.Done(): + if conn != nil { + conn.Close() + } + } + }() + select { + case res := <-ch: + return res.conn, res.err + case <-ctx.Done(): + return nil, ctx.Err() + } +} + +// Dial initiates a connection to the addr from the remote host. +// The resulting connection has a zero LocalAddr() and RemoteAddr(). +func (c *Client) Dial(n, addr string) (net.Conn, error) { + var ch Channel + switch n { + case "tcp", "tcp4", "tcp6": + // Parse the address into host and numeric port. + host, portString, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + port, err := strconv.ParseUint(portString, 10, 16) + if err != nil { + return nil, err + } + ch, err = c.dial(net.IPv4zero.String(), 0, host, int(port)) + if err != nil { + return nil, err + } + // Use a zero address for local and remote address. + zeroAddr := &net.TCPAddr{ + IP: net.IPv4zero, + Port: 0, + } + return &chanConn{ + Channel: ch, + laddr: zeroAddr, + raddr: zeroAddr, + }, nil + case "unix": + var err error + ch, err = c.dialStreamLocal(addr) + if err != nil { + return nil, err + } + return &chanConn{ + Channel: ch, + laddr: &net.UnixAddr{ + Name: "@", + Net: "unix", + }, + raddr: &net.UnixAddr{ + Name: addr, + Net: "unix", + }, + }, nil + default: + return nil, fmt.Errorf("ssh: unsupported protocol: %s", n) + } +} + +// DialTCP connects to the remote address raddr on the network net, +// which must be "tcp", "tcp4", or "tcp6". If laddr is not nil, it is used +// as the local address for the connection. +func (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, error) { + if laddr == nil { + laddr = &net.TCPAddr{ + IP: net.IPv4zero, + Port: 0, + } + } + ch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), raddr.Port) + if err != nil { + return nil, err + } + return &chanConn{ + Channel: ch, + laddr: laddr, + raddr: raddr, + }, nil +} + +// RFC 4254 7.2 +type channelOpenDirectMsg struct { + raddr string + rport uint32 + laddr string + lport uint32 +} + +func (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel, error) { + msg := channelOpenDirectMsg{ + raddr: raddr, + rport: uint32(rport), + laddr: laddr, + lport: uint32(lport), + } + ch, in, err := c.OpenChannel("direct-tcpip", Marshal(&msg)) + if err != nil { + return nil, err + } + go DiscardRequests(in) + return ch, nil +} + +type tcpChan struct { + Channel // the backing channel +} + +// chanConn fulfills the net.Conn interface without +// the tcpChan having to hold laddr or raddr directly. +type chanConn struct { + Channel + laddr, raddr net.Addr +} + +// LocalAddr returns the local network address. +func (t *chanConn) LocalAddr() net.Addr { + return t.laddr +} + +// RemoteAddr returns the remote network address. +func (t *chanConn) RemoteAddr() net.Addr { + return t.raddr +} + +// SetDeadline sets the read and write deadlines associated +// with the connection. +func (t *chanConn) SetDeadline(deadline time.Time) error { + if err := t.SetReadDeadline(deadline); err != nil { + return err + } + return t.SetWriteDeadline(deadline) +} + +// SetReadDeadline sets the read deadline. +// A zero value for t means Read will not time out. +// After the deadline, the error from Read will implement net.Error +// with Timeout() == true. +func (t *chanConn) SetReadDeadline(deadline time.Time) error { + // for compatibility with previous version, + // the error message contains "tcpChan" + return errors.New("ssh: tcpChan: deadline not supported") +} + +// SetWriteDeadline exists to satisfy the net.Conn interface +// but is not implemented by this type. It always returns an error. +func (t *chanConn) SetWriteDeadline(deadline time.Time) error { + return errors.New("ssh: tcpChan: deadline not supported") +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/transport.go b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/transport.go new file mode 100644 index 0000000..fa3dd6a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/crypto/ssh/transport.go @@ -0,0 +1,377 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "bufio" + "bytes" + "errors" + "fmt" + "io" + "log" +) + +// debugTransport if set, will print packet types as they go over the +// wire. No message decoding is done, to minimize the impact on timing. +const debugTransport = false + +// packetConn represents a transport that implements packet based +// operations. +type packetConn interface { + // Encrypt and send a packet of data to the remote peer. + writePacket(packet []byte) error + + // Read a packet from the connection. The read is blocking, + // i.e. if error is nil, then the returned byte slice is + // always non-empty. + readPacket() ([]byte, error) + + // Close closes the write-side of the connection. + Close() error +} + +// transport is the keyingTransport that implements the SSH packet +// protocol. +type transport struct { + reader connectionState + writer connectionState + + bufReader *bufio.Reader + bufWriter *bufio.Writer + rand io.Reader + isClient bool + io.Closer + + strictMode bool + initialKEXDone bool +} + +// packetCipher represents a combination of SSH encryption/MAC +// protocol. A single instance should be used for one direction only. +type packetCipher interface { + // writeCipherPacket encrypts the packet and writes it to w. The + // contents of the packet are generally scrambled. + writeCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error + + // readCipherPacket reads and decrypts a packet of data. The + // returned packet may be overwritten by future calls of + // readPacket. + readCipherPacket(seqnum uint32, r io.Reader) ([]byte, error) +} + +// connectionState represents one side (read or write) of the +// connection. This is necessary because each direction has its own +// keys, and can even have its own algorithms +type connectionState struct { + packetCipher + seqNum uint32 + dir direction + pendingKeyChange chan packetCipher +} + +func (t *transport) setStrictMode() error { + if t.reader.seqNum != 1 { + return errors.New("ssh: sequence number != 1 when strict KEX mode requested") + } + t.strictMode = true + return nil +} + +func (t *transport) setInitialKEXDone() { + t.initialKEXDone = true +} + +// prepareKeyChange sets up key material for a keychange. The key changes in +// both directions are triggered by reading and writing a msgNewKey packet +// respectively. +func (t *transport) prepareKeyChange(algs *NegotiatedAlgorithms, kexResult *kexResult) error { + ciph, err := newPacketCipher(t.reader.dir, algs.Read, kexResult) + if err != nil { + return err + } + t.reader.pendingKeyChange <- ciph + + ciph, err = newPacketCipher(t.writer.dir, algs.Write, kexResult) + if err != nil { + return err + } + t.writer.pendingKeyChange <- ciph + + return nil +} + +func (t *transport) printPacket(p []byte, write bool) { + if len(p) == 0 { + return + } + who := "server" + if t.isClient { + who = "client" + } + what := "read" + if write { + what = "write" + } + + log.Println(what, who, p[0]) +} + +// Read and decrypt next packet. +func (t *transport) readPacket() (p []byte, err error) { + for { + p, err = t.reader.readPacket(t.bufReader, t.strictMode) + if err != nil { + break + } + // in strict mode we pass through DEBUG and IGNORE packets only during the initial KEX + if len(p) == 0 || (t.strictMode && !t.initialKEXDone) || (p[0] != msgIgnore && p[0] != msgDebug) { + break + } + } + if debugTransport { + t.printPacket(p, false) + } + + return p, err +} + +func (s *connectionState) readPacket(r *bufio.Reader, strictMode bool) ([]byte, error) { + packet, err := s.packetCipher.readCipherPacket(s.seqNum, r) + s.seqNum++ + if err == nil && len(packet) == 0 { + err = errors.New("ssh: zero length packet") + } + + if len(packet) > 0 { + switch packet[0] { + case msgNewKeys: + select { + case cipher := <-s.pendingKeyChange: + s.packetCipher = cipher + if strictMode { + s.seqNum = 0 + } + default: + return nil, errors.New("ssh: got bogus newkeys message") + } + + case msgDisconnect: + // Transform a disconnect message into an + // error. Since this is lowest level at which + // we interpret message types, doing it here + // ensures that we don't have to handle it + // elsewhere. + var msg disconnectMsg + if err := Unmarshal(packet, &msg); err != nil { + return nil, err + } + return nil, &msg + } + } + + // The packet may point to an internal buffer, so copy the + // packet out here. + fresh := make([]byte, len(packet)) + copy(fresh, packet) + + return fresh, err +} + +func (t *transport) writePacket(packet []byte) error { + if debugTransport { + t.printPacket(packet, true) + } + return t.writer.writePacket(t.bufWriter, t.rand, packet, t.strictMode) +} + +func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte, strictMode bool) error { + changeKeys := len(packet) > 0 && packet[0] == msgNewKeys + + err := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet) + if err != nil { + return err + } + if err = w.Flush(); err != nil { + return err + } + s.seqNum++ + if changeKeys { + select { + case cipher := <-s.pendingKeyChange: + s.packetCipher = cipher + if strictMode { + s.seqNum = 0 + } + default: + panic("ssh: no key material for msgNewKeys") + } + } + return err +} + +func newTransport(rwc io.ReadWriteCloser, rand io.Reader, isClient bool) *transport { + t := &transport{ + bufReader: bufio.NewReader(rwc), + bufWriter: bufio.NewWriter(rwc), + rand: rand, + reader: connectionState{ + packetCipher: &streamPacketCipher{cipher: noneCipher{}}, + pendingKeyChange: make(chan packetCipher, 1), + }, + writer: connectionState{ + packetCipher: &streamPacketCipher{cipher: noneCipher{}}, + pendingKeyChange: make(chan packetCipher, 1), + }, + Closer: rwc, + } + t.isClient = isClient + + if isClient { + t.reader.dir = serverKeys + t.writer.dir = clientKeys + } else { + t.reader.dir = clientKeys + t.writer.dir = serverKeys + } + + return t +} + +type direction struct { + ivTag []byte + keyTag []byte + macKeyTag []byte +} + +var ( + serverKeys = direction{[]byte{'B'}, []byte{'D'}, []byte{'F'}} + clientKeys = direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}} +) + +// setupKeys sets the cipher and MAC keys from kex.K, kex.H and sessionId, as +// described in RFC 4253, section 6.4. direction should either be serverKeys +// (to setup server->client keys) or clientKeys (for client->server keys). +func newPacketCipher(d direction, algs DirectionAlgorithms, kex *kexResult) (packetCipher, error) { + cipherMode := cipherModes[algs.Cipher] + if cipherMode == nil { + return nil, fmt.Errorf("ssh: unsupported cipher %v", algs.Cipher) + } + + iv := make([]byte, cipherMode.ivSize) + key := make([]byte, cipherMode.keySize) + + generateKeyMaterial(iv, d.ivTag, kex) + generateKeyMaterial(key, d.keyTag, kex) + + var macKey []byte + if !aeadCiphers[algs.Cipher] { + macMode := macModes[algs.MAC] + macKey = make([]byte, macMode.keySize) + generateKeyMaterial(macKey, d.macKeyTag, kex) + } + + return cipherModes[algs.Cipher].create(key, iv, macKey, algs) +} + +// generateKeyMaterial fills out with key material generated from tag, K, H +// and sessionId, as specified in RFC 4253, section 7.2. +func generateKeyMaterial(out, tag []byte, r *kexResult) { + var digestsSoFar []byte + + h := r.Hash.New() + for len(out) > 0 { + h.Reset() + h.Write(r.K) + h.Write(r.H) + + if len(digestsSoFar) == 0 { + h.Write(tag) + h.Write(r.SessionID) + } else { + h.Write(digestsSoFar) + } + + digest := h.Sum(nil) + n := copy(out, digest) + out = out[n:] + if len(out) > 0 { + digestsSoFar = append(digestsSoFar, digest...) + } + } +} + +const packageVersion = "SSH-2.0-Go" + +// Sends and receives a version line. The versionLine string should +// be US ASCII, start with "SSH-2.0-", and should not include a +// newline. exchangeVersions returns the other side's version line. +func exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) { + // Contrary to the RFC, we do not ignore lines that don't + // start with "SSH-2.0-" to make the library usable with + // nonconforming servers. + for _, c := range versionLine { + // The spec disallows non US-ASCII chars, and + // specifically forbids null chars. + if c < 32 { + return nil, errors.New("ssh: junk character in version line") + } + } + if _, err = rw.Write(append(versionLine, '\r', '\n')); err != nil { + return + } + + them, err = readVersion(rw) + return them, err +} + +// maxVersionStringBytes is the maximum number of bytes that we'll +// accept as a version string. RFC 4253 section 4.2 limits this at 255 +// chars +const maxVersionStringBytes = 255 + +// Read version string as specified by RFC 4253, section 4.2. +func readVersion(r io.Reader) ([]byte, error) { + versionString := make([]byte, 0, 64) + var ok bool + var buf [1]byte + + for length := 0; length < maxVersionStringBytes; length++ { + _, err := io.ReadFull(r, buf[:]) + if err != nil { + return nil, err + } + // The RFC says that the version should be terminated with \r\n + // but several SSH servers actually only send a \n. + if buf[0] == '\n' { + if !bytes.HasPrefix(versionString, []byte("SSH-")) { + // RFC 4253 says we need to ignore all version string lines + // except the one containing the SSH version (provided that + // all the lines do not exceed 255 bytes in total). + versionString = versionString[:0] + continue + } + ok = true + break + } + + // non ASCII chars are disallowed, but we are lenient, + // since Go doesn't use null-terminated strings. + + // The RFC allows a comment after a space, however, + // all of it (version and comments) goes into the + // session hash. + versionString = append(versionString, buf[0]) + } + + if !ok { + return nil, errors.New("ssh: overflow reading version string") + } + + // There might be a '\r' on the end which we should remove. + if len(versionString) > 0 && versionString[len(versionString)-1] == '\r' { + versionString = versionString[:len(versionString)-1] + } + return versionString, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/LICENSE b/src/vcom-0.2.5/vendor/golang.org/x/sys/LICENSE new file mode 100644 index 0000000..2a7cf70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/PATENTS b/src/vcom-0.2.5/vendor/golang.org/x/sys/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s new file mode 100644 index 0000000..269e173 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s new file mode 100644 index 0000000..e07fa75 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s @@ -0,0 +1,12 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && arm64 && gc + +#include "textflag.h" + +TEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctlbyname(SB) +GLOBL ·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s new file mode 100644 index 0000000..ec2acfe --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s @@ -0,0 +1,17 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && amd64 && gc + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctlbyname(SB) +GLOBL ·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/byteorder.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/byteorder.go new file mode 100644 index 0000000..271055b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/byteorder.go @@ -0,0 +1,66 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "runtime" +) + +// byteOrder is a subset of encoding/binary.ByteOrder. +type byteOrder interface { + Uint32([]byte) uint32 + Uint64([]byte) uint64 +} + +type littleEndian struct{} +type bigEndian struct{} + +func (littleEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func (littleEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +func (bigEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 +} + +func (bigEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 +} + +// hostByteOrder returns littleEndian on little-endian machines and +// bigEndian on big-endian machines. +func hostByteOrder() byteOrder { + switch runtime.GOARCH { + case "386", "amd64", "amd64p32", + "alpha", + "arm", "arm64", + "loong64", + "mipsle", "mips64le", "mips64p32le", + "nios2", + "ppc64le", + "riscv", "riscv64", + "sh": + return littleEndian{} + case "armbe", "arm64be", + "m68k", + "mips", "mips64", "mips64p32", + "ppc", "ppc64", + "s390", "s390x", + "shbe", + "sparc", "sparc64": + return bigEndian{} + } + panic("unknown architecture") +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu.go new file mode 100644 index 0000000..6354199 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu.go @@ -0,0 +1,338 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cpu implements processor feature detection for +// various CPU architectures. +package cpu + +import ( + "os" + "strings" +) + +// Initialized reports whether the CPU features were initialized. +// +// For some GOOS/GOARCH combinations initialization of the CPU features depends +// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm +// Initialized will report false if reading the file fails. +var Initialized bool + +// CacheLinePad is used to pad structs to avoid false sharing. +type CacheLinePad struct{ _ [cacheLineSize]byte } + +// X86 contains the supported CPU features of the +// current X86/AMD64 platform. If the current platform +// is not X86/AMD64 then all feature flags are false. +// +// X86 is padded to avoid false sharing. Further the HasAVX +// and HasAVX2 are only set if the OS supports XMM and YMM +// registers in addition to the CPUID feature bit being set. +var X86 struct { + _ CacheLinePad + HasAES bool // AES hardware implementation (AES NI) + HasADX bool // Multi-precision add-carry instruction extensions + HasAVX bool // Advanced vector extension + HasAVX2 bool // Advanced vector extension 2 + HasAVX512 bool // Advanced vector extension 512 + HasAVX512F bool // Advanced vector extension 512 Foundation Instructions + HasAVX512CD bool // Advanced vector extension 512 Conflict Detection Instructions + HasAVX512ER bool // Advanced vector extension 512 Exponential and Reciprocal Instructions + HasAVX512PF bool // Advanced vector extension 512 Prefetch Instructions + HasAVX512VL bool // Advanced vector extension 512 Vector Length Extensions + HasAVX512BW bool // Advanced vector extension 512 Byte and Word Instructions + HasAVX512DQ bool // Advanced vector extension 512 Doubleword and Quadword Instructions + HasAVX512IFMA bool // Advanced vector extension 512 Integer Fused Multiply Add + HasAVX512VBMI bool // Advanced vector extension 512 Vector Byte Manipulation Instructions + HasAVX5124VNNIW bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision + HasAVX5124FMAPS bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision + HasAVX512VPOPCNTDQ bool // Advanced vector extension 512 Double and quad word population count instructions + HasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations + HasAVX512VNNI bool // Advanced vector extension 512 Vector Neural Network Instructions + HasAVX512GFNI bool // Advanced vector extension 512 Galois field New Instructions + HasAVX512VAES bool // Advanced vector extension 512 Vector AES instructions + HasAVX512VBMI2 bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2 + HasAVX512BITALG bool // Advanced vector extension 512 Bit Algorithms + HasAVX512BF16 bool // Advanced vector extension 512 BFloat16 Instructions + HasAMXTile bool // Advanced Matrix Extension Tile instructions + HasAMXInt8 bool // Advanced Matrix Extension Int8 instructions + HasAMXBF16 bool // Advanced Matrix Extension BFloat16 instructions + HasBMI1 bool // Bit manipulation instruction set 1 + HasBMI2 bool // Bit manipulation instruction set 2 + HasCX16 bool // Compare and exchange 16 Bytes + HasERMS bool // Enhanced REP for MOVSB and STOSB + HasFMA bool // Fused-multiply-add instructions + HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. + HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM + HasPOPCNT bool // Hamming weight instruction POPCNT. + HasRDRAND bool // RDRAND instruction (on-chip random number generator) + HasRDSEED bool // RDSEED instruction (on-chip random number generator) + HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64) + HasSSE3 bool // Streaming SIMD extension 3 + HasSSSE3 bool // Supplemental streaming SIMD extension 3 + HasSSE41 bool // Streaming SIMD extension 4 and 4.1 + HasSSE42 bool // Streaming SIMD extension 4 and 4.2 + HasAVXIFMA bool // Advanced vector extension Integer Fused Multiply Add + HasAVXVNNI bool // Advanced vector extension Vector Neural Network Instructions + HasAVXVNNIInt8 bool // Advanced vector extension Vector Neural Network Int8 instructions + _ CacheLinePad +} + +// ARM64 contains the supported CPU features of the +// current ARMv8(aarch64) platform. If the current platform +// is not arm64 then all feature flags are false. +var ARM64 struct { + _ CacheLinePad + HasFP bool // Floating-point instruction set (always available) + HasASIMD bool // Advanced SIMD (always available) + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + HasATOMICS bool // Atomic memory operation instruction set + HasFPHP bool // Half precision floating-point instruction set + HasASIMDHP bool // Advanced SIMD half precision instruction set + HasCPUID bool // CPUID identification scheme registers + HasASIMDRDM bool // Rounding double multiply add/subtract instruction set + HasJSCVT bool // Javascript conversion from floating-point to integer + HasFCMA bool // Floating-point multiplication and addition of complex numbers + HasLRCPC bool // Release Consistent processor consistent support + HasDCPOP bool // Persistent memory support + HasSHA3 bool // SHA3 hardware implementation + HasSM3 bool // SM3 hardware implementation + HasSM4 bool // SM4 hardware implementation + HasASIMDDP bool // Advanced SIMD double precision instruction set + HasSHA512 bool // SHA512 hardware implementation + HasSVE bool // Scalable Vector Extensions + HasSVE2 bool // Scalable Vector Extensions 2 + HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 + HasDIT bool // Data Independent Timing support + HasI8MM bool // Advanced SIMD Int8 matrix multiplication instructions + _ CacheLinePad +} + +// ARM contains the supported CPU features of the current ARM (32-bit) platform. +// All feature flags are false if: +// 1. the current platform is not arm, or +// 2. the current operating system is not Linux. +var ARM struct { + _ CacheLinePad + HasSWP bool // SWP instruction support + HasHALF bool // Half-word load and store support + HasTHUMB bool // ARM Thumb instruction set + Has26BIT bool // Address space limited to 26-bits + HasFASTMUL bool // 32-bit operand, 64-bit result multiplication support + HasFPA bool // Floating point arithmetic support + HasVFP bool // Vector floating point support + HasEDSP bool // DSP Extensions support + HasJAVA bool // Java instruction set + HasIWMMXT bool // Intel Wireless MMX technology support + HasCRUNCH bool // MaverickCrunch context switching and handling + HasTHUMBEE bool // Thumb EE instruction set + HasNEON bool // NEON instruction set + HasVFPv3 bool // Vector floating point version 3 support + HasVFPv3D16 bool // Vector floating point version 3 D8-D15 + HasTLS bool // Thread local storage support + HasVFPv4 bool // Vector floating point version 4 support + HasIDIVA bool // Integer divide instruction support in ARM mode + HasIDIVT bool // Integer divide instruction support in Thumb mode + HasVFPD32 bool // Vector floating point version 3 D15-D31 + HasLPAE bool // Large Physical Address Extensions + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + _ CacheLinePad +} + +// The booleans in Loong64 contain the correspondingly named cpu feature bit. +// The struct is padded to avoid false sharing. +var Loong64 struct { + _ CacheLinePad + HasLSX bool // support 128-bit vector extension + HasLASX bool // support 256-bit vector extension + HasCRC32 bool // support CRC instruction + HasLAM_BH bool // support AM{SWAP/ADD}[_DB].{B/H} instruction + HasLAMCAS bool // support AMCAS[_DB].{B/H/W/D} instruction + _ CacheLinePad +} + +// MIPS64X contains the supported CPU features of the current mips64/mips64le +// platforms. If the current platform is not mips64/mips64le or the current +// operating system is not Linux then all feature flags are false. +var MIPS64X struct { + _ CacheLinePad + HasMSA bool // MIPS SIMD architecture + _ CacheLinePad +} + +// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. +// If the current platform is not ppc64/ppc64le then all feature flags are false. +// +// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, +// since there are no optional categories. There are some exceptions that also +// require kernel support to work (DARN, SCV), so there are feature bits for +// those as well. The struct is padded to avoid false sharing. +var PPC64 struct { + _ CacheLinePad + HasDARN bool // Hardware random number generator (requires kernel enablement) + HasSCV bool // Syscall vectored (requires kernel enablement) + IsPOWER8 bool // ISA v2.07 (POWER8) + IsPOWER9 bool // ISA v3.00 (POWER9), implies IsPOWER8 + _ CacheLinePad +} + +// S390X contains the supported CPU features of the current IBM Z +// (s390x) platform. If the current platform is not IBM Z then all +// feature flags are false. +// +// S390X is padded to avoid false sharing. Further HasVX is only set +// if the OS supports vector registers in addition to the STFLE +// feature bit being set. +var S390X struct { + _ CacheLinePad + HasZARCH bool // z/Architecture mode is active [mandatory] + HasSTFLE bool // store facility list extended + HasLDISP bool // long (20-bit) displacements + HasEIMM bool // 32-bit immediates + HasDFP bool // decimal floating point + HasETF3EH bool // ETF-3 enhanced + HasMSA bool // message security assist (CPACF) + HasAES bool // KM-AES{128,192,256} functions + HasAESCBC bool // KMC-AES{128,192,256} functions + HasAESCTR bool // KMCTR-AES{128,192,256} functions + HasAESGCM bool // KMA-GCM-AES{128,192,256} functions + HasGHASH bool // KIMD-GHASH function + HasSHA1 bool // K{I,L}MD-SHA-1 functions + HasSHA256 bool // K{I,L}MD-SHA-256 functions + HasSHA512 bool // K{I,L}MD-SHA-512 functions + HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions + HasVX bool // vector facility + HasVXE bool // vector-enhancements facility 1 + _ CacheLinePad +} + +// RISCV64 contains the supported CPU features and performance characteristics for riscv64 +// platforms. The booleans in RISCV64, with the exception of HasFastMisaligned, indicate +// the presence of RISC-V extensions. +// +// It is safe to assume that all the RV64G extensions are supported and so they are omitted from +// this structure. As riscv64 Go programs require at least RV64G, the code that populates +// this structure cannot run successfully if some of the RV64G extensions are missing. +// The struct is padded to avoid false sharing. +var RISCV64 struct { + _ CacheLinePad + HasFastMisaligned bool // Fast misaligned accesses + HasC bool // Compressed instruction-set extension + HasV bool // Vector extension compatible with RVV 1.0 + HasZba bool // Address generation instructions extension + HasZbb bool // Basic bit-manipulation extension + HasZbs bool // Single-bit instructions extension + HasZvbb bool // Vector Basic Bit-manipulation + HasZvbc bool // Vector Carryless Multiplication + HasZvkb bool // Vector Cryptography Bit-manipulation + HasZvkt bool // Vector Data-Independent Execution Latency + HasZvkg bool // Vector GCM/GMAC + HasZvkn bool // NIST Algorithm Suite (AES/SHA256/SHA512) + HasZvknc bool // NIST Algorithm Suite with carryless multiply + HasZvkng bool // NIST Algorithm Suite with GCM + HasZvks bool // ShangMi Algorithm Suite + HasZvksc bool // ShangMi Algorithm Suite with carryless multiplication + HasZvksg bool // ShangMi Algorithm Suite with GCM + _ CacheLinePad +} + +func init() { + archInit() + initOptions() + processOptions() +} + +// options contains the cpu debug options that can be used in GODEBUG. +// Options are arch dependent and are added by the arch specific initOptions functions. +// Features that are mandatory for the specific GOARCH should have the Required field set +// (e.g. SSE2 on amd64). +var options []option + +// Option names should be lower case. e.g. avx instead of AVX. +type option struct { + Name string + Feature *bool + Specified bool // whether feature value was specified in GODEBUG + Enable bool // whether feature should be enabled + Required bool // whether feature is mandatory and can not be disabled +} + +func processOptions() { + env := os.Getenv("GODEBUG") +field: + for env != "" { + field := "" + i := strings.IndexByte(env, ',') + if i < 0 { + field, env = env, "" + } else { + field, env = env[:i], env[i+1:] + } + if len(field) < 4 || field[:4] != "cpu." { + continue + } + i = strings.IndexByte(field, '=') + if i < 0 { + print("GODEBUG sys/cpu: no value specified for \"", field, "\"\n") + continue + } + key, value := field[4:i], field[i+1:] // e.g. "SSE2", "on" + + var enable bool + switch value { + case "on": + enable = true + case "off": + enable = false + default: + print("GODEBUG sys/cpu: value \"", value, "\" not supported for cpu option \"", key, "\"\n") + continue field + } + + if key == "all" { + for i := range options { + options[i].Specified = true + options[i].Enable = enable || options[i].Required + } + continue field + } + + for i := range options { + if options[i].Name == key { + options[i].Specified = true + options[i].Enable = enable + continue field + } + } + + print("GODEBUG sys/cpu: unknown cpu feature \"", key, "\"\n") + } + + for _, o := range options { + if !o.Specified { + continue + } + + if o.Enable && !*o.Feature { + print("GODEBUG sys/cpu: can not enable \"", o.Name, "\", missing CPU support\n") + continue + } + + if !o.Enable && o.Required { + print("GODEBUG sys/cpu: can not disable \"", o.Name, "\", required CPU feature\n") + continue + } + + *o.Feature = o.Enable + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_aix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_aix.go new file mode 100644 index 0000000..9bf0c32 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_aix.go @@ -0,0 +1,33 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix + +package cpu + +const ( + // getsystemcfg constants + _SC_IMPL = 2 + _IMPL_POWER8 = 0x10000 + _IMPL_POWER9 = 0x20000 +) + +func archInit() { + impl := getsystemcfg(_SC_IMPL) + if impl&_IMPL_POWER8 != 0 { + PPC64.IsPOWER8 = true + } + if impl&_IMPL_POWER9 != 0 { + PPC64.IsPOWER8 = true + PPC64.IsPOWER9 = true + } + + Initialized = true +} + +func getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm.go new file mode 100644 index 0000000..301b752 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm.go @@ -0,0 +1,73 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 32 + +// HWCAP/HWCAP2 bits. +// These are specific to Linux. +const ( + hwcap_SWP = 1 << 0 + hwcap_HALF = 1 << 1 + hwcap_THUMB = 1 << 2 + hwcap_26BIT = 1 << 3 + hwcap_FAST_MULT = 1 << 4 + hwcap_FPA = 1 << 5 + hwcap_VFP = 1 << 6 + hwcap_EDSP = 1 << 7 + hwcap_JAVA = 1 << 8 + hwcap_IWMMXT = 1 << 9 + hwcap_CRUNCH = 1 << 10 + hwcap_THUMBEE = 1 << 11 + hwcap_NEON = 1 << 12 + hwcap_VFPv3 = 1 << 13 + hwcap_VFPv3D16 = 1 << 14 + hwcap_TLS = 1 << 15 + hwcap_VFPv4 = 1 << 16 + hwcap_IDIVA = 1 << 17 + hwcap_IDIVT = 1 << 18 + hwcap_VFPD32 = 1 << 19 + hwcap_LPAE = 1 << 20 + hwcap_EVTSTRM = 1 << 21 + + hwcap2_AES = 1 << 0 + hwcap2_PMULL = 1 << 1 + hwcap2_SHA1 = 1 << 2 + hwcap2_SHA2 = 1 << 3 + hwcap2_CRC32 = 1 << 4 +) + +func initOptions() { + options = []option{ + {Name: "pmull", Feature: &ARM.HasPMULL}, + {Name: "sha1", Feature: &ARM.HasSHA1}, + {Name: "sha2", Feature: &ARM.HasSHA2}, + {Name: "swp", Feature: &ARM.HasSWP}, + {Name: "thumb", Feature: &ARM.HasTHUMB}, + {Name: "thumbee", Feature: &ARM.HasTHUMBEE}, + {Name: "tls", Feature: &ARM.HasTLS}, + {Name: "vfp", Feature: &ARM.HasVFP}, + {Name: "vfpd32", Feature: &ARM.HasVFPD32}, + {Name: "vfpv3", Feature: &ARM.HasVFPv3}, + {Name: "vfpv3d16", Feature: &ARM.HasVFPv3D16}, + {Name: "vfpv4", Feature: &ARM.HasVFPv4}, + {Name: "half", Feature: &ARM.HasHALF}, + {Name: "26bit", Feature: &ARM.Has26BIT}, + {Name: "fastmul", Feature: &ARM.HasFASTMUL}, + {Name: "fpa", Feature: &ARM.HasFPA}, + {Name: "edsp", Feature: &ARM.HasEDSP}, + {Name: "java", Feature: &ARM.HasJAVA}, + {Name: "iwmmxt", Feature: &ARM.HasIWMMXT}, + {Name: "crunch", Feature: &ARM.HasCRUNCH}, + {Name: "neon", Feature: &ARM.HasNEON}, + {Name: "idivt", Feature: &ARM.HasIDIVT}, + {Name: "idiva", Feature: &ARM.HasIDIVA}, + {Name: "lpae", Feature: &ARM.HasLPAE}, + {Name: "evtstrm", Feature: &ARM.HasEVTSTRM}, + {Name: "aes", Feature: &ARM.HasAES}, + {Name: "crc32", Feature: &ARM.HasCRC32}, + } + +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.go new file mode 100644 index 0000000..5fc09e2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.go @@ -0,0 +1,191 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import "runtime" + +// cacheLineSize is used to prevent false sharing of cache lines. +// We choose 128 because Apple Silicon, a.k.a. M1, has 128-byte cache line size. +// It doesn't cost much and is much more future-proof. +const cacheLineSize = 128 + +func initOptions() { + options = []option{ + {Name: "fp", Feature: &ARM64.HasFP}, + {Name: "asimd", Feature: &ARM64.HasASIMD}, + {Name: "evstrm", Feature: &ARM64.HasEVTSTRM}, + {Name: "aes", Feature: &ARM64.HasAES}, + {Name: "fphp", Feature: &ARM64.HasFPHP}, + {Name: "jscvt", Feature: &ARM64.HasJSCVT}, + {Name: "lrcpc", Feature: &ARM64.HasLRCPC}, + {Name: "pmull", Feature: &ARM64.HasPMULL}, + {Name: "sha1", Feature: &ARM64.HasSHA1}, + {Name: "sha2", Feature: &ARM64.HasSHA2}, + {Name: "sha3", Feature: &ARM64.HasSHA3}, + {Name: "sha512", Feature: &ARM64.HasSHA512}, + {Name: "sm3", Feature: &ARM64.HasSM3}, + {Name: "sm4", Feature: &ARM64.HasSM4}, + {Name: "sve", Feature: &ARM64.HasSVE}, + {Name: "sve2", Feature: &ARM64.HasSVE2}, + {Name: "crc32", Feature: &ARM64.HasCRC32}, + {Name: "atomics", Feature: &ARM64.HasATOMICS}, + {Name: "asimdhp", Feature: &ARM64.HasASIMDHP}, + {Name: "cpuid", Feature: &ARM64.HasCPUID}, + {Name: "asimrdm", Feature: &ARM64.HasASIMDRDM}, + {Name: "fcma", Feature: &ARM64.HasFCMA}, + {Name: "dcpop", Feature: &ARM64.HasDCPOP}, + {Name: "asimddp", Feature: &ARM64.HasASIMDDP}, + {Name: "asimdfhm", Feature: &ARM64.HasASIMDFHM}, + {Name: "dit", Feature: &ARM64.HasDIT}, + {Name: "i8mm", Feature: &ARM64.HasI8MM}, + } +} + +func archInit() { + if runtime.GOOS == "freebsd" { + readARM64Registers() + } else { + // Most platforms don't seem to allow directly reading these registers. + doinit() + } +} + +// setMinimalFeatures fakes the minimal ARM64 features expected by +// TestARM64minimalFeatures. +func setMinimalFeatures() { + ARM64.HasASIMD = true + ARM64.HasFP = true +} + +func readARM64Registers() { + Initialized = true + + parseARM64SystemRegisters(getisar0(), getisar1(), getpfr0()) +} + +func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { + // ID_AA64ISAR0_EL1 + switch extractBits(isar0, 4, 7) { + case 1: + ARM64.HasAES = true + case 2: + ARM64.HasAES = true + ARM64.HasPMULL = true + } + + switch extractBits(isar0, 8, 11) { + case 1: + ARM64.HasSHA1 = true + } + + switch extractBits(isar0, 12, 15) { + case 1: + ARM64.HasSHA2 = true + case 2: + ARM64.HasSHA2 = true + ARM64.HasSHA512 = true + } + + switch extractBits(isar0, 16, 19) { + case 1: + ARM64.HasCRC32 = true + } + + switch extractBits(isar0, 20, 23) { + case 2: + ARM64.HasATOMICS = true + } + + switch extractBits(isar0, 28, 31) { + case 1: + ARM64.HasASIMDRDM = true + } + + switch extractBits(isar0, 32, 35) { + case 1: + ARM64.HasSHA3 = true + } + + switch extractBits(isar0, 36, 39) { + case 1: + ARM64.HasSM3 = true + } + + switch extractBits(isar0, 40, 43) { + case 1: + ARM64.HasSM4 = true + } + + switch extractBits(isar0, 44, 47) { + case 1: + ARM64.HasASIMDDP = true + } + + // ID_AA64ISAR1_EL1 + switch extractBits(isar1, 0, 3) { + case 1: + ARM64.HasDCPOP = true + } + + switch extractBits(isar1, 12, 15) { + case 1: + ARM64.HasJSCVT = true + } + + switch extractBits(isar1, 16, 19) { + case 1: + ARM64.HasFCMA = true + } + + switch extractBits(isar1, 20, 23) { + case 1: + ARM64.HasLRCPC = true + } + + switch extractBits(isar1, 52, 55) { + case 1: + ARM64.HasI8MM = true + } + + // ID_AA64PFR0_EL1 + switch extractBits(pfr0, 16, 19) { + case 0: + ARM64.HasFP = true + case 1: + ARM64.HasFP = true + ARM64.HasFPHP = true + } + + switch extractBits(pfr0, 20, 23) { + case 0: + ARM64.HasASIMD = true + case 1: + ARM64.HasASIMD = true + ARM64.HasASIMDHP = true + } + + switch extractBits(pfr0, 32, 35) { + case 1: + ARM64.HasSVE = true + + parseARM64SVERegister(getzfr0()) + } + + switch extractBits(pfr0, 48, 51) { + case 1: + ARM64.HasDIT = true + } +} + +func parseARM64SVERegister(zfr0 uint64) { + switch extractBits(zfr0, 0, 3) { + case 1: + ARM64.HasSVE2 = true + } +} + +func extractBits(data uint64, start, end uint) uint { + return (uint)(data>>start) & ((1 << (end - start + 1)) - 1) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.s new file mode 100644 index 0000000..3b0450a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_arm64.s @@ -0,0 +1,35 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// func getisar0() uint64 +TEXT ·getisar0(SB),NOSPLIT,$0-8 + // get Instruction Set Attributes 0 into x0 + MRS ID_AA64ISAR0_EL1, R0 + MOVD R0, ret+0(FP) + RET + +// func getisar1() uint64 +TEXT ·getisar1(SB),NOSPLIT,$0-8 + // get Instruction Set Attributes 1 into x0 + MRS ID_AA64ISAR1_EL1, R0 + MOVD R0, ret+0(FP) + RET + +// func getpfr0() uint64 +TEXT ·getpfr0(SB),NOSPLIT,$0-8 + // get Processor Feature Register 0 into x0 + MRS ID_AA64PFR0_EL1, R0 + MOVD R0, ret+0(FP) + RET + +// func getzfr0() uint64 +TEXT ·getzfr0(SB),NOSPLIT,$0-8 + // get SVE Feature Register 0 into x0 + MRS ID_AA64ZFR0_EL1, R0 + MOVD R0, ret+0(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go new file mode 100644 index 0000000..0b47074 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go @@ -0,0 +1,67 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && arm64 && gc + +package cpu + +func doinit() { + setMinimalFeatures() + + // The feature flags are explained in [Instruction Set Detection]. + // There are some differences between MacOS versions: + // + // MacOS 11 and 12 do not have "hw.optional" sysctl values for some of the features. + // + // MacOS 13 changed some of the naming conventions to align with ARM Architecture Reference Manual. + // For example "hw.optional.armv8_2_sha512" became "hw.optional.arm.FEAT_SHA512". + // It currently checks both to stay compatible with MacOS 11 and 12. + // The old names also work with MacOS 13, however it's not clear whether + // they will continue working with future OS releases. + // + // Once MacOS 12 is no longer supported the old names can be removed. + // + // [Instruction Set Detection]: https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics + + // Encryption, hashing and checksum capabilities + + // For the following flags there are no MacOS 11 sysctl flags. + ARM64.HasAES = true || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_AES\x00")) + ARM64.HasPMULL = true || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_PMULL\x00")) + ARM64.HasSHA1 = true || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SHA1\x00")) + ARM64.HasSHA2 = true || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SHA256\x00")) + + ARM64.HasSHA3 = darwinSysctlEnabled([]byte("hw.optional.armv8_2_sha3\x00")) || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SHA3\x00")) + ARM64.HasSHA512 = darwinSysctlEnabled([]byte("hw.optional.armv8_2_sha512\x00")) || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SHA512\x00")) + + ARM64.HasCRC32 = darwinSysctlEnabled([]byte("hw.optional.armv8_crc32\x00")) + + // Atomic and memory ordering + ARM64.HasATOMICS = darwinSysctlEnabled([]byte("hw.optional.armv8_1_atomics\x00")) || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_LSE\x00")) + ARM64.HasLRCPC = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_LRCPC\x00")) + + // SIMD and floating point capabilities + ARM64.HasFPHP = darwinSysctlEnabled([]byte("hw.optional.neon_fp16\x00")) || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_FP16\x00")) + ARM64.HasASIMDHP = darwinSysctlEnabled([]byte("hw.optional.neon_hpfp\x00")) || darwinSysctlEnabled([]byte("hw.optional.AdvSIMD_HPFPCvt\x00")) + ARM64.HasASIMDRDM = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_RDM\x00")) + ARM64.HasASIMDDP = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_DotProd\x00")) + ARM64.HasASIMDFHM = darwinSysctlEnabled([]byte("hw.optional.armv8_2_fhm\x00")) || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_FHM\x00")) + ARM64.HasI8MM = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_I8MM\x00")) + + ARM64.HasJSCVT = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_JSCVT\x00")) + ARM64.HasFCMA = darwinSysctlEnabled([]byte("hw.optional.armv8_3_compnum\x00")) || darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_FCMA\x00")) + + // Miscellaneous + ARM64.HasDCPOP = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_DPB\x00")) + ARM64.HasEVTSTRM = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_ECV\x00")) + ARM64.HasDIT = darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_DIT\x00")) + + // Not supported, but added for completeness + ARM64.HasCPUID = false + + ARM64.HasSM3 = false // darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SM3\x00")) + ARM64.HasSM4 = false // darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SM4\x00")) + ARM64.HasSVE = false // darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SVE\x00")) + ARM64.HasSVE2 = false // darwinSysctlEnabled([]byte("hw.optional.arm.FEAT_SVE2\x00")) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go new file mode 100644 index 0000000..37ecc66 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go @@ -0,0 +1,31 @@ +// Copyright 2026 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && arm64 && !gc + +package cpu + +import "runtime" + +func doinit() { + setMinimalFeatures() + + ARM64.HasASIMD = true + ARM64.HasFP = true + + // Go already assumes these to be available because they were on the M1 + // and these are supported on all Apple arm64 chips. + ARM64.HasAES = true + ARM64.HasPMULL = true + ARM64.HasSHA1 = true + ARM64.HasSHA2 = true + + if runtime.GOOS != "ios" { + // Apple A7 processors do not support these, however + // M-series SoCs are at least armv8.4-a + ARM64.HasCRC32 = true // armv8.1 + ARM64.HasATOMICS = true // armv8.2 + ARM64.HasJSCVT = true // armv8.3, if HasFP + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go new file mode 100644 index 0000000..b838cb9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go @@ -0,0 +1,61 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && amd64 && gc + +package cpu + +// darwinSupportsAVX512 checks Darwin kernel for AVX512 support via sysctl +// call (see issue 43089). It also restricts AVX512 support for Darwin to +// kernel version 21.3.0 (MacOS 12.2.0) or later (see issue 49233). +// +// Background: +// Darwin implements a special mechanism to economize on thread state when +// AVX512 specific registers are not in use. This scheme minimizes state when +// preempting threads that haven't yet used any AVX512 instructions, but adds +// special requirements to check for AVX512 hardware support at runtime (e.g. +// via sysctl call or commpage inspection). See issue 43089 and link below for +// full background: +// https://github.com/apple-oss-distributions/xnu/blob/xnu-11215.1.10/osfmk/i386/fpu.c#L214-L240 +// +// Additionally, all versions of the Darwin kernel from 19.6.0 through 21.2.0 +// (corresponding to MacOS 10.15.6 - 12.1) have a bug that can cause corruption +// of the AVX512 mask registers (K0-K7) upon signal return. For this reason +// AVX512 is considered unsafe to use on Darwin for kernel versions prior to +// 21.3.0, where a fix has been confirmed. See issue 49233 for full background. +func darwinSupportsAVX512() bool { + return darwinSysctlEnabled([]byte("hw.optional.avx512f\x00")) && darwinKernelVersionCheck(21, 3, 0) +} + +// Ensure Darwin kernel version is at least major.minor.patch, avoiding dependencies +func darwinKernelVersionCheck(major, minor, patch int) bool { + var release [256]byte + err := darwinOSRelease(&release) + if err != nil { + return false + } + + var mmp [3]int + c := 0 +Loop: + for _, b := range release[:] { + switch { + case b >= '0' && b <= '9': + mmp[c] = 10*mmp[c] + int(b-'0') + case b == '.': + c++ + if c > 2 { + return false + } + case b == 0: + break Loop + default: + return false + } + } + if c != 2 { + return false + } + return mmp[0] > major || mmp[0] == major && (mmp[1] > minor || mmp[1] == minor && mmp[2] >= patch) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go new file mode 100644 index 0000000..6ac6e1e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +package cpu + +func getisar0() uint64 +func getisar1() uint64 +func getpfr0() uint64 +func getzfr0() uint64 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go new file mode 100644 index 0000000..c8ae6dd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return true } + +// The following feature detection functions are defined in cpu_s390x.s. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList +func kmQuery() queryResult +func kmcQuery() queryResult +func kmctrQuery() queryResult +func kmaQuery() queryResult +func kimdQuery() queryResult +func klmdQuery() queryResult diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go new file mode 100644 index 0000000..32a4451 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gc + +package cpu + +// cpuid is implemented in cpu_gc_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) + +// xgetbv with ecx = 0 is implemented in cpu_gc_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func xgetbv() (eax, edx uint32) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s new file mode 100644 index 0000000..ce208ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gc + +#include "textflag.h" + +// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) +TEXT ·cpuid(SB), NOSPLIT, $0-24 + MOVL eaxArg+0(FP), AX + MOVL ecxArg+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func xgetbv() (eax, edx uint32) +TEXT ·xgetbv(SB), NOSPLIT, $0-8 + MOVL $0, CX + XGETBV + MOVL AX, eax+0(FP) + MOVL DX, edx+4(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go new file mode 100644 index 0000000..0591308 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo + +package cpu + +func getisar0() uint64 { return 0 } +func getisar1() uint64 { return 0 } +func getpfr0() uint64 { return 0 } +func getzfr0() uint64 { return 0 } diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go new file mode 100644 index 0000000..9526d2c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return false } + +// TODO(mundaym): the following feature detection functions are currently +// stubs. See https://golang.org/cl/162887 for how to fix this. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList { panic("not implemented for gccgo") } +func kmQuery() queryResult { panic("not implemented for gccgo") } +func kmcQuery() queryResult { panic("not implemented for gccgo") } +func kmctrQuery() queryResult { panic("not implemented for gccgo") } +func kmaQuery() queryResult { panic("not implemented for gccgo") } +func kimdQuery() queryResult { panic("not implemented for gccgo") } +func klmdQuery() queryResult { panic("not implemented for gccgo") } diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c new file mode 100644 index 0000000..3f73a05 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c @@ -0,0 +1,37 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gccgo + +#include +#include +#include + +// Need to wrap __get_cpuid_count because it's declared as static. +int +gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); +} + +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#pragma GCC push_options +#pragma GCC target("xsave") +#pragma clang attribute push (__attribute__((target("xsave"))), apply_to=function) + +// xgetbv reads the contents of an XCR (Extended Control Register) +// specified in the ECX register into registers EDX:EAX. +// Currently, the only supported value for XCR is 0. +void +gccgoXgetbv(uint32_t *eax, uint32_t *edx) +{ + uint64_t v = _xgetbv(0); + *eax = v & 0xffffffff; + *edx = v >> 32; +} + +#pragma clang attribute pop +#pragma GCC pop_options diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go new file mode 100644 index 0000000..170d21d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go @@ -0,0 +1,25 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (386 || amd64 || amd64p32) && gccgo + +package cpu + +//extern gccgoGetCpuidCount +func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) + +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { + var a, b, c, d uint32 + gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) + return a, b, c, d +} + +//extern gccgoXgetbv +func gccgoXgetbv(eax, edx *uint32) + +func xgetbv() (eax, edx uint32) { + var a, d uint32 + gccgoXgetbv(&a, &d) + return a, d +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux.go new file mode 100644 index 0000000..743eb54 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !386 && !amd64 && !amd64p32 && !arm64 + +package cpu + +func archInit() { + if err := readHWCAP(); err != nil { + return + } + doinit() + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go new file mode 100644 index 0000000..2057006 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func doinit() { + ARM.HasSWP = isSet(hwCap, hwcap_SWP) + ARM.HasHALF = isSet(hwCap, hwcap_HALF) + ARM.HasTHUMB = isSet(hwCap, hwcap_THUMB) + ARM.Has26BIT = isSet(hwCap, hwcap_26BIT) + ARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT) + ARM.HasFPA = isSet(hwCap, hwcap_FPA) + ARM.HasVFP = isSet(hwCap, hwcap_VFP) + ARM.HasEDSP = isSet(hwCap, hwcap_EDSP) + ARM.HasJAVA = isSet(hwCap, hwcap_JAVA) + ARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT) + ARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH) + ARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE) + ARM.HasNEON = isSet(hwCap, hwcap_NEON) + ARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3) + ARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16) + ARM.HasTLS = isSet(hwCap, hwcap_TLS) + ARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4) + ARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA) + ARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT) + ARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32) + ARM.HasLPAE = isSet(hwCap, hwcap_LPAE) + ARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM.HasAES = isSet(hwCap2, hwcap2_AES) + ARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL) + ARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1) + ARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2) + ARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go new file mode 100644 index 0000000..f1caf0f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go @@ -0,0 +1,120 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "strings" + "syscall" +) + +// HWCAP/HWCAP2 bits. These are exposed by Linux. +const ( + hwcap_FP = 1 << 0 + hwcap_ASIMD = 1 << 1 + hwcap_EVTSTRM = 1 << 2 + hwcap_AES = 1 << 3 + hwcap_PMULL = 1 << 4 + hwcap_SHA1 = 1 << 5 + hwcap_SHA2 = 1 << 6 + hwcap_CRC32 = 1 << 7 + hwcap_ATOMICS = 1 << 8 + hwcap_FPHP = 1 << 9 + hwcap_ASIMDHP = 1 << 10 + hwcap_CPUID = 1 << 11 + hwcap_ASIMDRDM = 1 << 12 + hwcap_JSCVT = 1 << 13 + hwcap_FCMA = 1 << 14 + hwcap_LRCPC = 1 << 15 + hwcap_DCPOP = 1 << 16 + hwcap_SHA3 = 1 << 17 + hwcap_SM3 = 1 << 18 + hwcap_SM4 = 1 << 19 + hwcap_ASIMDDP = 1 << 20 + hwcap_SHA512 = 1 << 21 + hwcap_SVE = 1 << 22 + hwcap_ASIMDFHM = 1 << 23 + hwcap_DIT = 1 << 24 + + hwcap2_SVE2 = 1 << 1 + hwcap2_I8MM = 1 << 13 +) + +// linuxKernelCanEmulateCPUID reports whether we're running +// on Linux 4.11+. Ideally we'd like to ask the question about +// whether the current kernel contains +// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=77c97b4ee21290f5f083173d957843b615abbff2 +// but the version number will have to do. +func linuxKernelCanEmulateCPUID() bool { + var un syscall.Utsname + syscall.Uname(&un) + var sb strings.Builder + for _, b := range un.Release[:] { + if b == 0 { + break + } + sb.WriteByte(byte(b)) + } + major, minor, _, ok := parseRelease(sb.String()) + return ok && (major > 4 || major == 4 && minor >= 11) +} + +func doinit() { + if err := readHWCAP(); err != nil { + // We failed to read /proc/self/auxv. This can happen if the binary has + // been given extra capabilities(7) with /bin/setcap. + // + // When this happens, we have two options. If the Linux kernel is new + // enough (4.11+), we can read the arm64 registers directly which'll + // trap into the kernel and then return back to userspace. + // + // But on older kernels, such as Linux 4.4.180 as used on many Synology + // devices, calling readARM64Registers (specifically getisar0) will + // cause a SIGILL and we'll die. So for older kernels, parse /proc/cpuinfo + // instead. + // + // See golang/go#57336. + if linuxKernelCanEmulateCPUID() { + readARM64Registers() + } else { + readLinuxProcCPUInfo() + } + return + } + + // HWCAP feature bits + ARM64.HasFP = isSet(hwCap, hwcap_FP) + ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) + ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM64.HasAES = isSet(hwCap, hwcap_AES) + ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) + ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) + ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) + ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) + ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) + ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) + ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) + ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) + ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) + ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) + ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) + ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) + ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) + ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) + ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) + ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) + ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) + ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) + ARM64.HasSVE = isSet(hwCap, hwcap_SVE) + ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) + ARM64.HasDIT = isSet(hwCap, hwcap_DIT) + + // HWCAP2 feature bits + ARM64.HasSVE2 = isSet(hwCap2, hwcap2_SVE2) + ARM64.HasI8MM = isSet(hwCap2, hwcap2_I8MM) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go new file mode 100644 index 0000000..4f34114 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go @@ -0,0 +1,22 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +// HWCAP bits. These are exposed by the Linux kernel. +const ( + hwcap_LOONGARCH_LSX = 1 << 4 + hwcap_LOONGARCH_LASX = 1 << 5 +) + +func doinit() { + // TODO: Features that require kernel support like LSX and LASX can + // be detected here once needed in std library or by the compiler. + Loong64.HasLSX = hwcIsSet(hwCap, hwcap_LOONGARCH_LSX) + Loong64.HasLASX = hwcIsSet(hwCap, hwcap_LOONGARCH_LASX) +} + +func hwcIsSet(hwc uint, val uint) bool { + return hwc&val != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go new file mode 100644 index 0000000..4686c1d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go @@ -0,0 +1,22 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips64 || mips64le) + +package cpu + +// HWCAP bits. These are exposed by the Linux kernel 5.4. +const ( + // CPU features + hwcap_MIPS_MSA = 1 << 1 +) + +func doinit() { + // HWCAP feature bits + MIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go new file mode 100644 index 0000000..a428dec --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && !arm && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64 + +package cpu + +func doinit() {} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go new file mode 100644 index 0000000..197188e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64 || ppc64le) + +package cpu + +// HWCAP/HWCAP2 bits. These are exposed by the kernel. +const ( + // ISA Level + _PPC_FEATURE2_ARCH_2_07 = 0x80000000 + _PPC_FEATURE2_ARCH_3_00 = 0x00800000 + + // CPU features + _PPC_FEATURE2_DARN = 0x00200000 + _PPC_FEATURE2_SCV = 0x00100000 +) + +func doinit() { + // HWCAP2 feature bits + PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) + PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) + PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) + PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go new file mode 100644 index 0000000..ad74153 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go @@ -0,0 +1,160 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// RISC-V extension discovery code for Linux. The approach here is to first try the riscv_hwprobe +// syscall falling back to HWCAP to check for the C extension if riscv_hwprobe is not available. +// +// A note on detection of the Vector extension using HWCAP. +// +// Support for the Vector extension version 1.0 was added to the Linux kernel in release 6.5. +// Support for the riscv_hwprobe syscall was added in 6.4. It follows that if the riscv_hwprobe +// syscall is not available then neither is the Vector extension (which needs kernel support). +// The riscv_hwprobe syscall should then be all we need to detect the Vector extension. +// However, some RISC-V board manufacturers ship boards with an older kernel on top of which +// they have back-ported various versions of the Vector extension patches but not the riscv_hwprobe +// patches. These kernels advertise support for the Vector extension using HWCAP. Falling +// back to HWCAP to detect the Vector extension, if riscv_hwprobe is not available, or simply not +// bothering with riscv_hwprobe at all and just using HWCAP may then seem like an attractive option. +// +// Unfortunately, simply checking the 'V' bit in AT_HWCAP will not work as this bit is used by +// RISC-V board and cloud instance providers to mean different things. The Lichee Pi 4A board +// and the Scaleway RV1 cloud instances use the 'V' bit to advertise their support for the unratified +// 0.7.1 version of the Vector Specification. The Banana Pi BPI-F3 and the CanMV-K230 board use +// it to advertise support for 1.0 of the Vector extension. Versions 0.7.1 and 1.0 of the Vector +// extension are binary incompatible. HWCAP can then not be used in isolation to populate the +// HasV field as this field indicates that the underlying CPU is compatible with RVV 1.0. +// +// There is a way at runtime to distinguish between versions 0.7.1 and 1.0 of the Vector +// specification by issuing a RVV 1.0 vsetvli instruction and checking the vill bit of the vtype +// register. This check would allow us to safely detect version 1.0 of the Vector extension +// with HWCAP, if riscv_hwprobe were not available. However, the check cannot +// be added until the assembler supports the Vector instructions. +// +// Note the riscv_hwprobe syscall does not suffer from these ambiguities by design as all of the +// extensions it advertises support for are explicitly versioned. It's also worth noting that +// the riscv_hwprobe syscall is the only way to detect multi-letter RISC-V extensions, e.g., Zba. +// These cannot be detected using HWCAP and so riscv_hwprobe must be used to detect the majority +// of RISC-V extensions. +// +// Please see https://docs.kernel.org/arch/riscv/hwprobe.html for more information. + +// golang.org/x/sys/cpu is not allowed to depend on golang.org/x/sys/unix so we must +// reproduce the constants, types and functions needed to make the riscv_hwprobe syscall +// here. + +const ( + // Copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go. + riscv_HWPROBE_KEY_IMA_EXT_0 = 0x4 + riscv_HWPROBE_IMA_C = 0x2 + riscv_HWPROBE_IMA_V = 0x4 + riscv_HWPROBE_EXT_ZBA = 0x8 + riscv_HWPROBE_EXT_ZBB = 0x10 + riscv_HWPROBE_EXT_ZBS = 0x20 + riscv_HWPROBE_EXT_ZVBB = 0x20000 + riscv_HWPROBE_EXT_ZVBC = 0x40000 + riscv_HWPROBE_EXT_ZVKB = 0x80000 + riscv_HWPROBE_EXT_ZVKG = 0x100000 + riscv_HWPROBE_EXT_ZVKNED = 0x200000 + riscv_HWPROBE_EXT_ZVKNHB = 0x800000 + riscv_HWPROBE_EXT_ZVKSED = 0x1000000 + riscv_HWPROBE_EXT_ZVKSH = 0x2000000 + riscv_HWPROBE_EXT_ZVKT = 0x4000000 + riscv_HWPROBE_KEY_CPUPERF_0 = 0x5 + riscv_HWPROBE_MISALIGNED_FAST = 0x3 + riscv_HWPROBE_MISALIGNED_MASK = 0x7 +) + +const ( + // sys_RISCV_HWPROBE is copied from golang.org/x/sys/unix/zsysnum_linux_riscv64.go. + sys_RISCV_HWPROBE = 258 +) + +// riscvHWProbePairs is copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go. +type riscvHWProbePairs struct { + key int64 + value uint64 +} + +const ( + // CPU features + hwcap_RISCV_ISA_C = 1 << ('C' - 'A') +) + +func doinit() { + // A slice of key/value pair structures is passed to the RISCVHWProbe syscall. The key + // field should be initialised with one of the key constants defined above, e.g., + // RISCV_HWPROBE_KEY_IMA_EXT_0. The syscall will set the value field to the appropriate value. + // If the kernel does not recognise a key it will set the key field to -1 and the value field to 0. + + pairs := []riscvHWProbePairs{ + {riscv_HWPROBE_KEY_IMA_EXT_0, 0}, + {riscv_HWPROBE_KEY_CPUPERF_0, 0}, + } + + // This call only indicates that extensions are supported if they are implemented on all cores. + if riscvHWProbe(pairs, 0) { + if pairs[0].key != -1 { + v := uint(pairs[0].value) + RISCV64.HasC = isSet(v, riscv_HWPROBE_IMA_C) + RISCV64.HasV = isSet(v, riscv_HWPROBE_IMA_V) + RISCV64.HasZba = isSet(v, riscv_HWPROBE_EXT_ZBA) + RISCV64.HasZbb = isSet(v, riscv_HWPROBE_EXT_ZBB) + RISCV64.HasZbs = isSet(v, riscv_HWPROBE_EXT_ZBS) + RISCV64.HasZvbb = isSet(v, riscv_HWPROBE_EXT_ZVBB) + RISCV64.HasZvbc = isSet(v, riscv_HWPROBE_EXT_ZVBC) + RISCV64.HasZvkb = isSet(v, riscv_HWPROBE_EXT_ZVKB) + RISCV64.HasZvkg = isSet(v, riscv_HWPROBE_EXT_ZVKG) + RISCV64.HasZvkt = isSet(v, riscv_HWPROBE_EXT_ZVKT) + // Cryptography shorthand extensions + RISCV64.HasZvkn = isSet(v, riscv_HWPROBE_EXT_ZVKNED) && + isSet(v, riscv_HWPROBE_EXT_ZVKNHB) && RISCV64.HasZvkb && RISCV64.HasZvkt + RISCV64.HasZvknc = RISCV64.HasZvkn && RISCV64.HasZvbc + RISCV64.HasZvkng = RISCV64.HasZvkn && RISCV64.HasZvkg + RISCV64.HasZvks = isSet(v, riscv_HWPROBE_EXT_ZVKSED) && + isSet(v, riscv_HWPROBE_EXT_ZVKSH) && RISCV64.HasZvkb && RISCV64.HasZvkt + RISCV64.HasZvksc = RISCV64.HasZvks && RISCV64.HasZvbc + RISCV64.HasZvksg = RISCV64.HasZvks && RISCV64.HasZvkg + } + if pairs[1].key != -1 { + v := pairs[1].value & riscv_HWPROBE_MISALIGNED_MASK + RISCV64.HasFastMisaligned = v == riscv_HWPROBE_MISALIGNED_FAST + } + } + + // Let's double check with HWCAP if the C extension does not appear to be supported. + // This may happen if we're running on a kernel older than 6.4. + + if !RISCV64.HasC { + RISCV64.HasC = isSet(hwCap, hwcap_RISCV_ISA_C) + } +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} + +// riscvHWProbe is a simplified version of the generated wrapper function found in +// golang.org/x/sys/unix/zsyscall_linux_riscv64.go. We simplify it by removing the +// cpuCount and cpus parameters which we do not need. We always want to pass 0 for +// these parameters here so the kernel only reports the extensions that are present +// on all cores. +func riscvHWProbe(pairs []riscvHWProbePairs, flags uint) bool { + var _zero uintptr + var p0 unsafe.Pointer + if len(pairs) > 0 { + p0 = unsafe.Pointer(&pairs[0]) + } else { + p0 = unsafe.Pointer(&_zero) + } + + _, _, e1 := syscall.Syscall6(sys_RISCV_HWPROBE, uintptr(p0), uintptr(len(pairs)), uintptr(0), uintptr(0), uintptr(flags), 0) + return e1 == 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go new file mode 100644 index 0000000..1517ac6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go @@ -0,0 +1,40 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const ( + // bit mask values from /usr/include/bits/hwcap.h + hwcap_ZARCH = 2 + hwcap_STFLE = 4 + hwcap_MSA = 8 + hwcap_LDISP = 16 + hwcap_EIMM = 32 + hwcap_DFP = 64 + hwcap_ETF3EH = 256 + hwcap_VX = 2048 + hwcap_VXE = 8192 +) + +func initS390Xbase() { + // test HWCAP bit vector + has := func(featureMask uint) bool { + return hwCap&featureMask == featureMask + } + + // mandatory + S390X.HasZARCH = has(hwcap_ZARCH) + + // optional + S390X.HasSTFLE = has(hwcap_STFLE) + S390X.HasLDISP = has(hwcap_LDISP) + S390X.HasEIMM = has(hwcap_EIMM) + S390X.HasETF3EH = has(hwcap_ETF3EH) + S390X.HasDFP = has(hwcap_DFP) + S390X.HasMSA = has(hwcap_MSA) + S390X.HasVX = has(hwcap_VX) + if S390X.HasVX { + S390X.HasVXE = has(hwcap_VXE) + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.go new file mode 100644 index 0000000..45ecb29 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.go @@ -0,0 +1,50 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 + +package cpu + +const cacheLineSize = 64 + +// Bit fields for CPUCFG registers, Related reference documents: +// https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#_cpucfg +const ( + // CPUCFG1 bits + cpucfg1_CRC32 = 1 << 25 + + // CPUCFG2 bits + cpucfg2_LAM_BH = 1 << 27 + cpucfg2_LAMCAS = 1 << 28 +) + +func initOptions() { + options = []option{ + {Name: "lsx", Feature: &Loong64.HasLSX}, + {Name: "lasx", Feature: &Loong64.HasLASX}, + {Name: "crc32", Feature: &Loong64.HasCRC32}, + {Name: "lam_bh", Feature: &Loong64.HasLAM_BH}, + {Name: "lamcas", Feature: &Loong64.HasLAMCAS}, + } + + // The CPUCFG data on Loong64 only reflects the hardware capabilities, + // not the kernel support status, so features such as LSX and LASX that + // require kernel support cannot be obtained from the CPUCFG data. + // + // These features only require hardware capability support and do not + // require kernel specific support, so they can be obtained directly + // through CPUCFG + cfg1 := get_cpucfg(1) + cfg2 := get_cpucfg(2) + + Loong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32) + Loong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAMCAS) + Loong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAM_BH) +} + +func get_cpucfg(reg uint32) uint32 + +func cfgIsSet(cfg uint32, val uint32) bool { + return cfg&val != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.s new file mode 100644 index 0000000..71cbaf1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_loong64.s @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +// func get_cpucfg(reg uint32) uint32 +TEXT ·get_cpucfg(SB), NOSPLIT|NOFRAME, $0 + MOVW reg+0(FP), R5 + // CPUCFG R5, R4 = 0x00006ca4 + WORD $0x00006ca4 + MOVW R4, ret+8(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mips64x.go new file mode 100644 index 0000000..fedb00c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mips64x.go @@ -0,0 +1,15 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build mips64 || mips64le + +package cpu + +const cacheLineSize = 32 + +func initOptions() { + options = []option{ + {Name: "msa", Feature: &MIPS64X.HasMSA}, + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mipsx.go new file mode 100644 index 0000000..ffb4ec7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_mipsx.go @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build mips || mipsle + +package cpu + +const cacheLineSize = 32 + +func initOptions() {} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go new file mode 100644 index 0000000..ebfb3fc --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go @@ -0,0 +1,173 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// Minimal copy of functionality from x/sys/unix so the cpu package can call +// sysctl without depending on x/sys/unix. + +const ( + _CTL_QUERY = -2 + + _SYSCTL_VERS_1 = 0x1000000 +) + +var _zero uintptr + +func sysctl(mib []int32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, errno := syscall.Syscall6( + syscall.SYS___SYSCTL, + uintptr(_p0), + uintptr(len(mib)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen)) + if errno != 0 { + return errno + } + return nil +} + +type sysctlNode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + __rsvd uint32 + Un [16]byte + _sysctl_size [8]byte + _sysctl_func [8]byte + _sysctl_parent [8]byte + _sysctl_desc [8]byte +} + +func sysctlNodes(mib []int32) ([]sysctlNode, error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, _CTL_QUERY) + qnode := sysctlNode{Flags: _SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err := sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes := make([]sysctlNode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err := sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) ([]int32, error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + mib := []int32{} + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, int32(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, err + } + } + + return mib, nil +} + +// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's +type aarch64SysctlCPUID struct { + midr uint64 /* Main ID Register */ + revidr uint64 /* Revision ID Register */ + mpidr uint64 /* Multiprocessor Affinity Register */ + aa64dfr0 uint64 /* A64 Debug Feature Register 0 */ + aa64dfr1 uint64 /* A64 Debug Feature Register 1 */ + aa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */ + aa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */ + aa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */ + aa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */ + aa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */ + aa64pfr0 uint64 /* A64 Processor Feature Register 0 */ + aa64pfr1 uint64 /* A64 Processor Feature Register 1 */ + aa64zfr0 uint64 /* A64 SVE Feature ID Register 0 */ + mvfr0 uint32 /* Media and VFP Feature Register 0 */ + mvfr1 uint32 /* Media and VFP Feature Register 1 */ + mvfr2 uint32 /* Media and VFP Feature Register 2 */ + pad uint32 + clidr uint64 /* Cache Level ID Register */ + ctr uint64 /* Cache Type Register */ +} + +func sysctlCPUID(name string) (*aarch64SysctlCPUID, error) { + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + out := aarch64SysctlCPUID{} + n := unsafe.Sizeof(out) + _, _, errno := syscall.Syscall6( + syscall.SYS___SYSCTL, + uintptr(unsafe.Pointer(&mib[0])), + uintptr(len(mib)), + uintptr(unsafe.Pointer(&out)), + uintptr(unsafe.Pointer(&n)), + uintptr(0), + uintptr(0)) + if errno != 0 { + return nil, errno + } + return &out, nil +} + +func doinit() { + cpuid, err := sysctlCPUID("machdep.cpu0.cpu_id") + if err != nil { + setMinimalFeatures() + return + } + parseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0) + + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go new file mode 100644 index 0000000..85b64d5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go @@ -0,0 +1,65 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// Minimal copy of functionality from x/sys/unix so the cpu package can call +// sysctl without depending on x/sys/unix. + +const ( + // From OpenBSD's sys/sysctl.h. + _CTL_MACHDEP = 7 + + // From OpenBSD's machine/cpu.h. + _CPU_ID_AA64ISAR0 = 2 + _CPU_ID_AA64ISAR1 = 3 +) + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 + +func sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + _, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if errno != 0 { + return errno + } + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +func sysctlUint64(mib []uint32) (uint64, bool) { + var out uint64 + nout := unsafe.Sizeof(out) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil { + return 0, false + } + return out, true +} + +func doinit() { + setMinimalFeatures() + + // Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl. + isar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0}) + if !ok { + return + } + isar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1}) + if !ok { + return + } + parseARM64SystemRegisters(isar0, isar1, 0) + + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s new file mode 100644 index 0000000..054ba05 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s @@ -0,0 +1,11 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm.go new file mode 100644 index 0000000..e9ecf2a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm.go @@ -0,0 +1,9 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && arm + +package cpu + +func archInit() {} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go new file mode 100644 index 0000000..53f814d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !darwin && !linux && !netbsd && !openbsd && arm64 + +package cpu + +func doinit() { + setMinimalFeatures() +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go new file mode 100644 index 0000000..5f8f241 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && (mips64 || mips64le) + +package cpu + +func archInit() { + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go new file mode 100644 index 0000000..89608fb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !aix && !linux && (ppc64 || ppc64le) + +package cpu + +func archInit() { + PPC64.IsPOWER8 = true + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go new file mode 100644 index 0000000..5ab8780 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go @@ -0,0 +1,11 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && riscv64 + +package cpu + +func archInit() { + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_x86.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_x86.go new file mode 100644 index 0000000..a0fd7e2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_other_x86.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64p32 || (amd64 && (!darwin || !gc)) + +package cpu + +func darwinSupportsAVX512() bool { + panic("only implemented for gc && amd64 && darwin") +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go new file mode 100644 index 0000000..c14f12b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go @@ -0,0 +1,16 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ppc64 || ppc64le + +package cpu + +const cacheLineSize = 128 + +func initOptions() { + options = []option{ + {Name: "darn", Feature: &PPC64.HasDARN}, + {Name: "scv", Feature: &PPC64.HasSCV}, + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_riscv64.go new file mode 100644 index 0000000..0f617ae --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_riscv64.go @@ -0,0 +1,32 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 + +package cpu + +const cacheLineSize = 64 + +func initOptions() { + options = []option{ + {Name: "fastmisaligned", Feature: &RISCV64.HasFastMisaligned}, + {Name: "c", Feature: &RISCV64.HasC}, + {Name: "v", Feature: &RISCV64.HasV}, + {Name: "zba", Feature: &RISCV64.HasZba}, + {Name: "zbb", Feature: &RISCV64.HasZbb}, + {Name: "zbs", Feature: &RISCV64.HasZbs}, + // RISC-V Cryptography Extensions + {Name: "zvbb", Feature: &RISCV64.HasZvbb}, + {Name: "zvbc", Feature: &RISCV64.HasZvbc}, + {Name: "zvkb", Feature: &RISCV64.HasZvkb}, + {Name: "zvkg", Feature: &RISCV64.HasZvkg}, + {Name: "zvkt", Feature: &RISCV64.HasZvkt}, + {Name: "zvkn", Feature: &RISCV64.HasZvkn}, + {Name: "zvknc", Feature: &RISCV64.HasZvknc}, + {Name: "zvkng", Feature: &RISCV64.HasZvkng}, + {Name: "zvks", Feature: &RISCV64.HasZvks}, + {Name: "zvksc", Feature: &RISCV64.HasZvksc}, + {Name: "zvksg", Feature: &RISCV64.HasZvksg}, + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.go new file mode 100644 index 0000000..5881b88 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.go @@ -0,0 +1,172 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 256 + +func initOptions() { + options = []option{ + {Name: "zarch", Feature: &S390X.HasZARCH, Required: true}, + {Name: "stfle", Feature: &S390X.HasSTFLE, Required: true}, + {Name: "ldisp", Feature: &S390X.HasLDISP, Required: true}, + {Name: "eimm", Feature: &S390X.HasEIMM, Required: true}, + {Name: "dfp", Feature: &S390X.HasDFP}, + {Name: "etf3eh", Feature: &S390X.HasETF3EH}, + {Name: "msa", Feature: &S390X.HasMSA}, + {Name: "aes", Feature: &S390X.HasAES}, + {Name: "aescbc", Feature: &S390X.HasAESCBC}, + {Name: "aesctr", Feature: &S390X.HasAESCTR}, + {Name: "aesgcm", Feature: &S390X.HasAESGCM}, + {Name: "ghash", Feature: &S390X.HasGHASH}, + {Name: "sha1", Feature: &S390X.HasSHA1}, + {Name: "sha256", Feature: &S390X.HasSHA256}, + {Name: "sha3", Feature: &S390X.HasSHA3}, + {Name: "sha512", Feature: &S390X.HasSHA512}, + {Name: "vx", Feature: &S390X.HasVX}, + {Name: "vxe", Feature: &S390X.HasVXE}, + } +} + +// bitIsSet reports whether the bit at index is set. The bit index +// is in big endian order, so bit index 0 is the leftmost bit. +func bitIsSet(bits []uint64, index uint) bool { + return bits[index/64]&((1<<63)>>(index%64)) != 0 +} + +// facility is a bit index for the named facility. +type facility uint8 + +const ( + // mandatory facilities + zarch facility = 1 // z architecture mode is active + stflef facility = 7 // store-facility-list-extended + ldisp facility = 18 // long-displacement + eimm facility = 21 // extended-immediate + + // miscellaneous facilities + dfp facility = 42 // decimal-floating-point + etf3eh facility = 30 // extended-translation 3 enhancement + + // cryptography facilities + msa facility = 17 // message-security-assist + msa3 facility = 76 // message-security-assist extension 3 + msa4 facility = 77 // message-security-assist extension 4 + msa5 facility = 57 // message-security-assist extension 5 + msa8 facility = 146 // message-security-assist extension 8 + msa9 facility = 155 // message-security-assist extension 9 + + // vector facilities + vx facility = 129 // vector facility + vxe facility = 135 // vector-enhancements 1 + vxe2 facility = 148 // vector-enhancements 2 +) + +// facilityList contains the result of an STFLE call. +// Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type facilityList struct { + bits [4]uint64 +} + +// Has reports whether the given facilities are present. +func (s *facilityList) Has(fs ...facility) bool { + if len(fs) == 0 { + panic("no facility bits provided") + } + for _, f := range fs { + if !bitIsSet(s.bits[:], uint(f)) { + return false + } + } + return true +} + +// function is the code for the named cryptographic function. +type function uint8 + +const ( + // KM{,A,C,CTR} function codes + aes128 function = 18 // AES-128 + aes192 function = 19 // AES-192 + aes256 function = 20 // AES-256 + + // K{I,L}MD function codes + sha1 function = 1 // SHA-1 + sha256 function = 2 // SHA-256 + sha512 function = 3 // SHA-512 + sha3_224 function = 32 // SHA3-224 + sha3_256 function = 33 // SHA3-256 + sha3_384 function = 34 // SHA3-384 + sha3_512 function = 35 // SHA3-512 + shake128 function = 36 // SHAKE-128 + shake256 function = 37 // SHAKE-256 + + // KLMD function codes + ghash function = 65 // GHASH +) + +// queryResult contains the result of a Query function +// call. Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type queryResult struct { + bits [2]uint64 +} + +// Has reports whether the given functions are present. +func (q *queryResult) Has(fns ...function) bool { + if len(fns) == 0 { + panic("no function codes provided") + } + for _, f := range fns { + if !bitIsSet(q.bits[:], uint(f)) { + return false + } + } + return true +} + +func doinit() { + initS390Xbase() + + // We need implementations of stfle, km and so on + // to detect cryptographic features. + if !haveAsmFunctions() { + return + } + + // optional cryptographic functions + if S390X.HasMSA { + aes := []function{aes128, aes192, aes256} + + // cipher message + km, kmc := kmQuery(), kmcQuery() + S390X.HasAES = km.Has(aes...) + S390X.HasAESCBC = kmc.Has(aes...) + if S390X.HasSTFLE { + facilities := stfle() + if facilities.Has(msa4) { + kmctr := kmctrQuery() + S390X.HasAESCTR = kmctr.Has(aes...) + } + if facilities.Has(msa8) { + kma := kmaQuery() + S390X.HasAESGCM = kma.Has(aes...) + } + } + + // compute message digest + kimd := kimdQuery() // intermediate (no padding) + klmd := klmdQuery() // last (padding) + S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) + S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) + S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) + S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist + sha3 := []function{ + sha3_224, sha3_256, sha3_384, sha3_512, + shake128, shake256, + } + S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.s new file mode 100644 index 0000000..1fb4b70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_s390x.s @@ -0,0 +1,57 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// func stfle() facilityList +TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 + MOVD $ret+0(FP), R1 + MOVD $3, R0 // last doubleword index to store + XC $32, (R1), (R1) // clear 4 doublewords (32 bytes) + WORD $0xb2b01000 // store facility list extended (STFLE) + RET + +// func kmQuery() queryResult +TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KM-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92E0024 // cipher message (KM) + RET + +// func kmcQuery() queryResult +TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMC-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92F0024 // cipher message with chaining (KMC) + RET + +// func kmctrQuery() queryResult +TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMCTR-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92D4024 // cipher message with counter (KMCTR) + RET + +// func kmaQuery() queryResult +TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMA-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xb9296024 // cipher message with authentication (KMA) + RET + +// func kimdQuery() queryResult +TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KIMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93E0024 // compute intermediate message digest (KIMD) + RET + +// func klmdQuery() queryResult +TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KLMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93F0024 // compute last message digest (KLMD) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_wasm.go new file mode 100644 index 0000000..384787e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_wasm.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build wasm + +package cpu + +// We're compiling the cpu package for an unknown (software-abstracted) CPU. +// Make CacheLinePad an empty struct and hope that the usual struct alignment +// rules are good enough. + +const cacheLineSize = 0 + +func initOptions() {} + +func archInit() {} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_x86.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_x86.go new file mode 100644 index 0000000..f5723d4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -0,0 +1,236 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64 || amd64p32 + +package cpu + +import "runtime" + +const cacheLineSize = 64 + +func initOptions() { + options = []option{ + {Name: "adx", Feature: &X86.HasADX}, + {Name: "aes", Feature: &X86.HasAES}, + {Name: "avx", Feature: &X86.HasAVX}, + {Name: "avx2", Feature: &X86.HasAVX2}, + {Name: "avx512", Feature: &X86.HasAVX512}, + {Name: "avx512f", Feature: &X86.HasAVX512F}, + {Name: "avx512cd", Feature: &X86.HasAVX512CD}, + {Name: "avx512er", Feature: &X86.HasAVX512ER}, + {Name: "avx512pf", Feature: &X86.HasAVX512PF}, + {Name: "avx512vl", Feature: &X86.HasAVX512VL}, + {Name: "avx512bw", Feature: &X86.HasAVX512BW}, + {Name: "avx512dq", Feature: &X86.HasAVX512DQ}, + {Name: "avx512ifma", Feature: &X86.HasAVX512IFMA}, + {Name: "avx512vbmi", Feature: &X86.HasAVX512VBMI}, + {Name: "avx512vnniw", Feature: &X86.HasAVX5124VNNIW}, + {Name: "avx5124fmaps", Feature: &X86.HasAVX5124FMAPS}, + {Name: "avx512vpopcntdq", Feature: &X86.HasAVX512VPOPCNTDQ}, + {Name: "avx512vpclmulqdq", Feature: &X86.HasAVX512VPCLMULQDQ}, + {Name: "avx512vnni", Feature: &X86.HasAVX512VNNI}, + {Name: "avx512gfni", Feature: &X86.HasAVX512GFNI}, + {Name: "avx512vaes", Feature: &X86.HasAVX512VAES}, + {Name: "avx512vbmi2", Feature: &X86.HasAVX512VBMI2}, + {Name: "avx512bitalg", Feature: &X86.HasAVX512BITALG}, + {Name: "avx512bf16", Feature: &X86.HasAVX512BF16}, + {Name: "amxtile", Feature: &X86.HasAMXTile}, + {Name: "amxint8", Feature: &X86.HasAMXInt8}, + {Name: "amxbf16", Feature: &X86.HasAMXBF16}, + {Name: "bmi1", Feature: &X86.HasBMI1}, + {Name: "bmi2", Feature: &X86.HasBMI2}, + {Name: "cx16", Feature: &X86.HasCX16}, + {Name: "erms", Feature: &X86.HasERMS}, + {Name: "fma", Feature: &X86.HasFMA}, + {Name: "osxsave", Feature: &X86.HasOSXSAVE}, + {Name: "pclmulqdq", Feature: &X86.HasPCLMULQDQ}, + {Name: "popcnt", Feature: &X86.HasPOPCNT}, + {Name: "rdrand", Feature: &X86.HasRDRAND}, + {Name: "rdseed", Feature: &X86.HasRDSEED}, + {Name: "sse3", Feature: &X86.HasSSE3}, + {Name: "sse41", Feature: &X86.HasSSE41}, + {Name: "sse42", Feature: &X86.HasSSE42}, + {Name: "ssse3", Feature: &X86.HasSSSE3}, + {Name: "avxifma", Feature: &X86.HasAVXIFMA}, + {Name: "avxvnni", Feature: &X86.HasAVXVNNI}, + {Name: "avxvnniint8", Feature: &X86.HasAVXVNNIInt8}, + + // These capabilities should always be enabled on amd64: + {Name: "sse2", Feature: &X86.HasSSE2, Required: runtime.GOARCH == "amd64"}, + } +} + +func archInit() { + + // From internal/cpu + const ( + // eax bits + cpuid_AVXVNNI = 1 << 4 + + // ecx bits + cpuid_SSE3 = 1 << 0 + cpuid_PCLMULQDQ = 1 << 1 + cpuid_AVX512VBMI = 1 << 1 + cpuid_AVX512VBMI2 = 1 << 6 + cpuid_SSSE3 = 1 << 9 + cpuid_AVX512GFNI = 1 << 8 + cpuid_AVX512VAES = 1 << 9 + cpuid_AVX512VNNI = 1 << 11 + cpuid_AVX512BITALG = 1 << 12 + cpuid_FMA = 1 << 12 + cpuid_AVX512VPOPCNTDQ = 1 << 14 + cpuid_SSE41 = 1 << 19 + cpuid_SSE42 = 1 << 20 + cpuid_POPCNT = 1 << 23 + cpuid_AES = 1 << 25 + cpuid_OSXSAVE = 1 << 27 + cpuid_AVX = 1 << 28 + + // "Extended Feature Flag" bits returned in EBX for CPUID EAX=0x7 ECX=0x0 + cpuid_BMI1 = 1 << 3 + cpuid_AVX2 = 1 << 5 + cpuid_BMI2 = 1 << 8 + cpuid_ERMS = 1 << 9 + cpuid_AVX512F = 1 << 16 + cpuid_AVX512DQ = 1 << 17 + cpuid_ADX = 1 << 19 + cpuid_AVX512CD = 1 << 28 + cpuid_SHA = 1 << 29 + cpuid_AVX512BW = 1 << 30 + cpuid_AVX512VL = 1 << 31 + + // "Extended Feature Flag" bits returned in ECX for CPUID EAX=0x7 ECX=0x0 + cpuid_AVX512_VBMI = 1 << 1 + cpuid_AVX512_VBMI2 = 1 << 6 + cpuid_GFNI = 1 << 8 + cpuid_AVX512VPCLMULQDQ = 1 << 10 + cpuid_AVX512_BITALG = 1 << 12 + + // edx bits + cpuid_FSRM = 1 << 4 + // edx bits for CPUID 0x80000001 + cpuid_RDTSCP = 1 << 27 + ) + // Additional constants not in internal/cpu + const ( + // eax=1: edx + cpuid_SSE2 = 1 << 26 + // eax=1: ecx + cpuid_CX16 = 1 << 13 + cpuid_RDRAND = 1 << 30 + // eax=7,ecx=0: ebx + cpuid_RDSEED = 1 << 18 + cpuid_AVX512IFMA = 1 << 21 + cpuid_AVX512PF = 1 << 26 + cpuid_AVX512ER = 1 << 27 + // eax=7,ecx=0: edx + cpuid_AVX5124VNNIW = 1 << 2 + cpuid_AVX5124FMAPS = 1 << 3 + cpuid_AMXBF16 = 1 << 22 + cpuid_AMXTile = 1 << 24 + cpuid_AMXInt8 = 1 << 25 + // eax=7,ecx=1: eax + cpuid_AVX512BF16 = 1 << 5 + cpuid_AVXIFMA = 1 << 23 + // eax=7,ecx=1: edx + cpuid_AVXVNNIInt8 = 1 << 4 + ) + + Initialized = true + + maxID, _, _, _ := cpuid(0, 0) + + if maxID < 1 { + return + } + + _, _, ecx1, edx1 := cpuid(1, 0) + X86.HasSSE2 = isSet(edx1, cpuid_SSE2) + + X86.HasSSE3 = isSet(ecx1, cpuid_SSE3) + X86.HasPCLMULQDQ = isSet(ecx1, cpuid_PCLMULQDQ) + X86.HasSSSE3 = isSet(ecx1, cpuid_SSSE3) + X86.HasFMA = isSet(ecx1, cpuid_FMA) + X86.HasCX16 = isSet(ecx1, cpuid_CX16) + X86.HasSSE41 = isSet(ecx1, cpuid_SSE41) + X86.HasSSE42 = isSet(ecx1, cpuid_SSE42) + X86.HasPOPCNT = isSet(ecx1, cpuid_POPCNT) + X86.HasAES = isSet(ecx1, cpuid_AES) + X86.HasOSXSAVE = isSet(ecx1, cpuid_OSXSAVE) + X86.HasRDRAND = isSet(ecx1, cpuid_RDRAND) + + var osSupportsAVX, osSupportsAVX512 bool + // For XGETBV, OSXSAVE bit is required and sufficient. + if X86.HasOSXSAVE { + eax, _ := xgetbv() + // Check if XMM and YMM registers have OS support. + osSupportsAVX = isSet(eax, 1<<1) && isSet(eax, 1<<2) + + if runtime.GOOS == "darwin" { + // Darwin requires special AVX512 checks, see cpu_darwin_x86.go + osSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512() + } else { + // Check if OPMASK and ZMM registers have OS support. + osSupportsAVX512 = osSupportsAVX && isSet(eax, 1<<5) && isSet(eax, 1<<6) && isSet(eax, 1<<7) + } + } + + X86.HasAVX = isSet(ecx1, cpuid_AVX) && osSupportsAVX + + if maxID < 7 { + return + } + + eax7, ebx7, ecx7, edx7 := cpuid(7, 0) + X86.HasBMI1 = isSet(ebx7, cpuid_BMI1) + X86.HasAVX2 = isSet(ebx7, cpuid_AVX2) && osSupportsAVX + X86.HasBMI2 = isSet(ebx7, cpuid_BMI2) + X86.HasERMS = isSet(ebx7, cpuid_ERMS) + X86.HasRDSEED = isSet(ebx7, cpuid_RDSEED) + X86.HasADX = isSet(ebx7, cpuid_ADX) + + X86.HasAVX512 = isSet(ebx7, cpuid_AVX512F) && osSupportsAVX512 // Because avx-512 foundation is the core required extension + if X86.HasAVX512 { + X86.HasAVX512F = true + X86.HasAVX512CD = isSet(ebx7, cpuid_AVX512CD) + X86.HasAVX512ER = isSet(ebx7, cpuid_AVX512ER) + X86.HasAVX512PF = isSet(ebx7, cpuid_AVX512PF) + X86.HasAVX512VL = isSet(ebx7, cpuid_AVX512VL) + X86.HasAVX512BW = isSet(ebx7, cpuid_AVX512BW) + X86.HasAVX512DQ = isSet(ebx7, cpuid_AVX512DQ) + X86.HasAVX512IFMA = isSet(ebx7, cpuid_AVX512IFMA) + X86.HasAVX512VBMI = isSet(ecx7, cpuid_AVX512_VBMI) + X86.HasAVX5124VNNIW = isSet(edx7, cpuid_AVX5124VNNIW) + X86.HasAVX5124FMAPS = isSet(edx7, cpuid_AVX5124FMAPS) + X86.HasAVX512VPOPCNTDQ = isSet(ecx7, cpuid_AVX512VPOPCNTDQ) + X86.HasAVX512VPCLMULQDQ = isSet(ecx7, cpuid_AVX512VPCLMULQDQ) + X86.HasAVX512VNNI = isSet(ecx7, cpuid_AVX512VNNI) + X86.HasAVX512GFNI = isSet(ecx7, cpuid_AVX512GFNI) + X86.HasAVX512VAES = isSet(ecx7, cpuid_AVX512VAES) + X86.HasAVX512VBMI2 = isSet(ecx7, cpuid_AVX512VBMI2) + X86.HasAVX512BITALG = isSet(ecx7, cpuid_AVX512BITALG) + } + + X86.HasAMXTile = isSet(edx7, cpuid_AMXTile) + X86.HasAMXInt8 = isSet(edx7, cpuid_AMXInt8) + X86.HasAMXBF16 = isSet(edx7, cpuid_AMXBF16) + + // These features depend on the second level of extended features. + if eax7 >= 1 { + eax71, _, _, edx71 := cpuid(7, 1) + if X86.HasAVX512 { + X86.HasAVX512BF16 = isSet(eax71, cpuid_AVX512BF16) + } + if X86.HasAVX { + X86.HasAVXIFMA = isSet(eax71, cpuid_AVXIFMA) + X86.HasAVXVNNI = isSet(eax71, cpuid_AVXVNNI) + X86.HasAVXVNNIInt8 = isSet(edx71, cpuid_AVXVNNIInt8) + } + } +} + +func isSet(hwc uint32, value uint32) bool { + return hwc&value != 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos.go new file mode 100644 index 0000000..5f54683 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos.go @@ -0,0 +1,10 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func archInit() { + doinit() + Initialized = true +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go new file mode 100644 index 0000000..ccb1b70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go @@ -0,0 +1,25 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func initS390Xbase() { + // get the facilities list + facilities := stfle() + + // mandatory + S390X.HasZARCH = facilities.Has(zarch) + S390X.HasSTFLE = facilities.Has(stflef) + S390X.HasLDISP = facilities.Has(ldisp) + S390X.HasEIMM = facilities.Has(eimm) + + // optional + S390X.HasETF3EH = facilities.Has(etf3eh) + S390X.HasDFP = facilities.Has(dfp) + S390X.HasMSA = facilities.Has(msa) + S390X.HasVX = facilities.Has(vx) + if S390X.HasVX { + S390X.HasVXE = facilities.Has(vxe) + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_big.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_big.go new file mode 100644 index 0000000..7fe04b0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_big.go @@ -0,0 +1,10 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 + +package cpu + +// IsBigEndian records whether the GOARCH's byte order is big endian. +const IsBigEndian = true diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_little.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_little.go new file mode 100644 index 0000000..48eccc4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/endian_little.go @@ -0,0 +1,10 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh || wasm + +package cpu + +// IsBigEndian records whether the GOARCH's byte order is big endian. +const IsBigEndian = false diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/hwcap_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/hwcap_linux.go new file mode 100644 index 0000000..34e49f9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/hwcap_linux.go @@ -0,0 +1,71 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "os" +) + +const ( + _AT_HWCAP = 16 + _AT_HWCAP2 = 26 + + procAuxv = "/proc/self/auxv" + + uintSize = int(32 << (^uint(0) >> 63)) +) + +// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 +// These are initialized in cpu_$GOARCH.go +// and should not be changed after they are initialized. +var hwCap uint +var hwCap2 uint + +func readHWCAP() error { + // For Go 1.21+, get auxv from the Go runtime. + if a := getAuxv(); len(a) > 0 { + for len(a) >= 2 { + tag, val := a[0], uint(a[1]) + a = a[2:] + switch tag { + case _AT_HWCAP: + hwCap = val + case _AT_HWCAP2: + hwCap2 = val + } + } + return nil + } + + buf, err := os.ReadFile(procAuxv) + if err != nil { + // e.g. on android /proc/self/auxv is not accessible, so silently + // ignore the error and leave Initialized = false. On some + // architectures (e.g. arm64) doinit() implements a fallback + // readout and will set Initialized = true again. + return err + } + bo := hostByteOrder() + for len(buf) >= 2*(uintSize/8) { + var tag, val uint + switch uintSize { + case 32: + tag = uint(bo.Uint32(buf[0:])) + val = uint(bo.Uint32(buf[4:])) + buf = buf[8:] + case 64: + tag = uint(bo.Uint64(buf[0:])) + val = uint(bo.Uint64(buf[8:])) + buf = buf[16:] + } + switch tag { + case _AT_HWCAP: + hwCap = val + case _AT_HWCAP2: + hwCap2 = val + } + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/parse.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/parse.go new file mode 100644 index 0000000..56a7e1a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/parse.go @@ -0,0 +1,43 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import "strconv" + +// parseRelease parses a dot-separated version number. It follows the semver +// syntax, but allows the minor and patch versions to be elided. +// +// This is a copy of the Go runtime's parseRelease from +// https://golang.org/cl/209597. +func parseRelease(rel string) (major, minor, patch int, ok bool) { + // Strip anything after a dash or plus. + for i := range len(rel) { + if rel[i] == '-' || rel[i] == '+' { + rel = rel[:i] + break + } + } + + next := func() (int, bool) { + for i := range len(rel) { + if rel[i] == '.' { + ver, err := strconv.Atoi(rel[:i]) + rel = rel[i+1:] + return ver, err == nil + } + } + ver, err := strconv.Atoi(rel) + rel = "" + return ver, err == nil + } + if major, ok = next(); !ok || rel == "" { + return + } + if minor, ok = next(); !ok || rel == "" { + return + } + patch, ok = next() + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go new file mode 100644 index 0000000..4cd64c7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go @@ -0,0 +1,53 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && arm64 + +package cpu + +import ( + "errors" + "io" + "os" + "strings" +) + +func readLinuxProcCPUInfo() error { + f, err := os.Open("/proc/cpuinfo") + if err != nil { + return err + } + defer f.Close() + + var buf [1 << 10]byte // enough for first CPU + n, err := io.ReadFull(f, buf[:]) + if err != nil && err != io.ErrUnexpectedEOF { + return err + } + in := string(buf[:n]) + const features = "\nFeatures : " + i := strings.Index(in, features) + if i == -1 { + return errors.New("no CPU features found") + } + in = in[i+len(features):] + if i := strings.Index(in, "\n"); i != -1 { + in = in[:i] + } + m := map[string]*bool{} + + initOptions() // need it early here; it's harmless to call twice + for _, o := range options { + m[o.Name] = o.Feature + } + // The EVTSTRM field has alias "evstrm" in Go, but Linux calls it "evtstrm". + m["evtstrm"] = &ARM64.HasEVTSTRM + + for _, f := range strings.Fields(in) { + if p, ok := m[f]; ok { + *p = true + } + } + return nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv.go new file mode 100644 index 0000000..5f92ac9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv.go @@ -0,0 +1,16 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +// getAuxvFn is non-nil on Go 1.21+ (via runtime_auxv_go121.go init) +// on platforms that use auxv. +var getAuxvFn func() []uintptr + +func getAuxv() []uintptr { + if getAuxvFn == nil { + return nil + } + return getAuxvFn() +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go new file mode 100644 index 0000000..4c9788e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go @@ -0,0 +1,18 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.21 + +package cpu + +import ( + _ "unsafe" // for linkname +) + +//go:linkname runtime_getAuxv runtime.getAuxv +func runtime_getAuxv() []uintptr + +func init() { + getAuxvFn = runtime_getAuxv +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go new file mode 100644 index 0000000..1b9ccb0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go @@ -0,0 +1,26 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Recreate a getsystemcfg syscall handler instead of +// using the one provided by x/sys/unix to avoid having +// the dependency between them. (See golang.org/issue/32102) +// Moreover, this file will be used during the building of +// gccgo's libgo and thus must not used a CGo method. + +//go:build aix && gccgo + +package cpu + +import ( + "syscall" +) + +//extern getsystemcfg +func gccgoGetsystemcfg(label uint32) (r uint64) + +func callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) { + r1 = uintptr(gccgoGetsystemcfg(uint32(label))) + e1 = syscall.GetErrno() + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go new file mode 100644 index 0000000..e8b6cdb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go @@ -0,0 +1,35 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on AIX without depending on x/sys/unix. +// (See golang.org/issue/32102) + +//go:build aix && ppc64 && gc + +package cpu + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" + +//go:linkname libc_getsystemcfg libc_getsystemcfg + +type syscallFunc uintptr + +var libc_getsystemcfg syscallFunc + +type errno = syscall.Errno + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) + +func callgetsystemcfg(label int) (r1 uintptr, e1 errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go new file mode 100644 index 0000000..7b4e67f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go @@ -0,0 +1,54 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy from internal/cpu and runtime to make sysctl calls. + +//go:build darwin && arm64 && gc + +package cpu + +import ( + "syscall" + "unsafe" +) + +type Errno = syscall.Errno + +// adapted from internal/cpu/cpu_arm64_darwin.go +func darwinSysctlEnabled(name []byte) bool { + out := int32(0) + nout := unsafe.Sizeof(out) + if ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil { + return false + } + return out > 0 +} + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +var libc_sysctlbyname_trampoline_addr uintptr + +// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix +func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + if _, _, err := syscall_syscall6( + libc_sysctlbyname_trampoline_addr, + uintptr(unsafe.Pointer(name)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + 0, + ); err != 0 { + return err + } + + return nil +} + +//go:cgo_import_dynamic libc_sysctlbyname sysctlbyname "/usr/lib/libSystem.B.dylib" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go new file mode 100644 index 0000000..4d0888b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go @@ -0,0 +1,98 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on Darwin without depending on x/sys/unix. + +//go:build darwin && amd64 && gc + +package cpu + +import ( + "syscall" + "unsafe" +) + +type _C_int int32 + +// adapted from unix.Uname() at x/sys/unix/syscall_darwin.go L419 +func darwinOSRelease(release *[256]byte) error { + // from x/sys/unix/zerrors_openbsd_amd64.go + const ( + CTL_KERN = 0x1 + KERN_OSRELEASE = 0x2 + ) + + mib := []_C_int{CTL_KERN, KERN_OSRELEASE} + n := unsafe.Sizeof(*release) + + return sysctl(mib, &release[0], &n, nil, 0) +} + +type Errno = syscall.Errno + +var _zero uintptr // Single-word zero for use when we need a valid pointer to 0 bytes. + +// from x/sys/unix/zsyscall_darwin_amd64.go L791-807 +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + if _, _, err := syscall_syscall6( + libc_sysctl_trampoline_addr, + uintptr(_p0), + uintptr(len(mib)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + ); err != 0 { + return err + } + + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +// adapted from internal/cpu/cpu_arm64_darwin.go +func darwinSysctlEnabled(name []byte) bool { + out := int32(0) + nout := unsafe.Sizeof(out) + if ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil { + return false + } + return out > 0 +} + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +var libc_sysctlbyname_trampoline_addr uintptr + +// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix +func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + if _, _, err := syscall_syscall6( + libc_sysctlbyname_trampoline_addr, + uintptr(unsafe.Pointer(name)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + 0, + ); err != 0 { + return err + } + + return nil +} + +//go:cgo_import_dynamic libc_sysctlbyname sysctlbyname "/usr/lib/libSystem.B.dylib" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/.gitignore b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/.gitignore new file mode 100644 index 0000000..e3e0fc6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/.gitignore @@ -0,0 +1,2 @@ +_obj/ +unix.test diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/README.md b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/README.md new file mode 100644 index 0000000..6e08a76 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/README.md @@ -0,0 +1,184 @@ +# Building `sys/unix` + +The sys/unix package provides access to the raw system call interface of the +underlying operating system. See: https://godoc.org/golang.org/x/sys/unix + +Porting Go to a new architecture/OS combination or adding syscalls, types, or +constants to an existing architecture/OS pair requires some manual effort; +however, there are tools that automate much of the process. + +## Build Systems + +There are currently two ways we generate the necessary files. We are currently +migrating the build system to use containers so the builds are reproducible. +This is being done on an OS-by-OS basis. Please update this documentation as +components of the build system change. + +### Old Build System (currently for `GOOS != "linux"`) + +The old build system generates the Go files based on the C header files +present on your system. This means that files +for a given GOOS/GOARCH pair must be generated on a system with that OS and +architecture. This also means that the generated code can differ from system +to system, based on differences in the header files. + +To avoid this, if you are using the old build system, only generate the Go +files on an installation with unmodified header files. It is also important to +keep track of which version of the OS the files were generated from (ex. +Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes +and have each OS upgrade correspond to a single change. + +To build the files for your current OS and architecture, make sure GOOS and +GOARCH are set correctly and run `mkall.sh`. This will generate the files for +your specific system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, go + +### New Build System (currently for `GOOS == "linux"`) + +The new build system uses a Docker container to generate the go files directly +from source checkouts of the kernel and various system libraries. This means +that on any platform that supports Docker, all the files using the new build +system can be generated at once, and generated files will not change based on +what the person running the scripts has installed on their computer. + +The OS specific files for the new build system are located in the `${GOOS}` +directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When +the kernel or system library updates, modify the Dockerfile at +`${GOOS}/Dockerfile` to checkout the new release of the source. + +To build all the files under the new build system, you must be on an amd64/Linux +system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will +then generate all of the files for all of the GOOS/GOARCH pairs in the new build +system. Running `mkall.sh -n` shows the commands that will be run. + +Requirements: bash, go, docker + +## Component files + +This section describes the various files used in the code generation process. +It also contains instructions on how to modify these files to add a new +architecture/OS or to add additional syscalls, types, or constants. Note that +if you are using the new build system, the scripts/programs cannot be called normally. +They must be called from within the docker container. + +### asm files + +The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system +call dispatch. There are three entry points: +``` + func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) + func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr) + func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr) +``` +The first and second are the standard ones; they differ only in how many +arguments can be passed to the kernel. The third is for low-level use by the +ForkExec wrapper. Unlike the first two, it does not call into the scheduler to +let it know that a system call is running. + +When porting Go to a new architecture/OS, this file must be implemented for +each GOOS/GOARCH pair. + +### mksysnum + +Mksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go` +for the old system). This program takes in a list of header files containing the +syscall number declarations and parses them to produce the corresponding list of +Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated +constants. + +Adding new syscall numbers is mostly done by running the build on a sufficiently +new installation of the target OS (or updating the source checkouts for the +new build system). However, depending on the OS, you may need to update the +parsing in mksysnum. + +### mksyscall.go + +The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are +hand-written Go files which implement system calls (for unix, the specific OS, +or the specific OS/Architecture pair respectively) that need special handling +and list `//sys` comments giving prototypes for ones that can be generated. + +The mksyscall.go program takes the `//sys` and `//sysnb` comments and converts +them into syscalls. This requires the name of the prototype in the comment to +match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function +prototype can be exported (capitalized) or not. + +Adding a new syscall often just requires adding a new `//sys` function prototype +with the desired arguments and a capitalized name so it is exported. However, if +you want the interface to the syscall to be different, often one will make an +unexported `//sys` prototype, and then write a custom wrapper in +`syscall_${GOOS}.go`. + +### types files + +For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or +`types_${GOOS}.go` on the old system). This file includes standard C headers and +creates Go type aliases to the corresponding C types. The file is then fed +through godef to get the Go compatible definitions. Finally, the generated code +is fed though mkpost.go to format the code correctly and remove any hidden or +private identifiers. This cleaned-up code is written to +`ztypes_${GOOS}_${GOARCH}.go`. + +The hardest part about preparing this file is figuring out which headers to +include and which symbols need to be `#define`d to get the actual data +structures that pass through to the kernel system calls. Some C libraries +preset alternate versions for binary compatibility and translate them on the +way in and out of system calls, but there is almost always a `#define` that can +get the real ones. +See `types_darwin.go` and `linux/types.go` for examples. + +To add a new type, add in the necessary include statement at the top of the +file (if it is not already there) and add in a type alias line. Note that if +your type is significantly different on different architectures, you may need +some `#if/#elif` macros in your include statements. + +### mkerrors.sh + +This script is used to generate the system's various constants. This doesn't +just include the error numbers and error strings, but also the signal numbers +and a wide variety of miscellaneous constants. The constants come from the list +of include files in the `includes_${uname}` variable. A regex then picks out +the desired `#define` statements, and generates the corresponding Go constants. +The error numbers and strings are generated from `#include `, and the +signal numbers and strings are generated from `#include `. All of +these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program, +`_errors.c`, which prints out all the constants. + +To add a constant, add the header that includes it to the appropriate variable. +Then, edit the regex (if necessary) to match the desired constant. Avoid making +the regex too broad to avoid matching unintended constants. + +### internal/mkmerge + +This program is used to extract duplicate const, func, and type declarations +from the generated architecture-specific files listed below, and merge these +into a common file for each OS. + +The merge is performed in the following steps: +1. Construct the set of common code that is identical in all architecture-specific files. +2. Write this common code to the merged file. +3. Remove the common code from all architecture-specific files. + + +## Generated files + +### `zerrors_${GOOS}_${GOARCH}.go` + +A file containing all of the system's generated error numbers, error strings, +signal numbers, and constants. Generated by `mkerrors.sh` (see above). + +### `zsyscall_${GOOS}_${GOARCH}.go` + +A file containing all the generated syscalls for a specific GOOS and GOARCH. +Generated by `mksyscall.go` (see above). + +### `zsysnum_${GOOS}_${GOARCH}.go` + +A list of numeric constants for all the syscall number of the specific GOOS +and GOARCH. Generated by mksysnum (see above). + +### `ztypes_${GOOS}_${GOARCH}.go` + +A file containing Go types for passing into (or returning from) syscalls. +Generated by godefs and the types file (see above). diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/affinity_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/affinity_linux.go new file mode 100644 index 0000000..3ea4703 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/affinity_linux.go @@ -0,0 +1,93 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// CPU affinity functions + +package unix + +import ( + "math/bits" + "unsafe" +) + +const cpuSetSize = _CPU_SETSIZE / _NCPUBITS + +// CPUSet represents a CPU affinity mask. +type CPUSet [cpuSetSize]cpuMask + +func schedAffinity(trap uintptr, pid int, set *CPUSet) error { + _, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set))) + if e != 0 { + return errnoErr(e) + } + return nil +} + +// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid. +// If pid is 0 the calling thread is used. +func SchedGetaffinity(pid int, set *CPUSet) error { + return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set) +} + +// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid. +// If pid is 0 the calling thread is used. +func SchedSetaffinity(pid int, set *CPUSet) error { + return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set) +} + +// Zero clears the set s, so that it contains no CPUs. +func (s *CPUSet) Zero() { + clear(s[:]) +} + +// Fill adds all possible CPU bits to the set s. On Linux, [SchedSetaffinity] +// will silently ignore any invalid CPU bits in [CPUSet] so this is an +// efficient way of resetting the CPU affinity of a process. +func (s *CPUSet) Fill() { + for i := range s { + s[i] = ^cpuMask(0) + } +} + +func cpuBitsIndex(cpu int) int { + return cpu / _NCPUBITS +} + +func cpuBitsMask(cpu int) cpuMask { + return cpuMask(1 << (uint(cpu) % _NCPUBITS)) +} + +// Set adds cpu to the set s. +func (s *CPUSet) Set(cpu int) { + i := cpuBitsIndex(cpu) + if i < len(s) { + s[i] |= cpuBitsMask(cpu) + } +} + +// Clear removes cpu from the set s. +func (s *CPUSet) Clear(cpu int) { + i := cpuBitsIndex(cpu) + if i < len(s) { + s[i] &^= cpuBitsMask(cpu) + } +} + +// IsSet reports whether cpu is in the set s. +func (s *CPUSet) IsSet(cpu int) bool { + i := cpuBitsIndex(cpu) + if i < len(s) { + return s[i]&cpuBitsMask(cpu) != 0 + } + return false +} + +// Count returns the number of CPUs in the set s. +func (s *CPUSet) Count() int { + c := 0 + for _, b := range s { + c += bits.OnesCount64(uint64(b)) + } + return c +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/aliases.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/aliases.go new file mode 100644 index 0000000..b0e4198 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/aliases.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import "syscall" + +type Signal = syscall.Signal +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s new file mode 100644 index 0000000..269e173 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_386.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_386.s new file mode 100644 index 0000000..a4fcef0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_386.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for 386 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s new file mode 100644 index 0000000..1e63615 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for AMD64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm.s new file mode 100644 index 0000000..6496c31 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for ARM BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s new file mode 100644 index 0000000..4fd1f54 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for ARM64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s new file mode 100644 index 0000000..42f7eb9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s @@ -0,0 +1,29 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// +// System call support for ppc64, BSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s new file mode 100644 index 0000000..f890266 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s @@ -0,0 +1,27 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc + +#include "textflag.h" + +// System call support for RISCV64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_386.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_386.s new file mode 100644 index 0000000..3b47348 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_386.s @@ -0,0 +1,65 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for 386, Linux +// + +// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80 +// instead of the glibc-specific "CALL 0x10(GS)". +#define INVOKE_SYSCALL INT $0x80 + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + CALL runtime·entersyscall(SB) + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL a2+8(FP), CX + MOVL a3+12(FP), DX + MOVL $0, SI + MOVL $0, DI + INVOKE_SYSCALL + MOVL AX, r1+16(FP) + MOVL DX, r2+20(FP) + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVL trap+0(FP), AX // syscall entry + MOVL a1+4(FP), BX + MOVL a2+8(FP), CX + MOVL a3+12(FP), DX + MOVL $0, SI + MOVL $0, DI + INVOKE_SYSCALL + MOVL AX, r1+16(FP) + MOVL DX, r2+20(FP) + RET + +TEXT ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 + JMP syscall·rawsocketcall(SB) + +TEXT ·seek(SB),NOSPLIT,$0-28 + JMP syscall·seek(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_amd64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_amd64.s new file mode 100644 index 0000000..67e29f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_amd64.s @@ -0,0 +1,57 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for AMD64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOVQ a1+8(FP), DI + MOVQ a2+16(FP), SI + MOVQ a3+24(FP), DX + MOVQ $0, R10 + MOVQ $0, R8 + MOVQ $0, R9 + MOVQ trap+0(FP), AX // syscall entry + SYSCALL + MOVQ AX, r1+32(FP) + MOVQ DX, r2+40(FP) + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVQ a1+8(FP), DI + MOVQ a2+16(FP), SI + MOVQ a3+24(FP), DX + MOVQ $0, R10 + MOVQ $0, R8 + MOVQ $0, R9 + MOVQ trap+0(FP), AX // syscall entry + SYSCALL + MOVQ AX, r1+32(FP) + MOVQ DX, r2+40(FP) + RET + +TEXT ·gettimeofday(SB),NOSPLIT,$0-16 + JMP syscall·gettimeofday(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm.s new file mode 100644 index 0000000..d6ae269 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm.s @@ -0,0 +1,56 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for arm, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + BL runtime·entersyscall(SB) + MOVW trap+0(FP), R7 + MOVW a1+4(FP), R0 + MOVW a2+8(FP), R1 + MOVW a3+12(FP), R2 + MOVW $0, R3 + MOVW $0, R4 + MOVW $0, R5 + SWI $0 + MOVW R0, r1+16(FP) + MOVW $0, R0 + MOVW R0, r2+20(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVW trap+0(FP), R7 // syscall entry + MOVW a1+4(FP), R0 + MOVW a2+8(FP), R1 + MOVW a3+12(FP), R2 + SWI $0 + MOVW R0, r1+16(FP) + MOVW $0, R0 + MOVW R0, r2+20(FP) + RET + +TEXT ·seek(SB),NOSPLIT,$0-28 + B syscall·seek(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm64.s new file mode 100644 index 0000000..01e5e25 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_arm64.s @@ -0,0 +1,50 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && arm64 && gc + +#include "textflag.h" + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + B syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R0 + MOVD a2+16(FP), R1 + MOVD a3+24(FP), R2 + MOVD $0, R3 + MOVD $0, R4 + MOVD $0, R5 + MOVD trap+0(FP), R8 // syscall entry + SVC + MOVD R0, r1+32(FP) // r1 + MOVD R1, r2+40(FP) // r2 + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + B syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R0 + MOVD a2+16(FP), R1 + MOVD a3+24(FP), R2 + MOVD $0, R3 + MOVD $0, R4 + MOVD $0, R5 + MOVD trap+0(FP), R8 // syscall entry + SVC + MOVD R0, r1+32(FP) + MOVD R1, r2+40(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_loong64.s new file mode 100644 index 0000000..2abf12f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_loong64.s @@ -0,0 +1,51 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && loong64 && gc + +#include "textflag.h" + + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R11 // syscall entry + SYSCALL + MOVV R4, r1+32(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s new file mode 100644 index 0000000..f84bae7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s @@ -0,0 +1,54 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips64 || mips64le) && gc + +#include "textflag.h" + +// +// System calls for mips64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + JAL runtime·entersyscall(SB) + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R2 // syscall entry + SYSCALL + MOVV R2, r1+32(FP) + MOVV R3, r2+40(FP) + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVV a1+8(FP), R4 + MOVV a2+16(FP), R5 + MOVV a3+24(FP), R6 + MOVV R0, R7 + MOVV R0, R8 + MOVV R0, R9 + MOVV trap+0(FP), R2 // syscall entry + SYSCALL + MOVV R2, r1+32(FP) + MOVV R3, r2+40(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s new file mode 100644 index 0000000..f08f628 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s @@ -0,0 +1,52 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips || mipsle) && gc + +#include "textflag.h" + +// +// System calls for mips, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + JMP syscall·Syscall9(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-24 + JAL runtime·entersyscall(SB) + MOVW a1+4(FP), R4 + MOVW a2+8(FP), R5 + MOVW a3+12(FP), R6 + MOVW R0, R7 + MOVW trap+0(FP), R2 // syscall entry + SYSCALL + MOVW R2, r1+16(FP) // r1 + MOVW R3, r2+20(FP) // r2 + JAL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24 + MOVW a1+4(FP), R4 + MOVW a2+8(FP), R5 + MOVW a3+12(FP), R6 + MOVW trap+0(FP), R2 // syscall entry + SYSCALL + MOVW R2, r1+16(FP) + MOVW R3, r2+20(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s new file mode 100644 index 0000000..bdfc024 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s @@ -0,0 +1,42 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64 || ppc64le) && gc + +#include "textflag.h" + +// +// System calls for ppc64, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R3 + MOVD a2+16(FP), R4 + MOVD a3+24(FP), R5 + MOVD R0, R6 + MOVD R0, R7 + MOVD R0, R8 + MOVD trap+0(FP), R9 // syscall entry + SYSCALL R9 + MOVD R3, r1+32(FP) + MOVD R4, r2+40(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R3 + MOVD a2+16(FP), R4 + MOVD a3+24(FP), R5 + MOVD R0, R6 + MOVD R0, R7 + MOVD R0, R8 + MOVD trap+0(FP), R9 // syscall entry + SYSCALL R9 + MOVD R3, r1+32(FP) + MOVD R4, r2+40(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s new file mode 100644 index 0000000..2e8c996 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s @@ -0,0 +1,47 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && gc + +#include "textflag.h" + +// +// System calls for linux/riscv64. +// +// Where available, just jump to package syscall's implementation of +// these functions. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) // r1 + MOV A1, r2+40(FP) // r2 + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) + MOV A1, r2+40(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_s390x.s new file mode 100644 index 0000000..2c394b1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_linux_s390x.s @@ -0,0 +1,54 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && s390x && gc + +#include "textflag.h" + +// +// System calls for s390x, Linux +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + BR syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + BR syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + BL runtime·entersyscall(SB) + MOVD a1+8(FP), R2 + MOVD a2+16(FP), R3 + MOVD a3+24(FP), R4 + MOVD $0, R5 + MOVD $0, R6 + MOVD $0, R7 + MOVD trap+0(FP), R1 // syscall entry + SYSCALL + MOVD R2, r1+32(FP) + MOVD R3, r2+40(FP) + BL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + BR syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + BR syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOVD a1+8(FP), R2 + MOVD a2+16(FP), R3 + MOVD a3+24(FP), R4 + MOVD $0, R5 + MOVD $0, R6 + MOVD $0, R7 + MOVD trap+0(FP), R1 // syscall entry + SYSCALL + MOVD R2, r1+32(FP) + MOVD R3, r2+40(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s new file mode 100644 index 0000000..fab586a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System call support for mips64, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s new file mode 100644 index 0000000..f949ec5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s @@ -0,0 +1,17 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gc + +#include "textflag.h" + +// +// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go +// + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_zos_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_zos_s390x.s new file mode 100644 index 0000000..813dfad --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/asm_zos_s390x.s @@ -0,0 +1,382 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc + +#include "textflag.h" + +#define PSALAA 1208(R0) +#define GTAB64(x) 80(x) +#define LCA64(x) 88(x) +#define SAVSTACK_ASYNC(x) 336(x) // in the LCA +#define CAA(x) 8(x) +#define CEECAATHDID(x) 976(x) // in the CAA +#define EDCHPXV(x) 1016(x) // in the CAA +#define GOCB(x) 1104(x) // in the CAA + +// SS_*, where x=SAVSTACK_ASYNC +#define SS_LE(x) 0(x) +#define SS_GO(x) 8(x) +#define SS_ERRNO(x) 16(x) +#define SS_ERRNOJR(x) 20(x) + +// Function Descriptor Offsets +#define __errno 0x156*16 +#define __err2ad 0x16C*16 + +// Call Instructions +#define LE_CALL BYTE $0x0D; BYTE $0x76 // BL R7, R6 +#define SVC_LOAD BYTE $0x0A; BYTE $0x08 // SVC 08 LOAD +#define SVC_DELETE BYTE $0x0A; BYTE $0x09 // SVC 09 DELETE + +DATA zosLibVec<>(SB)/8, $0 +GLOBL zosLibVec<>(SB), NOPTR, $8 + +TEXT ·initZosLibVec(SB), NOSPLIT|NOFRAME, $0-0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R8 + MOVD EDCHPXV(R8), R8 + MOVD R8, zosLibVec<>(SB) + RET + +TEXT ·GetZosLibVec(SB), NOSPLIT|NOFRAME, $0-0 + MOVD zosLibVec<>(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·clearErrno(SB), NOSPLIT, $0-0 + BL addrerrno<>(SB) + MOVD $0, 0(R3) + RET + +// Returns the address of errno in R3. +TEXT addrerrno<>(SB), NOSPLIT|NOFRAME, $0-0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get __errno FuncDesc. + MOVD CAA(R8), R9 + MOVD EDCHPXV(R9), R9 + ADD $(__errno), R9 + LMG 0(R9), R5, R6 + + // Switch to saved LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R4 + MOVD $0, 0(R9) + + // Call __errno function. + LE_CALL + NOPH + + // Switch back to Go stack. + XOR R0, R0 // Restore R0 to $0. + MOVD R4, 0(R9) // Save stack pointer. + RET + +// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +TEXT ·svcCall(SB), NOSPLIT, $0 + BL runtime·save_g(SB) // Save g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD R15, 0(R9) + + MOVD argv+8(FP), R1 // Move function arguments into registers + MOVD dsa+16(FP), g + MOVD fnptr+0(FP), R15 + + BYTE $0x0D // Branch to function + BYTE $0xEF + + BL runtime·load_g(SB) // Restore g and stack pointer + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD SAVSTACK_ASYNC(R8), R9 + MOVD 0(R9), R15 + + RET + +// func svcLoad(name *byte) unsafe.Pointer +TEXT ·svcLoad(SB), NOSPLIT, $0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD $0x80000000, R1 + MOVD $0, R15 + SVC_LOAD + MOVW R15, R3 // Save return code from SVC + MOVD R2, R15 // Restore go stack pointer + CMP R3, $0 // Check SVC return code + BNE error + + MOVD $-2, R3 // Reset last bit of entry point to zero + AND R0, R3 + MOVD R3, ret+8(FP) // Return entry point returned by SVC + CMP R0, R3 // Check if last bit of entry point was set + BNE done + + MOVD R15, R2 // Save go stack pointer + MOVD $0, R15 // Move SVC args into registers (entry point still in r0 from SVC 08) + SVC_DELETE + MOVD R2, R15 // Restore go stack pointer + +error: + MOVD $0, ret+8(FP) // Return 0 on failure + +done: + XOR R0, R0 // Reset r0 to 0 + RET + +// func svcUnload(name *byte, fnptr unsafe.Pointer) int64 +TEXT ·svcUnload(SB), NOSPLIT, $0 + MOVD R15, R2 // Save go stack pointer + MOVD name+0(FP), R0 // Move SVC args into registers + MOVD fnptr+8(FP), R15 + SVC_DELETE + XOR R0, R0 // Reset r0 to 0 + MOVD R15, R1 // Save SVC return code + MOVD R2, R15 // Restore go stack pointer + MOVD R1, ret+16(FP) // Return SVC return code + RET + +// func gettid() uint64 +TEXT ·gettid(SB), NOSPLIT, $0 + // Get library control area (LCA). + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + + // Get CEECAATHDID + MOVD CAA(R8), R9 + MOVD CEECAATHDID(R9), R9 + MOVD R9, ret+0(FP) + + RET + +// +// Call LE function, if the return is -1 +// errno and errno2 is retrieved +// +TEXT ·CallLeFuncWithErr(SB), NOSPLIT, $0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R9 + MOVD g, GOCB(R9) + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address + MOVD 0(R9), R4 // R4-> restore previously saved stack frame pointer + + MOVD parms_base+8(FP), R7 // R7 -> argument array + MOVD parms_len+16(FP), R8 // R8 number of arguments + + // arg 1 ---> R1 + CMP R8, $0 + BEQ docall + SUB $1, R8 + MOVD 0(R7), R1 + + // arg 2 ---> R2 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R2 + + // arg 3 --> R3 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R3 + + CMP R8, $0 + BEQ docall + MOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument + +repeat: + ADD $8, R7 + MOVD 0(R7), R0 // advance arg pointer by 8 byte + ADD $8, R6 // advance LE argument address by 8 byte + MOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame + SUB $1, R8 + CMP R8, $0 + BNE repeat + +docall: + MOVD funcdesc+0(FP), R8 // R8-> function descriptor + LMG 0(R8), R5, R6 + MOVD $0, 0(R9) // R9 address of SAVSTACK_ASYNC + LE_CALL // balr R7, R6 (return #1) + NOPH + MOVD R3, ret+32(FP) + CMP R3, $-1 // compare result to -1 + BNE done + + // retrieve errno and errno2 + MOVD zosLibVec<>(SB), R8 + ADD $(__errno), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __errno (return #3) + NOPH + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) + MOVD zosLibVec<>(SB), R8 + ADD $(__err2ad), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __err2ad (return #2) + NOPH + MOVW (R3), R2 // retrieve errno2 + MOVD R2, errno2+40(FP) // store in return area + +done: + MOVD R4, 0(R9) // Save stack pointer. + RET + +// +// Call LE function, if the return is 0 +// errno and errno2 is retrieved +// +TEXT ·CallLeFuncWithPtrReturn(SB), NOSPLIT, $0 + MOVW PSALAA, R8 + MOVD LCA64(R8), R8 + MOVD CAA(R8), R9 + MOVD g, GOCB(R9) + + // Restore LE stack. + MOVD SAVSTACK_ASYNC(R8), R9 // R9-> LE stack frame saving address + MOVD 0(R9), R4 // R4-> restore previously saved stack frame pointer + + MOVD parms_base+8(FP), R7 // R7 -> argument array + MOVD parms_len+16(FP), R8 // R8 number of arguments + + // arg 1 ---> R1 + CMP R8, $0 + BEQ docall + SUB $1, R8 + MOVD 0(R7), R1 + + // arg 2 ---> R2 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R2 + + // arg 3 --> R3 + CMP R8, $0 + BEQ docall + SUB $1, R8 + ADD $8, R7 + MOVD 0(R7), R3 + + CMP R8, $0 + BEQ docall + MOVD $2176+16, R6 // starting LE stack address-8 to store 4th argument + +repeat: + ADD $8, R7 + MOVD 0(R7), R0 // advance arg pointer by 8 byte + ADD $8, R6 // advance LE argument address by 8 byte + MOVD R0, (R4)(R6*1) // copy argument from go-slice to le-frame + SUB $1, R8 + CMP R8, $0 + BNE repeat + +docall: + MOVD funcdesc+0(FP), R8 // R8-> function descriptor + LMG 0(R8), R5, R6 + MOVD $0, 0(R9) // R9 address of SAVSTACK_ASYNC + LE_CALL // balr R7, R6 (return #1) + NOPH + MOVD R3, ret+32(FP) + CMP R3, $0 // compare result to 0 + BNE done + + // retrieve errno and errno2 + MOVD zosLibVec<>(SB), R8 + ADD $(__errno), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __errno (return #3) + NOPH + MOVWZ 0(R3), R3 + MOVD R3, err+48(FP) + MOVD zosLibVec<>(SB), R8 + ADD $(__err2ad), R8 + LMG 0(R8), R5, R6 + LE_CALL // balr R7, R6 __err2ad (return #2) + NOPH + MOVW (R3), R2 // retrieve errno2 + MOVD R2, errno2+40(FP) // store in return area + XOR R2, R2 + MOVWZ R2, (R3) // clear errno2 + +done: + MOVD R4, 0(R9) // Save stack pointer. + RET + +// +// function to test if a pointer can be safely dereferenced (content read) +// return 0 for succces +// +TEXT ·ptrtest(SB), NOSPLIT, $0-16 + MOVD arg+0(FP), R10 // test pointer in R10 + + // set up R2 to point to CEECAADMC + BYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt 2,1208 + BYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22 // llgtr 2,2 + BYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF // nilh 2,32767 + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg 2,88(2) + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg 2,8(2) + BYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68 // la 2,872(2) + + // set up R5 to point to the "shunt" path which set 1 to R3 (failure) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr 3,3 + BYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras 5,lbl1 + BYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi 3,1 + + // if r3 is not zero (failed) then branch to finish + BYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1 ltgr 3,3 + BYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc b'0111',lbl2 + + // stomic store shunt address in R5 into CEECAADMC + BYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2) + + // now try reading from the test pointer in R10, if it fails it branches to the "lghi" instruction above + BYTE $0xE3; BYTE $0x9A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg 9,0(10) + + // finish here, restore 0 into CEECAADMC + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99 // lbl2 xgr 9,9 + BYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 9,0(2) + MOVD R3, ret+8(FP) // result in R3 + RET + +// +// function to test if a untptr can be loaded from a pointer +// return 1: the 8-byte content +// 2: 0 for success, 1 for failure +// +// func safeload(ptr uintptr) ( value uintptr, error uintptr) +TEXT ·safeload(SB), NOSPLIT, $0-24 + MOVD ptr+0(FP), R10 // test pointer in R10 + MOVD $0x0, R6 + BYTE $0xE3; BYTE $0x20; BYTE $0x04; BYTE $0xB8; BYTE $0x00; BYTE $0x17 // llgt 2,1208 + BYTE $0xB9; BYTE $0x17; BYTE $0x00; BYTE $0x22 // llgtr 2,2 + BYTE $0xA5; BYTE $0x26; BYTE $0x7F; BYTE $0xFF // nilh 2,32767 + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x58; BYTE $0x00; BYTE $0x04 // lg 2,88(2) + BYTE $0xE3; BYTE $0x22; BYTE $0x00; BYTE $0x08; BYTE $0x00; BYTE $0x04 // lg 2,8(2) + BYTE $0x41; BYTE $0x22; BYTE $0x03; BYTE $0x68 // la 2,872(2) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x33 // xgr 3,3 + BYTE $0xA7; BYTE $0x55; BYTE $0x00; BYTE $0x04 // bras 5,lbl1 + BYTE $0xA7; BYTE $0x39; BYTE $0x00; BYTE $0x01 // lghi 3,1 + BYTE $0xB9; BYTE $0x02; BYTE $0x00; BYTE $0x33 // lbl1 ltgr 3,3 + BYTE $0xA7; BYTE $0x74; BYTE $0x00; BYTE $0x08 // brc b'0111',lbl2 + BYTE $0xE3; BYTE $0x52; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 5,0(2) + BYTE $0xE3; BYTE $0x6A; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x04 // lg 6,0(10) + BYTE $0xB9; BYTE $0x82; BYTE $0x00; BYTE $0x99 // lbl2 xgr 9,9 + BYTE $0xE3; BYTE $0x92; BYTE $0x00; BYTE $0x00; BYTE $0x00; BYTE $0x24 // stg 9,0(2) + MOVD R6, value+8(FP) // result in R6 + MOVD R3, error+16(FP) // error in R3 + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv.go new file mode 100644 index 0000000..37a8252 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv.go @@ -0,0 +1,36 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:linkname runtime_getAuxv runtime.getAuxv +func runtime_getAuxv() []uintptr + +// Auxv returns the ELF auxiliary vector as a sequence of key/value pairs. +// The returned slice is always a fresh copy, owned by the caller. +// It returns an error on non-ELF platforms, or if the auxiliary vector cannot be accessed, +// which happens in some locked-down environments and build modes. +func Auxv() ([][2]uintptr, error) { + vec := runtime_getAuxv() + vecLen := len(vec) + + if vecLen == 0 { + return nil, syscall.ENOENT + } + + if vecLen%2 != 0 { + return nil, syscall.EINVAL + } + + result := make([]uintptr, vecLen) + copy(result, vec) + return unsafe.Slice((*[2]uintptr)(unsafe.Pointer(&result[0])), vecLen/2), nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv_unsupported.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv_unsupported.go new file mode 100644 index 0000000..1200487 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/auxv_unsupported.go @@ -0,0 +1,13 @@ +// Copyright 2025 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !go1.21 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos) + +package unix + +import "syscall" + +func Auxv() ([][2]uintptr, error) { + return nil, syscall.ENOTSUP +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bluetooth_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bluetooth_linux.go new file mode 100644 index 0000000..a178a61 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bluetooth_linux.go @@ -0,0 +1,36 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Bluetooth sockets and messages + +package unix + +// Bluetooth Protocols +const ( + BTPROTO_L2CAP = 0 + BTPROTO_HCI = 1 + BTPROTO_SCO = 2 + BTPROTO_RFCOMM = 3 + BTPROTO_BNEP = 4 + BTPROTO_CMTP = 5 + BTPROTO_HIDP = 6 + BTPROTO_AVDTP = 7 +) + +const ( + HCI_CHANNEL_RAW = 0 + HCI_CHANNEL_USER = 1 + HCI_CHANNEL_MONITOR = 2 + HCI_CHANNEL_CONTROL = 3 + HCI_CHANNEL_LOGGING = 4 +) + +// Socketoption Level +const ( + SOL_BLUETOOTH = 0x112 + SOL_HCI = 0x0 + SOL_L2CAP = 0x6 + SOL_RFCOMM = 0x12 + SOL_SCO = 0x11 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.go new file mode 100644 index 0000000..39d647d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.go @@ -0,0 +1,657 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos + +package unix + +import ( + "bytes" + "fmt" + "unsafe" +) + +//go:noescape +func bpxcall(plist []unsafe.Pointer, bpx_offset int64) + +//go:noescape +func A2e([]byte) + +//go:noescape +func E2a([]byte) + +const ( + BPX4STA = 192 // stat + BPX4FST = 104 // fstat + BPX4LST = 132 // lstat + BPX4OPN = 156 // open + BPX4CLO = 72 // close + BPX4CHR = 500 // chattr + BPX4FCR = 504 // fchattr + BPX4LCR = 1180 // lchattr + BPX4CTW = 492 // cond_timed_wait + BPX4GTH = 1056 // __getthent + BPX4PTQ = 412 // pthread_quiesc + BPX4PTR = 320 // ptrace +) + +const ( + //options + //byte1 + BPX_OPNFHIGH = 0x80 + //byte2 + BPX_OPNFEXEC = 0x80 + //byte3 + BPX_O_NOLARGEFILE = 0x08 + BPX_O_LARGEFILE = 0x04 + BPX_O_ASYNCSIG = 0x02 + BPX_O_SYNC = 0x01 + //byte4 + BPX_O_CREXCL = 0xc0 + BPX_O_CREAT = 0x80 + BPX_O_EXCL = 0x40 + BPX_O_NOCTTY = 0x20 + BPX_O_TRUNC = 0x10 + BPX_O_APPEND = 0x08 + BPX_O_NONBLOCK = 0x04 + BPX_FNDELAY = 0x04 + BPX_O_RDWR = 0x03 + BPX_O_RDONLY = 0x02 + BPX_O_WRONLY = 0x01 + BPX_O_ACCMODE = 0x03 + BPX_O_GETFL = 0x0f + + //mode + // byte1 (file type) + BPX_FT_DIR = 1 + BPX_FT_CHARSPEC = 2 + BPX_FT_REGFILE = 3 + BPX_FT_FIFO = 4 + BPX_FT_SYMLINK = 5 + BPX_FT_SOCKET = 6 + //byte3 + BPX_S_ISUID = 0x08 + BPX_S_ISGID = 0x04 + BPX_S_ISVTX = 0x02 + BPX_S_IRWXU1 = 0x01 + BPX_S_IRUSR = 0x01 + //byte4 + BPX_S_IRWXU2 = 0xc0 + BPX_S_IWUSR = 0x80 + BPX_S_IXUSR = 0x40 + BPX_S_IRWXG = 0x38 + BPX_S_IRGRP = 0x20 + BPX_S_IWGRP = 0x10 + BPX_S_IXGRP = 0x08 + BPX_S_IRWXOX = 0x07 + BPX_S_IROTH = 0x04 + BPX_S_IWOTH = 0x02 + BPX_S_IXOTH = 0x01 + + CW_INTRPT = 1 + CW_CONDVAR = 32 + CW_TIMEOUT = 64 + + PGTHA_NEXT = 2 + PGTHA_CURRENT = 1 + PGTHA_FIRST = 0 + PGTHA_LAST = 3 + PGTHA_PROCESS = 0x80 + PGTHA_CONTTY = 0x40 + PGTHA_PATH = 0x20 + PGTHA_COMMAND = 0x10 + PGTHA_FILEDATA = 0x08 + PGTHA_THREAD = 0x04 + PGTHA_PTAG = 0x02 + PGTHA_COMMANDLONG = 0x01 + PGTHA_THREADFAST = 0x80 + PGTHA_FILEPATH = 0x40 + PGTHA_THDSIGMASK = 0x20 + // thread quiece mode + QUIESCE_TERM int32 = 1 + QUIESCE_FORCE int32 = 2 + QUIESCE_QUERY int32 = 3 + QUIESCE_FREEZE int32 = 4 + QUIESCE_UNFREEZE int32 = 5 + FREEZE_THIS_THREAD int32 = 6 + FREEZE_EXIT int32 = 8 + QUIESCE_SRB int32 = 9 +) + +type Pgtha struct { + Pid uint32 // 0 + Tid0 uint32 // 4 + Tid1 uint32 + Accesspid byte // C + Accesstid byte // D + Accessasid uint16 // E + Loginname [8]byte // 10 + Flag1 byte // 18 + Flag1b2 byte // 19 +} + +type Bpxystat_t struct { // DSECT BPXYSTAT + St_id [4]uint8 // 0 + St_length uint16 // 0x4 + St_version uint16 // 0x6 + St_mode uint32 // 0x8 + St_ino uint32 // 0xc + St_dev uint32 // 0x10 + St_nlink uint32 // 0x14 + St_uid uint32 // 0x18 + St_gid uint32 // 0x1c + St_size uint64 // 0x20 + St_atime uint32 // 0x28 + St_mtime uint32 // 0x2c + St_ctime uint32 // 0x30 + St_rdev uint32 // 0x34 + St_auditoraudit uint32 // 0x38 + St_useraudit uint32 // 0x3c + St_blksize uint32 // 0x40 + St_createtime uint32 // 0x44 + St_auditid [4]uint32 // 0x48 + St_res01 uint32 // 0x58 + Ft_ccsid uint16 // 0x5c + Ft_flags uint16 // 0x5e + St_res01a [2]uint32 // 0x60 + St_res02 uint32 // 0x68 + St_blocks uint32 // 0x6c + St_opaque [3]uint8 // 0x70 + St_visible uint8 // 0x73 + St_reftime uint32 // 0x74 + St_fid uint64 // 0x78 + St_filefmt uint8 // 0x80 + St_fspflag2 uint8 // 0x81 + St_res03 [2]uint8 // 0x82 + St_ctimemsec uint32 // 0x84 + St_seclabel [8]uint8 // 0x88 + St_res04 [4]uint8 // 0x90 + // end of version 1 + _ uint32 // 0x94 + St_atime64 uint64 // 0x98 + St_mtime64 uint64 // 0xa0 + St_ctime64 uint64 // 0xa8 + St_createtime64 uint64 // 0xb0 + St_reftime64 uint64 // 0xb8 + _ uint64 // 0xc0 + St_res05 [16]uint8 // 0xc8 + // end of version 2 +} + +type BpxFilestatus struct { + Oflag1 byte + Oflag2 byte + Oflag3 byte + Oflag4 byte +} + +type BpxMode struct { + Ftype byte + Mode1 byte + Mode2 byte + Mode3 byte +} + +// Thr attribute structure for extended attributes +type Bpxyatt_t struct { // DSECT BPXYATT + Att_id [4]uint8 + Att_version uint16 + Att_res01 [2]uint8 + Att_setflags1 uint8 + Att_setflags2 uint8 + Att_setflags3 uint8 + Att_setflags4 uint8 + Att_mode uint32 + Att_uid uint32 + Att_gid uint32 + Att_opaquemask [3]uint8 + Att_visblmaskres uint8 + Att_opaque [3]uint8 + Att_visibleres uint8 + Att_size_h uint32 + Att_size_l uint32 + Att_atime uint32 + Att_mtime uint32 + Att_auditoraudit uint32 + Att_useraudit uint32 + Att_ctime uint32 + Att_reftime uint32 + // end of version 1 + Att_filefmt uint8 + Att_res02 [3]uint8 + Att_filetag uint32 + Att_res03 [8]uint8 + // end of version 2 + Att_atime64 uint64 + Att_mtime64 uint64 + Att_ctime64 uint64 + Att_reftime64 uint64 + Att_seclabel [8]uint8 + Att_ver3res02 [8]uint8 + // end of version 3 +} + +func BpxOpen(name string, options *BpxFilestatus, mode *BpxMode) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(options) + parms[3] = unsafe.Pointer(mode) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4OPN) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxClose(fd int32) (rv int32, rc int32, rn int32) { + var parms [4]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&rv) + parms[2] = unsafe.Pointer(&rc) + parms[3] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CLO) + return rv, rc, rn +} + +func BpxFileFStat(fd int32, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [6]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&stat_sz) + parms[2] = unsafe.Pointer(st) + parms[3] = unsafe.Pointer(&rv) + parms[4] = unsafe.Pointer(&rc) + parms[5] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4FST) + return rv, rc, rn +} + +func BpxFileStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&stat_sz) + parms[3] = unsafe.Pointer(st) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4STA) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxFileLStat(name string, st *Bpxystat_t) (rv int32, rc int32, rn int32) { + if len(name) < 1024 { + var namebuf [1024]byte + sz := int32(copy(namebuf[:], name)) + A2e(namebuf[:sz]) + st.St_id = [4]uint8{0xe2, 0xe3, 0xc1, 0xe3} + st.St_version = 2 + stat_sz := uint32(unsafe.Sizeof(*st)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&stat_sz) + parms[3] = unsafe.Pointer(st) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4LST) + return rv, rc, rn + } + return -1, -1, -1 +} + +func BpxChattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + if len(path) >= 1024 { + return -1, -1, -1 + } + var namebuf [1024]byte + sz := int32(copy(namebuf[:], path)) + A2e(namebuf[:sz]) + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&attr_sz) + parms[3] = unsafe.Pointer(attr) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CHR) + return rv, rc, rn +} + +func BpxLchattr(path string, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + if len(path) >= 1024 { + return -1, -1, -1 + } + var namebuf [1024]byte + sz := int32(copy(namebuf[:], path)) + A2e(namebuf[:sz]) + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [7]unsafe.Pointer + parms[0] = unsafe.Pointer(&sz) + parms[1] = unsafe.Pointer(&namebuf[0]) + parms[2] = unsafe.Pointer(&attr_sz) + parms[3] = unsafe.Pointer(attr) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4LCR) + return rv, rc, rn +} + +func BpxFchattr(fd int32, attr *Bpxyatt_t) (rv int32, rc int32, rn int32) { + attr_sz := uint32(unsafe.Sizeof(*attr)) + var parms [6]unsafe.Pointer + parms[0] = unsafe.Pointer(&fd) + parms[1] = unsafe.Pointer(&attr_sz) + parms[2] = unsafe.Pointer(attr) + parms[3] = unsafe.Pointer(&rv) + parms[4] = unsafe.Pointer(&rc) + parms[5] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4FCR) + return rv, rc, rn +} + +func BpxCondTimedWait(sec uint32, nsec uint32, events uint32, secrem *uint32, nsecrem *uint32) (rv int32, rc int32, rn int32) { + var parms [8]unsafe.Pointer + parms[0] = unsafe.Pointer(&sec) + parms[1] = unsafe.Pointer(&nsec) + parms[2] = unsafe.Pointer(&events) + parms[3] = unsafe.Pointer(secrem) + parms[4] = unsafe.Pointer(nsecrem) + parms[5] = unsafe.Pointer(&rv) + parms[6] = unsafe.Pointer(&rc) + parms[7] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4CTW) + return rv, rc, rn +} +func BpxGetthent(in *Pgtha, outlen *uint32, out unsafe.Pointer) (rv int32, rc int32, rn int32) { + var parms [7]unsafe.Pointer + inlen := uint32(26) // nothing else will work. Go says Pgtha is 28-byte because of alignment, but Pgtha is "packed" and must be 26-byte + parms[0] = unsafe.Pointer(&inlen) + parms[1] = unsafe.Pointer(&in) + parms[2] = unsafe.Pointer(outlen) + parms[3] = unsafe.Pointer(&out) + parms[4] = unsafe.Pointer(&rv) + parms[5] = unsafe.Pointer(&rc) + parms[6] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4GTH) + return rv, rc, rn +} +func ZosJobname() (jobname string, err error) { + var pgtha Pgtha + pgtha.Pid = uint32(Getpid()) + pgtha.Accesspid = PGTHA_CURRENT + pgtha.Flag1 = PGTHA_PROCESS + var out [256]byte + var outlen uint32 + outlen = 256 + rv, rc, rn := BpxGetthent(&pgtha, &outlen, unsafe.Pointer(&out[0])) + if rv == 0 { + gthc := []byte{0x87, 0xa3, 0x88, 0x83} // 'gthc' in ebcdic + ix := bytes.Index(out[:], gthc) + if ix == -1 { + err = fmt.Errorf("BPX4GTH: gthc return data not found") + return + } + jn := out[ix+80 : ix+88] // we didn't declare Pgthc, but jobname is 8-byte at offset 80 + E2a(jn) + jobname = string(bytes.TrimRight(jn, " ")) + + } else { + err = fmt.Errorf("BPX4GTH: rc=%d errno=%d reason=code=0x%x", rv, rc, rn) + } + return +} +func Bpx4ptq(code int32, data string) (rv int32, rc int32, rn int32) { + var userdata [8]byte + var parms [5]unsafe.Pointer + copy(userdata[:], data+" ") + A2e(userdata[:]) + parms[0] = unsafe.Pointer(&code) + parms[1] = unsafe.Pointer(&userdata[0]) + parms[2] = unsafe.Pointer(&rv) + parms[3] = unsafe.Pointer(&rc) + parms[4] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4PTQ) + return rv, rc, rn +} + +const ( + PT_TRACE_ME = 0 // Debug this process + PT_READ_I = 1 // Read a full word + PT_READ_D = 2 // Read a full word + PT_READ_U = 3 // Read control info + PT_WRITE_I = 4 //Write a full word + PT_WRITE_D = 5 //Write a full word + PT_CONTINUE = 7 //Continue the process + PT_KILL = 8 //Terminate the process + PT_READ_GPR = 11 // Read GPR, CR, PSW + PT_READ_FPR = 12 // Read FPR + PT_READ_VR = 13 // Read VR + PT_WRITE_GPR = 14 // Write GPR, CR, PSW + PT_WRITE_FPR = 15 // Write FPR + PT_WRITE_VR = 16 // Write VR + PT_READ_BLOCK = 17 // Read storage + PT_WRITE_BLOCK = 19 // Write storage + PT_READ_GPRH = 20 // Read GPRH + PT_WRITE_GPRH = 21 // Write GPRH + PT_REGHSET = 22 // Read all GPRHs + PT_ATTACH = 30 // Attach to a process + PT_DETACH = 31 // Detach from a process + PT_REGSET = 32 // Read all GPRs + PT_REATTACH = 33 // Reattach to a process + PT_LDINFO = 34 // Read loader info + PT_MULTI = 35 // Multi process mode + PT_LD64INFO = 36 // RMODE64 Info Area + PT_BLOCKREQ = 40 // Block request + PT_THREAD_INFO = 60 // Read thread info + PT_THREAD_MODIFY = 61 + PT_THREAD_READ_FOCUS = 62 + PT_THREAD_WRITE_FOCUS = 63 + PT_THREAD_HOLD = 64 + PT_THREAD_SIGNAL = 65 + PT_EXPLAIN = 66 + PT_EVENTS = 67 + PT_THREAD_INFO_EXTENDED = 68 + PT_REATTACH2 = 71 + PT_CAPTURE = 72 + PT_UNCAPTURE = 73 + PT_GET_THREAD_TCB = 74 + PT_GET_ALET = 75 + PT_SWAPIN = 76 + PT_EXTENDED_EVENT = 98 + PT_RECOVER = 99 // Debug a program check + PT_GPR0 = 0 // General purpose register 0 + PT_GPR1 = 1 // General purpose register 1 + PT_GPR2 = 2 // General purpose register 2 + PT_GPR3 = 3 // General purpose register 3 + PT_GPR4 = 4 // General purpose register 4 + PT_GPR5 = 5 // General purpose register 5 + PT_GPR6 = 6 // General purpose register 6 + PT_GPR7 = 7 // General purpose register 7 + PT_GPR8 = 8 // General purpose register 8 + PT_GPR9 = 9 // General purpose register 9 + PT_GPR10 = 10 // General purpose register 10 + PT_GPR11 = 11 // General purpose register 11 + PT_GPR12 = 12 // General purpose register 12 + PT_GPR13 = 13 // General purpose register 13 + PT_GPR14 = 14 // General purpose register 14 + PT_GPR15 = 15 // General purpose register 15 + PT_FPR0 = 16 // Floating point register 0 + PT_FPR1 = 17 // Floating point register 1 + PT_FPR2 = 18 // Floating point register 2 + PT_FPR3 = 19 // Floating point register 3 + PT_FPR4 = 20 // Floating point register 4 + PT_FPR5 = 21 // Floating point register 5 + PT_FPR6 = 22 // Floating point register 6 + PT_FPR7 = 23 // Floating point register 7 + PT_FPR8 = 24 // Floating point register 8 + PT_FPR9 = 25 // Floating point register 9 + PT_FPR10 = 26 // Floating point register 10 + PT_FPR11 = 27 // Floating point register 11 + PT_FPR12 = 28 // Floating point register 12 + PT_FPR13 = 29 // Floating point register 13 + PT_FPR14 = 30 // Floating point register 14 + PT_FPR15 = 31 // Floating point register 15 + PT_FPC = 32 // Floating point control register + PT_PSW = 40 // PSW + PT_PSW0 = 40 // Left half of the PSW + PT_PSW1 = 41 // Right half of the PSW + PT_CR0 = 42 // Control register 0 + PT_CR1 = 43 // Control register 1 + PT_CR2 = 44 // Control register 2 + PT_CR3 = 45 // Control register 3 + PT_CR4 = 46 // Control register 4 + PT_CR5 = 47 // Control register 5 + PT_CR6 = 48 // Control register 6 + PT_CR7 = 49 // Control register 7 + PT_CR8 = 50 // Control register 8 + PT_CR9 = 51 // Control register 9 + PT_CR10 = 52 // Control register 10 + PT_CR11 = 53 // Control register 11 + PT_CR12 = 54 // Control register 12 + PT_CR13 = 55 // Control register 13 + PT_CR14 = 56 // Control register 14 + PT_CR15 = 57 // Control register 15 + PT_GPRH0 = 58 // GP High register 0 + PT_GPRH1 = 59 // GP High register 1 + PT_GPRH2 = 60 // GP High register 2 + PT_GPRH3 = 61 // GP High register 3 + PT_GPRH4 = 62 // GP High register 4 + PT_GPRH5 = 63 // GP High register 5 + PT_GPRH6 = 64 // GP High register 6 + PT_GPRH7 = 65 // GP High register 7 + PT_GPRH8 = 66 // GP High register 8 + PT_GPRH9 = 67 // GP High register 9 + PT_GPRH10 = 68 // GP High register 10 + PT_GPRH11 = 69 // GP High register 11 + PT_GPRH12 = 70 // GP High register 12 + PT_GPRH13 = 71 // GP High register 13 + PT_GPRH14 = 72 // GP High register 14 + PT_GPRH15 = 73 // GP High register 15 + PT_VR0 = 74 // Vector register 0 + PT_VR1 = 75 // Vector register 1 + PT_VR2 = 76 // Vector register 2 + PT_VR3 = 77 // Vector register 3 + PT_VR4 = 78 // Vector register 4 + PT_VR5 = 79 // Vector register 5 + PT_VR6 = 80 // Vector register 6 + PT_VR7 = 81 // Vector register 7 + PT_VR8 = 82 // Vector register 8 + PT_VR9 = 83 // Vector register 9 + PT_VR10 = 84 // Vector register 10 + PT_VR11 = 85 // Vector register 11 + PT_VR12 = 86 // Vector register 12 + PT_VR13 = 87 // Vector register 13 + PT_VR14 = 88 // Vector register 14 + PT_VR15 = 89 // Vector register 15 + PT_VR16 = 90 // Vector register 16 + PT_VR17 = 91 // Vector register 17 + PT_VR18 = 92 // Vector register 18 + PT_VR19 = 93 // Vector register 19 + PT_VR20 = 94 // Vector register 20 + PT_VR21 = 95 // Vector register 21 + PT_VR22 = 96 // Vector register 22 + PT_VR23 = 97 // Vector register 23 + PT_VR24 = 98 // Vector register 24 + PT_VR25 = 99 // Vector register 25 + PT_VR26 = 100 // Vector register 26 + PT_VR27 = 101 // Vector register 27 + PT_VR28 = 102 // Vector register 28 + PT_VR29 = 103 // Vector register 29 + PT_VR30 = 104 // Vector register 30 + PT_VR31 = 105 // Vector register 31 + PT_PSWG = 106 // PSWG + PT_PSWG0 = 106 // Bytes 0-3 + PT_PSWG1 = 107 // Bytes 4-7 + PT_PSWG2 = 108 // Bytes 8-11 (IA high word) + PT_PSWG3 = 109 // Bytes 12-15 (IA low word) +) + +func Bpx4ptr(request int32, pid int32, addr unsafe.Pointer, data unsafe.Pointer, buffer unsafe.Pointer) (rv int32, rc int32, rn int32) { + var parms [8]unsafe.Pointer + parms[0] = unsafe.Pointer(&request) + parms[1] = unsafe.Pointer(&pid) + parms[2] = unsafe.Pointer(&addr) + parms[3] = unsafe.Pointer(&data) + parms[4] = unsafe.Pointer(&buffer) + parms[5] = unsafe.Pointer(&rv) + parms[6] = unsafe.Pointer(&rc) + parms[7] = unsafe.Pointer(&rn) + bpxcall(parms[:], BPX4PTR) + return rv, rc, rn +} + +func copyU8(val uint8, dest []uint8) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU8Arr(src, dest []uint8) int { + if len(dest) < len(src) { + return 0 + } + for i, v := range src { + dest[i] = v + } + return len(src) +} + +func copyU16(val uint16, dest []uint16) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU32(val uint32, dest []uint32) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} + +func copyU32Arr(src, dest []uint32) int { + if len(dest) < len(src) { + return 0 + } + for i, v := range src { + dest[i] = v + } + return len(src) +} + +func copyU64(val uint64, dest []uint64) int { + if len(dest) < 1 { + return 0 + } + dest[0] = val + return 1 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.s new file mode 100644 index 0000000..4bd4a17 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/bpxsvc_zos.s @@ -0,0 +1,192 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "go_asm.h" +#include "textflag.h" + +// function to call USS assembly language services +// +// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bit64env.htm +// +// arg1 unsafe.Pointer array that ressembles an OS PLIST +// +// arg2 function offset as in +// doc: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_3.1.0/com.ibm.zos.v3r1.bpxb100/bpx2cr_List_of_offsets.htm +// +// func bpxcall(plist []unsafe.Pointer, bpx_offset int64) + +TEXT ·bpxcall(SB), NOSPLIT|NOFRAME, $0 + MOVD plist_base+0(FP), R1 // r1 points to plist + MOVD bpx_offset+24(FP), R2 // r2 offset to BPX vector table + MOVD R14, R7 // save r14 + MOVD R15, R8 // save r15 + MOVWZ 16(R0), R9 + MOVWZ 544(R9), R9 + MOVWZ 24(R9), R9 // call vector in r9 + ADD R2, R9 // add offset to vector table + MOVWZ (R9), R9 // r9 points to entry point + BYTE $0x0D // BL R14,R9 --> basr r14,r9 + BYTE $0xE9 // clobbers 0,1,14,15 + MOVD R8, R15 // restore 15 + JMP R7 // return via saved return address + +// func A2e(arr [] byte) +// code page conversion from 819 to 1047 +TEXT ·A2e(SB), NOSPLIT|NOFRAME, $0 + MOVD arg_base+0(FP), R2 // pointer to arry of characters + MOVD arg_len+8(FP), R3 // count + XOR R0, R0 + XOR R1, R1 + BYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2)) + + // ASCII -> EBCDIC conversion table: + BYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03 + BYTE $0x37; BYTE $0x2d; BYTE $0x2e; BYTE $0x2f + BYTE $0x16; BYTE $0x05; BYTE $0x15; BYTE $0x0b + BYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f + BYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13 + BYTE $0x3c; BYTE $0x3d; BYTE $0x32; BYTE $0x26 + BYTE $0x18; BYTE $0x19; BYTE $0x3f; BYTE $0x27 + BYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f + BYTE $0x40; BYTE $0x5a; BYTE $0x7f; BYTE $0x7b + BYTE $0x5b; BYTE $0x6c; BYTE $0x50; BYTE $0x7d + BYTE $0x4d; BYTE $0x5d; BYTE $0x5c; BYTE $0x4e + BYTE $0x6b; BYTE $0x60; BYTE $0x4b; BYTE $0x61 + BYTE $0xf0; BYTE $0xf1; BYTE $0xf2; BYTE $0xf3 + BYTE $0xf4; BYTE $0xf5; BYTE $0xf6; BYTE $0xf7 + BYTE $0xf8; BYTE $0xf9; BYTE $0x7a; BYTE $0x5e + BYTE $0x4c; BYTE $0x7e; BYTE $0x6e; BYTE $0x6f + BYTE $0x7c; BYTE $0xc1; BYTE $0xc2; BYTE $0xc3 + BYTE $0xc4; BYTE $0xc5; BYTE $0xc6; BYTE $0xc7 + BYTE $0xc8; BYTE $0xc9; BYTE $0xd1; BYTE $0xd2 + BYTE $0xd3; BYTE $0xd4; BYTE $0xd5; BYTE $0xd6 + BYTE $0xd7; BYTE $0xd8; BYTE $0xd9; BYTE $0xe2 + BYTE $0xe3; BYTE $0xe4; BYTE $0xe5; BYTE $0xe6 + BYTE $0xe7; BYTE $0xe8; BYTE $0xe9; BYTE $0xad + BYTE $0xe0; BYTE $0xbd; BYTE $0x5f; BYTE $0x6d + BYTE $0x79; BYTE $0x81; BYTE $0x82; BYTE $0x83 + BYTE $0x84; BYTE $0x85; BYTE $0x86; BYTE $0x87 + BYTE $0x88; BYTE $0x89; BYTE $0x91; BYTE $0x92 + BYTE $0x93; BYTE $0x94; BYTE $0x95; BYTE $0x96 + BYTE $0x97; BYTE $0x98; BYTE $0x99; BYTE $0xa2 + BYTE $0xa3; BYTE $0xa4; BYTE $0xa5; BYTE $0xa6 + BYTE $0xa7; BYTE $0xa8; BYTE $0xa9; BYTE $0xc0 + BYTE $0x4f; BYTE $0xd0; BYTE $0xa1; BYTE $0x07 + BYTE $0x20; BYTE $0x21; BYTE $0x22; BYTE $0x23 + BYTE $0x24; BYTE $0x25; BYTE $0x06; BYTE $0x17 + BYTE $0x28; BYTE $0x29; BYTE $0x2a; BYTE $0x2b + BYTE $0x2c; BYTE $0x09; BYTE $0x0a; BYTE $0x1b + BYTE $0x30; BYTE $0x31; BYTE $0x1a; BYTE $0x33 + BYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x08 + BYTE $0x38; BYTE $0x39; BYTE $0x3a; BYTE $0x3b + BYTE $0x04; BYTE $0x14; BYTE $0x3e; BYTE $0xff + BYTE $0x41; BYTE $0xaa; BYTE $0x4a; BYTE $0xb1 + BYTE $0x9f; BYTE $0xb2; BYTE $0x6a; BYTE $0xb5 + BYTE $0xbb; BYTE $0xb4; BYTE $0x9a; BYTE $0x8a + BYTE $0xb0; BYTE $0xca; BYTE $0xaf; BYTE $0xbc + BYTE $0x90; BYTE $0x8f; BYTE $0xea; BYTE $0xfa + BYTE $0xbe; BYTE $0xa0; BYTE $0xb6; BYTE $0xb3 + BYTE $0x9d; BYTE $0xda; BYTE $0x9b; BYTE $0x8b + BYTE $0xb7; BYTE $0xb8; BYTE $0xb9; BYTE $0xab + BYTE $0x64; BYTE $0x65; BYTE $0x62; BYTE $0x66 + BYTE $0x63; BYTE $0x67; BYTE $0x9e; BYTE $0x68 + BYTE $0x74; BYTE $0x71; BYTE $0x72; BYTE $0x73 + BYTE $0x78; BYTE $0x75; BYTE $0x76; BYTE $0x77 + BYTE $0xac; BYTE $0x69; BYTE $0xed; BYTE $0xee + BYTE $0xeb; BYTE $0xef; BYTE $0xec; BYTE $0xbf + BYTE $0x80; BYTE $0xfd; BYTE $0xfe; BYTE $0xfb + BYTE $0xfc; BYTE $0xba; BYTE $0xae; BYTE $0x59 + BYTE $0x44; BYTE $0x45; BYTE $0x42; BYTE $0x46 + BYTE $0x43; BYTE $0x47; BYTE $0x9c; BYTE $0x48 + BYTE $0x54; BYTE $0x51; BYTE $0x52; BYTE $0x53 + BYTE $0x58; BYTE $0x55; BYTE $0x56; BYTE $0x57 + BYTE $0x8c; BYTE $0x49; BYTE $0xcd; BYTE $0xce + BYTE $0xcb; BYTE $0xcf; BYTE $0xcc; BYTE $0xe1 + BYTE $0x70; BYTE $0xdd; BYTE $0xde; BYTE $0xdb + BYTE $0xdc; BYTE $0x8d; BYTE $0x8e; BYTE $0xdf + +retry: + WORD $0xB9931022 // TROO 2,2,b'0001' + BVS retry + RET + +// func e2a(arr [] byte) +// code page conversion from 1047 to 819 +TEXT ·E2a(SB), NOSPLIT|NOFRAME, $0 + MOVD arg_base+0(FP), R2 // pointer to arry of characters + MOVD arg_len+8(FP), R3 // count + XOR R0, R0 + XOR R1, R1 + BYTE $0xA7; BYTE $0x15; BYTE $0x00; BYTE $0x82 // BRAS 1,(2+(256/2)) + + // EBCDIC -> ASCII conversion table: + BYTE $0x00; BYTE $0x01; BYTE $0x02; BYTE $0x03 + BYTE $0x9c; BYTE $0x09; BYTE $0x86; BYTE $0x7f + BYTE $0x97; BYTE $0x8d; BYTE $0x8e; BYTE $0x0b + BYTE $0x0c; BYTE $0x0d; BYTE $0x0e; BYTE $0x0f + BYTE $0x10; BYTE $0x11; BYTE $0x12; BYTE $0x13 + BYTE $0x9d; BYTE $0x0a; BYTE $0x08; BYTE $0x87 + BYTE $0x18; BYTE $0x19; BYTE $0x92; BYTE $0x8f + BYTE $0x1c; BYTE $0x1d; BYTE $0x1e; BYTE $0x1f + BYTE $0x80; BYTE $0x81; BYTE $0x82; BYTE $0x83 + BYTE $0x84; BYTE $0x85; BYTE $0x17; BYTE $0x1b + BYTE $0x88; BYTE $0x89; BYTE $0x8a; BYTE $0x8b + BYTE $0x8c; BYTE $0x05; BYTE $0x06; BYTE $0x07 + BYTE $0x90; BYTE $0x91; BYTE $0x16; BYTE $0x93 + BYTE $0x94; BYTE $0x95; BYTE $0x96; BYTE $0x04 + BYTE $0x98; BYTE $0x99; BYTE $0x9a; BYTE $0x9b + BYTE $0x14; BYTE $0x15; BYTE $0x9e; BYTE $0x1a + BYTE $0x20; BYTE $0xa0; BYTE $0xe2; BYTE $0xe4 + BYTE $0xe0; BYTE $0xe1; BYTE $0xe3; BYTE $0xe5 + BYTE $0xe7; BYTE $0xf1; BYTE $0xa2; BYTE $0x2e + BYTE $0x3c; BYTE $0x28; BYTE $0x2b; BYTE $0x7c + BYTE $0x26; BYTE $0xe9; BYTE $0xea; BYTE $0xeb + BYTE $0xe8; BYTE $0xed; BYTE $0xee; BYTE $0xef + BYTE $0xec; BYTE $0xdf; BYTE $0x21; BYTE $0x24 + BYTE $0x2a; BYTE $0x29; BYTE $0x3b; BYTE $0x5e + BYTE $0x2d; BYTE $0x2f; BYTE $0xc2; BYTE $0xc4 + BYTE $0xc0; BYTE $0xc1; BYTE $0xc3; BYTE $0xc5 + BYTE $0xc7; BYTE $0xd1; BYTE $0xa6; BYTE $0x2c + BYTE $0x25; BYTE $0x5f; BYTE $0x3e; BYTE $0x3f + BYTE $0xf8; BYTE $0xc9; BYTE $0xca; BYTE $0xcb + BYTE $0xc8; BYTE $0xcd; BYTE $0xce; BYTE $0xcf + BYTE $0xcc; BYTE $0x60; BYTE $0x3a; BYTE $0x23 + BYTE $0x40; BYTE $0x27; BYTE $0x3d; BYTE $0x22 + BYTE $0xd8; BYTE $0x61; BYTE $0x62; BYTE $0x63 + BYTE $0x64; BYTE $0x65; BYTE $0x66; BYTE $0x67 + BYTE $0x68; BYTE $0x69; BYTE $0xab; BYTE $0xbb + BYTE $0xf0; BYTE $0xfd; BYTE $0xfe; BYTE $0xb1 + BYTE $0xb0; BYTE $0x6a; BYTE $0x6b; BYTE $0x6c + BYTE $0x6d; BYTE $0x6e; BYTE $0x6f; BYTE $0x70 + BYTE $0x71; BYTE $0x72; BYTE $0xaa; BYTE $0xba + BYTE $0xe6; BYTE $0xb8; BYTE $0xc6; BYTE $0xa4 + BYTE $0xb5; BYTE $0x7e; BYTE $0x73; BYTE $0x74 + BYTE $0x75; BYTE $0x76; BYTE $0x77; BYTE $0x78 + BYTE $0x79; BYTE $0x7a; BYTE $0xa1; BYTE $0xbf + BYTE $0xd0; BYTE $0x5b; BYTE $0xde; BYTE $0xae + BYTE $0xac; BYTE $0xa3; BYTE $0xa5; BYTE $0xb7 + BYTE $0xa9; BYTE $0xa7; BYTE $0xb6; BYTE $0xbc + BYTE $0xbd; BYTE $0xbe; BYTE $0xdd; BYTE $0xa8 + BYTE $0xaf; BYTE $0x5d; BYTE $0xb4; BYTE $0xd7 + BYTE $0x7b; BYTE $0x41; BYTE $0x42; BYTE $0x43 + BYTE $0x44; BYTE $0x45; BYTE $0x46; BYTE $0x47 + BYTE $0x48; BYTE $0x49; BYTE $0xad; BYTE $0xf4 + BYTE $0xf6; BYTE $0xf2; BYTE $0xf3; BYTE $0xf5 + BYTE $0x7d; BYTE $0x4a; BYTE $0x4b; BYTE $0x4c + BYTE $0x4d; BYTE $0x4e; BYTE $0x4f; BYTE $0x50 + BYTE $0x51; BYTE $0x52; BYTE $0xb9; BYTE $0xfb + BYTE $0xfc; BYTE $0xf9; BYTE $0xfa; BYTE $0xff + BYTE $0x5c; BYTE $0xf7; BYTE $0x53; BYTE $0x54 + BYTE $0x55; BYTE $0x56; BYTE $0x57; BYTE $0x58 + BYTE $0x59; BYTE $0x5a; BYTE $0xb2; BYTE $0xd4 + BYTE $0xd6; BYTE $0xd2; BYTE $0xd3; BYTE $0xd5 + BYTE $0x30; BYTE $0x31; BYTE $0x32; BYTE $0x33 + BYTE $0x34; BYTE $0x35; BYTE $0x36; BYTE $0x37 + BYTE $0x38; BYTE $0x39; BYTE $0xb3; BYTE $0xdb + BYTE $0xdc; BYTE $0xd9; BYTE $0xda; BYTE $0x9f + +retry: + WORD $0xB9931022 // TROO 2,2,b'0001' + BVS retry + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/cap_freebsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/cap_freebsd.go new file mode 100644 index 0000000..a086578 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -0,0 +1,195 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build freebsd + +package unix + +import ( + "errors" + "fmt" +) + +// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c + +const ( + // This is the version of CapRights this package understands. See C implementation for parallels. + capRightsGoVersion = CAP_RIGHTS_VERSION_00 + capArSizeMin = CAP_RIGHTS_VERSION_00 + 2 + capArSizeMax = capRightsGoVersion + 2 +) + +var ( + bit2idx = []int{ + -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + } +) + +func capidxbit(right uint64) int { + return int((right >> 57) & 0x1f) +} + +func rightToIndex(right uint64) (int, error) { + idx := capidxbit(right) + if idx < 0 || idx >= len(bit2idx) { + return -2, fmt.Errorf("index for right 0x%x out of range", right) + } + return bit2idx[idx], nil +} + +func caprver(right uint64) int { + return int(right >> 62) +} + +func capver(rights *CapRights) int { + return caprver(rights.Rights[0]) +} + +func caparsize(rights *CapRights) int { + return capver(rights) + 2 +} + +// CapRightsSet sets the permissions in setrights in rights. +func CapRightsSet(rights *CapRights, setrights []uint64) error { + // This is essentially a copy of cap_rights_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errors.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch") + } + rights.Rights[i] |= right + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsClear clears the permissions in clearrights from rights. +func CapRightsClear(rights *CapRights, clearrights []uint64) error { + // This is essentially a copy of cap_rights_vclear() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errors.New("bad rights size") + } + + for _, right := range clearrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch") + } + rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF) + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errors.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsIsSet checks whether all the permissions in setrights are present in rights. +func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) { + // This is essentially a copy of cap_rights_is_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return false, fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return false, errors.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return false, errors.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return false, err + } + if i >= n { + return false, errors.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return false, errors.New("index mismatch") + } + if (rights.Rights[i] & right) != right { + return false, nil + } + } + + return true, nil +} + +func capright(idx uint64, bit uint64) uint64 { + return ((1 << (57 + idx)) | bit) +} + +// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights. +// See man cap_rights_init(3) and rights(4). +func CapRightsInit(rights []uint64) (*CapRights, error) { + var r CapRights + r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0) + r.Rights[1] = capright(1, 0) + + err := CapRightsSet(&r, rights) + if err != nil { + return nil, err + } + return &r, nil +} + +// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights. +// The capability rights on fd can never be increased by CapRightsLimit. +// See man cap_rights_limit(2) and rights(4). +func CapRightsLimit(fd uintptr, rights *CapRights) error { + return capRightsLimit(int(fd), rights) +} + +// CapRightsGet returns a CapRights structure containing the operations permitted on fd. +// See man cap_rights_get(3) and rights(4). +func CapRightsGet(fd uintptr) (*CapRights, error) { + r, err := CapRightsInit(nil) + if err != nil { + return nil, err + } + err = capRightsGet(capRightsGoVersion, int(fd), r) + if err != nil { + return nil, err + } + return r, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/constants.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/constants.go new file mode 100644 index 0000000..6fb7cb7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/constants.go @@ -0,0 +1,13 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +const ( + R_OK = 0x4 + W_OK = 0x2 + X_OK = 0x1 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc.go new file mode 100644 index 0000000..d785134 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc.go @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc + +// Functions to access/create device major and minor numbers matching the +// encoding used by AIX. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0xffff) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return uint64(((major) << 16) | (minor)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go new file mode 100644 index 0000000..623a5e6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go @@ -0,0 +1,28 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc64 + +// Functions to access/create device major and minor numbers matching the +// encoding used AIX. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x3fffffff00000000) >> 32) +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + return uint32((dev & 0x00000000ffffffff) >> 0) +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + var DEVNO64 uint64 + DEVNO64 = 0x8000000000000000 + return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_darwin.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_darwin.go new file mode 100644 index 0000000..8d1dc0f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Darwin's sys/types.h header. + +package unix + +// Major returns the major component of a Darwin device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 24) & 0xff) +} + +// Minor returns the minor component of a Darwin device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffffff) +} + +// Mkdev returns a Darwin device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 24) | uint64(minor) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_dragonfly.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_dragonfly.go new file mode 100644 index 0000000..8502f20 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_dragonfly.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in Dragonfly's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a DragonFlyBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a DragonFlyBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a DragonFlyBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_freebsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_freebsd.go new file mode 100644 index 0000000..eba3b4b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_freebsd.go @@ -0,0 +1,30 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in FreeBSD's sys/types.h header. +// +// The information below is extracted and adapted from sys/types.h: +// +// Minor gives a cookie instead of an index since in order to avoid changing the +// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for +// devices that don't use them. + +package unix + +// Major returns the major component of a FreeBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 8) & 0xff) +} + +// Minor returns the minor component of a FreeBSD device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0xffff00ff) +} + +// Mkdev returns a FreeBSD device number generated from the given major and +// minor components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 8) | uint64(minor) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_linux.go new file mode 100644 index 0000000..d165d6f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_linux.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + major := uint32((dev & 0x00000000000fff00) >> 8) + major |= uint32((dev & 0xfffff00000000000) >> 32) + return major +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x00000000000000ff) >> 0) + minor |= uint32((dev & 0x00000ffffff00000) >> 12) + return minor +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) & 0x00000fff) << 8 + dev |= (uint64(major) & 0xfffff000) << 32 + dev |= (uint64(minor) & 0x000000ff) << 0 + dev |= (uint64(minor) & 0xffffff00) << 12 + return dev +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_netbsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_netbsd.go new file mode 100644 index 0000000..b4a203d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_netbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in NetBSD's sys/types.h header. + +package unix + +// Major returns the major component of a NetBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x000fff00) >> 8) +} + +// Minor returns the minor component of a NetBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xfff00000) >> 12) + return minor +} + +// Mkdev returns a NetBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x000fff00 + dev |= (uint64(minor) << 12) & 0xfff00000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_openbsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_openbsd.go new file mode 100644 index 0000000..f3430c4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_openbsd.go @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used in OpenBSD's sys/types.h header. + +package unix + +// Major returns the major component of an OpenBSD device number. +func Major(dev uint64) uint32 { + return uint32((dev & 0x0000ff00) >> 8) +} + +// Minor returns the minor component of an OpenBSD device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x000000ff) >> 0) + minor |= uint32((dev & 0xffff0000) >> 8) + return minor +} + +// Mkdev returns an OpenBSD device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := (uint64(major) << 8) & 0x0000ff00 + dev |= (uint64(minor) << 8) & 0xffff0000 + dev |= (uint64(minor) << 0) & 0x000000ff + return dev +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_zos.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_zos.go new file mode 100644 index 0000000..bb6a64f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dev_zos.go @@ -0,0 +1,28 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Functions to access/create device major and minor numbers matching the +// encoding used by z/OS. +// +// The information below is extracted and adapted from macros. + +package unix + +// Major returns the major component of a z/OS device number. +func Major(dev uint64) uint32 { + return uint32((dev >> 16) & 0x0000FFFF) +} + +// Minor returns the minor component of a z/OS device number. +func Minor(dev uint64) uint32 { + return uint32(dev & 0x0000FFFF) +} + +// Mkdev returns a z/OS device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + return (uint64(major) << 16) | uint64(minor) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dirent.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dirent.go new file mode 100644 index 0000000..1ebf117 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/dirent.go @@ -0,0 +1,102 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import "unsafe" + +// readInt returns the size-bytes unsigned integer in native byte order at offset off. +func readInt(b []byte, off, size uintptr) (u uint64, ok bool) { + if len(b) < int(off+size) { + return 0, false + } + if isBigEndian { + return readIntBE(b[off:], size), true + } + return readIntLE(b[off:], size), true +} + +func readIntBE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[1]) | uint64(b[0])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +func readIntLE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +// ParseDirent parses up to max directory entries in buf, +// appending the names to names. It returns the number of +// bytes consumed from buf, the number of entries added +// to names, and the new names slice. +func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { + origlen := len(buf) + count = 0 + for max != 0 && len(buf) > 0 { + reclen, ok := direntReclen(buf) + if !ok || reclen > uint64(len(buf)) { + return origlen, count, names + } + rec := buf[:reclen] + buf = buf[reclen:] + ino, ok := direntIno(rec) + if !ok { + break + } + if ino == 0 { // File absent in directory. + continue + } + const namoff = uint64(unsafe.Offsetof(Dirent{}.Name)) + namlen, ok := direntNamlen(rec) + if !ok || namoff+namlen > uint64(len(rec)) { + break + } + name := rec[namoff : namoff+namlen] + for i, c := range name { + if c == 0 { + name = name[:i] + break + } + } + // Check for useless names before allocating a string. + if string(name) == "." || string(name) == ".." { + continue + } + max-- + count++ + names = append(names, string(name)) + } + return origlen - len(buf), count, names +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_big.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_big.go new file mode 100644 index 0000000..1095fd3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_big.go @@ -0,0 +1,9 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64 + +package unix + +const isBigEndian = true diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_little.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_little.go new file mode 100644 index 0000000..b9f0e27 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/endian_little.go @@ -0,0 +1,9 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh + +package unix + +const isBigEndian = false diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/env_unix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/env_unix.go new file mode 100644 index 0000000..a96da71 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/env_unix.go @@ -0,0 +1,31 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// Unix environment variables. + +package unix + +import "syscall" + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl.go new file mode 100644 index 0000000..6200876 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl.go @@ -0,0 +1,36 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build dragonfly || freebsd || linux || netbsd + +package unix + +import "unsafe" + +// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux +// systems by fcntl_linux_32bit.go to be SYS_FCNTL64. +var fcntl64Syscall uintptr = SYS_FCNTL + +func fcntl(fd int, cmd, arg int) (int, error) { + valptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg)) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk))) + if errno == 0 { + return nil + } + return errno +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_darwin.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_darwin.go new file mode 100644 index 0000000..a9911c7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_darwin.go @@ -0,0 +1,24 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "unsafe" + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) + return err +} + +// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command. +func FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error { + _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore)))) + return err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go new file mode 100644 index 0000000..13b4acd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go @@ -0,0 +1,13 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc) + +package unix + +func init() { + // On 32-bit Linux systems, the fcntl syscall that matches Go's + // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. + fcntl64Syscall = SYS_FCNTL64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fdset.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fdset.go new file mode 100644 index 0000000..62ed126 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/fdset.go @@ -0,0 +1,27 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +// Set adds fd to the set fds. +func (fds *FdSet) Set(fd int) { + fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS)) +} + +// Clear removes fd from the set fds. +func (fds *FdSet) Clear(fd int) { + fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS)) +} + +// IsSet returns whether fd is in the set fds. +func (fds *FdSet) IsSet(fd int) bool { + return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0 +} + +// Zero clears the set fds. +func (fds *FdSet) Zero() { + clear(fds.Bits[:]) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo.go new file mode 100644 index 0000000..aca5721 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo.go @@ -0,0 +1,59 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo && !aix && !hurd + +package unix + +import "syscall" + +// We can't use the gc-syntax .s files for gccgo. On the plus side +// much of the functionality can be written directly in Go. + +func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr) + +func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr) + +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { + syscall.Entersyscall() + r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + syscall.Exitsyscall() + return r, 0 +} + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) { + syscall.Entersyscall() + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9) + syscall.Exitsyscall() + return r, 0, syscall.Errno(errno) +} + +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) { + r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + return r, 0 +} + +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0) + return r, 0, syscall.Errno(errno) +} + +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) + return r, 0, syscall.Errno(errno) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_c.c b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_c.c new file mode 100644 index 0000000..d468b7b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_c.c @@ -0,0 +1,44 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo && !aix && !hurd + +#include +#include +#include + +#define _STRINGIFY2_(x) #x +#define _STRINGIFY_(x) _STRINGIFY2_(x) +#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__) + +// Call syscall from C code because the gccgo support for calling from +// Go to C does not support varargs functions. + +struct ret { + uintptr_t r; + uintptr_t err; +}; + +struct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) + __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscall"); + +struct ret +gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) +{ + struct ret r; + + errno = 0; + r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); + r.err = errno; + return r; +} + +uintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) + __asm__(GOSYM_PREFIX GOPKGPATH ".realSyscallNoError"); + +uintptr_t +gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) +{ + return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go new file mode 100644 index 0000000..972d61b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go @@ -0,0 +1,20 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build gccgo && linux && amd64 + +package unix + +import "syscall" + +//extern gettimeofday +func realGettimeofday(*Timeval, *byte) int32 + +func gettimeofday(tv *Timeval) (err syscall.Errno) { + r := realGettimeofday(tv, nil) + if r < 0 { + return syscall.GetErrno() + } + return 0 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ifreq_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ifreq_linux.go new file mode 100644 index 0000000..309f5a2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -0,0 +1,139 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux + +package unix + +import ( + "unsafe" +) + +// Helpers for dealing with ifreq since it contains a union and thus requires a +// lot of unsafe.Pointer casts to use properly. + +// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq +// contains an interface name and a union of arbitrary data which can be +// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq +// function. +// +// Use the Name method to access the stored interface name. The union data +// fields can be get and set using the following methods: +// - Uint16/SetUint16: flags +// - Uint32/SetUint32: ifindex, metric, mtu +type Ifreq struct{ raw ifreq } + +// NewIfreq creates an Ifreq with the input network interface name after +// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required) +// bytes. +func NewIfreq(name string) (*Ifreq, error) { + // Leave room for terminating NULL byte. + if len(name) >= IFNAMSIZ { + return nil, EINVAL + } + + var ifr ifreq + copy(ifr.Ifrn[:], name) + + return &Ifreq{raw: ifr}, nil +} + +// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc. + +// Name returns the interface name associated with the Ifreq. +func (ifr *Ifreq) Name() string { + return ByteSliceToString(ifr.raw.Ifrn[:]) +} + +// According to netdevice(7), only AF_INET addresses are returned for numerous +// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port +// field and other data is always empty. + +// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C +// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not +// AF_INET, an error is returned. +func (ifr *Ifreq) Inet4Addr() ([]byte, error) { + raw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0])) + if raw.Family != AF_INET { + // Cannot safely interpret raw.Addr bytes as an IPv4 address. + return nil, EINVAL + } + + return raw.Addr[:], nil +} + +// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an +// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length +// or an error will be returned. +func (ifr *Ifreq) SetInet4Addr(v []byte) error { + if len(v) != 4 { + return EINVAL + } + + var addr [4]byte + copy(addr[:], v) + + ifr.clear() + *(*RawSockaddrInet4)( + unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]), + ) = RawSockaddrInet4{ + // Always set IP family as ioctls would require it anyway. + Family: AF_INET, + Addr: addr, + } + + return nil +} + +// Uint16 returns the Ifreq union data as a C short/Go uint16 value. +func (ifr *Ifreq) Uint16() uint16 { + return *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) +} + +// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint16(v uint16) { + ifr.clear() + *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v +} + +// Uint32 returns the Ifreq union data as a C int/Go uint32 value. +func (ifr *Ifreq) Uint32() uint32 { + return *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) +} + +// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data. +func (ifr *Ifreq) SetUint32(v uint32) { + ifr.clear() + *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v +} + +// clear zeroes the ifreq's union field to prevent trailing garbage data from +// being sent to the kernel if an ifreq is reused. +func (ifr *Ifreq) clear() { + clear(ifr.raw.Ifru[:]) +} + +// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as +// IoctlGetEthtoolDrvinfo which use these APIs under the hood. + +// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData, +// use the Ifreq.withData method. +type ifreqData struct { + name [IFNAMSIZ]byte + // A type separate from ifreq is required in order to comply with the + // unsafe.Pointer rules since the "pointer-ness" of data would not be + // preserved if it were cast into the byte array of a raw ifreq. + data unsafe.Pointer + // Pad to the same size as ifreq. + _ [len(ifreq{}.Ifru) - SizeofPtr]byte +} + +// withData produces an ifreqData with the pointer p set for ioctls which require +// arbitrary pointer data. +func (ifr Ifreq) withData(p unsafe.Pointer) ifreqData { + return ifreqData{ + name: ifr.raw.Ifrn, + data: p, + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_linux.go new file mode 100644 index 0000000..7ca4fa1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -0,0 +1,334 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "unsafe" + +// IoctlRetInt performs an ioctl operation specified by req on a device +// associated with opened file descriptor fd, and returns a non-negative +// integer that is returned by the ioctl syscall. +func IoctlRetInt(fd int, req uint) (int, error) { + ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0) + if err != 0 { + return 0, err + } + return int(ret), nil +} + +func IoctlGetUint32(fd int, req uint) (uint32, error) { + var value uint32 + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetRTCTime(fd int) (*RTCTime, error) { + var value RTCTime + err := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlSetRTCTime(fd int, value *RTCTime) error { + return ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value)) +} + +func IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) { + var value RTCWkAlrm + err := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error { + return ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value)) +} + +// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network +// device specified by ifname. +func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) + return &value, err +} + +// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC +// association for the network device specified by ifname. +func IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) + return &value, err +} + +// IoctlGetHwTstamp retrieves the hardware timestamping configuration +// for the network device specified by ifname. +func IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := HwTstampConfig{} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd) + return &value, err +} + +// IoctlSetHwTstamp updates the hardware timestamping configuration for +// the network device specified by ifname. +func IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error { + ifr, err := NewIfreq(ifname) + if err != nil { + return err + } + ifrd := ifr.withData(unsafe.Pointer(cfg)) + return ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd) +} + +// FdToClockID derives the clock ID from the file descriptor number +// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is +// suitable for system calls like ClockGettime. +func FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) } + +// IoctlPtpClockGetcaps returns the description of a given PTP device. +func IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) { + var value PtpClockCaps + err := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetPrecise returns a description of the clock +// offset compared to the system clock. +func IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) { + var value PtpSysOffsetPrecise + err := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetExtended returns an extended description of the +// clock offset compared to the system clock. The samples parameter +// specifies the desired number of measurements. +func IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) { + value := PtpSysOffsetExtended{Samples: uint32(samples)} + err := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinGetfunc returns the configuration of the specified +// I/O pin on given PTP device. +func IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) { + value := PtpPinDesc{Index: uint32(index)} + err := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinSetfunc updates configuration of the specified PTP +// I/O pin. +func IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error { + return ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd)) +} + +// IoctlPtpPeroutRequest configures the periodic output mode of the +// PTP I/O pins. +func IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error { + return ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r)) +} + +// IoctlPtpExttsRequest configures the external timestamping mode +// of the PTP I/O pins. +func IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error { + return ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r)) +} + +// IoctlGetWatchdogInfo fetches information about a watchdog device from the +// Linux watchdog API. For more information, see: +// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. +func IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) { + var value WatchdogInfo + err := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For +// more information, see: +// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. +func IoctlWatchdogKeepalive(fd int) error { + // arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr. + return ioctl(fd, WDIOC_KEEPALIVE, 0) +} + +// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the +// range of data conveyed in value to the file associated with the file +// descriptor destFd. See the ioctl_ficlonerange(2) man page for details. +func IoctlFileCloneRange(destFd int, value *FileCloneRange) error { + return ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value)) +} + +// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file +// associated with the file description srcFd to the file associated with the +// file descriptor destFd. See the ioctl_ficlone(2) man page for details. +func IoctlFileClone(destFd, srcFd int) error { + return ioctl(destFd, FICLONE, uintptr(srcFd)) +} + +type FileDedupeRange struct { + Src_offset uint64 + Src_length uint64 + Reserved1 uint16 + Reserved2 uint32 + Info []FileDedupeRangeInfo +} + +type FileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + +// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the +// range of data conveyed in value from the file associated with the file +// descriptor srcFd to the value.Info destinations. See the +// ioctl_fideduperange(2) man page for details. +func IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error { + buf := make([]byte, SizeofRawFileDedupeRange+ + len(value.Info)*SizeofRawFileDedupeRangeInfo) + rawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0])) + rawrange.Src_offset = value.Src_offset + rawrange.Src_length = value.Src_length + rawrange.Dest_count = uint16(len(value.Info)) + rawrange.Reserved1 = value.Reserved1 + rawrange.Reserved2 = value.Reserved2 + + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + rawinfo.Dest_fd = value.Info[i].Dest_fd + rawinfo.Dest_offset = value.Info[i].Dest_offset + rawinfo.Bytes_deduped = value.Info[i].Bytes_deduped + rawinfo.Status = value.Info[i].Status + rawinfo.Reserved = value.Info[i].Reserved + } + + err := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0])) + + // Output + for i := range value.Info { + rawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer( + uintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) + + uintptr(i*SizeofRawFileDedupeRangeInfo))) + value.Info[i].Dest_fd = rawinfo.Dest_fd + value.Info[i].Dest_offset = rawinfo.Dest_offset + value.Info[i].Bytes_deduped = rawinfo.Bytes_deduped + value.Info[i].Status = rawinfo.Status + value.Info[i].Reserved = rawinfo.Reserved + } + + return err +} + +func IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error { + return ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value)) +} + +func IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) { + var value HIDRawDevInfo + err := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlHIDGetRawName(fd int) (string, error) { + var value [_HIDIOCGRAWNAME_LEN]byte + err := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0])) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawPhys(fd int) (string, error) { + var value [_HIDIOCGRAWPHYS_LEN]byte + err := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0])) + return ByteSliceToString(value[:]), err +} + +func IoctlHIDGetRawUniq(fd int) (string, error) { + var value [_HIDIOCGRAWUNIQ_LEN]byte + err := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0])) + return ByteSliceToString(value[:]), err +} + +// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or +// output. See the netdevice(7) man page for details. +func IoctlIfreq(fd int, req uint, value *Ifreq) error { + // It is possible we will add more fields to *Ifreq itself later to prevent + // misuse, so pass the raw *ifreq directly. + return ioctlPtr(fd, req, unsafe.Pointer(&value.raw)) +} + +// TODO(mdlayher): export if and when IfreqData is exported. + +// ioctlIfreqData performs an ioctl using an ifreqData structure for input +// and/or output. See the netdevice(7) man page for details. +func ioctlIfreqData(fd int, req uint, value *ifreqData) error { + // The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are + // identical so pass *IfreqData directly. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an +// existing KCM socket, returning a structure containing the file descriptor of +// the new socket. +func IoctlKCMClone(fd int) (*KCMClone, error) { + var info KCMClone + if err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil { + return nil, err + } + + return &info, nil +} + +// IoctlKCMAttach attaches a TCP socket and associated BPF program file +// descriptor to a multiplexor. +func IoctlKCMAttach(fd int, info KCMAttach) error { + return ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info)) +} + +// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor. +func IoctlKCMUnattach(fd int, info KCMUnattach) error { + return ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info)) +} + +// IoctlLoopGetStatus64 gets the status of the loop device associated with the +// file descriptor fd using the LOOP_GET_STATUS64 operation. +func IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) { + var value LoopInfo64 + if err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil { + return nil, err + } + return &value, nil +} + +// IoctlLoopSetStatus64 sets the status of the loop device associated with the +// file descriptor fd using the LOOP_SET_STATUS64 operation. +func IoctlLoopSetStatus64(fd int, value *LoopInfo64) error { + return ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value)) +} + +// IoctlLoopConfigure configures all loop device parameters in a single step +func IoctlLoopConfigure(fd int, value *LoopConfig) error { + return ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_signed.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_signed.go new file mode 100644 index 0000000..be0f3fb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_signed.go @@ -0,0 +1,74 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || solaris + +package unix + +import "unsafe" + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req int, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req int, value int) error { + v := int32(value) + return ioctlPtr(fd, req, unsafe.Pointer(&v)) +} + +// IoctlSetString performs an ioctl operation which sets a string value +// on fd, using the specified request number. +func IoctlSetString(fd int, req int, value string) error { + bs := append([]byte(value), 0) + return ioctlPtr(fd, req, unsafe.Pointer(&bs[0])) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req int, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req int, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req int) (int, error) { + var value int + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetWinsize(fd int, req int) (*Winsize, error) { + var value Winsize + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlGetTermios(fd int, req int) (*Termios, error) { + var value Termios + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_unsigned.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_unsigned.go new file mode 100644 index 0000000..f0c2821 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_unsigned.go @@ -0,0 +1,74 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd + +package unix + +import "unsafe" + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req uint, value int) error { + v := int32(value) + return ioctlPtr(fd, req, unsafe.Pointer(&v)) +} + +// IoctlSetString performs an ioctl operation which sets a string value +// on fd, using the specified request number. +func IoctlSetString(fd int, req uint, value string) error { + bs := append([]byte(value), 0) + return ioctlPtr(fd, req, unsafe.Pointer(&bs[0])) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req uint, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value will usually be TCSETA or TIOCSETA. +func IoctlSetTermios(fd int, req uint, value *Termios) error { + // TODO: if we get the chance, remove the req parameter. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_zos.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_zos.go new file mode 100644 index 0000000..c8b2a75 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ioctl_zos.go @@ -0,0 +1,71 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +package unix + +import ( + "runtime" + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req int, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. +// +// To change fd's window size, the req argument should be TIOCSWINSZ. +func IoctlSetWinsize(fd int, req int, value *Winsize) error { + // TODO: if we get the chance, remove the req parameter and + // hardcode TIOCSWINSZ. + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +// IoctlSetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCSETS, TCSETSW, or TCSETSF +func IoctlSetTermios(fd int, req int, value *Termios) error { + if (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) { + return ENOSYS + } + err := Tcsetattr(fd, int(req), value) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req int) (int, error) { + var value int + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return value, err +} + +func IoctlGetWinsize(fd int, req int) (*Winsize, error) { + var value Winsize + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlGetTermios performs an ioctl on fd with a *Termios. +// +// The req value is expected to be TCGETS +func IoctlGetTermios(fd int, req int) (*Termios, error) { + var value Termios + if req != TCGETS { + return &value, ENOSYS + } + err := Tcgetattr(fd, &value) + return &value, err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkall.sh b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkall.sh new file mode 100644 index 0000000..d0ed611 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkall.sh @@ -0,0 +1,250 @@ +#!/usr/bin/env bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# This script runs or (given -n) prints suggested commands to generate files for +# the Architecture/OS specified by the GOARCH and GOOS environment variables. +# See README.md for more information about how the build system works. + +GOOSARCH="${GOOS}_${GOARCH}" + +# defaults +mksyscall="go run mksyscall.go" +mkerrors="./mkerrors.sh" +zerrors="zerrors_$GOOSARCH.go" +mksysctl="" +zsysctl="zsysctl_$GOOSARCH.go" +mksysnum= +mktypes= +mkasm= +run="sh" +cmd="" + +case "$1" in +-syscalls) + for i in zsyscall*go + do + # Run the command line that appears in the first line + # of the generated file to regenerate it. + sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i + rm _$i + done + exit 0 + ;; +-n) + run="cat" + cmd="echo" + shift +esac + +case "$#" in +0) + ;; +*) + echo 'usage: mkall.sh [-n]' 1>&2 + exit 2 +esac + +if [[ "$GOOS" = "linux" ]]; then + # Use the Docker-based build system + # Files generated through docker (use $cmd so you can Ctl-C the build or run) + set -e + $cmd docker build --tag generate:$GOOS $GOOS + $cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")/.." && pwd):/build generate:$GOOS + exit +fi + +GOOSARCH_in=syscall_$GOOSARCH.go +case "$GOOSARCH" in +_* | *_ | _) + echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 + exit 1 + ;; +aix_ppc) + mkerrors="$mkerrors -maix32" + mksyscall="go run mksyscall_aix_ppc.go -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +aix_ppc64) + mkerrors="$mkerrors -maix64" + mksyscall="go run mksyscall_aix_ppc64.go -aix" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +darwin_amd64) + mkerrors="$mkerrors -m64" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm.go" + ;; +darwin_arm64) + mkerrors="$mkerrors -m64" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + mkasm="go run mkasm.go" + ;; +dragonfly_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -dragonfly" + mksysnum="go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_amd64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +freebsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -arm" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_arm64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_riscv64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +netbsd_386) + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32 -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_amd64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +netbsd_arm) + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -netbsd -arm" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +netbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_386) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m32" + mksyscall="go run mksyscall.go -l32 -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_amd64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +openbsd_arm) + mkasm="go run mkasm.go" + mkerrors="$mkerrors" + mksyscall="go run mksyscall.go -l32 -openbsd -arm -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_arm64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_mips64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_ppc64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_riscv64) + mkasm="go run mkasm.go" + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd -libc" + mksysctl="go run mksysctl_openbsd.go" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +solaris_amd64) + mksyscall="go run mksyscall_solaris.go" + mkerrors="$mkerrors -m64" + mksysnum= + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +illumos_amd64) + mksyscall="go run mksyscall_solaris.go" + mkerrors= + mksysnum= + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; +*) + echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 + exit 1 + ;; +esac + +( + if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi + case "$GOOS" in + *) + syscall_goos="syscall_$GOOS.go" + case "$GOOS" in + darwin | dragonfly | freebsd | netbsd | openbsd) + syscall_goos="syscall_bsd.go $syscall_goos" + ;; + esac + if [ -n "$mksyscall" ]; then + if [ "$GOOSARCH" == "aix_ppc64" ]; then + # aix/ppc64 script generates files instead of writing to stdin. + echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; + elif [ "$GOOS" == "illumos" ]; then + # illumos code generation requires a --illumos switch + echo "$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go"; + # illumos implies solaris, so solaris code generation is also required + echo "$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go"; + else + echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; + fi + fi + esac + if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi + if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi + if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi + if [ -n "$mkasm" ]; then echo "$mkasm $GOOS $GOARCH"; fi +) | $run diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkerrors.sh b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkerrors.sh new file mode 100644 index 0000000..fd39be4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -0,0 +1,811 @@ +#!/usr/bin/env bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# Generate Go code listing errors and other #defined constant +# values (ENAMETOOLONG etc.), by asking the preprocessor +# about the definitions. + +unset LANG +export LC_ALL=C +export LC_CTYPE=C + +if test -z "$GOARCH" -o -z "$GOOS"; then + echo 1>&2 "GOARCH or GOOS not defined in environment" + exit 1 +fi + +# Check that we are using the new build system if we should +if [[ "$GOOS" = "linux" ]] && [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then + echo 1>&2 "In the Docker based build system, mkerrors should not be called directly." + echo 1>&2 "See README.md" + exit 1 +fi + +if [[ "$GOOS" = "aix" ]]; then + CC=${CC:-gcc} +else + CC=${CC:-cc} +fi + +if [[ "$GOOS" = "solaris" ]]; then + # Assumes GNU versions of utilities in PATH. + export PATH=/usr/gnu/bin:$PATH +fi + +uname=$(uname) + +includes_AIX=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AF_LOCAL AF_UNIX +' + +includes_Darwin=' +#define _DARWIN_C_SOURCE +#define KERNEL 1 +#define _DARWIN_USE_64_BIT_INODE +#define __APPLE_USE_RFC_3542 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk. +#define TIOCREMOTE 0x80047469 +' + +includes_DragonFly=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' + +includes_FreeBSD=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __FreeBSD__ >= 10 +#define IFT_CARP 0xf8 // IFT_CARP is deprecated in FreeBSD 10 +#undef SIOCAIFADDR +#define SIOCAIFADDR _IOW(105, 26, struct oifaliasreq) // ifaliasreq contains if_data +#undef SIOCSIFPHYADDR +#define SIOCSIFPHYADDR _IOW(105, 70, struct oifaliasreq) // ifaliasreq contains if_data +#endif +' + +includes_Linux=' +#define _LARGEFILE_SOURCE +#define _LARGEFILE64_SOURCE +#ifndef __LP64__ +#define _FILE_OFFSET_BITS 64 +#endif +#define _GNU_SOURCE + +// See the description in unix/linux/types.go +#if defined(__ARM_EABI__) || \ + (defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \ + (defined(__powerpc__) && (!defined(__powerpc64__))) +# ifdef _TIME_BITS +# undef _TIME_BITS +# endif +# define _TIME_BITS 32 +#endif + +// is broken on powerpc64, as it fails to include definitions of +// these structures. We just include them copied from . +#if defined(__powerpc__) +struct sgttyb { + char sg_ispeed; + char sg_ospeed; + char sg_erase; + char sg_kill; + short sg_flags; +}; + +struct tchars { + char t_intrc; + char t_quitc; + char t_startc; + char t_stopc; + char t_eofc; + char t_brkc; +}; + +struct ltchars { + char t_suspc; + char t_dsuspc; + char t_rprntc; + char t_flushc; + char t_werasc; + char t_lnextc; +}; +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if defined(__sparc__) +// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the +// definition in glibc. As only the error constants are needed here, include the +// generic termibits.h (which is included by termbits.h on sparc). +#include +#else +#include +#endif + +#ifndef PTRACE_GETREGS +#define PTRACE_GETREGS 0xc +#endif + +#ifndef PTRACE_SETREGS +#define PTRACE_SETREGS 0xd +#endif + +#ifdef SOL_BLUETOOTH +// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h +// but it is already in bluetooth_linux.go +#undef SOL_BLUETOOTH +#endif + +// Certain constants are missing from the fs/crypto UAPI +#define FS_KEY_DESC_PREFIX "fscrypt:" +#define FS_KEY_DESC_PREFIX_SIZE 8 +#define FS_MAX_KEY_SIZE 64 + +// The code generator produces -0x1 for (~0), but an unsigned value is necessary +// for the tipc_subscr timeout __u32 field. +#undef TIPC_WAIT_FOREVER +#define TIPC_WAIT_FOREVER 0xffffffff + +// Copied from linux/netfilter/nf_nat.h +// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h +// and netinet/in.h. +#define NF_NAT_RANGE_MAP_IPS (1 << 0) +#define NF_NAT_RANGE_PROTO_SPECIFIED (1 << 1) +#define NF_NAT_RANGE_PROTO_RANDOM (1 << 2) +#define NF_NAT_RANGE_PERSISTENT (1 << 3) +#define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4) +#define NF_NAT_RANGE_PROTO_OFFSET (1 << 5) +#define NF_NAT_RANGE_NETMAP (1 << 6) +#define NF_NAT_RANGE_PROTO_RANDOM_ALL \ + (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY) +#define NF_NAT_RANGE_MASK \ + (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | \ + NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | \ + NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \ + NF_NAT_RANGE_NETMAP) + +// Copied from linux/hid.h. +// Keep in sync with the size of the referenced fields. +#define _HIDIOCGRAWNAME_LEN 128 // sizeof_field(struct hid_device, name) +#define _HIDIOCGRAWPHYS_LEN 64 // sizeof_field(struct hid_device, phys) +#define _HIDIOCGRAWUNIQ_LEN 64 // sizeof_field(struct hid_device, uniq) + +#define _HIDIOCGRAWNAME HIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN) +#define _HIDIOCGRAWPHYS HIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN) +#define _HIDIOCGRAWUNIQ HIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN) + +// Renamed in v6.16, commit c6d732c38f93 ("net: ethtool: remove duplicate defines for family info") +#define ETHTOOL_FAMILY_NAME ETHTOOL_GENL_NAME +#define ETHTOOL_FAMILY_VERSION ETHTOOL_GENL_VERSION +' + +includes_NetBSD=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Needed since refers to it... +#define schedppq 1 +' + +includes_OpenBSD=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// We keep some constants not supported in OpenBSD 5.5 and beyond for +// the promise of compatibility. +#define EMUL_ENABLED 0x1 +#define EMUL_NATIVE 0x2 +#define IPV6_FAITH 0x1d +#define IPV6_OPTIONS 0x1 +#define IPV6_RTHDR_STRICT 0x1 +#define IPV6_SOCKOPT_RESERVED1 0x3 +#define SIOCGIFGENERIC 0xc020693a +#define SIOCSIFGENERIC 0x80206939 +#define WALTSIG 0x4 +' + +includes_SunOS=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' + + +includes=' +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +' +ccflags="$@" + +# Write go tool cgo -godefs input. +( + echo package unix + echo + echo '/*' + indirect="includes_$(uname)" + echo "${!indirect} $includes" + echo '*/' + echo 'import "C"' + echo 'import "syscall"' + echo + echo 'const (' + + # The gcc command line prints all the #defines + # it encounters while processing the input + echo "${!indirect} $includes" | $CC -x c - -E -dM $ccflags | + awk ' + $1 != "#define" || $2 ~ /\(/ || $3 == "" {next} + + $2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next} # 386 registers + $2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next} + $2 ~ /^(SCM_SRCRT)$/ {next} + $2 ~ /^(MAP_FAILED)$/ {next} + $2 ~ /^ELF_.*$/ {next}# contains ELF_ARCH, etc. + + $2 ~ /^EXTATTR_NAMESPACE_NAMES/ || + $2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next} + + $2 !~ /^ECCAPBITS/ && + $2 !~ /^ETH_/ && + $2 !~ /^EPROC_/ && + $2 !~ /^EQUIV_/ && + $2 !~ /^EXPR_/ && + $2 !~ /^EVIOC/ && + $2 ~ /^E[A-Z0-9_]+$/ || + $2 ~ /^B[0-9_]+$/ || + $2 ~ /^(OLD|NEW)DEV$/ || + $2 == "BOTHER" || + $2 ~ /^CI?BAUD(EX)?$/ || + $2 == "IBSHIFT" || + $2 ~ /^V[A-Z0-9]+$/ || + $2 ~ /^CS[A-Z0-9]/ || + $2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ || + $2 ~ /^IGN/ || + $2 ~ /^IX(ON|ANY|OFF)$/ || + $2 ~ /^IN(LCR|PCK)$/ || + $2 !~ "X86_CR3_PCID_NOFLUSH" && + $2 ~ /(^FLU?SH)|(FLU?SH$)/ || + $2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ || + $2 == "BRKINT" || + $2 == "HUPCL" || + $2 == "PENDIN" || + $2 == "TOSTOP" || + $2 == "XCASE" || + $2 == "ALTWERASE" || + $2 == "NOKERNINFO" || + $2 == "NFDBITS" || + $2 ~ /^PAR/ || + $2 ~ /^SIG[^_]/ || + $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ || + $2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ || + $2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ || + $2 ~ /^(DT|EI|ELF|EV|NN|NT|PF|SHF|SHN|SHT|STB|STT|VER)_/ || + $2 ~ /^O?XTABS$/ || + $2 ~ /^TC[IO](ON|OFF)$/ || + $2 ~ /^IN_/ || + $2 ~ /^KCM/ || + $2 ~ /^LANDLOCK_/ || + $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || + $2 ~ /^LO_(KEY|NAME)_SIZE$/ || + $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || + $2 == "LOOP_CONFIGURE" || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ || + $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || + $2 ~ /^NFC_.*_(MAX)?SIZE$/ || + $2 ~ /^PTP_/ || + $2 ~ /^RAW_PAYLOAD_/ || + $2 ~ /^[US]F_/ || + $2 ~ /^TP_STATUS_/ || + $2 ~ /^FALLOC_/ || + $2 ~ /^ICMPV?6?_(FILTER|SEC)/ || + $2 == "SOMAXCONN" || + $2 == "NAME_MAX" || + $2 == "IFNAMSIZ" || + $2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ || + $2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ || + $2 ~ /^HW_MACHINE$/ || + $2 ~ /^SYSCTL_VERS/ || + $2 !~ "MNT_BITS" && + $2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ || + $2 ~ /^NS_GET_/ || + $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || + $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ || + $2 ~ /^KEXEC_/ || + $2 ~ /^LINUX_REBOOT_CMD_/ || + $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || + $2 ~ /^MODULE_INIT_/ || + $2 !~ "NLA_TYPE_MASK" && + $2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ && + $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || + $2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ || + $2 ~ /^(CONNECT|SAE)_/ || + $2 ~ /^FIORDCHK$/ || + $2 ~ /^SIOC/ || + $2 ~ /^TIOC/ || + $2 ~ /^TCGET/ || + $2 ~ /^TCSET/ || + $2 ~ /^TC(FLSH|SBRKP?|XONC)$/ || + $2 !~ "RTF_BITS" && + $2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ || + $2 ~ /^BIOC/ || + $2 ~ /^DIOC/ || + $2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ || + $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || + $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || + $2 ~ /^CLONE_[A-Z_]+/ || + $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ && + $2 ~ /^(BPF|DLT)_/ || + $2 ~ /^AUDIT_/ || + $2 ~ /^(CLOCK|TIMER)_/ || + $2 ~ /^CAN_/ || + $2 ~ /^CAP_/ || + $2 ~ /^CP_/ || + $2 ~ /^CPUSTATES$/ || + $2 ~ /^CTLIOCGINFO$/ || + $2 ~ /^ALG_/ || + $2 ~ /^FI(CLONE|DEDUPERANGE)/ || + $2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ || + $2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ || + $2 ~ /^FS_VERITY_/ || + $2 ~ /^FSCRYPT_/ || + $2 ~ /^DM_/ || + $2 ~ /^GRND_/ || + $2 ~ /^RND/ || + $2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ || + $2 ~ /^KEYCTL_/ || + $2 ~ /^PERF_/ || + $2 ~ /^SECCOMP_/ || + $2 ~ /^SEEK_/ || + $2 ~ /^SCHED_/ || + $2 ~ /^SPLICE_/ || + $2 ~ /^SYNC_FILE_RANGE_/ || + $2 !~ /IOC_MAGIC/ && + $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || + $2 ~ /^(VM|VMADDR)_/ || + $2 ~ /^(IOCTL_VM_SOCKETS_|IOCTL_MEI_)/ || + $2 ~ /^(TASKSTATS|TS)_/ || + $2 ~ /^CGROUPSTATS_/ || + $2 ~ /^GENL_/ || + $2 ~ /^STATX_/ || + $2 ~ /^RENAME/ || + $2 ~ /^UBI_IOC[A-Z]/ || + $2 ~ /^UTIME_/ || + $2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ || + $2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ || + $2 ~ /^FSOPT_/ || + $2 ~ /^WDIO[CFS]_/ || + $2 ~ /^NFN/ || + $2 !~ /^NFT_META_IIFTYPE/ && + $2 ~ /^NFT_/ || + $2 ~ /^NF_NAT_/ || + $2 ~ /^XDP_/ || + $2 ~ /^RWF_/ || + $2 ~ /^(HDIO|WIN|SMART)_/ || + $2 ~ /^CRYPTO_/ || + $2 ~ /^TIPC_/ || + $2 !~ "DEVLINK_RELOAD_LIMITS_VALID_MASK" && + $2 ~ /^DEVLINK_/ || + $2 ~ /^ETHTOOL_/ || + $2 ~ /^LWTUNNEL_IP/ || + $2 ~ /^ITIMER_/ || + $2 !~ "WMESGLEN" && + $2 ~ /^W[A-Z0-9]+$/ || + $2 ~ /^P_/ || + $2 ~/^PPPIOC/ || + $2 ~ /^FAN_|FANOTIFY_/ || + $2 == "HID_MAX_DESCRIPTOR_SIZE" || + $2 ~ /^_?HIDIOC/ || + $2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ || + $2 ~ /^MTD/ || + $2 ~ /^OTP/ || + $2 ~ /^MEM/ || + $2 ~ /^WG/ || + $2 ~ /^FIB_RULE_/ || + $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {printf("\t%s = C.%s\n", $2, $2)} + $2 ~ /^__WCOREFLAG$/ {next} + $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} + + {next} + ' | sort + + echo ')' +) >_const.go + +# Pull out the error names for later. +errors=$( + echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' | + sort +) + +# Pull out the signal names for later. +signals=$( + echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | + sort +) + +# Again, writing regexps to a file. +echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^E[A-Z0-9_]+$/ { print "^\t" $2 "[ \t]*=" }' | + sort >_error.grep +echo '#include ' | $CC -x c - -E -dM $ccflags | + awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | + sort >_signal.grep + +echo '// mkerrors.sh' "$@" +echo '// Code generated by the command above; see README.md. DO NOT EDIT.' +echo +echo "//go:build ${GOARCH} && ${GOOS}" +echo +go tool cgo -godefs -- "$@" _const.go >_error.out +cat _error.out | grep -vf _error.grep | grep -vf _signal.grep +echo +echo '// Errors' +echo 'const (' +cat _error.out | grep -f _error.grep | sed 's/=\(.*\)/= syscall.Errno(\1)/' +echo ')' + +echo +echo '// Signals' +echo 'const (' +cat _error.out | grep -f _signal.grep | sed 's/=\(.*\)/= syscall.Signal(\1)/' +echo ')' + +# Run C program to print error and syscall strings. +( + echo -E " +#include +#include +#include +#include +#include +#include + +#define nelem(x) (sizeof(x)/sizeof((x)[0])) + +enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below + +struct tuple { + int num; + const char *name; +}; + +struct tuple errors[] = { +" + for i in $errors + do + echo -E ' {'$i', "'$i'" },' + done + + echo -E " +}; + +struct tuple signals[] = { +" + for i in $signals + do + echo -E ' {'$i', "'$i'" },' + done + + # Use -E because on some systems bash builtin interprets \n itself. + echo -E ' +}; + +static int +tuplecmp(const void *a, const void *b) +{ + return ((struct tuple *)a)->num - ((struct tuple *)b)->num; +} + +int +main(void) +{ + int i, e; + char buf[1024], *p; + + printf("\n\n// Error table\n"); + printf("var errorList = [...]struct {\n"); + printf("\tnum syscall.Errno\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(errors, nelem(errors), sizeof errors[0], tuplecmp); + for(i=0; i 0 && errors[i-1].num == e) + continue; + strncpy(buf, strerror(e), sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + // lowercase first letter: Bad -> bad, but STREAM -> STREAM. + if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) + buf[0] += a - A; + printf("\t{ %d, \"%s\", \"%s\" },\n", e, errors[i].name, buf); + } + printf("}\n\n"); + + printf("\n\n// Signal table\n"); + printf("var signalList = [...]struct {\n"); + printf("\tnum syscall.Signal\n"); + printf("\tname string\n"); + printf("\tdesc string\n"); + printf("} {\n"); + qsort(signals, nelem(signals), sizeof signals[0], tuplecmp); + for(i=0; i 0 && signals[i-1].num == e) + continue; + strncpy(buf, strsignal(e), sizeof(buf) - 1); + buf[sizeof(buf) - 1] = '\0'; + // lowercase first letter: Bad -> bad, but STREAM -> STREAM. + if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z) + buf[0] += a - A; + // cut trailing : number. + p = strrchr(buf, ":"[0]); + if(p) + *p = '\0'; + printf("\t{ %d, \"%s\", \"%s\" },\n", e, signals[i].name, buf); + } + printf("}\n\n"); + + return 0; +} + +' +) >_errors.c + +$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mmap_nomremap.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mmap_nomremap.go new file mode 100644 index 0000000..7f602ff --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mmap_nomremap.go @@ -0,0 +1,13 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos + +package unix + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mremap.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mremap.go new file mode 100644 index 0000000..3a5e776 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/mremap.go @@ -0,0 +1,57 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux || netbsd + +package unix + +import "unsafe" + +type mremapMmapper struct { + mmapper + mremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) +} + +var mapper = &mremapMmapper{ + mmapper: mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, + }, + mremap: mremap, +} + +func (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) { + if newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 { + return nil, EINVAL + } + + pOld := &oldData[cap(oldData)-1] + m.Lock() + defer m.Unlock() + bOld := m.active[pOld] + if bOld == nil || &bOld[0] != &oldData[0] { + return nil, EINVAL + } + newAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0) + if errno != nil { + return nil, errno + } + bNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength) + pNew := &bNew[cap(bNew)-1] + if flags&mremapDontunmap == 0 { + delete(m.active, pOld) + } + m.active[pNew] = bNew + return bNew, nil +} + +func Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) { + return mapper.Mremap(oldData, newLength, flags) +} + +func MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr)) + return unsafe.Pointer(xaddr), err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pagesize_unix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pagesize_unix.go new file mode 100644 index 0000000..0482408 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// For Unix, get the pagesize from the runtime. + +package unix + +import "syscall" + +func Getpagesize() int { + return syscall.Getpagesize() +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pledge_openbsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pledge_openbsd.go new file mode 100644 index 0000000..6a09af5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/pledge_openbsd.go @@ -0,0 +1,111 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "errors" + "fmt" + "strconv" +) + +// Pledge implements the pledge syscall. +// +// This changes both the promises and execpromises; use PledgePromises or +// PledgeExecpromises to only change the promises or execpromises +// respectively. +// +// For more information see pledge(2). +func Pledge(promises, execpromises string) error { + if err := pledgeAvailable(); err != nil { + return err + } + + pptr, err := BytePtrFromString(promises) + if err != nil { + return err + } + + exptr, err := BytePtrFromString(execpromises) + if err != nil { + return err + } + + return pledge(pptr, exptr) +} + +// PledgePromises implements the pledge syscall. +// +// This changes the promises and leaves the execpromises untouched. +// +// For more information see pledge(2). +func PledgePromises(promises string) error { + if err := pledgeAvailable(); err != nil { + return err + } + + pptr, err := BytePtrFromString(promises) + if err != nil { + return err + } + + return pledge(pptr, nil) +} + +// PledgeExecpromises implements the pledge syscall. +// +// This changes the execpromises and leaves the promises untouched. +// +// For more information see pledge(2). +func PledgeExecpromises(execpromises string) error { + if err := pledgeAvailable(); err != nil { + return err + } + + exptr, err := BytePtrFromString(execpromises) + if err != nil { + return err + } + + return pledge(nil, exptr) +} + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} + +// pledgeAvailable checks for availability of the pledge(2) syscall +// based on the running OpenBSD version. +func pledgeAvailable() error { + maj, min, err := majmin() + if err != nil { + return err + } + + // Require OpenBSD 6.4 as a minimum. + if maj < 6 || (maj == 6 && min <= 3) { + return fmt.Errorf("cannot call Pledge on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_darwin.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_darwin.go new file mode 100644 index 0000000..3f0975f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_darwin.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && !ios + +package unix + +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ptrace1(request, pid, addr, data) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_ios.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_ios.go new file mode 100644 index 0000000..a4d35db --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ptrace_ios.go @@ -0,0 +1,11 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ios + +package unix + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + return ENOTSUP +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race.go new file mode 100644 index 0000000..714d2aa --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && race) || (linux && race) || (freebsd && race) + +package unix + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race0.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race0.go new file mode 100644 index 0000000..4a9f663 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos + +package unix + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdents.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdents.go new file mode 100644 index 0000000..dbd2b6c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdents.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd + +package unix + +// ReadDirent reads directory entries from fd and writes them into buf. +func ReadDirent(fd int, buf []byte) (n int, err error) { + return Getdents(fd, buf) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go new file mode 100644 index 0000000..b903c00 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go @@ -0,0 +1,19 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin || zos + +package unix + +import "unsafe" + +// ReadDirent reads directory entries from fd and writes them into buf. +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // 64 bits should be enough. (32 bits isn't even on 386). Since the + // actual system call is getdirentries64, 64 is a good guess. + // TODO(rsc): Can we use a single global basep for all calls? + var base = (*uintptr)(unsafe.Pointer(new(uint64))) + return Getdirentries(fd, buf, base) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go new file mode 100644 index 0000000..5144dee --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) { + // 64-bit Dragonfly before the September 2019 ABI changes still requires + // 32-bit aligned access to network subsystem. + salign = 4 + } + return (salen + salign - 1) & ^(salign - 1) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_linux.go new file mode 100644 index 0000000..5f63147 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -0,0 +1,85 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *(*Ucred)(h.data(0)) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} + +// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. +func PktInfo4(info *Inet4Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IP + h.Type = IP_PKTINFO + h.SetLen(CmsgLen(SizeofInet4Pktinfo)) + *(*Inet4Pktinfo)(h.data(0)) = *info + return b +} + +// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. +func PktInfo6(info *Inet6Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IPV6 + h.Type = IPV6_PKTINFO + h.SetLen(CmsgLen(SizeofInet6Pktinfo)) + *(*Inet6Pktinfo)(h.data(0)) = *info + return b +} + +// ParseOrigDstAddr decodes a socket control message containing the original +// destination address. To receive such a message the IP_RECVORIGDSTADDR or +// IPV6_RECVORIGDSTADDR option must be enabled on the socket. +func ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) { + switch { + case m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR: + pp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0])) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR: + pp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0])) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + + default: + return nil, EINVAL + } +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix.go new file mode 100644 index 0000000..c3a62db --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -0,0 +1,106 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// Socket control messages + +package unix + +import ( + "unsafe" +) + +// CmsgLen returns the value to store in the Len field of the Cmsghdr +// structure, taking into account any necessary alignment. +func CmsgLen(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + datalen +} + +// CmsgSpace returns the number of bytes an ancillary element with +// payload of the passed data length occupies. +func CmsgSpace(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen) +} + +func (h *Cmsghdr) data(offset uintptr) unsafe.Pointer { + return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset) +} + +// SocketControlMessage represents a socket control message. +type SocketControlMessage struct { + Header Cmsghdr + Data []byte +} + +// ParseSocketControlMessage parses b as an array of socket control +// messages. +func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) { + var msgs []SocketControlMessage + i := 0 + for i+CmsgLen(0) <= len(b) { + h, dbuf, err := socketControlMessageHeaderAndData(b[i:]) + if err != nil { + return nil, err + } + m := SocketControlMessage{Header: *h, Data: dbuf} + msgs = append(msgs, m) + i += cmsgAlignOf(int(h.Len)) + } + return msgs, nil +} + +// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header, +// message data (a slice of b), and the remainder of b after that single message. +// When there are no remaining messages, len(remainder) == 0. +func ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) { + h, dbuf, err := socketControlMessageHeaderAndData(b) + if err != nil { + return Cmsghdr{}, nil, nil, err + } + if i := cmsgAlignOf(int(h.Len)); i < len(b) { + remainder = b[i:] + } + return *h, dbuf, remainder, nil +} + +func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) { + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) { + return nil, nil, EINVAL + } + return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil +} + +// UnixRights encodes a set of open file descriptors into a socket +// control message for sending to another process. +func UnixRights(fds ...int) []byte { + datalen := len(fds) * 4 + b := make([]byte, CmsgSpace(datalen)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_RIGHTS + h.SetLen(CmsgLen(datalen)) + for i, fd := range fds { + *(*int32)(h.data(4 * uintptr(i))) = int32(fd) + } + return b +} + +// ParseUnixRights decodes a socket control message that contains an +// integer array of open file descriptors from another process. +func ParseUnixRights(m *SocketControlMessage) ([]int, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_RIGHTS { + return nil, EINVAL + } + fds := make([]int, len(m.Data)>>2) + for i, j := 0, 0; i < len(m.Data); i += 4 { + fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i]))) + j++ + } + return fds, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go new file mode 100644 index 0000000..4a1eab3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go @@ -0,0 +1,46 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import ( + "runtime" +) + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + + // dragonfly needs to check ABI version at runtime, see cmsgAlignOf in + // sockcmsg_dragonfly.go + switch runtime.GOOS { + case "aix": + // There is no alignment on AIX. + salign = 1 + case "darwin", "ios", "illumos", "solaris": + // NOTE: It seems like 64-bit Darwin, Illumos and Solaris + // kernels still require 32-bit aligned access to network + // subsystem. + if SizeofPtr == 8 { + salign = 4 + } + case "netbsd", "openbsd": + // NetBSD and OpenBSD armv7 require 64-bit alignment. + if runtime.GOARCH == "arm" { + salign = 8 + } + // NetBSD aarch64 requires 128-bit alignment. + if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" { + salign = 16 + } + case "zos": + // z/OS socket macros use [32-bit] sizeof(int) alignment, + // not pointer width. + salign = SizeofInt + } + + return (salen + salign - 1) & ^(salign - 1) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_zos.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_zos.go new file mode 100644 index 0000000..3e53dbc --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sockcmsg_zos.go @@ -0,0 +1,58 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *(*Ucred)(h.data(0)) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} + +// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO. +func PktInfo4(info *Inet4Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet4Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IP + h.Type = IP_PKTINFO + h.SetLen(CmsgLen(SizeofInet4Pktinfo)) + *(*Inet4Pktinfo)(h.data(0)) = *info + return b +} + +// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO. +func PktInfo6(info *Inet6Pktinfo) []byte { + b := make([]byte, CmsgSpace(SizeofInet6Pktinfo)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_IPV6 + h.Type = IPV6_PKTINFO + h.SetLen(CmsgLen(SizeofInet6Pktinfo)) + *(*Inet6Pktinfo)(h.data(0)) = *info + return b +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s new file mode 100644 index 0000000..3c4f33c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s @@ -0,0 +1,75 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x && gc + +#include "textflag.h" + +// provide the address of function variable to be fixed up. + +TEXT ·getPipe2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Pipe2(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_FlockAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Flock(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_GetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Getxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_NanosleepAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Nanosleep(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_SetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Setxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_Wait4Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Wait4(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_MountAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mount(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UnmountAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unmount(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UtimesNanoAtAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·UtimesNanoAt(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_UtimesNanoAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·UtimesNano(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_MkfifoatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mkfifoat(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_ChtagAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Chtag(SB), R8 + MOVD R8, ret+0(FP) + RET + +TEXT ·get_ReadlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Readlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall.go new file mode 100644 index 0000000..5ea74da --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall.go @@ -0,0 +1,86 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +// Package unix contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display OS-specific documentation for the current +// system. If you want godoc to display OS documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package unix // import "golang.org/x/sys/unix" + +import ( + "bytes" + "strings" + "unsafe" +) + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any +// bytes after the NUL removed. +func ByteSliceToString(s []byte) string { + if i := bytes.IndexByte(s, 0); i != -1 { + s = s[:i] + } + return string(s) +} + +// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string. +// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated +// at a zero byte; if the zero byte is not present, the program may crash. +func BytePtrToString(p *byte) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + 1) + } + + return string(unsafe.Slice(p, n)) +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +var _zero uintptr diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 0000000..6f15ba1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,582 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import "unsafe" + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return +} + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +//sys getdirent(fd int, buf []byte) (n int, err error) + +func Getdents(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the process is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x80 == 0x80 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req int, arg uintptr) (err error) +//sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys fsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range + +func Fsync(fd int) error { + return fsyncRange(fd, O_SYNC, 0, 0) +} + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdir(dirfd int, path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys fstat(fd int, stat *Stat_t) (err error) +//sys fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys stat(path string, statptr *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) + +// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used. +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg + +//sys munmap(addr uintptr, length uintptr) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) + +//sys Getsystemcfg(label int) (n uint64) + +//sys umount(target string) (err error) + +func Unmount(target string, flags int) (err error) { + if flags != 0 { + // AIX doesn't have any flags for umount. + return ENOSYS + } + return umount(target) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 0000000..1fdaa47 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,52 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Fstat(fd int, stat *Stat_t) error { + return fstat(fd, stat) +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error { + return fstatat(dirfd, path, stat, flags) +} + +func Lstat(path string, stat *Stat_t) error { + return lstat(path, stat) +} + +func Stat(path string, statptr *Stat_t) error { + return stat(path, statptr) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 0000000..c87f9a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,83 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix && ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// In order to only have Timespec structure, type of Stat_t's fields +// Atim, Mtim and Ctim is changed from StTimespec to Timespec during +// ztypes generation. +// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an +// int32, so the fields' value must be modified. +func fixStatTimFields(stat *Stat_t) { + stat.Atim.Nsec >>= 32 + stat.Mtim.Nsec >>= 32 + stat.Ctim.Nsec >>= 32 +} + +func Fstat(fd int, stat *Stat_t) error { + err := fstat(fd, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error { + err := fstatat(dirfd, path, stat, flags) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Lstat(path string, stat *Stat_t) error { + err := lstat(path, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Stat(path string, statptr *Stat_t) error { + err := stat(path, statptr) + if err != nil { + return err + } + fixStatTimFields(statptr) + return nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_bsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_bsd.go new file mode 100644 index 0000000..a00c3e5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -0,0 +1,609 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin || dragonfly || freebsd || netbsd || openbsd + +// BSD system call wrappers shared by *BSD based systems +// including OS X (Darwin) and FreeBSD. Like the other +// syscall_*.go files it is compiled as Go code but also +// used as input to mksyscall which parses the //sys +// lines and generates system call stubs. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +const ImplementsGetwd = true + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + killed = 9 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys Shutdown(s int, how int) (err error) + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Index == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = sa.Len + sa.raw.Family = AF_LINK + sa.raw.Index = sa.Index + sa.raw.Type = sa.Type + sa.raw.Nlen = sa.Nlen + sa.raw.Alen = sa.Alen + sa.raw.Slen = sa.Slen + sa.raw.Data = sa.Data + return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_LINK: + pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa)) + sa := new(SockaddrDatalink) + sa.Len = pp.Len + sa.Family = pp.Family + sa.Index = pp.Index + sa.Type = pp.Type + sa.Nlen = pp.Nlen + sa.Alen = pp.Alen + sa.Slen = pp.Slen + sa.Data = pp.Data + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + if pp.Len < 2 || pp.Len > SizeofSockaddrUnix { + return nil, EINVAL + } + sa := new(SockaddrUnix) + + // Some BSDs include the trailing NUL in the length, whereas + // others do not. Work around this by subtracting the leading + // family and len. The path is then scanned to see if a NUL + // terminator still exists within the length. + n := int(pp.Len) - 2 // subtract leading Family, Len + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + // found early NUL; assume Len included the NUL + // or was overestimating. + n = i + break + } + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return anyToSockaddrGOOS(fd, rsa) +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + if (runtime.GOOS == "darwin" || runtime.GOOS == "ios") && len == 0 { + // Accepted socket has no address. + // This is likely due to a bug in xnu kernels, + // where instead of ECONNABORTED error socket + // is accepted, but has no address. + Close(nfd) + return 0, nil, ECONNABORTED + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be + // reported upstream. + if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 { + rsa.Addr.Family = AF_UNIX + rsa.Addr.Len = SizeofSockaddrUnix + } + return anyToSockaddr(fd, &rsa) +} + +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return ByteSliceToString(buf[:vallen]), nil +} + +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +//sys kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) + +func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) { + var change, event unsafe.Pointer + if len(changes) > 0 { + change = unsafe.Pointer(&changes[0]) + } + if len(events) > 0 { + event = unsafe.Pointer(&events[0]) + } + return kevent(kq, change, len(changes), event, len(events), timeout) +} + +// sysctlmib translates name to mib number and appends any additional args. +func sysctlmib(name string, args ...int) ([]_C_int, error) { + // Translate name to mib number. + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + for _, a := range args { + mib = append(mib, _C_int(a)) + } + + return mib, nil +} + +func Sysctl(name string) (string, error) { + return SysctlArgs(name) +} + +func SysctlArgs(name string, args ...int) (string, error) { + buf, err := SysctlRaw(name, args...) + if err != nil { + return "", err + } + n := len(buf) + + // Throw away terminating NUL. + if n > 0 && buf[n-1] == '\x00' { + n-- + } + return string(buf[0:n]), nil +} + +func SysctlUint32(name string) (uint32, error) { + return SysctlUint32Args(name) +} + +func SysctlUint32Args(name string, args ...int) (uint32, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(4) + buf := make([]byte, 4) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 4 { + return 0, EIO + } + return *(*uint32)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlUint64(name string, args ...int) (uint64, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(8) + buf := make([]byte, 8) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 8 { + return 0, EIO + } + return *(*uint64)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlRaw(name string, args ...int) ([]byte, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Read into buffer of that size. + buf := make([]byte, n) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return nil, err + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n], nil +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +func SysctlTimeval(name string) (*Timeval, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + var tv Timeval + n := uintptr(unsafe.Sizeof(tv)) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil { + return nil, err + } + if n != unsafe.Sizeof(tv) { + return nil, EIO + } + return &tv, nil +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys futimes(fd int, timeval *[2]Timeval) (err error) + +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimes(fd, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +// TODO: wrap +// Acct(name nil-string) (err error) +// Gethostuuid(uuid *byte, timeout *Timespec) (err error) +// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) + +//sys Madvise(b []byte, behav int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin.go new file mode 100644 index 0000000..7838ca5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -0,0 +1,800 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Darwin system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "fmt" + "syscall" + "unsafe" +) + +//sys closedir(dir uintptr) (err error) +//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) + +func fdopendir(fd int) (dir uintptr, err error) { + r0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0) + dir = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fdopendir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulate Getdirentries using fdopendir/readdir_r/closedir. + // We store the number of entries to skip in the seek + // offset of fd. See issue #31368. + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // We need to duplicate the incoming file descriptor + // because the caller expects to retain control of it, but + // fdopendir expects to take control of its argument. + // Just Dup'ing the file descriptor is not enough, as the + // result shares underlying state. Use Openat to make a really + // new file descriptor referring to the same directory. + fd2, err := Openat(fd, ".", O_RDONLY, 0) + if err != nil { + return 0, err + } + d, err := fdopendir(fd2) + if err != nil { + Close(fd2) + return 0, err + } + defer closedir(d) + + var cnt int64 + for { + var entry Dirent + var entryp *Dirent + e := readdir_r(d, &entry, &entryp) + if e != 0 { + return n, errnoErr(e) + } + if entryp == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + + // Copy entry into return buffer. + s := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen) + copy(buf, s) + + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets. +type SockaddrCtl struct { + ID uint32 + Unit uint32 + raw RawSockaddrCtl +} + +func (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sc_len = SizeofSockaddrCtl + sa.raw.Sc_family = AF_SYSTEM + sa.raw.Ss_sysaddr = AF_SYS_CONTROL + sa.raw.Sc_id = sa.ID + sa.raw.Sc_unit = sa.Unit + return unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_LOCAL: refers to local communication (loopback). + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Len = SizeofSockaddrVM + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_SYSTEM: + pp := (*RawSockaddrCtl)(unsafe.Pointer(rsa)) + if pp.Ss_sysaddr == AF_SYS_CONTROL { + sa := new(SockaddrCtl) + sa.ID = pp.Sc_id + sa.Unit = pp.Sc_unit + return sa, nil + } + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +// Some external packages rely on SYS___SYSCTL being defined to implement their +// own sysctl wrappers. Provide it here, even though direct syscalls are no +// longer supported on darwin. +const SYS___SYSCTL = SYS_SYSCTL + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } +func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } +func PtraceDenyAttach() (err error) { return ptrace(PT_DENY_ATTACH, 0, 0, 0) } + +//sysnb pipe(p *[2]int32) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var x [2]int32 + err = pipe(&x) + if err == nil { + p[0] = int(x[0]) + p[1] = int(x[1]) + } + return +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(_p0, bufsize, flags) +} + +func xattrPointer(dest []byte) *byte { + // It's only when dest is set to NULL that the OS X implementations of + // getxattr() and listxattr() return the current sizes of the named attributes. + // An empty byte array is not sufficient. To maintain the same behaviour as the + // linux implementation, we wrap around the system calls and pass in NULL when + // dest is empty. + var destp *byte + if len(dest) > 0 { + destp = &dest[0] + } + return destp +} + +//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) +} + +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + // The parameters for the OS X implementation vary slightly compared to the + // linux system call, specifically the position parameter: + // + // linux: + // int setxattr( + // const char *path, + // const char *name, + // const void *value, + // size_t size, + // int flags + // ); + // + // darwin: + // int setxattr( + // const char *path, + // const char *name, + // void *value, + // size_t size, + // u_int32_t position, + // int options + // ); + // + // position specifies the offset within the extended attribute. In the + // current implementation, only the resource fork extended attribute makes + // use of this argument. For all others, position is reserved. We simply + // default to setting it to zero. + return setxattr(path, attr, xattrPointer(data), len(data), 0, flags) +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) +} + +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) + +func Removexattr(path string, attr string) (err error) { + // We wrap around and explicitly zero out the options provided to the OS X + // implementation of removexattr, we do so for interoperability with the + // linux variant. + return removexattr(path, attr, 0) +} + +func Lremovexattr(link string, attr string) (err error) { + return removexattr(link, attr, XATTR_NOFOLLOW) +} + +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + +//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) + +func Listxattr(path string, dest []byte) (sz int, err error) { + return listxattr(path, xattrPointer(dest), len(dest), 0) +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) +} + +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Wrapped + */ + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys kill(pid int, signum int, posix int) (err error) + +func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +func IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error { + return ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo)) +} + +// IfreqMTU is struct ifreq used to get or set a network device's MTU. +type IfreqMTU struct { + Name [IFNAMSIZ]byte + MTU int32 +} + +// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU +// of the network device specified by ifname. +func IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) { + var ifreq IfreqMTU + copy(ifreq.Name[:], ifname) + err := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq)) + return &ifreq, err +} + +// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU +// of the network device specified by ifreq.Name. +func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { + return ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq)) +} + +//sys renamexNp(from string, to string, flag uint32) (err error) + +func RenamexNp(from string, to string, flag uint32) (err error) { + return renamexNp(from, to, flag) +} + +//sys renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) + +func RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + return renameatxNp(fromfd, from, tofd, to, flag) +} + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var length = int64(count) + err = sendfile(infd, outfd, *offset, &length, nil, 0) + written = int(length) + return +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + +func GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) { + var value TCPConnectionInfo + vallen := _Socklen(SizeofTCPConnectionInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + var kinfo KinfoProc + n := uintptr(SizeofKinfoProc) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofKinfoProc { + return nil, EIO + } + return &kinfo, nil +} + +func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + for { + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + if n%SizeofKinfoProc != 0 { + return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) + } + + // Read into buffer of that size. + buf := make([]KinfoProc, n/SizeofKinfoProc) + if err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil { + if err == ENOMEM { + // Process table grew. Try again. + continue + } + return nil, err + } + if n%SizeofKinfoProc != 0 { + return nil, fmt.Errorf("sysctl() returned a size of %d, which is not a multiple of %d", n, SizeofKinfoProc) + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n/SizeofKinfoProc], nil + } +} + +//sys pthread_chdir_np(path string) (err error) + +func PthreadChdir(path string) (err error) { + return pthread_chdir_np(path) +} + +//sys pthread_fchdir_np(fd int) (err error) + +func PthreadFchdir(fd int) (err error) { + return pthread_fchdir_np(fd) +} + +// Connectx calls connectx(2) to initiate a connection on a socket. +// +// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument. +// +// - srcIf is the optional source interface index. 0 means unspecified. +// - srcAddr is the optional source address. nil means unspecified. +// - dstAddr is the destination address. +// +// On success, Connectx returns the number of bytes enqueued for transmission. +func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) { + endpoints := SaEndpoints{ + Srcif: srcIf, + } + + if srcAddr != nil { + addrp, addrlen, err := srcAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Srcaddr = (*RawSockaddr)(addrp) + endpoints.Srcaddrlen = uint32(addrlen) + } + + if dstAddr != nil { + addrp, addrlen, err := dstAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Dstaddr = (*RawSockaddr)(addrp) + endpoints.Dstaddrlen = uint32(addrlen) + } + + err = connectx(fd, &endpoints, associd, flags, iov, &n, connid) + return +} + +const minIovec = 8 + +func Readv(fd int, iovs [][]byte) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = readv(fd, iovecs) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = preadv(fd, iovecs, offset) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Writev(fd int, iovs [][]byte) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = writev(fd, iovecs) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = pwritev(fd, iovecs, offset) + writevRacedetect(iovecs, n) + return n, err +} + +func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { + for _, b := range bs { + var v Iovec + v.SetLen(len(b)) + if len(b) > 0 { + v.Base = &b[0] + } else { + v.Base = (*byte)(unsafe.Pointer(&_zero)) + } + vecs = append(vecs, v) + } + return vecs +} + +func writevRacedetect(iovecs []Iovec, n int) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceReadRange(unsafe.Pointer(iovecs[i].Base), m) + } + } +} + +func readvRacedetect(iovecs []Iovec, n int, err error) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := int(iovecs[i].Len) + if m > n { + m = n + } + n -= m + if m > 0 { + raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) + } + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } +} + +//sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) +//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) + +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) +//sys shmdt(addr uintptr) (err error) +//sys shmget(key int, size int, flag int) (id int, err error) + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Clonefile(src string, dst string, flags int) (err error) +//sys Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exchangedata(path1 string, path2 string, options int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getcwd(buf []byte) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tp *Timeval) (err error) +//sysnb Getuid() (uid int) +//sysnb Issetugid() (tainted bool) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) +//sys Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setprivexec(flag int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readv(fd int, iovecs []Iovec) (n int, err error) +//sys preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) +//sys writev(fd int, iovecs []Iovec) (n int, err error) +//sys pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go new file mode 100644 index 0000000..0eaecf5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -0,0 +1,50 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && darwin + +package unix + +import "syscall" + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go new file mode 100644 index 0000000..f36c670 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -0,0 +1,50 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && darwin + +package unix + +import "syscall" + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go new file mode 100644 index 0000000..2f0fa76 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin + +package unix + +import _ "unsafe" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall6X syscall.syscall6X +//go:linkname syscall_syscall9 syscall.syscall9 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 +//go:linkname syscall_syscallPtr syscall.syscallPtr diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly.go new file mode 100644 index 0000000..be8c002 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -0,0 +1,359 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// DragonFly BSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sync" + "unsafe" +) + +// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// First __DragonFly_version after September 2019 ABI changes +// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html +const _dragonflyABIChangeVersion = 500705 + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + namlen, ok := direntNamlen(buf) + if !ok { + return 0, false + } + return (16 + namlen + 1 + 7) &^ 7, true +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + r, w, err := pipe() + if err == nil { + p[0], p[1] = r, w + } + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (r int, w int, err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + // pipe2 on dragonfly takes an fds array as an argument, but still + // returns the file descriptors. + r, w, err := pipe2(&pp, flags) + if err == nil { + p[0], p[1] = r, w + } + return err +} + +//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) + +func pread(fd int, p []byte, offset int64) (n int, err error) { + return extpread(fd, p, 0, offset) +} + +//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + return extpwrite(fd, p, 0, offset) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { + err := sysctl(mib, old, oldlen, nil, 0) + if err != nil { + // Utsname members on Dragonfly are only 32 bytes and + // the syscall returns ENOMEM in case the actual value + // is longer. + if err == ENOMEM { + err = nil + } + } + return err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil { + return err + } + uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil { + return err + } + uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctlUname(mib, &uname.Release[0], &n); err != nil { + return err + } + uname.Release[unsafe.Sizeof(uname.Release)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctlUname(mib, &uname.Version[0], &n); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil { + return err + } + uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0 + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func Dup3(oldfd, newfd, flags int) error { + if oldfd == newfd || flags&^O_CLOEXEC != 0 { + return EINVAL + } + how := F_DUP2FD + if flags&O_CLOEXEC != 0 { + how = F_DUP2FD_CLOEXEC + } + _, err := fcntl(oldfd, how, newfd) + return err +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go new file mode 100644 index 0000000..14bab6b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -0,0 +1,56 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && dragonfly + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd.go new file mode 100644 index 0000000..2b57e0f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -0,0 +1,455 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// FreeBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "errors" + "sync" + "unsafe" +) + +// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct. +// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively. +func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { + x := new(Xucred) + vallen := _Socklen(SizeofXucred) + err := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen) + return x, err +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var ( + _p0 unsafe.Pointer + bufsize uintptr + ) + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + // Suppress ENOMEM errors to be compatible with the C library __xuname() implementation. + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) { + return err + } + + return nil +} + +func Stat(path string, st *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, st, 0) +} + +func Lstat(path string, st *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) +} + +func Getdents(fd int, buf []byte) (n int, err error) { + return Getdirentries(fd, buf, nil) +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + if basep == nil || unsafe.Sizeof(*basep) == 8 { + return getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep))) + } + // The syscall needs a 64-bit base. On 32-bit machines + // we can't just use the basep passed in. See #32498. + var base uint64 = uint64(*basep) + n, err = getdirentries(fd, buf, &base) + *basep = uintptr(base) + if base>>32 != 0 { + // We can't stuff the base back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return +} + +func Mknod(path string, mode uint32, dev uint64) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +//sys ptrace(request int, pid int, addr uintptr, data int) (err error) +//sys ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE + +func PtraceAttach(pid int) (err error) { + return ptrace(PT_ATTACH, pid, 0, 0) +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PT_CONTINUE, pid, 1, signal) +} + +func PtraceDetach(pid int) (err error) { + return ptrace(PT_DETACH, pid, 1, 0) +} + +func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { + return ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0) +} + +func PtraceGetRegs(pid int, regsout *Reg) (err error) { + return ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0) +} + +func PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) { + ioDesc := PtraceIoDesc{ + Op: int32(req), + Offs: offs, + } + if countin > 0 { + _ = out[:countin] // check bounds + ioDesc.Addr = &out[0] + } else if out != nil { + ioDesc.Addr = (*byte)(unsafe.Pointer(&_zero)) + } + ioDesc.SetLen(countin) + + err = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0) + return int(ioDesc.Len), err +} + +func PtraceLwpEvents(pid int, enable int) (err error) { + return ptrace(PT_LWP_EVENTS, pid, 0, enable) +} + +func PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) { + return ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info))) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong) +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong) +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong) +} + +func PtraceSetRegs(pid int, regs *Reg) (err error) { + return ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0) +} + +func PtraceSingleStep(pid int) (err error) { + return ptrace(PT_STEP, pid, 1, 0) +} + +func Dup3(oldfd, newfd, flags int) error { + if oldfd == newfd || flags&^O_CLOEXEC != 0 { + return EINVAL + } + how := F_DUP2FD + if flags&O_CLOEXEC != 0 { + how = F_DUP2FD_CLOEXEC + } + _, err := fcntl(oldfd, how, newfd) + return err +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys CapEnter() (err error) +//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET +//sys capRightsLimit(fd int, rightsp *CapRights) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev uint64) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go new file mode 100644 index 0000000..3967bca --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -0,0 +1,64 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func PtraceGetFsBase(pid int, fsbase *int64) (err error) { + return ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go new file mode 100644 index 0000000..eff19ad --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -0,0 +1,64 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint64(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func PtraceGetFsBase(pid int, fsbase *int64) (err error) { + return ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go new file mode 100644 index 0000000..4f24b51 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -0,0 +1,60 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go new file mode 100644 index 0000000..ac30759 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -0,0 +1,60 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint64(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go new file mode 100644 index 0000000..aab725c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go @@ -0,0 +1,60 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (d *PtraceIoDesc) SetLen(length int) { + d.Len = uint64(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd.go new file mode 100644 index 0000000..a6a2d2f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd.go @@ -0,0 +1,30 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build hurd + +package unix + +/* +#include +int ioctl(int, unsigned long int, uintptr_t); +*/ +import "C" +import "unsafe" + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg))) + if r0 == -1 && er != nil { + err = er + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd_386.go new file mode 100644 index 0000000..df89f9e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_hurd_386.go @@ -0,0 +1,28 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && hurd + +package unix + +const ( + TIOCGETA = 0x62251713 +) + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_illumos.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_illumos.go new file mode 100644 index 0000000..a863f70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -0,0 +1,78 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// illumos system calls not present on Solaris. + +//go:build amd64 && illumos + +package unix + +import ( + "unsafe" +) + +func bytes2iovec(bs [][]byte) []Iovec { + iovecs := make([]Iovec, len(bs)) + for i, b := range bs { + iovecs[i].SetLen(len(b)) + if len(b) > 0 { + iovecs[i].Base = &b[0] + } else { + iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + return iovecs +} + +//sys readv(fd int, iovs []Iovec) (n int, err error) + +func Readv(fd int, iovs [][]byte) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = readv(fd, iovecs) + return n, err +} + +//sys preadv(fd int, iovs []Iovec, off int64) (n int, err error) + +func Preadv(fd int, iovs [][]byte, off int64) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = preadv(fd, iovecs, off) + return n, err +} + +//sys writev(fd int, iovs []Iovec) (n int, err error) + +func Writev(fd int, iovs [][]byte) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = writev(fd, iovecs) + return n, err +} + +//sys pwritev(fd int, iovs []Iovec, off int64) (n int, err error) + +func Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) { + iovecs := bytes2iovec(iovs) + n, err = pwritev(fd, iovecs, off) + return n, err +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4 + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux.go new file mode 100644 index 0000000..06c0eea --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -0,0 +1,2651 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Linux system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "encoding/binary" + "slices" + "strconv" + "syscall" + "time" + "unsafe" +) + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) +//sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) + +func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) { + if pathname == "" { + return fanotifyMark(fd, flags, mask, dirFd, nil) + } + p, err := BytePtrFromString(pathname) + if err != nil { + return err + } + return fanotifyMark(fd, flags, mask, dirFd, p) +} + +//sys fchmodat(dirfd int, path string, mode uint32) (err error) +//sys fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) error { + // Linux fchmodat doesn't support the flags parameter, but fchmodat2 does. + // Try fchmodat2 if flags are specified. + if flags != 0 { + err := fchmodat2(dirfd, path, mode, flags) + if err == ENOSYS { + // fchmodat2 isn't available. If the flags are known to be valid, + // return EOPNOTSUPP to indicate that fchmodat doesn't support them. + if flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 { + return EINVAL + } else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 { + return EOPNOTSUPP + } + } + return err + } + return fchmodat(dirfd, path, mode) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +// ioctl itself should not be exposed directly, but additional get/set functions +// for specific types are permissible. These are defined in ioctl.go and +// ioctl_linux.go. +// +// The third argument to ioctl is often a pointer but sometimes an integer. +// Callers should use ioctlPtr when the third argument is a pointer and ioctl +// when the third argument is an integer. +// +// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr. + +//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) + +func Link(oldpath string, newpath string) (err error) { + return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0) +} + +func Mkdir(path string, mode uint32) (err error) { + return Mkdirat(AT_FDCWD, path, mode) +} + +func Mknod(path string, mode uint32, dev int) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + return openat(dirfd, path, flags|O_LARGEFILE, mode) +} + +//sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) + +func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { + return openat2(dirfd, path, how, SizeofOpenHow) +} + +func Pipe(p []int) error { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + return Ppoll(fds, ts, nil) +} + +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) + +func Readlink(path string, buf []byte) (n int, err error) { + return Readlinkat(AT_FDCWD, path, buf) +} + +func Rename(oldpath string, newpath string) (err error) { + return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath) +} + +func Rmdir(path string) error { + return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR) +} + +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) + +func Symlink(oldpath string, newpath string) (err error) { + return Symlinkat(oldpath, AT_FDCWD, newpath) +} + +func Unlink(path string) error { + return Unlinkat(AT_FDCWD, path, 0) +} + +//sys Unlinkat(dirfd int, path string, flags int) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + var ts [2]Timespec + ts[0] = NsecToTimespec(TimevalToNsec(tv[0])) + ts[1] = NsecToTimespec(TimevalToNsec(tv[1])) + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + return UtimesNanoAt(AT_FDCWD, path, ts, 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func Futimesat(dirfd int, path string, tv []Timeval) error { + if tv == nil { + return futimesat(dirfd, path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Futimes(fd int, tv []Timeval) (err error) { + // Believe it or not, this is the best we can do on Linux + // (and is what glibc does). + return Utimes("/proc/self/fd/"+strconv.Itoa(fd), tv) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + // In some cases, Linux can return a path that starts with the + // "(unreachable)" prefix, which can potentially be a valid relative + // path. To work around that, return ENOENT if path is not absolute. + if buf[0] != '/' { + return "", ENOENT + } + + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w & mask) +} + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { + if w.StopSignal() != SIGTRAP { + return -1 + } + return int(w>>shift) >> 8 +} + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) + +func Mkfifo(path string, mode uint32) error { + return Mknod(path, mode|S_IFIFO, 0) +} + +func Mkfifoat(dirfd int, path string, mode uint32) error { + return Mknodat(dirfd, path, mode|S_IFIFO, 0) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := range n { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets. +type SockaddrLinklayer struct { + Protocol uint16 + Ifindex int + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]byte + raw RawSockaddrLinklayer +} + +func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_PACKET + sa.raw.Protocol = sa.Protocol + sa.raw.Ifindex = int32(sa.Ifindex) + sa.raw.Hatype = sa.Hatype + sa.raw.Pkttype = sa.Pkttype + sa.raw.Halen = sa.Halen + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil +} + +// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets. +type SockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 + raw RawSockaddrNetlink +} + +func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_NETLINK + sa.raw.Pad = sa.Pad + sa.raw.Pid = sa.Pid + sa.raw.Groups = sa.Groups + return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil +} + +// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the HCI protocol. +type SockaddrHCI struct { + Dev uint16 + Channel uint16 + raw RawSockaddrHCI +} + +func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Dev = sa.Dev + sa.raw.Channel = sa.Channel + return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil +} + +// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the L2CAP protocol. +type SockaddrL2 struct { + PSM uint16 + CID uint16 + Addr [6]uint8 + AddrType uint8 + raw RawSockaddrL2 +} + +func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) + psm[0] = byte(sa.PSM) + psm[1] = byte(sa.PSM >> 8) + for i := range len(sa.Addr) { + sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] + } + cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) + cid[0] = byte(sa.CID) + cid[1] = byte(sa.CID >> 8) + sa.raw.Bdaddr_type = sa.AddrType + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil +} + +// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the RFCOMM protocol. +// +// Server example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) +// +// Client example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) +type SockaddrRFCOMM struct { + // Addr represents a bluetooth address, byte ordering is little-endian. + Addr [6]uint8 + + // Channel is a designated bluetooth channel, only 1-30 are available for use. + // Since Linux 2.6.7 and further zero value is the first available channel. + Channel uint8 + + raw RawSockaddrRFCOMM +} + +func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Channel = sa.Channel + sa.raw.Bdaddr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil +} + +// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. +// The RxID and TxID fields are used for transport protocol addressing in +// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with +// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning. +// +// The SockaddrCAN struct must be bound to the socket file descriptor +// using Bind before the CAN socket can be used. +// +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) +// +// The full SocketCAN documentation can be found in the linux kernel +// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt +type SockaddrCAN struct { + Ifindex int + RxID uint32 + TxID uint32 + raw RawSockaddrCAN +} + +func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := range 4 { + sa.raw.Addr[i] = rx[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := range 4 { + sa.raw.Addr[i+4] = tx[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939 +// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information +// on the purposes of the fields, check the official linux kernel documentation +// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst +type SockaddrCANJ1939 struct { + Ifindex int + Name uint64 + PGN uint32 + Addr uint8 + raw RawSockaddrCAN +} + +func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + n := (*[8]byte)(unsafe.Pointer(&sa.Name)) + for i := range 8 { + sa.raw.Addr[i] = n[i] + } + p := (*[4]byte)(unsafe.Pointer(&sa.PGN)) + for i := range 4 { + sa.raw.Addr[i+8] = p[i] + } + sa.raw.Addr[12] = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. +// SockaddrALG enables userspace access to the Linux kernel's cryptography +// subsystem. The Type and Name fields specify which type of hash or cipher +// should be used with a given socket. +// +// To create a file descriptor that provides access to a hash or cipher, both +// Bind and Accept must be used. Once the setup process is complete, input +// data can be written to the socket, processed by the kernel, and then read +// back as hash output or ciphertext. +// +// Here is an example of using an AF_ALG socket with SHA1 hashing. +// The initial socket setup process is as follows: +// +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// +// Once a file descriptor has been returned from Accept, it may be used to +// perform SHA1 hashing. The descriptor is not safe for concurrent use, but +// may be re-used repeatedly with subsequent Write and Read operations. +// +// When hashing a small byte slice or string, a single Write and Read may +// be used: +// +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// +// For hashing larger byte slices, or byte streams such as those read from +// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update +// the hash digest instead of creating a new one for a given chunk and finalizing it. +// +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// +// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. +type SockaddrALG struct { + Type string + Name string + Feature uint32 + Mask uint32 + raw RawSockaddrALG +} + +func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { + // Leave room for NUL byte terminator. + if len(sa.Type) > len(sa.raw.Type)-1 { + return nil, 0, EINVAL + } + if len(sa.Name) > len(sa.raw.Name)-1 { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_ALG + sa.raw.Feat = sa.Feature + sa.raw.Mask = sa.Mask + + copy(sa.raw.Type[:], sa.Type) + copy(sa.raw.Name[:], sa.Name) + + return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_LOCAL: refers to local communication (loopback). + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + Flags uint8 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + sa.raw.Flags = sa.Flags + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +type SockaddrXDP struct { + Flags uint16 + Ifindex uint32 + QueueID uint32 + SharedUmemFD uint32 + raw RawSockaddrXDP +} + +func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_XDP + sa.raw.Flags = sa.Flags + sa.raw.Ifindex = sa.Ifindex + sa.raw.Queue_id = sa.QueueID + sa.raw.Shared_umem_fd = sa.SharedUmemFD + + return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil +} + +// This constant mirrors the #define of PX_PROTO_OE in +// linux/if_pppox.h. We're defining this by hand here instead of +// autogenerating through mkerrors.sh because including +// linux/if_pppox.h causes some declaration conflicts with other +// includes (linux/if_pppox.h includes linux/in.h, which conflicts +// with netinet/in.h). Given that we only need a single zero constant +// out of that file, it's cleaner to just define it by hand here. +const px_proto_oe = 0 + +type SockaddrPPPoE struct { + SID uint16 + Remote []byte + Dev string + raw RawSockaddrPPPoX +} + +func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) { + if len(sa.Remote) != 6 { + return nil, 0, EINVAL + } + if len(sa.Dev) > IFNAMSIZ-1 { + return nil, 0, EINVAL + } + + *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX + // This next field is in host-endian byte order. We can't use the + // same unsafe pointer cast as above, because this value is not + // 32-bit aligned and some architectures don't allow unaligned + // access. + // + // However, the value of px_proto_oe is 0, so we can use + // encoding/binary helpers to write the bytes without worrying + // about the ordering. + binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe) + // This field is deliberately big-endian, unlike the previous + // one. The kernel expects SID to be in network byte order. + binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID) + copy(sa.raw[8:14], sa.Remote) + clear(sa.raw[14 : 14+IFNAMSIZ]) + copy(sa.raw[14:], sa.Dev) + return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil +} + +// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets. +// For more information on TIPC, see: http://tipc.sourceforge.net/. +type SockaddrTIPC struct { + // Scope is the publication scopes when binding service/service range. + // Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE. + Scope int + + // Addr is the type of address used to manipulate a socket. Addr must be + // one of: + // - *TIPCSocketAddr: "id" variant in the C addr union + // - *TIPCServiceRange: "nameseq" variant in the C addr union + // - *TIPCServiceName: "name" variant in the C addr union + // + // If nil, EINVAL will be returned when the structure is used. + Addr TIPCAddr + + raw RawSockaddrTIPC +} + +// TIPCAddr is implemented by types that can be used as an address for +// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange, +// and *TIPCServiceName. +type TIPCAddr interface { + tipcAddrtype() uint8 + tipcAddr() [12]byte +} + +func (sa *TIPCSocketAddr) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR } + +func (sa *TIPCServiceRange) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE } + +func (sa *TIPCServiceName) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR } + +func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Addr == nil { + return nil, 0, EINVAL + } + sa.raw.Family = AF_TIPC + sa.raw.Scope = int8(sa.Scope) + sa.raw.Addrtype = sa.Addr.tipcAddrtype() + sa.raw.Addr = sa.Addr.tipcAddr() + return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil +} + +// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets. +type SockaddrL2TPIP struct { + Addr [4]byte + ConnId uint32 + raw RawSockaddrL2TPIP +} + +func (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_INET + sa.raw.Conn_id = sa.ConnId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil +} + +// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets. +type SockaddrL2TPIP6 struct { + Addr [16]byte + ZoneId uint32 + ConnId uint32 + raw RawSockaddrL2TPIP6 +} + +func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_INET6 + sa.raw.Conn_id = sa.ConnId + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil +} + +// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets. +type SockaddrIUCV struct { + UserID string + Name string + raw RawSockaddrIUCV +} + +func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_IUCV + // These are EBCDIC encoded by the kernel, but we still need to pad them + // with blanks. Initializing with blanks allows the caller to feed in either + // a padded or an unpadded string. + for i := range 8 { + sa.raw.Nodeid[i] = ' ' + sa.raw.User_id[i] = ' ' + sa.raw.Name[i] = ' ' + } + if len(sa.UserID) > 8 || len(sa.Name) > 8 { + return nil, 0, EINVAL + } + for i, b := range []byte(sa.UserID[:]) { + sa.raw.User_id[i] = int8(b) + } + for i, b := range []byte(sa.Name[:]) { + sa.raw.Name[i] = int8(b) + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil +} + +type SockaddrNFC struct { + DeviceIdx uint32 + TargetIdx uint32 + NFCProtocol uint32 + raw RawSockaddrNFC +} + +func (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sa_family = AF_NFC + sa.raw.Dev_idx = sa.DeviceIdx + sa.raw.Target_idx = sa.TargetIdx + sa.raw.Nfc_protocol = sa.NFCProtocol + return unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil +} + +type SockaddrNFCLLCP struct { + DeviceIdx uint32 + TargetIdx uint32 + NFCProtocol uint32 + DestinationSAP uint8 + SourceSAP uint8 + ServiceName string + raw RawSockaddrNFCLLCP +} + +func (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Sa_family = AF_NFC + sa.raw.Dev_idx = sa.DeviceIdx + sa.raw.Target_idx = sa.TargetIdx + sa.raw.Nfc_protocol = sa.NFCProtocol + sa.raw.Dsap = sa.DestinationSAP + sa.raw.Ssap = sa.SourceSAP + if len(sa.ServiceName) > len(sa.raw.Service_name) { + return nil, 0, EINVAL + } + copy(sa.raw.Service_name[:], sa.ServiceName) + sa.raw.SetServiceNameLen(len(sa.ServiceName)) + return unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil +} + +var socketProtocol = func(fd int) (int, error) { + return GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_NETLINK: + pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa)) + sa := new(SockaddrNetlink) + sa.Family = pp.Family + sa.Pad = pp.Pad + sa.Pid = pp.Pid + sa.Groups = pp.Groups + return sa, nil + + case AF_PACKET: + pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa)) + sa := new(SockaddrLinklayer) + sa.Protocol = pp.Protocol + sa.Ifindex = int(pp.Ifindex) + sa.Hatype = pp.Hatype + sa.Pkttype = pp.Pkttype + sa.Halen = pp.Halen + sa.Addr = pp.Addr + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + + switch proto { + case IPPROTO_L2TP: + pp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa)) + sa := new(SockaddrL2TPIP) + sa.ConnId = pp.Conn_id + sa.Addr = pp.Addr + return sa, nil + default: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + } + + case AF_INET6: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + + switch proto { + case IPPROTO_L2TP: + pp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa)) + sa := new(SockaddrL2TPIP6) + sa.ConnId = pp.Conn_id + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + default: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + Flags: pp.Flags, + } + return sa, nil + case AF_BLUETOOTH: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections + switch proto { + case BTPROTO_L2CAP: + pp := (*RawSockaddrL2)(unsafe.Pointer(rsa)) + sa := &SockaddrL2{ + PSM: pp.Psm, + CID: pp.Cid, + Addr: pp.Bdaddr, + AddrType: pp.Bdaddr_type, + } + return sa, nil + case BTPROTO_RFCOMM: + pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa)) + sa := &SockaddrRFCOMM{ + Channel: pp.Channel, + Addr: pp.Bdaddr, + } + return sa, nil + } + case AF_XDP: + pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa)) + sa := &SockaddrXDP{ + Flags: pp.Flags, + Ifindex: pp.Ifindex, + QueueID: pp.Queue_id, + SharedUmemFD: pp.Shared_umem_fd, + } + return sa, nil + case AF_PPPOX: + pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa)) + if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe { + return nil, EINVAL + } + sa := &SockaddrPPPoE{ + SID: binary.BigEndian.Uint16(pp[6:8]), + Remote: pp[8:14], + } + for i := 14; i < 14+IFNAMSIZ; i++ { + if pp[i] == 0 { + sa.Dev = string(pp[14:i]) + break + } + } + return sa, nil + case AF_TIPC: + pp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa)) + + sa := &SockaddrTIPC{ + Scope: int(pp.Scope), + } + + // Determine which union variant is present in pp.Addr by checking + // pp.Addrtype. + switch pp.Addrtype { + case TIPC_SERVICE_RANGE: + sa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr)) + case TIPC_SERVICE_ADDR: + sa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr)) + case TIPC_SOCKET_ADDR: + sa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr)) + default: + return nil, EINVAL + } + + return sa, nil + case AF_IUCV: + pp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa)) + + var user [8]byte + var name [8]byte + + for i := range 8 { + user[i] = byte(pp.User_id[i]) + name[i] = byte(pp.Name[i]) + } + + sa := &SockaddrIUCV{ + UserID: string(user[:]), + Name: string(name[:]), + } + return sa, nil + + case AF_CAN: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + + pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa)) + + switch proto { + case CAN_J1939: + sa := &SockaddrCANJ1939{ + Ifindex: int(pp.Ifindex), + } + name := (*[8]byte)(unsafe.Pointer(&sa.Name)) + for i := range 8 { + name[i] = pp.Addr[i] + } + pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN)) + for i := range 4 { + pgn[i] = pp.Addr[i+8] + } + addr := (*[1]byte)(unsafe.Pointer(&sa.Addr)) + addr[0] = pp.Addr[12] + return sa, nil + default: + sa := &SockaddrCAN{ + Ifindex: int(pp.Ifindex), + } + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := range 4 { + rx[i] = pp.Addr[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := range 4 { + tx[i] = pp.Addr[i+4] + } + return sa, nil + } + case AF_NFC: + proto, err := socketProtocol(fd) + if err != nil { + return nil, err + } + switch proto { + case NFC_SOCKPROTO_RAW: + pp := (*RawSockaddrNFC)(unsafe.Pointer(rsa)) + sa := &SockaddrNFC{ + DeviceIdx: pp.Dev_idx, + TargetIdx: pp.Target_idx, + NFCProtocol: pp.Nfc_protocol, + } + return sa, nil + case NFC_SOCKPROTO_LLCP: + pp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa)) + if uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) { + return nil, EINVAL + } + sa := &SockaddrNFCLLCP{ + DeviceIdx: pp.Dev_idx, + TargetIdx: pp.Target_idx, + NFCProtocol: pp.Nfc_protocol, + DestinationSAP: pp.Dsap, + SourceSAP: pp.Ssap, + ServiceName: string(pp.Service_name[:pp.Service_name_len]), + } + return sa, nil + default: + return nil, EINVAL + } + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, 0) + if err != nil { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptUcred(fd, level, opt int) (*Ucred, error) { + var value Ucred + vallen := _Socklen(SizeofUcred) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + var value TCPInfo + vallen := _Socklen(SizeofTCPInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPVegasInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPBBRInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + if err == ERANGE { + buf = make([]byte, vallen) + err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + } + if err != nil { + return "", err + } + } + return ByteSliceToString(buf[:vallen]), nil +} + +func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) { + var value TpacketStats + vallen := _Socklen(SizeofTpacketStats) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) { + var value TpacketStatsV3 + vallen := _Socklen(SizeofTpacketStatsV3) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a +// socket to filter incoming packets. See 'man 7 socket' for usage information. +func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error { + return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog)) +} + +func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error { + var p unsafe.Pointer + if len(filter) > 0 { + p = unsafe.Pointer(&filter[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter)) +} + +func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) { + if len(o) == 0 { + return EINVAL + } + return setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o))) +} + +func SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error { + return setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s)) +} + +// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) + +// KeyctlInt calls keyctl commands in which each argument is an int. +// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK, +// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT, +// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT, +// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT. +//sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlBuffer calls keyctl commands in which the third and fourth +// arguments are a buffer and its length, respectively. +// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE. +//sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlString calls keyctl commands which return a string. +// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY. +func KeyctlString(cmd int, id int) (string, error) { + // We must loop as the string data may change in between the syscalls. + // We could allocate a large buffer here to reduce the chance that the + // syscall needs to be called twice; however, this is unnecessary as + // the performance loss is negligible. + var buffer []byte + for { + // Try to fill the buffer with data + length, err := KeyctlBuffer(cmd, id, buffer, 0) + if err != nil { + return "", err + } + + // Check if the data was written + if length <= len(buffer) { + // Exclude the null terminator + return string(buffer[:length-1]), nil + } + + // Make a bigger buffer if needed + buffer = make([]byte, length) + } +} + +// Keyctl commands with special signatures. + +// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html +func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) { + createInt := 0 + if create { + createInt = 1 + } + return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0) +} + +// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the +// key handle permission mask as described in the "keyctl setperm" section of +// http://man7.org/linux/man-pages/man1/keyctl.1.html. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html +func KeyctlSetperm(id int, perm uint32) error { + _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0) + return err +} + +//sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL + +// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html +func KeyctlJoinSessionKeyring(name string) (ringid int, err error) { + return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name) +} + +//sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlSearch implements the KEYCTL_SEARCH command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_search.3.html +func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) { + return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid) +} + +//sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL + +// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This +// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice +// of Iovec (each of which represents a buffer) instead of a single buffer. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html +func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error { + return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid) +} + +//sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL + +// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command +// computes a Diffie-Hellman shared secret based on the provide params. The +// secret is written to the provided buffer and the returned size is the number +// of bytes written (returning an error if there is insufficient space in the +// buffer). If a nil buffer is passed in, this function returns the minimum +// buffer length needed to store the appropriate data. Note that this differs +// from KEYCTL_READ's behavior which always returns the requested payload size. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html +func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) { + return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) +} + +// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This +// command limits the set of keys that can be linked to the keyring, regardless +// of keyring permissions. The command requires the "setattr" permission. +// +// When called with an empty keyType the command locks the keyring, preventing +// any further keys from being linked to the keyring. +// +// The "asymmetric" keyType defines restrictions requiring key payloads to be +// DER encoded X.509 certificates signed by keys in another keyring. Restrictions +// for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted", +// "key_or_keyring:", and "key_or_keyring::chain". +// +// As of Linux 4.12, only the "asymmetric" keyType defines type-specific +// restrictions. +// +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html +// http://man7.org/linux/man-pages/man2/keyctl.2.html +func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error { + if keyType == "" { + return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid) + } + return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) +} + +//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + if emptyIovecs(iov) { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } + // receive at least one normal byte + if sockType != SOCK_DGRAM { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + return +} + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(ptr) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + empty = emptyIovecs(iov) + if empty { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } + // send at least one normal byte + if sockType != SOCK_DGRAM { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +// BindToDevice binds the socket associated with fd to device. +func BindToDevice(fd int, device string) (err error) { + return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device) +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +//sys ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE + +func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) { + // The peek requests are machine-size oriented, so we wrap it + // to retrieve arbitrary-length data. + + // The ptrace syscall differs from glibc's ptrace. + // Peeks returns the word in *data, not as the return value. + + var buf [SizeofPtr]byte + + // Leading edge. PEEKTEXT/PEEKDATA don't require aligned + // access (PEEKUSER warns that it might), but if we don't + // align our reads, we might straddle an unmapped page + // boundary and not get the bytes leading up to the page + // boundary. + n := 0 + if addr%SizeofPtr != 0 { + err = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0])) + if err != nil { + return 0, err + } + n += copy(out, buf[addr%SizeofPtr:]) + out = out[n:] + } + + // Remainder. + for len(out) > 0 { + // We use an internal buffer to guarantee alignment. + // It's not documented if this is necessary, but we're paranoid. + err = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0])) + if err != nil { + return n, err + } + copied := copy(out, buf[0:]) + n += copied + out = out[copied:] + } + + return n, nil +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKDATA, pid, addr, out) +} + +func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKUSR, pid, addr, out) +} + +func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) { + // As for ptracePeek, we need to align our accesses to deal + // with the possibility of straddling an invalid page. + + // Leading edge. + n := 0 + if addr%SizeofPtr != 0 { + var buf [SizeofPtr]byte + err = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0])) + if err != nil { + return 0, err + } + n += copy(buf[addr%SizeofPtr:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word) + if err != nil { + return 0, err + } + data = data[n:] + } + + // Interior. + for len(data) > SizeofPtr { + word := *((*uintptr)(unsafe.Pointer(&data[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += SizeofPtr + data = data[SizeofPtr:] + } + + // Trailing edge. + if len(data) > 0 { + var buf [SizeofPtr]byte + err = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0])) + if err != nil { + return n, err + } + copy(buf[0:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += len(data) + } + + return n, nil +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) +} + +func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) +} + +// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so +// x/sys/unix doesn't need to depend on debug/elf and thus +// compress/zlib, debug/dwarf, and other packages. +const elfNT_PRSTATUS = 1 + +func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { + var iov Iovec + iov.Base = (*byte)(unsafe.Pointer(regsout)) + iov.SetLen(int(unsafe.Sizeof(*regsout))) + return ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov)) +} + +func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) { + var iov Iovec + iov.Base = (*byte)(unsafe.Pointer(regs)) + iov.SetLen(int(unsafe.Sizeof(*regs))) + return ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov)) +} + +func PtraceSetOptions(pid int, options int) (err error) { + return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) +} + +func PtraceGetEventMsg(pid int) (msg uint, err error) { + var data _C_long + err = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data)) + msg = uint(data) + return +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 0, uintptr(signal)) +} + +func PtraceSyscall(pid int, signal int) (err error) { + return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal)) +} + +func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } + +func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) } + +func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } + +func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) } + +func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } + +//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) + +func Reboot(cmd int) (err error) { + return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) + +func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + // Certain file systems get rather angry and EINVAL if you give + // them an empty string of data, rather than NULL. + if data == "" { + return mount(source, target, fstype, flags, nil) + } + datap, err := BytePtrFromString(data) + if err != nil { + return err + } + return mount(source, target, fstype, flags, datap) +} + +//sys mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR + +// MountSetattr is a wrapper for mount_setattr(2). +// https://man7.org/linux/man-pages/man2/mount_setattr.2.html +// +// Requires kernel >= 5.12. +func MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error { + return mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr)) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// Sendto +// Recvfrom +// Socketpair + +/* + * Direct access + */ +//sys Acct(path string) (err error) +//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) +//sys Adjtimex(buf *Timex) (state int, err error) +//sysnb Capget(hdr *CapUserHeader, data *CapUserData) (err error) +//sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error) +//sys ClockGetres(clockid int32, res *Timespec) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockSettime(clockid int32, time *Timespec) (err error) +//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) +//sys Close(fd int) (err error) +//sys CloseRange(first uint, last uint, flags uint) (err error) +//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys DeleteModule(name string, flags int) (err error) +//sys Dup(oldfd int) (fd int, err error) + +func Dup2(oldfd, newfd int) error { + return Dup3(oldfd, newfd, 0) +} + +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sysnb EpollCreate1(flag int) (fd int, err error) +//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 +//sys Exit(code int) = SYS_EXIT_GROUP +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys FinitModule(fd int, params string, flags int) (err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) +//sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) +//sys Fsopen(fsName string, flags int) (fd int, err error) +//sys Fspick(dirfd int, pathName string, flags int) (fd int, err error) + +//sys fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) + +func fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) { + var keyp *byte + if keyp, err = BytePtrFromString(key); err != nil { + return + } + return fsconfig(fd, cmd, keyp, value, aux) +} + +// FsconfigSetFlag is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_FLAG. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +func FsconfigSetFlag(fd int, key string) (err error) { + return fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0) +} + +// FsconfigSetString is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_STRING. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is the parameter value to set. +func FsconfigSetString(fd int, key string, value string) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(value); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0) +} + +// FsconfigSetBinary is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_BINARY. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is the parameter value to set. +func FsconfigSetBinary(fd int, key string, value []byte) (err error) { + if len(value) == 0 { + return EINVAL + } + return fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value)) +} + +// FsconfigSetPath is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_PATH. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// path is a non-empty path for specified key. +// atfd is a file descriptor at which to start lookup from or AT_FDCWD. +func FsconfigSetPath(fd int, key string, path string, atfd int) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(path); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd) +} + +// FsconfigSetPathEmpty is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as +// FconfigSetPath but with AT_PATH_EMPTY implied. +func FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) { + var valuep *byte + if valuep, err = BytePtrFromString(path); err != nil { + return + } + return fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd) +} + +// FsconfigSetFd is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_SET_FD. +// +// fd is the filesystem context to act upon. +// key the parameter key to set. +// value is a file descriptor to be assigned to specified key. +func FsconfigSetFd(fd int, key string, value int) (err error) { + return fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value) +} + +// FsconfigCreate is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_CMD_CREATE. +// +// fd is the filesystem context to act upon. +func FsconfigCreate(fd int) (err error) { + return fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0) +} + +// FsconfigReconfigure is equivalent to fsconfig(2) called +// with cmd == FSCONFIG_CMD_RECONFIGURE. +// +// fd is the filesystem context to act upon. +func FsconfigReconfigure(fd int) (err error) { + return fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0) +} + +//sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 +//sysnb Getpgid(pid int) (pgid int, err error) + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) + +func Getrandom(buf []byte, flags int) (n int, err error) { + vdsoRet, supported := vgetrandom(buf, uint32(flags)) + if supported { + if vdsoRet < 0 { + return 0, errnoErr(syscall.Errno(-vdsoRet)) + } + return vdsoRet, nil + } + var p *byte + if len(buf) > 0 { + p = &buf[0] + } + r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags)) + if e != 0 { + return 0, errnoErr(e) + } + return int(r), nil +} + +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettid() (tid int) +//sys Getxattr(path string, attr string, dest []byte) (sz int, err error) +//sys InitModule(moduleImage []byte, params string) (err error) +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) +//sysnb InotifyInit1(flags int) (fd int, err error) +//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG +//sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error) +//sys Listxattr(path string, dest []byte) (sz int, err error) +//sys Llistxattr(path string, dest []byte) (sz int, err error) +//sys Lremovexattr(path string, attr string) (err error) +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) +//sys MemfdCreate(name string, flags int) (fd int, err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys OpenTree(dfd int, fileName string, flags uint) (r int, err error) +//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) +//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sys pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) +//sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) +//sys Setns(fd int, nstype int) (err error) + +//go:linkname syscall_prlimit syscall.prlimit +func syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error + +func Prlimit(pid, resource int, newlimit, old *Rlimit) error { + // Just call the syscall version, because as of Go 1.21 + // it will affect starting a new process. + return syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old)) +} + +// PrctlRetInt performs a prctl operation specified by option and further +// optional arguments arg2 through arg5 depending on option. It returns a +// non-negative integer that is returned by the prctl syscall. +func PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) { + ret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if err != 0 { + return 0, err + } + return int(ret), nil +} + +func Setuid(uid int) (err error) { + return syscall.Setuid(uid) +} + +func Setgid(gid int) (err error) { + return syscall.Setgid(gid) +} + +func Setreuid(ruid, euid int) (err error) { + return syscall.Setreuid(ruid, euid) +} + +func Setregid(rgid, egid int) (err error) { + return syscall.Setregid(rgid, egid) +} + +func Setresuid(ruid, euid, suid int) (err error) { + return syscall.Setresuid(ruid, euid, suid) +} + +func Setresgid(rgid, egid, sgid int) (err error) { + return syscall.Setresgid(rgid, egid, sgid) +} + +// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set. +// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability. +// If the call fails due to other reasons, current fsgid will be returned. +func SetfsgidRetGid(gid int) (int, error) { + return setfsgid(gid) +} + +// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set. +// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability +// If the call fails due to other reasons, current fsuid will be returned. +func SetfsuidRetUid(uid int) (int, error) { + return setfsuid(uid) +} + +func Setfsgid(gid int) error { + _, err := setfsgid(gid) + return err +} + +func Setfsuid(uid int) error { + _, err := setfsuid(uid) + return err +} + +func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { + return signalfd(fd, sigmask, _C__NSIG/8, flags) +} + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setxattr(path string, attr string, data []byte, flags int) (err error) +//sys signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4 +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Syncfs(fd int) (err error) +//sysnb Sysinfo(info *Sysinfo_t) (err error) +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb TimerfdCreate(clockid int, flags int) (fd int, err error) +//sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error) +//sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) +//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2 +//sys Unshare(flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys exitThread(code int) (err error) = SYS_EXIT +//sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV +//sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV +//sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV +//sys pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV +//sys preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2 +//sys pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2 + +// minIovec is the size of the small initial allocation used by +// Readv, Writev, etc. +// +// This small allocation gets stack allocated, which lets the +// common use case of len(iovs) <= minIovs avoid more expensive +// heap allocations. +const minIovec = 8 + +// appendBytes converts bs to Iovecs and appends them to vecs. +func appendBytes(vecs []Iovec, bs [][]byte) []Iovec { + for _, b := range bs { + var v Iovec + v.SetLen(len(b)) + if len(b) > 0 { + v.Base = &b[0] + } else { + v.Base = (*byte)(unsafe.Pointer(&_zero)) + } + vecs = append(vecs, v) + } + return vecs +} + +// offs2lohi splits offs into its low and high order bits. +func offs2lohi(offs int64) (lo, hi uintptr) { + const longBits = SizeofLong * 8 + return uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet +} + +func Readv(fd int, iovs [][]byte) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + n, err = readv(fd, iovecs) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + lo, hi := offs2lohi(offset) + n, err = preadv(fd, iovecs, lo, hi) + readvRacedetect(iovecs, n, err) + return n, err +} + +func Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + lo, hi := offs2lohi(offset) + n, err = preadv2(fd, iovecs, lo, hi, flags) + readvRacedetect(iovecs, n, err) + return n, err +} + +func readvRacedetect(iovecs []Iovec, n int, err error) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := min(int(iovecs[i].Len), n) + n -= m + if m > 0 { + raceWriteRange(unsafe.Pointer(iovecs[i].Base), m) + } + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } +} + +func Writev(fd int, iovs [][]byte) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = writev(fd, iovecs) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + lo, hi := offs2lohi(offset) + n, err = pwritev(fd, iovecs, lo, hi) + writevRacedetect(iovecs, n) + return n, err +} + +func Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) { + iovecs := make([]Iovec, 0, minIovec) + iovecs = appendBytes(iovecs, iovs) + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + lo, hi := offs2lohi(offset) + n, err = pwritev2(fd, iovecs, lo, hi, flags) + writevRacedetect(iovecs, n) + return n, err +} + +func writevRacedetect(iovecs []Iovec, n int) { + if !raceenabled { + return + } + for i := 0; n > 0 && i < len(iovecs); i++ { + m := min(int(iovecs[i].Len), n) + n -= m + if m > 0 { + raceReadRange(unsafe.Pointer(iovecs[i].Base), m) + } + } +} + +// mmap varies by architecture; see syscall_linux_*.go. +//sys munmap(addr uintptr, length uintptr) (err error) +//sys mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +const ( + mremapFixed = MREMAP_FIXED + mremapDontunmap = MREMAP_DONTUNMAP + mremapMaymove = MREMAP_MAYMOVE +) + +// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, +// using the specified flags. +func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { + var p unsafe.Pointer + if len(iovs) > 0 { + p = unsafe.Pointer(&iovs[0]) + } + + n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0) + if errno != 0 { + return 0, syscall.Errno(errno) + } + + return int(n), nil +} + +func isGroupMember(gid int) bool { + groups, err := Getgroups() + if err != nil { + return false + } + + return slices.Contains(groups, gid) +} + +func isCapDacOverrideSet() bool { + hdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3} + data := [2]CapUserData{} + err := Capget(&hdr, &data[0]) + + return err == nil && data[0].Effective&(1<> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES +} + +//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT +//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT + +// fileHandle is the argument to nameToHandleAt and openByHandleAt. We +// originally tried to generate it via unix/linux/types.go with "type +// fileHandle C.struct_file_handle" but that generated empty structs +// for mips64 and mips64le. Instead, hard code it for now (it's the +// same everywhere else) until the mips64 generator issue is fixed. +type fileHandle struct { + Bytes uint32 + Type int32 +} + +// FileHandle represents the C struct file_handle used by +// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see +// OpenByHandleAt). +type FileHandle struct { + *fileHandle +} + +// NewFileHandle constructs a FileHandle. +func NewFileHandle(handleType int32, handle []byte) FileHandle { + const hdrSize = unsafe.Sizeof(fileHandle{}) + buf := make([]byte, hdrSize+uintptr(len(handle))) + copy(buf[hdrSize:], handle) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Type = handleType + fh.Bytes = uint32(len(handle)) + return FileHandle{fh} +} + +func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) } +func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type } +func (fh *FileHandle) Bytes() []byte { + n := fh.Size() + if n == 0 { + return nil + } + return unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n) +} + +// NameToHandleAt wraps the name_to_handle_at system call; it obtains +// a handle for a path name. +func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) { + var mid _C_int + // Try first with a small buffer, assuming the handle will + // only be 32 bytes. + size := uint32(32 + unsafe.Sizeof(fileHandle{})) + didResize := false + for { + buf := make([]byte, size) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{})) + err = nameToHandleAt(dirfd, path, fh, &mid, flags) + if err == EOVERFLOW { + if didResize { + // We shouldn't need to resize more than once + return + } + didResize = true + size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{})) + continue + } + if err != nil { + return + } + return FileHandle{fh}, int(mid), nil + } +} + +// OpenByHandleAt wraps the open_by_handle_at system call; it opens a +// file via a handle as previously returned by NameToHandleAt. +func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) { + return openByHandleAt(mountFD, handle.fileHandle, flags) +} + +// Klogset wraps the sys_syslog system call; it sets console_loglevel to +// the value specified by arg and passes a dummy pointer to bufp. +func Klogset(typ int, arg int) (err error) { + var p unsafe.Pointer + _, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg)) + if errno != 0 { + return errnoErr(errno) + } + return nil +} + +// RemoteIovec is Iovec with the pointer replaced with an integer. +// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer +// refers to a location in a different process' address space, which +// would confuse the Go garbage collector. +type RemoteIovec struct { + Base uintptr + Len int +} + +//sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV +//sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV + +//sys PidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN +//sys PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD +//sys PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL + +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) +//sys shmdt(addr uintptr) (err error) +//sys shmget(key int, size int, flag int) (id int, err error) + +//sys getitimer(which int, currValue *Itimerval) (err error) +//sys setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) + +// MakeItimerval creates an Itimerval from interval and value durations. +func MakeItimerval(interval, value time.Duration) Itimerval { + return Itimerval{ + Interval: NsecToTimeval(interval.Nanoseconds()), + Value: NsecToTimeval(value.Nanoseconds()), + } +} + +// A value which may be passed to the which parameter for Getitimer and +// Setitimer. +type ItimerWhich int + +// Possible which values for Getitimer and Setitimer. +const ( + ItimerReal ItimerWhich = ITIMER_REAL + ItimerVirtual ItimerWhich = ITIMER_VIRTUAL + ItimerProf ItimerWhich = ITIMER_PROF +) + +// Getitimer wraps getitimer(2) to return the current value of the timer +// specified by which. +func Getitimer(which ItimerWhich) (Itimerval, error) { + var it Itimerval + if err := getitimer(int(which), &it); err != nil { + return Itimerval{}, err + } + + return it, nil +} + +// Setitimer wraps setitimer(2) to arm or disarm the timer specified by which. +// It returns the previous value of the timer. +// +// If the Itimerval argument is the zero value, the timer will be disarmed. +func Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) { + var prev Itimerval + if err := setitimer(int(which), &it, &prev); err != nil { + return Itimerval{}, err + } + + return prev, nil +} + +//sysnb rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK + +func PthreadSigmask(how int, set, oldset *Sigset_t) error { + if oldset != nil { + // Explicitly clear in case Sigset_t is larger than _C__NSIG. + *oldset = Sigset_t{} + } + return rtSigprocmask(how, set, oldset, _C__NSIG/8) +} + +//sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) +//sysnb getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) + +func Getresuid() (ruid, euid, suid int) { + var r, e, s _C_int + getresuid(&r, &e, &s) + return int(r), int(e), int(s) +} + +func Getresgid() (rgid, egid, sgid int) { + var r, e, s _C_int + getresgid(&r, &e, &s) + return int(r), int(e), int(s) +} + +// Pselect is a wrapper around the Linux pselect6 system call. +// This version does not modify the timeout argument. +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + // Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES, + // The Linux pselect6() system call modifies its timeout argument. + // [Not modifying the argument] is the behavior required by POSIX.1-2001. + var mutableTimeout *Timespec + if timeout != nil { + mutableTimeout = new(Timespec) + *mutableTimeout = *timeout + } + + // The final argument of the pselect6() system call is not a + // sigset_t * pointer, but is instead a structure + var kernelMask *sigset_argpack + if sigmask != nil { + wordBits := 32 << (^uintptr(0) >> 63) // see math.intSize + + // A sigset stores one bit per signal, + // offset by 1 (because signal 0 does not exist). + // So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉. + sigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits) + + sigsetBytes := uintptr(sigsetWords * (wordBits / 8)) + kernelMask = &sigset_argpack{ + ss: sigmask, + ssLen: sigsetBytes, + } + } + + return pselect6(nfd, r, w, e, mutableTimeout, kernelMask) +} + +//sys schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) +//sys schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) + +// SchedSetAttr is a wrapper for sched_setattr(2) syscall. +// https://man7.org/linux/man-pages/man2/sched_setattr.2.html +func SchedSetAttr(pid int, attr *SchedAttr, flags uint) error { + if attr == nil { + return EINVAL + } + attr.Size = SizeofSchedAttr + return schedSetattr(pid, attr, flags) +} + +// SchedGetAttr is a wrapper for sched_getattr(2) syscall. +// https://man7.org/linux/man-pages/man2/sched_getattr.2.html +func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { + attr := &SchedAttr{} + if err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil { + return nil, err + } + return attr, nil +} + +//sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) +//sys Mseal(b []byte, flags uint) (err error) + +//sys setMemPolicy(mode int, mask *CPUSet, size int) (err error) = SYS_SET_MEMPOLICY + +func SetMemPolicy(mode int, mask *CPUSet) error { + return setMemPolicy(mode, mask, _CPU_SETSIZE) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_386.go new file mode 100644 index 0000000..506dafa --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -0,0 +1,314 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +// 64-bit file system and 32-bit uid calls +// (386 default is 32-bit file system and 16-bit uid). +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 +//sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32 +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) +//sys Pause() (err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +// On x86 Linux, all the socket calls go through an extra indirection, +// I think because the 5-register system call interface can't handle +// the 6-argument calls like sendto and recvfrom. Instead the +// arguments to the underlying system call are the number below +// and a pointer to an array of uintptr. We hide the pointer in the +// socketcall assembly to avoid allocation on every system call. + +const ( + // see linux/net.h + _SOCKET = 1 + _BIND = 2 + _CONNECT = 3 + _LISTEN = 4 + _ACCEPT = 5 + _GETSOCKNAME = 6 + _GETPEERNAME = 7 + _SOCKETPAIR = 8 + _SEND = 9 + _RECV = 10 + _SENDTO = 11 + _RECVFROM = 12 + _SHUTDOWN = 13 + _SETSOCKOPT = 14 + _GETSOCKOPT = 15 + _SENDMSG = 16 + _RECVMSG = 17 + _ACCEPT4 = 18 + _RECVMMSG = 19 + _SENDMMSG = 20 +) + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e != 0 { + err = e + } + return +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socket(domain int, typ int, proto int) (fd int, err error) { + fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e != 0 { + err = e + } + return +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0) + if e != 0 { + err = e + } + return +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + if e != 0 { + err = e + } + return +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e != 0 { + err = e + } + return +} + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Listen(s int, n int) (err error) { + _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Shutdown(s, how int) (err error) { + _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go new file mode 100644 index 0000000..38d5564 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64) + +package unix + +// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH +// values. + +//sys Alarm(seconds uint) (remaining uint, err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go new file mode 100644 index 0000000..d557cf8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -0,0 +1,145 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys MemfdSecret(flags int) (fd int, err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + // Use fstatat, because Android's seccomp policy blocks stat. + return Fstatat(AT_FDCWD, path, stat, 0) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + errno := gettimeofday(tv) + if errno != 0 { + return errno + } + return nil +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + errno := gettimeofday(&tv) + if errno != 0 { + return 0, errno + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Rip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go new file mode 100644 index 0000000..facdb83 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -0,0 +1,12 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && linux && gc + +package unix + +import "syscall" + +//go:noescape +func gettimeofday(tv *Timeval) (err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm.go new file mode 100644 index 0000000..cd2dd79 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -0,0 +1,216 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +// 64-bit file system and 32-bit uid calls +// (16-bit uid calls are not always supported in newer kernels) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 +//sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32 +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} + +//sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and arm_sync_file_range syscalls differ only in the + // order of their arguments. + return armSyncFileRange(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go new file mode 100644 index 0000000..745e5c7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -0,0 +1,186 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +// Getrlimit prefers the prlimit64 system call. See issue 38604. +func Getrlimit(resource int, rlim *Rlimit) error { + err := Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + return getrlimit(resource, rlim) +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc.go new file mode 100644 index 0000000..ffc4c2b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gc + +package unix + +// SyscallNoError may be used instead of Syscall for syscalls that don't fail. +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) + +// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't +// fail. +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go new file mode 100644 index 0000000..9ebfdcf --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gc && 386 + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go new file mode 100644 index 0000000..5f2b57c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go @@ -0,0 +1,13 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && gc && linux + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go new file mode 100644 index 0000000..d1a3ad8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gccgo && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} + +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go new file mode 100644 index 0000000..f2f6742 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -0,0 +1,20 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && gccgo && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go new file mode 100644 index 0000000..dd2262a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -0,0 +1,218 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 && linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func timespecFromStatxTimestamp(x StatxTimestamp) Timespec { + return Timespec{ + Sec: x.Sec, + Nsec: int64(x.Nsec), + } +} + +func Fstatat(fd int, path string, stat *Stat_t, flags int) error { + var r Statx_t + // Do it the glibc way, add AT_NO_AUTOMOUNT. + if err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil { + return err + } + + stat.Dev = Mkdev(r.Dev_major, r.Dev_minor) + stat.Ino = r.Ino + stat.Mode = uint32(r.Mode) + stat.Nlink = r.Nlink + stat.Uid = r.Uid + stat.Gid = r.Gid + stat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor) + // hope we don't get to process files so large to overflow these size + // fields... + stat.Size = int64(r.Size) + stat.Blksize = int32(r.Blksize) + stat.Blocks = int64(r.Blocks) + stat.Atim = timespecFromStatxTimestamp(r.Atime) + stat.Mtim = timespecFromStatxTimestamp(r.Mtime) + stat.Ctim = timespecFromStatxTimestamp(r.Ctime) + + return nil +} + +func Fstat(fd int, stat *Stat_t) (err error) { + return Fstatat(fd, "", stat, AT_EMPTY_PATH) +} + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + return +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func (r *PtraceRegs) PC() uint64 { return r.Era } + +func (r *PtraceRegs) SetPC(era uint64) { r.Era = era } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go new file mode 100644 index 0000000..70963a9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -0,0 +1,188 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips64 || mips64le) + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +type stat_t struct { + Dev uint32 + Pad0 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad1 [3]uint32 + Size int64 + Atime uint32 + Atime_nsec uint32 + Mtime uint32 + Mtime_nsec uint32 + Ctime uint32 + Ctime_nsec uint32 + Blksize uint32 + Pad2 uint32 + Blocks int64 +} + +//sys fstat(fd int, st *stat_t) (err error) +//sys fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys lstat(path string, st *stat_t) (err error) +//sys stat(path string, st *stat_t) (err error) + +func Fstat(fd int, s *Stat_t) (err error) { + st := &stat_t{} + err = fstat(fd, st) + fillStat_t(s, st) + return +} + +func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) { + st := &stat_t{} + err = fstatat(dirfd, path, st, flags) + fillStat_t(s, st) + return +} + +func Lstat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = lstat(path, st) + fillStat_t(s, st) + return +} + +func Stat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = stat(path, st) + fillStat_t(s, st) + return +} + +func fillStat_t(s *Stat_t, st *stat_t) { + s.Dev = st.Dev + s.Ino = st.Ino + s.Mode = st.Mode + s.Nlink = st.Nlink + s.Uid = st.Uid + s.Gid = st.Gid + s.Rdev = st.Rdev + s.Size = st.Size + s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)} + s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)} + s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)} + s.Blksize = st.Blksize + s.Blocks = st.Blocks +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go new file mode 100644 index 0000000..c218ebd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -0,0 +1,174 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (mips || mipsle) + +package unix + +import ( + "syscall" + "unsafe" +) + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 + +//sys Pause() (err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + p, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0) + if e != 0 { + err = errnoErr(e) + } + return +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go new file mode 100644 index 0000000..e6c4850 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -0,0 +1,204 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && ppc + +package unix + +import ( + "syscall" + "unsafe" +) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +func (r *PtraceRegs) PC() uint32 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint32(length) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go new file mode 100644 index 0000000..7286a9a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -0,0 +1,115 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64 || ppc64le) + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT +//sysnb Getuid() (uid int) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go new file mode 100644 index 0000000..8cf3670 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -0,0 +1,191 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return pselect6(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} + +//sys riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) + +func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) { + var setSize uintptr + + if set != nil { + setSize = uintptr(unsafe.Sizeof(*set)) + } + return riscvHWProbe(pairs, setSize, set, flags) +} + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go new file mode 100644 index 0000000..66f3121 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -0,0 +1,296 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build s390x && linux + +package unix + +import ( + "unsafe" +) + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct. +// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in . +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)} + r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// On s390x Linux, all the socket calls go through an extra indirection. +// The arguments to the underlying system call (SYS_SOCKETCALL) are the +// number below and a pointer to an array of uintptr. +const ( + // see linux/net.h + netSocket = 1 + netBind = 2 + netConnect = 3 + netListen = 4 + netAccept = 5 + netGetSockName = 6 + netGetPeerName = 7 + netSocketPair = 8 + netSend = 9 + netRecv = 10 + netSendTo = 11 + netRecvFrom = 12 + netShutdown = 13 + netSetSockOpt = 14 + netGetSockOpt = 15 + netSendMsg = 16 + netRecvMsg = 17 + netAccept4 = 18 + netRecvMMsg = 19 + netSendMMsg = 20 +) + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) { + args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) error { + args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socket(domain int, typ int, proto int) (int, error) { + args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)} + fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))} + _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen} + _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func Listen(s int, n int) error { + args := [2]uintptr{uintptr(s), uintptr(n)} + _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func Shutdown(s, how int) error { + args := [2]uintptr{uintptr(s), uintptr(how)} + _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go new file mode 100644 index 0000000..11d1f16 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -0,0 +1,112 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build sparc64 && linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func (r *PtraceRegs) PC() uint64 { return r.Tpc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd.go new file mode 100644 index 0000000..34a4676 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -0,0 +1,388 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// NetBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, CTL_QUERY) + qnode := Sysctlnode{Flags: SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err = sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes = make([]Sysctlnode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err = sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) (mib []_C_int, err error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, _C_int(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, EINVAL + } + } + + return mib, nil +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + return &u, nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +//sys Getdents(fd int, buf []byte) (n int, err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { + var value Ptmget + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func Fstatvfs(fd int, buf *Statvfs_t) (err error) { + return Fstatvfs1(fd, buf, ST_WAIT) +} + +func Statvfs(path string, buf *Statvfs_t) (err error) { + return Statvfs1(path, buf, ST_WAIT) +} + +func Getvfsstat(buf []Statvfs_t, flags int) (n int, err error) { + var ( + _p0 unsafe.Pointer + bufsize uintptr + ) + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statvfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETVFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Dup3(from int, to int, flags int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1 +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1 +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +const ( + mremapFixed = MAP_FIXED + mremapDontunmap = 0 + mremapMaymove = 0 +) + +//sys mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP + +func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) { + return mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go new file mode 100644 index 0000000..7a5eb57 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go new file mode 100644 index 0000000..62d8957 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go new file mode 100644 index 0000000..ce6a068 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -0,0 +1,37 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go new file mode 100644 index 0000000..d46d689 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -0,0 +1,37 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd.go new file mode 100644 index 0000000..b86ded5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -0,0 +1,342 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// OpenBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sort" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 + raw RawSockaddrDatalink +} + +func anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + return nil, EAFNOSUPPORT +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func nametomib(name string) (mib []_C_int, err error) { + i := sort.Search(len(sysctlMib), func(i int) bool { + return sysctlMib[i].ctlname >= name + }) + if i < len(sysctlMib) && sysctlMib[i].ctlname == name { + return sysctlMib[i].ctloid, nil + } + return nil, EINVAL +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofUvmexp { + return nil, EIO + } + return &u, nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +//sys Getdents(fd int, buf []byte) (n int, err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO was allowed by getdirentries. + err = EIO + } + return +} + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var bufptr *Statfs_t + var bufsize uintptr + if len(buf) > 0 { + bufptr = &buf[0] + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(bufptr, bufsize, flags) +} + +//sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) +//sysnb getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) + +func Getresuid() (ruid, euid, suid int) { + var r, e, s _C_int + getresuid(&r, &e, &s) + return int(r), int(e), int(s) +} + +func Getresgid() (rgid, egid, sgid int) { + var r, e, s _C_int + getresgid(&r, &e, &s) + return int(r), int(e), int(s) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) +//sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +//sys fcntl(fd int, cmd int, arg int) (n int, err error) +//sys fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + return fcntl(int(fd), cmd, arg) +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk)) + return err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Dup3(from int, to int, flags int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrtable() (rtable int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrtable(rtable int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) +//sys pledge(promises *byte, execpromises *byte) (err error) +//sys unveil(path *byte, flags *byte) (err error) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go new file mode 100644 index 0000000..9ddc89f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -0,0 +1,41 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go new file mode 100644 index 0000000..70a3c96 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -0,0 +1,41 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 0000000..265caa8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,41 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go new file mode 100644 index 0000000..ac4fda1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build arm64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go new file mode 100644 index 0000000..0a451e6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go @@ -0,0 +1,26 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build openbsd + +package unix + +import _ "unsafe" + +// Implemented in the runtime package (runtime/sys_openbsd3.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall10 syscall.syscall10 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 + +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) { + return syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go new file mode 100644 index 0000000..1378489 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of OpenBSD the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go new file mode 100644 index 0000000..30a308c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build ppc64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go new file mode 100644 index 0000000..ea95433 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris.go new file mode 100644 index 0000000..a6a2ea0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -0,0 +1,1183 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Solaris system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_solaris.go or syscall_unix.go. + +package unix + +import ( + "fmt" + "os" + "runtime" + "sync" + "syscall" + "unsafe" +) + +// Implemented in runtime/syscall_solaris.go. +type syscallFunc uintptr + +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 + raw RawSockaddrDatalink +} + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +//sysnb pipe(p *[2]_C_int) (n int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + n, err := pipe(&pp) + if n != 0 { + return err + } + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return nil +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + if err == nil { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return err +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return ByteSliceToString(buf[:vallen]), nil +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + // Getcwd will return an error if it failed for any reason. + _, err = Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + // Check for error and sanity check group count. Newer versions of + // Solaris allow up to 1024 (NGROUPS_MAX). + if n < 0 || n > 1024 { + if err != nil { + return nil, err + } + return nil, EINVAL + } else if n == 0 { + return nil, nil + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if n == -1 { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +// ReadDirent reads directory entries from fd and writes them into buf. +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // TODO(rsc): Can we use a single global basep for all calls? + return Getdents(fd, buf, new(uintptr)) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) { + var status _C_int + rpid, err := wait4(int32(pid), &status, options, rusage) + wpid := int(rpid) + if wpid == -1 { + return wpid, err + } + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return wpid, nil +} + +//sys gethostname(buf []byte) (n int, err error) + +func Gethostname() (name string, err error) { + var buf [MaxHostNameLen]byte + n, err := gethostname(buf[:]) + if n != 0 { + return "", err + } + n = clen(buf[:]) + if n < 1 { + return "", EFAULT + } + return string(buf[:n]), nil +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0) + if e1 != 0 { + return e1 + } + return nil +} + +//sys futimesat(fildes int, path *byte, times *[2]Timeval) (err error) + +func Futimesat(dirfd int, path string, tv []Timeval) error { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + if tv == nil { + return futimesat(dirfd, pathp, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// Solaris doesn't have an futimes function because it allows NULL to be +// specified as the path for futimesat. However, Go doesn't like +// NULL-style string interfaces, so this simple wrapper is provided. +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimesat(fd, nil, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // Assume path ends at NUL. + // This is not technically the Solaris semantics for + // abstract Unix domain sockets -- they are supposed + // to be uninterpreted fixed-size binary blobs -- but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return nil, EAFNOSUPPORT +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg + +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Accrightslen = int32(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Accrightslen) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg + +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var dummy byte + var empty bool + if len(oob) > 0 { + // send at least one normal byte + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] + } + msg.Accrightslen = int32(len(oob)) + } + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && empty { + n = 0 + } + return n, nil +} + +//sys acct(path *byte) (err error) + +func Acct(path string) (err error) { + if len(path) == 0 { + // Assume caller wants to disable accounting. + return acct(nil) + } + + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + return acct(pathp) +} + +//sys __makedev(version int, major uint, minor uint) (val uint64) + +func Mkdev(major, minor uint32) uint64 { + return __makedev(NEWDEV, uint(major), uint(minor)) +} + +//sys __major(version int, dev uint64) (val uint) + +func Major(dev uint64) uint32 { + return uint32(__major(NEWDEV, dev)) +} + +//sys __minor(version int, dev uint64) (val uint) + +func Minor(dev uint64) uint32 { + return uint32(__minor(NEWDEV, dev)) +} + +/* + * Expose the ioctl function + */ + +//sys ioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl +//sys ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl + +func ioctl(fd int, req int, arg uintptr) (err error) { + _, err = ioctlRet(fd, req, arg) + return err +} + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + _, err = ioctlPtrRet(fd, req, arg) + return err +} + +func IoctlSetTermio(fd int, req int, value *Termio) error { + return ioctlPtr(fd, req, unsafe.Pointer(value)) +} + +func IoctlGetTermio(fd int, req int) (*Termio, error) { + var value Termio + err := ioctlPtr(fd, req, unsafe.Pointer(&value)) + return &value, err +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Creat(path string, mode uint32) (fd int, err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) +//sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgid int, err error) +//sys Geteuid() (euid int) +//sys Getegid() (egid int) +//sys Getppid() (ppid int) +//sys Getpriority(which int, who int) (n int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_listen +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pause() (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Setuid(uid int) (err error) +//sys Shutdown(s int, how int) (err error) = libsocket.shutdown +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs(path string, vfsstat *Statvfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Sync() (err error) +//sys Sysconf(which int) (n int64, err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sys Truncate(path string, length int64) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = libc.umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto +//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair +//sys write(fd int, p []byte) (n int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom + +// Event Ports + +type fileObjCookie struct { + fobj *fileObj + cookie interface{} +} + +// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports. +type EventPort struct { + port int + mu sync.Mutex + fds map[uintptr]*fileObjCookie + paths map[string]*fileObjCookie + // The user cookie presents an interesting challenge from a memory management perspective. + // There are two paths by which we can discover that it is no longer in use: + // 1. The user calls port_dissociate before any events fire + // 2. An event fires and we return it to the user + // The tricky situation is if the event has fired in the kernel but + // the user hasn't requested/received it yet. + // If the user wants to port_dissociate before the event has been processed, + // we should handle things gracefully. To do so, we need to keep an extra + // reference to the cookie around until the event is processed + // thus the otherwise seemingly extraneous "cookies" map + // The key of this map is a pointer to the corresponding fCookie + cookies map[*fileObjCookie]struct{} +} + +// PortEvent is an abstraction of the port_event C struct. +// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD +// to see if Path or Fd was the event source. The other will be +// uninitialized. +type PortEvent struct { + Cookie interface{} + Events int32 + Fd uintptr + Path string + Source uint16 + fobj *fileObj +} + +// NewEventPort creates a new EventPort including the +// underlying call to port_create(3c). +func NewEventPort() (*EventPort, error) { + port, err := port_create() + if err != nil { + return nil, err + } + e := &EventPort{ + port: port, + fds: make(map[uintptr]*fileObjCookie), + paths: make(map[string]*fileObjCookie), + cookies: make(map[*fileObjCookie]struct{}), + } + return e, nil +} + +//sys port_create() (n int, err error) +//sys port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) +//sys port_dissociate(port int, source int, object uintptr) (n int, err error) +//sys port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) +//sys port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) + +// Close closes the event port. +func (e *EventPort) Close() error { + e.mu.Lock() + defer e.mu.Unlock() + err := Close(e.port) + if err != nil { + return err + } + e.fds = nil + e.paths = nil + e.cookies = nil + return nil +} + +// PathIsWatched checks to see if path is associated with this EventPort. +func (e *EventPort) PathIsWatched(path string) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.paths[path] + return found +} + +// FdIsWatched checks to see if fd is associated with this EventPort. +func (e *EventPort) FdIsWatched(fd uintptr) bool { + e.mu.Lock() + defer e.mu.Unlock() + _, found := e.fds[fd] + return found +} + +// AssociatePath wraps port_associate(3c) for a filesystem path including +// creating the necessary file_obj from the provided stat information. +func (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.paths[path]; found { + return fmt.Errorf("%v is already associated with this Event Port", path) + } + fCookie, err := createFileObjCookie(path, stat, cookie) + if err != nil { + return err + } + _, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie))) + if err != nil { + return err + } + e.paths[path] = fCookie + e.cookies[fCookie] = struct{}{} + return nil +} + +// DissociatePath wraps port_dissociate(3c) for a filesystem path. +func (e *EventPort) DissociatePath(path string) error { + e.mu.Lock() + defer e.mu.Unlock() + f, ok := e.paths[path] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", path) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj))) + // If the path is no longer associated with this event port (ENOENT) + // we should delete it from our map. We can still return ENOENT to the caller. + // But we need to save the cookie + if err != nil && err != ENOENT { + return err + } + if err == nil { + // dissociate was successful, safe to delete the cookie + fCookie := e.paths[path] + delete(e.cookies, fCookie) + } + delete(e.paths, path) + return err +} + +// AssociateFd wraps calls to port_associate(3c) on file descriptors. +func (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) error { + e.mu.Lock() + defer e.mu.Unlock() + if _, found := e.fds[fd]; found { + return fmt.Errorf("%v is already associated with this Event Port", fd) + } + fCookie, err := createFileObjCookie("", nil, cookie) + if err != nil { + return err + } + _, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie))) + if err != nil { + return err + } + e.fds[fd] = fCookie + e.cookies[fCookie] = struct{}{} + return nil +} + +// DissociateFd wraps calls to port_dissociate(3c) on file descriptors. +func (e *EventPort) DissociateFd(fd uintptr) error { + e.mu.Lock() + defer e.mu.Unlock() + _, ok := e.fds[fd] + if !ok { + return fmt.Errorf("%v is not associated with this Event Port", fd) + } + _, err := port_dissociate(e.port, PORT_SOURCE_FD, fd) + if err != nil && err != ENOENT { + return err + } + if err == nil { + // dissociate was successful, safe to delete the cookie + fCookie := e.fds[fd] + delete(e.cookies, fCookie) + } + delete(e.fds, fd) + return err +} + +func createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) { + fCookie := new(fileObjCookie) + fCookie.cookie = cookie + if name != "" && stat != nil { + fCookie.fobj = new(fileObj) + bs, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + fCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0])) + s := stat.Sys().(*syscall.Stat_t) + fCookie.fobj.Atim.Sec = s.Atim.Sec + fCookie.fobj.Atim.Nsec = s.Atim.Nsec + fCookie.fobj.Mtim.Sec = s.Mtim.Sec + fCookie.fobj.Mtim.Nsec = s.Mtim.Nsec + fCookie.fobj.Ctim.Sec = s.Ctim.Sec + fCookie.fobj.Ctim.Nsec = s.Ctim.Nsec + } + return fCookie, nil +} + +// GetOne wraps port_get(3c) and returns a single PortEvent. +func (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) { + pe := new(portEvent) + _, err := port_get(e.port, pe, t) + if err != nil { + return nil, err + } + p := new(PortEvent) + e.mu.Lock() + defer e.mu.Unlock() + err = e.peIntToExt(pe, p) + if err != nil { + return nil, err + } + return p, nil +} + +// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent +// NOTE: Always call this function while holding the e.mu mutex +func (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error { + if e.cookies == nil { + return fmt.Errorf("this EventPort is already closed") + } + peExt.Events = peInt.Events + peExt.Source = peInt.Source + fCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User)) + _, found := e.cookies[fCookie] + + if !found { + panic("unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254") + } + peExt.Cookie = fCookie.cookie + delete(e.cookies, fCookie) + + switch peInt.Source { + case PORT_SOURCE_FD: + peExt.Fd = uintptr(peInt.Object) + // Only remove the fds entry if it exists and this cookie matches + if fobj, ok := e.fds[peExt.Fd]; ok { + if fobj == fCookie { + delete(e.fds, peExt.Fd) + } + } + case PORT_SOURCE_FILE: + peExt.fobj = fCookie.fobj + peExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name))) + // Only remove the paths entry if it exists and this cookie matches + if fobj, ok := e.paths[peExt.Path]; ok { + if fobj == fCookie { + delete(e.paths, peExt.Path) + } + } + } + return nil +} + +// Pending wraps port_getn(3c) and returns how many events are pending. +func (e *EventPort) Pending() (int, error) { + var n uint32 = 0 + _, err := port_getn(e.port, nil, 0, &n, nil) + return int(n), err +} + +// Get wraps port_getn(3c) and fills a slice of PortEvent. +// It will block until either min events have been received +// or the timeout has been exceeded. It will return how many +// events were actually received along with any error information. +func (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) { + if min == 0 { + return 0, fmt.Errorf("need to request at least one event or use Pending() instead") + } + if len(s) < min { + return 0, fmt.Errorf("len(s) (%d) is less than min events requested (%d)", len(s), min) + } + got := uint32(min) + max := uint32(len(s)) + var err error + ps := make([]portEvent, max) + _, err = port_getn(e.port, &ps[0], max, &got, timeout) + // got will be trustworthy with ETIME, but not any other error. + if err != nil && err != ETIME { + return 0, err + } + e.mu.Lock() + defer e.mu.Unlock() + valid := 0 + for i := 0; i < int(got); i++ { + err2 := e.peIntToExt(&ps[i], &s[i]) + if err2 != nil { + if valid == 0 && err == nil { + // If err2 is the only error and there are no valid events + // to return, return it to the caller. + err = err2 + } + break + } + valid = i + 1 + } + return valid, err +} + +//sys putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) + +func Putmsg(fd int, cl []byte, data []byte, flags int) (err error) { + var clp, datap *strbuf + if len(cl) > 0 { + clp = &strbuf{ + Len: int32(len(cl)), + Buf: (*int8)(unsafe.Pointer(&cl[0])), + } + } + if len(data) > 0 { + datap = &strbuf{ + Len: int32(len(data)), + Buf: (*int8)(unsafe.Pointer(&data[0])), + } + } + return putmsg(fd, clp, datap, flags) +} + +//sys getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) + +func Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) { + var clp, datap *strbuf + if len(cl) > 0 { + clp = &strbuf{ + Maxlen: int32(len(cl)), + Buf: (*int8)(unsafe.Pointer(&cl[0])), + } + } + if len(data) > 0 { + datap = &strbuf{ + Maxlen: int32(len(data)), + Buf: (*int8)(unsafe.Pointer(&data[0])), + } + } + + if err = getmsg(fd, clp, datap, &flags); err != nil { + return nil, nil, 0, err + } + + if len(cl) > 0 { + retCl = cl[:clp.Len] + } + if len(data) > 0 { + retData = data[:datap.Len] + } + return retCl, retData, flags, nil +} + +func IoctlSetIntRetInt(fd int, req int, arg int) (int, error) { + return ioctlRet(fd, req, uintptr(arg)) +} + +// Lifreq Helpers + +func (l *Lifreq) SetName(name string) error { + if len(name) >= len(l.Name) { + return fmt.Errorf("name cannot be more than %d characters", len(l.Name)-1) + } + for i := range name { + l.Name[i] = int8(name[i]) + } + return nil +} + +func (l *Lifreq) SetLifruInt(d int) { + *(*int)(unsafe.Pointer(&l.Lifru[0])) = d +} + +func (l *Lifreq) GetLifruInt() int { + return *(*int)(unsafe.Pointer(&l.Lifru[0])) +} + +func (l *Lifreq) SetLifruUint(d uint) { + *(*uint)(unsafe.Pointer(&l.Lifru[0])) = d +} + +func (l *Lifreq) GetLifruUint() uint { + return *(*uint)(unsafe.Pointer(&l.Lifru[0])) +} + +func IoctlLifreq(fd int, req int, l *Lifreq) error { + return ioctlPtr(fd, req, unsafe.Pointer(l)) +} + +// Strioctl Helpers + +func (s *Strioctl) SetInt(i int) { + s.Len = int32(unsafe.Sizeof(i)) + s.Dp = (*int8)(unsafe.Pointer(&i)) +} + +func IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) { + return ioctlPtrRet(fd, req, unsafe.Pointer(s)) +} + +// Ucred Helpers +// See ucred(3c) and getpeerucred(3c) + +//sys getpeerucred(fd uintptr, ucred *uintptr) (err error) +//sys ucredFree(ucred uintptr) = ucred_free +//sys ucredGet(pid int) (ucred uintptr, err error) = ucred_get +//sys ucredGeteuid(ucred uintptr) (uid int) = ucred_geteuid +//sys ucredGetegid(ucred uintptr) (gid int) = ucred_getegid +//sys ucredGetruid(ucred uintptr) (uid int) = ucred_getruid +//sys ucredGetrgid(ucred uintptr) (gid int) = ucred_getrgid +//sys ucredGetsuid(ucred uintptr) (uid int) = ucred_getsuid +//sys ucredGetsgid(ucred uintptr) (gid int) = ucred_getsgid +//sys ucredGetpid(ucred uintptr) (pid int) = ucred_getpid + +// Ucred is an opaque struct that holds user credentials. +type Ucred struct { + ucred uintptr +} + +// We need to ensure that ucredFree is called on the underlying ucred +// when the Ucred is garbage collected. +func ucredFinalizer(u *Ucred) { + ucredFree(u.ucred) +} + +func GetPeerUcred(fd uintptr) (*Ucred, error) { + var ucred uintptr + err := getpeerucred(fd, &ucred) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func UcredGet(pid int) (*Ucred, error) { + ucred, err := ucredGet(pid) + if err != nil { + return nil, err + } + result := &Ucred{ + ucred: ucred, + } + // set the finalizer on the result so that the ucred will be freed + runtime.SetFinalizer(result, ucredFinalizer) + return result, nil +} + +func (u *Ucred) Geteuid() int { + defer runtime.KeepAlive(u) + return ucredGeteuid(u.ucred) +} + +func (u *Ucred) Getruid() int { + defer runtime.KeepAlive(u) + return ucredGetruid(u.ucred) +} + +func (u *Ucred) Getsuid() int { + defer runtime.KeepAlive(u) + return ucredGetsuid(u.ucred) +} + +func (u *Ucred) Getegid() int { + defer runtime.KeepAlive(u) + return ucredGetegid(u.ucred) +} + +func (u *Ucred) Getrgid() int { + defer runtime.KeepAlive(u) + return ucredGetrgid(u.ucred) +} + +func (u *Ucred) Getsgid() int { + defer runtime.KeepAlive(u) + return ucredGetsgid(u.ucred) +} + +func (u *Ucred) Getpid() int { + defer runtime.KeepAlive(u) + return ucredGetpid(u.ucred) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go new file mode 100644 index 0000000..e02d8ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -0,0 +1,27 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build amd64 && solaris + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix.go new file mode 100644 index 0000000..de6fccf --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -0,0 +1,619 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris + +package unix + +import ( + "bytes" + "sort" + "sync" + "syscall" + "unsafe" +) + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e syscall.Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal, len(signalList)) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Use unsafe to convert addr into a []byte. + b := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset) + return unsafe.Pointer(xaddr), err +} + +func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) { + return mapper.munmap(uintptr(addr), length) +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + n, err = pread(fd, p, offset) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = pwrite(fd, p, offset) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +// Recvmsg receives a message from a socket using the recvmsg system call. The +// received non-control data will be written to p, and any "out of band" +// control data will be written to oob. The flags are passed to recvmsg. +// +// The results are: +// - n is the number of non-control data bytes read into p +// - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage] +// - recvflags is flags returned by recvmsg +// - from is the address of the sender +// +// If the underlying socket type is not SOCK_DGRAM, a received message +// containing oob data and a single '\0' of non-control data is treated as if +// the message contained only control data, i.e. n will be zero on return. +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } + var rsa RawSockaddrAny + if n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa); err != nil { + return + } + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +// RecvmsgBuffers receives a message from a socket using the recvmsg system +// call. This function is equivalent to Recvmsg, but non-control data read is +// scattered into the buffers slices. +func RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var rsa RawSockaddrAny + if n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +// Sendmsg sends a message on a socket to an address using the sendmsg system +// call. This function is equivalent to SendmsgN, but does not return the +// number of bytes actually sent. +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +// SendmsgN sends a message on a socket to an address using the sendmsg system +// call. p contains the non-control data to send, and oob contains the "out of +// band" control data. The flags are passed to sendmsg. The number of +// non-control bytes actually written to the socket is returned. +// +// Some socket types do not support sending control data without accompanying +// non-control data. If p is empty, and oob contains control data, and the +// underlying socket type is not SOCK_DGRAM, p will be treated as containing a +// single '\0' and the return value will indicate zero bytes sent. +// +// The Go function Recvmsg, if called with an empty p and a non-empty oob, +// will read and ignore this additional '\0'. If the message is received by +// code that does not use Recvmsg, or that does not use Go at all, that code +// will need to be written to expect and ignore the additional '\0'. +// +// If you need to send non-empty oob with p actually empty, and if the +// underlying socket type supports it, you can do so via a raw system call as +// follows: +// +// msg := &unix.Msghdr{ +// Control: &oob[0], +// } +// msg.SetControllen(len(oob)) +// n, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags) +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + return sendmsgN(fd, iov[:], oob, ptr, salen, flags) +} + +// SendmsgBuffers sends a message on a socket to an address using the sendmsg +// system call. This function is equivalent to SendmsgN, but the non-control +// data is gathered from buffers. +func SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + return sendmsgN(fd, iov, oob, ptr, salen, flags) +} + +func Send(s int, buf []byte, flags int) (err error) { + return sendto(s, buf, flags, nil, 0) +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return err + } + } + return sendto(fd, p, flags, ptr, salen) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if (flag&O_NONBLOCK != 0) == nonblocking { + return nil + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +// Lutimes sets the access and modification times tv on path. If path refers to +// a symlink, it is not dereferenced and the timestamps are set on the symlink. +// If tv is nil, the access and modification times are set to the current time. +// Otherwise tv must contain exactly 2 elements, with access time as the first +// element and modification time as the second element. +func Lutimes(path string, tv []Timeval) error { + if tv == nil { + return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW) + } + if len(tv) != 2 { + return EINVAL + } + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) +} + +// emptyIovecs reports whether there are no bytes in the slice of Iovec. +func emptyIovecs(iov []Iovec) bool { + for i := range iov { + if iov[i].Len > 0 { + return false + } + } + return true +} + +// Setrlimit sets a resource limit. +func Setrlimit(resource int, rlim *Rlimit) error { + // Just call the syscall version, because as of Go 1.21 + // it will affect starting a new process. + return syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc.go new file mode 100644 index 0000000..05c95bc --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -0,0 +1,14 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go new file mode 100644 index 0000000..23f39b7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -0,0 +1,22 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && (ppc64le || ppc64) && gc + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall(trap, a1, a2, a3) +} +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) +} +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall(trap, a1, a2, a3) +} +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go new file mode 100644 index 0000000..7bf5c04 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -0,0 +1,3213 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Many of the following syscalls are not available on all versions of z/OS. +// Some missing calls have legacy implementations/simulations but others +// will be missing completely. To achieve consistent failing behaviour on +// legacy systems, we first test the function pointer via a safeloading +// mechanism to see if the function exists on a given system. Then execution +// is branched to either continue the function call, or return an error. + +package unix + +import ( + "bytes" + "fmt" + "os" + "reflect" + "regexp" + "runtime" + "sort" + "strings" + "sync" + "syscall" + "unsafe" +) + +//go:noescape +func initZosLibVec() + +//go:noescape +func GetZosLibVec() uintptr + +func init() { + initZosLibVec() + r0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte("__ZOS_XSYSTRACE\x00"))[0]))) + if r0 != 0 { + n, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0) + ZosTraceLevel = int(n) + r0, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS_____GETENV_A<<4, uintptr(unsafe.Pointer(&([]byte("__ZOS_XSYSTRACEFD\x00"))[0]))) + if r0 != 0 { + fd, _, _ := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___ATOI_A<<4, r0) + f := os.NewFile(fd, "zostracefile") + if f != nil { + ZosTracefile = f + } + } + + } +} + +//go:noescape +func CallLeFuncWithErr(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno) + +//go:noescape +func CallLeFuncWithPtrReturn(funcdesc uintptr, parms ...uintptr) (ret, errno2 uintptr, err Errno) + +// ------------------------------- +// pointer validity test +// good pointer returns 0 +// bad pointer returns 1 +// +//go:nosplit +func ptrtest(uintptr) uint64 + +// Load memory at ptr location with error handling if the location is invalid +// +//go:noescape +func safeload(ptr uintptr) (value uintptr, error uintptr) + +const ( + entrypointLocationOffset = 8 // From function descriptor + + xplinkEyecatcher = 0x00c300c500c500f1 // ".C.E.E.1" + eyecatcherOffset = 16 // From function entrypoint (negative) + ppa1LocationOffset = 8 // From function entrypoint (negative) + + nameLenOffset = 0x14 // From PPA1 start + nameOffset = 0x16 // From PPA1 start +) + +func getPpaOffset(funcptr uintptr) int64 { + entrypoint, err := safeload(funcptr + entrypointLocationOffset) + if err != 0 { + return -1 + } + + // XPLink functions have ".C.E.E.1" as the first 8 bytes (EBCDIC) + val, err := safeload(entrypoint - eyecatcherOffset) + if err != 0 { + return -1 + } + if val != xplinkEyecatcher { + return -1 + } + + ppaoff, err := safeload(entrypoint - ppa1LocationOffset) + if err != 0 { + return -1 + } + + ppaoff >>= 32 + return int64(ppaoff) +} + +//------------------------------- +// function descriptor pointer validity test +// good pointer returns 0 +// bad pointer returns 1 + +// TODO: currently mksyscall_zos_s390x.go generate empty string for funcName +// have correct funcName pass to the funcptrtest function +func funcptrtest(funcptr uintptr, funcName string) uint64 { + entrypoint, err := safeload(funcptr + entrypointLocationOffset) + if err != 0 { + return 1 + } + + ppaoff := getPpaOffset(funcptr) + if ppaoff == -1 { + return 1 + } + + // PPA1 offset value is from the start of the entire function block, not the entrypoint + ppa1 := (entrypoint - eyecatcherOffset) + uintptr(ppaoff) + + nameLen, err := safeload(ppa1 + nameLenOffset) + if err != 0 { + return 1 + } + + nameLen >>= 48 + if nameLen > 128 { + return 1 + } + + // no function name input to argument end here + if funcName == "" { + return 0 + } + + var funcname [128]byte + for i := 0; i < int(nameLen); i += 8 { + v, err := safeload(ppa1 + nameOffset + uintptr(i)) + if err != 0 { + return 1 + } + funcname[i] = byte(v >> 56) + funcname[i+1] = byte(v >> 48) + funcname[i+2] = byte(v >> 40) + funcname[i+3] = byte(v >> 32) + funcname[i+4] = byte(v >> 24) + funcname[i+5] = byte(v >> 16) + funcname[i+6] = byte(v >> 8) + funcname[i+7] = byte(v) + } + + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l + []uintptr{uintptr(unsafe.Pointer(&funcname[0])), nameLen}) + + name := string(funcname[:nameLen]) + if name != funcName { + return 1 + } + + return 0 +} + +// For detection of capabilities on a system. +// Is function descriptor f a valid function? +func isValidLeFunc(f uintptr) error { + ret := funcptrtest(f, "") + if ret != 0 { + return fmt.Errorf("Bad pointer, not an LE function ") + } + return nil +} + +// Retrieve function name from descriptor +func getLeFuncName(f uintptr) (string, error) { + // assume it has been checked, only check ppa1 validity here + entry := ((*[2]uintptr)(unsafe.Pointer(f)))[1] + preamp := ((*[4]uint32)(unsafe.Pointer(entry - eyecatcherOffset))) + + offsetPpa1 := preamp[2] + if offsetPpa1 > 0x0ffff { + return "", fmt.Errorf("PPA1 offset seems too big 0x%x\n", offsetPpa1) + } + + ppa1 := uintptr(unsafe.Pointer(preamp)) + uintptr(offsetPpa1) + res := ptrtest(ppa1) + if res != 0 { + return "", fmt.Errorf("PPA1 address not valid") + } + + size := *(*uint16)(unsafe.Pointer(ppa1 + nameLenOffset)) + if size > 128 { + return "", fmt.Errorf("Function name seems too long, length=%d\n", size) + } + + var name [128]byte + funcname := (*[128]byte)(unsafe.Pointer(ppa1 + nameOffset)) + copy(name[0:size], funcname[0:size]) + + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, // __e2a_l + []uintptr{uintptr(unsafe.Pointer(&name[0])), uintptr(size)}) + + return string(name[:size]), nil +} + +// Check z/OS version +func zosLeVersion() (version, release uint32) { + p1 := (*(*uintptr)(unsafe.Pointer(uintptr(1208)))) >> 32 + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 88))) + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 8))) + p1 = *(*uintptr)(unsafe.Pointer(uintptr(p1 + 984))) + vrm := *(*uint32)(unsafe.Pointer(p1 + 80)) + version = (vrm & 0x00ff0000) >> 16 + release = (vrm & 0x0000ff00) >> 8 + return +} + +// returns a zos C FILE * for stdio fd 0, 1, 2 +func ZosStdioFilep(fd int32) uintptr { + return uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(*(*uint64)(unsafe.Pointer(uintptr(uint64(*(*uint32)(unsafe.Pointer(uintptr(1208)))) + 80))) + uint64((fd+2)<<3)))))))) +} + +func copyStat(stat *Stat_t, statLE *Stat_LE_t) { + stat.Dev = uint64(statLE.Dev) + stat.Ino = uint64(statLE.Ino) + stat.Nlink = uint64(statLE.Nlink) + stat.Mode = uint32(statLE.Mode) + stat.Uid = uint32(statLE.Uid) + stat.Gid = uint32(statLE.Gid) + stat.Rdev = uint64(statLE.Rdev) + stat.Size = statLE.Size + stat.Atim.Sec = int64(statLE.Atim) + stat.Atim.Nsec = 0 //zos doesn't return nanoseconds + stat.Mtim.Sec = int64(statLE.Mtim) + stat.Mtim.Nsec = 0 //zos doesn't return nanoseconds + stat.Ctim.Sec = int64(statLE.Ctim) + stat.Ctim.Nsec = 0 //zos doesn't return nanoseconds + stat.Blksize = int64(statLE.Blksize) + stat.Blocks = statLE.Blocks +} + +func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64) +func svcLoad(name *byte) unsafe.Pointer +func svcUnload(name *byte, fnptr unsafe.Pointer) int64 + +func (d *Dirent) NameString() string { + if d == nil { + return "" + } + s := string(d.Name[:]) + idx := strings.IndexByte(s, 0) + if idx == -1 { + return s + } else { + return s[:idx] + } +} + +func DecodeData(dest []byte, sz int, val uint64) { + for i := 0; i < sz; i++ { + dest[sz-1-i] = byte((val >> (uint64(i * 8))) & 0xff) + } +} + +func EncodeData(data []byte) uint64 { + var value uint64 + sz := len(data) + for i := 0; i < sz; i++ { + value |= uint64(data[i]) << uint64(((sz - i - 1) * 8)) + } + return value +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) { + // TODO(neeilan): Implement use of first param (fd) + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // For z/OS, only replace NUL with @ when the + // length is not zero. + if pp.Len != 0 && pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // + // For z/OS, the length of the name is a field + // in the structure. To be on the safe side, we + // will still scan the name for a NUL but only + // to the length provided in the structure. + // + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < int(pp.Len) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + // TODO(neeilan): Remove 0 in call + sa, err = anyToSockaddr(0, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Ctermid() (tty string, err error) { + var termdev [1025]byte + runtime.EnterSyscall() + r0, err2, err1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___CTERMID_A<<4, uintptr(unsafe.Pointer(&termdev[0]))) + runtime.ExitSyscall() + if r0 == 0 { + return "", fmt.Errorf("%s (errno2=0x%x)\n", err1.Error(), err2) + } + s := string(termdev[:]) + idx := strings.Index(s, string(rune(0))) + if idx == -1 { + tty = s + } else { + tty = s[:idx] + } + return +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = int32(length) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) = SYS___FLISTXATTR_A +//sys Fremovexattr(fd int, attr string) (err error) = SYS___FREMOVEXATTR_A +//sys read(fd int, p []byte) (n int, err error) +//sys write(fd int, p []byte) (n int, err error) + +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) = SYS___FGETXATTR_A +//sys Fsetxattr(fd int, attr string, data []byte, flag int) (err error) = SYS___FSETXATTR_A + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = SYS___ACCEPT4_A +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A +//sys Removexattr(path string, attr string) (err error) = SYS___REMOVEXATTR_A +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP +//sys munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP +//sys ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL +//sys ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL +//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) = SYS_SHMAT +//sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) = SYS_SHMCTL64 +//sys shmdt(addr uintptr) (err error) = SYS_SHMDT +//sys shmget(key int, size int, flag int) (id int, err error) = SYS_SHMGET + +//sys Access(path string, mode uint32) (err error) = SYS___ACCESS_A +//sys Chdir(path string) (err error) = SYS___CHDIR_A +//sys Chown(path string, uid int, gid int) (err error) = SYS___CHOWN_A +//sys Chmod(path string, mode uint32) (err error) = SYS___CHMOD_A +//sys Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A +//sys Dup(oldfd int) (fd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) = SYS_DUP3 +//sys Dirfd(dirp uintptr) (fd int, err error) = SYS_DIRFD +//sys EpollCreate(size int) (fd int, err error) = SYS_EPOLL_CREATE +//sys EpollCreate1(flags int) (fd int, err error) = SYS_EPOLL_CREATE1 +//sys EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) = SYS_EPOLL_CTL +//sys EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) = SYS_EPOLL_PWAIT +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_WAIT +//sys Errno2() (er2 int) = SYS___ERRNO2 +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FACCESSAT_A + +func Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) { + return Faccessat(dirfd, path, mode, flags) +} + +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) = SYS___FCHMODAT_A +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(fd int, path string, uid int, gid int, flags int) (err error) = SYS___FCHOWNAT_A +//sys FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL +//sys Fdatasync(fd int) (err error) = SYS_FDATASYNC +//sys fstat(fd int, stat *Stat_LE_t) (err error) +//sys fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) = SYS___FSTATAT_A + +func Fstat(fd int, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = fstat(fd, &statLE) + copyStat(stat, &statLE) + return +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var statLE Stat_LE_t + err = fstatat(dirfd, path, &statLE, flags) + copyStat(stat, &statLE) + return +} + +func impl_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest))) + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_GetxattrAddr() *(func(path string, attr string, dest []byte) (sz int, err error)) + +var Getxattr = enter_Getxattr + +func enter_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + funcref := get_GetxattrAddr() + if validGetxattr() { + *funcref = impl_Getxattr + } else { + *funcref = error_Getxattr + } + return (*funcref)(path, attr, dest) +} + +func error_Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return -1, ENOSYS +} + +func validGetxattr() bool { + if funcptrtest(GetZosLibVec()+SYS___GETXATTR_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___GETXATTR_A<<4); err == nil { + return name == "__getxattr_a" + } + } + return false +} + +//sys Lgetxattr(link string, attr string, dest []byte) (sz int, err error) = SYS___LGETXATTR_A +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) = SYS___LSETXATTR_A + +func impl_Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error)) + +var Setxattr = enter_Setxattr + +func enter_Setxattr(path string, attr string, data []byte, flags int) (err error) { + funcref := get_SetxattrAddr() + if validSetxattr() { + *funcref = impl_Setxattr + } else { + *funcref = error_Setxattr + } + return (*funcref)(path, attr, data, flags) +} + +func error_Setxattr(path string, attr string, data []byte, flags int) (err error) { + return ENOSYS +} + +func validSetxattr() bool { + if funcptrtest(GetZosLibVec()+SYS___SETXATTR_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___SETXATTR_A<<4); err == nil { + return name == "__setxattr_a" + } + } + return false +} + +//sys Fstatfs(fd int, buf *Statfs_t) (err error) = SYS_FSTATFS +//sys Fstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS +//sys Fsync(fd int) (err error) +//sys Futimes(fd int, tv []Timeval) (err error) = SYS_FUTIMES +//sys Futimesat(dirfd int, path string, tv []Timeval) (err error) = SYS___FUTIMESAT_A +//sys Ftruncate(fd int, length int64) (err error) +//sys Getrandom(buf []byte, flags int) (n int, err error) = SYS_GETRANDOM +//sys InotifyInit() (fd int, err error) = SYS_INOTIFY_INIT +//sys InotifyInit1(flags int) (fd int, err error) = SYS_INOTIFY_INIT1 +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) = SYS___INOTIFY_ADD_WATCH_A +//sys InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) = SYS_INOTIFY_RM_WATCH +//sys Listxattr(path string, dest []byte) (sz int, err error) = SYS___LISTXATTR_A +//sys Llistxattr(path string, dest []byte) (sz int, err error) = SYS___LLISTXATTR_A +//sys Lremovexattr(path string, attr string) (err error) = SYS___LREMOVEXATTR_A +//sys Lutimes(path string, tv []Timeval) (err error) = SYS___LUTIMES_A +//sys Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT +//sys Msync(b []byte, flags int) (err error) = SYS_MSYNC +//sys Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) = SYS___CONSOLE2 + +// Pipe2 begin + +//go:nosplit +func getPipe2Addr() *(func([]int, int) error) + +var Pipe2 = pipe2Enter + +func pipe2Enter(p []int, flags int) (err error) { + if funcptrtest(GetZosLibVec()+SYS_PIPE2<<4, "") == 0 { + *getPipe2Addr() = pipe2Impl + } else { + *getPipe2Addr() = pipe2Error + } + return (*getPipe2Addr())(p, flags) +} + +func pipe2Impl(p []int, flags int) (err error) { + var pp [2]_C_int + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE2<<4, uintptr(unsafe.Pointer(&pp[0])), uintptr(flags)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } else { + p[0] = int(pp[0]) + p[1] = int(pp[1]) + } + return +} +func pipe2Error(p []int, flags int) (err error) { + return fmt.Errorf("Pipe2 is not available on this system") +} + +// Pipe2 end + +//sys Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL + +func Readdir(dir uintptr) (dirent *Dirent, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_A<<4, uintptr(dir)) + runtime.ExitSyscall() + dirent = (*Dirent)(unsafe.Pointer(r0)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//sys Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) = SYS___READDIR_R_A +//sys Statfs(path string, buf *Statfs_t) (err error) = SYS___STATFS_A +//sys Syncfs(fd int) (err error) = SYS_SYNCFS +//sys Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES +//sys W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT +//sys W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A + +//sys mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A +//sys unmount_LE(filesystem string, mtm int) (err error) = SYS___UMOUNT_A +//sys Chroot(path string) (err error) = SYS___CHROOT_A +//sys Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT +//sysnb Uname(buf *Utsname) (err error) = SYS_____OSNAME_A +//sys Unshare(flags int) (err error) = SYS_UNSHARE + +func Ptsname(fd int) (name string, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___PTSNAME_A<<4, uintptr(fd)) + runtime.ExitSyscall() + if r0 == 0 { + err = errnoErr2(e1, e2) + } else { + name = u2s(unsafe.Pointer(r0)) + } + return +} + +func u2s(cstr unsafe.Pointer) string { + str := (*[1024]uint8)(cstr) + i := 0 + for str[i] != 0 { + i++ + } + return string(str[:i]) +} + +func Close(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd)) + runtime.ExitSyscall() + for i := 0; e1 == EAGAIN && i < 10; i++ { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_USLEEP<<4, uintptr(10)) + runtime.ExitSyscall() + runtime.EnterSyscall() + r0, e2, e1 = CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSE<<4, uintptr(fd)) + runtime.ExitSyscall() + } + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +// Dummy function: there are no semantics for Madvise on z/OS +func Madvise(b []byte, advice int) (err error) { + return +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset) + return unsafe.Pointer(xaddr), err +} + +func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) { + return mapper.munmap(uintptr(addr), length) +} + +//sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) = SYS_GETPGID + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getppid() (pid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT + +//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE + +func Getrusage(who int, rusage *Rusage) (err error) { + var ruz rusage_zos + err = getrusage(who, &ruz) + //Only the first two fields of Rusage are set + rusage.Utime.Sec = ruz.Utime.Sec + rusage.Utime.Usec = int64(ruz.Utime.Usec) + rusage.Stime.Sec = ruz.Stime.Sec + rusage.Stime.Usec = int64(ruz.Stime.Usec) + return +} + +//sys Getegid() (egid int) = SYS_GETEGID +//sys Geteuid() (euid int) = SYS_GETEUID +//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID +//sysnb Getuid() (uid int) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A +//sys Link(path string, link string) (err error) = SYS___LINK_A +//sys Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) = SYS___LINKAT_A +//sys Listen(s int, n int) (err error) +//sys lstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A + +func Lstat(path string, stat *Stat_t) (err error) { + var statLE Stat_LE_t + err = lstat(path, &statLE) + copyStat(stat, &statLE) + return +} + +// for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/ +func isSpecialPath(path []byte) (v bool) { + var special = [4][8]byte{ + {'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, + {'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} + + var i, j int + for i = 0; i < len(special); i++ { + for j = 0; j < len(special[i]); j++ { + if path[j] != special[i][j] { + break + } + } + if j == len(special[i]) { + return true + } + } + return false +} + +func realpath(srcpath string, abspath []byte) (pathlen int, errno int) { + var source [1024]byte + copy(source[:], srcpath) + source[len(srcpath)] = 0 + ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___REALPATH_A<<4, //__realpath_a() + []uintptr{uintptr(unsafe.Pointer(&source[0])), + uintptr(unsafe.Pointer(&abspath[0]))}) + if ret != 0 { + index := bytes.IndexByte(abspath[:], byte(0)) + if index != -1 { + return index, 0 + } + } else { + errptr := (*int)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) //__errno() + return 0, *errptr + } + return 0, 245 // EBADDATA 245 +} + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + n = int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___READLINK_A<<4, + []uintptr{uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))})) + runtime.KeepAlive(unsafe.Pointer(_p0)) + if n == -1 { + value := *(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, []uintptr{}))) + err = errnoErr(Errno(value)) + } else { + if buf[0] == '$' { + if isSpecialPath(buf[1:9]) { + cnt, err1 := realpath(path, buf) + if err1 == 0 { + n = cnt + } + } + } + } + return +} + +func impl_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + return n, err + } else { + if buf[0] == '$' { + if isSpecialPath(buf[1:9]) { + cnt, err1 := realpath(path, buf) + if err1 == 0 { + n = cnt + } + } + } + } + return +} + +//go:nosplit +func get_ReadlinkatAddr() *(func(dirfd int, path string, buf []byte) (n int, err error)) + +var Readlinkat = enter_Readlinkat + +func enter_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + funcref := get_ReadlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___READLINKAT_A<<4, "") == 0 { + *funcref = impl_Readlinkat + } else { + *funcref = error_Readlinkat + } + return (*funcref)(dirfd, path, buf) +} + +func error_Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +//sys Mkdir(path string, mode uint32) (err error) = SYS___MKDIR_A +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) = SYS___MKDIRAT_A +//sys Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A +//sys Mknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) = SYS___MKNODAT_A +//sys PivotRoot(newroot string, oldroot string) (err error) = SYS___PIVOT_ROOT_A +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) = SYS___PRCTL_A +//sysnb Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT +//sys Rename(from string, to string) (err error) = SYS___RENAME_A +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) = SYS___RENAMEAT_A +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) = SYS___RENAMEAT2_A +//sys Rmdir(path string) (err error) = SYS___RMDIR_A +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Setegid(egid int) (err error) = SYS_SETEGID +//sys Seteuid(euid int) (err error) = SYS_SETEUID +//sys Sethostname(p []byte) (err error) = SYS___SETHOSTNAME_A +//sys Setns(fd int, nstype int) (err error) = SYS_SETNS +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) = SYS_SETPGID +//sysnb Setrlimit(resource int, lim *Rlimit) (err error) +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID +//sysnb Setsid() (pid int, err error) = SYS_SETSID +//sys Setuid(uid int) (err error) = SYS_SETUID +//sys Setgid(uid int) (err error) = SYS_SETGID +//sys Shutdown(fd int, how int) (err error) +//sys stat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A + +func Stat(path string, sta *Stat_t) (err error) { + var statLE Stat_LE_t + err = stat(path, &statLE) + copyStat(sta, &statLE) + return +} + +//sys Symlink(path string, link string) (err error) = SYS___SYMLINK_A +//sys Symlinkat(oldPath string, dirfd int, newPath string) (err error) = SYS___SYMLINKAT_A +//sys Sync() = SYS_SYNC +//sys Truncate(path string, length int64) (err error) = SYS___TRUNCATE_A +//sys Tcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR +//sys Tcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR +//sys Umask(mask int) (oldmask int) +//sys Unlink(path string) (err error) = SYS___UNLINK_A +//sys Unlinkat(dirfd int, path string, flags int) (err error) = SYS___UNLINKAT_A +//sys Utime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A + +//sys open(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A + +func Open(path string, mode int, perm uint32) (fd int, err error) { + if mode&O_ACCMODE == 0 { + mode |= O_RDONLY + } + return open(path, mode, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) = SYS___OPENAT_A + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + if flags&O_ACCMODE == 0 { + flags |= O_RDONLY + } + return openat(dirfd, path, flags, mode) +} + +//sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) = SYS___OPENAT2_A + +func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) { + if how.Flags&O_ACCMODE == 0 { + how.Flags |= O_RDONLY + } + return openat2(dirfd, path, how, SizeofOpenHow) +} + +func ZosFdToPath(dirfd int) (path string, err error) { + var buffer [1024]byte + runtime.EnterSyscall() + ret, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_IOCTL<<4, uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))) + runtime.ExitSyscall() + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + CallLeFuncWithErr(GetZosLibVec()+SYS___E2A_L<<4, uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)) + return string(buffer[:zb]), nil + } + return "", errnoErr2(e1, e2) +} + +//sys remove(path string) (err error) + +func Remove(path string) error { + return remove(path) +} + +const ImplementsGetwd = true + +func Getcwd(buf []byte) (n int, err error) { + var p unsafe.Pointer + if len(buf) > 0 { + p = unsafe.Pointer(&buf[0]) + } else { + p = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___GETCWD_A<<4, uintptr(p), uintptr(len(buf))) + runtime.ExitSyscall() + n = clen(buf) + 1 + if r0 == 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func gettid() uint64 + +func Gettid() (tid int) { + return int(gettid()) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w & mask) +} + +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys waitid(idType int, id int, info *Siginfo, options int) (err error) + +func Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) { + return waitid(idType, id, info, options) +} + +//sys waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) + +func impl_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAIT4<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage))) + runtime.ExitSyscall() + wpid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Wait4Addr() *(func(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error)) + +var Wait4 = enter_Wait4 + +func enter_Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + funcref := get_Wait4Addr() + if funcptrtest(GetZosLibVec()+SYS_WAIT4<<4, "") == 0 { + *funcref = impl_Wait4 + } else { + *funcref = legacyWait4 + } + return (*funcref)(pid, wstatus, options, rusage) +} + +func legacyWait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + // TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want. + // At the moment rusage will not be touched. + var status _C_int + wpid, err = waitpid(pid, &status, options) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sysnb gettimeofday(tv *timeval_zos) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + var tvz timeval_zos + err = gettimeofday(&tvz) + tv.Sec = tvz.Sec + tv.Usec = int64(tvz.Usec) + return +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { //fix + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) = SYS___UTIMENSAT_A + +func validUtimensat() bool { + if funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___UTIMENSAT_A<<4); err == nil { + return name == "__utimensat_a" + } + } + return false +} + +// Begin UtimesNano + +//go:nosplit +func get_UtimesNanoAddr() *(func(path string, ts []Timespec) (err error)) + +var UtimesNano = enter_UtimesNano + +func enter_UtimesNano(path string, ts []Timespec) (err error) { + funcref := get_UtimesNanoAddr() + if validUtimensat() { + *funcref = utimesNanoImpl + } else { + *funcref = legacyUtimesNano + } + return (*funcref)(path, ts) +} + +func utimesNanoImpl(path string, ts []Timespec) (err error) { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func legacyUtimesNano(path string, ts []Timespec) (err error) { + if len(ts) != 2 { + return EINVAL + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// End UtimesNano + +// Begin UtimesNanoAt + +//go:nosplit +func get_UtimesNanoAtAddr() *(func(dirfd int, path string, ts []Timespec, flags int) (err error)) + +var UtimesNanoAt = enter_UtimesNanoAt + +func enter_UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) { + funcref := get_UtimesNanoAtAddr() + if validUtimensat() { + *funcref = utimesNanoAtImpl + } else { + *funcref = legacyUtimesNanoAt + } + return (*funcref)(dirfd, path, ts, flags) +} + +func utimesNanoAtImpl(dirfd int, path string, ts []Timespec, flags int) (err error) { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func legacyUtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) (err error) { + if path[0] != '/' { + dirPath, err := ZosFdToPath(dirfd) + if err != nil { + return err + } + path = dirPath + "/" + path + } + if flags == AT_SYMLINK_NOFOLLOW { + if len(ts) != 2 { + return EINVAL + } + + if ts[0].Nsec >= 5e8 { + ts[0].Sec++ + } + ts[0].Nsec = 0 + if ts[1].Nsec >= 5e8 { + ts[1].Sec++ + } + ts[1].Nsec = 0 + + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := []Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return Lutimes(path, tv) + } + return UtimesNano(path, ts) +} + +// End UtimesNanoAt + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS ) + return anyToSockaddr(0, &rsa) +} + +const ( + // identifier constants + nwmHeaderIdentifier = 0xd5e6d4c8 + nwmFilterIdentifier = 0xd5e6d4c6 + nwmTCPConnIdentifier = 0xd5e6d4c3 + nwmRecHeaderIdentifier = 0xd5e6d4d9 + nwmIPStatsIdentifier = 0xd5e6d4c9d7e2e340 + nwmIPGStatsIdentifier = 0xd5e6d4c9d7c7e2e3 + nwmTCPStatsIdentifier = 0xd5e6d4e3c3d7e2e3 + nwmUDPStatsIdentifier = 0xd5e6d4e4c4d7e2e3 + nwmICMPGStatsEntry = 0xd5e6d4c9c3d4d7c7 + nwmICMPTStatsEntry = 0xd5e6d4c9c3d4d7e3 + + // nwmHeader constants + nwmVersion1 = 1 + nwmVersion2 = 2 + nwmCurrentVer = 2 + + nwmTCPConnType = 1 + nwmGlobalStatsType = 14 + + // nwmFilter constants + nwmFilterLclAddrMask = 0x20000000 // Local address + nwmFilterSrcAddrMask = 0x20000000 // Source address + nwmFilterLclPortMask = 0x10000000 // Local port + nwmFilterSrcPortMask = 0x10000000 // Source port + + // nwmConnEntry constants + nwmTCPStateClosed = 1 + nwmTCPStateListen = 2 + nwmTCPStateSynSent = 3 + nwmTCPStateSynRcvd = 4 + nwmTCPStateEstab = 5 + nwmTCPStateFinWait1 = 6 + nwmTCPStateFinWait2 = 7 + nwmTCPStateClosWait = 8 + nwmTCPStateLastAck = 9 + nwmTCPStateClosing = 10 + nwmTCPStateTimeWait = 11 + nwmTCPStateDeletTCB = 12 + + // Existing constants on linux + BPF_TCP_CLOSE = 1 + BPF_TCP_LISTEN = 2 + BPF_TCP_SYN_SENT = 3 + BPF_TCP_SYN_RECV = 4 + BPF_TCP_ESTABLISHED = 5 + BPF_TCP_FIN_WAIT1 = 6 + BPF_TCP_FIN_WAIT2 = 7 + BPF_TCP_CLOSE_WAIT = 8 + BPF_TCP_LAST_ACK = 9 + BPF_TCP_CLOSING = 10 + BPF_TCP_TIME_WAIT = 11 + BPF_TCP_NEW_SYN_RECV = -1 + BPF_TCP_MAX_STATES = -2 +) + +type nwmTriplet struct { + offset uint32 + length uint32 + number uint32 +} + +type nwmQuadruplet struct { + offset uint32 + length uint32 + number uint32 + match uint32 +} + +type nwmHeader struct { + ident uint32 + length uint32 + version uint16 + nwmType uint16 + bytesNeeded uint32 + options uint32 + _ [16]byte + inputDesc nwmTriplet + outputDesc nwmQuadruplet +} + +type nwmFilter struct { + ident uint32 + flags uint32 + resourceName [8]byte + resourceId uint32 + listenerId uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + _ uint16 + _ uint16 + asid uint16 + _ [2]byte + tnLuName [8]byte + tnMonGrp uint32 + tnAppl [8]byte + applData [40]byte + nInterface [16]byte + dVipa [16]byte + dVipaPfx uint16 + dVipaPort uint16 + dVipaFamily byte + _ [3]byte + destXCF [16]byte + destXCFPfx uint16 + destXCFFamily byte + _ [1]byte + targIP [16]byte + targIPPfx uint16 + targIPFamily byte + _ [1]byte + _ [20]byte +} + +type nwmRecHeader struct { + ident uint32 + length uint32 + number byte + _ [3]byte +} + +type nwmTCPStatsEntry struct { + ident uint64 + currEstab uint32 + activeOpened uint32 + passiveOpened uint32 + connClosed uint32 + estabResets uint32 + attemptFails uint32 + passiveDrops uint32 + timeWaitReused uint32 + inSegs uint64 + predictAck uint32 + predictData uint32 + inDupAck uint32 + inBadSum uint32 + inBadLen uint32 + inShort uint32 + inDiscOldTime uint32 + inAllBeforeWin uint32 + inSomeBeforeWin uint32 + inAllAfterWin uint32 + inSomeAfterWin uint32 + inOutOfOrder uint32 + inAfterClose uint32 + inWinProbes uint32 + inWinUpdates uint32 + outWinUpdates uint32 + outSegs uint64 + outDelayAcks uint32 + outRsts uint32 + retransSegs uint32 + retransTimeouts uint32 + retransDrops uint32 + pmtuRetrans uint32 + pmtuErrors uint32 + outWinProbes uint32 + probeDrops uint32 + keepAliveProbes uint32 + keepAliveDrops uint32 + finwait2Drops uint32 + acceptCount uint64 + inBulkQSegs uint64 + inDiscards uint64 + connFloods uint32 + connStalls uint32 + cfgEphemDef uint16 + ephemInUse uint16 + ephemHiWater uint16 + flags byte + _ [1]byte + ephemExhaust uint32 + smcRCurrEstabLnks uint32 + smcRLnkActTimeOut uint32 + smcRActLnkOpened uint32 + smcRPasLnkOpened uint32 + smcRLnksClosed uint32 + smcRCurrEstab uint32 + smcRActiveOpened uint32 + smcRPassiveOpened uint32 + smcRConnClosed uint32 + smcRInSegs uint64 + smcROutSegs uint64 + smcRInRsts uint32 + smcROutRsts uint32 + smcDCurrEstabLnks uint32 + smcDActLnkOpened uint32 + smcDPasLnkOpened uint32 + smcDLnksClosed uint32 + smcDCurrEstab uint32 + smcDActiveOpened uint32 + smcDPassiveOpened uint32 + smcDConnClosed uint32 + smcDInSegs uint64 + smcDOutSegs uint64 + smcDInRsts uint32 + smcDOutRsts uint32 +} + +type nwmConnEntry struct { + ident uint32 + local [28]byte // union of sockaddr4 and sockaddr6 + remote [28]byte // union of sockaddr4 and sockaddr6 + startTime [8]byte // uint64, changed to prevent padding from being inserted + lastActivity [8]byte // uint64 + bytesIn [8]byte // uint64 + bytesOut [8]byte // uint64 + inSegs [8]byte // uint64 + outSegs [8]byte // uint64 + state uint16 + activeOpen byte + flag01 byte + outBuffered uint32 + inBuffered uint32 + maxSndWnd uint32 + reXmtCount uint32 + congestionWnd uint32 + ssThresh uint32 + roundTripTime uint32 + roundTripVar uint32 + sendMSS uint32 + sndWnd uint32 + rcvBufSize uint32 + sndBufSize uint32 + outOfOrderCount uint32 + lcl0WindowCount uint32 + rmt0WindowCount uint32 + dupacks uint32 + flag02 byte + sockOpt6Cont byte + asid uint16 + resourceName [8]byte + resourceId uint32 + subtask uint32 + sockOpt byte + sockOpt6 byte + clusterConnFlag byte + proto byte + targetAppl [8]byte + luName [8]byte + clientUserId [8]byte + logMode [8]byte + timeStamp uint32 + timeStampAge uint32 + serverResourceId uint32 + intfName [16]byte + ttlsStatPol byte + ttlsStatConn byte + ttlsSSLProt uint16 + ttlsNegCiph [2]byte + ttlsSecType byte + ttlsFIPS140Mode byte + ttlsUserID [8]byte + applData [40]byte + inOldestTime [8]byte // uint64 + outOldestTime [8]byte // uint64 + tcpTrustedPartner byte + _ [3]byte + bulkDataIntfName [16]byte + ttlsNegCiph4 [4]byte + smcReason uint32 + lclSMCLinkId uint32 + rmtSMCLinkId uint32 + smcStatus byte + smcFlags byte + _ [2]byte + rcvWnd uint32 + lclSMCBufSz uint32 + rmtSMCBufSz uint32 + ttlsSessID [32]byte + ttlsSessIDLen int16 + _ [1]byte + smcDStatus byte + smcDReason uint32 +} + +var svcNameTable [][]byte = [][]byte{ + []byte("\xc5\xe9\xc2\xd5\xd4\xc9\xc6\xf4"), // svc_EZBNMIF4 +} + +const ( + svc_EZBNMIF4 = 0 +) + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + jobname := []byte("\x5c\x40\x40\x40\x40\x40\x40\x40") // "*" + responseBuffer := [4096]byte{0} + var bufferAlet, reasonCode uint32 = 0, 0 + var bufferLen, returnValue, returnCode int32 = 4096, 0, 0 + + dsa := [18]uint64{0} + var argv [7]unsafe.Pointer + argv[0] = unsafe.Pointer(&jobname[0]) + argv[1] = unsafe.Pointer(&responseBuffer[0]) + argv[2] = unsafe.Pointer(&bufferAlet) + argv[3] = unsafe.Pointer(&bufferLen) + argv[4] = unsafe.Pointer(&returnValue) + argv[5] = unsafe.Pointer(&returnCode) + argv[6] = unsafe.Pointer(&reasonCode) + + request := (*struct { + header nwmHeader + filter nwmFilter + })(unsafe.Pointer(&responseBuffer[0])) + + EZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0]) + if EZBNMIF4 == nil { + return nil, errnoErr(EINVAL) + } + + // GetGlobalStats EZBNMIF4 call + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmGlobalStatsType + request.header.options = 0x80000000 + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmRecHeader + recHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if recHeader.ident != nwmRecHeaderIdentifier { + return nil, errnoErr(EINVAL) + } + + // Parse nwmTriplets to get offsets of returned entries + var sections []*uint64 + var sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0])) + for i := uint32(0); i < uint32(recHeader.number); i++ { + offset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc)) + sectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset])) + for j := uint32(0); j < sectionDesc.number; j++ { + offset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length + sections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset]))) + } + } + + // Find nwmTCPStatsEntry in returned entries + var tcpStats *nwmTCPStatsEntry = nil + for _, ptr := range sections { + switch *ptr { + case nwmTCPStatsIdentifier: + if tcpStats != nil { + return nil, errnoErr(EINVAL) + } + tcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr)) + case nwmIPStatsIdentifier: + case nwmIPGStatsIdentifier: + case nwmUDPStatsIdentifier: + case nwmICMPGStatsEntry: + case nwmICMPTStatsEntry: + default: + return nil, errnoErr(EINVAL) + } + } + if tcpStats == nil { + return nil, errnoErr(EINVAL) + } + + // GetConnectionDetail EZBNMIF4 call + responseBuffer = [4096]byte{0} + dsa = [18]uint64{0} + bufferAlet, reasonCode = 0, 0 + bufferLen, returnValue, returnCode = 4096, 0, 0 + nameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process + nameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12))) + argv[0] = unsafe.Pointer(uintptr(*nameptr)) + + request.header.ident = nwmHeaderIdentifier + request.header.length = uint32(unsafe.Sizeof(request.header)) + request.header.version = nwmCurrentVer + request.header.nwmType = nwmTCPConnType + request.header.options = 0x80000000 + + request.filter.ident = nwmFilterIdentifier + + var localSockaddr RawSockaddrAny + socklen := _Socklen(SizeofSockaddrAny) + err := getsockname(fd, &localSockaddr, &socklen) + if err != nil { + return nil, errnoErr(EINVAL) + } + if localSockaddr.Addr.Family == AF_INET { + localSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET + var i int + for i = 0; i < 4; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 4 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 4; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } else if localSockaddr.Addr.Family == AF_INET6 { + localSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr)) + localSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0])) + localSockFilter.Family = AF_INET6 + var i int + for i = 0; i < 16; i++ { + if localSockaddr.Addr[i] != 0 { + break + } + } + if i != 16 { + request.filter.flags |= nwmFilterLclAddrMask + for i = 0; i < 16; i++ { + localSockFilter.Addr[i] = localSockaddr.Addr[i] + } + } + if localSockaddr.Port != 0 { + request.filter.flags |= nwmFilterLclPortMask + localSockFilter.Port = localSockaddr.Port + } + } + + svcCall(EZBNMIF4, &argv[0], &dsa[0]) + + // outputDesc field is filled by EZBNMIF4 on success + if returnCode != 0 || request.header.outputDesc.offset == 0 { + return nil, errnoErr(EINVAL) + } + + // Check that EZBNMIF4 returned a nwmConnEntry + conn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset])) + if conn.ident != nwmTCPConnIdentifier { + return nil, errnoErr(EINVAL) + } + + // Copy data from the returned data structures into tcpInfo + // Stats from nwmConnEntry are specific to that connection. + // Stats from nwmTCPStatsEntry are global (to the interface?) + // Fields may not be an exact match. Some fields have no equivalent. + var tcpinfo TCPInfo + tcpinfo.State = uint8(conn.state) + tcpinfo.Ca_state = 0 // dummy + tcpinfo.Retransmits = uint8(tcpStats.retransSegs) + tcpinfo.Probes = uint8(tcpStats.outWinProbes) + tcpinfo.Backoff = 0 // dummy + tcpinfo.Options = 0 // dummy + tcpinfo.Rto = tcpStats.retransTimeouts + tcpinfo.Ato = tcpStats.outDelayAcks + tcpinfo.Snd_mss = conn.sendMSS + tcpinfo.Rcv_mss = conn.sendMSS // dummy + tcpinfo.Unacked = 0 // dummy + tcpinfo.Sacked = 0 // dummy + tcpinfo.Lost = 0 // dummy + tcpinfo.Retrans = conn.reXmtCount + tcpinfo.Fackets = 0 // dummy + tcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0]))) + tcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0]))) + tcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0]))) + tcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate + tcpinfo.Rcv_ssthresh = conn.ssThresh + tcpinfo.Rtt = conn.roundTripTime + tcpinfo.Rttvar = conn.roundTripVar + tcpinfo.Snd_ssthresh = conn.ssThresh // dummy + tcpinfo.Snd_cwnd = conn.congestionWnd + tcpinfo.Advmss = conn.sendMSS // dummy + tcpinfo.Reordering = 0 // dummy + tcpinfo.Rcv_rtt = conn.roundTripTime // dummy + tcpinfo.Rcv_space = conn.sendMSS // dummy + tcpinfo.Total_retrans = conn.reXmtCount + + svcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4) + + return &tcpinfo, nil +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + + return ByteSliceToString(buf[:vallen]), nil +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = SizeofSockaddrAny + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + // TODO(neeilan): Remove 0 arg added to get this compiling on z/OS + from, err = anyToSockaddr(0, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = int32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +func Opendir(name string) (uintptr, error) { + p, err := BytePtrFromString(name) + if err != nil { + return 0, err + } + err = nil + runtime.EnterSyscall() + dir, e2, e1 := CallLeFuncWithPtrReturn(GetZosLibVec()+SYS___OPENDIR_A<<4, uintptr(unsafe.Pointer(p))) + runtime.ExitSyscall() + runtime.KeepAlive(unsafe.Pointer(p)) + if dir == 0 { + err = errnoErr2(e1, e2) + } + return dir, err +} + +// clearsyscall.Errno resets the errno value to 0. +func clearErrno() + +func Closedir(dir uintptr) error { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_CLOSEDIR<<4, dir) + runtime.ExitSyscall() + if r0 != 0 { + return errnoErr2(e1, e2) + } + return nil +} + +func Seekdir(dir uintptr, pos int) { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_SEEKDIR<<4, dir, uintptr(pos)) + runtime.ExitSyscall() +} + +func Telldir(dir uintptr) (int, error) { + p, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TELLDIR<<4, dir) + pos := int(p) + if int64(p) == -1 { + return pos, errnoErr2(e1, e2) + } + return pos, nil +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + // struct flock is packed on z/OS. We can't emulate that in Go so + // instead we pack it here. + var flock [24]byte + *(*int16)(unsafe.Pointer(&flock[0])) = lk.Type + *(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence + *(*int64)(unsafe.Pointer(&flock[4])) = lk.Start + *(*int64)(unsafe.Pointer(&flock[12])) = lk.Len + *(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock))) + runtime.ExitSyscall() + lk.Type = *(*int16)(unsafe.Pointer(&flock[0])) + lk.Whence = *(*int16)(unsafe.Pointer(&flock[2])) + lk.Start = *(*int64)(unsafe.Pointer(&flock[4])) + lk.Len = *(*int64)(unsafe.Pointer(&flock[12])) + lk.Pid = *(*int32)(unsafe.Pointer(&flock[20])) + if r0 == 0 { + return nil + } + return errnoErr2(e1, e2) +} + +func impl_Flock(fd int, how int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FLOCK<<4, uintptr(fd), uintptr(how)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FlockAddr() *(func(fd int, how int) (err error)) + +var Flock = enter_Flock + +func validFlock(fp uintptr) bool { + if funcptrtest(GetZosLibVec()+SYS_FLOCK<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS_FLOCK<<4); err == nil { + return name == "flock" + } + } + return false +} + +func enter_Flock(fd int, how int) (err error) { + funcref := get_FlockAddr() + if validFlock(GetZosLibVec() + SYS_FLOCK<<4) { + *funcref = impl_Flock + } else { + *funcref = legacyFlock + } + return (*funcref)(fd, how) +} + +func legacyFlock(fd int, how int) error { + + var flock_type int16 + var fcntl_cmd int + + switch how { + case LOCK_SH | LOCK_NB: + flock_type = F_RDLCK + fcntl_cmd = F_SETLK + case LOCK_EX | LOCK_NB: + flock_type = F_WRLCK + fcntl_cmd = F_SETLK + case LOCK_EX: + flock_type = F_WRLCK + fcntl_cmd = F_SETLKW + case LOCK_UN: + flock_type = F_UNLCK + fcntl_cmd = F_SETLKW + default: + } + + flock := Flock_t{ + Type: int16(flock_type), + Whence: int16(0), + Start: int64(0), + Len: int64(0), + Pid: int32(Getppid()), + } + + err := FcntlFlock(uintptr(fd), fcntl_cmd, &flock) + return err +} + +func Mlock(b []byte) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Mlock2(b []byte, flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Mlockall(flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_NONSWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Munlock(b []byte) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func Munlockall() (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MLOCKALL<<4, _BPX_SWAP) + runtime.ExitSyscall() + if r0 != 0 { + err = errnoErr2(e1, e2) + } + return +} + +func ClockGettime(clockid int32, ts *Timespec) error { + + var ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise + var nsec_per_sec int64 = 1000000000 + + if ts == nil { + return EFAULT + } + if clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC { + var nanotime int64 = runtime.Nanotime1() + ts.Sec = nanotime / nsec_per_sec + ts.Nsec = nanotime % nsec_per_sec + } else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID { + var tm Tms + _, err := Times(&tm) + if err != nil { + return EFAULT + } + ts.Sec = int64(tm.Utime / ticks_per_sec) + ts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec) + } else { + return EINVAL + } + return nil +} + +// Chtag + +//go:nosplit +func get_ChtagAddr() *(func(path string, ccsid uint64, textbit uint64) error) + +var Chtag = enter_Chtag + +func enter_Chtag(path string, ccsid uint64, textbit uint64) error { + funcref := get_ChtagAddr() + if validSetxattr() { + *funcref = impl_Chtag + } else { + *funcref = legacy_Chtag + } + return (*funcref)(path, ccsid, textbit) +} + +func legacy_Chtag(path string, ccsid uint64, textbit uint64) error { + tag := ccsid<<16 | textbit<<15 + var tag_buff [8]byte + DecodeData(tag_buff[:], 8, tag) + return Setxattr(path, "filetag", tag_buff[:], XATTR_REPLACE) +} + +func impl_Chtag(path string, ccsid uint64, textbit uint64) error { + tag := ccsid<<16 | textbit<<15 + var tag_buff [4]byte + DecodeData(tag_buff[:], 4, tag) + return Setxattr(path, "system.filetag", tag_buff[:], XATTR_REPLACE) +} + +// End of Chtag + +// Nanosleep + +//go:nosplit +func get_NanosleepAddr() *(func(time *Timespec, leftover *Timespec) error) + +var Nanosleep = enter_Nanosleep + +func enter_Nanosleep(time *Timespec, leftover *Timespec) error { + funcref := get_NanosleepAddr() + if funcptrtest(GetZosLibVec()+SYS_NANOSLEEP<<4, "") == 0 { + *funcref = impl_Nanosleep + } else { + *funcref = legacyNanosleep + } + return (*funcref)(time, leftover) +} + +func impl_Nanosleep(time *Timespec, leftover *Timespec) error { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_NANOSLEEP<<4, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + runtime.ExitSyscall() + if int64(r0) == -1 { + return errnoErr2(e1, e2) + } + return nil +} + +func legacyNanosleep(time *Timespec, leftover *Timespec) error { + t0 := runtime.Nanotime1() + var secrem uint32 + var nsecrem uint32 + total := time.Sec*1000000000 + time.Nsec + elapsed := runtime.Nanotime1() - t0 + var rv int32 + var rc int32 + var err error + // repeatedly sleep for 1 second until less than 1 second left + for total-elapsed > 1000000000 { + rv, rc, _ = BpxCondTimedWait(uint32(1), uint32(0), uint32(CW_CONDVAR), &secrem, &nsecrem) + if rv != 0 && rc != 112 { // 112 is EAGAIN + if leftover != nil && rc == 120 { // 120 is EINTR + leftover.Sec = int64(secrem) + leftover.Nsec = int64(nsecrem) + } + err = Errno(rc) + return err + } + elapsed = runtime.Nanotime1() - t0 + } + // sleep the remainder + if total > elapsed { + rv, rc, _ = BpxCondTimedWait(uint32(0), uint32(total-elapsed), uint32(CW_CONDVAR), &secrem, &nsecrem) + } + if leftover != nil && rc == 120 { + leftover.Sec = int64(secrem) + leftover.Nsec = int64(nsecrem) + } + if rv != 0 && rc != 112 { + err = Errno(rc) + } + return err +} + +// End of Nanosleep + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ZosTraceLevel int +var ZosTracefile *os.File + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +var reg *regexp.Regexp + +// enhanced with zos specific errno2 +func errnoErr2(e Errno, e2 uintptr) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + /* + Allow the retrieval of errno2 for EINVAL and ENOENT on zos + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + */ + } + if ZosTraceLevel > 0 { + var name string + if reg == nil { + reg = regexp.MustCompile("(^unix\\.[^/]+$|.*\\/unix\\.[^/]+$)") + } + i := 1 + pc, file, line, ok := runtime.Caller(i) + if ok { + name = runtime.FuncForPC(pc).Name() + } + for ok && reg.MatchString(runtime.FuncForPC(pc).Name()) { + i += 1 + pc, file, line, ok = runtime.Caller(i) + } + if ok { + if ZosTracefile == nil { + ZosConsolePrintf("From %s:%d\n", file, line) + ZosConsolePrintf("%s: %s (errno2=0x%x)\n", name, e.Error(), e2) + } else { + fmt.Fprintf(ZosTracefile, "From %s:%d\n", file, line) + fmt.Fprintf(ZosTracefile, "%s: %s (errno2=0x%x)\n", name, e.Error(), e2) + } + } else { + if ZosTracefile == nil { + ZosConsolePrintf("%s (errno2=0x%x)\n", e.Error(), e2) + } else { + fmt.Fprintf(ZosTracefile, "%s (errno2=0x%x)\n", e.Error(), e2) + } + } + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal, len(signalList)) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Set __MAP_64 by default + flags |= __MAP_64 + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +func Getag(path string) (ccsid uint16, flag uint16, err error) { + var val [8]byte + sz, err := Getxattr(path, "ccsid", val[:]) + if err != nil { + return + } + ccsid = uint16(EncodeData(val[0:sz])) + sz, err = Getxattr(path, "flags", val[:]) + if err != nil { + return + } + flag = uint16(EncodeData(val[0:sz]) >> 15) + return +} + +// Mount begin +func impl_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(data) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT1_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(_p3))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MountAddr() *(func(source string, target string, fstype string, flags uintptr, data string) (err error)) + +var Mount = enter_Mount + +func enter_Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + funcref := get_MountAddr() + if validMount() { + *funcref = impl_Mount + } else { + *funcref = legacyMount + } + return (*funcref)(source, target, fstype, flags, data) +} + +func legacyMount(source string, target string, fstype string, flags uintptr, data string) (err error) { + if needspace := 8 - len(fstype); needspace <= 0 { + fstype = fstype[0:8] + } else { + fstype += " "[0:needspace] + } + return mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data) +} + +func validMount() bool { + if funcptrtest(GetZosLibVec()+SYS___MOUNT1_A<<4, "") == 0 { + if name, err := getLeFuncName(GetZosLibVec() + SYS___MOUNT1_A<<4); err == nil { + return name == "__mount1_a" + } + } + return false +} + +// Mount end + +// Unmount begin +func impl_Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT2_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnmountAddr() *(func(target string, flags int) (err error)) + +var Unmount = enter_Unmount + +func enter_Unmount(target string, flags int) (err error) { + funcref := get_UnmountAddr() + if funcptrtest(GetZosLibVec()+SYS___UMOUNT2_A<<4, "") == 0 { + *funcref = impl_Unmount + } else { + *funcref = legacyUnmount + } + return (*funcref)(target, flags) +} + +func legacyUnmount(name string, mtm int) (err error) { + // mountpoint is always a full path and starts with a '/' + // check if input string is not a mountpoint but a filesystem name + if name[0] != '/' { + return unmount_LE(name, mtm) + } + // treat name as mountpoint + b2s := func(arr []byte) string { + var str string + for i := 0; i < len(arr); i++ { + if arr[i] == 0 { + str = string(arr[:i]) + break + } + } + return str + } + var buffer struct { + header W_Mnth + fsinfo [64]W_Mntent + } + fs_count, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer))) + if err == nil { + err = EINVAL + for i := 0; i < fs_count; i++ { + if b2s(buffer.fsinfo[i].Mountpoint[:]) == name { + err = unmount_LE(b2s(buffer.fsinfo[i].Fsname[:]), mtm) + break + } + } + } else if fs_count == 0 { + err = EINVAL + } + return err +} + +// Unmount end + +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + +func direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) { + var d Dirent + + d.Ino = uint64(dirent.Ino) + offset, err := Telldir(dir) + if err != nil { + return d, err + } + + d.Off = int64(offset) + s := string(bytes.Split(dirent.Name[:], []byte{0})[0]) + copy(d.Name[:], s) + + d.Reclen = uint16(24 + len(d.NameString())) + var st Stat_t + path = path + "/" + s + err = Lstat(path, &st) + if err != nil { + return d, err + } + + d.Type = uint8(st.Mode >> 24) + return d, err +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulation of Getdirentries port from the Darwin implementation. + // COMMENTS FROM DARWIN: + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // Get path from fd to avoid unavailable call (fdopendir) + path, err := ZosFdToPath(fd) + if err != nil { + return 0, err + } + d, err := Opendir(path) + if err != nil { + return 0, err + } + defer Closedir(d) + + var cnt int64 + for { + var entryLE direntLE + var entrypLE *direntLE + e := Readdir_r(d, &entryLE, &entrypLE) + if e != nil { + return n, e + } + if entrypLE == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + + // Dirent on zos has a different structure + entry, e := direntLeToDirentUnix(&entryLE, d, path) + if e != nil { + return n, e + } + + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + + // Copy entry into return buffer. + s := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen) + copy(buf, s) + + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} + +func Err2ad() (eadd *int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERR2AD<<4) + eadd = (*int)(unsafe.Pointer(r0)) + return +} + +func ZosConsolePrintf(format string, v ...interface{}) (int, error) { + type __cmsg struct { + _ uint16 + _ [2]uint8 + __msg_length uint32 + __msg uintptr + _ [4]uint8 + } + msg := fmt.Sprintf(format, v...) + strptr := unsafe.Pointer((*reflect.StringHeader)(unsafe.Pointer(&msg)).Data) + len := (*reflect.StringHeader)(unsafe.Pointer(&msg)).Len + cmsg := __cmsg{__msg_length: uint32(len), __msg: uintptr(strptr)} + cmd := uint32(0) + runtime.EnterSyscall() + rc, err2, err1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____CONSOLE_A<<4, uintptr(unsafe.Pointer(&cmsg)), 0, uintptr(unsafe.Pointer(&cmd))) + runtime.ExitSyscall() + if rc != 0 { + return 0, fmt.Errorf("%s (errno2=0x%x)\n", err1.Error(), err2) + } + return 0, nil +} +func ZosStringToEbcdicBytes(str string, nullterm bool) (ebcdicBytes []byte) { + if nullterm { + ebcdicBytes = []byte(str + "\x00") + } else { + ebcdicBytes = []byte(str) + } + A2e(ebcdicBytes) + return +} +func ZosEbcdicBytesToString(b []byte, trimRight bool) (str string) { + res := make([]byte, len(b)) + copy(res, b) + E2a(res) + if trimRight { + str = string(bytes.TrimRight(res, " \x00")) + } else { + str = string(res) + } + return +} + +func fdToPath(dirfd int) (path string, err error) { + var buffer [1024]byte + // w_ctrl() + ret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4, + []uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))}) + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + // __e2a_l() + runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4, + []uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)}) + return string(buffer[:zb]), nil + } + // __errno() + errno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4, + []uintptr{})))) + // __errno2() + errno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4, + []uintptr{})) + // strerror_r() + ret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4, + []uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024}) + if ret == 0 { + zb := bytes.IndexByte(buffer[:], 0) + if zb == -1 { + zb = len(buffer) + } + return "", fmt.Errorf("%s (errno2=0x%x)", buffer[:zb], errno2) + } else { + return "", fmt.Errorf("fdToPath errno %d (errno2=0x%x)", errno, errno2) + } +} + +func impl_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFOAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MkfifoatAddr() *(func(dirfd int, path string, mode uint32) (err error)) + +var Mkfifoat = enter_Mkfifoat + +func enter_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + funcref := get_MkfifoatAddr() + if funcptrtest(GetZosLibVec()+SYS___MKFIFOAT_A<<4, "") == 0 { + *funcref = impl_Mkfifoat + } else { + *funcref = legacy_Mkfifoat + } + return (*funcref)(dirfd, path, mode) +} + +func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) { + dirname, err := ZosFdToPath(dirfd) + if err != nil { + return err + } + return Mkfifo(dirname+"/"+path, mode) +} + +//sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT +//sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT +//sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT + +func fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg) + runtime.ExitSyscall() + val = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +func Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) { + switch op.(type) { + case *Flock_t: + err = FcntlFlock(fd, cmd, op.(*Flock_t)) + if err != nil { + ret = -1 + } + return + case int: + return FcntlInt(fd, cmd, op.(int)) + case *F_cnvrt: + return fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt)))) + case unsafe.Pointer: + return fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer))) + default: + return -1, EINVAL + } + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + // TODO: use LE call instead if the call is implemented + originalOffset, err := Seek(infd, 0, SEEK_CUR) + if err != nil { + return -1, err + } + //start reading data from in_fd + if offset != nil { + _, err := Seek(infd, *offset, SEEK_SET) + if err != nil { + return -1, err + } + } + + buf := make([]byte, count) + readBuf := make([]byte, 0) + var n int = 0 + for i := 0; i < count; i += n { + n, err := Read(infd, buf) + if n == 0 { + if err != nil { + return -1, err + } else { // EOF + break + } + } + readBuf = append(readBuf, buf...) + buf = buf[0:0] + } + + n2, err := Write(outfd, readBuf) + if err != nil { + return -1, err + } + + //When sendfile() returns, this variable will be set to the + // offset of the byte following the last byte that was read. + if offset != nil { + *offset = *offset + int64(n) + // If offset is not NULL, then sendfile() does not modify the file + // offset of in_fd + _, err := Seek(infd, originalOffset, SEEK_SET) + if err != nil { + return -1, err + } + } + return n2, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_linux.go new file mode 100644 index 0000000..4fcd38d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_linux.go @@ -0,0 +1,20 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux + +package unix + +import "runtime" + +// SysvShmCtl performs control operations on the shared memory segment +// specified by id. +func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { + if runtime.GOARCH == "arm" || + runtime.GOARCH == "mips64" || runtime.GOARCH == "mips64le" { + cmd |= ipc_64 + } + + return shmctl(id, cmd, desc) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix.go new file mode 100644 index 0000000..672d6b0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix.go @@ -0,0 +1,51 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && !ios) || linux || zos + +package unix + +import "unsafe" + +// SysvShmAttach attaches the Sysv shared memory segment associated with the +// shared memory identifier id. +func SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) { + addr, errno := shmat(id, addr, flag) + if errno != nil { + return nil, errno + } + + // Retrieve the size of the shared memory to enable slice creation + var info SysvShmDesc + + _, err := SysvShmCtl(id, IPC_STAT, &info) + if err != nil { + // release the shared memory if we can't find the size + + // ignoring error from shmdt as there's nothing sensible to return here + shmdt(addr) + return nil, err + } + + // Use unsafe to convert addr into a []byte. + b := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz)) + return b, nil +} + +// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach. +// +// It is not safe to use the slice after calling this function. +func SysvShmDetach(data []byte) error { + if len(data) == 0 { + return EINVAL + } + + return shmdt(uintptr(unsafe.Pointer(&data[0]))) +} + +// SysvShmGet returns the Sysv shared memory identifier associated with key. +// If the IPC_CREAT flag is specified a new segment is created. +func SysvShmGet(key, size, flag int) (id int, err error) { + return shmget(key, size, flag) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go new file mode 100644 index 0000000..8b7977a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go @@ -0,0 +1,13 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin && !ios) || zos + +package unix + +// SysvShmCtl performs control operations on the shared memory segment +// specified by id. +func SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) { + return shmctl(id, cmd, desc) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/timestruct.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/timestruct.go new file mode 100644 index 0000000..7997b19 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/timestruct.go @@ -0,0 +1,76 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos + +package unix + +import "time" + +// TimespecToNsec returns the time stored in ts as nanoseconds. +func TimespecToNsec(ts Timespec) int64 { return ts.Nano() } + +// NsecToTimespec converts a number of nanoseconds into a Timespec. +func NsecToTimespec(nsec int64) Timespec { + sec := nsec / 1e9 + nsec = nsec % 1e9 + if nsec < 0 { + nsec += 1e9 + sec-- + } + return setTimespec(sec, nsec) +} + +// TimeToTimespec converts t into a Timespec. +// On some 32-bit systems the range of valid Timespec values are smaller +// than that of time.Time values. So if t is out of the valid range of +// Timespec, it returns a zero Timespec and ERANGE. +func TimeToTimespec(t time.Time) (Timespec, error) { + sec := t.Unix() + nsec := int64(t.Nanosecond()) + ts := setTimespec(sec, nsec) + + // Currently all targets have either int32 or int64 for Timespec.Sec. + // If there were a new target with floating point type for it, we have + // to consider the rounding error. + if int64(ts.Sec) != sec { + return Timespec{}, ERANGE + } + return ts, nil +} + +// TimevalToNsec returns the time stored in tv as nanoseconds. +func TimevalToNsec(tv Timeval) int64 { return tv.Nano() } + +// NsecToTimeval converts a number of nanoseconds into a Timeval. +func NsecToTimeval(nsec int64) Timeval { + nsec += 999 // round up to microsecond + usec := nsec % 1e9 / 1e3 + sec := nsec / 1e9 + if usec < 0 { + usec += 1e6 + sec-- + } + return setTimeval(sec, usec) +} + +// Unix returns the time stored in ts as seconds plus nanoseconds. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +// Unix returns the time stored in tv as seconds plus nanoseconds. +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +// Nano returns the time stored in ts as nanoseconds. +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +// Nano returns the time stored in tv as nanoseconds. +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/unveil_openbsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/unveil_openbsd.go new file mode 100644 index 0000000..cb7e598 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/unveil_openbsd.go @@ -0,0 +1,51 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import "fmt" + +// Unveil implements the unveil syscall. +// For more information see unveil(2). +// Note that the special case of blocking further +// unveil calls is handled by UnveilBlock. +func Unveil(path string, flags string) error { + if err := supportsUnveil(); err != nil { + return err + } + pathPtr, err := BytePtrFromString(path) + if err != nil { + return err + } + flagsPtr, err := BytePtrFromString(flags) + if err != nil { + return err + } + return unveil(pathPtr, flagsPtr) +} + +// UnveilBlock blocks future unveil calls. +// For more information see unveil(2). +func UnveilBlock() error { + if err := supportsUnveil(); err != nil { + return err + } + return unveil(nil, nil) +} + +// supportsUnveil checks for availability of the unveil(2) system call based +// on the running OpenBSD version. +func supportsUnveil() error { + maj, min, err := majmin() + if err != nil { + return err + } + + // unveil is not available before 6.4 + if maj < 6 || (maj == 6 && min <= 3) { + return fmt.Errorf("cannot call Unveil on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_linux.go new file mode 100644 index 0000000..07ac8e0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_linux.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && go1.24 + +package unix + +import _ "unsafe" + +//go:linkname vgetrandom runtime.vgetrandom +//go:noescape +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go new file mode 100644 index 0000000..297e97b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux || !go1.24 + +package unix + +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { + return -1, false +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/xattr_bsd.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 0000000..e168793 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,280 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build freebsd || netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } + if dest != nil { + // extattr_get_file and extattr_list_file treat NULL differently from + // a non-NULL pointer of length zero. Preserve the property of nilness, + // even if we can't use dest directly. + return unsafe.Pointer(&_zero) + } + return nil +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s, pos := 0, 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ListxattrNS(file, nsid, dest[pos:]) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } + return s, e + } + + s += stmp + pos = s + if pos > destsiz { + pos = destsiz + } + } + + return s, nil +} + +func ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + destsiz := len(dest) + + s, pos := 0, 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := FlistxattrNS(fd, nsid, dest[pos:]) + + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } + return s, e + } + + s += stmp + pos = s + if pos > destsiz { + pos = destsiz + } + } + + return s, nil +} + +func FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + destsiz := len(dest) + + s, pos := 0, 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := LlistxattrNS(link, nsid, dest[pos:]) + + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } + return s, e + } + + s += stmp + pos = s + if pos > destsiz { + pos = destsiz + } + } + + return s, nil +} + +func LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err + } + + return s, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 0000000..2fb219d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1384 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCAST_BLOCK_SOURCE = 0x40 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x3e + MCAST_JOIN_SOURCE_GROUP = 0x42 + MCAST_LEAVE_GROUP = 0x3f + MCAST_LEAVE_SOURCE_GROUP = 0x43 + MCAST_SOURCE_FILTER = 0x49 + MCAST_UNBLOCK_SOURCE = 0x41 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NFDBITS = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fdf9669 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 0000000..b0e6f5c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1385 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && aix + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCAST_BLOCK_SOURCE = 0x40 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x3e + MCAST_JOIN_SOURCE_GROUP = 0x42 + MCAST_LEAVE_GROUP = 0x3f + MCAST_LEAVE_SOURCE_GROUP = 0x43 + MCAST_SOURCE_FILTER = 0x49 + MCAST_UNBLOCK_SOURCE = 0x41 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NFDBITS = 0x40 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fdf9669 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go new file mode 100644 index 0000000..d73c465 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -0,0 +1,1922 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && darwin + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x29 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_SYS_CONTROL = 0x2 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + AF_VSOCK = 0x28 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x51c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_SPACEUSED = 0x800000 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf087ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CLONE_NOFOLLOW = 0x1 + CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTLIOCGINFO = 0xc0644e03 + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x10a + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_DARWIN = 0x10a + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x11 + EVFILT_THREADMARKER = 0x11 + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + FSOPT_RETURN_REALDEV = 0x200 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPATH_NOFIRMLINK = 0x66 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_SPECULATIVE_READ = 0x65 + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6LOWPAN = 0x40 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x400473d1 + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_3542DSTOPTS = 0x32 + IPV6_3542HOPLIMIT = 0x2f + IPV6_3542HOPOPTS = 0x31 + IPV6_3542NEXTHOP = 0x30 + IPV6_3542PKTINFO = 0x2e + IPV6_3542RTHDR = 0x33 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x3000 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x3d + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x39 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x1c + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_32BIT = 0x8000 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_EXT_ROOT_DATA_VOL = 0x1 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_REMOVABLE = 0x200 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xd7f0f7ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_NOSIGNAL = 0x80000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_FLAGS_PRIV = 0xa + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xb + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NFDBITS = 0x20 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACHTIME = 0x100 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NOFOLLOW_ANY = 0x20000000 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DEAD = 0x20000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_GLOBAL = 0x40000000 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SEEK_CUR = 0x1 + SEEK_DATA = 0x4 + SEEK_END = 0x2 + SEEK_HOLE = 0x3 + SEEK_SET = 0x0 + SF_APPEND = 0x40000 + SF_ARCHIVED = 0x10000 + SF_DATALESS = 0x40000000 + SF_FIRMLINK = 0x800000 + SF_IMMUTABLE = 0x20000 + SF_NOUNLINK = 0x100000 + SF_RESTRICTED = 0x80000 + SF_SETTABLE = 0x3fff0000 + SF_SUPPORTED = 0x9f0000 + SF_SYNTHETIC = 0xc0000000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIF6LOWPAN = 0xc02069c5 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGIFXMEDIA = 0xc02c6948 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1 + SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4 + SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = 0x2 + SO_TRACKER_TRANSPARENCY_VERSION = 0x3 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_CC = 0xb + TCPOPT_CCECHO = 0xd + TCPOPT_CCNEW = 0xc + TCPOPT_EOL = 0x0 + TCPOPT_FASTOPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UF_APPEND = 0x4 + UF_COMPRESSED = 0x20 + UF_DATAVAULT = 0x80 + UF_HIDDEN = 0x8000 + UF_IMMUTABLE = 0x2 + UF_NODUMP = 0x1 + UF_OPAQUE = 0x8 + UF_SETTABLE = 0xffff + UF_TRACKED = 0x40 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go new file mode 100644 index 0000000..4a55a40 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -0,0 +1,1922 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && darwin + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x29 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_SYS_CONTROL = 0x2 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + AF_VSOCK = 0x28 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x51c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_SPACEUSED = 0x800000 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf087ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CLONE_NOFOLLOW = 0x1 + CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTLIOCGINFO = 0xc0644e03 + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x10a + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_DARWIN = 0x10a + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x11 + EVFILT_THREADMARKER = 0x11 + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + FSOPT_RETURN_REALDEV = 0x200 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_INFO = 0x67 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDFILESUPPL = 0x68 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPATH_NOFIRMLINK = 0x66 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GETSIGSINFO = 0x69 + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_SPECULATIVE_READ = 0x65 + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6LOWPAN = 0x40 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x400473d1 + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_3542DSTOPTS = 0x32 + IPV6_3542HOPLIMIT = 0x2f + IPV6_3542HOPOPTS = 0x31 + IPV6_3542NEXTHOP = 0x30 + IPV6_3542PKTINFO = 0x2e + IPV6_3542RTHDR = 0x33 + IPV6_ADDR_MC_FLAGS_PREFIX = 0x20 + IPV6_ADDR_MC_FLAGS_TRANSIENT = 0x10 + IPV6_ADDR_MC_FLAGS_UNICAST_BASED = 0x30 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x3000 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x3d + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x39 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x1c + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_PEERCRED = 0x1 + LOCAL_PEEREPID = 0x3 + LOCAL_PEEREUUID = 0x5 + LOCAL_PEERPID = 0x2 + LOCAL_PEERTOKEN = 0x6 + LOCAL_PEERUUID = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_32BIT = 0x8000 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MAP_TRANSLATED_ALLOW_EXECUTE = 0x20000 + MAP_UNIX03 = 0x40000 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_EXT_ROOT_DATA_VOL = 0x1 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_REMOVABLE = 0x200 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x40000000 + MNT_STRICTATIME = 0x80000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xd7f0f7ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_NOSIGNAL = 0x80000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_FLAGS_PRIV = 0xa + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xb + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NFDBITS = 0x20 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACHTIME = 0x100 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NOFOLLOW_ANY = 0x20000000 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DEAD = 0x20000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_GLOBAL = 0x40000000 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SEEK_CUR = 0x1 + SEEK_DATA = 0x4 + SEEK_END = 0x2 + SEEK_HOLE = 0x3 + SEEK_SET = 0x0 + SF_APPEND = 0x40000 + SF_ARCHIVED = 0x10000 + SF_DATALESS = 0x40000000 + SF_FIRMLINK = 0x800000 + SF_IMMUTABLE = 0x20000 + SF_NOUNLINK = 0x100000 + SF_RESTRICTED = 0x80000 + SF_SETTABLE = 0x3fff0000 + SF_SUPPORTED = 0x9f0000 + SF_SYNTHETIC = 0xc0000000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIF6LOWPAN = 0xc02069c5 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFFUNCTIONALTYPE = 0xc02069ad + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGIFXMEDIA = 0xc02c6948 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIF6LOWPAN = 0x802069c4 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1 + SO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4 + SO_TRACKER_ATTRIBUTE_FLAGS_TRACKER = 0x2 + SO_TRACKER_TRANSPARENCY_VERSION = 0x3 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_CC = 0xb + TCPOPT_CCECHO = 0xd + TCPOPT_CCNEW = 0xc + TCPOPT_EOL = 0x0 + TCPOPT_FASTOPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UF_APPEND = 0x4 + UF_COMPRESSED = 0x20 + UF_DATAVAULT = 0x80 + UF_HIDDEN = 0x8000 + UF_IMMUTABLE = 0x2 + UF_NODUMP = 0x1 + UF_OPAQUE = 0x8 + UF_SETTABLE = 0xffff + UF_TRACKED = 0x40 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go new file mode 100644 index 0000000..c0e0f86 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -0,0 +1,1737 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && dragonfly + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x21 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x23 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x22 + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETIF = 0x4020426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DEFAULTBUFSIZE = 0x1000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MAX_CLONES = 0x80 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DBF = 0xf + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0x8 + EVFILT_FS = -0xa + EVFILT_MARKER = 0xf + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xa + EVFILT_TIMER = -0x7 + EVFILT_USER = -0x9 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_HUP = 0x800 + EV_NODATA = 0x1000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTEXIT_LWP = 0x10000 + EXTEXIT_PROC = 0x0 + EXTEXIT_SETINT = 0x1 + EXTEXIT_SIMPLE = 0x0 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x318e72 + IFF_DEBUG = 0x4 + IFF_IDIRECT = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NPOLLING = 0x100000 + IFF_OACTIVE = 0x400 + IFF_OACTIVE_COMPAT = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_POLLING = 0x10000 + IFF_POLLING_COMPAT = 0x10000 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SMART = 0x20 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xf3 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SKIP = 0x39 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UNKNOWN = 0x102 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHLIM = 0x28 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PKTOPTIONS = 0x34 + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_RESETLOG = 0x37 + IP_FW_TBL_ADD = 0x2a + IP_FW_TBL_CREATE = 0x28 + IP_FW_TBL_DEL = 0x2b + IP_FW_TBL_DESTROY = 0x29 + IP_FW_TBL_EXPIRE = 0x2f + IP_FW_TBL_FLUSH = 0x2c + IP_FW_TBL_GET = 0x2d + IP_FW_TBL_ZERO = 0x2e + IP_FW_X = 0x31 + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CONTROL_END = 0xb + MADV_CONTROL_START = 0xa + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_INVAL = 0xa + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SETMAP = 0xb + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_NOCORE = 0x20000 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_NOSYNC = 0x800 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SIZEALIGN = 0x40000 + MAP_STACK = 0x400 + MAP_TRYFIXED = 0x10000 + MAP_VPAGETABLE = 0x2000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x20 + MNT_CMDFLAGS = 0xf0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x4 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_TRIM = 0x1000000 + MNT_UPDATE = 0x10000 + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0xf1f0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x1000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FBLOCKING = 0x10000 + MSG_FMASK = 0xffff0000 + MSG_FNONBLOCKING = 0x20000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_SYNC = 0x800 + MSG_TRUNC = 0x10 + MSG_UNUSED09 = 0x200 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x4 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x20000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x8000000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FAPPEND = 0x100000 + O_FASYNCWRITE = 0x800000 + O_FBLOCKING = 0x40000 + O_FMASK = 0xfc0000 + O_FNONBLOCKING = 0x80000 + O_FOFFSET = 0x200000 + O_FSYNC = 0x80 + O_FSYNCWRITE = 0x400000 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0xb + RTAX_MPLS1 = 0x8 + RTAX_MPLS2 = 0x9 + RTAX_MPLS3 = 0xa + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_MPLS1 = 0x100 + RTA_MPLS2 = 0x200 + RTA_MPLS3 = 0x400 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPLSOPS = 0x1000000 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_IWCAPSEGS = 0x400 + RTV_IWMAXSEGS = 0x200 + RTV_MSL = 0x100 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCALIFADDR = 0x8118691b + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8118691d + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc0406929 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc0206926 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPOLLCPU = 0xc020697e + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFTSOLEN = 0xc0206980 + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFPOLLCPU = 0x8020697d + SIOCSIFTSOLEN = 0x8020697f + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_CPUHINT = 0x1030 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x2000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDSPACE = 0x100a + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_FASTKEEP = 0x80 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x20 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0x100 + TCP_MIN_WINSHIFT = 0x5 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_SIGNATURE_ENABLE = 0x10 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCISPTMASTER = 0x20007455 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCHECKPT = 0x13 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x0 + VM_SWZONE_SIZE_MAX = 0x4000000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EASYNC = syscall.Errno(0x63) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x63) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEDIUM = syscall.Errno(0x5d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCKPT = syscall.Signal(0x21) + SIGCKPTEXIT = syscall.Signal(0x22) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOMEDIUM", "no medium found"}, + {99, "EASYNC", "unknown error: 99"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread Scheduler"}, + {33, "SIGCKPT", "checkPoint"}, + {34, "SIGCKPTEXIT", "checkPointExit"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go new file mode 100644 index 0000000..6c69239 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -0,0 +1,2042 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc144648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x804c6490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc06c648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXMMREGS = 0x40 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXMMREGS = 0x41 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x70e0000 + VM_SWZONE_SIZE_MAX = 0x2280000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go new file mode 100644 index 0000000..dd9163f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -0,0 +1,2039 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80506490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go new file mode 100644 index 0000000..493a2a7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -0,0 +1,2033 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x804c6490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc078648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETVFPREGS = 0x40 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETVFPREGS = 0x41 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go new file mode 100644 index 0000000..8b437b3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -0,0 +1,2033 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFRONTSTUFF = 0x40086486 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80506490 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x19000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go new file mode 100644 index 0000000..67c02dd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go @@ -0,0 +1,2147 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_HYPERV = 0x2b + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B1000000 = 0xf4240 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1500000 = 0x16e360 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B2000000 = 0x1e8480 + B230400 = 0x38400 + B2400 = 0x960 + B2500000 = 0x2625a0 + B28800 = 0x7080 + B300 = 0x12c + B3000000 = 0x2dc6c0 + B3500000 = 0x3567e0 + B38400 = 0x9600 + B4000000 = 0x3d0900 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B500000 = 0x7a120 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x5 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_COARSE = 0xc + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_COARSE = 0xa + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGKERNELDUMP = 0xc0986492 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80986491 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCSKERNELDUMP_FREEBSD12 = 0x80506490 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EHE_DEAD_PRIORITY = -0x1 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_NONE = -0xc8 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_ADD_SEALS = 0x13 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_GET_SEALS = 0x14 + F_ISUNIONSTACK = 0x15 + F_KINFO = 0x16 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f72 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_KNOWSEPOCH = 0x20 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_NETMASK_DEFAULT = 0xffffff00 + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0xfc000000 + MFD_HUGE_SHIFT = 0x1a + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0x300d0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EMPTYDIR = 0x2000000000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_EXTLS = 0x4000000000 + MNT_EXTLSCERT = 0x8000000000 + MNT_EXTLSCERTUSER = 0x10000000000 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOCOVER = 0x1000000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NET_RT_NHGRP = 0x7 + NET_RT_NHOP = 0x6 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x1000000 + O_EMPTY_PATH = 0x2000000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_PATH = 0x400000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_COREDUMP = 0x1d + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_DEFAULT_WEIGHT = 0x1 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAX_WEIGHT = 0xffffff + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_CREDS2 = 0x8 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0x8020692c + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_INIT_RATE = 0x458 + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_USE_RACK_RR = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DEFER_OPTIONS = 0x470 + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FAST_RSM_HACK = 0x471 + TCP_FIN_IS_RST = 0x49 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_HDWR_RATE_CAP = 0x46a + TCP_HDWR_UP_ONLY = 0x46c + TCP_IDLE_REDUCE = 0x46 + TCP_INFO = 0x20 + TCP_IWND_NB = 0x2b + TCP_IWND_NSEG = 0x2c + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOGID_CNT = 0x2e + TCP_LOG_ID_LEN = 0x40 + TCP_LOG_LIMIT = 0x4a + TCP_LOG_TAG = 0x2f + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXPEAKRATE = 0x45 + TCP_MAXSEG = 0x2 + TCP_MAXUNACKTIME = 0x44 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NO_PRR = 0x462 + TCP_PACING_RATE_CAP = 0x46b + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_PERF_INFO = 0x4e + TCP_PROC_ACCOUNTING = 0x4c + TCP_RACK_ABC_VAL = 0x46d + TCP_RACK_CHEAT_NOT_CONF_RATE = 0x459 + TCP_RACK_DO_DETECTION = 0x449 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_FORCE_MSEG = 0x45d + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_GP_INCREASE_CA = 0x45a + TCP_RACK_GP_INCREASE_REC = 0x45c + TCP_RACK_GP_INCREASE_SS = 0x45b + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MBUF_QUEUE = 0x41a + TCP_RACK_MEASURE_CNT = 0x46f + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_NONRXT_CFG_RATE = 0x463 + TCP_RACK_NO_PUSH_AT_MAX = 0x466 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_RATE_CA = 0x45e + TCP_RACK_PACE_RATE_REC = 0x460 + TCP_RACK_PACE_RATE_SS = 0x45f + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PACE_TO_FILL = 0x467 + TCP_RACK_PACING_BETA = 0x472 + TCP_RACK_PACING_BETA_ECN = 0x473 + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROFILE = 0x469 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_RR_CONF = 0x459 + TCP_RACK_TIMER_SLOP = 0x474 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_REC_ABC_VAL = 0x46e + TCP_REMOTE_UDP_ENCAPS_PORT = 0x47 + TCP_REUSPORT_LB_NUMA = 0x402 + TCP_REUSPORT_LB_NUMA_CURDOM = -0x1 + TCP_REUSPORT_LB_NUMA_NODOM = -0x2 + TCP_RXTLS_ENABLE = 0x29 + TCP_RXTLS_MODE = 0x2a + TCP_SHARED_CWND_ALLOWED = 0x4b + TCP_SHARED_CWND_ENABLE = 0x464 + TCP_SHARED_CWND_TIME_LIMIT = 0x468 + TCP_STATS = 0x21 + TCP_TIMELY_DYN_ADJ = 0x465 + TCP_TLS_MODE_IFNET = 0x2 + TCP_TLS_MODE_NONE = 0x0 + TCP_TLS_MODE_SW = 0x1 + TCP_TLS_MODE_TOE = 0x3 + TCP_TXTLS_ENABLE = 0x27 + TCP_TXTLS_MODE = 0x28 + TCP_USER_LOG = 0x30 + TCP_USE_CMP_ACKS = 0x4d + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux.go new file mode 100644 index 0000000..120a7b3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -0,0 +1,4144 @@ +// Code generated by mkmerge; DO NOT EDIT. + +//go:build linux + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2e + AF_MCTP = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_DRBG_ENTROPY = 0x6 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_KEY_BY_KEY_SERIAL = 0x7 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_MCTP = 0x122 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUDIT_ADD = 0x3eb + AUDIT_ADD_RULE = 0x3f3 + AUDIT_ALWAYS = 0x2 + AUDIT_ANOM_ABEND = 0x6a5 + AUDIT_ANOM_CREAT = 0x6a7 + AUDIT_ANOM_LINK = 0x6a6 + AUDIT_ANOM_PROMISCUOUS = 0x6a4 + AUDIT_ARCH = 0xb + AUDIT_ARCH_AARCH64 = 0xc00000b7 + AUDIT_ARCH_ALPHA = 0xc0009026 + AUDIT_ARCH_ARCOMPACT = 0x4000005d + AUDIT_ARCH_ARCOMPACTBE = 0x5d + AUDIT_ARCH_ARCV2 = 0x400000c3 + AUDIT_ARCH_ARCV2BE = 0xc3 + AUDIT_ARCH_ARM = 0x40000028 + AUDIT_ARCH_ARMEB = 0x28 + AUDIT_ARCH_C6X = 0x4000008c + AUDIT_ARCH_C6XBE = 0x8c + AUDIT_ARCH_CRIS = 0x4000004c + AUDIT_ARCH_CSKY = 0x400000fc + AUDIT_ARCH_FRV = 0x5441 + AUDIT_ARCH_H8300 = 0x2e + AUDIT_ARCH_HEXAGON = 0xa4 + AUDIT_ARCH_I386 = 0x40000003 + AUDIT_ARCH_IA64 = 0xc0000032 + AUDIT_ARCH_LOONGARCH32 = 0x40000102 + AUDIT_ARCH_LOONGARCH64 = 0xc0000102 + AUDIT_ARCH_M32R = 0x58 + AUDIT_ARCH_M68K = 0x4 + AUDIT_ARCH_MICROBLAZE = 0xbd + AUDIT_ARCH_MIPS = 0x8 + AUDIT_ARCH_MIPS64 = 0x80000008 + AUDIT_ARCH_MIPS64N32 = 0xa0000008 + AUDIT_ARCH_MIPSEL = 0x40000008 + AUDIT_ARCH_MIPSEL64 = 0xc0000008 + AUDIT_ARCH_MIPSEL64N32 = 0xe0000008 + AUDIT_ARCH_NDS32 = 0x400000a7 + AUDIT_ARCH_NDS32BE = 0xa7 + AUDIT_ARCH_NIOS2 = 0x40000071 + AUDIT_ARCH_OPENRISC = 0x5c + AUDIT_ARCH_PARISC = 0xf + AUDIT_ARCH_PARISC64 = 0x8000000f + AUDIT_ARCH_PPC = 0x14 + AUDIT_ARCH_PPC64 = 0x80000015 + AUDIT_ARCH_PPC64LE = 0xc0000015 + AUDIT_ARCH_RISCV32 = 0x400000f3 + AUDIT_ARCH_RISCV64 = 0xc00000f3 + AUDIT_ARCH_S390 = 0x16 + AUDIT_ARCH_S390X = 0x80000016 + AUDIT_ARCH_SH = 0x2a + AUDIT_ARCH_SH64 = 0x8000002a + AUDIT_ARCH_SHEL = 0x4000002a + AUDIT_ARCH_SHEL64 = 0xc000002a + AUDIT_ARCH_SPARC = 0x2 + AUDIT_ARCH_SPARC64 = 0x8000002b + AUDIT_ARCH_TILEGX = 0xc00000bf + AUDIT_ARCH_TILEGX32 = 0x400000bf + AUDIT_ARCH_TILEPRO = 0x400000bc + AUDIT_ARCH_UNICORE = 0x4000006e + AUDIT_ARCH_X86_64 = 0xc000003e + AUDIT_ARCH_XTENSA = 0x5e + AUDIT_ARG0 = 0xc8 + AUDIT_ARG1 = 0xc9 + AUDIT_ARG2 = 0xca + AUDIT_ARG3 = 0xcb + AUDIT_AVC = 0x578 + AUDIT_AVC_PATH = 0x57a + AUDIT_BITMASK_SIZE = 0x40 + AUDIT_BIT_MASK = 0x8000000 + AUDIT_BIT_TEST = 0x48000000 + AUDIT_BPF = 0x536 + AUDIT_BPRM_FCAPS = 0x529 + AUDIT_CAPSET = 0x52a + AUDIT_CLASS_CHATTR = 0x2 + AUDIT_CLASS_CHATTR_32 = 0x3 + AUDIT_CLASS_DIR_WRITE = 0x0 + AUDIT_CLASS_DIR_WRITE_32 = 0x1 + AUDIT_CLASS_READ = 0x4 + AUDIT_CLASS_READ_32 = 0x5 + AUDIT_CLASS_SIGNAL = 0x8 + AUDIT_CLASS_SIGNAL_32 = 0x9 + AUDIT_CLASS_WRITE = 0x6 + AUDIT_CLASS_WRITE_32 = 0x7 + AUDIT_COMPARE_AUID_TO_EUID = 0x10 + AUDIT_COMPARE_AUID_TO_FSUID = 0xe + AUDIT_COMPARE_AUID_TO_OBJ_UID = 0x5 + AUDIT_COMPARE_AUID_TO_SUID = 0xf + AUDIT_COMPARE_EGID_TO_FSGID = 0x17 + AUDIT_COMPARE_EGID_TO_OBJ_GID = 0x4 + AUDIT_COMPARE_EGID_TO_SGID = 0x18 + AUDIT_COMPARE_EUID_TO_FSUID = 0x12 + AUDIT_COMPARE_EUID_TO_OBJ_UID = 0x3 + AUDIT_COMPARE_EUID_TO_SUID = 0x11 + AUDIT_COMPARE_FSGID_TO_OBJ_GID = 0x9 + AUDIT_COMPARE_FSUID_TO_OBJ_UID = 0x8 + AUDIT_COMPARE_GID_TO_EGID = 0x14 + AUDIT_COMPARE_GID_TO_FSGID = 0x15 + AUDIT_COMPARE_GID_TO_OBJ_GID = 0x2 + AUDIT_COMPARE_GID_TO_SGID = 0x16 + AUDIT_COMPARE_SGID_TO_FSGID = 0x19 + AUDIT_COMPARE_SGID_TO_OBJ_GID = 0x7 + AUDIT_COMPARE_SUID_TO_FSUID = 0x13 + AUDIT_COMPARE_SUID_TO_OBJ_UID = 0x6 + AUDIT_COMPARE_UID_TO_AUID = 0xa + AUDIT_COMPARE_UID_TO_EUID = 0xb + AUDIT_COMPARE_UID_TO_FSUID = 0xc + AUDIT_COMPARE_UID_TO_OBJ_UID = 0x1 + AUDIT_COMPARE_UID_TO_SUID = 0xd + AUDIT_CONFIG_CHANGE = 0x519 + AUDIT_CWD = 0x51b + AUDIT_DAEMON_ABORT = 0x4b2 + AUDIT_DAEMON_CONFIG = 0x4b3 + AUDIT_DAEMON_END = 0x4b1 + AUDIT_DAEMON_START = 0x4b0 + AUDIT_DEL = 0x3ec + AUDIT_DEL_RULE = 0x3f4 + AUDIT_DEVMAJOR = 0x64 + AUDIT_DEVMINOR = 0x65 + AUDIT_DIR = 0x6b + AUDIT_DM_CTRL = 0x53a + AUDIT_DM_EVENT = 0x53b + AUDIT_EGID = 0x6 + AUDIT_EOE = 0x528 + AUDIT_EQUAL = 0x40000000 + AUDIT_EUID = 0x2 + AUDIT_EVENT_LISTENER = 0x537 + AUDIT_EXE = 0x70 + AUDIT_EXECVE = 0x51d + AUDIT_EXIT = 0x67 + AUDIT_FAIL_PANIC = 0x2 + AUDIT_FAIL_PRINTK = 0x1 + AUDIT_FAIL_SILENT = 0x0 + AUDIT_FANOTIFY = 0x533 + AUDIT_FD_PAIR = 0x525 + AUDIT_FEATURE_BITMAP_ALL = 0x7f + AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT = 0x1 + AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME = 0x2 + AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND = 0x8 + AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH = 0x4 + AUDIT_FEATURE_BITMAP_FILTER_FS = 0x40 + AUDIT_FEATURE_BITMAP_LOST_RESET = 0x20 + AUDIT_FEATURE_BITMAP_SESSIONID_FILTER = 0x10 + AUDIT_FEATURE_CHANGE = 0x530 + AUDIT_FEATURE_LOGINUID_IMMUTABLE = 0x1 + AUDIT_FEATURE_ONLY_UNSET_LOGINUID = 0x0 + AUDIT_FEATURE_VERSION = 0x1 + AUDIT_FIELD_COMPARE = 0x6f + AUDIT_FILETYPE = 0x6c + AUDIT_FILTERKEY = 0xd2 + AUDIT_FILTER_ENTRY = 0x2 + AUDIT_FILTER_EXCLUDE = 0x5 + AUDIT_FILTER_EXIT = 0x4 + AUDIT_FILTER_FS = 0x6 + AUDIT_FILTER_PREPEND = 0x10 + AUDIT_FILTER_TASK = 0x1 + AUDIT_FILTER_TYPE = 0x5 + AUDIT_FILTER_URING_EXIT = 0x7 + AUDIT_FILTER_USER = 0x0 + AUDIT_FILTER_WATCH = 0x3 + AUDIT_FIRST_KERN_ANOM_MSG = 0x6a4 + AUDIT_FIRST_USER_MSG = 0x44c + AUDIT_FIRST_USER_MSG2 = 0x834 + AUDIT_FSGID = 0x8 + AUDIT_FSTYPE = 0x1a + AUDIT_FSUID = 0x4 + AUDIT_GET = 0x3e8 + AUDIT_GET_FEATURE = 0x3fb + AUDIT_GID = 0x5 + AUDIT_GREATER_THAN = 0x20000000 + AUDIT_GREATER_THAN_OR_EQUAL = 0x60000000 + AUDIT_INODE = 0x66 + AUDIT_INTEGRITY_DATA = 0x708 + AUDIT_INTEGRITY_EVM_XATTR = 0x70e + AUDIT_INTEGRITY_HASH = 0x70b + AUDIT_INTEGRITY_METADATA = 0x709 + AUDIT_INTEGRITY_PCR = 0x70c + AUDIT_INTEGRITY_POLICY_RULE = 0x70f + AUDIT_INTEGRITY_RULE = 0x70d + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_INTEGRITY_USERSPACE = 0x710 + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f + AUDIT_IPE_ACCESS = 0x58c + AUDIT_IPE_CONFIG_CHANGE = 0x58d + AUDIT_IPE_POLICY_LOAD = 0x58e + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 + AUDIT_LANDLOCK_ACCESS = 0x58f + AUDIT_LANDLOCK_DOMAIN = 0x590 + AUDIT_LAST_FEATURE = 0x1 + AUDIT_LAST_KERN_ANOM_MSG = 0x707 + AUDIT_LAST_USER_MSG = 0x4af + AUDIT_LAST_USER_MSG2 = 0xbb7 + AUDIT_LESS_THAN = 0x10000000 + AUDIT_LESS_THAN_OR_EQUAL = 0x50000000 + AUDIT_LIST = 0x3ea + AUDIT_LIST_RULES = 0x3f5 + AUDIT_LOGIN = 0x3ee + AUDIT_LOGINUID = 0x9 + AUDIT_LOGINUID_SET = 0x18 + AUDIT_MAC_CALIPSO_ADD = 0x58a + AUDIT_MAC_CALIPSO_DEL = 0x58b + AUDIT_MAC_CIPSOV4_ADD = 0x57f + AUDIT_MAC_CIPSOV4_DEL = 0x580 + AUDIT_MAC_CONFIG_CHANGE = 0x57d + AUDIT_MAC_IPSEC_ADDSA = 0x583 + AUDIT_MAC_IPSEC_ADDSPD = 0x585 + AUDIT_MAC_IPSEC_DELSA = 0x584 + AUDIT_MAC_IPSEC_DELSPD = 0x586 + AUDIT_MAC_IPSEC_EVENT = 0x587 + AUDIT_MAC_MAP_ADD = 0x581 + AUDIT_MAC_MAP_DEL = 0x582 + AUDIT_MAC_POLICY_LOAD = 0x57b + AUDIT_MAC_STATUS = 0x57c + AUDIT_MAC_UNLBL_ALLOW = 0x57e + AUDIT_MAC_UNLBL_STCADD = 0x588 + AUDIT_MAC_UNLBL_STCDEL = 0x589 + AUDIT_MAKE_EQUIV = 0x3f7 + AUDIT_MAX_FIELDS = 0x40 + AUDIT_MAX_FIELD_COMPARE = 0x19 + AUDIT_MAX_KEY_LEN = 0x100 + AUDIT_MESSAGE_TEXT_MAX = 0x2170 + AUDIT_MMAP = 0x52b + AUDIT_MQ_GETSETATTR = 0x523 + AUDIT_MQ_NOTIFY = 0x522 + AUDIT_MQ_OPEN = 0x520 + AUDIT_MQ_SENDRECV = 0x521 + AUDIT_MSGTYPE = 0xc + AUDIT_NEGATE = 0x80000000 + AUDIT_NETFILTER_CFG = 0x52d + AUDIT_NETFILTER_PKT = 0x52c + AUDIT_NEVER = 0x0 + AUDIT_NLGRP_MAX = 0x1 + AUDIT_NOT_EQUAL = 0x30000000 + AUDIT_NR_FILTERS = 0x8 + AUDIT_OBJ_GID = 0x6e + AUDIT_OBJ_LEV_HIGH = 0x17 + AUDIT_OBJ_LEV_LOW = 0x16 + AUDIT_OBJ_PID = 0x526 + AUDIT_OBJ_ROLE = 0x14 + AUDIT_OBJ_TYPE = 0x15 + AUDIT_OBJ_UID = 0x6d + AUDIT_OBJ_USER = 0x13 + AUDIT_OPENAT2 = 0x539 + AUDIT_OPERATORS = 0x78000000 + AUDIT_PATH = 0x516 + AUDIT_PERM = 0x6a + AUDIT_PERM_ATTR = 0x8 + AUDIT_PERM_EXEC = 0x1 + AUDIT_PERM_READ = 0x4 + AUDIT_PERM_WRITE = 0x2 + AUDIT_PERS = 0xa + AUDIT_PID = 0x0 + AUDIT_POSSIBLE = 0x1 + AUDIT_PPID = 0x12 + AUDIT_PROCTITLE = 0x52f + AUDIT_REPLACE = 0x531 + AUDIT_SADDR_FAM = 0x71 + AUDIT_SECCOMP = 0x52e + AUDIT_SELINUX_ERR = 0x579 + AUDIT_SESSIONID = 0x19 + AUDIT_SET = 0x3e9 + AUDIT_SET_FEATURE = 0x3fa + AUDIT_SGID = 0x7 + AUDIT_SID_UNSET = 0xffffffff + AUDIT_SIGNAL_INFO = 0x3f2 + AUDIT_SOCKADDR = 0x51a + AUDIT_SOCKETCALL = 0x518 + AUDIT_STATUS_BACKLOG_LIMIT = 0x10 + AUDIT_STATUS_BACKLOG_WAIT_TIME = 0x20 + AUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL = 0x80 + AUDIT_STATUS_ENABLED = 0x1 + AUDIT_STATUS_FAILURE = 0x2 + AUDIT_STATUS_LOST = 0x40 + AUDIT_STATUS_PID = 0x4 + AUDIT_STATUS_RATE_LIMIT = 0x8 + AUDIT_SUBJ_CLR = 0x11 + AUDIT_SUBJ_ROLE = 0xe + AUDIT_SUBJ_SEN = 0x10 + AUDIT_SUBJ_TYPE = 0xf + AUDIT_SUBJ_USER = 0xd + AUDIT_SUCCESS = 0x68 + AUDIT_SUID = 0x3 + AUDIT_SYSCALL = 0x514 + AUDIT_SYSCALL_CLASSES = 0x10 + AUDIT_TIME_ADJNTPVAL = 0x535 + AUDIT_TIME_INJOFFSET = 0x534 + AUDIT_TRIM = 0x3f6 + AUDIT_TTY = 0x527 + AUDIT_TTY_GET = 0x3f8 + AUDIT_TTY_SET = 0x3f9 + AUDIT_UID = 0x1 + AUDIT_UID_UNSET = 0xffffffff + AUDIT_UNUSED_BITS = 0x7fffc00 + AUDIT_URINGOP = 0x538 + AUDIT_USER = 0x3ed + AUDIT_USER_AVC = 0x453 + AUDIT_USER_TTY = 0x464 + AUDIT_VERSION_BACKLOG_LIMIT = 0x1 + AUDIT_VERSION_BACKLOG_WAIT_TIME = 0x2 + AUDIT_VERSION_LATEST = 0x7f + AUDIT_WATCH = 0x69 + AUDIT_WATCH_INS = 0x3ef + AUDIT_WATCH_LIST = 0x3f1 + AUDIT_WATCH_REM = 0x3f0 + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BCACHEFS_SUPER_MAGIC = 0xca451a4e + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_ALU64 = 0x7 + BPF_AND = 0x50 + BPF_ARSH = 0xc0 + BPF_ATOMIC = 0xc0 + BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_CMPXCHG = 0xf1 + BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIT = 0x90 + BPF_FETCH = 0x1 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_AFTER = 0x10 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_BEFORE = 0x8 + BPF_F_ID = 0x20 + BPF_F_NETFILTER_IP_DEFRAG = 0x1 + BPF_F_PREORDER = 0x40 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_REDIRECT_FLAGS = 0x19 + BPF_F_REPLACE = 0x4 + BPF_F_SLEEPABLE = 0x10 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_TEST_REG_INVARIANTS = 0x80 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TEST_RUN_ON_CPU = 0x1 + BPF_F_TEST_SKB_CHECKSUM_COMPLETE = 0x4 + BPF_F_TEST_STATE_FREQ = 0x8 + BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 + BPF_F_XDP_DEV_BOUND_ONLY = 0x40 + BPF_F_XDP_HAS_FRAGS = 0x20 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JCOND = 0xe0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 + BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 + BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LOAD_ACQ = 0x100 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMSX = 0x80 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MOV = 0xb0 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OBJ_NAME_LEN = 0x10 + BPF_OR = 0x40 + BPF_PSEUDO_BTF_ID = 0x3 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_FUNC = 0x4 + BPF_PSEUDO_KFUNC_CALL = 0x2 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_IDX = 0x5 + BPF_PSEUDO_MAP_IDX_VALUE = 0x6 + BPF_PSEUDO_MAP_VALUE = 0x2 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STORE_REL = 0x110 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 + BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XADD = 0xc0 + BPF_XCHG = 0xe1 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + BUS_BLUETOOTH = 0x5 + BUS_HIL = 0x4 + BUS_USB = 0x3 + BUS_VIRTUAL = 0x6 + CAN_BCM = 0x2 + CAN_BUS_OFF_THRESHOLD = 0x100 + CAN_CTRLMODE_3_SAMPLES = 0x4 + CAN_CTRLMODE_BERR_REPORTING = 0x10 + CAN_CTRLMODE_CC_LEN8_DLC = 0x100 + CAN_CTRLMODE_FD = 0x20 + CAN_CTRLMODE_FD_NON_ISO = 0x80 + CAN_CTRLMODE_LISTENONLY = 0x2 + CAN_CTRLMODE_LOOPBACK = 0x1 + CAN_CTRLMODE_ONE_SHOT = 0x8 + CAN_CTRLMODE_PRESUME_ACK = 0x40 + CAN_CTRLMODE_TDC_AUTO = 0x200 + CAN_CTRLMODE_TDC_MANUAL = 0x400 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERROR_PASSIVE_THRESHOLD = 0x80 + CAN_ERROR_WARNING_THRESHOLD = 0x60 + CAN_ERR_ACK = 0x20 + CAN_ERR_BUSERROR = 0x80 + CAN_ERR_BUSOFF = 0x40 + CAN_ERR_CNT = 0x200 + CAN_ERR_CRTL = 0x4 + CAN_ERR_CRTL_ACTIVE = 0x40 + CAN_ERR_CRTL_RX_OVERFLOW = 0x1 + CAN_ERR_CRTL_RX_PASSIVE = 0x10 + CAN_ERR_CRTL_RX_WARNING = 0x4 + CAN_ERR_CRTL_TX_OVERFLOW = 0x2 + CAN_ERR_CRTL_TX_PASSIVE = 0x20 + CAN_ERR_CRTL_TX_WARNING = 0x8 + CAN_ERR_CRTL_UNSPEC = 0x0 + CAN_ERR_DLC = 0x8 + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_LOSTARB = 0x2 + CAN_ERR_LOSTARB_UNSPEC = 0x0 + CAN_ERR_MASK = 0x1fffffff + CAN_ERR_PROT = 0x8 + CAN_ERR_PROT_ACTIVE = 0x40 + CAN_ERR_PROT_BIT = 0x1 + CAN_ERR_PROT_BIT0 = 0x8 + CAN_ERR_PROT_BIT1 = 0x10 + CAN_ERR_PROT_FORM = 0x2 + CAN_ERR_PROT_LOC_ACK = 0x19 + CAN_ERR_PROT_LOC_ACK_DEL = 0x1b + CAN_ERR_PROT_LOC_CRC_DEL = 0x18 + CAN_ERR_PROT_LOC_CRC_SEQ = 0x8 + CAN_ERR_PROT_LOC_DATA = 0xa + CAN_ERR_PROT_LOC_DLC = 0xb + CAN_ERR_PROT_LOC_EOF = 0x1a + CAN_ERR_PROT_LOC_ID04_00 = 0xe + CAN_ERR_PROT_LOC_ID12_05 = 0xf + CAN_ERR_PROT_LOC_ID17_13 = 0x7 + CAN_ERR_PROT_LOC_ID20_18 = 0x6 + CAN_ERR_PROT_LOC_ID28_21 = 0x2 + CAN_ERR_PROT_LOC_IDE = 0x5 + CAN_ERR_PROT_LOC_INTERM = 0x12 + CAN_ERR_PROT_LOC_RES0 = 0x9 + CAN_ERR_PROT_LOC_RES1 = 0xd + CAN_ERR_PROT_LOC_RTR = 0xc + CAN_ERR_PROT_LOC_SOF = 0x3 + CAN_ERR_PROT_LOC_SRTR = 0x4 + CAN_ERR_PROT_LOC_UNSPEC = 0x0 + CAN_ERR_PROT_OVERLOAD = 0x20 + CAN_ERR_PROT_STUFF = 0x4 + CAN_ERR_PROT_TX = 0x80 + CAN_ERR_PROT_UNSPEC = 0x0 + CAN_ERR_RESTARTED = 0x100 + CAN_ERR_TRX = 0x10 + CAN_ERR_TRX_CANH_NO_WIRE = 0x4 + CAN_ERR_TRX_CANH_SHORT_TO_BAT = 0x5 + CAN_ERR_TRX_CANH_SHORT_TO_GND = 0x7 + CAN_ERR_TRX_CANH_SHORT_TO_VCC = 0x6 + CAN_ERR_TRX_CANL_NO_WIRE = 0x40 + CAN_ERR_TRX_CANL_SHORT_TO_BAT = 0x50 + CAN_ERR_TRX_CANL_SHORT_TO_CANH = 0x80 + CAN_ERR_TRX_CANL_SHORT_TO_GND = 0x70 + CAN_ERR_TRX_CANL_SHORT_TO_VCC = 0x60 + CAN_ERR_TRX_UNSPEC = 0x0 + CAN_ERR_TX_TIMEOUT = 0x1 + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_J1939 = 0x7 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MAX_RAW_DLC = 0xf + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x8 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RAW_XL_VCID_RX_FILTER = 0x4 + CAN_RAW_XL_VCID_TX_PASS = 0x2 + CAN_RAW_XL_VCID_TX_SET = 0x1 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TERMINATION_DISABLED = 0x0 + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_BPF = 0x27 + CAP_CHECKPOINT_RESTORE = 0x28 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x28 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_PERFMON = 0x26 + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 + CEPH_SUPER_MAGIC = 0xc36400 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIFS_SUPER_MAGIC = 0xff534d42 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_ARGS_SIZE_VER0 = 0x40 + CLONE_ARGS_SIZE_VER1 = 0x50 + CLONE_ARGS_SIZE_VER2 = 0x58 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_CLEAR_SIGHAND = 0x100000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_INTO_CGROUP = 0x200000000 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWTIME = 0x80 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CRAMFS_MAGIC = 0x28cd3d45 + CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 + CS5 = 0x0 + CSIGNAL = 0xff + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVLINK_CMD_ESWITCH_MODE_GET = 0x1d + DEVLINK_CMD_ESWITCH_MODE_SET = 0x1e + DEVLINK_FLASH_OVERWRITE_IDENTIFIERS = 0x2 + DEVLINK_FLASH_OVERWRITE_SETTINGS = 0x1 + DEVLINK_GENL_MCGRP_CONFIG_NAME = "config" + DEVLINK_GENL_NAME = "devlink" + DEVLINK_GENL_VERSION = 0x1 + DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO = 0x4 + DEVLINK_PORT_FN_CAP_IPSEC_PACKET = 0x8 + DEVLINK_PORT_FN_CAP_MIGRATABLE = 0x2 + DEVLINK_PORT_FN_CAP_ROCE = 0x1 + DEVLINK_SB_THRESHOLD_TO_ALPHA_MAX = 0x14 + DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS = 0x3 + DEVMEM_MAGIC = 0x454d444d + DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 + DM_ACTIVE_PRESENT_FLAG = 0x20 + DM_BUFFER_FULL_FLAG = 0x100 + DM_CONTROL_NODE = "control" + DM_DATA_OUT_FLAG = 0x10000 + DM_DEFERRED_REMOVE = 0x20000 + DM_DEV_ARM_POLL = 0xc138fd10 + DM_DEV_CREATE = 0xc138fd03 + DM_DEV_REMOVE = 0xc138fd04 + DM_DEV_RENAME = 0xc138fd05 + DM_DEV_SET_GEOMETRY = 0xc138fd0f + DM_DEV_STATUS = 0xc138fd07 + DM_DEV_SUSPEND = 0xc138fd06 + DM_DEV_WAIT = 0xc138fd08 + DM_DIR = "mapper" + DM_GET_TARGET_VERSION = 0xc138fd11 + DM_IMA_MEASUREMENT_FLAG = 0x80000 + DM_INACTIVE_PRESENT_FLAG = 0x40 + DM_INTERNAL_SUSPEND_FLAG = 0x40000 + DM_IOCTL = 0xfd + DM_LIST_DEVICES = 0xc138fd02 + DM_LIST_VERSIONS = 0xc138fd0d + DM_MAX_TYPE_NAME = 0x10 + DM_NAME_LEN = 0x80 + DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID = 0x2 + DM_NAME_LIST_FLAG_HAS_UUID = 0x1 + DM_NOFLUSH_FLAG = 0x800 + DM_PERSISTENT_DEV_FLAG = 0x8 + DM_QUERY_INACTIVE_TABLE_FLAG = 0x1000 + DM_READONLY_FLAG = 0x1 + DM_REMOVE_ALL = 0xc138fd01 + DM_SECURE_DATA_FLAG = 0x8000 + DM_SKIP_BDGET_FLAG = 0x200 + DM_SKIP_LOCKFS_FLAG = 0x400 + DM_STATUS_TABLE_FLAG = 0x10 + DM_SUSPEND_FLAG = 0x2 + DM_TABLE_CLEAR = 0xc138fd0a + DM_TABLE_DEPS = 0xc138fd0b + DM_TABLE_LOAD = 0xc138fd09 + DM_TABLE_STATUS = 0xc138fd0c + DM_TARGET_MSG = 0xc138fd0e + DM_UEVENT_GENERATED_FLAG = 0x2000 + DM_UUID_FLAG = 0x4000 + DM_UUID_LEN = 0x81 + DM_VERSION = 0xc138fd00 + DM_VERSION_EXTRA = "-ioctl (2025-04-28)" + DM_VERSION_MAJOR = 0x4 + DM_VERSION_MINOR = 0x32 + DM_VERSION_PATCHLEVEL = 0x0 + DT_ADDRRNGHI = 0x6ffffeff + DT_ADDRRNGLO = 0x6ffffe00 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DEBUG = 0x15 + DT_DIR = 0x4 + DT_ENCODING = 0x20 + DT_FIFO = 0x1 + DT_FINI = 0xd + DT_FLAGS_1 = 0x6ffffffb + DT_GNU_HASH = 0x6ffffef5 + DT_HASH = 0x4 + DT_HIOS = 0x6ffff000 + DT_HIPROC = 0x7fffffff + DT_INIT = 0xc + DT_JMPREL = 0x17 + DT_LNK = 0xa + DT_LOOS = 0x6000000d + DT_LOPROC = 0x70000000 + DT_NEEDED = 0x1 + DT_NULL = 0x0 + DT_PLTGOT = 0x3 + DT_PLTREL = 0x14 + DT_PLTRELSZ = 0x2 + DT_REG = 0x8 + DT_REL = 0x11 + DT_RELA = 0x7 + DT_RELACOUNT = 0x6ffffff9 + DT_RELAENT = 0x9 + DT_RELASZ = 0x8 + DT_RELCOUNT = 0x6ffffffa + DT_RELENT = 0x13 + DT_RELSZ = 0x12 + DT_RPATH = 0xf + DT_SOCK = 0xc + DT_SONAME = 0xe + DT_STRSZ = 0xa + DT_STRTAB = 0x5 + DT_SYMBOLIC = 0x10 + DT_SYMENT = 0xb + DT_SYMTAB = 0x6 + DT_TEXTREL = 0x16 + DT_UNKNOWN = 0x0 + DT_VALRNGHI = 0x6ffffdff + DT_VALRNGLO = 0x6ffffd00 + DT_VERDEF = 0x6ffffffc + DT_VERDEFNUM = 0x6ffffffd + DT_VERNEED = 0x6ffffffe + DT_VERNEEDNUM = 0x6fffffff + DT_VERSYM = 0x6ffffff0 + DT_WHT = 0xe + ECHO = 0x8 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + EI_CLASS = 0x4 + EI_DATA = 0x5 + EI_MAG0 = 0x0 + EI_MAG1 = 0x1 + EI_MAG2 = 0x2 + EI_MAG3 = 0x3 + EI_NIDENT = 0x10 + EI_OSABI = 0x7 + EI_PAD = 0x8 + EI_VERSION = 0x6 + ELFCLASS32 = 0x1 + ELFCLASS64 = 0x2 + ELFCLASSNONE = 0x0 + ELFCLASSNUM = 0x3 + ELFDATA2LSB = 0x1 + ELFDATA2MSB = 0x2 + ELFDATANONE = 0x0 + ELFMAG = "\177ELF" + ELFMAG0 = 0x7f + ELFMAG1 = 'E' + ELFMAG2 = 'L' + ELFMAG3 = 'F' + ELFOSABI_LINUX = 0x3 + ELFOSABI_NONE = 0x0 + EM_386 = 0x3 + EM_486 = 0x6 + EM_68K = 0x4 + EM_860 = 0x7 + EM_88K = 0x5 + EM_AARCH64 = 0xb7 + EM_ALPHA = 0x9026 + EM_ALTERA_NIOS2 = 0x71 + EM_ARCOMPACT = 0x5d + EM_ARCV2 = 0xc3 + EM_ARM = 0x28 + EM_BLACKFIN = 0x6a + EM_BPF = 0xf7 + EM_CRIS = 0x4c + EM_CSKY = 0xfc + EM_CYGNUS_M32R = 0x9041 + EM_CYGNUS_MN10300 = 0xbeef + EM_FRV = 0x5441 + EM_H8_300 = 0x2e + EM_HEXAGON = 0xa4 + EM_IA_64 = 0x32 + EM_LOONGARCH = 0x102 + EM_M32 = 0x1 + EM_M32R = 0x58 + EM_MICROBLAZE = 0xbd + EM_MIPS = 0x8 + EM_MIPS_RS3_LE = 0xa + EM_MIPS_RS4_BE = 0xa + EM_MN10300 = 0x59 + EM_NDS32 = 0xa7 + EM_NONE = 0x0 + EM_OPENRISC = 0x5c + EM_PARISC = 0xf + EM_PPC = 0x14 + EM_PPC64 = 0x15 + EM_RISCV = 0xf3 + EM_S390 = 0x16 + EM_S390_OLD = 0xa390 + EM_SH = 0x2a + EM_SPARC = 0x2 + EM_SPARC32PLUS = 0x12 + EM_SPARCV9 = 0x2b + EM_SPU = 0x17 + EM_TILEGX = 0xbf + EM_TILEPRO = 0xbc + EM_TI_C6000 = 0x8c + EM_UNICORE = 0x6e + EM_X86_64 = 0x3e + EM_XTENSA = 0x5e + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + EPOLL_IOC_TYPE = 0x8a + EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2 + ETHTOOL_BUSINFO_LEN = 0x20 + ETHTOOL_EROMVERS_LEN = 0x20 + ETHTOOL_FAMILY_NAME = "ethtool" + ETHTOOL_FAMILY_VERSION = 0x1 + ETHTOOL_FEC_AUTO = 0x2 + ETHTOOL_FEC_BASER = 0x10 + ETHTOOL_FEC_LLRS = 0x20 + ETHTOOL_FEC_NONE = 0x1 + ETHTOOL_FEC_OFF = 0x4 + ETHTOOL_FEC_RS = 0x8 + ETHTOOL_FLAG_ALL = 0x7 + ETHTOOL_FLASHDEV = 0x33 + ETHTOOL_FLASH_MAX_FILENAME = 0x80 + ETHTOOL_FWVERS_LEN = 0x20 + ETHTOOL_F_COMPAT = 0x4 + ETHTOOL_F_UNSUPPORTED = 0x1 + ETHTOOL_F_WISH = 0x2 + ETHTOOL_GCHANNELS = 0x3c + ETHTOOL_GCOALESCE = 0xe + ETHTOOL_GDRVINFO = 0x3 + ETHTOOL_GEEE = 0x44 + ETHTOOL_GEEPROM = 0xb + ETHTOOL_GENL_NAME = "ethtool" + ETHTOOL_GENL_VERSION = 0x1 + ETHTOOL_GET_DUMP_DATA = 0x40 + ETHTOOL_GET_DUMP_FLAG = 0x3f + ETHTOOL_GET_TS_INFO = 0x41 + ETHTOOL_GFEATURES = 0x3a + ETHTOOL_GFECPARAM = 0x50 + ETHTOOL_GFLAGS = 0x25 + ETHTOOL_GGRO = 0x2b + ETHTOOL_GGSO = 0x23 + ETHTOOL_GLINK = 0xa + ETHTOOL_GLINKSETTINGS = 0x4c + ETHTOOL_GMODULEEEPROM = 0x43 + ETHTOOL_GMODULEINFO = 0x42 + ETHTOOL_GMSGLVL = 0x7 + ETHTOOL_GPAUSEPARAM = 0x12 + ETHTOOL_GPERMADDR = 0x20 + ETHTOOL_GPFLAGS = 0x27 + ETHTOOL_GPHYSTATS = 0x4a + ETHTOOL_GREGS = 0x4 + ETHTOOL_GRINGPARAM = 0x10 + ETHTOOL_GRSSH = 0x46 + ETHTOOL_GRXCLSRLALL = 0x30 + ETHTOOL_GRXCLSRLCNT = 0x2e + ETHTOOL_GRXCLSRULE = 0x2f + ETHTOOL_GRXCSUM = 0x14 + ETHTOOL_GRXFH = 0x29 + ETHTOOL_GRXFHINDIR = 0x38 + ETHTOOL_GRXNTUPLE = 0x36 + ETHTOOL_GRXRINGS = 0x2d + ETHTOOL_GSET = 0x1 + ETHTOOL_GSG = 0x18 + ETHTOOL_GSSET_INFO = 0x37 + ETHTOOL_GSTATS = 0x1d + ETHTOOL_GSTRINGS = 0x1b + ETHTOOL_GTSO = 0x1e + ETHTOOL_GTUNABLE = 0x48 + ETHTOOL_GTXCSUM = 0x16 + ETHTOOL_GUFO = 0x21 + ETHTOOL_GWOL = 0x5 + ETHTOOL_MCGRP_MONITOR_NAME = "monitor" + ETHTOOL_NWAY_RST = 0x9 + ETHTOOL_PERQUEUE = 0x4b + ETHTOOL_PHYS_ID = 0x1c + ETHTOOL_PHY_EDPD_DFLT_TX_MSECS = 0xffff + ETHTOOL_PHY_EDPD_DISABLE = 0x0 + ETHTOOL_PHY_EDPD_NO_TX = 0xfffe + ETHTOOL_PHY_FAST_LINK_DOWN_OFF = 0xff + ETHTOOL_PHY_FAST_LINK_DOWN_ON = 0x0 + ETHTOOL_PHY_GTUNABLE = 0x4e + ETHTOOL_PHY_STUNABLE = 0x4f + ETHTOOL_RESET = 0x34 + ETHTOOL_RXNTUPLE_ACTION_CLEAR = -0x2 + ETHTOOL_RXNTUPLE_ACTION_DROP = -0x1 + ETHTOOL_RX_FLOW_SPEC_RING = 0xffffffff + ETHTOOL_RX_FLOW_SPEC_RING_VF = 0xff00000000 + ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF = 0x20 + ETHTOOL_SCHANNELS = 0x3d + ETHTOOL_SCOALESCE = 0xf + ETHTOOL_SEEE = 0x45 + ETHTOOL_SEEPROM = 0xc + ETHTOOL_SET_DUMP = 0x3e + ETHTOOL_SFEATURES = 0x3b + ETHTOOL_SFECPARAM = 0x51 + ETHTOOL_SFLAGS = 0x26 + ETHTOOL_SGRO = 0x2c + ETHTOOL_SGSO = 0x24 + ETHTOOL_SLINKSETTINGS = 0x4d + ETHTOOL_SMSGLVL = 0x8 + ETHTOOL_SPAUSEPARAM = 0x13 + ETHTOOL_SPFLAGS = 0x28 + ETHTOOL_SRINGPARAM = 0x11 + ETHTOOL_SRSSH = 0x47 + ETHTOOL_SRXCLSRLDEL = 0x31 + ETHTOOL_SRXCLSRLINS = 0x32 + ETHTOOL_SRXCSUM = 0x15 + ETHTOOL_SRXFH = 0x2a + ETHTOOL_SRXFHINDIR = 0x39 + ETHTOOL_SRXNTUPLE = 0x35 + ETHTOOL_SSET = 0x2 + ETHTOOL_SSG = 0x19 + ETHTOOL_STSO = 0x1f + ETHTOOL_STUNABLE = 0x49 + ETHTOOL_STXCSUM = 0x17 + ETHTOOL_SUFO = 0x22 + ETHTOOL_SWOL = 0x6 + ETHTOOL_TEST = 0x1a + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CANXL = 0xe + ETH_P_CFM = 0x8902 + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb + ETH_P_DSA_A5PSW = 0xe001 + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_ETHERCAT = 0x88a4 + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MCTP = 0xfa + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MRP = 0x88e3 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PROFINET = 0x8892 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_REALTEK = 0x8899 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + ET_CORE = 0x4 + ET_DYN = 0x3 + ET_EXEC = 0x2 + ET_HIPROC = 0xffff + ET_LOPROC = 0xff00 + ET_NONE = 0x0 + ET_REL = 0x1 + EV_ABS = 0x3 + EV_CNT = 0x20 + EV_CURRENT = 0x1 + EV_FF = 0x15 + EV_FF_STATUS = 0x17 + EV_KEY = 0x1 + EV_LED = 0x11 + EV_MAX = 0x1f + EV_MSC = 0x4 + EV_NONE = 0x0 + EV_NUM = 0x2 + EV_PWR = 0x16 + EV_REL = 0x2 + EV_REP = 0x14 + EV_SND = 0x12 + EV_SW = 0x5 + EV_SYN = 0x0 + EV_VERSION = 0x10001 + EXABYTE_ENABLE_NEST = 0xf0 + EXFAT_SUPER_MAGIC = 0x2011bab0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_ALLOCATE_RANGE = 0x0 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EPIDFD = -0x2 + FAN_ERRNO_BITS = 0x8 + FAN_ERRNO_MASK = 0xff + FAN_ERRNO_SHIFT = 0x18 + FAN_EVENT_INFO_TYPE_DFID = 0x3 + FAN_EVENT_INFO_TYPE_DFID_NAME = 0x2 + FAN_EVENT_INFO_TYPE_ERROR = 0x5 + FAN_EVENT_INFO_TYPE_FID = 0x1 + FAN_EVENT_INFO_TYPE_MNT = 0x7 + FAN_EVENT_INFO_TYPE_NEW_DFID_NAME = 0xc + FAN_EVENT_INFO_TYPE_OLD_DFID_NAME = 0xa + FAN_EVENT_INFO_TYPE_PIDFD = 0x4 + FAN_EVENT_INFO_TYPE_RANGE = 0x6 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_FS_ERROR = 0x8000 + FAN_INFO = 0x20 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_EVICTABLE = 0x200 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORE = 0x400 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_IGNORE_SURV = 0x440 + FAN_MARK_INODE = 0x0 + FAN_MARK_MNTNS = 0x110 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MNT_ATTACH = 0x1000000 + FAN_MNT_DETACH = 0x2000000 + FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_NOPIDFD = -0x1 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_PRE_ACCESS = 0x100000 + FAN_Q_OVERFLOW = 0x4000 + FAN_RENAME = 0x10000000 + FAN_REPORT_DFID_NAME = 0xc00 + FAN_REPORT_DFID_NAME_TARGET = 0x1e00 + FAN_REPORT_DIR_FID = 0x400 + FAN_REPORT_FD_ERROR = 0x2000 + FAN_REPORT_FID = 0x200 + FAN_REPORT_MNT = 0x4000 + FAN_REPORT_NAME = 0x800 + FAN_REPORT_PIDFD = 0x80 + FAN_REPORT_TARGET_FID = 0x1000 + FAN_REPORT_TID = 0x100 + FAN_RESPONSE_INFO_AUDIT_RULE = 0x1 + FAN_RESPONSE_INFO_NONE = 0x0 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FIB_RULE_DEV_DETACHED = 0x8 + FIB_RULE_FIND_SADDR = 0x10000 + FIB_RULE_IIF_DETACHED = 0x8 + FIB_RULE_INVERT = 0x2 + FIB_RULE_OIF_DETACHED = 0x10 + FIB_RULE_PERMANENT = 0x1 + FIB_RULE_UNRESOLVED = 0x4 + FIDEDUPERANGE = 0xc0189436 + FSCRYPT_ADD_KEY_FLAG_HW_WRAPPED = 0x1 + FSCRYPT_KEY_DESCRIPTOR_SIZE = 0x8 + FSCRYPT_KEY_DESC_PREFIX = "fscrypt:" + FSCRYPT_KEY_DESC_PREFIX_SIZE = 0x8 + FSCRYPT_KEY_IDENTIFIER_SIZE = 0x10 + FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY = 0x1 + FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2 + FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR = 0x1 + FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER = 0x2 + FSCRYPT_KEY_STATUS_ABSENT = 0x1 + FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF = 0x1 + FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED = 0x3 + FSCRYPT_KEY_STATUS_PRESENT = 0x2 + FSCRYPT_MAX_KEY_SIZE = 0x40 + FSCRYPT_MODE_ADIANTUM = 0x9 + FSCRYPT_MODE_AES_128_CBC = 0x5 + FSCRYPT_MODE_AES_128_CTS = 0x6 + FSCRYPT_MODE_AES_256_CTS = 0x4 + FSCRYPT_MODE_AES_256_HCTR2 = 0xa + FSCRYPT_MODE_AES_256_XTS = 0x1 + FSCRYPT_MODE_SM4_CTS = 0x8 + FSCRYPT_MODE_SM4_XTS = 0x7 + FSCRYPT_POLICY_FLAGS_PAD_16 = 0x2 + FSCRYPT_POLICY_FLAGS_PAD_32 = 0x3 + FSCRYPT_POLICY_FLAGS_PAD_4 = 0x0 + FSCRYPT_POLICY_FLAGS_PAD_8 = 0x1 + FSCRYPT_POLICY_FLAGS_PAD_MASK = 0x3 + FSCRYPT_POLICY_FLAG_DIRECT_KEY = 0x4 + FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 = 0x10 + FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 = 0x8 + FSCRYPT_POLICY_V1 = 0x0 + FSCRYPT_POLICY_V2 = 0x2 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_IOC_ADD_ENCRYPTION_KEY = 0xc0506617 + FS_IOC_GET_ENCRYPTION_KEY_STATUS = 0xc080661a + FS_IOC_GET_ENCRYPTION_POLICY_EX = 0xc0096616 + FS_IOC_MEASURE_VERITY = 0xc0046686 + FS_IOC_READ_VERITY_METADATA = 0xc0286687 + FS_IOC_REMOVE_ENCRYPTION_KEY = 0xc0406618 + FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS = 0xc0406619 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FS_VERITY_FL = 0x100000 + FS_VERITY_HASH_ALG_SHA256 = 0x1 + FS_VERITY_HASH_ALG_SHA512 = 0x2 + FS_VERITY_METADATA_TYPE_DESCRIPTOR = 0x2 + FS_VERITY_METADATA_TYPE_MERKLE_TREE = 0x1 + FS_VERITY_METADATA_TYPE_SIGNATURE = 0x3 + FUSE_SUPER_MAGIC = 0x65735546 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_CREATED_QUERY = 0x404 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_DUPFD_QUERY = 0x403 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_SEAL_EXEC = 0x20 + F_SEAL_FUTURE_WRITE = 0x10 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_INSECURE = 0x4 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HID_MAX_DESCRIPTOR_SIZE = 0x1000 + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + IBSHIFT = 0x10 + ICRNL = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xb + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_CARRIER = 0x40 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_MEI_CONNECT_CLIENT = 0xc0104801 + IOCTL_MEI_CONNECT_CLIENT_VTAG = 0xc0144804 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERNET = 0x8f + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_L2TP = 0x73 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MPTCP = 0x106 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_SMC = 0x100 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVERR_RFC4884 = 0x1f + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_LOCAL_PORT_RANGE = 0x33 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_PROTOCOL = 0x34 + IP_RECVERR = 0xb + IP_RECVERR_RFC4884 = 0x1a + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUTF8 = 0x4000 + IXANY = 0x800 + JFFS2_SUPER_MAGIC = 0x72b6 + KCMPROTO_CONNECTED = 0x0 + KCM_RECV_DISABLE = 0x1 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_LOONGARCH = 0x1020000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PARISC = 0xf0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_RISCV = 0xf30000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_CRASH_HOTPLUG_SUPPORT = 0x8 + KEXEC_FILE_DEBUG = 0x8 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEXEC_UPDATE_ELFCOREHDR = 0x4 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NOTIFICATIONS = 0x4 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEYCTL_WATCH_KEY = 0x20 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LANDLOCK_ACCESS_FS_EXECUTE = 0x1 + LANDLOCK_ACCESS_FS_IOCTL_DEV = 0x8000 + LANDLOCK_ACCESS_FS_MAKE_BLOCK = 0x800 + LANDLOCK_ACCESS_FS_MAKE_CHAR = 0x40 + LANDLOCK_ACCESS_FS_MAKE_DIR = 0x80 + LANDLOCK_ACCESS_FS_MAKE_FIFO = 0x400 + LANDLOCK_ACCESS_FS_MAKE_REG = 0x100 + LANDLOCK_ACCESS_FS_MAKE_SOCK = 0x200 + LANDLOCK_ACCESS_FS_MAKE_SYM = 0x1000 + LANDLOCK_ACCESS_FS_READ_DIR = 0x8 + LANDLOCK_ACCESS_FS_READ_FILE = 0x4 + LANDLOCK_ACCESS_FS_REFER = 0x2000 + LANDLOCK_ACCESS_FS_REMOVE_DIR = 0x10 + LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 + LANDLOCK_ACCESS_FS_TRUNCATE = 0x4000 + LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 + LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 + LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 + LANDLOCK_CREATE_RULESET_ERRATA = 0x2 + LANDLOCK_CREATE_RULESET_VERSION = 0x1 + LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON = 0x2 + LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF = 0x1 + LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF = 0x4 + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 + LANDLOCK_SCOPE_SIGNAL = 0x2 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CONFIGURE = 0x4c0a + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LOOP_SET_STATUS_CLEARABLE_FLAGS = 0x4 + LOOP_SET_STATUS_SETTABLE_FLAGS = 0xc + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 + LWTUNNEL_IP6_MAX = 0x8 + LWTUNNEL_IP_MAX = 0x8 + LWTUNNEL_IP_OPTS_MAX = 0x3 + LWTUNNEL_IP_OPT_ERSPAN_MAX = 0x4 + LWTUNNEL_IP_OPT_GENEVE_MAX = 0x3 + LWTUNNEL_IP_OPT_VXLAN_MAX = 0x1 + MADV_COLD = 0x14 + MADV_COLLAPSE = 0x19 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_DONTNEED_LOCKED = 0x18 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0x15 + MADV_POPULATE_READ = 0x16 + MADV_POPULATE_WRITE = 0x17 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_DROPPABLE = 0x8 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_HUGE_16GB = 0x88000000 + MAP_HUGE_16KB = 0x38000000 + MAP_HUGE_16MB = 0x60000000 + MAP_HUGE_1GB = 0x78000000 + MAP_HUGE_1MB = 0x50000000 + MAP_HUGE_256MB = 0x70000000 + MAP_HUGE_2GB = 0x7c000000 + MAP_HUGE_2MB = 0x54000000 + MAP_HUGE_32MB = 0x64000000 + MAP_HUGE_512KB = 0x4c000000 + MAP_HUGE_512MB = 0x74000000 + MAP_HUGE_64KB = 0x40000000 + MAP_HUGE_8MB = 0x5c000000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c + MEMGETREGIONINFO = 0xc0104d08 + MEMREADOOB64 = 0xc0184d16 + MEMWRITE = 0xc0304d18 + MEMWRITEOOB64 = 0xc0184d15 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_EXEC = 0x10 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = 0x88000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MFD_NOEXEC_SEAL = 0x8 + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 + MNT_NS_INFO_SIZE_VER0 = 0x10 + MODULE_INIT_COMPRESSED_FILE = 0x4 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MOUNT_ATTR_IDMAP = 0x100000 + MOUNT_ATTR_NOATIME = 0x10 + MOUNT_ATTR_NODEV = 0x4 + MOUNT_ATTR_NODIRATIME = 0x80 + MOUNT_ATTR_NOEXEC = 0x8 + MOUNT_ATTR_NOSUID = 0x2 + MOUNT_ATTR_NOSYMFOLLOW = 0x200000 + MOUNT_ATTR_RDONLY = 0x1 + MOUNT_ATTR_RELATIME = 0x0 + MOUNT_ATTR_SIZE_VER0 = 0x20 + MOUNT_ATTR_STRICTATIME = 0x20 + MOUNT_ATTR__ATIME = 0x70 + MREMAP_DONTUNMAP = 0x4 + MREMAP_FIXED = 0x2 + MREMAP_MAYMOVE = 0x1 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SOCK_DEVMEM = 0x2000000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOSYMFOLLOW = 0x100 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_ABSENT = 0x0 + MTD_BIT_WRITEABLE = 0x800 + MTD_CAP_NANDFLASH = 0x400 + MTD_CAP_NORFLASH = 0xc00 + MTD_CAP_NVRAM = 0x1c00 + MTD_CAP_RAM = 0x1c00 + MTD_CAP_ROM = 0x0 + MTD_DATAFLASH = 0x6 + MTD_INODE_FS_MAGIC = 0x11307854 + MTD_MAX_ECCPOS_ENTRIES = 0x40 + MTD_MAX_OOBFREE_ENTRIES = 0x8 + MTD_MLCNANDFLASH = 0x8 + MTD_NANDECC_AUTOPLACE = 0x2 + MTD_NANDECC_AUTOPL_USR = 0x4 + MTD_NANDECC_OFF = 0x0 + MTD_NANDECC_PLACE = 0x1 + MTD_NANDECC_PLACEONLY = 0x3 + MTD_NANDFLASH = 0x4 + MTD_NORFLASH = 0x3 + MTD_NO_ERASE = 0x1000 + MTD_OTP_FACTORY = 0x1 + MTD_OTP_OFF = 0x0 + MTD_OTP_USER = 0x2 + MTD_POWERUP_LOCK = 0x2000 + MTD_RAM = 0x1 + MTD_ROM = 0x2 + MTD_SLC_ON_MLC_EMULATION = 0x4000 + MTD_UBIVOLUME = 0x7 + MTD_WRITEABLE = 0x400 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFC_ATR_REQ_GB_MAXSIZE = 0x30 + NFC_ATR_REQ_MAXSIZE = 0x40 + NFC_ATR_RES_GB_MAXSIZE = 0x2f + NFC_ATR_RES_MAXSIZE = 0x40 + NFC_ATS_MAXSIZE = 0x14 + NFC_COMM_ACTIVE = 0x0 + NFC_COMM_PASSIVE = 0x1 + NFC_DEVICE_NAME_MAXSIZE = 0x8 + NFC_DIRECTION_RX = 0x0 + NFC_DIRECTION_TX = 0x1 + NFC_FIRMWARE_NAME_MAXSIZE = 0x20 + NFC_GB_MAXSIZE = 0x30 + NFC_GENL_MCAST_EVENT_NAME = "events" + NFC_GENL_NAME = "nfc" + NFC_GENL_VERSION = 0x1 + NFC_HEADER_SIZE = 0x1 + NFC_ISO15693_UID_MAXSIZE = 0x8 + NFC_LLCP_MAX_SERVICE_NAME = 0x3f + NFC_LLCP_MIUX = 0x1 + NFC_LLCP_REMOTE_LTO = 0x3 + NFC_LLCP_REMOTE_MIU = 0x2 + NFC_LLCP_REMOTE_RW = 0x4 + NFC_LLCP_RW = 0x0 + NFC_NFCID1_MAXSIZE = 0xa + NFC_NFCID2_MAXSIZE = 0x8 + NFC_NFCID3_MAXSIZE = 0xa + NFC_PROTO_FELICA = 0x3 + NFC_PROTO_FELICA_MASK = 0x8 + NFC_PROTO_ISO14443 = 0x4 + NFC_PROTO_ISO14443_B = 0x6 + NFC_PROTO_ISO14443_B_MASK = 0x40 + NFC_PROTO_ISO14443_MASK = 0x10 + NFC_PROTO_ISO15693 = 0x7 + NFC_PROTO_ISO15693_MASK = 0x80 + NFC_PROTO_JEWEL = 0x1 + NFC_PROTO_JEWEL_MASK = 0x2 + NFC_PROTO_MAX = 0x8 + NFC_PROTO_MIFARE = 0x2 + NFC_PROTO_MIFARE_MASK = 0x4 + NFC_PROTO_NFC_DEP = 0x5 + NFC_PROTO_NFC_DEP_MASK = 0x20 + NFC_RAW_HEADER_SIZE = 0x2 + NFC_RF_INITIATOR = 0x0 + NFC_RF_NONE = 0x2 + NFC_RF_TARGET = 0x1 + NFC_SENSB_RES_MAXSIZE = 0xc + NFC_SENSF_RES_MAXSIZE = 0x12 + NFC_SE_DISABLED = 0x0 + NFC_SE_EMBEDDED = 0x2 + NFC_SE_ENABLED = 0x1 + NFC_SE_UICC = 0x1 + NFC_SOCKPROTO_LLCP = 0x1 + NFC_SOCKPROTO_MAX = 0x2 + NFC_SOCKPROTO_RAW = 0x0 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xd + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_HOOK = 0xc + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NFT_BITWISE_BOOL = 0x0 + NFT_CHAIN_FLAGS = 0x7 + NFT_CHAIN_MAXNAMELEN = 0x100 + NFT_CT_MAX = 0x17 + NFT_DATA_RESERVED_MASK = 0xffffff00 + NFT_DATA_VALUE_MAXLEN = 0x40 + NFT_EXTHDR_OP_MAX = 0x4 + NFT_FIB_RESULT_MAX = 0x3 + NFT_INNER_MASK = 0xf + NFT_LOGLEVEL_MAX = 0x8 + NFT_NAME_MAXLEN = 0x100 + NFT_NG_MAX = 0x1 + NFT_OBJECT_CONNLIMIT = 0x5 + NFT_OBJECT_COUNTER = 0x1 + NFT_OBJECT_CT_EXPECT = 0x9 + NFT_OBJECT_CT_HELPER = 0x3 + NFT_OBJECT_CT_TIMEOUT = 0x7 + NFT_OBJECT_LIMIT = 0x4 + NFT_OBJECT_MAX = 0xa + NFT_OBJECT_QUOTA = 0x2 + NFT_OBJECT_SECMARK = 0x8 + NFT_OBJECT_SYNPROXY = 0xa + NFT_OBJECT_TUNNEL = 0x6 + NFT_OBJECT_UNSPEC = 0x0 + NFT_OBJ_MAXNAMELEN = 0x100 + NFT_OSF_MAXGENRELEN = 0x10 + NFT_QUEUE_FLAG_BYPASS = 0x1 + NFT_QUEUE_FLAG_CPU_FANOUT = 0x2 + NFT_QUEUE_FLAG_MASK = 0x3 + NFT_REG32_COUNT = 0x10 + NFT_REG32_SIZE = 0x4 + NFT_REG_MAX = 0x4 + NFT_REG_SIZE = 0x10 + NFT_REJECT_ICMPX_MAX = 0x3 + NFT_RT_MAX = 0x4 + NFT_SECMARK_CTX_MAXLEN = 0x1000 + NFT_SET_MAXNAMELEN = 0x100 + NFT_SOCKET_MAX = 0x3 + NFT_TABLE_F_MASK = 0x7 + NFT_TABLE_MAXNAMELEN = 0x100 + NFT_TRACETYPE_MAX = 0x3 + NFT_TUNNEL_F_MASK = 0x7 + NFT_TUNNEL_MAX = 0x1 + NFT_TUNNEL_MODE_MAX = 0x2 + NFT_USERDATA_MAXLEN = 0x100 + NFT_XFRM_KEY_MAX = 0x6 + NF_NAT_RANGE_MAP_IPS = 0x1 + NF_NAT_RANGE_MASK = 0x7f + NF_NAT_RANGE_NETMAP = 0x40 + NF_NAT_RANGE_PERSISTENT = 0x8 + NF_NAT_RANGE_PROTO_OFFSET = 0x20 + NF_NAT_RANGE_PROTO_RANDOM = 0x4 + NF_NAT_RANGE_PROTO_RANDOM_ALL = 0x14 + NF_NAT_RANGE_PROTO_RANDOM_FULLY = 0x10 + NF_NAT_RANGE_PROTO_SPECIFIED = 0x2 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_BULK = 0x200 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NN_386_IOPERM = "LINUX" + NN_386_TLS = "LINUX" + NN_ARC_V2 = "LINUX" + NN_ARM_FPMR = "LINUX" + NN_ARM_GCS = "LINUX" + NN_ARM_HW_BREAK = "LINUX" + NN_ARM_HW_WATCH = "LINUX" + NN_ARM_PACA_KEYS = "LINUX" + NN_ARM_PACG_KEYS = "LINUX" + NN_ARM_PAC_ENABLED_KEYS = "LINUX" + NN_ARM_PAC_MASK = "LINUX" + NN_ARM_POE = "LINUX" + NN_ARM_SSVE = "LINUX" + NN_ARM_SVE = "LINUX" + NN_ARM_SYSTEM_CALL = "LINUX" + NN_ARM_TAGGED_ADDR_CTRL = "LINUX" + NN_ARM_TLS = "LINUX" + NN_ARM_VFP = "LINUX" + NN_ARM_ZA = "LINUX" + NN_ARM_ZT = "LINUX" + NN_AUXV = "CORE" + NN_FILE = "CORE" + NN_GNU_PROPERTY_TYPE_0 = "GNU" + NN_LOONGARCH_CPUCFG = "LINUX" + NN_LOONGARCH_CSR = "LINUX" + NN_LOONGARCH_HW_BREAK = "LINUX" + NN_LOONGARCH_HW_WATCH = "LINUX" + NN_LOONGARCH_LASX = "LINUX" + NN_LOONGARCH_LBT = "LINUX" + NN_LOONGARCH_LSX = "LINUX" + NN_MIPS_DSP = "LINUX" + NN_MIPS_FP_MODE = "LINUX" + NN_MIPS_MSA = "LINUX" + NN_PPC_DEXCR = "LINUX" + NN_PPC_DSCR = "LINUX" + NN_PPC_EBB = "LINUX" + NN_PPC_HASHKEYR = "LINUX" + NN_PPC_PKEY = "LINUX" + NN_PPC_PMU = "LINUX" + NN_PPC_PPR = "LINUX" + NN_PPC_SPE = "LINUX" + NN_PPC_TAR = "LINUX" + NN_PPC_TM_CDSCR = "LINUX" + NN_PPC_TM_CFPR = "LINUX" + NN_PPC_TM_CGPR = "LINUX" + NN_PPC_TM_CPPR = "LINUX" + NN_PPC_TM_CTAR = "LINUX" + NN_PPC_TM_CVMX = "LINUX" + NN_PPC_TM_CVSX = "LINUX" + NN_PPC_TM_SPR = "LINUX" + NN_PPC_VMX = "LINUX" + NN_PPC_VSX = "LINUX" + NN_PRFPREG = "CORE" + NN_PRPSINFO = "CORE" + NN_PRSTATUS = "CORE" + NN_PRXFPREG = "LINUX" + NN_RISCV_CSR = "LINUX" + NN_RISCV_TAGGED_ADDR_CTRL = "LINUX" + NN_RISCV_VECTOR = "LINUX" + NN_S390_CTRS = "LINUX" + NN_S390_GS_BC = "LINUX" + NN_S390_GS_CB = "LINUX" + NN_S390_HIGH_GPRS = "LINUX" + NN_S390_LAST_BREAK = "LINUX" + NN_S390_PREFIX = "LINUX" + NN_S390_PV_CPU_DATA = "LINUX" + NN_S390_RI_CB = "LINUX" + NN_S390_SYSTEM_CALL = "LINUX" + NN_S390_TDB = "LINUX" + NN_S390_TIMER = "LINUX" + NN_S390_TODCMP = "LINUX" + NN_S390_TODPREG = "LINUX" + NN_S390_VXRS_HIGH = "LINUX" + NN_S390_VXRS_LOW = "LINUX" + NN_SIGINFO = "CORE" + NN_TASKSTRUCT = "CORE" + NN_VMCOREDD = "LINUX" + NN_X86_SHSTK = "LINUX" + NN_X86_XSAVE_LAYOUT = "LINUX" + NN_X86_XSTATE = "LINUX" + NSFS_MAGIC = 0x6e736673 + NT_386_IOPERM = 0x201 + NT_386_TLS = 0x200 + NT_ARC_V2 = 0x600 + NT_ARM_FPMR = 0x40e + NT_ARM_GCS = 0x410 + NT_ARM_HW_BREAK = 0x402 + NT_ARM_HW_WATCH = 0x403 + NT_ARM_PACA_KEYS = 0x407 + NT_ARM_PACG_KEYS = 0x408 + NT_ARM_PAC_ENABLED_KEYS = 0x40a + NT_ARM_PAC_MASK = 0x406 + NT_ARM_POE = 0x40f + NT_ARM_SSVE = 0x40b + NT_ARM_SVE = 0x405 + NT_ARM_SYSTEM_CALL = 0x404 + NT_ARM_TAGGED_ADDR_CTRL = 0x409 + NT_ARM_TLS = 0x401 + NT_ARM_VFP = 0x400 + NT_ARM_ZA = 0x40c + NT_ARM_ZT = 0x40d + NT_AUXV = 0x6 + NT_FILE = 0x46494c45 + NT_GNU_PROPERTY_TYPE_0 = 0x5 + NT_LOONGARCH_CPUCFG = 0xa00 + NT_LOONGARCH_CSR = 0xa01 + NT_LOONGARCH_HW_BREAK = 0xa05 + NT_LOONGARCH_HW_WATCH = 0xa06 + NT_LOONGARCH_LASX = 0xa03 + NT_LOONGARCH_LBT = 0xa04 + NT_LOONGARCH_LSX = 0xa02 + NT_MIPS_DSP = 0x800 + NT_MIPS_FP_MODE = 0x801 + NT_MIPS_MSA = 0x802 + NT_PPC_DEXCR = 0x111 + NT_PPC_DSCR = 0x105 + NT_PPC_EBB = 0x106 + NT_PPC_HASHKEYR = 0x112 + NT_PPC_PKEY = 0x110 + NT_PPC_PMU = 0x107 + NT_PPC_PPR = 0x104 + NT_PPC_SPE = 0x101 + NT_PPC_TAR = 0x103 + NT_PPC_TM_CDSCR = 0x10f + NT_PPC_TM_CFPR = 0x109 + NT_PPC_TM_CGPR = 0x108 + NT_PPC_TM_CPPR = 0x10e + NT_PPC_TM_CTAR = 0x10d + NT_PPC_TM_CVMX = 0x10a + NT_PPC_TM_CVSX = 0x10b + NT_PPC_TM_SPR = 0x10c + NT_PPC_VMX = 0x100 + NT_PPC_VSX = 0x102 + NT_PRFPREG = 0x2 + NT_PRPSINFO = 0x3 + NT_PRSTATUS = 0x1 + NT_PRXFPREG = 0x46e62b7f + NT_RISCV_CSR = 0x900 + NT_RISCV_TAGGED_ADDR_CTRL = 0x902 + NT_RISCV_VECTOR = 0x901 + NT_S390_CTRS = 0x304 + NT_S390_GS_BC = 0x30c + NT_S390_GS_CB = 0x30b + NT_S390_HIGH_GPRS = 0x300 + NT_S390_LAST_BREAK = 0x306 + NT_S390_PREFIX = 0x305 + NT_S390_PV_CPU_DATA = 0x30e + NT_S390_RI_CB = 0x30d + NT_S390_SYSTEM_CALL = 0x307 + NT_S390_TDB = 0x308 + NT_S390_TIMER = 0x301 + NT_S390_TODCMP = 0x302 + NT_S390_TODPREG = 0x303 + NT_S390_VXRS_HIGH = 0x30a + NT_S390_VXRS_LOW = 0x309 + NT_SIGINFO = 0x53494749 + NT_TASKSTRUCT = 0x4 + NT_VMCOREDD = 0x700 + NT_X86_SHSTK = 0x204 + NT_X86_XSAVE_LAYOUT = 0x205 + NT_X86_XSTATE = 0x202 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_IGNORE_OUTGOING = 0x4000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PACKET_VNET_HDR_SZ = 0x18 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PERF_ATTR_SIZE_VER0 = 0x40 + PERF_ATTR_SIZE_VER1 = 0x48 + PERF_ATTR_SIZE_VER2 = 0x50 + PERF_ATTR_SIZE_VER3 = 0x60 + PERF_ATTR_SIZE_VER4 = 0x68 + PERF_ATTR_SIZE_VER5 = 0x70 + PERF_ATTR_SIZE_VER6 = 0x78 + PERF_ATTR_SIZE_VER7 = 0x80 + PERF_ATTR_SIZE_VER8 = 0x88 + PERF_AUX_FLAG_COLLISION = 0x8 + PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT = 0x0 + PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW = 0x100 + PERF_AUX_FLAG_OVERWRITE = 0x2 + PERF_AUX_FLAG_PARTIAL = 0x4 + PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK = 0xff00 + PERF_AUX_FLAG_TRUNCATED = 0x1 + PERF_BRANCH_ENTRY_INFO_BITS_MAX = 0x21 + PERF_BR_ARM64_DEBUG_DATA = 0x7 + PERF_BR_ARM64_DEBUG_EXIT = 0x5 + PERF_BR_ARM64_DEBUG_HALT = 0x4 + PERF_BR_ARM64_DEBUG_INST = 0x6 + PERF_BR_ARM64_FIQ = 0x3 + PERF_FLAG_FD_CLOEXEC = 0x8 + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_HW_EVENT_MASK = 0xffffffff + PERF_MAX_CONTEXTS_PER_STACK = 0x8 + PERF_MAX_STACK_DEPTH = 0x7f + PERF_MEM_BLK_ADDR = 0x4 + PERF_MEM_BLK_DATA = 0x2 + PERF_MEM_BLK_NA = 0x1 + PERF_MEM_BLK_SHIFT = 0x28 + PERF_MEM_HOPS_0 = 0x1 + PERF_MEM_HOPS_1 = 0x2 + PERF_MEM_HOPS_2 = 0x3 + PERF_MEM_HOPS_3 = 0x4 + PERF_MEM_HOPS_SHIFT = 0x2b + PERF_MEM_LOCK_LOCKED = 0x2 + PERF_MEM_LOCK_NA = 0x1 + PERF_MEM_LOCK_SHIFT = 0x18 + PERF_MEM_LVLNUM_ANY_CACHE = 0xb + PERF_MEM_LVLNUM_CXL = 0x9 + PERF_MEM_LVLNUM_IO = 0xa + PERF_MEM_LVLNUM_L1 = 0x1 + PERF_MEM_LVLNUM_L2 = 0x2 + PERF_MEM_LVLNUM_L2_MHB = 0x5 + PERF_MEM_LVLNUM_L3 = 0x3 + PERF_MEM_LVLNUM_L4 = 0x4 + PERF_MEM_LVLNUM_LFB = 0xc + PERF_MEM_LVLNUM_MSC = 0x6 + PERF_MEM_LVLNUM_NA = 0xf + PERF_MEM_LVLNUM_PMEM = 0xe + PERF_MEM_LVLNUM_RAM = 0xd + PERF_MEM_LVLNUM_SHIFT = 0x21 + PERF_MEM_LVLNUM_UNC = 0x8 + PERF_MEM_LVL_HIT = 0x2 + PERF_MEM_LVL_IO = 0x1000 + PERF_MEM_LVL_L1 = 0x8 + PERF_MEM_LVL_L2 = 0x20 + PERF_MEM_LVL_L3 = 0x40 + PERF_MEM_LVL_LFB = 0x10 + PERF_MEM_LVL_LOC_RAM = 0x80 + PERF_MEM_LVL_MISS = 0x4 + PERF_MEM_LVL_NA = 0x1 + PERF_MEM_LVL_REM_CCE1 = 0x400 + PERF_MEM_LVL_REM_CCE2 = 0x800 + PERF_MEM_LVL_REM_RAM1 = 0x100 + PERF_MEM_LVL_REM_RAM2 = 0x200 + PERF_MEM_LVL_SHIFT = 0x5 + PERF_MEM_LVL_UNC = 0x2000 + PERF_MEM_OP_EXEC = 0x10 + PERF_MEM_OP_LOAD = 0x2 + PERF_MEM_OP_NA = 0x1 + PERF_MEM_OP_PFETCH = 0x8 + PERF_MEM_OP_SHIFT = 0x0 + PERF_MEM_OP_STORE = 0x4 + PERF_MEM_REMOTE_REMOTE = 0x1 + PERF_MEM_REMOTE_SHIFT = 0x25 + PERF_MEM_SNOOPX_FWD = 0x1 + PERF_MEM_SNOOPX_PEER = 0x2 + PERF_MEM_SNOOPX_SHIFT = 0x26 + PERF_MEM_SNOOP_HIT = 0x4 + PERF_MEM_SNOOP_HITM = 0x10 + PERF_MEM_SNOOP_MISS = 0x8 + PERF_MEM_SNOOP_NA = 0x1 + PERF_MEM_SNOOP_NONE = 0x2 + PERF_MEM_SNOOP_SHIFT = 0x13 + PERF_MEM_TLB_HIT = 0x2 + PERF_MEM_TLB_L1 = 0x8 + PERF_MEM_TLB_L2 = 0x10 + PERF_MEM_TLB_MISS = 0x4 + PERF_MEM_TLB_NA = 0x1 + PERF_MEM_TLB_OS = 0x40 + PERF_MEM_TLB_SHIFT = 0x1a + PERF_MEM_TLB_WK = 0x20 + PERF_PMU_TYPE_SHIFT = 0x20 + PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER = 0x1 + PERF_RECORD_MISC_COMM_EXEC = 0x2000 + PERF_RECORD_MISC_CPUMODE_MASK = 0x7 + PERF_RECORD_MISC_CPUMODE_UNKNOWN = 0x0 + PERF_RECORD_MISC_EXACT_IP = 0x4000 + PERF_RECORD_MISC_EXT_RESERVED = 0x8000 + PERF_RECORD_MISC_FORK_EXEC = 0x2000 + PERF_RECORD_MISC_GUEST_KERNEL = 0x4 + PERF_RECORD_MISC_GUEST_USER = 0x5 + PERF_RECORD_MISC_HYPERVISOR = 0x3 + PERF_RECORD_MISC_KERNEL = 0x1 + PERF_RECORD_MISC_MMAP_BUILD_ID = 0x4000 + PERF_RECORD_MISC_MMAP_DATA = 0x2000 + PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT = 0x1000 + PERF_RECORD_MISC_SWITCH_OUT = 0x2000 + PERF_RECORD_MISC_SWITCH_OUT_PREEMPT = 0x4000 + PERF_RECORD_MISC_USER = 0x2 + PERF_SAMPLE_BRANCH_PLM_ALL = 0x7 + PERF_SAMPLE_WEIGHT_TYPE = 0x1004000 + PF_ALG = 0x26 + PF_APPLETALK = 0x5 + PF_ASH = 0x12 + PF_ATMPVC = 0x8 + PF_ATMSVC = 0x14 + PF_AX25 = 0x3 + PF_BLUETOOTH = 0x1f + PF_BRIDGE = 0x7 + PF_CAIF = 0x25 + PF_CAN = 0x1d + PF_DECnet = 0xc + PF_ECONET = 0x13 + PF_FILE = 0x1 + PF_IB = 0x1b + PF_IEEE802154 = 0x24 + PF_INET = 0x2 + PF_INET6 = 0xa + PF_IPX = 0x4 + PF_IRDA = 0x17 + PF_ISDN = 0x22 + PF_IUCV = 0x20 + PF_KCM = 0x29 + PF_KEY = 0xf + PF_LLC = 0x1a + PF_LOCAL = 0x1 + PF_MAX = 0x2e + PF_MCTP = 0x2d + PF_MPLS = 0x1c + PF_NETBEUI = 0xd + PF_NETLINK = 0x10 + PF_NETROM = 0x6 + PF_NFC = 0x27 + PF_PACKET = 0x11 + PF_PHONET = 0x23 + PF_PPPOX = 0x18 + PF_QIPCRTR = 0x2a + PF_R = 0x4 + PF_RDS = 0x15 + PF_ROSE = 0xb + PF_ROUTE = 0x10 + PF_RXRPC = 0x21 + PF_SECURITY = 0xe + PF_SMC = 0x2b + PF_SNA = 0x16 + PF_TIPC = 0x1e + PF_UNIX = 0x1 + PF_UNSPEC = 0x0 + PF_VSOCK = 0x28 + PF_W = 0x2 + PF_WANPIPE = 0x19 + PF_X = 0x1 + PF_X25 = 0x9 + PF_XDP = 0x2c + PID_FS_MAGIC = 0x50494446 + PIPEFS_MAGIC = 0x50495045 + PPPIOCGNPMODE = 0xc008744c + PPPIOCNEWUNIT = 0xc004743e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROCFS_IOCTL_MAGIC = 'f' + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_FUTEX_HASH = 0x4e + PR_FUTEX_HASH_GET_IMMUTABLE = 0x3 + PR_FUTEX_HASH_GET_SLOTS = 0x2 + PR_FUTEX_HASH_SET_SLOTS = 0x1 + PR_GET_AUXV = 0x41555856 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_IO_FLUSHER = 0x3a + PR_GET_KEEPCAPS = 0x7 + PR_GET_MDWE = 0x42 + PR_GET_MEMORY_MERGE = 0x44 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SHADOW_STACK_STATUS = 0x4a + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_TAGGED_ADDR_CTRL = 0x38 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_LOCK_SHADOW_STACK_STATUS = 0x4c + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MDWE_NO_INHERIT = 0x2 + PR_MDWE_REFUSE_EXEC_GAIN = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_MTE_TAG_MASK = 0x7fff8 + PR_MTE_TAG_SHIFT = 0x3 + PR_MTE_TCF_ASYNC = 0x4 + PR_MTE_TCF_MASK = 0x6 + PR_MTE_TCF_NONE = 0x0 + PR_MTE_TCF_SHIFT = 0x1 + PR_MTE_TCF_SYNC = 0x2 + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_GET_ENABLED_KEYS = 0x3d + PR_PAC_RESET_KEYS = 0x36 + PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_PMLEN_MASK = 0x7f000000 + PR_PMLEN_SHIFT = 0x18 + PR_PPC_DEXCR_CTRL_CLEAR = 0x4 + PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC = 0x10 + PR_PPC_DEXCR_CTRL_EDITABLE = 0x1 + PR_PPC_DEXCR_CTRL_MASK = 0x1f + PR_PPC_DEXCR_CTRL_SET = 0x2 + PR_PPC_DEXCR_CTRL_SET_ONEXEC = 0x8 + PR_PPC_DEXCR_IBRTPD = 0x1 + PR_PPC_DEXCR_NPHIE = 0x3 + PR_PPC_DEXCR_SBHE = 0x0 + PR_PPC_DEXCR_SRAPD = 0x2 + PR_PPC_GET_DEXCR = 0x48 + PR_PPC_SET_DEXCR = 0x49 + PR_RISCV_CTX_SW_FENCEI_OFF = 0x1 + PR_RISCV_CTX_SW_FENCEI_ON = 0x0 + PR_RISCV_SCOPE_PER_PROCESS = 0x0 + PR_RISCV_SCOPE_PER_THREAD = 0x1 + PR_RISCV_SET_ICACHE_FLUSH_CTX = 0x47 + PR_RISCV_V_GET_CONTROL = 0x46 + PR_RISCV_V_SET_CONTROL = 0x45 + PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3 + PR_RISCV_V_VSTATE_CTRL_DEFAULT = 0x0 + PR_RISCV_V_VSTATE_CTRL_INHERIT = 0x10 + PR_RISCV_V_VSTATE_CTRL_MASK = 0x1f + PR_RISCV_V_VSTATE_CTRL_NEXT_MASK = 0xc + PR_RISCV_V_VSTATE_CTRL_OFF = 0x1 + PR_RISCV_V_VSTATE_CTRL_ON = 0x2 + PR_SCHED_CORE = 0x3e + PR_SCHED_CORE_CREATE = 0x1 + PR_SCHED_CORE_GET = 0x0 + PR_SCHED_CORE_MAX = 0x4 + PR_SCHED_CORE_SCOPE_PROCESS_GROUP = 0x2 + PR_SCHED_CORE_SCOPE_THREAD = 0x0 + PR_SCHED_CORE_SCOPE_THREAD_GROUP = 0x1 + PR_SCHED_CORE_SHARE_FROM = 0x3 + PR_SCHED_CORE_SHARE_TO = 0x2 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_IO_FLUSHER = 0x39 + PR_SET_KEEPCAPS = 0x8 + PR_SET_MDWE = 0x41 + PR_SET_MEMORY_MERGE = 0x43 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SHADOW_STACK_STATUS = 0x4b + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_SYSCALL_USER_DISPATCH = 0x3b + PR_SET_TAGGED_ADDR_CTRL = 0x37 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SET_VMA = 0x53564d41 + PR_SET_VMA_ANON_NAME = 0x0 + PR_SHADOW_STACK_ENABLE = 0x1 + PR_SHADOW_STACK_PUSH = 0x4 + PR_SHADOW_STACK_WRITE = 0x2 + PR_SME_GET_VL = 0x40 + PR_SME_SET_VL = 0x3f + PR_SME_SET_VL_ONEXEC = 0x40000 + PR_SME_VL_INHERIT = 0x20000 + PR_SME_VL_LEN_MASK = 0xffff + PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_L1D_FLUSH = 0x2 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_SYS_DISPATCH_OFF = 0x0 + PR_SYS_DISPATCH_ON = 0x1 + PR_TAGGED_ADDR_ENABLE = 0x1 + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMER_CREATE_RESTORE_IDS = 0x4d + PR_TIMER_CREATE_RESTORE_IDS_GET = 0x2 + PR_TIMER_CREATE_RESTORE_IDS_OFF = 0x0 + PR_TIMER_CREATE_RESTORE_IDS_ON = 0x1 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTP_CLK_MAGIC = '=' + PTP_ENABLE_FEATURE = 0x1 + PTP_EXTTS_EDGES = 0x6 + PTP_EXTTS_EVENT_VALID = 0x1 + PTP_EXTTS_V1_VALID_FLAGS = 0x7 + PTP_EXTTS_VALID_FLAGS = 0x1f + PTP_EXT_OFFSET = 0x10 + PTP_FALLING_EDGE = 0x4 + PTP_MAX_SAMPLES = 0x19 + PTP_PEROUT_DUTY_CYCLE = 0x2 + PTP_PEROUT_ONE_SHOT = 0x1 + PTP_PEROUT_PHASE = 0x4 + PTP_PEROUT_V1_VALID_FLAGS = 0x0 + PTP_PEROUT_VALID_FLAGS = 0x7 + PTP_PIN_GETFUNC = 0xc0603d06 + PTP_PIN_GETFUNC2 = 0xc0603d0f + PTP_RISING_EDGE = 0x2 + PTP_STRICT_FLAGS = 0x8 + PTP_SYS_OFFSET_EXTENDED = 0xc4c03d09 + PTP_SYS_OFFSET_EXTENDED2 = 0xc4c03d12 + PTP_SYS_OFFSET_PRECISE = 0xc0403d08 + PTP_SYS_OFFSET_PRECISE2 = 0xc0403d11 + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_RSEQ_CONFIGURATION = 0x420f + PTRACE_GET_SYSCALL_INFO = 0x420e + PTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG = 0x4211 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_SYSCALL_INFO = 0x4212 + PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG = 0x4210 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 + PTRACE_TRACEME = 0x0 + PT_AARCH64_MEMTAG_MTE = 0x70000002 + PT_DYNAMIC = 0x2 + PT_GNU_EH_FRAME = 0x6474e550 + PT_GNU_PROPERTY = 0x6474e553 + PT_GNU_RELRO = 0x6474e552 + PT_GNU_STACK = 0x6474e551 + PT_HIOS = 0x6fffffff + PT_HIPROC = 0x7fffffff + PT_INTERP = 0x3 + PT_LOAD = 0x1 + PT_LOOS = 0x60000000 + PT_LOPROC = 0x70000000 + PT_NOTE = 0x4 + PT_NULL = 0x0 + PT_PHDR = 0x6 + PT_SHLIB = 0x5 + PT_TLS = 0x7 + P_ALL = 0x0 + P_PGID = 0x2 + P_PID = 0x1 + P_PIDFD = 0x3 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RAW_PAYLOAD_DIGITAL = 0x3 + RAW_PAYLOAD_HCI = 0x2 + RAW_PAYLOAD_LLCP = 0x0 + RAW_PAYLOAD_NCI = 0x1 + RAW_PAYLOAD_PROPRIETARY = 0x4 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0x1f + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TCP_USEC_TS = 0x10 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1f + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_BSM_DIRECT = 0x1 + RTC_BSM_DISABLED = 0x0 + RTC_BSM_LEVEL = 0x2 + RTC_BSM_STANDBY = 0x3 + RTC_FEATURE_ALARM = 0x0 + RTC_FEATURE_ALARM_RES_2S = 0x3 + RTC_FEATURE_ALARM_RES_MINUTE = 0x1 + RTC_FEATURE_ALARM_WAKEUP_ONLY = 0x7 + RTC_FEATURE_BACKUP_SWITCH_MODE = 0x6 + RTC_FEATURE_CNT = 0x8 + RTC_FEATURE_CORRECTION = 0x5 + RTC_FEATURE_NEED_WEEK_DAY = 0x2 + RTC_FEATURE_UPDATE_INTERRUPT = 0x4 + RTC_IRQF = 0x80 + RTC_MAX_FREQ = 0x2000 + RTC_PARAM_BACKUP_SWITCH_MODE = 0x2 + RTC_PARAM_CORRECTION = 0x1 + RTC_PARAM_FEATURES = 0x0 + RTC_PF = 0x40 + RTC_UF = 0x10 + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTMGRP_DECnet_IFADDR = 0x1000 + RTMGRP_DECnet_ROUTE = 0x4000 + RTMGRP_IPV4_IFADDR = 0x10 + RTMGRP_IPV4_MROUTE = 0x20 + RTMGRP_IPV4_ROUTE = 0x40 + RTMGRP_IPV4_RULE = 0x80 + RTMGRP_IPV6_IFADDR = 0x100 + RTMGRP_IPV6_IFINFO = 0x800 + RTMGRP_IPV6_MROUTE = 0x200 + RTMGRP_IPV6_PREFIX = 0x20000 + RTMGRP_IPV6_ROUTE = 0x400 + RTMGRP_LINK = 0x1 + RTMGRP_NEIGH = 0x4 + RTMGRP_NOTIFY = 0x2 + RTMGRP_TC = 0x8 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELANYCAST = 0x3d + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELLINKPROP = 0x6d + RTM_DELMDB = 0x55 + RTM_DELMULTICAST = 0x39 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 + RTM_DELNEXTHOPBUCKET = 0x75 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_DELTUNNEL = 0x79 + RTM_DELVLAN = 0x71 + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_OFFLOAD = 0x4000 + RTM_F_OFFLOAD_FAILED = 0x20000000 + RTM_F_PREFIX = 0x800 + RTM_F_TRAP = 0x8000 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETLINKPROP = 0x6e + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a + RTM_GETNEXTHOPBUCKET = 0x76 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_GETTUNNEL = 0x7a + RTM_GETVLAN = 0x72 + RTM_MAX = 0x7b + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWANYCAST = 0x3c + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWLINKPROP = 0x6c + RTM_NEWMDB = 0x54 + RTM_NEWMULTICAST = 0x38 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 + RTM_NEWNEXTHOPBUCKET = 0x74 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NEWTUNNEL = 0x78 + RTM_NEWVLAN = 0x70 + RTM_NR_FAMILIES = 0x1b + RTM_NR_MSGTYPES = 0x6c + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTM_SETSTATS = 0x5f + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x59 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_TRAP = 0x40 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KEEPALIVED = 0x12 + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OPENR = 0x63 + RTPROT_OSPF = 0xbc + RTPROT_OVN = 0x54 + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + RWF_APPEND = 0x10 + RWF_ATOMIC = 0x40 + RWF_DONTCACHE = 0x80 + RWF_DSYNC = 0x2 + RWF_HIPRI = 0x1 + RWF_NOAPPEND = 0x20 + RWF_NOWAIT = 0x8 + RWF_SUPPORTED = 0xff + RWF_SYNC = 0x4 + RWF_WRITE_LIFE_NOT_SET = 0x0 + SCHED_BATCH = 0x3 + SCHED_DEADLINE = 0x6 + SCHED_EXT = 0x7 + SCHED_FIFO = 0x1 + SCHED_FLAG_ALL = 0x7f + SCHED_FLAG_DL_OVERRUN = 0x4 + SCHED_FLAG_KEEP_ALL = 0x18 + SCHED_FLAG_KEEP_PARAMS = 0x10 + SCHED_FLAG_KEEP_POLICY = 0x8 + SCHED_FLAG_RECLAIM = 0x2 + SCHED_FLAG_RESET_ON_FORK = 0x1 + SCHED_FLAG_UTIL_CLAMP = 0x60 + SCHED_FLAG_UTIL_CLAMP_MAX = 0x40 + SCHED_FLAG_UTIL_CLAMP_MIN = 0x20 + SCHED_IDLE = 0x5 + SCHED_NORMAL = 0x0 + SCHED_RESET_ON_FORK = 0x40000000 + SCHED_RR = 0x2 + SCM_CREDENTIALS = 0x2 + SCM_PIDFD = 0x4 + SCM_RIGHTS = 0x1 + SCM_SECURITY = 0x3 + SCM_TIMESTAMP = 0x1d + SC_LOG_FLUSH = 0x100000 + SECCOMP_ADDFD_FLAG_SEND = 0x2 + SECCOMP_ADDFD_FLAG_SETFD = 0x1 + SECCOMP_FILTER_FLAG_LOG = 0x2 + SECCOMP_FILTER_FLAG_NEW_LISTENER = 0x8 + SECCOMP_FILTER_FLAG_SPEC_ALLOW = 0x4 + SECCOMP_FILTER_FLAG_TSYNC = 0x1 + SECCOMP_FILTER_FLAG_TSYNC_ESRCH = 0x10 + SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV = 0x20 + SECCOMP_GET_ACTION_AVAIL = 0x2 + SECCOMP_GET_NOTIF_SIZES = 0x3 + SECCOMP_IOCTL_NOTIF_RECV = 0xc0502100 + SECCOMP_IOCTL_NOTIF_SEND = 0xc0182101 + SECCOMP_IOC_MAGIC = '!' + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECCOMP_RET_ACTION = 0x7fff0000 + SECCOMP_RET_ACTION_FULL = 0xffff0000 + SECCOMP_RET_ALLOW = 0x7fff0000 + SECCOMP_RET_DATA = 0xffff + SECCOMP_RET_ERRNO = 0x50000 + SECCOMP_RET_KILL = 0x0 + SECCOMP_RET_KILL_PROCESS = 0x80000000 + SECCOMP_RET_KILL_THREAD = 0x0 + SECCOMP_RET_LOG = 0x7ffc0000 + SECCOMP_RET_TRACE = 0x7ff00000 + SECCOMP_RET_TRAP = 0x30000 + SECCOMP_RET_USER_NOTIF = 0x7fc00000 + SECCOMP_SET_MODE_FILTER = 0x1 + SECCOMP_SET_MODE_STRICT = 0x0 + SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP = 0x1 + SECCOMP_USER_NOTIF_FLAG_CONTINUE = 0x1 + SECRETMEM_MAGIC = 0x5345434d + SECURITYFS_MAGIC = 0x73636673 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_MAX = 0x4 + SEEK_SET = 0x0 + SELINUX_MAGIC = 0xf97cff8c + SHF_ALLOC = 0x2 + SHF_EXCLUDE = 0x8000000 + SHF_EXECINSTR = 0x4 + SHF_GROUP = 0x200 + SHF_INFO_LINK = 0x40 + SHF_LINK_ORDER = 0x80 + SHF_MASKOS = 0xff00000 + SHF_MASKPROC = 0xf0000000 + SHF_MERGE = 0x10 + SHF_ORDERED = 0x4000000 + SHF_OS_NONCONFORMING = 0x100 + SHF_RELA_LIVEPATCH = 0x100000 + SHF_RO_AFTER_INIT = 0x200000 + SHF_STRINGS = 0x20 + SHF_TLS = 0x400 + SHF_WRITE = 0x1 + SHN_ABS = 0xfff1 + SHN_COMMON = 0xfff2 + SHN_HIPROC = 0xff1f + SHN_HIRESERVE = 0xffff + SHN_LIVEPATCH = 0xff20 + SHN_LOPROC = 0xff00 + SHN_LORESERVE = 0xff00 + SHN_UNDEF = 0x0 + SHT_DYNAMIC = 0x6 + SHT_DYNSYM = 0xb + SHT_HASH = 0x5 + SHT_HIPROC = 0x7fffffff + SHT_HIUSER = 0xffffffff + SHT_LOPROC = 0x70000000 + SHT_LOUSER = 0x80000000 + SHT_NOBITS = 0x8 + SHT_NOTE = 0x7 + SHT_NULL = 0x0 + SHT_NUM = 0xc + SHT_PROGBITS = 0x1 + SHT_REL = 0x9 + SHT_RELA = 0x4 + SHT_SHLIB = 0xa + SHT_STRTAB = 0x3 + SHT_SYMTAB = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_OLD = 0x8906 + SIOCKCMATTACH = 0x89e0 + SIOCKCMCLONE = 0x89e2 + SIOCKCMUNATTACH = 0x89e1 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SK_DIAG_BPF_STORAGE_MAX = 0x3 + SK_DIAG_BPF_STORAGE_REQ_MAX = 0x1 + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB2_SUPER_MAGIC = 0xfe534d42 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_BUF_LOCK_MASK = 0x3 + SOCK_DCCP = 0x6 + SOCK_DESTROY = 0x15 + SOCK_DIAG_BY_FAMILY = 0x14 + SOCK_IOC_TYPE = 0x89 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RCVBUF_LOCK = 0x2 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_SNDBUF_LOCK = 0x1 + SOCK_TXREHASH_DEFAULT = 0xff + SOCK_TXREHASH_DISABLED = 0x0 + SOCK_TXREHASH_ENABLED = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_CAN_RAW = 0x65 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_MCTP = 0x11d + SOL_MPTCP = 0x11c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SMC = 0x11e + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_UDP = 0x11 + SOL_VSOCK = 0x11f + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x1000 + SO_ATTACH_FILTER = 0x1a + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_EE_RFC4884_FLAG_INVALID = 0x1 + SO_GET_FILTER = 0x1a + SO_NO_CHECK = 0xb + SO_PEERNAME = 0x1c + SO_PRIORITY = 0xc + SO_TIMESTAMP = 0x1d + SO_TIMESTAMP_OLD = 0x1d + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_CONNECT_TIMEOUT_NEW = 0x8 + SO_VM_SOCKETS_CONNECT_TIMEOUT_OLD = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_DAX = 0x200000 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_MOUNT_ROOT = 0x2000 + STATX_ATTR_NODUMP = 0x40 + STATX_ATTR_VERITY = 0x100000 + STATX_ATTR_WRITE_ATOMIC = 0x400000 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_DIOALIGN = 0x2000 + STATX_DIO_READ_ALIGN = 0x20000 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MNT_ID = 0x1000 + STATX_MNT_ID_UNIQUE = 0x4000 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_SUBVOL = 0x8000 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX_WRITE_ATOMIC = 0x10000 + STATX__RESERVED = 0x80000000 + STB_GLOBAL = 0x1 + STB_LOCAL = 0x0 + STB_WEAK = 0x2 + STT_COMMON = 0x5 + STT_FILE = 0x4 + STT_FUNC = 0x2 + STT_NOTYPE = 0x0 + STT_OBJECT = 0x1 + STT_SECTION = 0x3 + STT_TLS = 0x6 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x10 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_IFINDEX = 0x2 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_TX_DELAY = 0x25 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TFD_TIMER_ABSTIME = 0x1 + TFD_TIMER_CANCEL_ON_SET = 0x2 + TIMER_ABSTIME = 0x1 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RTS = 0x4 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_AEAD_ALG_NAME = 0x20 + TIPC_AEAD_KEYLEN_MAX = 0x24 + TIPC_AEAD_KEYLEN_MIN = 0x14 + TIPC_AEAD_KEY_SIZE_MAX = 0x48 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODELAY = 0x8a + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_REKEYING_NOW = 0xffffffff + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff + TMPFS_MAGIC = 0x1021994 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_GSO_TCP = 0x100 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + UBI_IOCECNFO = 0xc01c6f06 + UDF_SUPER_MAGIC = 0x15013346 + UDP_CORK = 0x1 + UDP_ENCAP = 0x64 + UDP_ENCAP_ESPINUDP = 0x2 + UDP_ENCAP_ESPINUDP_NON_IKE = 0x1 + UDP_ENCAP_GTP0 = 0x4 + UDP_ENCAP_GTP1U = 0x5 + UDP_ENCAP_L2TPINUDP = 0x3 + UDP_GRO = 0x68 + UDP_NO_CHECK6_RX = 0x66 + UDP_NO_CHECK6_TX = 0x65 + UDP_SEGMENT = 0x67 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VERASE = 0x2 + VER_FLG_BASE = 0x1 + VER_FLG_WEAK = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_LOCAL = 0x1 + VMADDR_FLAG_TO_HOST = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VT0 = 0x0 + WAKE_MAGIC = 0x20 + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WDIOF_ALARMONLY = 0x400 + WDIOF_CARDRESET = 0x20 + WDIOF_EXTERN1 = 0x4 + WDIOF_EXTERN2 = 0x8 + WDIOF_FANFAULT = 0x2 + WDIOF_KEEPALIVEPING = 0x8000 + WDIOF_MAGICCLOSE = 0x100 + WDIOF_OVERHEAT = 0x1 + WDIOF_POWEROVER = 0x40 + WDIOF_POWERUNDER = 0x10 + WDIOF_PRETIMEOUT = 0x200 + WDIOF_SETTIMEOUT = 0x80 + WDIOF_UNKNOWN = -0x1 + WDIOS_DISABLECARD = 0x1 + WDIOS_ENABLECARD = 0x2 + WDIOS_TEMPPANIC = 0x4 + WDIOS_UNKNOWN = -0x1 + WEXITED = 0x4 + WGALLOWEDIP_A_MAX = 0x4 + WGDEVICE_A_MAX = 0x8 + WGPEER_A_MAX = 0xa + WG_CMD_MAX = 0x1 + WG_GENL_NAME = "wireguard" + WG_GENL_VERSION = 0x1 + WG_KEY_LEN = 0x20 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0x1f + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_REPLACE = 0x10 + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_PKT_CONTD = 0x1 + XDP_RING_NEED_WAKEUP = 0x1 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TXMD_FLAGS_CHECKSUM = 0x2 + XDP_TXMD_FLAGS_LAUNCH_TIME = 0x4 + XDP_TXMD_FLAGS_TIMESTAMP = 0x1 + XDP_TX_METADATA = 0x2 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_UMEM_TX_METADATA_LEN = 0x4 + XDP_UMEM_TX_SW_CSUM = 0x2 + XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1 + XDP_USE_NEED_WAKEUP = 0x8 + XDP_USE_SG = 0x10 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + ZONEFS_MAGIC = 0x5a4f4653 + _HIDIOCGRAWNAME_LEN = 0x80 + _HIDIOCGRAWPHYS_LEN = 0x40 + _HIDIOCGRAWUNIQ_LEN = 0x40 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EAGAIN = syscall.Errno(0xb) + EBADF = syscall.Errno(0x9) + EBUSY = syscall.Errno(0x10) + ECHILD = syscall.Errno(0xa) + EDOM = syscall.Errno(0x21) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISDIR = syscall.Errno(0x15) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + ENFILE = syscall.Errno(0x17) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOMEM = syscall.Errno(0xc) + ENOSPC = syscall.Errno(0x1c) + ENOTBLK = syscall.Errno(0xf) + ENOTDIR = syscall.Errno(0x14) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EPERM = syscall.Errno(0x1) + EPIPE = syscall.Errno(0x20) + ERANGE = syscall.Errno(0x22) + EROFS = syscall.Errno(0x1e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ETXTBSY = syscall.Errno(0x1a) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_386.go new file mode 100644 index 0000000..97a61fc --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -0,0 +1,878 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_32BIT = 0x40 + MAP_ABOVE4G = 0x80 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc03c4d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x8000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x20 + X86_FXSR_MAGIC = 0x0 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go new file mode 100644 index 0000000..a0d6d49 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -0,0 +1,878 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_32BIT = 0x40 + MAP_ABOVE4G = 0x80 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_ARCH_PRCTL = 0x1e + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go new file mode 100644 index 0000000..dd9c903 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -0,0 +1,883 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x20000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_GETCRUNCHREGS = 0x19 + PTRACE_GETFDPIC = 0x1f + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d + PTRACE_GETVFPREGS = 0x1b + PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x16 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_SETCRUNCHREGS = 0x1a + PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e + PTRACE_SETVFPREGS = 0x1c + PTRACE_SETWMMXREGS = 0x13 + PTRACE_SET_SYSCALL = 0x17 + PT_DATA_ADDR = 0x10004 + PT_TEXT_ADDR = 0x10000 + PT_TEXT_END_ADDR = 0x10008 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x20 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go new file mode 100644 index 0000000..384c61c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -0,0 +1,880 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + ESR_MAGIC = 0x45535201 + EXTPROC = 0x10000 + EXTRA_MAGIC = 0x45585401 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FPMR_MAGIC = 0x46504d52 + FPSIMD_MAGIC = 0x46508001 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GCS_MAGIC = 0x47435300 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + POE_MAGIC = 0x504f4530 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PROT_BTI = 0x10 + PROT_MTE = 0x20 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_PEEKMTETAGS = 0x21 + PTRACE_POKEMTETAGS = 0x22 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SVE_MAGIC = 0x53564501 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TPIDR2_MAGIC = 0x54504902 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + ZA_MAGIC = 0x54366345 + ZT_MAGIC = 0x5a544e01 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go new file mode 100644 index 0000000..6384c98 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -0,0 +1,870 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FPU_CTX_MAGIC = 0x46505501 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + LASX_CTX_MAGIC = 0x41535801 + LBT_CTX_MAGIC = 0x42540001 + LSX_CTX_MAGIC = 0x53580001 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go new file mode 100644 index 0000000..553c1c6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -0,0 +1,884 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go new file mode 100644 index 0000000..b3339f2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -0,0 +1,884 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go new file mode 100644 index 0000000..177091d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -0,0 +1,884 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64le && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go new file mode 100644 index 0000000..c5abf15 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -0,0 +1,884 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mipsle && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x2000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_RDLCK = 0x0 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x100 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x80 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_RENAME = 0x800 + MAP_STACK = 0x40000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x20 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPREGS = 0xe + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_SETFPREGS = 0xf + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + RLIMIT_AS = 0x6 + RLIMIT_MEMLOCK = 0x9 + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SIOCATMARK = 0x40047307 + SIOCGPGRP = 0x40047309 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NONBLOCK = 0x80 + SOCK_STREAM = 0x2 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x80 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x8000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VMIN = 0x4 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x9e) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EISCONN = syscall.Errno(0x85) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTCONN = syscall.Errno(0x86) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTUNIQ = syscall.Errno(0x50) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x16) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go new file mode 100644 index 0000000..f1f3fad --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -0,0 +1,936 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40046601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80046602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc00c4d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc00c4d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x20 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x10000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPR31 = 0x6e + PT_FPSCR = 0x71 + PT_LNK = 0x24 + PT_MQ = 0x27 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_TRAP = 0x28 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x20 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go new file mode 100644 index 0000000..203ad9c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -0,0 +1,940 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go new file mode 100644 index 0000000..4b9abcb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -0,0 +1,940 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64le && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x17 + B115200 = 0x11 + B1152000 = 0x18 + B1500000 = 0x19 + B2000000 = 0x1a + B230400 = 0x12 + B2500000 = 0x1b + B3000000 = 0x1c + B3500000 = 0x1d + B4000000 = 0x1e + B460800 = 0x13 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B921600 = 0x16 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1f + BS1 = 0x8000 + BSDLY = 0x8000 + CBAUD = 0xff + CBAUDEX = 0x0 + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTOPB = 0x400 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000000 + FF1 = 0x4000 + FFDLY = 0x4000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x800000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x4000 + ICANON = 0x100 + IEXTEN = 0x400 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x80 + IUCLC = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x4 + ONLCR = 0x2 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + PARENB = 0x1000 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PROT_SAO = 0x10 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS64 = 0x16 + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETREGS64 = 0x17 + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x400000 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VMIN = 0x5 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4000 + XTABS = 0xc00 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go new file mode 100644 index 0000000..f879830 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -0,0 +1,867 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_GETFDPIC = 0x21 + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go new file mode 100644 index 0000000..64347eb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -0,0 +1,939 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build s390x && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x127a + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKDISCARD = 0x1277 + BLKDISCARDZEROES = 0x127c + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETDISKSEQ = 0x80081280 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKIOMIN = 0x1278 + BLKIOOPT = 0x1279 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKROTATIONAL = 0x127e + BLKRRPART = 0x125f + BLKSECDISCARD = 0x127d + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BLKZEROOUT = 0x127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0xfd12 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_MEI_NOTIFY_GET = 0x80044803 + IOCTL_MEI_NOTIFY_SET = 0x40044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e + PTRACE_DISABLE_TE = 0x5010 + PTRACE_ENABLE_TE = 0x5009 + PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_PEEKDATA_AREA = 0x5003 + PTRACE_PEEKTEXT_AREA = 0x5002 + PTRACE_PEEKUSR_AREA = 0x5000 + PTRACE_PEEK_SYSTEM_CALL = 0x5007 + PTRACE_POKEDATA_AREA = 0x5005 + PTRACE_POKETEXT_AREA = 0x5004 + PTRACE_POKEUSR_AREA = 0x5001 + PTRACE_POKE_SYSTEM_CALL = 0x5008 + PTRACE_PROT = 0x15 + PTRACE_SINGLEBLOCK = 0xc + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TE_ABORT_RAND = 0x5011 + PT_ACR0 = 0x90 + PT_ACR1 = 0x94 + PT_ACR10 = 0xb8 + PT_ACR11 = 0xbc + PT_ACR12 = 0xc0 + PT_ACR13 = 0xc4 + PT_ACR14 = 0xc8 + PT_ACR15 = 0xcc + PT_ACR2 = 0x98 + PT_ACR3 = 0x9c + PT_ACR4 = 0xa0 + PT_ACR5 = 0xa4 + PT_ACR6 = 0xa8 + PT_ACR7 = 0xac + PT_ACR8 = 0xb0 + PT_ACR9 = 0xb4 + PT_CR_10 = 0x168 + PT_CR_11 = 0x170 + PT_CR_9 = 0x160 + PT_ENDREGS = 0x1af + PT_FPC = 0xd8 + PT_FPR0 = 0xe0 + PT_FPR1 = 0xe8 + PT_FPR10 = 0x130 + PT_FPR11 = 0x138 + PT_FPR12 = 0x140 + PT_FPR13 = 0x148 + PT_FPR14 = 0x150 + PT_FPR15 = 0x158 + PT_FPR2 = 0xf0 + PT_FPR3 = 0xf8 + PT_FPR4 = 0x100 + PT_FPR5 = 0x108 + PT_FPR6 = 0x110 + PT_FPR7 = 0x118 + PT_FPR8 = 0x120 + PT_FPR9 = 0x128 + PT_GPR0 = 0x10 + PT_GPR1 = 0x18 + PT_GPR10 = 0x60 + PT_GPR11 = 0x68 + PT_GPR12 = 0x70 + PT_GPR13 = 0x78 + PT_GPR14 = 0x80 + PT_GPR15 = 0x88 + PT_GPR2 = 0x20 + PT_GPR3 = 0x28 + PT_GPR4 = 0x30 + PT_GPR5 = 0x38 + PT_GPR6 = 0x40 + PT_GPR7 = 0x48 + PT_GPR8 = 0x50 + PT_GPR9 = 0x58 + PT_IEEE_IP = 0x1a8 + PT_LASTOFF = 0x1a8 + PT_ORIGGPR2 = 0xd0 + PT_PSWADDR = 0x8 + PT_PSWMASK = 0x0 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TS_OPT_ID = 0x51 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x40182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x40082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x40082104 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSPIDFD = 0x4c + SO_PASSRIGHTS = 0x53 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERPIDFD = 0x4d + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVPRIORITY = 0x52 + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go new file mode 100644 index 0000000..7d71911 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -0,0 +1,982 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build sparc64 && linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go + +package unix + +import "syscall" + +const ( + ASI_LEON_DFLUSH = 0x11 + ASI_LEON_IFLUSH = 0x10 + ASI_LEON_MMUFLUSH = 0x18 + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKALIGNOFF = 0x2000127a + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKDISCARD = 0x20001277 + BLKDISCARDZEROES = 0x2000127c + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETDISKSEQ = 0x40081280 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKIOMIN = 0x20001278 + BLKIOOPT = 0x20001279 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKROTATIONAL = 0x2000127e + BLKRRPART = 0x2000125f + BLKSECDISCARD = 0x2000127d + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BLKZEROOUT = 0x2000127f + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + DM_MPATH_PROBE_PATHS = 0x2000fd12 + ECCGETLAYOUT = 0x41484d11 + ECCGETSTATS = 0x40104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x400000 + EFD_NONBLOCK = 0x4000 + EMT_TAGOVF = 0x1 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 + EPOLL_CLOEXEC = 0x400000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x80049409 + FICLONERANGE = 0x8020940d + FLUSHO = 0x1000 + FS_IOC_ENABLE_VERITY = 0x80806685 + FS_IOC_GETFLAGS = 0x40086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x4010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SETFLAGS = 0x80086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + F_GETLK = 0x7 + F_GETLK64 = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETLK = 0x8 + F_SETLK64 = 0x8 + F_SETLKW = 0x9 + F_SETLKW64 = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HIDIOCGRAWINFO = 0x40084803 + HIDIOCGRDESC = 0x50044802 + HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x400000 + IN_NONBLOCK = 0x4000 + IOCTL_MEI_NOTIFY_GET = 0x40044803 + IOCTL_MEI_NOTIFY_SET = 0x80044802 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x200 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x100 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_RENAME = 0x20 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MEMERASE = 0x80084d02 + MEMERASE64 = 0x80104d14 + MEMGETBADBLOCK = 0x80084d0b + MEMGETINFO = 0x40204d01 + MEMGETOOBSEL = 0x40c84d0a + MEMGETREGIONCOUNT = 0x40044d07 + MEMISLOCKED = 0x40084d17 + MEMLOCK = 0x80084d05 + MEMREAD = 0xc0404d1a + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x80084d0c + MEMUNLOCK = 0x80084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x20004d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 + NS_GET_USERNS = 0x2000b701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x800c4d19 + OTPGETREGIONCOUNT = 0x80044d0e + OTPGETREGIONINFO = 0x800c4d0f + OTPLOCK = 0x400c4d10 + OTPSELECT = 0x40044d0d + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x100000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x2000 + O_EXCL = 0x800 + O_FSYNC = 0x802000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x4004 + O_NOATIME = 0x200000 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x4000 + O_PATH = 0x1000000 + O_RSYNC = 0x802000 + O_SYNC = 0x802000 + O_TMPFILE = 0x2010000 + O_TRUNC = 0x400 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCBRIDGECHAN = 0x80047435 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGIDLE32 = 0x4008743f + PPPIOCGIDLE64 = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCUNBRIDGECHAN = 0x20007434 + PPPIOCXFERUNIT = 0x2000744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e + PTRACE_GETFPAREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPREGS64 = 0x19 + PTRACE_GETREGS64 = 0x16 + PTRACE_READDATA = 0x10 + PTRACE_READTEXT = 0x12 + PTRACE_SETFPAREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPREGS64 = 0x1a + PTRACE_SETREGS64 = 0x17 + PTRACE_SPARC_DETACH = 0xb + PTRACE_WRITEDATA = 0x11 + PTRACE_WRITETEXT = 0x13 + PT_FP = 0x48 + PT_G0 = 0x10 + PT_G1 = 0x14 + PT_G2 = 0x18 + PT_G3 = 0x1c + PT_G4 = 0x20 + PT_G5 = 0x24 + PT_G6 = 0x28 + PT_G7 = 0x2c + PT_I0 = 0x30 + PT_I1 = 0x34 + PT_I2 = 0x38 + PT_I3 = 0x3c + PT_I4 = 0x40 + PT_I5 = 0x44 + PT_I6 = 0x48 + PT_I7 = 0x4c + PT_NPC = 0x8 + PT_PC = 0x4 + PT_PSR = 0x0 + PT_REGS_MAGIC = 0x57ac6c00 + PT_TNPC = 0x90 + PT_TPC = 0x88 + PT_TSTATE = 0x80 + PT_V9_FP = 0x70 + PT_V9_G0 = 0x0 + PT_V9_G1 = 0x8 + PT_V9_G2 = 0x10 + PT_V9_G3 = 0x18 + PT_V9_G4 = 0x20 + PT_V9_G5 = 0x28 + PT_V9_G6 = 0x30 + PT_V9_G7 = 0x38 + PT_V9_I0 = 0x40 + PT_V9_I1 = 0x48 + PT_V9_I2 = 0x50 + PT_V9_I3 = 0x58 + PT_V9_I4 = 0x60 + PT_V9_I5 = 0x68 + PT_V9_I6 = 0x70 + PT_V9_I7 = 0x78 + PT_V9_MAGIC = 0x9c + PT_V9_TNPC = 0x90 + PT_V9_TPC = 0x88 + PT_V9_TSTATE = 0x80 + PT_V9_Y = 0x98 + PT_WIM = 0x10 + PT_Y = 0xc + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x6 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_PARAM_GET = 0x80187013 + RTC_PARAM_SET = 0x80187014 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x58 + SCM_DEVMEM_LINEAR = 0x57 + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c + SCM_TIMESTAMPNS = 0x21 + SCM_TS_OPT_ID = 0x5a + SCM_TXTIME = 0x3f + SCM_WIFI_STATUS = 0x25 + SECCOMP_IOCTL_NOTIF_ADDFD = 0x80182103 + SECCOMP_IOCTL_NOTIF_ID_VALID = 0x80082102 + SECCOMP_IOCTL_NOTIF_SET_FLAGS = 0x80082104 + SFD_CLOEXEC = 0x400000 + SFD_NONBLOCK = 0x4000 + SF_FP = 0x38 + SF_I0 = 0x20 + SF_I1 = 0x24 + SF_I2 = 0x28 + SF_I3 = 0x2c + SF_I4 = 0x30 + SF_I5 = 0x34 + SF_L0 = 0x0 + SF_L1 = 0x4 + SF_L2 = 0x8 + SF_L3 = 0xc + SF_L4 = 0x10 + SF_L5 = 0x14 + SF_L6 = 0x18 + SF_L7 = 0x1c + SF_PC = 0x3c + SF_RETP = 0x40 + SF_V9_FP = 0x70 + SF_V9_I0 = 0x40 + SF_V9_I1 = 0x48 + SF_V9_I2 = 0x50 + SF_V9_I3 = 0x58 + SF_V9_I4 = 0x60 + SF_V9_I5 = 0x68 + SF_V9_L0 = 0x0 + SF_V9_L1 = 0x8 + SF_V9_L2 = 0x10 + SF_V9_L3 = 0x18 + SF_V9_L4 = 0x20 + SF_V9_L5 = 0x28 + SF_V9_L6 = 0x30 + SF_V9_L7 = 0x38 + SF_V9_PC = 0x78 + SF_V9_RETP = 0x80 + SF_V9_XARG0 = 0x88 + SF_V9_XARG1 = 0x90 + SF_V9_XARG2 = 0x98 + SF_V9_XARG3 = 0xa0 + SF_V9_XARG4 = 0xa8 + SF_V9_XARG5 = 0xb0 + SF_V9_XXARG = 0xb8 + SF_XARG0 = 0x44 + SF_XARG1 = 0x48 + SF_XARG2 = 0x4c + SF_XARG3 = 0x50 + SF_XARG4 = 0x54 + SF_XARG5 = 0x58 + SF_XXARG = 0x5c + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x400000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SO_ACCEPTCONN = 0x8000 + SO_ATTACH_BPF = 0x34 + SO_ATTACH_REUSEPORT_CBPF = 0x35 + SO_ATTACH_REUSEPORT_EBPF = 0x36 + SO_BINDTODEVICE = 0xd + SO_BINDTOIFINDEX = 0x41 + SO_BPF_EXTENSIONS = 0x32 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0x400 + SO_BUF_LOCK = 0x51 + SO_BUSY_POLL = 0x30 + SO_BUSY_POLL_BUDGET = 0x49 + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DETACH_REUSEPORT_BPF = 0x47 + SO_DEVMEM_DMABUF = 0x58 + SO_DEVMEM_DONTNEED = 0x59 + SO_DEVMEM_LINEAR = 0x57 + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_INCOMING_CPU = 0x33 + SO_INCOMING_NAPI_ID = 0x3a + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x28 + SO_MARK = 0x22 + SO_MAX_PACING_RATE = 0x31 + SO_MEMINFO = 0x39 + SO_NETNS_COOKIE = 0x50 + SO_NOFCS = 0x27 + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x2 + SO_PASSPIDFD = 0x55 + SO_PASSRIGHTS = 0x5c + SO_PASSSEC = 0x1f + SO_PEEK_OFF = 0x26 + SO_PEERCRED = 0x40 + SO_PEERGROUPS = 0x3d + SO_PEERPIDFD = 0x56 + SO_PEERSEC = 0x1e + SO_PREFER_BUSY_POLL = 0x48 + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x100b + SO_RCVLOWAT = 0x800 + SO_RCVMARK = 0x54 + SO_RCVPRIORITY = 0x5b + SO_RCVTIMEO = 0x2000 + SO_RCVTIMEO_NEW = 0x44 + SO_RCVTIMEO_OLD = 0x2000 + SO_RESERVE_MEM = 0x52 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x24 + SO_SECURITY_AUTHENTICATION = 0x5001 + SO_SECURITY_ENCRYPTION_NETWORK = 0x5004 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002 + SO_SELECT_ERR_QUEUE = 0x29 + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x100a + SO_SNDLOWAT = 0x1000 + SO_SNDTIMEO = 0x4000 + SO_SNDTIMEO_NEW = 0x45 + SO_SNDTIMEO_OLD = 0x4000 + SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPING_NEW = 0x43 + SO_TIMESTAMPING_OLD = 0x23 + SO_TIMESTAMPNS = 0x21 + SO_TIMESTAMPNS_NEW = 0x42 + SO_TIMESTAMPNS_OLD = 0x21 + SO_TIMESTAMP_NEW = 0x46 + SO_TXREHASH = 0x53 + SO_TXTIME = 0x3f + SO_TYPE = 0x1008 + SO_WIFI_STATUS = 0x25 + SO_ZEROCOPY = 0x3e + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x20005407 + TCGETA = 0x40125401 + TCGETS = 0x40245408 + TCGETS2 = 0x402c540c + TCSAFLUSH = 0x2 + TCSBRK = 0x20005405 + TCSBRKP = 0x5425 + TCSETA = 0x80125402 + TCSETAF = 0x80125404 + TCSETAW = 0x80125403 + TCSETS = 0x80245409 + TCSETS2 = 0x802c540d + TCSETSF = 0x8024540b + TCSETSF2 = 0x802c540f + TCSETSW = 0x8024540a + TCSETSW2 = 0x802c540e + TCXONC = 0x20005406 + TFD_CLOEXEC = 0x400000 + TFD_NONBLOCK = 0x4000 + TIOCCBRK = 0x2000747a + TIOCCONS = 0x20007424 + TIOCEXCL = 0x2000740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x40047400 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285443 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x40047483 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40047486 + TIOCGPTPEER = 0x20007489 + TIOCGRS485 = 0x40205441 + TIOCGSERIAL = 0x541e + TIOCGSID = 0x40047485 + TIOCGSOFTCAR = 0x40047464 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x545c + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007484 + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSETD = 0x80047401 + TIOCSIG = 0x80047488 + TIOCSISO7816 = 0xc0285444 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x80047482 + TIOCSPTLCK = 0x80047487 + TIOCSRS485 = 0xc0205442 + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x80047465 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x20005437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x40804804 + _HIDIOCGRAWPHYS = 0x40404805 + _HIDIOCGRAWUNIQ = 0x40404808 + __TIOCFLUSH = 0x80047410 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EADV = syscall.Errno(0x53) + EAFNOSUPPORT = syscall.Errno(0x2f) + EALREADY = syscall.Errno(0x25) + EBADE = syscall.Errno(0x66) + EBADFD = syscall.Errno(0x5d) + EBADMSG = syscall.Errno(0x4c) + EBADR = syscall.Errno(0x67) + EBADRQC = syscall.Errno(0x6a) + EBADSLT = syscall.Errno(0x6b) + EBFONT = syscall.Errno(0x6d) + ECANCELED = syscall.Errno(0x7f) + ECHRNG = syscall.Errno(0x5e) + ECOMM = syscall.Errno(0x55) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0x4e) + EDEADLOCK = syscall.Errno(0x6c) + EDESTADDRREQ = syscall.Errno(0x27) + EDOTDOT = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EHWPOISON = syscall.Errno(0x87) + EIDRM = syscall.Errno(0x4d) + EILSEQ = syscall.Errno(0x7a) + EINPROGRESS = syscall.Errno(0x24) + EISCONN = syscall.Errno(0x38) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x81) + EKEYREJECTED = syscall.Errno(0x83) + EKEYREVOKED = syscall.Errno(0x82) + EL2HLT = syscall.Errno(0x65) + EL2NSYNC = syscall.Errno(0x5f) + EL3HLT = syscall.Errno(0x60) + EL3RST = syscall.Errno(0x61) + ELIBACC = syscall.Errno(0x72) + ELIBBAD = syscall.Errno(0x70) + ELIBEXEC = syscall.Errno(0x6e) + ELIBMAX = syscall.Errno(0x7b) + ELIBSCN = syscall.Errno(0x7c) + ELNRNG = syscall.Errno(0x62) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x7e) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x57) + ENAMETOOLONG = syscall.Errno(0x3f) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENOANO = syscall.Errno(0x69) + ENOBUFS = syscall.Errno(0x37) + ENOCSI = syscall.Errno(0x64) + ENODATA = syscall.Errno(0x6f) + ENOKEY = syscall.Errno(0x80) + ENOLCK = syscall.Errno(0x4f) + ENOLINK = syscall.Errno(0x52) + ENOMEDIUM = syscall.Errno(0x7d) + ENOMSG = syscall.Errno(0x4b) + ENONET = syscall.Errno(0x50) + ENOPKG = syscall.Errno(0x71) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSR = syscall.Errno(0x4a) + ENOSTR = syscall.Errno(0x48) + ENOSYS = syscall.Errno(0x5a) + ENOTCONN = syscall.Errno(0x39) + ENOTEMPTY = syscall.Errno(0x42) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x85) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTUNIQ = syscall.Errno(0x73) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x5c) + EOWNERDEAD = syscall.Errno(0x84) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPROCLIM = syscall.Errno(0x43) + EPROTO = syscall.Errno(0x56) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EREMCHG = syscall.Errno(0x59) + EREMOTE = syscall.Errno(0x47) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x74) + ERFKILL = syscall.Errno(0x86) + ERREMOTE = syscall.Errno(0x51) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESRMNT = syscall.Errno(0x54) + ESTALE = syscall.Errno(0x46) + ESTRPIPE = syscall.Errno(0x5b) + ETIME = syscall.Errno(0x49) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x63) + EUSERS = syscall.Errno(0x44) + EXFULL = syscall.Errno(0x68) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGIO = syscall.Signal(0x17) + SIGLOST = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x17) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1d) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "cannot assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "transport endpoint is already connected"}, + {57, "ENOTCONN", "transport endpoint is not connected"}, + {58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {59, "ETOOMANYREFS", "too many references: cannot splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale file handle"}, + {71, "EREMOTE", "object is remote"}, + {72, "ENOSTR", "device not a stream"}, + {73, "ETIME", "timer expired"}, + {74, "ENOSR", "out of streams resources"}, + {75, "ENOMSG", "no message of desired type"}, + {76, "EBADMSG", "bad message"}, + {77, "EIDRM", "identifier removed"}, + {78, "EDEADLK", "resource deadlock avoided"}, + {79, "ENOLCK", "no locks available"}, + {80, "ENONET", "machine is not on the network"}, + {81, "ERREMOTE", "unknown error 81"}, + {82, "ENOLINK", "link has been severed"}, + {83, "EADV", "advertise error"}, + {84, "ESRMNT", "srmount error"}, + {85, "ECOMM", "communication error on send"}, + {86, "EPROTO", "protocol error"}, + {87, "EMULTIHOP", "multihop attempted"}, + {88, "EDOTDOT", "RFS specific error"}, + {89, "EREMCHG", "remote address changed"}, + {90, "ENOSYS", "function not implemented"}, + {91, "ESTRPIPE", "streams pipe error"}, + {92, "EOVERFLOW", "value too large for defined data type"}, + {93, "EBADFD", "file descriptor in bad state"}, + {94, "ECHRNG", "channel number out of range"}, + {95, "EL2NSYNC", "level 2 not synchronized"}, + {96, "EL3HLT", "level 3 halted"}, + {97, "EL3RST", "level 3 reset"}, + {98, "ELNRNG", "link number out of range"}, + {99, "EUNATCH", "protocol driver not attached"}, + {100, "ENOCSI", "no CSI structure available"}, + {101, "EL2HLT", "level 2 halted"}, + {102, "EBADE", "invalid exchange"}, + {103, "EBADR", "invalid request descriptor"}, + {104, "EXFULL", "exchange full"}, + {105, "ENOANO", "no anode"}, + {106, "EBADRQC", "invalid request code"}, + {107, "EBADSLT", "invalid slot"}, + {108, "EDEADLOCK", "file locking deadlock error"}, + {109, "EBFONT", "bad font file format"}, + {110, "ELIBEXEC", "cannot exec a shared library directly"}, + {111, "ENODATA", "no data available"}, + {112, "ELIBBAD", "accessing a corrupted shared library"}, + {113, "ENOPKG", "package not installed"}, + {114, "ELIBACC", "can not access a needed shared library"}, + {115, "ENOTUNIQ", "name not unique on network"}, + {116, "ERESTART", "interrupted system call should be restarted"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {123, "ELIBMAX", "attempting to link in too many shared libraries"}, + {124, "ELIBSCN", ".lib section in a.out corrupted"}, + {125, "ENOMEDIUM", "no medium found"}, + {126, "EMEDIUMTYPE", "wrong medium type"}, + {127, "ECANCELED", "operation canceled"}, + {128, "ENOKEY", "required key not available"}, + {129, "EKEYEXPIRED", "key has expired"}, + {130, "EKEYREVOKED", "key has been revoked"}, + {131, "EKEYREJECTED", "key was rejected by service"}, + {132, "EOWNERDEAD", "owner died"}, + {133, "ENOTRECOVERABLE", "state not recoverable"}, + {134, "ERFKILL", "operation not possible due to RF-kill"}, + {135, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGLOST", "power failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go new file mode 100644 index 0000000..130085d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -0,0 +1,1779 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + EN_SW_CTL_INF = 0x1000 + EN_SW_CTL_PREC = 0x300 + EN_SW_CTL_ROUND = 0xc00 + EN_SW_DATACHAIN = 0x80 + EN_SW_DENORM = 0x2 + EN_SW_INVOP = 0x1 + EN_SW_OVERFLOW = 0x8 + EN_SW_PRECLOSS = 0x20 + EN_SW_UNDERFLOW = 0x10 + EN_SW_ZERODIV = 0x4 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go new file mode 100644 index 0000000..84769a1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -0,0 +1,1769 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go new file mode 100644 index 0000000..602ded0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -0,0 +1,1758 @@ +// mkerrors.sh -marm +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -marm _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PRI_IOFLUSH = 0x7c + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x48087446 + TIOCPTSNAME = 0x48087448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go new file mode 100644 index 0000000..efc0406 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -0,0 +1,1769 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && netbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go new file mode 100644 index 0000000..5a6500f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc100445d + DIOCADDRULE = 0xccc84404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xccc8441a + DIOCCLRIFFLAG = 0xc024445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0d04412 + DIOCCLRSTATUS = 0xc0244416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1084460 + DIOCGETQUEUE = 0xc100445f + DIOCGETQUEUES = 0xc100445e + DIOCGETRULE = 0xccc84407 + DIOCGETRULES = 0xccc84406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0084454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0084419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0244457 + DIOCKILLSRCNODES = 0xc068445b + DIOCKILLSTATES = 0xc0d04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc084444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0844450 + DIOCRADDADDRS = 0xc44c4443 + DIOCRADDTABLES = 0xc44c443d + DIOCRCLRADDRS = 0xc44c4442 + DIOCRCLRASTATS = 0xc44c4448 + DIOCRCLRTABLES = 0xc44c443c + DIOCRCLRTSTATS = 0xc44c4441 + DIOCRDELADDRS = 0xc44c4444 + DIOCRDELTABLES = 0xc44c443e + DIOCRGETADDRS = 0xc44c4446 + DIOCRGETASTATS = 0xc44c4447 + DIOCRGETTABLES = 0xc44c443f + DIOCRGETTSTATS = 0xc44c4440 + DIOCRINADEFINE = 0xc44c444d + DIOCRSETADDRS = 0xc44c4445 + DIOCRSETTFLAGS = 0xc44c444a + DIOCRTSTADDRS = 0xc44c4449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0244459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0244414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc00c4451 + DIOCXCOMMIT = 0xc00c4452 + DIOCXROLLBACK = 0xc00c4453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x805c693c + SIOCBRDGADDL = 0x805c6949 + SIOCBRDGADDS = 0x805c6941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x805c693d + SIOCBRDGDELS = 0x805c6942 + SIOCBRDGFLUSH = 0x805c6948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc05c693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc05c6942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x805c6955 + SIOCBRDGSIFFLGS = 0x805c693f + SIOCBRDGSIFPRIO = 0x805c6954 + SIOCBRDGSIFPROT = 0x805c694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc024698d + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0386938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go new file mode 100644 index 0000000..a5aeeb9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 0000000..0e9748a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1905 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc100445d + DIOCADDRULE = 0xcce04404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcce0441a + DIOCCLRIFFLAG = 0xc024445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0d04412 + DIOCCLRSTATUS = 0xc0244416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1084460 + DIOCGETQUEUE = 0xc100445f + DIOCGETQUEUES = 0xc100445e + DIOCGETRULE = 0xcce04407 + DIOCGETRULES = 0xcce04406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0084454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0084419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0244457 + DIOCKILLSRCNODES = 0xc068445b + DIOCKILLSTATES = 0xc0d04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc44c4443 + DIOCRADDTABLES = 0xc44c443d + DIOCRCLRADDRS = 0xc44c4442 + DIOCRCLRASTATS = 0xc44c4448 + DIOCRCLRTABLES = 0xc44c443c + DIOCRCLRTSTATS = 0xc44c4441 + DIOCRDELADDRS = 0xc44c4444 + DIOCRDELTABLES = 0xc44c443e + DIOCRGETADDRS = 0xc44c4446 + DIOCRGETASTATS = 0xc44c4447 + DIOCRGETTABLES = 0xc44c443f + DIOCRGETTSTATS = 0xc44c4440 + DIOCRINADEFINE = 0xc44c444d + DIOCRSETADDRS = 0xc44c4445 + DIOCRSETTFLAGS = 0xc44c444a + DIOCRTSTADDRS = 0xc44c4449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0244459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0244414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc00c4451 + DIOCXCOMMIT = 0xc00c4452 + DIOCXROLLBACK = 0xc00c4453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc024698d + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0386938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go new file mode 100644 index 0000000..4f4449a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {28672, "SIGSTKSZ", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go new file mode 100644 index 0000000..76a363f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go @@ -0,0 +1,1905 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, + {81920, "SIGSTKSZ", "unknown signal"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go new file mode 100644 index 0000000..43ca0cd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go @@ -0,0 +1,1904 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xfffffff + IPV6_FLOWLABEL_MASK = 0xfffff + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x1000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go new file mode 100644 index 0000000..b1b8bb2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go @@ -0,0 +1,1903 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_F_DIR_IN = 0x10 + BPF_F_DIR_MASK = 0x30 + BPF_F_DIR_OUT = 0x20 + BPF_F_DIR_SHIFT = 0x4 + BPF_F_FLOWID = 0x8 + BPF_F_PRI_MASK = 0x7 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RND = 0xc0 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CPUSTATES = 0x6 + CP_IDLE = 0x5 + CP_INTR = 0x4 + CP_NICE = 0x1 + CP_SPIN = 0x3 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCADDQUEUE = 0xc110445d + DIOCADDRULE = 0xcd604404 + DIOCADDSTATE = 0xc1084425 + DIOCCHANGERULE = 0xcd60441a + DIOCCLRIFFLAG = 0xc028445a + DIOCCLRSRCNODES = 0x20004455 + DIOCCLRSTATES = 0xc0e04412 + DIOCCLRSTATUS = 0xc0284416 + DIOCGETLIMIT = 0xc0084427 + DIOCGETQSTATS = 0xc1204460 + DIOCGETQUEUE = 0xc110445f + DIOCGETQUEUES = 0xc110445e + DIOCGETRULE = 0xcd604407 + DIOCGETRULES = 0xcd604406 + DIOCGETRULESET = 0xc444443b + DIOCGETRULESETS = 0xc444443a + DIOCGETSRCNODES = 0xc0104454 + DIOCGETSTATE = 0xc1084413 + DIOCGETSTATES = 0xc0104419 + DIOCGETSTATUS = 0xc1e84415 + DIOCGETSYNFLWATS = 0xc0084463 + DIOCGETTIMEOUT = 0xc008441e + DIOCIGETIFACES = 0xc0284457 + DIOCKILLSRCNODES = 0xc080445b + DIOCKILLSTATES = 0xc0e04429 + DIOCNATLOOK = 0xc0504417 + DIOCOSFPADD = 0xc088444f + DIOCOSFPFLUSH = 0x2000444e + DIOCOSFPGET = 0xc0884450 + DIOCRADDADDRS = 0xc4504443 + DIOCRADDTABLES = 0xc450443d + DIOCRCLRADDRS = 0xc4504442 + DIOCRCLRASTATS = 0xc4504448 + DIOCRCLRTABLES = 0xc450443c + DIOCRCLRTSTATS = 0xc4504441 + DIOCRDELADDRS = 0xc4504444 + DIOCRDELTABLES = 0xc450443e + DIOCRGETADDRS = 0xc4504446 + DIOCRGETASTATS = 0xc4504447 + DIOCRGETTABLES = 0xc450443f + DIOCRGETTSTATS = 0xc4504440 + DIOCRINADEFINE = 0xc450444d + DIOCRSETADDRS = 0xc4504445 + DIOCRSETTFLAGS = 0xc450444a + DIOCRTSTADDRS = 0xc4504449 + DIOCSETDEBUG = 0xc0044418 + DIOCSETHOSTID = 0xc0044456 + DIOCSETIFFLAG = 0xc0284459 + DIOCSETLIMIT = 0xc0084428 + DIOCSETREASS = 0xc004445c + DIOCSETSTATUSIF = 0xc0284414 + DIOCSETSYNCOOKIES = 0xc0014462 + DIOCSETSYNFLWATS = 0xc0084461 + DIOCSETTIMEOUT = 0xc008441d + DIOCSTART = 0x20004401 + DIOCSTOP = 0x20004402 + DIOCXBEGIN = 0xc0104451 + DIOCXCOMMIT = 0xc0104452 + DIOCXROLLBACK = 0xc0104453 + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETH64_8021_RSVD_MASK = 0xfffffffffff0 + ETH64_8021_RSVD_PREFIX = 0x180c2000000 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_EAPOL = 0x888e + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MACSEC = 0x88e5 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NHRP = 0x2001 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NSH = 0x984f + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_EXCEPT = -0x9 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x9 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf800 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_WIREGUARD = 0xfb + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MOUNT_AFS = "afs" + MOUNT_CD9660 = "cd9660" + MOUNT_EXT2FS = "ext2fs" + MOUNT_FFS = "ffs" + MOUNT_FUSEFS = "fuse" + MOUNT_MFS = "mfs" + MOUNT_MSDOS = "msdos" + MOUNT_NCPFS = "ncpfs" + MOUNT_NFS = "nfs" + MOUNT_NTFS = "ntfs" + MOUNT_TMPFS = "tmpfs" + MOUNT_UDF = "udf" + MOUNT_UFS = "ffs" + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x8 + NET_RT_SOURCE = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x4 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_SOURCE = 0x16 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SEEK_CUR = 0x1 + SEEK_END = 0x2 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGRXHPRIO = 0xc02069db + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSRXHPRIO = 0x802069db + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1024 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_PROTOCOL = 0x1025 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_HDR = 0x1010500 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SACK_PERMIT_HDR = 0x1010402 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_TSTAMP_HDR = 0x101080a + TCPOPT_WINDOW = 0x3 + TCP_INFO = 0x9 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACKHOLE_LIMIT = 0x80 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go new file mode 100644 index 0000000..d2ddd31 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -0,0 +1,1556 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && solaris + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_802 = 0x12 + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_FILE = 0x1 + AF_GOSIP = 0x16 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1a + AF_INET_OFFLOAD = 0x1e + AF_IPX = 0x17 + AF_KEY = 0x1b + AF_LAT = 0xe + AF_LINK = 0x19 + AF_LOCAL = 0x1 + AF_MAX = 0x20 + AF_NBS = 0x7 + AF_NCA = 0x1c + AF_NIT = 0x11 + AF_NS = 0x6 + AF_OSI = 0x13 + AF_OSINET = 0x15 + AF_PACKET = 0x20 + AF_POLICY = 0x1d + AF_PUP = 0x4 + AF_ROUTE = 0x18 + AF_SNA = 0xb + AF_TRILL = 0x1f + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_X25 = 0x14 + ARPHRD_ARCNET = 0x7 + ARPHRD_ATM = 0x10 + ARPHRD_AX25 = 0x3 + ARPHRD_CHAOS = 0x5 + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_FC = 0x12 + ARPHRD_FRAME = 0xf + ARPHRD_HDLC = 0x11 + ARPHRD_IB = 0x20 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IPATM = 0x13 + ARPHRD_METRICOM = 0x17 + ARPHRD_TUNNEL = 0x1f + B0 = 0x0 + B110 = 0x3 + B115200 = 0x12 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B153600 = 0x13 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B230400 = 0x14 + B2400 = 0xb + B300 = 0x7 + B307200 = 0x15 + B38400 = 0xf + B460800 = 0x16 + B4800 = 0xc + B50 = 0x1 + B57600 = 0x10 + B600 = 0x8 + B75 = 0x2 + B76800 = 0x11 + B921600 = 0x17 + B9600 = 0xd + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = -0x3fefbd89 + BIOCGDLTLIST32 = -0x3ff7bd89 + BIOCGETIF = 0x4020426b + BIOCGETLIF = 0x4078426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGRTIMEOUT32 = 0x4008427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = -0x7ffbbd90 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = -0x3ffbbd9a + BIOCSDLT = -0x7ffbbd8a + BIOCSETF = -0x7fefbd99 + BIOCSETF32 = -0x7ff7bd99 + BIOCSETIF = -0x7fdfbd94 + BIOCSETLIF = -0x7f87bd94 + BIOCSHDRCMPLT = -0x7ffbbd8b + BIOCSRTIMEOUT = -0x7fefbd86 + BIOCSRTIMEOUT32 = -0x7ff7bd86 + BIOCSSEESENT = -0x7ffbbd87 + BIOCSTCPF = -0x7fefbd8e + BIOCSUDPF = -0x7fefbd8d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_HIGHRES = 0x4 + CLOCK_LEVEL = 0xa + CLOCK_MONOTONIC = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x5 + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x3 + CLOCK_THREAD_CPUTIME_ID = 0x2 + CLOCK_VIRTUAL = 0x1 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + CSWTCH = 0x1a + DIOC = 0x6400 + DIOCGETB = 0x6402 + DIOCGETC = 0x6401 + DIOCGETP = 0x6408 + DIOCSETE = 0x6403 + DIOCSETP = 0x6409 + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_BACNET_MS_TP = 0xa5 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FRELAY = 0x6b + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xa2 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_PPPD = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EMPTY_SET = 0x0 + EMT_CPCOVF = 0x1 + EQUALITY_CHECK = 0x0 + EXTA = 0xe + EXTB = 0xf + FD_CLOEXEC = 0x1 + FD_NFDBITS = 0x40 + FD_SETSIZE = 0x10000 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FIORDCHK = 0x6603 + FLUSHALL = 0x1 + FLUSHDATA = 0x0 + FLUSHO = 0x2000 + F_ALLOCSP = 0xa + F_ALLOCSP64 = 0xa + F_BADFD = 0x2e + F_BLKSIZE = 0x13 + F_BLOCKS = 0x12 + F_CHKFL = 0x8 + F_COMPAT = 0x8 + F_DUP2FD = 0x9 + F_DUP2FD_CLOEXEC = 0x24 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x25 + F_FLOCK = 0x35 + F_FLOCK64 = 0x35 + F_FLOCKW = 0x36 + F_FLOCKW64 = 0x36 + F_FREESP = 0xb + F_FREESP64 = 0xb + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETXFL = 0x2d + F_HASREMOTELOCKS = 0x1a + F_ISSTREAM = 0xd + F_MANDDNY = 0x10 + F_MDACC = 0x20 + F_NODNY = 0x0 + F_NPRIV = 0x10 + F_OFD_GETLK = 0x2f + F_OFD_GETLK64 = 0x2f + F_OFD_SETLK = 0x30 + F_OFD_SETLK64 = 0x30 + F_OFD_SETLKW = 0x31 + F_OFD_SETLKW64 = 0x31 + F_PRIV = 0xf + F_QUOTACTL = 0x11 + F_RDACC = 0x1 + F_RDDNY = 0x1 + F_RDLCK = 0x1 + F_REVOKE = 0x19 + F_RMACC = 0x4 + F_RMDNY = 0x4 + F_RWACC = 0x3 + F_RWDNY = 0x3 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLK64_NBMAND = 0x2a + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETLK_NBMAND = 0x2a + F_SETOWN = 0x18 + F_SHARE = 0x28 + F_SHARE_NBMAND = 0x2b + F_UNLCK = 0x3 + F_UNLKSYS = 0x4 + F_UNSHARE = 0x29 + F_WRACC = 0x2 + F_WRDNY = 0x2 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFF_ADDRCONF = 0x80000 + IFF_ALLMULTI = 0x200 + IFF_ANYCAST = 0x400000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x7f203003b5a + IFF_COS_ENABLED = 0x200000000 + IFF_DEBUG = 0x4 + IFF_DEPRECATED = 0x40000 + IFF_DHCPRUNNING = 0x4000 + IFF_DUPLICATE = 0x4000000000 + IFF_FAILED = 0x10000000 + IFF_FIXEDMTU = 0x1000000000 + IFF_INACTIVE = 0x40000000 + IFF_INTELLIGENT = 0x400 + IFF_IPMP = 0x8000000000 + IFF_IPMP_CANTCHANGE = 0x10000000 + IFF_IPMP_INVALID = 0x1ec200080 + IFF_IPV4 = 0x1000000 + IFF_IPV6 = 0x2000000 + IFF_L3PROTECT = 0x40000000000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x800 + IFF_MULTI_BCAST = 0x1000 + IFF_NOACCEPT = 0x4000000 + IFF_NOARP = 0x80 + IFF_NOFAILOVER = 0x8000000 + IFF_NOLINKLOCAL = 0x20000000000 + IFF_NOLOCAL = 0x20000 + IFF_NONUD = 0x200000 + IFF_NORTEXCH = 0x800000 + IFF_NOTRAILERS = 0x20 + IFF_NOXMIT = 0x10000 + IFF_OFFLINE = 0x80000000 + IFF_POINTOPOINT = 0x10 + IFF_PREFERRED = 0x400000000 + IFF_PRIVATE = 0x8000 + IFF_PROMISC = 0x100 + IFF_ROUTER = 0x100000 + IFF_RUNNING = 0x40 + IFF_STANDBY = 0x20000000 + IFF_TEMPORARY = 0x800000000 + IFF_UNNUMBERED = 0x2000 + IFF_UP = 0x1 + IFF_VIRTUAL = 0x2000000000 + IFF_VRRP = 0x10000000000 + IFF_XRESOLV = 0x100000000 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6TO4 = 0xca + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_IPV4 = 0xc8 + IFT_IPV6 = 0xc9 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_AUTOCONF_MASK = 0xffff0000 + IN_AUTOCONF_NET = 0xa9fe0000 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_CLASSE_NET = 0xffffffff + IN_LOOPBACKNET = 0x7f + IN_PRIVATE12_MASK = 0xfff00000 + IN_PRIVATE12_NET = 0xac100000 + IN_PRIVATE16_MASK = 0xffff0000 + IN_PRIVATE16_NET = 0xc0a80000 + IN_PRIVATE8_MASK = 0xff000000 + IN_PRIVATE8_NET = 0xa000000 + IPPROTO_AH = 0x33 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x4 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_HELLO = 0x3f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_ND = 0x4d + IPPROTO_NONE = 0x3b + IPPROTO_OSPF = 0x59 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_UDP = 0x11 + IPV6_ADD_MEMBERSHIP = 0x9 + IPV6_BOUND_IF = 0x41 + IPV6_CHECKSUM = 0x18 + IPV6_DONTFRAG = 0x21 + IPV6_DROP_MEMBERSHIP = 0xa + IPV6_DSTOPTS = 0xf + IPV6_FLOWINFO_FLOWLABEL = 0xffff0f00 + IPV6_FLOWINFO_TCLASS = 0xf00f + IPV6_HOPLIMIT = 0xc + IPV6_HOPOPTS = 0xe + IPV6_JOIN_GROUP = 0x9 + IPV6_LEAVE_GROUP = 0xa + IPV6_MULTICAST_HOPS = 0x7 + IPV6_MULTICAST_IF = 0x6 + IPV6_MULTICAST_LOOP = 0x8 + IPV6_NEXTHOP = 0xd + IPV6_PAD1_OPT = 0x0 + IPV6_PATHMTU = 0x25 + IPV6_PKTINFO = 0xb + IPV6_PREFER_SRC_CGA = 0x20 + IPV6_PREFER_SRC_CGADEFAULT = 0x10 + IPV6_PREFER_SRC_CGAMASK = 0x30 + IPV6_PREFER_SRC_COA = 0x2 + IPV6_PREFER_SRC_DEFAULT = 0x15 + IPV6_PREFER_SRC_HOME = 0x1 + IPV6_PREFER_SRC_MASK = 0x3f + IPV6_PREFER_SRC_MIPDEFAULT = 0x1 + IPV6_PREFER_SRC_MIPMASK = 0x3 + IPV6_PREFER_SRC_NONCGA = 0x10 + IPV6_PREFER_SRC_PUBLIC = 0x4 + IPV6_PREFER_SRC_TMP = 0x8 + IPV6_PREFER_SRC_TMPDEFAULT = 0x4 + IPV6_PREFER_SRC_TMPMASK = 0xc + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x13 + IPV6_RECVHOPOPTS = 0x14 + IPV6_RECVPATHMTU = 0x24 + IPV6_RECVPKTINFO = 0x12 + IPV6_RECVRTHDR = 0x16 + IPV6_RECVRTHDRDSTOPTS = 0x17 + IPV6_RECVTCLASS = 0x19 + IPV6_RTHDR = 0x10 + IPV6_RTHDRDSTOPTS = 0x11 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SEC_OPT = 0x22 + IPV6_SRC_PREFERENCES = 0x23 + IPV6_TCLASS = 0x26 + IPV6_UNICAST_HOPS = 0x5 + IPV6_UNSPEC_SRC = 0x42 + IPV6_USE_MIN_MTU = 0x20 + IPV6_V6ONLY = 0x27 + IP_ADD_MEMBERSHIP = 0x13 + IP_ADD_SOURCE_MEMBERSHIP = 0x17 + IP_BLOCK_SOURCE = 0x15 + IP_BOUND_IF = 0x41 + IP_BROADCAST = 0x106 + IP_BROADCAST_TTL = 0x43 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPINIT_IF = 0x45 + IP_DONTFRAG = 0x1b + IP_DONTROUTE = 0x105 + IP_DROP_MEMBERSHIP = 0x14 + IP_DROP_SOURCE_MEMBERSHIP = 0x18 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x10 + IP_MULTICAST_LOOP = 0x12 + IP_MULTICAST_TTL = 0x11 + IP_NEXTHOP = 0x19 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x9 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVSLLA = 0xa + IP_RECVTOS = 0xc + IP_RECVTTL = 0xb + IP_RETOPTS = 0x8 + IP_REUSEADDR = 0x104 + IP_SEC_OPT = 0x22 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x16 + IP_UNSPEC_SRC = 0x42 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_ACCESS_DEFAULT = 0x6 + MADV_ACCESS_LWP = 0x7 + MADV_ACCESS_MANY = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NORMAL = 0x0 + MADV_PURGE = 0x9 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80 + MAP_ALIGN = 0x200 + MAP_ANON = 0x100 + MAP_ANONYMOUS = 0x100 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_INITDATA = 0x800 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TEXT = 0x400 + MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x29 + MCAST_JOIN_SOURCE_GROUP = 0x2d + MCAST_LEAVE_GROUP = 0x2a + MCAST_LEAVE_SOURCE_GROUP = 0x2e + MCAST_UNBLOCK_SOURCE = 0x2c + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CTRUNC = 0x10 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_DUPCTRL = 0x800 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 0x10 + MSG_NOSIGNAL = 0x200 + MSG_NOTIFICATION = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x20 + MSG_WAITALL = 0x40 + MSG_XPG4_2 = 0x8000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_OLDSYNC = 0x0 + MS_SYNC = 0x4 + M_FLUSH = 0x86 + NAME_MAX = 0xff + NEWDEV = 0x1 + NFDBITS = 0x40 + NL0 = 0x0 + NL1 = 0x100 + NLDLY = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + OLDDEV = 0x0 + ONBITSMAJOR = 0x7 + ONBITSMINOR = 0x8 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENFAIL = -0x1 + OPOST = 0x1 + O_ACCMODE = 0x600003 + O_APPEND = 0x8 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DIRECT = 0x2000000 + O_DIRECTORY = 0x1000000 + O_DSYNC = 0x40 + O_EXCL = 0x400 + O_EXEC = 0x400000 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x4 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NOLINKS = 0x40000 + O_NONBLOCK = 0x80 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x8000 + O_SEARCH = 0x200000 + O_SIOCGIFCONF = -0x3ff796ec + O_SIOCGLIFCONF = -0x3fef9688 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + O_XATTR = 0x4000 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xfffffffffffffffd + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_NUMBITS = 0x9 + RTA_SRC = 0x100 + RTF_BLACKHOLE = 0x1000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INDIRECT = 0x40000 + RTF_KERNEL = 0x80000 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTIRT = 0x10000 + RTF_PRIVATE = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SETSRC = 0x20000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTF_ZONE = 0x100000 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0xf + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_FREEADDR = 0x10 + RTM_GET = 0x4 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_VERSION = 0x3 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_AWARE = 0x1 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_RIGHTS = 0x1010 + SCM_TIMESTAMP = 0x1013 + SCM_UCRED = 0x1012 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIG2STR_MAX = 0x20 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDRT = -0x7fcf8df6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fdb96e0 + SIOCDELMULTI = -0x7fdf96ce + SIOCDELRT = -0x7fcf8df5 + SIOCDXARP = -0x7fff9658 + SIOCGARP = -0x3fdb96e1 + SIOCGDSTINFO = -0x3fff965c + SIOCGENADDR = -0x3fdf96ab + SIOCGENPSTATS = -0x3fdf96c7 + SIOCGETLSGCNT = -0x3fef8deb + SIOCGETNAME = 0x40107334 + SIOCGETPEER = 0x40107335 + SIOCGETPROP = -0x3fff8f44 + SIOCGETSGCNT = -0x3feb8deb + SIOCGETSYNC = -0x3fdf96d3 + SIOCGETVIFCNT = -0x3feb8dec + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fdf96f3 + SIOCGIFBRDADDR = -0x3fdf96e9 + SIOCGIFCONF = -0x3ff796a4 + SIOCGIFDSTADDR = -0x3fdf96f1 + SIOCGIFFLAGS = -0x3fdf96ef + SIOCGIFHWADDR = -0x3fdf9647 + SIOCGIFINDEX = -0x3fdf96a6 + SIOCGIFMEM = -0x3fdf96ed + SIOCGIFMETRIC = -0x3fdf96e5 + SIOCGIFMTU = -0x3fdf96ea + SIOCGIFMUXID = -0x3fdf96a8 + SIOCGIFNETMASK = -0x3fdf96e7 + SIOCGIFNUM = 0x40046957 + SIOCGIP6ADDRPOLICY = -0x3fff965e + SIOCGIPMSFILTER = -0x3ffb964c + SIOCGLIFADDR = -0x3f87968f + SIOCGLIFBINDING = -0x3f879666 + SIOCGLIFBRDADDR = -0x3f879685 + SIOCGLIFCONF = -0x3fef965b + SIOCGLIFDADSTATE = -0x3f879642 + SIOCGLIFDSTADDR = -0x3f87968d + SIOCGLIFFLAGS = -0x3f87968b + SIOCGLIFGROUPINFO = -0x3f4b9663 + SIOCGLIFGROUPNAME = -0x3f879664 + SIOCGLIFHWADDR = -0x3f879640 + SIOCGLIFINDEX = -0x3f87967b + SIOCGLIFLNKINFO = -0x3f879674 + SIOCGLIFMETRIC = -0x3f879681 + SIOCGLIFMTU = -0x3f879686 + SIOCGLIFMUXID = -0x3f87967d + SIOCGLIFNETMASK = -0x3f879683 + SIOCGLIFNUM = -0x3ff3967e + SIOCGLIFSRCOF = -0x3fef964f + SIOCGLIFSUBNET = -0x3f879676 + SIOCGLIFTOKEN = -0x3f879678 + SIOCGLIFUSESRC = -0x3f879651 + SIOCGLIFZONE = -0x3f879656 + SIOCGLOWAT = 0x40047303 + SIOCGMSFILTER = -0x3ffb964e + SIOCGPGRP = 0x40047309 + SIOCGSTAMP = -0x3fef9646 + SIOCGXARP = -0x3fff9659 + SIOCIFDETACH = -0x7fdf96c8 + SIOCILB = -0x3ffb9645 + SIOCLIFADDIF = -0x3f879691 + SIOCLIFDELND = -0x7f879673 + SIOCLIFGETND = -0x3f879672 + SIOCLIFREMOVEIF = -0x7f879692 + SIOCLIFSETND = -0x7f879671 + SIOCLOWER = -0x7fdf96d7 + SIOCSARP = -0x7fdb96e2 + SIOCSCTPGOPT = -0x3fef9653 + SIOCSCTPPEELOFF = -0x3ffb9652 + SIOCSCTPSOPT = -0x7fef9654 + SIOCSENABLESDP = -0x3ffb9649 + SIOCSETPROP = -0x7ffb8f43 + SIOCSETSYNC = -0x7fdf96d4 + SIOCSHIWAT = -0x7ffb8d00 + SIOCSIFADDR = -0x7fdf96f4 + SIOCSIFBRDADDR = -0x7fdf96e8 + SIOCSIFDSTADDR = -0x7fdf96f2 + SIOCSIFFLAGS = -0x7fdf96f0 + SIOCSIFINDEX = -0x7fdf96a5 + SIOCSIFMEM = -0x7fdf96ee + SIOCSIFMETRIC = -0x7fdf96e4 + SIOCSIFMTU = -0x7fdf96eb + SIOCSIFMUXID = -0x7fdf96a7 + SIOCSIFNAME = -0x7fdf96b7 + SIOCSIFNETMASK = -0x7fdf96e6 + SIOCSIP6ADDRPOLICY = -0x7fff965d + SIOCSIPMSFILTER = -0x7ffb964b + SIOCSLGETREQ = -0x3fdf96b9 + SIOCSLIFADDR = -0x7f879690 + SIOCSLIFBRDADDR = -0x7f879684 + SIOCSLIFDSTADDR = -0x7f87968e + SIOCSLIFFLAGS = -0x7f87968c + SIOCSLIFGROUPNAME = -0x7f879665 + SIOCSLIFINDEX = -0x7f87967a + SIOCSLIFLNKINFO = -0x7f879675 + SIOCSLIFMETRIC = -0x7f879680 + SIOCSLIFMTU = -0x7f879687 + SIOCSLIFMUXID = -0x7f87967c + SIOCSLIFNAME = -0x3f87967f + SIOCSLIFNETMASK = -0x7f879682 + SIOCSLIFPREFIX = -0x3f879641 + SIOCSLIFSUBNET = -0x7f879677 + SIOCSLIFTOKEN = -0x7f879679 + SIOCSLIFUSESRC = -0x7f879650 + SIOCSLIFZONE = -0x7f879655 + SIOCSLOWAT = -0x7ffb8cfe + SIOCSLSTAT = -0x7fdf96b8 + SIOCSMSFILTER = -0x7ffb964d + SIOCSPGRP = -0x7ffb8cf8 + SIOCSPROMISC = -0x7ffb96d0 + SIOCSQPTR = -0x3ffb9648 + SIOCSSDSTATS = -0x3fdf96d2 + SIOCSSESTATS = -0x3fdf96d1 + SIOCSXARP = -0x7fff965a + SIOCTMYADDR = -0x3ff79670 + SIOCTMYSITE = -0x3ff7966e + SIOCTONLINK = -0x3ff7966f + SIOCUPPER = -0x7fdf96d8 + SIOCX25RCV = -0x3fdf96c4 + SIOCX25TBL = -0x3fdf96c3 + SIOCX25XMT = -0x3fdf96c5 + SIOCXPROTO = 0x20007337 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NDELAY = 0x200000 + SOCK_NONBLOCK = 0x100000 + SOCK_RAW = 0x4 + SOCK_RDM = 0x5 + SOCK_SEQPACKET = 0x6 + SOCK_STREAM = 0x2 + SOCK_TYPE_MASK = 0xffff + SOL_FILTER = 0xfffc + SOL_PACKET = 0xfffd + SOL_ROUTE = 0xfffe + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ALL = 0x3f + SO_ALLZONES = 0x1014 + SO_ANON_MLP = 0x100a + SO_ATTACH_FILTER = 0x40000001 + SO_BAND = 0x4000 + SO_BROADCAST = 0x20 + SO_COPYOPT = 0x80000 + SO_DEBUG = 0x1 + SO_DELIM = 0x8000 + SO_DETACH_FILTER = 0x40000002 + SO_DGRAM_ERRIND = 0x200 + SO_DOMAIN = 0x100c + SO_DONTLINGER = -0x81 + SO_DONTROUTE = 0x10 + SO_ERROPT = 0x40000 + SO_ERROR = 0x1007 + SO_EXCLBIND = 0x1015 + SO_HIWAT = 0x10 + SO_ISNTTY = 0x800 + SO_ISTTY = 0x400 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOWAT = 0x20 + SO_MAC_EXEMPT = 0x100b + SO_MAC_IMPLICIT = 0x1016 + SO_MAXBLK = 0x100000 + SO_MAXPSZ = 0x8 + SO_MINPSZ = 0x4 + SO_MREADOFF = 0x80 + SO_MREADON = 0x40 + SO_NDELOFF = 0x200 + SO_NDELON = 0x100 + SO_NODELIM = 0x10000 + SO_OOBINLINE = 0x100 + SO_PROTOTYPE = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVPSH = 0x100d + SO_RCVTIMEO = 0x1006 + SO_READOPT = 0x1 + SO_RECVUCRED = 0x400 + SO_REUSEADDR = 0x4 + SO_SECATTR = 0x1011 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STRHOLD = 0x20000 + SO_TAIL = 0x200000 + SO_TIMESTAMP = 0x1013 + SO_TONSTOP = 0x2000 + SO_TOSTOP = 0x1000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_VRRP = 0x1017 + SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_ABORT_THRESHOLD = 0x11 + TCP_ANONPRIVBIND = 0x20 + TCP_CONGESTION = 0x25 + TCP_CONN_ABORT_THRESHOLD = 0x13 + TCP_CONN_NOTIFY_THRESHOLD = 0x12 + TCP_CORK = 0x18 + TCP_EXCLBIND = 0x21 + TCP_INIT_CWND = 0x15 + TCP_KEEPALIVE = 0x8 + TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17 + TCP_KEEPALIVE_THRESHOLD = 0x16 + TCP_KEEPCNT = 0x23 + TCP_KEEPIDLE = 0x22 + TCP_KEEPINTVL = 0x24 + TCP_LINGER2 = 0x1c + TCP_MAXSEG = 0x2 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOTIFY_THRESHOLD = 0x10 + TCP_RECVDSTADDR = 0x14 + TCP_RTO_INITIAL = 0x19 + TCP_RTO_MAX = 0x1b + TCP_RTO_MIN = 0x1a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETSF = 0x5410 + TCSETSW = 0x540f + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOC = 0x5400 + TIOCCBRK = 0x747a + TIOCCDTR = 0x7478 + TIOCCILOOP = 0x746c + TIOCEXCL = 0x740d + TIOCFLUSH = 0x7410 + TIOCGETC = 0x7412 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x7414 + TIOCGPPS = 0x547d + TIOCGPPSEV = 0x547f + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5469 + TIOCGWINSZ = 0x5468 + TIOCHPCL = 0x7402 + TIOCKBOF = 0x5409 + TIOCKBON = 0x5408 + TIOCLBIC = 0x747e + TIOCLBIS = 0x747f + TIOCLGET = 0x747c + TIOCLSET = 0x747d + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMSET = 0x741a + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x7471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7473 + TIOCREMOTE = 0x741e + TIOCSBRK = 0x747b + TIOCSCTTY = 0x7484 + TIOCSDTR = 0x7479 + TIOCSETC = 0x7411 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIGNAL = 0x741f + TIOCSILOOP = 0x746d + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x7415 + TIOCSPPS = 0x547e + TIOCSSOFTCAR = 0x546a + TIOCSTART = 0x746e + TIOCSTI = 0x7417 + TIOCSTOP = 0x746f + TIOCSWINSZ = 0x5467 + TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCEOF = 0x8 + VCEOL = 0x9 + VDISCARD = 0xd + VDSUSP = 0xb + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VERASE2 = 0x11 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTATUS = 0x10 + VSTOP = 0x9 + VSUSP = 0xa + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WCONTFLG = 0xffff + WCONTINUED = 0x8 + WCOREFLG = 0x80 + WEXITED = 0x1 + WNOHANG = 0x40 + WNOWAIT = 0x80 + WOPTMASK = 0xcf + WRAP = 0x20000 + WSIGMASK = 0x7f + WSTOPFLG = 0x7f + WSTOPPED = 0x4 + WTRAPPED = 0x2 + WUNTRACED = 0x4 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x39) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x2f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x31) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOCKUNMAPPED = syscall.Errno(0x48) + ELOOP = syscall.Errno(0x5a) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTACTIVE = syscall.Errno(0x49) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTRECOVERABLE = syscall.Errno(0x3b) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x30) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0x3a) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMOTE = syscall.Errno(0x42) + ERESTART = syscall.Errno(0x5b) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCANCEL = syscall.Signal(0x24) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGFREEZE = syscall.Signal(0x22) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x29) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGJVM1 = syscall.Signal(0x27) + SIGJVM2 = syscall.Signal(0x28) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x25) + SIGLWP = syscall.Signal(0x21) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHAW = syscall.Signal(0x23) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWAITING = syscall.Signal(0x20) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) + SIGXRES = syscall.Signal(0x26) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock situation detected/avoided"}, + {46, "ENOLCK", "no record locks available"}, + {47, "ECANCELED", "operation canceled"}, + {48, "ENOTSUP", "operation not supported"}, + {49, "EDQUOT", "disc quota exceeded"}, + {50, "EBADE", "bad exchange descriptor"}, + {51, "EBADR", "bad request descriptor"}, + {52, "EXFULL", "message tables full"}, + {53, "ENOANO", "anode table overflow"}, + {54, "EBADRQC", "bad request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock"}, + {57, "EBFONT", "bad font file format"}, + {58, "EOWNERDEAD", "owner of the lock died"}, + {59, "ENOTRECOVERABLE", "lock is not recoverable"}, + {60, "ENOSTR", "not a stream device"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of stream resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "ELOCKUNMAPPED", "locked lock was unmapped "}, + {73, "ENOTACTIVE", "facility is not active"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "not a data message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"}, + {87, "ELIBEXEC", "can not exec a shared library directly"}, + {88, "EILSEQ", "illegal byte sequence"}, + {89, "ENOSYS", "operation not applicable"}, + {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"}, + {91, "ERESTART", "error 91"}, + {92, "ESTRPIPE", "error 92"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "option not supported by protocol"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "EOPNOTSUPP", "operation not supported on transport endpoint"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection because of reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {143, "ESHUTDOWN", "cannot send after socket shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale NFS file handle"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal Instruction"}, + {5, "SIGTRAP", "trace/Breakpoint Trap"}, + {6, "SIGABRT", "abort"}, + {7, "SIGEMT", "emulation Trap"}, + {8, "SIGFPE", "arithmetic Exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus Error"}, + {11, "SIGSEGV", "segmentation Fault"}, + {12, "SIGSYS", "bad System Call"}, + {13, "SIGPIPE", "broken Pipe"}, + {14, "SIGALRM", "alarm Clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user Signal 1"}, + {17, "SIGUSR2", "user Signal 2"}, + {18, "SIGCHLD", "child Status Changed"}, + {19, "SIGPWR", "power-Fail/Restart"}, + {20, "SIGWINCH", "window Size Change"}, + {21, "SIGURG", "urgent Socket Condition"}, + {22, "SIGIO", "pollable Event"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped (user)"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual Timer Expired"}, + {29, "SIGPROF", "profiling Timer Expired"}, + {30, "SIGXCPU", "cpu Limit Exceeded"}, + {31, "SIGXFSZ", "file Size Limit Exceeded"}, + {32, "SIGWAITING", "no runnable lwp"}, + {33, "SIGLWP", "inter-lwp signal"}, + {34, "SIGFREEZE", "checkpoint Freeze"}, + {35, "SIGTHAW", "checkpoint Thaw"}, + {36, "SIGCANCEL", "thread Cancellation"}, + {37, "SIGLOST", "resource Lost"}, + {38, "SIGXRES", "resource Control Exceeded"}, + {39, "SIGJVM1", "reserved for JVM 1"}, + {40, "SIGJVM2", "reserved for JVM 2"}, + {41, "SIGINFO", "information Request"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go new file mode 100644 index 0000000..1ec2b14 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -0,0 +1,990 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Hand edited based on zerrors_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + BRKINT = 0x0001 + CLOCAL = 0x1 + CLOCK_MONOTONIC = 0x1 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLONE_NEWIPC = 0x08000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x00020000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUTS = 0x04000000 + CLONE_PARENT = 0x00008000 + CS8 = 0x0030 + CSIZE = 0x0030 + ECHO = 0x00000008 + ECHONL = 0x00000001 + EFD_SEMAPHORE = 0x00002000 + EFD_CLOEXEC = 0x00001000 + EFD_NONBLOCK = 0x00000004 + EPOLL_CLOEXEC = 0x00001000 + EPOLL_CTL_ADD = 0 + EPOLL_CTL_MOD = 1 + EPOLL_CTL_DEL = 2 + EPOLLRDNORM = 0x0001 + EPOLLRDBAND = 0x0002 + EPOLLIN = 0x0003 + EPOLLOUT = 0x0004 + EPOLLWRBAND = 0x0008 + EPOLLPRI = 0x0010 + EPOLLERR = 0x0020 + EPOLLHUP = 0x0040 + EPOLLEXCLUSIVE = 0x20000000 + EPOLLONESHOT = 0x40000000 + FD_CLOEXEC = 0x01 + FD_CLOFORK = 0x02 + FD_SETSIZE = 0x800 + FNDELAY = 0x04 + F_CLOSFD = 9 + F_CONTROL_CVT = 13 + F_DUPFD = 0 + F_DUPFD2 = 8 + F_GETFD = 1 + F_GETFL = 259 + F_GETLK = 5 + F_GETOWN = 10 + F_OK = 0x0 + F_RDLCK = 1 + F_SETFD = 2 + F_SETFL = 4 + F_SETLK = 6 + F_SETLKW = 7 + F_SETOWN = 11 + F_SETTAG = 12 + F_UNLCK = 3 + F_WRLCK = 2 + FSTYPE_ZFS = 0xe9 //"Z" + FSTYPE_HFS = 0xc8 //"H" + FSTYPE_NFS = 0xd5 //"N" + FSTYPE_TFS = 0xe3 //"T" + FSTYPE_AUTOMOUNT = 0xc1 //"A" + GRND_NONBLOCK = 1 + GRND_RANDOM = 2 + HUPCL = 0x0100 // Hang up on last close + IN_CLOEXEC = 0x00001000 + IN_NONBLOCK = 0x00000004 + IN_ACCESS = 0x00000001 + IN_MODIFY = 0x00000002 + IN_ATTRIB = 0x00000004 + IN_CLOSE_WRITE = 0x00000008 + IN_CLOSE_NOWRITE = 0x00000010 + IN_OPEN = 0x00000020 + IN_MOVED_FROM = 0x00000040 + IN_MOVED_TO = 0x00000080 + IN_CREATE = 0x00000100 + IN_DELETE = 0x00000200 + IN_DELETE_SELF = 0x00000400 + IN_MOVE_SELF = 0x00000800 + IN_UNMOUNT = 0x00002000 + IN_Q_OVERFLOW = 0x00004000 + IN_IGNORED = 0x00008000 + IN_CLOSE = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) + IN_MOVE = (IN_MOVED_FROM | IN_MOVED_TO) + IN_ALL_EVENTS = (IN_ACCESS | IN_MODIFY | IN_ATTRIB | + IN_CLOSE | IN_OPEN | IN_MOVE | + IN_CREATE | IN_DELETE | IN_DELETE_SELF | + IN_MOVE_SELF) + IN_ONLYDIR = 0x01000000 + IN_DONT_FOLLOW = 0x02000000 + IN_EXCL_UNLINK = 0x04000000 + IN_MASK_CREATE = 0x10000000 + IN_MASK_ADD = 0x20000000 + IN_ISDIR = 0x40000000 + IN_ONESHOT = 0x80000000 + IP6F_MORE_FRAG = 0x0001 + IP6F_OFF_MASK = 0xfff8 + IP6F_RESERVED_MASK = 0x0006 + IP6OPT_JUMBO = 0xc2 + IP6OPT_JUMBO_LEN = 6 + IP6OPT_MUTABLE = 0x20 + IP6OPT_NSAP_ADDR = 0xc3 + IP6OPT_PAD1 = 0x00 + IP6OPT_PADN = 0x01 + IP6OPT_ROUTER_ALERT = 0x05 + IP6OPT_TUNNEL_LIMIT = 0x04 + IP6OPT_TYPE_DISCARD = 0x40 + IP6OPT_TYPE_FORCEICMP = 0x80 + IP6OPT_TYPE_ICMP = 0xc0 + IP6OPT_TYPE_SKIP = 0x00 + IP6_ALERT_AN = 0x0002 + IP6_ALERT_MLD = 0x0000 + IP6_ALERT_RSVP = 0x0001 + IPPORT_RESERVED = 1024 + IPPORT_USERRESERVED = 5000 + IPPROTO_AH = 51 + SOL_AH = 51 + IPPROTO_DSTOPTS = 60 + SOL_DSTOPTS = 60 + IPPROTO_EGP = 8 + SOL_EGP = 8 + IPPROTO_ESP = 50 + SOL_ESP = 50 + IPPROTO_FRAGMENT = 44 + SOL_FRAGMENT = 44 + IPPROTO_GGP = 2 + SOL_GGP = 2 + IPPROTO_HOPOPTS = 0 + SOL_HOPOPTS = 0 + IPPROTO_ICMP = 1 + SOL_ICMP = 1 + IPPROTO_ICMPV6 = 58 + SOL_ICMPV6 = 58 + IPPROTO_IDP = 22 + SOL_IDP = 22 + IPPROTO_IP = 0 + SOL_IP = 0 + IPPROTO_IPV6 = 41 + SOL_IPV6 = 41 + IPPROTO_MAX = 256 + SOL_MAX = 256 + IPPROTO_NONE = 59 + SOL_NONE = 59 + IPPROTO_PUP = 12 + SOL_PUP = 12 + IPPROTO_RAW = 255 + SOL_RAW = 255 + IPPROTO_ROUTING = 43 + SOL_ROUTING = 43 + IPPROTO_TCP = 6 + SOL_TCP = 6 + IPPROTO_UDP = 17 + SOL_UDP = 17 + IPV6_ADDR_PREFERENCES = 32 + IPV6_CHECKSUM = 19 + IPV6_DONTFRAG = 29 + IPV6_DSTOPTS = 23 + IPV6_HOPLIMIT = 11 + IPV6_HOPOPTS = 22 + IPV6_JOIN_GROUP = 5 + IPV6_LEAVE_GROUP = 6 + IPV6_MULTICAST_HOPS = 9 + IPV6_MULTICAST_IF = 7 + IPV6_MULTICAST_LOOP = 4 + IPV6_NEXTHOP = 20 + IPV6_PATHMTU = 12 + IPV6_PKTINFO = 13 + IPV6_PREFER_SRC_CGA = 0x10 + IPV6_PREFER_SRC_COA = 0x02 + IPV6_PREFER_SRC_HOME = 0x01 + IPV6_PREFER_SRC_NONCGA = 0x20 + IPV6_PREFER_SRC_PUBLIC = 0x08 + IPV6_PREFER_SRC_TMP = 0x04 + IPV6_RECVDSTOPTS = 28 + IPV6_RECVHOPLIMIT = 14 + IPV6_RECVHOPOPTS = 26 + IPV6_RECVPATHMTU = 16 + IPV6_RECVPKTINFO = 15 + IPV6_RECVRTHDR = 25 + IPV6_RECVTCLASS = 31 + IPV6_RTHDR = 21 + IPV6_RTHDRDSTOPTS = 24 + IPV6_RTHDR_TYPE_0 = 0 + IPV6_TCLASS = 30 + IPV6_UNICAST_HOPS = 3 + IPV6_USE_MIN_MTU = 18 + IPV6_V6ONLY = 10 + IP_ADD_MEMBERSHIP = 5 + IP_ADD_SOURCE_MEMBERSHIP = 12 + IP_BLOCK_SOURCE = 10 + IP_DEFAULT_MULTICAST_LOOP = 1 + IP_DEFAULT_MULTICAST_TTL = 1 + IP_DROP_MEMBERSHIP = 6 + IP_DROP_SOURCE_MEMBERSHIP = 13 + IP_MAX_MEMBERSHIPS = 20 + IP_MULTICAST_IF = 7 + IP_MULTICAST_LOOP = 4 + IP_MULTICAST_TTL = 3 + IP_OPTIONS = 1 + IP_PKTINFO = 101 + IP_RECVPKTINFO = 102 + IP_TOS = 2 + IP_TTL = 14 + IP_UNBLOCK_SOURCE = 11 + ICMP6_FILTER = 1 + MCAST_INCLUDE = 0 + MCAST_EXCLUDE = 1 + MCAST_JOIN_GROUP = 40 + MCAST_LEAVE_GROUP = 41 + MCAST_JOIN_SOURCE_GROUP = 42 + MCAST_LEAVE_SOURCE_GROUP = 43 + MCAST_BLOCK_SOURCE = 44 + MCAST_UNBLOCK_SOURCE = 46 + ICANON = 0x0010 + ICRNL = 0x0002 + IEXTEN = 0x0020 + IGNBRK = 0x0004 + IGNCR = 0x0008 + INLCR = 0x0020 + ISIG = 0x0040 + ISTRIP = 0x0080 + IXON = 0x0200 + IXOFF = 0x0100 + LOCK_SH = 0x1 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_UN = 0x8 + POLLIN = 0x0003 + POLLOUT = 0x0004 + POLLPRI = 0x0010 + POLLERR = 0x0020 + POLLHUP = 0x0040 + POLLNVAL = 0x0080 + PROT_READ = 0x1 // mmap - page can be read + PROT_WRITE = 0x2 // page can be written + PROT_NONE = 0x4 // can't be accessed + PROT_EXEC = 0x8 // can be executed + MAP_PRIVATE = 0x1 // changes are private + MAP_SHARED = 0x2 // changes are shared + MAP_FIXED = 0x4 // place exactly + __MAP_MEGA = 0x8 + __MAP_64 = 0x10 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MS_SYNC = 0x1 // msync - synchronous writes + MS_ASYNC = 0x2 // asynchronous writes + MS_INVALIDATE = 0x4 // invalidate mappings + MS_BIND = 0x00001000 + MS_MOVE = 0x00002000 + MS_NOSUID = 0x00000002 + MS_PRIVATE = 0x00040000 + MS_REC = 0x00004000 + MS_REMOUNT = 0x00008000 + MS_RDONLY = 0x00000001 + MS_UNBINDABLE = 0x00020000 + MNT_DETACH = 0x00000004 + ZOSDSFS_SUPER_MAGIC = 0x44534653 // zOS DSFS + NFS_SUPER_MAGIC = 0x6969 // NFS + NSFS_MAGIC = 0x6e736673 // PROCNS + PROC_SUPER_MAGIC = 0x9fa0 // proc FS + ZOSTFS_SUPER_MAGIC = 0x544653 // zOS TFS + ZOSUFS_SUPER_MAGIC = 0x554653 // zOS UFS + ZOSZFS_SUPER_MAGIC = 0x5A4653 // zOS ZFS + MTM_RDONLY = 0x80000000 + MTM_RDWR = 0x40000000 + MTM_UMOUNT = 0x10000000 + MTM_IMMED = 0x08000000 + MTM_FORCE = 0x04000000 + MTM_DRAIN = 0x02000000 + MTM_RESET = 0x01000000 + MTM_SAMEMODE = 0x00100000 + MTM_UNQSEFORCE = 0x00040000 + MTM_NOSUID = 0x00000400 + MTM_SYNCHONLY = 0x00000200 + MTM_REMOUNT = 0x00000100 + MTM_NOSECURITY = 0x00000080 + NFDBITS = 0x20 + ONLRET = 0x0020 // NL performs CR function + O_ACCMODE = 0x03 + O_APPEND = 0x08 + O_ASYNCSIG = 0x0200 + O_CREAT = 0x80 + O_DIRECT = 0x00002000 + O_NOFOLLOW = 0x00004000 + O_DIRECTORY = 0x00008000 + O_PATH = 0x00080000 + O_CLOEXEC = 0x00001000 + O_EXCL = 0x40 + O_GETFL = 0x0F + O_LARGEFILE = 0x0400 + O_NDELAY = 0x4 + O_NONBLOCK = 0x04 + O_RDONLY = 0x02 + O_RDWR = 0x03 + O_SYNC = 0x0100 + O_TRUNC = 0x10 + O_WRONLY = 0x01 + O_NOCTTY = 0x20 + OPOST = 0x0001 + ONLCR = 0x0004 + PARENB = 0x0200 + PARMRK = 0x0400 + QUERYCVT = 3 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 // RUSAGE_THREAD unsupported on z/OS + SEEK_CUR = 1 + SEEK_END = 2 + SEEK_SET = 0 + SETAUTOCVTALL = 5 + SETAUTOCVTON = 2 + SETCVTALL = 4 + SETCVTOFF = 0 + SETCVTON = 1 + AF_APPLETALK = 16 + AF_CCITT = 10 + AF_CHAOS = 5 + AF_DATAKIT = 9 + AF_DLI = 13 + AF_ECMA = 8 + AF_HYLINK = 15 + AF_IMPLINK = 3 + AF_INET = 2 + AF_INET6 = 19 + AF_INTF = 20 + AF_IUCV = 17 + AF_LAT = 14 + AF_LINK = 18 + AF_LOCAL = AF_UNIX // AF_LOCAL is an alias for AF_UNIX + AF_MAX = 30 + AF_NBS = 7 + AF_NDD = 23 + AF_NETWARE = 22 + AF_NS = 6 + AF_PUP = 4 + AF_RIF = 21 + AF_ROUTE = 20 + AF_SNA = 11 + AF_UNIX = 1 + AF_UNSPEC = 0 + IBMTCP_IMAGE = 1 + MSG_ACK_EXPECTED = 0x10 + MSG_ACK_GEN = 0x40 + MSG_ACK_TIMEOUT = 0x20 + MSG_CONNTERM = 0x80 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOF = 0x8000 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 16 + MSG_NONBLOCK = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + PRIO_PROCESS = 1 + PRIO_PGRP = 2 + PRIO_USER = 3 + RLIMIT_CPU = 0 + RLIMIT_FSIZE = 1 + RLIMIT_DATA = 2 + RLIMIT_STACK = 3 + RLIMIT_CORE = 4 + RLIMIT_AS = 5 + RLIMIT_NOFILE = 6 + RLIMIT_MEMLIMIT = 7 + RLIMIT_MEMLOCK = 0x8 + RLIM_INFINITY = 2147483647 + SCHED_FIFO = 0x2 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x01 + SF_CLOSE = 0x00000002 + SF_REUSE = 0x00000001 + SHM_RND = 0x2 + SHM_RDONLY = 0x1 + SHMLBA = 0x1000 + IPC_STAT = 0x3 + IPC_SET = 0x2 + IPC_RMID = 0x1 + IPC_PRIVATE = 0x0 + IPC_CREAT = 0x1000000 + __IPC_MEGA = 0x4000000 + __IPC_SHAREAS = 0x20000000 + __IPC_BELOWBAR = 0x10000000 + IPC_EXCL = 0x2000000 + __IPC_GIGA = 0x8000000 + SHUT_RD = 0 + SHUT_RDWR = 2 + SHUT_WR = 1 + SOCK_CLOEXEC = 0x00001000 + SOCK_CONN_DGRAM = 6 + SOCK_DGRAM = 2 + SOCK_NONBLOCK = 0x800 + SOCK_RAW = 3 + SOCK_RDM = 4 + SOCK_SEQPACKET = 5 + SOCK_STREAM = 1 + SOL_SOCKET = 0xffff + SOMAXCONN = 10 + SO_ACCEPTCONN = 0x0002 + SO_ACCEPTECONNABORTED = 0x0006 + SO_ACKNOW = 0x7700 + SO_BROADCAST = 0x0020 + SO_BULKMODE = 0x8000 + SO_CKSUMRECV = 0x0800 + SO_CLOSE = 0x01 + SO_CLUSTERCONNTYPE = 0x00004001 + SO_CLUSTERCONNTYPE_INTERNAL = 8 + SO_CLUSTERCONNTYPE_NOCONN = 0 + SO_CLUSTERCONNTYPE_NONE = 1 + SO_CLUSTERCONNTYPE_SAME_CLUSTER = 2 + SO_CLUSTERCONNTYPE_SAME_IMAGE = 4 + SO_DEBUG = 0x0001 + SO_DONTROUTE = 0x0010 + SO_ERROR = 0x1007 + SO_IGNOREINCOMINGPUSH = 0x1 + SO_IGNORESOURCEVIPA = 0x0002 + SO_KEEPALIVE = 0x0008 + SO_LINGER = 0x0080 + SO_NONBLOCKLOCAL = 0x8001 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x0100 + SO_OPTACK = 0x8004 + SO_OPTMSS = 0x8003 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x0004 + SO_REUSEPORT = 0x0200 + SO_SECINFO = 0x00004002 + SO_SET = 0x0200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TYPE = 0x1008 + SO_UNSET = 0x0400 + SO_USELOOPBACK = 0x0040 + SO_USE_IFBUFS = 0x0400 + S_ISUID = 0x0800 + S_ISGID = 0x0400 + S_ISVTX = 0x0200 + S_IRUSR = 0x0100 + S_IWUSR = 0x0080 + S_IXUSR = 0x0040 + S_IRWXU = 0x01C0 + S_IRGRP = 0x0020 + S_IWGRP = 0x0010 + S_IXGRP = 0x0008 + S_IRWXG = 0x0038 + S_IROTH = 0x0004 + S_IWOTH = 0x0002 + S_IXOTH = 0x0001 + S_IRWXO = 0x0007 + S_IREAD = S_IRUSR + S_IWRITE = S_IWUSR + S_IEXEC = S_IXUSR + S_IFDIR = 0x01000000 + S_IFCHR = 0x02000000 + S_IFREG = 0x03000000 + S_IFFIFO = 0x04000000 + S_IFIFO = 0x04000000 + S_IFLNK = 0x05000000 + S_IFBLK = 0x06000000 + S_IFSOCK = 0x07000000 + S_IFVMEXTL = 0xFE000000 + S_IFVMEXTL_EXEC = 0x00010000 + S_IFVMEXTL_DATA = 0x00020000 + S_IFVMEXTL_MEL = 0x00030000 + S_IFEXTL = 0x00000001 + S_IFPROGCTL = 0x00000002 + S_IFAPFCTL = 0x00000004 + S_IFNOSHARE = 0x00000008 + S_IFSHARELIB = 0x00000010 + S_IFMT = 0xFF000000 + S_IFMST = 0x00FF0000 + TCP_KEEPALIVE = 0x8 + TCP_NODELAY = 0x1 + TIOCGWINSZ = 0x4008a368 + TIOCSWINSZ = 0x8008a367 + TIOCSBRK = 0x2000a77b + TIOCCBRK = 0x2000a77a + TIOCSTI = 0x8001a772 + TIOCGPGRP = 0x4004a777 // _IOR(167, 119, int) + TCSANOW = 0 + TCSETS = 0 // equivalent to TCSANOW for tcsetattr + TCSADRAIN = 1 + TCSETSW = 1 // equivalent to TCSADRAIN for tcsetattr + TCSAFLUSH = 2 + TCSETSF = 2 // equivalent to TCSAFLUSH for tcsetattr + TCGETS = 3 // not defined in ioctl.h -- zos golang only + TCIFLUSH = 0 + TCOFLUSH = 1 + TCIOFLUSH = 2 + TCOOFF = 0 + TCOON = 1 + TCIOFF = 2 + TCION = 3 + TIOCSPGRP = 0x8004a776 + TIOCNOTTY = 0x2000a771 + TIOCEXCL = 0x2000a70d + TIOCNXCL = 0x2000a70e + TIOCGETD = 0x4004a700 + TIOCSETD = 0x8004a701 + TIOCPKT = 0x8004a770 + TIOCSTOP = 0x2000a76f + TIOCSTART = 0x2000a76e + TIOCUCNTL = 0x8004a766 + TIOCREMOTE = 0x8004a769 + TIOCMGET = 0x4004a76a + TIOCMSET = 0x8004a76d + TIOCMBIC = 0x8004a76b + TIOCMBIS = 0x8004a76c + VINTR = 0 + VQUIT = 1 + VERASE = 2 + VKILL = 3 + VEOF = 4 + VEOL = 5 + VMIN = 6 + VSTART = 7 + VSTOP = 8 + VSUSP = 9 + VTIME = 10 + WCONTINUED = 0x4 + WEXITED = 0x8 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WSTOPPED = 0x10 + WUNTRACED = 0x2 + _BPX_SWAP = 1 + _BPX_NONSWAP = 2 + MCL_CURRENT = 1 // for Linux compatibility -- no zos semantics + MCL_FUTURE = 2 // for Linux compatibility -- no zos semantics + MCL_ONFAULT = 3 // for Linux compatibility -- no zos semantics + MADV_NORMAL = 0 // for Linux compatibility -- no zos semantics + MADV_RANDOM = 1 // for Linux compatibility -- no zos semantics + MADV_SEQUENTIAL = 2 // for Linux compatibility -- no zos semantics + MADV_WILLNEED = 3 // for Linux compatibility -- no zos semantics + MADV_REMOVE = 4 // for Linux compatibility -- no zos semantics + MADV_DONTFORK = 5 // for Linux compatibility -- no zos semantics + MADV_DOFORK = 6 // for Linux compatibility -- no zos semantics + MADV_HWPOISON = 7 // for Linux compatibility -- no zos semantics + MADV_MERGEABLE = 8 // for Linux compatibility -- no zos semantics + MADV_UNMERGEABLE = 9 // for Linux compatibility -- no zos semantics + MADV_SOFT_OFFLINE = 10 // for Linux compatibility -- no zos semantics + MADV_HUGEPAGE = 11 // for Linux compatibility -- no zos semantics + MADV_NOHUGEPAGE = 12 // for Linux compatibility -- no zos semantics + MADV_DONTDUMP = 13 // for Linux compatibility -- no zos semantics + MADV_DODUMP = 14 // for Linux compatibility -- no zos semantics + MADV_FREE = 15 // for Linux compatibility -- no zos semantics + MADV_WIPEONFORK = 16 // for Linux compatibility -- no zos semantics + MADV_KEEPONFORK = 17 // for Linux compatibility -- no zos semantics + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + P_PID = 0 + P_PGID = 1 + P_ALL = 2 + PR_SET_NAME = 15 + PR_GET_NAME = 16 + PR_SET_NO_NEW_PRIVS = 38 + PR_GET_NO_NEW_PRIVS = 39 + PR_SET_DUMPABLE = 4 + PR_GET_DUMPABLE = 3 + PR_SET_PDEATHSIG = 1 + PR_GET_PDEATHSIG = 2 + PR_SET_CHILD_SUBREAPER = 36 + PR_GET_CHILD_SUBREAPER = 37 + AT_FDCWD = -100 + AT_EACCESS = 0x200 + AT_EMPTY_PATH = 0x1000 + AT_REMOVEDIR = 0x200 + RENAME_NOREPLACE = 1 << 0 + ST_RDONLY = 1 + ST_NOSUID = 2 +) + +const ( + EDOM = Errno(1) + ERANGE = Errno(2) + EACCES = Errno(111) + EAGAIN = Errno(112) + EBADF = Errno(113) + EBUSY = Errno(114) + ECHILD = Errno(115) + EDEADLK = Errno(116) + EEXIST = Errno(117) + EFAULT = Errno(118) + EFBIG = Errno(119) + EINTR = Errno(120) + EINVAL = Errno(121) + EIO = Errno(122) + EISDIR = Errno(123) + EMFILE = Errno(124) + EMLINK = Errno(125) + ENAMETOOLONG = Errno(126) + ENFILE = Errno(127) + ENOATTR = Errno(265) + ENODEV = Errno(128) + ENOENT = Errno(129) + ENOEXEC = Errno(130) + ENOLCK = Errno(131) + ENOMEM = Errno(132) + ENOSPC = Errno(133) + ENOSYS = Errno(134) + ENOTDIR = Errno(135) + ENOTEMPTY = Errno(136) + ENOTTY = Errno(137) + ENXIO = Errno(138) + EPERM = Errno(139) + EPIPE = Errno(140) + EROFS = Errno(141) + ESPIPE = Errno(142) + ESRCH = Errno(143) + EXDEV = Errno(144) + E2BIG = Errno(145) + ELOOP = Errno(146) + EILSEQ = Errno(147) + ENODATA = Errno(148) + EOVERFLOW = Errno(149) + EMVSNOTUP = Errno(150) + ECMSSTORAGE = Errno(151) + EMVSDYNALC = Errno(151) + EMVSCVAF = Errno(152) + EMVSCATLG = Errno(153) + ECMSINITIAL = Errno(156) + EMVSINITIAL = Errno(156) + ECMSERR = Errno(157) + EMVSERR = Errno(157) + EMVSPARM = Errno(158) + ECMSPFSFILE = Errno(159) + EMVSPFSFILE = Errno(159) + EMVSBADCHAR = Errno(160) + ECMSPFSPERM = Errno(162) + EMVSPFSPERM = Errno(162) + EMVSSAFEXTRERR = Errno(163) + EMVSSAF2ERR = Errno(164) + EMVSTODNOTSET = Errno(165) + EMVSPATHOPTS = Errno(166) + EMVSNORTL = Errno(167) + EMVSEXPIRE = Errno(168) + EMVSPASSWORD = Errno(169) + EMVSWLMERROR = Errno(170) + EMVSCPLERROR = Errno(171) + EMVSARMERROR = Errno(172) + ELENOFORK = Errno(200) + ELEMSGERR = Errno(201) + EFPMASKINV = Errno(202) + EFPMODEINV = Errno(203) + EBUFLEN = Errno(227) + EEXTLINK = Errno(228) + ENODD = Errno(229) + ECMSESMERR = Errno(230) + ECPERR = Errno(231) + ELEMULTITHREAD = Errno(232) + ELEFENCE = Errno(244) + EBADDATA = Errno(245) + EUNKNOWN = Errno(246) + ENOTSUP = Errno(247) + EBADNAME = Errno(248) + ENOTSAFE = Errno(249) + ELEMULTITHREADFORK = Errno(257) + ECUNNOENV = Errno(258) + ECUNNOCONV = Errno(259) + ECUNNOTALIGNED = Errno(260) + ECUNERR = Errno(262) + EIBMBADCALL = Errno(1000) + EIBMBADPARM = Errno(1001) + EIBMSOCKOUTOFRANGE = Errno(1002) + EIBMSOCKINUSE = Errno(1003) + EIBMIUCVERR = Errno(1004) + EOFFLOADboxERROR = Errno(1005) + EOFFLOADboxRESTART = Errno(1006) + EOFFLOADboxDOWN = Errno(1007) + EIBMCONFLICT = Errno(1008) + EIBMCANCELLED = Errno(1009) + EIBMBADTCPNAME = Errno(1011) + ENOTBLK = Errno(1100) + ETXTBSY = Errno(1101) + EWOULDBLOCK = Errno(1102) + EINPROGRESS = Errno(1103) + EALREADY = Errno(1104) + ENOTSOCK = Errno(1105) + EDESTADDRREQ = Errno(1106) + EMSGSIZE = Errno(1107) + EPROTOTYPE = Errno(1108) + ENOPROTOOPT = Errno(1109) + EPROTONOSUPPORT = Errno(1110) + ESOCKTNOSUPPORT = Errno(1111) + EOPNOTSUPP = Errno(1112) + EPFNOSUPPORT = Errno(1113) + EAFNOSUPPORT = Errno(1114) + EADDRINUSE = Errno(1115) + EADDRNOTAVAIL = Errno(1116) + ENETDOWN = Errno(1117) + ENETUNREACH = Errno(1118) + ENETRESET = Errno(1119) + ECONNABORTED = Errno(1120) + ECONNRESET = Errno(1121) + ENOBUFS = Errno(1122) + EISCONN = Errno(1123) + ENOTCONN = Errno(1124) + ESHUTDOWN = Errno(1125) + ETOOMANYREFS = Errno(1126) + ETIMEDOUT = Errno(1127) + ECONNREFUSED = Errno(1128) + EHOSTDOWN = Errno(1129) + EHOSTUNREACH = Errno(1130) + EPROCLIM = Errno(1131) + EUSERS = Errno(1132) + EDQUOT = Errno(1133) + ESTALE = Errno(1134) + EREMOTE = Errno(1135) + ENOSTR = Errno(1136) + ETIME = Errno(1137) + ENOSR = Errno(1138) + ENOMSG = Errno(1139) + EBADMSG = Errno(1140) + EIDRM = Errno(1141) + ENONET = Errno(1142) + ERREMOTE = Errno(1143) + ENOLINK = Errno(1144) + EADV = Errno(1145) + ESRMNT = Errno(1146) + ECOMM = Errno(1147) + EPROTO = Errno(1148) + EMULTIHOP = Errno(1149) + EDOTDOT = Errno(1150) + EREMCHG = Errno(1151) + ECANCELED = Errno(1152) + EINTRNODATA = Errno(1159) + ENOREUSE = Errno(1160) + ENOMOVE = Errno(1161) +) + +// Signals +const ( + SIGHUP = Signal(1) + SIGINT = Signal(2) + SIGABRT = Signal(3) + SIGILL = Signal(4) + SIGPOLL = Signal(5) + SIGURG = Signal(6) + SIGSTOP = Signal(7) + SIGFPE = Signal(8) + SIGKILL = Signal(9) + SIGBUS = Signal(10) + SIGSEGV = Signal(11) + SIGSYS = Signal(12) + SIGPIPE = Signal(13) + SIGALRM = Signal(14) + SIGTERM = Signal(15) + SIGUSR1 = Signal(16) + SIGUSR2 = Signal(17) + SIGABND = Signal(18) + SIGCONT = Signal(19) + SIGCHLD = Signal(20) + SIGTTIN = Signal(21) + SIGTTOU = Signal(22) + SIGIO = Signal(23) + SIGQUIT = Signal(24) + SIGTSTP = Signal(25) + SIGTRAP = Signal(26) + SIGIOERR = Signal(27) + SIGWINCH = Signal(28) + SIGXCPU = Signal(29) + SIGXFSZ = Signal(30) + SIGVTALRM = Signal(31) + SIGPROF = Signal(32) + SIGDANGER = Signal(33) + SIGTHSTOP = Signal(34) + SIGTHCONT = Signal(35) + SIGTRACE = Signal(37) + SIGDCE = Signal(38) + SIGDUMP = Signal(39) +) + +// Error table +var errorList = [...]struct { + num Errno + name string + desc string +}{ + {1, "EDC5001I", "A domain error occurred."}, + {2, "EDC5002I", "A range error occurred."}, + {111, "EDC5111I", "Permission denied."}, + {112, "EDC5112I", "Resource temporarily unavailable."}, + {113, "EDC5113I", "Bad file descriptor."}, + {114, "EDC5114I", "Resource busy."}, + {115, "EDC5115I", "No child processes."}, + {116, "EDC5116I", "Resource deadlock avoided."}, + {117, "EDC5117I", "File exists."}, + {118, "EDC5118I", "Incorrect address."}, + {119, "EDC5119I", "File too large."}, + {120, "EDC5120I", "Interrupted function call."}, + {121, "EDC5121I", "Invalid argument."}, + {122, "EDC5122I", "Input/output error."}, + {123, "EDC5123I", "Is a directory."}, + {124, "EDC5124I", "Too many open files."}, + {125, "EDC5125I", "Too many links."}, + {126, "EDC5126I", "Filename too long."}, + {127, "EDC5127I", "Too many open files in system."}, + {128, "EDC5128I", "No such device."}, + {129, "EDC5129I", "No such file or directory."}, + {130, "EDC5130I", "Exec format error."}, + {131, "EDC5131I", "No locks available."}, + {132, "EDC5132I", "Not enough memory."}, + {133, "EDC5133I", "No space left on device."}, + {134, "EDC5134I", "Function not implemented."}, + {135, "EDC5135I", "Not a directory."}, + {136, "EDC5136I", "Directory not empty."}, + {137, "EDC5137I", "Inappropriate I/O control operation."}, + {138, "EDC5138I", "No such device or address."}, + {139, "EDC5139I", "Operation not permitted."}, + {140, "EDC5140I", "Broken pipe."}, + {141, "EDC5141I", "Read-only file system."}, + {142, "EDC5142I", "Invalid seek."}, + {143, "EDC5143I", "No such process."}, + {144, "EDC5144I", "Improper link."}, + {145, "EDC5145I", "The parameter list is too long, or the message to receive was too large for the buffer."}, + {146, "EDC5146I", "Too many levels of symbolic links."}, + {147, "EDC5147I", "Illegal byte sequence."}, + {148, "EDC5148I", "The named attribute or data not available."}, + {149, "EDC5149I", "Value Overflow Error."}, + {150, "EDC5150I", "UNIX System Services is not active."}, + {151, "EDC5151I", "Dynamic allocation error."}, + {152, "EDC5152I", "Common VTOC access facility (CVAF) error."}, + {153, "EDC5153I", "Catalog obtain error."}, + {156, "EDC5156I", "Process initialization error."}, + {157, "EDC5157I", "An internal error has occurred."}, + {158, "EDC5158I", "Bad parameters were passed to the service."}, + {159, "EDC5159I", "The Physical File System encountered a permanent file error."}, + {160, "EDC5160I", "Bad character in environment variable name."}, + {162, "EDC5162I", "The Physical File System encountered a system error."}, + {163, "EDC5163I", "SAF/RACF extract error."}, + {164, "EDC5164I", "SAF/RACF error."}, + {165, "EDC5165I", "System TOD clock not set."}, + {166, "EDC5166I", "Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement."}, + {167, "EDC5167I", "Access to the UNIX System Services version of the C RTL is denied."}, + {168, "EDC5168I", "Password has expired."}, + {169, "EDC5169I", "Password is invalid."}, + {170, "EDC5170I", "An error was encountered with WLM."}, + {171, "EDC5171I", "An error was encountered with CPL."}, + {172, "EDC5172I", "An error was encountered with Application Response Measurement (ARM) component."}, + {200, "EDC5200I", "The application contains a Language Environment member language that cannot tolerate a fork()."}, + {201, "EDC5201I", "The Language Environment message file was not found in the hierarchical file system."}, + {202, "EDC5202E", "DLL facilities are not supported under SPC environment."}, + {203, "EDC5203E", "DLL facilities are not supported under POSIX environment."}, + {227, "EDC5227I", "Buffer is not long enough to contain a path definition"}, + {228, "EDC5228I", "The file referred to is an external link"}, + {229, "EDC5229I", "No path definition for ddname in effect"}, + {230, "EDC5230I", "ESM error."}, + {231, "EDC5231I", "CP or the external security manager had an error"}, + {232, "EDC5232I", "The function failed because it was invoked from a multithread environment."}, + {244, "EDC5244I", "The program, module or DLL is not supported in this environment."}, + {245, "EDC5245I", "Data is not valid."}, + {246, "EDC5246I", "Unknown system state."}, + {247, "EDC5247I", "Operation not supported."}, + {248, "EDC5248I", "The object name specified is not correct."}, + {249, "EDC5249I", "The function is not allowed."}, + {257, "EDC5257I", "Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called."}, + {258, "EDC5258I", "A CUN_RS_NO_UNI_ENV error was issued by Unicode Services."}, + {259, "EDC5259I", "A CUN_RS_NO_CONVERSION error was issued by Unicode Services."}, + {260, "EDC5260I", "A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services."}, + {262, "EDC5262I", "An iconv() function encountered an unexpected error while using Unicode Services."}, + {265, "EDC5265I", "The named attribute not available."}, + {1000, "EDC8000I", "A bad socket-call constant was found in the IUCV header."}, + {1001, "EDC8001I", "An error was found in the IUCV header."}, + {1002, "EDC8002I", "A socket descriptor is out of range."}, + {1003, "EDC8003I", "A socket descriptor is in use."}, + {1004, "EDC8004I", "Request failed because of an IUCV error."}, + {1005, "EDC8005I", "Offload box error."}, + {1006, "EDC8006I", "Offload box restarted."}, + {1007, "EDC8007I", "Offload box down."}, + {1008, "EDC8008I", "Already a conflicting call outstanding on socket."}, + {1009, "EDC8009I", "Request cancelled using a SOCKcallCANCEL request."}, + {1011, "EDC8011I", "A name of a PFS was specified that either is not configured or is not a Sockets PFS."}, + {1100, "EDC8100I", "Block device required."}, + {1101, "EDC8101I", "Text file busy."}, + {1102, "EDC8102I", "Operation would block."}, + {1103, "EDC8103I", "Operation now in progress."}, + {1104, "EDC8104I", "Connection already in progress."}, + {1105, "EDC8105I", "Socket operation on non-socket."}, + {1106, "EDC8106I", "Destination address required."}, + {1107, "EDC8107I", "Message too long."}, + {1108, "EDC8108I", "Protocol wrong type for socket."}, + {1109, "EDC8109I", "Protocol not available."}, + {1110, "EDC8110I", "Protocol not supported."}, + {1111, "EDC8111I", "Socket type not supported."}, + {1112, "EDC8112I", "Operation not supported on socket."}, + {1113, "EDC8113I", "Protocol family not supported."}, + {1114, "EDC8114I", "Address family not supported."}, + {1115, "EDC8115I", "Address already in use."}, + {1116, "EDC8116I", "Address not available."}, + {1117, "EDC8117I", "Network is down."}, + {1118, "EDC8118I", "Network is unreachable."}, + {1119, "EDC8119I", "Network dropped connection on reset."}, + {1120, "EDC8120I", "Connection ended abnormally."}, + {1121, "EDC8121I", "Connection reset."}, + {1122, "EDC8122I", "No buffer space available."}, + {1123, "EDC8123I", "Socket already connected."}, + {1124, "EDC8124I", "Socket not connected."}, + {1125, "EDC8125I", "Can't send after socket shutdown."}, + {1126, "EDC8126I", "Too many references; can't splice."}, + {1127, "EDC8127I", "Connection timed out."}, + {1128, "EDC8128I", "Connection refused."}, + {1129, "EDC8129I", "Host is not available."}, + {1130, "EDC8130I", "Host cannot be reached."}, + {1131, "EDC8131I", "Too many processes."}, + {1132, "EDC8132I", "Too many users."}, + {1133, "EDC8133I", "Disk quota exceeded."}, + {1134, "EDC8134I", "Stale file handle."}, + {1135, "", ""}, + {1136, "EDC8136I", "File is not a STREAM."}, + {1137, "EDC8137I", "STREAMS ioctl() timeout."}, + {1138, "EDC8138I", "No STREAMS resources."}, + {1139, "EDC8139I", "The message identified by set_id and msg_id is not in the message catalog."}, + {1140, "EDC8140I", "Bad message."}, + {1141, "EDC8141I", "Identifier removed."}, + {1142, "", ""}, + {1143, "", ""}, + {1144, "EDC8144I", "The link has been severed."}, + {1145, "", ""}, + {1146, "", ""}, + {1147, "", ""}, + {1148, "EDC8148I", "Protocol error."}, + {1149, "EDC8149I", "Multihop not allowed."}, + {1150, "", ""}, + {1151, "", ""}, + {1152, "EDC8152I", "The asynchronous I/O request has been canceled."}, + {1159, "EDC8159I", "Function call was interrupted before any data was received."}, + {1160, "EDC8160I", "Socket reuse is not supported."}, + {1161, "EDC8161I", "The file system cannot currently be moved."}, +} + +// Signal table +var signalList = [...]struct { + num Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGABT", "aborted"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGPOLL", "pollable event"}, + {6, "SIGURG", "urgent I/O condition"}, + {7, "SIGSTOP", "stop process"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad argument to routine"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGABND", "abend"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGQUIT", "quit"}, + {25, "SIGTSTP", "stopped"}, + {26, "SIGTRAP", "trace/breakpoint trap"}, + {27, "SIGIOER", "I/O error"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGXCPU", "CPU time limit exceeded"}, + {30, "SIGXFSZ", "file size limit exceeded"}, + {31, "SIGVTALRM", "virtual timer expired"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "danger"}, + {34, "SIGTHSTOP", "stop thread"}, + {35, "SIGTHCONT", "continue thread"}, + {37, "SIGTRACE", "trace"}, + {38, "", "DCE"}, + {39, "SIGDUMP", "dump"}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go new file mode 100644 index 0000000..586317c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go @@ -0,0 +1,40 @@ +// Code generated by linux/mkall.go generatePtracePair("arm", "arm64"). DO NOT EDIT. + +//go:build linux && (arm || arm64) + +package unix + +import "unsafe" + +// PtraceRegsArm is the registers used by arm binaries. +type PtraceRegsArm struct { + Uregs [18]uint32 +} + +// PtraceGetRegsArm fetches the registers used by arm binaries. +func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsArm sets the registers used by arm binaries. +func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsArm64 is the registers used by arm64 binaries. +type PtraceRegsArm64 struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +// PtraceGetRegsArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsArm64 sets the registers used by arm64 binaries. +func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go new file mode 100644 index 0000000..834d285 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go @@ -0,0 +1,17 @@ +// Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT. + +package unix + +import "unsafe" + +// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error { + iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))} + return ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) +} + +// PtraceSetRegSetArm64 sets the registers used by arm64 binaries. +func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error { + iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))} + return ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go new file mode 100644 index 0000000..d7c881b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go @@ -0,0 +1,49 @@ +// Code generated by linux/mkall.go generatePtracePair("mips", "mips64"). DO NOT EDIT. + +//go:build linux && (mips || mips64) + +package unix + +import "unsafe" + +// PtraceRegsMips is the registers used by mips binaries. +type PtraceRegsMips struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips fetches the registers used by mips binaries. +func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMips sets the registers used by mips binaries. +func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsMips64 is the registers used by mips64 binaries. +type PtraceRegsMips64 struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64 fetches the registers used by mips64 binaries. +func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMips64 sets the registers used by mips64 binaries. +func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go new file mode 100644 index 0000000..2d2de5d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go @@ -0,0 +1,49 @@ +// Code generated by linux/mkall.go generatePtracePair("mipsle", "mips64le"). DO NOT EDIT. + +//go:build linux && (mipsle || mips64le) + +package unix + +import "unsafe" + +// PtraceRegsMipsle is the registers used by mipsle binaries. +type PtraceRegsMipsle struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMipsle fetches the registers used by mipsle binaries. +func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMipsle sets the registers used by mipsle binaries. +func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsMips64le is the registers used by mips64le binaries. +type PtraceRegsMips64le struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64le fetches the registers used by mips64le binaries. +func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsMips64le sets the registers used by mips64le binaries. +func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go new file mode 100644 index 0000000..5adc79f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go @@ -0,0 +1,79 @@ +// Code generated by linux/mkall.go generatePtracePair("386", "amd64"). DO NOT EDIT. + +//go:build linux && (386 || amd64) + +package unix + +import "unsafe" + +// PtraceRegs386 is the registers used by 386 binaries. +type PtraceRegs386 struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +// PtraceGetRegs386 fetches the registers used by 386 binaries. +func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegs386 sets the registers used by 386 binaries. +func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} + +// PtraceRegsAmd64 is the registers used by amd64 binaries. +type PtraceRegsAmd64 struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. +func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { + return ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout)) +} + +// PtraceSetRegsAmd64 sets the registers used by amd64 binaries. +func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { + return ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs)) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s new file mode 100644 index 0000000..b77ff5d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s @@ -0,0 +1,364 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x +#include "textflag.h" + +// provide the address of function variable to be fixed up. + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Flistxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fremovexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fgetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fsetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_accept4Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·accept4(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_RemovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Removexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_Dup3Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Dup3(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_DirfdAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Dirfd(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCreateAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCreate(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCreate1Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCreate1(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollCtlAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollCtl(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollPwaitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollPwait(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EpollWaitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·EpollWait(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_EventfdAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Eventfd(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FaccessatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Faccessat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FchmodatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fchmodat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FchownatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fchownat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FdatasyncAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fdatasync(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_fstatatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·fstatat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LgetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lgetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LsetxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lsetxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FstatfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Fstatfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FutimesAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Futimes(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_FutimesatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Futimesat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_GetrandomAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Getrandom(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyInitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyInit(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyInit1Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyInit1(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyAddWatchAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyAddWatch(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_InotifyRmWatchAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·InotifyRmWatch(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_ListxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Listxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LlistxattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Llistxattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LremovexattrAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lremovexattr(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LutimesAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Lutimes(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_StatfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Statfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SyncfsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Syncfs(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_UnshareAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unshare(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_LinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Linkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_MkdiratAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mkdirat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_MknodatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Mknodat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PivotRootAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·PivotRoot(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PrctlAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Prctl(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_PrlimitAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Prlimit(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_RenameatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Renameat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_Renameat2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Renameat2(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SethostnameAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Sethostname(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SetnsAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Setns(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_SymlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Symlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_UnlinkatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·Unlinkat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_openatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·openat(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_openat2Addr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·openat2(SB), R8 + MOVD R8, ret+0(FP) + RET + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +TEXT ·get_utimensatAddr(SB), NOSPLIT|NOFRAME, $0-8 + MOVD $·utimensat(SB), R8 + MOVD R8, ret+0(FP) + RET diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 0000000..6ea64a3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1461 @@ +// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc + +package unix + +/* +#include +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int fsync_range(int, int, long long, long long); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); +int getrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req int, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsyncRange(fd int, how int, start int64, length int64) (err error) { + r0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statptr *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := C.getsystemcfg(C.int(label)) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(target))) + r0, er := C.umount(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 0000000..99ee439 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1420 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc64 + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage))) + wpid = Pid_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req int, arg uintptr) (err error) { + _, e1 := callioctl(fd, req, arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + _, e1 := callioctl_ptr(fd, req, arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, e1 := callfcntl(fd, cmd, uintptr(arg)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + _, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsyncRange(fd int, how int, start int64, length int64) (err error) { + _, e1 := callfsync_range(fd, how, start, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callacct(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchdir(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchroot(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, e1 := callclose(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, e1 := calldup(oldfd) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + callexit(code) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, e1 := callfchdir(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, e1 := callfchmod(fd, mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, e1 := callfdatasync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e1 := callgetpgid(pid) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := callgetpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := callgetpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := callgetppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, e1 := callgetpriority(which, who) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e1 := callgetsid(pid) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, e1 := callkill(pid, int(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, e1 := callsetpgid(pid, pgid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e1 := callsetsid() + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, e1 := callsetuid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, e1 := callsetgid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, e1 := callsetpriority(which, who, prio) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + callsync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, e1 := calltimes(uintptr(unsafe.Pointer(tms))) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := callumask(mask) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, e1 := calluname(uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlink(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, e1 := calldup2(oldfd, newfd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, e1 := callposix_fadvise64(fd, offset, length, advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, e1 := callfchown(fd, uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_t) (err error) { + _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, e1 := callftruncate(fd, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := callgetegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := callgeteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := callgetgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := callgetuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, e1 := calllisten(s, n) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, e1 := callpause() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, e1 := callsetregid(rgid, egid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, e1 := callsetreuid(ruid, euid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, e1 := callshutdown(fd, how) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statptr *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callbind(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callconnect(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list))) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e1 := callsetsockopt(s, level, name, uintptr(val), vallen) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e1 := callsocket(domain, typ, proto) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, e1 := callmunmap(addr, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, e1 := callmlockall(flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, e1 := callmunlockall() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, e1 := callpipe(uintptr(unsafe.Pointer(p))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + _, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, e1 := calltime(uintptr(unsafe.Pointer(t))) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, e1 := callumount(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, e1 := calllseek(fd, offset, whence) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, e1 := callmmap64(addr, length, prot, flags, fd, offset) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go new file mode 100644 index 0000000..b68a783 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -0,0 +1,1188 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc64 && gc + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fsync_range fsync_range "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_select select "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nsendmsg nsendmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o" + +//go:linkname libc_utimes libc_utimes +//go:linkname libc_utimensat libc_utimensat +//go:linkname libc_getcwd libc_getcwd +//go:linkname libc_accept libc_accept +//go:linkname libc_getdirent libc_getdirent +//go:linkname libc_wait4 libc_wait4 +//go:linkname libc_ioctl libc_ioctl +//go:linkname libc_fcntl libc_fcntl +//go:linkname libc_fsync_range libc_fsync_range +//go:linkname libc_acct libc_acct +//go:linkname libc_chdir libc_chdir +//go:linkname libc_chroot libc_chroot +//go:linkname libc_close libc_close +//go:linkname libc_dup libc_dup +//go:linkname libc_exit libc_exit +//go:linkname libc_faccessat libc_faccessat +//go:linkname libc_fchdir libc_fchdir +//go:linkname libc_fchmod libc_fchmod +//go:linkname libc_fchmodat libc_fchmodat +//go:linkname libc_fchownat libc_fchownat +//go:linkname libc_fdatasync libc_fdatasync +//go:linkname libc_getpgid libc_getpgid +//go:linkname libc_getpgrp libc_getpgrp +//go:linkname libc_getpid libc_getpid +//go:linkname libc_getppid libc_getppid +//go:linkname libc_getpriority libc_getpriority +//go:linkname libc_getrusage libc_getrusage +//go:linkname libc_getsid libc_getsid +//go:linkname libc_kill libc_kill +//go:linkname libc_syslog libc_syslog +//go:linkname libc_mkdir libc_mkdir +//go:linkname libc_mkdirat libc_mkdirat +//go:linkname libc_mkfifo libc_mkfifo +//go:linkname libc_mknod libc_mknod +//go:linkname libc_mknodat libc_mknodat +//go:linkname libc_nanosleep libc_nanosleep +//go:linkname libc_open64 libc_open64 +//go:linkname libc_openat libc_openat +//go:linkname libc_read libc_read +//go:linkname libc_readlink libc_readlink +//go:linkname libc_renameat libc_renameat +//go:linkname libc_setdomainname libc_setdomainname +//go:linkname libc_sethostname libc_sethostname +//go:linkname libc_setpgid libc_setpgid +//go:linkname libc_setsid libc_setsid +//go:linkname libc_settimeofday libc_settimeofday +//go:linkname libc_setuid libc_setuid +//go:linkname libc_setgid libc_setgid +//go:linkname libc_setpriority libc_setpriority +//go:linkname libc_statx libc_statx +//go:linkname libc_sync libc_sync +//go:linkname libc_times libc_times +//go:linkname libc_umask libc_umask +//go:linkname libc_uname libc_uname +//go:linkname libc_unlink libc_unlink +//go:linkname libc_unlinkat libc_unlinkat +//go:linkname libc_ustat libc_ustat +//go:linkname libc_write libc_write +//go:linkname libc_dup2 libc_dup2 +//go:linkname libc_posix_fadvise64 libc_posix_fadvise64 +//go:linkname libc_fchown libc_fchown +//go:linkname libc_fstat libc_fstat +//go:linkname libc_fstatat libc_fstatat +//go:linkname libc_fstatfs libc_fstatfs +//go:linkname libc_ftruncate libc_ftruncate +//go:linkname libc_getegid libc_getegid +//go:linkname libc_geteuid libc_geteuid +//go:linkname libc_getgid libc_getgid +//go:linkname libc_getuid libc_getuid +//go:linkname libc_lchown libc_lchown +//go:linkname libc_listen libc_listen +//go:linkname libc_lstat libc_lstat +//go:linkname libc_pause libc_pause +//go:linkname libc_pread64 libc_pread64 +//go:linkname libc_pwrite64 libc_pwrite64 +//go:linkname libc_select libc_select +//go:linkname libc_pselect libc_pselect +//go:linkname libc_setregid libc_setregid +//go:linkname libc_setreuid libc_setreuid +//go:linkname libc_shutdown libc_shutdown +//go:linkname libc_splice libc_splice +//go:linkname libc_stat libc_stat +//go:linkname libc_statfs libc_statfs +//go:linkname libc_truncate libc_truncate +//go:linkname libc_bind libc_bind +//go:linkname libc_connect libc_connect +//go:linkname libc_getgroups libc_getgroups +//go:linkname libc_setgroups libc_setgroups +//go:linkname libc_getsockopt libc_getsockopt +//go:linkname libc_setsockopt libc_setsockopt +//go:linkname libc_socket libc_socket +//go:linkname libc_socketpair libc_socketpair +//go:linkname libc_getpeername libc_getpeername +//go:linkname libc_getsockname libc_getsockname +//go:linkname libc_recvfrom libc_recvfrom +//go:linkname libc_sendto libc_sendto +//go:linkname libc_nrecvmsg libc_nrecvmsg +//go:linkname libc_nsendmsg libc_nsendmsg +//go:linkname libc_munmap libc_munmap +//go:linkname libc_madvise libc_madvise +//go:linkname libc_mprotect libc_mprotect +//go:linkname libc_mlock libc_mlock +//go:linkname libc_mlockall libc_mlockall +//go:linkname libc_msync libc_msync +//go:linkname libc_munlock libc_munlock +//go:linkname libc_munlockall libc_munlockall +//go:linkname libc_pipe libc_pipe +//go:linkname libc_poll libc_poll +//go:linkname libc_gettimeofday libc_gettimeofday +//go:linkname libc_time libc_time +//go:linkname libc_utime libc_utime +//go:linkname libc_getsystemcfg libc_getsystemcfg +//go:linkname libc_umount libc_umount +//go:linkname libc_getrlimit libc_getrlimit +//go:linkname libc_lseek libc_lseek +//go:linkname libc_mmap64 libc_mmap64 + +type syscallFunc uintptr + +var ( + libc_utimes, + libc_utimensat, + libc_getcwd, + libc_accept, + libc_getdirent, + libc_wait4, + libc_ioctl, + libc_fcntl, + libc_fsync_range, + libc_acct, + libc_chdir, + libc_chroot, + libc_close, + libc_dup, + libc_exit, + libc_faccessat, + libc_fchdir, + libc_fchmod, + libc_fchmodat, + libc_fchownat, + libc_fdatasync, + libc_getpgid, + libc_getpgrp, + libc_getpid, + libc_getppid, + libc_getpriority, + libc_getrusage, + libc_getsid, + libc_kill, + libc_syslog, + libc_mkdir, + libc_mkdirat, + libc_mkfifo, + libc_mknod, + libc_mknodat, + libc_nanosleep, + libc_open64, + libc_openat, + libc_read, + libc_readlink, + libc_renameat, + libc_setdomainname, + libc_sethostname, + libc_setpgid, + libc_setsid, + libc_settimeofday, + libc_setuid, + libc_setgid, + libc_setpriority, + libc_statx, + libc_sync, + libc_times, + libc_umask, + libc_uname, + libc_unlink, + libc_unlinkat, + libc_ustat, + libc_write, + libc_dup2, + libc_posix_fadvise64, + libc_fchown, + libc_fstat, + libc_fstatat, + libc_fstatfs, + libc_ftruncate, + libc_getegid, + libc_geteuid, + libc_getgid, + libc_getuid, + libc_lchown, + libc_listen, + libc_lstat, + libc_pause, + libc_pread64, + libc_pwrite64, + libc_select, + libc_pselect, + libc_setregid, + libc_setreuid, + libc_shutdown, + libc_splice, + libc_stat, + libc_statfs, + libc_truncate, + libc_bind, + libc_connect, + libc_getgroups, + libc_setgroups, + libc_getsockopt, + libc_setsockopt, + libc_socket, + libc_socketpair, + libc_getpeername, + libc_getsockname, + libc_recvfrom, + libc_sendto, + libc_nrecvmsg, + libc_nsendmsg, + libc_munmap, + libc_madvise, + libc_mprotect, + libc_mlock, + libc_mlockall, + libc_msync, + libc_munlock, + libc_munlockall, + libc_pipe, + libc_poll, + libc_gettimeofday, + libc_time, + libc_utime, + libc_getsystemcfg, + libc_umount, + libc_getrlimit, + libc_lseek, + libc_mmap64 syscallFunc +) + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go new file mode 100644 index 0000000..0a87450 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -0,0 +1,1069 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build aix && ppc64 && gccgo + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int fsync_range(int, int, long long, long long); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); +int getrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.acct(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chdir(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chroot(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.close(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup(C.int(oldfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.exit(C.int(code))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchdir(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fdatasync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgrp()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getppid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpriority(C.int(which), C.int(who))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.kill(C.int(pid), C.int(sig))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.settimeofday(C.uintptr_t(tv))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setuid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sync()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.times(C.uintptr_t(tms))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umask(C.int(mask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.uname(C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlink(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getegid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.geteuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.listen(C.int(s), C.int(n))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pause()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setregid(C.int(rgid), C.int(egid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.shutdown(C.int(fd), C.int(how))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlockall(C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlockall()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pipe(C.uintptr_t(p))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.time(C.uintptr_t(t))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsystemcfg(C.int(label))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umount(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go new file mode 100644 index 0000000..813c05b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -0,0 +1,2728 @@ +// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build darwin && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_closedir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +var libc_readdir_r_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fgetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_removexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fremovexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flistxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_chdir_np(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_chdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_fchdir_np(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_fchdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendfile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmdt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmget_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmget shmget "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefile(src string, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_exchangedata_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fclonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0) + size = int(r0) + return +} + +var libc_getdtablesize_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(attrBuf) > 0 { + _p1 = unsafe.Pointer(&attrBuf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setattrlist_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setprivexec_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_undelete_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ptrace_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs64_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s new file mode 100644 index 0000000..fda3285 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -0,0 +1,799 @@ +// go run mkasm.go darwin amd64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) + +TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) + +TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) + +TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) + +TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) + +TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) + +TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) + +TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) + +TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) + +TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_chdir_np(SB) +GLOBL ·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB) + +TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_fchdir_np(SB) +GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) + +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + +TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) + +TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmat(SB) +GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) + +TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmctl(SB) +GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) + +TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmdt(SB) +GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) + +TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmget(SB) +GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefile(SB) +GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) + +TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefileat(SB) +GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fclonefileat(SB) +GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 +DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + +TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB) + +TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB) + +TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB) + +TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB) + +TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB) + +TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) + +TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB) + +TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) +GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go new file mode 100644 index 0000000..e6f58f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -0,0 +1,2728 @@ +// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build darwin && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_closedir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +var libc_readdir_r_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fgetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsetxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_removexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fremovexattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flistxattr_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_chdir_np(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_pthread_chdir_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_chdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_chdir_np pthread_chdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pthread_fchdir_np(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_pthread_fchdir_np_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pthread_fchdir_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pthread_fchdir_np pthread_fchdir_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendfile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmat shmat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmctl shmctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmdt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmdt shmdt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shmget_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shmget shmget "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefile(src string, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefile_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefile clonefile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(src) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clonefileat clonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_exchangedata_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(dst) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fclonefileat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fclonefileat fclonefileat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0) + size = int(r0) + return +} + +var libc_getdtablesize_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(attrBuf) > 0 { + _p1 = unsafe.Pointer(&attrBuf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setattrlist_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setprivexec_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_undelete_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_preadv_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovecs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_writev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovecs) > 0 { + _p0 = unsafe.Pointer(&iovecs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwritev_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ptrace_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s new file mode 100644 index 0000000..7f8998b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -0,0 +1,799 @@ +// go run mkasm.go darwin arm64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) + +TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB) + +TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB) + +TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB) + +TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB) + +TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB) + +TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB) + +TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB) + +TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB) + +TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_pthread_chdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_chdir_np(SB) +GLOBL ·libc_pthread_chdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_chdir_np_trampoline_addr(SB)/8, $libc_pthread_chdir_np_trampoline<>(SB) + +TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pthread_fchdir_np(SB) +GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) + +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + +TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB) + +TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmat(SB) +GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB) + +TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmctl(SB) +GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB) + +TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmdt(SB) +GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB) + +TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shmget(SB) +GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefile(SB) +GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB) + +TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clonefileat(SB) +GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fclonefileat(SB) +GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +GLOBL ·libc_setattrlist_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8 +DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readv(SB) +GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB) + +TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_preadv(SB) +GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8 +DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB) + +TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_writev(SB) +GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB) + +TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwritev(SB) +GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go new file mode 100644 index 0000000..aad65fc --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -0,0 +1,1666 @@ +// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build dragonfly && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go new file mode 100644 index 0000000..c009639 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go new file mode 100644 index 0000000..7664df7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go new file mode 100644 index 0000000..ae09918 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go new file mode 100644 index 0000000..11fd5d4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go new file mode 100644 index 0000000..c3d2d65 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go @@ -0,0 +1,1886 @@ +// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go new file mode 100644 index 0000000..c698cbc --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go @@ -0,0 +1,101 @@ +// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build illumos && amd64 + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_readv readv "libc.so" +//go:cgo_import_dynamic libc_preadv preadv "libc.so" +//go:cgo_import_dynamic libc_writev writev "libc.so" +//go:cgo_import_dynamic libc_pwritev pwritev "libc.so" +//go:cgo_import_dynamic libc_accept4 accept4 "libsocket.so" + +//go:linkname procreadv libc_readv +//go:linkname procpreadv libc_preadv +//go:linkname procwritev libc_writev +//go:linkname procpwritev libc_pwritev +//go:linkname procaccept4 libc_accept4 + +var ( + procreadv, + procpreadv, + procwritev, + procpwritev, + procaccept4 syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovs []Iovec) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovs []Iovec, off int64) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovs []Iovec) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) { + var _p0 *Iovec + if len(iovs) > 0 { + _p0 = &iovs[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux.go new file mode 100644 index 0000000..8935d10 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -0,0 +1,2250 @@ +// Code generated by mkmerge; DO NOT EDIT. + +//go:build linux + +package unix + +import ( + "syscall" + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) { + _, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockAdjtime(clockid int32, buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockSettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CloseRange(first uint, last uint, flags uint) (err error) { + _, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) { + r0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs)) + fsfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsopen(fsName string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fspick(dirfd int, pathName string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) { + _, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fromPathName) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(toPathName) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func OpenTree(dfd int, fileName string, flags uint) (r int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fileName) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func TimerfdCreate(clockid int, flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func TimerfdGettime(fd int, currValue *ItimerSpec) (err error) { + _, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) { + _, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readv(fd int, iovs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writev(fd int, iovs []Iovec) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(iovs) > 0 { + _p0 = unsafe.Pointer(&iovs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) { + var _p0 unsafe.Pointer + if len(localIov) > 0 { + _p0 = unsafe.Pointer(&localIov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 unsafe.Pointer + if len(remoteIov) > 0 { + _p1 = unsafe.Pointer(&remoteIov[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) { + var _p0 unsafe.Pointer + if len(localIov) > 0 { + _p0 = unsafe.Pointer(&localIov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 unsafe.Pointer + if len(remoteIov) > 0 { + _p1 = unsafe.Pointer(&remoteIov[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PidfdOpen(pid int, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) { + _, _, e1 := Syscall6(SYS_PIDFD_SEND_SIGNAL, uintptr(pidfd), uintptr(sig), uintptr(unsafe.Pointer(info)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + r0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + r0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + result = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + _, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + r0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag)) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getitimer(which int, currValue *Itimerval) (err error) { + _, _, e1 := Syscall(SYS_GETITIMER, uintptr(which), uintptr(unsafe.Pointer(currValue)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) { + _, _, e1 := Syscall(SYS_SETITIMER, uintptr(which), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) { + _, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + RawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + RawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) { + _, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) { + _, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) { + _, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mseal(b []byte, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setMemPolicy(mode int, mask *CPUSet, size int) (err error) { + _, _, e1 := Syscall(SYS_SET_MEMPOLICY, uintptr(mode), uintptr(unsafe.Pointer(mask)), uintptr(size)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go new file mode 100644 index 0000000..4def3e9 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -0,0 +1,486 @@ +// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go new file mode 100644 index 0000000..fef2bc8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -0,0 +1,653 @@ +// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go new file mode 100644 index 0000000..a9fd76a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -0,0 +1,601 @@ +// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go new file mode 100644 index 0000000..4600650 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -0,0 +1,552 @@ +// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go new file mode 100644 index 0000000..c8987d2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go @@ -0,0 +1,486 @@ +// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && loong64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go new file mode 100644 index 0000000..921f430 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -0,0 +1,653 @@ +// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mips + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go new file mode 100644 index 0000000..44f0678 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -0,0 +1,647 @@ +// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go new file mode 100644 index 0000000..e7fa0ab --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -0,0 +1,636 @@ +// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mips64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go new file mode 100644 index 0000000..8c51256 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -0,0 +1,653 @@ +// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go new file mode 100644 index 0000000..7392fd4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go @@ -0,0 +1,658 @@ +// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go new file mode 100644 index 0000000..4118043 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -0,0 +1,704 @@ +// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go new file mode 100644 index 0000000..40c6ce7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -0,0 +1,704 @@ +// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && ppc64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go new file mode 100644 index 0000000..2cfe34a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -0,0 +1,548 @@ +// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(pairs) > 0 { + _p0 = unsafe.Pointer(&pairs[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go new file mode 100644 index 0000000..61e6f07 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -0,0 +1,495 @@ +// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && s390x + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go new file mode 100644 index 0000000..834b842 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -0,0 +1,648 @@ +// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && sparc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Alarm(seconds uint) (remaining uint, err error) { + r0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0) + remaining = uint(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go new file mode 100644 index 0000000..e91ebc1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go new file mode 100644 index 0000000..be28bab --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go new file mode 100644 index 0000000..fb587e8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go new file mode 100644 index 0000000..d576438 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -0,0 +1,1848 @@ +// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build netbsd && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) { + _, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs1(path string, buf *Statvfs_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go new file mode 100644 index 0000000..1851df1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && 386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s new file mode 100644 index 0000000..0b43c69 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd 386 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 +DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 +DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 +DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 +DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 +DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 +DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 +DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 +DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 +DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 +DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 +DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 +DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 +DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 +DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 +DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go new file mode 100644 index 0000000..e1ec0db --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s new file mode 100644 index 0000000..880c6d6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd amd64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 0000000..7c8452a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s new file mode 100644 index 0000000..b8ef95b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd arm +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 +DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 +DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 +DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 +DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 +DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 +DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 +DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 +DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 +DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 +DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 +DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 +DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 +DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 +DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 +DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go new file mode 100644 index 0000000..2ffdf86 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s new file mode 100644 index 0000000..2af3b5c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd arm64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go new file mode 100644 index 0000000..1da08d5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s new file mode 100644 index 0000000..b7a2513 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd mips64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go new file mode 100644 index 0000000..6e85b0a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s new file mode 100644 index 0000000..f15dadf --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s @@ -0,0 +1,838 @@ +// go run mkasm.go openbsd ppc64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getgroups(SB) + RET +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setgroups(SB) + RET +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_wait4(SB) + RET +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_accept(SB) + RET +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_bind(SB) + RET +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_connect(SB) + RET +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_socket(SB) + RET +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getsockopt(SB) + RET +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setsockopt(SB) + RET +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpeername(SB) + RET +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getsockname(SB) + RET +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_shutdown(SB) + RET +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_socketpair(SB) + RET +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_recvfrom(SB) + RET +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sendto(SB) + RET +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_recvmsg(SB) + RET +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sendmsg(SB) + RET +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_kevent(SB) + RET +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_utimes(SB) + RET +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_futimes(SB) + RET +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_poll(SB) + RET +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_madvise(SB) + RET +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mlock(SB) + RET +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mlockall(SB) + RET +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mprotect(SB) + RET +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_msync(SB) + RET +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_munlock(SB) + RET +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_munlockall(SB) + RET +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pipe2(SB) + RET +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getdents(SB) + RET +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getcwd(SB) + RET +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getresuid(SB) + RET +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getresgid(SB) + RET +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_ioctl(SB) + RET +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sysctl(SB) + RET +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fcntl(SB) + RET +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_ppoll(SB) + RET +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_access(SB) + RET +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_adjtime(SB) + RET +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chdir(SB) + RET +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chflags(SB) + RET +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chmod(SB) + RET +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chown(SB) + RET +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_chroot(SB) + RET +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_clock_gettime(SB) + RET +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_close(SB) + RET +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_dup(SB) + RET +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_dup2(SB) + RET +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_dup3(SB) + RET +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_exit(SB) + RET +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_faccessat(SB) + RET +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchdir(SB) + RET +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchflags(SB) + RET +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchmod(SB) + RET +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchmodat(SB) + RET +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchown(SB) + RET +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fchownat(SB) + RET +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_flock(SB) + RET +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fpathconf(SB) + RET +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fstat(SB) + RET +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fstatat(SB) + RET +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fstatfs(SB) + RET +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_fsync(SB) + RET +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_ftruncate(SB) + RET +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getegid(SB) + RET +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_geteuid(SB) + RET +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getgid(SB) + RET +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpgid(SB) + RET +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpgrp(SB) + RET +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpid(SB) + RET +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getppid(SB) + RET +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getpriority(SB) + RET +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getrlimit(SB) + RET +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getrtable(SB) + RET +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getrusage(SB) + RET +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getsid(SB) + RET +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_gettimeofday(SB) + RET +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getuid(SB) + RET +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_issetugid(SB) + RET +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_kill(SB) + RET +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_kqueue(SB) + RET +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_lchown(SB) + RET +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_link(SB) + RET +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_linkat(SB) + RET +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_listen(SB) + RET +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_lstat(SB) + RET +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkdir(SB) + RET +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkdirat(SB) + RET +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkfifo(SB) + RET +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mkfifoat(SB) + RET +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mknod(SB) + RET +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mknodat(SB) + RET +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mount(SB) + RET +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_nanosleep(SB) + RET +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_open(SB) + RET +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_openat(SB) + RET +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pathconf(SB) + RET +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pread(SB) + RET +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pwrite(SB) + RET +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_read(SB) + RET +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_readlink(SB) + RET +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_readlinkat(SB) + RET +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_rename(SB) + RET +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_renameat(SB) + RET +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_revoke(SB) + RET +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_rmdir(SB) + RET +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_lseek(SB) + RET +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_select(SB) + RET +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setegid(SB) + RET +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_seteuid(SB) + RET +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setgid(SB) + RET +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setlogin(SB) + RET +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setpgid(SB) + RET +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setpriority(SB) + RET +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setregid(SB) + RET +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setreuid(SB) + RET +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setresgid(SB) + RET +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setresuid(SB) + RET +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setrtable(SB) + RET +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setsid(SB) + RET +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_settimeofday(SB) + RET +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_setuid(SB) + RET +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_stat(SB) + RET +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_statfs(SB) + RET +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_symlink(SB) + RET +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_symlinkat(SB) + RET +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_sync(SB) + RET +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_truncate(SB) + RET +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_umask(SB) + RET +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unlink(SB) + RET +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unlinkat(SB) + RET +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unmount(SB) + RET +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_write(SB) + RET +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mmap(SB) + RET +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_munmap(SB) + RET +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_getfsstat(SB) + RET +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_utimensat(SB) + RET +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_pledge(SB) + RET +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_unveil(SB) + RET +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go new file mode 100644 index 0000000..28b487d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -0,0 +1,2323 @@ +// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build openbsd && riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) { + syscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid))) + return +} + +var libc_getresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresuid getresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) { + syscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid))) + return +} + +var libc_getresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getresgid getresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fcntl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_clock_gettime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(from int, to int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) + return +} + +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) + egid = int(r0) + return +} + +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) + gid = int(r0) + return +} + +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) + pgrp = int(r0) + return +} + +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) + pid = int(r0) + return +} + +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) + ppid = int(r0) + return +} + +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) + uid = int(r0) + return +} + +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_getfsstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getfsstat getfsstat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pledge(promises *byte, execpromises *byte) (err error) { + _, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_pledge_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pledge pledge "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unveil(path *byte, flags *byte) (err error) { + _, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_unveil_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unveil unveil "libc.so" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s new file mode 100644 index 0000000..1e7f321 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s @@ -0,0 +1,699 @@ +// go run mkasm.go openbsd riscv64 +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8 +DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8 +DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8 +DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8 +DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8 +DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8 +DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB) + +TEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresuid(SB) +GLOBL ·libc_getresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB) + +TEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getresgid(SB) +GLOBL ·libc_getresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8 +DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8 +DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB) + +TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8 +DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8 +DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $8 +DATA ·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8 +DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8 +DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8 +DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8 +DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) + +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 +DATA ·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8 +DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8 +DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8 +DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8 +DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 +DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8 +DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8 +DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8 +DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8 +DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8 +DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8 +DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8 +DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB) + +TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8 +DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB) + +TEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pledge(SB) +GLOBL ·libc_pledge_trampoline_addr(SB), RODATA, $8 +DATA ·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB) + +TEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unveil(SB) +GLOBL ·libc_unveil_trampoline_addr(SB), RODATA, $8 +DATA ·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go new file mode 100644 index 0000000..b4609c2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -0,0 +1,2217 @@ +// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build solaris && amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_pipe pipe "libc.so" +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" +//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" +//go:cgo_import_dynamic libc_gethostname gethostname "libc.so" +//go:cgo_import_dynamic libc_utimes utimes "libc.so" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" +//go:cgo_import_dynamic libc_futimesat futimesat "libc.so" +//go:cgo_import_dynamic libc_accept accept "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" +//go:cgo_import_dynamic libc_acct acct "libc.so" +//go:cgo_import_dynamic libc___makedev __makedev "libc.so" +//go:cgo_import_dynamic libc___major __major "libc.so" +//go:cgo_import_dynamic libc___minor __minor "libc.so" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:cgo_import_dynamic libc_poll poll "libc.so" +//go:cgo_import_dynamic libc_access access "libc.so" +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" +//go:cgo_import_dynamic libc_chdir chdir "libc.so" +//go:cgo_import_dynamic libc_chmod chmod "libc.so" +//go:cgo_import_dynamic libc_chown chown "libc.so" +//go:cgo_import_dynamic libc_chroot chroot "libc.so" +//go:cgo_import_dynamic libc_clockgettime clockgettime "libc.so" +//go:cgo_import_dynamic libc_close close "libc.so" +//go:cgo_import_dynamic libc_creat creat "libc.so" +//go:cgo_import_dynamic libc_dup dup "libc.so" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" +//go:cgo_import_dynamic libc_exit exit "libc.so" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" +//go:cgo_import_dynamic libc_fchown fchown "libc.so" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so" +//go:cgo_import_dynamic libc_flock flock "libc.so" +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" +//go:cgo_import_dynamic libc_fstat fstat "libc.so" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" +//go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so" +//go:cgo_import_dynamic libc_getdents getdents "libc.so" +//go:cgo_import_dynamic libc_getgid getgid "libc.so" +//go:cgo_import_dynamic libc_getpid getpid "libc.so" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" +//go:cgo_import_dynamic libc_getegid getegid "libc.so" +//go:cgo_import_dynamic libc_getppid getppid "libc.so" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_getsid getsid "libc.so" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" +//go:cgo_import_dynamic libc_getuid getuid "libc.so" +//go:cgo_import_dynamic libc_kill kill "libc.so" +//go:cgo_import_dynamic libc_lchown lchown "libc.so" +//go:cgo_import_dynamic libc_link link "libc.so" +//go:cgo_import_dynamic libc___xnet_listen __xnet_listen "libsocket.so" +//go:cgo_import_dynamic libc_lstat lstat "libc.so" +//go:cgo_import_dynamic libc_madvise madvise "libc.so" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" +//go:cgo_import_dynamic libc_mknod mknod "libc.so" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" +//go:cgo_import_dynamic libc_mlock mlock "libc.so" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" +//go:cgo_import_dynamic libc_msync msync "libc.so" +//go:cgo_import_dynamic libc_munlock munlock "libc.so" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" +//go:cgo_import_dynamic libc_open open "libc.so" +//go:cgo_import_dynamic libc_openat openat "libc.so" +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" +//go:cgo_import_dynamic libc_pause pause "libc.so" +//go:cgo_import_dynamic libc_pread pread "libc.so" +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" +//go:cgo_import_dynamic libc_read read "libc.so" +//go:cgo_import_dynamic libc_readlink readlink "libc.so" +//go:cgo_import_dynamic libc_rename rename "libc.so" +//go:cgo_import_dynamic libc_renameat renameat "libc.so" +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" +//go:cgo_import_dynamic libc_lseek lseek "libc.so" +//go:cgo_import_dynamic libc_select select "libc.so" +//go:cgo_import_dynamic libc_setegid setegid "libc.so" +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" +//go:cgo_import_dynamic libc_setgid setgid "libc.so" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.so" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" +//go:cgo_import_dynamic libc_setregid setregid "libc.so" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" +//go:cgo_import_dynamic libc_setsid setsid "libc.so" +//go:cgo_import_dynamic libc_setuid setuid "libc.so" +//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" +//go:cgo_import_dynamic libc_stat stat "libc.so" +//go:cgo_import_dynamic libc_statvfs statvfs "libc.so" +//go:cgo_import_dynamic libc_symlink symlink "libc.so" +//go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_sysconf sysconf "libc.so" +//go:cgo_import_dynamic libc_times times "libc.so" +//go:cgo_import_dynamic libc_truncate truncate "libc.so" +//go:cgo_import_dynamic libc_fsync fsync "libc.so" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" +//go:cgo_import_dynamic libc_umask umask "libc.so" +//go:cgo_import_dynamic libc_uname uname "libc.so" +//go:cgo_import_dynamic libc_umount umount "libc.so" +//go:cgo_import_dynamic libc_unlink unlink "libc.so" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" +//go:cgo_import_dynamic libc_ustat ustat "libc.so" +//go:cgo_import_dynamic libc_utime utime "libc.so" +//go:cgo_import_dynamic libc___xnet_bind __xnet_bind "libsocket.so" +//go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so" +//go:cgo_import_dynamic libc_mmap mmap "libc.so" +//go:cgo_import_dynamic libc_munmap munmap "libc.so" +//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so" +//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so" +//go:cgo_import_dynamic libc_write write "libc.so" +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" +//go:cgo_import_dynamic libc_getpeerucred getpeerucred "libc.so" +//go:cgo_import_dynamic libc_ucred_get ucred_get "libc.so" +//go:cgo_import_dynamic libc_ucred_geteuid ucred_geteuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getegid ucred_getegid "libc.so" +//go:cgo_import_dynamic libc_ucred_getruid ucred_getruid "libc.so" +//go:cgo_import_dynamic libc_ucred_getrgid ucred_getrgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsuid ucred_getsuid "libc.so" +//go:cgo_import_dynamic libc_ucred_getsgid ucred_getsgid "libc.so" +//go:cgo_import_dynamic libc_ucred_getpid ucred_getpid "libc.so" +//go:cgo_import_dynamic libc_ucred_free ucred_free "libc.so" +//go:cgo_import_dynamic libc_port_create port_create "libc.so" +//go:cgo_import_dynamic libc_port_associate port_associate "libc.so" +//go:cgo_import_dynamic libc_port_dissociate port_dissociate "libc.so" +//go:cgo_import_dynamic libc_port_get port_get "libc.so" +//go:cgo_import_dynamic libc_port_getn port_getn "libc.so" +//go:cgo_import_dynamic libc_putmsg putmsg "libc.so" +//go:cgo_import_dynamic libc_getmsg getmsg "libc.so" + +//go:linkname procpipe libc_pipe +//go:linkname procpipe2 libc_pipe2 +//go:linkname procgetsockname libc_getsockname +//go:linkname procGetcwd libc_getcwd +//go:linkname procgetgroups libc_getgroups +//go:linkname procsetgroups libc_setgroups +//go:linkname procwait4 libc_wait4 +//go:linkname procgethostname libc_gethostname +//go:linkname procutimes libc_utimes +//go:linkname procutimensat libc_utimensat +//go:linkname procfcntl libc_fcntl +//go:linkname procfutimesat libc_futimesat +//go:linkname procaccept libc_accept +//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg +//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg +//go:linkname procacct libc_acct +//go:linkname proc__makedev libc___makedev +//go:linkname proc__major libc___major +//go:linkname proc__minor libc___minor +//go:linkname procioctl libc_ioctl +//go:linkname procpoll libc_poll +//go:linkname procAccess libc_access +//go:linkname procAdjtime libc_adjtime +//go:linkname procChdir libc_chdir +//go:linkname procChmod libc_chmod +//go:linkname procChown libc_chown +//go:linkname procChroot libc_chroot +//go:linkname procClockGettime libc_clockgettime +//go:linkname procClose libc_close +//go:linkname procCreat libc_creat +//go:linkname procDup libc_dup +//go:linkname procDup2 libc_dup2 +//go:linkname procExit libc_exit +//go:linkname procFaccessat libc_faccessat +//go:linkname procFchdir libc_fchdir +//go:linkname procFchmod libc_fchmod +//go:linkname procFchmodat libc_fchmodat +//go:linkname procFchown libc_fchown +//go:linkname procFchownat libc_fchownat +//go:linkname procFdatasync libc_fdatasync +//go:linkname procFlock libc_flock +//go:linkname procFpathconf libc_fpathconf +//go:linkname procFstat libc_fstat +//go:linkname procFstatat libc_fstatat +//go:linkname procFstatvfs libc_fstatvfs +//go:linkname procGetdents libc_getdents +//go:linkname procGetgid libc_getgid +//go:linkname procGetpid libc_getpid +//go:linkname procGetpgid libc_getpgid +//go:linkname procGetpgrp libc_getpgrp +//go:linkname procGeteuid libc_geteuid +//go:linkname procGetegid libc_getegid +//go:linkname procGetppid libc_getppid +//go:linkname procGetpriority libc_getpriority +//go:linkname procGetrlimit libc_getrlimit +//go:linkname procGetrusage libc_getrusage +//go:linkname procGetsid libc_getsid +//go:linkname procGettimeofday libc_gettimeofday +//go:linkname procGetuid libc_getuid +//go:linkname procKill libc_kill +//go:linkname procLchown libc_lchown +//go:linkname procLink libc_link +//go:linkname proc__xnet_listen libc___xnet_listen +//go:linkname procLstat libc_lstat +//go:linkname procMadvise libc_madvise +//go:linkname procMkdir libc_mkdir +//go:linkname procMkdirat libc_mkdirat +//go:linkname procMkfifo libc_mkfifo +//go:linkname procMkfifoat libc_mkfifoat +//go:linkname procMknod libc_mknod +//go:linkname procMknodat libc_mknodat +//go:linkname procMlock libc_mlock +//go:linkname procMlockall libc_mlockall +//go:linkname procMprotect libc_mprotect +//go:linkname procMsync libc_msync +//go:linkname procMunlock libc_munlock +//go:linkname procMunlockall libc_munlockall +//go:linkname procNanosleep libc_nanosleep +//go:linkname procOpen libc_open +//go:linkname procOpenat libc_openat +//go:linkname procPathconf libc_pathconf +//go:linkname procPause libc_pause +//go:linkname procpread libc_pread +//go:linkname procpwrite libc_pwrite +//go:linkname procread libc_read +//go:linkname procReadlink libc_readlink +//go:linkname procRename libc_rename +//go:linkname procRenameat libc_renameat +//go:linkname procRmdir libc_rmdir +//go:linkname proclseek libc_lseek +//go:linkname procSelect libc_select +//go:linkname procSetegid libc_setegid +//go:linkname procSeteuid libc_seteuid +//go:linkname procSetgid libc_setgid +//go:linkname procSethostname libc_sethostname +//go:linkname procSetpgid libc_setpgid +//go:linkname procSetpriority libc_setpriority +//go:linkname procSetregid libc_setregid +//go:linkname procSetreuid libc_setreuid +//go:linkname procSetsid libc_setsid +//go:linkname procSetuid libc_setuid +//go:linkname procshutdown libc_shutdown +//go:linkname procStat libc_stat +//go:linkname procStatvfs libc_statvfs +//go:linkname procSymlink libc_symlink +//go:linkname procSync libc_sync +//go:linkname procSysconf libc_sysconf +//go:linkname procTimes libc_times +//go:linkname procTruncate libc_truncate +//go:linkname procFsync libc_fsync +//go:linkname procFtruncate libc_ftruncate +//go:linkname procUmask libc_umask +//go:linkname procUname libc_uname +//go:linkname procumount libc_umount +//go:linkname procUnlink libc_unlink +//go:linkname procUnlinkat libc_unlinkat +//go:linkname procUstat libc_ustat +//go:linkname procUtime libc_utime +//go:linkname proc__xnet_bind libc___xnet_bind +//go:linkname proc__xnet_connect libc___xnet_connect +//go:linkname procmmap libc_mmap +//go:linkname procmunmap libc_munmap +//go:linkname procsendfile libc_sendfile +//go:linkname proc__xnet_sendto libc___xnet_sendto +//go:linkname proc__xnet_socket libc___xnet_socket +//go:linkname proc__xnet_socketpair libc___xnet_socketpair +//go:linkname procwrite libc_write +//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt +//go:linkname procgetpeername libc_getpeername +//go:linkname procsetsockopt libc_setsockopt +//go:linkname procrecvfrom libc_recvfrom +//go:linkname procgetpeerucred libc_getpeerucred +//go:linkname procucred_get libc_ucred_get +//go:linkname procucred_geteuid libc_ucred_geteuid +//go:linkname procucred_getegid libc_ucred_getegid +//go:linkname procucred_getruid libc_ucred_getruid +//go:linkname procucred_getrgid libc_ucred_getrgid +//go:linkname procucred_getsuid libc_ucred_getsuid +//go:linkname procucred_getsgid libc_ucred_getsgid +//go:linkname procucred_getpid libc_ucred_getpid +//go:linkname procucred_free libc_ucred_free +//go:linkname procport_create libc_port_create +//go:linkname procport_associate libc_port_associate +//go:linkname procport_dissociate libc_port_dissociate +//go:linkname procport_get libc_port_get +//go:linkname procport_getn libc_port_getn +//go:linkname procputmsg libc_putmsg +//go:linkname procgetmsg libc_getmsg + +var ( + procpipe, + procpipe2, + procgetsockname, + procGetcwd, + procgetgroups, + procsetgroups, + procwait4, + procgethostname, + procutimes, + procutimensat, + procfcntl, + procfutimesat, + procaccept, + proc__xnet_recvmsg, + proc__xnet_sendmsg, + procacct, + proc__makedev, + proc__major, + proc__minor, + procioctl, + procpoll, + procAccess, + procAdjtime, + procChdir, + procChmod, + procChown, + procChroot, + procClockGettime, + procClose, + procCreat, + procDup, + procDup2, + procExit, + procFaccessat, + procFchdir, + procFchmod, + procFchmodat, + procFchown, + procFchownat, + procFdatasync, + procFlock, + procFpathconf, + procFstat, + procFstatat, + procFstatvfs, + procGetdents, + procGetgid, + procGetpid, + procGetpgid, + procGetpgrp, + procGeteuid, + procGetegid, + procGetppid, + procGetpriority, + procGetrlimit, + procGetrusage, + procGetsid, + procGettimeofday, + procGetuid, + procKill, + procLchown, + procLink, + proc__xnet_listen, + procLstat, + procMadvise, + procMkdir, + procMkdirat, + procMkfifo, + procMkfifoat, + procMknod, + procMknodat, + procMlock, + procMlockall, + procMprotect, + procMsync, + procMunlock, + procMunlockall, + procNanosleep, + procOpen, + procOpenat, + procPathconf, + procPause, + procpread, + procpwrite, + procread, + procReadlink, + procRename, + procRenameat, + procRmdir, + proclseek, + procSelect, + procSetegid, + procSeteuid, + procSetgid, + procSethostname, + procSetpgid, + procSetpriority, + procSetregid, + procSetreuid, + procSetsid, + procSetuid, + procshutdown, + procStat, + procStatvfs, + procSymlink, + procSync, + procSysconf, + procTimes, + procTruncate, + procFsync, + procFtruncate, + procUmask, + procUname, + procumount, + procUnlink, + procUnlinkat, + procUstat, + procUtime, + proc__xnet_bind, + proc__xnet_connect, + procmmap, + procmunmap, + procsendfile, + proc__xnet_sendto, + proc__xnet_socket, + proc__xnet_socketpair, + procwrite, + proc__xnet_getsockopt, + procgetpeername, + procsetsockopt, + procrecvfrom, + procgetpeerucred, + procucred_get, + procucred_geteuid, + procucred_getegid, + procucred_getruid, + procucred_getrgid, + procucred_getsuid, + procucred_getsgid, + procucred_getpid, + procucred_free, + procport_create, + procport_associate, + procport_dissociate, + procport_get, + procport_getn, + procputmsg, + procgetmsg syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int32(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gethostname(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func acct(path *byte) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __makedev(version int, major uint, minor uint) (val uint64) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0) + val = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __major(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __minor(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlRet(fd int, req int, arg uintptr) (ret int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_listen)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs(path string, vfsstat *Statvfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysconf(which int) (n int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeerucred(fd uintptr, ucred *uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetpeerucred)), 2, uintptr(fd), uintptr(unsafe.Pointer(ucred)), 0, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGet(pid int) (ucred uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procucred_get)), 1, uintptr(pid), 0, 0, 0, 0, 0) + ucred = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGeteuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_geteuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetegid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getegid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetruid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getruid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetrgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getrgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsuid(ucred uintptr) (uid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsuid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetsgid(ucred uintptr) (gid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getsgid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredGetpid(ucred uintptr) (pid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procucred_getpid)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ucredFree(ucred uintptr) { + sysvicall6(uintptr(unsafe.Pointer(&procucred_free)), 1, uintptr(ucred), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_create() (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_dissociate(port int, source int, object uintptr) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go new file mode 100644 index 0000000..7ccf66b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go @@ -0,0 +1,3458 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.ExitSyscall() + val = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FLISTXATTR_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FlistxattrAddr() *(func(fd int, dest []byte) (sz int, err error)) + +var Flistxattr = enter_Flistxattr + +func enter_Flistxattr(fd int, dest []byte) (sz int, err error) { + funcref := get_FlistxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FLISTXATTR_A<<4, "") == 0 { + *funcref = impl_Flistxattr + } else { + *funcref = error_Flistxattr + } + return (*funcref)(fd, dest) +} + +func error_Flistxattr(fd int, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FremovexattrAddr() *(func(fd int, attr string) (err error)) + +var Fremovexattr = enter_Fremovexattr + +func enter_Fremovexattr(fd int, attr string) (err error) { + funcref := get_FremovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FREMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Fremovexattr + } else { + *funcref = error_Fremovexattr + } + return (*funcref)(fd, attr) +} + +func error_Fremovexattr(fd int, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_READ<<4, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FGETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FgetxattrAddr() *(func(fd int, attr string, dest []byte) (sz int, err error)) + +var Fgetxattr = enter_Fgetxattr + +func enter_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + funcref := get_FgetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FGETXATTR_A<<4, "") == 0 { + *funcref = impl_Fgetxattr + } else { + *funcref = error_Fgetxattr + } + return (*funcref)(fd, attr, dest) +} + +func error_Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(data) > 0 { + _p1 = unsafe.Pointer(&data[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSETXATTR_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(data)), uintptr(flag)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FsetxattrAddr() *(func(fd int, attr string, data []byte, flag int) (err error)) + +var Fsetxattr = enter_Fsetxattr + +func enter_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + funcref := get_FsetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___FSETXATTR_A<<4, "") == 0 { + *funcref = impl_Fsetxattr + } else { + *funcref = error_Fsetxattr + } + return (*funcref)(fd, attr, data, flag) +} + +func error_Fsetxattr(fd int, attr string, data []byte, flag int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCEPT4_A<<4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_accept4Addr() *(func(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)) + +var accept4 = enter_accept4 + +func enter_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + funcref := get_accept4Addr() + if funcptrtest(GetZosLibVec()+SYS___ACCEPT4_A<<4, "") == 0 { + *funcref = impl_accept4 + } else { + *funcref = error_accept4 + } + return (*funcref)(s, rsa, addrlen, flags) +} + +func error_accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___BIND_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONNECT_A<<4, uintptr(s), uintptr(addr), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list))) + nn = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGROUPS<<4, uintptr(n), uintptr(unsafe.Pointer(list))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETSOCKOPT<<4, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKET<<4, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SOCKETPAIR<<4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETPEERNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETSOCKNAME_A<<4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_RemovexattrAddr() *(func(path string, attr string) (err error)) + +var Removexattr = enter_Removexattr + +func enter_Removexattr(path string, attr string) (err error) { + funcref := get_RemovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___REMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Removexattr + } else { + *funcref = error_Removexattr + } + return (*funcref)(path, attr) +} + +func error_Removexattr(path string, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVFROM_A<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDTO_A<<4, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RECVMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SENDMSG_A<<4, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MMAP<<4, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + runtime.ExitSyscall() + ret = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MUNMAP<<4, uintptr(addr), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req int, arg uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_IOCTL<<4, uintptr(fd), uintptr(req), uintptr(arg)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmat(id int, addr uintptr, flag int) (ret uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMAT<<4, uintptr(id), uintptr(addr), uintptr(flag)) + runtime.ExitSyscall() + ret = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMCTL64<<4, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + result = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmdt(addr uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMDT<<4, uintptr(addr)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func shmget(key int, size int, flag int) (id int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHMGET<<4, uintptr(key), uintptr(size), uintptr(flag)) + runtime.ExitSyscall() + id = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___ACCESS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHDIR_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHMOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CREAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP<<4, uintptr(oldfd)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP2<<4, uintptr(oldfd), uintptr(newfd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Dup3(oldfd int, newfd int, flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DUP3<<4, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Dup3Addr() *(func(oldfd int, newfd int, flags int) (err error)) + +var Dup3 = enter_Dup3 + +func enter_Dup3(oldfd int, newfd int, flags int) (err error) { + funcref := get_Dup3Addr() + if funcptrtest(GetZosLibVec()+SYS_DUP3<<4, "") == 0 { + *funcref = impl_Dup3 + } else { + *funcref = error_Dup3 + } + return (*funcref)(oldfd, newfd, flags) +} + +func error_Dup3(oldfd int, newfd int, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Dirfd(dirp uintptr) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_DIRFD<<4, uintptr(dirp)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_DirfdAddr() *(func(dirp uintptr) (fd int, err error)) + +var Dirfd = enter_Dirfd + +func enter_Dirfd(dirp uintptr) (fd int, err error) { + funcref := get_DirfdAddr() + if funcptrtest(GetZosLibVec()+SYS_DIRFD<<4, "") == 0 { + *funcref = impl_Dirfd + } else { + *funcref = error_Dirfd + } + return (*funcref)(dirp) +} + +func error_Dirfd(dirp uintptr) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollCreate(size int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE<<4, uintptr(size)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollCreateAddr() *(func(size int) (fd int, err error)) + +var EpollCreate = enter_EpollCreate + +func enter_EpollCreate(size int) (fd int, err error) { + funcref := get_EpollCreateAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE<<4, "") == 0 { + *funcref = impl_EpollCreate + } else { + *funcref = error_EpollCreate + } + return (*funcref)(size) +} + +func error_EpollCreate(size int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollCreate1(flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollCreate1Addr() *(func(flags int) (fd int, err error)) + +var EpollCreate1 = enter_EpollCreate1 + +func enter_EpollCreate1(flags int) (fd int, err error) { + funcref := get_EpollCreate1Addr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CREATE1<<4, "") == 0 { + *funcref = impl_EpollCreate1 + } else { + *funcref = error_EpollCreate1 + } + return (*funcref)(flags) +} + +func error_EpollCreate1(flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_CTL<<4, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollCtlAddr() *(func(epfd int, op int, fd int, event *EpollEvent) (err error)) + +var EpollCtl = enter_EpollCtl + +func enter_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + funcref := get_EpollCtlAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_CTL<<4, "") == 0 { + *funcref = impl_EpollCtl + } else { + *funcref = error_EpollCtl + } + return (*funcref)(epfd, op, fd, event) +} + +func error_EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), uintptr(unsafe.Pointer(sigmask))) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollPwaitAddr() *(func(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error)) + +var EpollPwait = enter_EpollPwait + +func enter_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + funcref := get_EpollPwaitAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_PWAIT<<4, "") == 0 { + *funcref = impl_EpollPwait + } else { + *funcref = error_EpollPwait + } + return (*funcref)(epfd, events, msec, sigmask) +} + +func error_EpollPwait(epfd int, events []EpollEvent, msec int, sigmask *int) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EPOLL_WAIT<<4, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EpollWaitAddr() *(func(epfd int, events []EpollEvent, msec int) (n int, err error)) + +var EpollWait = enter_EpollWait + +func enter_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + funcref := get_EpollWaitAddr() + if funcptrtest(GetZosLibVec()+SYS_EPOLL_WAIT<<4, "") == 0 { + *funcref = impl_EpollWait + } else { + *funcref = error_EpollWait + } + return (*funcref)(epfd, events, msec) +} + +func error_EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Errno2() (er2 int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS___ERRNO2<<4) + runtime.ExitSyscall() + er2 = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Eventfd(initval uint, flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_EVENTFD<<4, uintptr(initval), uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_EventfdAddr() *(func(initval uint, flags int) (fd int, err error)) + +var Eventfd = enter_Eventfd + +func enter_Eventfd(initval uint, flags int) (fd int, err error) { + funcref := get_EventfdAddr() + if funcptrtest(GetZosLibVec()+SYS_EVENTFD<<4, "") == 0 { + *funcref = impl_Eventfd + } else { + *funcref = error_Eventfd + } + return (*funcref)(initval, flags) +} + +func error_Eventfd(initval uint, flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec()+SYS_EXIT<<4, uintptr(code)) + runtime.ExitSyscall() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FACCESSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FaccessatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error)) + +var Faccessat = enter_Faccessat + +func enter_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + funcref := get_FaccessatAddr() + if funcptrtest(GetZosLibVec()+SYS___FACCESSAT_A<<4, "") == 0 { + *funcref = impl_Faccessat + } else { + *funcref = error_Faccessat + } + return (*funcref)(dirfd, path, mode, flags) +} + +func error_Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHDIR<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHMOD<<4, uintptr(fd), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHMODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FchmodatAddr() *(func(dirfd int, path string, mode uint32, flags int) (err error)) + +var Fchmodat = enter_Fchmodat + +func enter_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + funcref := get_FchmodatAddr() + if funcptrtest(GetZosLibVec()+SYS___FCHMODAT_A<<4, "") == 0 { + *funcref = impl_Fchmodat + } else { + *funcref = error_Fchmodat + } + return (*funcref)(dirfd, path, mode, flags) +} + +func error_Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCHOWN<<4, uintptr(fd), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FCHOWNAT_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FchownatAddr() *(func(fd int, path string, uid int, gid int, flags int) (err error)) + +var Fchownat = enter_Fchownat + +func enter_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + funcref := get_FchownatAddr() + if funcptrtest(GetZosLibVec()+SYS___FCHOWNAT_A<<4, "") == 0 { + *funcref = impl_Fchownat + } else { + *funcref = error_Fchownat + } + return (*funcref)(fd, path, uid, gid, flags) +} + +func error_Fchownat(fd int, path string, uid int, gid int, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), uintptr(arg)) + runtime.ExitSyscall() + retval = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fdatasync(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FDATASYNC<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FdatasyncAddr() *(func(fd int) (err error)) + +var Fdatasync = enter_Fdatasync + +func enter_Fdatasync(fd int) (err error) { + funcref := get_FdatasyncAddr() + if funcptrtest(GetZosLibVec()+SYS_FDATASYNC<<4, "") == 0 { + *funcref = impl_Fdatasync + } else { + *funcref = error_Fdatasync + } + return (*funcref)(fd) +} + +func error_Fdatasync(fd int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *Stat_LE_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTAT<<4, uintptr(fd), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FSTATAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_fstatatAddr() *(func(dirfd int, path string, stat *Stat_LE_t, flags int) (err error)) + +var fstatat = enter_fstatat + +func enter_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + funcref := get_fstatatAddr() + if funcptrtest(GetZosLibVec()+SYS___FSTATAT_A<<4, "") == 0 { + *funcref = impl_fstatat + } else { + *funcref = error_fstatat + } + return (*funcref)(dirfd, path, stat, flags) +} + +func error_fstatat(dirfd int, path string, stat *Stat_LE_t, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LGETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LgetxattrAddr() *(func(link string, attr string, dest []byte) (sz int, err error)) + +var Lgetxattr = enter_Lgetxattr + +func enter_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + funcref := get_LgetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LGETXATTR_A<<4, "") == 0 { + *funcref = impl_Lgetxattr + } else { + *funcref = error_Lgetxattr + } + return (*funcref)(link, attr, dest) +} + +func error_Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSETXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LsetxattrAddr() *(func(path string, attr string, data []byte, flags int) (err error)) + +var Lsetxattr = enter_Lsetxattr + +func enter_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + funcref := get_LsetxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LSETXATTR_A<<4, "") == 0 { + *funcref = impl_Lsetxattr + } else { + *funcref = error_Lsetxattr + } + return (*funcref)(path, attr, data, flags) +} + +func error_Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Fstatfs(fd int, buf *Statfs_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATFS<<4, uintptr(fd), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FstatfsAddr() *(func(fd int, buf *Statfs_t) (err error)) + +var Fstatfs = enter_Fstatfs + +func enter_Fstatfs(fd int, buf *Statfs_t) (err error) { + funcref := get_FstatfsAddr() + if funcptrtest(GetZosLibVec()+SYS_FSTATFS<<4, "") == 0 { + *funcref = impl_Fstatfs + } else { + *funcref = error_Fstatfs + } + return (*funcref)(fd, buf) +} + +func error_Fstatfs(fd int, buf *Statfs_t) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, stat *Statvfs_t) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSTATVFS<<4, uintptr(fd), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FSYNC<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Futimes(fd int, tv []Timeval) (err error) { + var _p0 unsafe.Pointer + if len(tv) > 0 { + _p0 = unsafe.Pointer(&tv[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FUTIMES<<4, uintptr(fd), uintptr(_p0), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FutimesAddr() *(func(fd int, tv []Timeval) (err error)) + +var Futimes = enter_Futimes + +func enter_Futimes(fd int, tv []Timeval) (err error) { + funcref := get_FutimesAddr() + if funcptrtest(GetZosLibVec()+SYS_FUTIMES<<4, "") == 0 { + *funcref = impl_Futimes + } else { + *funcref = error_Futimes + } + return (*funcref)(fd, tv) +} + +func error_Futimes(fd int, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(tv) > 0 { + _p1 = unsafe.Pointer(&tv[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___FUTIMESAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_FutimesatAddr() *(func(dirfd int, path string, tv []Timeval) (err error)) + +var Futimesat = enter_Futimesat + +func enter_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + funcref := get_FutimesatAddr() + if funcptrtest(GetZosLibVec()+SYS___FUTIMESAT_A<<4, "") == 0 { + *funcref = impl_Futimesat + } else { + *funcref = error_Futimesat + } + return (*funcref)(dirfd, path, tv) +} + +func error_Futimesat(dirfd int, path string, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FTRUNCATE<<4, uintptr(fd), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRANDOM<<4, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_GetrandomAddr() *(func(buf []byte, flags int) (n int, err error)) + +var Getrandom = enter_Getrandom + +func enter_Getrandom(buf []byte, flags int) (n int, err error) { + funcref := get_GetrandomAddr() + if funcptrtest(GetZosLibVec()+SYS_GETRANDOM<<4, "") == 0 { + *funcref = impl_Getrandom + } else { + *funcref = error_Getrandom + } + return (*funcref)(buf, flags) +} + +func error_Getrandom(buf []byte, flags int) (n int, err error) { + n = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyInit() (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_INOTIFY_INIT<<4) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyInitAddr() *(func() (fd int, err error)) + +var InotifyInit = enter_InotifyInit + +func enter_InotifyInit() (fd int, err error) { + funcref := get_InotifyInitAddr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT<<4, "") == 0 { + *funcref = impl_InotifyInit + } else { + *funcref = error_InotifyInit + } + return (*funcref)() +} + +func error_InotifyInit() (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyInit1(flags int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, uintptr(flags)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyInit1Addr() *(func(flags int) (fd int, err error)) + +var InotifyInit1 = enter_InotifyInit1 + +func enter_InotifyInit1(flags int) (fd int, err error) { + funcref := get_InotifyInit1Addr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_INIT1<<4, "") == 0 { + *funcref = impl_InotifyInit1 + } else { + *funcref = error_InotifyInit1 + } + return (*funcref)(flags) +} + +func error_InotifyInit1(flags int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + runtime.ExitSyscall() + watchdesc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyAddWatchAddr() *(func(fd int, pathname string, mask uint32) (watchdesc int, err error)) + +var InotifyAddWatch = enter_InotifyAddWatch + +func enter_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + funcref := get_InotifyAddWatchAddr() + if funcptrtest(GetZosLibVec()+SYS___INOTIFY_ADD_WATCH_A<<4, "") == 0 { + *funcref = impl_InotifyAddWatch + } else { + *funcref = error_InotifyAddWatch + } + return (*funcref)(fd, pathname, mask) +} + +func error_InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + watchdesc = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, uintptr(fd), uintptr(watchdesc)) + runtime.ExitSyscall() + success = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_InotifyRmWatchAddr() *(func(fd int, watchdesc uint32) (success int, err error)) + +var InotifyRmWatch = enter_InotifyRmWatch + +func enter_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + funcref := get_InotifyRmWatchAddr() + if funcptrtest(GetZosLibVec()+SYS_INOTIFY_RM_WATCH<<4, "") == 0 { + *funcref = impl_InotifyRmWatch + } else { + *funcref = error_InotifyRmWatch + } + return (*funcref)(fd, watchdesc) +} + +func error_InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + success = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_ListxattrAddr() *(func(path string, dest []byte) (sz int, err error)) + +var Listxattr = enter_Listxattr + +func enter_Listxattr(path string, dest []byte) (sz int, err error) { + funcref := get_ListxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LISTXATTR_A<<4, "") == 0 { + *funcref = impl_Listxattr + } else { + *funcref = error_Listxattr + } + return (*funcref)(path, dest) +} + +func error_Listxattr(path string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LLISTXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + runtime.ExitSyscall() + sz = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LlistxattrAddr() *(func(path string, dest []byte) (sz int, err error)) + +var Llistxattr = enter_Llistxattr + +func enter_Llistxattr(path string, dest []byte) (sz int, err error) { + funcref := get_LlistxattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LLISTXATTR_A<<4, "") == 0 { + *funcref = impl_Llistxattr + } else { + *funcref = error_Llistxattr + } + return (*funcref)(path, dest) +} + +func error_Llistxattr(path string, dest []byte) (sz int, err error) { + sz = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LremovexattrAddr() *(func(path string, attr string) (err error)) + +var Lremovexattr = enter_Lremovexattr + +func enter_Lremovexattr(path string, attr string) (err error) { + funcref := get_LremovexattrAddr() + if funcptrtest(GetZosLibVec()+SYS___LREMOVEXATTR_A<<4, "") == 0 { + *funcref = impl_Lremovexattr + } else { + *funcref = error_Lremovexattr + } + return (*funcref)(path, attr) +} + +func error_Lremovexattr(path string, attr string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Lutimes(path string, tv []Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(tv) > 0 { + _p1 = unsafe.Pointer(&tv[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LUTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(tv))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LutimesAddr() *(func(path string, tv []Timeval) (err error)) + +var Lutimes = enter_Lutimes + +func enter_Lutimes(path string, tv []Timeval) (err error) { + funcref := get_LutimesAddr() + if funcptrtest(GetZosLibVec()+SYS___LUTIMES_A<<4, "") == 0 { + *funcref = impl_Lutimes + } else { + *funcref = error_Lutimes + } + return (*funcref)(path, tv) +} + +func error_Lutimes(path string, tv []Timeval) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MPROTECT<<4, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_MSYNC<<4, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Console2(cmsg *ConsMsg2, modstr *byte, concmd *uint32) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CONSOLE2<<4, uintptr(unsafe.Pointer(cmsg)), uintptr(unsafe.Pointer(modstr)), uintptr(unsafe.Pointer(concmd))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var _p0 unsafe.Pointer + if len(fds) > 0 { + _p0 = unsafe.Pointer(&fds[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POLL<<4, uintptr(_p0), uintptr(len(fds)), uintptr(timeout)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___READDIR_R_A<<4, uintptr(dirp), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STATFS_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_StatfsAddr() *(func(path string, buf *Statfs_t) (err error)) + +var Statfs = enter_Statfs + +func enter_Statfs(path string, buf *Statfs_t) (err error) { + funcref := get_StatfsAddr() + if funcptrtest(GetZosLibVec()+SYS___STATFS_A<<4, "") == 0 { + *funcref = impl_Statfs + } else { + *funcref = error_Statfs + } + return (*funcref)(path, buf) +} + +func error_Statfs(path string, buf *Statfs_t) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Syncfs(fd int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SYNCFS<<4, uintptr(fd)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SyncfsAddr() *(func(fd int) (err error)) + +var Syncfs = enter_Syncfs + +func enter_Syncfs(fd int) (err error) { + funcref := get_SyncfsAddr() + if funcptrtest(GetZosLibVec()+SYS_SYNCFS<<4, "") == 0 { + *funcref = impl_Syncfs + } else { + *funcref = error_Syncfs + } + return (*funcref)(fd) +} + +func error_Syncfs(fd int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TIMES<<4, uintptr(unsafe.Pointer(tms))) + runtime.ExitSyscall() + ticks = uintptr(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent(buff *byte, size int) (lastsys int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_W_GETMNTENT<<4, uintptr(unsafe.Pointer(buff)), uintptr(size)) + runtime.ExitSyscall() + lastsys = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func W_Getmntent_A(buff *byte, size int) (lastsys int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___W_GETMNTENT_A<<4, uintptr(unsafe.Pointer(buff)), uintptr(size)) + runtime.ExitSyscall() + lastsys = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(filesystem) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + var _p3 *byte + _p3, err = BytePtrFromString(parm) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func unmount_LE(filesystem string, mtm int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(filesystem) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UMOUNT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mtm)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___CHROOT_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SELECT<<4, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + runtime.ExitSyscall() + ret = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_____OSNAME_A<<4, uintptr(unsafe.Pointer(buf))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Unshare(flags int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNSHARE<<4, uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnshareAddr() *(func(flags int) (err error)) + +var Unshare = enter_Unshare + +func enter_Unshare(flags int) (err error) { + funcref := get_UnshareAddr() + if funcptrtest(GetZosLibVec()+SYS_UNSHARE<<4, "") == 0 { + *funcref = impl_Unshare + } else { + *funcref = error_Unshare + } + return (*funcref)(flags) +} + +func error_Unshare(flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gethostname(buf []byte) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___GETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(buf))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETGID<<4) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPID<<4) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPGID<<4, uintptr(pid)) + pgid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (pid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETPPID<<4) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETPRIORITY<<4, uintptr(which), uintptr(who)) + runtime.ExitSyscall() + prio = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(rlim))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrusage(who int, rusage *rusage_zos) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETRUSAGE<<4, uintptr(who), uintptr(unsafe.Pointer(rusage))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEGID<<4) + runtime.ExitSyscall() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETEUID<<4) + runtime.ExitSyscall() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETSID<<4, uintptr(pid)) + sid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := CallLeFuncWithErr(GetZosLibVec() + SYS_GETUID<<4) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_KILL<<4, uintptr(pid), uintptr(sig)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LCHOWN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldPath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newPath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LINKAT_A<<4, uintptr(oldDirFd), uintptr(unsafe.Pointer(_p0)), uintptr(newDirFd), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_LinkatAddr() *(func(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error)) + +var Linkat = enter_Linkat + +func enter_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + funcref := get_LinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___LINKAT_A<<4, "") == 0 { + *funcref = impl_Linkat + } else { + *funcref = error_Linkat + } + return (*funcref)(oldDirFd, oldPath, newDirFd, newPath, flags) +} + +func error_Linkat(oldDirFd int, oldPath string, newDirFd int, newPath string, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LISTEN<<4, uintptr(s), uintptr(n)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___LSTAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIR_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKDIRAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MkdiratAddr() *(func(dirfd int, path string, mode uint32) (err error)) + +var Mkdirat = enter_Mkdirat + +func enter_Mkdirat(dirfd int, path string, mode uint32) (err error) { + funcref := get_MkdiratAddr() + if funcptrtest(GetZosLibVec()+SYS___MKDIRAT_A<<4, "") == 0 { + *funcref = impl_Mkdirat + } else { + *funcref = error_Mkdirat + } + return (*funcref)(dirfd, path, mode) +} + +func error_Mkdirat(dirfd int, path string, mode uint32) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKFIFO_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNOD_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___MKNODAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_MknodatAddr() *(func(dirfd int, path string, mode uint32, dev int) (err error)) + +var Mknodat = enter_Mknodat + +func enter_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + funcref := get_MknodatAddr() + if funcptrtest(GetZosLibVec()+SYS___MKNODAT_A<<4, "") == 0 { + *funcref = impl_Mknodat + } else { + *funcref = error_Mknodat + } + return (*funcref)(dirfd, path, mode, dev) +} + +func error_Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_PivotRoot(newroot string, oldroot string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(oldroot) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PivotRootAddr() *(func(newroot string, oldroot string) (err error)) + +var PivotRoot = enter_PivotRoot + +func enter_PivotRoot(newroot string, oldroot string) (err error) { + funcref := get_PivotRootAddr() + if funcptrtest(GetZosLibVec()+SYS___PIVOT_ROOT_A<<4, "") == 0 { + *funcref = impl_PivotRoot + } else { + *funcref = error_PivotRoot + } + return (*funcref)(newroot, oldroot) +} + +func error_PivotRoot(newroot string, oldroot string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PREAD<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PWRITE<<4, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset)) + runtime.ExitSyscall() + n = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___PRCTL_A<<4, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PrctlAddr() *(func(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)) + +var Prctl = enter_Prctl + +func enter_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + funcref := get_PrctlAddr() + if funcptrtest(GetZosLibVec()+SYS___PRCTL_A<<4, "") == 0 { + *funcref = impl_Prctl + } else { + *funcref = error_Prctl + } + return (*funcref)(option, arg2, arg3, arg4, arg5) +} + +func error_Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PRLIMIT<<4, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_PrlimitAddr() *(func(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error)) + +var Prlimit = enter_Prlimit + +func enter_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + funcref := get_PrlimitAddr() + if funcptrtest(GetZosLibVec()+SYS_PRLIMIT<<4, "") == 0 { + *funcref = impl_Prlimit + } else { + *funcref = error_Prlimit + } + return (*funcref)(pid, resource, newlimit, old) +} + +func error_Prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_RenameatAddr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)) + +var Renameat = enter_Renameat + +func enter_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + funcref := get_RenameatAddr() + if funcptrtest(GetZosLibVec()+SYS___RENAMEAT_A<<4, "") == 0 { + *funcref = impl_Renameat + } else { + *funcref = error_Renameat + } + return (*funcref)(olddirfd, oldpath, newdirfd, newpath) +} + +func error_Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RENAMEAT2_A<<4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_Renameat2Addr() *(func(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)) + +var Renameat2 = enter_Renameat2 + +func enter_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + funcref := get_Renameat2Addr() + if funcptrtest(GetZosLibVec()+SYS___RENAMEAT2_A<<4, "") == 0 { + *funcref = impl_Renameat2 + } else { + *funcref = error_Renameat2 + } + return (*funcref)(olddirfd, oldpath, newdirfd, newpath, flags) +} + +func error_Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___RMDIR_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_LSEEK<<4, uintptr(fd), uintptr(offset), uintptr(whence)) + runtime.ExitSyscall() + off = int64(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEGID<<4, uintptr(egid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETEUID<<4, uintptr(euid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, uintptr(_p0), uintptr(len(p))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SethostnameAddr() *(func(p []byte) (err error)) + +var Sethostname = enter_Sethostname + +func enter_Sethostname(p []byte) (err error) { + funcref := get_SethostnameAddr() + if funcptrtest(GetZosLibVec()+SYS___SETHOSTNAME_A<<4, "") == 0 { + *funcref = impl_Sethostname + } else { + *funcref = error_Sethostname + } + return (*funcref)(p) +} + +func error_Sethostname(p []byte) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Setns(fd int, nstype int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETNS<<4, uintptr(fd), uintptr(nstype)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SetnsAddr() *(func(fd int, nstype int) (err error)) + +var Setns = enter_Setns + +func enter_Setns(fd int, nstype int) (err error) { + funcref := get_SetnsAddr() + if funcptrtest(GetZosLibVec()+SYS_SETNS<<4, "") == 0 { + *funcref = impl_Setns + } else { + *funcref = error_Setns + } + return (*funcref)(fd, nstype) +} + +func error_Setns(fd int, nstype int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPRIORITY<<4, uintptr(which), uintptr(who), uintptr(prio)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETPGID<<4, uintptr(pid), uintptr(pgid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, lim *Rlimit) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETRLIMIT<<4, uintptr(resource), uintptr(unsafe.Pointer(lim))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREGID<<4, uintptr(rgid), uintptr(egid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETREUID<<4, uintptr(ruid), uintptr(euid)) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec() + SYS_SETSID<<4) + pid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETUID<<4, uintptr(uid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SETGID<<4, uintptr(uid)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_SHUTDOWN<<4, uintptr(fd), uintptr(how)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, statLE *Stat_LE_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___STAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINK_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldPath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newPath) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___SYMLINKAT_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(dirfd), uintptr(unsafe.Pointer(_p1))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_SymlinkatAddr() *(func(oldPath string, dirfd int, newPath string) (err error)) + +var Symlinkat = enter_Symlinkat + +func enter_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + funcref := get_SymlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___SYMLINKAT_A<<4, "") == 0 { + *funcref = impl_Symlinkat + } else { + *funcref = error_Symlinkat + } + return (*funcref)(oldPath, dirfd, newPath) +} + +func error_Symlinkat(oldPath string, dirfd int, newPath string) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + runtime.EnterSyscall() + CallLeFuncWithErr(GetZosLibVec() + SYS_SYNC<<4) + runtime.ExitSyscall() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___TRUNCATE_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(length)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcgetattr(fildes int, termptr *Termios) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCGETATTR<<4, uintptr(fildes), uintptr(unsafe.Pointer(termptr))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tcsetattr(fildes int, when int, termptr *Termios) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_TCSETATTR<<4, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + runtime.EnterSyscall() + r0, _, _ := CallLeFuncWithErr(GetZosLibVec()+SYS_UMASK<<4, uintptr(mask)) + runtime.ExitSyscall() + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINK_A<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UNLINKAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_UnlinkatAddr() *(func(dirfd int, path string, flags int) (err error)) + +var Unlinkat = enter_Unlinkat + +func enter_Unlinkat(dirfd int, path string, flags int) (err error) { + funcref := get_UnlinkatAddr() + if funcptrtest(GetZosLibVec()+SYS___UNLINKAT_A<<4, "") == 0 { + *funcref = impl_Unlinkat + } else { + *funcref = error_Unlinkat + } + return (*funcref)(dirfd, path, flags) +} + +func error_Unlinkat(dirfd int, path string, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, utim *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIME_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPEN_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_openatAddr() *(func(dirfd int, path string, flags int, mode uint32) (fd int, err error)) + +var openat = enter_openat + +func enter_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + funcref := get_openatAddr() + if funcptrtest(GetZosLibVec()+SYS___OPENAT_A<<4, "") == 0 { + *funcref = impl_openat + } else { + *funcref = error_openat + } + return (*funcref)(dirfd, path, flags, mode) +} + +func error_openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___OPENAT2_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_openat2Addr() *(func(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)) + +var openat2 = enter_openat2 + +func enter_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + funcref := get_openat2Addr() + if funcptrtest(GetZosLibVec()+SYS___OPENAT2_A<<4, "") == 0 { + *funcref = impl_openat2 + } else { + *funcref = error_openat2 + } + return (*funcref)(dirfd, path, open_how, size) +} + +func error_openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) { + fd = -1 + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func remove(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_REMOVE<<4, uintptr(unsafe.Pointer(_p0))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitid(idType int, id int, info *Siginfo, options int) (err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITID<<4, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_WAITPID<<4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options)) + runtime.ExitSyscall() + wpid = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *timeval_zos) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GETTIMEOFDAY<<4, uintptr(unsafe.Pointer(tv))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_PIPE<<4, uintptr(unsafe.Pointer(p))) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMES_A<<4, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval))) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func impl_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS___UTIMENSAT_A<<4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(ts)), uintptr(flags)) + runtime.ExitSyscall() + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +//go:nosplit +func get_utimensatAddr() *(func(dirfd int, path string, ts *[2]Timespec, flags int) (err error)) + +var utimensat = enter_utimensat + +func enter_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + funcref := get_utimensatAddr() + if funcptrtest(GetZosLibVec()+SYS___UTIMENSAT_A<<4, "") == 0 { + *funcref = impl_utimensat + } else { + *funcref = error_utimensat + } + return (*funcref)(dirfd, path, ts, flags) +} + +func error_utimensat(dirfd int, path string, ts *[2]Timespec, flags int) (err error) { + err = ENOSYS + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Posix_openpt(oflag int) (fd int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_POSIX_OPENPT<<4, uintptr(oflag)) + runtime.ExitSyscall() + fd = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Grantpt(fildes int) (rc int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_GRANTPT<<4, uintptr(fildes)) + runtime.ExitSyscall() + rc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlockpt(fildes int) (rc int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_UNLOCKPT<<4, uintptr(fildes)) + runtime.ExitSyscall() + rc = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go new file mode 100644 index 0000000..3a58ae8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build 386 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go new file mode 100644 index 0000000..dcb7a0e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build amd64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go new file mode 100644 index 0000000..db5a7bf --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build arm && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go new file mode 100644 index 0000000..7be575a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build arm64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go new file mode 100644 index 0000000..d6e3174 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build mips64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go new file mode 100644 index 0000000..ee97157 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go @@ -0,0 +1,280 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build ppc64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go new file mode 100644 index 0000000..35c3b91 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go @@ -0,0 +1,281 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +//go:build riscv64 && openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.power", []_C_int{6, 26}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowdt", []_C_int{1, 65}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consbuf", []_C_int{1, 83}}, + {"kern.consbufsize", []_C_int{1, 82}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pfstatus", []_C_int{1, 86}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.timeout_stats", []_C_int{1, 87}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.utc_offset", []_C_int{1, 88}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.video", []_C_int{1, 89}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go new file mode 100644 index 0000000..5edda76 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -0,0 +1,439 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && darwin + +package unix + +// Deprecated: Use libSystem wrappers instead of direct syscalls. +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_KQUEUE_WORKLOOP_CTL = 530 + SYS___MACH_BRIDGE_REMOTE_TIME = 531 + SYS_MAXSYSCALL = 532 + SYS_INVALID = 63 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go new file mode 100644 index 0000000..0dc9e8b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -0,0 +1,437 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && darwin + +package unix + +// Deprecated: Use libSystem wrappers instead of direct syscalls. +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go new file mode 100644 index 0000000..308ddf3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -0,0 +1,316 @@ +// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && dragonfly + +package unix + +const ( + SYS_EXIT = 1 // { void exit(int rval); } + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int + // SYS_NOSYS = 8; // { int nosys(void); } __nosys nosys_args int + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); } + SYS_ACCESS = 33 // { int access(char *path, int flags); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, size_t namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { pid_t vfork(void); } + SYS_SBRK = 69 // { caddr_t sbrk(size_t incr); } + SYS_SSTK = 70 // { int sstk(size_t incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(int from, int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); } + SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); } + SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); } + SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); } + SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); } + SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); } + SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); } + SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); } + SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); } + SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); } + SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); } + SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); } + SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); } + SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_CLOSEFROM = 474 // { int closefrom(int fd); } + SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); } + SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); } + SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); } + SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); } + SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); } + SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); } + SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); } + SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); } + SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, struct trapframe *tframe, struct vextframe *vframe); } + SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); } + SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, size_t len); } + SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); } + SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); } + SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); } + SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); } + SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); } + SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sigmask); } + SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); } + SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); } + SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); } + SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, struct statvfs *vbuf, long vbufsize, int flags); } + SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); } + SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, struct stat *sb, int flags); } + SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, int flags); } + SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); } + SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); } + SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, int flags); } + SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); } + SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); } + SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); } + SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); } + SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); } + SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); } + SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); } + SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); } + SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); } + SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); } + SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); } + SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_SWAPOFF = 529 // { int swapoff(char *name); } + SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, struct plistref *pref); } + SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); } + SYS_EACCESS = 532 // { int eaccess(char *path, int flags); } + SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); } + SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); } + SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); } + SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); } + SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);} + SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); } + SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); } + SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); } + SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); } + SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); } + SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); } + SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); } + SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); } + SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); } + SYS_GETCPUCLOCKID = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); } + SYS_WAIT6 = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_LWP_GETNAME = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); } + SYS_GETRANDOM = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); } + SYS___REALPATH = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go new file mode 100644 index 0000000..418664e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go new file mode 100644 index 0000000..34d0b86 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go new file mode 100644 index 0000000..b71cf45 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go new file mode 100644 index 0000000..e32df1c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go new file mode 100644 index 0000000..15ad611 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go @@ -0,0 +1,393 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go new file mode 100644 index 0000000..aca56ee --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -0,0 +1,466 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go new file mode 100644 index 0000000..2ea1ef5 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -0,0 +1,389 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && linux + +package unix + +const ( + SYS_READ = 0 + SYS_WRITE = 1 + SYS_OPEN = 2 + SYS_CLOSE = 3 + SYS_STAT = 4 + SYS_FSTAT = 5 + SYS_LSTAT = 6 + SYS_POLL = 7 + SYS_LSEEK = 8 + SYS_MMAP = 9 + SYS_MPROTECT = 10 + SYS_MUNMAP = 11 + SYS_BRK = 12 + SYS_RT_SIGACTION = 13 + SYS_RT_SIGPROCMASK = 14 + SYS_RT_SIGRETURN = 15 + SYS_IOCTL = 16 + SYS_PREAD64 = 17 + SYS_PWRITE64 = 18 + SYS_READV = 19 + SYS_WRITEV = 20 + SYS_ACCESS = 21 + SYS_PIPE = 22 + SYS_SELECT = 23 + SYS_SCHED_YIELD = 24 + SYS_MREMAP = 25 + SYS_MSYNC = 26 + SYS_MINCORE = 27 + SYS_MADVISE = 28 + SYS_SHMGET = 29 + SYS_SHMAT = 30 + SYS_SHMCTL = 31 + SYS_DUP = 32 + SYS_DUP2 = 33 + SYS_PAUSE = 34 + SYS_NANOSLEEP = 35 + SYS_GETITIMER = 36 + SYS_ALARM = 37 + SYS_SETITIMER = 38 + SYS_GETPID = 39 + SYS_SENDFILE = 40 + SYS_SOCKET = 41 + SYS_CONNECT = 42 + SYS_ACCEPT = 43 + SYS_SENDTO = 44 + SYS_RECVFROM = 45 + SYS_SENDMSG = 46 + SYS_RECVMSG = 47 + SYS_SHUTDOWN = 48 + SYS_BIND = 49 + SYS_LISTEN = 50 + SYS_GETSOCKNAME = 51 + SYS_GETPEERNAME = 52 + SYS_SOCKETPAIR = 53 + SYS_SETSOCKOPT = 54 + SYS_GETSOCKOPT = 55 + SYS_CLONE = 56 + SYS_FORK = 57 + SYS_VFORK = 58 + SYS_EXECVE = 59 + SYS_EXIT = 60 + SYS_WAIT4 = 61 + SYS_KILL = 62 + SYS_UNAME = 63 + SYS_SEMGET = 64 + SYS_SEMOP = 65 + SYS_SEMCTL = 66 + SYS_SHMDT = 67 + SYS_MSGGET = 68 + SYS_MSGSND = 69 + SYS_MSGRCV = 70 + SYS_MSGCTL = 71 + SYS_FCNTL = 72 + SYS_FLOCK = 73 + SYS_FSYNC = 74 + SYS_FDATASYNC = 75 + SYS_TRUNCATE = 76 + SYS_FTRUNCATE = 77 + SYS_GETDENTS = 78 + SYS_GETCWD = 79 + SYS_CHDIR = 80 + SYS_FCHDIR = 81 + SYS_RENAME = 82 + SYS_MKDIR = 83 + SYS_RMDIR = 84 + SYS_CREAT = 85 + SYS_LINK = 86 + SYS_UNLINK = 87 + SYS_SYMLINK = 88 + SYS_READLINK = 89 + SYS_CHMOD = 90 + SYS_FCHMOD = 91 + SYS_CHOWN = 92 + SYS_FCHOWN = 93 + SYS_LCHOWN = 94 + SYS_UMASK = 95 + SYS_GETTIMEOFDAY = 96 + SYS_GETRLIMIT = 97 + SYS_GETRUSAGE = 98 + SYS_SYSINFO = 99 + SYS_TIMES = 100 + SYS_PTRACE = 101 + SYS_GETUID = 102 + SYS_SYSLOG = 103 + SYS_GETGID = 104 + SYS_SETUID = 105 + SYS_SETGID = 106 + SYS_GETEUID = 107 + SYS_GETEGID = 108 + SYS_SETPGID = 109 + SYS_GETPPID = 110 + SYS_GETPGRP = 111 + SYS_SETSID = 112 + SYS_SETREUID = 113 + SYS_SETREGID = 114 + SYS_GETGROUPS = 115 + SYS_SETGROUPS = 116 + SYS_SETRESUID = 117 + SYS_GETRESUID = 118 + SYS_SETRESGID = 119 + SYS_GETRESGID = 120 + SYS_GETPGID = 121 + SYS_SETFSUID = 122 + SYS_SETFSGID = 123 + SYS_GETSID = 124 + SYS_CAPGET = 125 + SYS_CAPSET = 126 + SYS_RT_SIGPENDING = 127 + SYS_RT_SIGTIMEDWAIT = 128 + SYS_RT_SIGQUEUEINFO = 129 + SYS_RT_SIGSUSPEND = 130 + SYS_SIGALTSTACK = 131 + SYS_UTIME = 132 + SYS_MKNOD = 133 + SYS_USELIB = 134 + SYS_PERSONALITY = 135 + SYS_USTAT = 136 + SYS_STATFS = 137 + SYS_FSTATFS = 138 + SYS_SYSFS = 139 + SYS_GETPRIORITY = 140 + SYS_SETPRIORITY = 141 + SYS_SCHED_SETPARAM = 142 + SYS_SCHED_GETPARAM = 143 + SYS_SCHED_SETSCHEDULER = 144 + SYS_SCHED_GETSCHEDULER = 145 + SYS_SCHED_GET_PRIORITY_MAX = 146 + SYS_SCHED_GET_PRIORITY_MIN = 147 + SYS_SCHED_RR_GET_INTERVAL = 148 + SYS_MLOCK = 149 + SYS_MUNLOCK = 150 + SYS_MLOCKALL = 151 + SYS_MUNLOCKALL = 152 + SYS_VHANGUP = 153 + SYS_MODIFY_LDT = 154 + SYS_PIVOT_ROOT = 155 + SYS__SYSCTL = 156 + SYS_PRCTL = 157 + SYS_ARCH_PRCTL = 158 + SYS_ADJTIMEX = 159 + SYS_SETRLIMIT = 160 + SYS_CHROOT = 161 + SYS_SYNC = 162 + SYS_ACCT = 163 + SYS_SETTIMEOFDAY = 164 + SYS_MOUNT = 165 + SYS_UMOUNT2 = 166 + SYS_SWAPON = 167 + SYS_SWAPOFF = 168 + SYS_REBOOT = 169 + SYS_SETHOSTNAME = 170 + SYS_SETDOMAINNAME = 171 + SYS_IOPL = 172 + SYS_IOPERM = 173 + SYS_CREATE_MODULE = 174 + SYS_INIT_MODULE = 175 + SYS_DELETE_MODULE = 176 + SYS_GET_KERNEL_SYMS = 177 + SYS_QUERY_MODULE = 178 + SYS_QUOTACTL = 179 + SYS_NFSSERVCTL = 180 + SYS_GETPMSG = 181 + SYS_PUTPMSG = 182 + SYS_AFS_SYSCALL = 183 + SYS_TUXCALL = 184 + SYS_SECURITY = 185 + SYS_GETTID = 186 + SYS_READAHEAD = 187 + SYS_SETXATTR = 188 + SYS_LSETXATTR = 189 + SYS_FSETXATTR = 190 + SYS_GETXATTR = 191 + SYS_LGETXATTR = 192 + SYS_FGETXATTR = 193 + SYS_LISTXATTR = 194 + SYS_LLISTXATTR = 195 + SYS_FLISTXATTR = 196 + SYS_REMOVEXATTR = 197 + SYS_LREMOVEXATTR = 198 + SYS_FREMOVEXATTR = 199 + SYS_TKILL = 200 + SYS_TIME = 201 + SYS_FUTEX = 202 + SYS_SCHED_SETAFFINITY = 203 + SYS_SCHED_GETAFFINITY = 204 + SYS_SET_THREAD_AREA = 205 + SYS_IO_SETUP = 206 + SYS_IO_DESTROY = 207 + SYS_IO_GETEVENTS = 208 + SYS_IO_SUBMIT = 209 + SYS_IO_CANCEL = 210 + SYS_GET_THREAD_AREA = 211 + SYS_LOOKUP_DCOOKIE = 212 + SYS_EPOLL_CREATE = 213 + SYS_EPOLL_CTL_OLD = 214 + SYS_EPOLL_WAIT_OLD = 215 + SYS_REMAP_FILE_PAGES = 216 + SYS_GETDENTS64 = 217 + SYS_SET_TID_ADDRESS = 218 + SYS_RESTART_SYSCALL = 219 + SYS_SEMTIMEDOP = 220 + SYS_FADVISE64 = 221 + SYS_TIMER_CREATE = 222 + SYS_TIMER_SETTIME = 223 + SYS_TIMER_GETTIME = 224 + SYS_TIMER_GETOVERRUN = 225 + SYS_TIMER_DELETE = 226 + SYS_CLOCK_SETTIME = 227 + SYS_CLOCK_GETTIME = 228 + SYS_CLOCK_GETRES = 229 + SYS_CLOCK_NANOSLEEP = 230 + SYS_EXIT_GROUP = 231 + SYS_EPOLL_WAIT = 232 + SYS_EPOLL_CTL = 233 + SYS_TGKILL = 234 + SYS_UTIMES = 235 + SYS_VSERVER = 236 + SYS_MBIND = 237 + SYS_SET_MEMPOLICY = 238 + SYS_GET_MEMPOLICY = 239 + SYS_MQ_OPEN = 240 + SYS_MQ_UNLINK = 241 + SYS_MQ_TIMEDSEND = 242 + SYS_MQ_TIMEDRECEIVE = 243 + SYS_MQ_NOTIFY = 244 + SYS_MQ_GETSETATTR = 245 + SYS_KEXEC_LOAD = 246 + SYS_WAITID = 247 + SYS_ADD_KEY = 248 + SYS_REQUEST_KEY = 249 + SYS_KEYCTL = 250 + SYS_IOPRIO_SET = 251 + SYS_IOPRIO_GET = 252 + SYS_INOTIFY_INIT = 253 + SYS_INOTIFY_ADD_WATCH = 254 + SYS_INOTIFY_RM_WATCH = 255 + SYS_MIGRATE_PAGES = 256 + SYS_OPENAT = 257 + SYS_MKDIRAT = 258 + SYS_MKNODAT = 259 + SYS_FCHOWNAT = 260 + SYS_FUTIMESAT = 261 + SYS_NEWFSTATAT = 262 + SYS_UNLINKAT = 263 + SYS_RENAMEAT = 264 + SYS_LINKAT = 265 + SYS_SYMLINKAT = 266 + SYS_READLINKAT = 267 + SYS_FCHMODAT = 268 + SYS_FACCESSAT = 269 + SYS_PSELECT6 = 270 + SYS_PPOLL = 271 + SYS_UNSHARE = 272 + SYS_SET_ROBUST_LIST = 273 + SYS_GET_ROBUST_LIST = 274 + SYS_SPLICE = 275 + SYS_TEE = 276 + SYS_SYNC_FILE_RANGE = 277 + SYS_VMSPLICE = 278 + SYS_MOVE_PAGES = 279 + SYS_UTIMENSAT = 280 + SYS_EPOLL_PWAIT = 281 + SYS_SIGNALFD = 282 + SYS_TIMERFD_CREATE = 283 + SYS_EVENTFD = 284 + SYS_FALLOCATE = 285 + SYS_TIMERFD_SETTIME = 286 + SYS_TIMERFD_GETTIME = 287 + SYS_ACCEPT4 = 288 + SYS_SIGNALFD4 = 289 + SYS_EVENTFD2 = 290 + SYS_EPOLL_CREATE1 = 291 + SYS_DUP3 = 292 + SYS_PIPE2 = 293 + SYS_INOTIFY_INIT1 = 294 + SYS_PREADV = 295 + SYS_PWRITEV = 296 + SYS_RT_TGSIGQUEUEINFO = 297 + SYS_PERF_EVENT_OPEN = 298 + SYS_RECVMMSG = 299 + SYS_FANOTIFY_INIT = 300 + SYS_FANOTIFY_MARK = 301 + SYS_PRLIMIT64 = 302 + SYS_NAME_TO_HANDLE_AT = 303 + SYS_OPEN_BY_HANDLE_AT = 304 + SYS_CLOCK_ADJTIME = 305 + SYS_SYNCFS = 306 + SYS_SENDMMSG = 307 + SYS_SETNS = 308 + SYS_GETCPU = 309 + SYS_PROCESS_VM_READV = 310 + SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 + SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 + SYS_URETPROBE = 335 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go new file mode 100644 index 0000000..d22c8af --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -0,0 +1,430 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && linux + +package unix + +const ( + SYS_SYSCALL_MASK = 0 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 + SYS_MIGRATE_PAGES = 400 + SYS_KEXEC_FILE_LOAD = 401 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go new file mode 100644 index 0000000..5ee264a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -0,0 +1,333 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_RENAMEAT = 38 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go new file mode 100644 index 0000000..f9f03eb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -0,0 +1,329 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go new file mode 100644 index 0000000..87c2118 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -0,0 +1,450 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips && linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 + SYS_CLONE3 = 4435 + SYS_CLOSE_RANGE = 4436 + SYS_OPENAT2 = 4437 + SYS_PIDFD_GETFD = 4438 + SYS_FACCESSAT2 = 4439 + SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 + SYS_MOUNT_SETATTR = 4442 + SYS_QUOTACTL_FD = 4443 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 + SYS_PROCESS_MRELEASE = 4448 + SYS_FUTEX_WAITV = 4449 + SYS_SET_MEMPOLICY_HOME_NODE = 4450 + SYS_CACHESTAT = 4451 + SYS_FCHMODAT2 = 4452 + SYS_MAP_SHADOW_STACK = 4453 + SYS_FUTEX_WAKE = 4454 + SYS_FUTEX_WAIT = 4455 + SYS_FUTEX_REQUEUE = 4456 + SYS_STATMOUNT = 4457 + SYS_LISTMOUNT = 4458 + SYS_LSM_GET_SELF_ATTR = 4459 + SYS_LSM_SET_SELF_ATTR = 4460 + SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 + SYS_OPEN_TREE_ATTR = 4467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go new file mode 100644 index 0000000..391ad10 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -0,0 +1,380 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_QUOTACTL_FD = 5443 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 + SYS_PROCESS_MRELEASE = 5448 + SYS_FUTEX_WAITV = 5449 + SYS_SET_MEMPOLICY_HOME_NODE = 5450 + SYS_CACHESTAT = 5451 + SYS_FCHMODAT2 = 5452 + SYS_MAP_SHADOW_STACK = 5453 + SYS_FUTEX_WAKE = 5454 + SYS_FUTEX_WAIT = 5455 + SYS_FUTEX_REQUEUE = 5456 + SYS_STATMOUNT = 5457 + SYS_LISTMOUNT = 5458 + SYS_LSM_GET_SELF_ATTR = 5459 + SYS_LSM_SET_SELF_ATTR = 5460 + SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 + SYS_OPEN_TREE_ATTR = 5467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go new file mode 100644 index 0000000..5656157 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -0,0 +1,380 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64le && linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 + SYS_CLONE3 = 5435 + SYS_CLOSE_RANGE = 5436 + SYS_OPENAT2 = 5437 + SYS_PIDFD_GETFD = 5438 + SYS_FACCESSAT2 = 5439 + SYS_PROCESS_MADVISE = 5440 + SYS_EPOLL_PWAIT2 = 5441 + SYS_MOUNT_SETATTR = 5442 + SYS_QUOTACTL_FD = 5443 + SYS_LANDLOCK_CREATE_RULESET = 5444 + SYS_LANDLOCK_ADD_RULE = 5445 + SYS_LANDLOCK_RESTRICT_SELF = 5446 + SYS_PROCESS_MRELEASE = 5448 + SYS_FUTEX_WAITV = 5449 + SYS_SET_MEMPOLICY_HOME_NODE = 5450 + SYS_CACHESTAT = 5451 + SYS_FCHMODAT2 = 5452 + SYS_MAP_SHADOW_STACK = 5453 + SYS_FUTEX_WAKE = 5454 + SYS_FUTEX_WAIT = 5455 + SYS_FUTEX_REQUEUE = 5456 + SYS_STATMOUNT = 5457 + SYS_LISTMOUNT = 5458 + SYS_LSM_GET_SELF_ATTR = 5459 + SYS_LSM_SET_SELF_ATTR = 5460 + SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 + SYS_SETXATTRAT = 5463 + SYS_GETXATTRAT = 5464 + SYS_LISTXATTRAT = 5465 + SYS_REMOVEXATTRAT = 5466 + SYS_OPEN_TREE_ATTR = 5467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go new file mode 100644 index 0000000..0482b52 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -0,0 +1,450 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mipsle && linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 + SYS_CLONE3 = 4435 + SYS_CLOSE_RANGE = 4436 + SYS_OPENAT2 = 4437 + SYS_PIDFD_GETFD = 4438 + SYS_FACCESSAT2 = 4439 + SYS_PROCESS_MADVISE = 4440 + SYS_EPOLL_PWAIT2 = 4441 + SYS_MOUNT_SETATTR = 4442 + SYS_QUOTACTL_FD = 4443 + SYS_LANDLOCK_CREATE_RULESET = 4444 + SYS_LANDLOCK_ADD_RULE = 4445 + SYS_LANDLOCK_RESTRICT_SELF = 4446 + SYS_PROCESS_MRELEASE = 4448 + SYS_FUTEX_WAITV = 4449 + SYS_SET_MEMPOLICY_HOME_NODE = 4450 + SYS_CACHESTAT = 4451 + SYS_FCHMODAT2 = 4452 + SYS_MAP_SHADOW_STACK = 4453 + SYS_FUTEX_WAKE = 4454 + SYS_FUTEX_WAIT = 4455 + SYS_FUTEX_REQUEUE = 4456 + SYS_STATMOUNT = 4457 + SYS_LISTMOUNT = 4458 + SYS_LSM_GET_SELF_ATTR = 4459 + SYS_LSM_SET_SELF_ATTR = 4460 + SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 + SYS_SETXATTRAT = 4463 + SYS_GETXATTRAT = 4464 + SYS_LISTXATTRAT = 4465 + SYS_REMOVEXATTRAT = 4466 + SYS_OPEN_TREE_ATTR = 4467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go new file mode 100644 index 0000000..71806f0 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -0,0 +1,457 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_FCNTL64 = 204 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_SENDFILE64 = 226 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_FADVISE64_64 = 254 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_FSTATAT64 = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go new file mode 100644 index 0000000..e35a710 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -0,0 +1,429 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go new file mode 100644 index 0000000..2aea476 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -0,0 +1,429 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64le && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go new file mode 100644 index 0000000..6c9bb4e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -0,0 +1,334 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_RISCV_HWPROBE = 258 + SYS_RISCV_FLUSH_ICACHE = 259 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go new file mode 100644 index 0000000..680bc99 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -0,0 +1,395 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build s390x && linux + +package unix + +const ( + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_RESTART_SYSCALL = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SIGNAL = 48 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_LOOKUP_DCOOKIE = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_GETDENTS = 141 + SYS_SELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_GETRLIMIT = 191 + SYS_LCHOWN = 198 + SYS_GETUID = 199 + SYS_GETGID = 200 + SYS_GETEUID = 201 + SYS_GETEGID = 202 + SYS_SETREUID = 203 + SYS_SETREGID = 204 + SYS_GETGROUPS = 205 + SYS_SETGROUPS = 206 + SYS_FCHOWN = 207 + SYS_SETRESUID = 208 + SYS_GETRESUID = 209 + SYS_SETRESGID = 210 + SYS_GETRESGID = 211 + SYS_CHOWN = 212 + SYS_SETUID = 213 + SYS_SETGID = 214 + SYS_SETFSUID = 215 + SYS_SETFSGID = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_READAHEAD = 222 + SYS_SETXATTR = 224 + SYS_LSETXATTR = 225 + SYS_FSETXATTR = 226 + SYS_GETXATTR = 227 + SYS_LGETXATTR = 228 + SYS_FGETXATTR = 229 + SYS_LISTXATTR = 230 + SYS_LLISTXATTR = 231 + SYS_FLISTXATTR = 232 + SYS_REMOVEXATTR = 233 + SYS_LREMOVEXATTR = 234 + SYS_FREMOVEXATTR = 235 + SYS_GETTID = 236 + SYS_TKILL = 237 + SYS_FUTEX = 238 + SYS_SCHED_SETAFFINITY = 239 + SYS_SCHED_GETAFFINITY = 240 + SYS_TGKILL = 241 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_EPOLL_CREATE = 249 + SYS_EPOLL_CTL = 250 + SYS_EPOLL_WAIT = 251 + SYS_SET_TID_ADDRESS = 252 + SYS_FADVISE64 = 253 + SYS_TIMER_CREATE = 254 + SYS_TIMER_SETTIME = 255 + SYS_TIMER_GETTIME = 256 + SYS_TIMER_GETOVERRUN = 257 + SYS_TIMER_DELETE = 258 + SYS_CLOCK_SETTIME = 259 + SYS_CLOCK_GETTIME = 260 + SYS_CLOCK_GETRES = 261 + SYS_CLOCK_NANOSLEEP = 262 + SYS_STATFS64 = 265 + SYS_FSTATFS64 = 266 + SYS_REMAP_FILE_PAGES = 267 + SYS_MBIND = 268 + SYS_GET_MEMPOLICY = 269 + SYS_SET_MEMPOLICY = 270 + SYS_MQ_OPEN = 271 + SYS_MQ_UNLINK = 272 + SYS_MQ_TIMEDSEND = 273 + SYS_MQ_TIMEDRECEIVE = 274 + SYS_MQ_NOTIFY = 275 + SYS_MQ_GETSETATTR = 276 + SYS_KEXEC_LOAD = 277 + SYS_ADD_KEY = 278 + SYS_REQUEST_KEY = 279 + SYS_KEYCTL = 280 + SYS_WAITID = 281 + SYS_IOPRIO_SET = 282 + SYS_IOPRIO_GET = 283 + SYS_INOTIFY_INIT = 284 + SYS_INOTIFY_ADD_WATCH = 285 + SYS_INOTIFY_RM_WATCH = 286 + SYS_MIGRATE_PAGES = 287 + SYS_OPENAT = 288 + SYS_MKDIRAT = 289 + SYS_MKNODAT = 290 + SYS_FCHOWNAT = 291 + SYS_FUTIMESAT = 292 + SYS_NEWFSTATAT = 293 + SYS_UNLINKAT = 294 + SYS_RENAMEAT = 295 + SYS_LINKAT = 296 + SYS_SYMLINKAT = 297 + SYS_READLINKAT = 298 + SYS_FCHMODAT = 299 + SYS_FACCESSAT = 300 + SYS_PSELECT6 = 301 + SYS_PPOLL = 302 + SYS_UNSHARE = 303 + SYS_SET_ROBUST_LIST = 304 + SYS_GET_ROBUST_LIST = 305 + SYS_SPLICE = 306 + SYS_SYNC_FILE_RANGE = 307 + SYS_TEE = 308 + SYS_VMSPLICE = 309 + SYS_MOVE_PAGES = 310 + SYS_GETCPU = 311 + SYS_EPOLL_PWAIT = 312 + SYS_UTIMES = 313 + SYS_FALLOCATE = 314 + SYS_UTIMENSAT = 315 + SYS_SIGNALFD = 316 + SYS_TIMERFD = 317 + SYS_EVENTFD = 318 + SYS_TIMERFD_CREATE = 319 + SYS_TIMERFD_SETTIME = 320 + SYS_TIMERFD_GETTIME = 321 + SYS_SIGNALFD4 = 322 + SYS_EVENTFD2 = 323 + SYS_INOTIFY_INIT1 = 324 + SYS_PIPE2 = 325 + SYS_DUP3 = 326 + SYS_EPOLL_CREATE1 = 327 + SYS_PREADV = 328 + SYS_PWRITEV = 329 + SYS_RT_TGSIGQUEUEINFO = 330 + SYS_PERF_EVENT_OPEN = 331 + SYS_FANOTIFY_INIT = 332 + SYS_FANOTIFY_MARK = 333 + SYS_PRLIMIT64 = 334 + SYS_NAME_TO_HANDLE_AT = 335 + SYS_OPEN_BY_HANDLE_AT = 336 + SYS_CLOCK_ADJTIME = 337 + SYS_SYNCFS = 338 + SYS_SETNS = 339 + SYS_PROCESS_VM_READV = 340 + SYS_PROCESS_VM_WRITEV = 341 + SYS_S390_RUNTIME_INSTR = 342 + SYS_KCMP = 343 + SYS_FINIT_MODULE = 344 + SYS_SCHED_SETATTR = 345 + SYS_SCHED_GETATTR = 346 + SYS_RENAMEAT2 = 347 + SYS_SECCOMP = 348 + SYS_GETRANDOM = 349 + SYS_MEMFD_CREATE = 350 + SYS_BPF = 351 + SYS_S390_PCI_MMIO_WRITE = 352 + SYS_S390_PCI_MMIO_READ = 353 + SYS_EXECVEAT = 354 + SYS_USERFAULTFD = 355 + SYS_MEMBARRIER = 356 + SYS_RECVMMSG = 357 + SYS_SENDMMSG = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 + SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 + SYS_PKEY_MPROTECT = 384 + SYS_PKEY_ALLOC = 385 + SYS_PKEY_FREE = 386 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go new file mode 100644 index 0000000..620f271 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -0,0 +1,408 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build sparc64 && linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_VSERVER = 267 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 + SYS_STATX = 360 + SYS_IO_PGETEVENTS = 361 + SYS_PKEY_MPROTECT = 362 + SYS_PKEY_ALLOC = 363 + SYS_PKEY_FREE = 364 + SYS_RSEQ = 365 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 + SYS_CACHESTAT = 451 + SYS_FCHMODAT2 = 452 + SYS_MAP_SHADOW_STACK = 453 + SYS_FUTEX_WAKE = 454 + SYS_FUTEX_WAIT = 455 + SYS_FUTEX_REQUEUE = 456 + SYS_STATMOUNT = 457 + SYS_LISTMOUNT = 458 + SYS_LSM_GET_SELF_ATTR = 459 + SYS_LSM_SET_SELF_ATTR = 460 + SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 + SYS_SETXATTRAT = 463 + SYS_GETXATTRAT = 464 + SYS_LISTXATTRAT = 465 + SYS_REMOVEXATTRAT = 466 + SYS_OPEN_TREE_ATTR = 467 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go new file mode 100644 index 0000000..b2aa8cd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go new file mode 100644 index 0000000..524a1b1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go new file mode 100644 index 0000000..d59b943 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go new file mode 100644 index 0000000..31e771d --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; DO NOT EDIT. + +//go:build arm64 && netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go new file mode 100644 index 0000000..9fd77c6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -0,0 +1,219 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go new file mode 100644 index 0000000..af10af2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -0,0 +1,219 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 0000000..cc2028a --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,219 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go new file mode 100644 index 0000000..c06dd44 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go new file mode 100644 index 0000000..9ddbf3e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go @@ -0,0 +1,221 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_MSYSCALL = 37 // { int sys_msyscall(void *addr, size_t len); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS___REALPATH = 115 // { int sys___realpath(const char *pathname, char *resolved); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS___TMPFD = 164 // { int sys___tmpfd(int flags); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go new file mode 100644 index 0000000..19a6ee4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go @@ -0,0 +1,217 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go new file mode 100644 index 0000000..05192a7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && openbsd + +package unix + +// Deprecated: Use libc wrappers instead of direct syscalls. +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go new file mode 100644 index 0000000..5e8c263 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go @@ -0,0 +1,2852 @@ +// go run mksyscall_zos_s390x.go -o_sysnum zsysnum_zos_s390x.go -o_syscall zsyscall_zos_s390x.go -i_syscall syscall_zos_s390x.go -o_asm zsymaddr_zos_s390x.s +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build zos && s390x + +package unix + +const ( + SYS_LOG = 0x17 // 23 + SYS_COSH = 0x18 // 24 + SYS_TANH = 0x19 // 25 + SYS_EXP = 0x1A // 26 + SYS_MODF = 0x1B // 27 + SYS_LOG10 = 0x1C // 28 + SYS_FREXP = 0x1D // 29 + SYS_LDEXP = 0x1E // 30 + SYS_CEIL = 0x1F // 31 + SYS_POW = 0x20 // 32 + SYS_SQRT = 0x21 // 33 + SYS_FLOOR = 0x22 // 34 + SYS_J1 = 0x23 // 35 + SYS_FABS = 0x24 // 36 + SYS_FMOD = 0x25 // 37 + SYS_J0 = 0x26 // 38 + SYS_YN = 0x27 // 39 + SYS_JN = 0x28 // 40 + SYS_Y0 = 0x29 // 41 + SYS_Y1 = 0x2A // 42 + SYS_HYPOT = 0x2B // 43 + SYS_ERF = 0x2C // 44 + SYS_ERFC = 0x2D // 45 + SYS_GAMMA = 0x2E // 46 + SYS_ISALPHA = 0x30 // 48 + SYS_ISALNUM = 0x31 // 49 + SYS_ISLOWER = 0x32 // 50 + SYS_ISCNTRL = 0x33 // 51 + SYS_ISDIGIT = 0x34 // 52 + SYS_ISGRAPH = 0x35 // 53 + SYS_ISUPPER = 0x36 // 54 + SYS_ISPRINT = 0x37 // 55 + SYS_ISPUNCT = 0x38 // 56 + SYS_ISSPACE = 0x39 // 57 + SYS_SETLOCAL = 0x3A // 58 + SYS_SETLOCALE = 0x3A // 58 + SYS_ISXDIGIT = 0x3B // 59 + SYS_TOLOWER = 0x3C // 60 + SYS_TOUPPER = 0x3D // 61 + SYS_ASIN = 0x3E // 62 + SYS_SIN = 0x3F // 63 + SYS_COS = 0x40 // 64 + SYS_TAN = 0x41 // 65 + SYS_SINH = 0x42 // 66 + SYS_ACOS = 0x43 // 67 + SYS_ATAN = 0x44 // 68 + SYS_ATAN2 = 0x45 // 69 + SYS_FTELL = 0x46 // 70 + SYS_FGETPOS = 0x47 // 71 + SYS_FSEEK = 0x48 // 72 + SYS_FSETPOS = 0x49 // 73 + SYS_FERROR = 0x4A // 74 + SYS_REWIND = 0x4B // 75 + SYS_CLEARERR = 0x4C // 76 + SYS_FEOF = 0x4D // 77 + SYS_ATOL = 0x4E // 78 + SYS_PERROR = 0x4F // 79 + SYS_ATOF = 0x50 // 80 + SYS_ATOI = 0x51 // 81 + SYS_RAND = 0x52 // 82 + SYS_STRTOD = 0x53 // 83 + SYS_STRTOL = 0x54 // 84 + SYS_STRTOUL = 0x55 // 85 + SYS_MALLOC = 0x56 // 86 + SYS_SRAND = 0x57 // 87 + SYS_CALLOC = 0x58 // 88 + SYS_FREE = 0x59 // 89 + SYS_EXIT = 0x5A // 90 + SYS_REALLOC = 0x5B // 91 + SYS_ABORT = 0x5C // 92 + SYS___ABORT = 0x5C // 92 + SYS_ATEXIT = 0x5D // 93 + SYS_RAISE = 0x5E // 94 + SYS_SETJMP = 0x5F // 95 + SYS_LONGJMP = 0x60 // 96 + SYS_SIGNAL = 0x61 // 97 + SYS_TMPNAM = 0x62 // 98 + SYS_REMOVE = 0x63 // 99 + SYS_RENAME = 0x64 // 100 + SYS_TMPFILE = 0x65 // 101 + SYS_FREOPEN = 0x66 // 102 + SYS_FCLOSE = 0x67 // 103 + SYS_FFLUSH = 0x68 // 104 + SYS_FOPEN = 0x69 // 105 + SYS_FSCANF = 0x6A // 106 + SYS_SETBUF = 0x6B // 107 + SYS_SETVBUF = 0x6C // 108 + SYS_FPRINTF = 0x6D // 109 + SYS_SSCANF = 0x6E // 110 + SYS_PRINTF = 0x6F // 111 + SYS_SCANF = 0x70 // 112 + SYS_SPRINTF = 0x71 // 113 + SYS_FGETC = 0x72 // 114 + SYS_VFPRINTF = 0x73 // 115 + SYS_VPRINTF = 0x74 // 116 + SYS_VSPRINTF = 0x75 // 117 + SYS_GETC = 0x76 // 118 + SYS_FGETS = 0x77 // 119 + SYS_FPUTC = 0x78 // 120 + SYS_FPUTS = 0x79 // 121 + SYS_PUTCHAR = 0x7A // 122 + SYS_GETCHAR = 0x7B // 123 + SYS_GETS = 0x7C // 124 + SYS_PUTC = 0x7D // 125 + SYS_FWRITE = 0x7E // 126 + SYS_PUTS = 0x7F // 127 + SYS_UNGETC = 0x80 // 128 + SYS_FREAD = 0x81 // 129 + SYS_WCSTOMBS = 0x82 // 130 + SYS_MBTOWC = 0x83 // 131 + SYS_WCTOMB = 0x84 // 132 + SYS_MBSTOWCS = 0x85 // 133 + SYS_WCSCPY = 0x86 // 134 + SYS_WCSCAT = 0x87 // 135 + SYS_WCSCHR = 0x88 // 136 + SYS_WCSCMP = 0x89 // 137 + SYS_WCSNCMP = 0x8A // 138 + SYS_WCSCSPN = 0x8B // 139 + SYS_WCSLEN = 0x8C // 140 + SYS_WCSNCAT = 0x8D // 141 + SYS_WCSSPN = 0x8E // 142 + SYS_WCSNCPY = 0x8F // 143 + SYS_ABS = 0x90 // 144 + SYS_DIV = 0x91 // 145 + SYS_LABS = 0x92 // 146 + SYS_STRNCPY = 0x93 // 147 + SYS_MEMCPY = 0x94 // 148 + SYS_MEMMOVE = 0x95 // 149 + SYS_STRCPY = 0x96 // 150 + SYS_STRCMP = 0x97 // 151 + SYS_STRCAT = 0x98 // 152 + SYS_STRNCAT = 0x99 // 153 + SYS_MEMCMP = 0x9A // 154 + SYS_MEMCHR = 0x9B // 155 + SYS_STRCOLL = 0x9C // 156 + SYS_STRNCMP = 0x9D // 157 + SYS_STRXFRM = 0x9E // 158 + SYS_STRRCHR = 0x9F // 159 + SYS_STRCHR = 0xA0 // 160 + SYS_STRCSPN = 0xA1 // 161 + SYS_STRPBRK = 0xA2 // 162 + SYS_MEMSET = 0xA3 // 163 + SYS_STRSPN = 0xA4 // 164 + SYS_STRSTR = 0xA5 // 165 + SYS_STRTOK = 0xA6 // 166 + SYS_DIFFTIME = 0xA7 // 167 + SYS_STRERROR = 0xA8 // 168 + SYS_STRLEN = 0xA9 // 169 + SYS_CLOCK = 0xAA // 170 + SYS_CTIME = 0xAB // 171 + SYS_MKTIME = 0xAC // 172 + SYS_TIME = 0xAD // 173 + SYS_ASCTIME = 0xAE // 174 + SYS_MBLEN = 0xAF // 175 + SYS_GMTIME = 0xB0 // 176 + SYS_LOCALTIM = 0xB1 // 177 + SYS_LOCALTIME = 0xB1 // 177 + SYS_STRFTIME = 0xB2 // 178 + SYS___GETCB = 0xB4 // 180 + SYS_FUPDATE = 0xB5 // 181 + SYS___FUPDT = 0xB5 // 181 + SYS_CLRMEMF = 0xBD // 189 + SYS___CLRMF = 0xBD // 189 + SYS_FETCHEP = 0xBF // 191 + SYS___FTCHEP = 0xBF // 191 + SYS_FLDATA = 0xC1 // 193 + SYS___FLDATA = 0xC1 // 193 + SYS_DYNFREE = 0xC2 // 194 + SYS___DYNFRE = 0xC2 // 194 + SYS_DYNALLOC = 0xC3 // 195 + SYS___DYNALL = 0xC3 // 195 + SYS___CDUMP = 0xC4 // 196 + SYS_CSNAP = 0xC5 // 197 + SYS___CSNAP = 0xC5 // 197 + SYS_CTRACE = 0xC6 // 198 + SYS___CTRACE = 0xC6 // 198 + SYS___CTEST = 0xC7 // 199 + SYS_SETENV = 0xC8 // 200 + SYS___SETENV = 0xC8 // 200 + SYS_CLEARENV = 0xC9 // 201 + SYS___CLRENV = 0xC9 // 201 + SYS___REGCOMP_STD = 0xEA // 234 + SYS_NL_LANGINFO = 0xFC // 252 + SYS_GETSYNTX = 0xFD // 253 + SYS_ISBLANK = 0xFE // 254 + SYS___ISBLNK = 0xFE // 254 + SYS_ISWALNUM = 0xFF // 255 + SYS_ISWALPHA = 0x100 // 256 + SYS_ISWBLANK = 0x101 // 257 + SYS___ISWBLK = 0x101 // 257 + SYS_ISWCNTRL = 0x102 // 258 + SYS_ISWDIGIT = 0x103 // 259 + SYS_ISWGRAPH = 0x104 // 260 + SYS_ISWLOWER = 0x105 // 261 + SYS_ISWPRINT = 0x106 // 262 + SYS_ISWPUNCT = 0x107 // 263 + SYS_ISWSPACE = 0x108 // 264 + SYS_ISWUPPER = 0x109 // 265 + SYS_ISWXDIGI = 0x10A // 266 + SYS_ISWXDIGIT = 0x10A // 266 + SYS_WCTYPE = 0x10B // 267 + SYS_ISWCTYPE = 0x10C // 268 + SYS_TOWLOWER = 0x10D // 269 + SYS_TOWUPPER = 0x10E // 270 + SYS_MBSINIT = 0x10F // 271 + SYS_WCTOB = 0x110 // 272 + SYS_MBRLEN = 0x111 // 273 + SYS_MBRTOWC = 0x112 // 274 + SYS_MBSRTOWC = 0x113 // 275 + SYS_MBSRTOWCS = 0x113 // 275 + SYS_WCRTOMB = 0x114 // 276 + SYS_WCSRTOMB = 0x115 // 277 + SYS_WCSRTOMBS = 0x115 // 277 + SYS___CSID = 0x116 // 278 + SYS___WCSID = 0x117 // 279 + SYS_STRPTIME = 0x118 // 280 + SYS___STRPTM = 0x118 // 280 + SYS_STRFMON = 0x119 // 281 + SYS___RPMTCH = 0x11A // 282 + SYS_WCSSTR = 0x11B // 283 + SYS_WCSTOK = 0x12C // 300 + SYS_WCSTOL = 0x12D // 301 + SYS_WCSTOD = 0x12E // 302 + SYS_WCSTOUL = 0x12F // 303 + SYS_WCSCOLL = 0x130 // 304 + SYS_WCSXFRM = 0x131 // 305 + SYS_WCSWIDTH = 0x132 // 306 + SYS_WCWIDTH = 0x133 // 307 + SYS_WCSFTIME = 0x134 // 308 + SYS_SWPRINTF = 0x135 // 309 + SYS_VSWPRINT = 0x136 // 310 + SYS_VSWPRINTF = 0x136 // 310 + SYS_SWSCANF = 0x137 // 311 + SYS_REGCOMP = 0x138 // 312 + SYS_REGEXEC = 0x139 // 313 + SYS_REGFREE = 0x13A // 314 + SYS_REGERROR = 0x13B // 315 + SYS_FGETWC = 0x13C // 316 + SYS_FGETWS = 0x13D // 317 + SYS_FPUTWC = 0x13E // 318 + SYS_FPUTWS = 0x13F // 319 + SYS_GETWC = 0x140 // 320 + SYS_GETWCHAR = 0x141 // 321 + SYS_PUTWC = 0x142 // 322 + SYS_PUTWCHAR = 0x143 // 323 + SYS_UNGETWC = 0x144 // 324 + SYS_ICONV_OPEN = 0x145 // 325 + SYS_ICONV = 0x146 // 326 + SYS_ICONV_CLOSE = 0x147 // 327 + SYS_ISMCCOLLEL = 0x14C // 332 + SYS_STRTOCOLL = 0x14D // 333 + SYS_COLLTOSTR = 0x14E // 334 + SYS_COLLEQUIV = 0x14F // 335 + SYS_COLLRANGE = 0x150 // 336 + SYS_CCLASS = 0x151 // 337 + SYS_COLLORDER = 0x152 // 338 + SYS___DEMANGLE = 0x154 // 340 + SYS_FDOPEN = 0x155 // 341 + SYS___ERRNO = 0x156 // 342 + SYS___ERRNO2 = 0x157 // 343 + SYS___TERROR = 0x158 // 344 + SYS_MAXCOLL = 0x169 // 361 + SYS_GETMCCOLL = 0x16A // 362 + SYS_GETWMCCOLL = 0x16B // 363 + SYS___ERR2AD = 0x16C // 364 + SYS_DLLQUERYFN = 0x16D // 365 + SYS_DLLQUERYVAR = 0x16E // 366 + SYS_DLLFREE = 0x16F // 367 + SYS_DLLLOAD = 0x170 // 368 + SYS__EXIT = 0x174 // 372 + SYS_ACCESS = 0x175 // 373 + SYS_ALARM = 0x176 // 374 + SYS_CFGETISPEED = 0x177 // 375 + SYS_CFGETOSPEED = 0x178 // 376 + SYS_CFSETISPEED = 0x179 // 377 + SYS_CFSETOSPEED = 0x17A // 378 + SYS_CHDIR = 0x17B // 379 + SYS_CHMOD = 0x17C // 380 + SYS_CHOWN = 0x17D // 381 + SYS_CLOSE = 0x17E // 382 + SYS_CLOSEDIR = 0x17F // 383 + SYS_CREAT = 0x180 // 384 + SYS_CTERMID = 0x181 // 385 + SYS_DUP = 0x182 // 386 + SYS_DUP2 = 0x183 // 387 + SYS_EXECL = 0x184 // 388 + SYS_EXECLE = 0x185 // 389 + SYS_EXECLP = 0x186 // 390 + SYS_EXECV = 0x187 // 391 + SYS_EXECVE = 0x188 // 392 + SYS_EXECVP = 0x189 // 393 + SYS_FCHMOD = 0x18A // 394 + SYS_FCHOWN = 0x18B // 395 + SYS_FCNTL = 0x18C // 396 + SYS_FILENO = 0x18D // 397 + SYS_FORK = 0x18E // 398 + SYS_FPATHCONF = 0x18F // 399 + SYS_FSTAT = 0x190 // 400 + SYS_FSYNC = 0x191 // 401 + SYS_FTRUNCATE = 0x192 // 402 + SYS_GETCWD = 0x193 // 403 + SYS_GETEGID = 0x194 // 404 + SYS_GETEUID = 0x195 // 405 + SYS_GETGID = 0x196 // 406 + SYS_GETGRGID = 0x197 // 407 + SYS_GETGRNAM = 0x198 // 408 + SYS_GETGROUPS = 0x199 // 409 + SYS_GETLOGIN = 0x19A // 410 + SYS_W_GETMNTENT = 0x19B // 411 + SYS_GETPGRP = 0x19C // 412 + SYS_GETPID = 0x19D // 413 + SYS_GETPPID = 0x19E // 414 + SYS_GETPWNAM = 0x19F // 415 + SYS_GETPWUID = 0x1A0 // 416 + SYS_GETUID = 0x1A1 // 417 + SYS_W_IOCTL = 0x1A2 // 418 + SYS_ISATTY = 0x1A3 // 419 + SYS_KILL = 0x1A4 // 420 + SYS_LINK = 0x1A5 // 421 + SYS_LSEEK = 0x1A6 // 422 + SYS_LSTAT = 0x1A7 // 423 + SYS_MKDIR = 0x1A8 // 424 + SYS_MKFIFO = 0x1A9 // 425 + SYS_MKNOD = 0x1AA // 426 + SYS_MOUNT = 0x1AB // 427 + SYS_OPEN = 0x1AC // 428 + SYS_OPENDIR = 0x1AD // 429 + SYS_PATHCONF = 0x1AE // 430 + SYS_PAUSE = 0x1AF // 431 + SYS_PIPE = 0x1B0 // 432 + SYS_W_GETPSENT = 0x1B1 // 433 + SYS_READ = 0x1B2 // 434 + SYS_READDIR = 0x1B3 // 435 + SYS_READLINK = 0x1B4 // 436 + SYS_REWINDDIR = 0x1B5 // 437 + SYS_RMDIR = 0x1B6 // 438 + SYS_SETEGID = 0x1B7 // 439 + SYS_SETEUID = 0x1B8 // 440 + SYS_SETGID = 0x1B9 // 441 + SYS_SETPGID = 0x1BA // 442 + SYS_SETSID = 0x1BB // 443 + SYS_SETUID = 0x1BC // 444 + SYS_SIGACTION = 0x1BD // 445 + SYS_SIGADDSET = 0x1BE // 446 + SYS_SIGDELSET = 0x1BF // 447 + SYS_SIGEMPTYSET = 0x1C0 // 448 + SYS_SIGFILLSET = 0x1C1 // 449 + SYS_SIGISMEMBER = 0x1C2 // 450 + SYS_SIGLONGJMP = 0x1C3 // 451 + SYS_SIGPENDING = 0x1C4 // 452 + SYS_SIGPROCMASK = 0x1C5 // 453 + SYS_SIGSETJMP = 0x1C6 // 454 + SYS_SIGSUSPEND = 0x1C7 // 455 + SYS_SLEEP = 0x1C8 // 456 + SYS_STAT = 0x1C9 // 457 + SYS_W_STATFS = 0x1CA // 458 + SYS_SYMLINK = 0x1CB // 459 + SYS_SYSCONF = 0x1CC // 460 + SYS_TCDRAIN = 0x1CD // 461 + SYS_TCFLOW = 0x1CE // 462 + SYS_TCFLUSH = 0x1CF // 463 + SYS_TCGETATTR = 0x1D0 // 464 + SYS_TCGETPGRP = 0x1D1 // 465 + SYS_TCSENDBREAK = 0x1D2 // 466 + SYS_TCSETATTR = 0x1D3 // 467 + SYS_TCSETPGRP = 0x1D4 // 468 + SYS_TIMES = 0x1D5 // 469 + SYS_TTYNAME = 0x1D6 // 470 + SYS_TZSET = 0x1D7 // 471 + SYS_UMASK = 0x1D8 // 472 + SYS_UMOUNT = 0x1D9 // 473 + SYS_UNAME = 0x1DA // 474 + SYS_UNLINK = 0x1DB // 475 + SYS_UTIME = 0x1DC // 476 + SYS_WAIT = 0x1DD // 477 + SYS_WAITPID = 0x1DE // 478 + SYS_WRITE = 0x1DF // 479 + SYS_CHAUDIT = 0x1E0 // 480 + SYS_FCHAUDIT = 0x1E1 // 481 + SYS_GETGROUPSBYNAME = 0x1E2 // 482 + SYS_SIGWAIT = 0x1E3 // 483 + SYS_PTHREAD_EXIT = 0x1E4 // 484 + SYS_PTHREAD_KILL = 0x1E5 // 485 + SYS_PTHREAD_ATTR_INIT = 0x1E6 // 486 + SYS_PTHREAD_ATTR_DESTROY = 0x1E7 // 487 + SYS_PTHREAD_ATTR_SETSTACKSIZE = 0x1E8 // 488 + SYS_PTHREAD_ATTR_GETSTACKSIZE = 0x1E9 // 489 + SYS_PTHREAD_ATTR_SETDETACHSTATE = 0x1EA // 490 + SYS_PTHREAD_ATTR_GETDETACHSTATE = 0x1EB // 491 + SYS_PTHREAD_ATTR_SETWEIGHT_NP = 0x1EC // 492 + SYS_PTHREAD_ATTR_GETWEIGHT_NP = 0x1ED // 493 + SYS_PTHREAD_CANCEL = 0x1EE // 494 + SYS_PTHREAD_CLEANUP_PUSH = 0x1EF // 495 + SYS_PTHREAD_CLEANUP_POP = 0x1F0 // 496 + SYS_PTHREAD_CONDATTR_INIT = 0x1F1 // 497 + SYS_PTHREAD_CONDATTR_DESTROY = 0x1F2 // 498 + SYS_PTHREAD_COND_INIT = 0x1F3 // 499 + SYS_PTHREAD_COND_DESTROY = 0x1F4 // 500 + SYS_PTHREAD_COND_SIGNAL = 0x1F5 // 501 + SYS_PTHREAD_COND_BROADCAST = 0x1F6 // 502 + SYS_PTHREAD_COND_WAIT = 0x1F7 // 503 + SYS_PTHREAD_COND_TIMEDWAIT = 0x1F8 // 504 + SYS_PTHREAD_CREATE = 0x1F9 // 505 + SYS_PTHREAD_DETACH = 0x1FA // 506 + SYS_PTHREAD_EQUAL = 0x1FB // 507 + SYS_PTHREAD_GETSPECIFIC = 0x1FC // 508 + SYS_PTHREAD_JOIN = 0x1FD // 509 + SYS_PTHREAD_KEY_CREATE = 0x1FE // 510 + SYS_PTHREAD_MUTEXATTR_INIT = 0x1FF // 511 + SYS_PTHREAD_MUTEXATTR_DESTROY = 0x200 // 512 + SYS_PTHREAD_MUTEXATTR_SETKIND_NP = 0x201 // 513 + SYS_PTHREAD_MUTEXATTR_GETKIND_NP = 0x202 // 514 + SYS_PTHREAD_MUTEX_INIT = 0x203 // 515 + SYS_PTHREAD_MUTEX_DESTROY = 0x204 // 516 + SYS_PTHREAD_MUTEX_LOCK = 0x205 // 517 + SYS_PTHREAD_MUTEX_TRYLOCK = 0x206 // 518 + SYS_PTHREAD_MUTEX_UNLOCK = 0x207 // 519 + SYS_PTHREAD_ONCE = 0x209 // 521 + SYS_PTHREAD_SELF = 0x20A // 522 + SYS_PTHREAD_SETINTR = 0x20B // 523 + SYS_PTHREAD_SETINTRTYPE = 0x20C // 524 + SYS_PTHREAD_SETSPECIFIC = 0x20D // 525 + SYS_PTHREAD_TESTINTR = 0x20E // 526 + SYS_PTHREAD_YIELD = 0x20F // 527 + SYS_TW_OPEN = 0x210 // 528 + SYS_TW_FCNTL = 0x211 // 529 + SYS_PTHREAD_JOIN_D4_NP = 0x212 // 530 + SYS_PTHREAD_CONDATTR_SETKIND_NP = 0x213 // 531 + SYS_PTHREAD_CONDATTR_GETKIND_NP = 0x214 // 532 + SYS_EXTLINK_NP = 0x215 // 533 + SYS___PASSWD = 0x216 // 534 + SYS_SETGROUPS = 0x217 // 535 + SYS_INITGROUPS = 0x218 // 536 + SYS_WCSPBRK = 0x23F // 575 + SYS_WCSRCHR = 0x240 // 576 + SYS_SVC99 = 0x241 // 577 + SYS___SVC99 = 0x241 // 577 + SYS_WCSWCS = 0x242 // 578 + SYS_LOCALECO = 0x243 // 579 + SYS_LOCALECONV = 0x243 // 579 + SYS___LIBREL = 0x244 // 580 + SYS_RELEASE = 0x245 // 581 + SYS___RLSE = 0x245 // 581 + SYS_FLOCATE = 0x246 // 582 + SYS___FLOCT = 0x246 // 582 + SYS_FDELREC = 0x247 // 583 + SYS___FDLREC = 0x247 // 583 + SYS_FETCH = 0x248 // 584 + SYS___FETCH = 0x248 // 584 + SYS_QSORT = 0x249 // 585 + SYS_GETENV = 0x24A // 586 + SYS_SYSTEM = 0x24B // 587 + SYS_BSEARCH = 0x24C // 588 + SYS_LDIV = 0x24D // 589 + SYS___THROW = 0x25E // 606 + SYS___RETHROW = 0x25F // 607 + SYS___CLEANUPCATCH = 0x260 // 608 + SYS___CATCHMATCH = 0x261 // 609 + SYS___CLEAN2UPCATCH = 0x262 // 610 + SYS_PUTENV = 0x26A // 618 + SYS___GETENV = 0x26F // 623 + SYS_GETPRIORITY = 0x270 // 624 + SYS_NICE = 0x271 // 625 + SYS_SETPRIORITY = 0x272 // 626 + SYS_GETITIMER = 0x273 // 627 + SYS_SETITIMER = 0x274 // 628 + SYS_MSGCTL = 0x275 // 629 + SYS_MSGGET = 0x276 // 630 + SYS_MSGRCV = 0x277 // 631 + SYS_MSGSND = 0x278 // 632 + SYS_MSGXRCV = 0x279 // 633 + SYS___MSGXR = 0x279 // 633 + SYS_SEMCTL = 0x27A // 634 + SYS_SEMGET = 0x27B // 635 + SYS_SEMOP = 0x27C // 636 + SYS_SHMAT = 0x27D // 637 + SYS_SHMCTL = 0x27E // 638 + SYS_SHMDT = 0x27F // 639 + SYS_SHMGET = 0x280 // 640 + SYS___GETIPC = 0x281 // 641 + SYS_SETGRENT = 0x282 // 642 + SYS_GETGRENT = 0x283 // 643 + SYS_ENDGRENT = 0x284 // 644 + SYS_SETPWENT = 0x285 // 645 + SYS_GETPWENT = 0x286 // 646 + SYS_ENDPWENT = 0x287 // 647 + SYS_BSD_SIGNAL = 0x288 // 648 + SYS_KILLPG = 0x289 // 649 + SYS_SIGALTSTACK = 0x28A // 650 + SYS_SIGHOLD = 0x28B // 651 + SYS_SIGIGNORE = 0x28C // 652 + SYS_SIGINTERRUPT = 0x28D // 653 + SYS_SIGPAUSE = 0x28E // 654 + SYS_SIGRELSE = 0x28F // 655 + SYS_SIGSET = 0x290 // 656 + SYS_SIGSTACK = 0x291 // 657 + SYS_GETRLIMIT = 0x292 // 658 + SYS_SETRLIMIT = 0x293 // 659 + SYS_GETRUSAGE = 0x294 // 660 + SYS_MMAP = 0x295 // 661 + SYS_MPROTECT = 0x296 // 662 + SYS_MSYNC = 0x297 // 663 + SYS_MUNMAP = 0x298 // 664 + SYS_CONFSTR = 0x299 // 665 + SYS_GETOPT = 0x29A // 666 + SYS_LCHOWN = 0x29B // 667 + SYS_TRUNCATE = 0x29C // 668 + SYS_GETSUBOPT = 0x29D // 669 + SYS_SETPGRP = 0x29E // 670 + SYS___GDERR = 0x29F // 671 + SYS___TZONE = 0x2A0 // 672 + SYS___DLGHT = 0x2A1 // 673 + SYS___OPARGF = 0x2A2 // 674 + SYS___OPOPTF = 0x2A3 // 675 + SYS___OPINDF = 0x2A4 // 676 + SYS___OPERRF = 0x2A5 // 677 + SYS_GETDATE = 0x2A6 // 678 + SYS_WAIT3 = 0x2A7 // 679 + SYS_WAITID = 0x2A8 // 680 + SYS___CATTRM = 0x2A9 // 681 + SYS___GDTRM = 0x2AA // 682 + SYS___RNDTRM = 0x2AB // 683 + SYS_CRYPT = 0x2AC // 684 + SYS_ENCRYPT = 0x2AD // 685 + SYS_SETKEY = 0x2AE // 686 + SYS___CNVBLK = 0x2AF // 687 + SYS___CRYTRM = 0x2B0 // 688 + SYS___ECRTRM = 0x2B1 // 689 + SYS_DRAND48 = 0x2B2 // 690 + SYS_ERAND48 = 0x2B3 // 691 + SYS_FSTATVFS = 0x2B4 // 692 + SYS_STATVFS = 0x2B5 // 693 + SYS_CATCLOSE = 0x2B6 // 694 + SYS_CATGETS = 0x2B7 // 695 + SYS_CATOPEN = 0x2B8 // 696 + SYS_BCMP = 0x2B9 // 697 + SYS_BCOPY = 0x2BA // 698 + SYS_BZERO = 0x2BB // 699 + SYS_FFS = 0x2BC // 700 + SYS_INDEX = 0x2BD // 701 + SYS_RINDEX = 0x2BE // 702 + SYS_STRCASECMP = 0x2BF // 703 + SYS_STRDUP = 0x2C0 // 704 + SYS_STRNCASECMP = 0x2C1 // 705 + SYS_INITSTATE = 0x2C2 // 706 + SYS_SETSTATE = 0x2C3 // 707 + SYS_RANDOM = 0x2C4 // 708 + SYS_SRANDOM = 0x2C5 // 709 + SYS_HCREATE = 0x2C6 // 710 + SYS_HDESTROY = 0x2C7 // 711 + SYS_HSEARCH = 0x2C8 // 712 + SYS_LFIND = 0x2C9 // 713 + SYS_LSEARCH = 0x2CA // 714 + SYS_TDELETE = 0x2CB // 715 + SYS_TFIND = 0x2CC // 716 + SYS_TSEARCH = 0x2CD // 717 + SYS_TWALK = 0x2CE // 718 + SYS_INSQUE = 0x2CF // 719 + SYS_REMQUE = 0x2D0 // 720 + SYS_POPEN = 0x2D1 // 721 + SYS_PCLOSE = 0x2D2 // 722 + SYS_SWAB = 0x2D3 // 723 + SYS_MEMCCPY = 0x2D4 // 724 + SYS_GETPAGESIZE = 0x2D8 // 728 + SYS_FCHDIR = 0x2D9 // 729 + SYS___OCLCK = 0x2DA // 730 + SYS___ATOE = 0x2DB // 731 + SYS___ATOE_L = 0x2DC // 732 + SYS___ETOA = 0x2DD // 733 + SYS___ETOA_L = 0x2DE // 734 + SYS_SETUTXENT = 0x2DF // 735 + SYS_GETUTXENT = 0x2E0 // 736 + SYS_ENDUTXENT = 0x2E1 // 737 + SYS_GETUTXID = 0x2E2 // 738 + SYS_GETUTXLINE = 0x2E3 // 739 + SYS_PUTUTXLINE = 0x2E4 // 740 + SYS_FMTMSG = 0x2E5 // 741 + SYS_JRAND48 = 0x2E6 // 742 + SYS_LRAND48 = 0x2E7 // 743 + SYS_MRAND48 = 0x2E8 // 744 + SYS_NRAND48 = 0x2E9 // 745 + SYS_LCONG48 = 0x2EA // 746 + SYS_SRAND48 = 0x2EB // 747 + SYS_SEED48 = 0x2EC // 748 + SYS_ISASCII = 0x2ED // 749 + SYS_TOASCII = 0x2EE // 750 + SYS_A64L = 0x2EF // 751 + SYS_L64A = 0x2F0 // 752 + SYS_UALARM = 0x2F1 // 753 + SYS_USLEEP = 0x2F2 // 754 + SYS___UTXTRM = 0x2F3 // 755 + SYS___SRCTRM = 0x2F4 // 756 + SYS_FTIME = 0x2F5 // 757 + SYS_GETTIMEOFDAY = 0x2F6 // 758 + SYS_DBM_CLEARERR = 0x2F7 // 759 + SYS_DBM_CLOSE = 0x2F8 // 760 + SYS_DBM_DELETE = 0x2F9 // 761 + SYS_DBM_ERROR = 0x2FA // 762 + SYS_DBM_FETCH = 0x2FB // 763 + SYS_DBM_FIRSTKEY = 0x2FC // 764 + SYS_DBM_NEXTKEY = 0x2FD // 765 + SYS_DBM_OPEN = 0x2FE // 766 + SYS_DBM_STORE = 0x2FF // 767 + SYS___NDMTRM = 0x300 // 768 + SYS_FTOK = 0x301 // 769 + SYS_BASENAME = 0x302 // 770 + SYS_DIRNAME = 0x303 // 771 + SYS_GETDTABLESIZE = 0x304 // 772 + SYS_MKSTEMP = 0x305 // 773 + SYS_MKTEMP = 0x306 // 774 + SYS_NFTW = 0x307 // 775 + SYS_GETWD = 0x308 // 776 + SYS_LOCKF = 0x309 // 777 + SYS__LONGJMP = 0x30D // 781 + SYS__SETJMP = 0x30E // 782 + SYS_VFORK = 0x30F // 783 + SYS_WORDEXP = 0x310 // 784 + SYS_WORDFREE = 0x311 // 785 + SYS_GETPGID = 0x312 // 786 + SYS_GETSID = 0x313 // 787 + SYS___UTMPXNAME = 0x314 // 788 + SYS_CUSERID = 0x315 // 789 + SYS_GETPASS = 0x316 // 790 + SYS_FNMATCH = 0x317 // 791 + SYS_FTW = 0x318 // 792 + SYS_GETW = 0x319 // 793 + SYS_GLOB = 0x31A // 794 + SYS_GLOBFREE = 0x31B // 795 + SYS_PUTW = 0x31C // 796 + SYS_SEEKDIR = 0x31D // 797 + SYS_TELLDIR = 0x31E // 798 + SYS_TEMPNAM = 0x31F // 799 + SYS_ACOSH = 0x320 // 800 + SYS_ASINH = 0x321 // 801 + SYS_ATANH = 0x322 // 802 + SYS_CBRT = 0x323 // 803 + SYS_EXPM1 = 0x324 // 804 + SYS_ILOGB = 0x325 // 805 + SYS_LOGB = 0x326 // 806 + SYS_LOG1P = 0x327 // 807 + SYS_NEXTAFTER = 0x328 // 808 + SYS_RINT = 0x329 // 809 + SYS_REMAINDER = 0x32A // 810 + SYS_SCALB = 0x32B // 811 + SYS_LGAMMA = 0x32C // 812 + SYS_TTYSLOT = 0x32D // 813 + SYS_GETTIMEOFDAY_R = 0x32E // 814 + SYS_SYNC = 0x32F // 815 + SYS_SPAWN = 0x330 // 816 + SYS_SPAWNP = 0x331 // 817 + SYS_GETLOGIN_UU = 0x332 // 818 + SYS_ECVT = 0x333 // 819 + SYS_FCVT = 0x334 // 820 + SYS_GCVT = 0x335 // 821 + SYS_ACCEPT = 0x336 // 822 + SYS_BIND = 0x337 // 823 + SYS_CONNECT = 0x338 // 824 + SYS_ENDHOSTENT = 0x339 // 825 + SYS_ENDPROTOENT = 0x33A // 826 + SYS_ENDSERVENT = 0x33B // 827 + SYS_GETHOSTBYADDR_R = 0x33C // 828 + SYS_GETHOSTBYADDR = 0x33D // 829 + SYS_GETHOSTBYNAME_R = 0x33E // 830 + SYS_GETHOSTBYNAME = 0x33F // 831 + SYS_GETHOSTENT = 0x340 // 832 + SYS_GETHOSTID = 0x341 // 833 + SYS_GETHOSTNAME = 0x342 // 834 + SYS_GETNETBYADDR = 0x343 // 835 + SYS_GETNETBYNAME = 0x344 // 836 + SYS_GETNETENT = 0x345 // 837 + SYS_GETPEERNAME = 0x346 // 838 + SYS_GETPROTOBYNAME = 0x347 // 839 + SYS_GETPROTOBYNUMBER = 0x348 // 840 + SYS_GETPROTOENT = 0x349 // 841 + SYS_GETSERVBYNAME = 0x34A // 842 + SYS_GETSERVBYPORT = 0x34B // 843 + SYS_GETSERVENT = 0x34C // 844 + SYS_GETSOCKNAME = 0x34D // 845 + SYS_GETSOCKOPT = 0x34E // 846 + SYS_INET_ADDR = 0x34F // 847 + SYS_INET_LNAOF = 0x350 // 848 + SYS_INET_MAKEADDR = 0x351 // 849 + SYS_INET_NETOF = 0x352 // 850 + SYS_INET_NETWORK = 0x353 // 851 + SYS_INET_NTOA = 0x354 // 852 + SYS_IOCTL = 0x355 // 853 + SYS_LISTEN = 0x356 // 854 + SYS_READV = 0x357 // 855 + SYS_RECV = 0x358 // 856 + SYS_RECVFROM = 0x359 // 857 + SYS_SELECT = 0x35B // 859 + SYS_SELECTEX = 0x35C // 860 + SYS_SEND = 0x35D // 861 + SYS_SENDTO = 0x35F // 863 + SYS_SETHOSTENT = 0x360 // 864 + SYS_SETNETENT = 0x361 // 865 + SYS_SETPEER = 0x362 // 866 + SYS_SETPROTOENT = 0x363 // 867 + SYS_SETSERVENT = 0x364 // 868 + SYS_SETSOCKOPT = 0x365 // 869 + SYS_SHUTDOWN = 0x366 // 870 + SYS_SOCKET = 0x367 // 871 + SYS_SOCKETPAIR = 0x368 // 872 + SYS_WRITEV = 0x369 // 873 + SYS_CHROOT = 0x36A // 874 + SYS_W_STATVFS = 0x36B // 875 + SYS_ULIMIT = 0x36C // 876 + SYS_ISNAN = 0x36D // 877 + SYS_UTIMES = 0x36E // 878 + SYS___H_ERRNO = 0x36F // 879 + SYS_ENDNETENT = 0x370 // 880 + SYS_CLOSELOG = 0x371 // 881 + SYS_OPENLOG = 0x372 // 882 + SYS_SETLOGMASK = 0x373 // 883 + SYS_SYSLOG = 0x374 // 884 + SYS_PTSNAME = 0x375 // 885 + SYS_SETREUID = 0x376 // 886 + SYS_SETREGID = 0x377 // 887 + SYS_REALPATH = 0x378 // 888 + SYS___SIGNGAM = 0x379 // 889 + SYS_GRANTPT = 0x37A // 890 + SYS_UNLOCKPT = 0x37B // 891 + SYS_TCGETSID = 0x37C // 892 + SYS___TCGETCP = 0x37D // 893 + SYS___TCSETCP = 0x37E // 894 + SYS___TCSETTABLES = 0x37F // 895 + SYS_POLL = 0x380 // 896 + SYS_REXEC = 0x381 // 897 + SYS___ISASCII2 = 0x382 // 898 + SYS___TOASCII2 = 0x383 // 899 + SYS_CHPRIORITY = 0x384 // 900 + SYS_PTHREAD_ATTR_SETSYNCTYPE_NP = 0x385 // 901 + SYS_PTHREAD_ATTR_GETSYNCTYPE_NP = 0x386 // 902 + SYS_PTHREAD_SET_LIMIT_NP = 0x387 // 903 + SYS___STNETENT = 0x388 // 904 + SYS___STPROTOENT = 0x389 // 905 + SYS___STSERVENT = 0x38A // 906 + SYS___STHOSTENT = 0x38B // 907 + SYS_NLIST = 0x38C // 908 + SYS___IPDBCS = 0x38D // 909 + SYS___IPDSPX = 0x38E // 910 + SYS___IPMSGC = 0x38F // 911 + SYS___SELECT1 = 0x390 // 912 + SYS_PTHREAD_SECURITY_NP = 0x391 // 913 + SYS___CHECK_RESOURCE_AUTH_NP = 0x392 // 914 + SYS___CONVERT_ID_NP = 0x393 // 915 + SYS___OPENVMREL = 0x394 // 916 + SYS_WMEMCHR = 0x395 // 917 + SYS_WMEMCMP = 0x396 // 918 + SYS_WMEMCPY = 0x397 // 919 + SYS_WMEMMOVE = 0x398 // 920 + SYS_WMEMSET = 0x399 // 921 + SYS___FPUTWC = 0x400 // 1024 + SYS___PUTWC = 0x401 // 1025 + SYS___PWCHAR = 0x402 // 1026 + SYS___WCSFTM = 0x403 // 1027 + SYS___WCSTOK = 0x404 // 1028 + SYS___WCWDTH = 0x405 // 1029 + SYS_T_ACCEPT = 0x409 // 1033 + SYS_T_ALLOC = 0x40A // 1034 + SYS_T_BIND = 0x40B // 1035 + SYS_T_CLOSE = 0x40C // 1036 + SYS_T_CONNECT = 0x40D // 1037 + SYS_T_ERROR = 0x40E // 1038 + SYS_T_FREE = 0x40F // 1039 + SYS_T_GETINFO = 0x410 // 1040 + SYS_T_GETPROTADDR = 0x411 // 1041 + SYS_T_GETSTATE = 0x412 // 1042 + SYS_T_LISTEN = 0x413 // 1043 + SYS_T_LOOK = 0x414 // 1044 + SYS_T_OPEN = 0x415 // 1045 + SYS_T_OPTMGMT = 0x416 // 1046 + SYS_T_RCV = 0x417 // 1047 + SYS_T_RCVCONNECT = 0x418 // 1048 + SYS_T_RCVDIS = 0x419 // 1049 + SYS_T_RCVREL = 0x41A // 1050 + SYS_T_RCVUDATA = 0x41B // 1051 + SYS_T_RCVUDERR = 0x41C // 1052 + SYS_T_SND = 0x41D // 1053 + SYS_T_SNDDIS = 0x41E // 1054 + SYS_T_SNDREL = 0x41F // 1055 + SYS_T_SNDUDATA = 0x420 // 1056 + SYS_T_STRERROR = 0x421 // 1057 + SYS_T_SYNC = 0x422 // 1058 + SYS_T_UNBIND = 0x423 // 1059 + SYS___T_ERRNO = 0x424 // 1060 + SYS___RECVMSG2 = 0x425 // 1061 + SYS___SENDMSG2 = 0x426 // 1062 + SYS_FATTACH = 0x427 // 1063 + SYS_FDETACH = 0x428 // 1064 + SYS_GETMSG = 0x429 // 1065 + SYS_GETPMSG = 0x42A // 1066 + SYS_ISASTREAM = 0x42B // 1067 + SYS_PUTMSG = 0x42C // 1068 + SYS_PUTPMSG = 0x42D // 1069 + SYS___ISPOSIXON = 0x42E // 1070 + SYS___OPENMVSREL = 0x42F // 1071 + SYS_GETCONTEXT = 0x430 // 1072 + SYS_SETCONTEXT = 0x431 // 1073 + SYS_MAKECONTEXT = 0x432 // 1074 + SYS_SWAPCONTEXT = 0x433 // 1075 + SYS_PTHREAD_GETSPECIFIC_D8_NP = 0x434 // 1076 + SYS_GETCLIENTID = 0x470 // 1136 + SYS___GETCLIENTID = 0x471 // 1137 + SYS_GETSTABLESIZE = 0x472 // 1138 + SYS_GETIBMOPT = 0x473 // 1139 + SYS_GETIBMSOCKOPT = 0x474 // 1140 + SYS_GIVESOCKET = 0x475 // 1141 + SYS_IBMSFLUSH = 0x476 // 1142 + SYS_MAXDESC = 0x477 // 1143 + SYS_SETIBMOPT = 0x478 // 1144 + SYS_SETIBMSOCKOPT = 0x479 // 1145 + SYS_SOCK_DEBUG = 0x47A // 1146 + SYS_SOCK_DO_TESTSTOR = 0x47D // 1149 + SYS_TAKESOCKET = 0x47E // 1150 + SYS___SERVER_INIT = 0x47F // 1151 + SYS___SERVER_PWU = 0x480 // 1152 + SYS_PTHREAD_TAG_NP = 0x481 // 1153 + SYS___CONSOLE = 0x482 // 1154 + SYS___WSINIT = 0x483 // 1155 + SYS___IPTCPN = 0x489 // 1161 + SYS___SMF_RECORD = 0x48A // 1162 + SYS___IPHOST = 0x48B // 1163 + SYS___IPNODE = 0x48C // 1164 + SYS___SERVER_CLASSIFY_CREATE = 0x48D // 1165 + SYS___SERVER_CLASSIFY_DESTROY = 0x48E // 1166 + SYS___SERVER_CLASSIFY_RESET = 0x48F // 1167 + SYS___SERVER_CLASSIFY = 0x490 // 1168 + SYS___HEAPRPT = 0x496 // 1174 + SYS___FNWSA = 0x49B // 1179 + SYS___SPAWN2 = 0x49D // 1181 + SYS___SPAWNP2 = 0x49E // 1182 + SYS___GDRR = 0x4A1 // 1185 + SYS___HRRNO = 0x4A2 // 1186 + SYS___OPRG = 0x4A3 // 1187 + SYS___OPRR = 0x4A4 // 1188 + SYS___OPND = 0x4A5 // 1189 + SYS___OPPT = 0x4A6 // 1190 + SYS___SIGGM = 0x4A7 // 1191 + SYS___DGHT = 0x4A8 // 1192 + SYS___TZNE = 0x4A9 // 1193 + SYS___TZZN = 0x4AA // 1194 + SYS___TRRNO = 0x4AF // 1199 + SYS___ENVN = 0x4B0 // 1200 + SYS___MLOCKALL = 0x4B1 // 1201 + SYS_CREATEWO = 0x4B2 // 1202 + SYS_CREATEWORKUNIT = 0x4B2 // 1202 + SYS_CONTINUE = 0x4B3 // 1203 + SYS_CONTINUEWORKUNIT = 0x4B3 // 1203 + SYS_CONNECTW = 0x4B4 // 1204 + SYS_CONNECTWORKMGR = 0x4B4 // 1204 + SYS_CONNECTS = 0x4B5 // 1205 + SYS_CONNECTSERVER = 0x4B5 // 1205 + SYS_DISCONNE = 0x4B6 // 1206 + SYS_DISCONNECTSERVER = 0x4B6 // 1206 + SYS_JOINWORK = 0x4B7 // 1207 + SYS_JOINWORKUNIT = 0x4B7 // 1207 + SYS_LEAVEWOR = 0x4B8 // 1208 + SYS_LEAVEWORKUNIT = 0x4B8 // 1208 + SYS_DELETEWO = 0x4B9 // 1209 + SYS_DELETEWORKUNIT = 0x4B9 // 1209 + SYS_QUERYMET = 0x4BA // 1210 + SYS_QUERYMETRICS = 0x4BA // 1210 + SYS_QUERYSCH = 0x4BB // 1211 + SYS_QUERYSCHENV = 0x4BB // 1211 + SYS_CHECKSCH = 0x4BC // 1212 + SYS_CHECKSCHENV = 0x4BC // 1212 + SYS___PID_AFFINITY = 0x4BD // 1213 + SYS___ASINH_B = 0x4BE // 1214 + SYS___ATAN_B = 0x4BF // 1215 + SYS___CBRT_B = 0x4C0 // 1216 + SYS___CEIL_B = 0x4C1 // 1217 + SYS_COPYSIGN = 0x4C2 // 1218 + SYS___COS_B = 0x4C3 // 1219 + SYS___ERF_B = 0x4C4 // 1220 + SYS___ERFC_B = 0x4C5 // 1221 + SYS___EXPM1_B = 0x4C6 // 1222 + SYS___FABS_B = 0x4C7 // 1223 + SYS_FINITE = 0x4C8 // 1224 + SYS___FLOOR_B = 0x4C9 // 1225 + SYS___FREXP_B = 0x4CA // 1226 + SYS___ILOGB_B = 0x4CB // 1227 + SYS___ISNAN_B = 0x4CC // 1228 + SYS___LDEXP_B = 0x4CD // 1229 + SYS___LOG1P_B = 0x4CE // 1230 + SYS___LOGB_B = 0x4CF // 1231 + SYS_MATHERR = 0x4D0 // 1232 + SYS___MODF_B = 0x4D1 // 1233 + SYS___NEXTAFTER_B = 0x4D2 // 1234 + SYS___RINT_B = 0x4D3 // 1235 + SYS_SCALBN = 0x4D4 // 1236 + SYS_SIGNIFIC = 0x4D5 // 1237 + SYS_SIGNIFICAND = 0x4D5 // 1237 + SYS___SIN_B = 0x4D6 // 1238 + SYS___TAN_B = 0x4D7 // 1239 + SYS___TANH_B = 0x4D8 // 1240 + SYS___ACOS_B = 0x4D9 // 1241 + SYS___ACOSH_B = 0x4DA // 1242 + SYS___ASIN_B = 0x4DB // 1243 + SYS___ATAN2_B = 0x4DC // 1244 + SYS___ATANH_B = 0x4DD // 1245 + SYS___COSH_B = 0x4DE // 1246 + SYS___EXP_B = 0x4DF // 1247 + SYS___FMOD_B = 0x4E0 // 1248 + SYS___GAMMA_B = 0x4E1 // 1249 + SYS_GAMMA_R = 0x4E2 // 1250 + SYS___HYPOT_B = 0x4E3 // 1251 + SYS___J0_B = 0x4E4 // 1252 + SYS___Y0_B = 0x4E5 // 1253 + SYS___J1_B = 0x4E6 // 1254 + SYS___Y1_B = 0x4E7 // 1255 + SYS___JN_B = 0x4E8 // 1256 + SYS___YN_B = 0x4E9 // 1257 + SYS___LGAMMA_B = 0x4EA // 1258 + SYS_LGAMMA_R = 0x4EB // 1259 + SYS___LOG_B = 0x4EC // 1260 + SYS___LOG10_B = 0x4ED // 1261 + SYS___POW_B = 0x4EE // 1262 + SYS___REMAINDER_B = 0x4EF // 1263 + SYS___SCALB_B = 0x4F0 // 1264 + SYS___SINH_B = 0x4F1 // 1265 + SYS___SQRT_B = 0x4F2 // 1266 + SYS___OPENDIR2 = 0x4F3 // 1267 + SYS___READDIR2 = 0x4F4 // 1268 + SYS___LOGIN = 0x4F5 // 1269 + SYS___OPEN_STAT = 0x4F6 // 1270 + SYS_ACCEPT_AND_RECV = 0x4F7 // 1271 + SYS___FP_SETMODE = 0x4F8 // 1272 + SYS___SIGACTIONSET = 0x4FB // 1275 + SYS___UCREATE = 0x4FC // 1276 + SYS___UMALLOC = 0x4FD // 1277 + SYS___UFREE = 0x4FE // 1278 + SYS___UHEAPREPORT = 0x4FF // 1279 + SYS___ISBFP = 0x500 // 1280 + SYS___FP_CAST = 0x501 // 1281 + SYS___CERTIFICATE = 0x502 // 1282 + SYS_SEND_FILE = 0x503 // 1283 + SYS_AIO_CANCEL = 0x504 // 1284 + SYS_AIO_ERROR = 0x505 // 1285 + SYS_AIO_READ = 0x506 // 1286 + SYS_AIO_RETURN = 0x507 // 1287 + SYS_AIO_SUSPEND = 0x508 // 1288 + SYS_AIO_WRITE = 0x509 // 1289 + SYS_PTHREAD_MUTEXATTR_GETPSHARED = 0x50A // 1290 + SYS_PTHREAD_MUTEXATTR_SETPSHARED = 0x50B // 1291 + SYS_PTHREAD_RWLOCK_DESTROY = 0x50C // 1292 + SYS_PTHREAD_RWLOCK_INIT = 0x50D // 1293 + SYS_PTHREAD_RWLOCK_RDLOCK = 0x50E // 1294 + SYS_PTHREAD_RWLOCK_TRYRDLOCK = 0x50F // 1295 + SYS_PTHREAD_RWLOCK_TRYWRLOCK = 0x510 // 1296 + SYS_PTHREAD_RWLOCK_UNLOCK = 0x511 // 1297 + SYS_PTHREAD_RWLOCK_WRLOCK = 0x512 // 1298 + SYS_PTHREAD_RWLOCKATTR_GETPSHARED = 0x513 // 1299 + SYS_PTHREAD_RWLOCKATTR_SETPSHARED = 0x514 // 1300 + SYS_PTHREAD_RWLOCKATTR_INIT = 0x515 // 1301 + SYS_PTHREAD_RWLOCKATTR_DESTROY = 0x516 // 1302 + SYS___CTTBL = 0x517 // 1303 + SYS_PTHREAD_MUTEXATTR_SETTYPE = 0x518 // 1304 + SYS_PTHREAD_MUTEXATTR_GETTYPE = 0x519 // 1305 + SYS___FP_CLR_FLAG = 0x51A // 1306 + SYS___FP_READ_FLAG = 0x51B // 1307 + SYS___FP_RAISE_XCP = 0x51C // 1308 + SYS___FP_CLASS = 0x51D // 1309 + SYS___FP_FINITE = 0x51E // 1310 + SYS___FP_ISNAN = 0x51F // 1311 + SYS___FP_UNORDERED = 0x520 // 1312 + SYS___FP_READ_RND = 0x521 // 1313 + SYS___FP_READ_RND_B = 0x522 // 1314 + SYS___FP_SWAP_RND = 0x523 // 1315 + SYS___FP_SWAP_RND_B = 0x524 // 1316 + SYS___FP_LEVEL = 0x525 // 1317 + SYS___FP_BTOH = 0x526 // 1318 + SYS___FP_HTOB = 0x527 // 1319 + SYS___FPC_RD = 0x528 // 1320 + SYS___FPC_WR = 0x529 // 1321 + SYS___FPC_RW = 0x52A // 1322 + SYS___FPC_SM = 0x52B // 1323 + SYS___FPC_RS = 0x52C // 1324 + SYS_SIGTIMEDWAIT = 0x52D // 1325 + SYS_SIGWAITINFO = 0x52E // 1326 + SYS___CHKBFP = 0x52F // 1327 + SYS___W_PIOCTL = 0x59E // 1438 + SYS___OSENV = 0x59F // 1439 + SYS_EXPORTWO = 0x5A1 // 1441 + SYS_EXPORTWORKUNIT = 0x5A1 // 1441 + SYS_UNDOEXPO = 0x5A2 // 1442 + SYS_UNDOEXPORTWORKUNIT = 0x5A2 // 1442 + SYS_IMPORTWO = 0x5A3 // 1443 + SYS_IMPORTWORKUNIT = 0x5A3 // 1443 + SYS_UNDOIMPO = 0x5A4 // 1444 + SYS_UNDOIMPORTWORKUNIT = 0x5A4 // 1444 + SYS_EXTRACTW = 0x5A5 // 1445 + SYS_EXTRACTWORKUNIT = 0x5A5 // 1445 + SYS___CPL = 0x5A6 // 1446 + SYS___MAP_INIT = 0x5A7 // 1447 + SYS___MAP_SERVICE = 0x5A8 // 1448 + SYS_SIGQUEUE = 0x5A9 // 1449 + SYS___MOUNT = 0x5AA // 1450 + SYS___GETUSERID = 0x5AB // 1451 + SYS___IPDOMAINNAME = 0x5AC // 1452 + SYS_QUERYENC = 0x5AD // 1453 + SYS_QUERYWORKUNITCLASSIFICATION = 0x5AD // 1453 + SYS_CONNECTE = 0x5AE // 1454 + SYS_CONNECTEXPORTIMPORT = 0x5AE // 1454 + SYS___FP_SWAPMODE = 0x5AF // 1455 + SYS_STRTOLL = 0x5B0 // 1456 + SYS_STRTOULL = 0x5B1 // 1457 + SYS___DSA_PREV = 0x5B2 // 1458 + SYS___EP_FIND = 0x5B3 // 1459 + SYS___SERVER_THREADS_QUERY = 0x5B4 // 1460 + SYS___MSGRCV_TIMED = 0x5B7 // 1463 + SYS___SEMOP_TIMED = 0x5B8 // 1464 + SYS___GET_CPUID = 0x5B9 // 1465 + SYS___GET_SYSTEM_SETTINGS = 0x5BA // 1466 + SYS_FTELLO = 0x5C8 // 1480 + SYS_FSEEKO = 0x5C9 // 1481 + SYS_LLDIV = 0x5CB // 1483 + SYS_WCSTOLL = 0x5CC // 1484 + SYS_WCSTOULL = 0x5CD // 1485 + SYS_LLABS = 0x5CE // 1486 + SYS___CONSOLE2 = 0x5D2 // 1490 + SYS_INET_NTOP = 0x5D3 // 1491 + SYS_INET_PTON = 0x5D4 // 1492 + SYS___RES = 0x5D6 // 1494 + SYS_RES_MKQUERY = 0x5D7 // 1495 + SYS_RES_INIT = 0x5D8 // 1496 + SYS_RES_QUERY = 0x5D9 // 1497 + SYS_RES_SEARCH = 0x5DA // 1498 + SYS_RES_SEND = 0x5DB // 1499 + SYS_RES_QUERYDOMAIN = 0x5DC // 1500 + SYS_DN_EXPAND = 0x5DD // 1501 + SYS_DN_SKIPNAME = 0x5DE // 1502 + SYS_DN_COMP = 0x5DF // 1503 + SYS_ASCTIME_R = 0x5E0 // 1504 + SYS_CTIME_R = 0x5E1 // 1505 + SYS_GMTIME_R = 0x5E2 // 1506 + SYS_LOCALTIME_R = 0x5E3 // 1507 + SYS_RAND_R = 0x5E4 // 1508 + SYS_STRTOK_R = 0x5E5 // 1509 + SYS_READDIR_R = 0x5E6 // 1510 + SYS_GETGRGID_R = 0x5E7 // 1511 + SYS_GETGRNAM_R = 0x5E8 // 1512 + SYS_GETLOGIN_R = 0x5E9 // 1513 + SYS_GETPWNAM_R = 0x5EA // 1514 + SYS_GETPWUID_R = 0x5EB // 1515 + SYS_TTYNAME_R = 0x5EC // 1516 + SYS_PTHREAD_ATFORK = 0x5ED // 1517 + SYS_PTHREAD_ATTR_GETGUARDSIZE = 0x5EE // 1518 + SYS_PTHREAD_ATTR_GETSTACKADDR = 0x5EF // 1519 + SYS_PTHREAD_ATTR_SETGUARDSIZE = 0x5F0 // 1520 + SYS_PTHREAD_ATTR_SETSTACKADDR = 0x5F1 // 1521 + SYS_PTHREAD_CONDATTR_GETPSHARED = 0x5F2 // 1522 + SYS_PTHREAD_CONDATTR_SETPSHARED = 0x5F3 // 1523 + SYS_PTHREAD_GETCONCURRENCY = 0x5F4 // 1524 + SYS_PTHREAD_KEY_DELETE = 0x5F5 // 1525 + SYS_PTHREAD_SETCONCURRENCY = 0x5F6 // 1526 + SYS_PTHREAD_SIGMASK = 0x5F7 // 1527 + SYS___DISCARDDATA = 0x5F8 // 1528 + SYS_PTHREAD_ATTR_GETSCHEDPARAM = 0x5F9 // 1529 + SYS_PTHREAD_ATTR_SETSCHEDPARAM = 0x5FA // 1530 + SYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB // 1531 + SYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC // 1532 + SYS_PTHREAD_DETACH_U98 = 0x5FD // 1533 + SYS_PTHREAD_GETSPECIFIC_U98 = 0x5FE // 1534 + SYS_PTHREAD_SETCANCELSTATE = 0x5FF // 1535 + SYS_PTHREAD_SETCANCELTYPE = 0x600 // 1536 + SYS_PTHREAD_TESTCANCEL = 0x601 // 1537 + SYS___ATANF_B = 0x602 // 1538 + SYS___ATANL_B = 0x603 // 1539 + SYS___CEILF_B = 0x604 // 1540 + SYS___CEILL_B = 0x605 // 1541 + SYS___COSF_B = 0x606 // 1542 + SYS___COSL_B = 0x607 // 1543 + SYS___FABSF_B = 0x608 // 1544 + SYS___FABSL_B = 0x609 // 1545 + SYS___FLOORF_B = 0x60A // 1546 + SYS___FLOORL_B = 0x60B // 1547 + SYS___FREXPF_B = 0x60C // 1548 + SYS___FREXPL_B = 0x60D // 1549 + SYS___LDEXPF_B = 0x60E // 1550 + SYS___LDEXPL_B = 0x60F // 1551 + SYS___SINF_B = 0x610 // 1552 + SYS___SINL_B = 0x611 // 1553 + SYS___TANF_B = 0x612 // 1554 + SYS___TANL_B = 0x613 // 1555 + SYS___TANHF_B = 0x614 // 1556 + SYS___TANHL_B = 0x615 // 1557 + SYS___ACOSF_B = 0x616 // 1558 + SYS___ACOSL_B = 0x617 // 1559 + SYS___ASINF_B = 0x618 // 1560 + SYS___ASINL_B = 0x619 // 1561 + SYS___ATAN2F_B = 0x61A // 1562 + SYS___ATAN2L_B = 0x61B // 1563 + SYS___COSHF_B = 0x61C // 1564 + SYS___COSHL_B = 0x61D // 1565 + SYS___EXPF_B = 0x61E // 1566 + SYS___EXPL_B = 0x61F // 1567 + SYS___LOGF_B = 0x620 // 1568 + SYS___LOGL_B = 0x621 // 1569 + SYS___LOG10F_B = 0x622 // 1570 + SYS___LOG10L_B = 0x623 // 1571 + SYS___POWF_B = 0x624 // 1572 + SYS___POWL_B = 0x625 // 1573 + SYS___SINHF_B = 0x626 // 1574 + SYS___SINHL_B = 0x627 // 1575 + SYS___SQRTF_B = 0x628 // 1576 + SYS___SQRTL_B = 0x629 // 1577 + SYS___ABSF_B = 0x62A // 1578 + SYS___ABS_B = 0x62B // 1579 + SYS___ABSL_B = 0x62C // 1580 + SYS___FMODF_B = 0x62D // 1581 + SYS___FMODL_B = 0x62E // 1582 + SYS___MODFF_B = 0x62F // 1583 + SYS___MODFL_B = 0x630 // 1584 + SYS_ABSF = 0x631 // 1585 + SYS_ABSL = 0x632 // 1586 + SYS_ACOSF = 0x633 // 1587 + SYS_ACOSL = 0x634 // 1588 + SYS_ASINF = 0x635 // 1589 + SYS_ASINL = 0x636 // 1590 + SYS_ATAN2F = 0x637 // 1591 + SYS_ATAN2L = 0x638 // 1592 + SYS_ATANF = 0x639 // 1593 + SYS_ATANL = 0x63A // 1594 + SYS_CEILF = 0x63B // 1595 + SYS_CEILL = 0x63C // 1596 + SYS_COSF = 0x63D // 1597 + SYS_COSL = 0x63E // 1598 + SYS_COSHF = 0x63F // 1599 + SYS_COSHL = 0x640 // 1600 + SYS_EXPF = 0x641 // 1601 + SYS_EXPL = 0x642 // 1602 + SYS_TANHF = 0x643 // 1603 + SYS_TANHL = 0x644 // 1604 + SYS_LOG10F = 0x645 // 1605 + SYS_LOG10L = 0x646 // 1606 + SYS_LOGF = 0x647 // 1607 + SYS_LOGL = 0x648 // 1608 + SYS_POWF = 0x649 // 1609 + SYS_POWL = 0x64A // 1610 + SYS_SINF = 0x64B // 1611 + SYS_SINL = 0x64C // 1612 + SYS_SQRTF = 0x64D // 1613 + SYS_SQRTL = 0x64E // 1614 + SYS_SINHF = 0x64F // 1615 + SYS_SINHL = 0x650 // 1616 + SYS_TANF = 0x651 // 1617 + SYS_TANL = 0x652 // 1618 + SYS_FABSF = 0x653 // 1619 + SYS_FABSL = 0x654 // 1620 + SYS_FLOORF = 0x655 // 1621 + SYS_FLOORL = 0x656 // 1622 + SYS_FMODF = 0x657 // 1623 + SYS_FMODL = 0x658 // 1624 + SYS_FREXPF = 0x659 // 1625 + SYS_FREXPL = 0x65A // 1626 + SYS_LDEXPF = 0x65B // 1627 + SYS_LDEXPL = 0x65C // 1628 + SYS_MODFF = 0x65D // 1629 + SYS_MODFL = 0x65E // 1630 + SYS_BTOWC = 0x65F // 1631 + SYS___CHATTR = 0x660 // 1632 + SYS___FCHATTR = 0x661 // 1633 + SYS___TOCCSID = 0x662 // 1634 + SYS___CSNAMETYPE = 0x663 // 1635 + SYS___TOCSNAME = 0x664 // 1636 + SYS___CCSIDTYPE = 0x665 // 1637 + SYS___AE_CORRESTBL_QUERY = 0x666 // 1638 + SYS___AE_AUTOCONVERT_STATE = 0x667 // 1639 + SYS_DN_FIND = 0x668 // 1640 + SYS___GETHOSTBYADDR_A = 0x669 // 1641 + SYS___GETHOSTBYNAME_A = 0x66A // 1642 + SYS___RES_INIT_A = 0x66B // 1643 + SYS___GETHOSTBYADDR_R_A = 0x66C // 1644 + SYS___GETHOSTBYNAME_R_A = 0x66D // 1645 + SYS___CHARMAP_INIT_A = 0x66E // 1646 + SYS___MBLEN_A = 0x66F // 1647 + SYS___MBLEN_SB_A = 0x670 // 1648 + SYS___MBLEN_STD_A = 0x671 // 1649 + SYS___MBLEN_UTF = 0x672 // 1650 + SYS___MBSTOWCS_A = 0x673 // 1651 + SYS___MBSTOWCS_STD_A = 0x674 // 1652 + SYS___MBTOWC_A = 0x675 // 1653 + SYS___MBTOWC_ISO1 = 0x676 // 1654 + SYS___MBTOWC_SBCS = 0x677 // 1655 + SYS___MBTOWC_MBCS = 0x678 // 1656 + SYS___MBTOWC_UTF = 0x679 // 1657 + SYS___WCSTOMBS_A = 0x67A // 1658 + SYS___WCSTOMBS_STD_A = 0x67B // 1659 + SYS___WCSWIDTH_A = 0x67C // 1660 + SYS___GETGRGID_R_A = 0x67D // 1661 + SYS___WCSWIDTH_STD_A = 0x67E // 1662 + SYS___WCSWIDTH_ASIA = 0x67F // 1663 + SYS___CSID_A = 0x680 // 1664 + SYS___CSID_STD_A = 0x681 // 1665 + SYS___WCSID_A = 0x682 // 1666 + SYS___WCSID_STD_A = 0x683 // 1667 + SYS___WCTOMB_A = 0x684 // 1668 + SYS___WCTOMB_ISO1 = 0x685 // 1669 + SYS___WCTOMB_STD_A = 0x686 // 1670 + SYS___WCTOMB_UTF = 0x687 // 1671 + SYS___WCWIDTH_A = 0x688 // 1672 + SYS___GETGRNAM_R_A = 0x689 // 1673 + SYS___WCWIDTH_STD_A = 0x68A // 1674 + SYS___WCWIDTH_ASIA = 0x68B // 1675 + SYS___GETPWNAM_R_A = 0x68C // 1676 + SYS___GETPWUID_R_A = 0x68D // 1677 + SYS___GETLOGIN_R_A = 0x68E // 1678 + SYS___TTYNAME_R_A = 0x68F // 1679 + SYS___READDIR_R_A = 0x690 // 1680 + SYS___E2A_S = 0x691 // 1681 + SYS___FNMATCH_A = 0x692 // 1682 + SYS___FNMATCH_C_A = 0x693 // 1683 + SYS___EXECL_A = 0x694 // 1684 + SYS___FNMATCH_STD_A = 0x695 // 1685 + SYS___REGCOMP_A = 0x696 // 1686 + SYS___REGCOMP_STD_A = 0x697 // 1687 + SYS___REGERROR_A = 0x698 // 1688 + SYS___REGERROR_STD_A = 0x699 // 1689 + SYS___REGEXEC_A = 0x69A // 1690 + SYS___REGEXEC_STD_A = 0x69B // 1691 + SYS___REGFREE_A = 0x69C // 1692 + SYS___REGFREE_STD_A = 0x69D // 1693 + SYS___STRCOLL_A = 0x69E // 1694 + SYS___STRCOLL_C_A = 0x69F // 1695 + SYS___EXECLE_A = 0x6A0 // 1696 + SYS___STRCOLL_STD_A = 0x6A1 // 1697 + SYS___STRXFRM_A = 0x6A2 // 1698 + SYS___STRXFRM_C_A = 0x6A3 // 1699 + SYS___EXECLP_A = 0x6A4 // 1700 + SYS___STRXFRM_STD_A = 0x6A5 // 1701 + SYS___WCSCOLL_A = 0x6A6 // 1702 + SYS___WCSCOLL_C_A = 0x6A7 // 1703 + SYS___WCSCOLL_STD_A = 0x6A8 // 1704 + SYS___WCSXFRM_A = 0x6A9 // 1705 + SYS___WCSXFRM_C_A = 0x6AA // 1706 + SYS___WCSXFRM_STD_A = 0x6AB // 1707 + SYS___COLLATE_INIT_A = 0x6AC // 1708 + SYS___WCTYPE_A = 0x6AD // 1709 + SYS___GET_WCTYPE_STD_A = 0x6AE // 1710 + SYS___CTYPE_INIT_A = 0x6AF // 1711 + SYS___ISWCTYPE_A = 0x6B0 // 1712 + SYS___EXECV_A = 0x6B1 // 1713 + SYS___IS_WCTYPE_STD_A = 0x6B2 // 1714 + SYS___TOWLOWER_A = 0x6B3 // 1715 + SYS___TOWLOWER_STD_A = 0x6B4 // 1716 + SYS___TOWUPPER_A = 0x6B5 // 1717 + SYS___TOWUPPER_STD_A = 0x6B6 // 1718 + SYS___LOCALE_INIT_A = 0x6B7 // 1719 + SYS___LOCALECONV_A = 0x6B8 // 1720 + SYS___LOCALECONV_STD_A = 0x6B9 // 1721 + SYS___NL_LANGINFO_A = 0x6BA // 1722 + SYS___NL_LNAGINFO_STD_A = 0x6BB // 1723 + SYS___MONETARY_INIT_A = 0x6BC // 1724 + SYS___STRFMON_A = 0x6BD // 1725 + SYS___STRFMON_STD_A = 0x6BE // 1726 + SYS___GETADDRINFO_A = 0x6BF // 1727 + SYS___CATGETS_A = 0x6C0 // 1728 + SYS___EXECVE_A = 0x6C1 // 1729 + SYS___EXECVP_A = 0x6C2 // 1730 + SYS___SPAWN_A = 0x6C3 // 1731 + SYS___GETNAMEINFO_A = 0x6C4 // 1732 + SYS___SPAWNP_A = 0x6C5 // 1733 + SYS___NUMERIC_INIT_A = 0x6C6 // 1734 + SYS___RESP_INIT_A = 0x6C7 // 1735 + SYS___RPMATCH_A = 0x6C8 // 1736 + SYS___RPMATCH_C_A = 0x6C9 // 1737 + SYS___RPMATCH_STD_A = 0x6CA // 1738 + SYS___TIME_INIT_A = 0x6CB // 1739 + SYS___STRFTIME_A = 0x6CC // 1740 + SYS___STRFTIME_STD_A = 0x6CD // 1741 + SYS___STRPTIME_A = 0x6CE // 1742 + SYS___STRPTIME_STD_A = 0x6CF // 1743 + SYS___WCSFTIME_A = 0x6D0 // 1744 + SYS___WCSFTIME_STD_A = 0x6D1 // 1745 + SYS_____SPAWN2_A = 0x6D2 // 1746 + SYS_____SPAWNP2_A = 0x6D3 // 1747 + SYS___SYNTAX_INIT_A = 0x6D4 // 1748 + SYS___TOD_INIT_A = 0x6D5 // 1749 + SYS___NL_CSINFO_A = 0x6D6 // 1750 + SYS___NL_MONINFO_A = 0x6D7 // 1751 + SYS___NL_NUMINFO_A = 0x6D8 // 1752 + SYS___NL_RESPINFO_A = 0x6D9 // 1753 + SYS___NL_TIMINFO_A = 0x6DA // 1754 + SYS___IF_NAMETOINDEX_A = 0x6DB // 1755 + SYS___IF_INDEXTONAME_A = 0x6DC // 1756 + SYS___PRINTF_A = 0x6DD // 1757 + SYS___ICONV_OPEN_A = 0x6DE // 1758 + SYS___DLLLOAD_A = 0x6DF // 1759 + SYS___DLLQUERYFN_A = 0x6E0 // 1760 + SYS___DLLQUERYVAR_A = 0x6E1 // 1761 + SYS_____CHATTR_A = 0x6E2 // 1762 + SYS___E2A_L = 0x6E3 // 1763 + SYS_____TOCCSID_A = 0x6E4 // 1764 + SYS_____TOCSNAME_A = 0x6E5 // 1765 + SYS_____CCSIDTYPE_A = 0x6E6 // 1766 + SYS_____CSNAMETYPE_A = 0x6E7 // 1767 + SYS___CHMOD_A = 0x6E8 // 1768 + SYS___MKDIR_A = 0x6E9 // 1769 + SYS___STAT_A = 0x6EA // 1770 + SYS___STAT_O_A = 0x6EB // 1771 + SYS___MKFIFO_A = 0x6EC // 1772 + SYS_____OPEN_STAT_A = 0x6ED // 1773 + SYS___LSTAT_A = 0x6EE // 1774 + SYS___LSTAT_O_A = 0x6EF // 1775 + SYS___MKNOD_A = 0x6F0 // 1776 + SYS___MOUNT_A = 0x6F1 // 1777 + SYS___UMOUNT_A = 0x6F2 // 1778 + SYS___CHAUDIT_A = 0x6F4 // 1780 + SYS___W_GETMNTENT_A = 0x6F5 // 1781 + SYS___CREAT_A = 0x6F6 // 1782 + SYS___OPEN_A = 0x6F7 // 1783 + SYS___SETLOCALE_A = 0x6F9 // 1785 + SYS___FPRINTF_A = 0x6FA // 1786 + SYS___SPRINTF_A = 0x6FB // 1787 + SYS___VFPRINTF_A = 0x6FC // 1788 + SYS___VPRINTF_A = 0x6FD // 1789 + SYS___VSPRINTF_A = 0x6FE // 1790 + SYS___VSWPRINTF_A = 0x6FF // 1791 + SYS___SWPRINTF_A = 0x700 // 1792 + SYS___FSCANF_A = 0x701 // 1793 + SYS___SCANF_A = 0x702 // 1794 + SYS___SSCANF_A = 0x703 // 1795 + SYS___SWSCANF_A = 0x704 // 1796 + SYS___ATOF_A = 0x705 // 1797 + SYS___ATOI_A = 0x706 // 1798 + SYS___ATOL_A = 0x707 // 1799 + SYS___STRTOD_A = 0x708 // 1800 + SYS___STRTOL_A = 0x709 // 1801 + SYS___STRTOUL_A = 0x70A // 1802 + SYS_____AE_CORRESTBL_QUERY_A = 0x70B // 1803 + SYS___A64L_A = 0x70C // 1804 + SYS___ECVT_A = 0x70D // 1805 + SYS___FCVT_A = 0x70E // 1806 + SYS___GCVT_A = 0x70F // 1807 + SYS___L64A_A = 0x710 // 1808 + SYS___STRERROR_A = 0x711 // 1809 + SYS___PERROR_A = 0x712 // 1810 + SYS___FETCH_A = 0x713 // 1811 + SYS___GETENV_A = 0x714 // 1812 + SYS___MKSTEMP_A = 0x717 // 1815 + SYS___PTSNAME_A = 0x718 // 1816 + SYS___PUTENV_A = 0x719 // 1817 + SYS___REALPATH_A = 0x71A // 1818 + SYS___SETENV_A = 0x71B // 1819 + SYS___SYSTEM_A = 0x71C // 1820 + SYS___GETOPT_A = 0x71D // 1821 + SYS___CATOPEN_A = 0x71E // 1822 + SYS___ACCESS_A = 0x71F // 1823 + SYS___CHDIR_A = 0x720 // 1824 + SYS___CHOWN_A = 0x721 // 1825 + SYS___CHROOT_A = 0x722 // 1826 + SYS___GETCWD_A = 0x723 // 1827 + SYS___GETWD_A = 0x724 // 1828 + SYS___LCHOWN_A = 0x725 // 1829 + SYS___LINK_A = 0x726 // 1830 + SYS___PATHCONF_A = 0x727 // 1831 + SYS___IF_NAMEINDEX_A = 0x728 // 1832 + SYS___READLINK_A = 0x729 // 1833 + SYS___RMDIR_A = 0x72A // 1834 + SYS___STATVFS_A = 0x72B // 1835 + SYS___SYMLINK_A = 0x72C // 1836 + SYS___TRUNCATE_A = 0x72D // 1837 + SYS___UNLINK_A = 0x72E // 1838 + SYS___GAI_STRERROR_A = 0x72F // 1839 + SYS___EXTLINK_NP_A = 0x730 // 1840 + SYS___ISALNUM_A = 0x731 // 1841 + SYS___ISALPHA_A = 0x732 // 1842 + SYS___A2E_S = 0x733 // 1843 + SYS___ISCNTRL_A = 0x734 // 1844 + SYS___ISDIGIT_A = 0x735 // 1845 + SYS___ISGRAPH_A = 0x736 // 1846 + SYS___ISLOWER_A = 0x737 // 1847 + SYS___ISPRINT_A = 0x738 // 1848 + SYS___ISPUNCT_A = 0x739 // 1849 + SYS___ISSPACE_A = 0x73A // 1850 + SYS___ISUPPER_A = 0x73B // 1851 + SYS___ISXDIGIT_A = 0x73C // 1852 + SYS___TOLOWER_A = 0x73D // 1853 + SYS___TOUPPER_A = 0x73E // 1854 + SYS___ISWALNUM_A = 0x73F // 1855 + SYS___ISWALPHA_A = 0x740 // 1856 + SYS___A2E_L = 0x741 // 1857 + SYS___ISWCNTRL_A = 0x742 // 1858 + SYS___ISWDIGIT_A = 0x743 // 1859 + SYS___ISWGRAPH_A = 0x744 // 1860 + SYS___ISWLOWER_A = 0x745 // 1861 + SYS___ISWPRINT_A = 0x746 // 1862 + SYS___ISWPUNCT_A = 0x747 // 1863 + SYS___ISWSPACE_A = 0x748 // 1864 + SYS___ISWUPPER_A = 0x749 // 1865 + SYS___ISWXDIGIT_A = 0x74A // 1866 + SYS___CONFSTR_A = 0x74B // 1867 + SYS___FTOK_A = 0x74C // 1868 + SYS___MKTEMP_A = 0x74D // 1869 + SYS___FDOPEN_A = 0x74E // 1870 + SYS___FLDATA_A = 0x74F // 1871 + SYS___REMOVE_A = 0x750 // 1872 + SYS___RENAME_A = 0x751 // 1873 + SYS___TMPNAM_A = 0x752 // 1874 + SYS___FOPEN_A = 0x753 // 1875 + SYS___FREOPEN_A = 0x754 // 1876 + SYS___CUSERID_A = 0x755 // 1877 + SYS___POPEN_A = 0x756 // 1878 + SYS___TEMPNAM_A = 0x757 // 1879 + SYS___FTW_A = 0x758 // 1880 + SYS___GETGRENT_A = 0x759 // 1881 + SYS___GETGRGID_A = 0x75A // 1882 + SYS___GETGRNAM_A = 0x75B // 1883 + SYS___GETGROUPSBYNAME_A = 0x75C // 1884 + SYS___GETHOSTENT_A = 0x75D // 1885 + SYS___GETHOSTNAME_A = 0x75E // 1886 + SYS___GETLOGIN_A = 0x75F // 1887 + SYS___INET_NTOP_A = 0x760 // 1888 + SYS___GETPASS_A = 0x761 // 1889 + SYS___GETPWENT_A = 0x762 // 1890 + SYS___GETPWNAM_A = 0x763 // 1891 + SYS___GETPWUID_A = 0x764 // 1892 + SYS_____CHECK_RESOURCE_AUTH_NP_A = 0x765 // 1893 + SYS___CHECKSCHENV_A = 0x766 // 1894 + SYS___CONNECTSERVER_A = 0x767 // 1895 + SYS___CONNECTWORKMGR_A = 0x768 // 1896 + SYS_____CONSOLE_A = 0x769 // 1897 + SYS___CREATEWORKUNIT_A = 0x76A // 1898 + SYS___CTERMID_A = 0x76B // 1899 + SYS___FMTMSG_A = 0x76C // 1900 + SYS___INITGROUPS_A = 0x76D // 1901 + SYS_____LOGIN_A = 0x76E // 1902 + SYS___MSGRCV_A = 0x76F // 1903 + SYS___MSGSND_A = 0x770 // 1904 + SYS___MSGXRCV_A = 0x771 // 1905 + SYS___NFTW_A = 0x772 // 1906 + SYS_____PASSWD_A = 0x773 // 1907 + SYS___PTHREAD_SECURITY_NP_A = 0x774 // 1908 + SYS___QUERYMETRICS_A = 0x775 // 1909 + SYS___QUERYSCHENV = 0x776 // 1910 + SYS___READV_A = 0x777 // 1911 + SYS_____SERVER_CLASSIFY_A = 0x778 // 1912 + SYS_____SERVER_INIT_A = 0x779 // 1913 + SYS_____SERVER_PWU_A = 0x77A // 1914 + SYS___STRCASECMP_A = 0x77B // 1915 + SYS___STRNCASECMP_A = 0x77C // 1916 + SYS___TTYNAME_A = 0x77D // 1917 + SYS___UNAME_A = 0x77E // 1918 + SYS___UTIMES_A = 0x77F // 1919 + SYS___W_GETPSENT_A = 0x780 // 1920 + SYS___WRITEV_A = 0x781 // 1921 + SYS___W_STATFS_A = 0x782 // 1922 + SYS___W_STATVFS_A = 0x783 // 1923 + SYS___FPUTC_A = 0x784 // 1924 + SYS___PUTCHAR_A = 0x785 // 1925 + SYS___PUTS_A = 0x786 // 1926 + SYS___FGETS_A = 0x787 // 1927 + SYS___GETS_A = 0x788 // 1928 + SYS___FPUTS_A = 0x789 // 1929 + SYS___FREAD_A = 0x78A // 1930 + SYS___FWRITE_A = 0x78B // 1931 + SYS___OPEN_O_A = 0x78C // 1932 + SYS___ISASCII = 0x78D // 1933 + SYS___CREAT_O_A = 0x78E // 1934 + SYS___ENVNA = 0x78F // 1935 + SYS___PUTC_A = 0x790 // 1936 + SYS___AE_THREAD_SETMODE = 0x791 // 1937 + SYS___AE_THREAD_SWAPMODE = 0x792 // 1938 + SYS___GETNETBYADDR_A = 0x793 // 1939 + SYS___GETNETBYNAME_A = 0x794 // 1940 + SYS___GETNETENT_A = 0x795 // 1941 + SYS___GETPROTOBYNAME_A = 0x796 // 1942 + SYS___GETPROTOBYNUMBER_A = 0x797 // 1943 + SYS___GETPROTOENT_A = 0x798 // 1944 + SYS___GETSERVBYNAME_A = 0x799 // 1945 + SYS___GETSERVBYPORT_A = 0x79A // 1946 + SYS___GETSERVENT_A = 0x79B // 1947 + SYS___ASCTIME_A = 0x79C // 1948 + SYS___CTIME_A = 0x79D // 1949 + SYS___GETDATE_A = 0x79E // 1950 + SYS___TZSET_A = 0x79F // 1951 + SYS___UTIME_A = 0x7A0 // 1952 + SYS___ASCTIME_R_A = 0x7A1 // 1953 + SYS___CTIME_R_A = 0x7A2 // 1954 + SYS___STRTOLL_A = 0x7A3 // 1955 + SYS___STRTOULL_A = 0x7A4 // 1956 + SYS___FPUTWC_A = 0x7A5 // 1957 + SYS___PUTWC_A = 0x7A6 // 1958 + SYS___PUTWCHAR_A = 0x7A7 // 1959 + SYS___FPUTWS_A = 0x7A8 // 1960 + SYS___UNGETWC_A = 0x7A9 // 1961 + SYS___FGETWC_A = 0x7AA // 1962 + SYS___GETWC_A = 0x7AB // 1963 + SYS___GETWCHAR_A = 0x7AC // 1964 + SYS___FGETWS_A = 0x7AD // 1965 + SYS___GETTIMEOFDAY_A = 0x7AE // 1966 + SYS___GMTIME_A = 0x7AF // 1967 + SYS___GMTIME_R_A = 0x7B0 // 1968 + SYS___LOCALTIME_A = 0x7B1 // 1969 + SYS___LOCALTIME_R_A = 0x7B2 // 1970 + SYS___MKTIME_A = 0x7B3 // 1971 + SYS___TZZNA = 0x7B4 // 1972 + SYS_UNATEXIT = 0x7B5 // 1973 + SYS___CEE3DMP_A = 0x7B6 // 1974 + SYS___CDUMP_A = 0x7B7 // 1975 + SYS___CSNAP_A = 0x7B8 // 1976 + SYS___CTEST_A = 0x7B9 // 1977 + SYS___CTRACE_A = 0x7BA // 1978 + SYS___VSWPRNTF2_A = 0x7BB // 1979 + SYS___INET_PTON_A = 0x7BC // 1980 + SYS___SYSLOG_A = 0x7BD // 1981 + SYS___CRYPT_A = 0x7BE // 1982 + SYS_____OPENDIR2_A = 0x7BF // 1983 + SYS_____READDIR2_A = 0x7C0 // 1984 + SYS___OPENDIR_A = 0x7C2 // 1986 + SYS___READDIR_A = 0x7C3 // 1987 + SYS_PREAD = 0x7C7 // 1991 + SYS_PWRITE = 0x7C8 // 1992 + SYS_M_CREATE_LAYOUT = 0x7C9 // 1993 + SYS_M_DESTROY_LAYOUT = 0x7CA // 1994 + SYS_M_GETVALUES_LAYOUT = 0x7CB // 1995 + SYS_M_SETVALUES_LAYOUT = 0x7CC // 1996 + SYS_M_TRANSFORM_LAYOUT = 0x7CD // 1997 + SYS_M_WTRANSFORM_LAYOUT = 0x7CE // 1998 + SYS_FWPRINTF = 0x7D1 // 2001 + SYS_WPRINTF = 0x7D2 // 2002 + SYS_VFWPRINT = 0x7D3 // 2003 + SYS_VFWPRINTF = 0x7D3 // 2003 + SYS_VWPRINTF = 0x7D4 // 2004 + SYS_FWSCANF = 0x7D5 // 2005 + SYS_WSCANF = 0x7D6 // 2006 + SYS_WCTRANS = 0x7D7 // 2007 + SYS_TOWCTRAN = 0x7D8 // 2008 + SYS_TOWCTRANS = 0x7D8 // 2008 + SYS___WCSTOD_A = 0x7D9 // 2009 + SYS___WCSTOL_A = 0x7DA // 2010 + SYS___WCSTOUL_A = 0x7DB // 2011 + SYS___BASENAME_A = 0x7DC // 2012 + SYS___DIRNAME_A = 0x7DD // 2013 + SYS___GLOB_A = 0x7DE // 2014 + SYS_FWIDE = 0x7DF // 2015 + SYS___OSNAME = 0x7E0 // 2016 + SYS_____OSNAME_A = 0x7E1 // 2017 + SYS___BTOWC_A = 0x7E4 // 2020 + SYS___WCTOB_A = 0x7E5 // 2021 + SYS___DBM_OPEN_A = 0x7E6 // 2022 + SYS___VFPRINTF2_A = 0x7E7 // 2023 + SYS___VPRINTF2_A = 0x7E8 // 2024 + SYS___VSPRINTF2_A = 0x7E9 // 2025 + SYS___CEIL_H = 0x7EA // 2026 + SYS___FLOOR_H = 0x7EB // 2027 + SYS___MODF_H = 0x7EC // 2028 + SYS___FABS_H = 0x7ED // 2029 + SYS___J0_H = 0x7EE // 2030 + SYS___J1_H = 0x7EF // 2031 + SYS___JN_H = 0x7F0 // 2032 + SYS___Y0_H = 0x7F1 // 2033 + SYS___Y1_H = 0x7F2 // 2034 + SYS___YN_H = 0x7F3 // 2035 + SYS___CEILF_H = 0x7F4 // 2036 + SYS___CEILL_H = 0x7F5 // 2037 + SYS___FLOORF_H = 0x7F6 // 2038 + SYS___FLOORL_H = 0x7F7 // 2039 + SYS___MODFF_H = 0x7F8 // 2040 + SYS___MODFL_H = 0x7F9 // 2041 + SYS___FABSF_H = 0x7FA // 2042 + SYS___FABSL_H = 0x7FB // 2043 + SYS___MALLOC24 = 0x7FC // 2044 + SYS___MALLOC31 = 0x7FD // 2045 + SYS_ACL_INIT = 0x7FE // 2046 + SYS_ACL_FREE = 0x7FF // 2047 + SYS_ACL_FIRST_ENTRY = 0x800 // 2048 + SYS_ACL_GET_ENTRY = 0x801 // 2049 + SYS_ACL_VALID = 0x802 // 2050 + SYS_ACL_CREATE_ENTRY = 0x803 // 2051 + SYS_ACL_DELETE_ENTRY = 0x804 // 2052 + SYS_ACL_UPDATE_ENTRY = 0x805 // 2053 + SYS_ACL_DELETE_FD = 0x806 // 2054 + SYS_ACL_DELETE_FILE = 0x807 // 2055 + SYS_ACL_GET_FD = 0x808 // 2056 + SYS_ACL_GET_FILE = 0x809 // 2057 + SYS_ACL_SET_FD = 0x80A // 2058 + SYS_ACL_SET_FILE = 0x80B // 2059 + SYS_ACL_FROM_TEXT = 0x80C // 2060 + SYS_ACL_TO_TEXT = 0x80D // 2061 + SYS_ACL_SORT = 0x80E // 2062 + SYS___SHUTDOWN_REGISTRATION = 0x80F // 2063 + SYS___ERFL_B = 0x810 // 2064 + SYS___ERFCL_B = 0x811 // 2065 + SYS___LGAMMAL_B = 0x812 // 2066 + SYS___SETHOOKEVENTS = 0x813 // 2067 + SYS_IF_NAMETOINDEX = 0x814 // 2068 + SYS_IF_INDEXTONAME = 0x815 // 2069 + SYS_IF_NAMEINDEX = 0x816 // 2070 + SYS_IF_FREENAMEINDEX = 0x817 // 2071 + SYS_GETADDRINFO = 0x818 // 2072 + SYS_GETNAMEINFO = 0x819 // 2073 + SYS_FREEADDRINFO = 0x81A // 2074 + SYS_GAI_STRERROR = 0x81B // 2075 + SYS_REXEC_AF = 0x81C // 2076 + SYS___POE = 0x81D // 2077 + SYS___DYNALLOC_A = 0x81F // 2079 + SYS___DYNFREE_A = 0x820 // 2080 + SYS___RES_QUERY_A = 0x821 // 2081 + SYS___RES_SEARCH_A = 0x822 // 2082 + SYS___RES_QUERYDOMAIN_A = 0x823 // 2083 + SYS___RES_MKQUERY_A = 0x824 // 2084 + SYS___RES_SEND_A = 0x825 // 2085 + SYS___DN_EXPAND_A = 0x826 // 2086 + SYS___DN_SKIPNAME_A = 0x827 // 2087 + SYS___DN_COMP_A = 0x828 // 2088 + SYS___DN_FIND_A = 0x829 // 2089 + SYS___NLIST_A = 0x82A // 2090 + SYS_____TCGETCP_A = 0x82B // 2091 + SYS_____TCSETCP_A = 0x82C // 2092 + SYS_____W_PIOCTL_A = 0x82E // 2094 + SYS___INET_ADDR_A = 0x82F // 2095 + SYS___INET_NTOA_A = 0x830 // 2096 + SYS___INET_NETWORK_A = 0x831 // 2097 + SYS___ACCEPT_A = 0x832 // 2098 + SYS___ACCEPT_AND_RECV_A = 0x833 // 2099 + SYS___BIND_A = 0x834 // 2100 + SYS___CONNECT_A = 0x835 // 2101 + SYS___GETPEERNAME_A = 0x836 // 2102 + SYS___GETSOCKNAME_A = 0x837 // 2103 + SYS___RECVFROM_A = 0x838 // 2104 + SYS___SENDTO_A = 0x839 // 2105 + SYS___SENDMSG_A = 0x83A // 2106 + SYS___RECVMSG_A = 0x83B // 2107 + SYS_____LCHATTR_A = 0x83C // 2108 + SYS___CABEND = 0x83D // 2109 + SYS___LE_CIB_GET = 0x83E // 2110 + SYS___SET_LAA_FOR_JIT = 0x83F // 2111 + SYS___LCHATTR = 0x840 // 2112 + SYS___WRITEDOWN = 0x841 // 2113 + SYS_PTHREAD_MUTEX_INIT2 = 0x842 // 2114 + SYS___ACOSHF_B = 0x843 // 2115 + SYS___ACOSHL_B = 0x844 // 2116 + SYS___ASINHF_B = 0x845 // 2117 + SYS___ASINHL_B = 0x846 // 2118 + SYS___ATANHF_B = 0x847 // 2119 + SYS___ATANHL_B = 0x848 // 2120 + SYS___CBRTF_B = 0x849 // 2121 + SYS___CBRTL_B = 0x84A // 2122 + SYS___COPYSIGNF_B = 0x84B // 2123 + SYS___COPYSIGNL_B = 0x84C // 2124 + SYS___COTANF_B = 0x84D // 2125 + SYS___COTAN_B = 0x84E // 2126 + SYS___COTANL_B = 0x84F // 2127 + SYS___EXP2F_B = 0x850 // 2128 + SYS___EXP2L_B = 0x851 // 2129 + SYS___EXPM1F_B = 0x852 // 2130 + SYS___EXPM1L_B = 0x853 // 2131 + SYS___FDIMF_B = 0x854 // 2132 + SYS___FDIM_B = 0x855 // 2133 + SYS___FDIML_B = 0x856 // 2134 + SYS___HYPOTF_B = 0x857 // 2135 + SYS___HYPOTL_B = 0x858 // 2136 + SYS___LOG1PF_B = 0x859 // 2137 + SYS___LOG1PL_B = 0x85A // 2138 + SYS___LOG2F_B = 0x85B // 2139 + SYS___LOG2_B = 0x85C // 2140 + SYS___LOG2L_B = 0x85D // 2141 + SYS___REMAINDERF_B = 0x85E // 2142 + SYS___REMAINDERL_B = 0x85F // 2143 + SYS___REMQUOF_B = 0x860 // 2144 + SYS___REMQUO_B = 0x861 // 2145 + SYS___REMQUOL_B = 0x862 // 2146 + SYS___TGAMMAF_B = 0x863 // 2147 + SYS___TGAMMA_B = 0x864 // 2148 + SYS___TGAMMAL_B = 0x865 // 2149 + SYS___TRUNCF_B = 0x866 // 2150 + SYS___TRUNC_B = 0x867 // 2151 + SYS___TRUNCL_B = 0x868 // 2152 + SYS___LGAMMAF_B = 0x869 // 2153 + SYS___LROUNDF_B = 0x86A // 2154 + SYS___LROUND_B = 0x86B // 2155 + SYS___ERFF_B = 0x86C // 2156 + SYS___ERFCF_B = 0x86D // 2157 + SYS_ACOSHF = 0x86E // 2158 + SYS_ACOSHL = 0x86F // 2159 + SYS_ASINHF = 0x870 // 2160 + SYS_ASINHL = 0x871 // 2161 + SYS_ATANHF = 0x872 // 2162 + SYS_ATANHL = 0x873 // 2163 + SYS_CBRTF = 0x874 // 2164 + SYS_CBRTL = 0x875 // 2165 + SYS_COPYSIGNF = 0x876 // 2166 + SYS_CPYSIGNF = 0x876 // 2166 + SYS_COPYSIGNL = 0x877 // 2167 + SYS_CPYSIGNL = 0x877 // 2167 + SYS_COTANF = 0x878 // 2168 + SYS___COTANF = 0x878 // 2168 + SYS_COTAN = 0x879 // 2169 + SYS___COTAN = 0x879 // 2169 + SYS_COTANL = 0x87A // 2170 + SYS___COTANL = 0x87A // 2170 + SYS_EXP2F = 0x87B // 2171 + SYS_EXP2L = 0x87C // 2172 + SYS_EXPM1F = 0x87D // 2173 + SYS_EXPM1L = 0x87E // 2174 + SYS_FDIMF = 0x87F // 2175 + SYS_FDIM = 0x881 // 2177 + SYS_FDIML = 0x882 // 2178 + SYS_HYPOTF = 0x883 // 2179 + SYS_HYPOTL = 0x884 // 2180 + SYS_LOG1PF = 0x885 // 2181 + SYS_LOG1PL = 0x886 // 2182 + SYS_LOG2F = 0x887 // 2183 + SYS_LOG2 = 0x888 // 2184 + SYS_LOG2L = 0x889 // 2185 + SYS_REMAINDERF = 0x88A // 2186 + SYS_REMAINDF = 0x88A // 2186 + SYS_REMAINDERL = 0x88B // 2187 + SYS_REMAINDL = 0x88B // 2187 + SYS_REMQUOF = 0x88C // 2188 + SYS_REMQUO = 0x88D // 2189 + SYS_REMQUOL = 0x88E // 2190 + SYS_TGAMMAF = 0x88F // 2191 + SYS_TGAMMA = 0x890 // 2192 + SYS_TGAMMAL = 0x891 // 2193 + SYS_TRUNCF = 0x892 // 2194 + SYS_TRUNC = 0x893 // 2195 + SYS_TRUNCL = 0x894 // 2196 + SYS_LGAMMAF = 0x895 // 2197 + SYS_LGAMMAL = 0x896 // 2198 + SYS_LROUNDF = 0x897 // 2199 + SYS_LROUND = 0x898 // 2200 + SYS_ERFF = 0x899 // 2201 + SYS_ERFL = 0x89A // 2202 + SYS_ERFCF = 0x89B // 2203 + SYS_ERFCL = 0x89C // 2204 + SYS___EXP2_B = 0x89D // 2205 + SYS_EXP2 = 0x89E // 2206 + SYS___FAR_JUMP = 0x89F // 2207 + SYS___TCGETATTR_A = 0x8A1 // 2209 + SYS___TCSETATTR_A = 0x8A2 // 2210 + SYS___SUPERKILL = 0x8A4 // 2212 + SYS___LE_CONDITION_TOKEN_BUILD = 0x8A5 // 2213 + SYS___LE_MSG_ADD_INSERT = 0x8A6 // 2214 + SYS___LE_MSG_GET = 0x8A7 // 2215 + SYS___LE_MSG_GET_AND_WRITE = 0x8A8 // 2216 + SYS___LE_MSG_WRITE = 0x8A9 // 2217 + SYS___ITOA = 0x8AA // 2218 + SYS___UTOA = 0x8AB // 2219 + SYS___LTOA = 0x8AC // 2220 + SYS___ULTOA = 0x8AD // 2221 + SYS___LLTOA = 0x8AE // 2222 + SYS___ULLTOA = 0x8AF // 2223 + SYS___ITOA_A = 0x8B0 // 2224 + SYS___UTOA_A = 0x8B1 // 2225 + SYS___LTOA_A = 0x8B2 // 2226 + SYS___ULTOA_A = 0x8B3 // 2227 + SYS___LLTOA_A = 0x8B4 // 2228 + SYS___ULLTOA_A = 0x8B5 // 2229 + SYS_____GETENV_A = 0x8C3 // 2243 + SYS___REXEC_A = 0x8C4 // 2244 + SYS___REXEC_AF_A = 0x8C5 // 2245 + SYS___GETUTXENT_A = 0x8C6 // 2246 + SYS___GETUTXID_A = 0x8C7 // 2247 + SYS___GETUTXLINE_A = 0x8C8 // 2248 + SYS___PUTUTXLINE_A = 0x8C9 // 2249 + SYS_____UTMPXNAME_A = 0x8CA // 2250 + SYS___PUTC_UNLOCKED_A = 0x8CB // 2251 + SYS___PUTCHAR_UNLOCKED_A = 0x8CC // 2252 + SYS___SNPRINTF_A = 0x8CD // 2253 + SYS___VSNPRINTF_A = 0x8CE // 2254 + SYS___DLOPEN_A = 0x8D0 // 2256 + SYS___DLSYM_A = 0x8D1 // 2257 + SYS___DLERROR_A = 0x8D2 // 2258 + SYS_FLOCKFILE = 0x8D3 // 2259 + SYS_FTRYLOCKFILE = 0x8D4 // 2260 + SYS_FUNLOCKFILE = 0x8D5 // 2261 + SYS_GETC_UNLOCKED = 0x8D6 // 2262 + SYS_GETCHAR_UNLOCKED = 0x8D7 // 2263 + SYS_PUTC_UNLOCKED = 0x8D8 // 2264 + SYS_PUTCHAR_UNLOCKED = 0x8D9 // 2265 + SYS_SNPRINTF = 0x8DA // 2266 + SYS_VSNPRINTF = 0x8DB // 2267 + SYS_DLOPEN = 0x8DD // 2269 + SYS_DLSYM = 0x8DE // 2270 + SYS_DLCLOSE = 0x8DF // 2271 + SYS_DLERROR = 0x8E0 // 2272 + SYS___SET_EXCEPTION_HANDLER = 0x8E2 // 2274 + SYS___RESET_EXCEPTION_HANDLER = 0x8E3 // 2275 + SYS___VHM_EVENT = 0x8E4 // 2276 + SYS___ABS_H = 0x8E6 // 2278 + SYS___ABSF_H = 0x8E7 // 2279 + SYS___ABSL_H = 0x8E8 // 2280 + SYS___ACOS_H = 0x8E9 // 2281 + SYS___ACOSF_H = 0x8EA // 2282 + SYS___ACOSL_H = 0x8EB // 2283 + SYS___ACOSH_H = 0x8EC // 2284 + SYS___ASIN_H = 0x8ED // 2285 + SYS___ASINF_H = 0x8EE // 2286 + SYS___ASINL_H = 0x8EF // 2287 + SYS___ASINH_H = 0x8F0 // 2288 + SYS___ATAN_H = 0x8F1 // 2289 + SYS___ATANF_H = 0x8F2 // 2290 + SYS___ATANL_H = 0x8F3 // 2291 + SYS___ATANH_H = 0x8F4 // 2292 + SYS___ATANHF_H = 0x8F5 // 2293 + SYS___ATANHL_H = 0x8F6 // 2294 + SYS___ATAN2_H = 0x8F7 // 2295 + SYS___ATAN2F_H = 0x8F8 // 2296 + SYS___ATAN2L_H = 0x8F9 // 2297 + SYS___CBRT_H = 0x8FA // 2298 + SYS___COPYSIGNF_H = 0x8FB // 2299 + SYS___COPYSIGNL_H = 0x8FC // 2300 + SYS___COS_H = 0x8FD // 2301 + SYS___COSF_H = 0x8FE // 2302 + SYS___COSL_H = 0x8FF // 2303 + SYS___COSHF_H = 0x900 // 2304 + SYS___COSHL_H = 0x901 // 2305 + SYS___COTAN_H = 0x902 // 2306 + SYS___COTANF_H = 0x903 // 2307 + SYS___COTANL_H = 0x904 // 2308 + SYS___ERF_H = 0x905 // 2309 + SYS___ERFF_H = 0x906 // 2310 + SYS___ERFL_H = 0x907 // 2311 + SYS___ERFC_H = 0x908 // 2312 + SYS___ERFCF_H = 0x909 // 2313 + SYS___ERFCL_H = 0x90A // 2314 + SYS___EXP_H = 0x90B // 2315 + SYS___EXPF_H = 0x90C // 2316 + SYS___EXPL_H = 0x90D // 2317 + SYS___EXPM1_H = 0x90E // 2318 + SYS___FDIM_H = 0x90F // 2319 + SYS___FDIMF_H = 0x910 // 2320 + SYS___FDIML_H = 0x911 // 2321 + SYS___FMOD_H = 0x912 // 2322 + SYS___FMODF_H = 0x913 // 2323 + SYS___FMODL_H = 0x914 // 2324 + SYS___GAMMA_H = 0x915 // 2325 + SYS___HYPOT_H = 0x916 // 2326 + SYS___ILOGB_H = 0x917 // 2327 + SYS___LGAMMA_H = 0x918 // 2328 + SYS___LGAMMAF_H = 0x919 // 2329 + SYS___LOG_H = 0x91A // 2330 + SYS___LOGF_H = 0x91B // 2331 + SYS___LOGL_H = 0x91C // 2332 + SYS___LOGB_H = 0x91D // 2333 + SYS___LOG2_H = 0x91E // 2334 + SYS___LOG2F_H = 0x91F // 2335 + SYS___LOG2L_H = 0x920 // 2336 + SYS___LOG1P_H = 0x921 // 2337 + SYS___LOG10_H = 0x922 // 2338 + SYS___LOG10F_H = 0x923 // 2339 + SYS___LOG10L_H = 0x924 // 2340 + SYS___LROUND_H = 0x925 // 2341 + SYS___LROUNDF_H = 0x926 // 2342 + SYS___NEXTAFTER_H = 0x927 // 2343 + SYS___POW_H = 0x928 // 2344 + SYS___POWF_H = 0x929 // 2345 + SYS___POWL_H = 0x92A // 2346 + SYS___REMAINDER_H = 0x92B // 2347 + SYS___RINT_H = 0x92C // 2348 + SYS___SCALB_H = 0x92D // 2349 + SYS___SIN_H = 0x92E // 2350 + SYS___SINF_H = 0x92F // 2351 + SYS___SINL_H = 0x930 // 2352 + SYS___SINH_H = 0x931 // 2353 + SYS___SINHF_H = 0x932 // 2354 + SYS___SINHL_H = 0x933 // 2355 + SYS___SQRT_H = 0x934 // 2356 + SYS___SQRTF_H = 0x935 // 2357 + SYS___SQRTL_H = 0x936 // 2358 + SYS___TAN_H = 0x937 // 2359 + SYS___TANF_H = 0x938 // 2360 + SYS___TANL_H = 0x939 // 2361 + SYS___TANH_H = 0x93A // 2362 + SYS___TANHF_H = 0x93B // 2363 + SYS___TANHL_H = 0x93C // 2364 + SYS___TGAMMA_H = 0x93D // 2365 + SYS___TGAMMAF_H = 0x93E // 2366 + SYS___TRUNC_H = 0x93F // 2367 + SYS___TRUNCF_H = 0x940 // 2368 + SYS___TRUNCL_H = 0x941 // 2369 + SYS___COSH_H = 0x942 // 2370 + SYS___LE_DEBUG_SET_RESUME_MCH = 0x943 // 2371 + SYS_VFSCANF = 0x944 // 2372 + SYS_VSCANF = 0x946 // 2374 + SYS_VSSCANF = 0x948 // 2376 + SYS_VFWSCANF = 0x94A // 2378 + SYS_VWSCANF = 0x94C // 2380 + SYS_VSWSCANF = 0x94E // 2382 + SYS_IMAXABS = 0x950 // 2384 + SYS_IMAXDIV = 0x951 // 2385 + SYS_STRTOIMAX = 0x952 // 2386 + SYS_STRTOUMAX = 0x953 // 2387 + SYS_WCSTOIMAX = 0x954 // 2388 + SYS_WCSTOUMAX = 0x955 // 2389 + SYS_ATOLL = 0x956 // 2390 + SYS_STRTOF = 0x957 // 2391 + SYS_STRTOLD = 0x958 // 2392 + SYS_WCSTOF = 0x959 // 2393 + SYS_WCSTOLD = 0x95A // 2394 + SYS_INET6_RTH_SPACE = 0x95B // 2395 + SYS_INET6_RTH_INIT = 0x95C // 2396 + SYS_INET6_RTH_ADD = 0x95D // 2397 + SYS_INET6_RTH_REVERSE = 0x95E // 2398 + SYS_INET6_RTH_SEGMENTS = 0x95F // 2399 + SYS_INET6_RTH_GETADDR = 0x960 // 2400 + SYS_INET6_OPT_INIT = 0x961 // 2401 + SYS_INET6_OPT_APPEND = 0x962 // 2402 + SYS_INET6_OPT_FINISH = 0x963 // 2403 + SYS_INET6_OPT_SET_VAL = 0x964 // 2404 + SYS_INET6_OPT_NEXT = 0x965 // 2405 + SYS_INET6_OPT_FIND = 0x966 // 2406 + SYS_INET6_OPT_GET_VAL = 0x967 // 2407 + SYS___POW_I = 0x987 // 2439 + SYS___POW_I_B = 0x988 // 2440 + SYS___POW_I_H = 0x989 // 2441 + SYS___POW_II = 0x98A // 2442 + SYS___POW_II_B = 0x98B // 2443 + SYS___POW_II_H = 0x98C // 2444 + SYS_CABS = 0x98E // 2446 + SYS___CABS_B = 0x98F // 2447 + SYS___CABS_H = 0x990 // 2448 + SYS_CABSF = 0x991 // 2449 + SYS___CABSF_B = 0x992 // 2450 + SYS___CABSF_H = 0x993 // 2451 + SYS_CABSL = 0x994 // 2452 + SYS___CABSL_B = 0x995 // 2453 + SYS___CABSL_H = 0x996 // 2454 + SYS_CACOS = 0x997 // 2455 + SYS___CACOS_B = 0x998 // 2456 + SYS___CACOS_H = 0x999 // 2457 + SYS_CACOSF = 0x99A // 2458 + SYS___CACOSF_B = 0x99B // 2459 + SYS___CACOSF_H = 0x99C // 2460 + SYS_CACOSL = 0x99D // 2461 + SYS___CACOSL_B = 0x99E // 2462 + SYS___CACOSL_H = 0x99F // 2463 + SYS_CACOSH = 0x9A0 // 2464 + SYS___CACOSH_B = 0x9A1 // 2465 + SYS___CACOSH_H = 0x9A2 // 2466 + SYS_CACOSHF = 0x9A3 // 2467 + SYS___CACOSHF_B = 0x9A4 // 2468 + SYS___CACOSHF_H = 0x9A5 // 2469 + SYS_CACOSHL = 0x9A6 // 2470 + SYS___CACOSHL_B = 0x9A7 // 2471 + SYS___CACOSHL_H = 0x9A8 // 2472 + SYS_CARG = 0x9A9 // 2473 + SYS___CARG_B = 0x9AA // 2474 + SYS___CARG_H = 0x9AB // 2475 + SYS_CARGF = 0x9AC // 2476 + SYS___CARGF_B = 0x9AD // 2477 + SYS___CARGF_H = 0x9AE // 2478 + SYS_CARGL = 0x9AF // 2479 + SYS___CARGL_B = 0x9B0 // 2480 + SYS___CARGL_H = 0x9B1 // 2481 + SYS_CASIN = 0x9B2 // 2482 + SYS___CASIN_B = 0x9B3 // 2483 + SYS___CASIN_H = 0x9B4 // 2484 + SYS_CASINF = 0x9B5 // 2485 + SYS___CASINF_B = 0x9B6 // 2486 + SYS___CASINF_H = 0x9B7 // 2487 + SYS_CASINL = 0x9B8 // 2488 + SYS___CASINL_B = 0x9B9 // 2489 + SYS___CASINL_H = 0x9BA // 2490 + SYS_CASINH = 0x9BB // 2491 + SYS___CASINH_B = 0x9BC // 2492 + SYS___CASINH_H = 0x9BD // 2493 + SYS_CASINHF = 0x9BE // 2494 + SYS___CASINHF_B = 0x9BF // 2495 + SYS___CASINHF_H = 0x9C0 // 2496 + SYS_CASINHL = 0x9C1 // 2497 + SYS___CASINHL_B = 0x9C2 // 2498 + SYS___CASINHL_H = 0x9C3 // 2499 + SYS_CATAN = 0x9C4 // 2500 + SYS___CATAN_B = 0x9C5 // 2501 + SYS___CATAN_H = 0x9C6 // 2502 + SYS_CATANF = 0x9C7 // 2503 + SYS___CATANF_B = 0x9C8 // 2504 + SYS___CATANF_H = 0x9C9 // 2505 + SYS_CATANL = 0x9CA // 2506 + SYS___CATANL_B = 0x9CB // 2507 + SYS___CATANL_H = 0x9CC // 2508 + SYS_CATANH = 0x9CD // 2509 + SYS___CATANH_B = 0x9CE // 2510 + SYS___CATANH_H = 0x9CF // 2511 + SYS_CATANHF = 0x9D0 // 2512 + SYS___CATANHF_B = 0x9D1 // 2513 + SYS___CATANHF_H = 0x9D2 // 2514 + SYS_CATANHL = 0x9D3 // 2515 + SYS___CATANHL_B = 0x9D4 // 2516 + SYS___CATANHL_H = 0x9D5 // 2517 + SYS_CCOS = 0x9D6 // 2518 + SYS___CCOS_B = 0x9D7 // 2519 + SYS___CCOS_H = 0x9D8 // 2520 + SYS_CCOSF = 0x9D9 // 2521 + SYS___CCOSF_B = 0x9DA // 2522 + SYS___CCOSF_H = 0x9DB // 2523 + SYS_CCOSL = 0x9DC // 2524 + SYS___CCOSL_B = 0x9DD // 2525 + SYS___CCOSL_H = 0x9DE // 2526 + SYS_CCOSH = 0x9DF // 2527 + SYS___CCOSH_B = 0x9E0 // 2528 + SYS___CCOSH_H = 0x9E1 // 2529 + SYS_CCOSHF = 0x9E2 // 2530 + SYS___CCOSHF_B = 0x9E3 // 2531 + SYS___CCOSHF_H = 0x9E4 // 2532 + SYS_CCOSHL = 0x9E5 // 2533 + SYS___CCOSHL_B = 0x9E6 // 2534 + SYS___CCOSHL_H = 0x9E7 // 2535 + SYS_CEXP = 0x9E8 // 2536 + SYS___CEXP_B = 0x9E9 // 2537 + SYS___CEXP_H = 0x9EA // 2538 + SYS_CEXPF = 0x9EB // 2539 + SYS___CEXPF_B = 0x9EC // 2540 + SYS___CEXPF_H = 0x9ED // 2541 + SYS_CEXPL = 0x9EE // 2542 + SYS___CEXPL_B = 0x9EF // 2543 + SYS___CEXPL_H = 0x9F0 // 2544 + SYS_CIMAG = 0x9F1 // 2545 + SYS___CIMAG_B = 0x9F2 // 2546 + SYS___CIMAG_H = 0x9F3 // 2547 + SYS_CIMAGF = 0x9F4 // 2548 + SYS___CIMAGF_B = 0x9F5 // 2549 + SYS___CIMAGF_H = 0x9F6 // 2550 + SYS_CIMAGL = 0x9F7 // 2551 + SYS___CIMAGL_B = 0x9F8 // 2552 + SYS___CIMAGL_H = 0x9F9 // 2553 + SYS___CLOG = 0x9FA // 2554 + SYS___CLOG_B = 0x9FB // 2555 + SYS___CLOG_H = 0x9FC // 2556 + SYS_CLOGF = 0x9FD // 2557 + SYS___CLOGF_B = 0x9FE // 2558 + SYS___CLOGF_H = 0x9FF // 2559 + SYS_CLOGL = 0xA00 // 2560 + SYS___CLOGL_B = 0xA01 // 2561 + SYS___CLOGL_H = 0xA02 // 2562 + SYS_CONJ = 0xA03 // 2563 + SYS___CONJ_B = 0xA04 // 2564 + SYS___CONJ_H = 0xA05 // 2565 + SYS_CONJF = 0xA06 // 2566 + SYS___CONJF_B = 0xA07 // 2567 + SYS___CONJF_H = 0xA08 // 2568 + SYS_CONJL = 0xA09 // 2569 + SYS___CONJL_B = 0xA0A // 2570 + SYS___CONJL_H = 0xA0B // 2571 + SYS_CPOW = 0xA0C // 2572 + SYS___CPOW_B = 0xA0D // 2573 + SYS___CPOW_H = 0xA0E // 2574 + SYS_CPOWF = 0xA0F // 2575 + SYS___CPOWF_B = 0xA10 // 2576 + SYS___CPOWF_H = 0xA11 // 2577 + SYS_CPOWL = 0xA12 // 2578 + SYS___CPOWL_B = 0xA13 // 2579 + SYS___CPOWL_H = 0xA14 // 2580 + SYS_CPROJ = 0xA15 // 2581 + SYS___CPROJ_B = 0xA16 // 2582 + SYS___CPROJ_H = 0xA17 // 2583 + SYS_CPROJF = 0xA18 // 2584 + SYS___CPROJF_B = 0xA19 // 2585 + SYS___CPROJF_H = 0xA1A // 2586 + SYS_CPROJL = 0xA1B // 2587 + SYS___CPROJL_B = 0xA1C // 2588 + SYS___CPROJL_H = 0xA1D // 2589 + SYS_CREAL = 0xA1E // 2590 + SYS___CREAL_B = 0xA1F // 2591 + SYS___CREAL_H = 0xA20 // 2592 + SYS_CREALF = 0xA21 // 2593 + SYS___CREALF_B = 0xA22 // 2594 + SYS___CREALF_H = 0xA23 // 2595 + SYS_CREALL = 0xA24 // 2596 + SYS___CREALL_B = 0xA25 // 2597 + SYS___CREALL_H = 0xA26 // 2598 + SYS_CSIN = 0xA27 // 2599 + SYS___CSIN_B = 0xA28 // 2600 + SYS___CSIN_H = 0xA29 // 2601 + SYS_CSINF = 0xA2A // 2602 + SYS___CSINF_B = 0xA2B // 2603 + SYS___CSINF_H = 0xA2C // 2604 + SYS_CSINL = 0xA2D // 2605 + SYS___CSINL_B = 0xA2E // 2606 + SYS___CSINL_H = 0xA2F // 2607 + SYS_CSINH = 0xA30 // 2608 + SYS___CSINH_B = 0xA31 // 2609 + SYS___CSINH_H = 0xA32 // 2610 + SYS_CSINHF = 0xA33 // 2611 + SYS___CSINHF_B = 0xA34 // 2612 + SYS___CSINHF_H = 0xA35 // 2613 + SYS_CSINHL = 0xA36 // 2614 + SYS___CSINHL_B = 0xA37 // 2615 + SYS___CSINHL_H = 0xA38 // 2616 + SYS_CSQRT = 0xA39 // 2617 + SYS___CSQRT_B = 0xA3A // 2618 + SYS___CSQRT_H = 0xA3B // 2619 + SYS_CSQRTF = 0xA3C // 2620 + SYS___CSQRTF_B = 0xA3D // 2621 + SYS___CSQRTF_H = 0xA3E // 2622 + SYS_CSQRTL = 0xA3F // 2623 + SYS___CSQRTL_B = 0xA40 // 2624 + SYS___CSQRTL_H = 0xA41 // 2625 + SYS_CTAN = 0xA42 // 2626 + SYS___CTAN_B = 0xA43 // 2627 + SYS___CTAN_H = 0xA44 // 2628 + SYS_CTANF = 0xA45 // 2629 + SYS___CTANF_B = 0xA46 // 2630 + SYS___CTANF_H = 0xA47 // 2631 + SYS_CTANL = 0xA48 // 2632 + SYS___CTANL_B = 0xA49 // 2633 + SYS___CTANL_H = 0xA4A // 2634 + SYS_CTANH = 0xA4B // 2635 + SYS___CTANH_B = 0xA4C // 2636 + SYS___CTANH_H = 0xA4D // 2637 + SYS_CTANHF = 0xA4E // 2638 + SYS___CTANHF_B = 0xA4F // 2639 + SYS___CTANHF_H = 0xA50 // 2640 + SYS_CTANHL = 0xA51 // 2641 + SYS___CTANHL_B = 0xA52 // 2642 + SYS___CTANHL_H = 0xA53 // 2643 + SYS___ACOSHF_H = 0xA54 // 2644 + SYS___ACOSHL_H = 0xA55 // 2645 + SYS___ASINHF_H = 0xA56 // 2646 + SYS___ASINHL_H = 0xA57 // 2647 + SYS___CBRTF_H = 0xA58 // 2648 + SYS___CBRTL_H = 0xA59 // 2649 + SYS___COPYSIGN_B = 0xA5A // 2650 + SYS___EXPM1F_H = 0xA5B // 2651 + SYS___EXPM1L_H = 0xA5C // 2652 + SYS___EXP2_H = 0xA5D // 2653 + SYS___EXP2F_H = 0xA5E // 2654 + SYS___EXP2L_H = 0xA5F // 2655 + SYS___LOG1PF_H = 0xA60 // 2656 + SYS___LOG1PL_H = 0xA61 // 2657 + SYS___LGAMMAL_H = 0xA62 // 2658 + SYS_FMA = 0xA63 // 2659 + SYS___FMA_B = 0xA64 // 2660 + SYS___FMA_H = 0xA65 // 2661 + SYS_FMAF = 0xA66 // 2662 + SYS___FMAF_B = 0xA67 // 2663 + SYS___FMAF_H = 0xA68 // 2664 + SYS_FMAL = 0xA69 // 2665 + SYS___FMAL_B = 0xA6A // 2666 + SYS___FMAL_H = 0xA6B // 2667 + SYS_FMAX = 0xA6C // 2668 + SYS___FMAX_B = 0xA6D // 2669 + SYS___FMAX_H = 0xA6E // 2670 + SYS_FMAXF = 0xA6F // 2671 + SYS___FMAXF_B = 0xA70 // 2672 + SYS___FMAXF_H = 0xA71 // 2673 + SYS_FMAXL = 0xA72 // 2674 + SYS___FMAXL_B = 0xA73 // 2675 + SYS___FMAXL_H = 0xA74 // 2676 + SYS_FMIN = 0xA75 // 2677 + SYS___FMIN_B = 0xA76 // 2678 + SYS___FMIN_H = 0xA77 // 2679 + SYS_FMINF = 0xA78 // 2680 + SYS___FMINF_B = 0xA79 // 2681 + SYS___FMINF_H = 0xA7A // 2682 + SYS_FMINL = 0xA7B // 2683 + SYS___FMINL_B = 0xA7C // 2684 + SYS___FMINL_H = 0xA7D // 2685 + SYS_ILOGBF = 0xA7E // 2686 + SYS___ILOGBF_B = 0xA7F // 2687 + SYS___ILOGBF_H = 0xA80 // 2688 + SYS_ILOGBL = 0xA81 // 2689 + SYS___ILOGBL_B = 0xA82 // 2690 + SYS___ILOGBL_H = 0xA83 // 2691 + SYS_LLRINT = 0xA84 // 2692 + SYS___LLRINT_B = 0xA85 // 2693 + SYS___LLRINT_H = 0xA86 // 2694 + SYS_LLRINTF = 0xA87 // 2695 + SYS___LLRINTF_B = 0xA88 // 2696 + SYS___LLRINTF_H = 0xA89 // 2697 + SYS_LLRINTL = 0xA8A // 2698 + SYS___LLRINTL_B = 0xA8B // 2699 + SYS___LLRINTL_H = 0xA8C // 2700 + SYS_LLROUND = 0xA8D // 2701 + SYS___LLROUND_B = 0xA8E // 2702 + SYS___LLROUND_H = 0xA8F // 2703 + SYS_LLROUNDF = 0xA90 // 2704 + SYS___LLROUNDF_B = 0xA91 // 2705 + SYS___LLROUNDF_H = 0xA92 // 2706 + SYS_LLROUNDL = 0xA93 // 2707 + SYS___LLROUNDL_B = 0xA94 // 2708 + SYS___LLROUNDL_H = 0xA95 // 2709 + SYS_LOGBF = 0xA96 // 2710 + SYS___LOGBF_B = 0xA97 // 2711 + SYS___LOGBF_H = 0xA98 // 2712 + SYS_LOGBL = 0xA99 // 2713 + SYS___LOGBL_B = 0xA9A // 2714 + SYS___LOGBL_H = 0xA9B // 2715 + SYS_LRINT = 0xA9C // 2716 + SYS___LRINT_B = 0xA9D // 2717 + SYS___LRINT_H = 0xA9E // 2718 + SYS_LRINTF = 0xA9F // 2719 + SYS___LRINTF_B = 0xAA0 // 2720 + SYS___LRINTF_H = 0xAA1 // 2721 + SYS_LRINTL = 0xAA2 // 2722 + SYS___LRINTL_B = 0xAA3 // 2723 + SYS___LRINTL_H = 0xAA4 // 2724 + SYS_LROUNDL = 0xAA5 // 2725 + SYS___LROUNDL_B = 0xAA6 // 2726 + SYS___LROUNDL_H = 0xAA7 // 2727 + SYS_NAN = 0xAA8 // 2728 + SYS___NAN_B = 0xAA9 // 2729 + SYS_NANF = 0xAAA // 2730 + SYS___NANF_B = 0xAAB // 2731 + SYS_NANL = 0xAAC // 2732 + SYS___NANL_B = 0xAAD // 2733 + SYS_NEARBYINT = 0xAAE // 2734 + SYS___NEARBYINT_B = 0xAAF // 2735 + SYS___NEARBYINT_H = 0xAB0 // 2736 + SYS_NEARBYINTF = 0xAB1 // 2737 + SYS___NEARBYINTF_B = 0xAB2 // 2738 + SYS___NEARBYINTF_H = 0xAB3 // 2739 + SYS_NEARBYINTL = 0xAB4 // 2740 + SYS___NEARBYINTL_B = 0xAB5 // 2741 + SYS___NEARBYINTL_H = 0xAB6 // 2742 + SYS_NEXTAFTERF = 0xAB7 // 2743 + SYS___NEXTAFTERF_B = 0xAB8 // 2744 + SYS___NEXTAFTERF_H = 0xAB9 // 2745 + SYS_NEXTAFTERL = 0xABA // 2746 + SYS___NEXTAFTERL_B = 0xABB // 2747 + SYS___NEXTAFTERL_H = 0xABC // 2748 + SYS_NEXTTOWARD = 0xABD // 2749 + SYS___NEXTTOWARD_B = 0xABE // 2750 + SYS___NEXTTOWARD_H = 0xABF // 2751 + SYS_NEXTTOWARDF = 0xAC0 // 2752 + SYS___NEXTTOWARDF_B = 0xAC1 // 2753 + SYS___NEXTTOWARDF_H = 0xAC2 // 2754 + SYS_NEXTTOWARDL = 0xAC3 // 2755 + SYS___NEXTTOWARDL_B = 0xAC4 // 2756 + SYS___NEXTTOWARDL_H = 0xAC5 // 2757 + SYS___REMAINDERF_H = 0xAC6 // 2758 + SYS___REMAINDERL_H = 0xAC7 // 2759 + SYS___REMQUO_H = 0xAC8 // 2760 + SYS___REMQUOF_H = 0xAC9 // 2761 + SYS___REMQUOL_H = 0xACA // 2762 + SYS_RINTF = 0xACB // 2763 + SYS___RINTF_B = 0xACC // 2764 + SYS_RINTL = 0xACD // 2765 + SYS___RINTL_B = 0xACE // 2766 + SYS_ROUND = 0xACF // 2767 + SYS___ROUND_B = 0xAD0 // 2768 + SYS___ROUND_H = 0xAD1 // 2769 + SYS_ROUNDF = 0xAD2 // 2770 + SYS___ROUNDF_B = 0xAD3 // 2771 + SYS___ROUNDF_H = 0xAD4 // 2772 + SYS_ROUNDL = 0xAD5 // 2773 + SYS___ROUNDL_B = 0xAD6 // 2774 + SYS___ROUNDL_H = 0xAD7 // 2775 + SYS_SCALBLN = 0xAD8 // 2776 + SYS___SCALBLN_B = 0xAD9 // 2777 + SYS___SCALBLN_H = 0xADA // 2778 + SYS_SCALBLNF = 0xADB // 2779 + SYS___SCALBLNF_B = 0xADC // 2780 + SYS___SCALBLNF_H = 0xADD // 2781 + SYS_SCALBLNL = 0xADE // 2782 + SYS___SCALBLNL_B = 0xADF // 2783 + SYS___SCALBLNL_H = 0xAE0 // 2784 + SYS___SCALBN_B = 0xAE1 // 2785 + SYS___SCALBN_H = 0xAE2 // 2786 + SYS_SCALBNF = 0xAE3 // 2787 + SYS___SCALBNF_B = 0xAE4 // 2788 + SYS___SCALBNF_H = 0xAE5 // 2789 + SYS_SCALBNL = 0xAE6 // 2790 + SYS___SCALBNL_B = 0xAE7 // 2791 + SYS___SCALBNL_H = 0xAE8 // 2792 + SYS___TGAMMAL_H = 0xAE9 // 2793 + SYS_FECLEAREXCEPT = 0xAEA // 2794 + SYS_FEGETENV = 0xAEB // 2795 + SYS_FEGETEXCEPTFLAG = 0xAEC // 2796 + SYS_FEGETROUND = 0xAED // 2797 + SYS_FEHOLDEXCEPT = 0xAEE // 2798 + SYS_FERAISEEXCEPT = 0xAEF // 2799 + SYS_FESETENV = 0xAF0 // 2800 + SYS_FESETEXCEPTFLAG = 0xAF1 // 2801 + SYS_FESETROUND = 0xAF2 // 2802 + SYS_FETESTEXCEPT = 0xAF3 // 2803 + SYS_FEUPDATEENV = 0xAF4 // 2804 + SYS___COPYSIGN_H = 0xAF5 // 2805 + SYS___HYPOTF_H = 0xAF6 // 2806 + SYS___HYPOTL_H = 0xAF7 // 2807 + SYS___CLASS = 0xAFA // 2810 + SYS___CLASS_B = 0xAFB // 2811 + SYS___CLASS_H = 0xAFC // 2812 + SYS___ISBLANK_A = 0xB2E // 2862 + SYS___ISWBLANK_A = 0xB2F // 2863 + SYS___LROUND_FIXUP = 0xB30 // 2864 + SYS___LROUNDF_FIXUP = 0xB31 // 2865 + SYS_SCHED_YIELD = 0xB32 // 2866 + SYS_STRERROR_R = 0xB33 // 2867 + SYS_UNSETENV = 0xB34 // 2868 + SYS___LGAMMA_H_C99 = 0xB38 // 2872 + SYS___LGAMMA_B_C99 = 0xB39 // 2873 + SYS___LGAMMA_R_C99 = 0xB3A // 2874 + SYS___FTELL2 = 0xB3B // 2875 + SYS___FSEEK2 = 0xB3C // 2876 + SYS___STATIC_REINIT = 0xB3D // 2877 + SYS_PTHREAD_ATTR_GETSTACK = 0xB3E // 2878 + SYS_PTHREAD_ATTR_SETSTACK = 0xB3F // 2879 + SYS___TGAMMA_H_C99 = 0xB78 // 2936 + SYS___TGAMMAF_H_C99 = 0xB79 // 2937 + SYS___LE_TRACEBACK = 0xB7A // 2938 + SYS___MUST_STAY_CLEAN = 0xB7C // 2940 + SYS___O_ENV = 0xB7D // 2941 + SYS_ACOSD32 = 0xB7E // 2942 + SYS_ACOSD64 = 0xB7F // 2943 + SYS_ACOSD128 = 0xB80 // 2944 + SYS_ACOSHD32 = 0xB81 // 2945 + SYS_ACOSHD64 = 0xB82 // 2946 + SYS_ACOSHD128 = 0xB83 // 2947 + SYS_ASIND32 = 0xB84 // 2948 + SYS_ASIND64 = 0xB85 // 2949 + SYS_ASIND128 = 0xB86 // 2950 + SYS_ASINHD32 = 0xB87 // 2951 + SYS_ASINHD64 = 0xB88 // 2952 + SYS_ASINHD128 = 0xB89 // 2953 + SYS_ATAND32 = 0xB8A // 2954 + SYS_ATAND64 = 0xB8B // 2955 + SYS_ATAND128 = 0xB8C // 2956 + SYS_ATAN2D32 = 0xB8D // 2957 + SYS_ATAN2D64 = 0xB8E // 2958 + SYS_ATAN2D128 = 0xB8F // 2959 + SYS_ATANHD32 = 0xB90 // 2960 + SYS_ATANHD64 = 0xB91 // 2961 + SYS_ATANHD128 = 0xB92 // 2962 + SYS_CBRTD32 = 0xB93 // 2963 + SYS_CBRTD64 = 0xB94 // 2964 + SYS_CBRTD128 = 0xB95 // 2965 + SYS_CEILD32 = 0xB96 // 2966 + SYS_CEILD64 = 0xB97 // 2967 + SYS_CEILD128 = 0xB98 // 2968 + SYS___CLASS2 = 0xB99 // 2969 + SYS___CLASS2_B = 0xB9A // 2970 + SYS___CLASS2_H = 0xB9B // 2971 + SYS_COPYSIGND32 = 0xB9C // 2972 + SYS_COPYSIGND64 = 0xB9D // 2973 + SYS_COPYSIGND128 = 0xB9E // 2974 + SYS_COSD32 = 0xB9F // 2975 + SYS_COSD64 = 0xBA0 // 2976 + SYS_COSD128 = 0xBA1 // 2977 + SYS_COSHD32 = 0xBA2 // 2978 + SYS_COSHD64 = 0xBA3 // 2979 + SYS_COSHD128 = 0xBA4 // 2980 + SYS_ERFD32 = 0xBA5 // 2981 + SYS_ERFD64 = 0xBA6 // 2982 + SYS_ERFD128 = 0xBA7 // 2983 + SYS_ERFCD32 = 0xBA8 // 2984 + SYS_ERFCD64 = 0xBA9 // 2985 + SYS_ERFCD128 = 0xBAA // 2986 + SYS_EXPD32 = 0xBAB // 2987 + SYS_EXPD64 = 0xBAC // 2988 + SYS_EXPD128 = 0xBAD // 2989 + SYS_EXP2D32 = 0xBAE // 2990 + SYS_EXP2D64 = 0xBAF // 2991 + SYS_EXP2D128 = 0xBB0 // 2992 + SYS_EXPM1D32 = 0xBB1 // 2993 + SYS_EXPM1D64 = 0xBB2 // 2994 + SYS_EXPM1D128 = 0xBB3 // 2995 + SYS_FABSD32 = 0xBB4 // 2996 + SYS_FABSD64 = 0xBB5 // 2997 + SYS_FABSD128 = 0xBB6 // 2998 + SYS_FDIMD32 = 0xBB7 // 2999 + SYS_FDIMD64 = 0xBB8 // 3000 + SYS_FDIMD128 = 0xBB9 // 3001 + SYS_FE_DEC_GETROUND = 0xBBA // 3002 + SYS_FE_DEC_SETROUND = 0xBBB // 3003 + SYS_FLOORD32 = 0xBBC // 3004 + SYS_FLOORD64 = 0xBBD // 3005 + SYS_FLOORD128 = 0xBBE // 3006 + SYS_FMAD32 = 0xBBF // 3007 + SYS_FMAD64 = 0xBC0 // 3008 + SYS_FMAD128 = 0xBC1 // 3009 + SYS_FMAXD32 = 0xBC2 // 3010 + SYS_FMAXD64 = 0xBC3 // 3011 + SYS_FMAXD128 = 0xBC4 // 3012 + SYS_FMIND32 = 0xBC5 // 3013 + SYS_FMIND64 = 0xBC6 // 3014 + SYS_FMIND128 = 0xBC7 // 3015 + SYS_FMODD32 = 0xBC8 // 3016 + SYS_FMODD64 = 0xBC9 // 3017 + SYS_FMODD128 = 0xBCA // 3018 + SYS___FP_CAST_D = 0xBCB // 3019 + SYS_FREXPD32 = 0xBCC // 3020 + SYS_FREXPD64 = 0xBCD // 3021 + SYS_FREXPD128 = 0xBCE // 3022 + SYS_HYPOTD32 = 0xBCF // 3023 + SYS_HYPOTD64 = 0xBD0 // 3024 + SYS_HYPOTD128 = 0xBD1 // 3025 + SYS_ILOGBD32 = 0xBD2 // 3026 + SYS_ILOGBD64 = 0xBD3 // 3027 + SYS_ILOGBD128 = 0xBD4 // 3028 + SYS_LDEXPD32 = 0xBD5 // 3029 + SYS_LDEXPD64 = 0xBD6 // 3030 + SYS_LDEXPD128 = 0xBD7 // 3031 + SYS_LGAMMAD32 = 0xBD8 // 3032 + SYS_LGAMMAD64 = 0xBD9 // 3033 + SYS_LGAMMAD128 = 0xBDA // 3034 + SYS_LLRINTD32 = 0xBDB // 3035 + SYS_LLRINTD64 = 0xBDC // 3036 + SYS_LLRINTD128 = 0xBDD // 3037 + SYS_LLROUNDD32 = 0xBDE // 3038 + SYS_LLROUNDD64 = 0xBDF // 3039 + SYS_LLROUNDD128 = 0xBE0 // 3040 + SYS_LOGD32 = 0xBE1 // 3041 + SYS_LOGD64 = 0xBE2 // 3042 + SYS_LOGD128 = 0xBE3 // 3043 + SYS_LOG10D32 = 0xBE4 // 3044 + SYS_LOG10D64 = 0xBE5 // 3045 + SYS_LOG10D128 = 0xBE6 // 3046 + SYS_LOG1PD32 = 0xBE7 // 3047 + SYS_LOG1PD64 = 0xBE8 // 3048 + SYS_LOG1PD128 = 0xBE9 // 3049 + SYS_LOG2D32 = 0xBEA // 3050 + SYS_LOG2D64 = 0xBEB // 3051 + SYS_LOG2D128 = 0xBEC // 3052 + SYS_LOGBD32 = 0xBED // 3053 + SYS_LOGBD64 = 0xBEE // 3054 + SYS_LOGBD128 = 0xBEF // 3055 + SYS_LRINTD32 = 0xBF0 // 3056 + SYS_LRINTD64 = 0xBF1 // 3057 + SYS_LRINTD128 = 0xBF2 // 3058 + SYS_LROUNDD32 = 0xBF3 // 3059 + SYS_LROUNDD64 = 0xBF4 // 3060 + SYS_LROUNDD128 = 0xBF5 // 3061 + SYS_MODFD32 = 0xBF6 // 3062 + SYS_MODFD64 = 0xBF7 // 3063 + SYS_MODFD128 = 0xBF8 // 3064 + SYS_NAND32 = 0xBF9 // 3065 + SYS_NAND64 = 0xBFA // 3066 + SYS_NAND128 = 0xBFB // 3067 + SYS_NEARBYINTD32 = 0xBFC // 3068 + SYS_NEARBYINTD64 = 0xBFD // 3069 + SYS_NEARBYINTD128 = 0xBFE // 3070 + SYS_NEXTAFTERD32 = 0xBFF // 3071 + SYS_NEXTAFTERD64 = 0xC00 // 3072 + SYS_NEXTAFTERD128 = 0xC01 // 3073 + SYS_NEXTTOWARDD32 = 0xC02 // 3074 + SYS_NEXTTOWARDD64 = 0xC03 // 3075 + SYS_NEXTTOWARDD128 = 0xC04 // 3076 + SYS_POWD32 = 0xC05 // 3077 + SYS_POWD64 = 0xC06 // 3078 + SYS_POWD128 = 0xC07 // 3079 + SYS_QUANTIZED32 = 0xC08 // 3080 + SYS_QUANTIZED64 = 0xC09 // 3081 + SYS_QUANTIZED128 = 0xC0A // 3082 + SYS_REMAINDERD32 = 0xC0B // 3083 + SYS_REMAINDERD64 = 0xC0C // 3084 + SYS_REMAINDERD128 = 0xC0D // 3085 + SYS___REMQUOD32 = 0xC0E // 3086 + SYS___REMQUOD64 = 0xC0F // 3087 + SYS___REMQUOD128 = 0xC10 // 3088 + SYS_RINTD32 = 0xC11 // 3089 + SYS_RINTD64 = 0xC12 // 3090 + SYS_RINTD128 = 0xC13 // 3091 + SYS_ROUNDD32 = 0xC14 // 3092 + SYS_ROUNDD64 = 0xC15 // 3093 + SYS_ROUNDD128 = 0xC16 // 3094 + SYS_SAMEQUANTUMD32 = 0xC17 // 3095 + SYS_SAMEQUANTUMD64 = 0xC18 // 3096 + SYS_SAMEQUANTUMD128 = 0xC19 // 3097 + SYS_SCALBLND32 = 0xC1A // 3098 + SYS_SCALBLND64 = 0xC1B // 3099 + SYS_SCALBLND128 = 0xC1C // 3100 + SYS_SCALBND32 = 0xC1D // 3101 + SYS_SCALBND64 = 0xC1E // 3102 + SYS_SCALBND128 = 0xC1F // 3103 + SYS_SIND32 = 0xC20 // 3104 + SYS_SIND64 = 0xC21 // 3105 + SYS_SIND128 = 0xC22 // 3106 + SYS_SINHD32 = 0xC23 // 3107 + SYS_SINHD64 = 0xC24 // 3108 + SYS_SINHD128 = 0xC25 // 3109 + SYS_SQRTD32 = 0xC26 // 3110 + SYS_SQRTD64 = 0xC27 // 3111 + SYS_SQRTD128 = 0xC28 // 3112 + SYS_STRTOD32 = 0xC29 // 3113 + SYS_STRTOD64 = 0xC2A // 3114 + SYS_STRTOD128 = 0xC2B // 3115 + SYS_TAND32 = 0xC2C // 3116 + SYS_TAND64 = 0xC2D // 3117 + SYS_TAND128 = 0xC2E // 3118 + SYS_TANHD32 = 0xC2F // 3119 + SYS_TANHD64 = 0xC30 // 3120 + SYS_TANHD128 = 0xC31 // 3121 + SYS_TGAMMAD32 = 0xC32 // 3122 + SYS_TGAMMAD64 = 0xC33 // 3123 + SYS_TGAMMAD128 = 0xC34 // 3124 + SYS_TRUNCD32 = 0xC3E // 3134 + SYS_TRUNCD64 = 0xC3F // 3135 + SYS_TRUNCD128 = 0xC40 // 3136 + SYS_WCSTOD32 = 0xC41 // 3137 + SYS_WCSTOD64 = 0xC42 // 3138 + SYS_WCSTOD128 = 0xC43 // 3139 + SYS___CODEPAGE_INFO = 0xC64 // 3172 + SYS_POSIX_OPENPT = 0xC66 // 3174 + SYS_PSELECT = 0xC67 // 3175 + SYS_SOCKATMARK = 0xC68 // 3176 + SYS_AIO_FSYNC = 0xC69 // 3177 + SYS_LIO_LISTIO = 0xC6A // 3178 + SYS___ATANPID32 = 0xC6B // 3179 + SYS___ATANPID64 = 0xC6C // 3180 + SYS___ATANPID128 = 0xC6D // 3181 + SYS___COSPID32 = 0xC6E // 3182 + SYS___COSPID64 = 0xC6F // 3183 + SYS___COSPID128 = 0xC70 // 3184 + SYS___SINPID32 = 0xC71 // 3185 + SYS___SINPID64 = 0xC72 // 3186 + SYS___SINPID128 = 0xC73 // 3187 + SYS_SETIPV4SOURCEFILTER = 0xC76 // 3190 + SYS_GETIPV4SOURCEFILTER = 0xC77 // 3191 + SYS_SETSOURCEFILTER = 0xC78 // 3192 + SYS_GETSOURCEFILTER = 0xC79 // 3193 + SYS_FWRITE_UNLOCKED = 0xC7A // 3194 + SYS_FREAD_UNLOCKED = 0xC7B // 3195 + SYS_FGETS_UNLOCKED = 0xC7C // 3196 + SYS_GETS_UNLOCKED = 0xC7D // 3197 + SYS_FPUTS_UNLOCKED = 0xC7E // 3198 + SYS_PUTS_UNLOCKED = 0xC7F // 3199 + SYS_FGETC_UNLOCKED = 0xC80 // 3200 + SYS_FPUTC_UNLOCKED = 0xC81 // 3201 + SYS_DLADDR = 0xC82 // 3202 + SYS_SHM_OPEN = 0xC8C // 3212 + SYS_SHM_UNLINK = 0xC8D // 3213 + SYS___CLASS2F = 0xC91 // 3217 + SYS___CLASS2L = 0xC92 // 3218 + SYS___CLASS2F_B = 0xC93 // 3219 + SYS___CLASS2F_H = 0xC94 // 3220 + SYS___CLASS2L_B = 0xC95 // 3221 + SYS___CLASS2L_H = 0xC96 // 3222 + SYS___CLASS2D32 = 0xC97 // 3223 + SYS___CLASS2D64 = 0xC98 // 3224 + SYS___CLASS2D128 = 0xC99 // 3225 + SYS___TOCSNAME2 = 0xC9A // 3226 + SYS___D1TOP = 0xC9B // 3227 + SYS___D2TOP = 0xC9C // 3228 + SYS___D4TOP = 0xC9D // 3229 + SYS___PTOD1 = 0xC9E // 3230 + SYS___PTOD2 = 0xC9F // 3231 + SYS___PTOD4 = 0xCA0 // 3232 + SYS_CLEARERR_UNLOCKED = 0xCA1 // 3233 + SYS_FDELREC_UNLOCKED = 0xCA2 // 3234 + SYS_FEOF_UNLOCKED = 0xCA3 // 3235 + SYS_FERROR_UNLOCKED = 0xCA4 // 3236 + SYS_FFLUSH_UNLOCKED = 0xCA5 // 3237 + SYS_FGETPOS_UNLOCKED = 0xCA6 // 3238 + SYS_FGETWC_UNLOCKED = 0xCA7 // 3239 + SYS_FGETWS_UNLOCKED = 0xCA8 // 3240 + SYS_FILENO_UNLOCKED = 0xCA9 // 3241 + SYS_FLDATA_UNLOCKED = 0xCAA // 3242 + SYS_FLOCATE_UNLOCKED = 0xCAB // 3243 + SYS_FPRINTF_UNLOCKED = 0xCAC // 3244 + SYS_FPUTWC_UNLOCKED = 0xCAD // 3245 + SYS_FPUTWS_UNLOCKED = 0xCAE // 3246 + SYS_FSCANF_UNLOCKED = 0xCAF // 3247 + SYS_FSEEK_UNLOCKED = 0xCB0 // 3248 + SYS_FSEEKO_UNLOCKED = 0xCB1 // 3249 + SYS_FSETPOS_UNLOCKED = 0xCB3 // 3251 + SYS_FTELL_UNLOCKED = 0xCB4 // 3252 + SYS_FTELLO_UNLOCKED = 0xCB5 // 3253 + SYS_FUPDATE_UNLOCKED = 0xCB7 // 3255 + SYS_FWIDE_UNLOCKED = 0xCB8 // 3256 + SYS_FWPRINTF_UNLOCKED = 0xCB9 // 3257 + SYS_FWSCANF_UNLOCKED = 0xCBA // 3258 + SYS_GETWC_UNLOCKED = 0xCBB // 3259 + SYS_GETWCHAR_UNLOCKED = 0xCBC // 3260 + SYS_PERROR_UNLOCKED = 0xCBD // 3261 + SYS_PRINTF_UNLOCKED = 0xCBE // 3262 + SYS_PUTWC_UNLOCKED = 0xCBF // 3263 + SYS_PUTWCHAR_UNLOCKED = 0xCC0 // 3264 + SYS_REWIND_UNLOCKED = 0xCC1 // 3265 + SYS_SCANF_UNLOCKED = 0xCC2 // 3266 + SYS_UNGETC_UNLOCKED = 0xCC3 // 3267 + SYS_UNGETWC_UNLOCKED = 0xCC4 // 3268 + SYS_VFPRINTF_UNLOCKED = 0xCC5 // 3269 + SYS_VFSCANF_UNLOCKED = 0xCC7 // 3271 + SYS_VFWPRINTF_UNLOCKED = 0xCC9 // 3273 + SYS_VFWSCANF_UNLOCKED = 0xCCB // 3275 + SYS_VPRINTF_UNLOCKED = 0xCCD // 3277 + SYS_VSCANF_UNLOCKED = 0xCCF // 3279 + SYS_VWPRINTF_UNLOCKED = 0xCD1 // 3281 + SYS_VWSCANF_UNLOCKED = 0xCD3 // 3283 + SYS_WPRINTF_UNLOCKED = 0xCD5 // 3285 + SYS_WSCANF_UNLOCKED = 0xCD6 // 3286 + SYS_ASCTIME64 = 0xCD7 // 3287 + SYS_ASCTIME64_R = 0xCD8 // 3288 + SYS_CTIME64 = 0xCD9 // 3289 + SYS_CTIME64_R = 0xCDA // 3290 + SYS_DIFFTIME64 = 0xCDB // 3291 + SYS_GMTIME64 = 0xCDC // 3292 + SYS_GMTIME64_R = 0xCDD // 3293 + SYS_LOCALTIME64 = 0xCDE // 3294 + SYS_LOCALTIME64_R = 0xCDF // 3295 + SYS_MKTIME64 = 0xCE0 // 3296 + SYS_TIME64 = 0xCE1 // 3297 + SYS___LOGIN_APPLID = 0xCE2 // 3298 + SYS___PASSWD_APPLID = 0xCE3 // 3299 + SYS_PTHREAD_SECURITY_APPLID_NP = 0xCE4 // 3300 + SYS___GETTHENT = 0xCE5 // 3301 + SYS_FREEIFADDRS = 0xCE6 // 3302 + SYS_GETIFADDRS = 0xCE7 // 3303 + SYS_POSIX_FALLOCATE = 0xCE8 // 3304 + SYS_POSIX_MEMALIGN = 0xCE9 // 3305 + SYS_SIZEOF_ALLOC = 0xCEA // 3306 + SYS_RESIZE_ALLOC = 0xCEB // 3307 + SYS_FREAD_NOUPDATE = 0xCEC // 3308 + SYS_FREAD_NOUPDATE_UNLOCKED = 0xCED // 3309 + SYS_FGETPOS64 = 0xCEE // 3310 + SYS_FSEEK64 = 0xCEF // 3311 + SYS_FSEEKO64 = 0xCF0 // 3312 + SYS_FSETPOS64 = 0xCF1 // 3313 + SYS_FTELL64 = 0xCF2 // 3314 + SYS_FTELLO64 = 0xCF3 // 3315 + SYS_FGETPOS64_UNLOCKED = 0xCF4 // 3316 + SYS_FSEEK64_UNLOCKED = 0xCF5 // 3317 + SYS_FSEEKO64_UNLOCKED = 0xCF6 // 3318 + SYS_FSETPOS64_UNLOCKED = 0xCF7 // 3319 + SYS_FTELL64_UNLOCKED = 0xCF8 // 3320 + SYS_FTELLO64_UNLOCKED = 0xCF9 // 3321 + SYS_FOPEN_UNLOCKED = 0xCFA // 3322 + SYS_FREOPEN_UNLOCKED = 0xCFB // 3323 + SYS_FDOPEN_UNLOCKED = 0xCFC // 3324 + SYS_TMPFILE_UNLOCKED = 0xCFD // 3325 + SYS___MOSERVICES = 0xD3D // 3389 + SYS___GETTOD = 0xD3E // 3390 + SYS_C16RTOMB = 0xD40 // 3392 + SYS_C32RTOMB = 0xD41 // 3393 + SYS_MBRTOC16 = 0xD42 // 3394 + SYS_MBRTOC32 = 0xD43 // 3395 + SYS_QUANTEXPD32 = 0xD44 // 3396 + SYS_QUANTEXPD64 = 0xD45 // 3397 + SYS_QUANTEXPD128 = 0xD46 // 3398 + SYS___LOCALE_CTL = 0xD47 // 3399 + SYS___SMF_RECORD2 = 0xD48 // 3400 + SYS_FOPEN64 = 0xD49 // 3401 + SYS_FOPEN64_UNLOCKED = 0xD4A // 3402 + SYS_FREOPEN64 = 0xD4B // 3403 + SYS_FREOPEN64_UNLOCKED = 0xD4C // 3404 + SYS_TMPFILE64 = 0xD4D // 3405 + SYS_TMPFILE64_UNLOCKED = 0xD4E // 3406 + SYS_GETDATE64 = 0xD4F // 3407 + SYS_GETTIMEOFDAY64 = 0xD50 // 3408 + SYS_BIND2ADDRSEL = 0xD59 // 3417 + SYS_INET6_IS_SRCADDR = 0xD5A // 3418 + SYS___GETGRGID1 = 0xD5B // 3419 + SYS___GETGRNAM1 = 0xD5C // 3420 + SYS___FBUFSIZE = 0xD60 // 3424 + SYS___FPENDING = 0xD61 // 3425 + SYS___FLBF = 0xD62 // 3426 + SYS___FREADABLE = 0xD63 // 3427 + SYS___FWRITABLE = 0xD64 // 3428 + SYS___FREADING = 0xD65 // 3429 + SYS___FWRITING = 0xD66 // 3430 + SYS___FSETLOCKING = 0xD67 // 3431 + SYS__FLUSHLBF = 0xD68 // 3432 + SYS___FPURGE = 0xD69 // 3433 + SYS___FREADAHEAD = 0xD6A // 3434 + SYS___FSETERR = 0xD6B // 3435 + SYS___FPENDING_UNLOCKED = 0xD6C // 3436 + SYS___FREADING_UNLOCKED = 0xD6D // 3437 + SYS___FWRITING_UNLOCKED = 0xD6E // 3438 + SYS__FLUSHLBF_UNLOCKED = 0xD6F // 3439 + SYS___FPURGE_UNLOCKED = 0xD70 // 3440 + SYS___FREADAHEAD_UNLOCKED = 0xD71 // 3441 + SYS___LE_CEEGTJS = 0xD72 // 3442 + SYS___LE_RECORD_DUMP = 0xD73 // 3443 + SYS_FSTAT64 = 0xD74 // 3444 + SYS_LSTAT64 = 0xD75 // 3445 + SYS_STAT64 = 0xD76 // 3446 + SYS___READDIR2_64 = 0xD77 // 3447 + SYS___OPEN_STAT64 = 0xD78 // 3448 + SYS_FTW64 = 0xD79 // 3449 + SYS_NFTW64 = 0xD7A // 3450 + SYS_UTIME64 = 0xD7B // 3451 + SYS_UTIMES64 = 0xD7C // 3452 + SYS___GETIPC64 = 0xD7D // 3453 + SYS_MSGCTL64 = 0xD7E // 3454 + SYS_SEMCTL64 = 0xD7F // 3455 + SYS_SHMCTL64 = 0xD80 // 3456 + SYS_MSGXRCV64 = 0xD81 // 3457 + SYS___MGXR64 = 0xD81 // 3457 + SYS_W_GETPSENT64 = 0xD82 // 3458 + SYS_PTHREAD_COND_TIMEDWAIT64 = 0xD83 // 3459 + SYS_FTIME64 = 0xD85 // 3461 + SYS_GETUTXENT64 = 0xD86 // 3462 + SYS_GETUTXID64 = 0xD87 // 3463 + SYS_GETUTXLINE64 = 0xD88 // 3464 + SYS_PUTUTXLINE64 = 0xD89 // 3465 + SYS_NEWLOCALE = 0xD8A // 3466 + SYS_FREELOCALE = 0xD8B // 3467 + SYS_USELOCALE = 0xD8C // 3468 + SYS_DUPLOCALE = 0xD8D // 3469 + SYS___CHATTR64 = 0xD9C // 3484 + SYS___LCHATTR64 = 0xD9D // 3485 + SYS___FCHATTR64 = 0xD9E // 3486 + SYS_____CHATTR64_A = 0xD9F // 3487 + SYS_____LCHATTR64_A = 0xDA0 // 3488 + SYS___LE_CEEUSGD = 0xDA1 // 3489 + SYS___LE_IFAM_CON = 0xDA2 // 3490 + SYS___LE_IFAM_DSC = 0xDA3 // 3491 + SYS___LE_IFAM_GET = 0xDA4 // 3492 + SYS___LE_IFAM_QRY = 0xDA5 // 3493 + SYS_ALIGNED_ALLOC = 0xDA6 // 3494 + SYS_ACCEPT4 = 0xDA7 // 3495 + SYS___ACCEPT4_A = 0xDA8 // 3496 + SYS_COPYFILERANGE = 0xDA9 // 3497 + SYS_GETLINE = 0xDAA // 3498 + SYS___GETLINE_A = 0xDAB // 3499 + SYS_DIRFD = 0xDAC // 3500 + SYS_CLOCK_GETTIME = 0xDAD // 3501 + SYS_DUP3 = 0xDAE // 3502 + SYS_EPOLL_CREATE = 0xDAF // 3503 + SYS_EPOLL_CREATE1 = 0xDB0 // 3504 + SYS_EPOLL_CTL = 0xDB1 // 3505 + SYS_EPOLL_WAIT = 0xDB2 // 3506 + SYS_EPOLL_PWAIT = 0xDB3 // 3507 + SYS_EVENTFD = 0xDB4 // 3508 + SYS_STATFS = 0xDB5 // 3509 + SYS___STATFS_A = 0xDB6 // 3510 + SYS_FSTATFS = 0xDB7 // 3511 + SYS_INOTIFY_INIT = 0xDB8 // 3512 + SYS_INOTIFY_INIT1 = 0xDB9 // 3513 + SYS_INOTIFY_ADD_WATCH = 0xDBA // 3514 + SYS___INOTIFY_ADD_WATCH_A = 0xDBB // 3515 + SYS_INOTIFY_RM_WATCH = 0xDBC // 3516 + SYS_PIPE2 = 0xDBD // 3517 + SYS_PIVOT_ROOT = 0xDBE // 3518 + SYS___PIVOT_ROOT_A = 0xDBF // 3519 + SYS_PRCTL = 0xDC0 // 3520 + SYS_PRLIMIT = 0xDC1 // 3521 + SYS_SETHOSTNAME = 0xDC2 // 3522 + SYS___SETHOSTNAME_A = 0xDC3 // 3523 + SYS_SETRESUID = 0xDC4 // 3524 + SYS_SETRESGID = 0xDC5 // 3525 + SYS_PTHREAD_CONDATTR_GETCLOCK = 0xDC6 // 3526 + SYS_FLOCK = 0xDC7 // 3527 + SYS_FGETXATTR = 0xDC8 // 3528 + SYS___FGETXATTR_A = 0xDC9 // 3529 + SYS_FLISTXATTR = 0xDCA // 3530 + SYS___FLISTXATTR_A = 0xDCB // 3531 + SYS_FREMOVEXATTR = 0xDCC // 3532 + SYS___FREMOVEXATTR_A = 0xDCD // 3533 + SYS_FSETXATTR = 0xDCE // 3534 + SYS___FSETXATTR_A = 0xDCF // 3535 + SYS_GETXATTR = 0xDD0 // 3536 + SYS___GETXATTR_A = 0xDD1 // 3537 + SYS_LGETXATTR = 0xDD2 // 3538 + SYS___LGETXATTR_A = 0xDD3 // 3539 + SYS_LISTXATTR = 0xDD4 // 3540 + SYS___LISTXATTR_A = 0xDD5 // 3541 + SYS_LLISTXATTR = 0xDD6 // 3542 + SYS___LLISTXATTR_A = 0xDD7 // 3543 + SYS_LREMOVEXATTR = 0xDD8 // 3544 + SYS___LREMOVEXATTR_A = 0xDD9 // 3545 + SYS_LSETXATTR = 0xDDA // 3546 + SYS___LSETXATTR_A = 0xDDB // 3547 + SYS_REMOVEXATTR = 0xDDC // 3548 + SYS___REMOVEXATTR_A = 0xDDD // 3549 + SYS_SETXATTR = 0xDDE // 3550 + SYS___SETXATTR_A = 0xDDF // 3551 + SYS_FDATASYNC = 0xDE0 // 3552 + SYS_SYNCFS = 0xDE1 // 3553 + SYS_FUTIMES = 0xDE2 // 3554 + SYS_FUTIMESAT = 0xDE3 // 3555 + SYS___FUTIMESAT_A = 0xDE4 // 3556 + SYS_LUTIMES = 0xDE5 // 3557 + SYS___LUTIMES_A = 0xDE6 // 3558 + SYS_INET_ATON = 0xDE7 // 3559 + SYS_GETRANDOM = 0xDE8 // 3560 + SYS_GETTID = 0xDE9 // 3561 + SYS_MEMFD_CREATE = 0xDEA // 3562 + SYS___MEMFD_CREATE_A = 0xDEB // 3563 + SYS_FACCESSAT = 0xDEC // 3564 + SYS___FACCESSAT_A = 0xDED // 3565 + SYS_FCHMODAT = 0xDEE // 3566 + SYS___FCHMODAT_A = 0xDEF // 3567 + SYS_FCHOWNAT = 0xDF0 // 3568 + SYS___FCHOWNAT_A = 0xDF1 // 3569 + SYS_FSTATAT = 0xDF2 // 3570 + SYS___FSTATAT_A = 0xDF3 // 3571 + SYS_LINKAT = 0xDF4 // 3572 + SYS___LINKAT_A = 0xDF5 // 3573 + SYS_MKDIRAT = 0xDF6 // 3574 + SYS___MKDIRAT_A = 0xDF7 // 3575 + SYS_MKFIFOAT = 0xDF8 // 3576 + SYS___MKFIFOAT_A = 0xDF9 // 3577 + SYS_MKNODAT = 0xDFA // 3578 + SYS___MKNODAT_A = 0xDFB // 3579 + SYS_OPENAT = 0xDFC // 3580 + SYS___OPENAT_A = 0xDFD // 3581 + SYS_READLINKAT = 0xDFE // 3582 + SYS___READLINKAT_A = 0xDFF // 3583 + SYS_RENAMEAT = 0xE00 // 3584 + SYS___RENAMEAT_A = 0xE01 // 3585 + SYS_RENAMEAT2 = 0xE02 // 3586 + SYS___RENAMEAT2_A = 0xE03 // 3587 + SYS_SYMLINKAT = 0xE04 // 3588 + SYS___SYMLINKAT_A = 0xE05 // 3589 + SYS_UNLINKAT = 0xE06 // 3590 + SYS___UNLINKAT_A = 0xE07 // 3591 + SYS_SYSINFO = 0xE08 // 3592 + SYS_WAIT4 = 0xE0A // 3594 + SYS_CLONE = 0xE0B // 3595 + SYS_UNSHARE = 0xE0C // 3596 + SYS_SETNS = 0xE0D // 3597 + SYS_CAPGET = 0xE0E // 3598 + SYS_CAPSET = 0xE0F // 3599 + SYS_STRCHRNUL = 0xE10 // 3600 + SYS_PTHREAD_CONDATTR_SETCLOCK = 0xE12 // 3602 + SYS_OPEN_BY_HANDLE_AT = 0xE13 // 3603 + SYS___OPEN_BY_HANDLE_AT_A = 0xE14 // 3604 + SYS___INET_ATON_A = 0xE15 // 3605 + SYS_MOUNT1 = 0xE16 // 3606 + SYS___MOUNT1_A = 0xE17 // 3607 + SYS_UMOUNT1 = 0xE18 // 3608 + SYS___UMOUNT1_A = 0xE19 // 3609 + SYS_UMOUNT2 = 0xE1A // 3610 + SYS___UMOUNT2_A = 0xE1B // 3611 + SYS___PRCTL_A = 0xE1C // 3612 + SYS_LOCALTIME_R2 = 0xE1D // 3613 + SYS___LOCALTIME_R2_A = 0xE1E // 3614 + SYS_OPENAT2 = 0xE1F // 3615 + SYS___OPENAT2_A = 0xE20 // 3616 + SYS___LE_CEEMICT = 0xE21 // 3617 + SYS_GETENTROPY = 0xE22 // 3618 + SYS_NANOSLEEP = 0xE23 // 3619 + SYS_UTIMENSAT = 0xE24 // 3620 + SYS___UTIMENSAT_A = 0xE25 // 3621 + SYS_ASPRINTF = 0xE26 // 3622 + SYS___ASPRINTF_A = 0xE27 // 3623 + SYS_VASPRINTF = 0xE28 // 3624 + SYS___VASPRINTF_A = 0xE29 // 3625 + SYS_DPRINTF = 0xE2A // 3626 + SYS___DPRINTF_A = 0xE2B // 3627 + SYS_GETOPT_LONG = 0xE2C // 3628 + SYS___GETOPT_LONG_A = 0xE2D // 3629 + SYS_PSIGNAL = 0xE2E // 3630 + SYS___PSIGNAL_A = 0xE2F // 3631 + SYS_PSIGNAL_UNLOCKED = 0xE30 // 3632 + SYS___PSIGNAL_UNLOCKED_A = 0xE31 // 3633 + SYS_FSTATAT_O = 0xE32 // 3634 + SYS___FSTATAT_O_A = 0xE33 // 3635 + SYS_FSTATAT64 = 0xE34 // 3636 + SYS___FSTATAT64_A = 0xE35 // 3637 + SYS___CHATTRAT = 0xE36 // 3638 + SYS_____CHATTRAT_A = 0xE37 // 3639 + SYS___CHATTRAT64 = 0xE38 // 3640 + SYS_____CHATTRAT64_A = 0xE39 // 3641 + SYS_MADVISE = 0xE3A // 3642 + SYS___AUTHENTICATE = 0xE3B // 3643 + +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 0000000..3e6d57c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,353 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && aix + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint32 + Blocks uint32 + Bfree uint32 + Bavail uint32 + Files uint32 + Ffree uint32 + Fsid Fsid_t + Vfstype int32 + Fsize uint32 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 +} + +const RNDGETENTCNT = 0x80045200 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 0000000..3a219bd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,357 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && aix + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid64_t + Vfstype int32 + Fsize uint64 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 + _ [4]byte +} + +const RNDGETENTCNT = 0x80045200 diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go new file mode 100644 index 0000000..17c53bd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -0,0 +1,878 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]byte + Mntonname [1024]byte + Mntfromname [1024]byte + Flags_ext uint32 + Reserved [7]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [16]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type Attrlist struct { + Bitmapcount uint16 + Reserved uint16 + Commonattr uint32 + Volattr uint32 + Dirattr uint32 + Fileattr uint32 + Forkattr uint32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type RawSockaddrCtl struct { + Sc_len uint8 + Sc_family uint8 + Ss_sysaddr uint16 + Sc_id uint32 + Sc_unit uint32 + Sc_reserved [5]uint32 +} + +type RawSockaddrVM struct { + Len uint8 + Family uint8 + Reserved1 uint16 + Port uint32 + Cid uint32 +} + +type XVSockPCB struct { + Xv_len uint32 + Xv_vsockpp uint64 + Xvp_local_cid uint32 + Xvp_local_port uint32 + Xvp_remote_cid uint32 + Xvp_remote_port uint32 + Xvp_rxcnt uint32 + Xvp_txcnt uint32 + Xvp_peer_rxhiwat uint32 + Xvp_peer_rxcnt uint32 + Xvp_last_pid int32 + Xvp_gencnt uint64 + Xv_socket XSocket + _ [4]byte +} + +type XSocket struct { + Xso_len uint32 + Xso_so uint32 + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + So_pcb uint32 + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSocket64 struct { + Xso_len uint32 + _ [8]byte + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + _ [8]byte + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSockbuf struct { + Cc uint32 + Hiwat uint32 + Mbcnt uint32 + Mbmax uint32 + Lowat int32 + Flags int16 + Timeo int16 +} + +type XVSockPgen struct { + Len uint32 + Count uint64 + Gen uint64 + Sogen uint64 +} + +type _Socklen uint32 + +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 + SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + State uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 + AT_EACCESS = 0x10 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} + +type CtlInfo struct { + Id uint32 + Name [96]byte +} + +const SizeofKinfoProc = 0x288 + +type Eproc struct { + Paddr uintptr + Sess uintptr + Pcred Pcred + Ucred Ucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess uintptr + Wmesg [8]byte + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]byte + Spare [4]int32 + _ [4]byte +} + +type ExternProc struct { + P_starttime Timeval + P_vmspace *Vmspace + P_sigacts uintptr + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep uintptr + P_siglist int32 + P_textvp uintptr + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]byte + P_pgrp uintptr + P_addr uintptr + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Pcred struct { + Pc_lock [72]int8 + Pc_ucred uintptr + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + _ [4]byte +} + +type Ucred struct { + Ref int32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ uint16 + _ int32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Lpid int32 + Cpid int32 + Nattch uint16 + _ [34]byte +} + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go new file mode 100644 index 0000000..2392226 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -0,0 +1,878 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]byte + Mntonname [1024]byte + Mntfromname [1024]byte + Flags_ext uint32 + Reserved [7]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [16]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type Attrlist struct { + Bitmapcount uint16 + Reserved uint16 + Commonattr uint32 + Volattr uint32 + Dirattr uint32 + Fileattr uint32 + Forkattr uint32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type RawSockaddrCtl struct { + Sc_len uint8 + Sc_family uint8 + Ss_sysaddr uint16 + Sc_id uint32 + Sc_unit uint32 + Sc_reserved [5]uint32 +} + +type RawSockaddrVM struct { + Len uint8 + Family uint8 + Reserved1 uint16 + Port uint32 + Cid uint32 +} + +type XVSockPCB struct { + Xv_len uint32 + Xv_vsockpp uint64 + Xvp_local_cid uint32 + Xvp_local_port uint32 + Xvp_remote_cid uint32 + Xvp_remote_port uint32 + Xvp_rxcnt uint32 + Xvp_txcnt uint32 + Xvp_peer_rxhiwat uint32 + Xvp_peer_rxcnt uint32 + Xvp_last_pid int32 + Xvp_gencnt uint64 + Xv_socket XSocket + _ [4]byte +} + +type XSocket struct { + Xso_len uint32 + Xso_so uint32 + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + So_pcb uint32 + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSocket64 struct { + Xso_len uint32 + _ [8]byte + So_type int16 + So_options int16 + So_linger int16 + So_state int16 + _ [8]byte + Xso_protocol int32 + Xso_family int32 + So_qlen int16 + So_incqlen int16 + So_qlimit int16 + So_timeo int16 + So_error uint16 + So_pgid int32 + So_oobmark uint32 + So_rcv XSockbuf + So_snd XSockbuf + So_uid uint32 +} + +type XSockbuf struct { + Cc uint32 + Hiwat uint32 + Mbcnt uint32 + Mbmax uint32 + Lowat int32 + Flags int16 + Timeo int16 +} + +type XVSockPgen struct { + Len uint32 + Count uint64 + Gen uint64 + Sogen uint64 +} + +type _Socklen uint32 + +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 + SizeofIfData = 0x60 + SizeofIfData64 = 0x80 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + State uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 + AT_EACCESS = 0x10 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} + +type CtlInfo struct { + Id uint32 + Name [96]byte +} + +const SizeofKinfoProc = 0x288 + +type Eproc struct { + Paddr uintptr + Sess uintptr + Pcred Pcred + Ucred Ucred + Vm Vmspace + Ppid int32 + Pgid int32 + Jobc int16 + Tdev int32 + Tpgid int32 + Tsess uintptr + Wmesg [8]byte + Xsize int32 + Xrssize int16 + Xccount int16 + Xswrss int16 + Flag int32 + Login [12]byte + Spare [4]int32 + _ [4]byte +} + +type ExternProc struct { + P_starttime Timeval + P_vmspace *Vmspace + P_sigacts uintptr + P_flag int32 + P_stat int8 + P_pid int32 + P_oppid int32 + P_dupfd int32 + User_stack *int8 + Exit_thread *byte + P_debugger int32 + Sigwait int32 + P_estcpu uint32 + P_cpticks int32 + P_pctcpu uint32 + P_wchan *byte + P_wmesg *int8 + P_swtime uint32 + P_slptime uint32 + P_realtimer Itimerval + P_rtime Timeval + P_uticks uint64 + P_sticks uint64 + P_iticks uint64 + P_traceflag int32 + P_tracep uintptr + P_siglist int32 + P_textvp uintptr + P_holdcnt int32 + P_sigmask uint32 + P_sigignore uint32 + P_sigcatch uint32 + P_priority uint8 + P_usrpri uint8 + P_nice int8 + P_comm [17]byte + P_pgrp uintptr + P_addr uintptr + P_xstat uint16 + P_acflag uint16 + P_ru *Rusage +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +type KinfoProc struct { + Proc ExternProc + Eproc Eproc +} + +type Vmspace struct { + Dummy int32 + Dummy2 *int8 + Dummy3 [5]int32 + Dummy4 [3]*int8 +} + +type Pcred struct { + Pc_lock [72]int8 + Pc_ucred uintptr + P_ruid uint32 + P_svuid uint32 + P_rgid uint32 + P_svgid uint32 + P_refcnt int32 + _ [4]byte +} + +type Ucred struct { + Ref int32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ uint16 + _ int32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Lpid int32 + Cpid int32 + Nattch uint16 + _ [34]byte +} + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go new file mode 100644 index 0000000..30e405b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -0,0 +1,473 @@ +// cgo -godefs types_dragonfly.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && dragonfly + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + _1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + _ uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Blksize int64 + Qspare2 int64 +} + +type Statfs_t struct { + Spare2 int64 + Bsize int64 + Iosize int64 + Blocks int64 + Bfree int64 + Bavail int64 + Files int64 + Ffree int64 + Fsid Fsid + Owner uint32 + Type int32 + Flags int32 + Syncwrites int64 + Asyncwrites int64 + Fstypename [16]byte + Mntonname [80]byte + Syncreads int64 + Asyncreads int64 + Spares1 int16 + Mntfromname [80]byte + Spares2 int16 + Spare [2]int64 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Namlen uint16 + Type uint8 + Unused1 uint8 + Unused2 uint32 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + SizeofIfMsghdr = 0xb0 + SizeofIfData = 0xa0 + SizeofIfaMsghdr = 0x18 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Data IfData +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Mtu uint64 + Metric uint64 + Link_state uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Oqdrops uint64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Addrflags int32 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Pksent uint64 + Expire uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Recvpipe uint64 + Hopcount uint64 + Mssopt uint16 + Pad uint16 + Msl uint64 + Iwmaxsegs uint64 + Iwcapsegs uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = 0xfffafdcd + AT_SYMLINK_NOFOLLOW = 0x1 + AT_REMOVEDIR = 0x2 + AT_EACCESS = 0x4 + AT_SYMLINK_FOLLOW = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go new file mode 100644 index 0000000..51e13eb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -0,0 +1,651 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Time_t int32 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + _ int32 + Atim Timespec + _ int32 + Mtim Timespec + _ int32 + Ctim Timespec + _ int32 + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + _ [32]byte +} +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [4]byte + _ [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Fs uint32 + Es uint32 + Ds uint32 + Edi uint32 + Esi uint32 + Ebp uint32 + Isp uint32 + Ebx uint32 + Edx uint32 + Ecx uint32 + Eax uint32 + Trapno uint32 + Err uint32 + Eip uint32 + Cs uint32 + Eflags uint32 + Esp uint32 + Ss uint32 + Gs uint32 +} + +type FpReg struct { + Env [7]uint32 + Acc [8][10]uint8 + Ex_sw uint32 + Pad [64]uint8 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint32 +} + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x60 + sizeofIfData = 0x98 + SizeofIfData = 0x50 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + Epoch int32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go new file mode 100644 index 0000000..d002d8e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -0,0 +1,656 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R15 int64 + R14 int64 + R13 int64 + R12 int64 + R11 int64 + R10 int64 + R9 int64 + R8 int64 + Rdi int64 + Rsi int64 + Rbp int64 + Rbx int64 + Rdx int64 + Rcx int64 + Rax int64 + Trapno uint32 + Fs uint16 + Gs uint16 + Err uint32 + Es uint16 + Ds uint16 + Rip int64 + Cs int64 + Rflags int64 + Rsp int64 + Ss int64 +} + +type FpReg struct { + Env [4]uint64 + Acc [8][16]uint8 + Xacc [16][16]uint8 + Spare [12]uint64 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go new file mode 100644 index 0000000..3f863d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -0,0 +1,642 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x50 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + _ [32]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [4]byte + _ [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R [13]uint32 + Sp uint32 + Lr uint32 + Pc uint32 + Cpsr uint32 +} + +type FpReg struct { + Fpsr uint32 + Fpr [8]FpExtendedPrecision +} + +type FpExtendedPrecision struct { + Exponent uint32 + Mantissa_hi uint32 + Mantissa_lo uint32 +} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint32 +} + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x70 + sizeofIfData = 0x98 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + _ [4]byte + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go new file mode 100644 index 0000000..61c7293 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -0,0 +1,636 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + X [30]uint64 + Lr uint64 + Sp uint64 + Elr uint64 + Spsr uint32 + _ [4]byte +} + +type FpReg struct { + Q [32][16]uint8 + Sr uint32 + Cr uint32 + _ [8]byte +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go new file mode 100644 index 0000000..b5d1741 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -0,0 +1,638 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __PtraceSiginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T [7]uint64 + S [12]uint64 + A [8]uint64 + Sepc uint64 + Sstatus uint64 +} + +type FpReg struct { + X [32][2]uint64 + Fcsr uint64 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs uintptr + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Nhidx uint64 + Filler [2]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux.go new file mode 100644 index 0000000..45476a7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -0,0 +1,6386 @@ +// Code generated by mkmerge; DO NOT EDIT. + +//go:build linux + +package unix + +const ( + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + + _C_long_long int64 +) + +type ItimerSpec struct { + Interval Timespec + Value Timespec +} + +type Itimerval struct { + Interval Timeval + Value Timeval +} + +const ( + ADJ_OFFSET = 0x1 + ADJ_FREQUENCY = 0x2 + ADJ_MAXERROR = 0x4 + ADJ_ESTERROR = 0x8 + ADJ_STATUS = 0x10 + ADJ_TIMECONST = 0x20 + ADJ_TAI = 0x80 + ADJ_SETOFFSET = 0x100 + ADJ_MICRO = 0x1000 + ADJ_NANO = 0x2000 + ADJ_TICK = 0x4000 + ADJ_OFFSET_SINGLESHOT = 0x8001 + ADJ_OFFSET_SS_READ = 0xa001 +) + +const ( + STA_PLL = 0x1 + STA_PPSFREQ = 0x2 + STA_PPSTIME = 0x4 + STA_FLL = 0x8 + STA_INS = 0x10 + STA_DEL = 0x20 + STA_UNSYNC = 0x40 + STA_FREQHOLD = 0x80 + STA_PPSSIGNAL = 0x100 + STA_PPSJITTER = 0x200 + STA_PPSWANDER = 0x400 + STA_PPSERROR = 0x800 + STA_CLOCKERR = 0x1000 + STA_NANO = 0x2000 + STA_MODE = 0x4000 + STA_CLK = 0x8000 +) + +const ( + TIME_OK = 0x0 + TIME_INS = 0x1 + TIME_DEL = 0x2 + TIME_OOP = 0x3 + TIME_WAIT = 0x4 + TIME_ERROR = 0x5 + TIME_BAD = 0x5 +) + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + Mnt_id uint64 + Dio_mem_align uint32 + Dio_offset_align uint32 + Subvol uint64 + Atomic_write_unit_min uint32 + Atomic_write_unit_max uint32 + Atomic_write_segments_max uint32 + Dio_read_offset_align uint32 + Atomic_write_unit_max_opt uint32 + _ [1]uint32 + _ [8]uint64 +} + +type Fsid struct { + Val [2]int32 +} + +type FileCloneRange struct { + Src_fd int64 + Src_offset uint64 + Src_length uint64 + Dest_offset uint64 +} + +type RawFileDedupeRange struct { + Src_offset uint64 + Src_length uint64 + Dest_count uint16 + Reserved1 uint16 + Reserved2 uint32 +} + +type RawFileDedupeRangeInfo struct { + Dest_fd int64 + Dest_offset uint64 + Bytes_deduped uint64 + Status int32 + Reserved uint32 +} + +const ( + SizeofRawFileDedupeRange = 0x18 + SizeofRawFileDedupeRangeInfo = 0x20 + FILE_DEDUPE_RANGE_SAME = 0x0 + FILE_DEDUPE_RANGE_DIFFERS = 0x1 +) + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type FscryptPolicyV1 struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptPolicyV2 struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Log2_data_unit_size uint8 + _ [3]uint8 + Master_key_identifier [16]uint8 +} + +type FscryptGetPolicyExArg struct { + Size uint64 + Policy [24]byte +} + +type FscryptKeySpecifier struct { + Type uint32 + _ uint32 + U [32]byte +} + +type FscryptAddKeyArg struct { + Key_spec FscryptKeySpecifier + Raw_size uint32 + Key_id uint32 + Flags uint32 + _ [7]uint32 +} + +type FscryptRemoveKeyArg struct { + Key_spec FscryptKeySpecifier + Removal_status_flags uint32 + _ [5]uint32 +} + +type FscryptGetKeyStatusArg struct { + Key_spec FscryptKeySpecifier + _ [6]uint32 + Status uint32 + Status_flags uint32 + User_count uint32 + _ [13]uint32 +} + +type DmIoctl struct { + Version [3]uint32 + Data_size uint32 + Data_start uint32 + Target_count uint32 + Open_count int32 + Flags uint32 + Event_nr uint32 + _ uint32 + Dev uint64 + Name [128]byte + Uuid [129]byte + Data [7]byte +} + +type DmTargetSpec struct { + Sector_start uint64 + Length uint64 + Status int32 + Next uint32 + Target_type [16]byte +} + +type DmTargetDeps struct { + Count uint32 + _ uint32 +} + +type DmTargetVersions struct { + Next uint32 + Version [3]uint32 +} + +type DmTargetMsg struct { + Sector uint64 +} + +const ( + SizeofDmIoctl = 0x138 + SizeofDmTargetSpec = 0x28 +) + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [16]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Flags uint8 + Zero [3]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + +type RawSockaddrL2TPIP struct { + Family uint16 + Unused uint16 + Addr [4]byte /* in_addr */ + Conn_id uint32 + _ [4]uint8 +} + +type RawSockaddrL2TPIP6 struct { + Family uint16 + Unused uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + Conn_id uint32 +} + +type RawSockaddrIUCV struct { + Family uint16 + Port uint16 + Addr uint32 + Nodeid [8]int8 + User_id [8]int8 + Name [8]int8 +} + +type RawSockaddrNFC struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 + Pacing_rate uint64 + Max_pacing_rate uint64 + Bytes_acked uint64 + Bytes_received uint64 + Segs_out uint32 + Segs_in uint32 + Notsent_bytes uint32 + Min_rtt uint32 + Data_segs_in uint32 + Data_segs_out uint32 + Delivery_rate uint64 + Busy_time uint64 + Rwnd_limited uint64 + Sndbuf_limited uint64 + Delivered uint32 + Delivered_ce uint32 + Bytes_sent uint64 + Bytes_retrans uint64 + Dsack_dups uint32 + Reord_seen uint32 + Rcv_ooopack uint32 + Snd_wnd uint32 + Rcv_wnd uint32 + Rehash uint32 + Total_rto uint16 + Total_rto_recoveries uint16 + Total_rto_time uint32 +} + +type TCPVegasInfo struct { + Enabled uint32 + Rttcnt uint32 + Rtt uint32 + Minrtt uint32 +} + +type TCPDCTCPInfo struct { + Enabled uint16 + Ce_state uint16 + Alpha uint32 + Ab_ecn uint32 + Ab_tot uint32 +} + +type TCPBBRInfo struct { + Bw_lo uint32 + Bw_hi uint32 + Min_rtt uint32 + Pacing_gain uint32 + Cwnd_gain uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +type TCPRepairOpt struct { + Code uint32 + Val uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x18 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 + SizeofSockaddrL2TPIP = 0x10 + SizeofSockaddrL2TPIP6 = 0x20 + SizeofSockaddrIUCV = 0x20 + SizeofSockaddrNFC = 0x10 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0xf8 + SizeofTCPCCInfo = 0x14 + SizeofCanFilter = 0x8 + SizeofTCPRepairOpt = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFAL_LABEL = 0x2 + IFAL_ADDRESS = 0x1 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + PREFIX_UNSPEC = 0x0 + PREFIX_ADDRESS = 0x1 + PREFIX_CACHEINFO = 0x2 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofPrefixmsg = 0xc + SizeofPrefixCacheinfo = 0x8 + SizeofIfAddrmsg = 0x8 + SizeofIfAddrlblmsg = 0xc + SizeofIfaCacheinfo = 0x10 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type Prefixmsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + Type uint8 + Len uint8 + Flags uint8 + Pad3 uint8 +} + +type PrefixCacheinfo struct { + Preferred_time uint32 + Valid_time uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type IfAddrlblmsg struct { + Family uint8 + _ uint8 + Prefixlen uint8 + Flags uint8 + Index uint32 + Seq uint32 +} + +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + ICMP_FILTER = 0x1 + + ICMPV6_FILTER = 0x1 + ICMPV6_FILTER_BLOCK = 0x1 + ICMPV6_FILTER_BLOCKOTHERS = 0x3 + ICMPV6_FILTER_PASS = 0x2 + ICMPV6_FILTER_PASSONLY = 0x4 +) + +const ( + SizeofSockFilter = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +const SI_LOAD_SHIFT = 0x10 + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_RECURSIVE = 0x8000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 + + OPEN_TREE_CLONE = 0x1 + + MOVE_MOUNT_F_SYMLINKS = 0x1 + MOVE_MOUNT_F_AUTOMOUNTS = 0x2 + MOVE_MOUNT_F_EMPTY_PATH = 0x4 + MOVE_MOUNT_T_SYMLINKS = 0x10 + MOVE_MOUNT_T_AUTOMOUNTS = 0x20 + MOVE_MOUNT_T_EMPTY_PATH = 0x40 + MOVE_MOUNT_SET_GROUP = 0x100 + + FSOPEN_CLOEXEC = 0x1 + + FSPICK_CLOEXEC = 0x1 + FSPICK_SYMLINK_NOFOLLOW = 0x2 + FSPICK_NO_AUTOMOUNT = 0x4 + FSPICK_EMPTY_PATH = 0x8 + + FSMOUNT_CLOEXEC = 0x1 + + FSCONFIG_SET_FLAG = 0x0 + FSCONFIG_SET_STRING = 0x1 + FSCONFIG_SET_BINARY = 0x2 + FSCONFIG_SET_PATH = 0x3 + FSCONFIG_SET_PATH_EMPTY = 0x4 + FSCONFIG_SET_FD = 0x5 + FSCONFIG_CMD_CREATE = 0x6 + FSCONFIG_CMD_RECONFIGURE = 0x7 +) + +type OpenHow struct { + Flags uint64 + Mode uint64 + Resolve uint64 +} + +const SizeofOpenHow = 0x18 + +const ( + RESOLVE_BENEATH = 0x8 + RESOLVE_IN_ROOT = 0x10 + RESOLVE_NO_MAGICLINKS = 0x2 + RESOLVE_NO_SYMLINKS = 0x4 + RESOLVE_NO_XDEV = 0x1 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type sigset_argpack struct { + ss *Sigset_t + ssLen uintptr +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_CMD_GETPOLICY = 0xa + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_POLICY = 0x8 + CTRL_ATTR_OP_POLICY = 0x9 + CTRL_ATTR_OP = 0xa + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 + CTRL_ATTR_POLICY_UNSPEC = 0x0 + CTRL_ATTR_POLICY_DO = 0x1 + CTRL_ATTR_POLICY_DUMP = 0x2 + CTRL_ATTR_POLICY_DUMP_MAX = 0x2 +) + +const ( + _CPU_SETSIZE = 0x400 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 + Aux_sample_size uint32 + _ uint32 + Sig_data uint64 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ uint32 + Time_cycles uint64 + Time_mask uint64 + _ [928]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 + PerfBitWriteBackward = CBitFieldMaskBit27 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + PERF_TYPE_MAX = 0x6 + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + PERF_COUNT_HW_MAX = 0xa + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + PERF_COUNT_HW_CACHE_MAX = 0x7 + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + PERF_COUNT_HW_CACHE_OP_MAX = 0x3 + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + PERF_COUNT_HW_CACHE_RESULT_MAX = 0x2 + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + PERF_COUNT_SW_MAX = 0xc + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + PERF_SAMPLE_REGS_USER = 0x1000 + PERF_SAMPLE_STACK_USER = 0x2000 + PERF_SAMPLE_WEIGHT = 0x4000 + PERF_SAMPLE_DATA_SRC = 0x8000 + PERF_SAMPLE_IDENTIFIER = 0x10000 + PERF_SAMPLE_TRANSACTION = 0x20000 + PERF_SAMPLE_REGS_INTR = 0x40000 + PERF_SAMPLE_PHYS_ADDR = 0x80000 + PERF_SAMPLE_AUX = 0x100000 + PERF_SAMPLE_CGROUP = 0x200000 + PERF_SAMPLE_DATA_PAGE_SIZE = 0x400000 + PERF_SAMPLE_CODE_PAGE_SIZE = 0x800000 + PERF_SAMPLE_WEIGHT_STRUCT = 0x1000000 + PERF_SAMPLE_MAX = 0x2000000 + PERF_SAMPLE_BRANCH_USER_SHIFT = 0x0 + PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 0x1 + PERF_SAMPLE_BRANCH_HV_SHIFT = 0x2 + PERF_SAMPLE_BRANCH_ANY_SHIFT = 0x3 + PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 0x4 + PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 0x5 + PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 0x6 + PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 0x7 + PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 0x8 + PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 0x9 + PERF_SAMPLE_BRANCH_COND_SHIFT = 0xa + PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 0xb + PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 0xc + PERF_SAMPLE_BRANCH_CALL_SHIFT = 0xd + PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 0xe + PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 0xf + PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 0x10 + PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 0x11 + PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 0x12 + PERF_SAMPLE_BRANCH_COUNTERS = 0x80000 + PERF_SAMPLE_BRANCH_MAX_SHIFT = 0x14 + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + PERF_SAMPLE_BRANCH_HW_INDEX = 0x20000 + PERF_SAMPLE_BRANCH_PRIV_SAVE = 0x40000 + PERF_SAMPLE_BRANCH_MAX = 0x100000 + PERF_BR_UNKNOWN = 0x0 + PERF_BR_COND = 0x1 + PERF_BR_UNCOND = 0x2 + PERF_BR_IND = 0x3 + PERF_BR_CALL = 0x4 + PERF_BR_IND_CALL = 0x5 + PERF_BR_RET = 0x6 + PERF_BR_SYSCALL = 0x7 + PERF_BR_SYSRET = 0x8 + PERF_BR_COND_CALL = 0x9 + PERF_BR_COND_RET = 0xa + PERF_BR_ERET = 0xb + PERF_BR_IRQ = 0xc + PERF_BR_SERROR = 0xd + PERF_BR_NO_TX = 0xe + PERF_BR_EXTEND_ABI = 0xf + PERF_BR_MAX = 0x10 + PERF_SAMPLE_REGS_ABI_NONE = 0x0 + PERF_SAMPLE_REGS_ABI_32 = 0x1 + PERF_SAMPLE_REGS_ABI_64 = 0x2 + PERF_TXN_ELISION = 0x1 + PERF_TXN_TRANSACTION = 0x2 + PERF_TXN_SYNC = 0x4 + PERF_TXN_ASYNC = 0x8 + PERF_TXN_RETRY = 0x10 + PERF_TXN_CONFLICT = 0x20 + PERF_TXN_CAPACITY_WRITE = 0x40 + PERF_TXN_CAPACITY_READ = 0x80 + PERF_TXN_MAX = 0x100 + PERF_TXN_ABORT_MASK = -0x100000000 + PERF_TXN_ABORT_SHIFT = 0x20 + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + PERF_FORMAT_LOST = 0x10 + PERF_FORMAT_MAX = 0x20 + PERF_IOC_FLAG_GROUP = 0x1 + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + PERF_RECORD_KSYMBOL = 0x11 + PERF_RECORD_BPF_EVENT = 0x12 + PERF_RECORD_CGROUP = 0x13 + PERF_RECORD_TEXT_POKE = 0x14 + PERF_RECORD_AUX_OUTPUT_HW_ID = 0x15 + PERF_RECORD_MAX = 0x16 + PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0x0 + PERF_RECORD_KSYMBOL_TYPE_BPF = 0x1 + PERF_RECORD_KSYMBOL_TYPE_OOL = 0x2 + PERF_RECORD_KSYMBOL_TYPE_MAX = 0x3 + PERF_BPF_EVENT_UNKNOWN = 0x0 + PERF_BPF_EVENT_PROG_LOAD = 0x1 + PERF_BPF_EVENT_PROG_UNLOAD = 0x2 + PERF_BPF_EVENT_MAX = 0x3 + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + PERF_CONTEXT_MAX = -0xfff +) + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + Ifindex int32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_PROP_LIST = 0x34 + IFLA_ALT_IFNAME = 0x35 + IFLA_PERM_ADDRESS = 0x36 + IFLA_PROTO_DOWN_REASON = 0x37 + IFLA_PARENT_DEV_NAME = 0x38 + IFLA_PARENT_DEV_BUS_NAME = 0x39 + IFLA_GRO_MAX_SIZE = 0x3a + IFLA_TSO_MAX_SIZE = 0x3b + IFLA_TSO_MAX_SEGS = 0x3c + IFLA_ALLMULTI = 0x3d + IFLA_DEVLINK_PORT = 0x3e + IFLA_GSO_IPV4_MAX_SIZE = 0x3f + IFLA_GRO_IPV4_MAX_SIZE = 0x40 + IFLA_DPLL_PIN = 0x41 + IFLA_PROTO_DOWN_REASON_UNSPEC = 0x0 + IFLA_PROTO_DOWN_REASON_MASK = 0x1 + IFLA_PROTO_DOWN_REASON_VALUE = 0x2 + IFLA_PROTO_DOWN_REASON_MAX = 0x2 + IFLA_INET_UNSPEC = 0x0 + IFLA_INET_CONF = 0x1 + IFLA_INET6_UNSPEC = 0x0 + IFLA_INET6_FLAGS = 0x1 + IFLA_INET6_CONF = 0x2 + IFLA_INET6_STATS = 0x3 + IFLA_INET6_MCAST = 0x4 + IFLA_INET6_CACHEINFO = 0x5 + IFLA_INET6_ICMP6STATS = 0x6 + IFLA_INET6_TOKEN = 0x7 + IFLA_INET6_ADDR_GEN_MODE = 0x8 + IFLA_INET6_RA_MTU = 0x9 + IFLA_BR_UNSPEC = 0x0 + IFLA_BR_FORWARD_DELAY = 0x1 + IFLA_BR_HELLO_TIME = 0x2 + IFLA_BR_MAX_AGE = 0x3 + IFLA_BR_AGEING_TIME = 0x4 + IFLA_BR_STP_STATE = 0x5 + IFLA_BR_PRIORITY = 0x6 + IFLA_BR_VLAN_FILTERING = 0x7 + IFLA_BR_VLAN_PROTOCOL = 0x8 + IFLA_BR_GROUP_FWD_MASK = 0x9 + IFLA_BR_ROOT_ID = 0xa + IFLA_BR_BRIDGE_ID = 0xb + IFLA_BR_ROOT_PORT = 0xc + IFLA_BR_ROOT_PATH_COST = 0xd + IFLA_BR_TOPOLOGY_CHANGE = 0xe + IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 0xf + IFLA_BR_HELLO_TIMER = 0x10 + IFLA_BR_TCN_TIMER = 0x11 + IFLA_BR_TOPOLOGY_CHANGE_TIMER = 0x12 + IFLA_BR_GC_TIMER = 0x13 + IFLA_BR_GROUP_ADDR = 0x14 + IFLA_BR_FDB_FLUSH = 0x15 + IFLA_BR_MCAST_ROUTER = 0x16 + IFLA_BR_MCAST_SNOOPING = 0x17 + IFLA_BR_MCAST_QUERY_USE_IFADDR = 0x18 + IFLA_BR_MCAST_QUERIER = 0x19 + IFLA_BR_MCAST_HASH_ELASTICITY = 0x1a + IFLA_BR_MCAST_HASH_MAX = 0x1b + IFLA_BR_MCAST_LAST_MEMBER_CNT = 0x1c + IFLA_BR_MCAST_STARTUP_QUERY_CNT = 0x1d + IFLA_BR_MCAST_LAST_MEMBER_INTVL = 0x1e + IFLA_BR_MCAST_MEMBERSHIP_INTVL = 0x1f + IFLA_BR_MCAST_QUERIER_INTVL = 0x20 + IFLA_BR_MCAST_QUERY_INTVL = 0x21 + IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 0x22 + IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 0x23 + IFLA_BR_NF_CALL_IPTABLES = 0x24 + IFLA_BR_NF_CALL_IP6TABLES = 0x25 + IFLA_BR_NF_CALL_ARPTABLES = 0x26 + IFLA_BR_VLAN_DEFAULT_PVID = 0x27 + IFLA_BR_PAD = 0x28 + IFLA_BR_VLAN_STATS_ENABLED = 0x29 + IFLA_BR_MCAST_STATS_ENABLED = 0x2a + IFLA_BR_MCAST_IGMP_VERSION = 0x2b + IFLA_BR_MCAST_MLD_VERSION = 0x2c + IFLA_BR_VLAN_STATS_PER_PORT = 0x2d + IFLA_BR_MULTI_BOOLOPT = 0x2e + IFLA_BR_MCAST_QUERIER_STATE = 0x2f + IFLA_BR_FDB_N_LEARNED = 0x30 + IFLA_BR_FDB_MAX_LEARNED = 0x31 + IFLA_BRPORT_UNSPEC = 0x0 + IFLA_BRPORT_STATE = 0x1 + IFLA_BRPORT_PRIORITY = 0x2 + IFLA_BRPORT_COST = 0x3 + IFLA_BRPORT_MODE = 0x4 + IFLA_BRPORT_GUARD = 0x5 + IFLA_BRPORT_PROTECT = 0x6 + IFLA_BRPORT_FAST_LEAVE = 0x7 + IFLA_BRPORT_LEARNING = 0x8 + IFLA_BRPORT_UNICAST_FLOOD = 0x9 + IFLA_BRPORT_PROXYARP = 0xa + IFLA_BRPORT_LEARNING_SYNC = 0xb + IFLA_BRPORT_PROXYARP_WIFI = 0xc + IFLA_BRPORT_ROOT_ID = 0xd + IFLA_BRPORT_BRIDGE_ID = 0xe + IFLA_BRPORT_DESIGNATED_PORT = 0xf + IFLA_BRPORT_DESIGNATED_COST = 0x10 + IFLA_BRPORT_ID = 0x11 + IFLA_BRPORT_NO = 0x12 + IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 0x13 + IFLA_BRPORT_CONFIG_PENDING = 0x14 + IFLA_BRPORT_MESSAGE_AGE_TIMER = 0x15 + IFLA_BRPORT_FORWARD_DELAY_TIMER = 0x16 + IFLA_BRPORT_HOLD_TIMER = 0x17 + IFLA_BRPORT_FLUSH = 0x18 + IFLA_BRPORT_MULTICAST_ROUTER = 0x19 + IFLA_BRPORT_PAD = 0x1a + IFLA_BRPORT_MCAST_FLOOD = 0x1b + IFLA_BRPORT_MCAST_TO_UCAST = 0x1c + IFLA_BRPORT_VLAN_TUNNEL = 0x1d + IFLA_BRPORT_BCAST_FLOOD = 0x1e + IFLA_BRPORT_GROUP_FWD_MASK = 0x1f + IFLA_BRPORT_NEIGH_SUPPRESS = 0x20 + IFLA_BRPORT_ISOLATED = 0x21 + IFLA_BRPORT_BACKUP_PORT = 0x22 + IFLA_BRPORT_MRP_RING_OPEN = 0x23 + IFLA_BRPORT_MRP_IN_OPEN = 0x24 + IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 0x25 + IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 0x26 + IFLA_BRPORT_LOCKED = 0x27 + IFLA_BRPORT_MAB = 0x28 + IFLA_BRPORT_MCAST_N_GROUPS = 0x29 + IFLA_BRPORT_MCAST_MAX_GROUPS = 0x2a + IFLA_BRPORT_NEIGH_VLAN_SUPPRESS = 0x2b + IFLA_BRPORT_BACKUP_NHID = 0x2c + IFLA_INFO_UNSPEC = 0x0 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + IFLA_VLAN_UNSPEC = 0x0 + IFLA_VLAN_ID = 0x1 + IFLA_VLAN_FLAGS = 0x2 + IFLA_VLAN_EGRESS_QOS = 0x3 + IFLA_VLAN_INGRESS_QOS = 0x4 + IFLA_VLAN_PROTOCOL = 0x5 + IFLA_VLAN_QOS_UNSPEC = 0x0 + IFLA_VLAN_QOS_MAPPING = 0x1 + IFLA_MACVLAN_UNSPEC = 0x0 + IFLA_MACVLAN_MODE = 0x1 + IFLA_MACVLAN_FLAGS = 0x2 + IFLA_MACVLAN_MACADDR_MODE = 0x3 + IFLA_MACVLAN_MACADDR = 0x4 + IFLA_MACVLAN_MACADDR_DATA = 0x5 + IFLA_MACVLAN_MACADDR_COUNT = 0x6 + IFLA_MACVLAN_BC_QUEUE_LEN = 0x7 + IFLA_MACVLAN_BC_QUEUE_LEN_USED = 0x8 + IFLA_MACVLAN_BC_CUTOFF = 0x9 + IFLA_VRF_UNSPEC = 0x0 + IFLA_VRF_TABLE = 0x1 + IFLA_VRF_PORT_UNSPEC = 0x0 + IFLA_VRF_PORT_TABLE = 0x1 + IFLA_MACSEC_UNSPEC = 0x0 + IFLA_MACSEC_SCI = 0x1 + IFLA_MACSEC_PORT = 0x2 + IFLA_MACSEC_ICV_LEN = 0x3 + IFLA_MACSEC_CIPHER_SUITE = 0x4 + IFLA_MACSEC_WINDOW = 0x5 + IFLA_MACSEC_ENCODING_SA = 0x6 + IFLA_MACSEC_ENCRYPT = 0x7 + IFLA_MACSEC_PROTECT = 0x8 + IFLA_MACSEC_INC_SCI = 0x9 + IFLA_MACSEC_ES = 0xa + IFLA_MACSEC_SCB = 0xb + IFLA_MACSEC_REPLAY_PROTECT = 0xc + IFLA_MACSEC_VALIDATION = 0xd + IFLA_MACSEC_PAD = 0xe + IFLA_MACSEC_OFFLOAD = 0xf + IFLA_XFRM_UNSPEC = 0x0 + IFLA_XFRM_LINK = 0x1 + IFLA_XFRM_IF_ID = 0x2 + IFLA_XFRM_COLLECT_METADATA = 0x3 + IFLA_IPVLAN_UNSPEC = 0x0 + IFLA_IPVLAN_MODE = 0x1 + IFLA_IPVLAN_FLAGS = 0x2 + IFLA_NETKIT_UNSPEC = 0x0 + IFLA_NETKIT_PEER_INFO = 0x1 + IFLA_NETKIT_PRIMARY = 0x2 + IFLA_NETKIT_POLICY = 0x3 + IFLA_NETKIT_PEER_POLICY = 0x4 + IFLA_NETKIT_MODE = 0x5 + IFLA_VXLAN_UNSPEC = 0x0 + IFLA_VXLAN_ID = 0x1 + IFLA_VXLAN_GROUP = 0x2 + IFLA_VXLAN_LINK = 0x3 + IFLA_VXLAN_LOCAL = 0x4 + IFLA_VXLAN_TTL = 0x5 + IFLA_VXLAN_TOS = 0x6 + IFLA_VXLAN_LEARNING = 0x7 + IFLA_VXLAN_AGEING = 0x8 + IFLA_VXLAN_LIMIT = 0x9 + IFLA_VXLAN_PORT_RANGE = 0xa + IFLA_VXLAN_PROXY = 0xb + IFLA_VXLAN_RSC = 0xc + IFLA_VXLAN_L2MISS = 0xd + IFLA_VXLAN_L3MISS = 0xe + IFLA_VXLAN_PORT = 0xf + IFLA_VXLAN_GROUP6 = 0x10 + IFLA_VXLAN_LOCAL6 = 0x11 + IFLA_VXLAN_UDP_CSUM = 0x12 + IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 0x13 + IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 0x14 + IFLA_VXLAN_REMCSUM_TX = 0x15 + IFLA_VXLAN_REMCSUM_RX = 0x16 + IFLA_VXLAN_GBP = 0x17 + IFLA_VXLAN_REMCSUM_NOPARTIAL = 0x18 + IFLA_VXLAN_COLLECT_METADATA = 0x19 + IFLA_VXLAN_LABEL = 0x1a + IFLA_VXLAN_GPE = 0x1b + IFLA_VXLAN_TTL_INHERIT = 0x1c + IFLA_VXLAN_DF = 0x1d + IFLA_VXLAN_VNIFILTER = 0x1e + IFLA_VXLAN_LOCALBYPASS = 0x1f + IFLA_VXLAN_LABEL_POLICY = 0x20 + IFLA_GENEVE_UNSPEC = 0x0 + IFLA_GENEVE_ID = 0x1 + IFLA_GENEVE_REMOTE = 0x2 + IFLA_GENEVE_TTL = 0x3 + IFLA_GENEVE_TOS = 0x4 + IFLA_GENEVE_PORT = 0x5 + IFLA_GENEVE_COLLECT_METADATA = 0x6 + IFLA_GENEVE_REMOTE6 = 0x7 + IFLA_GENEVE_UDP_CSUM = 0x8 + IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 0x9 + IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 0xa + IFLA_GENEVE_LABEL = 0xb + IFLA_GENEVE_TTL_INHERIT = 0xc + IFLA_GENEVE_DF = 0xd + IFLA_GENEVE_INNER_PROTO_INHERIT = 0xe + IFLA_BAREUDP_UNSPEC = 0x0 + IFLA_BAREUDP_PORT = 0x1 + IFLA_BAREUDP_ETHERTYPE = 0x2 + IFLA_BAREUDP_SRCPORT_MIN = 0x3 + IFLA_BAREUDP_MULTIPROTO_MODE = 0x4 + IFLA_PPP_UNSPEC = 0x0 + IFLA_PPP_DEV_FD = 0x1 + IFLA_GTP_UNSPEC = 0x0 + IFLA_GTP_FD0 = 0x1 + IFLA_GTP_FD1 = 0x2 + IFLA_GTP_PDP_HASHSIZE = 0x3 + IFLA_GTP_ROLE = 0x4 + IFLA_GTP_CREATE_SOCKETS = 0x5 + IFLA_GTP_RESTART_COUNT = 0x6 + IFLA_GTP_LOCAL = 0x7 + IFLA_GTP_LOCAL6 = 0x8 + IFLA_BOND_UNSPEC = 0x0 + IFLA_BOND_MODE = 0x1 + IFLA_BOND_ACTIVE_SLAVE = 0x2 + IFLA_BOND_MIIMON = 0x3 + IFLA_BOND_UPDELAY = 0x4 + IFLA_BOND_DOWNDELAY = 0x5 + IFLA_BOND_USE_CARRIER = 0x6 + IFLA_BOND_ARP_INTERVAL = 0x7 + IFLA_BOND_ARP_IP_TARGET = 0x8 + IFLA_BOND_ARP_VALIDATE = 0x9 + IFLA_BOND_ARP_ALL_TARGETS = 0xa + IFLA_BOND_PRIMARY = 0xb + IFLA_BOND_PRIMARY_RESELECT = 0xc + IFLA_BOND_FAIL_OVER_MAC = 0xd + IFLA_BOND_XMIT_HASH_POLICY = 0xe + IFLA_BOND_RESEND_IGMP = 0xf + IFLA_BOND_NUM_PEER_NOTIF = 0x10 + IFLA_BOND_ALL_SLAVES_ACTIVE = 0x11 + IFLA_BOND_MIN_LINKS = 0x12 + IFLA_BOND_LP_INTERVAL = 0x13 + IFLA_BOND_PACKETS_PER_SLAVE = 0x14 + IFLA_BOND_AD_LACP_RATE = 0x15 + IFLA_BOND_AD_SELECT = 0x16 + IFLA_BOND_AD_INFO = 0x17 + IFLA_BOND_AD_ACTOR_SYS_PRIO = 0x18 + IFLA_BOND_AD_USER_PORT_KEY = 0x19 + IFLA_BOND_AD_ACTOR_SYSTEM = 0x1a + IFLA_BOND_TLB_DYNAMIC_LB = 0x1b + IFLA_BOND_PEER_NOTIF_DELAY = 0x1c + IFLA_BOND_AD_LACP_ACTIVE = 0x1d + IFLA_BOND_MISSED_MAX = 0x1e + IFLA_BOND_NS_IP6_TARGET = 0x1f + IFLA_BOND_COUPLED_CONTROL = 0x20 + IFLA_BOND_AD_INFO_UNSPEC = 0x0 + IFLA_BOND_AD_INFO_AGGREGATOR = 0x1 + IFLA_BOND_AD_INFO_NUM_PORTS = 0x2 + IFLA_BOND_AD_INFO_ACTOR_KEY = 0x3 + IFLA_BOND_AD_INFO_PARTNER_KEY = 0x4 + IFLA_BOND_AD_INFO_PARTNER_MAC = 0x5 + IFLA_BOND_SLAVE_UNSPEC = 0x0 + IFLA_BOND_SLAVE_STATE = 0x1 + IFLA_BOND_SLAVE_MII_STATUS = 0x2 + IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 0x3 + IFLA_BOND_SLAVE_PERM_HWADDR = 0x4 + IFLA_BOND_SLAVE_QUEUE_ID = 0x5 + IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 0x6 + IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 0x7 + IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8 + IFLA_BOND_SLAVE_PRIO = 0x9 + IFLA_VF_INFO_UNSPEC = 0x0 + IFLA_VF_INFO = 0x1 + IFLA_VF_UNSPEC = 0x0 + IFLA_VF_MAC = 0x1 + IFLA_VF_VLAN = 0x2 + IFLA_VF_TX_RATE = 0x3 + IFLA_VF_SPOOFCHK = 0x4 + IFLA_VF_LINK_STATE = 0x5 + IFLA_VF_RATE = 0x6 + IFLA_VF_RSS_QUERY_EN = 0x7 + IFLA_VF_STATS = 0x8 + IFLA_VF_TRUST = 0x9 + IFLA_VF_IB_NODE_GUID = 0xa + IFLA_VF_IB_PORT_GUID = 0xb + IFLA_VF_VLAN_LIST = 0xc + IFLA_VF_BROADCAST = 0xd + IFLA_VF_VLAN_INFO_UNSPEC = 0x0 + IFLA_VF_VLAN_INFO = 0x1 + IFLA_VF_LINK_STATE_AUTO = 0x0 + IFLA_VF_LINK_STATE_ENABLE = 0x1 + IFLA_VF_LINK_STATE_DISABLE = 0x2 + IFLA_VF_STATS_RX_PACKETS = 0x0 + IFLA_VF_STATS_TX_PACKETS = 0x1 + IFLA_VF_STATS_RX_BYTES = 0x2 + IFLA_VF_STATS_TX_BYTES = 0x3 + IFLA_VF_STATS_BROADCAST = 0x4 + IFLA_VF_STATS_MULTICAST = 0x5 + IFLA_VF_STATS_PAD = 0x6 + IFLA_VF_STATS_RX_DROPPED = 0x7 + IFLA_VF_STATS_TX_DROPPED = 0x8 + IFLA_VF_PORT_UNSPEC = 0x0 + IFLA_VF_PORT = 0x1 + IFLA_PORT_UNSPEC = 0x0 + IFLA_PORT_VF = 0x1 + IFLA_PORT_PROFILE = 0x2 + IFLA_PORT_VSI_TYPE = 0x3 + IFLA_PORT_INSTANCE_UUID = 0x4 + IFLA_PORT_HOST_UUID = 0x5 + IFLA_PORT_REQUEST = 0x6 + IFLA_PORT_RESPONSE = 0x7 + IFLA_IPOIB_UNSPEC = 0x0 + IFLA_IPOIB_PKEY = 0x1 + IFLA_IPOIB_MODE = 0x2 + IFLA_IPOIB_UMCAST = 0x3 + IFLA_HSR_UNSPEC = 0x0 + IFLA_HSR_SLAVE1 = 0x1 + IFLA_HSR_SLAVE2 = 0x2 + IFLA_HSR_MULTICAST_SPEC = 0x3 + IFLA_HSR_SUPERVISION_ADDR = 0x4 + IFLA_HSR_SEQ_NR = 0x5 + IFLA_HSR_VERSION = 0x6 + IFLA_HSR_PROTOCOL = 0x7 + IFLA_HSR_INTERLINK = 0x8 + IFLA_STATS_UNSPEC = 0x0 + IFLA_STATS_LINK_64 = 0x1 + IFLA_STATS_LINK_XSTATS = 0x2 + IFLA_STATS_LINK_XSTATS_SLAVE = 0x3 + IFLA_STATS_LINK_OFFLOAD_XSTATS = 0x4 + IFLA_STATS_AF_SPEC = 0x5 + IFLA_STATS_GETSET_UNSPEC = 0x0 + IFLA_STATS_GET_FILTERS = 0x1 + IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 0x2 + IFLA_OFFLOAD_XSTATS_UNSPEC = 0x0 + IFLA_OFFLOAD_XSTATS_CPU_HIT = 0x1 + IFLA_OFFLOAD_XSTATS_HW_S_INFO = 0x2 + IFLA_OFFLOAD_XSTATS_L3_STATS = 0x3 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0x0 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 0x1 + IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 0x2 + IFLA_XDP_UNSPEC = 0x0 + IFLA_XDP_FD = 0x1 + IFLA_XDP_ATTACHED = 0x2 + IFLA_XDP_FLAGS = 0x3 + IFLA_XDP_PROG_ID = 0x4 + IFLA_XDP_DRV_PROG_ID = 0x5 + IFLA_XDP_SKB_PROG_ID = 0x6 + IFLA_XDP_HW_PROG_ID = 0x7 + IFLA_XDP_EXPECTED_FD = 0x8 + IFLA_EVENT_NONE = 0x0 + IFLA_EVENT_REBOOT = 0x1 + IFLA_EVENT_FEATURES = 0x2 + IFLA_EVENT_BONDING_FAILOVER = 0x3 + IFLA_EVENT_NOTIFY_PEERS = 0x4 + IFLA_EVENT_IGMP_RESEND = 0x5 + IFLA_EVENT_BONDING_OPTIONS = 0x6 + IFLA_TUN_UNSPEC = 0x0 + IFLA_TUN_OWNER = 0x1 + IFLA_TUN_GROUP = 0x2 + IFLA_TUN_TYPE = 0x3 + IFLA_TUN_PI = 0x4 + IFLA_TUN_VNET_HDR = 0x5 + IFLA_TUN_PERSIST = 0x6 + IFLA_TUN_MULTI_QUEUE = 0x7 + IFLA_TUN_NUM_QUEUES = 0x8 + IFLA_TUN_NUM_DISABLED_QUEUES = 0x9 + IFLA_RMNET_UNSPEC = 0x0 + IFLA_RMNET_MUX_ID = 0x1 + IFLA_RMNET_FLAGS = 0x2 + IFLA_MCTP_UNSPEC = 0x0 + IFLA_MCTP_NET = 0x1 + IFLA_DSA_UNSPEC = 0x0 + IFLA_DSA_CONDUIT = 0x1 + IFLA_DSA_MASTER = 0x1 +) + +const ( + NETKIT_NEXT = -0x1 + NETKIT_PASS = 0x0 + NETKIT_DROP = 0x2 + NETKIT_REDIRECT = 0x7 + NETKIT_L2 = 0x0 + NETKIT_L3 = 0x1 +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_EGRESS = 0x1 + NF_NETDEV_NUMHOOKS = 0x2 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +const SO_ORIGINAL_DST = 0x50 + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_NEWFLOWTABLE = 0x16 + NFT_MSG_GETFLOWTABLE = 0x17 + NFT_MSG_DELFLOWTABLE = 0x18 + NFT_MSG_GETRULE_RESET = 0x19 + NFT_MSG_MAX = 0x22 + NFTA_LIST_UNSPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_INNER_HEADER = 0x3 + NFT_PAYLOAD_TUN_HEADER = 0x4 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_CSUM_SCTP = 0x2 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFT_CT_SRC_IP = 0x13 + NFT_CT_DST_IP = 0x14 + NFT_CT_SRC_IP6 = 0x15 + NFT_CT_DST_IP6 = 0x16 + NFT_CT_ID = 0x17 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +const ( + NFTA_TARGET_UNSPEC = 0x0 + NFTA_TARGET_NAME = 0x1 + NFTA_TARGET_REV = 0x2 + NFTA_TARGET_INFO = 0x3 + NFTA_MATCH_UNSPEC = 0x0 + NFTA_MATCH_NAME = 0x1 + NFTA_MATCH_REV = 0x2 + NFTA_MATCH_INFO = 0x3 + NFTA_COMPAT_UNSPEC = 0x0 + NFTA_COMPAT_NAME = 0x1 + NFTA_COMPAT_REV = 0x2 + NFTA_COMPAT_TYPE = 0x3 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +const ( + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 + NETNSA_TARGET_NSID = 0x4 + NETNSA_CURRENT_NSID = 0x5 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 + Flags uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 + Flags uint32 + Tx_metadata_len uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 + Rx_ring_full uint64 + Rx_fill_ring_empty_descs uint64 + Tx_ring_empty_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + SOF_TIMESTAMPING_BIND_PHC = 0x8000 + SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 + + SOF_TIMESTAMPING_LAST = 0x40000 + SOF_TIMESTAMPING_MASK = 0x7ffff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_CGROUP_ITER_ORDER_UNSPEC = 0x0 + BPF_CGROUP_ITER_SELF_ONLY = 0x1 + BPF_CGROUP_ITER_DESCENDANTS_PRE = 0x2 + BPF_CGROUP_ITER_DESCENDANTS_POST = 0x3 + BPF_CGROUP_ITER_ANCESTORS_UP = 0x4 + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_FREEZE = 0x16 + BPF_BTF_GET_NEXT_ID = 0x17 + BPF_MAP_LOOKUP_BATCH = 0x18 + BPF_MAP_LOOKUP_AND_DELETE_BATCH = 0x19 + BPF_MAP_UPDATE_BATCH = 0x1a + BPF_MAP_DELETE_BATCH = 0x1b + BPF_LINK_CREATE = 0x1c + BPF_LINK_UPDATE = 0x1d + BPF_LINK_GET_FD_BY_ID = 0x1e + BPF_LINK_GET_NEXT_ID = 0x1f + BPF_ENABLE_STATS = 0x20 + BPF_ITER_CREATE = 0x21 + BPF_LINK_DETACH = 0x22 + BPF_PROG_BIND_MAP = 0x23 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED = 0x13 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_MAP_TYPE_SK_STORAGE = 0x18 + BPF_MAP_TYPE_DEVMAP_HASH = 0x19 + BPF_MAP_TYPE_STRUCT_OPS = 0x1a + BPF_MAP_TYPE_RINGBUF = 0x1b + BPF_MAP_TYPE_INODE_STORAGE = 0x1c + BPF_MAP_TYPE_TASK_STORAGE = 0x1d + BPF_MAP_TYPE_BLOOM_FILTER = 0x1e + BPF_MAP_TYPE_USER_RINGBUF = 0x1f + BPF_MAP_TYPE_CGRP_STORAGE = 0x20 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_PROG_TYPE_CGROUP_SYSCTL = 0x17 + BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 0x18 + BPF_PROG_TYPE_CGROUP_SOCKOPT = 0x19 + BPF_PROG_TYPE_TRACING = 0x1a + BPF_PROG_TYPE_STRUCT_OPS = 0x1b + BPF_PROG_TYPE_EXT = 0x1c + BPF_PROG_TYPE_LSM = 0x1d + BPF_PROG_TYPE_SK_LOOKUP = 0x1e + BPF_PROG_TYPE_SYSCALL = 0x1f + BPF_PROG_TYPE_NETFILTER = 0x20 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_CGROUP_SYSCTL = 0x12 + BPF_CGROUP_UDP4_RECVMSG = 0x13 + BPF_CGROUP_UDP6_RECVMSG = 0x14 + BPF_CGROUP_GETSOCKOPT = 0x15 + BPF_CGROUP_SETSOCKOPT = 0x16 + BPF_TRACE_RAW_TP = 0x17 + BPF_TRACE_FENTRY = 0x18 + BPF_TRACE_FEXIT = 0x19 + BPF_MODIFY_RETURN = 0x1a + BPF_LSM_MAC = 0x1b + BPF_TRACE_ITER = 0x1c + BPF_CGROUP_INET4_GETPEERNAME = 0x1d + BPF_CGROUP_INET6_GETPEERNAME = 0x1e + BPF_CGROUP_INET4_GETSOCKNAME = 0x1f + BPF_CGROUP_INET6_GETSOCKNAME = 0x20 + BPF_XDP_DEVMAP = 0x21 + BPF_CGROUP_INET_SOCK_RELEASE = 0x22 + BPF_XDP_CPUMAP = 0x23 + BPF_SK_LOOKUP = 0x24 + BPF_XDP = 0x25 + BPF_SK_SKB_VERDICT = 0x26 + BPF_SK_REUSEPORT_SELECT = 0x27 + BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 0x28 + BPF_PERF_EVENT = 0x29 + BPF_TRACE_KPROBE_MULTI = 0x2a + BPF_LSM_CGROUP = 0x2b + BPF_STRUCT_OPS = 0x2c + BPF_NETFILTER = 0x2d + BPF_TCX_INGRESS = 0x2e + BPF_TCX_EGRESS = 0x2f + BPF_TRACE_UPROBE_MULTI = 0x30 + BPF_LINK_TYPE_UNSPEC = 0x0 + BPF_LINK_TYPE_RAW_TRACEPOINT = 0x1 + BPF_LINK_TYPE_TRACING = 0x2 + BPF_LINK_TYPE_CGROUP = 0x3 + BPF_LINK_TYPE_ITER = 0x4 + BPF_LINK_TYPE_NETNS = 0x5 + BPF_LINK_TYPE_XDP = 0x6 + BPF_LINK_TYPE_PERF_EVENT = 0x7 + BPF_LINK_TYPE_KPROBE_MULTI = 0x8 + BPF_LINK_TYPE_STRUCT_OPS = 0x9 + BPF_LINK_TYPE_NETFILTER = 0xa + BPF_LINK_TYPE_TCX = 0xb + BPF_LINK_TYPE_UPROBE_MULTI = 0xc + BPF_PERF_EVENT_UNSPEC = 0x0 + BPF_PERF_EVENT_UPROBE = 0x1 + BPF_PERF_EVENT_URETPROBE = 0x2 + BPF_PERF_EVENT_KPROBE = 0x3 + BPF_PERF_EVENT_KRETPROBE = 0x4 + BPF_PERF_EVENT_TRACEPOINT = 0x5 + BPF_PERF_EVENT_EVENT = 0x6 + BPF_F_KPROBE_MULTI_RETURN = 0x1 + BPF_F_UPROBE_MULTI_RETURN = 0x1 + BPF_ANY = 0x0 + BPF_NOEXIST = 0x1 + BPF_EXIST = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NUMA_NODE = 0x4 + BPF_F_RDONLY = 0x8 + BPF_F_WRONLY = 0x10 + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_ZERO_SEED = 0x40 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_CLONE = 0x200 + BPF_F_MMAPABLE = 0x400 + BPF_F_PRESERVE_ELEMS = 0x800 + BPF_F_INNER_MAP = 0x1000 + BPF_F_LINK = 0x2000 + BPF_F_PATH_FD = 0x4000 + BPF_STATS_RUN_TIME = 0x0 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_INGRESS = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_USER_STACK = 0x100 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_NO_TUNNEL_KEY = 0x10 + BPF_F_TUNINFO_FLAGS = 0x10 + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_NETNS = -0x1 + BPF_CSUM_LEVEL_QUERY = 0x0 + BPF_CSUM_LEVEL_INC = 0x1 + BPF_CSUM_LEVEL_DEC = 0x2 + BPF_CSUM_LEVEL_RESET = 0x3 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_NO_CSUM_RESET = 0x20 + BPF_F_ADJ_ROOM_ENCAP_L2_ETH = 0x40 + BPF_F_ADJ_ROOM_DECAP_L3_IPV4 = 0x80 + BPF_F_ADJ_ROOM_DECAP_L3_IPV6 = 0x100 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_LOCAL_STORAGE_GET_F_CREATE = 0x1 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_F_GET_BRANCH_RECORDS_SIZE = 0x1 + BPF_RB_NO_WAKEUP = 0x1 + BPF_RB_FORCE_WAKEUP = 0x2 + BPF_RB_AVAIL_DATA = 0x0 + BPF_RB_RING_SIZE = 0x1 + BPF_RB_CONS_POS = 0x2 + BPF_RB_PROD_POS = 0x3 + BPF_RINGBUF_BUSY_BIT = 0x80000000 + BPF_RINGBUF_DISCARD_BIT = 0x40000000 + BPF_RINGBUF_HDR_SZ = 0x8 + BPF_SK_LOOKUP_F_REPLACE = 0x1 + BPF_SK_LOOKUP_F_NO_REUSEPORT = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_ADJ_ROOM_MAC = 0x1 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_LWT_ENCAP_IP = 0x2 + BPF_F_BPRM_SECUREEXEC = 0x1 + BPF_F_BROADCAST = 0x8 + BPF_F_EXCLUDE_INGRESS = 0x10 + BPF_SKB_TSTAMP_UNSPEC = 0x0 + BPF_SKB_TSTAMP_DELIVERY_MONO = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_LWT_REROUTE = 0x80 + BPF_FLOW_DISSECTOR_CONTINUE = 0x81 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG = 0x10 + BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20 + BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG = 0x40 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7f + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_SOCK_OPS_RTT_CB = 0xc + BPF_SOCK_OPS_PARSE_HDR_OPT_CB = 0xd + BPF_SOCK_OPS_HDR_OPT_LEN_CB = 0xe + BPF_SOCK_OPS_WRITE_HDR_OPT_CB = 0xf + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xe + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea + TCP_BPF_DELACK_MAX = 0x3eb + TCP_BPF_RTO_MIN = 0x3ec + TCP_BPF_SYN = 0x3ed + TCP_BPF_SYN_IP = 0x3ee + TCP_BPF_SYN_MAC = 0x3ef + BPF_LOAD_HDR_OPT_TCP_SYN = 0x1 + BPF_WRITE_HDR_TCP_CURRENT_MSS = 0x1 + BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 0x2 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 + BPF_FIB_LOOKUP_DIRECT = 0x1 + BPF_FIB_LOOKUP_OUTPUT = 0x2 + BPF_FIB_LOOKUP_SKIP_NEIGH = 0x4 + BPF_FIB_LOOKUP_TBID = 0x8 + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_MTU_CHK_SEGS = 0x1 + BPF_MTU_CHK_RET_SUCCESS = 0x0 + BPF_MTU_CHK_RET_FRAG_NEEDED = 0x1 + BPF_MTU_CHK_RET_SEGS_TOOBIG = 0x2 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 + BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG = 0x1 + BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL = 0x2 + BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 0x4 + BPF_CORE_FIELD_BYTE_OFFSET = 0x0 + BPF_CORE_FIELD_BYTE_SIZE = 0x1 + BPF_CORE_FIELD_EXISTS = 0x2 + BPF_CORE_FIELD_SIGNED = 0x3 + BPF_CORE_FIELD_LSHIFT_U64 = 0x4 + BPF_CORE_FIELD_RSHIFT_U64 = 0x5 + BPF_CORE_TYPE_ID_LOCAL = 0x6 + BPF_CORE_TYPE_ID_TARGET = 0x7 + BPF_CORE_TYPE_EXISTS = 0x8 + BPF_CORE_TYPE_SIZE = 0x9 + BPF_CORE_ENUMVAL_EXISTS = 0xa + BPF_CORE_ENUMVAL_VALUE = 0xb + BPF_CORE_TYPE_MATCHES = 0xc + BPF_F_TIMER_ABS = 0x1 +) + +const ( + TCA_UNSPEC = 0x0 + TCA_KIND = 0x1 + TCA_OPTIONS = 0x2 + TCA_STATS = 0x3 + TCA_XSTATS = 0x4 + TCA_RATE = 0x5 + TCA_FCNT = 0x6 + TCA_STATS2 = 0x7 + TCA_STAB = 0x8 + TCA_PAD = 0x9 + TCA_DUMP_INVISIBLE = 0xa + TCA_CHAIN = 0xb + TCA_HW_OFFLOAD = 0xc + TCA_INGRESS_BLOCK = 0xd + TCA_EGRESS_BLOCK = 0xe + TCA_DUMP_FLAGS = 0xf + TCA_EXT_WARN_MSG = 0x10 + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 + RTNLGRP_BRVLAN = 0x21 + RTNLGRP_MCTP_IFADDR = 0x22 + RTNLGRP_TUNNEL = 0x23 + RTNLGRP_STATS = 0x24 + RTNLGRP_IPV4_MCADDR = 0x25 + RTNLGRP_IPV6_MCADDR = 0x26 + RTNLGRP_IPV6_ACADDR = 0x27 + TCA_ROOT_UNSPEC = 0x0 + TCA_ROOT_TAB = 0x1 + TCA_ROOT_FLAGS = 0x2 + TCA_ROOT_COUNT = 0x3 + TCA_ROOT_TIME_DELTA = 0x4 + TCA_ROOT_EXT_WARN_MSG = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} +type LoopConfig struct { + Fd uint32 + Size uint32 + Info LoopInfo64 + _ [8]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) + +const ( + DEVLINK_CMD_UNSPEC = 0x0 + DEVLINK_CMD_GET = 0x1 + DEVLINK_CMD_SET = 0x2 + DEVLINK_CMD_NEW = 0x3 + DEVLINK_CMD_DEL = 0x4 + DEVLINK_CMD_PORT_GET = 0x5 + DEVLINK_CMD_PORT_SET = 0x6 + DEVLINK_CMD_PORT_NEW = 0x7 + DEVLINK_CMD_PORT_DEL = 0x8 + DEVLINK_CMD_PORT_SPLIT = 0x9 + DEVLINK_CMD_PORT_UNSPLIT = 0xa + DEVLINK_CMD_SB_GET = 0xb + DEVLINK_CMD_SB_SET = 0xc + DEVLINK_CMD_SB_NEW = 0xd + DEVLINK_CMD_SB_DEL = 0xe + DEVLINK_CMD_SB_POOL_GET = 0xf + DEVLINK_CMD_SB_POOL_SET = 0x10 + DEVLINK_CMD_SB_POOL_NEW = 0x11 + DEVLINK_CMD_SB_POOL_DEL = 0x12 + DEVLINK_CMD_SB_PORT_POOL_GET = 0x13 + DEVLINK_CMD_SB_PORT_POOL_SET = 0x14 + DEVLINK_CMD_SB_PORT_POOL_NEW = 0x15 + DEVLINK_CMD_SB_PORT_POOL_DEL = 0x16 + DEVLINK_CMD_SB_TC_POOL_BIND_GET = 0x17 + DEVLINK_CMD_SB_TC_POOL_BIND_SET = 0x18 + DEVLINK_CMD_SB_TC_POOL_BIND_NEW = 0x19 + DEVLINK_CMD_SB_TC_POOL_BIND_DEL = 0x1a + DEVLINK_CMD_SB_OCC_SNAPSHOT = 0x1b + DEVLINK_CMD_SB_OCC_MAX_CLEAR = 0x1c + DEVLINK_CMD_ESWITCH_GET = 0x1d + DEVLINK_CMD_ESWITCH_SET = 0x1e + DEVLINK_CMD_DPIPE_TABLE_GET = 0x1f + DEVLINK_CMD_DPIPE_ENTRIES_GET = 0x20 + DEVLINK_CMD_DPIPE_HEADERS_GET = 0x21 + DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET = 0x22 + DEVLINK_CMD_RESOURCE_SET = 0x23 + DEVLINK_CMD_RESOURCE_DUMP = 0x24 + DEVLINK_CMD_RELOAD = 0x25 + DEVLINK_CMD_PARAM_GET = 0x26 + DEVLINK_CMD_PARAM_SET = 0x27 + DEVLINK_CMD_PARAM_NEW = 0x28 + DEVLINK_CMD_PARAM_DEL = 0x29 + DEVLINK_CMD_REGION_GET = 0x2a + DEVLINK_CMD_REGION_SET = 0x2b + DEVLINK_CMD_REGION_NEW = 0x2c + DEVLINK_CMD_REGION_DEL = 0x2d + DEVLINK_CMD_REGION_READ = 0x2e + DEVLINK_CMD_PORT_PARAM_GET = 0x2f + DEVLINK_CMD_PORT_PARAM_SET = 0x30 + DEVLINK_CMD_PORT_PARAM_NEW = 0x31 + DEVLINK_CMD_PORT_PARAM_DEL = 0x32 + DEVLINK_CMD_INFO_GET = 0x33 + DEVLINK_CMD_HEALTH_REPORTER_GET = 0x34 + DEVLINK_CMD_HEALTH_REPORTER_SET = 0x35 + DEVLINK_CMD_HEALTH_REPORTER_RECOVER = 0x36 + DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE = 0x37 + DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET = 0x38 + DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR = 0x39 + DEVLINK_CMD_FLASH_UPDATE = 0x3a + DEVLINK_CMD_FLASH_UPDATE_END = 0x3b + DEVLINK_CMD_FLASH_UPDATE_STATUS = 0x3c + DEVLINK_CMD_TRAP_GET = 0x3d + DEVLINK_CMD_TRAP_SET = 0x3e + DEVLINK_CMD_TRAP_NEW = 0x3f + DEVLINK_CMD_TRAP_DEL = 0x40 + DEVLINK_CMD_TRAP_GROUP_GET = 0x41 + DEVLINK_CMD_TRAP_GROUP_SET = 0x42 + DEVLINK_CMD_TRAP_GROUP_NEW = 0x43 + DEVLINK_CMD_TRAP_GROUP_DEL = 0x44 + DEVLINK_CMD_TRAP_POLICER_GET = 0x45 + DEVLINK_CMD_TRAP_POLICER_SET = 0x46 + DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 + DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 + DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 + DEVLINK_CMD_RATE_GET = 0x4a + DEVLINK_CMD_RATE_SET = 0x4b + DEVLINK_CMD_RATE_NEW = 0x4c + DEVLINK_CMD_RATE_DEL = 0x4d + DEVLINK_CMD_LINECARD_GET = 0x4e + DEVLINK_CMD_LINECARD_SET = 0x4f + DEVLINK_CMD_LINECARD_NEW = 0x50 + DEVLINK_CMD_LINECARD_DEL = 0x51 + DEVLINK_CMD_SELFTESTS_GET = 0x52 + DEVLINK_CMD_MAX = 0x54 + DEVLINK_PORT_TYPE_NOTSET = 0x0 + DEVLINK_PORT_TYPE_AUTO = 0x1 + DEVLINK_PORT_TYPE_ETH = 0x2 + DEVLINK_PORT_TYPE_IB = 0x3 + DEVLINK_SB_POOL_TYPE_INGRESS = 0x0 + DEVLINK_SB_POOL_TYPE_EGRESS = 0x1 + DEVLINK_SB_THRESHOLD_TYPE_STATIC = 0x0 + DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 0x1 + DEVLINK_ESWITCH_MODE_LEGACY = 0x0 + DEVLINK_ESWITCH_MODE_SWITCHDEV = 0x1 + DEVLINK_ESWITCH_INLINE_MODE_NONE = 0x0 + DEVLINK_ESWITCH_INLINE_MODE_LINK = 0x1 + DEVLINK_ESWITCH_INLINE_MODE_NETWORK = 0x2 + DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT = 0x3 + DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0x0 + DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 0x1 + DEVLINK_PORT_FLAVOUR_PHYSICAL = 0x0 + DEVLINK_PORT_FLAVOUR_CPU = 0x1 + DEVLINK_PORT_FLAVOUR_DSA = 0x2 + DEVLINK_PORT_FLAVOUR_PCI_PF = 0x3 + DEVLINK_PORT_FLAVOUR_PCI_VF = 0x4 + DEVLINK_PORT_FLAVOUR_VIRTUAL = 0x5 + DEVLINK_PORT_FLAVOUR_UNUSED = 0x6 + DEVLINK_PARAM_CMODE_RUNTIME = 0x0 + DEVLINK_PARAM_CMODE_DRIVERINIT = 0x1 + DEVLINK_PARAM_CMODE_PERMANENT = 0x2 + DEVLINK_PARAM_CMODE_MAX = 0x2 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER = 0x0 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH = 0x1 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK = 0x2 + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN = 0x3 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS = 0x1 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER = 0x2 + DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK = 0x3 + DEVLINK_ATTR_STATS_RX_PACKETS = 0x0 + DEVLINK_ATTR_STATS_RX_BYTES = 0x1 + DEVLINK_ATTR_STATS_RX_DROPPED = 0x2 + DEVLINK_ATTR_STATS_MAX = 0x2 + DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT = 0x0 + DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT = 0x1 + DEVLINK_FLASH_OVERWRITE_MAX_BIT = 0x1 + DEVLINK_TRAP_ACTION_DROP = 0x0 + DEVLINK_TRAP_ACTION_TRAP = 0x1 + DEVLINK_TRAP_ACTION_MIRROR = 0x2 + DEVLINK_TRAP_TYPE_DROP = 0x0 + DEVLINK_TRAP_TYPE_EXCEPTION = 0x1 + DEVLINK_TRAP_TYPE_CONTROL = 0x2 + DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT = 0x0 + DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE = 0x1 + DEVLINK_RELOAD_ACTION_UNSPEC = 0x0 + DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 0x1 + DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 0x2 + DEVLINK_RELOAD_ACTION_MAX = 0x2 + DEVLINK_RELOAD_LIMIT_UNSPEC = 0x0 + DEVLINK_RELOAD_LIMIT_NO_RESET = 0x1 + DEVLINK_RELOAD_LIMIT_MAX = 0x1 + DEVLINK_ATTR_UNSPEC = 0x0 + DEVLINK_ATTR_BUS_NAME = 0x1 + DEVLINK_ATTR_DEV_NAME = 0x2 + DEVLINK_ATTR_PORT_INDEX = 0x3 + DEVLINK_ATTR_PORT_TYPE = 0x4 + DEVLINK_ATTR_PORT_DESIRED_TYPE = 0x5 + DEVLINK_ATTR_PORT_NETDEV_IFINDEX = 0x6 + DEVLINK_ATTR_PORT_NETDEV_NAME = 0x7 + DEVLINK_ATTR_PORT_IBDEV_NAME = 0x8 + DEVLINK_ATTR_PORT_SPLIT_COUNT = 0x9 + DEVLINK_ATTR_PORT_SPLIT_GROUP = 0xa + DEVLINK_ATTR_SB_INDEX = 0xb + DEVLINK_ATTR_SB_SIZE = 0xc + DEVLINK_ATTR_SB_INGRESS_POOL_COUNT = 0xd + DEVLINK_ATTR_SB_EGRESS_POOL_COUNT = 0xe + DEVLINK_ATTR_SB_INGRESS_TC_COUNT = 0xf + DEVLINK_ATTR_SB_EGRESS_TC_COUNT = 0x10 + DEVLINK_ATTR_SB_POOL_INDEX = 0x11 + DEVLINK_ATTR_SB_POOL_TYPE = 0x12 + DEVLINK_ATTR_SB_POOL_SIZE = 0x13 + DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE = 0x14 + DEVLINK_ATTR_SB_THRESHOLD = 0x15 + DEVLINK_ATTR_SB_TC_INDEX = 0x16 + DEVLINK_ATTR_SB_OCC_CUR = 0x17 + DEVLINK_ATTR_SB_OCC_MAX = 0x18 + DEVLINK_ATTR_ESWITCH_MODE = 0x19 + DEVLINK_ATTR_ESWITCH_INLINE_MODE = 0x1a + DEVLINK_ATTR_DPIPE_TABLES = 0x1b + DEVLINK_ATTR_DPIPE_TABLE = 0x1c + DEVLINK_ATTR_DPIPE_TABLE_NAME = 0x1d + DEVLINK_ATTR_DPIPE_TABLE_SIZE = 0x1e + DEVLINK_ATTR_DPIPE_TABLE_MATCHES = 0x1f + DEVLINK_ATTR_DPIPE_TABLE_ACTIONS = 0x20 + DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED = 0x21 + DEVLINK_ATTR_DPIPE_ENTRIES = 0x22 + DEVLINK_ATTR_DPIPE_ENTRY = 0x23 + DEVLINK_ATTR_DPIPE_ENTRY_INDEX = 0x24 + DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES = 0x25 + DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES = 0x26 + DEVLINK_ATTR_DPIPE_ENTRY_COUNTER = 0x27 + DEVLINK_ATTR_DPIPE_MATCH = 0x28 + DEVLINK_ATTR_DPIPE_MATCH_VALUE = 0x29 + DEVLINK_ATTR_DPIPE_MATCH_TYPE = 0x2a + DEVLINK_ATTR_DPIPE_ACTION = 0x2b + DEVLINK_ATTR_DPIPE_ACTION_VALUE = 0x2c + DEVLINK_ATTR_DPIPE_ACTION_TYPE = 0x2d + DEVLINK_ATTR_DPIPE_VALUE = 0x2e + DEVLINK_ATTR_DPIPE_VALUE_MASK = 0x2f + DEVLINK_ATTR_DPIPE_VALUE_MAPPING = 0x30 + DEVLINK_ATTR_DPIPE_HEADERS = 0x31 + DEVLINK_ATTR_DPIPE_HEADER = 0x32 + DEVLINK_ATTR_DPIPE_HEADER_NAME = 0x33 + DEVLINK_ATTR_DPIPE_HEADER_ID = 0x34 + DEVLINK_ATTR_DPIPE_HEADER_FIELDS = 0x35 + DEVLINK_ATTR_DPIPE_HEADER_GLOBAL = 0x36 + DEVLINK_ATTR_DPIPE_HEADER_INDEX = 0x37 + DEVLINK_ATTR_DPIPE_FIELD = 0x38 + DEVLINK_ATTR_DPIPE_FIELD_NAME = 0x39 + DEVLINK_ATTR_DPIPE_FIELD_ID = 0x3a + DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH = 0x3b + DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE = 0x3c + DEVLINK_ATTR_PAD = 0x3d + DEVLINK_ATTR_ESWITCH_ENCAP_MODE = 0x3e + DEVLINK_ATTR_RESOURCE_LIST = 0x3f + DEVLINK_ATTR_RESOURCE = 0x40 + DEVLINK_ATTR_RESOURCE_NAME = 0x41 + DEVLINK_ATTR_RESOURCE_ID = 0x42 + DEVLINK_ATTR_RESOURCE_SIZE = 0x43 + DEVLINK_ATTR_RESOURCE_SIZE_NEW = 0x44 + DEVLINK_ATTR_RESOURCE_SIZE_VALID = 0x45 + DEVLINK_ATTR_RESOURCE_SIZE_MIN = 0x46 + DEVLINK_ATTR_RESOURCE_SIZE_MAX = 0x47 + DEVLINK_ATTR_RESOURCE_SIZE_GRAN = 0x48 + DEVLINK_ATTR_RESOURCE_UNIT = 0x49 + DEVLINK_ATTR_RESOURCE_OCC = 0x4a + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID = 0x4b + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS = 0x4c + DEVLINK_ATTR_PORT_FLAVOUR = 0x4d + DEVLINK_ATTR_PORT_NUMBER = 0x4e + DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER = 0x4f + DEVLINK_ATTR_PARAM = 0x50 + DEVLINK_ATTR_PARAM_NAME = 0x51 + DEVLINK_ATTR_PARAM_GENERIC = 0x52 + DEVLINK_ATTR_PARAM_TYPE = 0x53 + DEVLINK_ATTR_PARAM_VALUES_LIST = 0x54 + DEVLINK_ATTR_PARAM_VALUE = 0x55 + DEVLINK_ATTR_PARAM_VALUE_DATA = 0x56 + DEVLINK_ATTR_PARAM_VALUE_CMODE = 0x57 + DEVLINK_ATTR_REGION_NAME = 0x58 + DEVLINK_ATTR_REGION_SIZE = 0x59 + DEVLINK_ATTR_REGION_SNAPSHOTS = 0x5a + DEVLINK_ATTR_REGION_SNAPSHOT = 0x5b + DEVLINK_ATTR_REGION_SNAPSHOT_ID = 0x5c + DEVLINK_ATTR_REGION_CHUNKS = 0x5d + DEVLINK_ATTR_REGION_CHUNK = 0x5e + DEVLINK_ATTR_REGION_CHUNK_DATA = 0x5f + DEVLINK_ATTR_REGION_CHUNK_ADDR = 0x60 + DEVLINK_ATTR_REGION_CHUNK_LEN = 0x61 + DEVLINK_ATTR_INFO_DRIVER_NAME = 0x62 + DEVLINK_ATTR_INFO_SERIAL_NUMBER = 0x63 + DEVLINK_ATTR_INFO_VERSION_FIXED = 0x64 + DEVLINK_ATTR_INFO_VERSION_RUNNING = 0x65 + DEVLINK_ATTR_INFO_VERSION_STORED = 0x66 + DEVLINK_ATTR_INFO_VERSION_NAME = 0x67 + DEVLINK_ATTR_INFO_VERSION_VALUE = 0x68 + DEVLINK_ATTR_SB_POOL_CELL_SIZE = 0x69 + DEVLINK_ATTR_FMSG = 0x6a + DEVLINK_ATTR_FMSG_OBJ_NEST_START = 0x6b + DEVLINK_ATTR_FMSG_PAIR_NEST_START = 0x6c + DEVLINK_ATTR_FMSG_ARR_NEST_START = 0x6d + DEVLINK_ATTR_FMSG_NEST_END = 0x6e + DEVLINK_ATTR_FMSG_OBJ_NAME = 0x6f + DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE = 0x70 + DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA = 0x71 + DEVLINK_ATTR_HEALTH_REPORTER = 0x72 + DEVLINK_ATTR_HEALTH_REPORTER_NAME = 0x73 + DEVLINK_ATTR_HEALTH_REPORTER_STATE = 0x74 + DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT = 0x75 + DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT = 0x76 + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS = 0x77 + DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD = 0x78 + DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER = 0x79 + DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME = 0x7a + DEVLINK_ATTR_FLASH_UPDATE_COMPONENT = 0x7b + DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG = 0x7c + DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE = 0x7d + DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL = 0x7e + DEVLINK_ATTR_PORT_PCI_PF_NUMBER = 0x7f + DEVLINK_ATTR_PORT_PCI_VF_NUMBER = 0x80 + DEVLINK_ATTR_STATS = 0x81 + DEVLINK_ATTR_TRAP_NAME = 0x82 + DEVLINK_ATTR_TRAP_ACTION = 0x83 + DEVLINK_ATTR_TRAP_TYPE = 0x84 + DEVLINK_ATTR_TRAP_GENERIC = 0x85 + DEVLINK_ATTR_TRAP_METADATA = 0x86 + DEVLINK_ATTR_TRAP_GROUP_NAME = 0x87 + DEVLINK_ATTR_RELOAD_FAILED = 0x88 + DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS = 0x89 + DEVLINK_ATTR_NETNS_FD = 0x8a + DEVLINK_ATTR_NETNS_PID = 0x8b + DEVLINK_ATTR_NETNS_ID = 0x8c + DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP = 0x8d + DEVLINK_ATTR_TRAP_POLICER_ID = 0x8e + DEVLINK_ATTR_TRAP_POLICER_RATE = 0x8f + DEVLINK_ATTR_TRAP_POLICER_BURST = 0x90 + DEVLINK_ATTR_PORT_FUNCTION = 0x91 + DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER = 0x92 + DEVLINK_ATTR_PORT_LANES = 0x93 + DEVLINK_ATTR_PORT_SPLITTABLE = 0x94 + DEVLINK_ATTR_PORT_EXTERNAL = 0x95 + DEVLINK_ATTR_PORT_CONTROLLER_NUMBER = 0x96 + DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT = 0x97 + DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK = 0x98 + DEVLINK_ATTR_RELOAD_ACTION = 0x99 + DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED = 0x9a + DEVLINK_ATTR_RELOAD_LIMITS = 0x9b + DEVLINK_ATTR_DEV_STATS = 0x9c + DEVLINK_ATTR_RELOAD_STATS = 0x9d + DEVLINK_ATTR_RELOAD_STATS_ENTRY = 0x9e + DEVLINK_ATTR_RELOAD_STATS_LIMIT = 0x9f + DEVLINK_ATTR_RELOAD_STATS_VALUE = 0xa0 + DEVLINK_ATTR_REMOTE_RELOAD_STATS = 0xa1 + DEVLINK_ATTR_RELOAD_ACTION_INFO = 0xa2 + DEVLINK_ATTR_RELOAD_ACTION_STATS = 0xa3 + DEVLINK_ATTR_PORT_PCI_SF_NUMBER = 0xa4 + DEVLINK_ATTR_RATE_TYPE = 0xa5 + DEVLINK_ATTR_RATE_TX_SHARE = 0xa6 + DEVLINK_ATTR_RATE_TX_MAX = 0xa7 + DEVLINK_ATTR_RATE_NODE_NAME = 0xa8 + DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 0xa9 + DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 0xaa + DEVLINK_ATTR_LINECARD_INDEX = 0xab + DEVLINK_ATTR_LINECARD_STATE = 0xac + DEVLINK_ATTR_LINECARD_TYPE = 0xad + DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES = 0xae + DEVLINK_ATTR_NESTED_DEVLINK = 0xaf + DEVLINK_ATTR_SELFTESTS = 0xb0 + DEVLINK_ATTR_MAX = 0xb3 + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 + DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 + DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY = 0x0 + DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC = 0x0 + DEVLINK_DPIPE_FIELD_IPV4_DST_IP = 0x0 + DEVLINK_DPIPE_FIELD_IPV6_DST_IP = 0x0 + DEVLINK_DPIPE_HEADER_ETHERNET = 0x0 + DEVLINK_DPIPE_HEADER_IPV4 = 0x1 + DEVLINK_DPIPE_HEADER_IPV6 = 0x2 + DEVLINK_RESOURCE_UNIT_ENTRY = 0x0 + DEVLINK_PORT_FUNCTION_ATTR_UNSPEC = 0x0 + DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR = 0x1 + DEVLINK_PORT_FN_ATTR_STATE = 0x2 + DEVLINK_PORT_FN_ATTR_OPSTATE = 0x3 + DEVLINK_PORT_FN_ATTR_CAPS = 0x4 + DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x6 +) + +type FsverityDigest struct { + Algorithm uint16 + Size uint16 +} + +type FsverityEnableArg struct { + Version uint32 + Hash_algorithm uint32 + Block_size uint32 + Salt_size uint32 + Salt_ptr uint64 + Sig_size uint32 + _ uint32 + Sig_ptr uint64 + _ [11]uint64 +} + +type Nhmsg struct { + Family uint8 + Scope uint8 + Protocol uint8 + Resvd uint8 + Flags uint32 +} + +const SizeofNhmsg = 0x8 + +type NexthopGrp struct { + Id uint32 + Weight uint8 + High uint8 + Resvd2 uint16 +} + +const SizeofNexthopGrp = 0x8 + +const ( + NHA_UNSPEC = 0x0 + NHA_ID = 0x1 + NHA_GROUP = 0x2 + NHA_GROUP_TYPE = 0x3 + NHA_BLACKHOLE = 0x4 + NHA_OIF = 0x5 + NHA_GATEWAY = 0x6 + NHA_ENCAP_TYPE = 0x7 + NHA_ENCAP = 0x8 + NHA_GROUPS = 0x9 + NHA_MASTER = 0xa +) + +const ( + CAN_RAW_FILTER = 0x1 + CAN_RAW_ERR_FILTER = 0x2 + CAN_RAW_LOOPBACK = 0x3 + CAN_RAW_RECV_OWN_MSGS = 0x4 + CAN_RAW_FD_FRAMES = 0x5 + CAN_RAW_JOIN_FILTERS = 0x6 +) + +type WatchdogInfo struct { + Options uint32 + Version uint32 + Identity [32]uint8 +} + +type PPSFData struct { + Info PPSKInfo + Timeout PPSKTime +} + +type PPSKParams struct { + Api_version int32 + Mode int32 + Assert_off_tu PPSKTime + Clear_off_tu PPSKTime +} + +type PPSKTime struct { + Sec int64 + Nsec int32 + Flags uint32 +} + +const ( + LWTUNNEL_ENCAP_NONE = 0x0 + LWTUNNEL_ENCAP_MPLS = 0x1 + LWTUNNEL_ENCAP_IP = 0x2 + LWTUNNEL_ENCAP_ILA = 0x3 + LWTUNNEL_ENCAP_IP6 = 0x4 + LWTUNNEL_ENCAP_SEG6 = 0x5 + LWTUNNEL_ENCAP_BPF = 0x6 + LWTUNNEL_ENCAP_SEG6_LOCAL = 0x7 + LWTUNNEL_ENCAP_RPL = 0x8 + LWTUNNEL_ENCAP_IOAM6 = 0x9 + LWTUNNEL_ENCAP_XFRM = 0xa + LWTUNNEL_ENCAP_MAX = 0xa + + MPLS_IPTUNNEL_UNSPEC = 0x0 + MPLS_IPTUNNEL_DST = 0x1 + MPLS_IPTUNNEL_TTL = 0x2 + MPLS_IPTUNNEL_MAX = 0x2 +) + +const ( + ETHTOOL_ID_UNSPEC = 0x0 + ETHTOOL_RX_COPYBREAK = 0x1 + ETHTOOL_TX_COPYBREAK = 0x2 + ETHTOOL_PFC_PREVENTION_TOUT = 0x3 + ETHTOOL_TUNABLE_UNSPEC = 0x0 + ETHTOOL_TUNABLE_U8 = 0x1 + ETHTOOL_TUNABLE_U16 = 0x2 + ETHTOOL_TUNABLE_U32 = 0x3 + ETHTOOL_TUNABLE_U64 = 0x4 + ETHTOOL_TUNABLE_STRING = 0x5 + ETHTOOL_TUNABLE_S8 = 0x6 + ETHTOOL_TUNABLE_S16 = 0x7 + ETHTOOL_TUNABLE_S32 = 0x8 + ETHTOOL_TUNABLE_S64 = 0x9 + ETHTOOL_PHY_ID_UNSPEC = 0x0 + ETHTOOL_PHY_DOWNSHIFT = 0x1 + ETHTOOL_PHY_FAST_LINK_DOWN = 0x2 + ETHTOOL_PHY_EDPD = 0x3 + ETHTOOL_LINK_EXT_STATE_AUTONEG = 0x0 + ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 0x1 + ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 0x2 + ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 0x3 + ETHTOOL_LINK_EXT_STATE_NO_CABLE = 0x4 + ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 0x5 + ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 0x6 + ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 0x7 + ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 0x8 + ETHTOOL_LINK_EXT_STATE_OVERHEAT = 0x9 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE = 0x5 + ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD = 0x6 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS = 0x3 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED = 0x4 + ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED = 0x5 + ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE = 0x2 + ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 0x1 + ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 0x2 + ETHTOOL_FLASH_ALL_REGIONS = 0x0 + ETHTOOL_F_UNSUPPORTED__BIT = 0x0 + ETHTOOL_F_WISH__BIT = 0x1 + ETHTOOL_F_COMPAT__BIT = 0x2 + ETHTOOL_FEC_NONE_BIT = 0x0 + ETHTOOL_FEC_AUTO_BIT = 0x1 + ETHTOOL_FEC_OFF_BIT = 0x2 + ETHTOOL_FEC_RS_BIT = 0x3 + ETHTOOL_FEC_BASER_BIT = 0x4 + ETHTOOL_FEC_LLRS_BIT = 0x5 + ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0x0 + ETHTOOL_LINK_MODE_10baseT_Full_BIT = 0x1 + ETHTOOL_LINK_MODE_100baseT_Half_BIT = 0x2 + ETHTOOL_LINK_MODE_100baseT_Full_BIT = 0x3 + ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 0x4 + ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 0x5 + ETHTOOL_LINK_MODE_Autoneg_BIT = 0x6 + ETHTOOL_LINK_MODE_TP_BIT = 0x7 + ETHTOOL_LINK_MODE_AUI_BIT = 0x8 + ETHTOOL_LINK_MODE_MII_BIT = 0x9 + ETHTOOL_LINK_MODE_FIBRE_BIT = 0xa + ETHTOOL_LINK_MODE_BNC_BIT = 0xb + ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 0xc + ETHTOOL_LINK_MODE_Pause_BIT = 0xd + ETHTOOL_LINK_MODE_Asym_Pause_BIT = 0xe + ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 0xf + ETHTOOL_LINK_MODE_Backplane_BIT = 0x10 + ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 0x11 + ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 0x12 + ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 0x13 + ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 0x14 + ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 0x15 + ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 0x16 + ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 0x17 + ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 0x18 + ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 0x19 + ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 0x1a + ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 0x1b + ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 0x1c + ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 0x1d + ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 0x1e + ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 0x1f + ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 0x20 + ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 0x21 + ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 0x22 + ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 0x23 + ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 0x24 + ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 0x25 + ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 0x26 + ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 0x27 + ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 0x28 + ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 0x29 + ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 0x2a + ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 0x2b + ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 0x2c + ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 0x2d + ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 0x2e + ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 0x2f + ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 0x30 + ETHTOOL_LINK_MODE_FEC_NONE_BIT = 0x31 + ETHTOOL_LINK_MODE_FEC_RS_BIT = 0x32 + ETHTOOL_LINK_MODE_FEC_BASER_BIT = 0x33 + ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 0x34 + ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 0x35 + ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 0x36 + ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 0x37 + ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 0x38 + ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 0x39 + ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 0x3a + ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 0x3b + ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 0x3c + ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 0x3d + ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 0x3e + ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 0x3f + ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 0x40 + ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 0x41 + ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 0x42 + ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 0x43 + ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 0x44 + ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 0x45 + ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 0x46 + ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 0x47 + ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 0x48 + ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 0x49 + ETHTOOL_LINK_MODE_FEC_LLRS_BIT = 0x4a + ETHTOOL_LINK_MODE_100000baseKR_Full_BIT = 0x4b + ETHTOOL_LINK_MODE_100000baseSR_Full_BIT = 0x4c + ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT = 0x4d + ETHTOOL_LINK_MODE_100000baseCR_Full_BIT = 0x4e + ETHTOOL_LINK_MODE_100000baseDR_Full_BIT = 0x4f + ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT = 0x50 + ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT = 0x51 + ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT = 0x52 + ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT = 0x53 + ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT = 0x54 + ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT = 0x55 + ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT = 0x56 + ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT = 0x57 + ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT = 0x58 + ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 0x59 + ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 0x5a + ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 0x5b + + ETHTOOL_MSG_USER_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET = 0x1 + ETHTOOL_MSG_LINKINFO_GET = 0x2 + ETHTOOL_MSG_LINKINFO_SET = 0x3 + ETHTOOL_MSG_LINKMODES_GET = 0x4 + ETHTOOL_MSG_LINKMODES_SET = 0x5 + ETHTOOL_MSG_LINKSTATE_GET = 0x6 + ETHTOOL_MSG_DEBUG_GET = 0x7 + ETHTOOL_MSG_DEBUG_SET = 0x8 + ETHTOOL_MSG_WOL_GET = 0x9 + ETHTOOL_MSG_WOL_SET = 0xa + ETHTOOL_MSG_FEATURES_GET = 0xb + ETHTOOL_MSG_FEATURES_SET = 0xc + ETHTOOL_MSG_PRIVFLAGS_GET = 0xd + ETHTOOL_MSG_PRIVFLAGS_SET = 0xe + ETHTOOL_MSG_RINGS_GET = 0xf + ETHTOOL_MSG_RINGS_SET = 0x10 + ETHTOOL_MSG_CHANNELS_GET = 0x11 + ETHTOOL_MSG_CHANNELS_SET = 0x12 + ETHTOOL_MSG_COALESCE_GET = 0x13 + ETHTOOL_MSG_COALESCE_SET = 0x14 + ETHTOOL_MSG_PAUSE_GET = 0x15 + ETHTOOL_MSG_PAUSE_SET = 0x16 + ETHTOOL_MSG_EEE_GET = 0x17 + ETHTOOL_MSG_EEE_SET = 0x18 + ETHTOOL_MSG_TSINFO_GET = 0x19 + ETHTOOL_MSG_CABLE_TEST_ACT = 0x1a + ETHTOOL_MSG_CABLE_TEST_TDR_ACT = 0x1b + ETHTOOL_MSG_TUNNEL_INFO_GET = 0x1c + ETHTOOL_MSG_FEC_GET = 0x1d + ETHTOOL_MSG_FEC_SET = 0x1e + ETHTOOL_MSG_MODULE_EEPROM_GET = 0x1f + ETHTOOL_MSG_STATS_GET = 0x20 + ETHTOOL_MSG_PHC_VCLOCKS_GET = 0x21 + ETHTOOL_MSG_MODULE_GET = 0x22 + ETHTOOL_MSG_MODULE_SET = 0x23 + ETHTOOL_MSG_PSE_GET = 0x24 + ETHTOOL_MSG_PSE_SET = 0x25 + ETHTOOL_MSG_RSS_GET = 0x26 + ETHTOOL_MSG_PLCA_GET_CFG = 0x27 + ETHTOOL_MSG_PLCA_SET_CFG = 0x28 + ETHTOOL_MSG_PLCA_GET_STATUS = 0x29 + ETHTOOL_MSG_MM_GET = 0x2a + ETHTOOL_MSG_MM_SET = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_ACT = 0x2c + ETHTOOL_MSG_PHY_GET = 0x2d + ETHTOOL_MSG_TSCONFIG_GET = 0x2e + ETHTOOL_MSG_TSCONFIG_SET = 0x2f + ETHTOOL_MSG_USER_MAX = 0x2f + ETHTOOL_MSG_KERNEL_NONE = 0x0 + ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 + ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 + ETHTOOL_MSG_LINKINFO_NTF = 0x3 + ETHTOOL_MSG_LINKMODES_GET_REPLY = 0x4 + ETHTOOL_MSG_LINKMODES_NTF = 0x5 + ETHTOOL_MSG_LINKSTATE_GET_REPLY = 0x6 + ETHTOOL_MSG_DEBUG_GET_REPLY = 0x7 + ETHTOOL_MSG_DEBUG_NTF = 0x8 + ETHTOOL_MSG_WOL_GET_REPLY = 0x9 + ETHTOOL_MSG_WOL_NTF = 0xa + ETHTOOL_MSG_FEATURES_GET_REPLY = 0xb + ETHTOOL_MSG_FEATURES_SET_REPLY = 0xc + ETHTOOL_MSG_FEATURES_NTF = 0xd + ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 0xe + ETHTOOL_MSG_PRIVFLAGS_NTF = 0xf + ETHTOOL_MSG_RINGS_GET_REPLY = 0x10 + ETHTOOL_MSG_RINGS_NTF = 0x11 + ETHTOOL_MSG_CHANNELS_GET_REPLY = 0x12 + ETHTOOL_MSG_CHANNELS_NTF = 0x13 + ETHTOOL_MSG_COALESCE_GET_REPLY = 0x14 + ETHTOOL_MSG_COALESCE_NTF = 0x15 + ETHTOOL_MSG_PAUSE_GET_REPLY = 0x16 + ETHTOOL_MSG_PAUSE_NTF = 0x17 + ETHTOOL_MSG_EEE_GET_REPLY = 0x18 + ETHTOOL_MSG_EEE_NTF = 0x19 + ETHTOOL_MSG_TSINFO_GET_REPLY = 0x1a + ETHTOOL_MSG_CABLE_TEST_NTF = 0x1b + ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 0x1c + ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 0x1d + ETHTOOL_MSG_FEC_GET_REPLY = 0x1e + ETHTOOL_MSG_FEC_NTF = 0x1f + ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY = 0x20 + ETHTOOL_MSG_STATS_GET_REPLY = 0x21 + ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 0x22 + ETHTOOL_MSG_MODULE_GET_REPLY = 0x23 + ETHTOOL_MSG_MODULE_NTF = 0x24 + ETHTOOL_MSG_PSE_GET_REPLY = 0x25 + ETHTOOL_MSG_RSS_GET_REPLY = 0x26 + ETHTOOL_MSG_PLCA_GET_CFG_REPLY = 0x27 + ETHTOOL_MSG_PLCA_GET_STATUS_REPLY = 0x28 + ETHTOOL_MSG_PLCA_NTF = 0x29 + ETHTOOL_MSG_MM_GET_REPLY = 0x2a + ETHTOOL_MSG_MM_NTF = 0x2b + ETHTOOL_MSG_MODULE_FW_FLASH_NTF = 0x2c + ETHTOOL_MSG_PHY_GET_REPLY = 0x2d + ETHTOOL_MSG_PHY_NTF = 0x2e + ETHTOOL_MSG_TSCONFIG_GET_REPLY = 0x2f + ETHTOOL_MSG_TSCONFIG_SET_REPLY = 0x30 + ETHTOOL_MSG_KERNEL_MAX = 0x30 + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 + ETHTOOL_A_HEADER_UNSPEC = 0x0 + ETHTOOL_A_HEADER_DEV_INDEX = 0x1 + ETHTOOL_A_HEADER_DEV_NAME = 0x2 + ETHTOOL_A_HEADER_FLAGS = 0x3 + ETHTOOL_A_HEADER_MAX = 0x4 + ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BIT_INDEX = 0x1 + ETHTOOL_A_BITSET_BIT_NAME = 0x2 + ETHTOOL_A_BITSET_BIT_VALUE = 0x3 + ETHTOOL_A_BITSET_BIT_MAX = 0x3 + ETHTOOL_A_BITSET_BITS_UNSPEC = 0x0 + ETHTOOL_A_BITSET_BITS_BIT = 0x1 + ETHTOOL_A_BITSET_BITS_MAX = 0x1 + ETHTOOL_A_BITSET_UNSPEC = 0x0 + ETHTOOL_A_BITSET_NOMASK = 0x1 + ETHTOOL_A_BITSET_SIZE = 0x2 + ETHTOOL_A_BITSET_BITS = 0x3 + ETHTOOL_A_BITSET_VALUE = 0x4 + ETHTOOL_A_BITSET_MASK = 0x5 + ETHTOOL_A_BITSET_MAX = 0x5 + ETHTOOL_A_STRING_UNSPEC = 0x0 + ETHTOOL_A_STRING_INDEX = 0x1 + ETHTOOL_A_STRING_VALUE = 0x2 + ETHTOOL_A_STRING_MAX = 0x2 + ETHTOOL_A_STRINGS_UNSPEC = 0x0 + ETHTOOL_A_STRINGS_STRING = 0x1 + ETHTOOL_A_STRINGS_MAX = 0x1 + ETHTOOL_A_STRINGSET_UNSPEC = 0x0 + ETHTOOL_A_STRINGSET_ID = 0x1 + ETHTOOL_A_STRINGSET_COUNT = 0x2 + ETHTOOL_A_STRINGSET_STRINGS = 0x3 + ETHTOOL_A_STRINGSET_MAX = 0x3 + ETHTOOL_A_STRINGSETS_UNSPEC = 0x0 + ETHTOOL_A_STRINGSETS_STRINGSET = 0x1 + ETHTOOL_A_STRINGSETS_MAX = 0x1 + ETHTOOL_A_STRSET_UNSPEC = 0x0 + ETHTOOL_A_STRSET_HEADER = 0x1 + ETHTOOL_A_STRSET_STRINGSETS = 0x2 + ETHTOOL_A_STRSET_COUNTS_ONLY = 0x3 + ETHTOOL_A_STRSET_MAX = 0x3 + ETHTOOL_A_LINKINFO_UNSPEC = 0x0 + ETHTOOL_A_LINKINFO_HEADER = 0x1 + ETHTOOL_A_LINKINFO_PORT = 0x2 + ETHTOOL_A_LINKINFO_PHYADDR = 0x3 + ETHTOOL_A_LINKINFO_TP_MDIX = 0x4 + ETHTOOL_A_LINKINFO_TP_MDIX_CTRL = 0x5 + ETHTOOL_A_LINKINFO_TRANSCEIVER = 0x6 + ETHTOOL_A_LINKINFO_MAX = 0x6 + ETHTOOL_A_LINKMODES_UNSPEC = 0x0 + ETHTOOL_A_LINKMODES_HEADER = 0x1 + ETHTOOL_A_LINKMODES_AUTONEG = 0x2 + ETHTOOL_A_LINKMODES_OURS = 0x3 + ETHTOOL_A_LINKMODES_PEER = 0x4 + ETHTOOL_A_LINKMODES_SPEED = 0x5 + ETHTOOL_A_LINKMODES_DUPLEX = 0x6 + ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG = 0x7 + ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE = 0x8 + ETHTOOL_A_LINKMODES_LANES = 0x9 + ETHTOOL_A_LINKMODES_RATE_MATCHING = 0xa + ETHTOOL_A_LINKMODES_MAX = 0xa + ETHTOOL_A_LINKSTATE_UNSPEC = 0x0 + ETHTOOL_A_LINKSTATE_HEADER = 0x1 + ETHTOOL_A_LINKSTATE_LINK = 0x2 + ETHTOOL_A_LINKSTATE_SQI = 0x3 + ETHTOOL_A_LINKSTATE_SQI_MAX = 0x4 + ETHTOOL_A_LINKSTATE_EXT_STATE = 0x5 + ETHTOOL_A_LINKSTATE_EXT_SUBSTATE = 0x6 + ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT = 0x7 + ETHTOOL_A_LINKSTATE_MAX = 0x7 + ETHTOOL_A_DEBUG_UNSPEC = 0x0 + ETHTOOL_A_DEBUG_HEADER = 0x1 + ETHTOOL_A_DEBUG_MSGMASK = 0x2 + ETHTOOL_A_DEBUG_MAX = 0x2 + ETHTOOL_A_WOL_UNSPEC = 0x0 + ETHTOOL_A_WOL_HEADER = 0x1 + ETHTOOL_A_WOL_MODES = 0x2 + ETHTOOL_A_WOL_SOPASS = 0x3 + ETHTOOL_A_WOL_MAX = 0x3 + ETHTOOL_A_FEATURES_UNSPEC = 0x0 + ETHTOOL_A_FEATURES_HEADER = 0x1 + ETHTOOL_A_FEATURES_HW = 0x2 + ETHTOOL_A_FEATURES_WANTED = 0x3 + ETHTOOL_A_FEATURES_ACTIVE = 0x4 + ETHTOOL_A_FEATURES_NOCHANGE = 0x5 + ETHTOOL_A_FEATURES_MAX = 0x5 + ETHTOOL_A_PRIVFLAGS_UNSPEC = 0x0 + ETHTOOL_A_PRIVFLAGS_HEADER = 0x1 + ETHTOOL_A_PRIVFLAGS_FLAGS = 0x2 + ETHTOOL_A_PRIVFLAGS_MAX = 0x2 + ETHTOOL_A_RINGS_UNSPEC = 0x0 + ETHTOOL_A_RINGS_HEADER = 0x1 + ETHTOOL_A_RINGS_RX_MAX = 0x2 + ETHTOOL_A_RINGS_RX_MINI_MAX = 0x3 + ETHTOOL_A_RINGS_RX_JUMBO_MAX = 0x4 + ETHTOOL_A_RINGS_TX_MAX = 0x5 + ETHTOOL_A_RINGS_RX = 0x6 + ETHTOOL_A_RINGS_RX_MINI = 0x7 + ETHTOOL_A_RINGS_RX_JUMBO = 0x8 + ETHTOOL_A_RINGS_TX = 0x9 + ETHTOOL_A_RINGS_RX_BUF_LEN = 0xa + ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb + ETHTOOL_A_RINGS_CQE_SIZE = 0xc + ETHTOOL_A_RINGS_TX_PUSH = 0xd + ETHTOOL_A_RINGS_RX_PUSH = 0xe + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN = 0xf + ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX = 0x10 + ETHTOOL_A_RINGS_HDS_THRESH = 0x11 + ETHTOOL_A_RINGS_HDS_THRESH_MAX = 0x12 + ETHTOOL_A_RINGS_MAX = 0x12 + ETHTOOL_A_CHANNELS_UNSPEC = 0x0 + ETHTOOL_A_CHANNELS_HEADER = 0x1 + ETHTOOL_A_CHANNELS_RX_MAX = 0x2 + ETHTOOL_A_CHANNELS_TX_MAX = 0x3 + ETHTOOL_A_CHANNELS_OTHER_MAX = 0x4 + ETHTOOL_A_CHANNELS_COMBINED_MAX = 0x5 + ETHTOOL_A_CHANNELS_RX_COUNT = 0x6 + ETHTOOL_A_CHANNELS_TX_COUNT = 0x7 + ETHTOOL_A_CHANNELS_OTHER_COUNT = 0x8 + ETHTOOL_A_CHANNELS_COMBINED_COUNT = 0x9 + ETHTOOL_A_CHANNELS_MAX = 0x9 + ETHTOOL_A_COALESCE_UNSPEC = 0x0 + ETHTOOL_A_COALESCE_HEADER = 0x1 + ETHTOOL_A_COALESCE_RX_USECS = 0x2 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES = 0x3 + ETHTOOL_A_COALESCE_RX_USECS_IRQ = 0x4 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ = 0x5 + ETHTOOL_A_COALESCE_TX_USECS = 0x6 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES = 0x7 + ETHTOOL_A_COALESCE_TX_USECS_IRQ = 0x8 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ = 0x9 + ETHTOOL_A_COALESCE_STATS_BLOCK_USECS = 0xa + ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX = 0xb + ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX = 0xc + ETHTOOL_A_COALESCE_PKT_RATE_LOW = 0xd + ETHTOOL_A_COALESCE_RX_USECS_LOW = 0xe + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW = 0xf + ETHTOOL_A_COALESCE_TX_USECS_LOW = 0x10 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW = 0x11 + ETHTOOL_A_COALESCE_PKT_RATE_HIGH = 0x12 + ETHTOOL_A_COALESCE_RX_USECS_HIGH = 0x13 + ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH = 0x14 + ETHTOOL_A_COALESCE_TX_USECS_HIGH = 0x15 + ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH = 0x16 + ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17 + ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 0x18 + ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 0x19 + ETHTOOL_A_COALESCE_MAX = 0x1e + ETHTOOL_A_PAUSE_UNSPEC = 0x0 + ETHTOOL_A_PAUSE_HEADER = 0x1 + ETHTOOL_A_PAUSE_AUTONEG = 0x2 + ETHTOOL_A_PAUSE_RX = 0x3 + ETHTOOL_A_PAUSE_TX = 0x4 + ETHTOOL_A_PAUSE_STATS = 0x5 + ETHTOOL_A_PAUSE_MAX = 0x6 + ETHTOOL_A_PAUSE_STAT_UNSPEC = 0x0 + ETHTOOL_A_PAUSE_STAT_PAD = 0x1 + ETHTOOL_A_PAUSE_STAT_TX_FRAMES = 0x2 + ETHTOOL_A_PAUSE_STAT_RX_FRAMES = 0x3 + ETHTOOL_A_PAUSE_STAT_MAX = 0x3 + ETHTOOL_A_EEE_UNSPEC = 0x0 + ETHTOOL_A_EEE_HEADER = 0x1 + ETHTOOL_A_EEE_MODES_OURS = 0x2 + ETHTOOL_A_EEE_MODES_PEER = 0x3 + ETHTOOL_A_EEE_ACTIVE = 0x4 + ETHTOOL_A_EEE_ENABLED = 0x5 + ETHTOOL_A_EEE_TX_LPI_ENABLED = 0x6 + ETHTOOL_A_EEE_TX_LPI_TIMER = 0x7 + ETHTOOL_A_EEE_MAX = 0x7 + ETHTOOL_A_TSINFO_UNSPEC = 0x0 + ETHTOOL_A_TSINFO_HEADER = 0x1 + ETHTOOL_A_TSINFO_TIMESTAMPING = 0x2 + ETHTOOL_A_TSINFO_TX_TYPES = 0x3 + ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 + ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 + ETHTOOL_A_TSINFO_STATS = 0x6 + ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDER = 0x7 + ETHTOOL_A_TSINFO_MAX = 0x9 + ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_MAX = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_CODE_OK = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE_OPEN = 0x2 + ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT = 0x3 + ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT = 0x4 + ETHTOOL_A_CABLE_PAIR_A = 0x0 + ETHTOOL_A_CABLE_PAIR_B = 0x1 + ETHTOOL_A_CABLE_PAIR_C = 0x2 + ETHTOOL_A_CABLE_PAIR_D = 0x3 + ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 + ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 + ETHTOOL_A_CABLE_RESULT_CODE = 0x2 + ETHTOOL_A_CABLE_RESULT_MAX = 0x3 + ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 + ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 + ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 + ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 + ETHTOOL_A_CABLE_NEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_NEST_RESULT = 0x1 + ETHTOOL_A_CABLE_NEST_FAULT_LENGTH = 0x2 + ETHTOOL_A_CABLE_NEST_MAX = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_NTF_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_NTF_STATUS = 0x2 + ETHTOOL_A_CABLE_TEST_NTF_NEST = 0x3 + ETHTOOL_A_CABLE_TEST_NTF_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR = 0x4 + ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX = 0x4 + ETHTOOL_A_CABLE_TEST_TDR_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_CFG = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_MAX = 0x2 + ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_AMPLITUDE_PAIR = 0x1 + ETHTOOL_A_CABLE_AMPLITUDE_mV = 0x2 + ETHTOOL_A_CABLE_AMPLITUDE_MAX = 0x2 + ETHTOOL_A_CABLE_PULSE_UNSPEC = 0x0 + ETHTOOL_A_CABLE_PULSE_mV = 0x1 + ETHTOOL_A_CABLE_PULSE_MAX = 0x1 + ETHTOOL_A_CABLE_STEP_UNSPEC = 0x0 + ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE = 0x1 + ETHTOOL_A_CABLE_STEP_LAST_DISTANCE = 0x2 + ETHTOOL_A_CABLE_STEP_STEP_DISTANCE = 0x3 + ETHTOOL_A_CABLE_STEP_MAX = 0x3 + ETHTOOL_A_CABLE_TDR_NEST_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TDR_NEST_STEP = 0x1 + ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE = 0x2 + ETHTOOL_A_CABLE_TDR_NEST_PULSE = 0x3 + ETHTOOL_A_CABLE_TDR_NEST_MAX = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC = 0x0 + ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER = 0x1 + ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS = 0x2 + ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST = 0x3 + ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX = 0x3 + ETHTOOL_UDP_TUNNEL_TYPE_VXLAN = 0x0 + ETHTOOL_UDP_TUNNEL_TYPE_GENEVE = 0x1 + ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE = 0x2 + ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 0x1 + ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 0x2 + ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 0x2 + ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 0x1 + ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 0x2 + ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 0x3 + ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 0x3 + ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_UDP_TABLE = 0x1 + ETHTOOL_A_TUNNEL_UDP_MAX = 0x1 + ETHTOOL_A_TUNNEL_INFO_UNSPEC = 0x0 + ETHTOOL_A_TUNNEL_INFO_HEADER = 0x1 + ETHTOOL_A_TUNNEL_INFO_UDP_PORTS = 0x2 + ETHTOOL_A_TUNNEL_INFO_MAX = 0x2 +) + +const ( + TCP_V4_FLOW = 0x1 + UDP_V4_FLOW = 0x2 + TCP_V6_FLOW = 0x5 + UDP_V6_FLOW = 0x6 + ESP_V4_FLOW = 0xa + ESP_V6_FLOW = 0xc + IP_USER_FLOW = 0xd + IPV6_USER_FLOW = 0xe + IPV6_FLOW = 0x11 + ETHER_FLOW = 0x12 +) + +const SPEED_UNKNOWN = -0x1 + +type EthtoolDrvinfo struct { + Cmd uint32 + Driver [32]byte + Version [32]byte + Fw_version [32]byte + Bus_info [32]byte + Erom_version [32]byte + Reserved2 [12]byte + N_priv_flags uint32 + N_stats uint32 + Testinfo_len uint32 + Eedump_len uint32 + Regdump_len uint32 +} + +type EthtoolTsInfo struct { + Cmd uint32 + So_timestamping uint32 + Phc_index int32 + Tx_types uint32 + Tx_reserved [3]uint32 + Rx_filters uint32 + Rx_reserved [3]uint32 +} + +type HwTstampConfig struct { + Flags int32 + Tx_type int32 + Rx_filter int32 +} + +const ( + HWTSTAMP_FILTER_NONE = 0x0 + HWTSTAMP_FILTER_ALL = 0x1 + HWTSTAMP_FILTER_SOME = 0x2 + HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3 + HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6 + HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9 + HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc +) + +const ( + HWTSTAMP_TX_OFF = 0x0 + HWTSTAMP_TX_ON = 0x1 + HWTSTAMP_TX_ONESTEP_SYNC = 0x2 +) + +type ( + PtpClockCaps struct { + Max_adj int32 + N_alarm int32 + N_ext_ts int32 + N_per_out int32 + Pps int32 + N_pins int32 + Cross_timestamping int32 + Adjust_phase int32 + Max_phase_adj int32 + Rsv [11]int32 + } + PtpClockTime struct { + Sec int64 + Nsec uint32 + Reserved uint32 + } + PtpExttsEvent struct { + T PtpClockTime + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpExttsRequest struct { + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpPeroutRequest struct { + StartOrPhase PtpClockTime + Period PtpClockTime + Index uint32 + Flags uint32 + On PtpClockTime + } + PtpPinDesc struct { + Name [64]byte + Index uint32 + Func uint32 + Chan uint32 + Rsv [5]uint32 + } + PtpSysOffset struct { + Samples uint32 + Rsv [3]uint32 + Ts [51]PtpClockTime + } + PtpSysOffsetExtended struct { + Samples uint32 + Clockid int32 + Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { + Device PtpClockTime + Realtime PtpClockTime + Monoraw PtpClockTime + Rsv [4]uint32 + } +) + +const ( + PTP_PF_NONE = 0x0 + PTP_PF_EXTTS = 0x1 + PTP_PF_PEROUT = 0x2 + PTP_PF_PHYSYNC = 0x3 +) + +type ( + HIDRawReportDescriptor struct { + Size uint32 + Value [4096]uint8 + } + HIDRawDevInfo struct { + Bustype uint32 + Vendor int16 + Product int16 + } +) + +const ( + CLOSE_RANGE_UNSHARE = 0x2 + CLOSE_RANGE_CLOEXEC = 0x4 +) + +const ( + NLMSGERR_ATTR_MSG = 0x1 + NLMSGERR_ATTR_OFFS = 0x2 + NLMSGERR_ATTR_COOKIE = 0x3 +) + +type ( + EraseInfo struct { + Start uint32 + Length uint32 + } + EraseInfo64 struct { + Start uint64 + Length uint64 + } + MtdOobBuf struct { + Start uint32 + Length uint32 + Ptr *uint8 + } + MtdOobBuf64 struct { + Start uint64 + Pad uint32 + Length uint32 + Ptr uint64 + } + MtdWriteReq struct { + Start uint64 + Len uint64 + Ooblen uint64 + Data uint64 + Oob uint64 + Mode uint8 + _ [7]uint8 + } + MtdInfo struct { + Type uint8 + Flags uint32 + Size uint32 + Erasesize uint32 + Writesize uint32 + Oobsize uint32 + _ uint64 + } + RegionInfo struct { + Offset uint32 + Erasesize uint32 + Numblocks uint32 + Regionindex uint32 + } + OtpInfo struct { + Start uint32 + Length uint32 + Locked uint32 + } + NandOobinfo struct { + Useecc uint32 + Eccbytes uint32 + Oobfree [8][2]uint32 + Eccpos [32]uint32 + } + NandOobfree struct { + Offset uint32 + Length uint32 + } + NandEcclayout struct { + Eccbytes uint32 + Eccpos [64]uint32 + Oobavail uint32 + Oobfree [8]NandOobfree + } + MtdEccStats struct { + Corrected uint32 + Failed uint32 + Badblocks uint32 + Bbtblocks uint32 + } +) + +const ( + MTD_OPS_PLACE_OOB = 0x0 + MTD_OPS_AUTO_OOB = 0x1 + MTD_OPS_RAW = 0x2 +) + +const ( + MTD_FILE_MODE_NORMAL = 0x0 + MTD_FILE_MODE_OTP_FACTORY = 0x1 + MTD_FILE_MODE_OTP_USER = 0x2 + MTD_FILE_MODE_RAW = 0x3 +) + +const ( + NFC_CMD_UNSPEC = 0x0 + NFC_CMD_GET_DEVICE = 0x1 + NFC_CMD_DEV_UP = 0x2 + NFC_CMD_DEV_DOWN = 0x3 + NFC_CMD_DEP_LINK_UP = 0x4 + NFC_CMD_DEP_LINK_DOWN = 0x5 + NFC_CMD_START_POLL = 0x6 + NFC_CMD_STOP_POLL = 0x7 + NFC_CMD_GET_TARGET = 0x8 + NFC_EVENT_TARGETS_FOUND = 0x9 + NFC_EVENT_DEVICE_ADDED = 0xa + NFC_EVENT_DEVICE_REMOVED = 0xb + NFC_EVENT_TARGET_LOST = 0xc + NFC_EVENT_TM_ACTIVATED = 0xd + NFC_EVENT_TM_DEACTIVATED = 0xe + NFC_CMD_LLC_GET_PARAMS = 0xf + NFC_CMD_LLC_SET_PARAMS = 0x10 + NFC_CMD_ENABLE_SE = 0x11 + NFC_CMD_DISABLE_SE = 0x12 + NFC_CMD_LLC_SDREQ = 0x13 + NFC_EVENT_LLC_SDRES = 0x14 + NFC_CMD_FW_DOWNLOAD = 0x15 + NFC_EVENT_SE_ADDED = 0x16 + NFC_EVENT_SE_REMOVED = 0x17 + NFC_EVENT_SE_CONNECTIVITY = 0x18 + NFC_EVENT_SE_TRANSACTION = 0x19 + NFC_CMD_GET_SE = 0x1a + NFC_CMD_SE_IO = 0x1b + NFC_CMD_ACTIVATE_TARGET = 0x1c + NFC_CMD_VENDOR = 0x1d + NFC_CMD_DEACTIVATE_TARGET = 0x1e + NFC_ATTR_UNSPEC = 0x0 + NFC_ATTR_DEVICE_INDEX = 0x1 + NFC_ATTR_DEVICE_NAME = 0x2 + NFC_ATTR_PROTOCOLS = 0x3 + NFC_ATTR_TARGET_INDEX = 0x4 + NFC_ATTR_TARGET_SENS_RES = 0x5 + NFC_ATTR_TARGET_SEL_RES = 0x6 + NFC_ATTR_TARGET_NFCID1 = 0x7 + NFC_ATTR_TARGET_SENSB_RES = 0x8 + NFC_ATTR_TARGET_SENSF_RES = 0x9 + NFC_ATTR_COMM_MODE = 0xa + NFC_ATTR_RF_MODE = 0xb + NFC_ATTR_DEVICE_POWERED = 0xc + NFC_ATTR_IM_PROTOCOLS = 0xd + NFC_ATTR_TM_PROTOCOLS = 0xe + NFC_ATTR_LLC_PARAM_LTO = 0xf + NFC_ATTR_LLC_PARAM_RW = 0x10 + NFC_ATTR_LLC_PARAM_MIUX = 0x11 + NFC_ATTR_SE = 0x12 + NFC_ATTR_LLC_SDP = 0x13 + NFC_ATTR_FIRMWARE_NAME = 0x14 + NFC_ATTR_SE_INDEX = 0x15 + NFC_ATTR_SE_TYPE = 0x16 + NFC_ATTR_SE_AID = 0x17 + NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18 + NFC_ATTR_SE_APDU = 0x19 + NFC_ATTR_TARGET_ISO15693_DSFID = 0x1a + NFC_ATTR_TARGET_ISO15693_UID = 0x1b + NFC_ATTR_SE_PARAMS = 0x1c + NFC_ATTR_VENDOR_ID = 0x1d + NFC_ATTR_VENDOR_SUBCMD = 0x1e + NFC_ATTR_VENDOR_DATA = 0x1f + NFC_SDP_ATTR_UNSPEC = 0x0 + NFC_SDP_ATTR_URI = 0x1 + NFC_SDP_ATTR_SAP = 0x2 +) + +type LandlockRulesetAttr struct { + Access_fs uint64 + Access_net uint64 + Scoped uint64 +} + +type LandlockPathBeneathAttr struct { + Allowed_access uint64 + Parent_fd int32 +} + +const ( + LANDLOCK_RULE_PATH_BENEATH = 0x1 +) + +const ( + IPC_CREAT = 0x200 + IPC_EXCL = 0x400 + IPC_NOWAIT = 0x800 + IPC_PRIVATE = 0x0 + + ipc_64 = 0x100 +) + +const ( + IPC_RMID = 0x0 + IPC_SET = 0x1 + IPC_STAT = 0x2 +) + +const ( + SHM_RDONLY = 0x1000 + SHM_RND = 0x2000 +) + +type MountAttr struct { + Attr_set uint64 + Attr_clr uint64 + Propagation uint64 + Userns_fd uint64 +} + +const ( + WG_CMD_GET_DEVICE = 0x0 + WG_CMD_SET_DEVICE = 0x1 + WGDEVICE_F_REPLACE_PEERS = 0x1 + WGDEVICE_A_UNSPEC = 0x0 + WGDEVICE_A_IFINDEX = 0x1 + WGDEVICE_A_IFNAME = 0x2 + WGDEVICE_A_PRIVATE_KEY = 0x3 + WGDEVICE_A_PUBLIC_KEY = 0x4 + WGDEVICE_A_FLAGS = 0x5 + WGDEVICE_A_LISTEN_PORT = 0x6 + WGDEVICE_A_FWMARK = 0x7 + WGDEVICE_A_PEERS = 0x8 + WGPEER_F_REMOVE_ME = 0x1 + WGPEER_F_REPLACE_ALLOWEDIPS = 0x2 + WGPEER_F_UPDATE_ONLY = 0x4 + WGPEER_A_UNSPEC = 0x0 + WGPEER_A_PUBLIC_KEY = 0x1 + WGPEER_A_PRESHARED_KEY = 0x2 + WGPEER_A_FLAGS = 0x3 + WGPEER_A_ENDPOINT = 0x4 + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5 + WGPEER_A_LAST_HANDSHAKE_TIME = 0x6 + WGPEER_A_RX_BYTES = 0x7 + WGPEER_A_TX_BYTES = 0x8 + WGPEER_A_ALLOWEDIPS = 0x9 + WGPEER_A_PROTOCOL_VERSION = 0xa + WGALLOWEDIP_A_UNSPEC = 0x0 + WGALLOWEDIP_A_FAMILY = 0x1 + WGALLOWEDIP_A_IPADDR = 0x2 + WGALLOWEDIP_A_CIDR_MASK = 0x3 +) + +const ( + NL_ATTR_TYPE_INVALID = 0x0 + NL_ATTR_TYPE_FLAG = 0x1 + NL_ATTR_TYPE_U8 = 0x2 + NL_ATTR_TYPE_U16 = 0x3 + NL_ATTR_TYPE_U32 = 0x4 + NL_ATTR_TYPE_U64 = 0x5 + NL_ATTR_TYPE_S8 = 0x6 + NL_ATTR_TYPE_S16 = 0x7 + NL_ATTR_TYPE_S32 = 0x8 + NL_ATTR_TYPE_S64 = 0x9 + NL_ATTR_TYPE_BINARY = 0xa + NL_ATTR_TYPE_STRING = 0xb + NL_ATTR_TYPE_NUL_STRING = 0xc + NL_ATTR_TYPE_NESTED = 0xd + NL_ATTR_TYPE_NESTED_ARRAY = 0xe + NL_ATTR_TYPE_BITFIELD32 = 0xf + + NL_POLICY_TYPE_ATTR_UNSPEC = 0x0 + NL_POLICY_TYPE_ATTR_TYPE = 0x1 + NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 0x2 + NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 0x3 + NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 0x4 + NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 0x5 + NL_POLICY_TYPE_ATTR_MIN_LENGTH = 0x6 + NL_POLICY_TYPE_ATTR_MAX_LENGTH = 0x7 + NL_POLICY_TYPE_ATTR_POLICY_IDX = 0x8 + NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 0x9 + NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 0xa + NL_POLICY_TYPE_ATTR_PAD = 0xb + NL_POLICY_TYPE_ATTR_MASK = 0xc + NL_POLICY_TYPE_ATTR_MAX = 0xc +) + +type CANBitTiming struct { + Bitrate uint32 + Sample_point uint32 + Tq uint32 + Prop_seg uint32 + Phase_seg1 uint32 + Phase_seg2 uint32 + Sjw uint32 + Brp uint32 +} + +type CANBitTimingConst struct { + Name [16]uint8 + Tseg1_min uint32 + Tseg1_max uint32 + Tseg2_min uint32 + Tseg2_max uint32 + Sjw_max uint32 + Brp_min uint32 + Brp_max uint32 + Brp_inc uint32 +} + +type CANClock struct { + Freq uint32 +} + +type CANBusErrorCounters struct { + Txerr uint16 + Rxerr uint16 +} + +type CANCtrlMode struct { + Mask uint32 + Flags uint32 +} + +type CANDeviceStats struct { + Bus_error uint32 + Error_warning uint32 + Error_passive uint32 + Bus_off uint32 + Arbitration_lost uint32 + Restarts uint32 +} + +const ( + CAN_STATE_ERROR_ACTIVE = 0x0 + CAN_STATE_ERROR_WARNING = 0x1 + CAN_STATE_ERROR_PASSIVE = 0x2 + CAN_STATE_BUS_OFF = 0x3 + CAN_STATE_STOPPED = 0x4 + CAN_STATE_SLEEPING = 0x5 + CAN_STATE_MAX = 0x6 +) + +const ( + IFLA_CAN_UNSPEC = 0x0 + IFLA_CAN_BITTIMING = 0x1 + IFLA_CAN_BITTIMING_CONST = 0x2 + IFLA_CAN_CLOCK = 0x3 + IFLA_CAN_STATE = 0x4 + IFLA_CAN_CTRLMODE = 0x5 + IFLA_CAN_RESTART_MS = 0x6 + IFLA_CAN_RESTART = 0x7 + IFLA_CAN_BERR_COUNTER = 0x8 + IFLA_CAN_DATA_BITTIMING = 0x9 + IFLA_CAN_DATA_BITTIMING_CONST = 0xa + IFLA_CAN_TERMINATION = 0xb + IFLA_CAN_TERMINATION_CONST = 0xc + IFLA_CAN_BITRATE_CONST = 0xd + IFLA_CAN_DATA_BITRATE_CONST = 0xe + IFLA_CAN_BITRATE_MAX = 0xf +) + +type KCMAttach struct { + Fd int32 + Bpf_fd int32 +} + +type KCMUnattach struct { + Fd int32 +} + +type KCMClone struct { + Fd int32 +} + +const ( + NL80211_AC_BE = 0x2 + NL80211_AC_BK = 0x3 + NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED = 0x0 + NL80211_ACL_POLICY_DENY_UNLESS_LISTED = 0x1 + NL80211_AC_VI = 0x1 + NL80211_AC_VO = 0x0 + NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT = 0x1 + NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT = 0x2 + NL80211_AP_SME_SA_QUERY_OFFLOAD = 0x1 + NL80211_ATTR_4ADDR = 0x53 + NL80211_ATTR_ACK = 0x5c + NL80211_ATTR_ACK_SIGNAL = 0x107 + NL80211_ATTR_ACL_POLICY = 0xa5 + NL80211_ATTR_ADMITTED_TIME = 0xd4 + NL80211_ATTR_AIRTIME_WEIGHT = 0x112 + NL80211_ATTR_AKM_SUITES = 0x4c + NL80211_ATTR_AP_ISOLATE = 0x60 + NL80211_ATTR_AP_SETTINGS_FLAGS = 0x135 + NL80211_ATTR_ASSOC_SPP_AMSDU = 0x14a + NL80211_ATTR_AUTH_DATA = 0x9c + NL80211_ATTR_AUTH_TYPE = 0x35 + NL80211_ATTR_BANDS = 0xef + NL80211_ATTR_BEACON_HEAD = 0xe + NL80211_ATTR_BEACON_INTERVAL = 0xc + NL80211_ATTR_BEACON_TAIL = 0xf + NL80211_ATTR_BG_SCAN_PERIOD = 0x98 + NL80211_ATTR_BSS_BASIC_RATES = 0x24 + NL80211_ATTR_BSS = 0x2f + NL80211_ATTR_BSS_CTS_PROT = 0x1c + NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA = 0x147 + NL80211_ATTR_BSS_HT_OPMODE = 0x6d + NL80211_ATTR_BSSID = 0xf5 + NL80211_ATTR_BSS_SELECT = 0xe3 + NL80211_ATTR_BSS_SHORT_PREAMBLE = 0x1d + NL80211_ATTR_BSS_SHORT_SLOT_TIME = 0x1e + NL80211_ATTR_CENTER_FREQ1 = 0xa0 + NL80211_ATTR_CENTER_FREQ1_OFFSET = 0x123 + NL80211_ATTR_CENTER_FREQ2 = 0xa1 + NL80211_ATTR_CHANNEL_WIDTH = 0x9f + NL80211_ATTR_CH_SWITCH_BLOCK_TX = 0xb8 + NL80211_ATTR_CH_SWITCH_COUNT = 0xb7 + NL80211_ATTR_CIPHER_SUITE_GROUP = 0x4a + NL80211_ATTR_CIPHER_SUITES = 0x39 + NL80211_ATTR_CIPHER_SUITES_PAIRWISE = 0x49 + NL80211_ATTR_CNTDWN_OFFS_BEACON = 0xba + NL80211_ATTR_CNTDWN_OFFS_PRESP = 0xbb + NL80211_ATTR_COALESCE_RULE = 0xb6 + NL80211_ATTR_COALESCE_RULE_CONDITION = 0x2 + NL80211_ATTR_COALESCE_RULE_DELAY = 0x1 + NL80211_ATTR_COALESCE_RULE_MAX = 0x3 + NL80211_ATTR_COALESCE_RULE_PKT_PATTERN = 0x3 + NL80211_ATTR_COLOR_CHANGE_COLOR = 0x130 + NL80211_ATTR_COLOR_CHANGE_COUNT = 0x12f + NL80211_ATTR_COLOR_CHANGE_ELEMS = 0x131 + NL80211_ATTR_CONN_FAILED_REASON = 0x9b + NL80211_ATTR_CONTROL_PORT = 0x44 + NL80211_ATTR_CONTROL_PORT_ETHERTYPE = 0x66 + NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT = 0x67 + NL80211_ATTR_CONTROL_PORT_NO_PREAUTH = 0x11e + NL80211_ATTR_CONTROL_PORT_OVER_NL80211 = 0x108 + NL80211_ATTR_COOKIE = 0x58 + NL80211_ATTR_CQM_BEACON_LOSS_EVENT = 0x8 + NL80211_ATTR_CQM = 0x5e + NL80211_ATTR_CQM_MAX = 0x9 + NL80211_ATTR_CQM_PKT_LOSS_EVENT = 0x4 + NL80211_ATTR_CQM_RSSI_HYST = 0x2 + NL80211_ATTR_CQM_RSSI_LEVEL = 0x9 + NL80211_ATTR_CQM_RSSI_THOLD = 0x1 + NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT = 0x3 + NL80211_ATTR_CQM_TXE_INTVL = 0x7 + NL80211_ATTR_CQM_TXE_PKTS = 0x6 + NL80211_ATTR_CQM_TXE_RATE = 0x5 + NL80211_ATTR_CRIT_PROT_ID = 0xb3 + NL80211_ATTR_CSA_C_OFF_BEACON = 0xba + NL80211_ATTR_CSA_C_OFF_PRESP = 0xbb + NL80211_ATTR_CSA_C_OFFSETS_TX = 0xcd + NL80211_ATTR_CSA_IES = 0xb9 + NL80211_ATTR_DEVICE_AP_SME = 0x8d + NL80211_ATTR_DFS_CAC_TIME = 0x7 + NL80211_ATTR_DFS_REGION = 0x92 + NL80211_ATTR_DISABLE_EHT = 0x137 + NL80211_ATTR_DISABLE_HE = 0x12d + NL80211_ATTR_DISABLE_HT = 0x93 + NL80211_ATTR_DISABLE_VHT = 0xaf + NL80211_ATTR_DISCONNECTED_BY_AP = 0x47 + NL80211_ATTR_DONT_WAIT_FOR_ACK = 0x8e + NL80211_ATTR_DTIM_PERIOD = 0xd + NL80211_ATTR_DURATION = 0x57 + NL80211_ATTR_EHT_CAPABILITY = 0x136 + NL80211_ATTR_EMA_RNR_ELEMS = 0x145 + NL80211_ATTR_EML_CAPABILITY = 0x13d + NL80211_ATTR_EXT_CAPA = 0xa9 + NL80211_ATTR_EXT_CAPA_MASK = 0xaa + NL80211_ATTR_EXTERNAL_AUTH_ACTION = 0x104 + NL80211_ATTR_EXTERNAL_AUTH_SUPPORT = 0x105 + NL80211_ATTR_EXT_FEATURES = 0xd9 + NL80211_ATTR_FEATURE_FLAGS = 0x8f + NL80211_ATTR_FILS_CACHE_ID = 0xfd + NL80211_ATTR_FILS_DISCOVERY = 0x126 + NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM = 0xfb + NL80211_ATTR_FILS_ERP_REALM = 0xfa + NL80211_ATTR_FILS_ERP_RRK = 0xfc + NL80211_ATTR_FILS_ERP_USERNAME = 0xf9 + NL80211_ATTR_FILS_KEK = 0xf2 + NL80211_ATTR_FILS_NONCES = 0xf3 + NL80211_ATTR_FRAME = 0x33 + NL80211_ATTR_FRAME_MATCH = 0x5b + NL80211_ATTR_FRAME_TYPE = 0x65 + NL80211_ATTR_FREQ_AFTER = 0x3b + NL80211_ATTR_FREQ_BEFORE = 0x3a + NL80211_ATTR_FREQ_FIXED = 0x3c + NL80211_ATTR_FREQ_RANGE_END = 0x3 + NL80211_ATTR_FREQ_RANGE_MAX_BW = 0x4 + NL80211_ATTR_FREQ_RANGE_START = 0x2 + NL80211_ATTR_FTM_RESPONDER = 0x10e + NL80211_ATTR_FTM_RESPONDER_STATS = 0x10f + NL80211_ATTR_GENERATION = 0x2e + NL80211_ATTR_HANDLE_DFS = 0xbf + NL80211_ATTR_HE_6GHZ_CAPABILITY = 0x125 + NL80211_ATTR_HE_BSS_COLOR = 0x11b + NL80211_ATTR_HE_CAPABILITY = 0x10d + NL80211_ATTR_HE_OBSS_PD = 0x117 + NL80211_ATTR_HIDDEN_SSID = 0x7e + NL80211_ATTR_HT_CAPABILITY = 0x1f + NL80211_ATTR_HT_CAPABILITY_MASK = 0x94 + NL80211_ATTR_HW_TIMESTAMP_ENABLED = 0x144 + NL80211_ATTR_IE_ASSOC_RESP = 0x80 + NL80211_ATTR_IE = 0x2a + NL80211_ATTR_IE_PROBE_RESP = 0x7f + NL80211_ATTR_IE_RIC = 0xb2 + NL80211_ATTR_IFACE_SOCKET_OWNER = 0xcc + NL80211_ATTR_IFINDEX = 0x3 + NL80211_ATTR_IFNAME = 0x4 + NL80211_ATTR_IFTYPE_AKM_SUITES = 0x11c + NL80211_ATTR_IFTYPE = 0x5 + NL80211_ATTR_IFTYPE_EXT_CAPA = 0xe6 + NL80211_ATTR_INACTIVITY_TIMEOUT = 0x96 + NL80211_ATTR_INTERFACE_COMBINATIONS = 0x78 + NL80211_ATTR_KEY_CIPHER = 0x9 + NL80211_ATTR_KEY = 0x50 + NL80211_ATTR_KEY_DATA = 0x7 + NL80211_ATTR_KEY_DEFAULT = 0xb + NL80211_ATTR_KEY_DEFAULT_MGMT = 0x28 + NL80211_ATTR_KEY_DEFAULT_TYPES = 0x6e + NL80211_ATTR_KEY_IDX = 0x8 + NL80211_ATTR_KEYS = 0x51 + NL80211_ATTR_KEY_SEQ = 0xa + NL80211_ATTR_KEY_TYPE = 0x37 + NL80211_ATTR_LOCAL_MESH_POWER_MODE = 0xa4 + NL80211_ATTR_LOCAL_STATE_CHANGE = 0x5f + NL80211_ATTR_MAC_ACL_MAX = 0xa7 + NL80211_ATTR_MAC_ADDRS = 0xa6 + NL80211_ATTR_MAC = 0x6 + NL80211_ATTR_MAC_HINT = 0xc8 + NL80211_ATTR_MAC_MASK = 0xd7 + NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca + NL80211_ATTR_MAX = 0x151 + NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 + NL80211_ATTR_MAX_CSA_COUNTERS = 0xce + NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS = 0x143 + NL80211_ATTR_MAX_MATCH_SETS = 0x85 + NL80211_ATTR_MAX_NUM_AKM_SUITES = 0x13c + NL80211_ATTR_MAX_NUM_PMKIDS = 0x56 + NL80211_ATTR_MAX_NUM_SCAN_SSIDS = 0x2b + NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS = 0xde + NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS = 0x7b + NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION = 0x6f + NL80211_ATTR_MAX_SCAN_IE_LEN = 0x38 + NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL = 0xdf + NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS = 0xe0 + NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN = 0x7c + NL80211_ATTR_MBSSID_CONFIG = 0x132 + NL80211_ATTR_MBSSID_ELEMS = 0x133 + NL80211_ATTR_MCAST_RATE = 0x6b + NL80211_ATTR_MDID = 0xb1 + NL80211_ATTR_MEASUREMENT_DURATION = 0xeb + NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY = 0xec + NL80211_ATTR_MESH_CONFIG = 0x23 + NL80211_ATTR_MESH_ID = 0x18 + NL80211_ATTR_MESH_PEER_AID = 0xed + NL80211_ATTR_MESH_SETUP = 0x70 + NL80211_ATTR_MGMT_SUBTYPE = 0x29 + NL80211_ATTR_MLD_ADDR = 0x13a + NL80211_ATTR_MLD_CAPA_AND_OPS = 0x13e + NL80211_ATTR_MLO_LINK_DISABLED = 0x146 + NL80211_ATTR_MLO_LINK_ID = 0x139 + NL80211_ATTR_MLO_LINKS = 0x138 + NL80211_ATTR_MLO_SUPPORT = 0x13b + NL80211_ATTR_MLO_TTLM_DLINK = 0x148 + NL80211_ATTR_MLO_TTLM_ULINK = 0x149 + NL80211_ATTR_MNTR_FLAGS = 0x17 + NL80211_ATTR_MPATH_INFO = 0x1b + NL80211_ATTR_MPATH_NEXT_HOP = 0x1a + NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED = 0xf4 + NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR = 0xe8 + NL80211_ATTR_MU_MIMO_GROUP_DATA = 0xe7 + NL80211_ATTR_NAN_FUNC = 0xf0 + NL80211_ATTR_NAN_MASTER_PREF = 0xee + NL80211_ATTR_NAN_MATCH = 0xf1 + NL80211_ATTR_NETNS_FD = 0xdb + NL80211_ATTR_NOACK_MAP = 0x95 + NL80211_ATTR_NSS = 0x106 + NL80211_ATTR_OBSS_COLOR_BITMAP = 0x12e + NL80211_ATTR_OFFCHANNEL_TX_OK = 0x6c + NL80211_ATTR_OPER_CLASS = 0xd6 + NL80211_ATTR_OPMODE_NOTIF = 0xc2 + NL80211_ATTR_P2P_CTWINDOW = 0xa2 + NL80211_ATTR_P2P_OPPPS = 0xa3 + NL80211_ATTR_PAD = 0xe5 + NL80211_ATTR_PBSS = 0xe2 + NL80211_ATTR_PEER_AID = 0xb5 + NL80211_ATTR_PEER_MEASUREMENTS = 0x111 + NL80211_ATTR_PID = 0x52 + NL80211_ATTR_PMK = 0xfe + NL80211_ATTR_PMKID = 0x55 + NL80211_ATTR_PMK_LIFETIME = 0x11f + NL80211_ATTR_PMKR0_NAME = 0x102 + NL80211_ATTR_PMK_REAUTH_THRESHOLD = 0x120 + NL80211_ATTR_PMKSA_CANDIDATE = 0x86 + NL80211_ATTR_PORT_AUTHORIZED = 0x103 + NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN = 0x5 + NL80211_ATTR_POWER_RULE_MAX_EIRP = 0x6 + NL80211_ATTR_POWER_RULE_PSD = 0x8 + NL80211_ATTR_PREV_BSSID = 0x4f + NL80211_ATTR_PRIVACY = 0x46 + NL80211_ATTR_PROBE_RESP = 0x91 + NL80211_ATTR_PROBE_RESP_OFFLOAD = 0x90 + NL80211_ATTR_PROTOCOL_FEATURES = 0xad + NL80211_ATTR_PS_STATE = 0x5d + NL80211_ATTR_PUNCT_BITMAP = 0x142 + NL80211_ATTR_QOS_MAP = 0xc7 + NL80211_ATTR_RADAR_BACKGROUND = 0x134 + NL80211_ATTR_RADAR_EVENT = 0xa8 + NL80211_ATTR_REASON_CODE = 0x36 + NL80211_ATTR_RECEIVE_MULTICAST = 0x121 + NL80211_ATTR_RECONNECT_REQUESTED = 0x12b + NL80211_ATTR_REG_ALPHA2 = 0x21 + NL80211_ATTR_REG_INDOOR = 0xdd + NL80211_ATTR_REG_INITIATOR = 0x30 + NL80211_ATTR_REG_RULE_FLAGS = 0x1 + NL80211_ATTR_REG_RULES = 0x22 + NL80211_ATTR_REG_TYPE = 0x31 + NL80211_ATTR_REKEY_DATA = 0x7a + NL80211_ATTR_REQ_IE = 0x4d + NL80211_ATTR_RESP_IE = 0x4e + NL80211_ATTR_ROAM_SUPPORT = 0x83 + NL80211_ATTR_RX_FRAME_TYPES = 0x64 + NL80211_ATTR_RX_HW_TIMESTAMP = 0x140 + NL80211_ATTR_RXMGMT_FLAGS = 0xbc + NL80211_ATTR_RX_SIGNAL_DBM = 0x97 + NL80211_ATTR_S1G_CAPABILITY = 0x128 + NL80211_ATTR_S1G_CAPABILITY_MASK = 0x129 + NL80211_ATTR_SAE_DATA = 0x9c + NL80211_ATTR_SAE_PASSWORD = 0x115 + NL80211_ATTR_SAE_PWE = 0x12a + NL80211_ATTR_SAR_SPEC = 0x12c + NL80211_ATTR_SCAN_FLAGS = 0x9e + NL80211_ATTR_SCAN_FREQ_KHZ = 0x124 + NL80211_ATTR_SCAN_FREQUENCIES = 0x2c + NL80211_ATTR_SCAN_GENERATION = 0x2e + NL80211_ATTR_SCAN_SSIDS = 0x2d + NL80211_ATTR_SCAN_START_TIME_TSF_BSSID = 0xea + NL80211_ATTR_SCAN_START_TIME_TSF = 0xe9 + NL80211_ATTR_SCAN_SUPP_RATES = 0x7d + NL80211_ATTR_SCHED_SCAN_DELAY = 0xdc + NL80211_ATTR_SCHED_SCAN_INTERVAL = 0x77 + NL80211_ATTR_SCHED_SCAN_MATCH = 0x84 + NL80211_ATTR_SCHED_SCAN_MATCH_SSID = 0x1 + NL80211_ATTR_SCHED_SCAN_MAX_REQS = 0x100 + NL80211_ATTR_SCHED_SCAN_MULTI = 0xff + NL80211_ATTR_SCHED_SCAN_PLANS = 0xe1 + NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI = 0xf6 + NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST = 0xf7 + NL80211_ATTR_SMPS_MODE = 0xd5 + NL80211_ATTR_SOCKET_OWNER = 0xcc + NL80211_ATTR_SOFTWARE_IFTYPES = 0x79 + NL80211_ATTR_SPLIT_WIPHY_DUMP = 0xae + NL80211_ATTR_SSID = 0x34 + NL80211_ATTR_STA_AID = 0x10 + NL80211_ATTR_STA_CAPABILITY = 0xab + NL80211_ATTR_STA_EXT_CAPABILITY = 0xac + NL80211_ATTR_STA_FLAGS2 = 0x43 + NL80211_ATTR_STA_FLAGS = 0x11 + NL80211_ATTR_STA_INFO = 0x15 + NL80211_ATTR_STA_LISTEN_INTERVAL = 0x12 + NL80211_ATTR_STA_PLINK_ACTION = 0x19 + NL80211_ATTR_STA_PLINK_STATE = 0x74 + NL80211_ATTR_STA_SUPPORTED_CHANNELS = 0xbd + NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES = 0xbe + NL80211_ATTR_STA_SUPPORTED_RATES = 0x13 + NL80211_ATTR_STA_SUPPORT_P2P_PS = 0xe4 + NL80211_ATTR_STATUS_CODE = 0x48 + NL80211_ATTR_STA_TX_POWER = 0x114 + NL80211_ATTR_STA_TX_POWER_SETTING = 0x113 + NL80211_ATTR_STA_VLAN = 0x14 + NL80211_ATTR_STA_WME = 0x81 + NL80211_ATTR_SUPPORT_10_MHZ = 0xc1 + NL80211_ATTR_SUPPORT_5_MHZ = 0xc0 + NL80211_ATTR_SUPPORT_AP_UAPSD = 0x82 + NL80211_ATTR_SUPPORTED_COMMANDS = 0x32 + NL80211_ATTR_SUPPORTED_IFTYPES = 0x20 + NL80211_ATTR_SUPPORT_IBSS_RSN = 0x68 + NL80211_ATTR_SUPPORT_MESH_AUTH = 0x73 + NL80211_ATTR_SURVEY_INFO = 0x54 + NL80211_ATTR_SURVEY_RADIO_STATS = 0xda + NL80211_ATTR_TD_BITMAP = 0x141 + NL80211_ATTR_TDLS_ACTION = 0x88 + NL80211_ATTR_TDLS_DIALOG_TOKEN = 0x89 + NL80211_ATTR_TDLS_EXTERNAL_SETUP = 0x8c + NL80211_ATTR_TDLS_INITIATOR = 0xcf + NL80211_ATTR_TDLS_OPERATION = 0x8a + NL80211_ATTR_TDLS_PEER_CAPABILITY = 0xcb + NL80211_ATTR_TDLS_SUPPORT = 0x8b + NL80211_ATTR_TESTDATA = 0x45 + NL80211_ATTR_TID_CONFIG = 0x11d + NL80211_ATTR_TIMED_OUT = 0x41 + NL80211_ATTR_TIMEOUT = 0x110 + NL80211_ATTR_TIMEOUT_REASON = 0xf8 + NL80211_ATTR_TSID = 0xd2 + NL80211_ATTR_TWT_RESPONDER = 0x116 + NL80211_ATTR_TX_FRAME_TYPES = 0x63 + NL80211_ATTR_TX_HW_TIMESTAMP = 0x13f + NL80211_ATTR_TX_NO_CCK_RATE = 0x87 + NL80211_ATTR_TXQ_LIMIT = 0x10a + NL80211_ATTR_TXQ_MEMORY_LIMIT = 0x10b + NL80211_ATTR_TXQ_QUANTUM = 0x10c + NL80211_ATTR_TXQ_STATS = 0x109 + NL80211_ATTR_TX_RATES = 0x5a + NL80211_ATTR_UNSOL_BCAST_PROBE_RESP = 0x127 + NL80211_ATTR_UNSPEC = 0x0 + NL80211_ATTR_USE_MFP = 0x42 + NL80211_ATTR_USER_PRIO = 0xd3 + NL80211_ATTR_USER_REG_HINT_TYPE = 0x9a + NL80211_ATTR_USE_RRM = 0xd0 + NL80211_ATTR_VENDOR_DATA = 0xc5 + NL80211_ATTR_VENDOR_EVENTS = 0xc6 + NL80211_ATTR_VENDOR_ID = 0xc3 + NL80211_ATTR_VENDOR_SUBCMD = 0xc4 + NL80211_ATTR_VHT_CAPABILITY = 0x9d + NL80211_ATTR_VHT_CAPABILITY_MASK = 0xb0 + NL80211_ATTR_VLAN_ID = 0x11a + NL80211_ATTR_WANT_1X_4WAY_HS = 0x101 + NL80211_ATTR_WDEV = 0x99 + NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX = 0x72 + NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX = 0x71 + NL80211_ATTR_WIPHY_ANTENNA_RX = 0x6a + NL80211_ATTR_WIPHY_ANTENNA_TX = 0x69 + NL80211_ATTR_WIPHY_BANDS = 0x16 + NL80211_ATTR_WIPHY_CHANNEL_TYPE = 0x27 + NL80211_ATTR_WIPHY = 0x1 + NL80211_ATTR_WIPHY_COVERAGE_CLASS = 0x59 + NL80211_ATTR_WIPHY_DYN_ACK = 0xd1 + NL80211_ATTR_WIPHY_EDMG_BW_CONFIG = 0x119 + NL80211_ATTR_WIPHY_EDMG_CHANNELS = 0x118 + NL80211_ATTR_WIPHY_FRAG_THRESHOLD = 0x3f + NL80211_ATTR_WIPHY_FREQ = 0x26 + NL80211_ATTR_WIPHY_FREQ_HINT = 0xc9 + NL80211_ATTR_WIPHY_FREQ_OFFSET = 0x122 + NL80211_ATTR_WIPHY_INTERFACE_COMBINATIONS = 0x14c + NL80211_ATTR_WIPHY_NAME = 0x2 + NL80211_ATTR_WIPHY_RADIOS = 0x14b + NL80211_ATTR_WIPHY_RETRY_LONG = 0x3e + NL80211_ATTR_WIPHY_RETRY_SHORT = 0x3d + NL80211_ATTR_WIPHY_RTS_THRESHOLD = 0x40 + NL80211_ATTR_WIPHY_SELF_MANAGED_REG = 0xd8 + NL80211_ATTR_WIPHY_TX_POWER_LEVEL = 0x62 + NL80211_ATTR_WIPHY_TX_POWER_SETTING = 0x61 + NL80211_ATTR_WIPHY_TXQ_PARAMS = 0x25 + NL80211_ATTR_WOWLAN_TRIGGERS = 0x75 + NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED = 0x76 + NL80211_ATTR_WPA_VERSIONS = 0x4b + NL80211_AUTHTYPE_AUTOMATIC = 0x8 + NL80211_AUTHTYPE_FILS_PK = 0x7 + NL80211_AUTHTYPE_FILS_SK = 0x5 + NL80211_AUTHTYPE_FILS_SK_PFS = 0x6 + NL80211_AUTHTYPE_FT = 0x2 + NL80211_AUTHTYPE_MAX = 0x7 + NL80211_AUTHTYPE_NETWORK_EAP = 0x3 + NL80211_AUTHTYPE_OPEN_SYSTEM = 0x0 + NL80211_AUTHTYPE_SAE = 0x4 + NL80211_AUTHTYPE_SHARED_KEY = 0x1 + NL80211_BAND_2GHZ = 0x0 + NL80211_BAND_5GHZ = 0x1 + NL80211_BAND_60GHZ = 0x2 + NL80211_BAND_6GHZ = 0x3 + NL80211_BAND_ATTR_EDMG_BW_CONFIG = 0xb + NL80211_BAND_ATTR_EDMG_CHANNELS = 0xa + NL80211_BAND_ATTR_FREQS = 0x1 + NL80211_BAND_ATTR_HT_AMPDU_DENSITY = 0x6 + NL80211_BAND_ATTR_HT_AMPDU_FACTOR = 0x5 + NL80211_BAND_ATTR_HT_CAPA = 0x4 + NL80211_BAND_ATTR_HT_MCS_SET = 0x3 + NL80211_BAND_ATTR_IFTYPE_DATA = 0x9 + NL80211_BAND_ATTR_MAX = 0xd + NL80211_BAND_ATTR_RATES = 0x2 + NL80211_BAND_ATTR_S1G_CAPA = 0xd + NL80211_BAND_ATTR_S1G_MCS_NSS_SET = 0xc + NL80211_BAND_ATTR_VHT_CAPA = 0x8 + NL80211_BAND_ATTR_VHT_MCS_SET = 0x7 + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC = 0x8 + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET = 0xa + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY = 0x9 + NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE = 0xb + NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA = 0x6 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC = 0x2 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET = 0x4 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY = 0x3 + NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE = 0x5 + NL80211_BAND_IFTYPE_ATTR_IFTYPES = 0x1 + NL80211_BAND_IFTYPE_ATTR_MAX = 0xb + NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS = 0x7 + NL80211_BAND_LC = 0x5 + NL80211_BAND_S1GHZ = 0x4 + NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE = 0x2 + NL80211_BITRATE_ATTR_MAX = 0x2 + NL80211_BITRATE_ATTR_RATE = 0x1 + NL80211_BSS_BEACON_IES = 0xb + NL80211_BSS_BEACON_INTERVAL = 0x4 + NL80211_BSS_BEACON_TSF = 0xd + NL80211_BSS_BSSID = 0x1 + NL80211_BSS_CANNOT_USE_6GHZ_PWR_MISMATCH = 0x2 + NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY = 0x1 + NL80211_BSS_CANNOT_USE_REASONS = 0x18 + NL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH = 0x2 + NL80211_BSS_CAPABILITY = 0x5 + NL80211_BSS_CHAIN_SIGNAL = 0x13 + NL80211_BSS_CHAN_WIDTH_10 = 0x1 + NL80211_BSS_CHAN_WIDTH_1 = 0x3 + NL80211_BSS_CHAN_WIDTH_20 = 0x0 + NL80211_BSS_CHAN_WIDTH_2 = 0x4 + NL80211_BSS_CHAN_WIDTH_5 = 0x2 + NL80211_BSS_CHAN_WIDTH = 0xc + NL80211_BSS_FREQUENCY = 0x2 + NL80211_BSS_FREQUENCY_OFFSET = 0x14 + NL80211_BSS_INFORMATION_ELEMENTS = 0x6 + NL80211_BSS_LAST_SEEN_BOOTTIME = 0xf + NL80211_BSS_MAX = 0x18 + NL80211_BSS_MLD_ADDR = 0x16 + NL80211_BSS_MLO_LINK_ID = 0x15 + NL80211_BSS_PAD = 0x10 + NL80211_BSS_PARENT_BSSID = 0x12 + NL80211_BSS_PARENT_TSF = 0x11 + NL80211_BSS_PRESP_DATA = 0xe + NL80211_BSS_SEEN_MS_AGO = 0xa + NL80211_BSS_SELECT_ATTR_BAND_PREF = 0x2 + NL80211_BSS_SELECT_ATTR_MAX = 0x3 + NL80211_BSS_SELECT_ATTR_RSSI_ADJUST = 0x3 + NL80211_BSS_SELECT_ATTR_RSSI = 0x1 + NL80211_BSS_SIGNAL_MBM = 0x7 + NL80211_BSS_SIGNAL_UNSPEC = 0x8 + NL80211_BSS_STATUS_ASSOCIATED = 0x1 + NL80211_BSS_STATUS_AUTHENTICATED = 0x0 + NL80211_BSS_STATUS = 0x9 + NL80211_BSS_STATUS_IBSS_JOINED = 0x2 + NL80211_BSS_TSF = 0x3 + NL80211_BSS_USE_FOR = 0x17 + NL80211_BSS_USE_FOR_MLD_LINK = 0x2 + NL80211_BSS_USE_FOR_NORMAL = 0x1 + NL80211_CHAN_HT20 = 0x1 + NL80211_CHAN_HT40MINUS = 0x2 + NL80211_CHAN_HT40PLUS = 0x3 + NL80211_CHAN_NO_HT = 0x0 + NL80211_CHAN_WIDTH_10 = 0x7 + NL80211_CHAN_WIDTH_160 = 0x5 + NL80211_CHAN_WIDTH_16 = 0xc + NL80211_CHAN_WIDTH_1 = 0x8 + NL80211_CHAN_WIDTH_20 = 0x1 + NL80211_CHAN_WIDTH_20_NOHT = 0x0 + NL80211_CHAN_WIDTH_2 = 0x9 + NL80211_CHAN_WIDTH_320 = 0xd + NL80211_CHAN_WIDTH_40 = 0x2 + NL80211_CHAN_WIDTH_4 = 0xa + NL80211_CHAN_WIDTH_5 = 0x6 + NL80211_CHAN_WIDTH_80 = 0x3 + NL80211_CHAN_WIDTH_80P80 = 0x4 + NL80211_CHAN_WIDTH_8 = 0xb + NL80211_CMD_ABORT_SCAN = 0x72 + NL80211_CMD_ACTION = 0x3b + NL80211_CMD_ACTION_TX_STATUS = 0x3c + NL80211_CMD_ADD_LINK = 0x94 + NL80211_CMD_ADD_LINK_STA = 0x96 + NL80211_CMD_ADD_NAN_FUNCTION = 0x75 + NL80211_CMD_ADD_TX_TS = 0x69 + NL80211_CMD_ASSOC_COMEBACK = 0x93 + NL80211_CMD_ASSOCIATE = 0x26 + NL80211_CMD_AUTHENTICATE = 0x25 + NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL = 0x38 + NL80211_CMD_CHANGE_NAN_CONFIG = 0x77 + NL80211_CMD_CHANNEL_SWITCH = 0x66 + NL80211_CMD_CH_SWITCH_NOTIFY = 0x58 + NL80211_CMD_CH_SWITCH_STARTED_NOTIFY = 0x6e + NL80211_CMD_COLOR_CHANGE_ABORTED = 0x90 + NL80211_CMD_COLOR_CHANGE_COMPLETED = 0x91 + NL80211_CMD_COLOR_CHANGE_REQUEST = 0x8e + NL80211_CMD_COLOR_CHANGE_STARTED = 0x8f + NL80211_CMD_CONNECT = 0x2e + NL80211_CMD_CONN_FAILED = 0x5b + NL80211_CMD_CONTROL_PORT_FRAME = 0x81 + NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS = 0x8b + NL80211_CMD_CRIT_PROTOCOL_START = 0x62 + NL80211_CMD_CRIT_PROTOCOL_STOP = 0x63 + NL80211_CMD_DEAUTHENTICATE = 0x27 + NL80211_CMD_DEL_BEACON = 0x10 + NL80211_CMD_DEL_INTERFACE = 0x8 + NL80211_CMD_DEL_KEY = 0xc + NL80211_CMD_DEL_MPATH = 0x18 + NL80211_CMD_DEL_NAN_FUNCTION = 0x76 + NL80211_CMD_DEL_PMK = 0x7c + NL80211_CMD_DEL_PMKSA = 0x35 + NL80211_CMD_DEL_STATION = 0x14 + NL80211_CMD_DEL_TX_TS = 0x6a + NL80211_CMD_DEL_WIPHY = 0x4 + NL80211_CMD_DISASSOCIATE = 0x28 + NL80211_CMD_DISCONNECT = 0x30 + NL80211_CMD_EXTERNAL_AUTH = 0x7f + NL80211_CMD_FLUSH_PMKSA = 0x36 + NL80211_CMD_FRAME = 0x3b + NL80211_CMD_FRAME_TX_STATUS = 0x3c + NL80211_CMD_FRAME_WAIT_CANCEL = 0x43 + NL80211_CMD_FT_EVENT = 0x61 + NL80211_CMD_GET_BEACON = 0xd + NL80211_CMD_GET_COALESCE = 0x64 + NL80211_CMD_GET_FTM_RESPONDER_STATS = 0x82 + NL80211_CMD_GET_INTERFACE = 0x5 + NL80211_CMD_GET_KEY = 0x9 + NL80211_CMD_GET_MESH_CONFIG = 0x1c + NL80211_CMD_GET_MESH_PARAMS = 0x1c + NL80211_CMD_GET_MPATH = 0x15 + NL80211_CMD_GET_MPP = 0x6b + NL80211_CMD_GET_POWER_SAVE = 0x3e + NL80211_CMD_GET_PROTOCOL_FEATURES = 0x5f + NL80211_CMD_GET_REG = 0x1f + NL80211_CMD_GET_SCAN = 0x20 + NL80211_CMD_GET_STATION = 0x11 + NL80211_CMD_GET_SURVEY = 0x32 + NL80211_CMD_GET_WIPHY = 0x1 + NL80211_CMD_GET_WOWLAN = 0x49 + NL80211_CMD_JOIN_IBSS = 0x2b + NL80211_CMD_JOIN_MESH = 0x44 + NL80211_CMD_JOIN_OCB = 0x6c + NL80211_CMD_LEAVE_IBSS = 0x2c + NL80211_CMD_LEAVE_MESH = 0x45 + NL80211_CMD_LEAVE_OCB = 0x6d + NL80211_CMD_LINKS_REMOVED = 0x9a + NL80211_CMD_MAX = 0x9d + NL80211_CMD_MICHAEL_MIC_FAILURE = 0x29 + NL80211_CMD_MODIFY_LINK_STA = 0x97 + NL80211_CMD_NAN_MATCH = 0x78 + NL80211_CMD_NEW_BEACON = 0xf + NL80211_CMD_NEW_INTERFACE = 0x7 + NL80211_CMD_NEW_KEY = 0xb + NL80211_CMD_NEW_MPATH = 0x17 + NL80211_CMD_NEW_PEER_CANDIDATE = 0x48 + NL80211_CMD_NEW_SCAN_RESULTS = 0x22 + NL80211_CMD_NEW_STATION = 0x13 + NL80211_CMD_NEW_SURVEY_RESULTS = 0x33 + NL80211_CMD_NEW_WIPHY = 0x3 + NL80211_CMD_NOTIFY_CQM = 0x40 + NL80211_CMD_NOTIFY_RADAR = 0x86 + NL80211_CMD_OBSS_COLOR_COLLISION = 0x8d + NL80211_CMD_PEER_MEASUREMENT_COMPLETE = 0x85 + NL80211_CMD_PEER_MEASUREMENT_RESULT = 0x84 + NL80211_CMD_PEER_MEASUREMENT_START = 0x83 + NL80211_CMD_PMKSA_CANDIDATE = 0x50 + NL80211_CMD_PORT_AUTHORIZED = 0x7d + NL80211_CMD_PROBE_CLIENT = 0x54 + NL80211_CMD_PROBE_MESH_LINK = 0x88 + NL80211_CMD_RADAR_DETECT = 0x5e + NL80211_CMD_REG_BEACON_HINT = 0x2a + NL80211_CMD_REG_CHANGE = 0x24 + NL80211_CMD_REGISTER_ACTION = 0x3a + NL80211_CMD_REGISTER_BEACONS = 0x55 + NL80211_CMD_REGISTER_FRAME = 0x3a + NL80211_CMD_RELOAD_REGDB = 0x7e + NL80211_CMD_REMAIN_ON_CHANNEL = 0x37 + NL80211_CMD_REMOVE_LINK = 0x95 + NL80211_CMD_REMOVE_LINK_STA = 0x98 + NL80211_CMD_REQ_SET_REG = 0x1b + NL80211_CMD_ROAM = 0x2f + NL80211_CMD_SCAN_ABORTED = 0x23 + NL80211_CMD_SCHED_SCAN_RESULTS = 0x4d + NL80211_CMD_SCHED_SCAN_STOPPED = 0x4e + NL80211_CMD_SET_BEACON = 0xe + NL80211_CMD_SET_BSS = 0x19 + NL80211_CMD_SET_CHANNEL = 0x41 + NL80211_CMD_SET_COALESCE = 0x65 + NL80211_CMD_SET_CQM = 0x3f + NL80211_CMD_SET_FILS_AAD = 0x92 + NL80211_CMD_SET_HW_TIMESTAMP = 0x99 + NL80211_CMD_SET_INTERFACE = 0x6 + NL80211_CMD_SET_KEY = 0xa + NL80211_CMD_SET_MAC_ACL = 0x5d + NL80211_CMD_SET_MCAST_RATE = 0x5c + NL80211_CMD_SET_MESH_CONFIG = 0x1d + NL80211_CMD_SET_MESH_PARAMS = 0x1d + NL80211_CMD_SET_MGMT_EXTRA_IE = 0x1e + NL80211_CMD_SET_MPATH = 0x16 + NL80211_CMD_SET_MULTICAST_TO_UNICAST = 0x79 + NL80211_CMD_SET_NOACK_MAP = 0x57 + NL80211_CMD_SET_PMK = 0x7b + NL80211_CMD_SET_PMKSA = 0x34 + NL80211_CMD_SET_POWER_SAVE = 0x3d + NL80211_CMD_SET_QOS_MAP = 0x68 + NL80211_CMD_SET_REG = 0x1a + NL80211_CMD_SET_REKEY_OFFLOAD = 0x4f + NL80211_CMD_SET_SAR_SPECS = 0x8c + NL80211_CMD_SET_STATION = 0x12 + NL80211_CMD_SET_TID_CONFIG = 0x89 + NL80211_CMD_SET_TID_TO_LINK_MAPPING = 0x9b + NL80211_CMD_SET_TX_BITRATE_MASK = 0x39 + NL80211_CMD_SET_WDS_PEER = 0x42 + NL80211_CMD_SET_WIPHY = 0x2 + NL80211_CMD_SET_WIPHY_NETNS = 0x31 + NL80211_CMD_SET_WOWLAN = 0x4a + NL80211_CMD_STA_OPMODE_CHANGED = 0x80 + NL80211_CMD_START_AP = 0xf + NL80211_CMD_START_NAN = 0x73 + NL80211_CMD_START_P2P_DEVICE = 0x59 + NL80211_CMD_START_SCHED_SCAN = 0x4b + NL80211_CMD_STOP_AP = 0x10 + NL80211_CMD_STOP_NAN = 0x74 + NL80211_CMD_STOP_P2P_DEVICE = 0x5a + NL80211_CMD_STOP_SCHED_SCAN = 0x4c + NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH = 0x70 + NL80211_CMD_TDLS_CHANNEL_SWITCH = 0x6f + NL80211_CMD_TDLS_MGMT = 0x52 + NL80211_CMD_TDLS_OPER = 0x51 + NL80211_CMD_TESTMODE = 0x2d + NL80211_CMD_TRIGGER_SCAN = 0x21 + NL80211_CMD_UNEXPECTED_4ADDR_FRAME = 0x56 + NL80211_CMD_UNEXPECTED_FRAME = 0x53 + NL80211_CMD_UNPROT_BEACON = 0x8a + NL80211_CMD_UNPROT_DEAUTHENTICATE = 0x46 + NL80211_CMD_UNPROT_DISASSOCIATE = 0x47 + NL80211_CMD_UNSPEC = 0x0 + NL80211_CMD_UPDATE_CONNECT_PARAMS = 0x7a + NL80211_CMD_UPDATE_FT_IES = 0x60 + NL80211_CMD_UPDATE_OWE_INFO = 0x87 + NL80211_CMD_VENDOR = 0x67 + NL80211_CMD_WIPHY_REG_CHANGE = 0x71 + NL80211_COALESCE_CONDITION_MATCH = 0x0 + NL80211_COALESCE_CONDITION_NO_MATCH = 0x1 + NL80211_CONN_FAIL_BLOCKED_CLIENT = 0x1 + NL80211_CONN_FAIL_MAX_CLIENTS = 0x0 + NL80211_CQM_RSSI_BEACON_LOSS_EVENT = 0x2 + NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH = 0x1 + NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW = 0x0 + NL80211_CQM_TXE_MAX_INTVL = 0x708 + NL80211_CRIT_PROTO_APIPA = 0x3 + NL80211_CRIT_PROTO_DHCP = 0x1 + NL80211_CRIT_PROTO_EAPOL = 0x2 + NL80211_CRIT_PROTO_MAX_DURATION = 0x1388 + NL80211_CRIT_PROTO_UNSPEC = 0x0 + NL80211_DFS_AVAILABLE = 0x2 + NL80211_DFS_ETSI = 0x2 + NL80211_DFS_FCC = 0x1 + NL80211_DFS_JP = 0x3 + NL80211_DFS_UNAVAILABLE = 0x1 + NL80211_DFS_UNSET = 0x0 + NL80211_DFS_USABLE = 0x0 + NL80211_EDMG_BW_CONFIG_MAX = 0xf + NL80211_EDMG_BW_CONFIG_MIN = 0x4 + NL80211_EDMG_CHANNELS_MAX = 0x3c + NL80211_EDMG_CHANNELS_MIN = 0x1 + NL80211_EHT_MAX_CAPABILITY_LEN = 0x33 + NL80211_EHT_MIN_CAPABILITY_LEN = 0xd + NL80211_EXTERNAL_AUTH_ABORT = 0x1 + NL80211_EXTERNAL_AUTH_START = 0x0 + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK = 0x32 + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X = 0x10 + NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK = 0xf + NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP = 0x12 + NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT = 0x1b + NL80211_EXT_FEATURE_AIRTIME_FAIRNESS = 0x21 + NL80211_EXT_FEATURE_AP_PMKSA_CACHING = 0x22 + NL80211_EXT_FEATURE_AQL = 0x28 + NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA = 0x40 + NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT = 0x2e + NL80211_EXT_FEATURE_BEACON_PROTECTION = 0x29 + NL80211_EXT_FEATURE_BEACON_RATE_HE = 0x36 + NL80211_EXT_FEATURE_BEACON_RATE_HT = 0x7 + NL80211_EXT_FEATURE_BEACON_RATE_LEGACY = 0x6 + NL80211_EXT_FEATURE_BEACON_RATE_VHT = 0x8 + NL80211_EXT_FEATURE_BSS_COLOR = 0x3a + NL80211_EXT_FEATURE_BSS_PARENT_TSF = 0x4 + NL80211_EXT_FEATURE_CAN_REPLACE_PTK0 = 0x1f + NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH = 0x2a + NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211 = 0x1a + NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = 0x30 + NL80211_EXT_FEATURE_CQM_RSSI_LIST = 0xd + NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = 0x1b + NL80211_EXT_FEATURE_DEL_IBSS_STA = 0x2c + NL80211_EXT_FEATURE_DFS_CONCURRENT = 0x43 + NL80211_EXT_FEATURE_DFS_OFFLOAD = 0x19 + NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER = 0x20 + NL80211_EXT_FEATURE_EXT_KEY_ID = 0x24 + NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD = 0x3b + NL80211_EXT_FEATURE_FILS_DISCOVERY = 0x34 + NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME = 0x11 + NL80211_EXT_FEATURE_FILS_SK_OFFLOAD = 0xe + NL80211_EXT_FEATURE_FILS_STA = 0x9 + NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN = 0x18 + NL80211_EXT_FEATURE_LOW_POWER_SCAN = 0x17 + NL80211_EXT_FEATURE_LOW_SPAN_SCAN = 0x16 + NL80211_EXT_FEATURE_MFP_OPTIONAL = 0x15 + NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA = 0xa + NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED = 0xb + NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS = 0x2d + NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER = 0x2 + NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x14 + NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE = 0x13 + NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION = 0x31 + NL80211_EXT_FEATURE_OWE_OFFLOAD_AP = 0x42 + NL80211_EXT_FEATURE_OWE_OFFLOAD = 0x41 + NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE = 0x3d + NL80211_EXT_FEATURE_PROTECTED_TWT = 0x2b + NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE = 0x39 + NL80211_EXT_FEATURE_PUNCT = 0x3e + NL80211_EXT_FEATURE_RADAR_BACKGROUND = 0x3c + NL80211_EXT_FEATURE_RRM = 0x1 + NL80211_EXT_FEATURE_SAE_OFFLOAD_AP = 0x33 + NL80211_EXT_FEATURE_SAE_OFFLOAD = 0x26 + NL80211_EXT_FEATURE_SCAN_FREQ_KHZ = 0x2f + NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT = 0x1e + NL80211_EXT_FEATURE_SCAN_RANDOM_SN = 0x1d + NL80211_EXT_FEATURE_SCAN_START_TIME = 0x3 + NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23 + NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI = 0xc + NL80211_EXT_FEATURE_SECURE_LTF = 0x37 + NL80211_EXT_FEATURE_SECURE_NAN = 0x3f + NL80211_EXT_FEATURE_SECURE_RTT = 0x38 + NL80211_EXT_FEATURE_SET_SCAN_DWELL = 0x5 + NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT = 0x44 + NL80211_EXT_FEATURE_STA_TX_PWR = 0x25 + NL80211_EXT_FEATURE_TXQS = 0x1c + NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP = 0x35 + NL80211_EXT_FEATURE_VHT_IBSS = 0x0 + NL80211_EXT_FEATURE_VLAN_OFFLOAD = 0x27 + NL80211_FEATURE_ACKTO_ESTIMATION = 0x800000 + NL80211_FEATURE_ACTIVE_MONITOR = 0x20000 + NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 0x4000 + NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = 0x40000 + NL80211_FEATURE_AP_SCAN = 0x100 + NL80211_FEATURE_CELL_BASE_REG_HINTS = 0x8 + NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES = 0x80000 + NL80211_FEATURE_DYNAMIC_SMPS = 0x2000000 + NL80211_FEATURE_FULL_AP_CLIENT_STATE = 0x8000 + NL80211_FEATURE_HT_IBSS = 0x2 + NL80211_FEATURE_INACTIVITY_TIMER = 0x4 + NL80211_FEATURE_LOW_PRIORITY_SCAN = 0x40 + NL80211_FEATURE_MAC_ON_CREATE = 0x8000000 + NL80211_FEATURE_ND_RANDOM_MAC_ADDR = 0x80000000 + NL80211_FEATURE_NEED_OBSS_SCAN = 0x400 + NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 0x10 + NL80211_FEATURE_P2P_GO_CTWIN = 0x800 + NL80211_FEATURE_P2P_GO_OPPPS = 0x1000 + NL80211_FEATURE_QUIET = 0x200000 + NL80211_FEATURE_SAE = 0x20 + NL80211_FEATURE_SCAN_FLUSH = 0x80 + NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR = 0x20000000 + NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = 0x40000000 + NL80211_FEATURE_SK_TX_STATUS = 0x1 + NL80211_FEATURE_STATIC_SMPS = 0x1000000 + NL80211_FEATURE_SUPPORTS_WMM_ADMISSION = 0x4000000 + NL80211_FEATURE_TDLS_CHANNEL_SWITCH = 0x10000000 + NL80211_FEATURE_TX_POWER_INSERTION = 0x400000 + NL80211_FEATURE_USERSPACE_MPM = 0x10000 + NL80211_FEATURE_VIF_TXPOWER = 0x200 + NL80211_FEATURE_WFA_TPC_IE_IN_PROBES = 0x100000 + NL80211_FILS_DISCOVERY_ATTR_INT_MAX = 0x2 + NL80211_FILS_DISCOVERY_ATTR_INT_MIN = 0x1 + NL80211_FILS_DISCOVERY_ATTR_MAX = 0x3 + NL80211_FILS_DISCOVERY_ATTR_TMPL = 0x3 + NL80211_FILS_DISCOVERY_TMPL_MIN_LEN = 0x2a + NL80211_FREQUENCY_ATTR_16MHZ = 0x19 + NL80211_FREQUENCY_ATTR_1MHZ = 0x15 + NL80211_FREQUENCY_ATTR_2MHZ = 0x16 + NL80211_FREQUENCY_ATTR_4MHZ = 0x17 + NL80211_FREQUENCY_ATTR_8MHZ = 0x18 + NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP = 0x21 + NL80211_FREQUENCY_ATTR_CAN_MONITOR = 0x20 + NL80211_FREQUENCY_ATTR_DFS_CAC_TIME = 0xd + NL80211_FREQUENCY_ATTR_DFS_CONCURRENT = 0x1d + NL80211_FREQUENCY_ATTR_DFS_STATE = 0x7 + NL80211_FREQUENCY_ATTR_DFS_TIME = 0x8 + NL80211_FREQUENCY_ATTR_DISABLED = 0x2 + NL80211_FREQUENCY_ATTR_FREQ = 0x1 + NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf + NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe + NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf + NL80211_FREQUENCY_ATTR_MAX = 0x22 + NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 + NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 + NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc + NL80211_FREQUENCY_ATTR_NO_20MHZ = 0x10 + NL80211_FREQUENCY_ATTR_NO_320MHZ = 0x1a + NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_6GHZ_VLP_CLIENT = 0x1e + NL80211_FREQUENCY_ATTR_NO_80MHZ = 0xb + NL80211_FREQUENCY_ATTR_NO_EHT = 0x1b + NL80211_FREQUENCY_ATTR_NO_HE = 0x13 + NL80211_FREQUENCY_ATTR_NO_HT40_MINUS = 0x9 + NL80211_FREQUENCY_ATTR_NO_HT40_PLUS = 0xa + NL80211_FREQUENCY_ATTR_NO_IBSS = 0x3 + NL80211_FREQUENCY_ATTR_NO_IR = 0x3 + NL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT = 0x1f + NL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT = 0x1e + NL80211_FREQUENCY_ATTR_OFFSET = 0x14 + NL80211_FREQUENCY_ATTR_PASSIVE_SCAN = 0x3 + NL80211_FREQUENCY_ATTR_PSD = 0x1c + NL80211_FREQUENCY_ATTR_RADAR = 0x5 + NL80211_FREQUENCY_ATTR_WMM = 0x12 + NL80211_FTM_RESP_ATTR_CIVICLOC = 0x3 + NL80211_FTM_RESP_ATTR_ENABLED = 0x1 + NL80211_FTM_RESP_ATTR_LCI = 0x2 + NL80211_FTM_RESP_ATTR_MAX = 0x3 + NL80211_FTM_STATS_ASAP_NUM = 0x4 + NL80211_FTM_STATS_FAILED_NUM = 0x3 + NL80211_FTM_STATS_MAX = 0xa + NL80211_FTM_STATS_NON_ASAP_NUM = 0x5 + NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM = 0x9 + NL80211_FTM_STATS_PAD = 0xa + NL80211_FTM_STATS_PARTIAL_NUM = 0x2 + NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM = 0x8 + NL80211_FTM_STATS_SUCCESS_NUM = 0x1 + NL80211_FTM_STATS_TOTAL_DURATION_MSEC = 0x6 + NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM = 0x7 + NL80211_GENL_NAME = "nl80211" + NL80211_HE_BSS_COLOR_ATTR_COLOR = 0x1 + NL80211_HE_BSS_COLOR_ATTR_DISABLED = 0x2 + NL80211_HE_BSS_COLOR_ATTR_MAX = 0x3 + NL80211_HE_BSS_COLOR_ATTR_PARTIAL = 0x3 + NL80211_HE_MAX_CAPABILITY_LEN = 0x36 + NL80211_HE_MIN_CAPABILITY_LEN = 0x10 + NL80211_HE_NSS_MAX = 0x8 + NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP = 0x4 + NL80211_HE_OBSS_PD_ATTR_MAX = 0x6 + NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET = 0x2 + NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET = 0x1 + NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET = 0x3 + NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP = 0x5 + NL80211_HE_OBSS_PD_ATTR_SR_CTRL = 0x6 + NL80211_HIDDEN_SSID_NOT_IN_USE = 0x0 + NL80211_HIDDEN_SSID_ZERO_CONTENTS = 0x2 + NL80211_HIDDEN_SSID_ZERO_LEN = 0x1 + NL80211_HT_CAPABILITY_LEN = 0x1a + NL80211_IFACE_COMB_BI_MIN_GCD = 0x7 + NL80211_IFACE_COMB_LIMITS = 0x1 + NL80211_IFACE_COMB_MAXNUM = 0x2 + NL80211_IFACE_COMB_NUM_CHANNELS = 0x4 + NL80211_IFACE_COMB_RADAR_DETECT_REGIONS = 0x6 + NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS = 0x5 + NL80211_IFACE_COMB_STA_AP_BI_MATCH = 0x3 + NL80211_IFACE_COMB_UNSPEC = 0x0 + NL80211_IFACE_LIMIT_MAX = 0x1 + NL80211_IFACE_LIMIT_TYPES = 0x2 + NL80211_IFACE_LIMIT_UNSPEC = 0x0 + NL80211_IFTYPE_ADHOC = 0x1 + NL80211_IFTYPE_AKM_ATTR_IFTYPES = 0x1 + NL80211_IFTYPE_AKM_ATTR_MAX = 0x2 + NL80211_IFTYPE_AKM_ATTR_SUITES = 0x2 + NL80211_IFTYPE_AP = 0x3 + NL80211_IFTYPE_AP_VLAN = 0x4 + NL80211_IFTYPE_MAX = 0xc + NL80211_IFTYPE_MESH_POINT = 0x7 + NL80211_IFTYPE_MONITOR = 0x6 + NL80211_IFTYPE_NAN = 0xc + NL80211_IFTYPE_OCB = 0xb + NL80211_IFTYPE_P2P_CLIENT = 0x8 + NL80211_IFTYPE_P2P_DEVICE = 0xa + NL80211_IFTYPE_P2P_GO = 0x9 + NL80211_IFTYPE_STATION = 0x2 + NL80211_IFTYPE_UNSPECIFIED = 0x0 + NL80211_IFTYPE_WDS = 0x5 + NL80211_KCK_EXT_LEN_32 = 0x20 + NL80211_KCK_EXT_LEN = 0x18 + NL80211_KCK_LEN = 0x10 + NL80211_KEK_EXT_LEN = 0x20 + NL80211_KEK_LEN = 0x10 + NL80211_KEY_CIPHER = 0x3 + NL80211_KEY_DATA = 0x1 + NL80211_KEY_DEFAULT_BEACON = 0xa + NL80211_KEY_DEFAULT = 0x5 + NL80211_KEY_DEFAULT_MGMT = 0x6 + NL80211_KEY_DEFAULT_TYPE_MULTICAST = 0x2 + NL80211_KEY_DEFAULT_TYPES = 0x8 + NL80211_KEY_DEFAULT_TYPE_UNICAST = 0x1 + NL80211_KEY_IDX = 0x2 + NL80211_KEY_MAX = 0xa + NL80211_KEY_MODE = 0x9 + NL80211_KEY_NO_TX = 0x1 + NL80211_KEY_RX_TX = 0x0 + NL80211_KEY_SEQ = 0x4 + NL80211_KEY_SET_TX = 0x2 + NL80211_KEY_TYPE = 0x7 + NL80211_KEYTYPE_GROUP = 0x0 + NL80211_KEYTYPE_PAIRWISE = 0x1 + NL80211_KEYTYPE_PEERKEY = 0x2 + NL80211_MAX_NR_AKM_SUITES = 0x2 + NL80211_MAX_NR_CIPHER_SUITES = 0x5 + NL80211_MAX_SUPP_HT_RATES = 0x4d + NL80211_MAX_SUPP_RATES = 0x20 + NL80211_MAX_SUPP_REG_RULES = 0x80 + NL80211_MAX_SUPP_SELECTORS = 0x80 + NL80211_MBSSID_CONFIG_ATTR_EMA = 0x5 + NL80211_MBSSID_CONFIG_ATTR_INDEX = 0x3 + NL80211_MBSSID_CONFIG_ATTR_MAX = 0x6 + NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY = 0x2 + NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES = 0x1 + NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX = 0x4 + NL80211_MESHCONF_ATTR_MAX = 0x1f + NL80211_MESHCONF_AUTO_OPEN_PLINKS = 0x7 + NL80211_MESHCONF_AWAKE_WINDOW = 0x1b + NL80211_MESHCONF_CONFIRM_TIMEOUT = 0x2 + NL80211_MESHCONF_CONNECTED_TO_AS = 0x1f + NL80211_MESHCONF_CONNECTED_TO_GATE = 0x1d + NL80211_MESHCONF_ELEMENT_TTL = 0xf + NL80211_MESHCONF_FORWARDING = 0x13 + NL80211_MESHCONF_GATE_ANNOUNCEMENTS = 0x11 + NL80211_MESHCONF_HOLDING_TIMEOUT = 0x3 + NL80211_MESHCONF_HT_OPMODE = 0x16 + NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT = 0xb + NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL = 0x19 + NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES = 0x8 + NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME = 0xd + NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT = 0x17 + NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL = 0x12 + NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL = 0xc + NL80211_MESHCONF_HWMP_RANN_INTERVAL = 0x10 + NL80211_MESHCONF_HWMP_ROOT_INTERVAL = 0x18 + NL80211_MESHCONF_HWMP_ROOTMODE = 0xe + NL80211_MESHCONF_MAX_PEER_LINKS = 0x4 + NL80211_MESHCONF_MAX_RETRIES = 0x5 + NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT = 0xa + NL80211_MESHCONF_NOLEARN = 0x1e + NL80211_MESHCONF_PATH_REFRESH_TIME = 0x9 + NL80211_MESHCONF_PLINK_TIMEOUT = 0x1c + NL80211_MESHCONF_POWER_MODE = 0x1a + NL80211_MESHCONF_RETRY_TIMEOUT = 0x1 + NL80211_MESHCONF_RSSI_THRESHOLD = 0x14 + NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR = 0x15 + NL80211_MESHCONF_TTL = 0x6 + NL80211_MESH_POWER_ACTIVE = 0x1 + NL80211_MESH_POWER_DEEP_SLEEP = 0x3 + NL80211_MESH_POWER_LIGHT_SLEEP = 0x2 + NL80211_MESH_POWER_MAX = 0x3 + NL80211_MESH_POWER_UNKNOWN = 0x0 + NL80211_MESH_SETUP_ATTR_MAX = 0x8 + NL80211_MESH_SETUP_AUTH_PROTOCOL = 0x8 + NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC = 0x2 + NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL = 0x1 + NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC = 0x6 + NL80211_MESH_SETUP_IE = 0x3 + NL80211_MESH_SETUP_USERSPACE_AMPE = 0x5 + NL80211_MESH_SETUP_USERSPACE_AUTH = 0x4 + NL80211_MESH_SETUP_USERSPACE_MPM = 0x7 + NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE = 0x3 + NL80211_MFP_NO = 0x0 + NL80211_MFP_OPTIONAL = 0x2 + NL80211_MFP_REQUIRED = 0x1 + NL80211_MIN_REMAIN_ON_CHANNEL_TIME = 0xa + NL80211_MNTR_FLAG_ACTIVE = 0x6 + NL80211_MNTR_FLAG_CONTROL = 0x3 + NL80211_MNTR_FLAG_COOK_FRAMES = 0x5 + NL80211_MNTR_FLAG_FCSFAIL = 0x1 + NL80211_MNTR_FLAG_MAX = 0x7 + NL80211_MNTR_FLAG_OTHER_BSS = 0x4 + NL80211_MNTR_FLAG_PLCPFAIL = 0x2 + NL80211_MPATH_FLAG_ACTIVE = 0x1 + NL80211_MPATH_FLAG_FIXED = 0x8 + NL80211_MPATH_FLAG_RESOLVED = 0x10 + NL80211_MPATH_FLAG_RESOLVING = 0x2 + NL80211_MPATH_FLAG_SN_VALID = 0x4 + NL80211_MPATH_INFO_DISCOVERY_RETRIES = 0x7 + NL80211_MPATH_INFO_DISCOVERY_TIMEOUT = 0x6 + NL80211_MPATH_INFO_EXPTIME = 0x4 + NL80211_MPATH_INFO_FLAGS = 0x5 + NL80211_MPATH_INFO_FRAME_QLEN = 0x1 + NL80211_MPATH_INFO_HOP_COUNT = 0x8 + NL80211_MPATH_INFO_MAX = 0x9 + NL80211_MPATH_INFO_METRIC = 0x3 + NL80211_MPATH_INFO_PATH_CHANGE = 0x9 + NL80211_MPATH_INFO_SN = 0x2 + NL80211_MULTICAST_GROUP_CONFIG = "config" + NL80211_MULTICAST_GROUP_MLME = "mlme" + NL80211_MULTICAST_GROUP_NAN = "nan" + NL80211_MULTICAST_GROUP_REG = "regulatory" + NL80211_MULTICAST_GROUP_SCAN = "scan" + NL80211_MULTICAST_GROUP_TESTMODE = "testmode" + NL80211_MULTICAST_GROUP_VENDOR = "vendor" + NL80211_NAN_FUNC_ATTR_MAX = 0x10 + NL80211_NAN_FUNC_CLOSE_RANGE = 0x9 + NL80211_NAN_FUNC_FOLLOW_UP = 0x2 + NL80211_NAN_FUNC_FOLLOW_UP_DEST = 0x8 + NL80211_NAN_FUNC_FOLLOW_UP_ID = 0x6 + NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID = 0x7 + NL80211_NAN_FUNC_INSTANCE_ID = 0xf + NL80211_NAN_FUNC_MAX_TYPE = 0x2 + NL80211_NAN_FUNC_PUBLISH_BCAST = 0x4 + NL80211_NAN_FUNC_PUBLISH = 0x0 + NL80211_NAN_FUNC_PUBLISH_TYPE = 0x3 + NL80211_NAN_FUNC_RX_MATCH_FILTER = 0xd + NL80211_NAN_FUNC_SERVICE_ID = 0x2 + NL80211_NAN_FUNC_SERVICE_ID_LEN = 0x6 + NL80211_NAN_FUNC_SERVICE_INFO = 0xb + NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN = 0xff + NL80211_NAN_FUNC_SRF = 0xc + NL80211_NAN_FUNC_SRF_MAX_LEN = 0xff + NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE = 0x5 + NL80211_NAN_FUNC_SUBSCRIBE = 0x1 + NL80211_NAN_FUNC_TERM_REASON = 0x10 + NL80211_NAN_FUNC_TERM_REASON_ERROR = 0x2 + NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED = 0x1 + NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST = 0x0 + NL80211_NAN_FUNC_TTL = 0xa + NL80211_NAN_FUNC_TX_MATCH_FILTER = 0xe + NL80211_NAN_FUNC_TYPE = 0x1 + NL80211_NAN_MATCH_ATTR_MAX = 0x2 + NL80211_NAN_MATCH_FUNC_LOCAL = 0x1 + NL80211_NAN_MATCH_FUNC_PEER = 0x2 + NL80211_NAN_SOLICITED_PUBLISH = 0x1 + NL80211_NAN_SRF_ATTR_MAX = 0x4 + NL80211_NAN_SRF_BF = 0x2 + NL80211_NAN_SRF_BF_IDX = 0x3 + NL80211_NAN_SRF_INCLUDE = 0x1 + NL80211_NAN_SRF_MAC_ADDRS = 0x4 + NL80211_NAN_UNSOLICITED_PUBLISH = 0x2 + NL80211_NUM_ACS = 0x4 + NL80211_P2P_PS_SUPPORTED = 0x1 + NL80211_P2P_PS_UNSUPPORTED = 0x0 + NL80211_PKTPAT_MASK = 0x1 + NL80211_PKTPAT_OFFSET = 0x3 + NL80211_PKTPAT_PATTERN = 0x2 + NL80211_PLINK_ACTION_BLOCK = 0x2 + NL80211_PLINK_ACTION_NO_ACTION = 0x0 + NL80211_PLINK_ACTION_OPEN = 0x1 + NL80211_PLINK_BLOCKED = 0x6 + NL80211_PLINK_CNF_RCVD = 0x3 + NL80211_PLINK_ESTAB = 0x4 + NL80211_PLINK_HOLDING = 0x5 + NL80211_PLINK_LISTEN = 0x0 + NL80211_PLINK_OPN_RCVD = 0x2 + NL80211_PLINK_OPN_SNT = 0x1 + NL80211_PMKSA_CANDIDATE_BSSID = 0x2 + NL80211_PMKSA_CANDIDATE_INDEX = 0x1 + NL80211_PMKSA_CANDIDATE_PREAUTH = 0x3 + NL80211_PMSR_ATTR_MAX = 0x5 + NL80211_PMSR_ATTR_MAX_PEERS = 0x1 + NL80211_PMSR_ATTR_PEERS = 0x5 + NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR = 0x3 + NL80211_PMSR_ATTR_REPORT_AP_TSF = 0x2 + NL80211_PMSR_ATTR_TYPE_CAPA = 0x4 + NL80211_PMSR_FTM_CAPA_ATTR_ASAP = 0x1 + NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS = 0x6 + NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT = 0x7 + NL80211_PMSR_FTM_CAPA_ATTR_MAX = 0xa + NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST = 0x8 + NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP = 0x2 + NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED = 0xa + NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES = 0x5 + NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC = 0x4 + NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI = 0x3 + NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED = 0x9 + NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS = 0x7 + NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP = 0x5 + NL80211_PMSR_FTM_FAILURE_NO_RESPONSE = 0x1 + NL80211_PMSR_FTM_FAILURE_PEER_BUSY = 0x6 + NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE = 0x4 + NL80211_PMSR_FTM_FAILURE_REJECTED = 0x2 + NL80211_PMSR_FTM_FAILURE_UNSPECIFIED = 0x0 + NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL = 0x3 + NL80211_PMSR_FTM_REQ_ATTR_ASAP = 0x1 + NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR = 0xd + NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION = 0x5 + NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD = 0x4 + NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST = 0x6 + NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK = 0xc + NL80211_PMSR_FTM_REQ_ATTR_MAX = 0xd + NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED = 0xb + NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP = 0x3 + NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES = 0x7 + NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE = 0x2 + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC = 0x9 + NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI = 0x8 + NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED = 0xa + NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION = 0x7 + NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX = 0x2 + NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME = 0x5 + NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC = 0x14 + NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG = 0x10 + NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD = 0x12 + NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE = 0x11 + NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON = 0x1 + NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST = 0x8 + NL80211_PMSR_FTM_RESP_ATTR_LCI = 0x13 + NL80211_PMSR_FTM_RESP_ATTR_MAX = 0x15 + NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP = 0x6 + NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS = 0x3 + NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES = 0x4 + NL80211_PMSR_FTM_RESP_ATTR_PAD = 0x15 + NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG = 0x9 + NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD = 0xa + NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG = 0xd + NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD = 0xf + NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE = 0xe + NL80211_PMSR_FTM_RESP_ATTR_RX_RATE = 0xc + NL80211_PMSR_FTM_RESP_ATTR_TX_RATE = 0xb + NL80211_PMSR_PEER_ATTR_ADDR = 0x1 + NL80211_PMSR_PEER_ATTR_CHAN = 0x2 + NL80211_PMSR_PEER_ATTR_MAX = 0x4 + NL80211_PMSR_PEER_ATTR_REQ = 0x3 + NL80211_PMSR_PEER_ATTR_RESP = 0x4 + NL80211_PMSR_REQ_ATTR_DATA = 0x1 + NL80211_PMSR_REQ_ATTR_GET_AP_TSF = 0x2 + NL80211_PMSR_REQ_ATTR_MAX = 0x2 + NL80211_PMSR_RESP_ATTR_AP_TSF = 0x4 + NL80211_PMSR_RESP_ATTR_DATA = 0x1 + NL80211_PMSR_RESP_ATTR_FINAL = 0x5 + NL80211_PMSR_RESP_ATTR_HOST_TIME = 0x3 + NL80211_PMSR_RESP_ATTR_MAX = 0x6 + NL80211_PMSR_RESP_ATTR_PAD = 0x6 + NL80211_PMSR_RESP_ATTR_STATUS = 0x2 + NL80211_PMSR_STATUS_FAILURE = 0x3 + NL80211_PMSR_STATUS_REFUSED = 0x1 + NL80211_PMSR_STATUS_SUCCESS = 0x0 + NL80211_PMSR_STATUS_TIMEOUT = 0x2 + NL80211_PMSR_TYPE_FTM = 0x1 + NL80211_PMSR_TYPE_INVALID = 0x0 + NL80211_PMSR_TYPE_MAX = 0x1 + NL80211_PREAMBLE_DMG = 0x3 + NL80211_PREAMBLE_HE = 0x4 + NL80211_PREAMBLE_HT = 0x1 + NL80211_PREAMBLE_LEGACY = 0x0 + NL80211_PREAMBLE_VHT = 0x2 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 0x8 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 0x4 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 0x2 + NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 0x1 + NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 0x1 + NL80211_PS_DISABLED = 0x0 + NL80211_PS_ENABLED = 0x1 + NL80211_RADAR_CAC_ABORTED = 0x2 + NL80211_RADAR_CAC_FINISHED = 0x1 + NL80211_RADAR_CAC_STARTED = 0x5 + NL80211_RADAR_DETECTED = 0x0 + NL80211_RADAR_NOP_FINISHED = 0x3 + NL80211_RADAR_PRE_CAC_EXPIRED = 0x4 + NL80211_RATE_INFO_10_MHZ_WIDTH = 0xb + NL80211_RATE_INFO_160_MHZ_WIDTH = 0xa + NL80211_RATE_INFO_16_MHZ_WIDTH = 0x1d + NL80211_RATE_INFO_1_MHZ_WIDTH = 0x19 + NL80211_RATE_INFO_2_MHZ_WIDTH = 0x1a + NL80211_RATE_INFO_320_MHZ_WIDTH = 0x12 + NL80211_RATE_INFO_40_MHZ_WIDTH = 0x3 + NL80211_RATE_INFO_4_MHZ_WIDTH = 0x1b + NL80211_RATE_INFO_5_MHZ_WIDTH = 0xc + NL80211_RATE_INFO_80_MHZ_WIDTH = 0x8 + NL80211_RATE_INFO_80P80_MHZ_WIDTH = 0x9 + NL80211_RATE_INFO_8_MHZ_WIDTH = 0x1c + NL80211_RATE_INFO_BITRATE32 = 0x5 + NL80211_RATE_INFO_BITRATE = 0x1 + NL80211_RATE_INFO_EHT_GI_0_8 = 0x0 + NL80211_RATE_INFO_EHT_GI_1_6 = 0x1 + NL80211_RATE_INFO_EHT_GI_3_2 = 0x2 + NL80211_RATE_INFO_EHT_GI = 0x15 + NL80211_RATE_INFO_EHT_MCS = 0x13 + NL80211_RATE_INFO_EHT_NSS = 0x14 + NL80211_RATE_INFO_EHT_RU_ALLOC_106 = 0x3 + NL80211_RATE_INFO_EHT_RU_ALLOC_106P26 = 0x4 + NL80211_RATE_INFO_EHT_RU_ALLOC_242 = 0x5 + NL80211_RATE_INFO_EHT_RU_ALLOC_26 = 0x0 + NL80211_RATE_INFO_EHT_RU_ALLOC_2x996 = 0xb + NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484 = 0xc + NL80211_RATE_INFO_EHT_RU_ALLOC_3x996 = 0xd + NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484 = 0xe + NL80211_RATE_INFO_EHT_RU_ALLOC_484 = 0x6 + NL80211_RATE_INFO_EHT_RU_ALLOC_484P242 = 0x7 + NL80211_RATE_INFO_EHT_RU_ALLOC_4x996 = 0xf + NL80211_RATE_INFO_EHT_RU_ALLOC_52 = 0x1 + NL80211_RATE_INFO_EHT_RU_ALLOC_52P26 = 0x2 + NL80211_RATE_INFO_EHT_RU_ALLOC_996 = 0x8 + NL80211_RATE_INFO_EHT_RU_ALLOC_996P484 = 0x9 + NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242 = 0xa + NL80211_RATE_INFO_EHT_RU_ALLOC = 0x16 + NL80211_RATE_INFO_HE_1XLTF = 0x0 + NL80211_RATE_INFO_HE_2XLTF = 0x1 + NL80211_RATE_INFO_HE_4XLTF = 0x2 + NL80211_RATE_INFO_HE_DCM = 0x10 + NL80211_RATE_INFO_HE_GI_0_8 = 0x0 + NL80211_RATE_INFO_HE_GI_1_6 = 0x1 + NL80211_RATE_INFO_HE_GI_3_2 = 0x2 + NL80211_RATE_INFO_HE_GI = 0xf + NL80211_RATE_INFO_HE_MCS = 0xd + NL80211_RATE_INFO_HE_NSS = 0xe + NL80211_RATE_INFO_HE_RU_ALLOC_106 = 0x2 + NL80211_RATE_INFO_HE_RU_ALLOC_242 = 0x3 + NL80211_RATE_INFO_HE_RU_ALLOC_26 = 0x0 + NL80211_RATE_INFO_HE_RU_ALLOC_2x996 = 0x6 + NL80211_RATE_INFO_HE_RU_ALLOC_484 = 0x4 + NL80211_RATE_INFO_HE_RU_ALLOC_52 = 0x1 + NL80211_RATE_INFO_HE_RU_ALLOC_996 = 0x5 + NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 + NL80211_RATE_INFO_MAX = 0x1d + NL80211_RATE_INFO_MCS = 0x2 + NL80211_RATE_INFO_S1G_MCS = 0x17 + NL80211_RATE_INFO_S1G_NSS = 0x18 + NL80211_RATE_INFO_SHORT_GI = 0x4 + NL80211_RATE_INFO_VHT_MCS = 0x6 + NL80211_RATE_INFO_VHT_NSS = 0x7 + NL80211_REGDOM_SET_BY_CORE = 0x0 + NL80211_REGDOM_SET_BY_COUNTRY_IE = 0x3 + NL80211_REGDOM_SET_BY_DRIVER = 0x2 + NL80211_REGDOM_SET_BY_USER = 0x1 + NL80211_REGDOM_TYPE_COUNTRY = 0x0 + NL80211_REGDOM_TYPE_CUSTOM_WORLD = 0x2 + NL80211_REGDOM_TYPE_INTERSECTION = 0x3 + NL80211_REGDOM_TYPE_WORLD = 0x1 + NL80211_REG_RULE_ATTR_MAX = 0x8 + NL80211_REKEY_DATA_AKM = 0x4 + NL80211_REKEY_DATA_KCK = 0x2 + NL80211_REKEY_DATA_KEK = 0x1 + NL80211_REKEY_DATA_REPLAY_CTR = 0x3 + NL80211_REPLAY_CTR_LEN = 0x8 + NL80211_RRF_ALLOW_6GHZ_VLP_AP = 0x1000000 + NL80211_RRF_AUTO_BW = 0x800 + NL80211_RRF_DFS = 0x10 + NL80211_RRF_DFS_CONCURRENT = 0x200000 + NL80211_RRF_GO_CONCURRENT = 0x1000 + NL80211_RRF_IR_CONCURRENT = 0x1000 + NL80211_RRF_NO_160MHZ = 0x10000 + NL80211_RRF_NO_320MHZ = 0x40000 + NL80211_RRF_NO_6GHZ_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_6GHZ_VLP_CLIENT = 0x400000 + NL80211_RRF_NO_80MHZ = 0x8000 + NL80211_RRF_NO_CCK = 0x2 + NL80211_RRF_NO_EHT = 0x80000 + NL80211_RRF_NO_HE = 0x20000 + NL80211_RRF_NO_HT40 = 0x6000 + NL80211_RRF_NO_HT40MINUS = 0x2000 + NL80211_RRF_NO_HT40PLUS = 0x4000 + NL80211_RRF_NO_IBSS = 0x80 + NL80211_RRF_NO_INDOOR = 0x4 + NL80211_RRF_NO_IR_ALL = 0x180 + NL80211_RRF_NO_IR = 0x80 + NL80211_RRF_NO_OFDM = 0x1 + NL80211_RRF_NO_OUTDOOR = 0x8 + NL80211_RRF_NO_UHB_AFC_CLIENT = 0x800000 + NL80211_RRF_NO_UHB_VLP_CLIENT = 0x400000 + NL80211_RRF_PASSIVE_SCAN = 0x80 + NL80211_RRF_PSD = 0x100000 + NL80211_RRF_PTMP_ONLY = 0x40 + NL80211_RRF_PTP_ONLY = 0x20 + NL80211_RXMGMT_FLAG_ANSWERED = 0x1 + NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 0x2 + NL80211_SAE_PWE_BOTH = 0x3 + NL80211_SAE_PWE_HASH_TO_ELEMENT = 0x2 + NL80211_SAE_PWE_HUNT_AND_PECK = 0x1 + NL80211_SAE_PWE_UNSPECIFIED = 0x0 + NL80211_SAR_ATTR_MAX = 0x2 + NL80211_SAR_ATTR_SPECS = 0x2 + NL80211_SAR_ATTR_SPECS_END_FREQ = 0x4 + NL80211_SAR_ATTR_SPECS_MAX = 0x4 + NL80211_SAR_ATTR_SPECS_POWER = 0x1 + NL80211_SAR_ATTR_SPECS_RANGE_INDEX = 0x2 + NL80211_SAR_ATTR_SPECS_START_FREQ = 0x3 + NL80211_SAR_ATTR_TYPE = 0x1 + NL80211_SAR_TYPE_POWER = 0x0 + NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 0x20 + NL80211_SCAN_FLAG_AP = 0x4 + NL80211_SCAN_FLAG_COLOCATED_6GHZ = 0x4000 + NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME = 0x10 + NL80211_SCAN_FLAG_FLUSH = 0x2 + NL80211_SCAN_FLAG_FREQ_KHZ = 0x2000 + NL80211_SCAN_FLAG_HIGH_ACCURACY = 0x400 + NL80211_SCAN_FLAG_LOW_POWER = 0x200 + NL80211_SCAN_FLAG_LOW_PRIORITY = 0x1 + NL80211_SCAN_FLAG_LOW_SPAN = 0x100 + NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 0x1000 + NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 0x80 + NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 0x40 + NL80211_SCAN_FLAG_RANDOM_ADDR = 0x8 + NL80211_SCAN_FLAG_RANDOM_SN = 0x800 + NL80211_SCAN_RSSI_THOLD_OFF = -0x12c + NL80211_SCHED_SCAN_MATCH_ATTR_BSSID = 0x5 + NL80211_SCHED_SCAN_MATCH_ATTR_MAX = 0x6 + NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI = 0x3 + NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST = 0x4 + NL80211_SCHED_SCAN_MATCH_ATTR_RSSI = 0x2 + NL80211_SCHED_SCAN_MATCH_ATTR_SSID = 0x1 + NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI = 0x6 + NL80211_SCHED_SCAN_PLAN_INTERVAL = 0x1 + NL80211_SCHED_SCAN_PLAN_ITERATIONS = 0x2 + NL80211_SCHED_SCAN_PLAN_MAX = 0x2 + NL80211_SMPS_DYNAMIC = 0x2 + NL80211_SMPS_MAX = 0x2 + NL80211_SMPS_OFF = 0x0 + NL80211_SMPS_STATIC = 0x1 + NL80211_STA_BSS_PARAM_BEACON_INTERVAL = 0x5 + NL80211_STA_BSS_PARAM_CTS_PROT = 0x1 + NL80211_STA_BSS_PARAM_DTIM_PERIOD = 0x4 + NL80211_STA_BSS_PARAM_MAX = 0x5 + NL80211_STA_BSS_PARAM_SHORT_PREAMBLE = 0x2 + NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME = 0x3 + NL80211_STA_FLAG_ASSOCIATED = 0x7 + NL80211_STA_FLAG_AUTHENTICATED = 0x5 + NL80211_STA_FLAG_AUTHORIZED = 0x1 + NL80211_STA_FLAG_MAX = 0x8 + NL80211_STA_FLAG_MAX_OLD_API = 0x6 + NL80211_STA_FLAG_MFP = 0x4 + NL80211_STA_FLAG_SHORT_PREAMBLE = 0x2 + NL80211_STA_FLAG_SPP_AMSDU = 0x8 + NL80211_STA_FLAG_TDLS_PEER = 0x6 + NL80211_STA_FLAG_WME = 0x3 + NL80211_STA_INFO_ACK_SIGNAL_AVG = 0x23 + NL80211_STA_INFO_ACK_SIGNAL = 0x22 + NL80211_STA_INFO_AIRTIME_LINK_METRIC = 0x29 + NL80211_STA_INFO_AIRTIME_WEIGHT = 0x28 + NL80211_STA_INFO_ASSOC_AT_BOOTTIME = 0x2a + NL80211_STA_INFO_BEACON_LOSS = 0x12 + NL80211_STA_INFO_BEACON_RX = 0x1d + NL80211_STA_INFO_BEACON_SIGNAL_AVG = 0x1e + NL80211_STA_INFO_BSS_PARAM = 0xf + NL80211_STA_INFO_CHAIN_SIGNAL_AVG = 0x1a + NL80211_STA_INFO_CHAIN_SIGNAL = 0x19 + NL80211_STA_INFO_CONNECTED_TIME = 0x10 + NL80211_STA_INFO_CONNECTED_TO_AS = 0x2b + NL80211_STA_INFO_CONNECTED_TO_GATE = 0x26 + NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG = 0x23 + NL80211_STA_INFO_EXPECTED_THROUGHPUT = 0x1b + NL80211_STA_INFO_FCS_ERROR_COUNT = 0x25 + NL80211_STA_INFO_INACTIVE_TIME = 0x1 + NL80211_STA_INFO_LLID = 0x4 + NL80211_STA_INFO_LOCAL_PM = 0x14 + NL80211_STA_INFO_MAX = 0x2b + NL80211_STA_INFO_NONPEER_PM = 0x16 + NL80211_STA_INFO_PAD = 0x21 + NL80211_STA_INFO_PEER_PM = 0x15 + NL80211_STA_INFO_PLID = 0x5 + NL80211_STA_INFO_PLINK_STATE = 0x6 + NL80211_STA_INFO_RX_BITRATE = 0xe + NL80211_STA_INFO_RX_BYTES64 = 0x17 + NL80211_STA_INFO_RX_BYTES = 0x2 + NL80211_STA_INFO_RX_DROP_MISC = 0x1c + NL80211_STA_INFO_RX_DURATION = 0x20 + NL80211_STA_INFO_RX_MPDUS = 0x24 + NL80211_STA_INFO_RX_PACKETS = 0x9 + NL80211_STA_INFO_SIGNAL_AVG = 0xd + NL80211_STA_INFO_SIGNAL = 0x7 + NL80211_STA_INFO_STA_FLAGS = 0x11 + NL80211_STA_INFO_TID_STATS = 0x1f + NL80211_STA_INFO_T_OFFSET = 0x13 + NL80211_STA_INFO_TX_BITRATE = 0x8 + NL80211_STA_INFO_TX_BYTES64 = 0x18 + NL80211_STA_INFO_TX_BYTES = 0x3 + NL80211_STA_INFO_TX_DURATION = 0x27 + NL80211_STA_INFO_TX_FAILED = 0xc + NL80211_STA_INFO_TX_PACKETS = 0xa + NL80211_STA_INFO_TX_RETRIES = 0xb + NL80211_STA_WME_MAX = 0x2 + NL80211_STA_WME_MAX_SP = 0x2 + NL80211_STA_WME_UAPSD_QUEUES = 0x1 + NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY = 0x5 + NL80211_SURVEY_INFO_CHANNEL_TIME = 0x4 + NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY = 0x6 + NL80211_SURVEY_INFO_CHANNEL_TIME_RX = 0x7 + NL80211_SURVEY_INFO_CHANNEL_TIME_TX = 0x8 + NL80211_SURVEY_INFO_FREQUENCY = 0x1 + NL80211_SURVEY_INFO_FREQUENCY_OFFSET = 0xc + NL80211_SURVEY_INFO_IN_USE = 0x3 + NL80211_SURVEY_INFO_MAX = 0xc + NL80211_SURVEY_INFO_NOISE = 0x2 + NL80211_SURVEY_INFO_PAD = 0xa + NL80211_SURVEY_INFO_TIME_BSS_RX = 0xb + NL80211_SURVEY_INFO_TIME_BUSY = 0x5 + NL80211_SURVEY_INFO_TIME = 0x4 + NL80211_SURVEY_INFO_TIME_EXT_BUSY = 0x6 + NL80211_SURVEY_INFO_TIME_RX = 0x7 + NL80211_SURVEY_INFO_TIME_SCAN = 0x9 + NL80211_SURVEY_INFO_TIME_TX = 0x8 + NL80211_TDLS_DISABLE_LINK = 0x4 + NL80211_TDLS_DISCOVERY_REQ = 0x0 + NL80211_TDLS_ENABLE_LINK = 0x3 + NL80211_TDLS_PEER_HE = 0x8 + NL80211_TDLS_PEER_HT = 0x1 + NL80211_TDLS_PEER_VHT = 0x2 + NL80211_TDLS_PEER_WMM = 0x4 + NL80211_TDLS_SETUP = 0x1 + NL80211_TDLS_TEARDOWN = 0x2 + NL80211_TID_CONFIG_ATTR_AMPDU_CTRL = 0x9 + NL80211_TID_CONFIG_ATTR_AMSDU_CTRL = 0xb + NL80211_TID_CONFIG_ATTR_MAX = 0xd + NL80211_TID_CONFIG_ATTR_NOACK = 0x6 + NL80211_TID_CONFIG_ATTR_OVERRIDE = 0x4 + NL80211_TID_CONFIG_ATTR_PAD = 0x1 + NL80211_TID_CONFIG_ATTR_PEER_SUPP = 0x3 + NL80211_TID_CONFIG_ATTR_RETRY_LONG = 0x8 + NL80211_TID_CONFIG_ATTR_RETRY_SHORT = 0x7 + NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL = 0xa + NL80211_TID_CONFIG_ATTR_TIDS = 0x5 + NL80211_TID_CONFIG_ATTR_TX_RATE = 0xd + NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE = 0xc + NL80211_TID_CONFIG_ATTR_VIF_SUPP = 0x2 + NL80211_TID_CONFIG_DISABLE = 0x1 + NL80211_TID_CONFIG_ENABLE = 0x0 + NL80211_TID_STATS_MAX = 0x6 + NL80211_TID_STATS_PAD = 0x5 + NL80211_TID_STATS_RX_MSDU = 0x1 + NL80211_TID_STATS_TX_MSDU = 0x2 + NL80211_TID_STATS_TX_MSDU_FAILED = 0x4 + NL80211_TID_STATS_TX_MSDU_RETRIES = 0x3 + NL80211_TID_STATS_TXQ_STATS = 0x6 + NL80211_TIMEOUT_ASSOC = 0x3 + NL80211_TIMEOUT_AUTH = 0x2 + NL80211_TIMEOUT_SCAN = 0x1 + NL80211_TIMEOUT_UNSPECIFIED = 0x0 + NL80211_TKIP_DATA_OFFSET_ENCR_KEY = 0x0 + NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY = 0x18 + NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY = 0x10 + NL80211_TX_POWER_AUTOMATIC = 0x0 + NL80211_TX_POWER_FIXED = 0x2 + NL80211_TX_POWER_LIMITED = 0x1 + NL80211_TXQ_ATTR_AC = 0x1 + NL80211_TXQ_ATTR_AIFS = 0x5 + NL80211_TXQ_ATTR_CWMAX = 0x4 + NL80211_TXQ_ATTR_CWMIN = 0x3 + NL80211_TXQ_ATTR_MAX = 0x5 + NL80211_TXQ_ATTR_QUEUE = 0x1 + NL80211_TXQ_ATTR_TXOP = 0x2 + NL80211_TXQ_Q_BE = 0x2 + NL80211_TXQ_Q_BK = 0x3 + NL80211_TXQ_Q_VI = 0x1 + NL80211_TXQ_Q_VO = 0x0 + NL80211_TXQ_STATS_BACKLOG_BYTES = 0x1 + NL80211_TXQ_STATS_BACKLOG_PACKETS = 0x2 + NL80211_TXQ_STATS_COLLISIONS = 0x8 + NL80211_TXQ_STATS_DROPS = 0x4 + NL80211_TXQ_STATS_ECN_MARKS = 0x5 + NL80211_TXQ_STATS_FLOWS = 0x3 + NL80211_TXQ_STATS_MAX = 0xb + NL80211_TXQ_STATS_MAX_FLOWS = 0xb + NL80211_TXQ_STATS_OVERLIMIT = 0x6 + NL80211_TXQ_STATS_OVERMEMORY = 0x7 + NL80211_TXQ_STATS_TX_BYTES = 0x9 + NL80211_TXQ_STATS_TX_PACKETS = 0xa + NL80211_TX_RATE_AUTOMATIC = 0x0 + NL80211_TXRATE_DEFAULT_GI = 0x0 + NL80211_TX_RATE_FIXED = 0x2 + NL80211_TXRATE_FORCE_LGI = 0x2 + NL80211_TXRATE_FORCE_SGI = 0x1 + NL80211_TXRATE_GI = 0x4 + NL80211_TXRATE_HE = 0x5 + NL80211_TXRATE_HE_GI = 0x6 + NL80211_TXRATE_HE_LTF = 0x7 + NL80211_TXRATE_HT = 0x2 + NL80211_TXRATE_LEGACY = 0x1 + NL80211_TX_RATE_LIMITED = 0x1 + NL80211_TXRATE_MAX = 0x7 + NL80211_TXRATE_MCS = 0x2 + NL80211_TXRATE_VHT = 0x3 + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT = 0x1 + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX = 0x2 + NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL = 0x2 + NL80211_USER_REG_HINT_CELL_BASE = 0x1 + NL80211_USER_REG_HINT_INDOOR = 0x2 + NL80211_USER_REG_HINT_USER = 0x0 + NL80211_VENDOR_ID_IS_LINUX = 0x80000000 + NL80211_VHT_CAPABILITY_LEN = 0xc + NL80211_VHT_NSS_MAX = 0x8 + NL80211_WIPHY_NAME_MAXLEN = 0x40 + NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE = 0x2 + NL80211_WIPHY_RADIO_ATTR_INDEX = 0x1 + NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION = 0x3 + NL80211_WIPHY_RADIO_ATTR_MAX = 0x4 + NL80211_WIPHY_RADIO_FREQ_ATTR_END = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = 0x2 + NL80211_WIPHY_RADIO_FREQ_ATTR_START = 0x1 + NL80211_WMMR_AIFSN = 0x3 + NL80211_WMMR_CW_MAX = 0x2 + NL80211_WMMR_CW_MIN = 0x1 + NL80211_WMMR_MAX = 0x4 + NL80211_WMMR_TXOP = 0x4 + NL80211_WOWLAN_PKTPAT_MASK = 0x1 + NL80211_WOWLAN_PKTPAT_OFFSET = 0x3 + NL80211_WOWLAN_PKTPAT_PATTERN = 0x2 + NL80211_WOWLAN_TCP_DATA_INTERVAL = 0x9 + NL80211_WOWLAN_TCP_DATA_PAYLOAD = 0x6 + NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ = 0x7 + NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN = 0x8 + NL80211_WOWLAN_TCP_DST_IPV4 = 0x2 + NL80211_WOWLAN_TCP_DST_MAC = 0x3 + NL80211_WOWLAN_TCP_DST_PORT = 0x5 + NL80211_WOWLAN_TCP_SRC_IPV4 = 0x1 + NL80211_WOWLAN_TCP_SRC_PORT = 0x4 + NL80211_WOWLAN_TCP_WAKE_MASK = 0xb + NL80211_WOWLAN_TCP_WAKE_PAYLOAD = 0xa + NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE = 0x8 + NL80211_WOWLAN_TRIG_ANY = 0x1 + NL80211_WOWLAN_TRIG_DISCONNECT = 0x2 + NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST = 0x7 + NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE = 0x6 + NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED = 0x5 + NL80211_WOWLAN_TRIG_MAGIC_PKT = 0x3 + NL80211_WOWLAN_TRIG_NET_DETECT = 0x12 + NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS = 0x13 + NL80211_WOWLAN_TRIG_PKT_PATTERN = 0x4 + NL80211_WOWLAN_TRIG_RFKILL_RELEASE = 0x9 + NL80211_WOWLAN_TRIG_TCP_CONNECTION = 0xe + NL80211_WOWLAN_TRIG_UNPROTECTED_DEAUTH_DISASSOC = 0x14 + NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211 = 0xa + NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN = 0xb + NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023 = 0xc + NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN = 0xd + NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST = 0x10 + NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH = 0xf + NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS = 0x11 + NL80211_WPA_VERSION_1 = 0x1 + NL80211_WPA_VERSION_2 = 0x2 + NL80211_WPA_VERSION_3 = 0x4 +) + +const ( + FRA_UNSPEC = 0x0 + FRA_DST = 0x1 + FRA_SRC = 0x2 + FRA_IIFNAME = 0x3 + FRA_GOTO = 0x4 + FRA_UNUSED2 = 0x5 + FRA_PRIORITY = 0x6 + FRA_UNUSED3 = 0x7 + FRA_UNUSED4 = 0x8 + FRA_UNUSED5 = 0x9 + FRA_FWMARK = 0xa + FRA_FLOW = 0xb + FRA_TUN_ID = 0xc + FRA_SUPPRESS_IFGROUP = 0xd + FRA_SUPPRESS_PREFIXLEN = 0xe + FRA_TABLE = 0xf + FRA_FWMASK = 0x10 + FRA_OIFNAME = 0x11 + FRA_PAD = 0x12 + FRA_L3MDEV = 0x13 + FRA_UID_RANGE = 0x14 + FRA_PROTOCOL = 0x15 + FRA_IP_PROTO = 0x16 + FRA_SPORT_RANGE = 0x17 + FRA_DPORT_RANGE = 0x18 + FR_ACT_UNSPEC = 0x0 + FR_ACT_TO_TBL = 0x1 + FR_ACT_GOTO = 0x2 + FR_ACT_NOP = 0x3 + FR_ACT_RES3 = 0x4 + FR_ACT_RES4 = 0x5 + FR_ACT_BLACKHOLE = 0x6 + FR_ACT_UNREACHABLE = 0x7 + FR_ACT_PROHIBIT = 0x8 +) + +const ( + AUDIT_NLGRP_NONE = 0x0 + AUDIT_NLGRP_READLOG = 0x1 +) + +const ( + TUN_F_CSUM = 0x1 + TUN_F_TSO4 = 0x2 + TUN_F_TSO6 = 0x4 + TUN_F_TSO_ECN = 0x8 + TUN_F_UFO = 0x10 + TUN_F_USO4 = 0x20 + TUN_F_USO6 = 0x40 +) + +const ( + VIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1 + VIRTIO_NET_HDR_F_DATA_VALID = 0x2 + VIRTIO_NET_HDR_F_RSC_INFO = 0x4 +) + +const ( + VIRTIO_NET_HDR_GSO_NONE = 0x0 + VIRTIO_NET_HDR_GSO_TCPV4 = 0x1 + VIRTIO_NET_HDR_GSO_UDP = 0x3 + VIRTIO_NET_HDR_GSO_TCPV6 = 0x4 + VIRTIO_NET_HDR_GSO_UDP_L4 = 0x5 + VIRTIO_NET_HDR_GSO_ECN = 0x80 +) + +type SchedAttr struct { + Size uint32 + Policy uint32 + Flags uint64 + Nice int32 + Priority uint32 + Runtime uint64 + Deadline uint64 + Period uint64 + Util_min uint32 + Util_max uint32 +} + +const SizeofSchedAttr = 0x38 + +type Cachestat_t struct { + Cache uint64 + Dirty uint64 + Writeback uint64 + Evicted uint64 + Recently_evicted uint64 +} +type CachestatRange struct { + Off uint64 + Len uint64 +} + +const ( + SK_MEMINFO_RMEM_ALLOC = 0x0 + SK_MEMINFO_RCVBUF = 0x1 + SK_MEMINFO_WMEM_ALLOC = 0x2 + SK_MEMINFO_SNDBUF = 0x3 + SK_MEMINFO_FWD_ALLOC = 0x4 + SK_MEMINFO_WMEM_QUEUED = 0x5 + SK_MEMINFO_OPTMEM = 0x6 + SK_MEMINFO_BACKLOG = 0x7 + SK_MEMINFO_DROPS = 0x8 + SK_MEMINFO_VARS = 0x9 + SKNLGRP_NONE = 0x0 + SKNLGRP_INET_TCP_DESTROY = 0x1 + SKNLGRP_INET_UDP_DESTROY = 0x2 + SKNLGRP_INET6_TCP_DESTROY = 0x3 + SKNLGRP_INET6_UDP_DESTROY = 0x4 + SK_DIAG_BPF_STORAGE_REQ_NONE = 0x0 + SK_DIAG_BPF_STORAGE_REQ_MAP_FD = 0x1 + SK_DIAG_BPF_STORAGE_REP_NONE = 0x0 + SK_DIAG_BPF_STORAGE = 0x1 + SK_DIAG_BPF_STORAGE_NONE = 0x0 + SK_DIAG_BPF_STORAGE_PAD = 0x1 + SK_DIAG_BPF_STORAGE_MAP_ID = 0x2 + SK_DIAG_BPF_STORAGE_MAP_VALUE = 0x3 +) + +type SockDiagReq struct { + Family uint8 + Protocol uint8 +} + +const RTM_NEWNVLAN = 0x70 + +const ( + MPOL_BIND = 0x2 + MPOL_DEFAULT = 0x0 + MPOL_F_ADDR = 0x2 + MPOL_F_MEMS_ALLOWED = 0x4 + MPOL_F_MOF = 0x8 + MPOL_F_MORON = 0x10 + MPOL_F_NODE = 0x1 + MPOL_F_NUMA_BALANCING = 0x2000 + MPOL_F_RELATIVE_NODES = 0x4000 + MPOL_F_SHARED = 0x1 + MPOL_F_STATIC_NODES = 0x8000 + MPOL_INTERLEAVE = 0x3 + MPOL_LOCAL = 0x4 + MPOL_MAX = 0x7 + MPOL_MF_INTERNAL = 0x10 + MPOL_MF_LAZY = 0x8 + MPOL_MF_MOVE_ALL = 0x4 + MPOL_MF_MOVE = 0x2 + MPOL_MF_STRICT = 0x1 + MPOL_MF_VALID = 0x7 + MPOL_MODE_FLAGS = 0xe000 + MPOL_PREFERRED = 0x1 + MPOL_PREFERRED_MANY = 0x5 + MPOL_WEIGHTED_INTERLEAVE = 0x6 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_386.go new file mode 100644 index 0000000..485f2d3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -0,0 +1,705 @@ +// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [1]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type DmNameList struct { + Dev uint64 + Next uint32 +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 +} + +const ( + PPS_GETPARAMS = 0x800470a1 + PPS_SETPARAMS = 0x400470a2 + PPS_GETCAP = 0x800470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ [2]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Atime_high uint32 + Dtime uint32 + Dtime_high uint32 + Ctime uint32 + Ctime_high uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go new file mode 100644 index 0000000..ecbd1ad --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -0,0 +1,719 @@ +// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [3]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go new file mode 100644 index 0000000..02f0463 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -0,0 +1,699 @@ +// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [6]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Uregs [18]uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800470a1 + PPS_SETPARAMS = 0x400470a2 + PPS_GETCAP = 0x800470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint16 + _ [2]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Atime_high uint32 + Dtime uint32 + Dtime_high uint32 + Ctime uint32 + Ctime_high uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go new file mode 100644 index 0000000..6f4d400 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -0,0 +1,698 @@ +// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go new file mode 100644 index 0000000..cd532cf --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -0,0 +1,699 @@ +// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Orig_a0 uint64 + Era uint64 + Badv uint64 + Reserved [10]uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go new file mode 100644 index 0000000..4133620 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -0,0 +1,704 @@ +// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Dtime uint32 + Ctime uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + Atime_high uint16 + Dtime_high uint16 + Ctime_high uint16 + _ uint16 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go new file mode 100644 index 0000000..eaa37eb --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -0,0 +1,701 @@ +// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go new file mode 100644 index 0000000..98ae6a1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -0,0 +1,701 @@ +// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64le && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go new file mode 100644 index 0000000..cae1961 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -0,0 +1,704 @@ +// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mipsle && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x80 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + +type Siginfo struct { + Signo int32 + Code int32 + Errno int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x80 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint32 + _ uint32 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint32 + Atime uint32 + Dtime uint32 + Ctime uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + Atime_high uint16 + Dtime_high uint16 + Ctime_high uint16 + _ uint16 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go new file mode 100644 index 0000000..6ce3b4e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -0,0 +1,712 @@ +// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc && linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofLong = 0x4 +) + +type ( + _C_long int32 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [6]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint32 + _ uint32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [16]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x58 + SizeofIovec = 0x8 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc +) + +const ( + SizeofSockFprog = 0x8 +) + +type PtraceRegs struct { + Gpr [32]uint32 + Nip uint32 + Msr uint32 + Orig_gpr3 uint32 + Ctr uint32 + Link uint32 + Xer uint32 + Ccr uint32 + Mq uint32 + Trap uint32 + Dar uint32 + Dsisr uint32 + Result uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [32]uint32 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ [116]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [6]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint32 + +const ( + _NCPUBITS = 0x20 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [122]byte + _ uint32 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +const ( + SizeofTpacketHdr = 0x18 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400470a1 + PPS_SETPARAMS = 0x800470a2 + PPS_GETCAP = 0x400470a3 + PPS_FETCH = 0xc00470a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime_high uint32 + Atime uint32 + Dtime_high uint32 + Dtime uint32 + Ctime_high uint32 + Ctime uint32 + _ uint32 + Segsz uint32 + Cpid int32 + Lpid int32 + Nattch uint32 + _ uint32 + _ uint32 + _ [4]byte +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go new file mode 100644 index 0000000..c7429c6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -0,0 +1,707 @@ +// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go new file mode 100644 index 0000000..4bf4baf --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -0,0 +1,707 @@ +// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64le && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + Seq uint32 + _ uint32 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go new file mode 100644 index 0000000..e9709d7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -0,0 +1,786 @@ +// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Pc uint64 + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T0 uint64 + T1 uint64 + T2 uint64 + S0 uint64 + S1 uint64 + A0 uint64 + A1 uint64 + A2 uint64 + A3 uint64 + A4 uint64 + A5 uint64 + A6 uint64 + A7 uint64 + S2 uint64 + S3 uint64 + S4 uint64 + S5 uint64 + S6 uint64 + S7 uint64 + S8 uint64 + S9 uint64 + S10 uint64 + S11 uint64 + T3 uint64 + T4 uint64 + T5 uint64 + T6 uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} + +type RISCVHWProbePairs struct { + Key int64 + Value uint64 +} + +const ( + RISCV_HWPROBE_KEY_MVENDORID = 0x0 + RISCV_HWPROBE_KEY_MARCHID = 0x1 + RISCV_HWPROBE_KEY_MIMPID = 0x2 + RISCV_HWPROBE_KEY_BASE_BEHAVIOR = 0x3 + RISCV_HWPROBE_BASE_BEHAVIOR_IMA = 0x1 + RISCV_HWPROBE_KEY_IMA_EXT_0 = 0x4 + RISCV_HWPROBE_IMA_FD = 0x1 + RISCV_HWPROBE_IMA_C = 0x2 + RISCV_HWPROBE_IMA_V = 0x4 + RISCV_HWPROBE_EXT_ZBA = 0x8 + RISCV_HWPROBE_EXT_ZBB = 0x10 + RISCV_HWPROBE_EXT_ZBS = 0x20 + RISCV_HWPROBE_EXT_ZICBOZ = 0x40 + RISCV_HWPROBE_EXT_ZBC = 0x80 + RISCV_HWPROBE_EXT_ZBKB = 0x100 + RISCV_HWPROBE_EXT_ZBKC = 0x200 + RISCV_HWPROBE_EXT_ZBKX = 0x400 + RISCV_HWPROBE_EXT_ZKND = 0x800 + RISCV_HWPROBE_EXT_ZKNE = 0x1000 + RISCV_HWPROBE_EXT_ZKNH = 0x2000 + RISCV_HWPROBE_EXT_ZKSED = 0x4000 + RISCV_HWPROBE_EXT_ZKSH = 0x8000 + RISCV_HWPROBE_EXT_ZKT = 0x10000 + RISCV_HWPROBE_EXT_ZVBB = 0x20000 + RISCV_HWPROBE_EXT_ZVBC = 0x40000 + RISCV_HWPROBE_EXT_ZVKB = 0x80000 + RISCV_HWPROBE_EXT_ZVKG = 0x100000 + RISCV_HWPROBE_EXT_ZVKNED = 0x200000 + RISCV_HWPROBE_EXT_ZVKNHA = 0x400000 + RISCV_HWPROBE_EXT_ZVKNHB = 0x800000 + RISCV_HWPROBE_EXT_ZVKSED = 0x1000000 + RISCV_HWPROBE_EXT_ZVKSH = 0x2000000 + RISCV_HWPROBE_EXT_ZVKT = 0x4000000 + RISCV_HWPROBE_EXT_ZFH = 0x8000000 + RISCV_HWPROBE_EXT_ZFHMIN = 0x10000000 + RISCV_HWPROBE_EXT_ZIHINTNTL = 0x20000000 + RISCV_HWPROBE_EXT_ZVFH = 0x40000000 + RISCV_HWPROBE_EXT_ZVFHMIN = 0x80000000 + RISCV_HWPROBE_EXT_ZFA = 0x100000000 + RISCV_HWPROBE_EXT_ZTSO = 0x200000000 + RISCV_HWPROBE_EXT_ZACAS = 0x400000000 + RISCV_HWPROBE_EXT_ZICOND = 0x800000000 + RISCV_HWPROBE_EXT_ZIHINTPAUSE = 0x1000000000 + RISCV_HWPROBE_KEY_CPUPERF_0 = 0x5 + RISCV_HWPROBE_MISALIGNED_UNKNOWN = 0x0 + RISCV_HWPROBE_MISALIGNED_EMULATED = 0x1 + RISCV_HWPROBE_MISALIGNED_SLOW = 0x2 + RISCV_HWPROBE_MISALIGNED_FAST = 0x3 + RISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4 + RISCV_HWPROBE_MISALIGNED_MASK = 0x7 + RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE = 0x6 + RISCV_HWPROBE_WHICH_CPUS = 0x1 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go new file mode 100644 index 0000000..fb44268 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -0,0 +1,721 @@ +// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build s390x && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x6 + FADV_NOREUSE = 0x7 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Psw PtracePsw + Gprs [16]uint64 + Acrs [16]uint32 + Orig_gpr2 uint64 + Fp_regs PtraceFpregs + Per_info PtracePer + Ieee_instruction_pointer uint64 +} + +type PtracePsw struct { + Mask uint64 + Addr uint64 +} + +type PtraceFpregs struct { + Fpc uint32 + Fprs [16]float64 +} + +type PtracePer struct { + Control_regs [3]uint64 + _ [8]byte + Starting_addr uint64 + Ending_addr uint64 + Perc_atmid uint16 + Address uint64 + Access_id uint8 + _ [7]byte +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type uint32 + Bsize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen uint32 + Frsize uint32 + Flags uint32 + Spare [4]uint32 + _ [4]byte +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint64 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ uint16 + Seq uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go new file mode 100644 index 0000000..9c38265 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -0,0 +1,702 @@ +// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build sparc64 && linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + _ uint16 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ int16 + _ [2]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [16]uint64 + Tstate uint64 + Tpc uint64 + Tnpc uint64 + Y uint32 + Magic uint32 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x400000 +) + +const ( + POLLRDHUP = 0x800 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x4 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 + Irq_count uint64 + Irq_delay_total uint64 + Cpu_delay_max uint64 + Cpu_delay_min uint64 + Blkio_delay_max uint64 + Blkio_delay_min uint64 + Swapin_delay_max uint64 + Swapin_delay_min uint64 + Freepages_delay_max uint64 + Freepages_delay_min uint64 + Thrashing_delay_max uint64 + Thrashing_delay_min uint64 + Compact_delay_max uint64 + Compact_delay_min uint64 + Wpcopy_delay_max uint64 + Wpcopy_delay_min uint64 + Irq_delay_max uint64 + Irq_delay_min uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + Data [118]byte + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x400870a1 + PPS_SETPARAMS = 0x800870a2 + PPS_GETCAP = 0x400870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x4000 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ uint16 + Seq uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Atime int64 + Dtime int64 + Ctime int64 + Segsz uint64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go new file mode 100644 index 0000000..f22e794 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -0,0 +1,585 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint32 + Bsize uint32 + Frsize uint32 + Iosize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint32 + Namemax uint32 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x84 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData + Pad_cgo_1 [4]byte +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go new file mode 100644 index 0000000..066a7d8 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -0,0 +1,593 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint64 + Bsize uint64 + Frsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint64 + Namemax uint64 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte + _ [4]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go new file mode 100644 index 0000000..50e8e64 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -0,0 +1,590 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + Pad_cgo_0 [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint32 + Bsize uint32 + Frsize uint32 + Iosize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint32 + Namemax uint32 + Owner uint32 + Spare [4]uint64 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 + Pad_cgo_0 [4]byte +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go new file mode 100644 index 0000000..16085d3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -0,0 +1,593 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte +} + +type Statfs_t [0]byte + +type Statvfs_t struct { + Flag uint64 + Bsize uint64 + Frsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Bresvd uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fresvd uint64 + Syncreads uint64 + Syncwrites uint64 + Asyncreads uint64 + Asyncwrites uint64 + Fsidx Fsid + Fsid uint64 + Namemax uint64 + Owner uint32 + Spare [4]uint32 + Fstypename [32]byte + Mntonname [1024]byte + Mntfromname [1024]byte + _ [4]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + ST_WAIT = 0x1 + ST_NOWAIT = 0x2 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x278 + +type Uvmexp struct { + Pagesize int64 + Pagemask int64 + Pageshift int64 + Npages int64 + Free int64 + Active int64 + Inactive int64 + Paging int64 + Wired int64 + Zeropages int64 + Reserve_pagedaemon int64 + Reserve_kernel int64 + Freemin int64 + Freetarg int64 + Inactarg int64 + Wiredmax int64 + Nswapdev int64 + Swpages int64 + Swpginuse int64 + Swpgonly int64 + Nswget int64 + Unused1 int64 + Cpuhit int64 + Cpumiss int64 + Faults int64 + Traps int64 + Intrs int64 + Swtch int64 + Softs int64 + Syscalls int64 + Pageins int64 + Swapins int64 + Swapouts int64 + Pgswapin int64 + Pgswapout int64 + Forks int64 + Forks_ppwait int64 + Forks_sharevm int64 + Pga_zerohit int64 + Pga_zeromiss int64 + Zeroaborts int64 + Fltnoram int64 + Fltnoanon int64 + Fltpgwait int64 + Fltpgrele int64 + Fltrelck int64 + Fltrelckok int64 + Fltanget int64 + Fltanretry int64 + Fltamcopy int64 + Fltnamap int64 + Fltnomap int64 + Fltlget int64 + Fltget int64 + Flt_anon int64 + Flt_acow int64 + Flt_obj int64 + Flt_prcopy int64 + Flt_przero int64 + Pdwoke int64 + Pdrevs int64 + Unused4 int64 + Pdfreed int64 + Pdscans int64 + Pdanscan int64 + Pdobscan int64 + Pdreact int64 + Pdbusy int64 + Pdpageouts int64 + Pdpending int64 + Pddeact int64 + Anonpages int64 + Filepages int64 + Execpages int64 + Colorhit int64 + Colormiss int64 + Ncolors int64 + Bootpages int64 + Poolpages int64 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go new file mode 100644 index 0000000..afd13a3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -0,0 +1,568 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build 386 && openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa0 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go new file mode 100644 index 0000000..5d97f1f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -0,0 +1,568 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 0000000..34871cd --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,575 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm && openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go new file mode 100644 index 0000000..5911bce --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -0,0 +1,568 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build arm64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go new file mode 100644 index 0000000..e4f24f3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -0,0 +1,568 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build mips64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go new file mode 100644 index 0000000..ca50a79 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go @@ -0,0 +1,570 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build ppc64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go new file mode 100644 index 0000000..d7d7f79 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go @@ -0,0 +1,570 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x18 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Ifidx uint16 + Flowid uint16 + Flags uint8 + Drops uint8 +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x1 + AT_SYMLINK_NOFOLLOW = 0x2 + AT_SYMLINK_FOLLOW = 0x4 + AT_REMOVEDIR = 0x8 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x10 + +type Clockinfo struct { + Hz int32 + Tick int32 + Stathz int32 + Profhz int32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go new file mode 100644 index 0000000..1416057 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -0,0 +1,516 @@ +// cgo -godefs types_solaris.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build amd64 && solaris + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x400 + MaxHostNameLen = 0x100 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Blocks int64 + Fstype [16]int8 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Sysid int32 + Pid int32 + Pad [4]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Name [1]int8 + _ [5]byte +} + +type _Fsblkcnt_t uint64 + +type Statvfs_t struct { + Bsize uint64 + Frsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fsid uint64 + Basetype [16]int8 + Flag uint64 + Namemax uint64 + Fstr [32]int8 +} + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + _ uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [236]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Accrights *int8 + Accrightslen int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x20 + SizeofSockaddrAny = 0xfc + SizeofSockaddrUnix = 0x6e + SizeofSockaddrDatalink = 0xfc + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x24 + SizeofICMPv6Filter = 0x20 +) + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [257]byte + Nodename [257]byte + Release [257]byte + Version [257]byte + Machine [257]byte +} + +type Ustat_t struct { + Tfree int64 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +const ( + AT_FDCWD = 0xffd19553 + AT_SYMLINK_NOFOLLOW = 0x1000 + AT_SYMLINK_FOLLOW = 0x2000 + AT_REMOVEDIR = 0x1 + AT_EACCESS = 0x4 +) + +const ( + SizeofIfMsghdr = 0x54 + SizeofIfData = 0x44 + SizeofIfaMsghdr = 0x14 + SizeofRtMsghdr = 0x4c + SizeofRtMetrics = 0x28 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Metric int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + _ [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + _ [1]byte +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line int8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type fileObj struct { + Atim Timespec + Mtim Timespec + Ctim Timespec + Pad [3]uint64 + Name *int8 +} + +type portEvent struct { + Events int32 + Source uint16 + Pad uint16 + Object uint64 + User *byte +} + +const ( + PORT_SOURCE_AIO = 0x1 + PORT_SOURCE_TIMER = 0x2 + PORT_SOURCE_USER = 0x3 + PORT_SOURCE_FD = 0x4 + PORT_SOURCE_ALERT = 0x5 + PORT_SOURCE_MQ = 0x6 + PORT_SOURCE_FILE = 0x7 + PORT_ALERT_SET = 0x1 + PORT_ALERT_UPDATE = 0x2 + PORT_ALERT_INVALID = 0x3 + FILE_ACCESS = 0x1 + FILE_MODIFIED = 0x2 + FILE_ATTRIB = 0x4 + FILE_TRUNC = 0x100000 + FILE_NOFOLLOW = 0x10000000 + FILE_DELETE = 0x10 + FILE_RENAME_TO = 0x20 + FILE_RENAME_FROM = 0x40 + UNMOUNTED = 0x20000000 + MOUNTEDOVER = 0x40000000 + FILE_EXCEPTION = 0x60000070 +) + +const ( + TUNNEWPPA = 0x540001 + TUNSETPPA = 0x540002 + + I_STR = 0x5308 + I_POP = 0x5303 + I_PUSH = 0x5302 + I_LINK = 0x530c + I_UNLINK = 0x530d + I_PLINK = 0x5316 + I_PUNLINK = 0x5317 + + IF_UNITSEL = -0x7ffb8cca +) + +type strbuf struct { + Maxlen int32 + Len int32 + Buf *int8 +} + +type Strioctl struct { + Cmd int32 + Timout int32 + Len int32 + Dp *int8 +} + +type Lifreq struct { + Name [32]int8 + Lifru1 [4]byte + Type uint32 + Lifru [336]byte +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go new file mode 100644 index 0000000..2e5d5a4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -0,0 +1,552 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build zos && s390x + +// Hand edited based on ztypes_linux_s390x.go +// TODO: auto-generate. + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +const ( + SizeofSockaddrAny = 128 + SizeofCmsghdr = 12 + SizeofIPMreq = 8 + SizeofIPv6Mreq = 20 + SizeofICMPv6Filter = 32 + SizeofIPv6MTUInfo = 32 + SizeofInet4Pktinfo = 8 + SizeofInet6Pktinfo = 20 + SizeofLinger = 8 + SizeofSockaddrInet4 = 16 + SizeofSockaddrInet6 = 28 + SizeofTCPInfo = 0x68 + SizeofUcred = 12 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type timeval_zos struct { //correct (with padding and all) + Sec int64 + _ [4]byte // pad + Usec int32 +} + +type Tms struct { //clock_t is 4-byte unsigned int in zos + Utime uint32 + Stime uint32 + Cutime uint32 + Cstime uint32 +} + +type Time_t int64 + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Utsname struct { + Sysname [16]byte + Nodename [32]byte + Release [8]byte + Version [8]byte + Machine [16]byte +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [108]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + _ [112]uint8 // pad +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Iov *Iovec + Control *byte + Flags int32 + Namelen int32 + Iovlen int32 + Controllen int32 +} + +type Cmsghdr struct { + Len int32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Addr [4]byte /* in_addr */ + Ifindex uint32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type _Gid_t uint32 + +type rusage_zos struct { + Utime timeval_zos + Stime timeval_zos +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +// { int, short, short } in poll.h +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +type Stat_t struct { //Linux Definition + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type Stat_LE_t struct { + _ [4]byte // eye catcher + Length uint16 + Version uint16 + Mode int32 + Ino uint32 + Dev uint32 + Nlink int32 + Uid int32 + Gid int32 + Size int64 + Atim31 [4]byte + Mtim31 [4]byte + Ctim31 [4]byte + Rdev uint32 + Auditoraudit uint32 + Useraudit uint32 + Blksize int32 + Creatim31 [4]byte + AuditID [16]byte + _ [4]byte // rsrvd1 + File_tag struct { + Ccsid uint16 + Txtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14 + } + CharsetID [8]byte + Blocks int64 + Genvalue uint32 + Reftim31 [4]byte + Fid [8]byte + Filefmt byte + Fspflag2 byte + _ [2]byte // rsrvd2 + Ctimemsec int32 + Seclabel [8]byte + _ [4]byte // rsrvd3 + _ [4]byte // rsrvd4 + Atim Time_t + Mtim Time_t + Ctim Time_t + Creatim Time_t + Reftim Time_t + _ [24]byte // rsrvd5 +} + +type Statvfs_t struct { + ID [4]byte + Len int32 + Bsize uint64 + Blocks uint64 + Usedspace uint64 + Bavail uint64 + Flag uint64 + Maxfilesize int64 + _ [16]byte + Frsize uint64 + Bfree uint64 + Files uint32 + Ffree uint32 + Favail uint32 + Namemax31 uint32 + Invarsec uint32 + _ [4]byte + Fsid uint64 + Namemax uint64 +} + +type Statfs_t struct { + Type uint64 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint32 + Ffree uint32 + Fsid uint64 + Namelen uint64 + Frsize uint64 + Flags uint64 + _ [4]uint64 +} + +type direntLE struct { + Reclen uint16 + Namlen uint16 + Ino uint32 + Extra uintptr + Name [256]byte +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type FdSet struct { + Bits [64]int32 +} + +// This struct is packed on z/OS so it can't be used directly. +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type F_cnvrt struct { + Cvtcmd int32 + Pccsid int16 + Fccsid int16 +} + +type Termios struct { + Cflag uint32 + Iflag uint32 + Lflag uint32 + Oflag uint32 + Cc [11]uint8 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type W_Mnth struct { + Hid [4]byte + Size int32 + Cur1 int32 //32bit pointer + Cur2 int32 //^ + Devno uint32 + _ [4]byte +} + +type W_Mntent struct { + Fstype uint32 + Mode uint32 + Dev uint32 + Parentdev uint32 + Rootino uint32 + Status byte + Ddname [9]byte + Fstname [9]byte + Fsname [45]byte + Pathlen uint32 + Mountpoint [1024]byte + Jobname [8]byte + PID int32 + Parmoffset int32 + Parmlen int16 + Owner [8]byte + Quiesceowner [8]byte + _ [38]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 + Name string +} + +const ( + SizeofInotifyEvent = 0x10 +) + +type ConsMsg2 struct { + Cm2Format uint16 + Cm2R1 uint16 + Cm2Msglength uint32 + Cm2Msg *byte + Cm2R2 [4]byte + Cm2R3 [4]byte + Cm2Routcde *uint32 + Cm2Descr *uint32 + Cm2Msgflag uint32 + Cm2Token uint32 + Cm2Msgid *uint32 + Cm2R4 [4]byte + Cm2DomToken uint32 + Cm2DomMsgid *uint32 + Cm2ModCartptr *byte + Cm2ModConsidptr *byte + Cm2MsgCart [8]byte + Cm2MsgConsid [4]byte + Cm2R5 [12]byte +} + +const ( + CC_modify = 1 + CC_stop = 2 + CONSOLE_FORMAT_2 = 2 + CONSOLE_FORMAT_3 = 3 + CONSOLE_HRDCPY = 0x80000000 +) + +type OpenHow struct { + Flags uint64 + Mode uint64 + Resolve uint64 +} + +const SizeofOpenHow = 0x18 + +const ( + RESOLVE_CACHED = 0x20 + RESOLVE_BENEATH = 0x8 + RESOLVE_IN_ROOT = 0x10 + RESOLVE_NO_MAGICLINKS = 0x2 + RESOLVE_NO_SYMLINKS = 0x4 + RESOLVE_NO_XDEV = 0x1 +) + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + _ [44]byte +} + +type SysvIpcPerm struct { + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode int32 +} + +type SysvShmDesc struct { + Perm SysvIpcPerm + _ [4]byte + Lpid int32 + Cpid int32 + Nattch uint32 + _ [4]byte + _ [4]byte + _ [4]byte + _ int32 + _ uint8 + _ uint8 + _ uint16 + _ *byte + Segsz uint64 + Atime Time_t + Dtime Time_t + Ctime Time_t +} + +type SysvShmDesc64 struct { + Perm SysvIpcPerm + _ [4]byte + Lpid int32 + Cpid int32 + Nattch uint32 + _ [4]byte + _ [4]byte + _ [4]byte + _ int32 + _ byte + _ uint8 + _ uint16 + _ *byte + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/aliases.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/aliases.go new file mode 100644 index 0000000..9631796 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/aliases.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +import "syscall" + +type Signal = syscall.Signal +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/dll_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/dll_windows.go new file mode 100644 index 0000000..1157b06 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/dll_windows.go @@ -0,0 +1,380 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "sync" + "sync/atomic" + "syscall" + "unsafe" +) + +// We need to use LoadLibrary and GetProcAddress from the Go runtime, because +// the these symbols are loaded by the system linker and are required to +// dynamically load additional symbols. Note that in the Go runtime, these +// return syscall.Handle and syscall.Errno, but these are the same, in fact, +// as windows.Handle and windows.Errno, and we intend to keep these the same. + +//go:linkname syscall_loadlibrary syscall.loadlibrary +func syscall_loadlibrary(filename *uint16) (handle Handle, err Errno) + +//go:linkname syscall_getprocaddress syscall.getprocaddress +func syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno) + +// DLLError describes reasons for DLL load failures. +type DLLError struct { + Err error + ObjName string + Msg string +} + +func (e *DLLError) Error() string { return e.Msg } + +func (e *DLLError) Unwrap() error { return e.Err } + +// A DLL implements access to a single DLL. +type DLL struct { + Name string + Handle Handle +} + +// LoadDLL loads DLL file into memory. +// +// Warning: using LoadDLL without an absolute path name is subject to +// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL], +// or use [LoadLibraryEx] directly. +func LoadDLL(name string) (dll *DLL, err error) { + namep, err := UTF16PtrFromString(name) + if err != nil { + return nil, err + } + h, e := syscall_loadlibrary(namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to load " + name + ": " + e.Error(), + } + } + d := &DLL{ + Name: name, + Handle: h, + } + return d, nil +} + +// MustLoadDLL is like LoadDLL but panics if load operation fails. +func MustLoadDLL(name string) *DLL { + d, e := LoadDLL(name) + if e != nil { + panic(e) + } + return d +} + +// FindProc searches DLL d for procedure named name and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProc(name string) (proc *Proc, err error) { + namep, err := BytePtrFromString(name) + if err != nil { + return nil, err + } + a, e := syscall_getprocaddress(d.Handle, namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProc is like FindProc but panics if search fails. +func (d *DLL) MustFindProc(name string) *Proc { + p, e := d.FindProc(name) + if e != nil { + panic(e) + } + return p +} + +// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) { + a, e := GetProcAddressByOrdinal(d.Handle, ordinal) + name := "#" + itoa(int(ordinal)) + if e != nil { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails. +func (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc { + p, e := d.FindProcByOrdinal(ordinal) + if e != nil { + panic(e) + } + return p +} + +// Release unloads DLL d from memory. +func (d *DLL) Release() (err error) { + return FreeLibrary(d.Handle) +} + +// A Proc implements access to a procedure inside a DLL. +type Proc struct { + Dll *DLL + Name string + addr uintptr +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +func (p *Proc) Addr() uintptr { + return p.addr +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + return syscall.SyscallN(p.Addr(), a...) +} + +// A LazyDLL implements access to a single DLL. +// It will delay the load of the DLL until the first +// call to its Handle method or to one of its +// LazyProc's Addr method. +type LazyDLL struct { + Name string + + // System determines whether the DLL must be loaded from the + // Windows System directory, bypassing the normal DLL search + // path. + System bool + + mu sync.Mutex + dll *DLL // non nil once DLL is loaded +} + +// Load loads DLL file d.Name into memory. It returns an error if fails. +// Load will not try to load DLL, if it is already loaded into memory. +func (d *LazyDLL) Load() error { + // Non-racy version of: + // if d.dll != nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil { + return nil + } + d.mu.Lock() + defer d.mu.Unlock() + if d.dll != nil { + return nil + } + + // kernel32.dll is special, since it's where LoadLibraryEx comes from. + // The kernel already special-cases its name, so it's always + // loaded from system32. + var dll *DLL + var err error + if d.Name == "kernel32.dll" { + dll, err = LoadDLL(d.Name) + } else { + dll, err = loadLibraryEx(d.Name, d.System) + } + if err != nil { + return err + } + + // Non-racy version of: + // d.dll = dll + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll)) + return nil +} + +// mustLoad is like Load but panics if search fails. +func (d *LazyDLL) mustLoad() { + e := d.Load() + if e != nil { + panic(e) + } +} + +// Handle returns d's module handle. +func (d *LazyDLL) Handle() uintptr { + d.mustLoad() + return uintptr(d.dll.Handle) +} + +// NewProc returns a LazyProc for accessing the named procedure in the DLL d. +func (d *LazyDLL) NewProc(name string) *LazyProc { + return &LazyProc{l: d, Name: name} +} + +// NewLazyDLL creates new LazyDLL associated with DLL file. +// +// Warning: using NewLazyDLL without an absolute path name is subject to +// DLL preloading attacks. To safely load a system DLL, use [NewLazySystemDLL]. +func NewLazyDLL(name string) *LazyDLL { + return &LazyDLL{Name: name} +} + +// NewLazySystemDLL is like NewLazyDLL, but will only +// search Windows System directory for the DLL if name is +// a base name (like "advapi32.dll"). +func NewLazySystemDLL(name string) *LazyDLL { + return &LazyDLL{Name: name, System: true} +} + +// A LazyProc implements access to a procedure inside a LazyDLL. +// It delays the lookup until the Addr method is called. +type LazyProc struct { + Name string + + mu sync.Mutex + l *LazyDLL + proc *Proc +} + +// Find searches DLL for procedure named p.Name. It returns +// an error if search fails. Find will not search procedure, +// if it is already found and loaded into memory. +func (p *LazyProc) Find() error { + // Non-racy version of: + // if p.proc == nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil { + p.mu.Lock() + defer p.mu.Unlock() + if p.proc == nil { + e := p.l.Load() + if e != nil { + return e + } + proc, e := p.l.dll.FindProc(p.Name) + if e != nil { + return e + } + // Non-racy version of: + // p.proc = proc + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc)) + } + } + return nil +} + +// mustFind is like Find but panics if search fails. +func (p *LazyProc) mustFind() { + e := p.Find() + if e != nil { + panic(e) + } +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +// It will panic if the procedure cannot be found. +func (p *LazyProc) Addr() uintptr { + p.mustFind() + return p.proc.Addr() +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. It will also panic if the procedure cannot be found. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + p.mustFind() + return p.proc.Call(a...) +} + +var canDoSearchSystem32Once struct { + sync.Once + v bool +} + +func initCanDoSearchSystem32() { + // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says: + // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows + // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on + // systems that have KB2533623 installed. To determine whether the + // flags are available, use GetProcAddress to get the address of the + // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories + // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_* + // flags can be used with LoadLibraryEx." + canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil) +} + +func canDoSearchSystem32() bool { + canDoSearchSystem32Once.Do(initCanDoSearchSystem32) + return canDoSearchSystem32Once.v +} + +func isBaseName(name string) bool { + for _, c := range name { + if c == ':' || c == '/' || c == '\\' { + return false + } + } + return true +} + +// loadLibraryEx wraps the Windows LoadLibraryEx function. +// +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx +// +// If name is not an absolute path, LoadLibraryEx searches for the DLL +// in a variety of automatic locations unless constrained by flags. +// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx +func loadLibraryEx(name string, system bool) (*DLL, error) { + loadDLL := name + var flags uintptr + if system { + if canDoSearchSystem32() { + flags = LOAD_LIBRARY_SEARCH_SYSTEM32 + } else if isBaseName(name) { + // WindowsXP or unpatched Windows machine + // trying to load "foo.dll" out of the system + // folder, but LoadLibraryEx doesn't support + // that yet on their system, so emulate it. + systemdir, err := GetSystemDirectory() + if err != nil { + return nil, err + } + loadDLL = systemdir + "\\" + name + } + } + h, err := LoadLibraryEx(loadDLL, 0, flags) + if err != nil { + return nil, err + } + return &DLL{Name: name, Handle: h}, nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/env_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/env_windows.go new file mode 100644 index 0000000..d4577a4 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/env_windows.go @@ -0,0 +1,57 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows environment variables. + +package windows + +import ( + "syscall" + "unsafe" +) + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +// Returns a default environment associated with the token, rather than the current +// process. If inheritExisting is true, then this environment also inherits the +// environment of the current process. +func (token Token) Environ(inheritExisting bool) (env []string, err error) { + var block *uint16 + err = CreateEnvironmentBlock(&block, token, inheritExisting) + if err != nil { + return nil, err + } + defer DestroyEnvironmentBlock(block) + size := unsafe.Sizeof(*block) + for *block != 0 { + // find NUL terminator + end := unsafe.Pointer(block) + for *(*uint16)(end) != 0 { + end = unsafe.Add(end, size) + } + + entry := unsafe.Slice(block, (uintptr(end)-uintptr(unsafe.Pointer(block)))/size) + env = append(env, UTF16ToString(entry)) + block = (*uint16)(unsafe.Add(end, size)) + } + return env, nil +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/eventlog.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/eventlog.go new file mode 100644 index 0000000..6c36695 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/eventlog.go @@ -0,0 +1,20 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +const ( + EVENTLOG_SUCCESS = 0 + EVENTLOG_ERROR_TYPE = 1 + EVENTLOG_WARNING_TYPE = 2 + EVENTLOG_INFORMATION_TYPE = 4 + EVENTLOG_AUDIT_SUCCESS = 8 + EVENTLOG_AUDIT_FAILURE = 16 +) + +//sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW +//sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource +//sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/exec_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/exec_windows.go new file mode 100644 index 0000000..9cabbb6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/exec_windows.go @@ -0,0 +1,248 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Fork, exec, wait, etc. + +package windows + +import ( + errorspkg "errors" + "unsafe" +) + +// EscapeArg rewrites command line argument s as prescribed +// in http://msdn.microsoft.com/en-us/library/ms880421. +// This function returns "" (2 double quotes) if s is empty. +// Alternatively, these transformations are done: +// - every back slash (\) is doubled, but only if immediately +// followed by double quote ("); +// - every double quote (") is escaped by back slash (\); +// - finally, s is wrapped with double quotes (arg -> "arg"), +// but only if there is space or tab inside s. +func EscapeArg(s string) string { + if len(s) == 0 { + return `""` + } + n := len(s) + hasSpace := false + for i := 0; i < len(s); i++ { + switch s[i] { + case '"', '\\': + n++ + case ' ', '\t': + hasSpace = true + } + } + if hasSpace { + n += 2 // Reserve space for quotes. + } + if n == len(s) { + return s + } + + qs := make([]byte, n) + j := 0 + if hasSpace { + qs[j] = '"' + j++ + } + slashes := 0 + for i := 0; i < len(s); i++ { + switch s[i] { + default: + slashes = 0 + qs[j] = s[i] + case '\\': + slashes++ + qs[j] = s[i] + case '"': + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '\\' + j++ + qs[j] = s[i] + } + j++ + } + if hasSpace { + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '"' + j++ + } + return string(qs[:j]) +} + +// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line, +// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument, +// or any program that uses CommandLineToArgv. +func ComposeCommandLine(args []string) string { + if len(args) == 0 { + return "" + } + + // Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw: + // “This function accepts command lines that contain a program name; the + // program name can be enclosed in quotation marks or not.” + // + // Unfortunately, it provides no means of escaping interior quotation marks + // within that program name, and we have no way to report them here. + prog := args[0] + mustQuote := len(prog) == 0 + for i := 0; i < len(prog); i++ { + c := prog[i] + if c <= ' ' || (c == '"' && i == 0) { + // Force quotes for not only the ASCII space and tab as described in the + // MSDN article, but also ASCII control characters. + // The documentation for CommandLineToArgvW doesn't say what happens when + // the first argument is not a valid program name, but it empirically + // seems to drop unquoted control characters. + mustQuote = true + break + } + } + var commandLine []byte + if mustQuote { + commandLine = make([]byte, 0, len(prog)+2) + commandLine = append(commandLine, '"') + for i := 0; i < len(prog); i++ { + c := prog[i] + if c == '"' { + // This quote would interfere with our surrounding quotes. + // We have no way to report an error, so just strip out + // the offending character instead. + continue + } + commandLine = append(commandLine, c) + } + commandLine = append(commandLine, '"') + } else { + if len(args) == 1 { + // args[0] is a valid command line representing itself. + // No need to allocate a new slice or string for it. + return prog + } + commandLine = []byte(prog) + } + + for _, arg := range args[1:] { + commandLine = append(commandLine, ' ') + // TODO(bcmills): since we're already appending to a slice, it would be nice + // to avoid the intermediate allocations of EscapeArg. + // Perhaps we can factor out an appendEscapedArg function. + commandLine = append(commandLine, EscapeArg(arg)...) + } + return string(commandLine) +} + +// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv, +// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that +// command lines are passed around. +// DecomposeCommandLine returns an error if commandLine contains NUL. +func DecomposeCommandLine(commandLine string) ([]string, error) { + if len(commandLine) == 0 { + return []string{}, nil + } + utf16CommandLine, err := UTF16FromString(commandLine) + if err != nil { + return nil, errorspkg.New("string with NUL passed to DecomposeCommandLine") + } + var argc int32 + argv, err := commandLineToArgv(&utf16CommandLine[0], &argc) + if err != nil { + return nil, err + } + defer LocalFree(Handle(unsafe.Pointer(argv))) + + var args []string + for _, p := range unsafe.Slice(argv, argc) { + args = append(args, UTF16PtrToString(p)) + } + return args, nil +} + +// CommandLineToArgv parses a Unicode command line string and sets +// argc to the number of parsed arguments. +// +// The returned memory should be freed using a single call to LocalFree. +// +// Note that although the return type of CommandLineToArgv indicates 8192 +// entries of up to 8192 characters each, the actual count of parsed arguments +// may exceed 8192, and the documentation for CommandLineToArgvW does not mention +// any bound on the lengths of the individual argument strings. +// (See https://go.dev/issue/63236.) +func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { + argp, err := commandLineToArgv(cmd, argc) + argv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp)) + return argv, err +} + +func CloseOnExec(fd Handle) { + SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) +} + +// FullPath retrieves the full path of the specified file. +func FullPath(name string) (path string, err error) { + p, err := UTF16PtrFromString(name) + if err != nil { + return "", err + } + n := uint32(100) + for { + buf := make([]uint16, n) + n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil) + if err != nil { + return "", err + } + if n <= uint32(len(buf)) { + return UTF16ToString(buf[:n]), nil + } + } +} + +// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes. +func NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) { + var size uintptr + err := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size) + if err != ERROR_INSUFFICIENT_BUFFER { + if err == nil { + return nil, errorspkg.New("unable to query buffer size from InitializeProcThreadAttributeList") + } + return nil, err + } + alloc, err := LocalAlloc(LMEM_FIXED, uint32(size)) + if err != nil { + return nil, err + } + // size is guaranteed to be ≥1 by InitializeProcThreadAttributeList. + al := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))} + err = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size) + if err != nil { + return nil, err + } + return al, err +} + +// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute. +func (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error { + al.pointers = append(al.pointers, value) + return updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil) +} + +// Delete frees ProcThreadAttributeList's resources. +func (al *ProcThreadAttributeListContainer) Delete() { + deleteProcThreadAttributeList(al.data) + LocalFree(Handle(unsafe.Pointer(al.data))) + al.data = nil + al.pointers = nil +} + +// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx. +func (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList { + return al.data +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/memory_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/memory_windows.go new file mode 100644 index 0000000..6dc0920 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/memory_windows.go @@ -0,0 +1,48 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +const ( + MEM_COMMIT = 0x00001000 + MEM_RESERVE = 0x00002000 + MEM_DECOMMIT = 0x00004000 + MEM_RELEASE = 0x00008000 + MEM_RESET = 0x00080000 + MEM_TOP_DOWN = 0x00100000 + MEM_WRITE_WATCH = 0x00200000 + MEM_PHYSICAL = 0x00400000 + MEM_RESET_UNDO = 0x01000000 + MEM_LARGE_PAGES = 0x20000000 + + PAGE_NOACCESS = 0x00000001 + PAGE_READONLY = 0x00000002 + PAGE_READWRITE = 0x00000004 + PAGE_WRITECOPY = 0x00000008 + PAGE_EXECUTE = 0x00000010 + PAGE_EXECUTE_READ = 0x00000020 + PAGE_EXECUTE_READWRITE = 0x00000040 + PAGE_EXECUTE_WRITECOPY = 0x00000080 + PAGE_GUARD = 0x00000100 + PAGE_NOCACHE = 0x00000200 + PAGE_WRITECOMBINE = 0x00000400 + PAGE_TARGETS_INVALID = 0x40000000 + PAGE_TARGETS_NO_UPDATE = 0x40000000 + + QUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002 + QUOTA_LIMITS_HARDWS_MIN_ENABLE = 0x00000001 + QUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008 + QUOTA_LIMITS_HARDWS_MAX_ENABLE = 0x00000004 +) + +type MemoryBasicInformation struct { + BaseAddress uintptr + AllocationBase uintptr + AllocationProtect uint32 + PartitionId uint16 + RegionSize uintptr + State uint32 + Protect uint32 + Type uint32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkerrors.bash b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkerrors.bash new file mode 100644 index 0000000..58e0188 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -0,0 +1,70 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" +[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } +ntstatus="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)" +[[ -n $ntstatus ]] || { echo "Unable to find ntstatus.h" >&2; exit 1; } + +declare -A errors + +{ + echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT." + echo + echo "package windows" + echo "import \"syscall\"" + echo "const (" + + while read -r line; do + unset vtype + if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + else + continue + fi + [[ -n $key && -n $value ]] || continue + [[ -z ${errors["$key"]} ]] || continue + errors["$key"]="$value" + if [[ -v vtype ]]; then + if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then + vtype="" + elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then + vtype="Handle" + else + vtype="syscall.Errno" + fi + last_vtype="$vtype" + else + vtype="" + if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then + value="S_OK" + elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then + value="ERROR_SUCCESS" + fi + fi + + echo "$key $vtype = $value" + done < "$winerror" + + while read -r line; do + [[ $line =~ ^#define\ (STATUS_[^\s]+)\ +\(\(NTSTATUS\)((0x)?[0-9a-fA-F]+)L?\) ]] || continue + echo "${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}" + done < "$ntstatus" + + echo ")" +} | gofmt > "zerrors_windows.go" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkknownfolderids.bash new file mode 100644 index 0000000..ab8924e --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mkknownfolderids.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)" +[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; } + +{ + echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT." + echo + echo "package windows" + echo "type KNOWNFOLDERID GUID" + echo "var (" + while read -r line; do + [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue + printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \ + "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \ + $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \ + $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" )) + done < "$knownfolders" + echo ")" +} | gofmt > "zknownfolderids_windows.go" diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mksyscall.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mksyscall.go new file mode 100644 index 0000000..dbcdb09 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/mksyscall.go @@ -0,0 +1,9 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build generate + +package windows + +//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race.go new file mode 100644 index 0000000..0f1bdc3 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows && race + +package windows + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race0.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race0.go new file mode 100644 index 0000000..0c78da7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows && !race + +package windows + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/security_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/security_windows.go new file mode 100644 index 0000000..6c955ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/security_windows.go @@ -0,0 +1,1501 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "syscall" + "unsafe" +) + +const ( + NameUnknown = 0 + NameFullyQualifiedDN = 1 + NameSamCompatible = 2 + NameDisplay = 3 + NameUniqueId = 6 + NameCanonical = 7 + NameUserPrincipal = 8 + NameCanonicalEx = 9 + NameServicePrincipal = 10 + NameDnsDomain = 12 +) + +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx +//sys TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW +//sys GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW + +// TranslateAccountName converts a directory service +// object name from one format to another. +func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) { + u, e := UTF16PtrFromString(username) + if e != nil { + return "", e + } + n := uint32(50) + for { + b := make([]uint16, n) + e = TranslateName(u, from, to, &b[0], &n) + if e == nil { + return UTF16ToString(b[:n]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +const ( + // do not reorder + NetSetupUnknownStatus = iota + NetSetupUnjoined + NetSetupWorkgroupName + NetSetupDomainName +) + +type UserInfo10 struct { + Name *uint16 + Comment *uint16 + UsrComment *uint16 + FullName *uint16 +} + +//sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo +//sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation +//sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree +//sys NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) = netapi32.NetUserEnum + +const ( + // do not reorder + SidTypeUser = 1 + iota + SidTypeGroup + SidTypeDomain + SidTypeAlias + SidTypeWellKnownGroup + SidTypeDeletedAccount + SidTypeInvalid + SidTypeUnknown + SidTypeComputer + SidTypeLabel +) + +type SidIdentifierAuthority struct { + Value [6]byte +} + +var ( + SECURITY_NULL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}} + SECURITY_WORLD_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}} + SECURITY_LOCAL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}} + SECURITY_CREATOR_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}} + SECURITY_NON_UNIQUE_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}} + SECURITY_NT_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}} + SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}} +) + +const ( + SECURITY_NULL_RID = 0 + SECURITY_WORLD_RID = 0 + SECURITY_LOCAL_RID = 0 + SECURITY_CREATOR_OWNER_RID = 0 + SECURITY_CREATOR_GROUP_RID = 1 + SECURITY_DIALUP_RID = 1 + SECURITY_NETWORK_RID = 2 + SECURITY_BATCH_RID = 3 + SECURITY_INTERACTIVE_RID = 4 + SECURITY_LOGON_IDS_RID = 5 + SECURITY_SERVICE_RID = 6 + SECURITY_LOCAL_SYSTEM_RID = 18 + SECURITY_BUILTIN_DOMAIN_RID = 32 + SECURITY_PRINCIPAL_SELF_RID = 10 + SECURITY_CREATOR_OWNER_SERVER_RID = 0x2 + SECURITY_CREATOR_GROUP_SERVER_RID = 0x3 + SECURITY_LOGON_IDS_RID_COUNT = 0x3 + SECURITY_ANONYMOUS_LOGON_RID = 0x7 + SECURITY_PROXY_RID = 0x8 + SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9 + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID + SECURITY_AUTHENTICATED_USER_RID = 0xb + SECURITY_RESTRICTED_CODE_RID = 0xc + SECURITY_NT_NON_UNIQUE_RID = 0x15 +) + +// Predefined domain-relative RIDs for local groups. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx +const ( + DOMAIN_ALIAS_RID_ADMINS = 0x220 + DOMAIN_ALIAS_RID_USERS = 0x221 + DOMAIN_ALIAS_RID_GUESTS = 0x222 + DOMAIN_ALIAS_RID_POWER_USERS = 0x223 + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224 + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225 + DOMAIN_ALIAS_RID_PRINT_OPS = 0x226 + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227 + DOMAIN_ALIAS_RID_REPLICATOR = 0x228 + DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229 + DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a + DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b + DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c + DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d + DOMAIN_ALIAS_RID_MONITORING_USERS = 0x22e + DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f + DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230 + DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231 + DOMAIN_ALIAS_RID_DCOM_USERS = 0x232 + DOMAIN_ALIAS_RID_IUSERS = 0x238 + DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239 + DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b + DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c + DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d + DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e +) + +//sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW +//sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW +//sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW +//sys ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW +//sys GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid +//sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid +//sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid +//sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid +//sys isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid +//sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid +//sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid +//sys getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority +//sys getSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount +//sys getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority +//sys isValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid + +// The security identifier (SID) structure is a variable-length +// structure used to uniquely identify users or groups. +type SID struct{} + +// StringToSid converts a string-format security identifier +// SID into a valid, functional SID. +func StringToSid(s string) (*SID, error) { + var sid *SID + p, e := UTF16PtrFromString(s) + if e != nil { + return nil, e + } + e = ConvertStringSidToSid(p, &sid) + if e != nil { + return nil, e + } + defer LocalFree((Handle)(unsafe.Pointer(sid))) + return sid.Copy() +} + +// LookupSID retrieves a security identifier SID for the account +// and the name of the domain on which the account was found. +// System specify target computer to search. +func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { + if len(account) == 0 { + return nil, "", 0, syscall.EINVAL + } + acc, e := UTF16PtrFromString(account) + if e != nil { + return nil, "", 0, e + } + var sys *uint16 + if len(system) > 0 { + sys, e = UTF16PtrFromString(system) + if e != nil { + return nil, "", 0, e + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]byte, n) + db := make([]uint16, dn) + sid = (*SID)(unsafe.Pointer(&b[0])) + e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) + if e == nil { + return sid, UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, "", 0, e + } + if n <= uint32(len(b)) { + return nil, "", 0, e + } + } +} + +// String converts SID to a string format suitable for display, storage, or transmission. +func (sid *SID) String() string { + var s *uint16 + e := ConvertSidToStringSid(sid, &s) + if e != nil { + return "" + } + defer LocalFree((Handle)(unsafe.Pointer(s))) + return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]) +} + +// Len returns the length, in bytes, of a valid security identifier SID. +func (sid *SID) Len() int { + return int(GetLengthSid(sid)) +} + +// Copy creates a duplicate of security identifier SID. +func (sid *SID) Copy() (*SID, error) { + b := make([]byte, sid.Len()) + sid2 := (*SID)(unsafe.Pointer(&b[0])) + e := CopySid(uint32(len(b)), sid2, sid) + if e != nil { + return nil, e + } + return sid2, nil +} + +// IdentifierAuthority returns the identifier authority of the SID. +func (sid *SID) IdentifierAuthority() SidIdentifierAuthority { + return *getSidIdentifierAuthority(sid) +} + +// SubAuthorityCount returns the number of sub-authorities in the SID. +func (sid *SID) SubAuthorityCount() uint8 { + return *getSidSubAuthorityCount(sid) +} + +// SubAuthority returns the sub-authority of the SID as specified by +// the index, which must be less than sid.SubAuthorityCount(). +func (sid *SID) SubAuthority(idx uint32) uint32 { + if idx >= uint32(sid.SubAuthorityCount()) { + panic("sub-authority index out of range") + } + return *getSidSubAuthority(sid, idx) +} + +// IsValid returns whether the SID has a valid revision and length. +func (sid *SID) IsValid() bool { + return isValidSid(sid) +} + +// Equals compares two SIDs for equality. +func (sid *SID) Equals(sid2 *SID) bool { + return EqualSid(sid, sid2) +} + +// IsWellKnown determines whether the SID matches the well-known sidType. +func (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool { + return isWellKnownSid(sid, sidType) +} + +// LookupAccount retrieves the name of the account for this SID +// and the name of the first domain on which this SID is found. +// System specify target computer to search for. +func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { + var sys *uint16 + if len(system) > 0 { + sys, err = UTF16PtrFromString(system) + if err != nil { + return "", "", 0, err + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]uint16, n) + db := make([]uint16, dn) + e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType) + if e == nil { + return UTF16ToString(b), UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", "", 0, e + } + if n <= uint32(len(b)) { + return "", "", 0, e + } + } +} + +// Various types of pre-specified SIDs that can be synthesized and compared at runtime. +type WELL_KNOWN_SID_TYPE uint32 + +const ( + WinNullSid = 0 + WinWorldSid = 1 + WinLocalSid = 2 + WinCreatorOwnerSid = 3 + WinCreatorGroupSid = 4 + WinCreatorOwnerServerSid = 5 + WinCreatorGroupServerSid = 6 + WinNtAuthoritySid = 7 + WinDialupSid = 8 + WinNetworkSid = 9 + WinBatchSid = 10 + WinInteractiveSid = 11 + WinServiceSid = 12 + WinAnonymousSid = 13 + WinProxySid = 14 + WinEnterpriseControllersSid = 15 + WinSelfSid = 16 + WinAuthenticatedUserSid = 17 + WinRestrictedCodeSid = 18 + WinTerminalServerSid = 19 + WinRemoteLogonIdSid = 20 + WinLogonIdsSid = 21 + WinLocalSystemSid = 22 + WinLocalServiceSid = 23 + WinNetworkServiceSid = 24 + WinBuiltinDomainSid = 25 + WinBuiltinAdministratorsSid = 26 + WinBuiltinUsersSid = 27 + WinBuiltinGuestsSid = 28 + WinBuiltinPowerUsersSid = 29 + WinBuiltinAccountOperatorsSid = 30 + WinBuiltinSystemOperatorsSid = 31 + WinBuiltinPrintOperatorsSid = 32 + WinBuiltinBackupOperatorsSid = 33 + WinBuiltinReplicatorSid = 34 + WinBuiltinPreWindows2000CompatibleAccessSid = 35 + WinBuiltinRemoteDesktopUsersSid = 36 + WinBuiltinNetworkConfigurationOperatorsSid = 37 + WinAccountAdministratorSid = 38 + WinAccountGuestSid = 39 + WinAccountKrbtgtSid = 40 + WinAccountDomainAdminsSid = 41 + WinAccountDomainUsersSid = 42 + WinAccountDomainGuestsSid = 43 + WinAccountComputersSid = 44 + WinAccountControllersSid = 45 + WinAccountCertAdminsSid = 46 + WinAccountSchemaAdminsSid = 47 + WinAccountEnterpriseAdminsSid = 48 + WinAccountPolicyAdminsSid = 49 + WinAccountRasAndIasServersSid = 50 + WinNTLMAuthenticationSid = 51 + WinDigestAuthenticationSid = 52 + WinSChannelAuthenticationSid = 53 + WinThisOrganizationSid = 54 + WinOtherOrganizationSid = 55 + WinBuiltinIncomingForestTrustBuildersSid = 56 + WinBuiltinPerfMonitoringUsersSid = 57 + WinBuiltinPerfLoggingUsersSid = 58 + WinBuiltinAuthorizationAccessSid = 59 + WinBuiltinTerminalServerLicenseServersSid = 60 + WinBuiltinDCOMUsersSid = 61 + WinBuiltinIUsersSid = 62 + WinIUserSid = 63 + WinBuiltinCryptoOperatorsSid = 64 + WinUntrustedLabelSid = 65 + WinLowLabelSid = 66 + WinMediumLabelSid = 67 + WinHighLabelSid = 68 + WinSystemLabelSid = 69 + WinWriteRestrictedCodeSid = 70 + WinCreatorOwnerRightsSid = 71 + WinCacheablePrincipalsGroupSid = 72 + WinNonCacheablePrincipalsGroupSid = 73 + WinEnterpriseReadonlyControllersSid = 74 + WinAccountReadonlyControllersSid = 75 + WinBuiltinEventLogReadersGroup = 76 + WinNewEnterpriseReadonlyControllersSid = 77 + WinBuiltinCertSvcDComAccessGroup = 78 + WinMediumPlusLabelSid = 79 + WinLocalLogonSid = 80 + WinConsoleLogonSid = 81 + WinThisOrganizationCertificateSid = 82 + WinApplicationPackageAuthoritySid = 83 + WinBuiltinAnyPackageSid = 84 + WinCapabilityInternetClientSid = 85 + WinCapabilityInternetClientServerSid = 86 + WinCapabilityPrivateNetworkClientServerSid = 87 + WinCapabilityPicturesLibrarySid = 88 + WinCapabilityVideosLibrarySid = 89 + WinCapabilityMusicLibrarySid = 90 + WinCapabilityDocumentsLibrarySid = 91 + WinCapabilitySharedUserCertificatesSid = 92 + WinCapabilityEnterpriseAuthenticationSid = 93 + WinCapabilityRemovableStorageSid = 94 + WinBuiltinRDSRemoteAccessServersSid = 95 + WinBuiltinRDSEndpointServersSid = 96 + WinBuiltinRDSManagementServersSid = 97 + WinUserModeDriversSid = 98 + WinBuiltinHyperVAdminsSid = 99 + WinAccountCloneableControllersSid = 100 + WinBuiltinAccessControlAssistanceOperatorsSid = 101 + WinBuiltinRemoteManagementUsersSid = 102 + WinAuthenticationAuthorityAssertedSid = 103 + WinAuthenticationServiceAssertedSid = 104 + WinLocalAccountSid = 105 + WinLocalAccountAndAdministratorSid = 106 + WinAccountProtectedUsersSid = 107 + WinCapabilityAppointmentsSid = 108 + WinCapabilityContactsSid = 109 + WinAccountDefaultSystemManagedSid = 110 + WinBuiltinDefaultSystemManagedGroupSid = 111 + WinBuiltinStorageReplicaAdminsSid = 112 + WinAccountKeyAdminsSid = 113 + WinAccountEnterpriseKeyAdminsSid = 114 + WinAuthenticationKeyTrustSid = 115 + WinAuthenticationKeyPropertyMFASid = 116 + WinAuthenticationKeyPropertyAttestationSid = 117 + WinAuthenticationFreshKeyAuthSid = 118 + WinBuiltinDeviceOwnersSid = 119 +) + +// Creates a SID for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the local machine. +func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { + return CreateWellKnownDomainSid(sidType, nil) +} + +// Creates a SID for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the domain specified by the domainSid parameter. +func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { + n := uint32(50) + for { + b := make([]byte, n) + sid := (*SID)(unsafe.Pointer(&b[0])) + err := createWellKnownSid(sidType, domainSid, sid, &n) + if err == nil { + return sid, nil + } + if err != ERROR_INSUFFICIENT_BUFFER { + return nil, err + } + if n <= uint32(len(b)) { + return nil, err + } + } +} + +const ( + // do not reorder + TOKEN_ASSIGN_PRIMARY = 1 << iota + TOKEN_DUPLICATE + TOKEN_IMPERSONATE + TOKEN_QUERY + TOKEN_QUERY_SOURCE + TOKEN_ADJUST_PRIVILEGES + TOKEN_ADJUST_GROUPS + TOKEN_ADJUST_DEFAULT + TOKEN_ADJUST_SESSIONID + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | + TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | + TOKEN_IMPERSONATE | + TOKEN_QUERY | + TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY + TOKEN_WRITE = STANDARD_RIGHTS_WRITE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE +) + +const ( + // do not reorder + TokenUser = 1 + iota + TokenGroups + TokenPrivileges + TokenOwner + TokenPrimaryGroup + TokenDefaultDacl + TokenSource + TokenType + TokenImpersonationLevel + TokenStatistics + TokenRestrictedSids + TokenSessionId + TokenGroupsAndPrivileges + TokenSessionReference + TokenSandBoxInert + TokenAuditPolicy + TokenOrigin + TokenElevationType + TokenLinkedToken + TokenElevation + TokenHasRestrictions + TokenAccessInformation + TokenVirtualizationAllowed + TokenVirtualizationEnabled + TokenIntegrityLevel + TokenUIAccess + TokenMandatoryPolicy + TokenLogonSid + MaxTokenInfoClass +) + +// Group attributes inside of Tokengroups.Groups[i].Attributes +const ( + SE_GROUP_MANDATORY = 0x00000001 + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 + SE_GROUP_ENABLED = 0x00000004 + SE_GROUP_OWNER = 0x00000008 + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 + SE_GROUP_INTEGRITY = 0x00000020 + SE_GROUP_INTEGRITY_ENABLED = 0x00000040 + SE_GROUP_LOGON_ID = 0xC0000000 + SE_GROUP_RESOURCE = 0x20000000 + SE_GROUP_VALID_ATTRIBUTES = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED +) + +// Privilege attributes +const ( + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 + SE_PRIVILEGE_ENABLED = 0x00000002 + SE_PRIVILEGE_REMOVED = 0x00000004 + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 + SE_PRIVILEGE_VALID_ATTRIBUTES = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS +) + +// Token types +const ( + TokenPrimary = 1 + TokenImpersonation = 2 +) + +// Impersonation levels +const ( + SecurityAnonymous = 0 + SecurityIdentification = 1 + SecurityImpersonation = 2 + SecurityDelegation = 3 +) + +type LUID struct { + LowPart uint32 + HighPart int32 +} + +type LUIDAndAttributes struct { + Luid LUID + Attributes uint32 +} + +type SIDAndAttributes struct { + Sid *SID + Attributes uint32 +} + +type Tokenuser struct { + User SIDAndAttributes +} + +type Tokenprimarygroup struct { + PrimaryGroup *SID +} + +type Tokengroups struct { + GroupCount uint32 + Groups [1]SIDAndAttributes // Use AllGroups() for iterating. +} + +// AllGroups returns a slice that can be used to iterate over the groups in g. +func (g *Tokengroups) AllGroups() []SIDAndAttributes { + return (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount] +} + +type Tokenprivileges struct { + PrivilegeCount uint32 + Privileges [1]LUIDAndAttributes // Use AllPrivileges() for iterating. +} + +// AllPrivileges returns a slice that can be used to iterate over the privileges in p. +func (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes { + return (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount] +} + +type Tokenmandatorylabel struct { + Label SIDAndAttributes +} + +func (tml *Tokenmandatorylabel) Size() uint32 { + return uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid) +} + +// Authorization Functions +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys isTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted +//sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken +//sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken +//sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf +//sys RevertToSelf() (err error) = advapi32.RevertToSelf +//sys SetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken +//sys LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW +//sys AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges +//sys AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups +//sys GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation +//sys DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx +//sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW +//sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW +//sys getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW +//sys getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW + +// An access token contains the security information for a logon session. +// The system creates an access token when a user logs on, and every +// process executed on behalf of the user has a copy of the token. +// The token identifies the user, the user's groups, and the user's +// privileges. The system uses the token to control access to securable +// objects and to control the ability of the user to perform various +// system-related operations on the local computer. +type Token Handle + +// OpenCurrentProcessToken opens an access token associated with current +// process with TOKEN_QUERY access. It is a real token that needs to be closed. +// +// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...) +// with the desired access instead, or use GetCurrentProcessToken for a +// TOKEN_QUERY token. +func OpenCurrentProcessToken() (Token, error) { + var token Token + err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token) + return token, err +} + +// GetCurrentProcessToken returns the access token associated with +// the current process. It is a pseudo token that does not need +// to be closed. +func GetCurrentProcessToken() Token { + return Token(^uintptr(4 - 1)) +} + +// GetCurrentThreadToken return the access token associated with +// the current thread. It is a pseudo token that does not need +// to be closed. +func GetCurrentThreadToken() Token { + return Token(^uintptr(5 - 1)) +} + +// GetCurrentThreadEffectiveToken returns the effective access token +// associated with the current thread. It is a pseudo token that does +// not need to be closed. +func GetCurrentThreadEffectiveToken() Token { + return Token(^uintptr(6 - 1)) +} + +// Close releases access to access token. +func (t Token) Close() error { + return CloseHandle(Handle(t)) +} + +// getInfo retrieves a specified type of information about an access token. +func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) { + n := uint32(initSize) + for { + b := make([]byte, n) + e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n) + if e == nil { + return unsafe.Pointer(&b[0]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, e + } + if n <= uint32(len(b)) { + return nil, e + } + } +} + +// GetTokenUser retrieves access token t user account information. +func (t Token) GetTokenUser() (*Tokenuser, error) { + i, e := t.getInfo(TokenUser, 50) + if e != nil { + return nil, e + } + return (*Tokenuser)(i), nil +} + +// GetTokenGroups retrieves group accounts associated with access token t. +func (t Token) GetTokenGroups() (*Tokengroups, error) { + i, e := t.getInfo(TokenGroups, 50) + if e != nil { + return nil, e + } + return (*Tokengroups)(i), nil +} + +// GetTokenPrimaryGroup retrieves access token t primary group information. +// A pointer to a SID structure representing a group that will become +// the primary group of any objects created by a process using this access token. +func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) { + i, e := t.getInfo(TokenPrimaryGroup, 50) + if e != nil { + return nil, e + } + return (*Tokenprimarygroup)(i), nil +} + +// GetUserProfileDirectory retrieves path to the +// root directory of the access token t user's profile. +func (t Token) GetUserProfileDirectory() (string, error) { + n := uint32(100) + for { + b := make([]uint16, n) + e := GetUserProfileDirectory(t, &b[0], &n) + if e == nil { + return UTF16ToString(b), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +// IsElevated returns whether the current token is elevated from a UAC perspective. +func (token Token) IsElevated() bool { + var isElevated uint32 + var outLen uint32 + err := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen) + if err != nil { + return false + } + return outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0 +} + +// GetLinkedToken returns the linked token, which may be an elevated UAC token. +func (token Token) GetLinkedToken() (Token, error) { + var linkedToken Token + var outLen uint32 + err := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen) + if err != nil { + return Token(0), err + } + return linkedToken, nil +} + +// GetSystemDirectory retrieves the path to current location of the system +// directory, which is typically, though not always, `C:\Windows\System32`. +func GetSystemDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// GetWindowsDirectory retrieves the path to current location of the Windows +// directory, which is typically, though not always, `C:\Windows`. This may +// be a private user directory in the case that the application is running +// under a terminal server. +func GetWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// GetSystemWindowsDirectory retrieves the path to current location of the +// Windows directory, which is typically, though not always, `C:\Windows`. +func GetSystemWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// IsMember reports whether the access token t is a member of the provided SID. +func (t Token) IsMember(sid *SID) (bool, error) { + var b int32 + if e := checkTokenMembership(t, sid, &b); e != nil { + return false, e + } + return b != 0, nil +} + +// IsRestricted reports whether the access token t is a restricted token. +func (t Token) IsRestricted() (isRestricted bool, err error) { + isRestricted, err = isTokenRestricted(t) + if !isRestricted && err == syscall.EINVAL { + // If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token. + err = nil + } + return +} + +const ( + WTS_CONSOLE_CONNECT = 0x1 + WTS_CONSOLE_DISCONNECT = 0x2 + WTS_REMOTE_CONNECT = 0x3 + WTS_REMOTE_DISCONNECT = 0x4 + WTS_SESSION_LOGON = 0x5 + WTS_SESSION_LOGOFF = 0x6 + WTS_SESSION_LOCK = 0x7 + WTS_SESSION_UNLOCK = 0x8 + WTS_SESSION_REMOTE_CONTROL = 0x9 + WTS_SESSION_CREATE = 0xa + WTS_SESSION_TERMINATE = 0xb +) + +const ( + WTSActive = 0 + WTSConnected = 1 + WTSConnectQuery = 2 + WTSShadow = 3 + WTSDisconnected = 4 + WTSIdle = 5 + WTSListen = 6 + WTSReset = 7 + WTSDown = 8 + WTSInit = 9 +) + +type WTSSESSION_NOTIFICATION struct { + Size uint32 + SessionID uint32 +} + +type WTS_SESSION_INFO struct { + SessionID uint32 + WindowStationName *uint16 + State uint32 +} + +//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken +//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW +//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory +//sys WTSGetActiveConsoleSessionId() (sessionID uint32) + +type ACL struct { + aclRevision byte + sbz1 byte + aclSize uint16 + AceCount uint16 + sbz2 uint16 +} + +type SECURITY_DESCRIPTOR struct { + revision byte + sbz1 byte + control SECURITY_DESCRIPTOR_CONTROL + owner *SID + group *SID + sacl *ACL + dacl *ACL +} + +type SECURITY_QUALITY_OF_SERVICE struct { + Length uint32 + ImpersonationLevel uint32 + ContextTrackingMode byte + EffectiveOnly byte +} + +// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE. +const ( + SECURITY_STATIC_TRACKING = 0 + SECURITY_DYNAMIC_TRACKING = 1 +) + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor *SECURITY_DESCRIPTOR + InheritHandle uint32 +} + +type SE_OBJECT_TYPE uint32 + +// Constants for type SE_OBJECT_TYPE +const ( + SE_UNKNOWN_OBJECT_TYPE = 0 + SE_FILE_OBJECT = 1 + SE_SERVICE = 2 + SE_PRINTER = 3 + SE_REGISTRY_KEY = 4 + SE_LMSHARE = 5 + SE_KERNEL_OBJECT = 6 + SE_WINDOW_OBJECT = 7 + SE_DS_OBJECT = 8 + SE_DS_OBJECT_ALL = 9 + SE_PROVIDER_DEFINED_OBJECT = 10 + SE_WMIGUID_OBJECT = 11 + SE_REGISTRY_WOW64_32KEY = 12 + SE_REGISTRY_WOW64_64KEY = 13 +) + +type SECURITY_INFORMATION uint32 + +// Constants for type SECURITY_INFORMATION +const ( + OWNER_SECURITY_INFORMATION = 0x00000001 + GROUP_SECURITY_INFORMATION = 0x00000002 + DACL_SECURITY_INFORMATION = 0x00000004 + SACL_SECURITY_INFORMATION = 0x00000008 + LABEL_SECURITY_INFORMATION = 0x00000010 + ATTRIBUTE_SECURITY_INFORMATION = 0x00000020 + SCOPE_SECURITY_INFORMATION = 0x00000040 + BACKUP_SECURITY_INFORMATION = 0x00010000 + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 +) + +type SECURITY_DESCRIPTOR_CONTROL uint16 + +// Constants for type SECURITY_DESCRIPTOR_CONTROL +const ( + SE_OWNER_DEFAULTED = 0x0001 + SE_GROUP_DEFAULTED = 0x0002 + SE_DACL_PRESENT = 0x0004 + SE_DACL_DEFAULTED = 0x0008 + SE_SACL_PRESENT = 0x0010 + SE_SACL_DEFAULTED = 0x0020 + SE_DACL_AUTO_INHERIT_REQ = 0x0100 + SE_SACL_AUTO_INHERIT_REQ = 0x0200 + SE_DACL_AUTO_INHERITED = 0x0400 + SE_SACL_AUTO_INHERITED = 0x0800 + SE_DACL_PROTECTED = 0x1000 + SE_SACL_PROTECTED = 0x2000 + SE_RM_CONTROL_VALID = 0x4000 + SE_SELF_RELATIVE = 0x8000 +) + +type ACCESS_MASK uint32 + +// Constants for type ACCESS_MASK +const ( + DELETE = 0x00010000 + READ_CONTROL = 0x00020000 + WRITE_DAC = 0x00040000 + WRITE_OWNER = 0x00080000 + SYNCHRONIZE = 0x00100000 + STANDARD_RIGHTS_REQUIRED = 0x000F0000 + STANDARD_RIGHTS_READ = READ_CONTROL + STANDARD_RIGHTS_WRITE = READ_CONTROL + STANDARD_RIGHTS_EXECUTE = READ_CONTROL + STANDARD_RIGHTS_ALL = 0x001F0000 + SPECIFIC_RIGHTS_ALL = 0x0000FFFF + ACCESS_SYSTEM_SECURITY = 0x01000000 + MAXIMUM_ALLOWED = 0x02000000 + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 +) + +type ACCESS_MODE uint32 + +// Constants for type ACCESS_MODE +const ( + NOT_USED_ACCESS = 0 + GRANT_ACCESS = 1 + SET_ACCESS = 2 + DENY_ACCESS = 3 + REVOKE_ACCESS = 4 + SET_AUDIT_SUCCESS = 5 + SET_AUDIT_FAILURE = 6 +) + +// Constants for AceFlags and Inheritance fields +const ( + NO_INHERITANCE = 0x0 + SUB_OBJECTS_ONLY_INHERIT = 0x1 + SUB_CONTAINERS_ONLY_INHERIT = 0x2 + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3 + INHERIT_NO_PROPAGATE = 0x4 + INHERIT_ONLY = 0x8 + INHERITED_ACCESS_ENTRY = 0x10 + INHERITED_PARENT = 0x10000000 + INHERITED_GRANDPARENT = 0x20000000 + OBJECT_INHERIT_ACE = 0x1 + CONTAINER_INHERIT_ACE = 0x2 + NO_PROPAGATE_INHERIT_ACE = 0x4 + INHERIT_ONLY_ACE = 0x8 + INHERITED_ACE = 0x10 + VALID_INHERIT_FLAGS = 0x1F +) + +type MULTIPLE_TRUSTEE_OPERATION uint32 + +// Constants for MULTIPLE_TRUSTEE_OPERATION +const ( + NO_MULTIPLE_TRUSTEE = 0 + TRUSTEE_IS_IMPERSONATE = 1 +) + +type TRUSTEE_FORM uint32 + +// Constants for TRUSTEE_FORM +const ( + TRUSTEE_IS_SID = 0 + TRUSTEE_IS_NAME = 1 + TRUSTEE_BAD_FORM = 2 + TRUSTEE_IS_OBJECTS_AND_SID = 3 + TRUSTEE_IS_OBJECTS_AND_NAME = 4 +) + +type TRUSTEE_TYPE uint32 + +// Constants for TRUSTEE_TYPE +const ( + TRUSTEE_IS_UNKNOWN = 0 + TRUSTEE_IS_USER = 1 + TRUSTEE_IS_GROUP = 2 + TRUSTEE_IS_DOMAIN = 3 + TRUSTEE_IS_ALIAS = 4 + TRUSTEE_IS_WELL_KNOWN_GROUP = 5 + TRUSTEE_IS_DELETED = 6 + TRUSTEE_IS_INVALID = 7 + TRUSTEE_IS_COMPUTER = 8 +) + +// Constants for ObjectsPresent field +const ( + ACE_OBJECT_TYPE_PRESENT = 0x1 + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 +) + +type EXPLICIT_ACCESS struct { + AccessPermissions ACCESS_MASK + AccessMode ACCESS_MODE + Inheritance uint32 + Trustee TRUSTEE +} + +// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header +type ACE_HEADER struct { + AceType uint8 + AceFlags uint8 + AceSize uint16 +} + +// https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-access_allowed_ace +type ACCESS_ALLOWED_ACE struct { + Header ACE_HEADER + Mask ACCESS_MASK + SidStart uint32 +} + +const ( + // Constants for AceType + // https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-ace_header + ACCESS_ALLOWED_ACE_TYPE = 0 + ACCESS_DENIED_ACE_TYPE = 1 +) + +// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions. +type TrusteeValue uintptr + +func TrusteeValueFromString(str string) TrusteeValue { + return TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str))) +} +func TrusteeValueFromSID(sid *SID) TrusteeValue { + return TrusteeValue(unsafe.Pointer(sid)) +} +func TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue { + return TrusteeValue(unsafe.Pointer(objectsAndSid)) +} +func TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue { + return TrusteeValue(unsafe.Pointer(objectsAndName)) +} + +type TRUSTEE struct { + MultipleTrustee *TRUSTEE + MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION + TrusteeForm TRUSTEE_FORM + TrusteeType TRUSTEE_TYPE + TrusteeValue TrusteeValue +} + +type OBJECTS_AND_SID struct { + ObjectsPresent uint32 + ObjectTypeGuid GUID + InheritedObjectTypeGuid GUID + Sid *SID +} + +type OBJECTS_AND_NAME struct { + ObjectsPresent uint32 + ObjectType SE_OBJECT_TYPE + ObjectTypeName *uint16 + InheritedObjectTypeName *uint16 + Name *uint16 +} + +//sys getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo +//sys SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo +//sys getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW +//sys SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW +//sys SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity + +//sys buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW +//sys initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor + +//sys getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl +//sys getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl +//sys getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl +//sys getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner +//sys getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup +//sys getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength +//sys getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl +//sys isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor + +//sys setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl +//sys setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl +//sys setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl +//sys setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner +//sys setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup +//sys setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl + +//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW +//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW + +//sys makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD +//sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD + +//sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW +//sys GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce + +// Control returns the security descriptor control bits. +func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) { + err = getSecurityDescriptorControl(sd, &control, &revision) + return +} + +// SetControl sets the security descriptor control bits. +func (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error { + return setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet) +} + +// RMControl returns the security descriptor resource manager control bits. +func (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) { + err = getSecurityDescriptorRMControl(sd, &control) + return +} + +// SetRMControl sets the security descriptor resource manager control bits. +func (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) { + setSecurityDescriptorRMControl(sd, &rmControl) +} + +// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil +// if a DACL exists but is an "empty DACL", meaning fully permissive. If the DACL does not exist, err returns +// ERROR_OBJECT_NOT_FOUND. +func (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) { + var present bool + err = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted) + if !present { + err = ERROR_OBJECT_NOT_FOUND + } + return +} + +// SetDACL sets the absolute security descriptor DACL. +func (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error { + return setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted) +} + +// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil +// if a SACL exists but is an "empty SACL", meaning fully permissive. If the SACL does not exist, err returns +// ERROR_OBJECT_NOT_FOUND. +func (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) { + var present bool + err = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted) + if !present { + err = ERROR_OBJECT_NOT_FOUND + } + return +} + +// SetSACL sets the absolute security descriptor SACL. +func (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error { + return setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted) +} + +// Owner returns the security descriptor owner and whether it was defaulted. +func (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) { + err = getSecurityDescriptorOwner(sd, &owner, &defaulted) + return +} + +// SetOwner sets the absolute security descriptor owner. +func (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error { + return setSecurityDescriptorOwner(absoluteSD, owner, defaulted) +} + +// Group returns the security descriptor group and whether it was defaulted. +func (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) { + err = getSecurityDescriptorGroup(sd, &group, &defaulted) + return +} + +// SetGroup sets the absolute security descriptor owner. +func (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error { + return setSecurityDescriptorGroup(absoluteSD, group, defaulted) +} + +// Length returns the length of the security descriptor. +func (sd *SECURITY_DESCRIPTOR) Length() uint32 { + return getSecurityDescriptorLength(sd) +} + +// IsValid returns whether the security descriptor is valid. +func (sd *SECURITY_DESCRIPTOR) IsValid() bool { + return isValidSecurityDescriptor(sd) +} + +// String returns the SDDL form of the security descriptor, with a function signature that can be +// used with %v formatting directives. +func (sd *SECURITY_DESCRIPTOR) String() string { + var sddl *uint16 + err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil) + if err != nil { + return "" + } + defer LocalFree(Handle(unsafe.Pointer(sddl))) + return UTF16PtrToString(sddl) +} + +// ToAbsolute converts a self-relative security descriptor into an absolute one. +func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) { + control, _, err := selfRelativeSD.Control() + if err != nil { + return + } + if control&SE_SELF_RELATIVE == 0 { + err = ERROR_INVALID_PARAMETER + return + } + var absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32 + err = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize, + nil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize) + switch err { + case ERROR_INSUFFICIENT_BUFFER: + case nil: + // makeAbsoluteSD is expected to fail, but it succeeds. + return nil, ERROR_INTERNAL_ERROR + default: + return nil, err + } + if absoluteSDSize > 0 { + absoluteSD = new(SECURITY_DESCRIPTOR) + if unsafe.Sizeof(*absoluteSD) < uintptr(absoluteSDSize) { + panic("sizeof(SECURITY_DESCRIPTOR) too small") + } + } + var ( + dacl *ACL + sacl *ACL + owner *SID + group *SID + ) + if daclSize > 0 { + dacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, daclSize)))) + } + if saclSize > 0 { + sacl = (*ACL)(unsafe.Pointer(unsafe.SliceData(make([]byte, saclSize)))) + } + if ownerSize > 0 { + owner = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, ownerSize)))) + } + if groupSize > 0 { + group = (*SID)(unsafe.Pointer(unsafe.SliceData(make([]byte, groupSize)))) + } + // We call into Windows via makeAbsoluteSD, which sets up + // pointers within absoluteSD that point to other chunks of memory + // we pass into makeAbsoluteSD, and that happens outside the view of the GC. + // We therefore take some care here to then verify the pointers are as we expect + // and set them explicitly in view of the GC. See https://go.dev/issue/73199. + // TODO: consider weak pointers once Go 1.24 is appropriate. See suggestion in https://go.dev/cl/663575. + err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize, + dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize) + if err != nil { + // Don't return absoluteSD, which might be partially initialized. + return nil, err + } + // Before using any fields, verify absoluteSD is in the format we expect according to Windows. + // See https://learn.microsoft.com/en-us/windows/win32/secauthz/absolute-and-self-relative-security-descriptors + absControl, _, err := absoluteSD.Control() + if err != nil { + panic("absoluteSD: " + err.Error()) + } + if absControl&SE_SELF_RELATIVE != 0 { + panic("absoluteSD not in absolute format") + } + if absoluteSD.dacl != dacl { + panic("dacl pointer mismatch") + } + if absoluteSD.sacl != sacl { + panic("sacl pointer mismatch") + } + if absoluteSD.owner != owner { + panic("owner pointer mismatch") + } + if absoluteSD.group != group { + panic("group pointer mismatch") + } + absoluteSD.dacl = dacl + absoluteSD.sacl = sacl + absoluteSD.owner = owner + absoluteSD.group = group + + return +} + +// ToSelfRelative converts an absolute security descriptor into a self-relative one. +func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) { + control, _, err := absoluteSD.Control() + if err != nil { + return + } + if control&SE_SELF_RELATIVE != 0 { + err = ERROR_INVALID_PARAMETER + return + } + var selfRelativeSDSize uint32 + err = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize) + switch err { + case ERROR_INSUFFICIENT_BUFFER: + case nil: + // makeSelfRelativeSD is expected to fail, but it succeeds. + return nil, ERROR_INTERNAL_ERROR + default: + return nil, err + } + if selfRelativeSDSize > 0 { + selfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0])) + } + err = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize) + return +} + +func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR { + sdLen := int(selfRelativeSD.Length()) + const min = int(unsafe.Sizeof(SECURITY_DESCRIPTOR{})) + if sdLen < min { + sdLen = min + } + + src := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen) + // SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to + // be aligned properly. When we're copying a Windows-allocated struct to a + // Go-allocated one, make sure that the Go allocation is aligned to the + // pointer size. + const psize = int(unsafe.Sizeof(uintptr(0))) + alloc := make([]uintptr, (sdLen+psize-1)/psize) + dst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen) + copy(dst, src) + return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0])) +} + +// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a +// self-relative security descriptor object allocated on the Go heap. +func SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// GetSecurityInfo queries the security information for a given handle and returns the self-relative security +// descriptor result on the Go heap. +func GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security +// descriptor result on the Go heap. The security descriptor might be nil, even when err is nil, if the object exists +// but has no security descriptor. +func GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) + if err != nil { + return + } + if winHeapSD == nil { + return nil, nil + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and +// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor +// result on the Go heap. +func BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + var winHeapSDSize uint32 + var firstAccessEntry *EXPLICIT_ACCESS + if len(accessEntries) > 0 { + firstAccessEntry = &accessEntries[0] + } + var firstAuditEntry *EXPLICIT_ACCESS + if len(auditEntries) > 0 { + firstAuditEntry = &auditEntries[0] + } + err = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// NewSecurityDescriptor creates and initializes a new absolute security descriptor. +func NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) { + absoluteSD = &SECURITY_DESCRIPTOR{} + err = initializeSecurityDescriptor(absoluteSD, 1) + return +} + +// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL. +// Both explicitEntries and mergedACL are optional and can be nil. +func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) { + var firstExplicitEntry *EXPLICIT_ACCESS + if len(explicitEntries) > 0 { + firstExplicitEntry = &explicitEntries[0] + } + var winHeapACL *ACL + err = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapACL))) + aclBytes := make([]byte, winHeapACL.aclSize) + copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)]) + return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/service.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/service.go new file mode 100644 index 0000000..a9dc630 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/service.go @@ -0,0 +1,257 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +const ( + SC_MANAGER_CONNECT = 1 + SC_MANAGER_CREATE_SERVICE = 2 + SC_MANAGER_ENUMERATE_SERVICE = 4 + SC_MANAGER_LOCK = 8 + SC_MANAGER_QUERY_LOCK_STATUS = 16 + SC_MANAGER_MODIFY_BOOT_CONFIG = 32 + SC_MANAGER_ALL_ACCESS = 0xf003f +) + +const ( + SERVICE_KERNEL_DRIVER = 1 + SERVICE_FILE_SYSTEM_DRIVER = 2 + SERVICE_ADAPTER = 4 + SERVICE_RECOGNIZER_DRIVER = 8 + SERVICE_WIN32_OWN_PROCESS = 16 + SERVICE_WIN32_SHARE_PROCESS = 32 + SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS = 256 + SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER + SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS + + SERVICE_BOOT_START = 0 + SERVICE_SYSTEM_START = 1 + SERVICE_AUTO_START = 2 + SERVICE_DEMAND_START = 3 + SERVICE_DISABLED = 4 + + SERVICE_ERROR_IGNORE = 0 + SERVICE_ERROR_NORMAL = 1 + SERVICE_ERROR_SEVERE = 2 + SERVICE_ERROR_CRITICAL = 3 + + SC_STATUS_PROCESS_INFO = 0 + + SC_ACTION_NONE = 0 + SC_ACTION_RESTART = 1 + SC_ACTION_REBOOT = 2 + SC_ACTION_RUN_COMMAND = 3 + + SERVICE_STOPPED = 1 + SERVICE_START_PENDING = 2 + SERVICE_STOP_PENDING = 3 + SERVICE_RUNNING = 4 + SERVICE_CONTINUE_PENDING = 5 + SERVICE_PAUSE_PENDING = 6 + SERVICE_PAUSED = 7 + SERVICE_NO_CHANGE = 0xffffffff + + SERVICE_ACCEPT_STOP = 1 + SERVICE_ACCEPT_PAUSE_CONTINUE = 2 + SERVICE_ACCEPT_SHUTDOWN = 4 + SERVICE_ACCEPT_PARAMCHANGE = 8 + SERVICE_ACCEPT_NETBINDCHANGE = 16 + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32 + SERVICE_ACCEPT_POWEREVENT = 64 + SERVICE_ACCEPT_SESSIONCHANGE = 128 + SERVICE_ACCEPT_PRESHUTDOWN = 256 + + SERVICE_CONTROL_STOP = 1 + SERVICE_CONTROL_PAUSE = 2 + SERVICE_CONTROL_CONTINUE = 3 + SERVICE_CONTROL_INTERROGATE = 4 + SERVICE_CONTROL_SHUTDOWN = 5 + SERVICE_CONTROL_PARAMCHANGE = 6 + SERVICE_CONTROL_NETBINDADD = 7 + SERVICE_CONTROL_NETBINDREMOVE = 8 + SERVICE_CONTROL_NETBINDENABLE = 9 + SERVICE_CONTROL_NETBINDDISABLE = 10 + SERVICE_CONTROL_DEVICEEVENT = 11 + SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12 + SERVICE_CONTROL_POWEREVENT = 13 + SERVICE_CONTROL_SESSIONCHANGE = 14 + SERVICE_CONTROL_PRESHUTDOWN = 15 + + SERVICE_ACTIVE = 1 + SERVICE_INACTIVE = 2 + SERVICE_STATE_ALL = 3 + + SERVICE_QUERY_CONFIG = 1 + SERVICE_CHANGE_CONFIG = 2 + SERVICE_QUERY_STATUS = 4 + SERVICE_ENUMERATE_DEPENDENTS = 8 + SERVICE_START = 16 + SERVICE_STOP = 32 + SERVICE_PAUSE_CONTINUE = 64 + SERVICE_INTERROGATE = 128 + SERVICE_USER_DEFINED_CONTROL = 256 + SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + + SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 + + SERVICE_CONFIG_DESCRIPTION = 1 + SERVICE_CONFIG_FAILURE_ACTIONS = 2 + SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 3 + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 4 + SERVICE_CONFIG_SERVICE_SID_INFO = 5 + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6 + SERVICE_CONFIG_PRESHUTDOWN_INFO = 7 + SERVICE_CONFIG_TRIGGER_INFO = 8 + SERVICE_CONFIG_PREFERRED_NODE = 9 + SERVICE_CONFIG_LAUNCH_PROTECTED = 12 + + SERVICE_SID_TYPE_NONE = 0 + SERVICE_SID_TYPE_UNRESTRICTED = 1 + SERVICE_SID_TYPE_RESTRICTED = 2 | SERVICE_SID_TYPE_UNRESTRICTED + + SC_ENUM_PROCESS_INFO = 0 + + SERVICE_NOTIFY_STATUS_CHANGE = 2 + SERVICE_NOTIFY_STOPPED = 0x00000001 + SERVICE_NOTIFY_START_PENDING = 0x00000002 + SERVICE_NOTIFY_STOP_PENDING = 0x00000004 + SERVICE_NOTIFY_RUNNING = 0x00000008 + SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010 + SERVICE_NOTIFY_PAUSE_PENDING = 0x00000020 + SERVICE_NOTIFY_PAUSED = 0x00000040 + SERVICE_NOTIFY_CREATED = 0x00000080 + SERVICE_NOTIFY_DELETED = 0x00000100 + SERVICE_NOTIFY_DELETE_PENDING = 0x00000200 + + SC_EVENT_DATABASE_CHANGE = 0 + SC_EVENT_PROPERTY_CHANGE = 1 + SC_EVENT_STATUS_CHANGE = 2 + + SERVICE_START_REASON_DEMAND = 0x00000001 + SERVICE_START_REASON_AUTO = 0x00000002 + SERVICE_START_REASON_TRIGGER = 0x00000004 + SERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008 + SERVICE_START_REASON_DELAYEDAUTO = 0x00000010 + + SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1 +) + +type ENUM_SERVICE_STATUS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatus SERVICE_STATUS +} + +type SERVICE_STATUS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 +} + +type SERVICE_TABLE_ENTRY struct { + ServiceName *uint16 + ServiceProc uintptr +} + +type QUERY_SERVICE_CONFIG struct { + ServiceType uint32 + StartType uint32 + ErrorControl uint32 + BinaryPathName *uint16 + LoadOrderGroup *uint16 + TagId uint32 + Dependencies *uint16 + ServiceStartName *uint16 + DisplayName *uint16 +} + +type SERVICE_DESCRIPTION struct { + Description *uint16 +} + +type SERVICE_DELAYED_AUTO_START_INFO struct { + IsDelayedAutoStartUp uint32 +} + +type SERVICE_STATUS_PROCESS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 + ProcessId uint32 + ServiceFlags uint32 +} + +type ENUM_SERVICE_STATUS_PROCESS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatusProcess SERVICE_STATUS_PROCESS +} + +type SERVICE_NOTIFY struct { + Version uint32 + NotifyCallback uintptr + Context uintptr + NotificationStatus uint32 + ServiceStatus SERVICE_STATUS_PROCESS + NotificationTriggered uint32 + ServiceNames *uint16 +} + +type SERVICE_FAILURE_ACTIONS struct { + ResetPeriod uint32 + RebootMsg *uint16 + Command *uint16 + ActionsCount uint32 + Actions *SC_ACTION +} + +type SERVICE_FAILURE_ACTIONS_FLAG struct { + FailureActionsOnNonCrashFailures int32 +} + +type SC_ACTION struct { + Type uint32 + Delay uint32 +} + +type QUERY_SERVICE_LOCK_STATUS struct { + IsLocked uint32 + LockOwner *uint16 + LockDuration uint32 +} + +//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW +//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle +//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW +//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW +//sys DeleteService(service Handle) (err error) = advapi32.DeleteService +//sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW +//sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus +//sys QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW +//sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService +//sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW +//sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus +//sys ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW +//sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW +//sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W +//sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W +//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW +//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx +//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW +//sys SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications? +//sys UnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications? +//sys RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW +//sys QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation? +//sys EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/setupapi_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/setupapi_windows.go new file mode 100644 index 0000000..f812648 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/setupapi_windows.go @@ -0,0 +1,1425 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "encoding/binary" + "errors" + "fmt" + "runtime" + "strings" + "syscall" + "unsafe" +) + +// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll, +// core system functions for managing hardware devices, drivers, and the PnP tree. +// Information about these APIs can be found at: +// https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi +// https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32- + +const ( + ERROR_EXPECTED_SECTION_NAME Errno = 0x20000000 | 0xC0000000 | 0 + ERROR_BAD_SECTION_NAME_LINE Errno = 0x20000000 | 0xC0000000 | 1 + ERROR_SECTION_NAME_TOO_LONG Errno = 0x20000000 | 0xC0000000 | 2 + ERROR_GENERAL_SYNTAX Errno = 0x20000000 | 0xC0000000 | 3 + ERROR_WRONG_INF_STYLE Errno = 0x20000000 | 0xC0000000 | 0x100 + ERROR_SECTION_NOT_FOUND Errno = 0x20000000 | 0xC0000000 | 0x101 + ERROR_LINE_NOT_FOUND Errno = 0x20000000 | 0xC0000000 | 0x102 + ERROR_NO_BACKUP Errno = 0x20000000 | 0xC0000000 | 0x103 + ERROR_NO_ASSOCIATED_CLASS Errno = 0x20000000 | 0xC0000000 | 0x200 + ERROR_CLASS_MISMATCH Errno = 0x20000000 | 0xC0000000 | 0x201 + ERROR_DUPLICATE_FOUND Errno = 0x20000000 | 0xC0000000 | 0x202 + ERROR_NO_DRIVER_SELECTED Errno = 0x20000000 | 0xC0000000 | 0x203 + ERROR_KEY_DOES_NOT_EXIST Errno = 0x20000000 | 0xC0000000 | 0x204 + ERROR_INVALID_DEVINST_NAME Errno = 0x20000000 | 0xC0000000 | 0x205 + ERROR_INVALID_CLASS Errno = 0x20000000 | 0xC0000000 | 0x206 + ERROR_DEVINST_ALREADY_EXISTS Errno = 0x20000000 | 0xC0000000 | 0x207 + ERROR_DEVINFO_NOT_REGISTERED Errno = 0x20000000 | 0xC0000000 | 0x208 + ERROR_INVALID_REG_PROPERTY Errno = 0x20000000 | 0xC0000000 | 0x209 + ERROR_NO_INF Errno = 0x20000000 | 0xC0000000 | 0x20A + ERROR_NO_SUCH_DEVINST Errno = 0x20000000 | 0xC0000000 | 0x20B + ERROR_CANT_LOAD_CLASS_ICON Errno = 0x20000000 | 0xC0000000 | 0x20C + ERROR_INVALID_CLASS_INSTALLER Errno = 0x20000000 | 0xC0000000 | 0x20D + ERROR_DI_DO_DEFAULT Errno = 0x20000000 | 0xC0000000 | 0x20E + ERROR_DI_NOFILECOPY Errno = 0x20000000 | 0xC0000000 | 0x20F + ERROR_INVALID_HWPROFILE Errno = 0x20000000 | 0xC0000000 | 0x210 + ERROR_NO_DEVICE_SELECTED Errno = 0x20000000 | 0xC0000000 | 0x211 + ERROR_DEVINFO_LIST_LOCKED Errno = 0x20000000 | 0xC0000000 | 0x212 + ERROR_DEVINFO_DATA_LOCKED Errno = 0x20000000 | 0xC0000000 | 0x213 + ERROR_DI_BAD_PATH Errno = 0x20000000 | 0xC0000000 | 0x214 + ERROR_NO_CLASSINSTALL_PARAMS Errno = 0x20000000 | 0xC0000000 | 0x215 + ERROR_FILEQUEUE_LOCKED Errno = 0x20000000 | 0xC0000000 | 0x216 + ERROR_BAD_SERVICE_INSTALLSECT Errno = 0x20000000 | 0xC0000000 | 0x217 + ERROR_NO_CLASS_DRIVER_LIST Errno = 0x20000000 | 0xC0000000 | 0x218 + ERROR_NO_ASSOCIATED_SERVICE Errno = 0x20000000 | 0xC0000000 | 0x219 + ERROR_NO_DEFAULT_DEVICE_INTERFACE Errno = 0x20000000 | 0xC0000000 | 0x21A + ERROR_DEVICE_INTERFACE_ACTIVE Errno = 0x20000000 | 0xC0000000 | 0x21B + ERROR_DEVICE_INTERFACE_REMOVED Errno = 0x20000000 | 0xC0000000 | 0x21C + ERROR_BAD_INTERFACE_INSTALLSECT Errno = 0x20000000 | 0xC0000000 | 0x21D + ERROR_NO_SUCH_INTERFACE_CLASS Errno = 0x20000000 | 0xC0000000 | 0x21E + ERROR_INVALID_REFERENCE_STRING Errno = 0x20000000 | 0xC0000000 | 0x21F + ERROR_INVALID_MACHINENAME Errno = 0x20000000 | 0xC0000000 | 0x220 + ERROR_REMOTE_COMM_FAILURE Errno = 0x20000000 | 0xC0000000 | 0x221 + ERROR_MACHINE_UNAVAILABLE Errno = 0x20000000 | 0xC0000000 | 0x222 + ERROR_NO_CONFIGMGR_SERVICES Errno = 0x20000000 | 0xC0000000 | 0x223 + ERROR_INVALID_PROPPAGE_PROVIDER Errno = 0x20000000 | 0xC0000000 | 0x224 + ERROR_NO_SUCH_DEVICE_INTERFACE Errno = 0x20000000 | 0xC0000000 | 0x225 + ERROR_DI_POSTPROCESSING_REQUIRED Errno = 0x20000000 | 0xC0000000 | 0x226 + ERROR_INVALID_COINSTALLER Errno = 0x20000000 | 0xC0000000 | 0x227 + ERROR_NO_COMPAT_DRIVERS Errno = 0x20000000 | 0xC0000000 | 0x228 + ERROR_NO_DEVICE_ICON Errno = 0x20000000 | 0xC0000000 | 0x229 + ERROR_INVALID_INF_LOGCONFIG Errno = 0x20000000 | 0xC0000000 | 0x22A + ERROR_DI_DONT_INSTALL Errno = 0x20000000 | 0xC0000000 | 0x22B + ERROR_INVALID_FILTER_DRIVER Errno = 0x20000000 | 0xC0000000 | 0x22C + ERROR_NON_WINDOWS_NT_DRIVER Errno = 0x20000000 | 0xC0000000 | 0x22D + ERROR_NON_WINDOWS_DRIVER Errno = 0x20000000 | 0xC0000000 | 0x22E + ERROR_NO_CATALOG_FOR_OEM_INF Errno = 0x20000000 | 0xC0000000 | 0x22F + ERROR_DEVINSTALL_QUEUE_NONNATIVE Errno = 0x20000000 | 0xC0000000 | 0x230 + ERROR_NOT_DISABLEABLE Errno = 0x20000000 | 0xC0000000 | 0x231 + ERROR_CANT_REMOVE_DEVINST Errno = 0x20000000 | 0xC0000000 | 0x232 + ERROR_INVALID_TARGET Errno = 0x20000000 | 0xC0000000 | 0x233 + ERROR_DRIVER_NONNATIVE Errno = 0x20000000 | 0xC0000000 | 0x234 + ERROR_IN_WOW64 Errno = 0x20000000 | 0xC0000000 | 0x235 + ERROR_SET_SYSTEM_RESTORE_POINT Errno = 0x20000000 | 0xC0000000 | 0x236 + ERROR_SCE_DISABLED Errno = 0x20000000 | 0xC0000000 | 0x238 + ERROR_UNKNOWN_EXCEPTION Errno = 0x20000000 | 0xC0000000 | 0x239 + ERROR_PNP_REGISTRY_ERROR Errno = 0x20000000 | 0xC0000000 | 0x23A + ERROR_REMOTE_REQUEST_UNSUPPORTED Errno = 0x20000000 | 0xC0000000 | 0x23B + ERROR_NOT_AN_INSTALLED_OEM_INF Errno = 0x20000000 | 0xC0000000 | 0x23C + ERROR_INF_IN_USE_BY_DEVICES Errno = 0x20000000 | 0xC0000000 | 0x23D + ERROR_DI_FUNCTION_OBSOLETE Errno = 0x20000000 | 0xC0000000 | 0x23E + ERROR_NO_AUTHENTICODE_CATALOG Errno = 0x20000000 | 0xC0000000 | 0x23F + ERROR_AUTHENTICODE_DISALLOWED Errno = 0x20000000 | 0xC0000000 | 0x240 + ERROR_AUTHENTICODE_TRUSTED_PUBLISHER Errno = 0x20000000 | 0xC0000000 | 0x241 + ERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED Errno = 0x20000000 | 0xC0000000 | 0x242 + ERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Errno = 0x20000000 | 0xC0000000 | 0x243 + ERROR_SIGNATURE_OSATTRIBUTE_MISMATCH Errno = 0x20000000 | 0xC0000000 | 0x244 + ERROR_ONLY_VALIDATE_VIA_AUTHENTICODE Errno = 0x20000000 | 0xC0000000 | 0x245 + ERROR_DEVICE_INSTALLER_NOT_READY Errno = 0x20000000 | 0xC0000000 | 0x246 + ERROR_DRIVER_STORE_ADD_FAILED Errno = 0x20000000 | 0xC0000000 | 0x247 + ERROR_DEVICE_INSTALL_BLOCKED Errno = 0x20000000 | 0xC0000000 | 0x248 + ERROR_DRIVER_INSTALL_BLOCKED Errno = 0x20000000 | 0xC0000000 | 0x249 + ERROR_WRONG_INF_TYPE Errno = 0x20000000 | 0xC0000000 | 0x24A + ERROR_FILE_HASH_NOT_IN_CATALOG Errno = 0x20000000 | 0xC0000000 | 0x24B + ERROR_DRIVER_STORE_DELETE_FAILED Errno = 0x20000000 | 0xC0000000 | 0x24C + ERROR_UNRECOVERABLE_STACK_OVERFLOW Errno = 0x20000000 | 0xC0000000 | 0x300 + EXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW + ERROR_NO_DEFAULT_INTERFACE_DEVICE Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE + ERROR_INTERFACE_DEVICE_ACTIVE Errno = ERROR_DEVICE_INTERFACE_ACTIVE + ERROR_INTERFACE_DEVICE_REMOVED Errno = ERROR_DEVICE_INTERFACE_REMOVED + ERROR_NO_SUCH_INTERFACE_DEVICE Errno = ERROR_NO_SUCH_DEVICE_INTERFACE +) + +const ( + MAX_DEVICE_ID_LEN = 200 + MAX_DEVNODE_ID_LEN = MAX_DEVICE_ID_LEN + MAX_GUID_STRING_LEN = 39 // 38 chars + terminator null + MAX_CLASS_NAME_LEN = 32 + MAX_PROFILE_LEN = 80 + MAX_CONFIG_VALUE = 9999 + MAX_INSTANCE_VALUE = 9999 + CONFIGMG_VERSION = 0x0400 +) + +// Maximum string length constants +const ( + LINE_LEN = 256 // Windows 9x-compatible maximum for displayable strings coming from a device INF. + MAX_INF_STRING_LENGTH = 4096 // Actual maximum size of an INF string (including string substitutions). + MAX_INF_SECTION_NAME_LENGTH = 255 // For Windows 9x compatibility, INF section names should be constrained to 32 characters. + MAX_TITLE_LEN = 60 + MAX_INSTRUCTION_LEN = 256 + MAX_LABEL_LEN = 30 + MAX_SERVICE_NAME_LEN = 256 + MAX_SUBTITLE_LEN = 256 +) + +const ( + // SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., "\\\\MachineName\0"). + SP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3 +) + +// HSPFILEQ is type for setup file queue +type HSPFILEQ uintptr + +// DevInfo holds reference to device information set +type DevInfo Handle + +// DEVINST is a handle usually recognized by cfgmgr32 APIs +type DEVINST uint32 + +// DevInfoData is a device information structure (references a device instance that is a member of a device information set) +type DevInfoData struct { + size uint32 + ClassGUID GUID + DevInst DEVINST + _ uintptr +} + +// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass). +type DevInfoListDetailData struct { + size uint32 // Use unsafeSizeOf method + ClassGUID GUID + RemoteMachineHandle Handle + remoteMachineName [SP_MAX_MACHINENAME_LENGTH]uint16 +} + +func (*DevInfoListDetailData) unsafeSizeOf() uint32 { + if unsafe.Sizeof(uintptr(0)) == 4 { + // Windows declares this with pshpack1.h + return uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName)) + } + return uint32(unsafe.Sizeof(DevInfoListDetailData{})) +} + +func (data *DevInfoListDetailData) RemoteMachineName() string { + return UTF16ToString(data.remoteMachineName[:]) +} + +func (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error { + str, err := UTF16FromString(remoteMachineName) + if err != nil { + return err + } + copy(data.remoteMachineName[:], str) + return nil +} + +// DI_FUNCTION is function type for device installer +type DI_FUNCTION uint32 + +const ( + DIF_SELECTDEVICE DI_FUNCTION = 0x00000001 + DIF_INSTALLDEVICE DI_FUNCTION = 0x00000002 + DIF_ASSIGNRESOURCES DI_FUNCTION = 0x00000003 + DIF_PROPERTIES DI_FUNCTION = 0x00000004 + DIF_REMOVE DI_FUNCTION = 0x00000005 + DIF_FIRSTTIMESETUP DI_FUNCTION = 0x00000006 + DIF_FOUNDDEVICE DI_FUNCTION = 0x00000007 + DIF_SELECTCLASSDRIVERS DI_FUNCTION = 0x00000008 + DIF_VALIDATECLASSDRIVERS DI_FUNCTION = 0x00000009 + DIF_INSTALLCLASSDRIVERS DI_FUNCTION = 0x0000000A + DIF_CALCDISKSPACE DI_FUNCTION = 0x0000000B + DIF_DESTROYPRIVATEDATA DI_FUNCTION = 0x0000000C + DIF_VALIDATEDRIVER DI_FUNCTION = 0x0000000D + DIF_DETECT DI_FUNCTION = 0x0000000F + DIF_INSTALLWIZARD DI_FUNCTION = 0x00000010 + DIF_DESTROYWIZARDDATA DI_FUNCTION = 0x00000011 + DIF_PROPERTYCHANGE DI_FUNCTION = 0x00000012 + DIF_ENABLECLASS DI_FUNCTION = 0x00000013 + DIF_DETECTVERIFY DI_FUNCTION = 0x00000014 + DIF_INSTALLDEVICEFILES DI_FUNCTION = 0x00000015 + DIF_UNREMOVE DI_FUNCTION = 0x00000016 + DIF_SELECTBESTCOMPATDRV DI_FUNCTION = 0x00000017 + DIF_ALLOW_INSTALL DI_FUNCTION = 0x00000018 + DIF_REGISTERDEVICE DI_FUNCTION = 0x00000019 + DIF_NEWDEVICEWIZARD_PRESELECT DI_FUNCTION = 0x0000001A + DIF_NEWDEVICEWIZARD_SELECT DI_FUNCTION = 0x0000001B + DIF_NEWDEVICEWIZARD_PREANALYZE DI_FUNCTION = 0x0000001C + DIF_NEWDEVICEWIZARD_POSTANALYZE DI_FUNCTION = 0x0000001D + DIF_NEWDEVICEWIZARD_FINISHINSTALL DI_FUNCTION = 0x0000001E + DIF_INSTALLINTERFACES DI_FUNCTION = 0x00000020 + DIF_DETECTCANCEL DI_FUNCTION = 0x00000021 + DIF_REGISTER_COINSTALLERS DI_FUNCTION = 0x00000022 + DIF_ADDPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000023 + DIF_ADDPROPERTYPAGE_BASIC DI_FUNCTION = 0x00000024 + DIF_TROUBLESHOOTER DI_FUNCTION = 0x00000026 + DIF_POWERMESSAGEWAKE DI_FUNCTION = 0x00000027 + DIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028 + DIF_UPDATEDRIVER_UI DI_FUNCTION = 0x00000029 + DIF_FINISHINSTALL_ACTION DI_FUNCTION = 0x0000002A +) + +// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set) +type DevInstallParams struct { + size uint32 + Flags DI_FLAGS + FlagsEx DI_FLAGSEX + hwndParent uintptr + InstallMsgHandler uintptr + InstallMsgHandlerContext uintptr + FileQueue HSPFILEQ + _ uintptr + _ uint32 + driverPath [MAX_PATH]uint16 +} + +func (params *DevInstallParams) DriverPath() string { + return UTF16ToString(params.driverPath[:]) +} + +func (params *DevInstallParams) SetDriverPath(driverPath string) error { + str, err := UTF16FromString(driverPath) + if err != nil { + return err + } + copy(params.driverPath[:], str) + return nil +} + +// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values +type DI_FLAGS uint32 + +const ( + // Flags for choosing a device + DI_SHOWOEM DI_FLAGS = 0x00000001 // support Other... button + DI_SHOWCOMPAT DI_FLAGS = 0x00000002 // show compatibility list + DI_SHOWCLASS DI_FLAGS = 0x00000004 // show class list + DI_SHOWALL DI_FLAGS = 0x00000007 // both class & compat list shown + DI_NOVCP DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue + DI_DIDCOMPAT DI_FLAGS = 0x00000010 // Searched for compatible devices + DI_DIDCLASS DI_FLAGS = 0x00000020 // Searched for class devices + DI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible + + // Flags returned by DiInstallDevice to indicate need to reboot/restart + DI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect + DI_NEEDREBOOT DI_FLAGS = 0x00000100 // "" + + // Flags for device installation + DI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk + + // Flags set by DiBuildDriverInfoList + DI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list + + // Flag indicates that device is disabled + DI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled + + // Flags for Device/Class Properties + DI_GENERALPAGE_ADDED DI_FLAGS = 0x00001000 + DI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000 + + // Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated. + DI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000 + + // Flag to indicate that the sorting from the INF file should be used. + DI_INF_IS_SORTED DI_FLAGS = 0x00008000 + + // Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched. + DI_ENUMSINGLEINF DI_FLAGS = 0x00010000 + + // Flag that prevents ConfigMgr from removing/re-enumerating devices during device + // registration, installation, and deletion. + DI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000 + + // The following flag can be used to install a device disabled + DI_INSTALLDISABLED DI_FLAGS = 0x00040000 + + // Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver + // list from its existing class driver list, instead of the normal INF search. + DI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000 + + // This flag is set if the Class Install params should be used. + DI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000 + + // This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT. + DI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000 + + // Flags for device installation + DI_QUIETINSTALL DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info + DI_NOFILECOPY DI_FLAGS = 0x01000000 // No file Copy necessary + DI_FORCECOPY DI_FLAGS = 0x02000000 // Force files to be copied from install path + DI_DRIVERPAGE_ADDED DI_FLAGS = 0x04000000 // Prop provider added Driver page. + DI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg + DI_OVERRIDE_INFFLAGS DI_FLAGS = 0x10000000 // Override INF flags + DI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props + + DI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs + + DI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install +) + +// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values +type DI_FLAGSEX uint32 + +const ( + DI_FLAGSEX_CI_FAILED DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer + DI_FLAGSEX_FINISHINSTALL_ACTION DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context. + DI_FLAGSEX_DIDINFOLIST DI_FLAGSEX = 0x00000010 // Did the Class Info List + DI_FLAGSEX_DIDCOMPATINFO DI_FLAGSEX = 0x00000020 // Did the Compat Info List + DI_FLAGSEX_FILTERCLASSES DI_FLAGSEX = 0x00000040 + DI_FLAGSEX_SETFAILEDINSTALL DI_FLAGSEX = 0x00000080 + DI_FLAGSEX_DEVICECHANGE DI_FLAGSEX = 0x00000100 + DI_FLAGSEX_ALWAYSWRITEIDS DI_FLAGSEX = 0x00000200 + DI_FLAGSEX_PROPCHANGE_PENDING DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur. + DI_FLAGSEX_ALLOWEXCLUDEDDRVS DI_FLAGSEX = 0x00000800 + DI_FLAGSEX_NOUIONQUERYREMOVE DI_FLAGSEX = 0x00001000 + DI_FLAGSEX_USECLASSFORCOMPAT DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.) + DI_FLAGSEX_NO_DRVREG_MODIFY DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key. + DI_FLAGSEX_IN_SYSTEM_SETUP DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup. + DI_FLAGSEX_INET_DRIVER DI_FLAGSEX = 0x00020000 // Driver came from Windows Update + DI_FLAGSEX_APPENDDRIVERLIST DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list. + DI_FLAGSEX_PREINSTALLBACKUP DI_FLAGSEX = 0x00080000 // not used + DI_FLAGSEX_BACKUPONREPLACE DI_FLAGSEX = 0x00100000 // not used + DI_FLAGSEX_DRIVERLIST_FROM_URL DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website) + DI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later. + DI_FLAGSEX_POWERPAGE_ADDED DI_FLAGSEX = 0x01000000 // class installer added their own power page + DI_FLAGSEX_FILTERSIMILARDRIVERS DI_FLAGSEX = 0x02000000 // only include similar drivers in class list + DI_FLAGSEX_INSTALLEDDRIVER DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list. Used in calls to SetupDiBuildDriverInfoList + DI_FLAGSEX_NO_CLASSLIST_NODE_MERGE DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list + DI_FLAGSEX_ALTPLATFORM_DRVSEARCH DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue + DI_FLAGSEX_RESTART_DEVICE_ONLY DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers. + DI_FLAGSEX_RECURSIVESEARCH DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search + DI_FLAGSEX_SEARCH_PUBLISHED_INFS DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a "published INF" search +) + +// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure. +type ClassInstallHeader struct { + size uint32 + InstallFunction DI_FUNCTION +} + +func MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader { + hdr := &ClassInstallHeader{InstallFunction: installFunction} + hdr.size = uint32(unsafe.Sizeof(*hdr)) + return hdr +} + +// DICS_STATE specifies values indicating a change in a device's state +type DICS_STATE uint32 + +const ( + DICS_ENABLE DICS_STATE = 0x00000001 // The device is being enabled. + DICS_DISABLE DICS_STATE = 0x00000002 // The device is being disabled. + DICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed. + DICS_START DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile). + DICS_STOP DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device. +) + +// DICS_FLAG specifies the scope of a device property change +type DICS_FLAG uint32 + +const ( + DICS_FLAG_GLOBAL DICS_FLAG = 0x00000001 // make change in all hardware profiles + DICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only + DICS_FLAG_CONFIGGENERAL DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete) +) + +// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function. +type PropChangeParams struct { + ClassInstallHeader ClassInstallHeader + StateChange DICS_STATE + Scope DICS_FLAG + HwProfile uint32 +} + +// DI_REMOVEDEVICE specifies the scope of the device removal +type DI_REMOVEDEVICE uint32 + +const ( + DI_REMOVEDEVICE_GLOBAL DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry. + DI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal. +) + +// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function. +type RemoveDeviceParams struct { + ClassInstallHeader ClassInstallHeader + Scope DI_REMOVEDEVICE + HwProfile uint32 +} + +// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set) +type DrvInfoData struct { + size uint32 + DriverType uint32 + _ uintptr + description [LINE_LEN]uint16 + mfgName [LINE_LEN]uint16 + providerName [LINE_LEN]uint16 + DriverDate Filetime + DriverVersion uint64 +} + +func (data *DrvInfoData) Description() string { + return UTF16ToString(data.description[:]) +} + +func (data *DrvInfoData) SetDescription(description string) error { + str, err := UTF16FromString(description) + if err != nil { + return err + } + copy(data.description[:], str) + return nil +} + +func (data *DrvInfoData) MfgName() string { + return UTF16ToString(data.mfgName[:]) +} + +func (data *DrvInfoData) SetMfgName(mfgName string) error { + str, err := UTF16FromString(mfgName) + if err != nil { + return err + } + copy(data.mfgName[:], str) + return nil +} + +func (data *DrvInfoData) ProviderName() string { + return UTF16ToString(data.providerName[:]) +} + +func (data *DrvInfoData) SetProviderName(providerName string) error { + str, err := UTF16FromString(providerName) + if err != nil { + return err + } + copy(data.providerName[:], str) + return nil +} + +// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters. +func (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool { + if data.DriverDate.HighDateTime > driverDate.HighDateTime { + return true + } + if data.DriverDate.HighDateTime < driverDate.HighDateTime { + return false + } + + if data.DriverDate.LowDateTime > driverDate.LowDateTime { + return true + } + if data.DriverDate.LowDateTime < driverDate.LowDateTime { + return false + } + + if data.DriverVersion > driverVersion { + return true + } + if data.DriverVersion < driverVersion { + return false + } + + return false +} + +// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure) +type DrvInfoDetailData struct { + size uint32 // Use unsafeSizeOf method + InfDate Filetime + compatIDsOffset uint32 + compatIDsLength uint32 + _ uintptr + sectionName [LINE_LEN]uint16 + infFileName [MAX_PATH]uint16 + drvDescription [LINE_LEN]uint16 + hardwareID [1]uint16 +} + +func (*DrvInfoDetailData) unsafeSizeOf() uint32 { + if unsafe.Sizeof(uintptr(0)) == 4 { + // Windows declares this with pshpack1.h + return uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID)) + } + return uint32(unsafe.Sizeof(DrvInfoDetailData{})) +} + +func (data *DrvInfoDetailData) SectionName() string { + return UTF16ToString(data.sectionName[:]) +} + +func (data *DrvInfoDetailData) InfFileName() string { + return UTF16ToString(data.infFileName[:]) +} + +func (data *DrvInfoDetailData) DrvDescription() string { + return UTF16ToString(data.drvDescription[:]) +} + +func (data *DrvInfoDetailData) HardwareID() string { + if data.compatIDsOffset > 1 { + bufW := data.getBuf() + return UTF16ToString(bufW[:wcslen(bufW)]) + } + + return "" +} + +func (data *DrvInfoDetailData) CompatIDs() []string { + a := make([]string, 0) + + if data.compatIDsLength > 0 { + bufW := data.getBuf() + bufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength] + for i := 0; i < len(bufW); { + j := i + wcslen(bufW[i:]) + if i < j { + a = append(a, UTF16ToString(bufW[i:j])) + } + i = j + 1 + } + } + + return a +} + +func (data *DrvInfoDetailData) getBuf() []uint16 { + len := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2 + sl := struct { + addr *uint16 + len int + cap int + }{&data.hardwareID[0], int(len), int(len)} + return *(*[]uint16)(unsafe.Pointer(&sl)) +} + +// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list. +func (data *DrvInfoDetailData) IsCompatible(hwid string) bool { + hwidLC := strings.ToLower(hwid) + if strings.ToLower(data.HardwareID()) == hwidLC { + return true + } + a := data.CompatIDs() + for i := range a { + if strings.ToLower(a[i]) == hwidLC { + return true + } + } + + return false +} + +// DICD flags control SetupDiCreateDeviceInfo +type DICD uint32 + +const ( + DICD_GENERATE_ID DICD = 0x00000001 + DICD_INHERIT_CLASSDRVS DICD = 0x00000002 +) + +// SUOI flags control SetupUninstallOEMInf +type SUOI uint32 + +const ( + SUOI_FORCEDELETE SUOI = 0x0001 +) + +// SPDIT flags to distinguish between class drivers and +// device drivers. (Passed in 'DriverType' parameter of +// driver information list APIs) +type SPDIT uint32 + +const ( + SPDIT_NODRIVER SPDIT = 0x00000000 + SPDIT_CLASSDRIVER SPDIT = 0x00000001 + SPDIT_COMPATDRIVER SPDIT = 0x00000002 +) + +// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs +type DIGCF uint32 + +const ( + DIGCF_DEFAULT DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE + DIGCF_PRESENT DIGCF = 0x00000002 + DIGCF_ALLCLASSES DIGCF = 0x00000004 + DIGCF_PROFILE DIGCF = 0x00000008 + DIGCF_DEVICEINTERFACE DIGCF = 0x00000010 +) + +// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey. +type DIREG uint32 + +const ( + DIREG_DEV DIREG = 0x00000001 // Open/Create/Delete device key + DIREG_DRV DIREG = 0x00000002 // Open/Create/Delete driver key + DIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key +) + +// SPDRP specifies device registry property codes +// (Codes marked as read-only (R) may only be used for +// SetupDiGetDeviceRegistryProperty) +// +// These values should cover the same set of registry properties +// as defined by the CM_DRP codes in cfgmgr32.h. +// +// Note that SPDRP codes are zero based while CM_DRP codes are one based! +type SPDRP uint32 + +const ( + SPDRP_DEVICEDESC SPDRP = 0x00000000 // DeviceDesc (R/W) + SPDRP_HARDWAREID SPDRP = 0x00000001 // HardwareID (R/W) + SPDRP_COMPATIBLEIDS SPDRP = 0x00000002 // CompatibleIDs (R/W) + SPDRP_SERVICE SPDRP = 0x00000004 // Service (R/W) + SPDRP_CLASS SPDRP = 0x00000007 // Class (R--tied to ClassGUID) + SPDRP_CLASSGUID SPDRP = 0x00000008 // ClassGUID (R/W) + SPDRP_DRIVER SPDRP = 0x00000009 // Driver (R/W) + SPDRP_CONFIGFLAGS SPDRP = 0x0000000A // ConfigFlags (R/W) + SPDRP_MFG SPDRP = 0x0000000B // Mfg (R/W) + SPDRP_FRIENDLYNAME SPDRP = 0x0000000C // FriendlyName (R/W) + SPDRP_LOCATION_INFORMATION SPDRP = 0x0000000D // LocationInformation (R/W) + SPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R) + SPDRP_CAPABILITIES SPDRP = 0x0000000F // Capabilities (R) + SPDRP_UI_NUMBER SPDRP = 0x00000010 // UiNumber (R) + SPDRP_UPPERFILTERS SPDRP = 0x00000011 // UpperFilters (R/W) + SPDRP_LOWERFILTERS SPDRP = 0x00000012 // LowerFilters (R/W) + SPDRP_BUSTYPEGUID SPDRP = 0x00000013 // BusTypeGUID (R) + SPDRP_LEGACYBUSTYPE SPDRP = 0x00000014 // LegacyBusType (R) + SPDRP_BUSNUMBER SPDRP = 0x00000015 // BusNumber (R) + SPDRP_ENUMERATOR_NAME SPDRP = 0x00000016 // Enumerator Name (R) + SPDRP_SECURITY SPDRP = 0x00000017 // Security (R/W, binary form) + SPDRP_SECURITY_SDS SPDRP = 0x00000018 // Security (W, SDS form) + SPDRP_DEVTYPE SPDRP = 0x00000019 // Device Type (R/W) + SPDRP_EXCLUSIVE SPDRP = 0x0000001A // Device is exclusive-access (R/W) + SPDRP_CHARACTERISTICS SPDRP = 0x0000001B // Device Characteristics (R/W) + SPDRP_ADDRESS SPDRP = 0x0000001C // Device Address (R) + SPDRP_UI_NUMBER_DESC_FORMAT SPDRP = 0x0000001D // UiNumberDescFormat (R/W) + SPDRP_DEVICE_POWER_DATA SPDRP = 0x0000001E // Device Power Data (R) + SPDRP_REMOVAL_POLICY SPDRP = 0x0000001F // Removal Policy (R) + SPDRP_REMOVAL_POLICY_HW_DEFAULT SPDRP = 0x00000020 // Hardware Removal Policy (R) + SPDRP_REMOVAL_POLICY_OVERRIDE SPDRP = 0x00000021 // Removal Policy Override (RW) + SPDRP_INSTALL_STATE SPDRP = 0x00000022 // Device Install State (R) + SPDRP_LOCATION_PATHS SPDRP = 0x00000023 // Device Location Paths (R) + SPDRP_BASE_CONTAINERID SPDRP = 0x00000024 // Base ContainerID (R) + + SPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals +) + +// DEVPROPTYPE represents the property-data-type identifier that specifies the +// data type of a device property value in the unified device property model. +type DEVPROPTYPE uint32 + +const ( + DEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000 + DEVPROP_TYPEMOD_LIST DEVPROPTYPE = 0x00002000 + + DEVPROP_TYPE_EMPTY DEVPROPTYPE = 0x00000000 + DEVPROP_TYPE_NULL DEVPROPTYPE = 0x00000001 + DEVPROP_TYPE_SBYTE DEVPROPTYPE = 0x00000002 + DEVPROP_TYPE_BYTE DEVPROPTYPE = 0x00000003 + DEVPROP_TYPE_INT16 DEVPROPTYPE = 0x00000004 + DEVPROP_TYPE_UINT16 DEVPROPTYPE = 0x00000005 + DEVPROP_TYPE_INT32 DEVPROPTYPE = 0x00000006 + DEVPROP_TYPE_UINT32 DEVPROPTYPE = 0x00000007 + DEVPROP_TYPE_INT64 DEVPROPTYPE = 0x00000008 + DEVPROP_TYPE_UINT64 DEVPROPTYPE = 0x00000009 + DEVPROP_TYPE_FLOAT DEVPROPTYPE = 0x0000000A + DEVPROP_TYPE_DOUBLE DEVPROPTYPE = 0x0000000B + DEVPROP_TYPE_DECIMAL DEVPROPTYPE = 0x0000000C + DEVPROP_TYPE_GUID DEVPROPTYPE = 0x0000000D + DEVPROP_TYPE_CURRENCY DEVPROPTYPE = 0x0000000E + DEVPROP_TYPE_DATE DEVPROPTYPE = 0x0000000F + DEVPROP_TYPE_FILETIME DEVPROPTYPE = 0x00000010 + DEVPROP_TYPE_BOOLEAN DEVPROPTYPE = 0x00000011 + DEVPROP_TYPE_STRING DEVPROPTYPE = 0x00000012 + DEVPROP_TYPE_STRING_LIST DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST + DEVPROP_TYPE_SECURITY_DESCRIPTOR DEVPROPTYPE = 0x00000013 + DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014 + DEVPROP_TYPE_DEVPROPKEY DEVPROPTYPE = 0x00000015 + DEVPROP_TYPE_DEVPROPTYPE DEVPROPTYPE = 0x00000016 + DEVPROP_TYPE_BINARY DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY + DEVPROP_TYPE_ERROR DEVPROPTYPE = 0x00000017 + DEVPROP_TYPE_NTSTATUS DEVPROPTYPE = 0x00000018 + DEVPROP_TYPE_STRING_INDIRECT DEVPROPTYPE = 0x00000019 + + MAX_DEVPROP_TYPE DEVPROPTYPE = 0x00000019 + MAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000 + + DEVPROP_MASK_TYPE DEVPROPTYPE = 0x00000FFF + DEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000 +) + +// DEVPROPGUID specifies a property category. +type DEVPROPGUID GUID + +// DEVPROPID uniquely identifies the property within the property category. +type DEVPROPID uint32 + +const DEVPROPID_FIRST_USABLE DEVPROPID = 2 + +// DEVPROPKEY represents a device property key for a device property in the +// unified device property model. +type DEVPROPKEY struct { + FmtID DEVPROPGUID + PID DEVPROPID +} + +// CONFIGRET is a return value or error code from cfgmgr32 APIs +type CONFIGRET uint32 + +func (ret CONFIGRET) Error() string { + if win32Error, ok := ret.Unwrap().(Errno); ok { + return fmt.Sprintf("%s (CfgMgr error: 0x%08x)", win32Error.Error(), uint32(ret)) + } + return fmt.Sprintf("CfgMgr error: 0x%08x", uint32(ret)) +} + +func (ret CONFIGRET) Win32Error(defaultError Errno) Errno { + return cm_MapCrToWin32Err(ret, defaultError) +} + +func (ret CONFIGRET) Unwrap() error { + const noMatch = Errno(^uintptr(0)) + win32Error := ret.Win32Error(noMatch) + if win32Error == noMatch { + return nil + } + return win32Error +} + +const ( + CR_SUCCESS CONFIGRET = 0x00000000 + CR_DEFAULT CONFIGRET = 0x00000001 + CR_OUT_OF_MEMORY CONFIGRET = 0x00000002 + CR_INVALID_POINTER CONFIGRET = 0x00000003 + CR_INVALID_FLAG CONFIGRET = 0x00000004 + CR_INVALID_DEVNODE CONFIGRET = 0x00000005 + CR_INVALID_DEVINST = CR_INVALID_DEVNODE + CR_INVALID_RES_DES CONFIGRET = 0x00000006 + CR_INVALID_LOG_CONF CONFIGRET = 0x00000007 + CR_INVALID_ARBITRATOR CONFIGRET = 0x00000008 + CR_INVALID_NODELIST CONFIGRET = 0x00000009 + CR_DEVNODE_HAS_REQS CONFIGRET = 0x0000000A + CR_DEVINST_HAS_REQS = CR_DEVNODE_HAS_REQS + CR_INVALID_RESOURCEID CONFIGRET = 0x0000000B + CR_DLVXD_NOT_FOUND CONFIGRET = 0x0000000C + CR_NO_SUCH_DEVNODE CONFIGRET = 0x0000000D + CR_NO_SUCH_DEVINST = CR_NO_SUCH_DEVNODE + CR_NO_MORE_LOG_CONF CONFIGRET = 0x0000000E + CR_NO_MORE_RES_DES CONFIGRET = 0x0000000F + CR_ALREADY_SUCH_DEVNODE CONFIGRET = 0x00000010 + CR_ALREADY_SUCH_DEVINST = CR_ALREADY_SUCH_DEVNODE + CR_INVALID_RANGE_LIST CONFIGRET = 0x00000011 + CR_INVALID_RANGE CONFIGRET = 0x00000012 + CR_FAILURE CONFIGRET = 0x00000013 + CR_NO_SUCH_LOGICAL_DEV CONFIGRET = 0x00000014 + CR_CREATE_BLOCKED CONFIGRET = 0x00000015 + CR_NOT_SYSTEM_VM CONFIGRET = 0x00000016 + CR_REMOVE_VETOED CONFIGRET = 0x00000017 + CR_APM_VETOED CONFIGRET = 0x00000018 + CR_INVALID_LOAD_TYPE CONFIGRET = 0x00000019 + CR_BUFFER_SMALL CONFIGRET = 0x0000001A + CR_NO_ARBITRATOR CONFIGRET = 0x0000001B + CR_NO_REGISTRY_HANDLE CONFIGRET = 0x0000001C + CR_REGISTRY_ERROR CONFIGRET = 0x0000001D + CR_INVALID_DEVICE_ID CONFIGRET = 0x0000001E + CR_INVALID_DATA CONFIGRET = 0x0000001F + CR_INVALID_API CONFIGRET = 0x00000020 + CR_DEVLOADER_NOT_READY CONFIGRET = 0x00000021 + CR_NEED_RESTART CONFIGRET = 0x00000022 + CR_NO_MORE_HW_PROFILES CONFIGRET = 0x00000023 + CR_DEVICE_NOT_THERE CONFIGRET = 0x00000024 + CR_NO_SUCH_VALUE CONFIGRET = 0x00000025 + CR_WRONG_TYPE CONFIGRET = 0x00000026 + CR_INVALID_PRIORITY CONFIGRET = 0x00000027 + CR_NOT_DISABLEABLE CONFIGRET = 0x00000028 + CR_FREE_RESOURCES CONFIGRET = 0x00000029 + CR_QUERY_VETOED CONFIGRET = 0x0000002A + CR_CANT_SHARE_IRQ CONFIGRET = 0x0000002B + CR_NO_DEPENDENT CONFIGRET = 0x0000002C + CR_SAME_RESOURCES CONFIGRET = 0x0000002D + CR_NO_SUCH_REGISTRY_KEY CONFIGRET = 0x0000002E + CR_INVALID_MACHINENAME CONFIGRET = 0x0000002F + CR_REMOTE_COMM_FAILURE CONFIGRET = 0x00000030 + CR_MACHINE_UNAVAILABLE CONFIGRET = 0x00000031 + CR_NO_CM_SERVICES CONFIGRET = 0x00000032 + CR_ACCESS_DENIED CONFIGRET = 0x00000033 + CR_CALL_NOT_IMPLEMENTED CONFIGRET = 0x00000034 + CR_INVALID_PROPERTY CONFIGRET = 0x00000035 + CR_DEVICE_INTERFACE_ACTIVE CONFIGRET = 0x00000036 + CR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037 + CR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038 + CR_INVALID_CONFLICT_LIST CONFIGRET = 0x00000039 + CR_INVALID_INDEX CONFIGRET = 0x0000003A + CR_INVALID_STRUCTURE_SIZE CONFIGRET = 0x0000003B + NUM_CR_RESULTS CONFIGRET = 0x0000003C +) + +const ( + CM_GET_DEVICE_INTERFACE_LIST_PRESENT = 0 // only currently 'live' device interfaces + CM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not +) + +const ( + DN_ROOT_ENUMERATED = 0x00000001 // Was enumerated by ROOT + DN_DRIVER_LOADED = 0x00000002 // Has Register_Device_Driver + DN_ENUM_LOADED = 0x00000004 // Has Register_Enumerator + DN_STARTED = 0x00000008 // Is currently configured + DN_MANUAL = 0x00000010 // Manually installed + DN_NEED_TO_ENUM = 0x00000020 // May need reenumeration + DN_NOT_FIRST_TIME = 0x00000040 // Has received a config + DN_HARDWARE_ENUM = 0x00000080 // Enum generates hardware ID + DN_LIAR = 0x00000100 // Lied about can reconfig once + DN_HAS_MARK = 0x00000200 // Not CM_Create_DevInst lately + DN_HAS_PROBLEM = 0x00000400 // Need device installer + DN_FILTERED = 0x00000800 // Is filtered + DN_MOVED = 0x00001000 // Has been moved + DN_DISABLEABLE = 0x00002000 // Can be disabled + DN_REMOVABLE = 0x00004000 // Can be removed + DN_PRIVATE_PROBLEM = 0x00008000 // Has a private problem + DN_MF_PARENT = 0x00010000 // Multi function parent + DN_MF_CHILD = 0x00020000 // Multi function child + DN_WILL_BE_REMOVED = 0x00040000 // DevInst is being removed + DN_NOT_FIRST_TIMEE = 0x00080000 // Has received a config enumerate + DN_STOP_FREE_RES = 0x00100000 // When child is stopped, free resources + DN_REBAL_CANDIDATE = 0x00200000 // Don't skip during rebalance + DN_BAD_PARTIAL = 0x00400000 // This devnode's log_confs do not have same resources + DN_NT_ENUMERATOR = 0x00800000 // This devnode's is an NT enumerator + DN_NT_DRIVER = 0x01000000 // This devnode's is an NT driver + DN_NEEDS_LOCKING = 0x02000000 // Devnode need lock resume processing + DN_ARM_WAKEUP = 0x04000000 // Devnode can be the wakeup device + DN_APM_ENUMERATOR = 0x08000000 // APM aware enumerator + DN_APM_DRIVER = 0x10000000 // APM aware driver + DN_SILENT_INSTALL = 0x20000000 // Silent install + DN_NO_SHOW_IN_DM = 0x40000000 // No show in device manager + DN_BOOT_LOG_PROB = 0x80000000 // Had a problem during preassignment of boot log conf + DN_NEED_RESTART = DN_LIAR // System needs to be restarted for this Devnode to work properly + DN_DRIVER_BLOCKED = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode + DN_LEGACY_DRIVER = DN_MOVED // This device is using a legacy driver + DN_CHILD_WITH_INVALID_ID = DN_HAS_MARK // One or more children have invalid IDs + DN_DEVICE_DISCONNECTED = DN_NEEDS_LOCKING // The function driver for a device reported that the device is not connected. Typically this means a wireless device is out of range. + DN_QUERY_REMOVE_PENDING = DN_MF_PARENT // Device is part of a set of related devices collectively pending query-removal + DN_QUERY_REMOVE_ACTIVE = DN_MF_CHILD // Device is actively engaged in a query-remove IRP + DN_CHANGEABLE_FLAGS = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM +) + +//sys setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW + +// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class. +func SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) { + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return + } + } + return setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0) +} + +//sys setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW + +// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name. +func SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) { + data := &DevInfoListDetailData{} + data.size = data.unsafeSizeOf() + + return data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data) +} + +// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name. +func (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) { + return SetupDiGetDeviceInfoListDetail(deviceInfoSet) +} + +//sys setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW + +// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set. +func SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) { + deviceNameUTF16, err := UTF16PtrFromString(deviceName) + if err != nil { + return + } + + var deviceDescriptionUTF16 *uint16 + if deviceDescription != "" { + deviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription) + if err != nil { + return + } + } + + data := &DevInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data) +} + +// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set. +func (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) { + return SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags) +} + +//sys setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo + +// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set. +func SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) { + data := &DevInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data) +} + +// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set. +func (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) { + return SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex) +} + +// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory. +//sys SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList + +// Close method deletes a device information set and frees all associated memory. +func (deviceInfoSet DevInfo) Close() error { + return SetupDiDestroyDeviceInfoList(deviceInfoSet) +} + +//sys SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList + +// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set. +func (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error { + return SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType) +} + +//sys SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch + +// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread. +func (deviceInfoSet DevInfo) CancelDriverInfoSearch() error { + return SetupDiCancelDriverInfoSearch(deviceInfoSet) +} + +//sys setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW + +// SetupDiEnumDriverInfo function enumerates the members of a driver list. +func SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) { + data := &DrvInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data) +} + +// EnumDriverInfo method enumerates the members of a driver list. +func (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) { + return SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex) +} + +//sys setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW + +// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element. +func SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) { + data := &DrvInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data) +} + +// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) { + return SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData) +} + +//sys SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW + +// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set. +func (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error { + return SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData) +} + +//sys setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW + +// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set. +func SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) { + reqSize := uint32(2048) + for { + buf := make([]byte, reqSize) + data := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0])) + data.size = data.unsafeSizeOf() + err := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return nil, err + } + data.size = reqSize + return data, nil + } +} + +// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set. +func (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) { + return SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData) +} + +//sys SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList + +// DestroyDriverInfoList method deletes a driver list. +func (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error { + return SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType) +} + +//sys setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW + +// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer. +func SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) { + var enumeratorUTF16 *uint16 + if enumerator != "" { + enumeratorUTF16, err = UTF16PtrFromString(enumerator) + if err != nil { + return + } + } + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return + } + } + return setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0) +} + +// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code). +//sys SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller + +// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code). +func (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error { + return SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData) +} + +// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information. +//sys SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey + +// OpenDevRegKey method opens a registry key for device-specific configuration information. +func (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) { + return SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired) +} + +//sys setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW + +// SetupDiGetDeviceProperty function retrieves a specified device instance property. +func SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value interface{}, err error) { + reqSize := uint32(256) + for { + var dataType DEVPROPTYPE + buf := make([]byte, reqSize) + err = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return + } + switch dataType { + case DEVPROP_TYPE_STRING: + ret := UTF16ToString(bufToUTF16(buf)) + runtime.KeepAlive(buf) + return ret, nil + } + return nil, errors.New("unimplemented property type") + } +} + +//sys setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW + +// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property. +func SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value interface{}, err error) { + reqSize := uint32(256) + for { + var dataType uint32 + buf := make([]byte, reqSize) + err = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return + } + return getRegistryValue(buf[:reqSize], dataType) + } +} + +func getRegistryValue(buf []byte, dataType uint32) (interface{}, error) { + switch dataType { + case REG_SZ: + ret := UTF16ToString(bufToUTF16(buf)) + runtime.KeepAlive(buf) + return ret, nil + case REG_EXPAND_SZ: + value := UTF16ToString(bufToUTF16(buf)) + if value == "" { + return "", nil + } + p, err := syscall.UTF16PtrFromString(value) + if err != nil { + return "", err + } + ret := make([]uint16, 100) + for { + n, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret))) + if err != nil { + return "", err + } + if n <= uint32(len(ret)) { + return UTF16ToString(ret[:n]), nil + } + ret = make([]uint16, n) + } + case REG_BINARY: + return buf, nil + case REG_DWORD_LITTLE_ENDIAN: + return binary.LittleEndian.Uint32(buf), nil + case REG_DWORD_BIG_ENDIAN: + return binary.BigEndian.Uint32(buf), nil + case REG_MULTI_SZ: + bufW := bufToUTF16(buf) + a := []string{} + for i := 0; i < len(bufW); { + j := i + wcslen(bufW[i:]) + if i < j { + a = append(a, UTF16ToString(bufW[i:j])) + } + i = j + 1 + } + runtime.KeepAlive(buf) + return a, nil + case REG_QWORD_LITTLE_ENDIAN: + return binary.LittleEndian.Uint64(buf), nil + default: + return nil, fmt.Errorf("Unsupported registry value type: %v", dataType) + } +} + +// bufToUTF16 function reinterprets []byte buffer as []uint16 +func bufToUTF16(buf []byte) []uint16 { + sl := struct { + addr *uint16 + len int + cap int + }{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2} + return *(*[]uint16)(unsafe.Pointer(&sl)) +} + +// utf16ToBuf function reinterprets []uint16 as []byte +func utf16ToBuf(buf []uint16) []byte { + sl := struct { + addr *byte + len int + cap int + }{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2} + return *(*[]byte)(unsafe.Pointer(&sl)) +} + +func wcslen(str []uint16) int { + for i := 0; i < len(str); i++ { + if str[i] == 0 { + return i + } + } + return len(str) +} + +// DeviceRegistryProperty method retrieves a specified Plug and Play device property. +func (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (interface{}, error) { + return SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property) +} + +//sys setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW + +// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device. +func SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error { + return setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers))) +} + +// SetDeviceRegistryProperty function sets a Plug and Play device property for a device. +func (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error { + return SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers) +} + +// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device. +func (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error { + str16, err := UTF16FromString(str) + if err != nil { + return err + } + err = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0))) + runtime.KeepAlive(str16) + return err +} + +//sys setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW + +// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element. +func SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) { + params := &DevInstallParams{} + params.size = uint32(unsafe.Sizeof(*params)) + + return params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params) +} + +// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) { + return SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData) +} + +//sys setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW + +// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device. +func SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) { + reqSize := uint32(1024) + for { + buf := make([]uint16, reqSize) + err := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return "", err + } + return UTF16ToString(buf), nil + } +} + +// DeviceInstanceID method retrieves the instance ID of the device. +func (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) { + return SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData) +} + +// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element. +//sys SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW + +// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error { + return SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize) +} + +//sys SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW + +// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error { + return SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams) +} + +// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element. +//sys SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW + +// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element. +func (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error { + return SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize) +} + +//sys setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW + +// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer. +func SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) { + var classNameUTF16 [MAX_CLASS_NAME_LEN]uint16 + + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return + } + } + + err = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0) + if err != nil { + return + } + + className = UTF16ToString(classNameUTF16[:]) + return +} + +//sys setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW + +// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer. +func SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) { + classNameUTF16, err := UTF16PtrFromString(className) + if err != nil { + return nil, err + } + + var machineNameUTF16 *uint16 + if machineName != "" { + machineNameUTF16, err = UTF16PtrFromString(machineName) + if err != nil { + return nil, err + } + } + + reqSize := uint32(4) + for { + buf := make([]GUID, reqSize) + err = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return nil, err + } + return buf[:reqSize], nil + } +} + +//sys setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice + +// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set. +func SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) { + data := &DevInfoData{} + data.size = uint32(unsafe.Sizeof(*data)) + + return data, setupDiGetSelectedDevice(deviceInfoSet, data) +} + +// SelectedDevice method retrieves the selected device information element in a device information set. +func (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) { + return SetupDiGetSelectedDevice(deviceInfoSet) +} + +// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard. +//sys SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice + +// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard. +func (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error { + return SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData) +} + +//sys setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW + +// SetupUninstallOEMInf uninstalls the specified driver. +func SetupUninstallOEMInf(infFileName string, flags SUOI) error { + infFileName16, err := UTF16PtrFromString(infFileName) + if err != nil { + return err + } + return setupUninstallOEMInf(infFileName16, flags, 0) +} + +//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err + +//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW +//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW + +func CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) { + deviceID16, err := UTF16PtrFromString(deviceID) + if err != nil { + return nil, err + } + var buf []uint16 + var buflen uint32 + for { + if ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS { + return nil, ret + } + buf = make([]uint16, buflen) + if ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS { + break + } else if ret != CR_BUFFER_SMALL { + return nil, ret + } + } + var interfaces []string + for i := 0; i < len(buf); { + j := i + wcslen(buf[i:]) + if i < j { + interfaces = append(interfaces, UTF16ToString(buf[i:j])) + } + i = j + 1 + } + if interfaces == nil { + return nil, ERROR_NO_SUCH_DEVICE_INTERFACE + } + return interfaces, nil +} + +//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status + +func CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error { + ret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags) + if ret == CR_SUCCESS { + return nil + } + return ret +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/str.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/str.go new file mode 100644 index 0000000..6a4f9ce --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/str.go @@ -0,0 +1,22 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +package windows + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + itoa(-val) + } + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall.go new file mode 100644 index 0000000..e85ed6b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall.go @@ -0,0 +1,104 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build windows + +// Package windows contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display the OS-specific documentation for the current +// system. If you want godoc to display syscall documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package windows // import "golang.org/x/sys/windows" + +import ( + "bytes" + "strings" + "syscall" + "unsafe" +) + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, syscall.EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any +// bytes after the NUL removed. +func ByteSliceToString(s []byte) string { + if i := bytes.IndexByte(s, 0); i != -1 { + s = s[:i] + } + return string(s) +} + +// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string. +// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated +// at a zero byte; if the zero byte is not present, the program may crash. +func BytePtrToString(p *byte) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + 1) + } + + return string(unsafe.Slice(p, n)) +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +// See mksyscall.pl. +var _zero uintptr + +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall_windows.go new file mode 100644 index 0000000..d766436 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -0,0 +1,1938 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows system calls. + +package windows + +import ( + errorspkg "errors" + "fmt" + "runtime" + "sync" + "syscall" + "time" + "unicode/utf16" + "unsafe" +) + +type ( + Handle uintptr + HWND uintptr +) + +const ( + InvalidHandle = ^Handle(0) + InvalidHWND = ^HWND(0) + + // Flags for DefineDosDevice. + DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 + DDD_NO_BROADCAST_SYSTEM = 0x00000008 + DDD_RAW_TARGET_PATH = 0x00000001 + DDD_REMOVE_DEFINITION = 0x00000002 + + // Return values for GetDriveType. + DRIVE_UNKNOWN = 0 + DRIVE_NO_ROOT_DIR = 1 + DRIVE_REMOVABLE = 2 + DRIVE_FIXED = 3 + DRIVE_REMOTE = 4 + DRIVE_CDROM = 5 + DRIVE_RAMDISK = 6 + + // File system flags from GetVolumeInformation and GetVolumeInformationByHandle. + FILE_CASE_SENSITIVE_SEARCH = 0x00000001 + FILE_CASE_PRESERVED_NAMES = 0x00000002 + FILE_FILE_COMPRESSION = 0x00000010 + FILE_DAX_VOLUME = 0x20000000 + FILE_NAMED_STREAMS = 0x00040000 + FILE_PERSISTENT_ACLS = 0x00000008 + FILE_READ_ONLY_VOLUME = 0x00080000 + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000 + FILE_SUPPORTS_ENCRYPTION = 0x00020000 + FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000 + FILE_SUPPORTS_HARD_LINKS = 0x00400000 + FILE_SUPPORTS_OBJECT_IDS = 0x00010000 + FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000 + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 + FILE_SUPPORTS_SPARSE_FILES = 0x00000040 + FILE_SUPPORTS_TRANSACTIONS = 0x00200000 + FILE_SUPPORTS_USN_JOURNAL = 0x02000000 + FILE_UNICODE_ON_DISK = 0x00000004 + FILE_VOLUME_IS_COMPRESSED = 0x00008000 + FILE_VOLUME_QUOTAS = 0x00000020 + + // Flags for LockFileEx. + LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 + LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 + + // Return value of SleepEx and other APC functions + WAIT_IO_COMPLETION = 0x000000C0 +) + +// StringToUTF16 is deprecated. Use UTF16FromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16(s string) []uint16 { + a, err := UTF16FromString(s) + if err != nil { + panic("windows: string with NUL passed to StringToUTF16") + } + return a +} + +// UTF16FromString returns the UTF-16 encoding of the UTF-8 string +// s, with a terminating NUL added. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func UTF16FromString(s string) ([]uint16, error) { + return syscall.UTF16FromString(s) +} + +// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, +// with a terminating NUL and any bytes after the NUL removed. +func UTF16ToString(s []uint16) string { + return syscall.UTF16ToString(s) +} + +// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] } + +// UTF16PtrFromString returns pointer to the UTF-16 encoding of +// the UTF-8 string s, with a terminating NUL added. If s +// contains a NUL byte at any location, it returns (nil, syscall.EINVAL). +func UTF16PtrFromString(s string) (*uint16, error) { + a, err := UTF16FromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string. +// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated +// at a zero word; if the zero word is not present, the program may crash. +func UTF16PtrToString(p *uint16) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p)) + } + return UTF16ToString(unsafe.Slice(p, n)) +} + +func Getpagesize() int { return 4096 } + +// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallback(fn interface{}) uintptr { + return syscall.NewCallback(fn) +} + +// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallbackCDecl(fn interface{}) uintptr { + return syscall.NewCallbackCDecl(fn) +} + +// windows api calls + +//sys GetLastError() (lasterr error) +//sys LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW +//sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW +//sys FreeLibrary(handle Handle) (err error) +//sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) +//sys GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW +//sys GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW +//sys SetDefaultDllDirectories(directoryFlags uint32) (err error) +//sys AddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory +//sys RemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory +//sys SetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW +//sys GetVersion() (ver uint32, err error) +//sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW +//sys ExitProcess(exitcode uint32) +//sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process +//sys IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2? +//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW +//sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) +//sys DisconnectNamedPipe(pipe Handle) (err error) +//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) +//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) +//sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) +//sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW +//sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState +//sys readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile +//sys writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile +//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) +//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] +//sys CloseHandle(handle Handle) (err error) +//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] +//sys SetStdHandle(stdhandle uint32, handle Handle) (err error) +//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW +//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW +//sys FindClose(handle Handle) (err error) +//sys GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) +//sys GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) +//sys SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) +//sys GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW +//sys SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW +//sys CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW +//sys RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW +//sys DeleteFile(path *uint16) (err error) = DeleteFileW +//sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW +//sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW +//sys LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) +//sys UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) +//sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW +//sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW +//sys SetEndOfFile(handle Handle) (err error) +//sys SetFileValidData(handle Handle, validDataLength int64) (err error) +//sys GetSystemTimeAsFileTime(time *Filetime) +//sys GetSystemTimePreciseAsFileTime(time *Filetime) +//sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] +//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) +//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) +//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) +//sys CancelIo(s Handle) (err error) +//sys CancelIoEx(s Handle, o *Overlapped) (err error) +//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW +//sys initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList +//sys deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList +//sys updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute +//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) +//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW +//sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId +//sys LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW +//sys UnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout +//sys GetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout +//sys ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx +//sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow +//sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW +//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx +//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath +//sys TerminateProcess(handle Handle, exitcode uint32) (err error) +//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) +//sys getStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW +//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) +//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) +//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] +//sys waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects +//sys GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW +//sys CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) +//sys GetFileType(filehandle Handle) (n uint32, err error) +//sys CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW +//sys CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext +//sys CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom +//sys GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW +//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW +//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW +//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW +//sys ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW +//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock +//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock +//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64 +//sys GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) +//sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) +//sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW +//sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW +//sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW +//sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW +//sys commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW +//sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] +//sys LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) +//sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) +//sys FlushFileBuffers(handle Handle) (err error) +//sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW +//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW +//sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW +//sys GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW +//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW +//sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) +//sys UnmapViewOfFile(addr uintptr) (err error) +//sys FlushViewOfFile(addr uintptr, length uintptr) (err error) +//sys VirtualLock(addr uintptr, length uintptr) (err error) +//sys VirtualUnlock(addr uintptr, length uintptr) (err error) +//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc +//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree +//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect +//sys VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx +//sys VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery +//sys VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx +//sys ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory +//sys WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory +//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile +//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW +//sys FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW +//sys FindNextChangeNotification(handle Handle) (err error) +//sys FindCloseChangeNotification(handle Handle) (err error) +//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW +//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore +//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore +//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore +//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore +//sys CertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore +//sys CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext +//sys PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore +//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain +//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain +//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext +//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext +//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy +//sys CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW +//sys CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension +//sys CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore +//sys CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore +//sys CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey +//sys CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject +//sys CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject +//sys CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData +//sys CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData +//sys WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx +//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW +//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey +//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW +//sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW +//sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW +//sys RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue +//sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId +//sys ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId +//sys ClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole +//sys createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole +//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode +//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode +//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo +//sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition +//sys GetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP +//sys GetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP +//sys SetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP +//sys SetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP +//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW +//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW +//sys GetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) = kernel32.GetNumberOfConsoleInputEvents +//sys FlushConsoleInputBuffer(console Handle) (err error) = kernel32.FlushConsoleInputBuffer +//sys resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole +//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot +//sys Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW +//sys Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW +//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW +//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW +//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) +//sys Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) +//sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +//sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW +//sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW +//sys GetCurrentThreadId() (id uint32) +//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW +//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW +//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW +//sys SetEvent(event Handle) (err error) = kernel32.SetEvent +//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent +//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent +//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW +//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW +//sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW +//sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex +//sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx +//sys CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW +//sys AssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject +//sys TerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject +//sys SetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode +//sys ResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread +//sys SetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass +//sys GetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass +//sys QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject +//sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) +//sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) +//sys GetProcessId(process Handle) (id uint32, err error) +//sys QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW +//sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) +//sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost +//sys GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) +//sys SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) +//sys ClearCommBreak(handle Handle) (err error) +//sys ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) +//sys EscapeCommFunction(handle Handle, dwFunc uint32) (err error) +//sys GetCommState(handle Handle, lpDCB *DCB) (err error) +//sys GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) +//sys GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys PurgeComm(handle Handle, dwFlags uint32) (err error) +//sys SetCommBreak(handle Handle) (err error) +//sys SetCommMask(handle Handle, dwEvtMask uint32) (err error) +//sys SetCommState(handle Handle, lpDCB *DCB) (err error) +//sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) +//sys SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) +//sys WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) +//sys GetActiveProcessorCount(groupNumber uint16) (ret uint32) +//sys GetMaximumProcessorCount(groupNumber uint16) (ret uint32) +//sys EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows +//sys EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows +//sys GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW +//sys GetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow +//sys GetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow +//sys IsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow +//sys IsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode +//sys IsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible +//sys GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo +//sys GetLargePageMinimum() (size uintptr) + +// Volume Management Functions +//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW +//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW +//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW +//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW +//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW +//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW +//sys FindVolumeClose(findVolume Handle) (err error) +//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) +//sys GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW +//sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW +//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] +//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW +//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW +//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW +//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW +//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW +//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW +//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW +//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW +//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW +//sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW +//sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters +//sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters +//sys clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString +//sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2 +//sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid +//sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree +//sys CoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx +//sys CoUninitialize() = ole32.CoUninitialize +//sys CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject +//sys getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages +//sys getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages +//sys getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages +//sys getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages +//sys findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW +//sys SizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource +//sys LoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource +//sys LockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource + +// Version APIs +//sys GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW +//sys GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW +//sys VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW + +// Process Status API (PSAPI) +//sys enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses +//sys EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules +//sys EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx +//sys GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation +//sys GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW +//sys GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW +//sys QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx + +// NT Native APIs +//sys rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb +//sys rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion +//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers +//sys RtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb +//sys RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString +//sys RtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString +//sys NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile +//sys NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile +//sys NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile +//sys RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus +//sys RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus +//sys RtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl +//sys NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess +//sys NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess +//sys NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation +//sys NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation +//sys RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable +//sys RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable + +// Desktop Window Manager API (Dwmapi) +//sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute +//sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute + +// Windows Multimedia API +//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod +//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod + +// syscall interface implementation for other packages + +// GetCurrentProcess returns the handle for the current process. +// It is a pseudo handle that does not need to be closed. +// The returned error is always nil. +// +// Deprecated: use CurrentProcess for the same Handle without the nil +// error. +func GetCurrentProcess() (Handle, error) { + return CurrentProcess(), nil +} + +// CurrentProcess returns the handle for the current process. +// It is a pseudo handle that does not need to be closed. +func CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) } + +// GetCurrentThread returns the handle for the current thread. +// It is a pseudo handle that does not need to be closed. +// The returned error is always nil. +// +// Deprecated: use CurrentThread for the same Handle without the nil +// error. +func GetCurrentThread() (Handle, error) { + return CurrentThread(), nil +} + +// CurrentThread returns the handle for the current thread. +// It is a pseudo handle that does not need to be closed. +func CurrentThread() Handle { return Handle(^uintptr(2 - 1)) } + +// GetProcAddressByOrdinal retrieves the address of the exported +// function from module by ordinal. +func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0) + proc = uintptr(r0) + if proc == 0 { + err = errnoErr(e1) + } + return +} + +func Exit(code int) { ExitProcess(uint32(code)) } + +func makeInheritSa() *SecurityAttributes { + var sa SecurityAttributes + sa.Length = uint32(unsafe.Sizeof(sa)) + sa.InheritHandle = 1 + return &sa +} + +func Open(path string, mode int, perm uint32) (fd Handle, err error) { + if len(path) == 0 { + return InvalidHandle, ERROR_FILE_NOT_FOUND + } + pathp, err := UTF16PtrFromString(path) + if err != nil { + return InvalidHandle, err + } + var access uint32 + switch mode & (O_RDONLY | O_WRONLY | O_RDWR) { + case O_RDONLY: + access = GENERIC_READ + case O_WRONLY: + access = GENERIC_WRITE + case O_RDWR: + access = GENERIC_READ | GENERIC_WRITE + } + if mode&O_CREAT != 0 { + access |= GENERIC_WRITE + } + if mode&O_APPEND != 0 { + access &^= GENERIC_WRITE + access |= FILE_APPEND_DATA + } + sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE) + var sa *SecurityAttributes + if mode&O_CLOEXEC == 0 { + sa = makeInheritSa() + } + var createmode uint32 + switch { + case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL): + createmode = CREATE_NEW + case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC): + createmode = CREATE_ALWAYS + case mode&O_CREAT == O_CREAT: + createmode = OPEN_ALWAYS + case mode&O_TRUNC == O_TRUNC: + createmode = TRUNCATE_EXISTING + default: + createmode = OPEN_EXISTING + } + var attrs uint32 = FILE_ATTRIBUTE_NORMAL + if perm&S_IWRITE == 0 { + attrs = FILE_ATTRIBUTE_READONLY + } + h, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0) + return h, e +} + +func Read(fd Handle, p []byte) (n int, err error) { + var done uint32 + e := ReadFile(fd, p, &done, nil) + if e != nil { + if e == ERROR_BROKEN_PIPE { + // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin + return 0, nil + } + return 0, e + } + return int(done), nil +} + +func Write(fd Handle, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var done uint32 + e := WriteFile(fd, p, &done, nil) + if e != nil { + return 0, e + } + return int(done), nil +} + +func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error { + err := readFile(fd, p, done, overlapped) + if raceenabled { + if *done > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), int(*done)) + } + raceAcquire(unsafe.Pointer(&ioSync)) + } + return err +} + +func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + err := writeFile(fd, p, done, overlapped) + if raceenabled && *done > 0 { + raceReadRange(unsafe.Pointer(&p[0]), int(*done)) + } + return err +} + +var ioSync int64 + +func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) { + var w uint32 + switch whence { + case 0: + w = FILE_BEGIN + case 1: + w = FILE_CURRENT + case 2: + w = FILE_END + } + hi := int32(offset >> 32) + lo := int32(offset) + // use GetFileType to check pipe, pipe can't do seek + ft, _ := GetFileType(fd) + if ft == FILE_TYPE_PIPE { + return 0, syscall.EPIPE + } + rlo, e := SetFilePointer(fd, lo, &hi, w) + if e != nil { + return 0, e + } + return int64(hi)<<32 + int64(rlo), nil +} + +func Close(fd Handle) (err error) { + return CloseHandle(fd) +} + +var ( + Stdin = getStdHandle(STD_INPUT_HANDLE) + Stdout = getStdHandle(STD_OUTPUT_HANDLE) + Stderr = getStdHandle(STD_ERROR_HANDLE) +) + +func getStdHandle(stdhandle uint32) (fd Handle) { + r, _ := GetStdHandle(stdhandle) + return r +} + +const ImplementsGetwd = true + +func Getwd() (wd string, err error) { + b := make([]uint16, 300) + n, e := GetCurrentDirectory(uint32(len(b)), &b[0]) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func Chdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return SetCurrentDirectory(pathp) +} + +func Mkdir(path string, mode uint32) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return CreateDirectory(pathp, nil) +} + +func Rmdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return RemoveDirectory(pathp) +} + +func Unlink(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return DeleteFile(pathp) +} + +func Rename(oldpath, newpath string) (err error) { + from, err := UTF16PtrFromString(oldpath) + if err != nil { + return err + } + to, err := UTF16PtrFromString(newpath) + if err != nil { + return err + } + return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) +} + +func ComputerName() (name string, err error) { + var n uint32 = MAX_COMPUTERNAME_LENGTH + 1 + b := make([]uint16, n) + e := GetComputerName(&b[0], &n) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func DurationSinceBoot() time.Duration { + return time.Duration(getTickCount64()) * time.Millisecond +} + +func Ftruncate(fd Handle, length int64) (err error) { + type _FILE_END_OF_FILE_INFO struct { + EndOfFile int64 + } + var info _FILE_END_OF_FILE_INFO + info.EndOfFile = length + return SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info))) +} + +func Gettimeofday(tv *Timeval) (err error) { + var ft Filetime + GetSystemTimeAsFileTime(&ft) + *tv = NsecToTimeval(ft.Nanoseconds()) + return nil +} + +func Pipe(p []Handle) (err error) { + if len(p) != 2 { + return syscall.EINVAL + } + var r, w Handle + e := CreatePipe(&r, &w, makeInheritSa(), 0) + if e != nil { + return e + } + p[0] = r + p[1] = w + return nil +} + +func Utimes(path string, tv []Timeval) (err error) { + if len(tv) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer CloseHandle(h) + a := NsecToFiletime(tv[0].Nanoseconds()) + w := NsecToFiletime(tv[1].Nanoseconds()) + return SetFileTime(h, nil, &a, &w) +} + +func UtimesNano(path string, ts []Timespec) (err error) { + if len(ts) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer CloseHandle(h) + a := NsecToFiletime(TimespecToNsec(ts[0])) + w := NsecToFiletime(TimespecToNsec(ts[1])) + return SetFileTime(h, nil, &a, &w) +} + +func Fsync(fd Handle) (err error) { + return FlushFileBuffers(fd) +} + +func Chmod(path string, mode uint32) (err error) { + p, e := UTF16PtrFromString(path) + if e != nil { + return e + } + attrs, e := GetFileAttributes(p) + if e != nil { + return e + } + if mode&S_IWRITE != 0 { + attrs &^= FILE_ATTRIBUTE_READONLY + } else { + attrs |= FILE_ATTRIBUTE_READONLY + } + return SetFileAttributes(p, attrs) +} + +func LoadGetSystemTimePreciseAsFileTime() error { + return procGetSystemTimePreciseAsFileTime.Find() +} + +func LoadCancelIoEx() error { + return procCancelIoEx.Find() +} + +func LoadSetFileCompletionNotificationModes() error { + return procSetFileCompletionNotificationModes.Find() +} + +func WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + // Every other win32 array API takes arguments as "pointer, count", except for this function. So we + // can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore + // trivially stub this ourselves. + + var handlePtr *Handle + if len(handles) > 0 { + handlePtr = &handles[0] + } + return waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds) +} + +// net api calls + +const socket_error = uintptr(^uint32(0)) + +//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup +//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup +//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl +//sys WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW +//sys WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW +//sys WSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd +//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket +//sys sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto +//sys recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom +//sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt +//sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt +//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind +//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect +//sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname +//sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername +//sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen +//sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown +//sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket +//sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx +//sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs +//sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv +//sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend +//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom +//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo +//sys WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW +//sys WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) [failretval!=0] = ws2_32.WSADuplicateSocketW +//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname +//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname +//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs +//sys GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname +//sys DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W +//sys DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree +//sys DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W +//sys GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW +//sys FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW +//sys GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry +//sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo +//sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes +//sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW +//sys WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult +//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses +//sys GetACP() (acp uint32) = kernel32.GetACP +//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar +//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx +//sys GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex +//sys GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) = iphlpapi.GetIpForwardEntry2 +//sys GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) = iphlpapi.GetIpForwardTable2 +//sys GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry +//sys FreeMibTable(memory unsafe.Pointer) = iphlpapi.FreeMibTable +//sys NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange +//sys NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyRouteChange2 +//sys NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange +//sys CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2 +//sys IsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) = kernel32.IsProcessorFeaturePresent + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +// RawSockaddrInet is a union that contains an IPv4, an IPv6 address, or an address family. See +// https://learn.microsoft.com/en-us/windows/win32/api/ws2ipdef/ns-ws2ipdef-sockaddr_inet. +// +// A [*RawSockaddrInet] may be converted to a [*RawSockaddrInet4] or [*RawSockaddrInet6] using +// unsafe, depending on the address family. +type RawSockaddrInet struct { + Family uint16 + Port uint16 + Data [6]uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [100]int8 +} + +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs +} + +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + sa.raw.Addr = sa.Addr + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type RawSockaddrUnix struct { + Family uint16 + Path [UNIX_PATH_MAX]int8 +} + +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, syscall.EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := int32(2) + if n > 0 { + sl += int32(n) + 1 + } + if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) { + // Check sl > 3 so we don't change unnamed socket behavior. + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +type RawSockaddrBth struct { + AddressFamily [2]byte + BtAddr [8]byte + ServiceClassId [16]byte + Port [4]byte +} + +type SockaddrBth struct { + BtAddr uint64 + ServiceClassId GUID + Port uint32 + + raw RawSockaddrBth +} + +func (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) { + family := AF_BTH + sa.raw = RawSockaddrBth{ + AddressFamily: *(*[2]byte)(unsafe.Pointer(&family)), + BtAddr: *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)), + Port: *(*[4]byte)(unsafe.Pointer(&sa.Port)), + ServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)), + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n)) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.Addr = pp.Addr + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + sa.Addr = pp.Addr + return sa, nil + } + return nil, syscall.EAFNOSUPPORT +} + +func Socket(domain, typ, proto int) (fd Handle, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return InvalidHandle, syscall.EAFNOSUPPORT + } + return socket(int32(domain), int32(typ), int32(proto)) +} + +func SetsockoptInt(fd Handle, level, opt int, value int) (err error) { + v := int32(value) + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v))) +} + +func Bind(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) { + ptr, _, err := sa.sockaddr() + if err != nil { + return err + } + return getBestInterfaceEx(ptr, pdwBestIfIndex) +} + +func Getsockname(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getsockname(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Getpeername(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getpeername(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Listen(s Handle, n int) (err error) { + return listen(s, int32(n)) +} + +func Shutdown(fd Handle, how int) (err error) { + return shutdown(fd, int32(how)) +} + +func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) { + var rsa unsafe.Pointer + var l int32 + if to != nil { + rsa, l, err = to.sockaddr() + if err != nil { + return err + } + } + return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine) +} + +func LoadGetAddrInfo() error { + return procGetAddrInfoW.Find() +} + +var connectExFunc struct { + once sync.Once + addr uintptr + err error +} + +func LoadConnectEx() error { + connectExFunc.once.Do(func() { + var s Handle + s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) + if connectExFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + connectExFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)), + uint32(unsafe.Sizeof(WSAID_CONNECTEX)), + (*byte)(unsafe.Pointer(&connectExFunc.addr)), + uint32(unsafe.Sizeof(connectExFunc.addr)), + &n, nil, 0) + }) + return connectExFunc.err +} + +func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error { + err := LoadConnectEx() + if err != nil { + return errorspkg.New("failed to find ConnectEx: " + err.Error()) + } + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped) +} + +var sendRecvMsgFunc struct { + once sync.Once + sendAddr uintptr + recvAddr uintptr + err error +} + +func loadWSASendRecvMsg() error { + sendRecvMsgFunc.once.Do(func() { + var s Handle + s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) + if sendRecvMsgFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)), + uint32(unsafe.Sizeof(WSAID_WSARECVMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)), + &n, nil, 0) + if sendRecvMsgFunc.err != nil { + return + } + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)), + uint32(unsafe.Sizeof(WSAID_WSASENDMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)), + &n, nil, 0) + }) + return sendRecvMsgFunc.err +} + +func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return err +} + +func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0) + if r1 == socket_error { + err = errnoErr(e1) + } + return err +} + +// Invented structures to support what package os expects. +type Rusage struct { + CreationTime Filetime + ExitTime Filetime + KernelTime Filetime + UserTime Filetime +} + +type WaitStatus struct { + ExitCode uint32 +} + +func (w WaitStatus) Exited() bool { return true } + +func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) } + +func (w WaitStatus) Signal() Signal { return -1 } + +func (w WaitStatus) CoreDump() bool { return false } + +func (w WaitStatus) Stopped() bool { return false } + +func (w WaitStatus) Continued() bool { return false } + +func (w WaitStatus) StopSignal() Signal { return -1 } + +func (w WaitStatus) Signaled() bool { return false } + +func (w WaitStatus) TrapCause() int { return -1 } + +// Timespec is an invented structure on Windows, but here for +// consistency with the corresponding package for other operating systems. +type Timespec struct { + Sec int64 + Nsec int64 +} + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = nsec / 1e9 + ts.Nsec = nsec % 1e9 + return +} + +// TODO(brainman): fix all needed for net + +func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS } + +func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + n32, err := recvfrom(fd, p, int32(flags), &rsa, &l) + n = int(n32) + if err != nil { + return + } + from, err = rsa.Sockaddr() + return +} + +func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) { + ptr, l, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, int32(flags), ptr, l) +} + +func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS } + +// The Linger struct is wrong but we only noticed after Go 1. +// sysLinger is the real system call structure. + +// BUG(brainman): The definition of Linger is not appropriate for direct use +// with Setsockopt and Getsockopt. +// Use SetsockoptLinger instead. + +type Linger struct { + Onoff int32 + Linger int32 +} + +type sysLinger struct { + Onoff uint16 + Linger uint16 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +func GetsockoptInt(fd Handle, level, opt int) (int, error) { + v := int32(0) + l := int32(unsafe.Sizeof(v)) + err := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l) + return int(v), err +} + +func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { + sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)} + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys))) +} + +func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) +} + +func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) +} + +func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { + return syscall.EWINDOWS +} + +func EnumProcesses(processIds []uint32, bytesReturned *uint32) error { + // EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses + // the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy. + var p *uint32 + if len(processIds) > 0 { + p = &processIds[0] + } + size := uint32(len(processIds) * 4) + return enumProcesses(p, size, bytesReturned) +} + +func Getpid() (pid int) { return int(GetCurrentProcessId()) } + +func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { + // NOTE(rsc): The Win32finddata struct is wrong for the system call: + // the two paths are each one uint16 short. Use the correct struct, + // a win32finddata1, and then copy the results out. + // There is no loss of expressivity here, because the final + // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that. + // For Go 1.1, we might avoid the allocation of win32finddata1 here + // by adding a final Bug [2]uint16 field to the struct and then + // adjusting the fields in the result directly. + var data1 win32finddata1 + handle, err = findFirstFile1(name, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func FindNextFile(handle Handle, data *Win32finddata) (err error) { + var data1 win32finddata1 + err = findNextFile1(handle, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func getProcessEntry(pid int) (*ProcessEntry32, error) { + snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) + if err != nil { + return nil, err + } + defer CloseHandle(snapshot) + var procEntry ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + if err = Process32First(snapshot, &procEntry); err != nil { + return nil, err + } + for { + if procEntry.ProcessID == uint32(pid) { + return &procEntry, nil + } + err = Process32Next(snapshot, &procEntry) + if err != nil { + return nil, err + } + } +} + +func Getppid() (ppid int) { + pe, err := getProcessEntry(Getpid()) + if err != nil { + return -1 + } + return int(pe.ParentProcessID) +} + +// TODO(brainman): fix all needed for os +func Fchdir(fd Handle) (err error) { return syscall.EWINDOWS } +func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS } +func Symlink(path, link string) (err error) { return syscall.EWINDOWS } + +func Fchmod(fd Handle, mode uint32) (err error) { return syscall.EWINDOWS } +func Chown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Fchown(fd Handle, uid int, gid int) (err error) { return syscall.EWINDOWS } + +func Getuid() (uid int) { return -1 } +func Geteuid() (euid int) { return -1 } +func Getgid() (gid int) { return -1 } +func Getegid() (egid int) { return -1 } +func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS } + +func LoadCreateSymbolicLink() error { + return procCreateSymbolicLinkW.Find() +} + +// Readlink returns the destination of the named symbolic link. +func Readlink(path string, buf []byte) (n int, err error) { + fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING, + FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0) + if err != nil { + return -1, err + } + defer CloseHandle(fd) + + rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE) + var bytesReturned uint32 + err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil) + if err != nil { + return -1, err + } + + rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0])) + var s string + switch rdb.ReparseTag { + case IO_REPARSE_TAG_SYMLINK: + data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + case IO_REPARSE_TAG_MOUNT_POINT: + data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + default: + // the path is not a symlink or junction but another type of reparse + // point + return -1, syscall.ENOENT + } + n = copy(buf, []byte(s)) + + return n, nil +} + +// GUIDFromString parses a string in the form of +// "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" into a GUID. +func GUIDFromString(str string) (GUID, error) { + guid := GUID{} + str16, err := syscall.UTF16PtrFromString(str) + if err != nil { + return guid, err + } + err = clsidFromString(str16, &guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// GenerateGUID creates a new random GUID. +func GenerateGUID() (GUID, error) { + guid := GUID{} + err := coCreateGuid(&guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// String returns the canonical string form of the GUID, +// in the form of "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}". +func (guid GUID) String() string { + var str [100]uint16 + chars := stringFromGUID2(&guid, &str[0], int32(len(str))) + if chars <= 1 { + return "" + } + return string(utf16.Decode(str[:chars-1])) +} + +// KnownFolderPath returns a well-known folder path for the current user, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + return Token(0).KnownFolderPath(folderID, flags) +} + +// KnownFolderPath returns a well-known folder path for the user token, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + var p *uint16 + err := shGetKnownFolderPath(folderID, flags, t, &p) + if err != nil { + return "", err + } + defer CoTaskMemFree(unsafe.Pointer(p)) + return UTF16PtrToString(p), nil +} + +// RtlGetVersion returns the version of the underlying operating system, ignoring +// manifest semantics but is affected by the application compatibility layer. +func RtlGetVersion() *OsVersionInfoEx { + info := &OsVersionInfoEx{} + info.osVersionInfoSize = uint32(unsafe.Sizeof(*info)) + // According to documentation, this function always succeeds. + // The function doesn't even check the validity of the + // osVersionInfoSize member. Disassembling ntdll.dll indicates + // that the documentation is indeed correct about that. + _ = rtlGetVersion(info) + return info +} + +// RtlGetNtVersionNumbers returns the version of the underlying operating system, +// ignoring manifest semantics and the application compatibility layer. +func RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) { + rtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber) + buildNumber &= 0xffff + return +} + +// GetProcessPreferredUILanguages retrieves the process preferred UI languages. +func GetProcessPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getProcessPreferredUILanguages) +} + +// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread. +func GetThreadPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getThreadPreferredUILanguages) +} + +// GetUserPreferredUILanguages retrieves information about the user preferred UI languages. +func GetUserPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getUserPreferredUILanguages) +} + +// GetSystemPreferredUILanguages retrieves the system preferred UI languages. +func GetSystemPreferredUILanguages(flags uint32) ([]string, error) { + return getUILanguages(flags, getSystemPreferredUILanguages) +} + +func getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) { + size := uint32(128) + for { + var numLanguages uint32 + buf := make([]uint16, size) + err := f(flags, &numLanguages, &buf[0], &size) + if err == ERROR_INSUFFICIENT_BUFFER { + continue + } + if err != nil { + return nil, err + } + buf = buf[:size] + if numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with "\0\0" + return []string{}, nil + } + if buf[len(buf)-1] == 0 { + buf = buf[:len(buf)-1] // remove terminating null + } + languages := make([]string, 0, numLanguages) + from := 0 + for i, c := range buf { + if c == 0 { + languages = append(languages, string(utf16.Decode(buf[from:i]))) + from = i + 1 + } + } + return languages, nil + } +} + +func SetConsoleCursorPosition(console Handle, position Coord) error { + return setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position)))) +} + +func GetStartupInfo(startupInfo *StartupInfo) error { + getStartupInfo(startupInfo) + return nil +} + +func (s NTStatus) Errno() syscall.Errno { + return rtlNtStatusToDosErrorNoTeb(s) +} + +func langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) } + +func (s NTStatus) Error() string { + b := make([]uint16, 300) + n, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil) + if err != nil { + return fmt.Sprintf("NTSTATUS 0x%08x", uint32(s)) + } + // trim terminating \r and \n + for ; n > 0 && (b[n-1] == '\n' || b[n-1] == '\r'); n-- { + } + return string(utf16.Decode(b[:n])) +} + +// NewNTUnicodeString returns a new NTUnicodeString structure for use with native +// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs +// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for +// the more common *uint16 string type. +func NewNTUnicodeString(s string) (*NTUnicodeString, error) { + s16, err := UTF16FromString(s) + if err != nil { + return nil, err + } + n := uint16(len(s16) * 2) + return &NTUnicodeString{ + Length: n - 2, // subtract 2 bytes for the NULL terminator + MaximumLength: n, + Buffer: &s16[0], + }, nil +} + +// Slice returns a uint16 slice that aliases the data in the NTUnicodeString. +func (s *NTUnicodeString) Slice() []uint16 { + // Note: this rounds the length down, if it happens + // to (incorrectly) be odd. Probably safer than rounding up. + return unsafe.Slice(s.Buffer, s.MaximumLength/2)[:s.Length/2] +} + +func (s *NTUnicodeString) String() string { + return UTF16ToString(s.Slice()) +} + +// NewNTString returns a new NTString structure for use with native +// NT APIs that work over the NTString type. Note that most Windows APIs +// do not use NTString, and instead UTF16PtrFromString should be used for +// the more common *uint16 string type. +func NewNTString(s string) (*NTString, error) { + var nts NTString + s8, err := BytePtrFromString(s) + if err != nil { + return nil, err + } + RtlInitString(&nts, s8) + return &nts, nil +} + +// Slice returns a byte slice that aliases the data in the NTString. +func (s *NTString) Slice() []byte { + slice := unsafe.Slice(s.Buffer, s.MaximumLength) + return slice[:s.Length] +} + +func (s *NTString) String() string { + return ByteSliceToString(s.Slice()) +} + +// FindResource resolves a resource of the given name and resource type. +func FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) { + var namePtr, resTypePtr uintptr + var name16, resType16 *uint16 + var err error + resolvePtr := func(i interface{}, keep **uint16) (uintptr, error) { + switch v := i.(type) { + case string: + *keep, err = UTF16PtrFromString(v) + if err != nil { + return 0, err + } + return uintptr(unsafe.Pointer(*keep)), nil + case ResourceID: + return uintptr(v), nil + } + return 0, errorspkg.New("parameter must be a ResourceID or a string") + } + namePtr, err = resolvePtr(name, &name16) + if err != nil { + return 0, err + } + resTypePtr, err = resolvePtr(resType, &resType16) + if err != nil { + return 0, err + } + resInfo, err := findResource(module, namePtr, resTypePtr) + runtime.KeepAlive(name16) + runtime.KeepAlive(resType16) + return resInfo, err +} + +func LoadResourceData(module, resInfo Handle) (data []byte, err error) { + size, err := SizeofResource(module, resInfo) + if err != nil { + return + } + resData, err := LoadResource(module, resInfo) + if err != nil { + return + } + ptr, err := LockResource(resData) + if err != nil { + return + } + data = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size) + return +} + +// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page. +type PSAPI_WORKING_SET_EX_BLOCK uint64 + +// Valid returns the validity of this page. +// If this bit is 1, the subsequent members are valid; otherwise they should be ignored. +func (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool { + return (b & 1) == 1 +} + +// ShareCount is the number of processes that share this page. The maximum value of this member is 7. +func (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 { + return b.intField(1, 3) +} + +// Win32Protection is the memory protection attributes of the page. For a list of values, see +// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants +func (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 { + return b.intField(4, 11) +} + +// Shared returns the shared status of this page. +// If this bit is 1, the page can be shared. +func (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool { + return (b & (1 << 15)) == 1 +} + +// Node is the NUMA node. The maximum value of this member is 63. +func (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 { + return b.intField(16, 6) +} + +// Locked returns the locked status of this page. +// If this bit is 1, the virtual page is locked in physical memory. +func (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool { + return (b & (1 << 22)) == 1 +} + +// LargePage returns the large page status of this page. +// If this bit is 1, the page is a large page. +func (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool { + return (b & (1 << 23)) == 1 +} + +// Bad returns the bad status of this page. +// If this bit is 1, the page is has been reported as bad. +func (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool { + return (b & (1 << 31)) == 1 +} + +// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union. +func (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 { + var mask PSAPI_WORKING_SET_EX_BLOCK + for pos := start; pos < start+length; pos++ { + mask |= (1 << pos) + } + + masked := b & mask + return uint64(masked >> start) +} + +// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process. +type PSAPI_WORKING_SET_EX_INFORMATION struct { + // The virtual address. + VirtualAddress Pointer + // A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress. + VirtualAttributes PSAPI_WORKING_SET_EX_BLOCK +} + +// CreatePseudoConsole creates a windows pseudo console. +func CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error { + // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only + // accept arguments that can be casted to uintptr, and Coord can't. + return createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole) +} + +// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`. +func ResizePseudoConsole(pconsole Handle, size Coord) error { + // We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only + // accept arguments that can be casted to uintptr, and Coord can't. + return resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size)))) +} + +// DCB constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/ns-winbase-dcb. +const ( + CBR_110 = 110 + CBR_300 = 300 + CBR_600 = 600 + CBR_1200 = 1200 + CBR_2400 = 2400 + CBR_4800 = 4800 + CBR_9600 = 9600 + CBR_14400 = 14400 + CBR_19200 = 19200 + CBR_38400 = 38400 + CBR_57600 = 57600 + CBR_115200 = 115200 + CBR_128000 = 128000 + CBR_256000 = 256000 + + DTR_CONTROL_DISABLE = 0x00000000 + DTR_CONTROL_ENABLE = 0x00000010 + DTR_CONTROL_HANDSHAKE = 0x00000020 + + RTS_CONTROL_DISABLE = 0x00000000 + RTS_CONTROL_ENABLE = 0x00001000 + RTS_CONTROL_HANDSHAKE = 0x00002000 + RTS_CONTROL_TOGGLE = 0x00003000 + + NOPARITY = 0 + ODDPARITY = 1 + EVENPARITY = 2 + MARKPARITY = 3 + SPACEPARITY = 4 + + ONESTOPBIT = 0 + ONE5STOPBITS = 1 + TWOSTOPBITS = 2 +) + +// EscapeCommFunction constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-escapecommfunction. +const ( + SETXOFF = 1 + SETXON = 2 + SETRTS = 3 + CLRRTS = 4 + SETDTR = 5 + CLRDTR = 6 + SETBREAK = 8 + CLRBREAK = 9 +) + +// PurgeComm constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-purgecomm. +const ( + PURGE_TXABORT = 0x0001 + PURGE_RXABORT = 0x0002 + PURGE_TXCLEAR = 0x0004 + PURGE_RXCLEAR = 0x0008 +) + +// SetCommMask constants. See https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setcommmask. +const ( + EV_RXCHAR = 0x0001 + EV_RXFLAG = 0x0002 + EV_TXEMPTY = 0x0004 + EV_CTS = 0x0008 + EV_DSR = 0x0010 + EV_RLSD = 0x0020 + EV_BREAK = 0x0040 + EV_ERR = 0x0080 + EV_RING = 0x0100 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows.go new file mode 100644 index 0000000..d5658a1 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows.go @@ -0,0 +1,4025 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "net" + "syscall" + "unsafe" +) + +// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and +// other native functions. +type NTStatus uint32 + +const ( + // Invented values to support what package os expects. + O_RDONLY = 0x00000 + O_WRONLY = 0x00001 + O_RDWR = 0x00002 + O_CREAT = 0x00040 + O_EXCL = 0x00080 + O_NOCTTY = 0x00100 + O_TRUNC = 0x00200 + O_NONBLOCK = 0x00800 + O_APPEND = 0x00400 + O_SYNC = 0x01000 + O_ASYNC = 0x02000 + O_CLOEXEC = 0x80000 +) + +const ( + // More invented values for signals + SIGHUP = Signal(0x1) + SIGINT = Signal(0x2) + SIGQUIT = Signal(0x3) + SIGILL = Signal(0x4) + SIGTRAP = Signal(0x5) + SIGABRT = Signal(0x6) + SIGBUS = Signal(0x7) + SIGFPE = Signal(0x8) + SIGKILL = Signal(0x9) + SIGSEGV = Signal(0xb) + SIGPIPE = Signal(0xd) + SIGALRM = Signal(0xe) + SIGTERM = Signal(0xf) +) + +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "bus error", + 8: "floating point exception", + 9: "killed", + 10: "user defined signal 1", + 11: "segmentation fault", + 12: "user defined signal 2", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", +} + +// File flags for [os.OpenFile]. The O_ prefix is used to indicate +// that these flags are specific to the OpenFile function. +const ( + O_FILE_FLAG_OPEN_NO_RECALL = FILE_FLAG_OPEN_NO_RECALL + O_FILE_FLAG_OPEN_REPARSE_POINT = FILE_FLAG_OPEN_REPARSE_POINT + O_FILE_FLAG_SESSION_AWARE = FILE_FLAG_SESSION_AWARE + O_FILE_FLAG_POSIX_SEMANTICS = FILE_FLAG_POSIX_SEMANTICS + O_FILE_FLAG_BACKUP_SEMANTICS = FILE_FLAG_BACKUP_SEMANTICS + O_FILE_FLAG_DELETE_ON_CLOSE = FILE_FLAG_DELETE_ON_CLOSE + O_FILE_FLAG_SEQUENTIAL_SCAN = FILE_FLAG_SEQUENTIAL_SCAN + O_FILE_FLAG_RANDOM_ACCESS = FILE_FLAG_RANDOM_ACCESS + O_FILE_FLAG_NO_BUFFERING = FILE_FLAG_NO_BUFFERING + O_FILE_FLAG_OVERLAPPED = FILE_FLAG_OVERLAPPED + O_FILE_FLAG_WRITE_THROUGH = FILE_FLAG_WRITE_THROUGH +) + +const ( + FILE_READ_DATA = 0x00000001 + FILE_READ_ATTRIBUTES = 0x00000080 + FILE_READ_EA = 0x00000008 + FILE_WRITE_DATA = 0x00000002 + FILE_WRITE_ATTRIBUTES = 0x00000100 + FILE_WRITE_EA = 0x00000010 + FILE_APPEND_DATA = 0x00000004 + FILE_EXECUTE = 0x00000020 + + FILE_GENERIC_READ = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE + FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE + FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_TRAVERSE = 0x00000020 + + FILE_SHARE_READ = 0x00000001 + FILE_SHARE_WRITE = 0x00000002 + FILE_SHARE_DELETE = 0x00000004 + + FILE_ATTRIBUTE_READONLY = 0x00000001 + FILE_ATTRIBUTE_HIDDEN = 0x00000002 + FILE_ATTRIBUTE_SYSTEM = 0x00000004 + FILE_ATTRIBUTE_DIRECTORY = 0x00000010 + FILE_ATTRIBUTE_ARCHIVE = 0x00000020 + FILE_ATTRIBUTE_DEVICE = 0x00000040 + FILE_ATTRIBUTE_NORMAL = 0x00000080 + FILE_ATTRIBUTE_TEMPORARY = 0x00000100 + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 + FILE_ATTRIBUTE_COMPRESSED = 0x00000800 + FILE_ATTRIBUTE_OFFLINE = 0x00001000 + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 + FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 + FILE_ATTRIBUTE_VIRTUAL = 0x00010000 + FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 + FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 + FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 + + INVALID_FILE_ATTRIBUTES = 0xffffffff + + CREATE_NEW = 1 + CREATE_ALWAYS = 2 + OPEN_EXISTING = 3 + OPEN_ALWAYS = 4 + TRUNCATE_EXISTING = 5 + + FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 + FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 + FILE_FLAG_OPEN_NO_RECALL = 0x00100000 + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 + FILE_FLAG_SESSION_AWARE = 0x00800000 + FILE_FLAG_POSIX_SEMANTICS = 0x01000000 + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 + FILE_FLAG_RANDOM_ACCESS = 0x10000000 + FILE_FLAG_NO_BUFFERING = 0x20000000 + FILE_FLAG_OVERLAPPED = 0x40000000 + FILE_FLAG_WRITE_THROUGH = 0x80000000 + + HANDLE_FLAG_INHERIT = 0x00000001 + STARTF_USESTDHANDLES = 0x00000100 + STARTF_USESHOWWINDOW = 0x00000001 + DUPLICATE_CLOSE_SOURCE = 0x00000001 + DUPLICATE_SAME_ACCESS = 0x00000002 + + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) + + FILE_BEGIN = 0 + FILE_CURRENT = 1 + FILE_END = 2 + + LANG_ENGLISH = 0x09 + SUBLANG_ENGLISH_US = 0x01 + + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 + FORMAT_MESSAGE_IGNORE_INSERTS = 512 + FORMAT_MESSAGE_FROM_STRING = 1024 + FORMAT_MESSAGE_FROM_HMODULE = 2048 + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 + FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 + + MAX_PATH = 260 + MAX_LONG_PATH = 32768 + + MAX_MODULE_NAME32 = 255 + + MAX_COMPUTERNAME_LENGTH = 15 + + MAX_DHCPV6_DUID_LENGTH = 130 + + MAX_DNS_SUFFIX_STRING_LENGTH = 256 + + TIME_ZONE_ID_UNKNOWN = 0 + TIME_ZONE_ID_STANDARD = 1 + + TIME_ZONE_ID_DAYLIGHT = 2 + IGNORE = 0 + INFINITE = 0xffffffff + + WAIT_ABANDONED = 0x00000080 + WAIT_OBJECT_0 = 0x00000000 + WAIT_FAILED = 0xFFFFFFFF + + // Access rights for process. + PROCESS_ALL_ACCESS = 0xFFFF + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 + PROCESS_QUERY_INFORMATION = 0x0400 + PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 + PROCESS_SET_INFORMATION = 0x0200 + PROCESS_SET_QUOTA = 0x0100 + PROCESS_SUSPEND_RESUME = 0x0800 + PROCESS_TERMINATE = 0x0001 + PROCESS_VM_OPERATION = 0x0008 + PROCESS_VM_READ = 0x0010 + PROCESS_VM_WRITE = 0x0020 + + // Access rights for thread. + THREAD_DIRECT_IMPERSONATION = 0x0200 + THREAD_GET_CONTEXT = 0x0008 + THREAD_IMPERSONATE = 0x0100 + THREAD_QUERY_INFORMATION = 0x0040 + THREAD_QUERY_LIMITED_INFORMATION = 0x0800 + THREAD_SET_CONTEXT = 0x0010 + THREAD_SET_INFORMATION = 0x0020 + THREAD_SET_LIMITED_INFORMATION = 0x0400 + THREAD_SET_THREAD_TOKEN = 0x0080 + THREAD_SUSPEND_RESUME = 0x0002 + THREAD_TERMINATE = 0x0001 + + FILE_MAP_COPY = 0x01 + FILE_MAP_WRITE = 0x02 + FILE_MAP_READ = 0x04 + FILE_MAP_EXECUTE = 0x20 + + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + CTRL_CLOSE_EVENT = 2 + CTRL_LOGOFF_EVENT = 5 + CTRL_SHUTDOWN_EVENT = 6 + + // Windows reserves errors >= 1<<29 for application use. + APPLICATION_ERROR = 1 << 29 +) + +const ( + // Process creation flags. + CREATE_BREAKAWAY_FROM_JOB = 0x01000000 + CREATE_DEFAULT_ERROR_MODE = 0x04000000 + CREATE_NEW_CONSOLE = 0x00000010 + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_NO_WINDOW = 0x08000000 + CREATE_PROTECTED_PROCESS = 0x00040000 + CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 + CREATE_SEPARATE_WOW_VDM = 0x00000800 + CREATE_SHARED_WOW_VDM = 0x00001000 + CREATE_SUSPENDED = 0x00000004 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + DEBUG_ONLY_THIS_PROCESS = 0x00000002 + DEBUG_PROCESS = 0x00000001 + DETACHED_PROCESS = 0x00000008 + EXTENDED_STARTUPINFO_PRESENT = 0x00080000 + INHERIT_PARENT_AFFINITY = 0x00010000 +) + +const ( + // attributes for ProcThreadAttributeList + PROC_THREAD_ATTRIBUTE_PARENT_PROCESS = 0x00020000 + PROC_THREAD_ATTRIBUTE_HANDLE_LIST = 0x00020002 + PROC_THREAD_ATTRIBUTE_GROUP_AFFINITY = 0x00030003 + PROC_THREAD_ATTRIBUTE_PREFERRED_NODE = 0x00020004 + PROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR = 0x00030005 + PROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007 + PROC_THREAD_ATTRIBUTE_UMS_THREAD = 0x00030006 + PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL = 0x0002000b + PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x00020016 +) + +const ( + // flags for CreateToolhelp32Snapshot + TH32CS_SNAPHEAPLIST = 0x01 + TH32CS_SNAPPROCESS = 0x02 + TH32CS_SNAPTHREAD = 0x04 + TH32CS_SNAPMODULE = 0x08 + TH32CS_SNAPMODULE32 = 0x10 + TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD + TH32CS_INHERIT = 0x80000000 +) + +const ( + // flags for EnumProcessModulesEx + LIST_MODULES_32BIT = 0x01 + LIST_MODULES_64BIT = 0x02 + LIST_MODULES_ALL = 0x03 + LIST_MODULES_DEFAULT = 0x00 +) + +const ( + // filters for ReadDirectoryChangesW and FindFirstChangeNotificationW + FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 + FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 + FILE_NOTIFY_CHANGE_SIZE = 0x008 + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 + FILE_NOTIFY_CHANGE_CREATION = 0x040 + FILE_NOTIFY_CHANGE_SECURITY = 0x100 +) + +const ( + // do not reorder + FILE_ACTION_ADDED = iota + 1 + FILE_ACTION_REMOVED + FILE_ACTION_MODIFIED + FILE_ACTION_RENAMED_OLD_NAME + FILE_ACTION_RENAMED_NEW_NAME +) + +const ( + // wincrypt.h + /* certenrolld_begin -- PROV_RSA_*/ + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + + /* dwFlags definitions for CryptAcquireContext */ + CRYPT_VERIFYCONTEXT = 0xF0000000 + CRYPT_NEWKEYSET = 0x00000008 + CRYPT_DELETEKEYSET = 0x00000010 + CRYPT_MACHINE_KEYSET = 0x00000020 + CRYPT_SILENT = 0x00000040 + CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + /* Flags for PFXImportCertStore */ + CRYPT_EXPORTABLE = 0x00000001 + CRYPT_USER_PROTECTED = 0x00000002 + CRYPT_USER_KEYSET = 0x00001000 + PKCS12_PREFER_CNG_KSP = 0x00000100 + PKCS12_ALWAYS_CNG_KSP = 0x00000200 + PKCS12_ALLOW_OVERWRITE_KEY = 0x00004000 + PKCS12_NO_PERSIST_KEY = 0x00008000 + PKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010 + + /* Flags for CryptAcquireCertificatePrivateKey */ + CRYPT_ACQUIRE_CACHE_FLAG = 0x00000001 + CRYPT_ACQUIRE_USE_PROV_INFO_FLAG = 0x00000002 + CRYPT_ACQUIRE_COMPARE_KEY_FLAG = 0x00000004 + CRYPT_ACQUIRE_NO_HEALING = 0x00000008 + CRYPT_ACQUIRE_SILENT_FLAG = 0x00000040 + CRYPT_ACQUIRE_WINDOW_HANDLE_FLAG = 0x00000080 + CRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK = 0x00070000 + CRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG = 0x00010000 + CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000 + CRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG = 0x00040000 + + /* pdwKeySpec for CryptAcquireCertificatePrivateKey */ + AT_KEYEXCHANGE = 1 + AT_SIGNATURE = 2 + CERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF + + /* Default usage match type is AND with value zero */ + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + /* msgAndCertEncodingType values for CertOpenStore function */ + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + /* storeProvider values for CertOpenStore function */ + CERT_STORE_PROV_MSG = 1 + CERT_STORE_PROV_MEMORY = 2 + CERT_STORE_PROV_FILE = 3 + CERT_STORE_PROV_REG = 4 + CERT_STORE_PROV_PKCS7 = 5 + CERT_STORE_PROV_SERIALIZED = 6 + CERT_STORE_PROV_FILENAME_A = 7 + CERT_STORE_PROV_FILENAME_W = 8 + CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W + CERT_STORE_PROV_SYSTEM_A = 9 + CERT_STORE_PROV_SYSTEM_W = 10 + CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W + CERT_STORE_PROV_COLLECTION = 11 + CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 + CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 + CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W + CERT_STORE_PROV_PHYSICAL_W = 14 + CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W + CERT_STORE_PROV_SMART_CARD_W = 15 + CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W + CERT_STORE_PROV_LDAP_W = 16 + CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W + CERT_STORE_PROV_PKCS12 = 17 + + /* store characteristics (low WORD of flag) for CertOpenStore function */ + CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 + CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + CERT_STORE_DELETE_FLAG = 0x00000010 + CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 + CERT_STORE_SHARE_STORE_FLAG = 0x00000040 + CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 + CERT_STORE_MANIFOLD_FLAG = 0x00000100 + CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 + CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 + CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 + CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 + CERT_STORE_CREATE_NEW_FLAG = 0x00002000 + CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 + CERT_STORE_READONLY_FLAG = 0x00008000 + + /* store locations (high WORD of flag) for CertOpenStore function */ + CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 + CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 + CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 + CERT_SYSTEM_STORE_SERVICES = 0x00050000 + CERT_SYSTEM_STORE_USERS = 0x00060000 + CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 + CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 + CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 + + /* Miscellaneous high-WORD flags for CertOpenStore function */ + CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 + CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 + CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 + CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 + CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 + CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 + CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 + CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 + CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 + CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 + CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 + + /* addDisposition values for CertAddCertificateContextToStore function */ + CERT_STORE_ADD_NEW = 1 + CERT_STORE_ADD_USE_EXISTING = 2 + CERT_STORE_ADD_REPLACE_EXISTING = 3 + CERT_STORE_ADD_ALWAYS = 4 + CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 + CERT_STORE_ADD_NEWER = 6 + CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 + + /* ErrorStatus values for CertTrustStatus struct */ + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 + CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + /* InfoStatus values for CertTrustStatus struct */ + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 + CERT_TRUST_IS_SELF_SIGNED = 0x00000008 + CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 + CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 + CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 + CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 + CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 + CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 + CERT_TRUST_IS_CA_TRUSTED = 0x00004000 + CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + + /* Certificate Information Flags */ + CERT_INFO_VERSION_FLAG = 1 + CERT_INFO_SERIAL_NUMBER_FLAG = 2 + CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3 + CERT_INFO_ISSUER_FLAG = 4 + CERT_INFO_NOT_BEFORE_FLAG = 5 + CERT_INFO_NOT_AFTER_FLAG = 6 + CERT_INFO_SUBJECT_FLAG = 7 + CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8 + CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9 + CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10 + CERT_INFO_EXTENSION_FLAG = 11 + + /* dwFindType for CertFindCertificateInStore */ + CERT_COMPARE_MASK = 0xFFFF + CERT_COMPARE_SHIFT = 16 + CERT_COMPARE_ANY = 0 + CERT_COMPARE_SHA1_HASH = 1 + CERT_COMPARE_NAME = 2 + CERT_COMPARE_ATTR = 3 + CERT_COMPARE_MD5_HASH = 4 + CERT_COMPARE_PROPERTY = 5 + CERT_COMPARE_PUBLIC_KEY = 6 + CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH + CERT_COMPARE_NAME_STR_A = 7 + CERT_COMPARE_NAME_STR_W = 8 + CERT_COMPARE_KEY_SPEC = 9 + CERT_COMPARE_ENHKEY_USAGE = 10 + CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE + CERT_COMPARE_SUBJECT_CERT = 11 + CERT_COMPARE_ISSUER_OF = 12 + CERT_COMPARE_EXISTING = 13 + CERT_COMPARE_SIGNATURE_HASH = 14 + CERT_COMPARE_KEY_IDENTIFIER = 15 + CERT_COMPARE_CERT_ID = 16 + CERT_COMPARE_CROSS_CERT_DIST_POINTS = 17 + CERT_COMPARE_PUBKEY_MD5_HASH = 18 + CERT_COMPARE_SUBJECT_INFO_ACCESS = 19 + CERT_COMPARE_HASH_STR = 20 + CERT_COMPARE_HAS_PRIVATE_KEY = 21 + CERT_FIND_ANY = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT) + CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_SIGNATURE_HASH = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT) + CERT_FIND_KEY_IDENTIFIER = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT) + CERT_FIND_HASH = CERT_FIND_SHA1_HASH + CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT) + CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT) + CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME<> 32 & 0xffffffff) + return ft +} + +type Win32finddata struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH - 1]uint16 + AlternateFileName [13]uint16 +} + +// This is the actual system call structure. +// Win32finddata is what we committed to in Go 1. +type win32finddata1 struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH]uint16 + AlternateFileName [14]uint16 + + // The Microsoft documentation for this struct¹ describes three additional + // fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields + // are empirically only present in the macOS port of the Win32 API,² and thus + // not needed for binaries built for Windows. + // + // ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe + // ² https://golang.org/issue/42637#issuecomment-760715755. +} + +func copyFindData(dst *Win32finddata, src *win32finddata1) { + dst.FileAttributes = src.FileAttributes + dst.CreationTime = src.CreationTime + dst.LastAccessTime = src.LastAccessTime + dst.LastWriteTime = src.LastWriteTime + dst.FileSizeHigh = src.FileSizeHigh + dst.FileSizeLow = src.FileSizeLow + dst.Reserved0 = src.Reserved0 + dst.Reserved1 = src.Reserved1 + + // The src is 1 element bigger than dst, but it must be NUL. + copy(dst.FileName[:], src.FileName[:]) + copy(dst.AlternateFileName[:], src.AlternateFileName[:]) +} + +type ByHandleFileInformation struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + VolumeSerialNumber uint32 + FileSizeHigh uint32 + FileSizeLow uint32 + NumberOfLinks uint32 + FileIndexHigh uint32 + FileIndexLow uint32 +} + +const ( + GetFileExInfoStandard = 0 + GetFileExMaxInfoLevel = 1 +) + +type Win32FileAttributeData struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 +} + +// ShowWindow constants +const ( + // winuser.h + SW_HIDE = 0 + SW_NORMAL = 1 + SW_SHOWNORMAL = 1 + SW_SHOWMINIMIZED = 2 + SW_SHOWMAXIMIZED = 3 + SW_MAXIMIZE = 3 + SW_SHOWNOACTIVATE = 4 + SW_SHOW = 5 + SW_MINIMIZE = 6 + SW_SHOWMINNOACTIVE = 7 + SW_SHOWNA = 8 + SW_RESTORE = 9 + SW_SHOWDEFAULT = 10 + SW_FORCEMINIMIZE = 11 +) + +type StartupInfo struct { + Cb uint32 + _ *uint16 + Desktop *uint16 + Title *uint16 + X uint32 + Y uint32 + XSize uint32 + YSize uint32 + XCountChars uint32 + YCountChars uint32 + FillAttribute uint32 + Flags uint32 + ShowWindow uint16 + _ uint16 + _ *byte + StdInput Handle + StdOutput Handle + StdErr Handle +} + +type StartupInfoEx struct { + StartupInfo + ProcThreadAttributeList *ProcThreadAttributeList +} + +// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST. +// +// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update +// it with ProcThreadAttributeListContainer.Update, free its memory using +// ProcThreadAttributeListContainer.Delete, and access the list itself using +// ProcThreadAttributeListContainer.List. +type ProcThreadAttributeList struct{} + +type ProcThreadAttributeListContainer struct { + data *ProcThreadAttributeList + pointers []unsafe.Pointer +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type ProcessEntry32 struct { + Size uint32 + Usage uint32 + ProcessID uint32 + DefaultHeapID uintptr + ModuleID uint32 + Threads uint32 + ParentProcessID uint32 + PriClassBase int32 + Flags uint32 + ExeFile [MAX_PATH]uint16 +} + +type ThreadEntry32 struct { + Size uint32 + Usage uint32 + ThreadID uint32 + OwnerProcessID uint32 + BasePri int32 + DeltaPri int32 + Flags uint32 +} + +type ModuleEntry32 struct { + Size uint32 + ModuleID uint32 + ProcessID uint32 + GlblcntUsage uint32 + ProccntUsage uint32 + ModBaseAddr uintptr + ModBaseSize uint32 + ModuleHandle Handle + Module [MAX_MODULE_NAME32 + 1]uint16 + ExePath [MAX_PATH]uint16 +} + +const SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{}) + +type Systemtime struct { + Year uint16 + Month uint16 + DayOfWeek uint16 + Day uint16 + Hour uint16 + Minute uint16 + Second uint16 + Milliseconds uint16 +} + +type Timezoneinformation struct { + Bias int32 + StandardName [32]uint16 + StandardDate Systemtime + StandardBias int32 + DaylightName [32]uint16 + DaylightDate Systemtime + DaylightBias int32 +} + +// Socket related. + +const ( + AF_UNSPEC = 0 + AF_UNIX = 1 + AF_INET = 2 + AF_NETBIOS = 17 + AF_INET6 = 23 + AF_IRDA = 26 + AF_BTH = 32 + + SOCK_STREAM = 1 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_RDM = 4 + SOCK_SEQPACKET = 5 + + IPPROTO_IP = 0 + IPPROTO_ICMP = 1 + IPPROTO_IGMP = 2 + BTHPROTO_RFCOMM = 3 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + IPPROTO_IPV6 = 41 + IPPROTO_ICMPV6 = 58 + IPPROTO_RM = 113 + + SOL_SOCKET = 0xffff + SO_REUSEADDR = 4 + SO_KEEPALIVE = 8 + SO_DONTROUTE = 16 + SO_BROADCAST = 32 + SO_LINGER = 128 + SO_RCVBUF = 0x1002 + SO_RCVTIMEO = 0x1006 + SO_SNDBUF = 0x1001 + SO_UPDATE_ACCEPT_CONTEXT = 0x700b + SO_UPDATE_CONNECT_CONTEXT = 0x7010 + + IOC_OUT = 0x40000000 + IOC_IN = 0x80000000 + IOC_VENDOR = 0x18000000 + IOC_INOUT = IOC_IN | IOC_OUT + IOC_WS2 = 0x08000000 + SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 + SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 + SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + SIO_UDP_NETRESET = IOC_IN | IOC_VENDOR | 15 + + // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 + + IP_HDRINCL = 0x2 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_LOOP = 0xb + IP_ADD_MEMBERSHIP = 0xc + IP_DROP_MEMBERSHIP = 0xd + IP_PKTINFO = 0x13 + IP_MTU_DISCOVER = 0x47 + + IPV6_V6ONLY = 0x1b + IPV6_UNICAST_HOPS = 0x4 + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_LOOP = 0xb + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_PKTINFO = 0x13 + IPV6_MTU_DISCOVER = 0x47 + + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_DONTROUTE = 0x4 + MSG_WAITALL = 0x8 + + MSG_TRUNC = 0x0100 + MSG_CTRUNC = 0x0200 + MSG_BCAST = 0x0400 + MSG_MCAST = 0x0800 + + SOMAXCONN = 0x7fffffff + + TCP_NODELAY = 1 + TCP_EXPEDITED_1122 = 2 + TCP_KEEPALIVE = 3 + TCP_MAXSEG = 4 + TCP_MAXRT = 5 + TCP_STDURG = 6 + TCP_NOURG = 7 + TCP_ATMARK = 8 + TCP_NOSYNRETRIES = 9 + TCP_TIMESTAMPS = 10 + TCP_OFFLOAD_PREFERENCE = 11 + TCP_CONGESTION_ALGORITHM = 12 + TCP_DELAY_FIN_ACK = 13 + TCP_MAXRTMS = 14 + TCP_FASTOPEN = 15 + TCP_KEEPCNT = 16 + TCP_KEEPIDLE = TCP_KEEPALIVE + TCP_KEEPINTVL = 17 + TCP_FAIL_CONNECT_ON_ICMP_ERROR = 18 + TCP_ICMP_ERROR_INFO = 19 + + UDP_NOCHECKSUM = 1 + UDP_SEND_MSG_SIZE = 2 + UDP_RECV_MAX_COALESCED_SIZE = 3 + UDP_CHECKSUM_COVERAGE = 20 + + UDP_COALESCED_INFO = 3 + + SHUT_RD = 0 + SHUT_WR = 1 + SHUT_RDWR = 2 + + WSADESCRIPTION_LEN = 256 + WSASYS_STATUS_LEN = 128 +) + +// enum PMTUD_STATE from ws2ipdef.h +const ( + IP_PMTUDISC_NOT_SET = 0 + IP_PMTUDISC_DO = 1 + IP_PMTUDISC_DONT = 2 + IP_PMTUDISC_PROBE = 3 + IP_PMTUDISC_MAX = 4 +) + +type WSABuf struct { + Len uint32 + Buf *byte +} + +type WSAMsg struct { + Name *syscall.RawSockaddrAny + Namelen int32 + Buffers *WSABuf + BufferCount uint32 + Control WSABuf + Flags uint32 +} + +type WSACMSGHDR struct { + Len uintptr + Level int32 + Type int32 +} + +type IN_PKTINFO struct { + Addr [4]byte + Ifindex uint32 +} + +type IN6_PKTINFO struct { + Addr [16]byte + Ifindex uint32 +} + +// Flags for WSASocket +const ( + WSA_FLAG_OVERLAPPED = 0x01 + WSA_FLAG_MULTIPOINT_C_ROOT = 0x02 + WSA_FLAG_MULTIPOINT_C_LEAF = 0x04 + WSA_FLAG_MULTIPOINT_D_ROOT = 0x08 + WSA_FLAG_MULTIPOINT_D_LEAF = 0x10 + WSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40 + WSA_FLAG_NO_HANDLE_INHERIT = 0x80 + WSA_FLAG_REGISTERED_IO = 0x100 +) + +// Invented values to support what package os expects. +const ( + S_IFMT = 0x1f000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +const ( + FILE_TYPE_CHAR = 0x0002 + FILE_TYPE_DISK = 0x0001 + FILE_TYPE_PIPE = 0x0003 + FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0x0000 +) + +type Hostent struct { + Name *byte + Aliases **byte + AddrType uint16 + Length uint16 + AddrList **byte +} + +type Protoent struct { + Name *byte + Aliases **byte + Proto uint16 +} + +const ( + DNS_TYPE_A = 0x0001 + DNS_TYPE_NS = 0x0002 + DNS_TYPE_MD = 0x0003 + DNS_TYPE_MF = 0x0004 + DNS_TYPE_CNAME = 0x0005 + DNS_TYPE_SOA = 0x0006 + DNS_TYPE_MB = 0x0007 + DNS_TYPE_MG = 0x0008 + DNS_TYPE_MR = 0x0009 + DNS_TYPE_NULL = 0x000a + DNS_TYPE_WKS = 0x000b + DNS_TYPE_PTR = 0x000c + DNS_TYPE_HINFO = 0x000d + DNS_TYPE_MINFO = 0x000e + DNS_TYPE_MX = 0x000f + DNS_TYPE_TEXT = 0x0010 + DNS_TYPE_RP = 0x0011 + DNS_TYPE_AFSDB = 0x0012 + DNS_TYPE_X25 = 0x0013 + DNS_TYPE_ISDN = 0x0014 + DNS_TYPE_RT = 0x0015 + DNS_TYPE_NSAP = 0x0016 + DNS_TYPE_NSAPPTR = 0x0017 + DNS_TYPE_SIG = 0x0018 + DNS_TYPE_KEY = 0x0019 + DNS_TYPE_PX = 0x001a + DNS_TYPE_GPOS = 0x001b + DNS_TYPE_AAAA = 0x001c + DNS_TYPE_LOC = 0x001d + DNS_TYPE_NXT = 0x001e + DNS_TYPE_EID = 0x001f + DNS_TYPE_NIMLOC = 0x0020 + DNS_TYPE_SRV = 0x0021 + DNS_TYPE_ATMA = 0x0022 + DNS_TYPE_NAPTR = 0x0023 + DNS_TYPE_KX = 0x0024 + DNS_TYPE_CERT = 0x0025 + DNS_TYPE_A6 = 0x0026 + DNS_TYPE_DNAME = 0x0027 + DNS_TYPE_SINK = 0x0028 + DNS_TYPE_OPT = 0x0029 + DNS_TYPE_DS = 0x002B + DNS_TYPE_RRSIG = 0x002E + DNS_TYPE_NSEC = 0x002F + DNS_TYPE_DNSKEY = 0x0030 + DNS_TYPE_DHCID = 0x0031 + DNS_TYPE_UINFO = 0x0064 + DNS_TYPE_UID = 0x0065 + DNS_TYPE_GID = 0x0066 + DNS_TYPE_UNSPEC = 0x0067 + DNS_TYPE_ADDRS = 0x00f8 + DNS_TYPE_TKEY = 0x00f9 + DNS_TYPE_TSIG = 0x00fa + DNS_TYPE_IXFR = 0x00fb + DNS_TYPE_AXFR = 0x00fc + DNS_TYPE_MAILB = 0x00fd + DNS_TYPE_MAILA = 0x00fe + DNS_TYPE_ALL = 0x00ff + DNS_TYPE_ANY = 0x00ff + DNS_TYPE_WINS = 0xff01 + DNS_TYPE_WINSR = 0xff02 + DNS_TYPE_NBSTAT = 0xff01 +) + +const ( + // flags inside DNSRecord.Dw + DnsSectionQuestion = 0x0000 + DnsSectionAnswer = 0x0001 + DnsSectionAuthority = 0x0002 + DnsSectionAdditional = 0x0003 +) + +const ( + // flags of WSALookupService + LUP_DEEP = 0x0001 + LUP_CONTAINERS = 0x0002 + LUP_NOCONTAINERS = 0x0004 + LUP_NEAREST = 0x0008 + LUP_RETURN_NAME = 0x0010 + LUP_RETURN_TYPE = 0x0020 + LUP_RETURN_VERSION = 0x0040 + LUP_RETURN_COMMENT = 0x0080 + LUP_RETURN_ADDR = 0x0100 + LUP_RETURN_BLOB = 0x0200 + LUP_RETURN_ALIASES = 0x0400 + LUP_RETURN_QUERY_STRING = 0x0800 + LUP_RETURN_ALL = 0x0FF0 + LUP_RES_SERVICE = 0x8000 + + LUP_FLUSHCACHE = 0x1000 + LUP_FLUSHPREVIOUS = 0x2000 + + LUP_NON_AUTHORITATIVE = 0x4000 + LUP_SECURE = 0x8000 + LUP_RETURN_PREFERRED_NAMES = 0x10000 + LUP_DNS_ONLY = 0x20000 + + LUP_ADDRCONFIG = 0x100000 + LUP_DUAL_ADDR = 0x200000 + LUP_FILESERVER = 0x400000 + LUP_DISABLE_IDN_ENCODING = 0x00800000 + LUP_API_ANSI = 0x01000000 + + LUP_RESOLUTION_HANDLE = 0x80000000 +) + +const ( + // values of WSAQUERYSET's namespace + NS_ALL = 0 + NS_DNS = 12 + NS_NLA = 15 + NS_BTH = 16 + NS_EMAIL = 37 + NS_PNRPNAME = 38 + NS_PNRPCLOUD = 39 +) + +type DNSSRVData struct { + Target *uint16 + Priority uint16 + Weight uint16 + Port uint16 + Pad uint16 +} + +type DNSPTRData struct { + Host *uint16 +} + +type DNSMXData struct { + NameExchange *uint16 + Preference uint16 + Pad uint16 +} + +type DNSTXTData struct { + StringCount uint16 + StringArray [1]*uint16 +} + +type DNSRecord struct { + Next *DNSRecord + Name *uint16 + Type uint16 + Length uint16 + Dw uint32 + Ttl uint32 + Reserved uint32 + Data [40]byte +} + +const ( + TF_DISCONNECT = 1 + TF_REUSE_SOCKET = 2 + TF_WRITE_BEHIND = 4 + TF_USE_DEFAULT_WORKER = 0 + TF_USE_SYSTEM_THREAD = 16 + TF_USE_KERNEL_APC = 32 +) + +type TransmitFileBuffers struct { + Head uintptr + HeadLength uint32 + Tail uintptr + TailLength uint32 +} + +const ( + IFF_UP = 1 + IFF_BROADCAST = 2 + IFF_LOOPBACK = 4 + IFF_POINTTOPOINT = 8 + IFF_MULTICAST = 16 +) + +const SIO_GET_INTERFACE_LIST = 0x4004747F + +// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. +// will be fixed to change variable type as suitable. + +type SockaddrGen [24]byte + +type InterfaceInfo struct { + Flags uint32 + Address SockaddrGen + BroadcastAddress SockaddrGen + Netmask SockaddrGen +} + +type IpAddressString struct { + String [16]byte +} + +type IpMaskString IpAddressString + +type IpAddrString struct { + Next *IpAddrString + IpAddress IpAddressString + IpMask IpMaskString + Context uint32 +} + +const MAX_ADAPTER_NAME_LENGTH = 256 +const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +const MAX_ADAPTER_ADDRESS_LENGTH = 8 + +type IpAdapterInfo struct { + Next *IpAdapterInfo + ComboIndex uint32 + AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte + Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte + AddressLength uint32 + Address [MAX_ADAPTER_ADDRESS_LENGTH]byte + Index uint32 + Type uint32 + DhcpEnabled uint32 + CurrentIpAddress *IpAddrString + IpAddressList IpAddrString + GatewayList IpAddrString + DhcpServer IpAddrString + HaveWins bool + PrimaryWinsServer IpAddrString + SecondaryWinsServer IpAddrString + LeaseObtained int64 + LeaseExpires int64 +} + +const MAXLEN_PHYSADDR = 8 +const MAX_INTERFACE_NAME_LEN = 256 +const MAXLEN_IFDESCR = 256 + +type MibIfRow struct { + Name [MAX_INTERFACE_NAME_LEN]uint16 + Index uint32 + Type uint32 + Mtu uint32 + Speed uint32 + PhysAddrLen uint32 + PhysAddr [MAXLEN_PHYSADDR]byte + AdminStatus uint32 + OperStatus uint32 + LastChange uint32 + InOctets uint32 + InUcastPkts uint32 + InNUcastPkts uint32 + InDiscards uint32 + InErrors uint32 + InUnknownProtos uint32 + OutOctets uint32 + OutUcastPkts uint32 + OutNUcastPkts uint32 + OutDiscards uint32 + OutErrors uint32 + OutQLen uint32 + DescrLen uint32 + Descr [MAXLEN_IFDESCR]byte +} + +type CertInfo struct { + Version uint32 + SerialNumber CryptIntegerBlob + SignatureAlgorithm CryptAlgorithmIdentifier + Issuer CertNameBlob + NotBefore Filetime + NotAfter Filetime + Subject CertNameBlob + SubjectPublicKeyInfo CertPublicKeyInfo + IssuerUniqueId CryptBitBlob + SubjectUniqueId CryptBitBlob + CountExtensions uint32 + Extensions *CertExtension +} + +type CertExtension struct { + ObjId *byte + Critical int32 + Value CryptObjidBlob +} + +type CryptAlgorithmIdentifier struct { + ObjId *byte + Parameters CryptObjidBlob +} + +type CertPublicKeyInfo struct { + Algorithm CryptAlgorithmIdentifier + PublicKey CryptBitBlob +} + +type DataBlob struct { + Size uint32 + Data *byte +} +type CryptIntegerBlob DataBlob +type CryptUintBlob DataBlob +type CryptObjidBlob DataBlob +type CertNameBlob DataBlob +type CertRdnValueBlob DataBlob +type CertBlob DataBlob +type CrlBlob DataBlob +type CryptDataBlob DataBlob +type CryptHashBlob DataBlob +type CryptDigestBlob DataBlob +type CryptDerBlob DataBlob +type CryptAttrBlob DataBlob + +type CryptBitBlob struct { + Size uint32 + Data *byte + UnusedBits uint32 +} + +type CertContext struct { + EncodingType uint32 + EncodedCert *byte + Length uint32 + CertInfo *CertInfo + Store Handle +} + +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertTrustListInfo struct { + // Not implemented +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo *CertTrustListInfo + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationCrlInfo struct { + // Not implemented +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo Pointer + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara Pointer +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus Pointer +} + +type CertPolicyInfo struct { + Identifier *byte + CountQualifiers uint32 + Qualifiers *CertPolicyQualifierInfo +} + +type CertPoliciesInfo struct { + Count uint32 + PolicyInfos *CertPolicyInfo +} + +type CertPolicyQualifierInfo struct { + // Not implemented +} + +type CertStrongSignPara struct { + Size uint32 + InfoChoice uint32 + InfoOrSerializedInfoOrOID unsafe.Pointer +} + +type CryptProtectPromptStruct struct { + Size uint32 + PromptFlags uint32 + App HWND + Prompt *uint16 +} + +type CertChainFindByIssuerPara struct { + Size uint32 + UsageIdentifier *byte + KeySpec uint32 + AcquirePrivateKeyFlags uint32 + IssuerCount uint32 + Issuer Pointer + FindCallback Pointer + FindArg Pointer + IssuerChainIndex *uint32 + IssuerElementIndex *uint32 +} + +type WinTrustData struct { + Size uint32 + PolicyCallbackData uintptr + SIPClientData uintptr + UIChoice uint32 + RevocationChecks uint32 + UnionChoice uint32 + FileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer + StateAction uint32 + StateData Handle + URLReference *uint16 + ProvFlags uint32 + UIContext uint32 + SignatureSettings *WinTrustSignatureSettings +} + +type WinTrustFileInfo struct { + Size uint32 + FilePath *uint16 + File Handle + KnownSubject *GUID +} + +type WinTrustSignatureSettings struct { + Size uint32 + Index uint32 + Flags uint32 + SecondarySigs uint32 + VerifiedSigIndex uint32 + CryptoPolicy *CertStrongSignPara +} + +const ( + // do not reorder + HKEY_CLASSES_ROOT = 0x80000000 + iota + HKEY_CURRENT_USER + HKEY_LOCAL_MACHINE + HKEY_USERS + HKEY_PERFORMANCE_DATA + HKEY_CURRENT_CONFIG + HKEY_DYN_DATA + + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_ENUMERATE_SUB_KEYS = 8 + KEY_NOTIFY = 16 + KEY_CREATE_LINK = 32 + KEY_WRITE = 0x20006 + KEY_EXECUTE = 0x20019 + KEY_READ = 0x20019 + KEY_WOW64_64KEY = 0x0100 + KEY_WOW64_32KEY = 0x0200 + KEY_ALL_ACCESS = 0xf003f +) + +const ( + // do not reorder + REG_NONE = iota + REG_SZ + REG_EXPAND_SZ + REG_BINARY + REG_DWORD_LITTLE_ENDIAN + REG_DWORD_BIG_ENDIAN + REG_LINK + REG_MULTI_SZ + REG_RESOURCE_LIST + REG_FULL_RESOURCE_DESCRIPTOR + REG_RESOURCE_REQUIREMENTS_LIST + REG_QWORD_LITTLE_ENDIAN + REG_DWORD = REG_DWORD_LITTLE_ENDIAN + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +) + +const ( + EVENT_MODIFY_STATE = 0x0002 + EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + MUTANT_QUERY_STATE = 0x0001 + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE + + SEMAPHORE_MODIFY_STATE = 0x0002 + SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + TIMER_QUERY_STATE = 0x0001 + TIMER_MODIFY_STATE = 0x0002 + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE + + MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE + MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS + + CREATE_EVENT_MANUAL_RESET = 0x1 + CREATE_EVENT_INITIAL_SET = 0x2 + CREATE_MUTEX_INITIAL_OWNER = 0x1 +) + +type AddrinfoW struct { + Flags int32 + Family int32 + Socktype int32 + Protocol int32 + Addrlen uintptr + Canonname *uint16 + Addr uintptr + Next *AddrinfoW +} + +const ( + AI_PASSIVE = 1 + AI_CANONNAME = 2 + AI_NUMERICHOST = 4 +) + +type GUID struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +var WSAID_CONNECTEX = GUID{ + 0x25a207b9, + 0xddf3, + 0x4660, + [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, +} + +var WSAID_WSASENDMSG = GUID{ + 0xa441e712, + 0x754f, + 0x43ca, + [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, +} + +var WSAID_WSARECVMSG = GUID{ + 0xf689d7c8, + 0x6f1f, + 0x436b, + [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, +} + +const ( + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 + FILE_SKIP_SET_EVENT_ON_HANDLE = 2 +) + +const ( + WSAPROTOCOL_LEN = 255 + MAX_PROTOCOL_CHAIN = 7 + BASE_PROTOCOL = 1 + LAYERED_PROTOCOL = 0 + + XP1_CONNECTIONLESS = 0x00000001 + XP1_GUARANTEED_DELIVERY = 0x00000002 + XP1_GUARANTEED_ORDER = 0x00000004 + XP1_MESSAGE_ORIENTED = 0x00000008 + XP1_PSEUDO_STREAM = 0x00000010 + XP1_GRACEFUL_CLOSE = 0x00000020 + XP1_EXPEDITED_DATA = 0x00000040 + XP1_CONNECT_DATA = 0x00000080 + XP1_DISCONNECT_DATA = 0x00000100 + XP1_SUPPORT_BROADCAST = 0x00000200 + XP1_SUPPORT_MULTIPOINT = 0x00000400 + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 + XP1_MULTIPOINT_DATA_PLANE = 0x00001000 + XP1_QOS_SUPPORTED = 0x00002000 + XP1_UNI_SEND = 0x00008000 + XP1_UNI_RECV = 0x00010000 + XP1_IFS_HANDLES = 0x00020000 + XP1_PARTIAL_MESSAGE = 0x00040000 + XP1_SAN_SUPPORT_SDP = 0x00080000 + + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 + PFL_HIDDEN = 0x00000004 + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 + PFL_NETWORKDIRECT_PROVIDER = 0x00000010 +) + +type WSAProtocolInfo struct { + ServiceFlags1 uint32 + ServiceFlags2 uint32 + ServiceFlags3 uint32 + ServiceFlags4 uint32 + ProviderFlags uint32 + ProviderId GUID + CatalogEntryId uint32 + ProtocolChain WSAProtocolChain + Version int32 + AddressFamily int32 + MaxSockAddr int32 + MinSockAddr int32 + SocketType int32 + Protocol int32 + ProtocolMaxOffset int32 + NetworkByteOrder int32 + SecurityScheme int32 + MessageSize uint32 + ProviderReserved uint32 + ProtocolName [WSAPROTOCOL_LEN + 1]uint16 +} + +type WSAProtocolChain struct { + ChainLen int32 + ChainEntries [MAX_PROTOCOL_CHAIN]uint32 +} + +type TCPKeepalive struct { + OnOff uint32 + Time uint32 + Interval uint32 +} + +type symbolicLinkReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + Flags uint32 + PathBuffer [1]uint16 +} + +type mountPointReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + PathBuffer [1]uint16 +} + +type reparseDataBuffer struct { + ReparseTag uint32 + ReparseDataLength uint16 + Reserved uint16 + + // GenericReparseBuffer + reparseBuffer byte +} + +const ( + FSCTL_CREATE_OR_GET_OBJECT_ID = 0x0900C0 + FSCTL_DELETE_OBJECT_ID = 0x0900A0 + FSCTL_DELETE_REPARSE_POINT = 0x0900AC + FSCTL_DUPLICATE_EXTENTS_TO_FILE = 0x098344 + FSCTL_DUPLICATE_EXTENTS_TO_FILE_EX = 0x0983E8 + FSCTL_FILESYSTEM_GET_STATISTICS = 0x090060 + FSCTL_FILE_LEVEL_TRIM = 0x098208 + FSCTL_FIND_FILES_BY_SID = 0x09008F + FSCTL_GET_COMPRESSION = 0x09003C + FSCTL_GET_INTEGRITY_INFORMATION = 0x09027C + FSCTL_GET_NTFS_VOLUME_DATA = 0x090064 + FSCTL_GET_REFS_VOLUME_DATA = 0x0902D8 + FSCTL_GET_OBJECT_ID = 0x09009C + FSCTL_GET_REPARSE_POINT = 0x0900A8 + FSCTL_GET_RETRIEVAL_POINTER_COUNT = 0x09042B + FSCTL_GET_RETRIEVAL_POINTERS = 0x090073 + FSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3 + FSCTL_IS_PATHNAME_VALID = 0x09002C + FSCTL_LMR_SET_LINK_TRACKING_INFORMATION = 0x1400EC + FSCTL_MARK_HANDLE = 0x0900FC + FSCTL_OFFLOAD_READ = 0x094264 + FSCTL_OFFLOAD_WRITE = 0x098268 + FSCTL_PIPE_PEEK = 0x11400C + FSCTL_PIPE_TRANSCEIVE = 0x11C017 + FSCTL_PIPE_WAIT = 0x110018 + FSCTL_QUERY_ALLOCATED_RANGES = 0x0940CF + FSCTL_QUERY_FAT_BPB = 0x090058 + FSCTL_QUERY_FILE_REGIONS = 0x090284 + FSCTL_QUERY_ON_DISK_VOLUME_INFO = 0x09013C + FSCTL_QUERY_SPARING_INFO = 0x090138 + FSCTL_READ_FILE_USN_DATA = 0x0900EB + FSCTL_RECALL_FILE = 0x090117 + FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT = 0x090440 + FSCTL_SET_COMPRESSION = 0x09C040 + FSCTL_SET_DEFECT_MANAGEMENT = 0x098134 + FSCTL_SET_ENCRYPTION = 0x0900D7 + FSCTL_SET_INTEGRITY_INFORMATION = 0x09C280 + FSCTL_SET_INTEGRITY_INFORMATION_EX = 0x090380 + FSCTL_SET_OBJECT_ID = 0x090098 + FSCTL_SET_OBJECT_ID_EXTENDED = 0x0900BC + FSCTL_SET_REPARSE_POINT = 0x0900A4 + FSCTL_SET_SPARSE = 0x0900C4 + FSCTL_SET_ZERO_DATA = 0x0980C8 + FSCTL_SET_ZERO_ON_DEALLOCATION = 0x090194 + FSCTL_SIS_COPYFILE = 0x090100 + FSCTL_WRITE_USN_CLOSE_RECORD = 0x0900EF + + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 + IO_REPARSE_TAG_SYMLINK = 0xA000000C + SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 +) + +// FILE_ZERO_DATA_INFORMATION from winioctl.h +type FileZeroDataInformation struct { + FileOffset int64 + BeyondFinalZero int64 +} + +const ( + ComputerNameNetBIOS = 0 + ComputerNameDnsHostname = 1 + ComputerNameDnsDomain = 2 + ComputerNameDnsFullyQualified = 3 + ComputerNamePhysicalNetBIOS = 4 + ComputerNamePhysicalDnsHostname = 5 + ComputerNamePhysicalDnsDomain = 6 + ComputerNamePhysicalDnsFullyQualified = 7 + ComputerNameMax = 8 +) + +// For MessageBox() +const ( + MB_OK = 0x00000000 + MB_OKCANCEL = 0x00000001 + MB_ABORTRETRYIGNORE = 0x00000002 + MB_YESNOCANCEL = 0x00000003 + MB_YESNO = 0x00000004 + MB_RETRYCANCEL = 0x00000005 + MB_CANCELTRYCONTINUE = 0x00000006 + MB_ICONHAND = 0x00000010 + MB_ICONQUESTION = 0x00000020 + MB_ICONEXCLAMATION = 0x00000030 + MB_ICONASTERISK = 0x00000040 + MB_USERICON = 0x00000080 + MB_ICONWARNING = MB_ICONEXCLAMATION + MB_ICONERROR = MB_ICONHAND + MB_ICONINFORMATION = MB_ICONASTERISK + MB_ICONSTOP = MB_ICONHAND + MB_DEFBUTTON1 = 0x00000000 + MB_DEFBUTTON2 = 0x00000100 + MB_DEFBUTTON3 = 0x00000200 + MB_DEFBUTTON4 = 0x00000300 + MB_APPLMODAL = 0x00000000 + MB_SYSTEMMODAL = 0x00001000 + MB_TASKMODAL = 0x00002000 + MB_HELP = 0x00004000 + MB_NOFOCUS = 0x00008000 + MB_SETFOREGROUND = 0x00010000 + MB_DEFAULT_DESKTOP_ONLY = 0x00020000 + MB_TOPMOST = 0x00040000 + MB_RIGHT = 0x00080000 + MB_RTLREADING = 0x00100000 + MB_SERVICE_NOTIFICATION = 0x00200000 +) + +const ( + MOVEFILE_REPLACE_EXISTING = 0x1 + MOVEFILE_COPY_ALLOWED = 0x2 + MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 + MOVEFILE_WRITE_THROUGH = 0x8 + MOVEFILE_CREATE_HARDLINK = 0x10 + MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 +) + +// Flags for GetAdaptersAddresses, see +// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses. +const ( + GAA_FLAG_SKIP_UNICAST = 0x1 + GAA_FLAG_SKIP_ANYCAST = 0x2 + GAA_FLAG_SKIP_MULTICAST = 0x4 + GAA_FLAG_SKIP_DNS_SERVER = 0x8 + GAA_FLAG_INCLUDE_PREFIX = 0x10 + GAA_FLAG_SKIP_FRIENDLY_NAME = 0x20 + GAA_FLAG_INCLUDE_WINS_INFO = 0x40 + GAA_FLAG_INCLUDE_GATEWAYS = 0x80 + GAA_FLAG_INCLUDE_ALL_INTERFACES = 0x100 + GAA_FLAG_INCLUDE_ALL_COMPARTMENTS = 0x200 + GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400 +) + +const ( + IF_TYPE_OTHER = 1 + IF_TYPE_ETHERNET_CSMACD = 6 + IF_TYPE_ISO88025_TOKENRING = 9 + IF_TYPE_PPP = 23 + IF_TYPE_SOFTWARE_LOOPBACK = 24 + IF_TYPE_ATM = 37 + IF_TYPE_IEEE80211 = 71 + IF_TYPE_TUNNEL = 131 + IF_TYPE_IEEE1394 = 144 +) + +// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin +const ( + IpPrefixOriginOther = 0 + IpPrefixOriginManual = 1 + IpPrefixOriginWellKnown = 2 + IpPrefixOriginDhcp = 3 + IpPrefixOriginRouterAdvertisement = 4 + IpPrefixOriginUnchanged = 1 << 4 +) + +// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin +const ( + NlsoOther = 0 + NlsoManual = 1 + NlsoWellKnown = 2 + NlsoDhcp = 3 + NlsoLinkLayerAddress = 4 + NlsoRandom = 5 + IpSuffixOriginOther = 0 + IpSuffixOriginManual = 1 + IpSuffixOriginWellKnown = 2 + IpSuffixOriginDhcp = 3 + IpSuffixOriginLinkLayerAddress = 4 + IpSuffixOriginRandom = 5 + IpSuffixOriginUnchanged = 1 << 4 +) + +// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state +const ( + NldsInvalid = 0 + NldsTentative = 1 + NldsDuplicate = 2 + NldsDeprecated = 3 + NldsPreferred = 4 + IpDadStateInvalid = 0 + IpDadStateTentative = 1 + IpDadStateDuplicate = 2 + IpDadStateDeprecated = 3 + IpDadStatePreferred = 4 +) + +type SocketAddress struct { + Sockaddr *syscall.RawSockaddrAny + SockaddrLength int32 +} + +// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. +func (addr *SocketAddress) IP() net.IP { + if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { + return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { + return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } + return nil +} + +type IpAdapterUnicastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterUnicastAddress + Address SocketAddress + PrefixOrigin int32 + SuffixOrigin int32 + DadState int32 + ValidLifetime uint32 + PreferredLifetime uint32 + LeaseLifetime uint32 + OnLinkPrefixLength uint8 +} + +type IpAdapterAnycastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterAnycastAddress + Address SocketAddress +} + +type IpAdapterMulticastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterMulticastAddress + Address SocketAddress +} + +type IpAdapterDnsServerAdapter struct { + Length uint32 + Reserved uint32 + Next *IpAdapterDnsServerAdapter + Address SocketAddress +} + +type IpAdapterPrefix struct { + Length uint32 + Flags uint32 + Next *IpAdapterPrefix + Address SocketAddress + PrefixLength uint32 +} + +type IpAdapterAddresses struct { + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + FirstWinsServerAddress *IpAdapterWinsServerAddress + FirstGatewayAddress *IpAdapterGatewayAddress + Ipv4Metric uint32 + Ipv6Metric uint32 + Luid uint64 + Dhcpv4Server SocketAddress + CompartmentId uint32 + NetworkGuid GUID + ConnectionType uint32 + TunnelType uint32 + Dhcpv6Server SocketAddress + Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte + Dhcpv6ClientDuidLength uint32 + Dhcpv6Iaid uint32 + FirstDnsSuffix *IpAdapterDNSSuffix +} + +type IpAdapterWinsServerAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterWinsServerAddress + Address SocketAddress +} + +type IpAdapterGatewayAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterGatewayAddress + Address SocketAddress +} + +type IpAdapterDNSSuffix struct { + Next *IpAdapterDNSSuffix + String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16 +} + +const ( + IfOperStatusUp = 1 + IfOperStatusDown = 2 + IfOperStatusTesting = 3 + IfOperStatusUnknown = 4 + IfOperStatusDormant = 5 + IfOperStatusNotPresent = 6 + IfOperStatusLowerLayerDown = 7 +) + +const ( + IF_MAX_PHYS_ADDRESS_LENGTH = 32 + IF_MAX_STRING_SIZE = 256 +) + +// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex. +const ( + MibIfEntryNormal = 0 + MibIfEntryNormalWithoutStatistics = 2 +) + +// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type. +const ( + MibParameterNotification = 0 + MibAddInstance = 1 + MibDeleteInstance = 2 + MibInitialNotification = 3 +) + +// MibIfRow2 stores information about a particular interface. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2. +type MibIfRow2 struct { + InterfaceLuid uint64 + InterfaceIndex uint32 + InterfaceGuid GUID + Alias [IF_MAX_STRING_SIZE + 1]uint16 + Description [IF_MAX_STRING_SIZE + 1]uint16 + PhysicalAddressLength uint32 + PhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8 + PermanentPhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8 + Mtu uint32 + Type uint32 + TunnelType uint32 + MediaType uint32 + PhysicalMediumType uint32 + AccessType uint32 + DirectionType uint32 + InterfaceAndOperStatusFlags uint8 + OperStatus uint32 + AdminStatus uint32 + MediaConnectState uint32 + NetworkGuid GUID + ConnectionType uint32 + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + InOctets uint64 + InUcastPkts uint64 + InNUcastPkts uint64 + InDiscards uint64 + InErrors uint64 + InUnknownProtos uint64 + InUcastOctets uint64 + InMulticastOctets uint64 + InBroadcastOctets uint64 + OutOctets uint64 + OutUcastPkts uint64 + OutNUcastPkts uint64 + OutDiscards uint64 + OutErrors uint64 + OutUcastOctets uint64 + OutMulticastOctets uint64 + OutBroadcastOctets uint64 + OutQLen uint64 +} + +// IP_ADDRESS_PREFIX stores an IP address prefix. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-ip_address_prefix. +type IpAddressPrefix struct { + Prefix RawSockaddrInet + PrefixLength uint8 +} + +// NL_ROUTE_ORIGIN enumeration from nldef.h or +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_origin. +const ( + NlroManual = 0 + NlroWellKnown = 1 + NlroDHCP = 2 + NlroRouterAdvertisement = 3 + Nlro6to4 = 4 +) + +// NL_ROUTE_ORIGIN enumeration from nldef.h or +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_route_protocol. +const ( + MIB_IPPROTO_OTHER = 1 + MIB_IPPROTO_LOCAL = 2 + MIB_IPPROTO_NETMGMT = 3 + MIB_IPPROTO_ICMP = 4 + MIB_IPPROTO_EGP = 5 + MIB_IPPROTO_GGP = 6 + MIB_IPPROTO_HELLO = 7 + MIB_IPPROTO_RIP = 8 + MIB_IPPROTO_IS_IS = 9 + MIB_IPPROTO_ES_IS = 10 + MIB_IPPROTO_CISCO = 11 + MIB_IPPROTO_BBN = 12 + MIB_IPPROTO_OSPF = 13 + MIB_IPPROTO_BGP = 14 + MIB_IPPROTO_IDPR = 15 + MIB_IPPROTO_EIGRP = 16 + MIB_IPPROTO_DVMRP = 17 + MIB_IPPROTO_RPL = 18 + MIB_IPPROTO_DHCP = 19 + MIB_IPPROTO_NT_AUTOSTATIC = 10002 + MIB_IPPROTO_NT_STATIC = 10006 + MIB_IPPROTO_NT_STATIC_NON_DOD = 10007 +) + +// MIB_IPFORWARD_ROW2 stores information about an IP route entry. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_row2. +type MibIpForwardRow2 struct { + InterfaceLuid uint64 + InterfaceIndex uint32 + DestinationPrefix IpAddressPrefix + NextHop RawSockaddrInet + SitePrefixLength uint8 + ValidLifetime uint32 + PreferredLifetime uint32 + Metric uint32 + Protocol uint32 + Loopback uint8 + AutoconfigureAddress uint8 + Publish uint8 + Immortal uint8 + Age uint32 + Origin uint32 +} + +// MIB_IPFORWARD_TABLE2 contains a table of IP route entries. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipforward_table2. +type MibIpForwardTable2 struct { + NumEntries uint32 + Table [1]MibIpForwardRow2 +} + +// Rows returns the IP route entries in the table. +func (t *MibIpForwardTable2) Rows() []MibIpForwardRow2 { + return unsafe.Slice(&t.Table[0], t.NumEntries) +} + +// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row. +type MibUnicastIpAddressRow struct { + Address RawSockaddrInet6 // SOCKADDR_INET union + InterfaceLuid uint64 + InterfaceIndex uint32 + PrefixOrigin uint32 + SuffixOrigin uint32 + ValidLifetime uint32 + PreferredLifetime uint32 + OnLinkPrefixLength uint8 + SkipAsSource uint8 + DadState uint32 + ScopeId uint32 + CreationTimeStamp Filetime +} + +const ScopeLevelCount = 16 + +// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface. +// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row. +type MibIpInterfaceRow struct { + Family uint16 + InterfaceLuid uint64 + InterfaceIndex uint32 + MaxReassemblySize uint32 + InterfaceIdentifier uint64 + MinRouterAdvertisementInterval uint32 + MaxRouterAdvertisementInterval uint32 + AdvertisingEnabled uint8 + ForwardingEnabled uint8 + WeakHostSend uint8 + WeakHostReceive uint8 + UseAutomaticMetric uint8 + UseNeighborUnreachabilityDetection uint8 + ManagedAddressConfigurationSupported uint8 + OtherStatefulConfigurationSupported uint8 + AdvertiseDefaultRoute uint8 + RouterDiscoveryBehavior uint32 + DadTransmits uint32 + BaseReachableTime uint32 + RetransmitTime uint32 + PathMtuDiscoveryTimeout uint32 + LinkLocalAddressBehavior uint32 + LinkLocalAddressTimeout uint32 + ZoneIndices [ScopeLevelCount]uint32 + SitePrefixLength uint32 + Metric uint32 + NlMtu uint32 + Connected uint8 + SupportsWakeUpPatterns uint8 + SupportsNeighborDiscovery uint8 + SupportsRouterDiscovery uint8 + ReachableTime uint32 + TransmitOffload uint32 + ReceiveOffload uint32 + DisableDefaultRoutes uint8 +} + +// Console related constants used for the mode parameter to SetConsoleMode. See +// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. + +const ( + ENABLE_PROCESSED_INPUT = 0x1 + ENABLE_LINE_INPUT = 0x2 + ENABLE_ECHO_INPUT = 0x4 + ENABLE_WINDOW_INPUT = 0x8 + ENABLE_MOUSE_INPUT = 0x10 + ENABLE_INSERT_MODE = 0x20 + ENABLE_QUICK_EDIT_MODE = 0x40 + ENABLE_EXTENDED_FLAGS = 0x80 + ENABLE_AUTO_POSITION = 0x100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 + + ENABLE_PROCESSED_OUTPUT = 0x1 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 + DISABLE_NEWLINE_AUTO_RETURN = 0x8 + ENABLE_LVB_GRID_WORLDWIDE = 0x10 +) + +// Pseudo console related constants used for the flags parameter to +// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole +const ( + PSEUDOCONSOLE_INHERIT_CURSOR = 0x1 +) + +type Coord struct { + X int16 + Y int16 +} + +type SmallRect struct { + Left int16 + Top int16 + Right int16 + Bottom int16 +} + +// Used with GetConsoleScreenBuffer to retrieve information about a console +// screen buffer. See +// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str +// for details. + +type ConsoleScreenBufferInfo struct { + Size Coord + CursorPosition Coord + Attributes uint16 + Window SmallRect + MaximumWindowSize Coord +} + +const UNIX_PATH_MAX = 108 // defined in afunix.h + +const ( + // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 + JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 + JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 + JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 + JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 + JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 + JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 +) + +type IO_COUNTERS struct { + ReadOperationCount uint64 + WriteOperationCount uint64 + OtherOperationCount uint64 + ReadTransferCount uint64 + WriteTransferCount uint64 + OtherTransferCount uint64 +} + +type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { + BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION + IoInfo IO_COUNTERS + ProcessMemoryLimit uintptr + JobMemoryLimit uintptr + PeakProcessMemoryUsed uintptr + PeakJobMemoryUsed uintptr +} + +const ( + // UIRestrictionsClass + JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 + JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 +) + +type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { + UIRestrictionsClass uint32 +} + +const ( + // JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject + JobObjectAssociateCompletionPortInformation = 7 + JobObjectBasicAccountingInformation = 1 + JobObjectBasicAndIoAccountingInformation = 8 + JobObjectBasicLimitInformation = 2 + JobObjectBasicProcessIdList = 3 + JobObjectBasicUIRestrictions = 4 + JobObjectCpuRateControlInformation = 15 + JobObjectEndOfJobTimeInformation = 6 + JobObjectExtendedLimitInformation = 9 + JobObjectGroupInformation = 11 + JobObjectGroupInformationEx = 14 + JobObjectLimitViolationInformation = 13 + JobObjectLimitViolationInformation2 = 34 + JobObjectNetRateControlInformation = 32 + JobObjectNotificationLimitInformation = 12 + JobObjectNotificationLimitInformation2 = 33 + JobObjectSecurityLimitInformation = 5 +) + +const ( + KF_FLAG_DEFAULT = 0x00000000 + KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 + KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 + KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 + KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 + KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 + KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 + KF_FLAG_CREATE = 0x00008000 + KF_FLAG_DONT_VERIFY = 0x00004000 + KF_FLAG_DONT_UNEXPAND = 0x00002000 + KF_FLAG_NO_ALIAS = 0x00001000 + KF_FLAG_INIT = 0x00000800 + KF_FLAG_DEFAULT_PATH = 0x00000400 + KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 + KF_FLAG_SIMPLE_IDLIST = 0x00000100 + KF_FLAG_ALIAS_ONLY = 0x80000000 +) + +type OsVersionInfoEx struct { + osVersionInfoSize uint32 + MajorVersion uint32 + MinorVersion uint32 + BuildNumber uint32 + PlatformId uint32 + CsdVersion [128]uint16 + ServicePackMajor uint16 + ServicePackMinor uint16 + SuiteMask uint16 + ProductType byte + _ byte +} + +const ( + EWX_LOGOFF = 0x00000000 + EWX_SHUTDOWN = 0x00000001 + EWX_REBOOT = 0x00000002 + EWX_FORCE = 0x00000004 + EWX_POWEROFF = 0x00000008 + EWX_FORCEIFHUNG = 0x00000010 + EWX_QUICKRESOLVE = 0x00000020 + EWX_RESTARTAPPS = 0x00000040 + EWX_HYBRID_SHUTDOWN = 0x00400000 + EWX_BOOTOPTIONS = 0x01000000 + + SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 + SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 + SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 + SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 + SHTDN_REASON_FLAG_PLANNED = 0x80000000 + SHTDN_REASON_MAJOR_OTHER = 0x00000000 + SHTDN_REASON_MAJOR_NONE = 0x00000000 + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 + SHTDN_REASON_MAJOR_POWER = 0x00060000 + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 + SHTDN_REASON_MINOR_OTHER = 0x00000000 + SHTDN_REASON_MINOR_NONE = 0x000000ff + SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 + SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 + SHTDN_REASON_MINOR_UPGRADE = 0x00000003 + SHTDN_REASON_MINOR_RECONFIG = 0x00000004 + SHTDN_REASON_MINOR_HUNG = 0x00000005 + SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 + SHTDN_REASON_MINOR_DISK = 0x00000007 + SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 + SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 + SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a + SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b + SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c + SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d + SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e + SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F + SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010 + SHTDN_REASON_MINOR_HOTFIX = 0x00000011 + SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012 + SHTDN_REASON_MINOR_SECURITY = 0x00000013 + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014 + SHTDN_REASON_MINOR_WMI = 0x00000015 + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016 + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017 + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018 + SHTDN_REASON_MINOR_MMC = 0x00000019 + SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 + SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021 + SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022 + SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE + SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED + SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff + + SHUTDOWN_NORETRY = 0x1 +) + +// Flags used for GetModuleHandleEx +const ( + GET_MODULE_HANDLE_EX_FLAG_PIN = 1 + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 +) + +// MUI function flag values +const ( + MUI_LANGUAGE_ID = 0x4 + MUI_LANGUAGE_NAME = 0x8 + MUI_MERGE_SYSTEM_FALLBACK = 0x10 + MUI_MERGE_USER_FALLBACK = 0x20 + MUI_UI_FALLBACK = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK + MUI_THREAD_LANGUAGES = 0x40 + MUI_CONSOLE_FILTER = 0x100 + MUI_COMPLEX_SCRIPT_FILTER = 0x200 + MUI_RESET_FILTERS = 0x001 + MUI_USER_PREFERRED_UI_LANGUAGES = 0x10 + MUI_USE_INSTALLED_LANGUAGES = 0x20 + MUI_USE_SEARCH_ALL_LANGUAGES = 0x40 + MUI_LANG_NEUTRAL_PE_FILE = 0x100 + MUI_NON_LANG_NEUTRAL_FILE = 0x200 + MUI_MACHINE_LANGUAGE_SETTINGS = 0x400 + MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL = 0x001 + MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002 + MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI = 0x004 + MUI_QUERY_TYPE = 0x001 + MUI_QUERY_CHECKSUM = 0x002 + MUI_QUERY_LANGUAGE_NAME = 0x004 + MUI_QUERY_RESOURCE_TYPES = 0x008 + MUI_FILEINFO_VERSION = 0x001 + + MUI_FULL_LANGUAGE = 0x01 + MUI_PARTIAL_LANGUAGE = 0x02 + MUI_LIP_LANGUAGE = 0x04 + MUI_LANGUAGE_INSTALLED = 0x20 + MUI_LANGUAGE_LICENSED = 0x40 +) + +// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx +const ( + FileBasicInfo = 0 + FileStandardInfo = 1 + FileNameInfo = 2 + FileRenameInfo = 3 + FileDispositionInfo = 4 + FileAllocationInfo = 5 + FileEndOfFileInfo = 6 + FileStreamInfo = 7 + FileCompressionInfo = 8 + FileAttributeTagInfo = 9 + FileIdBothDirectoryInfo = 10 + FileIdBothDirectoryRestartInfo = 11 + FileIoPriorityHintInfo = 12 + FileRemoteProtocolInfo = 13 + FileFullDirectoryInfo = 14 + FileFullDirectoryRestartInfo = 15 + FileStorageInfo = 16 + FileAlignmentInfo = 17 + FileIdInfo = 18 + FileIdExtdDirectoryInfo = 19 + FileIdExtdDirectoryRestartInfo = 20 + FileDispositionInfoEx = 21 + FileRenameInfoEx = 22 + FileCaseSensitiveInfo = 23 + FileNormalizedNameInfo = 24 +) + +// LoadLibrary flags for determining from where to search for a DLL +const ( + DONT_RESOLVE_DLL_REFERENCES = 0x1 + LOAD_LIBRARY_AS_DATAFILE = 0x2 + LOAD_WITH_ALTERED_SEARCH_PATH = 0x8 + LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10 + LOAD_LIBRARY_AS_IMAGE_RESOURCE = 0x20 + LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE = 0x40 + LOAD_LIBRARY_REQUIRE_SIGNED_TARGET = 0x80 + LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR = 0x100 + LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 0x200 + LOAD_LIBRARY_SEARCH_USER_DIRS = 0x400 + LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x800 + LOAD_LIBRARY_SEARCH_DEFAULT_DIRS = 0x1000 + LOAD_LIBRARY_SAFE_CURRENT_DIRS = 0x00002000 + LOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000 + LOAD_LIBRARY_OS_INTEGRITY_CONTINUITY = 0x00008000 +) + +// RegNotifyChangeKeyValue notifyFilter flags. +const ( + // REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted. + REG_NOTIFY_CHANGE_NAME = 0x00000001 + + // REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information. + REG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002 + + // REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value. + REG_NOTIFY_CHANGE_LAST_SET = 0x00000004 + + // REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key. + REG_NOTIFY_CHANGE_SECURITY = 0x00000008 + + // REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later. + REG_NOTIFY_THREAD_AGNOSTIC = 0x10000000 +) + +type CommTimeouts struct { + ReadIntervalTimeout uint32 + ReadTotalTimeoutMultiplier uint32 + ReadTotalTimeoutConstant uint32 + WriteTotalTimeoutMultiplier uint32 + WriteTotalTimeoutConstant uint32 +} + +// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING. +type NTUnicodeString struct { + // Note: Length and MaximumLength are in *bytes*, not uint16s. + // They should always be even. + Length uint16 + MaximumLength uint16 + Buffer *uint16 +} + +// NTString is an ANSI string for NT native APIs, corresponding to STRING. +type NTString struct { + Length uint16 + MaximumLength uint16 + Buffer *byte +} + +type LIST_ENTRY struct { + Flink *LIST_ENTRY + Blink *LIST_ENTRY +} + +type RUNTIME_FUNCTION struct { + BeginAddress uint32 + EndAddress uint32 + UnwindData uint32 +} + +type LDR_DATA_TABLE_ENTRY struct { + reserved1 [2]uintptr + InMemoryOrderLinks LIST_ENTRY + reserved2 [2]uintptr + DllBase uintptr + reserved3 [2]uintptr + FullDllName NTUnicodeString + reserved4 [8]byte + reserved5 [3]uintptr + reserved6 uintptr + TimeDateStamp uint32 +} + +type PEB_LDR_DATA struct { + reserved1 [8]byte + reserved2 [3]uintptr + InMemoryOrderModuleList LIST_ENTRY +} + +type CURDIR struct { + DosPath NTUnicodeString + Handle Handle +} + +type RTL_DRIVE_LETTER_CURDIR struct { + Flags uint16 + Length uint16 + TimeStamp uint32 + DosPath NTString +} + +type RTL_USER_PROCESS_PARAMETERS struct { + MaximumLength, Length uint32 + + Flags, DebugFlags uint32 + + ConsoleHandle Handle + ConsoleFlags uint32 + StandardInput, StandardOutput, StandardError Handle + + CurrentDirectory CURDIR + DllPath NTUnicodeString + ImagePathName NTUnicodeString + CommandLine NTUnicodeString + Environment unsafe.Pointer + + StartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32 + + WindowFlags, ShowWindowFlags uint32 + WindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString + CurrentDirectories [32]RTL_DRIVE_LETTER_CURDIR + + EnvironmentSize, EnvironmentVersion uintptr + + PackageDependencyData unsafe.Pointer + ProcessGroupId uint32 + LoaderThreads uint32 + + RedirectionDllName NTUnicodeString + HeapPartitionName NTUnicodeString + DefaultThreadpoolCpuSetMasks uintptr + DefaultThreadpoolCpuSetMaskCount uint32 +} + +type PEB struct { + reserved1 [2]byte + BeingDebugged byte + BitField byte + reserved3 uintptr + ImageBaseAddress uintptr + Ldr *PEB_LDR_DATA + ProcessParameters *RTL_USER_PROCESS_PARAMETERS + reserved4 [3]uintptr + AtlThunkSListPtr uintptr + reserved5 uintptr + reserved6 uint32 + reserved7 uintptr + reserved8 uint32 + AtlThunkSListPtr32 uint32 + reserved9 [45]uintptr + reserved10 [96]byte + PostProcessInitRoutine uintptr + reserved11 [128]byte + reserved12 [1]uintptr + SessionId uint32 +} + +type OBJECT_ATTRIBUTES struct { + Length uint32 + RootDirectory Handle + ObjectName *NTUnicodeString + Attributes uint32 + SecurityDescriptor *SECURITY_DESCRIPTOR + SecurityQoS *SECURITY_QUALITY_OF_SERVICE +} + +// Values for the Attributes member of OBJECT_ATTRIBUTES. +const ( + OBJ_INHERIT = 0x00000002 + OBJ_PERMANENT = 0x00000010 + OBJ_EXCLUSIVE = 0x00000020 + OBJ_CASE_INSENSITIVE = 0x00000040 + OBJ_OPENIF = 0x00000080 + OBJ_OPENLINK = 0x00000100 + OBJ_KERNEL_HANDLE = 0x00000200 + OBJ_FORCE_ACCESS_CHECK = 0x00000400 + OBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800 + OBJ_DONT_REPARSE = 0x00001000 + OBJ_VALID_ATTRIBUTES = 0x00001FF2 +) + +type IO_STATUS_BLOCK struct { + Status NTStatus + Information uintptr +} + +type RTLP_CURDIR_REF struct { + RefCount int32 + Handle Handle +} + +type RTL_RELATIVE_NAME struct { + RelativeName NTUnicodeString + ContainingDirectory Handle + CurDirRef *RTLP_CURDIR_REF +} + +const ( + // CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile. + FILE_SUPERSEDE = 0x00000000 + FILE_OPEN = 0x00000001 + FILE_CREATE = 0x00000002 + FILE_OPEN_IF = 0x00000003 + FILE_OVERWRITE = 0x00000004 + FILE_OVERWRITE_IF = 0x00000005 + FILE_MAXIMUM_DISPOSITION = 0x00000005 + + // CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile. + FILE_DIRECTORY_FILE = 0x00000001 + FILE_WRITE_THROUGH = 0x00000002 + FILE_SEQUENTIAL_ONLY = 0x00000004 + FILE_NO_INTERMEDIATE_BUFFERING = 0x00000008 + FILE_SYNCHRONOUS_IO_ALERT = 0x00000010 + FILE_SYNCHRONOUS_IO_NONALERT = 0x00000020 + FILE_NON_DIRECTORY_FILE = 0x00000040 + FILE_CREATE_TREE_CONNECTION = 0x00000080 + FILE_COMPLETE_IF_OPLOCKED = 0x00000100 + FILE_NO_EA_KNOWLEDGE = 0x00000200 + FILE_OPEN_REMOTE_INSTANCE = 0x00000400 + FILE_RANDOM_ACCESS = 0x00000800 + FILE_DELETE_ON_CLOSE = 0x00001000 + FILE_OPEN_BY_FILE_ID = 0x00002000 + FILE_OPEN_FOR_BACKUP_INTENT = 0x00004000 + FILE_NO_COMPRESSION = 0x00008000 + FILE_OPEN_REQUIRING_OPLOCK = 0x00010000 + FILE_DISALLOW_EXCLUSIVE = 0x00020000 + FILE_RESERVE_OPFILTER = 0x00100000 + FILE_OPEN_REPARSE_POINT = 0x00200000 + FILE_OPEN_NO_RECALL = 0x00400000 + FILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000 + + // Parameter constants for NtCreateNamedPipeFile. + + FILE_PIPE_BYTE_STREAM_TYPE = 0x00000000 + FILE_PIPE_MESSAGE_TYPE = 0x00000001 + + FILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000 + FILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002 + + FILE_PIPE_TYPE_VALID_MASK = 0x00000003 + + FILE_PIPE_BYTE_STREAM_MODE = 0x00000000 + FILE_PIPE_MESSAGE_MODE = 0x00000001 + + FILE_PIPE_QUEUE_OPERATION = 0x00000000 + FILE_PIPE_COMPLETE_OPERATION = 0x00000001 + + FILE_PIPE_INBOUND = 0x00000000 + FILE_PIPE_OUTBOUND = 0x00000001 + FILE_PIPE_FULL_DUPLEX = 0x00000002 + + FILE_PIPE_DISCONNECTED_STATE = 0x00000001 + FILE_PIPE_LISTENING_STATE = 0x00000002 + FILE_PIPE_CONNECTED_STATE = 0x00000003 + FILE_PIPE_CLOSING_STATE = 0x00000004 + + FILE_PIPE_CLIENT_END = 0x00000000 + FILE_PIPE_SERVER_END = 0x00000001 +) + +const ( + // FileInformationClass for NtSetInformationFile + FileBasicInformation = 4 + FileRenameInformation = 10 + FileDispositionInformation = 13 + FilePositionInformation = 14 + FileEndOfFileInformation = 20 + FileValidDataLengthInformation = 39 + FileShortNameInformation = 40 + FileIoPriorityHintInformation = 43 + FileReplaceCompletionInformation = 61 + FileDispositionInformationEx = 64 + FileCaseSensitiveInformation = 71 + FileLinkInformation = 72 + FileCaseSensitiveInformationForceAccessCheck = 75 + FileKnownFolderInformation = 76 + + // Flags for FILE_RENAME_INFORMATION + FILE_RENAME_REPLACE_IF_EXISTS = 0x00000001 + FILE_RENAME_POSIX_SEMANTICS = 0x00000002 + FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE = 0x00000004 + FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 + FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 + FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 + FILE_RENAME_PRESERVE_AVAILABLE_SPACE = 0x00000030 + FILE_RENAME_IGNORE_READONLY_ATTRIBUTE = 0x00000040 + FILE_RENAME_FORCE_RESIZE_TARGET_SR = 0x00000080 + FILE_RENAME_FORCE_RESIZE_SOURCE_SR = 0x00000100 + FILE_RENAME_FORCE_RESIZE_SR = 0x00000180 + + // Flags for FILE_DISPOSITION_INFORMATION_EX + FILE_DISPOSITION_DO_NOT_DELETE = 0x00000000 + FILE_DISPOSITION_DELETE = 0x00000001 + FILE_DISPOSITION_POSIX_SEMANTICS = 0x00000002 + FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004 + FILE_DISPOSITION_ON_CLOSE = 0x00000008 + FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010 + + // Flags for FILE_CASE_SENSITIVE_INFORMATION + FILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001 + + // Flags for FILE_LINK_INFORMATION + FILE_LINK_REPLACE_IF_EXISTS = 0x00000001 + FILE_LINK_POSIX_SEMANTICS = 0x00000002 + FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008 + FILE_LINK_NO_INCREASE_AVAILABLE_SPACE = 0x00000010 + FILE_LINK_NO_DECREASE_AVAILABLE_SPACE = 0x00000020 + FILE_LINK_PRESERVE_AVAILABLE_SPACE = 0x00000030 + FILE_LINK_IGNORE_READONLY_ATTRIBUTE = 0x00000040 + FILE_LINK_FORCE_RESIZE_TARGET_SR = 0x00000080 + FILE_LINK_FORCE_RESIZE_SOURCE_SR = 0x00000100 + FILE_LINK_FORCE_RESIZE_SR = 0x00000180 +) + +// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess. +const ( + ProcessBasicInformation = iota + ProcessQuotaLimits + ProcessIoCounters + ProcessVmCounters + ProcessTimes + ProcessBasePriority + ProcessRaisePriority + ProcessDebugPort + ProcessExceptionPort + ProcessAccessToken + ProcessLdtInformation + ProcessLdtSize + ProcessDefaultHardErrorMode + ProcessIoPortHandlers + ProcessPooledUsageAndLimits + ProcessWorkingSetWatch + ProcessUserModeIOPL + ProcessEnableAlignmentFaultFixup + ProcessPriorityClass + ProcessWx86Information + ProcessHandleCount + ProcessAffinityMask + ProcessPriorityBoost + ProcessDeviceMap + ProcessSessionInformation + ProcessForegroundInformation + ProcessWow64Information + ProcessImageFileName + ProcessLUIDDeviceMapsEnabled + ProcessBreakOnTermination + ProcessDebugObjectHandle + ProcessDebugFlags + ProcessHandleTracing + ProcessIoPriority + ProcessExecuteFlags + ProcessTlsInformation + ProcessCookie + ProcessImageInformation + ProcessCycleTime + ProcessPagePriority + ProcessInstrumentationCallback + ProcessThreadStackAllocation + ProcessWorkingSetWatchEx + ProcessImageFileNameWin32 + ProcessImageFileMapping + ProcessAffinityUpdateMode + ProcessMemoryAllocationMode + ProcessGroupInformation + ProcessTokenVirtualizationEnabled + ProcessConsoleHostProcess + ProcessWindowInformation + ProcessHandleInformation + ProcessMitigationPolicy + ProcessDynamicFunctionTableInformation + ProcessHandleCheckingMode + ProcessKeepAliveCount + ProcessRevokeFileHandles + ProcessWorkingSetControl + ProcessHandleTable + ProcessCheckStackExtentsMode + ProcessCommandLineInformation + ProcessProtectionInformation + ProcessMemoryExhaustion + ProcessFaultInformation + ProcessTelemetryIdInformation + ProcessCommitReleaseInformation + ProcessDefaultCpuSetsInformation + ProcessAllowedCpuSetsInformation + ProcessSubsystemProcess + ProcessJobMemoryInformation + ProcessInPrivate + ProcessRaiseUMExceptionOnInvalidHandleClose + ProcessIumChallengeResponse + ProcessChildProcessInformation + ProcessHighGraphicsPriorityInformation + ProcessSubsystemInformation + ProcessEnergyValues + ProcessActivityThrottleState + ProcessActivityThrottlePolicy + ProcessWin32kSyscallFilterInformation + ProcessDisableSystemAllowedCpuSets + ProcessWakeInformation + ProcessEnergyTrackingState + ProcessManageWritesToExecutableMemory + ProcessCaptureTrustletLiveDump + ProcessTelemetryCoverage + ProcessEnclaveInformation + ProcessEnableReadWriteVmLogging + ProcessUptimeInformation + ProcessImageSection + ProcessDebugAuthInformation + ProcessSystemResourceManagement + ProcessSequenceNumber + ProcessLoaderDetour + ProcessSecurityDomainInformation + ProcessCombineSecurityDomainsInformation + ProcessEnableLogging + ProcessLeapSecondInformation + ProcessFiberShadowStackAllocation + ProcessFreeFiberShadowStackAllocation + ProcessAltSystemCallInformation + ProcessDynamicEHContinuationTargets + ProcessDynamicEnforcedCetCompatibleRanges +) + +type PROCESS_BASIC_INFORMATION struct { + ExitStatus NTStatus + PebBaseAddress *PEB + AffinityMask uintptr + BasePriority int32 + UniqueProcessId uintptr + InheritedFromUniqueProcessId uintptr +} + +type SYSTEM_PROCESS_INFORMATION struct { + NextEntryOffset uint32 + NumberOfThreads uint32 + WorkingSetPrivateSize int64 + HardFaultCount uint32 + NumberOfThreadsHighWatermark uint32 + CycleTime uint64 + CreateTime int64 + UserTime int64 + KernelTime int64 + ImageName NTUnicodeString + BasePriority int32 + UniqueProcessID uintptr + InheritedFromUniqueProcessID uintptr + HandleCount uint32 + SessionID uint32 + UniqueProcessKey *uint32 + PeakVirtualSize uintptr + VirtualSize uintptr + PageFaultCount uint32 + PeakWorkingSetSize uintptr + WorkingSetSize uintptr + QuotaPeakPagedPoolUsage uintptr + QuotaPagedPoolUsage uintptr + QuotaPeakNonPagedPoolUsage uintptr + QuotaNonPagedPoolUsage uintptr + PagefileUsage uintptr + PeakPagefileUsage uintptr + PrivatePageCount uintptr + ReadOperationCount int64 + WriteOperationCount int64 + OtherOperationCount int64 + ReadTransferCount int64 + WriteTransferCount int64 + OtherTransferCount int64 +} + +// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation +const ( + SystemBasicInformation = iota + SystemProcessorInformation + SystemPerformanceInformation + SystemTimeOfDayInformation + SystemPathInformation + SystemProcessInformation + SystemCallCountInformation + SystemDeviceInformation + SystemProcessorPerformanceInformation + SystemFlagsInformation + SystemCallTimeInformation + SystemModuleInformation + SystemLocksInformation + SystemStackTraceInformation + SystemPagedPoolInformation + SystemNonPagedPoolInformation + SystemHandleInformation + SystemObjectInformation + SystemPageFileInformation + SystemVdmInstemulInformation + SystemVdmBopInformation + SystemFileCacheInformation + SystemPoolTagInformation + SystemInterruptInformation + SystemDpcBehaviorInformation + SystemFullMemoryInformation + SystemLoadGdiDriverInformation + SystemUnloadGdiDriverInformation + SystemTimeAdjustmentInformation + SystemSummaryMemoryInformation + SystemMirrorMemoryInformation + SystemPerformanceTraceInformation + systemObsolete0 + SystemExceptionInformation + SystemCrashDumpStateInformation + SystemKernelDebuggerInformation + SystemContextSwitchInformation + SystemRegistryQuotaInformation + SystemExtendServiceTableInformation + SystemPrioritySeperation + SystemVerifierAddDriverInformation + SystemVerifierRemoveDriverInformation + SystemProcessorIdleInformation + SystemLegacyDriverInformation + SystemCurrentTimeZoneInformation + SystemLookasideInformation + SystemTimeSlipNotification + SystemSessionCreate + SystemSessionDetach + SystemSessionInformation + SystemRangeStartInformation + SystemVerifierInformation + SystemVerifierThunkExtend + SystemSessionProcessInformation + SystemLoadGdiDriverInSystemSpace + SystemNumaProcessorMap + SystemPrefetcherInformation + SystemExtendedProcessInformation + SystemRecommendedSharedDataAlignment + SystemComPlusPackage + SystemNumaAvailableMemory + SystemProcessorPowerInformation + SystemEmulationBasicInformation + SystemEmulationProcessorInformation + SystemExtendedHandleInformation + SystemLostDelayedWriteInformation + SystemBigPoolInformation + SystemSessionPoolTagInformation + SystemSessionMappedViewInformation + SystemHotpatchInformation + SystemObjectSecurityMode + SystemWatchdogTimerHandler + SystemWatchdogTimerInformation + SystemLogicalProcessorInformation + SystemWow64SharedInformationObsolete + SystemRegisterFirmwareTableInformationHandler + SystemFirmwareTableInformation + SystemModuleInformationEx + SystemVerifierTriageInformation + SystemSuperfetchInformation + SystemMemoryListInformation + SystemFileCacheInformationEx + SystemThreadPriorityClientIdInformation + SystemProcessorIdleCycleTimeInformation + SystemVerifierCancellationInformation + SystemProcessorPowerInformationEx + SystemRefTraceInformation + SystemSpecialPoolInformation + SystemProcessIdInformation + SystemErrorPortInformation + SystemBootEnvironmentInformation + SystemHypervisorInformation + SystemVerifierInformationEx + SystemTimeZoneInformation + SystemImageFileExecutionOptionsInformation + SystemCoverageInformation + SystemPrefetchPatchInformation + SystemVerifierFaultsInformation + SystemSystemPartitionInformation + SystemSystemDiskInformation + SystemProcessorPerformanceDistribution + SystemNumaProximityNodeInformation + SystemDynamicTimeZoneInformation + SystemCodeIntegrityInformation + SystemProcessorMicrocodeUpdateInformation + SystemProcessorBrandString + SystemVirtualAddressInformation + SystemLogicalProcessorAndGroupInformation + SystemProcessorCycleTimeInformation + SystemStoreInformation + SystemRegistryAppendString + SystemAitSamplingValue + SystemVhdBootInformation + SystemCpuQuotaInformation + SystemNativeBasicInformation + systemSpare1 + SystemLowPriorityIoInformation + SystemTpmBootEntropyInformation + SystemVerifierCountersInformation + SystemPagedPoolInformationEx + SystemSystemPtesInformationEx + SystemNodeDistanceInformation + SystemAcpiAuditInformation + SystemBasicPerformanceInformation + SystemQueryPerformanceCounterInformation + SystemSessionBigPoolInformation + SystemBootGraphicsInformation + SystemScrubPhysicalMemoryInformation + SystemBadPageInformation + SystemProcessorProfileControlArea + SystemCombinePhysicalMemoryInformation + SystemEntropyInterruptTimingCallback + SystemConsoleInformation + SystemPlatformBinaryInformation + SystemThrottleNotificationInformation + SystemHypervisorProcessorCountInformation + SystemDeviceDataInformation + SystemDeviceDataEnumerationInformation + SystemMemoryTopologyInformation + SystemMemoryChannelInformation + SystemBootLogoInformation + SystemProcessorPerformanceInformationEx + systemSpare0 + SystemSecureBootPolicyInformation + SystemPageFileInformationEx + SystemSecureBootInformation + SystemEntropyInterruptTimingRawInformation + SystemPortableWorkspaceEfiLauncherInformation + SystemFullProcessInformation + SystemKernelDebuggerInformationEx + SystemBootMetadataInformation + SystemSoftRebootInformation + SystemElamCertificateInformation + SystemOfflineDumpConfigInformation + SystemProcessorFeaturesInformation + SystemRegistryReconciliationInformation + SystemEdidInformation + SystemManufacturingInformation + SystemEnergyEstimationConfigInformation + SystemHypervisorDetailInformation + SystemProcessorCycleStatsInformation + SystemVmGenerationCountInformation + SystemTrustedPlatformModuleInformation + SystemKernelDebuggerFlags + SystemCodeIntegrityPolicyInformation + SystemIsolatedUserModeInformation + SystemHardwareSecurityTestInterfaceResultsInformation + SystemSingleModuleInformation + SystemAllowedCpuSetsInformation + SystemDmaProtectionInformation + SystemInterruptCpuSetsInformation + SystemSecureBootPolicyFullInformation + SystemCodeIntegrityPolicyFullInformation + SystemAffinitizedInterruptProcessorInformation + SystemRootSiloInformation +) + +type RTL_PROCESS_MODULE_INFORMATION struct { + Section Handle + MappedBase uintptr + ImageBase uintptr + ImageSize uint32 + Flags uint32 + LoadOrderIndex uint16 + InitOrderIndex uint16 + LoadCount uint16 + OffsetToFileName uint16 + FullPathName [256]byte +} + +type RTL_PROCESS_MODULES struct { + NumberOfModules uint32 + Modules [1]RTL_PROCESS_MODULE_INFORMATION +} + +// Constants for LocalAlloc flags. +const ( + LMEM_FIXED = 0x0 + LMEM_MOVEABLE = 0x2 + LMEM_NOCOMPACT = 0x10 + LMEM_NODISCARD = 0x20 + LMEM_ZEROINIT = 0x40 + LMEM_MODIFY = 0x80 + LMEM_DISCARDABLE = 0xf00 + LMEM_VALID_FLAGS = 0xf72 + LMEM_INVALID_HANDLE = 0x8000 + LHND = LMEM_MOVEABLE | LMEM_ZEROINIT + LPTR = LMEM_FIXED | LMEM_ZEROINIT + NONZEROLHND = LMEM_MOVEABLE + NONZEROLPTR = LMEM_FIXED +) + +// Constants for the CreateNamedPipe-family of functions. +const ( + PIPE_ACCESS_INBOUND = 0x1 + PIPE_ACCESS_OUTBOUND = 0x2 + PIPE_ACCESS_DUPLEX = 0x3 + + PIPE_CLIENT_END = 0x0 + PIPE_SERVER_END = 0x1 + + PIPE_WAIT = 0x0 + PIPE_NOWAIT = 0x1 + PIPE_READMODE_BYTE = 0x0 + PIPE_READMODE_MESSAGE = 0x2 + PIPE_TYPE_BYTE = 0x0 + PIPE_TYPE_MESSAGE = 0x4 + PIPE_ACCEPT_REMOTE_CLIENTS = 0x0 + PIPE_REJECT_REMOTE_CLIENTS = 0x8 + + PIPE_UNLIMITED_INSTANCES = 255 +) + +// Constants for security attributes when opening named pipes. +const ( + SECURITY_ANONYMOUS = SecurityAnonymous << 16 + SECURITY_IDENTIFICATION = SecurityIdentification << 16 + SECURITY_IMPERSONATION = SecurityImpersonation << 16 + SECURITY_DELEGATION = SecurityDelegation << 16 + + SECURITY_CONTEXT_TRACKING = 0x40000 + SECURITY_EFFECTIVE_ONLY = 0x80000 + + SECURITY_SQOS_PRESENT = 0x100000 + SECURITY_VALID_SQOS_FLAGS = 0x1f0000 +) + +// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro. +type ResourceID uint16 + +// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID, +// or a string, to specify a resource or resource type by name. +type ResourceIDOrString interface{} + +// Predefined resource names and types. +var ( + // Predefined names. + CREATEPROCESS_MANIFEST_RESOURCE_ID ResourceID = 1 + ISOLATIONAWARE_MANIFEST_RESOURCE_ID ResourceID = 2 + ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3 + ISOLATIONPOLICY_MANIFEST_RESOURCE_ID ResourceID = 4 + ISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID ResourceID = 5 + MINIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 1 // inclusive + MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID ResourceID = 16 // inclusive + + // Predefined types. + RT_CURSOR ResourceID = 1 + RT_BITMAP ResourceID = 2 + RT_ICON ResourceID = 3 + RT_MENU ResourceID = 4 + RT_DIALOG ResourceID = 5 + RT_STRING ResourceID = 6 + RT_FONTDIR ResourceID = 7 + RT_FONT ResourceID = 8 + RT_ACCELERATOR ResourceID = 9 + RT_RCDATA ResourceID = 10 + RT_MESSAGETABLE ResourceID = 11 + RT_GROUP_CURSOR ResourceID = 12 + RT_GROUP_ICON ResourceID = 14 + RT_VERSION ResourceID = 16 + RT_DLGINCLUDE ResourceID = 17 + RT_PLUGPLAY ResourceID = 19 + RT_VXD ResourceID = 20 + RT_ANICURSOR ResourceID = 21 + RT_ANIICON ResourceID = 22 + RT_HTML ResourceID = 23 + RT_MANIFEST ResourceID = 24 +) + +type VS_FIXEDFILEINFO struct { + Signature uint32 + StrucVersion uint32 + FileVersionMS uint32 + FileVersionLS uint32 + ProductVersionMS uint32 + ProductVersionLS uint32 + FileFlagsMask uint32 + FileFlags uint32 + FileOS uint32 + FileType uint32 + FileSubtype uint32 + FileDateMS uint32 + FileDateLS uint32 +} + +type COAUTHIDENTITY struct { + User *uint16 + UserLength uint32 + Domain *uint16 + DomainLength uint32 + Password *uint16 + PasswordLength uint32 + Flags uint32 +} + +type COAUTHINFO struct { + AuthnSvc uint32 + AuthzSvc uint32 + ServerPrincName *uint16 + AuthnLevel uint32 + ImpersonationLevel uint32 + AuthIdentityData *COAUTHIDENTITY + Capabilities uint32 +} + +type COSERVERINFO struct { + Reserved1 uint32 + Aame *uint16 + AuthInfo *COAUTHINFO + Reserved2 uint32 +} + +type BIND_OPTS3 struct { + CbStruct uint32 + Flags uint32 + Mode uint32 + TickCountDeadline uint32 + TrackFlags uint32 + ClassContext uint32 + Locale uint32 + ServerInfo *COSERVERINFO + Hwnd HWND +} + +const ( + CLSCTX_INPROC_SERVER = 0x1 + CLSCTX_INPROC_HANDLER = 0x2 + CLSCTX_LOCAL_SERVER = 0x4 + CLSCTX_INPROC_SERVER16 = 0x8 + CLSCTX_REMOTE_SERVER = 0x10 + CLSCTX_INPROC_HANDLER16 = 0x20 + CLSCTX_RESERVED1 = 0x40 + CLSCTX_RESERVED2 = 0x80 + CLSCTX_RESERVED3 = 0x100 + CLSCTX_RESERVED4 = 0x200 + CLSCTX_NO_CODE_DOWNLOAD = 0x400 + CLSCTX_RESERVED5 = 0x800 + CLSCTX_NO_CUSTOM_MARSHAL = 0x1000 + CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000 + CLSCTX_NO_FAILURE_LOG = 0x4000 + CLSCTX_DISABLE_AAA = 0x8000 + CLSCTX_ENABLE_AAA = 0x10000 + CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000 + CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000 + CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000 + CLSCTX_ENABLE_CLOAKING = 0x100000 + CLSCTX_APPCONTAINER = 0x400000 + CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000 + CLSCTX_PS_DLL = 0x80000000 + + COINIT_MULTITHREADED = 0x0 + COINIT_APARTMENTTHREADED = 0x2 + COINIT_DISABLE_OLE1DDE = 0x4 + COINIT_SPEED_OVER_MEMORY = 0x8 +) + +// Flag for QueryFullProcessImageName. +const PROCESS_NAME_NATIVE = 1 + +type ModuleInfo struct { + BaseOfDll uintptr + SizeOfImage uint32 + EntryPoint uintptr +} + +const ALL_PROCESSOR_GROUPS = 0xFFFF + +type Rect struct { + Left int32 + Top int32 + Right int32 + Bottom int32 +} + +type GUIThreadInfo struct { + Size uint32 + Flags uint32 + Active HWND + Focus HWND + Capture HWND + MenuOwner HWND + MoveSize HWND + CaretHandle HWND + CaretRect Rect +} + +const ( + DWMWA_NCRENDERING_ENABLED = 1 + DWMWA_NCRENDERING_POLICY = 2 + DWMWA_TRANSITIONS_FORCEDISABLED = 3 + DWMWA_ALLOW_NCPAINT = 4 + DWMWA_CAPTION_BUTTON_BOUNDS = 5 + DWMWA_NONCLIENT_RTL_LAYOUT = 6 + DWMWA_FORCE_ICONIC_REPRESENTATION = 7 + DWMWA_FLIP3D_POLICY = 8 + DWMWA_EXTENDED_FRAME_BOUNDS = 9 + DWMWA_HAS_ICONIC_BITMAP = 10 + DWMWA_DISALLOW_PEEK = 11 + DWMWA_EXCLUDED_FROM_PEEK = 12 + DWMWA_CLOAK = 13 + DWMWA_CLOAKED = 14 + DWMWA_FREEZE_REPRESENTATION = 15 + DWMWA_PASSIVE_UPDATE_MODE = 16 + DWMWA_USE_HOSTBACKDROPBRUSH = 17 + DWMWA_USE_IMMERSIVE_DARK_MODE = 20 + DWMWA_WINDOW_CORNER_PREFERENCE = 33 + DWMWA_BORDER_COLOR = 34 + DWMWA_CAPTION_COLOR = 35 + DWMWA_TEXT_COLOR = 36 + DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37 +) + +type WSAQUERYSET struct { + Size uint32 + ServiceInstanceName *uint16 + ServiceClassId *GUID + Version *WSAVersion + Comment *uint16 + NameSpace uint32 + NSProviderId *GUID + Context *uint16 + NumberOfProtocols uint32 + AfpProtocols *AFProtocols + QueryString *uint16 + NumberOfCsAddrs uint32 + SaBuffer *CSAddrInfo + OutputFlags uint32 + Blob *BLOB +} + +type WSAVersion struct { + Version uint32 + EnumerationOfComparison int32 +} + +type AFProtocols struct { + AddressFamily int32 + Protocol int32 +} + +type CSAddrInfo struct { + LocalAddr SocketAddress + RemoteAddr SocketAddress + SocketType int32 + Protocol int32 +} + +type BLOB struct { + Size uint32 + BlobData *byte +} + +type ComStat struct { + Flags uint32 + CBInQue uint32 + CBOutQue uint32 +} + +type DCB struct { + DCBlength uint32 + BaudRate uint32 + Flags uint32 + wReserved uint16 + XonLim uint16 + XoffLim uint16 + ByteSize uint8 + Parity uint8 + StopBits uint8 + XonChar byte + XoffChar byte + ErrorChar byte + EofChar byte + EvtChar byte + wReserved1 uint16 +} + +// Keyboard Layout Flags. +// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw +const ( + KLF_ACTIVATE = 0x00000001 + KLF_SUBSTITUTE_OK = 0x00000002 + KLF_REORDER = 0x00000008 + KLF_REPLACELANG = 0x00000010 + KLF_NOTELLSHELL = 0x00000080 + KLF_SETFORPROCESS = 0x00000100 +) + +// Virtual Key codes +// https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes +const ( + VK_LBUTTON = 0x01 + VK_RBUTTON = 0x02 + VK_CANCEL = 0x03 + VK_MBUTTON = 0x04 + VK_XBUTTON1 = 0x05 + VK_XBUTTON2 = 0x06 + VK_BACK = 0x08 + VK_TAB = 0x09 + VK_CLEAR = 0x0C + VK_RETURN = 0x0D + VK_SHIFT = 0x10 + VK_CONTROL = 0x11 + VK_MENU = 0x12 + VK_PAUSE = 0x13 + VK_CAPITAL = 0x14 + VK_KANA = 0x15 + VK_HANGEUL = 0x15 + VK_HANGUL = 0x15 + VK_IME_ON = 0x16 + VK_JUNJA = 0x17 + VK_FINAL = 0x18 + VK_HANJA = 0x19 + VK_KANJI = 0x19 + VK_IME_OFF = 0x1A + VK_ESCAPE = 0x1B + VK_CONVERT = 0x1C + VK_NONCONVERT = 0x1D + VK_ACCEPT = 0x1E + VK_MODECHANGE = 0x1F + VK_SPACE = 0x20 + VK_PRIOR = 0x21 + VK_NEXT = 0x22 + VK_END = 0x23 + VK_HOME = 0x24 + VK_LEFT = 0x25 + VK_UP = 0x26 + VK_RIGHT = 0x27 + VK_DOWN = 0x28 + VK_SELECT = 0x29 + VK_PRINT = 0x2A + VK_EXECUTE = 0x2B + VK_SNAPSHOT = 0x2C + VK_INSERT = 0x2D + VK_DELETE = 0x2E + VK_HELP = 0x2F + VK_LWIN = 0x5B + VK_RWIN = 0x5C + VK_APPS = 0x5D + VK_SLEEP = 0x5F + VK_NUMPAD0 = 0x60 + VK_NUMPAD1 = 0x61 + VK_NUMPAD2 = 0x62 + VK_NUMPAD3 = 0x63 + VK_NUMPAD4 = 0x64 + VK_NUMPAD5 = 0x65 + VK_NUMPAD6 = 0x66 + VK_NUMPAD7 = 0x67 + VK_NUMPAD8 = 0x68 + VK_NUMPAD9 = 0x69 + VK_MULTIPLY = 0x6A + VK_ADD = 0x6B + VK_SEPARATOR = 0x6C + VK_SUBTRACT = 0x6D + VK_DECIMAL = 0x6E + VK_DIVIDE = 0x6F + VK_F1 = 0x70 + VK_F2 = 0x71 + VK_F3 = 0x72 + VK_F4 = 0x73 + VK_F5 = 0x74 + VK_F6 = 0x75 + VK_F7 = 0x76 + VK_F8 = 0x77 + VK_F9 = 0x78 + VK_F10 = 0x79 + VK_F11 = 0x7A + VK_F12 = 0x7B + VK_F13 = 0x7C + VK_F14 = 0x7D + VK_F15 = 0x7E + VK_F16 = 0x7F + VK_F17 = 0x80 + VK_F18 = 0x81 + VK_F19 = 0x82 + VK_F20 = 0x83 + VK_F21 = 0x84 + VK_F22 = 0x85 + VK_F23 = 0x86 + VK_F24 = 0x87 + VK_NUMLOCK = 0x90 + VK_SCROLL = 0x91 + VK_OEM_NEC_EQUAL = 0x92 + VK_OEM_FJ_JISHO = 0x92 + VK_OEM_FJ_MASSHOU = 0x93 + VK_OEM_FJ_TOUROKU = 0x94 + VK_OEM_FJ_LOYA = 0x95 + VK_OEM_FJ_ROYA = 0x96 + VK_LSHIFT = 0xA0 + VK_RSHIFT = 0xA1 + VK_LCONTROL = 0xA2 + VK_RCONTROL = 0xA3 + VK_LMENU = 0xA4 + VK_RMENU = 0xA5 + VK_BROWSER_BACK = 0xA6 + VK_BROWSER_FORWARD = 0xA7 + VK_BROWSER_REFRESH = 0xA8 + VK_BROWSER_STOP = 0xA9 + VK_BROWSER_SEARCH = 0xAA + VK_BROWSER_FAVORITES = 0xAB + VK_BROWSER_HOME = 0xAC + VK_VOLUME_MUTE = 0xAD + VK_VOLUME_DOWN = 0xAE + VK_VOLUME_UP = 0xAF + VK_MEDIA_NEXT_TRACK = 0xB0 + VK_MEDIA_PREV_TRACK = 0xB1 + VK_MEDIA_STOP = 0xB2 + VK_MEDIA_PLAY_PAUSE = 0xB3 + VK_LAUNCH_MAIL = 0xB4 + VK_LAUNCH_MEDIA_SELECT = 0xB5 + VK_LAUNCH_APP1 = 0xB6 + VK_LAUNCH_APP2 = 0xB7 + VK_OEM_1 = 0xBA + VK_OEM_PLUS = 0xBB + VK_OEM_COMMA = 0xBC + VK_OEM_MINUS = 0xBD + VK_OEM_PERIOD = 0xBE + VK_OEM_2 = 0xBF + VK_OEM_3 = 0xC0 + VK_OEM_4 = 0xDB + VK_OEM_5 = 0xDC + VK_OEM_6 = 0xDD + VK_OEM_7 = 0xDE + VK_OEM_8 = 0xDF + VK_OEM_AX = 0xE1 + VK_OEM_102 = 0xE2 + VK_ICO_HELP = 0xE3 + VK_ICO_00 = 0xE4 + VK_PROCESSKEY = 0xE5 + VK_ICO_CLEAR = 0xE6 + VK_OEM_RESET = 0xE9 + VK_OEM_JUMP = 0xEA + VK_OEM_PA1 = 0xEB + VK_OEM_PA2 = 0xEC + VK_OEM_PA3 = 0xED + VK_OEM_WSCTRL = 0xEE + VK_OEM_CUSEL = 0xEF + VK_OEM_ATTN = 0xF0 + VK_OEM_FINISH = 0xF1 + VK_OEM_COPY = 0xF2 + VK_OEM_AUTO = 0xF3 + VK_OEM_ENLW = 0xF4 + VK_OEM_BACKTAB = 0xF5 + VK_ATTN = 0xF6 + VK_CRSEL = 0xF7 + VK_EXSEL = 0xF8 + VK_EREOF = 0xF9 + VK_PLAY = 0xFA + VK_ZOOM = 0xFB + VK_NONAME = 0xFC + VK_PA1 = 0xFD + VK_OEM_CLEAR = 0xFE +) + +// Mouse button constants. +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str +const ( + FROM_LEFT_1ST_BUTTON_PRESSED = 0x0001 + RIGHTMOST_BUTTON_PRESSED = 0x0002 + FROM_LEFT_2ND_BUTTON_PRESSED = 0x0004 + FROM_LEFT_3RD_BUTTON_PRESSED = 0x0008 + FROM_LEFT_4TH_BUTTON_PRESSED = 0x0010 +) + +// Control key state constaints. +// https://docs.microsoft.com/en-us/windows/console/key-event-record-str +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str +const ( + CAPSLOCK_ON = 0x0080 + ENHANCED_KEY = 0x0100 + LEFT_ALT_PRESSED = 0x0002 + LEFT_CTRL_PRESSED = 0x0008 + NUMLOCK_ON = 0x0020 + RIGHT_ALT_PRESSED = 0x0001 + RIGHT_CTRL_PRESSED = 0x0004 + SCROLLLOCK_ON = 0x0040 + SHIFT_PRESSED = 0x0010 +) + +// Mouse event record event flags. +// https://docs.microsoft.com/en-us/windows/console/mouse-event-record-str +const ( + MOUSE_MOVED = 0x0001 + DOUBLE_CLICK = 0x0002 + MOUSE_WHEELED = 0x0004 + MOUSE_HWHEELED = 0x0008 +) + +// Input Record Event Types +// https://learn.microsoft.com/en-us/windows/console/input-record-str +const ( + FOCUS_EVENT = 0x0010 + KEY_EVENT = 0x0001 + MENU_EVENT = 0x0008 + MOUSE_EVENT = 0x0002 + WINDOW_BUFFER_SIZE_EVENT = 0x0004 +) + +// The processor features to be tested for IsProcessorFeaturePresent, see +// https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-isprocessorfeaturepresent +const ( + PF_ARM_64BIT_LOADSTORE_ATOMIC = 25 + PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE = 24 + PF_ARM_EXTERNAL_CACHE_AVAILABLE = 26 + PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE = 27 + PF_ARM_VFP_32_REGISTERS_AVAILABLE = 18 + PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7 + PF_CHANNELS_ENABLED = 16 + PF_COMPARE_EXCHANGE_DOUBLE = 2 + PF_COMPARE_EXCHANGE128 = 14 + PF_COMPARE64_EXCHANGE128 = 15 + PF_FASTFAIL_AVAILABLE = 23 + PF_FLOATING_POINT_EMULATED = 1 + PF_FLOATING_POINT_PRECISION_ERRATA = 0 + PF_MMX_INSTRUCTIONS_AVAILABLE = 3 + PF_NX_ENABLED = 12 + PF_PAE_ENABLED = 9 + PF_RDTSC_INSTRUCTION_AVAILABLE = 8 + PF_RDWRFSGSBASE_AVAILABLE = 22 + PF_SECOND_LEVEL_ADDRESS_TRANSLATION = 20 + PF_SSE3_INSTRUCTIONS_AVAILABLE = 13 + PF_SSSE3_INSTRUCTIONS_AVAILABLE = 36 + PF_SSE4_1_INSTRUCTIONS_AVAILABLE = 37 + PF_SSE4_2_INSTRUCTIONS_AVAILABLE = 38 + PF_AVX_INSTRUCTIONS_AVAILABLE = 39 + PF_AVX2_INSTRUCTIONS_AVAILABLE = 40 + PF_AVX512F_INSTRUCTIONS_AVAILABLE = 41 + PF_VIRT_FIRMWARE_ENABLED = 21 + PF_XMMI_INSTRUCTIONS_AVAILABLE = 6 + PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 + PF_XSAVE_ENABLED = 17 + PF_ARM_V8_INSTRUCTIONS_AVAILABLE = 29 + PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE = 30 + PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE = 31 + PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE = 34 + PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE = 43 + PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE = 44 + PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE = 45 + PF_ARM_SVE_INSTRUCTIONS_AVAILABLE = 46 + PF_ARM_SVE2_INSTRUCTIONS_AVAILABLE = 47 + PF_ARM_SVE2_1_INSTRUCTIONS_AVAILABLE = 48 + PF_ARM_SVE_AES_INSTRUCTIONS_AVAILABLE = 49 + PF_ARM_SVE_PMULL128_INSTRUCTIONS_AVAILABLE = 50 + PF_ARM_SVE_BITPERM_INSTRUCTIONS_AVAILABLE = 51 + PF_ARM_SVE_BF16_INSTRUCTIONS_AVAILABLE = 52 + PF_ARM_SVE_EBF16_INSTRUCTIONS_AVAILABLE = 53 + PF_ARM_SVE_B16B16_INSTRUCTIONS_AVAILABLE = 54 + PF_ARM_SVE_SHA3_INSTRUCTIONS_AVAILABLE = 55 + PF_ARM_SVE_SM4_INSTRUCTIONS_AVAILABLE = 56 + PF_ARM_SVE_I8MM_INSTRUCTIONS_AVAILABLE = 57 + PF_ARM_SVE_F32MM_INSTRUCTIONS_AVAILABLE = 58 + PF_ARM_SVE_F64MM_INSTRUCTIONS_AVAILABLE = 59 + PF_BMI2_INSTRUCTIONS_AVAILABLE = 60 + PF_MOVDIR64B_INSTRUCTION_AVAILABLE = 61 + PF_ARM_LSE2_AVAILABLE = 62 + PF_ARM_SHA3_INSTRUCTIONS_AVAILABLE = 64 + PF_ARM_SHA512_INSTRUCTIONS_AVAILABLE = 65 + PF_ARM_V82_I8MM_INSTRUCTIONS_AVAILABLE = 66 + PF_ARM_V82_FP16_INSTRUCTIONS_AVAILABLE = 67 + PF_ARM_V86_BF16_INSTRUCTIONS_AVAILABLE = 68 + PF_ARM_V86_EBF16_INSTRUCTIONS_AVAILABLE = 69 + PF_ARM_SME_INSTRUCTIONS_AVAILABLE = 70 + PF_ARM_SME2_INSTRUCTIONS_AVAILABLE = 71 + PF_ARM_SME2_1_INSTRUCTIONS_AVAILABLE = 72 + PF_ARM_SME2_2_INSTRUCTIONS_AVAILABLE = 73 + PF_ARM_SME_AES_INSTRUCTIONS_AVAILABLE = 74 + PF_ARM_SME_SBITPERM_INSTRUCTIONS_AVAILABLE = 75 + PF_ARM_SME_SF8MM4_INSTRUCTIONS_AVAILABLE = 76 + PF_ARM_SME_SF8MM8_INSTRUCTIONS_AVAILABLE = 77 + PF_ARM_SME_SF8DP2_INSTRUCTIONS_AVAILABLE = 78 + PF_ARM_SME_SF8DP4_INSTRUCTIONS_AVAILABLE = 79 + PF_ARM_SME_SF8FMA_INSTRUCTIONS_AVAILABLE = 80 + PF_ARM_SME_F8F32_INSTRUCTIONS_AVAILABLE = 81 + PF_ARM_SME_F8F16_INSTRUCTIONS_AVAILABLE = 82 + PF_ARM_SME_F16F16_INSTRUCTIONS_AVAILABLE = 83 + PF_ARM_SME_B16B16_INSTRUCTIONS_AVAILABLE = 84 + PF_ARM_SME_F64F64_INSTRUCTIONS_AVAILABLE = 85 + PF_ARM_SME_I16I64_INSTRUCTIONS_AVAILABLE = 86 + PF_ARM_SME_LUTv2_INSTRUCTIONS_AVAILABLE = 87 + PF_ARM_SME_FA64_INSTRUCTIONS_AVAILABLE = 88 + PF_UMONITOR_INSTRUCTION_AVAILABLE = 89 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_386.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_386.go new file mode 100644 index 0000000..8bce3e2 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_386.go @@ -0,0 +1,35 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 + _ uint32 // pad to 8 byte boundary +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_amd64.go new file mode 100644 index 0000000..fdddc0c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_amd64.go @@ -0,0 +1,34 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm.go new file mode 100644 index 0000000..321872c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm.go @@ -0,0 +1,35 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 + _ uint32 // pad to 8 byte boundary +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm64.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm64.go new file mode 100644 index 0000000..fdddc0c --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/types_windows_arm64.go @@ -0,0 +1,34 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zerrors_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zerrors_windows.go new file mode 100644 index 0000000..0cf658f --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -0,0 +1,9468 @@ +// Code generated by 'mkerrors.bash'; DO NOT EDIT. + +package windows + +import "syscall" + +const ( + FACILITY_NULL = 0 + FACILITY_RPC = 1 + FACILITY_DISPATCH = 2 + FACILITY_STORAGE = 3 + FACILITY_ITF = 4 + FACILITY_WIN32 = 7 + FACILITY_WINDOWS = 8 + FACILITY_SSPI = 9 + FACILITY_SECURITY = 9 + FACILITY_CONTROL = 10 + FACILITY_CERT = 11 + FACILITY_INTERNET = 12 + FACILITY_MEDIASERVER = 13 + FACILITY_MSMQ = 14 + FACILITY_SETUPAPI = 15 + FACILITY_SCARD = 16 + FACILITY_COMPLUS = 17 + FACILITY_AAF = 18 + FACILITY_URT = 19 + FACILITY_ACS = 20 + FACILITY_DPLAY = 21 + FACILITY_UMI = 22 + FACILITY_SXS = 23 + FACILITY_WINDOWS_CE = 24 + FACILITY_HTTP = 25 + FACILITY_USERMODE_COMMONLOG = 26 + FACILITY_WER = 27 + FACILITY_USERMODE_FILTER_MANAGER = 31 + FACILITY_BACKGROUNDCOPY = 32 + FACILITY_CONFIGURATION = 33 + FACILITY_WIA = 33 + FACILITY_STATE_MANAGEMENT = 34 + FACILITY_METADIRECTORY = 35 + FACILITY_WINDOWSUPDATE = 36 + FACILITY_DIRECTORYSERVICE = 37 + FACILITY_GRAPHICS = 38 + FACILITY_SHELL = 39 + FACILITY_NAP = 39 + FACILITY_TPM_SERVICES = 40 + FACILITY_TPM_SOFTWARE = 41 + FACILITY_UI = 42 + FACILITY_XAML = 43 + FACILITY_ACTION_QUEUE = 44 + FACILITY_PLA = 48 + FACILITY_WINDOWS_SETUP = 48 + FACILITY_FVE = 49 + FACILITY_FWP = 50 + FACILITY_WINRM = 51 + FACILITY_NDIS = 52 + FACILITY_USERMODE_HYPERVISOR = 53 + FACILITY_CMI = 54 + FACILITY_USERMODE_VIRTUALIZATION = 55 + FACILITY_USERMODE_VOLMGR = 56 + FACILITY_BCD = 57 + FACILITY_USERMODE_VHD = 58 + FACILITY_USERMODE_HNS = 59 + FACILITY_SDIAG = 60 + FACILITY_WEBSERVICES = 61 + FACILITY_WINPE = 61 + FACILITY_WPN = 62 + FACILITY_WINDOWS_STORE = 63 + FACILITY_INPUT = 64 + FACILITY_EAP = 66 + FACILITY_WINDOWS_DEFENDER = 80 + FACILITY_OPC = 81 + FACILITY_XPS = 82 + FACILITY_MBN = 84 + FACILITY_POWERSHELL = 84 + FACILITY_RAS = 83 + FACILITY_P2P_INT = 98 + FACILITY_P2P = 99 + FACILITY_DAF = 100 + FACILITY_BLUETOOTH_ATT = 101 + FACILITY_AUDIO = 102 + FACILITY_STATEREPOSITORY = 103 + FACILITY_VISUALCPP = 109 + FACILITY_SCRIPT = 112 + FACILITY_PARSE = 113 + FACILITY_BLB = 120 + FACILITY_BLB_CLI = 121 + FACILITY_WSBAPP = 122 + FACILITY_BLBUI = 128 + FACILITY_USN = 129 + FACILITY_USERMODE_VOLSNAP = 130 + FACILITY_TIERING = 131 + FACILITY_WSB_ONLINE = 133 + FACILITY_ONLINE_ID = 134 + FACILITY_DEVICE_UPDATE_AGENT = 135 + FACILITY_DRVSERVICING = 136 + FACILITY_DLS = 153 + FACILITY_DELIVERY_OPTIMIZATION = 208 + FACILITY_USERMODE_SPACES = 231 + FACILITY_USER_MODE_SECURITY_CORE = 232 + FACILITY_USERMODE_LICENSING = 234 + FACILITY_SOS = 160 + FACILITY_DEBUGGERS = 176 + FACILITY_SPP = 256 + FACILITY_RESTORE = 256 + FACILITY_DMSERVER = 256 + FACILITY_DEPLOYMENT_SERVICES_SERVER = 257 + FACILITY_DEPLOYMENT_SERVICES_IMAGING = 258 + FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT = 259 + FACILITY_DEPLOYMENT_SERVICES_UTIL = 260 + FACILITY_DEPLOYMENT_SERVICES_BINLSVC = 261 + FACILITY_DEPLOYMENT_SERVICES_PXE = 263 + FACILITY_DEPLOYMENT_SERVICES_TFTP = 264 + FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272 + FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING = 278 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER = 289 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT = 290 + FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER = 293 + FACILITY_LINGUISTIC_SERVICES = 305 + FACILITY_AUDIOSTREAMING = 1094 + FACILITY_ACCELERATOR = 1536 + FACILITY_WMAAECMA = 1996 + FACILITY_DIRECTMUSIC = 2168 + FACILITY_DIRECT3D10 = 2169 + FACILITY_DXGI = 2170 + FACILITY_DXGI_DDI = 2171 + FACILITY_DIRECT3D11 = 2172 + FACILITY_DIRECT3D11_DEBUG = 2173 + FACILITY_DIRECT3D12 = 2174 + FACILITY_DIRECT3D12_DEBUG = 2175 + FACILITY_LEAP = 2184 + FACILITY_AUDCLNT = 2185 + FACILITY_WINCODEC_DWRITE_DWM = 2200 + FACILITY_WINML = 2192 + FACILITY_DIRECT2D = 2201 + FACILITY_DEFRAG = 2304 + FACILITY_USERMODE_SDBUS = 2305 + FACILITY_JSCRIPT = 2306 + FACILITY_PIDGENX = 2561 + FACILITY_EAS = 85 + FACILITY_WEB = 885 + FACILITY_WEB_SOCKET = 886 + FACILITY_MOBILE = 1793 + FACILITY_SQLITE = 1967 + FACILITY_UTC = 1989 + FACILITY_WEP = 2049 + FACILITY_SYNCENGINE = 2050 + FACILITY_XBOX = 2339 + FACILITY_GAME = 2340 + FACILITY_PIX = 2748 + ERROR_SUCCESS syscall.Errno = 0 + NO_ERROR = 0 + SEC_E_OK Handle = 0x00000000 + ERROR_INVALID_FUNCTION syscall.Errno = 1 + ERROR_FILE_NOT_FOUND syscall.Errno = 2 + ERROR_PATH_NOT_FOUND syscall.Errno = 3 + ERROR_TOO_MANY_OPEN_FILES syscall.Errno = 4 + ERROR_ACCESS_DENIED syscall.Errno = 5 + ERROR_INVALID_HANDLE syscall.Errno = 6 + ERROR_ARENA_TRASHED syscall.Errno = 7 + ERROR_NOT_ENOUGH_MEMORY syscall.Errno = 8 + ERROR_INVALID_BLOCK syscall.Errno = 9 + ERROR_BAD_ENVIRONMENT syscall.Errno = 10 + ERROR_BAD_FORMAT syscall.Errno = 11 + ERROR_INVALID_ACCESS syscall.Errno = 12 + ERROR_INVALID_DATA syscall.Errno = 13 + ERROR_OUTOFMEMORY syscall.Errno = 14 + ERROR_INVALID_DRIVE syscall.Errno = 15 + ERROR_CURRENT_DIRECTORY syscall.Errno = 16 + ERROR_NOT_SAME_DEVICE syscall.Errno = 17 + ERROR_NO_MORE_FILES syscall.Errno = 18 + ERROR_WRITE_PROTECT syscall.Errno = 19 + ERROR_BAD_UNIT syscall.Errno = 20 + ERROR_NOT_READY syscall.Errno = 21 + ERROR_BAD_COMMAND syscall.Errno = 22 + ERROR_CRC syscall.Errno = 23 + ERROR_BAD_LENGTH syscall.Errno = 24 + ERROR_SEEK syscall.Errno = 25 + ERROR_NOT_DOS_DISK syscall.Errno = 26 + ERROR_SECTOR_NOT_FOUND syscall.Errno = 27 + ERROR_OUT_OF_PAPER syscall.Errno = 28 + ERROR_WRITE_FAULT syscall.Errno = 29 + ERROR_READ_FAULT syscall.Errno = 30 + ERROR_GEN_FAILURE syscall.Errno = 31 + ERROR_SHARING_VIOLATION syscall.Errno = 32 + ERROR_LOCK_VIOLATION syscall.Errno = 33 + ERROR_WRONG_DISK syscall.Errno = 34 + ERROR_SHARING_BUFFER_EXCEEDED syscall.Errno = 36 + ERROR_HANDLE_EOF syscall.Errno = 38 + ERROR_HANDLE_DISK_FULL syscall.Errno = 39 + ERROR_NOT_SUPPORTED syscall.Errno = 50 + ERROR_REM_NOT_LIST syscall.Errno = 51 + ERROR_DUP_NAME syscall.Errno = 52 + ERROR_BAD_NETPATH syscall.Errno = 53 + ERROR_NETWORK_BUSY syscall.Errno = 54 + ERROR_DEV_NOT_EXIST syscall.Errno = 55 + ERROR_TOO_MANY_CMDS syscall.Errno = 56 + ERROR_ADAP_HDW_ERR syscall.Errno = 57 + ERROR_BAD_NET_RESP syscall.Errno = 58 + ERROR_UNEXP_NET_ERR syscall.Errno = 59 + ERROR_BAD_REM_ADAP syscall.Errno = 60 + ERROR_PRINTQ_FULL syscall.Errno = 61 + ERROR_NO_SPOOL_SPACE syscall.Errno = 62 + ERROR_PRINT_CANCELLED syscall.Errno = 63 + ERROR_NETNAME_DELETED syscall.Errno = 64 + ERROR_NETWORK_ACCESS_DENIED syscall.Errno = 65 + ERROR_BAD_DEV_TYPE syscall.Errno = 66 + ERROR_BAD_NET_NAME syscall.Errno = 67 + ERROR_TOO_MANY_NAMES syscall.Errno = 68 + ERROR_TOO_MANY_SESS syscall.Errno = 69 + ERROR_SHARING_PAUSED syscall.Errno = 70 + ERROR_REQ_NOT_ACCEP syscall.Errno = 71 + ERROR_REDIR_PAUSED syscall.Errno = 72 + ERROR_FILE_EXISTS syscall.Errno = 80 + ERROR_CANNOT_MAKE syscall.Errno = 82 + ERROR_FAIL_I24 syscall.Errno = 83 + ERROR_OUT_OF_STRUCTURES syscall.Errno = 84 + ERROR_ALREADY_ASSIGNED syscall.Errno = 85 + ERROR_INVALID_PASSWORD syscall.Errno = 86 + ERROR_INVALID_PARAMETER syscall.Errno = 87 + ERROR_NET_WRITE_FAULT syscall.Errno = 88 + ERROR_NO_PROC_SLOTS syscall.Errno = 89 + ERROR_TOO_MANY_SEMAPHORES syscall.Errno = 100 + ERROR_EXCL_SEM_ALREADY_OWNED syscall.Errno = 101 + ERROR_SEM_IS_SET syscall.Errno = 102 + ERROR_TOO_MANY_SEM_REQUESTS syscall.Errno = 103 + ERROR_INVALID_AT_INTERRUPT_TIME syscall.Errno = 104 + ERROR_SEM_OWNER_DIED syscall.Errno = 105 + ERROR_SEM_USER_LIMIT syscall.Errno = 106 + ERROR_DISK_CHANGE syscall.Errno = 107 + ERROR_DRIVE_LOCKED syscall.Errno = 108 + ERROR_BROKEN_PIPE syscall.Errno = 109 + ERROR_OPEN_FAILED syscall.Errno = 110 + ERROR_BUFFER_OVERFLOW syscall.Errno = 111 + ERROR_DISK_FULL syscall.Errno = 112 + ERROR_NO_MORE_SEARCH_HANDLES syscall.Errno = 113 + ERROR_INVALID_TARGET_HANDLE syscall.Errno = 114 + ERROR_INVALID_CATEGORY syscall.Errno = 117 + ERROR_INVALID_VERIFY_SWITCH syscall.Errno = 118 + ERROR_BAD_DRIVER_LEVEL syscall.Errno = 119 + ERROR_CALL_NOT_IMPLEMENTED syscall.Errno = 120 + ERROR_SEM_TIMEOUT syscall.Errno = 121 + ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 + ERROR_INVALID_NAME syscall.Errno = 123 + ERROR_INVALID_LEVEL syscall.Errno = 124 + ERROR_NO_VOLUME_LABEL syscall.Errno = 125 + ERROR_MOD_NOT_FOUND syscall.Errno = 126 + ERROR_PROC_NOT_FOUND syscall.Errno = 127 + ERROR_WAIT_NO_CHILDREN syscall.Errno = 128 + ERROR_CHILD_NOT_COMPLETE syscall.Errno = 129 + ERROR_DIRECT_ACCESS_HANDLE syscall.Errno = 130 + ERROR_NEGATIVE_SEEK syscall.Errno = 131 + ERROR_SEEK_ON_DEVICE syscall.Errno = 132 + ERROR_IS_JOIN_TARGET syscall.Errno = 133 + ERROR_IS_JOINED syscall.Errno = 134 + ERROR_IS_SUBSTED syscall.Errno = 135 + ERROR_NOT_JOINED syscall.Errno = 136 + ERROR_NOT_SUBSTED syscall.Errno = 137 + ERROR_JOIN_TO_JOIN syscall.Errno = 138 + ERROR_SUBST_TO_SUBST syscall.Errno = 139 + ERROR_JOIN_TO_SUBST syscall.Errno = 140 + ERROR_SUBST_TO_JOIN syscall.Errno = 141 + ERROR_BUSY_DRIVE syscall.Errno = 142 + ERROR_SAME_DRIVE syscall.Errno = 143 + ERROR_DIR_NOT_ROOT syscall.Errno = 144 + ERROR_DIR_NOT_EMPTY syscall.Errno = 145 + ERROR_IS_SUBST_PATH syscall.Errno = 146 + ERROR_IS_JOIN_PATH syscall.Errno = 147 + ERROR_PATH_BUSY syscall.Errno = 148 + ERROR_IS_SUBST_TARGET syscall.Errno = 149 + ERROR_SYSTEM_TRACE syscall.Errno = 150 + ERROR_INVALID_EVENT_COUNT syscall.Errno = 151 + ERROR_TOO_MANY_MUXWAITERS syscall.Errno = 152 + ERROR_INVALID_LIST_FORMAT syscall.Errno = 153 + ERROR_LABEL_TOO_LONG syscall.Errno = 154 + ERROR_TOO_MANY_TCBS syscall.Errno = 155 + ERROR_SIGNAL_REFUSED syscall.Errno = 156 + ERROR_DISCARDED syscall.Errno = 157 + ERROR_NOT_LOCKED syscall.Errno = 158 + ERROR_BAD_THREADID_ADDR syscall.Errno = 159 + ERROR_BAD_ARGUMENTS syscall.Errno = 160 + ERROR_BAD_PATHNAME syscall.Errno = 161 + ERROR_SIGNAL_PENDING syscall.Errno = 162 + ERROR_MAX_THRDS_REACHED syscall.Errno = 164 + ERROR_LOCK_FAILED syscall.Errno = 167 + ERROR_BUSY syscall.Errno = 170 + ERROR_DEVICE_SUPPORT_IN_PROGRESS syscall.Errno = 171 + ERROR_CANCEL_VIOLATION syscall.Errno = 173 + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED syscall.Errno = 174 + ERROR_INVALID_SEGMENT_NUMBER syscall.Errno = 180 + ERROR_INVALID_ORDINAL syscall.Errno = 182 + ERROR_ALREADY_EXISTS syscall.Errno = 183 + ERROR_INVALID_FLAG_NUMBER syscall.Errno = 186 + ERROR_SEM_NOT_FOUND syscall.Errno = 187 + ERROR_INVALID_STARTING_CODESEG syscall.Errno = 188 + ERROR_INVALID_STACKSEG syscall.Errno = 189 + ERROR_INVALID_MODULETYPE syscall.Errno = 190 + ERROR_INVALID_EXE_SIGNATURE syscall.Errno = 191 + ERROR_EXE_MARKED_INVALID syscall.Errno = 192 + ERROR_BAD_EXE_FORMAT syscall.Errno = 193 + ERROR_ITERATED_DATA_EXCEEDS_64k syscall.Errno = 194 + ERROR_INVALID_MINALLOCSIZE syscall.Errno = 195 + ERROR_DYNLINK_FROM_INVALID_RING syscall.Errno = 196 + ERROR_IOPL_NOT_ENABLED syscall.Errno = 197 + ERROR_INVALID_SEGDPL syscall.Errno = 198 + ERROR_AUTODATASEG_EXCEEDS_64k syscall.Errno = 199 + ERROR_RING2SEG_MUST_BE_MOVABLE syscall.Errno = 200 + ERROR_RELOC_CHAIN_XEEDS_SEGLIM syscall.Errno = 201 + ERROR_INFLOOP_IN_RELOC_CHAIN syscall.Errno = 202 + ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 + ERROR_NO_SIGNAL_SENT syscall.Errno = 205 + ERROR_FILENAME_EXCED_RANGE syscall.Errno = 206 + ERROR_RING2_STACK_IN_USE syscall.Errno = 207 + ERROR_META_EXPANSION_TOO_LONG syscall.Errno = 208 + ERROR_INVALID_SIGNAL_NUMBER syscall.Errno = 209 + ERROR_THREAD_1_INACTIVE syscall.Errno = 210 + ERROR_LOCKED syscall.Errno = 212 + ERROR_TOO_MANY_MODULES syscall.Errno = 214 + ERROR_NESTING_NOT_ALLOWED syscall.Errno = 215 + ERROR_EXE_MACHINE_TYPE_MISMATCH syscall.Errno = 216 + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY syscall.Errno = 217 + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY syscall.Errno = 218 + ERROR_FILE_CHECKED_OUT syscall.Errno = 220 + ERROR_CHECKOUT_REQUIRED syscall.Errno = 221 + ERROR_BAD_FILE_TYPE syscall.Errno = 222 + ERROR_FILE_TOO_LARGE syscall.Errno = 223 + ERROR_FORMS_AUTH_REQUIRED syscall.Errno = 224 + ERROR_VIRUS_INFECTED syscall.Errno = 225 + ERROR_VIRUS_DELETED syscall.Errno = 226 + ERROR_PIPE_LOCAL syscall.Errno = 229 + ERROR_BAD_PIPE syscall.Errno = 230 + ERROR_PIPE_BUSY syscall.Errno = 231 + ERROR_NO_DATA syscall.Errno = 232 + ERROR_PIPE_NOT_CONNECTED syscall.Errno = 233 + ERROR_MORE_DATA syscall.Errno = 234 + ERROR_NO_WORK_DONE syscall.Errno = 235 + ERROR_VC_DISCONNECTED syscall.Errno = 240 + ERROR_INVALID_EA_NAME syscall.Errno = 254 + ERROR_EA_LIST_INCONSISTENT syscall.Errno = 255 + WAIT_TIMEOUT syscall.Errno = 258 + ERROR_NO_MORE_ITEMS syscall.Errno = 259 + ERROR_CANNOT_COPY syscall.Errno = 266 + ERROR_DIRECTORY syscall.Errno = 267 + ERROR_EAS_DIDNT_FIT syscall.Errno = 275 + ERROR_EA_FILE_CORRUPT syscall.Errno = 276 + ERROR_EA_TABLE_FULL syscall.Errno = 277 + ERROR_INVALID_EA_HANDLE syscall.Errno = 278 + ERROR_EAS_NOT_SUPPORTED syscall.Errno = 282 + ERROR_NOT_OWNER syscall.Errno = 288 + ERROR_TOO_MANY_POSTS syscall.Errno = 298 + ERROR_PARTIAL_COPY syscall.Errno = 299 + ERROR_OPLOCK_NOT_GRANTED syscall.Errno = 300 + ERROR_INVALID_OPLOCK_PROTOCOL syscall.Errno = 301 + ERROR_DISK_TOO_FRAGMENTED syscall.Errno = 302 + ERROR_DELETE_PENDING syscall.Errno = 303 + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING syscall.Errno = 304 + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME syscall.Errno = 305 + ERROR_SECURITY_STREAM_IS_INCONSISTENT syscall.Errno = 306 + ERROR_INVALID_LOCK_RANGE syscall.Errno = 307 + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT syscall.Errno = 308 + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED syscall.Errno = 309 + ERROR_INVALID_EXCEPTION_HANDLER syscall.Errno = 310 + ERROR_DUPLICATE_PRIVILEGES syscall.Errno = 311 + ERROR_NO_RANGES_PROCESSED syscall.Errno = 312 + ERROR_NOT_ALLOWED_ON_SYSTEM_FILE syscall.Errno = 313 + ERROR_DISK_RESOURCES_EXHAUSTED syscall.Errno = 314 + ERROR_INVALID_TOKEN syscall.Errno = 315 + ERROR_DEVICE_FEATURE_NOT_SUPPORTED syscall.Errno = 316 + ERROR_MR_MID_NOT_FOUND syscall.Errno = 317 + ERROR_SCOPE_NOT_FOUND syscall.Errno = 318 + ERROR_UNDEFINED_SCOPE syscall.Errno = 319 + ERROR_INVALID_CAP syscall.Errno = 320 + ERROR_DEVICE_UNREACHABLE syscall.Errno = 321 + ERROR_DEVICE_NO_RESOURCES syscall.Errno = 322 + ERROR_DATA_CHECKSUM_ERROR syscall.Errno = 323 + ERROR_INTERMIXED_KERNEL_EA_OPERATION syscall.Errno = 324 + ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED syscall.Errno = 326 + ERROR_OFFSET_ALIGNMENT_VIOLATION syscall.Errno = 327 + ERROR_INVALID_FIELD_IN_PARAMETER_LIST syscall.Errno = 328 + ERROR_OPERATION_IN_PROGRESS syscall.Errno = 329 + ERROR_BAD_DEVICE_PATH syscall.Errno = 330 + ERROR_TOO_MANY_DESCRIPTORS syscall.Errno = 331 + ERROR_SCRUB_DATA_DISABLED syscall.Errno = 332 + ERROR_NOT_REDUNDANT_STORAGE syscall.Errno = 333 + ERROR_RESIDENT_FILE_NOT_SUPPORTED syscall.Errno = 334 + ERROR_COMPRESSED_FILE_NOT_SUPPORTED syscall.Errno = 335 + ERROR_DIRECTORY_NOT_SUPPORTED syscall.Errno = 336 + ERROR_NOT_READ_FROM_COPY syscall.Errno = 337 + ERROR_FT_WRITE_FAILURE syscall.Errno = 338 + ERROR_FT_DI_SCAN_REQUIRED syscall.Errno = 339 + ERROR_INVALID_KERNEL_INFO_VERSION syscall.Errno = 340 + ERROR_INVALID_PEP_INFO_VERSION syscall.Errno = 341 + ERROR_OBJECT_NOT_EXTERNALLY_BACKED syscall.Errno = 342 + ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN syscall.Errno = 343 + ERROR_COMPRESSION_NOT_BENEFICIAL syscall.Errno = 344 + ERROR_STORAGE_TOPOLOGY_ID_MISMATCH syscall.Errno = 345 + ERROR_BLOCKED_BY_PARENTAL_CONTROLS syscall.Errno = 346 + ERROR_BLOCK_TOO_MANY_REFERENCES syscall.Errno = 347 + ERROR_MARKED_TO_DISALLOW_WRITES syscall.Errno = 348 + ERROR_ENCLAVE_FAILURE syscall.Errno = 349 + ERROR_FAIL_NOACTION_REBOOT syscall.Errno = 350 + ERROR_FAIL_SHUTDOWN syscall.Errno = 351 + ERROR_FAIL_RESTART syscall.Errno = 352 + ERROR_MAX_SESSIONS_REACHED syscall.Errno = 353 + ERROR_NETWORK_ACCESS_DENIED_EDP syscall.Errno = 354 + ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL syscall.Errno = 355 + ERROR_EDP_POLICY_DENIES_OPERATION syscall.Errno = 356 + ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED syscall.Errno = 357 + ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT syscall.Errno = 358 + ERROR_DEVICE_IN_MAINTENANCE syscall.Errno = 359 + ERROR_NOT_SUPPORTED_ON_DAX syscall.Errno = 360 + ERROR_DAX_MAPPING_EXISTS syscall.Errno = 361 + ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING syscall.Errno = 362 + ERROR_CLOUD_FILE_METADATA_CORRUPT syscall.Errno = 363 + ERROR_CLOUD_FILE_METADATA_TOO_LARGE syscall.Errno = 364 + ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE syscall.Errno = 365 + ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH syscall.Errno = 366 + ERROR_CHILD_PROCESS_BLOCKED syscall.Errno = 367 + ERROR_STORAGE_LOST_DATA_PERSISTENCE syscall.Errno = 368 + ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE syscall.Errno = 369 + ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT syscall.Errno = 370 + ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY syscall.Errno = 371 + ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN syscall.Errno = 372 + ERROR_GDI_HANDLE_LEAK syscall.Errno = 373 + ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS syscall.Errno = 374 + ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED syscall.Errno = 375 + ERROR_NOT_A_CLOUD_FILE syscall.Errno = 376 + ERROR_CLOUD_FILE_NOT_IN_SYNC syscall.Errno = 377 + ERROR_CLOUD_FILE_ALREADY_CONNECTED syscall.Errno = 378 + ERROR_CLOUD_FILE_NOT_SUPPORTED syscall.Errno = 379 + ERROR_CLOUD_FILE_INVALID_REQUEST syscall.Errno = 380 + ERROR_CLOUD_FILE_READ_ONLY_VOLUME syscall.Errno = 381 + ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY syscall.Errno = 382 + ERROR_CLOUD_FILE_VALIDATION_FAILED syscall.Errno = 383 + ERROR_SMB1_NOT_AVAILABLE syscall.Errno = 384 + ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION syscall.Errno = 385 + ERROR_CLOUD_FILE_AUTHENTICATION_FAILED syscall.Errno = 386 + ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES syscall.Errno = 387 + ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE syscall.Errno = 388 + ERROR_CLOUD_FILE_UNSUCCESSFUL syscall.Errno = 389 + ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT syscall.Errno = 390 + ERROR_CLOUD_FILE_IN_USE syscall.Errno = 391 + ERROR_CLOUD_FILE_PINNED syscall.Errno = 392 + ERROR_CLOUD_FILE_REQUEST_ABORTED syscall.Errno = 393 + ERROR_CLOUD_FILE_PROPERTY_CORRUPT syscall.Errno = 394 + ERROR_CLOUD_FILE_ACCESS_DENIED syscall.Errno = 395 + ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS syscall.Errno = 396 + ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT syscall.Errno = 397 + ERROR_CLOUD_FILE_REQUEST_CANCELED syscall.Errno = 398 + ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED syscall.Errno = 399 + ERROR_THREAD_MODE_ALREADY_BACKGROUND syscall.Errno = 400 + ERROR_THREAD_MODE_NOT_BACKGROUND syscall.Errno = 401 + ERROR_PROCESS_MODE_ALREADY_BACKGROUND syscall.Errno = 402 + ERROR_PROCESS_MODE_NOT_BACKGROUND syscall.Errno = 403 + ERROR_CLOUD_FILE_PROVIDER_TERMINATED syscall.Errno = 404 + ERROR_NOT_A_CLOUD_SYNC_ROOT syscall.Errno = 405 + ERROR_FILE_PROTECTED_UNDER_DPL syscall.Errno = 406 + ERROR_VOLUME_NOT_CLUSTER_ALIGNED syscall.Errno = 407 + ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND syscall.Errno = 408 + ERROR_APPX_FILE_NOT_ENCRYPTED syscall.Errno = 409 + ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED syscall.Errno = 410 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET syscall.Errno = 411 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE syscall.Errno = 412 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER syscall.Errno = 413 + ERROR_LINUX_SUBSYSTEM_NOT_PRESENT syscall.Errno = 414 + ERROR_FT_READ_FAILURE syscall.Errno = 415 + ERROR_STORAGE_RESERVE_ID_INVALID syscall.Errno = 416 + ERROR_STORAGE_RESERVE_DOES_NOT_EXIST syscall.Errno = 417 + ERROR_STORAGE_RESERVE_ALREADY_EXISTS syscall.Errno = 418 + ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419 + ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420 + ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421 + ERROR_TIME_SENSITIVE_THREAD syscall.Errno = 422 + ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423 + ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424 + ERROR_FILE_NOT_SUPPORTED syscall.Errno = 425 + ERROR_CLOUD_FILE_REQUEST_TIMEOUT syscall.Errno = 426 + ERROR_NO_TASK_QUEUE syscall.Errno = 427 + ERROR_SRC_SRV_DLL_LOAD_FAILED syscall.Errno = 428 + ERROR_NOT_SUPPORTED_WITH_BTT syscall.Errno = 429 + ERROR_ENCRYPTION_DISABLED syscall.Errno = 430 + ERROR_ENCRYPTING_METADATA_DISALLOWED syscall.Errno = 431 + ERROR_CANT_CLEAR_ENCRYPTION_FLAG syscall.Errno = 432 + ERROR_NO_SUCH_DEVICE syscall.Errno = 433 + ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450 + ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451 + ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452 + ERROR_CAPAUTHZ_NOT_AUTHORIZED syscall.Errno = 453 + ERROR_CAPAUTHZ_NO_POLICY syscall.Errno = 454 + ERROR_CAPAUTHZ_DB_CORRUPTED syscall.Errno = 455 + ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG syscall.Errno = 456 + ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY syscall.Errno = 457 + ERROR_CAPAUTHZ_SCCD_PARSE_ERROR syscall.Errno = 458 + ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED syscall.Errno = 459 + ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH syscall.Errno = 460 + ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT syscall.Errno = 480 + ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT syscall.Errno = 481 + ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT syscall.Errno = 482 + ERROR_DEVICE_HARDWARE_ERROR syscall.Errno = 483 + ERROR_INVALID_ADDRESS syscall.Errno = 487 + ERROR_VRF_CFG_ENABLED syscall.Errno = 1183 + ERROR_PARTITION_TERMINATING syscall.Errno = 1184 + ERROR_USER_PROFILE_LOAD syscall.Errno = 500 + ERROR_ARITHMETIC_OVERFLOW syscall.Errno = 534 + ERROR_PIPE_CONNECTED syscall.Errno = 535 + ERROR_PIPE_LISTENING syscall.Errno = 536 + ERROR_VERIFIER_STOP syscall.Errno = 537 + ERROR_ABIOS_ERROR syscall.Errno = 538 + ERROR_WX86_WARNING syscall.Errno = 539 + ERROR_WX86_ERROR syscall.Errno = 540 + ERROR_TIMER_NOT_CANCELED syscall.Errno = 541 + ERROR_UNWIND syscall.Errno = 542 + ERROR_BAD_STACK syscall.Errno = 543 + ERROR_INVALID_UNWIND_TARGET syscall.Errno = 544 + ERROR_INVALID_PORT_ATTRIBUTES syscall.Errno = 545 + ERROR_PORT_MESSAGE_TOO_LONG syscall.Errno = 546 + ERROR_INVALID_QUOTA_LOWER syscall.Errno = 547 + ERROR_DEVICE_ALREADY_ATTACHED syscall.Errno = 548 + ERROR_INSTRUCTION_MISALIGNMENT syscall.Errno = 549 + ERROR_PROFILING_NOT_STARTED syscall.Errno = 550 + ERROR_PROFILING_NOT_STOPPED syscall.Errno = 551 + ERROR_COULD_NOT_INTERPRET syscall.Errno = 552 + ERROR_PROFILING_AT_LIMIT syscall.Errno = 553 + ERROR_CANT_WAIT syscall.Errno = 554 + ERROR_CANT_TERMINATE_SELF syscall.Errno = 555 + ERROR_UNEXPECTED_MM_CREATE_ERR syscall.Errno = 556 + ERROR_UNEXPECTED_MM_MAP_ERROR syscall.Errno = 557 + ERROR_UNEXPECTED_MM_EXTEND_ERR syscall.Errno = 558 + ERROR_BAD_FUNCTION_TABLE syscall.Errno = 559 + ERROR_NO_GUID_TRANSLATION syscall.Errno = 560 + ERROR_INVALID_LDT_SIZE syscall.Errno = 561 + ERROR_INVALID_LDT_OFFSET syscall.Errno = 563 + ERROR_INVALID_LDT_DESCRIPTOR syscall.Errno = 564 + ERROR_TOO_MANY_THREADS syscall.Errno = 565 + ERROR_THREAD_NOT_IN_PROCESS syscall.Errno = 566 + ERROR_PAGEFILE_QUOTA_EXCEEDED syscall.Errno = 567 + ERROR_LOGON_SERVER_CONFLICT syscall.Errno = 568 + ERROR_SYNCHRONIZATION_REQUIRED syscall.Errno = 569 + ERROR_NET_OPEN_FAILED syscall.Errno = 570 + ERROR_IO_PRIVILEGE_FAILED syscall.Errno = 571 + ERROR_CONTROL_C_EXIT syscall.Errno = 572 + ERROR_MISSING_SYSTEMFILE syscall.Errno = 573 + ERROR_UNHANDLED_EXCEPTION syscall.Errno = 574 + ERROR_APP_INIT_FAILURE syscall.Errno = 575 + ERROR_PAGEFILE_CREATE_FAILED syscall.Errno = 576 + ERROR_INVALID_IMAGE_HASH syscall.Errno = 577 + ERROR_NO_PAGEFILE syscall.Errno = 578 + ERROR_ILLEGAL_FLOAT_CONTEXT syscall.Errno = 579 + ERROR_NO_EVENT_PAIR syscall.Errno = 580 + ERROR_DOMAIN_CTRLR_CONFIG_ERROR syscall.Errno = 581 + ERROR_ILLEGAL_CHARACTER syscall.Errno = 582 + ERROR_UNDEFINED_CHARACTER syscall.Errno = 583 + ERROR_FLOPPY_VOLUME syscall.Errno = 584 + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT syscall.Errno = 585 + ERROR_BACKUP_CONTROLLER syscall.Errno = 586 + ERROR_MUTANT_LIMIT_EXCEEDED syscall.Errno = 587 + ERROR_FS_DRIVER_REQUIRED syscall.Errno = 588 + ERROR_CANNOT_LOAD_REGISTRY_FILE syscall.Errno = 589 + ERROR_DEBUG_ATTACH_FAILED syscall.Errno = 590 + ERROR_SYSTEM_PROCESS_TERMINATED syscall.Errno = 591 + ERROR_DATA_NOT_ACCEPTED syscall.Errno = 592 + ERROR_VDM_HARD_ERROR syscall.Errno = 593 + ERROR_DRIVER_CANCEL_TIMEOUT syscall.Errno = 594 + ERROR_REPLY_MESSAGE_MISMATCH syscall.Errno = 595 + ERROR_LOST_WRITEBEHIND_DATA syscall.Errno = 596 + ERROR_CLIENT_SERVER_PARAMETERS_INVALID syscall.Errno = 597 + ERROR_NOT_TINY_STREAM syscall.Errno = 598 + ERROR_STACK_OVERFLOW_READ syscall.Errno = 599 + ERROR_CONVERT_TO_LARGE syscall.Errno = 600 + ERROR_FOUND_OUT_OF_SCOPE syscall.Errno = 601 + ERROR_ALLOCATE_BUCKET syscall.Errno = 602 + ERROR_MARSHALL_OVERFLOW syscall.Errno = 603 + ERROR_INVALID_VARIANT syscall.Errno = 604 + ERROR_BAD_COMPRESSION_BUFFER syscall.Errno = 605 + ERROR_AUDIT_FAILED syscall.Errno = 606 + ERROR_TIMER_RESOLUTION_NOT_SET syscall.Errno = 607 + ERROR_INSUFFICIENT_LOGON_INFO syscall.Errno = 608 + ERROR_BAD_DLL_ENTRYPOINT syscall.Errno = 609 + ERROR_BAD_SERVICE_ENTRYPOINT syscall.Errno = 610 + ERROR_IP_ADDRESS_CONFLICT1 syscall.Errno = 611 + ERROR_IP_ADDRESS_CONFLICT2 syscall.Errno = 612 + ERROR_REGISTRY_QUOTA_LIMIT syscall.Errno = 613 + ERROR_NO_CALLBACK_ACTIVE syscall.Errno = 614 + ERROR_PWD_TOO_SHORT syscall.Errno = 615 + ERROR_PWD_TOO_RECENT syscall.Errno = 616 + ERROR_PWD_HISTORY_CONFLICT syscall.Errno = 617 + ERROR_UNSUPPORTED_COMPRESSION syscall.Errno = 618 + ERROR_INVALID_HW_PROFILE syscall.Errno = 619 + ERROR_INVALID_PLUGPLAY_DEVICE_PATH syscall.Errno = 620 + ERROR_QUOTA_LIST_INCONSISTENT syscall.Errno = 621 + ERROR_EVALUATION_EXPIRATION syscall.Errno = 622 + ERROR_ILLEGAL_DLL_RELOCATION syscall.Errno = 623 + ERROR_DLL_INIT_FAILED_LOGOFF syscall.Errno = 624 + ERROR_VALIDATE_CONTINUE syscall.Errno = 625 + ERROR_NO_MORE_MATCHES syscall.Errno = 626 + ERROR_RANGE_LIST_CONFLICT syscall.Errno = 627 + ERROR_SERVER_SID_MISMATCH syscall.Errno = 628 + ERROR_CANT_ENABLE_DENY_ONLY syscall.Errno = 629 + ERROR_FLOAT_MULTIPLE_FAULTS syscall.Errno = 630 + ERROR_FLOAT_MULTIPLE_TRAPS syscall.Errno = 631 + ERROR_NOINTERFACE syscall.Errno = 632 + ERROR_DRIVER_FAILED_SLEEP syscall.Errno = 633 + ERROR_CORRUPT_SYSTEM_FILE syscall.Errno = 634 + ERROR_COMMITMENT_MINIMUM syscall.Errno = 635 + ERROR_PNP_RESTART_ENUMERATION syscall.Errno = 636 + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE syscall.Errno = 637 + ERROR_PNP_REBOOT_REQUIRED syscall.Errno = 638 + ERROR_INSUFFICIENT_POWER syscall.Errno = 639 + ERROR_MULTIPLE_FAULT_VIOLATION syscall.Errno = 640 + ERROR_SYSTEM_SHUTDOWN syscall.Errno = 641 + ERROR_PORT_NOT_SET syscall.Errno = 642 + ERROR_DS_VERSION_CHECK_FAILURE syscall.Errno = 643 + ERROR_RANGE_NOT_FOUND syscall.Errno = 644 + ERROR_NOT_SAFE_MODE_DRIVER syscall.Errno = 646 + ERROR_FAILED_DRIVER_ENTRY syscall.Errno = 647 + ERROR_DEVICE_ENUMERATION_ERROR syscall.Errno = 648 + ERROR_MOUNT_POINT_NOT_RESOLVED syscall.Errno = 649 + ERROR_INVALID_DEVICE_OBJECT_PARAMETER syscall.Errno = 650 + ERROR_MCA_OCCURED syscall.Errno = 651 + ERROR_DRIVER_DATABASE_ERROR syscall.Errno = 652 + ERROR_SYSTEM_HIVE_TOO_LARGE syscall.Errno = 653 + ERROR_DRIVER_FAILED_PRIOR_UNLOAD syscall.Errno = 654 + ERROR_VOLSNAP_PREPARE_HIBERNATE syscall.Errno = 655 + ERROR_HIBERNATION_FAILURE syscall.Errno = 656 + ERROR_PWD_TOO_LONG syscall.Errno = 657 + ERROR_FILE_SYSTEM_LIMITATION syscall.Errno = 665 + ERROR_ASSERTION_FAILURE syscall.Errno = 668 + ERROR_ACPI_ERROR syscall.Errno = 669 + ERROR_WOW_ASSERTION syscall.Errno = 670 + ERROR_PNP_BAD_MPS_TABLE syscall.Errno = 671 + ERROR_PNP_TRANSLATION_FAILED syscall.Errno = 672 + ERROR_PNP_IRQ_TRANSLATION_FAILED syscall.Errno = 673 + ERROR_PNP_INVALID_ID syscall.Errno = 674 + ERROR_WAKE_SYSTEM_DEBUGGER syscall.Errno = 675 + ERROR_HANDLES_CLOSED syscall.Errno = 676 + ERROR_EXTRANEOUS_INFORMATION syscall.Errno = 677 + ERROR_RXACT_COMMIT_NECESSARY syscall.Errno = 678 + ERROR_MEDIA_CHECK syscall.Errno = 679 + ERROR_GUID_SUBSTITUTION_MADE syscall.Errno = 680 + ERROR_STOPPED_ON_SYMLINK syscall.Errno = 681 + ERROR_LONGJUMP syscall.Errno = 682 + ERROR_PLUGPLAY_QUERY_VETOED syscall.Errno = 683 + ERROR_UNWIND_CONSOLIDATE syscall.Errno = 684 + ERROR_REGISTRY_HIVE_RECOVERED syscall.Errno = 685 + ERROR_DLL_MIGHT_BE_INSECURE syscall.Errno = 686 + ERROR_DLL_MIGHT_BE_INCOMPATIBLE syscall.Errno = 687 + ERROR_DBG_EXCEPTION_NOT_HANDLED syscall.Errno = 688 + ERROR_DBG_REPLY_LATER syscall.Errno = 689 + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE syscall.Errno = 690 + ERROR_DBG_TERMINATE_THREAD syscall.Errno = 691 + ERROR_DBG_TERMINATE_PROCESS syscall.Errno = 692 + ERROR_DBG_CONTROL_C syscall.Errno = 693 + ERROR_DBG_PRINTEXCEPTION_C syscall.Errno = 694 + ERROR_DBG_RIPEXCEPTION syscall.Errno = 695 + ERROR_DBG_CONTROL_BREAK syscall.Errno = 696 + ERROR_DBG_COMMAND_EXCEPTION syscall.Errno = 697 + ERROR_OBJECT_NAME_EXISTS syscall.Errno = 698 + ERROR_THREAD_WAS_SUSPENDED syscall.Errno = 699 + ERROR_IMAGE_NOT_AT_BASE syscall.Errno = 700 + ERROR_RXACT_STATE_CREATED syscall.Errno = 701 + ERROR_SEGMENT_NOTIFICATION syscall.Errno = 702 + ERROR_BAD_CURRENT_DIRECTORY syscall.Errno = 703 + ERROR_FT_READ_RECOVERY_FROM_BACKUP syscall.Errno = 704 + ERROR_FT_WRITE_RECOVERY syscall.Errno = 705 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH syscall.Errno = 706 + ERROR_RECEIVE_PARTIAL syscall.Errno = 707 + ERROR_RECEIVE_EXPEDITED syscall.Errno = 708 + ERROR_RECEIVE_PARTIAL_EXPEDITED syscall.Errno = 709 + ERROR_EVENT_DONE syscall.Errno = 710 + ERROR_EVENT_PENDING syscall.Errno = 711 + ERROR_CHECKING_FILE_SYSTEM syscall.Errno = 712 + ERROR_FATAL_APP_EXIT syscall.Errno = 713 + ERROR_PREDEFINED_HANDLE syscall.Errno = 714 + ERROR_WAS_UNLOCKED syscall.Errno = 715 + ERROR_SERVICE_NOTIFICATION syscall.Errno = 716 + ERROR_WAS_LOCKED syscall.Errno = 717 + ERROR_LOG_HARD_ERROR syscall.Errno = 718 + ERROR_ALREADY_WIN32 syscall.Errno = 719 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE syscall.Errno = 720 + ERROR_NO_YIELD_PERFORMED syscall.Errno = 721 + ERROR_TIMER_RESUME_IGNORED syscall.Errno = 722 + ERROR_ARBITRATION_UNHANDLED syscall.Errno = 723 + ERROR_CARDBUS_NOT_SUPPORTED syscall.Errno = 724 + ERROR_MP_PROCESSOR_MISMATCH syscall.Errno = 725 + ERROR_HIBERNATED syscall.Errno = 726 + ERROR_RESUME_HIBERNATION syscall.Errno = 727 + ERROR_FIRMWARE_UPDATED syscall.Errno = 728 + ERROR_DRIVERS_LEAKING_LOCKED_PAGES syscall.Errno = 729 + ERROR_WAKE_SYSTEM syscall.Errno = 730 + ERROR_WAIT_1 syscall.Errno = 731 + ERROR_WAIT_2 syscall.Errno = 732 + ERROR_WAIT_3 syscall.Errno = 733 + ERROR_WAIT_63 syscall.Errno = 734 + ERROR_ABANDONED_WAIT_0 syscall.Errno = 735 + ERROR_ABANDONED_WAIT_63 syscall.Errno = 736 + ERROR_USER_APC syscall.Errno = 737 + ERROR_KERNEL_APC syscall.Errno = 738 + ERROR_ALERTED syscall.Errno = 739 + ERROR_ELEVATION_REQUIRED syscall.Errno = 740 + ERROR_REPARSE syscall.Errno = 741 + ERROR_OPLOCK_BREAK_IN_PROGRESS syscall.Errno = 742 + ERROR_VOLUME_MOUNTED syscall.Errno = 743 + ERROR_RXACT_COMMITTED syscall.Errno = 744 + ERROR_NOTIFY_CLEANUP syscall.Errno = 745 + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED syscall.Errno = 746 + ERROR_PAGE_FAULT_TRANSITION syscall.Errno = 747 + ERROR_PAGE_FAULT_DEMAND_ZERO syscall.Errno = 748 + ERROR_PAGE_FAULT_COPY_ON_WRITE syscall.Errno = 749 + ERROR_PAGE_FAULT_GUARD_PAGE syscall.Errno = 750 + ERROR_PAGE_FAULT_PAGING_FILE syscall.Errno = 751 + ERROR_CACHE_PAGE_LOCKED syscall.Errno = 752 + ERROR_CRASH_DUMP syscall.Errno = 753 + ERROR_BUFFER_ALL_ZEROS syscall.Errno = 754 + ERROR_REPARSE_OBJECT syscall.Errno = 755 + ERROR_RESOURCE_REQUIREMENTS_CHANGED syscall.Errno = 756 + ERROR_TRANSLATION_COMPLETE syscall.Errno = 757 + ERROR_NOTHING_TO_TERMINATE syscall.Errno = 758 + ERROR_PROCESS_NOT_IN_JOB syscall.Errno = 759 + ERROR_PROCESS_IN_JOB syscall.Errno = 760 + ERROR_VOLSNAP_HIBERNATE_READY syscall.Errno = 761 + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY syscall.Errno = 762 + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED syscall.Errno = 763 + ERROR_INTERRUPT_STILL_CONNECTED syscall.Errno = 764 + ERROR_WAIT_FOR_OPLOCK syscall.Errno = 765 + ERROR_DBG_EXCEPTION_HANDLED syscall.Errno = 766 + ERROR_DBG_CONTINUE syscall.Errno = 767 + ERROR_CALLBACK_POP_STACK syscall.Errno = 768 + ERROR_COMPRESSION_DISABLED syscall.Errno = 769 + ERROR_CANTFETCHBACKWARDS syscall.Errno = 770 + ERROR_CANTSCROLLBACKWARDS syscall.Errno = 771 + ERROR_ROWSNOTRELEASED syscall.Errno = 772 + ERROR_BAD_ACCESSOR_FLAGS syscall.Errno = 773 + ERROR_ERRORS_ENCOUNTERED syscall.Errno = 774 + ERROR_NOT_CAPABLE syscall.Errno = 775 + ERROR_REQUEST_OUT_OF_SEQUENCE syscall.Errno = 776 + ERROR_VERSION_PARSE_ERROR syscall.Errno = 777 + ERROR_BADSTARTPOSITION syscall.Errno = 778 + ERROR_MEMORY_HARDWARE syscall.Errno = 779 + ERROR_DISK_REPAIR_DISABLED syscall.Errno = 780 + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE syscall.Errno = 781 + ERROR_SYSTEM_POWERSTATE_TRANSITION syscall.Errno = 782 + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION syscall.Errno = 783 + ERROR_MCA_EXCEPTION syscall.Errno = 784 + ERROR_ACCESS_AUDIT_BY_POLICY syscall.Errno = 785 + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY syscall.Errno = 786 + ERROR_ABANDON_HIBERFILE syscall.Errno = 787 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED syscall.Errno = 788 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR syscall.Errno = 789 + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR syscall.Errno = 790 + ERROR_BAD_MCFG_TABLE syscall.Errno = 791 + ERROR_DISK_REPAIR_REDIRECTED syscall.Errno = 792 + ERROR_DISK_REPAIR_UNSUCCESSFUL syscall.Errno = 793 + ERROR_CORRUPT_LOG_OVERFULL syscall.Errno = 794 + ERROR_CORRUPT_LOG_CORRUPTED syscall.Errno = 795 + ERROR_CORRUPT_LOG_UNAVAILABLE syscall.Errno = 796 + ERROR_CORRUPT_LOG_DELETED_FULL syscall.Errno = 797 + ERROR_CORRUPT_LOG_CLEARED syscall.Errno = 798 + ERROR_ORPHAN_NAME_EXHAUSTED syscall.Errno = 799 + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE syscall.Errno = 800 + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK syscall.Errno = 801 + ERROR_CANNOT_BREAK_OPLOCK syscall.Errno = 802 + ERROR_OPLOCK_HANDLE_CLOSED syscall.Errno = 803 + ERROR_NO_ACE_CONDITION syscall.Errno = 804 + ERROR_INVALID_ACE_CONDITION syscall.Errno = 805 + ERROR_FILE_HANDLE_REVOKED syscall.Errno = 806 + ERROR_IMAGE_AT_DIFFERENT_BASE syscall.Errno = 807 + ERROR_ENCRYPTED_IO_NOT_POSSIBLE syscall.Errno = 808 + ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS syscall.Errno = 809 + ERROR_QUOTA_ACTIVITY syscall.Errno = 810 + ERROR_HANDLE_REVOKED syscall.Errno = 811 + ERROR_CALLBACK_INVOKE_INLINE syscall.Errno = 812 + ERROR_CPU_SET_INVALID syscall.Errno = 813 + ERROR_ENCLAVE_NOT_TERMINATED syscall.Errno = 814 + ERROR_ENCLAVE_VIOLATION syscall.Errno = 815 + ERROR_EA_ACCESS_DENIED syscall.Errno = 994 + ERROR_OPERATION_ABORTED syscall.Errno = 995 + ERROR_IO_INCOMPLETE syscall.Errno = 996 + ERROR_IO_PENDING syscall.Errno = 997 + ERROR_NOACCESS syscall.Errno = 998 + ERROR_SWAPERROR syscall.Errno = 999 + ERROR_STACK_OVERFLOW syscall.Errno = 1001 + ERROR_INVALID_MESSAGE syscall.Errno = 1002 + ERROR_CAN_NOT_COMPLETE syscall.Errno = 1003 + ERROR_INVALID_FLAGS syscall.Errno = 1004 + ERROR_UNRECOGNIZED_VOLUME syscall.Errno = 1005 + ERROR_FILE_INVALID syscall.Errno = 1006 + ERROR_FULLSCREEN_MODE syscall.Errno = 1007 + ERROR_NO_TOKEN syscall.Errno = 1008 + ERROR_BADDB syscall.Errno = 1009 + ERROR_BADKEY syscall.Errno = 1010 + ERROR_CANTOPEN syscall.Errno = 1011 + ERROR_CANTREAD syscall.Errno = 1012 + ERROR_CANTWRITE syscall.Errno = 1013 + ERROR_REGISTRY_RECOVERED syscall.Errno = 1014 + ERROR_REGISTRY_CORRUPT syscall.Errno = 1015 + ERROR_REGISTRY_IO_FAILED syscall.Errno = 1016 + ERROR_NOT_REGISTRY_FILE syscall.Errno = 1017 + ERROR_KEY_DELETED syscall.Errno = 1018 + ERROR_NO_LOG_SPACE syscall.Errno = 1019 + ERROR_KEY_HAS_CHILDREN syscall.Errno = 1020 + ERROR_CHILD_MUST_BE_VOLATILE syscall.Errno = 1021 + ERROR_NOTIFY_ENUM_DIR syscall.Errno = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING syscall.Errno = 1051 + ERROR_INVALID_SERVICE_CONTROL syscall.Errno = 1052 + ERROR_SERVICE_REQUEST_TIMEOUT syscall.Errno = 1053 + ERROR_SERVICE_NO_THREAD syscall.Errno = 1054 + ERROR_SERVICE_DATABASE_LOCKED syscall.Errno = 1055 + ERROR_SERVICE_ALREADY_RUNNING syscall.Errno = 1056 + ERROR_INVALID_SERVICE_ACCOUNT syscall.Errno = 1057 + ERROR_SERVICE_DISABLED syscall.Errno = 1058 + ERROR_CIRCULAR_DEPENDENCY syscall.Errno = 1059 + ERROR_SERVICE_DOES_NOT_EXIST syscall.Errno = 1060 + ERROR_SERVICE_CANNOT_ACCEPT_CTRL syscall.Errno = 1061 + ERROR_SERVICE_NOT_ACTIVE syscall.Errno = 1062 + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT syscall.Errno = 1063 + ERROR_EXCEPTION_IN_SERVICE syscall.Errno = 1064 + ERROR_DATABASE_DOES_NOT_EXIST syscall.Errno = 1065 + ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 + ERROR_PROCESS_ABORTED syscall.Errno = 1067 + ERROR_SERVICE_DEPENDENCY_FAIL syscall.Errno = 1068 + ERROR_SERVICE_LOGON_FAILED syscall.Errno = 1069 + ERROR_SERVICE_START_HANG syscall.Errno = 1070 + ERROR_INVALID_SERVICE_LOCK syscall.Errno = 1071 + ERROR_SERVICE_MARKED_FOR_DELETE syscall.Errno = 1072 + ERROR_SERVICE_EXISTS syscall.Errno = 1073 + ERROR_ALREADY_RUNNING_LKG syscall.Errno = 1074 + ERROR_SERVICE_DEPENDENCY_DELETED syscall.Errno = 1075 + ERROR_BOOT_ALREADY_ACCEPTED syscall.Errno = 1076 + ERROR_SERVICE_NEVER_STARTED syscall.Errno = 1077 + ERROR_DUPLICATE_SERVICE_NAME syscall.Errno = 1078 + ERROR_DIFFERENT_SERVICE_ACCOUNT syscall.Errno = 1079 + ERROR_CANNOT_DETECT_DRIVER_FAILURE syscall.Errno = 1080 + ERROR_CANNOT_DETECT_PROCESS_ABORT syscall.Errno = 1081 + ERROR_NO_RECOVERY_PROGRAM syscall.Errno = 1082 + ERROR_SERVICE_NOT_IN_EXE syscall.Errno = 1083 + ERROR_NOT_SAFEBOOT_SERVICE syscall.Errno = 1084 + ERROR_END_OF_MEDIA syscall.Errno = 1100 + ERROR_FILEMARK_DETECTED syscall.Errno = 1101 + ERROR_BEGINNING_OF_MEDIA syscall.Errno = 1102 + ERROR_SETMARK_DETECTED syscall.Errno = 1103 + ERROR_NO_DATA_DETECTED syscall.Errno = 1104 + ERROR_PARTITION_FAILURE syscall.Errno = 1105 + ERROR_INVALID_BLOCK_LENGTH syscall.Errno = 1106 + ERROR_DEVICE_NOT_PARTITIONED syscall.Errno = 1107 + ERROR_UNABLE_TO_LOCK_MEDIA syscall.Errno = 1108 + ERROR_UNABLE_TO_UNLOAD_MEDIA syscall.Errno = 1109 + ERROR_MEDIA_CHANGED syscall.Errno = 1110 + ERROR_BUS_RESET syscall.Errno = 1111 + ERROR_NO_MEDIA_IN_DRIVE syscall.Errno = 1112 + ERROR_NO_UNICODE_TRANSLATION syscall.Errno = 1113 + ERROR_DLL_INIT_FAILED syscall.Errno = 1114 + ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 1115 + ERROR_NO_SHUTDOWN_IN_PROGRESS syscall.Errno = 1116 + ERROR_IO_DEVICE syscall.Errno = 1117 + ERROR_SERIAL_NO_DEVICE syscall.Errno = 1118 + ERROR_IRQ_BUSY syscall.Errno = 1119 + ERROR_MORE_WRITES syscall.Errno = 1120 + ERROR_COUNTER_TIMEOUT syscall.Errno = 1121 + ERROR_FLOPPY_ID_MARK_NOT_FOUND syscall.Errno = 1122 + ERROR_FLOPPY_WRONG_CYLINDER syscall.Errno = 1123 + ERROR_FLOPPY_UNKNOWN_ERROR syscall.Errno = 1124 + ERROR_FLOPPY_BAD_REGISTERS syscall.Errno = 1125 + ERROR_DISK_RECALIBRATE_FAILED syscall.Errno = 1126 + ERROR_DISK_OPERATION_FAILED syscall.Errno = 1127 + ERROR_DISK_RESET_FAILED syscall.Errno = 1128 + ERROR_EOM_OVERFLOW syscall.Errno = 1129 + ERROR_NOT_ENOUGH_SERVER_MEMORY syscall.Errno = 1130 + ERROR_POSSIBLE_DEADLOCK syscall.Errno = 1131 + ERROR_MAPPED_ALIGNMENT syscall.Errno = 1132 + ERROR_SET_POWER_STATE_VETOED syscall.Errno = 1140 + ERROR_SET_POWER_STATE_FAILED syscall.Errno = 1141 + ERROR_TOO_MANY_LINKS syscall.Errno = 1142 + ERROR_OLD_WIN_VERSION syscall.Errno = 1150 + ERROR_APP_WRONG_OS syscall.Errno = 1151 + ERROR_SINGLE_INSTANCE_APP syscall.Errno = 1152 + ERROR_RMODE_APP syscall.Errno = 1153 + ERROR_INVALID_DLL syscall.Errno = 1154 + ERROR_NO_ASSOCIATION syscall.Errno = 1155 + ERROR_DDE_FAIL syscall.Errno = 1156 + ERROR_DLL_NOT_FOUND syscall.Errno = 1157 + ERROR_NO_MORE_USER_HANDLES syscall.Errno = 1158 + ERROR_MESSAGE_SYNC_ONLY syscall.Errno = 1159 + ERROR_SOURCE_ELEMENT_EMPTY syscall.Errno = 1160 + ERROR_DESTINATION_ELEMENT_FULL syscall.Errno = 1161 + ERROR_ILLEGAL_ELEMENT_ADDRESS syscall.Errno = 1162 + ERROR_MAGAZINE_NOT_PRESENT syscall.Errno = 1163 + ERROR_DEVICE_REINITIALIZATION_NEEDED syscall.Errno = 1164 + ERROR_DEVICE_REQUIRES_CLEANING syscall.Errno = 1165 + ERROR_DEVICE_DOOR_OPEN syscall.Errno = 1166 + ERROR_DEVICE_NOT_CONNECTED syscall.Errno = 1167 + ERROR_NOT_FOUND syscall.Errno = 1168 + ERROR_NO_MATCH syscall.Errno = 1169 + ERROR_SET_NOT_FOUND syscall.Errno = 1170 + ERROR_POINT_NOT_FOUND syscall.Errno = 1171 + ERROR_NO_TRACKING_SERVICE syscall.Errno = 1172 + ERROR_NO_VOLUME_ID syscall.Errno = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED syscall.Errno = 1175 + ERROR_UNABLE_TO_MOVE_REPLACEMENT syscall.Errno = 1176 + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 syscall.Errno = 1177 + ERROR_JOURNAL_DELETE_IN_PROGRESS syscall.Errno = 1178 + ERROR_JOURNAL_NOT_ACTIVE syscall.Errno = 1179 + ERROR_POTENTIAL_FILE_FOUND syscall.Errno = 1180 + ERROR_JOURNAL_ENTRY_DELETED syscall.Errno = 1181 + ERROR_SHUTDOWN_IS_SCHEDULED syscall.Errno = 1190 + ERROR_SHUTDOWN_USERS_LOGGED_ON syscall.Errno = 1191 + ERROR_BAD_DEVICE syscall.Errno = 1200 + ERROR_CONNECTION_UNAVAIL syscall.Errno = 1201 + ERROR_DEVICE_ALREADY_REMEMBERED syscall.Errno = 1202 + ERROR_NO_NET_OR_BAD_PATH syscall.Errno = 1203 + ERROR_BAD_PROVIDER syscall.Errno = 1204 + ERROR_CANNOT_OPEN_PROFILE syscall.Errno = 1205 + ERROR_BAD_PROFILE syscall.Errno = 1206 + ERROR_NOT_CONTAINER syscall.Errno = 1207 + ERROR_EXTENDED_ERROR syscall.Errno = 1208 + ERROR_INVALID_GROUPNAME syscall.Errno = 1209 + ERROR_INVALID_COMPUTERNAME syscall.Errno = 1210 + ERROR_INVALID_EVENTNAME syscall.Errno = 1211 + ERROR_INVALID_DOMAINNAME syscall.Errno = 1212 + ERROR_INVALID_SERVICENAME syscall.Errno = 1213 + ERROR_INVALID_NETNAME syscall.Errno = 1214 + ERROR_INVALID_SHARENAME syscall.Errno = 1215 + ERROR_INVALID_PASSWORDNAME syscall.Errno = 1216 + ERROR_INVALID_MESSAGENAME syscall.Errno = 1217 + ERROR_INVALID_MESSAGEDEST syscall.Errno = 1218 + ERROR_SESSION_CREDENTIAL_CONFLICT syscall.Errno = 1219 + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED syscall.Errno = 1220 + ERROR_DUP_DOMAINNAME syscall.Errno = 1221 + ERROR_NO_NETWORK syscall.Errno = 1222 + ERROR_CANCELLED syscall.Errno = 1223 + ERROR_USER_MAPPED_FILE syscall.Errno = 1224 + ERROR_CONNECTION_REFUSED syscall.Errno = 1225 + ERROR_GRACEFUL_DISCONNECT syscall.Errno = 1226 + ERROR_ADDRESS_ALREADY_ASSOCIATED syscall.Errno = 1227 + ERROR_ADDRESS_NOT_ASSOCIATED syscall.Errno = 1228 + ERROR_CONNECTION_INVALID syscall.Errno = 1229 + ERROR_CONNECTION_ACTIVE syscall.Errno = 1230 + ERROR_NETWORK_UNREACHABLE syscall.Errno = 1231 + ERROR_HOST_UNREACHABLE syscall.Errno = 1232 + ERROR_PROTOCOL_UNREACHABLE syscall.Errno = 1233 + ERROR_PORT_UNREACHABLE syscall.Errno = 1234 + ERROR_REQUEST_ABORTED syscall.Errno = 1235 + ERROR_CONNECTION_ABORTED syscall.Errno = 1236 + ERROR_RETRY syscall.Errno = 1237 + ERROR_CONNECTION_COUNT_LIMIT syscall.Errno = 1238 + ERROR_LOGIN_TIME_RESTRICTION syscall.Errno = 1239 + ERROR_LOGIN_WKSTA_RESTRICTION syscall.Errno = 1240 + ERROR_INCORRECT_ADDRESS syscall.Errno = 1241 + ERROR_ALREADY_REGISTERED syscall.Errno = 1242 + ERROR_SERVICE_NOT_FOUND syscall.Errno = 1243 + ERROR_NOT_AUTHENTICATED syscall.Errno = 1244 + ERROR_NOT_LOGGED_ON syscall.Errno = 1245 + ERROR_CONTINUE syscall.Errno = 1246 + ERROR_ALREADY_INITIALIZED syscall.Errno = 1247 + ERROR_NO_MORE_DEVICES syscall.Errno = 1248 + ERROR_NO_SUCH_SITE syscall.Errno = 1249 + ERROR_DOMAIN_CONTROLLER_EXISTS syscall.Errno = 1250 + ERROR_ONLY_IF_CONNECTED syscall.Errno = 1251 + ERROR_OVERRIDE_NOCHANGES syscall.Errno = 1252 + ERROR_BAD_USER_PROFILE syscall.Errno = 1253 + ERROR_NOT_SUPPORTED_ON_SBS syscall.Errno = 1254 + ERROR_SERVER_SHUTDOWN_IN_PROGRESS syscall.Errno = 1255 + ERROR_HOST_DOWN syscall.Errno = 1256 + ERROR_NON_ACCOUNT_SID syscall.Errno = 1257 + ERROR_NON_DOMAIN_SID syscall.Errno = 1258 + ERROR_APPHELP_BLOCK syscall.Errno = 1259 + ERROR_ACCESS_DISABLED_BY_POLICY syscall.Errno = 1260 + ERROR_REG_NAT_CONSUMPTION syscall.Errno = 1261 + ERROR_CSCSHARE_OFFLINE syscall.Errno = 1262 + ERROR_PKINIT_FAILURE syscall.Errno = 1263 + ERROR_SMARTCARD_SUBSYSTEM_FAILURE syscall.Errno = 1264 + ERROR_DOWNGRADE_DETECTED syscall.Errno = 1265 + ERROR_MACHINE_LOCKED syscall.Errno = 1271 + ERROR_SMB_GUEST_LOGON_BLOCKED syscall.Errno = 1272 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA syscall.Errno = 1273 + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED syscall.Errno = 1274 + ERROR_DRIVER_BLOCKED syscall.Errno = 1275 + ERROR_INVALID_IMPORT_OF_NON_DLL syscall.Errno = 1276 + ERROR_ACCESS_DISABLED_WEBBLADE syscall.Errno = 1277 + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER syscall.Errno = 1278 + ERROR_RECOVERY_FAILURE syscall.Errno = 1279 + ERROR_ALREADY_FIBER syscall.Errno = 1280 + ERROR_ALREADY_THREAD syscall.Errno = 1281 + ERROR_STACK_BUFFER_OVERRUN syscall.Errno = 1282 + ERROR_PARAMETER_QUOTA_EXCEEDED syscall.Errno = 1283 + ERROR_DEBUGGER_INACTIVE syscall.Errno = 1284 + ERROR_DELAY_LOAD_FAILED syscall.Errno = 1285 + ERROR_VDM_DISALLOWED syscall.Errno = 1286 + ERROR_UNIDENTIFIED_ERROR syscall.Errno = 1287 + ERROR_INVALID_CRUNTIME_PARAMETER syscall.Errno = 1288 + ERROR_BEYOND_VDL syscall.Errno = 1289 + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE syscall.Errno = 1290 + ERROR_DRIVER_PROCESS_TERMINATED syscall.Errno = 1291 + ERROR_IMPLEMENTATION_LIMIT syscall.Errno = 1292 + ERROR_PROCESS_IS_PROTECTED syscall.Errno = 1293 + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING syscall.Errno = 1294 + ERROR_DISK_QUOTA_EXCEEDED syscall.Errno = 1295 + ERROR_CONTENT_BLOCKED syscall.Errno = 1296 + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE syscall.Errno = 1297 + ERROR_APP_HANG syscall.Errno = 1298 + ERROR_INVALID_LABEL syscall.Errno = 1299 + ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 + ERROR_SOME_NOT_MAPPED syscall.Errno = 1301 + ERROR_NO_QUOTAS_FOR_ACCOUNT syscall.Errno = 1302 + ERROR_LOCAL_USER_SESSION_KEY syscall.Errno = 1303 + ERROR_NULL_LM_PASSWORD syscall.Errno = 1304 + ERROR_UNKNOWN_REVISION syscall.Errno = 1305 + ERROR_REVISION_MISMATCH syscall.Errno = 1306 + ERROR_INVALID_OWNER syscall.Errno = 1307 + ERROR_INVALID_PRIMARY_GROUP syscall.Errno = 1308 + ERROR_NO_IMPERSONATION_TOKEN syscall.Errno = 1309 + ERROR_CANT_DISABLE_MANDATORY syscall.Errno = 1310 + ERROR_NO_LOGON_SERVERS syscall.Errno = 1311 + ERROR_NO_SUCH_LOGON_SESSION syscall.Errno = 1312 + ERROR_NO_SUCH_PRIVILEGE syscall.Errno = 1313 + ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + ERROR_INVALID_ACCOUNT_NAME syscall.Errno = 1315 + ERROR_USER_EXISTS syscall.Errno = 1316 + ERROR_NO_SUCH_USER syscall.Errno = 1317 + ERROR_GROUP_EXISTS syscall.Errno = 1318 + ERROR_NO_SUCH_GROUP syscall.Errno = 1319 + ERROR_MEMBER_IN_GROUP syscall.Errno = 1320 + ERROR_MEMBER_NOT_IN_GROUP syscall.Errno = 1321 + ERROR_LAST_ADMIN syscall.Errno = 1322 + ERROR_WRONG_PASSWORD syscall.Errno = 1323 + ERROR_ILL_FORMED_PASSWORD syscall.Errno = 1324 + ERROR_PASSWORD_RESTRICTION syscall.Errno = 1325 + ERROR_LOGON_FAILURE syscall.Errno = 1326 + ERROR_ACCOUNT_RESTRICTION syscall.Errno = 1327 + ERROR_INVALID_LOGON_HOURS syscall.Errno = 1328 + ERROR_INVALID_WORKSTATION syscall.Errno = 1329 + ERROR_PASSWORD_EXPIRED syscall.Errno = 1330 + ERROR_ACCOUNT_DISABLED syscall.Errno = 1331 + ERROR_NONE_MAPPED syscall.Errno = 1332 + ERROR_TOO_MANY_LUIDS_REQUESTED syscall.Errno = 1333 + ERROR_LUIDS_EXHAUSTED syscall.Errno = 1334 + ERROR_INVALID_SUB_AUTHORITY syscall.Errno = 1335 + ERROR_INVALID_ACL syscall.Errno = 1336 + ERROR_INVALID_SID syscall.Errno = 1337 + ERROR_INVALID_SECURITY_DESCR syscall.Errno = 1338 + ERROR_BAD_INHERITANCE_ACL syscall.Errno = 1340 + ERROR_SERVER_DISABLED syscall.Errno = 1341 + ERROR_SERVER_NOT_DISABLED syscall.Errno = 1342 + ERROR_INVALID_ID_AUTHORITY syscall.Errno = 1343 + ERROR_ALLOTTED_SPACE_EXCEEDED syscall.Errno = 1344 + ERROR_INVALID_GROUP_ATTRIBUTES syscall.Errno = 1345 + ERROR_BAD_IMPERSONATION_LEVEL syscall.Errno = 1346 + ERROR_CANT_OPEN_ANONYMOUS syscall.Errno = 1347 + ERROR_BAD_VALIDATION_CLASS syscall.Errno = 1348 + ERROR_BAD_TOKEN_TYPE syscall.Errno = 1349 + ERROR_NO_SECURITY_ON_OBJECT syscall.Errno = 1350 + ERROR_CANT_ACCESS_DOMAIN_INFO syscall.Errno = 1351 + ERROR_INVALID_SERVER_STATE syscall.Errno = 1352 + ERROR_INVALID_DOMAIN_STATE syscall.Errno = 1353 + ERROR_INVALID_DOMAIN_ROLE syscall.Errno = 1354 + ERROR_NO_SUCH_DOMAIN syscall.Errno = 1355 + ERROR_DOMAIN_EXISTS syscall.Errno = 1356 + ERROR_DOMAIN_LIMIT_EXCEEDED syscall.Errno = 1357 + ERROR_INTERNAL_DB_CORRUPTION syscall.Errno = 1358 + ERROR_INTERNAL_ERROR syscall.Errno = 1359 + ERROR_GENERIC_NOT_MAPPED syscall.Errno = 1360 + ERROR_BAD_DESCRIPTOR_FORMAT syscall.Errno = 1361 + ERROR_NOT_LOGON_PROCESS syscall.Errno = 1362 + ERROR_LOGON_SESSION_EXISTS syscall.Errno = 1363 + ERROR_NO_SUCH_PACKAGE syscall.Errno = 1364 + ERROR_BAD_LOGON_SESSION_STATE syscall.Errno = 1365 + ERROR_LOGON_SESSION_COLLISION syscall.Errno = 1366 + ERROR_INVALID_LOGON_TYPE syscall.Errno = 1367 + ERROR_CANNOT_IMPERSONATE syscall.Errno = 1368 + ERROR_RXACT_INVALID_STATE syscall.Errno = 1369 + ERROR_RXACT_COMMIT_FAILURE syscall.Errno = 1370 + ERROR_SPECIAL_ACCOUNT syscall.Errno = 1371 + ERROR_SPECIAL_GROUP syscall.Errno = 1372 + ERROR_SPECIAL_USER syscall.Errno = 1373 + ERROR_MEMBERS_PRIMARY_GROUP syscall.Errno = 1374 + ERROR_TOKEN_ALREADY_IN_USE syscall.Errno = 1375 + ERROR_NO_SUCH_ALIAS syscall.Errno = 1376 + ERROR_MEMBER_NOT_IN_ALIAS syscall.Errno = 1377 + ERROR_MEMBER_IN_ALIAS syscall.Errno = 1378 + ERROR_ALIAS_EXISTS syscall.Errno = 1379 + ERROR_LOGON_NOT_GRANTED syscall.Errno = 1380 + ERROR_TOO_MANY_SECRETS syscall.Errno = 1381 + ERROR_SECRET_TOO_LONG syscall.Errno = 1382 + ERROR_INTERNAL_DB_ERROR syscall.Errno = 1383 + ERROR_TOO_MANY_CONTEXT_IDS syscall.Errno = 1384 + ERROR_LOGON_TYPE_NOT_GRANTED syscall.Errno = 1385 + ERROR_NT_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1386 + ERROR_NO_SUCH_MEMBER syscall.Errno = 1387 + ERROR_INVALID_MEMBER syscall.Errno = 1388 + ERROR_TOO_MANY_SIDS syscall.Errno = 1389 + ERROR_LM_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1390 + ERROR_NO_INHERITANCE syscall.Errno = 1391 + ERROR_FILE_CORRUPT syscall.Errno = 1392 + ERROR_DISK_CORRUPT syscall.Errno = 1393 + ERROR_NO_USER_SESSION_KEY syscall.Errno = 1394 + ERROR_LICENSE_QUOTA_EXCEEDED syscall.Errno = 1395 + ERROR_WRONG_TARGET_NAME syscall.Errno = 1396 + ERROR_MUTUAL_AUTH_FAILED syscall.Errno = 1397 + ERROR_TIME_SKEW syscall.Errno = 1398 + ERROR_CURRENT_DOMAIN_NOT_ALLOWED syscall.Errno = 1399 + ERROR_INVALID_WINDOW_HANDLE syscall.Errno = 1400 + ERROR_INVALID_MENU_HANDLE syscall.Errno = 1401 + ERROR_INVALID_CURSOR_HANDLE syscall.Errno = 1402 + ERROR_INVALID_ACCEL_HANDLE syscall.Errno = 1403 + ERROR_INVALID_HOOK_HANDLE syscall.Errno = 1404 + ERROR_INVALID_DWP_HANDLE syscall.Errno = 1405 + ERROR_TLW_WITH_WSCHILD syscall.Errno = 1406 + ERROR_CANNOT_FIND_WND_CLASS syscall.Errno = 1407 + ERROR_WINDOW_OF_OTHER_THREAD syscall.Errno = 1408 + ERROR_HOTKEY_ALREADY_REGISTERED syscall.Errno = 1409 + ERROR_CLASS_ALREADY_EXISTS syscall.Errno = 1410 + ERROR_CLASS_DOES_NOT_EXIST syscall.Errno = 1411 + ERROR_CLASS_HAS_WINDOWS syscall.Errno = 1412 + ERROR_INVALID_INDEX syscall.Errno = 1413 + ERROR_INVALID_ICON_HANDLE syscall.Errno = 1414 + ERROR_PRIVATE_DIALOG_INDEX syscall.Errno = 1415 + ERROR_LISTBOX_ID_NOT_FOUND syscall.Errno = 1416 + ERROR_NO_WILDCARD_CHARACTERS syscall.Errno = 1417 + ERROR_CLIPBOARD_NOT_OPEN syscall.Errno = 1418 + ERROR_HOTKEY_NOT_REGISTERED syscall.Errno = 1419 + ERROR_WINDOW_NOT_DIALOG syscall.Errno = 1420 + ERROR_CONTROL_ID_NOT_FOUND syscall.Errno = 1421 + ERROR_INVALID_COMBOBOX_MESSAGE syscall.Errno = 1422 + ERROR_WINDOW_NOT_COMBOBOX syscall.Errno = 1423 + ERROR_INVALID_EDIT_HEIGHT syscall.Errno = 1424 + ERROR_DC_NOT_FOUND syscall.Errno = 1425 + ERROR_INVALID_HOOK_FILTER syscall.Errno = 1426 + ERROR_INVALID_FILTER_PROC syscall.Errno = 1427 + ERROR_HOOK_NEEDS_HMOD syscall.Errno = 1428 + ERROR_GLOBAL_ONLY_HOOK syscall.Errno = 1429 + ERROR_JOURNAL_HOOK_SET syscall.Errno = 1430 + ERROR_HOOK_NOT_INSTALLED syscall.Errno = 1431 + ERROR_INVALID_LB_MESSAGE syscall.Errno = 1432 + ERROR_SETCOUNT_ON_BAD_LB syscall.Errno = 1433 + ERROR_LB_WITHOUT_TABSTOPS syscall.Errno = 1434 + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD syscall.Errno = 1435 + ERROR_CHILD_WINDOW_MENU syscall.Errno = 1436 + ERROR_NO_SYSTEM_MENU syscall.Errno = 1437 + ERROR_INVALID_MSGBOX_STYLE syscall.Errno = 1438 + ERROR_INVALID_SPI_VALUE syscall.Errno = 1439 + ERROR_SCREEN_ALREADY_LOCKED syscall.Errno = 1440 + ERROR_HWNDS_HAVE_DIFF_PARENT syscall.Errno = 1441 + ERROR_NOT_CHILD_WINDOW syscall.Errno = 1442 + ERROR_INVALID_GW_COMMAND syscall.Errno = 1443 + ERROR_INVALID_THREAD_ID syscall.Errno = 1444 + ERROR_NON_MDICHILD_WINDOW syscall.Errno = 1445 + ERROR_POPUP_ALREADY_ACTIVE syscall.Errno = 1446 + ERROR_NO_SCROLLBARS syscall.Errno = 1447 + ERROR_INVALID_SCROLLBAR_RANGE syscall.Errno = 1448 + ERROR_INVALID_SHOWWIN_COMMAND syscall.Errno = 1449 + ERROR_NO_SYSTEM_RESOURCES syscall.Errno = 1450 + ERROR_NONPAGED_SYSTEM_RESOURCES syscall.Errno = 1451 + ERROR_PAGED_SYSTEM_RESOURCES syscall.Errno = 1452 + ERROR_WORKING_SET_QUOTA syscall.Errno = 1453 + ERROR_PAGEFILE_QUOTA syscall.Errno = 1454 + ERROR_COMMITMENT_LIMIT syscall.Errno = 1455 + ERROR_MENU_ITEM_NOT_FOUND syscall.Errno = 1456 + ERROR_INVALID_KEYBOARD_HANDLE syscall.Errno = 1457 + ERROR_HOOK_TYPE_NOT_ALLOWED syscall.Errno = 1458 + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION syscall.Errno = 1459 + ERROR_TIMEOUT syscall.Errno = 1460 + ERROR_INVALID_MONITOR_HANDLE syscall.Errno = 1461 + ERROR_INCORRECT_SIZE syscall.Errno = 1462 + ERROR_SYMLINK_CLASS_DISABLED syscall.Errno = 1463 + ERROR_SYMLINK_NOT_SUPPORTED syscall.Errno = 1464 + ERROR_XML_PARSE_ERROR syscall.Errno = 1465 + ERROR_XMLDSIG_ERROR syscall.Errno = 1466 + ERROR_RESTART_APPLICATION syscall.Errno = 1467 + ERROR_WRONG_COMPARTMENT syscall.Errno = 1468 + ERROR_AUTHIP_FAILURE syscall.Errno = 1469 + ERROR_NO_NVRAM_RESOURCES syscall.Errno = 1470 + ERROR_NOT_GUI_PROCESS syscall.Errno = 1471 + ERROR_EVENTLOG_FILE_CORRUPT syscall.Errno = 1500 + ERROR_EVENTLOG_CANT_START syscall.Errno = 1501 + ERROR_LOG_FILE_FULL syscall.Errno = 1502 + ERROR_EVENTLOG_FILE_CHANGED syscall.Errno = 1503 + ERROR_CONTAINER_ASSIGNED syscall.Errno = 1504 + ERROR_JOB_NO_CONTAINER syscall.Errno = 1505 + ERROR_INVALID_TASK_NAME syscall.Errno = 1550 + ERROR_INVALID_TASK_INDEX syscall.Errno = 1551 + ERROR_THREAD_ALREADY_IN_TASK syscall.Errno = 1552 + ERROR_INSTALL_SERVICE_FAILURE syscall.Errno = 1601 + ERROR_INSTALL_USEREXIT syscall.Errno = 1602 + ERROR_INSTALL_FAILURE syscall.Errno = 1603 + ERROR_INSTALL_SUSPEND syscall.Errno = 1604 + ERROR_UNKNOWN_PRODUCT syscall.Errno = 1605 + ERROR_UNKNOWN_FEATURE syscall.Errno = 1606 + ERROR_UNKNOWN_COMPONENT syscall.Errno = 1607 + ERROR_UNKNOWN_PROPERTY syscall.Errno = 1608 + ERROR_INVALID_HANDLE_STATE syscall.Errno = 1609 + ERROR_BAD_CONFIGURATION syscall.Errno = 1610 + ERROR_INDEX_ABSENT syscall.Errno = 1611 + ERROR_INSTALL_SOURCE_ABSENT syscall.Errno = 1612 + ERROR_INSTALL_PACKAGE_VERSION syscall.Errno = 1613 + ERROR_PRODUCT_UNINSTALLED syscall.Errno = 1614 + ERROR_BAD_QUERY_SYNTAX syscall.Errno = 1615 + ERROR_INVALID_FIELD syscall.Errno = 1616 + ERROR_DEVICE_REMOVED syscall.Errno = 1617 + ERROR_INSTALL_ALREADY_RUNNING syscall.Errno = 1618 + ERROR_INSTALL_PACKAGE_OPEN_FAILED syscall.Errno = 1619 + ERROR_INSTALL_PACKAGE_INVALID syscall.Errno = 1620 + ERROR_INSTALL_UI_FAILURE syscall.Errno = 1621 + ERROR_INSTALL_LOG_FAILURE syscall.Errno = 1622 + ERROR_INSTALL_LANGUAGE_UNSUPPORTED syscall.Errno = 1623 + ERROR_INSTALL_TRANSFORM_FAILURE syscall.Errno = 1624 + ERROR_INSTALL_PACKAGE_REJECTED syscall.Errno = 1625 + ERROR_FUNCTION_NOT_CALLED syscall.Errno = 1626 + ERROR_FUNCTION_FAILED syscall.Errno = 1627 + ERROR_INVALID_TABLE syscall.Errno = 1628 + ERROR_DATATYPE_MISMATCH syscall.Errno = 1629 + ERROR_UNSUPPORTED_TYPE syscall.Errno = 1630 + ERROR_CREATE_FAILED syscall.Errno = 1631 + ERROR_INSTALL_TEMP_UNWRITABLE syscall.Errno = 1632 + ERROR_INSTALL_PLATFORM_UNSUPPORTED syscall.Errno = 1633 + ERROR_INSTALL_NOTUSED syscall.Errno = 1634 + ERROR_PATCH_PACKAGE_OPEN_FAILED syscall.Errno = 1635 + ERROR_PATCH_PACKAGE_INVALID syscall.Errno = 1636 + ERROR_PATCH_PACKAGE_UNSUPPORTED syscall.Errno = 1637 + ERROR_PRODUCT_VERSION syscall.Errno = 1638 + ERROR_INVALID_COMMAND_LINE syscall.Errno = 1639 + ERROR_INSTALL_REMOTE_DISALLOWED syscall.Errno = 1640 + ERROR_SUCCESS_REBOOT_INITIATED syscall.Errno = 1641 + ERROR_PATCH_TARGET_NOT_FOUND syscall.Errno = 1642 + ERROR_PATCH_PACKAGE_REJECTED syscall.Errno = 1643 + ERROR_INSTALL_TRANSFORM_REJECTED syscall.Errno = 1644 + ERROR_INSTALL_REMOTE_PROHIBITED syscall.Errno = 1645 + ERROR_PATCH_REMOVAL_UNSUPPORTED syscall.Errno = 1646 + ERROR_UNKNOWN_PATCH syscall.Errno = 1647 + ERROR_PATCH_NO_SEQUENCE syscall.Errno = 1648 + ERROR_PATCH_REMOVAL_DISALLOWED syscall.Errno = 1649 + ERROR_INVALID_PATCH_XML syscall.Errno = 1650 + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT syscall.Errno = 1651 + ERROR_INSTALL_SERVICE_SAFEBOOT syscall.Errno = 1652 + ERROR_FAIL_FAST_EXCEPTION syscall.Errno = 1653 + ERROR_INSTALL_REJECTED syscall.Errno = 1654 + ERROR_DYNAMIC_CODE_BLOCKED syscall.Errno = 1655 + ERROR_NOT_SAME_OBJECT syscall.Errno = 1656 + ERROR_STRICT_CFG_VIOLATION syscall.Errno = 1657 + ERROR_SET_CONTEXT_DENIED syscall.Errno = 1660 + ERROR_CROSS_PARTITION_VIOLATION syscall.Errno = 1661 + RPC_S_INVALID_STRING_BINDING syscall.Errno = 1700 + RPC_S_WRONG_KIND_OF_BINDING syscall.Errno = 1701 + RPC_S_INVALID_BINDING syscall.Errno = 1702 + RPC_S_PROTSEQ_NOT_SUPPORTED syscall.Errno = 1703 + RPC_S_INVALID_RPC_PROTSEQ syscall.Errno = 1704 + RPC_S_INVALID_STRING_UUID syscall.Errno = 1705 + RPC_S_INVALID_ENDPOINT_FORMAT syscall.Errno = 1706 + RPC_S_INVALID_NET_ADDR syscall.Errno = 1707 + RPC_S_NO_ENDPOINT_FOUND syscall.Errno = 1708 + RPC_S_INVALID_TIMEOUT syscall.Errno = 1709 + RPC_S_OBJECT_NOT_FOUND syscall.Errno = 1710 + RPC_S_ALREADY_REGISTERED syscall.Errno = 1711 + RPC_S_TYPE_ALREADY_REGISTERED syscall.Errno = 1712 + RPC_S_ALREADY_LISTENING syscall.Errno = 1713 + RPC_S_NO_PROTSEQS_REGISTERED syscall.Errno = 1714 + RPC_S_NOT_LISTENING syscall.Errno = 1715 + RPC_S_UNKNOWN_MGR_TYPE syscall.Errno = 1716 + RPC_S_UNKNOWN_IF syscall.Errno = 1717 + RPC_S_NO_BINDINGS syscall.Errno = 1718 + RPC_S_NO_PROTSEQS syscall.Errno = 1719 + RPC_S_CANT_CREATE_ENDPOINT syscall.Errno = 1720 + RPC_S_OUT_OF_RESOURCES syscall.Errno = 1721 + RPC_S_SERVER_UNAVAILABLE syscall.Errno = 1722 + RPC_S_SERVER_TOO_BUSY syscall.Errno = 1723 + RPC_S_INVALID_NETWORK_OPTIONS syscall.Errno = 1724 + RPC_S_NO_CALL_ACTIVE syscall.Errno = 1725 + RPC_S_CALL_FAILED syscall.Errno = 1726 + RPC_S_CALL_FAILED_DNE syscall.Errno = 1727 + RPC_S_PROTOCOL_ERROR syscall.Errno = 1728 + RPC_S_PROXY_ACCESS_DENIED syscall.Errno = 1729 + RPC_S_UNSUPPORTED_TRANS_SYN syscall.Errno = 1730 + RPC_S_UNSUPPORTED_TYPE syscall.Errno = 1732 + RPC_S_INVALID_TAG syscall.Errno = 1733 + RPC_S_INVALID_BOUND syscall.Errno = 1734 + RPC_S_NO_ENTRY_NAME syscall.Errno = 1735 + RPC_S_INVALID_NAME_SYNTAX syscall.Errno = 1736 + RPC_S_UNSUPPORTED_NAME_SYNTAX syscall.Errno = 1737 + RPC_S_UUID_NO_ADDRESS syscall.Errno = 1739 + RPC_S_DUPLICATE_ENDPOINT syscall.Errno = 1740 + RPC_S_UNKNOWN_AUTHN_TYPE syscall.Errno = 1741 + RPC_S_MAX_CALLS_TOO_SMALL syscall.Errno = 1742 + RPC_S_STRING_TOO_LONG syscall.Errno = 1743 + RPC_S_PROTSEQ_NOT_FOUND syscall.Errno = 1744 + RPC_S_PROCNUM_OUT_OF_RANGE syscall.Errno = 1745 + RPC_S_BINDING_HAS_NO_AUTH syscall.Errno = 1746 + RPC_S_UNKNOWN_AUTHN_SERVICE syscall.Errno = 1747 + RPC_S_UNKNOWN_AUTHN_LEVEL syscall.Errno = 1748 + RPC_S_INVALID_AUTH_IDENTITY syscall.Errno = 1749 + RPC_S_UNKNOWN_AUTHZ_SERVICE syscall.Errno = 1750 + EPT_S_INVALID_ENTRY syscall.Errno = 1751 + EPT_S_CANT_PERFORM_OP syscall.Errno = 1752 + EPT_S_NOT_REGISTERED syscall.Errno = 1753 + RPC_S_NOTHING_TO_EXPORT syscall.Errno = 1754 + RPC_S_INCOMPLETE_NAME syscall.Errno = 1755 + RPC_S_INVALID_VERS_OPTION syscall.Errno = 1756 + RPC_S_NO_MORE_MEMBERS syscall.Errno = 1757 + RPC_S_NOT_ALL_OBJS_UNEXPORTED syscall.Errno = 1758 + RPC_S_INTERFACE_NOT_FOUND syscall.Errno = 1759 + RPC_S_ENTRY_ALREADY_EXISTS syscall.Errno = 1760 + RPC_S_ENTRY_NOT_FOUND syscall.Errno = 1761 + RPC_S_NAME_SERVICE_UNAVAILABLE syscall.Errno = 1762 + RPC_S_INVALID_NAF_ID syscall.Errno = 1763 + RPC_S_CANNOT_SUPPORT syscall.Errno = 1764 + RPC_S_NO_CONTEXT_AVAILABLE syscall.Errno = 1765 + RPC_S_INTERNAL_ERROR syscall.Errno = 1766 + RPC_S_ZERO_DIVIDE syscall.Errno = 1767 + RPC_S_ADDRESS_ERROR syscall.Errno = 1768 + RPC_S_FP_DIV_ZERO syscall.Errno = 1769 + RPC_S_FP_UNDERFLOW syscall.Errno = 1770 + RPC_S_FP_OVERFLOW syscall.Errno = 1771 + RPC_X_NO_MORE_ENTRIES syscall.Errno = 1772 + RPC_X_SS_CHAR_TRANS_OPEN_FAIL syscall.Errno = 1773 + RPC_X_SS_CHAR_TRANS_SHORT_FILE syscall.Errno = 1774 + RPC_X_SS_IN_NULL_CONTEXT syscall.Errno = 1775 + RPC_X_SS_CONTEXT_DAMAGED syscall.Errno = 1777 + RPC_X_SS_HANDLES_MISMATCH syscall.Errno = 1778 + RPC_X_SS_CANNOT_GET_CALL_HANDLE syscall.Errno = 1779 + RPC_X_NULL_REF_POINTER syscall.Errno = 1780 + RPC_X_ENUM_VALUE_OUT_OF_RANGE syscall.Errno = 1781 + RPC_X_BYTE_COUNT_TOO_SMALL syscall.Errno = 1782 + RPC_X_BAD_STUB_DATA syscall.Errno = 1783 + ERROR_INVALID_USER_BUFFER syscall.Errno = 1784 + ERROR_UNRECOGNIZED_MEDIA syscall.Errno = 1785 + ERROR_NO_TRUST_LSA_SECRET syscall.Errno = 1786 + ERROR_NO_TRUST_SAM_ACCOUNT syscall.Errno = 1787 + ERROR_TRUSTED_DOMAIN_FAILURE syscall.Errno = 1788 + ERROR_TRUSTED_RELATIONSHIP_FAILURE syscall.Errno = 1789 + ERROR_TRUST_FAILURE syscall.Errno = 1790 + RPC_S_CALL_IN_PROGRESS syscall.Errno = 1791 + ERROR_NETLOGON_NOT_STARTED syscall.Errno = 1792 + ERROR_ACCOUNT_EXPIRED syscall.Errno = 1793 + ERROR_REDIRECTOR_HAS_OPEN_HANDLES syscall.Errno = 1794 + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED syscall.Errno = 1795 + ERROR_UNKNOWN_PORT syscall.Errno = 1796 + ERROR_UNKNOWN_PRINTER_DRIVER syscall.Errno = 1797 + ERROR_UNKNOWN_PRINTPROCESSOR syscall.Errno = 1798 + ERROR_INVALID_SEPARATOR_FILE syscall.Errno = 1799 + ERROR_INVALID_PRIORITY syscall.Errno = 1800 + ERROR_INVALID_PRINTER_NAME syscall.Errno = 1801 + ERROR_PRINTER_ALREADY_EXISTS syscall.Errno = 1802 + ERROR_INVALID_PRINTER_COMMAND syscall.Errno = 1803 + ERROR_INVALID_DATATYPE syscall.Errno = 1804 + ERROR_INVALID_ENVIRONMENT syscall.Errno = 1805 + RPC_S_NO_MORE_BINDINGS syscall.Errno = 1806 + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT syscall.Errno = 1807 + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT syscall.Errno = 1808 + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT syscall.Errno = 1809 + ERROR_DOMAIN_TRUST_INCONSISTENT syscall.Errno = 1810 + ERROR_SERVER_HAS_OPEN_HANDLES syscall.Errno = 1811 + ERROR_RESOURCE_DATA_NOT_FOUND syscall.Errno = 1812 + ERROR_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 1813 + ERROR_RESOURCE_NAME_NOT_FOUND syscall.Errno = 1814 + ERROR_RESOURCE_LANG_NOT_FOUND syscall.Errno = 1815 + ERROR_NOT_ENOUGH_QUOTA syscall.Errno = 1816 + RPC_S_NO_INTERFACES syscall.Errno = 1817 + RPC_S_CALL_CANCELLED syscall.Errno = 1818 + RPC_S_BINDING_INCOMPLETE syscall.Errno = 1819 + RPC_S_COMM_FAILURE syscall.Errno = 1820 + RPC_S_UNSUPPORTED_AUTHN_LEVEL syscall.Errno = 1821 + RPC_S_NO_PRINC_NAME syscall.Errno = 1822 + RPC_S_NOT_RPC_ERROR syscall.Errno = 1823 + RPC_S_UUID_LOCAL_ONLY syscall.Errno = 1824 + RPC_S_SEC_PKG_ERROR syscall.Errno = 1825 + RPC_S_NOT_CANCELLED syscall.Errno = 1826 + RPC_X_INVALID_ES_ACTION syscall.Errno = 1827 + RPC_X_WRONG_ES_VERSION syscall.Errno = 1828 + RPC_X_WRONG_STUB_VERSION syscall.Errno = 1829 + RPC_X_INVALID_PIPE_OBJECT syscall.Errno = 1830 + RPC_X_WRONG_PIPE_ORDER syscall.Errno = 1831 + RPC_X_WRONG_PIPE_VERSION syscall.Errno = 1832 + RPC_S_COOKIE_AUTH_FAILED syscall.Errno = 1833 + RPC_S_DO_NOT_DISTURB syscall.Errno = 1834 + RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED syscall.Errno = 1835 + RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH syscall.Errno = 1836 + RPC_S_GROUP_MEMBER_NOT_FOUND syscall.Errno = 1898 + EPT_S_CANT_CREATE syscall.Errno = 1899 + RPC_S_INVALID_OBJECT syscall.Errno = 1900 + ERROR_INVALID_TIME syscall.Errno = 1901 + ERROR_INVALID_FORM_NAME syscall.Errno = 1902 + ERROR_INVALID_FORM_SIZE syscall.Errno = 1903 + ERROR_ALREADY_WAITING syscall.Errno = 1904 + ERROR_PRINTER_DELETED syscall.Errno = 1905 + ERROR_INVALID_PRINTER_STATE syscall.Errno = 1906 + ERROR_PASSWORD_MUST_CHANGE syscall.Errno = 1907 + ERROR_DOMAIN_CONTROLLER_NOT_FOUND syscall.Errno = 1908 + ERROR_ACCOUNT_LOCKED_OUT syscall.Errno = 1909 + OR_INVALID_OXID syscall.Errno = 1910 + OR_INVALID_OID syscall.Errno = 1911 + OR_INVALID_SET syscall.Errno = 1912 + RPC_S_SEND_INCOMPLETE syscall.Errno = 1913 + RPC_S_INVALID_ASYNC_HANDLE syscall.Errno = 1914 + RPC_S_INVALID_ASYNC_CALL syscall.Errno = 1915 + RPC_X_PIPE_CLOSED syscall.Errno = 1916 + RPC_X_PIPE_DISCIPLINE_ERROR syscall.Errno = 1917 + RPC_X_PIPE_EMPTY syscall.Errno = 1918 + ERROR_NO_SITENAME syscall.Errno = 1919 + ERROR_CANT_ACCESS_FILE syscall.Errno = 1920 + ERROR_CANT_RESOLVE_FILENAME syscall.Errno = 1921 + RPC_S_ENTRY_TYPE_MISMATCH syscall.Errno = 1922 + RPC_S_NOT_ALL_OBJS_EXPORTED syscall.Errno = 1923 + RPC_S_INTERFACE_NOT_EXPORTED syscall.Errno = 1924 + RPC_S_PROFILE_NOT_ADDED syscall.Errno = 1925 + RPC_S_PRF_ELT_NOT_ADDED syscall.Errno = 1926 + RPC_S_PRF_ELT_NOT_REMOVED syscall.Errno = 1927 + RPC_S_GRP_ELT_NOT_ADDED syscall.Errno = 1928 + RPC_S_GRP_ELT_NOT_REMOVED syscall.Errno = 1929 + ERROR_KM_DRIVER_BLOCKED syscall.Errno = 1930 + ERROR_CONTEXT_EXPIRED syscall.Errno = 1931 + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1932 + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1933 + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED syscall.Errno = 1934 + ERROR_AUTHENTICATION_FIREWALL_FAILED syscall.Errno = 1935 + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED syscall.Errno = 1936 + ERROR_NTLM_BLOCKED syscall.Errno = 1937 + ERROR_PASSWORD_CHANGE_REQUIRED syscall.Errno = 1938 + ERROR_LOST_MODE_LOGON_RESTRICTION syscall.Errno = 1939 + ERROR_INVALID_PIXEL_FORMAT syscall.Errno = 2000 + ERROR_BAD_DRIVER syscall.Errno = 2001 + ERROR_INVALID_WINDOW_STYLE syscall.Errno = 2002 + ERROR_METAFILE_NOT_SUPPORTED syscall.Errno = 2003 + ERROR_TRANSFORM_NOT_SUPPORTED syscall.Errno = 2004 + ERROR_CLIPPING_NOT_SUPPORTED syscall.Errno = 2005 + ERROR_INVALID_CMM syscall.Errno = 2010 + ERROR_INVALID_PROFILE syscall.Errno = 2011 + ERROR_TAG_NOT_FOUND syscall.Errno = 2012 + ERROR_TAG_NOT_PRESENT syscall.Errno = 2013 + ERROR_DUPLICATE_TAG syscall.Errno = 2014 + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE syscall.Errno = 2015 + ERROR_PROFILE_NOT_FOUND syscall.Errno = 2016 + ERROR_INVALID_COLORSPACE syscall.Errno = 2017 + ERROR_ICM_NOT_ENABLED syscall.Errno = 2018 + ERROR_DELETING_ICM_XFORM syscall.Errno = 2019 + ERROR_INVALID_TRANSFORM syscall.Errno = 2020 + ERROR_COLORSPACE_MISMATCH syscall.Errno = 2021 + ERROR_INVALID_COLORINDEX syscall.Errno = 2022 + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE syscall.Errno = 2023 + ERROR_CONNECTED_OTHER_PASSWORD syscall.Errno = 2108 + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT syscall.Errno = 2109 + ERROR_BAD_USERNAME syscall.Errno = 2202 + ERROR_NOT_CONNECTED syscall.Errno = 2250 + ERROR_OPEN_FILES syscall.Errno = 2401 + ERROR_ACTIVE_CONNECTIONS syscall.Errno = 2402 + ERROR_DEVICE_IN_USE syscall.Errno = 2404 + ERROR_UNKNOWN_PRINT_MONITOR syscall.Errno = 3000 + ERROR_PRINTER_DRIVER_IN_USE syscall.Errno = 3001 + ERROR_SPOOL_FILE_NOT_FOUND syscall.Errno = 3002 + ERROR_SPL_NO_STARTDOC syscall.Errno = 3003 + ERROR_SPL_NO_ADDJOB syscall.Errno = 3004 + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED syscall.Errno = 3005 + ERROR_PRINT_MONITOR_ALREADY_INSTALLED syscall.Errno = 3006 + ERROR_INVALID_PRINT_MONITOR syscall.Errno = 3007 + ERROR_PRINT_MONITOR_IN_USE syscall.Errno = 3008 + ERROR_PRINTER_HAS_JOBS_QUEUED syscall.Errno = 3009 + ERROR_SUCCESS_REBOOT_REQUIRED syscall.Errno = 3010 + ERROR_SUCCESS_RESTART_REQUIRED syscall.Errno = 3011 + ERROR_PRINTER_NOT_FOUND syscall.Errno = 3012 + ERROR_PRINTER_DRIVER_WARNED syscall.Errno = 3013 + ERROR_PRINTER_DRIVER_BLOCKED syscall.Errno = 3014 + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE syscall.Errno = 3015 + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND syscall.Errno = 3016 + ERROR_FAIL_REBOOT_REQUIRED syscall.Errno = 3017 + ERROR_FAIL_REBOOT_INITIATED syscall.Errno = 3018 + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED syscall.Errno = 3019 + ERROR_PRINT_JOB_RESTART_REQUIRED syscall.Errno = 3020 + ERROR_INVALID_PRINTER_DRIVER_MANIFEST syscall.Errno = 3021 + ERROR_PRINTER_NOT_SHAREABLE syscall.Errno = 3022 + ERROR_REQUEST_PAUSED syscall.Errno = 3050 + ERROR_APPEXEC_CONDITION_NOT_SATISFIED syscall.Errno = 3060 + ERROR_APPEXEC_HANDLE_INVALIDATED syscall.Errno = 3061 + ERROR_APPEXEC_INVALID_HOST_GENERATION syscall.Errno = 3062 + ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION syscall.Errno = 3063 + ERROR_APPEXEC_INVALID_HOST_STATE syscall.Errno = 3064 + ERROR_APPEXEC_NO_DONOR syscall.Errno = 3065 + ERROR_APPEXEC_HOST_ID_MISMATCH syscall.Errno = 3066 + ERROR_APPEXEC_UNKNOWN_USER syscall.Errno = 3067 + ERROR_IO_REISSUE_AS_CACHED syscall.Errno = 3950 + ERROR_WINS_INTERNAL syscall.Errno = 4000 + ERROR_CAN_NOT_DEL_LOCAL_WINS syscall.Errno = 4001 + ERROR_STATIC_INIT syscall.Errno = 4002 + ERROR_INC_BACKUP syscall.Errno = 4003 + ERROR_FULL_BACKUP syscall.Errno = 4004 + ERROR_REC_NON_EXISTENT syscall.Errno = 4005 + ERROR_RPL_NOT_ALLOWED syscall.Errno = 4006 + PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED syscall.Errno = 4050 + PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO syscall.Errno = 4051 + PEERDIST_ERROR_MISSING_DATA syscall.Errno = 4052 + PEERDIST_ERROR_NO_MORE syscall.Errno = 4053 + PEERDIST_ERROR_NOT_INITIALIZED syscall.Errno = 4054 + PEERDIST_ERROR_ALREADY_INITIALIZED syscall.Errno = 4055 + PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 4056 + PEERDIST_ERROR_INVALIDATED syscall.Errno = 4057 + PEERDIST_ERROR_ALREADY_EXISTS syscall.Errno = 4058 + PEERDIST_ERROR_OPERATION_NOTFOUND syscall.Errno = 4059 + PEERDIST_ERROR_ALREADY_COMPLETED syscall.Errno = 4060 + PEERDIST_ERROR_OUT_OF_BOUNDS syscall.Errno = 4061 + PEERDIST_ERROR_VERSION_UNSUPPORTED syscall.Errno = 4062 + PEERDIST_ERROR_INVALID_CONFIGURATION syscall.Errno = 4063 + PEERDIST_ERROR_NOT_LICENSED syscall.Errno = 4064 + PEERDIST_ERROR_SERVICE_UNAVAILABLE syscall.Errno = 4065 + PEERDIST_ERROR_TRUST_FAILURE syscall.Errno = 4066 + ERROR_DHCP_ADDRESS_CONFLICT syscall.Errno = 4100 + ERROR_WMI_GUID_NOT_FOUND syscall.Errno = 4200 + ERROR_WMI_INSTANCE_NOT_FOUND syscall.Errno = 4201 + ERROR_WMI_ITEMID_NOT_FOUND syscall.Errno = 4202 + ERROR_WMI_TRY_AGAIN syscall.Errno = 4203 + ERROR_WMI_DP_NOT_FOUND syscall.Errno = 4204 + ERROR_WMI_UNRESOLVED_INSTANCE_REF syscall.Errno = 4205 + ERROR_WMI_ALREADY_ENABLED syscall.Errno = 4206 + ERROR_WMI_GUID_DISCONNECTED syscall.Errno = 4207 + ERROR_WMI_SERVER_UNAVAILABLE syscall.Errno = 4208 + ERROR_WMI_DP_FAILED syscall.Errno = 4209 + ERROR_WMI_INVALID_MOF syscall.Errno = 4210 + ERROR_WMI_INVALID_REGINFO syscall.Errno = 4211 + ERROR_WMI_ALREADY_DISABLED syscall.Errno = 4212 + ERROR_WMI_READ_ONLY syscall.Errno = 4213 + ERROR_WMI_SET_FAILURE syscall.Errno = 4214 + ERROR_NOT_APPCONTAINER syscall.Errno = 4250 + ERROR_APPCONTAINER_REQUIRED syscall.Errno = 4251 + ERROR_NOT_SUPPORTED_IN_APPCONTAINER syscall.Errno = 4252 + ERROR_INVALID_PACKAGE_SID_LENGTH syscall.Errno = 4253 + ERROR_INVALID_MEDIA syscall.Errno = 4300 + ERROR_INVALID_LIBRARY syscall.Errno = 4301 + ERROR_INVALID_MEDIA_POOL syscall.Errno = 4302 + ERROR_DRIVE_MEDIA_MISMATCH syscall.Errno = 4303 + ERROR_MEDIA_OFFLINE syscall.Errno = 4304 + ERROR_LIBRARY_OFFLINE syscall.Errno = 4305 + ERROR_EMPTY syscall.Errno = 4306 + ERROR_NOT_EMPTY syscall.Errno = 4307 + ERROR_MEDIA_UNAVAILABLE syscall.Errno = 4308 + ERROR_RESOURCE_DISABLED syscall.Errno = 4309 + ERROR_INVALID_CLEANER syscall.Errno = 4310 + ERROR_UNABLE_TO_CLEAN syscall.Errno = 4311 + ERROR_OBJECT_NOT_FOUND syscall.Errno = 4312 + ERROR_DATABASE_FAILURE syscall.Errno = 4313 + ERROR_DATABASE_FULL syscall.Errno = 4314 + ERROR_MEDIA_INCOMPATIBLE syscall.Errno = 4315 + ERROR_RESOURCE_NOT_PRESENT syscall.Errno = 4316 + ERROR_INVALID_OPERATION syscall.Errno = 4317 + ERROR_MEDIA_NOT_AVAILABLE syscall.Errno = 4318 + ERROR_DEVICE_NOT_AVAILABLE syscall.Errno = 4319 + ERROR_REQUEST_REFUSED syscall.Errno = 4320 + ERROR_INVALID_DRIVE_OBJECT syscall.Errno = 4321 + ERROR_LIBRARY_FULL syscall.Errno = 4322 + ERROR_MEDIUM_NOT_ACCESSIBLE syscall.Errno = 4323 + ERROR_UNABLE_TO_LOAD_MEDIUM syscall.Errno = 4324 + ERROR_UNABLE_TO_INVENTORY_DRIVE syscall.Errno = 4325 + ERROR_UNABLE_TO_INVENTORY_SLOT syscall.Errno = 4326 + ERROR_UNABLE_TO_INVENTORY_TRANSPORT syscall.Errno = 4327 + ERROR_TRANSPORT_FULL syscall.Errno = 4328 + ERROR_CONTROLLING_IEPORT syscall.Errno = 4329 + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA syscall.Errno = 4330 + ERROR_CLEANER_SLOT_SET syscall.Errno = 4331 + ERROR_CLEANER_SLOT_NOT_SET syscall.Errno = 4332 + ERROR_CLEANER_CARTRIDGE_SPENT syscall.Errno = 4333 + ERROR_UNEXPECTED_OMID syscall.Errno = 4334 + ERROR_CANT_DELETE_LAST_ITEM syscall.Errno = 4335 + ERROR_MESSAGE_EXCEEDS_MAX_SIZE syscall.Errno = 4336 + ERROR_VOLUME_CONTAINS_SYS_FILES syscall.Errno = 4337 + ERROR_INDIGENOUS_TYPE syscall.Errno = 4338 + ERROR_NO_SUPPORTING_DRIVES syscall.Errno = 4339 + ERROR_CLEANER_CARTRIDGE_INSTALLED syscall.Errno = 4340 + ERROR_IEPORT_FULL syscall.Errno = 4341 + ERROR_FILE_OFFLINE syscall.Errno = 4350 + ERROR_REMOTE_STORAGE_NOT_ACTIVE syscall.Errno = 4351 + ERROR_REMOTE_STORAGE_MEDIA_ERROR syscall.Errno = 4352 + ERROR_NOT_A_REPARSE_POINT syscall.Errno = 4390 + ERROR_REPARSE_ATTRIBUTE_CONFLICT syscall.Errno = 4391 + ERROR_INVALID_REPARSE_DATA syscall.Errno = 4392 + ERROR_REPARSE_TAG_INVALID syscall.Errno = 4393 + ERROR_REPARSE_TAG_MISMATCH syscall.Errno = 4394 + ERROR_REPARSE_POINT_ENCOUNTERED syscall.Errno = 4395 + ERROR_APP_DATA_NOT_FOUND syscall.Errno = 4400 + ERROR_APP_DATA_EXPIRED syscall.Errno = 4401 + ERROR_APP_DATA_CORRUPT syscall.Errno = 4402 + ERROR_APP_DATA_LIMIT_EXCEEDED syscall.Errno = 4403 + ERROR_APP_DATA_REBOOT_REQUIRED syscall.Errno = 4404 + ERROR_SECUREBOOT_ROLLBACK_DETECTED syscall.Errno = 4420 + ERROR_SECUREBOOT_POLICY_VIOLATION syscall.Errno = 4421 + ERROR_SECUREBOOT_INVALID_POLICY syscall.Errno = 4422 + ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND syscall.Errno = 4423 + ERROR_SECUREBOOT_POLICY_NOT_SIGNED syscall.Errno = 4424 + ERROR_SECUREBOOT_NOT_ENABLED syscall.Errno = 4425 + ERROR_SECUREBOOT_FILE_REPLACED syscall.Errno = 4426 + ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED syscall.Errno = 4427 + ERROR_SECUREBOOT_POLICY_UNKNOWN syscall.Errno = 4428 + ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION syscall.Errno = 4429 + ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH syscall.Errno = 4430 + ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED syscall.Errno = 4431 + ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH syscall.Errno = 4432 + ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING syscall.Errno = 4433 + ERROR_SECUREBOOT_NOT_BASE_POLICY syscall.Errno = 4434 + ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY syscall.Errno = 4435 + ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED syscall.Errno = 4440 + ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED syscall.Errno = 4441 + ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED syscall.Errno = 4442 + ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED syscall.Errno = 4443 + ERROR_ALREADY_HAS_STREAM_ID syscall.Errno = 4444 + ERROR_SMR_GARBAGE_COLLECTION_REQUIRED syscall.Errno = 4445 + ERROR_WOF_WIM_HEADER_CORRUPT syscall.Errno = 4446 + ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT syscall.Errno = 4447 + ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT syscall.Errno = 4448 + ERROR_VOLUME_NOT_SIS_ENABLED syscall.Errno = 4500 + ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED syscall.Errno = 4550 + ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551 + ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552 + ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553 + ERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES syscall.Errno = 4554 + ERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED syscall.Errno = 4555 + ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560 + ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561 + ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570 + ERROR_PLATFORM_MANIFEST_INVALID syscall.Errno = 4571 + ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED syscall.Errno = 4572 + ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED syscall.Errno = 4573 + ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND syscall.Errno = 4574 + ERROR_PLATFORM_MANIFEST_NOT_ACTIVE syscall.Errno = 4575 + ERROR_PLATFORM_MANIFEST_NOT_SIGNED syscall.Errno = 4576 + ERROR_DEPENDENT_RESOURCE_EXISTS syscall.Errno = 5001 + ERROR_DEPENDENCY_NOT_FOUND syscall.Errno = 5002 + ERROR_DEPENDENCY_ALREADY_EXISTS syscall.Errno = 5003 + ERROR_RESOURCE_NOT_ONLINE syscall.Errno = 5004 + ERROR_HOST_NODE_NOT_AVAILABLE syscall.Errno = 5005 + ERROR_RESOURCE_NOT_AVAILABLE syscall.Errno = 5006 + ERROR_RESOURCE_NOT_FOUND syscall.Errno = 5007 + ERROR_SHUTDOWN_CLUSTER syscall.Errno = 5008 + ERROR_CANT_EVICT_ACTIVE_NODE syscall.Errno = 5009 + ERROR_OBJECT_ALREADY_EXISTS syscall.Errno = 5010 + ERROR_OBJECT_IN_LIST syscall.Errno = 5011 + ERROR_GROUP_NOT_AVAILABLE syscall.Errno = 5012 + ERROR_GROUP_NOT_FOUND syscall.Errno = 5013 + ERROR_GROUP_NOT_ONLINE syscall.Errno = 5014 + ERROR_HOST_NODE_NOT_RESOURCE_OWNER syscall.Errno = 5015 + ERROR_HOST_NODE_NOT_GROUP_OWNER syscall.Errno = 5016 + ERROR_RESMON_CREATE_FAILED syscall.Errno = 5017 + ERROR_RESMON_ONLINE_FAILED syscall.Errno = 5018 + ERROR_RESOURCE_ONLINE syscall.Errno = 5019 + ERROR_QUORUM_RESOURCE syscall.Errno = 5020 + ERROR_NOT_QUORUM_CAPABLE syscall.Errno = 5021 + ERROR_CLUSTER_SHUTTING_DOWN syscall.Errno = 5022 + ERROR_INVALID_STATE syscall.Errno = 5023 + ERROR_RESOURCE_PROPERTIES_STORED syscall.Errno = 5024 + ERROR_NOT_QUORUM_CLASS syscall.Errno = 5025 + ERROR_CORE_RESOURCE syscall.Errno = 5026 + ERROR_QUORUM_RESOURCE_ONLINE_FAILED syscall.Errno = 5027 + ERROR_QUORUMLOG_OPEN_FAILED syscall.Errno = 5028 + ERROR_CLUSTERLOG_CORRUPT syscall.Errno = 5029 + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE syscall.Errno = 5030 + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE syscall.Errno = 5031 + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND syscall.Errno = 5032 + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE syscall.Errno = 5033 + ERROR_QUORUM_OWNER_ALIVE syscall.Errno = 5034 + ERROR_NETWORK_NOT_AVAILABLE syscall.Errno = 5035 + ERROR_NODE_NOT_AVAILABLE syscall.Errno = 5036 + ERROR_ALL_NODES_NOT_AVAILABLE syscall.Errno = 5037 + ERROR_RESOURCE_FAILED syscall.Errno = 5038 + ERROR_CLUSTER_INVALID_NODE syscall.Errno = 5039 + ERROR_CLUSTER_NODE_EXISTS syscall.Errno = 5040 + ERROR_CLUSTER_JOIN_IN_PROGRESS syscall.Errno = 5041 + ERROR_CLUSTER_NODE_NOT_FOUND syscall.Errno = 5042 + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND syscall.Errno = 5043 + ERROR_CLUSTER_NETWORK_EXISTS syscall.Errno = 5044 + ERROR_CLUSTER_NETWORK_NOT_FOUND syscall.Errno = 5045 + ERROR_CLUSTER_NETINTERFACE_EXISTS syscall.Errno = 5046 + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND syscall.Errno = 5047 + ERROR_CLUSTER_INVALID_REQUEST syscall.Errno = 5048 + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER syscall.Errno = 5049 + ERROR_CLUSTER_NODE_DOWN syscall.Errno = 5050 + ERROR_CLUSTER_NODE_UNREACHABLE syscall.Errno = 5051 + ERROR_CLUSTER_NODE_NOT_MEMBER syscall.Errno = 5052 + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS syscall.Errno = 5053 + ERROR_CLUSTER_INVALID_NETWORK syscall.Errno = 5054 + ERROR_CLUSTER_NODE_UP syscall.Errno = 5056 + ERROR_CLUSTER_IPADDR_IN_USE syscall.Errno = 5057 + ERROR_CLUSTER_NODE_NOT_PAUSED syscall.Errno = 5058 + ERROR_CLUSTER_NO_SECURITY_CONTEXT syscall.Errno = 5059 + ERROR_CLUSTER_NETWORK_NOT_INTERNAL syscall.Errno = 5060 + ERROR_CLUSTER_NODE_ALREADY_UP syscall.Errno = 5061 + ERROR_CLUSTER_NODE_ALREADY_DOWN syscall.Errno = 5062 + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE syscall.Errno = 5063 + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE syscall.Errno = 5064 + ERROR_CLUSTER_NODE_ALREADY_MEMBER syscall.Errno = 5065 + ERROR_CLUSTER_LAST_INTERNAL_NETWORK syscall.Errno = 5066 + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS syscall.Errno = 5067 + ERROR_INVALID_OPERATION_ON_QUORUM syscall.Errno = 5068 + ERROR_DEPENDENCY_NOT_ALLOWED syscall.Errno = 5069 + ERROR_CLUSTER_NODE_PAUSED syscall.Errno = 5070 + ERROR_NODE_CANT_HOST_RESOURCE syscall.Errno = 5071 + ERROR_CLUSTER_NODE_NOT_READY syscall.Errno = 5072 + ERROR_CLUSTER_NODE_SHUTTING_DOWN syscall.Errno = 5073 + ERROR_CLUSTER_JOIN_ABORTED syscall.Errno = 5074 + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS syscall.Errno = 5075 + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED syscall.Errno = 5076 + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED syscall.Errno = 5077 + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 5078 + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED syscall.Errno = 5079 + ERROR_CLUSTER_RESNAME_NOT_FOUND syscall.Errno = 5080 + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED syscall.Errno = 5081 + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST syscall.Errno = 5082 + ERROR_CLUSTER_DATABASE_SEQMISMATCH syscall.Errno = 5083 + ERROR_RESMON_INVALID_STATE syscall.Errno = 5084 + ERROR_CLUSTER_GUM_NOT_LOCKER syscall.Errno = 5085 + ERROR_QUORUM_DISK_NOT_FOUND syscall.Errno = 5086 + ERROR_DATABASE_BACKUP_CORRUPT syscall.Errno = 5087 + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT syscall.Errno = 5088 + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE syscall.Errno = 5089 + ERROR_NO_ADMIN_ACCESS_POINT syscall.Errno = 5090 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE syscall.Errno = 5890 + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND syscall.Errno = 5891 + ERROR_CLUSTER_MEMBERSHIP_HALT syscall.Errno = 5892 + ERROR_CLUSTER_INSTANCE_ID_MISMATCH syscall.Errno = 5893 + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP syscall.Errno = 5894 + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH syscall.Errno = 5895 + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP syscall.Errno = 5896 + ERROR_CLUSTER_PARAMETER_MISMATCH syscall.Errno = 5897 + ERROR_NODE_CANNOT_BE_CLUSTERED syscall.Errno = 5898 + ERROR_CLUSTER_WRONG_OS_VERSION syscall.Errno = 5899 + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME syscall.Errno = 5900 + ERROR_CLUSCFG_ALREADY_COMMITTED syscall.Errno = 5901 + ERROR_CLUSCFG_ROLLBACK_FAILED syscall.Errno = 5902 + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT syscall.Errno = 5903 + ERROR_CLUSTER_OLD_VERSION syscall.Errno = 5904 + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME syscall.Errno = 5905 + ERROR_CLUSTER_NO_NET_ADAPTERS syscall.Errno = 5906 + ERROR_CLUSTER_POISONED syscall.Errno = 5907 + ERROR_CLUSTER_GROUP_MOVING syscall.Errno = 5908 + ERROR_CLUSTER_RESOURCE_TYPE_BUSY syscall.Errno = 5909 + ERROR_RESOURCE_CALL_TIMED_OUT syscall.Errno = 5910 + ERROR_INVALID_CLUSTER_IPV6_ADDRESS syscall.Errno = 5911 + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION syscall.Errno = 5912 + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS syscall.Errno = 5913 + ERROR_CLUSTER_PARTIAL_SEND syscall.Errno = 5914 + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION syscall.Errno = 5915 + ERROR_CLUSTER_INVALID_STRING_TERMINATION syscall.Errno = 5916 + ERROR_CLUSTER_INVALID_STRING_FORMAT syscall.Errno = 5917 + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS syscall.Errno = 5918 + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS syscall.Errno = 5919 + ERROR_CLUSTER_NULL_DATA syscall.Errno = 5920 + ERROR_CLUSTER_PARTIAL_READ syscall.Errno = 5921 + ERROR_CLUSTER_PARTIAL_WRITE syscall.Errno = 5922 + ERROR_CLUSTER_CANT_DESERIALIZE_DATA syscall.Errno = 5923 + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT syscall.Errno = 5924 + ERROR_CLUSTER_NO_QUORUM syscall.Errno = 5925 + ERROR_CLUSTER_INVALID_IPV6_NETWORK syscall.Errno = 5926 + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK syscall.Errno = 5927 + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP syscall.Errno = 5928 + ERROR_DEPENDENCY_TREE_TOO_COMPLEX syscall.Errno = 5929 + ERROR_EXCEPTION_IN_RESOURCE_CALL syscall.Errno = 5930 + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION syscall.Errno = 5931 + ERROR_CLUSTER_NOT_INSTALLED syscall.Errno = 5932 + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE syscall.Errno = 5933 + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER syscall.Errno = 5934 + ERROR_CLUSTER_TOO_MANY_NODES syscall.Errno = 5935 + ERROR_CLUSTER_OBJECT_ALREADY_USED syscall.Errno = 5936 + ERROR_NONCORE_GROUPS_FOUND syscall.Errno = 5937 + ERROR_FILE_SHARE_RESOURCE_CONFLICT syscall.Errno = 5938 + ERROR_CLUSTER_EVICT_INVALID_REQUEST syscall.Errno = 5939 + ERROR_CLUSTER_SINGLETON_RESOURCE syscall.Errno = 5940 + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE syscall.Errno = 5941 + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED syscall.Errno = 5942 + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR syscall.Errno = 5943 + ERROR_CLUSTER_GROUP_BUSY syscall.Errno = 5944 + ERROR_CLUSTER_NOT_SHARED_VOLUME syscall.Errno = 5945 + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR syscall.Errno = 5946 + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE syscall.Errno = 5947 + ERROR_CLUSTER_USE_SHARED_VOLUMES_API syscall.Errno = 5948 + ERROR_CLUSTER_BACKUP_IN_PROGRESS syscall.Errno = 5949 + ERROR_NON_CSV_PATH syscall.Errno = 5950 + ERROR_CSV_VOLUME_NOT_LOCAL syscall.Errno = 5951 + ERROR_CLUSTER_WATCHDOG_TERMINATING syscall.Errno = 5952 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES syscall.Errno = 5953 + ERROR_CLUSTER_INVALID_NODE_WEIGHT syscall.Errno = 5954 + ERROR_CLUSTER_RESOURCE_VETOED_CALL syscall.Errno = 5955 + ERROR_RESMON_SYSTEM_RESOURCES_LACKING syscall.Errno = 5956 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION syscall.Errno = 5957 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE syscall.Errno = 5958 + ERROR_CLUSTER_GROUP_QUEUED syscall.Errno = 5959 + ERROR_CLUSTER_RESOURCE_LOCKED_STATUS syscall.Errno = 5960 + ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED syscall.Errno = 5961 + ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS syscall.Errno = 5962 + ERROR_CLUSTER_DISK_NOT_CONNECTED syscall.Errno = 5963 + ERROR_DISK_NOT_CSV_CAPABLE syscall.Errno = 5964 + ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE syscall.Errno = 5965 + ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED syscall.Errno = 5966 + ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED syscall.Errno = 5967 + ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES syscall.Errno = 5968 + ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES syscall.Errno = 5969 + ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE syscall.Errno = 5970 + ERROR_CLUSTER_AFFINITY_CONFLICT syscall.Errno = 5971 + ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE syscall.Errno = 5972 + ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS syscall.Errno = 5973 + ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED syscall.Errno = 5974 + ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED syscall.Errno = 5975 + ERROR_CLUSTER_UPGRADE_IN_PROGRESS syscall.Errno = 5976 + ERROR_CLUSTER_UPGRADE_INCOMPLETE syscall.Errno = 5977 + ERROR_CLUSTER_NODE_IN_GRACE_PERIOD syscall.Errno = 5978 + ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT syscall.Errno = 5979 + ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER syscall.Errno = 5980 + ERROR_CLUSTER_RESOURCE_NOT_MONITORED syscall.Errno = 5981 + ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED syscall.Errno = 5982 + ERROR_CLUSTER_RESOURCE_IS_REPLICATED syscall.Errno = 5983 + ERROR_CLUSTER_NODE_ISOLATED syscall.Errno = 5984 + ERROR_CLUSTER_NODE_QUARANTINED syscall.Errno = 5985 + ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED syscall.Errno = 5986 + ERROR_CLUSTER_SPACE_DEGRADED syscall.Errno = 5987 + ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED syscall.Errno = 5988 + ERROR_CLUSTER_CSV_INVALID_HANDLE syscall.Errno = 5989 + ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR syscall.Errno = 5990 + ERROR_GROUPSET_NOT_AVAILABLE syscall.Errno = 5991 + ERROR_GROUPSET_NOT_FOUND syscall.Errno = 5992 + ERROR_GROUPSET_CANT_PROVIDE syscall.Errno = 5993 + ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND syscall.Errno = 5994 + ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY syscall.Errno = 5995 + ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION syscall.Errno = 5996 + ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS syscall.Errno = 5997 + ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME syscall.Errno = 5998 + ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE syscall.Errno = 5999 + ERROR_ENCRYPTION_FAILED syscall.Errno = 6000 + ERROR_DECRYPTION_FAILED syscall.Errno = 6001 + ERROR_FILE_ENCRYPTED syscall.Errno = 6002 + ERROR_NO_RECOVERY_POLICY syscall.Errno = 6003 + ERROR_NO_EFS syscall.Errno = 6004 + ERROR_WRONG_EFS syscall.Errno = 6005 + ERROR_NO_USER_KEYS syscall.Errno = 6006 + ERROR_FILE_NOT_ENCRYPTED syscall.Errno = 6007 + ERROR_NOT_EXPORT_FORMAT syscall.Errno = 6008 + ERROR_FILE_READ_ONLY syscall.Errno = 6009 + ERROR_DIR_EFS_DISALLOWED syscall.Errno = 6010 + ERROR_EFS_SERVER_NOT_TRUSTED syscall.Errno = 6011 + ERROR_BAD_RECOVERY_POLICY syscall.Errno = 6012 + ERROR_EFS_ALG_BLOB_TOO_BIG syscall.Errno = 6013 + ERROR_VOLUME_NOT_SUPPORT_EFS syscall.Errno = 6014 + ERROR_EFS_DISABLED syscall.Errno = 6015 + ERROR_EFS_VERSION_NOT_SUPPORT syscall.Errno = 6016 + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE syscall.Errno = 6017 + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER syscall.Errno = 6018 + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE syscall.Errno = 6019 + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020 + ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021 + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022 + ERROR_WIP_ENCRYPTION_FAILED syscall.Errno = 6023 + ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118 + SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200 + ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600 + ERROR_LOG_SECTOR_PARITY_INVALID syscall.Errno = 6601 + ERROR_LOG_SECTOR_REMAPPED syscall.Errno = 6602 + ERROR_LOG_BLOCK_INCOMPLETE syscall.Errno = 6603 + ERROR_LOG_INVALID_RANGE syscall.Errno = 6604 + ERROR_LOG_BLOCKS_EXHAUSTED syscall.Errno = 6605 + ERROR_LOG_READ_CONTEXT_INVALID syscall.Errno = 6606 + ERROR_LOG_RESTART_INVALID syscall.Errno = 6607 + ERROR_LOG_BLOCK_VERSION syscall.Errno = 6608 + ERROR_LOG_BLOCK_INVALID syscall.Errno = 6609 + ERROR_LOG_READ_MODE_INVALID syscall.Errno = 6610 + ERROR_LOG_NO_RESTART syscall.Errno = 6611 + ERROR_LOG_METADATA_CORRUPT syscall.Errno = 6612 + ERROR_LOG_METADATA_INVALID syscall.Errno = 6613 + ERROR_LOG_METADATA_INCONSISTENT syscall.Errno = 6614 + ERROR_LOG_RESERVATION_INVALID syscall.Errno = 6615 + ERROR_LOG_CANT_DELETE syscall.Errno = 6616 + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED syscall.Errno = 6617 + ERROR_LOG_START_OF_LOG syscall.Errno = 6618 + ERROR_LOG_POLICY_ALREADY_INSTALLED syscall.Errno = 6619 + ERROR_LOG_POLICY_NOT_INSTALLED syscall.Errno = 6620 + ERROR_LOG_POLICY_INVALID syscall.Errno = 6621 + ERROR_LOG_POLICY_CONFLICT syscall.Errno = 6622 + ERROR_LOG_PINNED_ARCHIVE_TAIL syscall.Errno = 6623 + ERROR_LOG_RECORD_NONEXISTENT syscall.Errno = 6624 + ERROR_LOG_RECORDS_RESERVED_INVALID syscall.Errno = 6625 + ERROR_LOG_SPACE_RESERVED_INVALID syscall.Errno = 6626 + ERROR_LOG_TAIL_INVALID syscall.Errno = 6627 + ERROR_LOG_FULL syscall.Errno = 6628 + ERROR_COULD_NOT_RESIZE_LOG syscall.Errno = 6629 + ERROR_LOG_MULTIPLEXED syscall.Errno = 6630 + ERROR_LOG_DEDICATED syscall.Errno = 6631 + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS syscall.Errno = 6632 + ERROR_LOG_ARCHIVE_IN_PROGRESS syscall.Errno = 6633 + ERROR_LOG_EPHEMERAL syscall.Errno = 6634 + ERROR_LOG_NOT_ENOUGH_CONTAINERS syscall.Errno = 6635 + ERROR_LOG_CLIENT_ALREADY_REGISTERED syscall.Errno = 6636 + ERROR_LOG_CLIENT_NOT_REGISTERED syscall.Errno = 6637 + ERROR_LOG_FULL_HANDLER_IN_PROGRESS syscall.Errno = 6638 + ERROR_LOG_CONTAINER_READ_FAILED syscall.Errno = 6639 + ERROR_LOG_CONTAINER_WRITE_FAILED syscall.Errno = 6640 + ERROR_LOG_CONTAINER_OPEN_FAILED syscall.Errno = 6641 + ERROR_LOG_CONTAINER_STATE_INVALID syscall.Errno = 6642 + ERROR_LOG_STATE_INVALID syscall.Errno = 6643 + ERROR_LOG_PINNED syscall.Errno = 6644 + ERROR_LOG_METADATA_FLUSH_FAILED syscall.Errno = 6645 + ERROR_LOG_INCONSISTENT_SECURITY syscall.Errno = 6646 + ERROR_LOG_APPENDED_FLUSH_FAILED syscall.Errno = 6647 + ERROR_LOG_PINNED_RESERVATION syscall.Errno = 6648 + ERROR_INVALID_TRANSACTION syscall.Errno = 6700 + ERROR_TRANSACTION_NOT_ACTIVE syscall.Errno = 6701 + ERROR_TRANSACTION_REQUEST_NOT_VALID syscall.Errno = 6702 + ERROR_TRANSACTION_NOT_REQUESTED syscall.Errno = 6703 + ERROR_TRANSACTION_ALREADY_ABORTED syscall.Errno = 6704 + ERROR_TRANSACTION_ALREADY_COMMITTED syscall.Errno = 6705 + ERROR_TM_INITIALIZATION_FAILED syscall.Errno = 6706 + ERROR_RESOURCEMANAGER_READ_ONLY syscall.Errno = 6707 + ERROR_TRANSACTION_NOT_JOINED syscall.Errno = 6708 + ERROR_TRANSACTION_SUPERIOR_EXISTS syscall.Errno = 6709 + ERROR_CRM_PROTOCOL_ALREADY_EXISTS syscall.Errno = 6710 + ERROR_TRANSACTION_PROPAGATION_FAILED syscall.Errno = 6711 + ERROR_CRM_PROTOCOL_NOT_FOUND syscall.Errno = 6712 + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER syscall.Errno = 6713 + ERROR_CURRENT_TRANSACTION_NOT_VALID syscall.Errno = 6714 + ERROR_TRANSACTION_NOT_FOUND syscall.Errno = 6715 + ERROR_RESOURCEMANAGER_NOT_FOUND syscall.Errno = 6716 + ERROR_ENLISTMENT_NOT_FOUND syscall.Errno = 6717 + ERROR_TRANSACTIONMANAGER_NOT_FOUND syscall.Errno = 6718 + ERROR_TRANSACTIONMANAGER_NOT_ONLINE syscall.Errno = 6719 + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION syscall.Errno = 6720 + ERROR_TRANSACTION_NOT_ROOT syscall.Errno = 6721 + ERROR_TRANSACTION_OBJECT_EXPIRED syscall.Errno = 6722 + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED syscall.Errno = 6723 + ERROR_TRANSACTION_RECORD_TOO_LONG syscall.Errno = 6724 + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED syscall.Errno = 6725 + ERROR_TRANSACTION_INTEGRITY_VIOLATED syscall.Errno = 6726 + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH syscall.Errno = 6727 + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT syscall.Errno = 6728 + ERROR_TRANSACTION_MUST_WRITETHROUGH syscall.Errno = 6729 + ERROR_TRANSACTION_NO_SUPERIOR syscall.Errno = 6730 + ERROR_HEURISTIC_DAMAGE_POSSIBLE syscall.Errno = 6731 + ERROR_TRANSACTIONAL_CONFLICT syscall.Errno = 6800 + ERROR_RM_NOT_ACTIVE syscall.Errno = 6801 + ERROR_RM_METADATA_CORRUPT syscall.Errno = 6802 + ERROR_DIRECTORY_NOT_RM syscall.Errno = 6803 + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE syscall.Errno = 6805 + ERROR_LOG_RESIZE_INVALID_SIZE syscall.Errno = 6806 + ERROR_OBJECT_NO_LONGER_EXISTS syscall.Errno = 6807 + ERROR_STREAM_MINIVERSION_NOT_FOUND syscall.Errno = 6808 + ERROR_STREAM_MINIVERSION_NOT_VALID syscall.Errno = 6809 + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION syscall.Errno = 6810 + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT syscall.Errno = 6811 + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS syscall.Errno = 6812 + ERROR_REMOTE_FILE_VERSION_MISMATCH syscall.Errno = 6814 + ERROR_HANDLE_NO_LONGER_VALID syscall.Errno = 6815 + ERROR_NO_TXF_METADATA syscall.Errno = 6816 + ERROR_LOG_CORRUPTION_DETECTED syscall.Errno = 6817 + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN syscall.Errno = 6818 + ERROR_RM_DISCONNECTED syscall.Errno = 6819 + ERROR_ENLISTMENT_NOT_SUPERIOR syscall.Errno = 6820 + ERROR_RECOVERY_NOT_NEEDED syscall.Errno = 6821 + ERROR_RM_ALREADY_STARTED syscall.Errno = 6822 + ERROR_FILE_IDENTITY_NOT_PERSISTENT syscall.Errno = 6823 + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY syscall.Errno = 6824 + ERROR_CANT_CROSS_RM_BOUNDARY syscall.Errno = 6825 + ERROR_TXF_DIR_NOT_EMPTY syscall.Errno = 6826 + ERROR_INDOUBT_TRANSACTIONS_EXIST syscall.Errno = 6827 + ERROR_TM_VOLATILE syscall.Errno = 6828 + ERROR_ROLLBACK_TIMER_EXPIRED syscall.Errno = 6829 + ERROR_TXF_ATTRIBUTE_CORRUPT syscall.Errno = 6830 + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6831 + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED syscall.Errno = 6832 + ERROR_LOG_GROWTH_FAILED syscall.Errno = 6833 + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE syscall.Errno = 6834 + ERROR_TXF_METADATA_ALREADY_PRESENT syscall.Errno = 6835 + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET syscall.Errno = 6836 + ERROR_TRANSACTION_REQUIRED_PROMOTION syscall.Errno = 6837 + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION syscall.Errno = 6838 + ERROR_TRANSACTIONS_NOT_FROZEN syscall.Errno = 6839 + ERROR_TRANSACTION_FREEZE_IN_PROGRESS syscall.Errno = 6840 + ERROR_NOT_SNAPSHOT_VOLUME syscall.Errno = 6841 + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES syscall.Errno = 6842 + ERROR_DATA_LOST_REPAIR syscall.Errno = 6843 + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6844 + ERROR_TM_IDENTITY_MISMATCH syscall.Errno = 6845 + ERROR_FLOATED_SECTION syscall.Errno = 6846 + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK syscall.Errno = 6847 + ERROR_CANNOT_ABORT_TRANSACTIONS syscall.Errno = 6848 + ERROR_BAD_CLUSTERS syscall.Errno = 6849 + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6850 + ERROR_VOLUME_DIRTY syscall.Errno = 6851 + ERROR_NO_LINK_TRACKING_IN_TRANSACTION syscall.Errno = 6852 + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION syscall.Errno = 6853 + ERROR_EXPIRED_HANDLE syscall.Errno = 6854 + ERROR_TRANSACTION_NOT_ENLISTED syscall.Errno = 6855 + ERROR_CTX_WINSTATION_NAME_INVALID syscall.Errno = 7001 + ERROR_CTX_INVALID_PD syscall.Errno = 7002 + ERROR_CTX_PD_NOT_FOUND syscall.Errno = 7003 + ERROR_CTX_WD_NOT_FOUND syscall.Errno = 7004 + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY syscall.Errno = 7005 + ERROR_CTX_SERVICE_NAME_COLLISION syscall.Errno = 7006 + ERROR_CTX_CLOSE_PENDING syscall.Errno = 7007 + ERROR_CTX_NO_OUTBUF syscall.Errno = 7008 + ERROR_CTX_MODEM_INF_NOT_FOUND syscall.Errno = 7009 + ERROR_CTX_INVALID_MODEMNAME syscall.Errno = 7010 + ERROR_CTX_MODEM_RESPONSE_ERROR syscall.Errno = 7011 + ERROR_CTX_MODEM_RESPONSE_TIMEOUT syscall.Errno = 7012 + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER syscall.Errno = 7013 + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE syscall.Errno = 7014 + ERROR_CTX_MODEM_RESPONSE_BUSY syscall.Errno = 7015 + ERROR_CTX_MODEM_RESPONSE_VOICE syscall.Errno = 7016 + ERROR_CTX_TD_ERROR syscall.Errno = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND syscall.Errno = 7022 + ERROR_CTX_WINSTATION_ALREADY_EXISTS syscall.Errno = 7023 + ERROR_CTX_WINSTATION_BUSY syscall.Errno = 7024 + ERROR_CTX_BAD_VIDEO_MODE syscall.Errno = 7025 + ERROR_CTX_GRAPHICS_INVALID syscall.Errno = 7035 + ERROR_CTX_LOGON_DISABLED syscall.Errno = 7037 + ERROR_CTX_NOT_CONSOLE syscall.Errno = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT syscall.Errno = 7040 + ERROR_CTX_CONSOLE_DISCONNECT syscall.Errno = 7041 + ERROR_CTX_CONSOLE_CONNECT syscall.Errno = 7042 + ERROR_CTX_SHADOW_DENIED syscall.Errno = 7044 + ERROR_CTX_WINSTATION_ACCESS_DENIED syscall.Errno = 7045 + ERROR_CTX_INVALID_WD syscall.Errno = 7049 + ERROR_CTX_SHADOW_INVALID syscall.Errno = 7050 + ERROR_CTX_SHADOW_DISABLED syscall.Errno = 7051 + ERROR_CTX_CLIENT_LICENSE_IN_USE syscall.Errno = 7052 + ERROR_CTX_CLIENT_LICENSE_NOT_SET syscall.Errno = 7053 + ERROR_CTX_LICENSE_NOT_AVAILABLE syscall.Errno = 7054 + ERROR_CTX_LICENSE_CLIENT_INVALID syscall.Errno = 7055 + ERROR_CTX_LICENSE_EXPIRED syscall.Errno = 7056 + ERROR_CTX_SHADOW_NOT_RUNNING syscall.Errno = 7057 + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE syscall.Errno = 7058 + ERROR_ACTIVATION_COUNT_EXCEEDED syscall.Errno = 7059 + ERROR_CTX_WINSTATIONS_DISABLED syscall.Errno = 7060 + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED syscall.Errno = 7061 + ERROR_CTX_SESSION_IN_USE syscall.Errno = 7062 + ERROR_CTX_NO_FORCE_LOGOFF syscall.Errno = 7063 + ERROR_CTX_ACCOUNT_RESTRICTION syscall.Errno = 7064 + ERROR_RDP_PROTOCOL_ERROR syscall.Errno = 7065 + ERROR_CTX_CDM_CONNECT syscall.Errno = 7066 + ERROR_CTX_CDM_DISCONNECT syscall.Errno = 7067 + ERROR_CTX_SECURITY_LAYER_ERROR syscall.Errno = 7068 + ERROR_TS_INCOMPATIBLE_SESSIONS syscall.Errno = 7069 + ERROR_TS_VIDEO_SUBSYSTEM_ERROR syscall.Errno = 7070 + FRS_ERR_INVALID_API_SEQUENCE syscall.Errno = 8001 + FRS_ERR_STARTING_SERVICE syscall.Errno = 8002 + FRS_ERR_STOPPING_SERVICE syscall.Errno = 8003 + FRS_ERR_INTERNAL_API syscall.Errno = 8004 + FRS_ERR_INTERNAL syscall.Errno = 8005 + FRS_ERR_SERVICE_COMM syscall.Errno = 8006 + FRS_ERR_INSUFFICIENT_PRIV syscall.Errno = 8007 + FRS_ERR_AUTHENTICATION syscall.Errno = 8008 + FRS_ERR_PARENT_INSUFFICIENT_PRIV syscall.Errno = 8009 + FRS_ERR_PARENT_AUTHENTICATION syscall.Errno = 8010 + FRS_ERR_CHILD_TO_PARENT_COMM syscall.Errno = 8011 + FRS_ERR_PARENT_TO_CHILD_COMM syscall.Errno = 8012 + FRS_ERR_SYSVOL_POPULATE syscall.Errno = 8013 + FRS_ERR_SYSVOL_POPULATE_TIMEOUT syscall.Errno = 8014 + FRS_ERR_SYSVOL_IS_BUSY syscall.Errno = 8015 + FRS_ERR_SYSVOL_DEMOTE syscall.Errno = 8016 + FRS_ERR_INVALID_SERVICE_PARAMETER syscall.Errno = 8017 + DS_S_SUCCESS = ERROR_SUCCESS + ERROR_DS_NOT_INSTALLED syscall.Errno = 8200 + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY syscall.Errno = 8201 + ERROR_DS_NO_ATTRIBUTE_OR_VALUE syscall.Errno = 8202 + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX syscall.Errno = 8203 + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED syscall.Errno = 8204 + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS syscall.Errno = 8205 + ERROR_DS_BUSY syscall.Errno = 8206 + ERROR_DS_UNAVAILABLE syscall.Errno = 8207 + ERROR_DS_NO_RIDS_ALLOCATED syscall.Errno = 8208 + ERROR_DS_NO_MORE_RIDS syscall.Errno = 8209 + ERROR_DS_INCORRECT_ROLE_OWNER syscall.Errno = 8210 + ERROR_DS_RIDMGR_INIT_ERROR syscall.Errno = 8211 + ERROR_DS_OBJ_CLASS_VIOLATION syscall.Errno = 8212 + ERROR_DS_CANT_ON_NON_LEAF syscall.Errno = 8213 + ERROR_DS_CANT_ON_RDN syscall.Errno = 8214 + ERROR_DS_CANT_MOD_OBJ_CLASS syscall.Errno = 8215 + ERROR_DS_CROSS_DOM_MOVE_ERROR syscall.Errno = 8216 + ERROR_DS_GC_NOT_AVAILABLE syscall.Errno = 8217 + ERROR_SHARED_POLICY syscall.Errno = 8218 + ERROR_POLICY_OBJECT_NOT_FOUND syscall.Errno = 8219 + ERROR_POLICY_ONLY_IN_DS syscall.Errno = 8220 + ERROR_PROMOTION_ACTIVE syscall.Errno = 8221 + ERROR_NO_PROMOTION_ACTIVE syscall.Errno = 8222 + ERROR_DS_OPERATIONS_ERROR syscall.Errno = 8224 + ERROR_DS_PROTOCOL_ERROR syscall.Errno = 8225 + ERROR_DS_TIMELIMIT_EXCEEDED syscall.Errno = 8226 + ERROR_DS_SIZELIMIT_EXCEEDED syscall.Errno = 8227 + ERROR_DS_ADMIN_LIMIT_EXCEEDED syscall.Errno = 8228 + ERROR_DS_COMPARE_FALSE syscall.Errno = 8229 + ERROR_DS_COMPARE_TRUE syscall.Errno = 8230 + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED syscall.Errno = 8231 + ERROR_DS_STRONG_AUTH_REQUIRED syscall.Errno = 8232 + ERROR_DS_INAPPROPRIATE_AUTH syscall.Errno = 8233 + ERROR_DS_AUTH_UNKNOWN syscall.Errno = 8234 + ERROR_DS_REFERRAL syscall.Errno = 8235 + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION syscall.Errno = 8236 + ERROR_DS_CONFIDENTIALITY_REQUIRED syscall.Errno = 8237 + ERROR_DS_INAPPROPRIATE_MATCHING syscall.Errno = 8238 + ERROR_DS_CONSTRAINT_VIOLATION syscall.Errno = 8239 + ERROR_DS_NO_SUCH_OBJECT syscall.Errno = 8240 + ERROR_DS_ALIAS_PROBLEM syscall.Errno = 8241 + ERROR_DS_INVALID_DN_SYNTAX syscall.Errno = 8242 + ERROR_DS_IS_LEAF syscall.Errno = 8243 + ERROR_DS_ALIAS_DEREF_PROBLEM syscall.Errno = 8244 + ERROR_DS_UNWILLING_TO_PERFORM syscall.Errno = 8245 + ERROR_DS_LOOP_DETECT syscall.Errno = 8246 + ERROR_DS_NAMING_VIOLATION syscall.Errno = 8247 + ERROR_DS_OBJECT_RESULTS_TOO_LARGE syscall.Errno = 8248 + ERROR_DS_AFFECTS_MULTIPLE_DSAS syscall.Errno = 8249 + ERROR_DS_SERVER_DOWN syscall.Errno = 8250 + ERROR_DS_LOCAL_ERROR syscall.Errno = 8251 + ERROR_DS_ENCODING_ERROR syscall.Errno = 8252 + ERROR_DS_DECODING_ERROR syscall.Errno = 8253 + ERROR_DS_FILTER_UNKNOWN syscall.Errno = 8254 + ERROR_DS_PARAM_ERROR syscall.Errno = 8255 + ERROR_DS_NOT_SUPPORTED syscall.Errno = 8256 + ERROR_DS_NO_RESULTS_RETURNED syscall.Errno = 8257 + ERROR_DS_CONTROL_NOT_FOUND syscall.Errno = 8258 + ERROR_DS_CLIENT_LOOP syscall.Errno = 8259 + ERROR_DS_REFERRAL_LIMIT_EXCEEDED syscall.Errno = 8260 + ERROR_DS_SORT_CONTROL_MISSING syscall.Errno = 8261 + ERROR_DS_OFFSET_RANGE_ERROR syscall.Errno = 8262 + ERROR_DS_RIDMGR_DISABLED syscall.Errno = 8263 + ERROR_DS_ROOT_MUST_BE_NC syscall.Errno = 8301 + ERROR_DS_ADD_REPLICA_INHIBITED syscall.Errno = 8302 + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA syscall.Errno = 8303 + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED syscall.Errno = 8304 + ERROR_DS_OBJ_STRING_NAME_EXISTS syscall.Errno = 8305 + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA syscall.Errno = 8306 + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA syscall.Errno = 8307 + ERROR_DS_NO_REQUESTED_ATTS_FOUND syscall.Errno = 8308 + ERROR_DS_USER_BUFFER_TO_SMALL syscall.Errno = 8309 + ERROR_DS_ATT_IS_NOT_ON_OBJ syscall.Errno = 8310 + ERROR_DS_ILLEGAL_MOD_OPERATION syscall.Errno = 8311 + ERROR_DS_OBJ_TOO_LARGE syscall.Errno = 8312 + ERROR_DS_BAD_INSTANCE_TYPE syscall.Errno = 8313 + ERROR_DS_MASTERDSA_REQUIRED syscall.Errno = 8314 + ERROR_DS_OBJECT_CLASS_REQUIRED syscall.Errno = 8315 + ERROR_DS_MISSING_REQUIRED_ATT syscall.Errno = 8316 + ERROR_DS_ATT_NOT_DEF_FOR_CLASS syscall.Errno = 8317 + ERROR_DS_ATT_ALREADY_EXISTS syscall.Errno = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES syscall.Errno = 8320 + ERROR_DS_SINGLE_VALUE_CONSTRAINT syscall.Errno = 8321 + ERROR_DS_RANGE_CONSTRAINT syscall.Errno = 8322 + ERROR_DS_ATT_VAL_ALREADY_EXISTS syscall.Errno = 8323 + ERROR_DS_CANT_REM_MISSING_ATT syscall.Errno = 8324 + ERROR_DS_CANT_REM_MISSING_ATT_VAL syscall.Errno = 8325 + ERROR_DS_ROOT_CANT_BE_SUBREF syscall.Errno = 8326 + ERROR_DS_NO_CHAINING syscall.Errno = 8327 + ERROR_DS_NO_CHAINED_EVAL syscall.Errno = 8328 + ERROR_DS_NO_PARENT_OBJECT syscall.Errno = 8329 + ERROR_DS_PARENT_IS_AN_ALIAS syscall.Errno = 8330 + ERROR_DS_CANT_MIX_MASTER_AND_REPS syscall.Errno = 8331 + ERROR_DS_CHILDREN_EXIST syscall.Errno = 8332 + ERROR_DS_OBJ_NOT_FOUND syscall.Errno = 8333 + ERROR_DS_ALIASED_OBJ_MISSING syscall.Errno = 8334 + ERROR_DS_BAD_NAME_SYNTAX syscall.Errno = 8335 + ERROR_DS_ALIAS_POINTS_TO_ALIAS syscall.Errno = 8336 + ERROR_DS_CANT_DEREF_ALIAS syscall.Errno = 8337 + ERROR_DS_OUT_OF_SCOPE syscall.Errno = 8338 + ERROR_DS_OBJECT_BEING_REMOVED syscall.Errno = 8339 + ERROR_DS_CANT_DELETE_DSA_OBJ syscall.Errno = 8340 + ERROR_DS_GENERIC_ERROR syscall.Errno = 8341 + ERROR_DS_DSA_MUST_BE_INT_MASTER syscall.Errno = 8342 + ERROR_DS_CLASS_NOT_DSA syscall.Errno = 8343 + ERROR_DS_INSUFF_ACCESS_RIGHTS syscall.Errno = 8344 + ERROR_DS_ILLEGAL_SUPERIOR syscall.Errno = 8345 + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM syscall.Errno = 8346 + ERROR_DS_NAME_TOO_MANY_PARTS syscall.Errno = 8347 + ERROR_DS_NAME_TOO_LONG syscall.Errno = 8348 + ERROR_DS_NAME_VALUE_TOO_LONG syscall.Errno = 8349 + ERROR_DS_NAME_UNPARSEABLE syscall.Errno = 8350 + ERROR_DS_NAME_TYPE_UNKNOWN syscall.Errno = 8351 + ERROR_DS_NOT_AN_OBJECT syscall.Errno = 8352 + ERROR_DS_SEC_DESC_TOO_SHORT syscall.Errno = 8353 + ERROR_DS_SEC_DESC_INVALID syscall.Errno = 8354 + ERROR_DS_NO_DELETED_NAME syscall.Errno = 8355 + ERROR_DS_SUBREF_MUST_HAVE_PARENT syscall.Errno = 8356 + ERROR_DS_NCNAME_MUST_BE_NC syscall.Errno = 8357 + ERROR_DS_CANT_ADD_SYSTEM_ONLY syscall.Errno = 8358 + ERROR_DS_CLASS_MUST_BE_CONCRETE syscall.Errno = 8359 + ERROR_DS_INVALID_DMD syscall.Errno = 8360 + ERROR_DS_OBJ_GUID_EXISTS syscall.Errno = 8361 + ERROR_DS_NOT_ON_BACKLINK syscall.Errno = 8362 + ERROR_DS_NO_CROSSREF_FOR_NC syscall.Errno = 8363 + ERROR_DS_SHUTTING_DOWN syscall.Errno = 8364 + ERROR_DS_UNKNOWN_OPERATION syscall.Errno = 8365 + ERROR_DS_INVALID_ROLE_OWNER syscall.Errno = 8366 + ERROR_DS_COULDNT_CONTACT_FSMO syscall.Errno = 8367 + ERROR_DS_CROSS_NC_DN_RENAME syscall.Errno = 8368 + ERROR_DS_CANT_MOD_SYSTEM_ONLY syscall.Errno = 8369 + ERROR_DS_REPLICATOR_ONLY syscall.Errno = 8370 + ERROR_DS_OBJ_CLASS_NOT_DEFINED syscall.Errno = 8371 + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS syscall.Errno = 8372 + ERROR_DS_NAME_REFERENCE_INVALID syscall.Errno = 8373 + ERROR_DS_CROSS_REF_EXISTS syscall.Errno = 8374 + ERROR_DS_CANT_DEL_MASTER_CROSSREF syscall.Errno = 8375 + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD syscall.Errno = 8376 + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX syscall.Errno = 8377 + ERROR_DS_DUP_RDN syscall.Errno = 8378 + ERROR_DS_DUP_OID syscall.Errno = 8379 + ERROR_DS_DUP_MAPI_ID syscall.Errno = 8380 + ERROR_DS_DUP_SCHEMA_ID_GUID syscall.Errno = 8381 + ERROR_DS_DUP_LDAP_DISPLAY_NAME syscall.Errno = 8382 + ERROR_DS_SEMANTIC_ATT_TEST syscall.Errno = 8383 + ERROR_DS_SYNTAX_MISMATCH syscall.Errno = 8384 + ERROR_DS_EXISTS_IN_MUST_HAVE syscall.Errno = 8385 + ERROR_DS_EXISTS_IN_MAY_HAVE syscall.Errno = 8386 + ERROR_DS_NONEXISTENT_MAY_HAVE syscall.Errno = 8387 + ERROR_DS_NONEXISTENT_MUST_HAVE syscall.Errno = 8388 + ERROR_DS_AUX_CLS_TEST_FAIL syscall.Errno = 8389 + ERROR_DS_NONEXISTENT_POSS_SUP syscall.Errno = 8390 + ERROR_DS_SUB_CLS_TEST_FAIL syscall.Errno = 8391 + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX syscall.Errno = 8392 + ERROR_DS_EXISTS_IN_AUX_CLS syscall.Errno = 8393 + ERROR_DS_EXISTS_IN_SUB_CLS syscall.Errno = 8394 + ERROR_DS_EXISTS_IN_POSS_SUP syscall.Errno = 8395 + ERROR_DS_RECALCSCHEMA_FAILED syscall.Errno = 8396 + ERROR_DS_TREE_DELETE_NOT_FINISHED syscall.Errno = 8397 + ERROR_DS_CANT_DELETE syscall.Errno = 8398 + ERROR_DS_ATT_SCHEMA_REQ_ID syscall.Errno = 8399 + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX syscall.Errno = 8400 + ERROR_DS_CANT_CACHE_ATT syscall.Errno = 8401 + ERROR_DS_CANT_CACHE_CLASS syscall.Errno = 8402 + ERROR_DS_CANT_REMOVE_ATT_CACHE syscall.Errno = 8403 + ERROR_DS_CANT_REMOVE_CLASS_CACHE syscall.Errno = 8404 + ERROR_DS_CANT_RETRIEVE_DN syscall.Errno = 8405 + ERROR_DS_MISSING_SUPREF syscall.Errno = 8406 + ERROR_DS_CANT_RETRIEVE_INSTANCE syscall.Errno = 8407 + ERROR_DS_CODE_INCONSISTENCY syscall.Errno = 8408 + ERROR_DS_DATABASE_ERROR syscall.Errno = 8409 + ERROR_DS_GOVERNSID_MISSING syscall.Errno = 8410 + ERROR_DS_MISSING_EXPECTED_ATT syscall.Errno = 8411 + ERROR_DS_NCNAME_MISSING_CR_REF syscall.Errno = 8412 + ERROR_DS_SECURITY_CHECKING_ERROR syscall.Errno = 8413 + ERROR_DS_SCHEMA_NOT_LOADED syscall.Errno = 8414 + ERROR_DS_SCHEMA_ALLOC_FAILED syscall.Errno = 8415 + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX syscall.Errno = 8416 + ERROR_DS_GCVERIFY_ERROR syscall.Errno = 8417 + ERROR_DS_DRA_SCHEMA_MISMATCH syscall.Errno = 8418 + ERROR_DS_CANT_FIND_DSA_OBJ syscall.Errno = 8419 + ERROR_DS_CANT_FIND_EXPECTED_NC syscall.Errno = 8420 + ERROR_DS_CANT_FIND_NC_IN_CACHE syscall.Errno = 8421 + ERROR_DS_CANT_RETRIEVE_CHILD syscall.Errno = 8422 + ERROR_DS_SECURITY_ILLEGAL_MODIFY syscall.Errno = 8423 + ERROR_DS_CANT_REPLACE_HIDDEN_REC syscall.Errno = 8424 + ERROR_DS_BAD_HIERARCHY_FILE syscall.Errno = 8425 + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED syscall.Errno = 8426 + ERROR_DS_CONFIG_PARAM_MISSING syscall.Errno = 8427 + ERROR_DS_COUNTING_AB_INDICES_FAILED syscall.Errno = 8428 + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED syscall.Errno = 8429 + ERROR_DS_INTERNAL_FAILURE syscall.Errno = 8430 + ERROR_DS_UNKNOWN_ERROR syscall.Errno = 8431 + ERROR_DS_ROOT_REQUIRES_CLASS_TOP syscall.Errno = 8432 + ERROR_DS_REFUSING_FSMO_ROLES syscall.Errno = 8433 + ERROR_DS_MISSING_FSMO_SETTINGS syscall.Errno = 8434 + ERROR_DS_UNABLE_TO_SURRENDER_ROLES syscall.Errno = 8435 + ERROR_DS_DRA_GENERIC syscall.Errno = 8436 + ERROR_DS_DRA_INVALID_PARAMETER syscall.Errno = 8437 + ERROR_DS_DRA_BUSY syscall.Errno = 8438 + ERROR_DS_DRA_BAD_DN syscall.Errno = 8439 + ERROR_DS_DRA_BAD_NC syscall.Errno = 8440 + ERROR_DS_DRA_DN_EXISTS syscall.Errno = 8441 + ERROR_DS_DRA_INTERNAL_ERROR syscall.Errno = 8442 + ERROR_DS_DRA_INCONSISTENT_DIT syscall.Errno = 8443 + ERROR_DS_DRA_CONNECTION_FAILED syscall.Errno = 8444 + ERROR_DS_DRA_BAD_INSTANCE_TYPE syscall.Errno = 8445 + ERROR_DS_DRA_OUT_OF_MEM syscall.Errno = 8446 + ERROR_DS_DRA_MAIL_PROBLEM syscall.Errno = 8447 + ERROR_DS_DRA_REF_ALREADY_EXISTS syscall.Errno = 8448 + ERROR_DS_DRA_REF_NOT_FOUND syscall.Errno = 8449 + ERROR_DS_DRA_OBJ_IS_REP_SOURCE syscall.Errno = 8450 + ERROR_DS_DRA_DB_ERROR syscall.Errno = 8451 + ERROR_DS_DRA_NO_REPLICA syscall.Errno = 8452 + ERROR_DS_DRA_ACCESS_DENIED syscall.Errno = 8453 + ERROR_DS_DRA_NOT_SUPPORTED syscall.Errno = 8454 + ERROR_DS_DRA_RPC_CANCELLED syscall.Errno = 8455 + ERROR_DS_DRA_SOURCE_DISABLED syscall.Errno = 8456 + ERROR_DS_DRA_SINK_DISABLED syscall.Errno = 8457 + ERROR_DS_DRA_NAME_COLLISION syscall.Errno = 8458 + ERROR_DS_DRA_SOURCE_REINSTALLED syscall.Errno = 8459 + ERROR_DS_DRA_MISSING_PARENT syscall.Errno = 8460 + ERROR_DS_DRA_PREEMPTED syscall.Errno = 8461 + ERROR_DS_DRA_ABANDON_SYNC syscall.Errno = 8462 + ERROR_DS_DRA_SHUTDOWN syscall.Errno = 8463 + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET syscall.Errno = 8464 + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA syscall.Errno = 8465 + ERROR_DS_DRA_EXTN_CONNECTION_FAILED syscall.Errno = 8466 + ERROR_DS_INSTALL_SCHEMA_MISMATCH syscall.Errno = 8467 + ERROR_DS_DUP_LINK_ID syscall.Errno = 8468 + ERROR_DS_NAME_ERROR_RESOLVING syscall.Errno = 8469 + ERROR_DS_NAME_ERROR_NOT_FOUND syscall.Errno = 8470 + ERROR_DS_NAME_ERROR_NOT_UNIQUE syscall.Errno = 8471 + ERROR_DS_NAME_ERROR_NO_MAPPING syscall.Errno = 8472 + ERROR_DS_NAME_ERROR_DOMAIN_ONLY syscall.Errno = 8473 + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING syscall.Errno = 8474 + ERROR_DS_CONSTRUCTED_ATT_MOD syscall.Errno = 8475 + ERROR_DS_WRONG_OM_OBJ_CLASS syscall.Errno = 8476 + ERROR_DS_DRA_REPL_PENDING syscall.Errno = 8477 + ERROR_DS_DS_REQUIRED syscall.Errno = 8478 + ERROR_DS_INVALID_LDAP_DISPLAY_NAME syscall.Errno = 8479 + ERROR_DS_NON_BASE_SEARCH syscall.Errno = 8480 + ERROR_DS_CANT_RETRIEVE_ATTS syscall.Errno = 8481 + ERROR_DS_BACKLINK_WITHOUT_LINK syscall.Errno = 8482 + ERROR_DS_EPOCH_MISMATCH syscall.Errno = 8483 + ERROR_DS_SRC_NAME_MISMATCH syscall.Errno = 8484 + ERROR_DS_SRC_AND_DST_NC_IDENTICAL syscall.Errno = 8485 + ERROR_DS_DST_NC_MISMATCH syscall.Errno = 8486 + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC syscall.Errno = 8487 + ERROR_DS_SRC_GUID_MISMATCH syscall.Errno = 8488 + ERROR_DS_CANT_MOVE_DELETED_OBJECT syscall.Errno = 8489 + ERROR_DS_PDC_OPERATION_IN_PROGRESS syscall.Errno = 8490 + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD syscall.Errno = 8491 + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION syscall.Errno = 8492 + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS syscall.Errno = 8493 + ERROR_DS_NC_MUST_HAVE_NC_PARENT syscall.Errno = 8494 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE syscall.Errno = 8495 + ERROR_DS_DST_DOMAIN_NOT_NATIVE syscall.Errno = 8496 + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER syscall.Errno = 8497 + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP syscall.Errno = 8498 + ERROR_DS_CANT_MOVE_RESOURCE_GROUP syscall.Errno = 8499 + ERROR_DS_INVALID_SEARCH_FLAG syscall.Errno = 8500 + ERROR_DS_NO_TREE_DELETE_ABOVE_NC syscall.Errno = 8501 + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE syscall.Errno = 8502 + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE syscall.Errno = 8503 + ERROR_DS_SAM_INIT_FAILURE syscall.Errno = 8504 + ERROR_DS_SENSITIVE_GROUP_VIOLATION syscall.Errno = 8505 + ERROR_DS_CANT_MOD_PRIMARYGROUPID syscall.Errno = 8506 + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD syscall.Errno = 8507 + ERROR_DS_NONSAFE_SCHEMA_CHANGE syscall.Errno = 8508 + ERROR_DS_SCHEMA_UPDATE_DISALLOWED syscall.Errno = 8509 + ERROR_DS_CANT_CREATE_UNDER_SCHEMA syscall.Errno = 8510 + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION syscall.Errno = 8511 + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE syscall.Errno = 8512 + ERROR_DS_INVALID_GROUP_TYPE syscall.Errno = 8513 + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8514 + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8515 + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8516 + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8517 + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8518 + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER syscall.Errno = 8519 + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER syscall.Errno = 8520 + ERROR_DS_HAVE_PRIMARY_MEMBERS syscall.Errno = 8521 + ERROR_DS_STRING_SD_CONVERSION_FAILED syscall.Errno = 8522 + ERROR_DS_NAMING_MASTER_GC syscall.Errno = 8523 + ERROR_DS_DNS_LOOKUP_FAILURE syscall.Errno = 8524 + ERROR_DS_COULDNT_UPDATE_SPNS syscall.Errno = 8525 + ERROR_DS_CANT_RETRIEVE_SD syscall.Errno = 8526 + ERROR_DS_KEY_NOT_UNIQUE syscall.Errno = 8527 + ERROR_DS_WRONG_LINKED_ATT_SYNTAX syscall.Errno = 8528 + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD syscall.Errno = 8529 + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY syscall.Errno = 8530 + ERROR_DS_CANT_START syscall.Errno = 8531 + ERROR_DS_INIT_FAILURE syscall.Errno = 8532 + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION syscall.Errno = 8533 + ERROR_DS_SOURCE_DOMAIN_IN_FOREST syscall.Errno = 8534 + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST syscall.Errno = 8535 + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED syscall.Errno = 8536 + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN syscall.Errno = 8537 + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER syscall.Errno = 8538 + ERROR_DS_SRC_SID_EXISTS_IN_FOREST syscall.Errno = 8539 + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH syscall.Errno = 8540 + ERROR_SAM_INIT_FAILURE syscall.Errno = 8541 + ERROR_DS_DRA_SCHEMA_INFO_SHIP syscall.Errno = 8542 + ERROR_DS_DRA_SCHEMA_CONFLICT syscall.Errno = 8543 + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT syscall.Errno = 8544 + ERROR_DS_DRA_OBJ_NC_MISMATCH syscall.Errno = 8545 + ERROR_DS_NC_STILL_HAS_DSAS syscall.Errno = 8546 + ERROR_DS_GC_REQUIRED syscall.Errno = 8547 + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY syscall.Errno = 8548 + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS syscall.Errno = 8549 + ERROR_DS_CANT_ADD_TO_GC syscall.Errno = 8550 + ERROR_DS_NO_CHECKPOINT_WITH_PDC syscall.Errno = 8551 + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED syscall.Errno = 8552 + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC syscall.Errno = 8553 + ERROR_DS_INVALID_NAME_FOR_SPN syscall.Errno = 8554 + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS syscall.Errno = 8555 + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES syscall.Errno = 8556 + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED syscall.Errno = 8557 + ERROR_DS_MUST_BE_RUN_ON_DST_DC syscall.Errno = 8558 + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER syscall.Errno = 8559 + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ syscall.Errno = 8560 + ERROR_DS_INIT_FAILURE_CONSOLE syscall.Errno = 8561 + ERROR_DS_SAM_INIT_FAILURE_CONSOLE syscall.Errno = 8562 + ERROR_DS_FOREST_VERSION_TOO_HIGH syscall.Errno = 8563 + ERROR_DS_DOMAIN_VERSION_TOO_HIGH syscall.Errno = 8564 + ERROR_DS_FOREST_VERSION_TOO_LOW syscall.Errno = 8565 + ERROR_DS_DOMAIN_VERSION_TOO_LOW syscall.Errno = 8566 + ERROR_DS_INCOMPATIBLE_VERSION syscall.Errno = 8567 + ERROR_DS_LOW_DSA_VERSION syscall.Errno = 8568 + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN syscall.Errno = 8569 + ERROR_DS_NOT_SUPPORTED_SORT_ORDER syscall.Errno = 8570 + ERROR_DS_NAME_NOT_UNIQUE syscall.Errno = 8571 + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 syscall.Errno = 8572 + ERROR_DS_OUT_OF_VERSION_STORE syscall.Errno = 8573 + ERROR_DS_INCOMPATIBLE_CONTROLS_USED syscall.Errno = 8574 + ERROR_DS_NO_REF_DOMAIN syscall.Errno = 8575 + ERROR_DS_RESERVED_LINK_ID syscall.Errno = 8576 + ERROR_DS_LINK_ID_NOT_AVAILABLE syscall.Errno = 8577 + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8578 + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE syscall.Errno = 8579 + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC syscall.Errno = 8580 + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG syscall.Errno = 8581 + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT syscall.Errno = 8582 + ERROR_DS_NAME_ERROR_TRUST_REFERRAL syscall.Errno = 8583 + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER syscall.Errno = 8584 + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD syscall.Errno = 8585 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 syscall.Errno = 8586 + ERROR_DS_THREAD_LIMIT_EXCEEDED syscall.Errno = 8587 + ERROR_DS_NOT_CLOSEST syscall.Errno = 8588 + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF syscall.Errno = 8589 + ERROR_DS_SINGLE_USER_MODE_FAILED syscall.Errno = 8590 + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR syscall.Errno = 8591 + ERROR_DS_NTDSCRIPT_PROCESS_ERROR syscall.Errno = 8592 + ERROR_DS_DIFFERENT_REPL_EPOCHS syscall.Errno = 8593 + ERROR_DS_DRS_EXTENSIONS_CHANGED syscall.Errno = 8594 + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR syscall.Errno = 8595 + ERROR_DS_NO_MSDS_INTID syscall.Errno = 8596 + ERROR_DS_DUP_MSDS_INTID syscall.Errno = 8597 + ERROR_DS_EXISTS_IN_RDNATTID syscall.Errno = 8598 + ERROR_DS_AUTHORIZATION_FAILED syscall.Errno = 8599 + ERROR_DS_INVALID_SCRIPT syscall.Errno = 8600 + ERROR_DS_REMOTE_CROSSREF_OP_FAILED syscall.Errno = 8601 + ERROR_DS_CROSS_REF_BUSY syscall.Errno = 8602 + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN syscall.Errno = 8603 + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC syscall.Errno = 8604 + ERROR_DS_DUPLICATE_ID_FOUND syscall.Errno = 8605 + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT syscall.Errno = 8606 + ERROR_DS_GROUP_CONVERSION_ERROR syscall.Errno = 8607 + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP syscall.Errno = 8608 + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP syscall.Errno = 8609 + ERROR_DS_ROLE_NOT_VERIFIED syscall.Errno = 8610 + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL syscall.Errno = 8611 + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS syscall.Errno = 8612 + ERROR_DS_EXISTING_AD_CHILD_NC syscall.Errno = 8613 + ERROR_DS_REPL_LIFETIME_EXCEEDED syscall.Errno = 8614 + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER syscall.Errno = 8615 + ERROR_DS_LDAP_SEND_QUEUE_FULL syscall.Errno = 8616 + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW syscall.Errno = 8617 + ERROR_DS_POLICY_NOT_KNOWN syscall.Errno = 8618 + ERROR_NO_SITE_SETTINGS_OBJECT syscall.Errno = 8619 + ERROR_NO_SECRETS syscall.Errno = 8620 + ERROR_NO_WRITABLE_DC_FOUND syscall.Errno = 8621 + ERROR_DS_NO_SERVER_OBJECT syscall.Errno = 8622 + ERROR_DS_NO_NTDSA_OBJECT syscall.Errno = 8623 + ERROR_DS_NON_ASQ_SEARCH syscall.Errno = 8624 + ERROR_DS_AUDIT_FAILURE syscall.Errno = 8625 + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE syscall.Errno = 8626 + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE syscall.Errno = 8627 + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP syscall.Errno = 8628 + ERROR_DS_DRA_CORRUPT_UTD_VECTOR syscall.Errno = 8629 + ERROR_DS_DRA_SECRETS_DENIED syscall.Errno = 8630 + ERROR_DS_RESERVED_MAPI_ID syscall.Errno = 8631 + ERROR_DS_MAPI_ID_NOT_AVAILABLE syscall.Errno = 8632 + ERROR_DS_DRA_MISSING_KRBTGT_SECRET syscall.Errno = 8633 + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST syscall.Errno = 8634 + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST syscall.Errno = 8635 + ERROR_INVALID_USER_PRINCIPAL_NAME syscall.Errno = 8636 + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS syscall.Errno = 8637 + ERROR_DS_OID_NOT_FOUND syscall.Errno = 8638 + ERROR_DS_DRA_RECYCLED_TARGET syscall.Errno = 8639 + ERROR_DS_DISALLOWED_NC_REDIRECT syscall.Errno = 8640 + ERROR_DS_HIGH_ADLDS_FFL syscall.Errno = 8641 + ERROR_DS_HIGH_DSA_VERSION syscall.Errno = 8642 + ERROR_DS_LOW_ADLDS_FFL syscall.Errno = 8643 + ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION syscall.Errno = 8644 + ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED syscall.Errno = 8645 + ERROR_INCORRECT_ACCOUNT_TYPE syscall.Errno = 8646 + ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8647 + ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8648 + ERROR_DS_MISSING_FOREST_TRUST syscall.Errno = 8649 + ERROR_DS_VALUE_KEY_NOT_UNIQUE syscall.Errno = 8650 + DNS_ERROR_RESPONSE_CODES_BASE syscall.Errno = 9000 + DNS_ERROR_RCODE_NO_ERROR = ERROR_SUCCESS + DNS_ERROR_MASK syscall.Errno = 0x00002328 + DNS_ERROR_RCODE_FORMAT_ERROR syscall.Errno = 9001 + DNS_ERROR_RCODE_SERVER_FAILURE syscall.Errno = 9002 + DNS_ERROR_RCODE_NAME_ERROR syscall.Errno = 9003 + DNS_ERROR_RCODE_NOT_IMPLEMENTED syscall.Errno = 9004 + DNS_ERROR_RCODE_REFUSED syscall.Errno = 9005 + DNS_ERROR_RCODE_YXDOMAIN syscall.Errno = 9006 + DNS_ERROR_RCODE_YXRRSET syscall.Errno = 9007 + DNS_ERROR_RCODE_NXRRSET syscall.Errno = 9008 + DNS_ERROR_RCODE_NOTAUTH syscall.Errno = 9009 + DNS_ERROR_RCODE_NOTZONE syscall.Errno = 9010 + DNS_ERROR_RCODE_BADSIG syscall.Errno = 9016 + DNS_ERROR_RCODE_BADKEY syscall.Errno = 9017 + DNS_ERROR_RCODE_BADTIME syscall.Errno = 9018 + DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME + DNS_ERROR_DNSSEC_BASE syscall.Errno = 9100 + DNS_ERROR_KEYMASTER_REQUIRED syscall.Errno = 9101 + DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE syscall.Errno = 9102 + DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 syscall.Errno = 9103 + DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS syscall.Errno = 9104 + DNS_ERROR_UNSUPPORTED_ALGORITHM syscall.Errno = 9105 + DNS_ERROR_INVALID_KEY_SIZE syscall.Errno = 9106 + DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE syscall.Errno = 9107 + DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION syscall.Errno = 9108 + DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR syscall.Errno = 9109 + DNS_ERROR_UNEXPECTED_CNG_ERROR syscall.Errno = 9110 + DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION syscall.Errno = 9111 + DNS_ERROR_KSP_NOT_ACCESSIBLE syscall.Errno = 9112 + DNS_ERROR_TOO_MANY_SKDS syscall.Errno = 9113 + DNS_ERROR_INVALID_ROLLOVER_PERIOD syscall.Errno = 9114 + DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET syscall.Errno = 9115 + DNS_ERROR_ROLLOVER_IN_PROGRESS syscall.Errno = 9116 + DNS_ERROR_STANDBY_KEY_NOT_PRESENT syscall.Errno = 9117 + DNS_ERROR_NOT_ALLOWED_ON_ZSK syscall.Errno = 9118 + DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD syscall.Errno = 9119 + DNS_ERROR_ROLLOVER_ALREADY_QUEUED syscall.Errno = 9120 + DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE syscall.Errno = 9121 + DNS_ERROR_BAD_KEYMASTER syscall.Errno = 9122 + DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD syscall.Errno = 9123 + DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT syscall.Errno = 9124 + DNS_ERROR_DNSSEC_IS_DISABLED syscall.Errno = 9125 + DNS_ERROR_INVALID_XML syscall.Errno = 9126 + DNS_ERROR_NO_VALID_TRUST_ANCHORS syscall.Errno = 9127 + DNS_ERROR_ROLLOVER_NOT_POKEABLE syscall.Errno = 9128 + DNS_ERROR_NSEC3_NAME_COLLISION syscall.Errno = 9129 + DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 syscall.Errno = 9130 + DNS_ERROR_PACKET_FMT_BASE syscall.Errno = 9500 + DNS_INFO_NO_RECORDS syscall.Errno = 9501 + DNS_ERROR_BAD_PACKET syscall.Errno = 9502 + DNS_ERROR_NO_PACKET syscall.Errno = 9503 + DNS_ERROR_RCODE syscall.Errno = 9504 + DNS_ERROR_UNSECURE_PACKET syscall.Errno = 9505 + DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET + DNS_REQUEST_PENDING syscall.Errno = 9506 + DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY + DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME + DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA + DNS_ERROR_GENERAL_API_BASE syscall.Errno = 9550 + DNS_ERROR_INVALID_TYPE syscall.Errno = 9551 + DNS_ERROR_INVALID_IP_ADDRESS syscall.Errno = 9552 + DNS_ERROR_INVALID_PROPERTY syscall.Errno = 9553 + DNS_ERROR_TRY_AGAIN_LATER syscall.Errno = 9554 + DNS_ERROR_NOT_UNIQUE syscall.Errno = 9555 + DNS_ERROR_NON_RFC_NAME syscall.Errno = 9556 + DNS_STATUS_FQDN syscall.Errno = 9557 + DNS_STATUS_DOTTED_NAME syscall.Errno = 9558 + DNS_STATUS_SINGLE_PART_NAME syscall.Errno = 9559 + DNS_ERROR_INVALID_NAME_CHAR syscall.Errno = 9560 + DNS_ERROR_NUMERIC_NAME syscall.Errno = 9561 + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER syscall.Errno = 9562 + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION syscall.Errno = 9563 + DNS_ERROR_CANNOT_FIND_ROOT_HINTS syscall.Errno = 9564 + DNS_ERROR_INCONSISTENT_ROOT_HINTS syscall.Errno = 9565 + DNS_ERROR_DWORD_VALUE_TOO_SMALL syscall.Errno = 9566 + DNS_ERROR_DWORD_VALUE_TOO_LARGE syscall.Errno = 9567 + DNS_ERROR_BACKGROUND_LOADING syscall.Errno = 9568 + DNS_ERROR_NOT_ALLOWED_ON_RODC syscall.Errno = 9569 + DNS_ERROR_NOT_ALLOWED_UNDER_DNAME syscall.Errno = 9570 + DNS_ERROR_DELEGATION_REQUIRED syscall.Errno = 9571 + DNS_ERROR_INVALID_POLICY_TABLE syscall.Errno = 9572 + DNS_ERROR_ADDRESS_REQUIRED syscall.Errno = 9573 + DNS_ERROR_ZONE_BASE syscall.Errno = 9600 + DNS_ERROR_ZONE_DOES_NOT_EXIST syscall.Errno = 9601 + DNS_ERROR_NO_ZONE_INFO syscall.Errno = 9602 + DNS_ERROR_INVALID_ZONE_OPERATION syscall.Errno = 9603 + DNS_ERROR_ZONE_CONFIGURATION_ERROR syscall.Errno = 9604 + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD syscall.Errno = 9605 + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS syscall.Errno = 9606 + DNS_ERROR_ZONE_LOCKED syscall.Errno = 9607 + DNS_ERROR_ZONE_CREATION_FAILED syscall.Errno = 9608 + DNS_ERROR_ZONE_ALREADY_EXISTS syscall.Errno = 9609 + DNS_ERROR_AUTOZONE_ALREADY_EXISTS syscall.Errno = 9610 + DNS_ERROR_INVALID_ZONE_TYPE syscall.Errno = 9611 + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP syscall.Errno = 9612 + DNS_ERROR_ZONE_NOT_SECONDARY syscall.Errno = 9613 + DNS_ERROR_NEED_SECONDARY_ADDRESSES syscall.Errno = 9614 + DNS_ERROR_WINS_INIT_FAILED syscall.Errno = 9615 + DNS_ERROR_NEED_WINS_SERVERS syscall.Errno = 9616 + DNS_ERROR_NBSTAT_INIT_FAILED syscall.Errno = 9617 + DNS_ERROR_SOA_DELETE_INVALID syscall.Errno = 9618 + DNS_ERROR_FORWARDER_ALREADY_EXISTS syscall.Errno = 9619 + DNS_ERROR_ZONE_REQUIRES_MASTER_IP syscall.Errno = 9620 + DNS_ERROR_ZONE_IS_SHUTDOWN syscall.Errno = 9621 + DNS_ERROR_ZONE_LOCKED_FOR_SIGNING syscall.Errno = 9622 + DNS_ERROR_DATAFILE_BASE syscall.Errno = 9650 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE syscall.Errno = 9651 + DNS_ERROR_INVALID_DATAFILE_NAME syscall.Errno = 9652 + DNS_ERROR_DATAFILE_OPEN_FAILURE syscall.Errno = 9653 + DNS_ERROR_FILE_WRITEBACK_FAILED syscall.Errno = 9654 + DNS_ERROR_DATAFILE_PARSING syscall.Errno = 9655 + DNS_ERROR_DATABASE_BASE syscall.Errno = 9700 + DNS_ERROR_RECORD_DOES_NOT_EXIST syscall.Errno = 9701 + DNS_ERROR_RECORD_FORMAT syscall.Errno = 9702 + DNS_ERROR_NODE_CREATION_FAILED syscall.Errno = 9703 + DNS_ERROR_UNKNOWN_RECORD_TYPE syscall.Errno = 9704 + DNS_ERROR_RECORD_TIMED_OUT syscall.Errno = 9705 + DNS_ERROR_NAME_NOT_IN_ZONE syscall.Errno = 9706 + DNS_ERROR_CNAME_LOOP syscall.Errno = 9707 + DNS_ERROR_NODE_IS_CNAME syscall.Errno = 9708 + DNS_ERROR_CNAME_COLLISION syscall.Errno = 9709 + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT syscall.Errno = 9710 + DNS_ERROR_RECORD_ALREADY_EXISTS syscall.Errno = 9711 + DNS_ERROR_SECONDARY_DATA syscall.Errno = 9712 + DNS_ERROR_NO_CREATE_CACHE_DATA syscall.Errno = 9713 + DNS_ERROR_NAME_DOES_NOT_EXIST syscall.Errno = 9714 + DNS_WARNING_PTR_CREATE_FAILED syscall.Errno = 9715 + DNS_WARNING_DOMAIN_UNDELETED syscall.Errno = 9716 + DNS_ERROR_DS_UNAVAILABLE syscall.Errno = 9717 + DNS_ERROR_DS_ZONE_ALREADY_EXISTS syscall.Errno = 9718 + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE syscall.Errno = 9719 + DNS_ERROR_NODE_IS_DNAME syscall.Errno = 9720 + DNS_ERROR_DNAME_COLLISION syscall.Errno = 9721 + DNS_ERROR_ALIAS_LOOP syscall.Errno = 9722 + DNS_ERROR_OPERATION_BASE syscall.Errno = 9750 + DNS_INFO_AXFR_COMPLETE syscall.Errno = 9751 + DNS_ERROR_AXFR syscall.Errno = 9752 + DNS_INFO_ADDED_LOCAL_WINS syscall.Errno = 9753 + DNS_ERROR_SECURE_BASE syscall.Errno = 9800 + DNS_STATUS_CONTINUE_NEEDED syscall.Errno = 9801 + DNS_ERROR_SETUP_BASE syscall.Errno = 9850 + DNS_ERROR_NO_TCPIP syscall.Errno = 9851 + DNS_ERROR_NO_DNS_SERVERS syscall.Errno = 9852 + DNS_ERROR_DP_BASE syscall.Errno = 9900 + DNS_ERROR_DP_DOES_NOT_EXIST syscall.Errno = 9901 + DNS_ERROR_DP_ALREADY_EXISTS syscall.Errno = 9902 + DNS_ERROR_DP_NOT_ENLISTED syscall.Errno = 9903 + DNS_ERROR_DP_ALREADY_ENLISTED syscall.Errno = 9904 + DNS_ERROR_DP_NOT_AVAILABLE syscall.Errno = 9905 + DNS_ERROR_DP_FSMO_ERROR syscall.Errno = 9906 + DNS_ERROR_RRL_NOT_ENABLED syscall.Errno = 9911 + DNS_ERROR_RRL_INVALID_WINDOW_SIZE syscall.Errno = 9912 + DNS_ERROR_RRL_INVALID_IPV4_PREFIX syscall.Errno = 9913 + DNS_ERROR_RRL_INVALID_IPV6_PREFIX syscall.Errno = 9914 + DNS_ERROR_RRL_INVALID_TC_RATE syscall.Errno = 9915 + DNS_ERROR_RRL_INVALID_LEAK_RATE syscall.Errno = 9916 + DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE syscall.Errno = 9917 + DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS syscall.Errno = 9921 + DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST syscall.Errno = 9922 + DNS_ERROR_VIRTUALIZATION_TREE_LOCKED syscall.Errno = 9923 + DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME syscall.Errno = 9924 + DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE syscall.Errno = 9925 + DNS_ERROR_ZONESCOPE_ALREADY_EXISTS syscall.Errno = 9951 + DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST syscall.Errno = 9952 + DNS_ERROR_DEFAULT_ZONESCOPE syscall.Errno = 9953 + DNS_ERROR_INVALID_ZONESCOPE_NAME syscall.Errno = 9954 + DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES syscall.Errno = 9955 + DNS_ERROR_LOAD_ZONESCOPE_FAILED syscall.Errno = 9956 + DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED syscall.Errno = 9957 + DNS_ERROR_INVALID_SCOPE_NAME syscall.Errno = 9958 + DNS_ERROR_SCOPE_DOES_NOT_EXIST syscall.Errno = 9959 + DNS_ERROR_DEFAULT_SCOPE syscall.Errno = 9960 + DNS_ERROR_INVALID_SCOPE_OPERATION syscall.Errno = 9961 + DNS_ERROR_SCOPE_LOCKED syscall.Errno = 9962 + DNS_ERROR_SCOPE_ALREADY_EXISTS syscall.Errno = 9963 + DNS_ERROR_POLICY_ALREADY_EXISTS syscall.Errno = 9971 + DNS_ERROR_POLICY_DOES_NOT_EXIST syscall.Errno = 9972 + DNS_ERROR_POLICY_INVALID_CRITERIA syscall.Errno = 9973 + DNS_ERROR_POLICY_INVALID_SETTINGS syscall.Errno = 9974 + DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED syscall.Errno = 9975 + DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST syscall.Errno = 9976 + DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS syscall.Errno = 9977 + DNS_ERROR_SUBNET_DOES_NOT_EXIST syscall.Errno = 9978 + DNS_ERROR_SUBNET_ALREADY_EXISTS syscall.Errno = 9979 + DNS_ERROR_POLICY_LOCKED syscall.Errno = 9980 + DNS_ERROR_POLICY_INVALID_WEIGHT syscall.Errno = 9981 + DNS_ERROR_POLICY_INVALID_NAME syscall.Errno = 9982 + DNS_ERROR_POLICY_MISSING_CRITERIA syscall.Errno = 9983 + DNS_ERROR_INVALID_CLIENT_SUBNET_NAME syscall.Errno = 9984 + DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID syscall.Errno = 9985 + DNS_ERROR_POLICY_SCOPE_MISSING syscall.Errno = 9986 + DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED syscall.Errno = 9987 + DNS_ERROR_SERVERSCOPE_IS_REFERENCED syscall.Errno = 9988 + DNS_ERROR_ZONESCOPE_IS_REFERENCED syscall.Errno = 9989 + DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET syscall.Errno = 9990 + DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL syscall.Errno = 9991 + DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL syscall.Errno = 9992 + DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE syscall.Errno = 9993 + DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN syscall.Errno = 9994 + DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE syscall.Errno = 9995 + DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY syscall.Errno = 9996 + WSABASEERR syscall.Errno = 10000 + WSAEINTR syscall.Errno = 10004 + WSAEBADF syscall.Errno = 10009 + WSAEACCES syscall.Errno = 10013 + WSAEFAULT syscall.Errno = 10014 + WSAEINVAL syscall.Errno = 10022 + WSAEMFILE syscall.Errno = 10024 + WSAEWOULDBLOCK syscall.Errno = 10035 + WSAEINPROGRESS syscall.Errno = 10036 + WSAEALREADY syscall.Errno = 10037 + WSAENOTSOCK syscall.Errno = 10038 + WSAEDESTADDRREQ syscall.Errno = 10039 + WSAEMSGSIZE syscall.Errno = 10040 + WSAEPROTOTYPE syscall.Errno = 10041 + WSAENOPROTOOPT syscall.Errno = 10042 + WSAEPROTONOSUPPORT syscall.Errno = 10043 + WSAESOCKTNOSUPPORT syscall.Errno = 10044 + WSAEOPNOTSUPP syscall.Errno = 10045 + WSAEPFNOSUPPORT syscall.Errno = 10046 + WSAEAFNOSUPPORT syscall.Errno = 10047 + WSAEADDRINUSE syscall.Errno = 10048 + WSAEADDRNOTAVAIL syscall.Errno = 10049 + WSAENETDOWN syscall.Errno = 10050 + WSAENETUNREACH syscall.Errno = 10051 + WSAENETRESET syscall.Errno = 10052 + WSAECONNABORTED syscall.Errno = 10053 + WSAECONNRESET syscall.Errno = 10054 + WSAENOBUFS syscall.Errno = 10055 + WSAEISCONN syscall.Errno = 10056 + WSAENOTCONN syscall.Errno = 10057 + WSAESHUTDOWN syscall.Errno = 10058 + WSAETOOMANYREFS syscall.Errno = 10059 + WSAETIMEDOUT syscall.Errno = 10060 + WSAECONNREFUSED syscall.Errno = 10061 + WSAELOOP syscall.Errno = 10062 + WSAENAMETOOLONG syscall.Errno = 10063 + WSAEHOSTDOWN syscall.Errno = 10064 + WSAEHOSTUNREACH syscall.Errno = 10065 + WSAENOTEMPTY syscall.Errno = 10066 + WSAEPROCLIM syscall.Errno = 10067 + WSAEUSERS syscall.Errno = 10068 + WSAEDQUOT syscall.Errno = 10069 + WSAESTALE syscall.Errno = 10070 + WSAEREMOTE syscall.Errno = 10071 + WSASYSNOTREADY syscall.Errno = 10091 + WSAVERNOTSUPPORTED syscall.Errno = 10092 + WSANOTINITIALISED syscall.Errno = 10093 + WSAEDISCON syscall.Errno = 10101 + WSAENOMORE syscall.Errno = 10102 + WSAECANCELLED syscall.Errno = 10103 + WSAEINVALIDPROCTABLE syscall.Errno = 10104 + WSAEINVALIDPROVIDER syscall.Errno = 10105 + WSAEPROVIDERFAILEDINIT syscall.Errno = 10106 + WSASYSCALLFAILURE syscall.Errno = 10107 + WSASERVICE_NOT_FOUND syscall.Errno = 10108 + WSATYPE_NOT_FOUND syscall.Errno = 10109 + WSA_E_NO_MORE syscall.Errno = 10110 + WSA_E_CANCELLED syscall.Errno = 10111 + WSAEREFUSED syscall.Errno = 10112 + WSAHOST_NOT_FOUND syscall.Errno = 11001 + WSATRY_AGAIN syscall.Errno = 11002 + WSANO_RECOVERY syscall.Errno = 11003 + WSANO_DATA syscall.Errno = 11004 + WSA_QOS_RECEIVERS syscall.Errno = 11005 + WSA_QOS_SENDERS syscall.Errno = 11006 + WSA_QOS_NO_SENDERS syscall.Errno = 11007 + WSA_QOS_NO_RECEIVERS syscall.Errno = 11008 + WSA_QOS_REQUEST_CONFIRMED syscall.Errno = 11009 + WSA_QOS_ADMISSION_FAILURE syscall.Errno = 11010 + WSA_QOS_POLICY_FAILURE syscall.Errno = 11011 + WSA_QOS_BAD_STYLE syscall.Errno = 11012 + WSA_QOS_BAD_OBJECT syscall.Errno = 11013 + WSA_QOS_TRAFFIC_CTRL_ERROR syscall.Errno = 11014 + WSA_QOS_GENERIC_ERROR syscall.Errno = 11015 + WSA_QOS_ESERVICETYPE syscall.Errno = 11016 + WSA_QOS_EFLOWSPEC syscall.Errno = 11017 + WSA_QOS_EPROVSPECBUF syscall.Errno = 11018 + WSA_QOS_EFILTERSTYLE syscall.Errno = 11019 + WSA_QOS_EFILTERTYPE syscall.Errno = 11020 + WSA_QOS_EFILTERCOUNT syscall.Errno = 11021 + WSA_QOS_EOBJLENGTH syscall.Errno = 11022 + WSA_QOS_EFLOWCOUNT syscall.Errno = 11023 + WSA_QOS_EUNKOWNPSOBJ syscall.Errno = 11024 + WSA_QOS_EPOLICYOBJ syscall.Errno = 11025 + WSA_QOS_EFLOWDESC syscall.Errno = 11026 + WSA_QOS_EPSFLOWSPEC syscall.Errno = 11027 + WSA_QOS_EPSFILTERSPEC syscall.Errno = 11028 + WSA_QOS_ESDMODEOBJ syscall.Errno = 11029 + WSA_QOS_ESHAPERATEOBJ syscall.Errno = 11030 + WSA_QOS_RESERVED_PETYPE syscall.Errno = 11031 + WSA_SECURE_HOST_NOT_FOUND syscall.Errno = 11032 + WSA_IPSEC_NAME_POLICY_ERROR syscall.Errno = 11033 + ERROR_IPSEC_QM_POLICY_EXISTS syscall.Errno = 13000 + ERROR_IPSEC_QM_POLICY_NOT_FOUND syscall.Errno = 13001 + ERROR_IPSEC_QM_POLICY_IN_USE syscall.Errno = 13002 + ERROR_IPSEC_MM_POLICY_EXISTS syscall.Errno = 13003 + ERROR_IPSEC_MM_POLICY_NOT_FOUND syscall.Errno = 13004 + ERROR_IPSEC_MM_POLICY_IN_USE syscall.Errno = 13005 + ERROR_IPSEC_MM_FILTER_EXISTS syscall.Errno = 13006 + ERROR_IPSEC_MM_FILTER_NOT_FOUND syscall.Errno = 13007 + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS syscall.Errno = 13008 + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND syscall.Errno = 13009 + ERROR_IPSEC_MM_AUTH_EXISTS syscall.Errno = 13010 + ERROR_IPSEC_MM_AUTH_NOT_FOUND syscall.Errno = 13011 + ERROR_IPSEC_MM_AUTH_IN_USE syscall.Errno = 13012 + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND syscall.Errno = 13013 + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND syscall.Errno = 13014 + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND syscall.Errno = 13015 + ERROR_IPSEC_TUNNEL_FILTER_EXISTS syscall.Errno = 13016 + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND syscall.Errno = 13017 + ERROR_IPSEC_MM_FILTER_PENDING_DELETION syscall.Errno = 13018 + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION syscall.Errno = 13019 + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION syscall.Errno = 13020 + ERROR_IPSEC_MM_POLICY_PENDING_DELETION syscall.Errno = 13021 + ERROR_IPSEC_MM_AUTH_PENDING_DELETION syscall.Errno = 13022 + ERROR_IPSEC_QM_POLICY_PENDING_DELETION syscall.Errno = 13023 + WARNING_IPSEC_MM_POLICY_PRUNED syscall.Errno = 13024 + WARNING_IPSEC_QM_POLICY_PRUNED syscall.Errno = 13025 + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN syscall.Errno = 13800 + ERROR_IPSEC_IKE_AUTH_FAIL syscall.Errno = 13801 + ERROR_IPSEC_IKE_ATTRIB_FAIL syscall.Errno = 13802 + ERROR_IPSEC_IKE_NEGOTIATION_PENDING syscall.Errno = 13803 + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR syscall.Errno = 13804 + ERROR_IPSEC_IKE_TIMED_OUT syscall.Errno = 13805 + ERROR_IPSEC_IKE_NO_CERT syscall.Errno = 13806 + ERROR_IPSEC_IKE_SA_DELETED syscall.Errno = 13807 + ERROR_IPSEC_IKE_SA_REAPED syscall.Errno = 13808 + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP syscall.Errno = 13809 + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP syscall.Errno = 13810 + ERROR_IPSEC_IKE_QUEUE_DROP_MM syscall.Errno = 13811 + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM syscall.Errno = 13812 + ERROR_IPSEC_IKE_DROP_NO_RESPONSE syscall.Errno = 13813 + ERROR_IPSEC_IKE_MM_DELAY_DROP syscall.Errno = 13814 + ERROR_IPSEC_IKE_QM_DELAY_DROP syscall.Errno = 13815 + ERROR_IPSEC_IKE_ERROR syscall.Errno = 13816 + ERROR_IPSEC_IKE_CRL_FAILED syscall.Errno = 13817 + ERROR_IPSEC_IKE_INVALID_KEY_USAGE syscall.Errno = 13818 + ERROR_IPSEC_IKE_INVALID_CERT_TYPE syscall.Errno = 13819 + ERROR_IPSEC_IKE_NO_PRIVATE_KEY syscall.Errno = 13820 + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY syscall.Errno = 13821 + ERROR_IPSEC_IKE_DH_FAIL syscall.Errno = 13822 + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED syscall.Errno = 13823 + ERROR_IPSEC_IKE_INVALID_HEADER syscall.Errno = 13824 + ERROR_IPSEC_IKE_NO_POLICY syscall.Errno = 13825 + ERROR_IPSEC_IKE_INVALID_SIGNATURE syscall.Errno = 13826 + ERROR_IPSEC_IKE_KERBEROS_ERROR syscall.Errno = 13827 + ERROR_IPSEC_IKE_NO_PUBLIC_KEY syscall.Errno = 13828 + ERROR_IPSEC_IKE_PROCESS_ERR syscall.Errno = 13829 + ERROR_IPSEC_IKE_PROCESS_ERR_SA syscall.Errno = 13830 + ERROR_IPSEC_IKE_PROCESS_ERR_PROP syscall.Errno = 13831 + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS syscall.Errno = 13832 + ERROR_IPSEC_IKE_PROCESS_ERR_KE syscall.Errno = 13833 + ERROR_IPSEC_IKE_PROCESS_ERR_ID syscall.Errno = 13834 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT syscall.Errno = 13835 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ syscall.Errno = 13836 + ERROR_IPSEC_IKE_PROCESS_ERR_HASH syscall.Errno = 13837 + ERROR_IPSEC_IKE_PROCESS_ERR_SIG syscall.Errno = 13838 + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE syscall.Errno = 13839 + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY syscall.Errno = 13840 + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE syscall.Errno = 13841 + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR syscall.Errno = 13842 + ERROR_IPSEC_IKE_INVALID_PAYLOAD syscall.Errno = 13843 + ERROR_IPSEC_IKE_LOAD_SOFT_SA syscall.Errno = 13844 + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN syscall.Errno = 13845 + ERROR_IPSEC_IKE_INVALID_COOKIE syscall.Errno = 13846 + ERROR_IPSEC_IKE_NO_PEER_CERT syscall.Errno = 13847 + ERROR_IPSEC_IKE_PEER_CRL_FAILED syscall.Errno = 13848 + ERROR_IPSEC_IKE_POLICY_CHANGE syscall.Errno = 13849 + ERROR_IPSEC_IKE_NO_MM_POLICY syscall.Errno = 13850 + ERROR_IPSEC_IKE_NOTCBPRIV syscall.Errno = 13851 + ERROR_IPSEC_IKE_SECLOADFAIL syscall.Errno = 13852 + ERROR_IPSEC_IKE_FAILSSPINIT syscall.Errno = 13853 + ERROR_IPSEC_IKE_FAILQUERYSSP syscall.Errno = 13854 + ERROR_IPSEC_IKE_SRVACQFAIL syscall.Errno = 13855 + ERROR_IPSEC_IKE_SRVQUERYCRED syscall.Errno = 13856 + ERROR_IPSEC_IKE_GETSPIFAIL syscall.Errno = 13857 + ERROR_IPSEC_IKE_INVALID_FILTER syscall.Errno = 13858 + ERROR_IPSEC_IKE_OUT_OF_MEMORY syscall.Errno = 13859 + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED syscall.Errno = 13860 + ERROR_IPSEC_IKE_INVALID_POLICY syscall.Errno = 13861 + ERROR_IPSEC_IKE_UNKNOWN_DOI syscall.Errno = 13862 + ERROR_IPSEC_IKE_INVALID_SITUATION syscall.Errno = 13863 + ERROR_IPSEC_IKE_DH_FAILURE syscall.Errno = 13864 + ERROR_IPSEC_IKE_INVALID_GROUP syscall.Errno = 13865 + ERROR_IPSEC_IKE_ENCRYPT syscall.Errno = 13866 + ERROR_IPSEC_IKE_DECRYPT syscall.Errno = 13867 + ERROR_IPSEC_IKE_POLICY_MATCH syscall.Errno = 13868 + ERROR_IPSEC_IKE_UNSUPPORTED_ID syscall.Errno = 13869 + ERROR_IPSEC_IKE_INVALID_HASH syscall.Errno = 13870 + ERROR_IPSEC_IKE_INVALID_HASH_ALG syscall.Errno = 13871 + ERROR_IPSEC_IKE_INVALID_HASH_SIZE syscall.Errno = 13872 + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG syscall.Errno = 13873 + ERROR_IPSEC_IKE_INVALID_AUTH_ALG syscall.Errno = 13874 + ERROR_IPSEC_IKE_INVALID_SIG syscall.Errno = 13875 + ERROR_IPSEC_IKE_LOAD_FAILED syscall.Errno = 13876 + ERROR_IPSEC_IKE_RPC_DELETE syscall.Errno = 13877 + ERROR_IPSEC_IKE_BENIGN_REINIT syscall.Errno = 13878 + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY syscall.Errno = 13879 + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION syscall.Errno = 13880 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN syscall.Errno = 13881 + ERROR_IPSEC_IKE_MM_LIMIT syscall.Errno = 13882 + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED syscall.Errno = 13883 + ERROR_IPSEC_IKE_QM_LIMIT syscall.Errno = 13884 + ERROR_IPSEC_IKE_MM_EXPIRED syscall.Errno = 13885 + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID syscall.Errno = 13886 + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH syscall.Errno = 13887 + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID syscall.Errno = 13888 + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD syscall.Errno = 13889 + ERROR_IPSEC_IKE_DOS_COOKIE_SENT syscall.Errno = 13890 + ERROR_IPSEC_IKE_SHUTTING_DOWN syscall.Errno = 13891 + ERROR_IPSEC_IKE_CGA_AUTH_FAILED syscall.Errno = 13892 + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA syscall.Errno = 13893 + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM syscall.Errno = 13894 + ERROR_IPSEC_IKE_QM_EXPIRED syscall.Errno = 13895 + ERROR_IPSEC_IKE_TOO_MANY_FILTERS syscall.Errno = 13896 + ERROR_IPSEC_IKE_NEG_STATUS_END syscall.Errno = 13897 + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL syscall.Errno = 13898 + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE syscall.Errno = 13899 + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING syscall.Errno = 13900 + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING syscall.Errno = 13901 + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS syscall.Errno = 13902 + ERROR_IPSEC_IKE_RATELIMIT_DROP syscall.Errno = 13903 + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE syscall.Errno = 13904 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE syscall.Errno = 13905 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE syscall.Errno = 13906 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY syscall.Errno = 13907 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE syscall.Errno = 13908 + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END syscall.Errno = 13909 + ERROR_IPSEC_BAD_SPI syscall.Errno = 13910 + ERROR_IPSEC_SA_LIFETIME_EXPIRED syscall.Errno = 13911 + ERROR_IPSEC_WRONG_SA syscall.Errno = 13912 + ERROR_IPSEC_REPLAY_CHECK_FAILED syscall.Errno = 13913 + ERROR_IPSEC_INVALID_PACKET syscall.Errno = 13914 + ERROR_IPSEC_INTEGRITY_CHECK_FAILED syscall.Errno = 13915 + ERROR_IPSEC_CLEAR_TEXT_DROP syscall.Errno = 13916 + ERROR_IPSEC_AUTH_FIREWALL_DROP syscall.Errno = 13917 + ERROR_IPSEC_THROTTLE_DROP syscall.Errno = 13918 + ERROR_IPSEC_DOSP_BLOCK syscall.Errno = 13925 + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST syscall.Errno = 13926 + ERROR_IPSEC_DOSP_INVALID_PACKET syscall.Errno = 13927 + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED syscall.Errno = 13928 + ERROR_IPSEC_DOSP_MAX_ENTRIES syscall.Errno = 13929 + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED syscall.Errno = 13930 + ERROR_IPSEC_DOSP_NOT_INSTALLED syscall.Errno = 13931 + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES syscall.Errno = 13932 + ERROR_SXS_SECTION_NOT_FOUND syscall.Errno = 14000 + ERROR_SXS_CANT_GEN_ACTCTX syscall.Errno = 14001 + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT syscall.Errno = 14002 + ERROR_SXS_ASSEMBLY_NOT_FOUND syscall.Errno = 14003 + ERROR_SXS_MANIFEST_FORMAT_ERROR syscall.Errno = 14004 + ERROR_SXS_MANIFEST_PARSE_ERROR syscall.Errno = 14005 + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED syscall.Errno = 14006 + ERROR_SXS_KEY_NOT_FOUND syscall.Errno = 14007 + ERROR_SXS_VERSION_CONFLICT syscall.Errno = 14008 + ERROR_SXS_WRONG_SECTION_TYPE syscall.Errno = 14009 + ERROR_SXS_THREAD_QUERIES_DISABLED syscall.Errno = 14010 + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET syscall.Errno = 14011 + ERROR_SXS_UNKNOWN_ENCODING_GROUP syscall.Errno = 14012 + ERROR_SXS_UNKNOWN_ENCODING syscall.Errno = 14013 + ERROR_SXS_INVALID_XML_NAMESPACE_URI syscall.Errno = 14014 + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14015 + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14016 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14017 + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14018 + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14019 + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT syscall.Errno = 14020 + ERROR_SXS_DUPLICATE_DLL_NAME syscall.Errno = 14021 + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME syscall.Errno = 14022 + ERROR_SXS_DUPLICATE_CLSID syscall.Errno = 14023 + ERROR_SXS_DUPLICATE_IID syscall.Errno = 14024 + ERROR_SXS_DUPLICATE_TLBID syscall.Errno = 14025 + ERROR_SXS_DUPLICATE_PROGID syscall.Errno = 14026 + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME syscall.Errno = 14027 + ERROR_SXS_FILE_HASH_MISMATCH syscall.Errno = 14028 + ERROR_SXS_POLICY_PARSE_ERROR syscall.Errno = 14029 + ERROR_SXS_XML_E_MISSINGQUOTE syscall.Errno = 14030 + ERROR_SXS_XML_E_COMMENTSYNTAX syscall.Errno = 14031 + ERROR_SXS_XML_E_BADSTARTNAMECHAR syscall.Errno = 14032 + ERROR_SXS_XML_E_BADNAMECHAR syscall.Errno = 14033 + ERROR_SXS_XML_E_BADCHARINSTRING syscall.Errno = 14034 + ERROR_SXS_XML_E_XMLDECLSYNTAX syscall.Errno = 14035 + ERROR_SXS_XML_E_BADCHARDATA syscall.Errno = 14036 + ERROR_SXS_XML_E_MISSINGWHITESPACE syscall.Errno = 14037 + ERROR_SXS_XML_E_EXPECTINGTAGEND syscall.Errno = 14038 + ERROR_SXS_XML_E_MISSINGSEMICOLON syscall.Errno = 14039 + ERROR_SXS_XML_E_UNBALANCEDPAREN syscall.Errno = 14040 + ERROR_SXS_XML_E_INTERNALERROR syscall.Errno = 14041 + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE syscall.Errno = 14042 + ERROR_SXS_XML_E_INCOMPLETE_ENCODING syscall.Errno = 14043 + ERROR_SXS_XML_E_MISSING_PAREN syscall.Errno = 14044 + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE syscall.Errno = 14045 + ERROR_SXS_XML_E_MULTIPLE_COLONS syscall.Errno = 14046 + ERROR_SXS_XML_E_INVALID_DECIMAL syscall.Errno = 14047 + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL syscall.Errno = 14048 + ERROR_SXS_XML_E_INVALID_UNICODE syscall.Errno = 14049 + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK syscall.Errno = 14050 + ERROR_SXS_XML_E_UNEXPECTEDENDTAG syscall.Errno = 14051 + ERROR_SXS_XML_E_UNCLOSEDTAG syscall.Errno = 14052 + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE syscall.Errno = 14053 + ERROR_SXS_XML_E_MULTIPLEROOTS syscall.Errno = 14054 + ERROR_SXS_XML_E_INVALIDATROOTLEVEL syscall.Errno = 14055 + ERROR_SXS_XML_E_BADXMLDECL syscall.Errno = 14056 + ERROR_SXS_XML_E_MISSINGROOT syscall.Errno = 14057 + ERROR_SXS_XML_E_UNEXPECTEDEOF syscall.Errno = 14058 + ERROR_SXS_XML_E_BADPEREFINSUBSET syscall.Errno = 14059 + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG syscall.Errno = 14060 + ERROR_SXS_XML_E_UNCLOSEDENDTAG syscall.Errno = 14061 + ERROR_SXS_XML_E_UNCLOSEDSTRING syscall.Errno = 14062 + ERROR_SXS_XML_E_UNCLOSEDCOMMENT syscall.Errno = 14063 + ERROR_SXS_XML_E_UNCLOSEDDECL syscall.Errno = 14064 + ERROR_SXS_XML_E_UNCLOSEDCDATA syscall.Errno = 14065 + ERROR_SXS_XML_E_RESERVEDNAMESPACE syscall.Errno = 14066 + ERROR_SXS_XML_E_INVALIDENCODING syscall.Errno = 14067 + ERROR_SXS_XML_E_INVALIDSWITCH syscall.Errno = 14068 + ERROR_SXS_XML_E_BADXMLCASE syscall.Errno = 14069 + ERROR_SXS_XML_E_INVALID_STANDALONE syscall.Errno = 14070 + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE syscall.Errno = 14071 + ERROR_SXS_XML_E_INVALID_VERSION syscall.Errno = 14072 + ERROR_SXS_XML_E_MISSINGEQUALS syscall.Errno = 14073 + ERROR_SXS_PROTECTION_RECOVERY_FAILED syscall.Errno = 14074 + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT syscall.Errno = 14075 + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID syscall.Errno = 14076 + ERROR_SXS_UNTRANSLATABLE_HRESULT syscall.Errno = 14077 + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING syscall.Errno = 14078 + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14079 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14080 + ERROR_SXS_ASSEMBLY_MISSING syscall.Errno = 14081 + ERROR_SXS_CORRUPT_ACTIVATION_STACK syscall.Errno = 14082 + ERROR_SXS_CORRUPTION syscall.Errno = 14083 + ERROR_SXS_EARLY_DEACTIVATION syscall.Errno = 14084 + ERROR_SXS_INVALID_DEACTIVATION syscall.Errno = 14085 + ERROR_SXS_MULTIPLE_DEACTIVATION syscall.Errno = 14086 + ERROR_SXS_PROCESS_TERMINATION_REQUESTED syscall.Errno = 14087 + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT syscall.Errno = 14088 + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY syscall.Errno = 14089 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE syscall.Errno = 14090 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14091 + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE syscall.Errno = 14092 + ERROR_SXS_IDENTITY_PARSE_ERROR syscall.Errno = 14093 + ERROR_MALFORMED_SUBSTITUTION_STRING syscall.Errno = 14094 + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN syscall.Errno = 14095 + ERROR_UNMAPPED_SUBSTITUTION_STRING syscall.Errno = 14096 + ERROR_SXS_ASSEMBLY_NOT_LOCKED syscall.Errno = 14097 + ERROR_SXS_COMPONENT_STORE_CORRUPT syscall.Errno = 14098 + ERROR_ADVANCED_INSTALLER_FAILED syscall.Errno = 14099 + ERROR_XML_ENCODING_MISMATCH syscall.Errno = 14100 + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT syscall.Errno = 14101 + ERROR_SXS_IDENTITIES_DIFFERENT syscall.Errno = 14102 + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT syscall.Errno = 14103 + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY syscall.Errno = 14104 + ERROR_SXS_MANIFEST_TOO_BIG syscall.Errno = 14105 + ERROR_SXS_SETTING_NOT_REGISTERED syscall.Errno = 14106 + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE syscall.Errno = 14107 + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108 + ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109 + ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110 + ERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS syscall.Errno = 14111 + ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000 + ERROR_EVT_INVALID_QUERY syscall.Errno = 15001 + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002 + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND syscall.Errno = 15003 + ERROR_EVT_INVALID_PUBLISHER_NAME syscall.Errno = 15004 + ERROR_EVT_INVALID_EVENT_DATA syscall.Errno = 15005 + ERROR_EVT_CHANNEL_NOT_FOUND syscall.Errno = 15007 + ERROR_EVT_MALFORMED_XML_TEXT syscall.Errno = 15008 + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL syscall.Errno = 15009 + ERROR_EVT_CONFIGURATION_ERROR syscall.Errno = 15010 + ERROR_EVT_QUERY_RESULT_STALE syscall.Errno = 15011 + ERROR_EVT_QUERY_RESULT_INVALID_POSITION syscall.Errno = 15012 + ERROR_EVT_NON_VALIDATING_MSXML syscall.Errno = 15013 + ERROR_EVT_FILTER_ALREADYSCOPED syscall.Errno = 15014 + ERROR_EVT_FILTER_NOTELTSET syscall.Errno = 15015 + ERROR_EVT_FILTER_INVARG syscall.Errno = 15016 + ERROR_EVT_FILTER_INVTEST syscall.Errno = 15017 + ERROR_EVT_FILTER_INVTYPE syscall.Errno = 15018 + ERROR_EVT_FILTER_PARSEERR syscall.Errno = 15019 + ERROR_EVT_FILTER_UNSUPPORTEDOP syscall.Errno = 15020 + ERROR_EVT_FILTER_UNEXPECTEDTOKEN syscall.Errno = 15021 + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL syscall.Errno = 15022 + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE syscall.Errno = 15023 + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE syscall.Errno = 15024 + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE syscall.Errno = 15025 + ERROR_EVT_FILTER_TOO_COMPLEX syscall.Errno = 15026 + ERROR_EVT_MESSAGE_NOT_FOUND syscall.Errno = 15027 + ERROR_EVT_MESSAGE_ID_NOT_FOUND syscall.Errno = 15028 + ERROR_EVT_UNRESOLVED_VALUE_INSERT syscall.Errno = 15029 + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT syscall.Errno = 15030 + ERROR_EVT_MAX_INSERTS_REACHED syscall.Errno = 15031 + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND syscall.Errno = 15032 + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND syscall.Errno = 15033 + ERROR_EVT_VERSION_TOO_OLD syscall.Errno = 15034 + ERROR_EVT_VERSION_TOO_NEW syscall.Errno = 15035 + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY syscall.Errno = 15036 + ERROR_EVT_PUBLISHER_DISABLED syscall.Errno = 15037 + ERROR_EVT_FILTER_OUT_OF_RANGE syscall.Errno = 15038 + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE syscall.Errno = 15080 + ERROR_EC_LOG_DISABLED syscall.Errno = 15081 + ERROR_EC_CIRCULAR_FORWARDING syscall.Errno = 15082 + ERROR_EC_CREDSTORE_FULL syscall.Errno = 15083 + ERROR_EC_CRED_NOT_FOUND syscall.Errno = 15084 + ERROR_EC_NO_ACTIVE_CHANNEL syscall.Errno = 15085 + ERROR_MUI_FILE_NOT_FOUND syscall.Errno = 15100 + ERROR_MUI_INVALID_FILE syscall.Errno = 15101 + ERROR_MUI_INVALID_RC_CONFIG syscall.Errno = 15102 + ERROR_MUI_INVALID_LOCALE_NAME syscall.Errno = 15103 + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME syscall.Errno = 15104 + ERROR_MUI_FILE_NOT_LOADED syscall.Errno = 15105 + ERROR_RESOURCE_ENUM_USER_STOP syscall.Errno = 15106 + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED syscall.Errno = 15107 + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME syscall.Errno = 15108 + ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE syscall.Errno = 15110 + ERROR_MRM_INVALID_PRICONFIG syscall.Errno = 15111 + ERROR_MRM_INVALID_FILE_TYPE syscall.Errno = 15112 + ERROR_MRM_UNKNOWN_QUALIFIER syscall.Errno = 15113 + ERROR_MRM_INVALID_QUALIFIER_VALUE syscall.Errno = 15114 + ERROR_MRM_NO_CANDIDATE syscall.Errno = 15115 + ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE syscall.Errno = 15116 + ERROR_MRM_RESOURCE_TYPE_MISMATCH syscall.Errno = 15117 + ERROR_MRM_DUPLICATE_MAP_NAME syscall.Errno = 15118 + ERROR_MRM_DUPLICATE_ENTRY syscall.Errno = 15119 + ERROR_MRM_INVALID_RESOURCE_IDENTIFIER syscall.Errno = 15120 + ERROR_MRM_FILEPATH_TOO_LONG syscall.Errno = 15121 + ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE syscall.Errno = 15122 + ERROR_MRM_INVALID_PRI_FILE syscall.Errno = 15126 + ERROR_MRM_NAMED_RESOURCE_NOT_FOUND syscall.Errno = 15127 + ERROR_MRM_MAP_NOT_FOUND syscall.Errno = 15135 + ERROR_MRM_UNSUPPORTED_PROFILE_TYPE syscall.Errno = 15136 + ERROR_MRM_INVALID_QUALIFIER_OPERATOR syscall.Errno = 15137 + ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE syscall.Errno = 15138 + ERROR_MRM_AUTOMERGE_ENABLED syscall.Errno = 15139 + ERROR_MRM_TOO_MANY_RESOURCES syscall.Errno = 15140 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE syscall.Errno = 15141 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE syscall.Errno = 15142 + ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD syscall.Errno = 15143 + ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST syscall.Errno = 15144 + ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT syscall.Errno = 15145 + ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE syscall.Errno = 15146 + ERROR_MRM_GENERATION_COUNT_MISMATCH syscall.Errno = 15147 + ERROR_PRI_MERGE_VERSION_MISMATCH syscall.Errno = 15148 + ERROR_PRI_MERGE_MISSING_SCHEMA syscall.Errno = 15149 + ERROR_PRI_MERGE_LOAD_FILE_FAILED syscall.Errno = 15150 + ERROR_PRI_MERGE_ADD_FILE_FAILED syscall.Errno = 15151 + ERROR_PRI_MERGE_WRITE_FILE_FAILED syscall.Errno = 15152 + ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED syscall.Errno = 15153 + ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED syscall.Errno = 15154 + ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED syscall.Errno = 15155 + ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED syscall.Errno = 15156 + ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157 + ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158 + ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159 + ERROR_MRM_MISSING_DEFAULT_LANGUAGE syscall.Errno = 15160 + ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200 + ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201 + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202 + ERROR_MCA_MCCS_VERSION_MISMATCH syscall.Errno = 15203 + ERROR_MCA_UNSUPPORTED_MCCS_VERSION syscall.Errno = 15204 + ERROR_MCA_INTERNAL_ERROR syscall.Errno = 15205 + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED syscall.Errno = 15206 + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE syscall.Errno = 15207 + ERROR_AMBIGUOUS_SYSTEM_DEVICE syscall.Errno = 15250 + ERROR_SYSTEM_DEVICE_NOT_FOUND syscall.Errno = 15299 + ERROR_HASH_NOT_SUPPORTED syscall.Errno = 15300 + ERROR_HASH_NOT_PRESENT syscall.Errno = 15301 + ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED syscall.Errno = 15321 + ERROR_GPIO_CLIENT_INFORMATION_INVALID syscall.Errno = 15322 + ERROR_GPIO_VERSION_NOT_SUPPORTED syscall.Errno = 15323 + ERROR_GPIO_INVALID_REGISTRATION_PACKET syscall.Errno = 15324 + ERROR_GPIO_OPERATION_DENIED syscall.Errno = 15325 + ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE syscall.Errno = 15326 + ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED syscall.Errno = 15327 + ERROR_CANNOT_SWITCH_RUNLEVEL syscall.Errno = 15400 + ERROR_INVALID_RUNLEVEL_SETTING syscall.Errno = 15401 + ERROR_RUNLEVEL_SWITCH_TIMEOUT syscall.Errno = 15402 + ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT syscall.Errno = 15403 + ERROR_RUNLEVEL_SWITCH_IN_PROGRESS syscall.Errno = 15404 + ERROR_SERVICES_FAILED_AUTOSTART syscall.Errno = 15405 + ERROR_COM_TASK_STOP_PENDING syscall.Errno = 15501 + ERROR_INSTALL_OPEN_PACKAGE_FAILED syscall.Errno = 15600 + ERROR_INSTALL_PACKAGE_NOT_FOUND syscall.Errno = 15601 + ERROR_INSTALL_INVALID_PACKAGE syscall.Errno = 15602 + ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED syscall.Errno = 15603 + ERROR_INSTALL_OUT_OF_DISK_SPACE syscall.Errno = 15604 + ERROR_INSTALL_NETWORK_FAILURE syscall.Errno = 15605 + ERROR_INSTALL_REGISTRATION_FAILURE syscall.Errno = 15606 + ERROR_INSTALL_DEREGISTRATION_FAILURE syscall.Errno = 15607 + ERROR_INSTALL_CANCEL syscall.Errno = 15608 + ERROR_INSTALL_FAILED syscall.Errno = 15609 + ERROR_REMOVE_FAILED syscall.Errno = 15610 + ERROR_PACKAGE_ALREADY_EXISTS syscall.Errno = 15611 + ERROR_NEEDS_REMEDIATION syscall.Errno = 15612 + ERROR_INSTALL_PREREQUISITE_FAILED syscall.Errno = 15613 + ERROR_PACKAGE_REPOSITORY_CORRUPTED syscall.Errno = 15614 + ERROR_INSTALL_POLICY_FAILURE syscall.Errno = 15615 + ERROR_PACKAGE_UPDATING syscall.Errno = 15616 + ERROR_DEPLOYMENT_BLOCKED_BY_POLICY syscall.Errno = 15617 + ERROR_PACKAGES_IN_USE syscall.Errno = 15618 + ERROR_RECOVERY_FILE_CORRUPT syscall.Errno = 15619 + ERROR_INVALID_STAGED_SIGNATURE syscall.Errno = 15620 + ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED syscall.Errno = 15621 + ERROR_INSTALL_PACKAGE_DOWNGRADE syscall.Errno = 15622 + ERROR_SYSTEM_NEEDS_REMEDIATION syscall.Errno = 15623 + ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN syscall.Errno = 15624 + ERROR_RESILIENCY_FILE_CORRUPT syscall.Errno = 15625 + ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING syscall.Errno = 15626 + ERROR_PACKAGE_MOVE_FAILED syscall.Errno = 15627 + ERROR_INSTALL_VOLUME_NOT_EMPTY syscall.Errno = 15628 + ERROR_INSTALL_VOLUME_OFFLINE syscall.Errno = 15629 + ERROR_INSTALL_VOLUME_CORRUPT syscall.Errno = 15630 + ERROR_NEEDS_REGISTRATION syscall.Errno = 15631 + ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE syscall.Errno = 15632 + ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED syscall.Errno = 15633 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE syscall.Errno = 15634 + ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM syscall.Errno = 15635 + ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING syscall.Errno = 15636 + ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE syscall.Errno = 15637 + ERROR_PACKAGE_STAGING_ONHOLD syscall.Errno = 15638 + ERROR_INSTALL_INVALID_RELATED_SET_UPDATE syscall.Errno = 15639 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640 + ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF syscall.Errno = 15641 + ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED syscall.Errno = 15642 + ERROR_PACKAGES_REPUTATION_CHECK_FAILED syscall.Errno = 15643 + ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT syscall.Errno = 15644 + ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645 + ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646 + ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647 + ERROR_APPX_RAW_DATA_WRITE_FAILED syscall.Errno = 15648 + ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE syscall.Errno = 15649 + ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE syscall.Errno = 15650 + ERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY syscall.Errno = 15651 + ERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY syscall.Errno = 15652 + ERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER syscall.Errno = 15653 + ERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED syscall.Errno = 15654 + ERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE syscall.Errno = 15655 + ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES syscall.Errno = 15656 + APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700 + APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701 + APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702 + APPMODEL_ERROR_NO_APPLICATION syscall.Errno = 15703 + APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704 + APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705 + APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706 + APPMODEL_ERROR_NO_MUTABLE_DIRECTORY syscall.Errno = 15707 + ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800 + ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801 + ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802 + ERROR_STATE_STRUCTURED_RESET_FAILED syscall.Errno = 15803 + ERROR_STATE_OPEN_CONTAINER_FAILED syscall.Errno = 15804 + ERROR_STATE_CREATE_CONTAINER_FAILED syscall.Errno = 15805 + ERROR_STATE_DELETE_CONTAINER_FAILED syscall.Errno = 15806 + ERROR_STATE_READ_SETTING_FAILED syscall.Errno = 15807 + ERROR_STATE_WRITE_SETTING_FAILED syscall.Errno = 15808 + ERROR_STATE_DELETE_SETTING_FAILED syscall.Errno = 15809 + ERROR_STATE_QUERY_SETTING_FAILED syscall.Errno = 15810 + ERROR_STATE_READ_COMPOSITE_SETTING_FAILED syscall.Errno = 15811 + ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED syscall.Errno = 15812 + ERROR_STATE_ENUMERATE_CONTAINER_FAILED syscall.Errno = 15813 + ERROR_STATE_ENUMERATE_SETTINGS_FAILED syscall.Errno = 15814 + ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15815 + ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15816 + ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15817 + ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15818 + ERROR_API_UNAVAILABLE syscall.Errno = 15841 + STORE_ERROR_UNLICENSED syscall.Errno = 15861 + STORE_ERROR_UNLICENSED_USER syscall.Errno = 15862 + STORE_ERROR_PENDING_COM_TRANSACTION syscall.Errno = 15863 + STORE_ERROR_LICENSE_REVOKED syscall.Errno = 15864 + SEVERITY_SUCCESS syscall.Errno = 0 + SEVERITY_ERROR syscall.Errno = 1 + FACILITY_NT_BIT = 0x10000000 + E_NOT_SET = ERROR_NOT_FOUND + E_NOT_VALID_STATE = ERROR_INVALID_STATE + E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER + E_TIME_SENSITIVE_THREAD = ERROR_TIME_SENSITIVE_THREAD + E_NO_TASK_QUEUE = ERROR_NO_TASK_QUEUE + NOERROR syscall.Errno = 0 + E_UNEXPECTED Handle = 0x8000FFFF + E_NOTIMPL Handle = 0x80004001 + E_OUTOFMEMORY Handle = 0x8007000E + E_INVALIDARG Handle = 0x80070057 + E_NOINTERFACE Handle = 0x80004002 + E_POINTER Handle = 0x80004003 + E_HANDLE Handle = 0x80070006 + E_ABORT Handle = 0x80004004 + E_FAIL Handle = 0x80004005 + E_ACCESSDENIED Handle = 0x80070005 + E_PENDING Handle = 0x8000000A + E_BOUNDS Handle = 0x8000000B + E_CHANGED_STATE Handle = 0x8000000C + E_ILLEGAL_STATE_CHANGE Handle = 0x8000000D + E_ILLEGAL_METHOD_CALL Handle = 0x8000000E + RO_E_METADATA_NAME_NOT_FOUND Handle = 0x8000000F + RO_E_METADATA_NAME_IS_NAMESPACE Handle = 0x80000010 + RO_E_METADATA_INVALID_TYPE_FORMAT Handle = 0x80000011 + RO_E_INVALID_METADATA_FILE Handle = 0x80000012 + RO_E_CLOSED Handle = 0x80000013 + RO_E_EXCLUSIVE_WRITE Handle = 0x80000014 + RO_E_CHANGE_NOTIFICATION_IN_PROGRESS Handle = 0x80000015 + RO_E_ERROR_STRING_NOT_FOUND Handle = 0x80000016 + E_STRING_NOT_NULL_TERMINATED Handle = 0x80000017 + E_ILLEGAL_DELEGATE_ASSIGNMENT Handle = 0x80000018 + E_ASYNC_OPERATION_NOT_STARTED Handle = 0x80000019 + E_APPLICATION_EXITING Handle = 0x8000001A + E_APPLICATION_VIEW_EXITING Handle = 0x8000001B + RO_E_MUST_BE_AGILE Handle = 0x8000001C + RO_E_UNSUPPORTED_FROM_MTA Handle = 0x8000001D + RO_E_COMMITTED Handle = 0x8000001E + RO_E_BLOCKED_CROSS_ASTA_CALL Handle = 0x8000001F + RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER Handle = 0x80000020 + RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER Handle = 0x80000021 + CO_E_INIT_TLS Handle = 0x80004006 + CO_E_INIT_SHARED_ALLOCATOR Handle = 0x80004007 + CO_E_INIT_MEMORY_ALLOCATOR Handle = 0x80004008 + CO_E_INIT_CLASS_CACHE Handle = 0x80004009 + CO_E_INIT_RPC_CHANNEL Handle = 0x8000400A + CO_E_INIT_TLS_SET_CHANNEL_CONTROL Handle = 0x8000400B + CO_E_INIT_TLS_CHANNEL_CONTROL Handle = 0x8000400C + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR Handle = 0x8000400D + CO_E_INIT_SCM_MUTEX_EXISTS Handle = 0x8000400E + CO_E_INIT_SCM_FILE_MAPPING_EXISTS Handle = 0x8000400F + CO_E_INIT_SCM_MAP_VIEW_OF_FILE Handle = 0x80004010 + CO_E_INIT_SCM_EXEC_FAILURE Handle = 0x80004011 + CO_E_INIT_ONLY_SINGLE_THREADED Handle = 0x80004012 + CO_E_CANT_REMOTE Handle = 0x80004013 + CO_E_BAD_SERVER_NAME Handle = 0x80004014 + CO_E_WRONG_SERVER_IDENTITY Handle = 0x80004015 + CO_E_OLE1DDE_DISABLED Handle = 0x80004016 + CO_E_RUNAS_SYNTAX Handle = 0x80004017 + CO_E_CREATEPROCESS_FAILURE Handle = 0x80004018 + CO_E_RUNAS_CREATEPROCESS_FAILURE Handle = 0x80004019 + CO_E_RUNAS_LOGON_FAILURE Handle = 0x8000401A + CO_E_LAUNCH_PERMSSION_DENIED Handle = 0x8000401B + CO_E_START_SERVICE_FAILURE Handle = 0x8000401C + CO_E_REMOTE_COMMUNICATION_FAILURE Handle = 0x8000401D + CO_E_SERVER_START_TIMEOUT Handle = 0x8000401E + CO_E_CLSREG_INCONSISTENT Handle = 0x8000401F + CO_E_IIDREG_INCONSISTENT Handle = 0x80004020 + CO_E_NOT_SUPPORTED Handle = 0x80004021 + CO_E_RELOAD_DLL Handle = 0x80004022 + CO_E_MSI_ERROR Handle = 0x80004023 + CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT Handle = 0x80004024 + CO_E_SERVER_PAUSED Handle = 0x80004025 + CO_E_SERVER_NOT_PAUSED Handle = 0x80004026 + CO_E_CLASS_DISABLED Handle = 0x80004027 + CO_E_CLRNOTAVAILABLE Handle = 0x80004028 + CO_E_ASYNC_WORK_REJECTED Handle = 0x80004029 + CO_E_SERVER_INIT_TIMEOUT Handle = 0x8000402A + CO_E_NO_SECCTX_IN_ACTIVATE Handle = 0x8000402B + CO_E_TRACKER_CONFIG Handle = 0x80004030 + CO_E_THREADPOOL_CONFIG Handle = 0x80004031 + CO_E_SXS_CONFIG Handle = 0x80004032 + CO_E_MALFORMED_SPN Handle = 0x80004033 + CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN Handle = 0x80004034 + CO_E_PREMATURE_STUB_RUNDOWN Handle = 0x80004035 + S_OK Handle = 0 + S_FALSE Handle = 1 + OLE_E_FIRST Handle = 0x80040000 + OLE_E_LAST Handle = 0x800400FF + OLE_S_FIRST Handle = 0x00040000 + OLE_S_LAST Handle = 0x000400FF + OLE_E_OLEVERB Handle = 0x80040000 + OLE_E_ADVF Handle = 0x80040001 + OLE_E_ENUM_NOMORE Handle = 0x80040002 + OLE_E_ADVISENOTSUPPORTED Handle = 0x80040003 + OLE_E_NOCONNECTION Handle = 0x80040004 + OLE_E_NOTRUNNING Handle = 0x80040005 + OLE_E_NOCACHE Handle = 0x80040006 + OLE_E_BLANK Handle = 0x80040007 + OLE_E_CLASSDIFF Handle = 0x80040008 + OLE_E_CANT_GETMONIKER Handle = 0x80040009 + OLE_E_CANT_BINDTOSOURCE Handle = 0x8004000A + OLE_E_STATIC Handle = 0x8004000B + OLE_E_PROMPTSAVECANCELLED Handle = 0x8004000C + OLE_E_INVALIDRECT Handle = 0x8004000D + OLE_E_WRONGCOMPOBJ Handle = 0x8004000E + OLE_E_INVALIDHWND Handle = 0x8004000F + OLE_E_NOT_INPLACEACTIVE Handle = 0x80040010 + OLE_E_CANTCONVERT Handle = 0x80040011 + OLE_E_NOSTORAGE Handle = 0x80040012 + DV_E_FORMATETC Handle = 0x80040064 + DV_E_DVTARGETDEVICE Handle = 0x80040065 + DV_E_STGMEDIUM Handle = 0x80040066 + DV_E_STATDATA Handle = 0x80040067 + DV_E_LINDEX Handle = 0x80040068 + DV_E_TYMED Handle = 0x80040069 + DV_E_CLIPFORMAT Handle = 0x8004006A + DV_E_DVASPECT Handle = 0x8004006B + DV_E_DVTARGETDEVICE_SIZE Handle = 0x8004006C + DV_E_NOIVIEWOBJECT Handle = 0x8004006D + DRAGDROP_E_FIRST syscall.Errno = 0x80040100 + DRAGDROP_E_LAST syscall.Errno = 0x8004010F + DRAGDROP_S_FIRST syscall.Errno = 0x00040100 + DRAGDROP_S_LAST syscall.Errno = 0x0004010F + DRAGDROP_E_NOTREGISTERED Handle = 0x80040100 + DRAGDROP_E_ALREADYREGISTERED Handle = 0x80040101 + DRAGDROP_E_INVALIDHWND Handle = 0x80040102 + DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED Handle = 0x80040103 + CLASSFACTORY_E_FIRST syscall.Errno = 0x80040110 + CLASSFACTORY_E_LAST syscall.Errno = 0x8004011F + CLASSFACTORY_S_FIRST syscall.Errno = 0x00040110 + CLASSFACTORY_S_LAST syscall.Errno = 0x0004011F + CLASS_E_NOAGGREGATION Handle = 0x80040110 + CLASS_E_CLASSNOTAVAILABLE Handle = 0x80040111 + CLASS_E_NOTLICENSED Handle = 0x80040112 + MARSHAL_E_FIRST syscall.Errno = 0x80040120 + MARSHAL_E_LAST syscall.Errno = 0x8004012F + MARSHAL_S_FIRST syscall.Errno = 0x00040120 + MARSHAL_S_LAST syscall.Errno = 0x0004012F + DATA_E_FIRST syscall.Errno = 0x80040130 + DATA_E_LAST syscall.Errno = 0x8004013F + DATA_S_FIRST syscall.Errno = 0x00040130 + DATA_S_LAST syscall.Errno = 0x0004013F + VIEW_E_FIRST syscall.Errno = 0x80040140 + VIEW_E_LAST syscall.Errno = 0x8004014F + VIEW_S_FIRST syscall.Errno = 0x00040140 + VIEW_S_LAST syscall.Errno = 0x0004014F + VIEW_E_DRAW Handle = 0x80040140 + REGDB_E_FIRST syscall.Errno = 0x80040150 + REGDB_E_LAST syscall.Errno = 0x8004015F + REGDB_S_FIRST syscall.Errno = 0x00040150 + REGDB_S_LAST syscall.Errno = 0x0004015F + REGDB_E_READREGDB Handle = 0x80040150 + REGDB_E_WRITEREGDB Handle = 0x80040151 + REGDB_E_KEYMISSING Handle = 0x80040152 + REGDB_E_INVALIDVALUE Handle = 0x80040153 + REGDB_E_CLASSNOTREG Handle = 0x80040154 + REGDB_E_IIDNOTREG Handle = 0x80040155 + REGDB_E_BADTHREADINGMODEL Handle = 0x80040156 + REGDB_E_PACKAGEPOLICYVIOLATION Handle = 0x80040157 + CAT_E_FIRST syscall.Errno = 0x80040160 + CAT_E_LAST syscall.Errno = 0x80040161 + CAT_E_CATIDNOEXIST Handle = 0x80040160 + CAT_E_NODESCRIPTION Handle = 0x80040161 + CS_E_FIRST syscall.Errno = 0x80040164 + CS_E_LAST syscall.Errno = 0x8004016F + CS_E_PACKAGE_NOTFOUND Handle = 0x80040164 + CS_E_NOT_DELETABLE Handle = 0x80040165 + CS_E_CLASS_NOTFOUND Handle = 0x80040166 + CS_E_INVALID_VERSION Handle = 0x80040167 + CS_E_NO_CLASSSTORE Handle = 0x80040168 + CS_E_OBJECT_NOTFOUND Handle = 0x80040169 + CS_E_OBJECT_ALREADY_EXISTS Handle = 0x8004016A + CS_E_INVALID_PATH Handle = 0x8004016B + CS_E_NETWORK_ERROR Handle = 0x8004016C + CS_E_ADMIN_LIMIT_EXCEEDED Handle = 0x8004016D + CS_E_SCHEMA_MISMATCH Handle = 0x8004016E + CS_E_INTERNAL_ERROR Handle = 0x8004016F + CACHE_E_FIRST syscall.Errno = 0x80040170 + CACHE_E_LAST syscall.Errno = 0x8004017F + CACHE_S_FIRST syscall.Errno = 0x00040170 + CACHE_S_LAST syscall.Errno = 0x0004017F + CACHE_E_NOCACHE_UPDATED Handle = 0x80040170 + OLEOBJ_E_FIRST syscall.Errno = 0x80040180 + OLEOBJ_E_LAST syscall.Errno = 0x8004018F + OLEOBJ_S_FIRST syscall.Errno = 0x00040180 + OLEOBJ_S_LAST syscall.Errno = 0x0004018F + OLEOBJ_E_NOVERBS Handle = 0x80040180 + OLEOBJ_E_INVALIDVERB Handle = 0x80040181 + CLIENTSITE_E_FIRST syscall.Errno = 0x80040190 + CLIENTSITE_E_LAST syscall.Errno = 0x8004019F + CLIENTSITE_S_FIRST syscall.Errno = 0x00040190 + CLIENTSITE_S_LAST syscall.Errno = 0x0004019F + INPLACE_E_NOTUNDOABLE Handle = 0x800401A0 + INPLACE_E_NOTOOLSPACE Handle = 0x800401A1 + INPLACE_E_FIRST syscall.Errno = 0x800401A0 + INPLACE_E_LAST syscall.Errno = 0x800401AF + INPLACE_S_FIRST syscall.Errno = 0x000401A0 + INPLACE_S_LAST syscall.Errno = 0x000401AF + ENUM_E_FIRST syscall.Errno = 0x800401B0 + ENUM_E_LAST syscall.Errno = 0x800401BF + ENUM_S_FIRST syscall.Errno = 0x000401B0 + ENUM_S_LAST syscall.Errno = 0x000401BF + CONVERT10_E_FIRST syscall.Errno = 0x800401C0 + CONVERT10_E_LAST syscall.Errno = 0x800401CF + CONVERT10_S_FIRST syscall.Errno = 0x000401C0 + CONVERT10_S_LAST syscall.Errno = 0x000401CF + CONVERT10_E_OLESTREAM_GET Handle = 0x800401C0 + CONVERT10_E_OLESTREAM_PUT Handle = 0x800401C1 + CONVERT10_E_OLESTREAM_FMT Handle = 0x800401C2 + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB Handle = 0x800401C3 + CONVERT10_E_STG_FMT Handle = 0x800401C4 + CONVERT10_E_STG_NO_STD_STREAM Handle = 0x800401C5 + CONVERT10_E_STG_DIB_TO_BITMAP Handle = 0x800401C6 + CLIPBRD_E_FIRST syscall.Errno = 0x800401D0 + CLIPBRD_E_LAST syscall.Errno = 0x800401DF + CLIPBRD_S_FIRST syscall.Errno = 0x000401D0 + CLIPBRD_S_LAST syscall.Errno = 0x000401DF + CLIPBRD_E_CANT_OPEN Handle = 0x800401D0 + CLIPBRD_E_CANT_EMPTY Handle = 0x800401D1 + CLIPBRD_E_CANT_SET Handle = 0x800401D2 + CLIPBRD_E_BAD_DATA Handle = 0x800401D3 + CLIPBRD_E_CANT_CLOSE Handle = 0x800401D4 + MK_E_FIRST syscall.Errno = 0x800401E0 + MK_E_LAST syscall.Errno = 0x800401EF + MK_S_FIRST syscall.Errno = 0x000401E0 + MK_S_LAST syscall.Errno = 0x000401EF + MK_E_CONNECTMANUALLY Handle = 0x800401E0 + MK_E_EXCEEDEDDEADLINE Handle = 0x800401E1 + MK_E_NEEDGENERIC Handle = 0x800401E2 + MK_E_UNAVAILABLE Handle = 0x800401E3 + MK_E_SYNTAX Handle = 0x800401E4 + MK_E_NOOBJECT Handle = 0x800401E5 + MK_E_INVALIDEXTENSION Handle = 0x800401E6 + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED Handle = 0x800401E7 + MK_E_NOTBINDABLE Handle = 0x800401E8 + MK_E_NOTBOUND Handle = 0x800401E9 + MK_E_CANTOPENFILE Handle = 0x800401EA + MK_E_MUSTBOTHERUSER Handle = 0x800401EB + MK_E_NOINVERSE Handle = 0x800401EC + MK_E_NOSTORAGE Handle = 0x800401ED + MK_E_NOPREFIX Handle = 0x800401EE + MK_E_ENUMERATION_FAILED Handle = 0x800401EF + CO_E_FIRST syscall.Errno = 0x800401F0 + CO_E_LAST syscall.Errno = 0x800401FF + CO_S_FIRST syscall.Errno = 0x000401F0 + CO_S_LAST syscall.Errno = 0x000401FF + CO_E_NOTINITIALIZED Handle = 0x800401F0 + CO_E_ALREADYINITIALIZED Handle = 0x800401F1 + CO_E_CANTDETERMINECLASS Handle = 0x800401F2 + CO_E_CLASSSTRING Handle = 0x800401F3 + CO_E_IIDSTRING Handle = 0x800401F4 + CO_E_APPNOTFOUND Handle = 0x800401F5 + CO_E_APPSINGLEUSE Handle = 0x800401F6 + CO_E_ERRORINAPP Handle = 0x800401F7 + CO_E_DLLNOTFOUND Handle = 0x800401F8 + CO_E_ERRORINDLL Handle = 0x800401F9 + CO_E_WRONGOSFORAPP Handle = 0x800401FA + CO_E_OBJNOTREG Handle = 0x800401FB + CO_E_OBJISREG Handle = 0x800401FC + CO_E_OBJNOTCONNECTED Handle = 0x800401FD + CO_E_APPDIDNTREG Handle = 0x800401FE + CO_E_RELEASED Handle = 0x800401FF + EVENT_E_FIRST syscall.Errno = 0x80040200 + EVENT_E_LAST syscall.Errno = 0x8004021F + EVENT_S_FIRST syscall.Errno = 0x00040200 + EVENT_S_LAST syscall.Errno = 0x0004021F + EVENT_S_SOME_SUBSCRIBERS_FAILED Handle = 0x00040200 + EVENT_E_ALL_SUBSCRIBERS_FAILED Handle = 0x80040201 + EVENT_S_NOSUBSCRIBERS Handle = 0x00040202 + EVENT_E_QUERYSYNTAX Handle = 0x80040203 + EVENT_E_QUERYFIELD Handle = 0x80040204 + EVENT_E_INTERNALEXCEPTION Handle = 0x80040205 + EVENT_E_INTERNALERROR Handle = 0x80040206 + EVENT_E_INVALID_PER_USER_SID Handle = 0x80040207 + EVENT_E_USER_EXCEPTION Handle = 0x80040208 + EVENT_E_TOO_MANY_METHODS Handle = 0x80040209 + EVENT_E_MISSING_EVENTCLASS Handle = 0x8004020A + EVENT_E_NOT_ALL_REMOVED Handle = 0x8004020B + EVENT_E_COMPLUS_NOT_INSTALLED Handle = 0x8004020C + EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT Handle = 0x8004020D + EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT Handle = 0x8004020E + EVENT_E_INVALID_EVENT_CLASS_PARTITION Handle = 0x8004020F + EVENT_E_PER_USER_SID_NOT_LOGGED_ON Handle = 0x80040210 + TPC_E_INVALID_PROPERTY Handle = 0x80040241 + TPC_E_NO_DEFAULT_TABLET Handle = 0x80040212 + TPC_E_UNKNOWN_PROPERTY Handle = 0x8004021B + TPC_E_INVALID_INPUT_RECT Handle = 0x80040219 + TPC_E_INVALID_STROKE Handle = 0x80040222 + TPC_E_INITIALIZE_FAIL Handle = 0x80040223 + TPC_E_NOT_RELEVANT Handle = 0x80040232 + TPC_E_INVALID_PACKET_DESCRIPTION Handle = 0x80040233 + TPC_E_RECOGNIZER_NOT_REGISTERED Handle = 0x80040235 + TPC_E_INVALID_RIGHTS Handle = 0x80040236 + TPC_E_OUT_OF_ORDER_CALL Handle = 0x80040237 + TPC_E_QUEUE_FULL Handle = 0x80040238 + TPC_E_INVALID_CONFIGURATION Handle = 0x80040239 + TPC_E_INVALID_DATA_FROM_RECOGNIZER Handle = 0x8004023A + TPC_S_TRUNCATED Handle = 0x00040252 + TPC_S_INTERRUPTED Handle = 0x00040253 + TPC_S_NO_DATA_TO_PROCESS Handle = 0x00040254 + XACT_E_FIRST syscall.Errno = 0x8004D000 + XACT_E_LAST syscall.Errno = 0x8004D02B + XACT_S_FIRST syscall.Errno = 0x0004D000 + XACT_S_LAST syscall.Errno = 0x0004D010 + XACT_E_ALREADYOTHERSINGLEPHASE Handle = 0x8004D000 + XACT_E_CANTRETAIN Handle = 0x8004D001 + XACT_E_COMMITFAILED Handle = 0x8004D002 + XACT_E_COMMITPREVENTED Handle = 0x8004D003 + XACT_E_HEURISTICABORT Handle = 0x8004D004 + XACT_E_HEURISTICCOMMIT Handle = 0x8004D005 + XACT_E_HEURISTICDAMAGE Handle = 0x8004D006 + XACT_E_HEURISTICDANGER Handle = 0x8004D007 + XACT_E_ISOLATIONLEVEL Handle = 0x8004D008 + XACT_E_NOASYNC Handle = 0x8004D009 + XACT_E_NOENLIST Handle = 0x8004D00A + XACT_E_NOISORETAIN Handle = 0x8004D00B + XACT_E_NORESOURCE Handle = 0x8004D00C + XACT_E_NOTCURRENT Handle = 0x8004D00D + XACT_E_NOTRANSACTION Handle = 0x8004D00E + XACT_E_NOTSUPPORTED Handle = 0x8004D00F + XACT_E_UNKNOWNRMGRID Handle = 0x8004D010 + XACT_E_WRONGSTATE Handle = 0x8004D011 + XACT_E_WRONGUOW Handle = 0x8004D012 + XACT_E_XTIONEXISTS Handle = 0x8004D013 + XACT_E_NOIMPORTOBJECT Handle = 0x8004D014 + XACT_E_INVALIDCOOKIE Handle = 0x8004D015 + XACT_E_INDOUBT Handle = 0x8004D016 + XACT_E_NOTIMEOUT Handle = 0x8004D017 + XACT_E_ALREADYINPROGRESS Handle = 0x8004D018 + XACT_E_ABORTED Handle = 0x8004D019 + XACT_E_LOGFULL Handle = 0x8004D01A + XACT_E_TMNOTAVAILABLE Handle = 0x8004D01B + XACT_E_CONNECTION_DOWN Handle = 0x8004D01C + XACT_E_CONNECTION_DENIED Handle = 0x8004D01D + XACT_E_REENLISTTIMEOUT Handle = 0x8004D01E + XACT_E_TIP_CONNECT_FAILED Handle = 0x8004D01F + XACT_E_TIP_PROTOCOL_ERROR Handle = 0x8004D020 + XACT_E_TIP_PULL_FAILED Handle = 0x8004D021 + XACT_E_DEST_TMNOTAVAILABLE Handle = 0x8004D022 + XACT_E_TIP_DISABLED Handle = 0x8004D023 + XACT_E_NETWORK_TX_DISABLED Handle = 0x8004D024 + XACT_E_PARTNER_NETWORK_TX_DISABLED Handle = 0x8004D025 + XACT_E_XA_TX_DISABLED Handle = 0x8004D026 + XACT_E_UNABLE_TO_READ_DTC_CONFIG Handle = 0x8004D027 + XACT_E_UNABLE_TO_LOAD_DTC_PROXY Handle = 0x8004D028 + XACT_E_ABORTING Handle = 0x8004D029 + XACT_E_PUSH_COMM_FAILURE Handle = 0x8004D02A + XACT_E_PULL_COMM_FAILURE Handle = 0x8004D02B + XACT_E_LU_TX_DISABLED Handle = 0x8004D02C + XACT_E_CLERKNOTFOUND Handle = 0x8004D080 + XACT_E_CLERKEXISTS Handle = 0x8004D081 + XACT_E_RECOVERYINPROGRESS Handle = 0x8004D082 + XACT_E_TRANSACTIONCLOSED Handle = 0x8004D083 + XACT_E_INVALIDLSN Handle = 0x8004D084 + XACT_E_REPLAYREQUEST Handle = 0x8004D085 + XACT_S_ASYNC Handle = 0x0004D000 + XACT_S_DEFECT Handle = 0x0004D001 + XACT_S_READONLY Handle = 0x0004D002 + XACT_S_SOMENORETAIN Handle = 0x0004D003 + XACT_S_OKINFORM Handle = 0x0004D004 + XACT_S_MADECHANGESCONTENT Handle = 0x0004D005 + XACT_S_MADECHANGESINFORM Handle = 0x0004D006 + XACT_S_ALLNORETAIN Handle = 0x0004D007 + XACT_S_ABORTING Handle = 0x0004D008 + XACT_S_SINGLEPHASE Handle = 0x0004D009 + XACT_S_LOCALLY_OK Handle = 0x0004D00A + XACT_S_LASTRESOURCEMANAGER Handle = 0x0004D010 + CONTEXT_E_FIRST syscall.Errno = 0x8004E000 + CONTEXT_E_LAST syscall.Errno = 0x8004E02F + CONTEXT_S_FIRST syscall.Errno = 0x0004E000 + CONTEXT_S_LAST syscall.Errno = 0x0004E02F + CONTEXT_E_ABORTED Handle = 0x8004E002 + CONTEXT_E_ABORTING Handle = 0x8004E003 + CONTEXT_E_NOCONTEXT Handle = 0x8004E004 + CONTEXT_E_WOULD_DEADLOCK Handle = 0x8004E005 + CONTEXT_E_SYNCH_TIMEOUT Handle = 0x8004E006 + CONTEXT_E_OLDREF Handle = 0x8004E007 + CONTEXT_E_ROLENOTFOUND Handle = 0x8004E00C + CONTEXT_E_TMNOTAVAILABLE Handle = 0x8004E00F + CO_E_ACTIVATIONFAILED Handle = 0x8004E021 + CO_E_ACTIVATIONFAILED_EVENTLOGGED Handle = 0x8004E022 + CO_E_ACTIVATIONFAILED_CATALOGERROR Handle = 0x8004E023 + CO_E_ACTIVATIONFAILED_TIMEOUT Handle = 0x8004E024 + CO_E_INITIALIZATIONFAILED Handle = 0x8004E025 + CONTEXT_E_NOJIT Handle = 0x8004E026 + CONTEXT_E_NOTRANSACTION Handle = 0x8004E027 + CO_E_THREADINGMODEL_CHANGED Handle = 0x8004E028 + CO_E_NOIISINTRINSICS Handle = 0x8004E029 + CO_E_NOCOOKIES Handle = 0x8004E02A + CO_E_DBERROR Handle = 0x8004E02B + CO_E_NOTPOOLED Handle = 0x8004E02C + CO_E_NOTCONSTRUCTED Handle = 0x8004E02D + CO_E_NOSYNCHRONIZATION Handle = 0x8004E02E + CO_E_ISOLEVELMISMATCH Handle = 0x8004E02F + CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED Handle = 0x8004E030 + CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED Handle = 0x8004E031 + OLE_S_USEREG Handle = 0x00040000 + OLE_S_STATIC Handle = 0x00040001 + OLE_S_MAC_CLIPFORMAT Handle = 0x00040002 + DRAGDROP_S_DROP Handle = 0x00040100 + DRAGDROP_S_CANCEL Handle = 0x00040101 + DRAGDROP_S_USEDEFAULTCURSORS Handle = 0x00040102 + DATA_S_SAMEFORMATETC Handle = 0x00040130 + VIEW_S_ALREADY_FROZEN Handle = 0x00040140 + CACHE_S_FORMATETC_NOTSUPPORTED Handle = 0x00040170 + CACHE_S_SAMECACHE Handle = 0x00040171 + CACHE_S_SOMECACHES_NOTUPDATED Handle = 0x00040172 + OLEOBJ_S_INVALIDVERB Handle = 0x00040180 + OLEOBJ_S_CANNOT_DOVERB_NOW Handle = 0x00040181 + OLEOBJ_S_INVALIDHWND Handle = 0x00040182 + INPLACE_S_TRUNCATED Handle = 0x000401A0 + CONVERT10_S_NO_PRESENTATION Handle = 0x000401C0 + MK_S_REDUCED_TO_SELF Handle = 0x000401E2 + MK_S_ME Handle = 0x000401E4 + MK_S_HIM Handle = 0x000401E5 + MK_S_US Handle = 0x000401E6 + MK_S_MONIKERALREADYREGISTERED Handle = 0x000401E7 + SCHED_S_TASK_READY Handle = 0x00041300 + SCHED_S_TASK_RUNNING Handle = 0x00041301 + SCHED_S_TASK_DISABLED Handle = 0x00041302 + SCHED_S_TASK_HAS_NOT_RUN Handle = 0x00041303 + SCHED_S_TASK_NO_MORE_RUNS Handle = 0x00041304 + SCHED_S_TASK_NOT_SCHEDULED Handle = 0x00041305 + SCHED_S_TASK_TERMINATED Handle = 0x00041306 + SCHED_S_TASK_NO_VALID_TRIGGERS Handle = 0x00041307 + SCHED_S_EVENT_TRIGGER Handle = 0x00041308 + SCHED_E_TRIGGER_NOT_FOUND Handle = 0x80041309 + SCHED_E_TASK_NOT_READY Handle = 0x8004130A + SCHED_E_TASK_NOT_RUNNING Handle = 0x8004130B + SCHED_E_SERVICE_NOT_INSTALLED Handle = 0x8004130C + SCHED_E_CANNOT_OPEN_TASK Handle = 0x8004130D + SCHED_E_INVALID_TASK Handle = 0x8004130E + SCHED_E_ACCOUNT_INFORMATION_NOT_SET Handle = 0x8004130F + SCHED_E_ACCOUNT_NAME_NOT_FOUND Handle = 0x80041310 + SCHED_E_ACCOUNT_DBASE_CORRUPT Handle = 0x80041311 + SCHED_E_NO_SECURITY_SERVICES Handle = 0x80041312 + SCHED_E_UNKNOWN_OBJECT_VERSION Handle = 0x80041313 + SCHED_E_UNSUPPORTED_ACCOUNT_OPTION Handle = 0x80041314 + SCHED_E_SERVICE_NOT_RUNNING Handle = 0x80041315 + SCHED_E_UNEXPECTEDNODE Handle = 0x80041316 + SCHED_E_NAMESPACE Handle = 0x80041317 + SCHED_E_INVALIDVALUE Handle = 0x80041318 + SCHED_E_MISSINGNODE Handle = 0x80041319 + SCHED_E_MALFORMEDXML Handle = 0x8004131A + SCHED_S_SOME_TRIGGERS_FAILED Handle = 0x0004131B + SCHED_S_BATCH_LOGON_PROBLEM Handle = 0x0004131C + SCHED_E_TOO_MANY_NODES Handle = 0x8004131D + SCHED_E_PAST_END_BOUNDARY Handle = 0x8004131E + SCHED_E_ALREADY_RUNNING Handle = 0x8004131F + SCHED_E_USER_NOT_LOGGED_ON Handle = 0x80041320 + SCHED_E_INVALID_TASK_HASH Handle = 0x80041321 + SCHED_E_SERVICE_NOT_AVAILABLE Handle = 0x80041322 + SCHED_E_SERVICE_TOO_BUSY Handle = 0x80041323 + SCHED_E_TASK_ATTEMPTED Handle = 0x80041324 + SCHED_S_TASK_QUEUED Handle = 0x00041325 + SCHED_E_TASK_DISABLED Handle = 0x80041326 + SCHED_E_TASK_NOT_V1_COMPAT Handle = 0x80041327 + SCHED_E_START_ON_DEMAND Handle = 0x80041328 + SCHED_E_TASK_NOT_UBPM_COMPAT Handle = 0x80041329 + SCHED_E_DEPRECATED_FEATURE_USED Handle = 0x80041330 + CO_E_CLASS_CREATE_FAILED Handle = 0x80080001 + CO_E_SCM_ERROR Handle = 0x80080002 + CO_E_SCM_RPC_FAILURE Handle = 0x80080003 + CO_E_BAD_PATH Handle = 0x80080004 + CO_E_SERVER_EXEC_FAILURE Handle = 0x80080005 + CO_E_OBJSRV_RPC_FAILURE Handle = 0x80080006 + MK_E_NO_NORMALIZED Handle = 0x80080007 + CO_E_SERVER_STOPPING Handle = 0x80080008 + MEM_E_INVALID_ROOT Handle = 0x80080009 + MEM_E_INVALID_LINK Handle = 0x80080010 + MEM_E_INVALID_SIZE Handle = 0x80080011 + CO_S_NOTALLINTERFACES Handle = 0x00080012 + CO_S_MACHINENAMENOTFOUND Handle = 0x00080013 + CO_E_MISSING_DISPLAYNAME Handle = 0x80080015 + CO_E_RUNAS_VALUE_MUST_BE_AAA Handle = 0x80080016 + CO_E_ELEVATION_DISABLED Handle = 0x80080017 + APPX_E_PACKAGING_INTERNAL Handle = 0x80080200 + APPX_E_INTERLEAVING_NOT_ALLOWED Handle = 0x80080201 + APPX_E_RELATIONSHIPS_NOT_ALLOWED Handle = 0x80080202 + APPX_E_MISSING_REQUIRED_FILE Handle = 0x80080203 + APPX_E_INVALID_MANIFEST Handle = 0x80080204 + APPX_E_INVALID_BLOCKMAP Handle = 0x80080205 + APPX_E_CORRUPT_CONTENT Handle = 0x80080206 + APPX_E_BLOCK_HASH_INVALID Handle = 0x80080207 + APPX_E_REQUESTED_RANGE_TOO_LARGE Handle = 0x80080208 + APPX_E_INVALID_SIP_CLIENT_DATA Handle = 0x80080209 + APPX_E_INVALID_KEY_INFO Handle = 0x8008020A + APPX_E_INVALID_CONTENTGROUPMAP Handle = 0x8008020B + APPX_E_INVALID_APPINSTALLER Handle = 0x8008020C + APPX_E_DELTA_BASELINE_VERSION_MISMATCH Handle = 0x8008020D + APPX_E_DELTA_PACKAGE_MISSING_FILE Handle = 0x8008020E + APPX_E_INVALID_DELTA_PACKAGE Handle = 0x8008020F + APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED Handle = 0x80080210 + APPX_E_INVALID_PACKAGING_LAYOUT Handle = 0x80080211 + APPX_E_INVALID_PACKAGESIGNCONFIG Handle = 0x80080212 + APPX_E_RESOURCESPRI_NOT_ALLOWED Handle = 0x80080213 + APPX_E_FILE_COMPRESSION_MISMATCH Handle = 0x80080214 + APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION Handle = 0x80080215 + APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST Handle = 0x80080216 + BT_E_SPURIOUS_ACTIVATION Handle = 0x80080300 + DISP_E_UNKNOWNINTERFACE Handle = 0x80020001 + DISP_E_MEMBERNOTFOUND Handle = 0x80020003 + DISP_E_PARAMNOTFOUND Handle = 0x80020004 + DISP_E_TYPEMISMATCH Handle = 0x80020005 + DISP_E_UNKNOWNNAME Handle = 0x80020006 + DISP_E_NONAMEDARGS Handle = 0x80020007 + DISP_E_BADVARTYPE Handle = 0x80020008 + DISP_E_EXCEPTION Handle = 0x80020009 + DISP_E_OVERFLOW Handle = 0x8002000A + DISP_E_BADINDEX Handle = 0x8002000B + DISP_E_UNKNOWNLCID Handle = 0x8002000C + DISP_E_ARRAYISLOCKED Handle = 0x8002000D + DISP_E_BADPARAMCOUNT Handle = 0x8002000E + DISP_E_PARAMNOTOPTIONAL Handle = 0x8002000F + DISP_E_BADCALLEE Handle = 0x80020010 + DISP_E_NOTACOLLECTION Handle = 0x80020011 + DISP_E_DIVBYZERO Handle = 0x80020012 + DISP_E_BUFFERTOOSMALL Handle = 0x80020013 + TYPE_E_BUFFERTOOSMALL Handle = 0x80028016 + TYPE_E_FIELDNOTFOUND Handle = 0x80028017 + TYPE_E_INVDATAREAD Handle = 0x80028018 + TYPE_E_UNSUPFORMAT Handle = 0x80028019 + TYPE_E_REGISTRYACCESS Handle = 0x8002801C + TYPE_E_LIBNOTREGISTERED Handle = 0x8002801D + TYPE_E_UNDEFINEDTYPE Handle = 0x80028027 + TYPE_E_QUALIFIEDNAMEDISALLOWED Handle = 0x80028028 + TYPE_E_INVALIDSTATE Handle = 0x80028029 + TYPE_E_WRONGTYPEKIND Handle = 0x8002802A + TYPE_E_ELEMENTNOTFOUND Handle = 0x8002802B + TYPE_E_AMBIGUOUSNAME Handle = 0x8002802C + TYPE_E_NAMECONFLICT Handle = 0x8002802D + TYPE_E_UNKNOWNLCID Handle = 0x8002802E + TYPE_E_DLLFUNCTIONNOTFOUND Handle = 0x8002802F + TYPE_E_BADMODULEKIND Handle = 0x800288BD + TYPE_E_SIZETOOBIG Handle = 0x800288C5 + TYPE_E_DUPLICATEID Handle = 0x800288C6 + TYPE_E_INVALIDID Handle = 0x800288CF + TYPE_E_TYPEMISMATCH Handle = 0x80028CA0 + TYPE_E_OUTOFBOUNDS Handle = 0x80028CA1 + TYPE_E_IOERROR Handle = 0x80028CA2 + TYPE_E_CANTCREATETMPFILE Handle = 0x80028CA3 + TYPE_E_CANTLOADLIBRARY Handle = 0x80029C4A + TYPE_E_INCONSISTENTPROPFUNCS Handle = 0x80029C83 + TYPE_E_CIRCULARTYPE Handle = 0x80029C84 + STG_E_INVALIDFUNCTION Handle = 0x80030001 + STG_E_FILENOTFOUND Handle = 0x80030002 + STG_E_PATHNOTFOUND Handle = 0x80030003 + STG_E_TOOMANYOPENFILES Handle = 0x80030004 + STG_E_ACCESSDENIED Handle = 0x80030005 + STG_E_INVALIDHANDLE Handle = 0x80030006 + STG_E_INSUFFICIENTMEMORY Handle = 0x80030008 + STG_E_INVALIDPOINTER Handle = 0x80030009 + STG_E_NOMOREFILES Handle = 0x80030012 + STG_E_DISKISWRITEPROTECTED Handle = 0x80030013 + STG_E_SEEKERROR Handle = 0x80030019 + STG_E_WRITEFAULT Handle = 0x8003001D + STG_E_READFAULT Handle = 0x8003001E + STG_E_SHAREVIOLATION Handle = 0x80030020 + STG_E_LOCKVIOLATION Handle = 0x80030021 + STG_E_FILEALREADYEXISTS Handle = 0x80030050 + STG_E_INVALIDPARAMETER Handle = 0x80030057 + STG_E_MEDIUMFULL Handle = 0x80030070 + STG_E_PROPSETMISMATCHED Handle = 0x800300F0 + STG_E_ABNORMALAPIEXIT Handle = 0x800300FA + STG_E_INVALIDHEADER Handle = 0x800300FB + STG_E_INVALIDNAME Handle = 0x800300FC + STG_E_UNKNOWN Handle = 0x800300FD + STG_E_UNIMPLEMENTEDFUNCTION Handle = 0x800300FE + STG_E_INVALIDFLAG Handle = 0x800300FF + STG_E_INUSE Handle = 0x80030100 + STG_E_NOTCURRENT Handle = 0x80030101 + STG_E_REVERTED Handle = 0x80030102 + STG_E_CANTSAVE Handle = 0x80030103 + STG_E_OLDFORMAT Handle = 0x80030104 + STG_E_OLDDLL Handle = 0x80030105 + STG_E_SHAREREQUIRED Handle = 0x80030106 + STG_E_NOTFILEBASEDSTORAGE Handle = 0x80030107 + STG_E_EXTANTMARSHALLINGS Handle = 0x80030108 + STG_E_DOCFILECORRUPT Handle = 0x80030109 + STG_E_BADBASEADDRESS Handle = 0x80030110 + STG_E_DOCFILETOOLARGE Handle = 0x80030111 + STG_E_NOTSIMPLEFORMAT Handle = 0x80030112 + STG_E_INCOMPLETE Handle = 0x80030201 + STG_E_TERMINATED Handle = 0x80030202 + STG_S_CONVERTED Handle = 0x00030200 + STG_S_BLOCK Handle = 0x00030201 + STG_S_RETRYNOW Handle = 0x00030202 + STG_S_MONITORING Handle = 0x00030203 + STG_S_MULTIPLEOPENS Handle = 0x00030204 + STG_S_CONSOLIDATIONFAILED Handle = 0x00030205 + STG_S_CANNOTCONSOLIDATE Handle = 0x00030206 + STG_S_POWER_CYCLE_REQUIRED Handle = 0x00030207 + STG_E_FIRMWARE_SLOT_INVALID Handle = 0x80030208 + STG_E_FIRMWARE_IMAGE_INVALID Handle = 0x80030209 + STG_E_DEVICE_UNRESPONSIVE Handle = 0x8003020A + STG_E_STATUS_COPY_PROTECTION_FAILURE Handle = 0x80030305 + STG_E_CSS_AUTHENTICATION_FAILURE Handle = 0x80030306 + STG_E_CSS_KEY_NOT_PRESENT Handle = 0x80030307 + STG_E_CSS_KEY_NOT_ESTABLISHED Handle = 0x80030308 + STG_E_CSS_SCRAMBLED_SECTOR Handle = 0x80030309 + STG_E_CSS_REGION_MISMATCH Handle = 0x8003030A + STG_E_RESETS_EXHAUSTED Handle = 0x8003030B + RPC_E_CALL_REJECTED Handle = 0x80010001 + RPC_E_CALL_CANCELED Handle = 0x80010002 + RPC_E_CANTPOST_INSENDCALL Handle = 0x80010003 + RPC_E_CANTCALLOUT_INASYNCCALL Handle = 0x80010004 + RPC_E_CANTCALLOUT_INEXTERNALCALL Handle = 0x80010005 + RPC_E_CONNECTION_TERMINATED Handle = 0x80010006 + RPC_E_SERVER_DIED Handle = 0x80010007 + RPC_E_CLIENT_DIED Handle = 0x80010008 + RPC_E_INVALID_DATAPACKET Handle = 0x80010009 + RPC_E_CANTTRANSMIT_CALL Handle = 0x8001000A + RPC_E_CLIENT_CANTMARSHAL_DATA Handle = 0x8001000B + RPC_E_CLIENT_CANTUNMARSHAL_DATA Handle = 0x8001000C + RPC_E_SERVER_CANTMARSHAL_DATA Handle = 0x8001000D + RPC_E_SERVER_CANTUNMARSHAL_DATA Handle = 0x8001000E + RPC_E_INVALID_DATA Handle = 0x8001000F + RPC_E_INVALID_PARAMETER Handle = 0x80010010 + RPC_E_CANTCALLOUT_AGAIN Handle = 0x80010011 + RPC_E_SERVER_DIED_DNE Handle = 0x80010012 + RPC_E_SYS_CALL_FAILED Handle = 0x80010100 + RPC_E_OUT_OF_RESOURCES Handle = 0x80010101 + RPC_E_ATTEMPTED_MULTITHREAD Handle = 0x80010102 + RPC_E_NOT_REGISTERED Handle = 0x80010103 + RPC_E_FAULT Handle = 0x80010104 + RPC_E_SERVERFAULT Handle = 0x80010105 + RPC_E_CHANGED_MODE Handle = 0x80010106 + RPC_E_INVALIDMETHOD Handle = 0x80010107 + RPC_E_DISCONNECTED Handle = 0x80010108 + RPC_E_RETRY Handle = 0x80010109 + RPC_E_SERVERCALL_RETRYLATER Handle = 0x8001010A + RPC_E_SERVERCALL_REJECTED Handle = 0x8001010B + RPC_E_INVALID_CALLDATA Handle = 0x8001010C + RPC_E_CANTCALLOUT_ININPUTSYNCCALL Handle = 0x8001010D + RPC_E_WRONG_THREAD Handle = 0x8001010E + RPC_E_THREAD_NOT_INIT Handle = 0x8001010F + RPC_E_VERSION_MISMATCH Handle = 0x80010110 + RPC_E_INVALID_HEADER Handle = 0x80010111 + RPC_E_INVALID_EXTENSION Handle = 0x80010112 + RPC_E_INVALID_IPID Handle = 0x80010113 + RPC_E_INVALID_OBJECT Handle = 0x80010114 + RPC_S_CALLPENDING Handle = 0x80010115 + RPC_S_WAITONTIMER Handle = 0x80010116 + RPC_E_CALL_COMPLETE Handle = 0x80010117 + RPC_E_UNSECURE_CALL Handle = 0x80010118 + RPC_E_TOO_LATE Handle = 0x80010119 + RPC_E_NO_GOOD_SECURITY_PACKAGES Handle = 0x8001011A + RPC_E_ACCESS_DENIED Handle = 0x8001011B + RPC_E_REMOTE_DISABLED Handle = 0x8001011C + RPC_E_INVALID_OBJREF Handle = 0x8001011D + RPC_E_NO_CONTEXT Handle = 0x8001011E + RPC_E_TIMEOUT Handle = 0x8001011F + RPC_E_NO_SYNC Handle = 0x80010120 + RPC_E_FULLSIC_REQUIRED Handle = 0x80010121 + RPC_E_INVALID_STD_NAME Handle = 0x80010122 + CO_E_FAILEDTOIMPERSONATE Handle = 0x80010123 + CO_E_FAILEDTOGETSECCTX Handle = 0x80010124 + CO_E_FAILEDTOOPENTHREADTOKEN Handle = 0x80010125 + CO_E_FAILEDTOGETTOKENINFO Handle = 0x80010126 + CO_E_TRUSTEEDOESNTMATCHCLIENT Handle = 0x80010127 + CO_E_FAILEDTOQUERYCLIENTBLANKET Handle = 0x80010128 + CO_E_FAILEDTOSETDACL Handle = 0x80010129 + CO_E_ACCESSCHECKFAILED Handle = 0x8001012A + CO_E_NETACCESSAPIFAILED Handle = 0x8001012B + CO_E_WRONGTRUSTEENAMESYNTAX Handle = 0x8001012C + CO_E_INVALIDSID Handle = 0x8001012D + CO_E_CONVERSIONFAILED Handle = 0x8001012E + CO_E_NOMATCHINGSIDFOUND Handle = 0x8001012F + CO_E_LOOKUPACCSIDFAILED Handle = 0x80010130 + CO_E_NOMATCHINGNAMEFOUND Handle = 0x80010131 + CO_E_LOOKUPACCNAMEFAILED Handle = 0x80010132 + CO_E_SETSERLHNDLFAILED Handle = 0x80010133 + CO_E_FAILEDTOGETWINDIR Handle = 0x80010134 + CO_E_PATHTOOLONG Handle = 0x80010135 + CO_E_FAILEDTOGENUUID Handle = 0x80010136 + CO_E_FAILEDTOCREATEFILE Handle = 0x80010137 + CO_E_FAILEDTOCLOSEHANDLE Handle = 0x80010138 + CO_E_EXCEEDSYSACLLIMIT Handle = 0x80010139 + CO_E_ACESINWRONGORDER Handle = 0x8001013A + CO_E_INCOMPATIBLESTREAMVERSION Handle = 0x8001013B + CO_E_FAILEDTOOPENPROCESSTOKEN Handle = 0x8001013C + CO_E_DECODEFAILED Handle = 0x8001013D + CO_E_ACNOTINITIALIZED Handle = 0x8001013F + CO_E_CANCEL_DISABLED Handle = 0x80010140 + RPC_E_UNEXPECTED Handle = 0x8001FFFF + ERROR_AUDITING_DISABLED Handle = 0xC0090001 + ERROR_ALL_SIDS_FILTERED Handle = 0xC0090002 + ERROR_BIZRULES_NOT_ENABLED Handle = 0xC0090003 + NTE_BAD_UID Handle = 0x80090001 + NTE_BAD_HASH Handle = 0x80090002 + NTE_BAD_KEY Handle = 0x80090003 + NTE_BAD_LEN Handle = 0x80090004 + NTE_BAD_DATA Handle = 0x80090005 + NTE_BAD_SIGNATURE Handle = 0x80090006 + NTE_BAD_VER Handle = 0x80090007 + NTE_BAD_ALGID Handle = 0x80090008 + NTE_BAD_FLAGS Handle = 0x80090009 + NTE_BAD_TYPE Handle = 0x8009000A + NTE_BAD_KEY_STATE Handle = 0x8009000B + NTE_BAD_HASH_STATE Handle = 0x8009000C + NTE_NO_KEY Handle = 0x8009000D + NTE_NO_MEMORY Handle = 0x8009000E + NTE_EXISTS Handle = 0x8009000F + NTE_PERM Handle = 0x80090010 + NTE_NOT_FOUND Handle = 0x80090011 + NTE_DOUBLE_ENCRYPT Handle = 0x80090012 + NTE_BAD_PROVIDER Handle = 0x80090013 + NTE_BAD_PROV_TYPE Handle = 0x80090014 + NTE_BAD_PUBLIC_KEY Handle = 0x80090015 + NTE_BAD_KEYSET Handle = 0x80090016 + NTE_PROV_TYPE_NOT_DEF Handle = 0x80090017 + NTE_PROV_TYPE_ENTRY_BAD Handle = 0x80090018 + NTE_KEYSET_NOT_DEF Handle = 0x80090019 + NTE_KEYSET_ENTRY_BAD Handle = 0x8009001A + NTE_PROV_TYPE_NO_MATCH Handle = 0x8009001B + NTE_SIGNATURE_FILE_BAD Handle = 0x8009001C + NTE_PROVIDER_DLL_FAIL Handle = 0x8009001D + NTE_PROV_DLL_NOT_FOUND Handle = 0x8009001E + NTE_BAD_KEYSET_PARAM Handle = 0x8009001F + NTE_FAIL Handle = 0x80090020 + NTE_SYS_ERR Handle = 0x80090021 + NTE_SILENT_CONTEXT Handle = 0x80090022 + NTE_TOKEN_KEYSET_STORAGE_FULL Handle = 0x80090023 + NTE_TEMPORARY_PROFILE Handle = 0x80090024 + NTE_FIXEDPARAMETER Handle = 0x80090025 + NTE_INVALID_HANDLE Handle = 0x80090026 + NTE_INVALID_PARAMETER Handle = 0x80090027 + NTE_BUFFER_TOO_SMALL Handle = 0x80090028 + NTE_NOT_SUPPORTED Handle = 0x80090029 + NTE_NO_MORE_ITEMS Handle = 0x8009002A + NTE_BUFFERS_OVERLAP Handle = 0x8009002B + NTE_DECRYPTION_FAILURE Handle = 0x8009002C + NTE_INTERNAL_ERROR Handle = 0x8009002D + NTE_UI_REQUIRED Handle = 0x8009002E + NTE_HMAC_NOT_SUPPORTED Handle = 0x8009002F + NTE_DEVICE_NOT_READY Handle = 0x80090030 + NTE_AUTHENTICATION_IGNORED Handle = 0x80090031 + NTE_VALIDATION_FAILED Handle = 0x80090032 + NTE_INCORRECT_PASSWORD Handle = 0x80090033 + NTE_ENCRYPTION_FAILURE Handle = 0x80090034 + NTE_DEVICE_NOT_FOUND Handle = 0x80090035 + NTE_USER_CANCELLED Handle = 0x80090036 + NTE_PASSWORD_CHANGE_REQUIRED Handle = 0x80090037 + NTE_NOT_ACTIVE_CONSOLE Handle = 0x80090038 + SEC_E_INSUFFICIENT_MEMORY Handle = 0x80090300 + SEC_E_INVALID_HANDLE Handle = 0x80090301 + SEC_E_UNSUPPORTED_FUNCTION Handle = 0x80090302 + SEC_E_TARGET_UNKNOWN Handle = 0x80090303 + SEC_E_INTERNAL_ERROR Handle = 0x80090304 + SEC_E_SECPKG_NOT_FOUND Handle = 0x80090305 + SEC_E_NOT_OWNER Handle = 0x80090306 + SEC_E_CANNOT_INSTALL Handle = 0x80090307 + SEC_E_INVALID_TOKEN Handle = 0x80090308 + SEC_E_CANNOT_PACK Handle = 0x80090309 + SEC_E_QOP_NOT_SUPPORTED Handle = 0x8009030A + SEC_E_NO_IMPERSONATION Handle = 0x8009030B + SEC_E_LOGON_DENIED Handle = 0x8009030C + SEC_E_UNKNOWN_CREDENTIALS Handle = 0x8009030D + SEC_E_NO_CREDENTIALS Handle = 0x8009030E + SEC_E_MESSAGE_ALTERED Handle = 0x8009030F + SEC_E_OUT_OF_SEQUENCE Handle = 0x80090310 + SEC_E_NO_AUTHENTICATING_AUTHORITY Handle = 0x80090311 + SEC_I_CONTINUE_NEEDED Handle = 0x00090312 + SEC_I_COMPLETE_NEEDED Handle = 0x00090313 + SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314 + SEC_I_LOCAL_LOGON Handle = 0x00090315 + SEC_I_GENERIC_EXTENSION_RECEIVED Handle = 0x00090316 + SEC_E_BAD_PKGID Handle = 0x80090316 + SEC_E_CONTEXT_EXPIRED Handle = 0x80090317 + SEC_I_CONTEXT_EXPIRED Handle = 0x00090317 + SEC_E_INCOMPLETE_MESSAGE Handle = 0x80090318 + SEC_E_INCOMPLETE_CREDENTIALS Handle = 0x80090320 + SEC_E_BUFFER_TOO_SMALL Handle = 0x80090321 + SEC_I_INCOMPLETE_CREDENTIALS Handle = 0x00090320 + SEC_I_RENEGOTIATE Handle = 0x00090321 + SEC_E_WRONG_PRINCIPAL Handle = 0x80090322 + SEC_I_NO_LSA_CONTEXT Handle = 0x00090323 + SEC_E_TIME_SKEW Handle = 0x80090324 + SEC_E_UNTRUSTED_ROOT Handle = 0x80090325 + SEC_E_ILLEGAL_MESSAGE Handle = 0x80090326 + SEC_E_CERT_UNKNOWN Handle = 0x80090327 + SEC_E_CERT_EXPIRED Handle = 0x80090328 + SEC_E_ENCRYPT_FAILURE Handle = 0x80090329 + SEC_E_DECRYPT_FAILURE Handle = 0x80090330 + SEC_E_ALGORITHM_MISMATCH Handle = 0x80090331 + SEC_E_SECURITY_QOS_FAILED Handle = 0x80090332 + SEC_E_UNFINISHED_CONTEXT_DELETED Handle = 0x80090333 + SEC_E_NO_TGT_REPLY Handle = 0x80090334 + SEC_E_NO_IP_ADDRESSES Handle = 0x80090335 + SEC_E_WRONG_CREDENTIAL_HANDLE Handle = 0x80090336 + SEC_E_CRYPTO_SYSTEM_INVALID Handle = 0x80090337 + SEC_E_MAX_REFERRALS_EXCEEDED Handle = 0x80090338 + SEC_E_MUST_BE_KDC Handle = 0x80090339 + SEC_E_STRONG_CRYPTO_NOT_SUPPORTED Handle = 0x8009033A + SEC_E_TOO_MANY_PRINCIPALS Handle = 0x8009033B + SEC_E_NO_PA_DATA Handle = 0x8009033C + SEC_E_PKINIT_NAME_MISMATCH Handle = 0x8009033D + SEC_E_SMARTCARD_LOGON_REQUIRED Handle = 0x8009033E + SEC_E_SHUTDOWN_IN_PROGRESS Handle = 0x8009033F + SEC_E_KDC_INVALID_REQUEST Handle = 0x80090340 + SEC_E_KDC_UNABLE_TO_REFER Handle = 0x80090341 + SEC_E_KDC_UNKNOWN_ETYPE Handle = 0x80090342 + SEC_E_UNSUPPORTED_PREAUTH Handle = 0x80090343 + SEC_E_DELEGATION_REQUIRED Handle = 0x80090345 + SEC_E_BAD_BINDINGS Handle = 0x80090346 + SEC_E_MULTIPLE_ACCOUNTS Handle = 0x80090347 + SEC_E_NO_KERB_KEY Handle = 0x80090348 + SEC_E_CERT_WRONG_USAGE Handle = 0x80090349 + SEC_E_DOWNGRADE_DETECTED Handle = 0x80090350 + SEC_E_SMARTCARD_CERT_REVOKED Handle = 0x80090351 + SEC_E_ISSUING_CA_UNTRUSTED Handle = 0x80090352 + SEC_E_REVOCATION_OFFLINE_C Handle = 0x80090353 + SEC_E_PKINIT_CLIENT_FAILURE Handle = 0x80090354 + SEC_E_SMARTCARD_CERT_EXPIRED Handle = 0x80090355 + SEC_E_NO_S4U_PROT_SUPPORT Handle = 0x80090356 + SEC_E_CROSSREALM_DELEGATION_FAILURE Handle = 0x80090357 + SEC_E_REVOCATION_OFFLINE_KDC Handle = 0x80090358 + SEC_E_ISSUING_CA_UNTRUSTED_KDC Handle = 0x80090359 + SEC_E_KDC_CERT_EXPIRED Handle = 0x8009035A + SEC_E_KDC_CERT_REVOKED Handle = 0x8009035B + SEC_I_SIGNATURE_NEEDED Handle = 0x0009035C + SEC_E_INVALID_PARAMETER Handle = 0x8009035D + SEC_E_DELEGATION_POLICY Handle = 0x8009035E + SEC_E_POLICY_NLTM_ONLY Handle = 0x8009035F + SEC_I_NO_RENEGOTIATION Handle = 0x00090360 + SEC_E_NO_CONTEXT Handle = 0x80090361 + SEC_E_PKU2U_CERT_FAILURE Handle = 0x80090362 + SEC_E_MUTUAL_AUTH_FAILED Handle = 0x80090363 + SEC_I_MESSAGE_FRAGMENT Handle = 0x00090364 + SEC_E_ONLY_HTTPS_ALLOWED Handle = 0x80090365 + SEC_I_CONTINUE_NEEDED_MESSAGE_OK Handle = 0x00090366 + SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367 + SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368 + SEC_E_INVALID_UPN_NAME Handle = 0x80090369 + SEC_E_EXT_BUFFER_TOO_SMALL Handle = 0x8009036A + SEC_E_INSUFFICIENT_BUFFERS Handle = 0x8009036B + SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR + SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION + CRYPT_E_MSG_ERROR Handle = 0x80091001 + CRYPT_E_UNKNOWN_ALGO Handle = 0x80091002 + CRYPT_E_OID_FORMAT Handle = 0x80091003 + CRYPT_E_INVALID_MSG_TYPE Handle = 0x80091004 + CRYPT_E_UNEXPECTED_ENCODING Handle = 0x80091005 + CRYPT_E_AUTH_ATTR_MISSING Handle = 0x80091006 + CRYPT_E_HASH_VALUE Handle = 0x80091007 + CRYPT_E_INVALID_INDEX Handle = 0x80091008 + CRYPT_E_ALREADY_DECRYPTED Handle = 0x80091009 + CRYPT_E_NOT_DECRYPTED Handle = 0x8009100A + CRYPT_E_RECIPIENT_NOT_FOUND Handle = 0x8009100B + CRYPT_E_CONTROL_TYPE Handle = 0x8009100C + CRYPT_E_ISSUER_SERIALNUMBER Handle = 0x8009100D + CRYPT_E_SIGNER_NOT_FOUND Handle = 0x8009100E + CRYPT_E_ATTRIBUTES_MISSING Handle = 0x8009100F + CRYPT_E_STREAM_MSG_NOT_READY Handle = 0x80091010 + CRYPT_E_STREAM_INSUFFICIENT_DATA Handle = 0x80091011 + CRYPT_I_NEW_PROTECTION_REQUIRED Handle = 0x00091012 + CRYPT_E_BAD_LEN Handle = 0x80092001 + CRYPT_E_BAD_ENCODE Handle = 0x80092002 + CRYPT_E_FILE_ERROR Handle = 0x80092003 + CRYPT_E_NOT_FOUND Handle = 0x80092004 + CRYPT_E_EXISTS Handle = 0x80092005 + CRYPT_E_NO_PROVIDER Handle = 0x80092006 + CRYPT_E_SELF_SIGNED Handle = 0x80092007 + CRYPT_E_DELETED_PREV Handle = 0x80092008 + CRYPT_E_NO_MATCH Handle = 0x80092009 + CRYPT_E_UNEXPECTED_MSG_TYPE Handle = 0x8009200A + CRYPT_E_NO_KEY_PROPERTY Handle = 0x8009200B + CRYPT_E_NO_DECRYPT_CERT Handle = 0x8009200C + CRYPT_E_BAD_MSG Handle = 0x8009200D + CRYPT_E_NO_SIGNER Handle = 0x8009200E + CRYPT_E_PENDING_CLOSE Handle = 0x8009200F + CRYPT_E_REVOKED Handle = 0x80092010 + CRYPT_E_NO_REVOCATION_DLL Handle = 0x80092011 + CRYPT_E_NO_REVOCATION_CHECK Handle = 0x80092012 + CRYPT_E_REVOCATION_OFFLINE Handle = 0x80092013 + CRYPT_E_NOT_IN_REVOCATION_DATABASE Handle = 0x80092014 + CRYPT_E_INVALID_NUMERIC_STRING Handle = 0x80092020 + CRYPT_E_INVALID_PRINTABLE_STRING Handle = 0x80092021 + CRYPT_E_INVALID_IA5_STRING Handle = 0x80092022 + CRYPT_E_INVALID_X500_STRING Handle = 0x80092023 + CRYPT_E_NOT_CHAR_STRING Handle = 0x80092024 + CRYPT_E_FILERESIZED Handle = 0x80092025 + CRYPT_E_SECURITY_SETTINGS Handle = 0x80092026 + CRYPT_E_NO_VERIFY_USAGE_DLL Handle = 0x80092027 + CRYPT_E_NO_VERIFY_USAGE_CHECK Handle = 0x80092028 + CRYPT_E_VERIFY_USAGE_OFFLINE Handle = 0x80092029 + CRYPT_E_NOT_IN_CTL Handle = 0x8009202A + CRYPT_E_NO_TRUSTED_SIGNER Handle = 0x8009202B + CRYPT_E_MISSING_PUBKEY_PARA Handle = 0x8009202C + CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND Handle = 0x8009202D + CRYPT_E_OSS_ERROR Handle = 0x80093000 + OSS_MORE_BUF Handle = 0x80093001 + OSS_NEGATIVE_UINTEGER Handle = 0x80093002 + OSS_PDU_RANGE Handle = 0x80093003 + OSS_MORE_INPUT Handle = 0x80093004 + OSS_DATA_ERROR Handle = 0x80093005 + OSS_BAD_ARG Handle = 0x80093006 + OSS_BAD_VERSION Handle = 0x80093007 + OSS_OUT_MEMORY Handle = 0x80093008 + OSS_PDU_MISMATCH Handle = 0x80093009 + OSS_LIMITED Handle = 0x8009300A + OSS_BAD_PTR Handle = 0x8009300B + OSS_BAD_TIME Handle = 0x8009300C + OSS_INDEFINITE_NOT_SUPPORTED Handle = 0x8009300D + OSS_MEM_ERROR Handle = 0x8009300E + OSS_BAD_TABLE Handle = 0x8009300F + OSS_TOO_LONG Handle = 0x80093010 + OSS_CONSTRAINT_VIOLATED Handle = 0x80093011 + OSS_FATAL_ERROR Handle = 0x80093012 + OSS_ACCESS_SERIALIZATION_ERROR Handle = 0x80093013 + OSS_NULL_TBL Handle = 0x80093014 + OSS_NULL_FCN Handle = 0x80093015 + OSS_BAD_ENCRULES Handle = 0x80093016 + OSS_UNAVAIL_ENCRULES Handle = 0x80093017 + OSS_CANT_OPEN_TRACE_WINDOW Handle = 0x80093018 + OSS_UNIMPLEMENTED Handle = 0x80093019 + OSS_OID_DLL_NOT_LINKED Handle = 0x8009301A + OSS_CANT_OPEN_TRACE_FILE Handle = 0x8009301B + OSS_TRACE_FILE_ALREADY_OPEN Handle = 0x8009301C + OSS_TABLE_MISMATCH Handle = 0x8009301D + OSS_TYPE_NOT_SUPPORTED Handle = 0x8009301E + OSS_REAL_DLL_NOT_LINKED Handle = 0x8009301F + OSS_REAL_CODE_NOT_LINKED Handle = 0x80093020 + OSS_OUT_OF_RANGE Handle = 0x80093021 + OSS_COPIER_DLL_NOT_LINKED Handle = 0x80093022 + OSS_CONSTRAINT_DLL_NOT_LINKED Handle = 0x80093023 + OSS_COMPARATOR_DLL_NOT_LINKED Handle = 0x80093024 + OSS_COMPARATOR_CODE_NOT_LINKED Handle = 0x80093025 + OSS_MEM_MGR_DLL_NOT_LINKED Handle = 0x80093026 + OSS_PDV_DLL_NOT_LINKED Handle = 0x80093027 + OSS_PDV_CODE_NOT_LINKED Handle = 0x80093028 + OSS_API_DLL_NOT_LINKED Handle = 0x80093029 + OSS_BERDER_DLL_NOT_LINKED Handle = 0x8009302A + OSS_PER_DLL_NOT_LINKED Handle = 0x8009302B + OSS_OPEN_TYPE_ERROR Handle = 0x8009302C + OSS_MUTEX_NOT_CREATED Handle = 0x8009302D + OSS_CANT_CLOSE_TRACE_FILE Handle = 0x8009302E + CRYPT_E_ASN1_ERROR Handle = 0x80093100 + CRYPT_E_ASN1_INTERNAL Handle = 0x80093101 + CRYPT_E_ASN1_EOD Handle = 0x80093102 + CRYPT_E_ASN1_CORRUPT Handle = 0x80093103 + CRYPT_E_ASN1_LARGE Handle = 0x80093104 + CRYPT_E_ASN1_CONSTRAINT Handle = 0x80093105 + CRYPT_E_ASN1_MEMORY Handle = 0x80093106 + CRYPT_E_ASN1_OVERFLOW Handle = 0x80093107 + CRYPT_E_ASN1_BADPDU Handle = 0x80093108 + CRYPT_E_ASN1_BADARGS Handle = 0x80093109 + CRYPT_E_ASN1_BADREAL Handle = 0x8009310A + CRYPT_E_ASN1_BADTAG Handle = 0x8009310B + CRYPT_E_ASN1_CHOICE Handle = 0x8009310C + CRYPT_E_ASN1_RULE Handle = 0x8009310D + CRYPT_E_ASN1_UTF8 Handle = 0x8009310E + CRYPT_E_ASN1_PDU_TYPE Handle = 0x80093133 + CRYPT_E_ASN1_NYI Handle = 0x80093134 + CRYPT_E_ASN1_EXTENDED Handle = 0x80093201 + CRYPT_E_ASN1_NOEOD Handle = 0x80093202 + CERTSRV_E_BAD_REQUESTSUBJECT Handle = 0x80094001 + CERTSRV_E_NO_REQUEST Handle = 0x80094002 + CERTSRV_E_BAD_REQUESTSTATUS Handle = 0x80094003 + CERTSRV_E_PROPERTY_EMPTY Handle = 0x80094004 + CERTSRV_E_INVALID_CA_CERTIFICATE Handle = 0x80094005 + CERTSRV_E_SERVER_SUSPENDED Handle = 0x80094006 + CERTSRV_E_ENCODING_LENGTH Handle = 0x80094007 + CERTSRV_E_ROLECONFLICT Handle = 0x80094008 + CERTSRV_E_RESTRICTEDOFFICER Handle = 0x80094009 + CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED Handle = 0x8009400A + CERTSRV_E_NO_VALID_KRA Handle = 0x8009400B + CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL Handle = 0x8009400C + CERTSRV_E_NO_CAADMIN_DEFINED Handle = 0x8009400D + CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE Handle = 0x8009400E + CERTSRV_E_NO_DB_SESSIONS Handle = 0x8009400F + CERTSRV_E_ALIGNMENT_FAULT Handle = 0x80094010 + CERTSRV_E_ENROLL_DENIED Handle = 0x80094011 + CERTSRV_E_TEMPLATE_DENIED Handle = 0x80094012 + CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE Handle = 0x80094013 + CERTSRV_E_ADMIN_DENIED_REQUEST Handle = 0x80094014 + CERTSRV_E_NO_POLICY_SERVER Handle = 0x80094015 + CERTSRV_E_WEAK_SIGNATURE_OR_KEY Handle = 0x80094016 + CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED Handle = 0x80094017 + CERTSRV_E_ENCRYPTION_CERT_REQUIRED Handle = 0x80094018 + CERTSRV_E_UNSUPPORTED_CERT_TYPE Handle = 0x80094800 + CERTSRV_E_NO_CERT_TYPE Handle = 0x80094801 + CERTSRV_E_TEMPLATE_CONFLICT Handle = 0x80094802 + CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED Handle = 0x80094803 + CERTSRV_E_ARCHIVED_KEY_REQUIRED Handle = 0x80094804 + CERTSRV_E_SMIME_REQUIRED Handle = 0x80094805 + CERTSRV_E_BAD_RENEWAL_SUBJECT Handle = 0x80094806 + CERTSRV_E_BAD_TEMPLATE_VERSION Handle = 0x80094807 + CERTSRV_E_TEMPLATE_POLICY_REQUIRED Handle = 0x80094808 + CERTSRV_E_SIGNATURE_POLICY_REQUIRED Handle = 0x80094809 + CERTSRV_E_SIGNATURE_COUNT Handle = 0x8009480A + CERTSRV_E_SIGNATURE_REJECTED Handle = 0x8009480B + CERTSRV_E_ISSUANCE_POLICY_REQUIRED Handle = 0x8009480C + CERTSRV_E_SUBJECT_UPN_REQUIRED Handle = 0x8009480D + CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED Handle = 0x8009480E + CERTSRV_E_SUBJECT_DNS_REQUIRED Handle = 0x8009480F + CERTSRV_E_ARCHIVED_KEY_UNEXPECTED Handle = 0x80094810 + CERTSRV_E_KEY_LENGTH Handle = 0x80094811 + CERTSRV_E_SUBJECT_EMAIL_REQUIRED Handle = 0x80094812 + CERTSRV_E_UNKNOWN_CERT_TYPE Handle = 0x80094813 + CERTSRV_E_CERT_TYPE_OVERLAP Handle = 0x80094814 + CERTSRV_E_TOO_MANY_SIGNATURES Handle = 0x80094815 + CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY Handle = 0x80094816 + CERTSRV_E_INVALID_EK Handle = 0x80094817 + CERTSRV_E_INVALID_IDBINDING Handle = 0x80094818 + CERTSRV_E_INVALID_ATTESTATION Handle = 0x80094819 + CERTSRV_E_KEY_ATTESTATION Handle = 0x8009481A + CERTSRV_E_CORRUPT_KEY_ATTESTATION Handle = 0x8009481B + CERTSRV_E_EXPIRED_CHALLENGE Handle = 0x8009481C + CERTSRV_E_INVALID_RESPONSE Handle = 0x8009481D + CERTSRV_E_INVALID_REQUESTID Handle = 0x8009481E + CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH Handle = 0x8009481F + CERTSRV_E_PENDING_CLIENT_RESPONSE Handle = 0x80094820 + XENROLL_E_KEY_NOT_EXPORTABLE Handle = 0x80095000 + XENROLL_E_CANNOT_ADD_ROOT_CERT Handle = 0x80095001 + XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND Handle = 0x80095002 + XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH Handle = 0x80095003 + XENROLL_E_RESPONSE_KA_HASH_MISMATCH Handle = 0x80095004 + XENROLL_E_KEYSPEC_SMIME_MISMATCH Handle = 0x80095005 + TRUST_E_SYSTEM_ERROR Handle = 0x80096001 + TRUST_E_NO_SIGNER_CERT Handle = 0x80096002 + TRUST_E_COUNTER_SIGNER Handle = 0x80096003 + TRUST_E_CERT_SIGNATURE Handle = 0x80096004 + TRUST_E_TIME_STAMP Handle = 0x80096005 + TRUST_E_BAD_DIGEST Handle = 0x80096010 + TRUST_E_MALFORMED_SIGNATURE Handle = 0x80096011 + TRUST_E_BASIC_CONSTRAINTS Handle = 0x80096019 + TRUST_E_FINANCIAL_CRITERIA Handle = 0x8009601E + MSSIPOTF_E_OUTOFMEMRANGE Handle = 0x80097001 + MSSIPOTF_E_CANTGETOBJECT Handle = 0x80097002 + MSSIPOTF_E_NOHEADTABLE Handle = 0x80097003 + MSSIPOTF_E_BAD_MAGICNUMBER Handle = 0x80097004 + MSSIPOTF_E_BAD_OFFSET_TABLE Handle = 0x80097005 + MSSIPOTF_E_TABLE_TAGORDER Handle = 0x80097006 + MSSIPOTF_E_TABLE_LONGWORD Handle = 0x80097007 + MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT Handle = 0x80097008 + MSSIPOTF_E_TABLES_OVERLAP Handle = 0x80097009 + MSSIPOTF_E_TABLE_PADBYTES Handle = 0x8009700A + MSSIPOTF_E_FILETOOSMALL Handle = 0x8009700B + MSSIPOTF_E_TABLE_CHECKSUM Handle = 0x8009700C + MSSIPOTF_E_FILE_CHECKSUM Handle = 0x8009700D + MSSIPOTF_E_FAILED_POLICY Handle = 0x80097010 + MSSIPOTF_E_FAILED_HINTS_CHECK Handle = 0x80097011 + MSSIPOTF_E_NOT_OPENTYPE Handle = 0x80097012 + MSSIPOTF_E_FILE Handle = 0x80097013 + MSSIPOTF_E_CRYPT Handle = 0x80097014 + MSSIPOTF_E_BADVERSION Handle = 0x80097015 + MSSIPOTF_E_DSIG_STRUCTURE Handle = 0x80097016 + MSSIPOTF_E_PCONST_CHECK Handle = 0x80097017 + MSSIPOTF_E_STRUCTURE Handle = 0x80097018 + ERROR_CRED_REQUIRES_CONFIRMATION Handle = 0x80097019 + NTE_OP_OK syscall.Errno = 0 + TRUST_E_PROVIDER_UNKNOWN Handle = 0x800B0001 + TRUST_E_ACTION_UNKNOWN Handle = 0x800B0002 + TRUST_E_SUBJECT_FORM_UNKNOWN Handle = 0x800B0003 + TRUST_E_SUBJECT_NOT_TRUSTED Handle = 0x800B0004 + DIGSIG_E_ENCODE Handle = 0x800B0005 + DIGSIG_E_DECODE Handle = 0x800B0006 + DIGSIG_E_EXTENSIBILITY Handle = 0x800B0007 + DIGSIG_E_CRYPTO Handle = 0x800B0008 + PERSIST_E_SIZEDEFINITE Handle = 0x800B0009 + PERSIST_E_SIZEINDEFINITE Handle = 0x800B000A + PERSIST_E_NOTSELFSIZING Handle = 0x800B000B + TRUST_E_NOSIGNATURE Handle = 0x800B0100 + CERT_E_EXPIRED Handle = 0x800B0101 + CERT_E_VALIDITYPERIODNESTING Handle = 0x800B0102 + CERT_E_ROLE Handle = 0x800B0103 + CERT_E_PATHLENCONST Handle = 0x800B0104 + CERT_E_CRITICAL Handle = 0x800B0105 + CERT_E_PURPOSE Handle = 0x800B0106 + CERT_E_ISSUERCHAINING Handle = 0x800B0107 + CERT_E_MALFORMED Handle = 0x800B0108 + CERT_E_UNTRUSTEDROOT Handle = 0x800B0109 + CERT_E_CHAINING Handle = 0x800B010A + TRUST_E_FAIL Handle = 0x800B010B + CERT_E_REVOKED Handle = 0x800B010C + CERT_E_UNTRUSTEDTESTROOT Handle = 0x800B010D + CERT_E_REVOCATION_FAILURE Handle = 0x800B010E + CERT_E_CN_NO_MATCH Handle = 0x800B010F + CERT_E_WRONG_USAGE Handle = 0x800B0110 + TRUST_E_EXPLICIT_DISTRUST Handle = 0x800B0111 + CERT_E_UNTRUSTEDCA Handle = 0x800B0112 + CERT_E_INVALID_POLICY Handle = 0x800B0113 + CERT_E_INVALID_NAME Handle = 0x800B0114 + SPAPI_E_EXPECTED_SECTION_NAME Handle = 0x800F0000 + SPAPI_E_BAD_SECTION_NAME_LINE Handle = 0x800F0001 + SPAPI_E_SECTION_NAME_TOO_LONG Handle = 0x800F0002 + SPAPI_E_GENERAL_SYNTAX Handle = 0x800F0003 + SPAPI_E_WRONG_INF_STYLE Handle = 0x800F0100 + SPAPI_E_SECTION_NOT_FOUND Handle = 0x800F0101 + SPAPI_E_LINE_NOT_FOUND Handle = 0x800F0102 + SPAPI_E_NO_BACKUP Handle = 0x800F0103 + SPAPI_E_NO_ASSOCIATED_CLASS Handle = 0x800F0200 + SPAPI_E_CLASS_MISMATCH Handle = 0x800F0201 + SPAPI_E_DUPLICATE_FOUND Handle = 0x800F0202 + SPAPI_E_NO_DRIVER_SELECTED Handle = 0x800F0203 + SPAPI_E_KEY_DOES_NOT_EXIST Handle = 0x800F0204 + SPAPI_E_INVALID_DEVINST_NAME Handle = 0x800F0205 + SPAPI_E_INVALID_CLASS Handle = 0x800F0206 + SPAPI_E_DEVINST_ALREADY_EXISTS Handle = 0x800F0207 + SPAPI_E_DEVINFO_NOT_REGISTERED Handle = 0x800F0208 + SPAPI_E_INVALID_REG_PROPERTY Handle = 0x800F0209 + SPAPI_E_NO_INF Handle = 0x800F020A + SPAPI_E_NO_SUCH_DEVINST Handle = 0x800F020B + SPAPI_E_CANT_LOAD_CLASS_ICON Handle = 0x800F020C + SPAPI_E_INVALID_CLASS_INSTALLER Handle = 0x800F020D + SPAPI_E_DI_DO_DEFAULT Handle = 0x800F020E + SPAPI_E_DI_NOFILECOPY Handle = 0x800F020F + SPAPI_E_INVALID_HWPROFILE Handle = 0x800F0210 + SPAPI_E_NO_DEVICE_SELECTED Handle = 0x800F0211 + SPAPI_E_DEVINFO_LIST_LOCKED Handle = 0x800F0212 + SPAPI_E_DEVINFO_DATA_LOCKED Handle = 0x800F0213 + SPAPI_E_DI_BAD_PATH Handle = 0x800F0214 + SPAPI_E_NO_CLASSINSTALL_PARAMS Handle = 0x800F0215 + SPAPI_E_FILEQUEUE_LOCKED Handle = 0x800F0216 + SPAPI_E_BAD_SERVICE_INSTALLSECT Handle = 0x800F0217 + SPAPI_E_NO_CLASS_DRIVER_LIST Handle = 0x800F0218 + SPAPI_E_NO_ASSOCIATED_SERVICE Handle = 0x800F0219 + SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE Handle = 0x800F021A + SPAPI_E_DEVICE_INTERFACE_ACTIVE Handle = 0x800F021B + SPAPI_E_DEVICE_INTERFACE_REMOVED Handle = 0x800F021C + SPAPI_E_BAD_INTERFACE_INSTALLSECT Handle = 0x800F021D + SPAPI_E_NO_SUCH_INTERFACE_CLASS Handle = 0x800F021E + SPAPI_E_INVALID_REFERENCE_STRING Handle = 0x800F021F + SPAPI_E_INVALID_MACHINENAME Handle = 0x800F0220 + SPAPI_E_REMOTE_COMM_FAILURE Handle = 0x800F0221 + SPAPI_E_MACHINE_UNAVAILABLE Handle = 0x800F0222 + SPAPI_E_NO_CONFIGMGR_SERVICES Handle = 0x800F0223 + SPAPI_E_INVALID_PROPPAGE_PROVIDER Handle = 0x800F0224 + SPAPI_E_NO_SUCH_DEVICE_INTERFACE Handle = 0x800F0225 + SPAPI_E_DI_POSTPROCESSING_REQUIRED Handle = 0x800F0226 + SPAPI_E_INVALID_COINSTALLER Handle = 0x800F0227 + SPAPI_E_NO_COMPAT_DRIVERS Handle = 0x800F0228 + SPAPI_E_NO_DEVICE_ICON Handle = 0x800F0229 + SPAPI_E_INVALID_INF_LOGCONFIG Handle = 0x800F022A + SPAPI_E_DI_DONT_INSTALL Handle = 0x800F022B + SPAPI_E_INVALID_FILTER_DRIVER Handle = 0x800F022C + SPAPI_E_NON_WINDOWS_NT_DRIVER Handle = 0x800F022D + SPAPI_E_NON_WINDOWS_DRIVER Handle = 0x800F022E + SPAPI_E_NO_CATALOG_FOR_OEM_INF Handle = 0x800F022F + SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE Handle = 0x800F0230 + SPAPI_E_NOT_DISABLEABLE Handle = 0x800F0231 + SPAPI_E_CANT_REMOVE_DEVINST Handle = 0x800F0232 + SPAPI_E_INVALID_TARGET Handle = 0x800F0233 + SPAPI_E_DRIVER_NONNATIVE Handle = 0x800F0234 + SPAPI_E_IN_WOW64 Handle = 0x800F0235 + SPAPI_E_SET_SYSTEM_RESTORE_POINT Handle = 0x800F0236 + SPAPI_E_INCORRECTLY_COPIED_INF Handle = 0x800F0237 + SPAPI_E_SCE_DISABLED Handle = 0x800F0238 + SPAPI_E_UNKNOWN_EXCEPTION Handle = 0x800F0239 + SPAPI_E_PNP_REGISTRY_ERROR Handle = 0x800F023A + SPAPI_E_REMOTE_REQUEST_UNSUPPORTED Handle = 0x800F023B + SPAPI_E_NOT_AN_INSTALLED_OEM_INF Handle = 0x800F023C + SPAPI_E_INF_IN_USE_BY_DEVICES Handle = 0x800F023D + SPAPI_E_DI_FUNCTION_OBSOLETE Handle = 0x800F023E + SPAPI_E_NO_AUTHENTICODE_CATALOG Handle = 0x800F023F + SPAPI_E_AUTHENTICODE_DISALLOWED Handle = 0x800F0240 + SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER Handle = 0x800F0241 + SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED Handle = 0x800F0242 + SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Handle = 0x800F0243 + SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH Handle = 0x800F0244 + SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE Handle = 0x800F0245 + SPAPI_E_DEVICE_INSTALLER_NOT_READY Handle = 0x800F0246 + SPAPI_E_DRIVER_STORE_ADD_FAILED Handle = 0x800F0247 + SPAPI_E_DEVICE_INSTALL_BLOCKED Handle = 0x800F0248 + SPAPI_E_DRIVER_INSTALL_BLOCKED Handle = 0x800F0249 + SPAPI_E_WRONG_INF_TYPE Handle = 0x800F024A + SPAPI_E_FILE_HASH_NOT_IN_CATALOG Handle = 0x800F024B + SPAPI_E_DRIVER_STORE_DELETE_FAILED Handle = 0x800F024C + SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW Handle = 0x800F0300 + SPAPI_E_ERROR_NOT_INSTALLED Handle = 0x800F1000 + SCARD_S_SUCCESS = S_OK + SCARD_F_INTERNAL_ERROR Handle = 0x80100001 + SCARD_E_CANCELLED Handle = 0x80100002 + SCARD_E_INVALID_HANDLE Handle = 0x80100003 + SCARD_E_INVALID_PARAMETER Handle = 0x80100004 + SCARD_E_INVALID_TARGET Handle = 0x80100005 + SCARD_E_NO_MEMORY Handle = 0x80100006 + SCARD_F_WAITED_TOO_LONG Handle = 0x80100007 + SCARD_E_INSUFFICIENT_BUFFER Handle = 0x80100008 + SCARD_E_UNKNOWN_READER Handle = 0x80100009 + SCARD_E_TIMEOUT Handle = 0x8010000A + SCARD_E_SHARING_VIOLATION Handle = 0x8010000B + SCARD_E_NO_SMARTCARD Handle = 0x8010000C + SCARD_E_UNKNOWN_CARD Handle = 0x8010000D + SCARD_E_CANT_DISPOSE Handle = 0x8010000E + SCARD_E_PROTO_MISMATCH Handle = 0x8010000F + SCARD_E_NOT_READY Handle = 0x80100010 + SCARD_E_INVALID_VALUE Handle = 0x80100011 + SCARD_E_SYSTEM_CANCELLED Handle = 0x80100012 + SCARD_F_COMM_ERROR Handle = 0x80100013 + SCARD_F_UNKNOWN_ERROR Handle = 0x80100014 + SCARD_E_INVALID_ATR Handle = 0x80100015 + SCARD_E_NOT_TRANSACTED Handle = 0x80100016 + SCARD_E_READER_UNAVAILABLE Handle = 0x80100017 + SCARD_P_SHUTDOWN Handle = 0x80100018 + SCARD_E_PCI_TOO_SMALL Handle = 0x80100019 + SCARD_E_READER_UNSUPPORTED Handle = 0x8010001A + SCARD_E_DUPLICATE_READER Handle = 0x8010001B + SCARD_E_CARD_UNSUPPORTED Handle = 0x8010001C + SCARD_E_NO_SERVICE Handle = 0x8010001D + SCARD_E_SERVICE_STOPPED Handle = 0x8010001E + SCARD_E_UNEXPECTED Handle = 0x8010001F + SCARD_E_ICC_INSTALLATION Handle = 0x80100020 + SCARD_E_ICC_CREATEORDER Handle = 0x80100021 + SCARD_E_UNSUPPORTED_FEATURE Handle = 0x80100022 + SCARD_E_DIR_NOT_FOUND Handle = 0x80100023 + SCARD_E_FILE_NOT_FOUND Handle = 0x80100024 + SCARD_E_NO_DIR Handle = 0x80100025 + SCARD_E_NO_FILE Handle = 0x80100026 + SCARD_E_NO_ACCESS Handle = 0x80100027 + SCARD_E_WRITE_TOO_MANY Handle = 0x80100028 + SCARD_E_BAD_SEEK Handle = 0x80100029 + SCARD_E_INVALID_CHV Handle = 0x8010002A + SCARD_E_UNKNOWN_RES_MNG Handle = 0x8010002B + SCARD_E_NO_SUCH_CERTIFICATE Handle = 0x8010002C + SCARD_E_CERTIFICATE_UNAVAILABLE Handle = 0x8010002D + SCARD_E_NO_READERS_AVAILABLE Handle = 0x8010002E + SCARD_E_COMM_DATA_LOST Handle = 0x8010002F + SCARD_E_NO_KEY_CONTAINER Handle = 0x80100030 + SCARD_E_SERVER_TOO_BUSY Handle = 0x80100031 + SCARD_E_PIN_CACHE_EXPIRED Handle = 0x80100032 + SCARD_E_NO_PIN_CACHE Handle = 0x80100033 + SCARD_E_READ_ONLY_CARD Handle = 0x80100034 + SCARD_W_UNSUPPORTED_CARD Handle = 0x80100065 + SCARD_W_UNRESPONSIVE_CARD Handle = 0x80100066 + SCARD_W_UNPOWERED_CARD Handle = 0x80100067 + SCARD_W_RESET_CARD Handle = 0x80100068 + SCARD_W_REMOVED_CARD Handle = 0x80100069 + SCARD_W_SECURITY_VIOLATION Handle = 0x8010006A + SCARD_W_WRONG_CHV Handle = 0x8010006B + SCARD_W_CHV_BLOCKED Handle = 0x8010006C + SCARD_W_EOF Handle = 0x8010006D + SCARD_W_CANCELLED_BY_USER Handle = 0x8010006E + SCARD_W_CARD_NOT_AUTHENTICATED Handle = 0x8010006F + SCARD_W_CACHE_ITEM_NOT_FOUND Handle = 0x80100070 + SCARD_W_CACHE_ITEM_STALE Handle = 0x80100071 + SCARD_W_CACHE_ITEM_TOO_BIG Handle = 0x80100072 + COMADMIN_E_OBJECTERRORS Handle = 0x80110401 + COMADMIN_E_OBJECTINVALID Handle = 0x80110402 + COMADMIN_E_KEYMISSING Handle = 0x80110403 + COMADMIN_E_ALREADYINSTALLED Handle = 0x80110404 + COMADMIN_E_APP_FILE_WRITEFAIL Handle = 0x80110407 + COMADMIN_E_APP_FILE_READFAIL Handle = 0x80110408 + COMADMIN_E_APP_FILE_VERSION Handle = 0x80110409 + COMADMIN_E_BADPATH Handle = 0x8011040A + COMADMIN_E_APPLICATIONEXISTS Handle = 0x8011040B + COMADMIN_E_ROLEEXISTS Handle = 0x8011040C + COMADMIN_E_CANTCOPYFILE Handle = 0x8011040D + COMADMIN_E_NOUSER Handle = 0x8011040F + COMADMIN_E_INVALIDUSERIDS Handle = 0x80110410 + COMADMIN_E_NOREGISTRYCLSID Handle = 0x80110411 + COMADMIN_E_BADREGISTRYPROGID Handle = 0x80110412 + COMADMIN_E_AUTHENTICATIONLEVEL Handle = 0x80110413 + COMADMIN_E_USERPASSWDNOTVALID Handle = 0x80110414 + COMADMIN_E_CLSIDORIIDMISMATCH Handle = 0x80110418 + COMADMIN_E_REMOTEINTERFACE Handle = 0x80110419 + COMADMIN_E_DLLREGISTERSERVER Handle = 0x8011041A + COMADMIN_E_NOSERVERSHARE Handle = 0x8011041B + COMADMIN_E_DLLLOADFAILED Handle = 0x8011041D + COMADMIN_E_BADREGISTRYLIBID Handle = 0x8011041E + COMADMIN_E_APPDIRNOTFOUND Handle = 0x8011041F + COMADMIN_E_REGISTRARFAILED Handle = 0x80110423 + COMADMIN_E_COMPFILE_DOESNOTEXIST Handle = 0x80110424 + COMADMIN_E_COMPFILE_LOADDLLFAIL Handle = 0x80110425 + COMADMIN_E_COMPFILE_GETCLASSOBJ Handle = 0x80110426 + COMADMIN_E_COMPFILE_CLASSNOTAVAIL Handle = 0x80110427 + COMADMIN_E_COMPFILE_BADTLB Handle = 0x80110428 + COMADMIN_E_COMPFILE_NOTINSTALLABLE Handle = 0x80110429 + COMADMIN_E_NOTCHANGEABLE Handle = 0x8011042A + COMADMIN_E_NOTDELETEABLE Handle = 0x8011042B + COMADMIN_E_SESSION Handle = 0x8011042C + COMADMIN_E_COMP_MOVE_LOCKED Handle = 0x8011042D + COMADMIN_E_COMP_MOVE_BAD_DEST Handle = 0x8011042E + COMADMIN_E_REGISTERTLB Handle = 0x80110430 + COMADMIN_E_SYSTEMAPP Handle = 0x80110433 + COMADMIN_E_COMPFILE_NOREGISTRAR Handle = 0x80110434 + COMADMIN_E_COREQCOMPINSTALLED Handle = 0x80110435 + COMADMIN_E_SERVICENOTINSTALLED Handle = 0x80110436 + COMADMIN_E_PROPERTYSAVEFAILED Handle = 0x80110437 + COMADMIN_E_OBJECTEXISTS Handle = 0x80110438 + COMADMIN_E_COMPONENTEXISTS Handle = 0x80110439 + COMADMIN_E_REGFILE_CORRUPT Handle = 0x8011043B + COMADMIN_E_PROPERTY_OVERFLOW Handle = 0x8011043C + COMADMIN_E_NOTINREGISTRY Handle = 0x8011043E + COMADMIN_E_OBJECTNOTPOOLABLE Handle = 0x8011043F + COMADMIN_E_APPLID_MATCHES_CLSID Handle = 0x80110446 + COMADMIN_E_ROLE_DOES_NOT_EXIST Handle = 0x80110447 + COMADMIN_E_START_APP_NEEDS_COMPONENTS Handle = 0x80110448 + COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM Handle = 0x80110449 + COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY Handle = 0x8011044A + COMADMIN_E_CAN_NOT_START_APP Handle = 0x8011044B + COMADMIN_E_CAN_NOT_EXPORT_SYS_APP Handle = 0x8011044C + COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT Handle = 0x8011044D + COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER Handle = 0x8011044E + COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE Handle = 0x8011044F + COMADMIN_E_BASE_PARTITION_ONLY Handle = 0x80110450 + COMADMIN_E_START_APP_DISABLED Handle = 0x80110451 + COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME Handle = 0x80110457 + COMADMIN_E_CAT_INVALID_PARTITION_NAME Handle = 0x80110458 + COMADMIN_E_CAT_PARTITION_IN_USE Handle = 0x80110459 + COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES Handle = 0x8011045A + COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED Handle = 0x8011045B + COMADMIN_E_AMBIGUOUS_APPLICATION_NAME Handle = 0x8011045C + COMADMIN_E_AMBIGUOUS_PARTITION_NAME Handle = 0x8011045D + COMADMIN_E_REGDB_NOTINITIALIZED Handle = 0x80110472 + COMADMIN_E_REGDB_NOTOPEN Handle = 0x80110473 + COMADMIN_E_REGDB_SYSTEMERR Handle = 0x80110474 + COMADMIN_E_REGDB_ALREADYRUNNING Handle = 0x80110475 + COMADMIN_E_MIG_VERSIONNOTSUPPORTED Handle = 0x80110480 + COMADMIN_E_MIG_SCHEMANOTFOUND Handle = 0x80110481 + COMADMIN_E_CAT_BITNESSMISMATCH Handle = 0x80110482 + COMADMIN_E_CAT_UNACCEPTABLEBITNESS Handle = 0x80110483 + COMADMIN_E_CAT_WRONGAPPBITNESS Handle = 0x80110484 + COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED Handle = 0x80110485 + COMADMIN_E_CAT_SERVERFAULT Handle = 0x80110486 + COMQC_E_APPLICATION_NOT_QUEUED Handle = 0x80110600 + COMQC_E_NO_QUEUEABLE_INTERFACES Handle = 0x80110601 + COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE Handle = 0x80110602 + COMQC_E_NO_IPERSISTSTREAM Handle = 0x80110603 + COMQC_E_BAD_MESSAGE Handle = 0x80110604 + COMQC_E_UNAUTHENTICATED Handle = 0x80110605 + COMQC_E_UNTRUSTED_ENQUEUER Handle = 0x80110606 + MSDTC_E_DUPLICATE_RESOURCE Handle = 0x80110701 + COMADMIN_E_OBJECT_PARENT_MISSING Handle = 0x80110808 + COMADMIN_E_OBJECT_DOES_NOT_EXIST Handle = 0x80110809 + COMADMIN_E_APP_NOT_RUNNING Handle = 0x8011080A + COMADMIN_E_INVALID_PARTITION Handle = 0x8011080B + COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE Handle = 0x8011080D + COMADMIN_E_USER_IN_SET Handle = 0x8011080E + COMADMIN_E_CANTRECYCLELIBRARYAPPS Handle = 0x8011080F + COMADMIN_E_CANTRECYCLESERVICEAPPS Handle = 0x80110811 + COMADMIN_E_PROCESSALREADYRECYCLED Handle = 0x80110812 + COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED Handle = 0x80110813 + COMADMIN_E_CANTMAKEINPROCSERVICE Handle = 0x80110814 + COMADMIN_E_PROGIDINUSEBYCLSID Handle = 0x80110815 + COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET Handle = 0x80110816 + COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED Handle = 0x80110817 + COMADMIN_E_PARTITION_ACCESSDENIED Handle = 0x80110818 + COMADMIN_E_PARTITION_MSI_ONLY Handle = 0x80110819 + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT Handle = 0x8011081A + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS Handle = 0x8011081B + COMADMIN_E_COMP_MOVE_SOURCE Handle = 0x8011081C + COMADMIN_E_COMP_MOVE_DEST Handle = 0x8011081D + COMADMIN_E_COMP_MOVE_PRIVATE Handle = 0x8011081E + COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET Handle = 0x8011081F + COMADMIN_E_CANNOT_ALIAS_EVENTCLASS Handle = 0x80110820 + COMADMIN_E_PRIVATE_ACCESSDENIED Handle = 0x80110821 + COMADMIN_E_SAFERINVALID Handle = 0x80110822 + COMADMIN_E_REGISTRY_ACCESSDENIED Handle = 0x80110823 + COMADMIN_E_PARTITIONS_DISABLED Handle = 0x80110824 + WER_S_REPORT_DEBUG Handle = 0x001B0000 + WER_S_REPORT_UPLOADED Handle = 0x001B0001 + WER_S_REPORT_QUEUED Handle = 0x001B0002 + WER_S_DISABLED Handle = 0x001B0003 + WER_S_SUSPENDED_UPLOAD Handle = 0x001B0004 + WER_S_DISABLED_QUEUE Handle = 0x001B0005 + WER_S_DISABLED_ARCHIVE Handle = 0x001B0006 + WER_S_REPORT_ASYNC Handle = 0x001B0007 + WER_S_IGNORE_ASSERT_INSTANCE Handle = 0x001B0008 + WER_S_IGNORE_ALL_ASSERTS Handle = 0x001B0009 + WER_S_ASSERT_CONTINUE Handle = 0x001B000A + WER_S_THROTTLED Handle = 0x001B000B + WER_S_REPORT_UPLOADED_CAB Handle = 0x001B000C + WER_E_CRASH_FAILURE Handle = 0x801B8000 + WER_E_CANCELED Handle = 0x801B8001 + WER_E_NETWORK_FAILURE Handle = 0x801B8002 + WER_E_NOT_INITIALIZED Handle = 0x801B8003 + WER_E_ALREADY_REPORTING Handle = 0x801B8004 + WER_E_DUMP_THROTTLED Handle = 0x801B8005 + WER_E_INSUFFICIENT_CONSENT Handle = 0x801B8006 + WER_E_TOO_HEAVY Handle = 0x801B8007 + ERROR_FLT_IO_COMPLETE Handle = 0x001F0001 + ERROR_FLT_NO_HANDLER_DEFINED Handle = 0x801F0001 + ERROR_FLT_CONTEXT_ALREADY_DEFINED Handle = 0x801F0002 + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST Handle = 0x801F0003 + ERROR_FLT_DISALLOW_FAST_IO Handle = 0x801F0004 + ERROR_FLT_INVALID_NAME_REQUEST Handle = 0x801F0005 + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION Handle = 0x801F0006 + ERROR_FLT_NOT_INITIALIZED Handle = 0x801F0007 + ERROR_FLT_FILTER_NOT_READY Handle = 0x801F0008 + ERROR_FLT_POST_OPERATION_CLEANUP Handle = 0x801F0009 + ERROR_FLT_INTERNAL_ERROR Handle = 0x801F000A + ERROR_FLT_DELETING_OBJECT Handle = 0x801F000B + ERROR_FLT_MUST_BE_NONPAGED_POOL Handle = 0x801F000C + ERROR_FLT_DUPLICATE_ENTRY Handle = 0x801F000D + ERROR_FLT_CBDQ_DISABLED Handle = 0x801F000E + ERROR_FLT_DO_NOT_ATTACH Handle = 0x801F000F + ERROR_FLT_DO_NOT_DETACH Handle = 0x801F0010 + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION Handle = 0x801F0011 + ERROR_FLT_INSTANCE_NAME_COLLISION Handle = 0x801F0012 + ERROR_FLT_FILTER_NOT_FOUND Handle = 0x801F0013 + ERROR_FLT_VOLUME_NOT_FOUND Handle = 0x801F0014 + ERROR_FLT_INSTANCE_NOT_FOUND Handle = 0x801F0015 + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND Handle = 0x801F0016 + ERROR_FLT_INVALID_CONTEXT_REGISTRATION Handle = 0x801F0017 + ERROR_FLT_NAME_CACHE_MISS Handle = 0x801F0018 + ERROR_FLT_NO_DEVICE_OBJECT Handle = 0x801F0019 + ERROR_FLT_VOLUME_ALREADY_MOUNTED Handle = 0x801F001A + ERROR_FLT_ALREADY_ENLISTED Handle = 0x801F001B + ERROR_FLT_CONTEXT_ALREADY_LINKED Handle = 0x801F001C + ERROR_FLT_NO_WAITER_FOR_REPLY Handle = 0x801F0020 + ERROR_FLT_REGISTRATION_BUSY Handle = 0x801F0023 + ERROR_HUNG_DISPLAY_DRIVER_THREAD Handle = 0x80260001 + DWM_E_COMPOSITIONDISABLED Handle = 0x80263001 + DWM_E_REMOTING_NOT_SUPPORTED Handle = 0x80263002 + DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x80263003 + DWM_E_NOT_QUEUING_PRESENTS Handle = 0x80263004 + DWM_E_ADAPTER_NOT_FOUND Handle = 0x80263005 + DWM_S_GDI_REDIRECTION_SURFACE Handle = 0x00263005 + DWM_E_TEXTURE_TOO_LARGE Handle = 0x80263007 + DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI Handle = 0x00263008 + ERROR_MONITOR_NO_DESCRIPTOR Handle = 0x00261001 + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT Handle = 0x00261002 + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM Handle = 0xC0261003 + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK Handle = 0xC0261004 + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED Handle = 0xC0261005 + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK Handle = 0xC0261006 + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK Handle = 0xC0261007 + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA Handle = 0xC0261008 + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK Handle = 0xC0261009 + ERROR_MONITOR_INVALID_MANUFACTURE_DATE Handle = 0xC026100A + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER Handle = 0xC0262000 + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER Handle = 0xC0262001 + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER Handle = 0xC0262002 + ERROR_GRAPHICS_ADAPTER_WAS_RESET Handle = 0xC0262003 + ERROR_GRAPHICS_INVALID_DRIVER_MODEL Handle = 0xC0262004 + ERROR_GRAPHICS_PRESENT_MODE_CHANGED Handle = 0xC0262005 + ERROR_GRAPHICS_PRESENT_OCCLUDED Handle = 0xC0262006 + ERROR_GRAPHICS_PRESENT_DENIED Handle = 0xC0262007 + ERROR_GRAPHICS_CANNOTCOLORCONVERT Handle = 0xC0262008 + ERROR_GRAPHICS_DRIVER_MISMATCH Handle = 0xC0262009 + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED Handle = 0x4026200A + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED Handle = 0xC026200B + ERROR_GRAPHICS_PRESENT_UNOCCLUDED Handle = 0xC026200C + ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE Handle = 0xC026200D + ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED Handle = 0xC026200E + ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F + ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010 + ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011 + ERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN Handle = 0xC0262012 + ERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED Handle = 0xC0262013 + ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100 + ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101 + ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102 + ERROR_GRAPHICS_TOO_MANY_REFERENCES Handle = 0xC0262103 + ERROR_GRAPHICS_TRY_AGAIN_LATER Handle = 0xC0262104 + ERROR_GRAPHICS_TRY_AGAIN_NOW Handle = 0xC0262105 + ERROR_GRAPHICS_ALLOCATION_INVALID Handle = 0xC0262106 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE Handle = 0xC0262107 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED Handle = 0xC0262108 + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Handle = 0xC0262109 + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE Handle = 0xC0262110 + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION Handle = 0xC0262111 + ERROR_GRAPHICS_ALLOCATION_CLOSED Handle = 0xC0262112 + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE Handle = 0xC0262113 + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE Handle = 0xC0262114 + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE Handle = 0xC0262115 + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST Handle = 0xC0262116 + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE Handle = 0xC0262200 + ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION Handle = 0x40262201 + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY Handle = 0xC0262300 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED Handle = 0xC0262301 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED Handle = 0xC0262302 + ERROR_GRAPHICS_INVALID_VIDPN Handle = 0xC0262303 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Handle = 0xC0262304 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Handle = 0xC0262305 + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED Handle = 0xC0262306 + ERROR_GRAPHICS_MODE_NOT_PINNED Handle = 0x00262307 + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Handle = 0xC0262308 + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET Handle = 0xC0262309 + ERROR_GRAPHICS_INVALID_FREQUENCY Handle = 0xC026230A + ERROR_GRAPHICS_INVALID_ACTIVE_REGION Handle = 0xC026230B + ERROR_GRAPHICS_INVALID_TOTAL_REGION Handle = 0xC026230C + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE Handle = 0xC0262310 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE Handle = 0xC0262311 + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Handle = 0xC0262312 + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY Handle = 0xC0262313 + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET Handle = 0xC0262314 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET Handle = 0xC0262315 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET Handle = 0xC0262316 + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET Handle = 0xC0262317 + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET Handle = 0xC0262318 + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH Handle = 0xC0262319 + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY Handle = 0xC026231A + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET Handle = 0xC026231B + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE Handle = 0xC026231C + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET Handle = 0xC026231D + ERROR_GRAPHICS_NO_PREFERRED_MODE Handle = 0x0026231E + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET Handle = 0xC026231F + ERROR_GRAPHICS_STALE_MODESET Handle = 0xC0262320 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET Handle = 0xC0262321 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE Handle = 0xC0262322 + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN Handle = 0xC0262323 + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE Handle = 0xC0262324 + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION Handle = 0xC0262325 + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES Handle = 0xC0262326 + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY Handle = 0xC0262327 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE Handle = 0xC0262328 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET Handle = 0xC0262329 + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET Handle = 0xC026232A + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR Handle = 0xC026232B + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET Handle = 0xC026232C + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET Handle = 0xC026232D + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE Handle = 0xC026232E + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE Handle = 0xC026232F + ERROR_GRAPHICS_RESOURCES_NOT_RELATED Handle = 0xC0262330 + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE Handle = 0xC0262331 + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE Handle = 0xC0262332 + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET Handle = 0xC0262333 + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER Handle = 0xC0262334 + ERROR_GRAPHICS_NO_VIDPNMGR Handle = 0xC0262335 + ERROR_GRAPHICS_NO_ACTIVE_VIDPN Handle = 0xC0262336 + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY Handle = 0xC0262337 + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED Handle = 0xC0262338 + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY Handle = 0xC0262339 + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE Handle = 0xC026233A + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE Handle = 0xC026233B + ERROR_GRAPHICS_INVALID_STRIDE Handle = 0xC026233C + ERROR_GRAPHICS_INVALID_PIXELFORMAT Handle = 0xC026233D + ERROR_GRAPHICS_INVALID_COLORBASIS Handle = 0xC026233E + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE Handle = 0xC026233F + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY Handle = 0xC0262340 + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT Handle = 0xC0262341 + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0xC0262342 + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN Handle = 0xC0262343 + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL Handle = 0xC0262344 + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION Handle = 0xC0262345 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED Handle = 0xC0262346 + ERROR_GRAPHICS_INVALID_GAMMA_RAMP Handle = 0xC0262347 + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED Handle = 0xC0262348 + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED Handle = 0xC0262349 + ERROR_GRAPHICS_MODE_NOT_IN_MODESET Handle = 0xC026234A + ERROR_GRAPHICS_DATASET_IS_EMPTY Handle = 0x0026234B + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET Handle = 0x0026234C + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON Handle = 0xC026234D + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE Handle = 0xC026234E + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE Handle = 0xC026234F + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS Handle = 0xC0262350 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED Handle = 0x00262351 + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING Handle = 0xC0262352 + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED Handle = 0xC0262353 + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS Handle = 0xC0262354 + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT Handle = 0xC0262355 + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM Handle = 0xC0262356 + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN Handle = 0xC0262357 + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT Handle = 0xC0262358 + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED Handle = 0xC0262359 + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION Handle = 0xC026235A + ERROR_GRAPHICS_INVALID_CLIENT_TYPE Handle = 0xC026235B + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET Handle = 0xC026235C + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED Handle = 0xC0262400 + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED Handle = 0xC0262401 + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS Handle = 0x4026242F + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER Handle = 0xC0262430 + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED Handle = 0xC0262431 + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED Handle = 0xC0262432 + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY Handle = 0xC0262433 + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED Handle = 0xC0262434 + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON Handle = 0xC0262435 + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE Handle = 0xC0262436 + ERROR_GRAPHICS_LEADLINK_START_DEFERRED Handle = 0x40262437 + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER Handle = 0xC0262438 + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY Handle = 0x40262439 + ERROR_GRAPHICS_START_DEFERRED Handle = 0x4026243A + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED Handle = 0xC026243B + ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS Handle = 0x4026243C + ERROR_GRAPHICS_OPM_NOT_SUPPORTED Handle = 0xC0262500 + ERROR_GRAPHICS_COPP_NOT_SUPPORTED Handle = 0xC0262501 + ERROR_GRAPHICS_UAB_NOT_SUPPORTED Handle = 0xC0262502 + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS Handle = 0xC0262503 + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST Handle = 0xC0262505 + ERROR_GRAPHICS_OPM_INTERNAL_ERROR Handle = 0xC026250B + ERROR_GRAPHICS_OPM_INVALID_HANDLE Handle = 0xC026250C + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH Handle = 0xC026250E + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED Handle = 0xC026250F + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED Handle = 0xC0262510 + ERROR_GRAPHICS_PVP_HFS_FAILED Handle = 0xC0262511 + ERROR_GRAPHICS_OPM_INVALID_SRM Handle = 0xC0262512 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP Handle = 0xC0262513 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP Handle = 0xC0262514 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA Handle = 0xC0262515 + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET Handle = 0xC0262516 + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH Handle = 0xC0262517 + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE Handle = 0xC0262518 + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS Handle = 0xC026251A + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC026251B + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS Handle = 0xC026251C + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST Handle = 0xC026251D + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR Handle = 0xC026251E + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS Handle = 0xC026251F + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED Handle = 0xC0262520 + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST Handle = 0xC0262521 + ERROR_GRAPHICS_I2C_NOT_SUPPORTED Handle = 0xC0262580 + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST Handle = 0xC0262581 + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA Handle = 0xC0262582 + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA Handle = 0xC0262583 + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED Handle = 0xC0262584 + ERROR_GRAPHICS_DDCCI_INVALID_DATA Handle = 0xC0262585 + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE Handle = 0xC0262586 + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING Handle = 0xC0262587 + ERROR_GRAPHICS_MCA_INTERNAL_ERROR Handle = 0xC0262588 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND Handle = 0xC0262589 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH Handle = 0xC026258A + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM Handle = 0xC026258B + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE Handle = 0xC026258C + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS Handle = 0xC026258D + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE Handle = 0xC02625D8 + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION Handle = 0xC02625D9 + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION Handle = 0xC02625DA + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH Handle = 0xC02625DB + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION Handle = 0xC02625DC + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED Handle = 0xC02625DE + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE Handle = 0xC02625DF + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED Handle = 0xC02625E0 + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME Handle = 0xC02625E1 + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP Handle = 0xC02625E2 + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED Handle = 0xC02625E3 + ERROR_GRAPHICS_INVALID_POINTER Handle = 0xC02625E4 + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE Handle = 0xC02625E5 + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL Handle = 0xC02625E6 + ERROR_GRAPHICS_INTERNAL_ERROR Handle = 0xC02625E7 + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC02605E8 + NAP_E_INVALID_PACKET Handle = 0x80270001 + NAP_E_MISSING_SOH Handle = 0x80270002 + NAP_E_CONFLICTING_ID Handle = 0x80270003 + NAP_E_NO_CACHED_SOH Handle = 0x80270004 + NAP_E_STILL_BOUND Handle = 0x80270005 + NAP_E_NOT_REGISTERED Handle = 0x80270006 + NAP_E_NOT_INITIALIZED Handle = 0x80270007 + NAP_E_MISMATCHED_ID Handle = 0x80270008 + NAP_E_NOT_PENDING Handle = 0x80270009 + NAP_E_ID_NOT_FOUND Handle = 0x8027000A + NAP_E_MAXSIZE_TOO_SMALL Handle = 0x8027000B + NAP_E_SERVICE_NOT_RUNNING Handle = 0x8027000C + NAP_S_CERT_ALREADY_PRESENT Handle = 0x0027000D + NAP_E_ENTITY_DISABLED Handle = 0x8027000E + NAP_E_NETSH_GROUPPOLICY_ERROR Handle = 0x8027000F + NAP_E_TOO_MANY_CALLS Handle = 0x80270010 + NAP_E_SHV_CONFIG_EXISTED Handle = 0x80270011 + NAP_E_SHV_CONFIG_NOT_FOUND Handle = 0x80270012 + NAP_E_SHV_TIMEOUT Handle = 0x80270013 + TPM_E_ERROR_MASK Handle = 0x80280000 + TPM_E_AUTHFAIL Handle = 0x80280001 + TPM_E_BADINDEX Handle = 0x80280002 + TPM_E_BAD_PARAMETER Handle = 0x80280003 + TPM_E_AUDITFAILURE Handle = 0x80280004 + TPM_E_CLEAR_DISABLED Handle = 0x80280005 + TPM_E_DEACTIVATED Handle = 0x80280006 + TPM_E_DISABLED Handle = 0x80280007 + TPM_E_DISABLED_CMD Handle = 0x80280008 + TPM_E_FAIL Handle = 0x80280009 + TPM_E_BAD_ORDINAL Handle = 0x8028000A + TPM_E_INSTALL_DISABLED Handle = 0x8028000B + TPM_E_INVALID_KEYHANDLE Handle = 0x8028000C + TPM_E_KEYNOTFOUND Handle = 0x8028000D + TPM_E_INAPPROPRIATE_ENC Handle = 0x8028000E + TPM_E_MIGRATEFAIL Handle = 0x8028000F + TPM_E_INVALID_PCR_INFO Handle = 0x80280010 + TPM_E_NOSPACE Handle = 0x80280011 + TPM_E_NOSRK Handle = 0x80280012 + TPM_E_NOTSEALED_BLOB Handle = 0x80280013 + TPM_E_OWNER_SET Handle = 0x80280014 + TPM_E_RESOURCES Handle = 0x80280015 + TPM_E_SHORTRANDOM Handle = 0x80280016 + TPM_E_SIZE Handle = 0x80280017 + TPM_E_WRONGPCRVAL Handle = 0x80280018 + TPM_E_BAD_PARAM_SIZE Handle = 0x80280019 + TPM_E_SHA_THREAD Handle = 0x8028001A + TPM_E_SHA_ERROR Handle = 0x8028001B + TPM_E_FAILEDSELFTEST Handle = 0x8028001C + TPM_E_AUTH2FAIL Handle = 0x8028001D + TPM_E_BADTAG Handle = 0x8028001E + TPM_E_IOERROR Handle = 0x8028001F + TPM_E_ENCRYPT_ERROR Handle = 0x80280020 + TPM_E_DECRYPT_ERROR Handle = 0x80280021 + TPM_E_INVALID_AUTHHANDLE Handle = 0x80280022 + TPM_E_NO_ENDORSEMENT Handle = 0x80280023 + TPM_E_INVALID_KEYUSAGE Handle = 0x80280024 + TPM_E_WRONG_ENTITYTYPE Handle = 0x80280025 + TPM_E_INVALID_POSTINIT Handle = 0x80280026 + TPM_E_INAPPROPRIATE_SIG Handle = 0x80280027 + TPM_E_BAD_KEY_PROPERTY Handle = 0x80280028 + TPM_E_BAD_MIGRATION Handle = 0x80280029 + TPM_E_BAD_SCHEME Handle = 0x8028002A + TPM_E_BAD_DATASIZE Handle = 0x8028002B + TPM_E_BAD_MODE Handle = 0x8028002C + TPM_E_BAD_PRESENCE Handle = 0x8028002D + TPM_E_BAD_VERSION Handle = 0x8028002E + TPM_E_NO_WRAP_TRANSPORT Handle = 0x8028002F + TPM_E_AUDITFAIL_UNSUCCESSFUL Handle = 0x80280030 + TPM_E_AUDITFAIL_SUCCESSFUL Handle = 0x80280031 + TPM_E_NOTRESETABLE Handle = 0x80280032 + TPM_E_NOTLOCAL Handle = 0x80280033 + TPM_E_BAD_TYPE Handle = 0x80280034 + TPM_E_INVALID_RESOURCE Handle = 0x80280035 + TPM_E_NOTFIPS Handle = 0x80280036 + TPM_E_INVALID_FAMILY Handle = 0x80280037 + TPM_E_NO_NV_PERMISSION Handle = 0x80280038 + TPM_E_REQUIRES_SIGN Handle = 0x80280039 + TPM_E_KEY_NOTSUPPORTED Handle = 0x8028003A + TPM_E_AUTH_CONFLICT Handle = 0x8028003B + TPM_E_AREA_LOCKED Handle = 0x8028003C + TPM_E_BAD_LOCALITY Handle = 0x8028003D + TPM_E_READ_ONLY Handle = 0x8028003E + TPM_E_PER_NOWRITE Handle = 0x8028003F + TPM_E_FAMILYCOUNT Handle = 0x80280040 + TPM_E_WRITE_LOCKED Handle = 0x80280041 + TPM_E_BAD_ATTRIBUTES Handle = 0x80280042 + TPM_E_INVALID_STRUCTURE Handle = 0x80280043 + TPM_E_KEY_OWNER_CONTROL Handle = 0x80280044 + TPM_E_BAD_COUNTER Handle = 0x80280045 + TPM_E_NOT_FULLWRITE Handle = 0x80280046 + TPM_E_CONTEXT_GAP Handle = 0x80280047 + TPM_E_MAXNVWRITES Handle = 0x80280048 + TPM_E_NOOPERATOR Handle = 0x80280049 + TPM_E_RESOURCEMISSING Handle = 0x8028004A + TPM_E_DELEGATE_LOCK Handle = 0x8028004B + TPM_E_DELEGATE_FAMILY Handle = 0x8028004C + TPM_E_DELEGATE_ADMIN Handle = 0x8028004D + TPM_E_TRANSPORT_NOTEXCLUSIVE Handle = 0x8028004E + TPM_E_OWNER_CONTROL Handle = 0x8028004F + TPM_E_DAA_RESOURCES Handle = 0x80280050 + TPM_E_DAA_INPUT_DATA0 Handle = 0x80280051 + TPM_E_DAA_INPUT_DATA1 Handle = 0x80280052 + TPM_E_DAA_ISSUER_SETTINGS Handle = 0x80280053 + TPM_E_DAA_TPM_SETTINGS Handle = 0x80280054 + TPM_E_DAA_STAGE Handle = 0x80280055 + TPM_E_DAA_ISSUER_VALIDITY Handle = 0x80280056 + TPM_E_DAA_WRONG_W Handle = 0x80280057 + TPM_E_BAD_HANDLE Handle = 0x80280058 + TPM_E_BAD_DELEGATE Handle = 0x80280059 + TPM_E_BADCONTEXT Handle = 0x8028005A + TPM_E_TOOMANYCONTEXTS Handle = 0x8028005B + TPM_E_MA_TICKET_SIGNATURE Handle = 0x8028005C + TPM_E_MA_DESTINATION Handle = 0x8028005D + TPM_E_MA_SOURCE Handle = 0x8028005E + TPM_E_MA_AUTHORITY Handle = 0x8028005F + TPM_E_PERMANENTEK Handle = 0x80280061 + TPM_E_BAD_SIGNATURE Handle = 0x80280062 + TPM_E_NOCONTEXTSPACE Handle = 0x80280063 + TPM_20_E_ASYMMETRIC Handle = 0x80280081 + TPM_20_E_ATTRIBUTES Handle = 0x80280082 + TPM_20_E_HASH Handle = 0x80280083 + TPM_20_E_VALUE Handle = 0x80280084 + TPM_20_E_HIERARCHY Handle = 0x80280085 + TPM_20_E_KEY_SIZE Handle = 0x80280087 + TPM_20_E_MGF Handle = 0x80280088 + TPM_20_E_MODE Handle = 0x80280089 + TPM_20_E_TYPE Handle = 0x8028008A + TPM_20_E_HANDLE Handle = 0x8028008B + TPM_20_E_KDF Handle = 0x8028008C + TPM_20_E_RANGE Handle = 0x8028008D + TPM_20_E_AUTH_FAIL Handle = 0x8028008E + TPM_20_E_NONCE Handle = 0x8028008F + TPM_20_E_PP Handle = 0x80280090 + TPM_20_E_SCHEME Handle = 0x80280092 + TPM_20_E_SIZE Handle = 0x80280095 + TPM_20_E_SYMMETRIC Handle = 0x80280096 + TPM_20_E_TAG Handle = 0x80280097 + TPM_20_E_SELECTOR Handle = 0x80280098 + TPM_20_E_INSUFFICIENT Handle = 0x8028009A + TPM_20_E_SIGNATURE Handle = 0x8028009B + TPM_20_E_KEY Handle = 0x8028009C + TPM_20_E_POLICY_FAIL Handle = 0x8028009D + TPM_20_E_INTEGRITY Handle = 0x8028009F + TPM_20_E_TICKET Handle = 0x802800A0 + TPM_20_E_RESERVED_BITS Handle = 0x802800A1 + TPM_20_E_BAD_AUTH Handle = 0x802800A2 + TPM_20_E_EXPIRED Handle = 0x802800A3 + TPM_20_E_POLICY_CC Handle = 0x802800A4 + TPM_20_E_BINDING Handle = 0x802800A5 + TPM_20_E_CURVE Handle = 0x802800A6 + TPM_20_E_ECC_POINT Handle = 0x802800A7 + TPM_20_E_INITIALIZE Handle = 0x80280100 + TPM_20_E_FAILURE Handle = 0x80280101 + TPM_20_E_SEQUENCE Handle = 0x80280103 + TPM_20_E_PRIVATE Handle = 0x8028010B + TPM_20_E_HMAC Handle = 0x80280119 + TPM_20_E_DISABLED Handle = 0x80280120 + TPM_20_E_EXCLUSIVE Handle = 0x80280121 + TPM_20_E_ECC_CURVE Handle = 0x80280123 + TPM_20_E_AUTH_TYPE Handle = 0x80280124 + TPM_20_E_AUTH_MISSING Handle = 0x80280125 + TPM_20_E_POLICY Handle = 0x80280126 + TPM_20_E_PCR Handle = 0x80280127 + TPM_20_E_PCR_CHANGED Handle = 0x80280128 + TPM_20_E_UPGRADE Handle = 0x8028012D + TPM_20_E_TOO_MANY_CONTEXTS Handle = 0x8028012E + TPM_20_E_AUTH_UNAVAILABLE Handle = 0x8028012F + TPM_20_E_REBOOT Handle = 0x80280130 + TPM_20_E_UNBALANCED Handle = 0x80280131 + TPM_20_E_COMMAND_SIZE Handle = 0x80280142 + TPM_20_E_COMMAND_CODE Handle = 0x80280143 + TPM_20_E_AUTHSIZE Handle = 0x80280144 + TPM_20_E_AUTH_CONTEXT Handle = 0x80280145 + TPM_20_E_NV_RANGE Handle = 0x80280146 + TPM_20_E_NV_SIZE Handle = 0x80280147 + TPM_20_E_NV_LOCKED Handle = 0x80280148 + TPM_20_E_NV_AUTHORIZATION Handle = 0x80280149 + TPM_20_E_NV_UNINITIALIZED Handle = 0x8028014A + TPM_20_E_NV_SPACE Handle = 0x8028014B + TPM_20_E_NV_DEFINED Handle = 0x8028014C + TPM_20_E_BAD_CONTEXT Handle = 0x80280150 + TPM_20_E_CPHASH Handle = 0x80280151 + TPM_20_E_PARENT Handle = 0x80280152 + TPM_20_E_NEEDS_TEST Handle = 0x80280153 + TPM_20_E_NO_RESULT Handle = 0x80280154 + TPM_20_E_SENSITIVE Handle = 0x80280155 + TPM_E_COMMAND_BLOCKED Handle = 0x80280400 + TPM_E_INVALID_HANDLE Handle = 0x80280401 + TPM_E_DUPLICATE_VHANDLE Handle = 0x80280402 + TPM_E_EMBEDDED_COMMAND_BLOCKED Handle = 0x80280403 + TPM_E_EMBEDDED_COMMAND_UNSUPPORTED Handle = 0x80280404 + TPM_E_RETRY Handle = 0x80280800 + TPM_E_NEEDS_SELFTEST Handle = 0x80280801 + TPM_E_DOING_SELFTEST Handle = 0x80280802 + TPM_E_DEFEND_LOCK_RUNNING Handle = 0x80280803 + TPM_20_E_CONTEXT_GAP Handle = 0x80280901 + TPM_20_E_OBJECT_MEMORY Handle = 0x80280902 + TPM_20_E_SESSION_MEMORY Handle = 0x80280903 + TPM_20_E_MEMORY Handle = 0x80280904 + TPM_20_E_SESSION_HANDLES Handle = 0x80280905 + TPM_20_E_OBJECT_HANDLES Handle = 0x80280906 + TPM_20_E_LOCALITY Handle = 0x80280907 + TPM_20_E_YIELDED Handle = 0x80280908 + TPM_20_E_CANCELED Handle = 0x80280909 + TPM_20_E_TESTING Handle = 0x8028090A + TPM_20_E_NV_RATE Handle = 0x80280920 + TPM_20_E_LOCKOUT Handle = 0x80280921 + TPM_20_E_RETRY Handle = 0x80280922 + TPM_20_E_NV_UNAVAILABLE Handle = 0x80280923 + TBS_E_INTERNAL_ERROR Handle = 0x80284001 + TBS_E_BAD_PARAMETER Handle = 0x80284002 + TBS_E_INVALID_OUTPUT_POINTER Handle = 0x80284003 + TBS_E_INVALID_CONTEXT Handle = 0x80284004 + TBS_E_INSUFFICIENT_BUFFER Handle = 0x80284005 + TBS_E_IOERROR Handle = 0x80284006 + TBS_E_INVALID_CONTEXT_PARAM Handle = 0x80284007 + TBS_E_SERVICE_NOT_RUNNING Handle = 0x80284008 + TBS_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80284009 + TBS_E_TOO_MANY_RESOURCES Handle = 0x8028400A + TBS_E_SERVICE_START_PENDING Handle = 0x8028400B + TBS_E_PPI_NOT_SUPPORTED Handle = 0x8028400C + TBS_E_COMMAND_CANCELED Handle = 0x8028400D + TBS_E_BUFFER_TOO_LARGE Handle = 0x8028400E + TBS_E_TPM_NOT_FOUND Handle = 0x8028400F + TBS_E_SERVICE_DISABLED Handle = 0x80284010 + TBS_E_NO_EVENT_LOG Handle = 0x80284011 + TBS_E_ACCESS_DENIED Handle = 0x80284012 + TBS_E_PROVISIONING_NOT_ALLOWED Handle = 0x80284013 + TBS_E_PPI_FUNCTION_UNSUPPORTED Handle = 0x80284014 + TBS_E_OWNERAUTH_NOT_FOUND Handle = 0x80284015 + TBS_E_PROVISIONING_INCOMPLETE Handle = 0x80284016 + TPMAPI_E_INVALID_STATE Handle = 0x80290100 + TPMAPI_E_NOT_ENOUGH_DATA Handle = 0x80290101 + TPMAPI_E_TOO_MUCH_DATA Handle = 0x80290102 + TPMAPI_E_INVALID_OUTPUT_POINTER Handle = 0x80290103 + TPMAPI_E_INVALID_PARAMETER Handle = 0x80290104 + TPMAPI_E_OUT_OF_MEMORY Handle = 0x80290105 + TPMAPI_E_BUFFER_TOO_SMALL Handle = 0x80290106 + TPMAPI_E_INTERNAL_ERROR Handle = 0x80290107 + TPMAPI_E_ACCESS_DENIED Handle = 0x80290108 + TPMAPI_E_AUTHORIZATION_FAILED Handle = 0x80290109 + TPMAPI_E_INVALID_CONTEXT_HANDLE Handle = 0x8029010A + TPMAPI_E_TBS_COMMUNICATION_ERROR Handle = 0x8029010B + TPMAPI_E_TPM_COMMAND_ERROR Handle = 0x8029010C + TPMAPI_E_MESSAGE_TOO_LARGE Handle = 0x8029010D + TPMAPI_E_INVALID_ENCODING Handle = 0x8029010E + TPMAPI_E_INVALID_KEY_SIZE Handle = 0x8029010F + TPMAPI_E_ENCRYPTION_FAILED Handle = 0x80290110 + TPMAPI_E_INVALID_KEY_PARAMS Handle = 0x80290111 + TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB Handle = 0x80290112 + TPMAPI_E_INVALID_PCR_INDEX Handle = 0x80290113 + TPMAPI_E_INVALID_DELEGATE_BLOB Handle = 0x80290114 + TPMAPI_E_INVALID_CONTEXT_PARAMS Handle = 0x80290115 + TPMAPI_E_INVALID_KEY_BLOB Handle = 0x80290116 + TPMAPI_E_INVALID_PCR_DATA Handle = 0x80290117 + TPMAPI_E_INVALID_OWNER_AUTH Handle = 0x80290118 + TPMAPI_E_FIPS_RNG_CHECK_FAILED Handle = 0x80290119 + TPMAPI_E_EMPTY_TCG_LOG Handle = 0x8029011A + TPMAPI_E_INVALID_TCG_LOG_ENTRY Handle = 0x8029011B + TPMAPI_E_TCG_SEPARATOR_ABSENT Handle = 0x8029011C + TPMAPI_E_TCG_INVALID_DIGEST_ENTRY Handle = 0x8029011D + TPMAPI_E_POLICY_DENIES_OPERATION Handle = 0x8029011E + TPMAPI_E_NV_BITS_NOT_DEFINED Handle = 0x8029011F + TPMAPI_E_NV_BITS_NOT_READY Handle = 0x80290120 + TPMAPI_E_SEALING_KEY_NOT_AVAILABLE Handle = 0x80290121 + TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND Handle = 0x80290122 + TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE Handle = 0x80290123 + TPMAPI_E_OWNER_AUTH_NOT_NULL Handle = 0x80290124 + TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL Handle = 0x80290125 + TPMAPI_E_AUTHORIZATION_REVOKED Handle = 0x80290126 + TPMAPI_E_MALFORMED_AUTHORIZATION_KEY Handle = 0x80290127 + TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED Handle = 0x80290128 + TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE Handle = 0x80290129 + TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY Handle = 0x8029012A + TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER Handle = 0x8029012B + TPMAPI_E_SEALING_KEY_CHANGED Handle = 0x8029012C + TBSIMP_E_BUFFER_TOO_SMALL Handle = 0x80290200 + TBSIMP_E_CLEANUP_FAILED Handle = 0x80290201 + TBSIMP_E_INVALID_CONTEXT_HANDLE Handle = 0x80290202 + TBSIMP_E_INVALID_CONTEXT_PARAM Handle = 0x80290203 + TBSIMP_E_TPM_ERROR Handle = 0x80290204 + TBSIMP_E_HASH_BAD_KEY Handle = 0x80290205 + TBSIMP_E_DUPLICATE_VHANDLE Handle = 0x80290206 + TBSIMP_E_INVALID_OUTPUT_POINTER Handle = 0x80290207 + TBSIMP_E_INVALID_PARAMETER Handle = 0x80290208 + TBSIMP_E_RPC_INIT_FAILED Handle = 0x80290209 + TBSIMP_E_SCHEDULER_NOT_RUNNING Handle = 0x8029020A + TBSIMP_E_COMMAND_CANCELED Handle = 0x8029020B + TBSIMP_E_OUT_OF_MEMORY Handle = 0x8029020C + TBSIMP_E_LIST_NO_MORE_ITEMS Handle = 0x8029020D + TBSIMP_E_LIST_NOT_FOUND Handle = 0x8029020E + TBSIMP_E_NOT_ENOUGH_SPACE Handle = 0x8029020F + TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS Handle = 0x80290210 + TBSIMP_E_COMMAND_FAILED Handle = 0x80290211 + TBSIMP_E_UNKNOWN_ORDINAL Handle = 0x80290212 + TBSIMP_E_RESOURCE_EXPIRED Handle = 0x80290213 + TBSIMP_E_INVALID_RESOURCE Handle = 0x80290214 + TBSIMP_E_NOTHING_TO_UNLOAD Handle = 0x80290215 + TBSIMP_E_HASH_TABLE_FULL Handle = 0x80290216 + TBSIMP_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80290217 + TBSIMP_E_TOO_MANY_RESOURCES Handle = 0x80290218 + TBSIMP_E_PPI_NOT_SUPPORTED Handle = 0x80290219 + TBSIMP_E_TPM_INCOMPATIBLE Handle = 0x8029021A + TBSIMP_E_NO_EVENT_LOG Handle = 0x8029021B + TPM_E_PPI_ACPI_FAILURE Handle = 0x80290300 + TPM_E_PPI_USER_ABORT Handle = 0x80290301 + TPM_E_PPI_BIOS_FAILURE Handle = 0x80290302 + TPM_E_PPI_NOT_SUPPORTED Handle = 0x80290303 + TPM_E_PPI_BLOCKED_IN_BIOS Handle = 0x80290304 + TPM_E_PCP_ERROR_MASK Handle = 0x80290400 + TPM_E_PCP_DEVICE_NOT_READY Handle = 0x80290401 + TPM_E_PCP_INVALID_HANDLE Handle = 0x80290402 + TPM_E_PCP_INVALID_PARAMETER Handle = 0x80290403 + TPM_E_PCP_FLAG_NOT_SUPPORTED Handle = 0x80290404 + TPM_E_PCP_NOT_SUPPORTED Handle = 0x80290405 + TPM_E_PCP_BUFFER_TOO_SMALL Handle = 0x80290406 + TPM_E_PCP_INTERNAL_ERROR Handle = 0x80290407 + TPM_E_PCP_AUTHENTICATION_FAILED Handle = 0x80290408 + TPM_E_PCP_AUTHENTICATION_IGNORED Handle = 0x80290409 + TPM_E_PCP_POLICY_NOT_FOUND Handle = 0x8029040A + TPM_E_PCP_PROFILE_NOT_FOUND Handle = 0x8029040B + TPM_E_PCP_VALIDATION_FAILED Handle = 0x8029040C + TPM_E_PCP_WRONG_PARENT Handle = 0x8029040E + TPM_E_KEY_NOT_LOADED Handle = 0x8029040F + TPM_E_NO_KEY_CERTIFICATION Handle = 0x80290410 + TPM_E_KEY_NOT_FINALIZED Handle = 0x80290411 + TPM_E_ATTESTATION_CHALLENGE_NOT_SET Handle = 0x80290412 + TPM_E_NOT_PCR_BOUND Handle = 0x80290413 + TPM_E_KEY_ALREADY_FINALIZED Handle = 0x80290414 + TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED Handle = 0x80290415 + TPM_E_KEY_USAGE_POLICY_INVALID Handle = 0x80290416 + TPM_E_SOFT_KEY_ERROR Handle = 0x80290417 + TPM_E_KEY_NOT_AUTHENTICATED Handle = 0x80290418 + TPM_E_PCP_KEY_NOT_AIK Handle = 0x80290419 + TPM_E_KEY_NOT_SIGNING_KEY Handle = 0x8029041A + TPM_E_LOCKED_OUT Handle = 0x8029041B + TPM_E_CLAIM_TYPE_NOT_SUPPORTED Handle = 0x8029041C + TPM_E_VERSION_NOT_SUPPORTED Handle = 0x8029041D + TPM_E_BUFFER_LENGTH_MISMATCH Handle = 0x8029041E + TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED Handle = 0x8029041F + TPM_E_PCP_TICKET_MISSING Handle = 0x80290420 + TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED Handle = 0x80290421 + TPM_E_PCP_KEY_HANDLE_INVALIDATED Handle = 0x80290422 + TPM_E_PCP_UNSUPPORTED_PSS_SALT Handle = 0x40290423 + TPM_E_ZERO_EXHAUST_ENABLED Handle = 0x80290500 + PLA_E_DCS_NOT_FOUND Handle = 0x80300002 + PLA_E_DCS_IN_USE Handle = 0x803000AA + PLA_E_TOO_MANY_FOLDERS Handle = 0x80300045 + PLA_E_NO_MIN_DISK Handle = 0x80300070 + PLA_E_DCS_ALREADY_EXISTS Handle = 0x803000B7 + PLA_S_PROPERTY_IGNORED Handle = 0x00300100 + PLA_E_PROPERTY_CONFLICT Handle = 0x80300101 + PLA_E_DCS_SINGLETON_REQUIRED Handle = 0x80300102 + PLA_E_CREDENTIALS_REQUIRED Handle = 0x80300103 + PLA_E_DCS_NOT_RUNNING Handle = 0x80300104 + PLA_E_CONFLICT_INCL_EXCL_API Handle = 0x80300105 + PLA_E_NETWORK_EXE_NOT_VALID Handle = 0x80300106 + PLA_E_EXE_ALREADY_CONFIGURED Handle = 0x80300107 + PLA_E_EXE_PATH_NOT_VALID Handle = 0x80300108 + PLA_E_DC_ALREADY_EXISTS Handle = 0x80300109 + PLA_E_DCS_START_WAIT_TIMEOUT Handle = 0x8030010A + PLA_E_DC_START_WAIT_TIMEOUT Handle = 0x8030010B + PLA_E_REPORT_WAIT_TIMEOUT Handle = 0x8030010C + PLA_E_NO_DUPLICATES Handle = 0x8030010D + PLA_E_EXE_FULL_PATH_REQUIRED Handle = 0x8030010E + PLA_E_INVALID_SESSION_NAME Handle = 0x8030010F + PLA_E_PLA_CHANNEL_NOT_ENABLED Handle = 0x80300110 + PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED Handle = 0x80300111 + PLA_E_RULES_MANAGER_FAILED Handle = 0x80300112 + PLA_E_CABAPI_FAILURE Handle = 0x80300113 + FVE_E_LOCKED_VOLUME Handle = 0x80310000 + FVE_E_NOT_ENCRYPTED Handle = 0x80310001 + FVE_E_NO_TPM_BIOS Handle = 0x80310002 + FVE_E_NO_MBR_METRIC Handle = 0x80310003 + FVE_E_NO_BOOTSECTOR_METRIC Handle = 0x80310004 + FVE_E_NO_BOOTMGR_METRIC Handle = 0x80310005 + FVE_E_WRONG_BOOTMGR Handle = 0x80310006 + FVE_E_SECURE_KEY_REQUIRED Handle = 0x80310007 + FVE_E_NOT_ACTIVATED Handle = 0x80310008 + FVE_E_ACTION_NOT_ALLOWED Handle = 0x80310009 + FVE_E_AD_SCHEMA_NOT_INSTALLED Handle = 0x8031000A + FVE_E_AD_INVALID_DATATYPE Handle = 0x8031000B + FVE_E_AD_INVALID_DATASIZE Handle = 0x8031000C + FVE_E_AD_NO_VALUES Handle = 0x8031000D + FVE_E_AD_ATTR_NOT_SET Handle = 0x8031000E + FVE_E_AD_GUID_NOT_FOUND Handle = 0x8031000F + FVE_E_BAD_INFORMATION Handle = 0x80310010 + FVE_E_TOO_SMALL Handle = 0x80310011 + FVE_E_SYSTEM_VOLUME Handle = 0x80310012 + FVE_E_FAILED_WRONG_FS Handle = 0x80310013 + FVE_E_BAD_PARTITION_SIZE Handle = 0x80310014 + FVE_E_NOT_SUPPORTED Handle = 0x80310015 + FVE_E_BAD_DATA Handle = 0x80310016 + FVE_E_VOLUME_NOT_BOUND Handle = 0x80310017 + FVE_E_TPM_NOT_OWNED Handle = 0x80310018 + FVE_E_NOT_DATA_VOLUME Handle = 0x80310019 + FVE_E_AD_INSUFFICIENT_BUFFER Handle = 0x8031001A + FVE_E_CONV_READ Handle = 0x8031001B + FVE_E_CONV_WRITE Handle = 0x8031001C + FVE_E_KEY_REQUIRED Handle = 0x8031001D + FVE_E_CLUSTERING_NOT_SUPPORTED Handle = 0x8031001E + FVE_E_VOLUME_BOUND_ALREADY Handle = 0x8031001F + FVE_E_OS_NOT_PROTECTED Handle = 0x80310020 + FVE_E_PROTECTION_DISABLED Handle = 0x80310021 + FVE_E_RECOVERY_KEY_REQUIRED Handle = 0x80310022 + FVE_E_FOREIGN_VOLUME Handle = 0x80310023 + FVE_E_OVERLAPPED_UPDATE Handle = 0x80310024 + FVE_E_TPM_SRK_AUTH_NOT_ZERO Handle = 0x80310025 + FVE_E_FAILED_SECTOR_SIZE Handle = 0x80310026 + FVE_E_FAILED_AUTHENTICATION Handle = 0x80310027 + FVE_E_NOT_OS_VOLUME Handle = 0x80310028 + FVE_E_AUTOUNLOCK_ENABLED Handle = 0x80310029 + FVE_E_WRONG_BOOTSECTOR Handle = 0x8031002A + FVE_E_WRONG_SYSTEM_FS Handle = 0x8031002B + FVE_E_POLICY_PASSWORD_REQUIRED Handle = 0x8031002C + FVE_E_CANNOT_SET_FVEK_ENCRYPTED Handle = 0x8031002D + FVE_E_CANNOT_ENCRYPT_NO_KEY Handle = 0x8031002E + FVE_E_BOOTABLE_CDDVD Handle = 0x80310030 + FVE_E_PROTECTOR_EXISTS Handle = 0x80310031 + FVE_E_RELATIVE_PATH Handle = 0x80310032 + FVE_E_PROTECTOR_NOT_FOUND Handle = 0x80310033 + FVE_E_INVALID_KEY_FORMAT Handle = 0x80310034 + FVE_E_INVALID_PASSWORD_FORMAT Handle = 0x80310035 + FVE_E_FIPS_RNG_CHECK_FAILED Handle = 0x80310036 + FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD Handle = 0x80310037 + FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT Handle = 0x80310038 + FVE_E_NOT_DECRYPTED Handle = 0x80310039 + FVE_E_INVALID_PROTECTOR_TYPE Handle = 0x8031003A + FVE_E_NO_PROTECTORS_TO_TEST Handle = 0x8031003B + FVE_E_KEYFILE_NOT_FOUND Handle = 0x8031003C + FVE_E_KEYFILE_INVALID Handle = 0x8031003D + FVE_E_KEYFILE_NO_VMK Handle = 0x8031003E + FVE_E_TPM_DISABLED Handle = 0x8031003F + FVE_E_NOT_ALLOWED_IN_SAFE_MODE Handle = 0x80310040 + FVE_E_TPM_INVALID_PCR Handle = 0x80310041 + FVE_E_TPM_NO_VMK Handle = 0x80310042 + FVE_E_PIN_INVALID Handle = 0x80310043 + FVE_E_AUTH_INVALID_APPLICATION Handle = 0x80310044 + FVE_E_AUTH_INVALID_CONFIG Handle = 0x80310045 + FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED Handle = 0x80310046 + FVE_E_FS_NOT_EXTENDED Handle = 0x80310047 + FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED Handle = 0x80310048 + FVE_E_NO_LICENSE Handle = 0x80310049 + FVE_E_NOT_ON_STACK Handle = 0x8031004A + FVE_E_FS_MOUNTED Handle = 0x8031004B + FVE_E_TOKEN_NOT_IMPERSONATED Handle = 0x8031004C + FVE_E_DRY_RUN_FAILED Handle = 0x8031004D + FVE_E_REBOOT_REQUIRED Handle = 0x8031004E + FVE_E_DEBUGGER_ENABLED Handle = 0x8031004F + FVE_E_RAW_ACCESS Handle = 0x80310050 + FVE_E_RAW_BLOCKED Handle = 0x80310051 + FVE_E_BCD_APPLICATIONS_PATH_INCORRECT Handle = 0x80310052 + FVE_E_NOT_ALLOWED_IN_VERSION Handle = 0x80310053 + FVE_E_NO_AUTOUNLOCK_MASTER_KEY Handle = 0x80310054 + FVE_E_MOR_FAILED Handle = 0x80310055 + FVE_E_HIDDEN_VOLUME Handle = 0x80310056 + FVE_E_TRANSIENT_STATE Handle = 0x80310057 + FVE_E_PUBKEY_NOT_ALLOWED Handle = 0x80310058 + FVE_E_VOLUME_HANDLE_OPEN Handle = 0x80310059 + FVE_E_NO_FEATURE_LICENSE Handle = 0x8031005A + FVE_E_INVALID_STARTUP_OPTIONS Handle = 0x8031005B + FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED Handle = 0x8031005C + FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED Handle = 0x8031005D + FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED Handle = 0x8031005E + FVE_E_POLICY_RECOVERY_KEY_REQUIRED Handle = 0x8031005F + FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED Handle = 0x80310060 + FVE_E_POLICY_STARTUP_PIN_REQUIRED Handle = 0x80310061 + FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED Handle = 0x80310062 + FVE_E_POLICY_STARTUP_KEY_REQUIRED Handle = 0x80310063 + FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED Handle = 0x80310064 + FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED Handle = 0x80310065 + FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED Handle = 0x80310066 + FVE_E_POLICY_STARTUP_TPM_REQUIRED Handle = 0x80310067 + FVE_E_POLICY_INVALID_PIN_LENGTH Handle = 0x80310068 + FVE_E_KEY_PROTECTOR_NOT_SUPPORTED Handle = 0x80310069 + FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006A + FVE_E_POLICY_PASSPHRASE_REQUIRED Handle = 0x8031006B + FVE_E_FIPS_PREVENTS_PASSPHRASE Handle = 0x8031006C + FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006D + FVE_E_INVALID_BITLOCKER_OID Handle = 0x8031006E + FVE_E_VOLUME_TOO_SMALL Handle = 0x8031006F + FVE_E_DV_NOT_SUPPORTED_ON_FS Handle = 0x80310070 + FVE_E_DV_NOT_ALLOWED_BY_GP Handle = 0x80310071 + FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED Handle = 0x80310072 + FVE_E_POLICY_USER_CERTIFICATE_REQUIRED Handle = 0x80310073 + FVE_E_POLICY_USER_CERT_MUST_BE_HW Handle = 0x80310074 + FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310075 + FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310076 + FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED Handle = 0x80310077 + FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED Handle = 0x80310078 + FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED Handle = 0x80310079 + FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH Handle = 0x80310080 + FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE Handle = 0x80310081 + FVE_E_RECOVERY_PARTITION Handle = 0x80310082 + FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON Handle = 0x80310083 + FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON Handle = 0x80310084 + FVE_E_NON_BITLOCKER_OID Handle = 0x80310085 + FVE_E_POLICY_PROHIBITS_SELFSIGNED Handle = 0x80310086 + FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED Handle = 0x80310087 + FVE_E_CONV_RECOVERY_FAILED Handle = 0x80310088 + FVE_E_VIRTUALIZED_SPACE_TOO_BIG Handle = 0x80310089 + FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON Handle = 0x80310090 + FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON Handle = 0x80310091 + FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON Handle = 0x80310092 + FVE_E_NON_BITLOCKER_KU Handle = 0x80310093 + FVE_E_PRIVATEKEY_AUTH_FAILED Handle = 0x80310094 + FVE_E_REMOVAL_OF_DRA_FAILED Handle = 0x80310095 + FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME Handle = 0x80310096 + FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME Handle = 0x80310097 + FVE_E_FIPS_HASH_KDF_NOT_ALLOWED Handle = 0x80310098 + FVE_E_ENH_PIN_INVALID Handle = 0x80310099 + FVE_E_INVALID_PIN_CHARS Handle = 0x8031009A + FVE_E_INVALID_DATUM_TYPE Handle = 0x8031009B + FVE_E_EFI_ONLY Handle = 0x8031009C + FVE_E_MULTIPLE_NKP_CERTS Handle = 0x8031009D + FVE_E_REMOVAL_OF_NKP_FAILED Handle = 0x8031009E + FVE_E_INVALID_NKP_CERT Handle = 0x8031009F + FVE_E_NO_EXISTING_PIN Handle = 0x803100A0 + FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH Handle = 0x803100A1 + FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100A2 + FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED Handle = 0x803100A3 + FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII Handle = 0x803100A4 + FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A5 + FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A6 + FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE Handle = 0x803100A7 + FVE_E_NO_EXISTING_PASSPHRASE Handle = 0x803100A8 + FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH Handle = 0x803100A9 + FVE_E_PASSPHRASE_TOO_LONG Handle = 0x803100AA + FVE_E_NO_PASSPHRASE_WITH_TPM Handle = 0x803100AB + FVE_E_NO_TPM_WITH_PASSPHRASE Handle = 0x803100AC + FVE_E_NOT_ALLOWED_ON_CSV_STACK Handle = 0x803100AD + FVE_E_NOT_ALLOWED_ON_CLUSTER Handle = 0x803100AE + FVE_E_EDRIVE_NO_FAILOVER_TO_SW Handle = 0x803100AF + FVE_E_EDRIVE_BAND_IN_USE Handle = 0x803100B0 + FVE_E_EDRIVE_DISALLOWED_BY_GP Handle = 0x803100B1 + FVE_E_EDRIVE_INCOMPATIBLE_VOLUME Handle = 0x803100B2 + FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING Handle = 0x803100B3 + FVE_E_EDRIVE_DV_NOT_SUPPORTED Handle = 0x803100B4 + FVE_E_NO_PREBOOT_KEYBOARD_DETECTED Handle = 0x803100B5 + FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED Handle = 0x803100B6 + FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE Handle = 0x803100B7 + FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE Handle = 0x803100B8 + FVE_E_WIPE_CANCEL_NOT_APPLICABLE Handle = 0x803100B9 + FVE_E_SECUREBOOT_DISABLED Handle = 0x803100BA + FVE_E_SECUREBOOT_CONFIGURATION_INVALID Handle = 0x803100BB + FVE_E_EDRIVE_DRY_RUN_FAILED Handle = 0x803100BC + FVE_E_SHADOW_COPY_PRESENT Handle = 0x803100BD + FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS Handle = 0x803100BE + FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE Handle = 0x803100BF + FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED Handle = 0x803100C0 + FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100C1 + FVE_E_LIVEID_ACCOUNT_SUSPENDED Handle = 0x803100C2 + FVE_E_LIVEID_ACCOUNT_BLOCKED Handle = 0x803100C3 + FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x803100C4 + FVE_E_DE_FIXED_DATA_NOT_SUPPORTED Handle = 0x803100C5 + FVE_E_DE_HARDWARE_NOT_COMPLIANT Handle = 0x803100C6 + FVE_E_DE_WINRE_NOT_CONFIGURED Handle = 0x803100C7 + FVE_E_DE_PROTECTION_SUSPENDED Handle = 0x803100C8 + FVE_E_DE_OS_VOLUME_NOT_PROTECTED Handle = 0x803100C9 + FVE_E_DE_DEVICE_LOCKEDOUT Handle = 0x803100CA + FVE_E_DE_PROTECTION_NOT_YET_ENABLED Handle = 0x803100CB + FVE_E_INVALID_PIN_CHARS_DETAILED Handle = 0x803100CC + FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE Handle = 0x803100CD + FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH Handle = 0x803100CE + FVE_E_BUFFER_TOO_LARGE Handle = 0x803100CF + FVE_E_NO_SUCH_CAPABILITY_ON_TARGET Handle = 0x803100D0 + FVE_E_DE_PREVENTED_FOR_OS Handle = 0x803100D1 + FVE_E_DE_VOLUME_OPTED_OUT Handle = 0x803100D2 + FVE_E_DE_VOLUME_NOT_SUPPORTED Handle = 0x803100D3 + FVE_E_EOW_NOT_SUPPORTED_IN_VERSION Handle = 0x803100D4 + FVE_E_ADBACKUP_NOT_ENABLED Handle = 0x803100D5 + FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT Handle = 0x803100D6 + FVE_E_NOT_DE_VOLUME Handle = 0x803100D7 + FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8 + FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9 + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE Handle = 0x803100DA + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE Handle = 0x803100DB + FVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE Handle = 0x803100DC + FVE_E_KEY_ROTATION_NOT_SUPPORTED Handle = 0x803100DD + FVE_E_EXECUTE_REQUEST_SENT_TOO_SOON Handle = 0x803100DE + FVE_E_KEY_ROTATION_NOT_ENABLED Handle = 0x803100DF + FVE_E_DEVICE_NOT_JOINED Handle = 0x803100E0 + FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001 + FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002 + FWP_E_FILTER_NOT_FOUND Handle = 0x80320003 + FWP_E_LAYER_NOT_FOUND Handle = 0x80320004 + FWP_E_PROVIDER_NOT_FOUND Handle = 0x80320005 + FWP_E_PROVIDER_CONTEXT_NOT_FOUND Handle = 0x80320006 + FWP_E_SUBLAYER_NOT_FOUND Handle = 0x80320007 + FWP_E_NOT_FOUND Handle = 0x80320008 + FWP_E_ALREADY_EXISTS Handle = 0x80320009 + FWP_E_IN_USE Handle = 0x8032000A + FWP_E_DYNAMIC_SESSION_IN_PROGRESS Handle = 0x8032000B + FWP_E_WRONG_SESSION Handle = 0x8032000C + FWP_E_NO_TXN_IN_PROGRESS Handle = 0x8032000D + FWP_E_TXN_IN_PROGRESS Handle = 0x8032000E + FWP_E_TXN_ABORTED Handle = 0x8032000F + FWP_E_SESSION_ABORTED Handle = 0x80320010 + FWP_E_INCOMPATIBLE_TXN Handle = 0x80320011 + FWP_E_TIMEOUT Handle = 0x80320012 + FWP_E_NET_EVENTS_DISABLED Handle = 0x80320013 + FWP_E_INCOMPATIBLE_LAYER Handle = 0x80320014 + FWP_E_KM_CLIENTS_ONLY Handle = 0x80320015 + FWP_E_LIFETIME_MISMATCH Handle = 0x80320016 + FWP_E_BUILTIN_OBJECT Handle = 0x80320017 + FWP_E_TOO_MANY_CALLOUTS Handle = 0x80320018 + FWP_E_NOTIFICATION_DROPPED Handle = 0x80320019 + FWP_E_TRAFFIC_MISMATCH Handle = 0x8032001A + FWP_E_INCOMPATIBLE_SA_STATE Handle = 0x8032001B + FWP_E_NULL_POINTER Handle = 0x8032001C + FWP_E_INVALID_ENUMERATOR Handle = 0x8032001D + FWP_E_INVALID_FLAGS Handle = 0x8032001E + FWP_E_INVALID_NET_MASK Handle = 0x8032001F + FWP_E_INVALID_RANGE Handle = 0x80320020 + FWP_E_INVALID_INTERVAL Handle = 0x80320021 + FWP_E_ZERO_LENGTH_ARRAY Handle = 0x80320022 + FWP_E_NULL_DISPLAY_NAME Handle = 0x80320023 + FWP_E_INVALID_ACTION_TYPE Handle = 0x80320024 + FWP_E_INVALID_WEIGHT Handle = 0x80320025 + FWP_E_MATCH_TYPE_MISMATCH Handle = 0x80320026 + FWP_E_TYPE_MISMATCH Handle = 0x80320027 + FWP_E_OUT_OF_BOUNDS Handle = 0x80320028 + FWP_E_RESERVED Handle = 0x80320029 + FWP_E_DUPLICATE_CONDITION Handle = 0x8032002A + FWP_E_DUPLICATE_KEYMOD Handle = 0x8032002B + FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002C + FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER Handle = 0x8032002D + FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002E + FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT Handle = 0x8032002F + FWP_E_INCOMPATIBLE_AUTH_METHOD Handle = 0x80320030 + FWP_E_INCOMPATIBLE_DH_GROUP Handle = 0x80320031 + FWP_E_EM_NOT_SUPPORTED Handle = 0x80320032 + FWP_E_NEVER_MATCH Handle = 0x80320033 + FWP_E_PROVIDER_CONTEXT_MISMATCH Handle = 0x80320034 + FWP_E_INVALID_PARAMETER Handle = 0x80320035 + FWP_E_TOO_MANY_SUBLAYERS Handle = 0x80320036 + FWP_E_CALLOUT_NOTIFICATION_FAILED Handle = 0x80320037 + FWP_E_INVALID_AUTH_TRANSFORM Handle = 0x80320038 + FWP_E_INVALID_CIPHER_TRANSFORM Handle = 0x80320039 + FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM Handle = 0x8032003A + FWP_E_INVALID_TRANSFORM_COMBINATION Handle = 0x8032003B + FWP_E_DUPLICATE_AUTH_METHOD Handle = 0x8032003C + FWP_E_INVALID_TUNNEL_ENDPOINT Handle = 0x8032003D + FWP_E_L2_DRIVER_NOT_READY Handle = 0x8032003E + FWP_E_KEY_DICTATOR_ALREADY_REGISTERED Handle = 0x8032003F + FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL Handle = 0x80320040 + FWP_E_CONNECTIONS_DISABLED Handle = 0x80320041 + FWP_E_INVALID_DNS_NAME Handle = 0x80320042 + FWP_E_STILL_ON Handle = 0x80320043 + FWP_E_IKEEXT_NOT_RUNNING Handle = 0x80320044 + FWP_E_DROP_NOICMP Handle = 0x80320104 + WS_S_ASYNC Handle = 0x003D0000 + WS_S_END Handle = 0x003D0001 + WS_E_INVALID_FORMAT Handle = 0x803D0000 + WS_E_OBJECT_FAULTED Handle = 0x803D0001 + WS_E_NUMERIC_OVERFLOW Handle = 0x803D0002 + WS_E_INVALID_OPERATION Handle = 0x803D0003 + WS_E_OPERATION_ABORTED Handle = 0x803D0004 + WS_E_ENDPOINT_ACCESS_DENIED Handle = 0x803D0005 + WS_E_OPERATION_TIMED_OUT Handle = 0x803D0006 + WS_E_OPERATION_ABANDONED Handle = 0x803D0007 + WS_E_QUOTA_EXCEEDED Handle = 0x803D0008 + WS_E_NO_TRANSLATION_AVAILABLE Handle = 0x803D0009 + WS_E_SECURITY_VERIFICATION_FAILURE Handle = 0x803D000A + WS_E_ADDRESS_IN_USE Handle = 0x803D000B + WS_E_ADDRESS_NOT_AVAILABLE Handle = 0x803D000C + WS_E_ENDPOINT_NOT_FOUND Handle = 0x803D000D + WS_E_ENDPOINT_NOT_AVAILABLE Handle = 0x803D000E + WS_E_ENDPOINT_FAILURE Handle = 0x803D000F + WS_E_ENDPOINT_UNREACHABLE Handle = 0x803D0010 + WS_E_ENDPOINT_ACTION_NOT_SUPPORTED Handle = 0x803D0011 + WS_E_ENDPOINT_TOO_BUSY Handle = 0x803D0012 + WS_E_ENDPOINT_FAULT_RECEIVED Handle = 0x803D0013 + WS_E_ENDPOINT_DISCONNECTED Handle = 0x803D0014 + WS_E_PROXY_FAILURE Handle = 0x803D0015 + WS_E_PROXY_ACCESS_DENIED Handle = 0x803D0016 + WS_E_NOT_SUPPORTED Handle = 0x803D0017 + WS_E_PROXY_REQUIRES_BASIC_AUTH Handle = 0x803D0018 + WS_E_PROXY_REQUIRES_DIGEST_AUTH Handle = 0x803D0019 + WS_E_PROXY_REQUIRES_NTLM_AUTH Handle = 0x803D001A + WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001B + WS_E_SERVER_REQUIRES_BASIC_AUTH Handle = 0x803D001C + WS_E_SERVER_REQUIRES_DIGEST_AUTH Handle = 0x803D001D + WS_E_SERVER_REQUIRES_NTLM_AUTH Handle = 0x803D001E + WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001F + WS_E_INVALID_ENDPOINT_URL Handle = 0x803D0020 + WS_E_OTHER Handle = 0x803D0021 + WS_E_SECURITY_TOKEN_EXPIRED Handle = 0x803D0022 + WS_E_SECURITY_SYSTEM_FAILURE Handle = 0x803D0023 + ERROR_NDIS_INTERFACE_CLOSING syscall.Errno = 0x80340002 + ERROR_NDIS_BAD_VERSION syscall.Errno = 0x80340004 + ERROR_NDIS_BAD_CHARACTERISTICS syscall.Errno = 0x80340005 + ERROR_NDIS_ADAPTER_NOT_FOUND syscall.Errno = 0x80340006 + ERROR_NDIS_OPEN_FAILED syscall.Errno = 0x80340007 + ERROR_NDIS_DEVICE_FAILED syscall.Errno = 0x80340008 + ERROR_NDIS_MULTICAST_FULL syscall.Errno = 0x80340009 + ERROR_NDIS_MULTICAST_EXISTS syscall.Errno = 0x8034000A + ERROR_NDIS_MULTICAST_NOT_FOUND syscall.Errno = 0x8034000B + ERROR_NDIS_REQUEST_ABORTED syscall.Errno = 0x8034000C + ERROR_NDIS_RESET_IN_PROGRESS syscall.Errno = 0x8034000D + ERROR_NDIS_NOT_SUPPORTED syscall.Errno = 0x803400BB + ERROR_NDIS_INVALID_PACKET syscall.Errno = 0x8034000F + ERROR_NDIS_ADAPTER_NOT_READY syscall.Errno = 0x80340011 + ERROR_NDIS_INVALID_LENGTH syscall.Errno = 0x80340014 + ERROR_NDIS_INVALID_DATA syscall.Errno = 0x80340015 + ERROR_NDIS_BUFFER_TOO_SHORT syscall.Errno = 0x80340016 + ERROR_NDIS_INVALID_OID syscall.Errno = 0x80340017 + ERROR_NDIS_ADAPTER_REMOVED syscall.Errno = 0x80340018 + ERROR_NDIS_UNSUPPORTED_MEDIA syscall.Errno = 0x80340019 + ERROR_NDIS_GROUP_ADDRESS_IN_USE syscall.Errno = 0x8034001A + ERROR_NDIS_FILE_NOT_FOUND syscall.Errno = 0x8034001B + ERROR_NDIS_ERROR_READING_FILE syscall.Errno = 0x8034001C + ERROR_NDIS_ALREADY_MAPPED syscall.Errno = 0x8034001D + ERROR_NDIS_RESOURCE_CONFLICT syscall.Errno = 0x8034001E + ERROR_NDIS_MEDIA_DISCONNECTED syscall.Errno = 0x8034001F + ERROR_NDIS_INVALID_ADDRESS syscall.Errno = 0x80340022 + ERROR_NDIS_INVALID_DEVICE_REQUEST syscall.Errno = 0x80340010 + ERROR_NDIS_PAUSED syscall.Errno = 0x8034002A + ERROR_NDIS_INTERFACE_NOT_FOUND syscall.Errno = 0x8034002B + ERROR_NDIS_UNSUPPORTED_REVISION syscall.Errno = 0x8034002C + ERROR_NDIS_INVALID_PORT syscall.Errno = 0x8034002D + ERROR_NDIS_INVALID_PORT_STATE syscall.Errno = 0x8034002E + ERROR_NDIS_LOW_POWER_STATE syscall.Errno = 0x8034002F + ERROR_NDIS_REINIT_REQUIRED syscall.Errno = 0x80340030 + ERROR_NDIS_NO_QUEUES syscall.Errno = 0x80340031 + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED syscall.Errno = 0x80342000 + ERROR_NDIS_DOT11_MEDIA_IN_USE syscall.Errno = 0x80342001 + ERROR_NDIS_DOT11_POWER_STATE_INVALID syscall.Errno = 0x80342002 + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL syscall.Errno = 0x80342003 + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL syscall.Errno = 0x80342004 + ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342005 + ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342006 + ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED syscall.Errno = 0x80342007 + ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED syscall.Errno = 0x80342008 + ERROR_NDIS_INDICATION_REQUIRED syscall.Errno = 0x00340001 + ERROR_NDIS_OFFLOAD_POLICY syscall.Errno = 0xC034100F + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED syscall.Errno = 0xC0341012 + ERROR_NDIS_OFFLOAD_PATH_REJECTED syscall.Errno = 0xC0341013 + ERROR_HV_INVALID_HYPERCALL_CODE syscall.Errno = 0xC0350002 + ERROR_HV_INVALID_HYPERCALL_INPUT syscall.Errno = 0xC0350003 + ERROR_HV_INVALID_ALIGNMENT syscall.Errno = 0xC0350004 + ERROR_HV_INVALID_PARAMETER syscall.Errno = 0xC0350005 + ERROR_HV_ACCESS_DENIED syscall.Errno = 0xC0350006 + ERROR_HV_INVALID_PARTITION_STATE syscall.Errno = 0xC0350007 + ERROR_HV_OPERATION_DENIED syscall.Errno = 0xC0350008 + ERROR_HV_UNKNOWN_PROPERTY syscall.Errno = 0xC0350009 + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE syscall.Errno = 0xC035000A + ERROR_HV_INSUFFICIENT_MEMORY syscall.Errno = 0xC035000B + ERROR_HV_PARTITION_TOO_DEEP syscall.Errno = 0xC035000C + ERROR_HV_INVALID_PARTITION_ID syscall.Errno = 0xC035000D + ERROR_HV_INVALID_VP_INDEX syscall.Errno = 0xC035000E + ERROR_HV_INVALID_PORT_ID syscall.Errno = 0xC0350011 + ERROR_HV_INVALID_CONNECTION_ID syscall.Errno = 0xC0350012 + ERROR_HV_INSUFFICIENT_BUFFERS syscall.Errno = 0xC0350013 + ERROR_HV_NOT_ACKNOWLEDGED syscall.Errno = 0xC0350014 + ERROR_HV_INVALID_VP_STATE syscall.Errno = 0xC0350015 + ERROR_HV_ACKNOWLEDGED syscall.Errno = 0xC0350016 + ERROR_HV_INVALID_SAVE_RESTORE_STATE syscall.Errno = 0xC0350017 + ERROR_HV_INVALID_SYNIC_STATE syscall.Errno = 0xC0350018 + ERROR_HV_OBJECT_IN_USE syscall.Errno = 0xC0350019 + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO syscall.Errno = 0xC035001A + ERROR_HV_NO_DATA syscall.Errno = 0xC035001B + ERROR_HV_INACTIVE syscall.Errno = 0xC035001C + ERROR_HV_NO_RESOURCES syscall.Errno = 0xC035001D + ERROR_HV_FEATURE_UNAVAILABLE syscall.Errno = 0xC035001E + ERROR_HV_INSUFFICIENT_BUFFER syscall.Errno = 0xC0350033 + ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS syscall.Errno = 0xC0350038 + ERROR_HV_CPUID_FEATURE_VALIDATION syscall.Errno = 0xC035003C + ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION syscall.Errno = 0xC035003D + ERROR_HV_PROCESSOR_STARTUP_TIMEOUT syscall.Errno = 0xC035003E + ERROR_HV_SMX_ENABLED syscall.Errno = 0xC035003F + ERROR_HV_INVALID_LP_INDEX syscall.Errno = 0xC0350041 + ERROR_HV_INVALID_REGISTER_VALUE syscall.Errno = 0xC0350050 + ERROR_HV_INVALID_VTL_STATE syscall.Errno = 0xC0350051 + ERROR_HV_NX_NOT_DETECTED syscall.Errno = 0xC0350055 + ERROR_HV_INVALID_DEVICE_ID syscall.Errno = 0xC0350057 + ERROR_HV_INVALID_DEVICE_STATE syscall.Errno = 0xC0350058 + ERROR_HV_PENDING_PAGE_REQUESTS syscall.Errno = 0x00350059 + ERROR_HV_PAGE_REQUEST_INVALID syscall.Errno = 0xC0350060 + ERROR_HV_INVALID_CPU_GROUP_ID syscall.Errno = 0xC035006F + ERROR_HV_INVALID_CPU_GROUP_STATE syscall.Errno = 0xC0350070 + ERROR_HV_OPERATION_FAILED syscall.Errno = 0xC0350071 + ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE syscall.Errno = 0xC0350072 + ERROR_HV_INSUFFICIENT_ROOT_MEMORY syscall.Errno = 0xC0350073 + ERROR_HV_NOT_PRESENT syscall.Errno = 0xC0351000 + ERROR_VID_DUPLICATE_HANDLER syscall.Errno = 0xC0370001 + ERROR_VID_TOO_MANY_HANDLERS syscall.Errno = 0xC0370002 + ERROR_VID_QUEUE_FULL syscall.Errno = 0xC0370003 + ERROR_VID_HANDLER_NOT_PRESENT syscall.Errno = 0xC0370004 + ERROR_VID_INVALID_OBJECT_NAME syscall.Errno = 0xC0370005 + ERROR_VID_PARTITION_NAME_TOO_LONG syscall.Errno = 0xC0370006 + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG syscall.Errno = 0xC0370007 + ERROR_VID_PARTITION_ALREADY_EXISTS syscall.Errno = 0xC0370008 + ERROR_VID_PARTITION_DOES_NOT_EXIST syscall.Errno = 0xC0370009 + ERROR_VID_PARTITION_NAME_NOT_FOUND syscall.Errno = 0xC037000A + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS syscall.Errno = 0xC037000B + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT syscall.Errno = 0xC037000C + ERROR_VID_MB_STILL_REFERENCED syscall.Errno = 0xC037000D + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED syscall.Errno = 0xC037000E + ERROR_VID_INVALID_NUMA_SETTINGS syscall.Errno = 0xC037000F + ERROR_VID_INVALID_NUMA_NODE_INDEX syscall.Errno = 0xC0370010 + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED syscall.Errno = 0xC0370011 + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE syscall.Errno = 0xC0370012 + ERROR_VID_PAGE_RANGE_OVERFLOW syscall.Errno = 0xC0370013 + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE syscall.Errno = 0xC0370014 + ERROR_VID_INVALID_GPA_RANGE_HANDLE syscall.Errno = 0xC0370015 + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE syscall.Errno = 0xC0370016 + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED syscall.Errno = 0xC0370017 + ERROR_VID_INVALID_PPM_HANDLE syscall.Errno = 0xC0370018 + ERROR_VID_MBPS_ARE_LOCKED syscall.Errno = 0xC0370019 + ERROR_VID_MESSAGE_QUEUE_CLOSED syscall.Errno = 0xC037001A + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED syscall.Errno = 0xC037001B + ERROR_VID_STOP_PENDING syscall.Errno = 0xC037001C + ERROR_VID_INVALID_PROCESSOR_STATE syscall.Errno = 0xC037001D + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT syscall.Errno = 0xC037001E + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED syscall.Errno = 0xC037001F + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET syscall.Errno = 0xC0370020 + ERROR_VID_MMIO_RANGE_DESTROYED syscall.Errno = 0xC0370021 + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET syscall.Errno = 0xC0370022 + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED syscall.Errno = 0xC0370023 + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL syscall.Errno = 0xC0370024 + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE syscall.Errno = 0xC0370025 + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT syscall.Errno = 0xC0370026 + ERROR_VID_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370027 + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM syscall.Errno = 0xC0370028 + ERROR_VID_SAVED_STATE_INCOMPATIBLE syscall.Errno = 0xC0370029 + ERROR_VID_VTL_ACCESS_DENIED syscall.Errno = 0xC037002A + ERROR_VMCOMPUTE_TERMINATED_DURING_START syscall.Errno = 0xC0370100 + ERROR_VMCOMPUTE_IMAGE_MISMATCH syscall.Errno = 0xC0370101 + ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED syscall.Errno = 0xC0370102 + ERROR_VMCOMPUTE_OPERATION_PENDING syscall.Errno = 0xC0370103 + ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS syscall.Errno = 0xC0370104 + ERROR_VMCOMPUTE_INVALID_STATE syscall.Errno = 0xC0370105 + ERROR_VMCOMPUTE_UNEXPECTED_EXIT syscall.Errno = 0xC0370106 + ERROR_VMCOMPUTE_TERMINATED syscall.Errno = 0xC0370107 + ERROR_VMCOMPUTE_CONNECT_FAILED syscall.Errno = 0xC0370108 + ERROR_VMCOMPUTE_TIMEOUT syscall.Errno = 0xC0370109 + ERROR_VMCOMPUTE_CONNECTION_CLOSED syscall.Errno = 0xC037010A + ERROR_VMCOMPUTE_UNKNOWN_MESSAGE syscall.Errno = 0xC037010B + ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION syscall.Errno = 0xC037010C + ERROR_VMCOMPUTE_INVALID_JSON syscall.Errno = 0xC037010D + ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND syscall.Errno = 0xC037010E + ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS syscall.Errno = 0xC037010F + ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED syscall.Errno = 0xC0370110 + ERROR_VMCOMPUTE_PROTOCOL_ERROR syscall.Errno = 0xC0370111 + ERROR_VMCOMPUTE_INVALID_LAYER syscall.Errno = 0xC0370112 + ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED syscall.Errno = 0xC0370113 + HCS_E_TERMINATED_DURING_START Handle = 0x80370100 + HCS_E_IMAGE_MISMATCH Handle = 0x80370101 + HCS_E_HYPERV_NOT_INSTALLED Handle = 0x80370102 + HCS_E_INVALID_STATE Handle = 0x80370105 + HCS_E_UNEXPECTED_EXIT Handle = 0x80370106 + HCS_E_TERMINATED Handle = 0x80370107 + HCS_E_CONNECT_FAILED Handle = 0x80370108 + HCS_E_CONNECTION_TIMEOUT Handle = 0x80370109 + HCS_E_CONNECTION_CLOSED Handle = 0x8037010A + HCS_E_UNKNOWN_MESSAGE Handle = 0x8037010B + HCS_E_UNSUPPORTED_PROTOCOL_VERSION Handle = 0x8037010C + HCS_E_INVALID_JSON Handle = 0x8037010D + HCS_E_SYSTEM_NOT_FOUND Handle = 0x8037010E + HCS_E_SYSTEM_ALREADY_EXISTS Handle = 0x8037010F + HCS_E_SYSTEM_ALREADY_STOPPED Handle = 0x80370110 + HCS_E_PROTOCOL_ERROR Handle = 0x80370111 + HCS_E_INVALID_LAYER Handle = 0x80370112 + HCS_E_WINDOWS_INSIDER_REQUIRED Handle = 0x80370113 + HCS_E_SERVICE_NOT_AVAILABLE Handle = 0x80370114 + HCS_E_OPERATION_NOT_STARTED Handle = 0x80370115 + HCS_E_OPERATION_ALREADY_STARTED Handle = 0x80370116 + HCS_E_OPERATION_PENDING Handle = 0x80370117 + HCS_E_OPERATION_TIMEOUT Handle = 0x80370118 + HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET Handle = 0x80370119 + HCS_E_OPERATION_RESULT_ALLOCATION_FAILED Handle = 0x8037011A + HCS_E_ACCESS_DENIED Handle = 0x8037011B + HCS_E_GUEST_CRITICAL_ERROR Handle = 0x8037011C + ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND syscall.Errno = 0xC0370200 + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED syscall.Errno = 0x80370001 + WHV_E_UNKNOWN_CAPABILITY Handle = 0x80370300 + WHV_E_INSUFFICIENT_BUFFER Handle = 0x80370301 + WHV_E_UNKNOWN_PROPERTY Handle = 0x80370302 + WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG Handle = 0x80370303 + WHV_E_INVALID_PARTITION_CONFIG Handle = 0x80370304 + WHV_E_GPA_RANGE_NOT_FOUND Handle = 0x80370305 + WHV_E_VP_ALREADY_EXISTS Handle = 0x80370306 + WHV_E_VP_DOES_NOT_EXIST Handle = 0x80370307 + WHV_E_INVALID_VP_STATE Handle = 0x80370308 + WHV_E_INVALID_VP_REGISTER_NAME Handle = 0x80370309 + ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND syscall.Errno = 0xC0370400 + ERROR_VSMB_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370401 + ERROR_VOLMGR_INCOMPLETE_REGENERATION syscall.Errno = 0x80380001 + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION syscall.Errno = 0x80380002 + ERROR_VOLMGR_DATABASE_FULL syscall.Errno = 0xC0380001 + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED syscall.Errno = 0xC0380002 + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC syscall.Errno = 0xC0380003 + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED syscall.Errno = 0xC0380004 + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME syscall.Errno = 0xC0380005 + ERROR_VOLMGR_DISK_DUPLICATE syscall.Errno = 0xC0380006 + ERROR_VOLMGR_DISK_DYNAMIC syscall.Errno = 0xC0380007 + ERROR_VOLMGR_DISK_ID_INVALID syscall.Errno = 0xC0380008 + ERROR_VOLMGR_DISK_INVALID syscall.Errno = 0xC0380009 + ERROR_VOLMGR_DISK_LAST_VOTER syscall.Errno = 0xC038000A + ERROR_VOLMGR_DISK_LAYOUT_INVALID syscall.Errno = 0xC038000B + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS syscall.Errno = 0xC038000C + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED syscall.Errno = 0xC038000D + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL syscall.Errno = 0xC038000E + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS syscall.Errno = 0xC038000F + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS syscall.Errno = 0xC0380010 + ERROR_VOLMGR_DISK_MISSING syscall.Errno = 0xC0380011 + ERROR_VOLMGR_DISK_NOT_EMPTY syscall.Errno = 0xC0380012 + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE syscall.Errno = 0xC0380013 + ERROR_VOLMGR_DISK_REVECTORING_FAILED syscall.Errno = 0xC0380014 + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID syscall.Errno = 0xC0380015 + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED syscall.Errno = 0xC0380016 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS syscall.Errno = 0xC0380017 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES syscall.Errno = 0xC0380018 + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED syscall.Errno = 0xC0380019 + ERROR_VOLMGR_EXTENT_ALREADY_USED syscall.Errno = 0xC038001A + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS syscall.Errno = 0xC038001B + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION syscall.Errno = 0xC038001C + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED syscall.Errno = 0xC038001D + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION syscall.Errno = 0xC038001E + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH syscall.Errno = 0xC038001F + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED syscall.Errno = 0xC0380020 + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID syscall.Errno = 0xC0380021 + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS syscall.Errno = 0xC0380022 + ERROR_VOLMGR_MEMBER_IN_SYNC syscall.Errno = 0xC0380023 + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE syscall.Errno = 0xC0380024 + ERROR_VOLMGR_MEMBER_INDEX_INVALID syscall.Errno = 0xC0380025 + ERROR_VOLMGR_MEMBER_MISSING syscall.Errno = 0xC0380026 + ERROR_VOLMGR_MEMBER_NOT_DETACHED syscall.Errno = 0xC0380027 + ERROR_VOLMGR_MEMBER_REGENERATING syscall.Errno = 0xC0380028 + ERROR_VOLMGR_ALL_DISKS_FAILED syscall.Errno = 0xC0380029 + ERROR_VOLMGR_NO_REGISTERED_USERS syscall.Errno = 0xC038002A + ERROR_VOLMGR_NO_SUCH_USER syscall.Errno = 0xC038002B + ERROR_VOLMGR_NOTIFICATION_RESET syscall.Errno = 0xC038002C + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID syscall.Errno = 0xC038002D + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID syscall.Errno = 0xC038002E + ERROR_VOLMGR_PACK_DUPLICATE syscall.Errno = 0xC038002F + ERROR_VOLMGR_PACK_ID_INVALID syscall.Errno = 0xC0380030 + ERROR_VOLMGR_PACK_INVALID syscall.Errno = 0xC0380031 + ERROR_VOLMGR_PACK_NAME_INVALID syscall.Errno = 0xC0380032 + ERROR_VOLMGR_PACK_OFFLINE syscall.Errno = 0xC0380033 + ERROR_VOLMGR_PACK_HAS_QUORUM syscall.Errno = 0xC0380034 + ERROR_VOLMGR_PACK_WITHOUT_QUORUM syscall.Errno = 0xC0380035 + ERROR_VOLMGR_PARTITION_STYLE_INVALID syscall.Errno = 0xC0380036 + ERROR_VOLMGR_PARTITION_UPDATE_FAILED syscall.Errno = 0xC0380037 + ERROR_VOLMGR_PLEX_IN_SYNC syscall.Errno = 0xC0380038 + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE syscall.Errno = 0xC0380039 + ERROR_VOLMGR_PLEX_INDEX_INVALID syscall.Errno = 0xC038003A + ERROR_VOLMGR_PLEX_LAST_ACTIVE syscall.Errno = 0xC038003B + ERROR_VOLMGR_PLEX_MISSING syscall.Errno = 0xC038003C + ERROR_VOLMGR_PLEX_REGENERATING syscall.Errno = 0xC038003D + ERROR_VOLMGR_PLEX_TYPE_INVALID syscall.Errno = 0xC038003E + ERROR_VOLMGR_PLEX_NOT_RAID5 syscall.Errno = 0xC038003F + ERROR_VOLMGR_PLEX_NOT_SIMPLE syscall.Errno = 0xC0380040 + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID syscall.Errno = 0xC0380041 + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS syscall.Errno = 0xC0380042 + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS syscall.Errno = 0xC0380043 + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE syscall.Errno = 0xC0380044 + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK syscall.Errno = 0xC0380045 + ERROR_VOLMGR_VOLUME_ID_INVALID syscall.Errno = 0xC0380046 + ERROR_VOLMGR_VOLUME_LENGTH_INVALID syscall.Errno = 0xC0380047 + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE syscall.Errno = 0xC0380048 + ERROR_VOLMGR_VOLUME_NOT_MIRRORED syscall.Errno = 0xC0380049 + ERROR_VOLMGR_VOLUME_NOT_RETAINED syscall.Errno = 0xC038004A + ERROR_VOLMGR_VOLUME_OFFLINE syscall.Errno = 0xC038004B + ERROR_VOLMGR_VOLUME_RETAINED syscall.Errno = 0xC038004C + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID syscall.Errno = 0xC038004D + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE syscall.Errno = 0xC038004E + ERROR_VOLMGR_BAD_BOOT_DISK syscall.Errno = 0xC038004F + ERROR_VOLMGR_PACK_CONFIG_OFFLINE syscall.Errno = 0xC0380050 + ERROR_VOLMGR_PACK_CONFIG_ONLINE syscall.Errno = 0xC0380051 + ERROR_VOLMGR_NOT_PRIMARY_PACK syscall.Errno = 0xC0380052 + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED syscall.Errno = 0xC0380053 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID syscall.Errno = 0xC0380054 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID syscall.Errno = 0xC0380055 + ERROR_VOLMGR_VOLUME_MIRRORED syscall.Errno = 0xC0380056 + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED syscall.Errno = 0xC0380057 + ERROR_VOLMGR_NO_VALID_LOG_COPIES syscall.Errno = 0xC0380058 + ERROR_VOLMGR_PRIMARY_PACK_PRESENT syscall.Errno = 0xC0380059 + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID syscall.Errno = 0xC038005A + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED syscall.Errno = 0xC038005B + ERROR_VOLMGR_RAID5_NOT_SUPPORTED syscall.Errno = 0xC038005C + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED syscall.Errno = 0x80390001 + ERROR_BCD_TOO_MANY_ELEMENTS syscall.Errno = 0xC0390002 + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED syscall.Errno = 0x80390003 + ERROR_VHD_DRIVE_FOOTER_MISSING syscall.Errno = 0xC03A0001 + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0002 + ERROR_VHD_DRIVE_FOOTER_CORRUPT syscall.Errno = 0xC03A0003 + ERROR_VHD_FORMAT_UNKNOWN syscall.Errno = 0xC03A0004 + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0005 + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0006 + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0007 + ERROR_VHD_SPARSE_HEADER_CORRUPT syscall.Errno = 0xC03A0008 + ERROR_VHD_BLOCK_ALLOCATION_FAILURE syscall.Errno = 0xC03A0009 + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT syscall.Errno = 0xC03A000A + ERROR_VHD_INVALID_BLOCK_SIZE syscall.Errno = 0xC03A000B + ERROR_VHD_BITMAP_MISMATCH syscall.Errno = 0xC03A000C + ERROR_VHD_PARENT_VHD_NOT_FOUND syscall.Errno = 0xC03A000D + ERROR_VHD_CHILD_PARENT_ID_MISMATCH syscall.Errno = 0xC03A000E + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH syscall.Errno = 0xC03A000F + ERROR_VHD_METADATA_READ_FAILURE syscall.Errno = 0xC03A0010 + ERROR_VHD_METADATA_WRITE_FAILURE syscall.Errno = 0xC03A0011 + ERROR_VHD_INVALID_SIZE syscall.Errno = 0xC03A0012 + ERROR_VHD_INVALID_FILE_SIZE syscall.Errno = 0xC03A0013 + ERROR_VIRTDISK_PROVIDER_NOT_FOUND syscall.Errno = 0xC03A0014 + ERROR_VIRTDISK_NOT_VIRTUAL_DISK syscall.Errno = 0xC03A0015 + ERROR_VHD_PARENT_VHD_ACCESS_DENIED syscall.Errno = 0xC03A0016 + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH syscall.Errno = 0xC03A0017 + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED syscall.Errno = 0xC03A0018 + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT syscall.Errno = 0xC03A0019 + ERROR_VIRTUAL_DISK_LIMITATION syscall.Errno = 0xC03A001A + ERROR_VHD_INVALID_TYPE syscall.Errno = 0xC03A001B + ERROR_VHD_INVALID_STATE syscall.Errno = 0xC03A001C + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE syscall.Errno = 0xC03A001D + ERROR_VIRTDISK_DISK_ALREADY_OWNED syscall.Errno = 0xC03A001E + ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE syscall.Errno = 0xC03A001F + ERROR_CTLOG_TRACKING_NOT_INITIALIZED syscall.Errno = 0xC03A0020 + ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE syscall.Errno = 0xC03A0021 + ERROR_CTLOG_VHD_CHANGED_OFFLINE syscall.Errno = 0xC03A0022 + ERROR_CTLOG_INVALID_TRACKING_STATE syscall.Errno = 0xC03A0023 + ERROR_CTLOG_INCONSISTENT_TRACKING_FILE syscall.Errno = 0xC03A0024 + ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA syscall.Errno = 0xC03A0025 + ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0026 + ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0027 + ERROR_VHD_METADATA_FULL syscall.Errno = 0xC03A0028 + ERROR_VHD_INVALID_CHANGE_TRACKING_ID syscall.Errno = 0xC03A0029 + ERROR_VHD_CHANGE_TRACKING_DISABLED syscall.Errno = 0xC03A002A + ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION syscall.Errno = 0xC03A0030 + ERROR_QUERY_STORAGE_ERROR syscall.Errno = 0x803A0001 + HCN_E_NETWORK_NOT_FOUND Handle = 0x803B0001 + HCN_E_ENDPOINT_NOT_FOUND Handle = 0x803B0002 + HCN_E_LAYER_NOT_FOUND Handle = 0x803B0003 + HCN_E_SWITCH_NOT_FOUND Handle = 0x803B0004 + HCN_E_SUBNET_NOT_FOUND Handle = 0x803B0005 + HCN_E_ADAPTER_NOT_FOUND Handle = 0x803B0006 + HCN_E_PORT_NOT_FOUND Handle = 0x803B0007 + HCN_E_POLICY_NOT_FOUND Handle = 0x803B0008 + HCN_E_VFP_PORTSETTING_NOT_FOUND Handle = 0x803B0009 + HCN_E_INVALID_NETWORK Handle = 0x803B000A + HCN_E_INVALID_NETWORK_TYPE Handle = 0x803B000B + HCN_E_INVALID_ENDPOINT Handle = 0x803B000C + HCN_E_INVALID_POLICY Handle = 0x803B000D + HCN_E_INVALID_POLICY_TYPE Handle = 0x803B000E + HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION Handle = 0x803B000F + HCN_E_NETWORK_ALREADY_EXISTS Handle = 0x803B0010 + HCN_E_LAYER_ALREADY_EXISTS Handle = 0x803B0011 + HCN_E_POLICY_ALREADY_EXISTS Handle = 0x803B0012 + HCN_E_PORT_ALREADY_EXISTS Handle = 0x803B0013 + HCN_E_ENDPOINT_ALREADY_ATTACHED Handle = 0x803B0014 + HCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0015 + HCN_E_MAPPING_NOT_SUPPORTED Handle = 0x803B0016 + HCN_E_DEGRADED_OPERATION Handle = 0x803B0017 + HCN_E_SHARED_SWITCH_MODIFICATION Handle = 0x803B0018 + HCN_E_GUID_CONVERSION_FAILURE Handle = 0x803B0019 + HCN_E_REGKEY_FAILURE Handle = 0x803B001A + HCN_E_INVALID_JSON Handle = 0x803B001B + HCN_E_INVALID_JSON_REFERENCE Handle = 0x803B001C + HCN_E_ENDPOINT_SHARING_DISABLED Handle = 0x803B001D + HCN_E_INVALID_IP Handle = 0x803B001E + HCN_E_SWITCH_EXTENSION_NOT_FOUND Handle = 0x803B001F + HCN_E_MANAGER_STOPPED Handle = 0x803B0020 + GCN_E_MODULE_NOT_FOUND Handle = 0x803B0021 + GCN_E_NO_REQUEST_HANDLERS Handle = 0x803B0022 + GCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0023 + GCN_E_RUNTIMEKEYS_FAILED Handle = 0x803B0024 + GCN_E_NETADAPTER_TIMEOUT Handle = 0x803B0025 + GCN_E_NETADAPTER_NOT_FOUND Handle = 0x803B0026 + GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027 + GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028 + GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029 + HCN_E_ICS_DISABLED Handle = 0x803B002A + HCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS Handle = 0x803B002B + HCN_E_ENTITY_HAS_REFERENCES Handle = 0x803B002C + HCN_E_INVALID_INTERNAL_PORT Handle = 0x803B002D + HCN_E_NAMESPACE_ATTACH_FAILED Handle = 0x803B002E + HCN_E_ADDR_INVALID_OR_RESERVED Handle = 0x803B002F + SDIAG_E_CANCELLED syscall.Errno = 0x803C0100 + SDIAG_E_SCRIPT syscall.Errno = 0x803C0101 + SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102 + SDIAG_E_MANAGEDHOST syscall.Errno = 0x803C0103 + SDIAG_E_NOVERIFIER syscall.Errno = 0x803C0104 + SDIAG_S_CANNOTRUN syscall.Errno = 0x003C0105 + SDIAG_E_DISABLED syscall.Errno = 0x803C0106 + SDIAG_E_TRUST syscall.Errno = 0x803C0107 + SDIAG_E_CANNOTRUN syscall.Errno = 0x803C0108 + SDIAG_E_VERSION syscall.Errno = 0x803C0109 + SDIAG_E_RESOURCE syscall.Errno = 0x803C010A + SDIAG_E_ROOTCAUSE syscall.Errno = 0x803C010B + WPN_E_CHANNEL_CLOSED Handle = 0x803E0100 + WPN_E_CHANNEL_REQUEST_NOT_COMPLETE Handle = 0x803E0101 + WPN_E_INVALID_APP Handle = 0x803E0102 + WPN_E_OUTSTANDING_CHANNEL_REQUEST Handle = 0x803E0103 + WPN_E_DUPLICATE_CHANNEL Handle = 0x803E0104 + WPN_E_PLATFORM_UNAVAILABLE Handle = 0x803E0105 + WPN_E_NOTIFICATION_POSTED Handle = 0x803E0106 + WPN_E_NOTIFICATION_HIDDEN Handle = 0x803E0107 + WPN_E_NOTIFICATION_NOT_POSTED Handle = 0x803E0108 + WPN_E_CLOUD_DISABLED Handle = 0x803E0109 + WPN_E_CLOUD_INCAPABLE Handle = 0x803E0110 + WPN_E_CLOUD_AUTH_UNAVAILABLE Handle = 0x803E011A + WPN_E_CLOUD_SERVICE_UNAVAILABLE Handle = 0x803E011B + WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION Handle = 0x803E011C + WPN_E_NOTIFICATION_DISABLED Handle = 0x803E0111 + WPN_E_NOTIFICATION_INCAPABLE Handle = 0x803E0112 + WPN_E_INTERNET_INCAPABLE Handle = 0x803E0113 + WPN_E_NOTIFICATION_TYPE_DISABLED Handle = 0x803E0114 + WPN_E_NOTIFICATION_SIZE Handle = 0x803E0115 + WPN_E_TAG_SIZE Handle = 0x803E0116 + WPN_E_ACCESS_DENIED Handle = 0x803E0117 + WPN_E_DUPLICATE_REGISTRATION Handle = 0x803E0118 + WPN_E_PUSH_NOTIFICATION_INCAPABLE Handle = 0x803E0119 + WPN_E_DEV_ID_SIZE Handle = 0x803E0120 + WPN_E_TAG_ALPHANUMERIC Handle = 0x803E012A + WPN_E_INVALID_HTTP_STATUS_CODE Handle = 0x803E012B + WPN_E_OUT_OF_SESSION Handle = 0x803E0200 + WPN_E_POWER_SAVE Handle = 0x803E0201 + WPN_E_IMAGE_NOT_FOUND_IN_CACHE Handle = 0x803E0202 + WPN_E_ALL_URL_NOT_COMPLETED Handle = 0x803E0203 + WPN_E_INVALID_CLOUD_IMAGE Handle = 0x803E0204 + WPN_E_NOTIFICATION_ID_MATCHED Handle = 0x803E0205 + WPN_E_CALLBACK_ALREADY_REGISTERED Handle = 0x803E0206 + WPN_E_TOAST_NOTIFICATION_DROPPED Handle = 0x803E0207 + WPN_E_STORAGE_LOCKED Handle = 0x803E0208 + WPN_E_GROUP_SIZE Handle = 0x803E0209 + WPN_E_GROUP_ALPHANUMERIC Handle = 0x803E020A + WPN_E_CLOUD_DISABLED_FOR_APP Handle = 0x803E020B + E_MBN_CONTEXT_NOT_ACTIVATED Handle = 0x80548201 + E_MBN_BAD_SIM Handle = 0x80548202 + E_MBN_DATA_CLASS_NOT_AVAILABLE Handle = 0x80548203 + E_MBN_INVALID_ACCESS_STRING Handle = 0x80548204 + E_MBN_MAX_ACTIVATED_CONTEXTS Handle = 0x80548205 + E_MBN_PACKET_SVC_DETACHED Handle = 0x80548206 + E_MBN_PROVIDER_NOT_VISIBLE Handle = 0x80548207 + E_MBN_RADIO_POWER_OFF Handle = 0x80548208 + E_MBN_SERVICE_NOT_ACTIVATED Handle = 0x80548209 + E_MBN_SIM_NOT_INSERTED Handle = 0x8054820A + E_MBN_VOICE_CALL_IN_PROGRESS Handle = 0x8054820B + E_MBN_INVALID_CACHE Handle = 0x8054820C + E_MBN_NOT_REGISTERED Handle = 0x8054820D + E_MBN_PROVIDERS_NOT_FOUND Handle = 0x8054820E + E_MBN_PIN_NOT_SUPPORTED Handle = 0x8054820F + E_MBN_PIN_REQUIRED Handle = 0x80548210 + E_MBN_PIN_DISABLED Handle = 0x80548211 + E_MBN_FAILURE Handle = 0x80548212 + E_MBN_INVALID_PROFILE Handle = 0x80548218 + E_MBN_DEFAULT_PROFILE_EXIST Handle = 0x80548219 + E_MBN_SMS_ENCODING_NOT_SUPPORTED Handle = 0x80548220 + E_MBN_SMS_FILTER_NOT_SUPPORTED Handle = 0x80548221 + E_MBN_SMS_INVALID_MEMORY_INDEX Handle = 0x80548222 + E_MBN_SMS_LANG_NOT_SUPPORTED Handle = 0x80548223 + E_MBN_SMS_MEMORY_FAILURE Handle = 0x80548224 + E_MBN_SMS_NETWORK_TIMEOUT Handle = 0x80548225 + E_MBN_SMS_UNKNOWN_SMSC_ADDRESS Handle = 0x80548226 + E_MBN_SMS_FORMAT_NOT_SUPPORTED Handle = 0x80548227 + E_MBN_SMS_OPERATION_NOT_ALLOWED Handle = 0x80548228 + E_MBN_SMS_MEMORY_FULL Handle = 0x80548229 + PEER_E_IPV6_NOT_INSTALLED Handle = 0x80630001 + PEER_E_NOT_INITIALIZED Handle = 0x80630002 + PEER_E_CANNOT_START_SERVICE Handle = 0x80630003 + PEER_E_NOT_LICENSED Handle = 0x80630004 + PEER_E_INVALID_GRAPH Handle = 0x80630010 + PEER_E_DBNAME_CHANGED Handle = 0x80630011 + PEER_E_DUPLICATE_GRAPH Handle = 0x80630012 + PEER_E_GRAPH_NOT_READY Handle = 0x80630013 + PEER_E_GRAPH_SHUTTING_DOWN Handle = 0x80630014 + PEER_E_GRAPH_IN_USE Handle = 0x80630015 + PEER_E_INVALID_DATABASE Handle = 0x80630016 + PEER_E_TOO_MANY_ATTRIBUTES Handle = 0x80630017 + PEER_E_CONNECTION_NOT_FOUND Handle = 0x80630103 + PEER_E_CONNECT_SELF Handle = 0x80630106 + PEER_E_ALREADY_LISTENING Handle = 0x80630107 + PEER_E_NODE_NOT_FOUND Handle = 0x80630108 + PEER_E_CONNECTION_FAILED Handle = 0x80630109 + PEER_E_CONNECTION_NOT_AUTHENTICATED Handle = 0x8063010A + PEER_E_CONNECTION_REFUSED Handle = 0x8063010B + PEER_E_CLASSIFIER_TOO_LONG Handle = 0x80630201 + PEER_E_TOO_MANY_IDENTITIES Handle = 0x80630202 + PEER_E_NO_KEY_ACCESS Handle = 0x80630203 + PEER_E_GROUPS_EXIST Handle = 0x80630204 + PEER_E_RECORD_NOT_FOUND Handle = 0x80630301 + PEER_E_DATABASE_ACCESSDENIED Handle = 0x80630302 + PEER_E_DBINITIALIZATION_FAILED Handle = 0x80630303 + PEER_E_MAX_RECORD_SIZE_EXCEEDED Handle = 0x80630304 + PEER_E_DATABASE_ALREADY_PRESENT Handle = 0x80630305 + PEER_E_DATABASE_NOT_PRESENT Handle = 0x80630306 + PEER_E_IDENTITY_NOT_FOUND Handle = 0x80630401 + PEER_E_EVENT_HANDLE_NOT_FOUND Handle = 0x80630501 + PEER_E_INVALID_SEARCH Handle = 0x80630601 + PEER_E_INVALID_ATTRIBUTES Handle = 0x80630602 + PEER_E_INVITATION_NOT_TRUSTED Handle = 0x80630701 + PEER_E_CHAIN_TOO_LONG Handle = 0x80630703 + PEER_E_INVALID_TIME_PERIOD Handle = 0x80630705 + PEER_E_CIRCULAR_CHAIN_DETECTED Handle = 0x80630706 + PEER_E_CERT_STORE_CORRUPTED Handle = 0x80630801 + PEER_E_NO_CLOUD Handle = 0x80631001 + PEER_E_CLOUD_NAME_AMBIGUOUS Handle = 0x80631005 + PEER_E_INVALID_RECORD Handle = 0x80632010 + PEER_E_NOT_AUTHORIZED Handle = 0x80632020 + PEER_E_PASSWORD_DOES_NOT_MEET_POLICY Handle = 0x80632021 + PEER_E_DEFERRED_VALIDATION Handle = 0x80632030 + PEER_E_INVALID_GROUP_PROPERTIES Handle = 0x80632040 + PEER_E_INVALID_PEER_NAME Handle = 0x80632050 + PEER_E_INVALID_CLASSIFIER Handle = 0x80632060 + PEER_E_INVALID_FRIENDLY_NAME Handle = 0x80632070 + PEER_E_INVALID_ROLE_PROPERTY Handle = 0x80632071 + PEER_E_INVALID_CLASSIFIER_PROPERTY Handle = 0x80632072 + PEER_E_INVALID_RECORD_EXPIRATION Handle = 0x80632080 + PEER_E_INVALID_CREDENTIAL_INFO Handle = 0x80632081 + PEER_E_INVALID_CREDENTIAL Handle = 0x80632082 + PEER_E_INVALID_RECORD_SIZE Handle = 0x80632083 + PEER_E_UNSUPPORTED_VERSION Handle = 0x80632090 + PEER_E_GROUP_NOT_READY Handle = 0x80632091 + PEER_E_GROUP_IN_USE Handle = 0x80632092 + PEER_E_INVALID_GROUP Handle = 0x80632093 + PEER_E_NO_MEMBERS_FOUND Handle = 0x80632094 + PEER_E_NO_MEMBER_CONNECTIONS Handle = 0x80632095 + PEER_E_UNABLE_TO_LISTEN Handle = 0x80632096 + PEER_E_IDENTITY_DELETED Handle = 0x806320A0 + PEER_E_SERVICE_NOT_AVAILABLE Handle = 0x806320A1 + PEER_E_CONTACT_NOT_FOUND Handle = 0x80636001 + PEER_S_GRAPH_DATA_CREATED Handle = 0x00630001 + PEER_S_NO_EVENT_DATA Handle = 0x00630002 + PEER_S_ALREADY_CONNECTED Handle = 0x00632000 + PEER_S_SUBSCRIPTION_EXISTS Handle = 0x00636000 + PEER_S_NO_CONNECTIVITY Handle = 0x00630005 + PEER_S_ALREADY_A_MEMBER Handle = 0x00630006 + PEER_E_CANNOT_CONVERT_PEER_NAME Handle = 0x80634001 + PEER_E_INVALID_PEER_HOST_NAME Handle = 0x80634002 + PEER_E_NO_MORE Handle = 0x80634003 + PEER_E_PNRP_DUPLICATE_PEER_NAME Handle = 0x80634005 + PEER_E_INVITE_CANCELLED Handle = 0x80637000 + PEER_E_INVITE_RESPONSE_NOT_AVAILABLE Handle = 0x80637001 + PEER_E_NOT_SIGNED_IN Handle = 0x80637003 + PEER_E_PRIVACY_DECLINED Handle = 0x80637004 + PEER_E_TIMEOUT Handle = 0x80637005 + PEER_E_INVALID_ADDRESS Handle = 0x80637007 + PEER_E_FW_EXCEPTION_DISABLED Handle = 0x80637008 + PEER_E_FW_BLOCKED_BY_POLICY Handle = 0x80637009 + PEER_E_FW_BLOCKED_BY_SHIELDS_UP Handle = 0x8063700A + PEER_E_FW_DECLINED Handle = 0x8063700B + UI_E_CREATE_FAILED Handle = 0x802A0001 + UI_E_SHUTDOWN_CALLED Handle = 0x802A0002 + UI_E_ILLEGAL_REENTRANCY Handle = 0x802A0003 + UI_E_OBJECT_SEALED Handle = 0x802A0004 + UI_E_VALUE_NOT_SET Handle = 0x802A0005 + UI_E_VALUE_NOT_DETERMINED Handle = 0x802A0006 + UI_E_INVALID_OUTPUT Handle = 0x802A0007 + UI_E_BOOLEAN_EXPECTED Handle = 0x802A0008 + UI_E_DIFFERENT_OWNER Handle = 0x802A0009 + UI_E_AMBIGUOUS_MATCH Handle = 0x802A000A + UI_E_FP_OVERFLOW Handle = 0x802A000B + UI_E_WRONG_THREAD Handle = 0x802A000C + UI_E_STORYBOARD_ACTIVE Handle = 0x802A0101 + UI_E_STORYBOARD_NOT_PLAYING Handle = 0x802A0102 + UI_E_START_KEYFRAME_AFTER_END Handle = 0x802A0103 + UI_E_END_KEYFRAME_NOT_DETERMINED Handle = 0x802A0104 + UI_E_LOOPS_OVERLAP Handle = 0x802A0105 + UI_E_TRANSITION_ALREADY_USED Handle = 0x802A0106 + UI_E_TRANSITION_NOT_IN_STORYBOARD Handle = 0x802A0107 + UI_E_TRANSITION_ECLIPSED Handle = 0x802A0108 + UI_E_TIME_BEFORE_LAST_UPDATE Handle = 0x802A0109 + UI_E_TIMER_CLIENT_ALREADY_CONNECTED Handle = 0x802A010A + UI_E_INVALID_DIMENSION Handle = 0x802A010B + UI_E_PRIMITIVE_OUT_OF_BOUNDS Handle = 0x802A010C + UI_E_WINDOW_CLOSED Handle = 0x802A0201 + E_BLUETOOTH_ATT_INVALID_HANDLE Handle = 0x80650001 + E_BLUETOOTH_ATT_READ_NOT_PERMITTED Handle = 0x80650002 + E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED Handle = 0x80650003 + E_BLUETOOTH_ATT_INVALID_PDU Handle = 0x80650004 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION Handle = 0x80650005 + E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED Handle = 0x80650006 + E_BLUETOOTH_ATT_INVALID_OFFSET Handle = 0x80650007 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION Handle = 0x80650008 + E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL Handle = 0x80650009 + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND Handle = 0x8065000A + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG Handle = 0x8065000B + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE Handle = 0x8065000C + E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH Handle = 0x8065000D + E_BLUETOOTH_ATT_UNLIKELY Handle = 0x8065000E + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION Handle = 0x8065000F + E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE Handle = 0x80650010 + E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES Handle = 0x80650011 + E_BLUETOOTH_ATT_UNKNOWN_ERROR Handle = 0x80651000 + E_AUDIO_ENGINE_NODE_NOT_FOUND Handle = 0x80660001 + E_HDAUDIO_EMPTY_CONNECTION_LIST Handle = 0x80660002 + E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED Handle = 0x80660003 + E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED Handle = 0x80660004 + E_HDAUDIO_NULL_LINKED_LIST_ENTRY Handle = 0x80660005 + STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE Handle = 0x80670001 + STATEREPOSITORY_E_STATEMENT_INPROGRESS Handle = 0x80670002 + STATEREPOSITORY_E_CONFIGURATION_INVALID Handle = 0x80670003 + STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION Handle = 0x80670004 + STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED Handle = 0x80670005 + STATEREPOSITORY_E_BLOCKED Handle = 0x80670006 + STATEREPOSITORY_E_BUSY_RETRY Handle = 0x80670007 + STATEREPOSITORY_E_BUSY_RECOVERY_RETRY Handle = 0x80670008 + STATEREPOSITORY_E_LOCKED_RETRY Handle = 0x80670009 + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY Handle = 0x8067000A + STATEREPOSITORY_E_TRANSACTION_REQUIRED Handle = 0x8067000B + STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED Handle = 0x8067000C + STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED Handle = 0x8067000D + STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED Handle = 0x8067000E + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED Handle = 0x8067000F + STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS Handle = 0x80670010 + STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED Handle = 0x80670011 + STATEREPOSITORY_ERROR_CACHE_CORRUPTED Handle = 0x80670012 + STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED Handle = 0x00670013 + STATEREPOSITORY_TRANSACTION_IN_PROGRESS Handle = 0x00670014 + ERROR_SPACES_POOL_WAS_DELETED Handle = 0x00E70001 + ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID Handle = 0x80E70001 + ERROR_SPACES_INTERNAL_ERROR Handle = 0x80E70002 + ERROR_SPACES_RESILIENCY_TYPE_INVALID Handle = 0x80E70003 + ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID Handle = 0x80E70004 + ERROR_SPACES_DRIVE_REDUNDANCY_INVALID Handle = 0x80E70006 + ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID Handle = 0x80E70007 + ERROR_SPACES_PARITY_LAYOUT_INVALID Handle = 0x80E70008 + ERROR_SPACES_INTERLEAVE_LENGTH_INVALID Handle = 0x80E70009 + ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID Handle = 0x80E7000A + ERROR_SPACES_NOT_ENOUGH_DRIVES Handle = 0x80E7000B + ERROR_SPACES_EXTENDED_ERROR Handle = 0x80E7000C + ERROR_SPACES_PROVISIONING_TYPE_INVALID Handle = 0x80E7000D + ERROR_SPACES_ALLOCATION_SIZE_INVALID Handle = 0x80E7000E + ERROR_SPACES_ENCLOSURE_AWARE_INVALID Handle = 0x80E7000F + ERROR_SPACES_WRITE_CACHE_SIZE_INVALID Handle = 0x80E70010 + ERROR_SPACES_NUMBER_OF_GROUPS_INVALID Handle = 0x80E70011 + ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID Handle = 0x80E70012 + ERROR_SPACES_ENTRY_INCOMPLETE Handle = 0x80E70013 + ERROR_SPACES_ENTRY_INVALID Handle = 0x80E70014 + ERROR_VOLSNAP_BOOTFILE_NOT_VALID Handle = 0x80820001 + ERROR_VOLSNAP_ACTIVATION_TIMEOUT Handle = 0x80820002 + ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME Handle = 0x80830001 + ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS Handle = 0x80830002 + ERROR_TIERING_STORAGE_TIER_NOT_FOUND Handle = 0x80830003 + ERROR_TIERING_INVALID_FILE_ID Handle = 0x80830004 + ERROR_TIERING_WRONG_CLUSTER_NODE Handle = 0x80830005 + ERROR_TIERING_ALREADY_PROCESSING Handle = 0x80830006 + ERROR_TIERING_CANNOT_PIN_OBJECT Handle = 0x80830007 + ERROR_TIERING_FILE_IS_NOT_PINNED Handle = 0x80830008 + ERROR_NOT_A_TIERED_VOLUME Handle = 0x80830009 + ERROR_ATTRIBUTE_NOT_PRESENT Handle = 0x8083000A + ERROR_SECCORE_INVALID_COMMAND Handle = 0xC0E80000 + ERROR_NO_APPLICABLE_APP_LICENSES_FOUND Handle = 0xC0EA0001 + ERROR_CLIP_LICENSE_NOT_FOUND Handle = 0xC0EA0002 + ERROR_CLIP_DEVICE_LICENSE_MISSING Handle = 0xC0EA0003 + ERROR_CLIP_LICENSE_INVALID_SIGNATURE Handle = 0xC0EA0004 + ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID Handle = 0xC0EA0005 + ERROR_CLIP_LICENSE_EXPIRED Handle = 0xC0EA0006 + ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE Handle = 0xC0EA0007 + ERROR_CLIP_LICENSE_NOT_SIGNED Handle = 0xC0EA0008 + ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE Handle = 0xC0EA0009 + ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH Handle = 0xC0EA000A + DXGI_STATUS_OCCLUDED Handle = 0x087A0001 + DXGI_STATUS_CLIPPED Handle = 0x087A0002 + DXGI_STATUS_NO_REDIRECTION Handle = 0x087A0004 + DXGI_STATUS_NO_DESKTOP_ACCESS Handle = 0x087A0005 + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x087A0006 + DXGI_STATUS_MODE_CHANGED Handle = 0x087A0007 + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS Handle = 0x087A0008 + DXGI_ERROR_INVALID_CALL Handle = 0x887A0001 + DXGI_ERROR_NOT_FOUND Handle = 0x887A0002 + DXGI_ERROR_MORE_DATA Handle = 0x887A0003 + DXGI_ERROR_UNSUPPORTED Handle = 0x887A0004 + DXGI_ERROR_DEVICE_REMOVED Handle = 0x887A0005 + DXGI_ERROR_DEVICE_HUNG Handle = 0x887A0006 + DXGI_ERROR_DEVICE_RESET Handle = 0x887A0007 + DXGI_ERROR_WAS_STILL_DRAWING Handle = 0x887A000A + DXGI_ERROR_FRAME_STATISTICS_DISJOINT Handle = 0x887A000B + DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x887A000C + DXGI_ERROR_DRIVER_INTERNAL_ERROR Handle = 0x887A0020 + DXGI_ERROR_NONEXCLUSIVE Handle = 0x887A0021 + DXGI_ERROR_NOT_CURRENTLY_AVAILABLE Handle = 0x887A0022 + DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED Handle = 0x887A0023 + DXGI_ERROR_REMOTE_OUTOFMEMORY Handle = 0x887A0024 + DXGI_ERROR_ACCESS_LOST Handle = 0x887A0026 + DXGI_ERROR_WAIT_TIMEOUT Handle = 0x887A0027 + DXGI_ERROR_SESSION_DISCONNECTED Handle = 0x887A0028 + DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE Handle = 0x887A0029 + DXGI_ERROR_CANNOT_PROTECT_CONTENT Handle = 0x887A002A + DXGI_ERROR_ACCESS_DENIED Handle = 0x887A002B + DXGI_ERROR_NAME_ALREADY_EXISTS Handle = 0x887A002C + DXGI_ERROR_SDK_COMPONENT_MISSING Handle = 0x887A002D + DXGI_ERROR_NOT_CURRENT Handle = 0x887A002E + DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY Handle = 0x887A0030 + DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION Handle = 0x887A0031 + DXGI_ERROR_NON_COMPOSITED_UI Handle = 0x887A0032 + DXGI_STATUS_UNOCCLUDED Handle = 0x087A0009 + DXGI_STATUS_DDA_WAS_STILL_DRAWING Handle = 0x087A000A + DXGI_ERROR_MODE_CHANGE_IN_PROGRESS Handle = 0x887A0025 + DXGI_STATUS_PRESENT_REQUIRED Handle = 0x087A002F + DXGI_ERROR_CACHE_CORRUPT Handle = 0x887A0033 + DXGI_ERROR_CACHE_FULL Handle = 0x887A0034 + DXGI_ERROR_CACHE_HASH_COLLISION Handle = 0x887A0035 + DXGI_ERROR_ALREADY_EXISTS Handle = 0x887A0036 + DXGI_DDI_ERR_WASSTILLDRAWING Handle = 0x887B0001 + DXGI_DDI_ERR_UNSUPPORTED Handle = 0x887B0002 + DXGI_DDI_ERR_NONEXCLUSIVE Handle = 0x887B0003 + D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x88790001 + D3D10_ERROR_FILE_NOT_FOUND Handle = 0x88790002 + D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x887C0001 + D3D11_ERROR_FILE_NOT_FOUND Handle = 0x887C0002 + D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS Handle = 0x887C0003 + D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD Handle = 0x887C0004 + D3D12_ERROR_ADAPTER_NOT_FOUND Handle = 0x887E0001 + D3D12_ERROR_DRIVER_VERSION_MISMATCH Handle = 0x887E0002 + D2DERR_WRONG_STATE Handle = 0x88990001 + D2DERR_NOT_INITIALIZED Handle = 0x88990002 + D2DERR_UNSUPPORTED_OPERATION Handle = 0x88990003 + D2DERR_SCANNER_FAILED Handle = 0x88990004 + D2DERR_SCREEN_ACCESS_DENIED Handle = 0x88990005 + D2DERR_DISPLAY_STATE_INVALID Handle = 0x88990006 + D2DERR_ZERO_VECTOR Handle = 0x88990007 + D2DERR_INTERNAL_ERROR Handle = 0x88990008 + D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED Handle = 0x88990009 + D2DERR_INVALID_CALL Handle = 0x8899000A + D2DERR_NO_HARDWARE_DEVICE Handle = 0x8899000B + D2DERR_RECREATE_TARGET Handle = 0x8899000C + D2DERR_TOO_MANY_SHADER_ELEMENTS Handle = 0x8899000D + D2DERR_SHADER_COMPILE_FAILED Handle = 0x8899000E + D2DERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8899000F + D2DERR_UNSUPPORTED_VERSION Handle = 0x88990010 + D2DERR_BAD_NUMBER Handle = 0x88990011 + D2DERR_WRONG_FACTORY Handle = 0x88990012 + D2DERR_LAYER_ALREADY_IN_USE Handle = 0x88990013 + D2DERR_POP_CALL_DID_NOT_MATCH_PUSH Handle = 0x88990014 + D2DERR_WRONG_RESOURCE_DOMAIN Handle = 0x88990015 + D2DERR_PUSH_POP_UNBALANCED Handle = 0x88990016 + D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT Handle = 0x88990017 + D2DERR_INCOMPATIBLE_BRUSH_TYPES Handle = 0x88990018 + D2DERR_WIN32_ERROR Handle = 0x88990019 + D2DERR_TARGET_NOT_GDI_COMPATIBLE Handle = 0x8899001A + D2DERR_TEXT_EFFECT_IS_WRONG_TYPE Handle = 0x8899001B + D2DERR_TEXT_RENDERER_NOT_RELEASED Handle = 0x8899001C + D2DERR_EXCEEDS_MAX_BITMAP_SIZE Handle = 0x8899001D + D2DERR_INVALID_GRAPH_CONFIGURATION Handle = 0x8899001E + D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION Handle = 0x8899001F + D2DERR_CYCLIC_GRAPH Handle = 0x88990020 + D2DERR_BITMAP_CANNOT_DRAW Handle = 0x88990021 + D2DERR_OUTSTANDING_BITMAP_REFERENCES Handle = 0x88990022 + D2DERR_ORIGINAL_TARGET_NOT_BOUND Handle = 0x88990023 + D2DERR_INVALID_TARGET Handle = 0x88990024 + D2DERR_BITMAP_BOUND_AS_TARGET Handle = 0x88990025 + D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES Handle = 0x88990026 + D2DERR_INTERMEDIATE_TOO_LARGE Handle = 0x88990027 + D2DERR_EFFECT_IS_NOT_REGISTERED Handle = 0x88990028 + D2DERR_INVALID_PROPERTY Handle = 0x88990029 + D2DERR_NO_SUBPROPERTIES Handle = 0x8899002A + D2DERR_PRINT_JOB_CLOSED Handle = 0x8899002B + D2DERR_PRINT_FORMAT_NOT_SUPPORTED Handle = 0x8899002C + D2DERR_TOO_MANY_TRANSFORM_INPUTS Handle = 0x8899002D + D2DERR_INVALID_GLYPH_IMAGE Handle = 0x8899002E + DWRITE_E_FILEFORMAT Handle = 0x88985000 + DWRITE_E_UNEXPECTED Handle = 0x88985001 + DWRITE_E_NOFONT Handle = 0x88985002 + DWRITE_E_FILENOTFOUND Handle = 0x88985003 + DWRITE_E_FILEACCESS Handle = 0x88985004 + DWRITE_E_FONTCOLLECTIONOBSOLETE Handle = 0x88985005 + DWRITE_E_ALREADYREGISTERED Handle = 0x88985006 + DWRITE_E_CACHEFORMAT Handle = 0x88985007 + DWRITE_E_CACHEVERSION Handle = 0x88985008 + DWRITE_E_UNSUPPORTEDOPERATION Handle = 0x88985009 + DWRITE_E_TEXTRENDERERINCOMPATIBLE Handle = 0x8898500A + DWRITE_E_FLOWDIRECTIONCONFLICTS Handle = 0x8898500B + DWRITE_E_NOCOLOR Handle = 0x8898500C + DWRITE_E_REMOTEFONT Handle = 0x8898500D + DWRITE_E_DOWNLOADCANCELLED Handle = 0x8898500E + DWRITE_E_DOWNLOADFAILED Handle = 0x8898500F + DWRITE_E_TOOMANYDOWNLOADS Handle = 0x88985010 + WINCODEC_ERR_WRONGSTATE Handle = 0x88982F04 + WINCODEC_ERR_VALUEOUTOFRANGE Handle = 0x88982F05 + WINCODEC_ERR_UNKNOWNIMAGEFORMAT Handle = 0x88982F07 + WINCODEC_ERR_UNSUPPORTEDVERSION Handle = 0x88982F0B + WINCODEC_ERR_NOTINITIALIZED Handle = 0x88982F0C + WINCODEC_ERR_ALREADYLOCKED Handle = 0x88982F0D + WINCODEC_ERR_PROPERTYNOTFOUND Handle = 0x88982F40 + WINCODEC_ERR_PROPERTYNOTSUPPORTED Handle = 0x88982F41 + WINCODEC_ERR_PROPERTYSIZE Handle = 0x88982F42 + WINCODEC_ERR_CODECPRESENT Handle = 0x88982F43 + WINCODEC_ERR_CODECNOTHUMBNAIL Handle = 0x88982F44 + WINCODEC_ERR_PALETTEUNAVAILABLE Handle = 0x88982F45 + WINCODEC_ERR_CODECTOOMANYSCANLINES Handle = 0x88982F46 + WINCODEC_ERR_INTERNALERROR Handle = 0x88982F48 + WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS Handle = 0x88982F49 + WINCODEC_ERR_COMPONENTNOTFOUND Handle = 0x88982F50 + WINCODEC_ERR_IMAGESIZEOUTOFRANGE Handle = 0x88982F51 + WINCODEC_ERR_TOOMUCHMETADATA Handle = 0x88982F52 + WINCODEC_ERR_BADIMAGE Handle = 0x88982F60 + WINCODEC_ERR_BADHEADER Handle = 0x88982F61 + WINCODEC_ERR_FRAMEMISSING Handle = 0x88982F62 + WINCODEC_ERR_BADMETADATAHEADER Handle = 0x88982F63 + WINCODEC_ERR_BADSTREAMDATA Handle = 0x88982F70 + WINCODEC_ERR_STREAMWRITE Handle = 0x88982F71 + WINCODEC_ERR_STREAMREAD Handle = 0x88982F72 + WINCODEC_ERR_STREAMNOTAVAILABLE Handle = 0x88982F73 + WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT Handle = 0x88982F80 + WINCODEC_ERR_UNSUPPORTEDOPERATION Handle = 0x88982F81 + WINCODEC_ERR_INVALIDREGISTRATION Handle = 0x88982F8A + WINCODEC_ERR_COMPONENTINITIALIZEFAILURE Handle = 0x88982F8B + WINCODEC_ERR_INSUFFICIENTBUFFER Handle = 0x88982F8C + WINCODEC_ERR_DUPLICATEMETADATAPRESENT Handle = 0x88982F8D + WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE Handle = 0x88982F8E + WINCODEC_ERR_UNEXPECTEDSIZE Handle = 0x88982F8F + WINCODEC_ERR_INVALIDQUERYREQUEST Handle = 0x88982F90 + WINCODEC_ERR_UNEXPECTEDMETADATATYPE Handle = 0x88982F91 + WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT Handle = 0x88982F92 + WINCODEC_ERR_INVALIDQUERYCHARACTER Handle = 0x88982F93 + WINCODEC_ERR_WIN32ERROR Handle = 0x88982F94 + WINCODEC_ERR_INVALIDPROGRESSIVELEVEL Handle = 0x88982F95 + WINCODEC_ERR_INVALIDJPEGSCANINDEX Handle = 0x88982F96 + MILERR_OBJECTBUSY Handle = 0x88980001 + MILERR_INSUFFICIENTBUFFER Handle = 0x88980002 + MILERR_WIN32ERROR Handle = 0x88980003 + MILERR_SCANNER_FAILED Handle = 0x88980004 + MILERR_SCREENACCESSDENIED Handle = 0x88980005 + MILERR_DISPLAYSTATEINVALID Handle = 0x88980006 + MILERR_NONINVERTIBLEMATRIX Handle = 0x88980007 + MILERR_ZEROVECTOR Handle = 0x88980008 + MILERR_TERMINATED Handle = 0x88980009 + MILERR_BADNUMBER Handle = 0x8898000A + MILERR_INTERNALERROR Handle = 0x88980080 + MILERR_DISPLAYFORMATNOTSUPPORTED Handle = 0x88980084 + MILERR_INVALIDCALL Handle = 0x88980085 + MILERR_ALREADYLOCKED Handle = 0x88980086 + MILERR_NOTLOCKED Handle = 0x88980087 + MILERR_DEVICECANNOTRENDERTEXT Handle = 0x88980088 + MILERR_GLYPHBITMAPMISSED Handle = 0x88980089 + MILERR_MALFORMEDGLYPHCACHE Handle = 0x8898008A + MILERR_GENERIC_IGNORE Handle = 0x8898008B + MILERR_MALFORMED_GUIDELINE_DATA Handle = 0x8898008C + MILERR_NO_HARDWARE_DEVICE Handle = 0x8898008D + MILERR_NEED_RECREATE_AND_PRESENT Handle = 0x8898008E + MILERR_ALREADY_INITIALIZED Handle = 0x8898008F + MILERR_MISMATCHED_SIZE Handle = 0x88980090 + MILERR_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x88980091 + MILERR_REMOTING_NOT_SUPPORTED Handle = 0x88980092 + MILERR_QUEUED_PRESENT_NOT_SUPPORTED Handle = 0x88980093 + MILERR_NOT_QUEUING_PRESENTS Handle = 0x88980094 + MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER Handle = 0x88980095 + MILERR_TOOMANYSHADERELEMNTS Handle = 0x88980096 + MILERR_MROW_READLOCK_FAILED Handle = 0x88980097 + MILERR_MROW_UPDATE_FAILED Handle = 0x88980098 + MILERR_SHADER_COMPILE_FAILED Handle = 0x88980099 + MILERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8898009A + MILERR_QPC_TIME_WENT_BACKWARD Handle = 0x8898009B + MILERR_DXGI_ENUMERATION_OUT_OF_SYNC Handle = 0x8898009D + MILERR_ADAPTER_NOT_FOUND Handle = 0x8898009E + MILERR_COLORSPACE_NOT_SUPPORTED Handle = 0x8898009F + MILERR_PREFILTER_NOT_SUPPORTED Handle = 0x889800A0 + MILERR_DISPLAYID_ACCESS_DENIED Handle = 0x889800A1 + UCEERR_INVALIDPACKETHEADER Handle = 0x88980400 + UCEERR_UNKNOWNPACKET Handle = 0x88980401 + UCEERR_ILLEGALPACKET Handle = 0x88980402 + UCEERR_MALFORMEDPACKET Handle = 0x88980403 + UCEERR_ILLEGALHANDLE Handle = 0x88980404 + UCEERR_HANDLELOOKUPFAILED Handle = 0x88980405 + UCEERR_RENDERTHREADFAILURE Handle = 0x88980406 + UCEERR_CTXSTACKFRSTTARGETNULL Handle = 0x88980407 + UCEERR_CONNECTIONIDLOOKUPFAILED Handle = 0x88980408 + UCEERR_BLOCKSFULL Handle = 0x88980409 + UCEERR_MEMORYFAILURE Handle = 0x8898040A + UCEERR_PACKETRECORDOUTOFRANGE Handle = 0x8898040B + UCEERR_ILLEGALRECORDTYPE Handle = 0x8898040C + UCEERR_OUTOFHANDLES Handle = 0x8898040D + UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED Handle = 0x8898040E + UCEERR_NO_MULTIPLE_WORKER_THREADS Handle = 0x8898040F + UCEERR_REMOTINGNOTSUPPORTED Handle = 0x88980410 + UCEERR_MISSINGENDCOMMAND Handle = 0x88980411 + UCEERR_MISSINGBEGINCOMMAND Handle = 0x88980412 + UCEERR_CHANNELSYNCTIMEDOUT Handle = 0x88980413 + UCEERR_CHANNELSYNCABANDONED Handle = 0x88980414 + UCEERR_UNSUPPORTEDTRANSPORTVERSION Handle = 0x88980415 + UCEERR_TRANSPORTUNAVAILABLE Handle = 0x88980416 + UCEERR_FEEDBACK_UNSUPPORTED Handle = 0x88980417 + UCEERR_COMMANDTRANSPORTDENIED Handle = 0x88980418 + UCEERR_GRAPHICSSTREAMUNAVAILABLE Handle = 0x88980419 + UCEERR_GRAPHICSSTREAMALREADYOPEN Handle = 0x88980420 + UCEERR_TRANSPORTDISCONNECTED Handle = 0x88980421 + UCEERR_TRANSPORTOVERLOADED Handle = 0x88980422 + UCEERR_PARTITION_ZOMBIED Handle = 0x88980423 + MILAVERR_NOCLOCK Handle = 0x88980500 + MILAVERR_NOMEDIATYPE Handle = 0x88980501 + MILAVERR_NOVIDEOMIXER Handle = 0x88980502 + MILAVERR_NOVIDEOPRESENTER Handle = 0x88980503 + MILAVERR_NOREADYFRAMES Handle = 0x88980504 + MILAVERR_MODULENOTLOADED Handle = 0x88980505 + MILAVERR_WMPFACTORYNOTREGISTERED Handle = 0x88980506 + MILAVERR_INVALIDWMPVERSION Handle = 0x88980507 + MILAVERR_INSUFFICIENTVIDEORESOURCES Handle = 0x88980508 + MILAVERR_VIDEOACCELERATIONNOTAVAILABLE Handle = 0x88980509 + MILAVERR_REQUESTEDTEXTURETOOBIG Handle = 0x8898050A + MILAVERR_SEEKFAILED Handle = 0x8898050B + MILAVERR_UNEXPECTEDWMPFAILURE Handle = 0x8898050C + MILAVERR_MEDIAPLAYERCLOSED Handle = 0x8898050D + MILAVERR_UNKNOWNHARDWAREERROR Handle = 0x8898050E + MILEFFECTSERR_UNKNOWNPROPERTY Handle = 0x8898060E + MILEFFECTSERR_EFFECTNOTPARTOFGROUP Handle = 0x8898060F + MILEFFECTSERR_NOINPUTSOURCEATTACHED Handle = 0x88980610 + MILEFFECTSERR_CONNECTORNOTCONNECTED Handle = 0x88980611 + MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT Handle = 0x88980612 + MILEFFECTSERR_RESERVED Handle = 0x88980613 + MILEFFECTSERR_CYCLEDETECTED Handle = 0x88980614 + MILEFFECTSERR_EFFECTINMORETHANONEGRAPH Handle = 0x88980615 + MILEFFECTSERR_EFFECTALREADYINAGRAPH Handle = 0x88980616 + MILEFFECTSERR_EFFECTHASNOCHILDREN Handle = 0x88980617 + MILEFFECTSERR_ALREADYATTACHEDTOLISTENER Handle = 0x88980618 + MILEFFECTSERR_NOTAFFINETRANSFORM Handle = 0x88980619 + MILEFFECTSERR_EMPTYBOUNDS Handle = 0x8898061A + MILEFFECTSERR_OUTPUTSIZETOOLARGE Handle = 0x8898061B + DWMERR_STATE_TRANSITION_FAILED Handle = 0x88980700 + DWMERR_THEME_FAILED Handle = 0x88980701 + DWMERR_CATASTROPHIC_FAILURE Handle = 0x88980702 + DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED Handle = 0x88980800 + DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED Handle = 0x88980801 + DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED Handle = 0x88980802 + ONL_E_INVALID_AUTHENTICATION_TARGET Handle = 0x80860001 + ONL_E_ACCESS_DENIED_BY_TOU Handle = 0x80860002 + ONL_E_INVALID_APPLICATION Handle = 0x80860003 + ONL_E_PASSWORD_UPDATE_REQUIRED Handle = 0x80860004 + ONL_E_ACCOUNT_UPDATE_REQUIRED Handle = 0x80860005 + ONL_E_FORCESIGNIN Handle = 0x80860006 + ONL_E_ACCOUNT_LOCKED Handle = 0x80860007 + ONL_E_PARENTAL_CONSENT_REQUIRED Handle = 0x80860008 + ONL_E_EMAIL_VERIFICATION_REQUIRED Handle = 0x80860009 + ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE Handle = 0x8086000A + ONL_E_ACCOUNT_SUSPENDED_ABUSE Handle = 0x8086000B + ONL_E_ACTION_REQUIRED Handle = 0x8086000C + ONL_CONNECTION_COUNT_LIMIT Handle = 0x8086000D + ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT Handle = 0x8086000E + ONL_E_USER_AUTHENTICATION_REQUIRED Handle = 0x8086000F + ONL_E_REQUEST_THROTTLED Handle = 0x80860010 + FA_E_MAX_PERSISTED_ITEMS_REACHED Handle = 0x80270220 + FA_E_HOMEGROUP_NOT_AVAILABLE Handle = 0x80270222 + E_MONITOR_RESOLUTION_TOO_LOW Handle = 0x80270250 + E_ELEVATED_ACTIVATION_NOT_SUPPORTED Handle = 0x80270251 + E_UAC_DISABLED Handle = 0x80270252 + E_FULL_ADMIN_NOT_SUPPORTED Handle = 0x80270253 + E_APPLICATION_NOT_REGISTERED Handle = 0x80270254 + E_MULTIPLE_EXTENSIONS_FOR_APPLICATION Handle = 0x80270255 + E_MULTIPLE_PACKAGES_FOR_FAMILY Handle = 0x80270256 + E_APPLICATION_MANAGER_NOT_RUNNING Handle = 0x80270257 + S_STORE_LAUNCHED_FOR_REMEDIATION Handle = 0x00270258 + S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG Handle = 0x00270259 + E_APPLICATION_ACTIVATION_TIMED_OUT Handle = 0x8027025A + E_APPLICATION_ACTIVATION_EXEC_FAILURE Handle = 0x8027025B + E_APPLICATION_TEMPORARY_LICENSE_ERROR Handle = 0x8027025C + E_APPLICATION_TRIAL_LICENSE_EXPIRED Handle = 0x8027025D + E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED Handle = 0x80270260 + E_SKYDRIVE_ROOT_TARGET_OVERLAP Handle = 0x80270261 + E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX Handle = 0x80270262 + E_SKYDRIVE_FILE_NOT_UPLOADED Handle = 0x80270263 + E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL Handle = 0x80270264 + E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED Handle = 0x80270265 + E_SYNCENGINE_FILE_SIZE_OVER_LIMIT Handle = 0x8802B001 + E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA Handle = 0x8802B002 + E_SYNCENGINE_UNSUPPORTED_FILE_NAME Handle = 0x8802B003 + E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED Handle = 0x8802B004 + E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR Handle = 0x8802B005 + E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE Handle = 0x8802B006 + E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN Handle = 0x8802C002 + E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED Handle = 0x8802C003 + E_SYNCENGINE_UNKNOWN_SERVICE_ERROR Handle = 0x8802C004 + E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE Handle = 0x8802C005 + E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE Handle = 0x8802C006 + E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR Handle = 0x8802C007 + E_SYNCENGINE_FOLDER_INACCESSIBLE Handle = 0x8802D001 + E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME Handle = 0x8802D002 + E_SYNCENGINE_UNSUPPORTED_MARKET Handle = 0x8802D003 + E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D004 + E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D005 + E_SYNCENGINE_CLIENT_UPDATE_NEEDED Handle = 0x8802D006 + E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED Handle = 0x8802D007 + E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED Handle = 0x8802D008 + E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT Handle = 0x8802D009 + E_SYNCENGINE_STORAGE_SERVICE_BLOCKED Handle = 0x8802D00A + E_SYNCENGINE_FOLDER_IN_REDIRECTION Handle = 0x8802D00B + EAS_E_POLICY_NOT_MANAGED_BY_OS Handle = 0x80550001 + EAS_E_POLICY_COMPLIANT_WITH_ACTIONS Handle = 0x80550002 + EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE Handle = 0x80550003 + EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD Handle = 0x80550004 + EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE Handle = 0x80550005 + EAS_E_USER_CANNOT_CHANGE_PASSWORD Handle = 0x80550006 + EAS_E_ADMINS_HAVE_BLANK_PASSWORD Handle = 0x80550007 + EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD Handle = 0x80550008 + EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD Handle = 0x80550009 + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS Handle = 0x8055000A + EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000B + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER Handle = 0x8055000C + EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000D + WEB_E_UNSUPPORTED_FORMAT Handle = 0x83750001 + WEB_E_INVALID_XML Handle = 0x83750002 + WEB_E_MISSING_REQUIRED_ELEMENT Handle = 0x83750003 + WEB_E_MISSING_REQUIRED_ATTRIBUTE Handle = 0x83750004 + WEB_E_UNEXPECTED_CONTENT Handle = 0x83750005 + WEB_E_RESOURCE_TOO_LARGE Handle = 0x83750006 + WEB_E_INVALID_JSON_STRING Handle = 0x83750007 + WEB_E_INVALID_JSON_NUMBER Handle = 0x83750008 + WEB_E_JSON_VALUE_NOT_FOUND Handle = 0x83750009 + HTTP_E_STATUS_UNEXPECTED Handle = 0x80190001 + HTTP_E_STATUS_UNEXPECTED_REDIRECTION Handle = 0x80190003 + HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR Handle = 0x80190004 + HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR Handle = 0x80190005 + HTTP_E_STATUS_AMBIGUOUS Handle = 0x8019012C + HTTP_E_STATUS_MOVED Handle = 0x8019012D + HTTP_E_STATUS_REDIRECT Handle = 0x8019012E + HTTP_E_STATUS_REDIRECT_METHOD Handle = 0x8019012F + HTTP_E_STATUS_NOT_MODIFIED Handle = 0x80190130 + HTTP_E_STATUS_USE_PROXY Handle = 0x80190131 + HTTP_E_STATUS_REDIRECT_KEEP_VERB Handle = 0x80190133 + HTTP_E_STATUS_BAD_REQUEST Handle = 0x80190190 + HTTP_E_STATUS_DENIED Handle = 0x80190191 + HTTP_E_STATUS_PAYMENT_REQ Handle = 0x80190192 + HTTP_E_STATUS_FORBIDDEN Handle = 0x80190193 + HTTP_E_STATUS_NOT_FOUND Handle = 0x80190194 + HTTP_E_STATUS_BAD_METHOD Handle = 0x80190195 + HTTP_E_STATUS_NONE_ACCEPTABLE Handle = 0x80190196 + HTTP_E_STATUS_PROXY_AUTH_REQ Handle = 0x80190197 + HTTP_E_STATUS_REQUEST_TIMEOUT Handle = 0x80190198 + HTTP_E_STATUS_CONFLICT Handle = 0x80190199 + HTTP_E_STATUS_GONE Handle = 0x8019019A + HTTP_E_STATUS_LENGTH_REQUIRED Handle = 0x8019019B + HTTP_E_STATUS_PRECOND_FAILED Handle = 0x8019019C + HTTP_E_STATUS_REQUEST_TOO_LARGE Handle = 0x8019019D + HTTP_E_STATUS_URI_TOO_LONG Handle = 0x8019019E + HTTP_E_STATUS_UNSUPPORTED_MEDIA Handle = 0x8019019F + HTTP_E_STATUS_RANGE_NOT_SATISFIABLE Handle = 0x801901A0 + HTTP_E_STATUS_EXPECTATION_FAILED Handle = 0x801901A1 + HTTP_E_STATUS_SERVER_ERROR Handle = 0x801901F4 + HTTP_E_STATUS_NOT_SUPPORTED Handle = 0x801901F5 + HTTP_E_STATUS_BAD_GATEWAY Handle = 0x801901F6 + HTTP_E_STATUS_SERVICE_UNAVAIL Handle = 0x801901F7 + HTTP_E_STATUS_GATEWAY_TIMEOUT Handle = 0x801901F8 + HTTP_E_STATUS_VERSION_NOT_SUP Handle = 0x801901F9 + E_INVALID_PROTOCOL_OPERATION Handle = 0x83760001 + E_INVALID_PROTOCOL_FORMAT Handle = 0x83760002 + E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED Handle = 0x83760003 + E_SUBPROTOCOL_NOT_SUPPORTED Handle = 0x83760004 + E_PROTOCOL_VERSION_NOT_SUPPORTED Handle = 0x83760005 + INPUT_E_OUT_OF_ORDER Handle = 0x80400000 + INPUT_E_REENTRANCY Handle = 0x80400001 + INPUT_E_MULTIMODAL Handle = 0x80400002 + INPUT_E_PACKET Handle = 0x80400003 + INPUT_E_FRAME Handle = 0x80400004 + INPUT_E_HISTORY Handle = 0x80400005 + INPUT_E_DEVICE_INFO Handle = 0x80400006 + INPUT_E_TRANSFORM Handle = 0x80400007 + INPUT_E_DEVICE_PROPERTY Handle = 0x80400008 + INET_E_INVALID_URL Handle = 0x800C0002 + INET_E_NO_SESSION Handle = 0x800C0003 + INET_E_CANNOT_CONNECT Handle = 0x800C0004 + INET_E_RESOURCE_NOT_FOUND Handle = 0x800C0005 + INET_E_OBJECT_NOT_FOUND Handle = 0x800C0006 + INET_E_DATA_NOT_AVAILABLE Handle = 0x800C0007 + INET_E_DOWNLOAD_FAILURE Handle = 0x800C0008 + INET_E_AUTHENTICATION_REQUIRED Handle = 0x800C0009 + INET_E_NO_VALID_MEDIA Handle = 0x800C000A + INET_E_CONNECTION_TIMEOUT Handle = 0x800C000B + INET_E_INVALID_REQUEST Handle = 0x800C000C + INET_E_UNKNOWN_PROTOCOL Handle = 0x800C000D + INET_E_SECURITY_PROBLEM Handle = 0x800C000E + INET_E_CANNOT_LOAD_DATA Handle = 0x800C000F + INET_E_CANNOT_INSTANTIATE_OBJECT Handle = 0x800C0010 + INET_E_INVALID_CERTIFICATE Handle = 0x800C0019 + INET_E_REDIRECT_FAILED Handle = 0x800C0014 + INET_E_REDIRECT_TO_DIR Handle = 0x800C0015 + ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00001 + ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00002 + ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00003 + ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00004 + ERROR_IO_PREEMPTED Handle = 0x89010001 + JSCRIPT_E_CANTEXECUTE Handle = 0x89020001 + WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x88010001 + WEP_E_FIXED_DATA_NOT_SUPPORTED Handle = 0x88010002 + WEP_E_HARDWARE_NOT_COMPLIANT Handle = 0x88010003 + WEP_E_LOCK_NOT_CONFIGURED Handle = 0x88010004 + WEP_E_PROTECTION_SUSPENDED Handle = 0x88010005 + WEP_E_NO_LICENSE Handle = 0x88010006 + WEP_E_OS_NOT_PROTECTED Handle = 0x88010007 + WEP_E_UNEXPECTED_FAIL Handle = 0x88010008 + WEP_E_BUFFER_TOO_LARGE Handle = 0x88010009 + ERROR_SVHDX_ERROR_STORED Handle = 0xC05C0000 + ERROR_SVHDX_ERROR_NOT_AVAILABLE Handle = 0xC05CFF00 + ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE Handle = 0xC05CFF01 + ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED Handle = 0xC05CFF02 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED Handle = 0xC05CFF03 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED Handle = 0xC05CFF04 + ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED Handle = 0xC05CFF05 + ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED Handle = 0xC05CFF06 + ERROR_SVHDX_RESERVATION_CONFLICT Handle = 0xC05CFF07 + ERROR_SVHDX_WRONG_FILE_TYPE Handle = 0xC05CFF08 + ERROR_SVHDX_VERSION_MISMATCH Handle = 0xC05CFF09 + ERROR_VHD_SHARED Handle = 0xC05CFF0A + ERROR_SVHDX_NO_INITIATOR Handle = 0xC05CFF0B + ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND Handle = 0xC05CFF0C + ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP Handle = 0xC05D0000 + ERROR_SMB_BAD_CLUSTER_DIALECT Handle = 0xC05D0001 + WININET_E_OUT_OF_HANDLES Handle = 0x80072EE1 + WININET_E_TIMEOUT Handle = 0x80072EE2 + WININET_E_EXTENDED_ERROR Handle = 0x80072EE3 + WININET_E_INTERNAL_ERROR Handle = 0x80072EE4 + WININET_E_INVALID_URL Handle = 0x80072EE5 + WININET_E_UNRECOGNIZED_SCHEME Handle = 0x80072EE6 + WININET_E_NAME_NOT_RESOLVED Handle = 0x80072EE7 + WININET_E_PROTOCOL_NOT_FOUND Handle = 0x80072EE8 + WININET_E_INVALID_OPTION Handle = 0x80072EE9 + WININET_E_BAD_OPTION_LENGTH Handle = 0x80072EEA + WININET_E_OPTION_NOT_SETTABLE Handle = 0x80072EEB + WININET_E_SHUTDOWN Handle = 0x80072EEC + WININET_E_INCORRECT_USER_NAME Handle = 0x80072EED + WININET_E_INCORRECT_PASSWORD Handle = 0x80072EEE + WININET_E_LOGIN_FAILURE Handle = 0x80072EEF + WININET_E_INVALID_OPERATION Handle = 0x80072EF0 + WININET_E_OPERATION_CANCELLED Handle = 0x80072EF1 + WININET_E_INCORRECT_HANDLE_TYPE Handle = 0x80072EF2 + WININET_E_INCORRECT_HANDLE_STATE Handle = 0x80072EF3 + WININET_E_NOT_PROXY_REQUEST Handle = 0x80072EF4 + WININET_E_REGISTRY_VALUE_NOT_FOUND Handle = 0x80072EF5 + WININET_E_BAD_REGISTRY_PARAMETER Handle = 0x80072EF6 + WININET_E_NO_DIRECT_ACCESS Handle = 0x80072EF7 + WININET_E_NO_CONTEXT Handle = 0x80072EF8 + WININET_E_NO_CALLBACK Handle = 0x80072EF9 + WININET_E_REQUEST_PENDING Handle = 0x80072EFA + WININET_E_INCORRECT_FORMAT Handle = 0x80072EFB + WININET_E_ITEM_NOT_FOUND Handle = 0x80072EFC + WININET_E_CANNOT_CONNECT Handle = 0x80072EFD + WININET_E_CONNECTION_ABORTED Handle = 0x80072EFE + WININET_E_CONNECTION_RESET Handle = 0x80072EFF + WININET_E_FORCE_RETRY Handle = 0x80072F00 + WININET_E_INVALID_PROXY_REQUEST Handle = 0x80072F01 + WININET_E_NEED_UI Handle = 0x80072F02 + WININET_E_HANDLE_EXISTS Handle = 0x80072F04 + WININET_E_SEC_CERT_DATE_INVALID Handle = 0x80072F05 + WININET_E_SEC_CERT_CN_INVALID Handle = 0x80072F06 + WININET_E_HTTP_TO_HTTPS_ON_REDIR Handle = 0x80072F07 + WININET_E_HTTPS_TO_HTTP_ON_REDIR Handle = 0x80072F08 + WININET_E_MIXED_SECURITY Handle = 0x80072F09 + WININET_E_CHG_POST_IS_NON_SECURE Handle = 0x80072F0A + WININET_E_POST_IS_NON_SECURE Handle = 0x80072F0B + WININET_E_CLIENT_AUTH_CERT_NEEDED Handle = 0x80072F0C + WININET_E_INVALID_CA Handle = 0x80072F0D + WININET_E_CLIENT_AUTH_NOT_SETUP Handle = 0x80072F0E + WININET_E_ASYNC_THREAD_FAILED Handle = 0x80072F0F + WININET_E_REDIRECT_SCHEME_CHANGE Handle = 0x80072F10 + WININET_E_DIALOG_PENDING Handle = 0x80072F11 + WININET_E_RETRY_DIALOG Handle = 0x80072F12 + WININET_E_NO_NEW_CONTAINERS Handle = 0x80072F13 + WININET_E_HTTPS_HTTP_SUBMIT_REDIR Handle = 0x80072F14 + WININET_E_SEC_CERT_ERRORS Handle = 0x80072F17 + WININET_E_SEC_CERT_REV_FAILED Handle = 0x80072F19 + WININET_E_HEADER_NOT_FOUND Handle = 0x80072F76 + WININET_E_DOWNLEVEL_SERVER Handle = 0x80072F77 + WININET_E_INVALID_SERVER_RESPONSE Handle = 0x80072F78 + WININET_E_INVALID_HEADER Handle = 0x80072F79 + WININET_E_INVALID_QUERY_REQUEST Handle = 0x80072F7A + WININET_E_HEADER_ALREADY_EXISTS Handle = 0x80072F7B + WININET_E_REDIRECT_FAILED Handle = 0x80072F7C + WININET_E_SECURITY_CHANNEL_ERROR Handle = 0x80072F7D + WININET_E_UNABLE_TO_CACHE_FILE Handle = 0x80072F7E + WININET_E_TCPIP_NOT_INSTALLED Handle = 0x80072F7F + WININET_E_DISCONNECTED Handle = 0x80072F83 + WININET_E_SERVER_UNREACHABLE Handle = 0x80072F84 + WININET_E_PROXY_SERVER_UNREACHABLE Handle = 0x80072F85 + WININET_E_BAD_AUTO_PROXY_SCRIPT Handle = 0x80072F86 + WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT Handle = 0x80072F87 + WININET_E_SEC_INVALID_CERT Handle = 0x80072F89 + WININET_E_SEC_CERT_REVOKED Handle = 0x80072F8A + WININET_E_FAILED_DUETOSECURITYCHECK Handle = 0x80072F8B + WININET_E_NOT_INITIALIZED Handle = 0x80072F8C + WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY Handle = 0x80072F8E + WININET_E_DECODING_FAILED Handle = 0x80072F8F + WININET_E_NOT_REDIRECTED Handle = 0x80072F80 + WININET_E_COOKIE_NEEDS_CONFIRMATION Handle = 0x80072F81 + WININET_E_COOKIE_DECLINED Handle = 0x80072F82 + WININET_E_REDIRECT_NEEDS_CONFIRMATION Handle = 0x80072F88 + SQLITE_E_ERROR Handle = 0x87AF0001 + SQLITE_E_INTERNAL Handle = 0x87AF0002 + SQLITE_E_PERM Handle = 0x87AF0003 + SQLITE_E_ABORT Handle = 0x87AF0004 + SQLITE_E_BUSY Handle = 0x87AF0005 + SQLITE_E_LOCKED Handle = 0x87AF0006 + SQLITE_E_NOMEM Handle = 0x87AF0007 + SQLITE_E_READONLY Handle = 0x87AF0008 + SQLITE_E_INTERRUPT Handle = 0x87AF0009 + SQLITE_E_IOERR Handle = 0x87AF000A + SQLITE_E_CORRUPT Handle = 0x87AF000B + SQLITE_E_NOTFOUND Handle = 0x87AF000C + SQLITE_E_FULL Handle = 0x87AF000D + SQLITE_E_CANTOPEN Handle = 0x87AF000E + SQLITE_E_PROTOCOL Handle = 0x87AF000F + SQLITE_E_EMPTY Handle = 0x87AF0010 + SQLITE_E_SCHEMA Handle = 0x87AF0011 + SQLITE_E_TOOBIG Handle = 0x87AF0012 + SQLITE_E_CONSTRAINT Handle = 0x87AF0013 + SQLITE_E_MISMATCH Handle = 0x87AF0014 + SQLITE_E_MISUSE Handle = 0x87AF0015 + SQLITE_E_NOLFS Handle = 0x87AF0016 + SQLITE_E_AUTH Handle = 0x87AF0017 + SQLITE_E_FORMAT Handle = 0x87AF0018 + SQLITE_E_RANGE Handle = 0x87AF0019 + SQLITE_E_NOTADB Handle = 0x87AF001A + SQLITE_E_NOTICE Handle = 0x87AF001B + SQLITE_E_WARNING Handle = 0x87AF001C + SQLITE_E_ROW Handle = 0x87AF0064 + SQLITE_E_DONE Handle = 0x87AF0065 + SQLITE_E_IOERR_READ Handle = 0x87AF010A + SQLITE_E_IOERR_SHORT_READ Handle = 0x87AF020A + SQLITE_E_IOERR_WRITE Handle = 0x87AF030A + SQLITE_E_IOERR_FSYNC Handle = 0x87AF040A + SQLITE_E_IOERR_DIR_FSYNC Handle = 0x87AF050A + SQLITE_E_IOERR_TRUNCATE Handle = 0x87AF060A + SQLITE_E_IOERR_FSTAT Handle = 0x87AF070A + SQLITE_E_IOERR_UNLOCK Handle = 0x87AF080A + SQLITE_E_IOERR_RDLOCK Handle = 0x87AF090A + SQLITE_E_IOERR_DELETE Handle = 0x87AF0A0A + SQLITE_E_IOERR_BLOCKED Handle = 0x87AF0B0A + SQLITE_E_IOERR_NOMEM Handle = 0x87AF0C0A + SQLITE_E_IOERR_ACCESS Handle = 0x87AF0D0A + SQLITE_E_IOERR_CHECKRESERVEDLOCK Handle = 0x87AF0E0A + SQLITE_E_IOERR_LOCK Handle = 0x87AF0F0A + SQLITE_E_IOERR_CLOSE Handle = 0x87AF100A + SQLITE_E_IOERR_DIR_CLOSE Handle = 0x87AF110A + SQLITE_E_IOERR_SHMOPEN Handle = 0x87AF120A + SQLITE_E_IOERR_SHMSIZE Handle = 0x87AF130A + SQLITE_E_IOERR_SHMLOCK Handle = 0x87AF140A + SQLITE_E_IOERR_SHMMAP Handle = 0x87AF150A + SQLITE_E_IOERR_SEEK Handle = 0x87AF160A + SQLITE_E_IOERR_DELETE_NOENT Handle = 0x87AF170A + SQLITE_E_IOERR_MMAP Handle = 0x87AF180A + SQLITE_E_IOERR_GETTEMPPATH Handle = 0x87AF190A + SQLITE_E_IOERR_CONVPATH Handle = 0x87AF1A0A + SQLITE_E_IOERR_VNODE Handle = 0x87AF1A02 + SQLITE_E_IOERR_AUTH Handle = 0x87AF1A03 + SQLITE_E_LOCKED_SHAREDCACHE Handle = 0x87AF0106 + SQLITE_E_BUSY_RECOVERY Handle = 0x87AF0105 + SQLITE_E_BUSY_SNAPSHOT Handle = 0x87AF0205 + SQLITE_E_CANTOPEN_NOTEMPDIR Handle = 0x87AF010E + SQLITE_E_CANTOPEN_ISDIR Handle = 0x87AF020E + SQLITE_E_CANTOPEN_FULLPATH Handle = 0x87AF030E + SQLITE_E_CANTOPEN_CONVPATH Handle = 0x87AF040E + SQLITE_E_CORRUPT_VTAB Handle = 0x87AF010B + SQLITE_E_READONLY_RECOVERY Handle = 0x87AF0108 + SQLITE_E_READONLY_CANTLOCK Handle = 0x87AF0208 + SQLITE_E_READONLY_ROLLBACK Handle = 0x87AF0308 + SQLITE_E_READONLY_DBMOVED Handle = 0x87AF0408 + SQLITE_E_ABORT_ROLLBACK Handle = 0x87AF0204 + SQLITE_E_CONSTRAINT_CHECK Handle = 0x87AF0113 + SQLITE_E_CONSTRAINT_COMMITHOOK Handle = 0x87AF0213 + SQLITE_E_CONSTRAINT_FOREIGNKEY Handle = 0x87AF0313 + SQLITE_E_CONSTRAINT_FUNCTION Handle = 0x87AF0413 + SQLITE_E_CONSTRAINT_NOTNULL Handle = 0x87AF0513 + SQLITE_E_CONSTRAINT_PRIMARYKEY Handle = 0x87AF0613 + SQLITE_E_CONSTRAINT_TRIGGER Handle = 0x87AF0713 + SQLITE_E_CONSTRAINT_UNIQUE Handle = 0x87AF0813 + SQLITE_E_CONSTRAINT_VTAB Handle = 0x87AF0913 + SQLITE_E_CONSTRAINT_ROWID Handle = 0x87AF0A13 + SQLITE_E_NOTICE_RECOVER_WAL Handle = 0x87AF011B + SQLITE_E_NOTICE_RECOVER_ROLLBACK Handle = 0x87AF021B + SQLITE_E_WARNING_AUTOINDEX Handle = 0x87AF011C + UTC_E_TOGGLE_TRACE_STARTED Handle = 0x87C51001 + UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT Handle = 0x87C51002 + UTC_E_AOT_NOT_RUNNING Handle = 0x87C51003 + UTC_E_SCRIPT_TYPE_INVALID Handle = 0x87C51004 + UTC_E_SCENARIODEF_NOT_FOUND Handle = 0x87C51005 + UTC_E_TRACEPROFILE_NOT_FOUND Handle = 0x87C51006 + UTC_E_FORWARDER_ALREADY_ENABLED Handle = 0x87C51007 + UTC_E_FORWARDER_ALREADY_DISABLED Handle = 0x87C51008 + UTC_E_EVENTLOG_ENTRY_MALFORMED Handle = 0x87C51009 + UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH Handle = 0x87C5100A + UTC_E_SCRIPT_TERMINATED Handle = 0x87C5100B + UTC_E_INVALID_CUSTOM_FILTER Handle = 0x87C5100C + UTC_E_TRACE_NOT_RUNNING Handle = 0x87C5100D + UTC_E_REESCALATED_TOO_QUICKLY Handle = 0x87C5100E + UTC_E_ESCALATION_ALREADY_RUNNING Handle = 0x87C5100F + UTC_E_PERFTRACK_ALREADY_TRACING Handle = 0x87C51010 + UTC_E_REACHED_MAX_ESCALATIONS Handle = 0x87C51011 + UTC_E_FORWARDER_PRODUCER_MISMATCH Handle = 0x87C51012 + UTC_E_INTENTIONAL_SCRIPT_FAILURE Handle = 0x87C51013 + UTC_E_SQM_INIT_FAILED Handle = 0x87C51014 + UTC_E_NO_WER_LOGGER_SUPPORTED Handle = 0x87C51015 + UTC_E_TRACERS_DONT_EXIST Handle = 0x87C51016 + UTC_E_WINRT_INIT_FAILED Handle = 0x87C51017 + UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH Handle = 0x87C51018 + UTC_E_INVALID_FILTER Handle = 0x87C51019 + UTC_E_EXE_TERMINATED Handle = 0x87C5101A + UTC_E_ESCALATION_NOT_AUTHORIZED Handle = 0x87C5101B + UTC_E_SETUP_NOT_AUTHORIZED Handle = 0x87C5101C + UTC_E_CHILD_PROCESS_FAILED Handle = 0x87C5101D + UTC_E_COMMAND_LINE_NOT_AUTHORIZED Handle = 0x87C5101E + UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML Handle = 0x87C5101F + UTC_E_ESCALATION_TIMED_OUT Handle = 0x87C51020 + UTC_E_SETUP_TIMED_OUT Handle = 0x87C51021 + UTC_E_TRIGGER_MISMATCH Handle = 0x87C51022 + UTC_E_TRIGGER_NOT_FOUND Handle = 0x87C51023 + UTC_E_SIF_NOT_SUPPORTED Handle = 0x87C51024 + UTC_E_DELAY_TERMINATED Handle = 0x87C51025 + UTC_E_DEVICE_TICKET_ERROR Handle = 0x87C51026 + UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED Handle = 0x87C51027 + UTC_E_API_RESULT_UNAVAILABLE Handle = 0x87C51028 + UTC_E_RPC_TIMEOUT Handle = 0x87C51029 + UTC_E_RPC_WAIT_FAILED Handle = 0x87C5102A + UTC_E_API_BUSY Handle = 0x87C5102B + UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET Handle = 0x87C5102C + UTC_E_EXCLUSIVITY_NOT_AVAILABLE Handle = 0x87C5102D + UTC_E_GETFILE_FILE_PATH_NOT_APPROVED Handle = 0x87C5102E + UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS Handle = 0x87C5102F + UTC_E_TIME_TRIGGER_ON_START_INVALID Handle = 0x87C51030 + UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION Handle = 0x87C51031 + UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE Handle = 0x87C51032 + UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE Handle = 0x87C51033 + UTC_E_BINARY_MISSING Handle = 0x87C51034 + UTC_E_NETWORK_CAPTURE_NOT_ALLOWED Handle = 0x87C51035 + UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID Handle = 0x87C51036 + UTC_E_UNABLE_TO_RESOLVE_SESSION Handle = 0x87C51037 + UTC_E_THROTTLED Handle = 0x87C51038 + UTC_E_UNAPPROVED_SCRIPT Handle = 0x87C51039 + UTC_E_SCRIPT_MISSING Handle = 0x87C5103A + UTC_E_SCENARIO_THROTTLED Handle = 0x87C5103B + UTC_E_API_NOT_SUPPORTED Handle = 0x87C5103C + UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED Handle = 0x87C5103D + UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED Handle = 0x87C5103E + UTC_E_CERT_REV_FAILED Handle = 0x87C5103F + UTC_E_FAILED_TO_START_NDISCAP Handle = 0x87C51040 + UTC_E_KERNELDUMP_LIMIT_REACHED Handle = 0x87C51041 + UTC_E_MISSING_AGGREGATE_EVENT_TAG Handle = 0x87C51042 + UTC_E_INVALID_AGGREGATION_STRUCT Handle = 0x87C51043 + UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION Handle = 0x87C51044 + UTC_E_FILTER_MISSING_ATTRIBUTE Handle = 0x87C51045 + UTC_E_FILTER_INVALID_TYPE Handle = 0x87C51046 + UTC_E_FILTER_VARIABLE_NOT_FOUND Handle = 0x87C51047 + UTC_E_FILTER_FUNCTION_RESTRICTED Handle = 0x87C51048 + UTC_E_FILTER_VERSION_MISMATCH Handle = 0x87C51049 + UTC_E_FILTER_INVALID_FUNCTION Handle = 0x87C51050 + UTC_E_FILTER_INVALID_FUNCTION_PARAMS Handle = 0x87C51051 + UTC_E_FILTER_INVALID_COMMAND Handle = 0x87C51052 + UTC_E_FILTER_ILLEGAL_EVAL Handle = 0x87C51053 + UTC_E_TTTRACER_RETURNED_ERROR Handle = 0x87C51054 + UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE Handle = 0x87C51055 + UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS Handle = 0x87C51056 + UTC_E_SCENARIO_HAS_NO_ACTIONS Handle = 0x87C51057 + UTC_E_TTTRACER_STORAGE_FULL Handle = 0x87C51058 + UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059 + UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A + UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B + UTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED Handle = 0x87C5105C + WINML_ERR_INVALID_DEVICE Handle = 0x88900001 + WINML_ERR_INVALID_BINDING Handle = 0x88900002 + WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003 + WINML_ERR_SIZE_MISMATCH Handle = 0x88900004 + STATUS_WAIT_0 NTStatus = 0x00000000 + STATUS_SUCCESS NTStatus = 0x00000000 + STATUS_WAIT_1 NTStatus = 0x00000001 + STATUS_WAIT_2 NTStatus = 0x00000002 + STATUS_WAIT_3 NTStatus = 0x00000003 + STATUS_WAIT_63 NTStatus = 0x0000003F + STATUS_ABANDONED NTStatus = 0x00000080 + STATUS_ABANDONED_WAIT_0 NTStatus = 0x00000080 + STATUS_ABANDONED_WAIT_63 NTStatus = 0x000000BF + STATUS_USER_APC NTStatus = 0x000000C0 + STATUS_ALREADY_COMPLETE NTStatus = 0x000000FF + STATUS_KERNEL_APC NTStatus = 0x00000100 + STATUS_ALERTED NTStatus = 0x00000101 + STATUS_TIMEOUT NTStatus = 0x00000102 + STATUS_PENDING NTStatus = 0x00000103 + STATUS_REPARSE NTStatus = 0x00000104 + STATUS_MORE_ENTRIES NTStatus = 0x00000105 + STATUS_NOT_ALL_ASSIGNED NTStatus = 0x00000106 + STATUS_SOME_NOT_MAPPED NTStatus = 0x00000107 + STATUS_OPLOCK_BREAK_IN_PROGRESS NTStatus = 0x00000108 + STATUS_VOLUME_MOUNTED NTStatus = 0x00000109 + STATUS_RXACT_COMMITTED NTStatus = 0x0000010A + STATUS_NOTIFY_CLEANUP NTStatus = 0x0000010B + STATUS_NOTIFY_ENUM_DIR NTStatus = 0x0000010C + STATUS_NO_QUOTAS_FOR_ACCOUNT NTStatus = 0x0000010D + STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED NTStatus = 0x0000010E + STATUS_PAGE_FAULT_TRANSITION NTStatus = 0x00000110 + STATUS_PAGE_FAULT_DEMAND_ZERO NTStatus = 0x00000111 + STATUS_PAGE_FAULT_COPY_ON_WRITE NTStatus = 0x00000112 + STATUS_PAGE_FAULT_GUARD_PAGE NTStatus = 0x00000113 + STATUS_PAGE_FAULT_PAGING_FILE NTStatus = 0x00000114 + STATUS_CACHE_PAGE_LOCKED NTStatus = 0x00000115 + STATUS_CRASH_DUMP NTStatus = 0x00000116 + STATUS_BUFFER_ALL_ZEROS NTStatus = 0x00000117 + STATUS_REPARSE_OBJECT NTStatus = 0x00000118 + STATUS_RESOURCE_REQUIREMENTS_CHANGED NTStatus = 0x00000119 + STATUS_TRANSLATION_COMPLETE NTStatus = 0x00000120 + STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY NTStatus = 0x00000121 + STATUS_NOTHING_TO_TERMINATE NTStatus = 0x00000122 + STATUS_PROCESS_NOT_IN_JOB NTStatus = 0x00000123 + STATUS_PROCESS_IN_JOB NTStatus = 0x00000124 + STATUS_VOLSNAP_HIBERNATE_READY NTStatus = 0x00000125 + STATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY NTStatus = 0x00000126 + STATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED NTStatus = 0x00000127 + STATUS_INTERRUPT_STILL_CONNECTED NTStatus = 0x00000128 + STATUS_PROCESS_CLONED NTStatus = 0x00000129 + STATUS_FILE_LOCKED_WITH_ONLY_READERS NTStatus = 0x0000012A + STATUS_FILE_LOCKED_WITH_WRITERS NTStatus = 0x0000012B + STATUS_VALID_IMAGE_HASH NTStatus = 0x0000012C + STATUS_VALID_CATALOG_HASH NTStatus = 0x0000012D + STATUS_VALID_STRONG_CODE_HASH NTStatus = 0x0000012E + STATUS_GHOSTED NTStatus = 0x0000012F + STATUS_DATA_OVERWRITTEN NTStatus = 0x00000130 + STATUS_RESOURCEMANAGER_READ_ONLY NTStatus = 0x00000202 + STATUS_RING_PREVIOUSLY_EMPTY NTStatus = 0x00000210 + STATUS_RING_PREVIOUSLY_FULL NTStatus = 0x00000211 + STATUS_RING_PREVIOUSLY_ABOVE_QUOTA NTStatus = 0x00000212 + STATUS_RING_NEWLY_EMPTY NTStatus = 0x00000213 + STATUS_RING_SIGNAL_OPPOSITE_ENDPOINT NTStatus = 0x00000214 + STATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE NTStatus = 0x00000215 + STATUS_OPLOCK_HANDLE_CLOSED NTStatus = 0x00000216 + STATUS_WAIT_FOR_OPLOCK NTStatus = 0x00000367 + STATUS_REPARSE_GLOBAL NTStatus = 0x00000368 + STATUS_FLT_IO_COMPLETE NTStatus = 0x001C0001 + STATUS_OBJECT_NAME_EXISTS NTStatus = 0x40000000 + STATUS_THREAD_WAS_SUSPENDED NTStatus = 0x40000001 + STATUS_WORKING_SET_LIMIT_RANGE NTStatus = 0x40000002 + STATUS_IMAGE_NOT_AT_BASE NTStatus = 0x40000003 + STATUS_RXACT_STATE_CREATED NTStatus = 0x40000004 + STATUS_SEGMENT_NOTIFICATION NTStatus = 0x40000005 + STATUS_LOCAL_USER_SESSION_KEY NTStatus = 0x40000006 + STATUS_BAD_CURRENT_DIRECTORY NTStatus = 0x40000007 + STATUS_SERIAL_MORE_WRITES NTStatus = 0x40000008 + STATUS_REGISTRY_RECOVERED NTStatus = 0x40000009 + STATUS_FT_READ_RECOVERY_FROM_BACKUP NTStatus = 0x4000000A + STATUS_FT_WRITE_RECOVERY NTStatus = 0x4000000B + STATUS_SERIAL_COUNTER_TIMEOUT NTStatus = 0x4000000C + STATUS_NULL_LM_PASSWORD NTStatus = 0x4000000D + STATUS_IMAGE_MACHINE_TYPE_MISMATCH NTStatus = 0x4000000E + STATUS_RECEIVE_PARTIAL NTStatus = 0x4000000F + STATUS_RECEIVE_EXPEDITED NTStatus = 0x40000010 + STATUS_RECEIVE_PARTIAL_EXPEDITED NTStatus = 0x40000011 + STATUS_EVENT_DONE NTStatus = 0x40000012 + STATUS_EVENT_PENDING NTStatus = 0x40000013 + STATUS_CHECKING_FILE_SYSTEM NTStatus = 0x40000014 + STATUS_FATAL_APP_EXIT NTStatus = 0x40000015 + STATUS_PREDEFINED_HANDLE NTStatus = 0x40000016 + STATUS_WAS_UNLOCKED NTStatus = 0x40000017 + STATUS_SERVICE_NOTIFICATION NTStatus = 0x40000018 + STATUS_WAS_LOCKED NTStatus = 0x40000019 + STATUS_LOG_HARD_ERROR NTStatus = 0x4000001A + STATUS_ALREADY_WIN32 NTStatus = 0x4000001B + STATUS_WX86_UNSIMULATE NTStatus = 0x4000001C + STATUS_WX86_CONTINUE NTStatus = 0x4000001D + STATUS_WX86_SINGLE_STEP NTStatus = 0x4000001E + STATUS_WX86_BREAKPOINT NTStatus = 0x4000001F + STATUS_WX86_EXCEPTION_CONTINUE NTStatus = 0x40000020 + STATUS_WX86_EXCEPTION_LASTCHANCE NTStatus = 0x40000021 + STATUS_WX86_EXCEPTION_CHAIN NTStatus = 0x40000022 + STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE NTStatus = 0x40000023 + STATUS_NO_YIELD_PERFORMED NTStatus = 0x40000024 + STATUS_TIMER_RESUME_IGNORED NTStatus = 0x40000025 + STATUS_ARBITRATION_UNHANDLED NTStatus = 0x40000026 + STATUS_CARDBUS_NOT_SUPPORTED NTStatus = 0x40000027 + STATUS_WX86_CREATEWX86TIB NTStatus = 0x40000028 + STATUS_MP_PROCESSOR_MISMATCH NTStatus = 0x40000029 + STATUS_HIBERNATED NTStatus = 0x4000002A + STATUS_RESUME_HIBERNATION NTStatus = 0x4000002B + STATUS_FIRMWARE_UPDATED NTStatus = 0x4000002C + STATUS_DRIVERS_LEAKING_LOCKED_PAGES NTStatus = 0x4000002D + STATUS_MESSAGE_RETRIEVED NTStatus = 0x4000002E + STATUS_SYSTEM_POWERSTATE_TRANSITION NTStatus = 0x4000002F + STATUS_ALPC_CHECK_COMPLETION_LIST NTStatus = 0x40000030 + STATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION NTStatus = 0x40000031 + STATUS_ACCESS_AUDIT_BY_POLICY NTStatus = 0x40000032 + STATUS_ABANDON_HIBERFILE NTStatus = 0x40000033 + STATUS_BIZRULES_NOT_ENABLED NTStatus = 0x40000034 + STATUS_FT_READ_FROM_COPY NTStatus = 0x40000035 + STATUS_IMAGE_AT_DIFFERENT_BASE NTStatus = 0x40000036 + STATUS_PATCH_DEFERRED NTStatus = 0x40000037 + STATUS_HEURISTIC_DAMAGE_POSSIBLE NTStatus = 0x40190001 + STATUS_GUARD_PAGE_VIOLATION NTStatus = 0x80000001 + STATUS_DATATYPE_MISALIGNMENT NTStatus = 0x80000002 + STATUS_BREAKPOINT NTStatus = 0x80000003 + STATUS_SINGLE_STEP NTStatus = 0x80000004 + STATUS_BUFFER_OVERFLOW NTStatus = 0x80000005 + STATUS_NO_MORE_FILES NTStatus = 0x80000006 + STATUS_WAKE_SYSTEM_DEBUGGER NTStatus = 0x80000007 + STATUS_HANDLES_CLOSED NTStatus = 0x8000000A + STATUS_NO_INHERITANCE NTStatus = 0x8000000B + STATUS_GUID_SUBSTITUTION_MADE NTStatus = 0x8000000C + STATUS_PARTIAL_COPY NTStatus = 0x8000000D + STATUS_DEVICE_PAPER_EMPTY NTStatus = 0x8000000E + STATUS_DEVICE_POWERED_OFF NTStatus = 0x8000000F + STATUS_DEVICE_OFF_LINE NTStatus = 0x80000010 + STATUS_DEVICE_BUSY NTStatus = 0x80000011 + STATUS_NO_MORE_EAS NTStatus = 0x80000012 + STATUS_INVALID_EA_NAME NTStatus = 0x80000013 + STATUS_EA_LIST_INCONSISTENT NTStatus = 0x80000014 + STATUS_INVALID_EA_FLAG NTStatus = 0x80000015 + STATUS_VERIFY_REQUIRED NTStatus = 0x80000016 + STATUS_EXTRANEOUS_INFORMATION NTStatus = 0x80000017 + STATUS_RXACT_COMMIT_NECESSARY NTStatus = 0x80000018 + STATUS_NO_MORE_ENTRIES NTStatus = 0x8000001A + STATUS_FILEMARK_DETECTED NTStatus = 0x8000001B + STATUS_MEDIA_CHANGED NTStatus = 0x8000001C + STATUS_BUS_RESET NTStatus = 0x8000001D + STATUS_END_OF_MEDIA NTStatus = 0x8000001E + STATUS_BEGINNING_OF_MEDIA NTStatus = 0x8000001F + STATUS_MEDIA_CHECK NTStatus = 0x80000020 + STATUS_SETMARK_DETECTED NTStatus = 0x80000021 + STATUS_NO_DATA_DETECTED NTStatus = 0x80000022 + STATUS_REDIRECTOR_HAS_OPEN_HANDLES NTStatus = 0x80000023 + STATUS_SERVER_HAS_OPEN_HANDLES NTStatus = 0x80000024 + STATUS_ALREADY_DISCONNECTED NTStatus = 0x80000025 + STATUS_LONGJUMP NTStatus = 0x80000026 + STATUS_CLEANER_CARTRIDGE_INSTALLED NTStatus = 0x80000027 + STATUS_PLUGPLAY_QUERY_VETOED NTStatus = 0x80000028 + STATUS_UNWIND_CONSOLIDATE NTStatus = 0x80000029 + STATUS_REGISTRY_HIVE_RECOVERED NTStatus = 0x8000002A + STATUS_DLL_MIGHT_BE_INSECURE NTStatus = 0x8000002B + STATUS_DLL_MIGHT_BE_INCOMPATIBLE NTStatus = 0x8000002C + STATUS_STOPPED_ON_SYMLINK NTStatus = 0x8000002D + STATUS_CANNOT_GRANT_REQUESTED_OPLOCK NTStatus = 0x8000002E + STATUS_NO_ACE_CONDITION NTStatus = 0x8000002F + STATUS_DEVICE_SUPPORT_IN_PROGRESS NTStatus = 0x80000030 + STATUS_DEVICE_POWER_CYCLE_REQUIRED NTStatus = 0x80000031 + STATUS_NO_WORK_DONE NTStatus = 0x80000032 + STATUS_CLUSTER_NODE_ALREADY_UP NTStatus = 0x80130001 + STATUS_CLUSTER_NODE_ALREADY_DOWN NTStatus = 0x80130002 + STATUS_CLUSTER_NETWORK_ALREADY_ONLINE NTStatus = 0x80130003 + STATUS_CLUSTER_NETWORK_ALREADY_OFFLINE NTStatus = 0x80130004 + STATUS_CLUSTER_NODE_ALREADY_MEMBER NTStatus = 0x80130005 + STATUS_FLT_BUFFER_TOO_SMALL NTStatus = 0x801C0001 + STATUS_FVE_PARTIAL_METADATA NTStatus = 0x80210001 + STATUS_FVE_TRANSIENT_STATE NTStatus = 0x80210002 + STATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH NTStatus = 0x8000CF00 + STATUS_UNSUCCESSFUL NTStatus = 0xC0000001 + STATUS_NOT_IMPLEMENTED NTStatus = 0xC0000002 + STATUS_INVALID_INFO_CLASS NTStatus = 0xC0000003 + STATUS_INFO_LENGTH_MISMATCH NTStatus = 0xC0000004 + STATUS_ACCESS_VIOLATION NTStatus = 0xC0000005 + STATUS_IN_PAGE_ERROR NTStatus = 0xC0000006 + STATUS_PAGEFILE_QUOTA NTStatus = 0xC0000007 + STATUS_INVALID_HANDLE NTStatus = 0xC0000008 + STATUS_BAD_INITIAL_STACK NTStatus = 0xC0000009 + STATUS_BAD_INITIAL_PC NTStatus = 0xC000000A + STATUS_INVALID_CID NTStatus = 0xC000000B + STATUS_TIMER_NOT_CANCELED NTStatus = 0xC000000C + STATUS_INVALID_PARAMETER NTStatus = 0xC000000D + STATUS_NO_SUCH_DEVICE NTStatus = 0xC000000E + STATUS_NO_SUCH_FILE NTStatus = 0xC000000F + STATUS_INVALID_DEVICE_REQUEST NTStatus = 0xC0000010 + STATUS_END_OF_FILE NTStatus = 0xC0000011 + STATUS_WRONG_VOLUME NTStatus = 0xC0000012 + STATUS_NO_MEDIA_IN_DEVICE NTStatus = 0xC0000013 + STATUS_UNRECOGNIZED_MEDIA NTStatus = 0xC0000014 + STATUS_NONEXISTENT_SECTOR NTStatus = 0xC0000015 + STATUS_MORE_PROCESSING_REQUIRED NTStatus = 0xC0000016 + STATUS_NO_MEMORY NTStatus = 0xC0000017 + STATUS_CONFLICTING_ADDRESSES NTStatus = 0xC0000018 + STATUS_NOT_MAPPED_VIEW NTStatus = 0xC0000019 + STATUS_UNABLE_TO_FREE_VM NTStatus = 0xC000001A + STATUS_UNABLE_TO_DELETE_SECTION NTStatus = 0xC000001B + STATUS_INVALID_SYSTEM_SERVICE NTStatus = 0xC000001C + STATUS_ILLEGAL_INSTRUCTION NTStatus = 0xC000001D + STATUS_INVALID_LOCK_SEQUENCE NTStatus = 0xC000001E + STATUS_INVALID_VIEW_SIZE NTStatus = 0xC000001F + STATUS_INVALID_FILE_FOR_SECTION NTStatus = 0xC0000020 + STATUS_ALREADY_COMMITTED NTStatus = 0xC0000021 + STATUS_ACCESS_DENIED NTStatus = 0xC0000022 + STATUS_BUFFER_TOO_SMALL NTStatus = 0xC0000023 + STATUS_OBJECT_TYPE_MISMATCH NTStatus = 0xC0000024 + STATUS_NONCONTINUABLE_EXCEPTION NTStatus = 0xC0000025 + STATUS_INVALID_DISPOSITION NTStatus = 0xC0000026 + STATUS_UNWIND NTStatus = 0xC0000027 + STATUS_BAD_STACK NTStatus = 0xC0000028 + STATUS_INVALID_UNWIND_TARGET NTStatus = 0xC0000029 + STATUS_NOT_LOCKED NTStatus = 0xC000002A + STATUS_PARITY_ERROR NTStatus = 0xC000002B + STATUS_UNABLE_TO_DECOMMIT_VM NTStatus = 0xC000002C + STATUS_NOT_COMMITTED NTStatus = 0xC000002D + STATUS_INVALID_PORT_ATTRIBUTES NTStatus = 0xC000002E + STATUS_PORT_MESSAGE_TOO_LONG NTStatus = 0xC000002F + STATUS_INVALID_PARAMETER_MIX NTStatus = 0xC0000030 + STATUS_INVALID_QUOTA_LOWER NTStatus = 0xC0000031 + STATUS_DISK_CORRUPT_ERROR NTStatus = 0xC0000032 + STATUS_OBJECT_NAME_INVALID NTStatus = 0xC0000033 + STATUS_OBJECT_NAME_NOT_FOUND NTStatus = 0xC0000034 + STATUS_OBJECT_NAME_COLLISION NTStatus = 0xC0000035 + STATUS_PORT_DO_NOT_DISTURB NTStatus = 0xC0000036 + STATUS_PORT_DISCONNECTED NTStatus = 0xC0000037 + STATUS_DEVICE_ALREADY_ATTACHED NTStatus = 0xC0000038 + STATUS_OBJECT_PATH_INVALID NTStatus = 0xC0000039 + STATUS_OBJECT_PATH_NOT_FOUND NTStatus = 0xC000003A + STATUS_OBJECT_PATH_SYNTAX_BAD NTStatus = 0xC000003B + STATUS_DATA_OVERRUN NTStatus = 0xC000003C + STATUS_DATA_LATE_ERROR NTStatus = 0xC000003D + STATUS_DATA_ERROR NTStatus = 0xC000003E + STATUS_CRC_ERROR NTStatus = 0xC000003F + STATUS_SECTION_TOO_BIG NTStatus = 0xC0000040 + STATUS_PORT_CONNECTION_REFUSED NTStatus = 0xC0000041 + STATUS_INVALID_PORT_HANDLE NTStatus = 0xC0000042 + STATUS_SHARING_VIOLATION NTStatus = 0xC0000043 + STATUS_QUOTA_EXCEEDED NTStatus = 0xC0000044 + STATUS_INVALID_PAGE_PROTECTION NTStatus = 0xC0000045 + STATUS_MUTANT_NOT_OWNED NTStatus = 0xC0000046 + STATUS_SEMAPHORE_LIMIT_EXCEEDED NTStatus = 0xC0000047 + STATUS_PORT_ALREADY_SET NTStatus = 0xC0000048 + STATUS_SECTION_NOT_IMAGE NTStatus = 0xC0000049 + STATUS_SUSPEND_COUNT_EXCEEDED NTStatus = 0xC000004A + STATUS_THREAD_IS_TERMINATING NTStatus = 0xC000004B + STATUS_BAD_WORKING_SET_LIMIT NTStatus = 0xC000004C + STATUS_INCOMPATIBLE_FILE_MAP NTStatus = 0xC000004D + STATUS_SECTION_PROTECTION NTStatus = 0xC000004E + STATUS_EAS_NOT_SUPPORTED NTStatus = 0xC000004F + STATUS_EA_TOO_LARGE NTStatus = 0xC0000050 + STATUS_NONEXISTENT_EA_ENTRY NTStatus = 0xC0000051 + STATUS_NO_EAS_ON_FILE NTStatus = 0xC0000052 + STATUS_EA_CORRUPT_ERROR NTStatus = 0xC0000053 + STATUS_FILE_LOCK_CONFLICT NTStatus = 0xC0000054 + STATUS_LOCK_NOT_GRANTED NTStatus = 0xC0000055 + STATUS_DELETE_PENDING NTStatus = 0xC0000056 + STATUS_CTL_FILE_NOT_SUPPORTED NTStatus = 0xC0000057 + STATUS_UNKNOWN_REVISION NTStatus = 0xC0000058 + STATUS_REVISION_MISMATCH NTStatus = 0xC0000059 + STATUS_INVALID_OWNER NTStatus = 0xC000005A + STATUS_INVALID_PRIMARY_GROUP NTStatus = 0xC000005B + STATUS_NO_IMPERSONATION_TOKEN NTStatus = 0xC000005C + STATUS_CANT_DISABLE_MANDATORY NTStatus = 0xC000005D + STATUS_NO_LOGON_SERVERS NTStatus = 0xC000005E + STATUS_NO_SUCH_LOGON_SESSION NTStatus = 0xC000005F + STATUS_NO_SUCH_PRIVILEGE NTStatus = 0xC0000060 + STATUS_PRIVILEGE_NOT_HELD NTStatus = 0xC0000061 + STATUS_INVALID_ACCOUNT_NAME NTStatus = 0xC0000062 + STATUS_USER_EXISTS NTStatus = 0xC0000063 + STATUS_NO_SUCH_USER NTStatus = 0xC0000064 + STATUS_GROUP_EXISTS NTStatus = 0xC0000065 + STATUS_NO_SUCH_GROUP NTStatus = 0xC0000066 + STATUS_MEMBER_IN_GROUP NTStatus = 0xC0000067 + STATUS_MEMBER_NOT_IN_GROUP NTStatus = 0xC0000068 + STATUS_LAST_ADMIN NTStatus = 0xC0000069 + STATUS_WRONG_PASSWORD NTStatus = 0xC000006A + STATUS_ILL_FORMED_PASSWORD NTStatus = 0xC000006B + STATUS_PASSWORD_RESTRICTION NTStatus = 0xC000006C + STATUS_LOGON_FAILURE NTStatus = 0xC000006D + STATUS_ACCOUNT_RESTRICTION NTStatus = 0xC000006E + STATUS_INVALID_LOGON_HOURS NTStatus = 0xC000006F + STATUS_INVALID_WORKSTATION NTStatus = 0xC0000070 + STATUS_PASSWORD_EXPIRED NTStatus = 0xC0000071 + STATUS_ACCOUNT_DISABLED NTStatus = 0xC0000072 + STATUS_NONE_MAPPED NTStatus = 0xC0000073 + STATUS_TOO_MANY_LUIDS_REQUESTED NTStatus = 0xC0000074 + STATUS_LUIDS_EXHAUSTED NTStatus = 0xC0000075 + STATUS_INVALID_SUB_AUTHORITY NTStatus = 0xC0000076 + STATUS_INVALID_ACL NTStatus = 0xC0000077 + STATUS_INVALID_SID NTStatus = 0xC0000078 + STATUS_INVALID_SECURITY_DESCR NTStatus = 0xC0000079 + STATUS_PROCEDURE_NOT_FOUND NTStatus = 0xC000007A + STATUS_INVALID_IMAGE_FORMAT NTStatus = 0xC000007B + STATUS_NO_TOKEN NTStatus = 0xC000007C + STATUS_BAD_INHERITANCE_ACL NTStatus = 0xC000007D + STATUS_RANGE_NOT_LOCKED NTStatus = 0xC000007E + STATUS_DISK_FULL NTStatus = 0xC000007F + STATUS_SERVER_DISABLED NTStatus = 0xC0000080 + STATUS_SERVER_NOT_DISABLED NTStatus = 0xC0000081 + STATUS_TOO_MANY_GUIDS_REQUESTED NTStatus = 0xC0000082 + STATUS_GUIDS_EXHAUSTED NTStatus = 0xC0000083 + STATUS_INVALID_ID_AUTHORITY NTStatus = 0xC0000084 + STATUS_AGENTS_EXHAUSTED NTStatus = 0xC0000085 + STATUS_INVALID_VOLUME_LABEL NTStatus = 0xC0000086 + STATUS_SECTION_NOT_EXTENDED NTStatus = 0xC0000087 + STATUS_NOT_MAPPED_DATA NTStatus = 0xC0000088 + STATUS_RESOURCE_DATA_NOT_FOUND NTStatus = 0xC0000089 + STATUS_RESOURCE_TYPE_NOT_FOUND NTStatus = 0xC000008A + STATUS_RESOURCE_NAME_NOT_FOUND NTStatus = 0xC000008B + STATUS_ARRAY_BOUNDS_EXCEEDED NTStatus = 0xC000008C + STATUS_FLOAT_DENORMAL_OPERAND NTStatus = 0xC000008D + STATUS_FLOAT_DIVIDE_BY_ZERO NTStatus = 0xC000008E + STATUS_FLOAT_INEXACT_RESULT NTStatus = 0xC000008F + STATUS_FLOAT_INVALID_OPERATION NTStatus = 0xC0000090 + STATUS_FLOAT_OVERFLOW NTStatus = 0xC0000091 + STATUS_FLOAT_STACK_CHECK NTStatus = 0xC0000092 + STATUS_FLOAT_UNDERFLOW NTStatus = 0xC0000093 + STATUS_INTEGER_DIVIDE_BY_ZERO NTStatus = 0xC0000094 + STATUS_INTEGER_OVERFLOW NTStatus = 0xC0000095 + STATUS_PRIVILEGED_INSTRUCTION NTStatus = 0xC0000096 + STATUS_TOO_MANY_PAGING_FILES NTStatus = 0xC0000097 + STATUS_FILE_INVALID NTStatus = 0xC0000098 + STATUS_ALLOTTED_SPACE_EXCEEDED NTStatus = 0xC0000099 + STATUS_INSUFFICIENT_RESOURCES NTStatus = 0xC000009A + STATUS_DFS_EXIT_PATH_FOUND NTStatus = 0xC000009B + STATUS_DEVICE_DATA_ERROR NTStatus = 0xC000009C + STATUS_DEVICE_NOT_CONNECTED NTStatus = 0xC000009D + STATUS_DEVICE_POWER_FAILURE NTStatus = 0xC000009E + STATUS_FREE_VM_NOT_AT_BASE NTStatus = 0xC000009F + STATUS_MEMORY_NOT_ALLOCATED NTStatus = 0xC00000A0 + STATUS_WORKING_SET_QUOTA NTStatus = 0xC00000A1 + STATUS_MEDIA_WRITE_PROTECTED NTStatus = 0xC00000A2 + STATUS_DEVICE_NOT_READY NTStatus = 0xC00000A3 + STATUS_INVALID_GROUP_ATTRIBUTES NTStatus = 0xC00000A4 + STATUS_BAD_IMPERSONATION_LEVEL NTStatus = 0xC00000A5 + STATUS_CANT_OPEN_ANONYMOUS NTStatus = 0xC00000A6 + STATUS_BAD_VALIDATION_CLASS NTStatus = 0xC00000A7 + STATUS_BAD_TOKEN_TYPE NTStatus = 0xC00000A8 + STATUS_BAD_MASTER_BOOT_RECORD NTStatus = 0xC00000A9 + STATUS_INSTRUCTION_MISALIGNMENT NTStatus = 0xC00000AA + STATUS_INSTANCE_NOT_AVAILABLE NTStatus = 0xC00000AB + STATUS_PIPE_NOT_AVAILABLE NTStatus = 0xC00000AC + STATUS_INVALID_PIPE_STATE NTStatus = 0xC00000AD + STATUS_PIPE_BUSY NTStatus = 0xC00000AE + STATUS_ILLEGAL_FUNCTION NTStatus = 0xC00000AF + STATUS_PIPE_DISCONNECTED NTStatus = 0xC00000B0 + STATUS_PIPE_CLOSING NTStatus = 0xC00000B1 + STATUS_PIPE_CONNECTED NTStatus = 0xC00000B2 + STATUS_PIPE_LISTENING NTStatus = 0xC00000B3 + STATUS_INVALID_READ_MODE NTStatus = 0xC00000B4 + STATUS_IO_TIMEOUT NTStatus = 0xC00000B5 + STATUS_FILE_FORCED_CLOSED NTStatus = 0xC00000B6 + STATUS_PROFILING_NOT_STARTED NTStatus = 0xC00000B7 + STATUS_PROFILING_NOT_STOPPED NTStatus = 0xC00000B8 + STATUS_COULD_NOT_INTERPRET NTStatus = 0xC00000B9 + STATUS_FILE_IS_A_DIRECTORY NTStatus = 0xC00000BA + STATUS_NOT_SUPPORTED NTStatus = 0xC00000BB + STATUS_REMOTE_NOT_LISTENING NTStatus = 0xC00000BC + STATUS_DUPLICATE_NAME NTStatus = 0xC00000BD + STATUS_BAD_NETWORK_PATH NTStatus = 0xC00000BE + STATUS_NETWORK_BUSY NTStatus = 0xC00000BF + STATUS_DEVICE_DOES_NOT_EXIST NTStatus = 0xC00000C0 + STATUS_TOO_MANY_COMMANDS NTStatus = 0xC00000C1 + STATUS_ADAPTER_HARDWARE_ERROR NTStatus = 0xC00000C2 + STATUS_INVALID_NETWORK_RESPONSE NTStatus = 0xC00000C3 + STATUS_UNEXPECTED_NETWORK_ERROR NTStatus = 0xC00000C4 + STATUS_BAD_REMOTE_ADAPTER NTStatus = 0xC00000C5 + STATUS_PRINT_QUEUE_FULL NTStatus = 0xC00000C6 + STATUS_NO_SPOOL_SPACE NTStatus = 0xC00000C7 + STATUS_PRINT_CANCELLED NTStatus = 0xC00000C8 + STATUS_NETWORK_NAME_DELETED NTStatus = 0xC00000C9 + STATUS_NETWORK_ACCESS_DENIED NTStatus = 0xC00000CA + STATUS_BAD_DEVICE_TYPE NTStatus = 0xC00000CB + STATUS_BAD_NETWORK_NAME NTStatus = 0xC00000CC + STATUS_TOO_MANY_NAMES NTStatus = 0xC00000CD + STATUS_TOO_MANY_SESSIONS NTStatus = 0xC00000CE + STATUS_SHARING_PAUSED NTStatus = 0xC00000CF + STATUS_REQUEST_NOT_ACCEPTED NTStatus = 0xC00000D0 + STATUS_REDIRECTOR_PAUSED NTStatus = 0xC00000D1 + STATUS_NET_WRITE_FAULT NTStatus = 0xC00000D2 + STATUS_PROFILING_AT_LIMIT NTStatus = 0xC00000D3 + STATUS_NOT_SAME_DEVICE NTStatus = 0xC00000D4 + STATUS_FILE_RENAMED NTStatus = 0xC00000D5 + STATUS_VIRTUAL_CIRCUIT_CLOSED NTStatus = 0xC00000D6 + STATUS_NO_SECURITY_ON_OBJECT NTStatus = 0xC00000D7 + STATUS_CANT_WAIT NTStatus = 0xC00000D8 + STATUS_PIPE_EMPTY NTStatus = 0xC00000D9 + STATUS_CANT_ACCESS_DOMAIN_INFO NTStatus = 0xC00000DA + STATUS_CANT_TERMINATE_SELF NTStatus = 0xC00000DB + STATUS_INVALID_SERVER_STATE NTStatus = 0xC00000DC + STATUS_INVALID_DOMAIN_STATE NTStatus = 0xC00000DD + STATUS_INVALID_DOMAIN_ROLE NTStatus = 0xC00000DE + STATUS_NO_SUCH_DOMAIN NTStatus = 0xC00000DF + STATUS_DOMAIN_EXISTS NTStatus = 0xC00000E0 + STATUS_DOMAIN_LIMIT_EXCEEDED NTStatus = 0xC00000E1 + STATUS_OPLOCK_NOT_GRANTED NTStatus = 0xC00000E2 + STATUS_INVALID_OPLOCK_PROTOCOL NTStatus = 0xC00000E3 + STATUS_INTERNAL_DB_CORRUPTION NTStatus = 0xC00000E4 + STATUS_INTERNAL_ERROR NTStatus = 0xC00000E5 + STATUS_GENERIC_NOT_MAPPED NTStatus = 0xC00000E6 + STATUS_BAD_DESCRIPTOR_FORMAT NTStatus = 0xC00000E7 + STATUS_INVALID_USER_BUFFER NTStatus = 0xC00000E8 + STATUS_UNEXPECTED_IO_ERROR NTStatus = 0xC00000E9 + STATUS_UNEXPECTED_MM_CREATE_ERR NTStatus = 0xC00000EA + STATUS_UNEXPECTED_MM_MAP_ERROR NTStatus = 0xC00000EB + STATUS_UNEXPECTED_MM_EXTEND_ERR NTStatus = 0xC00000EC + STATUS_NOT_LOGON_PROCESS NTStatus = 0xC00000ED + STATUS_LOGON_SESSION_EXISTS NTStatus = 0xC00000EE + STATUS_INVALID_PARAMETER_1 NTStatus = 0xC00000EF + STATUS_INVALID_PARAMETER_2 NTStatus = 0xC00000F0 + STATUS_INVALID_PARAMETER_3 NTStatus = 0xC00000F1 + STATUS_INVALID_PARAMETER_4 NTStatus = 0xC00000F2 + STATUS_INVALID_PARAMETER_5 NTStatus = 0xC00000F3 + STATUS_INVALID_PARAMETER_6 NTStatus = 0xC00000F4 + STATUS_INVALID_PARAMETER_7 NTStatus = 0xC00000F5 + STATUS_INVALID_PARAMETER_8 NTStatus = 0xC00000F6 + STATUS_INVALID_PARAMETER_9 NTStatus = 0xC00000F7 + STATUS_INVALID_PARAMETER_10 NTStatus = 0xC00000F8 + STATUS_INVALID_PARAMETER_11 NTStatus = 0xC00000F9 + STATUS_INVALID_PARAMETER_12 NTStatus = 0xC00000FA + STATUS_REDIRECTOR_NOT_STARTED NTStatus = 0xC00000FB + STATUS_REDIRECTOR_STARTED NTStatus = 0xC00000FC + STATUS_STACK_OVERFLOW NTStatus = 0xC00000FD + STATUS_NO_SUCH_PACKAGE NTStatus = 0xC00000FE + STATUS_BAD_FUNCTION_TABLE NTStatus = 0xC00000FF + STATUS_VARIABLE_NOT_FOUND NTStatus = 0xC0000100 + STATUS_DIRECTORY_NOT_EMPTY NTStatus = 0xC0000101 + STATUS_FILE_CORRUPT_ERROR NTStatus = 0xC0000102 + STATUS_NOT_A_DIRECTORY NTStatus = 0xC0000103 + STATUS_BAD_LOGON_SESSION_STATE NTStatus = 0xC0000104 + STATUS_LOGON_SESSION_COLLISION NTStatus = 0xC0000105 + STATUS_NAME_TOO_LONG NTStatus = 0xC0000106 + STATUS_FILES_OPEN NTStatus = 0xC0000107 + STATUS_CONNECTION_IN_USE NTStatus = 0xC0000108 + STATUS_MESSAGE_NOT_FOUND NTStatus = 0xC0000109 + STATUS_PROCESS_IS_TERMINATING NTStatus = 0xC000010A + STATUS_INVALID_LOGON_TYPE NTStatus = 0xC000010B + STATUS_NO_GUID_TRANSLATION NTStatus = 0xC000010C + STATUS_CANNOT_IMPERSONATE NTStatus = 0xC000010D + STATUS_IMAGE_ALREADY_LOADED NTStatus = 0xC000010E + STATUS_ABIOS_NOT_PRESENT NTStatus = 0xC000010F + STATUS_ABIOS_LID_NOT_EXIST NTStatus = 0xC0000110 + STATUS_ABIOS_LID_ALREADY_OWNED NTStatus = 0xC0000111 + STATUS_ABIOS_NOT_LID_OWNER NTStatus = 0xC0000112 + STATUS_ABIOS_INVALID_COMMAND NTStatus = 0xC0000113 + STATUS_ABIOS_INVALID_LID NTStatus = 0xC0000114 + STATUS_ABIOS_SELECTOR_NOT_AVAILABLE NTStatus = 0xC0000115 + STATUS_ABIOS_INVALID_SELECTOR NTStatus = 0xC0000116 + STATUS_NO_LDT NTStatus = 0xC0000117 + STATUS_INVALID_LDT_SIZE NTStatus = 0xC0000118 + STATUS_INVALID_LDT_OFFSET NTStatus = 0xC0000119 + STATUS_INVALID_LDT_DESCRIPTOR NTStatus = 0xC000011A + STATUS_INVALID_IMAGE_NE_FORMAT NTStatus = 0xC000011B + STATUS_RXACT_INVALID_STATE NTStatus = 0xC000011C + STATUS_RXACT_COMMIT_FAILURE NTStatus = 0xC000011D + STATUS_MAPPED_FILE_SIZE_ZERO NTStatus = 0xC000011E + STATUS_TOO_MANY_OPENED_FILES NTStatus = 0xC000011F + STATUS_CANCELLED NTStatus = 0xC0000120 + STATUS_CANNOT_DELETE NTStatus = 0xC0000121 + STATUS_INVALID_COMPUTER_NAME NTStatus = 0xC0000122 + STATUS_FILE_DELETED NTStatus = 0xC0000123 + STATUS_SPECIAL_ACCOUNT NTStatus = 0xC0000124 + STATUS_SPECIAL_GROUP NTStatus = 0xC0000125 + STATUS_SPECIAL_USER NTStatus = 0xC0000126 + STATUS_MEMBERS_PRIMARY_GROUP NTStatus = 0xC0000127 + STATUS_FILE_CLOSED NTStatus = 0xC0000128 + STATUS_TOO_MANY_THREADS NTStatus = 0xC0000129 + STATUS_THREAD_NOT_IN_PROCESS NTStatus = 0xC000012A + STATUS_TOKEN_ALREADY_IN_USE NTStatus = 0xC000012B + STATUS_PAGEFILE_QUOTA_EXCEEDED NTStatus = 0xC000012C + STATUS_COMMITMENT_LIMIT NTStatus = 0xC000012D + STATUS_INVALID_IMAGE_LE_FORMAT NTStatus = 0xC000012E + STATUS_INVALID_IMAGE_NOT_MZ NTStatus = 0xC000012F + STATUS_INVALID_IMAGE_PROTECT NTStatus = 0xC0000130 + STATUS_INVALID_IMAGE_WIN_16 NTStatus = 0xC0000131 + STATUS_LOGON_SERVER_CONFLICT NTStatus = 0xC0000132 + STATUS_TIME_DIFFERENCE_AT_DC NTStatus = 0xC0000133 + STATUS_SYNCHRONIZATION_REQUIRED NTStatus = 0xC0000134 + STATUS_DLL_NOT_FOUND NTStatus = 0xC0000135 + STATUS_OPEN_FAILED NTStatus = 0xC0000136 + STATUS_IO_PRIVILEGE_FAILED NTStatus = 0xC0000137 + STATUS_ORDINAL_NOT_FOUND NTStatus = 0xC0000138 + STATUS_ENTRYPOINT_NOT_FOUND NTStatus = 0xC0000139 + STATUS_CONTROL_C_EXIT NTStatus = 0xC000013A + STATUS_LOCAL_DISCONNECT NTStatus = 0xC000013B + STATUS_REMOTE_DISCONNECT NTStatus = 0xC000013C + STATUS_REMOTE_RESOURCES NTStatus = 0xC000013D + STATUS_LINK_FAILED NTStatus = 0xC000013E + STATUS_LINK_TIMEOUT NTStatus = 0xC000013F + STATUS_INVALID_CONNECTION NTStatus = 0xC0000140 + STATUS_INVALID_ADDRESS NTStatus = 0xC0000141 + STATUS_DLL_INIT_FAILED NTStatus = 0xC0000142 + STATUS_MISSING_SYSTEMFILE NTStatus = 0xC0000143 + STATUS_UNHANDLED_EXCEPTION NTStatus = 0xC0000144 + STATUS_APP_INIT_FAILURE NTStatus = 0xC0000145 + STATUS_PAGEFILE_CREATE_FAILED NTStatus = 0xC0000146 + STATUS_NO_PAGEFILE NTStatus = 0xC0000147 + STATUS_INVALID_LEVEL NTStatus = 0xC0000148 + STATUS_WRONG_PASSWORD_CORE NTStatus = 0xC0000149 + STATUS_ILLEGAL_FLOAT_CONTEXT NTStatus = 0xC000014A + STATUS_PIPE_BROKEN NTStatus = 0xC000014B + STATUS_REGISTRY_CORRUPT NTStatus = 0xC000014C + STATUS_REGISTRY_IO_FAILED NTStatus = 0xC000014D + STATUS_NO_EVENT_PAIR NTStatus = 0xC000014E + STATUS_UNRECOGNIZED_VOLUME NTStatus = 0xC000014F + STATUS_SERIAL_NO_DEVICE_INITED NTStatus = 0xC0000150 + STATUS_NO_SUCH_ALIAS NTStatus = 0xC0000151 + STATUS_MEMBER_NOT_IN_ALIAS NTStatus = 0xC0000152 + STATUS_MEMBER_IN_ALIAS NTStatus = 0xC0000153 + STATUS_ALIAS_EXISTS NTStatus = 0xC0000154 + STATUS_LOGON_NOT_GRANTED NTStatus = 0xC0000155 + STATUS_TOO_MANY_SECRETS NTStatus = 0xC0000156 + STATUS_SECRET_TOO_LONG NTStatus = 0xC0000157 + STATUS_INTERNAL_DB_ERROR NTStatus = 0xC0000158 + STATUS_FULLSCREEN_MODE NTStatus = 0xC0000159 + STATUS_TOO_MANY_CONTEXT_IDS NTStatus = 0xC000015A + STATUS_LOGON_TYPE_NOT_GRANTED NTStatus = 0xC000015B + STATUS_NOT_REGISTRY_FILE NTStatus = 0xC000015C + STATUS_NT_CROSS_ENCRYPTION_REQUIRED NTStatus = 0xC000015D + STATUS_DOMAIN_CTRLR_CONFIG_ERROR NTStatus = 0xC000015E + STATUS_FT_MISSING_MEMBER NTStatus = 0xC000015F + STATUS_ILL_FORMED_SERVICE_ENTRY NTStatus = 0xC0000160 + STATUS_ILLEGAL_CHARACTER NTStatus = 0xC0000161 + STATUS_UNMAPPABLE_CHARACTER NTStatus = 0xC0000162 + STATUS_UNDEFINED_CHARACTER NTStatus = 0xC0000163 + STATUS_FLOPPY_VOLUME NTStatus = 0xC0000164 + STATUS_FLOPPY_ID_MARK_NOT_FOUND NTStatus = 0xC0000165 + STATUS_FLOPPY_WRONG_CYLINDER NTStatus = 0xC0000166 + STATUS_FLOPPY_UNKNOWN_ERROR NTStatus = 0xC0000167 + STATUS_FLOPPY_BAD_REGISTERS NTStatus = 0xC0000168 + STATUS_DISK_RECALIBRATE_FAILED NTStatus = 0xC0000169 + STATUS_DISK_OPERATION_FAILED NTStatus = 0xC000016A + STATUS_DISK_RESET_FAILED NTStatus = 0xC000016B + STATUS_SHARED_IRQ_BUSY NTStatus = 0xC000016C + STATUS_FT_ORPHANING NTStatus = 0xC000016D + STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT NTStatus = 0xC000016E + STATUS_PARTITION_FAILURE NTStatus = 0xC0000172 + STATUS_INVALID_BLOCK_LENGTH NTStatus = 0xC0000173 + STATUS_DEVICE_NOT_PARTITIONED NTStatus = 0xC0000174 + STATUS_UNABLE_TO_LOCK_MEDIA NTStatus = 0xC0000175 + STATUS_UNABLE_TO_UNLOAD_MEDIA NTStatus = 0xC0000176 + STATUS_EOM_OVERFLOW NTStatus = 0xC0000177 + STATUS_NO_MEDIA NTStatus = 0xC0000178 + STATUS_NO_SUCH_MEMBER NTStatus = 0xC000017A + STATUS_INVALID_MEMBER NTStatus = 0xC000017B + STATUS_KEY_DELETED NTStatus = 0xC000017C + STATUS_NO_LOG_SPACE NTStatus = 0xC000017D + STATUS_TOO_MANY_SIDS NTStatus = 0xC000017E + STATUS_LM_CROSS_ENCRYPTION_REQUIRED NTStatus = 0xC000017F + STATUS_KEY_HAS_CHILDREN NTStatus = 0xC0000180 + STATUS_CHILD_MUST_BE_VOLATILE NTStatus = 0xC0000181 + STATUS_DEVICE_CONFIGURATION_ERROR NTStatus = 0xC0000182 + STATUS_DRIVER_INTERNAL_ERROR NTStatus = 0xC0000183 + STATUS_INVALID_DEVICE_STATE NTStatus = 0xC0000184 + STATUS_IO_DEVICE_ERROR NTStatus = 0xC0000185 + STATUS_DEVICE_PROTOCOL_ERROR NTStatus = 0xC0000186 + STATUS_BACKUP_CONTROLLER NTStatus = 0xC0000187 + STATUS_LOG_FILE_FULL NTStatus = 0xC0000188 + STATUS_TOO_LATE NTStatus = 0xC0000189 + STATUS_NO_TRUST_LSA_SECRET NTStatus = 0xC000018A + STATUS_NO_TRUST_SAM_ACCOUNT NTStatus = 0xC000018B + STATUS_TRUSTED_DOMAIN_FAILURE NTStatus = 0xC000018C + STATUS_TRUSTED_RELATIONSHIP_FAILURE NTStatus = 0xC000018D + STATUS_EVENTLOG_FILE_CORRUPT NTStatus = 0xC000018E + STATUS_EVENTLOG_CANT_START NTStatus = 0xC000018F + STATUS_TRUST_FAILURE NTStatus = 0xC0000190 + STATUS_MUTANT_LIMIT_EXCEEDED NTStatus = 0xC0000191 + STATUS_NETLOGON_NOT_STARTED NTStatus = 0xC0000192 + STATUS_ACCOUNT_EXPIRED NTStatus = 0xC0000193 + STATUS_POSSIBLE_DEADLOCK NTStatus = 0xC0000194 + STATUS_NETWORK_CREDENTIAL_CONFLICT NTStatus = 0xC0000195 + STATUS_REMOTE_SESSION_LIMIT NTStatus = 0xC0000196 + STATUS_EVENTLOG_FILE_CHANGED NTStatus = 0xC0000197 + STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT NTStatus = 0xC0000198 + STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT NTStatus = 0xC0000199 + STATUS_NOLOGON_SERVER_TRUST_ACCOUNT NTStatus = 0xC000019A + STATUS_DOMAIN_TRUST_INCONSISTENT NTStatus = 0xC000019B + STATUS_FS_DRIVER_REQUIRED NTStatus = 0xC000019C + STATUS_IMAGE_ALREADY_LOADED_AS_DLL NTStatus = 0xC000019D + STATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING NTStatus = 0xC000019E + STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME NTStatus = 0xC000019F + STATUS_SECURITY_STREAM_IS_INCONSISTENT NTStatus = 0xC00001A0 + STATUS_INVALID_LOCK_RANGE NTStatus = 0xC00001A1 + STATUS_INVALID_ACE_CONDITION NTStatus = 0xC00001A2 + STATUS_IMAGE_SUBSYSTEM_NOT_PRESENT NTStatus = 0xC00001A3 + STATUS_NOTIFICATION_GUID_ALREADY_DEFINED NTStatus = 0xC00001A4 + STATUS_INVALID_EXCEPTION_HANDLER NTStatus = 0xC00001A5 + STATUS_DUPLICATE_PRIVILEGES NTStatus = 0xC00001A6 + STATUS_NOT_ALLOWED_ON_SYSTEM_FILE NTStatus = 0xC00001A7 + STATUS_REPAIR_NEEDED NTStatus = 0xC00001A8 + STATUS_QUOTA_NOT_ENABLED NTStatus = 0xC00001A9 + STATUS_NO_APPLICATION_PACKAGE NTStatus = 0xC00001AA + STATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS NTStatus = 0xC00001AB + STATUS_NOT_SAME_OBJECT NTStatus = 0xC00001AC + STATUS_FATAL_MEMORY_EXHAUSTION NTStatus = 0xC00001AD + STATUS_ERROR_PROCESS_NOT_IN_JOB NTStatus = 0xC00001AE + STATUS_CPU_SET_INVALID NTStatus = 0xC00001AF + STATUS_IO_DEVICE_INVALID_DATA NTStatus = 0xC00001B0 + STATUS_IO_UNALIGNED_WRITE NTStatus = 0xC00001B1 + STATUS_NETWORK_OPEN_RESTRICTION NTStatus = 0xC0000201 + STATUS_NO_USER_SESSION_KEY NTStatus = 0xC0000202 + STATUS_USER_SESSION_DELETED NTStatus = 0xC0000203 + STATUS_RESOURCE_LANG_NOT_FOUND NTStatus = 0xC0000204 + STATUS_INSUFF_SERVER_RESOURCES NTStatus = 0xC0000205 + STATUS_INVALID_BUFFER_SIZE NTStatus = 0xC0000206 + STATUS_INVALID_ADDRESS_COMPONENT NTStatus = 0xC0000207 + STATUS_INVALID_ADDRESS_WILDCARD NTStatus = 0xC0000208 + STATUS_TOO_MANY_ADDRESSES NTStatus = 0xC0000209 + STATUS_ADDRESS_ALREADY_EXISTS NTStatus = 0xC000020A + STATUS_ADDRESS_CLOSED NTStatus = 0xC000020B + STATUS_CONNECTION_DISCONNECTED NTStatus = 0xC000020C + STATUS_CONNECTION_RESET NTStatus = 0xC000020D + STATUS_TOO_MANY_NODES NTStatus = 0xC000020E + STATUS_TRANSACTION_ABORTED NTStatus = 0xC000020F + STATUS_TRANSACTION_TIMED_OUT NTStatus = 0xC0000210 + STATUS_TRANSACTION_NO_RELEASE NTStatus = 0xC0000211 + STATUS_TRANSACTION_NO_MATCH NTStatus = 0xC0000212 + STATUS_TRANSACTION_RESPONDED NTStatus = 0xC0000213 + STATUS_TRANSACTION_INVALID_ID NTStatus = 0xC0000214 + STATUS_TRANSACTION_INVALID_TYPE NTStatus = 0xC0000215 + STATUS_NOT_SERVER_SESSION NTStatus = 0xC0000216 + STATUS_NOT_CLIENT_SESSION NTStatus = 0xC0000217 + STATUS_CANNOT_LOAD_REGISTRY_FILE NTStatus = 0xC0000218 + STATUS_DEBUG_ATTACH_FAILED NTStatus = 0xC0000219 + STATUS_SYSTEM_PROCESS_TERMINATED NTStatus = 0xC000021A + STATUS_DATA_NOT_ACCEPTED NTStatus = 0xC000021B + STATUS_NO_BROWSER_SERVERS_FOUND NTStatus = 0xC000021C + STATUS_VDM_HARD_ERROR NTStatus = 0xC000021D + STATUS_DRIVER_CANCEL_TIMEOUT NTStatus = 0xC000021E + STATUS_REPLY_MESSAGE_MISMATCH NTStatus = 0xC000021F + STATUS_MAPPED_ALIGNMENT NTStatus = 0xC0000220 + STATUS_IMAGE_CHECKSUM_MISMATCH NTStatus = 0xC0000221 + STATUS_LOST_WRITEBEHIND_DATA NTStatus = 0xC0000222 + STATUS_CLIENT_SERVER_PARAMETERS_INVALID NTStatus = 0xC0000223 + STATUS_PASSWORD_MUST_CHANGE NTStatus = 0xC0000224 + STATUS_NOT_FOUND NTStatus = 0xC0000225 + STATUS_NOT_TINY_STREAM NTStatus = 0xC0000226 + STATUS_RECOVERY_FAILURE NTStatus = 0xC0000227 + STATUS_STACK_OVERFLOW_READ NTStatus = 0xC0000228 + STATUS_FAIL_CHECK NTStatus = 0xC0000229 + STATUS_DUPLICATE_OBJECTID NTStatus = 0xC000022A + STATUS_OBJECTID_EXISTS NTStatus = 0xC000022B + STATUS_CONVERT_TO_LARGE NTStatus = 0xC000022C + STATUS_RETRY NTStatus = 0xC000022D + STATUS_FOUND_OUT_OF_SCOPE NTStatus = 0xC000022E + STATUS_ALLOCATE_BUCKET NTStatus = 0xC000022F + STATUS_PROPSET_NOT_FOUND NTStatus = 0xC0000230 + STATUS_MARSHALL_OVERFLOW NTStatus = 0xC0000231 + STATUS_INVALID_VARIANT NTStatus = 0xC0000232 + STATUS_DOMAIN_CONTROLLER_NOT_FOUND NTStatus = 0xC0000233 + STATUS_ACCOUNT_LOCKED_OUT NTStatus = 0xC0000234 + STATUS_HANDLE_NOT_CLOSABLE NTStatus = 0xC0000235 + STATUS_CONNECTION_REFUSED NTStatus = 0xC0000236 + STATUS_GRACEFUL_DISCONNECT NTStatus = 0xC0000237 + STATUS_ADDRESS_ALREADY_ASSOCIATED NTStatus = 0xC0000238 + STATUS_ADDRESS_NOT_ASSOCIATED NTStatus = 0xC0000239 + STATUS_CONNECTION_INVALID NTStatus = 0xC000023A + STATUS_CONNECTION_ACTIVE NTStatus = 0xC000023B + STATUS_NETWORK_UNREACHABLE NTStatus = 0xC000023C + STATUS_HOST_UNREACHABLE NTStatus = 0xC000023D + STATUS_PROTOCOL_UNREACHABLE NTStatus = 0xC000023E + STATUS_PORT_UNREACHABLE NTStatus = 0xC000023F + STATUS_REQUEST_ABORTED NTStatus = 0xC0000240 + STATUS_CONNECTION_ABORTED NTStatus = 0xC0000241 + STATUS_BAD_COMPRESSION_BUFFER NTStatus = 0xC0000242 + STATUS_USER_MAPPED_FILE NTStatus = 0xC0000243 + STATUS_AUDIT_FAILED NTStatus = 0xC0000244 + STATUS_TIMER_RESOLUTION_NOT_SET NTStatus = 0xC0000245 + STATUS_CONNECTION_COUNT_LIMIT NTStatus = 0xC0000246 + STATUS_LOGIN_TIME_RESTRICTION NTStatus = 0xC0000247 + STATUS_LOGIN_WKSTA_RESTRICTION NTStatus = 0xC0000248 + STATUS_IMAGE_MP_UP_MISMATCH NTStatus = 0xC0000249 + STATUS_INSUFFICIENT_LOGON_INFO NTStatus = 0xC0000250 + STATUS_BAD_DLL_ENTRYPOINT NTStatus = 0xC0000251 + STATUS_BAD_SERVICE_ENTRYPOINT NTStatus = 0xC0000252 + STATUS_LPC_REPLY_LOST NTStatus = 0xC0000253 + STATUS_IP_ADDRESS_CONFLICT1 NTStatus = 0xC0000254 + STATUS_IP_ADDRESS_CONFLICT2 NTStatus = 0xC0000255 + STATUS_REGISTRY_QUOTA_LIMIT NTStatus = 0xC0000256 + STATUS_PATH_NOT_COVERED NTStatus = 0xC0000257 + STATUS_NO_CALLBACK_ACTIVE NTStatus = 0xC0000258 + STATUS_LICENSE_QUOTA_EXCEEDED NTStatus = 0xC0000259 + STATUS_PWD_TOO_SHORT NTStatus = 0xC000025A + STATUS_PWD_TOO_RECENT NTStatus = 0xC000025B + STATUS_PWD_HISTORY_CONFLICT NTStatus = 0xC000025C + STATUS_PLUGPLAY_NO_DEVICE NTStatus = 0xC000025E + STATUS_UNSUPPORTED_COMPRESSION NTStatus = 0xC000025F + STATUS_INVALID_HW_PROFILE NTStatus = 0xC0000260 + STATUS_INVALID_PLUGPLAY_DEVICE_PATH NTStatus = 0xC0000261 + STATUS_DRIVER_ORDINAL_NOT_FOUND NTStatus = 0xC0000262 + STATUS_DRIVER_ENTRYPOINT_NOT_FOUND NTStatus = 0xC0000263 + STATUS_RESOURCE_NOT_OWNED NTStatus = 0xC0000264 + STATUS_TOO_MANY_LINKS NTStatus = 0xC0000265 + STATUS_QUOTA_LIST_INCONSISTENT NTStatus = 0xC0000266 + STATUS_FILE_IS_OFFLINE NTStatus = 0xC0000267 + STATUS_EVALUATION_EXPIRATION NTStatus = 0xC0000268 + STATUS_ILLEGAL_DLL_RELOCATION NTStatus = 0xC0000269 + STATUS_LICENSE_VIOLATION NTStatus = 0xC000026A + STATUS_DLL_INIT_FAILED_LOGOFF NTStatus = 0xC000026B + STATUS_DRIVER_UNABLE_TO_LOAD NTStatus = 0xC000026C + STATUS_DFS_UNAVAILABLE NTStatus = 0xC000026D + STATUS_VOLUME_DISMOUNTED NTStatus = 0xC000026E + STATUS_WX86_INTERNAL_ERROR NTStatus = 0xC000026F + STATUS_WX86_FLOAT_STACK_CHECK NTStatus = 0xC0000270 + STATUS_VALIDATE_CONTINUE NTStatus = 0xC0000271 + STATUS_NO_MATCH NTStatus = 0xC0000272 + STATUS_NO_MORE_MATCHES NTStatus = 0xC0000273 + STATUS_NOT_A_REPARSE_POINT NTStatus = 0xC0000275 + STATUS_IO_REPARSE_TAG_INVALID NTStatus = 0xC0000276 + STATUS_IO_REPARSE_TAG_MISMATCH NTStatus = 0xC0000277 + STATUS_IO_REPARSE_DATA_INVALID NTStatus = 0xC0000278 + STATUS_IO_REPARSE_TAG_NOT_HANDLED NTStatus = 0xC0000279 + STATUS_PWD_TOO_LONG NTStatus = 0xC000027A + STATUS_STOWED_EXCEPTION NTStatus = 0xC000027B + STATUS_CONTEXT_STOWED_EXCEPTION NTStatus = 0xC000027C + STATUS_REPARSE_POINT_NOT_RESOLVED NTStatus = 0xC0000280 + STATUS_DIRECTORY_IS_A_REPARSE_POINT NTStatus = 0xC0000281 + STATUS_RANGE_LIST_CONFLICT NTStatus = 0xC0000282 + STATUS_SOURCE_ELEMENT_EMPTY NTStatus = 0xC0000283 + STATUS_DESTINATION_ELEMENT_FULL NTStatus = 0xC0000284 + STATUS_ILLEGAL_ELEMENT_ADDRESS NTStatus = 0xC0000285 + STATUS_MAGAZINE_NOT_PRESENT NTStatus = 0xC0000286 + STATUS_REINITIALIZATION_NEEDED NTStatus = 0xC0000287 + STATUS_DEVICE_REQUIRES_CLEANING NTStatus = 0x80000288 + STATUS_DEVICE_DOOR_OPEN NTStatus = 0x80000289 + STATUS_ENCRYPTION_FAILED NTStatus = 0xC000028A + STATUS_DECRYPTION_FAILED NTStatus = 0xC000028B + STATUS_RANGE_NOT_FOUND NTStatus = 0xC000028C + STATUS_NO_RECOVERY_POLICY NTStatus = 0xC000028D + STATUS_NO_EFS NTStatus = 0xC000028E + STATUS_WRONG_EFS NTStatus = 0xC000028F + STATUS_NO_USER_KEYS NTStatus = 0xC0000290 + STATUS_FILE_NOT_ENCRYPTED NTStatus = 0xC0000291 + STATUS_NOT_EXPORT_FORMAT NTStatus = 0xC0000292 + STATUS_FILE_ENCRYPTED NTStatus = 0xC0000293 + STATUS_WAKE_SYSTEM NTStatus = 0x40000294 + STATUS_WMI_GUID_NOT_FOUND NTStatus = 0xC0000295 + STATUS_WMI_INSTANCE_NOT_FOUND NTStatus = 0xC0000296 + STATUS_WMI_ITEMID_NOT_FOUND NTStatus = 0xC0000297 + STATUS_WMI_TRY_AGAIN NTStatus = 0xC0000298 + STATUS_SHARED_POLICY NTStatus = 0xC0000299 + STATUS_POLICY_OBJECT_NOT_FOUND NTStatus = 0xC000029A + STATUS_POLICY_ONLY_IN_DS NTStatus = 0xC000029B + STATUS_VOLUME_NOT_UPGRADED NTStatus = 0xC000029C + STATUS_REMOTE_STORAGE_NOT_ACTIVE NTStatus = 0xC000029D + STATUS_REMOTE_STORAGE_MEDIA_ERROR NTStatus = 0xC000029E + STATUS_NO_TRACKING_SERVICE NTStatus = 0xC000029F + STATUS_SERVER_SID_MISMATCH NTStatus = 0xC00002A0 + STATUS_DS_NO_ATTRIBUTE_OR_VALUE NTStatus = 0xC00002A1 + STATUS_DS_INVALID_ATTRIBUTE_SYNTAX NTStatus = 0xC00002A2 + STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED NTStatus = 0xC00002A3 + STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS NTStatus = 0xC00002A4 + STATUS_DS_BUSY NTStatus = 0xC00002A5 + STATUS_DS_UNAVAILABLE NTStatus = 0xC00002A6 + STATUS_DS_NO_RIDS_ALLOCATED NTStatus = 0xC00002A7 + STATUS_DS_NO_MORE_RIDS NTStatus = 0xC00002A8 + STATUS_DS_INCORRECT_ROLE_OWNER NTStatus = 0xC00002A9 + STATUS_DS_RIDMGR_INIT_ERROR NTStatus = 0xC00002AA + STATUS_DS_OBJ_CLASS_VIOLATION NTStatus = 0xC00002AB + STATUS_DS_CANT_ON_NON_LEAF NTStatus = 0xC00002AC + STATUS_DS_CANT_ON_RDN NTStatus = 0xC00002AD + STATUS_DS_CANT_MOD_OBJ_CLASS NTStatus = 0xC00002AE + STATUS_DS_CROSS_DOM_MOVE_FAILED NTStatus = 0xC00002AF + STATUS_DS_GC_NOT_AVAILABLE NTStatus = 0xC00002B0 + STATUS_DIRECTORY_SERVICE_REQUIRED NTStatus = 0xC00002B1 + STATUS_REPARSE_ATTRIBUTE_CONFLICT NTStatus = 0xC00002B2 + STATUS_CANT_ENABLE_DENY_ONLY NTStatus = 0xC00002B3 + STATUS_FLOAT_MULTIPLE_FAULTS NTStatus = 0xC00002B4 + STATUS_FLOAT_MULTIPLE_TRAPS NTStatus = 0xC00002B5 + STATUS_DEVICE_REMOVED NTStatus = 0xC00002B6 + STATUS_JOURNAL_DELETE_IN_PROGRESS NTStatus = 0xC00002B7 + STATUS_JOURNAL_NOT_ACTIVE NTStatus = 0xC00002B8 + STATUS_NOINTERFACE NTStatus = 0xC00002B9 + STATUS_DS_RIDMGR_DISABLED NTStatus = 0xC00002BA + STATUS_DS_ADMIN_LIMIT_EXCEEDED NTStatus = 0xC00002C1 + STATUS_DRIVER_FAILED_SLEEP NTStatus = 0xC00002C2 + STATUS_MUTUAL_AUTHENTICATION_FAILED NTStatus = 0xC00002C3 + STATUS_CORRUPT_SYSTEM_FILE NTStatus = 0xC00002C4 + STATUS_DATATYPE_MISALIGNMENT_ERROR NTStatus = 0xC00002C5 + STATUS_WMI_READ_ONLY NTStatus = 0xC00002C6 + STATUS_WMI_SET_FAILURE NTStatus = 0xC00002C7 + STATUS_COMMITMENT_MINIMUM NTStatus = 0xC00002C8 + STATUS_REG_NAT_CONSUMPTION NTStatus = 0xC00002C9 + STATUS_TRANSPORT_FULL NTStatus = 0xC00002CA + STATUS_DS_SAM_INIT_FAILURE NTStatus = 0xC00002CB + STATUS_ONLY_IF_CONNECTED NTStatus = 0xC00002CC + STATUS_DS_SENSITIVE_GROUP_VIOLATION NTStatus = 0xC00002CD + STATUS_PNP_RESTART_ENUMERATION NTStatus = 0xC00002CE + STATUS_JOURNAL_ENTRY_DELETED NTStatus = 0xC00002CF + STATUS_DS_CANT_MOD_PRIMARYGROUPID NTStatus = 0xC00002D0 + STATUS_SYSTEM_IMAGE_BAD_SIGNATURE NTStatus = 0xC00002D1 + STATUS_PNP_REBOOT_REQUIRED NTStatus = 0xC00002D2 + STATUS_POWER_STATE_INVALID NTStatus = 0xC00002D3 + STATUS_DS_INVALID_GROUP_TYPE NTStatus = 0xC00002D4 + STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN NTStatus = 0xC00002D5 + STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN NTStatus = 0xC00002D6 + STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER NTStatus = 0xC00002D7 + STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER NTStatus = 0xC00002D8 + STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER NTStatus = 0xC00002D9 + STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER NTStatus = 0xC00002DA + STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER NTStatus = 0xC00002DB + STATUS_DS_HAVE_PRIMARY_MEMBERS NTStatus = 0xC00002DC + STATUS_WMI_NOT_SUPPORTED NTStatus = 0xC00002DD + STATUS_INSUFFICIENT_POWER NTStatus = 0xC00002DE + STATUS_SAM_NEED_BOOTKEY_PASSWORD NTStatus = 0xC00002DF + STATUS_SAM_NEED_BOOTKEY_FLOPPY NTStatus = 0xC00002E0 + STATUS_DS_CANT_START NTStatus = 0xC00002E1 + STATUS_DS_INIT_FAILURE NTStatus = 0xC00002E2 + STATUS_SAM_INIT_FAILURE NTStatus = 0xC00002E3 + STATUS_DS_GC_REQUIRED NTStatus = 0xC00002E4 + STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY NTStatus = 0xC00002E5 + STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS NTStatus = 0xC00002E6 + STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED NTStatus = 0xC00002E7 + STATUS_MULTIPLE_FAULT_VIOLATION NTStatus = 0xC00002E8 + STATUS_CURRENT_DOMAIN_NOT_ALLOWED NTStatus = 0xC00002E9 + STATUS_CANNOT_MAKE NTStatus = 0xC00002EA + STATUS_SYSTEM_SHUTDOWN NTStatus = 0xC00002EB + STATUS_DS_INIT_FAILURE_CONSOLE NTStatus = 0xC00002EC + STATUS_DS_SAM_INIT_FAILURE_CONSOLE NTStatus = 0xC00002ED + STATUS_UNFINISHED_CONTEXT_DELETED NTStatus = 0xC00002EE + STATUS_NO_TGT_REPLY NTStatus = 0xC00002EF + STATUS_OBJECTID_NOT_FOUND NTStatus = 0xC00002F0 + STATUS_NO_IP_ADDRESSES NTStatus = 0xC00002F1 + STATUS_WRONG_CREDENTIAL_HANDLE NTStatus = 0xC00002F2 + STATUS_CRYPTO_SYSTEM_INVALID NTStatus = 0xC00002F3 + STATUS_MAX_REFERRALS_EXCEEDED NTStatus = 0xC00002F4 + STATUS_MUST_BE_KDC NTStatus = 0xC00002F5 + STATUS_STRONG_CRYPTO_NOT_SUPPORTED NTStatus = 0xC00002F6 + STATUS_TOO_MANY_PRINCIPALS NTStatus = 0xC00002F7 + STATUS_NO_PA_DATA NTStatus = 0xC00002F8 + STATUS_PKINIT_NAME_MISMATCH NTStatus = 0xC00002F9 + STATUS_SMARTCARD_LOGON_REQUIRED NTStatus = 0xC00002FA + STATUS_KDC_INVALID_REQUEST NTStatus = 0xC00002FB + STATUS_KDC_UNABLE_TO_REFER NTStatus = 0xC00002FC + STATUS_KDC_UNKNOWN_ETYPE NTStatus = 0xC00002FD + STATUS_SHUTDOWN_IN_PROGRESS NTStatus = 0xC00002FE + STATUS_SERVER_SHUTDOWN_IN_PROGRESS NTStatus = 0xC00002FF + STATUS_NOT_SUPPORTED_ON_SBS NTStatus = 0xC0000300 + STATUS_WMI_GUID_DISCONNECTED NTStatus = 0xC0000301 + STATUS_WMI_ALREADY_DISABLED NTStatus = 0xC0000302 + STATUS_WMI_ALREADY_ENABLED NTStatus = 0xC0000303 + STATUS_MFT_TOO_FRAGMENTED NTStatus = 0xC0000304 + STATUS_COPY_PROTECTION_FAILURE NTStatus = 0xC0000305 + STATUS_CSS_AUTHENTICATION_FAILURE NTStatus = 0xC0000306 + STATUS_CSS_KEY_NOT_PRESENT NTStatus = 0xC0000307 + STATUS_CSS_KEY_NOT_ESTABLISHED NTStatus = 0xC0000308 + STATUS_CSS_SCRAMBLED_SECTOR NTStatus = 0xC0000309 + STATUS_CSS_REGION_MISMATCH NTStatus = 0xC000030A + STATUS_CSS_RESETS_EXHAUSTED NTStatus = 0xC000030B + STATUS_PASSWORD_CHANGE_REQUIRED NTStatus = 0xC000030C + STATUS_LOST_MODE_LOGON_RESTRICTION NTStatus = 0xC000030D + STATUS_PKINIT_FAILURE NTStatus = 0xC0000320 + STATUS_SMARTCARD_SUBSYSTEM_FAILURE NTStatus = 0xC0000321 + STATUS_NO_KERB_KEY NTStatus = 0xC0000322 + STATUS_HOST_DOWN NTStatus = 0xC0000350 + STATUS_UNSUPPORTED_PREAUTH NTStatus = 0xC0000351 + STATUS_EFS_ALG_BLOB_TOO_BIG NTStatus = 0xC0000352 + STATUS_PORT_NOT_SET NTStatus = 0xC0000353 + STATUS_DEBUGGER_INACTIVE NTStatus = 0xC0000354 + STATUS_DS_VERSION_CHECK_FAILURE NTStatus = 0xC0000355 + STATUS_AUDITING_DISABLED NTStatus = 0xC0000356 + STATUS_PRENT4_MACHINE_ACCOUNT NTStatus = 0xC0000357 + STATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER NTStatus = 0xC0000358 + STATUS_INVALID_IMAGE_WIN_32 NTStatus = 0xC0000359 + STATUS_INVALID_IMAGE_WIN_64 NTStatus = 0xC000035A + STATUS_BAD_BINDINGS NTStatus = 0xC000035B + STATUS_NETWORK_SESSION_EXPIRED NTStatus = 0xC000035C + STATUS_APPHELP_BLOCK NTStatus = 0xC000035D + STATUS_ALL_SIDS_FILTERED NTStatus = 0xC000035E + STATUS_NOT_SAFE_MODE_DRIVER NTStatus = 0xC000035F + STATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT NTStatus = 0xC0000361 + STATUS_ACCESS_DISABLED_BY_POLICY_PATH NTStatus = 0xC0000362 + STATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER NTStatus = 0xC0000363 + STATUS_ACCESS_DISABLED_BY_POLICY_OTHER NTStatus = 0xC0000364 + STATUS_FAILED_DRIVER_ENTRY NTStatus = 0xC0000365 + STATUS_DEVICE_ENUMERATION_ERROR NTStatus = 0xC0000366 + STATUS_MOUNT_POINT_NOT_RESOLVED NTStatus = 0xC0000368 + STATUS_INVALID_DEVICE_OBJECT_PARAMETER NTStatus = 0xC0000369 + STATUS_MCA_OCCURED NTStatus = 0xC000036A + STATUS_DRIVER_BLOCKED_CRITICAL NTStatus = 0xC000036B + STATUS_DRIVER_BLOCKED NTStatus = 0xC000036C + STATUS_DRIVER_DATABASE_ERROR NTStatus = 0xC000036D + STATUS_SYSTEM_HIVE_TOO_LARGE NTStatus = 0xC000036E + STATUS_INVALID_IMPORT_OF_NON_DLL NTStatus = 0xC000036F + STATUS_DS_SHUTTING_DOWN NTStatus = 0x40000370 + STATUS_NO_SECRETS NTStatus = 0xC0000371 + STATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY NTStatus = 0xC0000372 + STATUS_FAILED_STACK_SWITCH NTStatus = 0xC0000373 + STATUS_HEAP_CORRUPTION NTStatus = 0xC0000374 + STATUS_SMARTCARD_WRONG_PIN NTStatus = 0xC0000380 + STATUS_SMARTCARD_CARD_BLOCKED NTStatus = 0xC0000381 + STATUS_SMARTCARD_CARD_NOT_AUTHENTICATED NTStatus = 0xC0000382 + STATUS_SMARTCARD_NO_CARD NTStatus = 0xC0000383 + STATUS_SMARTCARD_NO_KEY_CONTAINER NTStatus = 0xC0000384 + STATUS_SMARTCARD_NO_CERTIFICATE NTStatus = 0xC0000385 + STATUS_SMARTCARD_NO_KEYSET NTStatus = 0xC0000386 + STATUS_SMARTCARD_IO_ERROR NTStatus = 0xC0000387 + STATUS_DOWNGRADE_DETECTED NTStatus = 0xC0000388 + STATUS_SMARTCARD_CERT_REVOKED NTStatus = 0xC0000389 + STATUS_ISSUING_CA_UNTRUSTED NTStatus = 0xC000038A + STATUS_REVOCATION_OFFLINE_C NTStatus = 0xC000038B + STATUS_PKINIT_CLIENT_FAILURE NTStatus = 0xC000038C + STATUS_SMARTCARD_CERT_EXPIRED NTStatus = 0xC000038D + STATUS_DRIVER_FAILED_PRIOR_UNLOAD NTStatus = 0xC000038E + STATUS_SMARTCARD_SILENT_CONTEXT NTStatus = 0xC000038F + STATUS_PER_USER_TRUST_QUOTA_EXCEEDED NTStatus = 0xC0000401 + STATUS_ALL_USER_TRUST_QUOTA_EXCEEDED NTStatus = 0xC0000402 + STATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED NTStatus = 0xC0000403 + STATUS_DS_NAME_NOT_UNIQUE NTStatus = 0xC0000404 + STATUS_DS_DUPLICATE_ID_FOUND NTStatus = 0xC0000405 + STATUS_DS_GROUP_CONVERSION_ERROR NTStatus = 0xC0000406 + STATUS_VOLSNAP_PREPARE_HIBERNATE NTStatus = 0xC0000407 + STATUS_USER2USER_REQUIRED NTStatus = 0xC0000408 + STATUS_STACK_BUFFER_OVERRUN NTStatus = 0xC0000409 + STATUS_NO_S4U_PROT_SUPPORT NTStatus = 0xC000040A + STATUS_CROSSREALM_DELEGATION_FAILURE NTStatus = 0xC000040B + STATUS_REVOCATION_OFFLINE_KDC NTStatus = 0xC000040C + STATUS_ISSUING_CA_UNTRUSTED_KDC NTStatus = 0xC000040D + STATUS_KDC_CERT_EXPIRED NTStatus = 0xC000040E + STATUS_KDC_CERT_REVOKED NTStatus = 0xC000040F + STATUS_PARAMETER_QUOTA_EXCEEDED NTStatus = 0xC0000410 + STATUS_HIBERNATION_FAILURE NTStatus = 0xC0000411 + STATUS_DELAY_LOAD_FAILED NTStatus = 0xC0000412 + STATUS_AUTHENTICATION_FIREWALL_FAILED NTStatus = 0xC0000413 + STATUS_VDM_DISALLOWED NTStatus = 0xC0000414 + STATUS_HUNG_DISPLAY_DRIVER_THREAD NTStatus = 0xC0000415 + STATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE NTStatus = 0xC0000416 + STATUS_INVALID_CRUNTIME_PARAMETER NTStatus = 0xC0000417 + STATUS_NTLM_BLOCKED NTStatus = 0xC0000418 + STATUS_DS_SRC_SID_EXISTS_IN_FOREST NTStatus = 0xC0000419 + STATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST NTStatus = 0xC000041A + STATUS_DS_FLAT_NAME_EXISTS_IN_FOREST NTStatus = 0xC000041B + STATUS_INVALID_USER_PRINCIPAL_NAME NTStatus = 0xC000041C + STATUS_FATAL_USER_CALLBACK_EXCEPTION NTStatus = 0xC000041D + STATUS_ASSERTION_FAILURE NTStatus = 0xC0000420 + STATUS_VERIFIER_STOP NTStatus = 0xC0000421 + STATUS_CALLBACK_POP_STACK NTStatus = 0xC0000423 + STATUS_INCOMPATIBLE_DRIVER_BLOCKED NTStatus = 0xC0000424 + STATUS_HIVE_UNLOADED NTStatus = 0xC0000425 + STATUS_COMPRESSION_DISABLED NTStatus = 0xC0000426 + STATUS_FILE_SYSTEM_LIMITATION NTStatus = 0xC0000427 + STATUS_INVALID_IMAGE_HASH NTStatus = 0xC0000428 + STATUS_NOT_CAPABLE NTStatus = 0xC0000429 + STATUS_REQUEST_OUT_OF_SEQUENCE NTStatus = 0xC000042A + STATUS_IMPLEMENTATION_LIMIT NTStatus = 0xC000042B + STATUS_ELEVATION_REQUIRED NTStatus = 0xC000042C + STATUS_NO_SECURITY_CONTEXT NTStatus = 0xC000042D + STATUS_PKU2U_CERT_FAILURE NTStatus = 0xC000042F + STATUS_BEYOND_VDL NTStatus = 0xC0000432 + STATUS_ENCOUNTERED_WRITE_IN_PROGRESS NTStatus = 0xC0000433 + STATUS_PTE_CHANGED NTStatus = 0xC0000434 + STATUS_PURGE_FAILED NTStatus = 0xC0000435 + STATUS_CRED_REQUIRES_CONFIRMATION NTStatus = 0xC0000440 + STATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE NTStatus = 0xC0000441 + STATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER NTStatus = 0xC0000442 + STATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE NTStatus = 0xC0000443 + STATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE NTStatus = 0xC0000444 + STATUS_CS_ENCRYPTION_FILE_NOT_CSE NTStatus = 0xC0000445 + STATUS_INVALID_LABEL NTStatus = 0xC0000446 + STATUS_DRIVER_PROCESS_TERMINATED NTStatus = 0xC0000450 + STATUS_AMBIGUOUS_SYSTEM_DEVICE NTStatus = 0xC0000451 + STATUS_SYSTEM_DEVICE_NOT_FOUND NTStatus = 0xC0000452 + STATUS_RESTART_BOOT_APPLICATION NTStatus = 0xC0000453 + STATUS_INSUFFICIENT_NVRAM_RESOURCES NTStatus = 0xC0000454 + STATUS_INVALID_SESSION NTStatus = 0xC0000455 + STATUS_THREAD_ALREADY_IN_SESSION NTStatus = 0xC0000456 + STATUS_THREAD_NOT_IN_SESSION NTStatus = 0xC0000457 + STATUS_INVALID_WEIGHT NTStatus = 0xC0000458 + STATUS_REQUEST_PAUSED NTStatus = 0xC0000459 + STATUS_NO_RANGES_PROCESSED NTStatus = 0xC0000460 + STATUS_DISK_RESOURCES_EXHAUSTED NTStatus = 0xC0000461 + STATUS_NEEDS_REMEDIATION NTStatus = 0xC0000462 + STATUS_DEVICE_FEATURE_NOT_SUPPORTED NTStatus = 0xC0000463 + STATUS_DEVICE_UNREACHABLE NTStatus = 0xC0000464 + STATUS_INVALID_TOKEN NTStatus = 0xC0000465 + STATUS_SERVER_UNAVAILABLE NTStatus = 0xC0000466 + STATUS_FILE_NOT_AVAILABLE NTStatus = 0xC0000467 + STATUS_DEVICE_INSUFFICIENT_RESOURCES NTStatus = 0xC0000468 + STATUS_PACKAGE_UPDATING NTStatus = 0xC0000469 + STATUS_NOT_READ_FROM_COPY NTStatus = 0xC000046A + STATUS_FT_WRITE_FAILURE NTStatus = 0xC000046B + STATUS_FT_DI_SCAN_REQUIRED NTStatus = 0xC000046C + STATUS_OBJECT_NOT_EXTERNALLY_BACKED NTStatus = 0xC000046D + STATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN NTStatus = 0xC000046E + STATUS_COMPRESSION_NOT_BENEFICIAL NTStatus = 0xC000046F + STATUS_DATA_CHECKSUM_ERROR NTStatus = 0xC0000470 + STATUS_INTERMIXED_KERNEL_EA_OPERATION NTStatus = 0xC0000471 + STATUS_TRIM_READ_ZERO_NOT_SUPPORTED NTStatus = 0xC0000472 + STATUS_TOO_MANY_SEGMENT_DESCRIPTORS NTStatus = 0xC0000473 + STATUS_INVALID_OFFSET_ALIGNMENT NTStatus = 0xC0000474 + STATUS_INVALID_FIELD_IN_PARAMETER_LIST NTStatus = 0xC0000475 + STATUS_OPERATION_IN_PROGRESS NTStatus = 0xC0000476 + STATUS_INVALID_INITIATOR_TARGET_PATH NTStatus = 0xC0000477 + STATUS_SCRUB_DATA_DISABLED NTStatus = 0xC0000478 + STATUS_NOT_REDUNDANT_STORAGE NTStatus = 0xC0000479 + STATUS_RESIDENT_FILE_NOT_SUPPORTED NTStatus = 0xC000047A + STATUS_COMPRESSED_FILE_NOT_SUPPORTED NTStatus = 0xC000047B + STATUS_DIRECTORY_NOT_SUPPORTED NTStatus = 0xC000047C + STATUS_IO_OPERATION_TIMEOUT NTStatus = 0xC000047D + STATUS_SYSTEM_NEEDS_REMEDIATION NTStatus = 0xC000047E + STATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN NTStatus = 0xC000047F + STATUS_SHARE_UNAVAILABLE NTStatus = 0xC0000480 + STATUS_APISET_NOT_HOSTED NTStatus = 0xC0000481 + STATUS_APISET_NOT_PRESENT NTStatus = 0xC0000482 + STATUS_DEVICE_HARDWARE_ERROR NTStatus = 0xC0000483 + STATUS_FIRMWARE_SLOT_INVALID NTStatus = 0xC0000484 + STATUS_FIRMWARE_IMAGE_INVALID NTStatus = 0xC0000485 + STATUS_STORAGE_TOPOLOGY_ID_MISMATCH NTStatus = 0xC0000486 + STATUS_WIM_NOT_BOOTABLE NTStatus = 0xC0000487 + STATUS_BLOCKED_BY_PARENTAL_CONTROLS NTStatus = 0xC0000488 + STATUS_NEEDS_REGISTRATION NTStatus = 0xC0000489 + STATUS_QUOTA_ACTIVITY NTStatus = 0xC000048A + STATUS_CALLBACK_INVOKE_INLINE NTStatus = 0xC000048B + STATUS_BLOCK_TOO_MANY_REFERENCES NTStatus = 0xC000048C + STATUS_MARKED_TO_DISALLOW_WRITES NTStatus = 0xC000048D + STATUS_NETWORK_ACCESS_DENIED_EDP NTStatus = 0xC000048E + STATUS_ENCLAVE_FAILURE NTStatus = 0xC000048F + STATUS_PNP_NO_COMPAT_DRIVERS NTStatus = 0xC0000490 + STATUS_PNP_DRIVER_PACKAGE_NOT_FOUND NTStatus = 0xC0000491 + STATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND NTStatus = 0xC0000492 + STATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE NTStatus = 0xC0000493 + STATUS_PNP_FUNCTION_DRIVER_REQUIRED NTStatus = 0xC0000494 + STATUS_PNP_DEVICE_CONFIGURATION_PENDING NTStatus = 0xC0000495 + STATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL NTStatus = 0xC0000496 + STATUS_PACKAGE_NOT_AVAILABLE NTStatus = 0xC0000497 + STATUS_DEVICE_IN_MAINTENANCE NTStatus = 0xC0000499 + STATUS_NOT_SUPPORTED_ON_DAX NTStatus = 0xC000049A + STATUS_FREE_SPACE_TOO_FRAGMENTED NTStatus = 0xC000049B + STATUS_DAX_MAPPING_EXISTS NTStatus = 0xC000049C + STATUS_CHILD_PROCESS_BLOCKED NTStatus = 0xC000049D + STATUS_STORAGE_LOST_DATA_PERSISTENCE NTStatus = 0xC000049E + STATUS_VRF_CFG_ENABLED NTStatus = 0xC000049F + STATUS_PARTITION_TERMINATING NTStatus = 0xC00004A0 + STATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED NTStatus = 0xC00004A1 + STATUS_ENCLAVE_VIOLATION NTStatus = 0xC00004A2 + STATUS_FILE_PROTECTED_UNDER_DPL NTStatus = 0xC00004A3 + STATUS_VOLUME_NOT_CLUSTER_ALIGNED NTStatus = 0xC00004A4 + STATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND NTStatus = 0xC00004A5 + STATUS_APPX_FILE_NOT_ENCRYPTED NTStatus = 0xC00004A6 + STATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED NTStatus = 0xC00004A7 + STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET NTStatus = 0xC00004A8 + STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE NTStatus = 0xC00004A9 + STATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER NTStatus = 0xC00004AA + STATUS_FT_READ_FAILURE NTStatus = 0xC00004AB + STATUS_PATCH_CONFLICT NTStatus = 0xC00004AC + STATUS_STORAGE_RESERVE_ID_INVALID NTStatus = 0xC00004AD + STATUS_STORAGE_RESERVE_DOES_NOT_EXIST NTStatus = 0xC00004AE + STATUS_STORAGE_RESERVE_ALREADY_EXISTS NTStatus = 0xC00004AF + STATUS_STORAGE_RESERVE_NOT_EMPTY NTStatus = 0xC00004B0 + STATUS_NOT_A_DAX_VOLUME NTStatus = 0xC00004B1 + STATUS_NOT_DAX_MAPPABLE NTStatus = 0xC00004B2 + STATUS_CASE_DIFFERING_NAMES_IN_DIR NTStatus = 0xC00004B3 + STATUS_FILE_NOT_SUPPORTED NTStatus = 0xC00004B4 + STATUS_NOT_SUPPORTED_WITH_BTT NTStatus = 0xC00004B5 + STATUS_ENCRYPTION_DISABLED NTStatus = 0xC00004B6 + STATUS_ENCRYPTING_METADATA_DISALLOWED NTStatus = 0xC00004B7 + STATUS_CANT_CLEAR_ENCRYPTION_FLAG NTStatus = 0xC00004B8 + STATUS_INVALID_TASK_NAME NTStatus = 0xC0000500 + STATUS_INVALID_TASK_INDEX NTStatus = 0xC0000501 + STATUS_THREAD_ALREADY_IN_TASK NTStatus = 0xC0000502 + STATUS_CALLBACK_BYPASS NTStatus = 0xC0000503 + STATUS_UNDEFINED_SCOPE NTStatus = 0xC0000504 + STATUS_INVALID_CAP NTStatus = 0xC0000505 + STATUS_NOT_GUI_PROCESS NTStatus = 0xC0000506 + STATUS_DEVICE_HUNG NTStatus = 0xC0000507 + STATUS_CONTAINER_ASSIGNED NTStatus = 0xC0000508 + STATUS_JOB_NO_CONTAINER NTStatus = 0xC0000509 + STATUS_DEVICE_UNRESPONSIVE NTStatus = 0xC000050A + STATUS_REPARSE_POINT_ENCOUNTERED NTStatus = 0xC000050B + STATUS_ATTRIBUTE_NOT_PRESENT NTStatus = 0xC000050C + STATUS_NOT_A_TIERED_VOLUME NTStatus = 0xC000050D + STATUS_ALREADY_HAS_STREAM_ID NTStatus = 0xC000050E + STATUS_JOB_NOT_EMPTY NTStatus = 0xC000050F + STATUS_ALREADY_INITIALIZED NTStatus = 0xC0000510 + STATUS_ENCLAVE_NOT_TERMINATED NTStatus = 0xC0000511 + STATUS_ENCLAVE_IS_TERMINATING NTStatus = 0xC0000512 + STATUS_SMB1_NOT_AVAILABLE NTStatus = 0xC0000513 + STATUS_SMR_GARBAGE_COLLECTION_REQUIRED NTStatus = 0xC0000514 + STATUS_INTERRUPTED NTStatus = 0xC0000515 + STATUS_THREAD_NOT_RUNNING NTStatus = 0xC0000516 + STATUS_FAIL_FAST_EXCEPTION NTStatus = 0xC0000602 + STATUS_IMAGE_CERT_REVOKED NTStatus = 0xC0000603 + STATUS_DYNAMIC_CODE_BLOCKED NTStatus = 0xC0000604 + STATUS_IMAGE_CERT_EXPIRED NTStatus = 0xC0000605 + STATUS_STRICT_CFG_VIOLATION NTStatus = 0xC0000606 + STATUS_SET_CONTEXT_DENIED NTStatus = 0xC000060A + STATUS_CROSS_PARTITION_VIOLATION NTStatus = 0xC000060B + STATUS_PORT_CLOSED NTStatus = 0xC0000700 + STATUS_MESSAGE_LOST NTStatus = 0xC0000701 + STATUS_INVALID_MESSAGE NTStatus = 0xC0000702 + STATUS_REQUEST_CANCELED NTStatus = 0xC0000703 + STATUS_RECURSIVE_DISPATCH NTStatus = 0xC0000704 + STATUS_LPC_RECEIVE_BUFFER_EXPECTED NTStatus = 0xC0000705 + STATUS_LPC_INVALID_CONNECTION_USAGE NTStatus = 0xC0000706 + STATUS_LPC_REQUESTS_NOT_ALLOWED NTStatus = 0xC0000707 + STATUS_RESOURCE_IN_USE NTStatus = 0xC0000708 + STATUS_HARDWARE_MEMORY_ERROR NTStatus = 0xC0000709 + STATUS_THREADPOOL_HANDLE_EXCEPTION NTStatus = 0xC000070A + STATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED NTStatus = 0xC000070B + STATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED NTStatus = 0xC000070C + STATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED NTStatus = 0xC000070D + STATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED NTStatus = 0xC000070E + STATUS_THREADPOOL_RELEASED_DURING_OPERATION NTStatus = 0xC000070F + STATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING NTStatus = 0xC0000710 + STATUS_APC_RETURNED_WHILE_IMPERSONATING NTStatus = 0xC0000711 + STATUS_PROCESS_IS_PROTECTED NTStatus = 0xC0000712 + STATUS_MCA_EXCEPTION NTStatus = 0xC0000713 + STATUS_CERTIFICATE_MAPPING_NOT_UNIQUE NTStatus = 0xC0000714 + STATUS_SYMLINK_CLASS_DISABLED NTStatus = 0xC0000715 + STATUS_INVALID_IDN_NORMALIZATION NTStatus = 0xC0000716 + STATUS_NO_UNICODE_TRANSLATION NTStatus = 0xC0000717 + STATUS_ALREADY_REGISTERED NTStatus = 0xC0000718 + STATUS_CONTEXT_MISMATCH NTStatus = 0xC0000719 + STATUS_PORT_ALREADY_HAS_COMPLETION_LIST NTStatus = 0xC000071A + STATUS_CALLBACK_RETURNED_THREAD_PRIORITY NTStatus = 0xC000071B + STATUS_INVALID_THREAD NTStatus = 0xC000071C + STATUS_CALLBACK_RETURNED_TRANSACTION NTStatus = 0xC000071D + STATUS_CALLBACK_RETURNED_LDR_LOCK NTStatus = 0xC000071E + STATUS_CALLBACK_RETURNED_LANG NTStatus = 0xC000071F + STATUS_CALLBACK_RETURNED_PRI_BACK NTStatus = 0xC0000720 + STATUS_CALLBACK_RETURNED_THREAD_AFFINITY NTStatus = 0xC0000721 + STATUS_LPC_HANDLE_COUNT_EXCEEDED NTStatus = 0xC0000722 + STATUS_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000723 + STATUS_KERNEL_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000724 + STATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000725 + STATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE NTStatus = 0xC0000726 + STATUS_DISK_REPAIR_DISABLED NTStatus = 0xC0000800 + STATUS_DS_DOMAIN_RENAME_IN_PROGRESS NTStatus = 0xC0000801 + STATUS_DISK_QUOTA_EXCEEDED NTStatus = 0xC0000802 + STATUS_DATA_LOST_REPAIR NTStatus = 0x80000803 + STATUS_CONTENT_BLOCKED NTStatus = 0xC0000804 + STATUS_BAD_CLUSTERS NTStatus = 0xC0000805 + STATUS_VOLUME_DIRTY NTStatus = 0xC0000806 + STATUS_DISK_REPAIR_REDIRECTED NTStatus = 0x40000807 + STATUS_DISK_REPAIR_UNSUCCESSFUL NTStatus = 0xC0000808 + STATUS_CORRUPT_LOG_OVERFULL NTStatus = 0xC0000809 + STATUS_CORRUPT_LOG_CORRUPTED NTStatus = 0xC000080A + STATUS_CORRUPT_LOG_UNAVAILABLE NTStatus = 0xC000080B + STATUS_CORRUPT_LOG_DELETED_FULL NTStatus = 0xC000080C + STATUS_CORRUPT_LOG_CLEARED NTStatus = 0xC000080D + STATUS_ORPHAN_NAME_EXHAUSTED NTStatus = 0xC000080E + STATUS_PROACTIVE_SCAN_IN_PROGRESS NTStatus = 0xC000080F + STATUS_ENCRYPTED_IO_NOT_POSSIBLE NTStatus = 0xC0000810 + STATUS_CORRUPT_LOG_UPLEVEL_RECORDS NTStatus = 0xC0000811 + STATUS_FILE_CHECKED_OUT NTStatus = 0xC0000901 + STATUS_CHECKOUT_REQUIRED NTStatus = 0xC0000902 + STATUS_BAD_FILE_TYPE NTStatus = 0xC0000903 + STATUS_FILE_TOO_LARGE NTStatus = 0xC0000904 + STATUS_FORMS_AUTH_REQUIRED NTStatus = 0xC0000905 + STATUS_VIRUS_INFECTED NTStatus = 0xC0000906 + STATUS_VIRUS_DELETED NTStatus = 0xC0000907 + STATUS_BAD_MCFG_TABLE NTStatus = 0xC0000908 + STATUS_CANNOT_BREAK_OPLOCK NTStatus = 0xC0000909 + STATUS_BAD_KEY NTStatus = 0xC000090A + STATUS_BAD_DATA NTStatus = 0xC000090B + STATUS_NO_KEY NTStatus = 0xC000090C + STATUS_FILE_HANDLE_REVOKED NTStatus = 0xC0000910 + STATUS_WOW_ASSERTION NTStatus = 0xC0009898 + STATUS_INVALID_SIGNATURE NTStatus = 0xC000A000 + STATUS_HMAC_NOT_SUPPORTED NTStatus = 0xC000A001 + STATUS_AUTH_TAG_MISMATCH NTStatus = 0xC000A002 + STATUS_INVALID_STATE_TRANSITION NTStatus = 0xC000A003 + STATUS_INVALID_KERNEL_INFO_VERSION NTStatus = 0xC000A004 + STATUS_INVALID_PEP_INFO_VERSION NTStatus = 0xC000A005 + STATUS_HANDLE_REVOKED NTStatus = 0xC000A006 + STATUS_EOF_ON_GHOSTED_RANGE NTStatus = 0xC000A007 + STATUS_IPSEC_QUEUE_OVERFLOW NTStatus = 0xC000A010 + STATUS_ND_QUEUE_OVERFLOW NTStatus = 0xC000A011 + STATUS_HOPLIMIT_EXCEEDED NTStatus = 0xC000A012 + STATUS_PROTOCOL_NOT_SUPPORTED NTStatus = 0xC000A013 + STATUS_FASTPATH_REJECTED NTStatus = 0xC000A014 + STATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED NTStatus = 0xC000A080 + STATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR NTStatus = 0xC000A081 + STATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR NTStatus = 0xC000A082 + STATUS_XML_PARSE_ERROR NTStatus = 0xC000A083 + STATUS_XMLDSIG_ERROR NTStatus = 0xC000A084 + STATUS_WRONG_COMPARTMENT NTStatus = 0xC000A085 + STATUS_AUTHIP_FAILURE NTStatus = 0xC000A086 + STATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS NTStatus = 0xC000A087 + STATUS_DS_OID_NOT_FOUND NTStatus = 0xC000A088 + STATUS_INCORRECT_ACCOUNT_TYPE NTStatus = 0xC000A089 + STATUS_HASH_NOT_SUPPORTED NTStatus = 0xC000A100 + STATUS_HASH_NOT_PRESENT NTStatus = 0xC000A101 + STATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED NTStatus = 0xC000A121 + STATUS_GPIO_CLIENT_INFORMATION_INVALID NTStatus = 0xC000A122 + STATUS_GPIO_VERSION_NOT_SUPPORTED NTStatus = 0xC000A123 + STATUS_GPIO_INVALID_REGISTRATION_PACKET NTStatus = 0xC000A124 + STATUS_GPIO_OPERATION_DENIED NTStatus = 0xC000A125 + STATUS_GPIO_INCOMPATIBLE_CONNECT_MODE NTStatus = 0xC000A126 + STATUS_GPIO_INTERRUPT_ALREADY_UNMASKED NTStatus = 0x8000A127 + STATUS_CANNOT_SWITCH_RUNLEVEL NTStatus = 0xC000A141 + STATUS_INVALID_RUNLEVEL_SETTING NTStatus = 0xC000A142 + STATUS_RUNLEVEL_SWITCH_TIMEOUT NTStatus = 0xC000A143 + STATUS_SERVICES_FAILED_AUTOSTART NTStatus = 0x4000A144 + STATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT NTStatus = 0xC000A145 + STATUS_RUNLEVEL_SWITCH_IN_PROGRESS NTStatus = 0xC000A146 + STATUS_NOT_APPCONTAINER NTStatus = 0xC000A200 + STATUS_NOT_SUPPORTED_IN_APPCONTAINER NTStatus = 0xC000A201 + STATUS_INVALID_PACKAGE_SID_LENGTH NTStatus = 0xC000A202 + STATUS_LPAC_ACCESS_DENIED NTStatus = 0xC000A203 + STATUS_ADMINLESS_ACCESS_DENIED NTStatus = 0xC000A204 + STATUS_APP_DATA_NOT_FOUND NTStatus = 0xC000A281 + STATUS_APP_DATA_EXPIRED NTStatus = 0xC000A282 + STATUS_APP_DATA_CORRUPT NTStatus = 0xC000A283 + STATUS_APP_DATA_LIMIT_EXCEEDED NTStatus = 0xC000A284 + STATUS_APP_DATA_REBOOT_REQUIRED NTStatus = 0xC000A285 + STATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED NTStatus = 0xC000A2A1 + STATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED NTStatus = 0xC000A2A2 + STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED NTStatus = 0xC000A2A3 + STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED NTStatus = 0xC000A2A4 + STATUS_WOF_WIM_HEADER_CORRUPT NTStatus = 0xC000A2A5 + STATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT NTStatus = 0xC000A2A6 + STATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT NTStatus = 0xC000A2A7 + STATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE NTStatus = 0xC000CE01 + STATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT NTStatus = 0xC000CE02 + STATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY NTStatus = 0xC000CE03 + STATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN NTStatus = 0xC000CE04 + STATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION NTStatus = 0xC000CE05 + STATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT NTStatus = 0xC000CF00 + STATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING NTStatus = 0xC000CF01 + STATUS_CLOUD_FILE_METADATA_CORRUPT NTStatus = 0xC000CF02 + STATUS_CLOUD_FILE_METADATA_TOO_LARGE NTStatus = 0xC000CF03 + STATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE NTStatus = 0x8000CF04 + STATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS NTStatus = 0x8000CF05 + STATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED NTStatus = 0xC000CF06 + STATUS_NOT_A_CLOUD_FILE NTStatus = 0xC000CF07 + STATUS_CLOUD_FILE_NOT_IN_SYNC NTStatus = 0xC000CF08 + STATUS_CLOUD_FILE_ALREADY_CONNECTED NTStatus = 0xC000CF09 + STATUS_CLOUD_FILE_NOT_SUPPORTED NTStatus = 0xC000CF0A + STATUS_CLOUD_FILE_INVALID_REQUEST NTStatus = 0xC000CF0B + STATUS_CLOUD_FILE_READ_ONLY_VOLUME NTStatus = 0xC000CF0C + STATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY NTStatus = 0xC000CF0D + STATUS_CLOUD_FILE_VALIDATION_FAILED NTStatus = 0xC000CF0E + STATUS_CLOUD_FILE_AUTHENTICATION_FAILED NTStatus = 0xC000CF0F + STATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES NTStatus = 0xC000CF10 + STATUS_CLOUD_FILE_NETWORK_UNAVAILABLE NTStatus = 0xC000CF11 + STATUS_CLOUD_FILE_UNSUCCESSFUL NTStatus = 0xC000CF12 + STATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT NTStatus = 0xC000CF13 + STATUS_CLOUD_FILE_IN_USE NTStatus = 0xC000CF14 + STATUS_CLOUD_FILE_PINNED NTStatus = 0xC000CF15 + STATUS_CLOUD_FILE_REQUEST_ABORTED NTStatus = 0xC000CF16 + STATUS_CLOUD_FILE_PROPERTY_CORRUPT NTStatus = 0xC000CF17 + STATUS_CLOUD_FILE_ACCESS_DENIED NTStatus = 0xC000CF18 + STATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS NTStatus = 0xC000CF19 + STATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT NTStatus = 0xC000CF1A + STATUS_CLOUD_FILE_REQUEST_CANCELED NTStatus = 0xC000CF1B + STATUS_CLOUD_FILE_PROVIDER_TERMINATED NTStatus = 0xC000CF1D + STATUS_NOT_A_CLOUD_SYNC_ROOT NTStatus = 0xC000CF1E + STATUS_CLOUD_FILE_REQUEST_TIMEOUT NTStatus = 0xC000CF1F + STATUS_ACPI_INVALID_OPCODE NTStatus = 0xC0140001 + STATUS_ACPI_STACK_OVERFLOW NTStatus = 0xC0140002 + STATUS_ACPI_ASSERT_FAILED NTStatus = 0xC0140003 + STATUS_ACPI_INVALID_INDEX NTStatus = 0xC0140004 + STATUS_ACPI_INVALID_ARGUMENT NTStatus = 0xC0140005 + STATUS_ACPI_FATAL NTStatus = 0xC0140006 + STATUS_ACPI_INVALID_SUPERNAME NTStatus = 0xC0140007 + STATUS_ACPI_INVALID_ARGTYPE NTStatus = 0xC0140008 + STATUS_ACPI_INVALID_OBJTYPE NTStatus = 0xC0140009 + STATUS_ACPI_INVALID_TARGETTYPE NTStatus = 0xC014000A + STATUS_ACPI_INCORRECT_ARGUMENT_COUNT NTStatus = 0xC014000B + STATUS_ACPI_ADDRESS_NOT_MAPPED NTStatus = 0xC014000C + STATUS_ACPI_INVALID_EVENTTYPE NTStatus = 0xC014000D + STATUS_ACPI_HANDLER_COLLISION NTStatus = 0xC014000E + STATUS_ACPI_INVALID_DATA NTStatus = 0xC014000F + STATUS_ACPI_INVALID_REGION NTStatus = 0xC0140010 + STATUS_ACPI_INVALID_ACCESS_SIZE NTStatus = 0xC0140011 + STATUS_ACPI_ACQUIRE_GLOBAL_LOCK NTStatus = 0xC0140012 + STATUS_ACPI_ALREADY_INITIALIZED NTStatus = 0xC0140013 + STATUS_ACPI_NOT_INITIALIZED NTStatus = 0xC0140014 + STATUS_ACPI_INVALID_MUTEX_LEVEL NTStatus = 0xC0140015 + STATUS_ACPI_MUTEX_NOT_OWNED NTStatus = 0xC0140016 + STATUS_ACPI_MUTEX_NOT_OWNER NTStatus = 0xC0140017 + STATUS_ACPI_RS_ACCESS NTStatus = 0xC0140018 + STATUS_ACPI_INVALID_TABLE NTStatus = 0xC0140019 + STATUS_ACPI_REG_HANDLER_FAILED NTStatus = 0xC0140020 + STATUS_ACPI_POWER_REQUEST_FAILED NTStatus = 0xC0140021 + STATUS_CTX_WINSTATION_NAME_INVALID NTStatus = 0xC00A0001 + STATUS_CTX_INVALID_PD NTStatus = 0xC00A0002 + STATUS_CTX_PD_NOT_FOUND NTStatus = 0xC00A0003 + STATUS_CTX_CDM_CONNECT NTStatus = 0x400A0004 + STATUS_CTX_CDM_DISCONNECT NTStatus = 0x400A0005 + STATUS_CTX_CLOSE_PENDING NTStatus = 0xC00A0006 + STATUS_CTX_NO_OUTBUF NTStatus = 0xC00A0007 + STATUS_CTX_MODEM_INF_NOT_FOUND NTStatus = 0xC00A0008 + STATUS_CTX_INVALID_MODEMNAME NTStatus = 0xC00A0009 + STATUS_CTX_RESPONSE_ERROR NTStatus = 0xC00A000A + STATUS_CTX_MODEM_RESPONSE_TIMEOUT NTStatus = 0xC00A000B + STATUS_CTX_MODEM_RESPONSE_NO_CARRIER NTStatus = 0xC00A000C + STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE NTStatus = 0xC00A000D + STATUS_CTX_MODEM_RESPONSE_BUSY NTStatus = 0xC00A000E + STATUS_CTX_MODEM_RESPONSE_VOICE NTStatus = 0xC00A000F + STATUS_CTX_TD_ERROR NTStatus = 0xC00A0010 + STATUS_CTX_LICENSE_CLIENT_INVALID NTStatus = 0xC00A0012 + STATUS_CTX_LICENSE_NOT_AVAILABLE NTStatus = 0xC00A0013 + STATUS_CTX_LICENSE_EXPIRED NTStatus = 0xC00A0014 + STATUS_CTX_WINSTATION_NOT_FOUND NTStatus = 0xC00A0015 + STATUS_CTX_WINSTATION_NAME_COLLISION NTStatus = 0xC00A0016 + STATUS_CTX_WINSTATION_BUSY NTStatus = 0xC00A0017 + STATUS_CTX_BAD_VIDEO_MODE NTStatus = 0xC00A0018 + STATUS_CTX_GRAPHICS_INVALID NTStatus = 0xC00A0022 + STATUS_CTX_NOT_CONSOLE NTStatus = 0xC00A0024 + STATUS_CTX_CLIENT_QUERY_TIMEOUT NTStatus = 0xC00A0026 + STATUS_CTX_CONSOLE_DISCONNECT NTStatus = 0xC00A0027 + STATUS_CTX_CONSOLE_CONNECT NTStatus = 0xC00A0028 + STATUS_CTX_SHADOW_DENIED NTStatus = 0xC00A002A + STATUS_CTX_WINSTATION_ACCESS_DENIED NTStatus = 0xC00A002B + STATUS_CTX_INVALID_WD NTStatus = 0xC00A002E + STATUS_CTX_WD_NOT_FOUND NTStatus = 0xC00A002F + STATUS_CTX_SHADOW_INVALID NTStatus = 0xC00A0030 + STATUS_CTX_SHADOW_DISABLED NTStatus = 0xC00A0031 + STATUS_RDP_PROTOCOL_ERROR NTStatus = 0xC00A0032 + STATUS_CTX_CLIENT_LICENSE_NOT_SET NTStatus = 0xC00A0033 + STATUS_CTX_CLIENT_LICENSE_IN_USE NTStatus = 0xC00A0034 + STATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE NTStatus = 0xC00A0035 + STATUS_CTX_SHADOW_NOT_RUNNING NTStatus = 0xC00A0036 + STATUS_CTX_LOGON_DISABLED NTStatus = 0xC00A0037 + STATUS_CTX_SECURITY_LAYER_ERROR NTStatus = 0xC00A0038 + STATUS_TS_INCOMPATIBLE_SESSIONS NTStatus = 0xC00A0039 + STATUS_TS_VIDEO_SUBSYSTEM_ERROR NTStatus = 0xC00A003A + STATUS_PNP_BAD_MPS_TABLE NTStatus = 0xC0040035 + STATUS_PNP_TRANSLATION_FAILED NTStatus = 0xC0040036 + STATUS_PNP_IRQ_TRANSLATION_FAILED NTStatus = 0xC0040037 + STATUS_PNP_INVALID_ID NTStatus = 0xC0040038 + STATUS_IO_REISSUE_AS_CACHED NTStatus = 0xC0040039 + STATUS_MUI_FILE_NOT_FOUND NTStatus = 0xC00B0001 + STATUS_MUI_INVALID_FILE NTStatus = 0xC00B0002 + STATUS_MUI_INVALID_RC_CONFIG NTStatus = 0xC00B0003 + STATUS_MUI_INVALID_LOCALE_NAME NTStatus = 0xC00B0004 + STATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME NTStatus = 0xC00B0005 + STATUS_MUI_FILE_NOT_LOADED NTStatus = 0xC00B0006 + STATUS_RESOURCE_ENUM_USER_STOP NTStatus = 0xC00B0007 + STATUS_FLT_NO_HANDLER_DEFINED NTStatus = 0xC01C0001 + STATUS_FLT_CONTEXT_ALREADY_DEFINED NTStatus = 0xC01C0002 + STATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST NTStatus = 0xC01C0003 + STATUS_FLT_DISALLOW_FAST_IO NTStatus = 0xC01C0004 + STATUS_FLT_INVALID_NAME_REQUEST NTStatus = 0xC01C0005 + STATUS_FLT_NOT_SAFE_TO_POST_OPERATION NTStatus = 0xC01C0006 + STATUS_FLT_NOT_INITIALIZED NTStatus = 0xC01C0007 + STATUS_FLT_FILTER_NOT_READY NTStatus = 0xC01C0008 + STATUS_FLT_POST_OPERATION_CLEANUP NTStatus = 0xC01C0009 + STATUS_FLT_INTERNAL_ERROR NTStatus = 0xC01C000A + STATUS_FLT_DELETING_OBJECT NTStatus = 0xC01C000B + STATUS_FLT_MUST_BE_NONPAGED_POOL NTStatus = 0xC01C000C + STATUS_FLT_DUPLICATE_ENTRY NTStatus = 0xC01C000D + STATUS_FLT_CBDQ_DISABLED NTStatus = 0xC01C000E + STATUS_FLT_DO_NOT_ATTACH NTStatus = 0xC01C000F + STATUS_FLT_DO_NOT_DETACH NTStatus = 0xC01C0010 + STATUS_FLT_INSTANCE_ALTITUDE_COLLISION NTStatus = 0xC01C0011 + STATUS_FLT_INSTANCE_NAME_COLLISION NTStatus = 0xC01C0012 + STATUS_FLT_FILTER_NOT_FOUND NTStatus = 0xC01C0013 + STATUS_FLT_VOLUME_NOT_FOUND NTStatus = 0xC01C0014 + STATUS_FLT_INSTANCE_NOT_FOUND NTStatus = 0xC01C0015 + STATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND NTStatus = 0xC01C0016 + STATUS_FLT_INVALID_CONTEXT_REGISTRATION NTStatus = 0xC01C0017 + STATUS_FLT_NAME_CACHE_MISS NTStatus = 0xC01C0018 + STATUS_FLT_NO_DEVICE_OBJECT NTStatus = 0xC01C0019 + STATUS_FLT_VOLUME_ALREADY_MOUNTED NTStatus = 0xC01C001A + STATUS_FLT_ALREADY_ENLISTED NTStatus = 0xC01C001B + STATUS_FLT_CONTEXT_ALREADY_LINKED NTStatus = 0xC01C001C + STATUS_FLT_NO_WAITER_FOR_REPLY NTStatus = 0xC01C0020 + STATUS_FLT_REGISTRATION_BUSY NTStatus = 0xC01C0023 + STATUS_SXS_SECTION_NOT_FOUND NTStatus = 0xC0150001 + STATUS_SXS_CANT_GEN_ACTCTX NTStatus = 0xC0150002 + STATUS_SXS_INVALID_ACTCTXDATA_FORMAT NTStatus = 0xC0150003 + STATUS_SXS_ASSEMBLY_NOT_FOUND NTStatus = 0xC0150004 + STATUS_SXS_MANIFEST_FORMAT_ERROR NTStatus = 0xC0150005 + STATUS_SXS_MANIFEST_PARSE_ERROR NTStatus = 0xC0150006 + STATUS_SXS_ACTIVATION_CONTEXT_DISABLED NTStatus = 0xC0150007 + STATUS_SXS_KEY_NOT_FOUND NTStatus = 0xC0150008 + STATUS_SXS_VERSION_CONFLICT NTStatus = 0xC0150009 + STATUS_SXS_WRONG_SECTION_TYPE NTStatus = 0xC015000A + STATUS_SXS_THREAD_QUERIES_DISABLED NTStatus = 0xC015000B + STATUS_SXS_ASSEMBLY_MISSING NTStatus = 0xC015000C + STATUS_SXS_RELEASE_ACTIVATION_CONTEXT NTStatus = 0x4015000D + STATUS_SXS_PROCESS_DEFAULT_ALREADY_SET NTStatus = 0xC015000E + STATUS_SXS_EARLY_DEACTIVATION NTStatus = 0xC015000F + STATUS_SXS_INVALID_DEACTIVATION NTStatus = 0xC0150010 + STATUS_SXS_MULTIPLE_DEACTIVATION NTStatus = 0xC0150011 + STATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY NTStatus = 0xC0150012 + STATUS_SXS_PROCESS_TERMINATION_REQUESTED NTStatus = 0xC0150013 + STATUS_SXS_CORRUPT_ACTIVATION_STACK NTStatus = 0xC0150014 + STATUS_SXS_CORRUPTION NTStatus = 0xC0150015 + STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE NTStatus = 0xC0150016 + STATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME NTStatus = 0xC0150017 + STATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE NTStatus = 0xC0150018 + STATUS_SXS_IDENTITY_PARSE_ERROR NTStatus = 0xC0150019 + STATUS_SXS_COMPONENT_STORE_CORRUPT NTStatus = 0xC015001A + STATUS_SXS_FILE_HASH_MISMATCH NTStatus = 0xC015001B + STATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT NTStatus = 0xC015001C + STATUS_SXS_IDENTITIES_DIFFERENT NTStatus = 0xC015001D + STATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT NTStatus = 0xC015001E + STATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY NTStatus = 0xC015001F + STATUS_ADVANCED_INSTALLER_FAILED NTStatus = 0xC0150020 + STATUS_XML_ENCODING_MISMATCH NTStatus = 0xC0150021 + STATUS_SXS_MANIFEST_TOO_BIG NTStatus = 0xC0150022 + STATUS_SXS_SETTING_NOT_REGISTERED NTStatus = 0xC0150023 + STATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE NTStatus = 0xC0150024 + STATUS_SMI_PRIMITIVE_INSTALLER_FAILED NTStatus = 0xC0150025 + STATUS_GENERIC_COMMAND_FAILED NTStatus = 0xC0150026 + STATUS_SXS_FILE_HASH_MISSING NTStatus = 0xC0150027 + STATUS_CLUSTER_INVALID_NODE NTStatus = 0xC0130001 + STATUS_CLUSTER_NODE_EXISTS NTStatus = 0xC0130002 + STATUS_CLUSTER_JOIN_IN_PROGRESS NTStatus = 0xC0130003 + STATUS_CLUSTER_NODE_NOT_FOUND NTStatus = 0xC0130004 + STATUS_CLUSTER_LOCAL_NODE_NOT_FOUND NTStatus = 0xC0130005 + STATUS_CLUSTER_NETWORK_EXISTS NTStatus = 0xC0130006 + STATUS_CLUSTER_NETWORK_NOT_FOUND NTStatus = 0xC0130007 + STATUS_CLUSTER_NETINTERFACE_EXISTS NTStatus = 0xC0130008 + STATUS_CLUSTER_NETINTERFACE_NOT_FOUND NTStatus = 0xC0130009 + STATUS_CLUSTER_INVALID_REQUEST NTStatus = 0xC013000A + STATUS_CLUSTER_INVALID_NETWORK_PROVIDER NTStatus = 0xC013000B + STATUS_CLUSTER_NODE_DOWN NTStatus = 0xC013000C + STATUS_CLUSTER_NODE_UNREACHABLE NTStatus = 0xC013000D + STATUS_CLUSTER_NODE_NOT_MEMBER NTStatus = 0xC013000E + STATUS_CLUSTER_JOIN_NOT_IN_PROGRESS NTStatus = 0xC013000F + STATUS_CLUSTER_INVALID_NETWORK NTStatus = 0xC0130010 + STATUS_CLUSTER_NO_NET_ADAPTERS NTStatus = 0xC0130011 + STATUS_CLUSTER_NODE_UP NTStatus = 0xC0130012 + STATUS_CLUSTER_NODE_PAUSED NTStatus = 0xC0130013 + STATUS_CLUSTER_NODE_NOT_PAUSED NTStatus = 0xC0130014 + STATUS_CLUSTER_NO_SECURITY_CONTEXT NTStatus = 0xC0130015 + STATUS_CLUSTER_NETWORK_NOT_INTERNAL NTStatus = 0xC0130016 + STATUS_CLUSTER_POISONED NTStatus = 0xC0130017 + STATUS_CLUSTER_NON_CSV_PATH NTStatus = 0xC0130018 + STATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL NTStatus = 0xC0130019 + STATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS NTStatus = 0xC0130020 + STATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR NTStatus = 0xC0130021 + STATUS_CLUSTER_CSV_REDIRECTED NTStatus = 0xC0130022 + STATUS_CLUSTER_CSV_NOT_REDIRECTED NTStatus = 0xC0130023 + STATUS_CLUSTER_CSV_VOLUME_DRAINING NTStatus = 0xC0130024 + STATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS NTStatus = 0xC0130025 + STATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL NTStatus = 0xC0130026 + STATUS_CLUSTER_CSV_NO_SNAPSHOTS NTStatus = 0xC0130027 + STATUS_CSV_IO_PAUSE_TIMEOUT NTStatus = 0xC0130028 + STATUS_CLUSTER_CSV_INVALID_HANDLE NTStatus = 0xC0130029 + STATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR NTStatus = 0xC0130030 + STATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED NTStatus = 0xC0130031 + STATUS_TRANSACTIONAL_CONFLICT NTStatus = 0xC0190001 + STATUS_INVALID_TRANSACTION NTStatus = 0xC0190002 + STATUS_TRANSACTION_NOT_ACTIVE NTStatus = 0xC0190003 + STATUS_TM_INITIALIZATION_FAILED NTStatus = 0xC0190004 + STATUS_RM_NOT_ACTIVE NTStatus = 0xC0190005 + STATUS_RM_METADATA_CORRUPT NTStatus = 0xC0190006 + STATUS_TRANSACTION_NOT_JOINED NTStatus = 0xC0190007 + STATUS_DIRECTORY_NOT_RM NTStatus = 0xC0190008 + STATUS_COULD_NOT_RESIZE_LOG NTStatus = 0x80190009 + STATUS_TRANSACTIONS_UNSUPPORTED_REMOTE NTStatus = 0xC019000A + STATUS_LOG_RESIZE_INVALID_SIZE NTStatus = 0xC019000B + STATUS_REMOTE_FILE_VERSION_MISMATCH NTStatus = 0xC019000C + STATUS_CRM_PROTOCOL_ALREADY_EXISTS NTStatus = 0xC019000F + STATUS_TRANSACTION_PROPAGATION_FAILED NTStatus = 0xC0190010 + STATUS_CRM_PROTOCOL_NOT_FOUND NTStatus = 0xC0190011 + STATUS_TRANSACTION_SUPERIOR_EXISTS NTStatus = 0xC0190012 + STATUS_TRANSACTION_REQUEST_NOT_VALID NTStatus = 0xC0190013 + STATUS_TRANSACTION_NOT_REQUESTED NTStatus = 0xC0190014 + STATUS_TRANSACTION_ALREADY_ABORTED NTStatus = 0xC0190015 + STATUS_TRANSACTION_ALREADY_COMMITTED NTStatus = 0xC0190016 + STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER NTStatus = 0xC0190017 + STATUS_CURRENT_TRANSACTION_NOT_VALID NTStatus = 0xC0190018 + STATUS_LOG_GROWTH_FAILED NTStatus = 0xC0190019 + STATUS_OBJECT_NO_LONGER_EXISTS NTStatus = 0xC0190021 + STATUS_STREAM_MINIVERSION_NOT_FOUND NTStatus = 0xC0190022 + STATUS_STREAM_MINIVERSION_NOT_VALID NTStatus = 0xC0190023 + STATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION NTStatus = 0xC0190024 + STATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT NTStatus = 0xC0190025 + STATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS NTStatus = 0xC0190026 + STATUS_HANDLE_NO_LONGER_VALID NTStatus = 0xC0190028 + STATUS_NO_TXF_METADATA NTStatus = 0x80190029 + STATUS_LOG_CORRUPTION_DETECTED NTStatus = 0xC0190030 + STATUS_CANT_RECOVER_WITH_HANDLE_OPEN NTStatus = 0x80190031 + STATUS_RM_DISCONNECTED NTStatus = 0xC0190032 + STATUS_ENLISTMENT_NOT_SUPERIOR NTStatus = 0xC0190033 + STATUS_RECOVERY_NOT_NEEDED NTStatus = 0x40190034 + STATUS_RM_ALREADY_STARTED NTStatus = 0x40190035 + STATUS_FILE_IDENTITY_NOT_PERSISTENT NTStatus = 0xC0190036 + STATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY NTStatus = 0xC0190037 + STATUS_CANT_CROSS_RM_BOUNDARY NTStatus = 0xC0190038 + STATUS_TXF_DIR_NOT_EMPTY NTStatus = 0xC0190039 + STATUS_INDOUBT_TRANSACTIONS_EXIST NTStatus = 0xC019003A + STATUS_TM_VOLATILE NTStatus = 0xC019003B + STATUS_ROLLBACK_TIMER_EXPIRED NTStatus = 0xC019003C + STATUS_TXF_ATTRIBUTE_CORRUPT NTStatus = 0xC019003D + STATUS_EFS_NOT_ALLOWED_IN_TRANSACTION NTStatus = 0xC019003E + STATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED NTStatus = 0xC019003F + STATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE NTStatus = 0xC0190040 + STATUS_TXF_METADATA_ALREADY_PRESENT NTStatus = 0x80190041 + STATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET NTStatus = 0x80190042 + STATUS_TRANSACTION_REQUIRED_PROMOTION NTStatus = 0xC0190043 + STATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION NTStatus = 0xC0190044 + STATUS_TRANSACTIONS_NOT_FROZEN NTStatus = 0xC0190045 + STATUS_TRANSACTION_FREEZE_IN_PROGRESS NTStatus = 0xC0190046 + STATUS_NOT_SNAPSHOT_VOLUME NTStatus = 0xC0190047 + STATUS_NO_SAVEPOINT_WITH_OPEN_FILES NTStatus = 0xC0190048 + STATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION NTStatus = 0xC0190049 + STATUS_TM_IDENTITY_MISMATCH NTStatus = 0xC019004A + STATUS_FLOATED_SECTION NTStatus = 0xC019004B + STATUS_CANNOT_ACCEPT_TRANSACTED_WORK NTStatus = 0xC019004C + STATUS_CANNOT_ABORT_TRANSACTIONS NTStatus = 0xC019004D + STATUS_TRANSACTION_NOT_FOUND NTStatus = 0xC019004E + STATUS_RESOURCEMANAGER_NOT_FOUND NTStatus = 0xC019004F + STATUS_ENLISTMENT_NOT_FOUND NTStatus = 0xC0190050 + STATUS_TRANSACTIONMANAGER_NOT_FOUND NTStatus = 0xC0190051 + STATUS_TRANSACTIONMANAGER_NOT_ONLINE NTStatus = 0xC0190052 + STATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION NTStatus = 0xC0190053 + STATUS_TRANSACTION_NOT_ROOT NTStatus = 0xC0190054 + STATUS_TRANSACTION_OBJECT_EXPIRED NTStatus = 0xC0190055 + STATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION NTStatus = 0xC0190056 + STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED NTStatus = 0xC0190057 + STATUS_TRANSACTION_RECORD_TOO_LONG NTStatus = 0xC0190058 + STATUS_NO_LINK_TRACKING_IN_TRANSACTION NTStatus = 0xC0190059 + STATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION NTStatus = 0xC019005A + STATUS_TRANSACTION_INTEGRITY_VIOLATED NTStatus = 0xC019005B + STATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH NTStatus = 0xC019005C + STATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT NTStatus = 0xC019005D + STATUS_TRANSACTION_MUST_WRITETHROUGH NTStatus = 0xC019005E + STATUS_TRANSACTION_NO_SUPERIOR NTStatus = 0xC019005F + STATUS_EXPIRED_HANDLE NTStatus = 0xC0190060 + STATUS_TRANSACTION_NOT_ENLISTED NTStatus = 0xC0190061 + STATUS_LOG_SECTOR_INVALID NTStatus = 0xC01A0001 + STATUS_LOG_SECTOR_PARITY_INVALID NTStatus = 0xC01A0002 + STATUS_LOG_SECTOR_REMAPPED NTStatus = 0xC01A0003 + STATUS_LOG_BLOCK_INCOMPLETE NTStatus = 0xC01A0004 + STATUS_LOG_INVALID_RANGE NTStatus = 0xC01A0005 + STATUS_LOG_BLOCKS_EXHAUSTED NTStatus = 0xC01A0006 + STATUS_LOG_READ_CONTEXT_INVALID NTStatus = 0xC01A0007 + STATUS_LOG_RESTART_INVALID NTStatus = 0xC01A0008 + STATUS_LOG_BLOCK_VERSION NTStatus = 0xC01A0009 + STATUS_LOG_BLOCK_INVALID NTStatus = 0xC01A000A + STATUS_LOG_READ_MODE_INVALID NTStatus = 0xC01A000B + STATUS_LOG_NO_RESTART NTStatus = 0x401A000C + STATUS_LOG_METADATA_CORRUPT NTStatus = 0xC01A000D + STATUS_LOG_METADATA_INVALID NTStatus = 0xC01A000E + STATUS_LOG_METADATA_INCONSISTENT NTStatus = 0xC01A000F + STATUS_LOG_RESERVATION_INVALID NTStatus = 0xC01A0010 + STATUS_LOG_CANT_DELETE NTStatus = 0xC01A0011 + STATUS_LOG_CONTAINER_LIMIT_EXCEEDED NTStatus = 0xC01A0012 + STATUS_LOG_START_OF_LOG NTStatus = 0xC01A0013 + STATUS_LOG_POLICY_ALREADY_INSTALLED NTStatus = 0xC01A0014 + STATUS_LOG_POLICY_NOT_INSTALLED NTStatus = 0xC01A0015 + STATUS_LOG_POLICY_INVALID NTStatus = 0xC01A0016 + STATUS_LOG_POLICY_CONFLICT NTStatus = 0xC01A0017 + STATUS_LOG_PINNED_ARCHIVE_TAIL NTStatus = 0xC01A0018 + STATUS_LOG_RECORD_NONEXISTENT NTStatus = 0xC01A0019 + STATUS_LOG_RECORDS_RESERVED_INVALID NTStatus = 0xC01A001A + STATUS_LOG_SPACE_RESERVED_INVALID NTStatus = 0xC01A001B + STATUS_LOG_TAIL_INVALID NTStatus = 0xC01A001C + STATUS_LOG_FULL NTStatus = 0xC01A001D + STATUS_LOG_MULTIPLEXED NTStatus = 0xC01A001E + STATUS_LOG_DEDICATED NTStatus = 0xC01A001F + STATUS_LOG_ARCHIVE_NOT_IN_PROGRESS NTStatus = 0xC01A0020 + STATUS_LOG_ARCHIVE_IN_PROGRESS NTStatus = 0xC01A0021 + STATUS_LOG_EPHEMERAL NTStatus = 0xC01A0022 + STATUS_LOG_NOT_ENOUGH_CONTAINERS NTStatus = 0xC01A0023 + STATUS_LOG_CLIENT_ALREADY_REGISTERED NTStatus = 0xC01A0024 + STATUS_LOG_CLIENT_NOT_REGISTERED NTStatus = 0xC01A0025 + STATUS_LOG_FULL_HANDLER_IN_PROGRESS NTStatus = 0xC01A0026 + STATUS_LOG_CONTAINER_READ_FAILED NTStatus = 0xC01A0027 + STATUS_LOG_CONTAINER_WRITE_FAILED NTStatus = 0xC01A0028 + STATUS_LOG_CONTAINER_OPEN_FAILED NTStatus = 0xC01A0029 + STATUS_LOG_CONTAINER_STATE_INVALID NTStatus = 0xC01A002A + STATUS_LOG_STATE_INVALID NTStatus = 0xC01A002B + STATUS_LOG_PINNED NTStatus = 0xC01A002C + STATUS_LOG_METADATA_FLUSH_FAILED NTStatus = 0xC01A002D + STATUS_LOG_INCONSISTENT_SECURITY NTStatus = 0xC01A002E + STATUS_LOG_APPENDED_FLUSH_FAILED NTStatus = 0xC01A002F + STATUS_LOG_PINNED_RESERVATION NTStatus = 0xC01A0030 + STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD NTStatus = 0xC01B00EA + STATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED NTStatus = 0x801B00EB + STATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST NTStatus = 0x401B00EC + STATUS_MONITOR_NO_DESCRIPTOR NTStatus = 0xC01D0001 + STATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT NTStatus = 0xC01D0002 + STATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM NTStatus = 0xC01D0003 + STATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK NTStatus = 0xC01D0004 + STATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED NTStatus = 0xC01D0005 + STATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK NTStatus = 0xC01D0006 + STATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK NTStatus = 0xC01D0007 + STATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA NTStatus = 0xC01D0008 + STATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK NTStatus = 0xC01D0009 + STATUS_MONITOR_INVALID_MANUFACTURE_DATE NTStatus = 0xC01D000A + STATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER NTStatus = 0xC01E0000 + STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER NTStatus = 0xC01E0001 + STATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER NTStatus = 0xC01E0002 + STATUS_GRAPHICS_ADAPTER_WAS_RESET NTStatus = 0xC01E0003 + STATUS_GRAPHICS_INVALID_DRIVER_MODEL NTStatus = 0xC01E0004 + STATUS_GRAPHICS_PRESENT_MODE_CHANGED NTStatus = 0xC01E0005 + STATUS_GRAPHICS_PRESENT_OCCLUDED NTStatus = 0xC01E0006 + STATUS_GRAPHICS_PRESENT_DENIED NTStatus = 0xC01E0007 + STATUS_GRAPHICS_CANNOTCOLORCONVERT NTStatus = 0xC01E0008 + STATUS_GRAPHICS_DRIVER_MISMATCH NTStatus = 0xC01E0009 + STATUS_GRAPHICS_PARTIAL_DATA_POPULATED NTStatus = 0x401E000A + STATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED NTStatus = 0xC01E000B + STATUS_GRAPHICS_PRESENT_UNOCCLUDED NTStatus = 0xC01E000C + STATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE NTStatus = 0xC01E000D + STATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED NTStatus = 0xC01E000E + STATUS_GRAPHICS_PRESENT_INVALID_WINDOW NTStatus = 0xC01E000F + STATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND NTStatus = 0xC01E0010 + STATUS_GRAPHICS_VAIL_STATE_CHANGED NTStatus = 0xC01E0011 + STATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN NTStatus = 0xC01E0012 + STATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED NTStatus = 0xC01E0013 + STATUS_GRAPHICS_NO_VIDEO_MEMORY NTStatus = 0xC01E0100 + STATUS_GRAPHICS_CANT_LOCK_MEMORY NTStatus = 0xC01E0101 + STATUS_GRAPHICS_ALLOCATION_BUSY NTStatus = 0xC01E0102 + STATUS_GRAPHICS_TOO_MANY_REFERENCES NTStatus = 0xC01E0103 + STATUS_GRAPHICS_TRY_AGAIN_LATER NTStatus = 0xC01E0104 + STATUS_GRAPHICS_TRY_AGAIN_NOW NTStatus = 0xC01E0105 + STATUS_GRAPHICS_ALLOCATION_INVALID NTStatus = 0xC01E0106 + STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE NTStatus = 0xC01E0107 + STATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED NTStatus = 0xC01E0108 + STATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION NTStatus = 0xC01E0109 + STATUS_GRAPHICS_INVALID_ALLOCATION_USAGE NTStatus = 0xC01E0110 + STATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION NTStatus = 0xC01E0111 + STATUS_GRAPHICS_ALLOCATION_CLOSED NTStatus = 0xC01E0112 + STATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE NTStatus = 0xC01E0113 + STATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE NTStatus = 0xC01E0114 + STATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE NTStatus = 0xC01E0115 + STATUS_GRAPHICS_ALLOCATION_CONTENT_LOST NTStatus = 0xC01E0116 + STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE NTStatus = 0xC01E0200 + STATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION NTStatus = 0x401E0201 + STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY NTStatus = 0xC01E0300 + STATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED NTStatus = 0xC01E0301 + STATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED NTStatus = 0xC01E0302 + STATUS_GRAPHICS_INVALID_VIDPN NTStatus = 0xC01E0303 + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE NTStatus = 0xC01E0304 + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET NTStatus = 0xC01E0305 + STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED NTStatus = 0xC01E0306 + STATUS_GRAPHICS_MODE_NOT_PINNED NTStatus = 0x401E0307 + STATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET NTStatus = 0xC01E0308 + STATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET NTStatus = 0xC01E0309 + STATUS_GRAPHICS_INVALID_FREQUENCY NTStatus = 0xC01E030A + STATUS_GRAPHICS_INVALID_ACTIVE_REGION NTStatus = 0xC01E030B + STATUS_GRAPHICS_INVALID_TOTAL_REGION NTStatus = 0xC01E030C + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE NTStatus = 0xC01E0310 + STATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE NTStatus = 0xC01E0311 + STATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET NTStatus = 0xC01E0312 + STATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY NTStatus = 0xC01E0313 + STATUS_GRAPHICS_MODE_ALREADY_IN_MODESET NTStatus = 0xC01E0314 + STATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET NTStatus = 0xC01E0315 + STATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET NTStatus = 0xC01E0316 + STATUS_GRAPHICS_SOURCE_ALREADY_IN_SET NTStatus = 0xC01E0317 + STATUS_GRAPHICS_TARGET_ALREADY_IN_SET NTStatus = 0xC01E0318 + STATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH NTStatus = 0xC01E0319 + STATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY NTStatus = 0xC01E031A + STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET NTStatus = 0xC01E031B + STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE NTStatus = 0xC01E031C + STATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET NTStatus = 0xC01E031D + STATUS_GRAPHICS_NO_PREFERRED_MODE NTStatus = 0x401E031E + STATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET NTStatus = 0xC01E031F + STATUS_GRAPHICS_STALE_MODESET NTStatus = 0xC01E0320 + STATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET NTStatus = 0xC01E0321 + STATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE NTStatus = 0xC01E0322 + STATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN NTStatus = 0xC01E0323 + STATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE NTStatus = 0xC01E0324 + STATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION NTStatus = 0xC01E0325 + STATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES NTStatus = 0xC01E0326 + STATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY NTStatus = 0xC01E0327 + STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE NTStatus = 0xC01E0328 + STATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET NTStatus = 0xC01E0329 + STATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET NTStatus = 0xC01E032A + STATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR NTStatus = 0xC01E032B + STATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET NTStatus = 0xC01E032C + STATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET NTStatus = 0xC01E032D + STATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE NTStatus = 0xC01E032E + STATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE NTStatus = 0xC01E032F + STATUS_GRAPHICS_RESOURCES_NOT_RELATED NTStatus = 0xC01E0330 + STATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE NTStatus = 0xC01E0331 + STATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE NTStatus = 0xC01E0332 + STATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET NTStatus = 0xC01E0333 + STATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER NTStatus = 0xC01E0334 + STATUS_GRAPHICS_NO_VIDPNMGR NTStatus = 0xC01E0335 + STATUS_GRAPHICS_NO_ACTIVE_VIDPN NTStatus = 0xC01E0336 + STATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY NTStatus = 0xC01E0337 + STATUS_GRAPHICS_MONITOR_NOT_CONNECTED NTStatus = 0xC01E0338 + STATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY NTStatus = 0xC01E0339 + STATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE NTStatus = 0xC01E033A + STATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE NTStatus = 0xC01E033B + STATUS_GRAPHICS_INVALID_STRIDE NTStatus = 0xC01E033C + STATUS_GRAPHICS_INVALID_PIXELFORMAT NTStatus = 0xC01E033D + STATUS_GRAPHICS_INVALID_COLORBASIS NTStatus = 0xC01E033E + STATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE NTStatus = 0xC01E033F + STATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY NTStatus = 0xC01E0340 + STATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT NTStatus = 0xC01E0341 + STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE NTStatus = 0xC01E0342 + STATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN NTStatus = 0xC01E0343 + STATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL NTStatus = 0xC01E0344 + STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION NTStatus = 0xC01E0345 + STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED NTStatus = 0xC01E0346 + STATUS_GRAPHICS_INVALID_GAMMA_RAMP NTStatus = 0xC01E0347 + STATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED NTStatus = 0xC01E0348 + STATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED NTStatus = 0xC01E0349 + STATUS_GRAPHICS_MODE_NOT_IN_MODESET NTStatus = 0xC01E034A + STATUS_GRAPHICS_DATASET_IS_EMPTY NTStatus = 0x401E034B + STATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET NTStatus = 0x401E034C + STATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON NTStatus = 0xC01E034D + STATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE NTStatus = 0xC01E034E + STATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE NTStatus = 0xC01E034F + STATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS NTStatus = 0xC01E0350 + STATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED NTStatus = 0x401E0351 + STATUS_GRAPHICS_INVALID_SCANLINE_ORDERING NTStatus = 0xC01E0352 + STATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED NTStatus = 0xC01E0353 + STATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS NTStatus = 0xC01E0354 + STATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT NTStatus = 0xC01E0355 + STATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM NTStatus = 0xC01E0356 + STATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN NTStatus = 0xC01E0357 + STATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT NTStatus = 0xC01E0358 + STATUS_GRAPHICS_MAX_NUM_PATHS_REACHED NTStatus = 0xC01E0359 + STATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION NTStatus = 0xC01E035A + STATUS_GRAPHICS_INVALID_CLIENT_TYPE NTStatus = 0xC01E035B + STATUS_GRAPHICS_CLIENTVIDPN_NOT_SET NTStatus = 0xC01E035C + STATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED NTStatus = 0xC01E0400 + STATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED NTStatus = 0xC01E0401 + STATUS_GRAPHICS_UNKNOWN_CHILD_STATUS NTStatus = 0x401E042F + STATUS_GRAPHICS_NOT_A_LINKED_ADAPTER NTStatus = 0xC01E0430 + STATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED NTStatus = 0xC01E0431 + STATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED NTStatus = 0xC01E0432 + STATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY NTStatus = 0xC01E0433 + STATUS_GRAPHICS_CHAINLINKS_NOT_STARTED NTStatus = 0xC01E0434 + STATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON NTStatus = 0xC01E0435 + STATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE NTStatus = 0xC01E0436 + STATUS_GRAPHICS_LEADLINK_START_DEFERRED NTStatus = 0x401E0437 + STATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER NTStatus = 0xC01E0438 + STATUS_GRAPHICS_POLLING_TOO_FREQUENTLY NTStatus = 0x401E0439 + STATUS_GRAPHICS_START_DEFERRED NTStatus = 0x401E043A + STATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED NTStatus = 0xC01E043B + STATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS NTStatus = 0x401E043C + STATUS_GRAPHICS_OPM_NOT_SUPPORTED NTStatus = 0xC01E0500 + STATUS_GRAPHICS_COPP_NOT_SUPPORTED NTStatus = 0xC01E0501 + STATUS_GRAPHICS_UAB_NOT_SUPPORTED NTStatus = 0xC01E0502 + STATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS NTStatus = 0xC01E0503 + STATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST NTStatus = 0xC01E0505 + STATUS_GRAPHICS_OPM_INTERNAL_ERROR NTStatus = 0xC01E050B + STATUS_GRAPHICS_OPM_INVALID_HANDLE NTStatus = 0xC01E050C + STATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH NTStatus = 0xC01E050E + STATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED NTStatus = 0xC01E050F + STATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED NTStatus = 0xC01E0510 + STATUS_GRAPHICS_PVP_HFS_FAILED NTStatus = 0xC01E0511 + STATUS_GRAPHICS_OPM_INVALID_SRM NTStatus = 0xC01E0512 + STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP NTStatus = 0xC01E0513 + STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP NTStatus = 0xC01E0514 + STATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA NTStatus = 0xC01E0515 + STATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET NTStatus = 0xC01E0516 + STATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH NTStatus = 0xC01E0517 + STATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE NTStatus = 0xC01E0518 + STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS NTStatus = 0xC01E051A + STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS NTStatus = 0xC01E051C + STATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST NTStatus = 0xC01E051D + STATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR NTStatus = 0xC01E051E + STATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS NTStatus = 0xC01E051F + STATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED NTStatus = 0xC01E0520 + STATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST NTStatus = 0xC01E0521 + STATUS_GRAPHICS_I2C_NOT_SUPPORTED NTStatus = 0xC01E0580 + STATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST NTStatus = 0xC01E0581 + STATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA NTStatus = 0xC01E0582 + STATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA NTStatus = 0xC01E0583 + STATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED NTStatus = 0xC01E0584 + STATUS_GRAPHICS_DDCCI_INVALID_DATA NTStatus = 0xC01E0585 + STATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE NTStatus = 0xC01E0586 + STATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING NTStatus = 0xC01E0587 + STATUS_GRAPHICS_MCA_INTERNAL_ERROR NTStatus = 0xC01E0588 + STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND NTStatus = 0xC01E0589 + STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH NTStatus = 0xC01E058A + STATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM NTStatus = 0xC01E058B + STATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE NTStatus = 0xC01E058C + STATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS NTStatus = 0xC01E058D + STATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED NTStatus = 0xC01E05E0 + STATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME NTStatus = 0xC01E05E1 + STATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP NTStatus = 0xC01E05E2 + STATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED NTStatus = 0xC01E05E3 + STATUS_GRAPHICS_INVALID_POINTER NTStatus = 0xC01E05E4 + STATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE NTStatus = 0xC01E05E5 + STATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL NTStatus = 0xC01E05E6 + STATUS_GRAPHICS_INTERNAL_ERROR NTStatus = 0xC01E05E7 + STATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS NTStatus = 0xC01E05E8 + STATUS_FVE_LOCKED_VOLUME NTStatus = 0xC0210000 + STATUS_FVE_NOT_ENCRYPTED NTStatus = 0xC0210001 + STATUS_FVE_BAD_INFORMATION NTStatus = 0xC0210002 + STATUS_FVE_TOO_SMALL NTStatus = 0xC0210003 + STATUS_FVE_FAILED_WRONG_FS NTStatus = 0xC0210004 + STATUS_FVE_BAD_PARTITION_SIZE NTStatus = 0xC0210005 + STATUS_FVE_FS_NOT_EXTENDED NTStatus = 0xC0210006 + STATUS_FVE_FS_MOUNTED NTStatus = 0xC0210007 + STATUS_FVE_NO_LICENSE NTStatus = 0xC0210008 + STATUS_FVE_ACTION_NOT_ALLOWED NTStatus = 0xC0210009 + STATUS_FVE_BAD_DATA NTStatus = 0xC021000A + STATUS_FVE_VOLUME_NOT_BOUND NTStatus = 0xC021000B + STATUS_FVE_NOT_DATA_VOLUME NTStatus = 0xC021000C + STATUS_FVE_CONV_READ_ERROR NTStatus = 0xC021000D + STATUS_FVE_CONV_WRITE_ERROR NTStatus = 0xC021000E + STATUS_FVE_OVERLAPPED_UPDATE NTStatus = 0xC021000F + STATUS_FVE_FAILED_SECTOR_SIZE NTStatus = 0xC0210010 + STATUS_FVE_FAILED_AUTHENTICATION NTStatus = 0xC0210011 + STATUS_FVE_NOT_OS_VOLUME NTStatus = 0xC0210012 + STATUS_FVE_KEYFILE_NOT_FOUND NTStatus = 0xC0210013 + STATUS_FVE_KEYFILE_INVALID NTStatus = 0xC0210014 + STATUS_FVE_KEYFILE_NO_VMK NTStatus = 0xC0210015 + STATUS_FVE_TPM_DISABLED NTStatus = 0xC0210016 + STATUS_FVE_TPM_SRK_AUTH_NOT_ZERO NTStatus = 0xC0210017 + STATUS_FVE_TPM_INVALID_PCR NTStatus = 0xC0210018 + STATUS_FVE_TPM_NO_VMK NTStatus = 0xC0210019 + STATUS_FVE_PIN_INVALID NTStatus = 0xC021001A + STATUS_FVE_AUTH_INVALID_APPLICATION NTStatus = 0xC021001B + STATUS_FVE_AUTH_INVALID_CONFIG NTStatus = 0xC021001C + STATUS_FVE_DEBUGGER_ENABLED NTStatus = 0xC021001D + STATUS_FVE_DRY_RUN_FAILED NTStatus = 0xC021001E + STATUS_FVE_BAD_METADATA_POINTER NTStatus = 0xC021001F + STATUS_FVE_OLD_METADATA_COPY NTStatus = 0xC0210020 + STATUS_FVE_REBOOT_REQUIRED NTStatus = 0xC0210021 + STATUS_FVE_RAW_ACCESS NTStatus = 0xC0210022 + STATUS_FVE_RAW_BLOCKED NTStatus = 0xC0210023 + STATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY NTStatus = 0xC0210024 + STATUS_FVE_MOR_FAILED NTStatus = 0xC0210025 + STATUS_FVE_NO_FEATURE_LICENSE NTStatus = 0xC0210026 + STATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED NTStatus = 0xC0210027 + STATUS_FVE_CONV_RECOVERY_FAILED NTStatus = 0xC0210028 + STATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG NTStatus = 0xC0210029 + STATUS_FVE_INVALID_DATUM_TYPE NTStatus = 0xC021002A + STATUS_FVE_VOLUME_TOO_SMALL NTStatus = 0xC0210030 + STATUS_FVE_ENH_PIN_INVALID NTStatus = 0xC0210031 + STATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE NTStatus = 0xC0210032 + STATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE NTStatus = 0xC0210033 + STATUS_FVE_NOT_ALLOWED_ON_CSV_STACK NTStatus = 0xC0210034 + STATUS_FVE_NOT_ALLOWED_ON_CLUSTER NTStatus = 0xC0210035 + STATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING NTStatus = 0xC0210036 + STATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE NTStatus = 0xC0210037 + STATUS_FVE_EDRIVE_DRY_RUN_FAILED NTStatus = 0xC0210038 + STATUS_FVE_SECUREBOOT_DISABLED NTStatus = 0xC0210039 + STATUS_FVE_SECUREBOOT_CONFIG_CHANGE NTStatus = 0xC021003A + STATUS_FVE_DEVICE_LOCKEDOUT NTStatus = 0xC021003B + STATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT NTStatus = 0xC021003C + STATUS_FVE_NOT_DE_VOLUME NTStatus = 0xC021003D + STATUS_FVE_PROTECTION_DISABLED NTStatus = 0xC021003E + STATUS_FVE_PROTECTION_CANNOT_BE_DISABLED NTStatus = 0xC021003F + STATUS_FVE_OSV_KSR_NOT_ALLOWED NTStatus = 0xC0210040 + STATUS_FWP_CALLOUT_NOT_FOUND NTStatus = 0xC0220001 + STATUS_FWP_CONDITION_NOT_FOUND NTStatus = 0xC0220002 + STATUS_FWP_FILTER_NOT_FOUND NTStatus = 0xC0220003 + STATUS_FWP_LAYER_NOT_FOUND NTStatus = 0xC0220004 + STATUS_FWP_PROVIDER_NOT_FOUND NTStatus = 0xC0220005 + STATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND NTStatus = 0xC0220006 + STATUS_FWP_SUBLAYER_NOT_FOUND NTStatus = 0xC0220007 + STATUS_FWP_NOT_FOUND NTStatus = 0xC0220008 + STATUS_FWP_ALREADY_EXISTS NTStatus = 0xC0220009 + STATUS_FWP_IN_USE NTStatus = 0xC022000A + STATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS NTStatus = 0xC022000B + STATUS_FWP_WRONG_SESSION NTStatus = 0xC022000C + STATUS_FWP_NO_TXN_IN_PROGRESS NTStatus = 0xC022000D + STATUS_FWP_TXN_IN_PROGRESS NTStatus = 0xC022000E + STATUS_FWP_TXN_ABORTED NTStatus = 0xC022000F + STATUS_FWP_SESSION_ABORTED NTStatus = 0xC0220010 + STATUS_FWP_INCOMPATIBLE_TXN NTStatus = 0xC0220011 + STATUS_FWP_TIMEOUT NTStatus = 0xC0220012 + STATUS_FWP_NET_EVENTS_DISABLED NTStatus = 0xC0220013 + STATUS_FWP_INCOMPATIBLE_LAYER NTStatus = 0xC0220014 + STATUS_FWP_KM_CLIENTS_ONLY NTStatus = 0xC0220015 + STATUS_FWP_LIFETIME_MISMATCH NTStatus = 0xC0220016 + STATUS_FWP_BUILTIN_OBJECT NTStatus = 0xC0220017 + STATUS_FWP_TOO_MANY_CALLOUTS NTStatus = 0xC0220018 + STATUS_FWP_NOTIFICATION_DROPPED NTStatus = 0xC0220019 + STATUS_FWP_TRAFFIC_MISMATCH NTStatus = 0xC022001A + STATUS_FWP_INCOMPATIBLE_SA_STATE NTStatus = 0xC022001B + STATUS_FWP_NULL_POINTER NTStatus = 0xC022001C + STATUS_FWP_INVALID_ENUMERATOR NTStatus = 0xC022001D + STATUS_FWP_INVALID_FLAGS NTStatus = 0xC022001E + STATUS_FWP_INVALID_NET_MASK NTStatus = 0xC022001F + STATUS_FWP_INVALID_RANGE NTStatus = 0xC0220020 + STATUS_FWP_INVALID_INTERVAL NTStatus = 0xC0220021 + STATUS_FWP_ZERO_LENGTH_ARRAY NTStatus = 0xC0220022 + STATUS_FWP_NULL_DISPLAY_NAME NTStatus = 0xC0220023 + STATUS_FWP_INVALID_ACTION_TYPE NTStatus = 0xC0220024 + STATUS_FWP_INVALID_WEIGHT NTStatus = 0xC0220025 + STATUS_FWP_MATCH_TYPE_MISMATCH NTStatus = 0xC0220026 + STATUS_FWP_TYPE_MISMATCH NTStatus = 0xC0220027 + STATUS_FWP_OUT_OF_BOUNDS NTStatus = 0xC0220028 + STATUS_FWP_RESERVED NTStatus = 0xC0220029 + STATUS_FWP_DUPLICATE_CONDITION NTStatus = 0xC022002A + STATUS_FWP_DUPLICATE_KEYMOD NTStatus = 0xC022002B + STATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER NTStatus = 0xC022002C + STATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER NTStatus = 0xC022002D + STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER NTStatus = 0xC022002E + STATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT NTStatus = 0xC022002F + STATUS_FWP_INCOMPATIBLE_AUTH_METHOD NTStatus = 0xC0220030 + STATUS_FWP_INCOMPATIBLE_DH_GROUP NTStatus = 0xC0220031 + STATUS_FWP_EM_NOT_SUPPORTED NTStatus = 0xC0220032 + STATUS_FWP_NEVER_MATCH NTStatus = 0xC0220033 + STATUS_FWP_PROVIDER_CONTEXT_MISMATCH NTStatus = 0xC0220034 + STATUS_FWP_INVALID_PARAMETER NTStatus = 0xC0220035 + STATUS_FWP_TOO_MANY_SUBLAYERS NTStatus = 0xC0220036 + STATUS_FWP_CALLOUT_NOTIFICATION_FAILED NTStatus = 0xC0220037 + STATUS_FWP_INVALID_AUTH_TRANSFORM NTStatus = 0xC0220038 + STATUS_FWP_INVALID_CIPHER_TRANSFORM NTStatus = 0xC0220039 + STATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM NTStatus = 0xC022003A + STATUS_FWP_INVALID_TRANSFORM_COMBINATION NTStatus = 0xC022003B + STATUS_FWP_DUPLICATE_AUTH_METHOD NTStatus = 0xC022003C + STATUS_FWP_INVALID_TUNNEL_ENDPOINT NTStatus = 0xC022003D + STATUS_FWP_L2_DRIVER_NOT_READY NTStatus = 0xC022003E + STATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED NTStatus = 0xC022003F + STATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL NTStatus = 0xC0220040 + STATUS_FWP_CONNECTIONS_DISABLED NTStatus = 0xC0220041 + STATUS_FWP_INVALID_DNS_NAME NTStatus = 0xC0220042 + STATUS_FWP_STILL_ON NTStatus = 0xC0220043 + STATUS_FWP_IKEEXT_NOT_RUNNING NTStatus = 0xC0220044 + STATUS_FWP_TCPIP_NOT_READY NTStatus = 0xC0220100 + STATUS_FWP_INJECT_HANDLE_CLOSING NTStatus = 0xC0220101 + STATUS_FWP_INJECT_HANDLE_STALE NTStatus = 0xC0220102 + STATUS_FWP_CANNOT_PEND NTStatus = 0xC0220103 + STATUS_FWP_DROP_NOICMP NTStatus = 0xC0220104 + STATUS_NDIS_CLOSING NTStatus = 0xC0230002 + STATUS_NDIS_BAD_VERSION NTStatus = 0xC0230004 + STATUS_NDIS_BAD_CHARACTERISTICS NTStatus = 0xC0230005 + STATUS_NDIS_ADAPTER_NOT_FOUND NTStatus = 0xC0230006 + STATUS_NDIS_OPEN_FAILED NTStatus = 0xC0230007 + STATUS_NDIS_DEVICE_FAILED NTStatus = 0xC0230008 + STATUS_NDIS_MULTICAST_FULL NTStatus = 0xC0230009 + STATUS_NDIS_MULTICAST_EXISTS NTStatus = 0xC023000A + STATUS_NDIS_MULTICAST_NOT_FOUND NTStatus = 0xC023000B + STATUS_NDIS_REQUEST_ABORTED NTStatus = 0xC023000C + STATUS_NDIS_RESET_IN_PROGRESS NTStatus = 0xC023000D + STATUS_NDIS_NOT_SUPPORTED NTStatus = 0xC02300BB + STATUS_NDIS_INVALID_PACKET NTStatus = 0xC023000F + STATUS_NDIS_ADAPTER_NOT_READY NTStatus = 0xC0230011 + STATUS_NDIS_INVALID_LENGTH NTStatus = 0xC0230014 + STATUS_NDIS_INVALID_DATA NTStatus = 0xC0230015 + STATUS_NDIS_BUFFER_TOO_SHORT NTStatus = 0xC0230016 + STATUS_NDIS_INVALID_OID NTStatus = 0xC0230017 + STATUS_NDIS_ADAPTER_REMOVED NTStatus = 0xC0230018 + STATUS_NDIS_UNSUPPORTED_MEDIA NTStatus = 0xC0230019 + STATUS_NDIS_GROUP_ADDRESS_IN_USE NTStatus = 0xC023001A + STATUS_NDIS_FILE_NOT_FOUND NTStatus = 0xC023001B + STATUS_NDIS_ERROR_READING_FILE NTStatus = 0xC023001C + STATUS_NDIS_ALREADY_MAPPED NTStatus = 0xC023001D + STATUS_NDIS_RESOURCE_CONFLICT NTStatus = 0xC023001E + STATUS_NDIS_MEDIA_DISCONNECTED NTStatus = 0xC023001F + STATUS_NDIS_INVALID_ADDRESS NTStatus = 0xC0230022 + STATUS_NDIS_INVALID_DEVICE_REQUEST NTStatus = 0xC0230010 + STATUS_NDIS_PAUSED NTStatus = 0xC023002A + STATUS_NDIS_INTERFACE_NOT_FOUND NTStatus = 0xC023002B + STATUS_NDIS_UNSUPPORTED_REVISION NTStatus = 0xC023002C + STATUS_NDIS_INVALID_PORT NTStatus = 0xC023002D + STATUS_NDIS_INVALID_PORT_STATE NTStatus = 0xC023002E + STATUS_NDIS_LOW_POWER_STATE NTStatus = 0xC023002F + STATUS_NDIS_REINIT_REQUIRED NTStatus = 0xC0230030 + STATUS_NDIS_NO_QUEUES NTStatus = 0xC0230031 + STATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED NTStatus = 0xC0232000 + STATUS_NDIS_DOT11_MEDIA_IN_USE NTStatus = 0xC0232001 + STATUS_NDIS_DOT11_POWER_STATE_INVALID NTStatus = 0xC0232002 + STATUS_NDIS_PM_WOL_PATTERN_LIST_FULL NTStatus = 0xC0232003 + STATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL NTStatus = 0xC0232004 + STATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE NTStatus = 0xC0232005 + STATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE NTStatus = 0xC0232006 + STATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED NTStatus = 0xC0232007 + STATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED NTStatus = 0xC0232008 + STATUS_NDIS_INDICATION_REQUIRED NTStatus = 0x40230001 + STATUS_NDIS_OFFLOAD_POLICY NTStatus = 0xC023100F + STATUS_NDIS_OFFLOAD_CONNECTION_REJECTED NTStatus = 0xC0231012 + STATUS_NDIS_OFFLOAD_PATH_REJECTED NTStatus = 0xC0231013 + STATUS_TPM_ERROR_MASK NTStatus = 0xC0290000 + STATUS_TPM_AUTHFAIL NTStatus = 0xC0290001 + STATUS_TPM_BADINDEX NTStatus = 0xC0290002 + STATUS_TPM_BAD_PARAMETER NTStatus = 0xC0290003 + STATUS_TPM_AUDITFAILURE NTStatus = 0xC0290004 + STATUS_TPM_CLEAR_DISABLED NTStatus = 0xC0290005 + STATUS_TPM_DEACTIVATED NTStatus = 0xC0290006 + STATUS_TPM_DISABLED NTStatus = 0xC0290007 + STATUS_TPM_DISABLED_CMD NTStatus = 0xC0290008 + STATUS_TPM_FAIL NTStatus = 0xC0290009 + STATUS_TPM_BAD_ORDINAL NTStatus = 0xC029000A + STATUS_TPM_INSTALL_DISABLED NTStatus = 0xC029000B + STATUS_TPM_INVALID_KEYHANDLE NTStatus = 0xC029000C + STATUS_TPM_KEYNOTFOUND NTStatus = 0xC029000D + STATUS_TPM_INAPPROPRIATE_ENC NTStatus = 0xC029000E + STATUS_TPM_MIGRATEFAIL NTStatus = 0xC029000F + STATUS_TPM_INVALID_PCR_INFO NTStatus = 0xC0290010 + STATUS_TPM_NOSPACE NTStatus = 0xC0290011 + STATUS_TPM_NOSRK NTStatus = 0xC0290012 + STATUS_TPM_NOTSEALED_BLOB NTStatus = 0xC0290013 + STATUS_TPM_OWNER_SET NTStatus = 0xC0290014 + STATUS_TPM_RESOURCES NTStatus = 0xC0290015 + STATUS_TPM_SHORTRANDOM NTStatus = 0xC0290016 + STATUS_TPM_SIZE NTStatus = 0xC0290017 + STATUS_TPM_WRONGPCRVAL NTStatus = 0xC0290018 + STATUS_TPM_BAD_PARAM_SIZE NTStatus = 0xC0290019 + STATUS_TPM_SHA_THREAD NTStatus = 0xC029001A + STATUS_TPM_SHA_ERROR NTStatus = 0xC029001B + STATUS_TPM_FAILEDSELFTEST NTStatus = 0xC029001C + STATUS_TPM_AUTH2FAIL NTStatus = 0xC029001D + STATUS_TPM_BADTAG NTStatus = 0xC029001E + STATUS_TPM_IOERROR NTStatus = 0xC029001F + STATUS_TPM_ENCRYPT_ERROR NTStatus = 0xC0290020 + STATUS_TPM_DECRYPT_ERROR NTStatus = 0xC0290021 + STATUS_TPM_INVALID_AUTHHANDLE NTStatus = 0xC0290022 + STATUS_TPM_NO_ENDORSEMENT NTStatus = 0xC0290023 + STATUS_TPM_INVALID_KEYUSAGE NTStatus = 0xC0290024 + STATUS_TPM_WRONG_ENTITYTYPE NTStatus = 0xC0290025 + STATUS_TPM_INVALID_POSTINIT NTStatus = 0xC0290026 + STATUS_TPM_INAPPROPRIATE_SIG NTStatus = 0xC0290027 + STATUS_TPM_BAD_KEY_PROPERTY NTStatus = 0xC0290028 + STATUS_TPM_BAD_MIGRATION NTStatus = 0xC0290029 + STATUS_TPM_BAD_SCHEME NTStatus = 0xC029002A + STATUS_TPM_BAD_DATASIZE NTStatus = 0xC029002B + STATUS_TPM_BAD_MODE NTStatus = 0xC029002C + STATUS_TPM_BAD_PRESENCE NTStatus = 0xC029002D + STATUS_TPM_BAD_VERSION NTStatus = 0xC029002E + STATUS_TPM_NO_WRAP_TRANSPORT NTStatus = 0xC029002F + STATUS_TPM_AUDITFAIL_UNSUCCESSFUL NTStatus = 0xC0290030 + STATUS_TPM_AUDITFAIL_SUCCESSFUL NTStatus = 0xC0290031 + STATUS_TPM_NOTRESETABLE NTStatus = 0xC0290032 + STATUS_TPM_NOTLOCAL NTStatus = 0xC0290033 + STATUS_TPM_BAD_TYPE NTStatus = 0xC0290034 + STATUS_TPM_INVALID_RESOURCE NTStatus = 0xC0290035 + STATUS_TPM_NOTFIPS NTStatus = 0xC0290036 + STATUS_TPM_INVALID_FAMILY NTStatus = 0xC0290037 + STATUS_TPM_NO_NV_PERMISSION NTStatus = 0xC0290038 + STATUS_TPM_REQUIRES_SIGN NTStatus = 0xC0290039 + STATUS_TPM_KEY_NOTSUPPORTED NTStatus = 0xC029003A + STATUS_TPM_AUTH_CONFLICT NTStatus = 0xC029003B + STATUS_TPM_AREA_LOCKED NTStatus = 0xC029003C + STATUS_TPM_BAD_LOCALITY NTStatus = 0xC029003D + STATUS_TPM_READ_ONLY NTStatus = 0xC029003E + STATUS_TPM_PER_NOWRITE NTStatus = 0xC029003F + STATUS_TPM_FAMILYCOUNT NTStatus = 0xC0290040 + STATUS_TPM_WRITE_LOCKED NTStatus = 0xC0290041 + STATUS_TPM_BAD_ATTRIBUTES NTStatus = 0xC0290042 + STATUS_TPM_INVALID_STRUCTURE NTStatus = 0xC0290043 + STATUS_TPM_KEY_OWNER_CONTROL NTStatus = 0xC0290044 + STATUS_TPM_BAD_COUNTER NTStatus = 0xC0290045 + STATUS_TPM_NOT_FULLWRITE NTStatus = 0xC0290046 + STATUS_TPM_CONTEXT_GAP NTStatus = 0xC0290047 + STATUS_TPM_MAXNVWRITES NTStatus = 0xC0290048 + STATUS_TPM_NOOPERATOR NTStatus = 0xC0290049 + STATUS_TPM_RESOURCEMISSING NTStatus = 0xC029004A + STATUS_TPM_DELEGATE_LOCK NTStatus = 0xC029004B + STATUS_TPM_DELEGATE_FAMILY NTStatus = 0xC029004C + STATUS_TPM_DELEGATE_ADMIN NTStatus = 0xC029004D + STATUS_TPM_TRANSPORT_NOTEXCLUSIVE NTStatus = 0xC029004E + STATUS_TPM_OWNER_CONTROL NTStatus = 0xC029004F + STATUS_TPM_DAA_RESOURCES NTStatus = 0xC0290050 + STATUS_TPM_DAA_INPUT_DATA0 NTStatus = 0xC0290051 + STATUS_TPM_DAA_INPUT_DATA1 NTStatus = 0xC0290052 + STATUS_TPM_DAA_ISSUER_SETTINGS NTStatus = 0xC0290053 + STATUS_TPM_DAA_TPM_SETTINGS NTStatus = 0xC0290054 + STATUS_TPM_DAA_STAGE NTStatus = 0xC0290055 + STATUS_TPM_DAA_ISSUER_VALIDITY NTStatus = 0xC0290056 + STATUS_TPM_DAA_WRONG_W NTStatus = 0xC0290057 + STATUS_TPM_BAD_HANDLE NTStatus = 0xC0290058 + STATUS_TPM_BAD_DELEGATE NTStatus = 0xC0290059 + STATUS_TPM_BADCONTEXT NTStatus = 0xC029005A + STATUS_TPM_TOOMANYCONTEXTS NTStatus = 0xC029005B + STATUS_TPM_MA_TICKET_SIGNATURE NTStatus = 0xC029005C + STATUS_TPM_MA_DESTINATION NTStatus = 0xC029005D + STATUS_TPM_MA_SOURCE NTStatus = 0xC029005E + STATUS_TPM_MA_AUTHORITY NTStatus = 0xC029005F + STATUS_TPM_PERMANENTEK NTStatus = 0xC0290061 + STATUS_TPM_BAD_SIGNATURE NTStatus = 0xC0290062 + STATUS_TPM_NOCONTEXTSPACE NTStatus = 0xC0290063 + STATUS_TPM_20_E_ASYMMETRIC NTStatus = 0xC0290081 + STATUS_TPM_20_E_ATTRIBUTES NTStatus = 0xC0290082 + STATUS_TPM_20_E_HASH NTStatus = 0xC0290083 + STATUS_TPM_20_E_VALUE NTStatus = 0xC0290084 + STATUS_TPM_20_E_HIERARCHY NTStatus = 0xC0290085 + STATUS_TPM_20_E_KEY_SIZE NTStatus = 0xC0290087 + STATUS_TPM_20_E_MGF NTStatus = 0xC0290088 + STATUS_TPM_20_E_MODE NTStatus = 0xC0290089 + STATUS_TPM_20_E_TYPE NTStatus = 0xC029008A + STATUS_TPM_20_E_HANDLE NTStatus = 0xC029008B + STATUS_TPM_20_E_KDF NTStatus = 0xC029008C + STATUS_TPM_20_E_RANGE NTStatus = 0xC029008D + STATUS_TPM_20_E_AUTH_FAIL NTStatus = 0xC029008E + STATUS_TPM_20_E_NONCE NTStatus = 0xC029008F + STATUS_TPM_20_E_PP NTStatus = 0xC0290090 + STATUS_TPM_20_E_SCHEME NTStatus = 0xC0290092 + STATUS_TPM_20_E_SIZE NTStatus = 0xC0290095 + STATUS_TPM_20_E_SYMMETRIC NTStatus = 0xC0290096 + STATUS_TPM_20_E_TAG NTStatus = 0xC0290097 + STATUS_TPM_20_E_SELECTOR NTStatus = 0xC0290098 + STATUS_TPM_20_E_INSUFFICIENT NTStatus = 0xC029009A + STATUS_TPM_20_E_SIGNATURE NTStatus = 0xC029009B + STATUS_TPM_20_E_KEY NTStatus = 0xC029009C + STATUS_TPM_20_E_POLICY_FAIL NTStatus = 0xC029009D + STATUS_TPM_20_E_INTEGRITY NTStatus = 0xC029009F + STATUS_TPM_20_E_TICKET NTStatus = 0xC02900A0 + STATUS_TPM_20_E_RESERVED_BITS NTStatus = 0xC02900A1 + STATUS_TPM_20_E_BAD_AUTH NTStatus = 0xC02900A2 + STATUS_TPM_20_E_EXPIRED NTStatus = 0xC02900A3 + STATUS_TPM_20_E_POLICY_CC NTStatus = 0xC02900A4 + STATUS_TPM_20_E_BINDING NTStatus = 0xC02900A5 + STATUS_TPM_20_E_CURVE NTStatus = 0xC02900A6 + STATUS_TPM_20_E_ECC_POINT NTStatus = 0xC02900A7 + STATUS_TPM_20_E_INITIALIZE NTStatus = 0xC0290100 + STATUS_TPM_20_E_FAILURE NTStatus = 0xC0290101 + STATUS_TPM_20_E_SEQUENCE NTStatus = 0xC0290103 + STATUS_TPM_20_E_PRIVATE NTStatus = 0xC029010B + STATUS_TPM_20_E_HMAC NTStatus = 0xC0290119 + STATUS_TPM_20_E_DISABLED NTStatus = 0xC0290120 + STATUS_TPM_20_E_EXCLUSIVE NTStatus = 0xC0290121 + STATUS_TPM_20_E_ECC_CURVE NTStatus = 0xC0290123 + STATUS_TPM_20_E_AUTH_TYPE NTStatus = 0xC0290124 + STATUS_TPM_20_E_AUTH_MISSING NTStatus = 0xC0290125 + STATUS_TPM_20_E_POLICY NTStatus = 0xC0290126 + STATUS_TPM_20_E_PCR NTStatus = 0xC0290127 + STATUS_TPM_20_E_PCR_CHANGED NTStatus = 0xC0290128 + STATUS_TPM_20_E_UPGRADE NTStatus = 0xC029012D + STATUS_TPM_20_E_TOO_MANY_CONTEXTS NTStatus = 0xC029012E + STATUS_TPM_20_E_AUTH_UNAVAILABLE NTStatus = 0xC029012F + STATUS_TPM_20_E_REBOOT NTStatus = 0xC0290130 + STATUS_TPM_20_E_UNBALANCED NTStatus = 0xC0290131 + STATUS_TPM_20_E_COMMAND_SIZE NTStatus = 0xC0290142 + STATUS_TPM_20_E_COMMAND_CODE NTStatus = 0xC0290143 + STATUS_TPM_20_E_AUTHSIZE NTStatus = 0xC0290144 + STATUS_TPM_20_E_AUTH_CONTEXT NTStatus = 0xC0290145 + STATUS_TPM_20_E_NV_RANGE NTStatus = 0xC0290146 + STATUS_TPM_20_E_NV_SIZE NTStatus = 0xC0290147 + STATUS_TPM_20_E_NV_LOCKED NTStatus = 0xC0290148 + STATUS_TPM_20_E_NV_AUTHORIZATION NTStatus = 0xC0290149 + STATUS_TPM_20_E_NV_UNINITIALIZED NTStatus = 0xC029014A + STATUS_TPM_20_E_NV_SPACE NTStatus = 0xC029014B + STATUS_TPM_20_E_NV_DEFINED NTStatus = 0xC029014C + STATUS_TPM_20_E_BAD_CONTEXT NTStatus = 0xC0290150 + STATUS_TPM_20_E_CPHASH NTStatus = 0xC0290151 + STATUS_TPM_20_E_PARENT NTStatus = 0xC0290152 + STATUS_TPM_20_E_NEEDS_TEST NTStatus = 0xC0290153 + STATUS_TPM_20_E_NO_RESULT NTStatus = 0xC0290154 + STATUS_TPM_20_E_SENSITIVE NTStatus = 0xC0290155 + STATUS_TPM_COMMAND_BLOCKED NTStatus = 0xC0290400 + STATUS_TPM_INVALID_HANDLE NTStatus = 0xC0290401 + STATUS_TPM_DUPLICATE_VHANDLE NTStatus = 0xC0290402 + STATUS_TPM_EMBEDDED_COMMAND_BLOCKED NTStatus = 0xC0290403 + STATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED NTStatus = 0xC0290404 + STATUS_TPM_RETRY NTStatus = 0xC0290800 + STATUS_TPM_NEEDS_SELFTEST NTStatus = 0xC0290801 + STATUS_TPM_DOING_SELFTEST NTStatus = 0xC0290802 + STATUS_TPM_DEFEND_LOCK_RUNNING NTStatus = 0xC0290803 + STATUS_TPM_COMMAND_CANCELED NTStatus = 0xC0291001 + STATUS_TPM_TOO_MANY_CONTEXTS NTStatus = 0xC0291002 + STATUS_TPM_NOT_FOUND NTStatus = 0xC0291003 + STATUS_TPM_ACCESS_DENIED NTStatus = 0xC0291004 + STATUS_TPM_INSUFFICIENT_BUFFER NTStatus = 0xC0291005 + STATUS_TPM_PPI_FUNCTION_UNSUPPORTED NTStatus = 0xC0291006 + STATUS_PCP_ERROR_MASK NTStatus = 0xC0292000 + STATUS_PCP_DEVICE_NOT_READY NTStatus = 0xC0292001 + STATUS_PCP_INVALID_HANDLE NTStatus = 0xC0292002 + STATUS_PCP_INVALID_PARAMETER NTStatus = 0xC0292003 + STATUS_PCP_FLAG_NOT_SUPPORTED NTStatus = 0xC0292004 + STATUS_PCP_NOT_SUPPORTED NTStatus = 0xC0292005 + STATUS_PCP_BUFFER_TOO_SMALL NTStatus = 0xC0292006 + STATUS_PCP_INTERNAL_ERROR NTStatus = 0xC0292007 + STATUS_PCP_AUTHENTICATION_FAILED NTStatus = 0xC0292008 + STATUS_PCP_AUTHENTICATION_IGNORED NTStatus = 0xC0292009 + STATUS_PCP_POLICY_NOT_FOUND NTStatus = 0xC029200A + STATUS_PCP_PROFILE_NOT_FOUND NTStatus = 0xC029200B + STATUS_PCP_VALIDATION_FAILED NTStatus = 0xC029200C + STATUS_PCP_DEVICE_NOT_FOUND NTStatus = 0xC029200D + STATUS_PCP_WRONG_PARENT NTStatus = 0xC029200E + STATUS_PCP_KEY_NOT_LOADED NTStatus = 0xC029200F + STATUS_PCP_NO_KEY_CERTIFICATION NTStatus = 0xC0292010 + STATUS_PCP_KEY_NOT_FINALIZED NTStatus = 0xC0292011 + STATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET NTStatus = 0xC0292012 + STATUS_PCP_NOT_PCR_BOUND NTStatus = 0xC0292013 + STATUS_PCP_KEY_ALREADY_FINALIZED NTStatus = 0xC0292014 + STATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED NTStatus = 0xC0292015 + STATUS_PCP_KEY_USAGE_POLICY_INVALID NTStatus = 0xC0292016 + STATUS_PCP_SOFT_KEY_ERROR NTStatus = 0xC0292017 + STATUS_PCP_KEY_NOT_AUTHENTICATED NTStatus = 0xC0292018 + STATUS_PCP_KEY_NOT_AIK NTStatus = 0xC0292019 + STATUS_PCP_KEY_NOT_SIGNING_KEY NTStatus = 0xC029201A + STATUS_PCP_LOCKED_OUT NTStatus = 0xC029201B + STATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED NTStatus = 0xC029201C + STATUS_PCP_TPM_VERSION_NOT_SUPPORTED NTStatus = 0xC029201D + STATUS_PCP_BUFFER_LENGTH_MISMATCH NTStatus = 0xC029201E + STATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED NTStatus = 0xC029201F + STATUS_PCP_TICKET_MISSING NTStatus = 0xC0292020 + STATUS_PCP_RAW_POLICY_NOT_SUPPORTED NTStatus = 0xC0292021 + STATUS_PCP_KEY_HANDLE_INVALIDATED NTStatus = 0xC0292022 + STATUS_PCP_UNSUPPORTED_PSS_SALT NTStatus = 0x40292023 + STATUS_RTPM_CONTEXT_CONTINUE NTStatus = 0x00293000 + STATUS_RTPM_CONTEXT_COMPLETE NTStatus = 0x00293001 + STATUS_RTPM_NO_RESULT NTStatus = 0xC0293002 + STATUS_RTPM_PCR_READ_INCOMPLETE NTStatus = 0xC0293003 + STATUS_RTPM_INVALID_CONTEXT NTStatus = 0xC0293004 + STATUS_RTPM_UNSUPPORTED_CMD NTStatus = 0xC0293005 + STATUS_TPM_ZERO_EXHAUST_ENABLED NTStatus = 0xC0294000 + STATUS_HV_INVALID_HYPERCALL_CODE NTStatus = 0xC0350002 + STATUS_HV_INVALID_HYPERCALL_INPUT NTStatus = 0xC0350003 + STATUS_HV_INVALID_ALIGNMENT NTStatus = 0xC0350004 + STATUS_HV_INVALID_PARAMETER NTStatus = 0xC0350005 + STATUS_HV_ACCESS_DENIED NTStatus = 0xC0350006 + STATUS_HV_INVALID_PARTITION_STATE NTStatus = 0xC0350007 + STATUS_HV_OPERATION_DENIED NTStatus = 0xC0350008 + STATUS_HV_UNKNOWN_PROPERTY NTStatus = 0xC0350009 + STATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE NTStatus = 0xC035000A + STATUS_HV_INSUFFICIENT_MEMORY NTStatus = 0xC035000B + STATUS_HV_PARTITION_TOO_DEEP NTStatus = 0xC035000C + STATUS_HV_INVALID_PARTITION_ID NTStatus = 0xC035000D + STATUS_HV_INVALID_VP_INDEX NTStatus = 0xC035000E + STATUS_HV_INVALID_PORT_ID NTStatus = 0xC0350011 + STATUS_HV_INVALID_CONNECTION_ID NTStatus = 0xC0350012 + STATUS_HV_INSUFFICIENT_BUFFERS NTStatus = 0xC0350013 + STATUS_HV_NOT_ACKNOWLEDGED NTStatus = 0xC0350014 + STATUS_HV_INVALID_VP_STATE NTStatus = 0xC0350015 + STATUS_HV_ACKNOWLEDGED NTStatus = 0xC0350016 + STATUS_HV_INVALID_SAVE_RESTORE_STATE NTStatus = 0xC0350017 + STATUS_HV_INVALID_SYNIC_STATE NTStatus = 0xC0350018 + STATUS_HV_OBJECT_IN_USE NTStatus = 0xC0350019 + STATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO NTStatus = 0xC035001A + STATUS_HV_NO_DATA NTStatus = 0xC035001B + STATUS_HV_INACTIVE NTStatus = 0xC035001C + STATUS_HV_NO_RESOURCES NTStatus = 0xC035001D + STATUS_HV_FEATURE_UNAVAILABLE NTStatus = 0xC035001E + STATUS_HV_INSUFFICIENT_BUFFER NTStatus = 0xC0350033 + STATUS_HV_INSUFFICIENT_DEVICE_DOMAINS NTStatus = 0xC0350038 + STATUS_HV_CPUID_FEATURE_VALIDATION_ERROR NTStatus = 0xC035003C + STATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR NTStatus = 0xC035003D + STATUS_HV_PROCESSOR_STARTUP_TIMEOUT NTStatus = 0xC035003E + STATUS_HV_SMX_ENABLED NTStatus = 0xC035003F + STATUS_HV_INVALID_LP_INDEX NTStatus = 0xC0350041 + STATUS_HV_INVALID_REGISTER_VALUE NTStatus = 0xC0350050 + STATUS_HV_INVALID_VTL_STATE NTStatus = 0xC0350051 + STATUS_HV_NX_NOT_DETECTED NTStatus = 0xC0350055 + STATUS_HV_INVALID_DEVICE_ID NTStatus = 0xC0350057 + STATUS_HV_INVALID_DEVICE_STATE NTStatus = 0xC0350058 + STATUS_HV_PENDING_PAGE_REQUESTS NTStatus = 0x00350059 + STATUS_HV_PAGE_REQUEST_INVALID NTStatus = 0xC0350060 + STATUS_HV_INVALID_CPU_GROUP_ID NTStatus = 0xC035006F + STATUS_HV_INVALID_CPU_GROUP_STATE NTStatus = 0xC0350070 + STATUS_HV_OPERATION_FAILED NTStatus = 0xC0350071 + STATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE NTStatus = 0xC0350072 + STATUS_HV_INSUFFICIENT_ROOT_MEMORY NTStatus = 0xC0350073 + STATUS_HV_NOT_PRESENT NTStatus = 0xC0351000 + STATUS_VID_DUPLICATE_HANDLER NTStatus = 0xC0370001 + STATUS_VID_TOO_MANY_HANDLERS NTStatus = 0xC0370002 + STATUS_VID_QUEUE_FULL NTStatus = 0xC0370003 + STATUS_VID_HANDLER_NOT_PRESENT NTStatus = 0xC0370004 + STATUS_VID_INVALID_OBJECT_NAME NTStatus = 0xC0370005 + STATUS_VID_PARTITION_NAME_TOO_LONG NTStatus = 0xC0370006 + STATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG NTStatus = 0xC0370007 + STATUS_VID_PARTITION_ALREADY_EXISTS NTStatus = 0xC0370008 + STATUS_VID_PARTITION_DOES_NOT_EXIST NTStatus = 0xC0370009 + STATUS_VID_PARTITION_NAME_NOT_FOUND NTStatus = 0xC037000A + STATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS NTStatus = 0xC037000B + STATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT NTStatus = 0xC037000C + STATUS_VID_MB_STILL_REFERENCED NTStatus = 0xC037000D + STATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED NTStatus = 0xC037000E + STATUS_VID_INVALID_NUMA_SETTINGS NTStatus = 0xC037000F + STATUS_VID_INVALID_NUMA_NODE_INDEX NTStatus = 0xC0370010 + STATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED NTStatus = 0xC0370011 + STATUS_VID_INVALID_MEMORY_BLOCK_HANDLE NTStatus = 0xC0370012 + STATUS_VID_PAGE_RANGE_OVERFLOW NTStatus = 0xC0370013 + STATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE NTStatus = 0xC0370014 + STATUS_VID_INVALID_GPA_RANGE_HANDLE NTStatus = 0xC0370015 + STATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE NTStatus = 0xC0370016 + STATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED NTStatus = 0xC0370017 + STATUS_VID_INVALID_PPM_HANDLE NTStatus = 0xC0370018 + STATUS_VID_MBPS_ARE_LOCKED NTStatus = 0xC0370019 + STATUS_VID_MESSAGE_QUEUE_CLOSED NTStatus = 0xC037001A + STATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED NTStatus = 0xC037001B + STATUS_VID_STOP_PENDING NTStatus = 0xC037001C + STATUS_VID_INVALID_PROCESSOR_STATE NTStatus = 0xC037001D + STATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT NTStatus = 0xC037001E + STATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED NTStatus = 0xC037001F + STATUS_VID_MB_PROPERTY_ALREADY_SET_RESET NTStatus = 0xC0370020 + STATUS_VID_MMIO_RANGE_DESTROYED NTStatus = 0xC0370021 + STATUS_VID_INVALID_CHILD_GPA_PAGE_SET NTStatus = 0xC0370022 + STATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED NTStatus = 0xC0370023 + STATUS_VID_RESERVE_PAGE_SET_TOO_SMALL NTStatus = 0xC0370024 + STATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE NTStatus = 0xC0370025 + STATUS_VID_MBP_COUNT_EXCEEDED_LIMIT NTStatus = 0xC0370026 + STATUS_VID_SAVED_STATE_CORRUPT NTStatus = 0xC0370027 + STATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM NTStatus = 0xC0370028 + STATUS_VID_SAVED_STATE_INCOMPATIBLE NTStatus = 0xC0370029 + STATUS_VID_VTL_ACCESS_DENIED NTStatus = 0xC037002A + STATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED NTStatus = 0x80370001 + STATUS_IPSEC_BAD_SPI NTStatus = 0xC0360001 + STATUS_IPSEC_SA_LIFETIME_EXPIRED NTStatus = 0xC0360002 + STATUS_IPSEC_WRONG_SA NTStatus = 0xC0360003 + STATUS_IPSEC_REPLAY_CHECK_FAILED NTStatus = 0xC0360004 + STATUS_IPSEC_INVALID_PACKET NTStatus = 0xC0360005 + STATUS_IPSEC_INTEGRITY_CHECK_FAILED NTStatus = 0xC0360006 + STATUS_IPSEC_CLEAR_TEXT_DROP NTStatus = 0xC0360007 + STATUS_IPSEC_AUTH_FIREWALL_DROP NTStatus = 0xC0360008 + STATUS_IPSEC_THROTTLE_DROP NTStatus = 0xC0360009 + STATUS_IPSEC_DOSP_BLOCK NTStatus = 0xC0368000 + STATUS_IPSEC_DOSP_RECEIVED_MULTICAST NTStatus = 0xC0368001 + STATUS_IPSEC_DOSP_INVALID_PACKET NTStatus = 0xC0368002 + STATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED NTStatus = 0xC0368003 + STATUS_IPSEC_DOSP_MAX_ENTRIES NTStatus = 0xC0368004 + STATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED NTStatus = 0xC0368005 + STATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES NTStatus = 0xC0368006 + STATUS_VOLMGR_INCOMPLETE_REGENERATION NTStatus = 0x80380001 + STATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION NTStatus = 0x80380002 + STATUS_VOLMGR_DATABASE_FULL NTStatus = 0xC0380001 + STATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED NTStatus = 0xC0380002 + STATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC NTStatus = 0xC0380003 + STATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED NTStatus = 0xC0380004 + STATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME NTStatus = 0xC0380005 + STATUS_VOLMGR_DISK_DUPLICATE NTStatus = 0xC0380006 + STATUS_VOLMGR_DISK_DYNAMIC NTStatus = 0xC0380007 + STATUS_VOLMGR_DISK_ID_INVALID NTStatus = 0xC0380008 + STATUS_VOLMGR_DISK_INVALID NTStatus = 0xC0380009 + STATUS_VOLMGR_DISK_LAST_VOTER NTStatus = 0xC038000A + STATUS_VOLMGR_DISK_LAYOUT_INVALID NTStatus = 0xC038000B + STATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS NTStatus = 0xC038000C + STATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED NTStatus = 0xC038000D + STATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL NTStatus = 0xC038000E + STATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS NTStatus = 0xC038000F + STATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS NTStatus = 0xC0380010 + STATUS_VOLMGR_DISK_MISSING NTStatus = 0xC0380011 + STATUS_VOLMGR_DISK_NOT_EMPTY NTStatus = 0xC0380012 + STATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE NTStatus = 0xC0380013 + STATUS_VOLMGR_DISK_REVECTORING_FAILED NTStatus = 0xC0380014 + STATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID NTStatus = 0xC0380015 + STATUS_VOLMGR_DISK_SET_NOT_CONTAINED NTStatus = 0xC0380016 + STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS NTStatus = 0xC0380017 + STATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES NTStatus = 0xC0380018 + STATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED NTStatus = 0xC0380019 + STATUS_VOLMGR_EXTENT_ALREADY_USED NTStatus = 0xC038001A + STATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS NTStatus = 0xC038001B + STATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION NTStatus = 0xC038001C + STATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED NTStatus = 0xC038001D + STATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION NTStatus = 0xC038001E + STATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH NTStatus = 0xC038001F + STATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED NTStatus = 0xC0380020 + STATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID NTStatus = 0xC0380021 + STATUS_VOLMGR_MAXIMUM_REGISTERED_USERS NTStatus = 0xC0380022 + STATUS_VOLMGR_MEMBER_IN_SYNC NTStatus = 0xC0380023 + STATUS_VOLMGR_MEMBER_INDEX_DUPLICATE NTStatus = 0xC0380024 + STATUS_VOLMGR_MEMBER_INDEX_INVALID NTStatus = 0xC0380025 + STATUS_VOLMGR_MEMBER_MISSING NTStatus = 0xC0380026 + STATUS_VOLMGR_MEMBER_NOT_DETACHED NTStatus = 0xC0380027 + STATUS_VOLMGR_MEMBER_REGENERATING NTStatus = 0xC0380028 + STATUS_VOLMGR_ALL_DISKS_FAILED NTStatus = 0xC0380029 + STATUS_VOLMGR_NO_REGISTERED_USERS NTStatus = 0xC038002A + STATUS_VOLMGR_NO_SUCH_USER NTStatus = 0xC038002B + STATUS_VOLMGR_NOTIFICATION_RESET NTStatus = 0xC038002C + STATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID NTStatus = 0xC038002D + STATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID NTStatus = 0xC038002E + STATUS_VOLMGR_PACK_DUPLICATE NTStatus = 0xC038002F + STATUS_VOLMGR_PACK_ID_INVALID NTStatus = 0xC0380030 + STATUS_VOLMGR_PACK_INVALID NTStatus = 0xC0380031 + STATUS_VOLMGR_PACK_NAME_INVALID NTStatus = 0xC0380032 + STATUS_VOLMGR_PACK_OFFLINE NTStatus = 0xC0380033 + STATUS_VOLMGR_PACK_HAS_QUORUM NTStatus = 0xC0380034 + STATUS_VOLMGR_PACK_WITHOUT_QUORUM NTStatus = 0xC0380035 + STATUS_VOLMGR_PARTITION_STYLE_INVALID NTStatus = 0xC0380036 + STATUS_VOLMGR_PARTITION_UPDATE_FAILED NTStatus = 0xC0380037 + STATUS_VOLMGR_PLEX_IN_SYNC NTStatus = 0xC0380038 + STATUS_VOLMGR_PLEX_INDEX_DUPLICATE NTStatus = 0xC0380039 + STATUS_VOLMGR_PLEX_INDEX_INVALID NTStatus = 0xC038003A + STATUS_VOLMGR_PLEX_LAST_ACTIVE NTStatus = 0xC038003B + STATUS_VOLMGR_PLEX_MISSING NTStatus = 0xC038003C + STATUS_VOLMGR_PLEX_REGENERATING NTStatus = 0xC038003D + STATUS_VOLMGR_PLEX_TYPE_INVALID NTStatus = 0xC038003E + STATUS_VOLMGR_PLEX_NOT_RAID5 NTStatus = 0xC038003F + STATUS_VOLMGR_PLEX_NOT_SIMPLE NTStatus = 0xC0380040 + STATUS_VOLMGR_STRUCTURE_SIZE_INVALID NTStatus = 0xC0380041 + STATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS NTStatus = 0xC0380042 + STATUS_VOLMGR_TRANSACTION_IN_PROGRESS NTStatus = 0xC0380043 + STATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE NTStatus = 0xC0380044 + STATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK NTStatus = 0xC0380045 + STATUS_VOLMGR_VOLUME_ID_INVALID NTStatus = 0xC0380046 + STATUS_VOLMGR_VOLUME_LENGTH_INVALID NTStatus = 0xC0380047 + STATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE NTStatus = 0xC0380048 + STATUS_VOLMGR_VOLUME_NOT_MIRRORED NTStatus = 0xC0380049 + STATUS_VOLMGR_VOLUME_NOT_RETAINED NTStatus = 0xC038004A + STATUS_VOLMGR_VOLUME_OFFLINE NTStatus = 0xC038004B + STATUS_VOLMGR_VOLUME_RETAINED NTStatus = 0xC038004C + STATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID NTStatus = 0xC038004D + STATUS_VOLMGR_DIFFERENT_SECTOR_SIZE NTStatus = 0xC038004E + STATUS_VOLMGR_BAD_BOOT_DISK NTStatus = 0xC038004F + STATUS_VOLMGR_PACK_CONFIG_OFFLINE NTStatus = 0xC0380050 + STATUS_VOLMGR_PACK_CONFIG_ONLINE NTStatus = 0xC0380051 + STATUS_VOLMGR_NOT_PRIMARY_PACK NTStatus = 0xC0380052 + STATUS_VOLMGR_PACK_LOG_UPDATE_FAILED NTStatus = 0xC0380053 + STATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID NTStatus = 0xC0380054 + STATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID NTStatus = 0xC0380055 + STATUS_VOLMGR_VOLUME_MIRRORED NTStatus = 0xC0380056 + STATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED NTStatus = 0xC0380057 + STATUS_VOLMGR_NO_VALID_LOG_COPIES NTStatus = 0xC0380058 + STATUS_VOLMGR_PRIMARY_PACK_PRESENT NTStatus = 0xC0380059 + STATUS_VOLMGR_NUMBER_OF_DISKS_INVALID NTStatus = 0xC038005A + STATUS_VOLMGR_MIRROR_NOT_SUPPORTED NTStatus = 0xC038005B + STATUS_VOLMGR_RAID5_NOT_SUPPORTED NTStatus = 0xC038005C + STATUS_BCD_NOT_ALL_ENTRIES_IMPORTED NTStatus = 0x80390001 + STATUS_BCD_TOO_MANY_ELEMENTS NTStatus = 0xC0390002 + STATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED NTStatus = 0x80390003 + STATUS_VHD_DRIVE_FOOTER_MISSING NTStatus = 0xC03A0001 + STATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH NTStatus = 0xC03A0002 + STATUS_VHD_DRIVE_FOOTER_CORRUPT NTStatus = 0xC03A0003 + STATUS_VHD_FORMAT_UNKNOWN NTStatus = 0xC03A0004 + STATUS_VHD_FORMAT_UNSUPPORTED_VERSION NTStatus = 0xC03A0005 + STATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH NTStatus = 0xC03A0006 + STATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION NTStatus = 0xC03A0007 + STATUS_VHD_SPARSE_HEADER_CORRUPT NTStatus = 0xC03A0008 + STATUS_VHD_BLOCK_ALLOCATION_FAILURE NTStatus = 0xC03A0009 + STATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT NTStatus = 0xC03A000A + STATUS_VHD_INVALID_BLOCK_SIZE NTStatus = 0xC03A000B + STATUS_VHD_BITMAP_MISMATCH NTStatus = 0xC03A000C + STATUS_VHD_PARENT_VHD_NOT_FOUND NTStatus = 0xC03A000D + STATUS_VHD_CHILD_PARENT_ID_MISMATCH NTStatus = 0xC03A000E + STATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH NTStatus = 0xC03A000F + STATUS_VHD_METADATA_READ_FAILURE NTStatus = 0xC03A0010 + STATUS_VHD_METADATA_WRITE_FAILURE NTStatus = 0xC03A0011 + STATUS_VHD_INVALID_SIZE NTStatus = 0xC03A0012 + STATUS_VHD_INVALID_FILE_SIZE NTStatus = 0xC03A0013 + STATUS_VIRTDISK_PROVIDER_NOT_FOUND NTStatus = 0xC03A0014 + STATUS_VIRTDISK_NOT_VIRTUAL_DISK NTStatus = 0xC03A0015 + STATUS_VHD_PARENT_VHD_ACCESS_DENIED NTStatus = 0xC03A0016 + STATUS_VHD_CHILD_PARENT_SIZE_MISMATCH NTStatus = 0xC03A0017 + STATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED NTStatus = 0xC03A0018 + STATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT NTStatus = 0xC03A0019 + STATUS_VIRTUAL_DISK_LIMITATION NTStatus = 0xC03A001A + STATUS_VHD_INVALID_TYPE NTStatus = 0xC03A001B + STATUS_VHD_INVALID_STATE NTStatus = 0xC03A001C + STATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE NTStatus = 0xC03A001D + STATUS_VIRTDISK_DISK_ALREADY_OWNED NTStatus = 0xC03A001E + STATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE NTStatus = 0xC03A001F + STATUS_CTLOG_TRACKING_NOT_INITIALIZED NTStatus = 0xC03A0020 + STATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE NTStatus = 0xC03A0021 + STATUS_CTLOG_VHD_CHANGED_OFFLINE NTStatus = 0xC03A0022 + STATUS_CTLOG_INVALID_TRACKING_STATE NTStatus = 0xC03A0023 + STATUS_CTLOG_INCONSISTENT_TRACKING_FILE NTStatus = 0xC03A0024 + STATUS_VHD_METADATA_FULL NTStatus = 0xC03A0028 + STATUS_VHD_INVALID_CHANGE_TRACKING_ID NTStatus = 0xC03A0029 + STATUS_VHD_CHANGE_TRACKING_DISABLED NTStatus = 0xC03A002A + STATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION NTStatus = 0xC03A0030 + STATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA NTStatus = 0xC03A0031 + STATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE NTStatus = 0xC03A0032 + STATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE NTStatus = 0xC03A0033 + STATUS_QUERY_STORAGE_ERROR NTStatus = 0x803A0001 + STATUS_GDI_HANDLE_LEAK NTStatus = 0x803F0001 + STATUS_RKF_KEY_NOT_FOUND NTStatus = 0xC0400001 + STATUS_RKF_DUPLICATE_KEY NTStatus = 0xC0400002 + STATUS_RKF_BLOB_FULL NTStatus = 0xC0400003 + STATUS_RKF_STORE_FULL NTStatus = 0xC0400004 + STATUS_RKF_FILE_BLOCKED NTStatus = 0xC0400005 + STATUS_RKF_ACTIVE_KEY NTStatus = 0xC0400006 + STATUS_RDBSS_RESTART_OPERATION NTStatus = 0xC0410001 + STATUS_RDBSS_CONTINUE_OPERATION NTStatus = 0xC0410002 + STATUS_RDBSS_POST_OPERATION NTStatus = 0xC0410003 + STATUS_RDBSS_RETRY_LOOKUP NTStatus = 0xC0410004 + STATUS_BTH_ATT_INVALID_HANDLE NTStatus = 0xC0420001 + STATUS_BTH_ATT_READ_NOT_PERMITTED NTStatus = 0xC0420002 + STATUS_BTH_ATT_WRITE_NOT_PERMITTED NTStatus = 0xC0420003 + STATUS_BTH_ATT_INVALID_PDU NTStatus = 0xC0420004 + STATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION NTStatus = 0xC0420005 + STATUS_BTH_ATT_REQUEST_NOT_SUPPORTED NTStatus = 0xC0420006 + STATUS_BTH_ATT_INVALID_OFFSET NTStatus = 0xC0420007 + STATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION NTStatus = 0xC0420008 + STATUS_BTH_ATT_PREPARE_QUEUE_FULL NTStatus = 0xC0420009 + STATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND NTStatus = 0xC042000A + STATUS_BTH_ATT_ATTRIBUTE_NOT_LONG NTStatus = 0xC042000B + STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE NTStatus = 0xC042000C + STATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH NTStatus = 0xC042000D + STATUS_BTH_ATT_UNLIKELY NTStatus = 0xC042000E + STATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION NTStatus = 0xC042000F + STATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE NTStatus = 0xC0420010 + STATUS_BTH_ATT_INSUFFICIENT_RESOURCES NTStatus = 0xC0420011 + STATUS_BTH_ATT_UNKNOWN_ERROR NTStatus = 0xC0421000 + STATUS_SECUREBOOT_ROLLBACK_DETECTED NTStatus = 0xC0430001 + STATUS_SECUREBOOT_POLICY_VIOLATION NTStatus = 0xC0430002 + STATUS_SECUREBOOT_INVALID_POLICY NTStatus = 0xC0430003 + STATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND NTStatus = 0xC0430004 + STATUS_SECUREBOOT_POLICY_NOT_SIGNED NTStatus = 0xC0430005 + STATUS_SECUREBOOT_NOT_ENABLED NTStatus = 0x80430006 + STATUS_SECUREBOOT_FILE_REPLACED NTStatus = 0xC0430007 + STATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED NTStatus = 0xC0430008 + STATUS_SECUREBOOT_POLICY_UNKNOWN NTStatus = 0xC0430009 + STATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION NTStatus = 0xC043000A + STATUS_SECUREBOOT_PLATFORM_ID_MISMATCH NTStatus = 0xC043000B + STATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED NTStatus = 0xC043000C + STATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH NTStatus = 0xC043000D + STATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING NTStatus = 0xC043000E + STATUS_SECUREBOOT_NOT_BASE_POLICY NTStatus = 0xC043000F + STATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY NTStatus = 0xC0430010 + STATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED NTStatus = 0xC0EB0001 + STATUS_PLATFORM_MANIFEST_INVALID NTStatus = 0xC0EB0002 + STATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED NTStatus = 0xC0EB0003 + STATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED NTStatus = 0xC0EB0004 + STATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND NTStatus = 0xC0EB0005 + STATUS_PLATFORM_MANIFEST_NOT_ACTIVE NTStatus = 0xC0EB0006 + STATUS_PLATFORM_MANIFEST_NOT_SIGNED NTStatus = 0xC0EB0007 + STATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED NTStatus = 0xC0E90001 + STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION NTStatus = 0xC0E90002 + STATUS_SYSTEM_INTEGRITY_INVALID_POLICY NTStatus = 0xC0E90003 + STATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED NTStatus = 0xC0E90004 + STATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES NTStatus = 0xC0E90005 + STATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED NTStatus = 0xC0E90006 + STATUS_NO_APPLICABLE_APP_LICENSES_FOUND NTStatus = 0xC0EA0001 + STATUS_CLIP_LICENSE_NOT_FOUND NTStatus = 0xC0EA0002 + STATUS_CLIP_DEVICE_LICENSE_MISSING NTStatus = 0xC0EA0003 + STATUS_CLIP_LICENSE_INVALID_SIGNATURE NTStatus = 0xC0EA0004 + STATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID NTStatus = 0xC0EA0005 + STATUS_CLIP_LICENSE_EXPIRED NTStatus = 0xC0EA0006 + STATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE NTStatus = 0xC0EA0007 + STATUS_CLIP_LICENSE_NOT_SIGNED NTStatus = 0xC0EA0008 + STATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE NTStatus = 0xC0EA0009 + STATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH NTStatus = 0xC0EA000A + STATUS_AUDIO_ENGINE_NODE_NOT_FOUND NTStatus = 0xC0440001 + STATUS_HDAUDIO_EMPTY_CONNECTION_LIST NTStatus = 0xC0440002 + STATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED NTStatus = 0xC0440003 + STATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED NTStatus = 0xC0440004 + STATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY NTStatus = 0xC0440005 + STATUS_SPACES_REPAIRED NTStatus = 0x00E70000 + STATUS_SPACES_PAUSE NTStatus = 0x00E70001 + STATUS_SPACES_COMPLETE NTStatus = 0x00E70002 + STATUS_SPACES_REDIRECT NTStatus = 0x00E70003 + STATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID NTStatus = 0xC0E70001 + STATUS_SPACES_RESILIENCY_TYPE_INVALID NTStatus = 0xC0E70003 + STATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID NTStatus = 0xC0E70004 + STATUS_SPACES_DRIVE_REDUNDANCY_INVALID NTStatus = 0xC0E70006 + STATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID NTStatus = 0xC0E70007 + STATUS_SPACES_INTERLEAVE_LENGTH_INVALID NTStatus = 0xC0E70009 + STATUS_SPACES_NUMBER_OF_COLUMNS_INVALID NTStatus = 0xC0E7000A + STATUS_SPACES_NOT_ENOUGH_DRIVES NTStatus = 0xC0E7000B + STATUS_SPACES_EXTENDED_ERROR NTStatus = 0xC0E7000C + STATUS_SPACES_PROVISIONING_TYPE_INVALID NTStatus = 0xC0E7000D + STATUS_SPACES_ALLOCATION_SIZE_INVALID NTStatus = 0xC0E7000E + STATUS_SPACES_ENCLOSURE_AWARE_INVALID NTStatus = 0xC0E7000F + STATUS_SPACES_WRITE_CACHE_SIZE_INVALID NTStatus = 0xC0E70010 + STATUS_SPACES_NUMBER_OF_GROUPS_INVALID NTStatus = 0xC0E70011 + STATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID NTStatus = 0xC0E70012 + STATUS_SPACES_UPDATE_COLUMN_STATE NTStatus = 0xC0E70013 + STATUS_SPACES_MAP_REQUIRED NTStatus = 0xC0E70014 + STATUS_SPACES_UNSUPPORTED_VERSION NTStatus = 0xC0E70015 + STATUS_SPACES_CORRUPT_METADATA NTStatus = 0xC0E70016 + STATUS_SPACES_DRT_FULL NTStatus = 0xC0E70017 + STATUS_SPACES_INCONSISTENCY NTStatus = 0xC0E70018 + STATUS_SPACES_LOG_NOT_READY NTStatus = 0xC0E70019 + STATUS_SPACES_NO_REDUNDANCY NTStatus = 0xC0E7001A + STATUS_SPACES_DRIVE_NOT_READY NTStatus = 0xC0E7001B + STATUS_SPACES_DRIVE_SPLIT NTStatus = 0xC0E7001C + STATUS_SPACES_DRIVE_LOST_DATA NTStatus = 0xC0E7001D + STATUS_SPACES_ENTRY_INCOMPLETE NTStatus = 0xC0E7001E + STATUS_SPACES_ENTRY_INVALID NTStatus = 0xC0E7001F + STATUS_SPACES_MARK_DIRTY NTStatus = 0xC0E70020 + STATUS_VOLSNAP_BOOTFILE_NOT_VALID NTStatus = 0xC0500003 + STATUS_VOLSNAP_ACTIVATION_TIMEOUT NTStatus = 0xC0500004 + STATUS_IO_PREEMPTED NTStatus = 0xC0510001 + STATUS_SVHDX_ERROR_STORED NTStatus = 0xC05C0000 + STATUS_SVHDX_ERROR_NOT_AVAILABLE NTStatus = 0xC05CFF00 + STATUS_SVHDX_UNIT_ATTENTION_AVAILABLE NTStatus = 0xC05CFF01 + STATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED NTStatus = 0xC05CFF02 + STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED NTStatus = 0xC05CFF03 + STATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED NTStatus = 0xC05CFF04 + STATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED NTStatus = 0xC05CFF05 + STATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED NTStatus = 0xC05CFF06 + STATUS_SVHDX_RESERVATION_CONFLICT NTStatus = 0xC05CFF07 + STATUS_SVHDX_WRONG_FILE_TYPE NTStatus = 0xC05CFF08 + STATUS_SVHDX_VERSION_MISMATCH NTStatus = 0xC05CFF09 + STATUS_VHD_SHARED NTStatus = 0xC05CFF0A + STATUS_SVHDX_NO_INITIATOR NTStatus = 0xC05CFF0B + STATUS_VHDSET_BACKING_STORAGE_NOT_FOUND NTStatus = 0xC05CFF0C + STATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP NTStatus = 0xC05D0000 + STATUS_SMB_BAD_CLUSTER_DIALECT NTStatus = 0xC05D0001 + STATUS_SMB_GUEST_LOGON_BLOCKED NTStatus = 0xC05D0002 + STATUS_SECCORE_INVALID_COMMAND NTStatus = 0xC0E80000 + STATUS_VSM_NOT_INITIALIZED NTStatus = 0xC0450000 + STATUS_VSM_DMA_PROTECTION_NOT_IN_USE NTStatus = 0xC0450001 + STATUS_APPEXEC_CONDITION_NOT_SATISFIED NTStatus = 0xC0EC0000 + STATUS_APPEXEC_HANDLE_INVALIDATED NTStatus = 0xC0EC0001 + STATUS_APPEXEC_INVALID_HOST_GENERATION NTStatus = 0xC0EC0002 + STATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION NTStatus = 0xC0EC0003 + STATUS_APPEXEC_INVALID_HOST_STATE NTStatus = 0xC0EC0004 + STATUS_APPEXEC_NO_DONOR NTStatus = 0xC0EC0005 + STATUS_APPEXEC_HOST_ID_MISMATCH NTStatus = 0xC0EC0006 + STATUS_APPEXEC_UNKNOWN_USER NTStatus = 0xC0EC0007 +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go new file mode 100644 index 0000000..6048ac6 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go @@ -0,0 +1,149 @@ +// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT. + +package windows + +type KNOWNFOLDERID GUID + +var ( + FOLDERID_NetworkFolder = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}} + FOLDERID_ComputerFolder = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}} + FOLDERID_InternetFolder = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}} + FOLDERID_ControlPanelFolder = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}} + FOLDERID_PrintersFolder = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}} + FOLDERID_SyncManagerFolder = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}} + FOLDERID_SyncSetupFolder = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}} + FOLDERID_ConflictFolder = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}} + FOLDERID_SyncResultsFolder = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}} + FOLDERID_RecycleBinFolder = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}} + FOLDERID_ConnectionsFolder = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}} + FOLDERID_Fonts = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}} + FOLDERID_Desktop = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}} + FOLDERID_Startup = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}} + FOLDERID_Programs = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}} + FOLDERID_StartMenu = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}} + FOLDERID_Recent = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}} + FOLDERID_SendTo = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}} + FOLDERID_Documents = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}} + FOLDERID_Favorites = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}} + FOLDERID_NetHood = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}} + FOLDERID_PrintHood = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}} + FOLDERID_Templates = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}} + FOLDERID_CommonStartup = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}} + FOLDERID_CommonPrograms = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}} + FOLDERID_CommonStartMenu = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}} + FOLDERID_PublicDesktop = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}} + FOLDERID_ProgramData = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}} + FOLDERID_CommonTemplates = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}} + FOLDERID_PublicDocuments = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}} + FOLDERID_RoamingAppData = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}} + FOLDERID_LocalAppData = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}} + FOLDERID_LocalAppDataLow = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}} + FOLDERID_InternetCache = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}} + FOLDERID_Cookies = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}} + FOLDERID_History = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}} + FOLDERID_System = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}} + FOLDERID_SystemX86 = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}} + FOLDERID_Windows = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}} + FOLDERID_Profile = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}} + FOLDERID_Pictures = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}} + FOLDERID_ProgramFilesX86 = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}} + FOLDERID_ProgramFilesCommonX86 = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}} + FOLDERID_ProgramFilesX64 = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}} + FOLDERID_ProgramFilesCommonX64 = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}} + FOLDERID_ProgramFiles = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}} + FOLDERID_ProgramFilesCommon = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}} + FOLDERID_UserProgramFiles = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}} + FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}} + FOLDERID_AdminTools = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}} + FOLDERID_CommonAdminTools = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}} + FOLDERID_Music = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}} + FOLDERID_Videos = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}} + FOLDERID_Ringtones = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}} + FOLDERID_PublicPictures = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}} + FOLDERID_PublicMusic = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}} + FOLDERID_PublicVideos = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}} + FOLDERID_PublicRingtones = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}} + FOLDERID_ResourceDir = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}} + FOLDERID_LocalizedResourcesDir = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}} + FOLDERID_CommonOEMLinks = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}} + FOLDERID_CDBurning = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}} + FOLDERID_UserProfiles = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}} + FOLDERID_Playlists = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}} + FOLDERID_SamplePlaylists = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}} + FOLDERID_SampleMusic = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}} + FOLDERID_SamplePictures = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}} + FOLDERID_SampleVideos = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}} + FOLDERID_PhotoAlbums = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}} + FOLDERID_Public = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}} + FOLDERID_ChangeRemovePrograms = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}} + FOLDERID_AppUpdates = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}} + FOLDERID_AddNewPrograms = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}} + FOLDERID_Downloads = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}} + FOLDERID_PublicDownloads = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}} + FOLDERID_SavedSearches = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}} + FOLDERID_QuickLaunch = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}} + FOLDERID_Contacts = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}} + FOLDERID_SidebarParts = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}} + FOLDERID_SidebarDefaultParts = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}} + FOLDERID_PublicGameTasks = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}} + FOLDERID_GameTasks = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}} + FOLDERID_SavedGames = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}} + FOLDERID_Games = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}} + FOLDERID_SEARCH_MAPI = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}} + FOLDERID_SEARCH_CSC = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}} + FOLDERID_Links = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}} + FOLDERID_UsersFiles = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}} + FOLDERID_UsersLibraries = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}} + FOLDERID_SearchHome = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}} + FOLDERID_OriginalImages = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}} + FOLDERID_DocumentsLibrary = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}} + FOLDERID_MusicLibrary = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}} + FOLDERID_PicturesLibrary = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}} + FOLDERID_VideosLibrary = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}} + FOLDERID_RecordedTVLibrary = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}} + FOLDERID_HomeGroup = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}} + FOLDERID_HomeGroupCurrentUser = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}} + FOLDERID_DeviceMetadataStore = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}} + FOLDERID_Libraries = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}} + FOLDERID_PublicLibraries = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}} + FOLDERID_UserPinned = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}} + FOLDERID_ImplicitAppShortcuts = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}} + FOLDERID_AccountPictures = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}} + FOLDERID_PublicUserTiles = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}} + FOLDERID_AppsFolder = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}} + FOLDERID_StartMenuAllPrograms = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}} + FOLDERID_CommonStartMenuPlaces = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}} + FOLDERID_ApplicationShortcuts = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}} + FOLDERID_RoamingTiles = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}} + FOLDERID_RoamedTileImages = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}} + FOLDERID_Screenshots = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}} + FOLDERID_CameraRoll = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}} + FOLDERID_SkyDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_OneDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_SkyDriveDocuments = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}} + FOLDERID_SkyDrivePictures = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}} + FOLDERID_SkyDriveMusic = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}} + FOLDERID_SkyDriveCameraRoll = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}} + FOLDERID_SearchHistory = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}} + FOLDERID_SearchTemplates = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}} + FOLDERID_CameraRollLibrary = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}} + FOLDERID_SavedPictures = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}} + FOLDERID_SavedPicturesLibrary = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}} + FOLDERID_RetailDemo = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}} + FOLDERID_Device = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}} + FOLDERID_DevelopmentFiles = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}} + FOLDERID_Objects3D = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}} + FOLDERID_AppCaptures = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}} + FOLDERID_LocalDocuments = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}} + FOLDERID_LocalPictures = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}} + FOLDERID_LocalVideos = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}} + FOLDERID_LocalMusic = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}} + FOLDERID_LocalDownloads = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}} + FOLDERID_RecordedCalls = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}} + FOLDERID_AllAppMods = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}} + FOLDERID_CurrentAppMods = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}} + FOLDERID_AppDataDesktop = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}} + FOLDERID_AppDataDocuments = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}} + FOLDERID_AppDataFavorites = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}} + FOLDERID_AppDataProgramData = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}} +) diff --git a/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zsyscall_windows.go new file mode 100644 index 0000000..fe7a4ea --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -0,0 +1,4757 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package windows + +import ( + "syscall" + "unsafe" +) + +var _ unsafe.Pointer + +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) + errERROR_EINVAL error = syscall.EINVAL +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return errERROR_EINVAL + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + +var ( + modCfgMgr32 = NewLazySystemDLL("CfgMgr32.dll") + modadvapi32 = NewLazySystemDLL("advapi32.dll") + modcrypt32 = NewLazySystemDLL("crypt32.dll") + moddnsapi = NewLazySystemDLL("dnsapi.dll") + moddwmapi = NewLazySystemDLL("dwmapi.dll") + modiphlpapi = NewLazySystemDLL("iphlpapi.dll") + modkernel32 = NewLazySystemDLL("kernel32.dll") + modmswsock = NewLazySystemDLL("mswsock.dll") + modnetapi32 = NewLazySystemDLL("netapi32.dll") + modntdll = NewLazySystemDLL("ntdll.dll") + modole32 = NewLazySystemDLL("ole32.dll") + modpsapi = NewLazySystemDLL("psapi.dll") + modsechost = NewLazySystemDLL("sechost.dll") + modsecur32 = NewLazySystemDLL("secur32.dll") + modsetupapi = NewLazySystemDLL("setupapi.dll") + modshell32 = NewLazySystemDLL("shell32.dll") + moduser32 = NewLazySystemDLL("user32.dll") + moduserenv = NewLazySystemDLL("userenv.dll") + modversion = NewLazySystemDLL("version.dll") + modwinmm = NewLazySystemDLL("winmm.dll") + modwintrust = NewLazySystemDLL("wintrust.dll") + modws2_32 = NewLazySystemDLL("ws2_32.dll") + modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") + + procCM_Get_DevNode_Status = modCfgMgr32.NewProc("CM_Get_DevNode_Status") + procCM_Get_Device_Interface_ListW = modCfgMgr32.NewProc("CM_Get_Device_Interface_ListW") + procCM_Get_Device_Interface_List_SizeW = modCfgMgr32.NewProc("CM_Get_Device_Interface_List_SizeW") + procCM_MapCrToWin32Err = modCfgMgr32.NewProc("CM_MapCrToWin32Err") + procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups") + procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges") + procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") + procBuildSecurityDescriptorW = modadvapi32.NewProc("BuildSecurityDescriptorW") + procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") + procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") + procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") + procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") + procControlService = modadvapi32.NewProc("ControlService") + procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procCopySid = modadvapi32.NewProc("CopySid") + procCreateProcessAsUserW = modadvapi32.NewProc("CreateProcessAsUserW") + procCreateServiceW = modadvapi32.NewProc("CreateServiceW") + procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procDeleteService = modadvapi32.NewProc("DeleteService") + procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") + procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx") + procEnumDependentServicesW = modadvapi32.NewProc("EnumDependentServicesW") + procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") + procEqualSid = modadvapi32.NewProc("EqualSid") + procFreeSid = modadvapi32.NewProc("FreeSid") + procGetAce = modadvapi32.NewProc("GetAce") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procGetNamedSecurityInfoW = modadvapi32.NewProc("GetNamedSecurityInfoW") + procGetSecurityDescriptorControl = modadvapi32.NewProc("GetSecurityDescriptorControl") + procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl") + procGetSecurityDescriptorGroup = modadvapi32.NewProc("GetSecurityDescriptorGroup") + procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength") + procGetSecurityDescriptorOwner = modadvapi32.NewProc("GetSecurityDescriptorOwner") + procGetSecurityDescriptorRMControl = modadvapi32.NewProc("GetSecurityDescriptorRMControl") + procGetSecurityDescriptorSacl = modadvapi32.NewProc("GetSecurityDescriptorSacl") + procGetSecurityInfo = modadvapi32.NewProc("GetSecurityInfo") + procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority") + procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority") + procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") + procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor") + procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW") + procIsTokenRestricted = modadvapi32.NewProc("IsTokenRestricted") + procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor") + procIsValidSid = modadvapi32.NewProc("IsValidSid") + procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW") + procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD") + procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD") + procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") + procOpenServiceW = modadvapi32.NewProc("OpenServiceW") + procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken") + procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") + procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") + procQueryServiceDynamicInformation = modadvapi32.NewProc("QueryServiceDynamicInformation") + procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW") + procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") + procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegNotifyChangeKeyValue = modadvapi32.NewProc("RegNotifyChangeKeyValue") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") + procRegisterServiceCtrlHandlerExW = modadvapi32.NewProc("RegisterServiceCtrlHandlerExW") + procReportEventW = modadvapi32.NewProc("ReportEventW") + procRevertToSelf = modadvapi32.NewProc("RevertToSelf") + procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW") + procSetKernelObjectSecurity = modadvapi32.NewProc("SetKernelObjectSecurity") + procSetNamedSecurityInfoW = modadvapi32.NewProc("SetNamedSecurityInfoW") + procSetSecurityDescriptorControl = modadvapi32.NewProc("SetSecurityDescriptorControl") + procSetSecurityDescriptorDacl = modadvapi32.NewProc("SetSecurityDescriptorDacl") + procSetSecurityDescriptorGroup = modadvapi32.NewProc("SetSecurityDescriptorGroup") + procSetSecurityDescriptorOwner = modadvapi32.NewProc("SetSecurityDescriptorOwner") + procSetSecurityDescriptorRMControl = modadvapi32.NewProc("SetSecurityDescriptorRMControl") + procSetSecurityDescriptorSacl = modadvapi32.NewProc("SetSecurityDescriptorSacl") + procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo") + procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") + procSetThreadToken = modadvapi32.NewProc("SetThreadToken") + procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation") + procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") + procStartServiceW = modadvapi32.NewProc("StartServiceW") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertDeleteCertificateFromStore = modcrypt32.NewProc("CertDeleteCertificateFromStore") + procCertDuplicateCertificateContext = modcrypt32.NewProc("CertDuplicateCertificateContext") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertFindCertificateInStore = modcrypt32.NewProc("CertFindCertificateInStore") + procCertFindChainInStore = modcrypt32.NewProc("CertFindChainInStore") + procCertFindExtension = modcrypt32.NewProc("CertFindExtension") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertGetNameStringW = modcrypt32.NewProc("CertGetNameStringW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procCryptAcquireCertificatePrivateKey = modcrypt32.NewProc("CryptAcquireCertificatePrivateKey") + procCryptDecodeObject = modcrypt32.NewProc("CryptDecodeObject") + procCryptProtectData = modcrypt32.NewProc("CryptProtectData") + procCryptQueryObject = modcrypt32.NewProc("CryptQueryObject") + procCryptUnprotectData = modcrypt32.NewProc("CryptUnprotectData") + procPFXImportCertStore = modcrypt32.NewProc("PFXImportCertStore") + procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") + procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") + procCancelMibChangeNotify2 = modiphlpapi.NewProc("CancelMibChangeNotify2") + procFreeMibTable = modiphlpapi.NewProc("FreeMibTable") + procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetIfEntry2Ex = modiphlpapi.NewProc("GetIfEntry2Ex") + procGetIpForwardEntry2 = modiphlpapi.NewProc("GetIpForwardEntry2") + procGetIpForwardTable2 = modiphlpapi.NewProc("GetIpForwardTable2") + procGetUnicastIpAddressEntry = modiphlpapi.NewProc("GetUnicastIpAddressEntry") + procNotifyIpInterfaceChange = modiphlpapi.NewProc("NotifyIpInterfaceChange") + procNotifyRouteChange2 = modiphlpapi.NewProc("NotifyRouteChange2") + procNotifyUnicastIpAddressChange = modiphlpapi.NewProc("NotifyUnicastIpAddressChange") + procAddDllDirectory = modkernel32.NewProc("AddDllDirectory") + procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") + procCancelIo = modkernel32.NewProc("CancelIo") + procCancelIoEx = modkernel32.NewProc("CancelIoEx") + procClearCommBreak = modkernel32.NewProc("ClearCommBreak") + procClearCommError = modkernel32.NewProc("ClearCommError") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procClosePseudoConsole = modkernel32.NewProc("ClosePseudoConsole") + procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procCreateEventExW = modkernel32.NewProc("CreateEventExW") + procCreateEventW = modkernel32.NewProc("CreateEventW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW") + procCreateMutexExW = modkernel32.NewProc("CreateMutexExW") + procCreateMutexW = modkernel32.NewProc("CreateMutexW") + procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procCreatePseudoConsole = modkernel32.NewProc("CreatePseudoConsole") + procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") + procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") + procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procDeleteProcThreadAttributeList = modkernel32.NewProc("DeleteProcThreadAttributeList") + procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") + procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") + procDisconnectNamedPipe = modkernel32.NewProc("DisconnectNamedPipe") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procEscapeCommFunction = modkernel32.NewProc("EscapeCommFunction") + procExitProcess = modkernel32.NewProc("ExitProcess") + procExpandEnvironmentStringsW = modkernel32.NewProc("ExpandEnvironmentStringsW") + procFindClose = modkernel32.NewProc("FindClose") + procFindCloseChangeNotification = modkernel32.NewProc("FindCloseChangeNotification") + procFindFirstChangeNotificationW = modkernel32.NewProc("FindFirstChangeNotificationW") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") + procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindNextChangeNotification = modkernel32.NewProc("FindNextChangeNotification") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") + procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") + procFindResourceW = modkernel32.NewProc("FindResourceW") + procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") + procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") + procFlushConsoleInputBuffer = modkernel32.NewProc("FlushConsoleInputBuffer") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent") + procGetACP = modkernel32.NewProc("GetACP") + procGetActiveProcessorCount = modkernel32.NewProc("GetActiveProcessorCount") + procGetCommModemStatus = modkernel32.NewProc("GetCommModemStatus") + procGetCommState = modkernel32.NewProc("GetCommState") + procGetCommTimeouts = modkernel32.NewProc("GetCommTimeouts") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetConsoleCP = modkernel32.NewProc("GetConsoleCP") + procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procGetConsoleOutputCP = modkernel32.NewProc("GetConsoleOutputCP") + procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") + procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") + procGetDiskFreeSpaceExW = modkernel32.NewProc("GetDiskFreeSpaceExW") + procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") + procGetFileTime = modkernel32.NewProc("GetFileTime") + procGetFileType = modkernel32.NewProc("GetFileType") + procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLargePageMinimum = modkernel32.NewProc("GetLargePageMinimum") + procGetLastError = modkernel32.NewProc("GetLastError") + procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") + procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") + procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") + procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") + procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") + procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") + procGetNumberOfConsoleInputEvents = modkernel32.NewProc("GetNumberOfConsoleInputEvents") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetProcessId = modkernel32.NewProc("GetProcessId") + procGetProcessPreferredUILanguages = modkernel32.NewProc("GetProcessPreferredUILanguages") + procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procGetProcessWorkingSetSizeEx = modkernel32.NewProc("GetProcessWorkingSetSizeEx") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") + procGetSystemPreferredUILanguages = modkernel32.NewProc("GetSystemPreferredUILanguages") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") + procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procGetThreadPreferredUILanguages = modkernel32.NewProc("GetThreadPreferredUILanguages") + procGetTickCount64 = modkernel32.NewProc("GetTickCount64") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procGetUserPreferredUILanguages = modkernel32.NewProc("GetUserPreferredUILanguages") + procGetVersion = modkernel32.NewProc("GetVersion") + procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") + procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") + procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") + procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") + procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") + procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW") + procInitializeProcThreadAttributeList = modkernel32.NewProc("InitializeProcThreadAttributeList") + procIsProcessorFeaturePresent = modkernel32.NewProc("IsProcessorFeaturePresent") + procIsWow64Process = modkernel32.NewProc("IsWow64Process") + procIsWow64Process2 = modkernel32.NewProc("IsWow64Process2") + procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procLoadResource = modkernel32.NewProc("LoadResource") + procLocalAlloc = modkernel32.NewProc("LocalAlloc") + procLocalFree = modkernel32.NewProc("LocalFree") + procLockFileEx = modkernel32.NewProc("LockFileEx") + procLockResource = modkernel32.NewProc("LockResource") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procModule32FirstW = modkernel32.NewProc("Module32FirstW") + procModule32NextW = modkernel32.NewProc("Module32NextW") + procMoveFileExW = modkernel32.NewProc("MoveFileExW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") + procOpenEventW = modkernel32.NewProc("OpenEventW") + procOpenMutexW = modkernel32.NewProc("OpenMutexW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procOpenThread = modkernel32.NewProc("OpenThread") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procProcess32FirstW = modkernel32.NewProc("Process32FirstW") + procProcess32NextW = modkernel32.NewProc("Process32NextW") + procProcessIdToSessionId = modkernel32.NewProc("ProcessIdToSessionId") + procPulseEvent = modkernel32.NewProc("PulseEvent") + procPurgeComm = modkernel32.NewProc("PurgeComm") + procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") + procQueryFullProcessImageNameW = modkernel32.NewProc("QueryFullProcessImageNameW") + procQueryInformationJobObject = modkernel32.NewProc("QueryInformationJobObject") + procReadConsoleW = modkernel32.NewProc("ReadConsoleW") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procReadFile = modkernel32.NewProc("ReadFile") + procReadProcessMemory = modkernel32.NewProc("ReadProcessMemory") + procReleaseMutex = modkernel32.NewProc("ReleaseMutex") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procRemoveDllDirectory = modkernel32.NewProc("RemoveDllDirectory") + procResetEvent = modkernel32.NewProc("ResetEvent") + procResizePseudoConsole = modkernel32.NewProc("ResizePseudoConsole") + procResumeThread = modkernel32.NewProc("ResumeThread") + procSetCommBreak = modkernel32.NewProc("SetCommBreak") + procSetCommMask = modkernel32.NewProc("SetCommMask") + procSetCommState = modkernel32.NewProc("SetCommState") + procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") + procSetConsoleCP = modkernel32.NewProc("SetConsoleCP") + procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") + procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procSetConsoleOutputCP = modkernel32.NewProc("SetConsoleOutputCP") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories") + procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procSetErrorMode = modkernel32.NewProc("SetErrorMode") + procSetEvent = modkernel32.NewProc("SetEvent") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") + procSetFileInformationByHandle = modkernel32.NewProc("SetFileInformationByHandle") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procSetFileValidData = modkernel32.NewProc("SetFileValidData") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject") + procSetNamedPipeHandleState = modkernel32.NewProc("SetNamedPipeHandleState") + procSetPriorityClass = modkernel32.NewProc("SetPriorityClass") + procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost") + procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters") + procSetProcessWorkingSetSizeEx = modkernel32.NewProc("SetProcessWorkingSetSizeEx") + procSetStdHandle = modkernel32.NewProc("SetStdHandle") + procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") + procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procSetupComm = modkernel32.NewProc("SetupComm") + procSizeofResource = modkernel32.NewProc("SizeofResource") + procSleepEx = modkernel32.NewProc("SleepEx") + procTerminateJobObject = modkernel32.NewProc("TerminateJobObject") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procThread32First = modkernel32.NewProc("Thread32First") + procThread32Next = modkernel32.NewProc("Thread32Next") + procUnlockFileEx = modkernel32.NewProc("UnlockFileEx") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procUpdateProcThreadAttribute = modkernel32.NewProc("UpdateProcThreadAttribute") + procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") + procVirtualFree = modkernel32.NewProc("VirtualFree") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualProtect = modkernel32.NewProc("VirtualProtect") + procVirtualProtectEx = modkernel32.NewProc("VirtualProtectEx") + procVirtualQuery = modkernel32.NewProc("VirtualQuery") + procVirtualQueryEx = modkernel32.NewProc("VirtualQueryEx") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procWTSGetActiveConsoleSessionId = modkernel32.NewProc("WTSGetActiveConsoleSessionId") + procWaitCommEvent = modkernel32.NewProc("WaitCommEvent") + procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") + procWriteFile = modkernel32.NewProc("WriteFile") + procWriteProcessMemory = modkernel32.NewProc("WriteProcessMemory") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") + procNetUserEnum = modnetapi32.NewProc("NetUserEnum") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNtCreateFile = modntdll.NewProc("NtCreateFile") + procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile") + procNtQueryInformationProcess = modntdll.NewProc("NtQueryInformationProcess") + procNtQuerySystemInformation = modntdll.NewProc("NtQuerySystemInformation") + procNtSetInformationFile = modntdll.NewProc("NtSetInformationFile") + procNtSetInformationProcess = modntdll.NewProc("NtSetInformationProcess") + procNtSetSystemInformation = modntdll.NewProc("NtSetSystemInformation") + procRtlAddFunctionTable = modntdll.NewProc("RtlAddFunctionTable") + procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl") + procRtlDeleteFunctionTable = modntdll.NewProc("RtlDeleteFunctionTable") + procRtlDosPathNameToNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToNtPathName_U_WithStatus") + procRtlDosPathNameToRelativeNtPathName_U_WithStatus = modntdll.NewProc("RtlDosPathNameToRelativeNtPathName_U_WithStatus") + procRtlGetCurrentPeb = modntdll.NewProc("RtlGetCurrentPeb") + procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers") + procRtlGetVersion = modntdll.NewProc("RtlGetVersion") + procRtlInitString = modntdll.NewProc("RtlInitString") + procRtlInitUnicodeString = modntdll.NewProc("RtlInitUnicodeString") + procRtlNtStatusToDosErrorNoTeb = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb") + procCLSIDFromString = modole32.NewProc("CLSIDFromString") + procCoCreateGuid = modole32.NewProc("CoCreateGuid") + procCoGetObject = modole32.NewProc("CoGetObject") + procCoInitializeEx = modole32.NewProc("CoInitializeEx") + procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") + procCoUninitialize = modole32.NewProc("CoUninitialize") + procStringFromGUID2 = modole32.NewProc("StringFromGUID2") + procEnumProcessModules = modpsapi.NewProc("EnumProcessModules") + procEnumProcessModulesEx = modpsapi.NewProc("EnumProcessModulesEx") + procEnumProcesses = modpsapi.NewProc("EnumProcesses") + procGetModuleBaseNameW = modpsapi.NewProc("GetModuleBaseNameW") + procGetModuleFileNameExW = modpsapi.NewProc("GetModuleFileNameExW") + procGetModuleInformation = modpsapi.NewProc("GetModuleInformation") + procQueryWorkingSetEx = modpsapi.NewProc("QueryWorkingSetEx") + procSubscribeServiceChangeNotifications = modsechost.NewProc("SubscribeServiceChangeNotifications") + procUnsubscribeServiceChangeNotifications = modsechost.NewProc("UnsubscribeServiceChangeNotifications") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procSetupDiBuildDriverInfoList = modsetupapi.NewProc("SetupDiBuildDriverInfoList") + procSetupDiCallClassInstaller = modsetupapi.NewProc("SetupDiCallClassInstaller") + procSetupDiCancelDriverInfoSearch = modsetupapi.NewProc("SetupDiCancelDriverInfoSearch") + procSetupDiClassGuidsFromNameExW = modsetupapi.NewProc("SetupDiClassGuidsFromNameExW") + procSetupDiClassNameFromGuidExW = modsetupapi.NewProc("SetupDiClassNameFromGuidExW") + procSetupDiCreateDeviceInfoListExW = modsetupapi.NewProc("SetupDiCreateDeviceInfoListExW") + procSetupDiCreateDeviceInfoW = modsetupapi.NewProc("SetupDiCreateDeviceInfoW") + procSetupDiDestroyDeviceInfoList = modsetupapi.NewProc("SetupDiDestroyDeviceInfoList") + procSetupDiDestroyDriverInfoList = modsetupapi.NewProc("SetupDiDestroyDriverInfoList") + procSetupDiEnumDeviceInfo = modsetupapi.NewProc("SetupDiEnumDeviceInfo") + procSetupDiEnumDriverInfoW = modsetupapi.NewProc("SetupDiEnumDriverInfoW") + procSetupDiGetClassDevsExW = modsetupapi.NewProc("SetupDiGetClassDevsExW") + procSetupDiGetClassInstallParamsW = modsetupapi.NewProc("SetupDiGetClassInstallParamsW") + procSetupDiGetDeviceInfoListDetailW = modsetupapi.NewProc("SetupDiGetDeviceInfoListDetailW") + procSetupDiGetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiGetDeviceInstallParamsW") + procSetupDiGetDeviceInstanceIdW = modsetupapi.NewProc("SetupDiGetDeviceInstanceIdW") + procSetupDiGetDevicePropertyW = modsetupapi.NewProc("SetupDiGetDevicePropertyW") + procSetupDiGetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiGetDeviceRegistryPropertyW") + procSetupDiGetDriverInfoDetailW = modsetupapi.NewProc("SetupDiGetDriverInfoDetailW") + procSetupDiGetSelectedDevice = modsetupapi.NewProc("SetupDiGetSelectedDevice") + procSetupDiGetSelectedDriverW = modsetupapi.NewProc("SetupDiGetSelectedDriverW") + procSetupDiOpenDevRegKey = modsetupapi.NewProc("SetupDiOpenDevRegKey") + procSetupDiSetClassInstallParamsW = modsetupapi.NewProc("SetupDiSetClassInstallParamsW") + procSetupDiSetDeviceInstallParamsW = modsetupapi.NewProc("SetupDiSetDeviceInstallParamsW") + procSetupDiSetDeviceRegistryPropertyW = modsetupapi.NewProc("SetupDiSetDeviceRegistryPropertyW") + procSetupDiSetSelectedDevice = modsetupapi.NewProc("SetupDiSetSelectedDevice") + procSetupDiSetSelectedDriverW = modsetupapi.NewProc("SetupDiSetSelectedDriverW") + procSetupUninstallOEMInfW = modsetupapi.NewProc("SetupUninstallOEMInfW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") + procShellExecuteW = modshell32.NewProc("ShellExecuteW") + procEnumChildWindows = moduser32.NewProc("EnumChildWindows") + procEnumWindows = moduser32.NewProc("EnumWindows") + procExitWindowsEx = moduser32.NewProc("ExitWindowsEx") + procGetClassNameW = moduser32.NewProc("GetClassNameW") + procGetDesktopWindow = moduser32.NewProc("GetDesktopWindow") + procGetForegroundWindow = moduser32.NewProc("GetForegroundWindow") + procGetGUIThreadInfo = moduser32.NewProc("GetGUIThreadInfo") + procGetKeyboardLayout = moduser32.NewProc("GetKeyboardLayout") + procGetShellWindow = moduser32.NewProc("GetShellWindow") + procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") + procIsWindow = moduser32.NewProc("IsWindow") + procIsWindowUnicode = moduser32.NewProc("IsWindowUnicode") + procIsWindowVisible = moduser32.NewProc("IsWindowVisible") + procLoadKeyboardLayoutW = moduser32.NewProc("LoadKeyboardLayoutW") + procMessageBoxW = moduser32.NewProc("MessageBoxW") + procToUnicodeEx = moduser32.NewProc("ToUnicodeEx") + procUnloadKeyboardLayout = moduser32.NewProc("UnloadKeyboardLayout") + procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") + procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetFileVersionInfoSizeW = modversion.NewProc("GetFileVersionInfoSizeW") + procGetFileVersionInfoW = modversion.NewProc("GetFileVersionInfoW") + procVerQueryValueW = modversion.NewProc("VerQueryValueW") + proctimeBeginPeriod = modwinmm.NewProc("timeBeginPeriod") + proctimeEndPeriod = modwinmm.NewProc("timeEndPeriod") + procWinVerifyTrustEx = modwintrust.NewProc("WinVerifyTrustEx") + procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") + procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSADuplicateSocketW = modws2_32.NewProc("WSADuplicateSocketW") + procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") + procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procWSALookupServiceBeginW = modws2_32.NewProc("WSALookupServiceBeginW") + procWSALookupServiceEnd = modws2_32.NewProc("WSALookupServiceEnd") + procWSALookupServiceNextW = modws2_32.NewProc("WSALookupServiceNextW") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASend = modws2_32.NewProc("WSASend") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procWSASocketW = modws2_32.NewProc("WSASocketW") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procbind = modws2_32.NewProc("bind") + procclosesocket = modws2_32.NewProc("closesocket") + procconnect = modws2_32.NewProc("connect") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetpeername = modws2_32.NewProc("getpeername") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procgetsockname = modws2_32.NewProc("getsockname") + procgetsockopt = modws2_32.NewProc("getsockopt") + proclisten = modws2_32.NewProc("listen") + procntohs = modws2_32.NewProc("ntohs") + procrecvfrom = modws2_32.NewProc("recvfrom") + procsendto = modws2_32.NewProc("sendto") + procsetsockopt = modws2_32.NewProc("setsockopt") + procshutdown = modws2_32.NewProc("shutdown") + procsocket = modws2_32.NewProc("socket") + procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW") + procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory") + procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken") +) + +func cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) { + r0, _, _ := syscall.SyscallN(procCM_Get_DevNode_Status.Addr(), uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags)) + ret = CONFIGRET(r0) + return +} + +func cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) { + r0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_ListW.Addr(), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags)) + ret = CONFIGRET(r0) + return +} + +func cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) { + r0, _, _ := syscall.SyscallN(procCM_Get_Device_Interface_List_SizeW.Addr(), uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags)) + ret = CONFIGRET(r0) + return +} + +func cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) { + r0, _, _ := syscall.SyscallN(procCM_MapCrToWin32Err.Addr(), uintptr(configRet), uintptr(defaultWin32Error)) + ret = Errno(r0) + return +} + +func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) { + var _p0 uint32 + if resetToDefault { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procAdjustTokenGroups.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) { + var _p0 uint32 + if disableAllPrivileges { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procAdjustTokenPrivileges.Addr(), uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { + r1, _, e1 := syscall.SyscallN(procAllocateAndInitializeSid.Addr(), uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.SyscallN(procBuildSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procChangeServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procChangeServiceConfigW.Addr(), uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { + r1, _, e1 := syscall.SyscallN(procCheckTokenMembership.Addr(), uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CloseServiceHandle(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procCloseServiceHandle.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.SyscallN(procControlService.Addr(), uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procConvertSidToStringSidW.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(str) + if err != nil { + return + } + return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size) +} + +func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { + r1, _, e1 := syscall.SyscallN(procConvertStringSidToSidW.Addr(), uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { + r1, _, e1 := syscall.SyscallN(procCopySid.Addr(), uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procCreateProcessAsUserW.Addr(), uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCreateWellKnownSid.Addr(), uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptAcquireContextW.Addr(), uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptGenRandom.Addr(), uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptReleaseContext.Addr(), uintptr(provhandle), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeleteService(service Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procDeleteService.Addr(), uintptr(service)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeregisterEventSource(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procDeregisterEventSource.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) { + r1, _, e1 := syscall.SyscallN(procDuplicateTokenEx.Addr(), uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procEnumDependentServicesW.Addr(), uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procEnumServicesStatusExW.Addr(), uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { + r0, _, _ := syscall.SyscallN(procEqualSid.Addr(), uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2))) + isEqual = r0 != 0 + return +} + +func FreeSid(sid *SID) (err error) { + r1, _, e1 := syscall.SyscallN(procFreeSid.Addr(), uintptr(unsafe.Pointer(sid))) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) { + r1, _, e1 := syscall.SyscallN(procGetAce.Addr(), uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetLengthSid(sid *SID) (len uint32) { + r0, _, _ := syscall.SyscallN(procGetLengthSid.Addr(), uintptr(unsafe.Pointer(sid))) + len = uint32(r0) + return +} + +func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + var _p0 *uint16 + _p0, ret = syscall.UTF16PtrFromString(objectName) + if ret != nil { + return + } + return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd) +} + +func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.SyscallN(procGetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) { + var _p0 uint32 + if *daclPresent { + _p0 = 1 + } + var _p1 uint32 + if *daclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1))) + *daclPresent = _p0 != 0 + *daclDefaulted = _p1 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) { + var _p0 uint32 + if *groupDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0))) + *groupDefaulted = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) { + r0, _, _ := syscall.SyscallN(procGetSecurityDescriptorLength.Addr(), uintptr(unsafe.Pointer(sd))) + len = uint32(r0) + return +} + +func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) { + var _p0 uint32 + if *ownerDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0))) + *ownerDefaulted = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) { + r0, _, _ := syscall.SyscallN(procGetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) { + var _p0 uint32 + if *saclPresent { + _p0 = 1 + } + var _p1 uint32 + if *saclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.SyscallN(procGetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1))) + *saclPresent = _p0 != 0 + *saclDefaulted = _p1 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.SyscallN(procGetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) { + r0, _, _ := syscall.SyscallN(procGetSidIdentifierAuthority.Addr(), uintptr(unsafe.Pointer(sid))) + authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) { + r0, _, _ := syscall.SyscallN(procGetSidSubAuthority.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(index)) + subAuthority = (*uint32)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthorityCount(sid *SID) (count *uint8) { + r0, _, _ := syscall.SyscallN(procGetSidSubAuthorityCount.Addr(), uintptr(unsafe.Pointer(sid))) + count = (*uint8)(unsafe.Pointer(r0)) + return +} + +func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ImpersonateSelf(impersonationlevel uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procImpersonateSelf.Addr(), uintptr(impersonationlevel)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procInitializeSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) { + var _p0 uint32 + if forceAppsClosed { + _p0 = 1 + } + var _p1 uint32 + if rebootAfterShutdown { + _p1 = 1 + } + r1, _, e1 := syscall.SyscallN(procInitiateSystemShutdownExW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func isTokenRestricted(tokenHandle Token) (ret bool, err error) { + r0, _, e1 := syscall.SyscallN(procIsTokenRestricted.Addr(), uintptr(tokenHandle)) + ret = r0 != 0 + if !ret { + err = errnoErr(e1) + } + return +} + +func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { + r0, _, _ := syscall.SyscallN(procIsValidSecurityDescriptor.Addr(), uintptr(unsafe.Pointer(sd))) + isValid = r0 != 0 + return +} + +func isValidSid(sid *SID) (isValid bool) { + r0, _, _ := syscall.SyscallN(procIsValidSid.Addr(), uintptr(unsafe.Pointer(sid))) + isValid = r0 != 0 + return +} + +func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) { + r0, _, _ := syscall.SyscallN(procIsWellKnownSid.Addr(), uintptr(unsafe.Pointer(sid)), uintptr(sidType)) + isWellKnown = r0 != 0 + return +} + +func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procLookupAccountNameW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procLookupAccountSidW.Addr(), uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) { + r1, _, e1 := syscall.SyscallN(procLookupPrivilegeValueW.Addr(), uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procMakeAbsoluteSD.Addr(), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procMakeSelfRelativeSD.Addr(), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) { + r0, _, _ := syscall.SyscallN(procNotifyServiceStatusChangeW.Addr(), uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { + r1, _, e1 := syscall.SyscallN(procOpenProcessToken.Addr(), uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procOpenSCManagerW.Addr(), uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procOpenServiceW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) { + var _p0 uint32 + if openAsSelf { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procOpenThreadToken.Addr(), uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryServiceConfig2W.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryServiceConfigW.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) { + err = procQueryServiceDynamicInformation.Find() + if err != nil { + return + } + r1, _, e1 := syscall.SyscallN(procQueryServiceDynamicInformation.Addr(), uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryServiceLockStatusW.Addr(), uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(status))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryServiceStatusEx.Addr(), uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RegCloseKey(key Handle) (regerrno error) { + r0, _, _ := syscall.SyscallN(procRegCloseKey.Addr(), uintptr(key)) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.SyscallN(procRegEnumKeyExW.Addr(), uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) { + var _p0 uint32 + if watchSubtree { + _p0 = 1 + } + var _p1 uint32 + if asynchronous { + _p1 = 1 + } + r0, _, _ := syscall.SyscallN(procRegNotifyChangeKeyValue.Addr(), uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1)) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { + r0, _, _ := syscall.SyscallN(procRegOpenKeyExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.SyscallN(procRegQueryInfoKeyW.Addr(), uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { + r0, _, _ := syscall.SyscallN(procRegQueryValueExW.Addr(), uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procRegisterEventSourceW.Addr(), uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procRegisterServiceCtrlHandlerExW.Addr(), uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procReportEventW.Addr(), uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RevertToSelf() (err error) { + r1, _, e1 := syscall.SyscallN(procRevertToSelf.Addr()) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) { + r0, _, _ := syscall.SyscallN(procSetEntriesInAclW.Addr(), uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) { + r1, _, e1 := syscall.SyscallN(procSetKernelObjectSecurity.Addr(), uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + var _p0 *uint16 + _p0, ret = syscall.UTF16PtrFromString(objectName) + if ret != nil { + return + } + return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl) +} + +func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + r0, _, _ := syscall.SyscallN(procSetNamedSecurityInfoW.Addr(), uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) { + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) { + var _p0 uint32 + if daclPresent { + _p0 = 1 + } + var _p1 uint32 + if daclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorDacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) { + var _p0 uint32 + if groupDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorGroup.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) { + var _p0 uint32 + if ownerDefaulted { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorOwner.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) { + syscall.SyscallN(procSetSecurityDescriptorRMControl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl))) + return +} + +func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) { + var _p0 uint32 + if saclPresent { + _p0 = 1 + } + var _p1 uint32 + if saclDefaulted { + _p1 = 1 + } + r1, _, e1 := syscall.SyscallN(procSetSecurityDescriptorSacl.Addr(), uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + r0, _, _ := syscall.SyscallN(procSetSecurityInfo.Addr(), uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.SyscallN(procSetServiceStatus.Addr(), uintptr(service), uintptr(unsafe.Pointer(serviceStatus))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetThreadToken(thread *Handle, token Token) (err error) { + r1, _, e1 := syscall.SyscallN(procSetThreadToken.Addr(), uintptr(unsafe.Pointer(thread)), uintptr(token)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetTokenInformation.Addr(), uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { + r1, _, e1 := syscall.SyscallN(procStartServiceCtrlDispatcherW.Addr(), uintptr(unsafe.Pointer(serviceTable))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procStartServiceW.Addr(), uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { + r1, _, e1 := syscall.SyscallN(procCertAddCertificateContextToStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertCloseStore(store Handle, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCertCloseStore.Addr(), uintptr(store), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { + r0, _, e1 := syscall.SyscallN(procCertCreateCertificateContext.Addr(), uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + err = errnoErr(e1) + } + return +} + +func CertDeleteCertificateFromStore(certContext *CertContext) (err error) { + r1, _, e1 := syscall.SyscallN(procCertDeleteCertificateFromStore.Addr(), uintptr(unsafe.Pointer(certContext))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) { + r0, _, _ := syscall.SyscallN(procCertDuplicateCertificateContext.Addr(), uintptr(unsafe.Pointer(certContext))) + dupContext = (*CertContext)(unsafe.Pointer(r0)) + return +} + +func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { + r0, _, e1 := syscall.SyscallN(procCertEnumCertificatesInStore.Addr(), uintptr(store), uintptr(unsafe.Pointer(prevContext))) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + err = errnoErr(e1) + } + return +} + +func CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) { + r0, _, e1 := syscall.SyscallN(procCertFindCertificateInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext))) + cert = (*CertContext)(unsafe.Pointer(r0)) + if cert == nil { + err = errnoErr(e1) + } + return +} + +func CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) { + r0, _, e1 := syscall.SyscallN(procCertFindChainInStore.Addr(), uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext))) + certchain = (*CertChainContext)(unsafe.Pointer(r0)) + if certchain == nil { + err = errnoErr(e1) + } + return +} + +func CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) { + r0, _, _ := syscall.SyscallN(procCertFindExtension.Addr(), uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions))) + ret = (*CertExtension)(unsafe.Pointer(r0)) + return +} + +func CertFreeCertificateChain(ctx *CertChainContext) { + syscall.SyscallN(procCertFreeCertificateChain.Addr(), uintptr(unsafe.Pointer(ctx))) + return +} + +func CertFreeCertificateContext(ctx *CertContext) (err error) { + r1, _, e1 := syscall.SyscallN(procCertFreeCertificateContext.Addr(), uintptr(unsafe.Pointer(ctx))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { + r1, _, e1 := syscall.SyscallN(procCertGetCertificateChain.Addr(), uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) { + r0, _, _ := syscall.SyscallN(procCertGetNameStringW.Addr(), uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size)) + chars = uint32(r0) + return +} + +func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCertOpenStore.Addr(), uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCertOpenSystemStoreW.Addr(), uintptr(hprov), uintptr(unsafe.Pointer(name))) + store = Handle(r0) + if store == 0 { + err = errnoErr(e1) + } + return +} + +func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { + r1, _, e1 := syscall.SyscallN(procCertVerifyCertificateChainPolicy.Addr(), uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) { + var _p0 uint32 + if *callerFreeProvOrNCryptKey { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procCryptAcquireCertificatePrivateKey.Addr(), uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0))) + *callerFreeProvOrNCryptKey = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptDecodeObject.Addr(), uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptProtectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptQueryObject.Addr(), uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) { + r1, _, e1 := syscall.SyscallN(procCryptUnprotectData.Addr(), uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) { + r0, _, e1 := syscall.SyscallN(procPFXImportCertStore.Addr(), uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags)) + store = Handle(r0) + if store == 0 { + err = errnoErr(e1) + } + return +} + +func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { + r0, _, _ := syscall.SyscallN(procDnsNameCompare_W.Addr(), uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2))) + same = r0 != 0 + return +} + +func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + var _p0 *uint16 + _p0, status = syscall.UTF16PtrFromString(name) + if status != nil { + return + } + return _DnsQuery(_p0, qtype, options, extra, qrs, pr) +} + +func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + r0, _, _ := syscall.SyscallN(procDnsQuery_W.Addr(), uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) + if r0 != 0 { + status = syscall.Errno(r0) + } + return +} + +func DnsRecordListFree(rl *DNSRecord, freetype uint32) { + syscall.SyscallN(procDnsRecordListFree.Addr(), uintptr(unsafe.Pointer(rl)), uintptr(freetype)) + return +} + +func DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { + r0, _, _ := syscall.SyscallN(procDwmGetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size)) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { + r0, _, _ := syscall.SyscallN(procDwmSetWindowAttribute.Addr(), uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size)) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { + r0, _, _ := syscall.SyscallN(procCancelMibChangeNotify2.Addr(), uintptr(notificationHandle)) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func FreeMibTable(memory unsafe.Pointer) { + syscall.SyscallN(procFreeMibTable.Addr(), uintptr(memory)) + return +} + +func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetAdaptersAddresses.Addr(), uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetAdaptersInfo.Addr(), uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetBestInterfaceEx.Addr(), uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetIfEntry.Addr(), uintptr(unsafe.Pointer(pIfRow))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetIfEntry2Ex.Addr(), uintptr(level), uintptr(unsafe.Pointer(row))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetIpForwardEntry2(row *MibIpForwardRow2) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetIpForwardEntry2.Addr(), uintptr(unsafe.Pointer(row))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetIpForwardTable2(family uint16, table **MibIpForwardTable2) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetIpForwardTable2.Addr(), uintptr(family), uintptr(unsafe.Pointer(table))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { + r0, _, _ := syscall.SyscallN(procGetUnicastIpAddressEntry.Addr(), uintptr(unsafe.Pointer(row))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.SyscallN(procNotifyIpInterfaceChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyRouteChange2(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.SyscallN(procNotifyRouteChange2.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.SyscallN(procNotifyUnicastIpAddressChange.Addr(), uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle))) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func AddDllDirectory(path *uint16) (cookie uintptr, err error) { + r0, _, e1 := syscall.SyscallN(procAddDllDirectory.Addr(), uintptr(unsafe.Pointer(path))) + cookie = uintptr(r0) + if cookie == 0 { + err = errnoErr(e1) + } + return +} + +func AssignProcessToJobObject(job Handle, process Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procAssignProcessToJobObject.Addr(), uintptr(job), uintptr(process)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CancelIo(s Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procCancelIo.Addr(), uintptr(s)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CancelIoEx(s Handle, o *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procCancelIoEx.Addr(), uintptr(s), uintptr(unsafe.Pointer(o))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ClearCommBreak(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procClearCommBreak.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ClearCommError(handle Handle, lpErrors *uint32, lpStat *ComStat) (err error) { + r1, _, e1 := syscall.SyscallN(procClearCommError.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpErrors)), uintptr(unsafe.Pointer(lpStat))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CloseHandle(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procCloseHandle.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ClosePseudoConsole(console Handle) { + syscall.SyscallN(procClosePseudoConsole.Addr(), uintptr(console)) + return +} + +func ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procConnectNamedPipe.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { + r1, _, e1 := syscall.SyscallN(procCreateDirectoryW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateEventExW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess)) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateEventW.Addr(), uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateFileMappingW.Addr(), uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procCreateHardLinkW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateIoCompletionPort.Addr(), uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateJobObjectW.Addr(), uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateMutexExW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess)) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if initialOwner { + _p0 = 1 + } + r0, _, e1 := syscall.SyscallN(procCreateMutexW.Addr(), uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 || e1 == ERROR_ALREADY_EXISTS { + err = errnoErr(e1) + } + return +} + +func CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateNamedPipeW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa))) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCreatePipe.Addr(), uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procCreateProcessW.Addr(), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) { + r0, _, _ := syscall.SyscallN(procCreatePseudoConsole.Addr(), uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole))) + if r0 != 0 { + hr = syscall.Errno(r0) + } + return +} + +func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procCreateSymbolicLinkW.Addr(), uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procCreateToolhelp32Snapshot.Addr(), uintptr(flags), uintptr(processId)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procDefineDosDeviceW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeleteFile(path *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procDeleteFileW.Addr(), uintptr(unsafe.Pointer(path))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) { + syscall.SyscallN(procDeleteProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist))) + return +} + +func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procDeleteVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procDeviceIoControl.Addr(), uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DisconnectNamedPipe(pipe Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procDisconnectNamedPipe.Addr(), uintptr(pipe)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) { + var _p0 uint32 + if bInheritHandle { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procDuplicateHandle.Addr(), uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EscapeCommFunction(handle Handle, dwFunc uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procEscapeCommFunction.Addr(), uintptr(handle), uintptr(dwFunc)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ExitProcess(exitcode uint32) { + syscall.SyscallN(procExitProcess.Addr(), uintptr(exitcode)) + return +} + +func ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procExpandEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func FindClose(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFindClose.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindCloseChangeNotification(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFindCloseChangeNotification.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(path) + if err != nil { + return + } + return _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter) +} + +func _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) { + var _p1 uint32 + if watchSubtree { + _p1 = 1 + } + r0, _, e1 := syscall.SyscallN(procFindFirstChangeNotificationW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procFindFirstFileW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data))) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procFindFirstVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procFindFirstVolumeW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func FindNextChangeNotification(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFindNextChangeNotification.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func findNextFile1(handle Handle, data *win32finddata1) (err error) { + r1, _, e1 := syscall.SyscallN(procFindNextFileW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procFindNextVolumeMountPointW.Addr(), uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procFindNextVolumeW.Addr(), uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) { + r0, _, e1 := syscall.SyscallN(procFindResourceW.Addr(), uintptr(module), uintptr(name), uintptr(resType)) + resInfo = Handle(r0) + if resInfo == 0 { + err = errnoErr(e1) + } + return +} + +func FindVolumeClose(findVolume Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFindVolumeClose.Addr(), uintptr(findVolume)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFindVolumeMountPointClose.Addr(), uintptr(findVolumeMountPoint)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FlushConsoleInputBuffer(console Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFlushConsoleInputBuffer.Addr(), uintptr(console)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FlushFileBuffers(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFlushFileBuffers.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FlushViewOfFile(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procFlushViewOfFile.Addr(), uintptr(addr), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) { + var _p0 *uint16 + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := syscall.SyscallN(procFormatMessageW.Addr(), uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args))) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func FreeEnvironmentStrings(envs *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procFreeEnvironmentStringsW.Addr(), uintptr(unsafe.Pointer(envs))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func FreeLibrary(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procFreeLibrary.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGenerateConsoleCtrlEvent.Addr(), uintptr(ctrlEvent), uintptr(processGroupID)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetACP() (acp uint32) { + r0, _, _ := syscall.SyscallN(procGetACP.Addr()) + acp = uint32(r0) + return +} + +func GetActiveProcessorCount(groupNumber uint16) (ret uint32) { + r0, _, _ := syscall.SyscallN(procGetActiveProcessorCount.Addr(), uintptr(groupNumber)) + ret = uint32(r0) + return +} + +func GetCommModemStatus(handle Handle, lpModemStat *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetCommModemStatus.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpModemStat))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCommState(handle Handle, lpDCB *DCB) (err error) { + r1, _, e1 := syscall.SyscallN(procGetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { + r1, _, e1 := syscall.SyscallN(procGetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCommandLine() (cmd *uint16) { + r0, _, _ := syscall.SyscallN(procGetCommandLineW.Addr()) + cmd = (*uint16)(unsafe.Pointer(r0)) + return +} + +func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetComputerNameExW.Addr(), uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetComputerName(buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetComputerNameW.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetConsoleCP() (cp uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetConsoleCP.Addr()) + cp = uint32(r0) + if cp == 0 { + err = errnoErr(e1) + } + return +} + +func GetConsoleMode(console Handle, mode *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetConsoleMode.Addr(), uintptr(console), uintptr(unsafe.Pointer(mode))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetConsoleOutputCP() (cp uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetConsoleOutputCP.Addr()) + cp = uint32(r0) + if cp == 0 { + err = errnoErr(e1) + } + return +} + +func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { + r1, _, e1 := syscall.SyscallN(procGetConsoleScreenBufferInfo.Addr(), uintptr(console), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetCurrentDirectoryW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetCurrentProcessId() (pid uint32) { + r0, _, _ := syscall.SyscallN(procGetCurrentProcessId.Addr()) + pid = uint32(r0) + return +} + +func GetCurrentThreadId() (id uint32) { + r0, _, _ := syscall.SyscallN(procGetCurrentThreadId.Addr()) + id = uint32(r0) + return +} + +func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) { + r1, _, e1 := syscall.SyscallN(procGetDiskFreeSpaceExW.Addr(), uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetDriveType(rootPathName *uint16) (driveType uint32) { + r0, _, _ := syscall.SyscallN(procGetDriveTypeW.Addr(), uintptr(unsafe.Pointer(rootPathName))) + driveType = uint32(r0) + return +} + +func GetEnvironmentStrings() (envs *uint16, err error) { + r0, _, e1 := syscall.SyscallN(procGetEnvironmentStringsW.Addr()) + envs = (*uint16)(unsafe.Pointer(r0)) + if envs == nil { + err = errnoErr(e1) + } + return +} + +func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetExitCodeProcess.Addr(), uintptr(handle), uintptr(unsafe.Pointer(exitcode))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procGetFileAttributesExW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileAttributes(name *uint16) (attrs uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name))) + attrs = uint32(r0) + if attrs == INVALID_FILE_ATTRIBUTES { + err = errnoErr(e1) + } + return +} + +func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) { + r1, _, e1 := syscall.SyscallN(procGetFileInformationByHandle.Addr(), uintptr(handle), uintptr(unsafe.Pointer(data))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetFileInformationByHandleEx.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { + r1, _, e1 := syscall.SyscallN(procGetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileType(filehandle Handle) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetFileType.Addr(), uintptr(filehandle)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetFinalPathNameByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetFullPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname))) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetLargePageMinimum() (size uintptr) { + r0, _, _ := syscall.SyscallN(procGetLargePageMinimum.Addr()) + size = uintptr(r0) + return +} + +func GetLastError() (lasterr error) { + r0, _, _ := syscall.SyscallN(procGetLastError.Addr()) + if r0 != 0 { + lasterr = syscall.Errno(r0) + } + return +} + +func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetLogicalDriveStringsW.Addr(), uintptr(bufferLength), uintptr(unsafe.Pointer(buffer))) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetLogicalDrives() (drivesBitMask uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetLogicalDrives.Addr()) + drivesBitMask = uint32(r0) + if drivesBitMask == 0 { + err = errnoErr(e1) + } + return +} + +func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetLongPathNameW.Addr(), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetMaximumProcessorCount(groupNumber uint16) (ret uint32) { + r0, _, _ := syscall.SyscallN(procGetMaximumProcessorCount.Addr(), uintptr(groupNumber)) + ret = uint32(r0) + return +} + +func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetModuleFileNameW.Addr(), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procGetModuleHandleExW.Addr(), uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetNamedPipeClientProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetNamedPipeHandleStateW.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetNamedPipeInfo.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetNamedPipeServerProcessId.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetNumberOfConsoleInputEvents(console Handle, numevents *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetNumberOfConsoleInputEvents.Addr(), uintptr(console), uintptr(unsafe.Pointer(numevents))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procGetOverlappedResult.Addr(), uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetPriorityClass(process Handle) (ret uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetPriorityClass.Addr(), uintptr(process)) + ret = uint32(r0) + if ret == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcAddress(module Handle, procname string) (proc uintptr, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(procname) + if err != nil { + return + } + return _GetProcAddress(module, _p0) +} + +func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { + r0, _, e1 := syscall.SyscallN(procGetProcAddress.Addr(), uintptr(module), uintptr(unsafe.Pointer(procname))) + proc = uintptr(r0) + if proc == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessId(process Handle) (id uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetProcessId.Addr(), uintptr(process)) + id = uint32(r0) + if id == 0 { + err = errnoErr(e1) + } + return +} + +func getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetProcessPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetProcessShutdownParameters.Addr(), uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { + r1, _, e1 := syscall.SyscallN(procGetProcessTimes.Addr(), uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) { + syscall.SyscallN(procGetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags))) + return +} + +func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetShortPathNameW.Addr(), uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func getStartupInfo(startupInfo *StartupInfo) { + syscall.SyscallN(procGetStartupInfoW.Addr(), uintptr(unsafe.Pointer(startupInfo))) + return +} + +func GetStdHandle(stdhandle uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procGetStdHandle.Addr(), uintptr(stdhandle)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetSystemDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen)) + len = uint32(r0) + if len == 0 { + err = errnoErr(e1) + } + return +} + +func getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetSystemPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetSystemTimeAsFileTime(time *Filetime) { + syscall.SyscallN(procGetSystemTimeAsFileTime.Addr(), uintptr(unsafe.Pointer(time))) + return +} + +func GetSystemTimePreciseAsFileTime(time *Filetime) { + syscall.SyscallN(procGetSystemTimePreciseAsFileTime.Addr(), uintptr(unsafe.Pointer(time))) + return +} + +func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetSystemWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen)) + len = uint32(r0) + if len == 0 { + err = errnoErr(e1) + } + return +} + +func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetTempPathW.Addr(), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetThreadPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getTickCount64() (ms uint64) { + r0, _, _ := syscall.SyscallN(procGetTickCount64.Addr()) + ms = uint64(r0) + return +} + +func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetTimeZoneInformation.Addr(), uintptr(unsafe.Pointer(tzi))) + rc = uint32(r0) + if rc == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetUserPreferredUILanguages.Addr(), uintptr(flags), uintptr(unsafe.Pointer(numLanguages)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(bufSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVersion() (ver uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetVersion.Addr()) + ver = uint32(r0) + if ver == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetVolumeInformationByHandleW.Addr(), uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetVolumeInformationW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetVolumeNameForVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetVolumePathNameW.Addr(), uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetVolumePathNamesForVolumeNameW.Addr(), uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetWindowsDirectoryW.Addr(), uintptr(unsafe.Pointer(dir)), uintptr(dirLen)) + len = uint32(r0) + if len == 0 { + err = errnoErr(e1) + } + return +} + +func initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procInitializeProcThreadAttributeList.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func IsProcessorFeaturePresent(ProcessorFeature uint32) (ret bool) { + r0, _, _ := syscall.SyscallN(procIsProcessorFeaturePresent.Addr(), uintptr(ProcessorFeature)) + ret = r0 != 0 + return +} + +func IsWow64Process(handle Handle, isWow64 *bool) (err error) { + var _p0 uint32 + if *isWow64 { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procIsWow64Process.Addr(), uintptr(handle), uintptr(unsafe.Pointer(&_p0))) + *isWow64 = _p0 != 0 + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) { + err = procIsWow64Process2.Find() + if err != nil { + return + } + r1, _, e1 := syscall.SyscallN(procIsWow64Process2.Addr(), uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibraryEx(_p0, zero, flags) +} + +func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procLoadLibraryExW.Addr(), uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func LoadLibrary(libname string) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibrary(_p0) +} + +func _LoadLibrary(libname *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procLoadLibraryW.Addr(), uintptr(unsafe.Pointer(libname))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func LoadResource(module Handle, resInfo Handle) (resData Handle, err error) { + r0, _, e1 := syscall.SyscallN(procLoadResource.Addr(), uintptr(module), uintptr(resInfo)) + resData = Handle(r0) + if resData == 0 { + err = errnoErr(e1) + } + return +} + +func LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) { + r0, _, e1 := syscall.SyscallN(procLocalAlloc.Addr(), uintptr(flags), uintptr(length)) + ptr = uintptr(r0) + if ptr == 0 { + err = errnoErr(e1) + } + return +} + +func LocalFree(hmem Handle) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procLocalFree.Addr(), uintptr(hmem)) + handle = Handle(r0) + if handle != 0 { + err = errnoErr(e1) + } + return +} + +func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procLockFileEx.Addr(), uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func LockResource(resData Handle) (addr uintptr, err error) { + r0, _, e1 := syscall.SyscallN(procLockResource.Addr(), uintptr(resData)) + addr = uintptr(r0) + if addr == 0 { + err = errnoErr(e1) + } + return +} + +func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) { + r0, _, e1 := syscall.SyscallN(procMapViewOfFile.Addr(), uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length)) + addr = uintptr(r0) + if addr == 0 { + err = errnoErr(e1) + } + return +} + +func Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { + r1, _, e1 := syscall.SyscallN(procModule32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) { + r1, _, e1 := syscall.SyscallN(procModule32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procMoveFileExW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func MoveFile(from *uint16, to *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procMoveFileW.Addr(), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { + r0, _, e1 := syscall.SyscallN(procMultiByteToWideChar.Addr(), uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) + nwrite = int32(r0) + if nwrite == 0 { + err = errnoErr(e1) + } + return +} + +func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.SyscallN(procOpenEventW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.SyscallN(procOpenMutexW.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.SyscallN(procOpenProcess.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } + r0, _, e1 := syscall.SyscallN(procOpenThread.Addr(), uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) + handle = Handle(r0) + if handle == 0 { + err = errnoErr(e1) + } + return +} + +func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procPostQueuedCompletionStatus.Addr(), uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.SyscallN(procProcess32FirstW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.SyscallN(procProcess32NextW.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(procEntry))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procProcessIdToSessionId.Addr(), uintptr(pid), uintptr(unsafe.Pointer(sessionid))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func PulseEvent(event Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procPulseEvent.Addr(), uintptr(event)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func PurgeComm(handle Handle, dwFlags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procPurgeComm.Addr(), uintptr(handle), uintptr(dwFlags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { + r0, _, e1 := syscall.SyscallN(procQueryDosDeviceW.Addr(), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) + n = uint32(r0) + if n == 0 { + err = errnoErr(e1) + } + return +} + +func QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryFullProcessImageNameW.Addr(), uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procReadConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + var _p0 uint32 + if watchSubTree { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procReadDirectoryChangesW.Addr(), uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.SyscallN(procReadFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procReadProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ReleaseMutex(mutex Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procReleaseMutex.Addr(), uintptr(mutex)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RemoveDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procRemoveDirectoryW.Addr(), uintptr(unsafe.Pointer(path))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func RemoveDllDirectory(cookie uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procRemoveDllDirectory.Addr(), uintptr(cookie)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ResetEvent(event Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procResetEvent.Addr(), uintptr(event)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func resizePseudoConsole(pconsole Handle, size uint32) (hr error) { + r0, _, _ := syscall.SyscallN(procResizePseudoConsole.Addr(), uintptr(pconsole), uintptr(size)) + if r0 != 0 { + hr = syscall.Errno(r0) + } + return +} + +func ResumeThread(thread Handle) (ret uint32, err error) { + r0, _, e1 := syscall.SyscallN(procResumeThread.Addr(), uintptr(thread)) + ret = uint32(r0) + if ret == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func SetCommBreak(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procSetCommBreak.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCommMask(handle Handle, dwEvtMask uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetCommMask.Addr(), uintptr(handle), uintptr(dwEvtMask)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCommState(handle Handle, lpDCB *DCB) (err error) { + r1, _, e1 := syscall.SyscallN(procSetCommState.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpDCB))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { + r1, _, e1 := syscall.SyscallN(procSetCommTimeouts.Addr(), uintptr(handle), uintptr(unsafe.Pointer(timeouts))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetConsoleCP(cp uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetConsoleCP.Addr(), uintptr(cp)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setConsoleCursorPosition(console Handle, position uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetConsoleCursorPosition.Addr(), uintptr(console), uintptr(position)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetConsoleMode(console Handle, mode uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetConsoleMode.Addr(), uintptr(console), uintptr(mode)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetConsoleOutputCP(cp uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetConsoleOutputCP.Addr(), uintptr(cp)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetCurrentDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procSetCurrentDirectoryW.Addr(), uintptr(unsafe.Pointer(path))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetDefaultDllDirectories(directoryFlags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetDefaultDllDirectories.Addr(), uintptr(directoryFlags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetDllDirectory(path string) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(path) + if err != nil { + return + } + return _SetDllDirectory(_p0) +} + +func _SetDllDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procSetDllDirectoryW.Addr(), uintptr(unsafe.Pointer(path))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetEndOfFile(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procSetEndOfFile.Addr(), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procSetEnvironmentVariableW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetErrorMode(mode uint32) (ret uint32) { + r0, _, _ := syscall.SyscallN(procSetErrorMode.Addr(), uintptr(mode)) + ret = uint32(r0) + return +} + +func SetEvent(event Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procSetEvent.Addr(), uintptr(event)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileAttributes(name *uint16, attrs uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetFileAttributesW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(attrs)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { + r1, _, e1 := syscall.SyscallN(procSetFileCompletionNotificationModes.Addr(), uintptr(handle), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetFileInformationByHandle.Addr(), uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { + r0, _, e1 := syscall.SyscallN(procSetFilePointer.Addr(), uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence)) + newlowoffset = uint32(r0) + if newlowoffset == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { + r1, _, e1 := syscall.SyscallN(procSetFileTime.Addr(), uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetFileValidData(handle Handle, validDataLength int64) (err error) { + r1, _, e1 := syscall.SyscallN(procSetFileValidData.Addr(), uintptr(handle), uintptr(validDataLength)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetHandleInformation.Addr(), uintptr(handle), uintptr(mask), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) { + r0, _, e1 := syscall.SyscallN(procSetInformationJobObject.Addr(), uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength)) + ret = int(r0) + if ret == 0 { + err = errnoErr(e1) + } + return +} + +func SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetNamedPipeHandleState.Addr(), uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetPriorityClass(process Handle, priorityClass uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetPriorityClass.Addr(), uintptr(process), uintptr(priorityClass)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetProcessPriorityBoost(process Handle, disable bool) (err error) { + var _p0 uint32 + if disable { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procSetProcessPriorityBoost.Addr(), uintptr(process), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetProcessShutdownParameters(level uint32, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetProcessShutdownParameters.Addr(), uintptr(level), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetProcessWorkingSetSizeEx.Addr(), uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetStdHandle(stdhandle uint32, handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procSetStdHandle.Addr(), uintptr(stdhandle), uintptr(handle)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procSetVolumeLabelW.Addr(), uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procSetVolumeMountPointW.Addr(), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupComm(handle Handle, dwInQueue uint32, dwOutQueue uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupComm.Addr(), uintptr(handle), uintptr(dwInQueue), uintptr(dwOutQueue)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SizeofResource(module Handle, resInfo Handle) (size uint32, err error) { + r0, _, e1 := syscall.SyscallN(procSizeofResource.Addr(), uintptr(module), uintptr(resInfo)) + size = uint32(r0) + if size == 0 { + err = errnoErr(e1) + } + return +} + +func SleepEx(milliseconds uint32, alertable bool) (ret uint32) { + var _p0 uint32 + if alertable { + _p0 = 1 + } + r0, _, _ := syscall.SyscallN(procSleepEx.Addr(), uintptr(milliseconds), uintptr(_p0)) + ret = uint32(r0) + return +} + +func TerminateJobObject(job Handle, exitCode uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procTerminateJobObject.Addr(), uintptr(job), uintptr(exitCode)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func TerminateProcess(handle Handle, exitcode uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procTerminateProcess.Addr(), uintptr(handle), uintptr(exitcode)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.SyscallN(procThread32First.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.SyscallN(procThread32Next.Addr(), uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procUnlockFileEx.Addr(), uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func UnmapViewOfFile(addr uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procUnmapViewOfFile.Addr(), uintptr(addr)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procUpdateProcThreadAttribute.Addr(), uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { + r0, _, e1 := syscall.SyscallN(procVirtualAlloc.Addr(), uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect)) + value = uintptr(r0) + if value == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualFree.Addr(), uintptr(address), uintptr(size), uintptr(freetype)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualLock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualLock.Addr(), uintptr(addr), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualProtect.Addr(), uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualProtectEx.Addr(), uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualQuery.Addr(), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualQueryEx.Addr(), uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VirtualUnlock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procVirtualUnlock.Addr(), uintptr(addr), uintptr(length)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WTSGetActiveConsoleSessionId() (sessionID uint32) { + r0, _, _ := syscall.SyscallN(procWTSGetActiveConsoleSessionId.Addr()) + sessionID = uint32(r0) + return +} + +func WaitCommEvent(handle Handle, lpEvtMask *uint32, lpOverlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procWaitCommEvent.Addr(), uintptr(handle), uintptr(unsafe.Pointer(lpEvtMask)), uintptr(unsafe.Pointer(lpOverlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + var _p0 uint32 + if waitAll { + _p0 = 1 + } + r0, _, e1 := syscall.SyscallN(procWaitForMultipleObjects.Addr(), uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds)) + event = uint32(r0) + if event == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) { + r0, _, e1 := syscall.SyscallN(procWaitForSingleObject.Addr(), uintptr(handle), uintptr(waitMilliseconds)) + event = uint32(r0) + if event == 0xffffffff { + err = errnoErr(e1) + } + return +} + +func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procWriteConsoleW.Addr(), uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.SyscallN(procWriteFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procWriteProcessMemory.Addr(), uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.SyscallN(procAcceptEx.Addr(), uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { + syscall.SyscallN(procGetAcceptExSockaddrs.Addr(), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen))) + return +} + +func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procTransmitFile.Addr(), uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func NetApiBufferFree(buf *byte) (neterr error) { + r0, _, _ := syscall.SyscallN(procNetApiBufferFree.Addr(), uintptr(unsafe.Pointer(buf))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { + r0, _, _ := syscall.SyscallN(procNetGetJoinInformation.Addr(), uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetUserEnum(serverName *uint16, level uint32, filter uint32, buf **byte, prefMaxLen uint32, entriesRead *uint32, totalEntries *uint32, resumeHandle *uint32) (neterr error) { + r0, _, _ := syscall.SyscallN(procNetUserEnum.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(level), uintptr(filter), uintptr(unsafe.Pointer(buf)), uintptr(prefMaxLen), uintptr(unsafe.Pointer(entriesRead)), uintptr(unsafe.Pointer(totalEntries)), uintptr(unsafe.Pointer(resumeHandle))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { + r0, _, _ := syscall.SyscallN(procNetUserGetInfo.Addr(), uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtCreateFile.Addr(), uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength)) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtCreateNamedPipeFile.Addr(), uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtQueryInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtQuerySystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtSetInformationFile.Addr(), uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class)) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtSetInformationProcess.Addr(), uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen)) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procNtSetSystemInformation.Addr(), uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen)) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) { + r0, _, _ := syscall.SyscallN(procRtlAddFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress)) + ret = r0 != 0 + return +} + +func RtlDefaultNpAcl(acl **ACL) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procRtlDefaultNpAcl.Addr(), uintptr(unsafe.Pointer(acl))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) { + r0, _, _ := syscall.SyscallN(procRtlDeleteFunctionTable.Addr(), uintptr(unsafe.Pointer(functionTable))) + ret = r0 != 0 + return +} + +func RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlGetCurrentPeb() (peb *PEB) { + r0, _, _ := syscall.SyscallN(procRtlGetCurrentPeb.Addr()) + peb = (*PEB)(unsafe.Pointer(r0)) + return +} + +func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) { + syscall.SyscallN(procRtlGetNtVersionNumbers.Addr(), uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) + return +} + +func rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) { + r0, _, _ := syscall.SyscallN(procRtlGetVersion.Addr(), uintptr(unsafe.Pointer(info))) + if r0 != 0 { + ntstatus = NTStatus(r0) + } + return +} + +func RtlInitString(destinationString *NTString, sourceString *byte) { + syscall.SyscallN(procRtlInitString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString))) + return +} + +func RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) { + syscall.SyscallN(procRtlInitUnicodeString.Addr(), uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString))) + return +} + +func rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) { + r0, _, _ := syscall.SyscallN(procRtlNtStatusToDosErrorNoTeb.Addr(), uintptr(ntstatus)) + ret = syscall.Errno(r0) + return +} + +func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { + r0, _, _ := syscall.SyscallN(procCLSIDFromString.Addr(), uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func coCreateGuid(pguid *GUID) (ret error) { + r0, _, _ := syscall.SyscallN(procCoCreateGuid.Addr(), uintptr(unsafe.Pointer(pguid))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) { + r0, _, _ := syscall.SyscallN(procCoGetObject.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoInitializeEx(reserved uintptr, coInit uint32) (ret error) { + r0, _, _ := syscall.SyscallN(procCoInitializeEx.Addr(), uintptr(reserved), uintptr(coInit)) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoTaskMemFree(address unsafe.Pointer) { + syscall.SyscallN(procCoTaskMemFree.Addr(), uintptr(address)) + return +} + +func CoUninitialize() { + syscall.SyscallN(procCoUninitialize.Addr()) + return +} + +func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { + r0, _, _ := syscall.SyscallN(procStringFromGUID2.Addr(), uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) + chars = int32(r0) + return +} + +func EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procEnumProcessModules.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procEnumProcessModulesEx.Addr(), uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procEnumProcesses.Addr(), uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetModuleBaseNameW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetModuleFileNameExW.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetModuleInformation.Addr(), uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procQueryWorkingSetEx.Addr(), uintptr(process), uintptr(pv), uintptr(cb)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) { + ret = procSubscribeServiceChangeNotifications.Find() + if ret != nil { + return + } + r0, _, _ := syscall.SyscallN(procSubscribeServiceChangeNotifications.Addr(), uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) { + err = procUnsubscribeServiceChangeNotifications.Find() + if err != nil { + return + } + syscall.SyscallN(procUnsubscribeServiceChangeNotifications.Addr(), uintptr(subscription)) + return +} + +func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetUserNameExW.Addr(), uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procTranslateNameW.Addr(), uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize))) + if r1&0xff == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiBuildDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiCallClassInstaller.Addr(), uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiCancelDriverInfoSearch.Addr(), uintptr(deviceInfoSet)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiClassGuidsFromNameExW.Addr(), uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiClassNameFromGuidExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) { + r0, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoListExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + handle = DevInfo(r0) + if handle == DevInfo(InvalidHandle) { + err = errnoErr(e1) + } + return +} + +func setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiCreateDeviceInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiDestroyDeviceInfoList.Addr(), uintptr(deviceInfoSet)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiDestroyDriverInfoList.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiEnumDeviceInfo.Addr(), uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiEnumDriverInfoW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) { + r0, _, e1 := syscall.SyscallN(procSetupDiGetClassDevsExW.Addr(), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved)) + handle = DevInfo(r0) + if handle == DevInfo(InvalidHandle) { + err = errnoErr(e1) + } + return +} + +func SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInfoListDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceInstanceIdW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetDevicePropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetDriverInfoDetailW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiGetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) { + r0, _, e1 := syscall.SyscallN(procSetupDiOpenDevRegKey.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired)) + key = Handle(r0) + if key == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiSetClassInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceInstallParamsW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiSetDeviceRegistryPropertyW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDevice.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupDiSetSelectedDriverW.Addr(), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procSetupUninstallOEMInfW.Addr(), uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) { + r0, _, e1 := syscall.SyscallN(procCommandLineToArgvW.Addr(), uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc))) + argv = (**uint16)(unsafe.Pointer(r0)) + if argv == nil { + err = errnoErr(e1) + } + return +} + +func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) { + r0, _, _ := syscall.SyscallN(procSHGetKnownFolderPath.Addr(), uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) { + r1, _, e1 := syscall.SyscallN(procShellExecuteW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) + if r1 <= 32 { + err = errnoErr(e1) + } + return +} + +func EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) { + syscall.SyscallN(procEnumChildWindows.Addr(), uintptr(hwnd), uintptr(enumFunc), uintptr(param)) + return +} + +func EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) { + r1, _, e1 := syscall.SyscallN(procEnumWindows.Addr(), uintptr(enumFunc), uintptr(param)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func ExitWindowsEx(flags uint32, reason uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procExitWindowsEx.Addr(), uintptr(flags), uintptr(reason)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) { + r0, _, e1 := syscall.SyscallN(procGetClassNameW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount)) + copied = int32(r0) + if copied == 0 { + err = errnoErr(e1) + } + return +} + +func GetDesktopWindow() (hwnd HWND) { + r0, _, _ := syscall.SyscallN(procGetDesktopWindow.Addr()) + hwnd = HWND(r0) + return +} + +func GetForegroundWindow() (hwnd HWND) { + r0, _, _ := syscall.SyscallN(procGetForegroundWindow.Addr()) + hwnd = HWND(r0) + return +} + +func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { + r1, _, e1 := syscall.SyscallN(procGetGUIThreadInfo.Addr(), uintptr(thread), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetKeyboardLayout(tid uint32) (hkl Handle) { + r0, _, _ := syscall.SyscallN(procGetKeyboardLayout.Addr(), uintptr(tid)) + hkl = Handle(r0) + return +} + +func GetShellWindow() (shellWindow HWND) { + r0, _, _ := syscall.SyscallN(procGetShellWindow.Addr()) + shellWindow = HWND(r0) + return +} + +func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetWindowThreadProcessId.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(pid))) + tid = uint32(r0) + if tid == 0 { + err = errnoErr(e1) + } + return +} + +func IsWindow(hwnd HWND) (isWindow bool) { + r0, _, _ := syscall.SyscallN(procIsWindow.Addr(), uintptr(hwnd)) + isWindow = r0 != 0 + return +} + +func IsWindowUnicode(hwnd HWND) (isUnicode bool) { + r0, _, _ := syscall.SyscallN(procIsWindowUnicode.Addr(), uintptr(hwnd)) + isUnicode = r0 != 0 + return +} + +func IsWindowVisible(hwnd HWND) (isVisible bool) { + r0, _, _ := syscall.SyscallN(procIsWindowVisible.Addr(), uintptr(hwnd)) + isVisible = r0 != 0 + return +} + +func LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) { + r0, _, e1 := syscall.SyscallN(procLoadKeyboardLayoutW.Addr(), uintptr(unsafe.Pointer(name)), uintptr(flags)) + hkl = Handle(r0) + if hkl == 0 { + err = errnoErr(e1) + } + return +} + +func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { + r0, _, e1 := syscall.SyscallN(procMessageBoxW.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype)) + ret = int32(r0) + if ret == 0 { + err = errnoErr(e1) + } + return +} + +func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) { + r0, _, _ := syscall.SyscallN(procToUnicodeEx.Addr(), uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl)) + ret = int32(r0) + return +} + +func UnloadKeyboardLayout(hkl Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procUnloadKeyboardLayout.Addr(), uintptr(hkl)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { + var _p0 uint32 + if inheritExisting { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procCreateEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func DestroyEnvironmentBlock(block *uint16) (err error) { + r1, _, e1 := syscall.SyscallN(procDestroyEnvironmentBlock.Addr(), uintptr(unsafe.Pointer(block))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procGetUserProfileDirectoryW.Addr(), uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(filename) + if err != nil { + return + } + return _GetFileVersionInfoSize(_p0, zeroHandle) +} + +func _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) { + r0, _, e1 := syscall.SyscallN(procGetFileVersionInfoSizeW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle))) + bufSize = uint32(r0) + if bufSize == 0 { + err = errnoErr(e1) + } + return +} + +func GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(filename) + if err != nil { + return + } + return _GetFileVersionInfo(_p0, handle, bufSize, buffer) +} + +func _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) { + r1, _, e1 := syscall.SyscallN(procGetFileVersionInfoW.Addr(), uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer)) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(subBlock) + if err != nil { + return + } + return _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize) +} + +func _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procVerQueryValueW.Addr(), uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func TimeBeginPeriod(period uint32) (err error) { + r1, _, e1 := syscall.SyscallN(proctimeBeginPeriod.Addr(), uintptr(period)) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func TimeEndPeriod(period uint32) (err error) { + r1, _, e1 := syscall.SyscallN(proctimeEndPeriod.Addr(), uintptr(period)) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) { + r0, _, _ := syscall.SyscallN(procWinVerifyTrustEx.Addr(), uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func FreeAddrInfoW(addrinfo *AddrinfoW) { + syscall.SyscallN(procFreeAddrInfoW.Addr(), uintptr(unsafe.Pointer(addrinfo))) + return +} + +func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { + r0, _, _ := syscall.SyscallN(procGetAddrInfoW.Addr(), uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result))) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func WSACleanup() (err error) { + r1, _, e1 := syscall.SyscallN(procWSACleanup.Addr()) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSADuplicateSocket(s Handle, processID uint32, info *WSAProtocolInfo) (err error) { + r1, _, e1 := syscall.SyscallN(procWSADuplicateSocketW.Addr(), uintptr(s), uintptr(processID), uintptr(unsafe.Pointer(info))) + if r1 != 0 { + err = errnoErr(e1) + } + return +} + +func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { + r0, _, e1 := syscall.SyscallN(procWSAEnumProtocolsW.Addr(), uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) + n = int32(r0) + if n == -1 { + err = errnoErr(e1) + } + return +} + +func WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } + r1, _, e1 := syscall.SyscallN(procWSAGetOverlappedResult.Addr(), uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + r1, _, e1 := syscall.SyscallN(procWSAIoctl.Addr(), uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procWSALookupServiceBeginW.Addr(), uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSALookupServiceEnd(handle Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procWSALookupServiceEnd.Addr(), uintptr(handle)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) { + r1, _, e1 := syscall.SyscallN(procWSALookupServiceNextW.Addr(), uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procWSARecv.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procWSARecvFrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procWSASend.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.SyscallN(procWSASendTo.Addr(), uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procWSASocketW.Addr(), uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { + r0, _, _ := syscall.SyscallN(procWSAStartup.Addr(), uintptr(verreq), uintptr(unsafe.Pointer(data))) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.SyscallN(procbind.Addr(), uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Closesocket(s Handle) (err error) { + r1, _, e1 := syscall.SyscallN(procclosesocket.Addr(), uintptr(s)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.SyscallN(procconnect.Addr(), uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func GetHostByName(name string) (h *Hostent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetHostByName(_p0) +} + +func _GetHostByName(name *byte) (h *Hostent, err error) { + r0, _, e1 := syscall.SyscallN(procgethostbyname.Addr(), uintptr(unsafe.Pointer(name))) + h = (*Hostent)(unsafe.Pointer(r0)) + if h == nil { + err = errnoErr(e1) + } + return +} + +func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.SyscallN(procgetpeername.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func GetProtoByName(name string) (p *Protoent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetProtoByName(_p0) +} + +func _GetProtoByName(name *byte) (p *Protoent, err error) { + r0, _, e1 := syscall.SyscallN(procgetprotobyname.Addr(), uintptr(unsafe.Pointer(name))) + p = (*Protoent)(unsafe.Pointer(r0)) + if p == nil { + err = errnoErr(e1) + } + return +} + +func GetServByName(name string, proto string) (s *Servent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + var _p1 *byte + _p1, err = syscall.BytePtrFromString(proto) + if err != nil { + return + } + return _GetServByName(_p0, _p1) +} + +func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { + r0, _, e1 := syscall.SyscallN(procgetservbyname.Addr(), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto))) + s = (*Servent)(unsafe.Pointer(r0)) + if s == nil { + err = errnoErr(e1) + } + return +} + +func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.SyscallN(procgetsockname.Addr(), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { + r1, _, e1 := syscall.SyscallN(procgetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen))) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func listen(s Handle, backlog int32) (err error) { + r1, _, e1 := syscall.SyscallN(proclisten.Addr(), uintptr(s), uintptr(backlog)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Ntohs(netshort uint16) (u uint16) { + r0, _, _ := syscall.SyscallN(procntohs.Addr(), uintptr(netshort)) + u = uint16(r0) + return +} + +func recvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := syscall.SyscallN(procrecvfrom.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int32(r0) + if n == -1 { + err = errnoErr(e1) + } + return +} + +func sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.SyscallN(procsendto.Addr(), uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(tolen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { + r1, _, e1 := syscall.SyscallN(procsetsockopt.Addr(), uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func shutdown(s Handle, how int32) (err error) { + r1, _, e1 := syscall.SyscallN(procshutdown.Addr(), uintptr(s), uintptr(how)) + if r1 == socket_error { + err = errnoErr(e1) + } + return +} + +func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { + r0, _, e1 := syscall.SyscallN(procsocket.Addr(), uintptr(af), uintptr(typ), uintptr(protocol)) + handle = Handle(r0) + if handle == InvalidHandle { + err = errnoErr(e1) + } + return +} + +func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) { + r1, _, e1 := syscall.SyscallN(procWTSEnumerateSessionsW.Addr(), uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + +func WTSFreeMemory(ptr uintptr) { + syscall.SyscallN(procWTSFreeMemory.Addr(), uintptr(ptr)) + return +} + +func WTSQueryUserToken(session uint32, token *Token) (err error) { + r1, _, e1 := syscall.SyscallN(procWTSQueryUserToken.Addr(), uintptr(session), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} diff --git a/src/vcom-0.2.5/vendor/golang.org/x/text/LICENSE b/src/vcom-0.2.5/vendor/golang.org/x/text/LICENSE new file mode 100644 index 0000000..2a7cf70 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/text/LICENSE @@ -0,0 +1,27 @@ +Copyright 2009 The Go Authors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google LLC nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/vcom-0.2.5/vendor/golang.org/x/text/PATENTS b/src/vcom-0.2.5/vendor/golang.org/x/text/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/text/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/src/vcom-0.2.5/vendor/golang.org/x/text/transform/transform.go b/src/vcom-0.2.5/vendor/golang.org/x/text/transform/transform.go new file mode 100644 index 0000000..48ec64b --- /dev/null +++ b/src/vcom-0.2.5/vendor/golang.org/x/text/transform/transform.go @@ -0,0 +1,709 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package transform provides reader and writer wrappers that transform the +// bytes passing through as well as various transformations. Example +// transformations provided by other packages include normalization and +// conversion between character sets. +package transform // import "golang.org/x/text/transform" + +import ( + "bytes" + "errors" + "io" + "unicode/utf8" +) + +var ( + // ErrShortDst means that the destination buffer was too short to + // receive all of the transformed bytes. + ErrShortDst = errors.New("transform: short destination buffer") + + // ErrShortSrc means that the source buffer has insufficient data to + // complete the transformation. + ErrShortSrc = errors.New("transform: short source buffer") + + // ErrEndOfSpan means that the input and output (the transformed input) + // are not identical. + ErrEndOfSpan = errors.New("transform: input and output are not identical") + + // errInconsistentByteCount means that Transform returned success (nil + // error) but also returned nSrc inconsistent with the src argument. + errInconsistentByteCount = errors.New("transform: inconsistent byte count returned") + + // errShortInternal means that an internal buffer is not large enough + // to make progress and the Transform operation must be aborted. + errShortInternal = errors.New("transform: short internal buffer") +) + +// Transformer transforms bytes. +type Transformer interface { + // Transform writes to dst the transformed bytes read from src, and + // returns the number of dst bytes written and src bytes read. The + // atEOF argument tells whether src represents the last bytes of the + // input. + // + // Callers should always process the nDst bytes produced and account + // for the nSrc bytes consumed before considering the error err. + // + // A nil error means that all of the transformed bytes (whether freshly + // transformed from src or left over from previous Transform calls) + // were written to dst. A nil error can be returned regardless of + // whether atEOF is true. If err is nil then nSrc must equal len(src); + // the converse is not necessarily true. + // + // ErrShortDst means that dst was too short to receive all of the + // transformed bytes. ErrShortSrc means that src had insufficient data + // to complete the transformation. If both conditions apply, then + // either error may be returned. Other than the error conditions listed + // here, implementations are free to report other errors that arise. + Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) + + // Reset resets the state and allows a Transformer to be reused. + Reset() +} + +// SpanningTransformer extends the Transformer interface with a Span method +// that determines how much of the input already conforms to the Transformer. +type SpanningTransformer interface { + Transformer + + // Span returns a position in src such that transforming src[:n] results in + // identical output src[:n] for these bytes. It does not necessarily return + // the largest such n. The atEOF argument tells whether src represents the + // last bytes of the input. + // + // Callers should always account for the n bytes consumed before + // considering the error err. + // + // A nil error means that all input bytes are known to be identical to the + // output produced by the Transformer. A nil error can be returned + // regardless of whether atEOF is true. If err is nil, then n must + // equal len(src); the converse is not necessarily true. + // + // ErrEndOfSpan means that the Transformer output may differ from the + // input after n bytes. Note that n may be len(src), meaning that the output + // would contain additional bytes after otherwise identical output. + // ErrShortSrc means that src had insufficient data to determine whether the + // remaining bytes would change. Other than the error conditions listed + // here, implementations are free to report other errors that arise. + // + // Calling Span can modify the Transformer state as a side effect. In + // effect, it does the transformation just as calling Transform would, only + // without copying to a destination buffer and only up to a point it can + // determine the input and output bytes are the same. This is obviously more + // limited than calling Transform, but can be more efficient in terms of + // copying and allocating buffers. Calls to Span and Transform may be + // interleaved. + Span(src []byte, atEOF bool) (n int, err error) +} + +// NopResetter can be embedded by implementations of Transformer to add a nop +// Reset method. +type NopResetter struct{} + +// Reset implements the Reset method of the Transformer interface. +func (NopResetter) Reset() {} + +// Reader wraps another io.Reader by transforming the bytes read. +type Reader struct { + r io.Reader + t Transformer + err error + + // dst[dst0:dst1] contains bytes that have been transformed by t but + // not yet copied out via Read. + dst []byte + dst0, dst1 int + + // src[src0:src1] contains bytes that have been read from r but not + // yet transformed through t. + src []byte + src0, src1 int + + // transformComplete is whether the transformation is complete, + // regardless of whether or not it was successful. + transformComplete bool +} + +const defaultBufSize = 4096 + +// NewReader returns a new Reader that wraps r by transforming the bytes read +// via t. It calls Reset on t. +func NewReader(r io.Reader, t Transformer) *Reader { + t.Reset() + return &Reader{ + r: r, + t: t, + dst: make([]byte, defaultBufSize), + src: make([]byte, defaultBufSize), + } +} + +// Read implements the io.Reader interface. +func (r *Reader) Read(p []byte) (int, error) { + n, err := 0, error(nil) + for { + // Copy out any transformed bytes and return the final error if we are done. + if r.dst0 != r.dst1 { + n = copy(p, r.dst[r.dst0:r.dst1]) + r.dst0 += n + if r.dst0 == r.dst1 && r.transformComplete { + return n, r.err + } + return n, nil + } else if r.transformComplete { + return 0, r.err + } + + // Try to transform some source bytes, or to flush the transformer if we + // are out of source bytes. We do this even if r.r.Read returned an error. + // As the io.Reader documentation says, "process the n > 0 bytes returned + // before considering the error". + if r.src0 != r.src1 || r.err != nil { + r.dst0 = 0 + r.dst1, n, err = r.t.Transform(r.dst, r.src[r.src0:r.src1], r.err == io.EOF) + r.src0 += n + + switch { + case err == nil: + if r.src0 != r.src1 { + r.err = errInconsistentByteCount + } + // The Transform call was successful; we are complete if we + // cannot read more bytes into src. + r.transformComplete = r.err != nil + continue + case err == ErrShortDst && (r.dst1 != 0 || n != 0): + // Make room in dst by copying out, and try again. + continue + case err == ErrShortSrc && r.src1-r.src0 != len(r.src) && r.err == nil: + // Read more bytes into src via the code below, and try again. + default: + r.transformComplete = true + // The reader error (r.err) takes precedence over the + // transformer error (err) unless r.err is nil or io.EOF. + if r.err == nil || r.err == io.EOF { + r.err = err + } + continue + } + } + + // Move any untransformed source bytes to the start of the buffer + // and read more bytes. + if r.src0 != 0 { + r.src0, r.src1 = 0, copy(r.src, r.src[r.src0:r.src1]) + } + n, r.err = r.r.Read(r.src[r.src1:]) + r.src1 += n + } +} + +// TODO: implement ReadByte (and ReadRune??). + +// Writer wraps another io.Writer by transforming the bytes read. +// The user needs to call Close to flush unwritten bytes that may +// be buffered. +type Writer struct { + w io.Writer + t Transformer + dst []byte + + // src[:n] contains bytes that have not yet passed through t. + src []byte + n int +} + +// NewWriter returns a new Writer that wraps w by transforming the bytes written +// via t. It calls Reset on t. +func NewWriter(w io.Writer, t Transformer) *Writer { + t.Reset() + return &Writer{ + w: w, + t: t, + dst: make([]byte, defaultBufSize), + src: make([]byte, defaultBufSize), + } +} + +// Write implements the io.Writer interface. If there are not enough +// bytes available to complete a Transform, the bytes will be buffered +// for the next write. Call Close to convert the remaining bytes. +func (w *Writer) Write(data []byte) (n int, err error) { + src := data + if w.n > 0 { + // Append bytes from data to the last remainder. + // TODO: limit the amount copied on first try. + n = copy(w.src[w.n:], data) + w.n += n + src = w.src[:w.n] + } + for { + nDst, nSrc, err := w.t.Transform(w.dst, src, false) + if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { + return n, werr + } + src = src[nSrc:] + if w.n == 0 { + n += nSrc + } else if len(src) <= n { + // Enough bytes from w.src have been consumed. We make src point + // to data instead to reduce the copying. + w.n = 0 + n -= len(src) + src = data[n:] + if n < len(data) && (err == nil || err == ErrShortSrc) { + continue + } + } + switch err { + case ErrShortDst: + // This error is okay as long as we are making progress. + if nDst > 0 || nSrc > 0 { + continue + } + case ErrShortSrc: + if len(src) < len(w.src) { + m := copy(w.src, src) + // If w.n > 0, bytes from data were already copied to w.src and n + // was already set to the number of bytes consumed. + if w.n == 0 { + n += m + } + w.n = m + err = nil + } else if nDst > 0 || nSrc > 0 { + // Not enough buffer to store the remainder. Keep processing as + // long as there is progress. Without this case, transforms that + // require a lookahead larger than the buffer may result in an + // error. This is not something one may expect to be common in + // practice, but it may occur when buffers are set to small + // sizes during testing. + continue + } + case nil: + if w.n > 0 { + err = errInconsistentByteCount + } + } + return n, err + } +} + +// Close implements the io.Closer interface. +func (w *Writer) Close() error { + src := w.src[:w.n] + for { + nDst, nSrc, err := w.t.Transform(w.dst, src, true) + if _, werr := w.w.Write(w.dst[:nDst]); werr != nil { + return werr + } + if err != ErrShortDst { + return err + } + src = src[nSrc:] + } +} + +type nop struct{ NopResetter } + +func (nop) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + n := copy(dst, src) + if n < len(src) { + err = ErrShortDst + } + return n, n, err +} + +func (nop) Span(src []byte, atEOF bool) (n int, err error) { + return len(src), nil +} + +type discard struct{ NopResetter } + +func (discard) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + return 0, len(src), nil +} + +var ( + // Discard is a Transformer for which all Transform calls succeed + // by consuming all bytes and writing nothing. + Discard Transformer = discard{} + + // Nop is a SpanningTransformer that copies src to dst. + Nop SpanningTransformer = nop{} +) + +// chain is a sequence of links. A chain with N Transformers has N+1 links and +// N+1 buffers. Of those N+1 buffers, the first and last are the src and dst +// buffers given to chain.Transform and the middle N-1 buffers are intermediate +// buffers owned by the chain. The i'th link transforms bytes from the i'th +// buffer chain.link[i].b at read offset chain.link[i].p to the i+1'th buffer +// chain.link[i+1].b at write offset chain.link[i+1].n, for i in [0, N). +type chain struct { + link []link + err error + // errStart is the index at which the error occurred plus 1. Processing + // errStart at this level at the next call to Transform. As long as + // errStart > 0, chain will not consume any more source bytes. + errStart int +} + +func (c *chain) fatalError(errIndex int, err error) { + if i := errIndex + 1; i > c.errStart { + c.errStart = i + c.err = err + } +} + +type link struct { + t Transformer + // b[p:n] holds the bytes to be transformed by t. + b []byte + p int + n int +} + +func (l *link) src() []byte { + return l.b[l.p:l.n] +} + +func (l *link) dst() []byte { + return l.b[l.n:] +} + +// Chain returns a Transformer that applies t in sequence. +func Chain(t ...Transformer) Transformer { + if len(t) == 0 { + return nop{} + } + c := &chain{link: make([]link, len(t)+1)} + for i, tt := range t { + c.link[i].t = tt + } + // Allocate intermediate buffers. + b := make([][defaultBufSize]byte, len(t)-1) + for i := range b { + c.link[i+1].b = b[i][:] + } + return c +} + +// Reset resets the state of Chain. It calls Reset on all the Transformers. +func (c *chain) Reset() { + for i, l := range c.link { + if l.t != nil { + l.t.Reset() + } + c.link[i].p, c.link[i].n = 0, 0 + } +} + +// TODO: make chain use Span (is going to be fun to implement!) + +// Transform applies the transformers of c in sequence. +func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + // Set up src and dst in the chain. + srcL := &c.link[0] + dstL := &c.link[len(c.link)-1] + srcL.b, srcL.p, srcL.n = src, 0, len(src) + dstL.b, dstL.n = dst, 0 + var lastFull, needProgress bool // for detecting progress + + // i is the index of the next Transformer to apply, for i in [low, high]. + // low is the lowest index for which c.link[low] may still produce bytes. + // high is the highest index for which c.link[high] has a Transformer. + // The error returned by Transform determines whether to increase or + // decrease i. We try to completely fill a buffer before converting it. + for low, i, high := c.errStart, c.errStart, len(c.link)-2; low <= i && i <= high; { + in, out := &c.link[i], &c.link[i+1] + nDst, nSrc, err0 := in.t.Transform(out.dst(), in.src(), atEOF && low == i) + out.n += nDst + in.p += nSrc + if i > 0 && in.p == in.n { + in.p, in.n = 0, 0 + } + needProgress, lastFull = lastFull, false + switch err0 { + case ErrShortDst: + // Process the destination buffer next. Return if we are already + // at the high index. + if i == high { + return dstL.n, srcL.p, ErrShortDst + } + if out.n != 0 { + i++ + // If the Transformer at the next index is not able to process any + // source bytes there is nothing that can be done to make progress + // and the bytes will remain unprocessed. lastFull is used to + // detect this and break out of the loop with a fatal error. + lastFull = true + continue + } + // The destination buffer was too small, but is completely empty. + // Return a fatal error as this transformation can never complete. + c.fatalError(i, errShortInternal) + case ErrShortSrc: + if i == 0 { + // Save ErrShortSrc in err. All other errors take precedence. + err = ErrShortSrc + break + } + // Source bytes were depleted before filling up the destination buffer. + // Verify we made some progress, move the remaining bytes to the errStart + // and try to get more source bytes. + if needProgress && nSrc == 0 || in.n-in.p == len(in.b) { + // There were not enough source bytes to proceed while the source + // buffer cannot hold any more bytes. Return a fatal error as this + // transformation can never complete. + c.fatalError(i, errShortInternal) + break + } + // in.b is an internal buffer and we can make progress. + in.p, in.n = 0, copy(in.b, in.src()) + fallthrough + case nil: + // if i == low, we have depleted the bytes at index i or any lower levels. + // In that case we increase low and i. In all other cases we decrease i to + // fetch more bytes before proceeding to the next index. + if i > low { + i-- + continue + } + default: + c.fatalError(i, err0) + } + // Exhausted level low or fatal error: increase low and continue + // to process the bytes accepted so far. + i++ + low = i + } + + // If c.errStart > 0, this means we found a fatal error. We will clear + // all upstream buffers. At this point, no more progress can be made + // downstream, as Transform would have bailed while handling ErrShortDst. + if c.errStart > 0 { + for i := 1; i < c.errStart; i++ { + c.link[i].p, c.link[i].n = 0, 0 + } + err, c.errStart, c.err = c.err, 0, nil + } + return dstL.n, srcL.p, err +} + +// Deprecated: Use runes.Remove instead. +func RemoveFunc(f func(r rune) bool) Transformer { + return removeF(f) +} + +type removeF func(r rune) bool + +func (removeF) Reset() {} + +// Transform implements the Transformer interface. +func (t removeF) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { + for r, sz := rune(0), 0; len(src) > 0; src = src[sz:] { + + if r = rune(src[0]); r < utf8.RuneSelf { + sz = 1 + } else { + r, sz = utf8.DecodeRune(src) + + if sz == 1 { + // Invalid rune. + if !atEOF && !utf8.FullRune(src) { + err = ErrShortSrc + break + } + // We replace illegal bytes with RuneError. Not doing so might + // otherwise turn a sequence of invalid UTF-8 into valid UTF-8. + // The resulting byte sequence may subsequently contain runes + // for which t(r) is true that were passed unnoticed. + if !t(r) { + if nDst+3 > len(dst) { + err = ErrShortDst + break + } + nDst += copy(dst[nDst:], "\uFFFD") + } + nSrc++ + continue + } + } + + if !t(r) { + if nDst+sz > len(dst) { + err = ErrShortDst + break + } + nDst += copy(dst[nDst:], src[:sz]) + } + nSrc += sz + } + return +} + +// grow returns a new []byte that is longer than b, and copies the first n bytes +// of b to the start of the new slice. +func grow(b []byte, n int) []byte { + m := len(b) + if m <= 32 { + m = 64 + } else if m <= 256 { + m *= 2 + } else { + m += m >> 1 + } + buf := make([]byte, m) + copy(buf, b[:n]) + return buf +} + +const initialBufSize = 128 + +// String returns a string with the result of converting s[:n] using t, where +// n <= len(s). If err == nil, n will be len(s). It calls Reset on t. +func String(t Transformer, s string) (result string, n int, err error) { + t.Reset() + if s == "" { + // Fast path for the common case for empty input. Results in about a + // 86% reduction of running time for BenchmarkStringLowerEmpty. + if _, _, err := t.Transform(nil, nil, true); err == nil { + return "", 0, nil + } + } + + // Allocate only once. Note that both dst and src escape when passed to + // Transform. + buf := [2 * initialBufSize]byte{} + dst := buf[:initialBufSize:initialBufSize] + src := buf[initialBufSize : 2*initialBufSize] + + // The input string s is transformed in multiple chunks (starting with a + // chunk size of initialBufSize). nDst and nSrc are per-chunk (or + // per-Transform-call) indexes, pDst and pSrc are overall indexes. + nDst, nSrc := 0, 0 + pDst, pSrc := 0, 0 + + // pPrefix is the length of a common prefix: the first pPrefix bytes of the + // result will equal the first pPrefix bytes of s. It is not guaranteed to + // be the largest such value, but if pPrefix, len(result) and len(s) are + // all equal after the final transform (i.e. calling Transform with atEOF + // being true returned nil error) then we don't need to allocate a new + // result string. + pPrefix := 0 + for { + // Invariant: pDst == pPrefix && pSrc == pPrefix. + + n := copy(src, s[pSrc:]) + nDst, nSrc, err = t.Transform(dst, src[:n], pSrc+n == len(s)) + pDst += nDst + pSrc += nSrc + + // TODO: let transformers implement an optional Spanner interface, akin + // to norm's QuickSpan. This would even allow us to avoid any allocation. + if !bytes.Equal(dst[:nDst], src[:nSrc]) { + break + } + pPrefix = pSrc + if err == ErrShortDst { + // A buffer can only be short if a transformer modifies its input. + break + } else if err == ErrShortSrc { + if nSrc == 0 { + // No progress was made. + break + } + // Equal so far and !atEOF, so continue checking. + } else if err != nil || pPrefix == len(s) { + return string(s[:pPrefix]), pPrefix, err + } + } + // Post-condition: pDst == pPrefix + nDst && pSrc == pPrefix + nSrc. + + // We have transformed the first pSrc bytes of the input s to become pDst + // transformed bytes. Those transformed bytes are discontiguous: the first + // pPrefix of them equal s[:pPrefix] and the last nDst of them equal + // dst[:nDst]. We copy them around, into a new dst buffer if necessary, so + // that they become one contiguous slice: dst[:pDst]. + if pPrefix != 0 { + newDst := dst + if pDst > len(newDst) { + newDst = make([]byte, len(s)+nDst-nSrc) + } + copy(newDst[pPrefix:pDst], dst[:nDst]) + copy(newDst[:pPrefix], s[:pPrefix]) + dst = newDst + } + + // Prevent duplicate Transform calls with atEOF being true at the end of + // the input. Also return if we have an unrecoverable error. + if (err == nil && pSrc == len(s)) || + (err != nil && err != ErrShortDst && err != ErrShortSrc) { + return string(dst[:pDst]), pSrc, err + } + + // Transform the remaining input, growing dst and src buffers as necessary. + for { + n := copy(src, s[pSrc:]) + atEOF := pSrc+n == len(s) + nDst, nSrc, err := t.Transform(dst[pDst:], src[:n], atEOF) + pDst += nDst + pSrc += nSrc + + // If we got ErrShortDst or ErrShortSrc, do not grow as long as we can + // make progress. This may avoid excessive allocations. + if err == ErrShortDst { + if nDst == 0 { + dst = grow(dst, pDst) + } + } else if err == ErrShortSrc { + if atEOF { + return string(dst[:pDst]), pSrc, err + } + if nSrc == 0 { + src = grow(src, 0) + } + } else if err != nil || pSrc == len(s) { + return string(dst[:pDst]), pSrc, err + } + } +} + +// Bytes returns a new byte slice with the result of converting b[:n] using t, +// where n <= len(b). If err == nil, n will be len(b). It calls Reset on t. +func Bytes(t Transformer, b []byte) (result []byte, n int, err error) { + return doAppend(t, 0, make([]byte, len(b)), b) +} + +// Append appends the result of converting src[:n] using t to dst, where +// n <= len(src), If err == nil, n will be len(src). It calls Reset on t. +func Append(t Transformer, dst, src []byte) (result []byte, n int, err error) { + if len(dst) == cap(dst) { + n := len(src) + len(dst) // It is okay for this to be 0. + b := make([]byte, n) + dst = b[:copy(b, dst)] + } + return doAppend(t, len(dst), dst[:cap(dst)], src) +} + +func doAppend(t Transformer, pDst int, dst, src []byte) (result []byte, n int, err error) { + t.Reset() + pSrc := 0 + for { + nDst, nSrc, err := t.Transform(dst[pDst:], src[pSrc:], true) + pDst += nDst + pSrc += nSrc + if err != ErrShortDst { + return dst[:pDst], pSrc, err + } + + // Grow the destination buffer, but do not grow as long as we can make + // progress. This may avoid excessive allocations. + if nDst == 0 { + dst = grow(dst, pDst) + } + } +} diff --git a/src/vcom-0.2.5/vendor/modules.txt b/src/vcom-0.2.5/vendor/modules.txt new file mode 100644 index 0000000..4036ef7 --- /dev/null +++ b/src/vcom-0.2.5/vendor/modules.txt @@ -0,0 +1,107 @@ +# github.com/alecthomas/chroma/v2 v2.23.1 +## explicit; go 1.22 +github.com/alecthomas/chroma/v2 +github.com/alecthomas/chroma/v2/formatters +github.com/alecthomas/chroma/v2/formatters/html +github.com/alecthomas/chroma/v2/formatters/svg +github.com/alecthomas/chroma/v2/lexers +github.com/alecthomas/chroma/v2/styles +# github.com/atotto/clipboard v0.1.4 +## explicit +github.com/atotto/clipboard +# github.com/aymanbagabas/go-osc52/v2 v2.0.1 +## explicit; go 1.16 +github.com/aymanbagabas/go-osc52/v2 +# github.com/charmbracelet/bubbles v0.21.0 +## explicit; go 1.23.0 +github.com/charmbracelet/bubbles/cursor +github.com/charmbracelet/bubbles/key +github.com/charmbracelet/bubbles/runeutil +github.com/charmbracelet/bubbles/textinput +github.com/charmbracelet/bubbles/viewport +# github.com/charmbracelet/bubbletea v1.3.10 +## explicit; go 1.24.0 +github.com/charmbracelet/bubbletea +# github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc +## explicit; go 1.18 +github.com/charmbracelet/colorprofile +# github.com/charmbracelet/lipgloss v1.1.0 +## explicit; go 1.18 +github.com/charmbracelet/lipgloss +# github.com/charmbracelet/x/ansi v0.10.1 +## explicit; go 1.23.0 +github.com/charmbracelet/x/ansi +github.com/charmbracelet/x/ansi/parser +# github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd +## explicit; go 1.18 +github.com/charmbracelet/x/cellbuf +# github.com/charmbracelet/x/term v0.2.1 +## explicit; go 1.18 +github.com/charmbracelet/x/term +# github.com/dlclark/regexp2 v1.11.5 +## explicit; go 1.13 +github.com/dlclark/regexp2 +github.com/dlclark/regexp2/syntax +# github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f +## explicit; go 1.16 +github.com/erikgeiser/coninput +# github.com/kr/fs v0.1.0 +## explicit +github.com/kr/fs +# github.com/lucasb-eyer/go-colorful v1.2.0 +## explicit; go 1.12 +github.com/lucasb-eyer/go-colorful +# github.com/mattn/go-isatty v0.0.20 +## explicit; go 1.15 +github.com/mattn/go-isatty +# github.com/mattn/go-localereader v0.0.1 +## explicit +github.com/mattn/go-localereader +# github.com/mattn/go-runewidth v0.0.16 +## explicit; go 1.9 +github.com/mattn/go-runewidth +# github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 +## explicit; go 1.17 +github.com/muesli/ansi +github.com/muesli/ansi/compressor +# github.com/muesli/cancelreader v0.2.2 +## explicit; go 1.17 +github.com/muesli/cancelreader +# github.com/muesli/termenv v0.16.0 +## explicit; go 1.17 +github.com/muesli/termenv +# github.com/pelletier/go-toml/v2 v2.2.4 +## explicit; go 1.21.0 +github.com/pelletier/go-toml/v2 +github.com/pelletier/go-toml/v2/internal/characters +github.com/pelletier/go-toml/v2/internal/danger +github.com/pelletier/go-toml/v2/internal/tracker +github.com/pelletier/go-toml/v2/unstable +# github.com/pkg/sftp v1.13.10 +## explicit; go 1.23.0 +github.com/pkg/sftp +github.com/pkg/sftp/internal/encoding/ssh/filexfer +github.com/pkg/sftp/internal/encoding/ssh/filexfer/openssh +# github.com/rivo/uniseg v0.4.7 +## explicit; go 1.18 +github.com/rivo/uniseg +# github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e +## explicit; go 1.19 +github.com/xo/terminfo +# golang.org/x/crypto v0.50.0 +## explicit; go 1.25.0 +golang.org/x/crypto/blowfish +golang.org/x/crypto/chacha20 +golang.org/x/crypto/curve25519 +golang.org/x/crypto/internal/alias +golang.org/x/crypto/internal/poly1305 +golang.org/x/crypto/ssh +golang.org/x/crypto/ssh/internal/bcrypt_pbkdf +# golang.org/x/sys v0.43.0 +## explicit; go 1.25.0 +golang.org/x/sys/cpu +golang.org/x/sys/unix +golang.org/x/sys/windows +# golang.org/x/text v0.36.0 +## explicit; go 1.25.0 +golang.org/x/text/transform diff --git a/vcom-0.2.5-1-x86_64.pkg.tar.zst b/vcom-0.2.5-1-x86_64.pkg.tar.zst new file mode 100644 index 0000000000000000000000000000000000000000..c099bd09b71d25bdf546f86c82c1260fbfaffdcd GIT binary patch literal 3988221 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

W+$i`Lf>dnD;u%Kc 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

7g!Hr9?+g z1Rc=rx?%(SNymOFA*zAgn$>kWqT6-FZ(x5;ha^%$R@dnOV!N)0wx_^sdO1bLC1F4s zCSB5t?K&PnJ4#2I9ra1JP_eo$3CVVy08}8(Tj=u1ck8OC&+|d*Kx8n1R0iL_xYKy z-^B0_F`0+p*v&7$5DVWh)7J}6YQc6UC0bnmj<2 zE}Hf8cyvV==XAP56qD@BJYfcVy45FEoYs*w!Hl{;#+YSs--=4s$_&?a%?@R8F}>9b zE71@q!{WywP70A>8Lo=*W<_~pVA#%dKpSfe{{mNc7sjx}a=l*WXVF}PDq$MUH62%k zdYnliZRciBqyBHiZnS;t*~v^k)Hx@g5HUJbEy{wXnjXOmh}fCW6SCLLUMu{((gnIL1o zKwY5(PBHr|ekQpMdPR68j`CymcqM{YZyJFN*odZ^PV0R#!*OSLZ%e>DZ6`4}6CUi{ zoJ2GF8UXX}fb>UIH58vEGR2Q9+$xdD=lZlX3@X)e8APzBF)S888(3K6S|u{IOyir@ zQZOj$GAXG7SNxm|_of73cI*7YoWZUj2uPCEJl!;C5JrHqkMrJsCotH$p%AvP=}KBX zpFIRJV2d3vWO+Z{iyZs;yvVVmp+mJ?od;(E@9l-{OyHXd;w1g6vA4)d0GTk5lP%PY z&fg2i>;!VM_cCJ`${VZm;IeGmc>)O9?&Lw6cK!~w;-^`6e_?CvY>Vt!z#x8_OcyJ? zOyn%`kR~3f{KF{nn|R^E0;4ncJo@-W#L1zF8rydrx&Sjee{q!)wkJo_plhRYhgcJx zdE%%Q8tEws{*d7xE8@%xT4Os_ge|ewR{V5W+$9crq2%Gq|AV8qGf$+@&OALxJLrD{ z@XZs%Nmi>%{Iq+H%T`Sfo8;v0Wd^-SGB&I8_FS-?%2YU!f&eCFFl#rbw>+qJl~|Nt zh{rrDzEE2O&qg5&Us#5J1XXN$*^}S*f&>;hnmrrR4`QVU$7}A$F`}82wBv*drqT`p zaOBv*)S(oFwYBs$bL=3Z06=pDobwg9CcwlIgr)UBvq)5e(!<)iYN8cicSS4y6y}Z~ zEG-eu;!wv4clW^R?j1Z`rJyL()iK23V)V|>JY5|@SX#d(jv-MKt@uc;;P}DP^7-H( zCPC?8ZMm~WP*?bL>E(_j98h{#TO^t~o~{xOB9tE1)~^X=7qHUq>;g|$2N0Il4tLfG zbxIu6&F~~L(uZf@Dy)1l@ z@%z&VEZ>}>$nME6BF0*Z-jR&R%fZVY4msxZoOu?3`BM@Gu44PK=ULkMdj(YWh7^B^ z6;SbyFFe1Lrn`G}DSlfF51Ztn`{YDy-7xqf-vf+VuCsw-Q{#6gswqWI-uCaB(atX% zQrE~y@dKc2_adN+FbmW6uNPIoSO*otCg=efc>vxpd7iv!KewZ(O_agw{tiTluDOzR`RmWP_byOBNO)<$P zF!!_o4b9158I+RqZR_dfk`;FrQC!9M=TOj`44yrar=sHQYpk3(eVeuPhY#Udq7mi1K$?$2pa%I1E`t&auDtugQ)#+a{USHJx zSutwu2*3^zWFRqWo#`FLdPn(NW)Z zF{(EV`RV25nBlvSk9!-*OvLI#VXs=7$#!65X+f7{xMD-k4us& zHoaVn;g6D)$EO!Zj7|cse~gp8r8xQf7#2E-l}Kwb{8F;ACu4^fqjQN_g)0AV?B2_8 z(3jDP>@ycgKO}G>khc&SAjW&K24)wPNDxRF*}m%k4h@|=BK>_EwW#_ zx>LE>!@7=p!3LKLXa;aHI(5$!!WtiJqEJcvYd^^T-9aVt2d!XqK6CCY7MK{9ZAwfb zKN0iEDo(1nF~N?CBL7p80ros40kR}c<{17wSs4c~I(;aSpO{!+!2woh;r4*UN*P;* z>pBk0$br$xd*U#Qk8IG{G?+e|Lgq+VB>uGE(vZrggCqzj(Lob)4SJ-*(@jewjsRZk zx?VEo#XY*SSTc~A5^=~cfsl*rQHhf|i2Egw{}@I7p$?4B7E$64LiRx-N@AGZ8zRHU zB^mx%Az%li(+Beo^m|nv6sdnNGwuL`_~{=8@wd3XNU|46MzlocuG@mTP9%X7f*&?L zluD`r=1*`CwDSiiC`##qcp{O-4Xzctw(z@D*mdGJb3}e6dCL{Wl1(q&hlc?Bf!xc+ zMvGtgGKEXzSCZe12nri^Pgut3&NQ=wCtf7i3rb65FGI6er1(ljl#0k8fZ0k(ZjX!9YOa9>X>4kb4ovsTWlX`4A_$01RFYOArL43MR$WMWRCN~xm^Ph}~cvEk}ID)6`zESsL1I^UnYAM*EB z1(-i6^`vdvnN_AZB}qUSftB6T9SX5B!j10eY%dyi!Jr>SBWL4 zY&z;mexHxgNz*r8IO?jf!CCxfNGzML4@hbbSGgPT?_z!(upyRUBdmpX3K#v4kvObkcQQ*TW;( z_n6fq*}HCvb^ptZVRtHEXxcVkyA|4V5UJ|>WRx~kZNK0*+*}d?Bb`)+tUnYGXOc&TFAg{+L>5IPH;&L5NAsz zX)-#CSS}3YWUom4Uj(?1lDK~j*)lqVN#bRSAN!Yr(fRuz50#eyS88me^70S48l6;6 z^ZV0zASkU7siw|nUX3su9TA~nbUF_ND-mdHhuNYO!1Ue}=L-e!FO%ouu0iQ9Etg)# z!SgHyTHGFRik2}a|L{rvA*%z?`U0seE^~6J#o-IfQyO7ccPVy&+jjPI!wzuU*8JSy z3-xo`sC3*Vb&8J&mQ9DzahE}60~jzH@WJp9@@vFD&z(mTdZhEUpRH7j(8z z_-_AF{up~c`Ta}jQzXCel}0Vsok;HX$`twoh63AzcFez&ReV`R@%xvON*lkJGPs9F ztbhHQcFc!aR(xMrriV)Ji;P`&LWqsziu>1*wynBu;<4E{n1kscp`HKeVSdE_`_X<* zelz&UqDuI}#fNc4g?^9#s_iut#3#QJGK=Z%HMD@yS$%4a;fTMkwcLgIdsQy*nC{LR zd1<*-JtaY_6vh9&dAhDO1mWsFF`!%QfTQ2C@aReR;@Iugb#HNFQKe{_c;75%lCmx1 z8UxCHck}BWfOh^U*Y`!n!51kjnZ`sZy{h8#q~It%y_|ZPTb^zj^yr0xiG&&77fI&M z=Af?o7m+qbEqB&^y6#>km_}z5_3A!IF1FYKKd?>remJVEGK>z0vyYB=*za!sZTZ~m z#1NzNj~Y0m!PR|asMs`Xw2!Lf7b=l|nB)usJT}pbjFG{Y84tZ#@$ZG>DG^pOU_5z| zF;ePf#!TLJtrO=Zg)Qd^QSmGG&I1xh>s4R8S;LE=0AGjDc}6gwmI!8(Z3RiP9I`F=P7^60IR2(7`A9d&eg0u*DfX+l9PDDEP3w zJzlpz8F1tgd9uY0I8syNU{m}cs;G;DnZ%qzwX(RwHP1n0k8C?VA|*-`&v+3-sG+z; z1Y<0hy(K@lt;El5>%Ebg5fzLZ=EXH*!ws|H?w0&qJ0*Uuo!u`*{M$I(}Po--!meAlbHtnpZrHuTIh|fpkr;*%Qz!@M|H+6w?Bn1GPZFA zl>|g7?FB7~P@#2AsttG9_AJ1lt~s^g4xvIXcTK7dw`zdvKi5vsonbpva0Hxu5seKbe=p2gV(NFKgq#5Gxq(iF|_LS~q0=l=<{Slve{Xlr=|Ft_o$1EI9@`xg@w+E~x-ed46A z)OG#7Tl5H~`GAfpg~78z0iG8MC?h6lEL6~O_(npIm- zoeXwuP%FQCttinNp>FqD0mCPC!|3!V6Gkh)e=%vc@n2!A(V7)^c8Pk#?x4TygD4SzU4MJUMX1wX;K<%LEtaF5BYVr8Ul7x`}g_UhlahL=aaV zs9dHc90*+Hk_`lIa(Pyza(6c_oS|^VMcQ%qDF|0wq@CfCE3O^kkt?p9ACW7r9o-ez zPF?FEg1TmPP|X`Oc+|w%!QqDbhT3fgIX6V$+6ktyg98s~czA>6ii@-ZgbhI0&_e|7 zQqB!-Gu#loLC+0KxE=J|@B`cqD13rFA?UcvAvIO*GHBVRMhH4Ca`{suM3uYrAp&=4 z*`|gKECLs4hmH+F8|c`u$4Ubo8}>xtGA*riT;!65ICpt;a>ccS!YA1KfsVVh97o+L&H7a-61_Jk&4hR)set8;|yG(kBIy*nk9*ily!uGNQ*>uv zFWH?HvLGwfb==yfmnN=CRd&HM%=mlPDlzy%&3>jCOr< z_%e4GInn8J-?(7i@@vdriXOCz(=qJ<-SdV_Zu#Z?_ z3ql$G2n*Ri*<~?YC5i>LeqKEm=$LkAooj}VN?Br8_W{C$RzJDOBclkEKd3uExqn)| zO6>iRKZ+HI>yFsiVh22()wv9|?!=26li_N{tUhgi6OZygusg8e3j z;o^T^WQ+{rLlIuX{+SURRwv8E$ulHaEKXWA!-~i?NK9;2aG6RFMcp86NXf7`dB!s7 zhNcWKx%&wdxYPrV!0T9y6uw9qN%TU=QZbr5AU7NpSq3-5ib$l=i_Egdky5AlKvvjF z>}DZ3h|U;bDsi0>neGsAxN-;jI>fLU6FY|IuV_g-adNtX%XGGa%VZWavAD9%THv+B z7XQ97#tzLue1f7bl6BUCFb0q%j&Ps|0mJg+Nl^<=q|)K>B0V4aE;*jYx4TE@i#hu!YVwWKAlUTDJQvxor1Y zcG>Q;#9+J65)93j$eKd0IX5hvMlB5quIsqw?B-BZ>h@5RLJ!PJ88l`mV-VD&k3H0+ zPy;g!P|m&5BAmvC@5}z^1~s z`%IB-_nA7g-De7IPrb}at8!8*+Z-ptCLdi6M5=odd106vESI(mwKOQapx3acb136l|ulH z8J3_)gAxLS~UY@FFuQ-tTlaFDHn{d-}qpQzhoPM>rgciq}=4_w!XOm~Rvkr}4( z!dyr;8Fi62qAoIy4wmhngJV^C;kd?&=*q{{X#$50)K_V1lD76a)M-*(`yT2vVWoo34&SHzW`=5St|3q~ zbCI8N@MRJsb;vR+GO=OKC05M2BtWcOGr;U5g6VP2q&H<{iz;SCrm!l#Fy|5+%T#;0 zOm^NZz?xyim5)PfQk9c?+M2Aa&@z(6C&j2mnKfw+ayfYlJQ zu=Ny;1aavB1{#)aU3a#+w*bF?4N0fZz!0 zC>MiE3=={ucOR`CwA8iRl^8=9R2W8H#F@YsBMJr_7*Jlg)6G4u&hn{i7RHMgZwel2 zAXV_ePQ8$hI6SPNJU3-_6_Y;I~dA91b`o6(jL2_Xnml8`l+M)+C;UwmLhBdSys2IPX| z?D{s;X;NmcDxFO?b$tN$`fIcLKwFct3gF(9sa-uj*lMxb>&=8zKM2_!SX2PKVg3hL zxFA#dN_y5{YVv(~A#70;2FQZN3KlC?h^1-10&PvqG{4FU;ENvSKVXC+G~a`rCOLSs zNPu>RqY0vXD_RtVDcXTm^rI+Xlrt&`BmDQ z_!^qG!A_Go^B2(8#N(j(9PBjlVg3W!nz-25uncelA5pLdoEKq=uEf&H=2xJtiKC(U zAnY_rGyel^O`MA6_t>Mqb6J{5m>ME)pE;Snm$ z;8XE~N1$$xNYPUW5-IwcKO#jU7)>4#CEiEf8^vahNO76_E*D5sL~+^ca?ePwPMCIG zdmAaxkzx?W3Rfo>IF_Z>tE_&~}7ryZkYjQ|KS@py1k?Fl2x{Pc&eywhLA+Q1Qt= z?V1)>?Tq9Da4penP|6aq(tWJJ*=u6BH-u#+krx?W6T?0PjLx4QS@e?g3kA(jQ}sq< z#os&PbLD}J;tJGs|KbwI==_a<^1?!Ft?NB4JiSb)Y*+_86z3%>Zn`9^a_C^D?{ zK9Oa3`rMVUt1&DV!znbYMY!jKl%0M)uuSA_1sA3Pj-oOEXW<6FykVZikEK?_KJ)sS z0wdVYNMopDpjHW5q!1>?E{ZyPA0R5*V-U6T>xj?FbWe8;y2i`L^nEhJMXU|T2xF!w z&y)pvO3vt?6zU+V8)#4g2`dH>8i2$42w5$$Itv#Ho)s|o;1Dug*EN+69uNUzUt^dG zt$C)H?4^JrJN;5Tk)6`4;40rd$x19{6{_q_z3>pWGFN~$Ui^!NIaptW@VX9RGKV1*ax2yj(_l?q0X3^f^_r{R>)l1yhF!yLFq zky~mD3_xtDsUsyNsi9#ER4?rFG(Z-Yg=^KqPfM7VFbam^5Vx9Op;{FtB7}u+3^4JQ zBZC=uOiABpk;X?Sz&5Qz$x8tu-J$nmejk8n0)3r`!ltRGn536ZL`nkj53xEcD$R^w zHh7YCjFNDjcn)Yb$_r>Kh*J77qG^(_7!@{71SD<*l* zvG}Lj3AAjt_=Qr;Sa?WE)J-C#C#CpDZ&ujvs)qf#j&mQjehlf^q4}vRxXC(rl4(Th z)2%{R49&0@(i^ML6k&ISr(5TWS=_T?GRM&TQA0Hy^P_>ek2c2rvAC}5o|PIa%Su?o zjNmgo$ul@-(v4cu&6!-olblA)N;Y_&s@v40d(Nj@PgZD(aBfKEnw7jw{j%Oq#r~d+ ztIz=Xc?M*0$BNIpQsbYpu#XIjs0u5>Q#RQX;ug&82&fsKYmnI^A%9p)1F_e{&*Dli zg-7J?HGg4uhK@vCre<$VeBDYf6S4S)5%Q0t6oeqQrOz!zHnpleUe`6T3T z6Mqmh?J4IB%9VT0r?4!5x@_2;CQnh)mGt34lSw}>3sz}j9Q%#YXz^2vM zXS0H__pE56uonVA8=YZ9@>iKVJdbo4 znj8mFSC@Mxsq&Kn7*D!uqK&Fv?R*_Qm{aHo^=}*u4^1z#QDIRL8YpqeI;0VaZeC(NopVQIjrJAp_t{_kPI#1l(gWj3-t?g4@J@ z1SQpgRhwecj1jzs=i`#I5=GFg>^;e_OF5V-lE3E#i~IW`oFZt3&5WK69-*Q6fAUj# z*^Ou%6<@SyG2w?%#g_{(cf#RX*J)^I;XD;(z;^y2rdjb_>H+Li6ZfXXPi6!kkvVf< zju7KMn@a;QLJ}KG0}yT9;?F(7ZQ7+n{N#%KUbu7!BpWi=F7*J2qUHxV;Jh4avTx3% z7)i#$bX{a-LiU$0IV9kl-=#xXi)OE=rW4?No)q7? z=h;g3g2b>7%}r~Jl52RrKF&(rZf@!Ykzu6|)+EhQY0?kcW?bD#1jn|X_Y`r0nI?Rh zcy4HQuiS+W2L*N2phEXt)&R1&K^~PEa`6X)J2*uCpps#aN{>zVUZ@AoUng_d`qKwz*YU5#Y~lGn2$^Ys18C3yX5wdTf~d+_s;gpZlZDQwYK8 zo2BuW$#9czww7pEsY!S1+RfIIicL*YVQMOxcfIvHg#jr9{g!Tf9DXM^-RuD=(Kg;YSeUXkPeCPkGrX#A{K7oetBEI$oatpr#bsBAVj z&i`qyL8U6_jLzc*FFI2yH%FOwCXu6q{UL}uM$GDSssd@3vf%Cl z6i6I3APIx+oM7;TG)67wZ2)G|N>fMqixyb`vT&g=WOOekb>E(Dy9$w zPLf}UCDGeL5@CEWYE7Mg_lXn> zUILsZnNs7cuIY!DLAP*VHc7{4(mT?_tgFQWS*Hy`D2xE)gc!+CYR6zO-=9fXIRw zOR;)MN=cW?G;9(xEtQnSN;o5B9YmMQbPeK%GI*Aj?E7S9GJ5AA zP*-%Obh%7MH0B_~CS5Mm)R{3$X2!TlB_*mkI5M>BS4> zFJ9yr?Lo7U6uh|crLg6;mDFu&(&sqCE?wbgPYIq(LJ4nHWC=rv9q?eHEZsN2V#G{) zu6Uv1zGAwz(t^?pUgN$R^?reRdfv{d?7iDsls>vEZ_YRRxV`Qyq1k*O^9VdhX|TKbyq zLk!Q-l3g-0r68JxD7osP$h5>U)#Wm!cxNHQs4kZYf-1*6&ZHXBRW6~8ag|ChD~Dr9 zxyhYPbK6R~Sky&|{UD2YPqyeqj?q{Hbh%5O!WSRf8TLUmyXRCmU1aTi6adf~-|DUR zp+o(;)^o*c{`absLIypwvk%t%CZxFQ+>Gzi7IgfW9uugrm6QmehzMo?64*lKo#&Co z%Z$2oi6&cTiIH?IWJb!6g>2|Q9eZks{6S{VO7T4fCmW3N`?6~26A=H@lo?Ne{LZSF zw;47mt~#pX<*=&D6~0i?sFhL6c_Z-H!XWVnk;HJX=|L;b_mLtDQhXjlE|by=_4Fdc z^t51XJ7yYGdGs>lpaIG$Au=o_Bt|Z$^^%m3E*Cj;ijhktAu+thNSW5%&1`s`*n?g!`7WcBx| z+|8Fe;;QEd=j+Iv4`c$2tJ@FG_aSrsuj%eSCcMy!{4RxIC`o>wtJ0PHJmwu}3o;h6 zArd)R(>V=-tX))CAqN#Am_Kp3K+N{s8V1{QI;b!Kq(a6Q8!&t5h2y33a`eDtOpZGc z?1`~GheOczoDN;~5ETfx=n!U4yId1F9yHiZF9@{(+Cy(vyfpDL<0V>bMy7^x%U<=tjRHn`kE_)>1wwI+HJ#2va zlNBBW+jBY`*`D*kYe$*E!Lo$P2RUJLaz6n5zyXeWp~Ns1Z^xRG9xv@&*Lk?CY~rS_ zuIn;*k~o?{K$X=v`3A&Qx)U83d^22)VLCvBWMWuK5d<|Ug2wE$1B!_sL2*IW~U}scN!xDQ4C98NfcLSib@wja}%7H1$Yhi!N-Pu6T=-)*;3`NjipKz zKKa?+ajX}2U;+!}sb!TIkinH{E|?jUCQh!giC?I$m0QR<3u5V960zX~krTp?OFe zlM8!K0Y0fqv$^I%Z2JMdlWdXF0{E}NpVrzD1rs@fEl zG@E2r{*1_QZwODyW9!~fUx>M;_*Ex2SuMgwVpu1Kn#{o|{#YfFg-pQ_Gwn3 z%H11kZ%7gT4Uu6tM854`B`WaE&;EX1ESl32_L4W5Ae1z}f0g($N}c`vz?^0G)||vb zLR}u9N?Pr8;&gS-C6--7Yxy=Y{H(G-L{*EOb9XS>WxBJh8>yDFY!Ixlo0zy2&7X63 zuQjOBS$2&EvT{mI3M(~<#wy*vl2tZIjgw|E%o3TEtd=C3pxMccD0Z5XVH(#Ia;R^{ z!bvzR9==RoG>w+_k}Gdeku<+c&m1t$zjJq~v$be%& zdS`PzdVYWMZt$@>4-C9%=NWM{?J)wxDTgpds3FkpxggB;arfN4JQswV7*;A|xB?BW zQ8CW21a@b8ZjM>BPHxVU?N2&JP_SJ}hKW-gI@@^!==dQ+f$h0DCj@ON85HK2Z6_cY z9s$q|)I_)E=D=+l0c(xz(rK=h-*a?ONKgR}TXtQ?6<}3sx^xO7srYJKIu$Z)0>;l4 zVRs8Nd>jGuCp~bj6fKQ!{wws>m3Ao<14;ACSC^8>CC&e1#YY~eou5Zz^mXmE9vE?` zzZP|WM6)sL_cSa4-Yz9$)Eckue&q|srarC5-CsOaSJ!p>Dcn%MuH$%KQfgF7_AaF^ zY2)`@E^On;(z!WZ8b$*M8y07~*O3o;y4B}c(>>=w2Iz7<1rr)bn!ifSU9oXm$DEF+ z>nT)V1R9xLq?_{zb*0oaMky7Cmh44b`7w<&%z*+x-L|RTup}xal2hAtHSPvE2 z`F&R$20L`x;{Rk#p|6AKuG_{>GN;hb5p_Gz!iB^de4%7G7X`s)vx56UCV<~w#s6fmf;aiw>4q|R~>pypsQQ_X;7bL z4nHJ8cU8SNU#`-12R!ljs^+8*Q%%u_t*$awlIAbE*2EoJ46lh_NLKQ$^m0mMby(fv zWN*rx^kLrc!`8dSN$)B{gK>W0b(&NY!$@Wo3ZF6WJcY!#O19(~tiTeKq>!xqVb&=o zy-NoglIEvPSoPq1xl2XNG^n$1ku=wyY0&tEa;R=@#H5!Dy5W_a{K-EAA<2%5VM<#>k}ltbebKnXGKv+053W?Qc&{@@z~7PenBtI&t4`hoN1Dq+^O9uLFwCFFM= zQ&o$})P~H7cFv>2Z;9-CVx(F^O%z#aPE4zUhQuASn?a9Dgs{5Ml7 zQK>}-dnJcfQ8{Cqf!zBT%X)&Av3t3H^5}Bl4D5~e^FXs=7z#-W@NQiNh$uuT6SwD|v&Sct8 z(p^`>*;-PImBS+R2QfS>B0mnXvZrK*eVA&+WL@j=I9o{^Vx@Ogg%r(j(Uk`xQ`<~) zI9s0Gv8_PWT!COP?})04&o zFq@{a>D~~}gzBc9H%4c>JCaKF&LaZ01I(Xfc%jbroE8&*v(aH~)t`S?N!;o_DRABVL~-)OEu zQ^>~`s>~0IwG|x9dyU8@HUidK@h=!?!EOBrW)x8VGBYvjHFOQW$bXseasabsG^@~_ zwawZWQ2rHF)}Sgpk#I7;?JR)n3`+Y&l96GiL7#;D4g(HDfbx4T0MfliWPdc%pg$Ri zWo(E~N@DPcdJW8?K6kzT&rp=D+IyQ$P;8@txc!(te zb0;-X+W9?)Cuk47Oyb-CsBC&kqPYeQYPnkBg(4yB2|zo8ZF*T0a*@CIh2$MG4f?$6 z8uouj9pdjLk%bs|!ZcH~fCVa>HnM<}5v;fKQ-X6-E4Q(AfVyy(@Y};{VBP*dOK^^p!BZhov>;N=%$1Xu$l*Xu-}6 z#`e0d!RQkMfZ6o&>?o*wwH0S5-cUdI2II^bEW8#b=z&QT<38J(6!D{wpUrn}*G+p} z*Kf9ZM2N@-oMCfyo(n2A?Ysim0^Hg;#Z?V1Oto```I4>B??~aaiFg{tiY@RzD9(kgCN!V-sx4A)Gq*9OpN(n}cw^l$^=1SUI9f zS@6fKga-ga@Js+0M%Zju+gr9j4rPq6e~3e#58xxIW*C%&oJ@<8Lc5uWkO;IpZ|X~| zOp3+H8{(%*lR&$f$QPHa90rkZS#wlYRD*JVMw$#EP|@%Z5}hE|3`a z*^WXRWYRY(jADBl!$J5+GYtBZF^J)?IC&N)$%s$pm3DK|oi~+5hKE;j@&c&quB%Om zlV`+tgD065C)whs#z{6}@&}z2v<_Z4TJuWAvERW}(G#o~p4=ew?!2iMQY5MN{AnwsIdl5YC?VSPNS6mibqc{Jy<7W?<+gCgFuGi>f z2sdUkK^}|(vtltL9NQ-^=r+Iw_apL4%m_4g!(6}}0qYumLup4$RH`_a*AH17uI(~G z2UGV>tcIWd2tOJBdU(Ks{sXpKXY2pH^usm%@{sP+CwkmF|PgD6VCo6K(PH_q)cVHkqEYvD@=(mPE% zH{CoLID4S090C<#l@TG^^Cvcoo`*6vzSex|^vQYsQvM)X%f|Q1at>Z_75iW)K(Ac|Vy#|NvG`>|=c5U>nE)b_F-P*{fLu9?UC_j{%0qMg&@3zT`zxuv+c z()TidMea+~=t_gJTbtcsvEbsL#rSvb6>}AMKOhTXI5qsrNCZ+QV?LMf8lcT7L~?0; z<$-mf=eJ6Sj3p0ixy+1Dag?ER5uc(;n{|nAM-B2GhG@Ls4xXo@z-DM>+y-v~oYZ${ zW##yz`|d~B=`slARy-dw9wCLGI;x8J<-+1dyzyVy}uBO=pDQD(NWS1T3i#5b* zy=p}&sX8Q@BYG1Nb>4PewDYg5GC%SxCq%USvKHDVOsyV7DER`U5A)OCsC@1+=*(<` zk&l&}#i#I1Kd`0b1w=rOU{QhyZqD7ep?%mbGn-Ji$AL;Iyqq3#%X%4!GCX-()aHl} zG^HPJ{Poh<1^QiW9oo^X>tZRC_jaUm_h<)wL&6E<>eX%%?_ZKj@Q~!R3~$dEfPuM0 z!oQ7oLLy=S6$sNVTfVxYCXY{8C$n|0Ui!1WloK#g8v!o{cRjh!gys}So+0pK&5N4F zLmw?)fOeDKyU2@|_DMY3@2kXwv*!$5A_{I07oMLGk`7_q%xu`7lU60m_KDUi$m^V% z7oK@G5h5ffAp3L2sC=Dl`oTZ>CJc1%_DOUm`!xm$qz=bfY_+4;4o5*=*){rGyud3# zq+U@7w{pq?&yT`C?IhaSipRlYq3fO`XqHY^;}|+Z5DzUr%6Gf%^~uHM&q8#TlFiZd z*E<7St0g155<`>$kcW7{GakGzLjJj&{T&4W|I)h~u>pmrb^R0(}*>0f8|cZ9>d+ z?=}3B2XAexC!ga<(r;CFSSNn1cG|H6{;*A}g>%CI@baEKF%2Dk%R^GKEC)fH)L|`I z*R)_nl8(oauahs3-y;A!`USxgH&D}HRSh2`p72<&RjdiY%&KAb*${|s4seOvJO#c% zJ7Rg{jm2`|2?8fPq@8wRl3^#O)aIGwvWuXnkRRe>*8l;&GP-+_|Jb!JlPp9$1=)2C zpJuWIEkbE*aT&a1XD6}5NZ>>0MYKcsHo8_N2^d0v)6P2sexI${SC@*V3-B+SU<`*b zL?IVr;&x}6@g%q*GAnns1GC0osQvp*Hq!E>-h;Y~`o9iyIOI-Jn(y#987kB=Z1q`` zP#P>f1G!?kX!5Lu$UF0_xwdATR~uSwPxN+S%>3;uz<&h!#J9X%6&=R@5hRPWfj=-L z?{(vrwc_c>tusxfjVQGHcu(e@$xE1VzCYTNeF z;4?SYKdWLoh1cjBnHbKF4I3pAqRHRM3_e_Eb@uw`l-IIk<$+NnLsnGGlOortDI&4A z{-9bn6eP5Vv_FgVTab-&NM=mWdvG+9Y6l0(NngRq_;9+V|CREb;ta$CEYp~7g!jb7 z+19Yr>wkS^%r@hs(aD-RP^@1kKPl$|n!uUQfyoI-cZS_sL|E36i6^}OW?L$pY@!E3 zRRVm=lqeo|HW19@Fd%e~P~I$O^V~gr&p>D9ZFB}V!=+(GhNvXBRNs0CMyJ`CtkMH~ zI{#BTEQYc%y_c;S`M+Oqn4BOQ^r` zwI2ocN`|-W)+9vQ$=(teo|a!Qog=E0>s{%9h-E#(WOigX0hNEZnuTRX62Xr~@eHXD zzHoY%O7(Dhubk}K)d?IiRYM@_A!S5 zU+k4~eUinm;|}KDxz4DFh8N9yjF}zvCN^KdkH|Wppf49j_T~#QNwHt_FpvyebJkI>$)hD$;SYvGyTY*rFdB8wwE4$@MU#JKCZxH< zI6v3Nb7$=eAJ``_UA26&$cV>m*13igDUgoU9;ZsQ;Lm(vW>`rCWr3Sp8NItSOa@kn z{0*;wA!BfSTDxrI{b*vpTqrre_vIrLB)Qj5xhm_tN6C1 ztV{xH{v|1>raTv#{`1d|m{9SBM)hys!tgyWOK8|fd-HeW_vqF={*u1+RNO2Ug zkDI|Zh&KU+x?wg~JF0D815~mW)e~!0k zM-^vZb$EWzeX5ktvzK!pTOaUkmWKVTEU|hg=RTbkr*gB0Z#PzoFJK0j zKQ4MJ!s_t&jn{7ZdFGrjA>zqG_iX&Yue1KK!Tnu)tUN&PO_Sj|a-k|%1T&!5WPOh5 zwZl^6uXRk6RVIp;9_5juw-n2qL%V`CE+WLU+m?^AQUB&aW7VcmDNAp`mUO)9R<2&@ z7~tCpsXWZK;{Iis4S5|?1q`6K?exui%+ZQ!+)Kd6|HVzD&~ZYk04G`Y(93F{{3K|! zJyF95shy3z>cq3@VvbMiG&Fcf4kwm*fFoa4ck2&m%Y$wDNi}kbP=L*6U4y2+Mhy&?DN+_x zEQS9k8BF|#u-mx%p7f;HH(C)q?-oqgWElo>JifR)H{g{)jz`xrIRO4h1mG2bxpG{Jqy(X3+-zk| z3aLbr9H~S0OK*+TWrpau6e<-u@Qz`=M;74`OnIO4_Ubp3;oR=?6e-a-3zT7B#XxWL zM?ercfVsxDYnj{skNl%S|2Y14^TzNTCrq{fs8}mZ6;BvJZxcUDB$trMD%TYPf+vf> zpUKT~f1a_>t80_)LU)`QQYx?j8tTq$C___Tg{Aqc)9hxsg6#HLaI4MnfZ4`u38sZ_ zQVXlRqQfq1(SAkTJ2m3dLq1sK_@y70Oz-9qbBtAC^fHg^74MLmpE+fG8UH==ek|z_ z=)A#)tv_2HHat3Hxg&8i+R`mw6XK&#szkIL`^W7V0@l7ZMhB z$`tJN{)4BevGTHD7P{?ykx6Pe9N(B#i7$|aW6P0+Bgt9WS0jtKnQ39A55TyEH@TjP zvak=&3<-u(vLP~U5W))^Ve4NK_9@MO8?^4La8DzR%7TkesWB(iYPyk$du(2dvSy2? z*%;BvP1!= zzq|j}@Em&E7VOshy0F(e3U-le_whZU*#Q5CabyBXls8L}afml4Tf4IZ=zwjk$-SZk z!Bjn@%>H}$d5lS={$R=t15D)?@;=yaO8SC?wJz)u#lar0*A=#1OGr|FLc}ua-xN;Q zcbtMK!jTBJ3Q`&_dpBRY4EcW3_aZpZIO7C{5!LS}>J52}YWZ>1?|(Yu>^dO%b27bb zq4c+s7Q_%aIJf%4r?qUKO-U^PY!oGt!WNENi8rvU`nO2UOWbLvSLV~Ps6*xAzZ4VM z)tlt>Oj`!5s-02umX*`*Q65G94dqbWy2zPNw%-*R;q?@?v--2mNyJ1n=?v=3{ zwr8KZatdap-Ol_FFuAXeM_+`+kJrd+l+-e6i+b7n1o{PGo`J-;BhAniQKk~hi8o$p z9%+cZlH%7pgzP@JZ8WR>K#9fuRn<4{OP#J?Jf6H|Q?StYW=-Z^5owa!q*|wU^6ys2 zV@b?wd3hl~C2?GlSo`$$1JMr>MG<`hXphKqHU`HqzPEj}95B~VK_I+)S$aS~5tdGM zLEq`Whx@K}`u8{4wS&39gMT7@S#6#*meiZJc3`+s=ivMDCgIX}Y5wF#HGT%Z)D^6(zq`Jz6(<@wuP zz1r&bbI3-vH(Fy<#3vExuCJ|Xo@LcPWaMwpAWPeQH?(hqOWR-FYn}msLq7mMxU_f~ zsV9MRc$)bfVr1x5h*y0+)-kIy0>~|ra^Hj?xUZs@W;MldTid=sw7~}_hakbFE$FT3 z3#C}*l5qacd4#C@82Sf|$>2?!;y^{O9udCG_!6plj2VF}Z9PB!wp{d*s4nfm>?mfL zh&Pkn(3mui|KeK|;w1Yb_14hQ0*fMbzeHz##HIa|Td2GBz#gf)A+9}&Z|;t?ojKls zC?u!D9lnU0@;S^kiY#5xhWW7Wo{mow;f-)FsP01Ti!$zY~$W5(r!U82L;UMb6h9n@X#a zB>?L4-dK)`(7$9#xCO0vo+0z#i}yeKO2nDczN~jDLjh5c(S^P@c?wyw@LSP^Hz%!O zheVoI1vBU0W|MDzcS|xrp5-eD4n;0#ojE*sb=E|xF!)Lx-@UjCrtm(-!6DI!t>BHm zUi2$|o=2TzhY=z481k)CEn`^Cy=S-48bbew^T+V>;U9p}CYN=!h))fZr@cNBCAP)| z(eASVoMi9%O}W+J=kww$=`c8!yw66vh&ldtgy!#4nr&cG!!j6NY0Hu+)dRHedWJ$H zbq@_IWrU_7jp`i0S;`XI7gF@%Hfvv04l$3GqmWn_CVpVFN8HWlRdG z?IV8)M6)C?fI&VT5*7x^y$S>ybO+c9G>HO@#@4PDndo=l>?O&RysAL-CHEzqIL~sw z4<`y;`{B0A*z4b>;vyYTRM(7R+(Q=#9!SvHi8sc?2F?XZeU@f@OSZgO{-A8tDkOim z83XGElsG;N!J$9~X~gb^#)+=Z_DOIeP!zuPN;HC(6zZop?Q~?fqocGJ-Ubbw`{pXw z6yA)Lyyk>@ELt)nv=j&F%S~{w5=?H6$Ram{1S0r$;o;zVAuQL;Ov#`N-$+o*LHI)~ zmHjV)GV;UnCqJF9ZP3NPC+`snfcoL#$p_#|a80?dh(@0w$;eT+ZBEE)xQ7#!ZQ2@rF8Rl+LQ#rYB{RbcS{em61Uj;bnS@?1je0WFU)EnV^H`1 zycg;Ch6Ase20v>J^aCy`Xn2tH$s9C^xUP#h=;}>fMss5rdkK$JyX9V`>^o!_b~T!G zkl1LRcBQfHNkxYi6fz?L&OQ|2-N*SmwUQU zoIW?mC2-a-AhToL+dZ;o9I*R`kAn|EC>EAu3^^K%B)Z}NG$}=~MhG7z878@CylVIk zBKr;}49h?1@nahazk$fa5?WFAoiJ`M79Y?L)}vfTETf^qcA=wUn>_$A@hUaP8$Ghy=k$+0*YC z+EM0v@kwz4Tt8*|iajNhm1N&Ni(`A^NDbKGlU!&@QCbx-Qh&UyYtm@~ zyO1Q$O%hsS>I7uUx=ap`{YaUZwYd-;p3@MRD|TjB$u2a9sI1kiDihA`eFO zX;E7okSq_wJD(>zQ2yp-&dN|!2}3=Ofh?ae-kzFG$EUk)iWdgOf?p{G{)Kp+ZU)U# z4J~%9nCO0)W?YW5ga9e3hxe8JdRVG7xQR!IyXOmeDP#5tEP+=_CwO@l&gKAPFdhaB zd?WiA3ls(@=#qOpuXNz{IakOu&^Buoi@K`s1ASC(yV7srbG?PCJyrhs#wj=bchGI+ zfW~fVKheH42SJA+eM!%T@Y7ya5siPVD`Juojg`O0J__C>xA^(O2QlHQ6)xd3#tY?4 z6}!(1WHiwu*33Mq?sBgNna2}_GqTs)~?eqQ@LR>+(&q0u0= zJlo&}nE`RcQjJMHWMr2^_*=WnklL>2&`6Z7|CeS~UE*!*t_&VJ=vz?Rm60e;sRXX+ z9Wz<>kISwg8zyu`bueCyX8?_o7oCPvOeHYnW$qyvV^}Z|6I)Pw#*mY5xuMUm=f{fw z5@(ebZ>PBa+MvXe2Vc$ix`scn7ZdF7m#pI%ViSA^{-bC1*@%#{aK_Jp>AAdwd;p|K z=VAguA+f%0jm^$C#-cN<4dLIoF6nR2CXo)pQ(*H`TE0h*jQrOUW^5KkcmF%QG0y<6 zioi;{PazT%e5YYSWw1u*D+lv+hj_v<3oOy)nlmI60%qOCb-euZS8c_Vc*fv5^~$-|4u7 zo~`)MPT!3wH;5{?rVb1Te;v6r-MB9mUU&WX190D)Encfbr^G3vS(HJhZErAC+QT7v z%oMU3)d4d6L16+^i@j6Dk@7?~4200Dj#?7akFZkMBW289#o`^}tdr_xhdC`5sQy@b zpHG{AzjIZ@h;?3{(s-%ZJA9GZ%`vBw1}_@VsB)*S*7*r96OhbI>cl>y9yhJ_D;ARS zQ3xry8FLrXUo=3heW;hvXPG&yGleEtMT3f=0lJy-G#@-1muX%r9;k@hlAveHnh{4= zn%w@InLm8QUp&sb3C(gmcanN8_?aQ?jmE@o+-pR)F-=;MWNY0q81iTiBjW+@WfNQS z9yw7Oh_rEl{g;$}KU#^~ctqOX*H*@ta0k`9KjD$pfJ;`4exu7%Qk63hy$+X%q_HCj zMea$kUdtS@dg|Cnz?C*z13Wce3N()L~_!3wwsTs5j#+BQ-@sd-Scrz9MQ>XRfalOwBfyB?x& zRDamAt(rL{F4fy-&1Bj$QU|;&aVCjGtmwJue;R|g-N*y7r{W3L=#tNy>h^50h}hN& zcf!w`7Q}RHRk_4}wVHpyG)V1ohd;k|Ds^Q}ARMdDl(58*8NuqpKBt!>0jNBV|2fK{ zxj%MHYEWA2S1U!XZ?D;q{f!wHIqckYzv1&s=6Z17a}H_BJHfUTm^-uc&5?%B6u~ep z%@aw;Xgw@5{vpEMgA4~Uxn0n0M}7S^MS{EH-`e(UyJ@*P-$yb0M1u*mg-DB@OXY=- zZ|wsnd@Y`L8h@`MY^yGav|^TpT`20v(8rvj#zd|r>`Db!hm^YK3zE7EGi>7U0FBX2 z)Gx^hq^9H2#dK6*a;A4xbc78}0XQX4^DQMR;pR)Y&M_&Wsq*=6RZ;}<<~tNQZ%Z5M zVwqS22{k@();h}fsM`dPu+KPvjpoD0Ismx)?gxq0y@^oGT zcQWmdC~Ozg6Lf}1OBHZM2|IODY6D2#vuVIRgW_iRR1t1Q`I`CIJ#r^^;`fx|5^q(S z=Aic580Yla(iXPsTQPUiPko#J#2bEj+9K=w-N%j?vtmyRE9dP_4Qf)cFFcT1^G5Oc zv%k9_-@$iq)g5k?s zy-k^IN>WpK=CaWmcB;g5QQCg2%|GBU3Ky^sL{+@U3uppP$RYP@yIT`~SjNqEKBZW6 zY0AMbR#LDA6ejBT<$PPioak)R9j%{{ZclfNTNmK5MBD z!f65C!*6c?4KUw-o_EHAN=x7Rh$XqVhW@<-DndA${})YVO2}~vY)H$k)2%| zPY;hm21q?QRpKT5Pbz){yLS+MqA{JFY*|n(cCRWp6CR<-6(#vHOqz2@fOSJKYrm2y zzGu!O{y72=OT9aoxwf7(>frp%JK6Zxuvwt6oOk))mdpHV=*l9%?Z+Nx)n@Ivo4->l zApO#Fc_^0>4R&GrjgmA7O*YiinF#3?DT~_|8Jv2M6RP6oy8e(nFx_Lz^e%kP{unTR zgOO6h0v)E-^z)tf+b7)s8iDwo8BPN;ma+-NK_TNe5-W-YsYsIJb|8|rk{B!O6aErXZ9hm4+ zzba%~8qR0MdK@&CFolfS$Uhh~^<_pzECGT5UWE?4R@M-+Ea_!q<)k;oW-=aZ{UEI$ zO~k`U7wWWTakC{VxvOeXSr(4pI~{UY8?9kJ-jmGsuwMezimy*R+uv(v?;(fE^Txm^ z@adOJ_4!L7R=)Kin93|*Z>Mj&nix?S2Q!OzU+}tw@Ln5)DqzC_ZH`H8{sENJoK_)B zNW;bGCO?IKtt)Uy-_+L$xm!pEQmrbau_Vn15)B2W$~5X~2d+;Sf-;EGP%}(kQ*M9v zDHj%&)uO?)Be8|CKZY!Rsxz^r7^bfwih}X?*_}44qgkz$?`&)gg?p#N+z22L?0#5( zNRfx(^hHF^Lh8y=B?+6`(H5M_?nB-c1>?Kiry zFv)WsNEQM_3r2;a*z5+&mwQvCM@{rwDlcC0;J@0o&py$lGtt0O?>fl31&nrE?C!^B zS`xhlkZt$dlGX_$1|=eH`eUd?QUj#z?X=bwJT0AHNZri^gi;7$(?kFn7F*zxbv znPSW&35hlHmK(O@Mt+XhB^KlT*`~Lcuunl>26EjS|6MYF&HygdB)KHStOFb{sv3Un z94RQydevKS{ia7if)%I|QuR0dIZ*A8t0yB=*Y-*K{7CeNLG@bfo7j1FhQdYp^eS58 zj&<$G$lh_TY1kE?{!V_*Z(Cm{DE!uw-osl+j$r7miOEdsjVY=Re3r|fZU^cibGW;2 zY{rL~Td$O_yh_d4#wpML@bY(iJPuN+=Q4n>IW9YN&PZ22*pEXAkQ!pNHY1L&i2voaz#geTzUHh4jl{2$%q>5i}nV4Jo%CV-Vj0XysCln|Nj=PMUWMr^*eY%|q z!L@BW=?6_HttFtyvXMcz*TLZQBluhU)+@}0kZ!q|m^-kV$C!S=jBJ#RJQ-%-Z+R;K zlh}-vD-o~rG}%kyjbT*u7}IKRlJHi|=pK7!n~&o3&tLI>LJ5fqc$M?h?Wq5{Kb_!= z?^@9+#4tRL^sj&YomsK9Aou+11n`{W8g08i1gkJ#?SI*h31%&L zTi%YlNL%;KI;2fGhq;+xiTm#+DVQp!-k!%<^as+sCkuCoX8@L@+L{LM9iY;-372aar)wbZ>e2%!3Y zlklOdVa6LvX4Z+3V_DdzrO=<=FQ~~j$Hrm$3B#ePp~N;RZxuVuyfX4TwXBjiL#$#@ ztnk5(3;-fQ4#@ZPD}{b!-i)RY3U8=SbJ_ToO0IC)@x6WpX&C)c`zSQ?%}6>zm+hWz z6b-J7hL&~Vdo$aSpdbKonAQtLic`${bV^$Z(4QMe8`Ba*{FHac9Y@&e+K~|eRE}Wl zJraD@wR{tEG>nO#HV{!L`99;hka)#-^2{}n-BHGsnc)YNK1EWxg42RF;ixm88xA{+QYX-^_iLVHO^qZ9Rim!sYB7msccqYwm8|) z?7vpMGLPs{Gj|YsIIziGF(0_)_@oss{5mT4FxZGQQzooda5;d-_dqdm$7_pX-l@GP zrMzGnu*=0=6I{R8InG<0!fKs#^~6tA&*mk~WL;3XZZBCtbPj!0Twl=-hRY?jrx`w@ z*v;*!6!>X@8c(|+&dNvZ{8MObAVtYn8RFYh(gtij#P280j~>|#H}dEC(l8XzdLJG= ziO(L%7B15wDUR@l7a!)jN6#3jaibhR13Wsw$*{%#Rr-rIMKSJX@~H%M15aEXp(EaJWTV5FH_1u@oh6 z{vcn5!^8-Bs)j>!gl*eADkhgBK67M(ftW+`^BW9hu>BaQ86wo#CuQ)JbZwh8TNf<$h>jB@H)mfQKOgr^22wHCow2OIGU zgti8593XH~aEQnED>BcB>4!{93AA-&Qiga3uR5VszC43$pf}u6!PANh7 zpvSAsXQMXpA_D_B9!Ya&{7Wl(}*zZIzj=dIpq{3a|Kc zml1w-$cTxyIlv<1bFA&QQQsFxPSHJvi2TKgO*GM-DNe{ffl_sJuP za^~++X{YU6mf!j7NaM>R_QhZ>Gch@Ys#Q?*K~;O2k54PN1Gx^|Z`WvttPuXc5V-|T z99*2HT`h6>C8Xd$Y$=a|E7^%?D+7Dtyl{Jf(6@DK7r;$?zneVp&Sxznc-uE!8T&9r zYgDh9%>4JPgGj<5W42H-Y(d-Y>`!p%i}$z60#LTe_|dF5ghxqrOeb4~f{}U3<+YVc zTV1SNE+tOkHSuX*LkYcaioa@e_>!yjuBg!$Ex-zgo@6$(U70*XB}l zw>VhbUnIRq-FWs@$!%3=^kih*xaJyE`V*eWtAeO%bUKqLH@tJe(?*wabT=gFB zKl1t5osc@4TEMt_I|~gUCuXic7TkSX1pH2lHp^pqHb!ehGXkUsZ+8r0&rD z3m=tq9OjP}eB;CgqK|gu88FNYvZ)0$2DY( zy*;BX`~mxdI0--!Ss%mDtCx2f&sX4d4_y(}sVKy|%zxQ;b^P~spb9$wzh-F1pZ6o# zCnpmDk)+F-lG}Ufb41o!lh{BB_w?mV=7FDSCnsn41DDBqblQP>d8L7>uOw=CV_I!h za@92!0s6CO)AU)XLX}h(!=zz3OK%*-%uP!F<2|kIm(HOn=Y6qT919{Cl^BZwY8xni zmSWqVq}Kf&w5mQWQ^{rVI=hV2r`fBds=6(RPSyF%o3U(Orn+qD1K>$C%IOw_ctUsPasRkveK;PqDH&ww``0#2S%;FJGL+g-6O$O`&%6&5 zmf%}Qw8$s~Q#uF&&q%9Gsd-R^UPlg#mu(5tS-sigNip+X1z^=2zX7}W>Vju6baw7- zV~}cMU|xsQafK)TEWM$abt-hIw*+;{j}*vbQCTTjWckSKA4a2^AE|T%%A3SY7G!eJ zF{pu9MOGgr-zX1R8k=a26$eM;3h?O918&x#9hP{yW8^yj?oTKvQ_mZQ{sY_}vU^KP zz7$H5MqIc5b-96laK!(Rxzs8r0o@Bxv-c#4w8N#`nUsTp{3(1U>wei)`+xse_fJhL78N zGT7fxvBSsM!{L({1V7v^|yS@p2!$^)SCVD-xd!n45uNl>N;0;5zerGMlUS@N!XmZKLKtd})h} zX~8I~8vPWHY?Cv$N`Mmv_Xftj$&xNTlg6C?%k0^Pv-KXS=s8BeT0c2`~`G@WkAOj=fd)`zLw@Mas zn+Ol>^Vg^YLo6B(9RXRa>4wBD?Zv$CRTvJ%B?kqLFQx1?9@-?@oS1isrce91yImB0 z5O*i}Vg%K{oNiA}8;hz;BKgH#7f-8?Pqy&i^)ZzZ@xB3SWsGjPxj8l8;@n)qtli=H zH~SmP3K1*(UjEhDKTKJHC=0ozXIx^eFDf#xW{ND zmga!>nj1nIw1vYlQn6|&(A0JUTQ4%OXkLWVxaItWRQ7Zk$;F6a<;D; zI1JMj1rQ``Z-cTg*Ygfme#*buHhH%k=2k@;aBegRC;_@Wq~3B|>dlvU-I7daR>Xcd zDXMKOH)?M&w^YJXhGSwuGYa#gIrzpVozbjeGw2d~qumLYI(xzU{L!1V@zSovDX!aB zWo`BfRVoh}fyOzijLxKfnjx-VttsvR0z`SER43){VLue>YBYX6&;7l5HwN?QW=Ett zs?K$9TZ|lO^=u4l9dI2544Dv!;Qq_6Y_4~3l$neHU+RDP&uFu4NUZ2#JTW(=Fv)7; z)(J`>CYydvaY8C!Tr1^GupScwuRDt)1cDvRA)#sxxe~|0CoWl)pN*`a$rAvA&D$Aj&Hb?`S z%X#-(pKFUYp{J3uEvXu~w*Xq?7@VV)f|7s8$u|V_uBm;>9P8O!KDXoPERO%*D6fB{ zZH%CE=iJV6gXEOLAmuGcbjF8z3wwWH1&Le9&Qt7#Ws&QkC)H)C70SV4YjABDfLNW$ zKIq6hz5Wn4k7Lz3@}K@Qs1}Kei0g}7$rm)B%ha-AIi=^)JI|w5R^vG@n{CJwf=*lV zNrB98F1}1vC!w`>J4O_QhptBHvJLlO!8E?vi^!^zi0dW~XsKO?Wr!w8nYo-eyqsmo z6yf1SyY)T*djU)Rnr#QBcWy2{TpG7IR?o>ZX4_82zwRs)$f7Ty%6Ao~-V^fp_SjLN9C1Y+1g@I%t!!h;aPH1P)`tj#waL6-r? zllFpSsek3d%y6a08*UTv*>glE25+JgYHQ)?|2j@?whx6n4s0=xnH2T*`H~ zwhZe0o-#YgwV>z=wU<({$gyVIT=CDtlk4|bLm9ZF!R!!(Alnz;^=sJBIAEcHk8qPu7(g9z{Mn<3 ze3&>n&X1`TH6l*fWwp=^T}O^u{Jz}X-ud5mQ&N+|=K5_vqa@Ld5~Gmk!}6jwe-L+r z7=|Yzj(s{l45gFFfV@t04~l2Q4*5UT5%IS6O5ZPHl3F13iR;>HR5q`&K$mGACxZ!- zB>ejDY3F2|7c*5@Q~MH|PMI^zxY^If%>JJmew>#F2qiSOQ_1ClYXZaD8LO}LGR8RL zb8sq%G|%`yBe=%3D^l``Qyi1x+2m|rK==@43cEE`9kX8eOt!!W0-avWcBaR z^cr1y4ata|0|+D2|Ho*k=7DZON@QuO|GVC>I8}ic6S=a%NSx#-)aZTU{e@m=qJ2ls zxT+`-{w(|(ZWi*LO0*_RD!)R~$GUID8%zBd{nJdwtB2Cv{(k3cZja;p)EzW|)8Bt~ zP1jn3Fwzxn(@|&FJrt(;ngZ&Vcx+F4px8&&gKeMTShojYmEp+rXJ@Yt0V{zz z`E$xb896RT52<_P!w5DvwtdaNe+;kGNCsKtevZ-OolNx%xc?<%6YQ}T`}pOiE9v>o zthR8Zl4^y1WHrjv(gk&a1s(r{C3b_hc_CeIp~R&28O+uQGPDCWsc$Asy4%}*9*_}% z{%4|iGx0U^dV$3|PTv>6=Y%<@r-)Y3AIZwy21i*@XwgiTU=ZwBY85HUOXuTJe)Vz+ zYG7xg)+4{4OMfRGD>p8U!z1tr%w9SHVF*2KEJUgDKqd)Ej3VRU1Y7DvTiI2*Xob@+ zB&Eryup5H4i{#5P%m`Sp*Fbo+8fA2|8Bp>~yXM@=AJ3r?0K!8Sx-z5=*Lp(sKlij$ zb?3^!<3rnS=eQR3a8x55v9um(McV#wBf#GJxX*l+P;T>*?<(Tt zY`I3rHs9LJE!o!W2-GJeyg;}3iayekM-R`X3^J`QbD3IrkVxTFX>GPk+1lW;afi?# zAI|3EuWc0O7c7*>XQEu>{aqK&LC=Bb1W0)J)YF=%{t}5{~*G-)(SCzvII*Mi+b&rj7v^Y0Co5u2ZhKVJAK2+30b^p&QpTLC5>vy zHr(VM=~5vD2c78qF2gkEANlnRwoC(G?Y;v>(!Pkx>zMW02D;#?d;2)=-WytmP~d6p ziQA*YfaCv1K4hEy@$JXG|6c>MS7tc{O^sH>hOODAMki~RpngXH-^JMdn-wx$iNTAq z!P$>77v<^KAR&f<0`3BKGR@4n0EXDp20l?4p4}5El5ga*P~1|^w~vad`*6j;LDxZ% zm&E(2yNgbnhS>Ut6b~=FmQhL0nmJt?+H+>_Oa>a0OZRVwF2ckfj+|MG`34DqV`3ZG zSYKT@T{FT`9}@Y5K4~T?%{anq=6?!3>U<~NMwD}?BbU27-soC)fK*+VQjs%tkTw9m z=Z!7ByyLydRz|Uo^%^{b8+a+U+{`;Fo7jh=vSC1vMIH>lQbX@{fOQV&jME>@H5(}* z`(kUK7@}HA8?dSPMgj|ogf9}0`x(V7Mgl7a#RygzODvltK22<78vmn)u6(mX2A~^z zqK=7a5tt}{l8Jz<2sx(!;dU5t&|Mp#>lhZ-rn;L^`O^+(Qu?LlY5_e=i$$2K+?NxE zQu>6n5medeb5WL1veY6(2$iV~Q9zPqgJ3Ro@2iC@diCZ`EK?Bze8#izj9x7aLBu5P zp%S4U;p-;;wHXykwL42QuBf?zuVxrgKYn>QOB$*vXvwireHgBBQMncr6N3($w#NvT z+bp5beF2xsNZE+OAO_tbFLZa-3U?%Q)km|E=1u%Qzk(%nXgztVM6gkkb>Jl_a-0yP z7bhm(gHe4tMGz)MS80`zLH8M`J`Q_aFg7ZJ|~;Qik(Y+5OAcEly<35Mwrwnfs3F*41-`L8t8o0iphjEu)NtkSle=dJBhn zi=Yw~>&cWqm-L*tl-m_wsqpLDUh0+6s7;^_dyGZzbaB_ z3_Z(aqn@oWbX&v73|h&i1!{Wf8~yf#uLHp9^oMB9cR-9kZgkwg;x*0m>Q$FO&S7WP zq4>im(%7!y=TDq9kz-F?4-cOW&Zb~CRnukp=G8|M=KL5TTHT(NLV6@|0TH1gKuF8Q z)^+V?Huc12W-}P_W+s83r*+y!6eM+qdNX6$Xn>8&7X_yw9=IcLv?kUA<=-Uwg1tnT&?YS^f8- zLY3RPB;!XOK8djQ)&RujOw7F1f2U@?_%K$_$7J`Z8m>9yc1>npr$=ewp`zgSiR8*y zI1vC3@Xq%@Z>sGBVKv%6Qs`!(+UPH*oUR4SVBMAnOR=+5XYi5 zeBQ&C%Bc@(o*=k3s*x-wZDoyLpK12}(yQ0#E9K8Nsljp|ZI6WeS65(nBVXoZtjOYn z_-35-^I7!$mxg1UFI82c?322Ai*Ds_WCQ8f;dIFW+%tYEl7qok znQcRt`!XuGW-$d%cP!XR5|8^3l@ESqm1QN68m%4dCVK8O@*e?7uAijK#hCH_0bDp@zv(ZrN8o$Ppnrjz4V2%%xZ&4dlt9hL+ z)UlB(6i0Aiv0&9>u}o8m-7C~=82a+(3~ds%Io#F&=wZbN%x8*@q=AeoPGF!s`jxA| zo+!O13!0$_c0RO@crUm>q1p~MO&uI64544xbFzHPqr7}_%Q`T;b1 zi${?j#iwmI!KYt9k`IAisgJW_*Obcu*s2OEqq9WrZ$V2{;g8WkrqJ>6Zk|X)| zpU61DUR5^TieVcLlz(jPtr=N_y)Pavm4TGm(FjAiBJo)vB4BWi;#X14uDlrzusl_D za2*^}6_cfLgCI4yA%tlp!Dn$&onOH9{2WzSxP}`qXbOusNE9dRf-pxw40+hQw{hNhb#df=&bS*b^5~Gk(Hun zJ6V!+Cpn*~eIL#0vdYuhR^4CB+`2=pgo{xOiSlx^^x2i_3_hCKP$)GrBeF+872uDd zCCk0sYd%ozwG=dN;hWeDS7jG!_#`19PMWuLt+3V4vw4b?de)nF-7(xDqBQJ z3x?{)Ub;+Q2sTc7>GubFSv57=>8Wu0wdH))lJJsA9_h`1^;skrD*=Hp^sWjSMCUXn zO}G~bm5goZ{kFdj5P#;Iznc4MGMvM8RI?d{oRwJ)#>fodLm=hZss(KYXg;C$p;Nau zyC}ptEcgMov2YC9N&ixWc=g))fJ^n1P zd2gO(@-E;Ti$)hkHda$1J0*@nJWiNU#3J;f$NZ=#i61}$vE|;%ON1_*E#L=5?QM?! zSwN*f?GM!sXg?!~7n`X(TEMS#yexx&@BL95er1eQE869|VG4Hd%z(1yqD>m1>GP#? z7GwB?(@C7{XNVyUqbErpV4@dR+NTfNnDN}Br3)wk4h3gwQnE$8_`_dk7E*N%M{HOR zoyNL7uzxR&0FjQG0X7|QG}K6dK_YO`eb63BTesy%q*_Z z^s40l4T-A^eAUS#hs3|S-orvY-7HliP4A{Xs`$r{V7K433jLoH9f}W!^lRc|uu2vB zV#n7)tzAk00zO$N%kJk7KKp1$U!w}G_(@i(&}W16HT0lG2k>WgCnt}v z%r06HroP1?{TLE_1N&z*-1n+HQof(tHb%ts7E4QkYn3=eU=C1*qb0QYWO#`lHp$B1 z%M8+VA1tl2IH|i1>EV<7^bPUruEG(t(vy~N6F=Ri2I+N(Eug?{qx2*{{p0`-86o`8 zW7A_}Kw5q;lw6k7be;rSLSIuNHA)+e6QxFinkXK~AmBCGHz&R9X{i!v+Ihz@r6?^= zyX$&vdW~qdg8RrPCy$2oY-C(%^CbThrt`40g8po~UPw|x30X;`PGH`4=KUCJhj9Jg zY%}qnas8OB5~U^D>Z-MYf$gmg5NvO4u-ak=z#+W=I|7DET)`E80M|ID8MaXifE+uz zGSfnnT2$6fGfY4b7c$5dT=A!Il1LU=5vT@lZK$)owc*b8)&@8+BpAnT{;>F|NHA}R z>&Gz6`9@b_ML5hg?q{WqdWalbDqfi>!Z9@8iplzCB`=68$dKwxLS2a!VKgKqS{x+H zt(a`Bfb!_BHPl}NnPDPKm)3;H2P#PmXpl03aKI39GkmYkY{BackpuFE+B) z43d`YSzKYLs#22_tWwrP6HR>-b3VIsv8~rVbs&;|_&Z_a$ghh}{+^eW2qc8q-W5dx zqZZq%Zt&60kCw#^qP@Xw8UYfVthi`rwgDG=2MW}{cJNBl?jdxrv8P1$9FjI$vvzYv z71%dqofR8cq6Wzy3@(WxZ}_6o1fo%@b}R+cJsOq3s8!cP!|l;%GlDBUC5kzUK?bYf zcrhJl$-b_KuC{ko!3AmN-kd;MJQ}subr8<#ZRe+_Gq_iigrXa4*zVQ*^6CMI(dk~z zHb6GMxP&4yK>6LPDT7abAT94+OgA7c9_^yaxfk+p;8{50ATsT_a7+`b`bH6NZ zaE=UaQgNJekYGug?N&n!6wU8QBw>v0xu2jNq@t{W7J}g_vX5XK^rGxv8#6{|9|^%F z5JcR=A}V6`6Nw(1Ucx!yqrwiBwekzkwDKR%+BEH1Jgn;)0juYFNWfI!?&;NYy{qjx z5;4edV|&|#=_Ce)2-|Z&TejzVPTO<67c|h3z}){Lo0!unt)89jIp3Q7Kd5r(xv+nU zgcO&&V|z}-i4t4TNEp$h#0de|^K&9a30hIt$^Z1Af+B7Ax?=($WBRbMDoH6r+<$Cxo|Rz)gGm1g-;^xIO1Hu|4O40mf=v+%F&qS!5!H_RtGu z!*xnzBgcLmwf}ozZ406-nE@im+ z8S!I#?nkzVSV-f-@69%0)>LIq(9jDrsYQ>b+2NDR>NG}tb8s#Lw|&iZO2lCeszTl( zx{_!SO{0vafum{GfU-x^x>@B%v080~{EY@1rZlZRTSSxw?qn31Qo5WFzjEi=gId>9AFQLMcv zr7rR(HFaCXrFhAa!fwQ@MFKmzEV1gYjFFNm& zMQCv^I!{H=8yl#}= zfTK#M&@V%p0#UZHyF~&rjBp}t%gMr1e6sr8lUSg2Nq;WE?POT!S`*1&m&_CzM3NW~ zMGmZ);*+0VgY3ggTxeB;C2SQ;_vo7#MlH{wFtI)7VhLQoaY1F%%QsdkIG9Z@m1q(`vt58~dg&#E zqB*@aSEdjf@pA!Jg+>sCgIO_TyR*VqfFCedZcR~?;88dtv`)My^%?q|2)6LaLssg0 zG)@hlXDfgFL!0_8_0iJHr2zB7IXkjb(6BxCf`r#8oV%{;CPk*s&6#G5{A`)?!`94h z>*k!+Dw4M6UQF33=vd3_BMRnTUZ=z|0(?r}uyqo@5WgKB7D$@$9_8UGNq&#=z(A3c z56A0t5dX*9L~Ae8S&OQZsZ0xW!>0!hvhL2b{$&>)wE2xu$tbXl!4V`KnS(NXK@ z_8bhjO)rV6_EksBtvQgK5BIdw$FA9D- z1PCD~!VKG^)~{Bmt?T**p6yXV4?fqf%=;-nRF+wipVPor|i z+8OUrIXSfQJKF-69hHMd&Jc2h@Ti;tv`(Ii^lYHU$cfX+PaTTirA*X3$)Sz9V?j_m z$>+(PHtP1YNEIkiK=c};D1MJ#cK})TXvWF+*uc!E47~G%dK+kj%_d3J5KR>D;HTBf z?;aEa)OGjTGaH>-WI|Nsa$96<3DP;+odp1MZ3hE1x+l!2<+%db$StspLD}z6{Njbm z9gS!M&ff-w{SM7vTp@t-dv3{2`qYx+cjb!?fX{dc5;`tgWICi__u1KyS4yzwcNBpfDnvF)p4#8x zv4u;r3Msoctt-_ziB;AVh12@PbxQobOokN6 zQ8i6K`HzO)!l4qi6Q^arw>0CAUKq@t5`$Ip|E9<(qOM1UNDA@4Av1*V*2$N6GHmKu zvU(e5gq?Ps64gwLupDL;%0w@JWF{;@Gc44^%Cb3~hee44xJ?g(S%i3DjJhu6rSUm= zx=N57EDt=p9dmC2vfXL)_Rysxm@ehj@#%gT+peqPWk-eB+LOd8B2Id{Cy4!kh$}{? zYmr5TkkWFwwA3j(HlR0s}?S|*y)CsvfyjVNF{zu&ln z;!ZFQb?4&ZccqOC+BVLuOAwaP$@&&q^bV3X{vi;BP2XuwpDyh=wOi`C_ABjP(auk+ zV7g0tw9&}}mp#9gp8%X+IEM8??EubC_tdmxtVi#Z(2lt->qZz6C}80{-Rbko2i9Dd zbxQQ;5L{Xr_UI5YP=274v*MCR@2F^Hq(|?p0LsLu5MqGx3u$`v4i8}TP83jf&n2NQ z>(ZYmMyKnpz-@Xtf{7leDCwrO?xscdMXs)^G6K(!c7A$V{=eT+fzS_OMchdD`*z=%SoKjF{U_l2b?>FI0>aqiHN-JNmXl`$N}us~rdJ{IrkR zBXK1G!`(Y@61NFM+WG0dLfM)#HViHSANwAKlk&0u!ZV_9L#>k(SgaP8`iA)C54L*` zvdyF=i{?SnlF=>|qWZX~UfkT9lPC4XJ{d@hOMP8{bMEQLcB>XBi%0Xo0nT3~(lqPQ zJagJH7|iO^qj}tXTb%4EF^D;Z<`|L!t+ew;4WNOo<3-9ysZctCh|dX2b=f?s$A$Z_ zx8?BQMfHTW?0ZxXwPocru;1Nt*0Htz8QG$5j*@(5MuWWoa}ByHE3tjFd)KdsQOl!o zQmq#^m&fU)2N>P+NSGA5+BuiUNkXc^2H?}x@xrp}o>CcVVl>X$&QIrfp}1&hPM^~Y z+ zOJH#rpzfC#1uk35cVgIayvQ*%E^_G;*Fr5@2vZE)7by4|*e-qH)XoENt57r~?_#fj za*1Znt;d1uVZ>02if;z#U1pU^nos^1SyiY@U!>rZi%yt5cWH?=M(0m6?dj4X5kNT$ znNf>O9T27&xMeonrAuQN+Z}t_pW9Z302=!w9*q3%B!;s5x+nDvjQm3cEw}Xp1ZigFtjrfZI z#hwMM=4==8WWf(#I|zmCyZ&A{MbYT&#bL_WF660(wvIzX1xZCnJAcrp5m>#o^TKxT z(!~g<^Qc5d4j1dAsX&dAoMQ^HqS*!j!xI2NFeDg@1%uIuP#C8V6aWi}wuodRN~0{v zQ3@f13^GJyULnBj#4i|xGK`K^Dd+^v+&FW9mk9jfV|hB4>f> zm@u%l>e1jclxKl5d*l}ybKN*dY2}a)T>Jf!N4I`PXLywfG1EDyFC8(SP^ktS$ZvyI z)c3=~OjNe_)b;1bv1aGg$4Od9wKX6RF?3a7QQB2&<}0|l=ZFFO2=#nqLmrOk_mO(k zhlom!!J}3!3r+-_fh?~!&>8rbE}PG{wlStNa1h#fIjDAgFQs5WH#zhp_q@o-E^>EF zOwa3ChVuxJFE_}@JF1+g#_@@91wylO;uhd*u#KlZbWSU9vY(FcW?)HPzv!bL7OY&l z1*zs%eG4l94r&S%`l_ZHvMEYv<5sdkqoBE&%Ap~a7W~1_JJ_0Ke|jBlTVS{8c3z73l1E`aFf+ zH8x?vfepck#h~}|u;w+G>+Q||ozn{P6Rf%|?|!Zz+CiAku;fk4XpB3^wv!r$dB^$~ zL2w*fz3=`8Gwk4$+ z0(h3Uok%+z4XH~EWna+Yf?J`BgoRna6M?Kd0Ik8&U}zH}GMGqy(6sh+piD3q8Zvhj zsJg0I6NeNjdCajIWvliE^wpD$B|86#P0;A_ZbA0>(@2zA4N4i#V9mcq3K))5RQFrvg%*sKA3hG$q51 zDcAqJBoWUrhk5T5^|u84Da71R6}+uwO>0Cs7GA@9`8&z#g3 z6>Osjf9(VrP`w7`5Gom}4R$%6!#GM%%^49OPlaHrKRh%a*kDKtchA--$AadkoQW7YlcYyBH>jK)<+K}Q9YL(NQ&dF&?zRcC~2-b~+Q&7A^FtHBJK_Hr@LK~!p=$cj2gQ&^s| zW_24S>S$~EHr;Eft53I)LyyW+w2F5wJPeug#mF;GNM;6Bc4wqKW{V{I%R2Me)|8A< zt$>qQaS5gwL1AYHg~wPuB3+=D;D6&b_yAQTb4KXP^ArD&kmtSk&Lo_d=%uBT0Ld2} zvHM;2wQ+o?0h)-6L=YT`gM^9~YVfw~$e{(L%QJhQFp?)aW=L6x*kdP$l5mtiNJ92+ z40y>&i&s}RI@JIc>WMmZAJ*LPCO_n_A5IhWo!%rtk1pj3Nl1j#cv8v1<8<>(*vHrW zTg<+LCA{UFQ4!F99DLxg%gZLPsgh@L3dhX7WUNq9O$#lg;dtkYDLWZz`m)H&2ofLW zp&wap@K#|Lgz;y2*FobQPzX$1AY*U37Q^D^xB`8Ub1Vz@$hQl1<%=Yb@llm0ZdEx` z?#fxdoRFxF!qN*To+ZU%Ii!`R_msd`3_JQ=|76o4ZdLz6hK%$rP*Utl-iQds#0Jva zkgIy7IN{z~D+7Zxi52(M4x%zb)9aC8fl*iFByUZ) zQf&Sfi-)RuM>yjdDTi@gwO#)X)#hnWbYaW4^GyU($A>jY~o zbNl6)Rfu;@xy=!70|nqbh6p#)p5yQY2c8IP<;V3$|3DnDJ%_R7sfO3_-mpQxb|a>O%?iOI*M4t#*FO^iz2e>JoF23IITu)Dnll3@(4o zOOj_?>pHi@@uu@)BFVlWXM zUmnV;ncuD3tC(RA<%nAuhot|V0fG5Kuw{-C@K@YsKU2tD?nrVV3#5pF*n31g4vz6v z85`Qa-@;Gts;<90#*B_Lf?U{f8>Q1pbB*x(1@HC@;JnA90eBsZ*Xz0S>;ueyoMkCQ zJ|H=?Y;xWg_FYTnRR~?q6@F*M&~xp?sBTD-*-|pNMj6_3?Wj6n0j6~->b6$iMc(hX-DR}}iUk0>o2LXi3FsD31I4#%fJI01z*-)BxJu7)LjFgJtQKj=s!3-$ z7hJUS8S(6ovcV^p45R6N(G6BG?C1Uiz+=u2HnZH#K7R@5;=I+KRWikmE7I+*-@_cC zHsZC4%Vz8A7F4Xh8=1MZCO5{st>=gt2x3T!-R{ zUOQjHnmtin7a4d$`7B($Oqxub`*WPy^fbAI_-P$bj!~Rt6|1vUHKqy`;Y; z41{w?+a}O`LQw(5rP~j>EFKj`ZEeF|^He;OcwnB>AJpk&_9ik531|WnzV{C;1a97n ze_ZUFHG0KvA-J=NNc_*sW7%A$j6MmyD+gqeh3mEc7^a3}^s$Aw3eT zAgZxut$!C0=>yf>yj&vD{1n);qTzaVWcTKct6J(Xk5c{QoXYqwFlGfoayd_)?+a~h zKfRc`YcN!HSYDkvuv14%R??3W18NsW<*=N_#1bGceEn)!dLXt(dJI8FE}M{Mfb;r} zFsd`Pma@s4P&mrpv8`HaBi?qT6%P6W`l2xoC@K%1gL$CRh#_3fng%{@$V#Ee&f;+p9yJyfpVejXjA679#qbeEV+5MZKp!zgi@Y=~>Jhtd zgS;f9<%YGMbb-2N)nHr>voJ=6_f2Y)1b032G2s>?UqAkZ`5$f7z$8C-dGKiUlNG-x z$|@q_mobR6&K4nK^VA`S10=!spZg-EORon3Ng*@sSILPlvHkw7^Ec z(tXndn5YDv4+d#q1MpwN5gFl*3rmf zKWBId!+AdxTGi${(5b+?w7Jd8!%INGq^ zI*(_W0;_cdv&)1-da9z!ft$(j%lDh6AR5E)7>0#znW~bBNY@RW2?b+%x|*7w z8&@Bfx*Q8M67N0%Nk-B}g(NQJ&_zk-8n&*1!R(+Lu5d|23I&N|FNn_?aL?qDqgf@5 z#@0s$WoMF$Vgg+EcB}S6`AG@rN1!=Lo`Wmk@d^=@LI*=qr!Wh|X?<6nn!;w@0JK?P3g1w})khNN=%M zd2;-m7p$Oy-77}FO4KoyRM9au>B3>-NVgB^cR-)OEVr~AU0T7h@}MkK*(1oQ7sC-6 z(bds^L-^_Q5t9?frL!c#e-eL zfp^0xfp8!K%4GS&y;8bVi=2-k0`vz^*Qcdn2Z+mKX(Guy z95Ar+Z%U(iV&)6?tUC;$YZzrWAHO|!EO{C8d>J=mq{t?PtuXIU0;ec`l0c7MH1d@^ z*l=z7&;HyTVZGGDXkmm+^;`MWgd8Uw!FfVOUj+(Jr%m&vqNt^i<*cidb%mX zX>|S?6HQ80K_mm8H%fb!=ZzK<9ttsl1+5oN>oJFW$>Gdw{9<2k${|=-{n#gZtIV}; z2vuuH&0$Or7lq;TK8!FCL5~qgnCw@wu;TV$jh+1i2n8q_tPd`OrVz!Xgh>4M=s>yf z0b(`RT@~m8o#2Yobu2>ZD>?pmHZh4+2nT^d#zVLW82Q0yESekj(BeZkn2f`-aj*7_%9GW&$e*pMhlne)@J{(6 z^!X2>_f@<2g-id-eC>XmMW^#mf3O} zX#Qn|TY$lJ#F(Og;;mG9l!a`};WjhtFSDyf)+W+IATJAD4wG7gbfawbtMNV-v1-kR zWSG879}{Bkm$*?sD_FcR>+ve&fb3V|iR(PVe9lTc*K5J}lPd0dpR0 z>Wq3P^*3TNVHej%9C&tUb&f*W>cOVWpP`zb1eG009GlxGfD3?2SxRyQZ`?qDei~mOs!*G0N?0e_`fe_&vE`gw(ZO zX$Jc0=o)BGM+dPyy4cTm01QTQa-7EiI(>l}HJpwiU{1 z%P3)ZfXqFzVw3`J4ADHVFXEsVpKaEQXO2c5x{Ud)TCBZ&l88Iu68FZ;yOMvauP!g|Y6NJcRWiIrs$F1dh zpcirB+Q)51!cMKJH`phs$$u2~#Xj=78`vUY%**D{=(HxNU$TQk(NZCwQG%7K9n zG##NrXk2#Rj|1 zrz|c53TNr4J5=kJMMd_V*@;)3ZdY*&FU#_l;%5o74jUwb5fK8sFOk5v2I})kpktyo z26)NQTkrd3KJgG}Ay9O@4kf{udybH&hVX`b#XfzOt)d?ShmZLj@DLdEsW{In|KN5TqM-7!;CmjNgVtl-@rCdu;(*#}RAU z9|L6X8&F}g!D~y~zI4)9)98nx2BoV(!_%cjLVCEo5 zh+|BJF18qtz(V?QDUT#hB@K89<~PW8?^H26tZlYScGDlESpf_n_YX=86cO!ZxCOF0 z6!M{r&kD%2cqoPeZXgPk;I|@8b?vc*xxxX|M1>yK(y5Ir2ffQ%H<-8xFj4csM;xy- z*o0%qebi;^V}Jm$LC^vWq@z5qCN7dD79>HRr7&9*@I~iR`Ot|QBFvzgKpq=-`s9B6 zD-PK6jlI3Sg$66kUb3_^f)rOM*H=2h6`j~qBTy*66yT9()hH+%v>xPXsDe`t@9}wE zag}=ScrL#3xP&7b;i*+4cQiW~crKs|8DqCSFVTcekxe3mksDNw($3wh8E?v!wlZ+{b${v*0m**D z3z%>?)E7MPm6nXJO7~r*bZBTq4@8=p@A|G)JTR2jU>=Mn0s@4f6PZ1_CGKBLxP_;X<~pzqe{6{=@D$WfD= zAI}@PFgtyun4AhTB5WIkbG%9f2GPP%4O6TsL`P|1TXviTHVn#8SEsq3Fq4tKCw)Ri z3h@6k7@u=o{NRj>aF(36y^?eIg}8{K#$N^Z8}(`#G?;1+b<`OYqgmXU$-{;SADt8- z0mB0~JjU>C5ypcC@VGVO$cI6TwL}VryMk(zm(L$V8#Yrm?my0T9jB*cbmK&ZAfeV0&}Yix+ww&m8vgJ3Lp@z?NzVW-MHw1m07q8z6bW)nL~Qf~AU?D( zF}eH5V@0*Ja|bFI70a(tc{AKHfqOFsu=RtJER?p!azh4j%8(tS6PQ8Qps!|73?Df& zYS||tY@i7eW?(RFboL;~H-Lt@^J8onHm>s};r8N+0wHoA>d7b{qnp4a-W*-3s`2zj zR8#52$^l^WHIz~BSn(xxbkQc9LM+P840u`u$8LSl5Ll{nCoTz`KMi5SA3n^jZ}tlm z+s*e?nvKjE;8_*B#`O)EGRCUmx}uX+G!eg0x>m15B*iGQVMJRAFxpS!6-uM`Z)XOA(u{K6x2m70(BXnA^ zm}wYKVeDqR=b4Flm+O)WdBm|g+VF?4dYd(44iafwSNxK!GX6piOUNHUo?-Ad^H}kr zW2f=B=RdnQ#;C0si@M?r1}zK0gaITRYJ5Vbw79_0FH~6NsAv%Wc2Y~1 zT^?1zj}&3Nrz)I(g{|+#1GFvxLn-*U3Ow<{NxUfPwK6l>9(bI( zSMGbV=jetAjSo>#B!)N--xivi>0@x?+T zjkJYtLjm1lfvfdGk)voKQ(fN*i^VSVELTdKUbk+1uS5j&_S&UJ7!Cx@BRT?j=+Oeb z%Wh%pUGCI(Y zH$^#OfK$%WM*GSje4Oey1L(!L;(|`UCRDtw`eu~HxQSQnK9WPlQ;^vn*dMu&5qs5c zQf1C1UuAgx>^WzSS2;#m%DN*&#RZJ$LP^uS-VPX_DG1VbVAzd)NI{N;hK|QUxN!X3 zH=HOLZuK=-sRC!F^ICjDUA=Tfzj(im}!dYtK@AePd$}yajk*P6mP9gK?L% z$C&}ShHF$($`XsDe4uow&=D|bd17*ZnqL=%32K+Z;E7*#FIT`v&Z2kl+d+rI+Vr?J z%sF9wEO|5bMZ5pTbXfyzIG}#(wDLx31G=9idNl8G<_aH{PX$*1^tg zIK&hG4V>n?W$`oLfm~70v$>g0Z`a&F6_DzcB#gltIVm~*Pg$=(50d_TG1LgG+4r!e z-C*W>${NXCj$lO(6u+e=9^Lq4OvzC1Lfca5G>;ny6~-DI;by?u-ujD--9%L()$Y@ueF>_=G#HW$ZhZb{RU=vYT5Pz@_icCa={x&P@W(VIB!zlQ$; zPmiPm{1^b2X{&fc0?!ZlZ(tx%S7V$O8p16mZ?{f`U@=m6lW3m#^!8c^V#JLF9wa0d z(4W|;h=5^lwd)TL&peXJl%Ej(lVJ0~G5tBhkp+iL-tNHNh?8~(@;IR$%xH>XQA3`7 z)Hs2vxXlW6Fb2rExIkBJ0i7C%hGeV3O>_W!WTzOY88qY}H0Q8$gGs0m%!FuB*GJt) zR0C;`N|k-xBp>@29=x4X(7xq3r_WZnh-t7uAjX7rX!N!pPe}K>+CY+zxKR+ilKL?^ z<+al)m>c3n-MQSq;D${5ZJ}kp5JeOe{ZR}uy*iz}V;8Ly`QjqyhMewoQGniI!JCO5 zwA=PUPDLYS&9E=&GmMy7-JlsuT$L-1dhNz-`^MNZ_g6}dw{_Gzam^PRargx?_bhGN zh*5#&Xuh=ehaFs5Yga3>x^E(t^Wna)M{Ajg@>Lo%Xc>Gy(DnHGn+ukHJ|!P$9^AJu zouTHHztD=NR|l zvVoJ*g8b~lo<6AK+S$lyYrOoz@t=E}(^Qy^Ui#A;c7lP&EM&`~l$p*W@68dWQJYf! z6EK3=G$$*_-U&>^7|UcaE`kS|QaOxFUzId|lk# z%|Hb_+V4~*&wj>QH+hj6IBQqC-5SygQ*S&pgDFf$t`#L=qF|om9V%y{OO-3fB|Q9j z|EJTW7-D%5x~)VHQaQf|=4&S@^2k4Vbd6GA_xf#g#>d~j!m;%+ylQO1aW)F7Yhbvx zdY?UsX~2y77Q;_lkywYdFXUKK`*uT4^}?$Jx{mm$>u#4@U+G4*;!i`C-7+|XIUftf z*7$Uc%<8g&O*(lk$h(3woJNvjBI>th2eH56S82sf9bxpFy`nv{TN&g>xGwy*(^xgz7$go;(FYU(BgEaebgYiz`&jkvob>-cwff{4#lMY3v%}2YM1- zR)8qKEe?vHcfN4FQuWXO{ho5N-t>GOuzk{G0^@W+N7W5{dot504Qv;D=$ePG!S$&6 zWwq`JME+}OYAWbU)#?3cyIO-HIQ+7T$%|U3as?L$4Y)`UUgmpuIL4?AHuEiAvV3+QIDhvh=7qj&a8>&Z3C>QLVudWwQp=wm#Ai0a zXNDJR5OBO>Jg{SBRV%fH!LwshhLgQ%Lqk6umY(HnONrXzWni6n8 zADk?=$x|?uFYc$_OG;^x{k2Zvi~pDPPpm-kp6uuj@J^rfw->-P4q#Qm+4Wt09CM*X zNLEsiugKDBV!Zq4>6FM%NpHjn6z#~3<|FU4MSDBJ#a0Y97DS8!7hf!+vJ$^;w({vk#8+(PHX24pz}G5Jrtp=djrj=lDyGuR82a8L47;`p{poyHKx6RgP=h_S0Vw8@r*zVULij@nUI;fMA)s z-dbu{$Yai(ojv&Wsy)tSEzFRz0VhW9V2LV81Msm_^hpJ`^1;nvOvQ%zntau~f zENIMk7w9jZ%>26Nlcv;f-TQ)x^fx!=cmsK-T-wH zg@Q>Kc`M&$rVY_UQ-GJv0B2JTu&QHi;zEscpFPZ;)MQeDg3hB~K$cIigxa!0fUWx_ z7P=DpOd-$%&$hyvUjjAogzckq);gdXDJ^SWIXq500KLErNfBZ=;?kR4jd4WZP3pS9 zJrw0I?My5!*%$ZLb*^?lC9eluV*7L-%T(uPvRWuYH&u?SL-mDE5l=3f<#~bW4PI$~ zj}O8ew>TPo$t0wH^}h6J0<8Eqc-q+bXI-CI=~to=_8nE z$Q_0i@SoKdgrceN%g7Ox+Go$7Q#NXr2lD+WfF6`V{bWP)e(7362#Sr?#Uu0@I2Dk^ zdG4cI@-!r>;{YsTPbp`C#;dGBk^y3s4Z|6-6jx*uAnBf)EL7UB;tASkTHGD;Vsbhm z9_XkLK7^7|K9i!Z-(#4~5DY+!@>WJ3Ql;-Q&}r5tS(CG^s2uXmF1uls@t?KKNf}?h z3g-?8Afe((IPr`8(~UZ#hKuA%Lfhet?mI|-fYB}*E$u-nMrfZJ+S+&I4Pz`F;x5E(I0`4~FH ztA&JtWYB2H(Butq0!CPWL1*A2MtPw}6AP;rBU6A!TmKg3kQs68D|-@!B3;l1%z`F@ zzz${F%}a&R3?{6AT$K){*_h&2lYVO51>}_;nBUNnn{lX}f&nXv%8=f_MgzKnGaa6= z44K;REGuvU0WF+_*sc4FV;(JvkJ&>~P~jjdVyxP4J}&P+y7Ctwq#Xi-y;sXe$)&4> z@1l_hDS#g-iQ&F95ouuweAKR?N99A)?z<0k2lm-fmJQfJUY++N4G4>2@N!=dT3V7> zaA;>WO^km)&k2AEUfXQ44&7m1G30UhJ$ zm=cmA1!_!(DH`wH(*+xJ?Mj5G{oAJ2QFd(79lsN>?7|h}lhqPA6jtGDkIX-5f`o5a z=vh~gtJh6ze}>KyeE=oL zxEf5}`5kW`9p%5@&AgH1R>1a4d#BDXmye0qTAf-+gaI|E3fGmxS*ZbuRXQS=N04Rl zxyTRlg#gBI5i{86OC$1?D;7Qk>aTt149gksj2LKw)y;K944+SqrfMFs0!8u8Cxh$> z_!EnU5WcO`NQ+bbUpB*`;}jkB*#p62wXJOj^rK>Jz@lvzImbg2P=M0m$3;cOu}!hK zBB7l1q@#(zs}FB{PLu8sOe8m*?7l8f*HMCO3muX=niz}>;?MOQ7jej=r=i!>IU!j&Mzdfh9T!%~zNC z>VE0{J?cGcBOrW9TAOfCc z6muSm*l%akZZU)R%#3cr@MbcUB|-79_0nam)Z$^>Abzvo*1gGi(p=S%8)JM0j@?G7 z2H2!aF`&iwEXnmm0r+A0A2021gyJNC;0Caw8mB-u*#+YTT(I>EW1*sZ@h?G^*Z^c2!#l->Y z5bhpZ#%$GYc2FC}b$Xjaym-$?Bb)(lmH8pxV`Q*UuY4}230F(Xn!1(R^T`>RnY2jU z?hxivQTd>xv3qI*vT7}6&ckpq#BS9KhI)7rT8-h5i8m)W(GTwnK4UZzHWAZA^2R2c z{#Df_hMkz}4Qf#~M)1DE9H2NH`;6SHx$F^ecG90lO2-joi3_a!IwFY+IWtT2lNq&O zECVSZv&cyCp@7p#N`kTCjIIY10{O_tCaBEv!0J~Mdac4{%`5XAJF~e$A%>$nwoKvZ ztG;2()_pO0UnE^&sO|1SCqhJjXeqV;eE>s1yuV+bUtHIKp(T$Uq~9bu3N z@X5@I{E?{SMR(p@ii?VP8r3I(&iEk33ZvC9RIPtg_d@Wo)>JD)Teck^i#)5oMR1af z{T!QB;aN#IifNn9(#Ep7?8#BE`Y_1CiM}|8U&q;q%XC~=4|m+{nk|# zZ^%Q_;stGBk_xy$u=WMk{&_%02CCx~>mm;dKg^++SAT%uAjhac!1h!6go^p?`{fqh ztfS?+0#&q4Z0=OY%E%YJRvMSn&VaZ)u9POiCZqyXEvnw%qMwngml%z#`=&vsen~0J zZ~Le)F-^ox|A`VZIS^6CD^?OJAsWD>2-e_+`FN$+AZ__FJ%Ze}l8T{%j(RW&fvN>g zC&t&D=#Z4GRUD+V6E?^paq~&{E?K8!K#nrIpmF#gEOFV_ll`>=Vf7RCEzTk1#4E2H zKYOLjVJRU^l*U6`R^^3osmiogJMm%;-Nrf?a-EuGiLqB{+;pA_46*8{MDQKa(h37_q(TZv zzee*G=E?N-%tq3U0Mw)BXW61vQ_%yiLS%rD`jyFu)x9kwoA936d_Ag*%9$SJl99%2 zm5)Pw7r@PY+7}2>#74=NSo#r8Hp}SUoP(}##qq#uC(TD9!V*;I@In1fNRL;aVz~G` zq$+4UH}h~pQ@$bT_iN}If|C+(YyPHRjjRAD{-3X-efSqO+&&>vOk7WXz6dL=5MS)b zNDJ;6A9e+6z@J!b{w&rE67_pA)FvTIBpx<@;H0G^zQ!S#ikj3#5v8G)3hgC&^nckFueI@C1wPZ$_C40ImWE0JILf59 z?0*wcE;=ySD~pvLO&zLxHZQAqU72d!zGQO})BLNloj(nrB#4Sm`M44b5 zk|fVg*lIdqcC)Pk$l4g;3h-GH968NRv@vC}1!eK&6t^-Xd4RW7)`+3Ay><5`nuz(* zV-{%3MFj`tYG4rchazs>K1q${i=|ueF))IT7Jgr%G%-&57~ww*^VL`YK{`ZEe(VIJ zF%DR?Q7!XclLQ5n2{veYs)LD=jO`uOHX~PEXYpMZly@!P4MB2~{M&W!Ub*I(J zQxI2!mBwhH(6kA)ud^b#BqS3~J!yDr zK{p8;U652%jF`BFlw7o|kNO-hR%s!WWEhcQ9U#pKqVY;GHkt7hMj?$KmJ&_w#8v{0 z?Mes+(Y{NE;;|qheaB(n>eyk4pC_ z)1#O;9%fGvLlDaihG|MJ(f5N7?CHOLfxoV8j=)QXiRrD<(ub{ zn~y3Vk^)eod3q6YgkN2xLsz`S;ctAOnscoZycm|RSeA*JIGS5y@44_8HF$rrbdApl z+JDfdukoiSE9;UvC+#OXT6ZN!wkqccBLopkON&IT(Hfxuzvx!MKqD&(nKfh_Xb5$d zp5pmz-phJ5$9)z**$^kYPM^I`uYRkqw2$z}S%5?;8!_Ecq(CQ%9on2aKq%^=pLU3g zJx(ZaMWhB@*HjBSsJmM}RG5HAq>h|8r>s*7Or%z4?PT)DdMXZOlId%zmK0mVPEZXP z^I_C?#5gusXsiWKNM3eXuk+>i)WjJ5F~0#S2}as_@UU{ZqCslRfFN0gLei-VHPP?E zhtW@cKS#0Q@rg!PntOYUB@O8O^>aK;`&>yx+X)5tfaEgj&Sr|1WSmeoVKuM#5eS% zO`nImhCepUYM(|!j5>f8o`PFe6l`jJ35!xWsX-y(rh-$$1kAFepSK#) zcRHB!=y(cFT{iO>gTU^DYG^#~lO1E#2$G0+8F27xI^+X3s*X7;=u*eN8@Um_8yDET zJ6H{n^Rouw>e!>(Ke`Bzs(A3&<7916M^84}6WDk=Nx~Dv18U8FMI|Vy76Rw{poFwp z!pPVe(ssr57A4E^$9ksdu&Z@2Jl$W@6y1glsX$O7-L4$uO`CFQ#K7}bz0u$*a1+)G z`N+TPx%H3jCv{>ia%22GKi8MI$<*Z17U}NsoGwgy2g>Y&U9D>Fo&~bQAxG|nq*KB7*r$!SJ z*kRzgZwJ=0$o-@%nYwr(tS|)PlkUrVD@V-Nv%wFKB%rN-69V@u3 zVWTAO!5xH90I1AFP-2!U(lUUiRQxt%x(0Uaqu8kA;r-gePl{L`w!rC-u6l?QQ8Nmt z1`QEMB6wIw;u+J9N276#bqplNjoPFZ(1WXo{SyhpVR518a16x$E5M&FvU#C>jS_U zX#AM8u*oXkECg*#7r#}<4}RJ?1~=n7^`>2zjpWCi-#cG98V6W21A}X{U~rv4RbD!c zqk)|f-*@Z&WB6)U3tYCN@hA#8r;&L`eCyHo09^28J2rWeua!WcZ=uL+e8KOtc!`)p zSElRupUp%zLG+5sDXVR8dnmm;1EI*)8J9e1_lC(%&@I3PV8C&}^PuX;$M>R`Yq$u} z>2C!i3tlQmc2f&s&o*wq<5~EdA^A8x-2!jHQ(P6-03^DytP49e$;&xOBACI+`ymHV z!#ucZ1yVgvZB=M$&7p3;#iJeSi`Twxhj2( z!rCAiXF!^!x)9bEBLuK#6)Bl|sD=RI@C*)({m_9$^)oB_Y{4-yy@^Mq)fq!3@u^L!ETs$7hVNFzOVmH<(#4DqC); zTnz;>jENPeymdzzvb)M5x&2YW4F?da%!t=bJ@$=u%in_(hNNpbNnomEo%{u=xg+YC zYViC}I&fQc{=6pWF!SJ_1jopj;p&O`!SE^CKP2^3tk-+7jZrTQx(eP|%6X$174fZX z%53{Ulx7*cG)@zzUmp2+0oQ=%Jg{65>5ULTx})G5O$gzO&LxMay^T3TZ%@Kg#+_}_ zw2W~+^q9bhPVWhup4PpdnS)894*4h4lPBBr+_Vq&NLOl)8MQ#18)d+F?)Efwu(Nde zIE=rsColSer|XBwPEW6ET(}@=Q@eZnHE85zA(;;hPRx*h?{pqVAZ86l37^&R|i5;gTt~1 z3Z;D|p6LD@I2?Vd8hp~8EB%Z>4a~te&g#MRO`ZMwkQ~(S}ko&bHUqOVe9h%6sXPQ9UFC>l zgfEyDdII3!q@QGLt2q)+=+(;g6B7g)yu~yhx-jHmQ)M^C0HO5m=x&It@9iEY<=6@j zS3b!1Huv(?NJ-!s2_l|?@P43%x0jh!a8@@Xk$r)$B(R|4MLqlGl`$NSdxen&WdP$C zm7-N4qeh)*z9G3GRK7WbX;q9IuG?&(%U}+qIip^&fLOs8UiG}s_;AK!>&kt{HH8&l zatO{{;9_s$Uy>6dhE2Izm9m;GUZ4^UHW-etkCJ&zrG_$m7Ze%Oa_j7S409I2TT#gc>2;vm6%YZWDGOckOJPo0T+JvrC%kNjZc^FfCXnU#Mv14#W9Od4A|gpP5N=X3QIk>FA~dRFBOei?s}u?@?vC z+T)1XkrY%nUgf7Y3Tz|=Lqsc{%!a&AoCEboCdemEAC}YY8ZJgQ4i{|HpU^B8Rv3c0 z@PeA*o_tF!19*BGX?oxO+&1r{d~Dbblwe4l(n=rVtH+YuOL+;tz5feH+r(PaL~8M9k3+ejW(eX?dUyLX^?x(<+vtbYy@OVFf{~T z^lF^9FjTMG+FXjKC@{ zKMfAxbHr{WBTw_x!6fv{m>QW;Z}i0rD7*xi1}Daa)uUW>V@Sf2;MZSg>D=TmcPJF0 z)M*FL3AwI%j8;%)-nwgSy#+lqNqm1pMHx(E?=0`T;Gp5m&e6Ao6UodX7ZUy4hZxn< z%R2qOiV6pOVGxa{X6d+wOcxu@u0lczTsi!;F8Kuw(q>AnjDD^^}fo4deizKGwk?bG2&?z6f3$HiQRj^e!F_<16|!Iz)xy26kE9H;q@3G2fAV^C=TAQ_GR^CO~8sR;)=VVMXdq8CX;$johF;8o$6 zy*Uop2N;mSDdYd985cGuGDaXewZyRxtzct*3g)>c=(Du6;}3LthKYjsk_7-7=U$#N zk{GSTtP8jNM02Gga`!fJ@<#DIt3j|>v=MT2joVY@As3?uy zp^EGN4F$&r$MbtplT!9bhXy1QX za7$)W1@t%=u`moojEs;;4smbIDNJ{G5AUmzSSj9J-Uk2hEN4z`;G{H!X9QWG3-xHA0~{o5)@QL8iO4^VvJ-a z(LTIT-ODW`f2hwF1qS%M6HnfMTO5@$ZhQzdY)vWYeEQ?muNeHx4R&D;zHYhNZ;&9U zm~_#D1rr+61|wzr)DCFCKs3T3F)>9mEMqh7Ue)l8jez61v)69rohsfk-a>px`G~>* z_dRGYCUkHqi+@)6UTBb1V*V6m%<>GiH4Fni>Z>Z}WGo3f7`jltV!EcuswqSdfTC{{k-P{ON5<9ECdMfsKa-iI+Kr%s448-0v7NMxi=e z#TjrER^g(L@Xg5=SP?dlg+R(AHJ>JXE0jg_C?Ho7@g6==Yb=)Mn^Uz8scEutGRH+Q-r&UMUOx~2%ZNIEGpVg@{b%PN zN+-(J&lxr)!gPT_6Qt`lI7eXviG@N}gu(F~UX?{$^N9upn6^nAe_!I8{@VB4C=#_S z_1H7GRbVKC^mK3zUg7WtO>aOgWhX<}*c$-~iEj6b+AWs-SHq=5Z*3Mxc?G+<5~ z(*78{?|`3Ll&u2-H=J0JFz!XJM&&{V+iu`YxLO2nt-w7Q@aPv?BL|A{W#Sz%DX-$J z^tLW#7;Uiix2j=SIYnBgC;8RBe|`e;ku1*)pzVndAG$}7MuTyc?x+ugt}(X0*l|o* z9ez$SmDa}E{Q`ep^cpP4BWI0lrzVp5?ZlJcJsLXpB62k>`yxQNKsYyLDS)+b8R73e zwm`xNhkyPwAPyE&Di+9n2Yl%YMoSiRlb*XjtkmL=!R{{wC}g~ z1Is|(4x~Hk6eVfs4i-(v_ z_30xX-UpFTJs*~>3>;Z78xDmzjFl3PrLJrHnvOj9(?!Oo=7|dtq28u%;L9rq{It zT@KHx3ZoDGLOkbvG34gbGm;3GkMqS#2(9X(MC^%KC3F4_zNI76WLmtdk}#3>1%DDO zWVJ{L5kJC05k5kEKTio}Pe@~FV139l77+mD1?m_azk16zd07y?QDxUOX>K0}CIoNTv4l@&T4(o(9D zeISH6VH2Y0;op$X?jd2S!=SufV=Ul=Dyf3JZ-W}))|)w?)Kw*;{~j}FpSP2JAuSN`jfD){C~#Rw2Y;AQX$ z=^rG=b47s-)9XRRbbmx}l4md!Fyyx50^jawc;gZXt&iV|1)23r!8RuRDdRa-qpK;y zfZ|vNaXv15S&3lbgRv%JMBI$9xDu_bvG11W2jD-5QzLe8ZfK9EBRZ2hww9+PL#Zlc z12y@GgDrnhnnzYG&QtpkP?UaI8f(T{Da^nx{JMnI?-7-;YY4&4qx82Leo2JE$2#`D z0V3P;Zqswb5&RgtbH?aZa_9}~TDQ}#98)5LGrFd&C{gna;T*3aXtX(gy!(9)&?ZSR ze1LjPrx_3L#o&Vm$*QKioa_%v_*x%(F2_NuBaMQ*Ug?57oX?}^SGyt;MgLDxz zMzu~Ys7k;U@fd76c)!TEVKnNCemHlc3}_vWRuJ;ICS#ld0M5K_b!MTx3yUV`1&MsL z4`Y&#Nv4>68h3ogm63ozsfZZwe3-m_y7f^)ENL9RPRpLMh(qVkqyt#D z$BZ5^hyZZ0iE!a_3`&wCE2tIL(9#QInuA!b82QLh`_lI-WVPF%?nJFIv0meVVc+?c zfOY+j1v>|=>-p}xn%tq@h(uUql>dl7$y0Xf$;Alr*c$-BlV?3CP9ETf92x>0Wsq2+ z2zVDv(>M>ih?zN3J0~GWtT*>ebP$Kbh;PwS=a3vANfYF}I0{k(Gw`zFpW7@<30x=| z=BEj~OV9aOkIq*Z;0=f)KBMBniC}2I?C;N;fa&Edgf}xh92a&f*52u1(W`6xxHw5e zPbSnS8mbe9Q5(QKeDh@r4QGtctPMt;qgY98rRHVOnf6G>Rp=yoNWhHmuiggvs=WMy zF$&fjQBzkAJg~-kI>(@YLlU`VUG`%*%B`tu#@wc=L{@4VQ~-vz^b~T?xjGHa5vXK( z-1&5-`)KRM<#723&<&F6GAM!#ZKw#-Lx2SMiI%DlESxbAe|qoIBgF-#_SV0>L8pvu zb;0_c#-5x+hLzp%p+sg-w|GdQL6UX#ki`__%S}9!hG_Y?6O}4MFX5CaVjO%F6(E(M zVeoS2vXcTh9@Q@Inm%@57}B+Z?3KoQhbp&}P;jnjZ>NGB-iQlp>%R8MMhy_j{RIbe zdzdypSi6Uo>i;Sjo%cwVD$g?&5EW-u1WT}<&Nid_{!3{&PNSVdj%;46R53Ptrgdy2 znC2T5FYI2-w##x`#b};^lE!Pp2Q=T4tnTKp90|^lj6g+x&4i-fCCw<&jk3(S3u3hA zp$ItThz@82Y1U#}KxR(CNbg(YP?VZU$7@S75wR!o@K}BUaGtFDWjWbeQ-9BD6VnJJ zJ`{Io&=lK2W=MrJVbN|_Zj&Iwb`Fl4goL@+d;(&?^9JNuV6JEGr+dOBdO^aIi;w)< zNu2H9o{!5hbqXr0A z#9#vMJ%-XC3jXe+>>!^^I#+Ue>W|Y!(EFgMDuaIm8)7`A*ge6%w#hL5yOXvJV<4D5&@MDEvY*N@gQxSfC@Zdo{Zv;b8sw1v1?2hOTEi>1EaBinHE z(2EY+9!BYaJnn*Fka#3jpVP-aBaLjO9*0I?@%IKtW;fp4gwO_(&igj}J$;p*sN4iP_u0bEK9+B&2_)bT+sqWs=M zK3ycgPu)+A$hERlp&IM>_|WzHI<0Kmc5J2dH-2XeA{$4>gkxJ)6Dj07x~d*EY8=C% zx=*KiJ!1CF?IP(zJbx3NC=GS5zMl6dGCd?3qg@p?0rsw9n652gZz_((;pCP^(XV-v zf}YhdC{1GyD0|Q2F5$`$dG7_zE*%o=zNB$WT(`0Bc6=spzQME@oA({31^_PUoTPYT zV+ap&n0LdYY$!ADGP;-d$?xJRSSH+7VOhJ#D%WoPfIfNsd7t@ym2pnqpo?6u4I{Ha zBBjIeAmF$a`3@AtNG|EfT%ru|$Zw8UH26oo*>H3H{29T${;yRqF^214FA@^a1Wd_% zY1CH6P)u(jtLzG_PZS#qy1BbuGXP#&2K}A@KG-pVN^J*}iUHjF4~duL?BUWA5VH3M z(=8#`e8e;T31`wQ+J{2RZ2GOjFd(IdZPg{2m|1YtKnS2W$^E&@E92q0 zl!Ns=m! z;9Ojf(V2)^WJr|KO6@pw1;gW4Z_scY9WlWiMH37q(5q4ZOwFD0J|4G`Iubk(z%!%4 zqqf?JkpR(b2EwdH;1;uTlOWHU4vYuJHF8^K2~V13y@@zfj#0Lu;xV!qnx)GCA(>cX z{*m54NLa=w{X|J)@kXIouf7?l75zVqP|k<%*uhZ40hV8Iz zBJq#3ajW-AzO5LBxCP&Zawbc^4lG!~;Jd0uzloe^LiCw2QLdWMcDCxh@H zH%mL(+?OWi_=K1R@liL1nGRn@>e%3)$^ju0>^H7fMM957AQV>?7|*CRJA~>1WpUVv z540O_^I#sgr(5K7JXTDUtEtkKRm5WtFn1`JK}HR33?}Gf^a!L-!5$q9{*^&PJm=SN zpnytgR}9Y5#jvc4PgupjS18b&<`yuunN?B$0@z4;(w!yrx>5f>&C(ljq( zcnoT`3@UEdQ=nSuQ1}=aF`-#4Gg!5zKqga=(&?anvES5Q)Ky?E7nSq zq4|JvSLtS2>#;V?F9o%t?ZmTx!^D6X!lb+ID-34shJw;bs>hLt7%_;jl)4LTlaO1yEi`jQvoBdB0!JR{$gQxW|L zv`SJMol9uKRRV{6tk(TUz?DeJuuzh6q(O+W(P;@B4eDga3-J=)(Hb z=M05B5|5xzJkp=HLdcOpPnhTkC75AXg&GQ9HK5V)_}7p0`S{_G(@2A!xduj~itsaR zt&pNp3!Nbz2z~wILS6KgQoZkqG3FjQ8$(w?oCN?y2_O2wwcOy%2hz;h9iBw{#?|ei z{I%btI930lqr%t}#2Vn=K|~ptICt^)H;0A8`RcL(fi*KN7_~7bo@D>y0s_QX$Vsdr z$DyJsL(xZ=T`jeXa|jvM9}VLOacP?V)FL|Mk?60#2S2hyTnMj)0K;4eq1A7uIeX|b z7LeT>Qgto)%y(Z3d83?V9h#v(Kb#)!ILslVPnTFUT=Chi)`p>?1%<^wSX0oje*voW zw6DYs>fD+-JwZ|4O5f#Z5D*%w8t`Yhc09=Kxko^Vx*MynYdk9e+nv|NX1r~5p;CFPvC;+7B zo2eJqs$zEFDb(O7-!P8`d1<5WZbYxu`*x`H67|$$e0G3#!-Z`$8VsB9t_agHVOY1h z20mIlNhB-LFEIn|VGKtTI6p3{u%BCl|IuGI+GS_~ za^ClMLpQ3kp73aPgGV1ePlRt@oW1swN(WJsd*Dt~)i$l5c*B(bo0>zzGwGI?S4o*^ zDef{DcTlr79#M;~Xb@)B*jC(S?y$dC*B19~+0=^5^0;#cD}eM)WJ?7fLk;4OY$MfD zqX6=3m_&^$`?P8f`;<9oOS7Crd$Dmh35LSpFH2~hqp=3Q)S!KhOR*kn^RmmJJz1+b z<1l;ykc$`4nXTt|RiVIA9ou*)Ib4Ln?n;AaJHi z+1pO4hUi~=0^lGXvZ9F{1@2>XZ_rnF!i;->rcD|oHjR~4oGgz#ob3-q3Ivxk z*Fo~+tNm?a!KA}?Nlj@5;C0>c>Z*Kqx*C#oxs7UibJ#qg4yGua*X=O5+88DNJOT-Z zq^wWUh&c557{Q?+X__%Qf<(eQ8cF_rb+p&WHl>-YF&Pg{K2#5gGiFM;`8$WXpw31> z1@!(~JI8<too8>1q+_bf+1@z&RK`5$_s))`U}_8B{k$JzmP1zV}+wmGNngAf2%W=66^=MUiVF zHdGTw{ZzQ!-jDypwM+muiA_JOxoLd5l$q*ff~hUkHJD#f&SlVK|D59^ zXlg3Q$$p@_dqO&&Ea*{@*fJ<)$cSgh3K@;?v(K8HQ!E{>TsuwiNT>=h2OGzQwYm;E zTK`CDjH!ah0(p6I!vs!2IUj)1G1X3Gd^=6vWbkDx_>6`HqrIYJZPpH_|Hy{`V12W!{R^SRdJNWcyyn=N zwdqZ*l8Ou&=~C=2McVjCY>&7QY|qWjdO*Sb@r?_@ZF(w^U97%WU-AEWou^6 zGUO%}JdkZ8(r>}71uN=8;fR46>xCzjeu@wm5vz8K+#1fv)=$0t!v@)Ed}%(`ceF!{ zRV>Y&Rdb!TN@@5|YgTBq0&A0rU>s=*JYWoRI_lnv^r>zfT(A ztN{`TL~6v{WRcSui>Z7Pr(Se=#y$O?+(r@Dr2LA!G*dL%j;tjF1Q7&OB%9&d9e-Te zw%V@oMvLv#;32U<{)00TI2Y6ecyY?Dnp;cq455CHDrLpQ0xbUOMPB&KnUW%lOEd^(}qm~g)fMnKGhB# zqcozaLduF!Vap|oIJVs+!e<@Xlu=d&Q^aa;2|g#QrXnLL1DS#__`x zb>Ea%dbMweY?q?uVd@R~w)3KK@o+cM@xiT}-Ot^*6hE_iibL9uTaQB&_?ZAC{yzxd zb3#DjEOGB|6{Jd-mkGc&IVl2O#2VvYbj|St-gb)zL^=LctSLm9VEdo$B_2#Rwg$j8 z1EUOv{|xr^Tpe_EDEYjwTR92EgZ^l0nSMPjl3 z;UO=|<1;#);%N-v498;y%6M;r>Bc9SKs*w?(}^v{%;pnBe_mw3@XZ>{ieR5*jV7H2 zskCP|7?toTnjY=5n?z7Qk_b9HMK6rdkOP0QcK10~ekx-BigyU+lh;dK6pfv(5 z;FNPevsw0z=aT7rvLgpe7_UET2yZg-Wkp;`=y~Q3dEm*LJEN^4QTMLuSiY*NceF9x zQpDq2r=n{=INfv=uA|x8&>zBnt7zbZa{NDM?Tq}3&+DAwWNCfCU_ncs5OP?}@Hm+_ zIiI#BY|851YE;?6wM)-S>J_p~I|=GYDcg&C#_M8tWZ{QGn$a*s8ZEUSYXF>iT+;jq!-W?+KP;zIBA(N z8N%Q&{L<>!CJ1m!W0H||Z@fL=-JrBtbsIrFZM=~*>`5cg8ST(Wym@be8Gsmr{5XVi zpEF5P2X=j2_pRNeQlX{7L$u+FzBFt)@<1OM1zoB|xsX88IYef}iZT!*b08$wZ9iI> zFW=*9htOgeF%2O?kB(U}CSz$13xkO#ls4TWcpH*5c_cx|d=!IH2t-h?JP`Gja%0FS zuIP#L{1-&9qQDx%#MO)fq|zSw0hx&6jSb#IL1av`y8akp<Z1u=+t2M{(<@do-DP?PQ_)5QLXk z#_bg_iv?dCaw!d{Zac&_(p`|-Kbm4b*u6@cYUbWX7CX_1=gphJTd>kNw zl(7g(2(ED={#JJ!W_j>zF)sHpYcpoYB^bacP3M>v#!w-Zwbm=^K^k80#h*(-aJId^cOG+go*UuY!LH{d#po+owj9Fh40U&?*hneV+(m$b`9fNYFNwusYa+zsmFegk)pXLeq%3#I*$ABjmdVCVQ$`f9}nM?>>V%bQfh`#hY78d zAN*qjUl<_v_g-QZVj)bT*#m!G+c1QmLK6t(%3*Nw`2qhC`UqHRj0~OK#%^4)aNhWg znVxG4GG~t>=z9#-{0vf%fuKosIy6`+Z}9*NIamlTc|fxgd1Fu*g!{jz=WupUbQNZB zFC4kW0R+nV+C~wLWfDx;#OlpYw$alfr2AQ(|J()63F9yf_;oRxlcJm{FG`pH}I3)wV`L9pobfUYlfPk z^Qd5rC?)|+l9Ah7X;XUVq*YPJ@+6daS5(RVoF?s0=@pvsnF-JN-+?8TNBzScyffi4 zPv91l1ZZ_wHS9Yo(zrb|GR<5*oW_IMKDHe^5>@bXkooH1w6y<*o%EkKeHn!yE(bSK z4m06!`mquy4uG0iyl}W5^_j2lE@%xN}otp)7v2hXfi==tqz&a!HD7>OisnEw` zd<;DV-mLv*V`vNvQ(=%drFpWs9QffU>^yotYfDE!XPl;CxKHFvA1H&0sQ8x`2y%zB z?`5Ft@-Qsu*-@hRQt|jHZ3%1Kw?Lx!!6OW?fKBHyfLF&& zkAJBIY_%^%P#~yKNg>SizR);9d0du8zTJG}+o<<74RY50lcQ-DIw01RJYnA>4#<{3 zGkR23U{ExyEU9TV6cn)oZ7C3%Ee}PzXSgw5Ev zP8anB`zSIIFj`Gx_HqE~Xbh2eEK-eP(7BT39<5wgHkx(D7Bn#|6w7+o(djoMVE+xe z{Ljgq6S6vTq@P&72mX}19Y0u-Pe&dBushlhCc!8Xeb_bjEFE`BVDvyh_;(~%8Fdy$ zkRUZ;1it@K0rfdxuxW3A?YsT{0Mv*Ix&eA<^7VmAYFayRFMwMr>>vaT>IZ&RN%kR6 z5D;l4bq|Nm=q7y2r0G(;g}qoE`(X1Xkm1aHcXyeH7w(ELoBi6Fdp(*i0PF7F1t#$Q z-e6e|RZFX-%{2>YY4|q&tZ-&vvb?m_WI5q=zmu_GlOaa>zYRH7D?jn;1CQ^p*<7 zQ(}RtPSX@C@}_VPQ>@4YL>{_JiaYif{U(Qs8nFu3Zr{4|LT`Q+O*Q8o3^Zs8xydX; zcS%%CQc(60vlNue?!+1AU!!JsEcPurp`T2z>EYP|HN(KcCeg}*u8Un^)6TYV1qlf& zkrcMCMr7A zap$@rgAvxjJaeLm!(sbYoddo3S-3A0g}anxwpB+P$*#a+0h(vet-3BfndVWY&xlmw zu6kqIJ{wv59vwp^IHO=nonKpxNEC*t<|IO4@78o+wiS6&vl%7L<9a)Tc+sn3>qBr&_q!syXP%^p1cY-wSX- z3VQPcnTFIq7d6f5lxCNihR8se&Qe(cne@1@W32fK0d&`O5p3DCL;b2oV9i-BMO=j# zM;z*2J+K0rR_<9Y(-o(_x~#il1TxEn?n> zboyoM%W;xG%ui`(k(et9Y*k8hwhNFC8R*(HKuZS%n(a|WcUsKQmF|Jnbq@&H4qZ7| z0}y=Sv>m#F`N@BRs{lAg*n2)XHtlQ|B0oqkNVDsj2PjYqz4@_(dVsQj*tv&!lVIl; z`aC+7YB3*$=66z+5{2A1_Na8m@7YqR>w5a;&|TS2rU$?)+D6X9&jB&a*hP9M#K2?I zagW|y*Xamj) z!iXH$FsaTdE0$w^vG^QpTe}!|_-@k%~8d+Eu}fSts&P#TzH<6e*452lkAle9XaV zv65Fk0=!r$l<3WW zXBzfjG_wBTbV>X`DR;kPd>~S$B0y=YsQ$z+M8>~EhW!*sz|e+9)WG!YIFpng;91*s*Tpk2jypoC2d;{ zz!n9R6wM)Qv`$1%L2X-=sclPRB3okSK#OeSfq}No2M5|VHVm|F4InuIAJ`__E{L*g z(oSJE+N6_offmU}1#H{MfGzJy9UHCF@M$s|t&{LoxYD}WXq~RK?xLkGY1`@mTX)al zO6%@u&(=oklmk=SM)dRs*orM_+l0Wj4TlLC1>`WYeQiL;_Vt0TO-s;%KcHqyFik2d zxv^4V-$RRHJV7f8^=!?>CJ?u;4xHG&Hf?dbLPJy6_SNZyA;Tpp_6c{%_gQq^8`$^I zc0_aMaaT_6qV>g2Y3oiYcIsiWUo7B>`_AiB;Fup6ZG~fQoY>yGu>!b;oqx>d9m1J@ z9UrBNH&Z17Z(t;u&jaPixnkWn+PeHYq|8)h9ciDt6!W-m?8G7v1RNJD=S*MCn=7)I zP6L|XXXdL*nxmimMod^wtG&HXicRs&-uBO)Pam0hX>UIk(|@e%=o3B$0NLI%;E$kS zJ?+EW`=sLDcFo&Q>0?s-tkm%bkL!h4Pt$Q>UW}cS%=r8;&h+c}yb3wf4_n_8LHyiI zmGyC6uIyaIb(u?cb1%DYGAsGIfsrbPYl;$UD6DK8Jse&@tfy%>c78TKKZG-VGXV5J z3%@?EBF^+(cL}r|x=TCx36Od#{?V;E>e(#ZgkM6e3 zl_zMTmtXpia`FVzyRcEfSp2s(Z&FyMn$zg#cP9|>C!nHe%dj_*64ukbsWi_&F=zTj zQ1a756=2*82U{AyFH;uss1z%`i`oT2`F%K2^3p2VK1}4z$y<#!BzZy7J$>R4_$>RT2$>J|jMYDdLqW49C6@T#=Ag85b+ViZ7RsvmEl9kTm~Tk(dqb*Y%wdc2k|? zh_A!SuT*uU3QbH_ztCmAsFKwm_BI8B*=%TEY+c=;z1adq<`)jmhW2^jOy7PQM=-l+ zRp5a748yEtIIej|{2HJh;MV!0%1n)-%2S>G5#0*SFRYHm-)q)8B~}ZExjeRJ?T@B}yqPr-aX%_`=>hW^P7>>Rw7=Izt8tv9?EQFAu|bDe`<>Ipjs zKhsKkXUAFtV2mr_aRgiD_8P}6}u^l7cv8EqT_K+v&6xP?M9U1*zYdcIjP!~ z$iBotQ)$I-a;hu5x{k_3+zZ>eI#~AR_r>{a=jtGX1on{%oYQ7nAnPr9zyf59^B-O2 zPtLSW%w|f$vt5Z|tfb(mBKu6iu8W;I!2v9flj^N*1zZ1woaxWa^oMJ~rW(s+o5eir zoYW&{>P{rpnk6B$aZ%TDu7Y%?|5Np$`wcx(KIDjLzYPxgo1lPzTQg|M_Eq$F`nnEE zkWKr#3az+=u)iM>(|2e5yeoAE^jsk{R@8M=l-s#p0TLHr*}i5lwSB#S#|12GU#I5i zP!*%<4kdDXV7^{JwtanK0=~exl}vXi(HpI9G^NhJU~bdCK0#KIM(rk23tsr7f<12; zURi1d(RJjK!J8AcP5Ri2dC(vC|d?>dH+BUgMn6i#Cwt!XZ zdalNH=!`nOIod-GzxnAm)w-6Gu^mbSs7|;YN~1+`JCsII54b%_$=G84Ash$*mjTk( zRWqixO=uRCfiVbd+o()apI@7bNxj_5*;2XQB0u@f>L2;3jL2_9!?Tq-%jzA_-B@We z_~8d^+r;Ac0=7KWy3R>~k7w)qq}9+`Wu*lc0kNGsY?@wM9KnQELLZH(uC*CTn>~YE zA;q-C;(szSqu1tQp2&!pcbift5i+Q4^C%6-09zv|Eare018tj zVun&8wrR5(%8Hy#(=M0}MFsy89f55dlluk*;0J8md{piWbmC=I^K5-zMQzjWq}rWu zQUl9_P1A8JHeJ&!j$pzh(^*hi!Ou;*(+C9;i$={4nW&_d1rV?S-n!1&+q64h0-$J6 z$OHE3HV@y>pB|1whtLv&=$Ymdlt6udnu-INC#Y z1QwDqMytBsTuwiFGuM(5BkWvGS>mo7I-~0+(?oHsw89%hz~cnS?Q7Kl+gB` z0T4xmcWy!8V}K1LV^W<{5!!ryC};Y1nEY5wR7HK#Z0^DUH`sJQ9uTyBt#aGGJ}cN& z6s*{^)APy}f-<*h9I&hzJBx{`&Yr`y>6_UB%#WWRwy#pC+gB?xAP*@$tmteh6Dvx# zA0t?cQbyb0?rbAanY>!OCYg&>XHOhb#)@lGwk-K+@8RgOX=l@5DWU-pUfb6xE^J@1 zfHu%wg0&(jOBEI#rkZmpxrJ^Lc%p@gx*ac^2)+5e1@Gmc+Fwn$M%-~j8_{&yQCS5w zoisSQauU{cJdja4dh-t(5F)YO#}?BrY1>Ftd!nFF@B>Pj+P2jV>=nPTDwg#FwryqW zuUVgp0r`i>C{KF8whhab{BH#7%YL-)ReT^)ZdTKTsvFTO{vIi@;`@|rckwSjJp`&LnyC|G_cD0Xo1Ye9QlBr>q}{oe zgkXe?gfp%-+XX#lrHg6%TpD0toS!~2Ito?UN6;l@j5ZA4cJNRHk+v9m)&!fpIr!-l zWm_yuMRT2lCz$H-$g*jl6)NrYtC5U_!6I5Ur~^kvD;n!*no22#Qo?$geqzGk~2ORbWEbsvs2}&q|AU_=^9np5tboUZUUGVdqOiDGD z7}rw`z4-;GOT$G0PX=3?9?HUI&4-Qs21b!3crGrXL;@4rb}ylH#mNC9ymO9Sh5hO@ za^D%Yb2Ty1o4-of*L55;N%rP{K~}=(i~Kw1@-6--QFhI#3m&vz&)31Xm#?8IE$TWT z+Ri1x?+2wFQaO8KQ6P$PuZf|A*ffhK_4!6bYYt4hjBpW8WRVSJf6>CG)ag5>Zv)+T zgJ-+4R4`f&U<>(w3a$8OOx~e6WVDdqtKLyDD}p(rp;datV9w&P+PRwGz{1@2ltAtq z`^Y~`>hoh5%$GQ2buI}6Fv7s=kphA7pwEV)g zfjO@qYMZX>0>I@YM2Y4aM`xkPg0`zHWBWP-ZC|gLZC_;_+t(1HZ2AHP<{b7>2wINH zEmnjq;Qna&`MEg3-1EM?8bf0TdtL{?eyE7g!CKhq0Y@;7mS!}b*bKSNI`xO@e`jBQ045Ag%GZAJi4 z5=M)Ivh6DeJ8buzj}BU{s3u1E_#>!oJNBGb?6UZcnC2%^n*ZqNE(Nu1Y1JW9P}}Ba ziU%95)36EHwh@Uf0k&;IDQw&ml{i!iYTJenY}?QrXxq{lXxr9Y8EOGEW1wv-V`|%| zOm99xuR#o!HOwh#TU9vHa=B0@q@kXgB5=&#^gG{0T(+DDXY=G zW~L6bZDZ1+cN#01kn*d66uIKt+xlwd1Tt<y_Lj3VNf(V?{nycNAN;3#;xZxNJ3|&lKwOTQt{N zt?H}ze$`m8mS;pHTDdxrZGhx=SXCoB6agU!1j#YxQyq&RIK`cdYUr~H`w`Wku_bL= zThXW4Xq}3tbYLI`92>2ZN6}$1fNdKSRQyj+TFS(vTs6E<1J=6{X&sjQ!~nK!W)8G% zY=G_AjP~2k7HH3EwBKgN#3cx9X}2G+ZBz562p-u!B3MuNs;JNRDIh;h3xGuf6^OqF zb^^}y(U?4&w^e%rWt!<2_I}J@>NP{b+;*1E7!7pPs#H)T09C38uz*#8LFyOQz47Cy zuT(JIo>KB_k>dHzeR}nEU5B(rvuRed{vo6^>&_fbuq z^;@y?2c>Rkf0spY9ExJV)%r@us};&!YC1X_VV}@q&HJ>&2Ne7Gp73O>_)d$KX5wWR zCiS`WDq8x;%dvP_Css=9IyTV_#4)=~>T_uZXeL7KYG3M@_62H2%}TcFMxuO4~ z<~#Q*SkG3d)MCnaMs9K{0;rW;on}B(xRqO-&c&nk!FIGDO5J!cwB0}U=Vxz6cu;fc`{FPd3+KXjA4Cvx8;FNCJl zS>GW7%jU|m1q#Xt*d~eGr8(Zkn5VTAe)kbg)gIoJgcZVuN^G(9Cn`z_JhEnN6iPPj z#KIL361uj;*uJt*!7ic6mMyl5ty`k13Lw+cwP`0VCeXRc;e?<~#lqb7qmeC8J7%FO zxz}Y7>#MfDY1VgaeTk&-3!MbDNJ1ziAQX}jaDEf0O3#Q?A`5Sa%Lg1eX4Yu{aIp_V zU&qBiM@&fm7*!v99?d7V1S4sz{xdZq#Cph&;>gso&S!1$Y?0I+^D>Qx zWV>85rhV(W4g{_ZdO>LGRiE{UiIk{PiAGN@lWPNG5Zcyvgvhat+$2}~ZUBLo(3~_) zwo9oE?F%+k_NHVTQo5!1V;#I^7h~`EZJNhcCHIZZjA`Gxu9MC!oZ^y}i0wYi?;QhA=2zMagu7B zACR0Y${K{WNi91HIB3s`N-`EQ5wmEU#3El>`AS0l5Mtvc~YU?7A&g~oeR zYO~Uj#&#>=4_P(lY}vFE+Z?9b^L5DYg+qP{q=*%tc9PcL!`emHUVs~VHE&zw_ea6#04j+H&jCar_cyO+dFlLcA1r`7gxKqBPAmJFwdU5>e&X2-gJtW&@4;=hG*r3#5jPf{LA}@QKKzTW3QGi<@91H{8iWT1%Wd5)9 z?Kyio*Az2BXzO#|o+X7iPkA4 zYjgt^u(gsUN}$95g$qgo;?o)>?tx40O@aU{6`Oh?KIT{L&iEKDx}=2NjlO zO>*}=g*odaD|RlzVv7-WQl;rKCcY!N$xN1&$&9o97|5NnI+t7<;Z>%iGqR8F>tI)L zH?+zF+=+De9bw5Y*p!3TOB!vFczcR;5{s2QI9skO8jM!%z9ZHOq@jJUB0D1+ib_zM zY@!m>CY7iJwaFuupf+hlC8$jfsRXr2AeEpt=_9C39^I-E+EDOTaL7MAhS-E0^B>?c zvyMmZTY|GBY_#}&;0eu2HZ-(LcNcY>E2O)R3e8!+mC!r{Xv*qbvlAoi?mL38zAt=9 zwjj+jPNW~ukYkW_Vmq<&=Sp&S2Dd(Fv1ps*?WvQyi#i4v2hVmlXN62*1xbyF^g}4x z3h@{$fFU@)K9X2~-O#>t%8o0T+mWWRyt(@6lN=yGu_u7DeVrhP?Y$}Q_H}|f+j~WC9ho_oh7UuLh2erfWpSAvQH{P|ctG2S9-kl>bN-^{E7I4r+w?g+S(CojfNB zmzi~}>)PmS#fnPW$t(c{xFir&PXM=ZDzrW_7AL-+{ARs5Q#J9>U6LK@q<|j__pS4G zMl6fLV)ymM0YYB&Q0jD9EX8DTk}Y%5&2sn0UvJ5Z)CjO@K}z5R@z#|n)jHz`+)7xs2D`3 z3NN^daz(khtj#75mMlU~6P?bo&zzEm%0Z6uU`5^qwUq-|v8!1hh zs&9C&3GF=|Dw`lgMnABAc)$f@eA%Rb^E;Oh0cbIo#Y76kO|xg6G@Jcs$BIYplFXHr zfs}ylP-Y5s9hfcKp-e6fh}g~rFX@`wv_qL@L_UKAJzR>IIQDdHKN7J6?9I|NL$1P} zNDYTi*aKRH{R>U%Q<%g9$mLApa#FzMME+>Jb2+J8*wCQeG($pUgNg0X=9c6016E6Y z`e?8(yRSU)6C*4XngE862_joSh=n12FDpm5Jz1z2iS$)L7)J5ZvWdmgSV^MC>_gOB zF|78%CF56&m5Uewk>BYMQp?WC7S)>ACZu(DtGX*TRcS2dM~Xtie5Dt8xt{-lE2Onl3F8)hR8{uG$|92LR+M=73p$v z2aefBnj(>uOhRZ*Q}h4IBoUQdL znDW@PQx8q*^XD+r6kR7WJv1WIEtC4By$1vYkqut3$l7PNgoWG{-BzR~Cd#Z4c?d(7 z1XXvRFiUn`>et^XpeDl?DJ*GFN8hTzOp6pr-8P|5={5i z6yhEdWQ2rlP)F;|e zD#`^x`K6|YQ9KCB-)u^GOpfI#{CHTlB>%KFgSJf;UlhI!bRFoJT+nvqg^epadRKyM zU!~;jy(>yvN?hH2N-)@wyQJvD<^|}n)vzdF9Q?di%B=Wi@ymnt zd8f&C*%Jr9Z-M!p4lVsimXu$fQ%03a#DT;|2c>rDzMB!WNl7EPkWr?yD(v zZnPqrH@viLU_Lv!O&k_~95mjWJ8*pb{720*rw^qo&T0^}h1y{UWt9*kf(0r}Sx{6# zZL*0fs7=aXQk^)M(x($8n;t;drk&o|J1c$|u)DG0;(sHT*@js^gOHMc%0fQ6OHx7k zl_Yrblb>m;C-hTfNkwSIjV>?3EYh1ZfZ~Cb_@9(`@2)}%mL0w$8{2$y9^FOzDzu<+ zu7DCq`H`m0a24$klwbI5E8P01+c^i=;XAU?L7+X^5C+rA0&acC31EI0PG)FmpI-8^ zouUhzJLeK%X{AMAjaGAO?xJO)*kg2TU%_mU>LOwbz*KXp5slm>A}8C|8x+{Sj#=UB znCJEtY^;WwM^mi$M!t@LZePEmg#BzUJa`bjDg?udVgEvyFuQEELC5wrEXt;Da583y zJ;YRVf>op1ieBainrbV)m6Q2dL>XCW%Zl&wT5Z^}X3c@h85o2#F->6@_O%pt!F+Gz~RO^#^-3pI{g zY+%*cWl%8?z+`Npo8*y_D}LJw6jfGKmaR)6JHM#>RW@< zDv@t-uG+-!#X=S1gRa&E+q(paWlkILs zx!rRhE9+YF7(oXu%2Q-dS^s&L2$1|{DxB?ZCTzQtoq;P3@qvdiHw!qaK^5Cp@{c9A z`g8;VaukShP;uHZ5`eRo-)`vsNs0G`K(9vKr;rn-(8Al%n{Qgg(iNLK7xRA6s^{WzyVycRh~VUa6?KrXmyHr7KJ7#K<&D&E3@X~jhHshRnSFUzqy*RHhpIY zQ1X(^ShhRa)OIghk37v=$2)TdhwZNB$BKt=h7Bc2V2GGSaWzjv$fit1m9I zx%l6T{zMSdC&A81ZPr(8UDh=_zbE8Of1NVRKR44E@}?5YmgL|0_{pz#nc(O}k9kO4 z*AcMxqQ%Rnw0P-VCIG=W%QeguDZhr6anO`&l6g6Ui0P9cbBu$3gj0cAH#`h2e?U{t zr~=WwV5R*kz7O#W7sOT2M72lCM-XB_u+pl@zhf~MnIg4IAG(J@zCF{_S?0P9n;ZHV zYJlV-VlRyq_{MJ<>hpO3l83na41rsBR&8#-zUnh#TKrPE%y)(OjUj%Y+^YChBO;Bc zni*QwO!G3RSv51XoUW;1?2Kk0+Qmq8lxKkH@5=wzi6Mg>0)+lj0s7|M2C*HEgoW<~cKL_6rso2#9ZO1dN`J;7Zme|xH&CRvg5YldZIP$I(x z+gTZ$Y-eSd+Hdt@=c3}$g|!HO?cm#8gdjQRC0QCfcU+w@kc#HLzFHuPfjF|0~f zdKW36aejSeE|8brB?^TY^SjZMU-5DZBrCm36x?rqA#hT#CSInAU$Odqsyr^ADi|9l zHAOwiV2Tx=D96$cf^*f*nf~ge5_{z&qTduqPJ+?&@=uHJ%WJF`8e1)Xd2y;Z+p(IL zV(pCh)08@qoX|FDrdG0v-xBPcG{$=~RkC^eT4`3I6)DwXWm%E3X#uAyt(oGxQdMc! z6qQgy`@r6;HDuYiP+tAh=rM%+26#Fpegp!&V4uTG_f#FSalOn#~$)2pX? zAbxwKeD$m=#g{&@HdVe`WhEy5o~gRD6GTiO&aJ-4Pj$c+Bjd@Y=~`;!zHhGL`BMOK z(ewN6*%2V%q2z)sEZaTK)OMFMtj^hF19($ryT^fHyUUqjiw!+hh#AWP&~LVEp}VxM z#4lOLUss|k>l@YelrLYMOIX7Z7&F_~RY=P(tR78~M%Y)U%8I{>5}@BRDY81%L5 zgF&?5s_ER2Fbx@c7>|~L5{%!sfIJi}^qO4F>GRD}G0CGqy*;3IH4On>`Aqz)yDWT!yhXq4|$)RH@UrtFL1M zgf)d6?bN2`s7m!A(Z=NQ`(V4T|7@u%n6{!9U@8p)Rhmj<{#3mHutXU4HGm}BqhVxr zPv!hSOK{7kh@En;+2q=U(BjWgr4rHN?_sJrdDSlfwC*+A+|{G8m_LR5CYaQx52g7% zDz?B+{-d1+YbL0G)bg&eKqp7T_UM#_bO0<2>D-N20oDdJ3sh^mIbU#VGBuDvL&gO%Z3x&NoyrL@m%{d_SKFIi$PxbuXpqbfK{7G~ z$@~!XT0Uj4ed`4iz4?i#)(ce=J8YcSyypm_Odkst``&xpcrTC3^kgtkY&u6nas zFMffsGAeZwl-5D1njnq$=#)fI{+bSMi0#oYFo7NL4=15JXHoZ3j_itq^oDV5{fhS~F=vkdX=65!a?o#oA3dkv%Zq6g^MEp{c;k2Dgfa*|3 z^(+1!?Sq}ajnMo)j>gncBOaYnCl-2kkT%!Sn;)yXWrZzSU$U~s+O+tYYSILIg}vEF8z4n*{@sl2QR)k(^tqMXWN>>_tV)=fFg9UvVP;}J zx-l+V8Bx586ByAH(>*#yUm=2sO(n9$55)R3LLlr^YYUM?(YP?eyrOn{kT6+zJT~o7 zDhywU*d7)8p*Md`R~Mz4!Qk0SpWA)CdPdWnFv4Zn7t(lTwr_Fx{Si zL;g0OD$rNQ%U}}$kG>Z?*h8WvX1f7u6EalsQe}(Xh&HEqfVjAG?OGw4a0;1cwe3-|ry#aR%d}i(>~?5?D)V$KK#1)|^e!405O(!FVu(!l=ot}4xUS)X7$K30 zl|v-4Qi#MCx{scKKt&3R;Una~!9DRrW7lUY60 zHB-PRM@QNRAQSlH=;$+pS3N;O#R>P#0xF@ck}!$J3&9|5A|nCt5Zq$%PqTR7S>wu) zB*yNA0^8Rej|espX#4u(WD8gPRN2EC+t(i~`$ugk0yhHm0RaMuU&vNz9|Q6CjELU{ zi~>IaO&mmi7G{VN9y|h^Y+rc_Y+px2IT|rG!H6v*M7Yug{6S$IF#|;xkCH6}LLw3X zHR}r9K!!Ym+T@6;@8hPAsrW(hn~;C1zW7JT?`sN`O|jwwhsaN~_Fy7~k70kr;Z2TU zR8&vLu=fa#VD3%FFej*wKW&X)$Q1vbA8gl&27V6caw0px4eS8Y>-ljRvZkfyH%4Vd z&)n|~1Ldb@f<)2s2NXOZko9OK8x4`2P2;g?CkK3{xC1J-lr#&hrgZ#2Tv_td30XAW z*QYXKb(&>qd;zFXfrDTEA1gSqX*BHO>l0RfvS` zTtzhqa@y*8^QXPZFF-TPFKQ=8Z&m`q(|wilYFtf9yxCA;q!c(!LxrzRxP z)+Kl%xkA5LydBs(MRh6QY$G>GWY=}U6gKV7wFwX>o{kx$m}k!)Vau+%5zpT6z`~n3 zS#lgmSL_$Fq1@zePwTp&k`o62SsBUAs>`nsHb}k!q zz4=F=VLMj=LLzJ#Qm2D)eviVr?@>ye7Abw*(N+T>KJB#7u~H~BKZ~YV@%445B}-m< z$%t-WcSc-u7R_U&9Ro)By3=A+e9MNGYu=Rgk$LG8nv19an%`fXX`HB>svgY~ve%5* zuNtaHxz+qC*!f%Ivq@nDd`C8S==>^h%+HKQX*&BN za@fKLeyj{>rXpBSMdBA0xv@aBeJUdVQAkx3CR6xtAfxRgV{F+%qDMl)-W`XLkT9nu z3&bP{$=-zsUU2>!LSiSjH)RE4MQ@!|$wO!QU@;KxN;wv!T_TZeKQEtz#4i&YZIQf7 zSqWs|HaQ2s+70b9mk0^-^@flzrzautn`o*ze{QN}ZQ=+X$WppXpe>J;B+cZ>{O&h| zggFTb`yu9;6WSi#swP6fj&4=UO!H$}QDutSk$RJ{nU1Dwlx|hlk&G8_ZqsoFz&=fh zj8M%oZteIdV4_fDjRT{V`_>u>Mk{v{=qDJaaCwaB`c9F^GZ;`v50!!hX&YM^{)cO|$tZo7}-*G|!wzaafx^z+IA+JR2d5 zQT^e$H2aZ*kXE@?e1Rxh3Lqs!ahb!aq+6FBt#dHSuSe@L1juiaiCN!)l^$(-iXp#W zAGAocAFUEj@kJ|A@(?f8R;6?Ku!a26L)9LpniI*RMV!#$N|N?y4HS$~#cOW63lmKy zCOK!DKnyt*O*N-`j|@tdT{iW}eSbFX&L@|NRH6z-UH-&Kh+p@g*jdj9x5_%nynOK! z`#^qeFwdS#CO_tvae}6mlH&g)@gIN06NK3>>Psyw6I?h#Etn?M=1H<7bxFGX9HOO6T;-p#pDoL=IlYVQ{CsR>9BLY_- zE5s`V6AINeXt6Se>K7{)F`;5lm29h$r$v6n*5&V=(L8fe!?{8Vh32JlYFd2D;-y#o zu1Ds#tVcY=oyef7l!)XdBq#lpQltc6=U3)Z{qfke6Sf{*USwtC3E4IA$D}%iG^T{k zqVckedCpBGx^SzY?HiQs!mY|W!eCnY7PW$)O#6PwMop%mEnB9RvAP3N0 zqF`!H1=h?8O9#zso*gS~o?fGPN>A^#>x-n5GNj*G;_SJtCF9`noF zQzZ`Zl7}}JT+~5a#l=b**G*>eij^LfMKH=f)w8EZx6D_gQrWM~`b-J!u zTBhyWg`~k$t4QtpgA+-u=7jytGTU9lz38$wSc+hjg{9`3aB_g%eA0C(56&TZ(4K|h7 z({$gGiyEz%;C8I|TKT$WLGeb=p}?k%fD>gS>2mDyEjCdQsEN*ng!-G6<_Dr`-JJmB zAd3gi^p!&Mmw0kx1qKIBdx6rf0InB8EP(o(%ZD?s|92nAF>7VyD!`AUIN1lze1z{)YNPrLU&RN+eCgB-IHxH7-F%h#t9=$UAT z6yrUCLL!R~w8~jAF>-|lDvN&w3PwNhASizk%fkpMbDMUWfg_H{b~X;lW??0NkW`&w z4e`H-YAgQgWd5u&8j9Pw7T^goeO;Nv#PO;m27X^xCKBW-@)NOiS4c3|6rb$%b$t@# zA7Z*azpSg$6=y4b)^#*Q+4Ngy@S9rr^A5|&Qg}apHI|6Nu+&4Z- zuCZ;1Y@eIV3Za$$_AMdkdOr6bBw_p35JgTj-M5B_z{s^WF~W6S4kerR zts$KB=Fb|s39JvnO*?Bfw`nI4dZ1eKts&I5hENN#`3(^_1l&)47FFLGqR!9vli#;R z=jSK?PmQ4bHJHPn{6jRU&-alZXe55$qGLdCN7nW&I>r~xEjmnoTXcSUVZJp4ni2lG zPRACVX3fOSZ?kkqXtt5ZZL?UYWd1Z3^9!Z$4Il$DkO4WfXS2SKInzfoa&9VCT4&v8 zZQ9u?Bs?L(Bw@p8`xc#QZ+>J7cE%eXN9LF6n+@P5B`bRvneXGqy&uOd8h7p$GO;wtuMJu`tNQpk95l^U3;nQI8GK#8{ zxS|T&0B%+MVCAYOhY<$)7SCyy5mkN2_=Qtg;0Ex^04n+1$^>gH5X2X2?#Z*~&tbk5 zT_`d=jFRd0NOiisx3jXp8UU(5LC8E>g>4NW7@Qx)F-s=;ux%A_!%zMQwu;~(D8Ce+ z93_G+l)^$L8Z4OP2AWhSnKh#lPtKk~B^oT0WZ=;Xth$4$EC4o8(}7g*1Ces?M0I#( zm&M;Un<&X2r5=ElQ^unMnkD5QF$ZKI{yK>-DSjf~1TL7;XVZZj$VHm8)19d;)TF-b zW7r_ddO!aYLJ@03?(4#3de0ZPrSZ#qUAWAw;|^#0ReY&$`%;Uq@Hj6^urm>!o4T%f zSuWm7mh87-<5JB68W|p(M1(3OM4WH-^=GN755d` zaLz7^5s15b`eUFH9dLuI*TCJJ(W=hr+O*m3@d$wfhz0j%5Ku_r%SM$(VcH9O5>(Wl z4>t50+=p&_w4(PY3STWyKnuz}t|613{IpcH*9-e!bL)o-elktd?Z8&cY%DQdD*>&X z5%I`=6Y;=MkXSNWrC_EP<`qpL%};(5K!C6bkfNseXtq)QV~MJ;=*^-k)c670HZLJ> z#iFPR7UYoMxrX2b<)=NWLex*L77@jZ7q-D}p++kgfZXy#R|wJrwrxf`-W@P@2sYM( z6G0``n(Df)g^4Ejt^eIOi@Neull22Nt>Uccx=zT0N@OFX730qO+*K9W;Q7*7qtZeWPbE*S~8EkL+icB(Lg^n(!nA4%{>)5^`qipxlLBtlI z>gxdtY+sRE-lcm0a1Sx5P8VjJKG3#=)L8L{A8ikaVf%`JlLM4&T8a0hw1&a0*$t(r z)v*5HQV+S7^=wmEg6-=ME=Ib%2$5Iq$Jhfse$2^%`J-zZ z0|`nxs3k@6v8R}58fhLCDw;kHTtZZ_b0Fq;V zpb@#wk9R)c|4bGNfSlPv!ps}nw%c{f@|lvKjm#yOEb&=$$(j)Ar#rSN|IFs(8 z^#N_)WPn?^;?p;vL|bWHe+X5k9@j1#W1?{;&EAkcK+rbG>O>xs#L%p7PqijWi9~eI6#gEewN*JQd2HILEC=%kCz23n z$euUwogt(SZ%7~)+6r-5C-NA9{I)%y?GN7CR7s7I8BEs9(kYld;09L63Ycu1NEOg_ zEq>3$${rwKB%JkiSts%#5c-vH*)ms3-kj<05G!TST`B2dkC_M?4zTix0{Im}AirO4 z=Y2?7>Hd3KK?R)n4XVCJN#s|ByOfoT;0Ux$T8WW=$Fxb>K|Sl2DaIe&L{V!I%CvD5XN6-P>VT+XDfBOOR{3PZx)dZHK~1-m$@@+R zH4K{in|NxJtTE1XsiN3Dn>K-CiZ}Np02gfM1t7|%eM%THeZ_C9b~Tu+i2{^;%^E7v zy%)pFQZR`iDImdiC&ESA;?;jvN=|iZAlxB<686qo{$BB1sRxCA*N2wtJB) zHB@wI;nG9xgs~;cxfhDesajFPPYFD@oDhvsB25~i=1EaD?W9zJ5GhD%TC7fZYLd!I zyCTlE_#~Re7dDgionI0AC@QE;9z_9LB%>&#;V@c6LvVhT+@%@lY-4OeO9h!98Kxd2+f|~hiT-t zfiur#!;bD7AC>YSvA)w8ZPZR%FjK<{W-bO%+d5|#XTwZZd+vTjmeMiKzl|FqpNZ2kLySsjR za>acGUd22q?@8JQx=Hy)oV~P*vi&#&*PDNcd5nVxU=G2-s~9|ukKCk;gXu%J3eIuj z+05YXV^=S=0*;t=c!!PJrqzfL?;OzYo(rDx+z%TCqxt zg7Xs{utRXBS-7)9HyL(Rb+(6ee4`+;(zks*!(jV*FLv0@zF@Pz=r!AAW7kc}L`-n- z*gh91c3*kPl=S%qyd|NaC)4g=lEg;Xz0R0bo#g>xe>LE|A|z~&7NP0I(IO3cab3Te zZ6M-L;KkGsYtHhVZQ5BFa9c{05`9dupI=JcNs&IkH#a7<)0lky^8r(&&!gg&k8+UE z!$IJnl|FMYprniMphRkfpLJ_1tq&LjX*(MuX|I{Z?^<&xax4vqmCg?Buw83zMo)eV z0AhrbdSS0Mx9o*IkMk{ltY!+i=!~ykmUgX!|JOtz2mc9GkJ1p!5x-B9M-G0U7*l?r zmDWzt$^2(eGsQO|0vho)XMNrQ+}Qy**mv5f+0hy>xJPS1jqpcneEni5(x6+#Rw7bF zE9kx#zenGM-uyfm@pdgb2YN&lM%cCJrUc`6EjlT|_>WKA-AeB2y|~l5Jo<8a^V>r& z?47ElPj}ujov8BI8@kEZJ%}}TpoeL;+1uG8DbgoOSbnuj0lLBkWprVS4eqRvlMw1y&1`uD_HPKhWK~(AfFUn7mir)^vNm9UStv zF?p|gS6!9n;|L>b-i|(Vyw|$Rh5=;>)_^oPQ*~c*00$ySDIME+Gep_+m^i)pOE5>k z!R``tyE`z)W6H}uTA(P0{lEdsH!DjoY$M-NE_*cIx0J~qlcx0Px=Gn6$G0*|>|b;A z=0`v&bdzB~E@Tq)=BHhXmDX7jB{uCWjia*IEP3{XQ?=7nb5_gR)>RJNCibZg*(K2S z#BdlS&6uL|A1}+U*4>NSDhC*B|-CevO#Fg@g*jW-m_E!T#1?p^frZn4K zi5dh+L(af7sX;?{5afXoUH3Q5}qwuaS3!lereikA34(()@jMkR{BKpVgdH{ zL}^BvMukBRQ-HmBR0osn&I4uSCgl~&qdAt4J$rtajXkO(hF+8F40E<;4?Nqo4tAcS zJErJS9Yq-5ErCmwcJk-}KgL;h=SjL_Vt1Y%u2v5%=KM*mDtQWr5N_-0lGKUyTz<`bzV|V^>CA6&Q!sgvnSAO+Id`C1{iTb&USAyqqJj5rH3wD19*$j z8ejws<>kSFs`J9+;32_jyF)N!yE7@HK+G};5f9MV@4itUOnPyX`uzIN0B80ZR}Yst z!!dd1lBRCKTC7|XE8Dow=j#hD+I{_TQL{iVuJ6b&;)B7} zv{n&1VQ-Y!zA-*#BkT-&A3<%Bz47iB%J<4|3LjE8R`b%w&M%aiA-*2*`=H40b0U2; zFl4USH0}HNN0mw}K?w*#{N{%NwXU$zrbu#iC#Dk1raO`pu^q_O2tK69?H1F4eYH$PfU7jHDN8DX=m__QOLO@lMt3L6gCB*@uXD~rEZr4qg32db8ca+6`e z(0Mj&S;An|o5g4+A@{9Gq#;V;rF}Lvq8O9<{2RaL&0gWH<)M6A5F5J=9yFJ zB$^yB8o&aY7Rakg+$~eO*7D>I=wJgIas-l z!O9ZyTcUX;jbEzMG)s%zd1+rZDG>=QCQ_Q;r}<e+lN<^QlB*mFHxi#KC7on&(`LyYexk z;$Sx!#ts32Je#I{O7Z`^{KRY1?yM?c`|3I<8~9k$n&`>frj3Bi&vOo`u)nH0*d9fa z@@Ucl9}Bh+^C#DIR7ti+kxbapq&_{G0x0 z_XgL+MW&sjH3%{7Tm0o?k`>)W>uvoOn}CvOZ~u*u2w41SKD#&YSj-l`kcdq8RE00o zW_*Bgrry?doU5_71v1I2kPCj_7;F}sy)75~EEOJ$j~?2xX-Xao*zP+Yzx{Yz+Rh#s z*kO0NFcsA{?PRv5hWT$iao^Q--H%s|=F~u{t&T_hJ^|sq?kcocF@X6qeG}$}6WS($ zbf!<{H5pXxMo_-tJF?MrT}Our=1lIOZL;SL%p)`>@pzmsbwa2EDfxLBtO?MhVLqWs zv|_7^NG-}8=x}UvTL(_>)l}6fGSzi3G}-Pkn#7z{DiL|qGXJkes~AdFVQ=IzcWAI$ zUJdf|e6EwE1~HnlW?zB0V51~?3y4kha7O@laF$bDIwO2LoC?!Owc+H@?&VK{|;^Le*;7{v5f zD05fStk{O8heYJ3>0s3k(v+GaUF5*jSdpe_S~!9L3bqgHp>}RHe;MmeGe9)mR^Lt5 zbXi$84ScK}*3&ea(ELXaV|&!d2|Z!b53C1^pQevxyf@Q7zA#DlLfjsG0s8Ywwqm5u zcP>O&wUFNjJ2RVcMIY3Yn(hhQw9(LgYq~hgrs)+`Ad~!0K5Nq-V@KFSD0fLb1xNuU z-XFWj5W5VBi6)fa#1DxdN7PvHeUE1Jg=#ni2n0xvDL$p*1CfLvH@8L?z_!hRShn>} zZ1*Zk=uD}zk5L?OQVH5sw!qK>Rgefri!1QBPWM*y0~1fyItPNmyd-=r%b*XR~jnUqEw`3GI=ssPq;~<{>)_Eq&0L z#mgSvlq-}NthTMFE=8dRd>lXvEuJasGVIJ+U%R@*FP&+Fu#gV zg2kLGqh_T$&jGmg%0bPEq((&Yij_juuPiMxPI0-ic&{#S z>q3gO`2M&N->m|w7XJ}o-k4*htt);_HNP*)D9&bws6;gJ_o}qdR9o@K);GbPS!si7 zIoKmOwzEfy+sB%aA{M{EsWee?#rFx#MTp#&L=PYNC75a}ehoFR?%QCf`9(X6WZljp z;n`mez{O8CMOJ*l)>n7}hy3i*kOC_{4Jma_=KpG7Jo;0!5iAE`2|*{3=+?OS5&U`~i|*_KjHa*UTOPp!t(b@x{SKkA_!uBZ~Q6reIA6 zmk)@N1bg^H{$SOp0X0T=7eAdCo-`ov7)G>q00e1Dwhsvc4DX4L6kAcrtFjf9C#rD1 zscCUpVrq=d`a6K;x5tyQ;?jiB{O$mn-=EZoDqB(6lNu|U0Gi(xQEWveke%P35{{BK zkIfDu6-=2OO+{$U6yHmPwhV}@Q#*R$M|kY^0V*3;P@DYmmw%3$?M{yT&|>~$2`1H9 zKn_Q?8}SIlh}buTJ+eEHl_r`Lfa@SuDp&XQ1q@bzyOecw1lsyu>4*FpL6QH+$N{D{ z$qo}^RP49-r|}D98XZZU(DvwUyEw*V9jVwpPH%pX-et}*+@&m|Bj{S~Jo=hy&m$KH zX?1Z|9Ij=RN<=y%0yS%A)^U|!jfdH0K*j!|*(FpT=9;2Z0x;|wOiUQzB=*hrA21Bi zn|EJo#9j0US^PB-tOSo%KqbiJo$aOY1BN-h`NxmL@akjyi$sw-aFB$74? z;>Fpna4>QQ2P3PjqseJI+hl+s{Rhc9> ze~u~AF53)=#s#dlP7z9ek4|7i3;EsX2u7qNzr&YbYW(u5Y?^1!<(QDX^eG7ew`Rrn z9ZI1V->4I=ACq?_9>G>3?QC-0w6hR|y-?=rf$`2vlRcxUqh4jyTEh>7vLoZdu8H(8 zNq&7vWTPbc6$){+EOVP6ZP|1LVcXdV&g>~0CX^x}rL35=;K&}i$vW{n1j-OxnOd;I zMaqm3{<69tGY~PY!=#spfmLauN~BzsJW*c7S53S_1S#>ADy22VN}hE^2d$B3>qIK6 zw6}e==L^>j*jH|rYPnf7&z>Xj;JkT>x#IHC4YBss%{tB4&N>ya9q3ME@e-j2tyxj& zt9sRsCKNB%1?E?QDHK!8h*h!rgHxo>Z{w_dm_l(@B$z*ORwkM#;H;1=v=zd>nZm6D z$(X$E9I8r*NCQ-fj?fmVhbeuYkfPNl7QlD$Zr6$D;y)5l9XeaYW77l3*+&;uulmi{ zDkZ2$pYH>bf%C}<`FU#&QENj+>>+w(Xb^O4cP%RdaHY!dgQqIn*(a>+>=Oq@^OoPR zPx6GVxcgFrwqGW+Ucz9J--v>)P5-E_NjKY*YmsQrB<>6$D`9gyHJ3DElZa!f9vcdf4{6Hf$ zko&$duz{Qi;3v~ZmIw)T-9>^T^95ep*$cw9vlpBplC)i*`G_gYZ~mH&i`u50l#G6s ztizvV{VlNI(I?K}+=JsLNq}3P9PG}zhKq~A;x{a&-E<)DykK`1e%2m zA$Li0a*mn%j?IckrJ4j~+F2hS>^d=z%U7i;?OTz_@4#S>PRSsL?7m~;lAE0E*>mTH zmLKW}YedOrGkA`0goltS{v%)&4@kAX5wJ>rAJzIqz$*EV)~AQSD*1;-O6CW$n7;>S zTFcGYWf4?;OGjL=N{SZ;|1|!<*&{%7F}!V$HpkG((Az-brhDN99JWWBbH+A^Avl{A z9TA#`=1kvA%$k{$zY)_W+Po2*f2G1xk2ZhwWSSN_3wGEeZ@eN<(4jDgL9T51SH9v0_@0_MPlGwM{!w(Qv10({P%@B*ouNVN~(yG=WfxZ-jaF z{I=RO45I6jwLMA|02yluYqXOaQ2^DUyX0*!%@iTnY;l@H2a3Pe6gp6RiD&|eJn^bG z+Jt6hnxeN8D}6`C#Tf-3G-vv9#8lv743ZQoKH&OkJi-mf{A9$J=SNNo9J6xgj&B9a^N=q^#YRdilZY>#emrZ?}fws>F#=clE0MARj4 z=r_Md%i3DZ??E^?E@PAW^^?KG_9zr09&m#4XC--K6mZ*cZ|K0R)E!DT?euRQkI`{{ zF?KG|T!B=u0aFWf?YI_l5Rtg!=6N$!QlIY?FR8JTr@9Kw zNzyUxvJ6GDmQ$-riAX=q8V**9vGVIqAJ`9C%=2cd{6dTC6e)S$OqFkJHnd6{QO7#? z?Ic^}+nDy>>V&F2G|!$(xgn)8C{?HUw3C|ntzZhR__nQOW7=hq(43@ZO#AW#v8lQd zsj*Ux6jriIlEg0-o2`E~rk(SaLdsXch$qK6x5~3NeRl#0FYvMEF4|`^?D>+dzY3XO zG-KK)0`1J0R;k0AGKl!S6D!Tc$`Q>wPvz=X&B{A>V&xQss#7!H%NllCI0aMcF z(ueq^t}j-k^r;-5%rsPwd{$O=sJ2-A`rcHjYk=ez zDP^blz?zM+f*W|F0j1JnqI%Ab4%=51<7(dymFQzNfFQIj8$wHqf17!#>R0_o9=$>a zp=~`^L~%>6nu5^w*Rb*{T%ROhwkbaCw9Y&bjgjGjX_eb{wrWnwZi88aW9ZYom9elR zbgQNax1IQk@MlFDpJUP2A&C(P(>;n~(t z<_<{HZVX)zD7ft_Iah7l*{iqX4<$5myDqMYKoH{ZnJOzT#a3UPN|s;XS{SqgdYn{f zRdUkU$^&j4$i!6FM5MNv_-!K;C(QxVzHNl$Bww8io?WC_U!Lkz*+aZUQlTx$M1oi> zDPhc+D$~TT85LTkkI9Gz0%e}_xYki~nj;JXYUq7XL!ag?3^;d3$)=s)Y*cIM6Dj_n z2W^vYLtjJ9O12>-kV;OAk8<#*IUCb{+tAZN`!p%4Jv7w}JqoEh#V49_d%j%!)b+`V z-ls~}QnS$M*e9ajJ{}OLGzO;qH4a=w`>`>t4k67o_K7Mb?$|0B?4PIyYm6|<0ukCW z^VcOM(hkf~u)zoO#c-mf}Lg7qe((vo12m||0G zt3>XSrXMO!_;EZUaD%_I0Y+(&lIEE*EBZLqh-+eHPxY(l*O;wBv%3KU?5#bK5J>N6g`o<1e`J}K2u$ntP@osg>in`3#{mAo++0pdllbl(UZ|9 zro4*pi$vouk%)0#*I@_pi^XF_OPXh@tf-{lT?#^t$R<|ys%DB_HnEcSnJOzP*R0A_ zXddFOqupZhOVclU%t=6?96Agw-3%@3Bl8kXXf85mXvt<>^4v_7duZ9in{rOP++k>m zHnc1oTAtB#8X+Fy;y0`Z5g?57TSZgOtxGb>jixjcl9zDn(wF9y{}{zm7eju1ESAVc zSoDyKus=+dzB(;{Iq=-_P+YFAMF8?^gpoY-RVt7d&RLvMX#e&1nfR>B#2 zz1H^tp!wU#8G3nmQ@V+lWxR%7u%VYWi(fAxdFfq>s0q&R95gy;mSF4aL$M@33LNsY zK}<#1?O>&?-KtsXt82L-P6zD|Pns^Wn3H%vEA0=@r4MOzsAbM?FA$giE3fN2m`&|n21+0ENP0J-{F(ekRr(Vt3jEap|6$9 zkH%uALr`iV|CdeSH#+mW3Uk|wTZzo?#l}e^s#N0Cln!8<^e#u}a?GpG8TzXMUmBmE zA!q94^9JEef2a!7^x+zuH&;mHjNsZ6i4>9&1Cn1MQ_K{9Eq?1H+fP$`T^#b832BvP zMJ3vgR>`LLh9%pjo8s~Y(5xIAQl7z~R@zyW!X9&xAJCLQ#LGBWD1H}k7c+uGC8TI4 zV3Czp?OBC+0?UvEurSG5b1#uajku(@k5(|S)rctA`FG$jl9C&OcJgAw{#TU}ncSr% z0AQN3VagFzDRBoh6QO(DOx;`|*Tl-5lS<9%A_cf@`@oAE6?R?hF4WUNluffJ+f7vF zztMvzi&yA8o0Vs5Ju zcd)aOsA>pNC8XS?9vLd}$xYI2Ynzx2fh+_zbsgtST|+=`F`#%!n}KPUVnFiJ#M<=5 z)+MrCn=0Ljq>?6OBELCPPCxS73`b@w?uT@LBTEU1jC(7O>QzQhqGN%jP*=;72me?k5*ct6ITLSkhZg0 zl3JX=0SFF3+h|LhpD?pcltb61bGRVjw__N&$uBS49S0G%yVwe{AEqra9%M1zFENO) zzpBJ<&s5kd{|gak+X0LJyBLLj@|$R`ad1(aiCwJ9t!&l@;+T!xrLdt8d&joa1-CFT zcrsV~A)}^;{7pNz(yA%`6O{>A?VJx`=G6f!t*@R%7yraql$BN}WdIjY40u6o_pmeD z{fw6lM9OE(l)U3`W&?#_LbkhDtCbVFTuZBn-u&)dMr^P6O;e%jOCut^`SsFNdp@*z z_FR@hYL~ubvLeR(sv)&XB#+$yM#@VsAo(>)VWY0ESh7qQ2t8$6V#0EsK=|4_fNebzix@qXU-hT3gWAwV*QmWSZu> zfovPONoW}ucNhnT`n`W>sG~QnC>v_Hd4x(;xnmO0&F2`Wq=|| z!moDEu?CBh{SgKg!w>t%ifcvDTq_F1FFtZ;0K|TBeaDQ2?OM?pJR}~pG*D9#C>z=` z*(HEQD*$9htGbrUVg<0$3aeIZ+G$t@rZ=b~U=L$dMaiP8v5(dgQ#{yY5mg!O9*-?0 z4x{83Lh&VmwnRKB#IFW^J+WnT>Ct5Z0KFAJsDdC%*b|)pbC_10Ck3`*eEys*z`ZQ@ zopSqrK-(Kroa`-IHtpob=)xFB$pb)?c9dfLI>{41FYwwd^UOzD*z#!JiQ!!?ax0C%s!3am(zjf0n(K69{8 z%8Ka4icLEW85?`URC9h|0s4qJpy>|uiM#UA+|9vFaMcP-RsiHU@5PrT4o$uJ=X`3& z%A!#)&zvWOpsjO}z$?f62S^nl2frD#1t#D;s}MHrJQ#0T21a&Wo6)iBx(tm=iyAz( zqlv*lhg#e~;SYJ}RaZvqbW0X21VsiW$-)>atbxVvLetH898m>>a;v_`Pf~v3;3v{T z1P#2hX&6ejpV-tig>qItOcZfeD-|B|AOICG*Bi)Kk;S`e*0f&T{RS+s zo@UR~&E3g(0Bu`%jaCIPd2#Scg~{Rrn!Gu9H3PGWpQ?mymtC5mH$Rd|27aG1%`HaA zcHb?qMkV$TxydfuL>Ac9yEwFR*e!%i_m$x-Ca~zua#Szmo-8Y7Em&7Nm_+-p2U6>&5x-L7h>sp7o8u5z} zDz-FU!@^6%6|xh~I`JD+qnTE82fCRnHu2GuRStGTGW(|3Ihc0pVX8fAEQy79SiCL7 zBXV1!&;lA6yROZEc3q=kNsEGF3!0a-Epuklh?^*_Yb^i`0YqrL?7B7+Vb`?|E7<&? zKA}R~A>-vnwu4^?wHd~I+)EKepI;yfU!bWYm)U_IK zh>}eMg-0_vyROm9?7Ci4!o)$ZOvnA<53=66ZVoATs!huOg0h8P#;pgk9HZD}GoY(|Bx}Xn@s7o9J$;Yaft2Dd_NJ6B+4XV?(*`yJ(M| zMA@{{6I1Q^z7?BxI&!O;c2DaDR%@*q5HMODU1ru3(6eRbV52E3HElE{D`^OF(koG-#?1V*@~3sPE*gYn|aTg}`tA??td(YpO_Z{-7GxCYi^@352K)M%cBc;Gg_LBSG?$7$UzBQ_N+B zZPWtc^0j}6{QvHf9Y)yQIodTBkWF|FuD>{+mq1%^seH6 zqa8$|iu&9bY}d-6jc3)hX(u#c)+{aayR!xJM)8&0B|8<)oROjGybp@xprMDjU5iWr z!I%XVGc7VOzaY;0Acjpl561^X2H^Fz>lz5(R+A55wv@>O5#xg&Y(%J<7F`R?jxDdB zELP-Dr~p6Nwa_s2XuNBoDbkZ)=+C;Aqp{{Z5Nep(b$y4&8tt?Lir+2ch~JrKOLYoyUugRy6ch0w zZJfdRl_AOw5|WodJieb~SW=Vw(g*@>%Zkb;Evyg9zr>U}>p7xY7$5QhEF?)*1r!G> zcS7>}cCY-hYl=_178Vw)6I#g5(*eSMqM$cp&H26vq?!e7d^^unIlq@7m(QpUvy zzkfk9){EbV_>6k<&+r9JoSyt8fO`B3nz>%s<7m?EU&?%p@Yi?PineQ+5dq=Jg4nL_ zXh6VrD3^|&Jfga~*4dXHn9mgH^GP)46fjfY*`k7}0WC8Te)H2fxUlK^ju6Z3T4r}L z=o*qi4IPZ(LCPgU{7?>T+3nu^@6ay+xUoV5*>>N#5y6HYMp%T{fjJ(K-WZeb@q(eg zpk>;i%w>UMFN{k9Qlph?onS+6Ot1H@b;9%nX)k_Xsf6sBE(I^!S0A_StFLR*^_>!~ zMv(R9N70lzgWT!jA+<(zhlXKdw4#08g#hgu(i3B;q_6_JzN1Eol*#tB%--%j3^vtM zmF>_lZy4~J?UWw0b*PvXy)1`NK{w!TAkfC|o2 zVh>fU4=PqfN(7>L)pnxlToMqV#$h{j`eS7GmIQI%th%nVU_-~)ahCyfEgjl=VN@>D zwRBk1(m{wG7+v3?lia?GqF_V4Zb0EsuPeQ<-WWFLjWEEbeTR0z_8pp+?K`xo-DA2v zp-py}Gol-jtqPO5LK66alq@1d%$JzpNg58;E*TrRD(4X- zw2)nkN|T`cKv?E>TJ*U|d0GRxul!T>p?UWFHX-@lnEX058{wE8Iz~+n*|n&k5R_k9 z@2XOwaKw;p=80KxiO*d^V6j<+CS15k-AAuHZ*SaEF z;!v*}j8^mvrfXdtTTp2sKLk^1Po^ynn7ry6Ir z@m;Hm)sMOLvz=Fh23sut_;sx+UBQ`d0N69YivwG4ewr769GiBYkFFs)!~vqtuInJu z?79Zx#*6JnWGW*6(F5`yg~&qWKgx-*>zb{CE!7fY?n=@fA49Cz^yb-hJp_$?wAHhL zoB=k`QGTQ2^ROoIxi9fI^GpbC+Ic+Gpo%C1f(1h*8|ebige{wP9`cF+GUQel7?3bE zb9DQ?V*?pyXIb;_a z)`1artsbP@c>}UttB0&5v=dc>HQx}PnCA9L$qx*JV}yB5uPQB1jF$a#-F<4{s_LMX za&grlE6t=OW2KD^m-foaAQFslmy?(dOcqSA9ZBOAi(e#CX+AY%X_1vmT8&60{xscv zxUz~%cOPk%ykweTG)^VFugGEtcZbPIJt# z@TPUP^QLawc|p21?UVru1T@c{AHR{Px}wzK*pgwq8&=qGY_GihG2NkOjEpcGTT)iK z`_wQ`;ri0$&Yg9;7MvhWF+3I4Y=@HC(3`&m73$Nq;2izrpQiIx0NM^Ety4GGLUPm2 z`x(olUJU^q33gq>RY0V3Wr{l#?TZn1p7J*$jBAYmRR-9bp9We%x)up0dh_elq&i)T zgc!do^&Pq)+qFm-LYX#|=(3Q1hy9}JS|lv-r1N$y5-J!Dp=3QqcnF>gN%j}LMb37p zDOzuS-wNls0D%3~fNOOyg@X)LUR`?gyH*EPdht8d^r|4M7@y^1D_CGxX$- z!E}d`p)tZ|+Ei)hxo{Q3)9x{a=F+S=?}fUK%CKqYB_ZKyV&$pHDtTQn13>ZUg$Q&A zvqV-&8e@Xcqs^LUPluY3At-b3EHR*k$#uN(%rtg0cxc zH#B>Qvfe2&!p_!R3jh-s;b$`4p*bjxR<1=4du5!qYtaV$%yclq^_{00(SPLN*}q-W zMWglrZgPg}&A$%dCc)NJl{G2FtzhL>GIEz%1Z6HzhJI+f2j)<;w_gXcGRSm?rnN@c zofiZ}LqjiCb752Vt+B9u%TsQTF8G?#0sc7XJ%WNq-G*eU(~_BI=HUu z2H;}sx_%qmbq(hMbBO?MGR)~pwXWf~?7CjK$@w!_^1@AqIaM`(>fj;Mrw%?s<);od za;tVj`0N(dm1=$-Dpcy=9S&$q)z(4#Rjlhccc;ZKTsH|uQ@P0*CsBMGN_b zG2*Q8yezPJWHJDpN7h6d7RLfda(=QBh|KRkX;KFpsSrwn9qXdzr&=MD1XCi_qz)cZ zsmvAMhqo^Q%KSU95UR>LwmqP&4~dI1&fmU)$>Ogu<&4hs$LePyhK0K{zX$OJ3K|x+ z^U!dS8-P%9{;?z&Y!a*}B_s!b(ARTgo(TB|V04s0u;*gfY4N*kQcZ}T-+dwk2Y)?h z1CVCjBtT%gHthuDzCo>>r#m=yJx7%`6vhrUNoyxa$kRJlfm&41UC(V`Wk47;A`B$0 zFFRiiJdRz@!D+*yo1DGqCd2;U7plB1BRUjzJ?9Lv$*2*JeDJnL=-Ej@Rrj8`O*rlr&vR#S4C`zpOX)7BEa8*(;zlsR3 z^M@(puE;MxlL{Hw2#W0X1xr%R+oHY_UA9BjxO~pz8sQ^>!geSRB!tZ~=L$^XYVIAl z@OFT1+G*%Ek>4Yf&Y9r+IxnrtrV5)pp()b7aYZE$i}~G@6@8gl8CLXju`=yVX+cz2 z@yphwLy52voL{kNd^JORF!7T=08_$-*m;OUdl-O#_{E`US=V*$=1RHOWZO7{I1mnx1jN^)g`6{7T^xswYo@ffXM|orXM)KSDKD}VRCG+s|UJEC$_9$MYe0%z@mhbO}my2L(Hlp zKx8HCe+UqXApf&nX)gGMYHKuaOp}J~KnJ1>@j=*||BDua$UYvquM!4Ngwl$>>WP`+ zKe?~k^T`?qvr{;UITr`J?kh8?&f?n$^F(t>e!}=Wj9bX4Qi-gTpgH)7%rhrY%$Hc{ zEN!%SP5eJ>(2~pqw+>9hnn zyl0D%MqijRizu0>>hol!0mbUb24`Cb2m3m=Wz$bbTb`7roC}q!U-1`ZR(v20=NXZw zdPbspMl4bF3ZdnRAk#sn+Y?4}WvRdfGpU_mY}$DcT-g8x z9~8Db&;Z-HSV{FtygX3Q1MeqXtW5aDf1JWkW%6d|?apq!@pN6~lt>$E7#5VGAvfW20u-$)ZL?*_JtiQRTi8(rgCWL-?Sl~WHMlLgc-2f~>%rmEp z1BUFnCc=QGJMd@jiuRdW=|Gr;nC`%J?n+CNrkb;?X4B*e6>TEI4@TH_2Z~|4x5T{y z2@fON0wFWH2b!N8Mi|-dKONh>?Fw=^@}^Y_jvX+7ppxJ=Dn~G|kB(HLl&D4oDtTSi z^&J-0+)ZSi*l~N;^_{e}cav;>aM>^zQe3w9v}FLLS4x+a-y*K;7R~zkD3-)Z?i&NW z5z`_^ppZHdfU(WQNq3-Auc&bng}ao6l%OgDNr5JJr>+IvC1}ec`BSBxp4=r9S<|b3 zs_Us-84F&PFF~kGi*CM6L#YzEZ&T`YhuR6j2)pxu0`9s_gwP)AibA(a{;4w66j|`- zFEah4w7R<&t1zdvg%2IJJ8(xwB_jQ*R3cJ|>NHD>tW!j~^JrO40-Hum#b42+y80PR z+G)oZE-N&*2I5Z2bhMb?pu3dSv}1xbRx8J1q$JJ4Wy(+PQdkXx-ND)JJ4egk|* zwz&9vg4i;@04&~z_QL^l|Ze;e)0$L0Dpk_l4AF5JG9yaNT&mr?a(<3458bh zRrt&l4-ksgS<@F~r^o|@V)bj0)<71;~2bzKG zd`UL?r^)6-4q?{LBeaFUO=cyVTxQns#+75+`f)+PFX&8vMUVNFf?&PZ@dprFX$rp( zI)J0mimq!Ld(%Gb{5O=*BF#25wEw~wD>l6(Nv`Y0khap(&dAwPq3w!hot+w4yD4ah zT##bB6PFC>f*RX_d>P>lar0vPGKC&|H)qRs-USkDcM@Ypi}@YM7ZwRNu;Kwit&qtf ze~c=1szFnQoK=r`Le2_>5va3G*#tv;ARN|oOndteE<@(<*tCxZ(;fQO#RvQRC#RrsO*dUaI+B>?r6Fg_>(AX zcNETq8*a_g(Ovr5aBJQ;9Y)xfBz|7C3XMy^2m_Pi|1Cgl|8X3X+Q~^uIGl0cD)ue=Gsgq@y?YfJg}e#CG|;;iB5)EDytIq z!uWwvVkK_~9@{;rOpIJm842hw4 zlKe!TpupeL+|9+gnuBR1a|~t}*vABm7|nG~{*n@BFpFst*hV$xLp>ocv?NDrPE#i7TFky9~KHG%? z+kMEzZYQZ0;4bYfP+_|fsYK6m!NPVgn)9N^#m?P};DV7sQg(H)22C$23vidRl4Cwd zTvkP;(NTWgo<{Cc%m$=I?&wU@#3q_DeKJ z$Bdu}8A@i%89~O64lq%GR`S0uOCI`dcNu3J2MuOgZ^q#+#Wkw#Lp0!h#PmTEXo$C& z+_%Vddp?kjDJy+!ue@|H0~qSf?-3mH2YaHBa`01@HRq+p?XL!eM2fbrzYKn+xJP>w zFv31m+@n2AjBrh7#AQ2_uD-KZ_ZKx#r~rl%yAv)O<||;cVeT&oSjTik?G@-M%tv!4 z2TQZ{WkRkwj}6!^>*y}Y zYJf-NpC&NKR+Hd71d3hv6o!7mls;t;{TTi@ewQN~H7K_g1r5|l5Dk}H2r9Yn{6`)S zTGkX?dIXYP6Nl^C{$as%ht??=t&E7IL>~TVsfeq%h%oTcU7FvB2<_BHh}DhPr9d*U zTH=9&=XN(5`z29gGzW+d0a1uQFbE(Pc~BgHgdK#(!`xAj`I~~o&n68L_D3S|A5Dq> z80DK%{2)7RlyOUWwlP(kQBB)AfOra$CnIAALAm2cm+VXG0AXE;EGo z=m=Q(Fx}pX{6=;xycu8@>DcZDMA@{{PY)5DUDs`3wpjcz(o|Olet_}N^f49XG=;@i zAwM0a%alIZ3OcAd?+vhsMhe@#Xo6kesox?TLv1+}Eg&aJKxcHfM|p_OzPvX)BA}9C z5Lx-|l9&fa$);)aZ1);MZ1)*nc1`CZY@j=h7~4I^kRndZP}@KT>Ue9;gCn+SXT1Zn z>gr%^rkp)LPP55P7Qg8zEpydDyUM{w&K3on6|#u=180S7KuSi96jI!tbY0gy!r~na zpIs-ObJ3JKkz(nJD$V=S;H4mJ1|72D04= zkL`gFZrgdVlI>1zy48y@R$%YW#ZDPonDPKCIq~-iKobQfCP1mSQee+Sp+Vi#qtlR-_&$b>6^8 z7g1JmR!G{b{vT+YG>hM_29Dg<4xFt6MS+8u^$`p2)5JYMSdv*FkzJNX6ssd3oEJn6 ztAicQ*he84;ilcYiHx*SBh1vrlpYP4Ozu)qi?j9Pu7Y;|RDH)pZPQ0dKBc_mVN#z< z;Su>IA|k)OsMW`soYqZ3Ti(uU>qPzL|211T31(E+!W<|LB;dfw&~vA--HFdfZ~iS7 z|4}IxCaIH@gRxk%O7lsbu3FkjP`r1(s-QP-w{MOdl+k?r~t zN+V1`^UN6pZIMjs)5yq8#!S6uI}C!N=}M@qhI94Jx@9xPKl~9t5Gwv5u~G;mO01Nz zk6wOKMuSha&WNS4{);GbL80KBhK4{FKq#;N4DDBKA2QzjHWX{ zWu;_NolFmHo!Hy%$D|0#x&-iSJqeYSSo}jB+x>{bmxG86qv=VYSTO*_3W&DF;$N;U zcy#K3c3sydngr1>)v=JkT3P%)UklrJBFG5;#Q%c%=t#wOFjPKzahlZUa#fm@Ma;CK@`%vj@j`6MN;Ppr8?k`goc4^kanDeoB%*MUbYhG~1C> zU1s7pNs3y0pN_I}S}UPmUQ)fRY^v#?d=C=z=4gr;jPO?jPjuF3Dp5)VHle<_q% zqox3BCW;$wO%jI+7>qC!1M$<3-vs;Vhy1EIGs09!JR2g|j)Wp42brl5sWnCA6B3F6 z`Kgfd`y=dqi`e$!_qVo(N95PHh%l^?$(SU^LM@*C?zi@UU#uxw*dq@@glsMa}ZQ5xF zqbhW(T9`1xKQz^zK&IHow8rbl2McsiAuk=lpkyW42A&%TTcW@}`N=d{IQT)pA%p<@ z1>G=n-)^ZPvpc#mB?M<;)D?IKSBQKO_|3Qf(l0kaYSFeo4p3PnQEcuX){_ze^Q2#LOwWTQ-@EQc|skTEkN zA|L<=f&c*4vuePC{mq`E(RHySpK-OJC7p{PVcME_w2;bZ7Mzpiv6hmVaqxhrv>fS> zX!-~6V zy%s|}x}`hXQ_f>y=%)Xjl6{ITi;p+zVamhZ#V5rf1m?EnEI8ssml)h9$6!1KX8&O@ ziA#r`AKGU~3DaLrG$?8>T2gYUgk0WyuPAl@*4{|ad7>B}RB>99CPB_2DeuEnkHg63 zY^kn?CFG+@mRIB_NXg+wW=cngrp6k=pwniC zf7}IRprP-`uA`vgVHzKjyBOCdCeKTc2=35lnu;sI4&=5CvVlM0 z<^VZB#=m_iH_?l~&k$cwVh`JrX@Z6znYk3G#zh?Z-AsUuvr$)^Fnz@M8YlXEVSdt? zp#?jhHUNLh5+5!(n>lhYZn{+3yc`V&J;l;3>*-Mp&IJcj0^{awt}kl|e0Ctzzg^sL zv-ahgCJUsgIqitr9gn-t=&zbWp+Hg2$g?*G(K1BdjXD|y1N||cO?Po*^pHdgrge(j zn!?!whh~4agh&!9r5aFqz?6OZxQy3@PiTu6V1p#?EV}1DN1yMv2PxHUN|H$iFxVWB zA6=4Ih1iFIbr-YtZK8@>a75GYY#xe3>oAmfG_qJ|vN3UsqhmSKyG+kR7$KXSROr9? z=HI5GBg&%OojvxnPbEsjGSkrc{RTq&W=yG#S_lgHr`TPrv5CZL?fD-%@f|&=5LS|T zs|b{$;SOiy|8xT4~3m@H7^e_fRMSxLq*S;N_&)exOsevT{=lIGq z@H7iUvf3hUJO%!&y)qY!t$oKu@7sYk{A}9?7;z~|x^IefI$H*8oTZ0XexmP9j-8u9k;_OOP6L&aB3QcP5gM`Z^9Tt%n4&Xpcgc+9|!z` zeUTJ73gd+q8dOhtN9PD6L@X{Exm$~RzzOlSBb=#r0nrhbo!+0NUGj|uBDL* ziG~j7$kv8Lfzork9IZQE1%sAJ4c82eappC4Qs`1DHPhj{J^AopI<{@)& zO)tnypF~^X`5H~DEm;@`hz5v*w$e>ZbTD!?XO01W>F&Co}r?JE_G}c}rN@a9D*s3WR z+8eVxwyhHT0^XCF3$EE?c~~jvtLB}V(12WC1}n=z@N!x|0U1Win*Z;!Z~a=Avgb91 zVLD=)O6G-m<(Y!Yej+oEeYvKZrWrMV7%EvpTUxr`H6Ee%mAWECw4bWeH0A9z6ZLs_ z7|2IJ0TZJEq1j?njtQ6=Cr<bcgHss;_r_p!FZrqIeniaS(CofH#nIz&1gYt4d1; zmkG>O^Vga;B(=f$(*PM?J7}O!TOwEP$N)y;)bzBWqL40`1hT8kWPCE(P^sn3n~&*j>@9gJL}OQ$|xgW@u)$%9b)iYZ(da zRL4Xr0lFb67F)jc)+Sm~ycT-5rlhO&lqb&!ZVc*1Bm6(&b@1y}_4E~_@Nv_v5bVou zG)I0W43Xm5&KEak4Rm=SFpL%;X5)I!i7b~16BJAyac1W|BlgRT{irq6OhG|!FoJL- z_%b?I%foMP--V)h1yT0RMPBY#xC(ki0mk+O@#u)g+~UUhEQ<845LQ)cPC^GxFTxrv z%|II-6mTA!N{04aEl-!=8F&_*v*F~%S#6ajXCau*Ci8F`_1FM7tNQz9#-rPF4R)4` zZ2`%z`A4K<2X4|4ZYjTjxVo};!9_!6dTvjZODq+Z-aT}HqAKAw@Hmvhr|W?F0?1PA z3+RZ`N#=n?|B}l^RvH#T*HryGWH@k!?)V=t5#EEH9;2SvMB>`WBj0__IERArJIcTZ zjn`z9M)TpcX_ThaNS#9;DThYnE|W1GQGdg_&VEJPeA*e?v^@dzcIdFF3FebZQj zNL2$m+TKu*LbMz;ct_S@wmiVy8qiJpUD^gF6b7c0V^7z?iCBl!!>h|2 zM9rheDdZ*63?v4p?&)GGN!rAngiOGRDDQfMp?)Qp%oZHN*F-2OpJ$mbh0tDFn7Ffa0Hk5RWmI(-dUBPmI7a{UYKcz7L&tbBePA~bMAwzF!qoi_TkyUp~IkmTe!;VQalL5SYEFS6W8R7WbOl2??KjR zKo8Lym&CkNqbQjl8hA)Mj6n33^;Xe%Vz|SQjUEg{J&!lXPvO94Hj1!C@9^C?xkw{eJ6GRBhbL3kZy=wKRZvc!)Sx4S)1?mRW42rfiq zm76Gua9pIrbKa-}*$p29_IIw$O0kF~?i-s3ZR(%HW9bxn73v;?%99<8AjSmQ5j5C6|;vg|&CzdXkuwi{T1UFs$liuh7 z#<(07rsZ{P5(pZDrmv%ffmM8xbIigq-pv?rEEv?VVmaIqP(5pTMgyPJA zGoy3?Ds+-gBYg_HmC2cm$hxeWgO5p@gXU5A?&A*^PX}ZDsqP(+iUh4*E=QS;w`QEj zAC$E*TNnpZk}`GgGI~mAa1dcEjtT5jqW_k3z)gvk z(K(xVb{I>srXGw6;dHU*l@M|TNX%8f5^5(Z)ltr=g!dRAX+Ru-DR)??VBi+pK3sEV zuB7q>FytD8!z5j~@u6dJee*jT+`6|cyN;}j4iFZbFio5}^pXrCB((8zk+E#X4S1_$ zu5v4gqym#LFhMor;exJ_4F#PDy+|k-5>G}wFo0YyHiT_)Zc!IGxbn@6iy{;*Y$4KA zQwf6#E%=L`N%5+~fS7oUPGT3A<;dtH91>6;l_5Hwj_B=)DA<}+U>rMCIS2UX^)kd^)kEMRJSeOS9g3{aEun}$wM_ zd|@%TYVw#zxbf-Z2Jf~k2U@)`tnj*ueH!X`KYNA3O-DAvlwR{h(A9!>=%yy&xiTC z`p%LjRyOq>m<6#u*tNZaI;1RaCuE7K68jl!L!cY+j4`5XNjFB0Qoi0?#?@v_^pwNY&hzfLQQ$)oQ~S1WX=_v*(Do`|ul(=@?q;N>lu0b|cnA%dN>(V3 zmX2}kMHPw`%s^~5hjDf#9-q#)1D%`jE2PKsK?VA87jXq7@^9ZpT>Wm}8dX7XW3}9~ z#h9LSyvdr;K^C|ir&lr!X{~kjEyGlzItu0eo`jrqNs@jKm>Dz%k}w@C6gL=s`A{H6 z2TgH=>S3s|i(lSInP1;JkUz9|7*yK?(Z-H*z=KlQ%j>2CpRatb0SKR1LKV&b{vwvg(sa;$m4IDh^F@tG-QhsT>|T7q zJpCYfDT0{)=VLlk_qw9zM4l4g)&D!ZqG&lU^ZGJGRE^*Y>$+;B~Q+wSj zS=EBHWT5_x9m?FfFHo&uoZA%HNWV_ky<`x2czZ$}GGZOu9sPsaapTCWaG_un;^!hH;{7gV_3^ z?kd`daE%C=!0J;3;>O3^;wU^oe@+ z6^hqpBYL!V2=;8Rt{4{ z?H3Hz!}=Wxi)e54jOPE$C_s;3wBt3O{Rq(t+Zd!V!~^Gy-*+H={?IDHvC07%;OtY; z=HlIyuabR?O*C>ZsGrQ?>mh``8T&hg#XvgF+LEnpd5BIjlAB7wY4~p0KQC;r`Giqk0eGbV>I)f2K*AYlxI6E4FvL3CL#K&k!jB$S$(pQwqOYUCV;|61K;T{1 z5QoU1#X($sRDzf)2`|g9TXtJq;v8fq!b)s-ax$&rU+gy4U(7iJ<1H0JO}-gcWLp5~ zacF~ogF8{aXKVh~A?~dKGFQZ%@J)(b+D6nD^Nd5itzShM_41OQc2{>J88jDtT2fg`RR}$JgXi$BrTp6SNsSNXU2NrjH zwhr?}G{T+Xe)zGQLi&E*vs6e7HM(Dg0AE!$N1=M~vL=zg(Ftl1 zSD=r`{DOmotpVbA#t~wGl0iPena096nUoJ~Fv?JL%zV^z?Ht29sV)`Mqvl|I3z_BL z_;HHIFkq)yCjguAp~OCQYmi(a|My^;cD$WBqs1K=QgV23YZ(QXy48?r*TX=f1DGGa zGO1h=N0^Z>sRB43`WRi^NK`kh@^TO(*;uA)riVeN%jL@|N`SCTG~01boMeMl?To`N zfdbBZ*HTSd`qGiz75jak3dXFFuzR%{c{2_`Z(6zG9%kr~TErO028J;!?AvhoO-1NK z!b*oqMjY|h&q9n{T_v_sRt`RnY7p~~fRul59X)!8y1$JB{DlcNdmgy6AN|onCMh>! zc#W=Pog*2M6Y57a;4?~T4;z+Ih`J_kMZ7_zAcoGgy0?+Vg8OkAp*hU}?#Uzw{t#s2 z6e2lFipZ`6J5h<8xMPUXzTYn3!@zdESeK?n`#TP47@TMf)=Y|7_!1@yhNKh;Od#tW z^VHuG4}QT==9psZQQsQnh`W;~gpKoU>v^tMV!9%~b%znJ_qHgE966RITnuHmLIa_@ z&}YpUK+Vl*{bf?aP)qdL8`btoO>x{Z+jQlffx_cNLjh0cs(Kf}*@p>DjJ+}NnbSH8qpL_w$-}Cw zFm21^j)@VCYP)HOzj48{*-+CWf9=xzF}I=!kpzOPO$g*ieZ^O_5c9F8$E=|-VPY@(RpMXP#5PoxuW13+U_O z{{g(?{o}t(8890S(h+}YiUNe6tNA5;tOd`hFZ+jnkkd>t>+q&kEiBS|gOH!3+bH&8 z=(V8YJYIVVx*EdF=0upII&nA5Yj+#a))2lxJ0Typ+d<>Sdi-{C@2VqX61-bXMDYV8 zT*TYQ0AF+s#OEf*vxsoVUBcZs4EsNBNzJOUZG$jhb2E_oP^?-_=GL-|}bm@(g z8w_CHHv*WggDbK6) zD?YjQH>}3PkOFkEPdF;iE-NRsvInwuM?K1CM>-$8zg_C|8DD}rhKI)Wvt~tI3SRcH$1$l+t*!pDC^8liHhWx zU>ZHVkw#;|cIa3J8mrXiTL^c*LUp2#lFRAQ)jx6|=_3!GkZ%a6P8uaSMl^%+MNp!b z7hEzYhYV5G7c<_Par51IT{K?CQMdip^Ll_GCHn}VN&oK1jsurdf@eKGf9EyJn z4*q6as@J#L`+J&hNayUv-=iv2PtsabucKS@OnoohVrcCRNFz zVcohTm36qR`vbIQAMb--XeIFo?H;uJ~_ijD%+ z57s>K<ki*i2rIAO5g*_KDB3I0#LI`0S zG%!&?8takZrVkz);fuhK9D2u-7ccP#-${04O)S}%^r@?W1Zt>?7fHqZ_lP2nMXdYB zv+*CJ`kE?4(r=|5MUYj9miClDfp}3LUuQ5`AKh${ue!Ykv{mHD^Mw32OnY`}x)tf9 z#Qe@kL$o|L7`cPfuwfGhz6kRK4{2Z)?~L%woiuT2G-P zOIqHz(!pDS%$Mwh2EJztr+amm+a7#SnW;l_Ij7!)! zy8gi@Mu&Fo%7=DNvk6b7Fv2+4@IOF#zdS1hayX-H;O-oA?kO0Rr6M#{BuXq6ik`MP zFQ+c}k3K0Xgt2Y*_ySiw&q-M6KUH!Nn!)fjfvV2^0rFI-z+=l4x9lAjhJD(%%Y%WC+X|+im;vNwI7X$e^9wOi%j&n&qVnqrW12T`ZjZYtwgE&kLvVd;_j#p*jyhgC4Sms(7m6nj;$7+PFV=!HpELshjKV$l5q1hNTa ztf}E!4EJ&isd!7;a069TsagjRhx?KZK{x0{ED0K|)z0{xd7M7@Ba%DZkCXtwVaxG) z$v1UAVwmgu&rwp#o}4EbqoTnkoyO;oj1UC*2ad9v;A2~9Lkm?>_bA~W6lPwF1pRhs z!0K}tTVGg505Ve@D~#tcV(_Ho{V~Aw#vINha@@-0CS{aF>oQc zwuW;mCmL2t?V6@l#_ppO?A!1tMat6nA17?}_WL1lh}Ri6@vLNNL41Q*tyFiq)-Bbw z%sj?p6KpgWecVXMu^zyo0L+0qNDl(cOR+snd@Uoff@^HbV-#e3hfdJIJA+R!ZIn^qJJES_F>VLA%k)uPdJX2c=+o&K9v}PawoEzY!-^pE5QIdp?CPN5j%l z9%dU#mDxH&3NYQ-5;Sg5$2`z5dEEwF+V(S&>Cor-FH*D&gqp8^e2Zp;h-cw1S7)kE z@vAPXAq&h}rIh{e;HKFhtgyc@-?bhQdQgApS~d);?=m&u0q1O1S^JgZM*fUDf}B{y zsOvC{IgpfzRf>}TnFEmFVU;~1+Qt$@3NwJ|Uy7ldU-LGGl0I0Wo0SJ>0|6TD(Xrka zAJF4TPy^C*_+OhcPaja-8(M{S=T1Ix`G*>oMTW8;#^GvVSWKH2;5#(jR7G}mzFcRC z{YdLWIUzms{>YpQZLJV+X5g6#)H+$g^z%F;uT|;0E5bXTb$Bc_!g<3|FU5h>J77@X zaNSH0IS5dzfEbz~VIR7(r0kbvtX*CUD2_BE zj3M|o5Cs-Y*O2HA+{A7dwTwBSMttU(Vr{6fSuACoZ<8IPw{@Nnl$I^Y8ZvrY<0%W( zkEN*gfh9qP9`&hfI4(nPF=YHK{AT>+cgtfk1o1~ADA-{c5hmWJ+@KFd8Rnnx|qm zN2gqT{48g(ItV|pgwoO5@}b{zyFI`CYT1VhAgNI-qO;8P27x=A*x_O$p$CZJ>8oOi zBCU)Q$LlAxY%H}qnzxtL?g4IVtO4X{M5kQ!Qh2`v zJRi@|w$j(C&nE35*v=eg@$K$JOfw>Qx8d<8 zX?jM#_ZzbZ7M&DL?VTyA`y{3Cczh=i297U_2ha6%zi_U#;s`X!9f6aLM126XO`%oh zJ{U~o=pu|&n_gb5hyGp*p|i`=WLv^VI>?xXYy?+h#qHFhrD`a2y3aE@gA-bS1|pcU zYaj%6?glxyOlZ<6lsa-OII#oT2cTC^uC+2ESXr8#3%iaHV>(gUwH%{ZTSEL4Wr7DZ z$oS+`;E$ZK4M<6C-OhP&G*UQ*$AXxhnpB71N--Kppl+b%{de?_cmD?}! zVPk+$sb|bmNuY;84TI?5%3?zRIo^m6q8{d0x?ubQ59EBZo)e|V2cewkK}H*Qz=))C zL;G=Zgzek6Gaw!Ss=K24E`|DXPewE`^uesWg}wvq{X8qp5*J% z)H1x859+(21H-v8S4SVsgyu0>a_d*9^*hLEO!%@g5w`d(y_3&f&B2qsJonUO0Q^VTYVk!B++NY7s|d$pS-+Q_J-(j62D1x& zAL-2@y*xf)OeXWsfTyA8h|Cxh3LQ{0?l9a?rw4cSG7*9@Sx6l}8;W`hm7X~gX1e23 zV{PfHZ$~1Gjy5+xP(5^=0j1`I&E@Loa^!>s+BsX<5YRZVX&i(#tRQG50wUhuYMgLR z7lAe z@a1K&)pPQBuVK2}dGU`It;5NfecTGSi(cM1my1Po9{!(2rMUMHm8BZBr`ud(i&uu( zrX$BN56xXP??I=tB^vGWX`k0APcPn{niC zgC@3$B?&{&hwyi(2nMDG{7G9M43sNs zsYO$G<0ieWUq)6+Ql+qD);2LC2t0O8x>{x*x-|Bo#rQ*sb5=ix- z+X`N?z1&Ba)uEDD%Yk`=<_7~Y9n5;i&ff$&%AgDDXGQGyT6PYKiS>fs(3*r1z?nc^ zD?E9*bR}^cX0)gUmHs^7BNDSD-V4m&p7F?~Hg!mQC4H9|w$v_TglYt8EE%Cl0qVXP z07zlQp|({=wEEptOS?$?S}HYdD7Mc0q#ra{~2FwSsiB&9rFv6n=?vqkb~ z$`cEqNF+e#q)FRcnGa7JuG03JiX_v-M!pF{7&eJva{8jXv&{R<6Gr1aFliRIY=D8MqepNi`=U-w3;oB$8A= z332~9G#hj2;q?OQl#S2^Xsw8DV4&Kp^qWC6(x4YP#_1<%rP-T7w-7Kx^1%5}#wU)m zjOE@WNc2Q%kQV+rY*}Q2Gal&WhpV}JG{!>wWmTbA9l7+!)*7jCkJ^h-%Z$Ok{q`$HX)HE5UdOxgBe z=0p1N)ih8&L{A`-owm4RH$`R@S`@y`g8rKL&|GyO(&gcq-@$@vsUk3>xA|)31CbZB z*6mPY)4Gm$N+AEu;+1X8R92pXZGWuQk z9m6AN=&~%Fw~72A5S(F7;?pf0pS#f+Z+-XZf#jd`-P_^)zxN+%a|(c#9_xYC_b86` zUa<8V#Akd!UF5aS8rx9R^U|>MPco~t_nzYxA#;Dk~4C#0L4p#foQ(=R7*3RJgoZL%MLsn& z;TlDW^=nkK*AQ}pa2+?0e&CFv8E6K2;i!6#Adz=;3JHuSfg8FaNnI*D3heCPvvt$9 zpEd$(p0StmPjBoP)GPb2Ed@JA+;K(h_ypf#({y!bC(o9txH+diHB9FU1=F+vnz;UbVR8TpO_sqo-68Dk4~oM)t-rLq@=UA@PY1 zcw3aZI4_!oLm6}h+e6Iw#*8tl2T;T zI6SzX%sZOKd4?gNxNtuwzl*tdg%U3I00V$v{}lIyRyG^I12Se!o?aHV-~{0Yl-&U}|HGVtgT zh~;RXzNgX;=%7Xgu;v|=BZ}cSQa>jttdap8t47}aMxdu-n$zh|+oG$~x&PC0IkskY z5A-*}6Zj$mx9iw)8osaNtpbs79??v|7=}k?V{jKLkpgUt3J^@G6l_X(?;|li;Yld2iK?^(gc|%dR5v`6Y4;%$szOE z##>+zO9$a%J7%y+(-~u?mqlLbtRWvemyE}7Ee?#8MR`!y5{!I0VY0akJwL2oEed%d zb;5b*mdRP?FpZ8hJl4feW6$ivh>P9OxJuX)>@rGoJrqePklGZ$Xp_@uz&TNYCT|W{}S1*9HW!d;WR7*psjqL_r>! z6!d9j^ykORe5v;DYw=>6fn2XK2;lQJWj@Ig*F+33O><3+O=6UxID*-`&ZX$f5v>7j z;d3J|+w>;t57Uk#pHELZG&kdOfyo&GcWketVt1E(ihhN2%yf|YA*u#^KCmr+?73`M z)JWo(8}nr-AJr5bNMu>R%-+|HWG zt^`G`fc5CIcoEPX#GFekv{`r#hdGGSpu29Ka2Ml&!{-Y0{N8eFdcYn(;NY7Qc`;qR zol%wP?>;P_K*_Rc)M+ap#}{ROIK*%PZaVwH3Gu@TVpMcClRQ08j>KIkin5J9sx6*?A!Kj*sg|D+nB*@( z)&-^}OX-b1NJqdOOZ`8**ACV_n|ro9EF1ra%Zk29eNpS_4bmzbb-oRDOY`O5)KKz8 z!+;tWy-z9h6_H&pe1}yfSa2tQXu%4UZDBN39OL~$FQlFkggHS(ug1bR9O<-t;+D3@cKT%vqiqW|K+kZ!o1A>IEJJqPRy8syP zeX%0YoA5Cy^pzkB9DQj_&iIRm%_kr!6m=8`*%O#Gyuji@0HYrL9rU~5bTwqkUBZ|TrRW~9e z1WMac8x_^>&N-|7g1K|0)Q@wEv4%7^j2vDQN+A2+M&qCkNF$#!4hX`I5bpWH+XCEH zqu*snCh5qbg)AZEH`;n-C`m!M2K~33V2c?z>Xnc`F6!EXlp>yfj|$gYyyUPfheP1d z`@UXj__^F`GxL78b)ZdSNa3iL>b72* znx#Hrsi`7Owlx^-cc3y{6vds3z`EXQ9qM97enT+x(;9%cvevZGYSrZVmH_-b*n>S% zVd3zHr6;c6(TW7-a$LM{?T#GPr?3<$q+{+r=5%eojYX}EG+bj~lhs8zMq;Iw<%Lwm zygnTgn11~c{dL0k?(}T~s3-~U==^2KLW?hVMEo;qDv+~wic4eCuJ!#GFE5G%&A`y2 z+&~#2n6n^!AcEurzyvg;@hD`<qzY@P`CS?UY*PCp-Xf6NB67p+oRe7xkPY?ld>_ zElu!)?Sk&xYZG0exX?^09mRuvft7hZYQ2MLd<e|vY zx?+*&_S-nr!T#unt@_fnL$EJmAO+X&2>b8NM;Q zaVSsYKMwFaeSQuGWVD;X5g27of=etFi)D1%)${K@A5H>D@lz6eTfvO8Pz#s zQ-l-3qLlD~lX{uMJ*Z|1TQSckh2JH$dR-X+PUz6$UK{{2iC^5@-S`xzl=%(Gk5&o% zR869$cEEj*woy`{34@MX`1C}ZfjoaFnk;1Fo^>xFr@)otnL0}^pzohO0`l6M<=-*X zKJTVSBH5)m$QX$L$QjGub566}q8VzB*iu!Y08v-sj{FPKfi?RY4l z4{-=3zpeMMz*ZWgfCelu9NS2NNOA*#s_w9v=aAz9h2I=g@$RBoLdk1NH*kO{3}CSC z6~nx2xkHH^Id=O8NK^n1RdMa7L}b)*v8K3-+XQg7Q)!=DfbW)V#WaU6|G&9!#WIi8 z%VxLjebmHqS(stp@A&*{?UD|KeOhLK=g4VLbVCYnhYOzQ_u~Y%& zlF?A(Xui&quxh7HWw1NiTZlK?3CR!&!p4!bx8~z@O%e z!2r&AL2;?zuRM4;A{_IDwa7Zh!g~f?5LwM2RQrgh@%uT9>f|X!O5voQgxvq`>de;> z(R<}FnZS8uSx({6?ma*PTF6v= zg=e+GMyuPxljDb4^bZiKJ5WDP$Cd`&7g6&^t4&RT8Vx0qU7Fo@z2immDYc@Kn_L@i zXKF6SV*TlS1j}B98ADQ^WRKxv<NBsAppfj)%uU1*4v?;{NRuVz`>sjk2oOTqAMA(^9wzhZ!C;2M|j` zBy8P zsdxckd=?Ya$<6BM!JT3|w`_RSznqcPUVxMugCthQlhg+m%AIx{H}8o7p#F%T7gb5h z_P^Vx$q_;wjQPIdc$2&H>=P>)c)Wqt7;ug^|6JU^N9pIr!S;!W^hY&EO z_j5N+pp)QYucns5(ACi42xe0b*9TGTM%`hB8__eB#H^8>3HPcA$Y zyUAgjRq|8qgl2+jRWop0g*ZTvVNWBdI;vO+3|Wo=u2s7Obh`xQG4-Tq*rumA*c(3> zf*&qK&|Z+s27_^8Z|ojmYv!dg@2Eq6$8Rj^7+UF_nguFrDB7LZz^&98*5U<;YBVJt zqly!J*rMnMRjVa08S_XiPXjQegApO3(0drlfVzp)T*^IR_C zWLz^#Dy)exip1!6(8G6P$l{0KI_o?7@G!ug+Ug${FRvxI9wy{yW$+S8AHfi#(}3mr zQRcN8&b(c$hY`oYexRKf1kFLGP><}H2ehBR&J#DH5pRc7)pLi86dGv%4w)!#JTQKi zdpHl5R!XR|7@$BeL_gvjCl@K0Se0Q!kfDJAQRYG27%gY7FI5frZ|?(y5aDMYkPJ5Z zCD4@>^RI#)KjiyQ$xMLoztCfc$>nK<3l9IIp#$uhcnbbjRZSr;&Jo)ae>cug(`Ec* zkj|;Fwg+jD>v0L=|e{7ukME7w@V46OSwSjHp<4+%4 zl2xSSdvIfxQThzyTP9G483{TmwIPSw0Tk|%X+5HI)ghIQcNs+JH_A3y!PhukP6O9E zXQ1CFxW=~mGM9HetV&BL@Uq^Srv(@=^*r00NErhSHCKLU`c2>Id#rrt31 zjwVb0q>^!SQ$U?9nVLJh8|@!m6A=?17aKi@bWEN{YtCM6^@f}RQo<{KTU?#S zy3qCR8j(y?=hoQB9Nj4Ril75ww_e8xGbBmTV#^tvy7j?V0Oo$iIryS)=T=X40Ij43 z$OiB~bT!iWI7xARzyUqIc+-F%|HqaKT}|lJFE4(vHI8lrQ_87Qs-zX5ObfXyyVR;l z-z9MsK+Xvx%3(Zhrzskzft;d?l09o^tk^w8g*dbh>H#tbLkwu>U&rHiP`o=f%*{L}@AbeM>4d+?lRgSHB6SNvZaOdy93tZA~6#-ed>ABH8` z9C|dQkOi7P&;G`G3&gv+$nsKbE)YvwUP8;ij z88wX3lTk4M7?1^QGp)2DfX0)oXN%YY0T}Mb-KoI7dNt#eR9@SKa8jLpwV+I+HRuK( z^v1I3kp1Sd&z_cXOT(QJRUv8@_{uM*rehWGX`{uwM@l3CATa6bAwH4@b~s40>|kgr zu5t59E*03x#A-T1@{W6M{YgUoSV1je>uO}=?d3W4 z+CA57`v8OuA>fgN<5GY)3hc7;`Fx4r32tkrR-RQ0#IIu!o(k}j@JU+pdARg%-o`W5 zMNL3|EbxU3JWU0+e`Gs8Ca`M^J1EF?_oIQCBxd^35}8cm*xcWua-GFpl~>Aj)QWaY zhlBe&VAr@(Yc8})yEpe@xk-F~z$SAx;BnC*FvGHvK6-KH8 zi7!7;{MW!M`iNB9b$k|x;}wW<+n0Qg5KTRmp82bq6}dcz_uSDGuV`HEeJ>B@B1c|f z_oS!m$~&lYZ?l9_;Y-sSk9Y?J05>ziZQx}BL&_peyV&3 ztM47F7|k3e(8mJAwK@U(KL^CNTwASRDtQr;hp_3)CzjE#1rit(QLitI_m^PFi&UW=6kWFpB^~au_)CRWNq9U!A zOD(gv?Q6hWl89@LqN3QiMC!}p*%*8{VP@4)5Df7ac!FKNo zxN=ee9LV&&rGO~orW=376Ir1A=N}X%JimmrK2)6pgwFpjS0@mfv*htKQb#2 zKv`HH_PfDAao=J?pE`qKdIF|O7@w-weqb=bk5``+Fz2neX^Yqzpq&fv@_t>kLjkcY zjKFkK*#RO8m?YEK6PLn7(!t>}LnQ}mscf=P!(j2`ApDn{Vl~SndxL0Dc+%F(vw6s3 zM{s$!4Q!lN)V(1;3nh)&e3`SwA!5-Va!HGz1@A2Jf#3ns4{V-M=>NdFF>l=6teU zvf6ZTx-dq`NGzlhMN@}+dCtxIy5M^dSNN20d3;1fk`5ml3l~G@(0F*bQhqO_?cs%? zy5@lnhI6PBg9TE<2mL_bZbG%@5epR+C0Hz=i9*=Ioe+tPdc5}6RE~+he&cTo0SA)P zShU&6uwy|@+-EF*KO_s8VvlYT#TzDVbq3rQaFKHThD7~ZM1bvS!`yk|P7CYTE!xqN z()RX{;nzf(2)>q5n0cG{pb}_-qY(Pbfi0II`D?5(Aj4{A42r-Na#q=2>JIu$ zQ=Y%=Oj9BAv8*G9d8fWDO<|1&LVTc4a2k-R_n9L1S32u|xnN@umkW4oq(<+lPuV_0 zf_WE^b`Pzy$Hi%d7)%?A~fK5p$Hfp4iTzlLwz4A^n&;A+D2?P@<-^ZgBshS^4FjB4^> z;IH?Vo@}J%=|`5rm8BCFS8vZ6G9SiwoJnR;`#tQdJI|pubrcvPPFa@1jtJ?^Lok%huCKDxrZexu!1U$Y1 zA7u=(E}_4TnvdL`C;a!Yk`H__fM@c-!YGPq>TH!(KbiXbuZ#iw@Ha;DOXZb&sv?_t z!dXa#<~))B`JGw~U22$U;&1Wf3xg)kD(QcP_y3p;Tb*pEnr*|2tembxEXo4d_my4w zQAuQxi<0{-lRdfC>Rax%cbJP0(M&8OZbn`@=C&v3HgGdFe9&&5(K`@ic^nOq>9+GG zM+y46Z-vtF71{?d1*7nOSbAYrLt(z?HCir_}(Y4Iu zG!mMN;|%9qJz3#%zKRn!}fn7u=u!j^o>=JPgvu-2uDUe@9zJSRgEO01X9=XNhB#!8C`NTFsi?jF7Y$ zDl}tcuBJ?2M0Hc+s%%TYo9}?+{1E#P`^filb-<8)qj;Pku03hK(gtEbLys%vq#EmbyZX?a==nTEBo(CKTd_O@Z6b8Fb34TI zTjl|3fX9$gM>=@;7llI_W{Rski zCHe_wkP%@AYMHREa@QVLghEt~q!lVe^^c0KdXN@3=PC@*^7xrxm7vkW2OuQxg$J<( z{ZOERjx$Eg0R(096NLrwXGn8Y3|2xOG)xb)2hY*Drqy#pL%lf@@sBo1I{;G*t}IH2 z-fM9({s5*dI11^4#PR%xPV|pC6gYtB8>!DqNT2GyhNfr z1c^Sl1lbb~31Nt)H2ZiT*77B0Q%)Isd;U~U@x!P@2ZvSH{bTq8AUBLW?|P zS{$&4#0K=CdO!u6H(gbS_bk0kn7E66q~kELT3S3WRz9pd)R3#h{?cb)_f$!{nFof7 z6}r9El%jyghSI+I&r;Hq3BxRFQCQw-6gTv?Q|K zQLgk{b?c`biy#2Z5ql*Rypa|_zmV1=PVr$M6UGBCN}VUb7fo17n~(+UIuFHKEyCl4 zbI9r191Dm~7k%P7WhYGrXZ+-gB2>nD^1$mtQ4s~mU(_^qi0FJ} z0N7xLeC^JGjxw9DNZG%jbUGK);2Y=S=M;D@TR$WzGI6Wn9PTzilgfgDL_#Yr>evksV3ZzW()=4zu*k*wV61@mWrh8ZJv}ty^7A z31kB3{P|bUqF4s)1`Y9V-|PfcJ!Cp|4w*B-`v96A;4o^NP|3h-4T1U)If6_CQH0(e z?tQ4ESMUg9Ut>H>H;lx*cTT7*3?-&>g7x%Ct-;*&V9DCv;T$ptQ07a_ueZ3IO9*3& z4QL)RvM2Dc{%f67-DQ1d7YVQ;BxSb+hm!t---tE&;g<8g5N&P^locF@slXi?qoUGZY?CY#TNh71G-efmg{<;;Qbk`LLb>Y!B6=EN3!IzkacHuf2a*+L%naxr;r%XvmH998`99|x2*=Ko(@ zC$SF;kHRoU9ma7vu9G*{_`+&_*%AcG?aQ(Zmv8s~2PU_b_8y64j=#hevge2Y+=hAk zRv7Pu3c_Yh2CI3ys#7D#ga>P4F#~s}jm(;@#&QS%Wth=vE%-r3Ku@XM;8Ytf*%a$- zgq3l2S^9Ny8jV~~cI*!@MEkb55Xygz3e*Gl{TvjOeS^2g^72E>s@EZL1>D^2;7A3e z=0Tgydiin@D3&8DIGka?N=vGDp@-szun=jc4&Sq66Hrahc~5M3lM3iiwzBgG8*$VAzcp(1;#*YQ zeTGfpgtc}6efWk0M~lzwP8tjT32r|ek!SUI`Lj0t)F{|8ixZlK#wdw%I#yp2{D=vD zn->NwFTPkm_V!0dx!NQpreDKUi{&uhan^YqZfWeWebimWnTxPq^2safok9A zfG6)&S(N@GCKj-;|C~AEwOTYC6$|4Cc`OCYgQT5QCK)5a^`xo!~g_jeWL1 z;Tz({jl=YvWP(2x;g{Gw0b#XcwQ>ft))WL4ze|CL$vXAW>IhtEgHnNxXfeNh*oucP zl$XqCxT}1Z)p{iZqfuu<#;*N3zA+$idDcnqFkwbk@ASdEr2 zjgn>?VUBOs_!UcfVx;x*a;Iuk<2u8GU{d_6Xl0nA14U7{`669_e7D{Cu)oG&E(lzT z*lx(e$d8p^z--}8CsxjyrKo98qdNw3%XYsMED90?P}7*hkB)in8-=jtgQI~hzMK0uh(gQp zjZf&?@zVAFkg0OU0qc<{Ho7Me`wSmfEv#Xp+n0*qI#Ti&9a%z5oRUPXNWwV~BcMyO z7ED$AO%59va8KzKgTE`oEQvh48)N>GKZa>^5^5n%5X)P&;(iXdlN36}DMgLWrnsRz zO4k*>kO(C`31|dT4h}-;8;*qaYO(;Z;6Wm(10yo5!tvCifO@(LNeHhztT$E{btNoW z;82uD#HQu&q@jI^cHX zh9Sk*4{-_JK<|5KQQNiI5Y6_bhk@e3X}~@Na;D-O>6&nqr)#Kkw#A`NID!pkwox+0L6!W^;Y@JHHRFe{8flrGCB_?PCCa*DWEKj*q04eL zK*xyEQ{^NoU#K3lj(a&Lr=ADE^18R@o{fHlsKU$+xj_G(cpReDO?ci89si^&jjd*@{;g+VdBW34Q?nK{ z*0Zl80OVn!SCez3CCjyU)}YW^v|4;wiC(S)F4G<5mOn3}01Pm*$<>a+;wySL*cEpo zI%#|x_8>$POlEWH0n(~#cGr2ZjwAIr4sOERhAUPCQo$iX!}JmV==&RcvLEY{nJec` zu=J%G%TEf!1x_(iNK!P!8C>c_N1lNpN-*chWnNWgj^fRv>|d5Abb;9A6_5%LbH4wLw3w4K{oM>nOleIqUG7feHl#h6fY|W6$*P2MvAP(zKp4v`6&OEs{x% zy`?`LWZ`Oom{ZPiYQ$Z}#|-JOUO$eAYzRPJ_UJgzm61enQH=>Gm--86pPu7I*)}mo zbWbvpi1#VM7R4T9;NZ zOE=H`k8DbUTM`%d9I5Irf?*MaiaK4MafQkxnq_C!*u0)%ED$c`9Ywce$nuWUA3axN0`mhrju9}VfvEZS2!;4~`a`SP}Ti4W)RKg=q+6PdE)va%6o{XMY zqmHyLz|{e~wQp2IkZdzelLSEiU1J!%U8w6A@x2_kh9uv5B{(az}(pI&lJvf z(`HULjw-5DhflBID57Z=ydCo%naw7tBV~jNS<=yhITkn2YFckv*qXJw%RN^hzdL9` z^g@OlxinG8ZeO&#?)5~NIwrK$oECvd(6>fY4w&yM(QG3_tdLb2fJoAV!rdsi#@h`J z$577+0c5N_q*Bp}B9)tu{_t_ZyL{8$yF)`g%eIQ*)hFfkystEv!yz7O!MPZ(#Ii;! zn_cP>7HxuaOQy&hjA$P|UP`pP9MC6FW6%i+Nr-&b&5>oMV?Kr|MT)3#IiwYy>j3J} zXw?Sf;8r@+%y?Z!YkYm{^g*y-2@yIvzOx$#6QwRo;HwSOP=Iv*w;USc0kG0a1)*Y~ zxI(U_Dm@-3ntRD%Xl7i7L2UBKKHTM?qPtHh)z_0$dX?@GffKd=sDrmd{0)y63I@ZV z(Tr1raJY-=V+{U!o7OrPJJo9m=4Ed!&XJ|I8klS3jK@C_7vxa7aT7hwv~sY*$x1{R zI~xz|AU^=C!A)NPVZ2H~E%m1){{E0R!g#jov97y8@fUc*2@Gy%Y?+|_1OwRcMh|d& zw}BMR2lz>PfQmj}0j%TM@n~H@GL7gEwB#*wTQW2@nM*Hd<^Q?@vNnM#(~Jo&tXsxgW|T8m=ah_x@lF=F;(H zMf7I|;XhN^feWeaFB|f2yhDrWfK!8+;$Jo&a5#?d^&6WVnRy?}^OG!3jt#!k1>}Pr z01ZIUSR^yfSaW>nxCZ1vyO&^83(!CdHOBP8=3}O7)dH&T>8OAGDHN#dzJAeFJ*^_l z?kRM+p1Ujcze$_62w^>g6x47XM#P5#okFJ{cM?Q@1Qur)y1y?$&rli&MHLPX9FsS_ zKvO`EUrdJWNWsW?5k*IZ%PvPWdqOHwFqKBFTrHet3+a9YNnpx<8=o0m7!pKAV2tr| z#4yj6-UDmapkpf;28@0V?uxk_Got=jt&*rFrs$G^fMeOWIo6sXM3}OvIf48RQv0uc zmQ2t+QO`Qx!HsSEk&hF1o2IyO2Y;hy-cw4mmSxI{%TVAlMw_`@KOp08I|Q;~)jCDv zAi^E_gbHt}-@e4+Sj1!!K%+b};Dg5N z<(&zAEbC8jl6epi*_zQSmSNv@a6Ge32QhazU+_dGtv1qsUe8$GNmp9^esc6iezk`h z28$_`|5x#C8iVxSE40SLK1IuwWb%gL2~aovOtVdSJG+bNmR+_Mx?5#IQ5gYPoDALpT^SEjTD1CwlXE(!QsDS_hnDm&taz=z^Mu_4xqo*n^12i%a)xSiD{W6HBwW~*o) zqegB$tsdqx8?v_*02V%Y5^+Pe1p)&DXSV@NoDmcVn;0C~t0(N#olqzgrgc!;<;do7 zQaUQh9|w-%NJ{uXfY6A~01Kkj8Id6~U1Y?1ya^PH@))}c65=|dQUhNwy$*N)S-j?% zRO>zV1l;l3$~t9<@<&%8&9#w^YmNTMvZc#ooQ+Fy-L&1UvyZ_wkVbRABN6&3mCpYF)SecDpJk19^gUB?&wzh4H|DWBC0hGeST^R@ znXerU-f>#xZhwIf?*l;UONDg6*bg!h7HJ&EeBGS*RCKL``$!2jyDn&)f^vGJ=0k3# zF_P#qx$BMa#xkbX(L2dq-v`C70;N)LYeyP;ePBingEBOl+tDB% zT}0L>D~=)lcT0!TV%lF_S?RW+;w^BnBqNFjP(kj0SbeaAUn)DQ_T8!|5;x8GLdX`nM3_$k(l! z%BQ$5oA(%I!`>5feuB+o+3)uDS%$2mQ&k>a<7dXMEH;{d%{!U@ILd?p&-`BR-JCQf zGPoYn{A^V;100$&Wq#F8Hn=qFwW9^iib6-_0eNcv3tgt`jc!fkx;ShV5K26u=bf;4jf{}@HF}*q!-CQ z0$wu%h~hyl(r!2zjf*2Mpyr>3Nil~?uBa2UKCg1cVnp_swJgjCGyiaY)EFR=?foMf zeiJ=6l-M9DScCi(hXz^|14l?Z1n?DenX}$y`kQm+$BW-V5hj%!oGN{IDlFLrT~>3# z5_(CczyYyzupNvRsy~u5$pV!!*wg6Hl~>*sj>c+INf@R| zeYs8F6qAA-HYL|F_#4@?$+uH<++4%Q)WCD%M^*-B z&H>BZHjj3&DRgEZw{_O)#u~JWsmw|}kdF3U=eM-=$V!#IRXxB8 z(jDRml-SUHO5!JT%D!#QNV{8Tr6Vdj30M<`*tR5QhXRMnUH-;ab&RD{^C1)|`oJQw zL(m%I_tEb`Eh3YCFx~xqr!X)i0k+jldw;DPS3sR<1+|T1%^RcQmC!OE3RrKioUu1x zLOE<92=q-CSRHv(B*oU}0FmYBun}{qQ4wgBt$s*YMc~f&C+`=>RK}0E)nOR+`dYTa zBU&jkn^@E?_jhWQlz?H)0mB*;gR@%_Ox@w+7aD z1SYAdVAWm$^R;Hs79_;c5>tX{z3Aa)m7mj!D6?=*!(C5S20-EpxL2;?kBcB535Q9!(ju>Q3l?? zY8Ac4{)#@;OHv+T=rpnQ*zu9cCQStSoLkX`{yZ*;}$fu=Z1!BN) zGK?ijfEjfvd*tnrV`0!3raov<$6!J{d)Nokb|&ac|3+v0Fes=MBCE>7s1m(FZH>x} z0s+s51Sh!f0X!CztpXQ3tn>%Nt=;YD(xN`j=dZZcCAmRO#qWVG&B;dvxz#3od+;DP z@yaQ(J%IoRkZ?h~!oVYhB37|O6RZ=XgI{$+BrV3vk z@d&Vh0mgiR62R{l-TNHH4~2aTqmO2A#ww%*R=euubT8n6MDnEN>O_NC0f&@~AYoCC zBw|JdP?89?SmKOps~d{~wwAmwtk&28SuMg{<8|z$3Ng|V)(4ft9d-}O^aUPi{!V&T z*#vA%&Zncoqebk9W^DSm3_AX~S85*^{1> z$a3HhB_faq;4M}d$U1l^gFsA$tt&uckC%_cU}xeVJ1qqfvAk(NY}&vZ+I&1 zP*EA!p2w{GeL>^=;Y>1R5nG;7obf2t_6T%p9qw05{Kt`|R>~hP{|uQcphAm)%&R)M zpR$s(3E?Pmf&;k3x`iz$kNpA?)c7EIK`xcjl`IPURCyi=mZwp-EjxYX?Kf5Y28sjq zFV)jQhc^S6O@2$9h-iK*Wh)sm5|b|#%1wC^*KJnp8h;V1R{3UBOWaexrx?0`Vy#{; zB+b_R_wtg2{|Ooiu1oo$aG(Y4Z4MQZP1FOxV5|mf;>h-so|GXIcT#u+ZHGMDFwr^C z=gZ4XIi!cm_N~C$hJ;D|&@TP$Li>#ff9~CTtnHo0N-ZWiLe89eQ?vwtNcjlF&VzAN z)P*_7!!ww==HSvE$?BVR3lc9$(#rrs&<-0UunN}|rO2$GfyvQCEe?D@#W?ZO=*#+X zusHRboH?757!j>DSba4TTw%>Sn*wCuBLp~bG-7&!ztYn#j3V6nRA#+788ZQ>Mg9K@ zETxIefZ)r9A3iX2x@Z&M2MWB(C4PX|Tcu{~Ij9 z;&HR-eIfAj!>n>P5LKG`gQJ-m0x@L+RLBmDkOllQjY*Fiw*i-VaPTi5YYeT6Agf)Z z;7m1B0xp6x#5K9qQWUK(aYMG)&#Kfbhgmi477Yq~_AspNwpeUySk` zEW*i4*Gx#A`6&MO%EQ9JZMZU3~wm1Pgt zE@uRP1`pB<%HTW^*zwcYs7nl}aeH1P0J}kzF0H^GVMwEh=J}oNI~`DgbkG<6mS&kZZ{2v7bhdJ$S)5kIGtK3IzAtQTu;vq2O09GNT!)C*seeMU)As~@r;>~ zZxuA?z7kZj+lt6a@Np@Tgn_B2N6Rq8f}xt?1_mQj;F)7f{cM9$!$)<}V7#lNIU+Lo z3<&f8jS>&Txs8gTZcsUYnBd2ap6GbHtiJ0WSrxnpKGM2UD><>)<1j8<{-2VmBQB}= z>AEGot9g$>n__ys*rv(50@Kj!fB-yzgW=OYj%4BXLgV@63;j96v_9W=c~7gT>;+3# z4xNu+!tn80;{k^M70K+$G-c1aCiG?3+_3-vjg27Ax*Szg);4Pksn&8>&Wwr_4TZ9E zoA)15-S16%pq806)myDaN^^5{4Fg>|bCV<-OefkvQ6dzX3Wrm zkRu1l><^|%rc!A)*F<>H_yD{OukE>%f&PVjZy)8SjLhUHSI2_Vb3Fd%<^x-5g!ME^ zFNlOoGYCfYx;#E{v)qR~p6r)0z)6p{OV_`Gu{!;A_VfZ|WTIF~yqKgy0_Y=tX_bZy z=jeRhn}pkL8-Z~x%8m`KsqC{ViRSW>GDM3hBnCY`brf?|w+qIyZv+Uwar1bYddz8Q zhP4zT5xR`2*7-L5Hky*%NoLqt#lh7f?g)qHBuL(g(EZ~kL`L)-;EBQiY924x- zZouDx-$Mn}%$aLb<}*q+Sa`K(3s*Mze?_Tb$>K;d3zT#KyB?Ak7*XUHZVoqSz+}^T ztJ{ind-BWWpl+VQ4gC;q{*ld8{$?lOzdffnz*lu(VhuF1(lMDl;uO&FI+>wUO^jEk z99#o(Dz9Rz6dqlI_Q5MH>j=T|;j)?bGoiQa-B~Hg-UcfOb z=WY*EX;zfNaDS-{sVQkuk(7uO!X^3HI}=HeeI59#Zptto=V7ttti18TQQ4dea~k;3 zk345cFe6-1H8(AFuhldPQ!heTJ)*EYG7GsgN2H0UdVpq)3@{tT_ft+dAktWEP>vA` z`o>-jRI>pBpqVM=uV{-1j2%xzp2IrRiDRhvb;1P0?w-I$f&EoG;}|AE6)2VkdNB2}VlPi~Ck)w4gq$BTvme$=hFd-^&>q=C_ujCzS~oBWJ*Di-12+xjLrDSeSGX7|u=^E(9`{2y?h-ymxFFcTyQ%M~&r?f5iKj!bpX{ zbHO&E>vo55`DYcT5M_*ut|MR6sVd=t19Si6Ma#Z&4Ly}OhX?>xgE*SO{EJOkU^Ku* zCk}!LhHyL#J!#9~?f7&>5Z84SWdXO0qbO;L@;8d$mdDDAN4)(Ty|S@JaRkHFZyd$w z4T7zvLO3~o{F(=O#pFuP6xPJO{(E?)|{h>&b_m=L)6 zH692x5# za+8J1KSp)c$NyqTzR&Z{EV5?eCiI(>l-8N02%ZV`uO4D>9iBdq)A1xQ!Ey}58{P6D zZZYt0?860lHUleUXhv)_kCb{IkJ$(kpz$q^O$?ffSdt9fAnv$e+t%AkwwFwqP^tsE zIif>|E>Qx5Cdu*|L>D^zH25l2=>9lWm%>q>k!tuFrdH-c;B(j%3`(SgP&CKj&<{37 ztHS6#i_deoOTD~FAWO}-{YuPK>N0eJ+4r zkYgk8f9>Zm($x7E{1(Il>Ci1@rrG6U^LI>8=T5kr*jyl=6nrkTyc-sC3pkL5c#1z7 zt|jiScsOs!JBlD_pOk4ndm(y2#f%ucsKizTCPjOC84fZ9-&lZ7 zi5^Wo221N>TiA}VlsP6y#*ID_52^PQi{eo^p^9LzsS9<2bkpx_E8kw31d&(jOpZp6 zdlv0oZwPdf(2yUB)fKwvth8Fm1<^34?MuH0*P`1Bq|DWhha!I8)xBnL0QUD5c$~i-WRCkSp7=j3T;Ct^yC^n z_{8=&46z_}AiIp{K!-vb7Nt$eYlWX?Oq16|JMA42mD6kqcx%js_`(gL>}HGuX!-z% zSYwem)US>!3A^=YArc@AW8e|CR{{(wJ=6S(XRH6WGD?*h%#i!Q<{!UQ<3%LSm;+2L zA6Ou-pBtZ$hZti@^ck(<3U@dk88>*t)k_e-L-JFDAmYeUH#Phy-l#~Ye=2vX#eR8Ym@G&c zPJ*z}whm%;mBHWfxEoSb6M^bC4eC8Y1GFBh_Z3&*YK^kOB1I`P1x(;iGSiZ)q%#RD z17T|)4-k}yf1a(PLFg~qsVM&{w~#%^FWSkTnrsGDbEj&kQhWlE-WA`j3V!pDtMFlv%hrpbah5i9Yyq#gV% zZbqya( z{Xny*zleigHb%!*yDRkfwqBq}`I;TQjvKh>kQ#mWdRawl?ZJ9IHPz2+n5I()AdEF1xf88cM8^zZjEZKCZnBll9%X zhE|P>N1RBL*7u+Sf&PW-3+p}4-wkzF#?Xon>|JY3vR3*OQ{)vr$6*h?cBgPEdNyT0 zwaI#aP7jZl1miJW{pXUApgTI+7KE0}^*VY95CJ~F0=>zMn?B3y#wL@$w4C#Uo=3@i zF)87Cpt#e4K)VL0P#fLGsmDjs;hAJ%m=({u2@J4I?0F7R`ayjJfun;qZnDNi<4crs z2%-YcRW}3X;}9}qm-6G45_>mO8-p<%0HOj|DIEP(88ClaGt4LCc{te@uw(-Kl+(adYt`n=nsy9 zd`sgDwFAr6DrXuxq<|S{1vwYiIol4VCT2LmVQ)Trn|ZiLUgmY5zxy~ z*~gYVcdym;33`&9p#zT%zQKP#y7#M7PLx_JN3L~PPb%rihq7tl=J*)-e~tXR;va|g z>sGW!UHrwkN>x5&-JzpIy)h)Uzc@hdCTI<4tHXZBfWZG$7p@M9J_D#&+%Qf(TnuPn zps@o+!ji!eJZaCjtH%%$Ku3ZYq4W`dmA&hJF_Jq5ps5Cd;wZ8$qiB3RWMCxz`+|I9 zjSUzB>N2Buu^Fpc6vGP_IL$zd@X#}S z>{9Rz--v~sG!tW^tS@JZ{ z!Qq16Qw*d8crO?5_-g0wu=F`DDR%Jx6M*OG|BYfdkZ4#zW9bGJ4%a9=FU+zU8al2G zAmoQ{GS733FN1R#6q)B5-%>jO{K%9E@h!FE;Mbpl)_D53_T)ux-kMwEX)WHHeK(@s zDi-_}vh!da^;Q*NjFD?$ch)?8%%5wr61sODKz)3hAKVz@7RvGus&c~by@9L8x74D+ zIKRGGsx7e@YKzOvx89`8<+;Z9v_+rZ-_sU+f-R z(1>2=9;E(7uXCZ%96dDiE%icroyYicD{?+^viO#ICcVyigju82r(T{an%t|aCJoJR zQAjy20u_Ek9koOzqYCSwI`80wi#okkeMr>YQB7hFM{J7;cH}y)mB~-M+$}I8GGv&T z#+a>a=G*A(xn_jsxyEJTRR?ly47KNQw#J!OI^22h9yGMIHJWaUumMb(>|)-68>9|v zfYM|a^J*Wty<2(-8ssOs$$U#k=UfE{ap<#!IQ;o(TvHHcZbydWh*BDAI4M^N7hPWI zOAk$J)TxR0f&-q;p6WQ!o4b&?MD^Y*R#i-C)U-yI!KO939P+*t(L9STp&gdm)Fl;q zJ(>3wocV@YDmZhcW|p(xn>mu#7GtI)SmeT*b{pg;ICJ3FrZTYwi~IwVO=YqMi)7v` z4zR40)(=&g`5X#oTqBUV$IW^H*?VgMQE%3(%PPZe0O)*#(9=qXQ#9$KbWx5}(?xkw z-Rk&pB{zYbl~~l=GGYL9e!^*uO6|?UR(g_v=H6-&D{(Y8SCd%TqiMC$;RK?viBoX4 zedMtkD~C;zT&boeNv;&INs=p7Omd}=Fc7zQ%JzaFlljs{j04%k8*V^d5l>%+dV}h` z7tAnW?0i2KNVyPT&RFyv@0D^j3b33fi6q2>4YbjAZAJj~D_*f|-LG_lx~E}e&{hc66d#tB!Z z#?}~5XXF{JQ6fV8o*FxFsFj1%wwVWmL5#ZI{PT#cF+MS7`LR)3elm9wQ`LoUl~L}; zGGDmwsj>da{5UmUe?17D-%}bKoN`TX@(YDPF!k1({8&WJjrE4b-0Fo<{Jo97&`MFN zxJ`Q-g+UXi72&cH5q7kTau#0_zzEF zjL#(Mj1GP?{9IFRpw3te-eG}4L(9t~rFpqG6q>TmQ-s-ji$GSUMeA%f)^sUzi7KbJ~u~l^4)^smunnkz1gb<=iWj}Y>G`oI&V^H(%la10@7MPLEmk`0xv_|+Q_;0 z6vhxsAMdl#g_73%t6P!_)235x2nPOt1Xe&gIpE2WBclWdctLJCKm-5(0dKtUit7JA zAg<}imh3gej+3xWy@fWY;MKhOyHjEU>Dw3r| zMS8UrC8Wf{)4Qck!HBN<`2Q0?p=Ql+s>TUO{EazTc%Ig3^5g$U0Ld3X=l@3_fiV3_ zkq>@|#iO>*M&})nK5t13zo$KjXtnWs>O+W+1AHLqbtUA-0rhQ2BOq#2>U69 z0!w7dc%Y0MaBp5n#P8!&js)iX0#0^d)nMF7c-Qv&2z_Xy9yp{g{o%1IorGvGdT*Wv z(b1#A_K&{K#JaNS^d_^^?V2+gjG-tBX$%!WBD?Yrj4fJNNz|_h}k4h435Ew2H z0rck0#t_JlpfNN)LAYu89E&g!lU;;+&9mqd?AT$a63ihGznS0g@-d5?hzYRB!N9nf zGS~}SWIp^FE`=dLt~c}H-a<-dWTmgpsv(C!=-rAi1;>>L4@|)c_GV5qqr@Cbha6Ra z%#S!^{-Vjdio6KS6Y+GWv}}>%%!J=dt{Peh`2V+*{(mHJJl7cwLt0K=>21nPPVw^cW*ZHPap+R*{+laCz<~*8vQ;~p- zaSHL89Tsa%lAA1x*EpFqKFpGrPB)f9DtReXbivn=%PiRP(&4h+;SM+HXzoqL!N(Yz znTge&Rc`SbxAq&wFn*Y$hA}?68WW`R#K#enel?o0HD3H7<~MWtMAzOmzMYsn^CToT zGEbU;#!BbMCS8;>Q*fY{9#PAOMAZMY<$XdD(Gj%YTr-aJW?!2J;@R=NnofE!KI_Pp zu(7uS9=w%!Y?`3xNCunC=??554pKdg&*P9iB7wDmAAv*$WJ&!0O8z+GJT2(w6jZ`l z=J|%`0&$We|33pP`2V?<_#qL$rCJ>DUrnaCT<~?|x4yDaO%Owp-fq>9cq%+As68R# zh6Dfq*B=0sF=>4ilO#4Tl1%YY?2jdBMXX+*GzM2T^Iw^4{YPKc2!KYr{SlMc@5R$v zMfEht9pm$V42)Vdx+i9k_IT|4slAKa>X<7Ofa(Qu2DK73)YhsNSIAC}+-VQZ6Ha!> zNgRd4$F5+>Z{XvI!LJhucqQZ#>%QvI6uwm!_-WTz zEz!Yxw@EHGG~=MdrnUXCA2gk&?F^CdAZj|I6)wQ|JTlAJ15k8-$3V|c6_%3JVCw@Ie+D55uh!ww^(7@E)u7I|e( zgR01Fp%qI!z1uiJGIW8Nh||P^FDEd)hxdx=hNgXkz#nyZtElc9zo!cPk>!Lb_&r5p zgal0Q?jPW1zC(cu|qAI-83zvC# zugW^Sa9I-yRHAN?{=!8~%-<%I+Z44HdIAu?H@inpsfp)>k0ah8@*$pS;?~8m#TpX% zR?Zy%^QhqYJx$V-M1v$4B)K3-m8|u9nuKf*o7DN?do?es!I?KL-%OK?zyQp^6az{I zv^Y(sf!|XGR9L-m=YqO(ElB1(f*Pqw7v;>i8ATW6!?!7-2}jdHnsCvqDAuU;TfNCo zrxgL?(xE3fbLn8=S7i+YDGa9#ED&V(v;hUC4Qx#thz{wfGBv-a4N$!n$n9wZ9sD}| zCfB%_9Q8J3X7{C$>FzrPias~PID+Y2~2nH4JKpf_}@f5h>z!<-$TycazAr8bX8A>q)0>7z3!g@2Oe=fkD zY^nlvdNT*UL4Nf~+|R4h^Lx64${kb*o=+>{6xLRxE}-JqInBZ9>erpv96pqMS`juG zrfb?N!&_>r40{Q)7U3^VYjk9US|@n(T*)Ez)_8|rXRuG%JZB2nB7MZIAs4B+NJ4KFmn_$~CK$p24+ z1HXlSB>64$qeF3qCPO6UszzL>lyTuX zD^co0^DMedHmy)OGUrEOa*EvDz-rmRTZwowhlY5YWk)zD7Wa+?ZgNAPqBN`N(DPMf znk==aE9?Y2U*Qz8i`x{HXhVH!PgiWv!ecI45q6rcU<;1GBu9|S|JN6w?)z31o2q0t zxhf;~Zs`n4^Nl7FXHXR{EGL`ZD%nn!Vw009-mso@dars_|4_p*y-CWFBV0l1QhWNs z&9B2kWA0l~2`B#%goGo?S%SLOsMMam!25N0P7o4~xVO*%v>TD{DU6|BPs&R^Y{aGV zja^n}cgSv!QB6mTtCF#VKoF8~Ml8S&lF!Nm-z1CXSrmAp%AXN$G_7Dqzs`A34T$mU zzXJ07`j?X~%AYvp6!|z&NYnQ=;!>vbE?0W}bM8F_Q^6SXrneTpu+&LC(-kaqDXxjN4)qQHt70pcPyTzjdl^`B?1Z5D#SN7ox#St$94q*ci zIEFVPBB0;}&vEO`JdpgwNrsF_Ch9~BQC4WIL|F;Dus%3oOftidpz{vN7nZHW;nUFq z%rqOI`GDnsIL7CcH7*HkE^-6DtpLi!i;~~duws}mT)0dT`+utVpz$dB_+J#XBJYJk zgPqeOvW~(2)I5uF7PT*HM$;Pol|aKpF$WEEYYh`L%&jFNo+hf#h;h@bF2*MUS!k`J zhN9mg3XjsmfT2Cl-eZE&6X5WB8f5{x>`6nVd$U}2VE0Ek3Qs&ucHVgqWIlj1E*ivVjk^2jnn7jMN~Pqn>SFa+>C9p#R}AoLC=-8?XFeote%p2M?kdhac(|KHBT zlHXJ4aZjNZKsyMgnW9D?r%<;L9f?Sd4+Rv@SVb<+0^08>)NH9qYo&=fI79eR`FRu& zf$kymn_8{$soB-(3^o=>CXFC}4PM|k6^dNX+hXT8l>t0-(4(4s4I=qXjY90roJCDX zd40{)B`9e`|4$z*hxlFfkX zT!5w;1nv(&&$3fJ!MyteOIB#&9f*M%JKn2<^yaqPL4ozJ_tk=zo$OR^k)7x>7dtQ-H*1vy2d6&yigtS zt93GRQ@d5nKmPCDqZ{gUPh;*J@r8>7i?DwGk7agFBQ z)UGndClJTqd%Kl!o4_tLG47(w6tyr@*4p59+*57HMB>8_xjF~3F~%E;#A${JA7k7? zhb~tGP);=WmZB&cpKPBk#3T0fZUZUMz>+{toG`)g$NxMIw)j1r*MNEbo?1!Mn>mt| zs+BgNm>wSni{Dc#9(psUyQEZctx@ZrTB#zYMxx0E>RO>w2be!9F7$A~!{FoqA1w?W zNl$O4YyHo&;DmP*yE1#les5>`{y2poff3$?0SYH8M~)h1uwn={w6`;mKWav` zNl~}0NCN7@MW0uA+hgvBnkgZ9WJvIPdIeAhM6d+v&D@=0!TU`g80z)0B~RbULHa$# zqO~`P7(4=gPqD~d;CviW%ADd4ic1-&FIPIJ@sv(y{GMVtp+pl4T(EN%PC!LCe^Z;B zf$Dqu!14hFjB%~O6Q4y!Z{}{68d>8fD73b96w^#B7SFYlYH#nni&h zm7nK9k>Aq?sw}a|yaU;uX7NGI9F9nvm}U_Hh~3jHDxmtFW{DB(PDF#S{P0d_W9;-M zt#~_f9MPrs6iiI8bDBnK5(TLoO`9K@PQlJ=G~u9VT3k5jo;m>wQlXKiPP(>4v&6X| z>i%ieom14~oO`0lLZ%A=4Z2}Pr@e#y7{GzV-5=UTYsICBkyDT!r(F@bH=Bh@Pws8R zWlC4m_hxA`J*`O82v%}{GM*1(L96lumgHwRm$a? zi^&5&G-ptz84$mxTb}$iIlniX!ipw?D4OTcOpM>tEpUWRE0op}0s+$R8|8_iWvq!C-}zAa^E!Y5Jd?ujDHrAhY5WkGXU31;Q!Ythr8LhyqUpMY zuHHPC+GoRWcI!!^rhR8r@S8f8qBnCHJvxIi9#S%XQ^$U2kfQlb9ZMk3gB^ZT$Ex&Z z{`1g`O&PPGw>G9hPpw5wYyCVlM*N<3A$yYXd)md?`#*2G)CGgy%<~jU!CzxqYjcIA zXja1*PESAn0oy2O)lU!wT$k~{J8fWFn&|ZH0U{}R2A4k z<2SV|07gIG)>HoMeS!fauxg$F^=AHr*7|vCp!}xFPROMBO_je;WeR#~ zav0-tQ)LZ;GN&SQp}gkTE*TV+(J|4IIg_^C|r^d8|t5QC?WYFXSPjZGbM z07^_vw?K{dNOD@CF`Q>m0-SJB4uv{~C)m0B!evcGWkCKwma(xHw6F8ylh#EX+d|8q z5vMwzqL#;Iir-TTGzh}w)ezwKlmZc&R_LBaVfaP+7@x(Ysu*XXRQ~a;0-`L^Ou(tZ z1E?e?{bd9*V`_Lt$RKp2F~%Q_`7u5}EU9^#$!(z{AcV%eu!3fAW)rIbil!oSx>{w* zXW6~k4^!5(q$E|5VvJkpkSTntqMC$F)GAYB{67kKK8`4FF=fuhCG#U!=bTICYH}1) z=6TTKBU4DqF*x%kAyu3P*g{$f_&l{|!d85Tdi4)2d0K1eh2@?s)$32SmG} zJ(v@o>;Rt+FCWh0fsIds;<=@kv2VYdML@+(#r<Sjvp?&tpM}-%?MeJ>;H-(Ev?{ z-%}0bkZA5b4Z}vxz%5P8_g3Knzo}ZldNXg|wosBO|MS+SVUBc_k_X)QNvC6AFvc4Q z@u_am^u_hPIz<#~6vhkpXH9Dzmv|;0B7UoQuR0b0-aH+V2JSYoI~nUu8Ykf3{Xk){ z=|oVlqY)Cp&bN%1`29Sq2Yye-$mz`-#s)6baYU{S{_o5AY%&LN0u)x4GVWX)u}1SO zI#loJ24EEo;PKRZLt&ATC7~}g@rrzIM&}@)%mI6^P%tv(0E(Q!?fAm z12sLF?QbfUu3q1}1rv4mo^k-k82>yqDZi&1wDo4*gO-J~7FUi9L^)lo)l*pg@;}cF z16UqdbsOQw}=tKn4R7RF0_bmT`3kh`ReVk}T-Xe+0G{~3V%zQ13*C6Y?>b^@e5l-4VBdLD6RpUHJcxR85}5~1^yVbz z5LujVq0zvRB@p;19J100hpcP@A}fJoqHfX~G4H1E?wc$-%i;>pqWq{T#_c>!$wwn6 ztfb*Qi*ll_6uwOvrn*8-*TYYP6#XHF|FMEU3fYkc0y^XK=W(#Y@97$q-prBepEpI5 zdoy>J-YTjq=P82_PHXf_y>}4k&!qLwQ%mz~a-A_ND|6JP*~B!lN#|omxfSzGi{Dc- zYSseqdn#q?&D{E-X`M>repHUe_Eai|O@5PGYL_^@HKe9Bx~W}E2=-0w!spk29tjor zJ(UU&!HeL`nO?Zld*8U=8}Z`Lh%cIS(M^qj2&(fX7|EE6x5n(~!!%0;N4e?rPH&CV zDm2faKhKRCzXNa6$15kbe5jCdXzjfrQ0%r9l|EE(Ad1~KSqW&)nXVj0=}Qu1DRydJ zLiy3ayOCip!%**4S(2*RLUh@rKwq**eHllT5~{&o1Ud}k_^%Tr!3!K+l_j@4C@vdl zwh&!nG0>M_F9HX!D*AFrPgVIwURsYYJTH4uZ&OyIx}9?Y<8#z>W*7W0##H=;Ww)O# zB2<4Ja~N=blAH3ze*tPx1M%z}XXS<>fp1bz6RimEp{`>nPgS}6N-M%UhR(Q29#P;F zdDSV5ECyp@u7Le`c;a}PE`f-rwPwzt=?(;*hT*h+6<*D67a#ZDRp26EZ@HGEm4K;C_EP+uEW61H&}7R6H`dgCYzr%3W}(xIT|S7*w|y1{ZBF zxZsH2?FC5uZZA;ccl!iGYt4pXFkvKx-DXoRV@yOw3w?EtR2RuZ8)_^U^-=Rq>D08P z<}bX$c?SJ=Cd_y{ZC7HwRVX;|ib~&*zC2Uv%l`+Z%`RIJ&H%!%!(~o58x&}ZQ8M*p zUi9y%D)4SHFX24WL~0_Yg~EA2*O4T?CSos~Y!PPQ2m@%8Hk=xM%(-*;hE3t3>{k1D zBJlQ&61+E0u{3woQ-jhxhXmdeAHHE9?*kuyql8({#S|A%k+V#aQ9rpKlpm%d>W#oR zsm9gDp0P~0DQ-1J4M%j^f^xS4$*b7D>;YRKU@O7X-Lvq6q<1lx}uR)xaVXfNGCAxFesdAq-$W zA2>QB!QccH8e)_ua-;Xoc!rtcTR8cI?d{ulVt`1{eQ3%<;kTHC*DOqL68M?eY&zW~ zx*Bzt$hkLLqPs-SGZvrK5p}D|6~uRwvpA*F+~0VBwS=?f|d@Iuf4z8^3? zSfEwhW>gJ+ov&~LDhh4RG^36X?3@AToFWIr0xGiM+w9Cyu=6CcGb@6fv)k+p0mhg{ zvCYo#hyis`plN_j;EWV@j5a$1!I>~U6x-~~2E8>7JYlyFQ1SF`$&ewdeMDXduEsw2 zbxs^(`!Rvb;%tw(RhqXM6@y^k(k4n0fWlT3zHlER^L3Dc-%_%rHA-YM$Os6^?G>CW zklrjbJ2L=O-%=;66I;|~>A=&wEhA@2-Fg7~B&N>0)J|`64I5+ZOG?U8vg@yNj50UrDa(&%HpyqXjTNX_->2T9lsfx z8^0_*+$pqL$jB-9Eq$VFKM3Nt^vRVO2qPHdZH6XHPX@M6sLa$D(Cd7u2?s@k08L!5 zXQ<(bN;Sv* z>`Px?8cD+#=yjOh(l7>~#30DweZU@-p%%VL=x&i{U|UA$lR6hF)j~5iR*do6Px^Vn z2mC%_5%y-@1O>^jZ;@k@xi3%)zs=4{Aj8B1UnI6K|M6Z}s=iCUxMVSzc-OpS(@h>a|i+6x`Zg~MRA##ZxT<~kXw^AURD zZ5GE!P-c0|eZIC?oF%^^z0Kk@fBoZGb@^=u#{l|Y(IBVbqV#67IDgid!8y`vy)>C4 z#ae{*$Z+*5kCe)AtU#1%L5^|+S!qXzPgUtgULGk?T^uHAD^ZF~R{Cl-S=oc)vzsFt zX*#QNwkKs93tLGjYuMS5m2RGRh&LZRE%aH(+(AilyOrR}(^@5j$rvh2vJsIo%;K;K zF>@61@QIPA?upt1sB49~U}xkb3ZuG6^&mJ<*9x5r^Vt~9oJxwrI64P(sB z-opH5{_%+9@Z0RIgx<`}-u7s{;h9xC^wjodQ!sKi)y4c@xo~+qGB<-W(UX&22>?{* zz%c0*K*7%c6$B*O&rA*n#^=Y2VGZ1oHjW7eWB!@}5Wiax*7z-e9GlEZkimOom`oi= zR;G}byGKH3(QL=Asq$| zp}d#j7Xi4%iJ*|#X8pxx=^uLBd^1EfT z#P62Pm)|X$Cv2jAw>PF>IoB{U*j(Uu%SMdfEgKK~Zf|(O5LCdXjo&RBtCcAAXNd_5 z#ia=*b48BTM26`YE$^^WCHz#C8D`8nYWz3yvP50wak3JPRsN_=@TzN?G3(F(#ZGa_ zp_xK-x%PIr1eCKPT>Z*CEKI~lUi!Z3;_?UzpW^b4g*lJT2g%D9o|aZkIxMuOgg81| z5c7avT-LJ1t0G%IRb<)|vV^blIx;U&SCw!?sXLjw$;+z@Bh{VN;cYc`n+DdWO(Bm${%m3QQ22rm+R)VN9|OyHtYO-vB1V4CLe z1s9b9GCK?xUBYE8+q){V-BU%vJt5`D%;$5BTsFKHmND_IQuoXjNSLQckMw9lJr zHJOj7>lE;z`S0QYns8Ad^XfqizuPuf4{Z3|w$Z@vwhae=fauQdhRhnX^buQP7G?`s{NzO7d>izPy|m&Gs5| z8AEN?mA5@jaj!+*Ho-B)ohyP_@jU%UhEvs~bBDb$=l6=w6t}$tG{to*@|cxABfK=` zvfEfCQ|;Xn$K1H+vYl$d)RlDh)XA`%CncRH} zBg0Z(aM8Vod~!mp4%0wjlgpWm>{a|5yQT*dxG0d>xd5r+I&l?y5SWSc0C4LRm2t4E zgj3{lo|bS=$~iJTbR{w?%iH6;bcbeG?FkMfE8SY@RA)^+0g_hR6Q z$Ny^#-T!M0bN>GgRRYh(5yKi!x4GhHyvcXyYUb|~FJYZr8=6HIa{i$K^hC!0zhjsp zBcdC@hrfE0)tJ9XS2KT+s>+73D+D6fg(h*Pggp2@3SM{Qs>P3NKnU?`z|fb}`iH@V*t2 z{BCC;-pB9l$;?g_UkG-x7@udD3~?1{Ew$g@{+!ax=a8nrHe!5P(-G?k-MvaUeo{R> zR!rLqRB8s$u(G3^bfY8$JtIoNk>L}_ zIXAf~D}gX(WL%e8F{$?DAjvx5sIHU-r8%j?N_C|=Ak9f3Xj2LI3wfme|IZk6YueMr z6RDlv(4>o2HR+;7oa_)-y!Rf&DxF28=AMu)yv@nTIZrU&u(IRuh2=M9>Z-i-$x0E> z$VxjP85cVc`f$cfW9V)6I4oVJj5{~`QGg;(1X9T}=g7v(QHXM>zg<*7BQn@j`Nv4Je5A3-7#$vHPcNH#ELDl@#L z9jJlA`sx4$sLr8;5g8@t*ua?imU_?x)%msfJxD^msp49rf1Y|OR0YYsYZVT=1V=tv zK?6@SInQE{3ThGT+zE=RT?3-Xktg6+>lpF>TGhbswoVei+ag3SJH45V(|1Vl5w8;t zN_UV7S^-Kb=!Krl>8e!F_1AgPXs!%W)vt3WUtL-VATdWrkn{sI!Oo>0+zHB6aebXb zmC>CkhbJ+Eg@H5uuW3*p)_rqbm6tD!E@WioA6bd?CY^wtMVIuJ+KKgKxWgv4)J_Xj z=U7qNJ}jdCJmxL6lOwfzliJw{w(W4=id$;;r*{?9MX09Xh;;-NIsY|wllwqjx+vNX z*R8nC@;rg+S$9yu{?15plSNI^yBWX#^L}V8ntWhrV!nY3P0WGHmd%zPE`CezCg}a2 zhm_{G^o|CyDPyhQoN!QD3ywG>#ajyYU-K-=_Opn1TIo&7AL#fky~|Uof8GZ_eoOI? zjMgszm)4n#uchE)}t* z(iK0sLmTbk#gkCDV~t1djf+brRZ7@_+)A()q!^!o(MtYxAdAq`jhn3 zex7iR^eWY-!%yB)GvTi<>n$}?YU5h)TWW^lcr=qsz!-A_(Eb^v-%9eh(3??|ncLIr zTZ+>f|`2h)l zfh7O`@5|F#g63HG5cU5*E&l%vPJTIj7Jt9|+W7y4M!p52MtH(bgC7^)o`6**18Bnk z|63uCM3mptwn)9D8_fMQJQ0o%!;cuAgRr*Z@U5cy|A9m_9P$5aX!HMbXyG+9@mp>~ zJ8G^U6Ak|V4?g7nv>Bv;3{U_6L2QHuK>q(h4n*B5+vi)V#!v6d|L>~s|GQWG{~zWk z>AG@wm+JpdBH|kH{}1|d?wkKViR%AXS~CQJ0)rAtaUiC;-4jnUfjCm-$erWCo>@$9 zQf7M+zHkR7@&AJ;bC*I1zf}JZl>Ps~27sNfX#Niz!T-N>gjXiRFWH$3PGvAaFo7l= z2))zN6lLBA2J$#Mj=qJXmw~!gXio}RnoUQ8(YcdzcI$k&QikYT8Ui!edD091e-0)1 z|CK%fIa{-Xod;veny*TpNlZwo%b#g+&!9<66=)D|*xPl-P0WpSXD9+jjw zS+=J|Wj!kYZ=m}BJ$PXrO#tOw$9G?(VE!^>d$AyFi15}=@$?$ZDF=52aT(}XU ztrb4;SRwj6aliqHXZnV}EN)fA!Y_+s)v&9saAOJ26gpHGacFqkli6H~U*}s>-vPhQ zwZN}~y>O9V3cjbls^8RS<=1~+i8g*ueM+;rDLt9bb>mQ;5KosGG4KY>>axlF*Mx)8 zLRqfR?A}mrPc;<^7-Ji2oZZnBx~d>XE6_|T@&=l4Q9jgBRMLCzdCYD}s4_w=G;-f7 zsyioh_q{4}!O0FqiC@GKg9JNol2(cQ6!!bO*_vs#p*Bf!#OD#^4WSSyx(o6)spAh$=jKkw=1w;A0E zF$~FJg13|LWT!4B8*-AXZk^TQl4+_Zm2C7Rvk3=n(PX_?f8L5fewzv6>dl;P@m`gs zP2fho75DD3c{dhec+$jh)N#b7A;KXtu!*P0g&O*(@n;mcdsA5{#`u4{KULg0#XBr# zx;Bn*3UIhAUSvH8_7+0?maf71;>QpFa7)*&zs`@wwv??Y1(n}Ywx%OZIOvwL8G}@m zG|!+|?_1TYpJVZfz0ikg{g&2Apf_)69V)?YrKG|ug}D{4P+Ja+u~}X7|GFF%{PD*+ zA|DOY3(Nm{hUd?S)hsTDGD&7a%$$vZC~n0oO`xuIPcf_066|}L#OK#J%|Z-F@|Kw) z;IDHPp8k0%;QXF)fZ*p5dH6lu@YS1*YAeyGX@znC(_7;-hcG{H#fIveEcf~_uJ^@6t_X!}L7#}%*WHk!hql>zj zBh^3e#RGgw2h8IH}P>qt=-x|^Ym_? zgn>gefsw}VX%G(yKmPv!-uV9oc=Jvwbd(^#A0I_z%Gn3W4^@0k<<*_=XIY#{r~(a@ zpe-eygl|<8eHEnETmgaK(+(i009Iw{yaN=s-G+^j!5qJ*9q__ZxPu2O1`t0lg%?jx zJ&;*WJ!tuTqb7ft)Vxtoq3cwYAFQpKfXH&k)wig=#pJi&PqB=bEL(oiY*o(jpJgmkd) zsSwMr(_aMqdWYuTW>*l5PZIT++4sPN%(X_h*&p)jd$av&$L05oPb(q!gnEEGeouwp z$@ijIqkH-R>c~|d zB^bULy0JFAA@d=U2awp@Ltrt{5Ct7deo=4cC7QIBuc_5jBG1YOABF7gotnoI;v*X4 zy^DlfI$Av#upzYZKz2c7tTo|9543GtK?H;&=#-KXe`eaqEZ1Dod@Ahlpcl$Z; zyZvSSZa>xU_OJP9ez$)OuTMq%`ThSt*Uux4;P+GnAY~_@c?SK1DrobY>cN3968wLC zLfu`*?mBSgyrltP`gK0X$=1a#IIU4MIr%2D zAvM%%vIbM!YVnWE=9qiZ0KmO9zNG=k@ssH_=NTLrER!NCV@%h3+LY(_xxCoG?`cyV z+NVPTIYyH%%6&Ivm>%Ac={Yj&>ynl9-bvpOSxFC_$V%En^RIQ7`6hd^cfR)t7rqY6 ztp8G~s9x$znl5U_MVDAZ`ckZRlVP6?SxFx`TZk@Q=LtnA6r6t4i~$otm$I>jWYd&W zTrP(~`tpua-?623xCq5#?w#VYPS$cu?MQ>lD(+cSitQtXYC8BM=VbD&>OT+p!*A*l zTntZklHbx8to)?J;6X5k4%*PD;5V`dRSb8A2#|B()fPid*WM|!9q?Ovr%muT=uQfE z_;4xUH?jwu-psjzLudjRjY>v#gWuA)6I2aiaXc=^PlngPcA6IaM*8S+71yM{r1c=IsoD_;p_OCS?#c61BG`CMW4{V@|eX$upvqONND0J(9-3_of+m z7@vC=`TTKBdP1BZ(VY`gFiu(9XmUSq3)g0cY^*ueXw*FLSnrh^mClDf*tZ8feH9n2 z%6zkJ8t_a=8yKIvirW^Gb5x9wGaxD_^)Wu@;CVv%=r3;;4Sruqqu=6G1J5|!a7;mW_9l>Q#{zAa-8%a++zNLDeKy|*Qdb*6%D>ssav}MU{sh%)U zZl<_@vbYE-ZN)9sQ$lh>nzjQg?pzU>+)_P(pvD;GI7RiIrf7p=`JWG5Ud;m0Jc~|K z@ac*8z|&`KMgC3JYQ{yYGEcr$eX~{;ov|Fw#$N=KX$E6ozm^(L$Ex_DSws&S=^2YZt;lz6~- z5`p94LfI2fYt?W;1MS7rS_D{Ga9QJNEn>BYjvsNJ)}la413&PN3@j;K0BPZm?-dXv z8#5|1-WRo%W<|#I6uI~oXEWH-)6kn`Oz`@D-C^Ya)rSi~ibhpQKa#(_jQW2K(gp)b z6%oIW*B~o+$Z+HYDu@?v^(2H`MnFadtAQN^NMVks!XVIa_ooX^k?T0(|J7;?QIEK_ z8&+*xRWicFPbN(LzgpSJRJ;%mP)lLF5GXKoeyDjNOf)*Gz8zBjUxiTVso*0F+metm zOJM9+8gq9THYHTCHx`8!XGtSy0MC4{rWpC0T{{fhTCm8Ybj>O9w`&VujE7;v1J#)+ zm^YG)lxEITkn_hQ9-=)${I5xCv3nc!{8NpD6wPz*mI5dTCkaru9roy2gfx)3QCA*P z{$Gg*i7c_eF$u&n+G-H_LSzLZR!_i=mPB}YqM%?+*%Xd7aWoR-7Arh1RHCdbjmZEO zBI9~BHG+>GGCa-2`&-4wHybzR-WBVj%$!I=YlI@oX(C3FN7PPC=yPgn+HBRR=ovK6 zy^owkU9=*a3?)FF@IX4sAcv&J1FAJVM7)D=$g#;B5R#Yd)zUCBRCU8ZVZsH-d6!tjdN@4Nn%M&upm3_I{50X?@40vLlAcHu*3Q}vp4vMO>nEF71`kG#V}VR6wY-eC@ADWh+>WM7w%YZ7!wf;c%#EdUraI-Iepam2Pe=jj`DH!zSa5$ z;RT;~nmw~Y8UL>aZ1Mk!z!Tw7(nSJZQ1qbMlHq~x)z*{{K}FW!@W6n6$0X~J!!EnL zfakFAimz&sKj7u2xa886R_xV7oO_$yFu@oDz4mthATi}%U|yDJe)x{5>u`Fn>N}=+ z>I4$V7ue;0uV!Q(2(AaJuu#*B09x#xP+a*IN4@LMnl@+00W zs@s5?r?>cz5oD-j-lGL3d;8M{yXYt8?w5f1#nBDvy?Jn;!wfHm(n#!>)j zMZoX?eR(1sc%Wty^~Y;+@Z0PM7#4{i5HP(0xQo#~my>kgLU1`3k>6%N+`w4m{vaV5 zz$w$4`HU&GEH5fYS_2b{I8(O(K*=3>W#QuAT-p_5^ zd-I99W>io}MBTaQ=bHBxGJ**;@L9A(>VB3S9cNth0wIaI^QNP-il>{LGVFLm%$&$t zw!~}5?s>#>g2G2;dgn@RMjfA4Bq~Fe3|VB(ot&(xVIq8!ZcqQ`(eZ9%;9FJ2EY=y3AleQ11Dx=(`6hi1$#r#3sn0zh~gMm{u263E;~CP@OB16k;kJ7L$}$8F@m7q;U| z`#+D0KfXz-%L0$doj>AHCUiq}oi?0n6%uitu91OFqeIoD)Nt~at=~0c@i^l;HIcasnbVPv3iysQ zchLh((_1xkjRR3#DJNZ&J1uFi&m+Br%8_P~SPfG<|JS(_3)5`?TJ4ecn;qfDix^rs zBw#YZ1zJcT@J`QdC&u4cCoq|JfWxvQz-gt13M>$GTCteOT52DQ$r;ya#{k?ZN9SC% zmAJ)}`5rlHoS1!MfyINWq@;GT^k(i*IyAR03I|^dg{|G@Xm&`^JS!^g zp12)5Mdgs4o=E;k9>C(~(~1n0Q04$qRz7KHmh<%GR^%B3Dyrf9DKm3n3xX6ATWSEe8zdn%vsopaVC39sk0ONz%}y0i3A+22H)ZU z@vkk^d|HtxD&y6Zl6M+{u;sZEGfW4*E=-WDf*3!l>BzkI1*m9d=1VZ*Y&S7E;BCid z=1FQnPkhc37X#H)6!U_vH^W6yX71uD#^-d+oal?p-CIiCofumHYlfl(D<+z6V$;DN z-!MLgh^MuHbYCtcUzrirEpoEgxJ8pL%JFu%9EBoJ zqkAf7&svfAtz?RnrsZy@z<4&6yLkff<)-*vk?>Yx+yHgdlHVinplMZ=Fg}-jS)&|y zd0&*6JNY{Q)omZReCSrijf=7yhNrtn4TqPVBIhe&SQDo}qHbA0d3v*LcuJs3HcF&G zW3hmD`$6^1gp>)++}Ya2z53%xG4k6?h?U;V$rL%Q(0zm>ZZjc$TsT>~ct%aPYPQ)B zBc>r8ew_~1CY;I1G#SnY?wpJicEPd0ouV}JDKPpr8zMk(=5=J3sjJNbcSAQDQZ{5s zaOOQ;6S($Ss zmklA74VeRvRyJhLoT5im;c+lUn7{}_5Pa(0y6EF!;8)8m;nRvZWvOYZQYE8p;IjRu zDpj3(wRSP@*;Qq%P~|o5s#V$P%`yxOTWLj_S_G(=SwS&2&!BIPc=>ite2W`0lansW zGkE#@sBv95>7qPClfA}T?h8ZaZo+zCQWyy90E|GI?y+{GDu^u2dC3xdV?gp1bA z=*Vq`hf!~aX{A}Y%@Sz#X1K?UnaAjS4vd*^GbI^7%`EIj^-eAki#K&G`y>qoRH6iM zj5%l`S>tACV{$Haf{J&0N!E>moUC<-1w=e&%RAl%l6aHUg6h3Mw zjQ`i@?Ef|H;dRtjVmyNXS1U(TX43eHcY3dYYkFNkyqL>*;(>s1=RP842Jm3#Tu$Fz z+-nZq#aJ&a`)VNmU#)nda)X8BVKmXioQBg^ z%QMZ}4)<-F9Wed%|5*U*sd$s!%J0pg>>XN*dSO|`o0P-Udk<+SA&jkPc7WZl(+p_w zo6DBxJG2G^t4&fzYRX42rE@DOqU&AkHmy)8D^!w9O*#|K>s_3o_BpkjXHco@@rkGZ zXTgtWfmdWK?7kv%Uym%Fr;B`*MnB1&5w}^EiC>r7T(&&XY_qHwzfLD9`PZ^4{$H`Y zDNk6S%!WttUX>;5IOtH=TM^LHHp@B!)weV(P%s7G(y$e>D){xJsyj#boN>@Jvn&vP z^3X4t@Z{-;Rw9}-ogY~c>pVsMuW}6kuYIYkkKa4ck>5%T7!hLTv<~NsUte*2VPFkM zRI1Uk1eL=dz;|H^Ddq5-GUY??pai-dc#e!iCbSqy2(fn&Jtr( zR}2dW*Ldc8b=8{VJ2>H@+w6#kAOtXwtsUPmG(j`os?JsP#EaddW}6*Z0@Z;|))ytF zna&Y)M_y_cxG_2z7_)MlF;Ha@yF%BP_gtu|$y{%;r*Pg~>7umntIues96S&;@9g3X z%^7c%oM(zFv`3ALR9mA%&O5s}*tACFNVzlKs(uEgeafz+sCY(%r-u;DyStbUpa~bH zeLZ@08&cn942TNORe6IKvM&CgF0M|Na%wWhM5l+kSP1HpNb&S0*!cj?qq;cRKiJJL zno^{*R~H}OCfCphSzM$KSzP*X^rZ$TTU=`BFi~HMXwpS_0J}`rm0pLjh-}cCRRN8v z0v^c!D+Ez+k=GRkybuB(YPM8q<7wgWP4+y$XaN6uf>;sZn>n9$(fKap^(MI1)@RWu zD<>-_qYf#21r*6#5yYk~;grmI4XGuqy{D(iky4lA@%q;GN*t;Z(foGXTBl{0D^sZBusUUm#IIV zjTnAQDIn6Dc~#~em~1m99E6y8QQcG*b3aVbLd?7al%^)L1w2s7;%0DO?_yf(*Q9+u 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¬ufgsJ!;w{er!}erL_^=`rW@DxZQAKDtHVS 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%0AsTr$7J6p#=5JM6BD4>KK3-Rw0Qz=0JWnq)_m#j} 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 z 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

vaJ3o%znG+L9oL5YR)hRL(4(6=vT2^cv^RcW0Fa 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ℑ2r!dpuqX0CB`!dpR(pl56>#=h@Ado;madI zo*cBUU<4tQS(xuakQ%#KKA_8t%ITF@Y+a4PF+d&8KMb1m@RlBt_n9i_6Z4vV=fKJYBg(7#9^>|L<#-%tpDexts%3Y$PH65@Jv9FGkX; z6%{WI)FyG2Q4O`rwNuw`ws5Gdit%yQ$pmfroF)qDi>s&C3>`jq@u~M)BMi43?*}*s zND>hb*7i;Q{f3X|$ISLaoivOpkCCNOUvhVpU<&svw|>`xSGM_ov71Ipd#ol;qbjgd zW42L4{UmbCi{XAW7@LfjNXi2~OaWN+qVFoVZ5@6&^xgIF3b+|T+`kDhpUW?WVi|G| z7#bFk7luY**cURxnZtSY<|VNK3dEcnjMnlQ&GXWF*sBCmS^;kSxq3eU-cx$#PYVGq!l6}J!~I7;70r%p`=v@_;B3QZjXtrrumJ+7nMxh$+MaNKn_ zqg%1AvK`&Zg_vlS?5N4kHmF0Kfrt3?FmMk_Xk@D!=}?z`Fd=UtKO#5%AEnJBN{L|{ zaj3&pIC1fT5ZoN&v_>dG2@l@yY$^_h=EI-z2rT)m)W;dig5dHO6r0V4sbFNQ+~K*0 zL+#XVLC^^+9T>{3F{~Mj6~bM{Q4c(Crsl&B{zhn@FJmrtl5sxRY?cCGN5uY3yybi} zw1Q#k_R+!62yyh*8Irvy#$XplfxN*MqIf^kkN;iIc(Ra;PDn|FDKB5f!#-XcK~qpO z?a?ko6=q5Cr(j^=7~_P2F)&8hQCW?FAg{;{4T<1DLuE>7Tq)M2X0;GeWZ@Uaz0a#4 z$h6L5ct>@V9312W4TQavK7+7%Yo(#{h&#t8;_%&qIL$~EE+=Bi@eKgXlZ%hrMA@#R zfO|qFUqBW@FLpeYotP6;4wCD)8h})rz-o!$pd0gtP zKR6^B$dkIL=%5YE?Ur``DV(BD$6NdAqtLAfH+|aPl&kLpANFZP%LZT#Dpz0UcFYq# zSpTK*4Qd%Ha3vx+mkUprrJaD9F}s@`xS#74 zX(Le`%ahmxVcaO%{Sp}(MgZc4sb3BRP=GEtjCNV$Fi(}P>(Pf6rUDm*h;D5Pu)fBHlTCo=@ zQqS)!SDfL9c-S9e8W-VLbKhZ2jn{X{hM~v|TK*+SqU-~aMR)(qijs^ z?#OIJbzRWJOIgBIFAl+s8$1;p&`__L$mFOspz;BizMf$EU8$@iVNV8CHdzah4|&ok zs=26{h;=kqCB&FFu9Z=TV=?m@04)VDLsRo_6*}QcX3Y$Gr&MqqA!25@Wd0D

Qj? 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

Gl!UGs%IqU~!bH(YR|m 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

3pN&BQRHC42wnv&*Y zDI|#)abguEa2r{&mjuXQ_HB(UfsHp9V4p|gv?q}`?Fy9>ZG=|8=e$rtVGv6mNeW@z zPDZ~s+vja;w2ZKrGU7EBZXF>M!v)%h1Yl=<12m(mty&P)+eWiZDfZe7ryf;$w7?lS@SoyN>1{)H8OT`!x6Nf^W&M2};89HP&2HXjtW&HftK^hA8N*T83ZwX?5YW-AsSXL}ET z8p2$yKY?bhQttkSR6m*r-EwQJT`h{D9# zwT3W+vlV)UoAsJC80qcWL!bsRg|juTY3%{D{s8t}=Voxz>)EvjK@EI{vlZOD_So5X z^Hs0uiS}&ofvjN@8V~7Mv=d_s#3Y89-XC%knMHzC71tZ}a-a zwifb;Yx=g?$2G4#fO=OjvR*o=ME?WW=gDSn23W&o&DEMO5SOblU&GlO&NbnD6`X4; z7TXGjT0H>PUS?~LT@&d8n?R^EYELX>MG8x2W<)Rm007ez05B*R4vIu$fjADtffmPN z4-^0lX{L%^Mw0u!>G@e7 zr?qkX6Rg+72YjdaDnghZj$__P7n0fZ)kSg_0ZegV_S6-ZM{zM~h?})}dO%&|R3j>^ z57JBB!;%I+zACH2BvGLt!{gO6 zKk8N^31?O~G-n;S8yBP=9}(rx)M`H#q+Oiz7Rz+q$eG6o1l7fdod@#zh#E_$g1;nt4&JYSfp!=OI29|Pu;Z%av_F(UqRy)T) z`31J4^etmilT;Y4NOqIc^IpcLiT=+C-r+1q8)d(Y=TNp-<8iG~>#PlHg)pGRH8)M( z76?F4^V=X<*zD@q3d0*(JA^3)y zab%Kaj*R{Mkz=Yc->Wdrr5|?{k=tVL#2ngM-k~Z4>}@n>rEnR3p#hW*54{DBYEi>b z8b#0{B1=|A(xo~fD(AqRyzD_}mxf~k3;A!hCakbAYHk_<;8;KaZmJm8xi*aF&FRYX%4i>k%Yu9;Jhb)l(8yV>1;y1*>TO zV=#wB5frG_FZ`a7m&DGl(wJXT`L8M|YGt?|-Q5s4ZMBF7STa6#W4vA<^nWrWYa7>p zPCx_Xs@a=U!0ks~2A(dBTXm#rJ)BJCjYh~)u$?QRtLBQ-w;CULw&O>HVuZ5oeo-_k zPR%J9Mp!4HK^g`|>i{?5gY*JDs2@lY9}Z#fmxiq-KLu2}~G!_>dsjnhFDk zr?kG0gu0EaKe6PSte}HheL9Ph-{3sd%{Qf_pEz9VD$)D_F^5b3WTziJAjzL)etM00 z?RC-^+jIjKvB{I3FF{qZcKElH#VpANv;waMqWI3ovXxkdLc2H_wABf$CG_TI%b;#O z5-Ps)V%{G3i7tUcszQjsRIB}qWNvg7^O#lzLK9d>){0!nmx6dS1(^42sX2()b}P}T zhj63%o!Nz~Sj?LFx6sQy)BBFNs=aP|ycqpo!x!1QO^5kYj5haJ2WxROle3jzRvxsw zIIR539ca$QNmoGDjD8RcB1!vsthzLbWwR&fpi2wN1R1c_(*wv{M)w!4Yu}idtiLnB zpF_fp^o{QM>H`RlYfoSqYJlalgCXX{2f%m;j)L4vVi@@g-NLWC1L#C`38OG68bty? zh{4(vSC#|73sT|l2mo;f%U`^Fzy75T{|@>yDm365kT$(@%9;*fEAcVWwg=G{(AOJx zH_alIaZn!DIKp{-`Vxp=_c+mn&UR z21>1|x@FYe=PtyO16JH?ea{tuW& z=NEs>Neb@9v6eZ}N(#TF4RGG~6f^_nkrE<`3Y_jpUwX`>Bh;JvGHEYhLpfcI8jDY5 zA|%n=f75b8YuHV>-%hb4Yw05k9RwCua5x`KtyAMVizk3xo&alM@BBK@XM&v;8;U`R ziRD8Z@0Xy%--eY&@q#r}*2|9ykFw%y-!z`00Y5wp!B0<%+;OYBL&mgsNJ8~LOP0YQ z9+K)YY~8`r#DPtNc}J&Ppi0$R_ab8$)VS8J5S`^}FZL}RW&9G*bq4qNIG7gUu2+lI zy)lMX_sKSohtlIK(H;G)qdjX+*ZLU0Q1@bVNG1#&i8dni8%X2lfl=n8a%|);|2Hrh z8(#~<&b-GdYwX3Y-7Or2)*sdOl3}e_n|`?+#pyjObJea;wSNgWL56+Aj7t)?OR$HIw-f`g)&zfUKGw-pJ6Ia<)8i=X`14A*4JdT%3`ioGbo z0bWU8yI13W&2sEHi_j|;3o19b>g=u?fGAY6k>l)is4j?$K$ z+J{^!7oRs&piU(_T((o%yES6MPls_r*cjVD^z`gKHP!|M$9rp}lms>l9(Z$R_kySb+6BX9jSr-;8b%A>WwdnvuMlXw^xV>*Pph3E|%~_nu zT!4)gX?LeJ99N9#seUYuPsv}c8ORHo6?hWKH&6I0$-M!3RY8B3&Z>!*7%LNx(Wb=_ zJQE^HX#s+?O3u-1Bo>thSyiqy-6(l1Ai^sV#Fja;@
    B7*+jBXD}_bhYX2u1?gBmGwrg-B`nb-=hN<`kjb(!wSQ&)uRH_ zu{*7{Fu`MVyH%j3|5LDkLt~tLPNj%Cw>8ekDB_I_m&x5QN8_=tLyv;*W-`tioJ&p! z+yuN9P35q`1ze|M%2DKxeh^Xr4?O?Bt-FlXUcx5>v#{YYB?SHPCO#gyeO~ijn zI-}1hH%nw@!C{CGD$p8?#wh(J27}ta=pau282Y-?+AtJf5p*5@bFVE*x zVi;RX*B?lY@#v!*n%vZs`_E`mY=AW$WEkaOdA*yOmw1Ox^x-*8`?g)#IuNB=f;uq$ zDei`9f6f~&StT&I2S0wkD!y5c76`wd*>d=Pn*j1thJ%v=VuW_{BO-5A>=NQ`hy!Jc zuJjc=E&QRZ#ec&C##bls%zt6eIOp*A#couwVc|i#6x4{xzo>>?8Dl%MaaP!k)v(Wj z;cy_8H;e1lH=5pI!IS?20J3%5(PIh*DZ!Vh>nX@;2ftGkX+wQV^$Beifn2p;5vTMs zLN{n-ZN7?BlV*RzAGgw^hM?*lL%l9a_asnVk+U+6ilNTtXu-4tF>ES;lLQPc=h&57JsaOM~=|{q0eoy-?z-rh*GfC{(cp<@1z73u2hgxZggdaNX_Qb2~MXTP+E(`lOD4> z7|rXnhs8&SVT1xKh7TZO!vV+=w6%vm74U)BF0#xEbgcnGb(ZB+dZVKImKLzst(5OD zV#Yc!t{Jfx=Vl=X$0l?;(oTpU5>jt`79*O-bTW?f7pzav<)(tv(33t2b0OxqE^NmZ z`yYsXX#+L9s+g{RFvn>=>^lV?0B{4Sb1@t_R~+~0gzE;jDMSiduXQI`_?hgU!A2t( zRTw|au^q3}DG7IWjm;FlHPyOeXd$}(^_(^WK?#6?7k1E{7+FoRKyes&jX#J^M;YDk zI-~|aSkMJGhp>kuvx5p7sSr4v2@3=lWSff-S_>d^9ZYBTjs^`csdSuA_5=SnVr)#57eDaComJ`J4Fi|px*crwQU;z`&LHx;CkPSA>jZg0$zag z7_%WcF80O&ikzzZjW_;^#ijAp5a_plNCqVH+A4kVfWuEZetmeFoE)<3=$v?pi0;2$ zE6pWsmrkU?53{cOP`leb3F85mGu~M6s7(QP$wm_tn@2=C@tN_-_G(2d3R(GMjXnljAm zhJ1Z1UwA&cT59NIG(zaD_?+|jQ_i1$$b6eK7L{noWWoYVT7!#OJ<=Q?_UIB7nBP4~ z?nvirLZtR`F^tBmtbK$#X3TJTib%C_O=!31+eFsOBIBWLCtguYz1ip0`GN?{oyt52&kxqkjww>;tu zX!}Xt=ZX_H)7j79EB2cBg%`NQa@grn7J}RfBd4>sP!%G@Qg;0FEq(}KsNdq#UdJ|4 z$9_{ky}t^UmXSRDx*}_WDw5}Lgs4vjs;WxZu4^Kj``E#1fRQ?H9xr#DC-ix$3a5-a zKsa*xk|%?7aWf^A({Z{mt6Y7_FLl-U;t#?4Qvz!H_3dC{fQgsiz=k$X)eYG_d-kclX-#x906Odh3);m9 z+9%4?IC0iUqJNfjwYm95QDNA+OhN;N*`YD6B=x+!B00$MzM;GXY|i-U;d#MNqAW1k zxxsluGOb_bv-U@c^RkJ(*}PNq?RRZdM^0uVpL2-EmyG6D2B;+N7y4zjYU4BtRiB}{>Yd^o z!JLAWL{IjwxkQbzkdi)znNk8?SQkEESWP@Uewi0ysSqCOU^M}PT;gd(Dq5#EvWJZ( z5Cg;|rH0s@qe_asTVTf^UZ@$1HlzT+jai_*1UpW`)a6-HBAdI1A228)i)M zdceD)Q0D?Gw1Y|a6f>BcZ#HA%Q(T(7=Wh)FXmr3J<35fb*Xf>}@tx$8hjHCOVqFdz zJc>iGFM^n8$aXi14-wTQ!4jNFk`f3^=L1UO&a}dCdSNH7MD%%UWJL7uo$=w{UVhf8 zx~T6nRK-`#DhZ&G;H0=nm)u;r;Di4bmns5mol&)@&O6?!`o?ma6O>fqGxnBx2l%FQ z4~+~TC}If`sKi`o!bl&YtY;`w=!vH!JP=Iz_{?$U38#V1*^{1-Ic<^j3B8V1vq?6M z=|}5voyK!bn0(*bV4}$aAANvAhr;SUAs|i!UozStgbNeBK`#-yu(5Kl7#S|*N!0mZ z$aTnZiDot8Viz_F2_0>gEM}a-I;Y>Dg^x4f6b%nKUPM9@wZl=0I;>8uDO&R4Pd};A zpvk0MvaK{Nk$!{~$@E*&z{feTd4Ae(ONM*2ND?uhgCVxOX9%iNrwXiK*jGERvj4Po zpc|_7_(cYgB>YDRMmHLkcN40MGR-kLRU%KY)a|G<=F!kJ7&_#r#B$e!)WP8ROL(E_ zS7u{!v>4FJUf1feia|*NGo~XziBG!25KO~W6M>-OQN~iloEr{0iMh8Wqfz!P_2Y)K zhgQF+D`*m<8F}tL*UNY|P#+bzg*$#pG;&ZEZ7sPNc`)0MfaqxX#MGq`+{0|4m6Ftd zhL+4AOIfD0@I;M?bkyCmNs_l38pVgmNaAFm#`e{Ox^M;Req>jU1loZMDqbFkAcOJZ zDCUv`MAL)fhRqhtKjVBS*p~OqlNw55MmAjQg@kAB0``tih>}#Uq!#HQ10xhe08v@y zcqF?P35;d{0K7DSBS7bJs>*~T68Ti&ICzsg3`V+(ZpMD{h8gvgbzLSgk*CWxuBH6* z(r1-!9-rkcL#ZMei;OtK(R1pG;+xMQPVWNvMrktTR*!ml6FpD(ML5C!^5YO~q94Mi zBhv&z&ELFCY_jYlKho8oG_8roo7ZF`8rq@q3!EMM-~$~v#!)#0XU_EuzH?t9Q+&yO z>)1HCDi}I6i0CU?<%*RO3WO1$m>nHU>IQchKm(`)`C$}U*}%h_Mn!s87>A#!hq`xk z!_SnXSW910ePN3Z+x zPDzwjdSSsWuR2T#yq3XH%o4RsY0=E5bei)vGf}23ttNHBn#{?|OoM3`F;$2%fzr%! zo~8h2zD?%T$4r1}!%O91LTk+OuS_XA^VOv}mDM`q`du@9^A>MEgb8WPVp^u0KJyzi zXCuLUjwBNi#^ea5mX~zVsl_-n%?{59t}i6Ik*P5%`Qc zXwp3wm-R3qoD9hvrdZB-61|vHP07?2@822&?25JHCVH#Sx|}r79UB0pS1{mSwiz4d z$Z5yTB{RUzW}8Y-9FTp{%BwrhDJo=4y;-yx9B64Mb1Ncx=A+cci*$zk%=WUC!jax= z|Eyi%_w!xiZsg;IMUjfS|3!%cz!Ed?M&kcer?qL9UJeY;N(O(zQ*Qf}QKRDF#uh>W zQQYieONNxvXzk`41oC5Nh4N>!gk$n>*`^bueNmWqj?|Dqf_!cjde?xnZvN0RGi@p* z5F_p=TJEK>wT`|$`S*pRIx{X{-Q}~R-NS4fs?d8%3{*DoMY=EPF8zm_+zIqE0Lab2 zUh*1BsNGqyk2pd@=;FP8piD;ZS)~=!iw=|%NVQ%&P+1Kmk8GE8U^StPbI}M&2j&@q zg;#pB(fMoa0@r)hC|rnXb7Y+0%&FbUV~RIc#rUyj#Il#s49Xq&6IevX^W(sI?Ir2# z0>OCXs&J)ONs=8SG##FEfsx!*J_Y-|UgleODffA-fSuwAN!my{3j4X>ZVGloIfgD@ z#S2E}VS)qlw(N4puJki6x?#3zT6cpts=m@>RJ-MNxA>HWPQ`dfI2q(zT*2AT17+PA_JLlOE(a&o_Fsa|KoQ*)RJ!{!T=#i)eu!nMUka35L_S67&wNt+a>Q^5Piq$Gn{Iw z&m?}KW1F-K4O%z?%^7<6g2d>?12(Qqxc9_XHi#PS94M1Rpo~;({Qgp=lZdjI>KU$Q z{PN95O!sBzOz5RGwBuN0FXnL3zu(cEA;=yP?E|_vo&X3V zj|`k7Ovm-NM^)SoWkWcUG6er7@uq2j6%Y}4rGos7PSH0 zaL2tp4^4ubf>R3~t0Jg=st8v<9ZCtbm}vcU$cGN_y{@0){;!{MJoeMq<37KBx|B{2 z;lLhJvl2K^)JxDzv_D+{ZLW^gnaGO%;3)s--U7p%20xvt^2KyKHp3EM*&%WSySy>@ z$rDbw2QkGKMN1z+w)@0g-!MoH5Y{KdVFL5G1L!&vxHf{HPBRzv=_o(sWmW+6J8M!x zQ_>z~2tnIa=Jlcg&bE=lf4TaGvgjVHLY?eRWm#Y4trW+R(Qe;VF2s?%qJ;gDbDS>- z`;z&9xn~ad*at+HD$v<05QD^UjX(zqfn~`aI5s)ulY_=v$IfA*%`DEw0`r4wkEixH z%k#Ij9FDwOr<0wE=ZHzVzt}iN1sK9f3k^QZ7=^X1aEwVLyOxzfpitan@&{zrrKG39mb3 z@ImN3UNj-Nu&xoQn1PxGlD->_$FdpThoSZ|#YNZInnRZ|ywP9R53Mc5oC%k9+cr9x z3?-Os08>w}T66aizP2T?Y$KsrjGmDivqRKowI>ZVP6(voZ~ri%r>mkA)lM}<`^2IWXPx7dgC8bp3#P^3o{3d1qE(-V1MNd2;1C2fP2@7+ zwB%X&W(ZEI`ZO1-aB#xr+z`#chLGkvul)Y+KesYkl#6r9JP$>YPk_5T|BpJ87 z?l1TQP3ew&7{E=#7w}CG9?$8T+}%(a%vG~c5MG>W_~O-9hJClMo<*i2dOLM=aX>k< zzthi^PNhpi6IG2qQzwr8wXBgp#z&$#QlKpBO2ZsFy?xeF6DlSxc#H$0bUO!U<|cJv z9bw>6$5~fpi|JCugoLEf(_32CBRL8%B%lj{4;{k1EMIbt)(7ebVOlWn0Wy^)zUO{$ zo9=40CXJX*yb+_s6o~)L-ktEspMT|qpd!Hse7Jt;ie5&Z|oSN%*cYQ zmXQnu%HZy2NT~|-q0&yb6!&01!^L>K0U1hy4ykYU_O_uV)ImE~2F6MXeKF~qzPybU z3@(Zhd!@X8Fj9*-tpBP9%dTxKYtdva4qpNH|3u-TfyPGmV#1h%6?8 zLRV#ScCLwzpo`Fg3Z*9_SjE?liKs}Yc(X3c+ut$EKejy>g2+ zsR9FK{hfPE0w78@j=_Bwz512^BH{@ZqL00K^?A(RE+e~Axs@%97>&9?p6tgcHlT&6 z_{y~O^D}>6k(HEQ7xf>Rz255+OSe!#ZD1J%LC zvm=X^=arr|GhxU~co0p>Ko9UI$)XWkHCF*DXvsI-Eb^4{+nk8 z0eek!b}(fW*s^GbGpnI-h`>JvjLmSy9!>|Os1bp^J`CI3I~0CW(6Yr5sYk7i#pf!O zCWwI#!!}2b!UK5@j&!b33a;> zVnw_Gv2`|W8{wLavffRS2}XePuh<=G?vG-|eZ+8Nq)w)uRzvw@nQ>*-{{*JYWs2n2Ql1cH>Mh0*|Cq%ehuo8?NAS}ut@AcoMIK)3e{f=#)RZ%@nVyF--mA&9hA;NP{e2`?tPaQ4x zp48s}V9oNMxslt~3{TgR!dT@2KeFH~YO0yv7Q^NgBql8fWJE+KBK|lGVzp-?w6sD( zOdiQ=C@TGHUyNh1z8VGSqiRrY4TPZFGQOw79pD>pSMN8@S)4s}cnBI8})6EAW7 z@v)ZM(pq+)GBV3;qFKhA-|}VUwv&+)0^tYdre)P$92`x=cAJYaAI14%r*~v<#9D8b zBvPZta_m7b$rs!Q9v~0+yLwW+^^>wRhck&Cwm!LW;FDY8?a7UO&VWX`?GpFwPHsc} z)v}Mz@Wt0kHf*pqn;w4fLlSDjEYh&nQ|OG5uFi4@g9rfULmjypaeX5&9YFZSZ2fZN z_RUY7k%OI9tnjR6QZOSoC~M9zsFm{#9e#L0N>=3P!un4J=e%sJ9>ixY6}gpm;WIw= z)i@iz#t0d?Nd&pg7BgI80x^QNx#}%8roCf#OyY*2M|Cb1tC}{9>ZU~XgP@SoQpSSV zs6${n5M|$q2M4tRh8x5WDupvR_pwXDy<3K8JU|H30B+1nUf@J%I8g6DHEEc%vq^Be zDaXXDvngD+6rWkHk%>=L*%YWj7(8Hv)2!;mc{MpIoJUl)kDWqjglFhU4Ooxu;_YsQ z%^f<982C`05f+>-Hr9bGTb1M>u{S|ujFLBY4QYDP^|dmu1<0#-?4plW#7)wUJkQ46 zQDx$FU~Oz^l=maGY`{X5|9wroG4#W+h&sK(2KNS#eZE5FUDi3 ztz;oD5Me+5rn)lioCEh4Eq|y8@iQi;7;)wIkQ@2Uz;Wt03J12qU11cwQ}Up+o@dWr zJ_u_`h6A%Tt0*`p01*hrRS_X_AyNIk@$lJftB9o_JXDZkKT?fCJBsdK~X!L2wBPSRaOhvpIGMbpH`q?V0t3 zSc3qZTXk{EZT<-c8prv2Z7EwD9W{uxL8tC-^yr(2>a2Nn!Sf{b2*Q#;;CP0%JYb!u zt2~SmO)0c67)t{Uu%34!YI+#Z(2C7yI~I~r(&&a%@!+KAEXLlIcjT(L##%Zeo{08CZfWgDxz-El_ zv*2+Qn<^$oRcpDt{pgW+Z>oKc@gop+>10-uYxpmw)XCvkCvpsFSN9;@Vw-w=jq+7W zvXf@)%I%#RPN>|-oax&cqbC=c%%>djo!rAjydx2Tn{qfPKI)6u{a1%gpt1gI%S9A9K*Y%EaTxp8*K6I2 zFGJ8WvGg?@0e6gn#s?BLBtT=MN-YYuq}GoBIpg`5T?c#g>qR|}X+HngB3I+U^_aN< z$fF~AfPbbBF1C=||L{{BRv2KP4JBy1c}S9>MZ{Z8#K)B?L;MTLOep=|hzb>8hJr?| z3YAMzK$zlK1pk#*yIt)@jzjd}Fy55C>8{R3oW%VylH$g_t)lAWb|wOi&vNmva-5k5u=V?HXgI7=?np--xzgj72 zjMo`y{ZGb61@?CJL8>ggv1X+(n2;Oy-I!IkovNY32u!mW|{5~Odr2c;Urd@DguF(KE!LR)) zi8SoDWGX0IGyH;dOP`bi8e@lW(IdGws(Ec7PD)+{rLo?d)Osj^>ugLV4hw_B4pl!M zkTR$C0fO~3^!^;JbI59Utu&!5ND(f7!k4-b=Z8=WOOWCQpBFV6G2;^(nbx|HR^<3L0GsBR#Fi#X>;=y}xz{7Igm zR^vVaew^6u8-2tq74{L)$3Cxs91<{M+WelxgC3>F+);0;G>TFd1pWv8V6ixm&g6uA z(B2;4;2;#uX~3frT$vXdD&(i}?pJ_IDLd|XGh)d`&@5u^2(!rd%m-(&P|hjdUA=uG z^yZ5B)`I5E?tt9ke}l`i(@0?QXv_(iZGb5+HXfApYAuX5I@ei*Zr5lcsQ7&4?dMFfAOHFLFLRcS%w$#6Fo zYD{w@|GEcz`VewdlYrNGnHibDsxkfQG~C17kvz!{(eMtinBhdA^+Ke>uMjJ$9I|JO z^l%U1>1jdj6tIy}Bq`&D-n+5)aCvn(6Zj*3CB^f%mclYx-*&7=gY8O{qWt$Ei3TKG zh^4@G?Jx*0WUc8FGt*rJ7*YQrB;H9gg>-hDmT2}3wqS;M#qzjsSs}PYt+gCEHR7P$ zgzfhoOFE2_T@aw_K(2xcho?Q9BV>BIGm{;gqGdYxJ`ZLzO^EvFY!?A|_LEJB)Fmxx z)c3YF><}<9gKLxOTtP8`xt^3$p@jn+)zk;+CZu0xp8tc12_QsF4DZs-H)EZxI|p}r z)OK@_24IKq8ruLtqHh-0cP+4f=kl(d!i*t-0wK%oHp9_yKUD2yNNGNXiMIpFoS8E( zYU|+F*9rYm&?2uZOj`6w7jNCbp)ajZ0c15=?u~`>#UB{+y?~B5T0AdL(Ch&)qVi|B zPV-5|d?Xdh%#nbY;3O-Odj@_`1$KX>iiI!fN4v+Kb$HlnYwmS@pSv)sm z0NnGB?JgH+N|XXSa4JgV)1dhy_*MfHra+}Tlxe6mzp8v$?#L6(i*+-%QxAc3O3*TO z{UShQyMA~`k?ODEIV$DfljWL-_0ITLjf@snyqLMOq^36rr|6F4x*PkGDe%*p!izOO ze9QICwyic`L1s!U(+V&$9Q{q8fA9wZ{$OgiY%qUXjPIHXnu(`r<4clm3{Gc)ECJ_aCa@sf9XAabPSp5QL9w zW48R*3k&tN+9TXYK?=Xe!HEbB(_ndQ(}z=M#Bm$*-yz}@3Jt*9f=W6h!O|nl z?jplq_5s22-7ySkg2OH^bw{C+v#6sH990uEWoSK6a6x{?`O9Ruy)!a;(@oEC7l?Mo zI}QwZ-wB;`1aYG(%>?4&9~gtE!WXiexP~u*+(-(ty!%{7=#y_EgQ;#H;73deeB0fL$%Si-!~h$ zgM<}?1$fH~xI$t4E zKn`OlMkeB|6Ii97Y~rlk!VQ1aG7GHOB#<36jEHiOJBF5hUTtL%`tFRui~&c%MW9>) zM^DS+nR5r$^9<>z8wkhHyjT5CS}q4ddKt5Qk{rQtAJVcT*U|O=XBFA})o4=2Mvape zs+GfR^Z%EUOiql)90pX*j7}Coj%k;9dd}RITUIlr)*pU?v4%aiH@iEoiUqz4h+Uuq ze#W7tf&Ou}BygP{^z+HA4L@FOr#QnyI{Igp$6Ww?xCguBtUv*cPiZzNl^$zZtC7$$ zc|v-;4G_>~6IQ!|N8Ge)q`?}5@EBm+dNygK&FNEW-4+NgsaamZf1^<+%?EsKS&uin zd7Akq-8Q$Bv7^Cs|EH7>FMV}K5JQ;)>6=**Se-z#iZA?$9NqYD(+|MB^wSd|CSPXs zZ!~#>);=M?k*wSD8-3xw-g@+)DOp2;cm70T=&>rkr9dO|7`ek8kG)SDF$_aO<4C#7 z=#6VLIz51ZKa=~VW$0wSg_gez9E%~!q_GIp**C0jHj6z-e=O(S<9-4HZQyWCvaO)R zJLbtG%yXVq%h6j8P5_IS!F5lkCzL8R7VlVG9)&AdGu}Pt8-gLwg6IJ~ zCs&Les&$4W;;5V`mZv*KXLx6|%rN`2}qY zQZJPJxk@INuU|8vx#TvEo8V(BS>JiWE-5SUktY->CG6bi?G4}ypzl32Uh z;rwF}7S5t&8R%Bzoz4`TW7L)2e89+FLHFW~A^u)RT-Hv}V7~`vNNz)K!khp@bxR+T z;Iv;3Qgrh1)ikKSMP~CZxT!oLx|yz zO&x~M*e*u~o!`R+lUv}l0V)ss357G=Bebtj`*V%4phW;kd#6_!)t$TF$>B?WOIaX%<=9mn2 zl~QTP%p=e(fhM1Di}UHH@Bl)`?i-`qnk%uKJCq0iSwh~Vs;D>&iW#AiMwWJ4B;C`F z+oAF`@a4w~6@^A^KYl!aB&@v7mbv8~MCY69h(q~@SGG=ietl%cDR#*Qp-+I`4TK77 zBii;YNSLAuT3%-S4zU_henPcBZzkLao`Psp=}A>b7DUc^5R9n4+kc9wcqsBssUVrd zH`LRs?X1O1{Or{J3ah(&XJ;B9X5W82H&PF(1 z$`}Oh?UA7Gm(4Lt(l_m|hrJ8)kYK46{--zJu-Pe6!H@7WoJ9ZkyAgZ8(0stKT)s#H zZk!BYcSl?ENK0uSVol2OaxMwxz?{3^-{R#BnYl9yjNjE>4-KI3VkgN!=sf}JbVt(N zMN~x#094KcYL+PxUEYeV#4c@N2*6*6RE*Y zSnn>Q&KudY^Rp2cX>q$t958x8-Mtoq&+TD$wtL2S^<&%c;KdDYg0-iF?dICon+0I3 zI9w5T@76P~)o#R%fpldIlM@sF?|G69zFe5xA#_`ua6TA7Cm7N=dyUGTz+m&EkY!es z5dAoBMZ1&t(%tX>0u?=_5aPq7%eOX&=R05tkypf_u)%NigYQ7}kN~eZD4=$aTM9!` zj76d&RD1yObUN7#Ing2r_6E{&(P|JLM_WNY<7;QF9fB42NUJ0G*DqZHed7UkGenij>OI^S`pZ@Uy&s4L!>UrfL z(Jz-@AEtQbO59AEWAA8D!lkv#U=+@zm&e&&rYJOy20i8*!tM1*8OstF=AmkuES`;x zyCnoWE5q~OiH6*eS2;}MK=`|iFHTzE9z!Dt>U0Mt;ReoFV`!C}Z|e@Xa(u*=KkBV= zZ}P|+_JfW7Fg_f1KI3K8q#w`At^3~3*_F-VIcetJon8WIe3~ZHBo#qcg5dN%a3hn% zdLy`)&{Oq?<9;rZL zjrJ?Dwx-R2bfNu~u1Sj}Of+t6FcDvxDVL6e^^@ny!u)IL_;f#ON&~uJA0p2l*gP9J zWD^ITRMym_XUpg&d++o5ZV##ovVIY1-l;hfh=U@I)tY%C@O2R7i6S1yg8w%FXN{IT zEWUzU`JsLh6_7Cc`;oL ztLxd-Z`2I9z{rPPBN~z?dZ3Mo(Et;wL-o&bY0fy;{|t7Gkz=4}Z$)0h1M|6@&sdsv z4T-pN(5^~+cE&PKUNh;BVYa={7KLLqvo_w!(M5 zxQX+mMzJb6%6V~Hd)+~m)59XB)j=~pGDt5vgea?iS!(a^@p(=n9aCV`hSdj1xVdF_ zCcdgig>=q-wR^xF_5MZJI)L%QPfRL+c^XZ|xlh30l*f<3&}1kV>f#zSOkk$|U|oA2 zV9=yC0*P|Q<7m{?DMsQQQEyeW%D!U+OvzmZBV?FlWWZSZI0lXf%Ib$>&KJ~PGAs@$ z+;H>uxPJo;&jue>p;Z%Q9w@bDa z%S=YZSl7U$V4d>Ytge8gaw$=tLt_0fS^@*i#3S<;^JgsZ#Zs3ss!>)YB51wn!KZtV z9^7L8nw?44p_zv+`?DA^S%iJU9Rks1%tn>`949fk8DEu)%ANS&qgHOKnTo<3P%$W@ zAI3Dad(P*;0gAC#Pnca9^Vt8544yBd&Wl;s^^*y+L;q8mg662F`v6A_Ucd$EzPm_n zr0Pg|E~I+^jKYDw+Csa1tuN~E>c}Ccj0pX3at(=5zLlIofV2WRmN%N=X|TQFLS zA8g4`f;F7#8gLOE2ovM+f5MHE3nCf?b-xHcdDBV_p+@_{+S29WX!jC-JfqM*;?Z|A zJ>E|a-vlnyNqe3FA7)6ZNZ^;;wJ3mULg95`y$BW$l_~0CJV+($T1Yvt$A?2Tj>&xI zKr~Yz4Nl5pzyTSTHZZ(Lk6*`43=7yXGr6Q4zYl)xCDiHcqWtT9i$nwvvo=>hY%)T{IX1e1kU%ywuq)TU&9{VM>Mkd0L1X-j$QO zxw1#sfsyMqaaWo-yE#kxZpHxj(qo&a9P%o{j5qomN+P)f8R~Q_r$DM_0Xrl)+C4 z>?SQ2=DXoUywCcpJ1ygdSMaoOVtBv!s;jZYK(cha{dn62SS?ZC*9{GXC#0_sd6I@t z#|&RW-j|w{zGH%!)F25pAE4IH1(*i$GK=eHEtq#|sf%2#camsAjtbq_rM+r+h#fqk z2LlNB4l`z(9V%j4G71u`BAFm@M`j1&iv}H~-!D;y{IiqFo^V)S#sSJ~FhR8I^%^gt zF;QW_dih1Jqh@%xE^?_{bp{J7S9eldPC_6dms9BI=InyJ%fz=xe~ZZ(ganFICaXS# zffz_Pm7H5|*OeP@)A$WbFLm3&8*o=}A1hHk*bhnw1Z>}6H)w8yYD~V{%;Kj4{ z%AK9JHi3h6%KSiB29NQ4cWqnzPzA(HCLv09qL$@CK(6U{9E@Y}|4EvG5QIVZOon1~ z5j>8fv7ir($^N+5N}MSJMhnUgNYl6?+=Y;cJh&B5e6I+_8Vyyt<)o_kaM@{tf%9PT zL|?~_hlh)Q1*yoQ?)dW%EG0G^CR~UCpILJQ8m@lc&oO>7uga?^7lDre9kz+6Mqw#09|H&ydhnAYz$nOe^Y)06hM_F6KsA7iU54r+YA@Dg zaz~SN;mwq$SX-sIH_wb-?C^t7P4C?90jSul4 z7*+>WwAeL*{l!j_aZ&Hgxt;bi)zbOd4hKATN%-@8;R7GSuy+SHb1mN=;9q72ltok} z0y@Z6^3tK5PTabZg9L~c#sL72n#%*~v|=lYlPaLGW&$JVvMI@QPhdo8R`gcU=lU&p zME8aJ&>7LwBN_R4osjVGs`0`o6ZJoab z^WvWj%rxn5w9MTWj-~IAYTAXM>Dxw7?M^GQw!V=-5_oja=dS(^avR29PN+ z$W018B3D#@E;Yk14OuTMM4!52e$xX#5yr*PDZkS@rbDD`s-$^=)`3)E#|Dyju+j18 zq+|4wS`j(`bdU-A!o7tZBhZ;9fDqi+DKZHO*g}Y_!~w|mPcT#FPsD2d?+<|K!JalM zn+XD^4R47+c15MpZs{wrg+h9MHZSut#a?`TbOLDP2;v)@uTZ%&q4Q`E=#? zyTO*<&&R+rv4AucONFT!7lv*w0nwks;H7%m!B#dLtGzLO#%UHrL4CykP6Rwpga4Ac zaqC9iczG6u**t=NOd@$}|sVi|U^Y0x6bs zOq<0U=mJT{V$%#l@Ebv9#h@{|C~a08qPX(W z+XD_FJ2y!-nNO&~8po|5)O`EiMm{iYAZ`KDqGUDPTfYV9{rjS|?51GIn}DJOfF&FNJm~;} zOu6>aDj|`<+laZ0v0~Z>x0kSJh$UqQv%Q~-Zn-qLeaH>Re$v#`7!6Ny<~dy$6g8|i zGOW5yjo=w1m~AocYHGwS1Lk2Tue2?WQo*}HmX^0tbxjsDqE(IdyNPHO@c-l2*A|pOms5`i#e-aiZ6d)DR(2mYu8p1L(@6Gg>Yd|6V=^tdaMto4uBF!Ur!RZvum}7!cgR6CHXHrSo__9wDWp zq&SZ{!!u6Z$;NOz_5ySpNTib_q&8*^Sti|lTF4hMmnfGRkk^>H;G~0vh2=#mT55=GZbcrr(4?HmH zy|>rosPvnfzvf_hJ2ars7AiJa{)cRs5(Pi-G||q8Nu~>AnrKgQz=QTsfMN>Alh}< zqAD{GXb1sP3K`WsPj-2ZZ;yMTU52?FTo`_VJeZgQ6inTw0m~oaKUJ+L*)?+~)04}^KE(WOF1|VYy+RzCFc1Ji9qDKJ)B<#m!zI?5 znBTp`Tp01OzC0-I|JbO0_Y#B4+sYLFe!Q|U;V!kPvL<0LTKr4elg= zxUiQiv)HtPn9mOj6Zi(y_!T@S-J%OG{PMl(X)Z`8QQJRZ(-B*18?jWBP=m zDnzj^Hvb@GA34K&!Fm?_mdStbPVPxhyLEJxs)seCps!ToKe|fA z&8=MMmBx??T&q22yyDkf8s-a8>mQ{9~qrKzw}Ptu~j zFHxH6?n{)Wq8f5y?~kUs`=hD$%8}ekETj8C26@6qBIqD>PcE8w_-?B z?vJLDv+H7~_4Aw7uQ20wLrl`)6SlnvVV~zgf!*Yl4+ay0emL9fg%OylaUdf6#g@uD zrMB5TPh0Zgd^ww>n*?Er$MVB7J~VZELqaSiq~BDysZcKage7URFf@tyfHYdKi#z7M z*x}q)@Z*+|0U|LR-8@O7iTuP+?}VaaMi346U91EgF@E9iD8zK|_?&3U#W)-|0;NU7 z??<4*h)J-dosCBZC>p^e>}kNo&6H%nQ(mNPm|;59p63QJ!)B{^=TuZ$l!A$vH&QTF z-Udd???)G0Su773S60iDMkDW~ta5~kIjSsu$giw;P)I46^ytzhus;vTrd24jt2zh&SfJ-%FA#5UUpzMAt|H-HRLM( z*#HM%(3DWZ3>!@lSeDO{6j5P7**Sp=AwsHb8CU=>yA`mjkR?GfCZ-JotCIcl>f+iu zVx)@K(kenE3+rk~0#!T~Yb6AMAO{!#r0NHij~+Y<*il7C4jfW9Y!FbT28{urW(Xjo zN(>m+`h}CVii@Tym8r$Fij>8QB_$OplBz_JP@Fh2G6Ahpr3y0u05T9^xG+>@X+bDR z3H0Mrqgg9hqSlbYun|4~_4|u8@TX8Z&Oy|MYdRdgmGwvXl)VYuoz~DCm;5b097N zZG6;ovPW{D8F5eKtjz!#V zhR$c1%0#F+Y>4P zcWnWyOOpSPwNutw%Uo7tOIb6blDlh|0Ui(upj2;hFD;@(sP#8tx;Gbgx|C(YFv9{# zrX~3RhSo30?-kTS7~hytqipWyOqd|apNoS8{XFbv<@X9|`B;OjBtN|0D^v+!EdETE z7;yn)EZzNx6noGn+!&~j2oU|kjXA4|2VwzHTY?#*rGRA5zA&0bolL8;9p z*)6Mj8N7jn3Tw<>zOmA$qw1Jk_J3pK#sgx9vLqq~Y!VP4f^8oD3j-(cfodQC<@X9} zWt13&{IyjGfhNSZ__-MC;^*PNGrw10gKEh$asYYf_X=z>v>5&^kOW{OE`<}~m+cyC zcPKD z*Hgo!D-FK`da~%ot~yG1?Ir21t~&M)_8{ZuRWM=AXzkPC(o3pqA0iwE-E7T5BLRgy z=M!R4E~bIvM|*rVG%;uGtb11LFpQtr{Ij>O(d5gm0pBscttepo z<&s;Wgf`nVlPKnbWWa+&@ZirjFV)|3m|r9$p^JrTYT!O;jN;d-n3cckXK_F?euTXniEDl zWpO2z(N1svy4IaA+Ud=QUc;c7v$i3xEW8rxhVkdDUi+AMn3J-Z_b({Mmxoz#A9qhUWt6#>5X64y2ZBch|x}O z#B{B6wsm&G>py3ev#mE)qDLkm?}Wl{=BJa|cIC(K6$U%_j!@J?tU`Hr^Lqs;X--!< z&{oZeAEt1BLE9SWyBEnxJefZ5Lrn@b1@DYpUiKZMz@vW%0p89pw%4_X>_$}M=Fh`&Sl{v&7muD8MAY-}etPV=P!*b9XrUH@}7%nBF{II%80vMG6+DmQo-LP^@WztjlbLemAn*>Lk1W&v&T&{*x<#w#&&VC*SHNph4++-qdl#EaF^brfx3f%>5 zbBedo(CR2q#5FgloJhfxPW0bG10Yr4iECdWgeW{ zY&7>(9lly|Ttv$*ymC*vEjs@CVb$1QCqx|sT)Sve24dhhyr+{|t2YibrsX(Fa7yw& zX$PWrjVT-s!F18g%FIMo*GypyiQ+ihkR@y&h;K#C%lI9@es=$Xze#WF-#<9v5Eay# z;EAaJ9y!{)89$O!t8MB4_m;w#2PVQsYdhpHF+T8!1J-{&e(1s39r9aOV1=7_%&t=h zA#O3C2g~aKIUH!r&jIjDlszq7Tycs8@eDkw@a;n6WNQrpFa>sWqzf8w+k;M3d7iUb z!sd0j4ckKdzmQ+2p-zaoYEvKHW!?ehC@)gj|9lZuwBcZQ&-@~>@*r(7bR9erC@LsHGc-c&ON{U z<9-|ttcZ<`hp!`l0RAH?FsKDci|N}no37v-5G8#Zv>`)iW=dTEkCbk)?O50vg5zbbF5a`2 z7$T|$be<$q8oOD%B=_R~`db(+e@kL^VU(ouHLP3e;a1{(b-@iMu6su{~Lp=m4 zZN~yY{OspaZ{_b72Sk<3e-13LJ~D=dKuZk#6c~KH+KHZyggDg_yBbq$IE?moE)T<< z3fw&J!in5kS#>7?w@RCuXZta;aP` z-i^Nv7`Ir~)(itLX`Ze<5PU*jr9>xLE0#ON{4wg(UF&je%8z-Rd zpYV2y8--vDdDdn~Nlo-3Ll6QI8Yroe+#102g>f=rnyb#lM(qq_9oh0U8X5Pg+!T<+ z<1E*JF_+WOYJAwRVc98k!jEYB>FAkG$L#-CLDP?o3g(M&=p#`tDZ_`G2Y6;XC3sj4 z%rGHVO|1VJR4dTEf-j;Y%Td|SY3#)@T^)vLS82>!l(TL$2tJ7WI$KfAL}aIb0*Tof zy?kdI18YqIgeM)_w=|A0Ju9sK3BWE6{(#!re**XZ?C`;L_n#N(x40x{+hR~axd&M# znQT5202D~z?S3B!T~98+J%9pT?SCOG3T-;b98%+YOA#%>E!nMLd!{3z1g~S`@rpLy zyP!)p*I{$+@4z@S*cH6gu!&P_OHGpJw{0ck3J=o9#JTX%r=+D8c9sVCpv@z8FScq3 zL>#|m5<51N0PWovUhbfyTha032DnzwpWE?J3pPa*PQdWu1ArID)n1eWwR;@(?fB=EWnA>9I^a&aO*=naw;hic1!U_xZP-iW1uwKcvWO@6z| zk{Vx}j{;x!B^U-mrS(+NW7`}Ph!k)F=7p#8rqj~jyZh~jyxrj2wXTm3k;tw23@r?0AmmK$SHCFEuF9@BP24w0_C5%U zrzU4aeF_1_!o3sPfPY@)C1ID{xQA7wTfyd8^`#knf6b{fHjqhmM?37_!?7m~Y!h0$ z3E$5m@OZK%r|A>$oE-z?3?w02VQN-k4AJg4``K6@Bd}bt&O;~898gD=8?HG|1gEyIvakVwfgQaX)TJ^@*I-@ZAH-2K z1Z%QXt;JI4681%=DM0`3h650=%*s^wA-jd%^Rv7YRM`*^b9_W8vZGBl8l;|&QR?t^ zkUjYmvI0x;H6gW#><6lM7F3~NL@~W`sFu~oK@A^Wp#s1a@Wa>NH?C(EvYbG+75bJj zTL(MZ9e#ZcBZ;+X;bm4m6IMzECW9?ptv9=)**rdgTjL9W4?ey}%{z~+onr6p6ekB;0lVzq;_iwI>J`>Kx=fFaXb||a5Tb=i zpZS<_q78B1=E3+J(He^%j3d?f2>d7AB3uB5i7L$=W0JZt50nSMHn%(_-S7vHPwJbn zH01V2)9`M(7P?R@vV1s3qT&GnWvNn{kqo7hRQ5wX_}3OkqG2BY@dp4Ei4D^s^Y6qn&|Y(A%H;>&e+2q6uw) z(XbgGI9QbcHv@q+#Fnh{rrp!oN1_75nu!iR(lIUBW4_jb)c6)g@)kKP&9-` z^1)K^-J_Lj_4MFu8U3$>8d(62+?|BfQe>iU7Qnj-f_Y>J_`t&dy5v@ZwV0;%#{miI zx_kVhn-;6%B#mM#5B%Wj;JRbO*~;A^1ZI&hy*<9={b0Y0tDnfKAv$d5BCfG+J7=AQPx~^i}U$v=54_!Gr8c-|jTn^FJ)OIMv-)5hkjsZ;u zKeX5!GXm$aq!%Xk;Qf>{2gJx?o;5x&QC$Y!8iNTYh$qGgsY9`*MEI*gTsrdWtbMG;UwsIOwDt-CQr7I*;jb3K;Uz14A>ghru`H0ZO^(%8KOB z@u9%drBK5D&QEP}0TRjaO8T>9Kr#1S53;AHa~<#ys88OYH0bX~gS6{v7fz~3k_=`P z=(&(Y&oP@$#1r!3@P0F!J~&-R8E`zPAZiJJ41@wqy!=g6bkmpFLCrkR-L-+(2V-Z1 z;Lw4vu0l$VrQm~!=;Y`iHKInhXU6>TzBGxgAoc=<^Kk=w4qP-@ohEfT}|)w9M22bBIVqNtEV@@!>x+y`{UMZfpT=eTgv zA@{4`x{%9Wyh6X2$KkBT!^ z5cpU&Nqwy%(Wr4jb|?Mi5o=x+-j=J`pvwbxwCIPr%0cyQm6~KNK<4>$v}=H&P?7fd zsFU@vrElW?7W|q3s*|`OS5TCl=^np6FZX)|ERNc>N4S`XY4i5iqh~g@rA)&AN6sul zL?{d^@#2gL7j_jHo!hTm>rf2OmIZ+;rZtui>wn)-43~MldVZY-Mc$Y1O(J#s$(ZdO z4FU%O2LjB8djJxD+hij%v8wqRtUytYufa-^-Uch6%<(li8GqZO#oV_w7>G;`6WEC$ zhpS50vmr-wiuH))A^x_jzZEn9 zmVPuU6JF4$Y#@lg?JnYPJ4*a*XTkC-8w~i+(c$5S9ex191n2@PIzt;RJHy*IkXS5P z*9^lBCCGDxA4YMy^1})~r0n!)R|mY{?Un@`sFN4Flm=}Y(9=0Ed+nn|5IjJY>#cwlfGmPbt{-L7)r0t;eTMt>}zVfkZ$4wj6U{qwLJ zcgG7CzN_x|^8()PV8=>Sw|hf#lLX%8QJY3|Qa?04SOPO()y%tqdAFo+5TV0xhgxo0 zf{Phc?0Ae6sGs{g^p2QQd^(r);tkAru{7{Zx?0uj620&l({IRIF92uj=!@hvzr_anwcAqi7{&db9u2d@=DXi z&af^>8IU~~itGfCGJ=Z!ph#NEZ|gltQ#yX4u8;X}GsTVgC+I0H>4O10o}xTq!;>kh zuL^kkNc^_$6TeMIM@J`kgn8J=5$0i^Bh14+N0^6sjxZ0upmgqwY9(q#GdHB!xdDmE z&2BJu=Ecr5bIBo%Z|C--hnU=q<_06C$XRTIU+jzy0@`da>$0N5;|1PkY1kVZ!?G}z zQpzM^5C-wLJ;??!WQF)x9pdlt_xOAK zJ$|d^RPs0!@)g+;@}q_xR1Y^zUkUj58k8?K;w*pLg`Q^Dw#46d7X`akjlUE9(3%W2 z0Xh zep~l3RpRfjs2qG0HLaeQPsw2tPDnWUcBYz`H2nawWXaT$DIP#_N2QdK=2pZM#S~LC z6I#lB3m?%vOH=XNI;?}DmiD$}GWWV5{cD2gtN;Anh_Wf1){2Z=nh#`&nNknm^GXgSCVrlt=mcS zApKV9UDP{DeV@qq`a-o)b#fN5mor~tuzltslFpg`tXoLCQ2KT1ouoOBS|odk)^|uB zX{dTcyGry{>i4N#ADNI9Vnh$SD&y;$q>tKFQqyJ23+Ktn+4AzuoJZ({lT$iJU~;<4 zAVi*=E|Zf8&ysV?c15nzi9i4lsPrt;B@W9DOXST7?y|{=;VCq7c#6%C=PnvU9?7|z zwhWF1mT3!#kjDuscm%+>fhVWNGHoG&Lit`?E&^Y94zS4g^1+Mi3oCHSS&fL7(*V#kT+_gfQN%3hvn-81G$z9OC%zkUet|C ztG~2x*$jD>%WiRjx>{^t!bt|Eh@m0~My_YTvX?sn75y z<2yH846a3P7CTK-B5aY}RsvPnkxFFy%&zjuZ-~Hdx75f8fB~Tv856x83#yj;6yv|x zt3=Dain&L`xUsdXVmm0tXKee7?IUNZWQ5h~CXI+9buJP!cd~Bcm41zSKlSEOUm+#^ z0;&ASuZXAt0{mP;gTy~CJ`6nkH+4G}SB z)NQ1d3lUL^8g=f`%%7|Ko8PS>q1$~%(i_M~-8O13El?1IRx>QqCQHUdFGtF%kDjx;>?Rm=jKU5yG8vf z=^f(}>Y(OEGOonAmsqz_zd+4_G;ivCrM^&Eblp(BVPL9~i2ZyDJ~=m0Fu3j_?LPHO zl|+4IFO&5x>Q}o))FbT%_3nBb_3HskgDHENtS?jZ9D6guOwziGT8Z8<>nd&rk$$w=`)1t=L4yO`-~Oi;pFjBR}J zQE2yG&prAU!)NG(*H2Hv=@<_XbfVTMA!sl?pa9me*Ax@Q8B4023+q=ZDB2&rDP;;jg$=7#u?wU(TGvLNLFKj{-9tyL zGzSC%scz(Hdv!%f-r3Q=)HFMD)j+Y}Nb!oAQ`SWNotoN{=S(vMF944B-F-D3T*=a{ z0sHuE(d<3%XNU8h!}~Zg@;4Da0}pH%d4asPBj@Y%c*E-{Fx8_K_R8ca-EW-9h7^ME z^wz5jAyXyNjscUQ%jh{SYN!@xVG3*jdMrHd-v-=eM+OSUy=aufBQCgl85K#B;VUNc z4^z*W2NP;u|0k^Sdi)StA<+8SrurNi(bwE6EIOjyqoDn=2@$C|XXKs${U~71a%!wX zDwlLeidA5%Ojk7@eTtgjHvk3Ci5rm~e%@4}vU|4JSq()NGEv7(hGH?Z2(QacKv$gK zPI}0j->hVj#xHurQ<>@V2hXc2b8P`hs57)RRlquD%)%FOD+hUvl+ptpPHbynCpMraxewaibdxX|S=PQ{!DVs6p38_!`Nx0k-i5V^WY2-gQxdIP z2i7LbI?y^XCGdg#cuO`Yb8g-(GD`fIBRyE!a3Tx@5 z60>w#T+D$mOW7mb0d&03K_$@A^9ewHj%TFYi`>1fXT8Lqfs`%Ww?~5xgAKW3K8I4< z_NEKLnKzTFZ@lGiNICcl_|TpUgDAJ>>Aj^*A*n?aBs!%NQMivDtwD2@5KiUeR-Fub zF}acL0WA7VmDANtO~{<$jch@ojCz0j`Sf)+dDQi#^Y}HfmMmXzf;6t_lhAU7=?;V!Y0(b<6u=S>AS&2+NHLV`YEK6{n?B)hK0yiOX z4r~R_je;$Y8%7W)=w>w{VKfYW!HqPVl`i7!rwPdtXyLlP{vu?6EOkj$=YUd5bhWMeKg&P>8B2D|dd_e(=}pI?&7yY(gs5X(V9X!qJ3*@`Gkp<2KKx)g4YzLDVc9~Mhk*8LrJ&H~gQta`rDl+!el0)lH76SgsvQsY`hsR@dx2s2urfx;G)tVlo=E zF7S0E;a11fZR3b553!q+x8if=#P&H9Ax;>Zjs9YYpxzxEVGi^l%S#5g(&?$R6#K%( zceySYw#B0HS>UxRw?fbC0yfh-*zu91>BWwRB!DE5SY*&Soamh*$U)c;=tYHw>c{+x zlw3)D714us8Gdx@;V)=#y5n(6w&6?hX1RHpC)FyoRNp< zqsUNKIvF6`rN2obDUmiB>mSw^ZGO$6iVT<&LQc1F@GLbo*IRr=-+s3r!Th@||NIV#IL~_H zCyEwOGt!((@?vaA-#jeVhEC8tLN%{3mE7QSDmy%(1^p>kR6>e`rn;{JH$=UpDI`?P zqq5s~&2W-~=N4UEuAh{kL1Q}QKqfV}R3jF(c*$i7^t(6LvMFeyPt=vgNUmBWIU(n4bYVRNPQ zImH}R4@o5lCAvp#{{PL~Q}7C*XtP(0oczn8&ZlC_)&wfZPz(FAJlQg7QnDsBs2tZ$ zhJHwL?a7tmYq@w*(&w^kRyyr{a~g!427dsXqy0|fe#d~nQ^?;b=RE{ zmOF9zm0STGkAKw}Tn>oJkmu8pG;;bqCT|+P2_{4pbx-C>hZ)GA16VkL7Ac^^ z1~3DiJ#bLa9``haPu!`2|KGK4WAY6n1n1aLU4V{fQc`=XtoK4S1`?w22$$FzaVy=ohW@1ZSOkqPTbYN`XjZ~^4lW^QDGFv zurVj#qrc+ZNs1|CvvR=AEzWpyj&s%zh<1*>?w65VSzMZwAk9x)98`-&EGSs|t@ucU zDIbNP{h1~9Q|I`b=g95;+;ED;p3oOf$)y|JmQ=&aA-XwT6jUdc_QDfg<6mr}C_daN zvU_%IT}-N-r@=>zJMEAnt%Og!sfitMyVSYvyulw81mpcYOt96SUfz=FzfwOYnc0WX&W&6*VK!F}pz%x0I& zKn^`?YeA1)1QR@maZR3re~LcpIF~X@tG@v!zGsavfbMXt2w|h#U$EgBUgqcy`vFw) z3Sa^PP&OF|UnG5}^;s->DSX zVJr?CJlz279MgT%!bm5TNSJWv#L4zBoFF*`y-b}8M`us*V-!t~&EUJ9;mYg)hS->p z-RL|2BEElBVXx={A_zcuf1Dq5=v4J^4-~TPAM0xd9K(A6zW}6f8vl^00$!nD*ER*Y z1bfEhTFYVSraW#8#%Eb*A9CA5;RX7j~LVU z-CV(opTESdj&FgU`+SG>KF0VEE}6f18b6f8b!4}frHMQa!8BYhU1VrDu{5!0{>HaQ z-{ySx`L1LmHp8{gPkI%m66E&^t6}F7pFhXB@%x8vhcJw9iC~DWkVeLmE~R&2^L^=i zS~k_AE5lAX`be|eF@#6QBh{E>=FDC(-Xw0?X2cEUQoWOtSc>ThPc~1WQO3%BBV8I+ zgi8cS&&hm*fx}kQ76*L4Q`y4n^@^`n=CyCEIQ;57FaBfIXHE!ho-gu1Xr!d= zLrg4-Wjs^LLOdUGYMV^cRyI{xty15LeCO>SKw^6cmkkZPp?|ukeR`*NEILT!IgK7Y zJXso9>RBIktYuBqMJ-H|-*tQ^`u3+tY$shwzm-gyDa$dp$>y-}Hf8b5(5&qnU*oyX zw?EI7WW-FN`7?oL&-9r(b7$hroN1HsO5b^V$G1h_g@&5ji0v6JApbn)yU?3Oo)$>A z$PCR!nllScQHwovJC1Af1U(<}Jm*^=&x@MFF;`1-BN78+N?Uk6E=v>qz4Q2P{O63oN(ra$2ELWS;<8NUn@Oq44 z?%T37>Co*^Q6B2Vp^$hpZ6=dZ(Qz)?MM*=Q*?Q5!6|pF9*(^0O{>3#~jTRSE7+9y7 z!xeYBn75JcmTj3lbP*bFHXKWFPK)fyk1i_&ysoAv45|sQrzLoO1S8StY8vbYn~k|; zvz<)rY_^-NV$YaRy9JrcRnUi0QGyPb(1HR4%;hRb1Eu1G8hTu4Dba(J8F!;$E=v@U zh%8v_UhZX8T3NshL>)n7YYSPWb+bY(g&H+kj<|yds|>dap<%|cfJYnifO}lnx*o0^ zu17=K%gwUV210CzJxp*(CXZJ9fK*D*LYZ3xI1-{qC51ExDUTK=R+Wbkl?2j?Uwfde zJyJ%H!1idt_V^jrFf_?X$X+iPb!OZi6>}%&R**{S2OA1M@XRQfVR!d{RD7`J8MjwU z`e49IGC9l4un&~EH}ugnvAmp4ACVr%+nTmmCu{`IM%y=9_Y*{@Fge|=L-!jWy@Tj2 zgv5)UGR#>H9N;zeiYi4_sdM}}Zd zV)BY8@uD-C5#A%Dyy!-PHwh`wlNZIAylBk`^G{KM+gV322LOr}of*NrgcGkj0_9bS zU><;z7oD|+U@icY7oDXt%m+~7MQ6DbSBe)Ug0~4LBurjZ6Oq`vmJWEEK-;Yu!T)l>elH?DLtMj;9&o78jVPZ3+TN)lSJTTzzHnCQ>jtdZ> z!h{A~J4!k_(zK(aBdy!WBbL^)k%?#;77?X#shet6$*bCmHZyW0-cZ04E=4}2PKWZLdPFJUFC|O`OQM>temxR)EoH4T zRUDq|x(WhGw(P9Y&XgP@kMmiht%^jFn~gOxLS$hWI&ZesDn^olt(ioX!Em-tmWcG+ zrwr-tbgSV?h;-AI2$C8J4e7F0M-k~ra7W|r9QOrYm!aUTD7>zo@Oo+@LPP;_2!gc{ zdhMSi6F?QQiIf>!FbiKc*l;qjv%!WJ+X3!5m#Y>80TruYg8y-mfEE~`RO}T}JUUyU z1uS${LyrqBHk9Cm5Rk_fW)?J1GVdPC>L506KN^70YZz!DtGr&&pflsP4{$XY5P`6R zffz_&V1*c9U4^f7<)nz17CAEvN+8PxHu{ATI%QrVhEgV(Tp9{Oa8Al_F?EEu+!V= z4vQCJ%e-^cf~S{E5`*ADnQ1d3(4!)PCkHj27IP^p%b&{(ySvw;lCtp#>Dgiub2%eO zEP`8nLo!*@=d$>NdB&~LYuvM*ek6yWGpoS!ILmR7MH~u)Ki`?#D$E3|`$&)OL%QqG zU5Uhto=EW4DPELC1aI@?MO#DgHkrI=YJ~YI1MQ3ag%vC3R zW%8mkmJIWe5-&Py8R1PLLM4Lt2qz?%yqz_|98G!A84JaW&Q2qkKaEuca{$;{L@+Pm zmJY#u1WuJ<9)Q&dZvmvdD2oK|0i<}**2#+w!P{l>qMc=gxd|yRI%^%loCJy&ot;ny zi(rld%8SlcBA654OhtLo*+~TR*vX5|SVJ&RfXR!_S~AQPP~t^rsS(}_NO{p3 z61*9Z;zb*9@}lezyd7Zjq9>A+^kk1v1Lfw$Av4ZPig0cIjyg?K?Y15;h!gX6-hnPKLFR(KD$O~xyH#%+uIthn})%Y86& zvd|4=3G~rNJ(M6zUk@Bv0*QP}W2TJDV^LWm%egGJT3V*JUNx&#t!kOxHAIwjt?cQW z#%Y_@X&U_9$9Ey44Beyoc1HhvG>;D%)IS;-HZXWQD2e~zYI&qPW_{E#N6z0O&FHO> zEy$PgX3I=x+@)`Ao)dWv^xP+j;{bxW(QWS5i@xu~(ELV>&u}SyZ+%aHpDfr3yd++7 zJho=H!_RG=2l0G~h<3F$CXR*8@Z;+Fjr3jU+Zvk8&G((}Nx$?wn)jci{UapSadGA~ znid*0?q)0w*;QuRwieE0?2s%RN&>1ZMT(F}Q&QH+2n~2~`ael7?oN#ByjXzSz-`<@gPMzcEBc^Bl4L zQx;3PoHZ?$-Cjfn%|;?6Z67v{Yu~JFo|U4e8NdHLuOY%8FwUf_ne21~X+d4hpcYLSOJ1NG8a25F>Mc-R*Bjy7OoAG8cG)68s zl1Jb0vbe%=tneBcx1ISG$G1ef_f!;Knu3*LOxievFmhyEK9od~Qc}~K+i`r`s<}Pq zTh?~>jJ3!R(Z-92t1WW1>e*6Zz1L&4U?yfYubt!dW7YD!xDYxo9^}P+g1k167cau| zO7;+OTb~sdhg+<${^MJqZ&7-RqJ_fiK{i0chFPuMOlm=4$$AFftQpGlNCn>iB-VF?A-*+|_I*j+mk*>ZGuQ#_cg;ctVOn zlWF&z8&fu^=FqgZh^JX(soO_Vyovmd#+rI2lWqTQJH8LKDQBY9Y%BV(g=fN?T%Qpr;3X*0>D*i;-sV{5XL&$fR= zA>YoY+zEK1oph(#&UP!ZoN}k!DR%;%b|;@OC}3(6Q#7UDH8ofZ zrxAo2&M6i}Os%}lol8=H1?FKsknIaG$yMQ@^CDa(8jlzG``)T+Y@m|ym7sl zQ+X;iE7px%t^6q6(NshUSzb_b`=Sy`#Tp5Naf#h@=*mFNs#}cYaY=NFT~fW&a7MMB zdM4G-2+OLtq}e2JMyG1Zt16$elP!7~&Zna(whhk`+a$|SM-@rMo~jz{oVBX5%`U_i zlI+rv&QeCTOl68-BuP)#sD3V}HM(AZFfHu}OkC zRG7<>1SUyxN&4Url+3Y`1X|%Ltn+wuP=R<(Xk!=wur&bgabxf5h`Anr)EEr7dWv5hWO0DtvR*2_D7hVd-#j46#c8s??tfh)U zTS}M$>U3L{sa@)J!eZR6%DG^%EtjfWpuXeVm~YGSMD|u^5UX?M+xh#B?kCZA7JtC9JcBwnInT@TEb8J()X5el$DbsA z_I&&D(>muBGF{7;(?wpbhH$lHVp(M3#;qHkeT@$;c? z=Wm5{nfINhh7OQz~IFS6fAZRB1qT)2Ak2~Ai7|H z7AqxsK!`a79xYayVrwg~l7v~XFqb4daG_M}RtDyBB|{2OXOGo_xm?L`1C$DwMGWS0 zCBqCCkjZ2Ytaku&4lo3%l%+OR;Ef^8K}8I5C_-75I8;DAA%`IIJIi)}tt4uIGWT|X zp_fe7fF<2wH}BAc8tAZOJH)abfPkG_0W$$IaKn$vNtgl-Tx^6?OyP~WCe#7!(QuYP z9t6O$EhD?01x$iKoGe>!wi<2AeC(>GE!NpfiMt_ir_K~FCE(;m6=3qBsS)N2NO{qjdIWO@pm@>Q zY6SBJoOsb0TLg0lpuFg;uO}}$JBMKY0FxJ;v1FL9P~t^rEhD@kkn*A|qi_R<{UjQi6xDt~WMFmkJ+dH+`$k~2N6IWS^(;B1L}YPQ9!Q01E3By zKpl*32L^>Z`9q`2#$WYKpE;jhM5DQF-7@;7aXJU|d`Nd=tRvlSqj7alNfY(YX6XCy zyAEoh?hSoE9nATy^SsFICC^IFZ&}YEi&~WQmY$Wq0~NJQEH=-gKJw_maJezojaaR8 z7X|6|M~wG_tKDJhh&9ue^DXjslE&>Et!Cb|I+j_&9aw*J23RB_vUDTUqmvrs&rsP@SvSMw+ zdW@&A+3faNhwrSEI6!VpA&#rn`Bo#l@rjNuKhmuaw*yJiG8A@I*Aw-`Jeu=PPkJkb z$2!65G_I^H!SplrMj*nF8HfoTCQg`qF|09^x^h?c&KLx+BAJZ2-Gb#1hl}|+i7Ha8 zqE6RBE8gvHsod+~K%ITQnlf0HKgwXqBF2Fyfl6Z1N5{&p;c^%0S-0JC(dze`Irf7~ zrfD+I>oY=J?&9{PSPvz!yK!9org1wvNADdxbT33LKFG_w~ES*>f#l$Z?Rq1)p4%5z*ndw%|)nrXp z2gYQ1I7OT9CJ6c41e$i{&b*mDoQcE2Lt_HXp1Jdt=I@5b1m@-)H{Z_qp?M_I`1Xg1 zG-ER;9GYekW^W-eo{@_Z9M{cCH<3lLwkv(nMFvZftWB!vWWj)m@i8)b^SE4z*Fy=8 ztJGP^(LsZ$peBPY){(>6EvX9Y&)NSiqxX%AVQCcUvRmP351QXEYBSB?|Jac*c{N`KYa~t2*_}1pz8P89cipy{O zhK+D*hB7V=8^P;ES9{8E^%m@Omb6M{V8ARZaoG~Lq(t{tR<>=tdX2d1v8@ZeHjr1% zs{6b)kQc|TS|OMSUZ=5YfnFTQYsaefd2u0PTF>#~I@yE6PR2XwlLW$%^id=JjmN<# zAmh9(L*Z?fEwPrAP)m4fiJ-X>y+A|Ed?L@>sXKRP@ARF&6L<<&=Q;F&XWqqJ4mHza z-Kl#4f!(eIvn}oQTIQST^X)L>*5CPiLBs-2;BW-pNj!z8aQMR9JBw$`vchU$b*$_g z8)kx5w8fH6YsMPATY+I@nssR811Ox!16aYYA91aP_A_0*qNf}kx9Tb2JU#h%Z zV5O#EkaLQef)M}#0003H1Oc#|&w7!^EGoSn$dJDrX|r4a8D8W`Sn)EjjZ&nKE-Dq7 zACKXq93(Ujy+J4NE6kQisPT=W`5Vj$n@0Kvw}TG218$eJ4o8r8?C*z`Lna)5v{ z=ydk3!0ze12N>r;L7fqJ9K9&HpWZ>qkr|xpFyd2oUXxtObU)dI7NY%F(TGvskj08f%V?!y}!-7A^oa(7Vqjhugw{H{cJJ^{OWEu zUr;MnvU}^maG^+fXzW;@8))xK^k@G25^fm)ai9X#9SVR939`w$>bsTL{UVPU?RYfT zeG|_hzM<6RGwd&CLV=3*OmB{?+r9L5HR8+j`g83ez%vBx@?1Ughi5TIH7B)4iAb@KF&jT#iLm>;X!WL2Lfm*hRpRTY8=uNt z!&k23;#v&8H2mU(fUn?m0-E`_!Dqb}q_^{9-@TH&-+O)TrFb11`EW0OsD<4@C=0&cL$s&uZqF6Gt>;JSS8~SH*cLvV2bhLG~RJf;y`c7xGfu|+FV|0X?&-k67Kk20-9xTzB)DB_tz z{U{`0-$M_(%bW5*9uiR$*~{^~KZ5SL3%8t&op$3(@Owk-5}EUp@NuOYtsi3dM!`>TMrjvwbgHU+dobhM2Q=+PBjG)Iqq zd%N;`wemfE<@>BTS>c>U4zOwsVu zqqVhGwj-*=%3#g!L!qQZERBr5{w}Hxsb+~kenLC*6&G{;=qyba=}anv4Vj)95Md!)3HI@i`j-93#w$cupjw&!#&k% zqYoWQjzbOy7hLDxh81QQ!+?7gU#*0 zh{vib@D=%nF7#{qwIf;pb)8LzEO(Vw-NZy{hvJZpyB+Xjej{#3QgCAw@HhgDu}8U8hrIe+=D~KNsJ!~z9aYtyZChO;|-&n@BGa_nm zjkw;sF$xAj*2b(A54`67W{96D9ng6~5qRk5IvY>Sk zLASEoB|SN3blQesOz1{M9i81KDw3^*YVD7a8G-km+{7fh2zb*9R5cx&5g6U`u}X|J z@TCXXT_~1eV`Ur&8$38jYX*$ZNcU6j7M#a)bcN|5FQ^Gm(?g1VU8S`SHkG%{a?;cM zYpOX4RJd)GQp=2gN>LAo$Ivfhe2E+Wh-@~bd0fVO+AtV~>USm(P3Dw@2{XuyWEGfV z9+FP{4V*&^%-iFUqPGmH1uBG%zGID-2`8fIjmUnWO0Eae#)VeIL$S*m@J@RENplU7 zZ$=x9y9>|y`K33p)t4RxSSO{MT*@!h82JQ;i;^v{J7%REPUP(6 zfv0Rus(|D!V1_&x(5m+_JB8rZc-ezl=dw|^i7Cix3-bk)?v8!Rr;*fp3As!*C4*{S zMee3+xpeBLHwOu-aZVew$WA4wzrau)B`J%3cK#_K9}&1qUPC2NT1N%P2;q1hox+ZNFmLU3UCIG0I`<>iR+XP-As=fn zy+x(*c4+IC9Sm!;DE&z;MJFvSWC*@$GetP5N!QXxa1bseABJq!I2(i{rIP|p+tmo8 zk}VMI#%{$dKQ*ZlL!bc@_iT$mZ{$e7gX+o1_>0|#_mV|K6Y@DGs9sm;7;w{W=!T_p z$EVV#84mt+snFB**R@?U`z+DUN0O7d1_)77+^@Zm4L5W0CHqOV2n{V&&JWwKF@gnP zMPK94bQhu2Sq?O%e=+>f0+bQed&CZ_>dRYvl&#)sCKJ%kw-ef@0|h%dz)8c?8f~z78@s∾>d2h~~J(*XBVRNfi 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

    Z2=H-dqhP`(ijC^|G;nE9se_7@%2lXP0Dose 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

    `o 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 }c<<2m?$EynBMq?h9_?eT6 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

    ~@nnBaddcOSBzvR_w3TJnFy^SHowB| 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

    GJ+C&X7-pjKEAd5gF_LBxx$EaU>g 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�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�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

    Id5IY+v#H$Y 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 qFnHIbl!?es$?k3%m33&soNmZY@m=Os&9d}q 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%0DLsZ_e@ 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 Pz&}ZK@!5380Et=oK>?OQX{Ze{ap&BQeJCj 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

    qZCRNRbU#0Hu5!gA{*%%^Kva& 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�K4k^q`MFC6M_X=#LWz&M7V_XO)YA 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 tDHZyTkt3H_2021YBUX2^&1kztV&) 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�o|?q)1Y-5XVfCZ{ z$HNL`0;{co&sI-tYhbc9kXVGkP=NuMaqy5ra*s~~L9Brj)<76*;M*EVU@o1Gtepz1 zoCeDfd1$93L#UkCtenEEobs%ks;r!p+}NaR-SoF^Qj>g0M@DedlywuAb<>h{lMoV{ z9ITrLtboska|0qy_pQCl++S~K60=H$Yb9Yr zyh?J`N^jOmV#tJfxZp1vz982x2d3m~t#n)|*;*;B5~P%1rKIa5LNYlXCfMt;Hz{wO z)MK4AWu25_o#bIMl5}O2S#_(tS7ZC7p_{CYokJIBR^{+ zNo%7pYa=VGf{~?_QKFTR9Wg1M(1d-Q%Z1e9wg}p~h}X*K!nz36x+suP(Wq6?r&SRl zF~;Yzvjlk~qBTnmMOs!xQdUJ^Rz*ivMLZN#B4=wN!8K8*ThC;VurNwQW=+IpO{8W` z^khv`M5Q2VwIZ^#A{qqhSr|B|i14^s5slFih=#0)eyoUGgh_-&3Zf7zq6;gcxKhW~ zL%Y^PuH<03I|OPyq-i}Az<@}H&a8*DtcR8y=E{@U-W4f^s;!2et%r(gsMi1|hLWox zy0y@>FejeE_NYP&+q_-B@u@-uunJPL3ew@}=?gi9Pp9k&f?EaEt%8oL zpk=EN=*}9*${Hxhq9?DU6e*81(1SG)-5O|Z{gVdkugm(ET>swsq$p7>TLJZ2F<7t? zB@j@f6%e5nke>iZfJUrdCO` zaq#8PGuB=cD}Dp4ey&zOU8~=x)vuCYi`7rU>Zf4N6BZLzd0wq~1X%M7u;$sc=7D5< zm4|}jImYDKD%h?SkF2~*E1pU#9z!#ptd^4S{JFE@X=7x8M{mWWT=C@ilHs{Z$>fpZ zVSy)Ue1NBI#k02JA%1y#u6lWA(RydldZ*HQ$Ig0(P4SZ*SgV}?Ry%uUJq1WELE0g* z+EKFF$+6mL;iwL+wGN@Rj-MAz&r^DTdUonSS?g?B>i}8n&?q9H<7lM=XQcyxmqO1` zdvmIkXrYr}rNg$;d9cozw$3?51T@EP?R&QN1)HFhqIxN5^{rU@O00b{*1oy5Z$YUz zdDb|(!s&JDxe2K(1t-=D=hO;EaE0S(g+qx=n-xx(6^@iHh@OB+YM0;?S>XU#;pnY! zaIA1xY=ARYzG^Fj9d*UHywm)d<0fLW$?t5%++O8)_6#M(2Bh&w!RUz zzR5K&efl^j>Fx+}J>s^$0bqRtWqreDeM4k@gJbr&NwKyewzgr#W!H03vWS)7l&4G$r(bH| ztZLM}mtR~`JdMgVZ%|E`RgD!jdaIfsi+o$v5V_nv87b3Hdp3DXmqu_+GiyyF0G9*L zMS*>JPSO}!(>Pkw{8`h`S-3Pp)-)#8G!~!{ah9gQnufTddA0>Mt!N6ZXzmbtDjH3k z6^$A+WL7j;rlA3{qS>*cVPS{JAes>?8V)NO3CYkLpOtwgnwBtML`t2BwVoMZJ)>$p z18R9Dfc4Cx^-LcCQallzx$}S4sHZb;)-!9?GhqOrK!k!4fji@4JtJd1b3zfBiM5)c zw3_*Q%d@8;MqySnWW10uGh;QAVKs9>*R#-{nYjn6nKH!6v?BE+v|NV}C=+Kbqh>90 zXDt(EEn|g)u60k*y0?eUb5L@x&bs$zugpq>Pj?TH9JFx|Try!;7g;@6_>^WHX zjlHoJ6k^x{qWKgVRNUUTkY)SD1qZ1hkMoV_dCcWT}!hX3je1%Q^;tEeW1~ltID-u`-6hI;O!YhT19y*_u6R4vQORg1*uN8}|w-u)qmNqLEF)NlPqjV&(cv!JeSh2ueF|=M8 zvtChx<#`5q#mE&P>y;Y%rJWimX<6 zU`gi4VP(W>1;c7ZZeUf0tyN&HRYI{n$t>p-IXBXrRSSm%iO3{;&cSH)@Dn-C5g=po|lgpuw ztx=w>QG~5gaDfP1qX4c^8jX1Zfb20z&l)Ar8ime^#6ql#f@O_DWsP#g%8}=m8!e)c zSfhAYqa@cT7}h8gp!`~)yjr1%vf|*WWwoI!%?bq(ltRNhP`s>AlB`gURC)H)g0xWw zT%pXZP=@OhXJDSdS)UwPpWvuc>4~LAs3&*plezUti1kT>^+^FKPF}4}0#_%G zssMRjp<%}fjMa&X)d`N(iHX$-h+&8(W!5Gk)+R_QA)Z!f=m9#@CI*;Hv#?y5tXi3b zy7jEGr!(LbNrjaOgeiYdDt~i^W)NDEY+dqeT_SB=GQhe- z)f}@V!m8J7)w4Av$1{p@Mhm@4s~+I0=V;XvG)3qoS@n#pdNHQVJ)gvViP1|5uT_by zRSB_GNvc(eC&47n)+B}2ByFVJcrIB+$Q45`Ns%?lk~N8sKS63WC7COdVJi|_QbauU zRwS_g&ze=FNKUOtNUcZ!rL;Yj{KX9_l1WGytw{a`Aqlf0p%P`;Gf9jdNSdrjjI2hK zwLwB+MY2KD6Uj1$8sOA+sK#u^!0~#l*A79-$*^>k$L1k!q_EWs@$gM)a&k;zWUa z<}HnUS&fugja+$Pvj!RIu^NG~8W}O|nWucAN9lkOyVZz>)yRX@hym3rVrwnpYAx~! zN~!0NKNqly>{*NaDT3!iMO>^!?A9W3Q24m0%PU;-e64x4h{f{u);t(%o{6E{cm~Clv;^kg7N@$K#ITM2?W^-&`PAxO2ls^!uN@Yk(G#wl}LwR z&mYN9L>jC_;#MMVE0H4+(2(UiB-AyRR~p)?_$Rv~&;A$OiodGbKEa1)Yd6#{1!^5xq& zFeIeIDrCYc4k$YY;YTkS}YHD#C)m zSc8aIgWNe0c8u_dg&PoJE0Aa_kX&gm5!3yNK0-1|` z+**H-T7O(}vgdhYZ^iJ(mh}gi^@o)8hw@Ic)rXq4FaHjErW%V&- z_2C4?v&K?I4^DsTLvHm^VfE4WyxwM!9)8vy%C$$0UQZe;v#|D1u=WtJ(s&eFd7xQ& z{Ad#6ndDKo@`$kVxUlkAu<~GAOgs429ZuFAABsI;BnMMy(LuQCP`2vOwd#nqL3FTK zb4Xir_+nD($pQtM9E;W*lGYr9)*N{Vb1+zO>{@ZiVglx=VlIyz#Sv%4k!QtWX2k)3 z8CvTNH|q^COn5v|%=PJs4|;>idgI7?qeqq-5!M^K+Gw`K*7JlCZxW)_#-i0mpw$MZ z)kd7vhMD1@8Um~}>Z~=!EP3=SQ3K0bgUOIc4dhw_Zmn^A$(|<&W!#q2DDYi0ILi{GM20|T&yxcED`a% z3p8OzO|V&GG+Sd3t}=#ei~-gds%pfLu*Nv9Fly<=c~-c@U?&(}Rv1}U7;07+PgWR3 zCWIHJ))#2j7gDB`i19+k`U1uJqQfq8p=)&!xVi{nC7_;mOA^jp#93Y7SzWAIU4Y@` zg2w9N!|I{}qNiPQC2`3`g4KnC)rE0w5iL{;0oE3PYYRqpo^{F*rCKamTU1$F5cyYZieyRxwMvio8ruxg@g3pstXyu28YA0HM`Z%vFW5RYk5OXP(HtO{Gw+DqyWDKCLP$ zp;F;yRY7J|@gxa|XPi<*3>6wy6(d#^cB_g8>LvMUO$M+g^N4yz5b>5&uE`#263UvK zu_jThNFi)Zv1&~r35lI21Z0RVngYq1V#k_-%9;Ykn!<#xp@6fZ__3mxfZ^$2F9Zb? zY%7Z4iXy>!V%mD**r84Ut|u0)C;A{E@N5tW!kL=&M4L0yIZ8}ob%R1kzG7OZqripcPwt$55j)|92qZ`1JPULX z95G@Ykz7Y$SVzbu6LDr0!DJP&BgAt+vIDDC#0(Xy2oOY4A(E{jjIAMb9jSW?=%67U ztsxApAuO#S_^cu15Uqevwt{fAg7|c#?K$izh%PG#Dl3S+6-3?&BFAu+hi9t?Ppbzb zf;hN&xZ{D&@Q{ZntA`+~2Ok@G^E{BlP&X)BH}qOPs8~J7SUqf5J=6^`bl|ggkh6Bk zVkFB;ZBGLl)u3h7pto``wsNqwa%i@4sI+oWG}&yRvT6{vYCu(_$lFYrp@)VttA;hJ z1~03IDYHd}Tx*8EHA9>t8Ze-lWG91cgNg^XRt$tz41Cove82!^#h_)y@MIpq z@M6UPV#Qzq)vN3d&E2r|ZrOULYrTuLr0$NacNEq;w>(Pkv3XZq@8-&OCr{6NEO|lN zdg0iPxd3dv&}+R=>pU^tj&V67l+y?|i75Mi~DY_$MPlU2A|DWq8` z)OaGHyavZPVg*5^Fk+>kVx^#Ar9elE0&$%HZJjVIPhVlmwSp9#kZGL|z&hd7Iw8{%tqStXolBB6rX3Hy6}1@ckYTkUSGcDzTFzcM2zS*f*?L@405Qt=Xc`b=3`y!%s!r(eVaIJ&3)*)N% zcCFjB*2yy7s-QG&) zWu==!2V|wIvC^F&ayJ2v4#G<3w$iOVWzNz%$7h|ZGk^raxh`hbIVsT7;@pIWhW@dw#pslib@FiYDI!tk(~zL zS%1hLb~TV|R%G9b9J3;^q(D+wk!x$5vrVt8I%#pW*0@`7v2-m?&Kk#MjmskB&MRvv z%D4?{9Nrp7x5hD$6oJed0md4^LX`K_vJM%cz#5@#jWApxJR_89h2Uw0z(@#;_f>KU zfz1kG&I*Cdt6BR3!N&?g#R{QAkYul`J!5o%3IW0jLBa~bZG|9UJvd-19Ih2^RS-aL ztH71+4{p#3=Vyh}w8G_C;pVI*f}60y(XDU?g216W@W9vlpw{{z)moJYPu2$^)&~~8 z%mqF;z+inaTpc(YuBmV^YIPuKbucIhk~fu7>EOodAjs-K#p(dWnl|XOHsG-~z%%v= zAeWTe(BN)u&|z)Rwl**lddsxFMOxqdEMHP@YSyl+rM-`k1xO~U%N0Entr)SH3z zZ7v)J#uzMtWO_v*71^f@Osxz)J&9dp7~EMIj9D2x0mA1E6&JY1U0NB0SQ*r<4Bm_) z79d&|fLRwfq4a(#_N@^Rtr7gz1qs##4%P*`Dqvb&IyT8T--V?X(xcP7%0}GwJiWaFQ5-EFW_@I9=v@q$m+nECK$9P@Utdxv?jo^CSYPDCJhi< z4H(yBvL1X6{v6oRBdb~K(bIaQL_BbOvL1D;M-V*@IM8xjaICN%+13KoMrnaaYXL)R z0X#ei-$Y6Wby`5oTHwrDK+DsbHSANM#9E-jT3{Y}UPOBbLoRz=sMeCcRsy?L0<(B< zc@aG{K_Hcp_t2k%Hv*wn0+@z42ozcg1X>B;anXRlnw7xbN?^;-2>~A~ffXwO5qEEc zUqr5Nf;wQi4uCbA4X9h$Vy$eKc&xpG{@5B7>dFRaW$UxD-PwWc6~q?j|EyWThGu0e zv$6rOL+}l>JXVTr%F32xrzEx=D;tiLt;LQ}Zy@EzIUDN&R8JgS7hGBwJX!_xtpf0@ z0<^3GoZK?zT8$l6qkuQU*&*Q7v)95(;aX(276;d&;C|AgqP3W3EmF~eY(b9Vk+le9 zEz-~sMZ2|_U@hvRH&0*VD^>vW+7XN##Ul49bVo%NhQ)+iKzC~uEa|# zanedecLt98@VNRM2Z^VI9h?Lj~JF=d^V)TPLq`Lz8KE~brjBG>6w ze5C4XRUWI><#_PE`BO#0=>*kXr?w6ahqN{++NM9Uv|eX@&CpXdKwr(sSKHwzfwXEY zz8c)QCN`U$4f*kEpGBYM-8(r7#H?QDgMf3O%(wiKwZ0 zYG9t46&z1qG!}8VpThn8x ze|BN+pD`HpY`(K<@2uGBJ?S@xv*kMj_ReO#GgN;vy)#Mg?9icCi6B1jtWS%XcSh!& zS&{Q5S=ur3&Xl|}An&Y36K5OVS%r5N!ONRO>1=_s0`E+P0Q+XVzL}~fFOt7zp)!3l zM;5kxvn$^W$qgRwk-%m`aC|cv3YuB?W)i-cTk6tNl6SFVRY{@g5af88I1WAF}h-a4KnQ?e#cW0QrJ+rl6HtmM- z%?p%UJHF|Wz%MiQ%b5ML!FL5{4$Ef!vQ)q9lMQACmT_4|=9g9ZWlDyNN?EQ~M(CC8 z*@l~U$Q}VeWn5kvm8Ug}jxr9f%)u)=+F0=l`6IxW4B97~)=W*ZTc6C;CtGEs?iG?8 z&?gz1PsaDjzI-w&%L5tVBa`&V0wH^W3?R?~Sqx-A9$AM+CSl!kET@p{y@FrNj#Lz7WF~%Fzh+@<0+%s(>7;faDu1^~M6<7^^o1>5UcARK^y3F+(BpB2#e78!8tlF^R3zPN2P7Un{)9}Isd@yCP-W5t^!ESvpUmwiX z2OBjeSf39z=Yy${5%{Y3n*&jt6zs?c`|-h`d@vgyOht~tWk1;K2T94mQ|vKl=m!D) zV4W9(M}Ba{4|=G3Q3MX&{UCA)g9Coh_`sqqgTQ-YS!_}4fdzYD${yIR2R17jFij5( z(gW+0>^-3@)&X1dz~DTvy$7b{RKQj|uoDjqLyT81o^seD#xF7dE6e{v^S_MzuN^yl z6~7mn@6{y6hgU=(g$E(WoO7gsV zz)f-Q}w$n{VqZ<>bxG712+A3_5H3gzbnu0>him!>^ktf z=IcuKWya98d|k6%7b+!-UYFnNf}@;EJG#caE-tSt%1Csv=Ms_Y?sFlD)N-wTuHoZa_QKe4Zo{rgdrf_~Qavt3 zkBd+xTy~F3{}!-UFNME5Mt|R8^tUGcEkb|m50T9+0xziR1!KLy^iEjy1UtPTsTZ{L zf{Tc7f?r-x$_pxA7<%j0dkJTAJ5wK8hS`C0*g*60mNU0zC6UP?ylT*M2cB;=*kg8-!!FQpVOr4L*#;wcYM zYNG_uB2RNZ9KLmu_&x;BEBmZL~|%@}iy6m^8v|Wan)Z z=xtQyZM0<-qg*eeKrf>(ngB1-6{~^AsP1Ky;bnB-Wi*`5BD{Bz+pEZ#CIBwREq7du z`y1XV>h&rj_A0XVsRGF;0`)4A^r_fr!n+u^9t*(kVuV0Nh~6a&)_@{HucAP&B0Ot4 zUW~9e>?4vW;L^KR-pzXxS=dBbUPQ`XM1x-j6?+Focn1j>b#V=F_0cP6fLGA+71Zh# zH0l(B&b)&1UO_rCJ-WD-L_X^ig!c;i@CthI3cBzLio*cy4P@*MwES}sNom!}22%9~ z8ubQ>^#flpg3=!GjAX*nc`e5?iB`#@dncI21@Z}G%fk7_Wrec|2$>cir$}~ z_wUa8=jI%LIo>}B@85$S7l|K!=(m5z_s{qOlJ<+`3ux5~D3pnd!#zNqUO<_MfEc}i z61{)~Wtwnts9ZpR`oOUB0-EyzigV%OFu9>2rEv2CTJsO;A>-l@*+;ZM<^>eyhr}`! zxHy+wu&5FclowEw7myMYuZ!~!5Rn(q4-Eq7#tVqX3kZ{?i&Gh)S>5iofb3pC5MDqg z_K&n}eFbSGiEvZbavD!Zu-aj7RKXLD$wpzqqKf7K(u-a&~M}7o&{RF-k zz^E!eiC#Z|UO#p^Oq^Ed&yShc&zsjzm;a+n@%VZ1`YG}H$$-gCtM&P@d;P$@ewNb* z(A($E+XoG%;zVbAeZahZstl!%h__FNw~yR0t=8wLVEI7fLF?u7>g5CKmR8HbClVh_ zFP}p%A3iepka_uNdHLvlN!3JUO1d0F@c0yY`Rri9r^U-B`SJnbX`-?>RolRa?&V|Q z43r&FAuR}Y+5kC_D%k0q%cSUq4~Jz7>H%8q)9yn1}R zdRh<*|ERrsK)iZRym~OadgKQ5YxepPd;ONhbXs7m*YDKp*Qw3l>&N%H;JDIhR{XZS zepFt+Bzy4#@%kxv{n!8}7W+eHnWoGGZSx>|^Zc4f9!zhZM{gcNl?tgeR(YJ{vGV3o zzIl2KCE$Ve;!*VCxpSo@6NUXnQ|=vH@10jK9tZE8Pw$;dr0fuR?MQg*FeCapxpjcO zb(SkI2Z{jSI+xx$jVdLW*lRBua_b0s>+o66fC5zK%v&eRdZrJhXA^rNe|@A|^^DcC zP%oWSFC9)V9b+$@MK2vd>R}Fuw-4Cc7dRyn6LIMcdixT+eSY4)JUXC{$J=+~?MqT> zn|KTPY}iNl_EmWMAiRAHJ|?HuD+ksqhm@j;f_u&g{RYb6d*zII<>Yzg2zlk$h;tJM z&>JVp8^^|;iL(NeZyXnRZ=4MgI>b5f#v$;+ImTw9EV@z7w7_xo!WrO&W9o&osTiER z7Y>XUjs`9hVGHJ=gSIcIE_*lGrFZhyh_z1jw#FuX; z<(T+tQ?oi}FNxOs2G{#$)%ymN-Ww(F8yfGM40sb;{n6St4&FC(@0+&wjS)f!H>O@U zoL)DR?k2JdEVXX_UN?GPH*p{o-F$i7WO>~rX`9GO$*hZ;46hpsuNx4rn+UI)1j5=x zdfWWHZTcqd#8of5)F%113Gudp@wT~p+aTdmu_^SjN%OMVBI($~RLNy*RxBI5mrV#U z1H5Zay=y4ZnurRyYaAU~ZEZnuXV;(sHBo@SSz=yA!6DaFS)*5Jq5w)|erqngYdpMb z=vH5)9z;`9=~Xl5RRiXaCJUlw#H(h*tESFX8boiJDQ_AdWE7c`O#}C)Iq<*{8b~i1 zHZK}2l8#Iyr9?C3!5%b4(A1DbVj?LgK^D#0p855j86epiw%3fS*Ni3!6E_`uGh^sA z!{{~h=gnwxWk$+t=E!SCg`~ELfM!a(W;8g^WahzZ=Iu2@1f+Y!Cd^uB# zb$g56JxcGMpmz_C10#Dy-aQ@fo*bZwm;Q`>Ad~7P6YC{|=_S+X*BEB+m{;!@PJK$) zVhn_LjDmNJfCfLpNP5G-yV=ow94UAwQy@0LmL7DewCTkjSC-Yrm!aj?j} zSCa3Q3x(?I3W6(d@0GRJinL)7E2my7mR>7|9>todXK$_iy;knr#mbqrvgJ_#6ZIf_ z5%v;XD;i!aBVH>HUMmI|n5e?#t+L~-g5pt?iFcNpdI45Z@Kzb{R)L#}G6o5#*m z$}z>oBR1`ol%fKd_Sz8Tge~obghIlT_B!wc#3JqWlnn2b3GWm*CsW?uDGJ^xM?Mqf zydcGtVj1OCC?(n}h1o0RScqD$6j`qn0iYDKZwf{<8Q^Uq>ur+B5uu4__Hu1N zZW9x46Bcii32&1JZl0DLdzXNDmo#xyXCj#;%1AfFOeC|Pa*2!;U#C+5OG3O$JiJRN zOqn=lZ;9NyWPzKXB?R6j0$x38I~p=^Oj7Pou5l^T1NQ0}d-ZU=dam5`=plOb^t^g* z9HE#fMyX6wA3fr$SKw8W>{S9xfF#V`Byrv(W(p^QSq0rxaBY*gc$4UOlZ04nHEK(Q zq}7Wg(u*WdqgWHYltLorMY6>O5)m(w2%6MZ5aqL1X>4`itnEmmSJ~!OifI&RBA386 zE?Jb=Yt2M1d#ao?QCl&TNM7ZTSBYZ)rHNPh;Z;_EF%f`4WrPV6w^;kLbNef+VPOq`+&W*lT1LqfuIG z(1@wm$fwtcr37w_@V!R3yhfxPnusOo0g0Q5SCnf+$VxYb#EsX;jMqqV%0w%BEkfj& zXeGf7BX@eC){Hz%v~sPr7vN;2C9O!Qw+O4Zh^Ds)r37ua-n=$%9vDV&6QwBQs1fE> zdGoZqc~IWGB?x%s$$0Z#ym=%RRhuYfT5v>|y+o+JM1H+Q2FODM?j6GG9rCKvL?_D~ zqG|}KcL?B{A&=f6jou-G0?=8EhKPBGVEJI95P%u7;T>||9Ws0opovYEvQVuMORtbl zuaHHr5I|0ZTzG>VdxQ9bGm*((7%3ZM%o{|_8-&RlWXJ(ZFAym&5FlPADhZ5rw?Iz3 zKwi8+JiM1dus{;*4`s@UN+$N1qD}k3>j$kxHzp=|1^0@;{s{5@K=J;Fdw;aO@)61cL#(66Lchbbxe45Fu*c#2$EH(&5`5Hk@w~}@#f%= z>c*${#*FvI1tXej(v7Mdh|MpuIGdy*2cuG5FFDG=PGJoR@}|mxdAI4go&w48nKDuXhHscLuF@ z2CAbn8Ml3p2W5((-lJ2H&CGJdQMoE-&a>>DH48$*CZ0;s1R>S?$JN_$^4cwK0E zT?A0z#G;7wqCkO2)Wi~jfqaYN_@Y>FLRo=%0)Y2~j`xHMN*Z{A!g~V3dji1{Z`F$z z>BSRNXrhR{PK0=KUc5Xn9-9|Wj4C`JFJ6ro??j(=s?iA#&+Wz2*TgackxcA)O@w(( zG(i+*;s+&QiCJ%nU2h3aZ;40*Opu85l7R7&IDp8*L=MThErgl`M=W|rSb9g~c}Kjl zB_h%yWFR6=%pl^$08t{6uZR<`h!V+EQy39+uZRV&2)0KdPQ4*0y&($unuvifgq1f0 zlQ+bWI?G-VoL&%5O-b>aefdvfD4EoF9;AXh`K|OCSFixs*x!PBEbs+?gc@7 zKRg>SugO&G#-hc`oq`e+my&g0j$}^EdASOKz zgI*7cUJrj>4|3CE|uU((l?#^rH=FaZR zYj@?fW70RVz+V7sc0pddBd?u~HI%VBI~A|ph}RASAukgP*hwg|+0CsTgCY|P%;gxY zYxdR+D+;LF^wt@A>--48m^h$r&b#4Lyl%}~hvu#GGNHSP1NutU<-K)1-a5UvuEtxJ zlvXGA)-ibNhJ&b0Wc$0+?4_Ib(iOgRzVMiO={~)5je1RFbHwJ(OSk8xi}TW*A)=ux z^3u(C=}erOC_w4R37v$OPVS|FLTe{xnl2Jt~wLfmbBivRKseZ-nmZi zT%|7)*OEII0MTye3OxwP#I+l-nX~cE`FQ7GymKn1$z^%v6ud}jgEUMWHVT5=^&*A6 zNLw#*)h*=Ti;VLk$v~Spkzm*`>asF&@*-2bNEk2D?nO4}6!++jd-KK#`lO5~#7TMM z^xn82!!mJqZ=Bp4XJA2#9#YFiK^LvP5g@%0IK2`6yb4mfN!m$Y?>0vXtGA|qevlbka7f#6w*W*tWy}`kF;gT=hhY1Q!!3)RsK8O~GPZ9Yc z;@byp9`wBrs=N=Bq;NpwZ6NJ!0PK$Q(%VxuE1OC zg<}fk)!WAEZ4)*4aMxZYJ)&>h-`nQrZNpRR;jY`{ylrS!wRL&hw!Cdr_A~0Cu0Ss< zp}!YEVI|bJZ5rM-xVP;9@lFC8Z-NSMf&@Q2-g$UykC2rYa3DePMKJ9}aIC091h!rT zvR(wI{Fr$t_(w?jYtB|eJvhAxK)nboy$BfT2>QGT{9Xibs5}%*wlMP|03&URkcWbV zJ}d$zFM=b_5b$X6&{klbL4k`v!;3(~i@@$h&;S;o_kf-EfSvDbjELz`X$ zl3oLYhCP%u>CPJH^BRcr8aU&}z?IiPlh*){Ne^Wy>7wNDYaznV!&u8YYoLRH3$Fp> zeFofK0|#CMvrn3bu?RJLkJ8>_;d}JO=GA*N^&SDOJcP9zWM_|$-Xo>=nCLzJ+3S0c zYTl!lK13eE+Uq+L>xgAN18U1r?>#EtqmMo^9>PLip+Vx|tL2oViuZWpJ$4wrlH;>S zy7$Q7Jz98=1m5F93gCJRym|{*>LWl0=@oGF7C7{O*5H`)7FhEZ2onN_4r);#%UeLo z^XW5mG2a3?-U2V)0w$V0Z1p#2SOCIXK*3vJ!dt-j5{UK%0-Rm~ja~wN_$(i?LJFEh zpv+6a%}b!mUkbns0Uj@b6fc1fq#mv!fZ-)D_ZI?hF9ElgfPh91S0xGUfM*Xt_6{J# z;_4l6>K(92&qGyzf_kW+7&{=)J3!Gp0MANtz!_4cpu+;MFSt06s4sp4t;Y&@T*LFOeR5YIbQv&YZFPRc(7cIe|B5_yL--eC$gF@?Qz)jKKeA@Yz@-=9;0 z-U;ZPc33>zwA=~joo1%B6M%PSd8d>2TzI%?uTP%#sj>FKdzaU{!`^N6uBb%JUY+!+ zpC01FOwyFht7%^4@@f<@>fzP7SKA7ImB6bzvsVP63i18a`>6Lvv>sjx6x{E;`+0}+ zUgjUWjrS7o83G?(I)W@f<-=&@)8{?GyMy=PLt!+BNNcq}YqdT_4=eHEtA=K+)@H3n zX07%`P&FuPH6?4c9e#5}K2oZcSgXNUt9e+fQ7C?)_H3ml=qE<^P+N4U7=&7kl^TN= z6G+O#NuiE)f*OMN$Fqrv`XtVMa2lyhO4wttF%gf5p>Ve z5UtYwtkUQVO2e^AQ?W{`;3q)!6!wxfw@PcUN-JRL*cwgP8cne9VIx?-=HzwtMO(E- zi?v2OwMGl|h|wCY&>GF}mg)%=ZO$5v%{o*-%oEMZ8tus%tw^3q4;d+QtjZeEf<)u7 zM!P}ei-xyGBe6!ykY~`tMN2(|qB&Tj&8^W4tkEX%05rZ8+TIE+N*+276AevoI1E}2 zXfE<#d5A~}4R3|U0T(p66Mp*%Sr z9zyCfKBS((S)aLCpOL{+J!^i_o((~=KC`htQ!yMWogG`9rCOa~s(VQ2?_h4uBCXC0 zO=oXbXKPkxRPrQvIA{sPFH9#b&fHdKajP={YqM#?wq|*2v%0kzo=@s0g_*RKnX;AH z;4o&DR%VS>W_iZ*_wX<2r({Ow&B|A*5f>#|PkGDz#PLKA>xP1a>Y)@3p9V0hRka5`AlVqK=< z&-B1^eAwr28Hr^Y)@5|Krmf1Jt;%#kd&o!mkf65;c5jKz8^#d-`xj)!!P-5sNQTC)^MVY9U`*;>eJ zIANLT-74T(}~p{TVG(CuNL7E)RZ6>%v1TMPZHg?8%b!#<@J@~wqv3cIX@ zQhrs4w-%0A3-5+KlyjZJ3COij!Hhzq8e2B&VVpl%c>avhT8%ANW2;tUpdMii&}xit zH716T;@LBHWi}4-z~-TwJH=3~#b~X?Jgvnj?U-V0D=|(hF+EWp zs`(>Ehgh4H*qCiW49iN4%1TTL9U>3aAnE9uv=Yk$vJ%^|3tp_mR;dJwiPzp&UXrE8!O?gnBFCk(CgKv4>~&2xF{-Clm>xhL!NbN?5micqU00 zfpEb}$hIo7TLVOW!OSdw+vjyabe?k(wZJR-E- z@mq(DSci33hrL*b(XGQ6OiUQ2RT!gH7??SC9*#i@)3Wkyuq2GhDlEw=OvfBC55@f5 zadIb57>QMwidC3~RT!P3W@|8FYcN`KVmu5JtW~g6YcNi`Bv_v{Se`W)03RNLK?a+$ z21~M$U_sVkJ=S0{p5x%*mrWW>MX(ZUun#_h&8@*8tijgi6d!(huJ2Bb!DQ>;vvrWz zItc6)g95CBn$|%?eX|~VN!}qa*k&C(vkuN#2e+()Pm};-wE~N@0^@6>cBBDAvjP+I zgGd&@gsi}BtiU|<`90L4BvfE`D=@nin1e|GE3g8a>n~<~XC7v;^DEf;Yq>&rHiuuN z)?bs>Ux)gtsGVPY>n}3vuPh3FwOD__t-p-RSw6gC=gt?d)z`1p7p&D+seRT87@Q4g&s|3V;oSY_GA0^h?b%DAb%?0iL7eYN@dGWJ>~N6SMh%Nlj?dMR3aMOu6L zt-bh`3a?x%FGnjcJaU3Ol=3%6gpZevl^2hd7mJmbh&oW~E<)?BIB}#rjDkE4jE7K` zVRYA;b=TgyYYW_ybyt#g7mzq~@^sgYMX>9{x+}yF0i8XBf<*S1qf6JS3z#ljT1*#@ zRoC09iw)JoCv)JIxz;7HbqVWJ1!{#Qo^_dJT{?jiN&6TrajeT2YpYcQEalea+L~)x zo`+7BGZsd33Hwp5OKYw|U&{>+mxoRE`tWk~nen10my$JCj@8TsAP?n8!R2hlRcy^Q zV8w-N#pP;HxQy$qRqL%tEL2Y3twrlCL+hMR;q)dh5k46p5s*g1T10TYS16Ciw#-wF;tI1wXBVo9z0mf^SyAF_|7F zIgDVERWQmbNMsfCG1mk!tbz_!!2)$2A`vA1^SM>WR^e)kaJ7|-&&xyQ-eXZ6wrs7o zX#G#-gYreF+7rl zgJ(-uTLabsn!T+!(gsMg4nSfZfWn(y4~@LxtL15}MQW{uX|2_0JhcX_v@or-0=X&n zFfY&zo|`+RwPK|;W2Mz$r6qyKEHvw^x^>oq&qGofHf8pHiZv;gozbHW9`sb7D7l{VL4l2 z%@XynM;lm?6c!+?KNSFr$qFmU3QNbEhdh+9X24>x!WuyhR^188J%x(sYy z^;%yETVDyTuUL)u>dpFU&H4%p8y^pKe1%e!^_6nDS3cHPJJwe$*rZ?s_)5h33d8zJ zuK37Rvegx^)m5$8=))Yy2%py0RyL1ZrE&#ob!Dko$Q7K`Rh!inm}C!cDCsO5ZNNNi zRE9j>O7^xf*;2r(X&aOM?a^34>wFVj6Mr6tP1kHR>X4IAE6DrRqQH*Uwb|)pUHXd7EB7$k- zu|P;X{%kztEo)G7gg~IIVB-sxz*0-@xsbtvG$>0z9 zwrng+7Qyv&V(aOIRpF40g(n9*otRp)24vIINu^gaEyYG-OC631>oyt-oMEU?z(!+# zEdCVRXl!r8bdm?}&C>~*Uvqr5(U|fbf`l|_IuR4%%F_vyOB;4e483G(U0O&1LCY$EH~1XPWU#F7Ryao9)P)|L;ryitYHN8AfJ-(-2nPF!(@>;I7 z(DU-t17N+SWSHJYUV+0&ee|$A^{V{PQHmgYdU<+6?&zs_>UH=bt6>f{@(PkekM61W z;7ROi^X#eQ*HcL>Vaqn|`kP8vDKYg_!bysfNKYjJJeB+jV+Dkjk~2>wVV+8^Xd@*o zo=PY@l|aC>QPuAp;#^!di^-MDBnFN%R zjZ5TA0{BbF$TJC$XObGiJZ#Lh zx1$xvjk%JFBngUV5)-e+maqXEb0LWcl6XM25!VvPhM8pTndB!DWd?j95%fgD<%uK; ztsjLGN!}BQk0+8DZODma!xM?z6Ul;LoHpM2d;2qy92IT6rTh`7RQ6O#dnyN?O2G#z zl#HIrK2K%eoQ<~jh`c{??2i`89!exnWsRpYNgQ@Kg6er>(DTThUm#t4z&aA6m2_dL>|$VOU!K0X+k^)!;|X$05P$fu`~O2++QB*@c9+|$T$#l~5C#X3gV zo<@qV##XSojk9_vD>Cd^WZARGu4fThI*L?!7Wwlm!Y0^S4?9JkTzMABdltzt%;WXU z6ZOnPMC{Fx7icB0Wje@n^UO>0%yaUftc|Zqy*=3ECCL-=%)6ln@=84OKs@u1qBgox zN|+I(#@i$L%wv1z9eC#bB%+KKkxWk_j-Eu=42IdrYI}Sj0>G096e2{PL~y(sLh3o> z({solB^y)qaO<%)hp2fDq4OLf<_pOJoI`Xxhpc!Gu`ozuBdWkT1j2I&gCPcZ3Lzk#LNo}e@DxJlWY{yvuV;`}gKry4A%m292KfZ|3{q*lAZMOI z#yo@Q4H7qw3R2|9GYE|@1S#dVGZfgC;!*%)dM0}xG5AeJ5tG+-w- zhDz=zwS({7VdeS5*7L`!=Z|O4A7h?Buo$WJ`19!fp;FqRJ zh?H>?N3R=Xo;T9m@WST?iRTRq?<`!u6l^^7x8?@&c>}_Wtdy^18xJiGSc{|7jpOsi zg69q6^M*2M^|VpyX=9SDjfRw6YCVlpzYnjUX~AJ!J&<Czpj5bdhUY;_j__DAOkkZDbCy?W{!6=5{GX|`u3<1v= zqnRL8&Y6AdBQjk#)~J64l99K!#3`jFe<=6K4B;r0)seTEbC=z zF$vjwhai&nkhjuPNLN)XUuRExl8i%dccJzEHRwxHu|;~k`(v%Ia5 z3nkAMMLM)t@MPia$)XplqusHOb_1}WF7H*y_<~&)P zd9vuDL|D{#vIy~H5yuP9MmkfX@rVYYmxkYSMXBcsz~_ot&lQZGEB=&D#k8jiT2B>{ zjBx_(I4upnr;0@?1U*&YDF(n(#g(TDJzg|6!U+tsG@QINf;?69c&f;Is&MgCL1F+E zY|mu1XYv>?4;$ZT`e;X})TMU@qGxi(GnsrQ$vl%Ap2@mJDb}7S&^%F8;RRu18a60| zJW=R)qEJ3j#8^!wI}i#9PZS59C#Fr?h~^JT;X<|W;5}=+X>^w{C z?c%X9%p2oUi7C$#S)L`BJWCLfQ9{MD#D`~z3cECH1e1*6H%ml#mN4)vG29U(ggr^z zdXiwZE5XJuButU`^dw=4#G)q&L{Acalx_S1!x;%6PZBtuB#b;suy~RXv27ztJx9EG zj^Lt8)DXJ<&k7tM&&k(xsHeyja3nBLm(cl?^ z!ZXD28Dd8XdxF6A1aV52+{P`syA=(#xo*+UzL7;eosPF^zd3qr8 z^q}R{MkuN7Jji%@Q1SGj;UT7 zA=0yhAru|xJUhI3b`X;NPA>;R%dhYQaR z6rLR*wpaw_(e3gO%roD1aM|JU8S$H|V(As3cI$FF-b)8)m#3Tgl@_C4ZCH z@Z!0F#s36=jY{@f0B%_D+z{cpp}>>a1x16brv^k%4SjI=XwgE0lq^pTMV=aT3{yON zX6W?HFlbyDHX>mWc(fK7)XWTUo*BA4Gf26RLBunIgC~Y+xCU%gviQS5?1@3y6GN{j zhFWqkbb4Y4;E93Itz#RH1l~;yeK5>hi-sL^-f;{hT>DicP=Y>Ub-i>(Pb$H&Pc-~!j z-o=%;J3cQ|dtM-R>&wQx?Wn9caN*4J0szkoZk`vSJTDxXf(24f3s0UFdn_QP!j2~e8czyIQxxi+6bL*i=(Y}Q{4wE^ z3DBMp$fG6{drlDcoRACJMjv}g<(z=zIYG#C0-xsu8qWzS20%jG(~j2D4%7g?k_Q5K z+8tUQIJ03l$E)Unmp@>_^Gpd)){!xRWr1)#vUs=J#?3zbaI|_ zXNrC1Vm;?RJ?A1lLD4to0zK#a`sTnq=bk+0j7&?$#u&>T0|r+@J%l{xdK8y4H{&_? z;yGu6mWGWnly)po?9FL-&V6{!S$NLbU1ko!bFRR1Zf7yu7-PHSN4p9rHlV0`%4vGa zNqWk)ddekw$_;vk+}%^I!BcJ)osBP$tX4neL`Hiemp$cvB8xqdyNa`rsGdkqPh_N7 zVK%x@q8Lu(q9>BjLmCW)wDUx|c_PUq+1TPluZfKEL}qy+^Pb2Ygpd)Q$O6x}XtP{w zWC3eWl!_bnj7#>6Tdu?iMK*Djo^g<#aeQW7*to(;T$pDZnr9rAw^D_@08c=$zc>)j zxCYM%!e$}ZsNx8_YCR*QY7$}4Gs2%|1UkqzCZ7>z1TDlE5mG!Olz2wCtF;jY^2A#N z1kVT!o)L`iFa;9S6T+h>1U^d}@s^UDEgs>7pydfc%o9SCCxj!!BLogl2z5^g3;1j_ zfhQ$z!r6Mlxq8Cwdcsk9!X@fN?D^o(^8p=MdK*Cm*1^MjaOL?R%JadP=Yu8B2Sgga*kIK`*jHiPMvKDOY5NIbLlp*BPfr23p zj86yqY;a80@Mu>wL1<$6Y_RLuK-jZEt!IN&!yOGYJsVVdHb9hYBZvPy8_*ffXn^L~ zfXuVOm0KG(Ag!zkz1e`ovjKbTPq%1k++IE1R6X4;#nP}*PFcqb)(^<>k_h#Zxb$?x z^K={ZbW`(m`!d2!?&(H+wiSy7w=u%f$+ZD{wh3xL^=vEkY_k-rxDmo1i6FBr&a(~A zv#rdtZOehS56?EYXIl|gv5gN%jF<_cJrf{X%@~-*1gM?~0-p&c!J4(v!E#AZm+IZ=MJO zO$1uz9PsiypyPSq1FRSu-IR69k8+nr!2N&`?}!8Mh~d)!wWk4Q&jSXY27o;c*qUPC z$23p}%frS4B9w_3d>T0LG%%kA-kwKj&ttLOaV+&bf_fei84di=I^uaA13iy&zD}og zaTN1BZh0Q{UI}hAfD}>c_~UuZdme2(k1BTUX!kricplkaVcJ+g1e-9k0Ip|&Vb21i zo&_=~rUD_J1r|IB6u$a9)(L)`+p;3y2v~X&F!dy0=t*GD(+2E%4w&>D;P=YOv98uf zBr$}v4N>?UQ06({&2vDN=Kv*X2CzNZpgq}cy|S@!__w^1>Xn3zLu6p1CtIZ_o1rJ$ z9yx4#Pc|@5wkMu8&g3IDB2Ts?PqrRUHW_5tNIcmpmvu{J7d9pQlvdKN! zj!(AzQuq|`>nVVis}~zJP_NWez^bPJPfr1rnh1Id@Ouh?w34+jEqcqnPt+ux0 zar0dJ@?5LZ=VCSGnv=C7pX$nx$eNAknv73{!wU$vwG0=AbZh!F`g$67ExAbTZ$Yd% zyJ3v=I{Pq}7zaI#f1bv^Rw+IV3L4Wqja;6_C@Rf}_cUsF8s%EeU5u9e!1n_VydT2M z;)aRC8Kq#t?!$TmY zeMY?VB$9a&wXg!=0ZG*HB+7UaPs|2GV$Y$e=MYo0i_7*p^vxlj=Mc_=>OwfY@f>=1 z4(oPZR2ImgaL!}T+3Y!iJ*TZtbIqJVRta!1*&n8T&Ku83L`{cWIhU?)6R?zwo+ zZSdRzN)kP_&{O5`xM)nt;i*}kI_0T*PhIjT_Q7SY1| z?|GZ&VqQhyI7ifwV>N7ePT_fn=M0_?I6^JjOAYX)hN#%ZU>TH~p~p*Y%1dp_OHKJw z>oM#wP1rll(>o0it&4+53_YgRc&7>3X&3n!eFw zz0pq1BGHU5v{o-POR5fCG(a!3H!n0Y69qIAFEqLrTAQlAi@KH;LRpyf zY}EUV)BDWT`>fIXEYRF%1YT#cUT29^X}OrIg5Em2@jCnQI!nIJK9Fi==52Q3ZH7UW zg$ga2)xFIgyv+{m7-r92W`!>^U#lW;@s_f#l(J`Az7q!D34$-PBQLWjFS8miv*h9} zOYka#^(w=ZD$>PT$_dKwyvq1qWrJR2W?p3gtemn5uQCR&G9#Xgvn2FMR_aa0>P^P! zO%~}`G7N9BeUTwcrQ@Qky+t@?wD*{?_n56)7h#R+(#2PSaZ>`^F;(v| zSnn}X?=e8dbj;Cv?9hA64^^Oxua-bS!h3Aad(6#yjErX4V^`i|RNiAsP`$bM+C4h< zVvp5$kDYjranQKJU~gfqw{R1x5*J(T+3js%ptms5TZrc^bd#d+$y=!R7WP1eyvPdq z*Z0=#y@dp}u@~(q#Tcvc8Z+<~TZU>crdrnJ;Pn>!Rcwi-7~os1(OXOrt&6FY zhAyT;*4@b~w&pD+=PefIEoKFPVlCcc72aYE%v?l87g%f(gZ2_Lb`@f-USgnLVwVIk zauL-FK;fbQbenQ4U5l4ko0r&_msp*b*p-*qk_*&cLR&9kpx{MQfpwke>IfaZgoR#0 zN-trbm#}XlgjileCoiFnQ*|zuT0Wv1E+K-KaKK9_;Uyft!>AF7!}`3#{N7=0PGz}B zYH){{d53{{hgk_WEXh0U$UE$Yk&C42_-GAV@eYIW4m0r%+c4Z=5Z++~PRY19YOk(P zsU1dqg;9HjB^%Nb#_JWfe1)w#C3kTYB22F^Nw2WLS6HG~n4eI>xV*x$yuyy0V!IeB zu&&P>8(}wIVKH7|JzilcUSS@FbA%~)g%Nmz9W(XpVyNrP1*`Q2d-Vp}^#()rYSxBj zf*E>)0eXYU@pTbYQqRXaz8D+KZG$1-L16Eot+@7nl%Jn=S&%y#Zsf!0=vR z97F&^@B%x&zos3!sA-A3w7+(}zXo`JshSpk`FVfQd4G8^)#BnJ5&e?#{%Z36!t(wy z^8VssWcDk?`zyrzOU~|Mro9N8em(f5;QeJ_FZmkw`U3X)s%5H(^!3Tq>#Nf1OVMzV zzMQE zO7iyd^7ex9_A>DiUUcs+V(%_irNYFu7{;zp@2*TQ0~VKBa*@&QniRmhE0F@*b?4pH z_wE`~s>j7e$~wEc?5gtaQlfx#HG6d-dv)zOaWPRcZm0`@SC^DmmzYhpq_k z656}`Md9M12%#ceT4s8ek=~`JcWG#?)o8}j$h++DF5^nIT{QHEXnA~>^If{VxtzVZ z2$e%FS8uLVZ!S)y^kSi<9E_q{u1Rk$M!5jJx$5XJ*OE7v^37EP*hNChTr1vOC30bS zbIB3&|?PAS;xn7gqpFTzXzyc3xa;NJ+XF!4KD#7nhS4mzWn9k{6ec zOSnKRE;&+s7X#sP6YxKf{N`4$_g1g>mMKzLF8(RK-121PA|Sq7mEK#3`n z^$N<8q3RVh^$G%#ig2;d8&8}rV$+T3T9b_ zV3b#o$tySt*~LA7NFpC1P*_12E2!fYyzmOf4QK1rYfIE?>u=Pj2yeFTytd-3bW?QA zmXp_3kk?j>050YUjIj_tybzG@0EF)V&)xw@y#r|4PpwpMEhTTQ7o)yhoTG#bgnRVD z{cSA@Z!P0XE1D5NFD(FGS~`GSj3Y{Ctf7n@gBIS>nlP#aTpuksT5ncJIm6e5hOyGh2)*};+-|(QD1z}H_N!Qj<2k0udHOlV6yzYvdX-&j))?>=qCAK zPZo|>Ru5S%hLL2|y|NU%vW}uYU2GHhnwlXaS!=H>;;-#Ra`0#!@WmSS##-~n0yA7# zM_yQRFDwF!f^$(!14geVy{|aEuL!-b{Lr{!^}0Irx}wA4q8Dj|@0;N3%E#*p$?Gb{ zBNC*;*4xU_+p3Q!3m3Z}0olB*-lX~P|ZKXuPMJ|D1TDf>z#b~u+u9e%{3c=gz zDC&z`l5csesJ*R}RkXS0>t(g;WtEHAMJ`8>^meyz$oI|dWp(LgMe1e6=w^j4onnu?s$^`tz#tdsQ)d zRh4;FZCRBH%A)eM=VBE%Sfx;Dc~LESQIUC3>3C7O2qFNC_tdcWRH{&0E=F@5PYRP+Q$9w8UsJx3%_S`6(vaqK(yr&qvrv_kn^_t@JnrgJ-;uBh?>b$1f zyr%ZNruH7g6lGva$7>43Ybry9i%ybkqOGa5w-m6ql&!*2Y~E5#-cmn8wOwS=7Niu4 zw-krBl#91ig|`%hKanE!lB)EQD)j5(5+sC=b;oU6+XT{HQdwS7N?uZ9UQ$3_QZ#hh zsKR%YsCQHVpjus2GT@Fn^N!;3j&k#kit>&+B5YKGR}`^V)T~Jtktq3A6r)#EpI4Nn zS5%x=l$ilUfp|r=y`iFk@^kTsGVV*LWP@)gLCqBE(;I5j8;a4Ji$;_i$`GJ8lpSRg z3V=7%l{eH7P+l$;`TLTWpvIw2yrE#cp)S0k;wI2~L4|rjJp!fVVjfa1k&KH(mO}s~ z=mquX(LfuNhKof0P=WIDf+F*Ry7GcrG7L}%-cP*VPoLs04pAZie53MHrT3Gj_Y#H#pUAwQyaf3qK45CnA4ha8XC7 z?WE%Eq~q;0;_Y-dfpIeSa^m%J8dc1J2n10N35 zy$9T0PBvanE?!PPUQQccPIc49rcduCzjqTFSr=*44ft5M1PBqZ^AbSw0s?vg>AZl3 zUO+G}U==l)%DkBFyqH4Vxai`Umc?ZEV#4rZitu83TOpUCy_cH3mxOtOaFo+Spv4Oq zd7ok4wZ!YSbnCSw?6oxOwbaVE0xT(dE%A9R#W8d-xs;19v4#jo*@HWX1(;Md#oGe+gLy{jJy%MQsz#28K^2-GwW>Cu0p%vv!u4 zk6nnHC46H+vbR7F+7_Z(L)jMGOSG{9^8FLQrqt1Yls19%7KUL#5Pu;fpuq~4{~3SFqx+YEUZKt2t@Z0 zMm_!FuwdB~rE=x~R7>K_!PHA}(!nlC_Q1g@NPB>TDVOBPK`EDvOwK5lVA#AbuFDYe7L2`U7Lb3m+4?z* z?OtlLoC;<8_h6&##-Z+(O9pRSe+VtUl_K5%GeeDGAY=z9((=sKhbVZr1^bY0JE{kJmq;v(Ws&AYuP!~%AP+90qAOW zp^duw0WRNs@<|l8Yr?__Iuy~7;Q{RydQ;u9j=^~cy9Hm%jsXGgK-UUTLGHf8&U(h! zb=$_b`>NP0zb?F^3@uOnajDy+++S+7)-uq}eb7O{CVT&4oBVLR$;bxgWu&(Gr6lst zi?l4QwwLY?kHRd0H#p@sL5cY?6duk+w=r%LA|5}?27=uKXu3uJGnW6zswkJ|rEG=_ z)^;eyhY`V;DEE9SW5?dYKOBsmvCKKp*gGq_-R!-e-sQ8?!W7PUj~rX;WJrQ%jC|eh zTzi}A{8R{cfeDq4H!6b3&f`-p@IpNJJztf9c$Fs09SpP>1x z?f3~zHJet$TreM```!b|Yy>{=5YFiJeOkm!dHQsQzlaM!J6VDf0mK>~gY6=Pq5_db+GA}DT%G2Jj-dDyk*qI$B&g*@S z)59Rhjj`nX=~5lm{8c{p3F-C@Q&-7sj@-@(NH&=97Jc>}>o%yj$}NiDoMa~K{9MNt z>W*D~SNT-*zSHR?p4E))3pNZV<^(=;?hF_c>34}=7aD02KRU+l)HD| z*dTfucG|>tqv6>7fDq~wdc0C|X$pmBa7FEywpP1Db3_8~Gf(91yd#WoHjg-YJMhb) z$uj6LTQOH3XYt@(v)1~}`V0dFx9q-V8>YXzJdd_B_#Qb(Xu~3Ib{PARX-m$HwmNM@ zPlOaLVLu#g0umA=aU6CcU>CH)lUub7tTi$mdmc2OHrr^ywH!lx$wj!^c$0)OoYm=N zY60Am?G;H9i|K7CAu{VsFChtSlcfHpU*=w4uSljhrVOq5hyOY)3>ldmuhA1v` z?S4#e+C z&XhCGYq^!N`5*A}D&0+?x%PM>zJjY2oI}R8bi8mEeL9eR=ilVP-WDe(N9pdM4&JUW zC25tbpUhw(xU7+ZY7R5$qm1_z*;vp!Fz@38%vojb#moT)0$+{#CL!B!6}ksn%fyOv zrABV%&jLRIHh68`skWCvVLs@9qsar8FgpmoC(Ig6pRo7nPoMB@9CZrT4R0fZV9b`7 zO@uBla$GDLu)GTTnfB8MpYcR*fUP+l;k3}32YXb4mwmKLJYJn0L%Yb_tE~&nW1%Ro zaauaE&V-H3AhCs6dDDeav~IHua6Rrv*E5U?OZed44t)&#~U`hCF97NJnRf+)hvFJl*$~C*I!Og{-98dUlNZ zk8b{LS`-R%vL|fF$MDBSZC+t*BTs+8qYWE}EX|$nEI4^<^)u!lv1VC&lIlO3R6Aff za9v~pB#8)PYXB|x@wlZ%xab%*?%A9&nO#SJt?$iKb?Xief4JHjvR%hMf5(pGT}>2U zk6$#kzs^VPW)`@A&}|Hbucd5MxbKb?O{Y?X%I{)?et(|vxCsjI^=@*UQ|}h+2y^{b z4vPg@2Vx$jv3w4%30%|Czu=ryF$HJCPXiYlTJG3xYTQH)=x@`QYzIVm+|JK1 zU>SllPH}u#=Dn@lc!=6&IOt)-$xWB*?E7%cx6~eWAJln0^Xz(gr)+;2-@}{y`{j@Y zIHcnk)!}6~W!oa8)}0%WH2PK1twdw5xzsKwlD|zFyH&4kO0|{WUGv~v&8E1shgzqg z-}w8me#e7`yrsqFjbr|KVsF3AJBNekk1n{b%Jiju&YG(+lj ziQ49_{C@!`-R9U}Dw<1TqiK`K-@OzTtn<*ym?|iME?sx)tLJV%Y_^bH9-J&*SdFI} zv>mklj#7hXM6EqK6)l@2^I8|#2(Xk}QT~EB0zC-Fh!^W~WDDbqMYcdr4d9!rhP$D7 z1WV&1bHr{Z%sjvZ)6(F$949S7>;?}5!xxxF<#d8Ctisj2fA7YgHScQMzu6ec`+!W+ zhH4%@Q(1UqWIw}Aue*hnyA$o1-n7`!!hhwkh;s^rj45N~_^GPwi-|@Jn~344!)I{% zEaU>$4U9yzeln&S+r3y1Q+P z`W;&q_Qzv9J50Y1bOF2hCTUbWQwSFQ=HA;{$)^bO&jgA*8Fzf91rcLelK;8$R(bi7V(^mJIIP2=H+n zt^?uCVF=?UduI=o6OPZ2Cw1Nh>F(Yh*6Y}&w`1&grG9KbBLCaQ)~rPv{vUAk3VID8 z4lPUz6SfvK_lGc+LNc$KGj{ez>r_I3)Sh8>=#HyYl$(6q>-o#E9w&(n(8cjL?s&?CEj8^GU z-(sVbcJ95y4B??R3r7DQTZ8Omkb#Sb?_n|Zd#-WU0x#RSY<$J6mRF_ghSGEwl!I+D zCEs1;zIlVyXf^KT9zL-$nRiqkXpZuyFD?$xW1G-iDd=&e$A0bv7bas$kYTQ@y% z4ko#yDh9fKax0}>d~|EtTaV~LV@Oa&c;KHSQEC#$_Ti*r&%;kXV6^{}Zd;^jOI!nS z`28F~VZpE6(6{ijGHGd|bj61h8wb)QGg9NUuQ4jioPei2C~(G}*@Z2awSX*IB^lI# z4=*3(X=T0{$?Gh67{J{}SN0y=7THKs#bX-UcS_0dRoI=~=Voce5iTTk~D{_b}g>>-uf847iTl z92qkgJmJg=*b>GY&dK~ER5DKpW3N^nt+_oh*ub*}r#_2gpy@aI{EE5o72^pItXT!LStg(c{|3HO0LVXwA~wNF_#m3j1h_cj1ha zdXBeHL5g=O`tmga*^!(-f@#b94aHjzXQt62N0Ta`;Y|nM1@x_s453x*dMUf}qPxk& z1DNc9Cl_=mkAB-Hh(_88gG{93V>584m!SGKzMSFNngE~H(aDy>XLo61?tkV&#Y(OK zE$Zmhx{fuwKbFy`K5L;kAocY7|L zq=?Ku$6qfZqs^F!o_^n@FI*BQ*Ouk_tOaOGO~V9?;nwnVZIA32&iC}K?b{?{eZNoX zaF~Q(X{yBV=Jg%<*i4r4|8{upc1eeCfY&S_=GgY;uKwyvy@LHe|0xK#g%rDfVYce3 z-e2K?a1F;a(!Lo@Df`EdHtGymQ*3c5Segi7a=6cwy?5tQ@`&wvT=` ziB8SWTo4Cc2X@yPO#>Ua@w+)(-BCg?YvTulx;vTAjm^}X#&(d(TSk*)U5~alaf9I7 zpvpUt=hWbTgzO$|Bnc?BU`d!J+q|FT6-;FUdMooX(0v~t)P5ngO!0Pogx+`dPsFO< zt!`Lmn9PI1Z@s~_zv83z1Bv`^DC>nsQvWH>Psc~+E^*tY6I3{C_a2Xfu{F5gwug99 zWz+G^VB*Y?O`vgiZ!V3u+X>+wPza+5Nc`J1Ay@ib3-2|DM>qCj*dvR@U*cN60-Ji=?PJO_(B|GT%&jTQNr(*~}tvg)IOM)Wf4YIvW5TW_bqX!#9uquUOAG!U_?JZDt4qlQ=@C6)%M z_zXocYnAGXpm>Ew%>58FZ3pt-PQ*bswvnVv8Hpsyhhp8Xn<;#5*{pc%16sjXk{x?D z5OJiTR4-oHvvU5*S$DhVJEn>qb9aoJU~yy2LUO+mdJhwQG9e?@-jcD4ZgR7wA&B71 zdKqsil&%SA7jpq>iV#0vso6gj(Yklc2^+I1U`5D1uhosvQ*30HGX9#3R+Kghqu%zl z25p29NEd^M_WvH7tpAwaEfxZ1)OXyV;X1;;UN~Jha`eV?eSu0VuH;-6XCQoa_}dfl ze0e!6&Dh$!-@lo#q2erAS$LN*nE>~1wh%9B2^Pl`EUUInxpY)u6iVl^M8>gBwzMRA zjPt=XYD@#yg1H!D*`~~$T7l!U4^$%>(o}%uf{SDF?m%f3OKN;vu)?!9v`?=1{Id=$ z6K{`__SrofXyn_%fIHgbZ6EUP>Z-B;!`U-8FW$7}7dRtBg9WIz_#)DXZ(R1#OD{N+ zyXoRhUU-3XDVi_9$g+#hM!sR$hb+2q|1=SGF>=}insDLfeeRz` zEt9zE7R4^^FV<9_E^6rf8|wCwIbTD(Za6mAQLqm97M(E*a@%UqyX-qQW(Ye&PKj9P z^R2DxKX1KGo;P{4(0pGzy9zMSpI-aAHPp0oVSZsbAdv4fjPT0!B;o%yj zZ-ote`z-m-UTiqa*^m|+bVB&v9Iz%S!aU*GR~wz%AFaT)l5nP^g6k=x{w#>%;6_Q$ z?&eZ;n_eTk!NTw{8@4UOJiO~&)TPn1mBKySqy@5+!Q=0Fm}7q#HvE+yEW}!rws1aH zQ5X(ZmNy@Z5t}-&s=-@XU6_gcC)^(O?S(%hdgDh}-7i@oam zSK0Q6D#;uMfVc~H&{P`3b--sLiP&OO{81q+Z(4i+16Ar7+f11!9Difh)? zy$}Vhiv?K=Q@~6Yv$`hsGFD3wWida<>!@iSND4nEq_f8MHB`vc(DJ<4p^Y!FT`WN3 zr^d3Fh?xO_K$}E2Y$1Wnf57V91V)*bw+}b`v3bBIAm2|3V+5*)O1jyiV;@TF^V37e zjbP}-4}@FX5x8L510?IuP`jD-*ZGzC1t8ML4;!AC>Q3^|A8h?qqBS;9phkXJ339bz zW3m^|^l%4s8-xM<5;QI5g|=YrhB_?MNN>}r%?^0;Z#2F;d)R-5z>GOe!!FXhuV^X{ zdwro3GcgAFJz8T=a0tsk2k=Y=@#Q|BnS8+D285k;-&>bg?{T$!-?nCk7A_u~femCm z^qtQ(KlhR*730s2b$G`|o!O8#TF%476HNthQIYyd1Dr4f)p~}>{rb9Z8J6|UQ^5pe z#0AGYhAu&G8j#h>&D%M73T%O2+T7>}bLlV?*Z1O#nC}oa8}Fk}0=+H8pXo=8eNQy~ zs=!9H$jFAt48ug`@W^o4k9FqX^CAS>GLnDhxgMn77=ms{?gaK8I2H*#HwxkpX?ftT zJOjX$U((6AY|p<18XAh7-4Mfx?FslZN32T(oPal3V4)+~fT}H;cdj8HsdlH#vHN%q zU@N&dXn_}y-WKfZ(wm`}Y+r=rMi?bj5}(mcgQp$93)%qF$x3sJHdBz~w5?U&nv8KJ zW8$O1Z52v=c7kAFVZ9o|s@qYp)amB|{Px4CW7}y~5W-MSA9u4Eq~TVr1tT^Y+{WU` z9c(?o?TxI=l#A%_iFb{?rIMS8{I+0sky$ci|J5%n) zq>WxbkEqQ7{oCXX!MhVhJ04YY{G+exFyBIcJZ4yNIyM@KBi-yiC_187L(zl){XML;np_J zjH?G)ib!)kw~~?@_qDy-08A$B&A4ZLQ---DvtBSpIybljJivy_ywPc74ZljZ z;S*af;D?Q)j)Mzcl|AD|`TqfDZ{9<88y050)aQ&cW^PbeBr|PsnQ*L4`o(Lmh9pr* z&OP3n94zZB({2AscfieTo5mxyw5kg`@)72(1=wmiu&{NBu=J0T!};4(Fq;mu;AZ)| zXNX-Rvu|z;ezg)E_G*?-KREIyJq7x{z(26SLk6~)uO&@MtQWdN%53_776;?g__kMJ z9{VheHy$j={o9O%p3C3Cp@j3Q2bbS^;%e>x#^(KHw?-HAMU|fQ2lnW=3@0^`k3gpH zy_#ywdvV06j`*9(dJZ>Vi~`0u>aZ~I`IMhHj2m`R&d5)OYwc{TH0EI_9k}VFWHi#7 zK2;z5vz466%0B{%DgOlSWpC}S>kG*y^?j$jLN+L!X|9u*9j*%VY&xKV)S$lhg0!shZj0*$vr-J+| zwi52Z%?1lB%OPXW-DYfu#*S( z7bBt&LMbVx+gGvcEIu#A0}ZS%`gzc_GqZh28yEcXvd?wRZ)y!JEuU*bze-yBwdtgc z4I3jxBQ=Kyl6tUO0Sva@^!48a|j>;?@n%saym2 zM!VZ#lQ@W|o2teIk2m`57Z8T4r*f!^^~7HWpbgFbzBc-qY?|;(emcH>nO+ISlQl7mHkZl$n7ysDaW|)6y?f3!M zF=hNfRz(itndip|VkQ}w5z1p?72&Gc_h>dL4C=m_ytK6pE}4kB8g9I#s1fh7052Nz z6h75a`;YRbwVi}`3%<|SJkdX5q`Z*XY=|}90{E5pJUV0c^kBPWKRpLG42Y=>r1sOM z&?i={BpxIt+r(i^nmRcI$ndtSUHqV5%gLl3%uP0?YU2pp-;EL}ZPv>tJfpW6%F*4j zXNz+zXk!%SOgjRD+aFi9P38vKvod=S80HJ|*hcCMo_XXzppd8R!hXQc%z^{=S^m}^ zYH}T^Xc)JZk#5dEiRDh68_#CVd_d$&a~q0$Ukx}k0`wD=c{78k+%#eYlZU6FcAus_U_2O64<75VC<0irPjzO|K?X<~9)(u>P zHLLU5-cHsrddFV<#|A*tW_-x+Fx8G{8>kG3CCKOA@x3_#(p|6Pfo}BU=Lmmh4Co_5 zxEF7@%+a*o`shmF0%KbT`haFc<*Lu1fa`a&91XNDJT;-RC*(YP#XqyT>HbRz*uZ|x#x+kgH4iePK70bTiMcPZx4NV;|B z8?D;bk|~i7d?ZC0@?WzD;)=~dPJIQ_6vhh$~<%}<%&5kv0TpSD-3wM-7 zqk(_?=|n`=Uzh+8$@zbFIgQJbJLL*6aJywzog%8t_N9@SGiVE7iUMK5p!WX()eK z5$_+jX&W%R2l`FkR`fgIJx3tccU()6MM(eja;W*!6?A+Pjlj?ya5JJ-w>|x$_+lb>Xkd%4od~AN?uxa z%8$JNWiLs7lz4B6vPX{I=u5ru-(5}nU>}*z&cOp&>=xUPOY8hxW5(!konfA3dI55I zhmF@fFl!8_K6|j-eQ09vZRC;WKEf6G_7bn&EpZyNS5fcFWTKn})Xn3P% z($U{Et88T(f%PTuuuPkBU;QS-FUvC=sT11Pr5?SsVEW^7>RcLdE3+bo1v+(!vqoUh zvBR=EJU^@Bs#QFHEoz01-eF*(nN^BnOZ?U+Jn-QV<*?A7P48r$Jph^+1*CZW;C zp@Kpb)JboQs7)B>{ko5LEH-%0MW6&qO1i0ku$Xa@SbG89j|CF|jp15qy-&=$x6lcX z4Xw8W{V^Q3NV^SQw2=Qz_xMpu;D!LFf4^fHllx}lCOR^60L{0!=h zSRLAy01o|_{lJjhyE($9jWU5g)Jud7MFwv%yP$wEGWr|9;D?5Tu8^l-L;y#&jD33k z5yPUQQOyw@g6*Z6T?W5`Plmdt`WYa{8Bgz8QtP&H8SH8`8WwtM??%+AX?$R|J1+N# z1D^Ba>_%c!zG4sAY}Vo4x!1X~jx)&oBB%vSMspi+Bd|VJ0o3pK;Y34nPT2rqo-=`J z4RdcnP_$^Z9}jOWyDe!)8EtvN)9szV56|YPpI0D<#ht%d|9MB4C(b(m?f`zAN@{bn z8ZJUmZZ!~ih@REev}fAH_l>UzM+nMRBf^63LX#02yUUxP!{B}{RZ#xOZSXu|uktf` zH``3(QCJ5S%+@?$z(?!Htq3a!?5ZGMxtj=^FY?8vAQ=x<_msTC>P{{Gu~zGvB6B;F zNAmP5%dU++BLiFX$mu8<$XmE_>WJ5jGM$hh>_C?1yJ845orIiVCvLL~IYE;)PVlYy z@cBi6=0?1Y-8MrHuQ<(DN5_94J9OwwCKPz8AXxA)9hfEG#ALeSnBRV1~(XI!j*G$9p z8`UKvc`j(;xM_@&I}N(;XT-1;ccGboGwfS2nGr%x)3~DA2yu;+Y#-N{4V|iDs-jM`%46MtVG;JaB$#?&(kiu7^w?-6TNOO#e~Di7qqv0sjIx zJ`~FNKLTI;fHs+x{B-o?LhR&PPvbn;W#?N?%p=1V=-_@Een|qP$@6t>)n?V z4BMZE@8U&{b`D;wk&&fIY>jt&tKuKec)bhKGu{!}OCgp9+1RNWTdUGW=$uzU$NwrZ0_wP-C3gpD5IZ*mx$!%T^0B#)0*i8LtG*66` zj?>`XVNn)%P#7lL6|1lUdjLMM9 z{B;1fZN6K>l)w=>jIbQO3@02&>=JX>h@S4B?w8QEFRfWGeA%X51?k^YJB?9-1_l}{ z$Ok-Jf) z1a9+ugbP!vl;X(2)-ZG1V1rK8G3nIS2FXW6`I&KAEsMPX1TZMc2BqWQfmZ)F6 zV%;DGAM{vfi@fmE_WS7y^9BLgz+NoJ--247C*!{@!~P?cU>eNM+g&Iiy(HWG!81I^ z{o#XBJwEOLQu$X6LyTbLhVM z>G9pIOSN#g-N-z@Kv`W9pH(&N@99)aeha+jA_Y_ujvo#Cm&?U7U#n_Z zU*Ue&sWs`Qa|ni>Z~LkT`c8aRS3z@hnP24XKkCjU*l;|gJ|6pP^BRG&P-n$#P&l@= z2KBw@N0$1x+ibJ~gJ{Q6BdqTc!3$Rz_=$b)?3&$|+;qlO78UQx4{_R__9HuPo1#Xw`MsCeq_z|Op$rAl6x+J@q}Lm6%WqD}le*cq~$C2w}-p`B}+ zU$!u6hn`)@ZGLt;r`_NPyj=utDUJ;%w1QcS*V~wYF*)2#(_0_KFW|YV*xc%frcNuw zqa&5Ep>3@$p>@v{y796Xvv#~nIB$pATK_KZtPxuC19jW&i7Y;AYNSIvvZ>|Aj3dix zplI}}S>pxf`2Z3YiL=INLpS+PXJN+XgvA|YXkIv5ZQGgmUQYBL=jV4G%v*uk+Wy|v zdvR+aWorD-b~k##?&NcPUJBIJ>9e69u8pRd5e#dH9Px)bapWo z4ojn3V-1_}To@=e&w^*zw>aD79Jjn{OTHL{H9%aQm6=Ts(xIHF!;o z@$I?X9vbO${a)BG7@#2lk(y=R8s2#fh;wXa0bBepFFZR-fO^;txTA867LI8*gh(6< zT&Tnk`B8dF&bMaWkR}MoL7Bz6W%W$5+pO608P{0^xl(ujDBxTkTL@&Kth~h=I14s? zY`|o_X8gi_W=m_^G{I)6$$K@b-BS_ad>4%yuO@V*Ljx zW#~9`#KQe_yLArUqvVwULN3#LfPobO2M+&o>2%OFd2c@R2ZXY!hgn4HRgv8dzD@?) z>A}>_Iao(cu#lz`+wLfcj6H722XiF-p3B5jr0wm*x5nq*Ja^M@Ach8cks<0$P6ilu z@v6U>?oL}7I{`E7@s+w)?gPCsT6U>y)>>6K)m{g8A|KqksNaVDL1XcR3zzV>Yx(Q5h;RG81~*{D{|6HfuKE~#3ume5c}ZE!V9ahqfwQx8 zefX<2M#mh(;$Qsmkb`X`$rs~weaauCIuhHkAPpa_xMX8H)HFEN?84h;8*9-DhG!)4 zMy#|v(Yi73kp;k5$>SW%as9PTucy%Gd!b~l)$<>7Web=8Pzq>^9B8&TCIM-N_Z&tr z5(^r%I-6*m1P^JW!$>o~;M_I~)UX8*c)=z+I#u5$fxciH4K5g1*xJu5_(Q@$ND8P% zqSB9vaf+a%)z)ZlIsJob(!~ptIb-8^ZZ=76Y%|7%W^UBV6^+7->E+uhC3PYLBXkN7 zT+nX~F(5I8o50kscH9_q^<^px5A?FIC8>=r!Dw4RuN1caZ;Q4}9Q=B?0HFDLU17zH z?a1lRYqvf5pfJbPFg6WKU^N@l*q#_ZG91vuI-rAYh|G0?_|3O9gEv;lLmk*)lm2WV zrmZG%bl54>pVroUiDs-?`a;5QFaT(md+iP?8&jL<0@pU;jwFf5MJUF{Hskj+5hm)eSTNU}Dv*mM_E;L-xifYe zSN&?#rn$)3HHW#uUaEunz7HQap`WPSg}a1RDC#@8pIpW%zVks+Y+w%`xDi539Xzvh20IqC|r+Cu>pp-z?sYbx!CjU6n`%B*KSqoAp@&3!PlsH zxw-hyX-1xCZ@EsTsPanM(c9Z|CQMu!@YKxk3wc2?*B%TY{f=z7L4|Is3A=eszJ;1{ zz2!3sz&6o^5p4`S`i9+pf+%okRRC`jGviDYH}B>3C>SO0Y)oAQGPx!5q7dJEwRwpe zd18R+(~@N8G;d0{kjp(R^fXxV($8qg7e-$Qe&3B`MT@=WxsB-++oMfZ#&*mWqzOfl zfyZn%4DfD`Cbu)lhTpbn2x~OPvv|g47F%d1!VxvyfMQM3n;cJY&V7* zZpP#`n)HdExA4>HVsFZ}5AfB{J#YqQKX+sOG?w8z-ge&sAUY#Aez#PLMJo<8J0_BY z&)cSQn0u|EW0N%!eVz8JOtecV zBl8#{)6@M}c7|Yn&PUl8U1Fwa(yZ_1mOGO|wks?QPzSq5YbH8dFfrpWj%Jg^8MA}| zpzYeGoO$QBQ}thgC@>#>$W6m)m19eETQh*S3+WZ`Q{4Ch$*s-p%KoY02a*qFI>?4E zUsv#;7e*28qH{jecutqY-l^nW01aE6I9a=HY(d7um^#^%$J2q0X57@j*?{;OH>#lF zne4!u$?4;>>d0RtFPpwxEye@o{wU>@d0l^FvqP<|gZ8YQDw#{XMw}F}+a@z^x=Qez?cARS`W(eY-?`krF zL4=Mr_I~WyUi-qX+y;m2!xjhmu$w6}{u*(FLD<~!O|bkxBd2jl+YAx%dYrsy$0IH@ zwunU@BfPA>`x^eJn<1~p7bqL1T}E4L9p$xwn};Js4@Y}Wa%0bWW>`lpxd(`3X?Gz; zEr&J8)y{K_j&ScJ@WK9PoY7hSWq-0^(^vV-x}Z1pv%X3uY>_{sJ!glpjZ#72dn=*zvpYYi}hg>zYlbANZUkRK7$~#KPei0uL%n02zdN=(av)EW~o7b;R zdE5S3_Nzj)x~z1)-bdqjBI4_RWbYF^Mx8COyc1Jy9qq7id1UgFLrxKrUEN52A|#t%D$-y5-$BRp)td+l%C{F`8+ zeI%FL{1S9!ThPm7Hh?jFYnuKxyNvT{1jM*A)&n8G;~m^|FbO(V2ib1eK8fT5R&4LD z>!G@4lgE%QC|R&3J{@TuMSL5AdNIm^2P&Oda*-gP3Zt8p?j+&ajBBB(MZ6I61-!xc zkcTHqW~qB#CAN*Ty@XEdC|Mm;ks-9%UIzIF!ZcZ$_v1EZa~3~ngCE^;w-? zI%u)j=;UJuQK9QdmGmkxbxpu-&P^Y)tJ;}E&8U5FPCSUYGI=~QMLOQBvJgPnDq9Tk zo<$DT_5^E_%=}AFO!@__{YB^rfQauFJaf@Uykk&!8X9&n_KC~Ti7xXw0?(~+kz?z5 zNDd2BEfe)y;&C?b_xEz2>+U5S3p(kiU^PPA_A zQ#+PB`aS(PmwfIQ?K=L%U|h%O`tzr?#kp}j?Bp@J_79x?8^qA1P3;z>@vFQngogdCZAYxJy>A=s z4Yt-8hu0d5l3iSh0<}%|g1r0GaAhv*jcw1-YhggIcy0=4W72ud=*JVRb{vZ5!~K&u zIrd9>jV@EH=SdrL=<-Nh2~1VCNC&vI@^y(>o~gJ(Bb&0EY&BRgf#zKevRC`~XJ{Ec z-$QSHQ}zA7Z$SOW4M!*4n5$SA_ecwH`W(EU;Q1^mHwIqYcQl=0-qvt;TNQ6_gU!^Y zc;JjtC|hn^81lz%GY!XPam+jKjFnq%-J|b4y|?RmgP$7v@)SyX`-wF}`7G~-xRji3 zYXhALLZNs~@}oa*5pN}LOtJsR(4%gdn#u?^;uzai=Af4|o&`8=km4CU?XJ2u<^vb{ z#h0k;8kzFeh*58kV;+CID`&rKU|>7m7k#Gl2Mr6^`iO48^k=rhNk5Pm18lMujTk%K zc0JG5_@HF)#!$g-uY};gp(bjGGq*wA(AFp_x`Nv6^Bgtw=l4^c-%o40?v*_LHVt*Bwe|K zdgKQkpeuJkb9{pG`>E~s6O-Rh(Hoy){C;xr`zeghl{%#6M56Acwt;;3Fv zEIgU`^~7PwnqSB1uOpZUSK5F&;{7^eN#Q8v*YU}(W7I;{m1NaVSCUZ`T}d_#ypl{x z=c&w=}5VLW?WOepc$Z<2u6lbu^*Dk-)Db*Ka3R6~3;lQDwEN zLVINmD&r>?9qYg7mwIf`KbleA8Q$-%V#pDw}-#ZsPH~sRf0sD^oZ~gyqAg3BQ{P{BFYVyJ`8W z305pkS-+Vee>0t#u<1$@U$IQcv?Y_5-%QfqOi~mx)%eY%;y2TC!lEn1j^(WdG)$s? zF-iKx1o?}J`in^rS}pWj4g9Uj-DoXTd20d9QMJi$b;@tm?6>M8MAgJ^wZm_f!UP9b zez0)%)&dSh!LQOaztsT0)&8v__`Ou>_fh~C!zCcUmjL*^RANG3xj}k_!KE!yS7xv< zHer<#_$uXJOPqc!q58GN_-pA80x`dq;C?NgNie(;!`rfs{8}RNRRoFYm0;_YO@9ID z*DH>$r4_%HWc*qJ@oVWqam^)c!UmC1|*^!nBc5;%_6LFO7138{PaievuI2$_lrWN(gWz1?Yq8=H$2W$k~nG z#u~qkBVt`SLE6}%@j{Ts1C8tBl@h8)O8rt=^-IaqFQrNs!{9HaIlq+1__;E|^vZ;F zNohocxGSHVC_VV4^r+D9BtgHE{zRB@r31n{zmwSbP4e61RQoyuIn6Fjpejl;@KBD`5q~!Ne5HrS3zl?;xjC~JU3(L0^T&-2yzE(N=WemeO z_scjX1Y_4PqybBBS0A1{5mr8>xd2l^GfD4(_v&8 zbtO{@#t{`qQhpsFxey!$`E}&u*AW1l)+$|&Ui>;r@$0AqLvSSF*AaqWN6P2nl}ktb z>bKFT+i24h%$3XMrAgPqyp0$=)2>|p3FAs7wF-jU$WWs{zl{oirt_?DrE*$@y^R7J z#rbXY_h0atb){08cpGu~ZKUP55uA|UMlyaIiD9}@`6RrOt?o6F@a0NY+NjZi-$ujClMqs`1O{LfDfIFkE@_3<7?oGW}(=;Fl4EUq)QNjINgHSJBe1qN0QL z%C&J$vCyw#A2U3^igbPz(|EcvS>2%M_N!>+S5fU(@rVsY1HX#v?;=WWuDq1WGtuv& zM!$;?e-{lVm5b2)F5>%LbS3U=tSNO3<64yCcae|ZMKOLCo#3P>)UP5*zl!)YXmJ+S zbNv)}=U0&$M0vl8?0yxkHCS*qQjrryM}8IMpeh>sRRsN21ZL`Nq#_ExiWIDOfuiNF zBCX#MW=zo#M+NI{8IJ z``Kinv!I|W8-rg&vmd{RWO^!o5l{RgYEX0bQ-w)}s4ij!#09^ITy!^3kQxJHLV0{017Mpu|~EQbanktUBxI2^eU~Zy+eYfs)X;@f%3S zZy+(kvyRlh8wkV=d4)gbElrH1&mVWrgBO{)|jm--b*RsK@@Ur!w1a#m9`^4HHQQonvMd0ju1e*G*m zIh%=E=+{r6!(TshGQj!u!{*ly-;1-Eo*&2@pl}vbmCLUmJ2??p{J0%h&tjT7`Sr5| z35g=tPY(l^&SLUI_UlK6p9Owa_#t87@GK?(?Ng-`+ma$qGM91$TjN}UzzlSM)4?7gtaF#LoOukhC0cRZ@UO0UI z9ul~R&ELZ$0aj-lQ4L!ejv~N#wh@#-;Mqn`0%FcCR@2TdN|Sh39KV*j62Pxvre8xy z1Y(?Bd=kKLmQl4DhCq9k5mk|)pkG5mEx(3yR-I+^Hy=2>`S7OAbXJj?cvexW#7Uc9 zLo){wuc6)mIcF6IXgRy6x+QPRHPkYo$=OBH0Xfbtg1$ZZH8cZEat(ioomE72a8}WD zz&)!-YB=N95Nas)YZ&%xXh8s{vx%qz7M)Erg>Vfg7(&o=?zen!SDg0|ZYv@`S{5fk#%IAg6*+T1#DO-LEuTc3dZ2K)lyE|J5isTRETUex! zhm^C4)fz0?-$D{V&L$SRX>|*|0@OI0_$;LG{4HFd<-{%I3Q*!Kp=yOgYm^PYh0MaN z-@@dgUqV#@ESx12fa@%wS7!-5o+V`IETNMTmii@p)PjK!6BnbigZ`WyB)xNXP*ly? zLC`K|2R);l9dsaP1yxy`6-4!LRuEw$SA?^Ipj^$ff}VtsE}>%NSwRnV7O|>kUGwDD zq_c=r2w-cJ3BQDgE+KUb&{;$&q2VuGnZZjqXAAHwVl~Vq{L3Po{t}+~CH%4_<}Bjx znvuI-Lg^)3TRR(wN`NrQFJam*Vf2?!M~q*>6~BaHTVZDdMK2+U4!?vNehHsj3(f|5 z6h5%(ETAc>OUU(0sC*J})E#8?JNRkRSwPTDlYR#;{SGqz4l4fn9n|wXIET;KKUFnn z|4>&bj_#nC-$B0LLA~F>yFs+y!5+VZWG&s7 zv}gNBUx0<=@adW*VEaH19V<*Cb+*q_FjCgD79jrW`SYtsk8{#lK7d>-tqTh^J&sGA2=l(UC})Uw_`@-%W5 zIcq45k^#WyH&5Z$G*KsxvxaM+S@dU6IO8;a&EA+!Rbl+9t6vxHA6YJGrO+A3!W??5fuB@D~x|j)GgPDyr4VSUAgHX6XX+qYy@$wE1c@XQ^6Z{iS?6SnO}~Mdeghvhp54PDu+gEj zdH_YrI^QuoHGc8L_{9^Z=j@&2iaI!M9RQeZ&c>mt0K0U$?9RGjtI&zSq;l5HlpO*2 zJ15oe9LFSQ-8@$)Xo;+bM|aL4CXKUgwEE_(_??5|cMb>Uh_h>=P`)6XT?2JOfvG&Z z=85*8)Y&yxl0eegzpB}QKWG1_Mx1cY{!OD=Ue5kWgUm@vr=0zZ{-M5N#dt~1{y`l8 z8O+N1RBBmv_U}o3lVwNK1*|Szoc((hLl=+`h_imwEVMfpkdB12e$sYIM`}6XtY7qw zNmeqlyl4HOe)c+9xqwtmo%MT#K6;dtTtKr+XVvhj%VLbaVsutb87G$gQ6ipIGhLw^ zIm>$1`rkZPPUNo~QUsn<-Z?w1Ryd4i?R^pib9PE)B8QXG?d-I5kV6339U|w^pVG+L zsT8^)2%|nT&ZeP01#kf&Y!l*anhQ9oA8NQf&!T}=6@A#XDVJx@NU3&uKp~RqY#(*1 zR|Z5z^=#jzYCKwiICRzwG)lH(!-G9%`J~VdIuyuJ{+%sDeFoslA%{4BpEt8OGZkyV?&T09cRZ-r+Q>}{8XGBbEz5tXSi%QD+U@Rt6}%%;A|Kv zbOVhwGq!ma4E4#yHG>EaS7*VH`i(Q=H%xXmVlc7tW+#IEmhz?Lv)`{lXda3&*g9o?ke4 ze&Mj$JKN<6-M~VP7`wAvrq3;|F)ws)XSqCEQonGn{KAovbw2PEaMUgwBuvicy{#&) zf@9&rk)Xxn?A_EbanYz1XSY-fsey*~%^nVCw>$|4v(9(45S-oe3WIjCRw+^L8z)*> zXYHcv4I6J}d^&6QbU-%EdRBpdW#44|zFB|Wta@~|PFi8lUe@|h*9|Abq#--k4VyV< z>+WDipqZ@cSuIsP(yXMP8!%a3&T66NamzZp>4N2~mT9Y&^*U`r{kHM++Xhn>l(Tft ztx3`(XXy_1h)~(tx#?FRK^SM}pk8*=kT@$>y>O-r*jYKLT$l8>O_kp^Y7WlIJuRRO z;W`^ft?;8p)_OKBN+E`cRA=MfVM2!627=?+EYsgM1|7*)P~|L@XI3&rgZ7Nnjh}=nP;%t#8?^$8`{(@QUq8qTdGzbY=+}?X#@Q(k zfalk*&d(^#hO<+Wb$0yV`1$?%jbY(e_v;t;>&Mp5vus1rx0e$Pbyp8529 z=28;y458mMfqu^na;URu_e`BOziCmXXZU{4kois1Vd-odl#P?b-!om#$o-yiOU~Uh zIeyQiNV4MDCQm1IXD0lf$?$sy!B@dpG5QSs_WAkkgCpoH6Y0JB+WhwY)mfdm_4WPs ziTUl@0-=w}?IVKbER*;7`0aau+h^jpuLGB}OQwI(eP6$eQ-~67UjZj)mq7XSF@O8m zUo)@B&Mx^iqbjM#jHq8T{Nbz;YVw7dPQPY0eHB5151duvq|C_-Gl{=u82y_0^VL$F z6=ur(nu+^0qxS0TSp_~ZGeUmNoc)^F@oOdqyD^jD*NoS%8LsD(7u4A#RVPip$6r29 zzkIBI`KrHslg#jO`Q@AYqcgY~;-YE|0<^1D~|ySF08*&umkgDk z5|^YMGA@3}c>R)5aQW;Hs96)oOGfLL%+~K1SifUTC7+C0{2hb%J7$lmvp%8_z#Joe zMN7PxQomy${ED&kD`pW-7$d)6DE)%z)Ai)4=PZslVCMXS3H$}q<`)c~85p)-Fi(EL z6j|4ty&(nj15A!zFfalDra?#|v=(e}Uy_yu#|7Yy?k%%AwB@%M|P-!FmI zC@Wf-;P00?e;r?7m)|c`e!r;cSkVxC3G(|z$JgkRvwV^8`$hTdh1H5;Wm0Del@~?7 zUJ!r14D!|U;^EiJ@>dU5sX!?mUoM47w6iX%OAst!zXF+FE_=URu>5jaTW4?~@S8X4 zH;+5v>uDA?Rzj%+oc$h4lRiUKr;wAdU3-pV(XAOjxTC*V9vOwsrZ}Ayc+NtpXBST_&4ypR3TDnirF`%p;3@dU+seb! z`o+7ycaU8ldxz2o%wd#Ct&hsbN&osr+W9lv)f9t+A@u{*K555IR^>xM0= zez%nR-4Z}79%o6cO1SP8N55MRJz3^tjGW&seNUEwA)X}>CA9_bcMF)`EpfkF+_*%4 zxAgekQiI6Z5nt>rFn&g^F1IDc@0Jt4TRgzZadyO1nqlm0SoKx5c>Qj%@Y7M+a5jv( z#li0u0dHHJzgv{Qc99FthJBA6s$V-&Uz@bBzMfU>0{FG7{@PLclK24MNMd;7I>^60FHv+1=HQsu#FN8;Dc!_OvpHMpMXwX(pso=H*JEwHkl zso8Ofx^~GwE{BfwEZS<714mG|E`SZ|8MLnPw+_;8-69&F-#WqHIykSk*0bmIx6aIO z-Iy3ye(T(R>zbrm&+3l+)(v?w)C~d{>R$ZTp?ETsh)HV_z2B+#HHow?!Ec?`Z(VZ0 z04-L2wG{c)0%OqG4!^VPYm(=`=W3zwtL1@!J#>S9>F)f}{Q;iU0KIf*e(A~xz(UvM zmk#fj4hxypEK2v{m#)MworWgf9OCcX-S3=}N7|jmK&{Zl?D;A1&eiyxQ^7~>)vp|< zU%5w-Z)d^GxUSryB#uBYoD_NFEEu#8;jf$^Vw_(&H@|XyJI;Pp<%9`4`!#K|C33>q zujt&Bv+^q!MGX_VB9UBYzn*<%sLpy-ztnhi)@zzKhIrO1Du?3AeUS6|m9y|G$AIvx z*H!3UxDAVOUB7V? ze&Z6jGIO?q^ho59$D8HRZx&0xSqA-PDMZXN;TKD)Uo4wkO*uQk$l>3F{AvUcOWZG( zyI(9&ezBM(rAR;gUWxp@a>I26~iZ0c{r*nJASKZ_^pzF@GOHrs~)QhB6wLZ!s- zo2uWpN3C|8MF3SUc~kWJcBmDIvk3lX$eP``Z*f`?ID25a3NI@CeGBvZ*7y5X_xlF7 zioNOheUtI~M#9ip1J7vm&Fl9K!+o>RZEwxrx8&~>Sgh)tEij!z>30gI-zkj0Qx>(2 zDOi4|F!`NAgH_*I0#jN{LGe3h_eGAfL%8{ZgRe6fsdF|!8=c>_KNW3ae%rqMwrPP}bC#>R1_PD4vs~0L zZBKsNq=;ydWYC7>w++Zw5hNg|oaLIf@n|FaZDWya+e-Ylh5fc+7;=^i`gMrhwJiB< ztMJ?Q;J1xHQrX78ZOLCYRgg5=3Q*owK;rhxHj2~FVNCL}MfzoP^vhNVvcuUe=!3U) z2-+_jAi`fZIIr(Kn`(+~n*=O5mQc#l3$1fWI znAleQvO#~@K%6?;{_7ARY!rUkynfjn{IU%=qF29bt$x=)X*%nay7}4kyCzA?qTe+{ zziWROopnARz)Ip>DSQ&I$xp1+`CSA2T~o8_&yX2we7|d6zAkzE*P7h#8kOHQwXd=} z+mz}#TXMDuH3H;!&Bh%VziTai*Gk+t+kD^}h_wt)A_B5x))4%z5%`r7YgLM~%qZO| z2xpm3ETdMnXP4C>VpobI`^1u{v&-oa23LxpUnz`!r4ar~nZsXFdi+Y6@hfFRrL)Q> z9jDcg6tG_@7k)ZQh-Z~Unr);6Xwz08@>T*5A(28z{YG*1D<$hU3aQ^Hn^rYZ5dB6; z{Eb4WO3YcUM^SR&`Hj*hE2$^SnBOR0exqnnmE~*}G>VldZNE{_l7CTr{6^XF8%2hy zw6i^pqT)s=@g$`+y&L7ijp9Ja*?vmZz6y!{LOJytW&MRR=@*J3FeplXq0sn+fpns7WWeu}R>hP5szv^)m72R&tmpO~;&TwYuE3SXG;uX5%-F z#?MMo0l5|{YLy|S!T3#U@m~q5upra45+S-sTGwydgMT>y)q!iVlBOw08}OUPwrKU+ zWYuqzM_1Qk1qHGKnf^8r^V{UiZxb!QO{lDCa(~ePf6=Cwt_4Y*{-SODq8<2U^6HmK zsas;w;CD&i?-DM6{v}#|mta})_PZqQUQ2BJE}`+e-2TRyrC9HnC zzEeuBg-W_6D0QmFwNOP*1ZO$-9B0*P1dft393*ErM-H561zKb;`nA!FGn@x!I0w#f zyv}bN&u<`kdgI~z#_RmXNToB`o?jb@v71=uH(F;msLpO2FS!A9cGKtV#*UFSXRbXD ze*`bSE&_gC>^r;Badt!F>?X+B&4{xb3`sa`rkvXVIk!PUM9!H|po@B67v;`vIGo!| zU^D8>h7K#Pp`O;dgd9gQL$D+$(d*8HDMXfYa;L(2j?{c%FZ;S{z;xS z%=4PZIsc_1qT)<5=-=aC0O!9+jQF>RNY|N2ri(}TZ;+nz-y9+V&O{Pj9OJ(=d*{C{ zzk%AwGm$KQ_-i}=NzZ?2=f5I7Kx%p!iD0yw~ajnNoq7WsxViBuu6-y-%K6lHKG5i0xrDLnht z(fSW0v%s<6G}>np@gt*m_M005>da_$LK`ZAXGW*fC}+-$LccB&@Jn*`Lp%FL&we`Y zWSsq8oc&Cgof-8D^W$*#t1##1;Ow{H?8h~P?93t4HNS&6bI6m`uwpf&em_NzrlxvU zQ|YV*(U1ja3YjKRlNjqvAyHIC)Xed8W)P~Q8*0uZIx~p$?S&d&840e8)_i5OcUFUU zRwH*-1Lmwo%300XXQ-)gR>R;tP4%y04$t&)N3DM`Ep?uXI!`sJInxJ}ksBkl>7w)W z(Rn)PJT?4^shaaN%z0`j1n_xx_)K(Wjp>CCdC)KjQg~*KW!IB?Q8WV3 zD9>kJ#p!fDqv?DG(VR1BL`jM98N@St&S&JTW6tEAc~a)g8PKmgCPA{CIpcZZ$!E;8 zM4y~FL&F&$s|XT7%FdKgHB&q@<9w#Y`Am-U85HL;9##iu2At1qo%>J)F>$60?vvDP zJoiaD_dNZ@_?i*fE7 zVd_j6&kM{|5y)4?8RtF@=e`Sl0?vI|WXwo8n^8NPfdORGnJl0d#uUNWOo+3Y6K69R z&So4iF|(feV4e9u0YN--40=NGdFIn}=7V(T%;$#@`M{j{x}5pifaEz-#dL-ufioWy zJ|Snm8;r;ocINwV=6e97&6z3q44nD2)>ZFk#4@kAjHxGq?46n75ddv+^mS3v=EKsWZi*T5r2lt&0S|E_!p`Lv-FN-1|H4$-R-eb0#zA zOh(I(>6sop)wz9LgmxzL;Y~9!g-8> ztP^7foX2dP$8hvXAC%7giY_{fVLXeWbQXi?EQZ=eOo_9Y1?Mo3KKz{7g@_B)*F)7a z7$IjcN6uin&R`h4(376K$T)Km(*yF%1<*r!{{h9Xht9YVIde&J=0fAlC5-RnWjg2S zIp?M6!Q@N?d3&7K<(wyHr-<{W^tf^6fhp&ul{oXj(?kuB@63dp?`}MK z<9yeG2ZS@Xx&|Fc%sL-nJ9iDvcM8sTP9DlL+v;kljJLo#Z&7vLqNz*%_XS)YyJLlPMbwui17wTMR z3GGa_t`OY0PSLpz(z!0sxo!|qn{%DtxeiQ?Gqt3J(6}z{T!(kAb350eHK4j3=eir` zx)nP*oS7BLbqdaP70z|avzAo7Ma!GB7BXioOLnwpGN2X}tcAu|3yHIq40i@y7r*k z8+gu4PJxh}=~kTSV4Uenoat_p=@gvlvUG$w^Up+R;)kz^UFSK-^Bk=69I5l%rpt4U z&U1^-bA~#qd@(A>}Ao#*V%b5;Nd;7eFhNSp9NVIqoq>t1n$qiNrac;{y2q z%Fmasre_>yiQ^c5sj1c;aemHmhvzsqnZ9)Od=W?H9M^Y_(>uq_eJf7w9Eao_w}J&6z4b>=eQB)xC(FL*mE48vq1KJ$x1pXQkF&MERfDw1f8=G8p)z|&VqK% zvLo+H$YKcTAu>d(^IdaAV7BEb z@GSK^OUGo8{y0l-oTVmAd|9gMc0sxzM};p-{Y=VdY4d!=)%gmk36suO9-Xfo%CYq& zDQFnr`HJBA%HR14nFnj%pkuU6%~Zwij4CW9Oo-4&R0SxxPst(g~0iW64RHW zq>hSbE0fMv2A!=G24E{d&Q@j|`ZCl9_f)MMI9q{mw&FZnNw#d2I_D~K&Q;9l`4ZF= zv95~Sxr&u@l_%#aNZMN^>|Eu;xeA59_89>&3=!-MXX*^s>I~QE3`YqPZtn~i<_u@$ z%a@MTNH`j2I2>m<7H7B-&QnxCQK3}j%T7{6bk0-+&s5r+sql%SlH*K;>`Vo!4KfakX~=Ql8$-ptN#Mb2+HpkHo+ioHcR zzjdA86rA7MOH`g>XTz78o`IS?CGI@M?mUIcd5V)sQ!bpRP&iL1fCIvpnVx7$=t%*1AFwPC25zNK{p3yHwtIB0%x~n998GGQRlWzfWE9$ z-D7lalf-R@XZp@(-)H5oO zGuwXK4|B(OlgwNX^EPQ(*B&&_?*+;NT0mn<4Z)5k6-yTp3{b$(~z9g zTAb5B7&ftUZUT62a^yyeFB1{*IsD28@Z1E)xyg@n6BXwsA(~>EJkL!IoSWPmUtbb> zit*|C%7?%itCA-D znF*j9?3aO}hltGN&6&xaGm|uDCSXb=IWs9cGg*(ZuYugwT0Op!1SIMqg491-}}uIWO5dFDY!Ek&U%4^Gv(c*1||E#fFeC z1*210E|mvy9sk&Gld8)D^yM5V;b0L)=OT~JMGT#b_)*#wsdFv@crIdw!IywtLE?hOJv&EvoTD-xqwP7mJP&Dw_9dGt-VjOWA(+lX5S@n{GU9R` zvgJI43Xd<>P|=1EIS)~C9#VE5GQ)7lfb)>8vyfOSzWjTVn33r$VyEa}YjWg7`QGA#o0J!ByJ@z@8&}a(vx0b_UYw9ArHM`E&;IXbyME;sK4O3r&k>+7}IL|x;oOxuOceo+}>b%48 zyaQ5;L0^J7pHAO4(o^!XW&g{CjRR3q(}o_Dl4?-+C5@dj&0*LlZ;^9}-izSMh0 z;T`RH2m7COB+}t`)`8}%<4Bz^^QeL>WRB`N2d8t6#B+|rtSdO^&N$T0HxBWAspWxP zH|)+gx}0xdIp0`ow;T6tqtn?2BDOE*NZ=W?0q1N(&Dn++QZ{0oZFD%>U{IsTmvYAw zh6ju+fHN7WGnu3_St3RxGjb-AaVEP^!|Tf|&^u@VAUXrEcm@FR48S1Y0nj|xKyzqy;7cV?1bU>n2t2!Zb9PY%0+zFjDrXmIGhlsr zHiu;wMb0jgoL%%dyQqO7X| z%tCn{19To!!{o7|(Rl@-^NKh#FnkH5y5jG=Vvi}}zhx`*&MWfHE3y#y63A2z-hTl4 zRnFK~ISkG#TAWvuIIo~_Uh&|(LdoP(A$L}hc2+?qqtBN(sBa!QMcFxpjB^UMbBYP) z6bQ1AplEVFLF#;BgABeeY4C{v=MxJ|pvvlD!qM3TqO%D+GMaoj<8Nk|2y-@}=4|5b zY(mPyMA_K{jI#-_8(+$ZxWDJ(q}-;o!>{&o*Lf8?LWx zP@PL0IhWvZF2Qy#Vc}e2L64}ON1!>6D2wr=?JDuMYs03MjpBL4i}MJw^N14X5gHUZ z?A1AJR5C`5wkyNit_yn7uWZoHVU5mVmCj*;&S8XU!rIPZOU_|F+@6df;Y+A=h94;$ z*5Vv?BJ9ICtc%Y?JUWY5Jc}rdvHbD`lnslxa~2WjEFukSiI6*spmG)=T9z*&Tf-$OQ4L_E(T5S&FQ8NU>(u6YcB>KvlgIYg)oopo4KZ5W5C(IAbabR!DF z7z3rHyOa(=2`4!=Lb?P#LXg;ymPSFH$cB_O1CbEHLo+~N^ho`@uJ@1g_qpElp7(jK z`?-I?v?km}v^~Kooxv%}xAr>3+OmM2`Z!QU8{`QXe6gh8(TrKIgR$DM6)uU~5YzU)GrkZo

    M*mljUjEE!p+FprF!0f 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 GP;1P$mH0s<7!;{?OA@5{dbqs8C?=l8w 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%0A#K3!WNF-8Zj%47Kua!Wd*mj0*EBL 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

    9U55%iY3x3q}f16|H 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�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

    ?zc^D!kAPi62M8j6+A~ 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 z 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 FAqEDWuO0vZ literal 0 HcmV?d00001 diff --git a/vcom-0.2.5.tar.gz b/vcom-0.2.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c3d87a9ff2549765d35d1618294c512d55e9572d GIT binary patch literal 4427736 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

    &&J2Mj~U3iE2>&saJAT^$|JbGmy{8 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%0Aj zQA|qK6#sT0D8C?(=q+c6&}?}d2>9zyhX4Y@4T8Mt6u@P=5z27(`#XE1bz#pzK|!)J zEWb}*ipa*Eg%MeBUJ4CrsU5lP^oh(5dmO3^kdc=;gfs1xGD_nxrwQ8Bb*IQ|YF_Mp z2-~RgW}p7Lx%%9qiq_yfTNrWA;gLv2AT{|?S08OK1ueaqoX=>Q-ITqzUU5-dMIQbw zI~rE>^OkEb@>28uRduJxp{vrHuM}`F&Za5b z!49i=5R(b%4zBDsFor#|5ZxU`J%gv!LvBdO)|K1 zu4L>wy>1Cnzpj?Uj2iPX{3)MO)J2@a<&>>c4cPU*9AM1Huht2N@R4kaA!Zul-}}L@KsI>Pu}1 z-cpM950xJ$hj&=w+AyW4`Rbh83FYaH(^2-<+xVJ$t{(!H?u@1&HMPn|>J4m0ly3f< zpaOXEM}{2Jj3lW}cy3U!%YRPIk@(lUv>V17y@N)go`5`!iI1qPo{; zsIotGC{UKqaPn^1BD@_@Ha3i&-uS=9iWXD-$a0HvV9L;S{BxUZaHIW5+sg5BT_Ft1 zFrv-|4Ulg73=^r{hnuTI$4zK&CM;-xg^6>Q1uUS=awI0dI7Uj-$RPpv$Ri-V7#yy; z;PL$?^PDc6oVDMv=VLo&nhZA$zemK2$as?(VHmmA-oC=e6m|UwZvkzDSGcz9)v&_0 zgAQfaqDNz%?x27jAVw&FEPEhg?d;)O-Gj^1YOpWw#wqFPpS0+*{94%+cC{7d5_RdG z?S1xX(M&_FZUr}BFpV>8!??r~`hg5FJ`4~`mzq!-3;7sZlH0fV?OfyZc2D7aQG>IB zz&>|Bi`uP5yvkFm4}0n_b*b>%R&g|gXQQk9k9<-rpbIJgVlSn>*-TCYPW$4^BE~Xs zx^HLrlWKB>G?TO*aU^(spLKxg#kwUi{hWV(LmpP*%~!ekymFd}nwr|xYAK3!jvO4{ zzkz1ms>{IOJi?ORzWShm+@5hhy@DI(_GZ9uuLpgUQyWr|+?sLX`>W|xJyzDH9|sdZVqF$^B;5$HG5RKrm}O6~m? z*sZC24K<}%-H>FW`ccZVlVq(XopZJFNFS`CWDOG@6Dm5|j`?vEz`;u8UUZ0%PN;!% zGe3nldxWMc_*jymUeSP}*F_Q7wCrO4k(j6}Q!k*pQ zl{Zwh)SHlX_C4sz=l{{*O&8h(2%4tWf(EavocQ~KThnkE^eu;F>hd_2EBmi!1hR^z zKh6(pMidm5r%3y2;hcGVtPVo$hXhpWJB?uI(I3iwTfa54(n7@wxwOWdjKJX%N%P zU|Cz1+qe8SYJDb>%g!G=iXg|h)eH^;(um?XvL!xG0qXnX2c{hb1k_v5{A<24wc6>M z^EAQH_>^|+b^nryK)4)02|C&b5u$nn0c(UA6Y2}@N-RM)b&%r&XdCWkGwu@VB47CC zpyA^L#|F?FN1<(C7_BGw7!S7|3~1cY%_Cb{?tT2LhLq6x3J1r8^L(Y4y-H2C!BudP z`}pw!=Nh9(GJ95+#jC`EibB8HRNkRZj|W=+|}&*nA4wR2nsWM(Uh2Uq{< z`QDnD($)Z31GX0xFjHf|nw;TLK@ndIsDnz4m@-}~1<9{})eiou)|6`ozm9(tV|5n; z>{+D|%|AAHPr3Ch_dx&H#9hA>4IKE#7p>Y#7-Ig@HBkfpx05V5l3vFP|I<}ER(|yS z^U{!WgpB|3B6k1VsTkkd|NCT#|M|chT8I>BcMn<17k7EJjTO|YYg%G0EX;XC>lt`W z&1Wk2=^vM1e`qF01gXS=#lM9ei|i>WDXs3V4iyF;!j)(+L7dQzHX}!;r`(Dg(nD4w zKL9SYzD3)A<$AJLxr-=)*ZIWfjveHIV!aiHl|9WpMcNMD-0gMIV~eMxq+Q(zCs=*J z^?a;t`~eKKd!gyLC4e%l?Cy&IlBbruY&NPX^tyl9p#NUSqS6C;@9+0ac$&+)RF#67 zo)r8x5zv{(8)KYKRq%1JJ7Yw+C-IzbG%v4e+_z4z$MN zq7HMb4{R1Mj|yg-bqzudlH2P~+IUkR+iuTzTYJ0PN8S1+OmFw78DFA4B^$+-yL zyR$uZn#E)3@|)j{1hYUr-Y&b9l6WD1=QbdC7(Qys3*3x00-7my{alB2W~sY99910a z^>P}yTw19goY3m#?jx3a*yd8{6W6;b_C$=Mh(bqe*V8uRO0$<5g<2J&%-ste-!o61 z-Uh6#u1naNp$3E0%a3zV)at$58V@`=&Wu#Yo;f~0lKQTLy+qK&!CecaoA>YK z_<;8(c01RMvAmiqhHxlYfF&(bH8e~I%YCu|jT6Uq6At8sUx3Donhh*FWwJkI7GG?R zKxy*wC*};;=fwES7ZWYyh#Y?Es7CEtEmg+6f{C?#Nk2##&?E%%i%iOptH;e~tsn~A zIZk^97)A*2-Gs&InR|sA`_+RuY2!ZXKG)m+tz9Yo6o6XA>ewPI5qPtPapOt@#z5OA zlxgl*@jN@A_N+QPAPco(z<$`(8U8N-U3TwAdBFBvsR6#&cq!ur>6Ds!_t&pqi8uSL zXmU7`4L4q50c4=U>G!~teOTRfBz%o-k7J04Lg<<{K@*ANuHbZ7<2KHCVl2N$#S$Mu z(~1&6DXLv^m9PD4k#P}*4l9F2i+!S-UbLIzL2M!Ek^uxA!lbXTqI>#Nr+uvU?4iP! z>QQm{EAbl3r0=S1iq=HRneX`?sPA|N#Ek@e|3zhsPtJsJTm)7+wfrc5dit*6$q59R z0C+Y24~`&Qy6XZb@BI) zpF#>*0AWu=&X1;o<-+CHiHaNjt)LuN?>#;a9%PS@|7Sx3A}C|@8;~6UF5&omFC@5} znwe~2;P9-daJjZj&A}`P5E>_gLE#p7i42BZBEAt{(mlQJDmUqRy6utYdA>5^5At>7 zhw}g0-w%qdXODQ7{0(_8WY#d-Ldqtk;oR!}=9JZNgRtBJ?+?vqcIzRm(cMN2fg_HN z#;}~LjhTSrQc}~uV`KX49Y}2JU}v)5Vusf%0lpONH!02m1f3lX!2jCnSt!4@&ze=< zr)tMuA@c@?N`Q2sRfLHXE*2FVbN)pOTn9%}06{>$zlO7It7wI@4c|fv9l5@`tTY@F z+d13o?f=Zf>suIJ*l_?}nQO-OR2YD+rZg z!+0Ldv9dMKGFru^<4C@qVYm1F5SHF8SIN0waK6r{sdd*aRb+JO<@RjaPgXyF+~|AV z{;V2sdaR=O?q+_kT;;~?pE3(92aifraquqZqf;YeYOAMC0$^7!p|1lB*f<&8I-;Gg znQX_GoGj<+i@Qo+_|iXl@*@TVGPmF}<2mpZ9dm2Ct{4z8wtFD~FOWirNZv-y8}oFv z+bryl{1%Vv3oa|YhGL(FBbR^q5^5LOc?(pdE_e(&0KC_(b)t0_I`}T@vK!3!u+y#-5Gc7Zmg8_6o?XODR#^8Td-g_T70C1tZvIFu> zTDP331mu=Q=2SyNST8mr93VZ0;Fp^vgq4Itxq2rr#C9YAJw(>A+IYbvv`l|`Tf0X&t8qeB;iW>*d`0w0QRy1 zNUh~sN+r*IS1JWxZM)P_vG4X$sVuJO?{A0Riah>A(dNtjc+v*p#)^rgW$vI~t-8|v za_wz1L)Tej?oiW184W1eCX@MxOj!Q7Cie* z>a3~pO-&+z?lc-OR`~LZd6J=Q4#4eAlYP4{)E=sQv^eC=4BhG%_LpXIgrQ~!PMnD; z^VtkI(o?6!XGKm^oX$+*(CWWWE}7#FAZ2RbG2CpAhqq!g6!S&RXaJ9W%V*PGKoUx8bytC7w*>JL|1kMZL!jO+#ekIqij{SJoMx0hj`JdCdmpu z%q?}0s{ba{J+nVoESHpbQKwT~2=k$RLQ%cN?NijN>(r!=UIv}+6`8OlxSeIgUSr@O zw8Sj#x!xVjppBeP+||yPj6GAojiRG=lfY;d87*Y z_gux$yN4Dv??a1v3IahciIIhl%tp}RyWv|G69}AhiD+=+PSJVt+#Ne!!o3B*%~^84 z4cpJmtauLOW>22I<|YhHXCTj7M`S>VS0T;7eUQD^UDnUjA1|(yHeWkjeg7d~ z=`4t_XJiSj(1wmX$?cO9w=&CE-L<8i)=qNks5Wc z;1b(A(EIDC+{Us32Ec#?C-tQmH4(4X!cVgwsSCn$rYtLa7y_|CK1K|D^p==8loJ7F z6jeH8?B>sj9*h3#aMQoOfc%h-0G+jDKJ2%IS2&R1Pxixo{YuWJ@vszHWWdJhw(kdZN^=v3Wz%p>T4e&%Mr0&KUS z$-8%OG#7l-I@{~71uq}hy!zx8Zuzmnt?WCN68Gtq3Sy53!QgwI3LVF*bJ|tds%`kP zHlTK#K4|cCUNg3Qqt+^aBe5xCdhUJ58wUSk#zwb|CAZA|oA|Zs_@~$YqdD^*zd+k5 zAF5;N)iW*~eB4HV>9-lddCSoKx5gRqLlJ?92fQf}P;!mt?;I&EA@n|;;2}0ZM{vX^ z7o|S&62#`$#X(T<8T+MLOm{eCFDL#PDLo)~xVdgV9EW%%KG{4+ea9FgRrfs$w<%AKe1iVVBVJK8{=`8U zkRgjp?hcEfG$%7VH|5vT;)%7~xS;H<%mgzaG>oPf?Ob16YF4y}%vj8qs zRQ+x?E0V|w@5gI7YMBfcq=7t16GOF0>zyME{h{)s)O-!aGvN*nNIX_}MywiuQCDiM zieve_;sBM$;QUKbpJ=scnCDZczTRHSInCV(vA4u^8d3)O-$eumx(GMZG1sqTq2NnT zaWm8-&+}n-og+7@!0U-vd^q2TH)}S=otuO`)P*pom?0Aq{@B>qNiJB=Ie3g+Pqk>x z$7jQx?a*wlfJgS^;w(dF^?8{?_{q{G%uIRSLCI)iXK!b1W%_HxZ(OJ~-smE%*}f}a zzzJD!-0^*&){#yK0Mhk;9y}=zgXe{su|p&htzDaB687`ZiiyM3Ugt@O{eXDZfJ}jhIrsOPuNJ4sobE1=@4qf6Dh}pNnO91T>ZRtfhI(!e4PQ(# zl7zK3cD+VjD4pW;Z56OIe4GIg0m!f`w8i@_(XXoiT8flPmjmt_Lk>r?i{aw(AG8SFHT2m zH$=*G#Pz+c$_qE2UzG-sFcE;kg9iCODyq+z-l7S+@vv`cBb($vZWeN`x{GYqc2^&? za>$;~3;x1H6_fhNGJT8L!Oo1S>uB8OtzV^HAQC5hDMwSyA}%CKDq2H;$5}3v#}F#} zv?^2&x6Zf60vZK!9u#iA&+!DaWu)+a*jXlf91P=$t8G4b{3lh9LBZPHgRwjA3j3RD{LN$&n!^d`@+7;sG+AeZ$*+Jp-6BWQuN1`@LLK zr6rpZjDnXMhF#6$U{_SP8MTLu5sksRbjtca8|&&A3R12-v0;sALk_g!hE4yo;eF$i zxs2`*JDg_V%0qlBy9vm&c$O>sChc>(f}1;906-Mx_8jIl%jxQHfn5Oc>70=fk`7m; zXf!&#D5$1esp=;%Uic~b0wHMgE9K=$xXY1cf$iV5%#9>TLq7LA2Ad(D;?4tRKze)3 zk%62E7W&dFA#p5sF9H4OQ}at%*+y+3aP@BPz+UFa{`D_3`906m8*t$UdE1hyGZ7?y zjOntB(TTMER;HtKHZ)L>eyix&u*R?k4JP7Xk3n&MzPTOE!RPP*LhIs`2YJFmsi*Zj zxz;|g3^JG&%35)UA-OteQ$?-tmgaw$m;Dn;(x7d91#wrDumW|uX{ z1oJku0nbFHIaJh?0!K~TM#R`4d5~zQeN_jxH{WfWoakn2MRD_Jf3tHgAnY=;b0#=q z(Ai(fx)A={3{O6w9N~@|8s!D`(D&%w2ch6GSu3zsIFAynV{ATrW+XO%o-f7wd@A_G z!Iy$y52wU0Ypg?@@dYl37mk<4T~~>?c*FDU)9PEXR{WFkJq_-AugR7dGt?lt{XLlo zwVUbn04G-X_@g`cXnDA}eO_ac{^QybzeB8nMro&0o}`DHbz*_b*5|koGEf+M$(oC> z(lgF$wVG#czYbOcViR4G6B)n#4YLn(E0zoi+uUma4{PF2jLMQ`3X=Mh^G8S0I2)ARhA74RQH;r0{uj zKt2hsnukK_kheA^2_M{cb?n1Eq?h<%l*<@;xj!+iUZqOIws$ENR!3)bvcMMG>*?+V zE^WTd^D_alW1-Y{{&hfh%IPdh_0t71fDT{Ij0Z0Cdu#QSYTh2MCwUu&SK__? z2-EoWxY76I@&(+_%)*&NyT3jjHxuM+Xq^u8yr2NC_~`j5%2wE$@X35gvp+1m3`wO@19Ez5pj#hnRTs|Ky zEw-HSWn4ePgP54cRqMTK7rQOPx&TNIu9aL)tEqUE>%FD`yGmmnk|p4YqQkFy@*T)m z(*=Cat|8JGxKq&{U^iqNS^kH5ugiTf2^f~&dvNRYrfs~sN#h8)2lP+^|EZl5Rm#4v zI-4K2XHc-GzqjSAdnu>Mx`VveJoC+ZFhND~VNfjE;VDQ546<(CkKo!{_SR@0XD$>8H(VUA&k z)?QBghZRK+-GNYN2drl4RBJ)NwCg}B`WO8_obL%t*Su@+-6oh0f0*wmvkyByNuRa| zUF3EK2}X5Ia~N}6OQ>R*u-`lG2(k`&-L+emorX_xW1+Bv)vb0Ty$$JgigFvDgastB zPfIu8l9QV>EO-GrDNWE7Yan}9<7(!lz2UBxIP~K8==#`e19)kp-MGD(sHRXr47UiB z_;A?C1=euXKYnNzmT%o>Eb+lP;=YGwBmU;nd@ImDz-AVOP^&Q(^ zzT=`9O5pJ^4;hYWFp906*{z#deW-=;-S%2++F$!=FkmBw;Io8omvG2CL#4FeBR^_t zJqsh0>OQ6e0ayu{9OHCO4*v^FX(=OW-!!Q~D1ALbvsCT`q{x_6WSgRtG%ywHM3_#o z`jihyUaF%UVJn2V-Zxp99XQ!RPTz0PBrtJ-k!4h}8e ztMT#f!I6~4Wg(b3f|KO!7fBHvjlCK`!fbs;zrSA6IqUm9TwY2IU?#wJ!H|X43=cQw zp~fVNA#k;qeooW*{qj{c%%(V(2FxBYYsnJzYJOVX<~=UiOqJt7I6;HI*bru=23c;ps&(o;y|Go3~8{va8$|mL*MK6@gG8ve7;vV|K zr7DlH>XQzQ>Pn)yuG!tXii>|+o{+3rliqxezly2)wJ{o@Ju;5Ig!J_wSC^2WO~eIVRLthsP0Nt8bB7xsd|3Nn1#P~ z>zC)#xN&Yg_fcgJPd1~}I za59q}wz6pa|DxCap)vF@=>$7tC{ccm_1mD5x^mn8FoDS^Jw#*Suft4ObQGq)92ALy z$GMGjEY+ut|317N%2I*3001ZKyjRe2p)>*DPwGDgG?lgc=4d5nQ>yYv+yAle+@tp3 z1fYI4@BXsTGAVnS2gJ(#$wXd*V)_hhe1Dg+7uU6d#`R|-(Q_YvxX@tE6QoBi|A>i zieBJvOs}J}(JaW>5QcmEU}@i{fE1OKPTHJc8^=?H>gQjzBRVFy$<_D?7u@2oie39} zW(j=$40DJE?+}WN%^doqdA5& zU9JweT5OP-^HHK;Hjl~51IJdG_}ots_UeY95bJjoOeM;=!JQx6%$_~te1|#E1u#0i*Pd_Di|%R(+E$p-*9lcx#Xh!2j;ok@)kSl*gNb`3j;g^ z^~aA@T*z6-p4#}(Cut_-7UpI$G=B?e6usIhue8*uY8Lk5cBdnFL`NdM zEfUZ{@xkE3^XHe{lZ($j8JNZM@LDu+kA_q?V=dilcU%Oe-Iky) z)gKi&@P%b>`-neAv%v}IwMcd>yIlU~op6=k@+UAZ#fFDJAoyaQ;!l5l$&*efs`WuLt#VVM1;bt=$xK5ta!oFn} z`3P>RfDPAWpwamkrvb0B3w1d`JYK9%xY~D5Mi+^2!K&dGrvtN)x``YH@CvKo-&rLS z02Gm^Qt|WCa@k|3hU9g-@A&btok^FM0z<+kWbeyF4B~v|$&^=h8kb1Mqay)&V7Ceb zr}68A8TaD*T{mtnareo+y5AvNO52pkj0Ud44d05mzCu@Ov@_y5F{O`Rg+!e%l%Stf7|0(?+E`q?=uF*h(ZfdGZ2dRgle+l(jAUDj~myu$$U5kVw=cAav5}gkE9d29+0} zp%vpx-(0lsYmOe*eb7j_sJ5FT*!&K{4G7~RGzT)a@>w||r3oucV{)QK$(H|0~ixM>iL8C!O& z({F)K=mL4$rNfN_SSKe1e}|DR=Epkk`9+iyMPjXNr8WGI_pu~;Oo^Z?r_qPieF_NY zZlvEI%hbvXmi;l2@DPW_cjx+#i5~-@YSQH!<+di9Ix%~H6@lmZrQt;wGErtQy{OBk z`Y=)>(F=BZb^s^4`wk$J;hEQ;^IrbiC|`!SQEJSV7{MudTuY$Bez6+&mLt6h6W<_ zC#AVv=9-rl_$!$WB~(?~Qy*wMeXl0G`gXVPskx9;dp3+U>SLZx{1xt3z-)oIWYK-w zfG)#`m#a#BxSKioIvVFQlIF@UeL=hQZ|hJju4g=^@K!@T_Hmz`{X1RSvx$i>DcBGZx6BP!e~)p01;S!Cxslp; zmg$yDE%5^tyRS3xcrH9rWwb$BzBdsLzSX!{k+8U)z%7`|h)_Xl>jdE0%EEawFP!6(iGJ2q+y>=d!|=K zi(uB{#~rb-A>j}i2iLc4>xiOVb_W-Nyglbp3n3Roktc%L7bdWqXHHX#ClES)cgMGf zhVti>qgn+z%(aK}(r4I*HGZd?b@y32B#1%eTc&gcTVR9jiO;S#?%z|rzK{~$cjU{m z+Z{M41n!{)&-Qk}%3YREPh)@2^{w#|!){V*ez)$v&_Yei z#Yv@_a(8#`BdVeR>Ql-wLGm-q*KbMu{Lc8A`H3>xr9Sj!zD>Q{+vxW=^cvzEu4RV6 zvkxcr_76=bsbHDHb}bXvI#FIs*Jz05OM1ouQKG1&R+Q9Eezpixu7LD`9v;c!J3I1_ z()#N8XR!e~emT~#@ygQ|XE7vMKJ{u2I(NlN2F6z0@1lB1d|Tg&<~V!YO<0anqHeB* zB2>?X%r-iM(-n48DM^v`vnR`|SUFNgdvooowSi~lTnIa8*?#6kjm-NOjm^%w=nG4aH27PWB~g8;3{yQjkpfkKOjHf6g;Aa zT~Tt@bL~XxgxgftN;{E3N=Ij^`UzZ>WNY2(BqEWm!OQ0y9yZWo>PLF_FC~#pC$H+K z_E`yCLQyOjtTzfn^NS0W#T-k%ta_1%w_9&h1K^X)rTx>ZfNN{GE@g1AUwX|3m-q-o z{{}zg6zO7gLMMD0AFQ4ABW-bGb(02O6y9G1ey=Yedj`*7WRjN^I?PVhWK+1%xM1kW z(AT*rEY}-Rx3gn`j=fYj{q*4uY`ssP+sX-z$?9 z+UdN`uI`k>6FFEU;C$alDk>{Z?Vij9`KUtcsQU{l*6MxP46117t@w~%+IYI`6x`c< zx%=R$WSjm`r=g+4J8&*|C8xcwEMG*B8>+6JN19sOdl^1Kjhn&%i)A9)O!7*|d;{*E z)#Sm)7-yD4jxtXid$y*zznzK**; zuB+*$7aexUUA#>Yfn%@c<8^&1pM@wLNrFEYF}r#_pIA^I%;aKZwpOh%>GhG_iSP#n zITkr7lGI3(G<=0uC*3(gbb1XRHibb5X%L8R<8Ely(A1Hz7M_OMx8pdzlx79QLj2dX7xy zT^8&VEM!8F6+V#njgS`0`VijTy0pzT;(AM%y}T&oxot$f3Y4w^KxL$^jeWY0MsCpn z_HOKK&FX4OsmI-DEl5V5LA$AyRJ2T%{SMy#l!RhEc;kU2|Ag+sbxBOj_V%!*V8Tt^ zjQwbl@A~c`QQkc>;%{@eTxUyD2SNp*1N^}=5g(%N(C4YuBNbINa*&o;?$LrjYdvwi zChTIvDYqGaX9aU^9<*2q)FKtn3B#g**_M)+wJ#*s?cY<{JGsb7fpd+ETjb5Wv#2Df zH#T>uR8UlEUAgkhGP{iTQ_i44hp2g1-ldT-R7`n%)uGF5cg(pa76(vM+Nj=4l+=`r zDEQ#B_JG9mwo_4HndyCH5{-68G?PlxX7iD}?z{c)z!sw~)6b=UcN^0(Sl^Xv7QCo? zhI_ulyc`Gif(^lGoy@2rHCld5Tt|Mmxow_9uUj$*O&_*0 zVeeJ9(bDHJq&DAQ=e<0_%nq6KsQ6{mPb!X)g<)^!5K|B!>ANOFFbT}FD=>Bl-C`-+X&h(zim~S1$L06^NweP}Ykl7GiG86;{>q!U~ zT^3g70tYmOox(qwI(|!9z*E%Ho=@6P%`Ljlv-ubTE~`$hcyrla=os2$UGpKsmvuAj zvpvLKp*8Tsf%eiFe!PYQ|9)C}<_B_=`-)&^@%MQT_^kO+e+f00B1dWixXVlXDA}K} z!Z2o^Tq<6z>{)tMnBFb~3$tMB8@e03tD4r6ht=PeO)5^B_Fv9dUM)uV&HLPZ=_O_% zQw`(4&7xU;ONi9a5HRIAc1F)9IhJb?Fw4{0+2H?Y7C=W{H9thD{%mqNCbyv^U#YeV z!^MUjVrS*##dwjcp%Beg98N+>LZx~;hGKq%qPDrkfE4DUGLB=3vfd)tf}n~a<94T zr_F@D>jIfg^ln+5i%6ag+9h~rqC$>TTNfVFTwU4;xoh}7+dkabS~GShfzNHL2>>&W zn>2K|j$mlJCbiEpa5vw)-`U8kzHH$XC5=^SGIC-4w0tolT|sbTMZw1>44-4^mu#Bx z5pVW-YoPN0&ciZCW-YIb%aN^sygT|9Pyl^FCjr^2mC6P?hRGH)^`p0ii`4mw0~_J znemx0;H;x5!m_sN=2BD0ul(u?-WGH$Tp&76<`SmX?yFWx-l~{Xn=R4WL4sqc0o*BW z)`+p1&UUM}>PkkjFni(QwOQrWtdQlOwdt%ZviC9|@urT&@Ji{);IOJo(c*l*<{x+8 zrYNE^)P`=j4_+%kU^UKA2ZbM8O*R(U)-ge2FAvnKt9yk95@W5$Z<}Fd!VbbYLK2br zRQVOwL&(7v8Zm~ZR~Wve;(=x-z}q<6Ugf=NsQ6hpI@5@YOhLsdpVCASnK>9-&2CXV zwSeN0TTn?811>1IJ@HH)$vMhE(BM1UwSis38mdT9o5&ZMUr-;*C3vd&=_H;vY6^~H-hqiR zS(G>e>_o7KtHE+f831f>#)^CjGjHgj z^tZOjTBnbHoBwBHW&Zcta>_pXsjvQtq~ZXqoT5M!s_*UW&uu4v<(Zux+fCP_44Rc+ z^ZIIG;9-!6b4A3PRNfw?A$2?57)E$LZk(*th*cikI4)218RVX@{aj2^bjPBVQH)DR zZX%jIL_HREgj{8Qc;S3eyqwK79*@Ab=G`=3ofuniU6Wq1f}hnVNu{1h_OP5^JQa71 zp}VgM^DACJCk#}}zG~LX7MNJwc5cZjD`sC3z=W;?f?2ns!A`^cKBRyg0Pb6UZi8}; zfjnc@Ksjb&yJaqetK=eg%ClCy89I#ru>KKA_}u{6aaw1_Lqx!kgWV=6<>(tfcCreV zN`iPHSvzwH>cLyQlm_}gm@4W?%my1AF*aE4jUWy?k*_jK*~81+ib(wj46;!sj;Z&W z6;plgek|QDb|ZDodC(?niF#ioLIC$ZW^G)@|3xd#RYt8rTFW#4$Hqyi0I2X7&Vi7c zNQ!2mh$4a(*;YU{&%(U3s_m@(w)DOZ0%q@T@7CfCAf-MZ(~^Mct0WHaU!68>rW%Ke z?dJp7Gpbt{+ngic)j?sd?t!(npgJAiEYbN_h#FeN5a&HiV)s8-0oa1N8F_^k9L(P;ukAmgZ6?>9+n3nDWGTIi#rFWUP z{5uCzwqk$YnbcD!Q{Go?X!?}=ixl748(DGd@m;()YkCX0S{;`B5r+x>zO8!=cfGya zO}^K-JZLo;S1Wot(EWMkQIYiMp#+3lNm-K)z+AT*cQ$OSgmrSj3B~2bKW`L|g~^46e5MU>bX-0m z>qM?~{Nz@>dT{~e#%0mf=l2(ar>0>O@-05ht4y`7zU9$cYbOyGz7|$zb!}H`ag~Y8RvlCa7CO=wnWPZ$EXSSTM)X0GFdVr-)uC1yb zTpj*Yk^;+#Z>}}$Z(=1^RcA)X)t$P;_RLPIMH@xmtas8^_&7O>=1fvnZkY_Ffcu5n zks_mlqeymsO|?4@y#BNE7t{HDt84JG+rj+wX7c+#^UNX@EQ~FZS#_*NvYL}=#BrQw z1?sVwE}Jv!7aA8y#YHdir&rmh*s$kK9O?Z#zfu6;3W%*A)y-!0RFd)n6|t}3C$N|j zccs)>O$7H|+lb0RKcG*u_bn_{Fk}exC(q)kX+RX^KN89E%Q^)jL<2gqZkMZ|=Gc$U zDgpjq$O(~1oay$|^vu6XIPj1Pup zII6hk*r`-DUZ~lg_^1WD!mx)pDmfWd^7%NWRMGQ|WHu#R(H^8V^4%5zgmUM;{Bj+L zc6A=)KlwHJb17>wei9x!`q6kMjB76FlARJZLn$sFd&O`Lm`kf$_Dzf_A72GjETa@K zTNDW(IdM2DWiv|ov7#`uxpf-FiwTM&GaGkqolFJCojVQ@-9yC2e$;m*!uAr-7w8}a zGtR1!>nm$%)CBkzPSDftuDivv zmwF`2>Tc`YRrCQr&QpK*-M;SbWQPWSo8ph+*8U`vM5XsR6no}-fF3sDtz@`L5t|H}OG1{&F$+41N^0_XcrAVWbKpZyE7m^f-VsETDnR&P3T zf8BrBFiKS%?bQb$w`Xx)ORx0Z<`)6+z9kna$z^R=@L&cdm85ya_TrJ#gGb8=4eJ9CwBYb0Xrn^m*2h^~yv zKak$ESmYl-a9VqB;#lcKq}>_hpkrd?|43T|#F=3}vstG}0XNs8$l}c%>%VF?MgV6m znfWD>x`j9Eq`1dFYzjV0D7wuBxXNuF_L43`T=*i77VVU>hC)s)y|;>2xVaN|xg1mRB#1+j<%*gwp^eD4qqCo3K8@~OHFtuA-k&o$BK8-nb1IuMszcsAz? z(p0@gA6l7r(uG5Cbm>iH?@01|W{ zSs*k>-x^bi$QYUqG0g|CSLH~K7sw{`@S+(&mTGXO;WRzp{}3sn$(lJ@ z8g|HE>_P~wD3Y%X9!}LEfqm3@C_S*tsvyNpEU(r9dW99jW_s;`%T3Xq&8a{`Ej~&a z5hN36Nuqvw+P^*FKTztG&SE$xkT~6N*GN-5IW?h<&h%hEULCBAC^3PZBFVFL z!&Q5RQ;8 zwso|1Vt~y&AYN6r@&+jeS9~(qs-JnTLaefUeH5=8#-oGMz$|#EZT)h46>O1`lpCI^ zI$}x)>|MgHdNfunHGpXcS9-BcJ|=?PMhjfbK9D@RCWr4gVLOztkNljqTzO@M5^ieb zmB!k2Q(jY7V4E}tPC|YMX~x}6#afSg$$VI(z|#FVeiG^*dli{HM+#*>k~?h~NZv#M z%g9=nj5pdWX3i{)7NzhQOwu)a!So86;m<|6{};dGtjdfEh?4VZpp#~N=gowT=q#RDQlV+%SuSjWf;nfz^B=DO zC94F#jEA|vRI^C^=DD%XgZI)UQxY=<6fm3#asT7F0$X~P;yFvDdKW{2k?UI<*=A4D z=M63YPj4v-yk#;z{(f>md~BjaVkpvoF4MtO?j7@gzO3S_fdyA{y=#xtriy05(P8Tt=Cf7p?mGqeNEb-9E)#1iSyZ%X1z$XQ*H^c5PxH<3`IQPW=9$mW z_6ON+8)5UKIJ3+m-Le>a;~3nIP~pb)qmAr_aU=KJdFh*@GN}9BbOy^?$`3}rhxQs`LC(r6+SMTAe@$e(b%gX91|Rxh2tn~s z(9!FkS9FhX5?<$NXhTK1gYqpme;pjAdt@X3$Pk2nolWyjao;|D2i%B6yL|e9ot@qz z_uU&*^_z|)xat4&7Do|4`tz-|iub-mDWqQ*9N;Z#rmxTsH~Ggy@}EnN&M9n@NVJ31`y}0TIYp3Q#HyH|4-wC~k;rCYOzy58Wi_3o?P8!& zVUf>QAJRAD7|`kSd8P|UR^chiyw6J)^kk{BN&4c&8;wnnJ8hzwNv(Z9wTTVf+nh6n zC}iqj@*6<}&JwYD@lY5}%C_p;h3O} z515y{@2o4*Ywr9;`qb7*8SqbQSEtf^bLkuRHPj-{9k@54a7Yq}8QZtN=~`atsNvX7Qf+v=BC_OmQP+sG^P)Bg9o%M>g3hLi;iAKISDd9x^kHwArAME{iRFhfzKMK!`k1`fy z90gRGjvxX8(xt|RhzN-EuF?rb2q8d#sHiANk=~KsK{^2fA_7t)H9$y0O(20p2uXwx za)LU~GiRRP`knK>f1LNb&O5G^wIba2zV^QMRX(3e80Uben@X~u;I9}1J@_qv#Jgt)eci8tDo29n8sLLsO`l{jIx@Mi~&svEd_C$UIl0rM7}-{Cc5%| z-FPso-8wd119tJkkaQg)zE(8R48_q=X!z1k-jH;;dN5cST@Nm-9YQr`3a)O;|2^+` z4v~4^>G|W`&>e!haUEwk##GHXp*(0;uXElw}8% zv($F-$-*~?hoZVg5&g97RzIlWgV7DmEwwm^Ros}k%s{Z#dyJ9p+|{`J%v5-vY?)hf z@ZUqT;=piL7>jCtUCHTwu4u{ICL2ckRz(t}*Zf&kq;OMyjA?MF4?HWoWzdUSMA0lQ zzHk40JJ9`h_T52TT%Nj&L0lP#C7=}?B+}AyS?M&1Xahr( zHaARB|1P=xU;a{#yFF{y6~TAoIFj>icm{0pom!}3y2pMdH~R+glxgW0@=evpZpA0I zfTun?p5i{BFZ5ZT+PLWI>YFcGQkQ#Mp&dPXAD4Kl$HYax*Y(l`nSu5x5T#$roa2TX zHkrJuq^bKEoUHjX)+;W5XTHW6xd%<&f}r>DLqDR)Pd_QQs%gUWjK6))=yHv@x*NRk zll~pOyI{|XjmW;u*?}&rW>WrEP-bsFaoQ@KJvBNV_PkHS=z=csIDg?!5FIh?f9b}_ z%Y#gvn z!r!$LdT_Po9QB+?Ig0b~{<6&x6wyMmh28-h2+*CS&W{;B*tHAVDK&wsp=8&Yp5e$T z$nG|x8QS-g>dB~}?H9-Tc9|;EsmAWSD(6*ih5g=H?jLUl*EGh!E@rf`N1kjuqs{qH z=Ynnh);?w7>8)UBdduIT!z_P?%=3ZFUY&jjDdK_V;(bL|;#*POd%A%I&N8Zy;V+T) zUZ`2}98mzJJ@-Uwdy^-5CH(cBwaXc0HGS?J`zZCcDcGZA<~mn zb#=9GJnzamE0a$)W|q-~4q16{i7%0j-<9h$$vsR3)qJ;F-_>tes=Q+{FgAQBFEZAng_BpgpHSs8JcfPaH z7%>G=v}Yi;LKMvQ|4l7BHFd?Yfh$S-(&R7c9=(|-xSBGMlkp3pasEnKk7c{KHAncs zT7fl>3Y@YMVP#88)^2tRcwNYCz!^MS17ox3s#scAb9*YVsQ#f&;hs}Dv&Xp(DbB4R zX^Z1-xAm7x&xr7-s;d>}Ht)d|;8OG*&8?Nf37KPmo66;?`r_Cva-*5s=o7($8wWVH zKPmQR57MyGh4itiaJiV!gi0O2ZSV1ulnRY}hMBOt5pJjEG=@P=b7r)x)E6it4FmkM z2C4gCY`6cmL$xqIUU|I{Yn({z*fu8q??A{V;I&ZZ-|u;RnCJPx-+wqQ^grllw&^G2 zV}$t1yo}n+2$W`@*wB#C`>N_jfWPBdn@@sks*_=(I_|_K#jcyrmv7kR9JmvT4fg!_ z_?D(G(#iMHB_b9r?v859OQUu1q_My+G>v~M&xcW)p8gVCKIGy|aR0a@3%PRhZzI36 zK1)re%v5M;J{(w!J!8+>Mdi^Zddg0S2)(tgI(3#Sd^(5w^k`~Efn z|CttEdFFP2MP>`L;Z-x|!%d&6mqpu+=5gzv%6toJyKEb$2;Ftp-0Xo1Wf)QO4T6Vq z5&l?*Lxs{GtE=M$Iz zDzDjXMEfB9HrL;-z9NpF9EnD1YFOrUgl=!3xtqx&ImFE0M_1*3*=gNOF7lcf&Ikrm z_$oIdB!&6|^{xGv8Wg4fzEgxJ9P{HbjQmV9e;pe(TwHw)s&d-e$f%%{csekssn=D} z!j`e_pB&TJBHD`?)P~@Ks>wSn9sQxDDE_L^XTvN}T^^0CO8mtE*GqIBhFy7!m$0mE z5UH~(h)#(-{Ti_q5t^oaR$uPT*^P}y@p*Y+xBDgi7G1NFs)j!6vF)bs<9@Q|*9^ru z7SLar-+dfolaXm+XH>8NFRFVuXrM_YUQ1_T+02U5a+kGx3{NbNR++7A_v?JZp^N}Q zK)$~Niy}6Mbo4fHhA1GuU&ZYT&db-|*TmUBD+@{kN!xuU!hz=(04o!9j4b_rp%FZzb;?u z(g}B4ek_Xd#igrdSvxCmdCRI`Kl}XZ~(llOr59KZf;*vNOar+oLd=#-`(7Jm?gZ3dR}N)&~#DAihk}d_mxb zDO4v$d*P-ZN|E&I zRPlb7liFq`qx+s~7c^7nAkq;jFt4Exo6zROKYIa=6wocp1Y|@WfGg_Cul1uGm&4%c zX^BX@C)c=BdHd6SA%0U|9S2$dMWzF5s3S@QggZ-yLwJH1Cqc(R^z~rO)|Wd@tAmXZ zEy33!g2Z$zGTEI7ekrv-EbfI=ZziPM*EaEZx3=HOZrieceqc+o!mzb6BO!On-kNg8 zQ$BU`^QeeBGUpe>`kd984ZU1r#@5uztV94tZ73}z)!py)uh^NF*ke1Z{5Xlj5V*+S z*68}OS}e10X0t|XCm4SFc7H`>f%jC^&WFC6Og0S=X<}*Wx#t4j%P3gN`2Ayk*YTmX z9l;uIckI*Uu8;gKrkj{J9t53`OqYxAp(l%uPfV<=Bm?R#KVBT?cL1>Zu9Z>q4iu%t z*oQbg8CR2!;R8m zbQb=;BX7@2b2xO0X?~AgT9t$Nq4G*0wK(X|?$+}}HPgEf!Pws39I+MGbsnz7kn*_ur1A3u_d10R%n#h39OE%zjFjM>=(#6EY#4;1) z6Lbo87jF=S95-=k$rdGFMtP&Mt?&vtq>wKZ@$vQ&d#1W2vlTrmqix!+#Ep z@hc~ro2;~Fmp4q|aFn7yh{n$+TC}tEZt&YveJlf=@~T}9z0b__=IqZkj z^4?x=4XZY#Eqgv?{tbmZ?yf7Ir{ZAEW)${<$|1_{_rVp0w_l%s{o1>Z?H#Ig^*~q$ zG5B$N^7-hMDyX->=xT;pIUx6(j^XXNAjZorj$!eOb)oppDKqH>J0H3u-Tw}A>JXeX zR3v)yQ%8rtxsDE(CS$q&w1Q$cp4P4vn0lb-yt3Nv_8^y4T#~XEMppL__r`d_@WHrz zds`KgN*S6utI{HV_&&~fKVa>{Duu&EY_8Wt^QOgMFgB;7z+iBasHv%`3N(wlpYiuJ zALZkrTQn{}zaXj6)IqxXv(`34Z?ryiRI9)nQ2Sfm34I)^OSZW~D`=dCWvA=l3W0g{D{G z3@5%)PB;-JR~|aL>2_(TbI|DLP&*D;%H}nMID-rEjFkaKUS*|0+~R#d*W|6gP4j*Q z#}=zv;kS%?3VKI7>pM>JyNGj(B$RXFBvRGR$S1WGF(al69AVUnis_CtOZOzCW|pOV z`i-`7Ebpg1{X-H(omN$IM>aT8RLt=(sKq_ReSK2Azps|HX+9jQ zaw!kBXzwp&Q>$bro(+faPAT2e#eAT#T-rzHd94#cxmV=gbevWxjky-aL1HV`4ASTp z+8TkS-?g&KJEucEA;4Rj@bOm!ZG(F|sF!a|H6^cEEnalxigQkBsdVI&I*DcR1>+ob zGU1P~jd{D=09@e|5;jNH^7;lxB7kYf0%D zWFU$x?aNIJyq>tbyQ9Hge+ve;UVQ!>Fq+!EPXRXloIbwNJ9v6I%lgIgT#IaC$Nfv$ z{c8UAI%Pt7XYAD3a?kg(O;&?15)#PJdD{wHP^)(DUJSefRY$d_TTv;J-^ZNfNBVyA z(goUTrn45d4II{`qyyF8Kr+loH?VHDs!s1XSf-zY4}mJ=`j@G-_bbS)KIKQ9mfVM) z)^9VIz*Qy9zfJTp^(E#|s+b!cb!v~fY0LNw8hUJ=PXZZ%tL~zwU~y zmOdaYT~#gl@b8C0j}@l#|Et3L)9LH~br|y4U+4dUpAja94}SkTBrTzF@37t0=b6gN z5~C3sKluJ%C~4@yALm=Mzxa+$mIMWDpTqmxU2Qus*i^Sq;Xi@$QBLmn)xBLW2?Nto z^b$^v>uY7%`TF>q20FnbZb#NrXN3pt^f>=940Ql#{lpz2P0gf}7$}c>qWq!8lYFX)iB)cShDXI@>rEJQ2gVmNJ8Uh9tzrs;-}5U?KcBy z_^t`1`D{t!{dFx%4&YSvolFzC@&75+)&1*x-RIHIr>CKBwOcsbjoe|>A6OvlysPVV zz-i6NYx*rdO@3YU#Tx=Fj)PaJ@x& z62vAMZhqkMwxG2;&4>kUM2CCg=jRtM^5cHuETNdQ5^i#8sXbyd{Crgb+^U5S`YX?` zV@yMYS9N4VURYjGSJARJk5-XoB)+b@jae>nwZRx z8!bE(Q{-1i(7@!AbDn(iJj7vKF2WObK>I)SFW2MU(FWhXect`!TC+tR!&#`#I%mGB zs&z2;ZH-)B5Dld;DpDIf&Ja?c?~LEkkCdBeGM}` zMxAOt@O)*QE6X^g%09lwi>PUv);5xhQIMIE>_!jT9yD6#BeYo}@_XU`@utC!=pUP@ z){-L6{Akqj8hGjCBE{DJap0-fZ;d zov}}$*9WQ>4%p_KyR^G_v7uzPB5eF2h)FL&mFd_(K+q+;Qd-LnFmmfqq+#Qfl~o?( zPR0S+t@_L6W=4gyQ|Try@@`jd0|EmBl-$a>*z{*d4upyJjt*XjWvsiFQAx#&9*0J( zIFAY>5~Kr)0it)0@Fw#0Bm2!cT8KCr`L3_SjuHcyd6;?~tY2^DjehG8*uyJwtZa-N zGQd!ul)VdUr9RMSQyt6}GAdLVn*jUJa&(cMcPP)-psnR3pX6nPwtcFDSGwQx8Jkea z2rbK$s+c6J%KtFQcl>__w?*HH%G&+Phh(iw8yd{KVYDZ9+h3(4sdGO+X?B`V#M7Ow z%ie4JbQ#oATxZb;fVBHN3n^zaM|Hg2SAZfCl67tG$2c>G7$ClRI6g&Nz>F9v!bdXE zePt@sQX8|}Ki*%r)o$O<+tiN*_uMr=Pwr*WHb=Myme%S(KkX-}^J4 zeH!lA$PP<1HT4&OcHzg(_9wlsZ&6v@M^B#3>u~iF z;pD@;gJ9W^FWyl?0dE3P&MN%owrauUSer}Cj0F{1*6k7g{`Q6oj^tCx9$NnXkM7>{ zd%Bm9Hn&E$2pRvW-?&QrX)Pwk)(*q|VE+d6#L*db z98 z6xG$r!ZwF|a0+snv%zSs90HxK7j??KTq!T;8OzWN;3bkADh)b5yI2?Yx}qMr=jOu)~wL?&d2M*wTseE0Aq8sK_`y@Lc}54 zbpquPHz2~(d9ul{Jn*UXdU17Q)B5`9FB2M^q_OMqI%yDd-@xBO&-zm89ep*F-87Rm zY?*;bDr`HT{|Y#ysky-Nb_Py=dgbd^47)gXuCgUVNHBrp578wR731ND35r0Qzo_a@ zuyl9gmBa0quT>h4|M8HWjbI*)DeYrl-qm%MUqLVq97HhAzdRFxP+6V4i)toLA8x5^ zt|1a7mB+GqpYy&mDq#GP`BTn|6Tkj8BGnG~<@$@%&E7lD7^J`r4G>wAF+<6KQtoCU zGd}e%R_2bHxqIn$6?E~fNl=}a7gp?1P#Yt+S6krplpB#DTrrEpX_p>L1dpM5RdBEx zw3Q!vL0Y!fm5a$`Nh>*Z-+ORXspxr^Hs9JM@mBUI@K-ud-IVNXU1Hbah{M+TS=`W( z#0HmeHPQNb(XBuxaU8lU*?wB;iZ`y&Sb(12_-X6kSoLxIuirh}(sf;=U#XSx8wia; znbiin(lHlc(0)yVQ!L^ikw>&ZJjYbXu%}`ESB{*648@i(uf0Auhr!66ARG73BC6(c?*1Qt8EM2#Rbhy zSNm5z=zWpMx8_x1>$moq3S5J&JkCkmC596PvmLQ!zE-YN=+S;+lfY1Wt`Rsfv!T@I zaTN^FGr546ydKo;73t4>c7mHSfu0ebsZQ6v+@!==)sS`lr$2%PS4HyKTJ(rPIj>WJ zuk4!FI@Cz+eJnZ9RbkMl8V)4;Cvxenv9zt`JLrGS02>kRmyxToSt@WOs`(g;Y##0&cXo_^=h z;X{dKk!A8cPH5JS{XkkJTDI+~&oQ|;(fDC~SuE|D%qflA=@3t2y9aH-nh0M0Q+Z=w zl_O$aY8nwr-qOhXpySour8S-p<2OHzHxdVX;~nKsZVn7CC^j)4-y8>jDRz3_qSI0t zwBEo~ClQi<+whr144&Y&`=Z`IM3(-gvo+gq@MXW_qY7cv;BukL?nW+Oxozn}Pnlwq zH4NU8N)+sLytMqZElj#$D$tl( zEjpI!d&C8Sm!0LvHQZ8(po>*GqvNjHP6bxU4OhdOX|>ahsv*G0tiM>$t25u|WJUot zLqiv1tPZ@Ati^{8X>DCvShDRmqASgj7&Iaanc7+JbyI~#n$csaG2B0|+Ye^s9%H@e z^?RsfY0hsR)v|pQBfqW2AqpHmqu5;71-poHBG|ZkK~rYHqx(@7n^PRW!~;UpZE=yB z<@&fv-t>uL7{R#g5|iVnxmV8(t~os4+Mv=az_0T^xgxec_k*)~TrXMCBqXGUUoV|Y zvw(Zj(?;73gY?)T^WaF{7>5tJCyw)tFQ=si!FCpE8x_|}R0frrPGS5EVxA}?-+&fl zvogO1f+r3476c`7+s8&sCsq!(gE`Ww7P zYDIRg>rhE{D_`GtT-4N7uSf>(UtT_!fGP(6k zLsMgkNG#ph@D-A}c-PFUL76gL*b6EIQrj?mJ#1D#Pn`o>#ul(~h?9|f`$w&L6M6fF z28W;4>uv57QCz#i0m`L?q^x%Py`Z`6x0>_r{aw!Xf4YCE?klu9+*Z}HnZD9O`;Zw^ zs?#E~!Jr$v1*VQDaCnzQ{E6Rx^I(7)M4^K#n@)!n*)gU;^W81uWg#ls&z|*+m+HHQ|-9KVR?T)GWlsp>tCsV|KVl9tImJF?x@ax)yp1t9{aCu>)A*D4EN7) z|3ik$_|t3e8}90^H?yeT18aQ|hY*^6?~Y6ThXA(LA_yR_^O)AtfaY2R)AEwX}3GU(=g10nAL({mT6 zS?2k@ZiNbmQtIYHac560zNwi}GM+e3SMc`fIK{|qHPXTHZ77x+76PfxEH z;^b6E;-rp~W$H$aykWgmU#123=Sv55dx>KOMWSx#3GQu&K}m7*O+rsb7QCrp{5*_R z-P#(GkPMleD#-Bp&zgMxg!BW0J$g@utCbngKZ>h0on~H`%q}skZ2mCi^iz~CCZ$?F zbw*4VV8|Tm9nUzGGOECjYM9ZdPMWw)xi0_}&?rPnwRQ zYsY^t{o(~1GEIE~h=2V4C)%pg-MBgz#?iq{T4cP`Hr2rZX=7tur%3*h7=C(m(d;|b zsOUg~}+H7L(wh@gsyEO!&ZuFHSreEXMQ;ei3Sdt%D+&)Dn8 z)1^YTey`YejO&u)M{Ji)A5|-wkW)V*QgXCY$I7FB3T|tU^{q9VV$h46i&73BSNaKSE^CPX7D+~NY&C{mLpn!n5g z7YQQ8=X8#`5f_n44n#;0ehF3rO16`4PE82BUv<8XnKn^wV+WK@w(+SLQf2(2-E;m^ zf4{Yr?vEk16rO7HNYIy#dwwl?2Cm^1rn>?kez&1H|5L(s2P8wU?H zOcQv2yHNG`iZ*1m{Byn|Yh$36E`>FyY4B|LRbB^Nhd2Zd@Qu)h;dfqWIuvBUlpM%g$y)jz_Ul7cntal`ShWr;d!X>redtd!@A(?20Co$0WvX-vI03LYyCRpW#Yn zx@_&~PE4mQG6rUC+rp@x^tyEG>eaJ{hzb^&&6^`GB8UPv<2KLthAu0l{oJ5 z?j9OE3|z=|HMvk*jhYZfW@t{5rh@{ZB)IwcVh{>z#%x7|j2C)x)w`ju%2mJG?m0|j zZ+$+&$u~ivJLp4)V`?VJPSmKhx!Y?pT8{wOPMFcqBxz)K4C;qe zw&;p&_0-|1Y@joZMhc^keR|n5tx-> z`_+1^crWXKWQ{q*sj}usc;kd>eUThwrtJM&BEfTgXFBXrkw8dq{RVw~G@^i7@4$54 z|E~ij9EC@`j)+fB*EP3=LMyJ~b+QG$kG2SXnk-w=!>@eK5!BZ1DPg|{@tzPYeU^Vh zbA13n`*!cNc^}uCh{~Y_lqx+F}sg|nKMqPgm!DE|uk zmcpx`(a);3&5zoS;vFRwFWxIz^MF0M8u!aD`x0VJSlTaaSKQPR;*Gtzv$C+w#AdY9 zrIUNfc@0x*Tp%WP=+`6n(i5V&gG2^>$S)(sbo=>`r4iLFBuX+DNrWmc;Xnh2 z9-Gn#E3@LN5{W(2n~B@s4%~z%wQJ8&DWS%XZdrs8I_yyNC0JXTzfkk-xI>2zZ}y}) zO~W0^A|fMCoaW1+3pGn}OzzJ4_%0ugmjI8&R>J!>%k7JZxGKchEW?+DUKyhkqTNRuc4Zwhhb*&2^fO1}t^QYL3U2yx4L)>VtE z#tAyoH>u`3s$q35yMLrRWH8@%n$3;1mhV%07Z`v0(8kgVrRv>c!=Z>*wQBxT{PA@K z-G^Qvs#w(0ZTHc$UwMzfci89z@ z$WGIusZ*6@y}c0%>p<-r-IC{(ua>N-yP}f@`Fb$&{u#NsW!XKL6}RnvO%+_h^T#!K`Jxz)WB@PoVK#GRfP5mb7WR$d5{z6^_RA7Lo)^>SROt4liwzs@u< zGRo1Wx{yYzLf@2?m8n72oQ?&w& zwAD?zD4qtd={KslW)#Yw#%yl&c$3hwhMLLtA@m%(K$a%Q8||N5J-e5qH;3B0tp!nW zs4n5O?bee=ZiZ}hv?~^L*MIdLxxr%DQ_6shHcl`d8H7ZSic{K6DHc(P26_-at)Jro zcy+P@msf4A{N{)PY?!>6X~r5lrFDuVT*(;?Nl5SyyLOfQcL6WDINJ8&G?%hxf~e3P+=FUOIQz;}94Fm>h(}v_py3|X zT5#fR*7gi&n^ljZ^^YQ#Ye|*k11jv2Jg%b_o0@fQW&T5Hz}=Dy64jITR(J1L!wBVY zwRa!r#MqTuLME~HK?uuxS8)p6Xjy0cg1gbR$G_fYKlMF6if?W4O($y-;22oAUcrH~@iy~f_Km;)gitbJpw7bF2&paZW+|ELNNw#-r%QGUu$Bj>qD zyLUCNv&USh>fH|Q%gSLqaNac8eM6Js+L3;|4m^EisT`Nzx~Vy>3al*Dq^I28h)HE~ z-RLUT65GGEP0sO2qcYloeft2H=4nz@dEYi_mt3^~=DMZD#h;Vo z&nt5*Z@NVs^T)^Fk&g^J^T0s3XbBKPV&)Z8MrtY&0;dpCgL}W!VY8AYrOGI%EW`mt z*Ya*VYp5n@(5VWjzIfwvV@=IH3PKa>JZlz*N2ZqW;Gnf|C-fqDPKFb+b?+JYJ6Ev$ z^9$V8N)x$-QJi==m^nJJ0spi7rmr3QYD+HwHB?mRDc;~9q0Q4R{s_)@2jFo4qMEY+$ zzRI`uT3^7=uSceg>ga*JKO9Z`ym9tDrYy<2To^$v^G-<4bQ%`_V|?Q@zmrJZaHs8c z5!fA-U^QKcK2vwWd2l$4%D3Es<0o=HeVsk18Qfs!^|L~rIB{{I$-1linTGp^j;_@l zaZlCIke;pxG+0~OIb0PhnwW5cRHjQojiN^yDg->daE*j9K~9>tUgL==KblDp?i;S@ zI_wcGx6~qQVrC{Z8yWqoajK|pKz`QT%nBnTA<-~nXLnwAqqN!=8gSzoC${zI#FaME^eG4hPW5(**0d-(7%1GpsTZVpZR_x_OGuZ!-e%FgN1>o|u>A z?8B$-EmTz?vf%i4sQM_qJ0>?AX~_okRcxhcf6_E!;>87N3DXA;Lc#h6dm~;)*Yr1W zBF4L(jD{Egi5N%oew0fu+dX2Q*n0LX6}`n(YZ`RfFs=?r4o=iGy%_HTey4b0!hcrm z(zNe>%s^d5shTJ6dq5-&$A0^y5i8Mn{K52Wlkr*a?37zuIychLJ-#&+W-pGuj;?nV zX9yIB^N)+%+&J{Bhrtwg4Wxo5IRS4OT@n#~;Kh7qQCT`kj*C=W#d0mqkx;YLfbeI_ zcZHZ#9=t`J-Ud~Ay7EAnc1r=?kBAda?pSp8O2+e#sXObPyyRH?d%UrjE@|STvA>y_ zrjAA5klK9^^g%~SAQ-}UH_0y~06dx{G^A-knk*12=u;1}*o*(a{#r9tR9Z8VYinux z00cEP1*7k4(CqJqZ1cP+1JWR*7TR)IHomf=J}K=QaHh6F5p1C1ZBzE;rR)CiXKtTA z&sl9U1*vV3RZVv1jlq+QMRydp&l!iR@zUbxglZV1g6YfSBqgJzdo#}n6SO(8Ar>iG zKLf4~$7{(l=~l3V^ZA`{E?%MIvK;TL*VP@4uB%h)aUZC!Cn%r<>CFwALA2yZJ=$fZ zcE!0P)+$xzNbEk|-+s$)#IemdP|}Ur5Vh^FwsEuKLvUQJ79dT%sAB2gq%SS(dvSaA z;uyL0m~TmSny;x-;tTeg1l3SGYMgN=E6W{HO{+SqlG*UPeMippKE(=KC*6{x{Ec&#g!19rZyJ4czPZ{roAm;*u<)!jSsEd}Jy5B1<2-n}$GpBoWzNPl-b z{-%h%)xD8rhY#lrDy*#T-7{f)Ef`;DNxh@Y$PQ&ia{@o8rHoYKa^cK7x2yUPV+^XH z1f)hni41~yP6f4fwUITqbxX4-9BSqEC8cNMbb~KQueV?Q9;q#@tZW=~N|w3&N* zX6_p6B`=vUQB}q!Ok--C#-n$18LQIe=uGMDHI3?^lIN#$zTEWjocD>EeMl87@+^B} zL=5RXSr!{)Hf`p)v*xm9-*Pi>1!`hyl+)s};{o6HF($lKt_UzlFSG42aK}}biMsU{ zf~T9^^5Ug@v)qi^$G9l1!>c}N3PrGT%YyQO5DsZEb`O`queF7S-oA7Djp*7;wf0s| zv{Jyp#zxHn2Dos#?e6_5(nFr;U^|0KE1P6Me|?2Mu(@IIO=e<&55y)wu!8~f_ zcc=B*wN4IuSR#?Cyfn8Z>qEp5RJ>jqz{NS!p}qn6XMfdY^lv|^dv_lNU(4GL7i+Aa zHZwDE9i|^V=xLy9(D-0Gh6o-9meQ%C%gvm2(rY-bk%$5ren zphFS!-BqP%izn6VYVRIKbtxOdVEt-+w+E}P|Ngr)op(`q1j4}N^~K$bT$4tm`2n*= z@y+;cbw|bKm9OgyX}j%Jg8tam@_l%eu&^DN4hHyy^!KldOlt%!zT2wLwtsBf?Lp4) znto^Y#>nT;!GoyBXRp^gc2JsEO9dR&g+ z3@ZFX7r&gPl9HNa==Wm?VrMQjO@t^B&Y_0dEobjQ@f*=uR&tY7(a?c6g{&`8g{-@X zX`fpbDL13qY_5mLm^qr1YiJ_CtdtfKx4b%)ng<6>Tm8F2>KeVBeCk^TKEo)NNo%mt zZT$I{JO{@OM*XC}=()~Zp*JH2mEDCf`-XlEO>`xb#3MeIvqDu-bPS`u#KAJ&Ro`?1CG`R9FW*t&!9{-i5J2E_Qr0h4) zz~eSwYTc@fx3p4`+`ete2g~=VhBuI2(p$>q&vb4S17q6a@@>@{-PU&kkE%nu+d?F@ z*7rYqJ3HMTFv|fH?8j$x@7ZDJte8sUrM!_Qrlw-L5mAPvMG)4iTv0n~Gb~!9s&Xac z0spPI@AyYXW`x~V1-O9|bXqFPl0#Z$RlNMPd?1EjDE%&}Z8r9j?mca7_(X-38`g_L z@*U|7RLb}ocgtat6!@xaft3-=cUwKneaUC{e zh3hngFy5zemqiG4G|6}k-obpF`VMk@V}2ZSTmk)Qw0F>FuS-ueRmw-7U1e2-Zqyj; z*X8y)UoR4p)8(ViFZ<5o=9v1WTY2ntNIGG4uZFep={k7A)Y1!n?QKyuOj^@==*eLE zK$X6o9TB=99TyoHh{h^Oc?uP3mR)S@@gwFY4D*i#Wi1{f5VsArOz+?Jtq55a%hB=P z67Nb!YkHkJhx>dfQftZ$Jy0ceTiRSvIWW*VYKm1OwPsVm$x5SgBryONie7au}zlMzo$Fo6{Y1Tq!3EufmRC2O8Yoon}M zKAbDvH$P>0N|~vMO5Ge-!_@0prjAojWPdh8FnK)8Y@hGn!lTZ|v&^<+r6rV*dBd(I zj(%(QzdWK7!Zq=AO8-87_$>IZA9?Ngn~|a1OhicfU}(61k#(Izi(jKFC9Uzwl)AL} z1+P)qJFoPeu$zd@+!tEADK`;2HD0?!U{vtpK@O!Iw=}=%MRp^Q3OjfJ`3Z-S<{K|T zi5l}Z+O(Ai!#(4!iWCLL%1l>oOr+zuxKGO3TV&EyyJg*RX2v0?X+okKD?vgz2CYHU z5$c`v_7a$xQ6yFu`E8-Sf$v!hV+%=gL>Nx9`O!`QW_u9QytuVKE@h$e;Q2`R#uwTs z*c(xF*e*~zxlQ$In3oW+y1nk*6@hjDt?g*`uMU|f(qi+m5Ufl|P+PdhMr<5YNw#(3 zHx6!1@56N3hHPh^)9urEXE<6EO89cxtjfkCG-R}bVY$Y0@bKt^{rbYS zITPhp?sjsG)-i1x8x1?ZbQDL*8oR5bAJ|yW&&T@>Mm1V_ia>D-z93M%D685(bvzVm zo1ErbQ+7SAt!-D0ovSBsuT7L`hko|)gl*_xlo^`R$}pn3BY@_zo*Q4ms-s!({nSvU z7!YNjp@ht^|CctG?9gWLDhoVO=h=TAl%l0}zHO*YNla9XM2GI)Bi-)5dbZd!0O8!^farHf1u~& z%uK@PyvE;yHY;n}lFZ_=WvkwwsTWY2!S8w=#+Q_KmzI+Xci)bkCGuO`V12Wv z3;o8rxq*vw@i^Yder=?}WP#oTaMKOsPM zF1vIo68!aU<+u;MwIMN)cdyEsINesO>}?}%XeditQMs|E=9ehSS$u&Z7FK3SC?4bl z{gB;tC~+DQGYwuY<$!d=`h<&BZO|+Kd`~l7pX#UAJI5+R%)!fJ`am=3lG?(NxO+}c zWaB#?xpC+Ql!7cG=Q-8I9a))Ks%9s&3V7$8-PJc2cjDxUe5oq9X`W2$J@lwD5H(c6 zaXtG3VOQmRUJ*yVUp~EF$`-_Z=_$2B;;epv@IQ}q9~b^;9dUWnkazPFqWgAsS72bD zMZ<_QPP%=!^hsm1Qq?08zpw;{G4ZY<6&bx&2m?U-cFj$V&8F6{rz8!Cwwq-p6SAXh zeahS>Z#kOV9$Y8pSm3F|l?v>ew1C`~4WVlcZfuTxhLV$uU{?@?lG1V$r@+8?l1K59 zJ*@I-V^m_tpkuu(2+cRhBmnu)H7L)|eUx^yY@k=21!fY1?%7cTqWQL->wJEsg9Yt~s_4E7VAiw63k>AtNYpO-)Mz8VRkQQG4Y|+N!$bNdAzS-Hnq>WCM zY~mB0?Bw3X%1^}>QEiK3{Hhxp(XQKLvfzFpnA>Lysx$I4{G80h;|_w``&sHmIxpWM z3DMY7R{ZYsEe){ipS=M1YI>85(%>#loLe}kEr@pNqP;!LHgtTDkICNZv#-BTzF4-f z8t6$F%*vTNCo?BS?lD)p4(YZ4Zn`5=wh!c5L94rF_u`4stn-c=E zV?pGJ&A*4KKWomBqMIu&!&~tzxhdBl)G+M$;bd&lXAcnFdqOY(zI zTDEeG(<{d|MR8AzxRv${NoYX)u`O53%JsS)ZVDw}tm zpTE$)9hW4NMH;hGu3%qZAh%jMP@pD4>WsU0@4kHPbv`jMk$B%AiIa)SU$M8$BT+^s z7RBwFK`}$^%l9&&*si@3;KrD$*EjPxs4o$+`HoIOS16Sw?bV8F)Y`=Gehb@)5s`-S zjpi4v???L*l0YD;Pa`_0koz+Zm+S9*6cr(`a>Sy;gcz@qn#FG+|?V$ICqStYT?dCSYH5|UK zjdLvG8_j&jpWAd*Y*=pN)(D2JIVf7HhW-?;! zwo5X#=mUX^69xHqWxu`9C8G+2!s1Z^yYF_QI>55t-?8^&=Tll6*SfmI_2MSVZSLG3 zI{Li>Wv;cgRZLf`OWUAw5&0bY=W8CVlAB>M=YAAB#6%Tsq>=`cMMIcNItG>af%o59 zVz@yZw9>aoKD&pPkiFwO@JIg!`lLVGliu#<+*C9qGxxgl+f5T{e#G*WuQzl#h&}T6 z-_gX@H_3Z{TS7|71+VCm#3<_2{IgH0;_$y)t6U3Y5F6*Y)m-uiLn8SG#)!QAf;Rtt zV-@}Szx%CrMI|LA{T9DmmA1TWeH<4uI<@rYRi7{ZXt%l?)~f0Eu2%1-pNgQ=aRLor zhE#7k((<(@((qQ$UboJlH~e9fY5UXP{ynbc`5)as_Rnzt|32KQA4WU7N*$f49~52~ zdBa+}yZ5a2Bj=Lh3qJneAKU)vN?7$D|Mec-@N@t5Uf}n0zy8-7!X91zv!eYIH~+D@ zDrL`yV!G%?im5-nIw)r4^I5a20C+%$zgKrlOG`)M#L}&sZ~W&**Wb+k7ppD*A#~_a zTN{};U0)&UhHLX!n*x3A<^7KyTvUFvCuhvb%O90gQ8Da^5rOzi{AZ;5H^1xSv4V}A z-K&j_+Znch5oYn|f7wg?L%2(-3XWxSiU|P{7iAOL99oQlQ;BW*3|wHQ=t^X-!V-!9 ztx_2uaDB&ey45Z7mwjPM_df-m_Qz@;`t{dRNbBr<5$zlQ>P4fCy}WJ;0YYt@oOspz z%dbEg_~QKh54o`R&^1TJ)8MaZf z!X1_-@A2c3A|i&TqHda+nU&_}-w8h|G``CU_lzE$B;8AYd&WD`$HvCS#K@>5H}|2C zT0+slK%N=F6Q|XIx2Ue3i-_WGoNn{7O*?d`&qH{DNX%_&`fdM#?cUB#QFC*1&Y&et zO*c4$n%?Yw6NI~NOi$?=Gk4n)XLbnIub;kAQQLn{SGQV=y(u)f9oQUb?cDvdC${M-$Ytnr ze-*+Wm@?I+eOo`u=+>?GZfM)Zxd(CKI6&Q5q5u27ar8Bylp$y4*clTcLD z(&e8we8%41duuyL>hk3)>B?(nPD|?tV$h#e2M09DmzOWWo0~6)ioP8>19EhHy9G8d zV9mMz$F(f~>>WL?E_MBCM~?hy%vj}h^Lo-}Q*&EL3kRX)O2h+DSlgD2d#FWktqFQX zI&BBXu2@d_7cVcb>sB0&Mk9zwg!K3i?gU0u!siUqdm4Zc$wey@lkzaGn9`;ulf5-; z2T6#E-sKQ0Pjq)_Q$Tn`M4y=M{{3BhN(&FyJrJfB_DgYSs4za(Cp7d;2zKY-`S`06 z64m&19wD{T&hQxBI1X6j6%>5?=~HY_kFH+7iIr6$9Fuds{OQx3bkp>X`*$BctmAOo zglzlbr%(Ujm`kstZ+v@u%%DSBkgWl#EhOWYeJoMkr6u0JLCw;g9U`@*rA6Y*d-I=v z=D;(Xi_!gq(w}p+1qMCs?IGZ`X|uRGZ~F%Ns_Nt{1J@SPs`}B!!lFDQqmzT#k~zBn z&>6NkHzxxC>}|1P0GQG};AUxA5G^Ei_sZj{ot@xCJic^eLo$6KE2C^=q(*Ju{J$0d zxc1nOLgc^#54O^dwGA9wE*mQW8E$QFNpbl5xtq3yIh{H{W_#nbB_2GG-WYi~ zNF%^RNKLfQRq+DHyR93^$)ZB)X2r$Dci~M<7tXwIxte1LgLzX)=X4IG?}U23is6YL zwqP03Sj^gbD5K=9r@@e1S63njz<#JCcoe@q0}ukpcw(BZ!;e}H#YaY-5cWEi;57s; zk&u^vFE}7ADLLF7)na01<~A&TZs8>-HY_eIjIT1>^c)=@w<0vfOmPYV%Bv$jAUxtq zYO2myg>{XF#tiR?MOhg8dS8DTte)IGw9*l#!~5H;l({*-_RRzC6g$#5eBUn`gHkWD zk97RUwJQ>VtnUfOCC#)yiJ0gjG7e7W9w&&jSFE9xIkD!NmzNjub4d#s_SI5<8_%!# zby6WBItqMC-@!}7<=Dfdy($Gw#II7cr1;(4a8QN$XHEDuA4^O4$VhqEyEwnaTW_L; zIq-A;zrIdP+7+{1C~ciPlBCx4_98~=o#{J4PyBBG^t1LA?fu898^M_R3eS*DadIUZ z5;EaQw(>XkLDhIwhw*9)YhQg+_}K57cz&|(`QEyLJI;89&ZlP&obQR_bZ2SJGP3Q2 z3}zdWpoN=TJQPUie1H7a*!FhL*+~gwqC5!yQBnD*X1n<3>Cw^j%E~wDzlxMP zZ0(`1sn`0iP3%JtTuqaA`Y=n-5wT_D|3>v{@u#`ah*4oZ`ub5^b>t4MQT_CWqDF{$ z-0SHFP~sSZfqggkN#n;+&`GIpX%YDdw?l+2g;7F4GFvQ_r6Ry?sFkw!t++d>(;0{D zw$p;~hm#2+0NV4`FFVP?!)kmNt(51tx?ja}0U+R`YmaTLtakDZ;A<-+=Y5<@5zbAv2&jzJa}T1Ooa| zjuSa=+1tb75DyqE)fAVs)uSqn4Paj^UK;=<^sL-2V%IA7!BD=<$^-O zAzyQXi4G#Vajjnq_zC-EgDv@_Rpk;BO;y(yT?z^dl>yA&nCM9si6s6ypsn1)+oHA+ z;>xx7;zj8RUS2WX^M+mnQ!XMF;xii?BOS3WIy&YYw>CDdSNSya`EF`W4W`|xva<4y zuCCGc_JMmg863Y7of0}Br0eG9Q)o~jvOfL(N=+!M;aJu91R22|%FN@s+tPgV=!meJ zkdSTOi?VF@i*3oGB~`c<11J>L!K-nzuP?&bs+sBXz#iBC{>sScXnbjDpNYv4o|7?) z_p?@n1(ZDo$4ZXJiw+J(1unipWWFuBQzEbf$J976UsAtgm|53v<*)abfaVng4HHRz zU~qoT#{1@e;mWwUeOuDR&trtF&-e~W87x!ef;*7Zx7ZuS!GDI9mOepH=IEqFvgit# ztgEdZcwWD>zffO&nm5OpmJ&cS3B{ z-+_IMTmf(q=(E19mu0EfxTwl=Ec3!u}e+@s74LEoF{Fw7-p-@Rx zl|cJgw1$QNod;ZR`}i0Y8hG9T0$tM5&L5d*bQ}F-+y1AGe1r2}jwnKQ zeFD3H*o37bEp_AcLY^#T7C-OjYM;a<;Ibx>`nCyLYjd+t7wIh#&OS+1&l^_m|AR@uI8;THA)n`23}!qB=kC zaCCGueFlW8fNwBy1D@?|fr4e~mpL)CsJ2#$vj~ng=<4eSs;M2-x-mUGoXXj16I0Xt z>S|@(k?CgjBh4XD9U=*+0CvAFDe2E;ik?>M@j7le2?v=sw?OY18D%v$r=8$+`dEpi z(dr#SDb>nmI6Xr{do^`PVPT;p7_3xMA#Dg{=7c|EZqxm5W6e>dBI4@m?T`>pNhzs& z*4A(6^tqqeCB`H!l*aE@8Aa1|B}#h>t*cWUEmA40^n$3+CMJY*cCdf0^XQJ@8s|%Z zRf+=RYeG_z)BXEr%FH#>yh9fBwlYzO3ot4nSzf~cFPr^u-0YPI+? zE6!z8wc}eP(*I|_zWL|vn@_XQp9vQ zicNZToWu!~fF=VyJ>c}T+9(RezVWqHIVy_g=H{kf<2jag;DA5Gyt1Og;QDpjXh554 zx{9}+xjAJv1&eKakogW(0n|4h{m4n2oIs`ApNvEn>RXRuFzKbG5sFIsw@t^%*)bK? zjV|bhbGSEw9JtU7*5UYZLB1oTsUo(SHu8rR{0j#x&Wo3XrSfWzV@jr#~->jZGZgJX`MdmIzP z<9pq_gsqT55RDW%J?j{~MzTL?P@l6g?!Yo*PImXWV{NS?9QX|IGM>f|XW-h;M@3mHcuwc<>9o9DQCnMkg+eieK)g9Isn)4Kx~{G+ zrs<}R4(fhvV1H5$=1HR`5V_dfvaf4xO{W1(o~RIlQ-{J8TnvmkZhz0pDz2?48-Kr9Pk+j*#-=MK>#YDzCm?p`s!) z+@yaWPx&C{BeXvKf*Z|ADs#;ke}B4TSH$=^J0K7ZM_QScTf{qhH2=cb++5lwQB+sK zM+wltnhI<68ZfZu*^{H_7AbT?{n8tqiK2FU^&j=IX#MYXqMpYb6W=p) z0QN^s_kD_lFy$`~(LQz&7TTNog{H_Mb*EOnA3wgIvGUg{*ollYf2ot*ef0D%Z~ed0 zaqzFjvHjxz-1z^(8*NqszIFURx~N9!k{zra(oi`ruCHrp8OTXGaiRBCfk1^i?%@eKQ zt(H*@2=VIR7L^}%(H0#PeOLRD2Yi{gsy|RRbnAXV>Ide!H8y)IKK-csP-^yWy2sl3 zkJG2iR^Q4Zd8oyW}@8yu}sZ8!(@=iT3Lj+Xo; zZ86Kf@)K`%lYeXfV~1;QmQ%BYUE8PCI*~w;W)%_E()hxkwO+2P--KQF?M=odSw^}X z6=v@Upa^qlb9|R~h+P`tj=rU~rCI~Tv8zgWKxLPx(}{0iJ6<*PiXbBZW{ujlY7`*? zwqij*5xZ=|oe6#&L3{Ojd08fa;DkL08o315a^iJbS({3XUK6rpe%ZF6CX#A5Cb;vk zRqodUcgaM6u!b-PUyEd{H(GA&zymwdv(i_3l!|H!w!~JxD-_oe|~B6`H+y7k($8km8=yW5W32HnsV9@ zJl9p_+*ti*FF+OYIe&ZTCl2~(IhWnOxzO3&#?nk)e0H1z07K2ay|s2a8l#%Si_%8M z5&*0+Ls4CF8#QSMMPMrxX^>uLP+OB7-A6Y~%uEZ4ip0^4o`VrkZzL~n>t@^{1Iy&H z4EiA9hMA5__xfr%q{VnTHZkthL-&N^ivXXZ+FO;qp#(19oexf&gxinTCs8x|+3Gxi zN9>zoFOJsS%mA>w5s_JLQvcQ?Nu{zfq$%NeOxD|_#fPz5#355L%8J~n6g%(<0R zmJKD#Y)u?%VMy>x_m#;8TDqSu4bPCRx~Lbp^h{A%|I@qz-y(l9CRU2Q)V$A*QI1nn zm1VOI8{5Gf_j&v1`ka>RlLrlN%9X*&2h$W(yh8|Fqm!2dKW#-s^eGyqr{didYF&GE zw_*(04%6uAXjf@oUfw_^R4ZZs;qdT@vQl?>Abn>bO%tF$sIbw_4qSOB=KxRMZa%oh zVpC-And2@6ROaW4j=Bu=3WPFkb$#DI_?XulDH|L()c!?@gD6gEm|I#V_Tf*J6qlbq zB2O_gwT(Y)w>{mle*Cof(!6=AgkG{Va=rk{-nc@oOWkvXEZ9yu55M!dg+=cyc3kUj zLhZeKHX4h;rj~)FeSHcgg)))p&iU}r4_aXZ{Dao9?U&i6sW#StRVxRu=jk#aXyY~9 z@=}2+o1mjZ4hd+=lA*-lS4OF125aRd$;@=zv3nqGAVpP0&+xKRHgf>ryjQC#UwVWS z31`Y&l#=RK$1-y++W5_XnLd5Gwk}7mN7f=us*O=U6M#`-&U`=l64d_|yH6e$*MO|Y z{zi?L)&v^ivsE=?cHJ>4IL6mnXFNA-r!T=gkpi-DvveDRj>1=Fh7*D9e*HgJu;Lms zRYX4qi()uqUjN|IZ(x-LX=U=ni>lxr>B}&ulaB^esI=2U!p?piOrIc-)xCQgJgpU+ z+(8CvTdx)Gq@=7U;1{JS0WcX>a=QpRN~5b~7a6YLy_+klYi{l$+{&&jw`5r~L&$d) zKK7=n!ye!VY-2}i-n6$@&-70r)d8mCN^nA@b#2giUP&47Q*ME{3nwIV$i$L1f9u1K zXXZI>*&Tc7OCZ5MAsI2>7$>^N(rj4l%FAzE)(hBQ$6^;4AzzTbGfxY+6d{VdiHU*3 z`>XEw`1njzStoLnQ29kI>R=josuH2;7{SEMY-v4_htObMiHs}guXUW-NJva}Ssz&n zT<(B^7@3WWi%Tx}ru};I^=?6Y7wzK0$@V@LVBrcGEw2Z5FruY|#Oc!yg+E=1xaaqt zqyd?Jy@Tn;#-?rbv7#$33NaxOjGiwH9Uq_G*;b`8;lXWi+356ioGk*8su<|bC#@eGZ`tk-7KSe7umJbJr`|)~Qg7_>A!E&9N$h67hgnMh1 zI(&z&Ymn=>BK;}ns=+i@p&d6!yMGUG|@yXl+$ zv^5Zblg~>$%k|?tFrU)~%dAJxnDps`N~y~2f!Uy*QBLGmGcGjHiz~Ng25429M=na}r%o%LQ*c2JrJ0r;4MaXyW;cnQ zTBaZwZLIdKrFwH7xS7qpIQ}fy@H^Fg`}S=SVK8Osbd{y;Y_=kd{Yo~!rbZHjQK!O@ zJI340ZC}({<6;$?J}Mz8Gqip;$4*|0@{SfrZ85&y{OVBiIdvvu>s8PjahJz|#?DuTPg)sC1Bx@NLnhIc%p$blT z^3gmcZlyphB_k_4bQjMem$X*_0L(sF-*J~p5#P2pxEi5#eUmjL!ovxO;4jof^I*`e zU*&Wg>KpJc?Cmlm?RL9GduxX-6JG8=W(b|w>r7^az;{UYf^tpCqL5vD(#%%+oNY}{ zkZhSS%yIAD=9U%^I|Q=0O0bR1&CR`NQMa0MNIp3!2~Pkp=idDWirZw+mWX99Ad%Rq z@zkWj^aC+yG-PkzJ=GhywHAcXjYU8g4nqcxe*PS=sC?;#vy#D3c}Rj9TB^0_-DLHm&hYWLhDQDg<+mu_T0JPQR;e zhkn=?$i57QS)WodEMn-8CMvde8{6BE(3y=gl00aF{Dm1;AWl*E6nvQy(~0R{amh*- zU2*m9X9v&O>tOr!QG_XE;8na(GY6($DtTda8#DCMUdR;R-V4L9WRJCl~1 zo7wy6YFplTes8?-){SL9CcPprnzXj24@F0FI7ut+3pU59Zt>#@-nF9;ui$&1DOZGE zAv~sP+&)rmZJ}XLoR%C!ngDUi-qV-Lf#lsy1_Q9v)th2A`Gn3YyaOiM_3y+gIJvT8trIcdeG3CcmU8z=ZFyEM@7eEdeQUc2uV>S=KU zt!3ypa`QeQV0%}0?=Q`AtrBoeTIRv?)16j%Eg)By(I>l4I;|*IOiWA#M_OwlLbxXA z0bfyNbine3k;`u0kJd^s;Ox>O7Y41SW*?M~tE{pz^a}{ej1J3!iPCFaX4+1yK|T%_ z@;X?fZ)-l+VF9pAYj5Ax*4pkb<8dD<3T5?YXu^C9(&St|ZKZ8QWL)y} zH%L)dud)kuCfn4?!~Dk^H*TT7WG|&{Fi z)9vCO8fn)U;%=|rA1>ae87W{h!&woukK$%!K&q4~EJb9}piN%Gwudy~g zu8tKGq+$c6VEC$R$kie1fQN-+6Fe<;_e?U3T?UZ^duBuHB1|jfj=y#2`R%pFHpr!q zt%1}RGohrY!24Yo%SPw%`*&Lcw>N{oBH0qXyI})5VfHp4r#ALlRSe{NkJP2Y?~`z* z`EjrP5<=zi9;~-V__R}lTKt7d;<`;qNl6_@US1~I%y#z%{}dK`?)WoL=sm*p^sx^) zOpxN*^P)!V?(R-ky}205E|KayI0&cmIqOmfE@r4{*7GKYEjSxy#PMYK_-px4!PoH+ zjRIrJ*z|SMTXk%7Aq;<%!7}1#?0KZ&oj49Li;ZDpvZF149B|e-6jk4e(SxF~M{!Ew zm%hIiJKFzSnh@kYaNxkvprHxwid2Ln2PAN?#MI6gddR?Kf5ATLl$4a7Cx(2*h8cg&-(lqmFT~~k{WBa~;O3s?^O+h`i1;$#Ge}H?JJb3^b-}v2 zZC{DF-j&)Ik=D>_)ba-)GjDVpN9!UQcGDUPPF-CK)9|g--Cc`!t}FK^w{y72LQ0P` zy>~x!mQt^9w%Tk4>T+P4X>4MX!66e2z}!!3Tc;#sWKPv8eKYadyC-74oz=#QwgkQK z*R6Cb=42u+uRzC7>#fHLi*?Der@%Y9vZ`9i!Aomyb~6F4+I)A-T?n&;nvIQpS&aow z4srPpK772WI+uT}Cj*Mzl8{0p@P+!Mqj`P9p4cXzcS$P>&Mq8|#)aq}uHmOwwB?*7 zw9a;gvC~zd^nhf)_ja|9+_FYBLOufb62;sw*Ncp@3(^A06QZ#_4^|Eq30ghjntQ|;X$Aw80dBh=#PoXd zE3?GaUYVP&u~AmvF=3qFUZwtwct))#)gY}FDVH6BOdds#Lq57sRu_1FTK5r0_Dk(9 zx0biTZ2f8EqpA=OQr|h1Dj`8?SwCgyFpQaTCreI3_nwtmn#yi(neX=V{@U#);1ze$ zZ6|&0!hwv0mBWQjeFMF^ar1F`?faHEp?DO9N{)+*yOXK5_Lxx7#E9NwIJz4nk@nfV zj2WfHppfg=htvpNVLgo)4znFok3)MQ&hp!QO*_G#yjbrY{H=yn6S&a*U||n?FYsR+ zGzEO6$5M4h?M`B5whnKUqS~Cke04Fmf1^}p#@ibG1A?ImDJu5#?3GnCQy4llvmfp{ zRT6lAp?Ri;I5)HT^&C79Lo`WBSQP7#9V#=_0)5(%&Rpx9Xx*p|-^hw0)ik+zH)06V z7D?Id3vn~`UZ(!5t9P!O?m@Do!1%O{$Z)deKqeWdz+zPst9AB{vgYUK2LN6^5qh^r za4MUqDsu#RFjdO|*G`T~>b-VzdfpWCf?=F=_C7M3hQzgUmi%M zu*W-97Yd5Fg_BJamIA9_3JboVqT)SBS&g?Z# zQ*gk~?5x{|UW8!QNghB<-uQM~Bv)7I&ElO{*|Z zN;q;*UR>ABM>k17J<(~@d8xvs?aaPYw~QiQ46X?*BV){F)4==B%gam`5S(lZ>&fFG_2 zfdWsTjt&mrH#TRJ$?E#jqar_Cm<%C1u8OFlFn!skZ@$`r2dio${$kjBRii0#bme@C1~7udU1- z-`m02;zvC(!UJ#)(gzt{ZaSI@VSk+qF56}XZZYlR(q5#oqA3)TA?~{M7E8b{5!Xwh_$L$Fns>S}%a++4T?8p|48K5lWG>1YoW@I~D6-SV?z zRf$Q7OYzB}PM_c$mb&$Y3upFnjmRN#iHCA$*wLYOgIKWcir9cW?!xf81#18eJbWw?0v`0%`FHD z9pO-XUIsQ*s*OtfW%bMonLO0aCIJ=)YKQhp_2T;aqsEq|@p1F>tE<>lX=#Dld91qc zI8R&180Gn!!OX@-UqCJ{&`S2!_=3e?$5x|2XwrCvweQI5sZ@0zccP@Ev8~;kjku9b zI>QNS?qcROmEet|k%E~WOgemmM{S!-+XqV|Ws&dSUzu)!IIlHS zz;}n4)b(_jQ7l4p6ekj+xp7y9g^I!FCb!FRI7D(<+Vm!aC%-mNlf#}an}@Q~!!RW= zbi`^ZTO@ne!T>fjrMfTxQmA*kSz20Ve6NPt;)br)OjoY#k6@BN(E#j~pT{@5U~ES_ z>I>Xp&2d9LTh_A#4j5fZ`ksRypHNZ}0lXv3#>uX-_N5vkKr2lr{1G-h1WqyJT4MJ`Q@?HPG1F>_9?rf&H;Srg!JJ^NYNc zX$?)?k*VPvj8VE_CBfbWg;bpAIZN(p^C zw$3upq74-+*#3EhEqL7T|JynK7%|#3Ie4yZUFOeUMO&)KLeUtYWY7rLhH$%LdFb88zv`Ah(={*B-W^{ zX9dA3redO=gbXtA#3bED#AKBPjA32fDs(h|BRwHi?1vw_arcupohM07?r~~t@c9qa zEmW{en*w!iJw-)f3!g~&CiRN%wZF{ajOy9H%se*ZuNAyo27jHpsQ6zO9C!S$YU(}s z*A*{5`)jTFA94SP`$ybA;{Fl$kGOxt{Uh!lasP<>N8CT+{t>q)&L%H55Nzv-_sx!Y z)64&Dz$<9?fYru1xjCESsw$+7%!P{sbGN@;?RuCyhNY}=zSS%*cB@m2Dxa)Fh6W4B ze0$vXv5o7Wx0PBY!e?q-vIQ%@y$|GZ!{;xP-klB~fJ%o_?X%Y(;WuJ4#p~v3z76{6 z`HP-V0pa6A&kOYUoMe(2%bA^t-+uF%@3b(}GvH1@#m%$S_X=i75 z_;$q=ohncmAf`$$tq#S3-te(%0nC+%fwJBRhe$3dwr6 z`#yfxY5L>6addSpom=LrXJ2e=(}hgfD^fAr4Ev8}yz0&k=BV**AW~BhX~?v^7(m)m zw)p<{;wvf)yFQ(SQ`Y4i2?tXZF2kmEi0M@~_m>W>~JB!UM$P@KudG5EXZ zyAJ0zmr909ecP0`@I!|V=eZ!YjIenS{GEYg$NH0HBO$oZkW7Z9%O}BM#qYD9rB)%d z2Y?}J-~a1&-1zjLy#TXR@9W1vH*SQwxotrvz?}mfy- zFJ&b6g{g4LYXEj<&_>oNQ_EsIwA{{?zo5YObY{u7**r#OZ*Om>0KEMNG8KSf%nHWq z0q!W(jh&ONqtBM_wQ1*7iG17ow=64La{&>VRQ@Vtz~!tIU)##$Q4dWh?GnstqcMLy(g-(a(0?O(0-@x<6!)Zzd9|0iX@{~RCszb}qtVOlSb z0{(R!3Pb<9>r+VIA4si(EL}g)Mmv(0b{$W7RP=n$8pEQgzZnZfyPYCdp`Pf zf)Ik74XuwiRF{fYUwQrVWfQ4Eq}$NDy?Q*m(}!#F^4f~a+v5hRnsg!9txa;R(}@#& z-~DJHW!KRrU`RsMR=~r3dUSP9msfyO#j#sbfNdX>Rju=7%sYrVsN4b}YGKBcF|BYQ z>XbkT7f;kiC@ZfC*m$$i9?>5yP&@GQfSZ@J^ALH$Q#} zYdaAl8Ga)f8|IE(P^_rlz`hmmn2`hk3#dywJ<5dv3y-WF=e?+CV$Ep39k$?P=OU&b~ z_SkJrVa-$5zv{1ttGC(P$9-YiKzj5OZtCO{kkdhf%2~viH+knBV?{GgK3}wB>8_G(ecOe6;H83n_9|S5<1ghlTRs{aMO+JmDEn8XrKZP@Rl9by z3RZbhKU?*n)cN?kd{i)eob7KLrac!c7%uX?wOJzgyETuU@3|5ZDXd( zGQtOjbJma(!yGF!iJp?G)m-RcPQdMP9oJE(UMY`Nzq{0(wNoF!NG*CeJYa4O&irDz zq2}k>Z4fB;C>gWxh2;HG!X@(!4WtOMdpuz}o#zs~o~yS&PgPjR+d5p^Tm_H%in-n% zLC6aEgGh7-Ax=!Ia+K@%9_z617S>*_n=)lJa5z1}YhPp3x=SYib1{Le#Cb1_!~FB) zkAq09blRzb!NYZx2&ATp|4G>F0Y)$B^VtRgm9u6xenvZ6X~3G$=%fKpTT|1E>1^E$ zYxB_>z!`7uwK>OgGFH8aOmjV+kx+Acfn4Y~x>UjY={mrOw*~ z>uLlqL25&TDTx(%ngib+^sZ|#<4!fdXelTnWAUydBuRGqQAWM{*2aa45^i?yrtUZ( zFDvZX!^@Xl>|k-bHue*4vVE<)6DLzgS!`ohi_1!03A46)COU6APMF*^IdQH%*zrzg zpmtfsn?YpvK>vpJVTWCTs_uCR?o~69c!7cfNcxK$=eS^Mh@`)e5c>5gq1vpkP%~1W zzukRMjU1@OcPqR)cV8@v-pS8^(g0h8IZvG z7m?6-lGqms0Vezr*w%Ic7Q%ulHk3bifhfq<=}2cL`xIqkE2>`6s&+nxbKrr=v=~5iU=_>oV!%Ru0QFUSS9;8yNN=rO6FzF6U2k!qCK75Qwl}Sw}h*&CmXdworpksI}*|zSVQf z@asY5_9&yBD}e!U_<;19ksiJvXPQWCVt!n(^3evS@K5I@4fMavYx^A`C8>axN)Gvr zCxii*&urhR=xs}6#>DVAyNK|oe!EVO@+9oECqRCMx&8r$i=PsP>~2+~hkIZ(?6)13 zRsF5+x1H1*)dhoG&-=fAX|cXL-$ecB-~gtjaa0EF$@H0KwMTD+0{@sEa&oGs4)=Uq zh(GVdv8I-FHL&D>O=a02W~xL*46fFuwejwpK#1|&h$^MavnN!{9bk6~!^QpjxOelp zh-Sa2moGoW#Z9h#jjz!<-kkak98DB)_8}>Nva;fX8tti@T8L3w`8aUuQlSA9x(K(64SRZ+Zp{zx?z<+Q;qjy#8Ur!6w0|&#cbAvFrdE)t$;}5oy5*G> zQKnK!J*)iLG4}QWSItOnl@Wa%KBJjD+BZHL8*&WK{%h3b*|(kZv7OOd?Wj;U6Vr;< zViehk6{H4Vd>d>@O{A!R>WdHL?|Gn;aq`%)_|Qjz1Ho=LBk}$Nb_)-)*SUH)JR(mA zi8ZpZ`Tba6wflHa_5IzMfY9yZa$DgzYeGoXZilp-JF2?cb#CYDD5dD*)$mZIX1_II zy=0kaCIzk_+(d9$&o(!Vm^Bp&@t;V!WPIcfo6KBGznP={b<0lJc`X)&C@&~wl}^~)6G?YI+FtI_Og^2j7} z0F;Y+`DVD@5Vt%AzmVIeWmaJ!tVd|&_tvD{(AbL4uA_~d`(s{DNANh);PT}LqRN@u zw{M>Vv^#Lps?k8Yx_TjiWig|+#YIARHIf4`Awy(FJ>20v1h z8nE;AMcD)t7sa{*nQN?i%@P+DK6VVyPU>!2z>8Ee;Qm4gmte-U^&hgbvUZ_9K^f5P zbrJ>wQt_MldJ}EPA{LQer=0r(o3edtA_kWcsLGIy;eZGw+{H&oZ9=zJQRXqthACxt zvx?W|h5At?<~GNU%eHI0crC=gU%P94ctlKYp#!==QNd);f|T>?0bKQdc2?97FX`+a zE1jMXhSyq%iBg=vee9U*4!+~&Sx{)t>d{0+7rUb^^zD<)$k5a^4*d#Pj?i0x32%Gi zo2y+ic^wRPl5aAgL~}q?yB#cK&t@_7lL9>%U+O3Q-_Kr3&k380qpxnRqt}*&L7=)5!kVsX(#kwxw5$F1%`2Vx8-XvgC^LgtLxDH4p}ZC63Eg z(U7o#PtQ0rW4(wOAgb1E*#rzLAUW^`tL9zygP9QF*6t3l1MX1{{M;f7qkE*{GC9Bd zXY%V6!|vyVjG7^q3Z5zvRo}f%YfHR-+Ou8W(|s(oRsN4ZlG?WXTUi4*0U_B*;^8UQ zOy=M~;^vwV)Ba1vWYFZx3&as6_p;K5>j2!V9!jfNUl1+&6#=%vrbjUNd-C`7R57ZR zCmu&!^&zUryzIChu5D?VTwGG}YKw}E#Id%`s~>gDd_|U>=a{s;@RnyVqlPMgVT>v; zW)tic19$fE?D}S~E0n5efL$`SiQK1`zFI3+i{qn!_Cn!jK3`$^#`?MAJiRudv|)hv zBOFb8KqxZu;rn9DXsPkSO$9?d471F++h zZBSlIa_)`Qa*izzd}!?U`(anb291qv$6Z_e$4kq}*@La+{RTZk0t*I!mf=(OYKsIN zw+9b65HgLnP(RjNlqsYm0RialA6w)5%TU(~e&2cZz&ZkB?e4=9D&iCUNJ%PaOnuZ&uvqcU%rmIo1}HmeHV6o^AnrSQ6b?%1Bg&;IG*ay{r!F{peN`IZR??_- zx$&`_-%6z>h5pG~;R(u)DcIEU9{AA!*f!EoSg0nPvQcYh+hZjiQi03{h#xRJ@=7bD zafrATL?;RyI|jlr3Ei?;e7*FLN)F!lc^~+Hu=f{0aed#`DB2N1LIQ*U!689{1qkjC zf(3WC;O;aoNwDC-9fCWJJ2dX@-ncc;ST_!@`N=uo`Mg z^(%sNYRg{&97tTPxtgqBMdsD@Gy0+5^Uka{U z7Hgd(9{%uvg?mvG6O!;chw8XMEPdaf{y-&5eBn>(_HRp#n8PqtTZdDZdu^F4+W8n3l(LX#P1ah z|HllZcXEs^qhJHu3eTt{72PV}G9uwFRcmI8 z%p^1V+Vpj9xLoi~VYW3jw8(lAVa+tDXI{hEpDzp1(OqN>FWY@VP1ksW10(!Xa zG5~;$js2>@CGK~xm5pK8a_#a5o)1jBO=D3Bc}qYtQm;K+b#*psH?4(Pa=uJzUGG~% z;ze-t5DQPgTfe)LfDC3ITLDc&Zk3$ds>)bJR$lzLKoY+D?Yfw0FS|JH*EvC|j>HA^ zj^QDls>4MDL+0k-1hr_;pe)a@YQFU#_p{6Ov*FP=45;_?)xLPZVll!}bj-l-i z1Rk${rSy`(#Jl=S3?R;nk<`8@R$Tt~e2J22`}FW5af|~Y$#HHj?nZJt_t#BcPu@jq ztdx3?DtIWZ`gYO#8^tfCNOzL({@ULUv2$<`vNPkl62tr%8_RAok{EJUMVZ3oKAZ0| zFne5^)zb1P(6Dy>OS`$c#=;+;K|3dO*dq^AYQFPv-UNQb#~Ti^!Uaso&Hzt9u)k<~ z-iksUutzMtnlg?J9)H`}7Y8QQjN=zuTiMU>N3;$OzQSWww4I1dc~>Af}x2yb0|;t_^$ z`#oC%YeAi9{g#lB(AqxzR#sO4>1=)n+<0%C2y+w{>SPvcwb=ZNwB&z{3%tc}wzD}V zQPfilnYh0x0qRth+s<%kyK&$hk}f}wP!_cKU6f4pQy537Auo@rKzdQ{Xl*@na|Em# zM%tViilSY6wDhAAgkVpAN^Y+Ui1CML;UD9?Slc#z@a(PTG68PM53 zsDRdju3sS`HmFjIV`T#b-qlVkJxI|T1W0R?y?)D4V?8s~YYjn7_YUc`X?{dAAEaa- z_&dq-QEcqy(b18Z$hp7{;qsHW3}VFAyPGIv9Mt2cdY!AjjSBL=G4&vyUlH;UGM17) zN81fXc^UuhFgi(`U?xv4KE?IXu6fXN=sZbV#_Ds7gP&)UII){9Ff0@R4IQ0PRQxlf z9m;_ASaDK}+lK90wi!LMLBBP$UP62L`0)}=WercoVVN`x!q5}=E*=LJbL}KcP<>FM zbU+$*9zIp1MzHtq_s8VMyghdbRV?9T{yrl}!Hcb=B<*$WMSQdCVU)`EgRw*0V6?f? z&kMT2&UHMaSu!xqp=&`;R}M{PvR@#AwO5tHU|56!JE(^}LFqni`FLAx!_}8bS6xH0s*cMbZ+}$U!UhzRuo2iL3`vQGZ1Y(Id z5a;>Mo$KaDV0wG8I1c7`i7p)1TfJVn=sdo{M>60gfxxR=6O(oa8BvtdG`x|jDEqTt zW^?mxSV;5b)6!a2dg>V1tle;mN(?e+%+6+xY%DBz3Kk4{nMeNaOiA)24K#GgsH%Dz zxpe()^!FG(Z;RKS!PkAMxnZn-8$on-&|sQQ$MK3>(Ugr`&=SN($@a--Fs}(9jG`fj znCH)w|5ThbgHhc!H1^1nSw&YtmSY-xS(pu1?r9q%ppWzV1)je9SX}8+)^h@zZd>Rf z^S*1_87snE8%cRXa^Bh@_kwd|Ql^jJc>Wb1FN^^h>nqEs>1FJ% zWru;WdTSHLMWc3P-S)+J#yO~@`R1p~M4#+f_qFpHlT}KbYLk3&7 zguOkOOAyaLFZKC(ZF9BqTiQyFQIfOZo{> zyZ`P}oBlm4jDe1x{;2;HQ@VSa#-kd&0EmVTG{G%ft%b}SN~u$DAK|Hz76 zhaM2~R$FK<(s#DPE<+YR#$m%`HR~6=t%qfExX@VNLEXUQAe(}N*k!loLB_1#X8WKN z4^^`{RJ)xv^ynxcq=>hBnT3G2#!7zPbbbjFO#)0E(Icsg+FItwf84I|ii{mAH`fGT zz~ZNBU)++1*b7hu>3os?$Z*G~D>FN*udn#&b8DpCj)L|v(t8h|6Y)Iu8TL{&54M+a zvfl3IKhIQr=le8pv?nER>xIPNrQ4i(-HJISH63+F zL^2nO4n>T(me2k!-s*Z$f-^q_!wWe9&p?_!*8>p5piix6b!#gKnWvb&$E{~;cFC&Y zW3_TFl+K*(4bFk}^{;9nmjHq53+tQ;+eAL}QX5jhcRyBYHm{GV;iboGOO1HaTA{%Q z8wXED7; zhlf-#W;SF!My30P)26$=tz*>iCi`vANT>h7!l+j$m;J>>Lv?Q$ZwZj!iP>`aw5+`R z31EM=fs_nPG{7j@X@e zjlV>;?P4Q5U&@~kD#0b~W@cvh7dP@##mqA&a!hM>fA=SXOQ^Q6_|L`4NLsM<=R-?M|zU=6t6+p>MU+R)-TY*N#nfmApRvSLE*wD)+bVYcKje#a6iw zP2Cxbg0y-c9pu&(ya$!G|A1AItyc7~$IM67C;MG8s#$%E?4UzY*cY z0sN`T#<36MY?P6f9;McFi>YK@$5DdE#^9_jac&oWyat13$d8-Wwye}$F=Ma4(o!%; z#2k$qb*YhMm6pB*yk7FjAA^oXekEX9vPu4#wr-1C5^}xGRD#`<{R@LqeLcrBi`z%1`>16nX}e$N!CD{|AXRi-w^KhZm-!Ur@Hzq#A_ z8ag&S)wfB*^szOzN;x%rg5Bm+>5b?BR#s1N+!J^4ptwrxD!G-huHlj)&Od<>%KYPc z5E{|Y$w_6yC0I8>Kpik zV+g_1Gt@h#BEnK^?!8#&5{@Kosa{Hq`d>f0^SM7aI~ip z_|L#UZtWJRLsqBu9w{JEU%j!hMgz}ljl=%*Ev3z3XlGb*q_JP;GF0e)L>GhU831R7 z_68NRvol^#eB?O#6MX3W+v>N#hI!2~@9A*s2)|OPL3om9vYF8ia@)=IA<@NlZ2U3o zM(yZ);Z#9ODQh4-w>B5ThK`PYam>5PaXG>+_@04X!JPlU<4Sy7WGkF13XS;#^Wv_1}w7 z_G|@Aj77f=>i z;x1%{t7b%|e)A~zi+2dGv>adNCOo#hDLVE)-V6{Pgp=8QC9SV@mN3dJfSoqcL*j!?t(a|1Zkp0MD z$3ePhA>6*9+xm+6n5}F%a!GXHFl?fULt?f?6xy)!fSw!Mv@Pcy6dttJEWu5B@ z*D!23d}G$DS5D%Ku&}RLIwP|%7Pm@c_A{MzDyyC6`kkKuG+@<8@4I7D1^$H6Dww&RR4)M7qWoH*JG=KJQEkLky+YHlJ zL$@o$?uG;RFcnQyl&9wtl^PPP$l%Dl%1RcItc@s^0o5%3C!dAA_=j!gzNiUuJQ;~a;^*ybm>P36y@kb0{_S>QqOSA^Woj9Nc=+#JbO2fWpRZUi+qa+hs5 z1tM^==cuTnYja&^MmbO0KNQezPsNQX3@c4%oi>!|V+Wr)h(do}qj!dON!j05*kW-z z6z7AcJLkLVhbnR!?(DOoujc(3vk%jwRtJsWW^M)qxYq?b{m@w78Ble0wtMkHOxUa0 z3_Q&`o1ZB)Sda27B7Dfqss82Ko%)9ESF=<8oRy`E7PQ>l;7Ix_k*;q&LQ`3Y>aEq?EK`Q+Xg6A!gPQiD_*E$0b9zf6 z5hvJ>moJXRN~BEJmiZsoHs7|GX?ERgh}>|)+)4(1lj|l??thY9%VKn>U@B-PfFv=m ziKf?C@3zcE7#@u>ADtk4OH%muzUzv zY9Hn~T`qaGgZ-DI-|u%gOdfwR44@GsW?>fU>}AHk>BP1Uf0{41*j;jo-a+cF{FT)4 zSf3Iog^Ia*wQbJuUH~Iax5W;4+PZTbU1quPL4TpDk@UO2KNVo5 zv)otA&4+dvp0Y1>baeJ3Pwf<^Y5jxjkCIdaHc?wLpSp(nRSTg<`y~6Tds~kHbxsPk zk+rrQ8m6+ViikVPl^qdh!n6HwqahUUi04g1E3anU0&L zD~Z3-y0^YgNT5mMot%tUr2fQ(&%qHK>HZR=tJ(KD^ZqK{29Y|^?}a+;9g!Fo3D-x4||NYydb-<3t2oRF|K*Z|z& zH>X?t`Ni&d!+s-`=Own%aRLoH?&he-OhTpoTfxxZ>BW41zS^w0jlBx)ULnJOp4?3! zhsHiAZ%3Qu1;c&)FC+j>qCT+XkqZ10O!Lz0Cx^3~MfSY2Y?@8;I{a7>PCQfp3e^R3 z6=<(ZI_?6CF7}=;RAt??mMTI0V?XX#g)`9o6xEQn!CB>?CXOQ8&Gl-LEod;HJH+cd zQ?5@LKEh^5$pFtNTYuu_Mwzu~RBKL_EBzIXaSE=6xx;VP}Yd{YwA>194&3 z=kiOQ*&%(8MHw?6;@&xamAk15CECLs$Yrqk0-S_Jgo_k9mll>iM_T&V>AiJlwhKfU zq?IHddmwNa$AO&)4_cTHmeiJz^OalwIyfCJ`<#IPjd>&DPfs>&W_HD*2%O?bLVsZk z%xp1el#r0{tusF;^C?JR%ojjounQCPR#o#8%I2Dxn1~vsrh67H%lOX}!5Pt?1oxV{ z{MX1$30#}9HzysO_}nH@zdyP#wm3?QmY{pBi7Jh&-!y<%_qQY7W3olW?5>f`nml;B ze|4By{n=hDM+9>~Tow!uI@-c+&duTg#WL5jv;cpc=q zz0z&`6vKR#mpTNmYheW8-0LOu8ReJcEGO&g_NX z@!5Q66wnGyTc>^@p(DH8LU_(eX~Q~_g7YTv(L1XhyX=GcClJ!Lr&lq)*IHzB1?z!^ zk@3+lY#{(Y7fWwjYE#pvflexu?>C8qOLx=i3h2E?;OpWD!}(Oq_Rh|yzJXyv?iOfY z8bmTPG9E3|+=Mln2#`}+h_T&;In)y`)ZS2--`aB6gF#qSEL!a0Q90q+2gJJ~I_ZbX zi|-d5pgMN;z@Ci-Sa$#%+%YwTuG5awSJT(`qPI_x|I0ge`mai)1dX4dQR5B4s(n;R zx%VbbU&RZZ!*7|*x%{8DRZ6MpbMvki(;x}`nzu&Sj=4))wS6~Q#0n$fKn%IA`$!!T zf`RnUGaSqvzieUv@%NShU zu6pZad#csPTL+fjzw#uzgasJNQz;ZdG~#?{K2TKNN1`6{4t{3=SMJ&ZAn&K{5(cuO z9L+(@Ec@(cw||KLdzMH%Z-9^lu`y9*L#)5!pozw4H9OgjWl_~cpY=+J5gW9X{)rgRqUC(6^oKo9Y&4r51hK072!^wxo+TUZog%_cnE#C!b; zQ0Ksn8p{)!AlI*%2L8NY9no^EsHE{;v&IFeR+(pyi;If}B7t+MojN3A|I|X%DwkI& zcIwIyVLm08&%3^kNLSFJM+Jo9d%XlaOq0JgxF5YsC4{8o1dp?bSfl>oS?!emfXz@# zY7L^Iz4qrMFIX3aJov@#rMPH_Hzd9Qe+dgf7o3DWFvP&HN;s#o>HU56*Z{iuLmyKx zmyM@BQ96KmqzRz(GBJq)T}@T)S15w#^3!oRr75;(k^K3-JBxHDg2h z6I3kXq4*R{0+pA7%>zM@8i|W|r*9w}6-zvEOqj5j7eC8mvuf!+%4@Y`6!_CpgM+4dtewR zPUqHlg=C5diJuZlm$VW*u>~LoqPx$+h6^kPgOq^JkR2hw_x^sgoBA!(tmazfZTATo zS3St*MIJb#x~ArP3WgUsR5`uTpt=wNAYVN4SAI4;>v&Unyhh9@+0Qq$V?5m$_Jb+c!~& zKc6QhBl|@&*kGgP=$9^XpO`YZ4e&iGiu?v~T8s3cq}UqCw=S3pci?hITxxfm?M=Fa zi47ANo+Js=RgL3*gv7|8HXoJ>w9d?6VNWP5Nfq;Dm62JKw7cQ^eeERZds}Af<`6x= zhnCBlVPgyW)qRQ8>cG4!RI28t+esTJ%?wGXLWDa%sgdcTE}2)ZG}24qyj%b6CDpjG zH1u`knlsjm44KCF%U+@bqHf%T1C!KSbecn|t5fXS=47z9mC^)K?iP|Er^>g&B|n6c zOznQxejQYeFWcYDYH4PF<~7ev{!hz9j265}G$i#%Gs+q<_I_2;N_&4C z<@pU{cJWcm6i@ovD5&4-dNAcj`RTT$P7R}CboB4|q8&1nXMy^?M+!XgV=;EHy{#Ym zS>1(;+sNb-@Sr;0<%Riq&|WzOVjMpHv!gcbea5YScH&p*`9}uNO=1leQz|UpzL;At zhs6zK(SGvNZpjBk7M2pYLVbI=ZC@ zAqC-es;eK@SS;Vv>-N*5AdJWu{4o99psL@1~H#=*y*L}5wXgOI(~ zA)iF5*-~EoEYeM5s&;5D)+9)r|M?D!Gut!1o8SG`6kEfh-_o}%DbV3?uFG>Wiva`P znewkof>h=kRMf$7jbWrrXAG%de!drt6`ZtgUB8_7;o?&8_uv*6Up0CIii4G*1${L)nbx9h-@dYJZy}ZwzefQwwZCUMXpm?R|vb{SG zbUG0K!CXDo`H(xBiHV7;`(ZK-O9+DA?{**F%I-nnImBJTFfsnr;q_~LG!GAP z=|qkv_qWZec|0ioPFvbR+?Vt`ksT6=x3${bpeiV8eg)k`h-edLHR2R!8lZ3x%WalrCUA-X) zC3d9WKOn&(oqKtbL}+yflLNH=XkPf_z2=0B-DgPYuYiI{Hfy{nxcAI-cjx<^%dp6# z^@KeG?@KB*#;n|m$0l1WTyAb1?4R&+8N|%2@gAmP%U#Y*2Ag2a35kiT1>2C%x;7k&(Xryh zp#(gSo3GA#`i<8FPJ#?kUymp7UA7937~CI{WFF`W2qds=GU~gX4~G##DMZt4hDIO; zS4)-pwy=G7J2t3V0ocE*Rk4ELmz2Pq-<75iGL~1WDEF?1oDNq-rqxMd*oH^P=;H)pPNO# zenC_EDBtjF(=6(RL9cJbF9TNn9@Uh4mnZI_>3*X>eEoUCz4zR*50`zf2J^z71}`iqJD5~NJ8=k~mPyx{3$IOPkV z))Nf%K5;us7I@;;hbQl_$zr6cdW078-4yTGcKr-nJkn*a_#vjWkc_UqI|$pF!P-i6 z-~*uDHkC$GO;0OiqlDAeWBzTyf>zYl)m0zdCv)IWM!PNJ!;G)SDRrrC!*fuXojNbi zi)+>R`1M|;G zvHFRbxviLcWW95&BlEyz&=rtDNP6|?`?@&h^O@@_k*?O|Hc})Ow<8KBOv(AaII>ht zo>_1I*X&g2K?5~Q;{|GKUKs7FrY-0rqvCvC&zZU1OXW~2c?Bo*YcPuyjxlSZbY1=I zRlBYDc}G9f7&XtcB@dCdi2=M2@Wl&iIpQyh27Gk=11o!nLBB`sL_`ojeY02@Q+St5 z5HGJoK|8Vnq1!x95yH(!#>)X8z)s2VI*tp4B}wQ&R?rl=@%4_QU)xxYV^4 z3|9VN{o0u(0?6A@VM0Etq}oZL73O|MJV&2!l~&Ox=!Yxz41^8hA7>VY?CyS*llfw% zPTAyjbL=B{A2R!d7pZViI9=pK;AB6Kex=bgxr?sH#3}APPZu{eHn&7Q|2C90pz;<^ ze*|snm_}vMWS{r@IDNeTSmeX&Mr#y;-F!M_8^bW;2_LZGO{e)McJ_{5=Gw;q1^%JB7ca(~;|T6jFpnyyv?i)jITgX7|JL-0|PvWUy=y0vdXe7oY+@xckz z&XUW!2c*o4XNvo%6;`)i{#91;vx+gw;vzrRSP5qX5EfF0-T$JKKF<4RMn_M_LJ!&d zjMWSKA(Kwh*`S{TZbxv;_TT#JD_f;pa@fP&`U3%A_G$58fmCfqq^n2cbD2>V6Pi-> z4)rNZ8oVE>2qzZb%XqRgZ?GYUcmKKWf}WakQdNz@dCG-uKp$L|IC-3D`!FYUCTp!8 zffd2`e(=lt%BnBwMSh?U)$CJTH${7q6i6AbrKk6th}u-YzG?-{`36P-Xe|W^h<^sP z{MMjv!AteJ`DDIIZl!*dBn!(3BUAMbU-mNmW@#CCjGfoE)ImfY(UbWIeTRtuxmOly zR*h<@eN95R!;;XRyRxb>ITJOu_oKGw=+FRBGNz6@eyzyJxX`OBcR*`Ss8bHA96@dO z`pPZ}svJ}Gg4D~>ZwqS?lQu|6oci+#v-N5q;W;xqr`o)@u8zN4VsCNWY6*_wFg%2^t+XbFv!Ul}@(tM0*eBmqJPyB&zIXHHBoczkP zRWu*dd!UvKOwPDKJOlJ8s9TW{vD9$h#VJ_Yk@19AL02`n_t5K;*$)2X^t8|iCBfCr zt}`d?hJ=7WE1z85FAXkTps!u_-vtMkl4na%W?o|o+1tO@)(-V30a1A^{1^QrH*7o% z8dMBwxRqT6j<+?75mfJpopcXG7_OoYJk$lu&dwv5jXge#Hhi*bYD&dAuJ#fP#Ami3 zzd|Q|_5h!amT_j+;;-G2A?fIKFBhSy|b6C3ydB(QAZw3=y?vdEveJrs*tcD>?tKfZ87W15cw;J1MvB z>!FdBR;btMuN#tTct^=n8w0HI!nPhs<@YTfeD(Bcz?Tn7l*-i9R8@1NA20W)&-Pe9 zZ*nC1qc{`e$h~I*6|{9K^k)$hxR>fN(0p!-^+XzoV_JuAPgl&H<%+BEF~ET+FNdmQ zYG&%a{q}xDqfyl7PF7v$F(1-Iz zYeKidp&oG{KOb0&#d$$VLH8Y*D!CVEFS28f2`8FG7nw={h@Na`vo16)SNDwb?1Id( zTdim{)wR|_+sFpT+Wv!p&Vg3$hmP zDQ%WB;n!vq{Ol-##o9l`(-lK;NT+N+WnQt5j4SBq_|M+*ezMp%LeFtZfnq4m7_R$R zGH(aP>zkMaAVJOGNdEX&lPwrQiE*eTAdX*q0NcxXb#sp7RgwepjdG^u+u2v>lL}ww zmZO}e!B=k%wT?-eC>jcusJWfVYJC29J97ye+Drt7*g?i)?M@VA|CBN^2`>uz7#!VV zLX~p`HXOKHZk*ohdYxi(adBlxsdGBLu)NdW+uJJxPUss^k^H+}sV zwq!nw?hDfTTJ~e?H;pzAHEu-+SHsShmV^JAJc(om28(R1V0EmJkiG!q7ZkVtxWC@w znc2CbXQ1s085wMkF=s`3sq)1oYTNWM>DJa(erc(gy~6tnmI?c{S)rSjE7X$y6hWB6 zU^4jm69ci87#KgX(pk*c%yn}4F_tJDvV+lkIueHwTWpQ!h z3Ee(x<>$hwVJs~xtND>w&%I}1si33~zIMZB)JY<|e_!%hMk2A_Av=5_X7=_u5sP+J zX+{gFDaVbaeEk)d#}(J($HM-b6oH7U1rI6v(rqI>oHvP>B#Tt@adwEONWcaF7>)B~ zh$D@L;kGQ{k3O_gOAzS zr|KNI@$7pr40hkZ`<^pMOyw=qS`wY4_x;Gr!`$1mI3Cd}S`hdZGda^+?mjI1%WYr5 z50ebVl*~tcRy`}D<&jDbRj-_k*uETu0(ztn+f%8RFWv9@=*)I|mMnUCS`_x~cIUmw zk~j6@&oAE&Rsc$@j+1?x4=**FHePa7Tv2bNa21@m3a@q5OFcI@Or;8ajt)Q}Fz2c= z$T0(xgb0e64Zfb`X#~iJp7HGUZU1g?VX~m71KvinYu;~zdiz@ZJjgsB3%%FTH#7{{ zE2J|r$z6}o1B=T4+M4tE9`5*nH#f)7i2TyR_D))twjOH0GzZ5gc9nF1?cm6|Nu2u; zU{ScCmAZm=e`!%)-!LTLibq*Zc}3It!+1DpdmAXu@}uv8b`KTMLux#~B)_u|^{}fK zPfuiaMZe7D+;4FF4SQ@XO@Ci|ed>bU2Jcj*Ct$o&dpF0bIO+6VH<*v?uKBvXd+Y`9 zL=(p-TOU%Z*U>hh1p~{ei5r}+Z*G%zQph#^dYA&Kbop#uLhM$rF?%sWxUp?qo7md~ zTz5}MNLUFcz-;T`1Z-`w#Kgywb2F0`wOlJs%2_>3goymxx{cQM_ls`rB1tAgL2A#H zhN%u0!oYf-t2{Hm04vqCg53$nwT}SH9#FUaxqA4+*6x>MVZZF9viZA1&O*oX9D$A< za+WTw;9_haed!#{K+P09?vlRzqszJF$8fc zNs6f}<#+_yBLL2((RnSMl&Wy~_pw9`QWX0*L(Y8Yh{fmew{@2bKJP*BbilL`?p- zdn{a}jXwPEc4RvD{D09Y=l4e%KYcnKe%(HNEkr_8R;2XHx1WIjfBQexoDFTQ89p(x zFtRfl*%~@BIT|_`8{4oj+S!=?Uv`gA$i~6J_SYw}{f|#(R%RAXRu%v=JIg2LPwXsg z%*@E`%YNm5xtbri)YD?J(of8pk~vp!9mB7dPg<6wChkEGqXm;NB`07&#V=; zyZ=uQlj8C9e_g}luQs~>|7+Wbq2uPGlZ}%ZGc<13fqlyvvVs5Z)Kr%!7uDG9o3GZ7 z^uE5ijKjzqR*(MY65m(}-;!HvpZrin*jOcf{dbf(aNo=*@iQglTr6ivtAuN5v9MZ>|Fh3-%d$7g zDOO}lNC~D0W}d-6h!N&xg9Xvb;IRC2$RF-OSF@Hc@SxK;E~=#KiJLx*~xW1 z36z;{ISCM;0I}&-e*1R?7}G#EIcbId3=*-%HBCDy0~x}9b_@#ub)q?_STK{^;}!br zvuE3XGXJwHMRbdwS(K{ltwdC_Z`L!J<|5H`{r^5u7pU=YqRS3@ziVopw*qz`>OZ^8 zY;b41=}TYKKAq0~=b=~jRTq+~Xd~wq1P5K4?fXz=@ZbLXJXFfs*Clly7T^5$SXF9S zTaM?7Y)wQQMQ6t}6D5E8_|MUwrSj_#TJ|z^RR4?7Ymr7jD6;y`F#7&M?0;Ro`0s5d z;{P{o+n)XH`=ukxn)qLzZjB44A~D;2ZDj(>qu1nl`p;&w*fmC?@$vU;Xt;_0`9y5I zZ~iyidg3qu09mO0LF^uzNy?b4#9{#zCjazLtbY$3bqf9{8l32mHg@=iAPWWL`Ct3k zKyT%YNRKD8&}_(Tt2lkQ^%exLnouadSh83zYtQk<`ACDCEv9Pc{jC{?8r0NyQn2sM_deEd`$UD{5;S>QRe}%hZ4S>B-leOxwUhUC9a` zxYDb>ih$2oxCAd

    s2HA=zG-y&4ojq&u0-=hyHFAm6g$yL)W{GOQ+ovz;OLTVI~XL^!K^e zVQx&=hY1Df9@tb8wu_h9jHDJ`R`l+>S)B029$TrXQt%E7Ki_qlyUs$A+*|Jg4~S>( z@U7Zyx$emFNxo;ZC!yCtL+@bUcx=R?St#z`gJ4%swXbwigx+_shyo=i)a35H-K~ruU&c{2Fhe9|$wIR*!5sDG z_NG>jt;0OClE z@R<$e3=7G0dQgmILmf8OTwIF{s)6l#isrFmT^uer1?>#I%>CvM zBfrza8B~RimX%t{@=hIe?|q+GF33%xBQ;YpI*AoOiQl6$QL3UYZx-gYudFMV^nK+eaaq1uhb?PyaTtFa>Q5J&Il1HF@6)iE#yCcs zeyLPe{E13D$B^7^)4##*PvLT^dqUyk2qHE`AGfm)B@&A!R#JR*jq@T~W#7N0#*cz- zE`CtpV$F+T-oqf>HMm4-Q%SviHY;Dd#A`v0iwgQ!xd_Bt+sI!;`B(_ zHRtL2-}&KNRVqoUbkHEh6$X1VxFLVUqkyY)0Rbzl2ItHg6sGM%HcLk<%$lOILI5^oW2&v{`l<4J!**0sf+lQweN+xjYWTZCsE{*7g4-Z%1 zyrsK#Eey9=&bB7=E*y`FqU(|I-Ud4ypT$rjv!w#OWex38RIEQr@6XbJ&)78g>EwC? zn8tbK8+Uy@?Y&Vzjn{bz!W&#R&($!LkUJ`yx{3Arowz9;E*>teAiWYb;$W(V39LBX zA`B#rnAl^<#cR3w*(BT%ifC{nGdovN2S6wFFP>+4S@k$Gcx}8;B12Wf(?Q&M zh&5JKDU-=1XM8UunKE7zLFw%5pIg#F5)NFGZ5p=))e}Ryu{9LiYR`Q#o33!_Hn>oO&Gke=Q7B`D& z)1w}TRRWyDs@M8>%8i0l_IYu9XX@40^xgU)_0=xUit*-3IMdb1O+SS=>R{8 zYtHih=*A(uq%A7uF#`w!GhDme}(~<-% zqG%(zxf!Z;xAB)feks3?bn{wMP405h{2l?ms)89QN9dOA;VrR4P3Goe)vSm6ho&nS zpkaudj-G+OvA(Txwt)0n(6Re=q%V&#ZB%7ewDZ2)Wd4E);q`R$sqdF3KV$XOzwxx> z7Iw-E4Rxv9*Ii-Mb8$n%K!W2kBg;ir~uu#w`d>s>I|K(sotiVwk6&@@%+Io14L->09&ncO-Kyksj zUeQLVli`BT;a%QT=gnHw8*9nM%vh~yv!NRFc{j6kgAR(REH6CtooVqW4e(ekY}NF% z^NH<-?XbKs#9F+7qPl#(_lq;K zC+DTOSf3z^q{8i$<>gBz8jt%`3y|PWH_;}6GJ=K|m5CbId}QDj7(iR$LY5UF{`rsl zNJ`E+ud}K|_^aIo;V1X*zS_-0A$j49j3;Placc5q2 zYOv`GhU{j@f$sbFdn|Y4DBa!WyIFFYG8R_-$e;;WX0pCISAq?g_GYw`k?}q8oismF zN5-jHpK!!X!dGntukC5ob8W*p3!5j6E@Q1kHZg%dQ$2zWmlyp*J!%=LJOhGs{T7O~ z3{K4k4Gp2-uLz7S3p&|S8wUqqbYnXB=h}Q9#V2|2G;3r%Rf`}YZ*Iw^2gzR+Pw_x< zN9lvbn?-jL*zTdeg{f+E*(|=Zvoj&m3j$DvFxH<{sn68x!#=wF;auF@?P~FD! z`nO?yaf%ZWMKe?D#fMtabuyN3YImE{TVg`8vX)!!xzS;)*}B_uyl!7=`CQUzgD$Ii zNo$ijQzC(i5#ZYt0j-+WDt;t%f~^;_XIif0mkbx65Es4z1eU!@xGh>@y@tErW7yX`9;B%Bqj0I;@QYyoF>R4Z!|bcelIisO->1Vz1_XR2|^)D+yzNspacK ziV5bCWjiK`zn2aDGgV<59R2KEQvRD$C}qJXUM*e$kcWYp^8KS+%B|qcYk0g|;||?I zvjI8V#xz(>!ntUWmr}U{Rxgf3h$#ej>b|N%mr?BmF>xvmuV;dJvaM%vz@md?tY1G} z4-a=i&*T6OtBq0EEnOirf%L{Jw%~w_KqV)lxiZ?bqdm-7!oD2AbeS`azfTEo@yw+i ztFDJ9xF^yE)o1<=Po2Eo(@?45+-#ctVt5$u7ZfccF_?Q=6H&`UIz8!PW9>G=9#FD1 z&C4jc4e<_~@>}Rn+B+qitW0jub+wPBG>MJlxLRa5z8#xowq}4p|9a$=#h9c>6AOR}1yzHgCSiF6vD5Zm6{7}Y zxN?i7zI{L@i^$aYtZO}wFGPqqJnM_|63pGG(;l_mcrtR;$3Enfh^rq)0lr;uYkr=k>pp+P#OHon!Cas^xT>KH=Kf@Ef z!c?0t3a6mk*(5Wt`^$(oxzY+>dt|#29YiyhGe7+aoz`W<#Za`rpb5F9km8#`X^P7cig)t5 z3f3`RNBLva20Nd*xp;{VqQx2&5T_1A ze=$T=A;B!#;kWMyT9F? zX!MjI^*-_DJ|e&1)%aRPBOb?gr}84-eq-d3#8Vn?$Cjj8FI9Fp4U%~{oAsk$$Ef`_ zwIYfd)j}X-6hS$fAW!C6jZ(+s-{pj?E043hI#^xIyQag$Jm5ZHW~y0UWyas%ggY9~ z$Ff)P3JjHbQLa(@CWeGDFfjUuMkWGMlYyJjF8E$}Ae~an4}-<<6o1jYGmwkkWQ3(R zdkw$K`fZY;O#1;6_(#WwprHu%^*pnye2J6uV>Mab@VL@@m5637gvbaok=3}%5!Ipd15tfI)iyQ}V^Z%a8$PXLBPHZ-$ zz@0Csr0i2v&$mt=0&PC8Y)`RbaKFH!V7A#1BvX@bL~L$jqO-%#!y;7VuMxS{P=SOZ zFTsy2^ZcfIIpJCTct7S5`wZePY8oeK${Ks6B01K}xwotOxqh|$A$at_j<=~?WpdVU z+`mR?H}%ttK0QCQk-YdgI6R#xPO9Q9>9!f(IRc)p!%L61O|B5(<|HHQ3Ma~GhTJKy zCrr9XPaqCeML;JOSy)d-CJ?@xFJT!vLm?)#yhAVB*=cDRr*lUHA0(a3LTVHLq>a^- zc=Md5zHH4~fs?Y6sDZcD>x{%D-ahs7v#_<*f&fiGvcF%ezCbg34Fhwf;SdHkgg0$( z|M*W-GM2-5!>mAP6SR~Q(dg<1`3&pte1 z#a{bksgZ_e`X-^x*HYDT^Yp&dVW>uUBw9|y&s^(p)o7DcmSaBdB@^3$U~F>HB)XP` zm!OUJR)1HJAk+A9nAX6sIqh`$6p@n^{F!xGt=i|A@M&3n6)8_2HfL$Afpea}=V3UD zA>|U{is6NSOVcaYvG{psGjM^Nr}DK$cwCfR_TD*zC8b1S{hVesuw?nJ#gpGy8{9@X zc7CI|?s^w}KUH`CQ$VkJsWMLc&Mf6DqT$*sh<9=bot5}D79}sz zy$lIn$XD)HzgIGDe8wk3Rk1 zB6AMAWa#!5>hlg0?VFF&(yuS9-P~OFiXiw|-XrudW zruzu1dG%UJFfQ>z`I6IM(35MKpuuq5w}+Ip2CaZO74^>plH4Ye&e7Q=WZuQIZNeM- zs;Wy9eN!sd&k!?h>G3M{-U_;N*ZKPu$P=U`$xOJ{y z|AeBm6=xJ36)l%Q%e3FzRru~$7?DiSFQEh81cX{?S)-5JfkbH@iFRXyWM&a1uJNWt zPoCcNB_BG_XkCmVNFxdv&^_I{BOuSsT>@@hpUup{2 zPIZEY!CZqa4PzU zvh{TFP${>+ZA{@BFQJG#J}!pFdH}(bUi+WSlgP&VIFj&O@U+$gcZW#+;0{t_J#LG+ zq;BjHcvRDHwKl+RKkJ|Cr>y1RWH%YJx(@H2A(Mz|xdcX%)@@;M&+^jn(+d+JJ`j4L z0%0?h%(Gvtl4;g~CN^=hMkX}ZBk&5M5BH*&P4K2D*74Xl`!7h!Dh4_F^C`LK4GA$_ z#Ir#)Ro!p}l`E^YZ?HdWQ3ki=wv8MgY^H{vGy>0DE5g&I<2Oh8I|3C4Uh)^uHYoV# zp=~M(qpaWwx+@LT6m!l;=$yI?5&CFUPer?s%o{3m$7M@&Fn*LXDE;>Bi{S1^wywmy zhmlV-HH#dfcLp&@|NZ1N^ZZR#U`o?sf8gxo6yC__NKrh&`Bld~J<|u~miyN-#2hUW zAk4q#dtY+M7&*TF=~TMj7^z&E z=~K5a4t2V3ms6tdXA5ii-3hHnTHm49IoG%kB@~2q1jf{uMqm_QsAza#PG6=l!2bt1 z1;`DxC{2jTS&WuP2kPYyh{+Z+XH2|xciQ<-@DVA}DRg>RWog*nsY~=k%iQuz%BwWw z_&u0xX(EA!z^u?bzN~s85h!y&pWc)uYoBeR%;2eS zDb%tx^5;6;A5WIP@b~v6oTf#7cqim=#@|Ix#Tas{w)DZ2diz7Oz~9u9VU{hjejrCF z)FQ6O*-CA?MHnt1u8>ohos*Npj&LchqEY^xXkM+S?;Ll@711r|Ff`oasXx?LqL0f? ztfOtY2>H#-P>n->yYk4t(u57+i8ymOwHJ!3z6 zgKhz>a?lZ~uK%OzpJCddBq^#WdDnRL*AUfE!RmvN;52-=bsp`pCgN*o5y}s_$^Rwb zg*!iXBmTye)5YIuC;vAF$&}l^E0rxIR|V9po42?0AA_{A_y&)#wD-3i(yZB~_NkLa zhCkaM3tI}75z6^okX?FQTXfG#K_`8VrO0Rn8t(eK59X87{{Si3B{Ckh&8Hjbz6?gQ z)`B^5Dtkesy8Je9OyFg6#p7xO zJHhB9%-b4b;XI{vib6l;`Hs3L_8>X6KW}}D4@U-vDjJ$OxZSv`T`VYPB%v@wg|12i zEf6-U!YP-OqXxcdokd(!*V2CAD-6i`+u<}Zlc`u1czJ0HZSO0@%nO`7@0&|xbt>s1 z2#dIn=eqGg@56c0G6L2KS#$e*tk~aRQ59H21SBDG`M+hiDEm4rrziPm#}$zT#{xDJ zQ%qSi!?iB+iK*sW<#m^23VLvpfa5~uxi(6PlMT^&ym-3u41F%WN$cmL*s6p51Kj26 zWJcE`pZ;!ep0>ZEZpJ+vqbydOiLIrYw>LZQri$=}Y>v(?&?dDs!_L9%kf$EH{6ye3w z=C!x3C%RHxX_2{?;G1vr96r0}4Ne>PW&j{Zj){ zQ8CWnz=|`rHB$wa$}#Dt7L8Zxpw^YOO>2wv{-Nr5P@6r@M)ExG+nelEh_@Ehp2}Zz z>dM*pH? zYt>No_@bsPE+Ht{K(|o&h3#j9;*vu=(9tL3!)4p~tu>unSLHkbM~|8%$Gnq4SdZpo zdq-LZ+K1`gD&R2RCD0=8NVgdWe@6BPb9t^sM~n4*{*s^l{H+SSuaDvK@3{H*UBZ=} zqy3aI1@+!&IfeV~DR)%%mk?3NZG-%bbi$m`4A2EQ6Z1Zc&8Lf8VmwzziygS}^!DQV zP1eZlDWlnx;1MX{w>VbHOMx9-$ zow6aCu=b|PJ!0=-w=Wk=A)+KQR+f^JfM1iQHh4n`6PE>NO?-aIrvNqGW^qXvg-Dqi9sM}SgKb6pHEitXWSOOX) z){~2UuDT@cEFFoD zQ%i%N996h|1VJwS=0!WF3t&r3f`voZ&I^12xht9lWnbG0=F>;xW0S2d&UZ#jB;Pp7 zdY8u8=&FI#1K^||#Zkp|c-G!DUv^zf4)w=S-kvVuv7aAvZmQBw_v21Phm$FdT===` zOeCe;Xe(8lB9E`<{6pv>rCH%zuP~<>H7vJNVyrbS6_u8F9{23SnG#HvUz3jSZ_ni^ z?;9C2WFn>-X|3p~HzwiD^%Z2Q>@tULj25cUF)-+vonX9B*}qW86<9Knjjv2@9Al)T z86Ar)vL@^q8zPc9C>z$n;rQcHee3H%W!9+_(Z@e{MS)_?oJ-5=f)7evTAVWOH&TMH zWDh0pc@1Bc;Uv*NLal**YeIxYut!lsDKbr&xUXZGEX2d{=|C&5mC~_25cnW#ex@kp z1Vi1Xk`yj&BCTa6Ymc)S%QBzK`kwgo>#C||4?41G8q)=S7uO-pf-fiKjp^yn7QHK{ z9IHs&(;5bwio5HALu3=@V~d`tQCI27x%Fs*sU;b@cq;Up&6Bf29ILl2c3~0S;pUc? zq5r(+7jc!(KTL8i8Dp$cf0+GBK1(7YUk{y`LqXAOY16)Whs2kY_a(vcfqB}*1AC<@ zvIcS4qu(p4Asj;b-8K6^E1qgIsj0astCLm4&T@?H5o7D+`S306>1|}@JiWL`oNvTD zD1s;S!Lw0+f2IRHbF<2kAUWp8$U#7fXA6!)TQYxe~c93^Gmn+ngIBmi3xDL zl6rqj4+yOSDo1+*s- z!HTY&r%b0vE%Z)G_h9PT-a0ZG`&0N-1Xhh>9}%adJWQC+wy}^~oSxe3J9Ro|Abk!}&j`=z#y`kk_6nPcQ_6E%+14X;T5jl zZ@D#c*@gh=IK{D=uX~r&w-de9xGn^zEr!S}{jJ+})koenL&$KXn$Lg=Gl6Bh&6Te8jHP9d*b2eZ>bL z3!wRbCcJ7|a$V<(lVVby{BWzzhL zpFl-zr9{bFY^icl(YVZc-ZXu3;Xygh>+O_y+zq_^i+pDX2d5}yRfQ%4;J&lsi;xSAi6Sk|J%x~7$p zqCROp&LE^fM_W-bC!#quwTXUE#@@bM_u>fMcw-BH!KU7-=BCLD-a1vgTbOqkMQP1n zrUvso&9F(f_bq|^UHa(bd%sEGB;;e!*6(yT#h_ELxsyD+ddug2Vn>`bw$eib zj)E#qEqYG&t=jf5h^@o}>Z5wjK0VLv$hJS+xUsWu)j3up&ZIPMsWWRKEqAzBlv2g! z_Uu_)*SfZD8~gg`BV0TjRhN7j;-xAfYkJD*d0wuBtxaX`w1P|v9h|L=URIi~sokN~ z4L%TCdS%U31-qz&t**N6D7{JZMOW?=-Nou!wZ)b9!9;wWJ4y!SJJAGc%G^lRC8aN0 zv*>j@Y14Z-ZCK4hT4RT#DwfOMT3Mv-v#x?s8zh7uV54P(;T4SL>tafe%d$d3-Y_N_ z?M2tvg5EBje~UFdAR$49cgx2gF8w*iDq$rz`h`{5BG>VtGWXl*lmAI!0)C-|jLKk} z?p1>XVw6=yT~`Zpk_6lxs(X~BJxhmkD3~Hs3rq1(E-oxT_mpZ@SAKN6_`Jt#2-(nI z-`G&UO@HjX56SUZc5Rrywe>zNFW^7Vz_XMwvg!5M#h)6E>E)xzNI#w*9+suJMrWsD z>8TDXg%hINk1eTj_PJ?kHuiD>L&7JfpBPI(kz^$4?$;%)#e=)9#EyhI*CKQ#`D>av zU<(WqNEDo00n1EZ+zH1dr{@`K4a!AYK3Bt2TjGa)(7757i|VIy0N>5spKXNQf1)bX z10KI(Sh#46JZgfs>JE8t-HGXe>yesc5;*;f@Oq!mp-eJeNXLCA+NZ_33a?l*(=7zd zI$z1uq`Wi_jH5(9VE_6s5j;KwrHoyQ@NGC(gD|3BC;wg5^;yZ%ss5+zIun~N?B2^b zno?%^gU7voiR&d5u95NdA`_LURJxaHoM6$`{QPm47JLB;q7$s#;*zDOWmFC7QZ#O4 z=sCMc(^0LZwq2NBah#rNf#K0wgW)|Bo4I*V^(O|iSMYe%9_c7W7ufigi(r1mlIp30 z=HZy3GOf^5djtZNci5ng2p%1m#Ot(JU+nT8V^QGm=MGLc}V}j*II{| z#7*U)2nuP9S`DOd1u5}W7k&tGyOtBAu?~S-R>l1X7*6I;3{8DYcZV4pZyB-A!NuUU zy8C}jJ%3Iel*n|UHANLtO1XpwaaMQu7J^v93bj*G;GksE7%6m#gV_4|y1g9UG)3)v zHydyD=Ju}!-iUx}Hp`8!u;3EC8G$4gqnI&opVb-7YG7(XL_}Wgvipjt44FWw>~<&y zMzv=1jg=iGm4r*nO@jHt6t)Q=D3v7D$s-4C@Em-n9PNGoH$7z&%c5hsMw0av1PP^t z=;h`7-6bB!i^BJcoK|BlE{g>=thw}6N~UfXsJ(4{5^?QcHnT})#$<@#J%Q;QZkfRG z{^~2|j<>)Tr>HNDPO)lszf!byjJLmm)-uU)w>D_DFYI#;=1Q6cnH0PwlXhLTB6e4+ zEpb`D{V~@vHxEKE-R3B4mlWxxUFBU3w#Yuzm2`Co=bfC!*4RdH47%wpF{Wz5PD$>( zVoz9ECO6k!oM50wH~adYu*&Tn1;FRez~@D&knUkA<77x;QOcxpSE``&^85D=PWB~0 zg(}*^_zgJGnWbu6gG>r#dYN6{vaH+gE>Dwp>QuIkmPM3D={WxMrn=V9!Lf|b&VrVW zQv3juiu#Pr2^v~dbWyUTloS$S)iipdfUdVZ2UjP&MLlX~1BP-1P~3^BT&!2M5Pk-{?xok8g2}Om{aTJLaqHGQvyd%;3Z& z2iIBUhV%c5S^#0Dj!1DSfuJbt=96AjOk{GFXi>by-Y+Q&?h1XL9;d1X{!(kFXzh_{ zq^g%b`1PA3*ZJXv4#^JDw+X0PvFajzn|DpvK%BeNPHqm!tJJ?J&TK9qcD~9qkHx{! zf-e_&{T5G~@V6k1T)pZ0T=d2}dG*g_0dT^6h1`N3+Dje?PxmJ&Ga_(g-m8I?QIfus5h`R>mL z&Vk#-$;0zcZT~JZ+^TqqZms6tV1Mm1K=0YY)#zA_>K`C374;0_l1J_ikEA@fwf3KG zI&;VNcRTzhJ)&EauwZ_=)!*`^E0oE$MFORuTCIs+>8x?{Srb<&D z!tw1tQ`bCkPJiaTfI2U2EP!E#usr%C3gVQGma9#VrJFU1FoBW9K;6kB0b#4xSbs;0 zJg0qp^&LDvY5FITcH|uY$FHk81EdmaR6tg42YOZ6 ziR3(|#{~b&FN;2$Yre0=0|4X~S5+x5cwflIHT{gkK=~hs0N5g*sTn;3Xdz{ff`ZTw zWY?>q+oC)drxkG+FaG1u_iqw^u=Y~3mOhjwXTD?CA=7bolM4KgvSZEPUQ(!l|7a_V z6MupSd!jIAx&G^?M~k5X9+Fc3RikhASo#0mLVqoufBv4-lmGhb(C6Yl)Y-mV)CJ{8>A?VGi2L|1g_)`?7KYD^%=#qZAu}wxpO>K%CT8XGPE>=^4j*t@g z#nteD&N=@_TU!X-!bEu9&L&=Z!9CGK2dO^DCKe8u4#iP=ecG1sx}J)!COth`mn)L0 zO{3!hN>=9TEUsAUdG?8<`n0K|1p4*O&2?S4G=xFbc6X`C%xk!;O5PiyJ=A(49fuEi zrN?I1OEXbZ4{Iq7gH9*Z$fWQn2?s{7&ZqmFgsU>@jgJoe?P@9IJTB1EHeqpEHaP2{!IPSryrdVF-ERpF7Hg)=BAU%A z#3GWd_M%gqzK-z2KUa3njyC{dIT~t9l;YxfNY88Kwz&8eN$A|hMKSi^hNfw|tfuB` zF&a0#Ixl%`N8h0n^GQc4l%K#~{;sSH2@YZCAMT&b@V!3kaM3e6?Un)Z%yjlCAs^`Z z!-IFtiC&^yO7b|!hv0eT<%C!cqgEIbFE8sR2|($9dnxY(!GQX@hJv!P&)jnwJY_z$ zaSR%Nsx7CdceTUD5{~nS@0)MPs>6Q8QKo*CnhL7~mFah?usiGWbh?cGdEbFUK$5qz z^2yEZx_53)P=gF}VW*^$s~(-H6Oo!04XSxx!rc&(mZSfg3RyjW*%$AnZ=OnQ7# zN8q{TaXSnSJ=v7GeY>%{oAJXpFkjdcuR1JL!OW~~agm==LOg(*qK{o9~ z>Ew4Iij9?(Z}W#68z1%bd@ir9=xcPu(Ybv>(>yOYHn+BFR+OJ6k01PzWcA836_ zisN*h#g9sORF&`jB%l{bPyPK-G#jtfNcbJTii+k@N@ye|$~X*dr+Y6>wyYoe^v*E- zktjtDnH?iOxBJii{r#Bq^gODNmYJ63MyJBE&rvaPantQ%sYIl1YXrc<`K*3t4-eBz z)Te!d@4o6_yF<58^q@<%kiui_^SgB{_#W$M)lf%=(!qKoO{o`kS9cfG$F_NF!~PX9 zpSqfkN2RCdt@Ogu;v%y5rGHlBxp^De+{hgbyR&#$K~4Q%4Qw!K65@lD7}a1cPl~Ku z94g||^}gTSJf5t##DpJ!MVP=xDMJupQcf+zM0#Fd-<(DvRpgwa za`qW^&%i=goLG-rX~?fo_G;md`5Jl3Fw>9`ae2Fhf@XUAqUlmio8sG49+laT_5jmh z75aGdnPF=>Mp~O)`C+v3a^{mGnj-h=+XxxWiwR709?Vl@+>YA4^uACe;w)CRe{!!? z>M=svJ@I?G%y^8xupry;~Me%AH?47=3brP*8SC`O-1pKQ^Xd z*e$1OV-qfLYnC>3s?BJ>UZxv42$7$L7vpF|+M!v(^w zLHvUMjngf<3x2HmgdFkAGCwcy#3*2KX=xKm^k-)__uk&!u%{#G=;%`zF{=<&S64-4 zZFFj?7j}y;OHESz__$(DI#+3op?GX+YR-PKbbUiTJzH^@!TQ?6biRsZCV&?X|P{M8FhJq_cM0d;LAmZ@(Ta(bFU6 z)3|GMdz)LNqAq{!P6l8@N&djn*idgd+iS0Rw$AzAqkPcRMjZ z`{I)1X-*H~)(h=G4KCe zP4enUMdHTzsJ`LZU860hM5HwGu-TW?1IsN|i-Pw?;Vl>Y6KEb_mGd+~=&%P_bVx`M za%}4*uoGPlZiGFYt!Ji(h^lN3cFzK2-4@79aMF9dDIPI3h4n3(cVviLbuOF!57D$EIe7pw+ z^1%}*`z8jogog#elIbt7^ZJK|bfT*C4@u9GZQ?0WPy#JF^A%*?^jvlX z((~kg6mlELtyYarpeo4E|GH3nP}VT=){2=l7QOLXUBibnRd3zWWshs%0;&!=(zFfL z&_Wr5xNN<+k5g$n#;2=$Te(8Q&o~9_=m~k5goJ*e*<#a5AOoQ=rc>Jl389*`TWagX zNXAlrdCg@#%xn9QmdBBoA$0Ogu2JZQrsHYKH#K*<;BT-`2 zIt!POwA4^S0w_?U26-g8GbWdzZ@sy>NnwhoHn*@aU_h(r?VTn|EH~B-r-wr;x>Ulw z_UiBP!By^1xT({s-!2-ubym9)%6yqkPRqrHmrSx-$s6~x=#Zl1ib~nNna!6~u5IV4 zhR0_o+O;kRE53Up^Kff&=mFq_)=R@ z%sna1b%&$qdN`Lo2AQUD-^`0SJ3H@h89? zCJ|5nfkXEJteu<`6~<_dv-8Yd*2u1|LL!tEwY|vGl9Q8jrNNT+2fPCl6I#d{Q<3p! z!@#%M!?3LK^awEI)+{U{?*=M!p8PKpwIb~?54#PWGmy4F+#9bB`5==>Wr~M~wC>)7 z8_W#Sa+@nKVXB=mtmC1|J#9cczK#jeg0hQ+6B;T9C*AK}^EmDN=?-mFM=~e}$5VL; z`*LKOt-6W#pGWl65RTwt5oEj+3s+Ki_0!f_Qbr~b+CK4Wr#?Bj>kLEDnyWGgGI@j% zaQ0O(*!QS+_Ck_uhh~e^5JSUs2X`T(q zTQ$!4j()kHljK*e(`ueg%n*94;<#O3>=|{x@Pc>oG3eHPc3C{dM8>98xU8(CEKjk^ zvU|b&hNO!N=TO5Q4{�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

    m0k7#Q{;cP7}Jr?3%04ZiG)kA`JgDb@?x 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


    QevsI;FP7##VQHMx0uERgQP1bU+Cs8b

    VR)Dn_$Qe!v(Gf}4$m*KGd%ahM770gs*^{YQo&e%yJ|124{pR_=;S04 zTJe3Hj*6E?X=+somCFjNGO)YZa*LmA%%en;ODF!DFs$1baS5vBQ=Ow-JH{K+h6iN4 zBz{R(kw3d=*JqA0soXHjPL9w`k=7v1?DCwN?)$ToyH)eNcA!ozI;DBoe$7Hr7P}WN z*%uTL*3zrt*tegNTd}mt?Eda=UjJ~@kOK4Nd}y-l{$j1bD6YYCwNf4%jzTu zTPm2_)sroR{I-(Hj`--7x=Yw#D5b9GmhGkCdYkfv=5>V12mDtuaO9^_RpGRY74vor zw1RETUAls#4ge|)>i)jztzu_g{pIrYg4ortANnhb@%53bODu9CKISu+dJW6cZ5bgW zGhB|_3OOS>Dte{W8x~sWeeE(2uCIx3vq1d(>-(x^9Y~+QN#@jN*GnenB%{&a0qMj< z7Y%H&Tb5w-rg7=AnCsFFig<@ruX#a&nQRSR!ILhR(?%+Tb&t0_y%c^wCIKF2MZ5G{ z*Ib)Ve>i&l`o?CMUkQ^y6HjL`A0NvBFC?M4&CTUy78jHq({BT1-04o+10Gf1)7;5Np*B2Qa z&IyriEQoZhB;j*vWeEh}KxQxa^n^z+7D zr$t^6t^u>AT>lLZ1qJf2LWfl}#f(eK28RQ2IBI~#KPCX|iw%m4t1BI0==dqwHcjqF z_?`{txLGF}AL~9i3b>9wScvDm02_WO#+DC(oI$|Mi~=fvU+3jP*@^MyD;F~BIBO-B zF%*-v1zUJaUmcsH>OY5PkfNm)_lp|S#CY_oS4su2P4QQteL;|=T6=Qm9&)Cxr2#)J z^Hygi)?)Lf&NkQ*Ci{l=c%ZcO3VH~UPIa%Q{oIS^3h&a1*Y|@Cw>Sa(8M-sGeC$rI z{|{|{9ToSsYz@Or2ol`g2@>4hH8=!!cXzko9w4{{cXxNU5Zv8e8|Urpv$M~+_qq2Q z&o{>Vu0it${j*-Hs^*+kwVEc0?eZazZ%8hubGgD{ipv3b(!DL~GRD$bUh1OeD#W~% z3L4f&qny@Mf>KhNeYhCSv%1;#=_rbI*L9$$?8w`gQ|9b5M#kx>XpHpE=Vs3;pR8Z7 z84l>$+McVblw#vE`eS>cl3&J6Ka%4yhz><9G1IpRHfFXY$*yJIv$(h*+_Zah5M=VH zsj0zKR~#D%-|Sl)XFXS&d`jsI3K+WDU)o>6I6GV0ipWV%k7K?PByLwsLTZ=1}X zoOdsE&FcM}D{MHLI-W)_pb!PHT5AoD*=sYa^B%-#ud20wzj5-Q=$tCOOjU;u6ZFon zY$cLwc_PYS*`M{%+_&-@WTeO+R2v^yIxHdW(~tE&5|D%y{i+!PyI8-f-ZOw2x>lTQArkwW|l zy5BTU>rcz@%(hUo-@Km3h~q_^+n0Rkot@YC7J%3ozBS@+y2}?82^EGgn9N^pr@Q$! zA(#KzN}MJxVg$FH=@a#Xd|ckLE;%jD(9%@SskEW(WmC28Sc!i=cOXaEihF?P5(Uhk z7$ob)#>cB`T|X8$L-8fw(9#+%&lIhnwLdZKU1Czp7@YZN`s#QdJCbPh=~-Jxq%?DC zl(S}!YcRa-0_~lz%bYY{{RO?)yyT#f;OofChNS|>WO)=61Mfe-f>=5$5oD_cT4VQfZ2?S-x;5na4Yhe z_QLp}-ljdL25?T>9fE~=e zYPa$9U}!~X`;2*AkD9T4Apc8nC`P%(jOskW3)n)F4a5`hOdx*_X}JKLSSHQT*mykI zp1#`fnB2iJva?MA_5awdYECnMw07(wDJi*F=Y##>$u)b-Lezw(>*O8ua9Bmt1gBC4V1qY1mKD*^Tko<%*R-~X?@vpv`U>)zS*Z#KdI0d4T5 zvdrPE7Su1ob-@^Wn4%HiN^Lg@xvH1Vmf6K*C>B&zwaHm&Q&bCiHO${Y81r}ta-sUr zo03fH5P7HO@Vb-~&O0{Q!29~HWm)4&u-E5%runnLhZ>CB2c1Z) zjP;KxY2ophEtc_CL}#Lbh>6}JJDyZ=n&hHTXmIW`zb6nMUv!bz?zxqAF>cM1nArd0 z_xC~v_=1PfFb1|o3!|kS{3kgbF8yEO`-9=-(a?*jl;35eLh}Z)2zk&yJsBFuCtDpA z_yHXe_Qxi8uE#PK7sr>7Yo0;I>s~gQzPN>a(3TOK3-Rot%)%Qa$kGKKKJg0tw$l9}L3 zvpLz`>8$r%D73-hXlF_zEMvd@Z6czr`2v>(2fjUL`$+wI%W3O=Q$u2G-~0Y-wC(i_ z1+=){j|c|HQ4~ywxU7lIK)zsEQwB1|&KoSv*XLD(Cj#E5ck*h2zPS7UoaaH8G}NcUU*kgdyerztWf#At%ije}~8q@?c{ zmzRk2ns{s1UMSZOX&{J=qaIuv7~t)U)iiVGkV?ZDp4{Cvc24AXzvjLP!}?*Z0qn>Z*wcx!>Vh>&Y}+ z#%&A!6xhUoFT0|7{;W6{6YsHy214>C&wIVn`uw`Q8H?rB*V81k)04Dz9UZaYS%V_E zE&oUH6&{z5VRbWTUN7%1ukI}Cvh;HY9Ok`aa;Mp8!#LYK-^)%Eyv57nNs;hZzJ}CC z+|l}8eGlo;QOvtaF0oAXugO%xtX*X4KN=kr>qw7Rv*<;1xZ zcIyRaE#6lfI(#p(3Rwc4+JiHb!D+02Ew_yHnv{XV%Lf(fVsSe{f|fI5(5z5W(;J^Q z>{^BD4qw*wio6$P=CXnDCJmXQFo33Cec`-bYfp*98%5^}Lc+}aK21SOH_DYJD4+*z zQJ=cT__EOOAXjSb3QU5JQCd`plT#-^-_TMa@9^5b zj)93@?P=;2upD)QY?wLmncuKlTf<^oVmJ)y?k9x{lB_HpD0WyP5H5-T%6>VKT@Vv` z){Uz0t*)7C&TR4}40~EW_b2^_#MMoRCJm)KInYBzQzYwPMWH2O#HM77fZSU_Nn_#Q z@ji93)PZe3m=f)@~(7!pEn%G=(#E(_G58oCfRx zIj!&?yQu4A(}K|wFlvqu*j(^e2W&MHubx*U>=`&1ZGNIZ*V#*yhcoNFM;kwS6Dm|t zMtpPUx)vFP_@`Sd=jMQ$-C=p=jp@g}nHF9t^+`fvLe=q46P?FreVxuX+^!o2XHRVY z4aszT>C2B9OOwrCYfl?aeJ$4NBcfI1m9#|_%9(h-`>@dmEWfcg%WB@P&*M{3QCmb^ zu@X6atd8vksI?non_g?E`ZFz1q#qjE6uYWRp`@5bw?r zrhS^XpO2(yGU{?_TLo`29_bx>+gXc-QH7p@v`|TWDU6FFxvtBtmGTUn-gKy$RM%3u zc5CwVP?t8EJG=pWPfE(2GP46-Y<0g)>>s|>KEIfop6g}O(Tp`NR22Ce@3+4!G4t^G zf(dqOPvM>%;7@0PEGmWZnEdM6ku%ll8(CKSV8`l*s5@uISjT^e-Mwqe0ZPjBWX5JM zI(@y{%b24nhnodEAVlumbi83#8jA}T6pEFTCX7cr>US{b@#$!oTU$oLN^?y!c1yQ? z8RYnnUj%DWQ!Kd>+#|Ka(y*3Hc^cTb1`soc#rZo7bZl5~6j(@OnoCMb`m3EFqajV5 zG`Iobk}#>?tNtm2u*~=DPFCAJI67UQ`*)gRhD*XOI_}V4JHMmwR1^~R(YI;sXZdK7 z?(T7YHhbEzI>6#`n#25AlGATW4Wy_0e$?7lmFqmY)(^ye)wrgBZ^cQFlo3=QFhoJySqCqDfq0vl(M??=7fQp+V?MTQYKKLETfE4t?S(IIVf)5cQ4=Ji+S^In4Ife0+M!@|yi?cb zD=g|deQ_!-p`7olSi(~sqs&k6fdqOCfj4N&Q>YRsBb^p{^H7FR}>BELS zEyp7ePGd6Gkc(cb95o#rFMe1GAOfynYSgPQBU~136j_}>D>6hoR`7!o(K7%w+GPS` z8NxFtyPj3qdW^P68|+Iin=)L(G`HRE!ZOZEWiPLp*-O!6 z=)q`{%`a~dA4Egjy;|CjiF4Z1D}92n$arEc#nX%cEy$x&;-t0X?b#CH?0T5nK2FiS zwt}*t%bL2=86+Ou#KJM&5$ymG2xB?9G+y~;EN=G>PaNm)Q;1DQoK9AGQ`>bser2=C z7`a&dz_A_Qj&+{90-8ujFw*l}6M3SzTvfk16Sx`iS=0xo)b1m7T9bYn9(JDlG*tPj z!-_@2Z)I3z>2U=N&)2OsC_c<4Vn;+Ah{_tcP}sh_yA&^EW;jmed@B*zi{_gDC;vND z{T&~_D@gA$rcyyc9YH`V201b^Q@(KgF)(YGehjQ@l-3Ubq_f6}uMvy8deCQ?q^6|? z6UevXkkiip^0wNsFfvtN$%iaFHcc^sch>d!kK;URMn$I?WXf_iH~J^eFwKS_u4!mz<#E~Jz zDN%w~1zJmWyb59@HMgXoL{U?XETX@ua*NJXzk5f!?rU%F4F038F0k+AiKc=26P~HT| z7wT-`^LNSWmrl7+CjE4B6-sBcxHkzhU+y#6B0hCd&+udbUEew19$TH+p%!O zYbI-(zARjH@1@~#K18XOAC`G(y&U560sN>8(L1dkTLMT?{xD?Q>DfYV5PpD7_xA8V zKe)GAu@^k)UEicyk1iXhjZgiokC@o{8O9s+o`tUtaW5)hEb+X zsikDOw{B_5`}~9LUUYXdPDh6db-OD&*`CsI~oT&6rvWM%m*DZ<9=&` zB&0WTGO_|8B98#=kbWc#0_AhBw=RJ;Z|Piuyuys^oUI-L@9N^7R$!T{k9-mmPrLMb z!lC)6@uTa6eL~VUPeiYmuc4vgdo5}EHTS)Zmi3%Y7XZ#hbq>x}6s#5W_HF?Mef^A% zufjcP^{2j6w4ca!ZzS5hpA|}H-JTxfylOT>T*${fVKM@8ADs6tbG>|IwtWj{oES5X zZ3qb9u=xg_AG_AxBjEGswF~^?IQq(8Vw=O(9`AnFZouqZFE=x(kNINX4oBE2X(ph4 z=+4;Lq+bZMdw)tO_e^cKT_6H64yI1o&ns${57pBJ*+Q%qxMv+##azdw2^J>WT=UOd zmu^C(TZfdqU!N{^%3-H0WiV&&@YY7wwz;`DsQyurxhc6e{o~nZKaY_8+aD%xD}PL< zmSov1w|1;Sg_oD>HfG;9LB0Ey>K<+lyjs|4E^fT$7Z z-@r_wGJE}WW``F(gs|09nMjr0cBnl$F7sP_oR@AIe5UVf^sK!rB}0h^Ikc^`H@wQhv>X{t!?EYL10D(xa%r^<-`^4{z_C@nrZK)>xa#O<+Exv^Tq!0 zgbg}<02(GbTWX&bE#`DH0rG5Gnyu&1v+YHdR2f0(KiT~@r0#A~8i){PXm_)qagFAS_`%XLcYES6 zW?tiN))tmCElJ;A7mn+R>v)EO^AwBUs!S7X@Q35Zz$GwuYC*5kwP%t!Ss;sHhHCm# zy8Rg(Y==+H)axG`4^6~k*29?=TOXR*0XH%!dEsuE8sC_jzO1ZTOHGM z)*BjyXX4}i>dH3rvZ|%7-rYKyRl6`x22RIb+4)p;i<*>LlKbE zN$qx?>Dn@CAaUp$pGfcxF*A3<%$TClzVR0oh2ZwJSirfwMPl1=f~{qr$UH`@e6<4ckpq0bZ$yNOJ({A%ocv|FD+N!a zeVyZ3xIX!ECwd@-%)a74_zI@|na>$6cM4kIxgjc@J8iarQAz1L^HU4=0S?A+M?3e= zrK8YO{_kh8?O+^93B!Zuor?vGPUHy*=vuDRyn(Lg!~WhM4xBt5ZwbX3Lv;Y@rPGdsyl;c}?6Q@!d+~^CKU}4KPfqZ#n7r_!W$CO|>!NeE zNFMtT3^q0t(9qF;%xhLyoSbZp?5eJGHH{X;JGt=>#t@L)N;6RLDns)eh z)84wB)=o%E_U{x5F<1CUCidP*%}#xg9pAv5$4KVyErkJV+}AazEIyLbuU>qBL6atQ zgat|8R~_Pe&!CyZQczG>Z=kWR`g#$V?Mw|bzfdsk79k`gsQbzRq5%YHVohB42Z>g8w3-%^S` z#WtaFE@jEzIQMgD@-?Y+y?=H%K*3&7;gfP8)GY~5k!nVV9uiqmUsgqw<+|pTnA6jSiiO-OD}kHMQlSLrv8Btm|VP<9=k8qudI6i|GuP?;sb zt}kn=n{xiA@;PO%@qI|^i$>s_%KA|hW&&DWOU&Kfgsa^3h_|kOp=;OlY)osVSE_2# zbE8VyIh)tmUb|&7>zzvvxaa21MtFHtba*(E!_}ny$&FxQ#Y<@4PP@!n#gthd$l7|g zynfZnUe9;jdbRq*_TP0{>rQMcdj3w?_q_AiFgp(yE6*-#`|jABa>9)>xs_1aIBM58 zr=+edp|1YHJ&5yTA>r;MerFZkW??jf)Sn`os7-(HWY{qy3jZV#9G9mO6+BtKXr5{Q zw{J~hay~Xbvz>{lT+du5x6y#~&zxh$V}>Br9?Sy#ZA^Vojm(xec#xto{k{E|no+dB zPc_Okx=qY~t~qUuMyMXQ=B@I_Qb~P%kMAiZG)65P6xr{fWGm zOSHwU_2*Kik1GvxUv0AtOt;7f;M=|eDv?g$Ws8(?MyN-I#wWK94g+X(-#$Reo>{ap z6N}XHUJhxmxWBz2?5Mjv-5cgsXa69|B9(Yjf8I>P z$VfJD6t%Yf+f7aJ$ z9v`hcWz8U(e{6|b-pxHIH4CcqJOF$TqH+~Q-#*_HWIM4h1v5C1)yz! zIsM-MrE}7(qd*7twXqK*I#>rDx^Iv6F8E7A^L_-hk|uQ2 z^v25_w|G4Dtz>DK|Gjr}`VtWu5~M0b;*z;TvwV>N4-d^=&#$=nxc_c8#hKk=%w{`z z41#a(SS8s1NcAAOGZJd#9j!wWP;=mDU`v6`&vTYtPG3~diU1>pL=MLoB* zAw+-v=d>tu`~S14^o_i>BD2>Uk+;|X<-^H(YrLU2%G4p;O?a5$ebME@l0|V5<^EHC zma|jQo1{H>Fxa=GwB8(`&iRJfzkM4mZipuEzg}4cm6NlT$?n1o5`jS5R9#e*bF||j zFba3hMZjq5bUt$*^g2Ia`1dv7{-VyS&ZZr7AU#YeJduG;l>3Il>t#1o6T zkUwdS2huMKqrzZS+}GJolbgTUq3%?MK$7*V=QH?X4{x)7O;miYpG|A4~h4XPq0F zK%53}?=+R>_3}Vcdi!EKOE6g1J`od*hKf5_M_oZd#PHtJ6KVzr7v{<_h1FR^Jmg<{ z@B*uTh=z^L^ZP=)Zg$An@E^YwWXsc1Rh+2a zk9o1W=U6k~-#*75C|VRwYg=tA zb^ZEqd)RC0=6olOB6dJN`yiunuZ(ANN4^ zmr_bvI>TW{squMd0&O4eGano0IYykQ?@221-?RlJe__wjFOG%X*EKArurWN&y^6$~ z_(wD{<7mR?_Zu6fj~E@xaWCARu3_9hT(~-3z}*0dD43H9={=`YiRY&h_dPs+lMwpu z>NSy=u%5yQ%n2P?EWBGYD;6acl`r3Qr3Z$k8_Gf{HYrBu7nd}oqKh*^5-(jNiJDB2 z5Gw8#%virCeOF9Y?Mopww|aBN^i)-U!zugAo-CW(-Ry2}U4Qb{VA9c@nK^S&QBi@6 zYs>7HV2AD_=aUPCns=)%jdnzQEj2({Ibp?jfA%98LD{s;NMvc#?%i9mE+Kc^kapul zod-|OX^?Bo#?+v$pl#Lhf&AaIKK?UD#AIFmoV=bp!41b%SJml`%Y=^$KL5(o<;AOs zEX@kJUMwo37T;yU<-I7xPfHOr!nMZ0p0Zyqi#~dRy5;lQPcG&RvCVu`^(YA%5pzHK zX9t5q{a3NP9zOATT7BaD6a-&Uszim&z?qu=q&lyT!C9nPyY-LP(1|$mx21m5>2}^L zwVvT<;oLab6PQm%YIttSFrJ)!d9jjdY;!>eTYbT?UFbF_6l3t2AS;@oq8g#P_vxOL z@!-(Tmesd)w1iCwprUler)X7D}o)0IR zgc_(85p_Gs1JWl0-&^VWCz@Tp1edR2XtvYR=@fkQlK5-W$?IxG3SYt8v0TR^x+`KO zLO3M3OlzF_{7Q5{u44HE8ygiUK3rVfWZSMFbv)l_cRXxuvqcCOD>2^Hn13XjsH~-7 zt2pe>pmWMNeXeQ+|@l!P^l;9xaF+p>Ra))4!73v za1Hq+!S}sq_+=Qr;nN7cja_qmC77$PqI1sHR}?1~4KHEu)D~)^{7l377H^QP9-KP6 zK{ju%_QNJ~%Qu!tQxV>u4ynAFC#+=KLyxKGX(6Vh9MZ>qd%^Dkq339R;t; zS>hr71I(nLMSiDO#uVrNNOMTR{Auiy$a&EqMIS7?uBws+dO$&+Lb`4bJ?yJhtr}YR z(c!P0FEw9kFFzb=u}6}MLona2eehMiD&N{iRApC-x{tACSJY7f^ZSzDwNW(4KZbdZ zL~m7xGqB1Kz7t@|(N?{A41<4o_14;#-lwG{-;=oxw7m1XgYT+JFUTm^V#aWrP#vI-GKZ zwnxP_BCQhEN56yeJ4}xFU7nkcL@ny9W-i%a-Ex&c0YAsERst70bIgwLryWzwAFK<% z6pvtGsQgPM?#fR8U(E0fF=fNSdwh>C&-6r09L@KmKa?lVmt-n@Sw zjDmyVuTt7O$o^w|tEh-lynGI6k+fiKSG$))1}IZXrBJNl^rYp4;`3VIxs8s#%kwr9 zuw!KE`Uj&z3(T%{4WQW5_3RhtwVrn1PSQ`4FMk?+r-Ha#pT}<~te1?CQh#_nciz)= zSOyHNF~9_U5lqSyyum{4S(_E7y>nzEi!h#Stbm#JE1m*5Ai$+!as0<8dr+{u>7Xf- zP%e(RmO46-`s}M);bp{R(^1j%*krfc7UpHQKYv@{OGk?tfL+I_dtkVpGB>+zz$%R_d)jhk z^TJ!-;7UvEk9YsrIPsjemMpl_WmCjL6|BwqW15_a`vK>`Q^FQ7A~pJO6IRK2Gx+KH z%D-0D?x7u3ff5}qgRyEjY;5|h6Ruov)W19g`W!c0ve+X2-qNDfv7Ph|LgUSS@opP| zsBUuXPcMLqcU|VrYRWBLOd3J|%@alTuc8A-30ogGWBA?v(|Ej@I76<@2FAUQd-uv8 zyg1JbxvW{Z(EX?4#(vW@Eh``0WgkQ>_4u?9sM^Zb-t@k<$N6*jmwt-lI#_6gy#{W= zZZnn!bsFqLQ#pwt@j~^Rb+R4fUH#Hp{YUWl&XgU?n3Y!45E%6Ml5us^)+&Ht%D8j?yP= zj&j>_J9>8LYv(F-9@05Ugr;5sA6OGooQyiU^!`=c?CVr-<^AG8!WV@|`1lo9w+V&l_Y5rC(8DvP|m{qIgaUf+Idni`14MR(zYUPz3po#*rrk8 zewA^*3#8m}Oh&waTbb9K_X9;*=i)d#y$mS}`TKe?(Y-^O#P)_?TkvT={e83?UKl_T zbn3|Z6Fn`(sR)-P-%D-=Q2GxQ_8gY@WK|~v;yzk!((DVX&ss}dd9s6x>(RJbSz)

    8q@C7sSu)%X@#!OEv;*8VVa1jXyz>iGqe@dX`M@k z)%^Kl!({U@0@?CNomBp{gI8s^cHm{+6|OrSbxA!dM}`HiKkFavG(4m|;n}r2OG`?& z3SEt6ScsRFUSfF0i=@cG7~Y1T?3|oTo_A6}+B|n^LH=8o)UVAKubZ{fbS|G21O94o zNJg(6%hQ|fDNmkm>yu+eFhx2HQpg0tT-)ui`*RqM3i!~u{C^8N>EVJ5-<_Nc>$Yq`Bb_V}=OQ>S%g(Gm1x zgW<*lJl~k?V;0XqqptdEWafNr{Qmd!m?jH8X&GC1Gp8gE>;<>J>`nOazo z*U%6$5u@U6u-)o))v>O73&htvz?h04;C-4&U1uG;X`FkUB}Wp0HEl3iM^kTLC!SOp;QwO zo4S&Plymqy?>*M^sYq$I@e5vt*1@tZ^yaF^#nyAkVzakq#%)WW%kJ=l?fi0Kx1OBc zXO3>-&AvO_9>bWG?!`#B2*v|=NCMwGXOElk^2W-a707`uQC*Y#$@^K)aYC_Sjxm>Zjiik2PaDiNTc+FD%wO$DXz zN!Pxb*xJ1?%(m?s)jt&pU@JUQfac z3k#|Hhfa_^Ew>xp;#sEGS&4)`cwAQ~>FLtGmcJWa*Uthm2B&D5!o>-FvDtx3xid#j z9`D`>Lqo$6a~1H%@H%ksPiShZ+;FxzJxsx60l<^j3zYw8@6M8g7JN=t*<#W z9HqH&A7uaTwNO(`BWHRFbYtAlPeev?N-~Zo&Ms0E=xv(N5i*Gb!g%MZ*VuTjRFLVmw}09! zAR2T)G1D+$11a={BdaRMhS~)>j=8ktDPAzO&K)@rEiA*WLT9O{KBC$l=8d4G3D z-lhxPE`H0PN<0Z7``P@m^@k0b9?}UoWC(NxQ@a!SnZ3+oVc2gepFuMrnQ)l>Rx(2M zOU|UqXIN~jv$9ht4=Kl3EG9!*IU&|MZT_2^9=k?HW{15nG;B=IT6b9MneSK4iWCu1 zQPJ{SC5!3yn4X?@(d76$J7FK0n14~y)Ax>!Cap2Pe1JQX6p*KU^WHK(%knJm$I5(I z=XQ!XFg~*dPL$*EI(*yOB3a>WJ0zHjsJbZ9kg%6wbQsHDahZS1o;}2s{!%~C;pX9P zKWdGbimHuxw%$K+FY`Sy@mH>@?r*PL2(^zIc%HeoO+js${t~}f?Tu>sMRxOGN60RT zA?FEBpmf%LRR(Cc<%Z&k;=*>E%(Az)%ddBSHg$6QD<0u;7k*xoH8J(K@8lKlht#hv zbGq^w$Qtn3^Mv6qv&Y4{K!U(JMwbXAJwBY`OzqrjTJ9u=0e%<6z@Jd6W{*OnaD~(w z39#T?R($4tB|_K56!f=A4eI(7-`Wf3j^El}krm#GNLJ>)wglR}&;kt%4I`$^j3z5O z7up?h#UgJ`R%6x}?cuQb=C&S@723zAi%m6D)eil|_dp?bGB4d|c@I9FH!V8G761+z z)zd$l@qx5xBFtud3 zwCHr>T0^!^Sj37G6;=25_v|{6Tc=8#Z0%YRRMe2VJ3AIgO%ioE>H9v>!@prUUppHw z<-(Ou8=1ly#7bK_}MKt{3Bqoyke% zx^)?&Z`{FxicgIaC;yZd8yAX^n;u@ZKb?qhQMj_{B-|P>?w6;$cVbu08<(Bb-&`RZ zKQrvw!5SHrp8p6Egm)7z@5LZDun!OfK%`HlqkYXoP&3xn6%kExTIOu)E6VkA>7HC) zWhwg;JE6huaVNO^7qzeD6OiTI4si=RtVQoG+z-X?Kt1fzb|x8SQvj;W>|xTib3{UCUKC!aSDPKWTSz!gAX>IH z`aL|$Nb!!Zq?ybtle5s^c|wi$dzVR+&s`jf+g{ybMvPr|Xg%{ycHGcSc|&fTYz@dX zu8w|H-D{NM!QWiMJr}8D=k04WnMG`S-HP8cUiZ3WbX|M%)#A#21;TXo=6Z-M)~1-# zMsK%hp7jmRJL%r`RrjtqE-Tl^T_yS4exUDY#$soe%kj9=?>n$B)4eY3e|0%skpw}k z$n6oVz&yirbEE$0q&0!KWsJG$uawSs>o=dOoSdz7)}^?=Pl9S923zKs?*_m1pWe zseGw%BwX^k&a*1M-vzfbys)hfuaXE+Y!xqLLPy-i10k%Fy`99-GCG9yJKA@-~edWdGw1n0V zc##=>>p;l;QYvq8q$7*#uE_tcfTemDfr|c_8@Y6IIB0tUH zSx#Hm?Gp`7zpCAa$$beXY$JO#^poZ+1Zd#6Sb zQjQNrG+{*op2u3qd55%d{^46RpEuO3dS+@|k0-27P4Yc#mCbm}-XUML^AiAzYwHVu zikjMefBfN=oDuxF!v&qN?Yd+azgT~vsCuj&$mqls@JZq}e{kVy{~Tjk(@@vrhJ_3c z17q)cu5@xvy~D0sDt&asis9@U-QoJm!R@s;$;9_ zoR`1sa&5`Ndg|x~V3b#=Vdc7WL5#BXW-($@w^ST2Zb`l70XDV^2)xVGG=lOcE4T#GT!|Cad<4ZXh2!P%;lc<*qM&!<$@`0}QX#pmTv^ZIx* zmx5(sJ=|D|lA5}opC~Y8ekHJbB6BQ~rNP?fzVQd^mf0!esWjKItAo?J4+mFjc-gK| zmSvLl--Np?R~bE}l&VyNg(gC%SfIGh2cf<-3%An7w`|Rr6T7+Ztsx?7z38pj-tv&U zqR@RPwfC}~o+^{eF173Ib-|1kt}TbXlYVV#>vTrih>hczwgD9OcgLob-jTk;a>+jw znhkrg=2j}GPe@9b_tCcS(ALm;l2{6_aS#Zxjyn1*=-tl1ks3Xjl3R=sa?0a<4~Goi zQ;t>try??OwuD)*d1P23-)h;blb2YfBTI-+Sk;_)vII!_hYbmLD^!S>alzFoA z?%I+Yk+%1(W3R?`S}@v*Z?(X_QABa_7FJ(Z!{CYj1KzqPO#T=DZiN_IRa=naKV0Ka zkIVUz$lKT=@p7W>>(`ThB$B@K5~XTqd&*d@4xx4agM#`NuTmR`yxU)384$uGYkv@< zsP%Tm;(-v+CuZ3jx)`9=X6atrKpI%2`+Ls{+kf4&;^5n$p=o6$opqcm0X2R-NufQ9 zhJ+WH)My^qA5Rf?RKBpH)hiaYTk%97UTCWkXCa*0Lch66YUkhrvC&uk@#^}jXtFvt ztf{GGzIAMR6qaxupx8aPC76GuBzn~mLaij&rMBO+4$7x zp`@gwb6<6K`Rv&)4FHDRv3GcKgBP(p#6>E%`?u5ebq?=@h@o&+;Q~I1f8oAywG|(h zo!rde=GVVNRs0YR)7L$lNxd&)H08a{+8ncQ+Agsds|5hD_WX5(oyZZgO zV==wl*^6yz+$A%5jf%Fs$8Ph4C8vyCApIMOfdGe1M+M%p=hxFwM8JC@;m3` z!?$KQZd2~?t8lef$<^2&slAKq(XWa}ohBwMI1jhwQR8Q|ock@TztOBq zkV{88{fn7bj%MzvgO2>DyZAQl_?=aF)r9B5IfCib{ZC!G{O2qbjPp06PshKD3i*;@ zzD>3nyF#If5`4zZ22agp(jemo1;fDLAjh4HY%XgPEoWX3ckLTpMhwW{wWu%1%w(W= zKaV!;3V;bZe9PL2FR#S21yS{V@0jfAv@=w+f9>LlpSL~i5V;FwlrzoCs$THbDB10s z^#KpgQA(|N0!ANBjySibqSdw*y2dZD&YsbCHdy%1{aU(4({TB1&b;)OT?8PN&@((7 z#E$7RzA60lnX4{q^~3T~IgF#sr$X8oi&ST}0KYDz84K2S!$($)VW1G&T6v3yjY;q> z)#9OfBH>Re`bs)6kT~G3_~iBSGIcD2h{L9|*jktOeI?zo$#NgP@^?2}&b5UyiKA(J zQo`h&E-FCYQmM&}d%9i@S|cD44Aqd4-`Kjr8x*(*{0j<4rsYiLieEjwJgJ&Z zukD;1yBbU7N*nTjDRnxh4AN2@ynB9-;psJn7c|TzXJ@V)4;ig%@Kt$XQ^B63FKW~t zw^--$EO&3o`+22!*$+Wh4zKu6pM${+tvy_djmJ+8P)H->ZORKEweS^n7p2JrvZ_;D zsoxzXkjyabt!Q=M5<6tG-OT z*HDh+4#;UUxW0KfrU4O{XWIc!=cPEmM8fT1Da(8P>w){g zX6C)6&09K42@*%g31`c5DO2Fn7XE#p2QoKZa8WlhTzX31UL{WDz&zd@M*(Z4I(C#8 zn{R9Fn#*B`;}CaJOnfV8v<(6+tQxd}xNz^Ur0+_;1*^R67G$AE@Q|6_m)an$WcABs zBIZgh-Z1K8Q=8W4EM1ypA#;?LnvPDiSZ?=fZv@mEcUIxs`5NTBw%+ zR^{(qMWwH7N!GCO6!a{#ymFQn!w>pVz`M3aUC-dbeR?9wCTfoWe2_Iwa~JS4o2-iX z_|S>RBh>8F0v8&&v!^=Bh#UPUwZ;vP4p!WLodgZZ=U%xfC}j7$1VJROFaL@=>eQde z(q*-N-e&(27Xyy8>PiIWPwc$p=ApbURqnoWysA@d?umn&2DuFO+~oB^k**UG7gw`p z!lddD=nUV`DE50|GDJ{^_l+GNxMZ~DlUuZr7R=qU z?7F7!36=8%IR$w4ep#g%tnkIwH8$$#0e&GKbATyTrp%>f1yQq6=dNnx2^4 zB;pXYzNeQawu2iMmINv_c~yZR)fYm@RY{Z^XidFsf9XKZS#21yeI!3HkoKnz($oZ> zJ{wWZ9w}0+6z58p6+`%vnvOQg9!IaT|I2}+ew1bG;jrCw@lKIP*c47ATgmQlJa?gy zE^I5kM$Ds{=C7PT!t{RJ+Jc!i7Edlce@9EV&6Gu#>HR-YMqZg{ZeUo`7Ut6 zp~yO%*-KiUIb;=OnCfv)^H;iF&|KkDka{BF3_UFkgsZ%{5|)-Vt`&7)RmF9}r%BI? z&g=28&SF#9%l%;Gk0%Q~vArRbR4m?@t{+ZEz5+X0%jM-r95si=IR{JWCk)ScuYXs? zb>Fh3Gx;J2J8GYQM6d#PvqYs*TgnR1M>{v#A?R6)%j^5KT;VmI_V{Vyk}?N6Y;h}} z*XLf{GhY>@CStBNp4JNfFSkdzWGaxRdaUUTX|%*(vz8#Vwz$uzcRcQ+?;SqSyOy)Z zHkYS!r}d{Q^KWb(_QvMz@pmn1U{1SF$F2|W%V42LRd({fKt<_oeOCtsJZ8haD72mZ z>YGwIZWgw`YarA0RI$x_RjC=uS7*|5-VacywuB)<#d>{Z#MX&JcsTegWq0jjA`O(W zoCaz|59H#qVm9$}>US$gCbs(q@>;nqzaDnZA6Z;_zx)YELG&J89PwvZAsV>_l$D{A zS&z}oPm?ZAY8gF1`U)~0Hnd41#Pk*XW`i|14F0AzWp9)85(1aS@k(Rm)}=4{DxX9j z`mykC7dRKyt@dZfu{AS_b2J29PD_4SM13OuZ2LQxO^Umc*{xt}=14*+VwezeVv<)Vgq2a$q<^t&g@6!~) zXI1K#j$m@tO_|50Jp%mKre454^Tv;@q?yWVd;xa9LzFv*Y|Kbg)Ha^)o@yRu)co@0 z%NXn=&roJyhF6(y1{6U`j7GWs-U(-)?eb?y2Zs#jvTAye#@{m!=w3764#?O&-%LND zxvmQc0O?0-+P`*g9g`cek@FtPr;#%??(n=6CZ-e4x!Jy%_y4L?tG=NItnlz)vHRfk ziboAD4-#ffbd_1|)k%@m8iHpvrw+0_X`OafrpEm!DKF%*H&wiDpFO61%h0MFx!}j= zs!ID1Z~AUy_jEpo5Gxw707U7=tG4qn#7acT&H^ z#j8Kg7N+yq2U6^JMhRsbb^VC_(}LFrk*6FsChm$)0TRZS!ChUSUdCp_mzN(!mk(Xd z;W7mY+*~j7-q3j$9>;Y`Z3o$BoT};QsbgeD8`Z7Y_m+^0tY_Xk*)AdiLtnMWr%j^^ z>WgB0Bep$D=qorq)n6G;k38)W-pKw=xc21zt100FZaI9uXuj7=4-jwBt0lMhNXf?w z$ZnI&|GTRrrW;vAjzgeF?iP`M4UIJ{}vObDmy?@O6v1U=Ohn*i!EM*h9b#wrnc{F+C3~1@@#9j^?Bs_*MDu??DXeI zEy-&N<^8}7c5k?9+cyBOzmpus@vn_x*FRU;XVeFAo@#v0Wv}ZBlVbW^;Atb?EK!w} zl_?YEI59BO64MLcX5y}Uan7xUCrpek9tL3_T!shRUN&9bp6<6#QT;T^3vzNc-}av& z2eKQg89V8QCn>B4E68n^=lO@WYOZI4{@%7$Zfv|eJ6y^IJDf)=b7T#lTMYw9C^7eq zCtT3=F2nJV&(8K%Z+yhG$#`P8L%{QRFa4(%K-TT)JrWY$Sn>8a_1X8hbZL79Vy<>D zOjXy2Q>*$04z855>)pM~+J%bzGUO1}=udUyoO3JJxy-&4gSM;EIyP+4vUD7+P8}iU zfA=yb)>GAT+^TV{cQ!RhSU<@{LdaM)%yDU|SecHjZi8X*uudF>jd_zhi=XQ~b|=Su zA2|XxXjm?5E0Jz=iF3!`GAIY6+{t%W=KYM;1x zdS3#qZ9lJNgfV-fBC~Sg3B@9z?neo3Rlv&6IMdgb1|+o~ImHO>ACG{ zE%`Fu-OYYq=px?YyNo$o12SGP53%EFR~~ zVukC$I$_&~w=Q{(RyQKbk0^+f?l7gD+Dj#oYYf@# zH>k#no|qV#7_n%a$P0Q4%uZ=O@>bXreZJTzleL|m9Z6FaPZx-vS!ZHn5eTO zbN)JKX=lcP7B0S<7w+bc4um~GpFse^C<-!Y#J-yO^7SBuek56VOm;oe)m`o+2P1PI zDb&sI!ke;{{GqapNZ|D%B)!)>dYU*cqbe)-5$(g2ufzUZ@=c_D-*yCH;Fy~G<%QQX zgi+>!mY9_{5)%s`J`=0(aUbvJ?Wcv7?X5*A0Km}EaOGtQtNzxtoe$DPV=4Mx_lw7jiSCQ{GVUDxBlxc92+?P1D5(|TT%S$-Hv0lP z*o!SRfX_pa`enL-*D_i_r*w=C8*Lx)E!(Di4lx}Y0Vtpf5KtH7M5yFmKK4GL(T=>; zOjy@b<*7Ho5E5(5Ahx;LwudJ4;r;yS)NRnPu9EL5ge^lLR|xw6g_8;m0qkgcRW6-f zG6CX6NC-$cLzFYe!}G#$x&}3qIGOT>(q~|tnXE_=Q>T%X>VPmlJ`&>hRft4+*M{Y- zd46Max3J;aOqw-H(T(5o5Oes9Qs3y zRlSbpQ=Hq`M?hC!AKYYHmAv&!?saBRR8;%Y74GTs3lw0t+U;tQePeff*<=xlFfAr& zU2Vq3bM^AHu2_x7O(5y5+}o&O?#UtdEOL6{z|0G<#Mwxov*vaaw$Bnx52&iC4&I+- zR8iHO)<>#kYijn~27Q)V`AP39bY=Os6vd+tQ7Bt6MSRT23ib?4Y&P{i&pYN9h|sfw zG0UoIKicTcEi9t#u}bIS{h`aOA`O6S1S$J|vu=Onhr>?p&M2*$aL%WTB; zVQceduGx_&=J&||GR8WkK(; zry9SZ(fh$i33Cn{p!JfVsKCa~O8N@CtK}^uX!Sd=AA#l5(I)`h6(=yVBtsUAg#uE_*iYVCjT=dzzm^cq)Ql(BahO<9K=1O#BqQ)1VH)S(!a(SOsLo=TGksFJ1}AXS2feSGkEEbyyf$E+0-MBmPno3ERd^ zO@QB4j+Ym3e82o?$HbJBd7G!r``zZoL3lp({Ps}y>d@q*e^eB2P7YKLJrPYe#2d-xj=mO0R^(%ghT8HHDG>vnATjdi(DTQ0rRS;M zd&?&i>2xM=CSg*ZhZS76tEoec^(1BL4gnD*JZb4M2BUkoWKFfrgY4C!@>0>xWI-$r zH#7^&QhlQt7q*{-sSkVqR#@{Lk0GXt)LVS zo3?oI*eI`J7iLUN-2>_zZD`BO?1Akude8XNu|9ksQZT3OKmbA#3r%N}85)HPX^Fer zE4)9^=jzVil3T6d4@KaE(&5wnna34{shHScE4YMdH8Bxw^J({p`4ec8wjER;d3d~k zKMC3B95L}L(#WXfCWu@WB@0qkQU)a`KV^Aab62@?KlZ}~3lMdYI%0Osj>9e{F)M*( zT@E7T)HUTPXUtM35z*A}M@Gpoxb(0rEOBn#43nCfn+u9`f`y*21EQi}Li?>vEhi^N zdM5e3BcKS~Awg(1eddn!VgR-6mCD3josvS<24Z)op1coAii*cH{p<9)Uj>B+yFkd7 zx%R5o;K3Y?w-N7%bibn>kEXz-t`UWl5BV&e zWxa<+s0{@Mk5Udpk$Jz(Rh~qoHm6w`+ftl5(nGIE12lygMr5Xj<7v2_)=Ntj1c=^> z=?Y=Ay4Hi*lQMxKRDuG&ohs_tAl5T+BBKP6g!)&knL6Fp(4zpjy>IO%T`14^*57dn z&Z@C|1y;4{s6NYiR=Iqk$qcFtj|K^A9}&c~49*YcExe^1VWX{h{k==&?i3KY#sBt7 z2iCoJ06lYCFe%Rnw#N93#E1m?@?-Z9XRBN4&W%G`nN9RFFjQDWxOALSm4cQw$YcJ+ zuc;{Rgg4&~?&?hUZLwHQV1nUrLx_6^>NQlgmBT7K)B*F`$qq~z`{yPwm5+WDDSOQJRV&mBBP;v zkfZknF_Detr1c)mthUlw@8-C)i1S3>V0XC=$YSZ>i=kKOn6_759Zk)s7taR$=f2WK zX-$^K>pT9;fgV?WVK*aREbKJBpFbI~Sd_dm!~ow$Z_jmtDx6%?UBtwsK1mluYU_06Y^l`XrXg`l64jH8ua;v9U&_9lzd zlHo243>qH;&Qe?o3k&B*b2YZI@$3*!QqX$mQdG^!QO6nil=bfY)Js!x=GPDL=RpAh zuze^WEJ{khfg*6JidS?b>>qaiwKE)`j#!{V=jLWMZZY@uSMs11ozE{bYgzGf@G`6aoTO$Q;O6$wGdA`vSZn|ZCa9>iR9Ih-U@HdyU<&KJ z#IaD0h;^5STqfg#IE5p zXP$ZFWEN#vPIqvbsm%C}SzaHyvlXgpYW&p<{DL7l!(l3kh+i2J-}a~J@MF$?{s(&8 z+;Tr?sMyAaGGG3sUREXFBOvgV>}O$?eO4(~<6$ovmz48;B5Ld5^=P}y6aJ+3@ElCg zC@k{N$e3TW?DkFaLDIhNu{<}JS@;C-6FsNt+I;bRY!dfHyw383k1wFA4etQ%)pB^4 z`4R#@cdklqf8S3G^_bpYe}>lW)MH_zVz7LqR8m&Cb58opT@Fg_Dj-~`Nw35AeS3EH z#k<#5G2UhW7`;tPOO179B<%F6E9Fk3Ao=&mSq?m&h0Aep=LOfcW#(xVnMre~VctB( zgsWEjI=}wF-eC0#W{R=}(xjZr{C|PeVTcU`(`YGf_2vtI{VL{vT#Te;Tx1Yl1jK-F z=7R#oNkDuF@XemMp1oC6qsviBQ07 z*9poSDnOJ-hQG3>yS?@Chv|$WXh!nnP-O9hd%_I8SK{~ECqCri~3 ztgOm*_P2q>#hgY=!Yqv}xh*9q>Pd7P^HKa83!C8Ht1?HBnSYaYlA}-l0ReKO_3W@J zA4^qeGI3`p@c&~TSAQj0c0c|?{P$meWq?)|*0YsaH{8hNV=qQF5FUxM5i8ZS%{hja0(ag#Sd+$2XLfSJ5 z#wV*{SI-(!4H7KhQgnm$ZEcR6H0fpGdIGU@IW*G*O^C#-+ux-?7%$i{V3*#R9$8>= z)d5${FC6OL0nolHlkO$F9U5^LzVf2ZnTP@W3idEo+ReaG=u}G*(%45ZZO5=mJhHr+ zk+#>DOFVoxURpP8Y_nA=^YbAbL{TNFEMw!e0~5F>Hhu;%;h%)r92j`r%r&>~b-Y$2 zBb~w%np!R-V+)fb=T zTu+}QK#4@mP?4F+@+dY|H~1DR?y}Qxk!v;P&S^jS=opBFjC>n)2s>!7G4l%W!!%d} z2Lwg|yH9{7?*I)ntHJH1TTf-ajU)t$e^1xie7V5h8y`O;qYvHE8Ej5l2E*=)%n()i zyvOq23-5IN@Y-AreQS4M&&|)n4I?bft3k`m8b>lV4c2{j2W{WjFJ&1GbmP{(J!_9G z5g1tehyr7`j^z9C*-glLHIyO7rv4KWG!ZjW@8SU51e*yK-bu8r55NE9>*q6lTW2}U z?cB!6(*o52(xrKI>t=uX_uR0k3+l;4bY1Ajh#$9<;rH8ly%}Xa9~XVSgx&`Sd6dwy zBSq*L+Q8vD8j3t|85+59?a}i8jIVH!a*ZzT@QL{k*SQsGe3#POj#s~m2=L1Ox}%BYk3la|2%tC)PRthnyCvL$)nyx>$E6=T|8^7XC6Vs|0d4lF5xYUA7>Kml3j zn`B=y-^ceU5a?&gic8Vm#R0AkkMuqP{^iF;5wuhcD39n zd1ajtK%~lI&>fDy5UWn3g%zbjPVZ(pP7h6ed%Kmqnr}Zwo2r;;yV6fTMl3RN=!?2`s-S9uc_|nhv$g%md zM{2O+yR3Oh@rF+JT+Q3WN!+iOQ$7Gch|vZ^Lob^&W8F?>I63J^FhJP?K@5;B)4cWs z^iddDCkQhU5*b+IglN!m3OYc}F;WdYA@iyus~&He6EmP`qrhSGnW(B~2v(vI(++s2 zDp^|friHP#XeVjd&N><0S0yi}^{KpP@(I=cEtEkm1t+H{2ZQ=ex(nz@zp?z#i;TMg z16~cS9%SrxUKp^D@nt1NSoB}de$$A$x%ij3F;+#sbo$iXf$|e>?3!%ott%u_r3S&4J|bYjiv>S7*Q;gK$4d-b zLqmfI30jZnY-*Px_Ekfc$}G+F{XR{`e02?^7%P(@X8iUe zy93M^V)rwr2Z1L4a%uHiIvJ3}%#VKrX2jlT^aET6H3B)tKoL!G&sjZ`-TgkZ+fIDz z2I?++wMbx2I*OIXGdCUH#9?3TA6~HbGnZS!K{S5gP}p<2QhZw3f6TS-z7BVYhv+9d z;OEbUK;_mitci?CVHc;AI3vvren3E_X~?BZ z-M}&svHy&ny}o(!Z$I-jrDNLz_-Qo1)0EYoQZw=FA>-lA=LdAHu6^0}e!TDI0GZd8 zq&fPU7UsG=1io4`HM-*fFrYCP{VQH%Y`SiMd#;zh$wyHedomX?%-f!p-==T7> z@YHB5w zI{6efF0LAu#DIdqOzUGmTu<_)tI)?5AF08W9+;_W;SEBh@EFYYC7TU;fSQ_y;S|NF zzP@?6202RD=H_llVU{l{fCZA-^WlCgLsW{j!Q9FUM$XpP&Etub+y#2g>r?^_6T^bW z(!d}byLPYmu6tmB0FnQZ26QVir5gcdPE~e#p35=*i+f?$l6v9lMTzx|wHRDPcw7NKYd)5rf@!R#e$tbIfvs8nYrfU|`&*5?A#G!e>;mzBJhNL|M08n;zz?1EW+!+-uDpu_p z9zl!cLx8?^@>9xr`04$)K&gy$o&S~Tge$}Uxdz8=AeDfIs-Frutfmd_dHlbZHVB6t=O@jh44@BmeLo zTyE44V-+UqwB;7u*N2NM7BeI03~`cr))slweDIg`J$-7%MExWDs6T(sH|=jSyb z7jue+UO4o<^uDXQ@TFiR83PB{9p&r^3|F{0Sp^>5Hjhm}dEAj(#~^xhHlEtoD?|3N zHP&r>wpiYOP+3SiV@L`^I<^iH^ruTk+J@zZH3W=Ux^bhhLamug{T)>m&T)Bds8Z83 z?M^Oa^T@OO$9_Ujy@Yg4^1m-I!EoCPYGed=Q#=c(4#SQnTnvFd9ImRW z6Ef-qvvYC?5HavO1oGxEep7dHHVH~iwa}856P(L;LPOsZ&NlN42w*13+1fZegk?u0 zYBRL^;b%Ps>W^d2;#K3Vo@5=E`@-Q)ecryS)An`5Yy6bAW5>rWmrzAxjzIg@r?ZS+2^@7j@$P;m-6Y9BOJEd$|UgPWtU)4lL6FLDmm zxPVYm)no<}nV^OsZQ`k<_(&3B zkD7^J>LVmi)jd56OZ`Sne3Jb}E)<9oBki9L{ZXPhX@RYp0&c9-cFL!>P^n3LY|#ET z4GW%kC~K>3H~@L=c>rngd-7mNuG48tAcCI~$-v^67tOl2VBzx7(B_Vnh#M!#+&Xrb zM4;OOIG_Q~lACmW+yw4607Uo!NH7ppjI2UUjo@u~WdMMB(C)omyh}i6o#^tmaMnaQ zIU<}>NLo3Qz=46z2LxRj%i6Mzb17A8ALDnA4_xM2sv61>a_j_C?u4M3zPpMg_fC# zZ6IlMzPo!0ovtGD0ufF~L(-wtV^%p~q2@unOr!e!mB;u8gAT0@1RXvw(EES41C*&0 zfFx~}_dR4yZOz5#WBtO#GBFkoc5X!l2CQyo%)o#c-by3tdgUrYwtVQ%i)0o5G2pm| z5_(^{8yi6-AHTRY?l$>q*l!SF5+)r>W<@lW8@If6TcLCDa(vI-VgACM=tGH1i1*mi z+k$OMpS_+8oxGe(Y}JN1VWaxyjl)BVgHrq+@XbZ*`h32r5VH7dvQ)+Qt>q*ik?seF zdWTI^uT6}dvIei7=>UCCR%C^>AnN;*?DL;xW-8_DwR_N++OJqNCu1PH4GZOdwtI}Z zwm7Y;tJ@fKWy|KsMS=3=3GzMlgkU25v{Uauk%U!qb02wgul6x}D(c7KZSU3FfV2x-GVcJuz?)y$e@^;23*Ua`(Payg$hIsgvl z3!efVNG9#dj$`LiXpe{gnpuf#^j#?Y&FR?&_P0)N3uh7$TT`2%0es6|O0>0-D(1X% zr@Vz8{LX%aEX5_30vg@76fIJvM*sj>LVXEa?dWb%iJ}fm9W(pf0>Zx@X=**CIacYm zC0hX-?(#;>S2`NjFD9Oq03SDqvAY2P5RGTTQl&xZ5%~C1!Z#C_&`%x_iV`R7VsY=T z(DxjE{ZukYYYLi>!jh(m6bYopev|Y&M~Dm?!@Fe4u~t&Z>$A}AmCLDQHcDt61Qp8C zlHP#;i6+OXO3E^o13UT_xwLKJ^@-E*NHQTF&QFl<{F!jC!%vUq>no;!-cuOOIUh8m z3$|Wk8udntGfjzY<>Ww8-5V6|*PFh(cYu(Nb=~LXQ)=pW_2ef}M2p5K*!_472u5%L zYZ-WytpHO%tiJ@o!QYi*g_qeQ?cwqM8hUYt9mKnlJ%=)YRY+K3^M0E#F@^>V8YiX@lC{C;VmN zD{DCcDjTa5)t2D} zbUhzQ*ZvK`Gr+pISZu(nBvntu`dL?@<3QK1J|yOlkl*$+OUSCb@Ux&ZF8rIK78oY3 zW1w!v){&SCIm-JcDteE6ExKQB;Iu>CSahm|^E_FKk)3fZnVSor4Au&m_z_DapB-E1!TO13oCVPk~BUFAXm^MK;CMKctsVt*x1No$&VQoPJ z#*}cEw{hi$XXbkmRPFL(a_^D?C#txP7~ce;(xlxAvL%J_OL&fC-bs62_1G)n7Ng7E z=g)9`RgSe&YGPAA9|=;oj(Az!wS`M}qu^lx!QXJCvMoapPLv={!Mh%2K4#d)|DB#u z$*UJI5x|yz?g{U_Sky9RxQ^7<2QkT_0`{5w_(ONQYQ~WEpbrINoSXB3JhLt0VvoX9 z3TH?DeKb+GA@8}13(VWx^6N&If%U9PGRtae6`b+RfEmhEg)iz*6qbr=>vq$dV)HhV zE6*Lp&ASD=BS4f`6%@9jQVx18Uk@XiobF|;2gYPSM{eZ8#taPNsgMm34Op3e2wC-k$|%boIxUp5kq zD8MhYh~v4V)e)F(bvlc>e$$sy|2A#m`AD>VLZ-&8-n}vhmu=W)e^wb$;v8@u5iC-| zGx=%o7wa7G{2anx-rcsGsP-6ad5)mq8}=vwfZm^Aov1j&n%z={1LAlL)httL1rG)4 zUn-;W(+1b-9Z0H+Mqf@#X7WVx$jOepxc^Xou5w5w@UDs-lJxPR!72th==TE2h3yUO z*;B#7=E*3S0Dl3$Fh;)ecPUWX-f?Xeg8t_&mK~v{-nYT{fbS~KyqaO9=cnijMqh0mYK4A8!-8jcp9nHp6T z+4ii>pq$9icDKCjUrv`QCLp#TBK9Bge)34dSHayDUfyRL>VF49sHvukd|dxA`W56r zC^4!+&&f{}T`O-VAamf0QPfszA%zE{n@i>*LLwz?yIi=iDqHca-VWFP5oK6H|Jw)} zL5?rm@kLj+)Wh2H{HF;~ZCeL(XYUaZCo(eX@^w(Rm!F{w^%l%u;Q9ro{t0*7dIf0K z;j+H{_!3`X6y6bA7xlxU0>)9`G-HX8B7gCqgRUwJ-F7? z-Tb-|1YMh``8#r!r6iTFqoU|`jkN-Sz}v!;@~A#&yJ`r)M^p5iyoTy>^1suV2W$@H zrFi4Cv`8@T8CWg&zwIv3NX@d#@Rq~ZiiZf(pycEf5IBgE>SUngsO&A#C_tjbTD%0c zFk;KB-bw#fRc^ZMPq z-Rz3=PTD_pIc^PjBb~!Z_Mhoidn9BpxlVtWHqg0uVbV*h*=3wxYJ=9g2P z6n_WrfSlr0hd+4l4Z=#LxgmXhl7NI_g|ywCbQvYz(IlnW2K9GUB|2|FZeJ#_5N9>$4HM(-3lCU(3es zAxN)cWP_HHzI-JtaMW6E9^v4PV>akMl4;h`6L#B0(j|rs#JaqGgJ(@uorPnDw989t zcAlCiA{p3-)fjTDJ;0CJebLQgg7@2esp)uqt*eq|fy}NkS;@SK2?p1yif7JQI)b8R zE8RTxXSwNR0TaLwNBjp(OiQ(e6jHbE6mc%b218?JpDSJ~J`zr)@8SYVMk>~EnGXkS z&DC{+j_PNsUZ7myj7Feb(BP%j{uG&7r=DBFPc3S69a}Q6-Ylj+}+qm3624f&~h?|#L~86 z2!$LSnE_q(8HR$Zjyp;5X67od2x3v7HAe`&1p^FO?s8P!8KpT-M;jL%EqS`|4z=!l zK|iug*dAFaIJKHb5k{7#NdT^ujFz;v{i*E!veg(KdcG`ElMcNE8QzBkR)@Aa2h&pA zk09TdXDK!%oU1FNh&K67TKWSo6CpA5!X>ai77MJR0pOQcCImwM<+8MN-GKBQn5ISb zuE~B#L*bJu(rU{^SUOB)qMx%EcNpZ!NG37Xrm!<3JbVL$U&5}cbX$m-|CHOz*AFAT z{*u52eGmGh#ncwY!GT&?Vow5JTtci7ZW=_&vI34?_6$>osLE|?pT8r%9aN1+td9kY zd=wH?XEo4y&<)wOh2WE&Cq$z!t*|UKT0cCz|JmrsJv4|y$jby%5d39^on@;%>u!5K zuuXP$w$b|#-WC2rv7N5sgkw`c*Za=-l2=Tm5#!&@^c(L0ltc4AE?y}&k0%Kz63fgA zcM;fSx7O{rCi#KB3XLq4&8V&Mo7e@uP*X3f~psxY;$`0-L&j_5fu0 zWC4CBby}21OC3q7PTB9sR3-Jdt>7u>q3#i#g_mAOwU>M(Y(AuWXXx2j26t@|d|vdF zC?ER?l|$Uj^<<%cSAOl67?pt^3`dyjk>z!U_UlXBQV@}Q|a2d+=+&OlK z03E%zK80B7k~xKS0}J?Fk5BgDD*-}rGm1SO)%tQrDUuu!Aj0;v(;>z1k zuTT*Zo`(}$x6XTaBdyQ#YIog(d%fM=5Lq-H!lmB#E=x+~4TW-a=_7#|X|yz_Gz<^T z3Jl*qfzQVy1gmZUi=4?Yb;MHV6+jSLvz z^04`SozX;`_+MedVlt4yGZLEz(}gf>;5FQU#- z{+hG49N*KIFz6|tiO@U80o;7$CMEgkoNyc#N*sL~nt;k$R-O}D+$w{&@ zTD^KTXM%al^{tsA>m?DF4xCFPrDtlSZv6D4G5W^k+w<%-!tuf>69{NM?@pfKa|fim zzv*u?7%eoZ9G8?*UCv@g%rKEzjyCH0e)Vm;#U2}@-Pk$`^EBa`v+y<+K$5m9}pbf{Uh6uB{5<2*m*5$SwiOvBTQ}h#)diKdav9zeKU*DAqD+VJoEyU3WW;y^w;|{F`nmF@2V=+koH#E z0Uj2u^09=-cV+5L#n;^VP<mziaT$e*A5CH2MaVL28sDQEgzHqUZ}* z$w8uNlNM#Z_XgMlowdletGEGX{H6=3xV-{2LhU)os*p66qO~A78bp0oiH*8 zBQR}lM;;tJ-32l~xZR~$V<8_!1K2eeG?TmfegaTpk-`g1lx9cln~U(cQJ8FsyL6)! zb2=-x#ev%f9x&w69he9RbVyPki;63R9v?oIXB?{5QT+qN{m!c`gLAi;TaahZ z$^e={7#2+PyT9t!E(Dr0eq{B2!9Z$^M0a-8r zjfW{1!g=TISB|jPGrkuG^mhRX%*oFWgJLufH|>09f1j$bZho#|*T@8t_l=%(?+)DW zjQ(o}-Evq&DHPyGNy)o)`nMcg?!Q|_^9BRGSHb?r)M|K-rBQ-i}T#44vts6TCvBsrSz znEy+o<3B^8(opQbGzs!vEr!@`)*`MS9or!NIqDGae?R@dJ?KCEU|f*@|DTfao+$?V z1VYypwtiP`EWGy_3aU$>=idB(>{aY!u4cpa)IVd8Ccp)!clAU=OCWXGBAIQ;uC{U8 zEjC9A3v_#&`tVs|vcE+a!JwB=V(H{vZ0fx=tiGjnMFS6YA(HU( zBcseAh6h8gaPl=&w*J%WyP8)ou&3MUiGoa=SpvLkz;JVZ{p|HLO?>aBW_afZlyy`2ZOl{)&g>oPR=2zrBFZj8L+TW%By_|n-0TPYkQV6GE#LZ zp46`PogTGwtya`r`}ONxvzC8c4OO1bQ1?i^r~QFZ^u%MfHT@WV@Q2)-jT1eHlo>$1 zvxAWiU03jWw83p~{HlfH}EcvO@OWo4P5 zhZw<}6^Ea-=k#(J|HlDzRB`d1$>k5ScPdp3?7=evUk3`vl~iU)NJ|07jRf73of*@I zJ}X6q`=Yp6&6zc|iJKGlo1xHmevO6TS{YV)Rv*CuzaQh`Fw3PRqvQ1iWGMBhiKau>Gqor%l5ul&li5jxc#zSL!jjhB^2ZzY$3pvI z<)l?01a(N`vAf0>A#EnuuvYk?ZM`l~Ul$xZ_PM7a-uVNVQoz#j%QsKVq68WJ?@h)L zXmqM8RiCEtEfdEEel~5Wj7rPEA!F?LZvfZ>-#2aTx=cinzj@hzr3!6kx6)!noZ95G z7=?%HtEy!T$%x{76o1fvnd@~s4WPwYcJrE}gu_QFYgiGW430{`wkjJ#!aoa$4UpRm zoA>$k$hT7V*Mf0c-=EcTLc=?qE8sppFH(SFOfaYJTEq{IH0lvBv>(;gAH-z~HfNfphjwA!KeX!IcgbVn zN-%m~3205w4#b@!meeDoTg71R%lXG-}G zr+B6m`A;vvO`mwBoHE3yit_wsrFWq{XCv0@nk*J42i%w9_tO;cefcLsG}_)xiq?=% z>V}Vb{$>^y!2(2n@{~V!=>YN*(U5@gaoVAgPa)ZNdqn#8XEFyTK*?(2H#a@ezes<4g`N`;#wvdnnV}M2B3*VYa^VU zg=c1BT6^u)i4ryWyjoi94z+&)U2|V{etvM04>^|a-tc(xb0~jcK|w*s8O-g^Roh5q zh|@Xc`R$Vq5w!j9J;Q@w!~x*Mv62jW4shW$5!JTNK$DS!NL-&9;>v{F9ZBr;HqZ0! zI?J0~x4%)~7NZ=3X;7@h)a!7l2f{V?|6%Vxpqkpcuu)i#M>$6Yjs+1AumlhgP~vsb!j9eH!LhW2W@z>2DXBJvc zuhq9o8EAfW$Sw}^=?A`rL95u({k?ymurAN`l0$1LxhlShKb7m;WgNPH^ELD7=l8C* zHdC1BWimepeOf+XJo3Ja<>}<|@TkZ4EN5yO8{5Urf7WQPmSZ=@+Q__V1{-*je6WP|@n%7x+t#edv2WkM ze4okld-&BB{>ldtMo#?XKv0d_tdUz6G_X!+DC+9*2*b?V9;Y4vZvSxs{MVO1*KSWJ zF{QmvKR0{t8PP##Bqdphl*Y!(m+Ws(e9mcSXP0|R88(c`5Y~OvUnlBgFKm(@)3|5J zQJt5HZR3<`TYS}~*4f)@q`Xsw(jeY=plwywq7=!~8_82DqcN7^ejDS*1Jc^#>M?IH zS4?L@H!KWya-^gFf(0LO{3B81kvLlLxx=SOG$kehz`}BV5yP4<=%KPm6t!&Q8tRFe zxGV?~Bwrk>GCJqS%$sxF-?#`Yxq{kk*`1kjg1wE*D5|0+55A9PI6^;sTHxyfbBLXp zhr#}BL0 z)%$Ws5u76=$MgZe~)5m+&!`VPjA zGu~EOWLnLypb{zP8m*sS>o_|zM;NBenaR(skCR8wWB1!p_HiG07BfV;hbB)e57dR% zSG0~_1nD_UOkrnvZ)ptFR7ir_T$K-cwVB}C0fPtmiSC8-EqbW5T>0JB-xR25d78=V zRhLEbLEJ~4;o&Qr!k+Gu4WBB!EFUN5SOU#R(?&c*^;m%a@ux+E59rW+;I@s(l=xT;N()7yhIKIt+72JxQ3GXD#|vU{WfqZJ*!2;qI46 z>mi`|*n5UH@-RY23+j0z&YHXUIbs?Bj6tkc*&o=;1{01W<;RUFxLdcu8{5p0`iziuT&7gF{E@oPZG(4^3Zf>8v ziW*nrwrVXqH;3Yxp=$wTgsB;P^WiK*5&H_;pe|BLap1|=n=6(QkMA4DEuTx@8k+ey za6D;u?T2?EcP=~hwBBQs4UNfmNV>4&F;Oi#D=C>v z%yz>jI9JD1ZVdFtij-QTBwdtBz~Hl{rluVe6OYfmFdc6ZnL|<)CZ0eN2!3n?OH5&M z|&~WmNug!{ut!#6IK_#PB!@XGedyHB ziglw_oN>1X-hZ=*4Q3GAm@*$^8JxyBW9L;E>!um0dxQX%^XCmmSJ2u*=g%(a&6>>Z zTkSks-BENAEWuO-zXLQIq*`lPyHrPq7enlWWbeS_C5)Ca_d43Tv^F=Z%d4xwsl{<- ztuGh9)Sqx#C)o5<6GwUPpK1!dOYuRm^7)jGLq%N3KUC!QuiBVEZv`03evvxes|IL`< zUH0vZNrR%%sZf2^06)-GK|$rKi-m(Sui<^im!-=xpL0T<+MWxR_D|ViYyd{RXr5VE0DwRs8EM(ht}f<Tt)8H*(_N zcP57;vf(LJPjX|FQa?5xd(B^bVTIuL9{5d3v5YfBt)JHT0Ud z7Rg;kdNkSPVB}N{e>+YC?0u6*L&L~be=b(v`4T=qL;>B7Ln+_VdO_|lt^s{R#C6G> zh(PqDof=pJrxxF?lTXD1IJGrKb|gaa3;miBCzvPxLHdcWfviYwx zszI|zkxn#P9Ws^0ZaXF1c8oqC_uTqYa}ePHxdD3Cg$`6E5&Lu?(Tvhex&D4^Zf9o=L zldO7A>TAbs^zYPpDvk%};JH4#G;`UQb&%xwMW2~DAuJ41O;jI=FC>7Zw%BWZOiI4? z#>h4hAHqjmwTnOPry+^P;}UZWV$va3&D}ypkyE$S6J>q`!Rx2X#|nb$&+daWLf?K!ghmCBn%!my9GOO_%0ZuC2In#E zrUXnzeRxuyW`HGWzWb)Dm#;^^ntmSt&FcnNKAwqinz;M6UNghg(&<7l+$d5}XgBnx zlTU<|ITiS7`9S%Bj+;zStu0%hRRCek~v zn+Mvm^X88qau2vs_Px0)HBGsJu8SW(9+T@FZYk6>-Lnq#S+Z@>*KZ^(UX8jq&|-Tp z{!bmv5xiF6aI`}&j6pr$%~b%6=zUSn*K^8W}F_472V&Z9P{$7o-?3S^hf3>*7~T}qSZ;gWu2 zp%k+I&LWM|XX%@hO-3P`OlNOLTzG25UhsHNt10d$WfC;aA61QrI1M)Nc)ai$y4Wf0 zsYjzG5vNZLwSR$%drd}*`dn4U4%Y-OzKQg$mbBjum{Rhpl;hXB=DLt&uY1Lr{fzAm zL0agvHf`c}GmIAIRpzXxsw+LR15>dfQ!{Kr<_Jqz$fr*OyZ6W~&4`V3Bi-05Zx<)! z>K9+{zkUg8Z+&jYk&)9-rv07$`z|+g;`X;Q_vSbv#85R0Q-VhDhB9YiB4HqO3v&mO?_TS1WcHFXqh& z*|2a97O9twjg2|2lsNGMyTJw)7A4$`!g9M=VcB7qAg8mJ9qjUwFvJOkw}$9YEuV!^ zZ0#P_m^%shI5DUD-Dzs|!#r0G$|pdfG42WruP6~4_kj1UDcIA?vr;A`s^Qrm3J2vo&9B^ft?RV8q*Owi5o5XNQ-fai zTr!2$2jWVQrFfz-;kg_``X#9xCjBw%1WnxPrxO)_CvB^aaC0bRzZ*B&F+Oe_KK{@h6w01pZJC!Neyhr zbZOBbYX(nKj2xf}YUR7l{%2NY5q~h=V{ z?>`f7bzt2Cwg;tVhao)bwo0y?`PPQ%sqLWw^?u{)q+DdWNK(%G+s4Z}GAwY7( z{U{(f5jycP7sNdBcu0cOgmN`p*xnUyI;c|_oOdg(>`Akha_oveMw4yer0~cTDMnpQ zgHLcj=Z|7C+W|XOXtvlfy+b105@KGh)ut1#P1;BGMyOR)=XA}|=z`1|VdT2lHLau1 zzeG6sMgi;claj8cTs+}E*5p^Coi44LCx7|o0~&wr6lyXt!{3o`V-w_aU~TbP$m!t_ zOgFvE$7gP>y`R~ck$bu6wv5b}r-z5W$u@*2Mf?)Rrp?rMx9uuGfqGXwJ)=~lDI(+~7H9JCX%i_K?Q4(7a#W|2gE z3dCmdnVLf+p6aQsq)$Klk)-l@mtsmH4{uvy6P#C6p%V z0#Py%D^XN@t2BYo6Qe$mtzYSZ?xbn7BE&&nltR>>m8NPs3FabvFq1ZI+hW~kH9-yC zI7ivQ&2iiaBePwENPzS;paU}DzUVvI!9I8SLn2`e*Y?ojVY8~GKEZdMBs8w}ia2v| zW<|TCcJ>Sd{bH80>)ST@^&RHZ&nLvk7uacj@W>g9^dbILM6qV$vv%{NsX?dBuT?3# zyS&Sqod#`^kKq3I`N(**nF73WNGF4;Uvn^hjwj#Fe2J7Iwwj1~ca0QKi!O92R)v?E zpJH6WScNFAzz=$ldU{t5Y7i5ZQXU0&h+Id&>_9fPNvka}g2NRW8n2G;I+Hf3JCpNG z0HCB~E`?oBtdsX`!}^T7e_-9>(4qxmZv~ljUf;H$zV$T0wz_0yTm~UoxC5Mo$;+4^ z;OwfS;|M83iW1c(0Uay{s_3W=Us)nDxZz8WC^2KnTYkgQ`J#!kB8jzg`>xF+ z-Y%nN`}eb|a<5qJ9>KTva+;t2>*5V=>rhKfaf}hwbVtFxdG!{}Tiyd)qOENPs%?_E z%Bv;!(%wZ8N?vIk6b&d+e|sSS^`ddu4#(DnF@#qt+Gl}RN5?IAYtefdIQ}u`+wU&e zax3#GDT88I${$RO2^AHSY(r}{YMoHy_tu&Ed@)@}rTgjW6D*s_$&VD-bRjsIn>DL1RiKh|ar?xs4Y|B7AQmJ@0M4P?mDh(1^tVzT%+4G`PNIq?o(g z*jZJ(YHHi*O8{0nGmM6};yG>>$@k_;Ia7h)_4QNaVedhX0PxJRVamPWJzFx)jLBuj z$)dNX_-W_RsXxDOZqCIuYN&UXX2@k^?oyU{=4-4kQVXw4K0WlnQd_?mXAvcCX5c_H zwnH6RB=7%lCRl$1m;buJ8fmh<8*s5^exB8t+=|_4^HOsDQWK*NJ{hSQ7q(CQ$T3TB zx%k$1-7j*ZH(n{q?o{GR|BKwfjZLp+@%2_$=Sx%htXv#LYX>{~dW!Z{X|nn`N+=!z z(x)Ru(hrdrysqOPQ0v(JX=TTEE=4qZR`U0J?RmDO<)za#?RsLKLxDqbygtjlP2!do zK}N4wwJ-`fewC#J`}=42oxY?v6X%P!;FP+pX(kX-wz*% zF7kMjfv$|WzC1X1rzh)l$FLkFXJND>BF_0R5g!ro3dZ@i&f<~`U0x~!12&_M(?9r8 z-ut?f`?7K7nZq2+7m3CePuF&53d{d2yR+Zx%x3d}OHqMvFZo_;ITblb4#srQwDB@p zys%fTyudOr1~mNIl6?S%NV~M`v-_qrU>osTLVz@48Sb-U@wNmCoteWMJi?x;(1vvI zr+)IDU$82#s_HLXvY_GGVj)97YGsvTD0BChiC&X*@5}lXp~cw6S|Zz^E^{=;bq)}S zQz69c;OVAd)j%9swb5c#v8hk*fJ#`APRw2h$geK1vu{A$37)p^jR2E z{&FR1mcV+MgTuV8&i}e(X~pA|nh`bPzFJq(o@<#2?4F0;gs_?v#kocflKhcV%whQM zJ&B}hK@FaHbz3_Z9zNr?lLXoHg9#+E&NGAL@iPMyv-617y!%rk_1g_#b+u#wdGVHj z!2TT#Bkr60q4Td&hjN28Us2sg%VE5aoCZe_^q`^%KgLB)=y45-$$_Pj#B<=O>lS@wx3ksCLPK26NN`$@d?Ui}VVNSTY` z0rF|5_tW%LF}96HpV6Nr5Z%=imS1NlS8f2+k@C8EC4p_ct%0}HqSFOxa9^{$WIdNE zX|#NHc2a;_Cp;jqFfi0J&!f)cjWy!igV++AZCMCJP=`6`B=NZAxoJ>CjmOfxv3n19 zN!MomYh?&u>Q5NfD(Nt@+CW%9=el`CMNHsor(_jPp~y$QG|IjKV+ik@=ry820lp)t zX>jgkcPEF@m%Qchs4mtR&nNte(js#PloZf);WiNWGdrFqxROlON9$z92PiI-Q%{5) zyX2J7nA}D1#c8P$am>ohTboupKR=xcAAECz>7cmVh&T`oYic^d#8qk)d_u55w;(Oe zLVR;`*O@0)Ml5?{x2wOu?kk*WKE_4&5&2v-;qLgSGoB<8%(uQf=i7;-_B5}O+jV39 zo@?%jpyRmR=RFNG-))~Jde7Y>I~XD?{!Z?Kq_Oq{lZsnqUp;968@%57d+@=eWq@~( zA6B6V!Ml(9ODKb!qk4ML>=CA!tqml9wWqR<;7tn+fYbfZ=JxwoS@Af)?97FQib7DA zOZ{Uimkow@^7-(DpWZrfc7|Owv~b}{bYvXVBPYowsiWr=DLmJVeSJ;ZulHt4VpNqD zWa$t%-0kX!n^vCE2Ls-FBPob?F1uTS#;i7 zrItW79Hz@FKp#TG^7A;r4QY@|-pbY_kqPG7(kc%b8Hr-;DfszgfvSrwe5xHC{Z=w{ z+W{+4+*RJocOuC+Xt2$+Cy;T4%}~V>k`!^c4A4LiLgFch;+${pI`#8DuUQ{Io|e_1 zr7%x2Nk{2}3v1J(sx_;pj??Y3Zz^}9?d=wKVT!}bly?tyCeH))Xn{M19&tRKelj;V z=eh{$=1yac&bEk&jI?Zf^PoA{8$aX`*>+UFZIH2T>`R9gbSLGYDL@Nm-#UA(P>ld6 z-TC@s)x;vo*;{G>%OB~je8AMY$kF5RsYajDD>Q`gid5f~qxr6%R5QmaXj)JkT-v_V z#3U#qp>gKX(FhloE8IE^5|Jkp0XzUMJ#8zGIv2lXh0>vo?31T9^}TJck%<%cB8`lQ zk8IV^x)LDvtRu8Q#Sa@a?I+vn%}Z-V46e@1-HDz{U0qzO~0R6XL z?L0=~MQ4Ew>Ie3;#Bc7Zbmh75N$G>T9#$cbs`mG5D)Y|VX`MaC=Y&;ubw-7T2Ww{8YqmHO!RxA+=d%Qn`Z_6oj-E!}ZT!8ZenW)9;L{ zE1p6@3%mM?OK94`sj%au^LYVtb91_O;E@@d+U>ZnV|Xv_;`Y`~u~!Y3SxvwzAS6|F zf;TX*`OSe-VPeeDJSN_p>y@T&0EO7klIXRzkT}^MSv8I%KbTbT$cA6k^lw8sE{k2p zsi7Ku9hLBd;7VSPq1Lrezgvff`VfbawT)i87kF0CrhL064*h1^Ilev3=Z3Y|JZ$9C z9mobM`k1;*kY)`NQP+MbrbzY!ICpYd$snn=72j9=b^@}ergc{oy@j$;d3pSLJ5J+Z zfBvD2Ec;ov1B;66f$CGNZUe`rPjt4nnu+X#a`XoB9Z^<;QY*XOkq`1~uTv@6Eq2u~ zlN$Y=6n0l(dD+PT>driaU8nMImf``URjuUhNJ+z8((t_|E~xl^Vq+^A!5~^pzG*{> z_GV$tNPt44zA6_hTAC^=a5*iuooC?!==iZ>ef7Pov8%!Yh4V&L!N#3J+GI9(7g?pp% z{dKt=k;{~Kiv=S+%{;(xu^2++A_swgptD7ig4%_>i%ZHcJ{cK7-aH5y8LBfc9&e<# zcF-HL6R?wEe=eM7aqUlqVVFaSM=<$B7cbEIVIj$r{~zzG0de169xV%wd!gJ+%h?5M z6eVE>hGrxzilBAQL!>%rQ3O64&0uR|lg)6j?S=^0&|SuX_WhDDZAzJ+KmUc0Si@b2 zQIaoz8$jXCa#PC4nR+~U)S)3b`1~2C``z7LJ%tGXdmy^fqw3b5d(|Gy$pF#aon27h z``A|UtVT#-g0%4Pyc8pp_}2~RF+b3-$Ah#>X`Dk@Uhf_UyyW+2xnkpwDsvgC^)CP{ z-kSqLldGWvisod;JjI&Lo23q1@>y|C3^%xggudx=v^AeKtBe>{peQ+6WGGC7&L$rs z!Ug^5?K-OfiWFjF#jTaBpYKKI!SAHHi>KV@JQTLNlVp9%Z~tWE&g{|sF*UJfZv^p|3sEyMjCT3{AXCHS1po$Y0nm zQ&EtuiKnse^dQHAl$Q*SxG$OsX&KBuizy1~$WCaS$svL#CFx4}(n)#_9w{KL{>sJ@QKtuX zdVsPaSIv)xq~k}*k{_pBw9gX|5Ew~P60U!#V0!lrRAQcr5BWsAf&2yXAk)o z(9_FDz$-lhnLbznLy8PG9!lpC*r^b`rsvJJE-u+t!KF!n*}1g-@r*p9(Uou*pCFCO znpHX%Kl}U;u{L3hE_Z^0Hv!kB=HCScQCZlAHE;Epbzz$|>ivwU$3Ng#*EjonvR4K^ z6V$Fd>AYZC(lDUq=dsbz>wp_~IprwvF|bKF``wW(v$uD^jVbFN;pBz$z{IZQ@3u9Hu_2hbTDPb9njRZ_y7ty%OGD>c`(S+=A1i?&~bycxzA zurN9~ebV`CK_WJ#s}rqGBh;0T?U$nkCK`-u&8*C2(PhIbxH0Y0X!bRW(CMAADX$dL zPA+4wt@bawMfgMyu$Z_cr*H3tPo7*Y^5g&s3i2$;*cbi<0H&T3_4)oFFY9ZVt()7{ zQ;Z*{D6m`z2|3ua$UrD)L#DE3SMViwg3)wc#Y;YUGNQZspvgF-j{){h|5--8`hcf_V6`mtJdmC zT-NFByM_$Tw&Cm1IdiZ%V|Q|c)VKPD7Tz|{(Zn+mE^LqVL`0e%#5I{4@Bm*xpudG; zCKSt!U(ME2^6+0A8VkwN!Y%p-kmB#R-F%4ScU?=h;fp)HcAZF?uj-r{aU76hl+y)# z4?0@`sB&WaC~3d%X3>ob1SQ{_BN2-Xsy;@B7lG&#`J`9x6Q#?YtdoLcxs%A8jKzOH6wngDy>_eazvxrv$hEb14C`{jM0PDoXDr^1^x_I;aYHNJ>9J)|!#<9D6?U!@u6CWh z7c!s;_v{NNFU3TTp-1CQMQ#*faTz}-K5Hb8C{D2fI>vBGrtY}F4S|8NiuoDBvQ^%V zKAeVMj5AEc!DN$hmoYVtmVj+7tgGSp?0tG6M3)kpC+8YH*!P_CJlloK#>RZK#;@~9 zSr;z0RX)aQ)APSQ28K<`yHnE$o#*Dv+APyuC#}6lK%ncVP9~)L-z^>?4xA!dgt)Eg zB*U#}T##L?B=zgvy_u;cnm8t?VAHnz5!AA0J=vslX(^f)pRH zRghSUE@f^qGo1Gr`sQ-5ryirTP)OMQR;Zg9bBS{~KGi%kjNddxCKTGZUAO|ihwl>U z+FXd8Z=`iyXsE&I%^p>L7C&{J)+rX248zT2c}{h?td_2t5mP-%ZaS-mg%_iWa^vRF zp(sww6w65MTaVyocu~*!_o;E&4jHvN$6lY-CpJo52Z&qHoT|L4%J9ye=h_hY(xLb; z^ra>E-01BSgqNW6@ESkR#S6xK@kxh)8ufLrjXpm{iSTP zv4fVg)h={}()W_#AU6>@J+r(lXf7AXa^b?leIvMJ8>~M*23Ja!eu%FK?S6m@lq+`0 z7+Gi907J4NCp}O30A>qDdSg&K$w_TD@)HO8qSZ7bC0l33#_}aXH!EeaO7wa9-f7Qr z@uJ-&x7jkJx*FlB+uc(YjGd%Dh$VR@thrOOBA%A!N;x-Qdjw-&IIzrErz{0YPuFt! z?}J=MQ>?PT|ETXAIWp|WPk90RCVk|{?d^&E1(1ZB(+4P-Vr{?JTw`50|K>+-O^sMN zZvKQuN^m8*bFupDw{jv&oz4ieIxs*nmHC>Gu~VqU3CzyoZS_QZ5sQ4CMsrXh_Slhs zjvF^<_65g7g4M0HwlhP*4u9Rk<3?ip4WJSgoS6{H^ilMncv(ON03YnX5mRWLn{pvOOJwlEB9&{=MEpQPyXXA1E7) z&uL8C3sF!z>`?7lQ}28B|6cVu;n6@K%!&3H_Ph9F@z4bNuKo0p|Keb|63g~qe03Xg z?f*;PRX~Zq{Qu%hAE#W*M4-yZ$cVaGz3w2le^sOMVJZ1YfyA$45&z55jZGK?0zu>g zjX)tEEOC=RP7DeBWRUdZ*@@45viBxk%r(Gze!K#9&AkE9e;l64^o{+swIf&}yO4Qc zAaI~{>=Z$U{m0#CwX0(PT=M{VDR_LS(kl?CH?kjwu5ve2Q2YJIncXJ@xqk=o!Snyz zzP#DZGZ)T$)M@;14QN(lpKRs7a*Mnobw4aTTKB$VZCaY8;e+@2({0g?gRc!!L>D2R zyX@Z0?v^OOPcM|O%}h-RaB!H<&dy$^x<^b&l??e=2R&Z1ahF*1Cz{CAN^5}kcYJ_9 zUFFCFsr$D7IF#eVuh&u+THbPZC}rvfZ@T zmq!GhXTg?_`@$O5lq5j?s^IuIFI96X*kB`~o;ET;rGv{7ZvCqLx1hFe#0Mm1i|D|) z?u68g&?<}_FOM_ca{30Bj?3cy=ZkeaPc^`26H80x9e;ER&-AwYpSfk!^nQ1xO!}IF zA#)VBQ?<5%_q*|Ng`#nXNFxsc89yUy%@A`h`@IKw-6JDL*=`(e19Q=9%0$DXUA0l_yxrf z;{kybfKjovoSa+_M4|`q))X8O8A)zN#c5Sj=nLqJOJfx~xbSm5^u5aKJWZf&Fs_(| z`SfEoa+2ShM;puEh6#pg#wN%!KTJNv`K$5Yzu5b2cE+}=rA6z}q}KWKmr6D&D>YW6 z{$A%KH($Ma{^I!?Ky}3rIa@v;VVT!>w6s^zB};4(cE#JsNa&uv92zVA0BrCf3C5B^ zH4(X0VznKv4Uv6hfvb@FXf^e7&bj|%&arYeg_hy2>l+&*;ThVf^lzN%>Y9BcLWC-w z5ap;H`841AEiEmErQE2-$dZy09w2|mE~pZzQRRc*2pDs-e2d54d9HPh2e><3b6sxP z1o5p*?oqfe-%>$R@S*oVD^B$ZX830gpOy0>C=pCt_rU;}`dR^+K2VM3gc;+~vYfn< zKvS5EBE!_`VLWN0FmAYrIJp?Ci#f+KbWh8ND>$3>``*>HCdG{q(|-U*M)lXw5)~8O z=-Y~gug%@U_Z5b}P-gE!iQJZytoHOGJ$Pc_&?4>zjhUdvB#LY!)Ppauu#9*PC9?X> zFME1>!F=lnliAR>ylAGhm3i)xa=p^$6i}~o6Vf>fhoxWp350GunfeIkRnT zK*eD2S!jk#Q)BawnJHi$A#?tVX##%Yf*QC`av>Mo;pG5x{(bNZ_E#Mv)xNFJu}e)x zJUsIN;K!(IAUkej!J3EMD%CLw06W04@c=gm{zqy%@@(hJn|}i-DVFAKxw*Xb^7IoI z7Z#eg#n0GA66gD#AM3oYqyHfLfdrFV5tAj{X&OCz0f(F|(zU4kimnzd<=d;a7;|bX z8mex4Syt}n84qwt4|TfcY^{EYb!%t0I1m=nN`_!+u6v+*H6l*^2qb}D@$WVb{|fvL zuIy}*fC9q8lKhlSvhF?GN&vrzRK5}TgNRAll5tcc*@~w77M_R77k9r4_gVOSG%jFS z*4KyzdmCg2Zd31r44n8-7S&WwGe#Tl+x5rvPX94}L-otmKIO)mHQL~uX{SZBD0Sd$ zGKjsc<-b+sxDC1dYp}2V&&6jGz=K8`}vYCa)qXmk|+N-J%Zs5D(*=gaU`Zg zI+0xoG1kvgB;2wuKp$7hglIuqJ#!a44oqYMYc;^tBKs9TdCQRkhhJUk_J2c+7!W+< z4~D`5CWk4*a4m+qT6kd~@+f}7>lqO7_3I0>m|69{a!M6AN32c9arPi@*h~CGwWOro z$f-!_AB-o{_5Ht@w(r@Kx46t0+-?lInvk{Hp6BUDiI1y@EP+B3l9KXEx|<`coAl@j z2=XnCMr`xBQ#0>KoksZthtr8|udpjkZt7ZDm5Pe#RXH`|Wh3W3N7i~juK#iKT^<6| zf)0qzGx(Qf`ZnMH^kdqM75@Wstmly6@(AyL0jYo1ao5uh1)c!NHK-CoPt zxfOn(SyfPMxlTsuPx|_K_~kE*FEbIk>lr=bq#YdoC`&&n9h@_muZ{2OAfmj)4=?!c zto#dsaZgCum;li~WX>N(sZ}>c`5pN$k5a{7oZ{zE;PwBB@2Y<_W~o)pxIfGlLAnDR zsId+ySj2^zBF|WEuLLjr$%xqY1rFp;toubs_QPKH-sfytXT)X1gm-Mt4Ba4K+&6-d ze*~E2)n75Y7r-b-~*zY{A%_+h#x!&A#ygcK|xeQJ-w_e!RQggAC^9n#Pf^8 z9LY?t;@)shCi{>w3?Do*hERUCUS9euef@D*1pk6HKaU6V|E=%-gEn52Ck>>+tJOk* z1F7dS=;=GjoYMOzGiYcu5CE*O56Tr$qJDmY;0TW~LQbFrrD@^ND=h0*dT(ruuPT)2 zdbl31J^H8`i(ppx_)!Wc3{2VB7ev=hi$tZazR60hN-Qo;r7?ztbl>}4_QCl|ArR}y z`3OQEFxw51x%$RYMy|df^QJW|ze;$alM=Y%PK}RaeUQguitPx#>zkW#5Cr1n$#oxq zpk=CL>B#&+V9kKy*Q-}II#|5`K*Gq4K|!QK-URi8(`w(XlYcTM#Z?s3uJ_&>J>!D@ zq^{44(4XBZDpF2z#SiZWyi!x`LZPg+dxgOz@fjJ#G`5FsaMG%qUw`bnvcevEVDox< z^1n}?6E<16#&TNcH`Q0y&xMJ*dbgyWD=?U}y_+Hx81TyD z=Q9g4i?d$3O4UCfRuBQs@-{GW$=;>NujVW*bH2mSX!Ut)N!32N8)R0o9&?f+1ne=Z z9uO005VCIiEQ*1orO^fdS9U2~Ol@z#{vw0--a?uBZvFQW4~o-}&^cR>`A&QH*qC8& zZz(PDmp#4eWow|15cdF&iL$avsffSTy%%@UXJOP5sYK0;wzo@$a&V2^6Vcwgzkf8U z^NAmg|A%E~H#7vXa1N@ssHp7hRKy6pTh!}aPH0DAv~a;&?}Hk!?=ZAfeSQ#Nac?5EI}v6rYM>s=El#``_ME+^k{uyt6LM*6tYCnDawGs5^<&MYkC$h9eDg)x9D zUApExDN_HFjqzPi%8MW6;MDBgh?z8EREoSzudkBNp=Ds{a7UEy&zmY#gpzaV7e z8+49u`>$`T>l%1>36OOyCFjrOd3p9aS`P^GaBB|4mYil`VG+1_)1=G;GAx}{`1Nb{ z#!{pkVJ&>+CI%VItmLBkSn=s)AT5maj9MR=nwl2s-nWs6axE;#6Dm5duZ3LBg&*$h z-!`tdwAahZn~><8TC;HPT3zw<@){U0#3a1`aFtuc*oQD`5v9Cm>*iMcXAQX?{}Z(e zw0_O(m;XDv!r9fN_d$bZaqImxSXz%J%7m=daL(7SztJSxa883?69)j8uahwZ5>axhj={0+ zm3*_r@BnE_RN$QxG5w|J+fr~mjp_8Py#|;I3JO-eCD;y>`WIKXN-Ks?4CB^gaFBv? zZ81i*L?+I9j-;kt{In>r8yue;`w@4cTfCHlm&^IOFZ`*ZVi0!9J_T?~LyujFuiyOeQPu$^b!2Eg6IQd6^AhLG!psd|XQ!q}O$H+H zEM0fi&E}GweO+M&a=v_r8>aOgA}XB`S7I@po$8htwPCd%^4KEw;;#($t#yrRGMf{P zks4`MfHXT5Xkp$DPz6`g@)JbfBTLi&_QOo}0s2%xY^g%Wc}F%ywS36ent5WuCA79-b>>3!MHD))8#O~?GC(g z*0A6~U!i`klG^5yc0t>r4e(Q)Er0I?IAYBHA3PHxSAG5RO%uh&eR#DoH+0AAZQ0W6 zNt<^-7^`Xz!lX@D!Pdp)TE|UK(%0NjL#K?8qjzQ#?d(73#P`U=xmftRyIuA8pM(Z*cQXdUt@JAgkI$pRyw%s9}tjaPJA3b$dr(3VHrye z^doRnqWNp~Fl>=C(*)~B+}GUL@`bShf;X?<`%xnnGbeua->?7gO7LRwlcW}BPgkKw zgrUU?#KE(AgE7h2kR8o*kFhUb_O{`AG{*4}`==aU?vT!YX6b}C{!8o*kP{F!L(}EZ zO9w|7q}@Nv-+2#waPRoHZ&!qRD!+6N@CphFX{9b1)jVlPsKL3Ei+4R4I8gzYd|Djn z@+ocbFRy!_Z`uCkVE^(vg~2~wn&Hms?VS+ltQpdOa{@=gGOL+sC@wwQY23xJ7SR+0 zfKl4b1W}eVqX^FFj5sN@x0HPXq(k1Ya1i`BW<&Jx^d(y*YfHP-l#~qNi_RUZ2)%Ie z{Nu*bg6p6Ste_wvz}wr?*?Z!aiW-xYlNHEQB6(w=o8nEX4P-&(*2^P;N?w29>FDk4 zouVcWrjL|D#zKd@^&fi{sai@IA?2maNlg}6g(BU0cVlvR$=(9i7%@|Sm0{q#$#(gn zJ)Y@*{v|6eckgV7v&_t2mj+mPtYLd7SOxj>Y%GF6bfb_mEeS`Bm~L%{2iUZd@~cpJ z(ib{ib&86j(R&KS3{gW5OMGMcwtth;m`-G+>#~4LSEqrgljW$KKwg}E_kN}8^Mr3p z6EA+#VwY1-vh;xlkhwDZm^f$Wxvw)YgpFer5YC~afZ6$3$AMbiqLP9qH$^VrtnH9s75)Hwb!tuny!YF0;!9vbpNa1p=P#Y* zWo3;kt@jApWfZl(rMI$ww8yGOO0L54L~`oc5kH@@5WLJ`UmXN@t6l%4*o;CuJ7U8l zBlp24(nDhb{I}|a|1h_*$`jeAer)k^0vQ$L<+)m#v|Z=$b{LAY{6}3)`$5+wTF+aWOS7Iq`_(<<)a%#Wd$#u$oa1iykc(mKI7MW|R*vowR@Kwi^bZkC)-N|lm z`kN!r)7!gJ7Ulrk7YfMej8G?u-Mo1EBom{Hu7bGMWaG6tLV3lRM6x1fVu#?N3mD`^~#QH@h2_w704y z=!1h-+dnbT>LJn}x(K=pK7AsrsJNKWQ#YL+e*O###u4(Sz>yKYs)wMAbe|ybbhIIj zV?&3oiwGL_u57X`g@C@zx?t}Xo9%d2hrkMB!w`s_9Ph;Z)a>YZgXA{122r5GR4S`& zZ;w*uhc^%X{Xcj&zX1fVZo}>AvpIF{tc2^=V{@pCU{SSXHuDtAA5}<=U*}iA~?s6*08Y z+uk%$`nZK18yt4~{MYgDm;9o#+HT!ci{eC)k^SJ~CmACj;PzSDkxCE1mHsyHkge+A z6Ukm)o|Rr|iCH%A>(`|<#c=xuw9Ad|eBs*OJ}w}W3wtc*H~8h)E-lNrRYljtz)Ime z7Z~fG=9E`Rg620hX@TAT<;xw;uh)FE@wc~kh9Q46cm$_FtNlj0CW1{ceshA7vId-Y zgUG|XaaB)zUNc>~VHEU)0g}oN3k#2&B@)JFQmjLpw2$f4clP#bGi$;v`p-N^H-cc! zAP^5Q(%7EA>C;jr>d>U$y|4aKaniPP>*-5Rvph+>D5R#A4-Yg=6-xiM>!2eal+P86 z=ON$63mM0y?l4}=3OV-LB+cB^w7)2rJFX(IX0Aa-s|LIFEG;ccU3;;3CcbfQEjxk5 ztZXk3qO>)jO3(~k(WO%R=Vxhi!SpDW-3L2*!Yc$*rG?ZAE*PftrA!1+{T24MG}c!) z%4=h?u7yj?_c+0cA4AhC6FYh=-*yzLYid_XH+lu;S@}B1MNm3)b}*b;N^f_j51#b#us#|2toY~p`pv}=!U+^d6Q#_Lyq(pm zqv{&Peu5!902X6pDCvK=LH0=6={x_Fjh^{F8GJ4N%I}?IlNE^s=7rL7@Nj%n6sk`H z)|Yweb+NL^OHJ1m(Tk^xXlXLGnW2i$A!%UHXdzOELus;(r_r?b_O`zaeDgJiv}fz?JfHwXB+o()P zq2f>FyD&rTn&I9G>z`fVPD_^f^GTQe{B(wgh6-}F-js_;foQ&LsBb>#7)3+o4SZ!j z-G8rU$#yh1YY3O}j$tsx4Gk8r0!i`J0m-zPYF4fPdMhIY0rd6db{Z##4VQ&AUE*XE z5avg)rV$ajk%63( zs{awEC1s~hMieS+K3-343&r@NUDjL%{`zUg?;Fk{2N%Yzc4+?|LEN;7hI?zp1B7<$ zpVJYF!|zZhY!y2#;a)7eV1HSJ{SNy`voN5rcI(XqgsP5_JcI)2>A!w05Q)DBqm5U% ztiU<58jXe?y1G9blpg%g%lhh(w}E>7vCRSVQAwCujzbQX+}=0B`0qtW&>1wgGTiNi ztoAv);F;J(zW=KF_DSYN_kZ!#ktflY#s16hQm_42E6She{`lX`{qN@f|Fbz|bE$v+ z_iWQ)U?$vWZ50FnicoRqsjJIUF5|kGKuWgT`M)k^HHR}fZWxAP;GC5SAjduBUgn&0<~yiZC)SJz09s)|2S-S(Mgaz8pcSZ z_rfvsm)?A@yeKzmW$91uxzJWrRAgXfl=b3;1=N%rrx-vK!bmcteNj~m__$*=VGj1T zhUN1BvEeNXbNR41fKb}DHC3Ds+Oq@FdA#G>_tMG6*3AtjR4hs!!DdwYXoUV5)Jp%2 z$_u|(?vsp~nwm^NKv(mid6~zbc+A0X3b*XQOe;!#BhaJJyoL5FmQquD)vm{)E_w$m z(ZP6*!Y;J$?r&ZbW}hPES3TDQaS5RgGZSnb98j+hb%dkvFTWtYTwd)ul*dTR-oC!R zo?es(w%%zpe$h@#@4B}jp*k$|>C(|HH82G>CoHPWj^U&^hj9|RB^9t7CA#IkvKY6(BW0W*x0@T}&{tdb- zTM;EkUyglNagOg-vcAH_#V+@#9PUft=e7=&k&!9JFX$#DBsp3?dM@dvi9%V2la(kP;pMCXOrPJ0kE-dWM>}+l)vP&18Vi$0*jM8!9 zX0;Hv@EeyjKQ*m#{KKyDF*ub#Zyzw=rWgL#ef4w7i>dezoOZ? zOpCQLG4@Y&wv>Wr(fgja*k&KPKTt8v-JIv@OH4>M+dxMIklM7G%+`XZyd8;;pk`Z< zJJ!hpQX+8?Oy@ys4R&VR9Rb+&y@Uv0bmEu(JG+~g`WyxuN2(J7Z#0H#;+Wv8bI(t{ z{WGzD*wiq=P++vm7}r!YG_{wb;j2%n`d@u3QzYG*UbGFm%Y*382oe3Q$l6=}MI z)KD_DK%uP(xQPhDTlPp zkh1|fj(zWGI`L8uMP433r#y6OEhr*i%A#>0!;_k=CfI{wVj_nIv9JsRb+jQ)9*~Zi z()I;u71g#vl*~N7ES%Rl^wGy*iibq<#+H~!v3ZQu1yGB3gt2D+Q=dN~hbnXwM@tke zZZ4h0ddxRRz5ZYh65%_M*AwXFqi>P467W4XlwMTOM#C!lO?5OOrCdM+0qf`fp2p*5 zy`r1W!t)(h%tb(x4&3G?{S%7$j+VWyC$KwH!}$11*oWOMJq4d?AG~ULCGaV`X<~Pm zm2tkd-f=-FZ1!QnZpQC{$DcZHaVoRm_>3TdZ7K7|RepDz!3hr^K+}dZRq?}E@u?M! znT4Rez?h2S3fb0hLMtDve zPuC~+I}4>|*n4PeWH^~Hhhq1TpjpoEhE1i#6)&zHV>!=OP-}H7#RthCz+dudR2dXx z*=u0KH(o3VYaH7Pz{kZ^c`nAdpy(XWJ@N7{BBJ+Q6X}YVv^T2v36yGAckV$GclKh##QvIAObRqM|-ihqIHYW^?8n#Xy=54#B@Ds zAJdsR!T>lcz=r8HoZBHGG0`#5_q8vvbENU>Z-$1Ph7TSToQ=~TzEvLg_1a_c*|)6T zxSZ6IM&#f@fEHvr@B;y=b6|?8u`6h3(A+=z1%DQ&O!Fa6Pfu5)gRs{YIe+>oT+NOw z9{$S*~lH&T0{x ztRP%EmAsO`YMeq$;Nq8aio)bu!`fXr2_uOH*9l2amODC)?fi2ajv>y+{#6>i_DEFP zd_T5=7M1m4o|V4+0Y1Rx9N|I_Pj6p?`H8YlZCq)ThS<<_LurKeJA>P`O|s-u`kN7# zNIRcRL@XseK3sxu8q$RAQWYj4q1v*lsw!fc4LTZsk%xK3Lmla`@GWG0)h7u+g^vbY z4CtDI$W~H5(SCiX4D?~xpV!*q)jb9cuxHJDalz+xlFOnPV)AY5++U=|G%C9GNhA~N zg$|`|V=RMjLVia0-N!E^?D6+|8kUbmN|^2V$mB^V9&TW}eCC&JC4P^m@!BVa+Hu)H z8#U9kbLTkt{Frr8H*9W7;}JFaglT5nEnF%sH>UgV`|yyL=*vt|5OW-cl3=SXqq|;?FP6vT{{ieC!HEjEjbp zkB<`?SGtly%!xA#$4R)sm-SqIt7oz~mbX(lTqVLkNV(h}#1T1B4}0mN5JFMpr8!h7 z;!%TS2?y?>cHnN>RIQr>bfBifXt+KJaa9dj`V;{qglpp+n8vxoEr@Z6QJPtdYy9|Wv-|%neZt8Q-(Tubg za`Rq^W~?9bx}POal^+T=c_+E&W*#O(g=yW&V29M@P1X*rI|TGYsI%O2e85gjA}q-@ zKuy9>Vs4EaXPsN`5R+j1EI;eqwS=c0B_UMa;yaMU5X)$%MTbKah%R#@{42cN(`eAB z%4!VMo16$LCRN+nIa{LHQ#Up+E6e1&-EG|=%QA+BhCpxtfb8n25cVZ=>*WfZ+Ph00 z)rYmWv;cszPakF|9^~xvXKmNj(M!BWVNKx5t=)qUu)s~cgGcW(k_Z?;-QOh!xa=52 zUa<$7tv6pqY@;=_&~2Z;C`&9(w9QOCE;@Bf>EMHrkojYu5YSStIpsW1&&jFGDtIyZ z#B_zdJS>c1QvyvXJ69bU!9*Afm4E2bn+0opV6SRfATKHW@ypY|y|gUy#@@9Bb5dZG zVzBGSmd{WC^uVoppERX&p-n(tpfa>=?c9h4(=cSzDyZPwrO!eF*Y*9KUI97=k%)<% zf|WC1{MXil{rRjDWY#^B91G`l*PXomzWJ1ub>eqHAi7ds*>JW=O728#D(^@d%uL=NXuh4LWh*7F_{%MU$lcwCC>C`3d z7f6maFfu5rtTf?`tN(f}i{%n~5sg<#F7p#~@&Vi=OfRGpxvMqFnLW$>*Hwq?isARJ z2hUmYgceq_;FySYQ3RUSZ%{!dVd!BK*i)Dd(7gumG4xuG%dj2G-P4_Br$N ztCz1)J(z04aAwYOnu<@iq?1tLQeGYk9=c&29S*=W&u=8@%y%q|?7g?seKhH`FxNfF zJNU2*{kId>(n4*LcN;5VItx*Q!&0qt|rjPKt1Y|NBdj(+BrQS?caFYjX8TO><4Hcc>XI zJGOg@W#X3EiLg6wJLVn9opwD%mWGD8OWj%l2Us@rCt)nUK^KK9QKX*Wzg`=5Sb(}D z)GK%44@F&1b?&jTVQP%JmoL%LC^S);!_s?xhUWfeeqe8Z)8vu-dIh(Ioi-QL_}0_S|2F$hL%85eu$%y3^E|88X-s*OVKZdEq5ja@JGi(gt= z1^@&7(gPOi=P2kM7|40Q*4oA+J?zVuAQ5@Rp`c(#*lb)R&*JTgFZSdiANQQQa>K!i zVxb))lj8%tP)ymQq#)&>nMLA9SLLj#wfbp3IHieKCA!xqG+fNc!Q28j;DG0t6sCij zY&mXSB~jKNjnZIL?vdegK)Fsv)tl`yA;hWqQA*U(vGn$NFgVllCN1!!A- z?}K}`e03?~@gLHPXv2zvyOu;m#?TqWA*(iP>gA=TJ-s`dL8JZ2Fa<<#NpBZzI^Jpd zP)9~ain6jSUcK5j+nn|j5Uk?j^`=q8ZZDW%sRo6Y>`W7C-_!F^YmE`?V;cH(wL_5e z=7xqmG$pvr@cZIEzdm{B8buObnj7fhMY(C6lz741(s-nOwCo%twQKC|?FK}!cE9X6 zLTioyZq_=rW2R?ru5{DfTtD#1=PCKXz(A4$t6%muJZos3p9nUv((5ltKVda!Ow)fm zh#kM+1FON%#m8i0LcFLrT@tjZEz%D(Vye(jocS)sg2t zN|=G3-sP8$J9eNBH{@wEy!dr_?f=5^mkYLZEaR9bpTLdw!KGvo$@)2}eqKsg(|@k8 zi8EwoKbCcBUD6?3F!@6?gGr5vdq@MRPz0pN7d`v@7bH&hc2Z1(w)Ot*wPKK&mq?TX zp|w@Ja+SnPZhbeODvknI@2By`)akaK`-;^vtgN}6s%Y7Vr+ycALbq+_d=1zVEH_sJ z4)jLVCsc%3$DvkCAo18*$G0o_?-)&U=bw~%m7iZjmTjH(Vd5Oe z&7^2eI*an(;x`1xXC!3{``!I7F5LKQALIrw*8ylT=OQ;AOq?NA zRYa2KuK=}G`G9)E{doJP!*Y1#@qMM6|F}u$(cM$0$Y1I!#GS_P&(04Yw+mDLYIjpy zzGlvGcuoI~Wy$Y}VK3yww-L(CS4*O|cZQDxi;IglKe~h9orh@MaQ6cgvy^_F^(21=u2ixAf zc>WSQ`eE-E>Z>^r=*o<+B?t3C`gKX+FH_V{(VQ%o&I$w3=I`_I_z{JpLo^*%X-Gqm zVp6~+9_I+b`K}n;2`L2>+T7zK;|F0r?0e0TNX5Kyg?a#R?N1=Pn5$lx49ybV?}X;g zCCI7zf{Q!WJ4$2wJ&Zsz^K&W3TF=CmsRNfmKCT+#vtALKPPpo8vhS_^BK+?gyq`Mp z64MZ#M&9kdGyZ)Rd;D(?m5Z2oA(+Lt^g# zkrbH}clR-VLWxhzm_}91EivrKjoYqRT(C|kvyY6(*QvCl+4?gJ1{95BuVkQsclXCW zi(I~at(41U{~U^^5o%7a1@)f%Rqn^qZlI2N zZb}OLf#qXQ=djO&Pm|Zqqw37#0#6bzLW|XK1K;;u&T)%}d!k^wbsgjsXHcsuNpb2N z_=aMf+=~DGGokV^tv9G^O<({60|V9rb^eu_s#zL}lxBbp!dUjK_-ulZiwphmbNV72 zx6J-j0OO--Myw=VO617HJw3{PSc+rVnt2;eNU7x&%_=?jU+b?pVc-xj zfOtfNvB}|6+B+ZIfh24+V4#Xd2HBJxl3^l^!R}!mF_(?WoF2Vv6!Xgc9EFdKTQBcL zrLI2P)}gVvY99@nr9YcKKL|hfx7}~cO)XCs7ne4wGz)VTE|v74>lF02{bfAe-5-Rn z-lrk-gT|1f;G8JJ;Ej>?o{oOEdcW&e%j13vyDLGB+E&*w|JWSPBp{nt0S+V&PF`b} zou0N$Sc@|s#_a9=mXJ1JTn4FM{Qf+6ea$6EgovP~(4>LU{1z8|VfPfQA%CMv zuu2FNDbU$9L*OpxwG6nfctv;7NiY=)LL&vq*aJlrPm-k|O^5MLklyf4$d(UNMCW^q zX+%IkN{Sg0IC0ZIV0&SnCDPEyDlZ+eQ|NZ^ML>A7j;OSF8(GY|uCH#4j0iCvi-oSqsO(lb&Yf)8d}m}^6TQy3 z*^j7j8yt}s>l{ld?p)7aU#C2{SL3eY6ZxPur6i73{+&EN8!XXil)vhpgMo15x&pH_CQ zRh(WW_L%z}x&cnpI`7*Z>7r%*5c{CqmvFhjNOs(9YK_h4rOY$Z}8W-z(R$7c(#*5e1 zgHQOm-Gsr*cPbkW_BmC|w$KOOvkFP={bRb2z_ubU;xu2Pv7wO@RVS6k!U|&r^rkZ5 zgY%Kh7eM{pEJApGH&O`8%0zx<`)#%~e8|wgc`Mhj!LYbfutvsWxQ#icxq-s@|cAz>?VfXsg zqBwc^hM6g6Fam+-?CLVCmC|u4PIBr^6=R21Y}FsoHvwELZ8W9-Wdw2QqMS;TvE)?p zemzV;UcS6T!DWxk>e4fssUgy&{pHFdPfu?>Ah4|3&TVA8CJ$sjvM9Ih^*>*G##H|G z$keHjDsMBMp*{P|bJIb#G z6!2oXTE+I4d3tyls`%IW647}v6B)T%FQ>osu6uSJC6y28 zX>DVkG9orkGQuC$%Dz--pP3U5`;yt&sm>`A^dQjFmtVo47WjR(G99!Yx&?vGhRo^Ikfif7&Kj-Ez_ zDhVfjS@GeNL;-2p%zpAbHjOStfCI02Qq6PoT?oDc*G2pG0tVNiT2`0=2e@1?EWIft zQ8**$c~-!^&OxN*3AL~yfns`1-mau~;45p$lQk}+k;j@sH;Si4We4d%!hE7HH-BGx z#Cra`&A!4?hnwpyX3ct`MlJT=eolLu)$%Ov1xADWh3Ki%=Jq;K(0OJLuvd8qx%GJ5ajN1YenpEfgx{hBw zL|>qH_uO>B{?qW0XL%ZQrgGz>8d$cC@*c1}T0LwebaXk|FEd{f+TNGP!nU(w`5V>I zLfzTAF7PQ3oG7ww)S{x|GJb~M+UECP9{2e!G6Uym1+5>`0d>v!&^O`9Rl6k6SiJ%` zkkIfYseNp$0FM_4F8fZcb|shi%-0rU;IAqsrfN|4%?3wYzKf^+SeL_2$s%@7#{*b6 zWlH=ep4PRH>CKCC-ud;nTDvgD!MoO(jZ_iGn?{zFxk$z2?88+w$kET%$ZjX3^IW9^ z22Ni<`(ASI-$*{Pb!vMO^GZNS$SC~N{kr+WAuTG)iKXx!YyHN3K;q7m?3I2cILh}D^?teG;zuH{yuN!*4 z*HR9skf5MFj&WocRjUU3)U+6ZB-^;67H*y60TK~nmfWGM+HoV6Vmn32zyDhQ zn`w3yF&$tT20 zo5S}~r$h|1jpp{gq*J)VoG4nymEnktkeueC6p& z?8_(NWERmFKB`udwNG|SS-%ah^Tvm_RkO9dtr~!-yasbnu#t3JNEF=Zr3`^;?BmxtMOzWXoSZGEpk84qs_DYO|cN-b&LGXeP+5w(;%}5*GxcaNv)92YZ^R4F7 zirctS3aGDMU6{9W?{}x`NVX{9xxms=*9gLZCA0jxh|sQ6KQQp^n~0Hf`VQAG-^`f^ zcF5N4Rn2ZdP|tHDW#Wqjdi=dq#e9GKK{t2bUv^%)zoy^UQ-c-c<8v4u8F6lgfhrY) ztDFssSKiKFzg1V$tKjCCEn$xg(yef4bPNgZVXVRDnG+KM!O|3oo>aNr%9Y8B49eJ; z3Uv*QN(DLPdOtgm^`qxSMbQG+uN%;aJ^tbtaPrKpl=W|?;BEt2jLyHGIKEi@CnZ(6 zn=LieFaUkh(8#FBJmx%kX;|kNlG}H{suj2WUglc^$f0^`DqLcE||oldpcbADH5fI>xT}c!OsCD1rb`;BZ-yCfGlWO4FQ0(#h>dFC66lV~abq zSmQ1jP*||=>BkxntWn%BoN1-T$2=dPBxUT@{dB_ljVbs-=m9s$2WdrRf9FR?zY3&f z>*_6e`<|y(49rWQN@j=big&`L;GD0BZKHXYuFfHNr9{-oj|jWX`3rfH4g+l52Zx6z z0h}nkPYjKX&C_avF-Ey*gSbR!l>n_BnoIHkF%@Fn6a@tYp(m2Qa^hwU9Qd(vQf}hb zwh3KdBiHPNB(NmV`jOZ%Q@Z-b@p$-a0VS!LT#RF)wIYNsJ2kKZ#lmtS{q@hmn*9Q? zpV_Df;< z$In-u{{`;F?gKqyx6#AHJ@|%mI}SqY5cmOk%8m~*1s-3scLBs&nLP}X3IYDi29+BB0rw@vP-rYbMp|0jY5(W* z8Cxfg`#GB0dFl*b}7AWe;IJj_xJ8>r_=a;WIcD$Uki9;5fPq1aB;`ZVkaLO?jIL@N%1-m|IdRJ z1o6?+J=n&Vzn`8kY7-T!UReEj44e}k3z=~iHBDn><3#18mlT#17yvs!#J{Yh zW5EELqWj+0cVYMkj7W2=7JvU|c*`b}6Y{V8-X+%8=fAcJcy%F|+yX>B`R_jfLG-SA zV(3LFm$1opb`D8GAi}23(JQnDmX?-oy_^*JoHqrds)Q%#S|cih#dRquW~>h`dj~bh zjN)kW*~6}rPCcnqy=PE)!t!b1L?FmMj0^DN8Hf$tpS4P;pTGpWhkr5Zhlw0D{=-Ce zN>m+%KynfU0&%T#DgXL4JD!ALqJh0Sc)&;m^@YlShbHfCdi&_$h2lE2SgpkG?jQZK zQIu z8D%NBw~;7A;VqRQ+1L9Wd~rfo`ZLMfnwV8Sfy}>FO3dv_w9k0H>(G8Q++lH`#cBNM zw46$fGnSW|y5%6YbdAq$uU6N8ez`1J(Z#c~vvZ&hL^;hKpP(3qSie*^oc^-bc>)9QKJkyE`GLt#_#oY&6ySVPS7zG2nC+pwd)~)#&&y{%f z>QGNG4u*byzrlSo$1`L$VwP=xQL8|XsO=H?Fu}-MM z0g*IZELgpevbzFT!0q-Li>{N;m^M6pG*V&;vFl2-9UqO|9*Ys~uH=t%mL|V;Sw=MM zcXrh+>{YB!k#y|$_v%a$0X{}hvjl%Hhxu0y8STe$($}WjVkVYknI}jw7Moa@?F>Q0 zt^=%MT4C>#C~TV6pKa9>(?|(TR&sNlt?Nn@G9~U9t2Vs1w%kUX4qczrgsi(>5K7C4 zh%h|7<%VgRAMd*^mr#VFwJhNr?Y4;#h4b|3U@ibNaRwOer>?^eR(d+$3L?>n>(37d zSzuZ<>+q$Dhv7CjjWp~wyD+V-4Yt^Xz-Hf!u*r>st&-K?+Fu?WbqX(XCr$ z>QwfVZQR!4xcRhQb$)XRBT~OIAq5njgx-1;L66DR=MHK=!5QD6uNdsx7_x8Y?=>XI zMsDp&ULE-$?mPqt-X*3gGbsr$vWsh~v=r@4Zz{3K;e8i196}mK>6G%>^83GE6~g_8 zka<eno zw!Z8B`k=!}?O)#=cU@ZLm-pUfen0=qn>wDo(EpDcOB+Uio-9CU?`+1hd5$*%!K4#b ziGW415(n+3rFcMxC2Bk)6f2$OxLvJk38!y1c?SO+{fiE}{e}NmrFK03S1orw?U%Q# z9C_eA+rspBObiy-Q7@4ang_D2DV2^Gc`_c=Rg_R%9<&(I9q1Oq+py!B-so~~PRq(- zsepdRlPiA@&AEy*psL$c>A>5}&(YAXA*6Yy5cer0rN%W8;!6NW7#4dSh-3)psnaj6 zPW-zI998a{S=}k3^_`>TDuM!Si8oBlrrEUjTGa$Jx(6rHWBZX&J>!cceLZj`VL;N- zkB}yekaO{cpxs62_wR-O(-OJQEu%-dDY&|GbZausYkL)U{)RFN3kLx0bs(u3kiB}w z^or>fmw{UUX01|vjurYE{Ii1xKkc76QiLkF!N@+W1E!62LKT_1KbLk_g-#+fQ{w-@ zjVIkjcEuG>*46>Q@D;fn!=yYFZMt9I_9?sevnLWov~Sshf|?k6p_cWM%zOAnEvti- z_P1j$?nH6Wu=xDJVwz@Y(#utiFTP5$f`4lZQp{pzTl^XZsF1VYJfRzsb(?)LTKbf|57A^u4-bh?>MZ z3WH^8;o?sH0LE1D`#>k4(GAPwIetrZFFe^!Q(zX)NNGM zwTMJF&`@q5y}Jdcmi|ZJ6!AYmHDjx#pZ{EK3fY2@20sCt8>o1>y15c1w>2NuaSv^@ zk5lTH{`^dM+X4KDiVCDOB=nu0m z^jgK6>K7%xND?yBm8rJa`dK~yK)F6%6IFy1sg}L`r*@JO!v-5He&IIe5nWZR(Q+mZhgIy|6 zOXGg|ohUaZ?wWtw5ft+MIp8g8nEZzQNQqS(U=ePfFW|)hf$Kz5TR*Zr{kmey3B-3?FY zQxm3LWUIBo-RZJ5nWpqvdK&t-a~0@9;o?2tr*~c4U6;{S{@;yt+}vG9W@MbO9}Uq< zqeY%2#Be`gwtW;Buq;~zjFV(6x9yD(cQi{+TsEVbxIwHU|zs=*Q@x!1WF0TALfj(4LRoXQI=j7x70=dQofdhrcZ6!23Mq3* z1zA3zfRW)$!fxw%#lzi6<~@HW(xC#~n8r9->a89|A;{hFH_R(!D=y6SbENlt;l?S+(U2K1_9%Z72=*77a~Lik9!}vt9Ofgnf8a}IaGn>4_H#*n z-bSQ*iXGZ~u;Q_YioJG90?h++rny`O;Wov9j_!_%NVdbw4*kbUP>E@*DG)ruX=azS zFUJRLZIZtN6m{wzijR-C?b8h&Y|yFzbi{iMMw~k&hS0o!@AMd&0RX4xq6S@JN()U) zV_EmNRlze=ZK^!LolE6v>KZ628Z;DV6Zv1=O2&s}SHK@@fpb*q=aOZdj1qgSlL2g$ zjhP!M_1A?kRrkR+(rcvkCq7tKme6l`!uc;;^LQEA?ssn|w8gb)Lq(OAmnj0)NSaqY ztfQYF_5C}%hny?&_8gLCrP43y+qr%P5e*vC*Ln{D;^D6DKXLwv9~Hco7}cu~wCv@- zg`Pk8fgV`T@Q>C0Zv?{syKnrL(wX4+basOjeb9A;s3!TTRfLJS?zK5w@ECw==n zRx>ZaxAO>|BrTL77mlSAHJaSUx4~w?q0!k@77n8C(#CGv@bQ2sT|39SQh<{ zi@*Mlj8OYerp>fx48_OZFu4g^e>(m_S4Hy>rwM|L1!zDDwBM&PJHcWv}m7lm%mOLDLEEIH~qOl*r#C>NcciH$8B^TO`feKd22V zC2-iC2j02=Fkbo*wEAy1XYK3^qm4_=baMdoFIKt#c2FM+B6ioP(W=4m(MsdA+kZVk zg@6^a?SL(PW*STL|NC@2>)*7Iush?Ffy~#It1%nFkLQ|$ZTqv1Z#Vli6(mX=db#;O zQ_e)wPWMwJ+>!zQJ8#3w9VfqDP&pWtUO}MUWE4R#r=gFWLT-KJfV8cgr3*qWJXxw}Rz=-}wKY8~FErfLDg8K>}DJU-kG3;QWuHL`91_+ zLX=LbEWbnW+$aUH5(9%P25ye=6&sayuQi`=+1wKep}q*3`Je*;mTvXG^56KlJ3$FV z8BrNlQqL)c1i)8@uJxoy==dXcOdA~UXv<9YJ*K}q{Gr_6iR;K`Rq})j#bOnkk?#?g z*Ao33eJLRO=h@G^j4}&-7Tz5RKyWyBt(Y-&X5cDc7JR9u?NQz8J8J-tD`X|wBAC#k zqFw2u=rzzM&?dFN{Jau``*`08UuvVhXKVM?e}*73TPk+|Mp?7Ps+?lIAVaqnM(%Gj zjYeY+HiZ2BH&#om^mUi6`?Lo8;Zl;+P9yQd#gUx3MhoM)f#961$A-d98waAH6Ag!v zo>}_0CVjR%dJd-WVCfH^-g7aECQE-*sZY0RfdP@MLI(6V?q{0)ThKaEWo&9{3LgE) zPP@^$eSA5BNF*E3XigK*O9Hp@DDoZbk2u9 zHJIJ;kOiP)L zny|!%3mQa&t-SvJ`c{XxyhwNWzm_jxx@ZwD&!Qu~))r;088uLz}{d z5OeQ)zTI2X+q0A`1_G#+A*3AC;eKcdxyr>#LsXT^7>ygc%zaCFW9VWg>6Y5nOAR)Y z1nJ8d85yO!at6+h>sX`#Fe=G)@TD=o+e{n*nw?z)!)OV&eo^Y?mam|CH%ImElk-0htF68@TOh~T4DfFa#mmyeK|3{F1k$Fnp#H z(9z61o?IN_xp)DqX1WcxRuM8Smv)QchP)+4BTJIS%AJQhy%+lU11a2T5I7NBiVc|i z8X1~MYJ7^9RH$K;A@zplnbvQb2V(=L+vetw=~hB)c?}e8x<#R>H5!CG7csxJr5-D< z2N}${A&3(|uwPzup(q8x(P%NdrDnaSyt#1eVPyF@wcFZ@A{GjjpKyz5_MBuR_1?g;a}?&K_Y+7D22Q z8%Bo)4U@+zka>PJ6CavibHxGtUAJufy=DZR`abENSP6U>unad&5qC=QY7Ba0#kLld zC~R8ZQ+Fyi#}*si4MLR)d7h=s4W9j<(!D)Rv(-(hvD&SFd%NA{A~jE>oYu*1)hd57 zHW0MC=cT8s8=If;6cAdw{X9M~(H_=#toVGg(%K@@F!6(0qvF*A9IDrXsG#V*v9>*c zYK(gw#XdiylL0|l%haQZHfve0>Il6}Gp#sF2uqjolhrh9D@x7MxEE?;0;+T3G#B^` zQbB)NCco0R9n1Lpk7${V{BHnZIO4Y%rv<4x=2NH;~(xV36iQXX`@9wUNOK<+_3 zOFY7Ow_BuKHNvYc2MU8J8~6sbRxLKeZ}G46t*k^s8}{+z>q#5}ZLW=r@SubICSX(W zrbh9Ii&raaW1{u`9)pTzoe#VClXyU3fr;r1o!$*e{6hq98)_uo=$(0cPB4b`#)l+8 zvXYy&fPerPP~p(qJ-`zg2Y_NKi#@4LelIO+-9u<_y~o(t7Dm~-W~0^=3s@WuMB)+8 z4;*%e3hOqLl(3F(Wq@3PGb^1aS`;*?dY;F`!NxNrKt_DP0AFl&=lEL&NFqH!Dl>3d z+cju}a{l&{2DeF)-(kEMe?iEM2RMgJHJ=eb9Nymwp}@|l#KLO!>1>2gTUU}u zv23HW<(*oOY2E}IIq!w{(GWN8^6_tVVZ#1?l4 z?Lnhgc_Dht0Bwgau zoW181QbD(mj>JR3fAjXL?v!Cr(Iwb^X#IAnDFTl72aQ0CjrKFFw@;&qnKT#Y0dB4+ zNmCT7?drFyF^}3P5I--)&5pqe+oiy%47Oc=R}%^L12srF;7_zA z-7q)UhKC^V2Twr7h5Ed%-mbk%$%}CPnE0e52jYI%`kt7M%f|SvY*qX2f>?<&9u+Gg zTeoPno0g{s0Cr){SE1wL{1tT27 z*sq_FavcB|Taen)Lgr8dfi;Rw{pDm;jc%YG?O0}Wj`Yiq(gIgHqGcf%Uk&gEZuuFY z<3)>?zLk-P8k6i5py%z3Yx-8zD>6|b^9f(WvFd_G!k8r)pX~~&^#LMs{lKg-$Z3{v z0cys2wRcxf&y0*}XJKJ6EqlDJ+Dmi6XB6b$^44d_(r=#!wZERP5_oV>zsj(PFwX#V zY&gZO4>fUh3yLVD*0e_T4De`x0ra%j)UZCSKsiH(in^04;#i3k{6U0!*Xqo-^N>G!HqVM`VeMM+|zeeeT99>ZPy!kuJ zane{?S|_R}wdRIdbgNd1Eioi44ltOn)ys<9GcmehT{hvr>^EAb>b0S?pCb-Jg%raA z-S$SEg+!ayN4!kSpXjEDJ10Wqh>0i2?0Gi35K)IOfpz45-28_yr8tQ1I1g~ZKO7PV zsF>42Mi}~j!A?{<_B&^LF>*+j1}V6$EZzO)kIU0ePs1E+w$T@@EY`z7w24fiZYpWg z>H0HgL-@A-PX=oB?&+haBPFJBfW`8`-r@2&bQP$2CneDUc>thn6*2J|L;Cw2GW#6XX_^j0nviX6boJ7EOWBn~PBTAsux6@ES*sW# z16eJ(OQFUmB(Ml6=L=&cWl?#{aJ^uamZApPsaL=8pe3)R2lAd`?bZNSI%D(No#=oB z`df71-!JOt+wW9%0Ku-ve6KHf@^g@ z%*BBh`Qbgl2?e*=MB6eI!oNN*b~5D@FmHG+DhjMNucPX&INX4rR`X#BIX3S zdZ_~1lPF@H2yhzDaq1V{z$4~QwAC+F>iaH@N&wd<-Z>Q(6pYTux?pOMe{vrf%!VTT zFbH&oYhkDoYJGi2rHelKSc88mQ3fzRu6mISd2$+U2i+Cb(-;4&LAz||&bML$c zJ}S@eZ7{I9cq7WP)pE14uFlTRE)LaUF4$cZ+leYMt&q*lwHpgYhVYAsSi@@ldyShC zT;(X}soemjkkGFl67cJ{v4q_qW1vf0qrCrd~$X*3M zEutkwopb>zI@g1etec3K6%@7Enekp3P*Ct46T8-CWYYERiUGl$R?JTWd`@p&(VuJJp-9N8uF29YZ z%1m#O^l3a-QV2ay_g}}cuYis>9?fE*{b`j>b;@AdFH?1FQg#MW4rXP}{`TGJ@x5|O zXQ;0S6km(ZIm z?{wGhjNdnsj>F25j6}*unwX;(_{MTkTx{E|8Z`gaJ;9`Sy?(jO4{W=VX1d+%V~lb< zaTuHbRFCekTCe5??FJg>&^I>J0tc5u`}*h~#`OBfE$cm{emHE+TzAERNUojT81Y$i z1@36LadOj4mdIR-L%1>9F4Zk0NkRJj}%!8~=V91io!YTOyk z(bBw-dT))mydFI(t8^AYBik=~b;+XJ*arE>Pxn1AJ*k$&jL-v+QHe?VBQ;2TG-rLD z?sO}^kPv1@0@k$dDJ*+Xk`~aKRG~ps7%VZ3q=hRlO>?(zm1TPll8ud57WVGkav90# zyh`$NlQ*(+9eSBGP(%3+=*VGnW4$qGsdKXz z`#;K$5-k1|Mlh?IYksCgQ&pZQ(z%qVnhACaBvzMM6ra zN`+*OWJ>OgiMVyU1};GW{;Q1`FEUbC&@8byWH)JP02E_jP|}&NBP$+1n^tKbZWren<7)4W;{DSy&8 zBz*jIprrou#wP>Mz9i=%>Ty?`#%rB+mK1IVZ*qMAnASeD zqL*^A?CGVPUHiYQ`p?X4aa1O4@C}QbN>UbqhOvVH8tqQ*5}~SE1#j1NCo6~v8ke@y zQd2}LJX+09jDo2k$pLd-9&zH>pEs;Om-RKxp z%+P`Ox`Jn7q%0uj`$5XF=UhTVeuz9p(<)E9Xl}`ZQIBe%C7g9MUSxk|aIwsfVo*}j zE=6f-pq&`yVGfe$!H8SC1&zdy)$P5+oxh@M7!J90{n%@=27yUPA9e>3A0H0@w#q9B zqkA^D5W9qoF*XOr1 zG7}2l7-{fCjyi|NEL&;?wVhlWbG?6Szv0qul(JWQ2Lk};y4|6)zUSh0ekS<&*MAnM z3zYw-8&*0c4lM5mD6Qcq3V^&4Mc`KJE|cmEyL zRNF<5qFAwlN>gbnAkuqpDk1{Xdkwu8A#@0!2q;y02kD*Adl8Y|Yk&|Uy@Y_Y1QJ4S zc+2;nG!5&ZVOi(Ddf-wU+!E{NJenn`p8N0;@45?S(F<={{{~T4FWqYAMB6 z=_R!|bUZ@t7A|(nfsj1<|(n7fEqr5#^8zoTi z+H0Q+m3(LxB&<$1Cgft)cl>zj{dV6!VZQjcC47Ce(~O-yk1qtjG~9j$E#-s_5RWxb z!522>{d!2=>U!xWaOq~;C2ec!06uLMsm;%x5>?Z^K<@Z4q+3u$_jgF6T$6# zi^M~A=qN7tkD_^oiPQ05E9LasGPaPvdjYU*kiEul2?y(WtRsPVL67d18f%C+vbk=6 zq*ZUN)%k#Jo#a@fo!@r)S#`m%V)eA5x|WfD*mS7^ypnL;=g3M6Jp1LpT_+_Tf*(1v zvt!-fAbIY5-X5dgqpWPBYZII%{I!3c4!fJe=;g8U!}Qgq!s@^49p7Fb(Kk3r?iE#! zm-&Ftvyg<~IzmwEE>O7ROtD*}#2%T*aYarGvwet^VJbmO zIqqXDhf>$WxqKyjwriF3>TMD+N7Uw1{qed@_Rf|=Y0;`qEonY@FNJ*N^rl&MddamP zG~Pc{3EIHtJi$^`wa>0!_XpAcM3vE>S&koi4Mxtj`uG8H=>&_&@Dfi1VG$zs8zI0+ zXXXMRVI-3cHUxx8XariW=22w~yFpG{`j4pazo;JYAOAd>HvH4yt*d88u+wOlB)oVk*HIel)ti67{LM!H|nm{84Q$!@rvuo}6BMRzP z)B)i1btHDfDuxka;HJAkb7HF`g(%sqMHt!4)#$Ravhsqqa_7CUnftv2NO68zJn}^y zWBDx_G|^_)%x^u+ zxN0l#ryMpP1aY^S$u-g91SDUnrm{G!HUmON=#^vAypDRRv3{+5yR9c)sB)_FFf>tP z5zC%d{VWQ0s*%xnRO^c>V9vL~)3JcH6Li(rRwCJUhxA9@>T-3imy5Fa?6gC@mnqoT z_J?p>@NGU}6m`hjmsrv_G4uPe{wpxZ)AbEtRIiect71-mL{*cio27DcdJkSyoC_x4 zor5@(EVM(3R4I$1=6N`v0?L8ix7F2RN_FaZfdwN&NmSkI3ndxz_8F$w-Sxe8N#C_m z-{Zk7&F;U0?9ni6dL*yO0pWqe6%X%X>il|ap&p=hkeKDngOGf)5!#6g=fF~fHeSAk z}FNB&QtekRC^IBBgcVgdV?B zaZA#YAiT~H^nIP}Aom>bWBZr`d>zJPNaw8+TZzYdj`ye~YCR zJsX+3J@M6~v&QxaU+n>3RMkA8?}7I*CMUo3-VHibx%l|K3OV^5`@&DAPBU(0QreKI zDK|(Js`h&mD$=fV;rSP%ysOtFu3!K1{Mz-+zTK!^>%q4V`Q$#1AiR7t#L#KjR=Ced zvclUo;L}elaekAKsl7Rck-4F+3DZRQ-?{w8Eij16Q+O&OkTkfs>MV`v*xB3Sc7n;k>0CF~|m8Ykdyna>U zf3DM8!>qU)?n0Q8sht|Bo_7txdSUj)Tk7jE;=+3#9OcKCF<&I-Lw>vfC7mom*gZWo zLzW|(-S0CSdSARM6zG=OXZqco$K>$PT9eTdCCGQS&vSo1rM+~9>qp`Qm|7WAVXhYP zR397E6~ujln(#F5s2K*>Gap~pX*io5*dzH>wZqrYcrW_?aGco40c8VQ zzWmvNSLSM$qvh`Ak}6nWhMZK5e0xQx9+e5(m3vG_54*{ZRAyu#0-5ujhiS?7xV?1H z$?Q*;FkSC9FRAP7b#4hBge)A;ARL-R>qZTHJ*UX1?%r90o3@AaT_TMomb|d=BVR@x z0QsgpayDs6XVV#T-`lp%ZTOPsiBGhoc>GKoPs>?7+JSOgOx>zy`Yw=tef})XZK9}w z8dio4&vT?(`pWH#i(OypUpdl&2IOt9F%`E=B_ZqTDtGdyi|0f z@H>0Y_!MfCh1~Uk&o3RdXZR)iUApSA;oC0ce)@o4P_WXo18uL)Nxg4hz>^cfK{y^|DGZt<6Mh%sf;A-73rq5# z*fHMwK+nQ5tN6MRZvmyf zS{iG3XuvY3_ja#NVp0pTgxr;J)r%W4dz zkGD%XRz^=4v8G;n1*os>WYxJOzGb`hW^h|tPl-3M$D+nZ*=GPac-OlVc*}SkS)fDM z9|xAF9%HXj6!D8o7dysY{K%ELn|^OLOFTFuMn+wop~Mnw2A%T_&!EdCRemhU@h}X` zybg1FN}7(l7~vLC7U|Y~ki%x?lM7_$pN;wqQT_(oP*PVX^BSnHu$iSyNlAG_m-gI6 z>q)ZNTqYut-~8oMqLTG;Gej}%{h^(qeZOgANsv7yNH+Ikg#$9u zJxXd^WNqWzOOeq=VL2InvMwAq7YwIN+YV{TMkZxBFB*?oDJ1WGgV0L0{}1<7C~vr{ zJhG-)-iBXO&+t3+vxA1$16I4CXZ?Kz=@XXWEL4Uj9HvIi-VZz$Tr5f?mzBk0&to>h zOAa`jf~VNPHdD+Zd5zB+8VUob^XDY3OkHj)NVcKCR$E8YPu5^vLE`U56z$mWWPSm`U;BqWC!Vhdz_so`pjp3+1Jwc@OJGNYcD_`HEZ;)ajt{nWQ~dCU zEAQ3YOpN>=6v|uPYv<#jMP9B`dD^fyuguwrp!JSRYj#}Ls;;<2AMoA=ADE1sT)zE6 zpoq!#WlMjj_TFzj1fn30zm^FS?`#?&AmA*%MOMd?pMZL~xp~z*9<2wQ#fiu6b1&O) zFxz0Sg99(mvoM&;8Cd~IC8gyob`HHQ2TFEXPrg4y7v65lKatP|b)1*Hv}A2-zZ7fL zwo*{9=eN-@1&ilV52+K)FDm+6zl;AAQ?@$jXlVM9^k98bld|=+<@i@oGP~z4B%V0JsJanXR&qV`79*ozQsLPP^3oH-$KGB7 zK+D1Pf%P>N?I~l1eS1eAA6C`AyFZR19($Sdr>=?k*Y=vFSFd?%(`*`e9MT~A8vQVt z-AkLx*9qZ%`d4>)rVezir7ewbM>tw_J<@vF5mmmf<1{f)<-Gmr;`Sorqsp(`DM)uKk^qp+$F8Y`IJ!PL4Q zInSkSPR=#Nh*U)zodl{zaM@v@rd)<_@~nP&Ep~mPfUvNe50YEkpKn`#0l6F;S3M+xKiVZ(9oG~STB(25a-p!O@H~Eg^~!i^QE#;R&fo7!rljD2l8IGy z9-yqovEa6Xi%R!6rPa_;x$t=7&W6ZzEKtH(1vpTG*+_-)`EAo}DD z!D5;*ZElxk#bfx}+=pdd~jl z?VAiwc&`SOr3$Ik!TmbqO*-7iF(f~>Z65RaJY!4XtgD;SfT-wt-3jYTO=`IOoq>Uc z)xN!9wcd1T`T9*KqZbZ6DDeaiz0sm&WKpSjFWZEVW9{;7gai0$y&I6OOD5>m>#lp0 zJ1yWMDYdNja5+Cd8cjnmQ& zK2EyOu`)#<&HEBQG#Ls`KdEdU3yWS0_@LNa$X-?n^%xm${eh0^TCrht_9RcGBCmPS zT%4UUl9@bF|VGmP;+7G$Szk zZ$s8ZUyYZ+^r&C^)vi3!o6oF0v{ zei!QPvDA0+i98ZCq=hyWUoB=W=J83s7Dn17H5Z0Ep)eda!#;#|<#th{)b(njzHB_Y z$UuwVZIeiUpf5XE*-*;O-Zn&!g4X8sV%`VA*=B0O4oz6n8{-(N%vzE0b7)7&=W;Jt zO!l%ae>_=q6s$S^_R`FdK_9aHb@!LXhnztBw#+4r0KUB|Bb`YJhx*vbs$e%$oA-&p znqMp0oW1*rauZAUGqMUV%gOAcUHxRWzk4)U`{@&~=!@=excN%&jU3L+Vx`q*8~mZA zdB(4D_=`!;^46TeJAQ7y5H3sHd=`*6B)ERA-UMfR)hg=S2v>kre(Okngk2xBAySi# zs=o2Yfl0D%=R0Scv+Qv=Wi4HiVUQS-(#s>{G#v%D0BjmP$uZ?gmXLd^WO9%n0ZY=w zKFP`1JGAHIp3!cCIJT#3JtT=kG6*x$NVNwDn(c7b8U8fV-9y;Az0O$<)6i}`XzMgP zi_W7@3@EWXz;ZB&MKdQZK(m%lJAL2R-6TR&#?5f7RTflc6|Ew=y8$SnxoxX=e6ED; zj^C-mWknVTPE9*_qTNJVQucjHXP`MZCCBili*)wY3A$abKe+6lEAZ**L&QV))2JewoR=0rqQ=1aei|=32mRwYL z_45AHu+Ic0u2x0%z@yKaB%c0>|1xKrmxUlSk)qxwG7!5BAApy?+M!>Y;0PN0!xed| z>-(Av4Q>2o*6Y@q_%z~X@r^t6%S*JQ-kN9uxI@-qH|X-~%U`&;+hp|d%i|Xc!DZ_` z^;9CypeP)_*@K)BDH0D-A(CwlD_i-1*f}y9*@BVe{4z6;O{$P3faAx z(`35VBo-B~hqO!6in8V<{2TZ4m-naZR_Bu|Kd ze#dK{4v>XSqEJA@Je0=hfqojp!FU*tm&bNVg@1{!2alc9@#ysjM|9^DYofaO;)4(o+)wYAPoa?Hwaq)|6cZonk3}zk}D$nXs^-F<>k6VS>oo zsQBFR-TWLW_=d=ujzv(sxZi?8c!TjHf@$8Nq5TN>M1NICTO1@V*Qdl-?!><{} z_+tN!=G{vdD13@_PrG<8en0Jlk2Y#{(k_t-*SU-QOlE%~%SG{DSVloSPzKG&Kxv0# zk^MvM+I4tH{I0L>DNPJykQ8pV7P5Qc4*9+BAJv(8ya$Uu%Dyra)ECAt+1XR_(m%tx zt(wvU{6kj8sR?p*#(^(cybPMh`V5vI;Cs-tlo;+xsW@wPdJL-R|mKA^El?f}l-(N9=nz>H+g^TM(@?T>NBJ^@)Z$ z4cjXGyG8DYRQth3rjcJp-!C;=4=GSZO?Y&zvA4-yI@hm+=@=K&U)%yz{;M2t)9MPc zN0JQr>dvH5u_Yz_SHB*hm#tF}!-NPO-7}r(p;v$DJJR2?sH`r>#vXsIKa6w_Sra7g ze&#BFBUS1e6%ECw5+CSp*QhYoY?*B4)TDWCOLSiw>1I$xvh+!$&cUtC4JtKw7IO6x z1JeK3(1Vwz+jxU@>iN^#l(*e(+Z);YxGlG)lB!e`om_Hq2ARDRqJBf0a{2k{d+9-t zSz{pI4#*oZ;~vD2(Kr0{%2ye0dK~@d-)VYHg$Ya#!P;HvEGHNicmczhKNq2@p<~U# z9T}$ll+CJPne2*fvE4KFnF|4_snm^0NRGYyPYArbH7Ibj@34go_r zXVATCx9vE2;fC`lZDVb%(kPsXNJT0rCkSO5W*E=q+X`HG@bk_~chY-Jn6?W^S z+CQ|mlV{5?evB38Z3^MTECcZt6!JuY%^i;IhiNNHU1epCMysb$71?GU8{0VHl(nYn zH67&@)r$O&f!Gvn@7v1PIyWq^R!P0Du=JCnDcz{3-16f05@HHO+zk(|eX7HkJtA_( z*;CboJjLF}kllaE2+==$_qvJu&GwuahNcW_svr5#v#(|<^z=RrQ%J<=VZzM@N74TY@H(Ce2}YQopB;jR0%z!GD3b54D6$ zZgb&(u@~KTcP1jqHa`RZ0f1gD{2c;zj3uspU^ZOJb%Fc-Ed&1vz-DZcdHrseI(Rv< zU2?|O-yrjHc>~I_xoh&mi}yd!Hk{VQq8f5%B+#yMpq0PH&}x$uO!2L6%aC7S$jZA} zP5&x?)z&u#zPwiHJ|-nNZ6mb*G`7~|fw-0NP^5GM-wHgjkVtQuV8_>aX?kb}vaO$bJuxXl zY0pyocW$$xl7d{07VY8b6V>(JXa?1~n$VBS~U?{S+$x3FG!ozQhf)bgZ$WW9deCWUDg zC7%|3ahAEASL)uAd*6k3vIn)WBQ0JRuhy@5q@_?=w_ zUzn8s;!k@Y@PcriA%THb!El!1|vE@zYR7%A}G=aNy*aQ?JqtC%j|;-j4W37 zgH{~$db0X&Tnv1<5t}40Z|m>ti<_U5>U!0S-=RWt7U zpF%%dy%~OXF)*b)#%HM5!X4 zDGoepg+C`~*>@{K71aFvlfcc%R5>~7ZYkkF?^wf?-I$QC=dE;3ZUVt>W0$J zs*dyI^E&LfwUe@&!0%~m?_MJNt+nK$nrlywb99&Y((nEcpVz83ZAspR9JO|bvq zcdzPav-)q%U1>UHBblBFlLxrjY5nS~Z>|2KtA}-*d#P4+Z!`9;tg$DNkYaNTVdrL& z^`E<0+-~cTe8m(*1{J!>C3O=Dv8_ec#W_m#mJi9iVv@Z_{-Bq3*Jy}<4$okMw0eB?#8r4FbQkhPko^i371eNq$wd?A4ss{B9j@(Y{zSiMMjfUUmm{ma z(=)~kNf+qxW{n!jz-Fv$zY=d9GLIbk28D-B0U_$@x(ag@jJ&VWIZag$W4q3_pt1uq zsHa93D7y`WLl?v=6tag;)EXf8@TdvY2uge@k~r8!hjPUvm~wQ5&Wj z8Fu7*eJ-xFoeJQ+uHu7q=b#>gU3RxBfZH8*S0Y&nT#mMk5c^`jtGzUn{v`i-WxQu( zX`Oyrt;K>XB4P-?lei;1v(~@Zq%u|TcQ3$`B^_3C%HOS9Yu{u0XKiA}QZZuZTc`CC zK09H8a4JLA3QP@Vq9vHaZG5hL$DX+`pv8YNJ_rn6ve`2wn8bZ&Uxa2Ck*)1E)u3)m z%Y#3udMXlHXTJiEg2OF2(F zMO$ue`<45_5i}FoxU=?!Z{tA+`rE+CTJfU|iFvOPv&&b5?oiN1pISiy=`e*U%9h$ z<%NsZ6T+CLQCt1C3I6q=cdbYq_!4t0?0p7++uYUl$$#nxhdQb?@ z%M$p2-;yY>`;Mm5DDb+RL<)kb&s z6x~ZHJ6O5ETNl|tDJv06>u}Z+CUT%$uw?s=$xK6v_w|w8m?RDbnHBc1s$XMtVOM`# z{X6lPIb0niWtoc~@uD(RG{`g;m*AM3)QD{dQsaGgDNL8`slJ|0XZ6ePwBa6hXSzRS zj+96*+z@6rT4-o&R8?2+d|w43UvaYPsygxA?+`1C1T@-TACWjB3cO0nP_BGWQqnI; zf}^3SNljC;D+AW7Q+Ld4GlcMb%hj1X7^^ImSW)q8ejZj-D*R?4->n5TK4A}=uLP^(5B+!5)YXRw44&-n z-N4xiGHu9?F3bV8r8)m@)x5mv48H-DiVX;OG(RsqaxL-I0;*(`Ojh(^9XEa&2l|sLPWP_g^ka z^M>h|j%QaKdydb{^k(g|y020G>I#GFYv0)p$1j{-u!2iOwlR$VBKg(*b8YM6HeR^N z-sCkV6(%+uXV)<*=5ZqnAO=Iq@U_gWs>IDOK;CZAf-Mf z#r|2l6gLx6ujPIw68FTHu_r-M+CYMwdt+w>6G&Jdrn~x0 z!J|cPCkpB#_;~Zn!I|F;X{86Zz72S^b~Vx09ld+K#Gde+0qy5N$*Ih2-l;PyXxZ2_J1RCbBI-XmB%+-;8KAy-fHr(e%&&a?$?B?BQF= zyZ_ddeBKM@ISsVNGf;4RD`qDHv( z8=rY^(F=F~`;blMKDx}=BJ`!Kq`rD}9ZBxU+P$&)!o{7ws+;tC=ZccF;U(aL{^&$e z=(RgjQlA3eNS%HF^-6l(X?r0_WUtfmxv4mqZdfTYE~D?sINkpmW|!Evu<$Wl?|m3p zQ(qc%Nvee}Q2_3+`F`-#3cB0ST^tv+3pEAUj7dtKLLd@x(ZVU`=c4>y=Q7(%WE0U) zRkXI}rleOUz#_kZpfe%3$v{I-_Fz}+ld5wHCdi}V1ooBPl$}D0I5_zU0H|ncK_^%~ zU)mtZbENb2n+o=#r%Tg`)B4mIO{}f5_wN0(9_w2i?KgKgynegtLCsOKF=R*S^{fAR z{5w#;gf!6B40@)wPkBdZV2ChW)aPh z_tNs8&x%;yPM?n&biQ;g>}J=B#rL71=ZbC|7Cs~u4oB{7J{EKqLGcpl`KK2Y+twM+ z6CVN4D*T0S0oOkpprQ^gB%PdUpB~Ru(G4j7r*tW#@_PWM0nQIy&6o7zlnW$#=j?1V zX1ULQkCN)8j=?ommS}OeF*b>~yni-vO!4>my9_p(V3>a7%3M&C$`tun=FQZx_LDwCVdpP z`H#S*;rrL>_S^#BA=72Peer8n+j|eX)86x9(y51^<(Zh2hn4qlA0+?X5PNx+e}siB znxKe`2S%VXEnmM5R1W&ly=}3$b^X%v-u1(7SZDg&mL6)Clfh%`sie=oY-*3;$zWqH zse%c9hnI5Lpubm6#PdY=8J9$FsfV9wN4TcJ*$m@7KC*W}p^EyiaZwqVY?<=NPtH31 zdpx%!ZHVrEUOc{nH9q8DT)HTrS-Z_PN1%*ezI%rT&1jP)Br`XrC7P%Ozrkz|h##?m zL^0Jl-LmB3yM1&!jy#SV3p-)YOopyWDALe%$t6ZSdBQ^zTM*rpA{tu1yM`6o&V(l{ zu3LR^Q@i?@r{lhaBENuuOX2CAE7Tr)Lu^tp?Y2&-J;cnI{X`F^i^fCqZY|ze*;}Fl zLCa4`nHZnmkL`Np;Ko5LPZHDoj)5;T308FaPmMeI_nP-g(%sCvcCcZ?nxX;cY`zbT z+gS&{NcZe2;TtxL1cg>{tU};1$?gaG8rwy64?4FUEKdn~r=juUPpYMXO-KYYNQbvb zI<^e=ed%SAFV;r9$~dLd>|-7VI7F5>H$3uxb`KQ}VVB5^7co{`J!0Pmnnr%E$rC_F zeMg+^n=9foFX`K`=_HI_fZj0jxO!EnNr*L zBIphMj`Y%3$wA*eJIa>kVwh)0#Q*Aw`pq@oQ2ncP5&7VP$r%x0c`LWDw+$nKW1!eF znL(ce1)YNl?|xJq84Yc3fGTM3_Wt81JZTE_X@dvatrmR2eG|Qr^S%lG)uAk9 z?}VCSMfsCkDD-vsgc8HYKyvr*D-%eA97Fbb@6hP|^5C`a=as=5f)r{s7D8B$L{$Lf zxp9LO%k1Zm%pdPAFvkthiG)~j`m_#Vd0o^g)>mWNEAKe@bEyS0-ld`Vlo~>9 z#wEF6`50(jMNbCK3}_xp&(D9lpWtLNQN=-+MYOo^`<2pHyglYMVw~EN5<$6xmx<(W zDD)ZDd~Q9-^Tg_ZdUJ!>?ae(pOHzU`x+s&1u5hqXZRUxfWH95Riy&yI?6NL$C#W>R zeiqJ*UKPm9N|d*(Jo33IueV(ys$&Mz_WFvu*m5}h#P?*L zW~=z2y#ez7Xarb=Za@YHM#4xlQ~ExjwFoxVY6-;ZYm<>bc=N`dTNM}hOlP9%8#>Oe z$G9qqNaxRjeF=ci(}LxktlhO*osr=B_E|kdCoD+_Jl}s)yB$`njLL0$+j#Ic+>*2# zz>{L50C(Vf`aJW3GXeVc`uG6*6Z&j=HH}Tpyp~%ksXZVuhsSUw{TWlh!l^G^2Hv!J zo%}zsQmX;wdhvH$dCWabO{Gmmv}KEEqG1MkhPq+HHsSTpOs_s;D>Xl34l4s!KfOf| zWCSpcDO;U}P+(JUmXPj%E4taaBwuM-2oSZsSRje2lxqK=OrL5|@TqZj9IT~RKM~9{ zizFr}X1}l}mH{cD-h%AIm%ep%1?6rZYxNvGxI@ejRy%DEX|tI+Ta<>Y8hKX?0j)B{ zdmkQPXEnV_*q@bVI0f5(g7TZ5f4kXr zqYD|+$Zkxxpm!Yy_Ya199sg_J_e9S!x@83@}F+jaTd`xuvI9KqTOX8`a03+au{j0Ca#g8a3< zu$kk5v)8G(TaH%?eh}RUc~M?^eZ=(a2~l2QuVPx?p!d&mhX32?RGM&)6eAQH z8k&CYEH0c~5ImMW)~mNG-UefCs_4U7SgV>tkbo{Bfm-&Lj<)uq^TyTi#g~S%-Q3=d z&O_By_aI!|3l=p$mzKsYeH;`GQ;|bFdToL}sin}Vc+{?qrc5nN(5Gt&>FiX%P5rg1 zv`V4!KiAI%{hptQHhaDLUcTkDm0LIbSVr#|n|NKA2G@Dv=*ilD7ml_rTvIq&A8}f^ z_8e+4NHRLjt=r0bKUIMKZiUW2R4nG-ldg2~ctBYFhK2_2cLooo+UiQx zdv@V&-eCiig$yW zSNbat89i-wpun<~LMZ{tJ&aHPb4?`(#%JRm_P-XgsJNpPXq) z1M2vGT8<(6&*~MZ{for$`T5%2B@izn##^75ojo-Q%;G2$F8-w6mY&-XP6b7_bKmrc zTH}(Lj|Gg^nx_xKRvcl14bMIcfL z6pMD0&D0LrTHmkgU>yJ#-f}8BA4x6-*~zY~yc-~SX~~}QPNo|~=gB<>IKAxL|HuTx zEW=mfXSV_fzymxJkFL=0ZwB=Mq(0m{^U{Nm{bN=k?+}}pf7^(riEw{EMRS+S(F7tE za_l@5n^@s6q~z`dmnH<0v#hpP1+VYXP`p}P%hu}gKN(cMC0;4@BKrNSr!w!>@#Pjr zX>M^yk>_vT-g%INU8GvNd0sKlIXUUxY5PIK0`vP~m>Tv;K9cbn?-#L!)|4sWv}%(b zyjFAIm2Dj|kBsZu`eHi29*JwJY2#t0`mdWProWP2 zQw7!t$Ay-42HApL6?!Qgg|@h_Bqbnh2vI1m(l@x?zP5xNcC)2BhuxF!khe`I8uJl5 z=d*OPuBvS<&yUoUDrd4g{VKTJ;yTbwpv5ALR!pW*VGy~&~EGcb#RsY*N?N0T|oq-8KXRe2d~O&G910$DGCgE1}WLZ#ntH>uLa0ta#(a<0-)c7n{|Aq3ja1W72h5F+Okyw++*r0G(@@?Dz#*Q&uRAm z-mc%$hCYy5q~C%_&%UwRz@6iu^M5aOw3!k?4_pt#5LK9gB=xCwx1#SG3hd@|t#Ho0 zGLtr|PgjpLln{Z)oLL|Gov%F2f9G*}dDe5;UN7#9oiZPI(R1!p-Z!k>Drs?)$fSXK zyOf8Wj{SLQk@ElAGQzw(sxCj28<4yD)!L4St$k*Of#=oPHGYVUsM0PKVQj+_q5n#) zjF7hg@br=W<}jhpF*JG^*L)jyKe5~m)`!DFWXF6joPpn_`(~B*pFR#@YwZw zhczBg(}y|vw-|&)3HvWp%v#(F*Xdp7I{jAe#^gYUcq7e>X0SVb{?as%NB`~p`CA(F z#aRS?cXU&5f9U1`lFklwV7$a(_U8WmDCMt0=QGrTRQY>6XbcnFn~jy46W{5#8fF6N z+#tyC%6DsOua){c21Z_bZN9Kx&gBDQ)B z+E)NpyaXI0I=?Mx&Vc81g<6((XPk`aco8Xb-UhA(`alLc8E6)|P+_?vYSfBjxSF2w z-8nYo-aWGLKGW>Fri4pO#C?Vh(aFk#b#zeb^_gD>e7&M9fnSo0!!w?yq&yVS@cZ;3 zqWO3&p1u!ITMxT0yY*&g)1=iTBcF!8^JnbUJJI(e0TraLmB~0cRn#>H+Ok3RIx$v2 zC0Z2rq!Og*SCDDuu=yE1U?Pj)dqW@&e*aZN6g)X0-v4Qa?--F9Z5lCt$55`!E41Lk z6#z3`n{2}!55Vb|p9z*pA7(FA@PN2y zfz+mt`P=uS5u-?tfJC>8xLmUIh?e=<=E~w22O0J+U!*S zjHK>F`1`;eAFC09s<*Ujr3-LvLACItTG?LEWZY1X6D;=NP?VP)qM?(%5B^gP!ItQuR zEjyY^(%f&?xuP;q!Cnvlx~EXAF7b13?zJbePu|cc^dF|evs;c;QqkWYj8tZLw$mU- zzLuwWBRSrRqInSr;@$T6E5LMg>7BdL<^NTqtl6CWtX|=HQenPGBe-7HGa?o6A~1vy zt^*0-I<~;TvHr^ms+q2al4qB7zGLZ%l$u&q>ZjiO!4dbRpBr;KgJK#FGGrSM5{d-P zk|a3n=Nb}3s@oX(>@EjZ%lkMsg(iVZck)R$ zoZc_;?7{5tj+;v=?c8s1jqW;Qn@OaPS!lsdl!5W_6!v`s7Ck8O&KGA(fA<2Qc3ASu%M&Up-dwd@yF;D%>aD>O4>(%5 z9`;VI1Q-$=?8gLdb67VPTTXR6M6~r^a-fo?75pDbNCB|*_G0%;Sd^0{dF@Y_ zCdZ8#Oyp;)Ee5I!6&uxggPuPT?jwj#_uGXIs4XecrDve0rX#2Xsyp2^;%I$R^vufadyfF#UOHr*`YI- z#Uw=F&ix%_dG{xa*G)d6udi0g4lgDT7&#qC3S&g3)prwfHXp1MX7-#{X=VOhI2(UT z5AZ)bIA!of?cG91Du)GG;ScCc7RO%6^u)#_40q2TaYQyB7E^!zWY1YV)88lHZii@S^ zfjw@M5D1^sFuDaZ3~6X;8kb^dmU(;-7gkxQnk zOSFy5(0=!CIkxcPu1luu**)%of)&@ZnDb+Kte-v3x@+LFdb@=e3Fn9`5!M+VjDoM# zCT3*iH+5TXpU;Ir+~nk_pKA@jJHKNk8@F%g*fjv93h)B9uP$Qor>WSJtB|uz5+y0b z%jQP0Wj`8@w)DC$P6ZtHm0V7KlB6U4mFmtd|J>w8;r>5va$~V!kl+2ewboxS;@3AX z^JwaXqhvHG{pmEzI=z4AHM|ny=&J$e*E}l^a{Dkwne2!WjSoh5VAjE=w>(&8oGT0`UmvS}pJ> zneb%A#t5KsIAr9l{l;HzsXv= z(t3n}W=r)?K&6BA0xjWt@AV$)*X)HDNT4=BE-vnBFJBup-$)jVL0qBsusx1*z48%b zw=sFy;nXr!Ceu05qJOAUF($6LzY3OeCcQj4H(so4bS58$H#_TiXeDH&m?Ame{RX>X zADJ!)`dIYI3yQgjJ6J=ruMIa@f8xYVT-pES0(l_xcCw@dzB^q@Gd<=rr@voQUS$*} zX;2I{(#`E|vSee!s-jzk497l$D1;cbJ};Zb)&FqMfMP*|cSi<3qv*`R?NJwqBDscp zcK&`aI#EFEY+Z|e^%G0E;yIfCq^uapYDlPRj8gO5p z5m!m)eGx4{dtJU>P_ujTFe$C*BRNseuiyEtymXUo?TVS?Iv$%?E-R05mdH3!Rb-LC!~8Y5nk>LEycOhK9O5gRS%^nG(n;Y*2&i_LMvd z1(`uA@v~9 zzGxIhA>$re2YL+<)i4=*9Fsew;9^hyebyuLqe-{aZqt_ckPn6}45gf@UnspAPaD}e z=B-ekxHDs?W$Zn3`T$;7GMm2>Jw$d0DvKQ{{w@U2I%YS7!9|tbNp5oHf3A3TTF5n zviy4V^g@83BklI2$Ph*O+Bs&Hfn%#NYwO7+v^G88RXGSVu#eA;lJeC~G;ofche?oAz(#E8rKMYEy#hNtjQ{{Ezt%CGN83mwkTJOT%~3>X zJR^lYv^bF1o=TGvIa|~rJ-)h%%n2`z)~olBoU=Ic-kiQv{A?EdD@i5jm98Wft-A~39QaRf93qrrQ=3b^n@N|UZ0xQ1 zrG)N}+;&?NflQ7*>r@)2$CCF_FURPADu7%~#ca1w~erw*e$J?@^a$Z^=&m<~_S6x4Pp-`RUv1yWyVDCT@+IeurFUcFXZq>~d z4aC*=wD)j$tKxxCy_YhBb}-goB9Uw-gVl##@ zq|jU;NEbUi)XeXx5p(*%_vl-5y$vKmVlKT})~n>EXzfklVlaqxeiY@n+{0_G){=eo zAyCA_t&N0oipJ~}WPKykFIU*X|1*-5M5AVGTK_1)fD3BqSdAQQlb7k1?d_V9x%B## z9pVY1>m)s%zp6bgEuB%$$HVnBkn*uJVQcpIyXU&g=g)0ZQl;$cr{^bEb-9Y|Z5#!p z@JAj?PW~ZuJL^kZrAGi_GUDRDQfW!el|ycX-ug0$3mT+tENJCXW;V(!$|4JXR^wDb z;2QQQ;E{DRd%w}HS){j-(hB;K&rC|Iu70(U2Npp@)D-#hpWoW6=~DstZ!5X*iiLgJ zwi7J}gB^U%03JH-K#%&lg*jWJ`(tzCb8APPK}|77>DkcEP8f>QnV59De%Ad^uk*>1 zp&QAqAm784YP{O`&n#qUM_=D*1_nbrTUMK&zf})Yw1rwDBC!{Mw}ZRQP$xt54q(k% zxclSjF){Y5G8lbw-VrP|v1yO~!j{-0wG7D&`F?p7HLVZ%27Icu@wKdj9Md0!{3nM6 z@?eyBC&dQW@U*nF$@$6BU3_bU?Aot=G%qbg6Y9t1P*PUE#nEU48b$3UUe=qRFH7{A!K4?$jhrM-o5vf6Ac*aQs{OE| zesQxT!ZrBq<%@MqED1xg;ZTs&f$oUdi8?zWi}*w=OJ)vq<|9=-?YPdDpG8^1*U)WX zkc}eIv@x(!pdHs7C)48YO%I$raCy>Be1S-bll-6Os{PFUHG7KY_gMo&AG31nF#ovBCZ)^}9fWr0V zbgzd}-^(FAlLSz=IpT*)(g!m+)4#k-^5 zG@c5nt>gM>DVT;u@aTrC5K^a^xn9SOnA%>^B&#T^2nM3<(~9K4yem3KDN@;qy5-f3 zv*~!{G$&Tmh5CY*2>+SF`FN;iTD5Yp?Q+T!;wzg`y9*=czbgf9Q3q(IXUp@W@ zz_uNoY$`WrCMKGP+UV%I!8MNd75>rP9hYR?KOdnh`z49IAEG5dY{K01b=FQz- z4Xr1Q)^oGid58WOtco;^oy9jH~9gnZAI zCcjVj^>OS{Jg$=@-Nh?^UVNTWPCsFt&Mdfm^R|c<=x1-G@^h#^=@!ykA;bH)iIr!f zLBZKeH7KLqwC*7yg#&X%=BkbXLMhVMNNE!Ni0E5i2nh3^pl|FU6BJZjB0#BqIppK) z_WI&xR={&JlV4fVSR`Ffil)NU`1ljK&`k)O6WCqHqx|koA!DC$A!K@cC?CfAF z6oFg-RaMn!!P}Y)MhqqOS7o}hF%=tkM4H`p{q>1opFG=yEY)Y9-g7u>``WYi?AW4y zQ@BC-%aET#tsAkdqtd*&u-au0*Si~IFEMjx-+G;bdgjh($?jO58p{IBs_V+wZP97S z_~xqTWgOk95AMSENUb!sOVvPSd*~O>3z4K*4PK4CLcQ8CUhnNaDtZp8PGf8Hu`$j~ zd#Ts1MsN??6be}H&DXkzPB$%lF%waUT6t~G?9!Rg2^1AW8#F3A^-a9bF;(oUIkBtP z=P*skJ+9Fyfiwr^WG0gBNn9g(=aT*9pPwg%W!IQTF|si78{~9H*3Yef4+FkUs!?dYjJn$lCyaA@oyt0wa<`fGg?XP`HY$BsDd4 zs4>JUqIxzVwYsY&$EE%F{XVL)?ZD_XfH4*5+Jg(gO=(W0Mw0IKZhR71QY)njlwrJ@ z5=w+lbUnRvjetn3P(w~R7iTxscj3D{J%Iq6A zvd&wgroH`Tjx?hjMIQ0w_{=y;JiWIP1SKh2f>?cZ!oOjP*!8?%(FK;lT`)O&D9$r% zo4KcL**^qJ60-kz!w??)7xlV2|d;Rh&*yp>^(_yCkiTm0{vhE!vF@jWgSc;;dskV27|jH>Nk^ zWoM_`B9nHCAAyOAi82xe-2N>lf7LHFY@KxVopP(!uL%hbK@0*p1=G1OizSYq&Bk6X zw{UWDVsM6}CH~)^r-Hy4eyMbx$3=qcVPVRXL5T)7&bV&qPGU((Wv>}d?*L2*PpOvU z;OKrCw-RTP?3v_fIew#4whw(z<;yp_%;Q!?86QR2zNz9wunr zuDfB3_AJ>4=jI-jCp1^x_?DoFe6L5<8hwP20S{^K6sec@S2Xx_z|>clY}ubcn^@u5 z5>I$ktl)eLYf1xciy8UfVHmwYf*LMEiRtwpzYtxY=6frp8aP*fkeiwqrq+Esfia#+ z(|VSe8Y(cH0kp?kgfR9&M-(RLL?^OwrOiET+~Qw5o!x>Y_H(LTw70pDw=$EGjaBC* zmOP}%g>rFSp3!@EMUR5n!w^&pVw&ZS-HiuYPGW1~=|h#ZaEC99BF(~fbGUU@_6|(u z>bFWB(Su=i_VV@8UOw7Pw*$s7cl;Zth{kt6q9OVfS%%JT!4esXopohGYakWRufwfA zG4uW$FNchpY7y`0q@DT*Cp~-8mqbm4-xHT1scJpIJZPscVapI-PpaJJ5_u%Ik3wrr z%Sg{rv`ZWYi^EzQXAalr{H@cb;5<~4!nz=zjljpPt6n0}3xV4lB20!t3z&dStND); zw6yn#zFkGoqc8u*Wt%q2M7Zp>k6E@RgkJAmis8qmpXjxjXZ54wSy`VdnRP2_StnI) z2>MKj;(j@x$$8t+DEmCCa5a~HZkboFHavveI6?nTC+Kc31a1d<&2JAvoMcTUHYnl1kV)wyaNT8;8Av5ED~mMz95`i|Bs>@ z*KSRR=H1lP*DhJqH50I$XPlbW8h}DkB=rO^c5JpQ@_=e9kzTOG z6)RbLilNx2XfB?cH<_jb*6`PF%tMD&4CKQJL^X!MunCrgul*_(> zApXt%>koko*9ZzfH~aLQEF@NkRX@Q5u~^I#sO^LH?|#sx4@&R?RFXH8W&irG1lQb| zl7jW))A-%^r1(cpQd|~qm0|&3z=CHjGQlZVZ_`Pr*pR7f0MxmZGc%wjQ|AGPLaaoi zDd#PS_!VoeQ^nb@%+&bmC(2XA#T4-~+JUl6MHu7SQ|VKv005|7J>29RYDz3)gAGo1 zLAye}R0fh~+73=guf}6s)}q`2Jtj9TIW(7kT?kc17JQNHXtEksoNHnQ1nGyF7uu;9 zC$%rBnN3LvD2bHpvv>O+?VILhCKQhr-jTVzT_T0s)p9V1D+{y;A*Z7*uKCQ8{}PR) zcDKe+HNxsBeZ;v!I8xiSa)yWEs;jGcm6a12ry!Gdd-F$zkq0{73Xvf6mJ5@`(?Wl} zw3nF6h;nVG$!X1#bBS^!aP?dZcpK9nQQu>OKc`2|`))hs>!5K2SV(7NW@b+J$7;xQ z2Nk)lOBPKX&#$p_sJQ9kcq}&?7QPgmuTe|ctFh0j1imtMX%}7^5mu$C+5&h_2)F#a zs<_}E8!BFT7hgirR#1w++<}OQnd^5g=wK<1{d9KN3%qgtwzlir7S1-`CYel_SpDW~ z0p0erFdg=Q)_Voa^~_=BjTiRVmf$B3#r#62+OA4NuRNFX!v{T86j3gCD=bZTb(WSj z6|3QWH(3M(1a!lFaDb7`5j^_C>7|Qh3t|1z#78JQK3904fAz^6lZ=cvaQJ4^Dw>qQ zE!1r~U$YV}q3+}0Q0sTLXQwEEg`}73myMW>VBhalx}M1!zFVJlad+05`$(Rr_=d+W z6BptUhdtPFOgB4%Ao!O`7at1R6b36kw4K({*DUZF@td~HDoM;tjH$X87Z-0_+xo0s z2M^jm5QL0sZWiRp#}uQqZ8}QxdNyDZK$>Tz(*;OW_a{{OLnMSK!ATU$}H27kJD#G#|rmrXQXL6D{N(L z=iGeK_nXJ^>$U;~^bQw!(|w?m?nAX0gj>HTuwh(DQFE@S$kM@0(=7!(Z^f&j-^L7` zNNZl(3idb1e*fUo%IdnsQF3(d)4(I)1uR0g3Du`Sai8+*CqI)Em!Vf-l1x{8j&>O6 zp<=FlC{H62wqZ`~*>X^5c+{7Y=1P7GkKqhQmdN`2`jr_wbPE`f*{t(9`8q+dYG8_r zNozlGb9||D8q3F9-8UYj6||kiQWYRLxaI#>W8;ULN61&WB(m$q2^BW zU!hKE`Kf;X?ZLU0&xD0F${lxXt+}lMx}T@Zbn`{P;&7z%XoE#s|-YS;v9~qh!b80C~m^Py-Wj|gb zi;t&7RFycYo(8-kgy)jBa;0W>#|i9iTk$!bx4F3q!2F~}B@$ZDVGp;c1=c>?y%9!` z2vH$v>FGYMk=uEVbFtc`l~j@E`o6KLvADcRsTqjcIM9U`xgsu`CPGaL#oo zD*DOE&4Oa5m-Jqq%_UjoFV1&=h+2x(&pN!w3FI(Bt~bljBWj0BY>b)c5k>Z^lT*^N zY70?KX+rEgl(O1<-Ljr6NzX}WpEc3WB^ws1=SOJixb{Yi!}M~w&Q4n8>oi=K<->1H zDPkZTKmixMP~L)kwkLvbGukp-oSjucWiKe0u<_O6BbLLvdiB~PhI_@s?H*N_f-bg4 zlgj0e<+l9%Ti+G}`*o8GMlyEW4D*<3$ zL7M>J{7Zu-H==IGCV~qL3=Ah{MhlB^Q>@TdWf8Xh+LcxmQVWNH9UL}?O`+pfumg|4U<1qS;|qU>#3pU0llq?v_lSvV zdO)OSnz2e!$}xwN%V^u#k=FX8<+^72Ns)EHQ#tRYvE~}n%@LBwYdx_8XD$h^(*z7+ z4!Z;Kswh%18XDDg++JrY#RK{*Op3R}QFEfE`q3%XD`i zKoHd(YLs7MzL=4?+Hods?uBoCWo7<1caozl{&`Bm#$BGu zy%@&8tc)j?X*I#=vF3BLyjB)Q1)+o6JhDDAKZ4|92*%1{`Z@~HXFwe3AJ%kHqCi8H)4~*_1zqB0pb*NQcW}>-niwnCi*UW*-J#yJn|uf z6#lu~c#I6ZxVUPZFc+e^m%nNMcQlQs#rm$hmz1p)P~H|!dIcXG^jB9`b85n)Q-n9| zy*xdOi;7e;eGkiXq_5CeE>f2;mbo0$gea!_6_@++zdEn$V7bIJT02AP=is%eTaFqpi-9c$c1B zBKrA**RFdaMPS)RHsk`4HS=!}8?f9<3ir!TNnw@g`7toU^*kfP$kxU|)lDX;JzUF_zC3iUH}@4Rc(Z(z9E0)9I{Aa-QSalG1xQ`eL(BQN?JoiU5u_#cr~2=lKL5SRqo6rVz43Ym$!`zX z`15#X{@-tnF8_b?o&hcGKmYX3^uVLjKLmENms3$8rxmp`A)8*AUVFFmZqb%^2VXVh zc6+7$@^Y^_O?@xV`4_nV^#Jle4~fX%9xr0NxMib0I1E4gNgWg}KQ<*+V) zzIorAe>0Zn;C1A34&G;9CNJMYx8~&dn8n1n>fY6-Y@$z%l%>vO!zAf4=)AX!65|E! zb7$SCs91!B-*zy3kK^T6-)%X|mc$;nJ9OW>Po7zAB0XH5hAE12_0PK`etjuL7hI2&DM}s2} zklFCn?E}vEC~&(L2O!tsM4$XVd8tXKY>6^lr?IioZY~c3Wxvz98cD1ulPu=3Vu##f zVrAneZKyhcxa`|()*e$xC}YsI>r=yLZ-WGN25=qN$F zR+a|!a}}A>GC!nO^NWojN~eC6R=S{nX}n&$?=V-P$CiLA+{VjD5NgkVD73XFTuPHvN>V!J5GHhRv{dcCxpd=y*o6DgAv`ry8l6D7367f2 zOTPl;z$hlU2H%Sf)-h;5ET(>YB|cTCd@OUPaV&e}!Med$u^lgs45Njn?PC2JXB>y% z@*e56@ibk3$ohd4zu^IDZ){M6{#liBc(&P6JioARqli9xH(eyS#yrX~)30*sgzR4I z$~wJq?a+eVd)$`-6hJ|Hxgv3TTC4RJIz+RSXBNE?qeEox~2X=rPg$kH_^5)Qqp z4WCv4G_{DB7@Gjcz+ag_o>$&;(#)`xg8>2yQ{Z-H>7oPTBGD0gmdB~OPZKbj+j)V zu&78bM#D%ee=fyVPVLjln{r9z}pr!}+N~*@>8j2kNQ$Vc0)LM2`kwip& z3fF)a>d2{e)Rl>P{tOsulksu4{q@Dw%M1IA!7g{Y%*dt|ursZw1^%Z5O}%xSVBIlM zQJJR8R|}Oj;^ad^X_^v-btIh1#X&ex@$x@vzlVY=ML5X#l<;=nsEU*Of-!dn1OiD0 zIPt%UX=w#{Kds=@YdZE(SFK}Qbr^Ct=KsUJw0?IlNPjO42Q%|>VmO^)z^oC&>!`%) z>M+Lh{79R@u|jiqkj!D_Y+e1NH;;v)Tm0rsXJ@BvW|_XAt>?7Pm8(|~tJ?Syf=!=m zg5V>zsKyd|kJ3Co!9g6@a9!-~mjc-tAcx`S&J4X2{lVc>{S^P!1^WeX*UU)Q(ebg< zF(EG33iwp#{P9GucQHVB*WYk~IuG~SuDQr+@Z>o@h7TSrHN(8zaH z-fq+3%r!vSHpV_^kM`z+9M`?oiKCTj;9*BW*x}>>n3c&PX{r)dNjXF8<^53tG9E9y zT~u2;b=s0wJA??i+4u(@_PG1{l9T@fZ`mVj?FF-ZnLz7XJ_-tM*uyZlgE6B2 z(4B(OiffGx4gCZrLbzZYzpy4B;JAbmSMhC4JkmhnywWr=(%!kuicYXSXo+fioK1Gq z%N8&E$EjPXeuvRof+}+oMUh_H`gI&g%o-VvCaqC;i~2PyOTSSaCHaLhC^*D!YnIAp zDYts6z$v_?#n<&@s$PfO5|vPEZosYRXR=63S1%-m{>WkeR5@xRvexzKAI}f|w%0K` z_7B(nineobh-M@V`)~tMu3tTWILCv-czB-vS-3dalgMf*eT(-(Xu|xK`Qyo{nX*Q}09Ecuzei<|CIU}lfr)lf;dz99I7 zT#SLC;S@7#e<{vWFD&Ov0SsKfvRS!Qv6d!#mVGnRclwa;Bm>*bRJWt0ZfGIu?t$Jo z6wg{*Z2A?$rYI#B7>m4n{%BMp*K5BmvT%M?YgY`TR69|+^Y9f3%p5_))G{t}HrK;W zzL+jAm!YU7P2B)p84C(0Y`UMBz z`pnPKJ6&kyIL4`|=|Vz?2$O6z;Q#|X+bqMWVT+lK5P%h0$1hAA*|ZQ-fcmujDn2!~ zEI^yO96v);Bq)J!QDH=d`ehh{z@; zbw~59y+6ecr;43j38T$WKhqq*Xp94l+Z8%1sxe^@cqXEFH(J&EEYIH#HfJ%HP%m@j zR(s=m*yz^|8+pRjngj;eyZ>(`UF|m#+%8`U+3-j-02f&)s{0w$x!aFu$~k8l7#NV# zQiJd2JblK9KWq1!J9w-FGWmvUsv^?@N@1$<|`Z5V{*?^rfb_&v^2NR&mWuoFR@M# zL{`(`1p)-&8AAHc zuM<5osW|UUAq1YYQ~wdf`{r_wH@<&Uk*S9FuT*7Yb!e`NWEnUeY8Hy`O zZI%!9up2J5s&PD$4{NM?9X0i1Vpxr!oPvUb2L_)8lZ zAT}~BA$yQ-oMM6N zt&wELd0ib;_F`3rVy=o^`{r5Wr<~rwe6{*k$W}Q>*Wj9e{Q=>IJ z;|554S;0ZSu7K9##`zW-bN$AAznyD-L-#2T7iXTcL^W&ckL9h4oVQ0F7K9J-K}qEVqQzS7pS{ztt}3^s#sicN?66-zHS9O(yY^8C^-UeU@pp0pc==%a2L^hw zk3B}ekmFA98QRu51d-0g<q}9pv&N zqL}*3`SVrFTNTy^`$rmY)#6NJvdPD|-r~Dfj*F@OD}xEK&FU$viw~DNxHtV zJ784XXz7#ehmdI6h(WwvSC;StC*V%a>f1TbSN`zzzqWzPiGFp}aXLE)z`_754YrDi zZw@KolbO%ZkhD6sygz9%5#s~f9)x_2)`hxQG7Oi zPHhZzPcuO;b9XHftm11cwT#e)usON4p;qF1RjgE0UVU9sGo9iRd0kF7jfY~2d-9V* zlh70ib`wh+qB>ed6-jq)r*pr$kaf0|Iw}j16i}>o#6(Srh__1AuobA-QQ43FRJ|nN zsSz_TKF@D$p1luofaGTa;{=^QUCr%b6Bm4Ysi*syzfD$`czSEWA5c~IJ4Bc0>FXbT zhtq252zc&1wj8+tD!A|M?d}xNDZo#Aj`$)JH{G4xc=a z2APu6l7VwO`Uo&EzStOYOHqBU;%@%Id|7Iw$Wsv}=`xNXZ!^?E3VzYY(xJS(yy=kj z;N^;)Q2Jx=g#UsHku9Y>e0mF`EciC4>yMU=m1CY{6E~ZaYuvGDd$V z9t;RzwCNjxZ*BJAJtvR-5z}Jyqm5KXv%{JmejKR&sPeVV&l^zfL5==$98kYJePGUq^CYDg+0i$}agGh@0lR!99VP^QnX)erA8 zm+CQ^4VX*5M3G8k;fxy;>t= ztd@v}d7Ur*!ZLkH%U3mp1$}Tk2PTKGv*v{Y)+k!~!n{fuYX9CTv&;o%W-DeU^B=k# z<~#ioSI+lsW^H@pA7~vFoBHoONm8iQz(Bu-zBjaNem?%Ym?Ln!R;??*G9 z_imif>%kwRtQ{R4F_BgWE61Gyg){=*r zl_Yyi7yjpc7PNdQ_|}Hrc09e|kb06nZi*{^nGiI~P;&k9Ul;`*KCC^)O=)3oWyU;} zv$b&?Yq655*89OON8L6IS;rsuEqU)JF;46yR<{eWnI_~0$_VIT`s63P)+Sv`4j|f) zl9r#nI~!BPwv2L`#Knq0t%T{~@_eHh@;h5rZhxrM=V;^KQuI0&)`dc1PTcoL5D3H| zSm@zR)z((foB%kaAY>jU!6*kk0KSD>y7)nq*3M^kj;ZmT_WMm??q|6}BHfC@h5$}+ zn57TMuxud>M;i9T%+A)f_;77IF>-dd;*(@|x*c2pz(bn;#zjF0zYVB>gA#U14BuAZytj*^m>|{b@>8iEi5UJ0qjg`Zn zjrY{#_VY!A)wyx)Kzl3h!rURuT^-t>z_+?)a?01Qo9yJ~JKlTd;^H2|h=h&peL#K@ zmh!@Q%Eyqz>vPp5p5O4KNnfZ%h|#`*zGWzzKbqkMNc~cULa>buO|HTVk#oOwr=KT# z0)A^y*O{8LH6ofhZ$fvovO2i<+=-rE;$*u$j^ER|*=VG%uc$h!E;Xy|Y$kouoyMy% zHNM)bm2tVX5DZq=)%{F~KTfx`vlS&*Ud;+b?oi*Ig}53308mRnC%E}ub7OO=A^PY* zh!!%b(U&kMIA_1vtH+34mDN5VPtfwKG)lI*6-zjR73Boj%$5Fdrb!{|K4QDFNc2t7 zDumlnN2CN<4EdkU<<;|hC)T%*y3^xf^JREQeVO>E6S$skm~@?_>krDd@$h#Q&9URZ z!J-~*E4Sy!ac1*=8f;kZ;MJJ_0sf!9Z@OpZbs<&brbEd`q|JjMli4+JB-^tDP+Vh-MTtlym%MnEn2fYy)bS%QCU#n zkqVL!7iW@-xV;vXKcyL;Z$?iqmAVY_6*EeL-ep$v`#p_U5255$Q0oY$y%9#DYU~*h z{5Dh@MJndnznbiF@Gh3oK{vw=Xg~Fyp_v(?JPK|~X^+x1Tk6?S`ohJ{qwj0f2b(9-2li_cw&JIuI+XwcHoDQwa+dvE>jP12Ab zT?XBaYqt^@X+>+`r5rvJq7%-q%mJyunkh@t71`bT)7V;D2cDh5bmu1L_3al7_Za1Z z^#UnJ3<<;9>AyHJ^XWK}%1ir?{$U>Gi!U9hrkek1AJzbUZR!O7LHpi`|F);b9vSUB z*VyF{#7S9_W&!uJf?+?0Z%Ot-e7N3#|?Znji{ zU);bd16aA~J4Oo79jx@4(2Jn zxU)V!wYuy5AGwu)<=;}fM9plh?30ln#Baa3U)n3llXBE8&H<=W$;3!bsmv@`m#ui*wHa#NcS5{<&Z>k2`)w6eUp1j}DOfxL6GQ^TUpnt6GvFy*WJ3O0{ z(4F8OkqLwtz2B;Y8BeMlKakBs;Qd|O$|xuLi`VD$o~Lj;eRy-P*Ov{6P={G2d4GpWdkcR;O{TguTD}pwf zNYl=60!E(K^9a%WT&5GO=NUm7PeG<^Aj1ycc$hYUB@Ry3mzU@3PrvY^q5r*A3Mw(J z0?YM>@oF;^@#FLYz!D+lbhZRGlF z@|Vvw$k`q-N%$YBE}8)rUfzzw2U|V>sHts|vwD^E#lLSrb_Fl&J9V@&kq`ysL3jLA z*3a@u!6Ap@ zh?8BPvXt;6-k(1Ne(U@p9IaRX_0_cyCwyirHgdP57*BjA9~;RCb0yvQ%8@#L;fnd^ zXRIIWDIW0pg@<0`yrc5`?giZ^tj{_x@Lq1aMPc#GCtmAoUQmLryaJ2sZp{f!^;6ta zhqdXDgk?Je;)u3X+dudFUf@MueR0$ zQtw?LjP1+cV=H~1qkQa6B79s}%>7h_?|>lm0=BOGm7-DMB9XENucDk9PTE|zC-a_9 zu~$!&`>YHCITd2&{o(12r`bS=XK5>HK}tqOCRxhgi0%|(n9S{GPsyqCg)v#sO+I~c zAh^>vt4*NWgD~Uge=ncbL`AxXB4XMhmT^S#=$#+1E9gr3wTD~>7C02z$8o6lZj@DD z3{wy%VL&>>*Z&&OH`}dg&~h=dZ}%;`G1KUAG8dvgg#OejOW}O2OcZYz{u?LL8QX`J^lybwj;<|^x3T4E>2t6Z#cR0U^_O7%VQgV8?S^C`}NDVM`XJ<)@3G| znZv_==_xMh^@qC!Z%TdI4qBuHyIX{L{hJX9Z!`F9;?Xsne1O5k z+cs^d$5z_rSd-?mcfNbsGAH{BP;eE#2Od?ziI+2ah=bF(&DT%(SC>sxS(IpKXqfNk z*1N1D{rfNB8w#|{&V5STx_aHJ{mXf?tsN(zZL~j83=~5)$+qD;Z%)+cR=@Q{ z)TX_gyf9@{;4_kO(iQJ7PcSDwD^zLPUb@--+{e9=7FmKfq5gI}ouUqDk6|Mpf03>( zJa$4YwGPQ=jy2>pt}X+Pok$h(G}PB&?B}=$!CJF+y?;PI&jWs86Xx+e*s)zhKjbk z?}fbRYy_^aOzoK+tWhr?EKIWKws@*Gxo&2>4-B@5UBFd2gB1@t>G4krZcCXqo_WBX z6?WQ|6N+)^?l1-ddnOpf8FpuIl`37oM6|qdD`xe3M2H`5gU0!=K88`~Y!TA9NeY>? zP1{ZL^V58GkS^!6w#j@JYcsK+SieJU)sv2Xi;WP?*UmgU>CmNGB`%;*FX2&87;qWY zj#P4Xc3$u`d%56!FvV`bEp@(@idZLIP-fMB%l`g`_~|H|&$@T`fw=2Bzum%ecDMiB?(gtpz`w44<{4)o$Ul)B^1wUbrX7H^T>2`8IuDiLesm zWj#+fA^rpQb53D;u+9`=)Nu27v01^?4tnP}5jY_fS&aQ4Y2KE^72(`AnFsVgMy{f` zT2ANeYlnUcJVbh>2sv9i#@qL{0T0A*q2QNEy!VpE9!BIEIDYs8J$NI3oQ)!|oL6J!_|7T+< zs1jG2O1S!H>(3guW+H?P(lZTR-0EPCA+B5V9I`ZG;t(8)u&1cB*=iSby3krM9LIZ; zioLXMC>}DOCYkD(a3R$x_Hn0s|EGeC!UNH*@6kOVK3J1e45Qa_t@b{WtgX%<=?InT z)GO0|DlO`|kycjsAWcHD+T#rO4OBwo5mt6J&t)^lz~_id>)Kp=T-?ei7<~U%X=&+T zo|F_H8Qhl-?*UajL9|8{)Rc-Jtd9)n!o_$fC@8$P7l~bPis(GK*r&7J&@8sgd{|N) zN=zE>3G$ZI+D}_MXbnD~#ujE7kFJp90c-`IRGC=A@(l?VwcbcrkCMpv_{8;oJ4dC& za*2r?tKC~OzF{rms66k+vsEhmGb$r@L%llNScWJuCI(sY_y-dORs#-oLv2|41V%59 z{@l~057k?%7y{;v=Z;?aiv={a?qS#lf_SC&vGCI;3JL5tDM{$6fUO2T`?+$BnEo)k zTNY3Iq)AVmYKJ?d5e1P=+^$%|;yS!54y>gUjfSzPyTDuPHIch#$sk(+$BBH!gD4-T z68G9sf>q6Xc22R;WD0pGJ#9O&oH`p!o`_}S%Wns0LTZZC`J8sr80842&k1Sw3R^q( zQ^sV>&dNi()L;Dr4+NHy^D810^@GSP*6#pbJJW^S%Ka}sj< zXEjA$TYIv_4#1u=|Nh4SF-`&oDWmC9CvE2&fmZ8HCE8AI@SreC_WE|~#VXvDn`>PD zzI#>A?R9le_Hk6~gY%8m>P8E!)ab3$a#*t!VWCSjJLkMnb*bao79~?VLUvn|-i2%a zgNaQhZT9z#=+LIMJrpKV;ye1T^4vY1a21yd2Yh|q_>h-~TPk9wn$y?Nr@_QdlUhmBX+&-p)p+OqG` zI{EGwB(gtJ%wN>73H8QnK#PUNM$e%+>U&CrB057tod6kqRaRQDK{qKa*TPB1E7c)2 z4$w9&vv$7CG77B{!}vUf1kU<)^UWC2C@$SL*ti8UR6*;sdZ{7NsP|`_bpGqVaczI=a`DMr4H(@zsD}X9Z=F@7< z=Ed z>wv%MuUl@@uZ20x4(SN^hJ}*fdYL#T)8BFusBHQFV(-7BnoQfbQP>$rnNg9MM-c%5 z9VrR|3IbB2B49*7dIy!>rG!Y0$|E=;prJ%+lwK35p+`kQYNQ4NAtEKTBtjqo5|Vuf zN5|*=?fv`SZ=|Lj$>I-0_E3E&=McL_94VHBNyz;TDyg_qph1E0z<;t#>XChYl9@R&h@l%v2${_4fpS z+Vwj2(%*RbUaI#vDk_0&S97Y25Dg;?X|(v;hK23*S33h%+RXk-IC}YwZT-!ueH0A{ z)vgF%AwV+@EAnPdnG`h{utvyYN(=Vx#ZVGGet}To zam}!sKHQdsMjodl1g@1OW?MCpnx>sm_~X@^Rg4~?OLLZ+Gv1@aUZ#z!Q1bLa&Bcua z$7*~zJ=w~dv-0+CN!r-wLR{8$@p@W-kAn=L5#Im6@r3dA%(apg2f+DAf_a!W&_y2| zlGW8!0EU15OsKfhM0_eX(EPsY>F532s6xUGcerom@N2sS=8A|2A^)#K%CN~Q!NBo= zq008qUi`40T;OG1G>5};RojxZPbHJmpGz(f{H9YTa`50nEla@?(<+Y&7F?xajb457}&X(-XMLJom)6>mc zn+SMEBDDP6<|h}q3@B}^jG&qsVB2(usb-?BSy13sQf!mugKm{nOo}=UYng4du(B!y zsKq8#n2c{k9n98nTB-dX2RMc5yX-RvY|Gwx6dX@ zM0|#pSsfHxpGXE~x!6Q=1t4!BK$$lube#J@v~6r^orD_W{TatbNu!Lz9`O}*hF~yQ zR#rC6C-^hQ#00Ig?GvS_m?V}A#Hy5(l>CS!r&_AD5P*wT)~K4t!K>?evE-5t30rDp zoN@N*X4F9x0k-i5tL7P1mS>G@-CXlvc1plt!~3wwl3t`+d25_6OeNUl#P!H(s%{~c z1jA}bR4Y7JgtSGLz{*&OD$+n`wq0)(09*&)jndVi{==Is*c#Yg-@0|#j!lj&$Pkx+ zsL17f+-A;HaCfek~0MFQ<(#GYgzV&q|>>Oe&4Bs+PYmeiJ-kLkrr?ok%o6eX_389V2X+|w7 zFMO;FhP(E}pQL}niUgdkc4Q?4eL6wm3GTu2#oo8;JKYv~ut%uf0)Y+>p zemo6c{Y*c(&%v)vi3h68xK>OtpX<^_SAlmvq`ey}TpgRGK2_MpO)i}BIvae#vXP_(**g8@)Ez`v0F|w8 zv$u2XgO^uGM#-N)FK+;lf4Yd_KxM0Y9K=`7Bln_{8IA-$s z)A&A6ixbKj-(_Fd_4-nq(w&d5ym460Vt2!5A@X@&(>?C3Lt^xT=!#Cw&^HCxZq?m! zR+>&gcwEKAahfJ7-^U-B?T!d=#yo`0GcwWLog{S`9umU)Yt!FHVa*`^b3F?HaLwfD zAF3_@PbCI#s2Ljrqda4C7KCm6%oZd>o~3NF7q*;dXUwBhj>umF%rg3Ua-xoB0UeWH zf45;&oZ%>6|w; zTJ)JV^=ZuxSN29_83Y8~URP{bM1XoXtlM3wS!1@1A)Vgq&Y~_(cXfDvU4XMhy`Ihv zJtFV$w7?MI4mjELjS-)Qr9=?yHnE~QZPxtFcr}-e!lua{e4`K_`NV9QS{kYBjfL72}Lt`1& zcyS8ASFR)FZo!lekE|3XDFV~pTD1MC$ZNbV3O+N*Wf|&&K&6CG?$)?t*m6HBS&|sB z)&<2mocqEK+^ypfrftgrDNF=+^p-`~10nIv>BRxJ!LFoG<87j$rHq26fBb{PJB5oE zx4qABv>1&p~Bx6nI*D5eXvld=*fK_ujDhg)~s>MmvfhhUL9FN3pMUM{Zg#_4V5Ptn`RtV z1IK?JsPQz-FwSl&2*An*P2jO9Kxn!w#J7VDbHAIw%`nz-gX2MvE6yQwWsH{>2E&cB z8|Pl@CY`$D#yjE$^qUJ3c_~oXg5=`_ns7q4Q!P8T7~{=6FbAwL@n3&e$$GxaiCmjH z<5(pLHk+)nykEAn*VcIQZ!vuQAisI`gM*ow*{5qeGN682yK?2ne}k$a;lHJHZ++sN zOcorgy+$fUW``27Q?5o6WVBaovKFCm37A^^ZggvMo6?H zU7T!QMrsm-{e12C)#Wdcb#ljS7)(g+}qa{_MmpQLq>970SEpb zsn1}YBiyxX2J`Uwj_3kxo_(8y+-a{2$#hV_q{uq$V~Kg_SQNT+8{u>;717aZAyfPH zZr@jX=CN6dWJ!6sLmtQ8SLJL+&X<Q{v zA*MScD;NB>^7^Qaw&Ov1dhbQnC0@O+vm6h0$8~8#CmduTJ0l?c{$1ZfC)_aS0j1J{ z_ART3F+u_!TMAT02+Dda!W~aFiRfhK&gy9Fn+qi4r2t@Vtm0W zMU0edlZx5878d1`EJ8KIuQp;t1D5B%MTnNV|yT~JGE6qsnXwk!p>*(%dh{P19|YzhSRQ# zF^7J97+WOkzuUpF{=R4;@evZo(z^;$ZENnDy7y+~Sj#-=l|ZvBd7B595j$6068pAj zvU*--6O!_e4F_}eya2YA*1BEyA<&s?1_0%Kj>mRZ*gE5zt=((Cjnu|;PsJ^#cPr>< z2DF|#0UjtZ#~-^p|HmHGj_5}~-{v4ee^bMxzXnk|ktl4{q75lJQ|Q&7J5mFE^P(2h zodyzp15$=?Nr1Kq){E@?%>5>#p_`p?m*xQ0@w4^L?3N_HjoVUI_N()MHTlQiQYx0| z$hvcl!}tg*iw-3~k}e~597#g#x5ed`HBXm3EnD^H&fh~S->xNcrlj~PJS8nnu>N2F zbZDna1B(G7m&l0o5>-CK z+!X_f;(fX@opRIdL)ImLUzTg^_*M%5488CB(BHTTW9WMxyJV*jk+8$KM- z+j+^rE2nSHrTEfH+@%>HZmKMTZpQnS)scI0QX{DK4aSQ+(cN3W|4kiK{wKW9QVjgE z(AN=sd|u;+SI`X|JDT6P3JuGYWy}&fnC|qNHa4u-|4+Q};gh zakSA<1jqsE23Vw3M7~()ggh8P6i*zW>$4EYQ#&`Lf4^Z3E+=NuxBMFz%1+n;4@;T< zzxF~p3*-*$JJl?;54~7H$;qX_F;py-#t$cVQDX~>a7ek18 zI2|u{WcD6Sz{!p4!rXRZjBh`Z>_i8stGSRi0uo2bDQhIxrJ6H-*^i|J)3qoS6YDh4 z%zZKywX|yeviLsw>&or@TOc=E2I?Sj?3sL0kzZLtX`-MIBHtRrQD68dAp`#D?aqq5 zmiadCJHjOKOXfc^^fRvYqg`qb3{1ygY zdNe{8vpL#zJ#qm_UQfd_FsF>*78Yl`pDyi${lNs$(ZN9y1?`K-)m)8Zyo zz7J>oSd@>)Ykk#RSv6jR3ScFdEk6DrqaBN|{)TaE(9NrJ@x$Vc>`T^OEl`B1h-pH4-#Dvl@Nf`Cja&I~c1Jn$Zv9P0 z?rErceSS9)O_!jTb;EeR@UWmtXQC#o@uS<{LmeSNKosmitDcUdK{AWSlZ9 zSbolwhC->{AY6f>0@U|!^W`_)3C%Z>zA5^Rq_i_7SK)_+goOT!4Gamuf_v#W)Ts98_5QMR=@;j|2QBUJh|f!4AnX@z zPN^eYI~+p|ZNtLum+e^U+v@L!HIfrEtJ)HqiptB~>Vz+xA3tymz`-iP;jN8a@ja-W z=g;?bd|ROP`PoXv*$2VcWNu=lEX^b{LofbFVO5aV%kG^EKltauqMOTu!oc^T!j7Ot z1m*r8ahLx|H0!^Inv29Hjv~yYsE-I31517Rwf26;gSBh5C%MiCHCOW`I{`T7=D$gY z@P|@#1vE7xmTOHkAd6}4y_rSD#izhZLGKRnn1qUrSlP4*tOZ0FhdNAcXeLi~1;)|r z?>+YPjoc3mL`3Zyw;g>g7WEbr{Q8Z713+CJE}HfSsSHEfoN+ zWTXE5cK7(l!|=S#eemkCxd2(s+QH`2W1dX-^}ZY5uEWL{s;IS}Nwml9pLWz*_53$c zzxv6CP;NUM3K-_MpT2YN7w0Ze*63Aa52g`33)WZSHCX7_T2Hd(Wf#x;5zYYS*t22X zK0_!|?6pT@ou)77LMPOlU|ahahKpbtA@eB%RjZPEwy$nF6&i=hoJ2?~D ziapiVp}!BIjcLx#%JY)(n{=}Ks^%f(&*=vAA|F__K9iM>gPoSiVYl(Pyn40AY*l<; zmw6J%Op#edd2wQs@P|ykHIj2$P9FE*AzgW;7az1_gf&4Lsde8n$VrjhoQ7a~cWBAx;IOco``Wc7&*4T$qWaX3Z^Qbh8d9-K zhKf(l`}iYnlWg^{fW?$2VS%okP`rG)me)Y3#3#F>=R@L-g^va<3^&05k5hf8|H1W0 zdhJALa4*v-TO~@I8?XVbBHfR(j-b9eX;Qis73unSQIOqB3ZYd(0zF*{cq=R^inY&= z!Cn^PWg-pX6HE+tuFEjmZu+jzZPM<8y(=WGJVI~;r3J>*AHhUq@Z1+I*32}-&cNlf zeLV-Zqk)IM#e0*ZS|Q}+S|-BWfsF+f)Od~S=+=>>cB_tS2xW6)o}5YMlGj zxuxD6XA}ccC!_fCp`@RL8@CnIS!>Bkev3mQKBwdqaY@nPVRe(Cp0zH1gn)QnRm0l+ zn5Iw`eS5eOi(B4)pS97eY$Y;LRu-{&_v)*~$u2wh*K^}D5gty@4Y+ii<;Zxm9-Y0x zc6J}9gxXN=1_lnaMs?JXT3zZ0?pHZqSlz))F^q+#K3XS=K21ko2TWDxTxk6Hfc`%z z1jtqHPxb}3S3XaCX_B+H9n9GJ9L+a7dI*bf@6E6llarS>;U&tUxccKJT3fGWJBs7U zm351&jzuf0@($eAhZ4~LQt0C32IA#pB>(mpUw%VwPDI-_)+m{PRxY-;tVPN`ZHKKhdBV8gVGc}~*g%qzL6o|@q zKECoDXmVDi)_O&6OgqoiOc@N>w3#TdA*$oI$4ggoBsMLavd^m0$vDFfW5?>vBjbg@ zUDEcy8)+|MZbcej*zBn}C0}-~-rAZu&|ru-27L=Hdl2E$!B#tIpq2A*zmWTqU!3cg zkJ;7Z;t}YoxnRW&OUp-rT{C}$QO7#yefgMyLO<3Tbr3YpKY32xE@ke6OKY~8lLS&o zKf&SFlWA;NxaFhG1bhd%!9#*q<(3b)IbygkJbD|`Q@CAMydC4PyJc&w*R&%W4hXpj zzygYFX1W$=b-|)gY5c&1&Tc-+Q^!#5glvcHI61J_5;2oercgovtt}alALU_FB^y=* zuzg0bdiPY7q1h&St{n7cMnKu!4GW?M!%>$czOEgx zI0*^gGA1&I|EH=}X199NwdJ6sFc<#~qGI)(H*dW=T30hN2R#ORm2T4glw3!Rg;$0S z$d52)*z2^~Ry40##aLsu93Zo9eOa~*Y#|S8 z(H%W+UnwedD^mr-JH$8fL1hJ#0PF~U+ezw1FhITqDiT}kdBB?S=&VFm(DFV%9SjaZ z?=|l;jvuIsoL%Z5KQ!$?f1JxBpLbgw7mn_EGwkFu$k`3(T4w4TDC> zC}Uac1uCQu9m{}Fl-McN=5}_iXX>FVV_~cPaX!AzLd>dlRb9AbFuAV}t+2hYj|_{L zeZTo>n`vdo1k~9K?mAK~-0*3FW;s5GWOAIH#96oDJhQU8Kmxo1py`J2>rv341boKd zg(|%HtCGB%B)h2vjpUUwLmX~Rps*t3N#k8{$V=2DL`04Bc74hIS74e)ztQDShXAX+ zT-)KCc~-|<+T7Sz{b;-${(Qft1h`~Cv#JgNt4c$g@lIkpTX75rvV!A41*^TA z0B}j+!6Lj3p0^z_XMgazmu=Wye&UIf$f(A}iMM<9D?_QvDF{qgd&^d#50eUn4KsOa z9o4s%66!^4^n=gz;ya3Rb8`uyXyc=Z6XUP|X+W00QbI6fU2Ac0v3ZG&tHuyhj>y|r zgko*Yi$-)+xYPDF)sPkY4R8`@>mtBrNjB&wqUJ94fHT|r^Sd)UL<+BH50+@=I`K*u zGB;3HO~);r)BLJN#4eh)pHu& zWnu9Hk@O*8#jSF9*-)n(3H98OZTy;3-9-3}Va5=YR1(NOo$Pb)Z~%51Fl@E(lOv+K%dueoydlZP4x+( zPE%Xy?L1Sj^|sH37G3ZB;&QOBl`mRK7dom!jPQjY6w@rKua~T_tL@}%THd5r1kVubDled^MO@ZSyY=BxALe%e zBvyXQCvE(@jzYlSMd`&?l~R~RMim4F07AT`#7cpsvC8M#lC&@E7dqqc5?0jbXdO;T zSLR@T_Fht@csm9g@ltO{?o3nIt)UMN&Y@wg!CRZBPkUvckA+6+Yi-*|8)emBMmE+X z032xPhd^LTD;>kSGukqFWpK5`M##9xctv7U09GAJiVlY7>lPW0vEun$ncCRryz=jw z8ZBpS_D1+`N-%a*mM*u}&snYKtWg z5L(YOKcsJYb-_b-QQP`ra7lp0eyBf}SC$x{<{HOCF5uO-Fl349a+;*QugaYQytw-3 zP75mqBlwyFSgf}8Ca1aithXzC=2;vk)qoS_49|yT)~U}%kS)iH6sT@J@h8jbG@%Pt zE={S~qANYq06d}Qyq7V`)KG!7axlWt%a_vGeO14^;Qd95@?D30ep(;(id!Q@Axe=7 zG1i=jD6bw^S)KKf@a2J81HiIaVMA7qElcr76iW#T6(?RbSCLJ#lje*A16O42P|cw3 zjU)a?Ntc0%UH;ei)%+i?{c8DQ|df!(dp zWT$QK1BT48kZO?*&th_=EMy%8`%-Bc*~DD7^vmqUIE0O^C-am`^0XW}YH00rU4FHe(*b*o(JGP?^nUEg)%=E1Lhgj z5Io)9`nB*KdKefB8Tk4DT$=2$V zGLH16_$tr-s#HBDk^71l3%aw>Wf8*LpM$~hGUBM}UEQaG=!r;G?Q+K%RK2aOelI#7_At$`LTBeVAP(NX(BUhx%s z=SB~;TCdYfh&oMOI)MBje#2aaBVRGxUiVJ;<6~hx7-ay7tq#nao|c#IX0(NNyW9I_ zO7con9GK(Xh$UsO&+nQ!1i6K#g}H@+S`Snsqi&~&MQN52GXGJXSDeks^vmYr0N!F@ z%YYr@zE&@9+bdjU`pd+F7D$fn z%)INsC`;OVIXmV|v|{jNv}MKZL$jYh7bZG}cN5zTeXJDv)0>sO#Yj#RjSzggvbs`w z7fBnS7q;GlnZ?q*w`a%_#pI&aq6ASZIX{EPeKT_(nsU%0SFXs(Ha1L5XxBz96~=qt z4G&v#j-lP4E$uxG9K~3^X4(ESMEJnoJrDm~W^~&l3{Ov$+^#%b(uJ$8nuI|c?cPa# z7#q{WJ7`|iX-0PWBU>A4C3U-%FsE;ZH!^7B6|cVN zuhIpE)@~jEZ6fWssHiCMoOjj(U6E5! zTz^3!AwxKP1oiPRmyT{n=cmpudY**r*%McGE3Z9#c>z%yxnM%TcoaQ;94`ru8yM`p zMV1pIJ+vNyp5Q6Yklqi;9?l&8J*hYX$5|Y0Kxl+gExpgkXc`7IYc%v6pVka$EjB>j z)$^x{@7s3}pP-g>N+k!fl`_|?Z8Qtu^eCFh@-3iT?a#s# zc`^HHl<>q~ELDXBMg-8_3rk@n=Ehxo@>h@1+Uf-j9i1{lMPO^m|Kjg6%tOJgRT;IbMv z{{4{_gamfe%s@%N>%+(XeE~;L%g7|J(pPH&XvR^iQ`c3zj=1DxA`te}>J8lPyx}q$ z|Kdm<^1*|)ndQ&2dHux?9{ilG1G&sMz?4<@DrjXdPsfi0T(>L27wJ?y2aI6k#j}YC ztr^##w2F#~)z#IInJ*`#DjcJ2aaC2V_B9uU;|5e*=dpq#$IYaZtM~0&O>KoG=^)kY zU*7ryQ6AWUYx~!k_2@I3n-OE9qn@unjSK#M^iR#a?4Y1(o*V>75soKLOj%MXoxd>` zb5;%sB0qw2oF9D{Zq&9uo#z{38$NeWJkh$suYxmYY+JMjJGeeT1lq&@gloqPM+P43ze z(F=;;3@xuLD|uFJnr5TMlZJo?TTaeZ`)SHaT;xc(gH^ZKPu6O!`+W@jB86Jl2**_X z3D@9j)6o6rw+lSH*%`d6qKpN%6-Gx0z5k?Lg?`}%bPyjrh`ijh3uRZk;&}A%F==pD zpH2mHGJII}>y`laPE>)LYmKi7M z^?m@ElAY?7y0oK@Bw?SXe-ghA4gTU9cGKeF`u66kva?C9l*tB1W8*$=;mj8bMAnBl zZ%iLPB(Kdr5b$ZT+*N!ILTNht($52IHnL!zq3x4liQ38JyPf!PP_t7D6`^9`#g1{} zLJ5LLat4LyWY6~j*rCfFyKZVj7Mkv~51r092YGCX+S$Ao{ExHg-6ruVnVA(YKHUM7 zzq`L5toL58tFv#QwMBD%_(4)l=1SI;o-r#$nEjd9Lk< zj6Of^jc;8T(HySzaNgY7`(g6UB~?{bc>YYjWjK4P(rPJBR)@{@2n*YE2;qEuvn>L# z=i1HBcL|CjU)+xgu)gZ43z#tw>CjorgN@zT6&z||BrxQ72bROJ3X-d<(l2{FObyEnKNL(oBjE2XEqo4|NL=UkF#4^ zHtS!#dUZtelB3(%qmp1U4!D`|&d>E#Kf3OFjeoZKML-rpv)_tbDRt6zR!`588aoBz zK1p;HH(QOh%+RI}2jP>DUuqhi2c6;P!v-!iG)0u+)^#mF$8ADG8C{(^6*Xd~!=WQ` z1gwWi!f^fT;a;PYRFR^>UVGl_IvI?E8c;@g-^}d%{Ilx?>}TZx*ewfTJ^?G*eM>Xn z$Orz7kd(J?Pr50omwobW9bi&MJm~J$CC1$QY9+y#rNc*$Nhf#O>gl})VpsuD6SI^o z;Nca~m8OK>W>NV4+xN=QFy25x{2`Ne%L1?ktkfATjKh%_C@Uof%>Q=3a)yeWpy4vcSDw|t-QZ#6v=1=h%7=(q7n7dji z3+8ARsRv-KZb=~WaO*MWgL-tUFwnEe;GiHY*N|ZCjrqeBcC8z5m1D=m)@EiFyoHl* zEH=M64%p6zvV^3J+DC&d+V#O)MV;CW?W<`p(APm<{KvL0!d=g%vBxCU)C`&i>byvk z=f$+)CBfvrE)wVlz>EY%Ca<2j^~V-2S<#D4Y?Cd==i%37Wo1VQmhk}5kyh78KaBWj z`pmR(;G=p`%f_UxFWn(Q?lF*9V> zx$8HomOGc|@-cZ-ZHoU-9ydBBmVG|*T@;~7#wb%w8ezvBd4gC6zP-o*k?^8e;wB89 z-$28@Od`RS;Mz7@+r{$nts6BKqfL%QsEi9G{U){rNze9U;blnysdzDC z!{H9-g#TtNr@g(<)nM-P=g%V8ue8}(`G;L`cu-Y!jpvj@Z&*a*zSaF*S#*Luedzd~ zcBTpTrxYr)0q!Y_$$4{gXxUbADSlHT9oL(!Y=~>oGL(1u*UXa8i(4mYBg^UNk*f(G ziVNZSJx_KwM!ZXK8%cWf1YVXI(SXM~v{9Q4q?6+%y;hQ(y$Ji0dtB(`)}n}ZlcCzE zZYt$LX6&Tb!E*s)S@{N3iLm}Gr>KCB+DwpwflPAj0kMi+Q3HFbG^b;L#kR6csqDSTHvpf@ zr;`msZ}^K@EA#XYAk=V4G4(7{|Ltr|v)XfBjt{jR65D%kOM-1}i`KT}a8BnrTXM;e z)pwQqd_tDSa1Jhje@j&-cLcOrEY^V}!GQKC6wLi)dd~+F-p`fn= za~S*KmC-MLKA3nAu!5(OlxySeI4oiD*=D#`*ucMcub4wlADgf*y-%_fH34Yyt*98~%J&$>0%{l@q0BXvXMw{I^C z9-hIQ{jCPtKNR*|4gUg4?maR5M3+^|#z@o#ws}(~o|P&$NL`xP`$xhW!5*1<=GBcG z>u(d=(olgHl+B?@^`_fgl`AX1Wgk9zxHMcRTIuMMAPB^|Z1jqria!tr!t4xTn=4fj z#a9CZSKRP6HFr?%EsWefjU_pRa1hF(vMnGvugpFb?EkJ8kc*cCf)*eazPGENyqZv%t<+Q+{CVsBmcykJ`uJ6iK&Z*YL!X0T!2{-{{dJ zw->D&3*(Bc8(b0-rRggxE(YE;?YVpCHJ)#@z-HRc&g)d=8;*@k)9rgV)z#IP=En8$ zSD&iOXm&^XDmA2N($Jb}Tw+ObM{ft9+i70qA^_dBkp4)ScWs=>lDo9bA2YK!Z9fZ% z8#MEg{BQ=$H#k^(bCQpMfffPr>x8JNJ)n@^Hg{DX{Zragzxe*0)Q30yrtq3gCd4h) zLaGE@ZIy}={uklJ#5qM;I6NOW_cKYd^k|@i|UDvrIUrl%1pQ%w z0~TAYQG%!i)~I<uX72Y0{4q@gp(f9zX8u9vOKd-Fv(105P#4-~oWt ztQy^I?&j}3&}zA#jFX2%&phXIJD%Y8a_SjCJ7E+9>XXq~$r`sq`*(BYH&xTKbu z?9LX~M-7d2{$s^;VvXIsL|qpe%wo_vyl`lPIL$d}f(sWMv1y#qBr5qnIj}dTokO~! z9kCounM}8un;6%B@(c@m>XfC`f17#Smb!h_*v=0%2-rHH+u5DHDoISL+C|g;-m;b`*V)2xMLYm~* z=;%<8%-@dxAB(?NHu+{PgfiBm%YRa&8yo$~y_uD6g|^A<>DgUsjWekXq#PC|I>;nS zq#`gT1>QLz=i;f8RC9~zBZNk`ysWJ2-pQl3{YG}z;E7_rL(A!d-ubab2nlcd`}$80$4`Go0~UoT&*WahNeNaoxuYVnefup;?kLIXi=Ho^#@tmjv>9ZyJrAf z#|GF`0Jx>rn`m{eV!ZU#m#io4t5EeEO^-CY_tK@{YTj$W7B@?1Uch2p8-JFo+@QXS zBA4y`qyO<^e+4zDi65!4^E30-|8z#T0eT&t#%09VbwHmcBqUIesu;gH!JpC!!>B*X ztOP-Wj4hh&voRa?)g8M^3aJ0E=9MLQPr5+QY5pI3@Ct!!!14;tH>Z zSd}*?eTl5sl4IkV#nBgEZLLY%7T1j0%5QbrsEkdjM-N2FbEfPe%LDd-ei~iF!;ZW6 z^2@1k*wq3)V{oKw`3ezFR|#5+0b<@zoi4PN^08%T<8O$cO8xCCyr}vy$Pk*(*&dP* zDY$i#YMEE;&WjeNrq6<^Oyq#*OT%gsn|1x%%I&MK1K@dq5FIm1laS2I&JGH$O07Go z7d)9$NYotkE^lwohlEEh4nFoGTHWFo>Fn**HJ0|^xj98e6N7^iW&?!T3_8OnwH3Lz z<=_7^FEl)T$+fbHxte~xPxjOY>n)D z8kpMeX>sY&ePg7?%iRkRsetl0M>7HwCgOmIF9m`rii(QzAB}AK`Da~Mj~a7h|GEJ) z^R=l6w49`5b61PD`jithRMj{7ss7jSO?55UVM~wU3!cl zQaaI*I>X+C!;arP>p;YPt)I?tpQcHeMozWWV=x(fg^Au~a{S+TrMH#irsEyQh25|6 zR}SS^F@3fS;nF4|MV8&s6{#Y-6mT`^!NaGjN_f0?{spzGud9@jwsYo2N9jEDP2Gt9 z4_SxBDqwPwVEw#oj`D(AEoIbJ+JkII-S-vBnhbNWX8#;~=OJq=J}LEMUHo-vp;}Kt z^pT3sQefL6lf}889DN!zzXs%E%Rg4C!k#tyl@)5O--|YJ%A4*;oL?UMSx`u5IMn{D zM+*Fp?j;=Qux&d46xxsbeZ8Ze%YSVMY1Q#V|BEB5T`=TFIc`+$h|k~u;{Ng!`9 ziJYEZc)p%;D?T6??p*=$nGX9p&GjGpUf$Cv1&GvEXeW*LZRAeL_%!|9d-8Se|Akp7 zkA(hn?y3KVozLNzAa;J(WQRm^Nkg!EYDCNPde!i`P1~x<%Ko%oaQF=8*<9t1$|nPb znyfcOKU(DbrMs`siMJO5m@BO>T#vi@9y}}1z9IsA*4g)?Y_+43ii#3pwJWC8M*_pS*>v+KEHu8R`8I;p}+R&zS9nOMCaz-u5hfi8OQj; z^OC`VzljM74_`<5i#I~q$s!PYnBb8kPBo1GZ_)+MtKwz1XWpW}W8?J|F^qi;Vt-Yl z+tU1fmx8`oH=*aa*&GE>q_5A}lpb6s{=OJrYUR=^V{x5=x54CDN0Pbe${(eqkIw6& z8w(8XWbpz9>wHV`H~jmO`ueMx(MJ6_@(V#{$I8G>ryi;vOsj4J>q<|&AamAZANL6k z+az>{{T+;vKS0;lg6_mc(h%SopXh6@OWcijzn&e`pGCzx$k4*2ej=sxiprLIoIR=% zG19$tn`1B+98B&R2v)?IbwB@Qb8C<1=!Yhih`F+Y5#sqZl# zx?9hN(?K~q5B==g@ThKC`=<>cJGlqR$^jy#6d2IduB^e5aR@vgKvmlt#0UG9 zD8%YKi$|Lepp%hcG7ho)c0vQStv5{!XCzCyxn&Qe6p71LGm=P=B}0C&tMEVbGAu{= z@{gDceSLj-AobeA7_N%za|Z{aBv@3fyw$a0ZM&&kOf!&O z{Bz9Z*?Cv9E3PS_)T^nIwO-@kx;m*h1gpxwcz!%}al8W^T`*@kQkVp)^=xU(?G_94 z?r$hr+;g|Ha~Qlg?`2Pze%xd3vAcIk{Xrdoy>zP8=N!vgw#5F0QK}P1R{{gpc8jko z@-6BAJJfYoR#5&4<~PISqFH+B!hDioqfCr~O4=x@OmbmjtlI7ZH^y*81G0Lh!DVyP zqo+eBnltAjfLo-zUb;!UQ30{u&nJ|}p|wmcf*5uWRrsI97a2C3a0depzvPt@b`{AKkwu0ER9aAjl&gC~KSQ-@ya@yE|%E z5WUwNn+)UX#4Ilvzm)6*5zGZ(catPbJ|7L99V0kJOBoJ*9fS3eAL5{OF}n46nRp8d z(eGJg>=?dO6o4Ig{RY$d<_$o*!`~~WmQGJCSW=(o<#k3zvPb`*uY9BWmVU(Bw*!t! zT1${*(VAIlcH{>=2Nm@7+V!piL`MsS@J}xY4kIgOkQZo93mGV9BvY6q6H(sKlslvC@^1q~=NJT9OSw(*s?;W>cRgOOAE~g; zWCW<^e@%^)UWz|EMi?udcUW+2;=4Z2Lm|L?K7Mo-i);7ZG$@Fns7>JQ_qu>>!dZ<~ z+)Uf5*n;z3BiByS!auM#<2Qr<24y$mevHm}`&Rd-q(4Kw_;g3bcgO~?ovJj&Z7_?m zY+)J*zPElOym8Iqa zXZ!p_$_G2DW}I*pW-9T0LM5c|-wZX@*#jA0!$km}K0=jG&!tZzUjMHpTz0bL>H?`8n7Z zh(|lJ6B?Pz=)~-Z5*M;lL3>bD^;&ybayP#@=)b8tO5JJ{k}?+ekKP|7A@-}nX+C;h2UVz!`qFRQ!1g-nkLAWSM#}!NT1x;f}{Mg zW=LF)+^a6gSB$m(!**10Tk974kl^8&GAQ!WzF&WRmfR_6Z{JoR#Cg9sYY3V7asogG z^X$#bQ7vDRWhNx7rpp&R=ugd%kzBcix(G*OtL@TUu(H$Y*(TPV%1-Za!g>9<32u#m^4S8(>^?K z;cB11w4ioKpZd32071cp>sC2D=o>(CD9_FPd<}1Cn_jwG^I*yLy+Z}G1x?pA!5Rg>!1dHzTuAQJ-4ibKG+oDnWyV$#qQ0fsZE z#)Ff@rc#ILrHAzO^|zbD)Txeu)*%2W*izOv%;y-%;mlT?Y?iVPC;b}UUL~N~s&_on zR@*i=R_gqdN2(HN2Trwdc8$}cul~s*`^RmPdl`_ykI#bcgrrDT*jLx2HT~pmeB;h@ z$;!X_`NK>jOTjp)u?#-0I9W zc+A%J+oo^*;s2m#-H*K|u0*fLSfF#zjqA%YiUAT}v!DT4!5N{UAn3*3tDfVw@D#{a ziaRdDs+;)rj$J<_p6@&qj$Aq=RkvifI5E`|6YfF?t{wX01|5Kvxx(f}L!n>y>|gBr z!7LnJK8}xvNUIr?jB`JVqK&OWt*rboU)w+KdOo(nGC1tKah6J{n7dz+moaor_q%v3 zt)qn;thc_~SJvZbAzvTLf8oaW{x8ti{~aFLXEVzxP|8QC|jkghhd_>qE}I0LpjKOM2HD$`l2y+;LIq={^@ zP3%jwYEf7`CE7VMV#P3KtOivftfNf!=U*%h;WH$=rf z>E#ZQVuGnhQT~|F8{2z1tE)^4#H~QPRjNk3L*BSN#m&d3ESIilrv!bd=gmo8(c)dx zV$YAoBajCb*%UYY7yk8UlGz}rQ?PVo;l%VFgySKuue!l%?X7;*+1VMN8M>|%_>$>Q zM@lF{3om2O@k@ePb%j1mg6@$Ldttd&n=(J2(Bk=Kx6rh@e-k2i*byiFM;$0uSr@4< zVHPXw3lNu83$PY`vbT1A!U8Anm*1SFC1wOF)Xrosb*NccmFDDiUV?{6vkshaPpN`* ziVJ2d!Ykfb87m|nDGBS%&UW)~UiDxK?jNzscX#vK(&;V5mp%F4zo}qvgzAvdA^)eH zy^>&A1z9UVJ0AB5b-(F%N|fdc+X_Eb?&Vn!(^D4`Bdt2q07}%|AQfXM;7PHLr9@(MsHWv;2ia5pPAV zbj{3^vma;`(8en^C9rvW|LAXoY}kMY_^OMR29wqPdKT_~2XIBwlSl zd8yLF$&`L1P>C=mH~lfXMP)in3hkjb@OYFk=KZO@RjDBzK#S#RQFYg_(XXsb&WIH8 zjGE4kE*ka8EcJ>zwMYLKid;ZZu?@Sx&7uZ ztPg#Y#eg;z6p0V11+a515npCNMm~j4zv4XLN^IfNogU1HZ$nv3By>ZznkdVb(*ntSn-rB_x2lyK25M6e{ za*Gh5QB3}Vg6BKWDGXx<(^56nZrxCRzwRwXx*?&iuGw|-{3-7B`#e5SQD!E`j{DtM zoUsUlK~;PO6#(-Y8yjEn<=AFxMP3^pS^kJev#sVDpAGVrfyYnr{#hneVGVe@pp`pT zBP+i0n|B+mdP(`3PREKLjm9bwghSR|2S%M+x2HHjUQ9Ug{Ce3RmwwC;LLwv9m!o11 z#Dci_)6}VgdQ~w&L861=_2~R-x5n%PBr4uup1}JzJhYQL^`w*Iv$C=j_i^>r{0a?_ zcfsqCY{P75kkV<%nwOU^i^@u?nkJbX%{$bQhzRS&#!7R;dyCuU*FL@@^Y((}h%gAP z;L??oMj2XpJsN#|sC@xP3%H#9MZ|p)~2O{pQ;x|(D%jkJX_(HO8uo4fisj1PK=2+g|=$hB-|Et zIzKn_x%gA@#XSalx)g^DB(zp%^@1PRZ_P8vu^$HUc_EI;G3>VO83}4p@y4&c&9sxV z$2t|O`DCnR)*JJh4z$CGpR^;1!vWV7RlGz?=Kp<_uEjm;%pd*&&1v#>Z(#bKK1pqK z-pxny=V*luT&S>P_#`+B{TE+ok>rHuWng`*DDb;wjPZoWQo z#2H{>i1OJP*MS!&pj|i5dXgry3D^L{zE%3n)I!Ch4~1^1u$ymPgCA{vd=q8Yw5TSg z8EW&>{S)5ftxW*^KRj~WEJ=&;K)eC=PH$~4i2u7^UGvVj0XEprfWc{t;iYZKm1 z(k@?K%E+oc35icr*yKG)Fs#wq^7nHEFkd^gN?EjJ(?Q~JO_zw~mh*YV=kzKN>OB6rV665O>dVkY_x}ZFZTHjAUCsBkV+D<`?3&|FZGIaf>_o+^| zt%yi5YxPw$gQyk*0=oQ&Qh`qXohS$a;Rt?l7Lp7jz z4fSCT|5-`Rm8w$LGSTcP1;#3F<_#7gK)L;E=HLZWL zSR4Z>HGA4ng>zYgYiopUq-bqx0iLpcBCK!n;66_qXL!gR>)0x#ZjQnxbItznq?QFd z1(A#vTN(_xX%M?_b>GYa`Qfe&yxxz1|_;Ni$l-OZ2l5a zrbjLeLX!&tVlAQ*_SF5!R&kFA5a21}X()b>zuELVeebNJQks04dNNmJ<--shn>r); zrt>`Xx5~d_n#Xu^%|1QaG`o9KhgXlz>HLvun(mD;t@dasSDfPt=VWMlq~%0}rP;Mh ze!weUY}22t7*lp`ajlT00b;za8U2lMvzRou^u0F-0k(#%vI)%4;`@C9EQRjiSQ zvcL9FO{ga`PpA-!4qs;vmFxKcanByBzGi$}d5t38baRrgacMGc zDByKPYNW_87Lm1lM&9m%b?{^k>H+(Kl20pRL~DnFPak<~=v$PpQl^k$?%+^v&CxVn zU@;cDaXKSpQh7>pr)^l6$J(f_i-nC%v7n*QQcDu-X+=dv2IdLI^J#;^me-v3_W58) zNwAmPpo-gUCc+_tGZ99wguX!JYadzYoa}UhTim4%{KUnUQE^!Xla;qlwrA+}#3>6b zE_85ABA~QJPbV_9<*=|N19b6}Azr*ig~92VnQ=8UHcl&SS-YEl!rhPnp-Pz5e?nRoJgO)?h&BZ@~ zS&l{ay_vPv{?d=-B_>g@A&GU4M~u)35AvYZWDo@}UsNzua= zhXa3Bu(?hl!xnt1ntNxdlM#0Cs*6B&DL87ma`?( zRUo0!p%a3(=9Pt^+puUDtTkxNW3VLvb6`C1YG@=*HHdwAgOxl8+T-Ai<5AG2*A zA8JESj=D0!>8?}W%O1&w={oGNF|8)J4Ii>uRglhE?XIQAACbQbKjUx~%h>A4)Ku$6 z3_lT{sJ2FKX}%l@7HE08xR|jL$W#w!9w1b1<{4p$uZVTm$kbUdTneogb(pMHTZ5|| z(XPXB;$*<3rKLeDia4*c@3JJJlhK9>*bR>ak@8okK$1saRH@ z{y3(+p+=ts`t<2!vShrFVow8?wzhYCB8Z+4MjgxOhhc;pwl$c{Lbv@0DR8*on6j8A z#&-fu1Xby79hgs*4BN`_Ft5z@*0yhU>oY`;{B{nzpeV#HQ;o#-{(DNkv`pP8U8}|T zkviB)zM^M_4`~ADz3S*)pOGk~p#eWV1=DiU)TX{Z$6qJh5ZtR$Y-9PXiOZbYJHEW8 ze>dD{IKzRJoGEhPoJ{8-Zln&3wE$a^muTtuKv=*!hudfW9t=N|)o_M6xp9-i{&!ob z?;Wlj0@c$jB!ur%bi5IqByanwCKMS@K7)JgCYLNp42OE%0qxrL#oz79-_PK#+0jv?^O)K;(szC;H%sWgWeY`Ni=L4ZPyhGw*+yT8xj&H!rN4^xN{Pq z6Ji=6JyyHxP}Tl3b$Np=21c*^2=O?N&d=}pDSs-qo^2SrPnydybkPW1e11^OTi-2e zYSY690bLr&d&4NRLYFIJ!!3K+U8!=53h3hB?xm%s2HZ*TiP#{33e3rKe4mcsvd2py zHEAAPO?h*Ph;t{~1q^ZW;WPQpQL1R;2o)(xyg8x3ypf^U{aL*`vj)BDB&N)GYC6Wv zizp~AJ~cc%oE}1(amNp3L@9VpYO8vFc)AA5BeiHzHuoC%`lF%*w9d=G)+0{K``A4S zbIb@=sOV?1)@ew2jEKdc|KiLUhgUE98{PY!r}<&V&lR}M3S;T0^o=hu33W#BlBAaB zPWFuJUSwnS6}U?<8Acz;|G1ZbA+3T zFT$6)BOpCiZJ4X@p2%pcv|hACDNVWAKHRTg8LYJQUOhd?qzw;o4EM9G-p<7zA&+s5 zeO~oC!tP4OMK0c}q1}MD#)PYl7T$*F5jQPW=w(*rsOsh*h#q_(Gv;--m5E2s)h^IiH^fZHY4J3_5D7Bq zOLmQ1^isShLct-;z(1_~jcEYhLzguXJK-`dvz(Kgn?Zlh37UqSx9l)3*j%;7U0)Er zza`j>ApiAO()ln}T8^R5+O}gTNrplYlmUkx!`gGAJEjxr9PN?O_T`vf?)E3-X)k9u zg>fwPQr_N~QHf*8`R>2aXcFOX!Z9T3>l0(%S9$|;A~rSwt1SoDws=wH=pv4o`P%mj zpnT`YhL4qf5kI9zlDiY?h&SjSD#s2wSI$%j_}0)yzi>ARcH!DikwJDmM?~BT>3tp( zH(LV3s%&jINu=M1SoR{E(wVD}!EPOz`7Q9>Xi zjq1jHZia@@>V41Ez_tXanYp2QUU-z_mLE|qE_&w-rks}5*hf)a zbFj;!VbybkgCV{%y1xcs!e(xdKwniEIoeE}@TL&>=0i7;MlSsfIyI0** zeyV@jW-#-%8&xs(;`Bm`>RHZ)%b-`qQ%`gGXozu6D`P9+hUrpz5N_>ygGV@gW}>O} z83Gw573`dj5Mu~uqgoo>m-=@HFE>c^1Q@p#PS!b-W|w)&G)`+WVr+g9U+70i9MlNK zo^h`F6UsqN{XP>L9)TRUpj859kHbZ;60<_Opo17v+L#+AYL$}*O2axau?hZz8RP+x zC~hH^eU1kVk_oEs`LK{Xp)isH7%q&%brJE}Pd#X1Ck)9b2V7d`>&hr4*PanD9FY^Q zK8W;;e7D6v49B-$9)G&D@;RnjDPV4CLHULC-T<}Y&@eCN!P=8rxV!#VR%d*hm;l~+ zarRqPkE$s#V$CHN)hu77P#B8{vVA)b^Z<>OwgQla?WI;cr zTT>16eEgW(?CeYycmhJUuO2KclOHK2b*6B@u)sdZVfKRK?LgQ?MDDdzLHh%4%>nDIakHLA(2 zX?L9K07cP_mSl95l}JgJ#7&Sk)cDWXei>Q1NT&8mw1mGY*8oyLt-q@s6f?wY!=Z7; zDqKZCmPx+~06yaa$@c4uZD0K*QnUV1AHTjltO>629`3rHvldb&4h05pTNybf+OaU` z*_4>AQE1Q1_(aatL*s4L7E1oA9o*gu7@OA_sYR(g$$aIb5nB42J!o@7mp@i1*>#Pf z=|805nJ&2Bn*6ZC=^Fen;;_dIRd-}8x=VYo+V@s(%XqEz^a(Fv(MbZbFkMgoEj~ja|5f0m7;z zIDDO&Nn}hEy-_uY+DKmb_|jdnJ6+icRZVU1K$eJELY7XPG_#ug@+e(5Ho><7E;_W3 z@JC*9J^=g^>c+juEr3$jI6xqfY69BMR9WLLm^BAe_cPpb@FBXOo7c?ddQfA`kr)G4 zGLh+P)@!sr7>w)b5gvp~=3yid(;%o>i)uw64@!C9veL(@z4f1nYq@4#AN5PpA6K*w z)4qOpcBLWAuf18a^Am-ype7>DSG`&Klg@TSdWntc@O&NG$T4NJ+DGSN_3THEa0Bjz zy9A8WlfkO7N210;v2Xb6#>j^b4Yca^YAZvxn%yPxD%PmuY6fETzX-6C7%}3A)K9xE z=KUk#m^k0$yu{5bEwf0?m70{4p1fC;UcHx7KlyGJ}KkHoj9FT6(8@ncK|V2M-WFsKc6P` ze0n+VJEURP7LXVYQyBGOx^r2BMWEr40=4;jI4V3UaonqgvNu8edA@rJflP$~fB6LC z^m@@HQc)-sT4fW5j*|oj1_l~yZH^0{&!76E7)o%%L@xe28Q+A(G%bHdx~?x~?4q#} zx31JlXrlVIMl=v3^DOA3DLuo?!68dAYF1NNBl1d~U()vSU+UYM~ufl8O{1JI3no3czP@h-CN7{UIUy_+9410{PaL5=- zrt^*1lWJkMj0@ffOd_=V&{Bn$`MGeG7`;I;$B7kyjuP-%f&>2Cw3mBS=_`-jV`^!c zJ`IYvrtjaRn-jKG$$K>+g2?DC?srL+q&sCM%SCU~fi;s;WVtaW$e(;GXI~!>R#if9 zsEQ5T98D!!tvY~OKP^|{FD(#@q#s=XTu#IG$kwH~G6k+459Db;sTnOy%`?PCX3uWs z@WeW{-G;*z?(LL}7V3U0*#;GF?3?+$lWpS}Z?FbsKZ^x$`!IFag7fr7L^r zhcl^&l|zgVs(I}*>zn8T544VG#lgiT&0=V17|wW%JWo_!UlF3eomTW{pHTZTGXAX=0Pnmy$&5OmeXV=7z`QkC zF=}q!3dGY5So7k*@`Y&3lgVg@t#y(tsP$8q7Gr)pEV?WIjC0-jmT+e8$EiG}prPj> zl#!Fk$g#U82HT7$G-ruj@Mggrzmn3f(q?inpU21Iiq*G=1_xf6$N6H&#Rr6|A#m6J z=J%VdhupDG8ESv9Y2kxPSl2Cf`c)P<3`ie>#TbGfw!! zIoY*6C4F<6=|3^A!b^h8X@}0KwWiRrx9LxWn}WMEp+MufVPB)5q16n5?%!2fuuiKy zq_}-o|B1xNCmlnLlo<~Jq^*bT>|$3|CAmS=!pFsq9^R92UNP7?T7Elj%@7=yvGG<8 z*T-}EMg&e3ntd9%xo}SST(r%#rWE&y`&Gb1H3 zL`U@;Nqzg@$CzWu%C~123j+oABjvWq1%^jvH_6hoQ0%tbh=rQ`d4r{f1vYnPWn9{g zDX^SUVIXiFqeC31tkES1Vhn-sENf-y`lf6@y=NOY8vxo4NM<$_mdb+7941g>f2%`X z-R5lgXuukBzL~ z^|-)&TUJF0)szM-vtxa8c9T2UF8I@~Fa8*m$D4nmWexm(OsphtwNAh55iP}&T*c;E z*>>>!`lvvi_31q2t$QaHM#qGP{k`{%F?s2xjgtnmEzTE;L&u(w-7BC?fd)^?#ZGUG z@f9^M={BJ{G&}Cyk4cs^Ogqz+irCKei~niYz4b4mUmxt*CEELMBICnJfeHMlMoLFw z_fAk&G|qPTP&N95xDFF=Wwq296|EZcY#eYDX_B^$cWhgsUvPx_Mre{z0gb!%l2%w; zT-;Z+2d&TpLr1%|j5Fr(@+KsfFMNh%z4hYZ(n{aiTNv$u0w1Pir#5slLn>Yf6Q~F9 z4gYUDnZD;GSTjPa!-HHI-1YD?$vGL%g^G-gy}ZKO6GDhN+CQARH_pAf{{da8xi-BH)Wo;iTG0a~dmH&Y~@L^zar357myy zqe`f%U>iS8uooW$k2fCJwaZiK+m63##&|%>>FzZ7&U^QD2MP=^A&V9nD#JciA)TL_ zwfwv};oB0cpQ4}`Ncu&&K_)O3&&OXCUVYG75mp%bevix(|KtZ>$5^kL>hUJ?+Sf;l ze6^Osk4&IGzW=A@XxD$#hVA)}z5|E=@`^}NP!`2Qd)=uFi6^1+gw|c)fZL7%TVM*in1q(wZ=c8DD>9^#{H^W9PfSvj$B2cc6qpxer+1ph-K2kSY4@m9 z?Lm)}l$77srWn4_-+j&Ofe?|OIo>0!D=(cuoZ?o{UVIMHxyWO9=2Mmw4KXBDHEKKxkKaWfV z{M+u&P4o4&~ zlGwNR5xw|Bh`qt*MQYUzorEBtjJh{PZrhWk!ABIHBTXXbU$6Uv!UhJ@wH6i<9Cy0B zG@q>XS^B%TjjEfRHR`IRrCYWeg|K;OM;5-PPJSEr=X`XuTwE(z7YrA2ex8-d-6CtT zUlYTkCfTZA8-Pu2e(yba&c8?-F4>Jx>`nK`dj4?#ks6-W^Vaf9%isN^66Qx*4B)PP z%fgp;^zLKVlkaN;hcm!%!EOY`lQkK|a;I${L}kO~N;+02s&O^fcAh5uVl4Ch@Z7^v z;L@@(`7qV5!j%-xR5ANKH6SuPQLK zt4X@mW-x3_ieO@^@4R_nRl@)EXeqzH+giOY%#TPCPk*%}zWM1K66MHvOUKoDI`aSk z{EThYDQhQ2{K%=Dwjaz@qeB8zfSx=apK}H>39pv5o4yPD(cf$yz?rsVtW}%@p$X^M%ioU zg1zHgIbi&6N{Z1@p_H}y-8v0_>@wvFkjQj9{M|r@bb9#DuU^p+sqHMf*J#%DlW~NaIji*Q#ea2oKr^hL>En_Kl9@TXX>ts;pJJ1L} z`QW4n`T!}IwnlQd2tPQX;YMu4+j8@=p%YJ)k|nb-i%1-o#=mgGE^Sf8C#YArXr@4u zhQj-Q%xUuIV2Y)3PU;s1(^|bql`a6XciYT;n63%ACcZ%`Q{HanQ>z!BjIzta`kssS z4ZTZa4FC&YrikmE{~LW zVdlkw@hJ3~n5vdzIMXPus*2EB>-~Q9OghWkDU97e0a?+rZMo|e?=u|Wzkum&w9j&Y1J+7R0Ptn z5w$60d)_Y`xViHSeILg7If<>C?c$sF*F@?e8fl24a3hG7ymQ(n`g->ucPk>NevZIj zYKbM@k%^vt68Yu12|gC#m1DHBxfSiqvWulvLK_(r1pJ_wd1a8^k-m&{4}YwR0EdC; zEnTOqsqd)k2|t}b=})7WeFlBlJ9!cwv_r<%;|8iEJD15hUSED%=*Kpn(uIy`QvmFI zM$sRy0LTrDn2f4gum7!qjzP>!$)O4JDwqP7#EGUpHkUJtT^Pi`L@nDg6I(VOhci9k zDIxPu`&z<_g3*)0=R+OzDX<$T&GngbTgU#~>GK8HT}IVRkJhKHZTds@PD3ciYfT|W zUI^5JrtcMf3iJjiY*IaJiovZ}zOW^KKArP+&h_0(KJrs@V-ti<)KZ1q(&R}uVuWkF zX&!w7M*GkcC*jB7tP80Mx#+CDIkqv2E-)weLDDd^(bL*>$DWGYAN=sqF%(CFg`^=n z_PLrzQeTno$IUf)Z2t)kS^@=pFzMrjW{%MPp)(Dju24SljB>H3^2S|_5RSm*OtofdiWhP(xp#OBz zNIy!K^<*>{N!a{L&53lgi8KDh`>bSR9XwI2npuQ>>LsB46fbS$Kdf;p>M^0#=W<@| z0b&>?@=Fm22a!PzExVkr#qO#o17shDQ|s#yOqO;V%WCK)SYeGg(Su0(d>gZ{w6v??KQD%xZiO%3a;_U$l*k6#_xSw~714b}J!Zh9SYNAM5Z0V=L@xW#i|X1^X&WJ;(Sy*tZpa z(fl~cl1M>0`sj0_=I?9L7=m)vK=jPPJrEu=w={j`v>VfR@0^Q|&*BZcj6egiY3u#{j$3}KG#IC%!tj%y>Kgg2ilt?` za>0r~g1qrgluVO=;GYS0>u+YQ74^RnSu3WpDG42oI;iTGJJghO%~rbi~iIv?7eub{Ru z^LSy1R_8&9#Bk*I?|z+WH{d*HoDByo1|frLsGDqj$+wIU$lgvqjG;ZvcX!P-Wl0Pz z9}fn?LbGUXK1pX2omqWzOO8KUFDwp~9n4OJT}5At@j+B*6D_vnfkjzE)LNpPvdfZK zSLCcLbYZv5hu|C~#&dxp+N(cm>2gQpdyL4Dii+E0RJfnPv7j4Aj02+UuYNsl06PCg zgN|`rtJYe9;fMNYFoM_E`blJD+4dK|3`Yd#=L8>rERh;TE92Lc?i|>p2Mq^G;4+3) z@+3f!vzD7|ewY#NzRC%Lv16laQ4%kzgqQ;B8KCCCVu<+^mC26#hb;Dj?X{gHnD_IR zBF(2Bq${tEC&4bHc3bCne0ix(9gs68)Y`-IUBbdbw`W#*#eZ`|e(ifYSbAwL?fJ^5 zlbggCiE&RB@(w$&_T*FfFh76s`sG#q@yRcgK_%vbhlm4{@l2sq)(YeFZ0YRnnc~PT zx^wRbQ_cKfghEMqdCzh>dM4HfhJa1faL^>pt-KC5>~2zK1#i2@-g@neeQIEwMm-_v411ya;A6jlmeIcJMnsoizEnW6v2BP1gmuUKpnV+`xv@ zSKrdjRqezwljT61XZrY-yB#oIpdaw401Y74=leZbvFD4hA&X<$MU$%}!sg=QBKs~P zP&o7xXKXzWc^!G{p^E{dC!@@*ta9>C$yqDl%7WczD-EcVF zP;Z!(z|XeOSe}icOV9S~pPP;KL3KH!Hg!3qB!#YnE>L4I>tMPzJ(azc8%+Nc1y!>% zv2Ts`H5PAJgeIWu0kq<-wSFc0OAur|!<~XXz0HVM+s^Cr%wn>sYW$pM+z-Jp3-VH? zhjF+pmOE70Tk7E${iV&>9UUbAhO;-82l48UKax$h!V@<)egngoxHKSaa|B@FUZG=t zr0{Xea;NMzCh4UuM1|>uT^KPivzk;-&IvzX6j`}&X}k>GAZ71g3vtI~!eW9}F;QK|0brDJ8n{N@=XA~$9$RiklSj2es zOUS2SJO>$r%Ah>gPm@+_5-h zic`$qqT92NwSqe;8rGMqgEwqF+-4?OMY>+LY4Ufq4+S)L6;-LJsE)dDC=T%Z*R*OKnn z(uaqK8y1$8>B~lHc!hD+Oma0j5Lr=8+zsPIaae;$)v}yI0wk%0Ug?5;`bM`7>}4Bf zg|)ln1=mhCR9PAZi+sBW@9r>$)iQ1Adn|P{G z?9<&pKAetJUnn8`PS13Tj=b&nR2{sRdKP8d;n|0KNV+>;d00?Tr5;sUr9`IaytM7` zFX7)7D^|&IEN@A|u->i6%pU5%^M5jqoN3Jp?D7!t#hw5m&8&U2oN1ujuGyQsCDQRftOLSWhCJ@$U2W>Qn;Ai0ah>^)HgliS_?#K;TpU*b?JOLvMs&2)f-HLfjW zwwXjMK_V8|VGZ-IVnm4eSP>=PyT%&>3uEp>&qEdlR0IVD)0HFiIUGF5gIZR-%I#~B z1g|2;{rl8Opo+e_09vq`6SF9s1zLWT7ev5#Q`ceJ+k`A`oAOfa*wa?*xk>U4|8nu9 zAE&q1wM`j}7@M@x8IU@^Gw&SCtTIj<3azO2C7cxSyBoOFpXY(jVhxfCBa$$!jp+J% z$(T6*Fjr+ z(#wt32X&T<4+~)--H@e8KPdvQ;?eKoeG zhU8yOnJ0jvn;pZ#5C_Cmm2~40dj9Rm?1UO~Bj)QhMUgTBlTe$MC|_^1L}s~>-;Lq|1sJGpe=BMbcW-Y>Fe8$mVRVgcR@Ejk{3 zJ-jh(ZwYvgtb{Wckdo;t)3f}FIY+#xtcgdu0(~!?S^65xWyb(VTc-GF0PWlRsYyr0 z9vt_S7y-i-9Ghm!B^9-7y zIf@=`B=_0lZM&NsX%%rp#%P=7Qv#eh%)-ao;5u!#_QFIN)JnlNs{~52rDeKjls0V7 zzCy#~99axQ_+d-{a)k!cAYzW)Aj@?%tx=O(5hC6LdBx!9Jb#Kh0xtX-T0-w9&s z(_dsRJn4XG$X(!cY){$m>$o)Ko+OF5{-u<$h8ewzQRTWdIkNXP~pV(=n z5l|yJ2h1+10~yADr%GJRWLj4#p=&={j$&?g z$Eap`exaZyNjlaE-~z%yy{7xj7$%)}=2S;s1qTaNXkwz`JvUbul5?-P%ZPc%4XMr@ zi(vpU!Hn zv$cFlRdv0Km#_T&8S013Uzz*z*Yv~Fu5yNtE4kwVAqs6nmt%!VXAVi-bIXo5n2??Q z<8Z!eVAp|Bg8HWqFSW0NHTYyatgq+^+`|Oya#h+t5k+(H4v>wkxzq4;8J-*^9N2O2 zPr0Q(v$7n1KPHkm*}wayn_EJ9wfjkJ`QKy`#Z?zcO5w|5#bsq3Q=^pnr*}lGMpWlT zl@DjPHNBa9^P6Jxs<^wc1Ybke;El!Zq04)PoMHWqS?}m}5&@pg&vzZwq6cOdR-E7K zBWlmP_gQ7-w)amCJ9J&ub9391mF?Jny1A^&CI5*~)O6jsg~syo!zG>MJLk0bSfgex zDxhN#7{zb{{);#79Q`>)V~VoJ`SX}9vp5naDrzq&)$W4pOL#=p{Ix%duWevppJ~+I z&&vxg7eej`?d2CvKoRq%mW2NO{7u`Pjn__jQR0%SE87B}M2;Rfbm)-HDB*2qH=nyw z`YUbLxr^L{o01f!Jnv8 z316bT|n$VoddkkOhpURkl=gyi{S3Ml_C zU)F{e+qdS&rGNYDa!H9$NGZ9ZYvS$CINyn%?LDlYKhMZ*Y(B6j9T6DXy*G((1Z8YrxJI_;0K0-0TUnt`&^-_4R0U*zT<5Eq|(G*8&iTaw(d zM|r(18no%cD_iC97b5SdtYWmL5SI7D) zLDCgZrVXY@Ekb}X4jncJ41mv?^Qb3T=A+mAodfl>TenDdVJgP#7X78F+5|+#>b~VI zs?P*xgmu<$o)z)$*b`fC`0jj0IG_7mp#Cb@FZ@nnWAib45cdihYblzb46?Pc$!%>F z_b?WFUsB&zj7A&aCb#?LN=U9gOVPhE~Zc)uh){gs2GQ=$*~y>f-?G3`I?>O$}Q`(cb&X}qDmyffmt zD2VB2`mf;NBdT@tDhr8LBoo`mZ zDdb|$=Z)0`ZgL|hYs`OndotqYr>9eoh*$$JNEaIeygKhXdKh<@Zl?mJDYH0Z~#FAac5tf zR`b;7#l(J$(c46M(G*5{I8OKS0IhSn5|01r?6QMN^PMBQ22bKjN`zw*j}}>0x#6j% zZ+<;>KU-I0Gby_Knwd%IVl&AA$BopIaYkmGp6ImPDk zly?r#lM|NdE5&C{-%rRpq;caiAETNg%B>EMksgzAT@Nl-EasVDU(GBE`mz?457cvSZCnXGG*To1dSEU( zGF_)0e2enw*Ijp3l#M5j5(MCXI^}zkM3O?gpOC*0?-DWt{XhL4BC7dvY(@FbEtYDCn3VA`oz_tPpwGrWjslKaT1$GP zqoY6V3iWkNG9kfqM;S{dq+5Lxd!C=QU5`mlAasXyg-;v{Nf=-KGcaOSP`o7MI=yc1 zE?29OYpmitA59F0sJ6@eJts}I?)evjy&cv%qJUPr|MXQNh~nx0ZXF^c;oKht(No{` zV!Wp0*C*6?x+dm?A6|TDc<5JwX~3PoJ*jlLEN-wSK^-Sf{QaY0)(d-EyT@xTaW|Z; zlb%MOy9^r`&ACezyc;Ixeyi~g^?Xi5WO#Lj+#URrxGyuo0mVAcAAS3TxXZfT3RUpG z{NS%rSiA9>XCE3Su@P!IG4#~h^7Cr}LeibFd6c418`dD;R>LVZK3HGWZ&HXV$+9Bp zPVjHJqWgB;FmrfNADc;(mX@9utkCKjD?azQWb5(&M&4gXwYj|Qqd0AMOATm?72hrH zQe4}j!7aEH*WeC;wzN>(-Q9z`6?c~aK}vB6t^tx0+Py#DcklOI=Y0P->nG>TT3Nu8 zhnacqx$o<~u9?Xs=*b}xRtb!~S!&>t5-hFbBOzFnTN769my&rw-NdPNHk6lNQgR1F z?3~Q{#G{HHh2XT{4HYu==B{_b z<)5)j0$6}6*BxLk#F&GK+x9|~K7a^g)uDde=}fsNsKws%@~1cx^7>viU=X9s>Z-MU zXVbfIC8w!am9yW(KEm+vV*3vC3yE+2>?|Ft$~>ooGrj`Z+^^_0s&YiTMgQX?doE^R z-U@mso1(?W96Ec)GS@z)DrK$}{{hE!b1HYVn!wu3=m3VDKn0|qQ%+3*HLm>aC5*XN zb(WgJl$KUjG1K?HH{%SqJ36i#jFbIbP5bz^>mFH`IMjZ-lidRO&1E?LraiocJ-)^+ zV)|-_nAKpVn~wTxE~)Uh{ao4at);DgAd052)6$mUwTavh0~-`sY%n))hXG~xJq&dH zheL7uMY4tuKEjhw9X$G8*;OqHsEqajQyOm6xqq3U!yr}2=~%5o?e>NV z9V7D{jFZ6a(u&>XEW7~l>FMcAQ#m|0*apWbgpkCHaI7MyB&GW(r3uWohXs#>oWKd! zb$I<(OJEUo3iBHRjVAYA@Yr<6nBL$5DXpa2M!m!F4quB4^dRF+5jCu>LZ`gLHnSM+ zCOQ4^80sz!5foNRWXDNBoZNnM(C5K{_KM0<3RACYRXoDkjg|8KqS7jeKcvA)MQ4MK zg{3o7VNq$WWi!gvuK7=WBO>^kpox$Tc0)IOZGu*OU|85Y9tr381Bc{pD-vvXW%guw z>gOFLToo0K#>N^gLhw&+`(pwsoB3dLEJs*;>0Bgvw`4`A9NyqFH#YxmXJ^Rl1OpFB ze~o$8bD_Q@c3zIlwg$)fu>8S)E|GZ5dpfiv>fJjrt*qVf2bo-JyktXZ6rQ&xJdqWqgOfo?9i;HS5$Y;2#zooWpYlA&i87s zQyz*ptY#RBvTgG|Kc3yQDw@4?ER>9t=J&y_=L=j->sDfs;_+s`VO#&I{(&ay(GG_^ zX;)j0Of^f#sGCK!$Hkv#;M3}H#CWmJu4Xp4J>gY&-h@QG=P0% zsEsTQ3^}!L=msI!4>`*gBXq?F_OK?JxTR-W#CIAtU%Q~lSJxO?&O0bQ=|HZ|j-qz? zujw#sP*BbJbl+3>87e^0o^n2jS7K|u;^4?Zees09I}G72JjvXZZ=PoXZL;1C*GL-KzD`O`hd-#lMREeQSW0lYmvM(f3*je zi#H-b?Q|4qu3?4-Kncml_|#$tD&#aLxeqhy@!9@jhC`Z&_to>MsX&)DD65o_JK}6> z)q!uAnl3WZ%j+JnhU|GnU_@Re#~ZP%)kuy3f~>Fi-hy?>&`$jkUqLw7XVK>gl*Qy* z4d(e63lU(++W_cJgpppH{sjEa&JYg~^tNU^s=WccYp(u>+tS6Y(X@<>B z(&^J+zx0|5qbH`Ux78hl5F&rtWE+>&dCFl|r{ZDtQLb3=`b}A3g|hW!+L154a= z0vkK9vodI_Px{f95M`C&BIYbK-7J>uaW?3n!CPDZHhuqmD{Sit;mRlKB}#`2b0z(f zi0UB6A`=q)9NR>=;T7(kubm{HgJ0CY=^V;N2T9bT*>b4j~6e35e@uf-ppoY zO5$2*F3{_tXl8O|2m15N>q zvNF7-FJx@yf5^(=Q>vc?2DXLz7D~dc`Z^{gN3<+Aj&eAwVUHoYpGx)rEG`B;8>=Q^ zq3R^5W+4mkgg%@{?)hh0;2%fg9zv4|t64+?(GFkM!5a|P&^z3aeP-$<)BO#N1vT|o zX2JoVd?nikU^q1{XKXxi1@j7~1{n@uU65{&NmqV(NS5*A9TFR1F4op&ZyzTrk%heY zz{&ouM{T|jG6wSP(R?BMrG0PbAJ01^4SuL7RP(<`7q%y-{%-%`MtNwDq>*jIUJ~ecYvPb?q1eEjzq_Xe*jDR2(<0EblHu2g` z4llH_lBKO<0y9-lPURq!NQ9`yC2$O{8GOCGz3yjqd0FOK=6_3&evFGRNG!HY8K?4n zm9eJ{uhXm-+TsQ=NQj7Fs$r$E%gT;gjg#@B_8)}Yded;rPqF!Vv{D{%_%mnI+xLTE zrrVyPioSHp_a7f-X6Pignd@A{;okUb_;d_R9~=F7NT&qpCVIn#7tWY>#%fWD@$vB= z<~s%Ksa#si;EVp`{wdA(Fn+AsuYgfbct?c{InHtNJq9bVK&3dxpYoKn!sL}|kWckF zKLw`xhp|&^NrJMOVUw{|Qmti&2EGjh;828Li_~#v+&U#3&=>9<9(`yib(=BlomxOl zG{azRsk%sYwbwTn2GOhfUn@&RK6{*hDyZjUDh9DxPfyU*C;A_wK$9A|uMQ&{9C?PZ z7r*F5?J3T=?2atiQzMfDv$CI)kLkLBsaYlA-tK(cW+djU8}vJ4bUcJxjpqP05fHE- z;i#rQ_TDJ(7N1t2iRfqFay-4(To>)*=i`EcV4DOnQ_+IRrE5JrP%3z=8SbwN@^|j^%CbjgZi=m6i=(WkKu{w>D9D}DVG1TUcs5D5OdO& z&(K15#UTg{2Z1INraT#QJLi&~uYm&Unu_1hmhQYnaT~T@QKa{P?u!*j% zNc{u@BTz%@e1mm6knJ1ZhKGmN3lH(G?_+)Ue@_d17QVq#86m(YxV^MOyYyAx2Z7xo zDfcXLZMe%dxFEkeL!rrBnm95A{fkKmp2JBm`3`7@n`qIc; z7~vg(4cE?Er=+YUji|}#J{x#HpAZ(R*`RNUMt3bo3#{$EF5i z9|%&(h>ZWW?n+K!wuXi7+;jW8ZU$Np(9hW}kQr1qEL4RXnJyfm+3%e}!yNS?+fYhG zs^5)0JH^PS*cnm9>Pzk+D`g0YQ8!v>bQGr)ln}BL>25lBEGsLE&dVA5Lg&?qz1HSU z*6y~#?-AYK+a_c*T)CLim9X);=wMO$42u{L|pd^bhg#ufG0qWsnAq8$PTmT>;lOqvvy9GlIwdk`V4+ zFHr5WG@^3uUk})7%38X7@8gSqB_5dKS|4QYTnaL|-`^@E9l~a%A|u>#r+tS3Yh%k9 zt2N|5ek;X8W+P_$1XJJ(wj$Mwj23d*X=H{v-w%9|&z&ojJ zhoiHpy4F`{Za)Zk6+wi77PI2$M0EhCkxy6Pt7~1$h~)R?C8(c`TZWT-JYbRAhp+Ai z{|FxrM+=Q_`BqxYGn zVjW9#aRcSx0g=dQlp5}NkEPP6UyKSvv@K-!G_0fM&rShr1Yc z4`O4piI*!?BPTEa)+KlQ`P~A5cj8g+%>9J8=;@eRDV8zL8=e($e&y=h8Riaps)wm5 z{7(inADM}xRm!vT9R@LlW)cY28#T8-T*ozX@eaow5kh6QXBb@RZf|LwCLd<+&6ha3 zdlcA$I5@6)Q6N{lq_eU{8)iyvT8)Uw0cr~!3PeR&dJS-SNqRT>}X zlC#GpRI0h%`jGCLnPT@3Jh%lKQFeB=?bezQ&o`+9`0!^>Xu5mLpy_MA4*#LC#-wB{ zR!+SWBkc_aUosdi=o$sPe~^G=Z$Y3>Ya_7(Ct4ZVZ0YOLRl z`^L5h#jN`UR}$w5+8RH$Oy&#xVFMfXMFmWBVnEFar(#nMBI{RqW7IPjE_a?6-pT$-!8L@FE5`| zEuL+XuukExWtw=ZyK;FFs~Z@6I+#-mbL8U5qkmQB?jwUQ!zjKBtUY=go&j!f_CbD5 zB<92TFw+aez;Io<%71p{f3`n)fy`Enk9}n+fHC!m)|4Z`ynfBxa|kfY+C&5(V@3R0 zc^DC4&^ozlQSI6c#Zc6niPo^Ov3LaS9cDPc_cV-9n-%A&`^lr6vA!W=j$n^H>Ugc* zNm7ft@yOT9)gdJaf0Er@(n%Yu+vI0&m0uLQvTECEwDbA?%*C1Z%vBd*U83Ec=TS7@ z+Z(p78deL}cL22>0#Ln|Sw7N!GO$|x6YYWaZixc2r`u5dDjg-AYupuP3LAq+* zfzt(}%+b-Rnp9M`Z{WF}6~98#NP1QvcP(Bq@MJmQZ}_kgCu51=Gn}DYK1~=xZRyHi z*T}WEX5aJ7$=6Ea^>Cxu-rmN*xO3-K$!@BcsLrD4ZS-1U>m#(&=qUg?PK(h3w8-aKQn%q}$T6sF zbdLGHPrlf(hv>;FNV?a*o}KCf-rRdJ%{^^rUH3?TlF3~QU-ZhUpbsD=qZB+(Kt6U4 z{oc3jH_tE>b#%Th`CRI)T&YAw67>Dtd)1HPae@343(K4*%>ffHY~Q>uSP@@x3B6(8 zN=OKz&9o#U46)W0%vW0YY4B4_k@O?PuH)zLaH zxL&Smcd4@0yq=9m+b99ispB3r%h1H{&j?>xu#TlS0w~B?xTF^PvJ21J~(xF95J31em0jYo|{8y28Kz)L{Af z!HKd?+0ek0(DQROM<_Jt`HX;;2Fu`Zdm`UR7TrpPUzTbVhn|gEcOapzCO64K*Srom zQzy;aH{_QeIZ?4I2!?vbfy4G(7YZC2RivKLG*`dniQ}y1L%ETDoI|eY( z=ywkzS=brx<4;>QcJ{V-d)M#vuaxMy#BZt^vtOn-Ozt>Ng-Vfg+dM_c;?i<#m}M6* zkA%Acgv-=9y<$r$pX7SiNUgOro67cV);m_SXcMA+r*}x{Blx!WX35oAJO6qL{9C6i*nJc8VL*X~fF6WR&V2F7-IXMB!6%(T5F?u^!$v&7dJodJ>23+pY@C}oG_!vgw#lAKusojzl4xvsnpN$dosvNJ%0Lh z`;P?K)BUh;`RA4c=B!Y%V5P8%al>Wjm519rndE;s5evPzAqR`C)fiNoQI@GsR7apg zI$7sDZ?0lyxSCb@Tme8_-xrX%#zNWi7%Y<){^ysIkmsP0K#{B(Ca@6;%CNzF_Dxk~ zzR*)5KGMY$%4&uIMfZ01?SM^hc82pu0Chl$zx$bpTBR(jA#y?MM3h_ZLy13LaEx^`m`xp0_&zI@P2J*(27q?%#f*F4DT}z zA6Ux-o3@^@e11QvV9OkHc7S$rf@$uD!P~xQ{r>W1UWTqE(mycs^<;060cals`teVV znQxM7eKxV?^O1P=o;FtmCv~96GSYF|^n-@nhR3w1N%+;mvqQ7cjuDZEHhX$*NA=Jz zN#>F``)?4QGWHOCUY`eOI{yXzXzi4qZ}oIThEO;6F?h>dNxDPR{62|Fv`wnA7yekj z*BE>yxv4Wvor7I$dcv2 z8!ElXS{up54#2@vE8;s$)<2#Jp6=5arv*uxSg;q9kuE=ms-8V)ftT*?LNn2u zJ)gVijN`W6RU4iZ^>xyC?K!5=102yXJ#e{KKwX&E&zU=4IH?qbFM5w>T0Q;E8{@)o zXk=ToH5Qv4v$_#dV|m&)1LyHBBeF9v0mGlsL~L(VNNYjIS|L3VGX*|KiPdlH?dFv% z$UAN)(5X67A7V9^vxi%_lpcySSMNX1ZMDv_s)qCHoq#rGD5BKl=PmHo*1wMpkYJz% z!}8fB#VeyD_UQFnAxv>Mky`9-pcTgU%NML?cUoSaj2dOm$j+4GZ=e=F+8ELPS%rF= z5lWfn{=A^^JRPD1f$%m{clH?k_%UW@=hVFmU05}xZD~p4^v~~oP#nrM@8{rLIZ2zN`*`}zcN1dpo7!Lhm<3$JcyBtD zR#W+l&@r_#J^9|RjQyvWwhW2(SjD4{2LUVMJKL6);Z3L0AO&qoXHS`N9et5{B&!oK zo5sb^+U}0OW)Z5rT83~Lp8y-J91WHVD>z6moxjc@Hc1@KxUYQ|RdOFWvvKkCth(>N zTB!kGY(JlA#2K6v{76}i+k<_(h>Vt$Zf?^-y!Iz$=2s~b6k_>){@xfrF2?S)pSI{J zv6s1)NdoKx%E0|qL=VG8lbk*J=(k?-TQh%k%+qFe+}|7ew#W1Gwx1_`eCTLy%L%f`w|!Z1u$j?Z7a5m#b}=_c zJebTy@;pK);u!^|m6i4h1>4i-x*m5ij!M^mHg*-_+5p~7;q{Vd7!ZdQFfl9D>utN$ zClFEUIXSZnk!=+K9%2Q3sSOiB?#KB&_xwQXQ2AzgeJ>!t#rGNc7}qY`7wO? zcr%{~1ph%^?Cw+_nE8HJGnbz{ClD44##D4T4P@hwyj^Z&7NI1Ix!(^eF1JSP;{=n5 z;OFL=z7)26jgj6|jOTNMtQ=d?4s-;cpM|(xZ>bxYnqsT-;2399XOtN*%+K6-D!Sbe z>nsS~q01Ew6>;p}^ih}mKvVfqTk+xiXHJD7ZyP8#6=*isAqnrW;$~;Wek4!-d!}YZ zU{ozmaue8zW#HKotL~T7<}1ny83i|wOT)29;5PyCpw;X@RMnz8h8A$qw#k%%E`Afp zNPgR7eQ5Sl(21!De0^*CG<92v-A^gKt&vakQGY%q=6GPU7kJFMY)x8Yt&vwQtbFoo zVz(VR7+i0s;cOI?Px6^=Nlh&OSo9~n&IVpGC+N)UcTa! zhJoP%KBm6wapE_qb=bVQyW;=onD9eK6OWSz4(Ph-TIOVz?4Gu^z^$eC$QOCt1qn{` zCHFV)peg4wE-r_V%C4%o9c*Q2R%X-PTOCXIEO@kxMdM)W1)68!6It}-7Zu&Z(CL>_ z_c(~Qw-Uro)w4r$oW^D<6hjU3wHVw*^yf4^?=zJRpJICo6-UP$@G3CoA~|5t60oos z$q9u{obO4_m3M67y^+$`ScN~Kwbjq5_*n~jZ=nY1KWC>}KN{{_`PsMfaBo6i!_2_Q zci7ke(LfA!S6PMYXoD>H=3s&FC5IQOV6)d)j+L#~`LPx$e;KYx4)wR)xhMA?guR!O zV>aeE#nnTT+#a<5KYWbsn-|9#i!39s@4?P2J0O0~FaEk=|4%%8{O?^|bx=g&L~RP? z-%-j@Lz3Fd6q7Ho_d<`BY~CtbDaeM#wi!XS?o;)LkmtF7ND0{kEHdABqCf>XZ6I*g z(me^K9b`b+ouzhegfx?h`h|6bFRzHfq-6rj zR|n4BKUHC|>vd*_5`vlZ5%i16sQaX(Da#ua!Jd05)N^_|PGll1`d`!+N4;=?zXFPP zyLz$m!jim(8G&~{fS#dNhN!k4K=?&$eVt>Z29yb}uQUsH=eu|3Q$~0n-lM5Lz@w5H z%%B#{0P`aiO69Nqu~vWPNcV6zsX>JkwBTIbVyGWgAD%?E7n) z8V7yKPW!WjH7;iiS1K5ax;YKxX+9h{woR4KAU3HCu$LHh@e!ZH2%E+&b+fl8Knqm_ zH<(WeV-?Z_i@nX1t#0Pk?f1vm4)$lY;lf-~z!}tpL-syU$bt9jtD$mtPz#*&J2HL} zn_2q-y1OUIY~q{^J~Bsvk4ZHSg_K?Q)an<)-L^z_*#9`)qtqg-MJi+jTWv(yd5>V9 zycE%#Sv2WuXyqQ=wCa!NEZ`y94v5q)g-y=LMV>I18H`!8S7=1R>n+?CCd=$_w{D zngp8Ue7o9Ued_f?DW!kXUx%d!nl{q2W9#z(6O-2I@y=&?1GzLA5Qw?P20?;Lvy@ey zEaHQ@!`gC0&cwvD3||Qgs2zD$gO9J*(`uz|uwFcC8O9^Ay8|2k&ngL#iocXGHaYhn zi^~xhAGZS?NH1FVZR|p9nj(L`Xu6*7h!=F`mk3F@D}wrSW^T4)ex4Kv1ky1uyJiGE4P}J2a ztRO8|;ih&GX@7u)Us6-Ubg6ZerINTsfLYRR#xGcAnQl$&edP4-xE`XM~d2U z)tN69JhG#tU!k@b;5P2;HoSOJxxAFcLn_$x!2lG3K=7-^#ALA1KCzI*HbDLC@@Vzv zmJXCT7=MHF^GsmBtCu|r9o~PCXnV#dBxGb}lDhLH@OtlJ#IkDUA6=->hA#Idxc=B8 zT+g&RH|K4vdq-3G*4Y^!qSyCszT8)%NeayI-ck8<>kK~U*R)ZwytUJuV+^}7uq!T;d6?uDAzxSuJ5b_#srV3Ouyk2cwUctq% zA|Z)SEL8Z&v%X=^C?n*CvG*$F2ktEXnay5VS-Ch^m$|Tiz+PyFV?30+z0Ee(lF1jY zb47hi{PO8bzXxLOcO1m&OU!(KRpxsBWpMn(6h1!P;BaSs3e0X5bE?t{W4u$RFNdi( z{`6UQ3qK)J$g`t+>{0a*@v2$2!P5Csd)t8aeyf7Iq~ZC>6d`%LkwSCu!8h`n@L-_9I65ZgPd;{XM(+!)Nd;?0#DCrD zX8dz^x9G+$0zP?S8}~?Mn0gNu;>_CWdMzm z)6P2TadaekbZ<`7H`E)fC6bj@RlJuz;uGX@Ol&iW+m`Lac_6ns`g^42UYn|2AhqJK6l$+vAu)Q=xY7lf8XH``~Q$raKhr|n zXATY>b{T#n_+qOk3zB-DL3bHD$ux-427 zPB-tfQi#;mdm66B)7#lQV`6lY349AY3MA2K{J*I6%`cR!wtYkHc9-2(B5-q!w3IY(97lXY2@EPNOtGF21f|%J@I9Rw?jctt_SsjfWOiXOvu-Ms{{qI%q zzfsuGg`1o6*H3i$$4_<+c5d!BTo~+J9Bk}tTpXP2?C9(4T%6oI7;OKy_2B=cI6FES zIG~$!u(fsiKfCY$>ivH|-2b1H07ZF8tjENU(Z6B=q{NglFrIK=U_3Z_czfuB0u7ZX z`o|we08zy|SQvMbEd*}Q0led=EcqS-GEBPl_h-M{l6Mzeopib`QHNpK!2M?Ra~i_> zpV%*rWb+>+EsExU`eOUyh1SFDYpFk}zI++A+H58XW{1?d4v4cy&|!e)Np%xO#P=wV{zuJ}590=q6U> z1-@BbUS8f?|GS>#(aFhdG_@jQ;miN&`&B+=?*K?a0RZ!{gF^i1E?dOq_)=3wr!Zwhw*BAjocF@2 zJ*);t8J|RuJ^m9a7#;I zU?5P;ICy!;6HfgGM#Z6!>=@QP+_b30GG7a{yC%;Kn1DtSVqQym`cYa679dfTNlF)D6#bE@zbX@u}_Z93obrn4B4ml z*uDg>Pfd?dvHxY8xBCa(6fA1XEhWO-@cy z0get16jhyyhuHnZ){$AJ8X{(;sY_i$e;>iS}lFe?03w zY{nKAZ}&v>wIkZGPLJpAmpU6%{{8meDEAqRn`RfgrNw)Cq^s+zjrF6y&Bs_3a#IuX zsFsb2!_z~vIPHmR3B29(?~`igGeEnwAlVr*K|#Udv>i*Ug_#$Bz4cbzoa72bf@`yE zQTbnw$ot))m;b*Mb~$foyQs4h=KmhQj|teT`}VH5vPR_>^^Jd<;-kwX6za4ssP~P-vID@IGsE(I_;%`Q1@m`Q@*r5_@k$Jo4!h78We+|ZF zv6XFuIH8_HHPu!DEi(O5-)nE3AcMAkt0rw{{&)iri9E|&vKVuHGCv+lh&nHS{W=R& zvjJZ!(k@Ng@FO_Y8)-$Nb)8X6qiwBC>mfRs&hl@v8i~YUtLSD9U$d==-Jr}wrbmhrYPgn3{?IzF-;WHIROn&=y0^r9e{kYOz!PUs1HTXU&fMG7Rq(j@) zMQJa&h@*I z#wF*t6f-)JtL>}6fDoP=&zG>MrI|-7r;SS@uKpzX^dR#gm9UjI|fsuy-Ha2qmZ-2MQDst1gAh%f^Z?vAJ5VHB}Xp>Dc z!N!Us;ix<<5nI$A402tl@&G*N$zHQ*`FDLuU%xzHwA!TtjHf1(Aq#RZ}; zw^;Q`t#o`2)iSf^9-EF~qQ|aa@9R(Zr{H@63W_P{bm8@fh@H$a4zqxeKSX2Jb{!i;w0I}-Dp7}Z?|=R*Sp(WO z<&sf&n>y-DGxHRpPTmx+-P5k!Y{W!;;O!n5QIBgmimaYTr&gW~JxFiHJ+9TyPw)~_ zU!{G-;NqSvs%d(EKZ(b3O=UzQOk`g~fu8O4xR&0@WK_R))x1{f!GJ&vx6SA3CbKRM z<|~+p{0z?FN+suRW)Oa2I2{fS4lpL#d}%vo?qGZeo(cu77(OuDkNXP%Kv!+>TKY^M z5iFs7udm%b1L%xVNa-KbXj(npdQiA<$x<&|!_4nFQvDLVBe%^1ck;h_Qdw)!cGK!w z*9sCCe5tKKVT+aES^m=>Tg6Vcn918)StZJnkx?}FJN2U`OP2$(&YK^K0pr^hdrR>z~bOmWeAc zc07Ajnpd*t?OnAgn^rTWlDhLdDmRi`*RaqTHI@o2uyk4LjSh;P!X4YGkM9y5V?R~` zgPV_z&$c^U^(WeGTP@D#(|^3xbzA`vCnn^4>ovbb4_!^JmbmzRt(z6Y=IdmTtX$-t z=LIYA8}Got$4^eCHuf#f+#T_W2_PNRT^=a7`pJ|T#g6*9Nao;kqcu1@>-xs?bhi~% zh-C%kvmTfg;ZvB9Ps{0C<-GskkAm_7r8SeBxq73ZMeiGTc<uEPE$Tr^P- zluNaR5<0SC)~xC^0LSS&Hm~d1M^SAp@aT^gu?ku_${IRkrg|fF0psIcOWUkCOL=`0 zxmIVFaSZf)x_3T(Dl91&%McaUsx~aw^Eg|Yb}Vh)BG7f~n~KcNOTF-2_c^SWyHUwa zgXk|_W@hq@8`8RO zSWNBCyz6fWTc?97S;MJ>5I+_kKf;3U9&a$bVi#XrTx4KnoI2Z;^Vpj8VPNGcUD$Ur zvDS7vOSNKmX?MHXJ6D)li2IH8M=m3_1I6V+$Ge(|F5P_6@&NS@AIh4T2!KFf;h(l? zYBv|Yi(aQDN&C%fp`P$*uH)pO+ZU)tPZ{|kJ--k)o-uWq?Gxra|i=dkUeRkw0EmYD^fQ&aGOP?T1pQg+OJ;=#-bl#-i~ z0}yqOH00xl50ycnkTdvf&iSGxYQKfHo%D@Q=xwU|*yyDB+7U%$rYW+)glyY7zWyxA z2~YK0C3$JQK=6z_+_6#;moe1cU~Yy?LLv z;1zWJ{{2%Jb4$zP&`>2ir{GA*kZC`hC1{PSuoFZj)IL`ssK$)s#d9M}tcs*>FB8Uk z6j^4f#tOKp6w438O~YF8%%JZAL$cXXnnzZF6^w7Oh+K@@@1_3=EVl zz(({Jz0uYVQ*=sec^n)#{u7&qqjBYO*)r`cdV~L01oQIA#!p@w9kt)PL|inxrts4; z3BLEa@KInC6zp#p8ZcDyNW0T;vv)<^XTagudgtb3=L(g%8SmENg8KM2C-)R+sihw> zn3(SGedS2Tr(;&HihkkIqNHk~R;&v$H@DCdc8WAdB6|omSlyiV65VBmfCsJ|SZwI?X zb^3*o(gOIk)bmD!y+;bTbv(L&iJn~wCKi?7Mc;l1N2lG@eF}4)*(oMb4#};-gpIy& z8YD3>F{GFsm&;BuH}!f)RIA*nV8OA`L1%C@;mTxnbAr=x`s?&11HfQ8f>^-2@Bub4 zqzCC{>;Gb%pTEX*-qDoJ%KGNswbQ<@&)7kP5$Npx{rg2rA75?reE1d_IdKXV5jH*o za>~fdP2c#qy)U;9@Pm7MBae=c)y2f3A3P<_MIbzyk>kf?g)p)a9QCWJJV7Yg)+Ttz z(kI@Y*(~LaHqU}Xn3va0G3@T$yIgj5xqJ2J3R+G1$3a18`jGaE1pQ#qjqD|T!=R#M zu@#v;cjN#9LoYi=C+%0T0E3{M5VE`y@PulEW0--boks=D(xv0&AAeM7yGmIn=c2aN z5!Wd15=0zw{r*4IjKgX^rrX$r@XR;U!9ny-7JN88}=(X@k+sILpFhFd$gn^b?p?qktR zD_0Ws4Q0_6j@sq-FfA^e)h!o}OJCNwuGPi2#avMze-3&I81(bF!YYGNoH;pJ4>fJ* z7);OjodBjL8-48CcOoWDjzw;>QpydkyPF5GD<>C#oSbC}9=hRQ1fKgl`TSUA+b^`j zdrrg*(7J9u1}IgIBo(EnKV#NMq`1Im3P;NxhV&<+WHEy|r;%MVW z9G&ft9Z^4V&aaa?4CvzrjT50!?U$!-)cTBqQLcFl{CDquj&63&YSBOVDiM;JKDI(L z0EH@O8qrwX%u!SuZoQX_cWUs%qA1B;b;6?HQr>|Ub4?yL`cqWWsIG0mC$?i`RKw$n zM$7DS%ub;B?0J17B5$FK7mjdPrHnSWjZ2|zGJFC!pq`)4rq5pfh?tjdV%h#xMqB^p zgnndnC8IWV7d5T5=-apHEcLq&+}+(R6o#?kutpUwF0RK`vlICTN5DMWR z7#Ql@Kru)R!z6dt@%0alrUI%(Tfw(Y`ezeLwznC?dpa$D{8%Ptqf-$U?!MTHOY^dp z3b$$OKT%I>&C5d})$>Z%af?)p{m*`|Cw-IWfCsQ?6{< z+GMp;jYz!F@W?NYYnR6YFeZ1}tDo*{6k=4*FW<|b*g)LJEJ8EU$J{oGin7Ho{IDzc zjt@>$=c4( zNBr;|v*$XIiJn)vAtrW(&4_NJ7OWMag=^b9)No{F{`rt_+sL+VEL>4j(?NPb5`)$gufwPTE?i6Le*!7^ zGOt5OR>_{FcP@8e1vC*w(OBICl@h7F+UvJx_bob?S<5hl>o=+if4U<*Ow25k^h2s! z42CQ#@-?!W7OGwA2&=Nad~C%BI-)vF;GNyt;jyyrS#-;iYqy^LbdO=iA1_1zW(9Fr6=iCi=hxNi=*D1mffm0TH4$;X-Sz=*JR?*h8QBg>@PM|*j&`-o#G+enqW?vrl;Y47oo(?4>~etzG*uP`LL1fQ|>H2TwN5$H|6)L zL!zL(TxsOysuXe3agKGxM8K-cS!<=9aB_AwErZU1IE&sB4e%5my@`8aNFW+~7+!N| zsV~_DrCx5}`W-jirm)$oF2nN8depUCn)hgf@)oSLwa_1VQYT?5r)aH{$601kCJY2h*ot@mJ7*SUIgpH#ca5=lt0sqf=6*s$N>x;U<2 z+bV;`W6yT0a(_NktQGasLdpYNE>)NEI)#~fdJS-G#uK`nm-Crmqx_cCeTy;ij~i}{iX zpJmW%)ojH5iS@`A<;ldI+C=^FHz3{VdWVUeS$oPyEq;l^Z z>#6e531IFVZ9jn&*WHFg zOA^j?fZh>>M?uAFUm_^wXNCz(LqL-UuL6fRjq*MB!x*bhN_}cChqLK%@e-4*XVen3 z)BES|TGe}>S$7~C`lazpX6@Q{4spWRqAObyN`0+(xS^U$>Gv3?H@^pRX{~G(pk=Ot zhW?Y=n1fHG9_jo#h8%;|KcR92_+I%qDMyXzO0T-wSw5{145JZ!QAq_M9kPn_?fjV4U6G@36K%QX4B1 zMyiGmEo=&5 zot7#+2M_t@@|M8I3Aa^JS^S(NLK8uWP-0dI^{)4$`mdoc z-8Gr|iQkMBh^>c)mS~iV+@+UUf(1U zM$s`0y1LD$CNGc`LUsRUckr!2uvIsy=F0TmZD5U(Ub zm*C}#&m~D%k7Ae~*V?d08$Ebh#<%WE79I7jUPFM7x49*44S+#P9N?R9ZX=;mFy5m0z zT>s>gPIGS- z$;nk4T#YrXQprT3O&m;o=i6UFS9k@d;GfoDxsK zwu9&9_<^dN`l4uc)z#S*uUsmSN@03pq2LA)7#|bnvI?ztVD|NUswQP#M`htUjGdId zK+x#I+d8BCWIg`U@z-qk{LmzR0+_NRnzQK=S{;IgHFy242UnXhC?w#UGd{jwMP3~H zIX~yCHbvno*je22DUgf5!l%`6j%rmrJI|_gw>dPg{1QbHj7qn$wC3EkwFy$U68ISc zmm(3+v#<@TEkL;;4GiFW`?6_!muH?Py7nKcp3VscG=({4`~e}BF} zNQ6mk7Sb#a-Gcl>Eu?Rd2pBXWPC(xGCK9IxRCSE6M9lsz&TZyh3HZ zsh~9^)s~`t1ZhD@$wWklKOSyUdfCci_f+O`otyYdxr3-^v%RO$u}e@FtO0Z~^XTZr zI@BZ>t$@Q?^w!ImLE_>)HI1!kx#Ye=+|@-(&%mIzLMuOcL@iT%HO#mF`tpLiCuzD^ zYg-i@8Qtnr+Ob-@7hbz$&$NebRe1u@Z&+?FwQg6US+A@N4f&NY&h}v|cKUr8uc@i? z`j$lAS`cl~>U7mo8dJ_}P|um(StHTRs1|&c7#R z-YR_94jdF^sh?>`T>Dg_tr}Zd+TlzpWCI+}&CPWQJLfx_DYk&%k0w>ir*?f7kD4cmV zaUo-6NG;WtWH+DrO=wA1-YL!#T`m?=wiWM!UXc%#CAstVK2<%l<<1*IP_#$v;C^UI z?HBduU!YOny}o!tHe=d&^fAomqu~|KWVqw-6kixpNrmE~#EUXTrpgt1+%Y8#ryp_t zJ@u5L{V+~0&Y45S|lJKCRki|ga-c_SLv{5-g)Sm-nT%$!~PaBBJDT(eCqLBHK2{4 z#*K?s)FrA)AdhdDzQv7XeiA~Z9-C3p|8h<2U8dmevbBw8mSCX4yj z`>X$WaG$)P_w4Vz0NNtzKp_8hX#e94wN2Z$|1zv|frF{Si_&CoAoZh@*(GUUQ?)7h z@d2-m=vBZ7jgPwk+^)jUW!N!C;R!cLb@$^ZH1UcbW0*}YnR(~?v}X-zj+zp8;o>T2 z=}-9XO;`~%v$*%owGA!wtFF4_1q7y!LW4`R_v^VmHfI_Pmqo+OH-X2|!br|WMhj0j z4+euxwiNFrFybh#)zUR)h5Y<_^V@%zh>%w6of}R!^J7?kjkQ)5*{s0){Oj|}gJ$*9 zpKlZzb;20YG1ei0zY14*uUz;5i`-^`9FH_VxMiq3Hw9LkpE+;;9(K4LI?V?z7U0tg z?<%%u7j<1^)k~%I-kI&=s0lsEMssm{rSd(*ELWoQ;wAALo5&YY<9K9bw5&nmuU;7t zCvd&H_rPSkpod~QQXJkoRh}m#;^C`zyi||Nq_xJh{_?h?CwjTm95{)NpRPYA`RHml znbiiWmGTsAyO4n@w?9!`ex1`VnB?K@RD=|9o>OE>S_QYJE+D4j=Fa+PX$4Em&+G^qF;&^=`GSPxuliA2nGhBj3U=5Z@Tza%fyuJe^y;tJ+S^}yBQt!cf^vHHYYNLKGFNqtX zgdUpA%oWbtN$EQ4debx!$(A0&wjy;F_MDVZPQK?`f@AU3_&@(-p#~s9iwrKSb~_|} z4Td^{AG&YG7Xv#%SJkVdZSqt5Qnrm7(qUDQb>bIuZ`OMWDSWb7g^^N`c+c@O-k7Bp zZJ7<wXv?%P}7?y1krEbCRo4h>R~Q|fz! zQdi%;hyg%OEaVOiV%BTVB2dG9omuUY}p=hZ7Ih3dwp32DB z%M+b-br$FUq;%Gy3Lz~?w%DMOr0=7>Byug;>@zXc5Bnf17P<#*T{vF2ytb=W@a+Gs zwlIX$Rb`_k$UX6|At~C`hFjw{S9|v^F;#)USAf9aKzp}jG=pt#PxAQzUM;I<=Lcw2 zT7D%C>-wOg{6+^d5-gm8T9cgSmP_SUiR9!csvq7ilm?$Id$QD43Q6v0sb4xr(-DxQ zZ90JgeHPf~;u73pH)C0n)fQl@-Qit(i?PW`oxC_`fVzNis^+1DBCu8+sOYp3oml*Iydn%ve_WsL@avdKPC|)&=t-w)xeht3-}<#j zsh}?&^(q}bvX%QL&u0|)*~k#9hjgxf0x`R5ACW!x*y#1{VL%71;rdM^r(yQBp_Y1E zFK=G;9zj>53%O6Cj0a38?rKH4!)oYmdj}VC4+fu(;57N{r(z-@H9ri z?cSQ{x^kB=zVpv~zt)l0;7e8>B!Sp?no&c$pnzBaCEZk!R|Vt_^`l@ z=r6((FfZ#5dW;{DSomc{?Qo&hCS<$FQWhk+n7PK#Y##a^H&Na3;OK06Rlo=Gd4i|V zZ9{%aO|@6x&$k(m9tFzoXO(rXuLuglQ5_4x!V5PYIK;e0xz)*uT-}KJ7KprOi{?y$ zM+#6$r?{+hT3h4x=i?@FdT$KD=S8Z z=*F_sDFxH8AS$xHA>jD8X$+J3^fqG8jgo%tS_w(ULMpCO39#J)P2)zAd+WsmOsjRu zFgl-=2bUL^boLhyJCJkz(rezeGdcUbdT87XgxXHGCF=(6O+Xu%LGyozUsK9`orS4t zE4^y{@j*P7hjwXSv%Gl01sLISvzm^(e_Shigq#|B*Xp4$= z@ij)b+WTT#&!kfdxC~4fD(!AQCw7~b?Kqs04CS@<{ZGXHrru^pr>A3ek5s4um+n_5 zYk6r-o+N6hIx#SUn^s@ferTl1qbtns=DE`I#M3Cg>7&g1`Yr&07X5>INZq=cySt{- zK+5@c7|udgb0eHqc&KrkxT~9btFMQ=de+P|&1SAlx{rP69|8Rco3eajd}=7S9s3 zt!yvmK2afWvIN`g`98S=rGM{4Sy58{SAlL zj@Mtt9xGU22dl=BE1h{#G|uOTA`UM%oTq(p`e@TH9?pK6U=L#$3lNVGE#UYb{#cu6_`I_W_MB8y+1XT8 zSuN4d%H|HJPSw-%vo9!ua1`gGN`{I&Tql1<3y%EhL-$Y^(EZ871;f^blM*h3X z;fS~{?a0;TtpedFnxYYOE;b_G**TqFQ=d(?I=fNUR)TyivpY=@obuL&pZF7@f%1IC zam1qg21lb*GV=Y;pZG5bmzKHLN_DNIFlsIk49C|`uzK(|cE_)m=FJ=-d0m(2A}ns$OM^j{x+EyzYLPMn9ZR+E82;Tyy;&h3i(t($I{r7{8vi(HmUc#1JD|3oT)1Mzfn(>_YoBU|iwMCej4R1JKi zr0Wg`Z9{#^xNUV9^+iNN$V9|{Ez*!Nu#8)=3L815YOah=|NMH)Wjc@N?&h}HkhYk! z8qK-32g}MevX#(owEP-M%2LfYGFT2W&xcm?Aa(9Nz?zC3+F9GDNH1T>Gan6KZ@ov# z#4uXKI&=1WEY=xWEiS&56ALs}uacIQpFo2NKK@kG<6}Q(Mlx?71@~VX$Rrf7eo~O&SX`;+xg~PD zAavLFv-5Ou5FQzBUUgAiQ2~IM&oWseBq1Mx$f_W{@=T)qiv-^2$QzS84O{PQEDXfD z0LE7XqW6cVa8Pc_xVFte?^hY2VT??Z=V2(h(;l@UE?8SNN%iVh9_LvD$tuNm9T_t* z3Gt+czHQ~gps-M#V zk)$x6oF7=VC{Jk+7pS>iqM5bkvC=69jR>Ug+OAt2%x*a4!y_-x2j*NCr{ft*W8-Q; z;d$nsHMe_%WKIRfVSDuzx}MdW`wF-F0+immi8VS;LaR}Tfp*}I^M@URE-YfN_Os-0 zU#fLxeQ(H5EbZOYah2460Q5!z=P46ld^ysv`LbWe#;RwD!c(yov5E{QE+iseZG6om&<)yRxXu)Vy~QwYs#fIX*Q2fz%jbf zw)S>9<7y^srPdZ^?Air|94scWZVh{qM~8)#zIdU64l2V1*Hx(iVGoqEuIq%Z{M0EN zO0hFoISkD%Fw?xs7Z(>#NJaKgU@;2UnsnDyo!)%5<+7N2iuP+DTAwv+j$2_}p^p6Z zEw*rKf+*toYL>ij%7>HPKjq4%<ukSaYZ?_*TAEhTEvq~o5178GuIAFJ zFmI7hJB)JKG58yom0vreRaoE_R6o+GszFP85sdo7%qb<4i{xaB)w{qTZbSv0_#X#< zi;kljeMk_;=X z$$XEGiGwCB*l>jDr@|*eSQ|+TdG(Cy4B%@EKaiYU$lT4s`?ziA>2^s}{us|feqEdB zD#^?IhHXpyjorz_IQ_9Qnf2tl&nv4e+K}xIf38*94SFgTJ#-KjvIyOhmg>Drb<)t% zq7{dxQ`V-!z|7aD3H)-e%F8P*5Pco;;}+Vw_N{oudRbj2Cd4jnUmu4kgbNC(0+lo8 zr;2uIoRbP<_UcyY4==_wM)W zHcP`qE>6CHv@WhBxlRh*rAcE8zW35;USF?ntxfImB`tX?m|$YlxqN^7m72PbmQ89A z>3wu`rep+ew(K8pGWLPg_}o-uU)N3BkO{&6u@h#KZ@Bg1MOP<{RAej*a=HZ6w^$)3 zf||u|ILn1`alVmx9x--wcBZ5Y3JDB+TxGhZ+4S)?jHibt4^tZi0$Hnc8UJ%ct7FHT3C*Jmp^Zw6=4IIHqOv8<_ysSr{)`RVhG zR=Cp_u+wY%e{sSsEU0 zcmIzE{Sy-^Q$QdC(;&1EU!>~l<}bs4;WIV;&0>&*X+?kfw65#fXQ7jt;@c1DmX?;$ zjXaY3&8Lyd0Jx-dOODnR< zst*To2tXRFF(9hWIgG3~S`G^hxVCX@TIIOJsdKBx7P=ShgAlT*hRhovjZ*Qj>)8-y z{`!OK-#e{AWW7r(c4?L6KOo%JZaX9}ZixQY0dG*3LgY!9nI6#6LmvoK+g!I|Ro1j{ zkE<=O%~J4Webaq*rhl#VX1L{TrRi!z>rNYtodY}_Ho#^@kJp4=M9BY2UkaV z20@YkvJ=^%ptKfs#!+yiQD$b=%J!$Q)+5n3)Bvng$?8k+hT7AQM!)t(^V2d>cPT>X z8J$&RqT7?c!NGw$hK3+aY?e{8)l)}x4#h`Moqk|LG)zMGW6}INzl)FPzj4czF z>pDCe&wyW=AN^ibz&LS<7-QEecgpy+Q_{gq#RKcthVT@}HfqPU9az&(Pj5X)lD4CR zL1;plFjuC?uNAJzu`RLn&n88xW!5nXAilM+ykdes@|9JnpyKC z&$6(YQJXGk=74>AgalgZ zl)>PT4lumyvruEPIL5!qkB>QTXsc@@G5@|`YH3UT_ZJ?2?+e2J zFJCwOSA7C6{)cNpjU>N+{TLb)8Zy<4b3LSGgJylG1^1FG;xFVmd4pl8~2;18yze(><^xqDUZP z#ak`_GvIbTqyMY26XVY8AxYT=aEiQf>YIJy6mEAv16UC&Qq)TQ#(c)5Et!$i1i@r= zxlpS&IxhZ%|El`;Khl=8b@*A0M-v6gNGW~z5Y9wkI|ZcxnwWf*4h)K}v`T78LM5P~ zcVS^tZ~xo}5%*d2Jr)dkb)sJdI+n1y+;wCf*Q{jWAXN!(RR|M8z-%nC8nH-(rPcL3 zlhBp9^4t#>`~B6@80lHx0OzEg*$Tn&Cj|qO_z99>DTcV5zuohr)8Tv(m-kPiqoX4Z z>vJ?HYiN9FZ+{&<=9*5UkWwH?UMCY16Juk!RbXXq8vDvTId*X*q{O}zFk$+FO(IP4 zuSUKL8;%Q6uv<_Xj_0wc;3iDGK@7lP+LB@9T$NhCTZ)*M1ylnjoL2uqq@kP}>+nwskG=}~WK@g{!bovFs6 zpShgXJ-aJ1<>o=G&!?%bzLFb@0jH$F`c>y>V7$|ar0ksVt(7NUBqSv!-Y))p$>!{$ zrrLb#-7>KeO8iDIfwG%{MHtZ5mT`1=8kLuqx4jcq*w7&Dk4<0+-_FsxzNzKj5Jt?r zIl_4uO?7j=)oOm`evC&Lmp|7)jL!0^`>m&e=tSnrAsHM~n%3Gs5NdvyS$YCjPn!kF zDB6_`H-AVSe}iD;mPs>-PiXiMyGOqDByR9N8_f&Thqmn^I7Av z#b%?&4t%kZ@rpk$RXZCNGvVI=5cliy#LrD`t zkW0-$h`-Lr&7!2Ir+2#}f6;wKJa3pp#G;U;d6%Z~s;L>g3WsNfhqL9J6Qv`4IZoSs zQtdRL)Nu>x2M2Tj<&V@-QMt)E`S}`Hq=NGvvgR6JhJ`m?z~{<`OqD}Oh13XjJyOsT z1q%lD@>;`PE;{%|hegV%v&4EKn+84!Re}D-PDNcUREHJbC9x^? zLQU(lYr7P0odB)4(JmPiA58-Y43UYZ!lw{SPyaFMGBQHSrxiEY`0mrYZsft~sfvzQ zBw7S>8f(Prfe+K>8U=dRufsf)+Yr>Q+EtjIA~ zScvOc)Nf=d6PIn+=ut#tk6>r^!oWmvU=2vu_GaGa2ipdT-MqsOI1xXS%$s51k!57; zM|*A1y>8|vCIYl5nkp;V|M)4<^HKps^Yf62AV@yVJ~ekFe$BY(_l~*(YqK*oE-r4Z z0b${mhRaY-XGE~${7m8SP6>N-X8U@KPFCg$r`P05G;sq&K0b1U39)hsi5^3mW@$cn zHGS(f*Y#Y{ef+pa$YwEyhv;(>=<*8Fd_1}`x&Dh@M=+m6S}O5B@TF7nH-s*XRN*Jw zZa71W%&(GS^c)-#9TLVCD-BcfDcb7VSvObb=01BiYw)F__RoSqb#;2-SDHrMa%15J zS;alr6kK}8t=BU)Lg-N$zp`!3elyIkP_T7V46CfQ8Lgmx;?!rtqd}|fB-^w+|71gl znL=O0s=oN7Y`R1j;`{afW2~Uj(LtuJE*{p#eRL>Hj0h?O5qf83Nrv%5-~APFs$OMM z_4SQ0k#ju_%uG!0H}vf4b5p%TUG`=&bAno@An;k*;+>ogqzzaoF)giiUDw^wf9`0^ zvvdbmDpKCaDwLJRQg>nLuBp`_es(vvnaeLSsZsj|6FaKQaI9)V`yPT%ptfM?V+Qs} z<3Xg=>c)mGGtVT{3O0?!Ku@pio9xjaoDP$6&9u-TLJi9Tv9TI z4oEaHR&Ko`x<>JAbCRo$Uqsj&<$T}23UXq9IaT{oPygcZsZ}26X>P2t=+Hu^cB0SSB9IHc+k4Pzd9oDs450k>!%pW*Vawp3 zxXQ(Ag@uoAH%@Uf<)JQn_O}-?DJmZ%-Shp-bsAiGIuv(CQT00+FfaOCQR|{6^y#QL z=gWk6sbncDQL2Wd3bAWUm1 zxqmED8@r+B?%ORFZ^Ml9GP>aV_qRYbHR;H1g=A9=vYL#HceYJOwmTX)@7=}f4#k$;LK@Nf^gq>SwYgm_1P0@cOwZ^&(D~)}Gu5E|{`%!(b_>ICa}&!E zCasGYbmn4GP+&zv8J$8YZfj;~ah2+;jEqF*MQUl8{k+jpyGyie9vH|p0v!3hJ3BlC zDoY2R?ZeDe)IoBNKkAzXFAfBhl?`WD0gE7xa~K5j3ee~Z;*sqn@N}plQ5%wy+cEo# zrhh*?gU^=Gq7dmUG>ky*zxM*9x~4pMIv5SLXUD}+P@v8;-rOeHn>>Fa49%lxSpb2K zPfw?&pi3F)>Cbj*&_LCEJs-u*sCKgcvVU=buaJ%vsA!k(yyhqBA2_F5P3hRFu~QzY zicT@FJ}?2&ybp3Ef=OAIj2MkCE-ox5XC_WMT#u;%_Vxh3mE-e$_CIuMt#wMlS1z~N z#){A_lFcY|EH97X-$vU?{e(`}A1q%xB9S_48*mk6hlbmgU3hS%g4=NXqbMijS9OLz z*?PD3Es#0iK%;d91$>mP8Rczd&4(KGCaqNN)sMs^C3}cMDLAa7$x%=%T5Cx=soqCn zzXKsWyMvnAV{faK9*u4j!@QEG6&#+2SIk_BX;NYn|;4j}43njrBr zFp#6M2MCNM=|>_zO^={ii63~)MACYgmAQIhT04QgXLCa3KfJ96JwiHYI1jrWpY1?2 zg4iK961i_kFAP zM$;ZiA8qr9wl{Ua02j?e|5D|AZNS)I@sT9H0e zCbQpsJ}UDbi|SRjLjQi)=J)tiS&lnPr5lItdwl27`||>>!9DxQzuYO^LL+KV1O0k< z`?5~$)lpN+rSw0){eT}0CMKE}PrrU!RBeUZt4=REtesNVZj9yhijXC_!(TEhuZ z(o)-&^!|S0)0QiHdywznpA|K%#9ccXE#KcsLq5R?E98<8GnQqfZ1$S@Db&q%V{a(; zmtuQhHLlJwoec`(+6rx(af@1qRe6UT9S;L6-JXCP-4lS9{vunnfP1CH7O)@NWjv1l zKt6tMfY8-RQ7yRkM9*V4V2P2p3VHvpqc8wRXNOareYHEZt!@pAr+(#8HWhOLnT3VY zvpu0Rf&^K8*#dirfTkudCg(2kuO9m%rTN*}*`HFmG(^j5Ksz2l{Ub*^Z{!_fm(yxB zP`7*oU^uSWJti*B;utX%dsLt@s|N3&%!~<7Hl*+Aq|J9UE-n$>FZ(?(yybrljG`~s z7NaZHS1t>fkz9k3c@!CXXizP>+bQ-yU(j$eU%@vS8$~H|GhOhI8}r4wBas|UNSafW za>I#v(KF`h5-rHGdYF3N#}9x=UteFFhBdv@;W}weO@E-WDjlIZ51Q{Waxy93Sppli znR8aVTmR-n{m+Q-^Lq1nLsHm)X7XvHU!QE4aPZNw(V-L9b2ZS&da`oc<#BAqn6Yx4 z&6XO-l6Hw`lDRn!CQsRud3%nxXD-PHE{QO>Jy;_fi2TzGD zF4G>MgK9x|=>9zIpEB|pvKo`VEX zyg1tFzu29nksPAGJ+TVD@aIz1<<3#U9w<3{d_8mJtHMGCpqgrxz3OilaEMDwD*F8Snx?vhEvedR zOkJzq$$&(1%Aq(zL%`!Ae9>qBRH9UJub%YgJS0xlEyJae59KL}9>MKh^q3cN6%ou* zO%Hr!UNq8~p!iQ`(L;hpD~+fcq3LXR>5z+YZ1#cx4CeNWpMg?TNWN3 z9)lU7I+~QxiHN8-y4p;eQ4Edmr-G}QJE~^NTw+{oV8vrA5OrDW$m{F7tE;=Ov&QlR zA6MSa2F1C`&-P$j3>8xIgSU+vJAa>5!lLhwvj?3}5XyelA<4*|lXUm)`_<(wYDr8< zV3F3^+FFBRcBT7nyL~(&8(gKrTEhSgrMBgyv#&AoF{U_FFdS8?}nuRUh0 zXq|59smm47EB>vOK2iuwXO~`c;r&7`iz|*lFnfSL`fk?iHUj~K`|{;7Z-2uP#>bi| zrRmR&xu-Rx`!h9dHvc)XXHH(!s;&DB``?F^VEhl~m+bw2;u`5L+24PpgPYx41Di#| zso>~7FTVQw`tCQf|28XG^*_v1{_kJI^u+wvwU5(JWcKn%$Zu+&NSM9- z?PIQend`sq!%(mI#3P)ssICx2HRO42k-}T1=?l3kcyH9u*EJ*)6NBF`;HXNnj#9sx z_L|;3ypnU%7>1BXW~UTwaL;gO4*W@N77YC0mMIAKU0wajLiCg)j(`z0Z%;N`EnOty zopH(f!u%7rf-!d@Dd&fy5ohzB$7D;*g(Z3S{@IVsvias~=ams8r7NqCOv>15`u78| zkd_ z%e*9f%uyXsYVYok-CR9N8}$)`TJxn?aRj1T66PU|Zi{om=#48(;6Eqo*d@3f?%{d* zqqU6*Gk89p@xGb_vs0p36H*HdcTJ-PN(*iA6;#}X>Whx`+|73cX(*Bck4;gpTR;i+meE*52 z4Dh-#E2wcWN8CBJ2vVqO@>P=tQ;L&r699-mBO6+ud|QpitF4jES7ggEH}ny zV;iPe_8LxW(|T$DeDB>hwv9I{ZWgv@J?_>=WJCp^{(7l(HOq)q!_3Gs+WmFk{FIip zU|dIQ=UN)TgIYJb?<}uoE}Ph{g2~_s?ayuHO-~3eA^ZL&z0w9bMJng98^S-5BolP9 zUMj)3aUl#))|nffmVflm4%un)yBp^LUsS3_S-G2=$+efYeNfz3ZIL5pbUu(f!rEm5 z@RxxADSdr$41!4|_!NTB4~;2tyAQ|~Og=>Y#Ly}P3UFMx%8z})M82{`DdOWNN1?~O zus=`>9_XO3y_s75_@PXAP?EY;E_$5alB{g}_`B`zI6~ZxwaudF3=(L6ba2MMGm;`` z&gXKxJ(*oT4rzE7Y0Sbnoj5|W7*hX=Mv^drG=&Oa7OHoB-jbB(6V&rZVrEys;Hv;I z=hBJ%v#oo4b~-nTiEw_&Mp^{*8m2VL94Ckf5%kyb>*z{bR52Z8L0q29}mC0 z>iP2HV5vwdve{+{@p{@MQc*;{K+LGo7q7doS9jOxqx#B+U9gv^dG3L7!~+IX@1$@o zx5TY(FH-^nrQxNLdN4KHE19Jqp3^=Hk@Ww<92QUfwH!Hf6Z0zZk>|C2AK3B>E8g$4 zB+O>llj+VoFBsXMn;1_R61bW+A6myxeD6?42K0AWj(pQva%Z0wsfY+6J&y@04)ZO z8dkRIBdJ7jUle|tHdlJ>IJ^v>Yr62+X5S?sdinsq)SzLeK$>3*&Z*bA;u%r*z6bhO zgQIo9R{IfstNGj8mLRstTx9_8$JRrJsZ0TngLVv(-hQGnw|`w}oH8hA_mgt27AZ3@{qqbDF9~w+ zWii%ay@6FV+OuMz=U*!^& zwL9VgeZ#=puM(~*21p|Ji$7|_FWxe91OAG~xwIlxRqfPvgs&tkuUNfNd~#kt z_8m?SVtnkX5W1dWQ<(=aQgkXB!Mgvb$ub8vaghMSAQ;NZ5K+%;H5wdC+n97=dc>W*gryV0Euu|80yqWjDlwo$oa{k=fPy&8ABq zFi2iU5dHI>^n0*txGbo~_1RkzwmAWee-{y9Dvp08Lkx4*|8HHxW`=KWZx?#|`t>b| zC_eDbn7%~E?ArRe`P%q>21Z6JV0c_5CdEyT;fji?0r$?KWFAa_^k3Dai{7GylXa6# z5;EM&>xKjbv;A(@e2I9%?=IL#t&$PaNlmlW;_pq5X4DG;wVNS6%^&u||5?e>;X|jf zcuYTr2JPskYoWE(pLC7|n&S7n`0am0b9*%c1=h*(YkiIC*$OTV;G^NjB?NC}&ij z^Zfh-h$w>`JvofYs?6$_?ss0-2%Yw>2kZ#Xk7cr_U2N*z7k?lfdE_{}a}Gsz#J++? z3Ue!Mbu`lP@=NJ?r#d*fsG5l91U?RQJ{qMjxv)z)V-ixfMQtv=l5TAXdT;c3jbxY7 z)s}~kpRcf@Lb;1j+G*W9blR&$NxNkpmRq`_T++;X=B-E7x3HwSl@*1bK%DVo^Uq6v z1e%FyMmnMUliG-^rU}7~AV^=X#ZeYBj2HA0TK(}MvcBp4{f);?#vAP5V}$aW3H}__ zIvPY3lD)K}BIBuV&j+cM^HKBxpFs-?i>>>dM6?PP8g_;~eOLfmjh5x>gB}B>MmQww zY7$vWKp;@7>EKCH$diA%Mhf{#B)#~z&0dRkJoym;H?D9U8N^3fDxUvA^E0a|N0m3Uy% zV!FE?MY__mcAbBlN@V5Uj1pnacMM*x#Zs1T?bJHOmcVqsbnhP+Q7N|=+vYI$Uj+Yr zlho=*VF?Fs(Txl&ur3x4_brzYXQ3uJLmF+PlUrpzB2%M+viQGV7OBLyMsmD3K~|<& zp8xD9NtCfPc$#l@qanmtw3)TSfL__JdM2+c?K zKx7O70(87$<%jf<*;)SQJEKUjOX$OYSo2Q+z?YKia$|+LF+X*LUU7PHr6F9Mj?mQ% z-ERg?mh463J)1qqrzk}K2hRM8OzA6bve5`KNfVYLMK{BI!K7$8@Yuo!0u%V?gAXad=~G((4!PcrQqpXbB}lQiXLiJ>|`p`ir^4a&jQ3DJhu> zYk)yP4J)jma<=|)$P=}=Pkpy8+-lz(6XmQnu(&vx&F=fcYtmJR6$n&A(+{+Ksalf> zr$SpkmI|m2WTd?+mZum}Qu28t7FI?^7a ztDIj&W)!4wB9UVb4$f$vwdC_YVdtC?CHv`G)N9H_u>w6@106lOJi@~7Mj$@oCSUPO z0_)LKD^y;7Xb+bpt$5~QRRV_A_~sjDavoP9aoR7m{3}6@FrT+P&|WLrzOnLka){0% za>?(Xsbmtg3s%>TjOQ7KWoot}E7V9N)uUcd?8uvvyXpE-Cpe>>mlLI5R5DD9GYhd8 zk&TE7ih7_2tsTym)($qXDiWT}PrkQdHMMkkP7*yQ0-%wMdZ4fcHNZ^(x6e;m8M^`^ z>j#Tnk^A@Hy555hEvQM#2IQDM$4jh+Z9k-(ym8B39<;w}LA(*V2Q)0@O$g5A4nQg6 zuRn(CRjLP}YL)$`Q}Ug?x8E2|dOG2tc^FpwjO4MNb`FDM3^2)A-+H`>CyvfaTRz3n zSavV7PlSv$DhnVa=>j!lWs0uvJR|9!``O}@y|LB{VIo_ID!C!Sw&?ln>u_p6PC+O* zwuz4~L_qT{sIGBE|PN9)~ofxdwym5%-0(o$4Q6Of&R#CE(zmIgB? z$ISd_Qec;?AHQ#5LAQ^d3umDZx2MWv`JVuOSB_e>_c>H>O%Jg~H8bf*FJG@oN3V*Z9&-g5(~=5OOfjblZPE}T z4{Z@XpSbiEPq_~hIOQbN^0QZH|<_!3EX*}HU5)h2z;mw!_*D) z5kaIbx*5ygw#<3OqfdXXno89-G$7YZn>}e+Y1G!{5fx8uu^=hn%v8B9w70vRO>Q)| zE;K!NH9nRar;w(duYjz2D?mVMt%OSN#TYo8W96QnHNC3Pja@0L%iTZINh5&w&XfPd zZJaS#jKBCJg#3+WhCzgby*<#~JwZNYaQw6F27{oWG&HzTDe`2^tg_k-sa}m3soQ6F z-kPga1Am<@?x9Fo{4sx1N}SuLVmj##+5c#;E$~631Oe3tt9iQa7iLK=NQ5-&u|RAh zvrnz!xaukXnTJ6+Sb!KRG@@?}_^_C}pz0QtVp9wpD~6|GHcNiK(iCb@;R)j+?~;U< zj3(IURHn}+3L%i#wh!UHM*eaEs;ZV>*4!p)VcXVG^)6|d$^tTxksLp(5jXJDP%|e^ z%T+Q_6SkLC_KO55LaHBNA4$S}n)1iE%|h3ES!dKEC+X))#gFk)T6x2g;;e$Y&1J3j z2iDG-IJ?ao>O>r-_oAF@`h*hn&8`SWX1AZueJcvmZXB7dR1jG>{*D_Mq!5vm)EF$0 zrK6*RkDrom@rFF2)TigBMnc6|W``2cKQuH}A%46|iuI4D{^8li{w^{*x!AFPQ7H;< z3x7BFggrpIkw&lOIXTvuYb(`kWpRG-qKjGOF;frHU>cBH^D;|_8v9#xn_`rdmX4xz zEids3p|WELng>)nE@$w=to0Ku_^=<^^6DS@>4(JHhKC)=Z&>Z=6U?$GYP0JIGBL8) zy12Ufn2A$;)$XUoPOcGGt*$z2shT?GSRZRc!2FgpkN`6B1#=2*UY|3=_g-SsQYoP8 z_g>6B^?64-))S;;=R25w-AOZ%VWp)sa;Y@5d5O&JIAnvW>w6%Mqyc=ww8GWNz3o}6 z4_PZsr*lDSYrkojm2Hq-+|&S})#*`Jtb=9kUc>QXnoQ(0M5~yua?x^opkN}O9d~UF zP6?Q6u#hY2zWWbr&4iAP(Xoms0F?Lobna7MZ2I-|&=<;>4M6gMF+hIsNpS3-UO|YX z)&8cImKS@(c-w6GVtvy!D~*^ZLW@=sW*B_NX}paNfpVc)m!Payd&psj<6?jt^B`++ z?LxtzU`$N(!0Z%&97|^cO@_AFGfiEWs4La;`*loUA3@(mCiNp#b%AL3!Qm+gtMvDM z-RMtOu29^7v(K^*tOm&-cFi_EGsHDbIrMKV2f=BCJEK1muC{W}}ymHNL{5n!a_cpDiV1(w%u zZpa>5F%KwPeM=O~)z}z|7pt{xi(KLT+T(8y-EKx~=a@uhk7p|LHS+g$H6yL~mzT%T z*?DqINK@;wwFE@s_2eWqI#YfL&hNF|YeBX!e_+#()9jvP*dRXT4q+=*)W3F2EfI}2 zPP!UbN{fq~I~(#Y*=bfHGV-8ru*&v6Y!jMmy-a^RtQT%u78ZF$a~rStYxr6hiySHa zgH~Rn65+kqDRuiUaxC=pFB<4%fbk8qzH0 zr}Y*eQck~KiqBPBh6(#vL`WYEzyw2M?T#I)N!1grBFp{f$7Gr%T;izE{M{1OEjm}r zArpfi6G;{23y_dBDp`p2Uzn9liRu7aKql2onXU8GN1Z|;G$Bn!`A;AC78Vs&Z#LsI z6X#_%z1NQ09sP`gC=P!*<_@j!W8RaI1nX%T4ez&39p1~kzS2?A^g2Kq8niHL z$)}IPrY(D#?r|rCiJ1bHQv?Pk1|%b$eqON0L`P4~?zx>s4Dd#{*HINT6{{Y%AUcP~ z{;7gkoVVmlZS-u==}?_j-cw~gGVzc8X0uR>{Uf7>l~QN{?1w5}J+H+k^SzU^X@!#R z*#={OKUpF=-?8*Q5sK1-POQ0uQ*Qi?xPqQdJglacQnY4J)ly|3bR{H`>((kq>!Y)u z%PWvcB%ptUezZwleU>@YkGFwWE0mGZ^2Gm%O}Q4eI%2A2S;!dDH|Cx*>)_FLa_eCy3VBfP z*+|bMES6#aN_sCTADxcDM|t-_FN#X`WV8iYVR5@^XfBzPTwS!RTLPk|Ym>APRmOig zRxr)y+m?RN$z~F~l_5$}spOv zr&Pxw#7g0p63xS|u#9TnuPZFd`PRucAYWNS-Z7n;g1{LVZW<=Xe!Tx8d-BesZF}cL zv_$1{m{UZL#dZ*3Y>hk9kn>hE7vCgRIZINt9{tUWDf&Tue;3j*KLuBrNMPj7rAn9D zimdmwmivWAeqFjoS_@k#ko^+v;QO5?{3Aeh^&ObH8n@@*qt=(XlSr=1_#T|($wmdQ z>1^*E;W^DBn}e!UV#j?ctmH{`;X8UBJLO?XWC}*s&iZpd-TUTZvx-5d8v7^)+dqBPT!i{-PVCC|wq*&@&M^fp zzdxY=^jW3L1L+5~ zs^;R0rvjj(x{yPE{ywj>Ta_{<6*>ocl`GxP(~28;nfNTd$d*ERqdu031E*C$)R*Qw ziYi4Qp@_#vxDj~B?CBZxe&zENnn*hn#b+XU;Lz>!+FHv&ii$4qrJkg>UZT;pDCOFk zdgYVTcGoz|wjC?x4HstqV%;F@9lxbu<<>(m-m|^Z01>hr6mmC8Z3yuC7zfDXRQM^1 zOjXP{I@1W38sLv(%CNKf{OZ9!xp4m4YD?vB-leE%pAa}4GX<+D&X;{0E*nZyeg%%hNr*;-)B|)A;m*cN@Jo(+EeG*868Cn!G1CJhu zczk$U(t?)ik*k}l=6pWe2SlJN(^h6ZiDra?+(iCXhcPEHFx>MU%6;2cZGW5*u+uW1 zxtQfC71@9VsCIu{$-Fm^!{Wb@^NRcvOQ6)#II6XjzFKL+mdTzGX2r1Q77i|sYSvn+ zMH|!+n#zE&F3j$!sggw(8_3>i>Q25yaN?g)eeb5GrnFjCwLSg+8Nd0WZ3Tug1hM^7 z6F`Zm^0t}>S#1tFN@}woV8tN5{<&BqAR$yl$3~B<-oZWZm?UI~z^E$cO%F@=H2wTi zXvAd6rcOd2Yjp1dOpaWb{IuqY{83D0Q501H+lYs{1!hko*{20TT`o&R*@F$obC=4h z*=AGQlz_oT0v+w#k*3zY5@0)|dx^!f+Zpx&Im~09N zJz^E48^$miqB>@3tkB8Tw6Hj|jO`B`IB9cqbpB8cUwp#e+`-gSBAZvN?zs>bdeSu6 zvm9xb*HF0p#Ct1_IeCFho5!}u!&Nb2j6E<=t; z*|39)i<+h;9NyZ|P6?x0L`381&kN6w^%czCNQTtQ%MWwG5=wQeXH4z?sl%;V8ISAU z8-At+_~xBW(T=d>Ptibp>IA(Or~&SIBRrm=qm%N|WExTW>Uvrb{7Rk~lc(B`LmyR; z60Q->vPUAwW@B=`W!nLiN5(AX>JJo4xB*~Xrk;eIVpk<(&xtE>$_lHMH$9pRT=H$4 zURj~W`oED7OfhQkpb#GQ9(BDsrqeyF-Wg<1u;-jY7okqIr24(hA12CMp=dFP$Ly~6 z+Vc;3?i<75?R8sMdXyWirB;FL|6uK}|CA*8#zySsbn8W?zo=X=ii`uIC67E{17NBUbOhjOwOCc`lDR(J2@zQQfWu)dJ{p2mr)*zzk)2YBpTS4| zGDuFLlfpmS9Alb3+K0~BF}OFtyhu@ENr*ygVrJLvKF>5jD&!X;m>ji4mN%kb98o7aAp62%wmN@7@87lka;eEm z!UOdh1PQ6@U6=!6)bj%8Vh%>*GPq98F6AVeg!)1TwuZ2`=cZz&xMZ4a8`xGSTY6_* zHJx)#D7@Bj_8|zjLtwB(_+V1^1eIs9sx@6DZd)|6=9J{-Nj$lA#>hJy3>+j8dxfpY zXIvgJO3rjF8XAqWa}39XC8UsxQjZP$hqt?Nlr{EmGa)jpy43&fUD@7B6QU`pft$Y+F<_=S2Ju#UN%)xKzp8Vs3< zts2$LLx{Xe?uSBjOjK0w%uLoq1P7<6sdz%jy`XbV4QxNc5eyF=+gM*O_?cPsa4?Tc zTU|X}nn1;@ITd0~lMgWuw!J5lrQt7;EOZgKv#}pv(sCclFKV@zTnn9CgkLK_qKBs1 zd&UqcDJnWSt^DjIFWskdxr@dH&cw&&cwJsarWY=v45TQ-UF-CVUw{?PbMeC)4hOYC?p(ShQ-_kmeo6*%OWR)!%S{ic-W=1E=V7JHhkxbb!L6jNkwe~7XF|(Id_2rr`7S-|(mMT4R_7V0b z;c<~Wex6sDT>oAa{m^>sc&}7KlX?|5YvC~1A^33JVvlK70t~L8>5rnRkxNH-dj)8NnBLjkYhl$iBo1R}#LpE* zOxjMa>F));)fIf_@YoSXU;6 zPN}S-l%M%q$+&FD^rjSe5Iw$tK<}`Wm`&JGoO7?H>nAwXxr&Ybula^~13T6{gx143 zL5*rS{26^~9Tj55Zy9m@vZci~dj6uz2wIuwbPSDj;kkC)%`|m{3$45!VSm2rdvQ3I z#c_A78aJ@Xj@Oh$xnKi9M#G~QkH0P!FdrH`a0tn@3cZJ^A^8eDV3p_XK?V&CO{t?8 z0FdfszJJ)9eV6oq+5`-;w@nX~n)0Y3(+2u3o=P>(om62S<`f=R6;D?vM}V}L(pRU< zARiycXIA;W`4U9@)v7aHAu|TN8ZS_vN03Lw#DJ&CH_sOFP|^K=ksr)dc$5Ftg$3A) z(MuTIEw;G3f^C+xG&=MgpZ8GDRv9}cZKdn!VPPe`6Ym}5o=?_g3oH(8a)9Q}NVvCD zf&Q+Q0044TDiqAxrXt!rYE|>ZnSv-R;Gzp!Wu#(rcVm zGzb<>ts-elzTmcU`)j0cLZl%2WUWOB$ssv)7m-3xR1}ta`7-EWx^f0R?C*0~s_1Xx z7)z`U6tH66Qh(r-f?5&V**VCAm7@Xz1MN@NndpIM70iwYza3-$dS|m?C?Wz2G%7Ur zROqW5asU1`){w~|;P319>et_=wg9OM|KlXr{}-=um6vBgAP^WDKBedVC%l(F>RX8a zMkORooI_l*Vg1d}rq=nu!m4swKwA@IdhSGZ>jT}p%*9idt;UQkqXCO9zyHqHUI^hYAtAw2mSZI0p~apV zmN#g)MI73mpQ%EPs|;vTcyh|zx566l^Rwf&W6z(dkyNZfQ{#M?0Z$#@P!chN2<}|+d>dK3#alV((es$ zt4;0ol}#&Z0hh6c-TD5CKPIHwh{y{(++1vRvKDTodTS8`ma1xMX-RV&I|m$ER^lc^ zgOvjW`$Vl+mg^M}>)T&XJv3|Fl9MtJ5l0ji(UU2#a8K)8>#DvRvXwY4t94sQl<~NT zS3WI?z6%~vN0aK`wC+ValwLS_Pk+0-&U5hgzbD4Nh4fE5MO-`_@22MyjL2EkJ(L@6 zsi~`@<;tof-&yz9pDnd*NFqaQ712arC|}|9(Fe(z>T)63`9mXk+WtEW5l@j?Ev> zi9Qyn!1s#zAq{noY@AkdHh!Hl_2Oaj$97o^kf# zK)&Opc0XCG+-F`PewdUt2X*=yUhdNI*!}Eo4y|*fOjZDm*rD+8W5M<9?cDHHJwqa% zOhy4$ZK~2T{C$lWdHv#;Ku7|)DSXy&0Ez(scn}iDJC*rd5?fHKDy#0C%Pvi>S`rZK z6*?+TNRhv9u3#mbcKs$ZTYeaPR0Z9)42x_Fut(X z_LRBTP`Wwn?6R(vywu_tP+*{AP-t?c%&o33Sd7hniI=srW~H*VY=ehT977Ymh34nu z{W$pU^r1_zZ=;xX`4OQ_iG)c?Dq8sw#zQ6xgTXGF2dYY1YHHT^1Sp~7e*9ionAlk| zi;Z?*+o&EB1!r$HoB)OoduPwx>x{w{uV8B~T}P)!!#-7wC6NfY!{XSW3ErKM9qW=& z{<8Jexw;0Dp8f?%7^j>XltAouyrZsvdsmc_r)uYT?Q-3%DW3*cLpi^^G-khoSr%4I zt(|Te(XdhWD0tjJE-Q2|u@`tu!~g{44|Q6phkH0e6HC7Rk++B!%vnxO^?d{ zn0fF^8HKIY)%@J;r_u?>e(cuj3s9zt=$M>P;;Wuw zgy6Q!V~LYOMGG8{)PRO%x^3ssV zB4j@f6^^&PoxE7iyK~vT;W};4RDp)e+6_0O3noM2nVce9>gZYs3-VN4_k300dCXEJ z$@GNIn^V6&Cb&4~6}EKj#*CV_h^hX*-ZBrt)RI;~slcb+5y(ztGg^?dcagc%u{p@&fk1Kbg=DlK>4C4zz? z$UA-tON5uo5XGcaS$n}XZul#rjE!!E6h&mhdrV669T5=#3549b-$uTTN_}_V?1CAm z0lOY~4Q`)e=GOOv*4?3VadWEg{LB}RAtO9|YduN+ z#>RM7=XeVL>){qDL+B!9S&gRcah`(T=yfpSdw($!9mbjS z6uA=LdWS2Fu5TPn@hWsLDRch3T_u>$?uIxteI1vI=n?C!(SqML2)^ht=-`zh8!DH{0W74 zYgW-YbvficU1J(!A|X?Arvg<$T=3bwja@gU@0S*LTm$NE$A_7YzqyFcL=xVBEVkqhY=#H!S9l_ zx1j>}rIYg%Sromzwc2$Uhl-nFaPD93LP#Cn68nT1&sBjLEqpMIj*&$w_ z7uiIc($B+`U1Z*NmBhW={0xJgF99}e#pI@YsGEN-5w?J&+&c{1H z4<_A;oP^Hj9yPx@7jK9?GiSzUb6B2G@$V-(aB;J~Txr;ytB6S?Bn02YQb)t2`uiO`{9n=X<{ame6$q!Gudb=yT~5Rr zfKI*E4kUMWb=r|yR4ZI4`Alp@j6Yl$n#g#qoE3&AXy%UnU+%hHEoN{hGw)bO858+- zr;Xcz|874+Z8v#Qb&=oWfJhxe$m23ha%Cj5by1()w2LYt2kU|$F7s6iST#W|_lKa6-!a~%lz$i-dOYcn|CxW#T)*;?0Up3x^SFnII)1v|g?!fP*7Qe&zH-zHX#4=nxu0#ap= zv(nWqjAbqh-6@-ptk@9H?%S(tpYcomEu!6biJ;l%n_GuF*E7~%Cwy-lN6XDAHF`N- z5*UL8XlZEAAf9mXlwvhX@!D)h&xWgMlHG-@iD(24Xnv?oo%6i>jh@0qAr4!;=7@ab ze!S?7;-g-1C^ogG5XfFM9CTbIR$GnfTvMZ&LZ_XILOGOM7FxKNQ#sr-2WvXtWVo5N zlMd|bV>O;}8&G4{mZ6LgxfO7|Bm#on?`?0vpfX3XZgQTdU#11034Rume@(dDoL?AK zt5H{>yl3KRSplA$l&1=*m3u2J|8&L`Nenmc*Uy(Eng9a+b{OCmS(@C9x5NQ#F_G{<}FLqQXYv zw#Qxr#gd`eRa}QA;_?al?h_*!mHI__dCW}?w%~(f&VYcEIYL@Sp8Vn8j}WpoK$fuJ zj4#h}P@0%u;q?o@>N=PYpFnQSAz0y)=FFYc@PsqJ0LY;xvUH%4)1T6RJT#H~mOy_ceuWX&S=-(@R zF{z&5b#3&VRs;$*6y3HRVBgSEFnsm(YY;e&ifttl0Jr{6s4tz$YVgIPm?Z0B}-@Rq%N zjySqW+}dj_Mz0pw&G#2E9+_M?nl#31{-N`T39g&5nu*Q7J0(Pz+Obi6JkOk!P0drr z41Qg{A(}UNIl8!2P`ODT3(8PV-&rhhSHFcTSk9LLZ_u}L7Y#-??>&k<8t-z7EVr)+ z6A}`XmE;#!>O=G_iiZ|mPIzT}GX~qDWgE54M(!-6ZZy_(>D<^99PZ zjk{+Rj{wazJBX00G$#H<-cY_R9bD@f8zhoJp6B`L7jgZy72hokgl%rNYeqL4s6saa zNokr|smR|mD}*V4m@5RfQhnOdqR9~wdfVFZR;H1jriYj_GHpDuUuHp8$|+Oja7K4z z>u}9@q{#f3H6&j}7W4Vpi{CZHo{-(vE)Cu^a@|h_9bb=2GHRh|b;=97c_hRQa`Kf~ zpPD>WKo%59vjkfsCG;qx6&s&ia{h5FY<Np|Y@aI6i?ag=l%yZ$jL+qdV{)f(0ZEZs95S z{_QUm^)t|+OU9rO&rjcw(TFLWsEojymNDig_BhhP%!$$7__bv&2N zwkai-+v*y|rYk?6PO7-MCqLREJvgi8rhp~jLas2iaE1idHa)k2kl>`nz54eV6-Nm} z^srS8ib-rDTK1+vE;}(ypQPHQ@AAhguE;kqYHqsTbZhO4N2hy}Jt@9{Ck5dSIiZA9 z7>=Pbi^7+Y(IgS1vK1&@=;iSdgaXs~LyMdkH)UNzdE{(tYAUK2Ci1T}!eQ65GQX^b zPKXjJ+`5d!!*d`BS~qPG_#6h2&h_Vbb2sp|Fqc&=e0&1BS$fR2I=$OrCKvq~y}-ur zVYb)@tEJ&q2mdYLr(T{n7*EfBwzo)RsK2s16}WqJa6baGu_~hRbSeOU6^a!0UXCV3 z7MkOmyckzX$(Pw&-JOL@F);ENc@VvMqYIL;(A3Mh3=AoeDf*R}de?%wOF}8mt*%~> ztrF@euoK=_9KDC(Pew55F}1UY2>iseR?%WeTFJ;f`qA+eT%fj3Z?JZJ0Q(@!%V)1P zFQ&X^E74!^{CY`i%i1hln0rBNG=}Q-(vcPDq7g&)-)`i z)SzOZR>YQ3osP$}MqA!$Nz>D$ikxAL@u@DDFx_7Y)GBJxCyOa4szPK{J@u`oDkVnG zOOMaOuVXY9c3iiM`s*zM9TcR}vqK4utz^ZCO~dSG6#tj$4d91HCV}K@d2L-E7)Z0* zzHTN92x3O~%n(9~ipS!UqP2N#Kqa>gBa4S5A>){r3Lf>N=}EXz!-dn7F9{$mPh==6 zmp~K2sHW#xYYl2Qbrl@{m4S51;3clp%dLB)F)?W zqw@qF>5hv|BYL-`GoTHUSJPz2l^Zrzl~R-uh~WR>)#h?Odo!vqF+NUCMMXt{PE3j5 zO^B2vfzHWj7@()elhRFy&;Du5NHZU6iLPS1$!u}J&Vm0}zgoaDW}t$BfdL;T7*!d* zN~T`rBCKkS2!&7Pm(bBpJ`Gmq_NSnw4$SPG8Vv2Rl?$C|2P6BcrJ3xPP(6~=)1Cv zDWA2)>~Oa&b;()_z?~Ec zmzGBEi$P*1I-Y4smk+{Qm<+eJXljIocYbzr!p#;#&&PeOyC+P>y*QQ%sS8)PpOX|{ zeVH1pRuIX-+}dB=PxriCl`oua)EXF&j%Q{TwqoGB?+_SlyW2ko(TICz2?wC_C}+F$ zcE4?KxL;CI18ZW62E~*F--~ES;IXTeQEC^Q?LV2VcdVPtu^NFj)U88z(Vtub4*Y*;rX~Gq3!=vbX7lDNvFv0Mg(3~od`;0pK!?Mu0EnfIyAZ(5gBLVX>FcHYAJN-5AX?@X^#rYIF zW?YQ5m4I4tMQ^@@H!||xu1ZfN75!Yb!g(P-&fWQd@%hOU**M5dEoa^KkC6zAB1UeN zbYCrx(e%Rw!$4O3R@Rz3Iq}(^<;=P*xKfp-M*|`@cs-o-L}cfZoj)a9SSa@XR#f(N zZ*XHZKk3+X5LV7|YjAU6MIX#CPJ|)=ws5XuhBR%$gjIcCURlwy?1zK-polSAuou;;rSFbzbFd za-jtW!`#}+9WL{7^OaJyzcIwwqzxQfb9h*vYyJ0Wu+&4l-NE$QT6NbhUH9PGc;Y4z z$u0@W3a61T6H`+?Iv+pS9(^2WfT}Dw^)2A@IfUcm(pKe|5<>4$= zUQu~0zY-5G3k;l?#vH0&)YUXsrB_r`jChIcB@%>RtlzulNK7 z4Qdk#Rd3u^WMdtd4F3W1HS0xU0q-1z008@?=qEesDYY}{*0a;p_`L6W z=kF}wmoB$W_roQXcH=Q8 z>$&4sNWPh!O-T=fg4}CNgC}Ai!nkMgvJ}Bf`8CcbOuNo^SF4oo+Ya*z4+h1?NG!-} z|9hNdyRKF_jEjRx@Cjzb0a2j$e!&yI+9vvhsbcw^5xs%>eSB{WzvzSn-`zbkT*Y#aK>SvHm0n)sV!e7(EtEZ& zm{)V5UV$mckCPj&>gs-jFav; z;iU=#DO{=uZnR;+nqPh!i$L^D6fKw10o2UEslxF|_qy|h>nd}D)sN>G&mtjZ5VO5K z`*o8rglbIhT6Ah0IKRIfl;n2el;qHKtI%u9Sl?O65>d=R4aGK{xB$b(_J+*IXanoq z1b|V>_CizeV+TIFxnee#Bb#gI>-?fLtvKfy7uyj6)Dw*TV_fpVjGTW$n*M6f`h5Dw zk_qC@&aN(y+Di4CQjF~$$GbwF;>N5t++_H&G7)!p&TIdkfaihX2(aQ^;9K8a&G+d< zjv^^mQt=4k*D4VrDTHMYxbMU7R>UqEW0o46NFUvo`r}Zid&bT$%v(|hR&CAEn=7fy zXKNS%i*tWH!+VJw6&YnVFo;%rpXHg@x$xggp3PH16O$h`rjE-k;Xvo*vu3zH2QuX!` z&abQ#@pQi8S5{W$;wA?G1|^8x(f9Yagr+O^^SlE{Ug=xiZ_fCh_sn92ym$r}e6@2} z^egZ*?@&kk4nh#+!8!H)^?!0rV#Afj!%r@~zhAHQ7b`ld^NZJMV8w+-M{ege@nv4M ze-6NXMNj4BPV+P&UaGfuI;XA1{WLWEz3%JqOc;ziJl3@(*LDpHADdcSVy-Od;iQR; zNUh6>cR-*Yd({gGRPleEuao1zjFau1Zj!~jxtyWJ_LY>vPlubjT84DAchFL@%ZJ-v z$*EZTfCo{JFvg+dh2fdjjj-{ShleBV2fsDHqY&=s8<f#v&a*h+09R5`?Tu`a=n%s;V4u_yp(h6GkGU zU9Ocn>&D2&l>&s)iZfg+?*k82R3T_yZvOb#y=zts*`JS2Z6}BsSaozw$s!W)l%M=s zVW(8K2>tygOBQr~^IP}BR#URXNx57{a45?;^pB+d@m|2$b8_aY-?nWM%2P_z--+{wX(8O=ooo?aBG!@Zw8T}?Jn!7R&z8v zNpz(UhhXz%6iRA4*a-bS(&3&8DQLU7B)(!<{QBundrrrzYtZ@5i_6?IITuF;Bm&ZK z1=hpH7(*Lo8Zty`a)qLc`ab<@6nlR#^@dEW!vZ|%;Q&ZevklN=4%3d=q3()B9nZ0+ zkeL&2V%%VKvsfEs&-wQhV!*U@oFC|l%um}e?azy~6nAHZ%?gSwLCJX~pPhFI#^p37 zl70_9zgu}8AVo+kPSZV~^}{`Zknr_iBMpNWBn%uJz=tRC-R&itPv#m^}QS2 zjvJvr9VQb#?#Xb~Rf~sL7CQ~K{PjE#0I;yOz70@k!3VOM^moKNjAewNXARk&qRY(> zQ-^1+)<5C?ZR+nu_V};2)#f1L*;Vjt`FKGqfz>cMoJupTdH8FMGpxI(NA0{qnOh|h z(hr1`AD3;>Zw}pE2L_NhG}1`CCL#cr}OOV^3%$SG9D z#;Q@+8{2i4ce2i=dzM-Pq}0Ng3{8S9Pu^_ot`v5{)T7poP1Z(LYu#nTBbm3fYMh-U z!ySrm&dM+To+Dx25G8Yp)bs%=jw9nh;}()I8uyTkfGml(2o)_Ww;H^4wfrngTYbRx z@@yiL78)LL++K3^^yl^uh-Y54?iMY(bGWmX+}C=B`1@arZrjWdzVM+Y85}LorbOU; zzk3l>3pJFWNbN=Pcw=E-t(!I#8X+4nT*-q~n{Ax(oCODi@@Tr4@d+q zU?uR1*W9r0G+%5;5b_Cz`Rh+GvWmPGq@=b!R6ljOKY9xMcsXU~V5RpMvwh0)IcI5Q0V5Sk^A-Tp|X5zA+Qf;7rMpKH?bgjUNHe%-^m!KVvK3&5fAg~R3m4WZQSJtQS6LYq?lYMV8nM-x}R%HHyrB*$Gf;!K^aYNH^MXH z*9>QWUuiGQ{*5Kuw26d7-x|o19OKCI@_I52tp&_j{MEvlE9oZUF;aeWsi-RE1+-d# z>S{}s!j+We(djc8wEPstY=w>WT z3bH>T$9qX-wPEtvsOr+xidn5ZAs*lJN?Q@)EFDfxl@VCONaqlH4el7ZWiOW3va6P4 z>Ih0KTJCNM&)jd=Q&v_V&N}~VTjCRywNi#TW7~}r;NlH;3gwZrqbgk5qYB(lTq7t<0YF(?ih8D(h##}?1_KlhG zf#dV@1(tnF{DoJ5zwfnN&hi5kb=Jajs5JWpx zFPu^=JODk5*8HX_2j|^iqYV2dV)^%Ph%zgyxP1*D_xzMj>MOHzjvG+s5JxL`8H)RX zDx++``Mtb&(k!Fl1)rVmX(ai9Iy}t%$KO~F^D83_Qwtwucc&J&vtu^v494hV9Ct9> z^m`w{x{`n6LhjRsQYjJ6TmOU=d?%=~rfBW$au5YentSA_?ipHUvJWdJ?Vc*#WQ-7PCL7x)f{Bq8QXVCMm4a{#MaoRD`=%5sAjVCn~RwNgFQWpfM0N7HfPnfU>4EH!U6L)-ty zVil_1#D%W!t03;Mk5D(a{YgNrF*%K_(EDS33hB6<^~f32m%&j9zEz2diOSllS*5FO zz4Hy~1pLm~D5U(lhxr&vDv^*#HAfmwyI=G34dZg!kPM`_+3GVaB;l79j_}+->nLlT zSaQ?*N^4g-nZG8`99A3EUB5rz3+^D2r6s57Sv(dCx4X0)t+M7HKR7pq2q?|&V({?Y zmu*3R&)h@Trl$8j&o9U378nKGz4&F8bU<_nZ=0=O7qBcM;@*)ER{##!7HZ$R)lK~! z1A|J4)LcY2I8hg>opIEH`IeCDE3#Jv@COqc8_j()d(`@VWuJ#}{P(qDIXR~v5Jg8!ca!0D(P%w zKF6+SC?e}$6aV}yE#pQjD&{&DnAtSaR3GDqFUVeC-L1_{N@YU&;lV@f{Its5@*m~C zwq?-qb*@W^a20wN5sjF}{r_oCkSf9r1yMpK3Xo)bsorI_)wB(zKxDP6MYDWI>p;|J zzx*=a4%8hQ;w1+4iUG5RlIz+=9zN_kG1^qXMTm^CdNSR*hqh_#yR;-7Y_RDL1D^#h zx_QBIc&ApUT0ck2^d}ctj@$H5?eMsR^v}C!uYYM>sU$ zTkNTd>y_uVFx6se@Bt~?+$OhtI3qViuX z(?=%uf3VCmLJkb;;Kp?oORW=YQD3{+kQl;AbBul)dt7(qKhN4W#|&cO3A1h@8DB6fu zm!q?^kU{{Zribqj6!PAQHjUu(3Ywmw;m)jLdlw9Zf{>28EQyT^swjcq^t0K@j- zc^2v5U~qnMo`SIHcl3j$^d#D)vE%Tzq!7_?h0S?dgaO1yq2Lq;Q~HNxX4cfGA$xsp z3G;gUDlAvu`G%)~-L};NjnF;pN9*dw4#5Xi4q1f9F|$oVifR=MJA5N6o%0l$T<6RV zWbbOF?mj>1KLDrPcWrJp271DNhEw%3SDi9DYhlC|*l9OT=CE+Fsf<+}CkO?y3l_}J2KGF+m3aTy zwnPZbg7mb9Cxx3zhCQ3myOK7xn-JsmImYqy zrHKW_&nw5MsG+J-CqnMGXOAaTBFk$+1M6apmQH`9BPSWNZEo&l3~w7Cs6IsdYhrZc znIwek?jb_97<(B%&f96LV$@W-boVieA?UUNGn+{p)sVfDHhq#5DYZa+F;Sn^;i&q9 z=Zl-_Rz4Qg-!QPB%-stJso4*GDh29% z#&)c4{6H*v+IX7(vqD|O3IkPdkMdxvO-+irofqhrr)ST{3+C<^R2>;XDKXZ+d}Qhs zpjsZVTW!ZVIPo85<4TC=049WUcj z5lP;mddN@!UdQEMQ~psD#gR^RqvQ+HPa#^{ap98-43(pApX0$dim>gTgt_^x{2MKK zp<6LT-jmKMy)07IwTj<0hamPv>cIfmJpH6QwOKE$uQCwBA;_{JRIBhLoEPsU^23O9 zMzLSg3u!mN2DkgJ8wXR`;pNtSsz5D_hw?_xY=g-6w36`5*vv?oViw%sq~wH;dik9L zwTcNbw_Wp9o^u@dyjIyYL~oOIDh4|iB=1_}HytAKwvE z0GeM-^08{!t^UqejKn?P9dp;A7&| zj}%Be?4MqbafU>YQUZMj%$>J_tLsVvqm)-3c!Htt(^Ssb-4J>Sy z@%ceS(&XFYuc+1tPeT~q2aVGLqxVir!kDEq~Ye|@~onR_De~bxUoE;&HjVF3eUAS6RN6TgQG}#lscn}?YCI=5IadFeu5EF z9Gqc%mDu z7On5#hp~ql^f|7?6kK)6;bn94#B7$09Zo=S7BlyC`L8jqPy|o$7Qral)+oEup1qi$ z-MkPMxC``=uI-%<5tj%{aQwC#LShbDn%zZpKMEz;bL!C*A4S9PFt8z? zf3on0agpl=@z%>KQ8En9Sx0?yQ$U1wy>CTQ_dW^hr*I`TmE3tCt>xg%-2j0^9JnqK zI6uxv-f1?^$SQLOm)%!%b813AR2%c=;c6L|gVgRy)HuU(J)M5kdm+b0kjixRn7JXG zRs9}sBKG0@iSCV~H7(Z$Di;?Xo6fQc7aq^ul?G7dgY5k)>H1xM@2=oqh$M{w>fY^r zI=Ecn)V94D363fTk}yVv*yO-W-5_aLjUker_%2D9$%vI&$+Q+JW|vxdpX5ouc>kzB z`8q-#vpLQ8J6x7@IiDdt5gq!~vTR@#6SJ;H&Llay8+w=aS)YMj)zZQCbU5|7s>xK9 zbw!P}N2g5S&>n^J4gH%q-~#VH_|H$TOau>J32pwK*4>=KI#Bw^U`>TLo#Pof&s$F+ z-qjZ{n`ms7s|*&-b9>UZzCmEZMx4aklSpV={;sTTdM-SsMi9Yky2m)=I0Wj&kks;M zx@DBDW|22?thY}*n8%P`6pZ&eQR|6jhw8^glmm?#3;VL-%|iJPt{qm$X!zYoOIiooG?)YxBJE~|>=%l)$B2dsrj(o9l;1zs=WbYv z4YUex(UC*oIzde1=rMvye=8H~EIJ%0#uU+-hH5qqb4oYe-7!!cNQ5KeRd^2JX{)zS zHYB-FkBv+lo@T~@$5Jrl+%r>vfez-WcG?1kK`*NRxL z-q0_7ljFim+F04hiG5G~Pzx+xbo+{@5nWlQdOy7qAcjjJ&h2KC5K!iD-bw#pHN3e- z4`qGETJeY4p}$0_n*U{{EsJ%TgcDzQnQGmXdw$yud)}>BcDz(@Ej*76TU#%pMW2E?8-Lk6t1xd>7_7v1DO%k&_R zO!3VikufETB|Vsi_6{T8evViUq6PR>nUF9tPNI0;he@GTV8a=TphQ|6;B#Mmo;4%T z`Nps9_f$o%lXa36HI$3az=7QEjKGnv)_7$(j^8E{oBh5c_H5|XrW~f;*V~iaSSe8K z>ZGBPQUu{z)MxrbN!S#DcAX@aqW@JYvJ6qi-pWTX`0(`ulKD;EjKDgsl{CZA6LBur z$#~iYB%h875+@wx7%a1~Ek=_SGS%I$@Ie;KTdaD@}o zW9PCXITzm>`>Eqn(m)5Dz^A(rdf^JQ3vJ0;w&8`n!woB6bt{GIJcZIH2ssV`=P&$A zwrRQNLH8kl(z>anWB>jRwYq-s4mcTdW!yBuo2YRpe^&s8c(~iG;9EAg`~fa9<9Sj9 zFBMnV3A2D4pOD4T&?2HP`jLMCA$Jx_)i6c2k9ySIub(Rh_R)^R-`KaZ`y0Cwl}gRe zMIAzs5Sc)##1pQkOiUX|j`z}seXF8KZ+{nR$YwlVPQdNHaN7^Wb`5T_|31D7t1%_u zX;4+&Fg_?XxqRV2nd+|^KL>6693Y)M4kf`WB*#tR}Zf%Z>&SNxalPIM{LcP z3}c4hu`GsAYdUC2T9L>NyBotF%N%BzW!Q2>=5o`4yg?wguj9AuK~J$I`rC+(t8oI7 z=ooFeI#+|NA{DW99r4k1TF)X!$HH>l%QK9T?iWQYRhL$pdZ3hYX>GIB0-p7CgYh5& zlF6>2#Ug|)R8C2Kq!iXuZD)^qSg_#;O@JTHEK0!dt|FZ+0s$lDjv7KpE}maps2~jK zwWC4^B0m(ah zs*Ezqp_`;t-=w7-^K47lmo~~I3E~jTW8tb!AMOM7>!Ja$jEHeZNNsoe(8R)Ay5+CW z2>P#n#ukS^AiFZ%unLq;1n2P9-}bMK72kWcu8HPV=4&EY9G&b^v%^}|rL)-Raj9OQ z!+JAQyxqbRn*JFwMg0cyyiKRLlQE9it?4!1lhMgNu|X~Gj+bnqvdN%O(l;V`t0u`m zNRep}8omRzUw)p?<53`a`DcxV`>;UFK&xTfRG3QoSAuV-k8F)dCzC?) za7Nm!E5I>|_s$L>rVj@3SdDyw28+VUy;{U0w&pWzaqhn&vO`U^v;9uIv+Gp;$=5Wu z$1-jnAO~Bv(5Q9e+{W70P41LC`FQsm#RKSpfqiBCn4C7mbAeACK`9pb_HfMig*g(s z7I^E~PHvqy9T4#Q(x;MSRPXTgSLQySIemCt5^#a-B0Yg_^X>nV(essEh)oN)hbw~) zU1v1GGu!*=KVK_aLLKW1#FiM`GFhtrEIZfcY54b_S4`M}FUuY23X9|?c51M^XVkAp z1lZuUHyiuAMbqoz*r7dE1;rDMg?*9ppOG4~iuqD$tvn_8AH7FK08g)>Kv}$ExTBnQ z<86Y&<@I_TQoQ@nivWE4q$T-OP3DP>bUl4_x0iF}(vo6#reR(oI07Rq4oCh8AvIteM%7#8<3{uvr7+*Xyi zhyJIW)z>dJq?_asuEFC;=AaN;0@QA}{$(_O_4``VvoexoU<#-BR;2=qqTyd%`K{#2 zzT%2Cu|X@>E?o)%ka5iBA@KY=zsDWJ26V0fL3`Oa;*_*CvVIgO(O(}P+82DtY2!m> zsoX0R-TVMP$U#73W+zOYje{*Otw>$;1#`u9LRI-u*i1eHt%YNX&n%7mErK^gs_rrc zQ7ZFmOO>)aT^|0rC|kk1##H@&qfZ?+%2;^FiZFC3~-w(C7g~Bp?H` zf|#E1)Lwnj@`F0Z^4$#2ul*0-pTz8&dWPU zg0q_IV*(PY^T*|1(!*WIbLZU?&UVTiyT|3`$Zk>&tX$4m5MnR4XtP=i-bP_b$@>7H z<0D(mgB~*NaTH93Aq-9D#hVV6$~AYOl!M)Y|8=KtWdxqIh<`uH;<4)`UW0cB2e9=A z7iNB!a;hHkdjz+l$jaHQ>)^dypxL+R7$48QeKMys`T{FuNaabFc3SEYB56-T*~lM+ zePSCgT<|T2S*=5{)70kGu)nH$Ic;dg{rbQ9>8`sfq^IK7I|Pv_jV)Rw&FF5AzkqGF zB*aI37`5yzK0a`a4;V|I24e41DK%?9Asm2PB@!WXP@Q4OG^8Gx6PPL|%#Pe26#f|0 zhJm|K$moo3uF*w!j*#df$YF0&zP-AB`m>xT2jM5|$HIS}4;T(iB>azycjXt-OgSFj zODks~g`ofWB|eFQx&M^X6SHUn?8@CY?jPD)w?9bNH=*>#s*d6c`tF4^eE~|pY9tAo z+{6*U5rT&O=lenb`6jGE1+)rf_3J_Xhl3sey_zYhMF0L43&8TcAnD)j%Wqnu{~x}# zwZHw(56P@>3=ESi!?J;c+j2e^&lXGcpnrXs{irGV|Jx$}en?G|yW~Ujds?n|>kxlt zZ_3x5?yBqZ=+`^=`oZPK?n>TfHl@4$eX+gMf=Jx~2@5!&2zH8z?LHtaZB_tLbe9h94PD>s zZe+D|f-6r%Mb917{<-L+3B(*srxup-$c@BLUc8*zsNzdQWDRxc>`tgAH0UjhU2ReA zjkEY@(FBS4wFU+kXFAImZBtEiI()2&F~+*-W1Y6~JVjOSvVoFfgm^+zb}J?Tu}kVhW+oc?%n`yqK0sM$n2?G2{0QNy`=u)ajHYd#T6Xrh*quv_pOWt$g=c1P&CFJ<_YpT4Mf7Bj zw$<1<*oLV#eX6N;O~hx#W!)d8jVuF~F*gB6)=K`|9kK9;j3*`oCiWw#OgQGV(xKek zZxf%)*FSm7aVEsp{^uc?tsj}DIC0vC*V&GZ-=@B57khIIPVG$%j(HjZ^MTqPMF>AR ztsa?C(=V#2RMq=)slRH~!fH5#Fo>73u2ttxtto*Q-c#R<~X@6*vi> zYaRN5)`F4L!!LgwmyI*Bs#rm_%&e>wq?Kz>K^JE5@cUd&bJe=bbsYR04HAK{SXZ4J zJNoO(27ISQy5L%y#)mri?nUSLA=7QG!;|tHbv}W@Z-UUqM4vOL4RUhgug| zjn4bW==ycAYfoyIaa?hQ>#)ZS?3ZTZqiDsA*~6d3H=Pp%++=+nEEIdC1>|*GAo5rQ@AMPn!rtyXnr(7OV^e76t@{nCxw` z!48{JDr=zMMU#iuPmRUGldt*?&*3MAmYr^WKkC2-XjFGi&^3(3VRJ@)bI{^Gq<9Po zM=Rg28`s&zB`+^eEh=iGmp3;161%bBjIXZFPHBPJW!?$sxc0cC9X&E9CuVoo9Q=Vw zk>u{MLgsKJi3NUiI&pG#GMPMX30q+FnB6gND77hRB}-TOo7wF?PI{02S4U zho7~wcup=Z@SLq738=0v>z-U($m{E8pq|*B_jJ8DKTv4=^nacO8dgY=HsFub+;7hlyg^6=j_yn@S!5B`=Ld5Uk>F%Pk<+fcm(Uh&SC_5syBM7 zVKjZ|>vnG!;d;Mi^)m@5-JjYoo2CbV@sZpux`3H zfh#OVbZ@Fm7ne6!oF7vPoIaMKD`eg6pk$tQacY@td%+);aXhC{ytZ581a?&xe_jC8 zd<58ZKqm_5>CfJ<9_&qTRk`UYC}dhAvHnEIqC6GXyMfCK=FZ&2zB)hjJREir5+X7* zG77mNc6r>ocbI2sNp#e$Py349;_a6<(fpg58dv?DfSBX$YsEB}(;HwxT$$dV@a zRMuL6&T}&b&}?8t`rj)(;i1RXoU7R233rMUalU)8)I7jgFG=eg)I_2X$HkB$;P)d) zsGH7Wna$*F!NJ1&xBjo0Ed5nhty)_S*}?<(d}Z3_b0!}F7zh^v;7hk(hLwI5J=!lT@P3IfD&V{l!9bD8O#DXmyWlF~1zIJ5%{^^~N zycJErDMN;q{0qew1f0(3lQ-vpRGCLU+q#Zb^Aw}Sg_3qk7)@P0lM*$+OzZs%KWMa=dX)M%Fa$Q8Xdeb4hLYoPg zk#l-3igZ{=&V?7J!GsHDQv9zomfsTpxScK|QjhSlYJdw!eJ4O*tS9r1k>f?Q%H+|>g{auqr`hKjg z`nT-q@y6q{XS!p_CSVKIV&C*le7#F|FU+~g)RIOS^F@6C@zs_JXEjRejO#N^lwc8= z)e?sxVeQAFQYe6Nl_)ZouC9hk1_bt;7sL)E*j!KRg1K~B$*+R(tegGRe-3H@aPzFD z>)yB%o-4B0X+qMpsuuinr4#02kjNDr@WXA|#ih+s>{(DzN<>^C z5hdR}sYAmRDIk@X5d$jN1^|?5Y)%N9QTev_YXTVt#jGoe+s9vGAzgO|1$t*iu<(9q z9k&#D{OB>2v@R*j>m6kfh=t#2OWDBKXf-CKsVf@Tr9;XhY-x$6<*ti|kB@J&f5h(w zhg&^+`uHi@bHubf40;r89Bfel2ANsQ){-Pbf`VSP?t2&nC9sU(-xc8I<>ik-DfT$% z(6RcR3x!p#=^38SR{Fjrn3QYX-y76z2jeflanD@L$C(sfcw_Ko%jn5e+lbKW;sde= zV}mz_>XGyOUtaQ^J!MD)&U({MR{D}?pwFByG2Yxwe`kX%DOJJG7DVW@uTirHz7B5^ zF4SaGi$BLD0OLG;{757;X*?|{2L;JHH&kDSXkwgxHtZm_w z5ka82z`H`i`Kl*|p|Xzn^?$FCq)$5A09g8M(9_^dARxCGBBK6-rf0Id`x*56YrfKp z)NVC^Qcp!4zpIFGO6HnISd7CX1g)KbF-UP>2DEd!UWpcx8v#trEI#!Y$!ZYIP3*}l zCwgTFG-j~)U;F$_aIm|;=dE2h9gg|D2KB0F*zFta+rp^CBYQ|rS`rZqYrTt4cJFs- zXwit?0Gi*E;|@MimTk>d9bZ|W(#GQ?je>CxG%$bfq2_szNyHEPWDimd}wieK0q#=!=6A)9Hf%FCO}yL^6POg3TT zL_tC2!=We%BnJz)48*;49S`u$e5&_2g(GE(tBa)0;oWukE(k^7zA|NXT=~0~Z~ofV zm6x*m0g2}kd#^;`Tw(^#)Y;K@K7?(b0$v`GWHLdMy)jn&b5!(t&(!eGt)TfiG@6hP zqO0Dg-1@bN;kjY$F9B>56Mlhwk3OB__5K=Ou}sGK*KYsx@8@36(H>UQ4)+vxrz`tC zaZ{UZN7YTl3jnB=F?^O+o-|tue>?%T*UO{Ud`vc%q#>{9kEyYAsGtdJB>tjL-Ol{N z&k*}Vzs1aVF{8zjuHe14UnTj#q+KjF&YFliCd}8b<%bB4m)l-FQ^pYL2?`W8R4MvS zreIo2u_I|fr$T~(OMpc7xlh9f5#H@^>j;tij1-TThSGh5qn!$vSF%Z{fNox}1kl>R z;OXUSG5~xZt9KICqQOe(6|VsE1mT3nF#dBwY3Wo=M0NK{#-u~swDLpTFS$7Twq zdo8c}ArdvXR3VLKYGT4{a*FoRr-r#BG<2CFz_;+#FG3^&>7Zas0m~mJFm8q-V)cWP z5h~k?Pv%-^%;M5nDeM)H3pVkb!t=E}~-AIyxakVwOEDj?{kI zPvr*OvHbr1@87>40}Qfr%qZS1*=*Q_55fp)LDG_el5(1E=PnI7ow42+{NHCT>00ZN z;$?g6>=hQs6@R6SnMw7CA9L@Ov1lYS>liM$rg*;kW24T&q=G2JI8iuzcV8sr$4V1Y zj?cTwcOz77-UdDW0{FJoEXG^cs2_^Q7Q<6Dms9=`Q#!b|3D-i_u~@WwyyNIa(o{94=n^Pu+9dIGOVctjG{(v8nlcsegYaFvH$>bVbT7zy%J&r1CIce zi~M2}Oozcwjc9YCo6I4zGu~yTxpEn9dxLY2(|!*e3kfBG^)D9*@DuRuCpp;idcVl` zi83%)S?#uOj)teJOv#N?%gJk@^0-ocRqFv?)Wq6gqlYm3E~)6+&h_VXFlnl_+^oNO z-*|U-+lk)HK|suf{bP?K_az$9_a*d1OSb5Q87@wTTy4>7l=A&=no3`X&6)_r=W4gt z;x{*p+7?^z&_n2(JUgWmA1ks<9MV%6b9`0PNUJX(WL8w1o}PUIC@p2RP96#3k~MY* zEB75z`wQilVf-s{{CJr6hEog7n=pfB4@bqB1B(v2$#y>}fGr8?c&c(BQ*B?(0=yZm zMaFNpmiPIdGJ~8U;{Ey5XP(mF=LzM{L_|aof!v(8u;*$h{gA=SgzpTQf{Ll=H-JH1 z6J@n2PP)%JtH>26Xw@CCv6e~`Or&d|Nj&Do$|jK%Mn=19`Qgz&*9rW4qo*)e;}hbQ z&Ij{}7zPgZC)|s%v@BVy3=22Wa|Z?nEH9`?cZ)PU2U$7Ts?-=?mCwuBg3>L3K(yI( zx!grBfl5iSt>e{J%w$~MB@U5k&; zSGie8ymh5@*BlEfe+&4Q6-8)8oWBs?<`euFpcEPNg`BxFvTh3i=nP7E8YXrg*O}E0 zDlAr>3LBF1`{UY1hIY@3c0g~CMLpd_txwq|Y3B|zjTLd4UKk&~2Yf4SrPBm_*M}}LhQbV1NbJ7LGHWMJ4lPm(1`fU#6H^(5{EqELWpZz0573u88b~H z;0uUlwbGi&;#1WxH8s;na|y}0?S&SDm4sR#E#0@m92`J%|0McFi`P3gRf^wOnUrlk z07sWjhiDY5wVlr;rHQMr%m+v0DC8>9RGK}DX4Xz$7w>QLXsi|@R zf)$d~+R5|tbIxkVsusOJsobu0H5rIR0aPgDZlPyn*(_E&^wkV?=zADINxVN{G1g15 zsX+L%Spl~{9-!YcQ6nK;G^qOK`7`fM6Duo``8#V@u;qh4u?X`v3MEx*#Cjm9-pyMt z`>AvKpn3O8oE{GTh%`7aDOCaa_G#QK>geg_$*U+;-8QHuCuH!mN6a~5baq5vL=>PzCnB2DK%F#DVg`$`j4F{5hdo^$JBxW_?G)tQ0>n4aa< zS)cv@XimJw_~hnpvA?6w-4zv6F<+pktD99OYn_{KG1H?>$zooSk{9O;v4mA;+cM>h z*YV$6A%7u_YVPPDqUi9xI<7;Lqro~lIzs|f*Fda#scHIs(`80BU4;I)#%-kxpznb* z@*l`na$(1_m4o~+^gPuXWRcdd7LNhl65QUME(@V5;A6Cd@p_J;&@j1a8Cgq2dUHa~ zCoa>7P5OCOcEinw@&J6s*P#ii{2@zl$Rn~5_Wec_)?PGJq|p#Um6$%eQnuNHdiRRW zU)}WY9l=w%wDsZX{EhLmc64Q>Dns(h3PFK94*4mBt1K>bL0S1tBqQ@d{fZ+%PBPN; zMrsZof(o|$1m1Oahr){pF^b>i;ZFcGH0n$5??aa=(`(eu@0{kZOab50((*6sDk|8n z4Er3pyE>BjeX{osAq%|qJkHoK5YurzYXD=T6ZLU?dtpm7gyl(3g zLK%_qAtADT_rTz{!Xz@}r%#((x=9e2~=0`M*12e0PzZ3H5}zm}kgz3S~d!ef%i;1}2-eVavJXOKTgKcwyE%?Wm9D`sSg2^7`P5xVq){2r&<^r0Um_@)Okx z***38_Pym})$eaHp#p$qyWS2J$Crac1A-pOyOdb6i~>KkmnfR5C@3gX(>0@%_E)$7 zq+w#l0@h34*tbTy*amtePyo|BoMa{@oPg!l8eG69GYQh5prDVoy;5KMEFS?(V|Ax)w7?mC&PQc9gfW_4*k?$C$2zIhrj7=uN~#Qf5a#!v)Lwc0CWyIwE2w2FR(z zdjAwm;Hh}fQ}U`W<9Vgs-F8xSQ;^@k2`t&JJ3QVF6EM6_ zc$))!1c)?(yg4oaYEHQ4O9a$`@`Z%lN8@7GcGrA~f!PyQ=GLL6ESr!%-^)WQP~*=l zmV8@>kgxS;YGUO13AqRfVhWmHdD8R*@bk<2Xg)ZG(+#>w#bJ7f?5ekC{luml5X`hf z2WV~`MeR#=R)fIvjJ16#Dl8K~h*V7p3_tuLnKl|vy>XFR_@#DA}HoM|PmiCP?Gb<>=?*AB^^my6k?-*w+dA7Y0dk63 zK8h*D945Sv(_U2)Yt<4YB-pN8CW#5;Cfz#NEcnJY!36ybvjKp#5+*k?umD$Pe)Y4P zJBWJ*P}%miRN+SckFeK(ceD)H02?+6akiy%7eKXxdyElj`rY~-!^skV#(t?tLBG8*i zW46)uvMyL#$He3*GCKNquZ$OqaGNKC$z1;9kwW82s%@Q<#EXr0M;On3cxSPNGbB$9 zAys$WH>&$C|9btAjjb)x6r^K(=m#>ENw2BF6Ko@W{RZ3L$H&EQ)~Ppwzi21yiR;nT z=+?Wp0Xm5IMz9PeEk!;D;E3?k{@-&>3CmsNVf z>T8vSN!99}Uzx8*^G|QaFYjKpGTJlW zexWiiw^qARHJ~D#z`yJhm1NSN;dVk6`J|`k^X(|_*|U^H7BP9jI>P^kI0>Ctmy6ih|Qmnkru;ESY`;`XR% zKJ~T7t%nG*q)pqIM??Z%vG~V#jkoumch|<(M2E+RhefR065SjQ!yZsL$d?(c+_oa#Z zMTw}d8w>vexo+M$&>$-Qd1qe$1@M5`@o#m(eLRIis4k9XCW&%ED4&3&*E(K5_P=Q26N+ zDr9mc2Ch?(_g(9{(7$cpu^b#*Fjv=730X~t*x1-V0%*!KWR4_d-YY zrL2F068c_eoDY}Rj(t5u>sN38`&R+OsYL<-NES^sJIZ{6~3FVP|J8L_G8_-`yjz= zUgQ@9RDe$siMk{^GKe@uwi%OY0*uSrZHpI?i8doBBOtY)@bj4uqpRCMh>4Zi7cYfJ zhL-d+C#Q11+@6nUdm;&&3MZ@;?el%ReS!1QWrw-?C8|$eFq%-O-Z<^sT)NtT{_3xU zz_Q8-gM-n1x?nqD1iPwUS3ouEm3UuQqR;XTl1IJ3DT&|`w8yQ^yysVs>C`R=k&(Q= zFjRSWe|?#y@IAftaeD`G7Y<3&(#rK4hW6%#HVq&@QDH+_BLjjHIBnEq#d7PjQ%c1@ zSLKk6jgJ!~fAcv_E;YUWE!Pa5Um)LiZI8Rgv8@^Tro;Jw+j_eB%VF)69X+z6nx62$9QCwWEhjXd;d00W2f1;43;R-bN7%Ls)SeXED32=kj(A-i zY^b`}^ZikVhwct7VLiy`FkK`xylnmu0g{Z7$t=*YNta7j%nQRjz-jCRK$9EczjKOx6!p@;Z#s^zZs+L~? zKIyyj$++K0hZczn{rj@7+f^VvMROJ(>6Q$bRHYMgF}6DJ>)XP31W5P1>Hpn=n3jC# z8$Tf%5~4hYgs*D)&D$lv&rc?|RTGmZGi;}CuF2N=sR5sytr!9@BmT9n|154!x#~@v zKdiQzZ|}A7_PYmrt0Kg^4paj&x1Ui^*l}&C;ldiS4s0TGo;u{K{Szl2E_u&)AMFAE zOtv8n0m54jR^I95t;1=r{`$k$)nqLH)FAW+q@{Ct=Is2>~fTp_5w_RdJt@(1_%;Byl` zyp`X41;)5S$SDSFJi3wD_q-864*DOh< zcUNZ5egYS7<6icIwuN}>?nsk?p06=U?yAz-Mwl&j^*_FOHZnf$7c0Py`=5oP`)k%e z)x*RCyc4(%*NTYs|7(p_D8OEZO7IC()6-bHU!&&HaaUE^XSFG_rcNK1bxPrk#-dtU z-E$3N3@Z_rRwh<9#K4jKUA;3nRvs&WZ@1+yx@Gw-m;V`Smg<%NGLKzQt(#RB`x6nt zzk_+{ga0;sdLX=k(hk?X&DO!8CpuJtMTk zmi(lbfp&^vE-o?O$^LPt*yiJi@h*Q?=P~@h489OoTTTYDK6-{bvcseoht%2c`3SMf zk7cF4-CuwBAR|RqOjN7HhwevyO%y1{Q|{n87{uZ?!Goy?l9< zNbm9&qBdq*wJKfe+%9V+o{(@e#UW@{k*umt^AX;&xFZ09Y`kM<5^PAvR>l$*3l#XF zFVFyC^4L6)UEv{@Fkkd>p_rs6n6=uEAa*DCoUsW2RC<;^rrfmq8R7|;ynw#K50qC0 ze!o3)BD}liQ+k_e8cf1__ejcPSvd)W5?X`Oq7NO(Un;#Q?v~-q2LUP;iw)ZeXm8GZwa_R@pVE8Qc(3)9n;Ri;15s^_);Jm} z9aMSUw?F($kFG)^Aa2AM{M_;^q3M;148towpH%MJ4D!z|#vj=h+Im_aOP)vhoTqFf1j;n~`5FxH?vm zdyA#&ck`NTQG05tT=#~n%!+XO_beFZ^q z@lVMllUo}u1<(Q0urU#fD~rNGkFrhr_Uh+j%d4BuAK=5{Q4{U!(S%q|Lu`P~ z1i?`2s6xn28BS}@3|eQWo|3Z4J2r~f+U|GnOGn3C_ci}?%G|w&M^A&FPK1=&U3Apv z2zX@$mx(l#Oh4_^!;Dp*ZSA3b794!;x7e6H;T)8e9b0jWS$%^s6(VkgE*kpT<_z~~ zO$3L7=beSG9s#>Pp2*-=)bGDH>?Ec7-!Uyq3#%M9Xj`_a`h zo#G5pjm1o$K@PCN*|u2_7iQKjEe+gwNmX`bN(lW*?7Fm`1_ z_{9G{PcRHI-)sApdyHGN&4ifV1bEZo;#o2~=EY*;)p4=x$GA8@7zGOp2*E5cUuk)I zTAJ^D6D8L8{#!TW6+XYh!qC71fuw4E5EXH92AgPeYKzl##ifqwDHFQu7Tf`7lDpc04g)D&$AXwIn6!C&del&bsB_wVCV z+@E=W)3kbVeZ+)INEmYOUW3h31)rWY++k_;32t4l+sxG_0sJlxCv&^Py+V1af1Zz{ zABYifY+mX}M%cCZRYCZn`$uE6g>FpL! z1QE;G*z5>mS^(-VCSe@=F!Z0)<7m>LffO7cxVcG5o^p-ptUB28mDEf2h!ZhXOM5@6 zBFP;Ndm}fRbTEAn<#UuK(bks33B#c@Or}ff3G{KC5UY+m>${ni^YioCd9(HctdC{o zPXOdy(48} z^3{C-of6Y)jLYzR*Le>|dPsZ?gjlcThgibmNGZ4;`C{ygAo%}JGy`VoIPE-XJZvz|v*fFL4z(6;?d%Ed4`QD`a zBjD3#5B9vt6jMZ_pbZpD{5r>&(Nv z`DK61n@P$1GZgoU!2Ls&s68O6ShpvA#$im_j!AI4(eSWA0J0oGWf-wawJZ} zJVFbKL#KpenqQAS0#qn(_$?mWUjBHX#vTKd!x)YYS2X0=*}Jv3>ypzaXD3=qT%7ic zkDJB7ZHrOcYq`bwI}_*UpUtek=dY3)w0C^cGea&udi_dV-Rk6&fQJ}GwW$jj=byV| zYGu`la#$a*-!FB0a(X#kx`!)ekeypt*aBgs6BHDD5<;}-TimpS_Wjeh)b}g+{{5kJ z&ZvV7P{22YK)p%_==&1^pviiaci0dQL?Xv5oM=2s>lzpDe~vR~LLv2}c^t2-D979&62cw#KsyjBP*;g@#r96I#R7H#(NZu#?M^ zYcG?6;yta@2Qp{9}n%9x|Gw-lXGA~OOh;r#iu%{g_~pYS|@JMk6< z(E@5~n-wcB`{tyyFM7fW>a^Tmi#EZeGJs}AA)im}mzqU{?0F#nqYq7v^MCI{&*EK~ zeSUPYKby`VDji>h)ppm=lpoq9Bt3$+H9Y(b@J%7FIizsOv_dwP_X)t}K%MLEbn}#Z z>q>tLom{&X0603Gg0to|Qj+lrllfo!Fy0@!vufSnlF_*tSo;e986OARIR5>?=U};U zrN@B%M0Z`Iz1bZuI-&+$!yJ6o$cP__?fNeM((;Nk`gKH(LeMA>_gq5q$F(}knYE36aIwc^@-`?)$$5d| z+SDZwQvOk~;k4v^Iha9t!}}MH6T)*pL$SY&?vpnZFD*=Ms3Z$gwJu6W;YQdVljlpG zo)a-YkbbgG1xUbf~80{QS88Ko*5?VNqJH;zNwjY53kg zh-rn6kP!G#l^c=AwA~-}0MGS1UkcJi0|2XfvL?Yq#9Y{qzwefXrlpY`&3!K`?6hO4 zOYrEtRGv}WDXff&e%sP9@k9X=&kcTS!$pyWLq_(eGOIibB#L{avy{yt7nuPgmC(~e z9{L{USAX-I&duscbP<<-&5#EY%F=I@uD*Va#&-pIbQ2ny70QM#2@qPdqNws&m12__ zwq8x>JlUS(CAda;I#c)~GxHZk{U6_rJ}q`Q zY4Sl_r@9+cYieo+E=u?53TtQ0vG5JUgwm&C{rq4*G(7p)|ID)Yg%lB!o^SO3+e}m>Q)b$Gsz*M4DqNLFdrkd6?jOOsu z&;-YUN|4QNu+6`SpBHQ(q<lyz2J2xMpmf4mk*pnfzo(X?ss`$CpEXL`I zqCa%6)fP3q(15MFb}rg`0p@Tp80BzpWN^@Gu{lP21X$M$5tMgXk_J53v@s*U{Hc*0 z0pMF$*lSW^x2NJw@Q_Y!;o<^o3ra89_7BQwHF&mjRcF1m(r7?e8Zmu$_k;tH$7H~Y z_>M|Yn!jHz!C+TM`a1yvnL+3g32s3V$3s`8iUhFSyCIod?@&14>|k||o>F{c9ojjI zb3VRB@~=i68yq^9aOJhM62m5Wbl#`<`!1`8v+)!&5-Z;!7*kT3$!?N4Y0YZU`+9RB z&f1arMS{v)5CwgxdNB>-{s?C+tajd_eL?oq2UZafh-LM{b1vif&BH#*CC7LT^hKv~ zW^CA=Vqc)+-rt@!U<hMjRwThw#R*on9X~JS`hD?0a zoa?7|I%RBi9ctAoQ}YXVk3V4NP8 z#SNvD03|H*#ayF<-J*%E@t#KrqK*$Xgv!Zr4cLM@ORc_$Nb1LV?xNDuVPXI5`lpBnT5Nv@_qj8Lj;o^*m z6?pHyy{S7r#2Oay>uCnL;q7nU*W4p!el}n5P&s&Ki+K1$QQ1 z0=|9v@FT7eqLLEugEbOo1MtwKTxNHYvi6zQPi*krE~v7*@QzB_67V{>=Dppd9j>Gj4-=4cmM2u7>OsJefrqpVx>6Klgx@?*kLFug+wf_Pj&os zTHnaEdWnvU`x5lxh12!b697Yw=FfDQ%fYMb8t3jI#f9IiI~%@7e%(b$LBx@ZiC{YM$({~>T{rp#;5x|5=%c9B{MHWvrAv`b%dJEmd zY}glBHPvAAsR(0h@XpyG0Dur4Js6G1lA;TB*VQixz5Qy2>;;arbhdUwm&Gy6Cqx%+ z!eK61RLLfwko2IZ2m%BEtfMCrX=!K|2M&KlU3$Ov2w>=~CdOG_)5i2rFI=!WJCz+t zRm$%h{Oga6YTe|!Zy|R;Kzo6ZaNF5)uIkuW`{?p%x~ml-JfrG&wPA?s=Kz1wzPcw zvC0krFrY}W0w*i-@c$6id8+B=(>gkdgi(LXH;Ng$W+p-!8Gs+F!P7ir{6W)QFf7@r ze!>|Ro}G;>v{3eDa8dAA0zOK~_*;I#^ySrz*@EEaO(sR>*Q2g!N(T}l(0F% z_1lpx5?1IZj$F^mCmGRFi_DU7X#A{QEZM$~^^vLU@o>1sL*rsx%^T;9?RER>r$W*S zQ)qRUkI13(&kcpM7N<^AY&k4=c^?7THViq>uU#67N0P4=>Rw$BXW)b1D6)u24V1&! z+1OY6Codd>iXa6)`_)6f<@$5aMT8OxDGGWGvXiFs%uHz)wB?pWtgP=NGm?0^-8CI> zI$HgtfA#DY+p!hklQbC1!NT-r zbLo)X<9k}#Yg|swr|2OJPM2+HoUWVX3W{&!6@h338m>+^ur`5r&##cG|j1aOwI zYi4G;d+Q&|7C*AFv2PJgu@=$Xe;yeV)!fAaNNW>Gt51JvS7YhBX>MWBOct2pTY(@YWib~D+|le#20^7_Q1fHH*ry5wpWsdu#k;twtOBw5t_1x z^L9??<8YI4$c*?EXboaHSmHkLreFQ;`8?cLkf!X@@^8~;gzVA~ZNUa;SGmJf{Z^xo zX!ElqOHzHNWT5A9G-u@3s)BRTLdxW6|CWr+ZQjt@UDSQ}g>>Ol1K=Pr>=7n*?7-=*-&<;zoQQDe@HZnX~aeM^GFUDFM4+)(Oj(TuOHk2ukXG6bNe#L75 z08)h;u~)5u({QsnPcny&;hEF%uDq^LT=E(YSlN*7#{Q4y;|Ks*hRV$YoH_J`id`2T zEC@VW9^bV72xF9d$BJ!Uu|cKX+Ty6{Nc+$>-fx?@Zx1Xk@(C{F(_G*!S-$H~cQ0iw z(mBtMnM5#_@SdPad_u$#(N$!j!hwch&oIexIK~h$wrR(J9l3a1Zc> z@`v5oq+&?r-4UA#?fpxx50c%_2@(2$#f5Q zF)&$Z{iLPde|+;PFZZ*sEpbshiOAUn+rgl+wrX(Uz5Cnm`q(;h>vYqcE}s#c^ZTc# zS?Ty2!dzmKoU>^)uphKI=qqNE!Y_ksF;pCiUInzvjcW>eh&&Fla3(RVp(cu_x@)d7 zk(<=*u6EV6JVf^&e=G7>H$ngGxb~-%^Gj@Y8Nj#5>P2@#o(HNf02a>jTRJ81p|92k za_F3Kl81x{O)|mxtQNuR&p5A99s?pP*!&icvKBX?1$@N~KIL_xWF|1W>1yXsdPeAJ zVm~`!F5_CXqVg`>gBI71xTs{nCXKXRA?exmgl*6U5|zQC2i6NVeLkv}ZhMsE=z3*= z5X08~ID>0>T{t>DrCT3Ae0XbDLod{+_aO@PEf)4Wh6~Qdt1CGAP>jucWGM0C?#a$J z84PUdgbCr0>GUO7M$jh5iC-DeI-?8 zQZ|a$1XIPrvm4{YJQ)9K<8YISiY{#ucqcgC!2e&h5w{%RJ42LwF!moJ1CIa}_XbGJ zg9jWoLcpr+fu!Hy3-9zwRP6?4tblyxf4VK>j1`xTI->V7emTg7BjCr2< z-&Ud@H?{NBq1fViU0U0_zuRi3Pkqq8{f|K&E-3H+^Nt&{Js{KbhQ0BJJApQnJ?=kr z1;gzvTj%h51cTT)YvCzg^K#VU_|LEY52Hbw4~zT1-phpuGw$!6)PLY$is}FRxA?y# z0{o{dYP@ssy{qy1GtkPyq*+v6|0V9<{m`%#FjtrwUD>CHs*ma3V=}UX;H1CXhvd?2 zM!fzbWvT!`h=qn1OI_1Pn}1dW?}BSve#`JottC7?H6qlw3426lw!-54_{$dkxA_U8 zH!Prs>ba#dMaNeG*X&0b2z@+Sj6$sT1BFBl8E|FP#(jHrfc!*s9K>!p^P*;61;WqB z@j?=Nfc=w@`%s;EWBc;*$8p-ISkTlnLEo{hdGY(E|Mqm{???Y%_9l0?G#`_dEXOhG zkiS}$xP85UYm%2H_^^c@&HD2uKl^J?Dw7vKmX!aHBmbf=_{5C1S6=>?Z{pP{=jno@ zoQe`Y_c;1#{73XLZD*n{`XyS7q@I{p@N-qU zNEO@#L3I=Ji;SB$CiW21pVZOL@AnHQr3|B6zF4A=hq~kF@(sk;m`jfQs z2)lWK%j}N*^veJOjP;oM5B7Dfj4`HC)1D=j0kju64lBiz(UPiCHN^W*1+L#(34R&h z2)wy(Cn;_!3LWMi5PSEn#Q%Aaw3H4_Oq=tv&dYdaG-F4LjviS71YL5MUSFknmCy|U zT=&G-Q!-(WBv~TVswup{e2>|x50NuOVodO zT15^bzAI%GllBhx1D$C(-rZfXvwql9KbV@93!Tq28J|*iq@b%E_{w$DI>1N>_?6=D z=(;BdjqsnQB-Drg?!_0QL8PFd*#p|>o_FD5X`hCum^o;oazAuiQ*(?vx}clma0J^K zX})}OHytdJ^%x+htufc|4oynW%*XGB#Akf|G0GBf;qIG<)Vnt=j_bJK>-i8%0Nx>2wEi;fwd9p(5EaQl{otKl@U`M7K|*ySJ0IxKmlBw6U(= zcI&(lzcv{=bTA)M?v7H&mh&F5!|AM4FAy0dw%1aJj?L7RmHEqXd0aOyCP*VWp)u%c z?@f0>!6N`g93BG9Tp{idiGVOiYWWNqGb7}h1kun=F$BiUp&#Cl{R2b)CrU836-Ys{ zZ%~6*NZ64o0vFp`qWBIp;KuH!CDK=wgYR{MpPrDV<8&tMlpV{v-l*1Ta*$agXqMqkikyueg#7n74 zdShM~0KiX$=jkf^zNvNDZDQ}_Cj5n-)om^EaEEc(+>)Q$t}ZTEUJP*C5vqxXn2&q& z!9I5K-x-9q|LbtCkWi+qJ44tta_G0$M7taZ#U!Nf+-LwgTU$db5*B;fXQKVr1f)6l zSO6QdAyv+jbNBxTZGQn&*RpN_qYHN@xVr=ouE7HYcXxMpcMT!91$TFMx8UyX?)ESC zIrrVY&%L+)davrODypDZbIzXKpN!Ex`s?&p$QU00nAoWA$|M|W5p_yxs;q{VUr92i zo&EfK7S*f&xLwY<7fKHWKPceAU>bL@1uul@TDg0X8%sVJ0tXjYRyipwiJzThcPE-{ zVuYL#6=gcHduS$^K?bKgs3`j>qE}6SFeET9<&UvqmcOF{`K-EC z=KEO)&TjEf{nAWc1+9$Bac(R|cg>P*DCsnRKePhVnNQl^`dngoR*W?fLHwXo8)UWk z-be1F$(h$ntEBy2Z8{K=>pppsYLtiMybFk*?iA9}%;J#N#Tkso$#gl{GD_{TA%~HF z>~T}yR5I-A+d5c^`7`tTaqw~X8L`mCTl(SJ<>Ym~V>!xdtvO~B1r-udNM*Vx_xx`W z$ST9${@5TNX2_t3k6%;^r7-HZkT+`&XxS6{TNNG?Wy~?w$*y848QBrbpPF5Dk zW0TrKyA#^osr7UJ?jJqU%8M@YiyIsOuvxH1_|+`a7uQI*OLzq~dl(q1tvA^4u&@Cu z{fPQi;I|Uw=H?}`imJZ74;(M`+hRNWdv%;LDiuZThqTdVEc<#dxrerPK&V=T9Vm!m zZc!4OnHaS&Jy3aA@;7}6@>FMD;k9K~0UnfS;*gW{-`5#A~r01C^Bx|4a=O@B#_8e!c( zP+lM$XUQ2`?ZY33zFoi^2J<(Rb_RK^A4ZJ~&%xaDUXzzvrUzQ(qp~!*2I)RT&VvY; zFgv(*P-A^@LKz*U3$&6?{=@@H!stHUBF-`UpqMiLhJwX?54OP799A!BWKYEdnsosk zsN>3Dsm2Kv&wh=2dR}jxv!6A8(8L%&qr(Mc?v<6b!83wuJHmU2a`ym0I2^OxUJOHO ztIr2q)KaXg%XVsN<2?y@k#i&$v3RX6O{2KAFf$36WT5j4a(aC&iq9eCLcoPcj-vDS zKI7~Opa67Up0}frGpBybgFabCy5tYnafQQUh8Dtj!%T3#%RZHti-`-!6yESng58>l6KK0EL#cRMUtJ`}y63Asn zW>osv)GVRO9asNQ+n6;X%$8JinRE^Vw{=wPtn$!t3_l33;L`~@<@aVNc6g}Zzx0^F zh$L{~Z}kGb7~LXweJ@k_a#wZHQPDFuM?j;5&*t@<{G)dzBYIc*4l!Ew?yR8FrSQFl zIyR|`fd~r@qa7Z=6^9}g)q+_==z$?`_IiyZDMovEIE2)`Gy>YkUa@-CHuk z7Z_0zV%icU1qqi7kBA5h9^xqY-HCOs;#J&&u%D-ZPOp?>M_Jj`=upD(Z0dW?=74HxY z37W_Kx{(tRS^K1v++c5h#6Ui1sXQ94aj%t(Jzty9aLY;l-?0BK3uu&JOJWr*({(i- zb~QwB_0ne-(4l|SCc2kE=+}q=zAHE2zc9@x$|HU35j+KFbZ*dh^R|zIz#3y65bSZq z8eK!W8Co$%>2?nI56yOTWQ3ikzNJ4$;JES|+T&_+wjeDQUH(|+>f&!@$J6vAVv5Ti z2<22qOFrfG|MR|PqHAmo5-$;Ckr=bN)JF4@eIK}-u4o<>p)CJ_qydtY_;V(O^skotb?vO%~x$v)GL;X-|A{0 zv>KF+&ras@gaBmjJ3G~7PA~wf^qHkS_s6SyO>IkmRZ@XMQ&0f-HjSd*w?BhqAp8*i zFD<~9_flkI1sm3ijqC(pHrZY{Sn z(H4d#@bBkv*@1diCo3yVcXdV!jQhlT!uvm4@rYxa^!%&&lo9l)$LDyTjDh#$GB7{8 zMd2_+)_j>IjZjHg>7ATN<->(TscWBKSEnO$GB(NEo(bz292E~pZv%S)6GZ+r4aS^I zZanS|T15Sg!-Y$F=IvdXPE6bsoGUOeXT1}J!|MwA?yT4c+hgzK@nC@(7GV1_sI&0Y z(~y0)?DL}i%XO(_9nkua;=VJZ#oe$Kuq%1CRQ2VH`3btJ+Va*z>}%ssM--r`hlU@* zxF8WGrApeJ{|c$2AbElS-^${IBaSc5^hx7(z%$v7{tEGlgrtR(nG3@U3f|(1sjfE% zE(7ytl7hld+oN9M9b=R3-d=D5ZN39!yy)ME__ud@qYg``{o&hDE_|Y<1M~pj>T3D4 zDDLnb+C(`yIYbjo_CTi-|BWBgKP2+9okiQEbyTU;ef9$;CaFpChfYB@l0`-Wb5}Cd4fb=|> zKGHVL{<2ckZ8TIYkZi9u5N+XVO)82jtBq0*7=elEe&p;Yxh*tr>7_FbmEl);Y%^;< zIOJ5GR*u3>Yd@mgjj!1{UWarypj}mj6h^goR1kP^3Ej78Yo$79 zgqRi{9aZj!xY$}ZxQ1IOgkkH8@=Tcm?H+?079cC99+}i*$Xa%QbJ#a)Fw=Q1y=gSveR{&8!uD|m^)r9R@F%U8xz9>1A4Lh=_pE<~Y1TozS|Jr1= zpiWxWmeJDkv^D|zISpr6)owJ2RYqKYd}zG$XJUr%(X3&V`|CM&_{NX?js@?Au{0J! zAn*YA&Xk0?+Mfj!78UvM)f-K_e}1>+MTb>!3=i$cYxQOh}9A z9l`u#(`lQOl9Dac(e)iiiKo@!SEc9H0!W$D(p4JjfAg(py`?!2EFsT;*eIc9#Ci3B z3IiE{!1p>-lQZ#d2;Ykg1CYWv3m>%_*&I9oJ>io7XvsbRK=77++y5)x{p*L!c{bjt z(S4H$&7TB`oZLvK z3YI#nZAe2ccO-7}+J+hY^Q~YYKfI12|L_6-E>xtEbMqcnl5<{2T*>D&015f=;d|dcK!Y3 z;Q`c;QX3=wxS8*42j>$=O!SdqrMVH1KQ)yDE&AXL>x8upfSu?`746VunkgEO4dZY~j6JI`AEWYI@4+O^&&!7-ods4+ofkmNj| z<)+5v)vU$$3a9b830fpqO%!ECeiG~OJ2J7TtE+q1=`m7|O9Ih-&)~1Ti~B@}&@$_I zyr!bMcCkB5TF%UxZ)U>UzMlGdUFCBwJu^E83gB9ic3#&_2!%YZc@n~`(mzmZz_;yB(fmXz$TH>qnYa+kB zMo{4>D-~qI+#SHTHBvYVd}rByivDng0kA+jGi{uRzDsnvlBs^2wpK^LIx7M2%_+%T zd$U$ZNZhzcxKCA7Nu+~v~9kDay7Bl#md)*%9#f*u%ChVFu2$56CabqyjH-~N5 zkd1URqIT!!>-gqntjQDevld>D_x$LST$7^lV)gH3>ZTIVHjL5vhs&^VjM-ymZ-3GB z1+o1v9zHH_?W3c|1;yuoYyeVH$M47TY3V^g<$c&-E!A|rF6V;Ob8Bm@EX9tcM2Xs{#mg?_R4n6zG%?j;*bAeN&t( zl0>((nw{V;&m%JO zN^;E0$Jt&TphVsIV3wa9?HfQmHgWN*@V`}pC@BH|%+PLke`eWHXNNTK(pI_6v%ztMS`3lU=o|bIbC)ob#MhI#b>3KTttmX&D$}!tpn|N)^|x{#cNNp^!sn5)<*->7`GiF1 zkv(}hxnz$3xeOZ&!=sZHRk3w|?)C{7oTLRnz)Y@u+`Vo#o~lC)T7%L>b&>59&aZpL zf-9~hwVUCJfH;fib_?a#rz3*H58ED;&6}^OJWV#)z*)p*iYw@*q=8Iuk%C}gVi9T> zLi$a`f_AA4n$Em&t!&T$PCJ*A)nkR_Z-jV$(8ZiJr6R9UQ+5!(D4kudmex^*R6|WWyJl2bj^D|tu3GSXt)ygT_a|h|>Y+lGN$yd8C^ip11qH=N)~i}i zNn8;83&?SrjBn3l>hz|>_FV3#%nr7ZKF;>epfkmNiL*Ud)FN&#X!e@;)^Fr3_EVzA zL+!AvH+6Y9qBe$E&8|kZ)>_Ys?sFo>3?x*&EDQY zRLd~*yx7G1C~7qS^_JUC+8kdCke(oTK)nt{HLHp{QLaj-#tfvSgc}2 zUb->$KZ>`dKm#gkTml;^+-vuetlK~UeIh}OEGz?mVz)s6UQmd^$;nUTb&{7Rj^`y& zVEksd7}E z*^-XGl$DdxcD$qQU5u~Ek0;5FW0kERiQPN!A6k76X`gHSkDva}I?=ziy@F1owbv@` zT}0Fp-VBw@z3e?aCf(iivND#wx2jmno*G-Tp?kjp06=J~NzzSRBS#5oL`nWp+oyiK z8~~slc*4YwVAgQ?BI{tm2_&EGpDJMOG}s%C-a-qF>TO;zGRwUusJswxIlrm0u_x+x zdreneoz6#2xhP;=tEy-7wi5k{OOJZ2IqO;YrZ7oY&%o2>nPux7B&-jKi^~mkND{JA zH026a|5uN zqE7KCBYP@MFkp^#Mw7y~O6JvT85)wr2T%L%Hy6WTy6u&MTz5LTkJpUNEGX4g5@sjt z<$u{}sn$C?`uiZ=Ruvr`A-@mU*doCMH06`EA5jEfP-kqRDz8P3)H={FHS=DN=_M8C8ra=Z6e0KkUucErG~NljLn z=JqV+zn6;!Yk}!6{~GEIDqez@&QbMV4glzgZUX?6;&(Y}o-N8wqeyb=sqt~^El4csJI?~rX7+LQp)4f>seY8G2snsg16VWt)zJ#sa+Ecq7!ZoP6^!Z&*5_=@oDwxh2+u%{GrVn z6Y#BGVCpM61@v-BjBXSFB6dnN27Z1_qdf8-;-icXcY;)!j_*3{#6oZ7xX-HaPE2p5 zl_y(AC?*-4P>a_;*M}> zqZ{MI0=+z*pKwtH%BBu=mRSl7pJ; zP?6CWg?9^PAJZu={t@$lsMt`a#dpd4RA(b`PiG*i^$WnaMg_XH`*|hZ_xwkqy|g%u z^W6zRA?yyMM$4=F=FWjs<`p6}s*To@1k$t&jnj}~bd(MN2wE%(hFB5i9iaDZ3UaSa zbb#Ve`ta8}L<=}@g*or&4LQ=vO`f>H2=ro(LP~h zIqw&-5}RlUnKp1qNltU~;;OUhPe6)~lG^bON)rzo9SzIV;%XN6L`_>pn5^Y)K~da~ z^Vknkc?FGp24n zR|AM~BklOg3-SN}O-};R9QdPl zjzz6sb^NUWi2Uaeu`W7CaCX56JRy{wVcWcN)A)%#-($ZAiZ-pReTscO7Nc!-J;4;} zvHI1k8T^|b3t@X-Xo1vK11VPA#rxXdz>-K{yiPBnPWnmgJwyJy6B zk66Uf+Mu|Yn{>O}y^XnXa3^tqFh4;$sj!n2Ad2e^td8;*mZaHNKhsri5>&5D_0Wyj zo}=v(g4JRsfN!#5_~E*DNJ#rTA;I$_yKp2Ptpt5VS$TiaSgNoUb9B0}v%J5lMrO#K z?r6(-_B)G=!IT(b*7Tp)?5i0CO5veD!`=G7Ffn0{5ec*bzAq(1z_9Fi8xe(=p)Hs` z1-h+`>jFzCpK0r3rgLpVcL{uvgTw^gv*>hJ(`lrnnpaGCuP3)8HPz4~quxv#yHeqI z=jZ!3SOH$HvsOxNVF6jFbf*JV|x>ewCNQ*C+4cCDE#0kf_YOfgZ|6; z_H;r17~Xa)zPBYYHnQ*>>htUWpwxVBNAt!0O4;pVTUys0FUc;d*b1&38R$F>M}m}OTk*w-xMMMf#-%V zJ_h@DJ~8xO6y3dw{ucyC!k>&psK-wie>bd#>G1jK3}jp!A%k%TQJ(p{;pX-d3OXM_ zC@THxUh4Wpzm|0YeE`}N1;+eyqE_Ms%3Bj=y^^4^vi7U+`nO7_D*^Kt;zC85hoF0Z zpMkZ)va(=d{qmX^QVkW7++#+L#)r;XZgiHl1;5@#Eh_5K;G9%KLH*$F{w@T-j|@lH zZv!c8L3PCLksf$|%>+me_*m7w{-vuPQs0EP2s$gOQF3zPXgd|lIiK$zKr_(M%5R7+ zN=_C{2a+tlCH6lDmn#YGTU1;~gyf~EYO24FbE&hrnufkT+&x4pM}PpN$Wf^rzbjS9 zZ?04<$5x*+L}h!GsBEq6(h|o5sSDZO9`sR>7e)Nk3(twS%ynN6@E29i!UD;VFc<(4 zo%Ab-q4buKlTSlESm&5V&X zA1m8+;oQ5^rwL^2RWN*Rk*?V>wDZyz&;l9!uk!jl!z05$zVlT;7Ftk{yJv13B#|Lw z_Q2pF>GELN2Me&Fe)Or-{T@N?G2BJFznC?3ndV&^=<(g7RA;xnw$`%6m@YWT>u>4>=w& z-nR0EViWv6ce!(XKpIH!aP0!*iC}1GXfGz?3Kw@U0`5ynKq~-r4jF{VCNX$_8&b9N zY&%193_FVc6Rovzv=?@->=o3g5MoDuNkT(Qv$1pH|EH4vV1XLdjuPpZ7xBXZ9$>@L|@$Mi_bx}UVSJNR5OzvyuKs@Cel*cOAf+%D< zucv;jtfGX2u47=mm%BAFcD|iK9idAR|FIVL(sNvJSz1&q++D7%#yFby6v}pi)YV|W z#YTUyd*6}b6jZ>@8N>Or*Qa>5pcErcHQQ5Ul2R2VMd)wSLr_S+??)H2pMX#g*PiM- zDyKCN-#H#I%&?OBl~8SSnU|ChGtFnNsHoYaJ@cu}mbQn9H>hCpM<*t<#?Z@E{m@X$ zap@oi4p``1vqauQvR_L9RQ~(EU6KS@VQFb6Wy#u%sX~&DFM>{a|2CYCpOkUfK!z*I zH9@VAw^Ui<>yJkZ(B}X13J2WEAv}5iHQ&-ZE)%IDGkSvV-Wi;xD5Q!D_H`9V*mlRXrG zte@4V*zyC$><#icL1sqbM-`eObyjG6#^Y%tZfFQep83FLtiuw&Ffd5iIZ+CHRw7Rn z%2;|tJ?h=wcy2t*i9JaSbjxHrHH~2u!gAHTG*_AtFdM8bNFcz}s3cxhUit}(qxoqX8ORy@rJ?l3UI1L+kyDH*gf zOcNk6gGfY`^UguOS|()!8~i3=*(GM=u6wuWlSq3v;wGV# z^7l~XIMG}siXYL_*AF+(Lp6eU9F%AbG{Bw9IgpUBzyqD^kattV)^;_f2j=dOuK@#{ zBg;rYOJQVT36L)mwv!_+FDM{6+tGWu={Og*%JlZ8J~^HB(eZvXBc)H{EwjRWFc@$a z?z<800O{F0+>J2N(F_OTy5AnBB3c#% zg#upK4qwC{BV}2N%0#?$5UK25AUYktm6z|W3S=@m#c0h*>EC91eQ?p( z8;E94JO#P%t+qbKhVuEtVc-ndZf4d?wNO6j&!A3-o}?>EfosGV63XpM$fc zwc+IKic+V4W+OVWYnPM&&1&KwIuMEKLkLY78Dj{Cn{G|R`S(Y9`C9` zi&4U7#+j=(+OJ!P7gcIFC_w68wQ4~(kny0;L#Y4)R!*$ZUe`{z|5*WR#u;A1u$}Ju zO3qN5&%9LifUp;ccT~pTU;rG=2H%$<|ElscBi#rdLUcRB1Q3uDg}mBkXt4W_`v_YV zh=h#_H}{@uMl{wV{;6Ly2*XQQ^|0*uke4I2W z^}k-@@_$Lj56TTlSpHKP{;y&{|7Y2$mVejA`X3+1`Q*BPH~QVt8Km9y;rM&EyVZ9D zKD<8-2&DgcBXbW(a%Pw4$gYFS`<|{f7zzps_v5*lIo*N!D2_&-n6Dr|^ND)~^m~(@ z0e}w6<=VA%%&w7==Iw!iO1utgW%S}wH00oiEOX)?B15{s86 zuJFuT>vh-u0Xj;+Q87&~b91+8qIWnCQ0gyEM zSMR$7*}U_G;_$=3b^uhD7KQYUgO^fp6wxuWIJnW~Co=nrY&t}g?7nG)EE&E9JQ>Wu zRS4?STOG@$751Eli zRMNs{V{pfrM?@1PW+Koo_`7#t1)wH>my$|RtY~h=$@IEmBT%ah9r{S^rW_gHZ*CmYsdr$wfMR;TBh)EL00f*wL`M9{ zl2Ve13srRVUPtQ*Q)kzj9I&2VOc14{z6V*EnMiL|e4>rQApOYnvp~q>+ZY!jr=c-D z_xD>RVKM*p0`GBB1MJYnZKr;|4Wjhg5jm5#3mOJzu!n!LKi zHGvX&f^KRsz|_8Ruj3>9RHqolwuus(^mq}+$iglLyy~+~v$(~&G%N(h+dYD++Vbz# zR&>HLP5+b8QRBXkL}2(i+*e@I-OM{f6qN;__$hIt;uGP!ei%s8l_j^vG)BOu*xOp}2b8cFZ z<2;B*Rc`CZO1`JlhRG}$pY&7iH5PRIb8MQWgw(V^80-8AmXD(@6T6#kwq5=cz#J91)XcFXh4IY>W~Zl6*o|Mp1xaHVzyR$jdH&Z#m$Zc z5csA|FJ1QDJY_9%Ym(3V}_=@fEN7=>Yg8}&7bgAjJIRZlV zc>Fg0j91pzfBpU)p_+NB(rE}ybb_z=14y<$q?Unh9sc?~V`fb%vTu_xbb1#Y({>u_}vM@6;6R8XpLdr~8(qQnqW~ zSBc`==@F~d!0XANyNw0-*fJZ2n!pMl zD5>{}Z4Qqo)tmu6YwKvW7~ZIjALBSi_0EU~ru)9X5%H^D3(jpHD%!HI9vn<;AO2Y1 z;4*?*pJ^v?c_Fe{sg_Jmyt3?d4=+Ii`9jBgbI@PKMQ8H=p?DVYAQ4qlmX3R>tF7rd zNKEMLUQ%B$-aQDF?h*ZJY!H!|=`nusdq@`_5?;9C5J^bin%=U;&iQL^D3dJ=boYG> z-&CpL-Z<$|TqoMy`K*G%XqyGPyYzDmmD%gnTU+R}xlr6QQFaFuTrz~V)*W%PuoI?L zqBuZI3<9s^UZfzj{NdGw;h8M1A zMsUH{%q$3KzOK%f8XTUw4Ot-zpS?l+T%8s}Z0&B5tr~s|=@Q3vb$#{Q_#s_bRNnto zM`(81leAw;9{DL`Wf->NvsT!+ReLLo75rvqpP8=ux&_2)KBScLPyzKT}3 zpqfmh=-0Bt&&hawXk+U?B;Pj=)b=~hztt&ARSw~4viTZ zphiaIczB;K;GlymbfA)0#hI;5mxQi^$o5)SKBw_}fQpC&**e<^2`8R?tSN^SFc^=! z;}QB?1Dxpfj-A{K61`~qn_QDae@lM{SkU-}m&5&RhX%;YeKCjR|f zchj_8_T77fIj5i?=^tV;yjRHR&cisdN|$*X!N<|X>&Yqwbil?#Y)9p7h>gf;!}~)U z)n%>#cZoi?ekf)JWn=oq?I@%mQ^~b$#C@>9ZaAA;}3o9?GX_v@-%eM)t(5 zHEJY_?`Jn~(7i$q7=ko)z7l!eO)LX;Y-d=Cvcx3S+$1>$lP;Z=6od+rJk1+!#9^GQ z%Kvt^9d+`ik7x-u`x%y-5&eXr`?ai zR~?{-Mmz*BQhf0oEu24ugA+ME_q^cb66yWY#0%i5F-`u_o0c3KY!Gr!%+HTWkimDb z=z)xvp0)|}rF|WDs0oI&vIYjBirYKWi%Pq~5{1o$&DBQF%g=@h_Ks1f5kRAV^VwM~rDCA0m1yqLX9_s=(2XUp4m~g-2K(fMsh*u<@ zN2cv~H2z`;Vf$`tE2CpypBASpoty$(gmYz$ z_07X8yM*c}m~DJsMf84Y|A)5N5q(aK=bd@fh*|G-g0;ksg;GPcqP!5fj=x!tm;Uro zNcEh}Ddk{=jF3C>A)Q;;iY7cF<&%NN&&7r8FZ@VFc9gn$MhNfaRg5)-gp(|d>jEbl zZ`N_5M$sR_;M*1nK6mKZyxs5NU7SSF`9OTA(c>U3{EnxP&-|0X@aklQ6zz4j$I2dNC1F+HOs}C z21DJmLDSgWI7p_~3!?YhQ$Xc+YonmqOsl}u7WUTGS7g*V6qrQ%@TDl zlffJh(E2I4!6dcaQHxaKSdTt*O#VV#*pF0^CVOd*7Z*1mfL!hGy>SkN=;V9Wi?swJ z{F+EX-JjA)^cih0Y)_Wk6ij@AwU19@h4q6O_`C@D*+W=Tn?=Jwg#MgpG)!=s9PKR%y@G02faQ)1)g)J9WwIJ z;Zq)-y84!855k`=ry?H{d^|qoZcv~^&okIrUckR)ixji3UVfEiU)2VP_3mCKitMt+ z$7kCcnH3fCxXrH_Q@St}}LAGY6K@3mFz zO^#*_EnoIn3KgAXsWdNdve^NE>r77=W=YQC;$IIZ+q+Z@v=%`*vMh5|E6(Ih+P@ZH z0J}y;q1~^?s~F|hFx;S&_k7&cpixj}$=kuFCeEcy zFp$pwDdp_}0sLQ5UW4oi$VD0qUr2L6vYNX1Gn_p8@)dH?;M z&)i~mpE}=So2C12GzuFGE!oD-*(oTl`;)JG@sKc>s7%vpdt)JTBE6}M@}tH1d0}}u zD4?;iIb!$)6jaa1DkqwlctP!-jSGz+b0&VAxOe8En6Z+1@Vbm62YiB&BrI zaiAM$tA(${OxVb0Vq;F^kkJXLPPDj-DAK>;jtNZR*{eXf(Q@3{!2z{Q$epY^Tu-yA5fE>^{wk_&!UN4|QMqW9HpU`&>J|8boqvq!y zz1;lx16}&?kV?^azESu`?QSeFbE7G7Ef{DWe)u!fu{x69y6eZ*S&MA`nzSpramT3V zy@uB$%59C+8{SJK45zUK{qlc@g7lbdyU`O4WFZxln_2%65V~Jth~Sd zdNN}cH5ZZ0A!49WSB*Nrr?rfu2QwvY5lx`=!~K(UxpjAQUALMIAsb)DMOZipU}ko1 z>%j#VK0L2_hr*DpzT15#2`2P;xUxO8@bz%5CiCL`Wbi=sWWl5P+i4o^3vcuERbIs9 zQ1h6r!@Z!Z$t@g7SmK1i*pZ6{K_x+%-Dl3lWc7x`__=ovGd*Io_@KaGxDmIetwh;g zuZEM|pZU$6mw5Wkx4~^~qVASyU z53nO=x}+EV+a~pQQM}kkj8w=lsJuM()YY}FB0dz=BE_RJ506|-2M32q=MfE^N`Qco zQPcR{r`_g}GpT568V84>@oM1kzPwC}>b2$P7znU3-%9emBtQ8`Ga`P7VrM<8yyA!5Fn6$1~FAiAkFt%d{e6 zAjj@#e}zmSaJ~y8X1hAt#7aAGexASbGcX%~XX||lH zdbft-c!Zi)XJwJ5AcRGW$n628_h@_>h0!;Ypt*V^HaB-4i2(SwGWFFGp78|e9^uyL z2cJtyOFQnJ+6~w^|Lz-|D9OvTq&ovA>n&i*^_G^c`e-*NEaIwcEGz@QU8I+Ap-r8E*S2m{iWjR$+)|MJ&ej+o-C4j79oK$rCVgDGO&zrMZ-r>KUdLU<^PjXF1PJWxisKJhfU07s|z5_Rc5f%AD5nnt~axOkzNJWd5 z0K~oNr*yma=|C`WoAXBv+ZJyL9-9e+I12^f8-B&CI$ZXr&V!$fyqEN>S1#w|xJ91W$2YDT#AOD%u-U{H*wZbRFVfviLYJpl#?Xd1fN%USLuodJyZ&Sv- zi_eqFgp0Se=T_ufU&muB&v!OXBSyFFvaJ%Fw-&#d7duY;nliY<8?+u9{+aqSa)SHaK!)FiN`Fut1mzU`@&VYVs@C5yiy+!(MX{ptjD2M;42Ake< z!grwiM!*Hfr1*l|NBXyfuz#j2vwgo2V?|9~9^qtF#_JOScI5IB=Rwh8`@bchXZxlA zT{{cs;G^PV<)|X^l%MAeH8VbG2#eethi3&{EJOY;trYj){>GW95KHVNyYsHQsRYWc zGsdiSeq=I8wV9d}cyP%8y(S_Li02#V4q-HU@-(4(bD+=!EAC3rr_q*lsJ-k@QW7vT@}`m{)?L4V&ANm2`~Ho9)BiN!hc9L zDgGwaREU>YE!dfZV~%1{#F}avh7=$Pas{({bTlk4FLINVDg@4Py+R@cH8r6Fex#;S(@1tC z&_qh?Y;KZ9?m1I3*sSW1tx|m!)(+T)Mm%0<4QTA~LK^i83WBd=WnHK@0xK`b)4M0+ z|C%TNahezs-@f?1;J=7RWJ;P-+W)v5P_!_2ZlL1_7)nYydFU4z_qcS_duU zo0s(Ez^gBRl9jc;a)7zzm`}?uP!hB1@tNVbe9?#Ws3szjtthj4 z3RO>yCZ4q@sw$>WHgTKbccXavm!sqPucVw0^}fIVv|uMF15*QYd5HN5jjA>I?to`XfBkLjvQi94I41ik!sEBfjcu{6|7m%|1;eQAMl}widlQDol9nP zOJQ_aI$d}0P+ZV8G?c-gfavKaO$0wDm>zZ4YWzb&C`zQu-(rZ+qG z9oXH&@n@{HN3nz29_}@1@frOjJ%u30TTM}_Kz`hzTk2=Z6qW+L6M;Wq%7 ztXu){5VBkWcjlsXZy$fw|Iz{w`oZ*!k`a?(|JZLxuo$B^IloWqlJb~XtLSLMk{(B( z%_3O1r;R39LINzb>e1;NNP_}Efg?V1=#Uz9C@+X-ZoSI0xv@}v&bxG_d8YExR|5c` zDX@$tcZipHozX_0G_dxlmM6-CTk#Mw_Nv9#4&f!mtn?41n&%JS5!A%y#P!r0`*^;*B z)v*RgW0ibmd9Wt^s1#a*2@-k@HLqthh4Gxaxttc11zQ+Xxs#Z0C1unNE%o!q!0~|o$DjqzI z7e9}!KO;SL;}jPVCLDgo``n{x?bjQ4Ex`N1U35AGX6EJui2l6IoIYD&dU}Fwo*lx$ z!CAD{Zg_n>Ueq0yhIT~HoFXJAhgNf?73iJ*wZBHp4ICpvg~e5Sin)Q#y>K;sPjiav ztr|U#;RTMS;BbS_i1#gV`$wr!-(U41v>2;v{bTd)%6gBFk8GU__Jrr3^-fNF<<9A> zt7F<_3+D>d<-#hE?kuidttGj=P(g%(X-5QOq4i{c|15YPUVNQdt>U_};v)_2>hAjlkkxiY zlcQB;^#Q%#c(|wCM8yN`D$`OGW+oLLPY&T<^Qic~Pn;cHr*|p=9^@F}v#-0bz_l^W zFu!4W14E`2E##(#{rPhluy4Q!*8xdMDWpu=uiOE|qyt3N6S@Ea_oYvtUr+dHPIWw= z5EJO%vF)44MR}QE_6=kTF*;7|$V)@= z$gb;EkqMLGLY#OrUd+snu%U@okN}ZyP7Q9e(>Vg%NU+iiLmGFEUF2P3z8K=G-=Fff z-vtFB`^K%HlqN2Q#<{=S+X(=+6h~OrJ0)wmGs z*@PD}91g3hs@5}K0r$cUMZ7n9NimUA_b$EMeNUU1Wpe(tvc|9<&gUuCViYA?~5ApG5XQ^S~nDeXKnOKfZgyb3$R$0OdAErmyuw?8ZwNk%8o z@ieSEJN3tiM#77ZhDJcqw6=eY4q%I+Uyvj=TjPH1;?}0I=`%kAltluA)x_Vn43fwL zF|n4icN_S`ggSuXT>6K&5j5hd-^L#T^H=k;rIhD-1b)wmqUrsfQ7J@R4Jde=t48(A zlTxWto$I>(?dxm%DvN;_SN)S3M#e9J6+XzGuec4trRBxlO*ND#7;87-UM20X@Dpu} zglp{}$db9xuweqSp?g*$CB^78Mh;DQJz_Gx?d^QU=+45!*6Sv!t-v74GuD z@m?Im`nUZ>+0Q6`I-XSa8}2{Hx)6gDnMilBWG7aSmza=AH@Ezz+U;7c&InDpU(0rL zeO}MZk+kK=WhT8j;f3b)K$==m$tqN&UglibPTt@9szU^1rx5L0Pq9l(>{oD=Z_h?a z?C)BkeW;_}hjgQE-j;DN86G~X{)a3&LG1#*q1s@`lajZ4(f8}_Cm7>JGQ#354(PBP*?A8QIwSwhfeQzC7LZ%-cP5wmU~`r?c;Ets->@3nZ5R zz{Vy8dZiJ`TY7Qv7axA-g1Hy&*N2FBX!xUIJ0370p%YG9<-GFdVpxOVLVgz=dN(MW z);4gAggIMB`@Y74f}-0YamoIleMcq!{HFDMY)^3z z9iS-1$3}_1pl1QY3TwE;ueCTk@k}otj4#xAAy;W@?>9Jz1)7CiH#=KMMK7#vPLtj67FjYd z>q0jGWI&t0N%nYv@(U9q`&dDyXLJq4-QAt4Mb7uvG^O1|oD3_$_5vxMGoSZgLeMnL z>s8)NF-bg)HqdfnEn@UA002@ShD0YRY84K%e#BFFhG}?Y_+qc5hS9ax^oEcFHCp<^ zhJ>il1+!#-7hXV?8|MQceTT^x6i?Z^}8Sc{fQtjHoM>B zgF=a6w%*N!JnVp-`fxj2uR;f9g9-)51huuXkjZ1;+}#&lDNI_j7Qx*rGp9*C29zo>V_86KwQ~7 zAUo_~DSN-Vh4k8YAf7xU06W_CrKqUV#WvXQ4 zT>oIuuCmT4@J}beC=d7zypXz*1d?3|dF~9DzrlAJUJZ?jr{y3O6_O#84+uxUQ z`B@smItQ#(De4Zz#pnywm)ydcT$4vkf9W8tzTERw=AEO3EsaQqL<?=g)v-?h%d1z> z9Bhy{ARxg2<|QR4x7%F!|0xF*E|V~X^j$bm2#w;KO{n_Ul4Kp6g$-e@h!_X}wn9tD zTQfWQKedk8%9PCidIaxh`qQ-t$(H*gF8KeHZw9oNgZ*cj;(uK(hV*}x{Oy5p`d7(c z6gh{t3Y*+=p^rPbn|fUic|2^z-8|Cgrp|CdXo7g7R1 z{RNryN2eLtYkV^@wBx)i%q=QS_C@htJ$y<)Jr~B(-zj)nU*r_DqUQJc?*|9|QpV0G z^FZE;4Wexmxi|)Ygby$);zSMB+NfuTPK_)yP#*+Cj1*}t~*|LvcSY4F57m$>j7Z=OPDTa2R zSTx$7K##w-HfibGp5lfL@M~tvtLUhN-~@pxefmT-JR~@t2cGug&5F(*zC<1zO;K0X z>%edApCugr)XZh6)d*0D5vw~+vwnTneMmk3s;j$De*GVZ)5<-YDUsAPH5o-bk!v*r zn(`1zOD&T}S76gY0~oFLEC9Z71BklUGMa9Gy$b6MgdmngAmcA_U2_Yl#0^GA0%p9H zHSN%;lEqWLj*NCbcrsKhak3vnyOsCnk1gDh9jrnHxcvn0(bkqhd(sLV_=xGqZEdh##g2 z6&h8*F8cONYU%mLnLf(!6Fcj9T7ig-t*c8W@rzF=CE}JhF-t&s_iG+Vr>7?b~=)hAAx7jmn$Tsdx+@Xbnwf4Gj>LbF`XCQ z146*k%r7VaBIJlaE?p(iSj>3tPfrL=g2aNEo<~{VyKj%#Wgj`L*KP3GDl!Cq%kRPd zr(+>yB7QT3B*-u{c44rA$L7PhL!?KJATKPIC!*v=d-i^Zh>kAD;<};+be^T-+HFkm znh)^vAAfR0gjOo4C@SwizD`}MZxuU#!{UB(i?UkvxD&h2c%3~`@w{fD?;EHy!*glQ zJZ3rygE`>V1qbL(%h1Lqqy?fFP;~aq!l4$y*VVBOPKFMg7!Gjb8`_O6bMR}6-ruP8>6srflG8>!f&DlP{7j9pA`#D|`1#b=^)+@Mksh>bU z3|vV`iHfGxFR-y@q3+crYWwD3l~7O1qYL<7k}7Z@FQQ_g?V24`e5rEbW}co-i3<9w zleZ6Gb|@&j)+*wv#|Nh*4A#$TjJq4w0azM~0y0Qc<6|N(Ivu3W*T$o(*9Fx&US7QI z;U|;Xj~29_7Tzbtex#&!v5?5C*&J^pRmJ1QyRrXrlBv)J(;(zGdb~-98jOtk+RHN0 z)xG!$$WcFuh=}ugfj+-o>qS(2)qwSUqE1>`0s}}~*(?3*UtW4pS})?Ualw5)Or+WU zP@3cLR`T6$nguDdKchZcEjKXH$P=3-6=-q}h#Kxu+ zJEfJQ@J=?o%QiN9^h{0R0DIb(0LaT@Q{#e?4$xFz!{z0_m1i=E{Z5R!|ch zAGBP1qS>kGx7?K-Ddr?Ib9f3&)+gy?5+jYCQj7)4jX^HE>RbfTd z(nQFeYh4iAlx+ZjdR%h4rsm~I`SjcOm96Rau~UJ*eE0-{@l2`nPrvY{q|fy$5(+PlV9VXd zQUMY27wkB_1Id683=;emn zC*o&UF(m)R4n_H-_T$(GEn zsbS?jZIajzUDY`K88qTyv~SJVrr(erJZ#Yd~6%6fSFEX|C-0E5j5ejT_XnXbr7S5(~cnQN#tGR1N3ef`!Q!1Se325AM5nCu>eOMf>@IdSz3&i|s zCnbgQRJxY>u#}icQ3Fz$*Ep@MxXK`-6D`q!4>f}$W59>O09oATF(I^2EEeg2l<-}h zR4xT&-NO?Q56BI~rlb`8DxsxS8eYwpQIOPcS19lkI^zyLHkrtI*+UQ?+a2Zt0?oqn zn#n;R<(ELcPUmU957bg+te!|~J6}*AHjwpEZDDP-DgI2|KXk6_w6G#9-2BD%!gOYK zmh|XB2iSj5Rl?zw7viqZjzHI;-lKEHWXZseN=dl%&-#oH8u1jdO4Yw;T3b-v9CbW1s%d>B zzkhZWY+^hKNk|Cg==j)-#yj?We-O?NJppmGp+7$)kk*wo=k<_ z?1aU0#&s}K%J!&tz40eH5{m<;zYwXe$vHe2m{27CJI_CX_Sv6u>^}V}VWXhmP>X{D znZb(2;DFF5PCuuT4!Qc*ws)jR0&d{zAxtZ|;+L0Igv7?e)LXp~48-6m&V>o5ULIw~ z=mOoq0vC#di+kH#G(xf}EQ zkM#$^u;e)-@Gh(<>0wx&+Z^ojqOp1c1%c#Y)66S>H|PNxsmjl-%d+6W!*Y~1M(-^+ z?#R!I zE@7r+SJ{H`!p6zTZgH<7%%teMhNQfE@KUEIo2YojmebSoA?uw3Twh{2cf#y^GY9}g zk2_3?i3ttIo<0okILvO_w>VGz+%zR-gzD|^ee({#c8|itoufiR3A8}{kS&xwqfb-W zsgBu7wZdZfbfW3IHY@9^27VnnR2erNMXlzM_bt>JfX$VwLyF`HZZC`|TL-ojFaSd~ z@*FRyiFEPW#q-MOBO|l*!r{Terq{#6Yya#+!)q%+&E6{)<+9yRK9$ zE`7~71F3W-%sa$!fN$-u5m&c4vUu<-EB=bUpYIxQl9ITNi0~pEenPev73&~?L^OtM zmv!Pl^YdaAYhW6+SB?d~y1U!ca$;ZZn3z}xhHdyhU=ZzbE;DvQ*$T7y5qJawwKfS4Z}V^okAAta7B6I!)r#7g5t?tK4PN&h6LK2MKZJ2{=7h?4pVcvx zKR;K@kr@LxE>yN9+Oo7fitC`jgFyhp!x9&_n1sc33_5q%*62G$v+G6gzfl0bTU&yj zFI^Tm&o5OTl=S3jPyk@~v$k)YyE?|pjodzFz$mHndF>NxbR+E;VrpKy#P57M?~v1g zcy^aY^j>dMQaj_Wyv*P2Kzb>EiQYUrC(Xd)$7UGS@*N0{kuP$ww{FBPZY)H$+n+Ft zJRIKThzGXrqsY)`@-_gc{rv!Ss%+@`?}Xm{7h^28Z%z$M=1r20^sBrkZ^EJN-N;~(g3u$l< zV8l?OMga37r~w)p86`Q@@%Qh$G_Rg7FM7t-AOLa6Z-U>d_HZraf1+*i zI4>m&sYFx;)6xkk8702Aqf#Qv_7VQf7BPcvGX+}APdoe0!W>-l1oJt+1svAH z!~1h}16oicK7XboZjb+=pqT4*yZ@JR54}gzx@bkeffERx%}cl~w%0kKfsBvyov+>R zVJnqT!!fO?)v7-I<0#L&*wnN@opmpTyz$TYi7??nDK!t#sE(~qW$Q*MUY6H2rh_Pt#TsV{Eoz2Z67m{;V|t>~BPA=^qkCfRwj0LAfFUxy_HQ zb6ulSteiZ@>J+6`Cwc}J6{W{48%%?dksyE%+QY&wv^gdyZp5srstyKVW>&PJkdIQk zc2H1WdT6FYWo?54`v=1g3>yWIF(+SLriazJloV2(huS)p^Og^s&c>uB_9pBj=9?tK`l%=8pDO?vwPq4@SO1#O) z8rL(_2a$Yu2z|PQCeSl3n{RB-!)6K3W}_N0=nWSCZ6C(2YH7c?)RGzF@1aD#Pk66| zH5N&JU2&U#mjA|mW=65$sIdd-q-)#?H}(8u{|{1N&-yFUq{Vz)W5-&V5{*qsMTNq# zg35HY7JdpTD~kek;`*O5LA;5q<^o^F^Tv7g~@Zf^dxndlhizXM!kbY|w~4c5;)bWZ~JC#i|RJJlZ^ z*mzuKXJ}s|< zu5Z^joK2euSgu@nQ?avR5BZ$Uf9&MPpBP;cv`Br3j(>%_y8acD$Bgao-vS1xu3=_! zc~X#7EI#Kkv@$4gvW%a|XErE%H56T1hP7c^`(mJ<{f09ycgBNRG$U@&kw3ocE}d{y zrCR#h0tY}|UHbOBxmY5PZ_g2ZSVEGBg*iB+fKXT;1rIMx?nh?CcicJM8ML^Kts@wK zt-UiCU}x9Z!t?AO6Pr#qspnS{i9gc{JwG>8&Mj3G)!+RtQ3@mYbqu^k#Y)2bjNHpj~*j&7~=k@_B8$PcmT0)(NQx$wsLE&8Par&bQgoYuyQUCx}gdBC7p5{29r}-F;S`9uYCz1)eL4SM_D- zcMeSn$zkDF!MIg6IxgRV9UwJ^)2={8BftJiM7d7`=vWu<-$zHsQcrwXNx{hb5K2H6IXNt} zUgx_e^TrIUBt+bruB!a9^g_m-iL_$;Kk8sBuyDR`L7AUSx4auLGMYB>H8rW>Jg>y0 zvRf0KE8_t%;>F#y%{Ax8gSvjiBNxagaC3E;^fDT$S(1lnsJfO6V1|ldUF?y#2HqCDuI&xSC1EZ<7SaJ9CjlwuyCssbBiWQ080w4&Ix8CswOX%19}{HN*?34q zwuEMP2j}WzsxUwYrLe<0+}~K)r=^_)lNrKES~#9BY8Ye=418BU+sdVec{CRVcI;9= z0mxT90M5@b5TZkSJfKf9ZdAoGCTf5J7d%M-e2{1bEhO2e5~#qJuB?bALI$k2bc-#CI7{ax8P2_oZkiO4{WXV%{Y@9 zKGty$%L)Zwh2mq-5a058#6v?JNB$w(foU?yktwVtr_huw4?J1t6gSv9J4sykEor$U zGXylc5<>z$q%m%AYw{L8-g}ajwY6sUk-+c@0e}Vv9d$dTYxHn8JAEFlU3{3=AY|jz zw&>HbRMlJRoq>1QW01GVd>$rAO4VTF6umh#7#@hrOwXCKHnWP#BJHOc@i~A0UM8d8 z4FT}|n2PWOlhaZP;=exw2jFo}UAWKZ%nKZ>yPrmLc^3{P{lmc5Otr7}P;QQ+qb}|c z0u^b5#8qXma8tKlnxF?RNI&XlViG~8v&2iCMSP|&CF6O`+LD54Md+%x>TszBDY<^ygX zpsr{o%cgshgP6#O)k)$3i3J4VxX}BWcb0xIzQsu6XeQ+3RM9gt3;0n<0PMNWD1V+o zy3*S5Hs@ItXjqsJ0#EXc=vS1CM;U`J>?VRO*m5TvqYWmjtqobEcx^rgsQmvzO!TI? ztl8M|Qt6Hj8qh-=hrL;qWuR+h6|r!D280@7vZmnvLZq?^3J6)U&#-gr6`H{rZBSj~ zYcSRXe5#i{h#&2JberGY*zqT5gY2FvCa&WCm*z&rDzXR4d*DW`LXZf#yL$@9j5<+H zUK1X`;cx{GYlG3*eKi*i9>i`-P27%O4*3s!6%jVtu+nM=#@$dc5GTV6B_xE>>IJrO zy4_h%?GJlm@y#hm=B<1>UUl2t_}nj) z{gLUgUS3{~Foj%&==ND^Nhm~Y^X$*Fr zUdV7fVQeLRW>c=c^7@foiq6DczqNDqsf??g6e7x7@R8$iL2qVu=7150gk+WLVcr@Z z>kDkG7vzU-B)6%Puhh{XVeIh}sEl0GURU1{0 zR~F~1D~)$ClQ>O?h4rhJ?!k9=jW|3n*x|9gEk5bfRmh#wrGzxRzj6ZoOo)a>aAGas zPt841l-H+liL%R;n9&=@Qmxxh#-rW{!6ZzA-R?wWr6JXA5^`Y%V)r@gzMJ2puXlgC zT=XwX>gt)5T{eRXh^jLud{)-E#RdQekc9u7%hD1b08sgfs<<>QUqN&*hcLsrsB(UY z_m5-T-O3~km8ocmQNzwXu7<;}o(Xd3()sMr*E2sWNhwQgM?h6=QIITws)5DI25IQwGOCq7v z_fcYWSUD}Npj7tjSY#K(mU(EQNQ_5?MM1wsk2Oh5{Zh|R=%3a)XGg#Erg28=)W6I$!_9(vxL64}D??I9Wx%MoFo@@g0s;Sz zjz-!+`9tauyv82bq4#i{=t+zX$$<8S{R|juI zay_&Sr8Lli9QFH0u;FFo&5m-$-w#+tG0QQrI4;u6*pF9=S~l?J?9n;?x=s0As3Eld z&-Ap#ZLg9NtmWbZezr`y=`9xi>7`v9%AyN2KzH^%;bTq#Uo2Onl|cA|zmK&cSsp(3 ziuv7NWMQ=*Xc;wC=VHC%ay5pL5?C9wKfzk-A;4%R#^Cj4h}ax)02yp_gYG62*2Mx9 zpmXb9r|YsO#1U5(&A8(QQZzCH0C-{8Ct={ zQ~XGy8y#Bsl)U)Z=;j|zWVVbon%9axof)~@(}|^JD6>g9fN!_O{13v!!Vg6PRjCK~ zc-l;Bi_$)Q*TpRoI3QPZbKUYElS3DET(OUtrh}DLNniRPKh{0kfBIS^A0mhKUECf1 zC6xPuo>iX@>2tnbaxBXYUhy$`$2%NZR;p)dv}%|co=uYWq-Qk%o(q=feBPJ0>RBNs zd_&~sekIj zsY%(Awj97%S5h}SH>dmFuGMHuFA5cV2>I93V~yj<`#3Jf5~)Vo%a3J&-HKvhZ0!e3 zTG?V1e&$xJtg{R4k5G8LwK`C-|5#98#id|gCqCLC{-yG(tA7rJxd;VbM1N*}HmkK2 zesK|-qt=H3$Sw}JMiG1dH2~RLqa_?I4!ET}JbLC9NU@5rS>o`3LOI23GJe9vFuPFo z28=$lWUlB0psle!zrTDkG9tHiv=0D6tX_SXqoZS4b@|AfTEml-dIGtDm?JK!f2eIR z^hmDpKcsgvRXxp!+kRdDe(cedJ>JtvM>Apo@V-Pko>v6z4?DbCAs~Q-77N_Fv!(oF z#(#)TmID88MUPC0vSEFli`DjDmlWpg8s;5xf&b_C+ym`I{`X>UN4Ec0eKy2-`mj;G z^v`-0)XF7<+zV*i!LDC_SIiSk|6_9N{{shv1Q!wlzGH94=)H3Hj4i^>Uq>*RKe-!e z{BGdHXk~;3_2V<7jp@tVZY(9eg>&daMCr~cS)~VLFDi#Y8GO8d&Mb;l> zdX9R8J3%I}t*mLTO4)|TKR$K5K{Czd`7CY{`oc*u!Q}-bN=7;DadPmkd zq#Rrz1|>vfstQ;Vrw}#$O}k^vj2F4IqD)LB61=q4GcVTl=lA#P+7G)v0AaU!W?-zU zmn*3#Df{|eiIpZCRxZg4K_wc$>oIfr&5H`a)9y&EDbzwe@=ff$|11b@_KCO69l_G; z<=5`Dhl}337-55?)aiF~gRp(?6>y<2^jjyVg=Slja)OvCC)NKDZ`}A=)JW;DpcSdF zjt+S-I@lAI4Ukdn*UsM1^vA&Kq5h>lqCSKRWc&rKM-|&SGlxjurFXz%$l=`9hMcET zBr=$$Uo4oNS+3OK$XxzbYN7yT|XziJt%Ukq5w47<#j7i3ouYiu_!vd%6jc zrMK-NqG6-+5RK#4tJUI!wcA7YPjODg{}k7Sh?Jlu>tx`-;?km>a3aT4_4p$n>^n{v z430%rK19h4wtJ)T5jYnrDsDfju#@bnn_2XL0@>RW&2ISc(KF6pt1$%9)N+)_ZO-Y{ zCo8m|Iq$Dw63jIouHb0N=K(q$e!~NH&)(B|WdAv~m1asL4!((;{V`{de(ijaH&-^* zHhI}NO0%qtKf|*sDhlST%|H7URe=MDP;j>%FZEoXBZThJCtNZkMSUxB=I$!^@harU zX{owG&5mnt+W7 z0)#C?pPt-*{Zb|&EdhwhkQ=NrT;AiYxA8Cl`yiJaTTF(CofGEHJN=iFXo51%vvVdZ zTKg+x=fW_gySsp$HT~B66Mj`HyTMrofBfsw@$sdSVGLW$ZJv-A5i(o5mJW*%=m{7o z3YRm_=n39$2K4NgJ%rqhu7H$X^YZ?#{S7E8klxt%Il=V>k>qJ#qw)d_-qjKvpnLgT(K(|Sy_qx61LReZkimap zKOjQXz9eUsSE!4gX3eI2x+8>Daj{WVR~I6Q2l*ppWW))?gUD!JpdT9&*fQve^^!P@ zFf>=&h~fujiwcE}-I>|mYjMsp_>#UjAp&$)Q;ZgFwsFd~Bi;3Ro^A+Xp(s_v^O$F5 zXLE9Mp{Z3+flyL{tY53O0nQ0YJE;Yblj#WwxENC*)ITq`GWUYyVS|Umpoav!w42Z- zc(tqMwUuRH{@u){(v``XWw2%;K)qfmo^uU%HVg0zE|0r{3B%K@@?7`Abm7mYVMt>A z=C<9PZv$6$IIPiC>L|XX<19`f*mUqn8Ke%%LdULPCD82h*##Hgt;t55Gvtwr}98x>A8($y-q^8(WcrbYQ`5 ze&Ftzo`pU4zIBP%Zb{t#OVuSKm*4yx;-^|VXYxQv*wdn-6VK%UC3cg>g`e+ycZ!{% ztnKxjHNY|WBQcYNhObB0ZF*+^~KkD>sVKlO}w4`J@XT8+XLv)jC+b+{jh3jn)t2( z2IP15V>CR@8?l;wBGibBwXJud#0_hjTTqY>#q}B;YC2fYMURVQmBn+u@qh<%?VTI( z-^X>;oC{Yi;s;=!VmW7`K=0~>ZkWs%FgQp(uw@goxjNyJlU=QTTqPd{-PVn#j+QVE z1Aas+Z81&Rjj2FrFN$RNAtMKrF zu6IQlNgUk;eRhstd|VV-?}u&c$o5(mms7T<*~Pj>RULkM0>jwb^^$nhw^0|g2=$D0 zABG9I4`7Lvn{Q0Bdo(N&Z{Kh@J@Yf^e8z0!#~pNun$`es+0R~2N)1B(8;@5Ve4Lnp z-*1)9*8qTG0{ZrjO9_|b+eJa9+&BI9xHg>v#0~=Cn*%Hk*Dps$M|LlRI;u5W4llK5 zK8>D5db|1tXbPhm7xaOGw-fQ8Spa~nvhv5&)8#P(zuwp|L*-VgOqIj3dv1X?2!Nx- zePitYt;Eh6S3_eo={AKqjFXri<72YHLfPAIT24&Ylu9tud#pp+>*A8x2-QK_nd0tb zDNyPC89tTWI|TTRk9n7W3sH1!2itVW@J&yz1^*u2n`eu4Y=wiDkZ5V>2RiuP@avpz zah8$Nhr7r5$Mw4ptj(>Ac46_tnj?8brp~A{@=B0|tmhhku0d5q2MVtw?Og5_dkv1$ z$tBRzEZZ2>hY!<`X%C5R#p3}(vdGb_;ID-F&YnedQbZYYJi(J^&39A04y}7|b9W0~!UTN!0 zhCwf&J;9T*S9UNw8yz^DI#(R2bn0aSN zG>r^0(d?!a)8q={hh&$cTWhuS3})}1V=nz%SOCv^bQ6!@M2H=Qw$|H34#!y!alJna z36SJFu2c#Y%D{qJaVJdhyuvD$9N{)xTkaL@r($Rgi*#T@{uZ@?ho1fO;B>mhCqx^G z#N81ZT(DH_lC$1s?RV*Nr87C-ljp~zOV3h2fkOU7U&^keQZy|cb$>ZNZl&`qGZoDz zoB{26d(stNugz^t-^w!-4u`8iiDw6v{hq-Ebb#&61)t~3+wpL{6@SG*soQ(^-~c5X z_WQ%o1nF-{6+ma-^`xu8n`0ecfLLUI#PxcRDoJ195W~jHqT2W9N2345N`&`d7|I8F z>~SG}@B^CLzI(W8aOE7*{Zl zz0LTFnn@v^hd1~0nw_5C=kU9Ob*-h>{54yUB?eCG1k_HiT8cUh<@=QVzJb5gY z`Z-aZuq(V;Wvs?yUspEv$ZXi^J-oDmF3lM?ka(gNW7I}GiQ&G^W$ zb5$%87cUbeCYz1bz3TsziMW(}rtaEOUL@+ z3je|d(Y0LQ5XZz%rT*OdcO`$UbsbGC=Y24!P8n}NC4KpYy~1}x=@#`rCznQ_>KfHl zVKppft=bR*pUPnN{p@lYVeQd`M%}s4{oW8Os~P=-EdgLz0!`}avVUBoQL8{&)1qR3 z$z@xK!$;nzsA)Y)9661;nNZT8r^NMngp`ysV&Nuc0mJWdQ=^m-2@3%HVF}E&5;ghx z{vxowJ)=4;-a+9*H`K1}0t-g^8ec*u*&FOynn+v!W+$>(Ak!FPKWhwVw5vh4@q9|` z=k(!Cf+eb3TsXV^D?_c?!b6)^^X}V|pt_tYC#3uPD=kIXSI2)F1<3yT8C`pzaB<3A zX$5BGSIZ*zk+VWy4^0AjI0^FEqS!4LpB}aZp?XpI%wTUI5D3Yq48{w4XXU2!rK#hR zK#1H=xxiz*QTvtWhPgCsG7+1AnZfj1B!5K}->w9zeRV}w*Ca%}b2J@+3>ik(pUO=Z zD|>nW>a`igTMA&d@kvT%_l%bL5RceZ?Q#4>tD|6EURdg0>)KUrO_X(2cplrCFVF9( zP(UV=#};f3Cf##XjF|X_x%Bjp?3*1u3H04%noqOlPA(PIrB3=;0%hYXQl(k@JqD(^ zEZS~*L{c_ojVq`Ldp{|FTtF%T!Z)>V_j|ePsijT1{MqU%lw8Nd7u=8)%{j}==)IG| zr<~K>nPYRW@DcML-mHXgYly>KHZB%`sIXD#yW;I$t#LuC^rPa{`y=hl4}j->u|q+* zIq$NrSj18#x7tU{unT*Zfa4@j88(V-VlZe!&~eDtAy7<$IqTBH4AwR)xu-tC z&G){t7as>1Bc$8Dyx^xV#}E<}T?XL+fZdmEp(tc%OnuRjH*gCxW+-}x6r`D-L1o9p z2chAdE;JhSg)DD3t1%ayJ0T`G-O3HLv3~oavE{yI)6^#Kh~HS8_JqS03?hge$E$=f zP1*R#+EfaMNy+Nd?i9_Phx{z(hp`yqJSV>RDvbCP+57k56a3d zEF8Y(EpC*(wx*0hO)~T7xKmA!U58B87)C~3JX&v(K&iQO*_KxIlP_~wpem~r7gmfL zC3sG~+VjXH$+ad02$&Cl$9piLl+NVxFHxZEr`F|hxFjQUZX>p??x>fTpSac(58!Jm2wd8e>-%Ly1x2lzAJ{-NqGA} zv%uMOw7k1lM2JQSRboDH)p+z52Xtpcr~YJalpIwiN(l8HzCMCMGrJz4I%uf=oGdwe z40nB9cjqxUJ_1EO0E`#8Y;5Mc*`T*g2z2%*9O9*=Ab^GnN+P}eba zf{P*X_)U|xVP-Yqa-;pIs;+Kty)i{G-Um%Qcj-OYJZIuR3~|~5J0+)praiqrF5uJN zIF9do+dM>%$NblGMDHZFX6iX_cC6QC_9ENmnH%^Q2Og2kO8ERrS>B>~3GGKZ#XMBF zx~sC8XPj@N-;cS?Z%RgoYUb^p+fn(;xFUf~PCv$&1>Ayt>2Q?#uF{cSACgLEowu*_ zM5(mD(xS16B}0>|1vR^Uz1)E1R6gt)5@a#M>)lSkpD8RHym6ZI*sw|L z5mFtI7B2y@rO!}!)RV#%peldI`LL3V_E9eKw|0PRy1_sOLx*cm->i^HNBGjm37bEE zR=+E`DpeA)X8o>w!4l7tFZ0q|bvz&0zTx~wKsI!DCue?dq=4jf`+q3=3!u8XAPW?} zIKkcB-7UCFfMCJh-Q6v?2M-q9-90$L-QC??|I7EyyvfX)saO9ksN&Xzb2evpuU_4I z?cV5=9pUt%W~+42mF+9Y=bdw4BF`N2l3dx#rGGkMItY;cFzIFt#_Nc$_nNdKeTox!P`KKz72~VADFgtXYsRMnuD59Li zwb)Z>eho7q$?yBM9Eg4a1hu9;GGvNTlZJZ|Rc>VFrFl)z^9U!Ec3SHf&HXEUpjJF1M{A^Wpus@7|FN?Zi8tG`dVTyAN%=_f)& zsD*!Q3w-_D^Al9jkI?DqAG1qjTUYCkdwVVCGc#m4iDM1J$qXdhLW>!dUN4};@s{s+ z=a@)kj*&AvXn6$*+FaYmn2`l>^iFr|4bL%JR$H69h4pf)Pc5jegoXdpLr@QE6;y1H zIjnesbTV+aSNh0SzKs5kMw6~J1k$HE|aV zV^OXpw)t0M17)w)7a|PbO^9l-MRQBF0aTG(ktz#I_wJ#rcQS*UU!E5ZjIH@4&CSrP z1!B3T1EN|jKZDDxAa+<_-8>ga$$q1+5g5OI@21quZen@Do1V76x2NWZxD^?SIqr>9 zFws2A=?W&)vST>IsHsJ- zs!k$WSV#9+`?}zo=kbYA`5(i+v1+Qa0n>^3_f771 zY;;Br58sP*z4Av!yMop^zd5Uxmiz3Vl?)``opCJjDwEe&cg5QJ{=P*WAWj-aMk>yH zDIEMGeiAGogNBdHH}3TsFljqsXQkDuSnhMu%SrTfpOZLU7+qA~r_CMn;|EGgYHBvn zl|w~I(9ny0T{5_CtskCLUwi{$_YEgntWDK4G`45w*9S1O+6w31t{&z$4vO44b0tof zYvFsuzkZje>dl*98z^)w++Lb>EBBU&OodieMf75S4ulz)kr??yT4IQTvxdjgjOX6m zTykgA{zQ@&eYay|{l5VM*zW*cIm52X-A4A&AqBmW*tx2zqNmv6Lu|L}Y5KuY#{Ny# zLoP20?R7gii|aFKw`>X2lr&fnfQbpHlZ6st#?p-HEj1mD_%R5q@~*Syc(&uR2NNe| zaYHH>3k<1F=y!QD$l~6uuS-RFlkpyG;scNJfZ)lMVEdxV$5pyMRo{flBn;oQLG2AH0 za?aQGnpURO_W0m@*!^Pb`1FMD$MX!NL{$u0t8G;qh0a_K7q)r%s{y&Wu-$15qIMa< zO}^&{C-~`3W9=^k&Cu|+2-4D)bzw)4xSF1Le07-akIiN%lQ8s}uA(|R3`Q)guG$*S zUd+NhqzaWnSXx?q7k%mZT;4~}Ta~>eK+1yT-8u5vLd#vWtRyYMH(l{ z#xW*1rYhoyZXFCWB_io|7autIoRFI+t&tJGUwivqt0&*rtp8rlC{TSRPjFW2AjY_7 zbttKi`Yq#^X6_yg)1`;n~1Nsf&*#HGvuAYpD|&<>PPh#SiC=%a=s87LMqc$-kIj zP5Q>;6K>$zUe`wl2N`CTeE8o$Oy17rR@$?)57UPNjwsu{?S3TNleL?_SKK9eowZCo zU$O@n(rM^t4;-B~Nwk(~r7f3pzl2BFUER+%)i`_R+v98A!iK}b)-~kobbN2u^-@2? zdV)Ef*1hF=n|LcE5qg+8w{+@{b0J6Y?0hK+CMC&PGB`gIAZA0&k!`KO5_q(Z^mX{!L8UX;@JRS`;CYarvpJd?hnL&VjotTFfb=Wsu zb91Hm54Bp$11=Rh3^X_>8-iu@rP5m0O(Vb1a*+)c71i&z_Lvvh$xBzWz1GUDlS4xQ zAaw<$e95K%pn96g{OB2r*9(v2XJb&k>|#*om;9WifufSRN}b?9iB4(C#_XA^3jTE;J0&bm@OI~Ruxv4{|=lot|iUl`eyFM zU#?IBR%?!{^7>dKm=Q4~wkLv4KGvPhpDYJIgY}%h6WjW_d3V)di^j;TJFk^au&}bxP0ECOKb-G)41#$ zAat-%qN^Zv>|CpZz8Qe9va+IKU=Y(v_}}oPHeqFj3%KZ%#eH}1j;02j@Wh2*S61}y z#El|pjKfAFs8lgw3T4xYK4r+@@p$83`|^iv{Rl@5LP-D8^Cyg!+1w5FJLgq!X)S#o zieo|&=;vk_vO@mf+3}wq%vT>R&NY?)tzqMGe9Z_~sr)Krmqw-b`7;P8>keO2$V1>W za;*(~z_MuZ6UMP*_!6@rWW_Dl_u$F)&5d2K>U{L?B*;Juipxs$=b5kEo;feIKfb7@ z=}WM?09>)KATgU!S*`LBBSFV{z7teraD}&L`Ra$R&JEQXJ2nN)KmgEo_BRiv$i>r2 zxf#wEqgI~pk=A^PtX6sTD9}haw?RB`4snN*e$_;tmc?%;R?T#))e5-G490&|IJ4U7?Zw_=mZ-<%* z2`WBum%6?--KTYEaPIcJFQ5U$i9^|g<2_NmrE2vC$VcqZ%D1EA^Ka?`K0?h7|w?^<5&95Oug)cITfFjxm(QQ=>5GJYta^NoE3TUBmfyyC0_$2rgw z-0-RCt3_CGqvH8?P*~}=UD*iT@1?a-CFwsi{Tl_A1BS!YJbwn>SLV=71`no>Y#JD# z0&gLr{JcYTn;8i?b?Nxr>wC1e2N=L){AYB}^E+i->WCy>&?<4P0}WC?f*myeFf$CoX-K%D!$K}GkG5ixe2H2fNnE3K@1 z8PGMAS5u38I6i#v*!+5f-}&R8lW|0EzQr|j<#heVbZX!{z$jN4>u_9NAWn_cwga@` z1c3m6MrMC9uPcKG{EwCUkJptW6TkF1X8iZQ9OF<5yV@l-=hbK@d`Y0Nj;x~W*T2U^ zq%2N{=X8J9++xCgCjX}pDI|4zI_Z9t7K+D#a;RFlA>@FP@cDD>;!;PD4#FRd_}(yO=7mao1>_6WUv~Ykb(m7o7#J6u?YF!C{~i7fb#E_+)UT- z6S@<1CaC7(!vX|gj$nZe%w6lORzCsb7*Yilof%f?Ha58UwbHpTz+%=IR^W;nB#C@WCrAabcp%)rEr=% zA3kDE9R~R!LHb`_7O4MMgCF+)t6R^vZP5Y*zkii*>c-pWfyut===wh2a8bqo z$8X=9Owh(P%l0r}O*+!xooWH`faXN=+qY13&3(h`u0#)r2Qo+(tiU^2&#uKae2hI5 z<+8$U1pWT4PZr+3sr67Ub6;@`^VXWfRQV$+;@k+I4g>M+8tw(f@Ax89u$6Ni1z`EJ z+Td=%e&$pa0bbvyduRSVd~voZTYx^uQc_#_vA0E;i_5m-6X{1~r2N4f^W+qt{YdGD zt-(qtKLwDbVR2aC1;_jZ2Rs-bHmY48E293lK28NWswCIa-fMpG?VkCsU%rGBBM&pR z+#dtvbN`GmipfcIA}}idG?V?uiY0fDB@pc9<3@^mWe*KcGzE0Pz%2ZZatjX!(z7+ea*dYL*IGGWfEv%VE zI1XAkjvUC77d$#T5t z?oCHQ04Gb;$c~*a3%$t5zyGF+c~LrHBg)#lO~0xDwHR{0%TzJu%vc<+TTb=p8zBJc zO&5q5Z_VQuNmn7yndjVbA+gwxo2;Vm0nxopHJU4V8eF$B+GSvf>m0*}NG` zZS$b;ZBuCJ-G{<%R^u`RVPm81u>c{EMxoK0a&~(`d)d-xj3ggrS>QolnFBS9$!gJo z>k*>p=%l^Pk__X&Upi;0L>wg*WSfFD=JXZgNi=F^iKFb<2=16)z5L8+g?L1bcQb5% zmVzXYeTh9RxYCme&q|vJeHg?a0AoyGvo6#pI$11b8%g*8LWZHZvtz7( zHgs=yGR0r+?OBf(?joDJd3FMusuulY3I+Hn$>tn+*`p=#){ij(1v+&1n>Me`JyNYN zyn%6ig~SVm#B}*{R5T32N2_TIb@!$x{PpVlT&y~87|8HBY)7yWFca?rvNVy|Vy_5p zmNTkMnCe8-^dRvaC#CgSt$~;wKksnMb{hu&40n63w|_r2S1swN{eYAetfy(krr;Un zM7c7}pgdM)Gv+OFF1Kf4G7M4yR@8Ypysip4{@I0&{rxP`B4?hA?fK&ch+A$Kh0@jx zq?p9qy3VXbuEpHZ?^1S^>(D9)(MVx^R5WygJ|+}4lv-Vv>po&nhmPF)wN=&KJLNpe zyHit&Bi7R>Yu1{?1`|wNP~hFd6cSPj$Y`GzCAnQ8dH7%C_uYc$%npbanp(gBHRmh+ z#k-v|3o9`+)HK2`{=PFPsq{t;<=%z(TyXw^zv|1IilDD^m%f>g4Sw2IDD;+4``j!@ z1gNoD@9$gXu`@ZDd2kFBr>2-Yu9UOXJ+y>lNZAqn1mB}?dk*dh z3rm#WS9VxcT`l31)n(^+AJE(k@zGhsmmEWY z{%2s?e5ERm^!Z!hWQB;Uo7MSN~v9@^q!YLm+?ib}a!WYYqyMx&?k)$ze~H#FdP zKy%jCRuC%|-x)jjyg9VAG%XrBIx+hr1xJOh|LXGl%r=#BOkzEIzf4N-6MWk5wXRPX z7zStMRbi@*e8xXm;w=}j1L zVp`Q3OZg-QE_AR2HeSEPr}XWij9^{k<3Mn#mSTcd)w&2zdwexR!t&SU81G8zDJ{X5 za9-5l*@~Bv*0bD|Cy0;-*S*)1!Qn*((8!p~&Brb9Ex13piZ#Exq0q3Q>Hi7<(L>Ap>DG}r)+^pG1Ne0YXfx>VY zzRGMTYtpw5R~>xp-1pl+vsa*n9T|z_P`%mDB5ra{(8$OLq11@NfyL##w}_#vuNE3d z>V2)4qeg$K4yz}B}EqY%=l_o=y zCabD-6t$BCLqo?fc#K&$$M1<9*p|YgK}gk##?BfO>gh+uv36)i2Ms(TW-21!ZGX8~ zq}zV6;q2`Yy~p;eMqU3N6r`q1nK*>3RY<(%bKZ2a9!Z}8ea`?}Tl+Y-*@T9KPnmrW(6m`1-6 zzy}U>+*c94lRJ z_tGsODcJ&zOY8YPsP21OJm-iQhFkVDRz}zeA)~i)`OD*uaS`D}-H;>W%Qh?cGly`j zD_EU1N)&4{qT%_Wb;(`as*afUyB*;7CG7h~3>fXr!pC9n9y$;WX625?Ykq?&c9uB7 zGx3G+{FM^d1qV<4txU;ZXiq5FI3;R{8HM9Af>LyS%AK@8{8V!Li^!SNz6kCk*uA+z z7y%Q&Xoknhyi2vuJf(?=pBKeb3l|rdaim6KO4f@t>j&VhCN=289u@k%GErtJY};5h z6MNHtc%cp;ocFD^Hg2A6Mq!k5e?VKuTbJ8&AR~=-SDn&4KNU4~Uv*C_vg;)snIiU2 z4%@(uSjeiHhOW}e@!w6z-tynRdgd*u)-!(Q~B0IoToJ(_Sar1TO~-_kUuisGMk^^T6Pa9A%j3aG3Da_%3a zbK@f@{EGLHx&x7_$S*oxQycs}Th!qTn@B8P7$UUqt3gP0}qewVwc-A>BDxWhc^^fKwh{uPw^AtZr!ntD$XCrZ zfm5Nw0KJctsi{L_z1Q+nlg}wjK)`ViBN3JkKfh#)y~uIXEzWlk01L|*F8gEFU)yYm zb17J)4P2$+|5FPv&KOpR{8eQEu@psU>O zD*Q~-jh}|5j)wx_C&*!^)X24ur>-f=^)CcNWvLO&ip<{D_0GJ>LTOO}83JBZlxn!Z z)~~-GgSJbWlAo#@>Uv_11$weVR7;PH3_kC*S0hwJ>s;8~iBy?-Yc-==COqy}J|Shb zx8NnQ;6@(ZavN0O37MRM&0K#Ht8`%m1x%fjZ>O!Vu@1d_)B$jW%9nlv)98#-2^G4Y z(O2|NLeydUxYVR@TxLrB?LCC7DvA;gAb&h^Im$^Q@^I>N(0cMLEWu;m5o-zpvK-WC zeDRa$atp^DQxmh1WuGCoda}KAPgi^Qbpqa|L~v;d3GfChFbUoF8ZK~9He6mj)Akv~a84Om1$ z0Z?cyjaI)(Of61Vx!4D(=E^IlF=rKu*7p_J#{-=P9w6D~0-;0+rz*{&)9LZKBfS$Z zI-0?3qUh6->rrrftLp)t92J`WVa~gL&(c-vw{ooxtoPS-VKxLy1XE1cNIV{FY0NRD zWt)o##?l`wjOjf2?D{R1Z+9T_!toaJwSwvMdJKT zq*`xmAIH$;WC{!++8EQNFO&5w2kNhU4-uO^uDLt)r}Jd<|7|<6J$72uY{W zB5dRo$F(O`(aTBc#DM2FT%(tt5s82 znKQF#m@_|8K#1g0BT||~4kkT-zyX2-#m=cg;%M-sT((w?Wcbt$0i}s4L&%L=n zyaN&Pu)KUxZwxNKNG8iX)io-R0+}zgcy`aNDw%pJqllw_UR2|;W^u5|2L%K(XhY6# zaF@8?x+2!Uxf*WUadLcBMmXjXEZ0tr5B#p}Nt4d{OIm{KF_99Twx+h~ENVX1{Xnaoh>l=US%!rp2Y22Z<5vRnt4OHcR*(yp!{X?5dt zwd<&(sAMbplMefo#JLlqg!LV~9Z~{@e)!>gzs_bN4y|b6X%u(|9ay&Bmk=yJJb$xX zi_PR?%XEeE(FkRwRW0tvZO~&TQ<%LAX;s`UF z6TfxqtAW6wB`++@*B{90-0qu<2LUK#$6*u+Htaefb_;|1T>=1&=|cVeqg*@+abI_)T>NeQ0-?#<1ipWU(eJm49g z%Lvv+sKQbW!mv<^;Q)3#eDwiXl?PU=H@|;#Izn69j!KhwTSxYHbq0z zJ+vD!do)*}72LrX>9;Zk6V*dfAHCQh;tCKnH>ZAEYUsKU`n!9*zR3~50<5|jTt(4R zO{zT3uJmOX4p;j5OQZFC6D|c}CPZaljdVei4=qA!GosU-Y=?FdG-=`> zGDguWESyNQ!*<);lcxFnw;1d4$Y+STg22wLhag`7VAEN1`})uD<~9a6;Nkd!JA+mW z^`nTDgyN}_*b4`6tt_QPSC`C-vAyaA)o4(mr5wmql{QeB)&1rhbIZis#PUf3(fp&g zna-0o-kXgOJISo>^(Lu41zl^!mH3F1GN_F#Gp4jWWeMt$sB?gAyh+K<){iZcyaC<* ztXfl&(;4i*@ndwH0+lftX=QTYh4$)kC3&6OmbNK$c`IGu&b5?uWtXr%xNC1;`AJTS zr>pJuLH4W0vz1yaC6WLPidUS-N}r>~aiw;YgoeeU<>IXDt1up>s%n$x!^`qH z3k$)44mscB96Z498-)ZgmC1Nz7%+b?%XG?pv5hXz2pl`j`mUHQYGcCz_`S>tupu~` zU0TB$5Frc>?^zy4tgtc0%vh0(9Qczf0f%F%jAfvU!-f!8Ur!I%=)ZM~%6kt%spvN^ z=SbCF2Q2ajE2@0(Jdsg9g~)tq5pDSC50_h!Z@!$Z+||kv|PnXa*m*G06wVGnS`wfr; z;{6n@3n(w=+hf!U1V#pA-$&4~O#a|$O4`Tw5aj3(emHaqw`mL{=%IdhHs%HjYy(~4 zqZw7c4o4o@eU3x({&v4ZcdvF{2J**(F;RPMm-qTl$fL`GL`c7+?|ni)+sn+}b;lxC zz1&A570Tgrn3eq%Fwpf$YC-<=I(YH=APalpsup(&5*1Zx(=fF5S?DW(0QtCGjbjgP zk3bKlwC;4Xtg?#xoVb#AD)J@rfH2S+p>O&ms$^ZPXi%;9~Ww%dJfAxb#OI z)ZSo~1}|OpHu0#AdQjDuP)S4MNpxE|DCk?~tm9~D3a{hwj#PU;X95OeltSOn{}3^z z&Y+#}wNE}qHC7+(CP%V#JQ~uH?i-s`Abn^d#kGxLWG{HhOX#(-!uRWt`NG-rDZw>*V}&Wqp8Q^~0Yved zBy4S;g?rKrHzt?|$Hqj3z3^1Z)xN`;vd7Cu+4J7$7jan;G-FZID&4QvNB%*2CTXlw z;Tszso@^e?{nOch!P}ujkepcTnP{$!@OI5P)xR20nnroV38!iqVYNsAkXMuUi?Ynh zjQFc}(81$?s0o;d;e#oVHO%mE+F#rtq<45>eWJD>RN4atyl4e7zY83Le51GLWZmcA zdwU}IprxjsuA(!xA#3F!A7$`Fn^xm>7`nBaUDT7w>tg8$kdlEt64;w4oSBtm=xru3uVZdz*ZqlVH>dOLcu|}A z!0>jJB6RTDjRZ_aKb(MzyIGJ5t!roqGJA6rS+NnM<8{yQq;$guRBrgvO=F7*T;ybU z+CgFT+DV5%SxxQNyo;$pbdKf?V1b7#TiVI?WTgeW!KDEjx&#)`gyV~RXx^ea{nuV( z7B&hN+)x=hiR}$ZfZ)+;n%nI$<}bP#t>V7LvGO598knogzM6UawODk8&wXOl5_q%`!&1miA+imDpoqC7Rh$Le60IHqqmK!|s2GA1R_JUq{?u-j0kS zpPbRHw1(G9LvFphsKQ3XzT7&J)mG0QY;O?iUATuy`W~87mkgkUm34P)`KqQd(iL%a zP0Wo6nWpW;B`%+@w&!}JUv9*WKhOQ_L6LsO+|~HvIX%4+MCJnqkJIAAjha@8UHz4%vN_`RK=E3MUKT zJF|fqC{ozSBu5FZi_L1}TcCJ}k1zgbv!#2JzaahDOm`{d8*T2P#_NH7won|BW`g&k z8~>1A&O?K@xk+}j*&`*0X8;{D<=mU&A)f; zmyb->SWrw(Q+=lX^yqHvs$S!2H?=57huqUYM*z%f+;vR_02g*LSpR_|r4p3fXU+6~b00|=rPUlt)&Y|hq@!e%P_IOi_i9^Q$v<<;`v zg2PGoc93URbohNdVy*QL}w|FzpVM2qn&Vs-zr=l$lYNS&EEp zez8)jox@|`X0+r!&Wi^bAU`gEN7~w6GD&$V#4>f3;61s&O%Mr8Wp6Ui6>hzRnTvYV zW@BotXH}DYG-Pntz!a0IA%1?j|l;o^EKe(z=W#4VP*$S*`Tsgm+7Z?L(vlgZ(ssU{t;KWC`prh z5oHI?u^ScI`Y|A6$QkZH zSy+cq9=*K+*-$13uMo?WPOD3|fwOers1vz)kj)1e%G_s+&IAyy3w~_UVy1}rt5Jmo zBL&NGtWW33Fez;+e2eH!X`S!NXe|{rHKcr!5gp6)OOAAP6#w&AYX|`J==T(+3z3KBqs;5RiulXDs&SeO&Ke=8$b-+yx2PKms^ff2 zQJf*(6&l$d=a-{gPClFfz16jRF3(+Pz%PCI?{hnLAN4I4hCVNx@vSi9xn9UP{ngrgE||E6SYADk!RW? zN~|bQipNrqR@klb8lnIb2ix-Ua zge{*jZRPg_Pbo>6W>DYp79eZxZnU-jJ?YpQ=W>pLXRVE-QivYljkD>qhrh6V(1C7k z{8i`k_f-kbUlM8Av7yF5I|7q=Ea}w9T6cN%>nDyY+9yQ7ghKRsTN>v=b;Y{mWF(S{ zgN4F1eQ=)>3Y8;O(_Gqg*iy%@eEk1c&_ z&k^6yda+NJ;xY-41ls@Lgw-ma{_&Z*K4JC(Xdg`eq=6)_JsNzgSm_W+HI}R{R@vOX zi!iSW0b#L9`C<78_@XtsA&k4{0PuDRa>O5I~xPO>Onc4Np+DAeLol z57B^wvbpOsZ8e^Q1Jv9-f8CEPqDSjfpqSrKf1|lrUAqJL{Uyg->ichU%-Z?%qvsDw zm_+}EQNH97oYso@0xDc}upjjyja+GuM?hpG{7`a4e>LvpF&H1%IL}z7`8XXII=8zb_#Khk{RHW3UAglC7~5a2rti)0=HQ%<*n=ZVp*k|}Sq;A8_s`N|W)F^s1je%- z%~(fzzzZWgUfBgbXMdxLOZo{e$0z^}KHCRH=oR(E45O>{6%3 z8^vALvvj%5pMJ)Rv0+C&`o_S*2tr6Fg2K7X#Akqj?HlB@#J3Jm2Qi<82i=)l#E>ir zXs?xki>2S{IDeW6U%5V=x3ghJ1(FiStK}G*Vb;N&<~Z|;3B95A8Opq8JfPx0vQICW zFx31`vK=d(MaMw@_3rz#XsE)401KH9-NZzg3g)WXE@SVA``+=)pl|Lmg~bhn3}dQh z=YsJ$yQsHG7v~=tjNNVJs^pmfG{G¨;1>%Bqpx8R~rN<{V5<#oPN_RQh1u($Bj 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

    8OmQ%eCzmFO|``J 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 z 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
    3Kk4OT_y%{F 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�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
    E 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

    <8~cY-c=IejS9?9ytBn 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

    3bg(C0Vhh=Pi!{B)CfUksq;b9E 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%0AC2S05vfNYM77N}Vvc0Y( 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⩔d|7 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

    tu=Z3?Gi;11DY<2dD3iQ+%~oCNf%OV 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

  1. ftg6a#j$g6F-i8*7a8IASXUTGA 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�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

    +y2|cPALRgBzLlrB8fX7 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

    xPPxW`Fr+ktdV8lBIp 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

    (;NzxHfVZs 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

    ( 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%0DuDbtkc;C&;SVC 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

    X2w2n+FUbm?z=@Qn4fn2Wg!RC!>d z!OU%-&~YnYnl(;za4f8Phlsl)O1LuFOq@|>X4%2Y6eZ%&VR2$QHdQw6CZB!WvuedY zG)1>no9jh^ckZyd#zGZ09zDA-+ z?4Y)GoL(NqPKYP|&0H+n`eq3t)-p6HMH>}7OP>^P|3^x2V|_xLIsrXp*|f7sz|xrD>EnJI?>{y5%9owJ6Vrn}kU|wqhf2>(tgTTMB13DJ|n;*EL&s2bs z_jx^6=@=L|vKG;HI%67pQ=_NJuq+du6)$I?gD@3g#9<&qISao+QI^M?_< zKfg5%cpK<^5MC@?T#Ad949DauF!I-!L)P4sc0RzI7%gB7O+?;x6~ru67(|; zxWrQZ^p%kNd(o!xY7(0L;=S(`D5i|0T=Sl6L0%RUe7>Pg6(v4319GLm0dVjGtaM3# z&7uKc|J)90y`N~ngQ1kL*Sd=lsDPtZKfil)F8*qak?Mdw2J%{lo$#B|1txQz8_t2z(>Yw|6L65C#x!D zcZ6VY1b}n(X%1h50HTc`Rh4Q|B;Zo}{)F}Lo$SU*Nc-(KtGnOx*`*JY)#JyK->Y1K z#&3m(&Tq0eS>0PZoc>7I;>*caf|Pau6@9i$0eb+p0VSA%z;0ed{26K)S|4V(+zH)u z=3WHG6gW%hdAJvvnnX#6@WDv*2%L%7R^Bi{4YQJtcr#&-iXPyz-RU z!oDIet-?C4lk6-sKtiI-=qEEydbr2GHiI=ZX3-{A3NWn_6dJb2^nWa791YkPb0`)> zkb~@j>W3H#pby^2mlAkkW5d<{kC+KW(jNtGpvDh9z|O2(sP;> z4h&m#9`o2$OB8Xn*_BPZ5zAcQ4zRowW+X*)okROdLHDx-`gAx6+ff}wbkZcmtO8(= zS1bFj(Op~4e8BmIBWMK$JE+}ke_iPLPCY_OC^fy#7HeE{#f>0!$>qsMsi0HN?tL?8 zdd(?TBiwz;S&B*@=6qS6wT7Lo5(+JJW;ji;jYR<7+3xL~6wRkiFMGzwQtSh01AZ2$ zBVt|h2~I+B8ldJV#p}|#$P$OdYQ9!7*m>*U*3QwHPQa(Bv7s{dRN#80h0?TelV>nm z_E0T2Q4hL zkrv>p8%XFO+#Mv22K)L@QyU}SO*a)M@6U4vbJH6T0Os$qr( zs1AfuST27y`y|*hkdl{HyQx(fQK+oV09^7DYQ)62PtJ9>{tQ(gx1{F1Y5T0T=>nmC zWj0bU75`5m@Pz$oBFqzAr@5{9GEk4qs|bV>Is-)uLo~kcc&DIUzZs3HhXO7K=9LvJ zb8?T{)z5PR@Uobj+#ydlWcFHw2hA3Iv~-}*&1V9BO(=FUuI80Id$1+sJUUd*h=U!p@Lhi8 zBQ)*u!)LkRNbZ`Ukf0}DXDS-YDfhc9k_??A-#@wpAk3nRc6t>oMg;Igl@|3Py$Vuv z|K;=F*!d|0l;Cn)?e<;XBRxqM)15trzi2>HC!a0X)LxgltwXKb*#+NopLc7cM%_@<+Zw8GEix1z?t;)EW{SEDI zsk~xnb9MXE-f6u}7`WlZndV4FO*i(*q&m-f+slAezQG)=v{sU&9*KAhrisVPbkJo3 z9I=>RoL8=91#0)9o~r{YC| zBIX>!PQlM?mmP(L&~i`M5BII+QQVF0Y~zw9I3zFgl}i(CQ@rkY=g$I^7l#l7x^hC3 zrvQm*BxJzP{uj!=)!W!mzWRNQRO?RoW#_|>z6Cvm5qYN$4q=_KYMul|;8Y56WRrSO z?UaX6vz~?^(}sR{fC|pMU79A-!D&#v=we0p%1>o7an+FrwC?tJ^Ka3?`Rr`rRR(v3 z7yL7o9}MHDs9Tx<8`LdzT8)5>ZOwdi=Z(;lq}^t*v}CWFGXgP`uj2yX*kotF(_~z- zNUy4syIszyW(RN??|LqrR?+;70D&1nW6N_09_$ob2wGCKW$*I6ycbrRYnU$B*CK*b z7G?>CgKV&T{snltMk$VS5fwW`o)4#!0t=hvS&wi5wA{BZPq?JCswd(Juu-0O(hN+c zyrf+~AF3EOd{%#6nKrguf4yl%N4@v7-E(-FCDb0ghzoA!xu`*Bf^Rv>`Bu$cDZ9-U z4K&yl-RR1I>$#IKT3`|H7Y!xUBQ%|rJngeMHn5~^OdaqkTK;{Vr@GtO8uGo)Sm76y z*WzfcLB|i@T?b|&n9CY}dEcI~sU&Zefo0q?5P7M1156{G8&r`Ox-MD6g9b?!!Hz*% z4;CMGGGrijQrEk%mKvr{46{!anM*Z%XD^o5!b{PWWig>gg4TQVVd9;9f}~6PV-E7t z27H9Cz=j;*`$;D?!&+$||IG`-4BFy!!mHet41>wek011A9e4LokIb9(a;PL_(lE9L zpBVw-mkKodhrcH>rNqIVJW2wnG%iP^DuO}Vo~IY2`B|ko4|xVg@cY7plUn;bQsi;b zwI&_MK8i`ufL?v}?#q=1Ki{cxAohK-?!}6l`!9HCyTov0mR;BhnBqs%1R9S4x$BfN zWd;2e3O^H;qjwroB@<_3l>6k%H~S{Tp3dvl9YtI?W`y&+0UYXL0jnds{dEQr?xl9m z|Haik2S?KPZNuN#wr$(Ct&MHl+E^Rg$;R5)w(VqMV}gydPtNncp6j{a_n)5W>8k0O zs;Qc;{vDs=`^Y!eL%C9bhEUnm9S}kRcHUMik-`oKUF`P?gQYx8U?MgoDO}UyN+CH{ z0kW6lvFcVUqW@$cF_sool=pOXf)Xm+W>fCn=#y%dMgCVf)8OT*VCzPo$6O5ITL@zZ z59LKgP^F;j_pd$Xhc&!({UR^9g8F58DV|&jEFSKCnn|XH_2cd&zwjRu%eHJzK8(!|Cb2te-Qz*|3w5Q{!0Y1{v`rt{}KWJ z{}6$We~3W&e~7^K7ZITShX{!N4-p9cA_8ZVI(z>Tfti1Z0O`L(z~cWB0a*Kgh=8=% zoShZ^{~`h?{~-c@=;1<*b~1jnH2jwcpbh?)2poJ70la^Sfbz*u+W#X0)O<>-u@J@1 zGm9Liu3tpJZJO8ce~3Wje~17&a=zt1M4(Kd)w`Ul@n0gKIQjbyhjx6LUqmF%5!JZ0 zdsYfr($JPm4+X8sdG(58-fBlv%M}pMS0pS2Kfngo3K3t>02$W4A{a8zn%nVr!fc>m za*Ml|0>P$z+W$P)ZT6s zX_MO4sVvmc+KpV<&YOM+irO z9s3VNZAKNWpHBcQ|EiG^xfV!*;_OH=8pztZ&b1Ps zUV^vtW~gFN7$-ZJ3A>zIp7R~Y_jr)2ElD6-+&FB{tbyMWtiFwkfeh9*pWI6PhPpK? zYM3`4uBqU;e3)K$VqXAU_)Lej^hY07z2fzrM2uOA)W39ntsKWu!PK9?XLWjVE@;E= z>`cc;RbprQIrME;Zpthxv#c0-wq5r{ull3D{HNeAseozkW?)e=as~rk#2u{Yq z#mAe`U#W`gcq{FM9?2XrXtx)u@PcN08+xe2*>{c5qlM4DcY_R#5JUKbKd?5%Z041d zW`7$6D#h?b&;lWdmFpZuf|#3LCyVgq983{*7+;EnnLOv21`oj38XB5QUepmhCX2x@ z`!&%|c0QnoZJvu>4Yz*R)hpNG3aq7d93<1WLlGt{od(wsdeq{>c-RqE%};7Iv-%W4 z2phNk)&hso@C~T#TXy2}D(@>mnp6tR#RY<8+zKt-GZ48bB3vtJeuGDQK2`4Xt{SRaUXd4*nbq zj2MeRanqv-yy|#yksZ6y%5B>$CvV+I79mthYh`8Ez?YH}`!Yi$YtdsG$BD|l#ONY; z5FGoETEBU^1036oH$9dcL6OJ~8po0uN-1H{h<`bnA5etg(CquT!H0-6m)d55`D|tt z3PiB(aOgZ1h1L5DXE)RH&)gvzw0V}O3?+cC7N4@&2_T+2XRUdgN(Ybb%{PneFc!9LcjF?hiLI1U= zVWAZO|GnH8wT)BW3x&~FC+YEO`^d45y69ad$jSAsV6aq=HwO`&Q*8|;9-YL!V#|hhs3(>>$LR~_Ce5ZDE74arigq~&wi=(#zUD*~OAFSv{UYC%y@SDvNI)>wg!qD@p%P|>aLlc^j}vf0o3Yi{OI zsjHDbl!;-`hGgL-hcp(pxXpE$-EfJ+Z+IR)isi?H-~PmSI|%#vf^+{hFXw5paqTnn zdp)U%Gx|h649DY{C3@H+FQB&cP}GQUqh0#HJivp&vg-fw0A35~Cr+P{a?NbSAiZFs z=`gr3vgys>OJ>%QhqtVc}2sXrd6M!C$F9j@dwYdm`$sTVN;GjL0TgGB=`OW^=n z*a(jzIaiqLAI?29-;<+7tZn;)q8C=nHMSQbLI&*51{1$FU<#J3k;dzG9(o)3PGTe8 z`Pnr1aD;9vSPBLN=WNkmvvdu2fL&$jvL6nLKLW$Uradq)RhcfOp|U~jCL`oE&+=o^ zejwiNFM4j=AWcWwpv-6d34}TcQO9%ufmFuJXF~Cl6$K8HBVoi%~?kDCA)3>8ThbBsy?u*8f zY6vW4dnt9}P+FF9qAO;Gi)}8)d+vzf5bRW{iZa*~-))|K%woA&(Ntx+$MSqQKDGJ_ zgIa31YOVF-q1w?!0^B(VZIa!?1Wgg;m*QdE>5EQ#9IT)TA~lh224A91YK~H$+m@|K z-(YRlzW3VSDP51?CD3-1Y^W=RIp?x}-hHxXh4Ks??|BBJdvK1Zgh~v8fM>aLJ|6B> zx_OX9td&QI(CBNRN%5p8PAyp+Z-BBx0d_R_z=(4Ap#WOvY>v9ryQN zN9y?Gn2Z^GcHQnF-sF{ELgE%{w0hQ(s&hqnn11{V1E2hp{8}>pLFjhO7<&m zJfT7^#z0RbpXDK##!Udhhl~nwk76ZBV&a1Mb4n{=agQ3Z=;J}g?hT?Uc~{EI1NY!= z9i*Q!48Pm(hECwgx11tSdzloz8$*TB`cT15_l&IB^gtp|`=mp_VBKbFS6xn|P1&mN z-NHYeK@T60l$k<{CBRQOCzmTjz%8Ha`zDo3BjKV*HaoMAZS!NLtUhS8Kol{fi1%Lb zW%Df(D^&|@tf#TlQqgCI-5okNjz9}LZaK1Ak4l$iLTcIfM$sOTJECCO&Jo`UwyBzV z7cV6$cB5!lUHQh?!z2XpQ?WwmYjAxn{*X+1JY()wy6^5AWGbI9s&|(%PZTIq%bUja z^DTIv!MIOQ2Xgau4m;GSa=Vl!{$9rj6G(txpq33)nf1&mf!7j0Lt`QT`e5OjDv*!5 zJ(TOpBI@cp#<|fg{P@Qhikw z$ITa{Q4mis?yec46eiO57&Olxgu(Fl0wasBW!FARnKtT97&rAaV9!lITAP2=9NSAl z_)=;s9ZD8kKQybIm5iCcI}^))M3{~o%bETD40*ty@5-qc>PtfF!{p$UnoO2TIwt7= z*i}6#KfA22DGpl8)Nghd$(EIc#NBC9jHJ!5uROY~8qFHXqhqcFkG=fliRr$hENB@~ zdWJhTKqN{!i1;K_wXn<-)xw}X@E0}(I+1JNyunI+kVZ^1osN#jF*d$!A#Y^yJsgN1 zTQ|l#*LzeOn$@h=9#aKNcndA8<(>(tKL&z0Dxo_8>M{X){gMFUpWeQM|N87?|(6MAn)p)i% zKLc7kRIXU3H$Qfs0;=V8P=;qN_!sFo%#qx2lp?{J;WP_4d+glM?39~O%^ki*7_1ab zvHYfBfVT18q|?4CWl#y_Z4~JtCnSa1u3!Jtt1Le~>dJV)1*`_aBEY&bp)2=sT{Vxv z)XRtKke{hmIwMx2q)M~-ojX{_nB3S>Hc|e0SPL9yJp6o;$CGMeR$$PiC@3)Nr;iDQ!jQ9_xS5R#!WF4$WK?h?SYUn zu&osGWtFqd=FQI3{*D6qEx3K}p654Z zfbZEfYu6AZVBSAcuKB)G(;JYJF7?8$ zN3Z8+hI4yiPwru8)IbAWy$5iZHoDiJyP!z!uwn}%nY2|>u)}zp&fPQKqz~N5dYoQ zL1A7W*-M07%J1%DD9e&j9(P78g)P%hpwn1W`YF)8KhLPg86mIx%e6lVtun+-fPLjq zk2d?b>;0Un@Q;${0r^mT=GY_NotKq>xOm1K*6P)1dv)5*7J=)pP&kS90@K92il_uk zf}K<{7rfkaC(lO72JUdxyE9Wf_R4S5XkMeG(2@C;4Mm)l>GW~ZD2L)^1%i3K8S==f zuUfK=A1_)np}9XJxsqAF5%`g9WW{w{5uF7ku7D~yI{M<9h=)o9>`*3`ic!lD6o$>& zwu*ch`1r^c2O()rHMz))HT2PkormPYPG$KsVsmw*I_l~2?NJ_|o{WYggg2Sfc1rr|_CciZ*D2);i;c8kRgkzhg@}P%? zKNjO3oT{7swtVB{3xCk-r|0sMvX3VD(_d9wrnkB2b7$>fQH{KO?NmiTR4INA#$#;m zLi z90Zc-qA-g(AHGO0W+9ndUFcOl?AVOYL%kg?egj4EA9hHM5JA3gTGbE z!Qf82Z?stvqOtjbpBxMck``*w{)p(|o><0tE_!2sGq7>U`z+FAjA|M~hUjdH?Z&RP zPJ|}5)ASZsDWeKl2lk%r>y5F{N3$0>qNN2@K@oTQd7vsdo(yKXd!a5fO=4|7RE{&N zctWdup9dj{fn|wvSd555C;u_mT#taWYE{g${Mt=DBzIH(3`Z8K;SVQqo5wiOW-3L(R*Z* zOFzR9dr)ZtBkh_W9jFzA5odto2~l%g?FL^2q8h&|L;<=O-`+}IYmn9mGF-z?kyAg@ znwS#7STn7rROY4P29}t3#!_PfNp&|~-C3l}Ea-o>^d8vY^Xm87VaUOfdD1b) z#-_GV-EXKGL+fJ~>KH1uX^$bZa~V&1p8bHw_!R+jw7o2?rt;Ek=wa4WbbGfEkr*7g z@u9h_6?ZD^k9c$5J|)m?=wu{`J3v=iMS~NWr#jAa-h%bo+~S76c2fGRO{_AzOQQnO zotNX>$y}Ld(0MZqJ-iXaCZ+#S?9d+*#qsNOSbDYY;oNJGxVG(%t-ZXu{JF^}H%V#GGL@_|)_7eaA zL_Au!3vGZ42?enC_QEAmLcDW!#efCLpR^_r#T`6Ke;i;@-@5MU-2V7OrvzZSAEwmy z%Nebr>g5l0lz5jcLw#q_-c1k$Pd=kZ3@QM+VI*+IEL%bnkzg~Z;C1RTNCJJPBT-3j z-_cMOUm#zdd$)#6$-U5aA*9*K5@6OP^*$uB`KAmNBTHJ}6`EP&iGGn4S#uNCx%rkw z4#QCmA!@bu!+W>r(1)y>1WabIo$YVdhm=37@xxNaEN?rRw)(_VcU6l_O*>8Tf3w)7 z*2F+W5lyEQT|XUkHgfC;mccq~T zoriyv9=;#`xQa09#*asjgba3=MQ)1K@?3oM>BsZ9*apCJfusb(~H z{^yf1&k=m2BO4`1NUEi`ZQpUnRJG-I=&?(%T@O5 zAgJG1mDlPXL3{`ciQMwYN3AmyuPh`DsNf4 zG6ia&31^IBM57VGC@Z7XklU73BQetGESBp}1Dg!X=5J9zH}E_oaKwgNKqPkEMu!eV z05~B-nOxyfq_%-Q*HHSPB+hNP zSH{`7FJ|xOBbH4BKV-C&ibb#}A^p((uxB`7Re8;%xnzZdpcb&A-E*3v% z5mjYt)J+h{JJjVpq9mgo4RuE0M@tfnbouiflv@?3Kt7A)a>mSxT$SaRNZP53S+!)@ z^?Y{Yg|i%H8?p;fg+Z_Pfo{}Rxb!_`;-?=u=`cU~2iS5GFg+*tETU!m7%8)=`a1%8 zh*ejuCGlhaBu&Dg68$73=GH4V$*dIuPlbqFg!ZL3w{kmGhXR(IowWLRQ$Cs~^qb}h zyJI4#AFxpG0m5~#zUHh<9CV)Hv)|jasle^B)D6Abpv8pTfr7IJ^gKfojB;GBR1=O4 z1vm#u??Gv=V**T8O?14K#I8Tm}6SHCl921;m%*#f$S~F^)S6(VSa66dM1UdJTZ_ z2+l*Hva_Z@#AV1s(XTaOUwv@)@*!v7XXTrxK?S{N;uYC5^NN6ssgg+hVa9`xVTqF> ztWl9dRWWBESjiq=K_T;GJ3Pq-p|vB(8ut~M7~E>hg(7`)o&fOd$xNgduqzx)j}D)Y zeuMwPvNmX9 z*G>>oBq~09?nL}-520Q;ny{j%LkCXU9=XiaTr($4+YI=suD&$=VFr4hix8SJl=oYb zI2}~({FjA%2@eHCnJj^&9N@WZp8fc|ej6UZn>SdXz}b-H*#A2CF@lSa>*v0abN*=I z6QSx~r|ssTEp8x=L#gny|F=kiidH;TnS37-wGZ%~o_r+%{dzFdT7&Vi+*PjNHWMgOECvoCE zbW=xNShT6M3_?%){=P4T2dW#w{x$$NHFfSi_GiCj6uw)+RIvjo$cgO9PiVT!-C?j~ z$!hYk9Ojd~6WKF|wS%2YtAbIKwRQXs5TMwhuJ~ZhB4smLf5wqNQecMKIbe;< zxuTx$76r$g%3OYc4D9#lc&}Ky*#dSXEUFUKs=T;nWrWQwoAvn zSJ435h^`Di5oxg5+@u^8!k&7L=PMl4Kww^z5mppS(@|Q&#p&8Kc(A8`3$nzHGtmFH z+{C0sivCM5Y|`2)H!qUJuZ^A^gTWJP6~I=AgfHhZm^7y0iG%>#R&xsyHEZR_m+QH* z1GMRvyTC0N1Z}Rd%+KaFC6^L`u&snm&LWE2L-h)Jp{Q(@s9i9cUkdVPB(tw@&NG)6 zWlNtup;KZ??EW97m8)#`^Oi4h%I$HG)S1%>yh5y@sXyy5%u?g(X^_cD&Q#;%aU88P zTCa@DO|fCWta){t5zkTp8@$cQ;D$vb4{)A8gSc%i?NB%Lv%YK07<-U-rV+uE*dNVF2q8%eOTEZ?IUI4nqrE_BLA~*}hR>imV zgB)@EnLXziMw<9G1f%)VxaNSh-4jq6aWy26*6n{WB#(Hj$U#wOj$ zbgAxolu{?+1WO=UXq0c;Zpo~q(F1P$qFR#UKCj78^syN3a@)#KS=>)G#Vqa}N~0i) zJlNhK8Zl)&t*>2*ZCl=AuP!jWwvT?G9<18LE8`hk4s!){^VpG8i#&OrjSe*0mZmP_ zd!d*$Y^?1Y$qLvHcqdqQ))3tWS-IDV^|^J8FoInY)%ed9ViRP0yoT{VJ926{p9V7< zRgF8hA{P4CqNGMwbZ`t+HVl=jzuu#!K`8&bl*u{o)MtQ2Zg8d?E}pYP?xJ?O17?Yv zMecZ{W5~zL7Oz%4BR#_yFw;HKs0#);xK)57?OVNLpElc{^QbYlkr5p>G3p?llU|MGzf1iyIqfA~Px)E6HBf`9ftL<~3s>z%yx=rLde`-o&mr2@I% zbKevLubrRZ6lyVJ6bKzQpWIG9Wj=!nz5hG6;JW0;h-DbM82{)2k06fNB9<9Mi?}KO zmG?h(z!;R@%>KW2029fmckRm#{Q1WY5Ndg%rU9}YK{4}2uOTJ>e|7-rf9ycil96za zHF0DD(O}jcnFE`$9+6PqzQS=hr-+%g0H=Z7(N}Et?5lhjxDzDnM=|3J^3AYfsT)Tc z?U`h-Zo>Yrt0Y{&l+$j^Iy^^+~ceH2JJ!hsryeE&fBl&Fn)l&!4h|3AsJGTNR zO8ukYNN_!Fh1UD+uk{NL;f=C@S?GXA#+QjRDpP=>z>A4A*QDTQoSy&JGCqxAb3l#Oab1dKIrS#)WmRvZ*Y zIq23?g=vctfmRXWfJIKJu9HC#oUL)U(lK3uZ2UuW2}tQuzb7x>ySi(ihNa_D`=JA( z>UC&d{6xtW9u_ys_2$*a*H->yB%Ae`ceBFXxRvm4|=`AU6N z5$d|FAwkI+aCd4SvW=^_#$ZOW9Y~o(qKB*9Dq6eiAxzmK2V{G7l_L6Cw;Lu3lGPL) ztJ5w;uMZtE!!Jo0x{zk3^;Kn4Z$}W>DeSy@=bg-ze*-Kt=!TS^-DI_IbXx< z5_^Q$!UT+~MW;Px@E745VZ8>T$-m3=S3NU%{?*rCmCzf1>0D-i7Qfhp||4G@T$GQO&w~ zB-wplHXGk%o^Hc+*CEleSK$D)eDDpBxbS3*}d-hbFuxS&9+PTjM|T6J=iB3 zzgeKzXx1gL5w(#$nKo1_)_hrX)4 zjrH&TkX6`}3wN7`Z?D?pC1^xwuvZY^6f9g+G462*tEtJPpEmiE{83edk-IdK#Ym>O zYeO&LK*tpJthzIrq)o&T@)rd#o~~gTRS={(o4HiVseJs_fMg?+s=z{XQqqF&G8^PO zk}VJEe0j|uS?w@37-(eQ641S3q~h%gMNpN+SRV%G;pa0)BWG$==|E?9QE@68aOr2^ zqy;1xLwgQjNtXCA!giwntld=(F1|XMQw3at14|be8RpKNHH$FgJ+B{mnw?r)u@qUh zJ|y=1$`s}D6HB%;hRWX7M1iMH=>}DbYG`~7GCm3rGal!yZg_I|U;pc(&Og3(3Hb_O zvZ=2GG3UV3*6iyuH6(`e^Dbr8M+VSrKHDleX8kLQPuRHwZbIS?xdw(R~Xl?B};QDcbkvD(3y?Z zX-&+o;b!diWCT(isv>U99ll@*#iDZLI%ByySLIs*7HesACAxXUA4+eIQdntY z`qCogm8W-Kg(`;OmvXH?REaVvyrC_WdX+omL`Pe1U^)~H42k86t=rX7FJGGd~CEFk+xsMReUZL|sPR7h#WbdLT_f?twnaO0n#atIq2Db2| zItFh5qr78Z9;ekXAZxeO3mOXXa;#)8Q06YjC;*m!FSG1^*h zjE+D{ps0~7U`6(3*xzZ~o_H})I1;lbAnTT@){f~v(nuEFS{#ho!oIbx5}c3L6*lf; zb0s;L+%T$a3UC|Mv-WgJ&i|GZDqp`S+rHa5V0$dvo-TNxeqc6uv0T4iSlzH`a}%yY zE@ZQ<%el_c5LRTl*~log4$jti!T$keNs!CI8%PibxfcJlFijJuu-8kK|-In8E$(f~mN48G%a`V=@)!rfG829BmuM)*8_SfV#nJ zO*wsqGs5jB`}Q~1EL=b*ugxH`I$pO(yE^|aM1U*hbMis4NOzL0C)%gp?IWYr(hdNY z(mEsg5 zCWdk?*l$Y(QwYWz0C@hfigTT~dK%}UbSKRikAFtuh`K5UclorIum9$Eb6q&&%b>o$ zHD9Pfe=u(%$ZJL|;jm>u$rh1o%96*FpeJ@~Bg2NJV3bcqZgE$3dNA*P+*mjSDBsax ztwjt6qLojO1sp#NZf(7@-rPy4ws0R_+4C4!kSuuDh02Gtq<1?CHN#{P;2XazmTOL8>e2ZEl_-e6 z0;5flpBJ?|t4#oL7_kK9kPG?fZnMLl@Vfc!F$(-EL^Y6n(B}DjRyW3ms-`RExT{$* z$x-b>M|YTLCYnj$JT|v<_T{MSu_I9X4R_YvUZ(*VV?9c_xdNG2>DsRC#S~!l3A0<` znfmA~8YZOt$V4})8;&c~v-%P=Bidrd!PH`(tC?wP61g5Y_e?44uf#$aKh((MJvK73 zX8`QkiF_Bi)!25}ItKUt-CX6fNp7C4ZAeY^xi`1x$v6w*EgMK+#ZNV4$)@>1*b95| zqhZANUF=Xs;4CCJoyhZc#hnBRm@Sv5V1t!84>7!-H|>{wS+@a_ZR^yZ@cqIXMcoq2 z(KT?6SMM0gi*q{Ywr(n6H*xe8{ag=IXUxbg?ft9M8hSDPXd6oZls^u9 zR^YC*7|GN>$@|$m-IC%UQ_Sv)%}4^PM$YgXUiBp1&K{lKC&z;~DNB=8u^7YE2Ka=$BqvBsh~5S`VxhLfD=g8(-YKO-%Q$l?u&Wb^kCgQ;1~u1YlE6Zt+KUS9zoB$J zPPsrKd3ZnD9$?IS)8wGevYo?gp>1{?X29>}OUPC?u8!BJM1*Z2Z-_yTyUfn>52IMofzuThZSM-MM z4x{%+%Y&ss-A51OzbBQ?-UT$~T5fMBO~BM5cGJ$H6@KPi%yApZ1)#Cx1QJ7RbDGb& z+54z>S^FPFYn}P7{z)u*nep(%QhL2USX>LH5t{mtxih;zyZQ2q7iEFNtqQ4!9K8>o z)5#&nb^#N=_;yk|?xkoTU{!vy zGQTA!0v@>{uKdJ58t6Y%@SZ2y0fUOiThd**%WyXf+9gSz9hxCT@aVIju81HVJm5QQ z>nCTU(ND3GT|V)vUHzyFpW3&d3@C>%T(h2a zu1bCao=>{{O5-?HjU&FApp9a~H3D?cto~tdO=z9Gdq(A&SLH&4tuZZn8S!*Q6os|A zH}5F=^&VratNAT5J0-51TICCyLsptjC1l%;F99I<5FFYYpU z#Wf|y)pVJ`s#{RCK9?mC=K+KNcFp$(kCqFHcDp# z;MZt>57Te%bB$oxj|XXuK|(RK$h-Oq&qX?dk_I|&OLf6=o6tz5{X&ScBp+4z1@$tj z*Ijkl_ZGQZJ6N1kdhad_&XMWaccQQcRO2Ru^*cRF$v7yqtc&;oMXodr>qY3*!BjMr z4kBgFeBXCtT+y!Jr#Kt2@)OP`epYI}=-_Hjm(9;t-lANVikb8qx76MJ(+9=RCCaaD z9_WpfwEH&L zPX|FM@)=msH#t*vq}jE*m&*u)nFhYFl}}*pi*4}Cbw?xQ{~E-%l<^0I1f(A;Bn^*L zf57)!N-K^`J&tKNBj|g0|fuio-Yh+iE~8@ioKPRBl#OccpUX5uZl>_wD0#p?hf z(uL^OfSt8Kn}WA!uz!-};|AuDFj`+|&RK4t4eg|p5-N%3+!z@pOkD#es+XuoyOBPw zq01wjc;u?}fsm0b?j(5HuDh!DnZEC7NdoF#S)>do<2P`~C=3ZrCr_2JRqqxe`7dm@G$8FqTw!a=4N7n4Hzr{ zb|_$;dekkI2X!PfO~=kFwB!suYt!pNpHi4hp^;jeYKeno>k9tvm&-c6?!{PTVr@DT z_`_Jps0GA0D*ehti!rqB1NFLDRGX(9ev%%k-2YH%Oe}CT27Bky^guKtySGfR3>Ocp z3e6`a5JsO~glSV_V=7bVB(uikvup@T(~|tQzEID*OsY!n5WYT>};K{XAx*+#wiaU7rc4LdG; zJjx(t=0oj^Jc11*#5K^>a!#>r)?d!9r_ADbxCR|jd zA@Ao1H_%%N-c5+%+I?}{A9k7}1W`Y)xHT-ew;&|9saTGrIF_nKX2>`&n7k^f!)LabqVs?T0IJ=baO zYvTf@bL=IRt0Xt87Npmpy89!MA7+T{@0q|9B8I2_TfUWOUWze6Jvto!-m%=) z>a&6&a4~>i8WZoL3e5_(!g&u^ucOLWRR6OU0mG2hkfq}CNH~D}*<|7lt&{OkUxqcb1tQM5C(~$mHZkY z%U!ILnXrs4eTIqAeJEe}QT^6357{_0Um9dYyT;gX^5)paQE1p)?h=s*14;`g%cLXNef(D6&Y-`M_@L* z6F=KsBek#)iy6Gl^4~vD;oj)TU{;MK?RNGOYrZEsCQVoh1Y-?9O3fdQC(}5BdMF&Z z9yX&SQI9*>1qP7`mhbW30#0vuU9NI!j6WUS1U-EQ$CNO7Z{@KM zVY2{Q0RbgPfr(dYtNnIo?{Ga%jtRG~OXwybA}|D6UJdWq)rt!Ks`Ffm7ILqAt|1V9%!>yzSonTDD=d1igp=YBjFOwc@{fI zJk=_Wg5`SF1x;p#0kl5%M|cU1WF>iTW@n@?I?}k7I@af3{0=VlT?px3zAaYRiV2rj zAqq0-Jx2K-t?lJfLCxPOxe2--Ls#9G+y_XB)#WZ+QIpitWmDlUXxv>JNxQgf-KOr| ziGQ~bs1{6BFgC>PyR`E6JXmKK*yvh)W_Kp67J z*klI^?H4rPcwE&L1n1>X5n-E@WV+0b4S3fCi)kW|O@Du>RVfg)8evAFsk6wr|2Aq_ zK%-0ufD!-xarnmST5}Pl!8j1pq1OS=u37dg|7fC{G9j6%rZ->7iCWN2vkvjbKMtK&;07;$@5Pcf#Yt$!EVw<@x~ckjlbF zl_D5FR88YjY9Kwq*;$0dYTEOTJwJ7;e@__~S%}dI?-`eU|9`RZ+wrwZ% zQ;hbxS!o79FF(Fc?N1fD46S#@QMS@6`uRNcn-s2fj$s$IEeF&Kk4zUk9HGg(;Q+nE z_^RTGOpu z!b$sy?z;#nW4}$Mvy`w(%wXTHPbj0&nNqZ&*Poze^4R+xt{GncWFXzFG0dUq@Lz$N z9IWzG({V55?y$Fj_S$MfHriw%Izj0d@mC$4GS^6?DrtZZ3Ixj&_5t2SnD{VU??Q6Rlv0Ez*S9+^UZm}b0BcPx&iGY@RGm8Fi-{57v07$J z%VMj~xe=&$IRf-@9wWSK;1vH}o)3Ck4jOFTx=qnoIZT&gd*NewJhKhqlg{lz7@}8! zK}`b9&Rzsi1;YEbyoqF>pNPT$tJ5Zrw`2)aoNus9y8Q>++xwK*n4d^~VL10gRwa&8 zC|Knlh)RVOWM9P4Pn@7@%I26#>h4FT55oAjb0RkOy?2Ms5Ad7W=@`Gv8jq1HpCdE6 zog;3#!CzkK2i3p$qdj?MY-BOqXk>JSVKPZi!Q{r!gP-yG-||H?y9Lam3-}QFLRD;Y zB0duXk-Hpa3z75~*cx@NJ24qXACc1y4HIC2nVkl%k+WOCtgpE|@vGH-$5*v7`i2>Q zI=jfk2n3fThXy3Uy^cBz3HQw|95@d?ZbBC#rEu;#*RzVZ`y2g?dyHdVqL{o!m&wjD zI_(?di5PFY1)dfh9qvo4H~F3*!CJMqLNF&wO^KJErK$BAbe^w%eqTZ9+C-!|QMh&B z`|+-Pvh4x=(lFC`g?y)$>$ypC*q-QABjD*J2njV+^uW>oQzxZ|l8`lSp=hll6DAY*89NQsE^phgOcMoHdJOvdl{6HZ8Vy zo5ng&5R?5JJxB+@%6jBUo*$9D+#L+s_a{`(VU==OUZk@*{90Xa&3G}c5uc?vif?~C zpGNMArK#=BbXjrSH#~}qoLL;3W=C`zkg7gSMSv5c^uWcK_E+C=>RbXLTr_V4F*-@` zEdbuj@(E_sVIYAx;iSf52C(<9x9{cm#Gh;8#9YjB)!8}9+aACRsB5od0xXFh z^vC>a@^rW9Okyx*p1JwU&8 zLOkshu9Ls>0;(&Fog5`#Xy_ug5QhL(ushq)W5=qXq0e}EB0&oD=|;fR;guk7MPu4z zZ1VD%t12;}qw4}}3<>pPfC&}a3hx0& zANH+Hi*`jq&ynnc=SQoz*i$pIJ+uYt@<1n1RTW?M4Q7w>-0Nv1>88nzHQISdfh5jvF~Q4KQ)on?ajg zl(;B#iM1q{Gl|S!I{=X)IF_!g8~^5#O)yFoUkiO!AyragwdJ(|uQ|S_M*6ILDgMT< zTT$A<%98bncVrr=tbqsz7;lE~!Wu`jf6WMsNpuT7GVD29%%c(G2^tZ`JF4X~zQ#|3 zp&?m7$1ABL;Fm(TSuFK;*R?8;6CN6j>f>7;Aifg=?b^q?3TvUT+D=ARwD)_m7b17% zx-7s7Vlb~{xwDl!?eQ6~jwgrd@2>>^4|iwT6vq>-@!;+jba9se!50f|ApwFrL4vz3 z?z*@J3+@)&-6goYJ1n;7<^JE??{MGr)b#XJO;`2wdAj?Y-?>eMPV#NsZfbO(_+Fxo zdvshOX3t*-!oIo>d@<}o=rO?Gf$ew1t9Au#1?(c6Vg#L`49XYFt^8CcB7NHwB;a?l z=5Ewla5$mRAOb|JjxD6wG2*3%@@GVwogYQ1(QU#}#Nrde+P_JPS50*!qUtBN#|G#h zTmeEgzMQqWwm%g&ugU+6o1jwb`&|n|bgXDhJGYQjnQ)&$sohonS98<*0 z#x7wE|HL3bOYb!MqtI_Wdg87&e3XBg_?6gI`*^4=q$|+I3i`+iVQyXfsjOI4X4`JyKtS&U&jPJw0 z+GP67E4HXJwzfVVl$wjdj)Hv2M?fyJ(y#HYFetC_hhxV6Vc4>8V{zbxW2oP^S=TG_ zTUy7&bJDkn#=m@w4n)_9>AJ3PFcWKmY{ ztbpw4&e{=5F5M|1$GEOCJ)%lP?5y7Lmbe|iY-rS`}{f>!5_cnRJ)d0;=IWZMpG^L7!gIk)&d z)n^qF{|(Q=tNeHZX&#HUEp4ybZIo;z8)W7-^x}t(819+O^3-d5k9plm^Hz^go|p^9 z_AikSWtgdqIrqRXRhsE=dET;%&3>v z#5c#wvfJWdYYY^u)u>F|tRf}Zb(1~`ZMg|6e=H07qX$^P)K~5C(7y>;Pkye`$MpG` z`Pp62u7jB{tYXi(+ELdAqf7@q_h>k`5tcNCR#x5Up( zG3KMp7|m)zvz>8lCmuMC^-4s`)@^V_>G_WS)!ue=*zT~r^N#gwgiBlyz{ePbH*&j_ zNW0zO&g8jMLfR2lxBFOqw>=C~W?zFut}po(sFVLt>p#=e0nJ&0S}bt4h*)KJ*`52p zqW(CV%)+}!uhBQ2y~;Uw70g8Ay%r|duRssza%-!_e6Uf;>qq5^d0**4Z~F&cT-$Z$ zD$;Gl#y+ws=(wwn;2DTP)Ef+))`%Xx97m*^E;d8B!o%#mhgl+9F~Vf>h$Z?0DJsBW zp|O-ygva?iujWlO%r=KAJ8GNtcC_j-+YP~RgH$ET{8@FmEcr%YTrA5HC!+ff<}a4& z)!ltXgMVYin%p*`lgmC-sdPZMdIw?e@5E}dg4}0L9Vfq2m!}&6X@xPHNGsD_u^J6) zV|5fIVyYq?F;n6}?qd$VtBT`(rz@q-NQXoZiI?=%qjz+j_rl4gzuUZZkjxlxL2Kn& za7Y!eKR^U9Sgk)MM$Z85xAq-h`Fsxi=nNQsWz4#8PG0)t;c3k5#Uz@vN<(6 z={`YL!CB>_V;|1%K|&=+wiJUwUi2QY0BrpyB&mOjqtzAGhqztc85}zYqb&Y zoH1s9KrGQCcHOy>PJkxzoy_hGZEIFqdbJ0RnoP8zFa>)xss|IoQB-5Gw5ScxdqyIB z?FT*l1>6tv!BHi#1^!O`wbIq5&moFW9iNWJGmbt6Q zP1MeR+7z74|3W?Yz1f(Fz_~t5L8>$WVf=sHbLa!Y}mah1Qz-#icXOcu1YZuh2( z$kL^6lV%?iHnwufEH_HaJT@B<&6)O^{lBOLiudIwO21ra{{?g?c( zGOooYvt7cAYFYmq@i+IAjTqoCv)=qruwawFoa$Nt8YQ81!B#=D2cT`tGXhu`xI$TU zh01|fjNlh!%dB#xA9i;l3}SK^LwEE3JJ)}?*%$nGxROpJRo?Fs8;NeK1nqVAHv};Y zX5AimU-IHniBpCfiJ3}b9nvg!#N`p9M{g=>{;M@7l`Y9}NK=T$RAII#&ld#BmE_dK zI~HpTSj^I3-ATW<_0+X2J+|M`S()!BaHe^0WLJ`oMb5INgQvu7`2Nao=91W&_>lrn z`6*4g4HcJ<{AhmAh0T10U`dP~vQoSE{%3S?2A5+%d0jSBzo>kJV87?NDAmP*4N_Bl z;B5{pU2*R*+x8^8>~pDd-GpBj&+vVj%mXtaK5nbg6Eey>p4M zQJSn-4UeLpP_0dT>CfZ?QyHCax)T>?L*N|$rILi(CvL)ZJ+-~oGl05iNXmMsGn@5Y|7EL8By$|9VPBtg{;C4LfN$_i?jy!n7-m*B1pUk(xPPQNm&5W|u}9 z$Hj3u>KsMmmQx?J;kPwLBo!58CP&eRHjn#Q!b;`?V(0 zE{8l&r-r!v9C4Ol62Fi7j+ujr-A;@mf>8ZeJFcoey87`FJL9Z(CkNd#9FZJ)Fub*A zlUtQs0G~j}9fnp08S|>DrIB;u2kB>Lc(c5L-tPq!5Gi|MsV~$`S&08zxL1B@$m&C{ zW7%8;;hw`0ZEE;4Ss;nr25|n0uMK)Dg>^NUwKwWbQ>Vv9b;gL!Cz%MD=`1_#BPR>2 z+P2As7L{RG9honV=jVz*ztym$aeQEa9?w#|McxE}r4+%Nw@GP`&s=seyLJg}(3n(J z+HOT8wJ4ncKxXL*>t-!DxhPp_k@rjA@?E-HpMQ{@ToTG0ixIY zo}Zm&50#j!#(2=?cC<2e-Et`rMFDzPETF98F0@3W!!J{Kt(wb!|6HgN80g1GYoXlO zr)anV-@z*e+n8%Zh67k0;2eZ|2JF#ti>NV#b)t=nEQGaAt;&#Ljbkhh(WfCG;N<A zD~H>mKb0fA9JD69r)+6XZ24l~wo>h~F~4c>1qEwpJq99hRd%)8u#U zM*{_%SBVt63ZyiTtN~rh@vR`0j0tbBt%KK($6Ga2`&(pfY24nt%>$~dmy)#al%pB# z91VuE2agzf=4aZD1h9d5yOG!;S@P>^JYJp`@Xzx^&thyY@j;EDr4xbtPhZ+6lIJa@ zL{lzV?>oA~lfUEhZFYY>`sDwi&;Pz(^!t9;R`~*az9@nF5qa|85u+K1V87whofLeQ z*T`3w&?|ID_pwDn;ja%G0imJNETIU=B7(?bmnNyLwTO4+y}5D42~*+}H*75XkTlWc z&{VarA=SarDrhplpRG!m@ORtV2YM0_Odpjnvb{7lI9(zZGRsS(i2f^EELC^GT^Du}bgK?+VnWSafL#97@i{ z+;YojM($OPy*x+a^3}_AJdF>nDnQsOMo0tAvzoF5kvZgS>~jFwk_$#6Ph!d+p-GVn z(URnd6hTFT`R`b;gN_q=%ZL%Em`zF>Uu?t8R;+0NBbw}Xaj zsf_PC6AwL+OrnT374FbL76i^q`4Sxw#J8 zuG^P9K0V9U{&VqDD9#^%qq-Gdb5yicM|u?d9HAIA>*mq&hZk13i0S@!h&*#22UST; z{53iJbiT9-^UWFY<+P+10#LZ(*KAsT$HBv_J@v@mQQ(?gw6Y5GP)|Z)F~&U`v2ZBP zs1a*E=)@w^E_@mJMyqJmoK6_M{Zh7$a=Ld7c;6ved23qi0WLW8iQJ%A@tzd^(s$5L zxbvO}`->O_VwrdC3Vb_e|APx6PCi^MHvs~2Cx4i`zWYXboC#TPBp0+F@A4ZabL&MD z%aDeDD*Q$PmgnVWsOSZe)_B`$&Z{qC+xnb8bN6YV$gXK+mh-2(^#X_B_jzQgF}HBJ zCdWb~Zq$w9)A8cD! zXpon_5$;3kP6^*#l)A)69UK~j2m5ci2Cgt1dQQKiVV;=T%Esz^D))qcj?q02Io#LN z1oxtJcrQ-%EF{2SaS4S1KCXin@>HMpTPZS+^JE|LzNz%xr>4q)2ZwsLaWs~l?ji)?q4v=9Nv!82#&p?yX9NA?HMR9a@@9EiVzBaQ z9pxObHoVaTu{L0|^3ppjo@ok_6aP~SxDU21YQcBUoN!B`Ii*iZ+8Gmk&-fEKI9p9t zwa{O2xjHroS6uLV*NY|kGOJ*qpJkx$%P%6@-f{c-*qc4$KA$G?EOT)SUf9_hO#u)? zZ=M%kMHzfe@PGGL>CM8aSnC=^aI}o@@EoGCa&&q0$yB3j1});Qqp|lp%v-UF&@>!d zGk>gxF(%b~c-ZZd4m%SpGOw(`Av7A0ZjcWy;x#nsx#12&w3b|)hW;b{V;IJI8m@$( zUPTrj{Wa*v-l{)_hh^(y0=E^;{2*}npu|&X^#H%qOrxMv^RGouO}mdr*EjOwgvdWm0)w$6u0aTr zylzGkF<+N1mR>6S>g!-E(?=-+DaDPmN00urt7(pFJVaV__ejnxQJ-6Dy5#%v8sL5;5Yb~f}=0o_aU>?F-N6V@@({qbzJn;vZ;kz^yq97 z=N0;YxjkS+{1m_x{Jbl_Cfi9xRi2IS%lz|I5=k$jqNn1~6@MQ+P?Be${}BK;;c+^Mb26jMXZJ~!K& zlc;GkreBbRx@jYeQHN;Gld08vuHyM(uLh1B1tX$YAOSy37>?tt8Th?*X1X~E^a@k?Qy4^V_>Ls!{ z%AHUjMz@K;-N7c7`oL?Ei{2FuSGOirAiLS+4<#}Gjrc+4BW1*DJc{$r&GrHt6X;M7 zoI<5BqTz@?4?tOQWAnqA*2fPcbmWA51(%e_I_xH}5m{__c;bukId?hj1aS7fFvm8C zevZTC+tcykUSFpyTl{nOi)ZH6(Z8Yo&9`|({J|#xMBE|#PPxE800hvgOtu1ni zpZ)vXWN%6>NupF!hdoQ#YH4aUBZA{XpcR%tYm6oyyvDbPqXh3#x5A19XGvWweerkx!!{ec^tmsvWYEq6#*>*t*(t26_2F1AF28jQsvB z*>Ow`&YZ9?got&a!eN7z?aI|IHWmjdpX`dNgc)HOWMm0{Ki$3F%|M<=pQ0DwWCl{- zfz-mkeSCpg)yQL)Spd<_&M+=Tzra0%O-zpLjn1sBbx(sF_KmD;FN3UX5hr{3U{gFE zG37TPx!1u#N>%8Dxt(7?lH$8t3RW9$PK*IXXFCe>FRElQ0V^*l%jbRPsO3~^Y}C3Bk(eLFQYY%(|}Z- z=Zfn1_R8!SgyCQ2CT3Wl`8u2~4njKtNNcmMj6zOMkRGQ~28%Y3TegU)OUv4-E;c%Z zJN-n~-o(>rdCpZi7j>ifkjm;6Zli11?2}OD&gcC4bp7v#L#*~MLOHJ1G%kgrOH;YDVza4ALj>u>qf4}-eH$`uNdM zVlzfjW=U&44VFTmLd#)28?zHY(dmc4kjtq-QG@PP()sqG-tY{n<Ith#)Vdl=mC%IhHR*Ks`aehg z=Fl6KB^BpdTwN1LR{xdCk&t>AuGnW3iaZdqkW3_)CJ5*VXi435KXKcWlt}ICI@QZp zV9NbEWTPNVt^{5;kdj(Q*0na6wt#GCX4Z-CLhz1ZRKYX-?ws2p$sBYhMMCW_JJ7vG zin>Cq$+sL4-iWY2blYf`FX5&~4`r5%-xYzCz>^y|Zr=?}`o+|@K6IX6e52s0T%6;e zhM57<`{z4w?`Sxbw0w;Gs8_g54woGDJ5&p!&(1J7`|Ia@uq=}yPWssH%M%pjNoD1c zTS;S!We<^1ZI+p%zY)mA%0ppVtA~dQlas9IvT_w8f`o-@q=h;&CCyLTUmsr!c`$i9 zc!@6-*HiFVCXd3QpWf#4ZaTc<8hoS1Irg8{Vy^BUl78^iH3dnRx;ofFN_{4$c;WM4 zyONdMDEVJ}9ucsxwo`;*3lzCODe#>`(i$NTKUub^mnd;_mzmaAWzjt_1cU@2pLkz-g?1QCy` z+;fbbz`q4zNQO2V$g$FMG;dSDS$EGw1^-}j;zsGEpH7~Ge-dKBwSbAi?87X{>O(Cu zG;qmoonOk`;w@sWU-J6YrlP!HmKjuVT)l)}_Cj;?$hC@VI&rza5SG{Baq@MS{hI4ae_X= zqaVwESf)S6;vS)3Wt|>kjB}kxXRse{L_T^SS-G|eD4pf`&`L{)9V&p*5d(9{Q1e6@ z!d6L~l&qIT57`}Oi|DsA>QV_lBE2gSh46;Jz&8o z=;?C(tcc`L+{y8Ae|&ybs<64*+numX)E@oAqy4~?aT6woBKMuC1OgPfQmjQ(J<<5< z8PU6sRu-OZW;$cy`&c+%WnuS0h{!!_8O-oJc+{}9CPkEaoy`XQ=m|==0(*;s>0agyg~Evi;_;vpW8FcA~wl?m8kEoZ5Zo&Jxo8?tVcJ& z4!0LKlQQ*x<>%1KcG_sJOU4W~)(v?FTE;g1N-=2DcEWlb;L^@<8Q=!j`g)no@GRw; zl>XHGGoZ-%-7IWz@$UBOtVb%Uq{FC2n}4DT{5A@!x(B&+BHIEOtgmCOPPKn}%+UTE zRsv%f8f49&Kz6eLugbF7A~f~p4l<_jz^Zc$I%g#sw3YPLpRVO}i+%VBYhJeeh-dRL zr?f4AN+=VMZAg`#kteI;|0ffUl*CEruITOlM^wc3W$KOd)!}C5VvH8p`FsO~ zqN(-+vJFJuZYHx+Z=a4{j;^vrUpW32R-N^31((>2vM#$n>>M2A*mV)aT)96mc+yur zc>&GdFy8Q^jl+HtV&xqwUt;y5JiWZxFI_DNK}hr$8Qzu7hVJi+gOuQ>&RrrWosQRm zmAkuNWuMhw2Vl`YAsX>%U9W(DU$P{lMNmJ|b<>sOqb3Jfx)#h<$Ar#;h z`DYMRtKTw|4(J9vK0n*tUwl%_sl9pKGw{^)@cHDs`Ea{c^!{<{p_8XF2MfLzg@clR z0e2#xuJSu=V0st+RVbi?Jf_p%1mpOz7YkhN`7$8=@!aTT56LBrs@tj|BaztMu9~As zyypQ5gmk_K_7#0FV37I-O2!#{AsS`m>m$-Kw4bHA{`B;4*b0#3Tl=7Vpj_1Gw+klQ zc(?%FA2O5l&V=#keB1Z9J_4O!z)a<>@S_{}UU!I(Tybw}r5DclkO^E=Z`qLP-!3)W z6e*_|!c4*$sDtT5FuU{c4itRV^d^+~4LF{OzSOr&TKeV~?|NL5`VM`Ffvh5Z#@`EB z_&Q|5Alx$0e`$lODZr`m1pL*8)q1(xe7qZJ2^iRL60tE$n`AZgaesZ`Tn_`#=+FAE z#Ww!XLR^;wd+epOP8lMGMJkM+b>&W`0#doilb+zqr_V3n=u#9l1&AE(GiLg&Y&Gk&QhqQ2p;@^fwf(Bf4pTLfZc#Z}ccC({DDR7e z+M+oKkAEp``Aj^CCs#|(k-zzmY@W9QN>NF{BQ?^Mh9~puFUQfB^M#w;Q0F+ZyQ~T< zATo~LAJ-6JY%|sE*6~8ca;hzF`ZEe~r8o6H&TO?15h16vdYi37liHro zFv^A;M#L^47+>y`4K-(`+F`{S;iz=oF`qlvWHbs)dU}BqPDF8sR{aA~8A%uc@_!zK zESx~{zu(b-dN6VWZWs1bo$3&KXqItcx80jUd)i@BKdH04t zW2O%BE?HAPrqbO7+J<3g+qtexhs$K{8sXRa{#p4~@L}20r2sAv7#Brj$)DJGh3N8Iy+v$0B{S!5Ng|u(K|>eg$A>Z+0BQVylOMk z+C1`CWmKX)-_jK2mTlePm!379D$)w3RCWH_&+`s$ZoNlOl6RlyN8KCcHW5CY;_QDp zX>-RLv*lxNDC2*=*^mQ{zGr|CMM{CF4uC zZd8>@&$*wzGab`+!UkD2B0UsZSlyB)maWo)^@3nn82&#=f3v=Cm%i+x`fE*n;`mVF zXGF#f{Ue)&q~QG2zydsrnq0yR&2@iM%P)cB4b;a($w5|EOn00--Sf19~RU^ z`EnH0N@=7lKP(llg^$oFjsPP|ENZOuu}?%KROgP zhGK@w#|U5dnDn{la}zS2`;7zP8azSz2)Y((8Er=kmO&WOORP%dmmP+H(s21`*qIzh z)f#bQZ2bsEk$|qxO=p@}n|QsK4Tjkt!m9`Ne-OZl5{K>|1tGc-_C=ndTC~f#XZzX0 zu0hQ(lozy7+AY1}?=AWGl=%h(hw&$hb;4<=9rQ960hZ z-E(jHb-NHBU?XZRgy$c|I!nnF+I^} z>6IWmx>J`3DxJ)>SCx1x%mU$i&=;xv&1DxGCv=%tY-gnQV<=?vXhD&mOUol{)LS*? zc%uK@mBR5HFa9eQ{FcWUn%_RQaE16`UquswN0;RFr;xd1SWX_{Xe;q#D=r`QHg<%E zxHe+lnkj=u@{Uo}80so%!EeGjMm}ziwTjMYDBX)0p9J z0``sHH%sn^iT`nZZhg&MUV1p`h(x-mpgylZ zu;hgCcsnTvQAj-VLYs>#DLfm^%rjQIGldS&)mEk`<5;WK1`&3tF;Lwb8#p3jZ8?8d zgNcrt$FFm^`Xb&cnXfTcf|QZ5tg8cu#wP#~`jg%i&&7fVnKjcq`ZvkUYxx~7uIoz| z7lU7D%RAA4)gknWG;b@)j!MBhM&yoS4-=y5hs*Quzajs|B%Fxce@D4*Bzz(oM*1xf zzw_;ulQO@pbmXyhyLR&Uvgs70=cpbUYI=YxKEoAnIPnNPgx5HLtL|H|jU+qo7NYn- zYueGZGIE`R1?5B}`x>I&zs4hi%dcCec+!%YB4jU%AwxCwM&zDEPwIB+X~_}8_b{JA z<52SW`vB>CIl`HoX=`6J0^Kv>6%YfQ&ThYIl0{UY6fK){ByQ?sfnaOb!wUg6N5pb0 z%MI2^wXj7F>@Mi%>lfU{5H$D+o2eIRRQ(BW)7Y4++Ml~`cl&@#g;jBAbp^4+X62*| zzwBV4Jq3^G$tyOCsXlG!s%3wO69fsMI9zOLgv$V5B!mS|Ok`k`ue$SI^_32}^8>qS3KdKBkkBi7 zs=1#{v=Q1#NgaNB^mp9D6cm`bABx+|!$&I3(Dy#j!*^!mic(-KTc6*w#&uGOl%-19 zEc2Y?H}Kg{(cv9EU64|~*;7-ni~ZGF>Uq%uA^>~mawg*cAaENMaZr?F2NP{40@T_+=a=AIOJtPvS?%xRDK8QRkwp2^2 zgSRr*X^e)@o%e=4jAL&5d_Hj%o?NbXSV2|rvfE!-iF#?)S1nGuS0U~!Im4<#Da2~yqZBP6?&%0f0G1=C6LlQiqnPjQKYj_I~ z6|wi>gseD~QyjCR?Ux5#Vo`hZm*Z8-iwNU&X4eR!4q=sGN!FqqpUk%XqPT5@ImSZ) zZRQ0t3_4u=%x)x{`>G8!81J1Yk?T;ZFt;J_P`Cx zI10%#taV7;ODFb>ac<&2FJ^ZYa;}sTTYlT`g8z?GK~+^iff-PB?7G9tFqBZCH@8C1w9Ry_-m(^sZ zB;QK*5Cg z9$&KqFmG*U_t=n3fB1wDf$AEV$qNB)P*dJAmHp6t4^N&6!&i>u8J<(4M}5Q>|5lsUCJGM$Pt+1AzJSPw42VZ6FcJB)F%R1*ZvrB2l?YOV!fVR(mWj7 zIR#j_RV#n%CNOB4cmU8NcJORGNck-9ZIxT{@>wy>PtqBz)&H^<#rA4B1Xr>V%!WqZ z+{aLTJURH&wve|f<-_=*q%yHOLArOq3e7PW2k+|J!0OXVdx<1I$IR_^JedXiXCH&q z*~sd=os}O2FW3?0&GR9OUe)oMyl`B^uk6U{tLpuTQ+EXqyL0@Hpzb@?+6<1iZTaBhI#(1;`f}b%L<2T@y z1^}|+jY`Cy^)e_3?6eJZn^=>rd!-did;WID+Nm8xLFpJ+}5T^gbRL zT-m77d5m+s=t1&x1TwN~k7C>k&Vjhkg~$S@F4TeXRUzwV9~HCFB|9LUWLQ9g#^2^P zo(Jc~iw4Dyqg|)U(g9VXP(s#f-|xPx3cj<59gge|)d>Q8xOV2ZJ*}S!OLj9WlQxmy z`s?0)OZeGh`rj+wc|6u^3+LffW$p0TRgWz|OHyg}b$=G^XCjMO|B6bildmnXYs9V- zC2aFmfcNMbhpe5f;u%b?y{KQRIu0DaV)v8f=N2^;Lf5|5*A%=ombB z_J@tAa3{h-uJ~kL$XAl6oV<4Iw#X))@96h9LFo-IXF37dk?eg&=hOXg_21b>SC_@+ z1%fO5Oeo`n};1lGUTjNAb)5x?ia z|4O+X;Xt8l^XPl@c?-qI_Xu2aF_CHaNfEs3nr-h6lzrcP_v|YFXU(gQevDm)hxP-t#k|NJ(R6kzKL*Jug>*zGOX+Tc z`T6ySGlW(U%z;J!H1laGLY7bzjvIQD9w_XA3u66-2K)lT!-htlh;0Ap!ch>Y{cIx( zq!EbW5*`xWU$*+^+6I0&69kTE2^t_teoOE`0<8y;iw5uHc75{sNpZgY9TPUOJumt(S|=HNhH`vdpj0IV)%+VmE0elI^DF*TBVyb{Z`k2}=#UrJpQ4Qe;06K8W=$1R1p(s>oQ;l;u0!PER|*WL zVY27i;>Po%)KeY0sI1jQugi}~ovZKrQ!ST@{CxqhwH1WJ#@WzqZIeft?S)rTwINY^ zAG{{!;OJ3cFEK=pQpG@Z5jMra^dla?V$s+isgfIq!eX%y_uketx2VG2z#U5)QxZ6f z9M$5R>ysc2e6kzx1x912Mc#;d*B4z?wvmbG+`{9sFtRwi%NaqH$2)%v>d-g94%rt3$SmdSh zC?Q;`6^GI>`zExg7G>iR2kQVo=JXM)T`3jlU4B0*#evp=x!&UEjX7xQLx7u?-J?p} zC$(QjSenf6)ZIvkdl7v|rFvQ1UL>(J6APDq%Ey?~lnYK`ls8LwhtH$HrP^Fd{C9t*$)JoI67x~|7dieiRA0`?p<)DVEsCI=kIqISkUHpf>^Jy0li$`nee8x)&Sb8~NNN5uT4)e7 zyMW`Ni6Q|`@MdU~Diyo9-v`AT;FK9njOD^%nfg1`ocSm?gjz1P?daPIE%1H&b^D8- zcr*S(AHQ{k>o>$c4=_PC>*~qDL(;p-pdWU;i3fEZKIL2$ocI8hmTqs#lDOgH?9~y@ ziH+@@|2-@%3$G6o&~*q*X9z{e(Z2po5n}>IZ+0f z3kGm3Oe~S?zeyiB74bzqt6iZ@28mbZp!n<^$Y{S3Es400k0noZZlc}aAy+9YQ4wM% zPB{b-Z6Q z46L3p%B%i96>5iau{z9_}&TL6cA zRqd||1R=-u-PR_SKD77M$Q6t?ABmg$#j!JR%Htlj>9-cL&mMiWveu}}$GxJJ@ebnN z&5cru8yoAe2iMhkTI_E$7x=b|=cDCLCA>EpOzkJzg;!LPL+J3cKb3Sk(|r`{?*$V6 zpL3t4%ablh5SW9^&>^wcmIDG<_8`P`*gcpmvHUsZ4i4^xmMqOZ>bBz1f>ALO7t2Sj z%2lgte(3b0!com@*U7L!mN?(0$#_#z(tA>Xnu43t@kj!Yf2%P)j>xR#3{jLg`v+tn z5w|fd3)u24su;hlOyh;7uYyAa`rQlX*VI)Q1as@Yw`Rq+Y`jtm7bAU8{FCa9t@b(Y zS?$L6b9|a7O=aJ60Bd17Te$=oT}Aux=PsuyK?ObN;B;J;kEXLt_{G`)Ucy4g$-IYl zdR;+y(~_o|igf;v@DXeOiWfh5%rk!qvm>(Ik3urq#@5BTqwu=4x+n zz@p@&xXg+|^f) z1U*$&zWy`%8ru}6!Q`ttR)f<)sq-em(%;0Jk$N2#ndWu&)n1eo9Er2*$crHQ{s*ZR zMc0pl;EBl|+;86FI#*>gpNJkjckZl{PT)XseAQnLwvfJffvob{BiC{5rIj%XyXuk= ze%K1zwL>aO>*#|Y4T;wA;Alg(Pn9`1Sng&lP-!u*t9a55eYG zno2$V7hXH%GknCI*JR0JBI?f@Gb0}U+5*W@NOL+(7bzzr$DDaw(7NrwMCJVKBp1QZ z2e_rx+g%OX^pgYX(G`M>ktT)`*p2*Q5f_Lb+T1$58&m_%}ndkQM-Ec$e$@tQE&DW)bu3qPZwtg~cy$YRKJngvbwmr!XrvJ6<0@ zW=j1CSoX@4@^I=}8UH(BurrS%St;Rce?lzN9MNMBHlVZ@Q19VnP)0C%LXEzAz=*T(YUZz*j zM?|G}og|WKgO8E(_8qbjIP?zvkdEgbQ@6=|J_3HkB7x;esmY$dZ@bi#?UzW%vx)uX z21O()@YhXF0)xhgZip?zB&tf%VfgrSNGPzABFsL3WYN=L4sBIhizB9W-li|MnyOwo zCGaLL8dj7qUsv0PQkE>uS1UEXHf-y~)Nxt=2dEgy`;S(kCY}=i7a=j0DL|w;ND(Kj z6Q}Ks_~+b;L?Lp^%m?7d`T>ta02HbFsSy9MYmSRMW3R*NpQA381N8Q`7(2W9geUZ2 zjJ!&q&-~nde8hbHJbm^y_*dts5ZCOMgpDMtwWOa$<wDA7J?Lu&TBw9^%ik7-`vJ$cxI-B@wrc-iMwPH$*;vioEo+0SNCqbrE05)BUO zA;<{cz$`H(?`}PdbzFzPXpk7fa#^P9+=p7vC13Z zp{Ge5S#49zFpfW=r%AgwUSvxjA*K{cH83UiFyP*=d-ac@(_QF5wzxszUS$Slp1*hV zv*?s=e$cHyP(=Qy{B+=rlMt7Ud!eUCr!aB#O+thqgsfq$TkL^59|CjlGJ$G-cJd5Q z4=}jw(135U?YS9yjg6jgvVk-tZF&qEdv@xYL0nsVG-5@2KKZ)HB88%4k=xD4Q(Wm$ zd}PqZ}?Y4BJ)p`&)01j)V!@U~X- z6OJ+4CG=AmP@3PKtJaYA7$IgAO)T~#y7f_6n2MQ6lf*RFgf4HWP8lQHbpf}t+Y2dCn$EAT?n2KO%k6pIOwt^)4 z9DrQ4MlOH54u=}q;L+Ay$`pTwcT|towfc1F$V%XD$tbo>d`$nByE)SeH9Lq#Btaun zuXuK+wSQaZ-Y?wP`lUC=8qziv<6B1pEgo%s-}(`|^f@4e#%(X{@{E#uQlXE6W+vR` z=IX%o!0iXeh17*;4*O!V!ohIS58=l>T^H%bXyABvF426UQA+L&_BLhwO`tqpE`PR2 z9Me^~2%J7#t`Cg}Y{y_Zv#ocB{A}D3QHEdYk}91;20TWHL`;!eHS!iO@d$FB*o?Z= zKf^=2uz$bsHXmy3&(56D#0(5W;)ov`n#RvoC`uih$0o~Jc83Q}3>A5Zos-~d3FT09 zm7K{!@NgyCmmt*sehuQ;{|c(XUIoT_eYd=|uT0H|X8UtNN6bVg`O)6}ih*)|!yH6JA$b zI$gPZqODA;ZC2OjrQ%ED;CT9@BNHi+eTL86I2ZRp3wK&0?KtkxOPm`G8CEt!yBlxgY>9wfRD!>jq;S4+A*U=p=w z)+O^JB?2^6jV+7^y>mayqWO8mGkcRJjui-H1nVF_QdKGQ*DzkO|HS}QRsQ@><}n(w z1=^3J8t0c*z>E=XR$-ay!%aIA!yv`uDp zvGEVCQ-L$bHglVG9k=drb@8Fd&3v8thBBdfh_l&f=AO<-RRTWX0ZCyY0QXN6^a|}u zso-VV3n}Pz9{+K8CDhJq*Sn9J+pR!pOlb19yck8b`!pvBku@*SH#wgzD_UqRj%bmNMz;qAYLZwp5#e1O+3{2ahbugdoL z1I>CH!^|}C36aW@2y>D{VlqcvWeV8b=nN25y7xW#-5Ia^Rol@G{}f8^MMq z{Tqn05y6AU63wTKo&~{9!tkSx6EVLVpjwaRCyTu~S+Xhxm zay6|njM=)>C9X+bm@4mLxU7cayPhp#{L+5}yHgYp$pT(MR<@z|j^MsA;+6N*c29MW zA}_*|=X~mWBwFyyyDUm)9M}%ddPZ^AFh@5GXNIt769{JGeuAqfr(_J@I0Hs%xKca_ zYgz^_NlXzBo8QS2IfB=6}(c!aQdvd>b zqqT4APuBNfFO!!g2vQGCKSCBWwWa8S4R4`U#Cj=C!2%wbR|~96VjCJAe~NhFy~fnj zm&U=kW`R%tDg7&}3?jn?y(1S1yej6Y`-TZ=65_B$7?LNzizaj#Vn}%4{Gd;`{YlLZ z9uXey^YAzB+2kf5^@D~p!|KCNh|`?O@2*b}XRhEUZ;r62XW|1he~Q73eUB)Misbk<-MU>2p)?$aH|M=)Ev5>G5zUvGiNq`4?aFR5)lI-7umg^_ zS-#9zZM*ys%*?s_i%B=h9h{_Fd)6*RMFBpmf~I2=!WaHIs8AumSIkIxmMTRfBcA5I zYnGy-0MC{|udab9c)co8UKk5ea>e?^#)vipZYO;Q_OrPI=hRP zAmx5XNt5Duwye^SOSMD&8`-j+7a>>MbfL}0J8-H=Di;Xb_f`UdCtzbOSKDHdEi?at z;aKqB@pifRMqc=9SH9Ia4GV^YF%wnC_jCJ}zY zf<*2@SL~!vmHzBG@va%`B}N?&dhV~&xnLvT)8W<1AP9WNE9-#YCN)~DAmhkI?wDU+ zY}{|x%T?W~*#^Xn(XzCKH>EuB1vGDE3pUq%p}!}mY=rv`ZYYz8_|})avbfuTcr=IUBk{8ulphpq4s! zaqp`lq-F&hOniDw3kigK_uXi@3h*lBn;$-WEO2iR6zfTdH_a~h93{f48OB4>#Wdvjx+v#xDanV&9QVh~)C|bJtx9)*et}O3Zvwk)U-En3W2wr?+qZRK zb|S&o&6+iE(CS~sR}t{ATjjjm{()By=j(LicMe$cb&|G8T^I8V?>9PeHC^sVIks!G zk1!uS_k6?f5h3N<5`vG+x3D4UK48(40}J3)wpxe8H;Fh7hi%ws?L0P2I^Drx35Yo? zxnY#29#g03N4Qq#$-2x8;C|1ylX~FhaZI>pk|*#1;kAEI6wR~@+sfAbHxQ{<2iSYu zSIrY;B2YgY&qm9|T!%?5v&z4_raR+ICfjazjpurj?qb#8zVGs&&qV4o%wphmqp%x% zD8ib>n=#&w@(Ey&+Ld899&a?6PkFOWJ&r7n<*K&VJGeaN%$tx>xOZz+Xffac`>>)* zWo)9iSm0F5hfn))e|$3#QrR-diJA6?ObQ}Bp%e^Z0k=Pn_$`RGh*Hfq@oj^WN)IQ4 z{)D7x)Ybsl8TOoch*rB&EWfY2IGy zTgj$zyI)FbI8{<`q+sjVpwVjMD5Yjaz;SB&)*pjup+8x5>xUsrQ<0 zs8+u7DTmSxY1sl#@RP+BtsHm;h@@!zV#WpzPC%TQU9s~ z$7TMl<4{U{hi}tADyfihnS7g(k_s7@sWu*@RM5Cg-x@2aka3xOwtxP?ORGWg2qbvma6&Cu@b&D(WC;# zN~*)Dk_s6ssa&e31dWySEmensvjCWX4NkgLNYo(Aq59VUjADH47;Mz!9HXa$-RzW8zq*Qoy8@2QC*eMD0e%&jf_C6jFBp?1DNFdTDq#0T4Hq_?X=MVTK-bVn zs^M%n{kzIe+`%#UD&7{Ff4bVRmVSoaOd9Hw4;8zT`2ui~uTJgpzeq3mSj6-QUSF9x zPb2ddK>jw#o9~D@MH0+(K*hKv_|d7l%>pj_XnAVcgl*%$Lk0X;d|^3Xhi#$6Qeu&X zNerb#<~#4wldVS*8}IcuE^&|&+raC>XDLyo{ud8At+A{F&(<8J#O*rlV8TgAgp7CE z(82`#lL*agWPIU&FHH7phVSaYEjE##+q3W!<1tp@W6v4N1mU0~oE{3(bAR z@zC6Wjck%xP!KViCNexIh?vwLCJ+=vOsWGD2nr%bJ(A%;A;h>90)crJ5_3}2C&Pmt zQK6w3@xYLlgonJiA__YXN?d3%!-Ml4aXd6Lm^!?b+s;ESF5YW+I$yi&8{iKbo~O>` z7i?FFr^d+B7kFRd%LJaY^(+L%s;t}Ou6B-*-Kq%+A{9xz_64$`g&+-YU2idoc|X3r ztqWnC+{S#`MQYk5ZvK?`#;~u7jbVIT0pL++AbGE+PnJ;N+{w3>T;yrmKS-h5jLjZh ziX=N^i6`(<+&RW6i}AG-;Xicw)_Rbc=V{CZ(i~1GwdvgV=oYtErC(2_09TKoWh5~? z3Vt3E-=CTp1+u)^`(g`5eXifob=IyWS0OMsO1=o;!23`t!!hM>F<%53;vuuFli`TI zwWtzr3=x&X(TSw$Y@5xiV(y3`rAdvrR7gl6CDnfrQo&CaL2dN8RA}>ZsfeUjSRL;0 z>f{+SsnM9EQtz>5k{V9gw+2!wXdRe;D7iAYQ?&xCx*V($_F78c3_-KjfGUP2-?x&QvHFH z`i^p;mjP0BSh={=NYr8AL3pY|>XqAe?z?WHrl_0`)ON{x18GYi4*7+5(yRsyF5tDz zn*HClVGp?pb#5zPv>7$tao%@l?UE0w9-$ene?>vMlbjFJ363*&z#D2!8|J8v^6wiC zXy{??{4XI=WB{o{d3MiKfw)v(N_p?BhzY5{3-I)P1yVeYQ;sE4O{XO8Sl!Yz7I5~P z^Mzf##{r)Q?N@_e1Qs2`p$E0R;pbtc&$V5nem!~UgBhYi2 za?fd~q(b}>k{T;1-$5WvY9ysX-<|<4O|)0Q)6<$pok{9@j!z9IqFkOn*!|Y{B&C8Z zJV}Y#aNm;Aa~QE4#zM-sj@J2>sEt6Mb;^BK(!1Q6?@Q!bUxu3ZSjz6V z`0cUX_uL~yd|qrZZgW5+1mt0`+9$hB(Cbi)UuO_OIv_h!QGoD^gNWya_stqP#xcAo zlV3am59Oe;`;NPUd=-dE@Ll?#2M>Pu^L~-l%*zex|7XDKT^*Ugqja2V?JD z8drG4@sNERYN~x&IUjV_aW=Z_v)pg)d$OtaLBSp6`uKj6hfMm#^4lImCbYhb-BJ;_ zGH6oHSV5wKH2hNuXWeS!$w1Ls3Kszft*J*6hhswC%jtR%Lc+f)uWb*(F_J~H4_jts zIK=y0CUZk9zzcjxxaSonfsZ+!dSlOMHH5JhF;ajJ2Nn8d7x2pKsccwJVHF=4NB<<+!ocs7j0AK z26)i7(w}{@=C`{XW6TCd-^Isb+pue65{KQ6rPGlSO(l3==ys}0f!FDLS2@CNQdv39 ztivX8K6p$G%kg?$+zQXld^~_!>Tf^%@Y7Gd^yTIG<@JZ-^V92F@2@}nIgMwX>BE2Y zUjKMK9=?3}k&#c&f9?Ns@;64oS^U~XJs`!#6{h&2t6WoqzQFPVoJV{F%Ya3QE#bZ3 zQXFT!#^N(#tIno^0UIE;frXDx4s3+ju5)_k8XI8|W^81uRCsCwHYQ9zgJ{4;ge{#P zy&(#Q$ikl3RABYWk=W=&SXIs)*pR2Tt3Nrj7GZtNlYE}4x3di&#UflhNq3DMkSg*# znaKzn2K^Wbj2X^dZN(lGCfA(}7&aAzyVRCtuCaSg@oRQf`in)2CLG)Amj?{hfjYS; zI+t?{sbNQ0KxA_lHpKd1!$R%EB24YV(p_Vy9!sBDh_F7E-J`{ZtYIGor*~1@=60+v zupQi4;62NLVF|KDwRPrggld#+>hu>Uc0>%~Gp{NU3CGX~LymPOA%?thYOmj+GE^HX zTh=}IVaOU%b?5SvL35`Z>l`UId=pdKbgxETV`Ho}IK=J52B;s~ZU}6{M=@^~v4RX3 z>IXAex({J!1D+aOnqJHN8LACagQeW2C^iN6dJIM2Seh<0b8kp3;+U?wrqp7>G%I7m zhJim=an^duv?;sc&VJt8$h^zr4ZR_lK7>dA4de^b`hP(k)l>Dou zmEssH;!;gL3`&XB#_UyEsQ})F)G%vsR@0d^>@KC(4@dR5xcq3q(0agQ2%Btc$A$xe z?Q$_iFkwf+R@a^O+e$zAVrWuS z@n4p^jnlK>!*|t<9BlX~rgpKPXs8ghS}bS!N|HfAu<6-ELTdz5YFN^Gy~$>K87#$6 z(h0|QZf9|TC54{cI9mZVuT7mLBSCmCVqlC@~I^Q3POv7RmseI568?REh)+9GI_h#%Ta>gaM++Etx<^ z2HsoRHkOY}II!d@W&oxfSo873^bHQso`nIRT+(52Qwk4)u;nr)py=5$F%g6<32G18 zTQLAP9H8E204SHtDlRRVxaS0|rW*)qjyhfK%>bo9OWLMyP<4~TV<3(kXi}Tvoe8KC z%Qr>@)Qv3@)E-TP3s)vWq|p>R3qcLCt5&u)?GsT~k%c%(BDN4z*nNW?(L_);yUlVi zpeBN9^p3v}Wg@7P+%0hn-bCE|O<%w4y&dkqoPPNI@X|ZM-#3rUqWnkizyJ8-kN@NK z?dARW*89&N{`~a*wb!*r?B5PwPd$b_K7Ib-&kv{9qxj2zF@gV#{02l@so&EOmd_29ra$*PstS|ua`1Hm~_5O{046^@r`r3mcaB_rX!MShmZ$CZ1 zzp>wVJ#b`FKTa1?uwc`MLMy z`ROwUr&L%rQ3Le!&(pDYet!9S=zR7DC|Jn^=Kk=&YXj=|QeZ(^uIT5w-@dX9J4u`uYmZ{BU}DlnG*s;8K|=&f($VMK)M8;va+=5dxSes_d83 z|9pRx)f{1az&dKDAouUDB1hN|xOxW!R@>>HtQo|&u>N7B#j?FTzrKE;FMWA@`i-C) zo*|;T%KQ5M?c4JU=+pfllu1(KJ{5z_#dveDTDw%=7~29@nNaOs4M@xtc%N*zX8wNo z^2n-;l!_p%d0g252z2c0;pvYa%j**=%WLoPi8P)huobor3F1U+G@tnA58s$ReS3L? z#(#W1zI_3G?Uo!{h5JmH_UWH*Tw_(k#Mm%P>LK_;>=>+AA{FWyY|<|J_O}DH%jx{q zLzU9Lh%JQfC}#4@m(%CNm)`5?L`^ur#sHU_E6U;F!}HUZKX|V6Y8haI;L=*BT0k49 zMh4g*;#>DG&%d!6`}X*a@-o1tSQOY>n4LVmJTem_+pEWnO7HpHdwBkOczhxeYzv%T zkRHE(dAqES0X78g$aIvQWt}PD;pLGP=l$vM`{D5mSa1>=bLA1su$TJ#4^Ru%o}X3s z8(_=OmQI&He1V$#!yrR#g-ZY+^UAvH>8+ByA?bf$j`|6(v^&~5hR1n-JN4;m4^8;iHV-bL>zXAU~G78d7+c3^WiI~i%E{R zepgO3gh>p{-bK2U66%E9w$#(n^yvLnROF4o#r7qQHvf&)IU7ViKcOBl^*CLO7b9+H z`BE}=y3^Y~o?m|JF>Ctp{1575qlhS4BEA6MpIDZTzp92E#l+*vvra!S^Y@Kqf{po4 z%uthdv-}7h8lg^TJ8isi&u{-YyquW7!OGl`KHRgKB+;P|m7mo>{03I|=|p4xh?D{r zp~+0%zn{;i7qXTY>N?`~05?B0m3vfeLZ1`*Fq)9kT}zPP)1k4=#Ug`hz}M3gYqay* zNp!Z}>#y%`TH|2jYm@Pg?R`11@|>QS5A$z5O7GhjY5T|6{9?Y}?HF&5Us+W%i%V#v zY8Ur5uj=;hENQQsU-$ZElIVW)T( zzTy}g6xTI67^|iifp9Yp`>6bz%<=!9@6T@s=4c&HC+SB{u$^#~2leRfz-lF5)_e^9 z_3-o{lyrj4#Fx=5b^pS=PVhh2Ky-NfmBeE5k}K{pz!p5sSXh-ZH$kHe*O041ipxD8f?O)7$>_v9{0^)Ok!E#QxlrH zV1vRgAKLc!w_jP3%-6y1Xp@&ISzf*)$So<@a3vr~?pfiYtv12>_WTcKI3A(l&jfNG z3r_-Qp#D*8IkBV<40D^`H767L&OOXmpP6R?iu7<`DhuVL1V*GyVrmBM0@Jg1oFMo9 z3Xa3C2N3@9c+dQ=KmJC7V-iegRtkbJKgT*`A5w{sz=Ru3TENB5(MedU4x3G}+CP%M zPp9-DJh_6N(BTU-5R=@pvFyV$wjIIP#NsGP*Ge**dOUp*%5a0t3g-Y&7apLE&X24C zpwIm-Dc-2Ck4I`K+%WKMPp{ywX|;L7CoynpKzGpZ|6mIC3d8!7Fy}Yig5u^Y>ebuZ z%i}#5J5b&8^ZS#?!B7;RX9232@<0H#pxD>`i~g71Un@40zOd3zqur40giYFu^2m+_ zqdbrLN;0A+(p*7okzS=Ox*|;jDUqJ=;K`2O&@8iVwCSS$y{O-pzGlap)6_odM`APt zgucY5X)qYdp)l%Wi^#1p*Tk0ngYF_neQF}UIg43=aqy4J7K-{q8j-XOM6&(Vo@{(# zI`yJDL)6DslbdY3psag8zq9`TkEau?0LkfpADa!gZ{+IE8QdOPxnYXM`aH87=Xbuy z^IzI>xwg{vivJL>)Ws!3*1Gt@G!E*Ar_b--)Y=wbPVTHmskJOxqlKTcNspM6kQ9}Y zI?v-1&m?OwwSGmbr#NiBu$uU3RyIBMr*CTgiuMMubAjin{dmHEoNgQ5U3AeY|Jjm{ z5$7+@OjXz{>f19b1rGJ!R8DR<`;l_|8)R9w8UNXAhnDW1HLI?_RCTZnjhb@$3Oj*!3GAF0F0;FN)#CL4Qp!wF0iY1O1Q3C+3m&Fe^vs&T?_=M)c<;EgN$O ziBBeQwyLc^(S`x4$}1SM)A{iU7NWU1inJ9d+BvYHF}G!Z`hUOvfAj125%|3Yi}+CID-K0iO5zx>f2zCMhH zKYo7pe*>;?jK{-2(KC77-{WXBh~hs*qZlHY#lt9K{~nK`5##^Q7ynOxdS_n43;X2D z^YfdF^Zop?aQ~P5Vs6XV-+0^p`1)(_!`JZ;T$%av!>PxH9q`=vVjP=QvEk<{n=n7X z%F^$re}{GO9xUf>(;vS+{McI*J?4}3(nZ$%2>#IL=YP9@hoJ&BrS~uY(v!;bgZUfB zuMa;RKR@?Ad}cp7zy5nSNhYHGu=n8u=C;@3=>(>TKm73RaQqE?YtYyqet3ih>^C;Z za3||8Kd5sI3Es5bq|C-!Zrh9NBS1FJ_ZW~oAvxRZV1dRK%oA^QL`cr(nd<>xx{3wh zIw?Fa6^%IPk7^JRS!BN3&v27I;n#&f+AkK-Fj+3PVKWXmxh-93(rs7(b7v48y4ytH*bPR! zDznlVQWwbyC+mgpJr1hNtae5w29hVaaYqNBo3{YEUxXD`8i91bWkUC}7`RQm1&_J@ zvexlE<`(mh=k899ALok6+Gm#8yCmHJ<=~1mON=y~-- z+>&Hu?X(4)V{t5!~gOtASKQ?sDhjXmr6e*)*QZoD>`4hd=ux9aEaKDDt4# zjwd9UXX1i+m*n4%+$c5CJ)#4beIpbe)tW`ap*vMHGt(iaItnP)4W>E`$m#^%7MMjh zo?=m{AOpS%;9~)#8V~yJa*1MLvYslSav?hPl#B`n>>wn!QG5h+8qf+X2axP=+;`_e zWC7ujhG2OB*4Mhc&SD@ZV}Eu}80~E4A*q8wM9A4BM8Tmq06PlE?C>7QaX^zn6+p5# zapcahC>g@OvQg21g{Y8ey0AZoAtJmCV|Zq8=8YmLV%7{}h?ofcYUX>DY>4SY1R3NP zu23x+e^C4;vqh`Gt_QK4V~DRb<1r>Pdyo;Hehm4)C*D~>DnIZ%GV<$1HD{x+IYSyh zB))P*M$-6L@b(DKf`{^=B?rDv(>k?z%3AuO{vk4hbF7Dmm@NG>=d&%oM`#&)HT@xd z+c=-sQ2H~W_ARSoo7J`2ieJ1^^z53bhzqMCCi60T~)lcFFg7@hs)sM)JS3fCzs?W>!gRXhfXXbFtN;Z|X z=3VeG=S6bn^_&H{@CBa|;3iw;TU+U9p2k7n6R|@AouRUDZcN{vIk;}YDXs(@d@+Q` z5Fts3&Gx3`G=i&8;}v;^WyyST9uPwywKS=@#SB*h!&u+bs8#Dpq7*McD__o}73i zSonI|jrg{=IS+!|`9iOX^5ot(NkqN7UnAA~MwM<-`=pw8;rsisfPKAKfZozi==%YW zz6#LSb^&bzcoq&sq`mZbX~ENvvX^9EHzMS@3IL#omr@tzhy z=iWz!g#qF0N7r+VVzj;h@xha8@OTZDRXWe=^a8vWARKZ_>$;tnJMgsHY|#bJ8fbMS zMGYZXrOC$i0!9B4G?az6&J}oF7H&BNSi>1oi=6@RL4XZLgfzf( z*RChGh9@FnBe%`U7LEeq-d!}f8S3QpKx8#{l%A}Y0%7lJXBe(A$%x2i%RFM+9*WQ- zK~~FoG@P1VKcqno!Ch5UR<{FlDN249JGwksIsvvHGs}}ws2o&9vjj`Nt=q;>CLGpA zM2fxcc2=c}s-4X)NeDsPCD-$;T@SC*yuUY-?QO>XT+&N$n9rL_lC}L+>|p%*Rhme4 zlT?=O0)>_bFCA}O+kD_Lp7{$wOi)JX1~ei{imxY)RN&BoM; z=5QmYwe41-DvgP3U5R$mM3PtI^}EQ}Mh~1^%v|Oei%$J*keg+%mOu0nn(Suv)Lm74(y!p7&z#9)d=gIN}iUkXOp-di)>b|z~R_L zBT2TY_3c^g?q@}oR{cbcr(U$2w~oN#Sn(Rk6=_+qv5Tp}Cfn8>lInB0SU9%G$=gP7 zlipR$yCv`FovoYCLuJ)x6j;FTTo*elKS8K_iK$6m2d+pbR$ZW={)2j72 zcZxOA`K;XysS+LTaggH<*qV<4A$W61wpFsY2o%W+bT*T1vah@3VQ@i?TEjU3R5}BB z?XqCcy!<+ld9j?=m*nZP?3~P#n$4ispEUAeazTzE7(APjUZr_|w2^vkVTnW&<;yJ3 zW|q}`9EZi%%VoB)28qX-9}3c8kongqinO_YRQ5=c%u6Y^W_!m?vi!Wu@5ZVZnp_r{ zd+0bza_=}of@#XH?>%SAP9s5bH+pI8pje^Q-?O@Cqv3F9e#@H|o?M2XcX?K_M41b0 z=u0?g-&~P~Iz@7FMYi*Fd$IO}MLKm!v)hCkI_i>+2N_B2PRDO;_IuG$v9#@FG`fvCbNuMf057a()Mb_bbLW>Oem6rOR_AlZ8MUW zU+;L_I(fJ#dkJfU>1E|3dC~5sZ&Q5^uE^qg290S>4CK|pU?eYe9^UrI=9e0UWxph= zyEct4zmFPn(L2mb=h&JTY3_|fB9{H4M0=~wpD4{uQqF8n5PkhDNyh>glH{^%oDY594ZmK94JyCms4nTu(X zifo(GGo6?o6?rkeza&+f=3z^b7A{Epw3f)N^dqNBSF@m?6YX>9n_D?k4@rxE?l6c>qs`5Fi|Aq@S>A95^QJn z!m$_=sU$6)g&+q5MY8`Kdq#(`BCRu1o@T5_tC{CTCzUTN=2uwOa;c3bf-IN=w5!{N zZDJhtBZ+!eV@T<$BwN~_9>RQ%1?gIDN0LD2tI8ciTk&&dZM{t(6wk$Z7+m3@)~qfk zgjeK5e7<4xBIokKnS8~1ZtLoToSp<}TFC9BNdrQix!&5uTB4e-tqb1r>k72%Jbs)& zu!yU6)E|%AMO!X*SKx{4LcMcc)xg>$BVT{oCV7+2nd@Dpx5ju_k@Bw5a_)&`4yBT4Z2Q&vy@H0={pPCi_a?RJ}7J>7)E>rs$tWw-KZz6OeP z_qUs&Mp_d^@NNZu>bzPX4b>E~_IH2nFoiVYr@ z9iN+ID*SD>cI*|S(w_xcr8R@$I0H`SItB+jCw=}dPCdis!$^^LMU{NAPCFi`Isbl} z?9;Z2TBD-yB8@tzMNK#gslwis^RS~>*M!|8?-8*W!Ntt^{HUAUNTB!ay@-Rk_h?u|nJm3ezk`dE?qLbHP3&IMfAl`!PBxM0-8?OAXUISB z%H-tIwVnC_b%;pj#C>$Q+h+;Fc{5j%BS|_=`5+ldvd&hy^`O)T?6-paRL_f@@wgxL z2?F7amUU751DmCn=5(u;eVt=ognL&;n_&u5<3JJ$0XCTX<>$o1NAVcAJu{V0al%Bd@wu@aEFFnh|2L;+QELM1sbfqXNia(Ab6fdA)`ZM<&fSmIE3>@5#V69U+}VFvooDkTcb)H%Mh4Jr zIc|OX-q0hmdFA%jv_!$oc)yPwJzFMun^aY{x7`vTg+p+WmTXeCtE`p_3crLqe;bUV zX-_fc9|yE4*VZ%Hs`7!IRYkIxn@+XMWI4#{zk%&p^Tjr7`e=HZ5WPreJI_634rXj} zWIx;{#$=IOSnPK%#zY;~y&MyFSoflYsxjEW@?3%Epn0$MGEqtu+t%3*Q_1E3ATzb)D!J-aL{`0!m|12I)?4*zeJzrOA^m zb7wptCfT&nH1=#g#vDwdcw3hBZDyP)U`7R*Y&=QAS!g1Chr1&p7qw^iZFC}%dD1x? z!ZI!>VVd_Bq%jXj9*L|RdusgaQ$hNU-$PU_MV1@$`C%l7M7s9=_}2yL4e%6?B)PbA zo*agQe?%^KxeZ0~Aj!-grVPn@Np6Z&X1RigCF)DkaNJNQVLO1xdN*ShDy^2u)vYJg z&#@%;^DNC5#<>|Tlf{a(U-3dWjp}o@DtSofWR9yBU5kQ#KBYOUvdf*c3-W<eIRaCCNy9-Ep~%YMyH8>TK8*Iixn4=f0C0BavpY zT&C_-j-ep8Wl?8MYCLa%tx5X1n0qg_Q!OpBRn{b%vbasF&6Nv`jo?U@`51zF7NIV{P*BN!C0{Nn5V3zE6&o8;4lSB>+r^98vpuTrEmNk130 zFGA5sk+WTHyWNOnEXZhS+&`D(L6p6A9B<+JNh89-YZa$t=NJ1~QfC`W1@t#yV+iAVHGO`|nroIvl3_63-tB;s2Ss{Ln4B)irOCO&Y?86@-_f96WIhVp`8Zi*ycUATVR7t&7k0GC z6q1Kaa%(ubgY|wCp?tNB~AJCPHy^Zs~&$kf1tP^DwvighFEaO>I?v=qNi>bbUd zAwd$D&9;L{zl8T~ELSCmR7sh4#&bj2yu1!JwUglP2aR4^&UGO8ywI6Om@=vr1D*;?pb^{{qvDb#iX$ zOgO$hbjXeQJRg$s>$cgrAcul<21mx$JS!4B8*`sWFJP$1vSJgy%B1^9juh$k7l!wW zw1-7QQnY4WOqtfj<_mtMrV;JjLv*Gp&ElyR3_7~^`N zO&WJe=3rQEq^+$D9KH{-x$o6Moy_RH-oISvq(-Ad1pnDr0Rsr z8SZ?FMJ@m3jNyYMJ;5C(qC^le$aXtofcYd<+7=5(1T(Y>RG-_@H;b4=g7n>aIE)q9>}<;c*oy>NyM{un zC9+=Iy>FxLUXY(EN4R?InxykNn;m#cL}}*EIOEvv)S5*JYrY%H`~dy)L5Jj5D2mH9 zWhBWS7v32ZHBspd3yw(=IQ4<(3pQ}rbCcF} zcbNgx9GS`PG6RxBGud5cKys|et>vUP84!)MucRWWzj zvhobCLrSyu&IzMPkiJRGm`YUJ3r^&Lbl&}%1AblP(|d;_qBg3xi`u>)g0*z7$ZYNk zhBP1zsai69j1n&ES zghAc5z=B^FXwM4__-fwI~ntUkASc@*I^fF`^rYTBPWb@SOC1aXHoy;xwp^%(t%7*?hzq4cV0B%oxP7_={hm4 z>Ied5+l_}P4?km)ZvsA#y*)3T=Log=c-}Hkv#t|dc(svd{H4>j7qDanNYXaU@^t&+ zbd=)jHETLcj;D&8d2_6@uKY&bEX+Jv=9%vBt}JWh+>>RU^yL9^(cv9=&}wZF(9UNa zcjlvi*?bFkT^x}V=ld*4V^`;SV2<>lA4jb9YLhx^S%x`ei4Tak1M6~#oa+*qENu64 z~ZgeuY z%(Ri5Dsr)KUE;tKV1it^$dQ)MMaKL9d#~1NX;Ih?g7aF^8h!znUX6iNuD{JR+852sr8DzoS6v{yau~lrPUGh(pKj8WUw){I$AmF zNbBq?r*@7tqqH&~X%`8O zdC*8_ABx5u(s4y09_XaYCdHcV%vP=f#X9Khz$2Y>eSD;Kq0BkajCC^KSTtU)gGkb8 zlJvH8I_Mn`&hy#8@v%c%o-jhoInl|~@_nqNlTNw@VZG#~%~?QDR}X8b!>c51kq)sk zwK0QDb6p)ntD}$Ar?M$b3o&voPUOZpvf?U;Ak)MWyavC1(1rN@D$o>sff)6|;Ny(%AR7R3I- z7B;+QlyZ03HItY-U4Vh6BDr(KjI>(H_hn{YpA~C_1QvCK`w5jrnR08akb7C`P?yL zj`cL%&Vp8-b?O{jHRY^7I%kfWcGi_^)Eenu_q{bC!M)9VVUl{q-?DMoo=vSfo4IXI z0Mnf4q^puN+tt`y8vb$3`?1FyLp^@b$vel?E!MMH?JPGQG0jWT9+O$mr+d`U#=)Jt zXKI>ck08T`VXZayndK=x{`rAU)|Mp$>_%E6SyhRrsb%zbX6eH`&9hEg`Yl91Eh6PL69+#P?K4{ zER2hP+A8Q-T}}7mai5DFNv+$~j<5;JKmlp$$2xfp8g5KT zzqSJ!&Ok~(oq>6J*Q{-)B-K=kk#N|-T6nbt2IR*Edb5K(DH6`r6~~ zJz&D=5){Vo66{}r>uhz|IrWaAKxTG~#SvhYE+NWty2b5mLurJ*Rq1?hHIE&A1Jc?v zksNhNN179jw6>;l=mlwO&CY-bWYriVVM}tXkqz!3S;&DGRP_b!t|$$=n@opwAPLUg*DveRpEbgIBXCMVj~a)D$0vUU;E-#&FZtnjA3PevQ^V2C(A? zXrMDp8o5B+w6}|@C>{Bf!&ST3ZMUD`g}Zr?FSFHUTpDc3W0y4h6spk`Y4$0U2c}4~ zPocazx7VZlYHqJb@04z@M>p!C4R_TCjW*cj%l*S7Z-bpnD^HauH zkhbzG!>LGSK8owUgyfA*vZ+yK+Tl@dmmqC*ss>;|+UgX^2c5Kel4__1()%uUBuKkw zsxKV0%xq@4J-C$|S>2vo*O$Xb<5kzZGK$#Yx!P_0Jw6sao|#VT{Gq2WSTU#1|9mg? zI;S(IxpQu3PIKpMR!#>G7vSFXZRt<7#d2vmkRicHRK4AkQ!Ii`Uyi^*mozzZ+UV+b z=8WGqIdi(wk&AZi$SH6lLC5`NP2+&HPn`JdL4s9kojuEiGVV*+6%+L`BGNG#=Onjs z&et3X6x{+AdqG7UY^0OUQ-o&)vih_ni%G^8q;7^R|g{z0AF)3qniQnKKTw zs3ag8^Vxz9iPQhPBzN9i78MVuy~eeC66%byC#~EMe}<=@@w}MzU1zc$2o^Qm3rS2q zwCqC!f@AFXctoJrnPe4@FTGpCercaZF!!CR7AabN6fKYZHF|F>njikWO%{7x9kgDW zBFljw^9z}Wz{Y>m<{#Ph4rqL!oLYuJ>q!wgq#y|EczK%I{i7j)@LGg3#Swv7ZjI5{ z&0}6Ta;ev2UQ}Cal4Se|blg!RbBQ1`{fol6i$`Fc{<2H+#{M`;EWu{$e0f7O;cd3r zI4gVrAe#g^LvwPQ+V3m&)3$J&7*y=MC><6?7O8|_pN{bCvf2T>vlK^tos(-epH0~x z*2Z?1MhMU>hXYxzMbIgcPBoJLn}jjusN?OTNTD=Cx1vKy`mRP!MWQ7{FttVt*J{5? ztrl38ij(lBguVWyGBYsydzx&rm19#yRg~qXP#5NCQ+;x%fY3gI_hrInB(|vK%G=(~ z*<@^2RmPKcosuzdxw8d(m5DMi4~g7|Z3-l_-CGD8XDpYje@4!?3rDPQzO2EEl*7D! z$tHP4zAL3sMYtm~l#xF%b#MZ=EzU&M~nx#kjXM;&}1m`Y_e- z(1VRIEo9_Sk$~!VQ2{Vvx=oSyi~j}czba0K^e>MzYJPQ_EK!~+gnvMRM01mz@75yemBLlbuqM1dM-6vY&Ol}t!;&)F#qlBvLYc8#>*kB zDK2s8RJtAAdvL(aVe+*HcIS4wk1^^}{NhGbb@j!Bw&_t^(@o)TXcw|z$=20*VwaOX@l-uTOH%spm_DM(U(wuTLZsjZxQaeOOsi`TY~1N`yL&# z{730sa7^iOC)C$tbiEavaRYl%ur2pn6e%utD3}ypsIWv~tBU@JPctPhTQ?t#jdD3A zjLD!Aa){hf^?OAy8A+t7)tCu7ZurRL6)PZ571kbOqBrQyp;DWzv4W6Itp^^pxqUU4 z*5KWv#i`eMz5;w~(wKFV>{<;|0!H^G4y~FHR3e}zHzj~5os?YhPQxI=Dyp6`^R(*S zco@ycx%yPw#RgJph9d;D^*k;o4?*e_F?SYq({T<|8PqX=< zsAs%&)nz{CWCC@~xu3aGShM2iDyDtxY~3>9&Ue4ISY!aRu1{jtIT3=SF@pnItWIjs z_7_g12@3s0`qk?LPQ-H88(-qn)i|+Zm2yN>Bo&~>(g)vC6ig<5bf33|DL)O`oFff< z1X;Y6Asl&^Y8k>Go#nH}W98-95d9?w=a-sm;^R;?uoOU$4JDnsDL3VcmjRuHt6D*{ zoh&b>f)UCj;K8i>AzPM$$sExoVZfJPmV4;BnWh5A@F8xj{K%{YAAl~siZSe?gccm5%w@S}$` zaBKCW2W(Q#HkOXkMJ!=sx^qJ9RtNBgfJk?$?*DzV)jJoPjpRhn8wd>+{MOoyU0N!Ycht6=RjEXX&n$4BEMg2+pyR+|ZXpQJN26jjq~?gm zH8arG+J9Fy01|mHWZY>csUH@OH%}*B0CAv3KzhltZKmi*OMe4~e--WT*e=alw?Pv+ zh^;x1#P=OEEb`fGN!!0>2cAmaVB3~?R@`_W)jCzX?S+3tEuxT{&jTo_T|ztQ06(6S zJ{V%Iw{+{co162*MX4Ccl|)ke^R%q;0#E4Vpqui%{F^9-Cu4Iaxlx{hfHF$}HigGQ zo*nym8Ov6U`0?=&B&3@XtY+Eu%G6I27~A%FPtnl^JE2;;+FR2@91o?*WnD@Um#*PJ zxW4o!>QSF|Z)oB3FQ`9y<`3^?J2FSpkFyu-G)SCFo`ZnkFDAWfR!@>JHT^nNofd_6_jc`?>3WWv8;N44c< z3@8yI+U|#>8n@RW78Z=cMR{6IFt@Ap9SM8gabP`Gd1X$4O68&y{N3Fz3Z(cqG*R{Z zg@3y;1(pe6`dGa4JNUJfKf0cDviJ?Z$(9SQf@#$qGVYB%fBXnzlz9`>UV{>QO~$nY zk@wB;YwIrR72DIBLLipruv&H=wR?q z#HaZ+tOAw=u~6dM;d*NiKiM15dgnSifv}DzueVlCko;quZ!Kp^`WAF z7cd$(qKU*;%lxZ!e|xt=z5j*27ZmM>tsmyz#=YWnb7Z02Ec$1@G;D-k+$M{rw}m79 z_@MS!?*R%3KV!)oPcv=OdUKQd*7oeJG_(0FZQYnooaLW3Aro$cB>#AiBHY4$ z<;i1khVy@1H5{c7k9eQ+l+;a}H5~1KZb< z{2~4!anTY!Ec!mw!heK@Y#Z39@Mff@E3{N|#}a4*fn36_fy79g6X{}CQPrZ63GK~1 zmY2m%)_zU6^&K5h*4JJ{6bohHQ=tQCh#Qa{7WzKgLoL80R7L4Qx1K3S=yOx7pv9@K zr7jq_{48ClmgstgHZC53Pu6y|yfW*rSIoO}PL_K?xZ-0f=P4gGxdbm!`gL<^MJ_ap z1VKTz$uiPf1p9$F4pA$<`hhn!o~rqRj?O7Dvp}3>(kZR6NtUqY5VShu{NA%24}Hc8 zGmH$4P(|80qGU9dcERY4 zY9s7hfOSpJR^cioe6iBjV$wm|_=GktIs-oAy6rNvc z#sK%i*^hradzkRMt1WZa3gdJa8B+y!-8ecs35F1TisgEQC}{g|i;B2!Q<)N35n-~; zF)r>CkLv>|p;GT2W#K8{~iuTrNmJoA)o3AdK^b z&{A0+4G%F|-yj6=k~ta8n7{ky@--6wtmcxTkYM9IY|>Ls-@%FGVs9YAzb{nydF^13 z+K>JglIZQ~yWfO|)pj+bq3106A5H6Rw4*jQkaVrQ_oj@XtWf-L9RRjok7s4=jKpIF zjjF~EN}rw|fjH+1l1kL$SKeo{J1wH{L2u69K#L^%$uj2Bzwr27vH5iG?mtkU{+d(&A zUREGg2!*4@Br00>E;^e^MYK}S50ULFoUl*iF4W9|IsgFySZAx1YQ7$|Y$`=SXP?Po zzko=1H;eQwe}W)!HfJP{Wgo3n!72%^1-mcSRqJHfkQDj@zv0k}{6ITCu{hJ^7DcS` zu)L*|Tn!Yv4%CYt?{iPdy;X86_jp48abrBP&PB@Z_rr60T3awG`qc&I&!WUM+l}G6 z;85gvpITSvNxVYR6OizqxTh^u@BNz?y->r>mqCyBB>L8?CxPbar8yLbTLMi+K+%U|-?t&-wUf2v*}C;jI0&`{ zIz3?Ow={`cl1Ubpd-#|Y6!5KJI_qu`?ht;z2gQOF04+`73M+#l!8_-RIYxZby3S=4 z@VDQ`rts?}0;}21xjMXI$V%5hHK3VFeA35tH%m#E?Af*gm^-jquFyLV!j2$~pV ziu32>3>H_^4*>D1hNUJCCnV1}@7R{D4DtLz}d#jVEVrK#4=~a3)!MavQ4uC>pD(<@iOI?+fzmJNE+Sv|l!k z!|HH4YtZGmQKA3FPlD9iDP`hb+sYqcA+ncF-^Bk#X5xQdw-Nh2pOopn-rm05z7E~I zoIKP#tq_0Yj5f_Ayb|}U2@VEuYd(Dv6d4?KyD6baF_1ie$R7{&z9zS|EqJ|fN0>&l)2&1$9A6g6G66@#SJgm6jm3dkLev{#q z;bjWYG3FApJxiry2|StQ)H5EUG5U(W-({nj+2-xvxsbPvUMp3{M;|Ny@8~6;biQ~+=;|fN772hRnn7@ketrrpqYzF1TQwAsD42ZVv2|?jfcU_Io#7@l8la@&s@{$0xhLL!22c&Qg{-80 z(U5uKLf}l)tz=dU3mg05MrWx*zUsT3xxn8zlHZYVkrPlqB)lOP=V1N=WOvcB>&Xqj zjEMHhFg1zbT{szhEs%zCyR?JH)GTULVM$vuvOG92hy)-1A}Jxmet9-9TT?^e_g5Z= zOmni+aAMzOw^*^2gn0%NRLPf_2Ry*^lsKw?TV5aWH5T1c^!yKj{q;MDnQB>}8?j-i zKg3t*oX{BGELOA6Hp$a}QE<<+KWI-Rd|jrS?ocKv)4{}ZlZS%!VBE{y)OsnMn@r;w@ms3) zXg+hvEeWo-Uj@)9f|-I1Ek*#(%D#irQrM20tg8~d;Efg3+H7{1$L5qd*RRO7bYf*M zN{!VKXa0)L5#+*)IF(2)XQgq+M*6S2u>$FJST&M^i~Q&5Xr7_fWNCpKJ_h-`WmN8$ zXnjMCu1j7q&HXFho|$Z7L?^n`WIwK&fy)Znrs>C1P93K8PhKaRm1XhfGOgL(*vRgq zlxh263;9W3Ug*uw<0N6tLUU{8Z`kH0Z-@OfWu@8j=pIfSH|4wvhob%oh0`*SWm6hb`XtxN8Ehu8NTk3q6} zk$-Q`FYn?hh7g3+eh}^+FK-_Y_xH;n2-la#w++zk+kIxR3N3v$A-LD;(Fu@GsLw~h zMbH}(v-%0#+23QQ1>E)R_W43iQHhvYN402;`{VWbKty#clJ>`7=?;QUe@~8H{%Z7Nr1Csj5v-?Smqoxw-ke0@XB z{I~@KCZHO`9X6#gkFKw;$q4B2Z%_tvV8Ev^)E*~K{CkBatm5hg43w0u<3UdviNrQA zI^TlxjZ41j?f4=-aMr{=5cI46Q*ZyZKe@MH54CxHj=H3_x$J_WHR({`!tj;scu-T3}x7}M+PqZ+wdz!?SBu@ z%U4v>^Nv?2zWNbpTkk4`O0`z_GA!i(JlcG+K1t60zIS(XfnZ_XwhyG-=o)HP`1IL( zt;DAs4bxQq>?byAGZ;ayP#iN@F!|fmNAz1){;2IcZOWs#4e5OZOR|1%jv#UGy`BP< z)gU-0O#7YAHVO)HUViV}fOCn)Bp3mdMg{K@#F{V%Yd;LycBjARN9+=?ZOlF;9h`Hd zu)lY(djI4g5f67&PryvsYxZbs=x$|b4;ZLwlgVt#K>esM9>4)>WtQ;}qsW}3C19Xn#` z@$Y7?etI1HvMSc+RgmKGHzX`14*6}=?Cc8rNzAO*niLn1;Mv?=>L^sPPo+yEwg@xo zaG#^y03X*1MXB_UhBW4IlL<8fYI7_Ql5sQoqFrbxR1rGd%gTx>=0R2ElLUd$0{r;S z9|ToyoGCtjKh+HIojP$jBsO+#mo(3P%G&(Dg22nh>JPgw#EUBuXiCkeUf{h#4fI6* zYPNh)kz*q|xqb#_*94PL1TXm+1C-F_FKAZmKU?NF>pVbt+aHb|JS=s=sU76L?dBZP zg`%XiLREp!NY&R1krE$hnU;VR3TMwxKf!#xaVtHG^N4Jy4TZVpOQjY#U-{!9i=Vk5 zt)T9FUVc&zEzpwuSJ}iO0w%{>v=YQqfJz4+He7kW!Znl24 zq6^>X`ksdR($p+VD0E4Z8Ot`FWg?1+QWLHxE7@Vm%58 z%YKn-41-mtJ_1Oy6*|T}3Nw}9Jwjk}5jA28i z)*>TeV>d#Q2l+3{2^^Re!@9!5HX+Q2fuld$6&3>h&+c!GOz;o)rNhNi4BM7RQ zV4ywj-I255&u#QYZ^(NR2kYWhg6~2Fc)NN*+k>;oa<>)$CSlkF(6GI)6NddG7d&*0amJNdjmVXH5eU8x z(cl?u<@*_5(pdiOd$6+$cxAG6RM)QZ81erGsNP8;t-|sdKu5aWJ-GvMweSw$;PRcp zS#boZpYD`RnPUl3NZWFD{`#+Y&Pt?AhuTaVMtK#Av?Vk>Q9AZww>! zFaNBt!0>^oZo4#F`erV()ibM~mwC(j{_;2lAE^GCJu!}CE~FghA50j{VDi~zp>pvv}Re+@*?kX)wieVvCl>w@sG&ohvinOlkbnZS% zYpCZ6O~V(K(JlVub|WvtTsa*?S7NJw-i)>TIKLhhX%Q5ihC(X{`Z+P(*V)_eNcnsF zgR)!ggsbv2Nc30G_k}Gm9TXq!XQvj@jHP5#5zk^WXecKLX%DY_e0{obH;pUp0rr@J zvuAssjs2=GKBSm(w|kT8d@j~$AOEqWH2ShgUuZ|=l*Cj?*aJV9-Z3NbK?3^=d4>EAZ_c)CW}A!Igk7No)nv5B~2Tkuxyv{_(KM zA0GE*7MM>(AJpF^&_GWfxRS|251+Hxxu0I~v=I|AC!~AR>>yz3eU;7eTiN z_`C$aG}tUYPn1%lFsFb17fFX$4d!V6za!~~rUHkM96~`jcP}s7m)iq_Y`Q1!lYRG6 zu71pA{%^0>3paPpS3~BHMR#X??#aevYbf5tf(G*543~Or;%~d*_ThW>JKuv_Kdy(! zt8sf990R+={a-{boT+3yS{#yDn{2$JFlV|T4?8}fZbHDV&(U_7TQH28rjZXPN9!pv z)=(Q>_?t%U%c`J-Ymx`C0vv{E#!TU-@C?NdW9;y5at2!d#K-Xsa^?K`%BORA8%fIB zp1XG(mqHiKTkyM>#b`+IZfh|e{@nzZs1aJ-b}B*m730)H6Ie4`MZcc5ym%ahs@TD& zr%zweP?aJX+VU{CsG0#3F~W{A?&fTq|IYJGh<6vz<1qU18++W!+kv7JW~4lJua|fe z05Ng%ueQB5xm|yyAe$n_NuZ-dP3!V_CCd?S|nS?Qqxw?E) zH(*8c#6u^{4#Yfxc2Q4Ni^o!(XYV#s4%cmE-Nmz0;fPf!5U)LY|98XBI_(m~VwG;b zoTfb8F}dj&;yHb};G?AKYt4S>QE0qOGIbLhhiCsv>Q-kw3RH{`IL`Q6P3pGXkcdPe z#%tF6Jp#$a#%M%>m$Stv*Q=|+$g4+uSsnNI!OU+6mZfKl%$g4I-YdGghI#Rfp|N#P zv94`=4PNwr4IchyaK4z`f)$qQ)$~78;QvgGtm$IDmetfS&z~{0whl_wwS5i9d$#_+ zgK`!7uhY4nPOrfm_iVv@y*_*3tZy9z)U^e+V2yh9Abp*B`OMb9Hnc&{9`ft34_*WS zZNuu7_5L;ZWceOVZNvErE^9j3doKblZNtKq^|>{8jGnEqW%Z2X2hQf!L9x2Ff)*^w zuS0!Z&eEB!g>7hsp1tVTl7cPH*fT%YP^IVH*}UsWcHUXCyMW(HsNaJOi-7zA2=u(S zvl7VixU&0G__dA;ECxdbu^^i`38-sRL(sb0mTiGT_7m;X}iJG1$Y2m?_H=(<^h;E3TY-E6GR;REDs^Tea5dq_J=Q~2ZPGVwH`<(MHaccG;QrSN%D9(!5_ z1t}=-TPCAB0N~2&JB`dsm;tBI21DD(zcql>sz-u@S)|k8F0R#{-k^Wmlxa)KEL0uN zl8<)QuZjWDAUbOu5~Mij7_@2k#}rN5-{51^0hU^2qZHJlMZ)FCN8~XHjnoFlv0X*V zVJyfyHqr5!8HZz8QAvV)dJn3!yri4d|53fmk^rfEX|Bq`moADQ0tYYSx3a6{n-l)$ z)czOhezZGc{qhG?8LtKx%jQ7}=xzduoCgftN)DG^@i04<^oAM=nYVdPDc63<`v-4Y z0;+if4W!S@nXHeO-f&%74innUWWY_>ic>Mp4c~;Fz<^xegwxCz*^A3yoX*`#byZgr zE<*cOs~!TYBAwQ}cFX#$IN%f>1~+!bdx!C^8AQt;^_OLUn-=$8${i`0$iWO#+;MW8 z2Hd@oa(>WuI!?4>^J0k#OzzOc&LY|R6Mf%Ybb*2wgu4RIh-^u8VKb|{DIy$bwdb6w zd=dXrsje|!piW(8s%MLld7Y17F-L5*DChLxewh7-)gCg-51MTU!0C>T1M9C9CD=Ngi8J(NVHZ9u>B_==aMBOtvn^>IuSf z&76$xrnxLs=am>9ze!=5a8PU8pCWFZZ~+ie`OxY zJGL_W=3-A4=*pQ%TC>bHd5H1k75sgR=Ihc-Dy@G#h6k74w9ZSpC&|tIcjU0h=C5P6 zV5Fnc6a%k~=W2>QC67;;pqtrFXB>I6m5S$PO8;F_!>sa;4QFc!z7lM5(;J0pjLdra zb|iad=H}7Dsa6Cn-eg!`O6D&SMmGID(Q-<_P7&Wrt66P;}|1=Y$c z;Py_>IKel^Oc(n+?+3!v+&9C+)|?de{>{l^Xyb;pNsSS1*GQt+%;wF21Fr|P#;;a+AGL2(>9 z_n|R*E3zDAEtiTbBUs-n2CcM>{!*C9%iU*CgupZRHFz#fmi`>= zwOUF2Tm9N7o5jHf8Fr9U8)LSV-s0}4$kCnBAi;ArA6gM^B?lYgbYbH1D z@~>sBFWBhEf@+tKovz%HsS!=E(%8Fa^h38J-jx)pHFj2oRc2}GNsR>s`FUqjp!I}Z zCXm|L3;)+2#4gsyBf?tApbAD6f-bhl!ZdSB`R5OaowI1;JR=D$9~xnIWh6&0nX{ zOXY$C_troBQ$0fyDy$-xM6`r|d`!sA14uJYJwe~J4`Xp$A^hBZH=_W zx>y$zDHp;zAbh{JYMI0|C0J)VOOCSBbR^-qm{jxG=;8_3AHvPMZpnAb?zp?)-C>?- z9gdq$Kxc^V@#&<$QX;u_)C-C@(6Fho_J-H(Gga_S{j#U86Pvh|;$tw0njZb9psjl{ z|B-N^*7HyyCj)9KU141mjC*pbGbJNsYpdDdGcm|v)l$|qD_?0z>1ZwfX;!{3MX6nr zz1A-K%lX5)atQ^=LN&M4P#)urmo~Fi+SblS!;IRb)gbxl&!H7&cWYgitR{f#sf$&G z!uanqU8dBs$oRb`bzQ;@AKtG7lTH@ySk@sKyvIbh-am*$G83|t>=wxEnY=ZRE0TXw zr#v@OUz!g@JG+oeJHK;ImvIo}**=u6w74j`cU-W&x);XvUXi#>7H;FmZNp_&ysB!L zx%hg;slz|$cgil}BhR@_U=WzlZ{ub5?s;UcR@;BT(i*0?=ysqY>}Nn{#CPE6glnW& zc0729-wcco;5^0mi?=F7^&{oEPVk zGK7u_-}kzd!{Ef0CtMQc)-&Uze}@g6dG|{^m+;G@kSjPZkTcDjR{y%0h6bQZIzTOy z!(kCGTdu(xe^8r<$4R^qa_&T^WRbm`nk-i?S6)VQUNh8dVcW^&ZIk&HvVx0C3GZ}B zOqLn~?i_O6(Q3<$*$Lyq7cd6WrepHv=E`SxXa*h=MPhy+=6!3Yy)CtKTd5ULdrBEF z2H&pLbZ=m|8EnoQfP`ba17a?5)DEx=tPZxG#yNy|_LAbFz-rARDdv#}O+J+2V8wHDxQWf`(?89Ya2s!rSpiUisa9V%E?l zNHXMV>_LcP|El58RXy*b&NR%y$m*JKgciR0r~PHwf=EdmWSn-Jf;1m3w?HX+7mFWs zRTdH}8O)iT9hXSrCJGo`WVO{&;bY3V|(uajm#d<>y^u$8R)wPLj)og8#_0CSc6P3Zh5JkZT06G5U+aB$%< z<$D_?h(2Xtm@e}lp#qUvr#>)f*eoUvuPx#d24_b!4gPAXHSQw~HKrNZ8J3mL6u#=1 z(h)P&ozY&$s0G6NhB~(BsN1lI_q^C>)5V;+cL0Ew_X{DY6><|UL(h#IrzPWBsdiJC z_F>*cO;32NKdL+%LMgJ(z2d?&z31vFe<4wcq4J@tGir}@ybSdW5@zRz2lrQIWvV7G zlS+hnso4{7_px?eh63!vkz3i?p(B*6R%4dJed~@XmzhD2b4V@xp-2sed&o=pc3tGI z&XFu#o$VfHk^0aahF|6bj&tVreu;~NTWs10@Gb|bdShKb%=&J?%o(y%hiHIdI);mDoYJr(=-u47uSC*7D4PE$5X{ znF^;Q-fQZ&J5{o_eGt*Y6&O6g|V0U*?0l)^mBBUv|Lg!O>1BTl?M(H-Dv& z9!+nBlr>5kbBVD)L9et7>!(wx;P=swWq$m@f?;4a^`^T%tqM?etkKF*KxM?S?du01 zp;4$9@2D1L^m+$Vq%H4q!%cbuJYu>{%UhlG;%gwzh)QJM4r=N zQ_I+kFv=z-<|Bb&0_m0}FGKBk9-4`ruy0n(inyTJ)>&$LQiH=)G6e?p3{SA#1AaYY z9Ihok;+l*)BdyXBiHvX6262nEb~tH}V~P7ZGE~JqYDo+XPo(wVj01U$HwwW~^hMU?WqV zyRIC169HXPmD<74qikhK7}`8}by}s}gx>A_*I>q(jGe$CB?C)SJo7ntWX!|kaxPIM zHmY!7a9C!t=y|cB88Ku-Q&?s$EW3j*5}U#}S~UAq_e&6`6c~^>2lQQ$549 z2CN}+kRJ3iLJrGJQ(5?2!Z3{uE`kWtj3+4o*z+|Bi%9Ifus(84ELVv2%4SC*Bn!w~ zG-~QOEdOQK)Nax=uilAls>^|s8O=9IZ|Q0?~6-w9w$dAn0X|LvRLWg zC--QnEq>8bdd(WcnTW=$&{ez`@nO^lZfFw zfze_ll_J1W>GRv^sh~fCRefz146cl7b79l`=H4b?Ig zc-uZ}!kdb5oMLofOb*x$?wQj-CyL;O?EzWw4sGy7F*Oa?-p=m=5LO@!k)wX=TP`mw zFN9SC-Cl|H$?I=w8Krtu7Q-*ifis$E6?QK^46aU(8zm*pQGyW3#AWKPOAK{(SK$(1 z_ZK47h!jr_tQwa1g|u}g_2e2nLlDEdRbq9nMn|FG7^mGfQWe&yjrIT33Mz;!a;TbXuY+22B~9=I@kIwb0bz52HG$WvdN!1+@W2cK;MH9j9_w zB6I%}yeIdK+8r0=LFzc{!`I6pqWRSj=fc}0q++A8Ok|s5FcvOml%}M~*l~BVd`3?9 znx}e`(*Crv(|=JGut-f`uBc%3Lrq^eg*!_NMf#UlS7>%v;)}V${^Mw@FWJp@?dd3) z@O!pc!RYfrV>>$A(qqq5M)Ln zxU`A<%iG`)VEAXSoj>B;u-x#G&!N7lmidf=C<2eHVcr7;``t;P#mcnvSXc#II+N*i zCr5tB%zEz?+KgeI+1bOxhNZ^MTrHPfdv5@^t7MqA3r^5lXDG9m#&#$NDnCezK9_`8 z*HVcd!&k4BJ0k^z5D-n;I+}#3gfdKJpKaVMF^>(!kRxepHYBQtK;LB|MxS>7WT(*2 zC<=6vpCz(!*Ug_Ebeq%SXgQLvN_64llAE!JqOI6y_l?yRp%bx+XBV2!66Cn5F$TY1 z+{u}8RTzo4T570HN+k{8=S)*4qVsmO$n`W`nP@PxP!Hqz{d}ltc;?c?LZ7zFy1Ddl9#7O#uAbf@aw0y37X2$|q+@alHvhwJ$O&Mhr_St_N=1QQKgEm*BMb*9bYvD=vP$A)he zE}Q;pIv5Fs%59|NT)r==t_BoqI!>}pwbK?Tg?ZzNA+=1jmN71=Tnh{|a@DU>N`)LOVWp;CWY;cVzGsle79;8lNqn2Je! zmy#&P2YN6)hPQ!rt=Cd1Bz`^qOpSZ43@vAHrA_uDo}_0Qb=Qsven-{MdnvI}?GV<5u-!PLsihk8_&v#8X_k1*I;~*ywr+ElyO&`t6^4>b{DGU|9 zUmwQN?r3`CQa}YQgsn7{Tm9`eJ0zoDT4*~h>fX2ygYd(+e3kU_ys*|$i&{9DvlnNs z4J~o2RvMXl)9X?D9ykY6*LB)~%jm@Y$l}QEf!$)3ORZaaWCM5fyP@s7&$)aI`>96F zhLb)Ra~mh64*l&Jc1Asa&jw7j=wiS6)BwRESKXX$nlk|o;JAN`)~*g*^7jftx8Lzb zcjx9zyHcGq9|)K0l;dzUOZ#Jn%P22u`-Tg44%sVZ1CGUQ(5^Y(?hN9xsk-#SSBoo< z4pCob{AIyrv=?pEf89Bb!mvvzv5pt7(^JIo8B>B{GiBv_(IEE87t)%oa3AOrA?w+osFx}qa^=NRu zFypLax4O~4mYKy5@)}z1f1vt9NXe-{k&z{U7)9w}RIh!4O1ONzUl08WJYH0&#-aNiia$e=+~H66%fx^?|!S@f?xq1tX;%$U@arNcCvHdnNL*XE-l z`h+5H(2udvXV!10S-zlfF~}yp5mymKtl|M+pqMj@tb$~rZ^#ZDu1x&LtEBLD{)Xtf zxi}?cPna<0dusaas(yN2nTIm_QSHdgkC)Sij<53fz;es=G1;1*h7CpTs>30EeVpcP z1LKmP%pxNpzAEUpR+of^R^jTD;L)R0dy2N2y2;wKV3B0Mwu!HdwED2ourQCE8TzewsHbabLcp`7y?XuVpsF*92HbGY0^)jSS@cPC|Gi}_t*u&0T zj^M~v(no0Jy)qtTf(*lc918>@-k2>Npmld-X6@0LDFV?m?)noj1O{fP>CUd8t}`nL z7=A%w(0ghHU%KI|KNJ1WVSU7L@waS`M}yV`@YQx^oi-`6pc3=);0l_ERU-E3#)dAo z@{j#P=RxgIi2KJ3wzk}zz*BEy+h6d!a4u7qhN2P|dJy9|j8i|)BaQ_4QARyo?1{tV zl<|)bVdUqgJY<%XyD9!(f<6j{|>;UyO$g0Qb_d7`5&V%yxyg2+>0mm zgUbUi9tL_w4aJA!o=asrUJw7E(7^!p8idPg+mWarwR=Z0&$+_5*#FPL|4_`fu{>O3DXD|*u+nv8@o zt&FM$x2P<*b>iv{8ryy9B3e){z38)!5#;-zgn$V)Lo z=T#yC-%{6$_#s}7`||MjL*uR@pwcKqkg@>gw*NXz16v~X**tCkp)hEti0+=IKW(}3WdWH98^|FS4pUMi622(O3WWJYC7pSbsBF>N8K^O$lSqPC zG#H*DR3(0_Dc_X}1J6CHkXu+21&oWEm6A98?ZFjUxcIVg*F0n7h=(1F(dx*eQQ9&b zt7$xJ#0z!w=A9`b#rOG5H!YxTs;$>-71_SQxJ_3aD-N0Q+ z>y!CQ|GX!N61F5AkwpAeQUI01$VMoK*$U{MUqhl2>%@eyDBlGMJ)3XB6&rYFl*KH{ zUL*#66LiuOExi3nyHMBjEY^*uC?>tTVDTsdFPL@1vMSw>sJ!q{n1Eu6s#elxv(SzG zQ*T6U)2u3$z7AaRn#9X3w=CMXWz#`KhrGx%EtIWbgR78OtljzB*0~l5rM?mS0pImP zXTnSfpM##wk2BK}$av4_be7FLr~sXPIF#l^A}R|FzF1xRvV%}AJPr@G8rq0^hlM3& zYbF-dkn%B3Q5l%vH#tOD?WOjLh1eNGDC0jiRQ&K)aBJrTgF|*UNb3Nq^TO3r3nL8V z?B<5@S;It2h>#!XuhVgDNE<&9Mq~%2?P9Ai{)P*$C*vZf*iVW>u{bS6SMdvrhoK9N z7$&~MNUR$o;j?I$KL0^(D34@WCFNw!I94U)bji> z&hC;tk5biw--TCpbf@IIpi(darb?q?83t zhF;V3<3ooUhG4bQ$e(6)e`wOs6UdG;={8xVA!zPIhS!$%g_)ItE8U7FZ;7QZ)OtUe z#DZh=rM)!%f@*2I!!Q_8_2B#a1Vdkao~&h>_J+@}yL)*uTgq3pYhaK%toZe3V4KMLb;h@DM#*3peLqT>yUErBvLlZ>U*rar5_`?%Zt&Dvcv92|AudQw z%ofzwNoV_hp2;!-(mch5Psmolax}X`$Dn9xb11GmqjvDe)R(^lQc{CpSHw_(qu*jX zMSP|`TJOrn*>BT)-MGFJY6*+*M7k+xefp#?vNF4M9gk`q6(`B|Off@}Z5ra+jaRvl3eU{0{oUC=YU3!*wu+2* z@-=)f;1=ukC?=*l@`&|R8`~{4sM{8pHMd84x>(OiAd>?mPaM$ZE&2mt$IuN9JmwQ^!#PX=+X$0t|zZD6w zk0xYon^g6`S(K|iJ;&&qY##y3W0tce7~e{5#8QsuoB6eZC`8w>xdvUoL|0ZF`#+-r zm6-=lG`2-xKIi?e9Z97L$cRHEgcJRR9jGw#G0Jk%kLhSw=ZF2~CVu7x@hP)03?m6ueltG;lmU5=NHg}@9aa#HpXM$c=f3jc+e|{YXG>xcAgILYb_M8W> zh3_JKpp>Xg*s4V)yYe26)cM9;? z{sf{~Ztg769h-4$LW%lwVsk_LprMcY&Sp!(dlCKU7pIhz!!EJNGZuy6?C5#VCS&G! z;7>05lS)XsK|7%5r&xMajiQ5vt^acWs$r=&9oG4%RnSED+|mV2K6K*y$DtvRq9ZpT zptA?}ipV|wo)wzI)EEc+R@GLq&|0>g_-TO(p zV>PfQKC*(CQ7ky$$fn4C5}{H35NtavDfqdwhXuNpNsKI;L`^3msRl>UfOCIkQ)_0O zk`9~utM$|+DLB%bBF2e8lY--G7~#3r{XnoX^q?hUEM+r%=|#c94m$VW2upyQPnT$xTKuZ3^W|qO+t45d4ir;MV^hdgx@~fVO+@3<Zt?bejWh;XFp>n$)O7Wuq8<6DHTv5rm43!* zJw%?T>j(wCa{{BoTxi#4lrIHBqb4PN{}Gn)B5jSN!;7*pZb6jH+$ z$w1yyMwv?U_wRz@NzPfJtNMAgcpf)A1iavf@UnF0ucKTrWfGSX z8$!y9BlN3(7_?@wrHfnaS$Y89%B;V6(mR@$EB!kPF1t*Pf>-v?fj!2iz(%XMgZPqI zY`K``KWubIiGx;Yz@c5G&j4xEfKoHaEWlI5ru|Fdee}(`81P#1J2Y9pgdERTx0{gX ziyEBqu~M&)NY(v!Ik%WC4~eJsxBg@XgK{>TAH>ve5ushBJ6JA=8(+Y2UA8R!Ns};U z_siAg^D=+3Y%fHeL^j48w#0ZqnmsNcI3K$>WY?zvh{VEclJq`%oEUE`(W`$f9ts(G zuPJ6TPVpu<8-Aw~JX$@yS8-=8JpSq_ zB5|_o$G^Y??ExmEY$hI42FDk)?5DB;E4ogvv{@K2Q(O2DETfg*4?%el^$W))dUwQO}Jq7QtqOYrro?kzeBGiVuP zFwh%VE9+7ZQmZOgZ_QOa;J!{r)vLd|#dLB3TbTuIM>dpj0W@1|H#BCg_{3CPg|k=A z=d_Y*`Vl>tIi@&mS26}=I1R)$W2e$r#8tNk*jHro79?s+FS0U4hY=v4o1h@gY(vF+ zzQF1G!pQt=Um@nksy{QMHHoVPyupRNK2a}Y1YigXGQj8cl6V;x1hXwU{ei8(ppid5 zJ2pi$bB8XI_(6gs-{GGiOppKL7xd3KWC?F&Om{zLPS(1ND#*mOqFh?M`!cwc&qsY( ziPPA@O_Ewn5y2NWyIWK{BDse4s?3YL)Q>9J5TVGxz^=jxl=W3_j0@b8EX=@K+`XFR z@c75rw?m#*{0+>kh55UmS(4aU(Z+QhP#1rwWcl$5n902pLt@e5vnU|Ld9QN|h!c5$og30Go%Wo8-7>cc6{jvMfx* zzMc7mKB;*gp62H9^1qxYn|ot@Hs*KjXR*1;XSiqC}gYBK{f zl%*9E1dR&D%vM#l==xWAGu2BV!b_Od%oj#nTV(0Zi`awJo}~vlTA`u>f_h%{ z7cS}LIs^F?x4w+HATVAOBeoCqkgB+JHeF^t>*6y%drAQ&0li zCq)g%H4CK|ZX-2orDhDa>+x2y4jlJaKN0D{acBMJWOBUuFMW5-!rj}vx3}#Z6bW+G zsgWLzsN2a8CvTI@lcx$LjnEIFN;zh^j5#`W_t0#BDVSaWRl&LRcUI+v1KG0_Vi+~) zH8%_niu`w|Tt>nSRREy@FAuA{QnubizJ+LCA1o|v34BF8rk;5Qspj~+2bHy{M_r=R zzqCZaAPNeB)4!!K6JrJBEFK=ivGR$C5HZ-~@(JdH-+QH&(Ts%m5_;uz_rf6|uQmpa^)wkSXYdc>?T_^@JK^S5W?1 zL|<;VX8j4^Ipss{>yW?5+gVngir~vk*uyOKyvbMob15n_S#1}ubJ^g;pxN$``;HMF zDhN=krVdb=i?7hqd#0RO#M-5)N@)=PE0?rNnire326Youzjjozue^dPe#Le!w@8i$ zwgL&}i#+vZt+A+RZ3fuVw7!XQYVwIxREAlB$(?BlsqBKdE%Z%{s9- zQ-vm!qlS=w^ZOc=GUpZbE!vVp$gGap?o!#BwjK2pZU%Hn%IVaKlWAmGnHsF16w~c* znc~Pj!!SJD6g;NE8%VvxpEI#d=uR%-sdT+r-zoFF%->*p=7!YVf@RLWgp{< zxdOVyYmAcZuQD_WiHiw0Ra#zR>i9JtGXh!ZeKreLu-t-vRWPv@rhyaLp>|4cYm#k z#AeTkc$rn-rfH|`YH5V`c*Kk!Ms2@eNcx7hrE@9RnA?K)bj*SQ2MxG587AY4cALZB zC}|uMsWov)zc;+vjZRh?#Ea2Fg&$As9t?kTTxL*gazRo!5n0{FIYM|YO5A7}z$S89 zj3;rl+!ZAaMRBuq7`gwOg3#*g6KiGucmMUicNDDxEU^str*e<`zWGmDv3)@mucWgt zDq-s0**o4XZw)9a|K?^HF`p7`h3oVBe!l5&l!d5TcJ~h6ydO~Dd@MoN*I%rSCpjE> zZ{$pIZdvD{x4Q{(j3AW}ZThK*O3K=XpLNNyL3#M>;!!3#^UKjRF%= zb90(Cl8wYl?zR7`oo^rIRb9wd!z0{ZR!miDbJe0=vnaZ?SL4G11w7*rl8~LpFmqZu z(qeQ-b5nrrD*KXJ-9SYWHWhKzu*wAKHaEQgj5qY0+OVA=`_HwGbe{7D`^Dzvk+=e$ zZlrBJOq#99h?QgT3H=0?8085yE`o=WjS`6-&=MvGa1vc-(Fn8{v7(uXxmb_b65W4+ zruuXoj6gn(hXNs1tcAxFm}V;~uSLJLjzibbX$)@7LFE1em{B0&&K^b=2JgIXAIw*C zvAo@0?#wUm&NS!z$^fPsT(P5kB)_?`c$yAbC~%NP*{dr$7l53Zr9X|sRw0E1u65bmh+@us)ofKpkp&Hu zyZpD)E!u4ocDCy0CGF(vYseaM_nrM$vnh7lo+WHLc0C*VKcN2X{MoIlS!e8o4a$6r zs;#r7Q)@@|E3x-EMd-Y(MM}*^|ACAxXZ1~+ox>}473DcM&smbZro@V33`HEnY{Ad6 zbj#^G{%z$jD}(r{tPQ(61Z>l;lNy5UN}NS>l7+ynX5H{w(b&`CIRwQ=pf>YRCzL&`(x8Q1rL4(J7RPMJ&ieUx@D)TJPnZQgLk=gW|JN8cQAQm=Mc8 zpI9?#;W_qNxI7a@-vboix-^YIGB+%#ELB5_$Ye{bS3hvHdv}C6iD!4{SNVPvC5wUP znSw_XmUv2(*xC#lw`WQF={eVvk4nZK$E6FB-p{}8i(HCgZ3NwSJw%s0N*{W&cVK{M45}G$nchuIa@ENgMo|PR?w_ zQ}J(+OI~M>Y%{9e8AYw()MF)4 zCTMNsmU?<&>>OGx>9BRb0<~^zYMF6>^ZT>jIW<+xtRX0zjaNba9AJ3RJ|wx`slQtM z!ECzEzu2Sc{GPeZ5If(m_nWM3-X?YEhKTdI>tTh=uC;VNPE~S#=+8vh?RWnegCy`7 zQgR|pibC}o{M{x*Tc~JJO$sYWae(>N^*wq>UX~sfq*AnTCO29vs+@%CXeLPK4x?Hd zhPutC)m>&Bc#WjGNhgMDp=?H#^lwz*z#%g<@2ge-TT6PU3_zoFu{b6jJRpemnXGu)C(P(_OFv@MZ~E%(J1nmn&=mQk~(Ue z6IZSDP!djn?e!KkTK1>~xwN9}xl&fNq9}`5QtQ96kpR+7Eln8c?Ns)IB||iF19Oxe zXS4(n6*SBW=Gq0a<0Dy_+*#AizNguCk&khc${}L(&fE>!-m^00`PN>YR5v(aFd6hGiN5hDlX`zDQVCL)E>>zADLu0We+`0xK^Oc}R3%4Qyz zP!Z~&;bP{lA_#6m@YI1!B0#F(qeV;7WjG{J<(|8$cq&3srB%5D2xwFB)EHtKZcSLQ zrUU1bhV>M06fGf?;PG57d^9K9Lr`YFCc&;!Bd+KX7B>yJHrQ*97te3$83*nns3R0; zPR;Kel=k7;!RwhU&VGy4O_dY-<^Dx0AKTDB5yo^SMTyaVs{0jY5s2ikK^RVsOCK=X zMn2=hgvGwlt#X0_DF?7GwBgbWg)#q#g(ypLmW~_U>OoUsGX5HwqZR=oD`G4YHqVWR zr~%ZC)XBEUD9Ii@;m00Y1%{G~Daj_^=^!AtEJE3kvqQO9BWQp5YN5Z~?=o92g z7`$p4VnLN8q`{C5*2{nB^Y`NI5bEk8BKi{{5zJ4MJZ?ZUOm6@jhG&d|$Z}_&ffilHXdZUYqJ;H$Q z1?Qt(wVTRPIvK{&u{ayiYVV&75!<}*(AS4Lsc7&%*Kj?+-i^|;RuQW8oj{r#@)S*V z;cfKhLdIx=xJy|N28 zhCR0KSo?PiCxg=a?^-y;fxr@zPd2H}>`hhwU`e zZT>Qh0x{Gm;9JqsBHw#BCGW!{pM2(KGu829LU@S_+;=qTO_eP^U19@5WlOR1(kE`A zQ<26D7z{?>=X-sRZ*H#Cj^5_~U5{+;Cz6cwe#Bw4WylB#=hM?7^EQ~qH6wd{vW`I6e~D!9|-D zLXt6|WjO0i%xhf-OX8I``20Teq0=^1oo9~k(q=&xgv8O&< z9NZj*RGG>ehb>cXxwRZ9i zM99cHCudF<5}XLvCn6Z4QgiCfvQhVQ?pR<=%L?~G5HEh>R^VBeCI5;5`|Ij$OYfWe9g6n^b%%?VGf~y)=y1IQ*Ugc zl?LJGton6YOzcH_=a2w`3`5|DgaDa$zeRaxE^=1j3lE7GYA1gymCyBw(AB0wxK{EqPXky-2#FL8tjGVl zgw)P5LD#lQ+z7?3b$`qf;4+pLhtvl)ukgavxfK%*ztk!3`h&|$cmhS3L_gn>S9x# z#+slzKm7BME?=UwCo#X;8K>T+zPFv!p(d%HIqels$5)T$ivUeel(_?iF@%wGtnaW( zNbjdUKEA9>07RUN6U=Y;7?tdyGEw@gq%FPge@M)o3FfZ1pY*<^cL`=2PWCjqRApQ6 zF&H*t33YvEitWmt6TPdF%p3gJI{V_aLSOqR+-YneQTmz_gWa(h=`{2|rKBmoz)hM! zm&A4_xDjcqX{3YeoTXT&+WSnMC^%W|_?%1Dyb`7QChD5QH^b&Q=Xr&@NxPs)Q@N$5 z>&lmZp-X=8Q5S6O+Ld{@!PG#-=jWlZBUk?1WHt|%rPSFH`P1T_LjBRL475aic(O5m zTc&)XXh27iKxiFV5Sb+u#5*VU?5zaZxAJA0Ki5>rr7@NqqqLbhTDq!kF>FRjQp)6u z#>&cF-kEBLwMIpahDb~`N(UW$m#-$Z?C^g~$;HXm^e_c^Pp<|u*U6hY)A2mi>WgNz zhumLRdg`Z`dn^3?$AZM<5+`1lLBmL{l-9rkU{@ECe^2m0AAPI2Vo z1gIX%nsKHvmi%o(cDZ0~w$4@CL4Nnlb!s2*8F-&o_g~;WmtX^DWcwS+a&gKOc;#WL z?Lk`T?Y$_PLS%hC>|^M0XiL$LcJ%7?diLOeMaJ0A z+xO{pcEe9a^1Ae)bg1j&cEjA+;Nc*3_UQc%==b={D&zb5`YLGBt$jRA`$WU1vG&SA z96k8fBP`MPnGYG}fFW`GF*Ho8()Hojc6E7E(;kVdzB_tzqZ{6K`{KIu&hn%@F}}Fr zvhn`-ta}kwTL?v%)8aVjY3cg)LhAyF4%c8@#bEyU45E?uo#zeKdg9*D%OU&y@osBq zz2J~8w>p*i&$HBJhLG^b%Nzd~Z5cy{-%~0v-6U*h@XlgbZftI@m$0`+7hl)A6o*)H z|BJ~*7)f1ChoEngX5`~mUsK+)BBfCG|`!SlG`#_o7r5?)tCHyf|sd zm4D_}|KT1g^dKHg|9KTs&yllWuysSoI20Ea)qV;oSFYK1kp(l-cMfGnI(SFkMBdw; zfpg=f`{)Z?E|T<@mzC#KOnXyr;cU(a1@FCXtl_jC+TQw z$vSboVs*H|xZ3Fxkf0P0KF+?rzU6_p{pY(>;|1cE_zI3OI1VClyGFg|#nTo`0WBUx zC>EJ#HtC(u84-e&_J~J;qY$QdJ?+6s%xx!@It5uXRv)g1y|tmYUlihW1@JcvzJ2sw zYKc0%5Y)yo7Mv-0ZIuh8R7pU?ZF6cW$C$$xGb?YwWL*+3dYNZN!JGLTb!WL&5M7ju z253}S@sl7KDR@_h+mtI%MF#X$ATWG@@?X`pp2`D^Az_nq4e^82wQ}Kww6!8Ni-2=6 zpr9M2a202|XNrBYJbT9vwjfSR~y)|4X@_uyT%X)7PmG#pBt2u60fq&pIZ z0IR({QbN}7Kea73@J!5Q9r<+p8o0P(=CxjM{Sd~&I>pNaR(ev|r`L1~ZvjRZYUdTt zGFk7ys__hrF9yAFC=)&sM1@i=y`|po%3&eblRLU#N@(NqgjMK7izLtVM^Eulge5c* zYop5&PAq){O~S(j2&4>tBV51dP@{)VwGKZ$I57m22MjQ`|CYq7-Gw2*z(y&vT&AzG!l3S)C|=YKt}YeE-OC}G&`-x}^BWfGkZ#PkyJ;J}jzsQ1 z#fj=J7BL~YR)q>m^uqejyc#6w4?UvcgwlG~nNeJgX6sOGAj(fL&cvOVaR4_K(2t zPVZ5ypr^NXaF7XMLkeiQu(faoYv3|Dnl-HLma@mU$2rJkoOqC;7%KS6$_R?#lQHjBTo_bcG4pk~rHf{Z_WkCx40lmovH!xHgP}t4u3Mp zum0#ewQZQ8%mzf~G|tFbXY9R7dZM>6HASStU~f5Q{9}>2{-5I2WW z3Yrv<#+|cuTcm zmNEt)>-tg@FPX`ixUWjgBeyfk_s8PcF>`WYO-)$dde-pvcGM;6t@Q|iYZeHupOR7M zw$SOVmgkKDoiHP>ZlRP$ECE&#EtutJ z@Xwyo5bJ>y@~hJIIr^Riy%F8A^&dj1d8kq>dibuKGxAQhMO!#D*?=HP{3}^qju-=O z-~74im0`u3?7c^e$6^icaplq_#%{(xwU!NcPr ze`iK~yQ=BX=P^;_HAy0E~evU-MZ?hTZ%RH~^#X#)R>Tw)r)s&2UL zsDcC0^{g`0RP`U~EZ2{eEUo?nvTu?*eQ*;9}`)Y^fIE3QJVP8AjS3BW&o{l_<1i% zC8o(TCdsP-v0$BoTqfU~4p1hmo~hB99vprRRCL0T6B&=bb17<4;tl@~w$Rdy!nUI(jQ@`KF)dCb&b zvEf9)3SI2%&!2V2Ws#NbirzYvJPtBM2(k*e}mw@R?^cSQt;R1?uY9<6M+o9Z+N8CvaxY`Fqh9o+1qeC~0#@ z^7y2n>}-Y9>jG$ZvkWItVVI+`D-h~g_WpxMJmdu1VeXNCrY=#dGn7q)25KG{L!#^= zU3P>rD6Km;fL&2X%-8TL_zdp&FMYL3j;eIhPJaG6&YKWJ?z8f|;k5d6N0Nhz4LN_X zXx#Z`Tyk5%b>^aR;iKFyW$`Nng0X?=Dx-hbgId{!Y6hvfuZ$XU0u+OLh^~Dam&BsU z+qnplYcLj%A%S~8@!J4)e3o%>vkup>aFvUj1+v`!J*(fUeooArU##+x3B#A$XeYfo zz*ePO91!{4RG86diJb|XVpH&)Y9tI=N1pxEd}&>SyG;rWPOrRv(N1R`d9z;Vo;cug z<(RzZ{=v}n;zhi&VS0R#nJH0z;yOR5*2R^YrDaaT-QPa83iWwo_ql3u{J7xnQoQ@Y ztiburEM{X5uz6X=>aK~|wZIlG7@BlaMm0*^aKld=5{R-z^>FHAruG{hSXqAEux0sq zyi#X%FC_G{@Qt4F15foCTb0?3bpBS`g@KJx@pZ?y#YGNczotZX!44#TwL3;QE;xBEE%dOL;^@VI5;PIrQJ;~q8Jq4t{q{Bv z@JWQ?!~J$}=A5uA}!FW0Eg=IiU$IxrwE zFD$5ML?&HL;RKCB%tx=kU3;5DVlH36-m_z8@3cS-R!<)>tp`OBq4GtnR&7%TA$*uf zZZ@!I<3|||z+`9wm~V`_L&)>FM3`+a$a*2VWqM&Ig`W9IsZ)}PTLPzU*DUI+Xr(qS zlgSwuLEH%+Uyi?H^jun^XZp)ng%JrAyxW~Nce3eAZc~d+TGD1?;}E1mnI=&c6Mz38 zk+rbm;!=A=wt{^0Rfy6~sC@KNZLeq|4$LfaqV8&cO8T|cmQ|Y$*OLqX-@2N;p;es_ zeFL{s+=c4-;HqP-PjEzIZ9&$R#gE+*Scwt_&Wo|(B7m{NJ5lwx*HbhWJi=-s@|QRgO%?r#SrrvZHY ziQJjFHE{EqvCGuRkkj&@Sz+kOihYpz5iA&CJMJgR35Ja6xufpTr~x!R#oVL}Xyjx6 zhmEwZ2e&^APXpgQJ7QW^!RACT6u2H89Z^F*Tv^a4%=BvVJG0)c&$kR8F}JH1hA*vI z`}3wcCHp{u5DA>b?Lsn1m(h7q3Er6*$!QPsI(77BH_w8AT!R}nRXN)tX%A)Qq<|c@ z4V%Bc=_R%y^;8)Y72u+$ggDj`DagA8)10$eeuuf}ALN<#szYKy5oY9{+DOL}Es~ll zFMd#F4Big1yy=Ev&r7&w%JO7I$X^mCN35MtJWE#lv}dX33G+{Fq9Y#2!AczcH)k z`epqc;+FL4H6xZswnPZAt@+zcO*VUkRMF5`|5+oR9VGWsg>Ob(+SZwK!-l$SuM{$= zNb+|Ug5xL7HSG`V9X5m`10D%58rgKCnHQA;J1lMw<#W%PS56dMNv*!R(6!v_B#e#e zqn&+EBStR+f7?xd0`z!Ov!9Zj^3{ODm7p-3P*^$M@59VDD$Ql=OzH`sK3pT&Y4w_5$Z8HIh7M z)Nt-dnXqyy$+zxrY5PZYzfgrTtE}g)xL%e=t=!ek0YAfoBow7h6){Zl_4zQs^KNnF zh%_k z888ZV$D|*>?`??%psQO`B)6BW?Uhtb>iZYAS?l`vay| zJM1yC|EJU+ifkS4+V_K$3zX(;garC$Wbcos?`;Aq?E7<)B^>ks87m*;Q?WmgB7AYu z4^#U7D0oeB`T7+&)56n#&eS;CVy+TQg_HRIIwL{siGR~oxNWh2b>y=Y~LXmbS zR#%_Qh>IBRh%pJ0&1^Galw(c>r>=`?-6u0bLrNT$rej&6O{(&RE)pMkCfj(qyvOLG z-z0kcV%^_fJp<*j!T8=V)+`L7@D`ZERsBt#OiyOMu@S;K`q-sxFc0wAh77x{7SAHh z^gB8W;y-01KNPjokJ%Aj#Xebtk4^?5kB7$`&sW}1RBAQV>n+XT3(?mGuq`N{Jp zZ9W}1JdKr&WmZr8htYH!(7y-!)X+2qLE#Cq;8!hDsOl^HURmBE#3QGFS0yT;6xQwGn(o^dAc!>-}4J=UK@ z-w0B;+3$8bip*N>LZ8b*;pi)CeHa047Jd`bJ!$KS0+UgT&fFA}M#O<-5zBbnISfbL zNac_}RO=^no12dfc%yLjLEumZZ(224fa_0W*bK-RQhN=Y*?}x%W(l3INyjl6Z8ElH z=8nYA=J71)hpB^2`30ZK2mykstXg?{;8FWTD>`NS`P9#r@f*gAT?>J){X%U1iwT{T zB;LvJ*7_32taU!v+}+)cu_xG%?Rb$rRdoB9Ui|zcs4kM{dlAq#qTXbqJazbO%!u!n z9m1KA^taiXKgMk$8EX+=xrZcR5-Dz%-znG$N4VJu*9-QNdu68c+I@M|jIjl%k|Q6w zX{h;|u?jsyFq@MLs9Dg%&rn4 z`aIpxQZ-+62hff*8J&&lL>ke*_m|n?3iV1PWzHnU*bgI{aqkJ2&p%Wl*@;U?kMCu( za0k}h#54n322r=2B6I5OwC5;&^VR0YyeTHPb3%8YA0M3k`g|T1qX>yI`}3^{omPHE zfi_N^WA|e#VKuocoSJnM2)Pg!XJ7~TB*zoX@-2@exeP%W#9XNAvqOOrVq3^s^vjr2 z+bY~SJ{ruO8|Qfvd3#d*W0Zp?k%%aI&MjG}&kmF@)kT){8{8|KUi&XSk|Y$g%$^fANm)!-j}p^8n`HS1ScJ;$1(8v2;<6 z)Z>&oy5bXO*yA2 zk653i+fsL=>IYlc1PB5aHE~E5U}-orB1HU{W*%!asb;!pglLqTFmyOI)XyHaZa%zQ zCku+(V^A1SwvLD!HXXd6e=?E{%D|2OuH+Pl9F1rm9O`&#OsB~>va@TvEqC1H)HiW0 z{q#0r5Onx!a6RyQz6WNY4rKWAS;UUfEY>#`ey_7Djg@|ZAAo| z7i_pkA^l~+Z~ZHL=IqF;2f?cvlLK@1dp1xxWY?5j){n3p3te1}{h+dmah4?EAD<@x zYKXv0uWYg0>ii!jd_M=W=wF&sugQsBhyeFN`S7Edv{LdGfd`44)$28CV^89*!)x-$TH<=bWKOmbHx9Oge!`eaca34~xG>#c*-!OOpfWCWYFs?< zxAQZd<`4SjV>6)jzplD&m!|a-s9O%iuiJcvt>><_+NV)A_Mc2!3ZHg=a>s40bA1vJ}F683G-c z7#oaZ=uP(@j;pWXg1Ow+)F%h*c23*7G_&LeBqWtu%Lw!U}0Pcp>wA?a<%66Fbg>TNfxc0dwoHiG;t?)mA zkCvhnxuzWVF|6+^IZll5D>0GY^TSi)hzNZ&Z1hJZ?e}=tjnb*JOzYkSsN!`PRgBas z`|r9@t=b?}r^4(g@><~2xUr`y9IJ0%uOS%>x4~6`4S)s;9q>CD6T2VV9>_s-aQPh)T zxx%`4ir@3Phb(nLz%Iu5)s{5i?@20CJ@hqb+uJqG^7{)yVGp%N4Ax?V=eF5_S=mX6 z>AS~{fAF~~iknlQPtA?GA&xa84WLB29s^=A44GRt6Wb2fr;(4*qt9CL_em?r zA%T@6i!4@|j=1+wY0#Rx%r~rcxW;bTLxQNn$7c3C4MM#{ws|L`hMOrMZ!8)?M9X@; zqOF>>*S+$*9jVv-#J>eOGfnLf-1jJCb4z3Bo!fdB-vbu1c|`S3R_9#l^|u8qo>hI5 z`-==>`He3;?f~vag6#aRdpHHW-S5@kksoswG+@#F)MLP%L(~9PyqxR@M4$P2tbQSD zScn^SO;y&t^A|^btgsd4*g_bS9a z6|7@-?wxaZewNw3^7WS2wbxw{?xmNH0X7S)^mapRND0&x-ww#YdhtZjvV%hJ9bX*T zx)$}E6NQ1?)!Hap^#~@g53h8lz{j!lWY_uuanQB(4x9B6`f`!=ao4Dj{!0Buy};BEpjVd$0;O4|>@M~SZXm)} zQN7Lw_cHef(gab|e)=EchMZf~G~n{SQWPf3MYq=@JW-Lk1b?lYqz5RGf``Kd{nx?(l8*E6ZV|!UHo&FDz zkM1rp|27;0`PZbbOIdQn={Jhvn2ghRFGT;ymZjD%Yhr4MmgKtxt}O!btodH;n+%@fo%0wzVKmT_3( zm+?3F7|FOQ>Aq(JrQ75FOn>W%O?*nfncB*YwoK zT)Nf2JdpjDPhqd*+`FgB)2T}za~H8*Kzd zQf-H-&2pRbK@f|M$?uXIL)wK1PUG%S5*$UO64QQ8sJtzLt&UdY+tb-U829&l*lD%6 zDvYRxB+q6;^lT+=bwXHHz~0^nw}kk1!bZ)}{(vUU`DAGoo+*bLa($qjCSET1wWJGxgH`A`uB`YOE2&kf%&0GyXVZ5j7Oq|S7`X$W_x=Jc%9cy=-!TG z@dQ$6%7n_(c`_Z91AuA1yh~dmM{DOf#B{g z!QCOaySrO(cY;gs0KpxCEgTlX-66QUyDZ#2FWGx{_tEZi`gV8S`&NI0Sx?QU=Bzo! z`2B0szONe?pONGN-e7AO)qz3DOnlY&qPQkMIfQQlWQI2b7#wk1D1@L%K z2FrVduT@qd^YV!p*F75uyP z;h2nh#n-R!871*5OiU&qQ2{6A;7eTDb^JjWMRKtLVg9h8zd5CFAc+l`Yu3qEGm}o! z)Is3fr;F|lHz7&g{fYf~BOVf$N>&xuCM?LQuTFZ>cpnHNbXM3Ngi{MZ*4)rKBA!cz z?WqAYkY8$dFxSv#`eP>&aB zFpF4J*ia_H3$HgXl!I0zEyru|gj|8Aj5Pc@-UnXjZ!gi+aQf*|Qs~u-YWT5TG?0rv z;%xJygQC9PPvtEDkY#?s));3Ju0uXQq%d}saUCGjyXo~!|0m5z>B6^peOebc$ac4S z!;f68j5rJ&!1wiN$cpt?WZhc?uTM)dx7BP4Joe>}OQH_hPTCi-30~!GMRp8VV)<2q z8Xi6);eqwEPIT z^O|dL*x`^TMBSlJOCNi|3)@<~Wd;i8ITL@Fkp#zsrQ=X1OGt%&PW)g$2+xogYK$)) zLKFFEFzfZGk&s@EX1b<{d8HgVuI0aX zpRh;+sMiNH*ZV}ObrHH&Kg?tpq~TVfUKgi1M>>2HPg;bz=G^sG={~fk!69ER6^11n z(_n8F+1G|KXE>x=ix^$TE*8UOxF9Sx1;FZFeoL(Y>;4pQN>!H1aQUGetC}TI<3J>c zo|DAJu*#~Bz&xjELAWw#KCv?aYQPJ^Tx4gd7JMgphK*b`8y6Yp2+`Ozf*tP{1hNpL zX$BnhY|r&sI7UqO%X;^XAsAzKboxZS6FD%G zeuv>=c7eZvaNU8wu|RyrQ1^ryK~)|zLw-z%LszyE-WzDe!>p;Q@?_SF zJhJ2a=Aa?asBn8}LDR$80l($@h_Abyo?uRmtRkwhL5G$QhfdjX{ zXBgGN8+h&#L8Wgdc9|jMS?K~aN_?$BCTN^a#HT1qtOvshw(yFP>(;G4xfO|O4W@G$ z0NSt8&KsivmMn@3ELZT`lQ2pf_6TUX7d42}wBj_xsvuM_3YnP-Sg`osLn%69 z^>(xGnyu<5Gvz*v^s%sMXZO zG^u&pG(9-`__$y&M153cXX>AN1H4LFvm~J%)+JGiz>lL8n)PV%m!;IIb_YF1M=IwC z0Uq;h&O_Z+{k|A*aBU1TBYnzM0QCc3{>-%>g={V(vr`JgwT6|M2obciX^Z2!JFlZM za+L?u5)04sw#_OgYE7t&OO3;Va}7~uxU@6g2twS#g&)!6!jt=KXalsd8q->x?O@4i z-=Z(SfzOD;L4|}M_Nc<4ay+;5T2>tP&B{sOtC+kZ!ynp9w~%=&eRWm#-XGR4D=Hkd z@8j42VUctOTXB79I(U^ za}DS7NHsmvBAl|mR1mwccUeij_a-4jV#GmucpH@N)HurAnS2P(baaLKMBwUnw!0he z;jX!tf$ZH%GLRVKltU@Ko+kWPG{XqAHxB|J+Eo@SnUjzu^^VdHk zKoI_n013(`dX&mFOuj7B4a*efMxq<$|1#m9R~;0oTQk@1`<9y$GbFT_JT#`n(ZRtn zoi<*(_L&I*DbY^%lLK)C_zu2K$|Xb^)ABB-!@3}qRJZG(Yg!>WtDMKm@u4@ugxq$9 zk>)1{!`HU4Du*P-d7ali{eY>ju#-sgIy*}1ryEh_b%gXS01c^v+vqMAk4N*&pKpR2 zBk?A(-CUVa?sUqJl9Z2YhJG5J}1|VgBwgj|Dl#YuS;zQ}}_WVR;~6almd_N7K+J zlquOlab9~8vT7TQs>v*3*Z_6_dVD5?pISoQB06}c< zI~=V+(bf`Nl!rFbNn>G$Bcb90T_8%n`Zh7E&biTY-SZ0X2N~kY>v6@}w70@2VkO3| z2l0{yDqpjK+Owz=EJ{v6hTKkWXv0YICWYx~61D=!z5SJ}dXa{PmAyBgp>~j*-P$FM z0{ZJS_ix~4bPt9LD+nu$BFBS8noSFVHFUi)fz!*(fkaa-c}WJF5>YV9PX(vqZcU!0 zbbF^1SGYca?g-QSr{ojhw_QZuuQ~YGoPrD?d;!{%$UI61%_W7nV)V?YMN41iNP`hf zSXg_c7?rh01B26a7T{*KX{>-$38*wuQ0@X4@6NOHvvL5)&_qYO!B2uhM3lJT!4?__ zz>HI~CB@eUX#tLJ7K<>l@X%Y)&rqVo7zE?C)->VE>Xz%xvYS-=9Ki#X1IHSf3qA6P zl3h~loog)0(_$L;n{nu55c+YO9j^#T7$#p0wRM7$bD|AO=DqT??gN(uJt3#y$z6D6 zlYd;aOmp~KDo57l*yM)PW5BzZ!2V0zbF)^|U@nJ>R3BTO1VD;Jsut4$UfJ?kJs1!rv2^wWXD9u^e4y|* zC=DPO>qfdmC9`Gs&c_4kd?+ML-O$sBOnOa#@s-$E2`v!TFM(hCO#Mz%a(%%6q7`E8 ziB|q9knf$Sk=Wyl0-6k4ZF$!knru$JyHMkL5{_|a79JkWQ}JC9TzN(BR7zHrvaXN& z{Vtw^vPDvsKrOAEMkoX+s=HSXC21GKm1r6Dxp4TNF!hmeD2khVj#X3h3BxqqPV_SK4-fl>}r9-9F%`Rf}|fMR}~eomQeDD9zg zE2*3w70PAcp2iLJ>Au#2wG~XjcnaQ9O7f8G$P|V-OuAS|#fU`G;#*;u#t5}8HB0R% z&jcrbnVl0(@Ey$!Ygq7fCX_{>K18I{C^7CdXQY5mNAa`ew<-&&$z!Hy>F5n?gDR)g@ z!FSLxr0*no#c(C+3ErL6He+#o88}os3T-)R%}B>KlvcUc5zi_qzfB=m!64{wb-$LB ztzx(-@F9t$Ejtb{{HirE0SFN+>Ekv?Lwd2K;g_cKKq^VL_NT7nhyu z#pAnH8dupW3=(B813CmXkEdb6iL-ILNl3s+x~>H*qca7OcOruAgx37JHdcQio1yr!GU0V4zQ;K`Fyur z3vFG-kV!J^mm(!H1y5&a;JYcsdp%Mc3sGJDFeT$TO^Qsd8x zue(oA9fq)=fR8^MMrhoIW)N9u%}hwYcDDdZmktU?y$Ldx@JpNvm-nZ4UA%bi`R}U@%I>?LL|H%J%^N;!;4fTJ={|I9J<$o~zeg8w~nfIUa zKWhHe|FGZuyZ%T1pZOmW!T+fL(NO%G|4|74pY%Ui4kXq;$J*KKecC55NZSx}dHQCv zTc)>8PZ%)}OjXF|yr*UY>HIWmB(2#jrasckIdG*9u86!sqsdpG)!Y#T!)Hz6K6$Gs zA(pmjVxS3Ym7V1Mky!!(o_rT7;c!_mDKf9k9AS+Cokm_o+Q7Y(cU?K1K5^v(vih{v z_6noU`2<2&Leue}i;CG3fJ8}p%q`$tYFbIm;ciV+? zM4cCtr0(-xHpi}_C068E7<>B))BKw%3@)2&@Ok7a+bwtnEIea0v#DN|Fg=voiVBfb zoU-L%2u&8DvU@9atVp2Mr6s?DhB{V?a47E5-Nqcw(Pzy|%V-8S!IB@B2gCd*{a5?r zhE``?_1s`y4k>zOEc4L7;6sH|2nDQHwYhCW4bTq#91Xkbxu4ic8igS<*2ALQU7_6p zXPmQ)nh^S3Newv?I6jNB`g)VAZDIRLmeBwG(^FD0ZZu686x40GX_-BcUUzVIEfWV` z=PUi7E6}bRyGkwb1+@pb#R?tgp_gVcCu=~CTRH`r?Bh5x&I<#wXmSqP>=_Ii<(HPu zE_0h}`>W10Saeg}iJC-_waKQYER}rn61Os^?SfOGDw$})DTt#+2i4iNWp^1Ci4Q*A z_ZOvBOg0MTN8srQh}&40t+U$dp z+MvZAu9;q=H%|MeHVz6q0_nbxqzf_7hAKxbW}V>kDag-iCykxvt zgf2x$zH+cZ1SmBEbm+lyjEtCKyhD!}@3IhT^kPrktTI%54Im8AVUIdx7-%)PT~T;X zS^K8wEqrrLTdDb~aHu8NAcUPy@G(R5?$tM9o;=8&#PPvi&<}hS0@H%wS>)B|Y=V%9ztcHAFw&Xy9s^&KKyC z7ZqGF!Ao4R3yH*%6cr45(g%kuTL*HW-~=|+NLRY^3UZIz5otiNe}2LW;j;QBPrk#4 z_N|f*N)+r-lb8AZw~_)Y<;ppByGw`919=Q};6f{H^p)fzIT3cHEU01etCDd z+I^qS`+q(^++6s2gPzAi+j(34j@iqz9{fTp3$ug?v-$n*hPn@~Enc>WXgYt2{+xX@ zcd>ubdfvHTI@me8xqF)S^7I82|Gay+yK(cp+w*%$Cp95FEjb z0n=*Z6S!^T74Vr||BPFTDdnH_;``xdbd1peDayFgKTuE9@B|4-8<+TXY~0>HB;vt; zgAiY8>uzZ)`5jp_8qE8yit$IIj@AtQ>@|bvuWK6{uj{;B-H6%ie>as7_8?MT?9We_ z^{rFdVywS=srdH#YQ|0cb8A3zyT5UJTbnSaKt>j!ZOA-XgPdvFYub@V6#*uKYXI=A z@Eee5moNA8++!Yw^XF$UolJed<@WZp2Sd*FHk>EIV7G_n!?!A^(nMy?HVZ?SAP`c* zKyrWK8cfsV3`t3GQ|0N}E0W^RvGP+&?LGO43fXj;w0lULmd+=WBbem|p#m?{ubQQ& zc1@F>_x&3~d8pXM=t5NP%XDv`*^WRP2V+?!AheP}>(le_t4w7>qB02TFjgNWzsX*r zHfr0~EdZ_e^UmA*5qxpchWjS`W{Bx@YHh8ittmRZ$|Q-6|16n{PPJN=fsJXpWbw<9 z{k#3-sr&L!*qy{MzRzuR>K8-FQ+wUXtDpl>J+6+?Hxjy_$Bm89y+TI6L+yKG9K+Cc zJ2eryZwT*W!Q8^AK`%S^?&MYWF>6H(5JwSW0VZNv15-nJEKGIno`d;US!1oCdzGR6 zl+uAd0g;Hf(WeHhix=325?nuPm>txf6EO+(3Dwe9vl0F93ETZq3KPi6h0L&O%6t4E zRunTI7NR=9+>m@AEH6SCiQ5EH*`|#evO?J^t){b9JsGHzZmxn}ekSZor;|1xRD_;` z(v{itGC1JNjj|2>ChbVx-cRMblJFozI=P@)Wqu9|CpdMQqr7u5+TyMtZV9sZT`}2_!KCUh?SWJVw z?_hDe3#MSlWz8P~WuSH|6B&0tTNw#l-`{(bT)kL*{AB8IIS{j(@lzsPPmVl0TM;86 zBtyHpPZ3YIRVFg%^y;R5FL}*tu!NuYXH?%J6KRB-fzJA4e97cF=UjbvipTQw^}#z+ zsP{$%mrHAijFdaBMI4;UL??;wsV$A;7LECkhXez% z<=HNg24uTm7*dBGZ!hn!gw?AHszhv2&zb`ZU1KT~in#KSx|tD9>|if^aoKJf7m6JS z?mRt}Gu?c7QqO0-o{yhLK=?=A_8V)!PDaX^tf}~mk1wqf_dbutd;TbH?F%{sp|qrJz*Ip5}icg%g={rviSU+rMf-Gj0XPP5hcp16(k_e^e|J4c=N z$vDfWp?Q|Pg&;2K_vY#Wi_sw==hrulx4F2G_t(TQIb?@4%LQUyR=luBwCrjv6Z7~{ z0}h=x26><8V;nydM0iml$c7*E5--MeC(G&qoPPcUJ>MUH!>`yn_}DtYe1m3(kwe%@ zkf3^DTClgdhNyrfF4aFT=NT{e^*Qo_uMtSxb>Ni1BIJN>f} z)~9s4kY^Egn3^|~(8g$S@e5UKbi@7vP1FJVIXTZ|j^BB`O{-&7O^OisS826~FAeAP)E$e2& zP+M7T0uEif!!We#9b3)useOAfUE)~Kj)zPNjF$d$m7I<;aDyR$ymqL0Tt=)GS*e|0 zfF=)Yl$oj+B48D7hh2ksdzeV83(%fw*Pfz3AfhS|R+Zxb?CSnGeMxeHCqJqjsoqgoC*(|LM<4GtS-D)j?WP2=OPa>jJ)OKp zEp+x?>>fv8gu_+g`8a)vZepplXnB3jqn!Y>2C#mjx8Z1Ble;=iT13rk=Ph*vsJ_A& zR&V90)^x=x*dAkPo_MC`ZIG_6Pt821i>?bR6HufOImDF2=CA_<*wbiwkLtDr35Sw??Iu0TD*iqn!i!aAo^sq;g z(NaHv1QChKQi-R9x~!(`+R>7-7a>tfTUo9AFZFNY&#v|9M+svX?N6D?)Ls}PUUtMzB^Wyu{b*R+F$W{pY7|X+!sr1f7AK#bUk5^llLwngTFY&lZ0<8jkFVBTP`;1yS4@y7@kP5Mw~(dqf|R<%H~cKw9eenfl@KvVE;R=pH=&iSg$oS^0g(>m}>qZ0h{d z`80IwP-AcIr-fNzoJaf7^O=Z!Otx?0gU{W!+0FK#P}mO-8{K3!i>=gNg@uoPFYElM z3dzV9=7}`UWRR}@m;3$$IZ!A;MG&v7ho;jXtOq$QUJA0a408Gy>v@#m2N2TqNDcIg z27#4y%cvkbS=o=S4MNwE_03g@^AGU)xo>DP1u|E+hojT9!;@n@T~39REZL+3F{ZjC z_dx4G{b>1i{Om~5b;Yd80p^0PjFz#cpr{nQl{7GE58Vzkvtp&9M2XO2S`Ic&GdEz0 zprxz~*-}`nplgmvlp5T5MARIF7N?ya#8hf|&yrQzp!HStfV9;QjJs)ri(AF4;n?vc|vD>O}9 z4{|HqFVzDS|4a4QNBUj$h;{#^daQ0({;qnErO+(MtBz{CExq1wJ22SYEjc&bphF&{ zIOr#i@`C$GQ)b$lG4^(iZt&idtd&F5LD+#Bs``9=zT*xT4GXB!jWT^N>X7)$^MG4@ z^*mBZD$CFkE`P8Ald?Q7oIZhXwa3w* z+O{x?RSwd?hDDW-&QVef)_%J-UCIRZMYoP)%c69s5Ia-E$igc2*s}}ClUX(Y4j0w6 z9FR~9uauyHi775TKek~jAX1=Q)EV-_w+*q64p;N2%S-F?xwIXSL}}wJ4UoBM=9-sD zt7Im3I7vaJJh^PxM{TsJBj=eZHt+f1taP%lag-PyyPSL^;{6ftfup^du5upOVpj#N zi>q1}+ie%=L}F@={xNeW=b;zzF{=-@`h${5Zp1oQ1B+Nl^M)a?92;}QUeNadM<6OZ zW{1PIURI+RSToms_~QHV$NCQz)rN8t8g+R4MJ8LdyQ(HIC7p@GhX-{XhDzo$~z0Z_VpIj3I1h`{~{S=RH(GWALIsMyXs z8$TOdH|u6S`R#(#0sd@C>-gyc6#lykdfFlawdb_WZg;MTMi=}fXDyl@%&KljRuJU`@mZVFB@gWn9>S+z}Aqy*3 z1yUa@vH5HZQs>!*?xU{wopkKb7!hc?cGzMKqPJsfCwt1-%984)-s|Hss%ufnP1*zQ zvz$;XGYpSR7^4`i6QRVpvY~EV@c{{@3t$7DreH+j}5^O@wC-Vvd>bB-wNyyjH1N$KuFt3oMU%cP?l zDY7UIYl@LVUWb&vWY>>V(>om5kf& zxF&OYxDC|!@@UnT4Y%KQ)ACcrU(ddL%i*_Z0&=~G=J+E~md{&^OD?nu3U=D3%?DD2 z0p0nZy!;B{0c*0|BQ}{KDNgH>+1diCy>*wPg(#Xf@oZBrM5DIUf|HUeGhM4;GA6uW z@c=4*So5PrSlb~jg}t@C)tockv{R>3#SN+v33g}SP?D58*T;t8q~6|Q3agqu6Ncfy zC^kp35l_#9;5U@uj3Y0Px&i$7jV_k+YLc8Ijj&m3 zBkoCCg&WD5D{K;(X4P+;f3%fP&vIH9al$cw@Z%ZjDL^qPtDn+bQBwCLZ$Y(RGC8i1 zQYljp6rgXKOg|Z7%3Xe#E=)h+VRphjBx=N_ko!0}T#)%Fh?`QVDRWpT<*l{E_Jp?0 z21tKaF`MIb?X`=aOly}peinfsR4X{R<(4~hcCoy1rD?1hVGEb4hDvWqulP`HIM?QB z$r1d-Yf1KN4Qy@k6yI6yvUaMK^y7EG$8Vr2rUuXRzVnKiwi_1=z%~ul) zLq5z^2e}XE^(&r7%7gi1thc@3MP4F8DWNqbH^IIf*OJf8hBb&UyS|3+6A~%M;)38)%9|c#m$hpi0T`spyIhU6!wf9<9uRanK1B7 z=sPez9zp+7+VgwSF>k8xO&;*b)CUhK1vQ__=HuJ=3-vl9_#9SBh#Z#p)T5j4EKqe7 z)BO5NrC^Mc_2mL73<>p+X~ z4LP`E5NoSN8>F`9UElRPA>e2)HL*;wZr4-RZAgxr$ncFaE1~H^8U48l0;oA3*sxnb6&QxaYAEM1>xL@VlNY{nWyuKc65TeCe~>j z%lVPjM+>TCE&+KrcUL%+r(r-(1coM;ORV9{&cPkssGCt+w2Sz!i%DVwM9v*)scx(1 zoE4sKf$Y;SChE+&-FD=b!+`lw*V@XZC_x2F$&^OY_Uy!i+~qMdgd=Y|6V6K;zxW!b z=Jvg+XIsEaTccJ&lbwdG?6tM?KzOj5lgRMUupE#c(Gx>=u8cuCogmzue`JeafX@gI zKcuw0M%@o&OnDe0$o1x;jICA^^5#*34S5&2#bIpKSsW4vr7n%e0Ixz+BhrVv^?KE` zx0nP_N&MraHy4kb3?R1jU>3%A^R22^_6k*zimd^&OT(y(P}WYXR!dGm=)F8U$H}7R zNAWrEET2S$BD|%7DxsQo+QRa5?+-k_%=z`uw#FH=WaaLydmck=aU@akn@(mr^baomG9HsFx_8{V_fqFBg6ugf)-ip zS7Mv2Oa?0$v`?uIO26UPWuMR>@xW`(JFKm)3PTzJlSBd`O7*A=KUHODARJBG7580O zUMtBZW!q4G(V2&Cj~U?{Sw4wDHG|BXDG6jO2G`fI5j<-Omi-~|CDZGK*IXu!pzF3;Y0biiDf1l5{`&Nl=d?;U(d z=d7A44rgvdwps>;Ge4?nT1<8sHW@iZrq8pe_|kjZY79}d+l6Az);^`^l#YWy(a&8? zwP|0~2xP(@mP(d92Tpbr#OZBjHjwdZsz%JZ4UdI0osUdH)nzz==jj~pzi5^!@QB4N zLlKl2Vs3{r2eAivk<3o&-@(VRXMLQdw>8;W;g90UK9Z*=H*XU&GOu-7I!|6Y(UF@! zU-ZgdR-YRA;)-81UfnBfP#Mj(P`TYdKY>i~2j{Un^mjRr3~X&^-FZ zc^LfXIS;Bo;XJO4k!subfBOKgxN?|0A5o(O+{OeSgk* zxc&v_!Tx_E=h5`v#Ch=i!FfFLzH%Puf696M_?`1;zWfW$1LAkiWAiu8gYq}dgZNK4 z52b&I^Dx+m`;GI+{TrNz26$Nxo~hur@N=Rx_;aUOy1CaOWadPk+lA#j_xIP}$Y88AC-D9^-QnIdOq zbKuPPsCm?D0ok*`E)>fFm&RmTjI;zE!#XWr4sPDR*(O!+_*QVjCDgoVdF07M&)70h z)R}InCX^qVUXi5j6&^q=%2$V@&4RscZ_G7c(kGW`=YmLvEn~*Bq2!@3ZnlO@=w@O) z-}k`?YeZcFE!|;0KT6C8F;W(d_Z_mIt-*? zvFZA{J76>{33t?pkw=_Ni-^|aVGAt13T|Oya$g1zs{%Sj3t_8rx~H`%hnfkDpyqYu z%9g&P6LNgt)a>kDSmrY}s2L=d+v|K&ie}yCk05}Sg)KYcYz17_^bdnOGO1wRtA)FRG!oU{Q<7P>%#ub&c=!m z7DtqJMbVVuw$e;#4WDvXJDjXWTGX1E{e~9MwG`gQX=r4cJxx=+J!b)f^wXPZ8$Tsm5wcO`?AamXUeR?|Zd|sz3s$W(gSudJ?*8;s=der~pP}!& z2t_Vx&;f!^jW|DYi-N}uvb-QhwfI+{&p)TV5CMC?>*ogyVGx$&)AuwuFW_F8*JX|1 zay2bNBf)x=fQdf>=$!iWt~|}tFG2iEgh4apMHTCk3TYV2c9?-G+i6?zN73XAFoYCH zgF^w717DM}*Im3s-;`Y2)D4TGrL&bb4>7$-@UFdbIRWW8e-q1ex6;-trG|SU4?$o?q1y*8k;zANCot~ zWY2icidZN<^$1)QT_+4h^$EA>4u3yWX<-6h7&kVZ3D%{zU4nDWe6H4}zm+<$Z^|Am z>2My2?LBPTCVI|c4te!Obs%>oM9Q1`&7Vjg`TNC9YgXBuHaJbmaz&E?I}@mMIE!@+ zC>7l*q{>6&SlT_xBXr3!mUxisChsbS64`=X46&g$6rnIjf|_gsr>u2O9;DG62@;ho)>~-ewuZGY|l9`1(`3ss3 zS^$YPz+ie?87+KA<|UspNi z?ajVP8yVU*_TKhbsm$*baWX3xJdM^RR$LS?ngOa*q2;ZZ3bJ~|eVGc)d2$*`XSR_m zQgd%q8fbp>%^fdTqIE?}f}kq(g*dwhNU3F)M0Kef?gRppY;;p-C*HdyY!_M$8_x+Y^Gjk2N+MmUQD7 z`UY>GJjXtEuQV$Rjv(6j$jUxDkl;R{o8Y~sPJXRrd3VQ=fZsEB97XNmLxQ^Sws=!G z!KT$8yqcu_WY%ewL#wKz*q(8X?}GZK;QeLYqw}T3PSNC<96u&68z)ko$ihFGu_>d+o4s%=bwaeo| zZR7;GNxe%d;=@pVE-R1;Dz)L4TbG)*3L>A`j{4tt6TqWctH7XYcK}f52-2{y%*&UgQ6h5XXPnF<-D~4(V3zJ8heru$V!h`7 zfW%1ML}h(PBWJ@UeTIA7FP1$5tI(H?J(v>g04`>N<`n7H_S2BVwdRP1xoa1tIJq@e zs>$fKAA!JJaws@j2^%IO2jvygpkUV@#zq8_971%lOy!mVdOn#rwSqu%%qipU9~e3E zlK2!yXCwfLW{$WER5hgH70=3#C}#te@KDWqiQ1yo8s;YDaTjHkRXMNCTb2}o&y`kA ziFTnWjvAW;oqTwwMdtLpN;yF);dvZS^cr#4O2BktrK*CYE(ln*qcH74>scbeKr~gY zxFOQjS6k-k5I=}O0A;T9MhovXveM)M%Eg6$?tJ?)={p%-PCwOLPtSMeh<4lavt+qu zlL2H)*xxWa-`PBh>M4M(lJtP76@oM)!6tWr0YTHD@u4sgnP5^nO3`4>LrT#dOM)Ve zFRFq?Zs3rzNhNy9U=)!v@tT5Vz9S#2Jj>z3W*(ezo6p*!`##2U-!tA;Cr+NF3*)ML zs)ZPGCA8hQAr>LmPW?hU#i!Z8|PTYaORKi;x)xhk8IPqYu%{ngMNscdaSM`dX*8$2uVvY-Cpjmg$3Q*O zQZc1D(a_m5X-#$=rrU@u0hI%D!pJEcghDmQ0v90oWnLoZ}>3Ve7V7;*~; zE}_Arp3km`PXOlYZ$?Lk<)0ZHOJDxd=)l+d&FCQd&FBa*`(oTrT*f(Y{FVP=(Je)73TI5Te<)Pd36Pm5a zpt5*w^0xM^ycHa@HRhZhan&4HqC0O;TZWS8jt!w%!p`I{KQN0pMZ@FY*w$nyyft^+ zry}V@fEb8QRpCvqBPD&ys1 zf`ZA?{64O(_^?|D_ycqnt9vhS>z!03N20TpY>?i6VQm0l!DOYC*4*Q;wV`22}2q z3TxrKs1&m_GFdABw=f+x!z6#nbYu<{{9UG_YUm$iI?Ao@zta30)6tjt%5;3O`;F;% z_e}AN=|Ix_o#_Z7{u8Dn_tPuWad-JU(;>w1H<*q)=HHl(XqJCrIznCkn(4SL`h)4{ z$p4+`u;u%M>A-XQOQs|0;18w)>E`y8=^(THE2g82=NHoio5!w??otSVj7ACse=xkZF4X z9Ut^j-)rySRr4G?y1F>8+EuM^EQmLFN{v?K&S=YV(ezZJ+zyaNzF>wLb2Te)?D}M~oO#s!6`g3YaO9pnlh&dg4nq_ywa4KuiOT zwh9ko2c~SpPrM;HE#!)W|f8JD#siVqGmJJ z^gW=3Fq$Rtm`!V+`Uo{JtI_2X*!#mqPXo5Tx2zBa@%OX4F}wKcdyzPS8!w4}!x$mp zWyo|^y02L!!dq^eFNRuU%Pj^yuwOvvEv(h`#WBp`N$l9RDKenEh1^d99f0+aXau3X z?4-ZV%pRlmDXGVUU;3^AXWbN21iBsHQI}R}#b!*4Y}OqDKYR_Co3U2c;JIn6a9|Dh zS}$cD1(m4x>Eo=GoKF|e(vG#+I1g9){Ae^eRlDuBu(p@Cv|C>PLVxHKL=oD=-hQ4( zv;XkPvq=rDxK8^E0VVfXp%?XF{JAqqdiOS9cbG$TVWKDl>%KP4o!fk{DIPYcTlet* z)oLzUIG-mffiPM+6dYY~EpUtM^QVadaXCb>SH$1!?W3)0it;T(QcaQEb=CEYIa#$W z|GQ5|&DM7Hfp-4$1hjfGMAIoAMNQ$I6ij}E1N5(H2lPE;B}zeCF_h^A;oXOsXGw}S z-?vtu&l~5BC+%>JAtHl~V|u%xC|XxgV(2hEC1~X7>c%iLlMN8eRP|gpZFC~C(NSeq zfIOSqk%aW>Z-E}h%(LB`DFt@HNazjrfkd{@3A%S?XdT%npSdX`0KM17RIP9uF}Um( z`Q{#PyqFLYvkyB%#Cvvvv5kAn&Cz=oIYky)I3`iYi+5sBt=OH@ zs!+Idh}HnsTcKBm14lSF3pPSd=#Jp}xtjP34B;nyP3VRrVCJL3vBl^Z5a7j zS7uzVdrVwy%s~OpJ#5|7l<9joJU7uelJmiRFiPH5zP>(wEojWAhia03Wb!)wPIsUj z;OcuzAN?~VvF918F!TFCiN#~F+rqg^D^DX4XjQoEFqAwN+)|;j5$JcI z5e7;1;XPJn%os3zaAr4*~$~?{PhCByqb1oIAv*3Obwq?K9 zu*vMC5~0ZkVm}0lw+1E!I}+x|;`O@O<%oJk@(<@qJG?-L{U-lW?p*o%ER}!(51aK5 zS6QJU8)2MX%IMxigsC68@gJ?Bv#3&BO!&}F)Hpuutah#CNJ<1&CPrUO1hvX@V{>^V z2I5+*)1*{a^o>vdf9&0La2!jPD13p%%xqb*pvBD0vY45f87yXIOBTywW@ct)X0n)> zKh3>&X70ew%|5|l} zSq=9I@iSr|u*p*2S^4Bzm=@-VYIHkN4+KYr95U|PfZU8*(?PC`eR)uUkVfEKcISlM zt%5Vv?s^z7=jphq`Bid+h8ZJq!+Q9h9S3xmyJ02wN?+Pst7iJuIIMP4(YUE}N>wkVE^=yD3=nJwmpZN{^elR7|B}?P zqwqIUN9FJ@Qio>PAEl1A^1gpn>UfI#3#sEu{l87>keU2%k~+A#{}riYy8E9<9c+UC z%cPEe&i@Ccj)Q>ztx`u3^uMK!e@h+zmOB0|b^KfE__x&YZ>i(oQpdlgj{kd7$JyT7 z#$MF+)ja+qPahAw*P{U3++IRDH;g|adalh1zGj8GyLfuS*d} zbwsSwUhi)<``5De$yf>#sH+}DY!tY8-kx4KFl}ePueCpmN5$=dYIj{6bxZe;kGJA; z7i*_!zhx(7ifz4A-E||V%&&cH_oEPcK7WU9?l~HcGTxVuoL%rgQ|Mop?jH6KPQxA? zpe~}63aeV>{9#yA5fX8ok?0^hfmEn^P4ZWyf=89qRobg%vFYkRR6cN`;7jC$A@HtB zgiY+OX6E%Y<0&w7g;L@^$<4!B(Rretfp112XG}dzA4rZJ7ZiT~%1|tlz>E4_xF|~C zH?-qu{1>!CI^q|!gGKgFXon^Nh}c)t&flROQf$9NJ9K4#Lp$1H{(yD_YyX0F6ubQy z?Kqd=i=yrZh?+39urkL2U_V9 z6(MA?uaAOcK5!z|z%Gvj7u9Q!jcP(37A}bj!ar zOoi-5U^*aq9FRl6Qi<`NQTa=T%5gv@P5nP@bp@>64}@cf;-jVO0PYoyoEK?%3 z?+Vcjsu`5GUl>#Pr-2Jt3Y$Wm0a~mZP@$A>F)aW~MMm$=vFWW4V4Nswg$w_fWFvwR zO59BKK8#wlYiwSp;HOXbz||M~a{0V|1l`4~&!P=F29 znTxsD@23yCJ*}W|EeGevIN`0I*vwcecM)-|l+XK&=weuk!%7cVlIvXFlBydC%BsHI z{r;Hyg1qdM@c~%LkMb=2sR&8clIl>+NY_V+CRy~Ga()YaEFF1bkbHK_6UCU!r4fpbe* zW8Bp{boiSM!8;v6o3F6n_9d9Q^rJU?eEjsIcO?E6?$ECJYq%rG`44c1TK{iwNBY(1HZR`m z6%w;7L>JhU$WBYyRyR$KeFs#NIGUoMl9^i3ZpYDHY?8N*5n6D)Gy?99ZElBpDsIJZ z75S^+JW|#*KV7Pgbs4W(g)( zwQPSjfAoy29Cu_o8m+}M^Ejy}Mc(F(H(O>{Y!zw#C0AEaMQU%wOhBYg63dyb%u~zr zfzcS}XcUj}V64f}4@C!-!WA#jE+#E4FWxKd4kz|HbohkfT%}r- zSMdxG$*JjvS(}&`?;MWf4nbK43S}RKUX$6H`?^yzB|RfiE#ve}m6v(CXOxj2_S)zV zy2LqavMGsH@~qfW5gk2d`bm^zx0Pl6a7YUy!{XkRf#tU*#x4l26eB&9L&hr{+AnAc zBNPzkdsC<`r|sbV`ALk2!lwMYf-g?1LvgEu`*U!}2aE@i+HN;X9-)T)>+(`t-%(&coa9~@mQHm*?oD^JMRvzkQF44zJp!M#EV~fJ zQ~Hu5WEnm_8lFh(PrVTG(NsT9QUcp$zAUM)`fzx(rcKt!dvVM(@1o?fs;Pl(pM5P4 z2{fK%T0+hAUg3oC%jeN=tK6nJlSZRC4{;Fi)Av=87RgO3KkaQz%1P-TH;IGJ=XIOvF~i+`O%#7eHy~-K5*Z_sbhh#f7dFGQ zA6A|xL%3h7B!XG(R5eoVvV`5Ze|A|ch@!AemEAE6C!JaW36b~k48#P%$lm9(ERWrm>*JNA>e^r!}Rt42(xG|5kD zVAR`qaKbL;7*Z<_&Ak^QW`-{E0!UV>L3!5h%UL&#?*`i)$){U2MePlk7I^LGB{If* zVMuT~2Q}4c)1xX(C%G`RoIXFRnohL3l}^%JpFwNZ6f=LLuDwG*_^R+dZ+(xmb9^#) zalUY8jCq=fWE9)t(yHlj#8>m_Fn1C4GNm+v5hX!*;$A9wU}(cFep1*)GI@9`P+ZhB zS(a;&@e79}@R@iyy^+o$<2IdSGANDY_xR@17`ud@oMw3sHFNT=D&Q#E2uF|85y?M@ z8y~9bBFS53M=`b&P?)YgVCW3dU%2dH$8(YzvXV^$SLGdQ^!MNHO|!V{qw6MrB!2lE z$FMULBbk_C?SsM|2W~VtF$+^I8>#5+sQPuA=|E^Vm6b`JCW~yju zoaIp{+hSAJI10Lj(Gp-d_0Z29VQMaO%zTz9P)i;)^F5P1nE12gJVId61yq9-N(?)e zSu@hw0N;00xe;a1YOD?Ulcs649+~EnlKNDqiMoa&+7g9_*^J_OBN|RQt3p9}ABaSg zVw@i~V@tzud0J1x0LQ@47~cve0%!-q4T$SwAmFmH9u{J*tIUDJEnD849CL&Csh^d4 z($9~nPGA(b8;-@E9k%J3Y^Ph|ayGK2uXxg5h=Vm<#h}+bge15V`EJo0!mOn_4Owal z*VhNu1%Yr(5B1dofA~i**8W(tbwh|xHaYGR;wO#-OARw`S)Ry@l%>Zajz#J05{dXR zIZ;r)0o8dqqGN;%76qq)?xH!nTxKr46=)U?>+Y5v7*;b2Gwce6Kv^=PuNkMg;-~Lh z9Z>TWY2)wMMu>?36}kseFox8bk|K>}@d=uZH1W#MXIL-4sOwnV<=jWd?4vwFxsM0v zykXs!S?Hqb%#GQH1#eI`Q1|jp=r|Tls=8G_dNr27qA}$c_!jMWQ}$x?pX?Y(>;+dc z-RoV{D8@uBp?w{-q zP|QEs9i@M=JDh*BJIeo|-9i38Vt1(g(e8Np#qOB29ba?)v)v*5tKIRj_!ql_;CFV1 z(_h&g^S`q@zRLZ{?pW*kE?x9zy93ALU$8p}SbwuSK$w5EJ93qOvpb0XiQUn!^?SQx z|4()YSIr;oj&a$4!R`qCqunw7i`@a~`qy@cJ>@^KI}m=eJJ$YacSK1XP-Oo1*d3XF zvOCg~f?(wSvv$YRuXcye-?clq|KGDa-2Z5ItQG!8cE`#;usbjg|7>?Wjr@mpN6K$@ zNA^FkJ7RvdJ4(*~V0Y;J*X<6I-`O3h|H$s3V*kbN$o^Zq!}(XcgHHY*+8wn2f!#s) zS9ZttuXe}NzixNv|6RM|K%I+AC`gcE|9$-Ldd)ccjSwjom^0ckGV+KieJh zf3iD}i2gHnN9W(#9R&Zx?zsNN?il)8yMy@e*d3UEZFe01L%ZYPzhZaT{|j~puKoXz z-BJ3R-GQ?82fJh9zixNXUi>%M9gKg^?vUmCm+X$7|IqIE^q;UhUjO&l9a+EG9T)%S zcE`bgpWPApU$8qk{%v>MoBfA&2Pxfur`@spzryZ_`ulcA|KG7YQvQEocijD-*d5is z+8uYl*&WXD|F`W9*8fqvE<$V9Rr zz^Fj<3~tVFeFpT!hNW_cqJ@X2_7<;CIHwnIJ<4^9S|zQ;b@2*AdwlLL@0FSa8`ckK z!&-VV@api}RilgR{Z+s1%Vv*O4$IpN|0v%KN;wHv*1 zgnNxXC-l8t%oqlqmFBTqXcU28nT#ZwOH_#^-*utPLfak_&#Zp%anb8!2+&`b1Uy0Y zTk$VSV!=0@6BWb@IN9aN6mQ31>Re#QOO-Vp)(g(`$P=*}Nrk_A;= zl@C;FUKy%sU?n+2s#I=Ob|gF4#aVR^g0g6bM+8)QbeJ*lQqE9!lTInPS5G)l<^m~# zRGmml)~R8g`q=a-n3KtApCYy~LI?${A3u3ge(a#^WHo8;ltq$_`IuA_fg&=AWvCd9 zVmQy|MB+4zDXUPpIO=5xI)Sa_v`;&8g_*JjCD2dEEmTKhwRx48^=UB_j=0@WT)B&> z-_No+a|XZdRtM>0h&blhtB$Cu6+ssFS})UHpiVJxR#DwxC?%eyuaFmQ-0)fi=1?mS z(Ueb;7p+?r-Ocw%GkSYeA|;woUzXsB&|q+Tb9dSgx?dI${tX-wIaA@>XEM3i9P6Wt^%*NFL#vWT7iucd4P z-@lhi)ZWf1T)6Yo#ZkFqt9u}V1sVNJJeH_H5{f^vG;ELSl(D=$BBS6CA1F@DJiW@Q zxSNNSapVb`kN*%THv*uiy7Wl0e7aRg>1q|$_y~q>6_qR%>sjL~GQZpC1*&_y7un(t z<<6;8x4ezqP-vF&1LXzspuKdQIrk34I}Z~LS|;P8gaDzri0+g8($^{$xeWqK^^*^NO+avfOato{)ojCT3K z@ajoA#RQbe$vQ~ZARlO|!c!8Hm|B$Wg_OH?&x4;Zi)($<$Tw*b+hWO_AkSEu;3)74 zg0oA4oK$uc{OJ0V0)-O+)2vVsaLKNo=js?k z#`|Xv-4xb-L_0VsUy3#FgPPg4RYnU`X}t`?Jsd$AWgIQfA41m`Q9Tn6t}^4eK|X|& zQI%EY4=gZe_*7g}{Q*jT1c!EPsHRTvM|hAK{O%5jDdGTc;?#7S*F?i!zG{VSA)BxO~;( zLZN{8mO!xdqeR{{7D&{o?SZQw%6E2o^ey&uY(>^aW&V^tc*HKvgo?M`*Z1 z>n#HMbVZyn%ZWoC5!q*or*V041pw3**`X=F5Fd?%ndif?@8caG?;YbFFBd2IhTR0+ z!e+B!@q>*{M6oWBG_b6SxDpeRwvr5w0uSTcXUQZhTf2+L?^3Agu+dIkvvjaZ%ivM) z!D}kCs&X7ESe$NKHkAYhtjbgSDqUmo6RmQRj;hutn57BLeLp9#G9{XEEGdK4md;N2 z7HZZw*!m-+71TRaWUbJUXCpeEFKqP$nQp^ZvYbPxPF^qr4C86@aD{uSi%tq1N%Rnl zf+8v5Pm_@p(z~+x^@-L(RG0~PLoC-bW`<3T2HI@Ep=Oy`(NghLf4&H+ijc>P^!S9` zV~|yul^nAD6b*`1zgSm@%r(s_;0&cauIvdwyuO`bKq>Utkga6GFQ9J|ykysxvB*Wc zw*T&OM(vH%FWa8etkNH^LCNdgbSE6x&r+ahJND?PWR$IORFnd_CZ89<_U+Pu7X74? z0UarTEs!4zCP=fqz~XD}o#==~(2;)cQ4o&oo@}_uwa4~>c@{ivSRB_%`E>-+#w1F$ zML@w2igb!q2CwD9RR>&nJ$rdw!}ZOrvKaYLqI}2!rQoKX&NC(oHJD*Dkwj0UmEG6y z(@>kC^zdcz<<`aS|4q@#Xp z$KWcY&2|Z{py)crYFz+Fl*P9*FXCjA)%nKi0Wpp%lw#Tp%gbXl-#z4Dx36pXqZ`_j z-dY|rG}7fLHUliEkr=Q^dsonpYn0?zVucjc7~nUica)DA9va<^AkEWPWHiYOBK!oJ zE!W`65t{|6Y!+o1WgR69n7v$qrM7*rEUA>SvlRtx^{$;V=F4aVlbF1gX@jQuu(i_7$7>C}TLL}>B{dqAdy?P^ZT5y-sW5RAu6A8A zR`ZXcnL{P^GZeyc+42EkK(ubP&_1WFZ}b2KPv}fNBMI;$*)xl%zT1tmB$11QW z7ZUO%pdfo!-);;4M4IpWfkV&!Q?aRqnDbDnwExLeRf$w?XWdR9T>u;DYD5<2S{<55 zZJh*;UJ~bR|H>n|H07m8*2tOWsuvnSxxY=}ISDDKb`|*jFZ1LeQvTv;P}}e3F|EG`wA|MKal4Y5FW7{{M2cW<284Zz=tc> z`R-%}kgw#QZJHxzJI-fbtrmwLy|++?B@L)m)%8#(;Q_BQx-710oU)2U^y_jYW6T5` z;gC&=@!}PKD_P4mg)&rwlsVrRwIwqclc5DpJ^Ko5xY`niv{$g!0!iz!Vzda+5MX7M z1wfKf5|_UIkg<{rAs8d?qEyY-Rv<&3n=P&w<@2d& zv=)ELjp^RiaKAyl6P077X@Bodk=~9v35nz3;$A#KGhy0AWL0?o#DD}!V|j3JhF~`Fa9UPPEY^%MWDWd}rP7862`J!e)+zSt>V89-7sJD(;P2Ic+AFEEKX7XHWw>G8 zr=EqIyzUyp0)IeqAJBBxP~j25J+8Af;aSIIjnYhb!@N)OOY`IJv?b~kvWkH6Oe28; z9;PWzDRq=tNH7Mm7y-@n$;N;x6Dw|OllpvbN7xY^v}kl*X{JHc&_oj=W*Ov!2{s;L zu|lRJG68hEtKu!`h! zcx<@z0;y~YM;@3v?>3D9l!hpAVY@E6YW@HgyFsoat&m}+OkJ#^7euK^Dzso!J7>m) zx}#Qzm54RQ(P>xLU{63&2Gp7#gSdC=M(8Eb>6xX4%Fr4EiY$I}#FiLgr~hx7vmT5Xbruu)wd)>7=N z10ajYvyl$>u5T|HLKpy@ypfP1KMq;uqe$Nb3_Oc3z?~h+@FcF4=H$aR(?a$x{hd#e zvPe|=+@QJS&V%5&j^z~;mI0QlM;oE=&_{dBJ^qPWU<{no4>hO9@#NwA9*-HxB;Cp zsT6P~Y9JEINM}*_vidYjm~Hq884_9h(4SN^x~LzO+JCbrx<5BY5Fkm)dBCC z(R=8LEm|Y9z)cG%OfV@RimE#7bp!_a7?9#nNL}4Ad775=4-lJ?7N5J5yS#05>I;uA z?(-WaXfuc#V!*d~gWuxK}V6P^1QK7ktuaTur_HyZee$XR83U%ZCc^16Z2sV@YgqlW)2DR@i3ozYn>thvlx7q z7D4tUz2a~tO`e4D)VzyU5W@i+UJn#=xg^ZYL??y=y!g4Jj~?zU2tGA?N8p zFVU!)XJgfzssvKoLLTsCqpeSclCBZLS=(CD0+QPh0*X4#m!$z&FqqTv3soZRnDYR5 zpmn$n>k@#ju}*l7YAL>bFs}7Q1NHAH+O)^Oi68WS!Qh zp;tPv-QX6o!`(+zd>h}(S&A%xbjUr`0P~cwk%06ym(adjp}h@d=$4EJYc?z$=LM+F>xC+0(N=MFtUk!kRND(P7pPmP8C}8XqLI zSa60ZEO@$UI>^+sv96R3(-nOpQYCB9(~c?hWQ}Z(_l`>0u7g{|;s>w?(@*5EpR)JN zc31M_5?yYxK8v;ETd|nFoCdO<_eX)uk=p0B8i>d#P9avArQI%p{KL3}%Tt9XlhR3vVh4FcK?JbRC6ABN;|G=Pije)_mkrwXi3 z|F|{`q#QA`TJVM_Vni(njk#$BiaW{WR|-QI z8qtFq&!szFrN^gEjjUbrtAa+F`W_-*msp?b$MICA5HQRK1!}t zl}0p>rY}GG8+=8JkiQ3PZP8g}0GqzVojHnRmqcFM&u1|V#}f6|8A``l7w6LD z+U4#i$cL=sXxV){aHD^wT@D;03spB`Eeq>wNQx9#T*94Ug{<)mP5m*zFIF4R7gg=K zmeWc_jZ$xqROizhQIaHp_=KDCJ*8+R)^XlI0?Phd#|FJ}`e}w!cLSfpMB+rZqN%bd zFms*Gy$VS6gxqJmAWeRj19$LZ%kQ*=r}`@Nyt5}kd{)vY`uTRCFOyMsD|Qg2z_zT= zYT{_3x^v>Q?69dFKc7VH+aH$+BL)0SXV|@#wXO7CY%zsQ zfl8!MQ{kM~scXT#;P232%i0p`cy#9&Ivmo~m>GP(KRx0`lmMx~Z}Rh)#bmL!BD_iq zGHrIixGspJHCqO6JJiP|+Kf^E`4phrYXB{qK&9bDL)x+(cR_XF2&Z}|o;TN3;L`ND zj=<+Y3JP->)W&oIK(^;L;G%S?4otx{do71n`Q&7W0oW(`As=JNw&1L~hU{Y}Y{6K! z-h+mWjR00ggJ9=LW~2>9PlhiBG(6)6PA68&8Af*0d`|?_JVT!75jfV?&~3XyAB$t7 zGD5_lb+NFgYug$v5gGy9(5r%#edeCY+sL-Nk}YnXl|3JW$;VO!4gDp_=`$`ko1Y9N zL_f?}&Ej%}m}=y=MLU^PXDtTBYVnrwF7*6yxMMO{9aow_!18#a?%*y~fmjZ?=hlvZ zSUeN?+Us#Qr2062eCe`*_hL^G8A)5ST$y?eCJ|KgrZnecVg`yP!&gwKrePZ;KVyhI#n8WHhV)Ie4RGE zIGuG3H{@SCk6_J@(=|8HfEgB9%c#!CYx!J|H-Pw>=+A!)6tJz8(*rQzow###;C43V z9t_nY*vhM)V!(?TP$oYw912MVG4CYxxlK~_{!LU)YHHK?WzZpx7N7|eHD z3_3!>k@Bqvx_;Wqw@Dm9{FC-}6SDwKex*%$>1oXoa8K*$J4=#@6tTOJHe zC%4ro21MX4B3D`=?jnaTCJFmgA=%z;C?+gX&&&^9EstBx4N(wEtHR1+^$1a3LL44m zwd)LXq1B{xKkK__#kMch`)qIF!34F_9@wexGH00JjNR=g_Z;s&TwPay#+gKX%a~E6 zY#Xef9g0pumX6LE?=}o$EjCi2@JMGo3hl{oi_fW|i;%J*3C@rC*g-~+&*6i8rt(cw zb5&^YO=Fy7H#G7n_x=fbV&XF6P+nJJy5Bb+)BIz`*sZUe^d&omJfOUN_m##Dkp|g0 zE>`J8t$Y6R`+)?pt$r_tkE$teA2PU1xVchu0eeNzu*@LFREuC6>m;?g1G=zUV5JvWkE5ys~cf{huv4}gSJf>4!Y2Ric53R(Z|^LdWrJ8usp;b%6oeufe)+ z=nHapHlOr{-AIG3+dhGDZ|LJZ&EH3_C7}6}*m|PKMrsggxS#2wnwf(w)-;_Z&jk5~ z@_kHn*cQ9Ocss}Ec|N}yk3Bw`pD$ncY-sa*y=8v5!+&K8oA>*0wf=f>;`(rXKNp&$7;3_hvZ2y>DxC}t1_!UcVy+CPM=5V#I#AwE3c z4x2HMOBU4we$Jp>tq%{(J^I5eP#BeV}ajQO);-&q3kHUr1$tBBs!Jt5}c<6RgX^neN8o{)ln-G;4HNh#YnymWz@V? z2tvFVJL5R!*vsmHaq$kefoEev4S^IFa)t>2$ft%OUMBDLITyg$e zCR9x>LgOo~VGane;%v>#k|qhGEvdaDCU)qmu!6{(ML_?A3`tqE4cfda(~MB<{G1RO zc1sgOhe?uTE!kx@Ui=8_v4S1L%7gh{f(MOm}~Unc(in>B|@kAT=1+ zpc=RRxgp{H36NuiuY^D6npwrqisdW6pY>ZdcSBhEFrtZl@ITF1j%xR4bC;`|uxyi_ zXSF7d@J-wT=JiqQ0BVr!cx2p11#Xb(`04#b3kp=r`l)D24oYJUijc!8osVI^3#}u?_Fi@U+iDAg$7a%Ji`sCkjN}FK${omM(uJ?IdzrvCBEUkC0%k=Y z%*n))_4p;od?kfIeQV=P%F}WQq)|IlgTX)GOffH~j{@C-{XAj#-ih6Hi~+hO2CQj> zvW5YkafXAZ3G7M9pf?6&XY~G6QFvd`osEpLb;_e)y}omDd3|u(jh|2+i}UP! z5wl(R9?Hl4`FR=P?a}?oY4`0y z+yA^h`;GYlC7H#G(97k;?#b2V>Hg8>^5Mpk|8@H=%G$bqkLP9H>+=9+bVD=H{@(mx z{n>oGgci4Flcea)4<64}&2_EzS3h54pun3iy`B$`uB{$V!bnh`be7?Rqte$!i`%>i z0{Cv$t=gqCpitRF41{d8+uC2AA73J#`JR0E(N*dppk3QuE-qZVNf2*dFE8rPv|VuG zy+Mu1HmJ3|o?f3$u9kODu6LJ@j&`Px_SOM5z1ZT+Uw~R)UYyceT0CD~ve4Wh0Oy1t zKMyV?+&~}ikNRn>anU4!1G!n}aOT_HpRY%nxBJ+Mx-v6fX*)bxJ=|ViZ=lzkIlWw4 zUmfipwr{o>ti^iz{EiEOJX+lY!DFS|TD8`!V%M$P!#aa)7$=@!WN_!L*L4!ptR9XsXyMs^)-T$5J`{x z9As5~mLK1v1)zm4@&mh-%zhizCpxrsdo`KH=k3db&j++5aqY#(vw;kz#}^+J9SvO(N{lHy+bWkX{~en)ErXv(`7ngc|P6V zv5=SB>FD7m;-%o<3#6jws6JCz=tXNXr7vnz(^A(b)I&kX$q_~(E>)=vN~c@3YjR7r zty)nueuu* zz}+vLHf=GgZf+@}ssaI=_FoHVmh()Uha*VK*it161%oN@gst+RL(XGNJ5b~%8*0= z(0!eB^UkJX`MRwVjBy~FNjCeR1N$qLSHRR-wW!I?r76+hj z6-d8C5{j+2U$nJs+j#Eu&!u{OUX_afw$7amK!j?9Q;J|yY?u)bi#@x&t)DOVN<%Dt ze12qMp8ts?KzDWobpOIoICVo~XR$}uoh`2{#Dl_gAE4k{@|+&hWdtI1*xhRqsh64R zICYhdr3kA@>lSZm+FNBF*B?M~1|k>`dE{#(aMGjrwI{dJ`IJ7VdSD_1DW6Ni1Ak zcf;-SgN<^QsUOS6dV|k*P)}l2U`VR+Bz1P zm|#Fs0@q-hxBVy6EE7BLQ=q45io&2KVak11%5nT2@*w7_vRri5h35}&(eFP>w|QYF zdSi4&D{WG3--J8wNO*N8z;MW~r?R+r(ZM3oRLR#CRx~J+wm|OE=URMv8#;i6@I%2r zuU>x_C?E-nl~5z0dwbivo3DqVYbdKvsUS&UmD(rgXLD_i)*^GJ(hPgEdw3oRa0uxZ zOtXk@dlR#et`Hbdb8vZr$?hFdvMSgGGTyaV=WmL`Oo0s)$YEV&y+xQJiU!g6gvqS? z(!&*x3q!FXZTCfIpG~AVy|4H3viaf)h8uQhuamq__A5yWv_{qf24;}tfNxoCI$uVa z*9&v%zPObT*H%ZX`E&rzdw?`#)NdD{o`^Qxa$ON&CO5J9?Njv3&gxVt;bL$!e!Dx77---Vg4Qxxn!ZhN zx2rb}u#VPhn@_Dbnvo5zz-b8tI9*OVg%RmU7U@EJ8%Rv>%vAtn`6V!}lBXuWGOZw< zrgggDXn|9}wCOCa$0Ni+pLNAokDp@Zy~0RRXBBsA1Az}vd5o|V!$)`H&#@F{id~K% zLdl+_&E}<158N@1(2z(+XmwFJfhZh2Lc<{o$@p)VkB0n1;Ikb#witB4`gyb_Ec9H1 zuuVvAcQ{GDUD(ZG0WaA}7>BQpee(#eT0-;wGzs}p>D+A|Jtu=KRazb`o~Ulg98KU; zZlvxI#GGKXyj!4eiO;W(BkBVzltTw7@{A?wA@oFY*NRf#IB;ofc?Fhv>oCgKL%uyM z@8R6z3aTf}BpNw`HHdH4m&=45X6jIuW)Z?ju zenT@GSp}7UtY%7MGI%S5HtcbQPt5`l*01y8O_9CW5ugazddrNHrYn4&m+fhqZlVcS zsrM~MaPtG;T>?)mh0gmmN*~lE1+y=LnU=vH#`)uWk&=g93%%Nd&COqlEaD>_so3o5 zRkwM4PI0XQl73ASTk`^pA^a4dwFzDJOGBXr4GHgb-ptY0gn@v&*S}_5eSMW}x=^|E zC5<2BHKTodTEm}F-3U9@N~Q`KKXDyC z-DvO}CMF@>k+n^@-PQ4O|C=Fj^;mwJng$oQr^gfgbh7&!1)o<;^K>E{(EU*oKM_8} z1C!4pAR`K6!t3ciX~6@fWC+cu+NO8q;-E#JTC53HJ{IjxFtpx}Enill%?G-<)%_V( zO1db5uy?()Wro?LJ{C#TiaK?i&dv$d;j{o+0^~SGwTk7@T+RWwQcG`{{`xGT~ zIc;73O1}|!sTcDM^Zq#K8y4yCqTK_{BXcdkpSh${j4c9&Zx{quObZX+Jaf^dupsAuyBP)FXB$?Z2)M z{@BM#h45N=g=pX;-KgO(;(2*}o;FaI3?^nAtaG_TSs-k0eZ9*+%g9eEk$8=I)9>op zgRsY%Ur+aHd%b0UxL~==POyFxcq7UL@T5N9f1Y!i+SX-3>cRKCw`+Vwv#^U^c;AGy z8e+-XEcCg`$KR>^+T<53DkO|rLiH1Dr2`_73;A=`Cje*%yZVgNZ7ojMTrU*!L0?0} zeeDO`6iF+|%mFPHpu=dTvb`4j&?@c?9VYz>a%Yk5940^K2>g=rfb&JjjH=PS<&+nF zspfITnIixBrJX9UK3-3lxzn4YiQXZkr%Ul#G5V|$GOxK0HlJ5PNYE*s<0a~ z&)gjU;__!+RXN7sD5#k(pU^Vox%xh!z5B{AZ&evoVGgSD(hCLCOmS%Q`ne#nA>Q5X zeJ|{A&ytF^him|Q+OgkYXin?T0UKIf1bxV%AL^PoH&b-87y1eoU*^l~hp!E2@&RVj zb&P$yP|v_{K8mGoc@x~lTu?Cwuywlxh&TDIlUAXzyF%2ZSSL$!Wla0?1(3A?C&YwL z?+dn?u}vs9Zc&+hdS~$a_q*S|eGSeu8J|idl-IvjFIkWaz(TS6d@L1!mAylFtQvqd zi`}KAu&@H2B1Aq?fR4y4uPaVrQP!oTlsHG=tdzJ!5L4@BEKNSL)XGr1PPmOD>0kJQ zt|~$x`$Sb0$)9zrZh#jccv3&W4jr;&9pi|KT)JM89c}Vr^h@``FWr@ns6Wlxd*@^m zi(k;yMRdz<)h+M>8kem9CUBGTo~qWaDx#ZtyF9`U4O6>rG$*T4@WNaj*~NcSpX7*& zZq`0pl3gM5WchxGfF)~&BLL-$XUhAK!at0T|7CRHt-2mwK<<)t$a{}jJMsHIieBPX z-gABzQ2I4c_)7rnMaiK|d5Th{3*qfBoRB7dm1%fjm$#M3)>rguD)SS8*ax3c{iC}? zT?qtlJVhaxa{}ZLN<+mZ zoR}S1vm=hW4UqsN-E57CWPaj%;lVtxJH=7W2LUuuz^eF3MfqsAiAbU<)lT6X z3s}rpUqu}dBFMhs;#^{AaAEoZ;}^Ywjiy_XWk0r*9z=Thj;C7U4oY(_PpqxcPhV45 z7W0kk_3y{dtiHpenkWdCF z1k&mSIZh^{V3#igaj(k>`tAsBALDbDrro#rLex=)q%nyUj=8`Ep*nwI*0A>pbewg8 z4MLTNfq1%UZ-bY4WjfRmZyIMWTwy7dO*CnB;(gg%&oQ!(&16_n%Ms2TWSJ%#!df(N zw>!DuWC16_HtkOgtH>^%T1`k5f)zAsU=RJe0_UDE!cdR}OCOZRC%e32_o3q$Pbr59 zEMX2yP_aqoSiP~C0U7+M_k?)2U<7?#?x;%pc5FeJ0r-l@RG+pw+I}H5bA?XRg`>31 zqckm`cHALu+&CPtywtHr=BJ9{KgmVrhc~TVl*b}voGT%LU%_DHWzeKc-gXzAP)dhh zv*HU%Z4bT7-*sASWd4MU5v{M)bci9YBC1bS%q~EMRb)5j$Dx(uhDnX~gZJ(1}h6_MDvzO9;+&Xr5p=>*FpTj<84Z-36v`QTk;oJyk@6;!Ut% zM4*42Q#g)N?A(}-zII-1EUP%Hut$#=rm}jd^_<*MNI_r~zF6^Xub(Crl;VPW1;iEV zG>qN%j#xGEWYo4N-!OH;TcTam=;EQ8etltzC$xi9s>#?uxSX*N$4KJ2ma#7mk-b|J zY!m_Vs8Y)KJ>Z^5?H~HT>d;b>%CVX^kLF)9<%>n`dirmae2B4QhLHJE8j=_1R~wsJ zL^)gHW;7;NjI-S^6q487#FR7{LR*Ft4It%6xzmc>Ow78c9TR}C#+RUH*$~X)O4W~U z1Sb7x3%gbdOp0X-Ysdb+Pvd&Fg>QBUPnNkhGKkNqqE!7xF>tIG-uiJ<1f;U8Vj~(NQuXha4seBv&kk!i5Sesr_V)kqLap3h2EJuO1+@Dpb=F(o2#zhJZxL&i z6g#MhY0QNZ&pB$QE%HOYxzujop`;>P<%SNBv)8I#tySE%CX}9#0E%pBb%_s4o)i51 z(Kk?Amv$uij2b;tN9f#B67sE6FPp#j!l@iebJ%c zuGyAMg%Df61B%g4-MueT(MdtR{jB%{(AXJ>N@lCv$CsMBns$VxT=-(cW(Br-5%v-u z2V@2qfK=`gqQovq#X-7L;l5Oi2>qqha8`y0eJ;~!HnY_coLt*gD{|5b-0%8pW)W=4 zLxuGj=n)~UftMtxPOY_hftYqm-}ECEd3GQd36`1)oaRuzC&B<;dRY}^RgTSyzi38H zBdb1H4)xW1Bqgh|U$|cgqq89#TU_A0hlejw7M3isL#{0cGcNhUMjFG}H+UCR#?&Of zxaJjpI6DjqT{K!nyA9>3Nt}O1pTbsbk37caE5)7PYl4P*q#Pixe7n+sZA{FD9)fR6 zI0-?pY(m|Vy3N8&6k~hsT_7w)zoQV{-#h?^B5o5eUS~3fDwV>tcLC=<=%Tux+W%Se z|0C_Lg6e47wn5|W7G&Y>?(PZh?(PyaIDz1<3wO7LySoQpI0^0&oB+f7eE!cjGaIwh z8(r01UDbEneVy0Q^PB!4wSCYj3A)9%mbwC>*+&Ovi(e@ex0EsBtOd_e(~0=4 zsiWul|6FfM9k6QzR%Dm+8YnNXVH5GCeLX1sdd4tC;T%UK5CdIRd|HC!m12%-V!T}U zk#H7}I|S^z&(ct8^j6Hv@V7xMdc<(FxuDWD2swOxViyy3#R(-FUu)T3>3E)x5 zj2PQAS4ua?59=jbUj9)&y$COw`L>Xwa5DzDE*=2!@?45qcAsn|1sLUHMSU$^Hk?y1R1sM5>GI{%qd_VeF($bJKH+1zTLOmE{}QB@Bx!nm=pt!nFX36xu>% z)S-;nLH^9Y?LR@X@;|!xXyRiv6ak7*#jlIRhr@9v)o%u{E-T8Qe$`=guZtk7zR;W=vZO}$^; z8pC3+21NaydB-hmSnG@e7YzN}bwR#^E%K3w^@?=3`_Z2n>sZ(*tySnVb!#nFkN{OJ zIDj^ApG)LU8P45_s`|l3$xPi!ELKzy{&7U9CU8Csd1~L3svZF>1&--UuKWTuZ0VGN zXUx~V24(VfxvkkqNDGX4S6hx(>{0J;I6{eez6E}UGxqi27<_)o{@X3$K&02&NgfkZ z)k8TVA!{rNykT!AM0a7UG(kNyT#A^jzt}9c6ymP41j8W?PMa(z_Qsm>@}R`&U`(MD zl{^08OVa^Gf`WB&y07m9kjB3EN2LHSuYPuK-Yfdl?JOE~T``7-P{-bz)%wo$Bp|HNP(z zpZNDR?W++3T~!XDmaRv|=rp9eKI=H9d1Uh{?2M(GxKc2bDVg4*Fn+3Ux!~z$K4gs> z&=@G!xgcz~9mM_q7c7T=y1nUXAHCS;86UyGK|wT9y+@bcWv8eGRCUMC)d2d>ut_&; zYsg;F?eC%zYn|%`d#GBqjeQ3(hAee%xpu$bP?^SYu1)?J%uFlSNM0n5p+E8WJ=@8g z_7Os^-)12^vtUEU80kr?`w|F_Z@4gnwG!>_FsGdT-VZiGMqMJ3ASOF;LZI~V5d2Ik zvkjSL;_u^x3%2A5ntmyGK!qKGAi}5Os}K7DRbB0wr4_On##{p8a1>1#zEMRP_zI!F zbG=!*+Agye$m+?VEHe_H+ zh8)!+M8vNbKPeL5RB@!2Yra6Q4{X<2*1Y(+#|q`yB5W~I7b!7Y3zBH%4_7Vn;?1o9 zyE;G}I4;S4G4r`p%9_x6F;=2p9p*A=K|6$IDfglTgDx>z0R7L3o>RO6XPyhDaQX<; zPPKz5Gt5j}1brs$?0(G4rk&Z~W*34Whpfd8LpV_V!Dt;S(&nY?Gx8~qjl@b*(+LgHAbDoF>@v=RBd`c*gP|0#VFy`R8TlM$BrCvn^J6 zXodK*Fi`OA0KHP0WAh5=a$_ZhT2YbT&rqw&(FmJV-aR< z&DJ@5rO3F;dd^SM&_L;Q*{+JzrK-ru*VMtxCeH1<{O6>|Z>EUaWA>v5crwAWlilQn z8CrsoM5x&vw46tR@1 zu-NpQ1VigPQZ0%kP;9e`jx1+PrT4w@e9f_YH?pAjuj<&v8LF)0acjhLRp%9#xc*iSdh@7lsO*t#<4p;d` zj7{V%QR9k}aHiv?xa`GBj=jwr(Qz;{`vRu(>%~tqHxAHQpdB`A7|CUoKW=g*b`GD3 z2setHN zX}s;KC6QS-?`pTFHU7#Mp8Ae#o2>@t$&J7FeiL%%Zw|s)LtzaCqRlfa>B^rVt9U)v zf9)&vJv**#5Gio!@jvkgr0mi!HSCvw4k1x4wU<}5!iA0bne3TPQSACNLiuS<3=8|F z@+85HP@I8iro6CLE$kTgAFD>78QLnKIGx8Z@#xw9{6ZcuLu>?!>a@0p>YfpXGE+_c zW)uUf4KN)_An1Pq4wnRh1Q8nzOvJ#_156K}Fz%^L)7&IO*}n<4&S*2wrJ$bpuX(ua zLU^jJ|K=O1XK9~BZ|TIKJNWA+<=+H@xZ>;*NPmZ=q^Z>z&gWLsHS31xOGXqf`{(T_ zBlaZka=~qxS5-6(XDzHfjB^}uxc_0tWs)QXGL^iL2mXQb3179P)gF*ahIFykse)OE zsGt@_z3!lz;nE{e90X`E{j#}fm*Dz zOZh+DJ*2KkZea7y3Z(=6$%geEnu68TH%cQn6Sj3j!BAmDa68xVkQqp-&*8xt6AmjN zj7Z?B9Qy4noY!*5oxf9p1QAp8A&WxZaZPUQV)Z`LaDa}%S$)AOqeu&&84^AcWhTvY zpXKI$qe#!jSo0%_Kv^a2w537gt-Z8<1dzWu8FaM)zGD*63TAPR`)ju3z|qibkDjW^ zLmAd6h65NFi{qLkzD5J)C#;(I@=pT->YVEoZb?Ahg=`f?fip_|K?T-!)I4mgNeWoTv^i*YBozg!xF9q}7oa zH>?=qsKKbqvjuUGIJf@2&QtsX;I%%LtE@(;C;=`RYi@NZ6ieeF-SB3SZ?XInj`*A@ z`bKq7mTtG~o#6#OnM~k_4)zrNdsP(W5^I2YaD%WNhGUnr&^86KUS92M!+v^wShmrAm8R8+V$srEx_e+Gjzbv?HF$gxGF9g2WcLz1c1ePMqWpK`)Q#lVeWvJ2p! ztgnyY%LS2=reOJMLb+w-VF^lYcSK|36Lo7Npu84_5CFv1!@2YA?Ctc6gBXFl(gZA$ zD59f1;f0o;!crm9Qn`bPw%eTpt1JOoD}<_!pVNu;fgci(MwGAz`)tx?L?t#za*NO0%jJ)2e@BAeu)q+wV|$ ztdFw^^Rq|%9mS|6WqJ^W2%d}@Xo5#I|M*?pqT3Q0%P3@Z1i3|1^H1FH>6QFbQw+_>NoO-0-TCPJi@zLvsNw6*83Yw6*&=sYxdn^T)7TvIM%neLMdC)=B`yos|CJ>FgZ&{ihFl7MrrN4#NbushQ9%Y5A^m?5?m%Y}iCdF<>P+QGz6>jOq?FvOj`%d4%Bdc8`Cpr>L7Z!v3M zzgma6^Cg-k$K|oN~@R(8R(IiNhQ#;s5rhM$MY#0 zM2Uk7rEi=_9F1~{=Vy_x(Iri}5MGNdT2lL=nrDh% z>Q~LsLURhG=xCXy<=D-6B!0$I;>Da^dJHESd>)(5G^eLgs^GZXb>yL>vQwR*VT~Yi?;|-pHXfs z$g~N@V}qQ(YnYX&>PO26nmF*ex$zE6uWE(6>S}@RA+Yg|C>kER+QFmu!>rEU!nCsP+LWsa z4&m;p(Q7`i5Mb%6Lp4o%FtghPAg58J(}sISaOs%xnM;3DM-o0P8Fvl-F{7blf5W|l zq9N1IM0#s4w|TKrs;k_4UpS!9m^*-D=;jVX9>qeN$-2Xwd{H&)fKcx~udqI_*^>Mlu~- zMWQ#-kh{RRr2cWoMmVB?lt4E*|7^g9@YgAm8;8>FQsK11$%; zaJB+!Kx&fg4NWy5C5bOU9-P-W;{GDzGlhU6Woh4qUOIu3DD#~Y7AnmN8_5k3`CZSb zbrtTr!C}^1jaknyCCIq4>nygcV1SN_u7O<8S_VHqmmunF6p;LTUwYs(bQr5TzXSD9 z#EwkA!{TfOX|V?->hA#0GbVab)rUzl z{dHlCidsk>HF*Yy7(%NCTq1Z>Zogz^p3g9vR_L4k-Z@%MR*2PhH^Or&7Fd}^^fZ3C z5-Q?u@jG-bs+FSdX~_2Txo|p5eSb_QhvP8q-2YN!ixQqBT%r#;OH(dhao1h}AuGo{ zuiW_smqXC{MRqA*`oYtBh8+X=Q`Ji)sr@Ea=Rw9HK@~~DU>W)H?AIo;p-)y@; zyL;%q%of8u6AAn2)Ld?~#*;9e^8~cnYXuNN9^3(xbb%Y9d4`A&(u%3y(exeG#{dGl zp4B4~qLd!e*_SeO;J{w9hSzUu%$3mTe0`~S)n|I{1OsFVqgEz2YM_QaUMsjx8J4X9 zOI8?81+8Nk+ICh%%1uepnZoK#8y9jw>dC$6AY9wktOj4kIJ7Q$=JXi$GX@o|kO6!q z+J-?sEnXS4U10wOT};>pPjR2>$GTiii?N`jw2bc!qG=|ctcJG$&pNxR-{xrg4@iUG z3z;?sA__J;L*Z!b)@Ns1-(DpB>vZ2-E zmR;rGNQoU={76ju2vt?_H&!9l8jMjRiA_ZeAT23`I^X?fXhWXM8BNM-sOzzcYC7bJ z5QCb|y?^t1M(t-rjUid&t*)AB-Vpi(B?+_pK6%2I2fB%lIaO55(dE#7D}gB&ZUvxa zTz8}%=gXE{JgM*EQ9I z*{XRWFXSncYGDa!)BqDFx+!MJs)4&hk9vxAN8O`)>!pGYQ7yn~H3JmT$p$7kjHv%BpXvjp>!XIJl1{|e zRZ?>LNoFd!zUa<_zhn;FVj4?4x``!4il8I(u&=9~n3C-e;Zg!@+c*bjJTwLis)|-< zPQxc9`Okz%VY-#RXjTB&dLc;LDq-oIaSe8n@L!oBTP8BUctmG^Ry`E3=CG$?g*DKg zBrUy&m8K#~FK)AM=3WEG0J?FCo>Gnsf9}Lg-N}%65-qKcxQ%?J#2;y1S`Sb(wOTlq z*3vcI+?52w8ir@g?QsfsY^DJTd6A-pV}(66XWG2@mD2&jn7V8=u^M#yTxS&2v5=y>i^N=0lT z94M?n#Ji>u+hdq)i_Fk{IB0#cOUD3QcvkZu+Es)OiajcoMzD2lA6eD7=TpQrker() zs-uo<*b@?(7Al-#k_}K0TRj2>tN>Qr^B6qoYz5&I0T1{q zzNO}%<4JdR9=}x}^N*-W1i-A~T^}n^-@To|sEIFk5~jD6l(}tUc zzup4h-(Ux+GuuclEcg;4W>*TzZjZ1xo4 zqI$FFw6lCizl=C&?B=xnT1BP>Enosfm74s7L5(~=5Qt$hxdziDs`k=e$~8ce$tQ{LtYix{N;lq9kq_{+#l=|s7cPUWSid8W zkm)FRj&}f^-%!{PDy>%ID5j-pjd)P*pkvahS=vl3k=;`S?a+MMlCk@g3Ps)Ri0H&1 zI$6+*f67lV1}EFvOg-04K?sr|&aC8efJmL|SJAsq+NBToK>gfdiT!W9OqyeyLtGRW z%l;AC2QQQCkGxkX)g-LSSqBT7^eyf3>*;gC(UR~X{`~CQ zGalqqQgD=$ZN~(_j?h+?M)j6phwrl%Sys70g{a-T>VDXfqn@ILBh zrX^-5`we>L!4qC#ArFykbX+N`NIqS$fX#<_!%7KE|vPA$E| z`sv&HTQCpK)?vHg18zbm-)7}fzyib&#yu*Ec`Qv$P<<& z4R`_sCgP&IuPfkqxt3R)&chi9$szpeUJkO!8GR|BEg~?HqH3fv*F5;PSti0-TG-<8aqvzvteLci z9<5=beowK<5taAB)iLO#E_YB4mw&GY?yC9`4i zO`8vX)j3?k)85{C1FK0BaK5oON75O@$B>#2l;k@&6G!Yx+NJdHIP0hQkXKglWL%#x zV*5y~b~APvDK34Ry7&;t*#AmLrV8gos=Z9)?ny2qGa)Z{sJ-gr?DH2`&}9uzP{$TV z`N|>$R|GZVp?4d-dYW(9{&BJ_AN4f9p$9S3N#-!$9cK1km_P&9Qm{I6=Y5w(|F5(dE8dc5LG*~7f)^Az79f}w9NxYu_uc)*R3}_H!VE3 zhq4Dfn~`~T*(eA-Nk@=nQ_CnJ*RXxmQcA?MEQU<|J$bgc3eUT+L7vbBw9~wiMYOn9 zTo#y~(m-Km>h(&B6G^A(2ZlrJDeAKH-Haj|PRI1jqtUYyy$laDkD795og?J~R9wk9 zc4vRArX99c7;3-)$sKTzDLHwG`8Qju%g=GASDX-4%&*xZKjZ5wb#YRI=HB}7g=)7H zKW2aBWeq|kRm&`d-9eGHVyM{PlGZM1r86(z$Z95yqk@txqhsV@IvTf3AzjJo(cMK zuSt3Hd1a9eN`A`>%BgzTTA87z^G4HkftZGt9tqAh4K%}cyV}DH>;$fkh$-De@IX|7 z&aDkH!+!&5y0QN6AWgvsNHgX1e}Xiv`Uvi{guk-vg7ki)%hQDjOUS^<9>5_DM)%(b z5isi3zA^)xq zwSMzv58{wfz=1O5K<{Spnu zNHxnPJF$5JW>3n#=zCg*0oYf@>P?p*)T^UTQ2SVC1{?Sa6&_}pwsX)!w(wenMA-U}I6`-qdaq>@7a z;%>KD?Q6}Vl-hUQtW~6&c(&7MQp-O}>x(Lk)BJK4G~e`k>jQS5w6B)asW3K%#oM!!_HQL?l-*B2XS+-RJU8Q{B zdB#6D&FR>G;52Q{|B2I(!yWw>PUC9yUpP(e);~DS)PLbL!P@`AX&!w3!D)CZ{sX6> zCHU_+&2)*&{|%?fEBbewMyvPVa2l3yl2p_Px1oMr`>wje#V3mXCI2tC&Vo(2^xjG^ z$4Zcb6pbL(Q7DH7P4_E<6ptK0zrU7Mtf``^h2-)#bj;*4<1qg6AY$yaU~Q=E zbbWIa=n~#iC_jbsPHi}&&upul;NPCcWt=uUa*$r7Gb)`<^!<2@hQ|W*vpl@1YKQF* zD|o*WcBGb9Q^nFXC7&9oAERz8SNlpGBfr=wG0K4P=( z%@53(rcgVig$w|p6ae~h;Xm0PNBoi?@*eG+@lQ>vFcA5EK?IL7wSsfM|^A14KFd1IL%Yr%4M z&vj_B)Qk|Pqqa_1Vy9&Y*XZwauw7cWnpq5><57lYfVMj=mCz5sGFP74#UlwqX6oU; z$QR)8+f0{35g+2&fUi!pch)x4`Wy_3dsg_W`flfYJfA4-EqVnC4`=x+DWiiJ-&FK* zdy;|l()|xi`t}#>P-Mrv2z{3C8%VwIt&NQxoRY(QY$^OSG^Bbk0vo($RCGTBNazey zU|Ob^Y4siW<~&~0xK=zNleN%!yHZcti(K%rbe6f6;UlWsiZ6xo&RlcdXaBm-CM zI6|9_SH`2xiDEtZ^`k>oC$V|yQ70=S3P(p%3gL^gfPWnf{M_$4F5x^IivefYGTm;rPRcm-$e{VCc2bNn>k+_6-&47FRw&n!aw`C zjs*7@NyT2=?0hvXZdnox1@Oe=F%Wdw;1AN=P9s}v1_!OzvA-a7 zA?(b(dY(x`WK9vyY0jO%fIHA<>Y%)x`F~pU5y7vKLYAN8?Nn=l%z`j)m%)<%QJre;_q5oIy+&{|%|B{C`4fLe>6Pq=tszUr5b>2HlS(O4u4;p~P&I=9mq0C%|zEx;hz1~Ci zS~9Gf(AI)B?-(K*IX%&R-_1F?1xn$q<|B6wOSQ#Y@fA-CRWiAbrLS@e*P6FKD~2vn zSySVeVL!YY#&9L3f4rK;|MY5tu$ltYp_R}LI7SkGWY~!hcJz&yC*QZ^>uos6fZ_1u z8{p8z&)gi+oGZU7FS{nY(oCsCh1iq$cZ95=LUYgcTPB-FBMQY51Y@-BZBHU;H+^DZ zG;z_TIQY3HEr8Y;Cjj4epz0XXEgrCREhg3yETC@2;ZEOUB@*j$JHJChIRb6O58*;Akr~rso{q*|? z+l6(pC>mC6x_RnW&^&rPe)8O}LuIwiP!EG8j9j_Lu zk?5yGg)e6s223VAvos&wqz69lB(vN=W=zd43^r}GAwE@;?z?B=)>On8gbBKJ{&4CB zNgr7rrydIE>c+$NJ!DGE_q%bf?k3&Xr^e~}Ru|5%xS$EhXl*Dh>*Me_TLe}&mXEo` zePir$^)D$A{o8V>RY9BjGo3$C!>xl*Y}PSPh@sXw)m7ZwYuFb(ohBEG86*o;9Br>5 z?x#AZa|O^}D9zd$8sLzV*3G|jus8##do)0)Yo z_Xl%kl~$Dy&6|;12*Hz?IlE?jtx>;-IRP63jlljY%20N8S#v5w=jT61R~bCJy8Q*N z(Bf+BjkK+~<=NZxZH~h{NSWLPj!Bs5C5qPwJnkMOX_Kkh--(pSqU3P^nP(U!&Kn!; zYjMIc2nJIeU{++#xS0C4?r7MRh**MQLuNjHNVO8>q1wcg3rHBTgt2YGH1BV6w5V%!JkQ=cJ{!pK>x+H&|Ya4Bnvod^$$ zo?{i5Kdue(+A6XDEA~F-GyydCWr2lSJ9SEKp512$bvr%}p%ZlAzG;5m@nh|W02I|N zcIs8O>kv6mR0cWY2T2~;9N=`M#Lrw=kW3zjW00&lod&*MzZQ!6M7eQ=N-|vWr^wc4 zaPz4?xA+)#y^xTVRNf=k3zi}7O~{jC*b90C%u)90MZ7b@ig^5x2EAd66O;bI)lKrG z?T5s&=8>*qnmah1iZG7Lt=#`!hHzvJ&(ZT#%x6^|O#~{LbE0jD*W)<Mg2B+!H`A~$dm5t2XSn~vC|A(%6y(=?y(f-L(rWao*39lZ$$;iMOG7>Z!8^?EQWSX(A3SpyWK%i3)VYm(SqI-~CtS(t0WM!2? zQ6G--Awg9MQe!;sDOZ=2$ySM%u=Ng}Fl(rx5&XL3D4*d{Ag z^3VGbsB&YzkrwTHJ2RnfDimck;2~4= zxxOY+7U*c-Swz-thGV^eD&Yn>kdkNReP{LxX=42Y*P*?S zYnYnh;Qd{NY5^gJjfSX9(Ka*bW1}A-wVcXwuak=~BEO7En}!@eb@Cxq#mK?{WCTvT zrq^S+TRHLmLeU}co>Y@0RyR^AE=k#pHJ+COrKE8z(ZnfKR9>pTF!MX}*^Q_!*Fi?1 zT=28jGzL)MY_HKM1pk@Cd^ND!`%_12U&#qa`PF0@#Q;0KNf?lMFNr zRH?tT_6c=_>l3#Cj=!c{Agk>__b{~t#yXo{P9m8N^Y=#5$)*XiBtEbqH8+2EDBbW< zJdqS1CL1*Aa4iXq4}6UOXeNC+{BnPHdb;8)YG5oH=$rNT1^qp9_|%}+=kc6$yEa`p zFMwifw(ebtW;GB4M<~+Xu-sb8u~iEA1KBYqQ;|OgoOsMXjm*g;0Y*!5THbKw2^(fb zSa7bwH{lG$H310=n7D=JG_6mYg8^9}rB*@Ov$%q|^Q}8}H2afS=(K8#(nAK~L5k`% z8fIQya*KYIqwE2@B}0p#O^i}ncA`O+h{_2L!|3XPFw7h`{ERLaqH!qSG`9L_u0A}7 z^`vW!in&DYS^`UO%Ng37Q)q=7~WDndbr2~%1GZAs@fg8xl5DqngDqupow57h{C z{GX~3@Zg5`mZc^$;IH*Rs1ahrKd6y#0LMS5k=O9QP@`jle^4V??J$XYCt2ZzY{)P( zsl~kKz9}}1TYHQv`GasSccMyywx=acT-}<7G#Zlv%QQz^VW&quDbvc(tR6g0U}1~` zD6~H%(&YOu4h^5qPfM7^n_5HjKVjhX^E_ERxXeM0o}PGer&^XJ>a#;AcM0uURk+f) zL}h+dvnZt#i3K^zIG$5+wRMIBm7AR^Zp#XO9aEP-@iV{tsIg0xUR|`U{&_!VOF+$w zbhqETwmKcW%L zJ;%R9Bj?0_7mbj-{)cG9SxxYtq7n8#qS4jG*nf#eq4;e7KSU#p?GMq2Pq^8u4@;v= zv3Y@YEhY>HJ{o*0*P782<`H6(t0Zq9_6nC=>E?-WzfRWFP~b$jTa&9kt3p@UvDmFc z%~#il2ujs{LLnWj#7y;7n3QdRv|(lg%wH7fGZGO?B7;PC=+9As0Nc21@~ba8Q?T>?L|@mvFCzJB-gB7 z8VUM(`nvo}Idmj}uV!Kf^!bwx11|#*T)>bb#=dw5v=aJyyW*kWqAS5y}jN3uL1s9e=kYj?*2S%({?OV zzI#5s@{lLQe^3p-jPsngYyXPAMPs~q-EPwaO8hxc-eavZb~0vlCN&mS7U}I#91HyW zVXd9t|1Eoec7`E<#`5|E@%mTb>HhUOeSC6MxfQWu>(6Li>*@OGN}$RWN*_q10?cY` zT-WNnO-BI<nuhZ`1-gXTU1Ej_Y;29XZJZhJ}>v1*M?5G z6d%qaDO}sf5!P+@8vXK3KUA(;=~ZG0>ck7CkW%_*QL+?G?}-pTbW#Uym>kI zV#mjfgYyZ5jM{xZCqnu2=lqZCwKxFNUH$sNAUCf!3NrejNem1{4skjp@N#+{81PQl z!9Q>fp$C}4-TQnri!6iA+i!0&`+7QS;u2mVk*X{b8je3^tD*}uQx z5f4_A8^V;($76gtUN~=^EE{iKk46230uPPi%5a%}_%UVzpW$m#*O)&DqgyT8O{n=k zAB!;Pfk~g|=V$GC^AE1b)Fb1UiUVUdqm=wsPXHB?Ow3AXdCK_d@UOfBJZEya}qDg8L*VR1Y&!;F~y69 zRfpMt_lR+{fAFC8y}q~q^&~o44z1<)TL@=3KK&TbcXtbW&c=uiH}~~6py*8(<8&w$b_)b{D-di?xQ-zs#YfVy%O-T z;C7+p1E>FT7jnUVxeSzu?S2&c*BFYB%fFIItAtt^Jkk zWk~5hwyrmuTW|NzcXil>nt8_WBL{0jW^@Ps#1OrKG@2c6(sAcPR^IL>l}FZvaJ>m~ z390X#s$hk_FaB-#)2d7X*e%+W=Ax*mG#<`!BIqU{13Uy#3EKS03S9)zXB*K&w(-{H{|uM;cU?3f(1-d?WhDaEFn<3jL}&k} z%yRQ06ns`*KI9E+-S(Dyz2OwUOzQf|xb{5V;}#4ZN{5N$4#NdJ6erqO7cF zYITF1w}nhz5dJ5={3FRZlj5wNuLw(fE=gY|sSe)XKkyq*a=4W{PweGAtWiWmX*yZw zPxFlXwI%k~#w>Yx?FlTd!1Cnj`3K|3b3{)B-Dno)K+`7R>I7;tV5d6!T>o=AmU(i& zO9W0C(de6aCX8ATGRz=Nbza+OlDR4D-!CkPD8e7e_d=VFQ2=j1K!3RSlaS6ZAJVLa zdayjs3)C(MQTJ!_JtxBAUEOvVw*Podxh$Y9{W7o4tm5(UC0&^p^kwMh4#vf!TE)80 zqD+Woq{a^?6)+qeJPz7VmDa$(7vv|Z`fnhBC32%#W;#iWsv?qr0TxVBW|w}4CKVCp z&2DI5Bk-$qja-{j{^x~D3$L0x_HEh*B}j6!?t%NnMHjQfG8=wO{Xe_LM!gE3 zSMv$IDK98!Or~()&SgqzGsJn#E(0jlRdmd~>Op~Ae%=Y2zd3X|sdH;W4MU{np0it3s8 z@-=*y8qLOrXzc#?ouDem$14JKUWm(mUTEBWFV%vR9NW`osnr1$QL$|VI#j9Dzq z=+H1up7xUM_5`AIy!0M^V4iAS-I+RLlt_v|=;>ekuszUk@?fjdc9KmmiRUC;?OsY* zCiaX4*7iO7ywQD3{}3bB8aOOJI9sSIAko&| z_EQ~@h7{s-X+s2Y7^TaH?kP(N<_MuBsjOa6<5Zn;{a+q?nM{_S7PX_RMn~(Mw@vku zF9WHMSigD^HbO!K3adx#?UMDgwv8S+Xw=2S;9e_dc;B@(dYdV7#KJ-<{dZ203-2V;!r>@Zy`s;@YRPn#P61QvGxYMsJWDH zhIVM<% z0ReTP@cHK?%N?>|43Z_K;Kv_*tL|~FMv`bb4x=3)5pE*w*cl!QyVElZe~e1ETz=_Z z+Y2VE34TRfj?%Ml#44Vb_}RdTGHUG15<7SIlR?2-MTI*>!xhb+Kr?=K$S3YP-q=&q zVl6b>mXS1zEgdw?1;u^uG5$Rv_9%YJjCOp1!s(D_v5CP*TkY1>11jS{Z$5XDrqPGb zkd8|FVe~v}00u`xl4Zh)0uRB|Z{VS{${h{8r2I^}rlQ$66mCj61ml2-qLUaaa(5Nu)=bPQHQ2WqA=-Rm>vyG`=2 zg$2$EqeUu|9;lkE23BhF=7L$ptn^E0h1No;2-kXms>Va}Y~fG?**X+u$@(HKw857e zD#QnzTxM9_TY{3+#}$|@uaEtr_TP(D(&slQC~gDOSySyqj2U~ z42k}T$A9Mhp%I>jQ$^JqP+VL=<=ARkB#<>>+hl*nzXwO9+dar*BFLGI9o|*jeOE+n zNPR3K20y3EA_&DZJ9jq2j6GnK259(o|EURIt#E8TpN}y4xno>ETB)=cEJjh3s-45G zDMURjLsf$8C$jp1Lv-#@!MXfurWt{xr;7wHss$I!8|vVNsTUh7y`qlQ+y+#*#? z0+a}d3UEYK7FQU|oCNKEM@&46>_Bu#c2G^;dhrltwk}8-h$+yi|Gxl#K!CpqgM16r z7?PvZw9VPOno*K$Q|pS^TerQd$=H;Iv?Mh-CwS@otG$?Kw}Bsl@QQ(0Q`uJs z^7;9Z^fD8qVF-RJDHfEnI`-*0b1s3@=(x-^6695IN-ZTVHIi4oQqn>r5hZaXJD^i# zi!DY;i6H53iyb9Bsgyp2-(6-r9^2r_@Y7Of7WKio>~iMaG+yY;2GVb)8*5LZ^20JA zrG|;QcBIc9bIwltQkHg|jhVKRL<@%;&$1{>LrVQI;L*?w?4w+#4NY1y^VTpFUv90r!$9~ylMkWTk7*1GA9zHA4Jn=>U;;B> z`p%rtZc2t6w{DQ7Me{M!Wj{$#88D%JXV;J`3VJqXh8Yk8W;?rc>S)?GixJ1UToNt=PJoi8rHz=LZGd71jG12LbTu-Gn0oJv#bb(Z@K^(NyRplQZ0{Ng#cq5t zFdeccyT-sIcCoum#?qx`f-j1oiephECunSDTOl56)~nHV~V{ctj}~xo9|24nU-dLsuXvR z-RTrpZ*j`PKyfq%D8dfIZFQ6N=_%hrmcQ&|%jFwQZJb?eBB70Gqg3l(`Y}oG9CesCiPYBpx+A~T>EOOfYYI>*~*QEcPbJ8fp8*gGwXh8*lIYZvIU zDJZV0=`(;)SQ(i)A+&B44>;!Gq@0o1IEQnf&UA{olz~yoIjvvRM!n|jXY=%I{bDnc z0q58Z6bGX)MrxEAx`VS&%z8ujI}Rx3woq%rLNPaGumC&2zBcS>0qL8w4W=%+h|MHm^#u{?QWEJ{xh|iyoDN5s7qfUcv&KACI&XhNRKpRAuo9cjU89um_Y;Dd((# zb~vggOUbih%a?vzW9S5xl165Yo}R-f zHI*)&W_dJqz<^RWS?#ba29icOo!jd&7*0xYkB+JRrv{SCTYEt>t~sT3UVzm_lTz+^ zm~lHrYR1j+lW?gElA|>68N%h7) zb1CU+AXP=ac{J}nDCuQPa_v

    3K|Yr3j>?%b0{=;_7r`Dh^3fvxYrvqqgi)A>o6d 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�)&dXUeAFqDMYn+P1`)8#CO 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

    _4!V-er*-35(`q2t*K=v9hH^*%PtS9 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®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 ?R~ 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

    M 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 U;kg>^R3%|SoU8(=mY>j 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�NRNt@g|fiHSZI{z9)Qd(7TAXLf}HNTx}W; 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 z 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 z�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

  2. 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

    q1(vVU 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�x++Gjufud zLFbKZ{6A)Wg<OCCdXk617K+>< zQDN+6O;pxS2RzBq{{_)$vz%8Lp3dP!(-vJ+sof*@f@sN8 z();hZFQpjR4{D4_`20KW%#V5o08^d+J5dWUxPU|zJ4FJc4IGRwRqdO)^WRsuzO76* zSkDm`Rd)bG@GTBLv73Jn5`u6NQlnGRj?J;p9CxJG&A)xLh>@*qq>b?Tx7ZjX2=YSo zN#{KZG3XZ8_oW^NQF46AXfh(`1lf~0FwMW|STZvD$u?=S zJMbknDV+N=DEUl4eJ0@lOM82;f7xJ{DrGr^l9P8ow_32n&+9|9-KT0Z8?V6$U*a0^gG7M`r$i$IQze7@?n+OSzpb zibfXfVPg^@I8q)tW7HUAEAh>v@vuc~E)ezEX>O+aney{CDWCcL&C{c82uaXQh+ zPqFxKBUXSN;tuf-qNrn4!+<&uAsO}UE6`~`*(Twy>EvLl5h&QK|8B%6h#D$;;AtKTj9cYG+OTSbkz-MUE% zacb57sZfzbv&x=HV{Ks}w(u4>_mGy#$^U+l`-lKAQUlMl|1hinUUF))iWij?F;W$* ztg8@z$N@U9Fg)ckrilr6qyVF;`J8g&%qO7UqSO3XBo2a`BL%QvTaY5Ddpr=uh~6p8&h}%MK(9 z!Kx^Dk}#h9*Gc~$l0?TSWKjpqb*y1-)TKHH=lXZj0nF|dhNn`pTs6?jm^`3hEfpdE z8$vS0NJl4;kr#&iU$ug3<3>hYK}GYwmp~PT}%R#X989r2L21gzQ z;lM|&qYbnSLU6W#Nrt-NEOIF0gjFxQ+!DB^QR6H@0-MNimgs%xXwD)pg-V-HOc}Wd z#vK2vxo%~p>ECehk)n+eCFH*UvhN*>Kw&cp9y)` z1eT)+qTB~(-IU()_6};~Q9n+R)T45vSV`I&9xu{JviLoO@0AG6VUFLDK=m}Lz z{kx`damX)>H8*r5CMhVG^9tz53hH_T_Bp;*N^C@vCMY1N$QB@**a%9=UjWYQ&Gql8 zzc*W)L#k3zwMjK@Uj5F+zdg`7RKp{xi2bm}EplLfssmJLaT6j`7S(|o8b=-$ zX#(WNlO?JJ{izmc_Snt4sp$Gs(e)FDo{Gi%R4nEW z^aFm<9kxm`fU%@XLQ^G?sgiIf@}62w?kR$Q5!K?n7%%=?N7fLqCdJsUw^IHNV)WMo z|J^~1ZLh_dF(f*Jk})bhhBQZF|MbXeiI&1-w$-WMtd5UDXJD~eUB6k41H#!?|G;af zU;wg25hXJt+DzKbq_mk4-v+7ia7?f=#cXUg6O+xvxEVGkM2nqJETD#AsWwZB&6K(w zO{6-hWIeN*&#ca@-Ua8d#|IrsDrQh#_Gz{`p}%4WLkTWBG?x{U%Q|U5nk^a!$<{?N ztPP20iT+HHe3mHQ^LdAQxapBQ5SfAery>h7?!MlXb&&{r-uGH9$?^L!A{YSouaW*{jpOWJ5^(+{1WS^s6`t}7xqfV z#vB{V*sD1Z$XeYbcSp?7j1|+dVz6O&-MquP_;@m6Vg+EKXlxW#Kn(b&{}Qk+QkE9^ zYX#w2L$roqZUO5EeotBnDDylmytWMk9X}BNW>JCCg^mZ-|8G0`sFD9Sq(4g2|AvMi z{p$Y%I8V_0pG($)Fbq4cl<=#@`HJyMNo;8KC#L?!6Hz4hkdT=Fio`7c6$$z3>B?!A zioXo4*~C6_@n6ZsS0w1GYkd_!2n}~-Bnhap1pliN9O|mXRRHnThq%xZ@G5`d*u#=i zeCz*GI7v-P%t=iix`F@W1=5gbrm_B~D|Fppvxt}*og8OC|Ffy8^*}SA@jqRu- z{|lw;B|7i*T_zR!Jg8E;}Vqu*eyAHSF5nDq zRewJKCVt?A!|U||w8$?&ixmNYxBPc* zqB;OYhkhtJa3-KKXDB-&jzHDv(SLsza50T}g ze)NA@-kHuph9<~v1Z0{X$W0FDCI{ctKnCPO|0hzMl$GP!{7q|f)0*70#+%mSw7fqV zznl2F>>we4CY5qG%>1{O9M3@@xN0S?SxKuaY0cZp+A^Ew(90wLBR1Z-j$BdNm7&TC z?R>;m{}Ed~g?{|+Wl4Ky3!}DT1_7O$xuX>^m?ITODCR#xF~^v8{wd0M%HF8>kOstw zr&h*Kt&DF_E$8=-uB(F@qP|37cDMeD@!uK1)|5~%sh*g*pZ}hSxq#AOz!?O^&{RW$ zO=AKCpo(_4cJeNplzY^$#$A#~LY5#XuwA;aWG;p}`Tq`gkm8Xkp7g(-w2?k599~56 zrXrFd99*Pb{6KRVMH8t^k_9vhi`?x43?WzYz-U~OsFrXQXEOifE$fID|5uAQIeD}G z->k=i|HYF3#ghLi$)As%^zp)K+n)`ic@WFg*oYq{&%psGw|H)4Z@j#3!oa7sLuhtr-SM6O1pQwUK|&|@m$(} z?`Z>%IA+3q=HEX|Y<+|^a5L}GxjAuTa*s!_LOGw%peZO~?$M=W+e#+mK*(+>o0z>Z zEXY^W)DNUYVmSH_dk^#&MLKYl3Yr~A5z-c?4ztf`c93TcoghFoY2pSho~9J`$PK`# zxE@{T447OP6ywnBM}&cs9U6wJXygSnDs)~YX!-?DA|+uTdS_^E7lV0{S@cOc6X|54 zHESLId&!&{d#_cc%v~$O9YdFOr-=~-T{CAgz0~5!4q;w_l`lk?RX5fIeyp}W5d5fu zNswK1l4VSh0xY;<2B7O^%bATdD*_*70G1@G_@WXLtm|qUP?Q#dZ*77^Vznx8nxteo zBM~f-v4sbvl@~`KN3Bm3J7(f8bXuaeM3okBJx$ElAPy>E)M(vB?wn3JkI%-8mUUAG z*LbBtpScIRHw2-JIB03&2c!_lBPE6~ch-jgUg8!9C~Gc*;dH=RmJJ~=59(Ms*JLp4 z{;TN^HN*kL-v$IdHp^C_vO)orh_XI@S0jyFdRbO))>HB3U~wkvN_kOSaiMaN$@JzD zDTrFJI2(wP*@Wa@z{NcbKq7MM{w;y=1-exN;l3j4aQOn+D1|2MnDEgD*0XrFS_+Aj zTWD@J%LUY91{cMb&SQ{i2GIbx7^E_dF^RkLK`u+j4!(&o;CHpLol9Du%qjdSQQg7Vh`^hI;;;I;F6IIRY)4Fn*>f2>V>A62g_bw zS~>eV2%>q;V&Fk2xY*nUw#5X>5W?)6gmc9>e=QLkbmN87&(7D*#H>I?4i3iHYd<;4 zi`o3(6X8YYgdes7O?nrRBLKi5;}&;ihp^EC3BXoDr%jjVBe^tf#OjfN4it2o&r|Jf`$lBsHzFfz z#u-(<1*6IU7Q9iI{zhTCqYuFfD6DUUQFQ_sMJr>YC{1fH`x-Lu8Sx6$76wUka?%F+ zlQz&vb4eVgQ0`&fm8nf;a${? ziu`+Ol1hk)wY}NL0s6LelwZM8EOo4ZPemD^OC!L|B|SG+hynlxaXdacn#dAzIqn%Dy_-vbf`jV+0G*9!%>R*xe?EK^TptSpFDH`pr!MCxpI!Ig zQUUZKi={5R)eK;9nSKl`7|&?u#x)rw1iv@Y`3b_qr9A{tz#@Y+f^N``o%g6y^)Lhx7Z16 z*Ff7BgBXV=A-haOvq=SkUhfUm$-k|OiBbd^;#2X{PiT`tUJAT;v0n9~ExyIML4sx! z{2veuB|?i2v5!JspjM_=ss3$bqn>|HSn*2MJdO4Lt@>Xi{ojWfy%&Kv|8F87QP2>p z%2dVLRY0_!{@>S7!mzUhR{_0=Zl@wET28tD`*38ul0q{vnx;eNB+(EpK-RF_Cdx@4 z{!HD(|858gA<$f_pIJlvTWjUwVZ`TePPy*C^~MBXp;!ZrR1(sMzZvA;9HjjvxoP^w1<65KQ^Yia88h2=n@Nw;t`|rF%ae}`5K=pK^7V+;E584#1u*&0h zLQgyeApR|*fdo2RyA*lmsoMOzMHpxFJ43*Wvt}{>X5pD#fk@T3$?M-N=6G>UU4f!~ zHMG$R{<}n)m~{(T_TvT->5SkF&m-2q;o7+6C?G|m+i8F9$WS@{8^J49g<6j^^%YTh z=$7bZ;ETBZn z1ilE;<93AB5|E&c5+Y}w9_YX2c)Yn}Lld}qUqAVuO929RCC-)z^}#Q<`M&TTJ~Da# z4TmSo-30J-k3^om9dCOGCJps4|4xgbB|s;p=+F%~@CO|L^Wh=$zaI=?##k-Ypu6MJ zn9<_MnEW@1EA<%6O(-ZQ>~Z>U5=JD^E-eq`z#@PXQ>cGOd!^QkIMqC)HrY4xD}nxv zmKg=M)|c&r@ECQhIq=`nFe^URz!%LwZZ4E=_#PL^hr-Rjqf&cR9N5~>-#tUL@aSPXlWsAJxUbAw-(Fl%7eDxZRVN_~119 zw*WN~nhNm!fxR}X==P)+n;7~w#>QvGTl`TlemVf~qu%ByI4(IQlYc|AYMb>9CH#qq z(GrPTJO36SBh2xFpz0DFA0_J}A~jr#5W26J0+A*UtVv?3pY+r~{Qnm?fT@fVPV?FN z_nQ|#tqLeKGK?1gnIQ0G1IW(n6!`D1 zGB_b5l?v7AdRE3z3H^VB94b>>KCSWA>P|}O_a1G;gE49Jf08i+Hv6Botv%?a_553f zBB5EVm5duZ4J=}KgZ_Jf2tqw3lr)|UkTCy4!cw?E9+-f-2~*a8Z(mBzyUGxsu~!ux zm@@gd(;o=~?0|S-fUVUdF3vp!?Mr7c|K`FIc}XY$LRf#{9ejzQd@n-cn*9 zWuAY_BR*$r5MyN)u!5_tp8u~P;fRK@h!uRNfDKRsL1m_p13OvPc0jCIPv^dEi}KK#%46&&E~ zC?X@?R0N7V|65UXg2D>~0ikb4Hv&hp|Mr7B!wA4rkV@G4z8I}#eG*6Z--aTzTJvTI z2UQz#T7s>eoV3MB_QecJns2vO5a_a2F5rOn18!HmZ`s%%#gO96o#N?tR$JH zsN{#L(e_)9$q*Ao5CF3n&>#vyh!!P5&N(ZM02F`&ELb>jBpe(P7DPHk1i?V2pd5)X z0D_?q1pwelqYyghD`Rs)4cai5T({9_MRucsJyX7y((s9$4lx=z@qh^zSJlmlSO(3Y z|GbA!z>u`3&%ngAsE0eMdQF#c^8_Y4d&9viJ3?kk>K$cB?GNnY{Fpq*+Ha)t(7AJB z39?V!1X23-zmm#5Q8~fM}x?xW*Ad}*(_rj8V!@7G9K0~RL!k%Vq>AE zA&fZ2)*2D?mEC|$am)vD)p8pzm+JSF<%4~WhtcjajE}fcDtj-iL*>m%(K`c-N+iWY zyeGskxwJX3f;)C?-L>EG?04z{Pj|MS$CojoD!4FO2!215`}0cib!GDgOM*aIjB^W4h1m_4@X8l z#x!WW@cekE2K$D?2a}N;Wo*iq_*n*w3H^*zzFMr7CZi-MCXtnGU_fWyfgTJ__6Q7C z3Jr~3VsggvzHE$MSz`{f5wXFTxlsQcC8P9=E@2g57$VN2!t~jG{eZ+YoFyQpGw*^ty0M zL@rVuVKmY(U^T<<7)>|9zB0r~(}!H#)Y7jJLHPJpX0i#7E-HlZu!|ni2a?B!dBE@P z!j>5w8cXsV9aTgJ9hvhIU$1w=s6fTFIQ)mJ+?=hDWl}P z+PHp)j}&%}2#d@2w+q2?#7;GYfU3dg3dxRg4;-=8yv!1k=`@DBZpW^;VRWYRc2Iaa zW<13XpJ3T;1fA`Wh7a4>O*f1IfKeZhN(AhoVbL=5HXCfSmQOZ=fs5pEQ%E;ZfJ5V< zoyi!Aje4<<(M6+Av6_|u05VFvt|PZb9}CK6Z(|(kIAYbnICJ>C*>=$ow;k(?@k-$k z8{rN!mV8v(_R$`z#U6oi__#aLQ{jT=7(~D%q}N8JQ#-z$(+4q9L>;_ory~m{ykNp= zq#hnn(|kDA#iMX{4y(}&=98c~D%ax#xr3RsyOOqOL^$B4HG|RW)G!2Uwh=^m1#APy z&Pg8!TzhN++EG>Su?7wr81}_}py%#v@r==`&(D_AKH4q+k39`-R06sq#WGNp8^;7W zdjuKq@i)3rKk-oqV89Xlw1YoQs$%IQan_D8urbgh5q85*vLVs&_*`sA5Sg?!tmvp$ ze2}VvqXxL`(($;ZbuvkKLI_-Kt?qkLf-7l{Yt@N7#2IKCG(ids80HJs*-nRo}Sy%B+#+lCDX_%|fX ziyA`yqc#55Wn6_$V{P*&1w7vNdO}fkG+M*q+xRgsI}T!Z`2S%mFz!o&(O%H zWjtYT);?m_$om$D-oy}D8zob-?{idcH)PPPj>h@uA$Cs^032@rnuKMt8!*f;ihoqGIuH(qfDzzRBJHG+`5SOI zj2<@y9yQJO8^Ktd@px;-ONg3$y#ID=x8H_Oh({ZCKuru3cyGptP0@$oeWa!)e2n!O zu?P)_wEvL_&)6vH=&24YTh}lmaURYczUKV#HUP)Pj!`HYt_q*fj1$j^aofm9rF;eJ zH>T=HqyBmEkbZr!WWwzn@LAfx+Y&~WGd6JYVr~7x!u$)XkvAF+>;S%v&^2Pis3J=6 z2XOA6Qd{R4Jp+SRQgnPG#GNw&XJd-2_x5HEcun?$yoV!l)`8?17RGb51r&a zFeD77YF!EoGdMDpA%cKs&5azt+a-%Ajt*BxjvG93U$NI2`+qAuk8-_u?c-?3`DlX5 z7$4n^N>cX>&T+bsyy`u5&VO080rcqlaL?$x35_B#Jq5)|1E& zM#UrFbtIPY)^j()}t8lBjwch zy&LkLo=eW~F7I6<9p($S_&6USvFCvigSL_suiB_ca%KpTqc3gl2cNn8g9CXz{yN5O z)OY*Gb0fndxXrQrSfZMz9Rb9TPeEc3DTdSd(RI8}Py{V; zjRuDbRqKw21G)YnjU(TmkfsansqhtgFozoJ{e^v(sR#_XRXtiDh~u~-+I2U2=Y+T- zjBbC-VDYFkn!?s;K7!(vKfOAVNr-()5Ep~TxWUN$I4ld1?lO;LkH;LuaI_lBLrm$? zGAK?*rvzRSQ{oACM+!7P*TL)|H5wCN4#8Zu9$Licl|yZ5Zw##d%tAK|Rywj3XQ}>RKw*SeM1Vd+3G_hE}XCaWc(IIoggiV`%NW8WEz(h#W&whEdEJkXzra zKjMdL4#96MUa*}gho+nFmg|);b~T2j0M2!hAZaWF*Q(#i$EIA;WoB$yh9| ztzn&j#+Z(}x&y2q?1#e@N!^f{aR`Emq4CD5vrIz_c)05X)8~?{Q{7|KOXEuIIBZD2 zhDtv~1ZaPWFy4Wp(MF8cqzU5+FBV&t*->`XyW<+)qeI2##uuc*l68D^I2~_+e^9(N zphtvzI`b?eVtuF`s3AjiaFm80p8*71=0gU=w*lCF=hJs*9kJ@}D6#w9 z0E&!v8eRy{8a<>KP!cCFx7ve+ru}r2oXoB62&8S4B`WM;4k7(x5ebb87e@IE;yvPY+#uC}(Q?=wh4Gznj21l! zW{<4$+lkW0+zZn>^;RKqQL6h8zk29sE^edd-03)&$L)!Y{ti;>@9S{b6o_dZRqHka zDB89yMU3ZqA625R5d|QJghBGFG)?j0TPt)47>} zl8y+8qeDT3IgSbbi5~(<#V*Zpu<9FR9fv^Jy7n=^S7fsQpFB%yaf*kVt0E{98OJJhWhTVGl~cg52Caz{ypo$$AXBcUXPb7&zJHI?_WkcIK(F282T_B72NI# zg11w3V9030PENdNXBtQ#Ak}XQ7(W0FF%DUK{>wKbfdE%(2ms3dw&aQiEagV(OB>q(1z?;HJ!%i`HejfBaJGgn zl+aXqL=7XbV?I^!Z4#Y<-^pX9# zu`!5djGU?A4)lt#K6HOLhc%Lj?H))uCk9A|aH?F(uV`5mgpeG5hDBOMTIxrS*F@LUh+uxi7!K3QwRG6{FGF>>U6PWLeB?JgbhBZSM-{}Q zR?8!qi%rXXpqd-31~LRC<28iwOs8wqJ%c0b(J|ZIrQXoLITDZXz{0pkMIUkeAut;2 zFdF%ZJPd(D!XBXkrS}L?Avh8@#*=fd?cbCCCA=Tn_eKSapaKcHMX2 zYb+fZ8;?H#KU!_ZZNiV+Y0=gm30++8@dge9@D)djJX=#E7veigV@=)1*!tg!KJq~h zxKwA3ffT!k^QW7kRx@Ib1Kb=M(u0h>`G@1j`h$HL$$G_;!quSiEs3Mu#-%9oeO-!SRgSpxswJJyj#qjr`H`;bAch(}UEE z8GtWHc~lb|m3hauabFegIN^e)eF#=OK;ssowRGH~c13toI(pon0R>-tj2ESe9T>i- z8^>cImTVd+6dw=}nW&Z^@q91#Ydzhau1%{W$Z>d7qKYjO^G~B8~tG z9*Z!HV}310ZyTqul=&DL`^;dgJR>8v7Ug!vKPaM0JL;{y0w_nAA980#8Y0o>!kfLd zkvt75(;~V$Xa3*{su2vKI#5QJ@hObAz%sJCwnyfD3lajwkM?Z%Wv)gO0cpD-CGj4_ z^4WJ(Wf?8vY&07M*a&!wfDI6z$>?41mwy^1cmDZ#AovTL#KauMR0{fLWFFC%jM$B18A$8^<;$LS}GDM}hPE+1Ho4l33Npmj$_R7ZP> zuaR|cTyAw}=}i^u(mkT@FfR5GmD{-+jhy^Xj2;QFLm6<|qy1u;b`RPppPC7< z0#{F=#vQ%rdBF2A(kCP&+(%1fTj(zb94ypqUSagvr8gzI)UJHzde^0w;@a@iyFSRJ z_lUyF?eKNzXGO8$RRgx%4gGPSG!>}hiP?T6SH%GakuxeK-0;Bs$Np#cP9nz0h|%R9 zsRs4?2?B~woa4cI#*Xivm>30hAn(;#*i=Trf39PARz6;cq}kB(5gKn|$KMII!9S)85l;IB&gq_x5(&G5zfyWp8Y04q;}B?XP{&@h(pu@wvXy z7uh+v8@8h@N~5p9;D?KIxc4FZ!{_R@&9XIyO zPV9QCzI^*P-{)|NO|W|99Eia`O3KIw?obR6IT|kv%<--*oP`|kh^v3G)#s)vAJ|cO z3;Cx}ZfqK;D+=rKi29h(4=oS*G+apFED&QsyGM1Pap(XH+R#UE1oa-88`17!`>=;) zSXj*up@qa?YZysj?>`}5z_IMAKF-+K0Lp2P)`%M2^wS9jzXbk&48i5IJq-a=z%s=E z#s#6-j>~O3TvqU@Lau+--I#BS0I>la7x%+BC+$uVSI59H8aFQGLDm3JQQU~2eGUq$ z1V{baCm+P9X@V6 za97yrn);BkmbxYrkGA`=phc9Y`a3@DaxEXNwIs^t&l zJA%QS_}j^G1P7LNR*BiCeS=wTGy@Ucg~lTeYkW1B?A!St*apkVkug#p_pB$qYqYu2 zbcQ$aAM0$u#siBwM>GL*84Dpi=Nh;lYlbY3TeK!AYQumrgff_T7*JVrF02}#u#xWe z2Q)CD_;_y^o+4~s#)h771UX{)pFMnpv0P(_dLPyng03Gkg^<7&Eg=wavpAU!%@4I% zIy^d*kY(sV!g0LDat#nrUnFqRpn0)UQQrBd<{ z1RismO2*T;8q`OfX$z?M>mxWI+dnn+mB7I#=6iDfDnFemZ1otxEEn$Gjq#U_?BjG3 zfd85~+HrS#=+SCVk%*=PC5gN1;#wyLMVpM^SUY&Z39axP6rtXEtFf}q&569(^Dnwy zHLpo|zI-4mIJ8+MqUdbu?=*Y>i=m?@7#QWU69AO@J z#pJNTuh{Lf&(&1X4@AywFMZ7_%ur@%gogXU$ z3bZ{SR*hk>8GQVyRm6T_Y=`B#bkYmWR|W!2K%+koSP5Y|IDnvYKv=nPBNGq?HUZTS zKxY=>Lrr!t5I5V013optsw@Vo?9vW&@<&J5eF*LWHbHE1i_!?>9s?EfivdO0gMrPJ zgs>Z2pabg)bI_9=So$q4#sd>R2&qLu>!h@!vvK34N|?oA4TjtXHXz)7H|hpApABz5 zT<2atxdRA!RT*fOLEeA1`9sP<7<@uq{%D|aK0d(l#$jF2V4{^v^r}JT>mRZt%LDqr z+w1F`Bk0y?k7^Hm0K5YRFnOSQ59;K>cZdy6Vf-ryFoSH-zyEsI!GnQGT53Ln0rIMt zn-Sr`btK#5sGGAz13y2v!lHYi>9vln9>hJ|E`Tsg=VG$KK$^Hd!bkAHQnK;~&8BssZw84n|PjiwSs80|DY7mj*^e<2a~<-iB!)>~%Nr%5*xiIbdx?M4OX% zE1Y%2OzL1=7#ue6E2(9nnfi)ImYRJWau7orXCdVZj08uy$ z1elO2`Eg(gYVqKOVsjiQc?bO4pk%L}goAx0H6l!a>Atff`tm_5k6eB08P;Kuh*UG13_xY4t`!Oh**Dg>5|T;!+LN zFC(&QhBr~31`}-`|x(2V*IUO~s&9_-q%Zcuk%@H8$M=V~dVr6wD~KsQ0V-Gzq%SDAsh z3cNy)LD4bZT5AJI`ctFYs!S8LN=th&ke;mGR}R3mD}e`C(G!yfCPR$D=69FqA%j1} z%g_#p;0H0Y_YAtzO(Yy3rUUb)Up@=#)pb>^JnZ;zKHALw$JI1-Ne6_?1ltP*;Xnr) zPPsYd4$yfC4W2NLKZs&mTQR_48?nj^HI&JLDNtXPJ=N)2XYlGI8H4i{R42$_dM2!w z7fz8V%Qz1n?EgP$Cl1W?4${RBI&M#gh2lO~o&7j{&$*-pqLLD z(09WLSU&Jllj4EPZ6nWBz65NT1p|f(Cv*c}<3Q8%UwFCS-~mIqlMTA=0Fz4`*zy1o z9sPYu(g&1;Dd2C1>)CMNjzZv$qx+;XKE*M%7KIDDWI zy)kNcV1`?i7~cAd18Ek_bZcoYhru9TO*-VHz@a&)vwhck5d91>5PhvQ8Vsnb zrh&1uTJVh%+y}tx0GtNS=yUU1PEQm(U}bG&F14DccxFg22)gI*gS`^OFp zMF<+9gWU&=X3vW^amp@ z$55xhM~`4R4nhcR_&}+wFoV50dyst$utOaWfF<>U;+^kNyUPyWQR09z@PuyiV_?Ci zkPiDZ$fu3MAPX!5?YV(C7P`<)XgLfSKoEv{23W7Z7e9oj0*=VwqVom`dm$q^TI909 zEQ1vUGc->da?}7>Ye1`8XkNgAfPJaCIU(B;7cd641mBki&~rclQXEdbhElUFciq^) zZ0q}LXt3vO%pJIoz=OPC;B5NIetWo(5ylxn0tum#ga0`~XfS1pY`?;41Ee@FADD4? z>n?WBe`VWJ%NzJe4qp9u!5|!3%~d)G+uMBrSggST6Zzr>hm@XcP(h;#*(uPVwm%q9 zNNF1wtx+59s{yt|bimXk8GBu49(gD)+JJByl!I1Cv|N&E^=3+VYgKV<@B>YuyHf?O zwN<=4t(rXc<3s0>>%EZaUO3QNb>E}IHCHK^2z znTi(g+`ofJwvp5vxoMDcPup3C5`X*UpwS5I!bqU+9bxnhppW+N;s=Zjwq}`AmPH%L zX$-FpvO#qY2~Cj2^P=BmF=1;++^ZRQvI*_hLyYCEI;N8$WWii;++4o9fn2izhmp}V z@R$?Y1qdbn^~x-zR4&CQKsjrj!L3a;uFC~|Z^+1#zZ6KVFgUTWE>fV)! ziW)fp7Sn*M}NmHST=SZ9Q+7Av4%*FLZ}}gnMxN;?McNWWa{TUHkRv z&^U31J{5dAc{)OCZAKlrJm}%gB0t!|I7f9z2cHLpc{&gT)y~8SF*n_0VDuM!GB_9p z-|nZFR{oO)y91vpGY%~f-uf#Bcz&Ql_H4RAj^Kf{%Yj&M5NN3=6DHOUU^r*-2KOWU zM%=)MwDUHnz*i;)4t&Mrl)2CESF*Rk)6V?&BL_dAzfi|dA>}jd4VpY>_?y>#{@|;R z!$##DmJHE;@C^s?L7v4~A8F^vkaIw1VzBza(~J(i^}u4Dj7u;uvGSLCAcSXJrBeq@ z?Fs2Xnl``ukOPU-A!J;V)88SqiV3ZK~kLMrA1Cys+!7##woFqvBos_BC%4*kw#4=pfv z*8t#ceDI5+&OJH`HUnK`!W#oNR_*OLs%x1U88&hQ`1d&s*wU(B z+LER#1B!)?9Y=Qd44~pzRF!UYq|c!97+_izJs;+nM1bc5J`IoT{S{x^eJ~l2;pkXdVpC!siK+75)=p#22H=?e zDf|0O1VUpO(GM~xvMN^I6GmMm9R#dZz+r>@E=}|}3aIhG12ZVv*915}*kl_STqf`0g2$65AWPXAA(3pR8=2%0{H7sbwl3x!43HT)Bfp>2p?0!rp z1x=$hZ)L{~o}~roG$!X5cY60T12$-X_#FH{n4t-?O%`zhi5qO1vm<2NmG9IWp7st> zm()IEP-6RxW@HsS=$rMx^F6Ss1{r3ai^T)1>uh5rqhMCD4O8}xCN1?i}z8-tdz`av1gBrfr! zMec5h0&e3$4(21W+6M-8L$j;R_pk3 zOfu=38Tjvj=QUeT=SX^orn6ys%z0i&0ef(v-Hb{gSUv;LLg^i*5|JeiK4rwlul)xP z=nMz-p&bUe&cw{C2pymShAe2@p*@I6nHYd@-zZW$N+9DvcsyqqxV1A5B@Zc$Js3&O z_^3A%IPNa(nQW8111x=5JqT!W+yRn%BDxPY(ES%~P|Q;og7OWZjJz;~e_&|#>|3!C zQFW6X95LJe4~9!o7S4mi#+%^-e>@1V7!GmS7*&Z6Z*c4#2ytu_8(nRHnx{v~5e*z;j>ij8~keKEtE> zRh!PWo@ zU~UI8e|)FIz5(-Q$dqaY9DCm`9M!n{FKU2noAw&qFOUs67oGYJLn%d>o4V=)h0AWN zDgh4yk}WM6zO>=!%8WrrW;DJt*Wky4E;|CO)EKB|z*r9WV`@A@Ujt@f0Hw_py4iJ1 z8X%c-adt;ngO8@~1LkjUCx=1vvZw>C8(8A6h@;vED)rjYt`59d4eF#@W_?nz_eWd3 z4+szM?2LTaryRJ`AxbuQ;6TDL8H33l0v~YT#w|N9({`Tl;BD}4gDKDFHu`~9BPH*n z!4w==eGeunybDE_cpJ4>4tr1&Mq0HT;~C6;AccYa&7fxkF^~Tod7Vy25{(aVIX$Y< zf@j{?1N9`Y=Sg_(Fv#_r&>M?Z)(MUlD}DIG?b*KJjs1TNK|`8Un9q%+VffBGV(Zv$l~#$fb6epOndfcqGem>%}rBBp~u{()&V8Yi5^$lM2y z55h2Q3O2+CpXs9^KJG4m<_yo~t6$u!_<_*(kM*;w(DGYmLr zH4Yfjo7moCrIe8v798BEkfK~UxY8Msv}9ny!NGDvJ>JipE#YCHr9ro813H#g zWFUPeS6$RVF)bZkffu`*JvJT?SU1(At2slU^Z;a>Q7PfYphJqma=HV@ZdU?ry+faq z*Cy)K@G`0@g`l~70X&nv;GMSMhh|WC?*O>!jPs$rDJa|%Mh(Wh zPZtm3`x{fr)(inZ=oo0XJ&lhH=wk=lU>~Kz3-%6)`;06Wf+HBQ=Mp1pUP{WdV)cvP9PGVs@=V*CNSXz{kS zjlIX&Ze_y`Zin%d979K;AG+aTR0glVZlKD>GmKF8p2x`otR~rFp$5Hs$5EON9M4u1 zO-HkXv(jmtJ)+$C2&9~Y9P?|hT>q6B%mbfh1pyv-r;PN^@b?}mQ*xqH|DEXoe4YU{ zHq>q!cf%&Y!L3*}2ecaa6L&O_g1W+cHdR<36Pr$?X5gml55&Nz$Nd&q9XSdz73E}P z!aZbwv8bi430W=5xEMmdgTO>N9{_Tp+#(TaE!Z_kikOTX=F^ZR)m@R3ZX#v0k)~4p z8$d(05HBM`;?aZKd4J(Ey1>#ajTQ_rnZIFlgx6K1^l!MhFyRNSb)c}oF9@gEU}07* zLTgyADorwMB#~gUXiW_?IiOsdB2Q=+xQ?Ix5;0R#8Srvs*HGve#WaK#%xSX#kB(!h zuQ0Kjfk+0nVYLCOUn2yL%|Nv6Ro4b;;FL+(GpH8U4FksBtV;vN*ruK@cgYU${DN_M zaCY569xND1I#3f0Qp?wX?G9?TZK2C~^6$V2Sw6?vTi&RyX{|ee%zqG6v+Q7?4x+i8 za;^#_gA>>N4v@&fQ3mxU^bQtd`~%P*;7}O}n$gM&KR(X&Mp8XGpgH)ZQ|XuW0UhGM z12q3&&Bqe;CG-xZj|@&&PKWuRmB-n^(s3SuODyc54>jQGqx<%CGj~uFr?ldQk|D~T z9n^N|piK!D(~Q+Y?M_iv8U8Z;4#2+bt_VwMcMuIr2S};g4jy8#p$>FF*nJlVuB^Te zjNbu37g_@|VFxP$oyg@5T-TsU=rFoFE%9Y%aX`l`@FM$T;NpJXLE!)c*$JTzOuYjl z-4(TN01?kdGC#15`WX;+-GVv+!sMpkfwwIJ(%Y#;xy5xb{ss!0cj*T-{G9qW*v@5l z&If5y*pA7AsE}m`F9j(I+(FLvi-e|&ql1%fAJIm|-OAvcg8?{gZXK*_V1RGhKb>zN z3Og{*D9?JvGr&#m0KO>Jdja4NE!_Si1FKcZuHQ;PoGH$D%l1UHMXq>u;Um> z!o^NQ2T(=~RCN$hyz51YTCwK?AJfwwP!JFRCKaU{D#Cf!8p9b@W(3e~`DYe+jlkP- zfVd!rLAMPwPB~nvY0`i%eCVWHXH#NSfDO=82j;{@VL*mnYr;hxF!_a1!yE)bxk@+Q zz(xvQ4Lry|MaH33PSC6dwcii}5*m!j{UGSMaF9fccU_By-f`x@v*h3f7v{k4+Q{GW zhJDFk1T=6$N3)^(@sdGe4f&dzTL}lP|J~#O`eQIYVWrlPO)KKwG+eBpGr$q@(Fwci zhNYLofEc9=|Jo;Mz=qZZ?!@ZB{Cq+T!;5KfQ7@CdoCCI6G;Dx=w*h{=#(*iqAhd5> zfkXEK1ZdFx+qZ@viERyF5HD%04DyJed0vA1kocU*qqYV$PKXZLv%QUD?%+`w;4vH? zW(ZA?J{|-%5%()ML<81u{^H^~sxg7Vx;G%wBByZ!BR~V5v7ippBb#5B7axF{)>AxN z18Q&M%Q_GcQl|rjy2{|N(N$rM0>u3Se@K~bfd8&mNwv5{?K#=_iUsk#o{M&spu%6P zRZ)T9AhV{WCL%4+zYDPqy)h&iId$-(?3feFjBQ((l3L~tbSsH;z)@JfG-d5&wz-!nE9#<^n0lg zxOyNoiSBtngT1K{gpR>m#M+)-gi-F)q-o&&{D1@F^;sf@ATe$a#Xtd#*IW(5s1yml zL`PkiLj~kGU`cTJ66linbJPU}ekzuHZbl&CVoIqAx2I24n>0loj3G} z{h)(n>oNyazj1pbW^$E0f&Tf+uhA6)g!!c2;7csfNJ?6HdRfLiIN%o=Y{w4*Oa9vKkS4_ z0Q-pxENJO~K+?NRdZsoQ>Chwk zvzLWON4Oa9xp?6kk=R>w2Lo!)pW0J77wI`K(|6GER;of~ojy zKPqw2z?&YzLHm&}QyU%B+fe;8nwZA9EyOi2bJoA+b^Y+uzS>C+@`{kv@H7`XuWP>%VmBpV6Z9p{$ekK#BI5_U95;T2)FGLN@=Wyz|2>Qjph=lUpfM zJVAJLf9}d6;L;f>x4LM*)1n=N&dJXHGvuA<#P38Wc9PTINlx#A!3lD^jetSk$9IAN zM^-xxkrfH#m%smGB#3i>7w7f$-M=$g&-^gQqlEguq%e%vtS*;^!WC*Th8pBhgBxlP zh8pZpgU`P|Hv5}IMG|@PcVZu!f5zaVxpEM+dhC1;&h=+Aeh3K5#MwI>H;=gKV}I7t zL3;r4%5@1WIP^Bf3l07+AFdfUj>m4c*q@oc(8|!@szzT!?j*Ohv;lCU|1*BH%K<^Q zG5%}>0QlzQ{(MCx;PEQWUfqhoK{b9mpl|W#8FSS=b-K!&2y}G*nZlL=wdJ&=7pG&r zl+EeTSpFXwbGbnY>>&b=_y0OXe$t$H6fZ-tRaRlZCF1?J62lgO^vkjNXEG{{9%fVv z4LZ|^QTkL!xVxa5;}DLIKX-@?)yNt&t*WZ3^1Jc$&_7T0U{FBh{xUyI(c3+w?N=!hK|8b@R*fZAzMu@HQq z6YWA;nMP|U?#f;d-Xhza%DP=hu@+e4?I1IyFxV_>rh7JZ%FfE4xzo5=f~3Mi@Xr2a zWso7$x3NGkz@#1inGgYvV@{5&z%K3V&xFWGR<#GJl^n>2Bnng@@@K}CQUg#DaYJP9mwyTvMoJaM8&ATBBKVT45u)|nq6jc&nCc!9(a&YRT$T|lD0 zMPzr8wkYmhla2wKBh4}HdFXTy z>-wISeF2flAc>`_Ch}g8Qo444XvywrxrMBt_e2;mZW@q=%#9GGy0Q#XBYXubBQ6tm z(CMgdxhM!OA(0`Qb0N+kp`Ma{gy|PI=@QwI74%H0@sCL^GLIbap?R59@#KI6F-HG` zF?vY>53W4bTW+9cFz=74^Q?0k&tzD!bSo9BmDoxJUJ_+SjS+Sl$>9GYgApx!d3{*? zUt!Qj|5c6us~S6~@#VFju7-{P@AS+hA#l%C!yNnvMCe8&5uDHczeSP_$UQ)BYM-rJ z-q8A6+Z!7EguvgHdm!L<#>|W^xJ!5aZ_yz3;t2*gDTN>~5c>j)ec8;vLb!$C7BVld zSQarYU2ID%mgN=8@>ED?{Exa-Dh)({KN|t8Nv8s+xf>s>#95||@QnFtL`{?XG!C7^ zgR~28pd5#83X5s4=4j^%T56Bjs4$xqtmdfsmj(A=;^&3}gf%g}_NCXt{C50|xwWVm zL2P4eVw_FvWfRkEVO>TQKx%B(fzKfwHK?uzrB{XT<~I@T&xT%s48Ekyvi-jyufe-N zYt_(9SoOClHcFbU5@(~d`w;COR9%R0J8e-{ytGZ>wkY`Tj@NB?6xF(GbG~iQ-sa@} z#)HZ?d@|agZ7$pf?K4zXY1?NC5*uyQ-F6kXQD5h0w?%$;WK1#3ly$wD4@vwF*)!+# zzuxtmJ2bNZ|F3hC0LI~VXt4V5S06SI;SE4|4Ls-u9=xKEKR7*vP05NOIlxAQZO~y@ z9;P7<)1d$MTb0PP0!J7hVRB&|;IIx`0h9tG#8gn20=8&_DT2WiZLmcTmMHe4QxJg^ zgG~xd2M^2eg6Vj{dhk9LagJf3M2b2wVbeJ4s-wXFSNR3d2MwKxE^sik0sYzlB>mce z5iYjPXaD2rAgm%T)n(O5t*p9EIRA@47LgR$vsq0vlm1_gpULF?uSWh@^h_rIpF+?x zm%#ri^28-t1NB?eCR+1L4~LE%v7}mM`VbsiXJReISgW650{900LnLK)Dlxh>-j2>o z>)`||VP#TlUdoZblp{~9M1{%|s3&Wpa(c(1=!OhJq8;KWHhwS)at*KrpW`-So=`oE z3aY}NCG^h{dIbqC{s!q>Eo_TI@dctPb1~z8HBWS4IWQTAP(5PTIf!c3FrJA` z1+WXZI_!VCyh0G1|6q*|1LLwvqa)Uem z&a`3kP8IyrZA#&%ae6wzjmIA!o~IaKIV1jv;P{$Cil>sMk>V{Z^PQgwn~QHg48iB= zMSv$X`k&Bf3n~7|O#Dw~!m>|gIwWL_6`4rpM}KkCE|~kh@H)kl6XH#!p}!V^pA?@(Gh$J7~yX$ zp?r|G(G%}SQ|OPT&>uyyKZ;^YA6G) zeXETc`pA`3PV@8lx`-jZTeYVpAb91v%RX$JI2zLE%8+8W@4Lh@xuoQiSFX!6sKgAG zl)9IjsHR-1FzXlo%msmxpCbA-qN=ym^}6_02g~L~SV0hg>C^me^S=92uFCycg&_lb@MQh+6VI8I_N4Lj$rh*VpWQcpebS#)56*6) z^jg|_r2QF7#*RA;46R~4fKjABt>64}4YsZ2^Q7p3$f!6Me;nbb{mhF$L(&Hzu_O+we@KHxYPB|3Bi;hz(|Xw7No{0a17KY9F_iW?T56`3n$z4QHf zMV>h{Z${j?+ql>HKj6=Kk=iTlmFp5%j5CNsTVacbIeJ7kS|ROUQ~S;A`yWY;q*M;7 zW1)TwTMo-6Ob(S0XVGBiY&WRW0J1@y26YMZg9d!8{q@|V1 zcR&7j#DNBHbs6+|AJ}j}0}Qoy0Q(0%9O%%S)Iogmm*IEB0d-`OfwBLdGr{T4T94!~ znF4KJGB6pK4BRR4&su-}K;`2YK8BCsmwwXztfkmSrs_d&3{bH@SY865a_239@KMVD ztc7F%RS+F3mDg$rzts@x0u{oND1h#o4N4m3B8j>9;KD)&-2Z;0j_{17AjF4zwA~DB z0!{Gco+anA|3_jXdY|}N*;?oo5^U(G(r()Ee=|+`PVErQ3nf`qLUlD0?c*zJ(%I47q?5i`K>y4Dhoq}TqdKbj zvgPfBkb%OHK#r1c|1Z&QCfN*DImvP=qGy>Zc*&F`-aijch!m${0TdO{vrJ#4JrfTK z%rGH@Mx^cjhXg>Q>y_iI96+gr9MW>zK+z1IETj3@Z6o|-iXL%A-=x(4m0Uq!chzh{ z`v8FENg%F=k4p?Ur#rj6pD(Dn+w z+02n02vcTU8*y2o8w|j+{qr1|o&W(39NOyk?avB){GeW1@>}y29Q2Aog8FB_Aa1B} z*s9p7eJ%3&7p3b##9)|&2--P&N`zmeqc1Z zc0LHMpgK7nPIXH52=IRzJ}d*eOJ>s4c-k7=gyUw@*o=74gLz{qqQvMKa;PsXY@fZf z>;HLTD$}6n9F2sJ^yy^=$wvepHhi>Hvj+em1rhDLY1<$^=E7AY;2p2O|!ARY;BvZjrS?)pGWWp^$e0H z(?O&p^$_KlAxLbrO}%YXyRB-s4S0TbTlD8>XBl*Y3Os`3!?3ka6<`t^kK5?|pIpGW zmk3a!1Wjq-9iAZmEMw~058+6uPmNq^H?%)nrC5BmX1Y45K%3sWS}B~Jf4+eKRS;<+ zWYQs@g$92^IJ{PS1lark3V}6=c-nvnly{JIR*3XE{jZyn7PV4S$hjVD1w{K$&j zRxbd{_P=oRTmk=AS)4mT1xi#}EmCC}>9MT(v8?)O$73PjkA;BWSq36N4PRcqelg-Q zaqv}O{%Z06YVntWG?@9xjnzAdXBR@$Rq4w>hCBshZmhC_KYL)|91MU-qWw~dHky}G z6u*=rFj53mDPOA4`%;BoDMT5rBvuM!;&vc;knp3&_)c<(mDcbR2L>Umkm|1#nl9D# zp!_!_R?6KeB>uMp6rBTdaV!uVV)+YEOU_%r`T*bV#`- z`ho%WxJ1e1%mdBN%RIih0RG$tC)N_kHqD@-RDGZ(En4Q2=HEk>t81;J=1x}{0sd* z#fYN|ZQ#ai7y7@>%VLb3St4(t|A(w;xw0mz+v$Hr9%tqd3#T`DhTN$)fKm(#{XeAY z^r46ccTah1u!m&5GMkAq%w9t1pU1Y3+EG!WJU#|pyP$c&&DaLRR0sY%Roxw`+V(X^ z6gm5I1Qd=h*HBs6rK-pk7|M&6imrnA%jX4feOK-MmokNMuMOoktC%t5$?IjSk&aOd zIOuZ23TQ@khR{pgPPs0;e_p$!$AnB@dFTI?IG&UdbmJt3m-*ya!IaDLZU0x+T`iYU zN(3N4#q-G!_m8Q;1I1sUrmnr<#jHd1wuLi^;s0amTF6;yahuEmTKfL~^V6q`U0Gtm z%qspVt9aUfYT5_TLG@sn@>5;^Q(Z511$2zRkOxLjlQgtgI%2Ovd^%pLw=8@A&p~u# z5CQ-I{`zrEM(uzaSUA*7e_lI8#tunfXTs*+9=M5-A4!UICD;k3RN>IWSMtLk zSLtZA={(K`S6Px<9nMSlT^lpw3_)X4`hy|nTWIu`#YUZvMA zFQiOk&Iry;W%JK(eiD&{3rYx9$S;i{-=8^bqYTjrz=0o9)UEroi8*0*L>5GdYX6YR z$dq^5c>l#%N?a;9obr5FiWUBc)Q2??Ex_snv!h|ZENnLR{~Kdqi&|7moTQaH`{V%s z6H>!FLnemX)X>VlE_%%<57s|}6*5)>j)5D_Ji<`)2+Q66rn@c0gs=i56$&C${B}fg z{;Bgv=n;u2%OU19^8S{Qw=Kbz7B)g@OE8ZSu+^t%=(o1-Z*AYNgZNv8@oyELVDnp0 z;@^T2=Myb{%SZfMKH?vPJaHIU*dYxfl&3R&SmEK}%<)Yqopn1IEE|=o=fy zi?I-`zVn@f4;|b8eqRm^PMJwR$^!l<3;3B>QM+CNQk2E(Mv2j1)J{X8lyx?3AFToAO6dqtJLbAc`7UwI|{~2$^Ol$ zG}fzFmkJiPY+fndD5#fx_%qYERS(b^T@pU|Rg|J3R{aTpAM7L(|3_-F`1l7$g2jt< z$af}Y`tYXj%{$4wpBbEpQXAsM=Pv)YdSC}h`gHssX|B<|vW3gVUbaWY?XB2o+y#s} zRIfk2*E#0>k2GP;5fU@#=ylndh;GOj688Z4XADsosc2<#L_$GoWcCvmc9babjFgxN`IY zQEzljIfcI?W5Q5)_ge24D6|r{w_PM*lpc zaFKEkAPTu8UP-8K_yNF1|9r#ofLn)7p)SyT&*pZ#{IiNF^G?o#)-%cA50r~%0v&g3 z_RyZ{M@ij&0*d?Rx=DDnzaGd&M6BZ?BK0lL zH$5B<*x4lh$Ks~ZBv@$)DEK{b>fU^63rw&7nM3S!u(jvYih5GSL|EEHQv8&yPysBom?x!GQ5JzRk3#=X9 zlM!eiV6C%?45*Dj7jaZ27w}xwDs?7Apx~l@WIx3jiL2BZ{HcKm41TlU;BNGV4a{a-Q5nkzIh zlh(b5X93*+$`#QS`kw%}$7>ihIsxM5+&Ig={NuH;LN6Wc&ti47V>(Obq!5b=j8)~a z47*s1Kgs>lsSu$*vz2)iz_Rl&Fad|6)DPIcq*xcZR zO5k*2t;rmgn3bs~VE)}n{10)B_x}b~6^!3$B)8?Aj-HqIioGJ;0^j(5(4-nl5@c-> z3u(oy*jDIaBZG;z_s@H7l7wHAi*6K|(}ct8u&ZZ6I(TWuKdUKn^CT(J5)3%mJTL>6 zM3iV2*q;FrD;eYwp{P#~i9i+LO6Vq8{8@*RrIrOp@)1P)na?Eg#-F!-i*a9D5GJHt zDkvvrojM~5^v`!=;OHdW3(FYYS_)v?#QwPjk~OG22D%Reyk^3yDnb+BpSK&jps=Fd ztVlhv4Xq6E?*B^JIW+{VN&BFE#2!5XMnKNNP%;c5(Q!s%zB)1gj5Sn%3WXb02EFZ0 z%JsMx1~UPn`DZMSu4)MdP0{8vUH6`xXHpSsA#SA4w4%e6QLTSWhV`BSyy zp~AaWYF0wj$phSoxRqykX6DU1MMRyjKkE^VTm%49;+``a>|M#}M!X19IUd4^H)l5p z=qTD@`NaPNRWZ4fB1hGUM&5ei=eo@Hs+6Qb>JvU8>J+B0WM%Mdqqh`N?wjJ-$Sci)7aJ$!~730 zq`&Hbj?5pJ6L?bu{5b@KK9t%6uo0~=X4SeDX#ZNEy~d}n_1SCjJGf!3&&yU8`0?v` z-!AnrBZdE(6t3Z4E7ZSMsL%Y`l>KW{Hke<7qJIqv8>b~n&Z^8GY?UzOKMR1vQ> zfxp^>w>`B9uO?x?nuMKYQ~{LJgLpdvpaA(|%kTgp@o&ly_=f#|B(jY)4$I6^%dlDh zpvRxB7`$bXgit_q)lAN7_Qp)ko4JY2-1I>FNQxqnq(nM;~fsY}Y&k%%%FxZ|2yQCtPlKPePA>i z9xT=m7V7~!9!$@EFg+WLP=7E&T{p1O`2&VVDHbmMAbzF=?SKcM*KqnZoYoSyt^oZ< zGZolWg$M-}TVO-|U5467gzqYRzpL=Y(Uqi%h3{&yzpKUJb^=z{lfE2;uVn~mv7^ae zT?OjNF(?DFG$2|^t6m-h!H9M0fOJK%Rv*9H)#J`X!$GrmV*B+1>ax` z!H+nB-I~Kg`z^Ehx6JUyw$wKC|3rkq7W=1|aU>OYrtJN!GC7}h_I}pcn?{P4EUVNi zhX^uS4kgI}T>ZSjFJ%fMD;~V2Sn$-rJ9Y3=xG5YQ|0x{*LyI}Q`M`)!0J!~AIR56( ze`z}n{> zbY8e;l4#=b%o6;WB{8o_8P z2~#5`L~CS#WBV&T7<=L7;Q&A@PteTz&c{eFS5Y3TP;*qNmCFaQCd;yT_%k2i&>py6 zi6gBB5bgA5I-oM1cvJ+tPA=>8Z)#mPamxgP+UC~4)=XT$`lLXJP0IrkJ~;0dtdnK0 z;*iL}?MR>*&AxF<6aW9eeeVDN*CvpgWMUKp$OqTn zAu}(jlg)+^Iv!Nf%i4NdTU(n=Rz_|l8^AJ-YZvHwG2zQc_;z8PbClW)k}wGeYhbU? zj@n#V=hSXP=D^g2owfD4_@3n65~T93p;js^;pSS^LX4vKDz{Y0EJ$hr*(r(+493sN zCXlP6-Ilv0Yz5fJ_Pa&Kh5o-JsU5psHJeathGUWA^t+7Hr*F!-?`4+-tb&_o`sW7= z9!KawR6bv#4#kaZSpf|}E68~Arusu^4#DuWpVIx8j=E^GU2$k#YV%(@(sA`6L?Ads zx-tl*>1$~J($QXg9HiuRXx$F{NVD4@jZZgQFW!z(@G{=ttomTZR&Zg6k0ft|>Pt!f z%m#&4Ynupr!kU<`@nwvkVrS#~xsZ`@w~w z1?bOAb8j>TEgn4{lIgJnz5Lf_hY?s-6%&H+~~;9Ub%L!&VwIAUeb*7 zmNY+_w*UQTJgO=UcrK_UnUQ!J6+HX)za(cA%-hmPMYKo7=@GzNR7N>iYM0!pwLFL28xdr66%iiF~d!|_cIm{ zH*;3X6NzTHsnV&Yohn#vt4hI;J7Yi9qWtyA(G|!2du# zSP3UJVVv=T+9wV?zAQAhao`SJf;bCBdV;!^O61b-&ms8S>{a~}D1?U(oSgS`IpjM=SoR1b!68Rz3M_PF0>dACt^!-1wOS;bi4XW1YA+0Ubf9QNP zsaxoOD+by~%iu0OQefTS4|D5L0FB>=wY?wK_J$dN!w|q9h5)wWT=QXS`oq-pGK_-g z=K%Wn#esRic^P5FmlyU1E4V*srWCy)`hOK6JI>pe9e=0+t`b7<$;#gX*f~I;7tVt& z5wD^D>n5#?oJv=J^qB-w3?Zc=JQl<#8h?_%z& zqvx8`pKDU*N~E7FQHkw0~Dy?hE1t@+lKyg&ik{g+pXcXv|6kcb{2l+lZ zX*v|U1ib%7rf(q05TTHyEw6+O@Q@LfJ=dRqu0M}}OR_(gWUm`bWax`P?ooJoB-pFd zp}R@(z+`rZTfPE+hKV74hRHki-v2`#j$~OSYkHTe230HVbf=d@9r{;jL)pClcMz{) zq*@c6`qx-VXQEtId#)jNH+eJ+s3H1GB22 z9XmrtDcrC@1B!xL@U&&xWEuPdNr7UfH}PjGACG%l0*^2xZE(RWg)4n-x|5}76GTdZ zJ`a)7yKC{kVV4xi*rf^>vfj!|e=9Hj>aD!!xALM-Kv{j^R$X4JF5IdM?57wj4oP6` zqqN|`TfKqb>P>>TlJmZmoHq-@)QZk)#Za^UueioI2YnV1>yt*SVv{;b>xVZPJxaA>dt-NV5MjYsP&QM?l!#kM5)Q%t z58aT8ezZN>nIrz}qQoBJRv5S%m)Fd!6v2>W z0(wddn@}5hUjBJX#l;mN!x4c60!@k{muy$fW)uu2M}A`Cf%WGa&}K7=2rT%Z>C1J` zJbESaxP!)Mm6A7Qr=Q9O8L3|gryeEl{(yU=|BLBh*{fy~nxIV75IrxudiKytsuYf$ zGe(yOcg#ScPamYi*$0{TV2m$FoELSsq3966!2XBw0x=Fw5h~y0lpq(5)karqHhsBg z>TDDG^H+{IiE%2(iCW}pJsTo?rEn1C`FT)l=)7b7^HxpDi}S@44q{1PhMo5u&i}!9 z5rjgEs`0Kgo-_&^ZW>&AFqd)x3A;uXI}tTHDcLR|?lhTzp;rEz-jDw0Zv%<;_T}AQ zlcs%HtUo`AaaF^zEMQ>OhA0u|`)4OFjfaZz>Y&B_W4~kmVN0ahi>nxVtrG+#h``ZJ zul>(P+9-`3RQN&&nOEXOkyty4YiUPD)+==LiZH#|pRr6W$_x)$GyqXRj5BT4quc04 ztN%+v#0YD(b_5Jj5!N@xqI8-%!*FTkhBllj4F1F2q=x$i#Z=S|-*r4dDNJQ${NmVv7-v+5^XmgCb%|0SEC1Tq?v5 zj5OwnL*}nqX`EG>00PWMeJN|0F6sX?!>}w1dZ=^G2N-l(07p1*EPHC4bnicx3|KAJ zTo6Q&)xNFfz@_Q9`}XHFPjfc5kWx~882?n_ZhRr|{~`qXwt2khpGxG69D@EgL+H>9 zCmE{jpGxeD@PqzOB@v~K8ez>U@K23-+BH!uO*kJaO@HwI-_gruR2GVZxG?;u6qzBG zIxA@QxCy8Ki##<5A%qcxct3#urw`sJSM!_w`QiPqWMV;vNrPIVO#%WpP(+x_l3GxJ zCi+n~PyBh!OfLr#NZ;HLyV5kku^lDz-#oM9&t6+-jz@{4QSV=ciOsz6|Mo*A0Z9-3 zO8Q=lnrS#ygxV;>xAcDm4~tl6njr)bq}A;O-L@44mx}s3r$n}e2F(t=+mk_D+~Pn^ zgx<$MR)7ZnxUS%QlEQ^aR594-8M-D)-8dp@2B?z-*wj89Vyy230fq4`lyG#=_x7ss zFxWu+pMH`?WT7(2*I}z|Fj+Qm765VqLJv>}^hGc_fCJVaKwgIA5sU%mg2JSoE|7f+ zO-@>zqN$VpnUahaAGHUph?V4Ean40rMQ%=z03`K|XjR0*0HwgK*`IB}9`5aE1E)uI zuMpOfjf(?S?<6bTiL$et`J!WG#zEAs3`ubw5F`!$S z93TS3kN}=kty_0@Jq_H7v?&A|Y2~j<5G0riZg!>SgHiDJ_jwEebq<70J@*hl_z=6a z#3oAvJ7iuDae4%#xB97Mzj@=zi%eBIt6JSqaH*s}G;2^0EkxCoa|&XUN`=u5%^o0E zYYT0)<5m{k%7R;0SXXGP3b}2LhZF)UPoctJj0%4-DgDKybg?V1SQV~E=&fEjrTl~J zg*72n4QM5PBcKpa{I3Ub5%MgOMkEy+Uc-6>-vF)c*&I%=HFdV8w=Ythp>-TQtdWzU zqK+DcUFSxPLKpO731A2PSl%ktXrnu$pY4oZ^bw}btgVcie*Q zZ2^_#Ob2|Hh0k>CGa33!#?OH#K%zQScV;9$^NY`n@H4*mjBjIsI3M{z##Y=AtqAm| zYXs;K^4QC$m>fgA>E+$ydnU3J0b za$ybIj3%8xsAS11GIu7%Fs=v#7~oMLgAgGIf*2;bl?DJ5fCMgLOo}8L8X6>0HmQLC za5*xB5d#20L;(P_0!1fo1LH^S)3*3%lA52!2m{G5j`qPtWdi>YY|?} zYVhfoqZ|spxi8f}Hfel#dk(e8v%+RoU3+I5zPRt5*EBd^EiW{A6qTzdLwAqsnJ*`% zgA2dG+cnK?xKSM(RP<-vH8y+`HGj@!~WdKd`}&lC$9OZ;3oRT>+o0;Xr@+AB9W zGlxG3+n2Rd=Ytx*ET=R$4Cx+2mFeURRXkT~4o@nqXV+j&`)qzzBBB5@wT*k`hZ=Zj z>OH71Dq9;kXYAlSAlGvO$`Tk2O-Y!gHAfpIWe_-)$_*U~XJ({~#O8uqEccXT*P95l z1$OEJwMW#)?Ni$3xV~*Y?>j995uyK4EJkQGNd7rY1o?5srPYT|zFEZu)?nLh$D0ib z`8l$cUTkLwL(FSv_+m~GdUAaOqTMKx6HO2o#2+Qj0QM%aa`wP}Uy@`&?-F zuc9xKi?TMr_=T85dKuT}wm$HZzTlGo~w`xG6*4Rwt^aCGpy&$uGl z4#Fw4fKgxfY#)BH)70+0JJ~+&$XG5kvXqT1hSHm-m!HdA#{r|q`Npe@j@%|;=;06H z2McP&7dWfwAvUHc4E+rfm^l28V1U8ob^sCkcBV~}9!H`TdWRe9{38GZoiHa<_k>}= z4M&%dq;wiF1OO4RQM+ImBDNne?csg6p5g9(9D6^zKb2pu?(cirpooD19LMg#ePuEB zyruG05p}a9>W~~VA zRv9(5!~-}!sn2o$gJYs(Wb)}yd&VDcaH)_E^J`#pobq7?7hwL5qQX}#J+*dwK@w4O z?>RQUXfP~c%wjIQ9(3sHdIQ$Vs~M!z<2nXVRdy`cS8wF3vA)6p)oDwu=SRp6y_I^b zFV!HxoX2;x0n0H^D1)%x8i>$508Ji zhW(Pvbrk<*W^a!+d}nVQ7e>41PQn}OfaFIZxD&wDxRI+zp=Y1I_p#)RN3hyV6tvzk zWNtht%7$Ek!uVY#cGMxtIJsP%aMLiL3Q6sP&nO-b1D{4-W-y0d`xqiU6m%B)+Syu? z4?Z>}y_sa0*`&oM4@T|aEn_Cfpx^P^By&c5|C&STULMgHYa0&=o`d8}w309yATSg? zhK);Aewarg7<-|lEUyt!EPT9&%FeH)G|plDaR;lRj|4m#*=01%>;reaEz+vUXZGTau=-kyVo-kU4~C;}X_S`NdmyN4ZK zzwdU|Gb;aSCnav2f*rej{kB!2gax@{KU^|7Hbzc_N)Z^QAL&2)f4`ex=d>%A*9k19 z1l`-C@*9r-C`dQPmT{RRCq8S*A8^)OsWm|3Wyk7KQ*vekYP)AnVh$GCKfU*K&ML?F zXU3T+#?KtSNX>*n%RNw_$3F%i*t>dG_+u()HDRM~skLB+>OktZPl(}|Y!?xD-oU|P zpSdZ(460h%yTN;XgL;@iIsAC|Y;e4xVC#$*op|T|2rMap;Rm*pJ{I>fZy+u+y!&lP z{5M^tZa0*>4I9Iu`6C-Dsvm3M;i7s-Bhos?QMi{7PWO){twXc>yYjm+&}>^S@@IN! zRSau{jH%3n5oTs(OsQ4^!qp<8(&F0NQfb}crn?0jdgaRaax)g9Mh%fUc4E`ln)Ywj zNHe`5x;AfERP}FsYX;cg=`63jx|&naVH8S(xR^Y~;}hYj(+^OO2N`Mn zApdinJ~Q>QU%J8lpktp^3%nn<$+g4VBs(3T49&f7nk5FwM z9oRqU#Ie0^LtWX`1w9^+U&Q%gsL1F&s0T)+Tvd9VOF&$PX;GVa4f;ICnT9u*q448h zCc<^VkYP;gAvp`4@;Wy8SLQOn*`+_ag0=~2B!2J5^?-&l6k;5EEyS@;r?KLo{H%6v zgVg|I;ro$nn3f+A4kXJ)ENqJPODkL3Y*zCK1_m{sZGQU0-7Va#)oo?XY^tC-E|6=i zhyCWbFiRMlc0hY|DzT})@x8o|IwC5K@Iyh}e8x*m+YfY`bne#!cFuA;roKMpp{(=) zKEERnS%@u&`7<`KJzdHC4i@{+v;*h3w zJmNA?r_zmvl{+Y5^&{zzE}{)G!*kc#D#?0i*#sqpeC#s=Hs?QT3MBo~BNi4+!LGpO z{Kg)HK@=0<>gkxl06(CMc%1yr_&FM9`Z==Vk1j%UKRKmrf78cEf2=P*Xd}Cw!N`-f zDRM;G_{bq#@2Xoge|dbxk4JD<8q`slCCv6LC}c~$%a*=ReFBy2*3E}!RVN&l9X}-w zowe=`9k9DHHtHXH)`rV`-d9RneFO=uBjN+j@H`CWwmZ}%gguJ)3&P&59|9nRe~yUc zBajAS#~mHppj!LCys|CHIiq{c%DPX@Wf>}rXd>4u{LT3?oIr5PSg_r~!63_ihc$(~~=J{kUqr_}R3b$pm7j6$68`k%5Hxg8n2e{-IG=9Mh>%)&tybcM(9KLN7ns%O43}+G? zLv<`7X<9i?M)ned+K@bA9?((Z17}$1K~;=`g)oFN*T_oM86N;o(|L5Y zFpDAlsqCQSLkpZtu{zXh(BaykC>lyW(|}Y03w^2~ zQjGo=`chG((2jILlClE&$4)f(!zXyTOGm-3Q_tM2=a%uEF}}ELSXK|X@bfK9%<>)| z2SLxLU%ssKUPoXkAfpFOhS}-i7eT{fOw@mC7t`>`S}7P5)Db8jObrvo4pb1n28KY$ zFOV>&+CXLpx7rhG$;PVIH=q&U3z@`xgUA@!zW3;XrRvkczRpt0dXR zRTR=83!;xoY6&d#c`KshNnvpAkMlb%^s~)lFna#PZ%W+HkG-|Y9gVJr`?JBSokV*q zT^2odG#hNhTCwBdqMEqP=$SMLMH8^tlYd-=fKHspMtqO@KZZM^F<9;pa6^vhUX#Q4 zsX?TP0UEbr(`T>aco!=ceP|4W(KCJwsli8l%Y$=2U>*v$zuT^9`$4(AdIQV}p{9B1 zjrDcRV9wxny6tdy76&5CJO(XS*G>GKUEtY!vTyKQpNW`ZGLuD3OC*!rNYu1LnlK78_V1WMgkj; zJCg|s4fYei8tK46_;?zHK)Q{SbfpM-Krz%Tx>h^uz<8|3D-hyQ@H10`fvZ@}gLK21 zKhfhv&tmffPhowm!o>bfTS)9WmMx&|1I#h@GwnQU!EejAYN5(N88W)u4ID6%=Sm;O zGJkApTb3s{ad?HK6&%8oOoMfLX@>k_52)dxDTU*kGTf=EQ82L${U68Yx%*E*~C_ zs+40|F_?H1us437V?%JqK(2>EW7_*sM~}up(<#_cud#j@#Zos=qgu&_I4O+b=N${& zcxcK;k@Q_6*X9Phu6ctuP-qba-?vO-?<3Z?i5y8Qo5AX?DjXEF z_StY;cFY{-fy$~*6wUmpfdK5GfL(_Jl_rwsceP78QN~fc@b-0DjzY+Gv5Cx6!Ur7! z4KHVlJ08zrvkW~VbFO94kNqt;yu+nN$D61bIT&42kU#bupXAL2`tY$YKpb&cP|wE? zUL$?Pvj?ON$}SOYGGW#{>4ES{{s-E73yv{5??x3ja0q7SM_k5k54l}re5;lMuD#UG zxEb6P+1EdoQDY*@OF*<{*@$@Hs7R#Pz}Q4PI(pD)?B$Snq#S%tzBO?Kpl(>~HoT1+g;OabaY;Y&`K}@N*6>oNDIw8FEA4u|`j@#7?e6-gGGxdSrZY za|#07z?fA*^_DV1C%MAmePY76Vop0{0=921`Tx}7I-*x=$$t!swNxFi2Xuyg5Vp@bj8HRBSATkmWr@>) zLxd4D)X_Yjvs()l@`WVwP>yLpa+pq> z`JqjDP|rVfhhR)Z&+oOg?TV zx~ULwZPx1t;udM7)uDm~3<0DKWkvEBf$NcZD8j-Xw+sqi8pA*)l^m8DNPWu`~0> z`a>KI28cgQOm=Yd;loJ}8jx0xN(^dSn&Cqac)3A!=k_CJ(zyHMHohH?$T3#bAH9O&?ax1Ak}ez(t2y9G05RF4DDo6G~Qs z0H)>>Kj$#n z=X58>HIg3|F%uQR4_R-A2LF%FU>lk(?405AgUQ2+*=4{UGFlHKHfB7KPyk&(qQ8?E zYCmy2iTZM%AAMlv#yT7+GsdlM$Opy5E6@SdEp<)jwx2%)Gl#E9NZX;`gLQK<7il#g zHx3qV+CdQ8-3M*P;DdK512&Mr@On1nvbDMP>0MbcAUwUo4_Klt0S|LfDL>aEj46u2 z-7yF6E1UP&+s)J3D*?0V40jS*86Ro(AOt9N_oi061uTfeDe)Jx9xY)3yEyBRI7Brc z(ENi98BJrNYma44sEo-6KaH&9cKzFBM9K`XN~~{44%C%00%hANKiA=KZ&nV$bUsQT zg6Ro{()%Tp18Y;rJlsAeg*fclXObSsXb)@%w0bzsBjwhc?-?e93fH6dwfmuoKq=}! zd}FRYU_%^^V8`b(IJIZ892T465#9-7D)NNR)k!!7y93vrl>X^p3Pe=6l2@qx4X>;qi&<-YN^w(UROk4di%9+e}q z%RC@DgrjM5j*yiFS$y0hW4cIl=B#XOR@xLh=3IRsK-vL#kg-Q*ZI3Z-5^cC@xV`0Q z&jEJp-j+BlH3x@I?%v2Q#SV87*VNpOm(0gGuMj^&6ZwYfD7Kw3k>-|YJFDC4*&J=T z>(`1;H8$xXU-(#W>gtguXbI&r?(!NeJ1fLcgE}MsM=($`+Q(``uHm)#aa6REQw^N) zhgfuP>+zh8`JQM{$!()B{i2o+Mtq_%m&1>CxHVxyn6b)jCiqJ1%ybrH2RMvss_IYJwSIX5e zG)<#QZO6bLWu~Rrg^=-!<1w!nwAc_hhi9*`b2H0^h#jC@IfjwOdRys8gZ7Q*kIRGw z!$+8Z#%?EIJ9S<9)GZ9kiu}b?=0HRavCV-zf~6{aT;uxvu4*AZG&I>8n1$E_@fU3_ z1~-0^zc=(>eTt&`@ZATP>>&Vn-p(u#K=3u_pUaqHyx}9peM3IXR(B`|!d~2PDUHJ; zARkueAZ>+)X4J~D82yLv9(<=(UdgO9-MO*lYNB>;Nbhv;wid=QS$1$uz+;W|INqnJoL^G@c9o93EG6Q3kk!fHTO};~+W0}`3z!{4$(yE4jH{g4YK_bcK$j;IGqc(3i?`|HBWl(as zoyS3KjL~Teg4@~9lgwQKy$_J#=Es$09UzkK;iv|B2zReI3u7A_e{Lzy_zbVm0+-3{ z9FAp=Iv+J=-ZLKlOP{$mUO1OhWH)Ru+?f*x_8ShrMLipv-VV49Yfnc{h7%l)dy+UL zzs8%kn%s2AjXINLK=5~N?Q--c)=bu2_%5`5|1Ee)}NYUY% zQ}gy*`#XJ$e6p*2{Y$#XO{|7waZLSL_J56kxAgwfX2IW0XF!A3_j4XiH*rI0pk-o6 z<}@_7(H&hS4Nyg}ulrL&{K@>(W)E(Cio8MFaIfj9;Xlm)!A3O{wFZez*c>m|cNK4@ z$jz+#(-*|yd@wi>^@{dG?J+x7pd101`m8iwg*}+9(7D4}GiR2E&WtdqboyR!hqz+X z&y>?k3EaT#aXlJJ?qX=mkW;zi^6kE^Yp({6-lT@Zk>{hzFif6@Cs+x}liLuy?fI7; zelzCUpiD&!SvrKXkuNF_a^s7<5kx9UuO%Pgz8BqK9o@h4Z0lYj8;WS`@l|1* z0FB~ZJbRGPeb~$?@X+IzhF{^wVkZyOfT1vos(#-xqzI2RoMQ(y#b7QA4JRSP=oQb+ zL{(c~JHm1!EOqA&?|1_-1R>lHjuVEcD$iV(L}FRHoA}^*uW3oC1J~znz)MJJSnBPd zf#%()DH#)wxexv75E{N}@tSQy&oec|UPc{6?_&mP% z8akG6;<2^1aIhBe?Kr;m;q7Av{ORzefyU$<4mFxD#AELAyhFOz+DxA^kM2QQJv8(* zDnlJmB|OqO;Q|@v-ZU;)|Gon}n#aD{dGNb=YMQS@b=aTb)-%mm%<@Oo4r+EFa~V>< zZtT4&(ql>Xhm<=7>KRlr*PiFWY{RylFUJ=!eA;?jktuuychs6(1D2#hp;j6?ATH8JfjO-G%*l-XV%CUt7RNj6?O!v52YW@Ji7`s@J3=k>*3)+S zHlB1nnzrY_<{F8Hw^jzLDUWNqDn5`rzGmrjG%ad_Fn>o5*lJk6t;z6U2PY=e%wX7V zcf>qs6zBea5}q$n^yQcLoo|B^EG34+!^W=TI9v>|mg8i2C+vWP!;y|ZDK?|4i#v9D z@Vyf=t2>D~23r}4Fl^|X^Cu1j@V6;_2$9fYhG>5+iuAYs@%wU$hoLv=Oh=>}Qig`J zF|ss*Fn!?f+%r2}(e8I`@nrd-#@8g>S$9dw(OKe|UJk}N77YpZzz#%6b}(PCHQ&(4 zX1sRz(7_&%T5RDkLVc-^{u44yPH6TZLQVc-iqxk!v`t{}pC?0Y2I4z8*AselqYqm~ zJ{pFE8ff#ynM`Sh7{KwR{xmcshb+C-gPaWL($b&BIMILsp1I36j7;rEz~|(kRZE6| z2qIr}*?VXF#s_CG_2YrasG*SZW@3Kk)vAqT$Rec=H*8F>+8f5Xm2PU72rWcKS|2_i zx;%c^CBqtz4T*V!MpZOyH2RTdea(`OM^Bim~3@DFje98^ehY$k}z^4tQ?3`)>&(ae;eE&4V&st{$vm}OkmJlO`&Jx653BXhU3bxz|b=@ zdTMi47n6#$y zNM8XmnH5_HkAke7AbUY7vtewR7#PV6{@{#p*op2zXR}6}0 zR!Q3VlmeCc=Q<$SLqnD!M`8`YOnGh1Bqey#$1tRBh#?@+O^d+*o3f0_#l5wSp9Z$F zwqk2cqk&>AR4^J!qvYWgK?fLIUN8|`!2U#055|>Ka>H8|Ex6r%hO%-u-h=rd4Tf&) z6l9I7E)8F;FXnL6Bebx1T{)CwYGp3do(nbV6Ik0?0LwId_ZUcGy0IQbb~S_~Q^_k& zQGPeg4kHo}qRxLgqSFMYefMPp zR9}{73n`}&EZJ9~l)j2W+`uiI8l!5M1UhJ;U=qU}MU5Vn>$MhCHw>X~7L=5XUV4ZA zLH3`2A--@?%JEqz!aW0vJQw`aQSN5IYEs;(x&I0uWGg zC@YPo<^vnK6HY{p5lFV z4ME}#CAieDu@Ge0=Lw>0z*UYI)^bS4=?Vj_xiDA8$nol=%#p;wo(;pV8hXMfq(R9t zk>u;MUh~*tA7Ap!P|P1Xd{B%DJwooGV~7RoO!pTZoQdVb40CBC3{xo90y=mkG=|UR zU^^H-0?Ic8-oSz4{>!&frI@3u*kDuR_Dy?ltRLppj&fR1=P#)8JVb3^hmTvC?o{1@xFmUM$$LS;FuGks(puMQaU zTp-bgc|1oo;2Xvrm$z$+!<4>yhQ;{XgoaPncnsIhxOc))^~3_?oAZ5DN$Yb6j2UQq z`Q+g2^oNLj3kFV*aRv*?pbf-<`W&J_2)8?IxH*j5?w(xK zXrmO9$I3mwwwyzRH4pirt*4?f%EC9?nIB&k8^HDcaM&s^w!tU%J&P8{_H9~j4{^{O z5OU8Oh;Wp6LWO1^Ce1LNN>HB@cmgKnQBa+Y)B0AsAB<4*zT48s4t|DjjrtHl*nu8sW(aBiIgM z;E&KsTkJ(lm^h?E91K#Vp*>DGzJ#4!rP*1AXvnK>LqBdq`VYaWJ^4$!!NU$v$~0Uw zS{^u1d472NGQf781HZxfEmfij;ARG4qM^0c4H9Q?&zQ~CYW&`+#)R57kcQ6jmN-jD zp9U9hGNYrjYUs1=yb_q{hDD(v&kj$;8K|f zbZs-bLg+yWQVm}YVdo_Q2XH9RdpYAE@x~DAt=KTu!?Swt*%hSM^cTlwSQtW1P$ zJiqk8o|ql88~VXvBOlyww5sC>yhE*QKA3Qua9eK)z`ZA7IOs57=ba#@4mgQ+#d?qy zPU)k;FhM)+I&k?Gz}0GC_wN*N4o!1F9w)HH!47o@hcib1y=L79%7$23hub)O*q%91 z>>K^E#?`88Sa$tZN1%d{J(_3|Og4^91W+s?~@)DRb`P3Z8Y@4yf<>XA9M z{nKI0(5<1g(J4en?L)Gnbm_RNmeZ|osH(#ik&|rhZfFdvyU9IB{^C1>kh+d4yHeuiV;^M53>WoB;dIunGb3blW)E%%8LqnXJ6L_ePz%CT zfY?S~6gT}k^sWH{@W@;>${w1AJwL>Id< z+($e+$?)8w;tvP{j&JB`i5>){z9(-M$eoxU*2pErafj$3{%dDx$RzX*rBesUz|zAw zBW_U9{+a?YQlo6JRS3I0;BE#xHtrvo4yl3RygZk_VD&#I9gZRg`wfQDHyM7L43lo= z!hha=*!+;5HKN^9JfM{huEc(W@G8TzQ5=qZTwO=vgEM{Lv-cQXYhr#Lq+<`3O=r2_ z&Q9;qkVe`U<$KKyZh{0{^F7*k#-0%e@9%cIfO}TQ>Z=kB|#E=>R4`2NyW95uSz_rh^>fJmiekaDcX< zy>_!{MVT}Wo2)nLnA0j4pqy#;}hguG{;`*nD2cbg)p#knlajDIG9uP7ckyEfi zO>|lEjb>qH`s!CKuPx)TgN3>6vo+TXP{7qn`uO-VkCl^Ndt z(8aSGnl#99oIYa~&}k-@xRDSoO?n1a@#PREoP0OWS=K+_x_4$h^xmOCn=?4z>5pF6 z)5M8}Kk9n0-c@|-X|w#jkU@zq50m+pa|Uc48dJ^FK7Z)_rg6{oxMkf5AG$J0W8#M% zNds=8A~%F%26m{^%`IrRs~0dZ6*F*f4Y1QUSjHHRKv>iX|HBkI_ZTrIJEHceldZ^3 z&HSq1(F>`Vw@5_BhFjG#3unSxxMpj}e}w@e6ns2{e7~%YBrJSJ>Bm^rn-~X5agW2} zY*69PUJ(sB6U=xZPoD^oKGVeVm}H`6Am7;WfLCKSc#Q)jUXuW7#o9 z=nzasIjC#{@p<%p8w2xm7!GMht~S{mVeIgDgD*eNy>Wt8?OwwRxjCbGP!WnXUyqnU z8syN03(&6%X7c3eJ`W`>r{VxV*ckf{V~WP(*u#SB7J(!|)lY zHN-l9g5eDiHYZLSnODX5p(fRU%M}NT4~N%tH_;mA0&@-Uiy{maEoj&|c9#PW)XC;Q z?*s8J%W-)^hbr?^A8Q{Q4puUI?<6MJHOG)V=LU~5$*{yJM8h+PL6*?2lKp|f*}{1K zT<-Cv!)P}g?&0B_*V!|4+IP|&g}dB?IR-;?-X3F!NWbH|SeOFx02$i=D9?q!y>rlw zZF=G`-}FNfVe&nebKg{pu}Z^%V}OhpyNm7ya2qqE!Io8Nu)`>MJK1~8yq)Z3{fY$2 z5cIE|nNOOD&ek1?$zE3(>B%nE7%7xJuQGBE4mol&|7B(C9gpsi9sj^Uo5MEI0`7yb zFUJQ$6K}?fBTvSLJ{%^9H1L$}JA+-~YP2Vw)L~5Nfe*Rr89XKH&Eb=0uQN!Gj{^a0 zJbrjsjcy=otp8xW6`kJ0@-}n=;h;z~9%gHa;PVX&_J1fs9&fsrKT^BVig*yMA6&CO z4%gGbVugoHmi>PSt)08E;T^PS8iIABY~U;Obl^(jftev`!IXM9mIiCI8oa?W=vKcE zznCWn52;(S^_31~ap8l>9n3I%P0 z;J{r8!^Fe!VT`Q7877H+u+UmsLHu@)p$tO<+??$0SC*H<7ae`*?6I(u4@;ND$h~3G zIuFthm9>&j51eB?nC#$_`NM=#<`MO*hV%g$oCqH3Zi8%S4B7@CYUq(PxR1lcYi{j7 z=i+06KUP~5euGJnEN|f*A4G`r$lzs+rvort_Bz~j_&cz$oTxEd?!iALer|{`j%W>< z&)k_=TcatTs63X~(ycKc^0zIeoF2v;(p3(m!T4Cj;pa}tLzX(khGPIaguaz*Y&f!8 za`l~T{*c%-mIe(5GGb%JjAQt1Ex@Jm9-G2-leEeUAR{xD;Q;0s`;kHTH#oIBWS$Ew zz${)fEC*>jP(;3Y?X|Todqz_|98L|mA2>{^(Z~L{xXA2<<;Ohoq6Y4eUuPgbbe?e$ z?F=iKiSInGx&>$N4!85V!O$xoc#C0t?a(8qWsc&;8mQ10)_L5GFet%Q(-5$7@Gbnc z!#;;wT8Cl>JI!VSE6&i@ai^yT*gd4vducng0mSJ__-N+Ihbel4@XCu`9?a^ZA<{Xg z0UCQPMHMngD9LUNMMN&PlDr(=1|Mn?>Wwz>&(<4_fdI@4}}2SPwOI#W2=iwFns; zY-D~*+l(5j;BXVa=-~P?nspE+ILyt%J#^9Cg{B(t)lD-EIFbwxd`Q}U>a2?g3`m24 zIod}#)L__!9WTVh4qnG}wi){{V;$IGThc*(2=W>7!7N-&+L)56+CaPwYMPNg2;PlP z&J1?2gFB;mI^_AsKw8)bH1M+xb@Vce(ls>dX_l9%i zzcdwy4!haIgiZUgN$xbxWHJwcqL@!LEIoq>o1vqvlDXDAj(k#0O}?d?T86qA)a7(+ zC{zq&1!gT*XUuu?dPKg62S;ko2>Om47JQGdjNv*17h#&@hZ=!-=!Ou%_Z+MoU<0jg zP<723P|)*0{$?w7v_6A!PoA_w^-4Z zTo1?Di=l_kxlPq~4KTHxfFY7^5!^UOz)P@){5ucJtvR!8@Te`2dT1t+pLaGpG0Z;? z1H6t~;926wxAefBjjVGS60v!hYiBs=^RZg4bM}N<`1ElW(L6GzzK}ILSRi38Y7w(L zmxj!Bcr6RT3?7;zo##^id`}fBL%tdJ@9qXq(e?vBc zu!dd><8PsB%c$0IcM^f|EY3S$cGU@wP!0X?ddaXzP?ksJ<2w90(BWXLpXLogyG&W= zo%)fU=(#qI4<(a2+4TRxv&RhyrUi6xN-+p$tq~({9bxX?KuZV?w43o_s5e1RKFA*X zEWYd!djRW(4}zO}h&8dWy~3|dXbXn}fQmc#&v^#Q5QMmW&ScX^iU|Ben9lXu$9v9X_Rm1nuy9f$K^_5phZY{$ZfhtcD| z(Ru(rp_+Eb266wi5nQY%A5Gp)7!efZQGK9Y&}H9a9+AD-hdR^fD8tpz@zL5?A`$o6 z$D#LZfHSdcD{1W=Nfx(fsHJq|z$s~X1mIjR53=UCv+nd-GV`*E{)7(L0m0@qUzB84bCHDq-bv zcy*#x8eRPx92&WHTqEN_k8&U~G6j46bdO`znYD?j9p8KkgQmgSA;IpUFcw>)$4D-O z6<4o9%Oj>8u)@uumgR38as0QXG4a?w8xx@T5Lxf=1+g98vN*NhLcu?q;MPa@?X3-= z;*9iwY>)uV3eusGOL^tqT?I$L(m2ZJOq6d(Y4f_y4}ma#>a)@0tkoE1w1di9YP!Nu zyFXt{_IQ7@7F;y@_G>Z z{CyG`DdbGr2+IwQ<;*xLvm2QIh4)irq(wdB7}}cJAT~VBmRimKmmXW~$2V{fBr&p5l;g+ocpkE?D9$Xuy%&54&u51dZai6Two!%ynXFkQDPfMspc7Z0f` z8spdwY-cIf2cB)QmeaKTVI;>p7He}=6>l`9D;&b0ruaS|4`4>D9K>(>i_O3`<5~Np z8}hf?K$p%*&)P65pV8xijh|8P#eX!t>kfH&hBD|Eg99jMUPJwW{|Iz_F+VnwGb0b; zD;|anbAwc};^EFTh+6$`OWzRVo{fevxFG9~gqD*sjADPxd)On<#92555NJqI9baO{ zD;>ejj}SMTv)O_(QVM%xg=jm43OU+-@^V0sNqKJ3HG0xDi3Oe93-!`M zETqiWrr>i4gL8OJcXnxp!mXY5f%Z`dZsn59DRzB4D=1z+@G%%S0{c4cliLIGyWfQq zAB4tvBnDd_ogSzbKJDt$h?=3e^{vSC)mOhlk4gdtnf`nq#$X1;f}6Q|;&uznY_lVU z%|0-_-N{V918a!D`cQArI<2m&jYyC*86-kySaIk1Y>Gf!fRf zs5$DiS`B=~QGL_cTAaPnbL_X;yF~Lilc$^mx_JI^v>W#57cw%NlLNnZW%7yJ8RCO| zYAD%u;SgXx{JE5Qc*#I1su_;hc!-M27;dSL;OTLEvinsQ4$p6H2ag8ElQUrmKU@sn4Bdy+ zN6>&Au)XW^Cq^SI5#T(Gwgls%b2F69{fu_WF}l(l<1;UJ?p=HGn~vm&g7YF>rR@%N zUwJru*Q6$fZf-|R1}*mCJo}v~FO_e-dB({jr-{QJPpmLT8kf#kgdTkDgHUD`y$1#9 z{?9=dSk@ZUHUYYJwC;W%2PhM{L5=k(Xdyous+5oJI*{^qb3ch&7R&0W&7Wx!D9s@3%qTp5-#W17RrWkAg=q zr3UvNi6pEcOWtO34}-zLvM$3P!uX9qx^=ga+GO+$+AqUjO9#>0(@ zv3bBINhC;&z_V*?l6VFgu9Gok>m^q+sI73~;mSkP#MFtF43luQE3u)KX*TYqW{=+o z31@I1o0Vz{NJiYe|5~{+{dDCC(*g%;F~^3Uo^&+hTGh!-mw)8JWN86yee5a2gVs?}q*6I+YeL9H+|hv)fcE zyg5yk!|yIrb!c)=1xE{ABfj)ZKpdmTI=M0#ShL;?!Rif!1~fiLQZHk= zhu*psFZM+vzq2xjJi{r5AJ>gemx41R^9{>p3iuOJJOHJv+TW3e^?jT3t-QpIQ!pkb zn z8+ue0;V(byM_+pI-Kdioi-|s>RFDQ=Bagjq@o$M)bdk2Dz<|u>9fo8ppd8n&$ZbZp zbJrgxXE%EMIp&wV=Or2<`G16uBy7fDY%tN1AKw{Ta^)h)*lT8rT^Azc=nLd5#nfW1 zc~q}y1JiVj$Qr2aN{*;d^^oUjN0Z);Qr9Unc^U0UR@J*~(5GM(6?qCk-VG~obLswjWF)ns zKP?7)u*ekxVzq}OX?1%Q0Nda_=c1;BD)0NYNv&>$W0S*hqyxC4L?nYP74A*ZM#!kX8bnF4ed}X5g_D`Uw62_?r^Vo?$t)V=76tw z`FdktYvf98S3E6ss$a<+FEOP2fMK{|e{97IzK;=cKSrdB8#h%xhL}HwI7G+Cg5-|{ z$uD?Ndh#(J@W*_#KnnO+5BOs}U`m8&`N_xl_Q&}4*;tCaJk?tPh>s3rcdRI{3QSQayC(+A0&b+N1hI|B3yy4H$6P z(xLLtb&dm|)$U2W--gg~EW-l8vBm8w^<=qxf$6R14JYso{T9lToU0fk3L-I4;{JW^;EXVoOuXEW zz_>fjVu|3IS6Eu&!f<~WE;1v4Ok?xAH?EXTmQoWj!5)G#Fi0ha;QvR9$gMpDiaCZz z+I~=Qj;Ed=#%+)Cu1p1%rVCIaHCiWu5_1XtvsvP1>p&tCD(c$zrV?4a-a!U=3E@cWNWWFk zMFQa3DpB%*d9iliw}_AuFF8x_;Q*HT_KY%eeZaRKz{x{wkU$BApI& zk>NRfb&~t)Bo~dJR}sapB8r{7S}1p>rr!moQP_AF82m0UIPb%| zru$vfjYiI^jo?=s!ChqWiz=h`R6mLcg+ts|>0?0fZPp3!;>l(`%r&@hrP^9Hvte$= z@n2=fTQRyA!W2t)V*G)`5*vqC-kyTGj0gFGurDsrq(B4U&VQ(eI92|tKtkDx z>;Y2+3t;=tecuw&IU~ygdJ`iaq{YA~ig<-yI#0yg({#9{5X0wG`mxb({S>d$X7j1% zLSUdK_-=?MTmiR~xskbbHDPi2VPBTgiho2{E`lSv1Sh!7HMz-%s2!or7Q`gK=9^&n zvi=caxw&%!qtW$ql-DG8qQUK7yQOz$;Qmb%OY z7Zk|mZ6-}JoCE~z8SOFJH`-F8wP@|68G>3c(+bCVc;08ls(CCrtXtz@sok1buXpDZ z!bapD76sWkuR~>IkO+2RlQT`2cZUL!GD?&elHBazoM4HYcLF6_zeq#4V>hYnzfy=N zM2v6HG-ld!nx9VVbNO5^dW0den&=k3vr0BCm`w`XwXszfOWkZ)Sgsd4gXw@EXr~sO1d1BvDf^-!@?uanm*SW87UHGb>~Wp&y^N)VdHaQV?XD*pwD$duc2|S z4*OgkcDp=uuDJMIaq*)n=c3!^qU%BDTx|MWZ2A#m`>D5$-URY_E1{9n4aO|NOTFw% zy=*VP)XT{rrHj%o(k{|2XW%i|IHUsRRXY-n5079axnp8jK`hy z_94ZkYxJdS^qmxjrE0cR%_~&{GiF0Jv>MbHmo~bWHo7Rrq>XW#_|i6U0cjg8ZR1MY z>@qHztp&;$0u5Y9A6=^F)7L1zgXNcdNf@EJx(e)T5))tmTEz!C$>!PSf3}GtfEg%C!5ir1{Q+-6 zEJy?ekHeXHpP4rW7H5L#Gr@GAGsD~xIMXYi>6OhezuYsw_AtecCxOju@J<`HL$Z~+ zkPT=Y->+YU1w#{vVbq~)+G&)NPau$j+zBJLR2Td&#)pzKm5no6=yab#XF`E&Xi>-JL~{5HV|F~Yi24KU*BkfU>rlTjK4V(+&#AgQf2 z@gTO39n;t__gJxv1>47lWo&kj1#qQg>B^=nwSZ9EU>r_}@j5pVK zfC}{fNcbF^*2Fx1^k91PlUrUip8&vfoomc9J3xqkBzcWKX%~-9J|^M) zn1y!?0{k%wFNQ}`pNbmuw^~5}7z;qsn@@1nVwrSBAfIU$Fq?#A3>cP8 zhOiS9Cj-w*F<~#~^q&SQo;Ec-6=lG~WIFa;S@5WjagPc}mf*z0{S&al`Ag#!3-Zg_ zOtq~XPBC5L4~s8Cfk2l|SUD*Z0Y*>hXs(F%fq{@f{|5jO)V!2q22y2iy38DfI3xr! z=qBS1cew>{NUR|2f!Tg5S3o0U*c65lR}wjvfX%^CCT`p)a!TB{8v+}%l6p~45^vWl zGdIYx4OuEKY`>Ko41*$r@sUQ5+p(sW$`W@tjn=>9-)xbg@(3HZ5y6NMAu=GV`Km;iO)n1ERzmpZ>p*SiH0W{fr1 zODOzDUL6lFgc+lcmG=kssv&CEYO?HbD=M(*18Az3!Ja&0B4Y;DzSD-#lw^!qf&!ln z0WeWrDqz8e-xA{3gEOa#4#)rW<)uzSFgw+k{3;3h$*IU>3w@B-j+AMF#R>w9sVEcq zhf`UC(2qvVZ*f7PP_^cR7|RbnS~V{pY`lbS8~$Si27CE5T-B1RT69%0R~27XbgPQG ziVy62gY80)iyjv{F#e(Za4@v*xX1yw)*w=>PH;TQNRZeL zx**FYI7|{bK!v9i3I6_pNvP-j10Ncxluj{z9noJ$zL2$X6rv zdn7=q*JN?TM9hLBHad7|UDUASPD1U#+S+_@wh$;WqC0cQNG=P|^zZ_gEx{c9@h!mj zTYxW>ByE)_LO5^7(Cn+!6A1WGAmAqaM-c%Jj0y255PuYiM}cr31;Xvp253dK)TMr? zOJd#h2;0Q?9!hPbf8kZa^(VmfRWlk9RX~7n>8ES!6KPUJ`qggY6_(v3H z5oBRY^U@aqtxuvPhG?*BklE$+Ioa4MU>ba7Gv3;l5J^)19on-k=vW!57le%r($@SjJ^|mBJ+*y6^ ztiB+??o9GKlUzpgZf$@jjKRUkz5pzUVT!Z_wEXiQxdaw%L{^bwMwYYY6)0G&V2~YT z7AtDdSW=!+rK35tYaf=vue+uc?QzHLO}Klbu*l~P!@Jk`bm`3k6RF&ux4FkQZxr6L z@EeBwHsNi;n+Eu8!fW-m$lVv?jF2>j=(iu{w;{C&GkgOcVuWO|i)=$68jK${*yYE= z0O5xLjuE4R!wBPt5sETuI+X}IKR9m2t>@zMX3SEr%0Ln=`tnPzsSo+r(k3$R(4R1WFIUW!#q!6%;^zuH=ZVCs0*6#oU77_H zn`mU%JCH5hdZFChw+BWD=8z)f(76P;&E9FNCJDuVA|yrUPmum6NYFn;a{m;`oh$IC zMfp#Q@{^=@j{3wW#nYe|#Geqwe?k;rHTaXE|H;sE^G|vHr#yFaJDV9HAB+gQ1cac* z&^^@9ox(5l$cE;*4=lkYemPvja{WQGK&PyoacyW5=&c4JT`NWt)O5I!_~(uQIlc&6 zkkEq=IUjBC)7^V}^b}#`auTL(Yh?f|DE%)wkaWzjrsa3fyP4Z&S;xZ_5k_5b(;Y8g zmx6cAOu*t2Wc=E%c4~s_`O*J2lQLcc2z|Idfy(Hs#`*$iJs05 z{_Pt*vW+{crUUoKQY6kC8{GIhbvX&~0zv0+FKh#GFxk{+ zI>}rWChaVGW4jkpMs(&pRTz8Aaa?iC_i@bkY>_S? z?T>&L+LEgg_%#B5zFh)A5P`U@9vM=A5ebFNw=T=Z<)qz~b($(2!FRLNR>kC8BCFi8 zdj+Rg%5w6$snnI4+ycSZvFMIt1GdO)D@{egZxhrAYzm~~Wf^LSWtoL32m=GrRHQ;# zcCPtE=|%GXD!l4;f-_>au5TO6?w716z?~Y5XP!BL>miHA!mF|1)YJF9k=TzC~x8Lb#}-F!9IX1vWdv9vTOO z7*t{yq@a?hGNzK~Paxj6V^`qxVP|Z;@bwP26Edb300@jx{5hTYU;wrdxKHTj6lQ?H zkL%DcZ4&|_E%pA*41rU4;)<8Kv5m&~!NLv%IkJ51a9c_p@!omr4$jJB8x? zEzEecwKvA-9Fr!yJ=xiR5@7#Hfc>;*|EZ7rr#|kVCgnd(%1?UsQy};$=t^qHF}yTx ziAJ&h4GrM<+S$Wl=zm);kI}1tOnHueciOzMU)_^-;b@Kt3^%<1tw^IQkFwwwh&usX z$F03;CFKr3i>_y+26K$j76cYD`XG#OcI7ofPB7*M2pa^0#J5BS!U8JvO)d=uJ@N#V z$f>Xi>c@nNm(bnvxrxCjQLO(jif}AUxI{n{{Irw(`!d(=FJM=w6lILl#jUC0BB&fi zi0GZ-djCaAjfrD2VK`)0XO}f(fJ1x8Z327W>K0i?ve*5zEdG@7Ez4KjTE5Y!16I&D zhO(Fb!5Eq(VFk;7%`Gw(wyw=K-PkdW70cML%tno|U>W-rSKaxR1{T5(xo-KP4xq^d zZ<}>{X+R9{1|`!seOw8*s{9PvQGw#OPicEeVFntcdn}}jZIr?~_Awv(nEf0J=f}c1 z5IV<3>SH5yC5B_=yvNFU1GQbT@Y|N4EkTLqEu{hg`F51EOEr- zJSr^|vm>@fY|V-i7h@wO{-u6mdh!YmVr<0NxKnq&brPtsN*|b-gF@KohO7U;~OE%F7B$B&6<#t{n0@g~ZE+ zhOQSb(2EYO01{C&Jhd4j`GvJ`IO;r568bs(gGp2a1WE^W7rE3uWoX1hI>0mWr=&0m zL96`4Hb|w9%Qr~nPEqh*sf*;GDqugp2E~s6JXSHqWp+>MTp34{x{RYsVT#|r&B>We z)M%sb1tmAT=9N5Gz(C=&qwk6WFl7k9Iws&@2A>QSVZW7<@CYcU50&g)warn4d!o+t z{|ENdq9%7Jk=t2+pP_mBoGn7Maa8&aB#A)l;3qrqOln7ZSms9 z2UUd%3gVE!X|=PX7~OvZ0+iGM#va|VfDB?ikQMNe9ccusk+~G}lXTK;q~FqLjC`To zhFF*rz=`GFB;Mr~A5Ez|ySf8sb5%#PxjK}b_s5b$GGNS~A`+nqAUkh`|C0BV_94+;;39iRK(?EzY3`7<=-eEIT$f zXVvGnc{a0oKvN|wNF4&n*#Q4)2=(kN=+h@lb*tkChT(AwgIpy1bOL^h0uy8%hqN?o z;4Ceh>Wuzm`=}1E6$)EVOLvtG7J4I?X(4;Wc^{kY5<#gDx;XpN-Cvmig(ab6y{w+AvR|cla)0Kgb+fg8jf6DMdyyy*=_g~}z&dzX07FVK`$#I1%6HLqR zR#TNUj8I}8+vv9(u$YJeG+~Nf<0b;kHBYT*q994IFhfCbJp9jj1677GqEQL@OQWaO zoOY9#sj$F1Z?g$-NGz4D^13-{jAyuSosZlchPfc-WN`yy1N-Md1O!D93f^dt#61z# zL%u4vIi{k)NiEfE0~dINyi;Jsokc*kFk{qooPF&>{9yJ+Rwm&p*Qn6rHm_9y za8sD09~BCZxx>8>cz?S_n!Zv^vf2A>nxvy09wH&dm-vzKQslT}kXNu^fwx4`UJgsX z9G0w>FLx!r+!Yv=mwV&Oz47JZ_j2*u4z}@t>2g!t%S~~EK)T$YeYrnd4$XTxG_P9o za$EN0wrr^|YlKpN`!hmu&=o=XaDuX+_;7+^xInJ95MNt}0l9|*gcVnCh0OfW9u zK-q_b^5(<6a8F`B`fz;olOOKM)wnI55cT%#eYg#$20fgRd^jOlf|})*w8JL^;5M8R z_;5<#v`dEzq7N5DKOa%O>TMTAZ5JIpB2uN6pH0i5oXre;HZw31Gi+g6q`2CQeYF|8 z5F3~(yR)U)XG^n}WgD~4q-I9VC+NO3bF^Wiyl6z`W`$4J?Fq@&*LB zWXaTG101Z#g2m6G+@D3cZ+VX3QG5iCVhfQX?a6{?1KV38f_>J$Z=&-5hzLi`BN!&B zIkP5<2P;%lvY}+X%GRq}oqL7V3Z8n^??kD{SHM+FfLy6H0;y(ZY_RJ=UI4HA42A@gx8gOP;#tS3UMv6;<0-n~H z?>_V0fefIyU{EHM&w*BXnNzeOCKW$yW`$Ati9nE16A2BWr~yzLJBwmWc`5pO#bzwJ=o+YGsHGvwZAgHwo7+oLEMZE=_j zZF^uEH~c8u!Z>LA*@TMpDQwyD%f+ zo$W<^U7O33pj~7lgECs?nqM?`h`9{~-z|NQd18tHosBXs+oE1e9Q<>!ioxh8UESVW zojI~^W#))`D>Fy*t<1o;GLt3W$ZxX>SXAbQ*%8DT5k`EEoDfTtjr>*uWgIg%3bMSp z>q@L7KYA+6`FXFVXJ1XvZqKGnvQU*Lhn8cX8;+~;)$+Vo%kyp#J41^<2;ADONpFo< zDjlVPrLe-0JX&jn)df4Gl{Ox`1U_~N+z8twmU_Wnfun#;g2l3r#j+2Nt)Y*tp^q@Z z-gw(52-qC^?AX1v99Si{Vv$suz@nkC13Lzbhn<0)@nU8C$piiLt%68{mEr@Ll!Wq0 z6DuCqdMCEpiLG|Bb#hxLwY3gxt>Z!lE>WxdBfv_Tt$Z?&6@(fAz=x1^k89NfTlMTS z4bWCSc&vH$iapjmIqTEkiBjR4mPiao!8?jy(0@V4{(juR`rPp6^ZtC^wyeh=ng7UN zq5B{6|Crk>t$)t`=WGZ6oa>*q$0Q{DLpnMF=jCzcN`yR>Ma2F|_@6AI#p6z${MX4{ z`oHu3cU~<)s17g)DQOj6%MGT=x5(me8GyfKw!c;O!c)pDp6K!xcn=BFY#nRv2)(#E zz+8aS3=FSXS~As{0*Ov4j^sN1C$Q!5aIe6mm{<^U5{e+o%L>YjNJ!ly0b8P`ju~sf zTsh=*3W=8s4P7r>pcfrl0VJYmcxp35@(XL>aMXGDr*E%RDfF^0N$4w5fR-o8!a?%3 zc;pTd&Tx1oOI<|a2LX0jHE&O@g|-m5Z%2x_i}c^;k!3yth;x{@CMA2s4uaa&8S9+0 zIo3JaIwx2C=wh97t7IJg7T^&VkqSJgkeuHTT_U!-)*YZ4(_?vo1*pU_Dz7oQj8=6* zu!VKUfKwRZtA9mvCQZC9rVdBUm{U-w6}N6pV%M_2_B~e4dMghbhAB6xy?l)doXll{ zj^JNXzlre$!c6u6G;I-T4y;bKL{0Ofv<=&gvuI>Ld5jEc$MR65k3X-avONqI)Z%o9Naa`qm!$ zEzr-Z@6W2Qk)LV(XIcl+_cN;aXH>Bkz+0>KtyP;vkDt|ve^w_(@F)G9C=J?x`&>_4 zV4Q?SkpZ7QHZv%*0h|$otZK|+rI7lSF{(n)j6ewJl^)r10(9S+S&EZwU?qnmAs}2s z61#ako0*5A1z}zVJ1wfqM`LGTjj-Z$#OZJd9Ay~)Rr)|`OJo*gnSWaJrCMSx-x6=h z&@RF&+et|D(Ly0o3G&;M`7q$XnEXGkjRVQf!V#GFxBMOj2X}h91ecwQM1ybufl77p zJpfXL?YKB@1kqOa?Th%$Vv{u|hk$nRA!GsP=7MOhMQ?5-9IP>F(EMBuJHR)9W}py2 zn@vy&v@V-j;Sc>wLf_~;I#)y#>bQ0#^5aV6v~2u1yNv}mMd@)c^5bCSxD$WeiF?2l zhxfG9VQ|cj3H&f7aFf@?q~eQ7T`Vfr(?k-s1P)7*_$QH$0xS1*!h0@tKzPAGLCM*M(o#g`vqfe$JDP0{A~rl$H?}vf6%;N^HpsK-dC#Wj zWrO20Eo@<}SGGp@Obcvm-WE#7mYW`)%@IDEBYelk#)W=(B@qKWfvAOm)kfs2jmSu# zv^C(=Tx^M=hT?nFT4*&D`)Vq709WJTUX6#VM&ef^@hfU-IAXONuG)>Ot$?q#0^Y)> zcB2IdJ~g~p4Tr1N<5h)|+;729f)9|1wYztXgO2evLH#vBjUaCg1rie!92c}f0OxBT z^w&N-C0e7?YbEyAN^Bl$ba9a&g=-+-bewU`Lz@^|&`7N5c*^rN!henMU5RTtp7oXn z7DF}t$F;*s@wUm&sr_E1rA1aIK^QXDsCsEo`g`&;xFE@bAqc|kZ5YJ2fX03i37JH~ zUuF9i{&KhP+x^yUg?`mIP3Y!jE!W#V$_(Tlgqmj5bh><%69@TSUT zUW6D6uDuGm+-k}ix=XAJGqjT+hfNm4V2gSQ-SN5p6ueF|>^|pC1PBsMmu}}~XFO?f z;;K+aj9lfKbov~M<(B3gh+Nmg4E#%8-^}fWZ2?ZGal7AL+c@I}Xktv?1SN7Rzl454 zHt|5U>3NDuIt}hg^+g}&s;XAN%M8D*vf->7^f~xbGO+t88F$*;LZ;16qdq0`s%O2u zQUygOKy5+`N5;tpKMI8uK<+|iY0n68Q!;x>CQrw}QQ9k2P^5t0dX|(eoruTmp8%}K z)1aif+qE=M1Kw2y1_ns=US?D3_ezPpQXyHY=cVIPBJrg}Vik0xLSAWKzO*mDIDsYI zuJnhr$JX*Z)-PQKpw|or*-Dh?QtzeqrQAztE0V65Awj?>?ysGgkOm6I6GO0KGevX^ zA?!eXQ?ZiO5~ zYhvi!GWtJ)Au=PN`tq9E_hQ0-km4qEYhaSs2SRHoVj~O89i3fMoss1=#gw6$H_MQo z)P^P#_+JA#=jFoD0f2p|^|xPavaH^PL3wsrD|haWTOp+#Z(K527jkP^KpD4491|*n zrJ%vKg&E>UW!k@@NR4!g30mCEiS6c0F5M`a#}>ClOs;s5@S3d(PEfEs3I-s-;F{&P zFW~5Dv-uoE0x-p2*Wt$MJT@D53GAdA^I^nI3EAl!As_s8slBq96IK-zxtgh{q2JqB|0h(d`su9D;fYwH5H@33bBSpRa6EU#Ab|8 zg%ex=^be^TXKT+4(kYIh&pmr}$k2&}hDZO(kozk`?$w|Dt3UhE)gX9k$gc?HUlGcM zuHp*gK%WbU!5^0BI_V8CL_REaeOA8QImLw78+_*iH$ zp6jm|>0dF@2Ywak{Z*hwUuQ58Lgx00f!34(BOLdgj!Xu4Q|Z*BA6#+9d7U^PW9HPI zbAIQX3xew1$tS*(kDGJP&U5D=_s&7?4JV)&iq4&r`p!vx=gv6a8D}SV3WDzx1Vcf_ zaPo0i+$s6qDfz~D6XVSC066;(0_cNwqDG13qV{^qzMirN-CaZ3*HCtjJs#Ie^0ktT za zDhc;h67GdpE96%z1F^uO$A>7UiO&ZJCxO~V#BrTyy>m3&lmgVcdT8eaI{@NlFknxG zkiIJ!Bo!H83yMsX$@5ruY+H(u`|F7zCrNZ^w0}tdhjiQS;qm6L1pk#_D-J&){S(qx z75+-@U&$@gzX16cAUoRI@LP(1ORZg;BA4wZM6KV0SWi?G9v8wcQQ1d~8C-_O3 zwl5`P|0xh?G|Pi+e4T+vS*#dyRqan&QaANq5-=$#ggWEJfVGQVZUuF1es@` zGQl2+yT_7JZm2{n3{WVTT2)U?mr}Y}nWU6i$|w5hpLMA{S)437Mu>f@5C}BhD#m-O z7_S98w;GafH3Ta)xOXc$_*QhV4y{|&#kZ=92Y1{G@4Xe?qA;pCD;riCTu8Ul+qcrI z8=O(d%7kkr#>&L4cDU0+$U7-)YuMzPcu-mG<3@rK0*eY~&oy*1pO}?Stw+ou*IbfT`Fr30Odazu-{O-alNR1>&Jq7kovXBhzAWVYXKN7PC$9qQh!q+r%u zOw@GeN>xQ9bB0^SgwNA(fAIU0@cokz(bEL121pIhpDo}&TR@R{0*Qg7$x|`@Q!!SH z%zyg9fBL~+0{!*Vfa-`#kY<5kE^jOFX^6 zzdT^@&DE?_7$8r{d#@_`UWxmUuZ3~<;zE-h4mjXSEpw6^JlJYzh?GF`&@k=w9gWhDMoFshXqEKQD(Nn$M;DKEOf7O))GXPv zSj0mZEFQ2-Nwm=tE*eq?#*TY{LLvS&Q+r2dNu0MuB5jKzOVSLgY^8iWE;!mD_h^UQ zckFE$M}&Ohx492f6lW2ntxJ+2-az(VPkyf_7_NA6fxq;uRzT=!S)tGXkk=Hw zFf9=noOoUAEo6@acB4j&{2+>6>ha{Z+aPty3eCyv;FNXf)F$mDz>I+Oq9URLb%0Qp z8vlg6G3c|huUm)RmF-kFpnJ;Et!z0$>QZ$957-aQAAxS!Ii8s>;fpN9XV`Q!y%Zx`D01NkP6gy+Eo%fQElLwpLr- zvh2>#PF;-bU>pmYBYcsmC^gh=a10Aha7~{2TjsnJg_T;$%=@R&np~nFg_f08t9t*1Iw$;>9J%ZT52;Av~^&&jq;81-MtmX9M!H0Z=5K8|mjpy2dl3{LCmjC!gcM z&vBk)MQ|KhCX@4^Gm?%4-3UYKa|ZpKK{q-!p&s^kX-kyfB?5w0fD6+Hd)k(#*iS9! zsfbTS6ndJLfTtloT~JM&Dl}D~rzPS~OT=|CK6T$u-Pg&3=>>PHVt=Y)yHf^J3Y#s` zbb>qm08cmUDTY1Ou%~o;3L>6z*wYMqn%&b5?-WAp7glHL0iH^5!`@!0QmCiZu;wHw z?ejjAlQbZ&Hk~4vQnnC@anV9y)ujvcx@nN8WV!L=Rf?0iNRf_>8=b3=#;v|9aV)wB zE{dl@#Qy-44G#`xxP&o*JZOyTVbLt^~n9ZM37_TgaNxtXOe|*P0AJQ%+QT+;>|`78&Q}EMdDTx z`BoBH#jS39s~b}uLiuq@;MNWAts7p%20t^he`aK#xC0YnkKoo>k$h(4?C{L+$%ztS zV*H~;){=o^6j3`epu?jT;72Rm4EiVy_)!{g;G;J7qc+@fJSw*zmD|xGxn1o1DL5u-={;79-9B8eUibRP|L_xw>O@1ssy3H#9}@uN>-M|~bW)Q=wO42m92+>a*i zK94qeA8qpLseF{n`zV+9?NJKwqZD8jIv$O%AB`Xxo!}rxoHLJ#*pG_X%}2BGquDs> z;eFJ@n<3Dn4f3N6vWggwGI$?l@UnSSyN_zO2$)A5z>hkBp8?OKaqgpW?t7#?8s(2h z`HNI}l!Jbhg9?|?0Jf|rjuEwT1n{QRrBY>W_Ttk2~XM&z(4cn)ED{G7kTkitUeX1$;3`& zb5CW9#yK^Gduj@@r+ef=n^OthQwiNLr?Sweve1QA7@0ZML_XC-E>v=A1NhViF!oe8 zpXz2til;8or!LV23^;XgpE`)ObE@D^6{OPrRJ#9+ zVYfqYoC*h@3P)uCpUME<0fb7#jvJ@C#izQ(J6f~{d+WrFP!fDbjUJZPkH?tgFd+h$W z>{b5=71X(WUQ?D^Zn$k_;T|bQ@mmdRZYXEq(V%=AA@5ie^06r7Drjh=$CB_KOTycr z>Vh6uOO_g)r6xT^N0h6-jL5&2Zn{#4Okll_!Ze@dw>d`jn^(s>UupW1;xwF9q-`!v%(&GbF-r;zlg zkj6w#A-7`Or$!dt`x1oA-L_SY~7ySfNUrfL?x^UcMBKx3!4h)*?>vHW=>PV7OFrTZPxF4aB>_ zk)~eNCcMpp`!)-18->4(!d0|gfI!5Gs*OSnJ&f|U4e{GH#Ex&%px>rJS8-V}^EMyu z+kCib&_v%xV!w^VZo#|_1^hM?a2Wut3>bHmpvMxdB5fH?z1LeA8wL%vSU~1D5__As zv|EdeTNbS-wp8@nV95eR1yhA?D6VC1Zkx#6IhKUx7X!1DS66bf@Y|=QH;Isp5S9H_ zJm0t8*>?1;cC>X8o^)@WbggybI{Vf-yH38fPA;Hj(147WxNifOSZFfjNYly(w(i-# zb&sC+Rz0tte5;;p&GY8bx8~7SJX-b}k1-g;RMw}3ZxZ)gB5|RmW10g%=XrS+byzXX z5yA;a7T(m246O|)n>!(ODO7N9^&;J_O|7UsN2~kmt$}p+4D3n0WdASFm68ubBO1^V z!I$7Ggc7qlH%PKmD2O;P2Llj*y&)#9&C0SDHNZIJI402M5D9-N_K*dQQ7`;ciXn%Q z$Q)c=d%XfGQ|!eVz9u2Tg%B9;GTFw3#=PYV)lNh#rXxY^jn3H;GG&cm-rdHWjhA2>E zTZ5T3y6F%68(|cu328%<{7dBwEFOIcUkduD_)&0-77nm)Qhhb6$r|(M#g7gR-c`BZ zRk<7Sz3b6_*CPYau1RkJkGzXgeixq>(GMc0|OO+%L%xa-f`*tG^G z)Ac4xmt%g?<>h%sy5PKInY!MzS17tD-@wbYOATzG`7TTDyDT-Z(#6Onzl%#YEc31~ z?z_UcX$riH%=<1fZ{NGfVXb|p|OVAf!=`%f}wn% zf}nvk)J}W|dS`FFn$4`BLK}PuibXK64EyR}4)(zuY&jHyCJ&~-J(vPl!@=O-gTcXR zb1)7>I2Z(dFbKK|J=olPu({XK&cQak2ix#c5dhP$=yb5QAFS;j7|7KfOu`Q);T;YZ z=N>H1b!>dt)>5awwKBkoO#s%7st9o3YZBSHW@zf@bl_vA$?{p;(ghX3=CE9Ga5WGr zn=T@QP8nOnCydX_$N`}Myu!q9GRQxqvp9K=VWPWd&33l#JFY|CCYwupc+_`CGP(yc&{bOv`dI=>p7OLB9yKEGO@0}vl;6=LG#8x@4R-EPW0RjV=H$oMpWI$)*3~ z(uST7Vi{@AEB8wo=c4%8!hg2#he3Zv?LVV7*_{adP6VDnd}ji2rufcGu?((1m++rU z_(7jL56E{Our_w*0sGDa)~J7m$bW{&^Jj$pXN3Kr&YvLipCHzve>(rC^D>-H0^GHz zr<{)SXI%a>F0XMmdYz26Q-IjX=uSr2>0JNv04R9vSQK~#;A@_&9Wig!2semC!3f2d zrHm&&0~+|QV7@CZdk@_seTrIUrvag@ zzyrP;kuyAu!}IP&D%{pwQG_YW&^t#!B{!Eq&Yh7G0)WH?e+~y90jXO29qtRvJQg^% z2_{;Hb&zrHI;f@0&dw$d9q0vjP`DzbOg)HyJ9lvMAYhqt_#4~WSaR|#Xt;ygjWt~b zbqlUpEXTRAYq3jiYRF)D5vznM2ByhaQ4R|gr4dU~DcMe)uBPW#3!yluM5rwj2N|^n z+64px0>c;JLO6zDC`Vx&DXF9e02F`%IfOhBMI;V}2hhhe0DwX`C5Ztb0|NjAK*K;3 zDW`4pGp_Ro)7T;-`RH^^n1)gYrH2@v|5+bf?mYKR+qA}s&%oSJ;UimD-DXe`e0Ol# zZydzAjZ6UsWrYKd~tjPy12aCqzN+HBd>WIHmSAekL%oLimgEB1CBRTt&s zGJF_+-I`W{L(0hU#XoFQddT@AY&tmp@CE&y0RFwD3^%t{S6{B9w_dmA6+8YHZGB%T z^V@*|y{4DKJ2=I-S4X>!!>b63mcAu0&HJh49Q5W=w*5WQe)BZA23K=_3@>eM*IW=Z zu#!?5ANWl@F`FfW#i;Y$9rq0~nC1>2^#?YHFuxfQ-w1ykHZ?9SEMw5dlCMdfeaHui zT{*v(j-RH%?k4`2x0D%!>Z?9zcwUH5V32EP86VW1qnpc~l@IgGfCXcg#6-CV^_p=? zABx7GfArH_=2#;VGL&=l|L~GAOz>Gux-kjCkKkr1$&G};Da8R{OrM=FiU5Yyo@JdM zR;3*4&%cwspCb+&t(zE+rs2HPx z1ZsEW8!ip6*(iX`PLh@7IBh+QO{L>b#LIVoFqgBUKFzxl0My=jG){+Xqb#Hbuf}&n zo`QCr+plI!^FLuipB9#`Wc78dvGF13Vdaz1(ZMO%uKYolLdH1gq#4+0am#oNC{n6u z4vs0jtznv{uM?5&*Emx!Q;Is}3Ukun@e<})u3H)JDD!pu<;DToh&r3WaNzdAcoI{vRk9mKB|kU8b)4~O!$6%eNU!f5oVDK5N*BLTs54|W4p9zh2_tx(teDjGo zIAB`7k0$ezjYuC(Ax;pII>magCkBUmaXW(FKIIxUh}A!R z>dVP|4)4ibjDQ`d@W|RRtFeep=5gVBdbXAAyAEV$K^O9ki)WZ2#jMpUPw8vnhY$u+st{M}O{|T%wa}=*$#C%AAvU#DRwA zM0ud;x;hDC{HXRlYOgPPAVKm#hYKBF{usCariMj8&zR*zpFTrxi_9M+aMT+i!8BsN zl7N;4W={rFmml2@sra^5X6jV>6H7KWZanq6hvJL^qKQVj9ivJdHny_-kTJ^>IVdW4@RYYOaaM2+DGF z%xcR2dL1WguDvoOp!YSB#;O05&OizVcq{ZtOn)DQf6mQxOzQ+S<}x(vJcUx5shX{^ z*}Xo@4o&!(mN1=}W(f}CKecx&%U0*4$JifdCz!FP>PV2ip{hkozqv#**r;D$e@9|t z>Tn=0P+QIhT25AcY-s~CSIU-r8R_p@M-$ZjdR#_f-OqxLDu4U9SHa*?XMx0+fOO(b z->KabfXbYV57f^yCUkNmTMR90*|hsdr=3xk)=+?XVmYj1L z`kyt*Fwb^2d)$n5yeU zNAQ6`21zcoO~Wk%u@{wOads5~G{QExnPz~+ovC-yz2OpAiPylSfo1mv+_n}}%bJwh z`?P2yOYw6U!>2`_V`XXR4mK$G&}83n2y+hatFaszT@bAdOvOm5(HAau2?4`WnsszL zr?g|IZJ6iv%HYdD40;@#IX~h1vRQSz%Kcs32nUr{T+;EFbMVcQ{nGwN`26%? zd|*Cg9Vw==2R9oE7;_}eSZ^YY+vSgIhQgnKkBtj&%<>pWW?+@_DpLibi8=ZrWhz2Fe{@o&$qbfJUJ@ zeN@bNfc3?iYyE0e(ef5=)dUU4!+&fPx@)Xgt}GEpq>p4v8a8G9Cty~bUIkGQx~syk z;#L;%s#v^yT{%$fQ33Uk$psNGTo?sX2Vx3oA#wfuvCB4TBjFn=BMs24u#jZ8Q(ByO zb5_`|hL^Ypwk4LjpKY*|68{CZe@OT_W5LWRa!TDXE8}8o7GMf&w2>pz|4h#1Fv6tgvK5q~c zoGXwNw4#d21W%(!XVREZ&iK|rmdOkcOcOR303+S(6X@}jf%TT1At>jG6Ri-0%!EoW zb1r@q%ssoa_#J!VOwb9NK;Jk7?ypxzxG2CO>a8=E&RukDk0y>EFo}3RX47^!@>5)0 z{_44Ag@f+^6Z89y{0}&xzWzZu;^)POnXhTnI!6-?~aRSg!3@wPB53lG+`vOSrgaJsYW>I=)|UsAk_{p=a<{c=kGk9t!;39 zOc2vuGqi)*-5AeK{4Vp^aF{qZ#e?dF#~e8P@blUFM?TK|s27u0haBNNp|PW45$qUM z8yg>SCyJZLKKcW`x1RQN(decszh`AYrnL$*ine(0nWy$fE9%&^A;daZRfgAcIg?+H z49-=Yxp1w7!vL5Qft@04+PIstn0;r>Bgxy!>*Nho@pY5!PF8kAI}I{?M6#MKLmrZ+ zx`+@p9zeAU2Aotg?{`SK?dHzJ4;b66!$A5u4svhDIuk^Bng6RDt2I-r@fk6Bp{1({wy}Ix=0G-UzT^2w1IBXg&&=$uy11nDP?2`(} zJ}WN;BQfKC9K(}x?9T@-V~xpl=AcsR-8^p=d`MOXm;G~)!K=w^>|e9gXn>oE<&^*2 zll);{Zl%6pbM573B8a=5XFAD`l!+rSbz#5EBayhgcizq+Ra>c<>IR&`Ah&~h#H02{ z_nx+i^nw=6dJzn2V5h1#31gEZ4`L$hSH^V9TJsE89K&eJ)5eX!+-CaDNqvxEWb*J% zM_dR)LYzqm6UYpSQI?)SG9%eBuC2M%4BJnSe?E>5JRjU$qbtjA65=3Dbz--;avP#WMuFp(3cMN@O0DxYJTKkIw7?zEPfej9X z&x{1X;KKA9DBURMzyw8Y4^AMC>pv&~V@UKfIpxEA##}mj$I+Lk7g@*arinY*15U^* z8hG--qkz}>EL>RJuA`PL`H=STt$CNNtuWrbS0wm1{7GcBX(3os71p6|8xx;V}ACUNRV2hmtubche5b zXNJ*SGH%Y@zQ2=U^fA2u4MxxROq@R_%7+urcq|G=NjdoWY4hGj|4xI|aKCh^J{0(v z-f#S)dfEGUU8cbn4olAgDjOB;D2$z5g^9+ng3dY~P z4W8jC3xsGdCy#Qvhl9=DxZmqH-=U7ROVBb{?Gmm9V>>m}VcDKd9-?>zw8-t7X8GV6 zN66ym%+XMD4G#7sANPY}j*XYmBy)Vl7%aNp_2E5>4PCgLZ;o2pAlV154p$V>xPrCH z{Yn7Yo&$M?m@9w3m-9>Ma)7%;PZB8WJYhD@>7K@1@5E-`kwV|MBFIOm7*igAhtsYe zXR_?>0YG(P+Y0SIm3M=V$!s#rXNurlw#GB)qRpyHFzP?!&-aCgbo01)S!c3I^1wTQ zD&IFuAp0Ov9&k9A-ly9Aeu)FwJU_q)lip3bi2#T4jK#pUOx;TPUa~y1q2o3d-|{wW zIo3dwUE6c84GAE#?H2=MG$p@s?(^g>Z4@faqjASA1sF~NQFS9W6pjkRJicmxU&nVS z>1uTZnKfe;-v<4dSqOn;9+*h>e*M{nVcP`>{W{hUm9Am@XQGcI^fB-bj^Rw@zlIeSq_J5s2q&Szi%Ow#va42H~pNM)x!s1Hqi}ab6zq-?$-WLnaRX zwhWzegnhUc)lt3S^E(CLmrd;`uWGq${$OdBKhX_#E?*YZaKw02fQ!y7|0Y+DP1&d` zDtka4(74NSNEI&286J9~QNtu@xz{EJXV-PX^F4)8QjV}~HtK|p_FsDjCApS4I@_6- zmpKL#b?qa(vru-1OTh$OS)=%a#hZqKoTqTXvRy1ur0t)k7A&*{59LKz!eC_E-nXkR zbg{<6b6EyxU03pZ!@^;@p-}44dfnD^@o{@ukVOJ!n0et~$R18Pn1B`dAGHr7msw`W z$7m*!jk}OH6^~zr?NtBCkY4FGrS884I;^_EI{MWsS=c;m1TQ zF%Y4`rO)gbm4Sn30F6xI#+$wgIdh%TO~Qa$1iRB{WpChV6OANqmryi(A?Pqd*Wv1u zW`^0-v#dgv8IA_CUDv{W=#Ih~X5+*^V3|F9=&wU3JU8*gkk_8NUOkU_X9zkjA2!Xi z_NSY5?vN#J46yD=0UE5f3*V-JoeapJairh72Q#0?GfZNE!{&d9cYsmapyusFa5Mc! zXBqz+ZC9fiQpD_U9QTtx*3v1h<^VA1xepQ zGeVZfINhDAYp%-dxwY4~hphyffQHpCrd#@ytg{9Ynjsqi44(jPRPn|M^3O4(9PvCJg*-!$70aut@idaEdi@Z;0NaH8CHm(4ZpHs zgkbXO91#NXpkVX^cK28t%u%)>W&1~u>{uFgW`_Cj`_WM#{O>&s_N@G2_8S_5=K4h; z?{Ra0BThR48GM}y%yFK{9|NZ+ixFY@nBS>a_Fi`=>*LGD|MI_{=kzDE&G!e~Bt+=51s%;vzrxAC zvaZiCFkgP|lkSa9So@?Fo5_L;c$9zpNrqIk_6~KhF}rv)9FLA6u&!jf&WaAXeJJE?S14{eT0)|Jj+;$9s&2v77d2x zmS_oC&z<1XHE9{1?oapbAa=R8RdVUeK6uA9AL@k{x3}eSM)6?eZzBcRQTmAD`WUmZ z4e^YFHIGBJX8rea&Zt8E3d_1>=rvVMg&5w^9O$zhJIr;lr3f)=%inik^y2m@RkOX6_+-tJEomkPYZ`PXavLg z(40eU~t$8}x zvN7+&ajHzO`O1Xd^C&9WfdtlWH8Nu;eu=!(XUhUdDkObNnYy7p+StMbe{2Z-uR~g+S3l;#)l4p4qQzSbUJ~Y|LY+hJQhbBh zu;ZHSAI-FK={|w{Px%SIGp|4SbJY0F5a3TAGooR$$3^+Rq@MdzO zOLH4~X+w#YA+G$a24?3Hxsx$_<37%Fw|heh-B3$}@QO#Qao|Z`MFa4ELnNpb!NCeS zN*=6Ggke-sz2jM1b#%}kz|;dcF5ta|836P+{CVzRV4v`v{+}B-3wTr3nQ%Xd&%D(5 ze6aqwS&u;@;jr1{44XT@k4cmm*Jkyn2%IncjJ5$h0#1DP%J=_r4*JbG=>r9y4vl5C z9$_LUHOitP;vn>c$%z(4j=|*2qu)nQ^xkulFGJ7l4|Zx;&p&umF#b-Y*Q}K>i%CQ6esCMby{dgM9O<9U#;sVw-{@d#ZD#E4DsFPy zx7IFbz&PO3&pr>r@)=+ReR_~nZSFFvl^SwP`*)(amwwwlA%%nsOK#$SGUj{&dC|wc z2BCvD*@+a5pU(_hfi<9T)oAo_>t|3#|3;f(&s09hOu~(B&Syt&OY@KB;}RerIV7&* z7&bHpO%7Z_<(`9X-a7}n4jKt&!5JD`Q&#irVpe>Vd$xGlw1wF^S zUrva9JY9+h^M6Jhv>HK|@!@#?b=-hezK-0s>2xQzI@I~Ff@XX#0=N5-%~{sp3bsv5 zT|;0A)!|}us`=)`vdsEM#koAVl9VPN@~nO8b1I=^@Kwy~Xe#cqQ%|j%qZD;Yf(pdS z!PN7X1i&3>mCv{M(>0fO2Y4!l_q#8_=SWPMbsTpVp*AL_xHjg)mA8TCE%~(=ROaQ- z57tml9_wbQkbq+zACL&0KODEPRXa9c6lA=?$$1{(AP1_uQ@c@ny7AR8Y4?q8R2}sz z=8geB?0&(iVV8=}F`lLC7iv6@idHfCDZ_^U(aE4EIBpQVi(`-vBywavS_6dCE>d+J$w6ZEGx7vPBj=RkV!cjR=m z<6frV^l^#&;#nj8bsx-w;`mAQm=PzB#ay#QC#=I^r2aBX<=^lj9+h%ss8Bw&Ou((X z0}jvF2FDNCG&sEL&H5OIBqaSGC!F_*5@4YaQ)^-{^7)()oMrLYRaOc%jC)=a4X9W~ z%RpXk7N240;AV$PX$^i{%4;HMq7dywyZ znG#164pFjuae|oeW9jcT5tQ`Ugz6srd-F4X0N)3*^nBd%ctr=EO6_ru68;9Esl00P z@#D@*nES2g;urzLK{*PZjy=JDr!6sJUxMRFb5vIl)yOoL5>>497vlOS(Xm$oF{cWUG$O#RzmXDoQgt zCrYpnLOL|xpjuz3W3(iG{yF%vU|ehSEREJWGzTtYSW#fj__eWAPYIv8?s!XSU=XSXLJ@1#!Gcl) zT2GlXK!JNUm7uwa2f@7q^9>EWm8a+9!L0|Br>QbAKa2fG($7-bzDgFfAffO#-EggpLw3J+4%5B6Mkm|E`3ZV=jR1tq7R+apin+A zdCZ-({74#?nsV#tg%#{NqO>F$=IQ`4vEoz%ua``86$^h zN}fE!hNc7+%o+ua4eD_X+q}9$gU_qx*9B9af-x91UgqarN4q%)G^^Edi0ovWiLHAM z!b?R3%5sUS*|&P@RDN>PvqEPaE(kzkee+;8j9x$kKPaL*gq6BB4h-e8(ot~1uG{4i z%O`KA12u&}I|{r#or{lSUT%Fu+fYGZ{v-RLpAPVUXt++C|8~kxPB`uxQFF&XqyDFN z4BTEciw?6f)#-yK&O1l0$IA2e^vD|0l-K+#C~RsBzB4N0n}qQ#1_26oDenPvJia0` z7(BkG#t4e}sdj|{yQ0m_X8eXXXt>aHikL-K>z_wHz9?hr{QkB+1}tshboaR)9yVU4Hm2cT8$4>O#DcjnOWWuJnnWUJUz?H-;naSabM z=Hfjpz@Xorqyhs>ql)1rRT4@IB zd_vj`qqi*XuaPnhD;%}Jyt>9J7nNZzPUZcLdv;jRIyS;`?*Ta&leo*TYrHU@Xq-W`KYhKI*{kpFe$Q-MZcgv^a;l!qNtt(WdCNdcBV@7f;!ObN1Uj(1y| zYI2PLfZY+6$9>o_{^~v^B7eZNv`%HL5v=E;kH}RpC1d+zb}kiGmI zmov)SqVOhh->?Y{#bayiH6($`x$M%*Joh`sl+rU_$~PatuGo&7eyE z{ytur(cpXIeh*eKW=C(x=DwZHa2_j1<3#G0jfNxlE4{xKXRgJcJ^j>Z*8g(1azo^q zoUMBM$JzJ)4*>-u+Knp$DtYYHvUwjHL2T;{N4Oeh`tgWGvRgoSnd>Rm*~9=>K&ZcW zx?AI+WEfjm=ha&d_d{{MWZ3vLgl2n~%i%#)gMVP}^%#y{rqh}BfhWY9MyAyKJlDGV<(GDpbtiRWPj@Zyrn!A^{ zpZ3M_Nj@~G1HeveW4wqRq=Rak0qM+{NV)9md|sZwkCDezzp^J=tB)aviN52a$68@T zH8J$ZW8j^|Gh?{(2OUh>4UG$1LZt5h!e0MnsRI^X!`ek84O_e;2+Dv#z!IP%siY>a z3%u8HOpX-Ul|mLs=1=SGLkO9Ve>cJ4?FC}ERTrp9;8?t$GvCue}O7(WOHMv7f_t-A+_&Boj z4P7HzYmfbzP_sj_bl9(lBs5!9FJI2q$J_Om*{6Wi5h=tR;-F1uX`m0)Cf>5hs{7S| zWrh4@K)5Lc=#zok?u@%3QGODotQ$m!J7%QRd~&42b!(7~3FuK%ql(f4J0iBtc85I| z_?mdyI~WVnJD_={IKqLzIpqk(&9SRmo?}d1*BBi1975>om@Az)-XCL4Uc-usJF6AR zIpK&!c}H64ufqx)`k;4Y;blAoM|iX0;lrw=mdDEOT9)J10R{rC!OVO#dDto{3dtZh zHtrh!0q{0H#Z)x&}*nB%sl>Kwf~2x)jcIC#^P{SWVabc1RC*{2e69FH1qc;}eW zLxr(t=V6S40b_%C@Mac$cSMNbZN-zez}9LfPoRIz4nYAjx&b$`44!+Fp@}=@a>E1nF}Vij=9Yw-&*WnK)S|(CZ~ri^o*iX?hH5avJQYI zEyyXK&OkmwSw9=HS76y>j@p>T={m64^T1G-$d)(+xdCRoiMsX#rlpP4Qgm-MO=s)A zmV&G<@L1yvFQhpUqR;m_sd zQb-+;o z05ReN=#qU_t7a8$#2#MjU2%gaVAp@N2o3!`@@wj5n)1_M`b<)QHGP=J<7;_Y>BTp6 zZtjjd)T3Qxny|3SQ|k&nKM(w110L7NV&v6a16gaxL@B$(RN1|3s`qo7=PyRYd;Fps z)rlOQ)YPWV2J;o(@lc%%qsgO?Vi0V&eNbO97OQMF%J3Q}Q>OPbNCX_zkBGiv45=Ta z10m?_hzPFCMlmHsmHBQhr+biVMPY#$;0N*jrTwMei zvu5P4<3nQE2V<%cG%Q{lroD+`dhaSKS>s|Ixh>2aV!&D<*oX_IqN&v^ue2pGMBu;1 z;LtRN41FBA3RTe=6C`3&yyJUJPIAsXyVN+4u~go+wqX-Og?k^#j1m`)rk zCu7v^ay^aZse$@%Ll+^{c!GT+?VkL2C~YxBGwit^`$Mzr>pXI0>88slsEc)4!EJGK zmwtP2+Pc2TP-|?c7~1=FN83zGlh>8+ znV);YMR%pTw29RCbq8~>O_q^qeuGz?rT=j_Ks52e5SmKSmSM0L%e`Bf3i`K5JLbgO zs=MLV__+*aheYzexus)h&d7Uk-Y}fsb*28Uhm5eBtn82#*^a?6jHVy6LoV1pDxB^n z6Xa^POx3*KRL00=vo6+y{>%^ThyaX_!8eL2rrduR1)$a&wrR9Qo05peaj7oQUVns0+D`!OaU?mumgf#HKzxxV91v4wINO~Z%-l3`PoLp?! zet4LN1(I7M^t%yr-$yMccpV*=Nk+`^hH5E-lib|cquh<%AMGPwnitEaO+h2&5zAB{ z_~iAWZo)BxNj*;+jPfW8Kf?Rfi0a3j>LmAoHK#w;smkMzVqlLq(m(WeM32@7>}E`H z-06dJ1Tfogk19n`!KPpF{+#;YIwMvj~_)|dgLB3 zN=)8ZLg}?_HfXBy3^3ZXh_ly?`QCEU*zy&}wsMaDtiD6FU0km;TPTqyW^UiG~NBw|JuQNx)>69tbsi1BaZppUiVVWF_NUrJQi2dp_J#v z7=ww2#=7u2*L$UgT_`ax)Fd$<69; z786hMf~QahJGKfa4Th^C#GC;M_>Lgpbx{2JR^U)yv2rHf_gg2MC3@%)FqFP92gw{^ z-MoEAE!o7Y;v(Yr3-8DHnA3 zV$B$xlb}?gdmym1(-An{C?0gNDGj^QfA1XeU3FT>baZOMb z0fQspJjYTPGB6K2+{*m*8Zq$JNi|xDErU(Fz!EYrZ8lzIG^A*Gj~1bTLq>`*AWucn zMdR>^euk+}il9c9o8t*PW~1Pu2M=pIWBpFVw`8^@?zWCO<1Y-K*nK+oVP;oE=SF$5 zdr})c3Ja4YJtjjQMTLI@Px5t~TySWHcKw7#%V~ao_d@3btf!A)47RYR>wxoasO`@rM!EAqb;8OuJ8-LOmYYp$sm*+S89Xr0NjVpK;#-RLB~B zbE|p>CAEO{dXD6BJQ@P@^RC8&jcC$M!M2B44rNny6^?X`9Rv{*7zjO+hYb;FgP3c@ z(1Jt{=Z(~{Gj?ENHFqGN!2{QJ(}}tVB)NI~zf8XzF=!sm(ZyDqMI1Stt{SUPZ@JKR z(+qLwP|ks|v`#W`V1ol^-qrz*%z_@ca$w3JW4tNfMa00cB2H78;XB;X7WIUKth!$d zv4bsFq<3Vl;XDwPjDtB49uZ(|CMavYgQik4wa{v&lC6T5G(0)mHadFq*n%UX;2I!+ zQL|{+0{6@Yk0FAnvlqOg^SSfcbF-NJSsL&wxrS#tkvm2~c;M*tJ>6i!VXuz?*xvfW zsbSbN#(K<}y|%gU%3}oSjJ%Jb`XIdpc_`&y*1z0u*J|7u36o9|cZ%3#eK_Xr2Z)m4 zm?380%ZXyWr$4X1;X>&sUS?y}ABx*Ki|N|-sY)igLo`x@b5HXcks@P?#Mi=SbE;^QB;KMg?U zdvC&X0cLDr#kVGpw9-QxIdAV+R>ELf?g%*reVc9@iy0RS%?5z^xwARK1TFx2X!f8f z^5l|;vy3pEU&ms|`x|gSM&D>#n9CSG(Yw7PRvz;q7h;Yl7#Rh=HARoDs@tSC`TW`8i@&(Lt4M#ZbvU41vI4T___IuerO^A?H(yrzhl*kFE#GSk?xA zLc?dFe3b(>2*kR)gJfCwAGHFLV0+v;H^@8+m3Ie@J7Y^j`4Q+LQ;rTdn5$p4pLp$? zrx9#9YJILsw)h3uSz;8lJn|tip^-8w1ME-vG4No1W-6lGx!Fc*sRd+(3#zql)lJjy4(5VD)ZB2PE6;EvKN}f1*x<~bJIHwZbqTY`oV-B~;4TWM z!|UzkjBmH`niCbu(vGgN$qG$qp6jkMeW*;k*Jo7Z@828{&;*8EMNZUw)0=@#&T}e5()Z!Q@U)~cNhdtHEzBr&$!8%Cpur>l_zL=Kjqbr8^zz&#+9p^3_SoXmVJTIK<-Xr zMZ=Xq)=CWE_E3L~c;y+u7YqQLg)#bzoM4aEkaD&N(hM{B zxNut-n|-Sqg8dMV5{6391VT#bX&~#X-L0wf2W@PMFnWC4K>U`?3-_PqAFN;JbeY{p zz@M@)Ahw&FeG30J59>qiG!GX?{FZr0SYOtG#39?|G5^hHdF1n^t31qpt?kcD>S%MW zG9Va#0I&dffGxCKR)T5-5L^`lGgqG8e1`J8j82cYkj?nlj?08#7&8_u9{|q{=yx;! zXR!mT$Ee}+g#lybbaaINoPA)0O22?$}x;Z=PeDNB6A)XB*E_?pZ z`8hTAYfQ($zsg&FIqb`y_j^`O#Q}oC&IVg#=tjQBg*3{y0Y~P)zx)V7%0c4HXyMRN zeGGhmWhIG$`s4SVxF+O=(Nmx14Y{*{+W(QydvI*7Soy0M=BckA^EME7qhSw;e4E*& zci4{`x&_!SBM*&0*qfVS_j5;nd1DM5G3k^im6h`l^Am9t!gY%b&$aJsIz64BU>vsP zBZUXmoPywwo-ML>K#U%qJ7TiMO}MG0d^SARC{}>gFw}Kg;v&W+a=L!=q0o4-T*o_< z{6({v48v^xXN9u-%L_%xzPrg5Z44n@x@H;Wx92KuS#qEls+W%H-w`I>4rKfyHlFAJ zlZdWgo@_rrr^5}xUbJu|vH<|qK+m8+t|Q50q2gm)>hX(i;96?FANXsGAhC*3irxdV zz0E32ARMK;E9Y3Zkpgo=yYZ&S9X$fQn@cq1^}mJH_2gd@Jp`kjEpZvn24I_DSIA-P z$9gxB^sWU4Hq`nOyD9IfxeoAELtMBYk%2QC28>LWfebJqGhy3xBk%TfVTAU+bsBVc z!y35yH0oR;o(A<7D~Gg#C~ZLy|FMIUHxmpLxB*%rwGnVl-$CbS563WI{r|BZk3BS1 zwJc+M6X%Q0B1EX=_y()QwhD9neqqjSn5*wEzSct39F^Ue;P`1nf4wNnp(Ck%@ zBgCyNrgB5A8~DZ<@Z&xqrFvHi?>PB!-!kw~8L{JY-Dv>O1}w9uCBrwm`9_7cJ@r2n zJq?A+;|9s%fJh$30|&vNecf?GZQMGMR%4~bej(&dv|Y~uOrEwKwMiWKg^h5)@h=S@ zG&qGGVy(HZXubdGE%5=E zoyO8;yyJIj(zc&BP?*~`zsHEZpO5W5)_(w(J%3~e=rDgA9*=tJeld{%3@)utjPwoI zV58DPyR6n?$Fu<;=1&Jjn#|f>bW*rIK%6ievN}2GE>$8=8-NzwcpyX8>vdQe!~>=9 z1Dd;jZFwNO&-VFx5w4yo;B3C!hOky)P9z>Bv-oBYluiSacpd>ksrkcT#6PQ6NOsP0 zbc5KNmP+l`+4BH;Vpd||Tfv+%Eq52n&If*T9jar6-)8jh2#=B2ktnl)!DcX{^l_I) zwkj*;qUCR;F^r#qdm{tJ`=E73z8$6)6qkA+K)nNv(fhOwWOQ}+TZ|!(% zdKtDZ_8chC)_^R(4de-U4!C_=J}*6I_U%+n3!(;G0plrh18{%?tp`LM3!4YDI(efl zyq1xxvlj+=8!8Dj6nNxmNU4vSQFAN~tSwIEW}(dVfplAckiQK4C_GTgY#avc%LZOnYX*Sz&Mbwx4jf(|-rt z8~QO0+B30Wb1Z8(XIT<0@UeOzbd+eV;4F1W)ztiC?1{{bgGG4RN16k9ukLYQ=yX)DIr{>%hH``%b=W{sKo&6(7hDwW?%YNc9G^$_$-&EGa4`EIoOAbl>rX zoP$q^Z8Hw(1~e3VQ=OEt>6G|ICl0i^Z{^j;U3mU5`(Aj!`$XH`n-0cBUjJzR?RBSx zR|YSOwHu}!P-#H2tonBYIUS{Dw2lmE9KFV!O^30Fh~HpKdGlcyH6WBFnW)*l(hvmf zGtP$NRGH}+i8>gw1H~SBGveIi16okqU4B=yx6khv^S66Iv;*NC3-Q4NFg$@E#{G^E z-Kddd2buI4IpVVDyhRHg)Igff%k^?=x>RXLtQg(MklCQ+=GAJk<#Fh zwmF~KDA(6%{2+faHBDnyx>okreR(5nU}+U{qQ%6EL&Ki^no8bKX8R--%e`?yq# zTf+4$uhaE~_M6Pjj=LiDx5d>y8ZYULc@x@CNnp+nGHkd$nSVOEF!QhWz@Gq(Q>+N~&+%z1#Bxp=t4=(7X4eaoe`&FWB8>82d_qpe#h9O8E{or2M zd@pQHaW8Bc11cKe@xpGyO9`N;gd$FRh39W0P`NtU+c__^`veSKsfw}voM5A%qCuk)Sa8v z%n4=83s7#$?ADfH6D)Q1{w5y4se_UeDcebi1om_iCH1JNsHj)XMO0LdYQ|B`9o5uP zP;nF#Y!(Hj&2|)2h6Y*746D@NH0Av_RHZngfqeLxp#3vJyM4-P(+WV|epVv>S&6uv zTa?yHv#^pr(4Vp8pRwf)OzTrzl?MU~1-CZ6w>G^%$c|89%0|+1B8vzJ7h)zL&Z!$X ztY!hEzZZfstrBCeK7I0j`s6(^y%NJ+nqoPoPhZDR-}uwlYtWQSp02rt3a3|GCyl0G z>fC&q1^zV4B`}}PfIpo9hp~Qo7k_#eI|=mZ4foRtKa1;h_oY0p!Ze;f*)_zgp%PbAX=gX^DGBy$C?FjhB1~6+Q&Pn42%X-uKa&b?)a)Y+N!f zGUS)}t(@1FUzy!(G2G|Da*`?0K?er2my|_*<&MwX_PA*O^&MgXH7a!hadi175 zfsq9q7OWj|K|(8=toeQM%K&c#kdeZPW;@TsPBTt3PDW>$xJj1`XBlUiJITCGGTAxC zImUI0f#*mE4Y9i=5l3yq5`k)XMnW_EOakCv%>y)>56u=hRKpL|;07vziHk$A`A}?r zKz*h;bPhgr4qis8UHC9IeW5-)_%J8?$v^$hME=hh|lI-_5C4Zcf{}J(VhVJ7G-8KW%3r=HXYTr$8ETMyYV<6@Z*5M64X3`IQ%&F#C|xC{QIZ#avxQ6h}XR= zPB(PQ{xM`XbEJP@t%2%Xkeo(aHtTuoFlr4LwbJoAtf zXSZcy^7mt~j=;sgU_c?tGJ%>7w0vDtG*#eaIvl8APwL5cHdc_&HID|sj!O>3$>TDf zY#VmtrSy45=(?i^c`(q!SB@gn!8Hiy0^mC5+{1yRW6gbX%2I`v=bxEn_^#nR}nrshL2Xl#ZiKC1RdV$_Ci#<4c6Gm|Fu zVMBXW%A6o&6pT1qh*mD3n`8%d!@mDN%Owigj^E$i|8DwUCK}GHX8&!NoGIL}B>H1! z!@Q#SS%dFNIUJPp3^=$93)Zzw-_jyr9{%H2hgv>f+0 zP;xT#Ke9Ot|L~JSIkU2k9a4d8D8HBMG-WV|In6;o_92zI`DjnuzYO!_f_@mW%Ef_# z`(K{*9F(LZ?#(bikA^oc8?&QK|MY%Xz2Gz+7#-t3APpLZ#M8?e8TKKC;liYP-3%Z9 zrhg2P3E^XckqB=_6bB4L!py^htrer~A^3(lH@w4+T02s#iQ+NoNhThHn;~uTwV1XD zbANZm=3$RIdL6O~44diXm&WekhdR1DG4FR7y&jU54x8PiauxtujpD0KJ?X6etwiEk z(%U;Tl{}oPcB1qILpkZ>nxc(2&2qLnldy}oYPf!f*4RNOuj{$k$f2qs!1MeW5wtFE zm2Z)|z&`9?sR)K$X9U~RZj&Ce*UMYy@nJb~Orr}s&$h zO9E&aE4Ce1V?@t9CLW}tDK=Dhng->e@T3v&`RH@9k6N6FadGIRE%=eeCli7Ihw=u#ES#;XmaqQq}8YZJuP}$3>4$^1W0M^$k_^ixoWBLC6W0{A~Rapmt*jkWAKol(D6&L`Ae}`2nZAX zrPIH3dLI+UFGbK_iXi+FNq>o?!{&S`|4aEZmTqtRZMnQLD=GQ%O#bprZr%{?ab`sl zgcFE%6(+bm`&-fNkJ6E)+uy_cU47YP{;~;D1T65rRGYt4n>lb%Su&Z?-nB;@A@yNv z)+*u&i!9kQ0Dak3f7w>A99DeE7JtbW`$PmKu(k6=x0% z4+5XbMQvn06A$`KFXSm4bhes@Fh;qn3EvZ^aD!w^NR?VuspX=B76t$lrJ`fvL_zlC7lZz0&N7+MVcRt((o(R}h-KACU7<=czj?is@- zz|0dsB*sB&4D(m86lE6Z$sm_zcE+8`A%IvLL+jdD3G`T}s@5k3rxd9tEThlbWMc{| zN)Si6zDhX9IoYLv0Mwu`ff;RQF}veXj!lD%AZbkvafdUsj6AzWJECS{ii4Vg&|k|o zXj8S*6C+P4(<}q)g3-uo;6Dm^;0MNTeCaZ_W&B`9nkD7Dw2Yf$8&sD@B!?`GSQ;S( z%2zzVm5W_bRT!^GL(6W&Z-CI0ssk8Y(aqx!oFvA+^x2nYr)oCPW&^Q;YF1ja(p@xn z6xtWcijTyZ6?7!BgO2OW3W_hpq**}ng_u7U=i@hPNVA6V(YTMsd1(ohkwG@l(Zfgl zPzvm*DR|OZkxw_jrJLWD*l$bhw{`N{I=Q8yTNm+LBmC9~zpYZgtx~tt-LBPduk5#1 zcKduwVs1yYQgX`#Zl!knG`}VKTcWoiS|YgxLAM~@I@_t;QpHU-CoXo?YKJrj%&De9 z&k1gEOmi~9ObIo`!GlOm#&-nTqNBwsrZmh!jRV6F3vmE!(?l{>30H*7{lQ>KQ$-3xvoyM>%9cSkf==1Y z*gAl_rdXK*I4hZED>58b+KAOS4o9T?TS0=R26Lk43b$d}FmJ)c?E`Rkr_gt&&`32| zcjJ9G-Y-N*v#{f?k@>EXnXFHVyJYcQvUunKc3dm&mD=S&mnB2o4TJB7!7kjTPQtr9 z>bpE@FXG*=`R>=eb$C@q1p$8C1!&i8zUwv@pcrTAE)MxF4*99Dh`|Ky8d#)Y>i|u6 zsqkGY6BT#G=DT8U-Q6p(nyoz)j<~o$_FW)nTsRr(C7VNr@NSO!ZjPErNPU;bzRP1n z;7*HRw&;Ao8YD8h3l`r6i-m^tkpAl5VpG8ATTk@zS~FABXA`HqlQh$mLyTstk0)+y zO8}5|Rz{}dMhz_&S1F`YBt#53r#fP=Em}){fwfi%1x9^{>j86U@&+a};l&6?&FMlB zH2|j&)d=V*a1e6KzR*MhBGbS~I%!oWt>9!;vIN)!xivA5n zO5)5>HuWLlO@#YRgn;t+n)Hm&qUnPf4OtVGC=i-FK;yOH@N^H25ZG)m(s^8-ly3qQ zzX?#BqDVUel_tWlIlt7`CUOYnJ|pz$K$j%04~^?%-wX+4oPqKPfFbm1769HBedrb~ zbtqVTC|GPL!g#3QK2(qu`=MfImLLNH7|h0#)KiNB$^{pOL8mhp4Csyx zZ2=$JLIYV$>PZ#=+}ojGKNRdQpgm@27cKQPE@_AUK;P`bL$BaNuVAOtlZeBmzD7ZS zqcC?lGo=lS6G$)n!ah=!!Vi!Nqj?9~po*>u6Pg=o9H1(5JHIm*>R#_1tIXQ9* z{bUuBC_kf|E~X=0`NNsi4*LIbbw)#iJk1<VzmW=v{S6~(k z+5=%V2b@_BQ0_>Ue8PfRnPS|5))ow4G9^5ZsMsEA<%y*A7|aTn(CQp&0!z@Lja^j_ zgYyy)xnu}=%Ni%V*h8RJjxjJH84Z@ER48&;);fj!H^jvtzJUJ$1iGm<@lePBpFU3F z^KKt}cTauy?tiMN@7mRO_3XPK)OYs+3&?*LQ1aJ}{_94=dC9=*hN`>Na9?V;?hKcf z!IzfNml}~TH6piBUJ9eW6h?h^DGvEk9I{?i3ZM#)a-kpP0>~(()_kuAGus=%R14~O zsh@qRpM3>6Un;mS72JPFc$7*%N~O)39)0_xZ-1lWiAB5okDb4D`)}RbySF#0xss@J5T&lr*sRr{@>d`*<(LT6?zw!Jxo-46yjZTH`HyZ8&W|3d8+e?!QBLr9})u424)d(TdO)K1=G z`b#(erJLCV{ykv-Jz(3JxYP`NsTrC&EZea_jGy{ddgH z@YhfN>n9@tiE}FArdngF*Fwkf|JhpWvXf(aeHb$=s(;Us^}%*Ygvf-tkG zhVbYIn9cks7Fy_0qWDzAJ(aajwZ>C0=u^F>x*s}B9l|#?wdq1{B%s4w(APnWDjPXG z8HgCVD=WDx2cS~D6;Ff*aGHYY7@8&R4@cqg3Hq$6jV5FQv#Dm-C3kkm(o za>5CcHPCQ{g8kI&U`lzVjPXi)8*P4o%!#lT0+1txR~~8%a!F^B(G1Q*mMJpsdaKG% zG^ADlgp>yu)z#1+fo^Wt2>s}~acf5f=D*7h2529g1f%lIG5X9KHI10YxqjxEEas+_ z2FnB)>IC$MCy3?WhYWLH1{%ul6KqpA5vN2xCV>G7Kfo2-P>FHCXX1dD5P6)rqds#- zy~Wgl$7I@AYQqOb26B8xFwvMq%#d(%g)0Mj{jg%r-Jr!B^1;a*awKbWM8v)zIl`PV z=TS1fHj=V4zkcQy2BL}@Q6(R5rdM8+@^XCmU}4A^Jfj*-b6+twm}L-~nUKSPxh$jj zOfdLNFn9^gT#5oR&@w}mWvy{MQ){28wGYLnz{mQUq!_1U^FfwX;H0R}gDWDC#n!wbp?HmYR$+SQeBtl|oI09Vb*$Qv*DR z6zBvEPS*6}Jc8t}0p+$LuXr$t&2jSdc1b}#bNnChP0MMy9by=y0Qs5H6 z`%^L($)dY!lY3O==v8K{EO_142Z4okbZlhH0G>F zB*=p{feAVqesb!p97=f6g2ROblDPFWtoJQ>sRi))a0<0(#@N_DUBGKe~MUVOr z$0ZB?gGi}>FaQ+x6z#KlKl=qfYe%0&V4t1JXQ9Yv#n5N_epZ&xlEG&ufY0W|XZ2*( z3w_oB`YaxNR*pW)Kz)|W&qB#(@948y=CfJmvsmP_R_e2L_1P-$St>D0C$m##Rtn5Y zsn3ppStw`cYL@M1)!?&y^VtXBvrT^1O?`F=e0I%d0q3*R7v0@R6v2mFbfxPtPG(2b z$z2eSMY}a^%C=32N&;*2O2VP$fezX`3{o^;2y}!! z#|d%`XdN%286c{hG&{c!n9Q!$nAKsLUX_6c5+7iRLUmLKg049(>0?rTOgbh(nN@j0 zfiMizOan(G`iL|ik+Sv*ZInPvlN2=~A&CWrx<;dx!VZ!uOq51s@_)pqXidveSu5*6 z7hsC*x-fNJ*_mZv*5-)~0~Au}iE*+YN&&l=f+OI;25jg%b$wz8Sml;fd4pUfiJe+| zAx%gQvoz~;%VFWsbM92zb4qrudHMQl8lYS*F{W8Rh7jukJ4EoN)1i+zib)3E*;7RTXE?NB1acc7GhE8>fk0*mE?^9nl|M9oe05)-FbJr`2qD2Y^X<8j z3&RHoOdFpErpl^#ce5R?IJziQ2KS z>rwwfvZ!(1f!nhp_xG;;dspwjUE;r8;{8IQ|3abq+eZIw3-NbN{<|idjrbdj0J!v} zk?x5q$q+gefC4Figt0gr955bewQGPt0R#vL6hHtFL9hU606k)_!Ci^S)A^onz@(>= z9#0(KlO9ZIcGpeROP#emubG)<@?ux2+invc$*V{)%4-jtZ=at79vdsGh5OVp;H4bqXDu4izpB(13l=oPX%~$sWbBI&k zY_EBz^ufHIy=Hk?tSuy~q%DlwF6&|2>NaslHs4}{JZE=(#@+qnF5Wjcjeq#ahdl3~~A z$5!pkeZKv+MJ|Y$=%qcq4arN-THOo;NFG=t-wE*DQdUmD+Thvb*5W{xaC#X%5(zV0 z9s5$eClm^E%a>arUW{G9{p=P2>Qdk6=$aPH%^Z&G!}Ic5$es7c@)fdzZ7{_kE-QYs z+>o1erbjUgSwqkw%M`y)5c zXx01J?ejXV&tZ0Dcs3e{%`4oc zlVP-fT}kD@`b5_>#5jD91iI$s+{ycf_qq}2bRT2m^Ih|j5HwiK_AHL$ICwX-A`W1- zw36XrCd4=~DWgPnIZ3gm#vmo{K28n%qB{lRRik!&-_{DC#)O{-!VF#Z7@BLI|{*on=S!*d^j;C60L7F=#21n2h<5;!NT;a*+cjdBq#o4xbOlMiRK z)L?ggT42Wx>dgN(S6^<557;DJ$>XcVX1~6%Sy0~$%`$6O!69u~0}49y4?=6K&W38w zDe*Om&8vP`a-sALz30snxHB*Z`aPmU*!!3RpkE!LAImU1;BE(s^{nvYl0C@c!fYI{ z(RaWA(~E;iDF)Q={H)N7r7*A4s&~oKhAVUl>dhp z{5M?R!FgfaCNuv1%t9$6)*Le~u8c$4f(YxATgb;I_5?12{1U91m}vPa8;u!n7JFXzT)!ULNtqn#bp=_}~DXSuw?w zjO0Yr=AY%+d#i{ya6;+Nq}Xwb3_69e04B{=C|K}>8eWZI+Z91||D&i8|H4~(3+|CJ zQ3L1eBvR|TCU*JT(Z~D0RA5anTYB3!30!oRikj76TrWp_AU)CD{yvj2Xm7e=Z>GE2 zaNGIs!6j=|&|Uj5f-HPuTG-VWkXx*_tJRT;bZ@RGFX(e$efL%FbL8Fqx_C;97OgF1 zC&eSdj~})W!&}nHk{)Hac>1&k?gXiOK7oPC!*mRQX}!+j!daW-9ktZ75)g4KMVRco zEah9P({_7x{$ewlt=0)_=W<>A+jiaTdIto(I2plV%KoOk8qHt%qTZ2I(=?u+IgMXH z=dG4Zh~_Cy0<5DiK$^KB{%B9**fd#%SrOp*-!bZTMp~K{mxN#2xO35BcMf8sg=kp z1qwz3w0m|ZOVK%UC#{;#*?)KDVDv;23#7eU(tv$T%%6?37nAFYNq# zt&fqzZzqbJrv9_C5TQo5=%ZP&?W%<7kyI}F`pQelt9U0DHqrBxq^;BG>*M?e|KIc~ zj3RjMlC(diU((_j)%C|-{2_c;|J1wA$RC;%LUcuw+;6dN8O%Szt2EBmj>L9^W`2|R zG27a8@?r?tgcp~ochx=J%yBCGlUi=6-Fmb6?iiv*>53ENpki|v;>hrp}Xcx~{%~sP#32wq5N4GMW zE+sqEt^u4odwExD*Cq!dS&t6xCsB6cY3hlQUpPQ*M|TP*%;%$=^#yPTpgwcK=SHtR z@T@5FtS;$t^;_yi*p%5OQ-hoh@^-5- zhKsI8Wv6pX3f>TuiMQ)b>j@A@PMPhvx0)K~-{33=$*cx>r{gV$b|n+zL`ZXbsZ99$ zoH%!cUj=y#O2%IUhLIFDDsC*8u-3wOBLoX#;5~WZ53Ig2Cl`}FFc~y^)|L+;^rv+zX7ZpAwg_}ea4yM0` z1eUO@@(tlk{h1TVd(8s0@YW7R-We#6}MefJq&b>X7U?;HLk*2oo)*YEtEkyYe9s{+@(H&f$p_E$=PK0Fo{nxc<0%pdv$h;)0P>ds9E$ z^h0uv=;~!y-0hzpZwdl`<}RDmnf$U;op2`if0hPJwu63m%Y`Y4qC@{!LbQgL{irqmoc?-4u4F*CXFF z!V!ef-tTykvrSI!xfcHcV)I!5PJj=DrUz){bp+KEQ8w2DXn9oi;JxsQR%h~KbK(?a zGzbV@u9@Vt7r)c#@9v>~+?ZjtN^HJJ|6-IU)(s(c$A;MmV=_}~i|b%J$z;G%=H6i= zH!Wx2Si5W|GvXo)-w{Bi(7=GC`FH1lu&{3gq-4KuUc{bms?$)$yvG&wE((ghq}@Ct z_tWj%bdDgFQ5+S+iCXD}o|_Yh`RZ=TPQQWv6v)kU-px6@v{O+qQl#m>MWS<}Kcu|* z-m~>`zG>a#stbDDyu8VAf>i;@hVlsl2Z<@8mb?0QW7jlc+(fLJvbpV+1SjdmH zqTzPGBh^20wma>^H<+~%NOQ@5qe+qLjc!mmXzLfKpuXP~AE0f^$G0I-Q53PmL_8D5 zzjDGF?la12+T;%d2Ogia**S+I;1=z8%fA%71XhZdSIxc*L8F7WB%D>x zFcJ@XPcQcV&GCYc5(*!KD|UQ6#tKjwdF0*%c$EIoW0x{Zj-K6}#~Yjx2gS*FMR&(4 zm%UPdB4_h7e6#%wU%sl%nObL)<((ElWk6ewEWPb((-N3>RS)?!I!>(dTk=);*cVT1 zW^|n3OAPPsj~xD2K>VzK+zHM_gPiw=v5FGQc}H-lpNN~asnUImAdZiZceam(pddZ= zvH$mp;rc3h!v4;y1a;am_rwyH(h}Ws2d>w^3uK)EPgoLyt*1drrwJZ$Ut*ISj`buD z=+TjmwyBv_>&lds3z5;@jX|0l&H)V)2;tHZH$^}0;DRxuL1mtKqDlS{LU@|H4f1Yv zq2_#!_Z?Y@rN1Gf4!x{}%zGWA4szyBl1IgX@0O0C4j0vzf$Yn8$URV|FGWBYok{dH zDA7O3NUJmcoV;zF-Ze+ArPuG-9FgbWMB8ej%QONK{R)q`9#|}eE#|eLuV3m(T>stp zrG#m1TMHeDy39nQ5eqz;dqx&OZ<0zwLX%gmElD*OTbd{M@#(l7=IScgS-A zdLx_A44V#xYQx*>dnx4jMlZDEJ}_kxIU#h<`2Jg*in^UVx-WoN*gQ)OF@^f~!4*88 zSQ^ZFqu=!XhTe{7F1-{XIqP5jbJ=t($fc!+^h~fdM!iYF7hBP|Z?gv+o9p%^Lzv(> zo$Z)l8ysXr7!d83!iaCz>B`d?%%~nWT9C|1;d0zlP8kU_9pKv|b^+U+B5nu7bycx#G+i(+B=R^tisA(cB+5>l8|3n$hZ ziOrCh73KJ$&H8Stlnn8%^h@THL&To{JwQ(ElECLqBpJkP>OY>MjcyYNtWKKOL>^`Y))4B>ujb@V^~AoQkL&11t*aLiC@lI zB@+q0{A8@Y)3dw$ zBZ$-r)pmTv>35Q0wOV4&;!i4v_Y?MOBJLe27vz76&j7?P)IaYL9J2d^Khy@kU(YoD z$+hoeK8AoMmL`v9%KvRjc+y|M>KZAnQfGW&n?h$cgBH;1+0^yarAl!=C;fxR0=Ww| zuoITBLv{+utYUh_Mbe@->Sj|kHt1bIr$&TV37DU+&Ai_I;?2Dq zDe2exGwvL8Mccp-YIUNS_=$zm2;Da9k2NX1#OLiZCH`mKw#o*u8y53>E%$X0xJJV8 zyk!L2;2as2B~6upj{OTa_im|BHNuks1U_hrLU;K62savz`sHlqdLhl$utNQ^LX&_D zUA_{6FJl~}Uq4ZK^e4Xwz5N^cDQdHW+g!l>d}}|D|4;1-(+$^+tRXbZ1)Hq8AE)n} zmcwQ&S87^PQk?Z?VjM)^CI%x;v>eoLXgMP0^`#8+!A=xLSjy|GTlGA*vUTCll$nlilyU?WQw8ix8JGy(R$>Y#yLj4>;@J120mKv>@3tamq*-q;gYMb&CTt$s73HN^| zDNRfYTW;XFduL)D24m|Yt+GlbAcE0$0|wyh?PU_XFBQt%-7)_ad!q0E=y_L?T^(0G zkr+s;SZiEN>#)n5pp)Y@r!A{?odA`|AEjXIrW7cyPo%Zjtw%GRx7vNjYcqGARBL54 zpHyzGZZ@YV^d?tR2(gJ&royPCDv$+K7Ab!XwV_p$5^b4ub)S$?`l%CTGh9s1M6`cw zy_f=@#w;xYM~6U#vO~pe%+r}f1#3{sXbAaDT}oG3Ih9i$PL-TAK^9pp3X2X29lwL? z-Ak>X&*XsfXRH;QI07aYx+yf58AK?`?wBwF9t0UQw`)ND zJ~R=B>&Zz%0Yw-ps;gbT7&H;yNx!gETpaQcBYKrEV>m8q1Az%v#5#Jmusl=)z6o&1 zB4QjpS{Nm44VewcglR}Cq6S@+EKC$d$_|nZc1STI6J1WYIs_N70mFoR==+eT34a5+ z3F(kfL|}d(az7(P6$B$ZE^0l25mvxDL^4D*9PXETJR|mga)?RDV2BGyR``CC08WSz z2waqU93$p_oqz@iUC2@>Mp#@VR>FGNek=%nNDC-N$a;VgWxr&=R={n)yAfHxaDX4g zJ;Vwm3S>QWzg@pgzg53QzpD|u5t|WVKUaV?#3V!*BqO~0XZnr@wS1cJTmo;}Ia9G& z7;nlsF|k<`LG}mnd>W})Xm7$fOffWQZ=(~hg3-`iY;Ua-?EQeRSRNGXY$JB{RUAI?##DZ}vX-)u zPF}W;>fVvt{uaIvTWxOW^~Fx~_VjI?kH&Kk^{*V;y1@-Zcu^z3PY9fLanFq1kY;l# z#RMJ|=b(e3laLeflcBLlOez{_`GgcwG7*rds3m z(rt!&Gu-zpJw6klVymwCOSTpWVMS~KwAXEb()1tJ^g1*i35ION1Fa~xhA$`z>5v2* z4N!{TFARoD7Ww&xApCByrll7EM~IVPQB(W4lM4V9nwb8wC3+$BN7@vol~dZtP*oJs zR~B>*FfKOYRN{L}N*XY9i?K=?1qf#$+SIAx5F~#iV>Y0P{TV6=`g@pG99aut?m6k> zYlYd|?lgcNfTCscum>waZ?UrS8#y{8M(gJEW`4F%9zA>?X^#v%?Td3hTrZ}w=Wj9 z9@NAqHTLsAnweW}g0SXLK>ZU>3%2J|#?K4S@@-rLU>&WLCq>XzjcY+`Qz3;&XkV5Ezb*9OsW%29DqajvN=< zx>@`obQSu-*9Xb>4>spIXlAtF{%iid(%dW6i7$rh2RvUNbPkKyu}l6v=iDpa$sfX; zK8pQt(*0o4{U4>x9|0)o7_A-jJocdy_ejVZ6c?Sqa|gnMHlHN->_)a-;xuz zAG|gS*}a)p*)pu#8`Or|ySv--HJUS&8OSh`FRPwPkGqRlq&sbw^hy1w&T18} zvB>hV%hGOK)aMrVmKJ`N=z?3#WEpGi6wt0ve=USJ_UQ=(cb{*qZ#gM6UDdjuPAz1f zYq|Vs%sA&RW?Zk4`(fZiyjn@uM%1ED%a5e^G0kk5wwMgQUij`+_n`VcdurYGK8i`5 zFk|l%N^~Nuv^!yfsF;Zi3;U;%Q79Q&=Vk$N*~%00uA>M4&@WQk^}|; zox{o(4=4l=?1cmNqQ;U0kL(1D%m$3K72MmN{K2yD#j^N=$7d*Y?83UA>?lo%2|(uf zK;jUJ!}|vp`$O!QB4ETaVCEY{EL!jkiO6xV;|XLA7@QzY2|xlwinFsp23lDO=VJn* z;xXgVu!u>3#3Ur~@#yhrxWpu+@$neMz?KzRRolb2!}-m|0;WxS0sW*!)UaQ9zCwgc z`u@ZR^6a#!xT+H}hZJ`mga?hVIyFBT^??q&96frPN^iOR$Qo7XRqE1)1v<*aFrs@` zaiRQ^jcfP2%%?Z2ED={H$AUfDZ+2Z}M5-UJ7j84yE?dL*-e+!$U0h3s6PLB;>z4;x z2hQG;e){f;S)O`jUw?V#*LZ9tyPVxmV;2w1@l7tQf6aO1L#~Z5c2W_IwZn_P@2p{y z`E49%!EU|7a%K$|C~g3d(=%kE>)WpIb#qo?0c3^Q>|hS^NBv;JjboD_SS*5U!^qD0IEwH8m_KUnSC^yIGCKF0Dotm=K} zD;je7Ji%@H9(&k#XEI$SQ91Q-JmfU}iuM-hvUKvb{xP4$|J)|%=y7$ITv zyaVX2xzhFXely7ac+B3me6H54^K$EZZhL;nc~2iT>U&w9ShDbO!dwq2$*s?GeAPgi$k0=cV?}*Nny^`j5`X(rUR%znrGZ|HD zu2O?%20D1|os=Kjo!!%RjG$^tL5mL`!;VZbn0LF2Vw3O4FJ=9>~ z)@Ksg5*sf+(u7Sz62Ecm%Rphfk=!q(8TSv5&8vQ#Ti{ZI)|}~*t=_Cn@R42TL-V<8 zM{m+yLZf82FfaMyY)i%U@}j}*%G*k&eNJ=o;>aTE-s$7R%2dhuYTDS&E_`;m9 zM7j!)rfrJ6$)w%v0@YVllSsOr6wkEt*3#^9;%*I%%Y!0oUByl@rKY%oHSfe>y)hHT z2b*z>OQL%N{-cL;B1%))8sT|93_jamPC1+ki|r5j_71{;9la?PP58FlyA_?9x-|dA zg}RNjUxaR_itl#(`c;<#>04J%-YbVJX*;X-e>)GppZHuqJTd!RHyK`hTTkMwu5g(4 zHeeJ(JDV-}dpNIO1Tb}0NmbJWv9WI#dy9;hH@BCULr_ztfJ;Jtl2Zi2Fd$yR-Vbj` zVREdmmP9@2m>-rUG2@%^e<>>Ygbepsw4Je?Mnk6Bbg`d`;3YDfQjCRGydeVV^jW{8dj3eR{)q+5fPDnHzjZ=&x zVqY3-D3XjNmwpHg~C<=>A+eu~9CNf5&J;KV| z@T~+LvBuZns@g|^CMd+%OrAc)eeHHl`#mQE2(NS=_qT5hdQ42JES!xY$)w_!Ww&4 z64M~vIy-ni?RP|LHNXA3fIXha2D{e=d+K5uEM~Y_vpG-Ee@;o=Fid=Vycxt#B?H|a z5A{DGC88B2T>P^M#itS?t{cWdzQGR0EMOXB!}t^cp8_4?XImMoNk_>~1tYW-g$8S* zan>@n?y&1Yf!SExb#tpj;8C8nEDb@g+fFCPc1D3_)dEX@NNTZrsSR{9fqki|ftdtB z9Z{NHG(LITdvMZlAkBfJpjxTOfS?R{mIC-(*d(rI5%i|TGA zFR8(u(dfpF=?-E88~xglGVntwi_d>>3Kle}mqNY3Xg<9?BNn{E*d!jTlQQr@v5a?p zvdR+l&yn)=S|W+>zB^GN9vr8rf_r} zlDa+}tBU)*gb~a;lS{F~>zz~7$GebiI(f8aAGbZ3=*@eVWy<67i+yxvulyUK*DxEH z=X>P-s>9Hq5duGoY3{7MSn6v@1BZ(TNdoU8DF>9}ScC2M!`R$YNds**aP^q20*a-= z!@8t_ef9E)tvoetSOoRoVba1$xTtm@twD5 zRqr4*`u9QMHTwcnk@e(>IbIjz{s{XWy(y3RMQKcTZ^Un346ho}u%@7~s^~G>=rM+9 zX}V}!MeM}YuWVoj^14b~MRk}GdS}pA?u;m0c?nc`2?JF&aK(#TX8E_wu_}3#GI=w$ zad87gbbBd@_X6^|a$H5VgGa1EuPB32aRXBm9#ir;RN-OBg7yflJp4*(K6&RUdSy z?kWK+>XELb~VaHGZ-_(|3iF zrOH>JgCGey%D$5xjQJgm78}janPHBwm~-8&iNCbVlCL8NC-|$UwsT!qFYlIXaE`Ol zaer=4_3`H$ChOX+>#+O5$>5BK#c4*4^tfcQ;}1_d(Q%Rsv&hV056(gHs)n~Wh2UZF zD)Yi3&Vp)6rArSk3Jcsow1^*@6${+yaDF$go)epAC$4J;E>IsO&2iMtDp=pSLyF*{ z@Qb?;RV~qK=FC>d1*g^GV_IGs7BaT#M2NFUPj`EHK%y62g_*LfE>gnsQ%j#+?}Gd0 zzR-sE^JNu01dQ@4lp2_A_ zxp(eQXq)r6yOrYZ$t0y|52@E)&1=-{oWreZ>*qt)XJ+m;=cdwMxrdz|dW)!2OXo2i zGp-vKhQLL|ecW^aiv7Br_EQ-5owxS(%K32TYNNNbw!f+d1FbRa7y=q1{~Im_YlNAJ z+8^$eAFabCkh(}*v&d_ZFvZK33DlYR?ltC|5~k=!TTyi#JmM_S_4boph~Piu394%5 zd2_3oefTaSe~dI?E9Mlco9r63LAls<){;R~VMoT!+Niw9SC1Vb^kwFrtrVvOFm#MR zuDZX!VWLJRvElush*k&FBw>tu1H=D%0;S2^^3s+xt$Bu2yEIdy+W~lF zkfEo`EPiV?O~_1^F5cTy@Eqty^s5QA)`|1rF9@cTAtLV&K;V;JwV+&W>@xqNpX}Jk z5el`wNL|rmssN3rAdNVVFcyNLFb*3VCQeygBpQBHv|m(2x#$EL5)?M**6Z!)+_SOT z>sN;ZJsB1PD=%yY4i_|Yte(@N#!1z8aD|@&8Rjrx=mS~)WYMg{c)u%XPgJNij_|=0A z4B+_CN0xZH@GN~oDEqp}OXXZmc`qp=E1EXnk_zZLK9strd$lInYGhdx0QDaw{-}_a zS=$ZjF-qAX4Eb|JS;0orb3fgcBQ8@RliCzcVTShY;_E=V4nglyQ2&~9tKBQJ?#vpq zVe91j)!mjp*gSsCO$tk|qv~IJ&}I6Y!F&Cx?6p-vBn-C~E`Ihz*W8*~Zsll|!-mK-jCy3wa$z>fYpXkCr?KO^R+(S_|cA)qW8&~Bb-WV4O!ufY6S`a&`LLS0%~ zg*c20Fw!MMCG~J{W80ZO>#k06P80QLGAA#EXcDFgPmYc=N!Y)S4Nk96bO;>-_%IQY^XoicKQhC|7r z2lt$fMQ$_eJK$A<2p#LS7_(#702>(^q6G7@2+lWXL1w|1B6{h_`ClTS57r+E^8DuV z#J^A(HE893S;vIo-K~dEsIQ@8RzsDBy6KWHLMoCTOTlEM9}hj=@V z`5ky~=}FqdCJ+&@_ZANSuYYY3do38o$FrXa}l*Y~& z{jfzWn)d!T4F}@tWm)45J$ARh@>P%WeuAoWT#Gh2tbUsrpg#Gn^iR-c)n}ANo*&l0 z9~E_mI>QF^!v=fxF%gs( z*Bq!M^>%wIU9y%q5tax_qR<~tbQXwGdkX!`Jz2Hml-kl>B{1+Au2vN@pl)~_AlpDR zmwFK}VS#GZB1EYCd<2(j;xK1pzLviXwVuB`VaFN(xwLAlOxFtc`1qw9s|zx9=1aN5 zQa~p+ht+$ANXZ)Bk{?IPr$f9-0#w+WBwpentrn$Fxco+{V)(5Pbb;ZvgORfvS6*i+ zT(X8@6)6n|x3p@iOveT1<`7kmr7Q0D7dF+zaL$IwQN*w3Q`A*9B>6lJ-E9XwXE)5M z1sg%d(D3s@Uz>H1)#hyc)RYbTKKqTM{7fBDYlog{5?pQvSGWv-oVT$SURwQ8j`c3) zC-`|HRps@VAPrkcq_cCHax9;qPHxV(4O_LS8kKeVqTX$>k~QM9USb_4c!6deN@ATF zSb?QgkI#{anKz-xL_E>ESTB8X8Wml)Sq|8oNx_c@=Mrc3}2xEj8wwLs_HCP;~m>igei znR)5rZEpg!x3S0WT7jxASyM3CmT7INr|a4tv9~scmknTBANQ4x$KPCqWaIe|lpc`H zb;f(W?vd{sQgn0{Jwk#5sb7Bj^*uG5kK03|!k^Sfk`@HQ20?wvkby@>KCJEjF7_7Hoxdz__qN5>OYn@nFoj$$Zo>>OU9Gp?*JijFv-rLP z5xI`FRA#GH2zhcI97Nr7)BZuv!TowcAG!d*bWqbgKuAOc@Q@;y)X-S%7YPM&9fXs? zh%}NN1h84I-v%+>^7q02gZL{pIv5Nz_VT>hg;dIIC5221SQ8tKkVcFMr>0B}geeY8 z8Q){TYg?OCA6vj!a9jFMhD#eE zP>`b)%pq~rr%Lw{KPm8&oIc6;lT{ zKSBgN95U5}t$xY9u=#NyJq?;#u7L8scmADs`31&VQ}COB$nsDq-$3YDBAK#a5|rAP z2cDeV9GiSg(6hklXvf1ovtS@C-PyUST2xNqav{i-s;t~Dt?+7Ewu+PC@iA4lfuTmD zs#!;uuIac4bP?|#OcMJpgn#^I_3Kf^Fuo9EhxPbKoND5u#^BzaV zE^k9fG1WxLZKtA_M0JZpwdxV%*Q55G*{!ccwxNW%O${+yZC##zl%j(0xQcp4QyyHG z&SOZo=bN+Zt8d%u3^e4N_kB#Q>-|vA%F*0;p&#~-)$42Yt*h?QeBL;J*kE8eQ}=&q z5%f=uHZ*V2{GwOqv})^eito0)yxR39sY%ybRYs@Tv9`?A1)A0KU|Y4Sb<5f9eDiPb zwA3@7jgxKQr#C(?uZzduENXlz$3IcQ@mXpoR*xcjEQ>y~R$DqDRDYAy-zmSE)>z#+ zJJ;>$d1P})&1icY(V%l@u&q=7xq{?llRB*<7~A5lTXWau<_xIJrd;A7u>q2t*`h6T zi>8{0UDgMmO^JN|oU8WqrE(I{CY+|+iMjliqP+K`0_(kk;~B{Otk&r_@jdTtqinil zv88yi{9e(}r>u9rB4t6bWKEGDC1)g5vC3_)dC|CRiKDD5W6_GajB&N%oiAsX@A0qW zS+3LBIWPV2kyVQ#j}B8*QSXO%$r{bswjI(YxBj|9$(lmdvOpI`~dPS%e? zb}Jn;&Qx-RC%c-I-20R)+dy;43I;NRn{{ZC-T4G6?6@lG(o^=CDzJ1x6$Qo4ImO@o zv^Hs~e3BnqEFURTz@*_kMFLYOMif6OA;}l!7D#TT8v+ZrQz9sV!wX%6N+PTsZ6r(gxN`PA#hZNfa0^m z?mOKWJVp56<*n!C$y_81S!}5&7(;BGIP@{Sl}We2nl9^|p3$WJ2srq0mTmid;^e)# z7DG0g)WouHvCBLLeu|)30SAl2h>6Qs1ec16%TPN%)o)QHqB+X?q*FRe=_Pf01s1r#rc(lf z#)uO63-tZ(PhKv9FWHQ4)^3AdG=iIoCWd)PWIHY{<;Qcd0-PL0gke+zM1o^uVNtkX zNR1(343D!ock?mW8oc0;<*~)7F-W(?gF@sw)b093AQ6bT>glwNcWO18MasQDu=Lg)J6@%d=m|1ognmw9_VpFu2E@Q@I?!T>Qqeh|kJ796g+C z3$nLKZv?-^zBHKU(JQqnF%tO*&Ctn;Cn%_h>L`egz@Q_c2gwhg6*Z*&B*@Zn-QBwwGJss*|Q}rxAc^YoLeuuB$!Q&X~)#*!Zii+NM&p}UPJ~kh_;z};% zs#13ta$2=t%q~>^d}ezM=eB*;nF%h}AY#uC16cmB>pM_E6T!Bu>Ne8C4x_mHP_rjp zi@LU90?qCM!?#tbb-QwIrKr|vJ-?A*uIB2Sy9ua&+-VuJ?_j+NFUf9+BSW~@b%JcT z?^=|yWFbeTjz29_18!_}(j!~HLyI2LjaqVBY^g5v*50_AtXpFwu&k%(5UegcoJ*u{ z7=BQJGRL(g$XO$fmOV2MAt1>8)`$K< z03`q#v>W~-o1;{o4bP-7j)b~;E6Tgi%l{5Im-}Et4D-N_-8!7>Sw0SGS_|lr&mORu zPKs9LB#b@@f175#b5qu(o!=^gdNy-}j$e8REZJdrK_N-~lC;GK4beY}bz91t6AVA+RP{sIFT1p8(R^@05f-b<-SgAJ52BIJbygMN2 zH(PYw&$|g5-Fp}BG3yAY?UJGeBvyd*1%wJb<> zUo2BPVL=}_Jw3xji?XHNp{mMqJH@^~J2MJe)DFEge1cqxBp~#-9|$N4{w8h>i_sk5 zrj+j(z0oL09(O^u$~3*+OZY*41*uL#p7d}ocCt$Gz=L6jR%np7Tlc_D<`7lEqMKCp znA5?UeC2VhbrofPIxE<^q$w}Z^>MVF6B-FH z@!{Nh_$7xYpi`3+Omgh`L+iml~ul1u^1_%|4!0Hr=yfP8KcBl^*#WkdSFB^Xcq?D+ffd5 zgxj#fK=lwde$6GMk)mT8TSVkuka0`UP>n5E+zL?@8BRk=^^9JNkj2FJ|J`LszZVb^ zbss@ij%BWf*vesPB9K&}KIY8;Gi032?D!RW!2n}PXo>b63ospwa7=?FCbNd08%LA< z9F_EO-UlwG$RTiALn#i0pof%U5*D_koQ57`MftD9Ar8#tynG^esWe|2E?wqPwrsF- z+#AtGDO1>}5fzAEhE|pnNJb@))5RGf0Uy@f0zSVWp%II4p z1W^eu7GUBAeFhs7q6db;LD6~!K$F+c^%LMiK`x0v;^Wh52O19u7uQ3;l83_M<_BPL z`Ub9lF%t|xC^ayK_+o^am^j^rj+kdF$0k0~f|U=k^mr$Y5+XU8986}lOL!_16ylRi zFak+VnA^?669@}$#A;ED7q{;?>O?r2nV8196T3~p6Cd$O0Rcv=xGq5}d>j_gZc|3A zrPf)cyb6mzg~bc4#IjEXYhGA-L9eh>&Si#|>`#8eQA}Y)4Yb1i(u#Jem84>NVF!O& zp_M3RRt6$wVTD&yL}3LHzpwCn}vgr6B@SZsv65vRU#YFvI z@149os26z__T{gpXcxdPp`yQenmnp=*7=v?_T?=V5m-ux!7c;5$H@$Q$7nxzj(vr0 zBnFOC_%$4bj+fBj@Wb{RuC{xrOBW7`|(*#CtPVLuU(%6?9CF77O{Q3p5~Ga^%C% z6zXZDap}tEy`|yEv9v*EDmB+mGk32w5;x*8Vl{e*RKlQ!Uo0L&f)6d+#UMPG`HDfv z$|`(}LC7P&E@C|A1p_ZT)HDTuWF1!n-#Y~le{Y^SnF5A`Qi>_Vq9PP1$#uK|BgWz2 z&Q=5fM_p{Je z*J2!nKtTQsfe2bRA})pdf$svIM!;bz=FcxhAdNL0;R<&pe*#sg_EMW5a-VmGM1F zcs)fbE$OM(Hlpe|we*(@ns!a2KS15&Q0`!!x{oZ4{!zO|w&h1A==AR~dfE0MweG?P z`?8kLIA!t$j;g%&b-u)vA0mtTQ%wllwkE!Lyr4@O*#%v5q(m;Yn)U5|iFA!avJ~Cj z^@2DR2}=?1BWP;*X+~dieU&=X6ir*-wMXA^;PGkW?Ce{pcDQd!&BFVws7`WUiuOTo zv3l#fOjS&yM_kLY|GWj+UmHx=L=q;sZNE%ftOXAodfB^&&Zx06md@kc)-gh#$&1Ew zl4QBsI@_8Sg92>f-)mKnp$Iy}an%W#AgzS24|lFs*CA za6cf|{1%uC2hYuW3p9%Rs<>F+9|g|-)KRLf`tdwI*%x>gas(n4!e0^jPW3}&2%qQW z;pYj8qxcg*(T~TEO5K0YlN^j^6ne1x0kOC%5v&U@<@sARhJIYF^y$4Y-8K(=39?( z!=cq>3mRqJ)lt3=HMZBwA%d|fI80!_?=*P4p7J z=d*FRO^(qGb2I|;B)^}yx)-TIH`|)B%Rc`Ej{srShFA1%*9;ZKNp;nY6TO|!^pDT; z7ORsh8M<{@jkVt6yM-do0>HW;j|&CuwY69sGPD&Nj4 zeJ&|hKqY^@qr`q~YGm7yWZPEt*dP^MV8CgcvXF_d{q_0kHZfT)?Ea0tE8!7^d?MBm z(~9J7Lf`9JOpC;~Zcbg-4|-t4zg} z6kbj24+rw(w-_=6Rbr>}@%MTvltxXoiZ(wV1(6NiAu@IUuBgzb>rk~`O?=p% z6}+g_0jHCr2Ch4L3pzfNw6+(zO^l6omz<%3Az0cI3{f$xulVYB7kwGR=09Mgtb)jU ztcq!D%gO9>+zf!Re;5%NIbBD=^LQJxL1Fj{PzXVUM(7a5b90LYp;u7|4A`9>v^Jg& ztT4PWP5sDp3!uHP-hHH;mmfYi z19kRA94S$>_(t2f7mx15Bc5Z1r*DG3>d#GPsCLHT`cLfEZr@ldaf)m7aGryPA;4rf zh9quYAd1;;Q@WDSs{#LIv(Iz;@374(I6Sii!KRGiYRhP*R)ee0g@w=c|I0=RU8dOn zSLV=tJ3{ckGATUs6cx$;iN!d7_R8O(@9)#*|Ce1~w(a=8_w+o^@E(KNMsW9YoKjdM zJ3eif&+Kt`m;Vi`59D+GH%cYO#6X5F6(lQLa==i6-$*<}h{{O#1)k)S&+Y#w14ifW zg`>c5fHKelaMuq+YHevOf#pQE&>^9>Vb_BIr=d9RW5}!iyN87+^?ADrkSb6Dl6^g+ zuc|Jr%XO}#Ygq!F|E{d1uEQcX{5z>7mr`j!2jg`|)kteTOKGR@N^R?VgQMR}Hk(3E z_Kw4pa!pknUlShxnR(u&UgEJ{y>w}`9pGu$F-EIiTMwi4t(VmlhR=R2nq8cO9NKmfUAVbE$1UOz1!S0wvG54scfv(jTK1`JNmJ>e{ zkjBq*>X!OJK6mSn{6hF4I*VOa*ID;RqOb#oU85q`A!1{C`TFg*(y~uJ+knx zv*p7@o4=tOJ!;D<3>@SlbqS3<#JDBWXBm)lq!q{hltNw`AaIbPA|m~Q+=JGMo(0PS zAs+0d-=A3oW48W1en(y1%t^n^^$+UVWRnh6GZTXtQYMEEOBfQj0Q?`OzA?PEWob9I zZQHhO+qUf$+qSu4+fG)j72CFxn|+?M&v!@noZVwQHL8EiuD7eIXIJ@aSPD5HWJFuY z`2!@05P=n>huee$U|5L^AfeWOGfB81EfXxQ{A@u3wtB5hf18>4^+q*53P?Tp&Er&{gmOX)y+oQX z8#S)jgg#tYu%PN+{VK9w(1UKik)%Qg-ajWktsC(nhA|~RWp1jAiv9(Ah*}t(t zLJ@DFg@m&Lb=-^h9{6e%h;>`Q-}nOo5lq3aS(Ui;UNaCXj05yjh5+d!jq9aWx`9Xo z{WuyDy7@1&AgF_SYbAUsIr5XRAk^7>Fg^CgEXvZ4{RjHHe=4cs^iU#pl5d^bjB^!t z4{e*IXq$~i-Dzzikd@ekv!q`SI&(l*DB}H?FvKV&R}}jb<3QFk(Z3|Fzk*a%4=~7H zOiUV^LLkizGdl)f|5G9lHyeOBVBKX4H{Ctxkv5xTg<|{R;RB6*A1ff5K=uE` zK1RTtRA`dg&VXR`@^4CY24iYSs{&;*dS<3^o)Mmj6PF z1~PADgOVW`M*|KHeLgsUZ?wL?YesOWqSnw4jVLQMgNn|5psrB(J(GpNbPPKF0&tHJh+{}R#=pg-WZ0-)ckAMSliF63D zA33y$OPHY}r0bMA;&Y^dwmH$$J-(T!za4;VU;x*=9fbt}Bu7eNi#s2_Pw76tzd?51 zTUwY%#ZBC^wu2R<#zlg#XFFRBYRPAZjKDYZSvQtZjdXBi50p8MTnz=k_Y3izAV7#f zxItzz%-1BECvqPBvNy9jz1gjwROm0S{<+L<2t#rv$U8RIH*E*Xg|F675h*$bs;bSyL(B)sXV3-Srch3XX+U;}4cx8LnJ^EWgRkhJb-!~gIsgYGZx?aKg zX1H48@pDnR3LS)RIJFmjo62E)Mca0qWVEq0qhwk%j^)&y|;EQqXl z1h8IjVIjW1qoZLz7dZI)souek0S=NzIqN$h8yg!@ox&tUdpH0fkn>I9G4Rnfd~rcR zK|fdHHuK+^=sZl!=((lY--h&g*;pf3u*`;7)L_mZr^5!(x^*d# zefMBOW$b+RrQ#q*R5)WLR|<}OfYJJ@91c+I)!~GB7t}CPy(Ez_!C4_}a6HKT>=Z1L%&0h4^}5FS?5npbb4Z z%h4H)^)}upJ#+F24)^e}z#F1hbqA%`DN%kZUqQBt2rgJ@+(D);?<4TS@U(cMD32Ea z1XEzzgN35va7auv_qTIyT zo3?*&l2e%;JEv&PA#+nch&3p3<`aG;`kT9p($B`~h8S&-BtI=5&b<(3>dHBjZC?B3 z%TeR*MLg>278es0J7z2t?hMmTxKVy5r8x~TAayK^>8Lz`r`o$noR<)N4sY~oh$)E8 zYrp<52EMYOXZ%btQvRC?G7}mGE;b7MTcE1H{?>m#Fc9o}0b%v#uSb3YqSi{YXXmQW zLgkmEjytQyRy3sQd?p7Fc=WOlK&J-Y&EwbQ5 zWF@BoV1{I@1=t1k&p-nPd~6!?ktnPl9D=7l1GHJ0Q9_JAKv-8*5MYh|Voy~5{WSTn zlEHYJ+zr}M27M9T+zdUA_EM((ZfO^LnW#T0mhyf33w>U z(LZD0U}TdR*Vh3gg7Po8dhM&HfN|A3*NRQ)WrXrUeR8+X1#P4#t!XzyG|laQlwiLK zD?P~Ej^BsVJ*My}*V!JdAA~8bcxc68P1kbQXC)G=^Vb`**E2^LL>X9Hgc~HeW)f_m z^+T}ndEWBoT>OyyX?OtJ1&@%2(1+4bI?E?uH8xhqR{?D0X|l#unPZ*u>V zaEhNdv!ZOim8FrTXEKZva%mAO!|e7^v|pl2U3T`G^L~hLnyFMPldF~9Y0I0G?aOsN zdyHBEdU(w4-YNcE%$fiG zb~8v&GYhVbGIf;n%aN-jPx4abn}UY5pir&nG=hg8%8?pzT07x$ETtS(6CqYvJD_X2 zk_G4G_JFN!$<08=!Ap}bcC^2OtqDoZ&iof?U8Bwnp24BgI{iQ;7pq&yjh{DmIl=+o zZ*pOaxM}t7(2d#PCbK5+-Sha+cIGT-JU}=sL!M}4GKCG z6vSlU%`wMXuDUFzm1GCGc+fnZWRTqy$1f~@8Gc>3!W2hql14b3@Is16xGGR;WOcBb z<3Xnw1``}-c_-6@i7FXp(eAGh(*AuS6H^_7D$vR8OqHM?n-wQW8D=LrWNA0~dEHKo z&+{rd#PQBG6$lF(g+=JMK0+DIpXUvUQszRO6Y@|fJi0s{{ZAcn#gpy+!D&FP-{E0l zlS3dNBCekPszKr4QNs{G&~ZQ$BVxva=ReNHFg0>dL4f2D%-mDNvufJgpxKU^-mF=! zYc0<4uk+Gj4*~^vGT2l+3~PxAyrVD6SyqoTb3RT;RfO;WfvUH|F9x%Ly3QQ-@T1FCE8(6|#qObiqhjFX zL4d$Oz;g+)h)7XX%Pt?y1Yfg`MyvD{sy7#V&4}gud%}VaK7_c|1LKzJ^!+%pS$6;@+D72y z`K#nH{(YzT;36EFy~%+)cYUTqOVU7-wN|^e+cki#CwswZ3Tfmug(GY9&Omcs9>%hyJPF5q`1VtIOJWpi zcI=vqmpoP(SYgj7= zurz<)diq?|xiQGeC9&FUcri@QE~59?PM$iKawu$X9RcjK@fu-&1i=Bnt}Oe9P`<WhgiOj(f&E@Ud zH=V@uE)S;>kkX;hV9Y?o6iRIQqw^!rDGfnXy_Dd^6hdm62q$a_y~$t%$zLCboWvaE zz|U1kM>$a?Xt1b=Nzia&fqs-P6op+tL-w*5 zn=uy7gq zsmOfEA*UZMn>2v_B%fjaeiA-@pIFobPX!xrigL^cgpXymrq#e4UwqTGrhSoVXUGjE zZJ4X?pDUQV1tc7->+4Y(UYV!@wx;#xu4vX8)^ceNbXbqvkhgq{ntqNsA_g%Dh>C@W znBwP6Kg%&&NExqkm+GwAz(KWo1q8@HZ*7KY&U zMrks#>8+1PcH3o}v$F*ouBp<6NpQ>oUGpZjs}8o{D$IsZz4iW(8&mH6=f#odTe;z_ z3JNgv4oGF2yL1L`x3CSn4up$T3)>5Q*NOp4Q$ z=mS9wK9Z5**?d6qHytJ&CgkR9+av$_6d&3 zju-3+3{T7=02&gA>?1a>5~No1SYcB`;%9^6IS|>fVPLICk?}mxI-KfsfHDM9{nVty z$@oH8;&LG3awI|2@f7;#{E1=1@$nxqKvH880=POu1Ue|vh}JLjuQK#YCcEVBr`Sk}UD+ zUdR<0xapviAi3DR;cqp_N7bz(sIXXQ#}rfr0kTDPvSUTG=~YZ3j1!Pw4*%IOl0z(E zy_?Qf{YeTk3BHEmTOuQxcUlPHclM zG`(CodEMdnLAD80Lij9+Bo{D}001Kf0+xmB;D zbdJl_xer8Wyke2bxc~u|E{L32f#Z+7qQc|+SxyQExF5~IX-bgMSpmcO#^e5xrSgxx zukVHnc%y0@hEO&gZ+nCc|8)J7<8#fB;j+AG&nS4~BA35^g7zdCpHei=5pbA)ZSKQobFXC|}oW{W7 zhvAEPNACtVV$vBreTvkuReZWVK9zdUkr-XsPxc5&vbO!wg-?r*Gtey9GUgG!e%$tt zi$?+Bk{T8xTnbAPpcnrl6Zg~-X9_Wa^};wgt%!>dUnmDZ%NJG`Ed%y+rBM(AWCMJ~ ztvQbbkIFJYpmn$UlarpQ&RXc4lprok0(HuXwBEH}C&j1hIuVb4=D+#H{-QYthA_9> zJ}q4pT~O*=zAN*IzfNLqDo_5ThUoT)H^|0~WVxLmy*4x*LgE5uqi7o|8*$%4GR+~t zv3+OP4{)Md>vdkvA1l((K&VA%+Ch_&mN&RhXo{^1Zv7)qJ|h|o#ac;|ebDZULB9+LneiYTV~CcDm4siD_gZUddq!aXBxI?jRRkb z+;bgO0gDtdjRx@2B(?PqnRfj|8?q8v2iXmss%-AH1P!gCbQvxgE;~{%cxKmB%9mco z|cNI%gIE@xiyOI!~ zzP_fEtYVQtvQdQ`HvD~eMihG_j}^?`*bao%+|@)aGQB&6HU3aREkfqNj!Rz+B3sq? z>Du27rrDa^kENX#6|lcFO25J?{+fRSg5` zR0j>+^vG{E{WI$FlEwu2zWNm8V6RYM*7XvTO+UIqn?}_qzR_?oy z^)KM8ioO8jI)1)&3)fEJZn{m|qWQiancf8+z(_1wgXsWCUmy+iQSv$&R9XlHbtgjz zqT}Z1VIt`31}z(gNHJ;X*a022m5#=?NL7!41yc%~5p4gOm7xMw#bZpzS0_P7Xdx`9 zENIeeWJxwLJ)S96c4@%qjK#^}SIWrXH?C|bM;L-)Jg1*>d3O_LbbLJHB2uG#VK!}r zG;0+4&dbar3I8-NxzS?X@qHbM1YbU?d{lP^mk3zVC5DT?PJs`Hx8NKkVKV)%+=^< zsaRCnjHW09=)7BqDWQuVYgs2{%tPkjQdOoPcv&6jYjDU9Q>>WpFI}{O;WZ**+Xf~h zv?_!(*h{u-1#`sc%|^eZnqqY<-$kThpXG9YYCV*E6e`@&i0NfSrmzQf7i5DTbz@XYPc9gZVo6Lr*5_-3>LMz;C_Ph zYM0NrBJO!bf#n6oA>27)uN$>#8E4o7k|?|)5=W;$O9dm8gQKZ^l^0Xl898-m)ym}- zn2{17;*h!=8hY&pK%z-a0so8YY8Fl66t4u4ap_$6nWRh)fORWd@V4<38A)rfM+-Rx zU}S(FnWdam{S^#QGV^|Ct%LLL&86Z@^*`9FyZO**712#!!VzqH*k@M-i4;rN8BW8}kcJ$%w_J3Oj4`&|IRftvp`-j^9FsWr zd~&y-p*JqGspNJ^2|d8KBfnI*Nk=igbiyxa z&rG=_ps_A<^R!1p=z?Hvw=NW1SC5F~XVLb`d4d;(6GY$T0CIa)?}Ks8&4V&=kFF43 z@k*{^ndDC40fM5@UJ#UYc9P1URX*7bpf@`fTR;E5y*WjtDld z>!f??D$k4h)3|~I4^3w+L=B86u|mead=wRCVgueBv`^dn3wNmM=oO=u4pWUrOZ<#G z#V3!qBHQLU(I@x|#?6u-Yl((*xLqde!on)Md|Zohm>MQG>u0}3C4xdt7=#;a^yd!R z%Vou#EOh}r7<7QmB66l9%Mj^=#6!RnDDx?s*HFO1 z>OhrfoM!>(6TAkD-Q0q%Lcl)&%&&`==}tZx-m=fbloTSN3_i~ft)bJ0z0{s*M%VdD zVd9)zln$3O;W+-3%C3=$avJQ)Wrf62Zb)Md4t6et?o@}2_Uq1id;LL#RyC`oE7T)1 z(5Pz7H_lN0#zEJkA>?t``g|ldBaX>MoFm@`A=2T?hVzhWNCi`=RiIyRVJ6tAZ`I_q z$+q!J2UjD2@EV)o!b<6qR=_#ZU$U2;e z+1+p{2tvRQL)`qy3@;~rusU+&%r_Fb!rqoU)0-F*qb8i}+EjGc@31{$CJc2>G8v+*PG(!kCNr*lZ(DN{DSq{06qVy=g)ahLa=_-1#>Yf{)pj zvtqk%MQ^^rSn@Q37>zksA*59l?s9XAPK9gci@pA+NC>S`}il6&%oM% zI4C-J*MT1cSkqjiopgul3$-BpN*kU}U zRANh-Q1+!v(q}l?l9g#GK~T!X!`BE||E(^;^I)}Y^|?o~2EXjU%m}f=@w+EYwS21r z!prMcC+fVZE*P#gt5$5uyU7BVj)Vcc;4V{ieHR{p{p=R2X zq2cWh!PtlVJ(z@^u2g)SeUCsVJlF*clJX4RN|Ly90_FI<6_q)B9J-&%5L`nIGsvKs{kpfGAR_Y5r zOO4RlueXoLtHfN9Nl-rZU`SZG8>wI`?7w}cL|J30G69tmJ#3lxCKQ=#qnv5tSD(w& z+|=v1TlP6b)X(W^FK1iE;HtF)XHdf2eSzWx^_pn`OPB*lQ!89RxnpAyAw-uje_+mF z?yNToI88xELYV`?fJOjYXvte>jgf1^F$jeS&nGw_hUU5S1RQ5+91I+NMsDSuM9%zN zL~8=pnb7=j@250}bhSr1DC+3I5I}M8&kOskW^q7__V}=&gdG@paCEdsqfKPwyFHsOW6BnIc3(95>XEoy}93ZIYf&&F8AB?uUGQ_=no){Ue%WtT5N~n#b{=>xUSM2hH-mMO$d#DBtQXp3gE?cwes+i)%}%7KY8hKQ-fa%s-aS#b>)*(Sn0l=dam5T zvsEnT_ZHVSQa;2!lkBODaa^z`x~g@!Syd3SScbt$B#DrN_-uloplR;PU)YL_uWA6o zR+FiADv)53K5$OocImG=Hjk9QZVt`$9%Al%AAl>ZyHVl9Wv+NXN}s`Pfz$TaY};u@ zN#JVdkM)Iz@hh^MSV(TQgAWzU%4EQ;t)$T;k`|2aA<$`)S24g_+pOk3+J%Gh>2Ia& zp4XxrXNQiO3a%SupE279K+TGPq6GX3ac3U+ZWc}?gPFuz9TXbJTO;jU=dP}x?=L#F zt+x(x-tY*2G^{_dC(_%}|AVSW3<$BQD zFBqu%Lr7FwLL$y<*(98yZ@p?#XgWb^MMuIw!h?i@2Pq#WBvceouxsMMhLMF}ejFvP zTmHE=W-^KQ7uZ{+sVcBc98^9oA(h#rgGk!6Cv$?v5%?qk00At)+F*~5;HrVHZU7l=~>AVCHie3+&|z8my{2xjep>ROBE2o#cKF*_*wS)#oYgrJo9j;*w2BVh$fagqCe8Ue&o{+ZM)2=cdIu8>Pp>gQhCsF z+q$+k-asGKpni1dViUuu1)D12s7eY|Rnd;%l}j|>ZIDBy663ZDaL(%kt zMJP-X%70D5AndRgb>(}<=*o%z(|W%OEd>!H<3z$)EIuBE@cH@6@UZ!T$c0%6M22x2K@{ECO9Aie`ju`7OlpN9+2QW+u{x%QTJnW|`>xJ;ov6w$jFG+A5vyA|u#MKwJCS@E*|{TE(Ks-{r-@>Uin z{JYUbl;JHxKw4{)$6p_$4IU5A<1)@JM3!pQKyI77>+Z3*4g@j@&A@UR`jKMwNirm9 z5tQcAjGqJe0ZavBe_dFRHa@u{h-nxD&G+Y4Ay(tkY?LZcLr{5mx3-{i@qXG3dT^M` zMmlgf9F}yBpKlFBn0$yyM;|U65VIYOHp|{3;zB@_{@VZmRDi%4is`6E9M^(>2rK2;W(U!!D{?Ge}n3 zuLDa%J@jXhfTe*6I>HigWOl@#EWr{$bAY2M`&lw15bM|Wk>6#v;?cdFX^Q?sO5{1vA4bAA)cL~L%4-6!|2D&2odSJ72BcA2jay+>o% z{!$#)>5Z#}aQqSO{nBmaMGsJQiWgqY^7@LHcg3?RNYAp;LdJFT_V7=5^LVB?vZQen zri`C((Gem<2@)hf^*_Dvf6hey)PGLq{Z!0SL#+R=t{pnH>(Hf59vana(4a*P8`Y~& zrAU=1Rj5#*K!peuC{UnG{BV`|hxtET|HING70Q$-!U7YmU4tq)f~3$i-K}1Q0$EaI zvhKpDLV+wXJk>D$=keczfA12bN`x{bh_pgQ>Hhm}sV)ubgb30c6HVuTnPB|y(S_50 z*)dEGD;3C)Akq#}p-YD_C5SY^6zTl;J)8d#jsHtT^e@rEzoVr7I||ICPyxb{8Xp@2 z6_3d8d}@HvCqd1K>dT`*Svif;^O2S5U%b_Sw7>BzIXm*)eb;#3gotTHGo={B;HS3V zm4aK`xp8rKVK-ff9yBvbKsb|;gi_^#g~kis2IEf|PnwW|^n&>!3@vk2y!gL~{t!wM z759oz4s5Q*-+K|GVA*;a@=~pWL|xqIL4Y<^At_%_BpBEEy&Rrj z;X6m2G_HE5(butKcjk>MqSkYR>&!SRGA@RL_D; zBr3}4a$5iGY51fL*Ph#=Tzs?iuh#ml)~{;#tWey%=d@?`=N$Mqe80upV!6ntN1oY) zW5VyT`~1O)RdnL2Y;gK(=<36#EhBIHfPRI6pi?D{g_63`sLQa|M)y5KeJCYz!nVP{ z8W+=DxJD-#kjAz61`xt%F6u@IRY9$MDhVI^7y(8@A>j;*|L6ipNL)y`F%lUTKOKx> z4ALkRbgXHyL3XJ#6A6hM3kEJ^X!N$44WJd(5X03Y{Y2vJf-&L`Er{unJ(t@DG}xI{^Gzg@amn4z_L;Gcw*%t_fZdj4*J-8qtHr2 zC&Hf(432{dm1CE{+z{^z!pT2V&se)4y3a#>-q=HSn>*h%M!STCkX)h6|42rv`6@#MgQ#!PRI@5tn5 zAh6=agoFb9FeQQ*;cSKN4cu}PqvgiLiH?*lBSy?*W+4Yl)eN+q9P1P=xRsExVBx@u zL^0Qeujvl}w$=kf1{V@YeqjjSvwp2Tx2NTn75@kK-Z7c^82y>dIb-2Li1z3hntDxX zen>O3L2yRH7B|-boMy941At@YfhmRq+TcfT=g^DXj*XJd&v6n>z+_1h;PH0Bfq_f8 zGp{5@kxRM1iiFN`k#Q(}o}#T}IutG9<|wy?yrGH-_GlyI*f{6<=v z%s9{dibP)aUhCO* z#((jm>VJ4K@h@JG{Y#YeFA>fEh%Wzyu8jX8m+rrqV)ifUX&nAbll(8d$^J`3_CKN@ z3* zK_`TQgdmh`UP5u;osIu!Mcq)(j~1oQG4r z9=o>#J6y4Ex__*yD%Y$%@e>zy)%LV*Zo82fW6+61F`3jzjaA&Hl;`ij5V#G9cu(gz zpJ1q~nVK)iY8ODkE|_UCtpY<%+cgo3pdlfe9fFB2pL1yd!9?ntwGz{I64R3U+mi0} z!Nq3KCIHL9R{@5Tw#O0Mh{fVBL;zI=pW1*W5O;~h2sR}cOp@XFsd!<*mUGkMg3=4L zln)6~azZ<-7!|A-m0pO(SRkSpWrO*sEJfvuISQeMc|Yv95^rJ|gG)MWNlGbc= zWt`pEBVi2b=3Z!}aouEya;nkkTUO${hf!UvbWE>^J@T2?ts)-hg(aS_!DQaviiU;- znS(Ga7CI~y-n6b&tEPc&hab?dT337Bafe_-p>HhOv#dtpo@D zzTJNN3;x#?8V8ti;+A`d{hKQVWAQtI-K%>3LXW)4OI(ZolhXFnbk5<3(?k|NU{8QP zYn+sN9J5Z`#;4s1>TfSG_0oyfSFKDt&|mRhKEmUtS-oTPG0~3KEzhV(=rRn`pdh-2RW(Kms*QRH_GG%2YWs*Q(-ZuX8Gj~P zC0&bUSZ1V9C=~U3%C;9oq+MgB8Ybq&WwEH-JeW5`Ss*H(XSU9*x z5r^JD$V)|%kKyIWX%!unFj^rd_0$(>gegknKA)2h&loOpEqblR*;kZqcVmh#Op#}{ zf?QTJSc+U?7{i&OSL0m%-A(7uxL$s37UQKvGSJ7So}HOc>|#sgvTDZj-EFRYZccp* zYb?6M*`n(2>dBy5T!<^|Msv}$;*zX8Qn==6ke@Gz0&L>-;ZStjGdolrvkUHN?7eg+ z8<@2?jzY|AZX)N{O*WC`K_g3v6cI`=NS*}AlA%Mp475z6alY>OplU6BDwBTKwA0Y` zKdnpR(yVZW0sgfEANEyj?F94iiVjq<*f9u-Zebl@ubN8Z0R9Kp;f2JK>l3bf6x`uW=Wc%#Ph8YJj23!K=v&}iYdx)HG8rulVcIkyS6R;?c8p zxDwbbrIVsH*#nx2e5E_zqo#g;KWO^%KS(^HwV+a79ilwIlL=ovn6%kb1pz=@fe4%h zsI4VSee2o{dHyxGdk#en3e|TbpC4;_X${;~*8PZGw=00Xin42c3lcmQ=`}RS%8I*W z{F9N;QLvz(Z`Omtg3Q2%hQxz}0}Tl)2I8rsJB5hSk!?;dYE|oKPF%cz=dIhcT4A@T zL^4jQ?E0Vv_r7^?+q|ymEN%~xFJN)v#>F~^#Hylv*{=8yd^t~hJt-SMwdtx27B=Vd zrYhWI4ONMj>3nvR@bl43TC||0 z>7BDIn%^`vJI~!{or#5x2zj0CS>J;NBg?jN@u7f>ZluN3rscAs4ICbir;ZN6Tz4gG z{beKy5T!%p0=Q%7B58mKHXlp^m_jZ54te0)InU2p{+K!Z-J#WJ6zWQ`D{ni}+8AX{ zi!k@<7dh_j=F64Fw}^T7qdbcE!n((`U(C1Y?Y_G;j3YX;)%9Dd-Sr6alKZGEZA|)E z)K5Ny=qJ`{0eL>ENR7;^X!p^KUXfO~!;^=FiL73s;&)OEJI?*5o{^b(pZ%}uichPQ zjv}Yacdb^IZ74hqgNrD@&?l09xNF`_HM7l>9=4Nmk_}cOhicOlYbg@7n#vR9$lPM? z4t$kWarH?Xz|BTHU{R3JZsWtgh~1=g4!AY!B7%I4xJ5 z_&-=yP-#wyGQeaHD+cxxNO&I^HP^lV*i+qIzh`qM(LQc;P*`x^aVB^~Xkjiz94ge3 zTmKR+Q-FEbn6zgz)X+N-r1cF8*Z%UUXBqs*Sb94W7f40GQ(z5yZgkhyY<)(vuTLG{Hh1^u%QOgx!#Bc(+J5e7ej4?~}n7Af}fE0u(aWot1Wd_ zlUh_RDnp8Uy?HC`sLk*li#FOO%wzts_e&}HuuL9He9qi)W93Ziu+(tWLU|#{<-u=S zN|xittrDYl{N2){A8^)o*!85>7Oute_a`Q<-=%u~TYs46g4gZ&&5x;)>$8|d_xGUK zJ&ktC$ykdTthHu`w%X3}*y-1(%B$ILALp)as?&#rWj<1gfP&SRWL%h->RSy91&P07 zrx^CZ7Lv;e2f=sORIK8KeA43T#3H;_B_Ou+V7~`hCP^wqXp$pA9!X|vmt5qfC5!1c z-kQ&2nh#gr$oxSOM%ZD^IB-X64#xzy1upVR8n+Oi+NaQ!6Q5qmBQoUYksc~2U)mpD zwUlS=hl}2Ef_A%jDhoRi=m-}S+k@rE1Ldg|U(|ZqPh+{Xw-aDL`|&j+e49wgy~2Tn z2aJFqAt~4hA(Q9vwceJrhV#b3;#E66@f&qkt1&zB2 zH!eSZMHWO8ofD46k1Nn>$?2C&vyZ2FrJDRsj;lQmFa*pfK#>uloG>ZD3kDX{IMD)5`9-_z^3687C~8&(fdJUs^Kku9 zT4Pp!A`wXX31qUp8d_u9_xw`-{-FRNh;Ss-!Vd+7{)HgItM9$j;N}(IWujZxa3n=+ zF_kTj3EE@zd@egKezO>_#2)9ZoNIH-p(MW-JJ>z?z&v&NtsX|Zcg;xS+|sOlh@!JH zVa1Kbc??&IOvkOxOJ3iP#6^q`YhtO)JyzS~l3VH+_e>j%#^^a0=Gf)HyRD5=^3B8& z#E|PAH~obX^mS-1D)-qGP>?n`lqxPmw5RktQUgf7x_Q1E8sGek*|BhhwKY33QcD}B zHOy@IqjS}WqKdnz%YE*G-5$=6_w2G?9$Z*_CFMXt`&eqjl>NVN0CE(XacYYTp?Tsz@BC6J!0a?AJ9Rep?5SEbnwd8oZkR~?7+otNgC>W5Q!1iB5N z#%h+O*{t##uob^nW{>E#6fJ0Jgdv`Xqd9+qU1ZenRbp4CnatW#aqR8tPI-Gsy@k7o z$eW|uohPxe**}!ME`r}Qhruh2*fX6y8M$IN9z1-~=f~i`muG>QN2E)egq6Aa_ubPzDYqnGMzQJ9d?XrV(y z3bwc!)+Od!EoC|1j~A5SnY-W3rql!RJ#RKquwg2avb`KBCerPE6H-fI=ipZ*wDfdl z+?iVn{BZT!O7#%;rdwgBK|+2ESfhpd9h>iR^Unzf9z?DZsC|MM7+BaTa`SY^Fik_Q zu!vPSj8sD&aCosyD$Uwdx%++D?a}h;+L}UpH9Lxghu6IBWm+vafLMNs#;42X(wP4-CMeKG6J+QRql_Al*TLUO^WEwa= zDGr%Qm``&KFUw^>mP>JbE(j=~fC3Kd$}oT=;7r`dx-3Tl1r%5u z_;tK4;8F}S))l!FgVY6Kkg*bwI!O@6)1=XcVZ8hFHeOBhl@Z5oTCL};bh_!S>jt{& zU})^eD2L5d`4-XKb9hG?C4yBVkqTuZ!6KFjmR&T{wLX8+Taq60^?cnewG_mDExuc8 z>>H@-q!qr+DZg4}$a8zG#58Z6j4zaMF|5R$XMh7C*1k>qzCApC0S9#8@pzOf-{!QT zUpwWkAWi4xkK2KVRXrOi1 z0P`5NAxaJ^FIB#6FfnTiI^J-Ilic&Z0@V}lB3dmjGCU66Zla##pJ@|`B|@2K z9EqlJe4DSe#F2T_`^5VvJ6 z>jF_oojx3AeU?VB$XpGe%Yox_xr195M1+;PA|O(nmAX<~$}Nszau2Ryaw6`k)TZRV z)WRbiC*FJXB0b;Mn|Jl@j#yu;Jqn&GcoNZCrPWx1G~8dW7Tu_$u6&QS#2p=TQjp-3 zDvYjt1Ea#bzp%lXaA>f@i(#I3!b+8Ik5L=T(9b&&vKJ#1ve+yd*luDV3!5yCaw?-|__lFFw}8{7?kMl&{g@3>}FHd^ajEHX5Fedo~beCCXp2o5v`R zN5}@ca?k+deIB{4Bm|`LZQDxKr7Np~&tUg?IvEzB2`o4ojnIBn=USQ`fF5`<=ii>a z-K1fMu5#Cpgd=b1XW#3((6dx#(Wu*&iXL3t)c^upO-~aP{-x9Vm$FQPX_`bL>8N%WR`}hPx~cL_`{we)Q71!A z=(A6f6op|W9qoLHR4Q1cV$m`RWkQj>4l!N6u9+4{`FazDr~EX1GX`2J!3PF^R(6_t z5&qC#vhV($)Yo3$IG&EDV$<=>V-aD3r{fcrqh!`q0V>Q_>P0{+JR*3Sr(AR+T7gR3zUHE!QpX%1q?6|5FDvb1{Ar54@mP@L?**Q zSQlx3`gIsjr}*{LwSITP61?_==gv}3`!Q-=(r<6vGHNYHB^mGNZJ6y>VORNvg9-rG zvs6paJMeao0_f7`DvFza9re7wU4@2YfY0I*DfHl1X*cz5X(cY|NtTLal2Ig;iKa!e z$YpZDBHBfgO(YbJV#xsDRfap$l9uHS5y{up-tDubzNP8yPpWr#zbXIAa?4Fq8`|r7 zgz?kdfIfOt2o4wre}i;y`_odn<&?fH-N3)~>Gh`buY)8$rl%#pTY?^shd&;V&%%PP zTmlN{fa_{u!gUp=d<`({_!f~P{g5SuD|J~J%PsYk%#!3&iuARvPhy3HoPQB zl3UuVEBN{(El2xS99l}sKl(h4%AdmuZXL<}Kk6bdoNYtptFdh&?ng)0gNgfCzuf=!kXhZv!VytQ1^t0DHokAS#+uz;qpOV)6VMolNh}6+NBc0U#l-tWc!JAQ{ zIKPVGwciFt1qBI?YZ0v#e9OnDKgo*s9^EbJsO#j3?$`UjcnZP%yOYt`Xiyx0B0@$- zdn8c!2GYtmpAv$*S8!b-W_k96Iux6mpGpW>NjFA)noCBJSS}iN(I#3Yvh9C4yylZ` z=|x}Z4zEk!es}I?L+^gRk+Q`1^R4?f&%2vS6Bc3cvEUed@P7I~dsbp?L%+MTbi2^d zcq%p>-!3#PB)-ea(Y5t&%fD+u@6C^ZC;fN)H;L2WZe?1`;u%} zL49lgv$AG-qV+p0M_omIC!!*HcPPOuAq*VD^|&Am9D|ItWh@2`BH}WaN3E+tbCz{w zLLmyQDo9vH$PjT?ssXg2FoWhG7#wGGY5gnRG#zbC-F1h3 z-dljRf*Ig|6zS0Yx{!bF4hs+bO)2^djnbG0ecT-`%)U31vIM_GYnAtdbRT5H@<$LW zI}PbR2uj-!|5t|avarl3IXx`%-Z&B(9tj>36(sqey?N{0IsKgVsjhsp^L6E$gESW! z37(I=914dZzypDZXoX}QLZry26n%1nMF|!sS*XJ?7{|V4rEdq;^j+2q3y;S`V_{(e z^c9JA;v%M`YAHM2SvEqN9OvZExlGZe5{7 z*DKX4!n#Z;ZAzI;DUr##7#bcL!^5(ibzKdh7_uNBEN{@D!S}cV&$b)Lwwp+1iC8Kc z!emNuS$5lK=)W*a-^)4eZkAkE45`(%x*i+@h|FeP4BLL4+W)0esa-?)I?j4Ud+)2GvOY`ohD%#fGA(jJ zjZ&dZCfcQPp;RQ4N+n{^vpe0OJr zue~ysS6Kkpm6sYSze)|2>yppP(x2S3@(ImCM5aLlOattZHNaHxl!3UIsPMbp^+Y0o@UR|S<_c{YD+8(!<%dIb_pDr378@9jRWuE&WS0tdnPAx@l3gqsWs*@QmC0mM zsc88|n3baTp70%t@Xb?l9D~0KExU^O7XO<@5G+9yz9PA)ys$K+8wqey_oGq6t`hF~ zx+djovJOFYRK8InSl1+iH7kthR^XckBZK1O>0CI5Rj}xlZ=(FAyK(6Ib*4=umI!6? zl!+Gccsw9TB}}`|v&s`1jN1EmcPovh(|`GTnX7@bE{5xB0GYVSeNqhEma!h(ma$5f zi1S-tq$^sl{p8ki;=!yQT-LO7!lt7wB@+oIiC89?CCfCdqFE{vEsJQA$ppJ#778Vc zP$HTHlT0X+Y@$&l8WzzsEXy*Tf5;_t(9eX?K+l}BeKgLAKtsnZgr0}~f=!K3+?+}-&>N|+#a>*bT7Zf6Xn;@A=ZQM|w^|dIG zo80xjBKHZe4)KvgTqHg2y26;QbzNb!G<7OnVWy=d3HG3&=`lQC58K?*?lDb*q>BK7 zJe6;gy1h1fzE1krHoP*I2V)aTc_?T?mWQ*^nCOH!5;&O$hp{#YYs1ksKW9JwY_LqjpUcd%WP$Yer^u$;DiI9RFl~}mBohmkX_Aa;Csm2BbWBMak5Law>Se5TxWBu#>^=^bf{^ah6#RH6 z!%-sN5YUN0p<>fP?TxXKqm9Bs!bHWU1431IR~dF(&(|jp?SYl%tT4KY{>j==$@jQN zW1>`XegOpwFy~rk&m04Rp|fv#;~V0KjgmxfitZ4$0^cm(_FKQ-c3l_8$GR-e0%aIj z4Wms>Df=UnzI4)Bsb@ot296SW=^MC*xB(bq`1as+y&gzeDpkH!E)t1F5|LCeOoBzdKa$HJtT&l!zsS(GeHpitbcY!pwnK+J51VqNN*tQ6FWf&e; zD3r1;4dOr)PX76D*5xAZN=^Hz*Y#5#wJryih|63WOlb^oAf>~UwkZ&4jzIm1fN)(| z>RXm~y4IDWo}^*9%=wG_dQfW(?T6QcZ25pLqMAPkq~QV$En@X1_OdslSp z*Wt;^rQ3U1sGrbTly2Z5evI1oEqv>!Dp32~?z4Bj>o2NUDw4|t(;`|#BAHYukxHbZ zY5887@y(t2Zlx&nOtgKO-d0?7`W)orK!O&1_+%usu0E7%wm2`8<3DCYlhV`U9suSjwOTSx7fMxRT2$Ra>V#zWIMMAMyut}sMsYoW0YpG*8?2iin z(e7lBx@&P+-sf057IpsJiD}O8$EmpUBtd(9N|)|k&$|;9A;&Q2x(~8_oixN9WWhJN z@B5}90jFZq(Qr1L`SvGJe5r5uYgP`kvS{smdvD<&O=lzH;#0C0^HyTt^nQv3x#euw z^ver2Ir;Wc(LxF9EX>Lyd{(}7cq;EOtQ2+J9nGXKi)bx?)-z^UDenATG<~(;)sX$x zhM{~x5ZCbdSR5kmI^`6Y(xA0%n+pM4%5s^UIp5sJx)?wY6Zg3wxJ2AFEfuA{TT{C3 zl+N1{aVD8@{7QG$|DiO6Y&fWV-!Gnidl8DwPbYNG_5KcEKW+Nku}LSSFH51e07W7fWWz=Fh+R zqkX=9iY54EEqXVeX2s`U_V&Y@mYr|$KYQTbHk73sC5juw@=d}7#zumQO{a1;BvfoV zSau%Kd6K-ao31<}c0f9+GL?ASce3I&7VAW5lO-vV#|6o3Iu<1^@s60048Y`#>zn$wL(UHwd1rf+=4PUP&H~HQ&@lu+PcJUOnS{-<3g^uk7 zO1~9&6Jd>iuetc8xGKA&JdC3JYR7hE;C+o!QD#{q-`cf&d{*|OlaR#brL^%Vz36EMNVq|*R zT_au5(2}|v&n@Szc+aIc8H(RmxX20*kP~4O=_wS5hb|qRQ1VqO_EGx7kt z9l!JszHoz4_PzZkheqeUMBWs$Hj6+Xy9(Y{2mReSP#U+fM)_t%gv%LG3Yla;V}ao@ zVfTA73z8)6i58Y|;>4x5K+?a5`ha~s>O0c)J|ildD+EEa7$y9l<$>*4eZvrvZgEkE znsrg41oRy0gJ6`1=OS|MMI1p6w!?pE8kOR@L!4{ z2-B#{0Z6kYQU}Q*@mT$5of-~x~8Nx8Pf+0o> zV=(+v;po#8Ay$t0kYvC+D*kIX72+XuHUG)6cNMd0J{dfi*K2ikMP=}R`Bk&`3ljo| z_d=U>;f$dlinROX|FO&@6By-8mVUr<($-*l+~u@FVNm@qx0a1lUMhcOl$B3KN3~F@ zDhKV^908v&{B5b`UL9ltfQEv|<+=ofTwgWUkR}_v(c=-Ydo<#9lhPjY63;qL?K|o9 zrsGSxNJ01>hN1IIB^y8@WOCc2ZWsZe1i7sa<7wI&OGG-_J0j8=IQoJ!!iyrR z`ebMRow}uht(|7Zeu zQ};i((-v>vdQ)Rz-NWNLWRQj|^W%-q&E0!X)Ve*1*`Ze0hs@yz!>68F*&)%T(jWkE z`-mr2$TCpl+QYLKI&6G~UK$mcOQ(W!^aPlYX}kjcOtC3AX>3853X%kq8(2%(4KXxa z%~n-1<3FZi4Dkt)3A7;9y$dHF=2sfU=>j!VY&zvxQKZO-ltmMsNh7XeS^O@^6nIo< zyrcji8VK^&KQx3*SokjT8(p_ZWpz>M{DF;}~ zI0K}}o&qTORJ{EtB!wYkXQJhy2rG;!_&JX8s6LeyKVuUGFB9E%8ky<==mzzWW|;UZ zGEiv(3UZvMVavo)QgaoS2Mv%QGU=<$Ju^yS)D`2qqY;>&d*X!D_u8o;KO^Y`w$2C8 zL=VK&DhDt1Y{4H0Ohj>I?FeWF&If>|;6Yshn}G}o-M>7rcX!X0mMmb&e}9@w_`Dq1Kkmd3Vb zKF6~Jw_&7pF!j%+yw7`Q&!rv`YO`@^P)I3JHCnp=@W6F$0&@XA2NZWQ!p|*LkiVr% z50*KjxCD_Jh49d_>G-Mi0E(Mb`kGC$roFQ(QxU#0R$jO+eS2(_vKi^Abh1rG0?c+u zsEfSC9+%iX=e{H%0fi0bHJyJ&4dlbffG1uRm##ucN9kM;}0kF?8 zQ>RCub644;_P@bj!F&NG)%Eltap>|0Uah=P8YofE+vT^P zeg!+?NyZ$qWoD2ZO;ZPCfnnedt1M@UMRAyGu0PpN2&SN_dn%fw;PVYYR3!Xo{>oP2 zqPu>F{@2Cf6b}lVJK2FC#2C|nL7X!7+YoP)IaOGX4$|s?ghesjBKhE4pueO&7jEEl z72zCR6$?=2bG80#@igC*fyPDyB44=5mv zLzGcfuBB0hc;aT(3T`zICa{Lfggt=TGU( z4G7xSadhmj3dLSrD=f(1-cq(98w{<%;dEsC0(+2!B~tf4^89va3e(u4J4oFS#D{Xrf0p?L z9or$1e^C!g4V_uh3$Al2Q87p>=0Tef2F}4%aJ4FjddirG3OJkD)+5#p@`w5x>{*OU z(=aG**4y1@I*w6CP^@`6+&a;vn(|`EdOwOSY&Pzf?s;jpt})Aujv6`$sTXGt_|Fp! zZe(FdqV`+L%nsd5PoXm8wY^9zcC{uqf(wk6v0(PVlVAV~-H;xS(GSDnPf2CDoF~^l z&h2$n50m0Dde>e#DdL7qZPfu}%tAE-K}`fGbX_sGE;jK31UlIF(aH!k&S! z$nLnrVuyhU8k_5`-e&thr=W#A7mEL(a`Je-xvLm>$P=E311jM8?XBVrJSfvuJH(aL zj~J0RCLDoW^h>&-LuTcmt z&1K<)T5`z2+Ry6M!U6_(Xjw@PbK$pngUFAi=YAJ$AaOxAh_5 zOi9x=v51Jb`p3;a)Vf^7^yT|Ch#}|PSxLIrl@S}WE%mL7ozAE+&8||o#H09T${tnE z37ttl`G9R=iky0NW=5u9@++ykGee<&0Eqi$BKI#txNN`^N`DcRzKpshZ@2dxcm1(M zb$S|ESSzY1N5+ht}{gA`?kV?Gs)n^v632W~|J57>2o#pKS0Sy;T-Jm%kiZ z;bXNpC~lDlw;F`9?%I}ygGl5D1Rmijk`>fLV@iCg`n?=spl>m_RuWK;Ki|GPzZ)>~ zxHjHK3DtPQ_?6(NNA&n_zVh6xZ8^j^J)eQDi5vA;u(?upIzI8h zP@^WW;x4BuyzoMI4pf5PPZA`=lF8SjM~UFvpX5CFLR3^JVeZ&#fs({VY_U@TFiS98 z^JkZ(o_o)vR7l`Vr50Cv$9Q_2WwwsYaK}FR>%h{ny=7jPgOtCNNz6HW(hO{ z&y^MKG*@MjBsV9PMnhyjqD8=$ohLY?Mwyjm5&J2Zl2vKApF2F*znqB{puF#bO3T|3 zqj!A%;|(bOw4d|t`8)QKh_CLxG0}tKz^Moa9(*`DScX=~FpI}17J!3DXuH)md5X5H zy?Ze*+H-Wj2dHasVtev!=rUzj6-S{BZZTfhWg|x8h-wiX5)8QrJbE1m)71P@Bdup*zWwc19ZtdRh2__K@@ z2f^LHBGG~g2b4$1{JKmc0lS(~1rzpBLtp97yfjZF_w0F=c0v+q&g4Rra#G~Ec9Lx0 zLW)8|HkZ&I*MV;yG+c4C)}YD26@8AZwrB_?#K(;PevynBJi`W1TeYzok1ICij01#0 z*d5@*T>Kj&G{>8pbN=L6SQE6-J5xBmiOQ>G6HWAS*lg-DX}aB9nigw8pyE5UT`?)e z0hSFy%8o)qG+C{^iGy;SthSsaq%kziPpQ0*#yw>MdO`KT8jBull&&5r3JD2FhQFXe58FVCYEvZ3 zKzEfT-ekH#A|>EOa$GBl+k>j^FC{`+Sx?s$?lW|m7Q{ZVmE zIFD@Q{3J(7$_^ljM>obsNa`!|j1yfg#_I;dD;1RLe?Sr8C#SSV$cWk%5yc}?JU3+# z;pbW6$+$F2dg25(y13k#%kUzu3GtP}H@4W7V2p^LI2`1dhm|=|dB;Ct@G1_KV~`Rx zbQposl_t8_RQG6FZlgD}ZQk7BmIvW(eI0_fHgv^q6I+jnFrNpkeD*uyT!|rT_MXGdHrX!}A^taX>srwd%UO_RhibxGD73_&OSE~XwdUgCa}gHLFt zrsJ}zAy$Hh$I)5X1zdHkRpybL^-WP1vRjv;#{q!8zC_uw1CcdDf558$7a6+NM$LoL72ERnh>@ ze1`0+VkLdzZjoX_D%vw_tFmvRh%rvP=Zp>`QC4X&0p;!|od@NrC`~d&ZDV$&UQJ>3 zRJgp%lRpz9*DSlwZ>hn)Lg^EGUjk+(@7DD$1L&Yt!mugp6pqZ0tP%w&z7-mm-|h-! z>V?)n6%~8tz*A@7!01PUlu5Np^oN4Ondq`B4MM?mHFP#n5Q}XZ;3?JF3RMvFHdQk3 z9{CmUO{%vE$(Th~zvRAw(3`a1A{DL4e*T+uqfEti_e8T$u;mMJWGK8xDV(4aE3BDV zqV?4+9Hm**>-kb%%p{=THk-nE*2q$)0XmTt9_|2~(cop`?wFSdtrNEp`)5Oft5?dq zKDIKiA)fh8$I_cIQ{t7jkf8}wMOQ|%tSG%7szFt2E^3HFZ48>3GMxd;MH3b5oSG?1 zeE!&Roa?>hV-vD9y=BKCEtigbN;sWfq55^aw1D%!YnC=s_JCTmMSBPxS{l_4r(RJ% zEA-w5b)wMLb&1JdmN}@U(2K|NXwH@rPqEvcAaWeW&^J{!h`H9~GisKXA!Q;JFfqcv z;xS(OT+pbx2hk6;&x^Kh@>ua%E-HrkQ{5xLA3sVdlFyR0^VmwX%8~f?v(iREM@Z~b z@Hc7tSjYY6MK{QHd|jd!gHDZ+J{u<%Px8^9=PP=u9A6q5qZYV4>?(J6a?ez1&n^%q zl_cz*9!ja^5;dF3ZVgTH!fq;`hxFD;;fT&0-|;XN3Cmo{-zwPa6rBRGLwskF zO$RFCFBJS@?kHe6Q%7S@D#OW100JNp`$*-u~E$@suGS0U&jw`2+7tp z@zl!dsjk&Eb^_G1!^3DM*mB8EElXUn%ku4}s?Yw^tIr(`XvO}^R*n>~BRV(Y5WQ94 zl%a=vXi|n3#tsSnwys1y^?>}PhXEU}r&R60TxNjis6)=WDKW>ut;G1Hk-Ksn>IRuc zj~?g>AZ#9S#eLStfbUU3h2g(OTBWJ^O>4D^*5qb1K%GnglY3CnnOW~_41nOlM&^8Mxu|6xcFmaUYNn@;Y=x+_ z%aWRV6`R7O=|-PMPUE@+I~8N0S^S<3c|v_%0)Amm?kNmqKx$Z0r*zX=#M)MX>VHHx zXD10W&B122a#2bC|bjRwlc)yYXHnV7m+hYf-n{60VmXZIpwO98t9oaFA_nVoP zxdZmHTP9_!G>;*{CWPC7(xFj2(Qe0_5i-bp@Mzu#3lB47tv0U3JIe9UD2*~(dKhMU zZ~*s7ehKUn^kUO00wR34dHJIXF&DjIS%hKCuA0VB%lCn3GPr(DE1qfMYy)MqU(y^P zXOo+i`0k}4aY}-HS&qs#5Qu`5!=4%My-g@QJ9kmfN7k91>fB*hTBzL;1e%HPglZ#t zD84vm?^p5wO4uZz2bz(4tS}{II1NbU>CZghEmxF)qip##BNXx56#@*T6o;Q7#dgv7 z%;9r#&YSfO8vm*M+ZB!m@y_EZqAw5Mq;)YZzg7x;nUqkkk80#Gsk(96kXYSisLbHO z){vjZS989N=bZ-!LEWpsN)Pp5-mw5&9%cf*Z-hOXGIXt7d1X=59?mwgA^q*cRGfx1 zh-r{eM8Sr}Pc<_+K5(7At{QgS=I&y8Hh~wC% z0e^bxO5Y+{>gI_e%0mA49#= zfpwczRZfviUFG&vb0p=(aaFUVqPY;WTtKr(g!~3N?`X(z9QGk6nFB|CO`OU;iIEp! z`Fh$p_K*@oIW_N^NgQDf(CY$^1Ns5Bg>1j`s~U=1d78m3e99Q%F|c{fvbB z7n%C0QkGISp>I@0(O%=SnwK2vmP8{jpFd zLwyN>X;G#yA@vJ?hXjA%@=H5GzHcg}-eRmE0}|>brn5Zg;66&j+_Ch#^3pQM5UN6q zR5`*97QGh5r>SP$gA&Bc30zcszgCFSUi?c5G_&Em=OR}}P2Af-IR0Bg+9G@{wX`;+3X!!Bb{&hN zJp`~rj@~3p+8zf7oP7E5rTI{?D3F9!UgVE7gpvLOtOUb>U(azt@o5H8VlYwVst}>i zz`Rvr14DfH9b$F<+7AxEocN(2A?3(bVlt_k&_gWGL!a}%kbeu#kAP9eAJAW)e;f0p zgo5TqcR6O=Ocen6+yrD$X^SrbgzIIRlm#$|`7Hc?ve6vdun_z!>0E<@!l^R`!`(j- z3vdVgqI!TufhDHUR8=_Sr|VcC;7eejFgT*0#IC*WTsHZR@*+eB$Tu;|g0=tSJ8atC zU{4^$AVHjIC_@!SR>47B&|*0bEW-79g_b(*|G=TH_t7lb9Dw9|?eNt3T&CHq z@tyK&{|619*pU0lqo;28I69*3p*m66O^Y;ylR*6pdHkg?M=czfy^SsdMIvuyC2 z>&_*oZL;k+V9fSw(&#-OWEt_;)$aOX$iS? zw1MQY==tHn*5Ouf0#FI8ha?SNb;vTkD-Zd)h$j0I_AsXp01D9nk@9WQd0H3U_u_y= zPIe)cA~YK~IM00OFXpp~8*xxt;sm(zk5xL^Q)#GUmm$6Gcs*3VmAI&`2HYV^33C~g^ z_*o*ubA;>v)co9Lqj_7E*}a0M!E!h`b|H$kUo41NQz|Hdg~Qo3hdQ9bOV(aRcx~!o zB9}~zTPrYne=>nGt)FThIXw36y_UFGsws~al0{kRZ9TFOEgoJ2XdtgurK8RWQFuPw zQ%P&o+zc)M5aZKhgJ|egc88`0fAra+Jn$R34b~KxOm$%Mq5de)L zv}ml1lcz)A`;|x!Q=){bXQG2TsLLD~%_A^kziPWrVvHpOu3`jBp2)6}0vF`*%%b`& za9iSP*uk|@HNdpyv6xkHNeIg#azNK(UCWA)L9pT>Z6wz*Y_|@87}ioa%N21_B?y9* zo3pl@0fb~R;+9T{o?N!N_1X;8y>)}4)`(WU&qAvp2YaGFX@5e&E)DdT*`IgjJsf*d z0$V=pIh;9RI1dEN9h25WxS$mIL$LkAyfLMs2wZR-YcF*NC(|mIJzH0;#VD$htL{NK zWR?Sv1Mk}u)kJtoK8XQAKtL0NX)U1$bBl;PIT?;2pjdK{%S=PAB!+>CCqit`VQF(q zR3q;FNQe4(CrO_jqR~*l;)zbSCE;{IJ9jTd(6ni&U4O|cyf0BY>+k8f4p|M9Li!q4 z>KL?yoR7;87#2|yor7dWo3|a$zU2?&lAH4VNQ-O1`%#*Lw$3J@ z&L!-o1s~?7Ia-ELf~Z7g-~xKHSNa>w5ASK2Jcmod8iLtm5rswt)Gs<-DQSpMM5V&V zhV<~jER4_1{=onlu&d^9Uj(ElW4Qw4f7K7mZ81}(M@jvoR&|V6=M3`zR96M=5Mveh z(x{toTSRyMm+#`8zM1dOsH`=6#7sB_<8*tr#-t~a2y3K{EE^(J6qd|N_2S`sV590-E zC!+GaU>I|&yDxPxz2QruAcYOaonbET~19 z|GQq2``=dQ;lc77Y+RQ&@)iq$k1pp?dO{TUwOR9A#`z{AFG>O`tz4sA{Do4xlBrW*EMT!RMDah*xy4zwmyW7}l; zcG%sNNz;@@|HvQO$p${$fH>!zX?7j(0mjCMmCH3rsBAFSTpb6TT#!nclwyi1{xy)v zr2|DYCQ}U(#8x~03if5Ys8u<&E-svo>gvxPccHruiqep1=9xq4@7k{HlRfr-wCGhhQeqoLY4awI zqNvBsXO+woFPz_zXvs?IP=se$bD36Oz=??U^ecZS0v@@J?$Sv1&)BC@vQR;FEmr0E zs32B=H|e0OJ!HCnCS>Xk<}!v?K@c{Ty^Te`X#t9B7jlxH1qF4ocX{uCXWdAnms2&#RG$_!#h|vqjIMwh z^LH(tSVcyKz^DU*3x!sOSZeHp))0S(YCZjn+joiRgs*c zm7Y@AM#G5Ffn|;xnQ-N3ybPq_X5Q_r`qP*{vUg*_ zOgyf%MX&viAkL^esc~axbG?zS)!Yr@z}iI?vSSdi+CZ@zsbMfAPZ}&%NA`*Sg(wq_ zDwBo9s15sIX}MU}UxvY3gySF%iK!3}6vQjVt_6v3`+0ex(&ja!f(!^dX4i-D_2?7LXs-S z7%C3U#$21&uMqC6pL_8kxu(rd6H|UGi?{Xuj|;M;1%^&ZfDRl?%Zo5@YLhX z&{S@`m={lrii_|^5Dc947L#3GdD5F&q6sEKCUjd@fq&Xube^O#3s$s3fYL$HDBn;T zk~Tl1u(PEMM7ng43K}O4^BXW(hC}_N`zlJV5we>9jIo|_a&WuzadC|1o-D(s2QC0P zK*qm7!}V%$l~uT}*{om>j6pn0R~w$h&rF&R85AiKKQ;kzs*CN>6)mDzRhu085CCr6 zn>FhcS~k6xF?+Z`^%}RyTnq{2bh_chN9P7-U{A?T{E&5B^Wv8f(yRIV+>hx47rjV( zKHMqrYSNb7$Lgh#16Jx-l>=5C~g1=Nw z4MQlC2TW|17314Y0K2I-&`!s$f$n2|q5agGKy5(rK|%+RtHYLz&v{Q?LaUYVUOnN= zpcA=!R~vzW+?b0*;fvz2r9wGq3Ix(|+~XSRBJvkDpvG@oExdj+NSUsmLEJ`MF-*`6 zUBuXl%nLLyzus+pT@uF)zR?nTqX4Z@w8l#Nj!a>Ak-aNF(EJwz%Am{_6#^w}%wK{e z3A?}uv$bIhAi$Q^*_K=RTubJ2uYoRzdFwdYin1{T~P zGBpaJpkSjHX&?lL4!YB1VZ5<`zy|yX)H#6d|sUrZx4LXRJk+6OO25mv6 z1SIVRmIjE;e!TO@jg<3k|1-<+@2j2xw}VXzpM-k~dqkFI&NnrhPQQybyQElzb@ni7 z214n+k<)9Sn)Se<#SO1?8?oW4EWHv|JC*xL8rfb$ryz)HE{gq~SC;CmViR&taVeik z_P5Zzw*ZStsaBp#PI`(xSY70^tTBF^wd}$~1wM08pVyI}A~^(`j{pSII9HcF?5?H40Ku4Oog!rl7uCX)mv?wDszl1osFnfC{}q=%F`0VNPhq z-8}NZlceL=Pa~1=H=ieReuy&#H5NP~pve^iOb@kc+B*&9-%66ce}AiGj-1=pEXA#= zKt)rRPsh<5K~$xP11bNkq!X*~*i#0}%%#?^;@!N;o+w0@rJPC=vEVS>2jnvi4lcV3 z#O`+lE{(So7~Y4#`TM1u*ot?$|s0I}qHSzvw#@l_Yp3v!r1>iV^4;3fLSsi7^i znVY8qpKXCX;|OU%xG_dh85>8;it-RA*^r}k^fCN|-lNm#=m8eKJ2Ej2xVr4$m1;jx zX!R**^M1yVPPS@w&eVGUD%3NSA6e^lXBKRNjxDyy40G#)VD#(2H?d8I-9=rNh&oGC z986nz4_Pa_HUvUuWdR?Nnh#o#G&_fJ5jtcJ0G-fjMjpfs-EiozCWvnV3A#NN(3Ap_lnmU z=QN6ma1Hss;GPg;7~`cUtGeI8`R)2BF!-h84;{9cX9bj`UEYg!S6yfa?QbLwZA~xSjREFLv-MO-{sX9{^fX(+CrnCwvO(od8&UJr7j;3EH9t#hP(1 z9Bsgc>IgS3 zGLy4m$ZO6Tk&~*lY^J;XE8vfK9njDKv9S$HQRqc;6~<)wyGIkmF;JevF5BiJQ7w>` zjd0=IC!<|ph(1x1y+swty`moP!fyjd#~KCZ7FVteVT3L$|Ib_y?5 zFvr@a-U}()v>`PuG=*ND-=ty65M)Hl)Os=Ey*7h#rap#HMuFqoz8**b@&*DtMOhod znjLSwMvEAhb--U5^h~(VE<%Z>xwTz8wp~-^lh_J6*_($n{0{qwTmiV`vrB;8T)-(9 zoNuqjngGV2Zw9zm?DAQy2+Cd|7%r%?8J%hIC+-zHyqU(TCEd z3OU(sb?=YS4;BS*OndAS#D=PeuXABNJ!4uFkW|%M3V1$WpLyMlPy89D`a& zztvv&%+YnH$(@})&Ov`l);kz$BJi1NK;9Ikhjd|u;we@Nl$8=|Pw&)*0)VU5nL+0q3ion9r>$r>p+6A0`GkwH6v!?)ATL-+ z?k4SROKYDA&weSGTMihO2{A5?imOXAuB`;b z3ym3D;E=rxJ#^T))g@I)Gd18KR&u8USIeBKo@-*Ik;F(|=3@OXVuiMhNY>)jLGaRX z#!|%_G9tuPY)U3rAX*7DNDT~W3&mzva=b|_;TW7p{Fcm!$Ib#?7ON09$g1US8!z;I zMU|Xgdc&goCnqq?jS^F?N#P3NTFg2_^dPM3Oys?+f2A1A$Yw$3t8Af~g8&Ou1S8W- zn&A5Z{`Us0$4>b?l9x}gpI8SXT9L#KIQ%MLOD{|E)J=ht0JQU*pZ-<<0MT}cT`CRC zDmB6sXxkYBtrw2_4Y5F``;!veFtVxaaPcG|r@-aHMn$8wpDXyhlMN_<{?Gt!6o;KjdStdO#zprbPP3A zp^aah=M>uKCsf~DW>XJ?Q9a@+xM9){u>pnKPo0Vh3J44f70iE*_YDCK>cB?9Th_H(MVBW=mKc!aKT2!1RPM<(_hjmx;MCW@w_?Uoq_`9A{sP10 z`CGBW-?{y6$wE%O@m}z1;%1Y|xss(IbvMv&9TZuK?6nzcI=&4-*8B3}>CWEOiDQ(K z1P+W3+r0Z{!bpDA-24~553zk6VAW7!T|k}Nv(A~Ep?r~mDbc45KnyC1Z$CHP;!I82d$fnI5H`@S z&QkbBgv(9to)asu*ybX@Kr#wp00ig(rNAt2X<4>cv)1|D#p)I^M<(3t(C7KO$z%sz(Dm7uz_&-qbOb2T3|`nui2M{1 zsRNT?H)u0fge3i`cgC}BUj0L6+9~-YC>CcxRyU}l@d1U-m~os9#X~OpViXt;yCwKI zqb8^t^f%36qT^o#nPv4hXxH@V7%4m#_y2DHSoi=$p%;-23U8(7k=so`vVNSLscSX< z1dejFYLmK&OnYAL`bWLdDWJ`eu0NOujw7Stk;*@eRsQ!Aq?vH7c{51{ODlnjx^lMt zgoW02m>~n48vVA6HLfK<;znkQmLoiu_if)r=SQiKDj;4?g_a)b1ZqXSW8s+|cqDJs zeVF>$CGnn{LS`p`2IC%xxlXg;!x*&E>6}TrGpsuhF(} zT-=md-KriUio-PWF6Z+d&uMub#G|yvFT%)%A~LT9GpgGM%;b`8A-uHB!*x|%VDTuJ zPqI~~gF$0a+p9w|d(l3scxWdBgeror9h$_lHryiA{8-0eJx-e+SHTh`WIRS`j*;UA zGNSpByBC)(R9-bUNad}6sSPAXuj+6WR-g-Hrmy8uE2XX`&I}s-;S&nVDwwQTa#Yvh zKQ8=W>*m`B*iY#9!RYFNreLg1+fD)lbtiNO^ol4!88=HYnn@yDzYa#k7d8eHghfrf zK(OrtTee~R*L$K$v{r`qGY$SmqX?yhrzK%#!>y4QY!s}+LhAw+>NCc}>`Q{BhfCpm z7gCID2_+>(!$vq==oUqQ5R&AB@b-uLC#YqZa~mq0vO|W8Lis^iC;GB9ei;-^#p-dh zAK9mem+C&3oW)wTLFkS@{#VbiHxT1uf1^hRu303J6xA~cl+m@A#g;NLRNQ<_FNmp# z-~1se9zLf{QxjRcNz{pi&mk%~I5~yj5>QFQ*(RQ?)*nEQVk?q?KMQ>Y5<$Va14 z$VxDnS_q_Mi;DfkR{kcpg@)6|DjzrX(*Vnwrjj2k+vG|5{MRBzw^1PJ!6KqWXTT+B z%I!ySqXhSq^IAseshDqM8PUy1G-OoFP9g&qaJ`|_3QIt$Kng^? z_A7d~qSZJOQkDIP3Omte-ImPOY*ehU_ew|4Z4M1Ml{Xo%mh6o;4`E6})9otQCyba` z1#lO`BO9$TS}*{5hF~6XguJdd>*So}`f2A#+j5m4U5G~C6PI!(N)JgKi2^Kri9Jbf zqZC}3ej%HfyiFuGw6M(W`GrMCg9%zX^GhN0c!MeRzUanDfkWS1^!;9|UJ_pJh+gq9 zdcA0l^!?wU+tw)pOfOxbHiYyC!0an-@`&Vk00Vznn*}$h?n?O$#n}WLe3AE#^bkHZ z2V_M%6lQ@dLZz;w^s_13TS$5*8DD|fquxW$Ku_#?1+6+oWcUzic_F(&ur<0HWL03h zjW&v~&GXi>9=7TdOj-2PX)x3Uxi!vKP9(9fO+!*307a?Iuck!j(Z+;lO50H;J6(hr_mln=NudDdeQUy6p@zWty>CR( za*qwM%?+d;Xn5c`{~J#qmj{pHy#P^N={U)P2j(79nNgm$djPOH_6ow3=x|n&3*?U!wcllXj#c|ZsQ#JFKa-=hqY?i@neTCg-c_LlbhW|LzTsL z>!Vs@GJNKl@W}JlZpEZO4w+;}sE2$i#FOkOm;tM>K_nr<1N=bvo+N88(Z3`vnX2BQl_*5DE<4?kK=MXKCVwAizy zOx3V-+xV~vJdy7x0F(xaXk=ZEp^#C92!(8+Uz#$s*k_wkkNcf z&X_t8h+xknG5K~KW<}{-GDU?z5KNX#SjpCvmR9nbDZRv4S@ZRNQ@Osz>r-+tkSJl^k)6d zbwneXp*h{ECZIq@P_8q2!RUj@mtFWq!7|K)y!s&}&Qp3Nmr3>l45+M;29D4zB3aR1 zz*)wEN2!;^FLJ7h_OI)4JvJP+Vl9Y~+DH^*6?UcrQ&TsmnA?YlNf$urm=1ez@C*2W z2~^R|Vg@V8N+NzQ0qEEX?+t1#(zzFpjW7&4aF-tOIYHUwiukNhynfkSg9eyTAT^l@ z>cj@%2>@f?h5|cmD<=WlsFv1|{zJG#a)H41{^xmtO4AB#1_2>`;FRC0a0*CY=DHz# z8x&c9x{EKrGQ1ke#AdP*6+R8h?3R8xerVyp2JRJO_4Q<}-8m!<3(7u%{3TE+3C3s| zT-$~ZA_ILy>8X+_hv47}4xQ+4Z_?@rp7zWG&$;)1cDK3U&C{e9Oq9kkg+4bg8M^Qg zDnFk{rywl!a^9vKvR7QUC_o`AO0XPld^|G(0`XE2{XmSdxJ&wC4PT66qszdbGnZu( zcq)=<@r=>`j>Wo}tuKrH-cAChJkR2jg!8C)1{i@L7>yaiikZ1)tRZuR_^WZ^y1**Y z-7m2(Z!~a#g zGEru+p#wvZSepQc00vHTnA!7a37gby!!J}6X7@??^$}JC19neUl zC-9v=mdoLOt%!2tnP3Xz5N`sS0rABxOjb&?9ly ziDW7KvN2&@OAOu8)x$@ofqAj5EY?PjRi{kgH$5R|1&PZUsJd`A*T=G334&nfB%~Am z>?^yB1X+;`Ac2B#o}Q14#v++!`#wpyroW4-G7U_o3W)0wU~$mVD9gR-3XbV0~L9K2O2ti&of82 zD;Aw_umclg(?nl<{#U1Mwly9;vaKoF2!=*62kKsXkPa#X# zy;;EV3ReDPEXN{#XZG3%NE2cSm_918{HXZX1S|uh%%dz++Ohs|fAS8rJfh=mpiEV( z6WyowM#PpMO1y@3I~C&Dwh~bi6d|$`=B!M^5-d|hC=>W;@en|oo};Qs>LU+G$E2G= zO%*)qC~CbD%Ru+8;4-ekiP3fQ7^hhA2~NTDj{@QP0t`!Tr5M1$8WY2ebibrl3*bP= z_1QlQhNXo^13pDPoO=jv3t(qKy-VE@!jPZYxry2=Nv1md{sJj@*YI0o9@rZ_uh+Z2 zDnK589jVBon~(?khI7GqGvvJIp4vkWeq?LRHRMawMZ-e%wq1%orVH zFjfLI5GP^>+KRD$liNMs7aM6NmV1%!Aa2SPuP1T{do0V4H-bMfl%k0zhG0Q6elwmc z+;G*71R_LU0(eaoffPqx+_;2^`FQD`{|C&QS!&WIpCmoHD_r6zDdpCJ3MTDYMP1_& zoo^H(yGoj2rj->sBAh~6=V=IfH-#biNbV|%U+G=Wq0A9)?L!+o|{j7iux%9SIqTqiVcV=_f{>D zrZhJfM6_O!aM5)MD+O3rFCjRx@vY z;pOdEPb83(%BK(lUf8g6HJIN=fol{$@U{U3z`_OQEtV(G%}9j6;DwLDqftCcd}ffs z7c>Aq!Z|N$cnr=#%7e_?E%1RsVnL?nm^@>z>;LToSObzf6Pi6+|3{cMa9nqhXm>{RdUDu54F@A_&p0WqaNtim|3u z8-zENvEso6mAeAOBu!o8s^9$3EqkK^v#<8{2r=cggwY6LO=|!@lfl#nOT9~m)@vP7 zcUf8ryZ)^Mvz+jx>q1D2+Y z3K@H!8i*Txugn478JPG8=^r1$qX*N`Rw^^Lgd6j4+%p#LoQUgE4ee($fhvcn$XU#Y zX<8_J8_=0RP_QSwe*6?IDezEyv2`PL$ua4vREGm?t8^hcj;nNSkS4M6B3uPh(^g`BEA}js7>Id!0UTm)!ET(z+rF!#50HoNS8IS zKv-6Z3Bcvb+PmgYPAu&lJg`TbFzl<-)3~Vmbw5u4J2f%FW_f3#9MSxPev1sOy=wurOEDv9k{O6xuDhc{qr7nUu?X5Z^jER>KY0Q;C)41A z5}wPv{W=q=V`t@aft4GdS6F?w#0sZKnl~k*EeF}8my&|sk_AGPSX;?dvSLLA&6RKQ z6*uLzh?|rTjYQ#Kt`|>tb{ZMFXe4`vUHIJGl9sgA@Vb)fQDwEdZdI(D)SZV%lIMlk z4ged(zI8HgEY}|+4yjDx5icbRgI63s29lWTG2ihl0#i9r7)K|Z#c=+``bp|fCPS}{ zrYHNPrTGG}ZikxMK1mqyGrU}!J^R{ps&a1jcn6S*BawwHH)V1=;Q-#ap~dcvm%RyG z%HA}@9Yd&sC~RjI>;eJ6F`Ak^x<)waoo2*rM?Klu2wc+QtPp>B&}r}30FVxZ;c=c@eI^@99b z8dL;7BEsTyLin7+$6|lpXJTL7LueCs-KpQ>R(MWOSUY02AF_O$|I+!@afn-W$e?XO)il|3uD9qwwLwi z^-p6FBZg)vjN4@`1f1)%7`b+jD_pe52?M(aLI_xnjMO?LyaZrrGV1@9A2%U6O{|QB zpPWl&(L`@GqM&q+naD$c z6%iL^A#wEwc=FR$JrR}+)E?BLV*{O`Kppt#_mmWK?7SywYVSKY%| z5bX;Ig*>&kUkbu8w1FB9BU)(U%p%rFfiW>Kaz+PUxdk1n-x}*o+$38ov7=~Msumab zcOq|^5gqmXUv9s%{;ctF^U9_UV{94D?Zo#RHHTFv)BXy9#4=I}v%AwiHe{k_y#x#Y z>&JP*=@5cO;D|LTsrGtN8}GNdDXXUrbqf~{|QqJmBuEg$=$8%4RtJLN%r zCu7O`@8R@7KMaZoiwGGxo7nWW}7SD4Tr+zWcBxCb%0fS7q z6AsSA4BJr&jMSPnjU2Z4;lyq@v~RHjbetYqe;Dms2Kby%FpB*09?>$d zxd}+*eMCgV6cj}D6UlS|5+e5!%b-dCbZ)0n?uvRZc}$zwjwz`2!N6+<5qI8NOWLf; zgEDgQ#?u*RQlG6BB+q`JCo1u3{4CyYT4n5v;7vXl6y8Og3bYdTo=^h}_eSw`CvWUj@wS15w>cXKJHS?tcZNT@ zGmO=qTdtNwVCI4k&eU#5{c5COV2q}DY#OS@358w6kUKYacR~d z2qu0X32Y0X)X>ly!Oh($NQmOl$vvkm*+C+JIL|Hg+Oxfm4+Sl68%o)AYYe-5RJ%%WaxeNga|ci{#>K|F3i;ri^DP7tLsW#4-># zlN+N)B(auPXwY4~HMsnkj&|LH@;5i9qKj#-R9{~!1jp?{9$U>^V+#`*icG35Pr`Xb ziM0crzLw%wS9RN9n}EOq333?mwzS*NRf?b6VLy>N*4m-9a^B)hIN3!XNmmz3u?d6m zsV+&<9?v(1H)?0qL@;2_1`ok*0ti97h1NSzG$&~uf#n7?fAC?b#<0==&HgUQ8;`bs z06tcnc2-NGr=6l`n99A54~X)7uoKa38lap z+zgzWYY8ShFFXm^PCYCGxK@}%Gd!r^W{78stjSz#nOrFRP|69k(9G>i4B-rMf%SsX z%=zu^R^m?S0C0(_linz5(f_bt*p525*9{eB-Fh|8#3OJarmgbhJ!%2|;-6rjQxDm= z61Jg-+77K6+FxW#R*yQEtNM!lpPCQfGF$#T5H>Q5ptW7ioFDTo;;vV8gYn>Qa2D)* zNNtN?@s}2-sakY7>kWEKEstRH20fdAQ;l^V)1aeAAWh*2FgIYs{BuLg8#Xd+t8m18#RIx&JzK>~?@R_` znUQo@4AS!ptS;e++GFoJ3J`9y2If?#!}Be&aBmb4F4!)@sU|UO?rbc%xF^rFxJVAq z?&900@g_-w>g*IqBbrNra8%}mdxvY%vzA@9h`GkWMNE7?@iJbt6~vT1w!R;4J*d}( zqe5m&Q#8psI)s$JdLC6V7^d$`ONRrjNA{#_O)xt zwe)qP80BgcB!3UELI&iP1=J>ttx~H_j)?$sP&Xq|WcVBNYQO(6`qYKC@>n?>RqxZ3 zr}QJnY<+&mV6I+FmN%~%pV5(am<)8<8Vs(NATEk$ITA%_v( z@_%^iRS-4NJ)&qhmQvW9SVAnZQb5b=KExJMix%0*CK2d& z1%`1?@ygSoQ#3I$j&>1vR*ue0Kao5b@`~t1#oZmBAMGn+8YTORiqdQ?7dDcqYL5jL z7o)X9(?snu@%7OTE1^D7bvCP`Cn`rFJX1VBlrowq1u;MBFv}78t;J0aWc;Za2K)!6g>;jmYuc6m&Pci|lnf=66(-Gy^?l93#b9+?A zf*cINu@w5Od*W-)K;}Mnr7&Vx?s=uRJ@$I6i2kAjF)J$T19WAp{EyA>RmCg94*8kE zu8P#>9&at@4lPnq$r>YNz1F3%AraEw87m~ggw_^qB}XMyJ9q>wTtzpgOUKVHRUHwS znrQ+79}QeTbM>lzooG&+CEQ$O%@`X-ie=59v%`#6ATm(I6E=CZmGS_kJJ4wi&uMDO z=)JLA$alO;7kCG%`!;?-Cf?M5Z>bM+pKlyRM3?Xi@6G-hR9W~a?OXJ zn1VgV*$TUAR$2X}6^L-fw@nH(^sz-81!3hY@+a$ku~E%=zmH|cPl0Z)8z14bFq3+( z+xL^3HDJXI5r#(s#CwMT;j}9l$jPLkC(h<%j*NH@NcnbSv; z6|brGE|wICd*d>960RO-`Hxt3yh+vFy^|v+7+ITiBp~J>m0#Hj9k*DLk^77GJ&jBPL ztDXQmWVGYflUFW#&b#c%OT74(5bUkRgS~ZyE;-O_D|I(`Lm)dfuwBWA4P>dPGY7Id zT@AeXCEf9l1ffJ{4O@^K#dI@oRPPlqD33WzRr+yr3=GvdugP z+FpJh(_gl!1Y<~@6L)Cqn+^P6(MOr%csrr6)p4-M>m{Ga7j{1=<*3pya9mm3PuC>7 z0udm4MQ(hK&ROJU7x4%JfliipsP&y8O@7OE(UMEg%yhVDNgqrqV16i+d0c>`-E>?K z8FVhdav~c;7~BU;0gTDF#@_2z8;v|*6&{*_L80Q_EhN*t9D%r1&9D)WO<|f^f#_%t@+U9*m5R$Dy;OP2f|} z&=JL+9eE8TOT}o{a(?#7FN5YW&0)Q!=bJDU1^0FF4SzG$$F%q1=_k+W^>teY0|c$yNLMc@@*O|SrqTLKmBP&9&c+djJ>bWa z?)P~ty2SFi1_Wy6AubXYi`5x`a z8(~78iwA*!Q}_2*UIWn*zpj!%fK!O4)Y$hefR*rplR3S~`~mU+dOS2aAZipkaUj=G zP8PN2=j*D)7>|3#ArCBv;U4a9#x-HN5V`P_O<$M84-j6}N@ag|)Bc8tTCSMQ=YOsm z@$2f9ZNXWeJyH&X(oUO~26f-0y8!O05XyNGQGd$IO0|kqA@uQiot}ibfF2kFHN$LB z3)cWeAUO#G5N%1`g?2iJQm!nG1IZj=NI{MD^knRtV8dt6$1NQk*au?Lj*?UYynGtf znDpv^noY6BICa6#-UQuH2&54o%b01(TO&}GMY;jRH3&dJ^B6beSzN(Em+#7Dj<9ML zBuMQ0Z8Ne@+soYZh}0HfhsX$9aoIXK*{#6mX+$u*s8lp795^6bT`7B%X%O5`!7EU?~vpHJ&U zEhgDPGGkDR)H@8~z$-6aFb@}8SY?5FaJ3)C(;n%|HO+$2W_vf89!q*Wh1^3&#bY@! zAVn(Pr)?EeEc2ME8St53VH=UDk4-4R;Sky28lw|bIf`dT9zUg~tkR}9x2qD{!BdMs z=P)r~f&TiHuyV@$WLWK9On61z8I>*?YJJMyNzBMz<>NrYiXg*m*Pt&r84i9jV2ku% zJ_++BvTxE|=7YhG0D2~|?@piLU>;dU*JAlZ={dnZlAH?KZg#ETPuy)4z+;f)2L6LP zgQK5!d}y{sjE@WUa+IDtRaN5i6ef}Jt5p^fNYi%YoI_9z8>+eh+~JdYNgm_cGuz6* zkBB3ACgGJBo2iK$zk=yc3p3y|p%oBRT|=f3T#$iE>jByeI^YzMzz-p-nC-(K~!}HnRKXp5pB;1ouk;o5Zn+^-6pl?a0h#{bSKRLTsu*?8_gkxxf%vZ}BpG!+ zOgHh?NR^ex;J@Rb#*mAW7&$-zDYY5olT&`m@<^2Q0C$r^?ZMfT9d)H~`$(>vV;n!~ z<)ckN*eu1;8+}B<_IlnDX%NXzlg^1x3c#)%PijB0%(2LZ=j^h%~RFS zIypP;=SCPQWkz7j&O>FqvZ`$iT3{<$#T9ba6PLl0_M=Cl^tRv?fS>82PrpyB1(R^4 zVB7pH!otP%_mH}eq!m^b-5a7iQmJd;dPGGOn|>Vl?IQT+`$RO>vMa71gFudzw{c0E zM$Rnwaa>otWruHF@74eqCo&0QZSeudGD+^`_}K|huK)oB>b#bzI)+fsx47?MSNLJR#*KJ4tpNI%=Ugk5MGeLV7l@Jq1=pI-Ew zDR5*~x2hGeBo}gz?!IqbGY37_JGbq7I!WO2ttLh_HN$L&Ir@yU3lj%ZUp39p0VgiIrRo8 zi)B|#b)T~;qEj`e=7T5~4^UZdO>rcg9fPNX{6VGbUJ3hytv*4hM=uZjx5v_MZ+K^9 z_7E~%F-5xQEl)~UB9H0wwh03%9nNndgb zJTeVOW29exwFa(9H~6iD2{kOOpb@ov%*~qHD^|tkni>mYa99~5VmnNR{c2on%OW&Q z=B7=WBD>6L4X6WNmc`7XOIm*=ft8-nwRxX!DcUk(T|;ps=W*odX_03vRUkJ_>O7FA zwJsBd-0CuYPDm=v0=3gOvU6(%cbA_Av3B5&NZ8mo+1^4CkAsA@K3s=LNv1Ea!%j&g zcBDF_Ck5A^4GqY=0UEhDU~O>&JM>z<+tz zs5!^q&YgzK(HLBaCm5x7#bn`dty&DVAjMTbF@beNs{56T3oDBlY@-z_RpU6YzJ5(N zG#r2lj*cEeeQ|VfUxOT(55PFddoU2(G)_tD?pD<@G_3um1mBbyBQ)kE(@-l)_-H+ zZl3oWq=77^iD;{1={c@|E1GZq(%xwb$=X8c95YB6`heW{r1Y|6RKS%7FMdW=6*N}cj#t+6@JoqrK8?s^Oz#PeMfX1|*l=}!( zvm-VBzY^(dP=a!xpm2~H<3wY6wTB4?jxMMOGnyw%!5_T*vG+=_opaNl)FA~>O^tK0 z1M~kjAeDeYn(7{?TI(|oByr1FOxP-eEbB_rrn@>$Wdc~hI9B1(JxOGR9oa}6Ha$p8 z6ZN7jKdDbB5Z`h$l~?8GG3fe;iHiz@EeR-f9j8G69fi^ZrcYysJ}mJC8<=r>2u(-A zJSBswL--PGV41kSpE(8eWcy76HYKKSx7`#i`&=^K4I%KQlnnGQ08{N=-KS1-I1;3FE@Slu6~Hh8Pl zA+bLRBA9+q`s5g_?LP&BWiY}gv-yKP7{GjHBB&hwo-d|hG7iy1FoX8y|a<1uw1M}e@LsygW z&iZES<=OZT7p4VF9eW_xZRas_%UOY3T9qEsJ}PPdN!#2MvImyAVs3E53Xn^3f|!n@ z!Dl&HPD=J)nvMdVJ^*7P6yi9fy5WW3GMM5bgNrc{F^{^Yq&HUX(w(WRB1ct-tkO*% zaq#ip(D-Tw-O0}|os4M6`C$fAM~Js3F`F+d=6Nz8X(^oWrjuUqCa+Uv?YM~q;LB*E zGH5d6lbQJ>`%LlbZPf~_z=}G)kC4o&u@im`3Y|BAT0%?P;CnGlQiNXh zPm{)xNFbj`q|p(CI}5u?!X}#DNdYX(TF}OAs-#jybF{i5N>gur{ulk%q2Bum+N?>j z_&LLTw4mZ;@=h^yBRqd2WG9tUrDu&cqEApIq2iwHEW*036PvF$i(Fk8q9#Lepq8&J zW;2ri#Tm&zWso^em3kUvoU`9YAEaqlH$RwV49eEVkzW1JT@dyU?Ws{|UY0Ro$nWf_ z&s^_k!#p8^26HW9&{5Ri zJ#Hog*$i?uV8?UJ>$l+lmpx*$Th=+f$x>46PPCjTVUAJKh9o?2*4|hQIYG{y0fa0g zJ}Mm#cPrz`Hw6*-Xtc|#$0UABr#7<`G&rbHK69ftWTlPArIH|yP&Q059bK=_sp zh?CzdmAT~a;+K?TpF*c{#eoRGNf>0ZghsWTByq%esxIFdoX><}eZl(?o9OTHlb2D~hJ^0; zO@ML7bAWQBVQ)uip(n}zQW?<$iPrk4>^94Uqb8c}mxX(D2&pAx+>l}2EBk=fFz*sl zKE~1P4)+^_%7Tba8F3~qfDz0vpnel`+|sE%qxCUwIp%@z&~Eh*HCa&;=lUIT#<>6P z4g=CdHKk-Sx=Qxua*mF^tmhnm#HHaV9ao2p3-j4)@^7+3HZW`mj0i-M1*2Z*gSS^j zT>Wn8dSpUou*^(5`4TV_KQ#2bVVjBZvo)319aJLm12EBLKNa)d=>zH{As1&XfzN47;ElK7cpr&>)c*$t zWE}AHD+1PVfI&Lm;VszoKVc8CXI%~UGR~BR0 zfL{@_f%4$v)Zqi-F-k#?nD6m*>R=9yquJmlqTHZvuRca63oZBrPqG*z5#IBrwy#`c zeJuYRdgZp89$;WE`8C84YKu#4IMc_XqQkY7D8`10Gh>HgI1ML@&xf@tv0cBI0z+jn; z9qECva8R=u?0re5He)P@y&*J-!PK1hXsL@3pv`R340;E4Z@4Z9`cp zgYC`1Ux%+{1HrVaPl2_>kR9OLL#A&i1aj{46rnKCTa`ngAkKC69+~d=^Cn-qu@*0g6BzW6lt{^z_t2D~| zI#^`GSTMQXr~@XbQk);UEs*_WvB(ptNkh-6rQ3;cPe8HEz$dx*8p`@q7p@p>B@@lp zxf8pwPYHa^iR%O^B^g_&A}%>?lgXr60e!_zqxZYfXdAkBA@ptr9xe9&=Sy*V32JO{ z`tX%NwVp?jSdg>@;+`RA;>h%)VLK`X8_`v^t8-$Sc0iuM66F2a5@^0jp+@juA~?c- zIAgBblZz#=pu{Op5>Cu;cw(3F=sh6$gWRx>RRb}D0)Ex>M_yXR!en}>=}*~%Q#w>` zdeWvrnNyA`1Z5176V@(ihzc;Rbq)r8y1`DcFgv8e6p^v4{wDmab&Rl%_yW4JI3I^g z*ZIJ|3}^H4M&Al@Qe1vuH*=A(@lllEmm&*PT2Rl(gJYEUdS_dgF`h~3|F*XLJI{B8 zhi%`PHpnQE4&vqidZ@TN@fn6o(KcKDJ^}xkJjUc=i_(G(=A-bpq(Ybx%_Zwx#hK>c zBdY_y_@4Yxs{Uniyr^pSebTNu`}aC!6{9DL$&I zD<bTLDb z*VjcIfOVOTw;7D8rqUotEa^Y9@F$5VRw^P;ns3|8X(nF8%ajlt@K>1_O}$I@;WF(j z*g$-EM%)z06&=g>VUb)5Gj;d}`5ySyMm|^Jd8-jS)uuMl`+;SZ$!!`M^@`Y6=!wBd zb11J5^y`w*vh1R6;OqV_^e6h=hX5YY&YEi&C7eQy9XfMd9<{-RTfZb{M>;MV{cMy2 z$|;#n>|!1}NM`1yH?(uQs#ETzg#h7lHX+u2DUT|~7pcPO@S$Ykp9gE;Pcq>EtgvDi zlR0&!`gSTU4}uvFi;ct$?Nbl~!&88o;?K%9<$~+Y6gOSXuaSDWM*}3pz7kmz%1VgX z_6?BmyoH-4^^^jtl=+gIU-?8B9ly|`10%N#lK7C^`>xl$5N2sBy^D{;bAVq4o&v<8 zONv8|+i5vYP()6s3Ik5|P({IOpHiQBmo<2jZ{eLNJ_2tTh#@nEL3%5Ue33dPW&CWT z8VCnvW15M>i15i$Bp@hNYdEFE1`ouQzur7!my^|+U|EB1;5P8}ufwvShGS4nQ*bGr z$8SX^P*aZ3&f|wbWm>Ua_^7yVXZf@P(z0NM8ILSGMP~YywXR_`ISN;YbFy(2}FJEV4!fO z$xgU5eQZMBT(z4kO?=v8a;i;~n0fDHpzcXXEG$zh90er|mDm%q#+OW46dowTB@sq9 z0ffyeiQbU)&H$V+D{h@OFyI6n@63xIzM_c;9IV}Joj`~w2XvbMpAX`G=g+92bj zVO6f}^uUd{b#yFCxgA;H$;WV(KkOhBx*VFvsCt>`y(A`uZvzh0ClJI=VG|9M)mI#p zEKlkRN)7D+u_b`7WQc&eJUBIn8jeZ;bh7*VvYh-qAB{$&FvaAr#;AM*AH%tXD_CpMZrKc6Qmb#pp?pcQ_5 z!Z*I78tgrkY)|IDpmDvScZQ;v5Agzi?v+F%u3or|S?D1FRdABl>KNBVd}|J#Z{9IK z)d>Ncay`T04Z&ZQ^#(EYoGI$?0UOqTe`fakA z)J@eI9Xf??X*twQb3-{a;o%7S8c4&2KBs^$RocGL~W({@_>`*@U?Uxlo*hz}3 z$RSfOiO4lHx(WHVa7zf~R6-nygR9FFBc*nzoOtL{wQ53}0DzEZ8Re~38-k)9Iu zCW%-_=ic-=EXN@FDMDY#$rpq8^1L(3)hN&CEWGzJe|`;AYKJ`PNq6&Y{GUkMl5 zUu?L(G;UGN0Jl*DA?{6fWg3fXt}^f~gR)SF+gw(F`J;zkn$+#n062xcF+s+~78+~# zviEE#=}Bg`*Eyf-^ZQji!sf6x)@qtDBvIA_@1w0fwbZbH@5nb8L|CXQn&PUP% z&m4c!;nr;i#zkYGi4vscXeS z0+NaspqR7e3r-*2?AzlxMd@tmxU>~2gpWjLKgXQjLx zIo9V$QL2wUfAuG%^HPB|%9&6vv4X3!S>FPdkYoEmG z0E`WyD12o5R812b3esb!&!fLSq;4}#dQ`lhtv&t-bTB7?S!akhr=>&(=SvtEet1n) zl0wshUYIoquA?1(>a(&Q{P^o2FF&@=WA3JF5bw1oFdqWc30e32{xruYrVx;W5z=gR zcjva-!VT=_Hg|a=%I-7YCpaZcnNVNHOBPemp5e19yOTD-t@d;DbbDbcoT!nle$ZkA zwE{30v{r>ULPu`4NSP_Lm1 zH6r&bh}Jl~`p9!@Za`*DlR^-YImu{-5kBP{zH-{!+e!=Z;lpw?HVvi2DHTp2kL`-Q zZ><26slgfwc1-du`RF@S0ugCx0EU@Qq5`z*p^{7n1)N))8;(#?s29X}*$^$Zy2r=o z1s#HZ06kc+)O4qrV@w9%xOtt3m%;D=vSH*7Aa?n#KOf&HYkl2eUU-(B!LU1_3fJt{ zQvT81ryN9Qb~Ul!?h@ZWXNm7BasNqhP7{|I1|Lz4ClKT#%K$647~OJI!XKCm)de7d zN>S_bLUea_S6xHg{X3wnE(0c$8d>IIoY#LSqwu;U5US?Bx^^X`n*3CXk(3}XIGmF* z=H}7rsymTtlRU^avA==s4MceYf3$KLs5&4zuRw z9Yi1@te$UfA-cl2r5^i2=xMxg@m1gl3IvQ$0zKLJK`SVS;KS1O&}H+i*zrI2 zvk4Y)wJxwQE>7X8$VTf{QaW?eJ{|;-HVHUj!fUeMSsdRRZW&5c1QNluB ze>E;<7UOCRvJaTR!~N&GGhiCN12aT;W|W_C^O-RKY`2Iz^V6q>E;kHRIp10yiZei3 z?BB62cP#$_;fZQD8#73@!^FWZ^11TA6#&eK17~I-MZHKez!NfJ-Sk~-#h4YCJkG9b z;2`yC0?eGMd)FUimVC*D3FE|;FCUpLhJ+N2=iZ9!D%9k*vH{BX=13F(lfmgqAQQpz zJb{{M%n?8V+SH2-5Ibk_bzD1qQE;y;!hwJ{t;*0Ge;u7C!il~4PlQw=fCg_6IycN&2ao{2}f1wyqIzC_?KIu5!G+h13fOK*Qk)P$Z=KgJp)W3Eo)606!n2C;B=RTW~UhT2n*|d4#E2GjUlrNP-cGMUTtKH)(#J0SL|> z5TfHg+tuBH*_2_9AAKR|C;1vIqOfz$HrP8Q5%+H{YK5Iv<*`&_1E!Np9V9~5!U*0@ zgH?+b6GH)uPvXNuVoRBsXR8-`2SZv0pH`&%M>tVYRfdr5uB#@1{B6DzTiSm12!s7# zw-&g;#mPtz0fhn0X81XeSXpHL;XIN5Mgu>bbe&xTaPv>q#LbvHAKTa0iU1Z29nMm9 z2HRKaz3yh$XA?}Q{EdA@2P7mDp-O}Iu{M(>x-f{A64I~gqEJBy5_P#o8?w_W(O;-tXzs?Pfd(Q3Lj zmVY5FCnOWX9*e_5uJQ`5gTj_ zgSACid?%bE?2Apgix^cZFep*(FI=+EYNJtAK1~xFjn;ls8)#d**=DAuSi$l}v)}p#+rrMan$c9NvD~30Ak<$ab)qITkmwrRKEMcorJTPHeW$M(tyQ z^-Z>d#YSb1=?%86-E1_INmgNj5$#|d18i*vo6TyXRa;JKAbCrd!uCb6R99OB&towl~k>X1CZJ78}<>quPz_*4oUTCRxjrRyT5w_8b3_ zl@X1gG4ok{&nA^40Lw=vxA`|CNWUh{+|xNzrz4X|yBvN+r!>u{8m2oA$jz=}^Ht)} zj$xsgMqFEhVtX*X!@W-QufXs^-l6g=(s98@gb(0?M!8q}#9%ZS0pw>vKz>{yd{MRCvw}g#Bg(? z)%T}FTLPr>71)~=J+!%_> z#u{`mF&Flb#6G-|k#q#cE}6R#N%k%CV&GiD7&|uXNRz?U~AIfENewYX%Im}gPky; z-QZVd!I~BG_Uc$_66e&(%zKIE3JL z-*O$^fQ3Edd*fAsj=j`yctE813A_AtOq9v04y>19!qsQ+$asRchMa*Ex0~Xsxnxkq zeUCng_jH@9jzkcEkoQ`?E3K+sM>}uU0%HmV-Sq^iTCVztV23;a>IioN4M(ajOF=El z(5uSY&rFJcU(V^ZC#y{L3p%jdI*e)+?Vwet!CiON)C-Ply7{U5{W^ZoT+TYs(+cMA zZKx|D2gN?NOJJG+0Bq?WPG9U3@o$AoqCiO+u2a9$%1!|0pCtn@d6qhfipODJ!sALH zH6Q5eYQpSHSxGPWZSeX`h%~r?|HBBN+w-jdnkbku)9NO;Fl@o=RuTM3bO?f5AdEUg zbL z8=@=prVb(CTZpS{4!7_#fzz~I-x=6o>^hc_#;dnrEvg}X%er}#p2uZ#IicXp>2vl6 ztS4|nnp(kTp;Uo6km{FpL*>ge)|amnrh+itpSVPH7If*Ls@4Qv61FvcU`)X)!Gxxm zwp4>zaPk!)jeBZ&LUdblf{FX{7ppZ!`FR*c6Fq1QEMeEbG=)`P&9q@swZ%J|_prI- z#V5%li#yNV-))&YPhzl;s{H-w1P)J34e{$#wWshpe*cNc*GTEWmi~GVa6>}^7VJ){ z0go+T4Co!?j)e5y#qcK2?SKLg2x~u*ehorUuoP{c)y#RxVkq8ZUE5yP`4RRI8H+U| zx!E&hYVei1T<22P_aAib=rYY~Drcr{Zl z0meh_Rj`GiSA?SuifRShu2`Ye~33T|O4;=WxhZ+=MLkmi9fljSa3|y>33qI7K z1rJJ41s_b7$n?0y02?X)gR0E=jK z{Lgpkb5#NT|3plxxM#6{CN910biME_{u2?7Ci29$e~S>xaa71IKLJn&)@=+0pvf4=nAHR5kzz z8s$->#r@-JUjDru&16eInRF8mq0-(v$aF2{(Akd9Rcz=Vf!4!W^HXbT}MK}u(l25S|X;Z=; z?GV#qMx+Sm=cmo4Ia>VXn*6lSWyUiE)FcLl#)tZ`Xo*A|T7z`07-|g$GxfkKn_I27(VGro{GWkTye(7ddIM zXjQ*K;=a%=O_WwRZ=xJGQLpk5D$iv&7|Np>4d=Z?hsf?-YW{XI*;XWx+Qb_$`B{Ia z4lf(8^A_Qp$I^nf6*Hgp=kb2Or7pxIcX5cG;ER}Ja$}AxLF0#{`WS@CI)lb7k!)#8 z+!K;sgY?|TauOs$J0Af+@UVQ;`as$cfY(WIno9&aQ7RFZ3<#z|&~TNHj73y29-`X& zWVv{7_+JO&USA} zv!%aCnhR<~cnppHLTW-Z324OWb4cp8)ba6NbQomw1}DP6z`&p?5ek1ISi~Ent2>iP zHv!>LnslR|P?Jt%Lfl)TCG0cTilAAm%JY+BUl6mvMQ&C~#^T^NAY8ZR9 zWcmgnDD|k8UAtGQopzonaNfjuQ)Sl(Z|Zb9wYrYuJ$*jSOaWwt3W^So#sDA`o=GBs zPd~V?h+TN&RGaK#7^ZF5M%j$A*>+(U)Npt$3&g(gvbHe$Hk(V^uKQKit-!3Rv`cNQ z3%e|+wS&J zABItxmRVPYW#MP952HXT+gK{2uy0Efk4+017&tmS7Zm&a3IQq}!$pO!zKi&cwn@ML zVtS=X#DY#OatzXYTa0%ed8vQn?I?mvtw~c$-Ico0_uFg!)sH?B#1omLoCR`+lm|fIh;q|YaYBDw>ie(21mX}nwd(?pX(@f9xE>XFC$2A ziL3$OA~-)sC5#p{=?s2GroG_^8oxZ28?;S}Nsfa;lF31Hzo|9%lRuemK7J*p>uk|~ zs5d>=On6hK zjFfzWn=A7v;bW!%A~Is!jS*?;%5z&|@1>AFAoo>@d*{4~;+@Yiv|MR2FCEu9H1WlV zr04Sa97$3Tut%ikJM;EGkE8JKg!9REgPqo^vouxdkHnnh8XrB$3Q%dSnME{#)B+lI<2 zYST1~vvDqs%BoG%G>pT^IGP1okl2}gLR&*olr`x@$}4?Bdm_}<)31I&sGK)#={XL` zmLyw}n08C>tzrB)>-)(ghLLU7Xh35qL(o8Yjy)L+<4s#$7+IvnU3qF^a@6JSz4zWP zslTc6(|>RY3d5IVKztYh@nJ-RVRkxnnCKmP*S*>+)l&NgA$q6NF9^{mCVE8Yy3{49 zN9YkE^j>?fz2?i7>>hQ8gl)kI(iM?JsE_3s@iU5>>(rhLt6?DnLuN~1DPlof9zlP> za3SF*SXkF3ghem0rL02<#hRyee!#sIGdYcoU5`}NZIT9@U^PV-7ad|tdPPmdubWgF!*i4 z4YM%Ns<0JScdI__!zj(Vn}sj%!r*slA@yAu2vVO$-73?-Pupxb+LmSa`|$N`_~O{h z+Re=_4Yb(@=PwpUdX2w;U^Es0s4UXh484T?`_y9b=tO&_R&Jf>=uKQ}Gt?#m8c^TY z9|R;cUtM@Ux72A+SlIB;+<*+Getv3^rlP>b;ZD?}9~I^CaaoneL^TuL=;)Zx^Qj@p zy(#7Ak$RH^ZQ>31%lbkACCcM%`T4#53zE=t`i=Lg`A9H)E6QZ26RJCO|)(o}1dl`=p^AqNg!izAgD! z44lt&t1CF?!QzRV1h-(h5aZz92)Zy_oMQ_e3oN2Xb>hN zLS-rq(vu*L_XvkvwuB3yxqnL?4vieNc*D3eFy<8>Xg(pOM4?@Q%?0eNwJUI4Dh{=F z1uPD=_Ky%ZbNJa>ClrrbC(2i8#~`~!dhfmW-h1yKSMsnf=4Pj|Ysaf(J|+~8j|s)2 zvTIk_UL`Xz(H!F2O&wMnPep}|2yfCvcoWsoPS-D;L-(k?Lx;}wu1~cezknvg z#RcByByRi3ns&?W?Y(j<2=mdZDsF0VgHcvSg#?Zc&jm$=02R50q@8Vv8O!rG&hR~w znk2;z2`AZj!x(B4g9S!32w{CU(UDLLS`)*|?qYsq^7qVtb9xD-y{W_RYVr3TpVAMn zM$`>LR0=$d)CoL{)J|2PepFf~l~OGTQ6=y&QX}v%QbBkasStP=sSkJ+#Kz~Fv_a3jYd@( z#mOwo!Yu5nFw4p^j>h3|tSaMN*=FNVo3_!eE6X?)R$Uaw$|~%_Ds4kiS9WdLMqwO` zqhZ*#!7MGisLJAOD2uaYRdoqT7raTUL#YE{PNCaeCiB@2&1X9#nJxVuUxHS4&GhQB zcWY7(wR_Y))jl!7bw)U(lQn5SXPa>dKi-=BD(xU5w`JcT(^o?lsoUIk<;M3x;OE}w zXk~3QO`{3no6#SQhQoMI8C;I|9>vglB$AHiLD1~Mpo1xQha^xq*#AI3O z62oG{-V4GR_OlhiV&%KeL@V!AexhDCF;UBV9}%PgAb3nql3agG9lpeq8)Ft#RT{O? zF3Z}ijaFG(#knvG!>VngHd}@TjQFVJ)keyoRBC2G000310#gtGASgHx2nEE$@-dZI zSfT+G0032tdTLZko64k77Nj_eQp_M_j4?0+MWhJ&V7ZoDj{Bp`l0#xY_5HEc+83(uhIi#F`pn_9fQI=Ns!;R-R{Vob%>`6w* zTLxcMq|XMbGvqB64~2yws3M^j?v()=<(rXC7tSwb9%`vy!Sb*IjtO_&*bA@~m4Bx% zz5(XcmX?XIk~Yoi*(8mP+H7(_=!57VR_{Sg=>Rv{8odm{=T-q0hr`XuCBdFIqH5@i z&=dC@1r#BPF{xcB?p?=i`E1OxQ@{?(>0x2}=@fu;_Z-~(GT+1ks>lvh7Y&LZyKIgC zqIfv|XRfxpU|JyNxmrgJ*v`$WFuqTUZsew4;X#;8y7GL2#gM@Em03 zDaNvR*Xu2E8a$JDT=o4yDT8KoAUR!*F&2cXW;aECe3Sl5MJ-rxSOT@DD4h#i8 zA_K<}xRHx{)o90h_cn{Im~#7HHpy;RHCX+52-BKdoue5s6smdc2<5x~$5D)n~p2^ElTp`1+$ z1Y~t-121umhPT0)?KS2&CjhNebAmEbW>;g$UK|rf4F{=V5)T4ZJ;^xv0iD&zbL8|I zwwA4grppYPcyQwUB^;0F-NssY-;9f(;}?E+?!82)m*0THzNHW*b2wTr*y5b`7lj>Ta`i>Lum2(QNY(8sA8WUo`}n+{MY~bTaBEo#6#$F@u|XkVL2a zO#a*^>6CR*kO((94*N$#AB$7pCSu%{VlJq$Vo%SmoQA%2PA! ze>6e-Q*M)P6h|RFu`}bS-Iu#p`LA5iM}C!4P+%TXR5(g05wI(*9F_J?E|-ecf>J-! z8l=HOQN#lUMvUP}Ls3;*sxb+h5cfnlA!3ECMO)Jh-UXFTkm-k@RZuWosqP;4=n7G^ zZx5ut+$7RnSrX+GY3bfGSRggPe_+Zs8=CMla*Nq zbdB4)MV2i7!IE9LAq9VW9tdbzLM(_(@p&&T)kK)t;*E60TLz5FwT}g#{F(@`VteAV z(AzQf%&ZML+sf^T7R_X(o%H(HwR}6S=o1;n`m`|XVmIlwNfZ4u@DZQ(CtC1WwJ;pa}Qa# z@UZZ$t}8r)WE%B7bPaPV?g}gRm)3dxhHU0xCSo37+v0pP zk#G0T3p`_a>p*MIgSgcnJQxJ$QR7W^`Z^!t2xju*i1B7CRVf*Hy7Yd?zdQdkxr(?0 zZqOj@CSgL{OI8{1xUjfBrRuhqh~`>0=Mv?c{X(+^e&tzwb}itucwB_UnUl9X<;dQ8WV5UR(-r|9ivplt+|g|8q2RIkKu*B2SXn(7d4@AiB;0n$k0y%5Xh^oS6)i5lOT)i)X&vVgqbeqcFx3^K6vLitvyyL@)V!ssr3+1=`|L z+VIhKO^C=gXzrp|XIWwiN(9Gm)!C|G?;+{ldT&j3N7!^ zA+3>Z#*9nk&j={_RS|i2a%3t5cq#P?aM92=O18P{S9`*}4c*VW@}a8fp}|B6&})+K z)lKlFUyuOa$LtfD^SPI#3$|r;tC@hs3Q^~}Fbd8QE07bhxDOB``X$}pLvk#AXSfu< z++IJjFvs(099hiOH4j1TDGRxE_n=ECqrrOE<1SyYN)9cy2LYNYDG+zk=TT{^*BKy#E%P?WW)xuVFi4%MWRFieq{ykCEN z6s7gbwAxv?wg#DgS(F0wU(}QMO7D%hd{VG?a%_9vQO$hVWtJS>phNslkc|o5k{d8b zUbky#;#L4Vl3Mf{Wk;(Gk4$mU)54Lo5p4Ay?m2aI#k$rR zC&zHeDVAi*Plc=_Nsh(H7O1B3^ot$NG+u{J;*?2c(7l$SuDu}l@Wk)qZh@CdvqUd2 z!n+b!PMz9V)3WW~x%cW5U3hmUhZmt}wgx}nkp0^wbXgr3tX=!;{ni zj@Acto^bUSqxJG+&S%kf1foj2S)={dZSJpnA+p4k!P~!XyLv?r`0HFyRZHWD_=p9B zScEfOA9u_lPEnFX{5!*OYXSN|StTMyYrUVB5tE*7imYsr$YxiTani}?s z;^)ERtU3Uj$Vpd3vq?OqD+mSg{4?2t;i23KxSIIuD!H6dS<#Vyo>%3fVwk)oCi1Ir z`+kofRXJIB>DwxR=O!2Cp8%|7p-Wcqx&W88Y4#Ty6lBG&w(x^2S?c(`AoH0B?D?qr z5(@5~jbx#FnV?8KoQE1}#o%|92`49D;6~SPN-TYc?l&3J*<#aOk*bk@BO)I1jDDf~ zqjv1-l?P zb5o4mB4}AHG^Wtkvc0Q6NPVHR-zI^{ORN4k?pcIw2N$`B5Ckoks+eO2>O>Vj)s}cb z_;wSY zCQz%l2-3zyykIq&uED`qz|ijck#}19JIlx7RudfQ?pL@pLF%unU~VGr{DmaZmG)RioguNZzpVVUDX+ zv;&b09!{1XyL?;j!&kNuZoxA`*tOS4tVqV8wtR{}O;Bm^SbFKHJ^nnXkh;m2;_c!W zDRCjbfnaiP66qG{G8lf1bl$^-r3sT247mNGwfDED&rXxP5s({9lVs63ncEmbipB5r zL=aPW?s7iWEA19SFVmbmu<>~r`Gr8p=hE_21v)0fQ&E0|}@aM)-yx?6N?0?=_55JPpZ2B6&@hp9RZm z_HoeFzFcqE9rT-oLN5Nk>how&<-;XO84TRs82K~|1T=BwYcdo(+?)M%J+ldjB>v#c zA>hwl#vJjVgf*^i`k1vbti3nC8R@`dw;t!~23geY_CoMo`WOa$9U$lUUKCv}YEwC* z^-?V)OJYw0|ee*MN!grfSsLj+Q zDbq8Sns(|vQH(}uW3Bf*%&DSKZaH7ZKOeNB1g1O|&NlQF)nl2nLmO|ZzEZW?TY-gy z@Kpw>#maYrUQX3LlWGYiO}YaQzAgb)eycT-ASE|9$XH-yjWyyhInZ$fa2{)dPw7B; zMnjIlBuf-AVv&WYY;s6s;*-SdapdMgQR~$bY%PjirMAd`RkfkFyDLu^M`4l?8>QNx2NxQ2hbwz3tGuFF17& z9g4<9%rVhDDV&JG4d0z>AQmLo9ID)`pn;cnwD9UE85Vl;#Q%}~Q*s=g)^ zBOr@~uDd1#w_EEJ3;^(HpOtsJFD_9%IS60V>xnf7!>tgwDoAzVZ6T_yW!AGhWlL5> zsiFPbNtazV^%NwH3?gUZg3J)z=V@)@la>*Yt!(S^6ih)-4N=<;*Ta*T8XlQGl_v8P z7jY>&wRb87X-Ga!ds@gIOf{g8!|v<_m5s9 zu%!0j0R>vvVzzPpTZVI|pYjI&cj?NN5_+Mt367YB5`nrhJmUrV$6;~`^Vn=3V0O%t znj%q&5Q&$yxm_AYUA3VIyR1{{_5gB}e+%jref=81of->2OF@YfqZwZiUR%ZYs-yIU~+!Q0|_LDWDd$ltSr7F&eiVB-~ zTvI^mb#SJ+95LfhqV#T&XuPS_z|M=lej$MwF#w=`eMm~RFF3?60aHbof8w$t88rH2 z9MAFkAqfU2S>j9eCxTW5#F0eiK^?klf!%*9%3(;B%V^-A{R`OK5qTaywtsSAVV}Ar zkwpXE-HF78HcJm7u?a13*1>6ZBs7y6Os!BOae@i>V1H0hg32@tixVa{#3lr1jJuvN zHE6~YmDvFhNXSgeb6%PaUz%*j`4&`o=Xy=%Z1d6%@UVzCv(AAbxFqF{-yv3z_ZzJs zpmOKY=&EmwOri%Aj2Y{{ZKTe~^bgS4SrdSoQq$2IO%V^#1Oz>zu2kU)wc&fX3o-%<9fqxrCtI|OQiX`4M z%|hzIsk~_zXT!4;d%|FHc-rvpF6=Mxf#*wX6@(>d0RupdnlSS+kZ(KAmPatWnvgf zj1`=fkWI2RYp`#4y zrb2N&O*x+s0p0TqlZiq~XRAy>f{yzed5v^)H**8EUjU&Ae=?cH+8I+0c7F#&9;YZg z|KF>4sJzue#wEz*alU~^Xrw0vA|2<}S}v0CIO@pGSoR!L7VX5QuqG(&p{y#zO`kG5 zns0fd9QoO@($#XY;2fRKke3m+9OKU`frZgh;0qJOyGF&RzvlUi&Ro-VkW!dzM~_jQ zr{qv_2m;3F@dkvT3~U_)lWM}Pw&p+ey0QgXO=zA>vfYg>0gLGY*wi>$Z7Mc2)DUP4 z?BS2$CvB1o<@#j9S-aDUJu%P0?cSM;Jdwu{ZS{=Dw7j6q0&BTk3d*J`1J=*L85-%N z3@xr^Mt{(uy04JIc6&>x(pe&zAu&m9vTqXMVa4G*QE9QU8dI3D2);wOrX*G!ZFR+m z%beZBHdiKt)McPNk9i5T?0TICncJ3Lo#~Fz$TQctMlhT4`h*v(93GXe#bW72stutP z-#Ae6-RRebQQvQrO!?Md{8CHqaAb{AfC141sv*|c0CGeSjm7guSJqY{@g(@65_2|= zpR_Pi0z)6cCs03Wb^}xC-jmc~&EwARwbhz2&RitUc^!z7y$n(Jo*g;t1fYCM7##ZB zqTf(P#cm~btJyQ8r}Xi=c%w`m6b~Yn4qQorn{x_5iF9)EDdyZ-;VhbIy5kEQC{z** zhME2NzKC@7t(E1hmDQ$xQ{a!`dAOoO;l6rVKg!W!MY=}GTtOS3!$9==LW(e^Sdj09 zBXuRCcdM&6FNO1k`U&9`Ydb6Sg+DSPNvhlpiBrA z5$>NEZnfbxyAYZF=>M?dcp{eaIKGhJ3toNGyq^43fV9%zLV5ljurlap0DlN*tF0lr z0LUt;O%(8G4j^jjai2EK*CWmU`H9`OpmFh30&)q6?!nfVtwN8$hBgV_d(# zBvj%zJB%X$UqGP0x7>Dd+8D#;ryKyNn8sr=RPBPvNO&~c>gauVq)G*cm?CM8(Z&BD zT}T1Q|2Fp&p;K>d5+^ejzoDw`itvI6hf|)7PmPfu3QH9gP+bqG3B9RM+bOfO62+$+ zF9jBdp}1rvQ&HR|fF01E^9bI0mz=AMBSMceAnF-VoyUtHMJ--11l%QsMDB=N2B3u{ zFn}8QUA$X?+nu)o7mtHVzfg)<<#edIot%n85~Vsvk58WjZ92DZUX6zbvbY z%M%RUHG;rkVZF51Y78s5H|Os2#;hPA%ST$aa&0tk4HL+i+ISHQfQ2^9Yun08TsPDC##m59YH^+twVtFgcF%)p&~K3Ou;`$ z7g;N4;_Pqb;4nKwr_q7ZYXD+CJy=fz=V{K8*%h){@xpTkMi|C3;)QKq2qNyF_6m1i zjOFfiw~lZ_3ZZ6va*(j{XsmenVQ^9yA&@Cs3q53pF})UgfW^oMXDyu!@VvZJOcahe z=fu;;ENCeN+lhv_$+OC_g3R+^A7=XDJ zmYNvm@l+$m|EcK4`@mw3Y0=k*~I^(Fehx;FhG#jEksfrY!)Dgqi!4(-0bhta(LdlKKEY}71U6{jn|fRQ-^;@GQdB? zPh%N7NC?hbhl-un2JkanzP{#!=McIdR#`^T@H#Mtfue%AcUg#TtlF&AiBO@!si&LJ z-U)7qd1C{0Ob~2qnE4R1DOq>m9l~d5-1iL!5!aaa|sX}2-B#&1-OmVkXNu5^-ef)$gTXT@x5Z>p=n<4y;UDYH-qKK*NaT-m)z;xdhR4;; zLA(raH7O%#UB(7IC5JnECW?b-;rmoF9Q5&zfKW_!=R9f>fI_&m?q~WP2vcK z|F}1pk^o9(?-FJfXk&wE_h_rGLhQVv>X+>eJ~e4g>{iwG^n`g=@xvArP|V~6)Z8HO zKNPF9XFQoC`DcJw?az+M!?60}gfu@~xZUBkTExeJLh5Vrc+&+@4~Nq>06%56mQ-mCT}zEdr5b+UaE3z;BmyeD+Ioh_}-o) z-;JSI*X1AMV}O;Tb{JX%6s*5jtb`k>rab(97y4SC012(v8sj<7yr$~S1ceu5q>aN| zQE-9`Q8so^QQ+ej|6I?l0}#lMs6At_op6Y8;gpjG{${Ab%W?wz!Xu96nG)v?x&nr2 z)gHl{$maGh`Eiptgh@VRu#-mcF&r&GPBER_(&l9GVu^E$4?c+U{kkvO0b!OU?9DC5 zN+0w(xdO9I#JI|WQt#bY&-FpZwt*;J&!K4%cqIx6jTZ?2z{#+5p8kmSd<#6ED?$=P zTupXpxo0%d#RN*n1cMbKrb3}H``}M%K}FRYB!38`G0Z$|5BxVFMrBL|U1$(`&AMzw zRM!X?44_U71BSJ6!RRM(ZRN5?9`WKdx;wK#*EL3^`~>}X=S+)_^J~nM@z=BDmJKzA zMYnRtQaBa7oT{k?6L^4Qm~xv>m%6hdP&7)O14^YUTI8&>w-Rb#wT&-&T*ZSK(jmo! zF7vPf#b!N~NqIT(KI*F8MVgfOSD~ZD5`edFhp`fyla+w+42&7lt){a=T5RzIeej1r zNO@AH7GWfaM3rY=SqXJ1YfQLjFV^SDHv$ie_`cfw{f=}T;MC(z#k6-Z+A0}7%i3N| zYW)s`{A()5whIziEBo}83~^{j{;7`xx$8}MdwR2m^u{#{nO6N;2VOGq#FIe?ZNyLCflTvDu1YmH3> zr=X<_ZD%|&$jG^;D%+J2Ut^+l9Q3aM7f_*roEt_1L_(W*Z?Sez=tbg zH_(s`$-bbNKr|~|FfT`f_6_4|86~6yJ3BrL7e2Dx1`@EC_kSpeoJxBeS>=^RTS5gw zy3Un>C>lU0=j;itEtIQpaC@j96gF^nRz*&*lcf;{1P&$;lq|wh+@{{c`Oy(bO~$2IBf-~LTFwbvNwU*4y~VBfqGAAaW{Bw<=YF=ZYSuHJ^4e~Bg%t5 zh8Dq%tSO_BU*vF7wmeHyFuVDxeV~Z>0RKyS0-RO=3Wn?$JpgNJ+nlSaud1r5sw%z_ z15d>(v=!O4s+U?y=qq@(;+IuxpYS$G!n2ZHbLsyh)x3lOn*m+{ zo2r5gP$$AtvO!fk6=a|wLnW&^B~ho^sFkd0sMG=`I1(7OZX{e-a4;?^g+xUGwQ@8t zDra+nQ8^V4CLtGy%se6>K0HQR;z+27V3ARQfk4H@1BNCjvhctJYIczYWMqR8po&4ONorm zo+E`9Q;X+5xogF_n48Y*@_K5)#`0rd^Wug@?AyBf`>`3H{^hV|_3QVt(QC?muwiuS znv-t5Z|AUixyE{(i!Qslj!U^g>|Ol%P|nzI`o;7$c*$+YC_{@UjnLiBNN2aSV3ZQ0 zvMuV@MWf}S?CbfWE#np6pL>>cFgmZpV%)~Q&D=Orj6Ulxj{JOe#GKCOmd5yvLQ1_U zlvuO-yx<_w%VR@9JeP>)10p>tWG-Y^{TR!)m_~j->29Uc1%mj{40E|I30YuBWH^wB z=kh@USs=>?%^<*lAUr-E5~69MDw}GWs7eG8O;e=N(92^rP^dB#g{qQO(xf^QG)Pp2 z17gDi;&A}7kWdNGgcP9@ppORu8Hn6KBNHS8lmfCq77EGB!y17ASv-~m@kD?unVj(U zy1l#S-kNjH-@e?VEdTVZXzN>oz(+Z*3oTb3bhD{XM_k-u7OCftp}w&`^^Lmdp}yICWz{ zjZnd{h+t7S85IdgK&Tvz3knDq4mva>R77|{Eh!S=0BsNpWwMb7N>zzKDoR9wqNt>* zovKE4nljXcsz78i5(Ubz@bREvnPA~TA|X!&ON!AYV^L9tnk<+YT%QYKxx$4EL&2fI zwEgAXzC4()xlB}KV0gDN861d#gbEC1AsBivVFOWcC@`1_r+~p+7(f#i5D3t~fGS+b zpbLryO^8E?14J!+G6zuw8K_GB+uXW0ZvPr``#Z<|hr7@58^hnX&ifvG*j{{5M#e^? zc3)($g9?g_ij78{z}VCa2{l7wqGo7JRL+D%trr;tXlxu$?pqbFFrdC-kS#qU_$EpJV#V7>)cN+lxLf3iDJDPyJ-_qh{GhgjyXPHS4Iga149s)Z_RR!M3|B_XLHA=UG#)Py>qhSZRd3^iF$644+cYLGcJ zm_(U_B|?hG93~$kBT&W?$pBao(I9hZ0A&DJfB_m{!PJ>>Y*0FvOcZq{4aY_VQc(e9 zs0jt?ltdAhjY&mKFi)+SNBxY4!(8M%lOKcHzSQ7&kWbZNAaBwdNNeY%e-9 zxBGL3{{H=ayMxb=+udJ-(5-9i7`k=L{2hB6bj{J*dkp^{#^+|}8(rMk_?_9`H-z7u zYp(Ho+nU?0dt`6UMSj=(we|slhp0g&VM~v;O#pJr zn}eH(tdm%~3Q>tvLa#Anb)j@jMV^?!Y=$ruFN8D=l~Bu4#!J0_NIZedykmLdMvo?HhR1! zB42>K3aR;v9ndcF))7@pU;$<2O>)O3v`sf{**moq#!hsf1Yi?UOHdsO077m=j1t9< zGf2IZXUI7sk)fus>qgKJfLz+lT2mRC7y?d{>Cj>*rSpQcm%ebkkBS1kw1b-S7O@~* zS!)=L_~&SUZp28Xfro}Hvktk!ToOf`tso49NE@4cb&cL$p7B=V5DifDZ>h^j9}ORB z1f|g%PD7|H9)(G;Eq{ZQ|MBI2*+6cjSk1Q5l*od2A7TzAH*k{f@;>;0H&Yb9-t=k0*E^Yox&Xq*B31S2REuk$*HW zhi!=i=-e{c<%lfOmX8T1X(ErjgseV-*E{kPH_Tzd8irv08k>B^IQ<+jnwaW6Aa)R8 zzW1Pos7V%OeLnwYf4vl;A|;%^bfp~gIPH#}yt)Mqe;c@NZ?PwD$C(rd8He$cW6Eif z>ew8MZZFS<1qrRYgQCV+yUhnp@7qbfA4P|O#D~Zw$YUd&>1K8?ynA*p%z&7OdOnly zSrg5LWiSC3==fnl{#|afP&Y=cHVxr*q14dWDyzjzp?jf%=i#DN2Vg#sb=mw$EKRS? zrjC)3O83Wb5!Hv#A)Pp^B!{en@+vc#b7W+rgG6%A$e~t)mliTL^7ezGwKr3YlJ)I( zo@qZlY6+-1BoraQFIX{?`pEI;WzUEx2UnZhsRX0oeMYIb5f|XvGl+lhxF~KY?-MzF zhQzm!qs5ewmmPyEbFX9yv53{PNUt;Em$17^Oz7`QI)A zlvikiPZu#eT2z#N6yk+oIbw?>$;&CX-^jw=EoJ30S#sbIq8N?RDpz!jw5sFUGe~@A zFyLvtEOZ}S)J?UAA!^kGCjkSrbaa3`+mpy`#K`L4Kx$bLT&x#>EDNYGin&al05*R$ zZw$9rWX;WrVferRYx&*0tonl_hg}Ek=tM3We?iqB&VCBxiuJ0|#nTGZ!XYPsz%(4) zrFa8v;FhJXlZ8bmr*IvdOazWTi|A85w+YC(l1%Y&tnFdF7;fBn_>-x9GCyz>Gy*EM z)mKIks50CfFf)}iGb=kQc4j6un=yP9(+b2ZE-^OR`t3(jWS8Uj_LyhZZ^U!>(O%l# zvBCT%a*OPhD`tk+TMUnaVis(N6SxH|1v>>>vt7%yyk$x+j_ZbP*wvTa_{DZ(8q-A^$kTX;iiNy$8{WsIs4(dS&U+qawVKGc5C%4Wct8G|Gqd0dYPWv>Qb#%Mlz4>OkZ8TTweVIh6)?!+( z%}Vul*v%f7ah;b{&)S>ek}Y*w^-7p4Wf#kr%b90whusWooQJceB~o@V4wJf#(%N|$ z$!evnWmwybQjKf8-n(I~`*t--?Y27v<0FRo5hDbH1bHfk6$-)FY(hXFBs>+vf)RqT z*?fdxV4oPF5R7x?1bJe7N-{l@4`_bB3F0c5@1)l!DwG;)-!(9$vjS zrm?-*?Y(AN-Pjc)1hNq`rCiH0O{pldO3!X~Q|S{Bgg`_tA&kxDBL)bobQwWNV01Vg z5Xc#ALL02K5ltcb5Pf{?)#jttjR=jEm6KJbY(6?1Q;(_5hsfM1-Z@Q8j<1R#`I9Vj zd^ul+lTX7s|NqPVES=+DG*bCiY?N@U{EQnbZ!)p5@~P11RJd>DQ~4E71*Q8`-V}oW zW^gGeB_d@3y-hhp+yr(y$TyQKRHdQGBKuHA?=Q!PO{v zmCwY63Jn@xLj|SupNTU`sqvY-5*sF^U-?W*N~RL;`_F{LnYuTfe5MnW?pID~*f2rq zUJ6b{g=_f$38j0}Nl6Qb(mjXLeW_%I3ip|G|E+Kx>bV(nlHBDvXPv)_@k&y>l9Z2O zanr_sO3AZg%9nqZzVRj;3B_c_dnez2D<f0Ps{Of8>h!=yVYc~gdyDb>uI9+U}!L@cM4^E5~E|DU_))rVv1&2TjN zlfOQ-_m$rKe-eZ!BB#^wm>|oCnBWM8#{@?t9MOnV!fwQ~xx%^eF)3nm0rYK6BqB9>ybz-gEI;4?BgiL! z+Hmp$22di06>c4F+<*dv=tp=_hEf#1LfXUhjz|2)w#-&AorA>hm4WRN-H zbX@!j$nk(K8l6h{&H0MP^#A{*=Oq}w6asmf@@3`u9%=liSZBBLp*HKa`yZ0(y%d<=a83BoisPKHi(5MB=kDRF&P=s778WU&a0fj=Fmtb=dct9jH zI=zqkXZR*jW66o*0m<-yT6{uWM$XiW&*#(GFTNJxglrFJ1M4mG^P^DXJX>y zXyTbnVE8UOvOL*a(av~7{ zopR2e&Tnwk!U;K{J|U+U0cX?+0Y#=ARmTQD8{~kl95FPklb5U2n37VJCN)q@AJ%Yb z+kk8~+7|B1d9D2F&hx%^%Q|ZscFb>v)vS_bsj@oDIOna}&1TtddDF6;HSbx=*Yd66 zZErMZIA2^h*ShX{%dQrFT&yp@TIZW`twl`pwqfG!cz03EIuyf@Z+z35h_wyNuH0|P zKSE?eIvx-Sc0iD1 zy)a5SW+}ZH!~{Vo@YLaq?9jn-0)dbE{K)Tk9i@t^a?TzU2=t6T7s$^o^O-yxX2;V3 zfgs3o;-ExO;0fHJqr-6lf=}`!Bvg?6$m#NeBqSPfLQtO;kY@!9mEtEwvoQfc&RBM- zmgUZ7TFKK&n0A+=x$`zssdO>cd0q*77-#O&NLkJtXDP{gTgCFF)ax*;(G9D2^E?uU zNhNOc>i2bY%N4sN%=@;FWHEa&#*wnDRxaykrd&z8xsr1BEbU15(>5*JZo~C*T=$Vm zn1*$w4}Ue6KKywaC3&?Ykw_l?I!*Jq%60k6u&ta&q87U(EyGvK9M)y^(@NaM*jBSH z=UYjZBY7l>aT(h%-n{#5c;hP8Wp(2)jADw_Qc0G`gtX!;yLQ_!N-3o@tNNwGG^UAM z#Hff-N-4iR%eRL1!d1K(#`30FQyPN0$W4ABGGHf+S$U2Ly0FS9La-A9#g|b0i^$S0 zz%N&v{6<>Q4Q-9V@kJvF{Kw%dSR-yxW#KzlA7KdVj&O7 zh~xw}pA(7%Q6S6d1ad+kF+eU(j1Wi+5SHz2O7dPCZ$s(5A?M4wM$B}4~Btxr@6m%eG4IhCS_K%Hix? z%9TnLE0ON^RgcTQuk$i?ZRIrjX}QB6ws~2WDaq^b$Jr8z+dA#TzROu$qFc^L-qz7e zJ-b$t0}wz=AH z(-@1mYc>mXZ`r1=4s&)du37E8*4o9bZ++v~Ml04G_iHzPvCY_qlxJ+aZWdNbLCg*Z z1)jiDC-fvABKfFvpR)2LlTTT}@g}D3O(mpHS;1lQB+f+ROC~Dab2L&+xHo;K4&_xi z8r_XImCPvd{xhN22!Z!AO1vmO8XV6DE?oX47KFy*fY~zWLs;^h>E!deH3rMJy~KC=e9Yjp|chB%+H`K@i03 ze6!34J027{l143}5htX3EOY!x6Mm{J!{@5f{M86!eo6kPMm@vdkbcoXtoivbi=R+|2c&Gh>c+j9TabWxx;! zr^9h^k>JI0+9VHwTvzDgtWqo0$ysAR$CW8|7<25ZHN>@ETdYLlZf13c?YudqR`=d}?^F}} zrfJt^XPUKYD-QL&Hnh@8Ns$CW5*AmDD=lNDUQWHr!S~5Y7;;RRCb{`0V@j{aXIhbB zWy2S5jBWgG7T*wSSeSF?H@xA_eB+oV@*ZkpXf+*L4D-sdZY_2@2G$f$*k z)4RNQ5U2x0fu~dFLuNP)lu7F3x!!|n0lf@(>a;wHtH$%Xt~akIHF^E@*K@KgfoeSY zsrU64hlX|jKdUUs*C$t*omH|}rv6Q8&J_^ z+I(!&1LwG*Nr7lUWYh^SeoX?7u~Yln^wXC&0(BLki~ zo=zvFIz5{Xjb^#1#{D!pHJVSOOI8`0zFC@r!+sG)HI^zWXu#g)T~`<{v=;<)tLGZDWg-*&6pRF z$E3n9UB*q0F{x0CA`dz1wd#M5FCwe_SEbGoM!&#(?=h^vP4@nB%kJe3vgU@csS>u?eu2*+6!k)S6XS-GNyayS<4~5+v*K(oNxB(-ml)V zuA65V(@w>_gOC}4Bw64OXSkITI+{-wDY`W0?2OMZPu1S{UL`3^~8py+q8zOw&z8jCUA{VaG&FW0-1M#w+I=@9Sc> zhpaN^oGGQ0W|_F@J!eWOrCBD5y=$#?mQk8zqL^h_MyV)@qA2E^^SxQ7HKkdWGo@L! zZIoVF&pPciq?%q$HH_sAvlwSKt90ADsixayH@#uD;d(b(DdiikTV}1@duw`as9{bu z-Ka)srFo;YQ;^>$C&w>4IX)LjmXL486Y&;AK<)K10_WY71PQ0Ukw{3C^tMLAu{0SV>01B8ZV|Mg+?IgF;6}n$m0Qd z+rv22G))Ub8iu&zjzz6Pg+f9hA*fIY%X>CB;_%d1`tIL!Vd-D#8h@Ij2@2;^BgrXy zsoY=ghvGq@&wIcZ`4JM4C1Q#D#bTB9TBH9jyNJC9nNT)Irz9DA_9V-$VtQm zMMOAdCr7I3CWhArQ*DDO#VfLwe|92RhV z?e?$PU#y2>nR-@flKgyChc%{DN=$a>5Ve3uD+@I(E7Y{AP}9;v%?zq&#h?n*4{BOA zctPvbgqju>YFbtFXyKrW78W%vEL_pzVMQwiH7yj>w1&{5MT8!$7u2+DP}4F(k5&ML(W*fkZ195C zNDFY#T7e5%Cl2W8pjb}d;c!rw4{BPem0szTt!-^ku%52UjL^MKyEmC|Spuy>kKA?^1!daY!@v!TiYj!a#^N@Fa>D}t>HOrS~no^20 zn{(AF*VNjQr>ImGb%`S9Dl`KC000000Mim+P)JN94#xu0K$G-DM*|c90zgziEF2yd z6dDv57#12B5{3hVaakA=kHcYM5XiD94UG8j^I_zKIUX#kD|zHJ396!B zeu#T`Nkw0j_A9P#15go*jUQmw*#wywf*S)5*1pr7P?K6%d+n8bbB*-zVBuW0fzTxQ zAaCrV3r*w!Q4=w!{azelvLNrupoUzs4a*&=q&J?T=4;js zw3~;5F9E4`mJaDD@?|uBCWslROU{2xK9$C^=QcSr&2&0dz@UK2jtRnfm}Va z0-ghLyw{S`UF>CS#5OL+tU)byW2t8LejayO`XW9mNR|X)R-`O%$4zD%gYQ%msnYLU z9BsIz6IR5$QUNA95QOxfGKJun5gMROO3njE1(D7(c@RB3hOY8jIoPc83Z})pyJWxn4cK|0Lyvtj(o^lH>Rg zOe%Sh^7~LF-2Hu+6rATie5Ab*_ssF?$&8p#0JkKc55Bu*h&gr}f&^%$KDEdnXm{=& z#WI8BLxE%{s@+8T2gbDX56mq9(q1lA2-kFg1rY;6{2-ix6KG{5%BOt;9-uaMOLFIF z*cg+$FnHRG@W+OCUxWuRfLcr*kW@SPf5+@1UlTU71iE)uVdk3Ye~X3afhHF=P)nme z560srBjHG*)Wd1!aAQvLxX1Es@?bK*IsNdMeT|MjH~_`%D|}4ThwIImf}njAVh9EL z!76}mZD>n8DUdG>pLNC2s1Fgf+D$1@r7C2hh{xa!p@XK>TF40gVKoBs9$=H^4#~+N zc@YhQ%MnLJL#WoPeRpTehy-D?`&2p|0{vqPaWiMWOM)x@IbCPOSybI+8>Q($4FJ4LaeP8+Ya0SUf4Nh?d_RpyfO~#Oe{mIywy10i`S;(`Z5W zk+uDA49LJ$h|qvZCJlE@C~8_!#WOHW;XO+HW1xuL-#^Uk6TLz>Y!1o*ugH~#xh!zv zJwbg?q$RhkhwLapUAj4a-!+@rfN}Bm|3kQ1RBj27Ou5>Xix-?;ndJYt=4y)*Kh{z2 zLBmxEyxk^P9^`p?yHFh0w>kvQ!Tu%SGX|ro$oS^_|_VG(z&D{MEdB$I%59dzgGiSG+7_?*z0(3 z;aEl+uVD0cOWi}GVR#NZFG9XVl8VNmir#6(%oD6k*6KKdgD<(fnhm9zSnqPJA1aA) zQmsKbtX?PASyWGBE|C#hA)L3FE44kw@vao=O}Gm$ft(lX9`wtvN}#U*ISN*&I3{@- zvM3`MpNyG=$`I1w06S#ab$R!7n;i-t22MjzJ)#04jq<_X`#s7=8<3XnZ`& zRw3bD?yO9W0R^}~WN2tDYIN?A&oKL!M_uD+$?h6?utLlN#&P8RyIZ3i9~s4k6pGlQPVr^-+>W{46a7?3&*u0Sq8jkj=UFsPTnSiA9D>N#N zcm>JLlT!$Ju_{BBc_s0iUz>8XCD++z2x|9nuq1TSNEe=LYJw8RKhY0wdiA7| zZ-j_G5sPGg8eHJ|smYGxW5*S>p9PhBtPtIX1FBDMzNcJ{-0R}wM&J1uINp)`p>i^k zyP}6(D1#7w@B=t7j#VImidZbczdZ!dF2hM`5ULQ=-31TqzlxBZN@Zo|Z{OQ;fgZ$n zpf{Xb=Z9|{pk?bx;M+&vM=brTI057y^#Gti;6OKQ=NEUclUNR<_%TPQeTaM;VGv*f z5m}j$d?I@gbCAC2^tDwddY6D25E!<};FBhqVv~Kvqfs1i!w;X_x2u-!d){v9r>8o; z#A7PRxfaSC{>7cEDx#f<1B(O|#Pf)&}DA$!>-i}P#)05Aw0uPV_M&ip|WsP9T&a2XfeQO&Pu zWcYzZt-0w#{OKQx)B7N_f6l%Cdkx?-P%hY8_w-51pm}&Z4br`Qo^4&{x||qfk(_9% zfJ-7p{gGmd)@>jQBLQC|2Lmx?b>KP%<54)rhmtshp~wD*<3@J3&7*SvG>q(4|lNuX-w;BLfnF#SmD;l!KpmhlW_%ajA{+#rXMME4o zwe*cc>m%17$^(nzqJPDqe=fc7Nof$}(@8Gesr1D3?hu5=f}D7A6@BK3}J34Uq|se8#b1{IgtH8{qdu?KfVB7~5btQL}W)h~H>f~mK{MklW1 z0VfJy0nFJIa<3#_WWeWaX~J4^ecdGi#@|i3h*8$_ZU*V2%=dA#uj%IRopBEBfF8Zj zF+uy<)#JY}j!_AAGtylp2NA+`m)x^UVp}!D?FnmSv7b}xuSVa4 z|Li9-c6g+og%6xhaCZ}H$r6r3Pl?^}-$R*$vyI{bktzF(XtF$@5*&n#;8H*}-i{uo zzg|X^LFS(xxV^2E2=ss|@%uiFurmY%#ENq|WFcB=AP5lewzCB2J3N7vAAqh{w%2OH zNQq3(o`iL}bPzI%e|Yg1at@d_0QcI0DrY7FT6Znwi)++T@vq;*yObHx%gu3p4&uC~ zRAMAh!_IqMTG?G2<=56WZuw_=veMyMb!@DFnB?T#8D_yEXo=^bIHX1FD_3ge1=Kj5 zp2&*HkOZ7v6+4zPOQ7&|Av2#)a(W#a;xQ1-~A;?VH8Pa28Z@ z#yj4mh=`;!C%-gud_rzYIC$Jl6}1^@8h%zXj?jTeQa7?+NkSSZC79h+^zdj=x0{+3 zCTXa!bt=!Usj=VpmfXjWo8s}B0>rMgY)8ipV;q`_SMjt;I9Tw7gKX4-<-juxgBwMO0|ua#)c=($gWlXQ>Hf>D3O!FXIE z@oht-E3!G#!pyJ`q5*^DHkLS1$qzs{;2*$id*-)Hra!cAm2YeJV1{L2K>KB4mTr+&SrdB;uj0C zg%D0g`+hhDxPQzPBAz{`j+F%X8Xgl1Ly_t;l)uMh7$%!X#IJ24ZhA-v3=kdg1CHQJY?GRgoKAV}hlEl8M&;3X)7M9$BvnUjZ`7=@w zfX%BYB`Zo1=P7>W1mC2i#=o5ewxg5X`rpJR^2@~;FMK0azc54Xz9XQtlX6_crwK!?{=h`)& zyyPh_lQemuoxE0EPhed^@vr6-ZVtWwC!>Zw+f9?SGzpH4QwrNU8s zuuiUAYyA>jI;9>!_2ay zf0skv>doj4exPHOz-h4 zvB>nVq}1YW44{Zo=USeCOS#2nU^Eat0uNQ_HrZpb;9ydQD%8^rn3Z+Rk+_Q7F1ZDS?H)oTGhwJ zh4Zhd1}O`exBe~6Z!3VSQ->JM*fypXIxt84K7I6p9x)}H*rHx0aO17C1Y9DT z!qVB2qk=FEV_+2V9#XU{`B?J(BS%=GoA;I|i674iBfzK92vX>E?cOWSYK@ZqX|386 zSrTuiXj1c#$e3_Y%R$a22z4u43f;;QHMg>X$*t^eqd&$}n1M42yXe zyVSXTK2+vFZ~}&H1P3^?Z0qz-2IafIUbJ`r4IxP2Tgy{AU9Eehv525Al8@>k7Q-vH z%doc?Me4+k;NGJ=rf*rLPX>B=o_Jjn!e0;eb_KD*2#d4{XFrVaz%l_{|He`qSW2&v z5|4g2cZu2V7yK`#xYWY^DUqd-L(D{b|DERu@wMQ4X8z&{SywnbGo~C5|SB zFUs%j3Sc4uqxI6M3^@2kDUbmX(d~n?%wMlNm3x?o!1n*k1|J8k&DE)f~ zr7=XLb0LInHK44hY*;uZ#{w_#h(kfIxe)9Hd+v{9u6~CR5i`0DJ=8#PB7hf*w2L(k z4f`(87svZObhyo2RIn0KD%chi!lRLCC z*%szcZS4y)M=#8RwCdyKq?M(ntmP`y~Pdwvvj*=EiPD$Hc z#yGjXYqe=k357*r$V4?1_6`c)XG39$nfLGdd=iL{pkGYYH|m-K!!=?U(f=|>%j?M^ z7P-aG&4AR1arDLq8E?J0uaQvb7RuQqC#dfnoc|$lc$Run4HkX>5aqZ}-qZYU}4ogmUj>0!Ykdq{}=MiS=|MoH?~j7W;{&iJ#TMV#f}wK1=OK z2z&(Tg=IVdUO=J07}Ribzc*jCK2|M7<;J{4u&=(%`(X8wBBGI_VoDjH%6&=!Fe=>_ zcu8x{FE}Swli}T3JfMk|UitOSPvi!-7J7km4vQd<09e){w*an1`r8?6AF!OJmG)v{ zM(4vrTCirI5w}d|Ks*dUY2t8rq$2+&cHbQEK#TRjo!JOQs|8UbWCe`Y0x>yqNU3!% z8#8>(K2fLJD+NC*OOAr-n{Nla;K^QwsauvNwHR&OR?qVqk)=jewT%lr z)q}^*r2Id3j(%|-87?5ps4F*?E~R#7E@#3o+z?ueLUV`&PV9$U?NAWs83R^$C8aQj zHH>5Hc&rJB-1~_okIK(HjwZe*WC6u4=4{$(8NByWP5fITK!c3-1T_cry}g~y@nvw+ zq7sd|aG7fjXinzn!H2LF1j+I~@XcKsPZ+O^KTKTb@_?9hhSP}R~A#`mt zTfv1w%^c1>WmbAiGmGP%sZexSid~dhq06J|>3b1~R@Y)MF3)ATmV6#L%uTI`9xUCRm$c?!{?rydca!#hG;2b4#SRi zUTQSsy+2oPkUUg-F2A12q93FDzb2Eh25)7RGluC%+Rx(hyAN3BxPLp)$^}h&>`owPDuHn;op7b+CkQcX+7|!Rhww zY0UX4(g6d6buuXU@rW%sWPj%?=*d{)o2bp20lr1m)(WrI>zhmLA&B65B*vkD9A#P;}pd@@1krBj+eiy;Xyw@8w+&UA( zD?g^)O-R>zdhGfKcB$%IQ#c$94`roKzZs)c9OPOWSTkn(e4dZ zqd~|mvooEzzyl>j3`*lM8GSk#;s9z&woSgYn0hq-2;t?)d(_mIaz$tMyn0VUF(5J952SX{dT`B>%uXF$z zP>VLYE~z(vqMOys5ny5}H+-3nDTAoc&4?v5`RoA5Tv^ADad!3KvpE z9u=%f^XR0_b6?qIsk;B0r6A`DGYy!frBB0Q53sel*?_tL@BPr7T^v2AU9JHJ$sU!#kU=KvH{3b)~%Q zVmSegfY~?5RUr5riKCLkS^gLf|NAMJdVD2qzll;_KCvY7$H42-8%oT)8mSI$PN8$F2|S$kZtD4JZ|h!@pwfod(S zA&YCF{0q$$$fam#SjacY6=*%n80Cp*O&@2cvG9A}nN2z5&ZFlECu?vN{rRor_U-oE zQYy=Txnud)vZx=qCsVu%fC-i17X24)x{1UYT1*Unvjqf6WgbrsvW{2T244&3sb06N z-5Ib-GkLl3fHXzOcc?6oh-`f8I04D&^9o36=)3C2Se7f_Af3@=kWw@BMd_6S#P5<) z9D2YPA-Vah_@;?w1MhG)@E%4Tilk6Ba4^sG%ZsvY@y!e{71rJ_{A-Z!XdzhRgq(sQ zNf`vIKl`u%)kSMT?V@m#QVOh-PH}8vN296ErmihpgzsHC#DqYHi^^iOsP#r0O4y7l zVpVwbq9P&M3-rSc=gz)jWZVH?9O5Gi+!dIh2*xV^yHlrKMYS+0HbTDrU?A~q7HMWo z3oEaqTu%r*4*6W`6y(52^~YgcVCr2{*o>RNSa3Jk7wXZov%38AAU!xOOwy4Z9;Q#~ zWS)DML8G4m$8!Zgt8^e!4RqQ}z`w}7UzVUgIGjvd^Tifa_`3Y}irl2{Q6T7YOF%^| zijQNqQ{|0_6&BOG57xCW!vlER*Y>e)(*oA7#d?FAkGSKtpgnuo)=70T!&3(^04z6< z$09Fs1}(7VA3Tz5MnG>oQ1rYgQqI-1%-bA!J$S~M%F4snBQpMttO~!LLYPAf3hs~x z5cIln02zL__2>?9H6#dW;kLe8nI0G;DduEV>fk2t{9rLPC^q^K`aH}V7Y%81P$~cf zfS#&3gP##7m2wItRCj4s5cFT7zz2Yx;hXCdNA;8Z{mFo3DT^m>7mAd?`2pS!Drlc@ z+|;_3-<1`{g4S%h-enQb;?Snc-jb$DJyJ@Ins^yzHW=5J8kbu;wQyP~+*)Qp5 zo(6mV;6d;Xe>&(`+aR{%_BVxHS;_@jf@yR;hhJdmpUqe!0}Ub!X&53uKD{vLy_o`R zUT1ORc3nhfGOz)Zz_=MQ)iI0BfU%wcO-KPI5n{q@`P;k?;{E>1^FOlwjh>R&6>{r? zbQM-;&&X9Cw8*7zy7ro&Wv6}^gl86m?W7iz1EZ6Y^f>$B%Zw8uz#uwlj^j$rX59&O z2w6G9b+!>QjT{hKa#=fzVf$fz-?-wTf>=x=(y+NOSK_0@v>H4$0Md$3;97)6%y~nD zkD%2Ka;)4gNy6vrwC$-~=^Xl~Jf*ku4ZCG!QS?pY#rS(9V}HDyb$-x|=w?Zn&1B;Q zmSKd>a<+2r77avFVm0!T)N*VV(wZGTt(X@if(<0w;*&7KHmR1v6s3=Ba%wJ}f>nC0 z8qQd@F_Bc4q^e7Fp7LtT^(hFpOR(Ym2bS`fRQIRBSP9~Gk*LMwCai_|(q)xk0b(Iv zaXt2ej1W*NY`$ezRATB9WPFK{aN1?wR$iQt!H=)J{}d=N&!pzXPoNqn3@#9p<_<|2 zah#;Iat&25+@*kZptO%BITi4_(dxc0uQ{uCP=Xi)YHFJC)Bj_=ROQJ<^U7Fji$wg5 z%6149EW>jh9!FMC>Y*(;i(T0&sqm(ZGz>EB8l~1jyZzj*wg0TRp>v zKv>UMlCLBRQQyCw>WI9=gG3FpPA<1oDM`+47RJ3G_KKDUDb|U2i?iKNq=U4EQQ~xj zY`Bbfr!iQpZR2NvoF6iQz~sD!`GQ;X+f>v1R;gF8zDz6%bfGoKgQz^7LNShQUSdMh zq=!dXNLgOQ^5t0d7^<(rdT!qoBbWkGdNujfre-XfAlJtM0~ zfv@{n5psU?EmC_r1F6a4i?4Jo5w7wbkOngy!&Vq1Hq#(tR%ZOBaa-*3o!J4+fGAXE z&)^PK`%hU?2Pzl@9754Zz0 z)dl70!7MV5t)tC#wZaMO9i{~S7}Fs<%drtZFN_@X33jjRuSaHSLm_I`PmY=EnrGHk zn;)w=?3c&}pV>Ik*0I{QWNC5KRZ|PLs_`%U8*Y3%-jc(;q&IPS@*1BPryad7Q8Lp-7xl%XpWA6C4 zNe>x6t!md?C531tiSkl)4SzUt>=*HK612D(1pQso&4t6ML)L1eQ%!3AIPxyYE(`_) z)f4sVC{i!-6ERnSgw<3zWH0#TkD2bWt$uhY)1o&9^K3_ud?zJC4K6#Z4k>4I}H zK`Q2uL!m61e?Txg=QKQ_AZp{v2!06N4yic{j~D>NY3$Nwo9)+#%d*_-KxwxKb3YA? zuq56iwl=e7{%L2pfadKe#B3m;WVjAuz01%r_GX@}+hy9>sqGDd4Tp~28ehg5u)-S> zzAW=oFxqLk%A2d zV^HCf*HK~k!u3^=xq+fW6{YBg-e1>Ts4@qFI3qMFw9~+JnJ^uF$vgF=R(ls1d*(mo zXb|%VKT(lS=+L=6(rqms>QgR+K3W)F3it;c=ZAy=0hPwwjd*{QH&b`6wQF8OVqA{h z(~xp$k^bV|aRj+CP$e$56nDcPe}!SRI)Ib2MeqQKKkT-occ!7@=Rq7HhNw8e1LP*_L2l&x|y~}P^5Oz36b)A>27c4 z7Cdvo>nw$OY2*?JHDS?vmAuf7KgzRzEu6IKzib`|0Y7f1`jOKp^jKoHA|?-T5tZ~& z@>c9p7Bc0cfN?^7(XiR3elXv(BNE*pXk(qKtie9|MU0STh44vZ5ZEA3rp2Sjim>EY z=>-O7hDf?VnU@#{nG0}B5g3hJ=&`eJ;Gqz~R zq4z2?7{Z7Xi_q-D(HcT&KG0)L`wf*L4Phz?i_p+6Pt;0Knw4_25)zeuS0}UNd-sbE78Ut!=>; z-b*~S2g?*A9}@3&JC%0C5w`V;yRqBiw3zx7T+2fk&XBW}$)ICej=6yXgC{~`$Q27u$bRoQSgo(p`Mv}=fmmn{OFf^W? z$SM+sI4#|4ikZ#3T*RZuUB(0zjX?|YX8OX#zB;e$W(6Q^ogk=``6 z=cjcBL2dgW{4^d&Xoegsaz z)c_ed0Gu&qz-%z-d{N*{tCnrJ+*`qW)ZI}#=?H_h=u4i{#uON#{}>*4%ZUy0{VfOC zeFKB-7rLX%is)_4G22z6GwLTUwP^z3IHia>!3JQTK+T?$pQ}+7PUc>K(7JTknaI3C z45?ifr5C5ll_Y?+l0~Zr6?NhP#tkiXIVfO=3;*)hN1V{34U&2Af2ev!sVFYDYo#dPs3-2+M+g31#n5{vyOB>(*!cP#q$gf&bA zglO@3&S7UQa=OE1c48_cXz5ik$51xqy?{0?S&?*biw$9tS=Ps0w#e`lv&F0D(WH21 zOvX@>abrDXS@`<{GVFDS8Dbj{IL(66uOiWV6?2cWhO85BsCok*jQMoo(SzZelr@R7g3Uas0O12o7@+ohJxXgE4a@g637`%nwsXSrMh4Tre94U}@wy8Vnp6Zx}9zo!b zW;%;8=mKxy-Q%U-)q#7K0Q+dP0kmylH~~IMMD7(^lDx1oI2jM&U>%{c*6iFW@NF@= z2~(uvD`*Hr`IK#$l>{>m;prc}-e+2F%E;5IY~H$=NTD zl-8!oUsjH<9Q{QBLx*{t@be0+4<9<-d6(h6rQ&tyOW=Rb5S`OVdmNXi4;AIHQXZ6= zghPY)7SRVd_2v&Fm4HHXja)f?zk9lk@gmHUZrQ3iuN;<1iFO%8Yk^|_P;P9|!jmFv z$C!3`*Q6=GDU|%g@D~(TQv1UXdZWJzsvdm5|B7>y!QfD#zg1;J2U43#2`-1qEKX_* zG|7uxzr68=E_(_7j>h}hZwrG83@5VW2>Oz5@ic|Ag(+FFG;427q#(d_@D#YW=vX1t zUVI*)7w{D9k|4lZ{VdUKVn_E6TMClGjsHjzf1OaOV@#2NkSSxPXIA;p6d6S8&u=&Q zrLHD6vh+VbwN*hCsL$J~6~wfP1>qnC;AbjfXuEaj;ODwnrG{7GgS9{c3cILNUhD6JyX%My6B~(r#KmiGUY-(XC}0p zF_9Kqr@Ae$2^^Z`ld@sEOgLl0DM1v1lYpQaA z00E2gM>!fL1&siu&Vn4afTX8Z1BLy>8o96Cb_xLIDzZ_LQDVo)=?utE>uApz zl`_*}*iM2NC*7NqQQ9!ZFxYGt7mAxa6}rFKnHUJOfTMD4l&;F+rUpZ$TRrmRSlTnW zyeGgRVn4zOyRluXV66evw}ZR4=FYwE{&?uE2_0GQc0GTz7ULi`kR_smar+Q&r6vpn zlPN8@{ImGPRZ0*Kxjvb*S3;svkiqF2XE0g8my|KCgGuCxa=?cQSHLJOT)sSO*xqsL zAc-#KoOcmp67>nRx`xd`Y>d=t{v&e7xUGFhR*m->QK-m!e*<}jfL{`noExyj_+r&A z+paYK(;Dtks`WNpptP&j#BnJZQ$ITLMP65{^tk>^|Ie?|WzTDC(eDL|SUt`-4Xh0Q z(>28`k&`E-J@bakx$`lBzi=|Uxm$2{5x;a@Q-*hQNueSI=n%Nk;Lp~&Op%%7F|scY zPYpAXPvKqS=gH47gkU>|(Dt6J^-P%YEYhoQml=5mkBbDeXu@P7!c3qy6}Vs!G`}vf zz_SVDu$5B@=(DHlP_Vou?t;pbK$R9GD}DarS|8h6>@uN!7Odwhtmgp{^^#3OMs#qK zxPWn0Ara{}2IX)h9YR5)OzUy9Jb3mYbN#hyM@p;qLBe3f3XizH9l=wU4I7E*$s``q zfuGO|37vqE81z=$uTxequ`B4+eQ>I0O_=}GwfFz&8ox>8rSkK?Tyt?r@wnGqNqGeK z+e)Y{{OJ|9lvP{i4+8InZbcUau zfEd6KhwIoqn`-4iw@zN99@k~$j6)WD{*9wN^;0K93dIYxAtYZT?iBfgFI%jSYAgCX z4K~n#5vQ=XfRo@SG84M{v=01}Iht_d9dmxYY}0!?MEN8*0rRNWoqz9oY`EY{SSvib zCGK|x_qsTF2p_}7Nj63r_QM}AP1^+MbM&YFTohGg7NRk*JIG?q?}R7H1SS5HcYx)s zV(ny;E6FfY5@}&eLGT{9I(;P;w)>2G7UJ)YJuZ<7&DrptIPfVzvlqb#C&$(08Vt&u zH|jj-SYdgv9YhZTN^0>(RKRX#Y{n>xMsQt4qv84lAg(+y1;UjjR)9bP2q-{m^JeZ0 zi5xwe6sbLlt*#>pZNzRQ&Ps(O0bogn>S5unFdE6!zZ~7~Z!57)b=N z1ZD&x&{HAMI}mA*DuqD*d_X6iKEDX1Fh2i$KA(SH8fi>o6q_POH)u>w_y7QauD-N= zd0N-ejkeMldbTinmLy5KT&`#S)YURwFUb_eKka`{j$`(CQ6aB1kCMmcH}-x-(c3T- zn?Gi}9A;*`9O5w<597%)-nOq}WEojz+ZXID4$>T-+4hCm_VrJsLf)?k1BEbo6YB)H zN0Y=ttYZDX*MFbK^Y4@RJQ3$$v2>8tsn6DJwQMf)<ujZ@3kXIu^Ba&YcZpENAi-f6y>Iz5HA-{G1T;+M_e#JY(P2@)iH zl1_pI2_&`~MRTN937rHny`y;{=^(L71!rP&(TGAL7RW+M;~Zp^Mj8*5J|vXs;-wJ> z86AKwBArg3Ul^4(?qNzJ4mJ@I;Z|V%ER;kMZi}_D-KtoT>8(vt2KyQ_SPf9DzH*RQ zDiiSa^fx`4e#9TY0e?d_H+qxY=*bO3zhUUJiOrkXd?vAZ()>QH>*l>l9`BoP?wg)WhvPkl1y+cD>lIp5~|oKK$lc0BXPGvA*1XMRRy-&emJ$MM^| z2-6=${no`FvH9_mx0d{wj?ZQ~K9lMAbUaDgkEFdz!_uc{`fQTtGkKmoFO%KNZiajH zW2j3Xrs1L(b&dCV>;F8>vX#*od6C?@TDi?b0YTkYFF1*F;$_=hT%?|pUA9RWs~z}B zIt%^M_QKild0aRiaQJG3hgGqlbk(XX7U|1Ukf3EK6Jg{LCaFsEC=)Y|=FLJ#NSlG- zm%j|3$Eh$yKDRImowT9xi;a{?6#7UM`bU-eCqz0*l{zX!x(BM%JqVFr zL6tfxmBCA(41Utc;1yJ)S5Req15xQ48;Gtlp^ma(`iX}r-MqPt45@2 zfV$Wwx=uoFTX7M%RE_wyt#YY)TD!3fcAgi6Ckgx)hDZ{|S%M!|nSi3ZeVn91;j?rU zi%wX>eg|%|z^+*i$r<&ulb*qxoLG9B2w7pW2u{M=RTpt!$4=0ubP= zsHoVjYqiv_Rw^r2!AQ0o9Ga@0Z(G$6vO2CCBvQB9RZun|Yh~l|KhAtzy>S_~f5OCH zljGL4pV17*DTaqzgRTu1uj@A3-v`b%#(iOo$E>(y2it3B;McWry(&YQCpKknvj+e8iw8CXOt5!#G{ zr!&)a#bNuxR|Zh*Dp|$4aa*KnJ7F=S)vK-eve26ho2?RuGmd4+;cz%*S(Y3QhjTBt zEUmRRli_g65;Bey6!%tC-0OLp%|@fqlqH8#QNiJOUW7@kiZxsEqLQif|Km2(_1B1Q zn7x|B_ZU`^c;9mqD+kIWJQHqP(KL{X!~>D&I+eNtD=fH5bX{qVKMr@k4eflJtMhH? z#!12si`A0dm&wt+Opcey@iHxJHWU<)OlCB3I206@i|kgo_j1u_uIFVkB#FUjG!+$> zii)ywEEbEk0S_NSToQ@^#05a8eb54y20o~5|3m-+L+9JL4_a{1CuF^1{XS^H1wg2Y z00j7n0K`Y31Ryxz;X{ZIc=!;)10Ftvn1F{5Atd18LkKV;0v#aGq2_=NwFh*lHNX!5&I1wg1BAORgb zdz{7_SDu}>`5GjbjhY%ceU_cE63#cKW0<{nrP$Pi^Y7^*CQ-K0%7QjHw z1RZJ#kU(t$Ak+x(fdwM~fr0|mETDjz2S7}K1r}fd1z6BY_`m^b4nRQ70SBNMAOW?{ zqO*bzYGDQI2QX0c00wFj?vpM8@~Ij`4W$h#KFi)+tlC|vR3>3XS4+!womd4Wx=L2y zS3gPj)yJb!sUcV+s>MD9P%S>m3*A=hJZW)g%lRs0BL@aFr+VZ#NgX5isbyMcE$bw* z^Ccr`T;O<@3XZ*ukVhuN!Ei8{OXeb8Hk=BMcgb)lI2(?~;an;%m`lZF!=d1a5Dw?E z;dmU(g~Q2kFdPqJIT?>N~I8GpXB!!C;~dkgmAq z3YJD0Bb4bUsZ?8}u1;ZF{p%_%<59d>S9N`4>*|CHE1g(hF&7C=$STq>6wHk4Ds6&t znN55XD~V#$$!I1p6dui^TxJ=}caDb1bk1!Xje?_LW?WY{j;!Cr$r@%V7tni1QMrH= z-nMl%n&uqWIc+oJIL1ll7!^{fTR^4$F{Pd{ zO8ta-#wdkC9i=*5-q_UgJZn%M9xZ*-?vj{g3$_gd(AQ-eOX+unukz6+cB|G(`>Vl)&J9+|-=D~7tf z6GcTBON*zsul6=JSud1i#aNz)nZT5&$J$r3SesZ+6uoB(+ee>fn;v7^QEGGBocb$(%2}8UNVhJ8yA5-qm2yI=co_q14{j) zA*ujMoh2%bNTtz39}()5VyQ|Zjf@Wp;~|o0gz=JTbg_|o$uv@ZR2v%a043Vk;Bwp^ zqkF^Bm)D>-kZ|Ek!yMhTrMr#m@G94BwOTA2*VSs-Km!-~BwfcGEg0fzvEm@cq1vc? zMR0>`0}ZFNgwG1Dj21?SjG$Q1W|2x>eRZf?;MH2U$g9blihv!7r80>KE36F_yRuj$ zT*pPKCF0vQOQf0;vP!xO7cSfsGN~@oxG=(ibmc?aM+(E&wPTM;C1Rtvb#v>YxLWIq z+bohvgr@?Aw3$St)>VY-UL#wrV67`wNSjGWz)E5psgYVExVC-S6WuU-x9o0v%I>~! zRgVb~I!;qtE$Il*k-U4Hr)#{h{h)N%54rloZcS#(GjUkrAMU_@er#d zRwH$*)N^Eg_(3R0Y~q9n6F6wl=LsW1md78DKQ^`@Nj=w9&$sQ2uIeLAJuH^Tga}>j zJYA(&bha&-QW*dM0AN@t6O^uUl~3x%Nyz$DM$KVIjA{%TgDD01CLN@sbSyv};r^dA zVX&VxVXb%AoHJUQD0#kQ_?{n^QElGc`rYSu>-)ThyP+>ngvTP8RKU)+=`wW;kAiNr zMc$AI+&)eclA$Z=JhfKp1Y(g$M0Al4yrfD|%8VN+e+3gh(lt~PJ;H7RN-Pz0>hT9kJ}M+6 zqZxfjfS>1LGoug*{E*l@;8qf^+sA#9juL(adXrf7s)WU2pPYonJ_UeonC*DES{*M} zt3%_0ux?GO8jMXyO+s9|syCjDWObx7r7uKq@`WK1qXa|I1u3(-0@Dc*W>pN2#|0B2 zh?Tpi>59GMrD<+^T2Z{1aNF0J#403GE#7rrIpq?kz~PpSRzHi?P6wj|xe%iSC*NXr z>q%@4LWv9o9Jm=@^~~{{JT#Lcl#=JB4Oz$9tgKtfN6)Sh0&Ar z(HMb5p^VW*#^~bi4sq+)A`eC-kp?CeO4_oky2eJTWuBhCV4;?IdTFHb3m=VRV2nbl z(uN6ys?dy~`hZF%5IP>47tgTp`Tys9Q`3cE`6=u?(fsn2|H?lZOW!inKckrA^=y(E z^!Z)h^XF-1(D~x6Vdt5i7ni^6{}>$9sPX<}@Z33$JXSn)moGD%h`BUz=4G+~;>DrMwL8Oi!z8D%}Y#^&hMDuLv7cjnP)eiKhQ1Ru)VQ zw`$?EhK){tNbU@#9N!PIwqUtM>S_5rlS-98~d#qt4>HbRP~kc(=WaG`_? z!Fmg5k%eRlQUFV%kA^995~)yEp+2e<>M7JKs4_|-66z+5(gWuQJBY0;Cyx9r0siA`<(Gj~R{Jw|ulI)m=eW!~GCU3^7N;uZ4|$5{&vCHy2go&#m{VPp0ly}iEZ&YnbU4;ZZjXlFzo35 zdEWh&-TQ=*_U3OBrr{fw{@T=*Bj5D+rf7+76Pv%e{4-?Kl-;x3rtB?j{vY2VYEyh^ z`}4GDN#d*Z%`ozgXii7iCTXZDyq@`vDA`?5ZAo){ZI`vB=!v2gGZdqVw6S9a$65>~ zXw(2WPxVw!M7`&$P+}F)c`PUtURHmc1PKuW5P%J$#k&9dGV^Vn_U05tPi>YzenvIi zZz8unG_GAJ0WrV;0}L?00E28Xyk$2_j~xFMpV57dO%%gLnAYa8eVv72`I)87x2{^(T!bv?gNqjf1)=$E5wSJ>{ zl*>lL%)(T5W#~oHSyW(D-xo{Ym%be~D|BccWx}&m3kq!po&$$_IB>87kc+GYH3!)p+_!K=8~+4UTe*3PA~Bqaafi1Q}#k)mx zs9S`EPJxWe)zBynf|4$9U*0AJVZ)MCnW3@#j_EL8Sd3QV4i6df&s+Kuge25(BLPM5 zXjo8V>M{(|B?SNS@fz0aMITOAEQ(Tz;TC=gSg9OKl%i&ZyH^PD;iBgX3BSxLff}p+ z!_h8g&-(NncNFHpL$JM*xc*QAo05$y6&uK23n2VrsIb=UZE zPfv_tppabJ>ak@(YL#?kcZ(VQQ?efINfw>JQg< zfCY(FMhk8}CS1z|lScZT7AaniaJcQOZ!{69(IGlzKg zL=ibW8azzWC2`sz9)3k&o*YXg+%RN$GJn%TAh!K0-g$(!0_^B(kALn*qU-HZ#MUa` zLtfSpfU{+U!aGD61Bej*(Bf@!!~1M$TR#mFXN7fDvJa%5X~=mifZ}#68$x8$keb3D zI0zNz(V=9Bw#sFRAzmi}j>olP#tv4{lDEt8TZB2zqLY6I+KR>&;WtOiAb@$(d-2~i zXC`Ei$nr1x6&yc$95lt_FIWKFI~hjhAFhK-K*nVE8!GOWyG;=xgQ$arYM zeY`hQQ=iO*>KAwbwlPI5us({wz;iAgpA0Yd@+3-ckWvHRTF?e>{i@TW*8=arbW@# zW}&5cz)RXAtjN&Gl$B|OFPO4un#~Y?7>*2>2FlBn81iBg+Pyu{b|f@>9K;_t$%2JV zx+WaGVg)zj;}e@>o}7iDdOHVXulwFARUb zWdLkwO#u2P{6`?9ES73%jMOZ@9~RX%#Z;PeBMo&mlKV_;PcDaU3Byvp2)Z; zUygTB5@hO-kwx6@qrn7B=4qp>VkH)YepQYtLRNjO{ce#Gw3of z?`{L;JjfilNaLk5HIr6$VNhSQgeBwn_u_Mh-dDyj;j-T7%-#ASw}?xSupa8>;=&-A za4)4rEjd{a9nPDIZUcSjwRDDWc{`iWIq#yP%5bePqeiDsKYM#0fOxV>Pp|L>7Htr%Tw^>%`hIX>JTnjC zS#9zteDMS+vcBPz4MjVCjREsic^2A8+#_}4;2I#3dX%t*oiA^z>=Wd2rVqtQYONk3PPcV~v) zPb3|Z-!+7Y8=gD&FxDMqx(KO3SyIK{+y`#BdhQ8k3)c~Y8Z;UNPR_$VdLW4wJVwEe zX>oGJ`?GHz=&8Oki6YC@N@HZPlgeo01-6XdAeVKY_-2k&H_%n=$E>=y&TCe^aH0&a zz+HtUfk6jxE?U|3C1T+mUA7tfb9>c5Xnjie2CIucY+=J+O2j)Lxp$z!`ebl^N8m%~SRnT^Mlrw~<4RHNOIj#>f+A*FCg}oMU-h0dEgl zsg?{nin*-p+j`4#`qTQw$4-#UHqs6dxdZw=meCSJy#wW(5KzABMyFlq1>{3%;0GxI zv?wGNn!m(j!eOn~^H&^Zpi1g2HGO&2Dv&p(3|A3!vy`#H0I^HDQ`JD2wl;@71lOm2 zNhZdJqH3fo(PlR_rm>P`SP+tHxCyREa71&0)2Nu@W9F%*cGO8_>|F8$p!ECd6{?tM zHZLLIu+lGTrnVZL-av3Ym*phHBnX=tgY%X6nyIL|^<8~Quqg*lm(r#)98ry$AG-B1 z?`G$Q`NrSh`iH+8X!|YOABL=(52Zsi6-e$onHi_SRivioW*_toQZeSgdKI7CCtF`&fT$QuF}Oqu&YpmE z>;ben__J>-l-d|iIvn+yZ1=6hMMCC|y0oqGorQc4J6qV=U3w1py}{x|Z&9Q0b|SmS zMYM@g*PI~%I*IV(ytW@%!i`hf;U&r6K2bkKO~4-nfrBzaw|gIIdYn`aCkGWby@ZCE zb>jo#oX-5NHTYU!V_fXC=Q7K|e1xJ??~AEJgw-06u8b0Fs6oap(hrljti5U4*Ls@X z>lkAnCCm!lNzp}Cx}*42HS?}7GAtCNnoPbI<5YuF39d6^?a3ooMrTnGFl6qlMyMqg z88S{~=dl1lZn=t)&o-j;J^iyOK=XCOncD+qDK?XpRet$Wy*bj^FH_1`mEu7bW-h9Y zzyQ!dHD%g?jZ&GwRS$|6OiZ;;0WjhFTH016?48ll*+vdtcCAgI5#|9-$`SxzP#$jN zK=(VH_&7?fGr-KPNh2JslzyJ20VT)StEELnIV+1o=gkjx3|1gZKJqqgW1xlx2EBike+>^$__%+>xybO=dDkA)xCXWzf-T5-E}||UNsLAAWe->?UeW}6yoWPzJW_sl6YS*jkwT@! zlJ$#G_}ZdaUYCC84j2gc%}S|v2d!j%!i!qJ9<2|dSV9S(%Ay-Cf}todGq|w6tZ+tb z^c=Rp-15&dz~an}=sm-fOjoPxM>j!kZyo8Z|aDmNi^ZuFN~Rvj`Er9tz~ zvWhsRZ%+%DSvE*+0m7$j0O1jOY!(3VH!13(9)A2sNjN1yayj5DLkS;}T@-+_ik;oj z_#hzpBs$(HUG?k_;r4tErrZ^k9K&39*s&V973N+^4s5_Ijl(?HNkN3Y&N4QnVl_;) zXW+b;#ql3Agd}=6&z)3YRZIjK0*BLpQ)Q-RV*Z*!Y6q{8rKpb0lc$H(8+#)#pVy&p zo}TWR@S}fsgZhKGEV{j1k~#sPQ^P#9$GzFz;;vq7pvud4r29`Jvm1+145g$oHca|! zQqIyRgbhTe_uX^fwd;e8G=`9^^tp!s2Y{%zcGJ+twP)2rnXE~*PLn& z<+tE!9MiN8&k>~0WHdPR=%jwV5~H%vC~s(ss#^Elb@O{3ekNiis=}?;T zmqFHJuJW+YHV=_Ev4d8yz8h>&!&S?-srLGafDUftWd%#(C(s$y;fhC&_PXdlN>XJ4 zN^s+p5kF9sR7sb1wyh`qCpv7ESS}Jy(vC#};EOF!JAdT+5xU?H-3fqC1}L#i-T0cW zuDD|+5SP_+*DoB8{H}9tWuOerbsF?tPzeQWkz$L0FRH5*iAV922x7BoGM@b+a z=Zq@QndX%N_j$-U5gx(|NnnDEs{m!NMKIT*S{G4&06~*IT+qO0*ScH*TZ`hQ55tX< zO5tja%tzyJ98Lw(sn{n}?lQ&!f#woljWzyS1n%iHndL7GcdUsr`x%ucu~T0Z=Ysqx zV6Z@qfP_C~8M_MiPa2Bmu2=IvHChn$_)Wsyj5|hxj{Eq!=xiQO$+h}jcEQF&1h1~7<}qko9$I+RLu4w=~2#PufEO$AiWx4jJX%;=KQ zXP_ZeL{~oamV6b)mr(OrmT^?U7qK4>0}yl>fVyGlUQD5kll0GDv$+_@N7`tgzC#6E zlzhvOHy;n3)zFkiJ47QnsylnwZPzzEq2XlT(n!SDg?@-NBlp?AB7kr^8{#1DJYJ6! zi~}FjS^oweMXnmG!Jv~0C^AF*3HLl-RXTU}{>ENTSSs2ofW} zQ(!Sb6zFshM_%*roNcqymbaF7Jn2Bnxqfl%+m|rOoAU8eBWILeSMZEP;RB}!4KgO0n;3M>lko{uo5Bx@06g5vc}bbxAJoJ(D0^sxZlAVIV6pXjfB@HQC#E1K6` zLd5Q1veL;qNx%zR7KHlGCpS0blXp-Kw>*scR*MTPf#6=THd)MnbZu9CtD2z2Rh2a` zvez)SBS0IX=8AeaVKG(*Lb$h3Y?Fs_0VP{^gHH9fXf4$-lv*@VIRCH?I__1PKQ0Zb zeGM_@v|+93IQB-qm8wl{oXnU;1(4$@98`bzrQU86@|QQ+c%64cBr=!D;@#7rcW+8fn-|VMH!*2)8d`>mT&Td^4X_wv7j6I3S*1ziu~n zOp_|Hh@&jsV%G*;)`~}xmFcuvV&{Rh;zB{2nx(*LS?>n*%{G}2XyiNU99rD%qbeaR zsRK7`f+Z(zBzdB-RfdRKBS12%aJ&lfQgPcNwb7tg7%P(AQ!1hfpfabP7KJ{RA) zN{ixLb}*~d%IGKzW=w8U|Bg-Oo@%^A(yArNx(FrVFuhnttUR$T<&^&wU;1fh2%L%ej!<72OXtRD!~><8Pu-=G=_wPPe__BL#PmS}ma(&J=w` zbbuE&eFK?+%K4U%szUTHSw5aAaG2Zbf0boc`QRG?F*Re)pB*f=wwp^cn+EBo>8UKo z(731CJqdi}K@eOjl$sr?sU*%Ni#6dTtI0exOLZlG3hL$tLJ|3Q*l~ZP% z8vzP%Ni0V<_zLbRM&4})7-`w?#X)I;{3Z<_$`?a8Is#0*p~>`$-*ak<_uG}`u=CpR zlAJnh9cKW3K!Lx>NSnA;Ho5F%dB<}fSedKu5$jNypXqdXJ~UjxB+-Qaz96>mZM4{h zvMfMUDPeh>pK4$W+nq?QUI_$V$sv2<#8xbIN&q-J)B|kME2~QR?~qmz!K>{EEEYwR zM|e5~DG}$u|G$o$(MSjg_O)K-V4?Iz0w&IHwIjL-n4$cBi+ zOx8xZ1jB(VDQStA&7&B@#>VdEnyJ^ySTjW#VK`GZ@!!=g*3F@9j6Em%PsP7PM22tz z(O~c&Tn{=l=r$>?O1!$?=~&nc*8&T=8gQyrhC!cs?Nz9HwvVA5PbjYCICtZ6H8dq$2zsBXa){bjBVKJ1)`$ed z?X{R-xmmU1ma~-5( z`dYfZLYoN1W4YUUqpNWfTE6sA&Mp;&PXTuLVyrnZ3w_k_5)MxSLYc}VPK#gLh}O!Y z_+(VU0P@)Zgh6TFDYzHel*PX?=Kh)6oP?C-kfYe~n2!gIiVxj`uH!D-y*hTk0C>+O zFbG!fWkG~mGo@6o(PtF3m!FGp_sKEK~ruG~iDiJi^ zibFT>?q|UAn^n?14vzP*#3CEh$6CWSt}iJTt@9>y`6h*1O|a;*WoHC9B)yI=|J|}t zpD~+BPro-;sbGjHolvFNB1zsU>&t>c0$2ux=nB?NL^sykXX@_6~;bI zomax$-zw^CU1;JTMI~YyiHU@3EgNG{ePFR@^l4iAEUhuxp7GQK_Ig((SEP zBBfvqkNMiCzP4n}!+K!bKqfwibyHXE1bz5b%U#5B72*XcmVDC3u?a-yDQwJBP`3vA z(2Lz-<}{=tyJjrL5&M2@L#oijPoJr`CaqG-GZL3q4Uu< z4X&6CZn6s!6@0g9N6&f(ko{a$P{iuuxUfXOR~4rvl4JohP5H4X5qcv3Ee|l0OWB}CltAx z7l^igifk=wgV!qLv~&XC*%WiQtT)pSpbJ6`%=GgU2aOQQNLQ2x5d+7(Wuj+MMr1s_ zuci(p_!UN97mV>7YyKh#uJfpSY`~G=Dz(~zpgT=Xz^Sb;7iUvAr$&~r{uHWaRED^O zg&1w55S6A>ri$JF!U1vt?qRj2O738oxs3MwZwXLBcim#9*coPqod*6z%D@oHx`sCw zM4*8{Lv3f1{_$1Izup1@eA^3Gt_sNvj^kD(y=&(A%-0 z4BQMs?E#ZJIB~eMP8?kY98*!uNHSSbm`9Xlc`N?dUCiA~{!ygN5&A6?d@P4QOG_z0 zs~9R(6L{U9dAI}*-$b{hOl#OBZRlr~G>^Bpk$lWhcj`hrgl1jIc5mAW(p90kN+@7? zBh_IZbM!`zhEgzPsX|1c#nEur51{k4cq$BC8yy6z!LW{}4LUv>nzBeDt)p=of{i(Q z$nQz%nC$l6?m;zqsc8*U`?ZxGfKp;c^#9;eSStkLwROL%o?eqv3aNi%Ydn|3)rU_| z%(ZsrnXt0FHBh>NMcgxCl+eXtn|Md1wvz+0U`#ov4`K1XWY#@{`}SwUNB78N^j){o zsAw9W(~`kv9FUK9P7g`-aHuqTJ3Oa$s4J}ix{oaT9V6O=rH)kT>?8KV-abA%f!3R3HId zWz{)tz@Q1!;}~n_(%N5NW8NMJUr3O#S^)zFDgZgkPcFmd@ISy7D=_WPPTx{|Tnyg5 zU=rA`{*qo9BE+<_GYb_+TAbdYh3BOO7FLS;SS?(ZcXJrk5DbdPGWhgM1X8KwZ^~tx z(Qa}C!;087{yjD;s?--7)PLvXAw!bQz|i&aBA9ytuFS~x0<@my*trSUg;&A6aZmFp2^A!`+$BT810-1-q(D%APNdyW()#o=c0l6%%Ns<&0jzI{4td*wf<)tvjf&mF-s}ltnSP8=gu_MYzO_cy z*WI;ZU>X8L3LF;u#93i-qCTx@tVVAWz-g#V7-l#*$f*j{CONoI^PqMT*HMw!8xaEF z_)(O_WR%~T45P59_+e+V7NCpAtAr(Vsb+-U{;XvD!sm+x?VlZ~CEZmJUm6Wmgu>5W zYtzX4`VyL%d5vS>CMGoyO@4e)_0doO6)P{aOzTW_&Brtbl#+zHEBl(y!KKR&TG&-6 z;Kr0Iw{kc~f>mC3BcZpt$uoXE2-dpsi+cm*9hd;GC$<(nd%sgeL-3S6@(cmJGnbng zt#%lT5R*o>WC4D*UBTcvmAhR@nwhx58Bs$7@zR&yeU&q2!t#FXWJE zM0B)O@W3V-;@>@~OW#J{dilK*Fj6l0m7hi4;X`KU7@RRel{0X(m158pcxz1HD<-T5 z7!H5VO1Aqc1MILq|K&?q-9!#^pps7oU(6Xck?P>879{uf>OG(#U5J->$7NZZ-+8sG z{aEGMuaU{<&4)Sp!klzG&YbQPKlQitSpl@+WFnaif4(u0CAfr_xT&kZbChW2BlUnf zh?-VTggaY9jtxNIS+k^^f%y2&FrvHSD<}w`Am$FWpaBckX*@W*eW4YkSF293io4o(iZ@a3iioL=@>oVhaa2GCB@@%jvIZAj zLMvD{k{W}nZeBjH%L@b-Ogh(;RNu);Y{x{YZ_*ui`zLU|6cfzEdSUC3fX+0|Z|j3H z3J9+}8oW=GlOgFp%x1CKQ`ibZiX{!_wh!>tJTZX z+9gSdX!bz0bIz%sw0rR}xEt<9fud|<@#Hwd z6#}3E=fEt@+6r6Uvi?w%SHDo)p=OXyP(ofx)e;Yy+D)Q&*OZ7dv8i~uJ|q6&{W=vo zA&9!5S%+ezL6ut`I(`m4mX}6OeqePTQ=-a$t`l8Pr}7&^!g=EQKte+%i@MZx2sC5# zJ%?Mc#H{TNve7Jk=;EI-6i6%g^)75AL-^)Pqp!y0elyG+xR_%T^PPHZ){Fg#sRs4~ zT{N%R_)#?Vt9ackMV>bZ7!ukCC7XJ8KNe~DEiAxdS$av0SSilQqZUa9!&34LF!w$1 z*%L~&eBRvqFs!nrKWy9(*OON_#1;(9EFIE*tr7=COeojQd>=j~qSgxaMKp_~y3T@; zY~p%kZ!etI7@gp-N_0cQaz_dUknxlr!8#@~n;_KLTW@yQ-7Yp69m()GeO5Oz-X)i_ zR}@*&7m*nGLK77~nI%rD4;!YJF`VIvHFGUqDGOay-zjkI2;$K~{EECvw7eiv4KpF_ zHBi_c?VpD~73@r(Be;Ru-}|a>nu!i9{6kA?7!8z$@u1sfIhfklYIs62H1D2|VccG# zAwMZ&5At;!)8<%Da=Ha#NMgE$C-@(}F|jb&;2nHA;$P09Hm-bqLt6j9V>TKYE42JK z@SF0%6;d%4uc|jVlmBKWy^o77hC#*XJ4im6pF`rmT|T0I#0{lZeUdszs2vOYuT?tD ztNe`~8m9_3j7`bNki_JUl9Awj#QH$1%8FaCwSGW%lGx#+KdsFw=Bo ze^ao+U|<7D*4oi^>nr@ntNNP%HG8f9(xT_b?WhEzmhO2c9F28P<_gG-c3P+Q(at+b z6PcN8sP#4sE8MTb)U#`fvlC7`aE5cAjzTdr_U`#z+)^7ir6u3Eiqfyr_;dZ$L( zHQRz*e@^ZdvbUR^x9XU&)2uqYkZc4jxhe6&c9@NTk8=Z+8Ua#ZAMXJ#g`XXW(O{M|>F6EzCHk2H~M9dX?;=DH|bf2v6jdMm%$zl>e zukNtXB(+Z{ZSp-77K^|oJjh^VPLefwME&Y`bTMsgBHwQq7;(bb;3Qh0iSP~VIfnEh zl81&#oVA$YQf7F8a0y+mV+55vzd00__-#Z(+~pjWd0omh#Dr;xIY|42e9;an-bb$p zf0knmz^mb1M*HlIr23KzJ$M~hVKZ2W!$9}~Cy(LDRNB#4b=0rNS&ca(_#sAOPlWF% z5NIHh`A5NJaZ)Ip>HMp{AZXq>lAx6T)Rz5cqooZhsoH zjSL(anijLt{b%9WC&nZ^rwvHWykYha*RgaU7tq|enhaobbfkueQ{DSGk#9n4Wg;ID z_AqPs#&P$I?HZPGM(U*H(mZ`mPUllHcH|mX6eBj5G?r#7Xu3CxN|YlMka4h4;&2bm z0#)qwU<5$1jyG=5syw0ifb}ti$>m~z96FP3K;L1w?P);@X?6{DmHD@ngt4c8{cbs) z#`$NAuSkM{aL&5u^jYkmG5 zttk?z&-)tBv@2Ge_JYUI9nqo$D%8CpFc7+QGitnIqyzAO!?oLNDjfL<$RHPdehnS^ zpO4?3uM>}$ z{kXNZ*Rzasvk7?a9H7H$H`To`ItFHz%~!5K^w5>Vi%2%2--Vqe&IKLuD+ImH zU3iv|a=l5X70Ob_JYxklRETHtM9@oat~)oJDm#YGPKEpvD%=Z|Q||`Lk2gejm}{-^ zEwQrq>o7O)?|!j|R*>V#BJ+WndYA#76#80Gf!^ghvG%CV*6xnet2?_nWg3M_8xI6} z=rqMpvU$>IAM+fWqG6V~?BFO;gObmly-ZOC+p#BP*OCt6|>mWwcl;ilugp5PoTGf0fO;o@r%{Bc_H2t(*E3D#ZTJ>(~xWd zlesYuO=TU3GDo6S%2|f32G5In##DNrgnY!X;I~IRKg}PI9DNeQbsjYJ@C^+gzo%j; zH?sZ053@;Tuw+j)TwcQ%H`!;hFv+L@h2v~vg4mAv^%BGpl|X36c4eR(S2;n)Ss?ao z55hSEiw$z!%4xby;donBZU%oU>t5oQms3g2R2@{et~*`wy_>G;xhx1uuYLjP zRkSmLAq*W5D_urQXtnczq@W6L0(v>W%F_ zXM(>$+<>U&Eolq@wX5o%x3}w=RyUVgeAp4KMN9zx@G*J%PKv8z-RYxl<0^iCyM+Yh;OD-qa|=<$zl3&f(r<$+)tkBG4o1FHUg6kX6L z{jJRaz!9oX3!nrIgMps=4|_zkmsx_^a&;X2BH`!{r=TPqQTB~BsJ73MfddSn{(&+4 zez>68RKrX;#AhdBFnQ)y!N?z3*a~3w(EGn3xp4+VIF>7v(6gRXYw}kP0w^$#%4)XY zvODt+XH3K|bV2}Lb?^wpJ)2h+z3CG9lt*k1lM5)b)E(ziZF^ojSm<$_aUsa$<8U2c zXXl%8hgKB8UqR7B-K0wVblzB^n%WU^PN4^C@K81FD$%Uj6{0i(#kclPH$SSkZ4^^W zE#pK8i?ih$6R(a-+hOExu^KDTq7Ea&{Ak}Cj#JuZsund;^qd6(39Tj8LN+K32BT`+Zg1Yj& zCvGUNNOs8G9D1Q{87_41|2il|JM;pSM47GPeiv{&N5u}c0rI9QLI#HPbHyY4#KiQ& zB>pgBZ-&!A0&lneIn3^d&m>9vam(h;ishe!`tp7ttUkkbq{#j}#thj0NuqEYui zB(|Xt-PhdmLvZm2ea>wK44^$DSU25&v|rglr!oW}G`zZ&m0usP3;1GJ;bt$Ox+a@{ zob0|EfCd1RkATcYbK6ACvNKoS% z-u?egsJj^3P2DferMga}NUCkYqxBc+>a- zSVe|>bgX`gDFwI&ROz}Z3`ixnaKK&@YgSF`i`HN!ee5QjiSwU@2<c(t`f3)!@COVv=^Od@1@{Lj}9UrhCK+ z7$N`OWr=4YV;>0eGKJ+=XI!(1Jq>_E2pc9GkgPnC4X=M9R)~cr*)+FBHumqCjh*Sbn z&h=h*F3JS|g+teU%<$DX_%=&)o zW062h^+&s52(rdXM- zqq(hg_agqaAw7-(c(*X`-9F*G7N(cmV1t?_khJAm;|#GV^Yl%tM`v z|7%E%z=l%mfc!wAZ<}hOW^GI9q>R__S(<2un_sPZS3{ucMw}*nE^6N5UF5k@>v=J1 zB*C(ICuh_#1fwHvHxIq&QrI!5z`RBzMZKg3I}HpI?;PgxwHTvVD~xJyWPB32WiO{d zGBo!oEY+RaD$RDyz4>NtNVcw@b?W1aR*`e|tb=IZ(tbF5jdiaCN{)ik@t8ejPtv)tZ|6`UB}amwAq)GA{=my6hbk0qemVLKV%`8Ik_kDe+1brN7iDmFg5ClEK*#Z1DfIkT5mrS5feqang=$1O59Tz4@vJqZ#s^}_Gc+8SXm25KZn9l z3=!?cs~8@rVGTg(qzjAN38LM;R0QgPWOnI_8^Z#+#U>Jbo<72_6MHxH_h#UQmP3D; z*wK>^5Ih4Jk9=`X?n!B;PBLPKyb*DY}KTHAjgLrmwCjmLz0KUbT++^J25qKy21t!$2m7&}ZGYuGuA62_MVi*94yb9LWZ?ym>dg3OD{C z;7j^V&CH*X&mNj1SP;r#(5OokR9A%zKS>h?IkxD!TR9%qcgO~{M55tsoOEX2vI9%B zSNIySD16TBG8SxiYf7s-0Ifvo(d0F_KUty8OrAKe(t?AP9kF@t$x7H*5q)cAS71vp z`=t3esq$iZtYc}P%V7ijb%gMW*-Gl7Z4!0SKzj&Z7g|@2sS_uIq#D-TkHQc#%m<~2 zlb|A9J`mV`TjOqP(?d(27+J);Ct8w;IXtIZ7qx0w5E0L8Le?1%Tih1{3NuMOQ}9Zr zI0x`Z#5qir!8toX@{tdH)LV2t?`Q*4WM#_SLby$|EdRR^(Z(&Z)g`@&$X=;#6mlDu%fU+!0Li?QLjX!?l(#7UuTW@%E zc=cwJWu1E_NU;evfY8*dwMc0eMUK?gWn3zCWfyC+*{(}wrBYkAWm~poTef9ewq+WV zYrb_4+&^sH0|)UMo9Ewc_&aLqDaMCv9&JGyi_WUO|^9yH*PJ5 zIow$eGX#uvX`DFLrO}m8swR1+6Zny|ydWOauFS<==3;V8`&ZJN3#J`2Ii`&|q&dctBf~Jo58`WWnOmlb2*O<$t|ux? zbD~23M8$U`^!|@5!EAB{x!EyGu7`Owy{sNdj9%a1>fKYlN+w7mG@_u}{#ELgB$p=BK3Ld*EQg_iLv zv{ckrXxZRbXu%H4kGx6;HfP+{{R0&B0-5R^N&Wq>3B;Llle*CwkP^Mle9c{ z02+xvf)4>Sjc-CFBA<|ukvy98TWMKoDg9SO+`qU#QDJ^Z!u*N|^DoS|*euI!S=iFj zhb5&YTKdOU#NcRd{UfW*3{^^l@LYG7a^Gbe&-NPFcOU)4!{2LO&cXSq`nB~cO;z_!sKGCUfXD&?RNrEpj`vdB0jB&Ydy z{bs$jU7BmUk*ITj%{>D{98aW{P}0)I1EyWmJ(xVH?jqw{mnGt^9X=MnlD=q;wNlU2 zHILhdxAc`hvn<`up6plBx20P}F_&Mu^^#ZoNZ-lQw!1;qsISad2dKnaZMeHRpr06hx|awsZ@VZDkE!=eH9 z2(Wjl%+q1FCm0L6F4m>dx()Zt9o*v(n~OM$V$C1KSMztyTG~I>S)OCs{{Wuq)w@dx zXK63Ni#+}jk;nP7$Y=Z_BacV^!Gn0Kp0g+PUahP<#|1XeVsPULq*1 zH<}_Gj-{|@pur@-l7R-63^Em#3@o6afs6tL4RDWXtYe|Df$RYkG{Dl5MW7``RzAJ5A zV$gmb#qOAA%RcisWI$+Ny}HNYWU|j@G0dWPMNTdyIT<@XunB_A5Nvv2)4N+=k))$& zV)4>_(KvgYj9;<-OL-~D*5JO_M2jD6NhRR5^)DCTHt{<4go>U7CF#FZP;^EeO48tn z?)c>KFBRLnvx$QGORepIdHS z76#)~pAx@}ykx4>!^vI`mxU>&m2_xXU_OtjjLjRjG%Q)%=#h9yT7j z%NA)82H+snVIl${WTa!&9yo?*HX0G9x>_z^+@w|rkp5pOrG}kQ4Mc{ofza>!` z?OoJj$hp>N7iC$>wa))~uau-kD_YTtA8hk5IoFw-JF^Fz7OXOrbHs_XWHT&aRl%x) z2A2OvmAhj5Di}@*Ru!yR&J8Ea%6Z|`;DA+z6T>;d>cWY^S;4A;NK0?B7=!aIP=O;z z0mfQKu1B3e=awEl_>xO=>yj@*MM9uYNy!J~b@|&hx~!4KA@U#~CL$vZ-+O5~ZDexp z>N;)2eK+B+2%0N`h>PIaEYENJgJ(2dM#N>_;kWnSKKm{EY`Y+wm^};1N>Em2rz`~0 zN>IoYGbB2TOoA)-cNP^A8HX!t`Hkam{kqd(_Hlo^N_L(;ZCz=(??@uo)r@lARg=eU zC1*XXi{PMOodrq5d3eueMG$cx!QG1R85rLwU3VL$nmq2RuQv@oASMn*LS6z82dLu% zCmWHuVi zb6F6k1BgOG93m7UA&$_80}<`2RECJV*!bcrA|A9QNUbNoslHX9-HHX)QbP&ctTHZTNjVlRjPE`gWJMl1gh)-fMf}S)NAw zWzrQ}P1+>=WhavU^tbg_GC{u)kPZif0<7Rr3_HQ$U|3Lq9L`5!zmG!VqnMx+6%!J4 z;IXd8;+rHkD(e(U$Vewq01|8f|k2 zPkAQ96eIuIE?b(O&HC*sZ}n`}m+P0e+?!gNOeSxW<4Ir1@gA>9UcVlB6br(-?efiX z{hBBFe-Mz#s1pFnk+WZ9xjb7$?r*9lAp0e0mw$O zw4}CVD1-z=QODQdgg<@b*Njp1Zk)?cq+;nKC`mt=GoG+-H7T{B=~0wDA!(hD~V5Z)Y&t2#^ks)&-Y#DimzvClxKC;T+>kV5TEQx z&LmOuj>NtmNlTOFBDK|8tvPAa@x3cnn#Foa%}LX3sJUovt2NJnfyaMgKC^j`$X_Gn z!A-8O`Q}ee@yqPJ{c^T>_S@?H8Yk~}#$LtL`@Ato(v3 zDI!b+?l)34%;xcA7;S@TG7kx35?8M1VA_l<+->sfs*1^d~Nj&nP9?Kv9 zwFb#?zpZ)vdc&{R+_wBs`;NfU*tKzO z0hpl zMtjQ13(a6Oj&Y2CM&;JEX|Bz|vspT%8?+VYOJlP=n?}3zhQW9?t75CsuF;u}Cv-fa zArE*oz&g$$aPVLNA0DBO17wUe8;uYx_LXq0ZEs3;lG)AXh zR9Je^;cz+@wG%-nEGp=282%DNb zeL@R*{l6`K(xxH*Z#Q+o@gh`2<6F`am>)D*?9piVyk5_<%mD?{9*VY6G8FBhpm-=F zN&z%Vpyw#asH9j zp-h;HC;^gpsHB!9vYwO-jSK()KmlVB06;KAB$35p;Yd6p);PNW6o3IlTuMG99vT!B z5)={=5C?;Sa5yLuhQk7JP#6jaNP;{Mv{>m10B0rO8`;K!GK1p(-@|utrIY1ny)_Hb z*G)|>;=+dno>+OFj}H6F2wsYgO&-@fsc{D6?w9Ww@SH15bAHLCE-m&W;iHfT z7hoy5lp=zfg#$1eXP9jZ+b!%&Ibg&h^#p3kce)%3B(4 zA9=WhP351%g-hNILZW1_Rd2(;qQlzG!;@RZe)#t+5M5^uU!V<6H26io3*0le<#x*0 zf^4jn^!K`9b27TL?SvRHfvttZNfUZ}g`X|(bvSlNCP4)`i0vP7(CUC}nJb~Ko*kvZ zi=TdC*%&C5Zs0A%eH{YZ!&zVGgV_tAX>p364o_4Z;*|?C3SFyNdrTs^8Gn+%zAlst zu*oyd^?!;p6w~q)%w=^yWSgF9<=!Gb3tXny-qh=OG%%?&Aa**?y^H&o%fdUBMOGOmi2jKWW{zG>r7gMnI-+HkP+JPOcqL!c%Qrk@;AI$E}Z-3}l0fs4$IAWR(9j^2N* zb}`fxJ#;zP@Uui3n%jVm5W15iYs=vHp5oXQq7Z%5rnwH&J;%J9sj@A*H8$P_qg&*= zF4S1*+IA)a(V?x3>ur$bW7D0u*(8y?v!7>}(cfO2`bU=X(hi}~l+5?D;9JKeo$}&P ztU*g=eLT%np!*7OTRe)uDB)blLoApf@`syWZW5#a zJ_m+Kh1R}fdIEoQYF8<>L3Z%#fR2|nprgN^+eR%w(F;&w@wYjmBJ^eA039o1>jn{7 zsuV@KDez6yHZ0hcyKRyqsHmwZ#6C?99&LI?-rfdm3(rtDCJ$kLHY}p*tOI`#2bD z6SwIvDWBtyAZQfkQ8`JDwGaqJ(G22_Be=_-TRgs%`1sE}%#bOWm1AN#jV7U)U&-Wv zw6VatR?4O;=_h(9oZ)(=G~O6=T)n>BhW(TbcSg4S!^d%K=X9ZKN1CP=XP%It%h|HY zNXT-_&h8osR%;ndh}>Kd{LI(%W{OrKYrMh?4h7fdFM_GN`NcbAK5OIGFwdh!bf50z zQ#+f+kcuLJLfVDM4inhPnaEAzGSJnej`K+1QGLb~u$Qc89lU+V>fRb|1T>vD{v*&H zML~!u`Q)p+kT%me+#7hB^_lh&^G<{0>$T`OuQ!s>@JH3+QC~5*$&0%?suZnv%SU|Y z&njywt15|+>meK0pgw~z?KAD1Lj>Q7*&If!e?kp&MBFZ}k}F~|UyES$N=@VmkVfzn zHY~tBe=7k~@^=_=7SVRt#<>56CWS6Nvg#T5PR(KA+ww?rG)MfVN_}Ca?uziAF*(y8 z0~JBq=kh31vZmGz^|T`Z&DB}{?NwOr#8TN6CR^b4!_WTs%u$cJN!d5|xtivl{5tBY zrDTsDFq*_f``|yL&2`ljwTA<64znQ;*89Wft7FZuzaEpOP&v?Y!1P>$vTfr9 z%bS-B+^$V~_I&*ii%Y%OS6Pi9`n*{}ck=EPuQGR8fU&6aI0l7N?6;e`%1_LHMnBxa zaRFmEIpi}_f2St4V!X>?p2z2SPr$<$N%I?7pS|kty6(r<+61|o2K={yrRiW=_qxKQ z$Q^_L%`3YCtl+pt%lZ>8v}hfJ-_S$y8TldD72@?pl5@aOjEE8a=@EJFTiZ@ICL7YT zl8>J~xKB9#+BPeKQmkv12ylzlf9*hiVE|Q$Z?+9m^ZB@b0$jq&Vg_)YQKE2@b~B)O zehW$bn6RK%_%|f(RbGr8w*ySuLo>iJ61RkCVxgpX8kolh5mth36)){v(QnwM*$9Tj zV8m8wGWCLYFNV3-=V(@E^MRSC4a4QBquG9NyakOj4Q z3}$(E%e|zCop?@O4=WWZ&P^83<HtU0|w)j34@`j=_O z6?cGtD+K|MdDd5pXiM7@1T}szo-X@Tnx)3M%avugs^E~rVT{pH8GyX^4a86$^wBQw zoe@x5{B~2eo>$XV4)gu?0p`)8ODoy1;}Rpn1CW>|>9w@Jc!Dj>WjgH3fk@M>^BagD zALyjv+)2|rfR8t{4@&zGKvRTqv77YIU$m*`AqpKy!%*Nl#04X1EQWQ6)LtD@!4o*G zt^i!Di3!6ROkO6oLGVCPU{FiNWWeKo%iVq`4uuhs@TyciV&QFrsr?VoFilbD1QgL& zv$&4P>P4uyy>$s};G{6HfICDFsW77lmFncEPcz(6FIfN#f%OpN3UCi#imdg&M5hKINOSlY6T>V(f|!ahphmlOGnX`9{2p=%=^{B z=F|<=&E-%MkeJ!330UA_acEB# z!=%;UH?hd!&*7>u)lW6~AB%YRYc_5#RM37W1KFULB^?#=($vcb=Y?AM_EeXxC4fhW z0Hg50!tLA_<**Gxe`DCZ{-=#WVtRwd*sBSQf4>fxQc#TeGr5j`r{T?rF=UvxH*m_* zIls&2xei6yD#oCMaG~e!^?kHFJTTa0CLw6OHpinX3 z!5dYZ$iWF4j_OIjt;vD$i2^6FIPQ)-u(bryZ4CD*An2A;sbHau!zO1D{53)@M0z=; zut#Yw8hUv7Ml>tnp}7F?;ROf?8fNd7mG)Um#@_xGlcU(O>(Gf%>9Q>Z?kO=8vryS6 z>{+h(z-a^txa9*U*)ja)_vdBTH`%}_T+PhD*e{L`+Z#|Kj8sfTqgy7U`kRGWjjKLm;yvo+F+=+`Q zQsnVka_FXp1-AWWdkNl2*!!uRmglUNauRfhojsyOp&bRcUFl~G4LeD0IZM&n9cl@U z{S0H4W;QdwvBi7Li1;uM**2LsXVYqW1YX;}rr})uv6}hJ#3FInp=ea6YxJAl|Dl6} zGSeJoY;rn`1gw(Y$En1o!Q0bVG5!=#0v0Q*plyH)g!)*)WS3=6Dqhk@{L8sLrtzsc zRpThMM?)HhDqGa43A8ldO|2)s_%@-C8^i{}yXh@?`Zl>_8 zNwkN;W)xxm4{eUuy@^(kEaOGBCd`{_tqbv7wA#f>AU@dNoANRdt?Csxdg_3X3zZ@> ztT)i2Gg~O4(Z(a&n(q7y-b4W=W&8s!{N=&iIdl`r8~EjE*d09RRUv4h+|G0dwMgPf z+aKlVodtOwuBS_OV=>?`P^aQg`kO)nG7RX%$~`r8U}Sy}6^!oZ^L^X(vG|cfS&KQl z*zn63Rw>-uUNO#k-}CVAvG`ZU6Yc&x6AM)FjvPmeSC0;tzF1pu)0>XRte6ron6j6_ z+|WN1ev8N7X^LoW2nxm!?BM36m!!E)TC0VqG)fZE5Xz`SZ>daC{3WkgPlL^491bgg zm($i6JWxPMirOyyI3{Sk_Dt0P=McM{fCq%ZBY>o@2}71V2`8pPCR%xDCo4`2A3Kkk zksXCAj95UF(Uv&o6TiVTZ|(~jrXM1;itmPPvf7$Jp&)V6gcZJxRd)+wWRsX;z&2Z> zVkP<6rYwHp&od?%wefCkRR7G)%C#Blo)ab=!P{0MS`MeMcd%v1mdrSzdI<%O=3aq;TmAn z!bZ)Gc?6vI*i|qgd1Ir??XG_{2U2(uq|&U$lEiBR*X2v#!id5q)0gpuymMG!C$M;D z!x)o(K&u4T14|03ydhw3&{5I$lP3SI-rxNaHVIDqxh;Rn-=0pZweK!e+~^q4-4J<> zO{8N))YmmK)<0}BR`NC+86Vzo?zpk6c8FZCeMMYO;jdA2lZe^Q^Ez$;&yQ>ZAG$hO z5!5~wE^L{KKvT$-CMninh5=dF^g&Iqe(nc_AWV$%R1_ctF(=^!G8HSXp6#yB!uD6j zB}8FHLsPrdN^gqwCoZ+-!W8t?F%8%j4Ph~Gd8jN0cmo%J0{+P(;xKS#BLMgu3*rud z&N^Or$VT)iNviiq@(x$Vq(HK=LpUhSURuCf8n?$?>3ii~dWjvivac#nuh)8@DqY36 zZ=+@)(8jDskgdccb+N|WaYi?Xj)K{$XE@&paciffi2;X$2{d5wr!C76xcGY&>p$o43?~SzQT=RH}T*9vXb7ctxzUvRO`x2_*<3y8w0@qzWRM++?}PHYMC~QN#9^;a+MuApkf)$G;qI$wiCgA%M@M z6+Q&TIH)xRwZTt$^cKVYcRNivO1{6mvw3}(3u#sYn#7v6jiT82lN~VR&?d?iHEJ+= zYtn%4PpOj*MzUTBUR}X60N?!1m-yl?kG!K&rJ9H)G-Zcz=P;?W7(`ZW%i>lVIUxOV zPZRd4%1t>V+Y$(8S1xkp)#3}E-U0!bt4nup}2yMFd zajj+TVxnX<-NG_!I?_m4oMJ{;uKEz(^_5%32%)i{IqhxI4}_kv!0FM8P~HtwwhZ3r zZRL|08WyVYvZ1;H(E8CI+^d@p*p@@le@zzobkt+mWdKV8*(&8H{kEebD+RC|59~Hv z%@L0zJF0Y`V#d)zXa7mY`LE15PAjx_Y`v-*wa3VM)fdmlz~H*{#;d);Ug>(0{wrO> zP@Z{eOR8zuk?N4c_pgU`X}LrQY|^_|=LvM1Ki7XK)%ZRJ^L5cv5EefX-f@+p8EL)Yu^K-o28b_DKC2&N@`GRGV|EU z1-0S0y#|ZW6*e-XXXuR`0n+f=W4@c~j1Jg3YrB<|lttY8q{ib3n9P2GintE@T3dEd zM61d7?+*bzw#e8TK%+p#5@Da`HkXpzZ|dZHZhU-}x*x^FhjRPm7$rv{pEBk|tx6BE zZ4H9N6&@CF1t5XuAB~UzKB~!;4{}eE-Y{us4&8`C18O*7A!}Qf%839ll`CaFIizwb zb&?L`qJ|A?@8n2TjgT-|?xPu_=O9;a96WnYrm#Q^t)M##v&?osA2AI~$xIYw4+*68 z3fQtFL(2r%GD~T9&nPDefhpVes|vVMb~F;vWy(|iEz%=CgQ71sL8%S->^m|w;49|T z)#{0KcIZrEa|_kE2q_qzDYV%)Rmi7c1`(N)CJ898j4}*X52=b4N9g0fkvtNSaB2Pu z>qFmOG{)7Jv9BvVR=Y4gfkEsf=3znGKkO|y2}bNg$|imYqcDWrBO&LBs!JXnVM$qC zs8ssTK||Nz16Lo2aDMSQEVx$jgCWA)3bhhj)pQ=jU5kk7SZDA-&!3mGgjfq!hWaD= z2=7X9H!`f_m4A#niZY0ycZbWe7R*?{Wlh0y%TT#$Y|H51GIb!B{+?T^u6UJ)32c~nKJ2IiMuGb0i zz2$o$6gTlVXETX(u*j5cdS7!x4K)I=$i!ob#unNA>)SSR5#eQtWQG~G36OGvW0fix zz(f4<@r4QK@gyU`A{|pwA}0%hg>nI3shpa*vuk~b?A6Cr){5J z(HPdxWf+&AMn7^&M>*9Sw!tRIVfKEwe z!AQ{W;V3NYo33I7go!9+!&-}{g;Oa@Od8|*a-^;DrZbV60J@LLR=V&8`&EQ#yvl>9 z=knXB%IQ7<^m^M?4|Nj(2Gg9v+rIT}$JG=sq$Z~@`rN&cVwjo6Mi<>yLx+c~i*%EX*2_TS6=`4@fd}u~;E(YjCS$EfaaSG?gr6?W=C!!jGb|OE49+u) z-mGv%pdBEj+AFO5UKVfB)7APqo3_eQPu=ToxT!5HLO~)zshuFbVS?@7H8HFdh%%D?DaJhZ!u;ke8 z*TQ=(-Ok^%I3e)(7BF8PqPWSbPMU6pE!mdp>c&sv1ZIR~ae;r!ZZWwMgl#7^S|eNo zhfo$UP%yi^+tXByRzWU;qMi@NM}dg#pT=RvkS z`|)xx*tScf8gg*X7xR^9$ABRHDIh*-$rDbh7uiWxY869~qz@)B{{nwr^_e*kTH&djTe9xdu%z(CYdI)#b@OX^gv* zaL>rdP-sNk%b!Mo6X~wXWGXArv?qwbzs~3%=e4w93PnJ&F)|(yFC;%!zli+l_4?iG{%b=!eeEB ziWb`fy-*>Yp^NVp-F1as_}FGZ+KnLA)jC)F5d7m#hu(F^%#hG$tgPh*-IvGAMd+bs zMLQ5jJw+#~F~?g(fzX_v;9O`|;2AKHJ~7E|bnO5l*6=`Z5=@Tm8on-FsW1?&BQ{0f zi;!%{NW<``fGR$H9@4I`OUR1wzK1GdUhqSF4Wr;mK)s=wF3B+8a$$a6L1CuNb~5|N z4!mrt90rz0SL(dc_k`Thxa<^($xO8rGugG@;OUpZx#Xlx{^Bin9*!qbCS=xffs~=9 z$Gr`#CZI|%9Wb~wZ<8=#KPgC~gDCoRkChN(AB6e)sf9Sjo<%z!a4`$4!FBPDh6Akh zpO`VF%wEyv!-LzA_V6|I5(TKS#z>s7!fb2re*0f(k~nIpxUxHVroRC&f$YK`=2@#d z#t|2`Pcc%mJbKO!@X;P{p~Vk9F%ZSMw6WVcwc zLCYyHN`Hl@{&U4X%yW>!HyLkjs~#vPQ7_8zP0H1YuryIQ^@sJgpRQ5W-7`lp z93{}ipD!Wm4*Jfbz8ncT+FG z#`2+2v?=|3#2XHzvPJd880^~1?NI_tvyVR|{So%6?`WLy#FBv+ zp|FQ4;Fu%4Gz|Mlc;K~EYWTzEd%`OB>CJ!tP^wovE5J0atUvA=LSboyyB<`TlKj>G zYo#GG>ECyXH?xtmh4f<3+NtDR$RoeI7z1>ID|79qp{wOkC6?<#VV3~8 zLc}qao6MdDKUyL-hRF#LTN5aaa~^cT#40>tPF z;7ttw(9}#ZuTIRkHX~|HW%FIBIf4Gz{2<{w4?-!RxQ&>i+-+Dmb}q_?8Ie}Da#L73 z*SQ^M7TAUK#r$YK@gCTW|{J+vR3GSsNCrmOAEV~Iqc~4-c zV_`%`1?EJplZ3RBzzcYujc}3JAHF&hx`x;Oji2qTp~}F`+E-#BE!Vae_7w>u@^=i7 zg`o98Y`YlhAWxSJzR(=ykp`1WLQFWf2T>C^O`3rWP3}@KIO9t>Qkd*ry=49*ZpG7L zK8Aeg9CEv{!Mwr9Jc|!A^>s{+)UmsIJqxk<0I2pO(AHhxG$Gd$ao6G^r5*;iny}J zjlGfyC*Hzodt$w?ntVw%m?$h*2DCmf*y}7v?FT!pNaAC!+HF-yrRfzoe9QMoN+*c% zo)qtYX0GXBI2C&Hx6*3qD;nB#>A-#mzi707biq zBODIdh!SLRuKidzDoSl-H9An$dXi{s`|?%#b|p7oPq>Xjsa!5YiyI>g0#QyN zYyR6K{6Jnxcy#NfA6S)}Lwl9tx|!@y4D-|$#qMAnusHNd1wi<}y!3v^lo#FT=Hue> z^h0R1K*D^6J#5SKsF_kPEN;7MLmF`&og!iv+k8E^39cxGq;rA7lRib5&w1TYz-cHl z7mGYXO_Z2`&hiYAATkZpZ#qsy~JiegwMP~=cwLzBlTNzuoJARBujZ9&k3c(Rp8+`wkCY>ewr&%=_FyNS9WdfxEZ7BE4|L}REa>b7Y(CiLL_>~4 z*d_lg58^qS)G<=QVeXGFmL43wC6KahtdR0=-W^DDrM~jD`2*DfG^x)~nUrZs5hgE5 z5vt>9f+?woZT;9qZ0p?Cxh9089c9YMFD+NcbUvD)X6=V6j^3<&J@I4)Tj^AnlC{E| za>wU9D~6W)Jk}#XilXQ>VTF67-`>A=UPl2lClS6!P)GaZr!U%@h zJcC|df&FaA#J@>%bBjxTYLFCyJugpU`@);n-$DrHj6!vv?q|QN4TO{{!DtgSiT5kf`N{QA$>nKMa>h3@erQho?pu!hxcHZZ^FE;B+MIt3A}=6#Fa0( zEr?8P#xJ4fK_NI=@!Ylfl2`4B+Mj5FBs#+fJi^gSM)cT8iJIucTFQM@E)ymkQ1C1p+MLw!O%PU1 zuG$M2kv87CPU?})cYStV$|`I{cR_}tR-Vg`T$pnjzE-AZ`X0wH1~*z$QuKVvB-S}b zA;!>>S7pp3_o3FJjafH?Saxu%J@=XADtg zsP6Ngj@R5q{1-ZxvvH+^gjGh9NVDD+U7nLYda7GEvb6-lDD#GAtno8;MnQ~Icvx>) z@q|LZOR9Q~=Ps1mYL7P)ZGI0jQ5zZ%MQH%7dJ>D7CgG^jl58PO*SDT#R*x88gxv%a zWpmtLi`4Rg2NaKnB(3lZ=S}5m>UoUn%0Ek|^%l)?KXuwVPF+5^(BvGr zi)Gs;672t@0CAk@luApAtlzRZS510h9pB-v%g1UeYyPJ%6gOrmE!laZQ=c3UW0P>E zpAbua#a9w}x0b`j171kI+VTq*<0@~EQA(pvD3ykFXBFl$hmfoqJtQ2QgUv=y0Wf4P zI;v$Mfl3*VeoWXD8V`r~R*Dq?8MoG%W{EZO#mYP$Lobu#!SKmU{+ zIS927%)iTsAAqo%NDb)jgpQUDh+3n^jZei-9a^va$U(#}tAUhS)FcAR-XFS3j_Thy zOFOO#55?{nLfLGwD6%|h6ex74s3>eA1+EZR{2~jKAn>VSCn*#LX6V)$j^g5@&0OR} z6h9T0p%Bu*tLPl_iQZ9g@GejoQt%k>xCM3Z$b$}EP6kBhOSd-FR+1KPsaNX7W*Imm9 zd57a=%7NPcx3GL59#b<@$t{FtH{E}z$VUoR;@L|j!H^uGJV$Qyt3lc8FX4%0HTT_tS#19s8t^ z2zwHlmc%;FJ7Wgz*Iv6C6YLZ>kzKm>4@R;y679?sP94*P89bFnk^%7ncu>L#W`A4xPxqL7#pUTl?JPcf65BUcWWM}}~? zDo$WIE2xl5^kuzEf|_Cu$DcM3XaXU04~za;&}r=z`LcriaD~!Ql5s zh+}rh$6*0aDRvyb?yF=X$K;EuT~3*LTfZL*>fup+q&FIaLI~v}Fx*>`bgVR$JY27Z zaw@xHY?yqT5K~We2Q`=7ihAf}?fJ&L3ENiiWxEFc_ZuCY%k%*E@%!5G}`gxbad zKgO9^utBI=xQT3z1iUWYtb((;Wrqsm20nfZE#Zp?fsl!P!O;dNyr5IzvEcRnn_kk_ z?VeN)Kkc0wU!*_~tnAzWo57Q8gIoFD!@D;!f)*wY&zI8Czf~h6Cf+uCq8*Ymp@&3! z=&-U$5F6uYIeCcX20^r}4J6NLWEqHl6{sYe&nPY=-P<`%U0{9>OIkA)7jHc`A==W$ z32MJ+Oc&_2;2Cl*X@vPnVxjyrgNSe6Ip$#TIUF&?ojlxO^lE!pv4y|cvrmh`DKds} z324s!42OffM{@!^A8aKKS;7Rd$T!Zv& zOkXHR?qC&P3TfshP_PNf%eqx~z>mBRvm%3_jLl^NqOXViE8Wx70WuNgxQAmGL^2_< zfn4c<$!N`12k4Ayc;1=;rbyJVV1-T!OjXpvkdiarP{ZBuqKx-e;_DeqXBOt|;ZF1Z%m@PJD!lD0E7Ov14pgj0W-Vix~Y3hlmD(ybT+?E0U z+gC)dC>=n~$)PiRKGA^vaMEh%rRFO#iZX~8ihTGsAXDNa2e0%1WHBpo$~B87rZdZA z87rmlq6-(>f=}R__^;HD+W%U3&6|>dtxb95(CQRl0$B4p1kcHzj%cBHvCp-g z5g+q2;ZaogyHfmV=i^+7%TFzF3b@Vx$M}cW;)s#@$a0uF4T@a^T~s^q|7!B7CS7ApA_5onG54y6nABrn63i|n<3&sNF9B3Sl{iLM;gF0SnfOH=q86{6fOKeA;R)$Mk+iLf@{dH=0VV44 zZn2ON?dFX1C9qd44<(r#v6P&9Nnj!M_`ZLXMe9?_<31y>0CL9?8ucq(B(x9zW#7q* zMzk&G%LfcUQ0L0gn6`%8vIlo^YXzrT{*a%nWbYIC=;9=>H3-P-%3d@i?jj68tl0SL zYZX&eD2zGE+KjB!egu^T;AM6i3SvM=^m}uvcN%pdu-_)w@m}t)H0bV0AacvX|B9BR z3<8v3(5BK-5td#{ES1h~pA|o3PTtHcEGG*vwm0E3N%^Okz;_Z`no=NC2(u(S9 z58gl^pBs(j+y$sZ#98d_Y`kz_z-?AG$*1FrLA;pN<+A-U%xSwn4x5f#4;a&8-+}`N z*wiijcNy*pLsV6JN_(j8&bGzY#j}|zO8mt{*ltc_nc(Fz2MLG}gwP1G6U3w2u4Q8G zlp=f8Q%G7MeA5I6*0MNlSAlLdJ1TaO?d~|#6T%KQm;$s_f1-s~6+sdq;Uo7p3K&c- zZ&4Q?sUs`Qib<@gBZim{jvfaP-X(chCD8N$5$cqTO@dst>jnr-iVIa4-0T6k;u!$X z5?KYBvqJ6|y_Zx2`pIyVpcFhVF8Ju*I^abXKjXh052N#Cz7 zMZwW+4HAi!fk?b;&;D25)9|hwI-FA5yxbs0r+EN>%tGmY6(Y^ArvK)okYjKhQT`_% z5*pB5%fn96F(lpQxnCQ~>;q5u8vj`m{g)%FSnot8m4H`M4zMtu+)luDCEso6T{|c6 z=LZnrR4y_)2qW=FW^vp>a%+D2oE%JWJ_HwzC7q?N;rAKeEvby45d-d zfb|*TUnAAHpqKuLS5J3lY6#3CnxEY2TbZ}9bEjOPLKLV*X_ahmw2{!w7N8>-?$2JJDQ7?QD?60Yu! z;dLWa3s;aTFgWuV$LnE8=y(z_XiLv3Aq{c>$4w)eqgwXU5X&zW=3$Y$Q&oQUXlfoQ z!U3#TvB1&uKKu?mxLA?RMd~yT*Qu4vVk7%#%aaSxVwc&P9!3>MA-Br02DMPDdL9Y; zad*6z;Ebuw$Q0t%%F1?Z^Ft3K5Qs}Bc2b$w1QTSXpFGlO`Dbf2!iV1cMC7uMU3Kuq zjAo3HCQazntn2vxUT_vgFFS+;O(s10xbi4D=!ss3RFBGla9xY=7x-4v_Ms z@sehw27g0EJeUf5U6JpRH0|1iAFx6r-&Tqsw1+LRDgVRO8X75Oi2|(70}w_d>{p5= z105mtOyB}631|&KAf;oRaqINh&Sm*fRxq+3*8FlI6*5l&tbqUuNHh*X5Ovc5007Xc zYIH!ggE>?HY2qcUHbat)tg<>i0vR!S+QlzX?mq^qA2 z005}E8}b0$0JH!{PK?+p4jklSYNcDaHxr^Z|fU z;7?3m#EtDk+}KPsH%M%+<7N9CFWbv7ZU16odl)9RZ&Bo3OxuTW*_A5wi4|Dn$r}yBp{bti4`_Cx+SDA^)XJ3+4 zo3E(sPXK^K&EG;IjaUZMj5PB6g%JtDfSM5~sj8~lu!lSpdKxmkw&+qd4|!m@P@=93rxD8flxRCG7d!z;Bazs5)fY3(^8q} z9)@8V4}lU$ddU!zyhI(86H;&Kn1xquTHB)NB`s^Vl}+8*XyoCK0I``sY}Jqt8?7vr7Zxv$ zR4!D!2$r<*V&{=(#23Ew$9D7F${|i>)^$PutKTKMUR%{p!o-ZAvjJuWG&M_d0cRUVNvW)>i7Sg+2SI z47}I9?i}4Zl^0`{FFL&!*2vehEoZ!Jxx7qkjeS+hGtPH4Tgy_Jh}DZPjih3I)eDK02jLkQ=%g(86bBs%ub|`UcqBZ86bGI6q&VnsPClhlDS~Tu&92!syXMS& z?4oncQ(CdYo=$p%lp$r;?3!J3?Ap({?CafTZg*x2yIx5d#%poJSWfH3ev~7Xvz^&e z8FmtT84BUM-kcGOk5cI*omXEA8|$knb!WB~off*+X|EaOrPrf7Wyy8A*-^p^zKKog z@LC-$m5J{;%VjKC;e>Gph32ROozNjgi6lu1rC|;86+kc$s20kSD29O~CpO*_fB=I6 zB2h3528IG-fj}4r1Op;rNeY7@j)xcqWXds;*(QwvOP@bPAxeaf0k3tm_`B9e;aEu( zu35+ira9gynVGW{3pwh6lCpK#O0_=YWAL&$z?hs_u#TWf!O7J(p?ZGk6Wkg}P0Rb1 zD2b2MX5d0<^FN96GosC#pNZyH>S{wDHa}w>%fDD<)l_If^$w#-9c$#UYkP zPhK&a&NGxYz^srwPnb$;r#%quNDoCLkrPmRl?_yL+70T%bKxnr3Ep%6R{w=e08VJA z^+y%-WKbWsV(F!rG$W3qdvs?y#@9rMB1kN5q1=k%SF1GluUGmeu^LqmpSPAGS^JiT zo+fjmC+W#1MFjF^3`OO8dr(>K$*|qA36|k`$?tjwvf99D@}?yUE^YqpyC~Q7nBGBB zEoKnE|G$$96(IL0j->vI@W-1GyY>G+>~gKP2rJA?)SJMfj;tNH{$jW(8705KG_d}( z1>x?AC#x)D51@EiWZUERj%It?7K#&*L3pZ>!M!1HykV0vP)9`*OjZPM=EX&}Xyk!; zIT)944B?VM7|~GbA9ZNVAU~tg>3{oOINf~_kh}hfv}vrnf+9ekSMRVQrPiireSScF zRYTndoB3_Wo-C(uw3IogUvIg6V|>{f`tv9>$!&eRv!nwx66mnXD(IOJP<~kP15_{W z#3Cm;|GDrMTLf)DOBBpXVGQBMAY8Gb>z}C+=!hC*{ij2dyp+xvrE8#Q7ysheV}NK( zzaAArAgOM~MHP`XOP}@lf%>YAx(#mT+b(;uB)JAiZ4uGq&vUq3peF^2RPCm$9NTf- zq+3p7rP=d(&FGIi&OVwPBofKgJz>@E=)7(vxX377o?z|7^_Z`u?x|^I^->}8$CGZa z&VyH~6>Uz%_FQpgD(n!YUM^Fz!Rp@l2NYyz7Ls)_`ZkY8-k+T?Kv$4ilRq=|I#~>X z_pfv(9HuEWl``S3pnG@(WcSwUnW$!DBBF>EORl(J>p&hz+p1*A)qAlbvSw+s9zW2&s!_Lt&3xNsPnIOF z0YDofdc5--mJ9SsL6NGxsg+}UT$gmqQ>$j=sMP?c)8`-MUMP z(ZLtCd0mn6O6s1PR#q=9WPUv9_Ue4_q*~GDR&16VC;Nm9DKAqtvKj<>@E>io)ZD4+ zuGjbDm#ptZ_GuRyYfVW;Lb&8h31HR+N5W)B5W4|Bjot<~Jpxxv+qQJ(P1$JD;r`M|4!5ufzttTS7Bx~JA5tPo` zD`-xsvFWXsf2gmuShwM4uhrcrOIp`}u}_Px6uky)2Ehe(S^m4(4?ctIlH78NEzO?m zYj*dhsiJY%jAJD6g1rVH?JDEee~xS2(a$|R+}+nXZhWrptz#t>Y2l{Mm~Q{ihfk_i zjkm%kxp9(DWLSAAMVO7~0P5yL5iloi)U>;*uGi<|ms~4;A`(qF$KPT&aiY^d320Cd zir6KDi(=)EfbxS?K5phLbuyw55fn}gWXmxQMB^A2rPzo&hkW^iJ!RkToC7*3nodh= z4|48U_x*@;39NCEMo>Dpx1c$tX4AG_{?NYGqHc$ueXDbyEU8`t#-0}4QuG?|3<7?p z*NiOS?~(7|o2CrzWO28nPcd5-ul9|bh!_2<%@2UY2>c3xwi{VqzY<>MM4u<{c5*)t zxv_EyX@e|z=!A!J!*M?!9^&Gyj(8O|F!iR&;io)Vny$SZ9dDlUK^+kV;tY+exws6U z;nzf3w>NE%yc5D|PuvRTWRbvl3{;@kk;A9j(3FK%pLsAFSwtrgpDN)6i7P4uWqUG_ z6n+Ly0;jOU_eWJkj?ws&h2Gz392pJvW+Dq+ygzi&P!3Zh#;h%!s17V1eXEH`Aa}5b zEQar~p76Iv$_fC{!`PEegAU<;o}p~bC@pfE@vuxh~nwh+LNs+sy3dCx2gCusYu;}(f zN9ekKga8BA7VdAsh5e+XQ+wgv+E46B z#9$#DgCFL*YlBcME(2;;C}1kvxL4%DIsFR1p$}N!&t>%5cObKv{mgYKVGWz<2k4iA9qz z)VX7fECwVAPeq>eJpO(f%1M&DB9@Bz_qK(_d&#f z5Av#?*#Xi+YeTOPBf8(G0j7Q*6$XS9pi|w}A{ZoIj*9mnp^FE+(=Z;Px@+&o*!D@m z`el@y;{riW{(cqF<^sXed&#THhL zwi6`S`SX8p-}8bbEkJimLhnQ&bL+?|NfFmnLK|m&9nyfIVpOYS_&Rn|`dQ7OZTv?; zA*K7yq~hj@%o+>=uTj%>;8x}@|0Y_8^e1 zQy&e+@&Vi`f5Z|yG`#uUn;m}?%F=2B^fSzvQKXPKlX0KG&g_ATlT{Obj5;s%lgz$m z(kMxYGpCvJ5gZg<;-DyeFmOf^=-5APq>v@$V+yGNqFzQ|r3}1xUcHlFGkm{04z5~Y z<4PeiE2lV31Y1H!H`0iV28JcllddOFj|o0;^phF?rLt4O9o7^Tc5^($kbA6^9=y z4zrxRM1em}m~T@9;|QP`aW~XNM2RdLE)E7T4$GsY#fya@sY~1ND2ni$ytRD=Q-K=~ z3sfK7&E#Q0zN@$WP{3Uymm5W9g2;re-c2j$=&l}RJlWv<_RD@F7o-NpvtGUcX+6Xp z*{(=ju(XMrY96%^uwxqj5-SHOR-4}d_bX7@H_~*dgVi2{x1eoO9)8%M9|LXe+h5~I zl=x#j>y0K_O>c9&cWypCwIB{G7Z5C4-!UFGccuXxY{8C_9x1a&0mFGpjj0buJQrRJk_X{c(+n4G z5cVSd5rj}PaY&JyYqoI3wYF>5jx3=NX>A_ER%>d@jleTB(vVt0N9mxIyxl-_1($EV zz`5_0`j&{T)r7lSU9Ahdo^Mk>-{d6rg%|JhJ{jl_0{O3JU-L$ht;qtEvIIfJUVgLU zAR6l6k2poeUqGk(nWE`~^4z$H-v+)Sglhr>j4}Z#%(Nvx@P?>12h70p7pC379^kYCuKuKWy|0mP=T|O(5k1^?cKh4bQ;S;7R3I0uKT? z0-*SADZYEP3?+t18D}5Q+p$hi$>Y&#>mh6kpF>#6Kg6SVTaTmtNLVdLofLi)2(aLG z)}MSOgrhF?N4uezy_g&J6y*;@gAGD#f<6@54~1|6M4hD10tg73=1=a2eYOq$_z+%f z^l5nC`(*eX!rV6d{A24Or1ZfLM1$?!@}qsu@gxb$&p##l!8Vgw2)_@upG;F7V_>prlmY;t zAQ6|RNrDOD5GAlfbP&n}aquvZFpzBQgg}`bJP(i!x8Wd=ih5H_#);x#z(E3!qZlTR zfhyWkv{Z!hL`)zWr#x?LXzcxYJTC%T~b_O3I=`tk%lzii7B)HpY# zZEx17jDNIF3ex)dZ8DM~wj|3DA*YVGNP&OZ37y&IN2zw-$1r>IbHozAO>UdSCM42M0ahL5D3t0b)l^-?gMB#4RS}N^ z$`jFeJId28g5QKQPZ@5gEmLKjLr17cyNC+1p#W3h&<>lBjoWp0lRj;@H&jUQ;T}Y6 zegpIy4rBQS%*sJNTkil`)#1P-jIO6sxA3Hu?@rH|ur5z6Cn8kAEY?yssl5SdUY z|2-8xG@NtrKqwVHHZ&$H3OyWp4-*H@O%E6X-Sg5zO05Ip37^e4AM2}zZC$B=GzA1? zi=WLHHB9fM*tLl>2L(O!W<2itswhv={QQ;Kj5SUi61B`aB*sFP)=6JW@-3@}f1PvRJ zcGOf+lPRK-agte37=0oI4elFM9xnEQ_il$jgomNqoI~0(?aPpT)!res%c@<{DY^`` zq)pQ5NnM{qxBEF{Peu3WdKuC(wWnGJAq;`yW9*Rj8GD_Xc97QCx0h+BT88~X{EpSB zeKe!TM>A^A68EKsvFDcc)p{&ydMwH$?%xc~-wa}p)WW>Uki>P)LkLBoU+kxER02Ip zj#sb!b#_R6`+eT%5Jqa@;l*s8{rqBP;nZf^e6d4VZI;1LhwL|K(ktUbBDmcQ*3fK; zKOOK@TepkVnPqH}^0g!_Uwe)hlDJfDJHWx#NHvhK71^b**j!g8(%q0K4`m2D818TdUXAv9Dy_&fBgL5 zeb~hKKF9jgYr7u#uBTXgk38q>00u5^o=W5!g6$9_7d&4q-)n>Il9xMCH^Z%AG}0jEJd+m zGtMn}mlD52B6$fUxi6Ev@f*Ez5-G_O^wMVWm2`c@WV{4ci^+(|h{^b4GEUrU0*xr6 zq%cyT(Bm|mN5g4!Fq!MJTpG*5%2*AWU(#&*#mc}?Kz^|>nF|XHxs7AHPfddoeagb;@R7X)L_dpzIAozod@~G-`C7w9S zVd5U~NFGcM9B7y%h)7=Obu5?z=@FNB@CZklxNl5c0}a@&lY>suNB78+UTO33KdSQ} zIz^|Fqdw6ie%Xsp^it?mL^_4{JXUAVe}3M}zVclI12lLL!xj(#fk7~=A}b9Z#IOel z1`H~%BSeIV5KsV!3IP=c5DXwNDWQxK!T@?$@GwBXhlzs810(s0aIi<%=ag1xH+A|oZ&rH;*h=V6GDVRKWlt!ejiwReTby+T~t7Bm#U~ztR zEE!9}#$o~m=CZN)g|V4n$-L9CBy21!2^))FFr12atP2AIhI3t(OUCM0zdDwMG4YFI zxwtr%2os->fnZ^=IF@%Thj6)A&ao~EizRcpSbn)!ez`>2Q51;?H$^%E0=b43kW?Vc zpjpNy%Q($4qSeqWLsE-o88pkFSw@y|nq|C6a!Tj}u4?;$*PC;MXKXKMmQl)6f`sdv zyz+)+rn%*nTV9=Gl7r#=B5RwwxvW-m!6c_75jd6{_JCs^r&e(+W9VIAl5-iYMYR^I zm}gqGw9Dl!U0G_fz5MdbAJsB!DJ;BP(M}vc(ZppgK>%3_;dzr+XhL|kmdomBFqeyE z!@0;7S`3lTsj?#b8&&ud4&eUv91h;V#0;tU`$w;%!Fp6!QlL|SQi%O7wej^t_`Px zgK@DaHh;#VxvUQ68q7Nv7MN3D{sxX%yI8zPVf+tJASe5wn^= z4i+p3iMObP)J6(TD-}~CGY|j(qYwa)a7aWL4Td7IXfPn2Gvfyo00C@@WI!k&48*~3 zFcb`gLV-Xi5D)q&~n3j9X*L+%%Hen*~c|1xxQ;9Ya40 za(##oKPL8R?h&0F|;5qCQE3AgGX49f*qwvXof!~Q!vIN+`sIR7IqQzLqY)-?cF}_Nz3|` z#7DT#J!?I!xD*(Xc|3OV`0$7%Ufq{{@8?JZ#tkl_mLd(%2aYO3Plf-hf{y6y?_}Nw zYd`-h3y4O25XPbniTx3^&|@^PG@RsKE!Q_1|L|@b*f0%@_>p4I28N(n^|{}ZgFuTF zT4l>wz_)av9~PQ~pl>3}qYNX9eV6h)e+}&S9c7`8maWe(mTju9B>ouLku1p0ewLoTp{3B|FT$hnDEuvt6@dfzMf!_Y!g4>dB?{#(y2oC^PMZ!e;C>%Qk42oOg zNgC3|Op!aF*YSALhdW#zkxcg3V!3E!cLj#c@B6~I%o+!lVqWTjXh1!9hYZ3@Qa@uO zRef=0ux2fYj?6BpL<)i#tEMi@HQJg;ea@2?$T6~*#!HqaJj8f>4?31amUXrL5S_ey zU2hIE+CZRA;M{sJ$3q!a$v{B%;gp>@z;TWEcWb#UiqsCU8A&-CnrX*F!s!!G8D|P% z%EM`;5*h)@BdsFk$bwkd*@%JzhbK)`CY_i%zK7aBkK|WDXTFa2m}_v!jUG?n1@#*` zkm1YNoPvOVw+m`gIub~c2*;tri~1)t8NV@fxBqOc z6EPkyj(AUXXjCYmG=iC#8?548%gPuh&Nhoj#|Pz-aoV!A`R{i{2t( zY9U@%cl)xsJ#|#41^5^U0R)cD5l#03ZNhJV!A7(pHyRC99o^ddP72Ubt&Ze>d zt#~5HIIHR|x{r)jP2zu<`e6BpSJo{B9{jT72T-(7d1gj_#y|JGlnb$bi#xv> zD*F~I-%;(~bwSMjM^Z4@pvbBG2FShFN<^kei2V5xcM=pu@`YU3*@Q-4s4hQa-M9c? zK%c+GUaurd5LBaAOn8}>mi4}~+mvmUS>ugHQ}uh-eh~+buASq!j?T+Zh!&dqwR9jz z?bU`_p9Ufy)g$A~;vymPhs z|E(~fM~ctNU^yd0RGk6!LI0-hHBW$lVxwm-#=6+mo%88*fDX07&S}aN()m#@ctLR| zyx=JZ->@wZB%hV4w#J-f2yM8e1G+OqV$kC*U}Adpd6&I?VVzo;jRWg9dr5+(i*gKC z;~~IPBg;_AnSz_HaN^wsS4|~79Z#ZVr~R=diGNqlrdiIN2+VwdvTV3lWx-B@=uv+P zGB(~~3VfNVk75d*Dk};i)4Wks9b?j^5#wGKvXbO_K62Z zd*7nuvNj(;BgF}ZaY+zoycOwKwwgdY`Z*w3ac-#{X{5YyueHJcrI8>6&_GlxnwQ3z zm}Z&CfdHF4?@+bY8ZXf)1tP*o2Y9NxmC*&i1CK(1l8OFXx?6FQ2vz~_Yb(wQ$xk)@ zGLPKV^5ICL0VUS0%vT&C?aOon(d_2{T$*?>#@>!J1pT>Ac6O&6H@tP|*)wxk%fFD_ zays3ezM)|e$yUw^wI1-<{OwL_vW4#oL*g#O!uvedspU8zb}g#Ynq`)B{fIk7XYwOv zx}y;V0iM`Hs<2CN`23x9RQx*!39hx>abOwL1_5kzYEAxg3KaaAdUW@IIHb#e)inlu z{XBI(A*3v|Sh{A7XrGryb$fa-sOjK3RrG^=q(srE#H5$3=fRZ#^pq7e?9(B`8zky? zL`ac1b^1%e!Ic`kOcO)_0YG54DsFz|qtY3txJ&e&poQbJL%HQ0LCN_$lC+l;NwpCL zeJQ-k%GC{^vZ8A>-!pxlhE`m{dBTVRB2#R+6x^t|CdNbX>j9G`T|i}Pks{kqI$ z>e{3HrDdj^hC`S2aBbk$%#64W$R9<2vsc8LOAH2 zba(^|3Wqe6ilm4DgZNX1nZLiD;@iVxU%a+SvWAA<4Xs2}lKAK`42q>~tP6veojmX; zV$?Vm8=w}^0$Zb^zDg3b@Uh)h+29B}4Q_Y{S1O^{UV}h>fslp({X8}zHnZ$UZiEpH zOD6!5jhUZC_(;dJYrF#vV$KGt8fvgiNX&NGywCBDu8kUU_u3h_SEb%~v z-emBkS=u<$D!kESrL**xgD|fZ+z4K{?I05zMnNR8WPN6vQ;8R5?5{7L$2gl~l=Gn? z@kxDs>LbbtvuMAYc1Um-LBbNcn;3;9IgB>zi4nRAqC*jQ;ro$Rg$Rp@itmHYt%y^( zPZX!9D^|9Qb8UG#Qvzcdja($Hl2D2n>2qx-KN-05vzK+ZTQL zlF^&+IPr(k74Il7!!_J;_);Hp#6r%Wfl_-PFilk*i2&5tJWHU=siq3hL*TUmhY z8@*8vS8~;Q4G6d{pzk*L?jEYj)igTEmVhZ6PZKUz9K*B1e z%YGhC$OKlG02MJKmGn7~O(N-leiZVHyHP>Rxvm!8%+Hm-Z71tsOGgk!;C%EGnBX%p zSmZG{0RR5y9OFJ;U~2M%hk}ijv|dG@TxjA7z+I7A&q>@8wG%B!P^b?Doe}-cH&YY# zxY)z6?_vApsPh@v>GE1#4a@%Fz@g{U>ju;zLM*0F%lPvDTVZ*O{Ipc0Seugg0muZ; zxEw0N2_t;5G0C2x;gv78K6n&Z9~|&ognzlo48GMVgeGaeC!@y}CYv!bNQwBfYv6^^+Xh-_Kal>(uu_Xhx4dQbH%xuZ!XF8VbNJ(X> zpTrl~NkVB+@PWxO5PaOx2)e+ksR#}B+Dq9J1%`uUgBY_DU>aF=6-!`+A+F75$oh@b zU1m1Q&2c*^#uQg(3PxeW9rJu9vKks8EVCPBYyvxg&1j-TbYxq~3A z?)^6O{NG3rA+UpA@rqh;JwZaW>^QBp}gq2?S!nj$9&PhHPJNTvQZE#qT zUKOJD$`-=@c=j;uV3X)dZrSmrDZjv!BXrc4&13=9q2=rk%CvzwV1u(FV)zAVO5^1V z*y>O9XeBMR`Qu^{C{-4H=8$DoxsRoz#H) z{Exp(czy1qD(7tR*E2RX9V||!f1K&3wA8=%fyVBa*e?a|hVFvei+&V^B#y zR3Tb2&S^|!WMnueWfdC?C$yw&I$OAcv3*oYK{Kiks{vWh0yE)wh~c>ZD+4DSEkSCW zQ3HxsLN^xZ`y=d`1b$)pIiZ15&H)V^TZzOed!N|L`tfPvAVQNT{N%eSy852#oH5A8 zEWXG0eoslB(fGqK?0>nA_g$F=-($YFx>*T9*9nNjF;Q+7=z?@*p@fAVji(0N^ot$Q z-^A;DoW>SoNw1a9Z*~Bn;DB2C%O%+^WwLD}RPDeenkxU%YpP8mozjeZr`T_KwI;Dk<&l9BIrH_AV(I@+J5GX3vRB3c-%%xpG;#X2T z90c=qzz5YwTt)?KvxO)~EK=-c9w7rEL&+uvFGj$fB9Rx!f*a#8&>BGU(j4b5#*bl` z8Ksh+XB9i)&UGVXStS3s5w)9CS}kTQHOPs4dSR$<2w*z0paiO^I1N$(-ccXCZZM34duPWD0rY} z^osmx3P==IePfxf-YPE`TgOLIhF6nbA7D=Sqx{i0rdR_NW(ok`@m|qU4PFBMtW6Gc zfp<8(gcG*6Mi~k7zw^982*F9 zRY&i5Mx{T@uDyyr+GmcVBJX!6d_L?|kWs1}yx-Z4Hh+54ikOv?1w&im#xG|mr#^_bHbBj zYIT^*`FssAa@pl+tZJy7c}8f3=42-NZJ7v>KOA<52F0ZZHn65Z<_7^(p_F=k$VFB0bnk+{*b z=FGYvS(WrSTjsP29vQuzmU>tZaF|kn(>4B9uRQx=ycd}}#&oWsg?z4YT0U;9+;=$I z9BlJM&;A5y2?+TId~f*ltRdra&}U7M~ttoDtoZvUDBG< z1j3UMu0_?8kMea(h!4NOfWA0&y@;P zCXY>_P!Im$q5BO8E4Kf93fuDR_NJwG2-K`={bkMO_Veog2r>_qxu+VQxf;TD0j3@_#^~CQ zpoj#btsjt#Gp-e5sTK8NtQD>Jzs$x!uX6+QQQQwIcNj9%g)|aW1mgsA*U|8yBG%TN z5k$HUEu%-+3ZCbuo&q~4rjTRt|2e{}jS-yG?Fy8m5A1`rc#ohXe`M0)L}v`i8%48L zkrADQ^5J)yib9K^Vi+;dV+|??QBQ9w08wc&J~KRSu93I}6Fi@c1LN8Mk|%bC!Y{-K=-A#7U(aVt2bQ@vbeYP|W< zOgmkWoz+X|n-#imm^H1Npt&}7U&=pt_1 zK=wJw6axPsZ$Ozruoz{)L&>^XlG0-pTq>dO2vj#_uQGYSP8-8x0+QVABlwnvJwypx zgq*hz8WL;?%zoUosrFh$HxRX`wT|n--fN{K{EXhM^>pVoy(a^0&o7V&37r<5)vq>6 zEl>6caMe#iQhlNrHQpe1YhxYJb)ZLSa?5H(w=C5VVgSyL-N*#ZwG78Rv-g$$x9E#A zxe{Mzhrm=E0!-LrttY@s3SH8~FHdmfTct|7PqsOWw5oYEwGcb*Dlu=M7^X@>qM33tP;j6`)n1^%3kUD|7v{!5p>WoK zd-98Ru(u+^N1`sa0f!?AAZMX#!3Rc!IgmZlKns6UVwiW-C_bs6h!Rz%2h6!cOCj{P zar*yHHXy%MYI4?13Rbya13?Oxkm)eQ!$V$(BkOcQk9^v2<6JE z7kqR`E)`r=Bb9%DyJ>NnW);mh6|^Bi8(GnBIA>J~rJ7ZY;Ca_|gLh%5ZQp&kRPgxp z4fwEmp-3if_wb&mNIh{I?9=YNEQ1uJwql04EcJR1k(Y#$ybds5a8s6!)fIls^Hw^x zTWWZRM9ZHwFj>eD9$k05O7|yE8!aBkQT~7(D{~0*8!bIhcb+=o2y`C+!ZoxkwBNL7 zBN~k7%H8>9!m`M(gEDFxHy5`TIqMWnXyd0kU$`k^i+U;gxuk|W6+xUyRY+vn3U4@~ zJ%aEA8hLghB+t<%-~>pZyX#CyqyfT@zqDeQn^CRu$k!xG`BMT1@r}Z+#D(1(4ZA!m zci&FN>h^%UE%J5ao9p({>&kVu$8GuBzDpU9IRvy*YkkNs&0t}i8x=TSz>rgUOf$qc zgH2xp^%kEx=aPOIKg&eMjiTH=JSnvw?2nDkVL;a;&A5`4w)XhGDNOiy#{FvLJg@xq zws4n+J$O?@bM@>}UO`CymJA2WI>o_pjIAjHQRHR%R(@mKzRmM5SB&IY$43q4E9tz} z$0^=Z(QDV-qONJ&ZqmzWZ;Va?N?a*HG;n5$u#N$WQ`Jb>q(U1t61YF7hwn_AA93&L zx(;Y0e;=W~KSX}O1}jR|21?cjq-1S?3ey7$1PcV0A9>KbCvXW;0_YR4)&FX~%^?12 zzWBaWuXu_uLtTHz`r&;`o`lHHVq+>BT2ergk`)KCx9>*|VA+~$o;8y`KEh8oQJ#b} z9M(g|+QXsui@%>jEROV;@qQKU8UCOB?9Ow9P(|Gqg~aaEV%_bFboHKb()lDH3hCF(rXsD0`t?^*oM% zYyInI!~eUahIWHqDC1Ecx4uLijov9fYct({@UYSwdU=j=>DEvj^VTGB^yRHDIq)1g z;gP-`EuES4&`on>?+AzU;?Oiz(f;u3sfx4(A0b^5&Rj!^Z|3i`?vs99Ypy%ABZPP3 z^_?9B#vo`#E8-eHS8;xIc5{B)(Pu+b6-VPZzyCm_h7{N4(i!#)!5NN{o9m9ynM0y) zJ<^}P3yP!B%a+bOnmOY;>%Tm&)!(%@RXXmCMg0!nV^K%(%`lfR^}4@O*s#-H9z)cE zpT6gv;4(;^1kIr28ELqWn zJ+S66hc5Wpi@$ey480lJ5rT-rPFqv=)3%?@)f+F?S`zJy{|E?PGQk70qX@d)bz9dw z>wR~cIh5y}q4+Hd*-{r`(sdUu7m6xjK8DoB{sPk=2*y*heUiGwG^iAwy z-Q2gSYK}LSXy7@R(Tn{*m{lEO+jh)9vX@hy<#Z<3E0BQ#3W4?<_TkR3wh!dbU#U9|*~i026;k?bA_n4Su8#xMwXb@!u?Al}$5vOadB*$VmFlfT6ZVd^ts!{p=}yMB`3#1>mij4_ zQx@8OUu}O7AH<()VzKZr;c@v%dAe9UUCaR;7-j)qf^QZO`3m?X-sb=s(C{H>aQF~7 zAV`p)AwfgKM?LCMZ-baK)lNkz=p9uxvE(Nx1|}>Z4aaAK{Nuw}6nzpPoYFMSULdXX zeLxw)=i-X9s6$J;13^pk7N_VdJx|g1*>M~{j#a4Zwgsz*ue}-Xk?OjxtG;b68jQg? znM#MlGFb<+!8!+>4z_VHO{OX6R5+ccc`zN-b<}FxZB02Gl1>mvKfgdA{aDo%QkPXg zYF(Q7@(6Xi_1uKL6Yl(~G8NkG`Bk0bIDdsTigG?Jt(nlB+V9K~*SBno`RUs7@5+Bw zdJH+#zLj59=-Lc*+Lq+WJV~CUJn2c0nwnC*Q$zt#7N1`skmaBlfXId=9g7KhIYCY! z12jMn*-@4ZWpRjvfDC--b!e$4rTDj!>dC92XR6 zaYlQPSq0vNTs|fb2~1c(7%0GKI4IWRL#ZzQX8Ct-@{ZAt!92VN;C%)a>=KN2ke-5~ zldipnT`qp(#cv!bJ}Y9;SJLQF-570;-%Zc;zyA0q0QacvJKRPA-gy7C_tbm*us!uc zS+pUDH>qBSasiS8A_r)b348y>(SDf6n=E+K)S(rXHWhuFdQ@G;;JeD37mrToiBi>p z$cLgXcf<}Y85&wn99l9MplN97xDOejd0-zLKvl9)H7Ljc5UQ$>$V+!#Q3)i_cu0l>NtNmytJO8sw}KAP z#OKO`zF2rn9w3y4u8c{wD;HL76Pghdu+m(`u!>H3UyL`y6Mh?Py0#+FS{AkU?r@t; z=FQHjF5of@FdJ-Y{%uXUYR{-{Ex~0X-rV(!*eV%@b1lHPIOck}SjW@gVynaN+G1c> zseRs}XG`_zPSHm2L{RJbS#kWYv#3&>_cqmVSFOM9)(AL*+TQEBuG4ykVWoMCc8d1> zwU?w6U$Wj?NmaCO=yj*?l6KV#pYY4?nSS3jq-a~B5J%SPIYPMgTPM*viId5tLb4zM zJfSL0FX3k0EA zagxGGn&D&+fQ5%i1N4AE6i&CIkTH0zws|T&DqtR+ws|(Cpb2mgi21yZ8MHf}%lnN)g&KS}{}=dJ8TO)iBjK}nKZUa9agAat#RA=1FWz~GTAL_h^RAdu3uJ+UDr zL_Qu2sHj&U1$k8ussZY#{7`vW)03v~S%(jG_>9A6Yr-ew=c+&xuEpmd%Rm80LpmlP z7z@@ZlgS?*ZhN21 zrni3K`!T&FzLP^_iR4+r!0;>=9?p1vM-OgC;AvY{D{A{Q4$>8Q%|nD~6+&hNWwjPb^MYb?stewo@# z?bkp@-Wx~_bQF<98m7*dL>f-%tks*(BT0XihNF49SU(VLgwU-Q=P2V{chwZ=G4UB; z5vk_9^+z_Buo%K2X>JTs)!dV2YC^NP7*s=76xDzzNGT<_H@F*+&qRfkFnRbyq$jHj zL`^DnRhN}BRwD?kiUbe=Km-60fWrVF0*DMi0165X1!MuqRX$1c!Ii)n5Q_6wrg<>uY_>}SEMxFZN0VK%;SP95Q`tDq z^9CDDs~p2N1qfgg8%@I)U>e6^+GdNWU>pY>?iWncDnGVh!vNd9VVovA$C0RTZpk{8 z4tLJMR>@===N(Ihli55SY&(Z#TStR!I^1R3G~l=j=UAs=(RjAbFPe>|lWDR$(0C*? z6|G~@WF0QMoRg5)Xc~`2~27;`e+`f<-ZS_Xj=z;f}x zMav+NZ5}L>U1JSnFh<)v*D?q^l40;u#N6|u#c6pMLBD(Aeh$-s`>s{Q-Qol4$X1ih z&^zKhh7lKu8E203XP+?^Lv5DOXc;Yoz<;U>GFAHqh+dOvPO0K%{T{V~c z=f`z+)jSMGOaz-%N>!7IHndbr!kGr#!%^K?7LKHgE!yT0alTlvOqSt2R;<>UFX2!k ztfU$t@zcJ|8xJ2a_q=GEC-dwlJ%*Ubbai;9^B#rpm zYsc@NG_Bt6C>;UW#<_*dE|?|TIGlGf9FC@4E*l4!CEGZd%VqNo<7lo`G+Ab&$-I-{ zaM?QE|0jpli_3;kL4E&C*!$TG+cy(%7x?E zSZ>i|nq`x~F54zkd8VVuHjAZl2N4P^ol2&`W;+7d1%uh#LBxh#j%}Wf=CN$Fi>88g zDjo)$Wz*Sov|Wn6>JMnNE!Wtw!-2><{<8juF0@vtCQ zL(7Q@`KhR2kn#n5B;%q`m6q2fL{hYTqnfA`-%HD@0itMWK^j_$^rR9RT3U+%4A77e z-7y%a9E@utJO&S&ssa;(Cmqs~p1dkg-s`Tb0y(7RN%=sjkN{q5F%DkKU{H;#L8Sv! z(SX1Kj4)Ug3<($*B$yuZ1ti2J7YQs(=qy>1lL|zUj0!1XG4bl*5-3VRDJ}~jjjAMH zAz|TR^0^nt(xI(1?~4Y*A<%{u(`q{9(C#^Yy6d*=(sl2;F05VGbsfi5G)vdfTiAH7a*L7V-IYbaR*pr8`ei&+PI*FYqhPjFpfB5SrX+G$vHd#?5id36U-k3Wp z62nU0ftB9VEY*uACJPS_?3z%s(gBRZZkoH9!m!DHE7@g@g$?At{M< zO(+Kh^)TQ{DXTT{(UyeAD;z2sA`J~!1%sqw!GK6*NvfhQz745m0f)#!M8ZQ$N`h!b zJ+dZ7mIEZRrUGh0K>;-RJkN88*l`@k*D!%3VqZf94)!&a9I&sUL&WY| zs#ly}XpVBNd&FJFUAOTKSxl?-I=sixc&}8TC@4@A6etQ5TZ%13aDYL;$FpIc4g2a> zC;6lC(n+4=Nxn8u@??UO{A^*m*!PvB zfCtH2MH{pq9oCPu^k1m~h0O=PX1#t#J@Yjw&?U3Nbk%Az2 zTERnr;3*6sc!&gVfpRO`0--=K6b6NZp*V)(KoDa| z76sL50Y(@g9EB|yZw@x}!zgR2USG|$^3xRi4eAO>cT_jZD^`&A!(M~!Fd!yRElKrO z?Hg0}*Q?Bj6m2FA(K=3UM=HUrSh0q?ea&vJ)STx9e+RrnP=PA{2b)75yZQc(CjU_F zOJK82Fof}K#lTrJd3;8X)$~1*GpxloMWJwz_fC2N=}1~wv@1{%dz#Wehv%wn^Dg-r*b5&%47_w zke{gB!ig^KZIoFwS{FKVox8mLzZ-gT+h=;zW)HZlEl0F`nnxj6g7Xz%f1J2~{Ph7@ zM+%|B`@bGY<6}W8J@kW`U$T5J;HI*YC0=x}@_5_rLkUChG!Z<%Ld=MROk>;y&wp>Y z@yWIx_>O{|L)&>jcXq}>ohcB&M2cvZJ$`t0;E7&!By)weVOX7ck`eUr^Z&*!tWnya z$&aTHQmQvlSYPy11nLAXy49Wrw>CsxvTd3^39Lpx%!ru3a0-@NE5~n`?VI^ z|AM5=}MkOK-Tos7e(RoSp_mG24~m0-SJx3Ymv}in$JOD$~S* z$tFi=wXE~f{V9uAQT*vJ-r2CWhlmXQQ$8-y$#>5S7R`aNcjuIYFCZ%P7XIt>VgN>^TCw5Gp!GaZzZ_po{pspOI z;Bcj5{Wsj^C zQ5cN#A`I-cMAZoV#}keH+L%rRXDdu~Trk zS3GCd0=-TCAmKdo`N;B|BBCJ|*C8PktZRDMrXUa^2_!v436SvmC}gC^zXQ8rZ;w<7@>ZyG& zI0F2Gxs%Z9Oo4lo!ajYRGDW1>m6xN)?;dBVNsZC99FVLruEnKJX}-gor?~73ezG`1 z&SSws(H=;G(M-pi&gxw=dlI0cCJ~0fCVGp%{9R}R!3z%tNFXh}A7D(IE>6>@;WB|p zU&%pE2jN$%GlQh~$iXXqypeCd8Xm!S+`R0!FbRuGa-!7y54A4Yy{ETt3sO1hSx+$y zfH=CUe%A3$l@F7Ij5;}9?&&_-9+?7V6CtpGeCT4E1%9HhvJv0#6Hg}8(h@^xx89ff zw86Vuu`g=?SPx_Ypx@3zkWCD!7xj6&t7*9+F2Q~#l30Z_nO>ocqU6UyxB}X*h0t>B z>?)h#U#tK1E&n}Y!n-?B4Xwi7;gKR}(J6FyYgh>|cCb&T#u}J2vos8r`yo~9Wm4nO z&C{pKFp^M^KCcu@L|RqUxv*1r8hpC`%)LeiI<0s9#&h>p{9@1=D>_H=KPvEe&vipU zuO;gTLC+_v1Sk6(G<0^tAxf197lNvbHS+iGPo-69Knq+*xp&5b^0qXzjca%hGf$yE zPr#kx;Sst-`b_D-xMP*<{Jym$Kp zt4$qiJfoDA!*Sm*h2c)GH4mZu&}aid9Pvvn8={E z1rjFc*Ns-&=s|i>vtWP4@D^Yjg`8^DXhTbJ$n+|r3@M6^SFUA0(f_N1M!0v@sOKwH z*!zIe|72xEaP0^L;3&t5j_J{`>=JLNu3gYH4EoqgNKFP7GA*Q%G4JfuAYSai;HZsJ zYRg2uzh90N2Lv8PY_fJD#afScJN;%r9bFEVoF!(2djUmyZW@sY$|n_Hx!|>$pJg}W z5`AyLq@v@KvkEXOVJ~HuO&dg>Q?PfQLUOWN0bRkq$c#7bSJg9~O+w~v{D~3XAK)kBs22F~K;NY0wUfW7pYe28L0wi1c+N8-S@FdA=ljq&r6mp~q^}V}=nI*U$ zAA|v#KQ?>xC$%8G>XpYgz$AV@jd)m93ug*puQiOn^<0SezHlQ8z6Pa$$X`oXhyREI zB|1aF*?M{}}m2_yDij z4y3y#E)U&ZRM3gXA205!8fL&!0Yp|3C^mX2=u<*C&4l{b#Qfm(R^QsdkHp=lt($`C zOrNlJk9PCvAw}!(#+6BWy`mrf0?@alD^7IGd$KMwE<|tSS}^a&J_pXbpDKJJs7la~ z@K+m;F!C&_(l626?h$X4=%~vQ&67ZM!VVEq*?DHsN2>6wR|oQ_JYOfz0ztK+%bDxK zh!y}7%zA82rQ*aQ39HVJz^qz=J|WG@)O6M6)f$!z%k$@{V);|l>S*khjQ=V*u1{s} ziy{e|N`1$&6ta>BkTHEPPZfjru>=wG6^GmMbTf zML$TBwrK4#HN=!wUA{$$bH&GabvGbDFbl%xLlQ|2llXE;%BO^LN3mUpSh7Ek<+Ene z|EuYFe7?-XQm*Mc60;M#RNJ_aM25-|zKNSTTt71A16xRh4GGggT#|lZx57NOg-g`x zvr{JXx$ognMPG|JI!N~o#%jJbzyuaA%TB)ZOPmP4@DxL_Oz*}67GgnRg!iDtj9T)- zviG<`6_GJNT3Gc zdFV4LSzAX3H6g2?oveba#Wz!`pC}wKrvhYRgT#V4(Q{|qP3)Ns$cp6YkBT361;{@d z>8jcOTjB(fkMu;@+Wpv0tebL0`VRmOlEAFM&~Ow%SiOCn5ns6R&&>RJI%$<{N!N=} z*{SXnz~oZ?!Ds5xp^bRq>+%yRYSQ+?c}{yG7p^De0-Au(SUNCGh?cUls0>@6T{tER z{opNtX9}~d7c9MZSTVY#Tef`aotqj&8;(<#goB4|ZrTCBd%bkXdfWh05DV@k#4+Ei z7+e9P>A|K$Py1F>SiVIlpK$+`xrEUr4HunCqez1Qk5mr-B9{!!l3{+TpP-Au#DA~j z38yQ(3CEgC`~tEbaU*jX%=|9qy1~&`jr32V6c3tp;&bP>LY-Hh@oJ0|tj0+r?ijGj zM_q(muU3yjTae(w+xH>(ZD~pX2;>;wUu#(L?Zr58Sw*ASeJo#nFg``$fOEmZtvosH z#4@&roh+P^#f_KG6sA_9;kF-I$0|U4nN6dAB-1XzxiUN^df^%)&XYzka5yNPjxg}-RFl8snj@L1vF zGapH^;)+9XLa?E!O_0m+aJT?qCjYg;rAer63R+JY0x!#Bb!KIz&W><8DN*$xudt#R`b)&>Kmh+8Sy^dy4@YaS`kbk+m^%&XKQXI%0$X zl?MPW1Me>=oNQwBg27yjB{Qstew?xiN*!*wV_x-H$4!6jfzoM3=_d^^ag7N2o_m11 zxeG#A+%jslA<(6}YzX&KJikj1OACo>{|D=DJxE|UmjKe<8{-MfZIUj>DWiEAGX4gP zdP=eDb9W%la7HV}3!9398U@V0yWH~8gaon(Xb}t1i}*&{)qf=MPc7{)%n+fWX7dwxFj`h_tl+w+M8Qj#B=3 z=VY$i)5#uW_rp)TDd%cPYAA&EMJVc~j+Pd36*LZk;RBIaMC2Uy83~S>d64Lx>Wk#z zXVZcIWhFsx%b<3vZF-x48`%;=rV@H8_ehRGh+9?gs=;@W-n5UVDFUyv1p(|=xouQN zh4asZ3d=6Mk1p;dz@(mgjlgs2OM%Mw{K6;IVlgd@nvb^rH5%l^E_<#B1(g{IxP^$V zw=^_Wzt!a>HB|$_o++OrE~g zt#Pc@S4X%h`}*%1wud0l8M1FtRZwdWs7MAk=6;Z|M-o7J%2}S24MuJ1*M6GhjiLu4<2}gQ3r1pmCnG!+qwC?QwsB7m!5HMAQ82zgaq{uno7&r( zNbtjTvGLj(k(f{rxC^l-Cb;65$>1NC|1K%J_2w?R|I>1W{nEuuAYv7(^!e^(#?r(7>80Q1noeEjC0%Q*Q8Su3i;1O8yR3;UL`C;spnm4;FZ8wrCtE!puw>6zH3#`D9iHbx~`l7+3{7-N3jj)1j ztl&ywS#OnGqNw4QlXS@_N zOd?HQymJ#=V}Duz8V+>H)!%5mBZb&Wm|kL4ZD#7$3Xah$4< z9Pba(|DA$$z$Afq!!Lwo?VgC{gXo(u@yxZJz(Bc$?b?F1g4du2hC4DW67;m~W;4%)cu=KV6B`5%s%dYg6-j3+VzR@f8prS2b}B zuI!U!5Zdjn28I@!5)?g91b?xLJY%^CJzria$acV*v_|icm{_MMJYNYOCk_SP15qf+ zWE{Aw>j_M!dSKTmSx9!pgPcIXJGwRAR#~^I53Lwfla@^r%72y9Ozm~Q8P|{wuopi- zZ0n$aCVZg;rZ!E>k*329z%UlK0H9+$24z~MMD`@*Te3ut=D0oB8a4jObTdlaW!r8; z3D&$6H4yl_B0Eh9*5Qm~Lx@rUBPSpZK|uRywuv@<`u0k#yG)RE?5waX?MaD5wLx>GO_Ax(F2h?XRe_(}j5!6lxha2VH}xJQ!oE_oBdCG|8_jZFBo z#2*DG+6`Te`ZzL5-A*5d-*JO=t|e_gDgx>YCmcYrNW9|Ov>Vc(KBF!dNU-Z$bQ3S9 zs*bHCPLY#66(5ikB`GwTwN>$5W{|K{M)U&a1aw@E0lp{0s%wT2x-(5D2AkWAc&5Nl za(Uts^Td2jfm#;m9q)6JCy{8-q~~CjTuV|HzvT{|qc|`+GizYVMyb^~gby<^*w3W7 zR|z%D-poP9B{Qxo`04F5k)0_Q=W?0%=5?#;7e>WXSa5nN>^_*$t;jM z|8%<$j@xJj`-tr#D8+FC@>0$WNRV`8RcozG3IecX`~7|AcpFo5cixlQ=}FUKd;71P*QBwze(*qL zr-#|Ms}$F__LFRGBF-fb#(5jzwOnvS98jP=(2L;9RXR#3s8<4P{%&D3nC)7M%8r5s zvip)y5!DO{?^lXgq=AtL0}-QP#35KhVdIbrrBS<+iS55cW;?5Vt7Y)MMIt_W@{9J# zwa>#-Yml;?WBZGaMLo}$8!m1Z8JD8~^BRNkjoAebdEuDLWLP(GRTAdLQE3o@e(zY6 zMx~hfV5}%ZgmRvr;FQxe<0<2Ivm7vB48zr3@s$I9!4tFxGa+rva5zsWiv%_kCkDU( zfk1x0g#N5u3m@*t%rP^^Lh=?$9#;@lxc7}e2Z5weA1zc))=QUcfdG{M@ac|kn~4lj z+N$;{y-+A!j))bC+ z39l1!;%xW7Y7NV(xSa27RvI%MB&hwVc!on$8yQrdy(Oy;gBsA@ua3&!$=#5SbmD0p zvQ)-EC;Fr18+xHR@^T-do3QkNkE{0^#ZHc(jYgR&58-3Aq)mjz*|4Dl_C?crvYZpj4paa9zumG=GcnI!Sc4mjZJ&sc}R@Ww+ob zkz)uqjmF=_49j1Y!vH*@GHjy0rc}LH*W5y11e+1>9Ss(@N6dnO5z8#A2xyz|ofz{B z*i}ZiLU3Sqm3Y-)vc1t2I=r@Fxc?-Sk=O%IwAKNK%Bjf2#-intpyyP-Kwqb?F!Y>o zDteBnc=R0Q5biZJjFz|7nd zyzO-&imdZ{<`5Bc&q90O*+#`Gm!$I@7NrZ=4``b`7gJJ&+o8cptrREg2nZWUC^dQ$ za+H}kSz?PW0+V z5GYa{+ap_)F-c!y!bCf7H>abrCA^q?8t`--23i-m)4=vys;seUe^0HKT&FK-3`%|B z`J)FfZO^?s*~#%vcfMZ}7(yhWh$jTi6HzxfzR@Pj!u^)U_bW-7y> zb9{)NF-G%J`3|8R*KL7j)6OMu=t3V$ho|m3gfw`F{*&`hjHRzape$HhcJLXPK65LP ztz;mG0%uFsc>K;NkM`YR*_oMyZ9P}T85HP*TWOvW# zCT<6!Epo1oy3^dJCgaES%iOj9aUE^PVmiNy&6$FL9hK%!K$@*^-Y89YU9;o!FCH{i z){veU3lcIq?yNQ~FO%3pGsS7XsBr4*0+E8tF2Xx|;k1sj*NiAi`yBn?GmZZP#b<$F z^fkp0$^qI!@&vThWRCJ%G=Z=$Gn-k!N4i#}|BgXJog0!(J_(KZJ|V7wOA%;eniRYr zR|>r#G8^o9@VJ8Bja%3iI#>ej#wx~EP5#h`e^5 zWvI+hQE5#E!=@GxwPF}|f;5q{5UIa150Tg}JHNoEI&I{Fgoxzq{(p6!QGfA?NuLx< zNW$Aym+aTmkbFABNoPk}3^f8Ic%mk>~7*D{?iwIn@ zpLjOYU1!3E2GQpIUJjv3!j-i7cOgWWr3!%5xo&u^Qel zS%5@U`8br*PPGnyW#u&*qG0&48D9?K%uc)%X4tfi%&A%Gvj?npZmp53bR4^rnw;j1F%BR03AHV*(CHBgT-tm0mQ4$_apFfxNMS9d#*pzTrx_oT_%2_vO)!H69y`?8C(jS7jUgpVQ2qE%%HwT^0{+u0TO(n1}q$T#L?_G7{| zGU>VYY3zSkAQ95);9cC*RfMgl8Wvq=b|R|X_@`%CmF?{P$CYw?{vPKz-3Ks0>DYR4 z5JrOR__*G2ihBmUi8)9|f1^>Jkc8p#5hl*r@89VB_~uGCdhcVpr-Mi^6&*b>hKCy% z-Xll|0Yr6Mn2TQ6%i^kUMI>LuHJ4qOZAvigOFkkUDZ@!zhS&7W^oaRSEJH++lw#Ep ze%Nz`$&C(&o{c#$$>6~NlC#_2mgM*pcvu-|^}w%B@xvi5aqN?r5#kfEY)t8~qPCf5 zyEp+BA%Tw*Fs?|W$Si|#r;H-5ixSYBj!77;G)N&0(3@y~m0y)_*m@xIhh3n;5L*7@2HHO5>|cP;iWC+FiL z5Ob@TPLC_zPR0WeVt4Hcjt2Zc`7u?4J=yUz{) z+MenP=LHugd-_XRQGv!T4C$j$y8ie$0kR)CSH9y0MwaBBcWIwl_hA@brN}T|i!Yck zAv|#L|A<9RBryJO2{DF1eNc)_2qr}(w5Ozu0FSKvY{U0RN!WC>n#P?%!+C2N#!UqXEkfn3C&c+&fe$K4ItJd*;?2~id&MX?_0lHH z86w~5(h*{4Iz$t+MJg&n(p6l@*3f-o`CSf|z!^SCEoJp_mBXP*mLaNqz23?Thn907 zWopyDN^Kp*5b~NCDjMx7Gu?plGoz;eZaPXIIvqn9@K>Hj4Yt)M2q9UfI1RHt*VM?i z>2FbJZju`iZBkX1#1AVk1I^kDqLiEg>e1HRR}L8~4O|2tCxtcRc79AX$j{Y0dk$_( zE@AvcI5-_lkV5axY!gl7B3~1Fnnhd;8bwyKrRUK6__^F5(?N$TX@Zk$z&zJCf?{tF z7_IT&W+k_+Fe02qAGifd_;tk>-CEtjMKk(i+P7bKWx#SCib6Yj=5gdzFb+a~D%V;n zOt8wUCB$w`W|NCjRYyvkvZQ_OQ7<%yXD&X9R#b3q05*+bN5p*UkZmqd=Q;NKcMDt> zk{SU-Eyv3yiRZy!N=3ZcCOV#u{}q^O1GM;FO^{TlybE0UrvOtr%-{Nv!26; z1HKZ0Bskiy^TrWB-6#qM_6|wmN|B&jvOvWqZ70QX*2cC<;GfOws#?)IS=ywT2jYEz zxXGw{+A@guD(lsdytG}L$q1xIr7L^f7bMhwq-AJ5Xxq7w2@>WL!l`o|>Kt>&PlAZM zxR0n%VJBOx!YRSSt=X@A3R5&Wz! zrWt%2sohsw;CQ>1wbHr?yzX(TqXG~koxg3{Pp$=0THJ+3rj6dPkG`{dV2O+@5z$&@ zHyFrC+@M5leHCjO`qZ^vWKLR_=b;}CoQi1Db-Y7mztGys_YtT<_B5HU8APs zTZx1Dd|@PDuIuqu^fmF_aV)HuEK!;2PnGMO?ysStHu@nd>nMkTjV|svT1JCYaRG2j zGio1n?SX$7w>p)!++^&3l%w?eCF|(arHAb+)ulOk#2^E)wA6++jm(g>NKZqRR8w~0 zYt}jRx;QPBPKKuVy-|EV&(W2q0lmoEIB4{mvFgFim1HjYg-k@AZ}1Od*PeqRQ+y%` z6m1`xIWjblD50QTl>F`H_m1b46|mygz`6^@R_c!xje5f1qu8D!9Wf=le+}HLf(|?E zJl&x?%{}T%uBnxMy+(Ac%m&HU`C*Tz_oJvgWQ)>g@iF4CVWM3k+*s>DSpp>aTka+0 zQj~dO`!y9b|ED7{$aF8FM2ok#!3H7^L?mB)MhECye7k*%VS7974SU8^*7s!;+PyTr z0Goz{MWl7g0>9y4P+36$p+4x7!mFu}RNipy~o?RgbC>G&A#i^_Q#Y!`Gs> zQjvIcm0-u&s7hSk{o5@AHbMz15gMlwOs9ZVyj<^TG4~A*iTH=MBmVN-o+`?JB7mT& zYQ_2OFIz-`NIdQ3WEfvfw5pDc-2g8^y(qJPB}D32Xjl!B(*mo+vLKr{Un~L9nQ&8W zHdF@7DaVhp#Cjx*AcGiWxrWx42>ZAvkU<{m0 zI~Zn~pcFO3eFK$vuBbr|Dd#RXbB&Uu+)NH{lyZErFP@akEamnu;K<#?loPnh7z0bb zFcT7NF(l&_&3l^bIJa~o(40Om0+f1n7G4dk-1167;7#}JfIes(2d!N$xM*)z zL)Yje^$iUt1p!UR1zW@`OF`LwpdnAuk+IH~&p1H<2bFn|;!=REOJT`&vq$i>mc|hJ zqduyg`#0Ol!s1M(-kCBRd;l>T zNv^`{;^3~XSxJU}qhF3d5y}5D620F>*GZN7BbAvGUD|t;@Sw`{BQB9?oOz!WWf?a~ zDFP$d^O)3Sg!Ibqz(I0)+avmUK>UmqZ4F|DPXcyB-UwFk->&rM+LZJh&X$0&6AHsf z&st7HAdKcb5wy5JR9z=PFdv^7%GWWwh~w0F&_%t&SYdYw4NT#MFeX6@W1b=*cL)nP ze$+EZP$sZ2wUZ=G+Y^dVR@uXe7r+I;nrs~>2vOo)r`nZVx9iW13pNGTfM6_bPB;9) z9ynE|O>CDWT+%Op4oetqC9C9Fi`U10kj8WF6=f)P5Mk7gQvJfnK1(s|lWjmCOJ~2M zXj2ZQRTYy$kcSsb4xkI=gD`1prON35@iW3J^DP8!QWRvS zjdM2=2(*sr(mmW4AZXgvFsx^nGSUgYSS5lwG~hEpN?Nmm*MvXNZL5=3R%d6OrY_+k zx+ReN4!Gqxrzp&^Y;(yQdX_FV7c>&xM-eQIAYuz#B-ihEnUSes0_gy1zmoC8Exl zP&-H#Dr1xy$dJ?V(5`6l<8?6uuFE__ixe5SdlpCBDIPCaLP6;yDQ4`vof~lK$et0B zAj5n>jTXj-xNI#b!^jJ60Bl^%yMs}iYl@)cpmev2GOwwc?;F!-V9{l71-Ad5zhE(o z61`(zuOu1Gm}Z+A)JdESb!KdFlGR$CZ_Lq*mLL8Ajo>z)U~fOGWAMhMuFfdUei~}a zJ{iGg9xNs-eyj5azZfLFuee#UrhF3E_#lY<88*?a~7`!LTO+d)p7R| z*5UA*KCEEVeo9yS$B=r|uQ5GZq5Y-%5=;Hn0xPX!#6cM5B% z%m_#2wrp}}$k_n_bN{mr&UR&mdke`?RkCspZqbxzs+OcdGXf7a?dcA9C*#u)A6prq z-w}~EZV18NSCUX5UIcA2j_G}4reiw{g>v!WS&6MNeP;9}swf&)ccZW5&Ez}w1tn$t z85dkPu_!KN-S8K34Rr(@pW;gMl&)s9$F$vIMzgjRM3rjP8~g=HO1w&I69pQa?^f)6 zS8;B@Cx1CL39lR)E(dv}3TCmaMK@KMqq98XBBA_M$w4JM-=J_)V5&?uZlQOJKFo}) zZeKsB$Oo(x$iA|`Dt*dKnAC0+y*zNgPFl^qGKfC$qEv7~kb+YOCDKp}?bQ9&GCotK z1fKmF+z{I&6cVF5PpgO%m(kj;8R0dVb;G<^8U_BCOxi@^OeIZ=Z7!F#t$H~vhGQCd zGlX$7AqD1}1ljf!VmH5tQmfmVha%|ILahT^Aw}$bIL&*v`K@#aDt0Hl2Kx5n||9M3>`Uoqa>)K!bAwZc*e{NsA-Z+X475E?90Y%Azh4!$}B||Gec4)@VQBH7{V-JOaPkS z`wl3v8+zfv+z8k4ez0kqpkr;hN8^BhVcTl(v+Anr+o~N%7E zLo;)R^~9^p!`wrUa`p#8ijp~730sN#64dNk z41T)3%U}+%K;j$brHPgiJ8islYKhF^jU==(U6TN37ImQYC5^^@0wyH9oj#nY&)t+D zT0D8dkc8GekqD}*&Eg!pm}tl5x3irvqH+5M_muR5sT7f z9d}lC;m;5bwl#^GBeIkGIlHF$C=_U_ryPVCVFIlk2ru+=lUZ3CvM{N#P2u^kEIea2 zc{x6ENkl~x(n^gP&XN;0I&!F#z%OE{uu{NpX|hU08eyKXMTp3avPbJ2M?`?krV6uy zwhxqMS5m$sYs>2i5O20WnwC)^ajl6F7zkF}h7^p+Rb;}KWHJC7+S+l5rJ?IkwmIbh zzX8d&y1GkAX^zRMf2##IGTK&LqpROpnkZQw|KL$=$+$Re;l}@|6hBIiYz&7ii|aVz z)Hn!3Wo6bRFE6;i#)>voYixvPq^iNSCtlqQTz7GNg)3P+1d4DJ5_;4gh&_~Bfl>8{l};1;x4n2K zZ|!o+h&nUKV$ftv6}akE+4CKQyGhqCKT&B`@bmnFWGu-P^$u44%7YPRCRcJ(w!?2l zhXmL5)fPxkl+{bgaIP@~voeJ48Tt;=#^YMXd7zJy@GN7T&e|;oJrnm5_jGDc+^y{7 z^NW1A`%nN(QtnLL*6uPh)Nvr;KYF<(Jbf~*sqPliY)fc-!gN^AxS&B%btz;c24rSA zq0k}u59?P?1w};d&(A0nhtlyrJu&1QmZ|X)u1m_t-d9yW7f%~V?COh6)B_WrIR_FK~Mkoz5iDS;upp7O8mwzZ>a9n}$bshHO!3gwq%fP%P`TwC{u z6)*(`ylG+iV^|(&s#k;y%0LDgX?k01oaBLvWjI&eXBj3sTo?+ym&vSA1|o5TUjx~6 zOi>99)*CZG^1reDZGYi7d>B(r$<|TrwIPl++#$AEceWe!)nY>y?f{~{qlX+5Kt_mM zc|^`ISJI>-8-0}O1ZR6DzgaOahr}TMZbJO>jMwe!uWIG|dRtukJ-z$J(^52krHBAxTJKt$)V=V@!O*Se7sa z(s;%&9g9HIJ+js4nr!uj;q|5Qz%qh-c~kYxc!GxOQb7m<>!867hL*^$>9j<5xze<; zQQGeaKoSbS&ZhLyB1<=LK*M3Enm%;O-tG3}#1p5H@4i#)pvwhyXi>u82f#8+J&sWv z04~o1Vw=-NwA6bQKy#{Keu$e!^8|!MZfN;yw4x4VD#E3d9_t%45AJ6HyY^^b$WRc%n#(H2oO@G``J^`Uy~QNf{K0rm=>L# zNb`E}?Ta8eoZRfSW3=rzYM;bP&`HR~ zm53LWta>#s>$Hd&p->$|5cOt&gYOld$o^KG$ANvNUzwa}i-0JRR< zSEY-pb_E8+|0%F~st;F6oB{8ha7KYe-Ea@3Qp)YYFb1_rc%Z``14rJnVy*Hu z!3bG%(&jVh*TlOSli{%01O4yU`ZeMFo(O&jH>fE6Mc}#bkoN>H`J3D!l{AqK>Cspp zTxx`~1yNyTeDfl~v^?#OU0Vb94Vk;=d z=&Lcqs@(|fSsLrDm=&dS)K9I$b0^`VBY@aG2-uX@jN5Ss|2%?hH7trrvka_p0?KzO zM?(;0gvbp5000310Du4h0Kna;xMCl)!U&e&(I1VAX$Bfsz zd%&-aVNnkP-YPf=000PJ7i9!b1Zf12sC0CnyT1ql2O83X3PKQvlhT-|Q>K9c?^wha zq{W{D5(HoY_6qj0{C#!#7uQa5E>`dtD|oG-Xu&F0R89V>SixVc;BPscd-ihipH+YyIunBBsC;J)&S?Z>l9VqF7?kfJnDnyrL!Rr_^Kp*!yGdxZ7JF+;odC zu8lrQeKe9f=J>B?ScZfxsJDKcXyVc|P;b0EKvg|r{tMLMv)aVUXaqn;J^b*{?v><*=)|+?7{HsMC z^)K+w^TiEBvFbR(9os!boJc6pG*)$`}re@JV+Xv<95)^E<|0o&FlKjOBKd)#_go?D`?Vt01MZa^B7 z0+&i2hljq0LI@4%6CgZT9v0DQlxj{C>?xSl&8*t2=Qa%IVGYl19@g+41$*c+4{P{K zs~Bh+<~a_-d^ce*on_)G2+QWZRzYYOw=j9%O&CmPnIPunb&pv*u0i)2)@7DT)qR6G zG0-Zm>#)u8-lc-UXqbhW)66hWn-(`MT?e6I6>ifWqhXb=G_0awFjeI%Ooh>^S=pw; zXIZ6TJne$1D%_?`)6(XJQM3(0!?>wIhdo#ipe{^d5u5g%MCDyHtn%Dtdzdd#U0!ufuevtxQgPL#&8)Jr z>bfe+CCfH0V&gKb^5*4rmFZy)+I3aeRn3l@5R-fGD$9ch(N$hGInRP-0vK0SDwoc? zY#wE18nzLDo0^7Y6?gF}t?MKjW>^M%u1l-9@3acLD$d(34IblJmurjIERR`UyKGz~ zLBV0m-eJpL%f4b|)7D|{Y1m(u!*kn~QQosE%3Cn==Y>IF*LQPr4)fx;i}l`SeYaU( zRW|D#G%UlW^$%L*RsW!2UG)#%W>x>NS=Dz9)nA@OgUhRQRW>VCCsAG9Wy@xkRa|A! zre*UmQ}ZxWlc+8aGqozKvMSRyjj~o(5HvTwK`8q6%i8oa+Gy4SMqF^>CdLSWOH+(TI2 zt18n9xOS|GCYm*t;=^$BoU~u(IB&SsnIhwjg&pyC@cpp_pKtO#SWomdJAjIev;e1H3P#Vcu3Zlh$JGxUT;o-?QOVy zsF;x?QBkxJ{YuVvN)ERl-J0juS;QZTxYJ>YfH|MYq0u|bs7ph-^lNk}O5(gFYD`pV z`yC~WPY+O?C+UlxG8z;0K_HAVH|V`1X@c>N3C1&??mlkvp@+h7Kj=fyLlgoP#T2s6-!5NOAI--jR&lMULj_z*fX7ZpDjm$G(p4^_?Fh$P(IrbWRhv(IAE>>4p;dZ&~jF0(_`MP>mKHNUUeqX=6 z*V}jO@O^6^()%xG-znmES+DUXLSq)$J4>TG>lgSo>$kTZKzv!8omrx2tsnD+Ijd@T z(L#J0ru7<~T`cP>yUTZtT`bG8e8Z>ml+OCMP(Gyhod3mo{Hbi0_5T#$&Tfv-{v&G3 zbKJSLI`>xDa@g~-@|c&E-}=@pu-Bls$ib=9MGj6AFc28ec*cjAgVU=g;~AXO5Mz9F z#H9H7%1+~H%-4P$`*pOQzK)(6a)Uxc0UKsg497&}d6QZcttgT&Zt{8g{YY+Y@!e`W z^4D1B+sW_Lj}Wbs2qMMf89KAy5&+aS=coj)#=PYqyxg4bNc?a|dh2oHv|LWWhaHM^fiN zf&^0JfFWA=^iGH&4f>QcIgp7cP?wNj0~6ANjAP<~#AT5s(Z6pZNz2JotbY8n;m}YdUDvdz!;@8|A{iW%Igs(6CB{nXg$D z=QUiq?;XC+I)z33Z`wArD1Pjm!)Bo``7-FWf$!$ud-bJuZn?H zHCR}s(j;a!x#uRO(<;uJ-o;W`-F$6!-gI~d+!mpE)jwF?r2Nb(>;Q`84WL-Q0E*=$ z6w3>MV)+Qg@(L)HU!YiCfnxb0!;*jBXR`cE zYC0t~rb&HB69^DsP!NU%2^l^ z2J?6~+_SY5P4ps<(L_JeN9R6Ke37|CTCtpHG*K*CP{N(}Epj5DxbbZ9B~I_3$9}l8 zKO0T7N*2#4IVGq3h!hxmc>d9IdH#=>?d8%WMRlSIKymX6;^rkhmYL*46OAS+@#i0Y zf6w&2qImh@QiRtq~;&bL@= zjV4OLGbxJpqltbrxZBb5cJy>Ix1)#uEqCYN!MEFyla_zxZ%6WfQ)oEGR4}d=?a1ci%@CTpzugo}h% zpx_A_y~&F;SSMU8mYjYyRtU4UWdAS>_0{-l{NK32O@da0C~zk(EEEzl(w6SGdC5U} zR8&S~69_OKFpyE8!KniPP!CH34iuor1K}w;J$*ca27LsNN8q3f(BpydwDEX`rw#fH z2p-RXKmqi4AUusgj|T#!ltPaO!cQm!`rhBf6KCG>ut@l5`yXv}NN({f_bqE#%L>*C z*0Ov97Rs`G1M(ZNpb&n70pUm6kGA9vJ9>knXg7&3IO7Jtl4F5M+ktFNl6d460)Zev zAT>jPCSP3Si;D!f6)DKZ`UM3nSnx`bwgZ7a8c9;ec5KHIU;;wGwj}O(K^Moq;oOlC zvvx2j4uf0ArHlwR znIsyQa(EU+@Bw;gm_5`nC4f~Z*ri=s*HspY2Fs>N>(RI>Lc-&wW#gtp#lWg88KYp7 zc~Oz3(j$ndi9!gNXykxKlyq@`c6)uaBKqh@J0>mWzi;%>i6JG39x#CLldu0#@@o6h z55RvE!ABvG=NxO}EDjjwaX1#o#G&#UoOTj|e_ZJy6DqniGNGcECJfR!Y7o`UE5TmNJ0O+I?( z;D_NRL7V?pgq-Zz;uc8__}%)^n9TP(-(dddop#98LLw zT5k|*Y`qwZW8YNrZmMRB9E+f>oE~aMJl0J1uu|CYQfN`M9!%!2c95g9)@<=BsTs#y zch|XAp7+L6xy7I^$%;v?FIjoE9)~J)dk@R6a=^~H z<$N%SF{fUOFTTiJ->$(biktIQqcf*|w`2W1b1v@9sr7P3&1E^QH=Cb0_OD9z1n4t6lC3UBCB3j^>h!!}I=mH0i=;TsLqNHeA5G{BGs-wX` zI6xzk9R7lW9DYO+kt`_KWJD5?L?jVOSW8|bk}_ARd>&Rx>Xz3D6-g5+dOo3|T%YqA zk(9hHC9+=BzSe(+9=;R}-g%5o{@xfgfG z%q{8g%B{UNIHz(rIAo(P5g(Mgl_9|K<9xHp!kad2(?XXX{a0Y*a%rhbS1EE^+166E zFIq{y&I`%co`J;&;rYR$Rl-;Dy~qRVVgh?E;NWi)#Nl`IE*PBa7yN800z7gT_=fYZxS;*Y2o;=(3|s=v;JE^V^`a0&yRfP)Q~AA(Rpp!qJh9-GX! zZ*AvCYODl+4+!Y7sm=y9@KZ6sF`c_+&j0hVGkmzo6pD_`Vf(F`Lp#_%>S77V&m9k_ z2RiqXX)^zT?dyl>G2n{PghT$xs6HdJvRSkQIY+s{t8ZRU3IE<0?!RYtj&XM0W&bso z_Yu%MW2DTno%T`&C)H+fh52yQ=+oD2%CA>AinVjebjo;O&D+>hS~+xT71X)sHDBn2IN2~om;8=7%S&0c zT?PvvO{k-mDIK6&2!~pS5ZDpMjALqc5saeoItJEo4{%KqF$Dkq#x%X@-I$|)QbP=~ zVvx($hvU~UQoB54hDVkU0IzEGCz(V5PxcI0?M%sn#02v=wGZj*2ReD0QU|v(?b5Zo zV~Y{?1Xi$yvMu7l_wuMsv|2r^0Dhp5b0=os>clu^pX@i&gskx=b$;L?PbIUf7lmKC zw5G2OpJKL=9zS!`Aag?RN>M4}j=2IHT)J+li10?BY>4YGL%Yv`>lEmxJytaH0>rR` zWPDx(c;Lwtun2XmWusTkfa{+Z|4E-$YmSoceJP)Nn@gkbxPmzGBqLJr{+hwxzmb|GQj_JE zGAY4uDxR#uO7jK10R6Crg`5B?M3MIr*p)lMg2>SuxljTpe^e@k!HFgZ3FsHCN_Bl# z0Jp}<2#2i7=6L*6=-EG2+#w5y1wRe6Kx^9Gq3^XBFp_nwlmc5q1h|ah${}9s{}u@N zrTtwp(F1|z_3M`~!d+bZg*!)mZNgBS(13cI9<+A^zf&k#pIL}Xgns3t*v_r>P<%iK z<(>|OhaDDaAUisYP%qw~n47}1a&2_nZO1WM`gwW7*#!G#j=n54_k$@LL@w6Dtl6*; zOMWZ6`&K?*F~ZuiaNtR-`Yx1E;O<8)xF*}N!nZty#?dqi+d`t7ao}9$$`!vV$@0Ag zo)u&yCWt0%noN>TiS~{@*fWg3TxNKB@T~2#g()fWNY_U>6(K`R?X%Mlw-HM@f`j^* zF~l$>?|waFSOv5%^G)=o246%(tDAOphyX4Flh~{|lK@Ypl zw*h+u8?D_Gr~GNDK7^xbk0HG}y?{V7Sqs9mG=I8Dt*;xeY5ch z`2y5H))0nSw|&vqqaD?pd36Q{A`x4#boU5m{nQZP@_ATgRNo#10F)uP*nt+0V5Z?~ ziB{3-P-e*H!kn@IDVBt&*lDn<%_Up(;smQz@@;1+D{J5w6B1Cf0k!nrfS{xco4P`D zPzgzB7dP0zu=Vr6!!r))do&Iu5|h(%mZe)#L!^D*Uj*-%`o4L?xeWAur+^v|tt`Q@ z70{%X?_0E{Ed3fPa0gXPBqSx7x}a@q5EnY8u!IuC}kU4U%A zM_FYnhr7D|e_3)55W)ubv@%N74zqWnVX6=m4byrAp-S@G>2dX`>{-qMZTOrFl1tEO zBLF3CvXI4zLYQysjtk(ex(F$g&b6Tq&w*8@t55J{a`g$e>F!J@2*Eb5BjvA7YOswi zcH5=fQey1JiI<_WJ2O6ouzj}CQ@|Gr6)%FeQmSR$8_#jeYZ8>q&w}v2tG0OE`@Lg> zP6;tv0z3ui`M42A4t_?8bqYWFycF4+aceM^YtqS_5(q+8x9(5X>0ctiO9K^rZ~~4E zGuT288?i%cMH-kql-NImDNMRNc>lwd{+~7v&ITqBR6@$1Js6CeICaVU!6R-Z%CW0` zMR`<@+D6Biqv(ycxY-FwcNCb~vPnMvp6ZEaFp!k)%y)KbAW$gLP%5?b;803>6<2n& zF$4ijr)SsS2f{19%l8I7#%#5Z5+|8wZK5VhLl9Nq40a)E-HIf4B5sbyYyX6$)dsNs zYYV1iAK%a50|>cCc0s}4&YS*o#nVIagcBy{gLMH;?GFW34d%_hw*i_gn?NcaQ`4-g zECVDMTMD6;l|~aD7ed=O7u9wmA&1dLY4}Kp=Cqgj#4Vn8x~TzD1UO=1t1r*y^Hu9W zx9Y(Lw8%7yRb38KLkxG_Gj^y&dSfM=*Tg^gjirF%z01=a;(a-X7_!HL)jr3W;7Cox z(BS3aw<{&25z(8o1elke@60%bf7iq8K^^N_?RQo zkxS?5SiH{-f?fn{4)gJsIa)ydx^oy0tFbB-^x*?Mgg%U}hCVo|5q%g6e0g1MR(L}p zSJPL+)jc{OuBeg&YlQ8TP0xOYyaqCDEv0O>oq)DOBC;9`RU&E1QM=fl`!&)7-7el9 zlDTT^^GvH<>gM75-W!CfXVln{^cETST0su;CKpL2+ za}Ur!Tw8FJ-Z?T#e^8q=Vy&pqadmJiwGww!o;vF*J|i5QGNNp=*UT`Lg`x&bqf|Db zTa{Fpyr`UrK(hh0mG!gx2N8|qmFjk4%(lBsECbVoQzU_XPV9~s74Jkn*-xYcWI#J|CEgYhG%yf9G+d11Ka zUD#;*;0-c0%*25f|HaLu^y-ClRTiK>+$D?8LI+NFTpV$%FJ`8(oQf-m5V1UO*64U{ zJkhMY;_RY4lFsAn(?ux9`)a$*1SQurhlp-z?zF>R_Ij9FC=zA%2#ib(%7KY;)4kiE zgkZ>C?w5BHf*1g(DUvm;PP2?%!j_MWXwTWntIyW`OO0e@y3l>~T&RD}Fe*KklsE{T zkhiL{S+SmZdR6`usLj7kP|=wlL0qFVt^T+Mv5@R8FR#GYOUv7XHuwYb3VmqVF1?Mm z12X|1AGEa)M#HQD0^5yK*Ik-AgY2JCvN#5hf&l54~L552!{ zXA5}MM#2^AI9r659Uz%$`q~2u({qBYXYmUbvBi-9Qcy)o}{dGLhftr5)K~ z)O^K_a+&iQ`xTg)=-#oV%y3-ZKpqS-^n*bo;<#?7fem+6#emNtQeBMVHp4k96%V9` z9x)LFxfyo7p=<&fgHOcdP2X#^^sH6GX1@lfhDWrapdD*fS(f+Om}jX?(EbZ9`WveZFbMjQEZHb9X(AxUyG!Y>C~yFlKR zARU~4$&Jwe#y;~k%(d!lj%hA*canVaN^3SO>-N9}|EXtWbgIn%MvNdT&Y!fj>X;G` z1fa+TD(appm&~o=>=^=Ux?!v<(6OFX!pYE%MVt|0qmrt_rax)YAOaemT!uB{A|e*( z>lQv8aw6F~ZAT-s4D%1zvt&4{=>>RHtAf`M3)>EUoUtE#f=|XSE-QAVSBh{s(9X?R zXQiLbdeSO@vop64ga|^NP(j%`gb<*2)g`pY@P4mr#c-OStGQOQ@>q&H4gmVLa7H9* z@_cJWNrnql+yL^O1cs0!O6?%;+k?wCuxg|KhTS3g6T?D3%sr*!!V_SI9VxaBmC7v|MHof>j zDR#Ai0Z`&@!Fl(%ofOgZJ|EQl{1W59ve3tdsIfX<5R44XV4xsU6kPRZK<5S1p%Q>Z`0cb`y+ZzI#*gtJ)nXGW-Y;;Fa#S;oWix4+@iRxMW6Vj)eGA zgxC-%FByLIXS>#hB(*7aeS)!{qp8T4C>@l6 zI74PK?dDCSUK2`0kE)FqtNn`82IubIyB+EZJ>e8w>2mg5?aR=^RxzKsM)io>t#ZB5 zu%_@M07kP)%Y3p~eOt=`z)iAqpe)8$%~2u8q}|>W%gnLHz$0iMbnCL1XmM2H8HckR zBzQCi@ueKU9Lo@_nb1?>8Vsck{s9CHu&>bQL04x41rn){Fzr2SE4a~ni5jNw%P*_@ zS?yG>hDXX+aG$+BC^fC_<;$8l>mj!)()P<4x9TrXo7zI*_m)&G;G?jTsq+?iXnI{? z@j^P$2(3;)a=!GtuiGbH9DoB}YWW7!x4o~He0_LJFGhfhh^5sXxo6>hCbvzMpUsX9 z+SCI8PN0ESnOUM>UxK_uhYs1Rb7lwFsdto5zi)^PJ}?n^S2NwA1V9m93u)hTVj`9r ztVDvZ_3@iWcrb37x7;H**eD=T>xgx2{WGRD#Y_2YMP^?0i#1K;UzyrI-n%&AOU55{ zEK-$QCBUenpuJ8Ty+1EOyP@0O$&N*!Q~($blC*ulpGtTMSZp4@B~0*38LT;UZp&0b zf}t{vU^hHmm}h@zuX8dh-&|b7I6Sb9drH!^;+42nDEz;TQT25)-pD)mKw7(oB3mFg4E-MY}bb^>KC zQ=S_%(eqJ(DZ_KX>7M2+E)(D}Rv=pw4ST2o0K=FXu8|w8|H4!E`4>D(>eyhzq?1vG z$CRj;$c@D zIBRAeX3-9TYN+Km#NambE0iR!->w-_ROMIp+o0*V(AU=NNqT`?zi{HE1(gSBrOUW%yGsn*eH>iW+I7W+QR! z>KUs`T3U1P0zVVrTC)8aBo0bkV%~Uaezo&>Ec)?-Y;Q}Pj1)o-3#kx;);YsGQnp%j|yUt)IgzToZ*LED8IdoWClV9EXSdxu%5dl*k&~|fo{vfo&?<7G(?0EU> z#FA;zefe6PKtc*JN6dTOt_YyRn05AeCx&7JhmbMV@Q~LB7w7n0Nv%k36~fH;ZW>{= zKHy()^hN};S16F2d)VKL-Lb}Z^1<~GS2^7#&1}-Y%C;i7=u}qy|Sbsqv zLsQB#*7^W2*RA+QOs%1QmQ;FD+lytqiu|DJasaCv9A(wi(Y3mTpkIH8Cw2662iXp- z0AekIfchFt8^L&cFz}W(*ek#)U=d81u=q6aI;JlTdD*9zr7yrsuCJOF3D(9UK-u)& zb4A%A*ydO)2EtNU`TV==C}D>$zXTJQUg#?;5Qe%TNb3X|iIH5#7hF4wS;h{?Q>uQ( z0dB%j4j~RbC!qE@5Q1Y4B z&JfHmKTgY_wEG1-kI%N=a>(*k`?@N8g()Zj7(iMzo;pobr5VUWK8QkOAS$^US?V!3 zN@DrUdud^o+gLm_AO7)?2lb;H*%$9VVB_*9AC$r4RM9=5eEc^fBJA2#DlB?HuC5(b z>m9pZAPFV3?4i#5>5EI|&|*j{+rhwt65XITn3=i#2@%nW9~$4f>DEosb#v1FBsH~X zLt9OeA2xVXX+WJ6VT!gDfSNoc6`)82tCa@pAnD=-A6K0TSSGa1R7qz{kmW+baDwdU z1p=~{rCvjEisHhbn1Vd{f2{S@Rw21_+Yf8fx7monCL3(oUZ31<942T{Xkw*zMXQfS z!aZA&Z&CyhZ}uzGNPLgV$~Vk2wP#`Rk}$pV2$Rkbr9C)jW;JsAka)l*ln2QoOg=U*C^g-Vm)+938rvL&tsn^tlQR$Hc7%!t!JFi)^g$v4#e*Y&D^E)iA4hK} zc9Y-WH(NL!Y?sm}dSXctvc#UbtZTr%`gQVCGXlhyl}o_^X_}Uq48ZJYDS863&U`!; zPF#PUYWlZ~MduUw(d$_J zNW~pHogVZv9u*EiPJ;@+)V`E_U*mbflo$*^21jYI&1&$;n^7j*$o>qs3KFz*r++Ep z;a@uC9r#`VzH@WL*G;4<{h~M`yRiE-ug7T{Z2OQNSIkU+ibbL#LQvWjj2@&N9{cjO)9`IBx_41hRAN{AakRicA^pnt4%b#1VWkyx1rn3{# z`CgBgA+91%{2~y7i6MGdzkVLtIf2vKF;N}|PU9nLR=!i(aH%>zfdEi~)d{&{aKo}f zFHfH18iNi`Wp}4IXSvwy(E%inPXsEwbI7NN)O_!G;+)8V9IS$@WQ18Io1+SZlOeRj zM>7cM`p2vx7ruJ}S@?oqT8sa0ZRrp3b(m-dKT zCIn=~4GB=x(U`Zff>me?Qk9QF@7sk$dPdZh&c7sPs!iyCRNH#Ga-(+dNVm-wg5l8{ zCdjMO>MbKzHFyvkGcX^Q=cx$O%h4}aU8RuUOBRM!lPhwhRMfF|Pw_fDj;q0Yv=m=T zA1mL-fW8C_CZ)#aQp=V$=K`wA&tL&Z+(n_XZ(xaib5?0v$rJ3m!A9Fst9!JgYVGdy z+v_{+Cm%KIiKntxhx9)bD^2+FpX2)S$3QE9%;W-O5c`k8fqx8B{V}ipAG;raOoal- zumkcLQE%uE=C9EPP(`mF_tp)(K&CWYNyH&o$*D?Ld?mZQl96e2fPRDgLm&HffhMmj za4znlcJ2Et-WWTUQ6k2^S0JT}U>W+(0>}t4g=bUm%T#= znnVq772GV4(Q6p|nvi%uO!M<^KQ*CGVjhCaXYVt?c0gidh= zY(J)~dNDu_xG(9C%S9phQn=;SbRHAsN3KFxyGDG|y`g>jnqEbj5;#dvO`2K!Ep z7%N}L!$W?3dCdZipb|(H#_TfugJ95y7?-LSUt|y#EWEzJ>ruP|A0<-Fv!nqbL^(+3#mTOYcTWLdgJT{_9HMt>v%Ojqmjg76XsJBDN zZFRAls3;%PnCa@~Tdr>4z(JwkluTRbRDvGH`Gk;ZyJZW#jqgpXro{P(iMjp`ab%zi zuRoY+RkNmMwErES#P|#|B33lHn19^J-Gewi9pdx4GesWh3=Z z%y6UmtX~<2g`klzG-M3RC}fL+9LOjNTg6H^#uD~p3zM#Vvq(9-@=7V+H)Q~S`G;*^ z_UYJJf_k)0`w7oO9>P0@W%LW21JrRt`w~)Bqt3Furp}~fuUI4dFoI<{z>-W=dm`Jd z`+05D9_Xd(HDIQ)O%J&m{?lYjrr{F@DV{-ypxk8qt?n)N3Ua<;P(d2zcJW|S%O;oG z(ICQ*r;ZLNK_+Aw8oq^brW}YivKPdba*=H-ZOcb4{MbHK%S?)=D0alhHgv-RIu|qI ze;r)#v59Si%vfL|9kf%O$N34tEUcMbmx_5WMJyNW&yT4Or*IjNU+QX2-!O>tOt&18Z78ovNZXFAd zt2x6AKry`Zt|?UJUt;Fys38HHJD4kaunI?v6}TG#i|E92H6T;O+n5A}^N+Y~Roh1? zC7e(J0AE5|7d+(rzJ7%7vAcoG)_~An82@E=WYsS3#q{}iTGe*BgH8ENG)EYM6wo2S zC5b$?mz$djndKw4tZ4e^uF8&VvXULCO3Y{T8!*D|Cpv=d1MfJTjhJ){FJnEe8=}Xxy^qr5Ge^bI{35u2;8ErqdMjh0qo; zH&Y_l3o)a!{1-F3N#=O!B1)>VvSCLv9_yF_4UCo+Ghn3dZCE?V+%zZ@C1YW|E>tHp z1*+SCQ&o?Y&y03;)fENrE7P$@t-xvPe)Xn`i?b zF4$-o%(Cjx7l?HtH^odQBT(QeaK9m>r@MD7^A@=MCoMnJMLGW^%e8)>vb1u&hO7!^ zsPWM;H!mLY+BrxjKvK{}KKWL%OEhfjC|Hnp0DFQMVrLj&kt&D%^avbvr4z+z3k6KeJ8-!C^g7GxO9sg(l;x16XClD?qApHK; zvMS;r=gFPX7|e4K6^sz=M6LZf@$IhbM#xA7P;*rPQW9h`084@E2yz-CKq_gDz| za8~rGX{aIMm9mjZAiq)Wn^VzBIwa$=i*_Axsoackww=>D1Hi(lm=qq35;hXU-9a4= zJTC@Dx=(gQPx}7MjDc7lO>{UVKGiT2=L59R23$&4LLl`}F7cx=20$Smi;)hoX@Jkd z3gF-fpZm89mPS&^@A*|A1nR_wbcB1-2WOFoGmrRmVgy{#K^(+gqxTOfj17ZWot=6T zkDhls-{bkXa)Qc`N&iQJjq>Xgk7lI6 z-&YNbTTK?nTad5Gx(x7N5L#RJr!!BTuHZ#PYR~&cdxir4tmPm1OK^|^@+DXmM0Cr) zsH0c&M0QxdRc*%BCP)xRMz*$;N5eO+8*76Y&%aCXa4FmfU$!#7bv ztl9Of>`bXd?-PJn{A2PT^MMgNTesiDPP?}Gi^!J<#@>Qjl{4ihjQE)(!PfcMu3GDC zM1O!I+Qdqj+E=_V9;ln+eb7l{DB?auH|~#p2C2Q@p$M%-mMiVS3%NHcatKfit+&-u zl`>>F&p*=8Y3|BFw0td%qwG-)k(+LI$~9svB2t!@1_#nI@Yc- zXb6>xSW^MMATJWyAe!%(>WZK5KD6&1@qqVR283CMjsxzWBu4M?`7}0kiinvuxbhV- zNrLd)* zS-W))Q*J5{XKx!f4L)mNrtMH~BgFX(TLXB84!;0`O|vS3PiRSZ{T_gM98MgSdSG#k&3KKgbuk`PREt!_gp2EYCLxw z4!PRCm_lh|FP05JWkvM_DzUdr_?AC#4WMSg2EvTo_B*Ibb_h&LJvrfL?Ck8Dm&yZZ z7$So)T${x1&?6h|Wiqmn4S52BJzH#9d!*qyuBX*y-4c$%b z5Vh7s&pFL4onxnATfz;r2-+NO5vt}4AeSS{dQDBHgFtW&&oBcbNo_()dgO)>245Bi zlxL)x*P}kdzNgb%jZFfR<#c_KGx-KZxvt59u%iV4;`mhFT#-!$Y331>29)>#Bek)# z)K~vRO*XKTV%K1eNJel;5agT(dfBmZ8>5boF9l~bpHS}n___22MywbCdQxjcIL%Z% ziL}amcP;Jo*)`>{yF_NVg4bbj>PT4A;`lR(E-4t5S#rZCxAYYGVKAI$F`pQikNrt9 zF^2_};}wZ2Kop~MiT;?IH94Z(`QTgP(mo($k}>(dYkxhdRHeHi26InZTTZgsthWfl zkwg%@{-S8L2sLRA-M}F;#30o$f8BPBDn-wm3w<34SK@jTv9}{qUY-KuZ~_kItLs4PE+g|7^fXw z(*J6)vU}X2zvJu}6W6Q6$77paX2D6#;j>6``cYng6b3dUr$@F_DQ%{}gSRC+@EJgg zy6Zoe)L7zD%zHYi5Qf`7`f|zn+RMN)w3I4%#Qt6(5y$L2IMs`k^X)#t{{o1Cp{ewo za%uY(Ld5^T@I+ng#%V@waEW4Fg8aetq>+dgQ$~@P$GlwnH-p}_1BtZcp(aL8 z(T%v$=l;aGTOQSNaQsTIXf+NQdGIK+z8L$ecIvjTRmsM%k;`>VMaX4DIS9R>aS06I z8#3<{b@*x^@sgKvsR4L}m@C~udJ;Im9B?oy$jxw>M6i0@VE_&S(D6`wdfonQbucEs4M*qZPdlCl6uE2D$o>WXSe5%{2t!Q|Gp&JzVy&K+yHd zkd&r-YByJ?FJUj~x#SL_q4FV51y>kDtjg+F8Fa4(azLW&3kn?*OdNkxPkr zLB}#P@hhb{6jkJt1G&az>$m6Ptsn`c1VKn?drT|-+6)Y4PN(VE?;$i?%Jd%Y3c;)> zsf#MvIIT92@JcDwzDwtLUY7iWr4+auVBQW&a-~t+CSR9BFIsxLT@ED*qKC+hl*nUB zvEm4eK}vAs{99llN>%lnexWKT7**>}sqE*ZI?MX|FJWkG2757(qLuKRoA~Ddfaf>KvZIe^sTr1dDcu?zY+^YUp#l-MAIwd` zIQ_6RHc6a7&a{wlEx2S`WA1#1R<+I#Nt0oCqT|MH2=x2nV{AwR~gVR znjM%Pstjl2S$e4a?m)ZWg zUWCrK8d7-ytQyOvhO}*LDo2etfN+=#qanHVI73hPV>T%z9GRkoPT%sUh~}1p_wbX? zu-@rOrO$i-toPEOaq=FG5RhztN;F`|^tBv4Q)EFS(>n8lJfqco21f`qbK;pd9OfOn z;;+tmAr=WR5cinfGh0`nq`e8I&_T@;W`$vmPxbu4FNk7R0l~*a?M6jpX-`jZ5j2REy&Bk9;%8E{ zx_)gEAj`}+tZs{gagV^_o>ObaJvyev&&!W&f#5#HTK^P zBN;M)!LM&O_eaj^<&dUY<8FiZq8Ag;Y9BO(!Hb!$Jq7%5F*5hQZVJ()D1rqC zh*PWrt|yG?XsdyTbCw148vkeNoU`S_fr@W~1Z8@qh65z+>MR{uVC#zYgw{EE2d0X5 z-$eGkn-Gm5ft0hXe-|Vl2V? zY@IFIx(&E=DVk@{7C@)<*K;2=64GLCz@Pu+ORuv@ccwln7)$eIqVra@7(Y3{{TpxL z30&o;^yaCICYkC({g{AVp=#DaDo>2cWH;fxlm;Gd=K)^XL~$M%1s$0FtRTC$>)z^Q z>GdDNN{u1Yu|WnlR}u3`&@#4HalnVW7!8)-$$CsD=l?9ah3wSroLu>JR>}G?Qj$`w zUQGA(J-%07y456&XV0^vQs($x?T*7&&wMQbL6x2PwR2)_+&xRMOTVTlw50n$0Y%i3C|SJ7xFEP= zP}cy@TlNry2Ja&Layu+SE`hL&rv_vQRkW{9@B$Aq7)cb%z?qf^Vyo1F zi#YYUN|FqPYH&F#zJNQBUa4B!!*j&V(S77k;$69Zj8XR-)fi(#=dQDR_%&0JvCJ?f zGH8W!C72Z!1w#k7l^r>pln$MB#>_g;Bau}nxbE~F&P$4+K!D6>u`_9v5&6XUU!52S z9w_KpS;3ZM=|na|NH)_NA~6OLOPD5b2hUJ228#7A%0I>`Tj|NjgXMvcwf~T(Zp4ud zWWvCpx&(ZpZ5vU9C^vh|&S(`zmrbfbeu(*%9p@pV0xN%@N*X02jEg`Yg-CLaEHby{ z14IOulR6Kn6v~D)Y8tl$V=%}H)Ovu@b@|9f2vd7t&bV5B%bYk<8Ko$r36H=He&_6K zY)ASPiN*(CA$!g9HC|^p1@uf4aLtexQ1A1pLiO1G@E2hj(8-&eaP~F;3#^r~Ei4H% zW+v|FH1;}k(fWC^&;4)3--_y{<%@yyH#WQ%{dEL^fMn)yS{Lrr2+XAR6ALX?>^oY~ zj7JI#0PLTsR6J0~O|gSn5i|h!fR=ojKl%fOkAux-zRJGgs8YIb+3n;ywI_nK=PL&ectXuxKELP`3+$Te9FGS z(r!buL(FS925i78j$B~Scz-+;;UjS?rHz$}bH@H8od5QXsJ)CQUMe2%wS$$Amr!=o zbsp8S>_RONJD(gPrBfVV9HSr3uQBiEwo)?+@nLBfU{wRa0rQ+rbvRE$a3e`Z{UNM* zm(CQDwlsq-=p?_Zb*|Z^D~o|bGycN4>&;v@>IDs5dTP}Tqw#vwN1?QqzS9i~+JDiC z4S>){H;S%m174%nW$6ss75>m(YXna`6 z92T?VU3w}0k)}1o6B}_32opOpU#e$a0R1rMFQsj1{X~F|REea_*na*yqcQoWC+PI( zq79)Pvmr+S5QG8vRdZXABAH*$U)4~}d0|6j;%ufL&^&7k)2W@)gk+jM`yN$8%6i`9 z7+OHxz_Y4B`tMHbe{;6c-av6g|u5on322+%rg-EB`qt6N_rmbyrDGD8#X=glpUoaRJddn zYMI$VD9BnNv<&A!;uiab3miO-8M8XIlOo4|a;0>Bl5PjPlTs2gs5Z`5+G6!oc7O~p zAN>go5c4?#A{E(b#)u`GPtlAqSAWFO%hJJ2b-qhIo=Bk%3i5>saJ=G8jw3{ajnt`H zUeOiYh|nHnkaZ#)x|SvBRh6U<3LQ;5w=PAI(xK4p;aL4y2mc&yMa$l1*Iwol99rwK zR#wSd(Uy7Rp^YhhQfZ6!qbXD*k%gh#)M|ksU`Y9i)iiP3Orz4_HC`nm&Ql9>|bUu4eY zE6Ad@&WSw7Vz?5F=tsf5Zwl_(HeR}YTRJ?RCGvU`V0lOfivTDr2{GF%3T@QJD8g@y zJ*iouyaFN=Qk$wgRCKs^3a6qJJjFomz~#CS&TF$7NnaZ@NZM0P!XX@2#V3wN@|u!9-_u<24OB z_%ClgDBcn~RZ7=a0i>Gm5R_@QUJt4i9)sg``UG zKEwy7u8k;ks0N|BXpR6JoU#t2UzY%8S2^W@K;wZqHoC0I%+d$yBB8QT1dmwb%9Kav zG)Sv^PK+}})pksaN?$$&`CqK1Gz86r^DOWsp8$7#c1w}ctucm!sRgY%xMvOX!2k38 zLJ$;?{^^@x-B`VxlR?S8qi)C?K`KkJeJydl^qX6fv4P06nTqDhQSY*W&EaIRSC|GP zJC(b(hgkGR8-hZiDP?T5vt0zyZS1R%RJqRuSb-^S{-B3xt$ZLMK=90Ah54&}Tmu%R zVLu+upC%5qfoGxer_qCgicJsb{upqBu7RnNA$TGB*pTf{yC$Rjtb=-zUn_LLhUQ+A ztzo`LwUougUa|zbZHwbzb=#+Cq{CqKvCvw^EOigss*nm~J&^T&hl z`xLo0F}rQDSeWV)arl-z4Muk~l6SAzPfA<77;PG2=sjqBosXKs4{rzei(a9lHf*v*b$ZIGVnKx*sxT_ z#m6Jcl>B^z^!PM@xtSn7JrYbBFWox+A4(0<(e9}s$7%%V=C|Kio`hb#kidZUXZh}x zuO`9j5}C#bX@~_Amlzgo`bgrBB8xvrSB@Yi&oQwXQpf;R-pVE9i8e?B4W{J#klgcc zpog&D`3-UOC<^<41b167U`o_+hZa(#g!*ztg2z=?6{5*Iz;1r?N=XzkIW#GLMlykJ zkx5uO^flBvH~8j}Am5mfm&hM)^SnH5eicc)I`J}rNJo1(m|gRGU7%%NM^rR(;8h}F z4)H^+1vm)terrZP8Hp1nJCU8i?sr_^1Urvkus;l6rm7YJ{*!b49S%J`r2m43Af^R{ zAI35NUn31vHQ+&xAm0u+Nou-UT13lG`oh1=J&5Ge>9IkzA$zZdxasKCKjLGBg@{Iypl8{vSl4x;GW72_ z0vC{Icb7uzHZplM^DFPUJTo2=Ar<9pUNmQh!YG4U1jod7vSLUNb;z@pN}Eb(Z1__V z)!i50bpx^fWkVg;b`GW9J)61lH-;$wnYB%*dJfMef}>`znr>`Sj8&=Co-w>OFiL)a z!nK>UEdWvvGbAvH>H$DUv!?*%MF}zxQysecr~$>dpwS zfpUZr>%NuEG=mw2aKT_ySqwtRh?2N479VTor1TJ(cHjOOV%3HMggR)R=$#J8!$^eg+kN%ROS|}-#dQPF z!v+a#M^U%g=02)9bTKpsO>_JV+{Q>ZN_@zO)QitRU$b>K&2~`(YagbT5j3X6ok5hMJn{*WczqzbX|bc)wisu zVGGT7xD{y?)U_*#Cq@~w&@*dw#kMwMiAYT^WMANnl;!tsx5aR6tSd5DxEY|7bs|rc zkSblza3o*kKuqL?R$aB5NL*v>t5#R~U0u;n=bRC}=$$AOfBd#cy!5(!64gckwG_xf zf;njupZ_MARMK03k_g9|F$| z`i&g&4tOo+OyDjtD#<(1mjp~a-bPiWV)Ue=rB}1~;403s$`G}~KZ!aWirMCeFl-@i zLw=`RTr5lId=tL-+0Z2=VR6`mz|5#rGelmI53HP87G2C82&8%Ml0V_d72 zYo4p4h=A*4hmkzfysBDH&Zl9+H9m7xr$h!4hhxtGpD|cUs3e?9@tDeZ$ z($Z^ViKG-+o)F%^K|Q|sfyc$XRViI~N=WR4=;@6?YPz;ZlX)u?|}qt8lr0 zp!lE#2+wSna;MfqZ)Y&vz+VcL=;{M0_jHDx(_%I9bvcfHkgQZf0u=zz9CJOTrLP*y zZ6m`gCUUREoex%}F`yR2Do0Ax!SL0!mp#$ebRMHElFT0^vGBw95<)rf z>hYx?8dRK(>vyshp*ltt(#e~Mi zgvNm!$x{U`1<3^r1w=SRH$*l>GoliRW{4O-L;}$WL?RG{Km-C&3y}vzEJQ#JQDErn8R8j=zz_t6zMLVPp_?I_q0fY&d+4hfk{SA9hG2%i5r#w<`bG?W zF!U{8$b+E|#1PBShoNtSp%X$lA)C-w6EY!GLWm~hBh(|rBeWx=Ba|bABXlEVBQz7L z5uy>25sDFl5qc4F5gH*RLa0T^1ECItI1t)EC`HhTAY70w$V5+y=OF_KJYZPxSZ!<4!2J;m z85k=Iu=~Ew!>DVL_~k&`X4J1qj-Rf-vQ%mZYW3nurpP}-@lP!Ir^xyr;VF(!n&Y!d zbhW-JJ__|L$fL|>J$^mCNuK^g44;CNd=@321Ir@U)q9}po2t_t*{~W}z405;@<%*JH3G$$~l5A+2z%EUZtjOx6s?`K` zsr6A7^hUCR(lvqI>LH%0(EJcf6$Pkzmg;(z9V#>Zl~h%%Sf)Rss0T})FP5t+@HfhyXf$+_nv^>JJTht8uUOJ^kUF6f!%yk^1g42j^ECrC5c}cJU!bfu-$@T@Txud zjZfZc^xCX((#!3H_g!ntDxtN zDjG7nVD)Kx^<1#}cg)XWdb{s@{K(_7}h#rF#GXKhC+cJ*qP?&dW|x%<3aD0NfX$WXZc=?deB3G z;q^fewpC6h&_s4Jfn9xpOg`w@aVz9sFZiS+g?!SJ$$yV-ftbLKj>q~z&r^XvOkn4N z)%R$7{StUJft_c|O5Ox^qAI>h?1k%6)e=FEM7Em1?m^EqN4uWiGl5;l>EDaRDC@so z@o3MpY680s^XnD92V)Sg?>d>l?tQ~B<4>&zt~&43K5I2qE0VS&X)Va@1q{}AXjiOv zFJAKjND@%XaV^KS9M^KWQW#m)FSvolVOm|(u!;&v{2uGV!m1=Ncdi4NJNL1`+_?yh zaOXak5$;?CUhdr2^K$2SUhdo%ftNd%^K$3D2fW<5o0mIh!poieW-oWH=H%XMaX&Me275VkQSMle5g^A7=8EnVj~6Pv8fazz=@&gWLSz zvmd^#f`)^j;Vd-#0}WrH;U5YTcm+t{G!nQE3H+M?30wjs@CcB=AwUAh zA%TB4BybxNc#jYMt@z*^fWSNG08hb!e<)b+9~S)cVZkTBf`2k)q>J z^sk1ZQ{Y7ZbWU^=PW1akFX2R=InhBl(Z3KUdJ3Ta)qpw$fcmEc)Ni2v$pG~bfch5# zsH4DjAY8xUdJWf2;CcyMr{TH}uJ_&-*gRQUFI*M8cs`Xo~*J|BFt(T~ETCMxkdQYwM)cQ`X z>(qKqt>e`CO|9G1`mEM#YMrLmWokX9)?sS>rPf_)eMGH`sP&dw4^itNYMrIlKh*k4 zt*4;%?*y&iX#I1c^$LX0KbsL91P;0f9P|!2=%3Ap9;1PeL{d)@Pts13PEt-1PSQ=1 zP0}o>CW$6VCMhNfCg~-~C22&Gh@_UJ5J@1CSdu;@tt6p90z$eW)sRdel|Z5)`5^Tm z@gVIW=^*7G;UL{0*&xl3YLIAC0WF`_Y&F@iDrUW`I8l7NcO0V*1x;uAqd2r9l2DnzJgQSpUP z0YXIz44A+G4Ff(H7;%D#6IxCPaRP`FJ`PUU-~<#!--#kz(RVAN75NnP6!8@86zLS@ z6yX%z6xkHbifW2zie!pnieQRfid>3D6p1KmDGE^pqKKvFL(xhR3L+q)8&QquGeJ~> zhy+m&5f9N0kq%K#WDS$a^aw`Av)s;O!4_5)V3+aAWbXnCVEHew0JdPERV`R6csX7x zc-L%J@UaxKg0E+>g0D%!3Z6ze{Hq?NZlzQz)w48Q!K=tI`*nQsa*K6QWD};cJ^*q+ zjlWE`uKzEWEXV7=TCz(u!_~E4Em*bXGX8L1Se{!Y>wg`>u-2-+s;V{(yI^?z|MY3} zYZoRvH(>O9o)@HkerGwBV>wQ}9H-ueFPKyAr~cIfNol3NWHwV;sgzdgQ(CEi$x?PJ z^{RUz3F8yJQ{@OLhEP zs?ymkJ8Zb)FOW$a?)Wi8wBe3-ZMfrIbZEmJ9sjQv%%a|I*((b5FWRyc^)T6q`jXic zZMXx4dK1)zV=Am$zw*ai@?Td((d46O@=OF6+^dVrd?D_mZ4}nbzd*p>58uSC9~;@ zZ>tup;>+sb`PCJDup zYsaT&&C`?S>Di9clO3l&MNSMFA}0n71h}U^5m3XYH-S|*d=I(BhX2CvA;)X@D)Jfr zoC;r#Q{ktyQsKL1Gkm?m@NKya-_?SZ;j89*)Uz0dUz2EXz~q@s9G%LhrwZkYud=E5 zCW@Y1S9~@^O_a)}9KsX|g+gsWAOVI9>>84$O8^NrAdmn<2G%7jC|B1V$+M$eJ5JPe zJyutIGbGhgB-OM;nkN-HJ_piFQ>YlKp@+zZCJOQ)lBozwcBmmMo+7JhhT8?nfkRn&r(&TsgfmB~j!^ zj^y~HDT;_}sftgk&hl3ks_H1&6HS#PDz0nzrpW0-M9tHWXL(vx=!vQx;wiG0BD$`j zh?-`&o00IqE1R4{VK%ikVfr&{*%V9EcxHw!7WV9AqjP^~D zVSr_sEQ3J{4JHc}WZAbAD17_9a@=}(h#9N`oZQy~F<2KPs}7^>MlM>6w$ot0SQiP< zV8aLnj<#L7u`H|K6bvy}MhlB$u2#kdOaUab1_pYrV^|#9fLUO)T|2|?25bYCYTuOE z9of(ToLTN$!I|Y+Ot^D8vpe^>%)3n6poCcuC@_rWmW&e>w_+-DPW=Q@bFa~}^0 zcg}@`JNLDaaOXgfaOYS^xO3kM33me8a5=L@W4o0s_<%+D%kK^s!%~y zs?e2cmdDYW+O8{wZw3^rO5GFDeU}`&PXGxvAW%JRr?ybqO>H?& z(=<)fG)>bqP17`e={baMfv|7FYGh!)1XkG#tp*JVC_J$8JotsaExY771Bz9Bhn5``B^d~?0f7VhPH|GTv{!x&Rv~7#1kVu>d?=oY)xNcNZ=Qpj3AmWT+s432c$L z=zn3Fr2X32roYyfV>#|fzV>TtT2^^qZHM`!rsE4NzScsP#ab{G+J?WjMww>|JC<4S zwetKii`OegY3sMJVllkWd}b@l)maD!ZO0iX5LcPa}#Pzk^&)RH;Rg z#9!G|rIuRLJbg-%r;emeQ{{tDK$2Xv7wtvcL9VLGrXh$*_3A}S zrpk-9N z{z<0)L6YfTw5*7(W{EnbK2m?tj%DgE+El5s=C5dqLe2A{CD%|iPv&2=CM%-lvui3s zew^iBv>Zqel2lPos;Fn#kTgqGCErxZzi2_oQ6(?hi}sXSLBwA{#5Y02FG0jdol+x+ z_#=q;XKAXd_#NkZ(T-=BGR41WRS)sa(IVplWIjf9%a!Ej+WKc?Fgxc9&4$Frbvz_)k$_393V$Vid5f`@MHl69AL*`>bgz? z4N^MPF*$a9BpgE0Qw9YMRv0V{4M-TpjkRE)1Ep2lzUPg!pJD>L2U+b)vby+oWdghR zx(qy6*x;I0Ez4s`@M)|d_zesjD-+n&t>>9M42%wK`xgI!92YKt-}hifo6&Y7ubSlP zdak>d{qM=wBsT1lJG5dOvNw*!aUIvL4ZC9at>afKf)`fD=9;$QI)WEg$1q9@_Qo+2 zw~pV|EXz#ZIOf7;yY+HkGi}$g`!E`|VVJC*ZTH`Izoy+7Og6_~$N$2!ZO5()o9&kC z&bDjUu{+zYJKL_w{3^6PpOo0012ud?!!#U>r@U0Om(n7IP9YiyAP7Lv0KpEn?0pA{ zPv|0G4Y|P&e(lc2U^8?}5#bH4p$~=qK7bcqA+{3zqj3(FY zgAaEp=~cOjw@W{e^L*BZ2*K&fC8P`&0tjVm1}-mG&CluBsn_s#2DpIH-S1B~h#xPCmN77W|2nDh<4rx=MasErXcK9$AHZor z)wl(<8*t+j+RRAc$9pQ!VYG8R>$!PyJJ5r2&i_e>K~b zqB$V4|AHC6v15IC|3z>AS+S2ZOmN{`Hv!0>d*qTh_6Y9$jj6Ru3sDUND23AU-(a&Z zS;GVvQP%T~+pF|FEpHURa12zA4964cA1UL3<}NkOb3}C<@NeeBKNd~S>eAI-`V6pE zk8t<`@GN8BB9j2vV+9TD2Uy{$;Lc%1toca4!(}PkJ2)6PfMag|O)eDy+`EYtdspqx zu((2&+ggsE{$JrmuoF;`>HfeiRSYr4Va@n8OoA=|t$j0@U~J!?Bx!z143W){Dd#|k zYX-Ce9D#2;pk_ezv|ef3dHEPUXs^d`KtypUu|H280p)BE7TBz5Lv*JC6 zcYXLvK{#P=-PKwx!SBeqf8DUD0Rw|FXy*)w2lRmr6-C^%@j(nel#J;&6*keXYwjX#cC^Al84DitOl}~QDJ&hwD0i*2PBJ-Sne{WI6?4Z%VZCylzliB z$U#GF8go`Dgb5~-X{p02eO~MAI@+Tr2<*7|O)Ri{*tbhPXA7q))0mhECjQH_k=I-# za_;_Bl3#fKoZz>?rmkakQ@f#xAp}uFfFm4~aN)W%(XyI)RMl*62j$Mwf&iR^aF9NV zuAYV(AA2|Ftx9$TqzUqh->4ar z+dfR{wCEG2lE|F8-+Md`y@ZZYiSVawGSa=3YDSNvp|3>!!AJP2S0DD#ivfUyN*axV z<9^k~_1BxYFWS?9xjKoy<4{VP!WT#fBVL}d2TGsI`q}a!=UgGgmI>AFA%2&syqNwa z&`fu%VJzJ@A3fHDPnd9OnUz3#$4v|91DN?|lPdaTxwy|T#1$Z*jRn4hVq~HN?fG-% zjH!A0k|rAP#RSStGwHMnkM1Bi-f5aHiZu7KeyS zR8&U+60qou{AA))-`wnKtF^I5DCXj0FAIp@MA7^Qi0qO!DohAhUlwl>97mLsjOOYNngrjN) zD@&r`W-DphhG@X11t++)zOK27M6|TBNxubS4UMuZ)oe!qdlY!L)>8C{h;UD#3z5dF z8JZPmWFx}2P>TIMC(6WqPj4+{lBY4?orlEt#I)lS-*bamdDYeesqxTow(}s-w(V&>&w#=+#}AQqm6yG%pts5L)^bvh*~| z7(Y#a{KY*XNaX4HbUU%b2!aQIRqbrrxe2t3Pt_;1dGA1XK(Ji>iBL4m^aBQ15-OFY zgTer(Xi{=lh;F>lHC1`DCOKHg^B7Hpci`#Db?7&j@T>LVNXEn6TX7m z2a;x40QgULAnQbF2!N5i8y1ok=)3f?=cQjRfZsA|1hkS|YQG?UweAlAOjds_;R~aY z{LFWmnf(83lpV?^R)186cR4jO(tctW+`&TeWGg6^0l`VNa;Wvj8VGL`TADyN{t|A9 z4F?ub@b0VI-m%n$y+od}P$)f`4;m!1YHsAA?+TcbAdOOU(& zToX5dBWWP9$+Xq1J{9=z@lg5!x(^ZD3Ct){$Hu$*`#x3@1O_ljd1n3jOk=kbP~wJy ze@kTP3FD4y9p-Pq4zW>pm1dB|%6p?0>iRCF<;d`jie#kR%w(RP6-KY!R3fvD^ef~%G3V*)JL%nVTF z1OrBcDaONuTa{lS6TH|Qaf@VC?_o~ir;MzbT;Ve&ZdKVja+__L-6DkH7SO!ZF+hNb zDgKoQM<5BjR?_9_eS1|!@XBFP9OcvNDyqk{^tnPS>4&gZS`R$o5*8D=Q2>j$xe*+7 zCPTp0_3n(Pm{X2S807+9w45!KI7L7?2p;8D)D*8nJ}D5*iMnvzzCu%6kDehq9PL!E z`ok8S77*V!)EEf)Gas1aL2gm0afLLZqqby?^dh8Zv`NZFQW8u6k@r6 z@^^2kU;j2xYO_~3-svr{!L%}|^sBbBN*Twyt+FDJ<7*0!<@RSZIhhYMW|A&Hlq z9W-gn(`X}rw@vCM*#D%|Z3P=yTdG=Opzu1|vLV|dSDziQEnOZ8IMQToLprN1%iU}- z#mcrXLbk{QZrf|u0RP0Wzg7cl9b~KKlC6;-+A0Re)|xe2eTCT?%v(v!kFEMlCu3%w z)@@yqv*|WY8?&!Tl9Hy+k6bSm^mpXDx3o z!70dn11NqsjGtWf=UTY6rPTO9!pSY%*TS z%sW&%iRKL#JY!BYqu`c&tui{{UPM%(m-QmFvtf{e^4m;OE0vkB!Fqs6li3Zm6|N@> zO68|vVGKW{Ef=ar&+(ay^^~5d_7bP%r)EA;F)g6h8oo!%QWq>5NJHeEjsiwyPQUz> zc@t_TRx0_Z6R|4Af_E2DmM+gK@^?t$7`(7rVnx#3f>+ha-mJ(vLOS)^pbSays4r%E zq+U#+XdH9pK%r(uR)lbpi>HlNNmjDAu&ONjL=Jh1I~;PArbKB1X$NLBZ}TOL6Em-@ zMo?J1p&K6`k<7N+tfD%8xiB+vip%?)f>v6%sq%Gzk3%2&(w+%@x8$}14IHHc>(VmKX9&;=? z!G}M{0i`35KPkfFaGTI%?e~BdgR~rdNdbvtqtTQ#Wxz6lpYK3gh$0kt{NcnwAM;-< z7dW4MUEyK6Fg?U^Ix!tWqn6Or03afq;Ty9>9OYP@67ZDVsG|6rLh3l|r4VODrV^bx zMeOJ$1Ft16tIitpM;#X>fsgBDCkgVrD@mRvzwz!I!U36ML^jLBmyaCqGWaZJcY(m` zen^@eR|Z1`hGuK;shBNq4(gFVxb>V-iHn4iAUM>=1u3oYaS*;cj5s>)y+UpX;w%z$ zMbay2ABbRyDK@o9SVO_X1tDU3fEgxQtu_5?ub;>UO!)K^?9E-s#Ej7F6f7b0QA5AK zH$N*;1$hFCP5!+g6gnvaj>$BP3pO`UWGFOeJ-U$0A@%OcYa*J(Kvi(+RwoSvmDAoI z*rUyFOZbSS+de()7;uSChT~Hab`KK&a;#ram5kZ#@#q1YWpn$`q2bTplcgK5QnZay zuU4_aiZc}!KoQcr*SaGD=#WB^B%C5lOUd(}z)4E#m8f_&^x|fZ7s)?|;m^wjTpJw> z;9_P)(mNI~jvMLv=#x$S4;ub%VV3{o?;{E47orHXiQmaycBaTStE5HQ_bd>0z!6=2x98g|L~@QWT_~5 zH!#+nu1`b*tStTd=tcI5dJP0gN9kQA0&nQ8H6oeF*p$BPAkTt81Lnoavh|*{=+<5} z?DLCplTCd-;{%xUE8m<}i|#-!C4r;eF}egYWYL{9g|CdvrvOYT<&{}P@~Qk092lSn zevF&+$D@c;xOsSWAq35-)+I|AC)2f53SZ4 zclZ5y&Am;=XPpVSJ!lFAt&@RMH)*% z#KaO4Of1Z^EZL#tRvMO+$~QY%V}24>kf;57e!L7Rg-l#N-5}Qm#MZN(s%#=oK<3iY zuVz@>$PYYk$}r2(j(Wv++*>ZxIl2lXx7u4N{7i<(A48gmzs#vD2y#(3Pu z$d@Ow-&Kx%oGB9}id~&km~m{A>=qZhngT(1y+QuHLGwVY4|bv4W{cE1C{;Xb;Ww}l ztJQ`&8GGV1rsA~cb1Y!U#e7;xCq`Ga3%FKZtLTaiLz)2Ef*^@NS#~Cd34tsN!L))) z@I;eTNDAAAY2}rEUXxGD;@0e74bHv8}px3XKeUs8t4{BabusCyNhs&q2;Z zK>8}ab?Q<3wS^#_9Sf}?XF9P0@5@tX_#7Q^uTlecEMXVaCoackbW7&BfV1!cHfDbbcauUK|VZjkDrasPGFzcRHi7vkgxPk^C0*ZjnI>d3W#ghI(h4q^J}#-`ABGz0%?qbpdaM0f#6!0~JfcHlr}b$}k&nc%r(n)Vf)-VAJ#C z%KwvOMCc2AIf}b0%Bf5+-plRfnoy?+6ua_2{eF{*!`#Pe6Q8x{v-s?W6y1gUDh8oF z180Q}x1B#BESyNj$sT?xu(d3}u`x!HwP7*&TI{|M7z6^OdmY6eekxs9&s& zK?aPDEWy<6L3X)o1w~qv;|JlXol{i?b-zPfDHd%PzLzAh+LCVU@8?X?Ac=Y&z; zr*g=%R&Ie-me6R^J3sKvQRsYP{U4B%GNdiy-Jp)PScDHRr1%942N!YQHlC|K?kzU} z3K;S^`?LUNk-l(03M9s@UgcUVLRu$eYAe?*+@zCN*`O^>g^jTCGSBNtR`_f)(`%ZX ztG3KP1`OGF@Uf&ZA)<+nz#6gQ32 zv6SsmeZ}lxqL)zKP(5*hiB1oZ1C9E;0|&o$3j@~mNP4zvM?MVDT z@!(zack2k=zDv7Yxei%>k{Z6!+U7qkYodWC(1y2>-da!#-Qv;_@S4(Z!nQHQad+I0 zY(K3M9_Dqm-@4eS`2;R?o5^kRi+55HTT^KsP#Y+z@)fIH=H-u+Vyp=OdE#kswvbRn zI^>#x!s}e0Rh*I98(czl1edCD1eKP8y;~ecT2HyZ4?;^E5i5a< z#+e7meNCdmjx1R)abjWtc?4P`HGKH5916*&9)4(p;wp6$lz4|Zk2E<>WaA9aqg3bCnvZ|T*$_g=r z`&$txKAFuA7z%?AFHCj@cSpMDGZX=J^rj*Pw>mzPE%n57IgI#Oll~+u%yoRFk_vBq(CjRh*y3dTqMjPU{!PIVeAB54LHDiO5C-?G+Tge< z4$iXB;JE&|oXV2#pcz^Im!`G#=Q~yKDUA|{>-&b$b9`iNninb^Nc*fR?=i}mm22nL z&8whBa~)U$=Z)+VHvn4LCYoz;Ot(S`*q4?(r`(`c!!Uf_A0BR}F&y zHzk7w34NeCf-p`rYLE$aQz`T+V}+v%NKsWVJsfzHU+V2cAe?U|>A-{g$BhQpjRB~p z6ZlVIcN#d%4fTn+b&(J?CQl5n2lNZ2rqU5emwLtBU~E|AJ*X|xV%WBHRB~IK$!)Aj zt*<1dfLM>S7MxW&S%7L$6+d*oJ*}psKGb7B`+qSsS5Wf2DQy;YLEhQ+d8)j7POz-S zyx7Qrj*ddTZH`6)*1E7cs_D7a6~X`tfcXK*vMAFZwOai= ztLy{@`LM#oK-7YZ#Md^y1Jx|J0oDkw1r$Ad5!_~p<>iw_JFEQ~Dk{!HX&mg7=FN7W z8cmieJ$56!(tM&1!r3AwY(14+3!0vfC@bul5|*$>0Q@spfjdC)8B~!0^YZ%LI9%M> zgBgTk81LHf!FmTp&q~TXaK@PjDm@*5|Ed{q*9QYGSBRuy?l3q_36t)A0Eo*Y;(1Jo zBVBSKauuK>U1GnJH1A9e zKFP&CCy*s@7xUF#Hxr3>9ld_xbhNX&%CvZRv8-Uk=1>h{st<+YZYt1(cPG7gqc-Ea zK2{`D`%-`grn1JO9C7kf!aUMl!AP$_ zyY}x#M7aL}K9-V9Mm*~Kx2VpB*1nq`Y*5~83LR=~;f@E%E(&=U068ggnvD?knT=Az z?B6t*!BZQZfXcP181G3+w3>jKT=W=KST5rdB&3MvCdCA^Cs|d-4+}b%t602B<>mKO z>t&Vpxxrbya-T^#ZAl9cmjRIwllPI+)8NhQAq4!R)#&G9F^@ocXf^<9hNT1LI9G z2wW`>QQ?G83Sr*MdxxxX(G#*68xT$g=0en%xA{4y{%}c8v};{xoO$ksB{)}ZoZ_#CkpAA#%BVr^odpbrDbDjoZ}$vfpVP<>H7HX0#Te7DovVXawrDyaJvK*dnp@l|ya zmO}ZYS_8}oVlS#A=n6^WH4n>OT|llnL5@m40~i4Iq_M71ZW;xg$GS@vIrazeWIWc- z1T0L~-dFwjxw@b+fJtp8N~wI#m=j-QUM)_REQIbAu~OEC#kiy}Sfz*;Qq(dgMM1HO z*4Pg>d;4cr1x;}=-Jwc5B9YK7mF7RFwm1L*W?eB>!BZJMMuS6FI&CUXxwh$3gA%~J z#D%3sN*@N3AVySru-K?@V^f#+I|`JsiyY(_OrO%^kP1;5M%XK(GIA^KkE6S-7_F%SBDZ34*EW@?^z68**^r*l~6}hJ|tCh+(JgY3# z%yHC;@W>H8fEv%K;!9rbYr#1tW=E(FeUDuj}lvQ6~2g#W3e1*&eqZ z)Ts4SGz#Kcj#sce8eTT*z|yR4Km2)^CLJ{A=-twOnvNr|215NP!B4TI=W!qael2-V%`gDN z{d&u$00Dn%k_JGp(mYiCG!Z{gi|y1BfEg13^I#V@Nv_VnBR3kPJJWiwbd_IWP=WhP z#9>*(7$|Q}bo3{+tkS!_LOVvBVF2@GsE;&2PW&{`?_YIcfkjZ6?Vj5Xg~V)IR^~@k zO_Ts!EqJ#FDqo)Um^N0)N^AztQ@h~vt1HHZ{DK3b$cfZa-U8nCUHAN2bip+H!8O{C zfMlX5aVPd9omhsji%_v9kz30o)8%H`y}MRZFnZ^@cLlZ;VqSx&pB^4QIGo9#If$5{ z_#Xc9I!00O5dSU^%=scP#Cuu^cuP4+_1l_sb@+b6rUS3fsOXI6ia)Bn3GuyL&;pd) zE|Cw0uFP)I0F(+-lAV{vSqPzqw)uz#$GRG13M_dGbB)ym=s|ZF@5mNcUP!={L*E&@ zNT<~#SM%pf5J^Y~8cF_Rl0EmurcoiSgH4n4*k(WS+U(l>fp2$yfQdRvRk^0-hiH)g zo(GLO%s%R9c2eB(B+$r70Q6mfi(O?y7%XN(71ZN_$%txu#X{GR!0x|YAtTiZ863x- zm8tW={lS0vm?M3!HeojWzHuGPKGKU32sxKTf7K`Q#P?XAA`l>W&`Ymen|e~VUHBN( zO#|%`id){@dOuBZ!x4$EW%&VIH;zY79#ty#cywsjN+VrHuE~v>uKlY^heTh02@-yIRfVFFEF3@6%hLxnvwYP0Z_9t5-pa;j! z(nQ;8CSSR_?|WTaBTfO`52Q}vsW>H@7KVwS_CeYdP?}fQiI5cr@u?lrF&hAa$*|o& z3|yb5DFPB@L}d(Y2VDe z!_qNEJPU!~wErffm&U}{Ku-97hhE~D95goFb&W z<3=41R7DBvO1A{4pb*KM03y=Ck9 zG`eQh{ew#4qB@+3OE>!?rLLzO4ZZQk#cOdG}-gt4TIa=|4*4xOY? zYBN#N9n0n}N!RXHs&-f1n~6PV`)6XpN3VydCZ?gci+GA7`6 z@Q9b((leWpyUUq6FCFoU5F!QhrW;D`S(RneFWs02WFQGEKKb)OGD+x*H%37UYwLM3 z)9M>E*(D&se%p!L=$6#p9$8Nlq7R+|S{}u^1&b#4=v-%=MVrZ(-ImO|l1Vc~AJ2zl zU;H8e6qZ90sIjEl@RR`__r{B34H}6Podb{W?>jJCov=(ir|Dl#auTg4(i`mNQbDFlc0B?Ml#6usH81mShU$lp^={~@LS2_Sn8CZOiAE(syC0#it10o zUMJNGb^!mBbR&G0V!zA`R8;`xzpo?!lXU3cstT}Di2^%*2e-WmldM4s%*tJQCyBn^ zUjYCB0AT{m0GR-n0M6u0pR1J)j=Kykr`VR&@}*lXpVe}g+e)c=RrA%S7pTx?vJ%=I0YC9|Q?U?wasiw)+&*jP4}&2?EGC=8SY$^pfIQZPUf zpaf7F78C*q04^*C2O0}@Pyn#0V6I6;W3ic3E-W^aiYD_hsc15j$^~PYR5mi0N#&Bk zm{dBh%cOwe3Jjf3XWjHJ;dWBYQsUZnCnv!OqS9&fkkbmn8aoy8j#ZLP7pb3?N%E}+ z?oY0EilSytzeU=Ul@z+u_&ptR%CuibQRS#kMpl)P_o%sQ)b@+nx;fbVB<+My_OyAf z1m$XkB?Q;2r^vo@Rf?GLW0RZIUAj}M)7g7s>>$+kkgfxB+4-b9I6H+T&u(U)5k6dG zRyu~rNMDfl+)WUf{di6e>ZY$AeeC|3M*I+|r_THDax+(7WRB7|u14zrCUy#W>^|Sb zQnC*IPH`nkK6cJdC*@536*oIb(;=!whwrdo^YfLPnxFTnALc&X?_bDki%-9$Q*16J zT;S9ues@6il}_|4li@h zkzXz{f3mYh&o4X7zFAv(Dar@nmA}(Au{T8bz#q}om+0fz=_k~<{-|$$G))Ytg0ZO5 zT+*td8A+0~9U=%M7z_*vBtZ&6NEoH7J`zA+;ZO}bMnptJB$5~rkwAh3NkNjN173n0 z(;8nU4t>+=Jj9gI08Nv9(0=GhN>BC`QgQ{?y#$Ibce~XjW&6W|-Vq4HQ}FvgCzJ9# z!aDo&Nx=h7ZuRv-Y(vzYaGmn4Q{#QZLoZgQEn6XfoQ2=Y6KplF8?d_r`o;BY}~Mp-@So7mj+0kJj#ya;{k zWFq2R5u*6yW0ZCYY2Vp)KaB2~p7A%diBklio*h7hfs$PO_h0N1dgH}Lk~?bU@zdo$ zyU|==7S|>B0$6)0vh#|-ci-5AT(vsOfNg=-nUkCr&=T28-WFo*D0zUIGBAfUgLFN> ze63!6<8Qf5&;ef2m1EtF=D_|*Ge(DvjCVXhR~ia116OHP2$e5t?571nYsl0nlyo1;%$Lm z4JYIP&oUQO-(4>2QgGfA4DA)jEIkDvR*!C!*W{%DX21+;u)d?;kJcK@>Qr3Lc(1RJ zYQ&^c=ED@YMgdm?%1FGN+;bl=Xiqw&j+#F%UhadE0R=7Jju1(&cd;s%AIHW5xB=su zK0Js$ilRi6P+{yxy>s=roZ$%VBio^QHft3}dJH&+a=yfJ$Gs?if`}APLmwfx09+X* zXrvEfC_!X9?A$EIi#JBPBw@cjZvy&sFH1mR3=zui#;l<&J{9ruHNALe$8UcJP6P&s z@MPI~xYQBwF1pc`(7PzqLKu(b5diyM%as5XDM8_%VsS|6FhBn-fDeo)sr@2(PG2@~ zwtYD{3cDm7BIzXXW-S7zgPSMI9Rc%EE#r2Ki{SJTX!@p&Hpy0(rC~GomzS-&sz2?+(W82uJTyRQl)kM70C$Z(D zwNN=}JWH?E8M-E?gVMIMP&1y%48WF}T>0ErTjm${%%kZJ#`UpCR7(%eKlE@jLG6bK znAriDESzW_w~e#2oq=;*ZRiakTk8wK7;1a-6k7ESc*Z)IgYH z&q-x=fMsvz*|!)=X+ui@_HEyAgreh2yW?WjzwCjd%MD@=;5uqPZ5E!KFGuutQ>`U$ zJ8|yq-Uzvq+X5^;4xkljjND++3~hCHg}qB@QV<{|%a?f;4R^4k(m=nDBVyp)t>f#k z2I>$S2@xxo+5UekF$(FHuyd{9XOG)xMF9WL?uTOk!`i+OTrExGw%HEKtnD8q8V%vE z*BWtx7`n*rd!fzDeC>$$FPOy*9HKV;x&QRaE?s0YPCKa6?48j$2Sz^Yz&NmwI14Hl z&;{1kg*CVxNl0qd&f_6jwU*R(J1yoFzron16*xXZysRRV*Eh&%eVfm%TjE3ftrUKh zXMj~cb!Usd;Wr+iRx6!_xe8BksrrFpAR~#sp>Y=CVH6K&h-Gig7;PtKvjCpNSE8EN zHrkHdnumJs_v|#=T>Dc2lYG^u$?_cIp6#HdaU>Wwy%Vn+1hFT^GpsS>&z+r)c zE1!#bl&tUP+zVn5-w~!O2_oNw#n*{Efa0DX zBo^?}Ho3t&L8i*DwzSj~&ZxArh)z0eJ2@XX6E+HfD^o62{2QatYv`JBsiPnXp$fj(Jsb zN|s?+I#^V#t{-T4MiU-sBgfbqomK1$$Y@kOuoo7a=y90j$(5&*E*3)0m?ZvgRRQoQ z;65l4f`)nsSmhP+3Lc~PqZQRA!clRMJG7A>*t1OM9dy7}ZY-2ji$q+0e+76zMIwjp z^oq{)G;66=`Z7Yb#Kgqn8zAEKzXlbqCCC89uLgzDJIVdMsvtwx#$*sfH^QyxLch*8karMcdLlOsI5A~*qM)E)q9fy zd~NJ35|x5#v%asXMdPaGsH-Y9sAhSHbUIZ%q6f)+?aEym)DX2oQd`|o27D=3n5h+s zJKJB%+V+JTT~n9K_z2O=!YzU0)(CJlk8zG7?PZzF2{86q0wcFtj9m>J@;0_t$bLYZ ztKV*@!~di?)ujwDq>JmDNp@8LnWv2sonRo(E=2%W0#Rg_U>>ko-0oO3Lag9;7JUxX zypoH)k*CBbC0$rrZWdSsx=c?in{;;y9!)3n#<;%ty>C3J*alcCDo{pVyNsU37&H{e zNd%#Jqoq%wvzxRy*a*wg2IKG>#5I+zbE%sLSxNFCsI1KHHn+sQlApkj1Y8RN>UVG# zEuhNIHU=N$tj2~wx-bM*vXgcBiRhDDXM+Z-cF#Iqy>LR9=nO63b$A_K$2fZdVgXX;+7%*<_sN!Zh5a>1dk} zDAR;8EP``+u#5xRIL@VY8e}xu*5MjlAnp1rqxozck0+z>aI)Vxo(#J(iO#ioj=MVA zCd6f&2Fq|7?DBxJ4;PVnu+JvJbuJE<(O}vp^x-nk2BB?2&uOqMlX*a!rfm=$#I|`l z3$9GtgffbY!!piLVVvv3c}8oXX`9D0!D*Y&nDK%5gzE{PaQ#p$ zBbr+A?ug!Zr2V_)-g-ZT4Ph5(sOZp1CyPh%^$3sJ;=5isMl{`*L?w^}D3HjIB#{%X zBl6FBJTQF=62W2l!Xtu7aG4W@3q&NbBBGm3-?riHW@R%5>MIDPqo^sFlL(Os1rbRi zZjqS2bvaGqUuDE@S>el_oW ze|r9Lw3t4cK9(i%clguueem?)X?j>evYc*B_S*lv3{JN;W0**9+}f+t?eu&Rexsl6 ziCe5+r8>uSZ~915diuRT{S$vW#`HV=`{_BHUYf3ddMqpp{n{v=aG8;p#wxWdqX?V}D~7MNwN!=0saaw1ro-g|;Bo&vb||m+oXQri4N! z7YeZ#q7AFF7nVdz=$!lXAR-`Pu&9Ok38fLotWby`p&1cQTVIJ3trfsAp%Y6ovD|=! z!68WMOd!?GLm{Dyh#m?FRtD{`WJEU_G%CquL<3+`j))uqnc;z6W<#T4; zp1U4m3pac++s75>F_bra%eukecWJhb0N<+_{5#q@U+dLzS1jXppnzY&TxMU{gW7r* zqn=LR_ovUx?;AZYzwgWM`-be(;9+9in57h6@`jsJ7@8nVy8hNx*XvK1+ZQyeS(Q}f zP{G%Mfr78-K*3j}uy7j=1OkCTAP~s&m<6j~lux!0uBQ`*CW(lUdoJ_9iFw2$T3URS z!ayl`c6-Kn;f?r5oGreZZE5sQVF`X7H6A@1UdN&-bddqHDs)&XL6WD#QmDgHNkUhY z0|Rbtx{DE(={KK%zGwB8>;tJSqo~nZUt!qDe70lypW!3=So&=olQz$KyU|#-rU)dU3H( zS@6reTxNudD!R~Nricdc4G-<@s8`hG0A^AMD$1f3{kHZT-r6ZlAQev|5gv}tq6r*Q zi6#{tRVDmnLiy;1cvL{caLm~BC(;;>-enaxIqFlGt7BA?Q*a|n;S}71*5ef1 zUrxbQ2(95FFpX1in8qo%k-~tHH_SK%M~$}59^P=(ven?KZ5v@RD(K;aMH4rM@`i6& zHy^(CeW;)@%pN8(*~3J}VzFSBN~MBTO1s};%;Xqil+t39(vC0+X-T^^zIKydZV)1C z2DdMZt5!`69^ackqt@VC)(r{cg3#K2zG`BCRWe3$#0_87;)7omze3spiG-+>7T8e_ zA!$P(fCQru0AN@oA`b_nfk2!VDZ(&!6aWA`jMSijTs%Ay2ZX_3Fc=5~LxEs06buGK zK@>%D5KH1PlENzhPCs2Au*t6%b_DBZH137B9srY$5`IUnFApr=rF|Pdt5eR2*{65VuiYgkv9C#Ud+ztu&nb1GC3* z%P%k0pM#ysyl_w)U$jUw%^pk77;VQn51WD6tl6>yTnCs3j;e}EJ2Dn{DrgJ1>MB<- z5D`N&h|sZDm0hERVD&a)&UEUg>Uq7-Z@{}QunZj@H-n$J>vb~D=%%$$l*GA>hw1{< zf+A8{4PlvS=|OBe7GmKy09in$zu|3WViEV*T);hcqK1G92G(r`wrraLOM%=w%})<6 zz@bTggpVTJq6rq;%d*P*RCPEPg#?sI6?`PhXkzl2BCWm*?x=O94{i`rzvI-9_s@9b zvn}ZY3V}na@@{AE6hB_XQsk4)A_Vy=&xB0Hs6I;-8wrKHMuKNmkCk2i79fg;$1>W0 zSZMGXLqZ;aof_h_<_ik$VCJ{%cr6{ zbEn0Izy{*mQHagMVRXytgF@y+e{}8q(Sa3zY6SQ-35~a&-jEr4trY)Pe&~zs0$YT~ zqpHO#^)@x$Gj^4+iqBRmMveKt_BjT$CMJWqGZzGhC2iSPXcFD2xF-DfSL*E~vlwQS zGH+kT+{DS}#Alj`BSBdHrpKLKdlNuP=>|a1W%E~0Sw?!VJs@DW^AiR>-B!BjSnw%7 z@ryVR5a#NUwT~~a{VYCO<12B&ETlA7o1bzMj3>Pk?@TIO+kAkhg;3E{KgJIPOi*cL zUy|;vn%2!56#&AKJ_1S5PE5XKCckk|$E9RTdu(Gfs2<{0#}>Z~doM~-rP@dr>5qRz zqQo*Ubk@J;NPUG9SF(MI$fu{$$AmSK3rNIc+QRW3IA~LJ%}>^}Ww3`q`9QzLFOm=B zWKy^sCF4;Ve&xG~%$4+=Cj!yO_|6nUfkfs)6(exS{@O+`qr7Mx0a%e;6rAH*(=wUL zwrhukg?h7QgT51!sed}=0o;#&*xI(q<=zko_;hxwUlfhj67;6O^gJ#^?62svdZA%sKH))l4R zbF$dwG)wHk<*R2{Av>Ct7uGq* zw0orzNg@m*^T6;U4cs3RnF0W>3X)vj&JN>qP%sV;qZ57%AKhaThqFIX&sf=mA6-N< zw;9cvCdgs6vFsPZ_lq5P97ZGkLYVi@_6?*Z^e08!7W&e4gDExLcU&h*B6wF&zA3g- zpcj-n3t>47p@aAyBHBV5=HugS9!qz30;p5cyi{bNM8*?P_|9R0w!CgoA*yw*+BMX) zb2jWB8Y-$9f^@RgkNv&#WK>(C?G8c3YB60+Gp1;8R3*#0x=;_9CQYxsqR2LdqZ}h- zr8Nn#y1U|~5agTScJgech}tCU3j}vE6q#V=a}gB@7zWPq4hLF@0Vvm`c z%3r%ao{i;{XZT>To{?uRm1l_}{1dUGFw$G|hEG_PsXgq%T@DcT zYhYe(*OrEtX*UPlFA&z4o?&d1(MtkT1l>y>rkl=atX85&&lc2XbK0@A?%yqrm+*Hg z@h$8w`!q{pbES}It`7LHnBN?kUyqix1I~c;f`1%6zxqf{11p?F_>7}iQIB4oYLxL= zDzi!xXWnhn?rmU6lde%C;g9|=3_PB|F&hI5(9OCd&oG@l(}9a+LoQndynlVp5+cq@ zwz?}*O;alq?b+2me0tj)lIM)$iyX$mtkN;Go4w6 zSb_?!UApp!{?vsmPun((B*|W%A1BDFTuV?tEjh!`p!}}4g-4m93n9HpzoP0rUN0y3 zxp$z?^m9bU_E>x#eQtij{+t#jPnUJzF0}Gc@#PQ}A|5Z68dD{!O%bA~H4WQ4R`8V3 zZcE3tugh}LGrpeW;@G=Y;7W{o;)Go_P9DQxsu6eL&rRv=>vGbg@BySbV;(d}_GHY{ z=G@mmqnx{eaklE94DpDRt2t1Io%v}=no1nPV-(2M&5d?Y_~5D#fWjJ zJXbGrSjQjNT2Jbu<^C4uMrg8*LL@OX_EeNxyip%93hSf2#E_f-+Tlf>G7<7(aK@hqIT+F@93%s4RJ3eC z26QYw+GmTvw!Or=p2)<5XQ{tyHA5H3l@j7;3!|`y4l+wfA5+x)#t5;&V&S+fam*zQ zuc4?8(kMY8M^5D+?OZS1J1(|>)#hFzCB1e#$c;5y)I+Xfh~IHV$U}65ACirjn(X|X zrq~hWdY#jRhGXxbEMucgtqgpzbIOKsgb@I>OiHU!h5H&w#sUj1UlvDuTxfDIMJY*2*>{ z)&HH;S)hVFONfD)w@XewYTt23cT;^`F1{vL2#i5lL4U@gfN2N>K!bd%Jwr^A{pTex z(dZO(^@z}OMWe>>$i>%91NF&ud3dKLJ`A-vIn(KC)Vy<{>mKg8Ss*Bgi_>p)1`Zzx zhw^bf%qm4#M|n`z_GFt%9x24T=EROvCr(cY>2k@+ZcPLbc7nV^1l_T!V#_9EDuT=; zqPaUK7&aUt?n2FHKbZv`f~BdE8}n3awOTSZT8&zd>$22}RZYM6UZQ4DSrdk(*DJK3drx8AXWu^sxG$Z-S6&`JX!>J z-)!SH0+$i`73Z86z)=Zi;~GXZ&p$Mv6jl@X{~;~#Y6e)VJ!jp^X}u5B$I3S^*dpgI9&`*85N+%U z)QOX$sH($ zr2xGHpCmj)9m4~IBlbbYY&5thyesklR`31X78UULu}3rLYcdPOgIjYT?c~gNP&lpH ziyAd2-qyUJ*bBZosqJG_;lpctQ`Q}WwD3*mD-!Z~;gO6UTbR#DMW0iwpDE^q3LHC0 z94oB9;h=C1;o6;g<_%Rt%rq8n&MLB$_lT+ENbHdCV@t9;Ya;Bk7;8`Ox(!1>E^mDBWQ=cI=)Vxm|lBYQD)lL{7m;n z0uws!3}-FJ*Cx5-j-RJ}Id5=^1h#XU8|nyaC5Y7$=j?f+YZoI`vIH3% z4kr{7rvnA*%Wx+^Xw>K{rKk=YBAe`E$vgNDe^p32jKa=lgQm$WR~zcFmln#Q;Utst z+s?omR^EpBrzMAUqxn>-+T_6OtIC3&&;|}GdCI9e5lC-Po6I+}>D16-|IWUQrz#^; z_v5mZ!)ODE^HUa!?#H0M_EeWT{t@CZ5~` zjVb4?1kyHs(L)f4;h(1Kpf`KLa7iaE3U!}O2w1WOFp(AzNT%a+pyajUoHnuyPz!sE zn<^TQ+bEMCSm%-7NHvB&XsFTB@1N>F^$XJCms7Igu;FbV;&-b2Te0xdqb0<;`ny|U zz)YD1($g|t^|eGjkNcS2OS<@oX2DtQwc_aCh@-OR-EHO~rTXtWOW*;)uOE@k32ychASuENYU$|+BmEoNdM7h&^) zx^zu`>rQBi84q?hf}vE7H#G8CeRoDVXOhs0W0t2if{LZWUAIkd9Swe9r7Ho{vKdPg zNjqr#Wq`Kpw1?tgO8T<~=S?oqUZ(H2smU7c9IK?68S^MtSArZ1YhM+cv(XC-SOWl@ zW@_n6Jd%&XR=Zs+lOWHFjc2rG~@L2Hx8n9iWy zy^q)JzM->zyRcPi>r&YlZ;Io0gmddY%RYPUAsCS!Od9^ zC5$T;5Qb>wN1~y5qjKpuo^90JS78!wnW*N|oNHn(V;MqpKCvQ-?n|h2ITW!DsuZN$ zP5Tq_ae)d;L;$S7y47w&Yt@xmUT~yB_B}cVuk=HE2+pYMBM68bm*~w<-O#QlyY*?V z#dUa$j+Q>R`7U* z_U}9L^1qV^VDmUB|Nop!s`H?gMlY8BgyW-^lT^Pfw!$@0GBAt_U|NTR>iPlU+=BC- zS$1FW0Xe*wqpCcreee_VFbwfkxkWgIwT>#B@h%LYuJ7YIhyJ@&spb^qlL$q@K?9JY z7AUVka;V=T?2EhPl#tjxhuq~EMNKrR5OqdK(zmU>!Cub-hRCJmeMR3xC_>`bmE(um zv7h7PtdzU8sf(<%=BBW{KI0cMP?Drv2mxfxkV)MAc6_R=JEBkjG8?uLUnrdfEK*02 z{6^8bYyMq-yCh}i%xs+i>fi*FfeG{AHa8QP`KUh8FIh^dsdb$!Zh8D2A0!R~aZwlh z_ilBHV!559dG#-(uiWBjT@Vxg7YNxl*E{nWR;eS@(AliOFgclgJosT)XLl>U?masT zWan~TjWF{^s$NcAC`gq(*nSduZopQJ(S1{jU-7f z5GYbhwBn|x-eJuGcmI*kb>eVbi6FAsU0=`a)bS8&J;6+XevK*-!nil3=C6 z>n&YDL#_adc{8mdRrP{iY?9u7TJ1tr0IHAR>u17WX;mAk>*l)9R)5_-*Y;Wz0&5M>vu3NJ)H&$JqSo1~0DCXj;l}zNYf@7si511t_b>&9qaFrg zH9KXAu4vGj2lcFqjN+;^SjmNYB{>utreM{Wk1Zr^=h84>yHNJ_U0=0O>t>mqqmtK8 z(c-pSr!}InF~qRib|t`n>VIC@ffnhlXK|Rcj$&uBHt84}rR$E(&YR+~?8=3**N1}3 z)pP|D1U-wLe9B&~F0-t4{#t0rTqLw^R24i@?}G}aL(aRTwoyfTt#GawDcdMkSQV@( z4Xxi`3K*hzPkMFT`NElXH@4>zp{6~`ExLsc|D<2U`lg{9Yp}pB8|++U=StRjD8#?U z8nIiK*J_ttmTp!82?Of4&XS7juf>Yax^A+FTMye_mu|YU^W3{))!4b1dX~|j3XT-9 z(Fzul@LE!bHy%=v9nB{Da>}K|db?^q{-I5~Ygl?Mr)k^Bkt#Y?(q&C`JPfy;4!P!> zZn#?O+(LbOC{R~1+UKvKD<#xaKf{$(FQWWDde%k}CLEHvt}^a~%Q|-0Aiqkit3yMr z;cgZ?+HQ&;fk|4NmU)me%2)!UFcTBs~YfTdH~Kdd9UV=DdccHSm`XSr)UwW zxpyNnlIZ4V<-$si2M2{t*D?M%JAXY6@?;&XtDH;N)k?|6YW<;!tPic$lr$d)lUpqM z_Hzz-6$F&wxKL=1s-D_9H8~EvHDCmn7h+^UCHzdk-Bm8E{vVYDQX8z2e$*?B?y9KX z+G&P%)l00bK1iutv+#vFSXUnMt)P$?@Mu%a>io}U##w!3LoC7M>fE7bymoPpvxoJA zuO_d)YF?#qY{ZLgDN1Jr4PGB8b_ssy#pqu^0lMGjpmEEzdQ&nU7 zdk72S5swBNkCyxjG2$JhRf;W5Lsp0j%!n!1j{L^+OA1n^eds)!16l-}_%=ra>osLWQyJF~ zTg3z>D1GSP46%;TkmbI^x~X3=6Wxr)9ms>{jY_wpjJ{LSfy+1A5C+yP8{Z~vIW0J zk1fZtqZ|ZXQ+k~in-Oa=7a{&>CUPklV|+vDr)0V%C)=@578u0IdlB{&fKkO>mK-04 zDg|9A`j$B?zt%OQS658R)#PJ|O0*CW!g2Ur}=D6evu ztEE(eQ$Tm)9f&N+s0xfa(r@IWCO96v$d}RNR~6hwxN`_JOsTXHbFApi zoD(0q$&*k&AjeOb6j^Yo3^$xCE$SmfV#MC1z7$=B`mTCbMA$;iOCrgA_@H7mhr1j; zoXBX-4+Af2?CTrCfvH;yM+xa$T@gVSy%%Hw>{0?sIh{K}5JiSq2LJ#F000000KlPE zt^#OHM%qedW1^*Ksjvb0AFcvge=eimIB^4OGp~Of`mKoCu>x8HaD+1e0ENI|80iC{ z1C#@v&JADvzWPBO?WpG;f9-uY?i*U`=2(&+{%|*r_0#1If;s;-y9lybfIMt=^Z@~Z z?T7ek2fkX=8UQ*9aU91@RDP5AE#f!px9YdbZ`)thU)x_Of7!l*@)gxrRK9}xtGZCE zziif5P^_=0tgon8UqM-aRoY*h_7{rwmreT$iuM(i_7xTFD=6(95@f1xK#-|Efh1GC zf=uO*Aff@m#gM6B7lpEYrJ~+4v0buD0tbBMfY-8$$57tF4)_a2WH7Yl5Ptc|KHExQ_6 z6-Gng!m5ix!fezUunV?F`eu^s6WP&VIgRHtJ-lF&lN}3`D$z*~g zGRsF(BvE8qgfy8Ti{ipW7Ly5*A~H#%sLNuITq>-Os;aV(GK>_FNm7MT7z@mm!LS7e zB1rQGDpRznC_s{EBq)NS$ms%or%=Rc<+@B%K0^Bm?I$iDarw;piuDnduPT>>_19+o zMPWVWqC{AyZd zRV>nl*(3@>RT6etG;6zH848N5A`w8sP+0e`4hSd-lVQ?kX#YlgsbCfq7K=rBER$^(%$7Oe9bC4Ia)gX~7ZL>0!gwe9?+Omy-WjT-{GRcCfBnx9fslK`-X~QT9%>sK#sxk|8Rji9t zSqv)FMUpHD3cD_&O29#8ktQUr3FxEE$}}qh$YP`3gX&qYw}f|L_nH5a@HB`we~i8#U5N zi8#O6R8!0uZ`~T-s$fqA>t<0eMvpQ98KceL=Egbj62%6V{*pD^8M zD1}mqLXgcASy*7;p}>I%2}slf4u``bz(FZQD1gXja&cgRMw~*C^q?GM!(C{&4MYRk zL>?ecFACsrFgQ8}ha+#ZI;ewEXd^iw$lY%SP=%5c$2km6h9rU*y9hA#vhOXqt zz5D>c5pmgu*@j%UVYXqmA--gT#NDhR_o<%!vX{FDzYFd!pn>ej|FMpjyv})Sh_BtE zbGmw*yV~?vk;|LQ`#FaMCkDR(fu|kL@^TJmdEfd-R_FY3IR9xi_ijV0%a6_AcE%b1 zE_24;<-S*NzPZhux3^6YykFI}tai+P?f%p+b9PG@5-7-iI~j9!iyLFJ%w>5Wa9n9^ z#=BRM(_Y1R8(uT-+ud&8j^p;tCAV+4Z|BjO<4CiUOETZG!IsSC;G@SeP`KFqY+VaLHgY3>bWdnYd(@tdg*8)?|XBjSOR98SU~H%VIE@uxkQy zIfz7&$ppei1Q}TPjTC_#m`nv8G!NNCxXA=TKuqj{0S?eTkSeE%M7W00uY! zhjS6)J8INgsRT+zQ8*VGhr?lDGhIv;A}D-xK`$T(H<>a8>w4Z@;%m2m+&}(tuR(9m zW5ov1-E!nfp6-_P&`JAUkt5I0lIOPA)TX|>n%Ht7zTj8CB)wgpwxM+U|J{aNHehu5 z^&UqPyUqx-NotdPeBVRukyiV=#U8)!kif6s_grlH_4|J9uII*nyYc#ck6*tY6Z`$o zJ8L!Q*RT8a>({T}?F}9)zQ>B84Q*({Z9~y>&}#7A+h%#ech9A_Z3sS?E$Cgtyv{AHFJrg&3k$SkfTGL*byR%N_b?2A8vw2z^ywzh6iqImi?MoBWJBr3g$C1&3ys^o zaiIYd3Lt%}C=wloE+U;rq>!LMp@hkeICVf#!X#m$bHoHGV5%@d77`{269wo(;R51# zL^hKSbto)YfUp7m#dp30Gk2&oMLP0P2%?V-NHa|$oe1|2la6*QjwTcE{=}LZ174_8 zNKlAuCY=Hh1}24301+s4bQJ0~8qTXVH6Se5cz~wpQ|snzXL=ukFKT!R8H+J)L{7e@XjG=-Y;K%B!P_y#D7pvm;f{An^N8ipvc zAwUF)G*sLgk9Awpl9t?-B3tl5AM`;V)WHY+2Yt{7^#=uU^&E6Ci~gYBi4Xdq-+}(1 z5Bg$e%&1{!`2?dhpW!e8RYzf>z~?wwG(Tp14jovCI2(q(=MZQS{4d68j z6GUl5AsY&TrUeE-7%w`uqg1qHFoy&ku5^x5&>;CwL4)M4f(8jha$H8`IB0Vn7d`jT z#&$qDO+*{A>bfzX^kq1qO0cb{fxjMf$kV7~s-RAPbXW+%|J(JKR6_&vDOT z?m6x`?zwTS9CR&+M)*&S&*#beJ^1EAANV1bxHo84|*BamLn#w-tL#gS8rT( zS2qdjdVclv`&rY!(LJwvm$m7A=%j!A!OuzXE4z~HaP=OvX7zB@-uR`*)(}^nF|PV= zF1wAZ{)cW~9)e&BEYb!>)j64dpyyLO?) zy8MVEiLc%de)R71y!v%nmp|SIUuN*%ox7$&UZ&-(i@3dgEB_L{yvWW z*Prx6f6u?{{7*8l0p z?&aPZI+`IFR4Y}IDen6yf|Bz>K*I0<41Z{=W#Ug z&UlI@(TOb-K|BP+KPc4EhY7N#-VgeCKsGu#vHi(p(#a#3p>rqNegpB~L>mwg5T7JM zL=#8k@NyOT^)lm+n{Kz4qZJ(*her;{*ZD|^i{hqj$Du(IMZ6*Vh^xvlSk_>>A|f)2 z0aaPsMZqrB#UjICSA&eQY?)?Z7E2~;kR)J`P$+s___V-)37SliPYD(Twgd|T+r>cy z0YwxFNE#3S1N;x(E5Gy~#kb#k-GlYV7vKK(-gggvSVvFiZNFOdFz9&^n78%^ZNvbh zC{Tid&h$%G(Zlx?Nl@$U9lbrwqiH=4_P&vafvmbiR(*OUwd?ngSw91r_3yIG<>xY& zPuBeA_E_ApxbyI>THL1g@5k@E?{NZ!^EAHxb)o*$&)cTAO$kE+1zhIruDW9GU2~8K zl10zAqZzn%P-k_WB2&Y@>+k6AbYwGuu+gDY<~MgRZ+1ONbI5CC9+FgO~F#UhbNI4&F4rVkVV0a%WBTuL+&MZ#bp z6bJ(XfiNHpL{S(8K@3A-6oaBH2qLpV0AEKm-V0I?N#~EaD_v9xCy6JS$B28M10t&g z2*T*Mskv1D^+u=ijUb3RAWJJSgd?7WqqI4U5WRuF4{&z`PIb7fiiNc3KfCV0z3$TP z@~1nDZvMDT289#3w0j5NjwPwc)Can9ttRV~f;y}MMmDP<|3k_J)}vhY0R&nRk`Ji< z!^LDB#T3F_d^UT!azpAD3ExD|PDnL5tpH-Xp)G^LH{CX=l374-$$a{ukw~GN!1Gt3%(*+* zKK+LQE03gsG}2SOuPQT?l%yA3MOZSUMIiqpR}(|w^t1U(_0eF?Mqmk%FG&x|cH?LE zjjoJ!W?y~}=awnbhPwf3n_yv4YD`5GB3^(>KQ6Y$d~=6wSK7n^&|4(BjD0fRUnqB0K);PG`B{t9(=X&uk{Yf)mW-l3~22{imoS}<#p{sI|ArH&lADFiW>Ir}hrx@Px_PCv7l zH}q4T8fe#?`BcDGODx)$9ObhQ3Z|t>Xtg@~&LoUD*F92lSzlf+d#_n-Ch!J=8bKMO z>zfu0y2bLrUjj2b;ty6Fo>cdGLUquUQS7`5Xg5_4mR zq(mIsoR9`=vl5qyvh8Rr$@NpJ!Th38;hc)nK-(A6XiN{u9mjMR5#&SQ{V}1CL9F2Q z?-74ZMZ<~!&drK-ef<~F8S_5?)Qf;FSwVxPu*6PaPpn*kd2!?crnJ0LnCo5e3$Tss zq8&9+DO3tG*_gX=H&Sm>|KD=(NBR=K|Go(W&o>e-wQky#h-DjmEf+QYLg_dE!ee-T zGW2@4Suh-Gb$RP^IXta)Vz?ZCM&W{ye;_I60Jqdx8rD|xM=^L29ZX<7Fai~f4A)-o zKw-UU;Mt9ZcC=aQhF}i|i^p_3eWeDJxTM}$0`Du0YXtFKgnMptvgKV2@1*BD*NLwn0(u9B?oK|IDlm+nm$^-P@0i9i~pbJc#8_HxvjcHOly@yp_H~ z`29T!EOzbqSP4?cJR7^)+L}gNT@l7M<5ZApDo6JSS zA&-#AGzP&_6A|dx7DEiT(sD28A+K2jF?4e5S%!KoGFk%P_sLWHita>*{{&P}K}i71 z#x>;lSg8ZwCLf=zA0?uxH>Plm!n1N7*6qY|Tm1Xk-*w zObCO+FB+a26lmGjr+s#n10{rmy$~S}2D%(ZpqEwxUrm@frS0D{4Z8i7%7rXm97A=F z>fG07Sl}S&2~LId7EZ7|H>1$LjGhp~j~x(FjQhF77-w47Ym_29KFxc~Ssm-0u~o1s z8zKd9pA?s*mn=LI0r7)F>(@iBA(W-WP^&kG72b+D3dJ~Ptxc|r6yORVO}3ZHfAD@q z%+P7AIQUpOHjS7*2n6W^qYX%;b= znAV$qqD5BXbS84#=uBhH3VU0A>wol}sm0niHi;6msCT3Z*mxF;7> zd2fp3g3|B`Z%#owqaYG8a0jb^ki*Z~Rd4~K6NJ!%()Bb*Z5C8L1mp_(0}LHBm3tNR zc`inf9nNw!tApOV%{nA#x1~Xyaix~7Tu?WaZ8D5Y#X%_)88r(s>D39Hg3L%k&#LC9 zP0&U1%FGAwz@Vv0P-0fuQ}dppY$y8Y~FR z1EFMS9*Z{>^MfqIpi|7p&4RM0K|fK#HHC~)_J>y8|1YH#C0f0HrRnySR%aL z+FS$Kj0}2RSui??of$Nr7xc~2lqD$7OLQ$0gQ#-LDGz$@5P{1xFD>1 z5KxOC3&hOp;GovCAf~j(j36=q-+EjOlGp5sIX5Oq(=_Nk#r#iC?N>h83=V8@_jQ%JrY>(dJvInOnC<({TM>?*PvyagX&mFRcbr$g9i0i z1wEz(8PRyYo(sCRV(M3m15hYtOHj)mE_R+EV#^@JEsN8+K?=Cuk_ANs2!j1!;&~Xf z${4g}50iZkBr}#2qRRx)Mh0;`3<}%_Vvh}k*b;<|H)OOS^__aMk6W?;}U zm$^0u5#ec&XV_d1Y6}unmFphof;`*|Is&c(K+jrJgKn7Q`xx8{`w)&0A+to$yeG0MN)sA9k51%C4sAtF7S<1fu+uCe89>$ z@y(pdB_UFs{@_0;z7HH01mDtl+@A%KK~_eV=GTD5e^|)zyWu>#;&2l$heXX7Mv6m6 z8xAkBI=m>Cgf(Az{i2nwtfLyv3|e`jpp8CqL_Gwoa!-^;9jFCl4 zcjZVSi4Ll@(~1g}Q0D*jPT#co6xo>p(f|zHsDq-|5GSkPx6SD$DZ+b8BVsI8Ie0g% ze^P1akj!blWZbmw>8ABHw`u)Dl5<&z*D|L)T>|0@b6WnG({k$0v^+AImP@s18GUYA zs+6>ZaS~5tQbB+Ea-wd*7AwM_Y^y4kyx@j~=9I&MYY#$^65gw4e0vR!-92kad zAU^HUz(>Rrf7uOl^cy;Tng}4GTWT4K0+5wI4v{*dF~8xiA%_hAv+(XkG^OGILDVB) zRK2wCzToYrZgrs>vy%9g54NNyXLJ$GC@6lEw7k3BXvab_keq@w2C3~Px0+lj!=Exk zp(E5E+ip#t{j>f5DMmmo?I4F&ovMQk$qT;#%6SL1$7!Q7Q-%j_waN-HWXr*QMEm4+ z5Q?gBY3htcYJksmcIzIG6YS@yZc^GJNSp2nN#Oh=J<4$K_P&( zB|7o#XydBhJGlVrq@}JGe6FCWu3T^(qu#U`C}>MN0Ri@*srp24HBPxHBYHt;H*`wd zTpNxS575mjuTKk_IY74XIY&sMg-jWC#Ke02Nfrv%GqI(=dR6g8QCuEMS&8TWx>gw} z!jh$1@dW{WLE?bxg$oAJaI~Qc0#2MnFByiN6U4lpa(VU@o*L(Xbx%z{26Rk8fjb?8 zak~S#1y|gW-#)S!UR3$YzA>~w9!ZQB%7#^(jtI&AhCTx}*(MV#!I|A^&&=d$11d)2 zlr-=4Ua?Io4jwA`mvzNWGQUH*Xyyuq;@zH?W#5g!Pbl1cCFtt{DU))CaM&NAx&=r^0PK3~Ih)~4ru%z1qgfCF zN3JH-ELf=kaIf?6wXoOsGRLEPO|{T0Mw)QF3r3QNNHztCN92YL+dxi zyzc9CCPp4DG-sp<>5?-{$~NZr(JMGyXadUHWzEre;7y6H+>V<=C+`vgq;;@}yi6-{ z;~&x=kpND-?j%$5%m&3Iq~`uTV(_qLm77MX`opKS?zaflsgrTjo8P@Qzc?aePJ`0 z=Ve#uqsHLtArDkvF-i4B0x9&FnG@ZoOdNZZL!Mr##~POexj`ylm^;uRPQr?KDa7qk}aNz`|GmZ!wu%MQM_SmDEd=? zkbwzg#%2>#gPf=Yx1U`C7Cvtj#z+dKfV}JLDvJqADbda32$NEJ({pPPR}uRz^r#pV z^#hhc5F9o9eS=Jx+x%(9dZeQg(!|j5?^8W3$V_a)9wTmPu9dcpqJUZr1c?1wA*FSH zN!>+#6-SP_(KS7O*Co4W&4EJ;?G3LWyCYyfZR+Pcl^6<-bcDnu*W=E*l)v!^d}M@x zTB_OyMU&HU#&yG|FcJurYHr!U`x&&s=7IDYR$7-rXXKO>Fhh92kA@$#7Tk{og#x^L z7^N-)vj%O>vgjSp;KDs9yu-tZZY#m6Ej`gYj&hb(>FqhJSM-WjiOh%SyZ1ixXwy6O=Yi?BF4u^@|RanJLf-zqdYZ^+D}7yGn$$z$}pv#^+M5Vw9l&ryaOp zPQvI-z#nlch?21OZtjeCfj-?FC1vU|{W%4^tyZELj1MgF@X^CAINJ+u~znAdAYElTdE4Y|(ZzOe@JiDd{bEr-+f!MzGvPb1G zyuf-36vOz|Z93Kc5b6VHSh}Xq2j&G2fSe5y3OSNd1Tczh_~3Zyr}{SRa_cmiY;QI*J-t67CoGgh7MrUmQg@i57llr| z|0rEi=r153vwOq7(hKAXB(Z7~6lt<;?)6*?gUT1GZ3eFca-Q+of++q`hsMH*wCVp_PHdwXwwhtB5lO{5oYGoxMYyveVU zk!@U6GejeCQhBr5-g)s&Z}0M#Y{QZ4WtUBzlnDR|<)IoV><(wBH)Ya0d&;8U3fDUx zACZVE9Al4=cjS@&cFt~u5`FE-%#Hu>H`yfstw!)ztcl8&z4@AebtwclmkRH+G1$8r z-A(5B1p3!|Vaz(7xo+KXryQphoW>v8cV2{F6m_C4|(&wRa>&QSZZ!mwGW7$@JDl1N$L~d^~ znqG8E1a-ERQ{f>uM>l(K2wh|bT9)}-%siAh?48Hx19-0Juy=*m``fC6R&>fCyh%n` z<=bXhVErf`yw@9GCUQ==XjL8DGcD~+(|Ye(uVgg*cIoO}5lH-5WEijLz1WblgF8B1 z@0s33C%t96h(_Qp#uoMN-t(?o_2X4cK2Xv%JfN26_@uN{i@{%SQ`aaaZA|E+KXO)m z5AhTqy$@%aFspj+){B$2M6r2>4n1-P1|3-9zsyj_00-;iWW{vBEgGbr%}UfqZ?ROH%mi$1>2STp&-?XEJ9x+nWDdVwN*EkUD^Ei&mrM)1j_&R z30B>p83D~qR%Q7Fi@b}$E`2`Tu4I=z3hjtGzz~V)KHyvw^S!Tk`|p&A^=6)ahh;mu zXN(8(WSeilyd!^l=1##%j*yK@r!!s>M3DIMjr|1-tSI!`N~${W%C}qnPcwL=sVscd za&KMAWuev3JUE|2tKkwm6M&+I4X3stwz2aQ_u+MfI#X-yYAvDhuS{{3etf$Z)S*(` zN@2v>I`B^6Pe5}I3uyPYUeFmR>ku#!7FCb?w<6d5^f|%ycP9H14c$@_D>Hqs6`l?+5BUI9=XFp z^>-fEK0JciRZN~>Y6X!m^6*rMPfXJR#!K(L z-Q?>2J4X`gn^3;HC~s2@be&1*^{*j__~{tXfL`ndqWV zATxm~h&(!IIBAB-SC4+Sm4J~R#1WL+xc24*#r+dOJDj9R)73!r^ zd?TD4*d;Bal-ZOrP&V0}S}rk%86iVQk#WwM&CQNsSQg|iH?%YW zGu77UR6kGNL$WG&j1jIpzIP|5zLE4Au3YQU z5HP4;R999!P{gWg(3abfIS3C!2r=i^ z0O-{kN5ft7^2t3Iy%MFUbR{X=pvf5aIOB*Rd2U8xp21d1c9$7&P2v76; z?OiXBdW2maWs`B3!GYTaUAK1q5)qCQPTG4h3yIjAG31M zM})h)%pnF2`a%yes?@_dgIN{61Sm?Xv&2rd4iK5-|2KO%sN!xA1eAN1>1Hwbp3Ah) zD{aBb{J>ZWZtit{wbR#Lnqu$8m){iSYnHfHkR+!FxrWBT_=Wla5b3;yos&ImUE%@c zSJ!)1x|8CE{U0O#yyE-fQO6`oKsvir3eVNZTp*3H@*IxnJ6_?J4j9C*RF4nvAJPBM zA7PT3LfNY>mCl4o=(@8^=Ut$C3xZ@(y@Q!BpiM0#DWJhHAVT?fYU?w*xHYx}b$QyX zIMd;=QnfEwQS;Z6p?!)_V>v7XXSvyY0_@st#;TigXzP*D2BF*06Y4uFdGcu;Z{ey} z;VA1cSY6g~SiQOe3?Mz@mij=gY|m3x18V0gEHEsG{zL!suLtW3>E1;pSA zaU_@Ij!C@TN}oO?hTHbmlQ4)QR?Xa7!-0S_-yM8~wud#BjTpiD#-sUHJ)U^JhnG?& z|6)fvw6K3NObbAhX~-@~A)w8zcLrkZWUI;182JOvhsQ3qLl-+LQO&?6^c|TvJNZ@o zTZb4uoVJF>*UrA`a5Me~vuq_+nx|JlpxBalp6oTLd|c+q9^&=S^IqJ!Of@MiIB0WK zG6AA*aM)*0)`HAnba3%v*>TWau>&LsdmNUvWrFwv=9o+Le=SWig_=$E@XakU9QI;C z>a&ECxpJ8Hlx=w@`BPQarg^~p=KT@6`OSVIw1J|l8We%9k+(_gu@gQ*uZrzyoMz(% zDs*PQMgirLM9338ZjKP&2n^46K_LG^9joKVr*xK8^!FF z08sZDfQUSiB|Qzf_}<;iQYgnhKm~lL0$D?VQ@{*jg{yWVL6dB6fHPkPh**1|F$&OD ze(@1{2|5R?DV;!;44S%CeiRV4}e^WYy0iDU6~z>)$Rd?-m?&mcw2~)O z6x6i4F1Yf z5Zsj+0I_N@YmDHl@rW9ibp|C3CfV!A9`RQl5E*|kL4ktjUAK!!Bk5g(ZYVPF=o@}P zUBSvzjA5hAGFv}@b#F}iJbVOhg2--l0b)%TolULslN;QUI?z<>B-$yt?aVF0sj3;u z3Xm0t;9(9}QSA4N-XD|+GSLlt7?O#4lJ@$E72NIl%kzClE!%sJ9 zvH6wur0ZibLvU*~b$oeD~l z7BWb*p%NoHI>0qr=_h^6{_2M6;~FATs->y{+tT-2Z?JDFb7$2WNR%A;R>|>xj#0@I z%&5r3!Re!wpd)TGR%CBAeO9m=ZC!J|JCru$CPme&kOg#KQa@}SX@k&@y0faYQ5K@^ zqCn}dWv3HCl>fv5;L+NWi0ryhbv?AmHOUZ?=LTzpeqoE;#>F{`ybB1H2q|bkIeJ+< z1}>_23Hy(iFhpLWpYjq_%}cOWqNiKxm9gaFUJ4%iR*SAH1`{qNN!2J=qkKojSZ$J$ zTp>ZkX9iSqy0CR3MiFSi6uxpYvjpjo#8J*YU`WfsM#4@sCO50x%ILy-d%mVE57IHT znYcZafr0pGK5vc*>Sn#D{m>Z&q{RM{OZjs*l&S%zfb5Zi>ML%n!%99DQP)qn$xrVQ zdJ63$7BYnvJ~InmHb>h2DJh~|TNWp+{=8T<=9?~LLbQtz>Hv^F?x}<utp*=0S=F$FEhyz+&R|-{lv)_6?qjLLfzuzTSeN&zevzCq#LV>>C!a zQ(h{C4GOq%)GNXmhs^ofyTcTO^+IKt@qJR2981WO244HSLT=WrL@zID@wvj$&4L0A}uYjh{esRz@S6xSv#*UJ%R4o(Djj2tb}tQ1H+o z?@rR)B9)^6b`th25I+fCA!LtL$X%b$61=Pe8iltmLg)vU!H`DIeZSW9lt8KP4sv}$ zU69Q%iskjSx+@dnp62{&N~ZFi$?6FM3QDp~!Yt)>3O>C~qV>may!CCD0)P~E&bJHF zyLA0CDTmi^q&T6Ai;+rz>;}kH@;neF=qjDNIEdr!$b&DRmr@;$y^_+er2qX24I1#a zeLXe&lYA&vZfZ@OzI$>Ig)vV`e9K*#1(%MXuwNu0tXo4Tz6aS$d;i?p?srQf|zX$!Z)ENXf;SC5wpJL(LIttW=8f5fMS0JPl)JO zON;#CDZV2$DuszCB1^Q26 zhr$|Cgg~zv=GZD;gVYK;SpF6EB?FlxN{O$h=)s%*mtLl!r~(S5=OUz4T!4sQkj_A! zi*|S5Z$zu}KPElHCLo_<2}xx$IPuBrGlGggJE&so*Lm;>RZ2=ALhT_?P#L0=VYy{!t4Z&9B~(6}FS>4>3Fg^$MMc@=3hj}^HU&K% z4ZcnXeDKRNQ2c^Pw zxb|ArBmvaUk7bc1qdrD23ES)5WSf?8!_P z{b!;4UY^(2amXR&*Z;3E0Jb|o?sw=jj%DqBP+G9X{|b^)>>vHyhvP^<P#+TA&vQwiH?$Z-W~n17$!I#+p0QT(XD?(M=0{*{+;9 zb!bh?$AP&MPr1@izD^=T+X{q!W#BxTno!#d*~#I_37?XTUS-$M0}0gEk5EU{C^~_( z`R>_pR=`Mjh~l4;5DIMkh*a=^j2X5qEP0(NU3eF9BE{XEn`jD}^|Qsy)h4RylNkUyFZ3Y6Cah(OB$}130O5f?P{;UzkfCe4HfRTGS0Cb5sI&Wn z=4BJLiK!N;w!7Y#ND%iUe$AwD;2O}C5L4c5A$^%e*r`7P*;s_e*9JX-Pns|cc*}=# zpwH6*0je|Rm0loDbK1y~i~%bSHog|s210A4ha6NAHC!UN+3XyjTJHOf#IS@8(T?i~ zavI+UtP+|zibN|tPcA_*q`Jy_v8Cmh@dFgZ5vJC=Wp)zWa>`&htK0c;b)<)40Cc6J zzK)kWWQKA0TF}Y?()9XvzO9ET(H=8*?`XZB0H{ZIVpbJli<3$@QHD-7??@*p$#@p= z{V-pv6z~$?P&`DvRqSxx>s?VEKSMol2=MJ&VewfHQFm9tV5QqJCW>&-#nL-H@$nu@ z;Fid~*vTS-JOSS_TE+crN3=HE9Z?PGcOlr6ML4g-D(|qV{`|39sghUR77T&jE~qGz zGjHap?6@1k1qs(wJ_Aba}mcJYW7=lA;>^SQ*g90SX(<*JQ2R7QC#=o1Xw4K3r_fBJp0q22T?gI!wW`S*+S^MlJI9G}TW5VzBnJ^5B(8X;Z4GjWbwkS;}c;y})U|fq*)ST8ZAA z7f*uJfznnitH;eU0xE-ssYU$YVi3gpm}AWk@Mk?T&Gz&LoT-*dlME&`{8$pL3=}x~ zGwUQQMma$)rz!-Ki&@1UsBNPe;?dI@;(BdKlS+@+mlmF*=3e4ij4<3~ADk9Ld14!x z&v(hCSdZux6vZWT%v_e^+sh+Js=K-D&rU9mlpfehfTAb);8tff46*o&%%%EESnA=m zbE^tkva)#IWqpI0>ptT>=}br2DI+Ocyn07cB4TP5nahT6*@p~51097*qr%P(#W;su zeri3mzhK$J%BH&<9(oS5wgm*VCn?aRLhAe$SV7gr>pySbLz_{KG=Hr zjTojm$7M8mJ+9xU*rx54oR~wp+{YNkWT9qf>~dN07eTgRkXJs}ChVMi9JvCvpAe0* ziA;3x#QtlH!}ib3RgKGgZ>|+?Dzf*Sf3ja*gTzC4?@3+C@`n|?wd2g=E`3ccu;GLI4c^?i%_EI z<#b2+D|w`v71!V@-wmTGgbmp1<6+gvTv0y<&rfCfpLPJ|#6c3d;}Y3%PsajMzVs{( zuHvTxN3kL`kICf1K81w*FotT)dJuWq=~apd)`BZ#T6!Va3LuAhfr0#X=EhKpXrf6U zOXJV+$1A&*VB#^_+7jRk#UJs%wy@Zpi4Xia)1);r@Nnz?J{3KmoG@T^)vGn|6Qv5_ z&m@29>4JAPFk?5a!iX`&lTw%()I_syu~p874(lFlCVJ{-!&fg2r8nlMKig}K|3zxn z9Zd~Z71b=C?ajxD^LWR_O0(~e)_BhdeC_;KpmKkE)tn=@#Ze-3WSo4Z5)|R3>rD=( zk$q+<;k;HH)D2<+sUr#69yr>wbjE?+-56lHmoQEZF_38?iYCh}Y_u~T-D=yg3Nce3 zRM3bAnWYjllB8douZM~_FeFbKp>r~8Iv9I@Uw=m?#Vw%x4uKodd(kUO`E+pbcXs>PpW7=AI&S z^ftpx^*IWwMUb2xw*hUJ5pA;BtQ$W5M-|_`SqMmD5YWd`*myW&x8$|cJ zz;xc=vyo+GI!)FMePzyrlCGd-49cBZmg1zzQsx>sxK@;zYbhXvTnqA* zihvt)5D!5BRmKYP$p!VFzR2Y;!`uU`L(b{&9ye8KvcLg*2cxlTnRhZtpyM%9$k{yu3i2#38DqmBrl{FU?3q4f$xkzk6#JIO9-r&N@@*GOFaXK)MKjBFwPpiuiAI7pormmn*#PdsN4Uz3ooW+3S`p-Uyx z^2}|L>zh33H|fsPhXFH_TR)briX7aPmE19*wKyo>w8@pcrXD3`m@YzSUE?%Mf8iB? z*Loco1hEMG>Hg>e5rye#nA5SnU#-5cV~Bk;df&6wq>Jd2dll{`QpR)tXZ=|-HUoB# zBI=WwUsIjgxf7_piol;gb=r9j4(pIyCD#v7TY{BF*b234J6bY#7k=}tHZw)SpelOn zYxu8MNSNqyKc7epgzzMM*eACLJ&WD0DEB`>oP(Bdm5;@NN8Sm332rhhQ0}pJs3ql_ z)HeT{`-!m`jnJ0<|0*`&+I-x|^(V&(uQ+Y1ijD^c>jis;H?5XUpgA?mvs|DXlxqeL zg9Iy4bkNW@#T1(vv^v2x$nnRolWec0jXIFG?=7c#6U~BdCAXbSvWzlpw&6rx0Vj|a zdD77m>01@Ctme<~oxEhi69^_d+MqD0RiYg6f>(eChC@2Fel5o3RUWoZj*D>XTbCPx z*SMT^pof=D(!@d2mm{bEVX^qp1-o|l_y@;J5D4a#$zD~4jPqp*V{CJ`re+tKOk$bS zs9z3sC@R(ex8KZbLz1h(V!&zxBRb~;=ap-2gR#!yw4NPQnCCfospB{-Bx3%~-Ls;d z&cN;ADXW7p!WD6e&hl}io&4*ja{A6(4x3oH(35#w+Y~C3666<$rwH(T%5|v~nd6G7 zr=cSYxz0iU3OnZ#O=vynrB-LreKslb(RE1NlF*|6&GZAKxk*18h{OrAXIBq8q#7>H zD`=^e=*qLOKN7&-JcpytwvKah_DuP5jv&Gh+s)}=hl1EW-l08Z&NN*E5>WuV;0(Uj z(^WZl(hxZZ9aq*4T6FHAeLgQL&_K!eW7SU`32wVA>?(zRnd{8+ znWPY%_;21>D^+kF|BGtrtyZ8v6LOc|Aun;(`HC;AR~dp6EBGADt$f#_&I!H|-yk}Y~sY0 z^wEZTo}7vx4QP4ZBw(AeLVZQ9InWTm@=xa+)!R3K_p=Bec*AN=tjb97`CU9sEJM9W z7kp^H7dbnyk1o|pGv}WH4OjCPMPgdWLTCf+-PqH|89(joPB(3-RkAlU+(bzIz=J8l z8!aY=-=#B$V|&G-b5u0J79_&!9B6KB?rFm6Rk|MFLZTekZ&&kZWm^vc5}Bc{*v4&F z{$c&TH)1$NoqccW&xdO@x3y4@U9DnqpP~%LEcHX21*?ImR&tHq}rr~lL_a&#i;@*$m|*qhU`E; z=UIJ2WXF*Kz?ee_?l|;wHa@`VPM+5az+T0`>gx0v;$cm^q%$MuuZn|tHEY)>(+cSm z*`$GbNiiSqZCmt;9qFZyX0hkBwm3+lnYllq@F}W_aVN}ke3MwRTEZ`B?$`? zNK2FF3P>XyNQ{y2W~3Z%EDMtx#D=yA0>aU=jPE^MrQr8y{@uD^M&`A9gsB$9tf382 zH3C+alz5=3>iHWquX_D_K?4%LCcz3BlbgE3Li zOjlsmbh%5zkfX{kivE11Bf}o@)!w-7W0cRjK#JXmjJ?cVv#vuvamC$LO3)*?18XqE zYgXC&4f^D+sIK=sPMec}*63Q#FC{PbE+<)Y@WR6!*<$=N{3G80OdWnk1AGj;+mR6j zM(!7+xF&4j7J#h;$GAYiThgnRqB|}q^W#Fs*mmsc7E|LdmSN0o=&|N?XJcEuavU zc@);mh}JDp^HXm0y6*(EgD4dLRDuVdP8xP^4*0m0thyX8$BW=~7z7Rh2LT5G*sPVB zv(_ppnpI_`n9L@Y)k{vyf@QUmNG8@NOo>KGidv`&iPdUSwF<r)q`l6tgObv?@sK=fd(;^e zIrg!|7F%rp>$p+O+QYD*0mps`6lDINaWNN;UleBT^=|77j#z_j$B7&ByK{*$c=S5= zJkGbj4QBoM_wVn&xxX88{U77;dU$wnKx_|*=i&H}yB;17$JcpL3R0q3dac-;!01(B z6O>LMv!Y^F71JtHlQ6GK%Pcv`O4g^ULNiLKvQ8n(G&(6&pO_}9%=)YoBB|ZVCacyy zsdeI_FgaBe0UEo>lZPA}2%bj7nm!_8Vbit0IqtcJYq%z(xY&x#_R#ih5X8lRhSZQM zpbcVg4Jl%?Sv(!gIUa(ev2C`?W-Y!Q4EciNBRCra!r^$wZ?Ij+t=Qpg&L4VkzRxD+ zzDaBgp8Wxie*ogm&|rH*E`Orlzc;8yP>-dGc*vxCbHQ)Me z$aT-dyUBWAkY7-|nHO&+gWWxY6*C^SI6er1S%>)A?s^yRJKFA0f0;+(e>~FM9=|i< zKJqaWj{o03`2QG9|Ns909thYT=E5*vKms6$4c`k11JMNn5f;ydt#7y@ut8i5fZzbZ zfdIabg+&Dk1ABY$-7+8decUATQ30lagNJm%x7QoSbWOy^{B#Jx137Sn;drF!T=%hG z`t2Ra@d$IG1Z3dCfJ2uOIFKZ$f&~Og1}^v}K@SPaxDq5mkcaKlB}juE)QzT=I{T$0f$DcGpkk2swPPX zlMp}v!7wx$kHsQkFno-NWxWTuNqM~D_UE*Q)Cb&{=nZPH*GcgA4gzaGar8eQ&f-BI zruq`UN9%*6ir4M>78I<#uxodZ{B}c$D>M#J1i-WaIHUE04%aEQR2Ur#NEd9bJX_yG z6$5JnUk*vZ{=Df)KIet5Xvb&;3ZVUm$yKz?m!-~Tg_5VvAFP=)Xn8`BVxEAGS{yOp znC1eC2deIm-UX$d$;aar!`)_mXixzh6FV8egXYs>1Ydng^=Fv^(2_6PZ1i63W3SQp+N; zLHq5fc}OOQcd5LgI%pv<$*PeHw#fWj1P>y7JmEQqYqQD25>&>)w_w|jEH>DI@H^D7 z23-j+!fH`UO34g4AwNC(P?fP5Z}q|$196{7L{8LLtPnU zxeWTTp4lXb;zX4L@1z`A<0({>e18_LJ14~okMNEa%TPC+51!BHoV~Pqe&V)y`lZ5P4ow|~oiAzeP*6#^TZZ1EjhrP6qKN7v*omV8MyQv7YoB&ZUS?rXy z*B8e)Qm}T}`M$8xJnCc>QIr%rb9OaNDQUoc=UNYlj{$WFF6W~BUQqo$?i*Y<+6(9R zmH5$WD^2}^SKic~+N~NkiHn~>d3bL6=WhbSwctZD2^}9IaJSQ; ztT8Hx%6XHWVJKrjbsy{ku)-Du6fP?>Cu^U=|&Q4;{AfD{55al6*_lHHA5oos#7J z`Ctm#J%}#RN6n=8ot}~DOLRD-EktUJ*ym8eq{2EcW>GaaVzNOy{tdfzzSf{T#q#r3 z;JoHFI=gJFiArV=>V_>5LE<@7?tfaa)u5kjuy`s1lxeJsZt6FmGbT6rvNogp$E!TQ zk?&UD5kAjMnE7P+5_6^%G7c}Lwy_PQ6J^6xMwk zuvRo=1r;V+!j6TwhCS36I0Kon+s7=1OhW3BwYs_yza3IfS4#<0hgapOZi5%m_jV_S zJ24Q_`nj+|?Y4LcDg^=V?4+5a@K4+gT67N_8cX`|W{IZc_7MJZDaUG_vCnKj>CwKyru&R!J$UR*T5pmJn)9Mn6D66^V+(p>zBH5(wFz&>l(l z%*vGDKWTf0xlOjEWd{Y@K%2!E-ti`Z+T7mVv&`S+>=~bTPg36PfE41D>k`+HO+r zD!1bUY5_Yn9&Kbhs#}RnuWP?NKc3oO=?@zcx+}HmA$`0PRykjixYZa9nG|g}`wen7 zk1_mJJz(GXz!Z<=(19inG~1NKLxFxd3Z%#z(upe+t{=qcQH5b!E+;2)>*iI6(D~F; zENx;Lngj8L60q3q)2Ch;Oq2$;A9m4z+5>O&_3e>()h>fQpBFchy2bGXYl2l}@{s?Y zE3t-gRG_G{{poK>kXy&$lluTAQ?g?y+4|_6@EL*Ng&HV;MLZ2C3O|MD<)=LF;deEt zUkWtX2~-o9*EOIv9&e|-LublEJ$#)@sjhUP)Pp+JUI`na#&U%Uk)@o`W=@WnrQTb0EY#mACxGR4kYt2Ug&U&lxs~v|*-kmFy82#CxDj?%xxTB=}*e zZxfWsz^^6M!9`wJ1SP9;`p1++5BM}ars$L^5;UU5^Y5GG&6h3QR`|Wx=flEZu%7~Q z8-rv2U2L*SZrm!ouzKveEY3cn!#vxlMspyKAqZVq)&-woQ@b3jWiQ_eAV?U@u=O$#W0zSkJ< z<9}!bNo!vON>(mwU%Q|F3Tq!jOG0MFOJpc`{a*k8iCe7HW)dOKywVG0Hcyk0U-Tf! zJ*(teCKqLd78L*~<}Jg9k1Blsz;U8Y;rpjQ6nWh`=)bTiBSTi72-N+|rA>x0D0|=X zLF-LMKr=QT%G0sbB*#H(>-MR=1LCbv6|$6>aQ2RI+vVH7(1it8{A@&)0L7rcxy3+J z!xWdC7SUcuL6L|B(JT}HI`E=l_;A7K%!`F|8%L`)uoI>qaCOYM8#FW>sR7QWI-uCd z22b#u&z?a|Lq`6r;ViMB$j*5VCbO?|_WmCN)Hxg7pRfxv(eM3y&3U%ZK7hotnsdPN z5$LdZU7j>&f%Cd9bBtJg38lV>TKRi9HzyX=&&&BP1WN5L=SBh&-#F#mOgi?OIsKnu zbiNg-b=-6#7(L35l9{RpvJd6LHF*IYi7t`rhad_oz$gb%HqH6Ilm5z*4A9;l3}V`Y zX9nvl&EygGeL=AQ-+Um_Y%PUfhBQ}g!nG=2O5OmT!m!Jn%Je3vDARQoi)IE>YL@oq z8(fCw=fS@A=i8y!8Y((g1D4Nh>3rsWGB+@NSf>KUxVgz9dB)I~tqyVAtiF=NbpBF~`Qr<)lVeu@E4duUd|5c_i!N-RM=ltGybj6CV6zwUqM`^bR<{!N ze$Y4~2bN&4I10K(YO$ti4)q}&o}uXn)L*?cTPz6B{__kEN)G;1#X{q>9EI;hL&I=c z>w&wAGcCTT7qgoS$nJ#cHuQ(a1^d!devi^8iHy1@oR^{sZx^W1%Xc{z-I|y73{s?% zdz_zkN?w3xJKq_pcC9|DByz${s?>G9VT+!^o24d~aT}lN4FsKG1UITh)79*~>{JJ9 zS$D~>+G)^hS^>MXM5;lw4p4u#MlEAbIZN%3YeDsyAwErPxy^Gh zSd--g{0nBi>-Fa|=}s@{HxvhI7V19=Zn)^S%^rGi&3rdNVo+1HJ9rE*cv9a`l%8p` z7Hn~v%pP~WSz=R=j$1w2@b!lDFx-Czuma9Kf&oS*5d`DC?~xpgVtZviQ<4jU;O!N_ zw;s@R=X+1()*0XtF4z|H0KPo>MXy9nS&hRT6#=_t`bWq_V)I!_aD_I74bUM{ky1Ph zexVF?Sc;JR=EFFb1hrqxK3&D)x`%RtR7n>XF}*~mm-;$hwp-E=!r0Fp8L9A(yf89e z#$Kr{+TM?U##!vkA8^I!2E5Te2rj(=BpwKz+%aqaLm#Ka8jDa; zCo5bDuzU88jJz=g7D*4xfLJZpmmDE=E@CkbBUtNWk<;MRkVa+De=a_bEy* z=mQu$ksD+mYalWm4#9k7e2_byM;pf*Gyu41BFx3p2dBysKPVWD_m*G)L@-e_ea1DV z_^qIdapfl|!wvMn2J(?vUO+qgf;$UFRD{O^+lMgd`XoS}02rWXuH3~wL`hGLCS9!@l z`Bma7(na6n^)E{NfYfzikRF8mbZt^R0gWl0)aM^AQjxnCCRY`B--h^N=x2&)GaP~B8)(4qmvY22ZXr0wA?v({S24vGq^ z`>_OQ5)kcxH6e`&1F0XUxya&TUGny#@lVW)wHe<-4HG<4;h;u{V?Jw_NY6)i4-;EV zRznWhWkbs0j|)p;)S!K=f**0;G$A@fYc<&+Q89soiwB40OgO+cYd6ta8&t*_*aZ%M zLY{6mI4%% zNoVaxI&_~5ufzrx?{4k1U0gdCAC+J%04IGAxj<@L%CBXiwS$5t8QB}{&sL^kb zQZQ0^WF7UYn-l4wGiCsev4+hWJ+s3+Um-%c6f<+El@HPj6DWjGpO75mBai$<#@sp>1htkqnnVokp{u2V|jF(rC z29ObfgO@U!UmNRGdLz#eAKIQWtlaiZS-$w&7+Uv&4BDf8t*^!f1zx#*p8}LwCvj4e zAe$uXBmq5%E9rz%*FzJa*~&e7*%(<^0imuy21KVL|J(7bfN`0ip{>oVy&F`Qz z+q8@^oq}qaO0_(F4rOvfHAal-rA#vh+5*;dv4Um|DE&)8&%jKbF?k1xoD}cBuQ_YG z7^Eo(0L4B_DS~d-h?qH@&)&(3v?KLj>G%buZVG^)b^$9cq(Z2>Wx3M7LIxZ?rwUml z2tt8V<+XoTj?Y3RuUWizBB)llSq!Hpx0a&uQF*R#C=@E>f4mJhy_{JK?+7c9TfeH^0Ra1VObwX`AZ zH8ArCvPTS$EcF^2&2~#{Sw)kk=o?Krw02hL1cmAb>KO4!K%i_mlT6HbVv+dSKPrO? zmHEpfwgT)UPR@VJT&oU4lVz1XLBY#aEM#S*D%om#-^cpD-n= zWAN0eVtY-(-&uEhH=~r%pUo~O#b;WeNSNai1cjr`9}3#Pr|Xp)XX@rUxY=0zeVG$H zgfo~&=*p{wCdmonU7bl6ljme730&Z4Xu$+LR*4m+3L>$~!qiBSaD|YTp;r#rJN#o% zOLZxj$=RWMxZ2&-a98LFupnNF)_hOv%5-DQ@r!c9@61> z06i1UG+76!S($2!B{VZLM|T|Vu98_a<>k*|hh`)6H$^`34!u==tzXu;fQn$6U;3w= z8?Vm!j!X3|pV4Z3qGALOtIlnGYP^ff)pU<_tz+p0(k_@oTq!kRY#t= znSmORtVxZqt{H`GxQ>gwS@TP4-hdhTCmr4BHHe%0_s|Y?SxXdD8}|$uNqHGa6=42{ zHab}6ehw;+?kgdHem#y-pW1jS!wi$s43sEB2bP$cL2=4*0KEPN;Cbu21Pi0^)P63) z{5W#zne3og=e3gM9ZEILGJn^slRQ2Y$JDhYmN-^4Z1}|s?cdKzQao3O2GT+^i&Clb zBKq2)D^BS{QN1S}z?{B4J+I`z!B7wmYnVvB85M+6>h^9Jm$W#|7}lkYUCKN42csRm zQ!}D=WxM4sC4yP6FT%j`Zm0rN*~LW)3oxV(W0k*XGDY;b{QV7jP1u9fLh%e*(Eu$> zQ511{t6Uz6fSoRlQgL7zw_6TPgr=z7t0yu~zJ+s*%50?vU9&}q?T5t&)pe~`$;1-+ z>HFF!%Au83O}KBW)P6Pf;AkZ&6JLhnbTCGv1X`Ksp%-EssH5n7;wh06jL&kr|8Gm9#c0(tAV1F1)7l7|801hrxiD}e)ys7F|~>m z#e}{mT=^)|)vN7z!}@v~boCr;^9_*42b z^j~m20Zaii0T_A4%e+KUofpiVsv49!N}ZRhHl@xBrOr#8mpU)+m8d0kUh2G9Oe`92 zrnym{XYYMres3DzkX3C#MTA^x3^|I8<@>N@^ws=KSGpcwYl#J&j<2lKi!mQAo z6@rkEgnr`|6{bk2LK3&`oeqOO56eWq8P6<||EfY$o1WCRVl3BOb<*9+y z$YZW3q8A0LkOhQzyUcRF2n^02mlhBN7tx9 zLyR$cPrU>b6psN83JQwH00({)7%o8f7=mtU8(Dtwl)B&8*w}#XJGw6$&}~2mxnPZ+ z>WnH)DX6U}LHF1zGb7E61l?P!CFq=kF3N~9tP2CWzmPOEjse}{i~`+H9Z{fj3WWkG zu&UaUHHC_5Yf2Og3e90w)hBrqxf5dDC(ymi7&;6==OP9RCKOa4=%9N$rRoy|-QUY6 zK=&IK;JhTzJ#@c`KnLC52z1av2i-#;5D0V^&_TCh0XpcQd+VU<$T(=ZDj0g}!k}VX zUV^4EpyW4^@{`gMjfe(JhUFLEH&&1&tgj?V(#;X(x*MXev-)IFGd^FHmRJ|Y=Z-Qd z*9%sdJoNx*K$pJ@SYcA3P98%K{X^gcdN_d-XcM8dMrp#BC*c8B#*seHc{NVW+mw<+ zn^I0G+my0RDch7XPYqMHDKS>3e4a%k=Ddb=!}>O?Z^QcCd6#ThH>~UR8rBW#cOIph z>%4|_md?X!|MU85<~-@no7^ezCZ`^gO?^d$ZG7eG&bwXJt6sLdlC8Qhue!0_tEvc8 zILMTMwVXHU^v`=9?wma@N9SemRjpf1SK8Qld1Bgi@AJH3-m*@$rfYlbJUa2bEHlNn zGK_0RIj>fSV!xrW%;emgOM_SE$@%2OBt|yXrj*~X{)Y8GryAC8JF-Y?%_!+S+0<*S z<#I#g9H)n4MSEZ2R1Aoiz2t0(i0po=I`M7O#yYWJVnLlP>vUerWal}LicX!^oL9A_ zfDM7eK@mX_A>cV4kDmvQCvo99I$U@W7oG_3;J^n3?+FlYZ<@9T03hH78W9iMsF|7d z$tOEGWVxv~YU-?)y;>$;H)~=hKX1Bl^&1=Wyyrd7&TE(ENo}32s`Gi+d2L$DYewb9 zRE^kq^|~M6n&|1GE-Pi7*M0|$nvC7Hs%@*fYKyPymh^5H--f+mZ`i+KZ`iRn?AW>u zJB^yjuk$t&yS39c?AC4Duw(DA8uoA48}^31O{!tnObt7B=UsMc*jvL+O$~d)p1VG( zHpZsgZ6|NJYwqei+j5m-t<74K)mEdram#g9wOQv?ZcUV$ngVOWZYFuVwU#etiaFD; z+H{K6E3h789sj%l1zz4<&%0W#o?EUhQ~d>=XEilH^E}U0=f=~Vs;TBriKwttw925vegJBeggG}K36Mz6r4XZ;f zi5g@GA%qYS5fKp)5fPCjO*-0wlbsls2F6@qWTDc%br-dbY2pIXN2N2&^5X3(=wLE! z<&cCD<|O)hA9$_!|V%TCrO)1i5r-MkjE9Anvpoh}?)+uN%8^5g=ms3oR(0oY+DW#c1|yzPTkK;T1ZBs{9Nu|Q0&0j z%>%*7*sS{uw+Wh+%k8`=r>6&eCF9fiu@#3jTZ%?Z{=AZ97$ZLxCKu}P^c6ms-T@oc zM8TmS<)t8boWdWDCN|6iq&Y^ZfsEOUO%hfPMv6?Jt5FkN;$7r}O%s6{6$CwFKnDmT zaL%u6a$}ZdB6A2MjMA#Jztnx=d6}1y&dDAV%3^91DW(oU#u5SbCrYw+KIp?^xpVmP zeUQ@YyVHaUoVk4%u_%Z^=$U>4QO*HK8mV`J;xTYeFq8%!e;FkF8j#SURT21^xj4h) zE{N%s-TFU=983zqp*DmQF{cwXIf-{PF&>x+TU!p+RN+lR-Te@;Qyp%3hW8sAxov>1 zQlU8vlHCg@8ZaS)d42|+0!Fc{Lms$C$3jsnVT|89F%V}nT$>1M7G{!iST*tvA}kz6 ziUe8uo0>5o&NNsInASl0oMne6=sV~U&XgI$5BDaBE>a+azZ>wB&I_^)PjZQ{3k+6h z6u-4(Pnk1V>)hi_(!FU?p|q{$wL)9Xt&`ZUlYp3iwsU&c#$YmIMSF?GzkFmX4RiSns&3CSWJP$qM3+WW?{sNg;9Pi%xGg3b!cW%+hROsa$6wlAcvtF8*eg)um?B}SAy;d6*Byl?{-XP!R(NXh5r4_j?H0iSc=)Y(M)-QB8kP~$V50brS zq48H3EdfNv5@OIflYIB7!MWHu-6Ti3yM@fKZMBSRI@3(&Z)h+P9Wk%R|GHH|K0qAG zxoI=!5NGYsJt{{H_3|S+EWPFY5@?1u1fId&X2}-(4k-F@xn?*D=p0S~L73rrzWXz4 z23oPP0hO~_F%KrZAUoPs%Wbh<=zAE#3|v|^&(}RJ$(K`P+=0BhY{D7 zpgrq!kj$t^JB-@tNnGIw850V2fEo#&nHAXSrv?|7mH~-I@7z=JR3qVaWXu_X84ON$a%|$=aGQzN$$uWQVJ*$)|^2H}uoH72IR!-PPCQ0>MM$f0&Ibx81tOG?ium4zS z``*%nC0tV4xaBcV!j8Q`r{pyoH<&GgMgR_cneq*FHhDmTntq}_4Xo?I^>+HDMN=BKvgWHD8OBJ ziyUzQ2R=Aqc=jHZV}ZWjyXclrX;Aj)rD}cfr|0znTr-5K^0`ptcoFOH>iSY)pBoUF zInRx~RGV2hhP2IqL$f;2hY0MUc50K^KkW$&yZIq3EG9*X3{&cddlz7Gy*Gnwr;n0S z`yGCmt=&+u*df=WqGgeq-^G3*!M9wtt%zfgSA97s5c$t!2Zp1(+~wmN^hm3DJoDR~ zfPtzp?XPI@OI>p-0IO1|p6Q(BG{nyI3Zy9bW%Q*a&`v|R=p-?m?y@#^2>O_YgRg)e z6D>%L^A0&M_>5Nx4b?1)5EVNixyOcP9{iPhPv3x*-WUYP=qpEenTp;WRl`*P?!YcfeJOJ!w*16h5`w@Cj|7jGF4uD40K{OY0$a@QaDB_ z{7ZzCa4Z0k0?KUe@l&qCkQP&_P>IQV3_nJ=(2H=R!c><(aA$!R1G1dPWTUnd*f=W0 zbjAiDR{S{>B}ZY0Bc7?9`K!Q*0l>bk;%vmRoZ=koMLmkI8-s=M>2A!Ydc%eqGY5Yk z3a!P`r9{Rek_9|vOQHl2M#FPC86UPDimd8S>Db{5n=6;Olj3r53&}2ISQyS8 zswk=Tg1OlhuUh^U@6I7)lel2D*t0`u}-&m0?wQL50g0OYb1lB z!tJBy?^1AVlm~bIo-vW*4k1?0QTLP}2orf{lfEb9JtkgFRoVmGOCU0q_TV7@zyqNj zQV30$$G!K8nbnNH2y(A0B*_cMSqtdG!M6AT&O1s6u8{vJK7TJ#71ayx^zaevFD51+ zU2`7@|FnX_A3>%+)3)=+A8reR&=&hOP@1FsJ)BBaHttZ7szTD)p}Ln@njL`}f5z$d zJ4V!gX&9$TwVDa$-JqQI7W0VK(kAbdV$8iRZYL=><8pyRuY7TTyu;qX?L`h)l z?YZjOtW2IMeBc0hwSfVW4sQ=2cbuBOOjGS%M$fLEg|2c^2wgIe7Lb&`B9=@fJS3pq zT?re}HC|5mfN>R|NOQQTMuzZyxYeVnoi_i(_Ccp})TQX|DCtxf?bLv-=$UY=gJME1 zVQ7vUmV2eBLw_XMx5{Y{=)Q5*Y-4(j;$J0L{|u6pt$v=OLa&nv6R-ER5w1V}F|&OW zgrCjvJ|dw433N2UeYpBudG1S8@)OS-3aJM@9plj_ald)Y&xVe*nTvVS4hgnZ6FqUG zp@0_)8uu4Ub-|X?!AUua-%Q^=LP~hzAMd^tP*CHb$zT6(&D{@jb&waOaq#-8K68=4dg{rfy0lG zAvF*XQNAH<(f18%<;UvGnTwBn_u`q%a?9J}^;XFqmHVQe|Id6Ze5o+H6XS$CUIr5u z<8P;Sdga>+4_#VN3;osp_TlR*zhn&Jk64}(njb=16HrUb7&IBP)UYq zo>*>c#&{`xvV}3(w&BYZgq)NzX{Z;ZlmT0p@AFkME*)On`oBP1uhZMd=@Dp#aeSin zs@a+c^0{=zZTvV`akUuxQka$I8CZaUtCFuLSkK*`LxYrr6+iq*R{iOBhLim588VS{ z6mq*r|Cb49ipmJnK1^@*|CwsV_avsCKG&c5B%`YP_VrZV$9pmd4X=}osEc|~19K-c zoRso3Fyc-Z#9;?jxEu4ab(QZ1TE=j9f*63{jY{~ec*@@=dMH%w6lMC0HJG(Sq3@jA z#T>7pP?38BKoR$@dZ;+tEvU{6qjvG={2JVP!(c4SK(8n~eiYS7akvzrMQ2dVSSRzv zt3YSy*aSgw2@oRZ(+La#k(l)n2xry+HrfFs9IbvE_U@(5r{lc085u^yFd1!Qj=w!` z$OF|G*qZ#M_bSOKa8Xa`iQr!4@}=AjBZL!U`p3vi?7JKQVW@nV!)Rz%L)!t!^*Z#Q z9t2O^E+<^Y=Jyp>(2e`ay1@WRrBGA^e#q6RMtu;C9%3FM7^}C&iw9ri!>x%8yo{!m z3~Zgbk~|0hj>M$}c;Ltvxb&Ot|Ap zWG*N8kMlAA>=cKY8XOcZ$Oq9X%G?mjBAD?*Upil%ePh!DUaCFIe1yBWwQ%1f?^7cS?Use>xog0N()Z0JBcaIx#Cmp9mXaX)=iH zeVzwXiuvF=BX!CJkc_OIJP!m(&+q*+BL{^-?~x{jq@xkvBm0EAKvfk*Rg`pCrUi(= zz{2~pe1gVhz_UEnQ5^@{6{RaWT6IyDepTL_-)QdP&hI1K`B@qD!10#G{wHl+6O$&> zqUiy^^H`bQ7uXqqeEyB%rQtnjX4_Wv*v!i>fS&0D%Gr5KtCn zJv;>P068}lK)?YHVnTzQKQiP_BfuNog~r~H{}XH)gk@it<~9Jk<8aXxs_c#UqBj}} zwC~)>uM^?&mi#YMC=Tl~DZ({4dZiEU{62a_rBd7(?hJQ+@6n?_ z)z(L09r7K|D`7jixKat+*(ILO85T3_gRjp@BTD2_F5I~?CE(6p=Zx-fNDQ%c#zyq$ z4tKT`l5l5_X5_tzSs!BI%XgndGx9vRbA>y{ogMBxA64Q@-5=bUG8hmD#lf)nz0d1) zPV9Tf6f?R@^GXcK3FRf}@M`Il;Lg&6J4-5(eBg#VLy?WZohxu>Oz%V@ai#c!%u5{) z?(ASd6$iuL`-3}2_sErz``%)>GX(B8C1~{E&i?-3&d)CvTmL=~`#g`W69I1@KcmMN z1P_6WY0|XrGumd8ZKjQ;CyiZDo66c0rqi;FHa*BTnT&RU!8EOcF2z?QDQTr#EX_%b z`C}!j_{$3MNhlZ7J7-k64;oD>(u@}}c|0Q|Bqvvz5sYO7jU4t)$X4kklz6!o$VMcT zDZxNuX(14uQJPR)RZM3WUO)T|$yrLh&B%40ra3`nXb} zzv%JKM-;tB-}{X4du}CgXUCOFKfVp!ey}xmWwb^+xVYVE4Tf2tSr}Gfn&U1D!gX;M zcWKRaR;G7HUzo;eTPD*Ot?6(TorQS}<80kkS=T1h*rs*0HP&TUXJ?wLlX0vIo$1b| zIqfsob+NfDE~B4?EKeGT;V8*P!82G~V>V{t7aqiAfJ0p!eGpoLl~Fl2I5ar;<&qx> zk0DbWwOw+6hX#cS@UdLkXIBIZ<~MI$o3^aCD9l1*^zJwtRgu}41%~~`Z7Mp=#xk12 zFb!7GQ5)6@Dg$^NFihuw!ze(N0!?fy z{af#&%4#2z`jf}s`*>MjKE6HzhA*hY%2jaHCTTNc5I|sXC^#04$K!E0C>*M=jRd7Y`Oj%Uq?B&KwJY2U z)Cjh;J(*F00I7jiBd|TrKvzYpgF$Q{745MNtMmMyp>d+6_3W2mGX~F7hf}8pB||*x zc&Ut(pK4IN_GXPfdq7&*^Cq8oc>2`yPF9t-JeooJ@{;{i} zXgI`y@h=Hvx!Jk_xTvTH+8j!vM9J(<=*Ke@S>+1^E})AgMY z)YmFn)Uqbo7&N?I#{DGqX_K@zxX-=}&mC^62w`xAs96xRO|?U$fDBl7{JI1xnHpUb z@JfcbL0vxAcXmE4@}k?+^l7cae|8MARrx6}pM(5rbnCgnN7kjMh}J*CzR!%+9)FkE z(j5UW?%W_Tv}_34%V@pmUwsih+|>rffj1U6D;?MV)gQ)~@6c*xzf8k+kj6NEZMGJO z+RsFNlb=#I8K5oIu==k^R6i)<;RCY42mO&II61JL3vR?4DVzM2C7L)VW^I%4duRp=Mdy;KvP;V<&bI#vLYf`2f% zWD@ilW?J8#T!wp3of4>sG!Xm&Fj%Cb0i`(SmVRDNdG2W%9p%^{+EF$ z!-O<@+)pToc;hW>UnTIaWW9A&hr9iQ`SwBJa&X2&m`^gw9m3zb51K&WD2SfmfQW<` z#m_hbe>r-SSboOeqk!h1Qpif(Py&P;#(d*w^d+437NF%Qs08C=j2pYSWN|e2g`pOZ zn)7!cDrw__d0#2K5)>e50Wv$6Ta43&}L6Xf> z1OpncP})s=?2l4*$_$gh2J!SpZ_ee-wpThj9mYMXIVS%p@snT9%@0*lH0guj<#10* zQb2pgP&TQ`%81zDkB%$D0Q3mW$yTm}UEs*reedX8gr+U&@90GLY{5c>WRpnM3}+Wh z4r{uCK;K>+Y@coj%3o&^+5;7wkdwNQ%-Y7c1I*hIfn^yk304C)qXjojC_d01t42n2 zb;Q&`B7is=?6h>yP78|AJ9LxvX9hTIZ#sz!YwyW%J=_nkHtYDY=x2~dCE&8|RjLxy z=wUf(jJ#y1I2)QTtla;&1%VK4Aigl?(*|{@>7=8JB#+_%LxSZ6^zd6YmqXl(k!rkvl3wJeeB|b%|-}n?G)xzhEFEp zV?A*aMfON#f+7~h>5FnYM%l8Xw7giM!UT~9(Ir;dL5ouyD1^zB=FA_I0_8t^_k@7t z_fCp3{8D~Hzy}If-|lyhCN!KcW@H!bmj$_>j33e-)PZU8EsplzDbf`(Cwn9}pb~Q0qPGgy`){<3?IWN}I zwnh@l+C5ct)(vq_gnMjcwCIzz)VK75-_pl^%SDOH8px&no{Xlgw?uF4GDA1y)qr}nywflRi&HU1Q8U`AZjKvtSrD0Qq9ym6%Ci-I{>yVkmkvS-j>DgGEodapxtUOK@ z)2j63!liOG~ENW3KQ#~qWrxH(kT8|Ql#QO zjz$T+1$Qc-Xel=zu}3_5H80%=+&Cxl(F`~SRg7n5`%1>kN_3xxOQ$j2r0hpy5b=%s zsYcjd!&FllF!73_!u7I52q8(_B=sV?Fl%7adcu*?ahyjlx-uYzn2?>j}!}8Zr zrOSN+>owqdW1Jz1hlw9O7%3DaU|)zNt2_=jRl@y1pmOgh3Ll4>kAT)pw%H;HfS4R} zCdI4jAe&!{Dc9DAsa)((kfdJ*wHcK%xNup-k~%~jlmmn5#z}n)r72V$a%sXUVtx4r zmn*Y?^v=&4R%W2l8Y|ZR_yZ)(VfVl@Fe83v{_4IFV9<()vQ_w)beb=4dV^M}T+9~l zbe52=)L`l4gYlGsd(F_9x^#T86PE5V$uAOAisTv1yCu++O=u1~w|tAp50^|4FDYCo z2Yo3ufCm(TlnfEP^Ll}J&WlvS?0f=(-hzmY%wnHW8J3#{uRM-=U@QQY?!8ZvavD!9 z-wOmbK5tHgXY{9z&Axy8R4LBouH%~+?P(XHA=sL9`8^qct^+^sl#Sb$;RYT^ykp71nL_F0xYBNFQ5>=lc1SX>SD zIin#14_DbMBQM%Ig(ss^ND?I-Y=tE&xlwM+FN% zCLmbY9oYH#fEjV^jr+^b#iYt%RkmBC1nFtO+Nz7#rH+{HV^O18gN1r2Z`dD}at$!? zj&E}a5LB+(LbAM7Byv)l0LJru2+V!To`gyol_plC1PEw4$-x@Wql*OF@u5DN^5yoZ zlC;H0`2_ln5pd8k)#r@SgI%2oFh~WYl0=!GOtX3)DTL{+*_8>DLF8*gw^Ie_Bp_m~ zA}75naEpcv0s^?scQ_iQ<+H|xkzCOu98Dz2%Sx{UG&_2HiXylt1tH{@OYr9cXhrWl z;#&Dg-bYJ+uwiq~toE^KVn0_|nsBQD^sbWpw6p+f>;#&V-8_{8;t;Dv>bLcz`tbt# zktfE_Gtpx=$KIh1Qk;m6>V07)^k1JhAySsrX0uSIbF>$BS&2v^B~bw4QqW4WPH$Z7 zi^Oucv7x7@oCR-!88P1fQ!Y$ynuZY}2xQ+pB7Qj!QWeh`>7Q@{#7DgUs7dVlu7UIh zO35E1T?JWY<{v3IFCJb+@q{=}8zb2-5Fwm8Y4_maF$4Ae&tY=M*X`KzgKUT`33SL6 zh+#G!_Z;bgGKYxnFas^Go0LtEBEFcc{`G3)kYOlGR-p~6>U7xBw8g$lsCHCobkmfZZm39j-yrB{w>%E=@l?? z3&s$dQWhBXqJ;DuBB^h>)R}+cPn?6g2#uyfVhNd0PQ2fK6CJf*WHMg}QE_r=My2Ir zx)Q4QKoDUGGf(|ZYFuLPs0i5tW3n3S_qK~tL~4MQN;T@RT&ucY2%{0vSUUB!GjEWG z15Jyja{sAT zHoOtdB1-mb<1`sX!G+WgQhLN4lG%FO=US~gnr0g? z6yHlE#E3i-7}W@DKnDEBu5$pdEV-o+q5=__`5T)Ty0e}*mVu_Fc=3atf>DBPafy$( z8Wc!OQEvZ&MJV#?jl_0pOmT^ zAUvhEo8J<;dGtpz>Sa=Q0;@&DyU<6R!>yM>$HG!SyT&0?Dv{(&3I7GwF^?uHq&|oW zOv+`97JEw5f+5Xa7;7I!=G_l^PlRy+`U!XOw?-gWEaeY8fzGjYMQ((dQPY*=bY%;D z0;ez+D4wYM%chSCj)=%xM6`Ji4;L@g&M<>uc1G){`?^^+?Hf1pifpAye-#4wE<9K9 zI72e8St6bl$#;!8AL8~iIG)Hg4i^?m5=oi^cOBz(Dor2w0z|b(7X9coT=6z}4V)#n zs=kBcUM8;c>XNM@O!#$;+@k+@@qOXQ)Q2yKhtyl31qwarEE8tMy8(}PfT3Pa3ku-f2xf~64kd(G z)CB@IlvwL~Z6H}3^r6lEb6QAA5#Qe|IOpf0jY@4#wrI!c5V75kA2<`hz7LPbQemA6VBiC?r#B`L-+vAs*SjG|@(0ai)V~#DP&*2-aAhz%^N@KU$Cz2{ zer$S^3%pcK}Idh?pxBM91Y%>()-uorwL5BJh^f$F+0_0mNPa2KJI7 zAaUDG^!Jn8+7!m;bth4>0~>g_5~FN-j*T&+ixPkkz|nmGfB=L5|6+FJ=JzPbvSYi1 z{#w6V^;^GNTi-oCU0r?8RZj>bn?Y{Kp8Y)PEn01Up6#S(Yc!tC&NiEE_S25CykBgT zw_f@(8deL#m*b{$>FTXZBj+Mxano_*SShMOUm72c&qtN#-APfZ>Xlr!-HvZIh05|- zk4syVCBDzp?9S!9t#7PWaS#((ObogF>9UAjgJdZeKL zQ*X@vmcQk1`CI-^*_XfNZ~0sPmjAM|Hw2fuUG-jd3>~-_Q>@Gzs-~kW$KmBpih?3% zv(4TJW2sku2dH>Y=TBbPL~^efw?Uv}wNUHV8dmmc=A<%e5(r=>C1=8-cyNJq3_4O zyb86ZR-w4*0s>87>1g1HG&m3eN5e&AS(aax2m`}I0n0)F0QpJ4MT7yeNC*fd5&+2K zsYW+%OevLz6<+7?*a+9##=L#_7`V(c8tZ@kTI%dG!yeJZGZk0>d_@Q>6NLiEgd#pf zi%ckD`T1eWQFM19f7xya9uZs6u5c*+`P4Jp*D05E2u^K#l_`N*T*ER1XqB(6B&Ea-2el z5Ml@+gb*SkA|fIqA|h>)#_Ueh_~9yGW2GG_;mpuGN0OW*m2xZj*H}3uGwgwYye{$- zAEWZff4WrOi#6tqRRS~+!sEXRiugdL1T0CeA^9Q061bVo_RCm3Ebu#ms^l`^PncC4 z^VNbljV@qiIP@}JJO09iEXJTs1}MWy9C1_*1ptKfkjzSX^KoT1ynwd0h1l2Cd=6u< z^@an^4oi4!{nRJofg(LMS43JbIkpH@cvUIs&@-yNgguK`!$Sk41y-s%6f5p$-Z21k z$IB;d%y2DUyjVn$mNAefw3DRz%Dux_{j2BZAFv1_>N54>J{MSkXw!wpt4m4g3jY>r z#<&U+^gvA#C7j867aUlNl{dh$kr`y@`|oV!xm&H;V_kxu*EN^PDuQ7>WsT1yoJb`d z4NEXQP333{99ZY%uHj=&AURP+u?3mA30ebPdf$4M3xLnM9eT6>8anGoMy&I&f!<%f z6KF+BMnkbUgvaErBpTcztkL>WZqm9hI(_0j7Nb z1JkJ^);3J>w1BG1;`b3`j2G%s7Xip%^w`!n%BmASx7?fEc|mv74})}bz6|3#8VOM$ zH?80aFMUr9+(W6(+i5zquIPD3Y%J7f*y4wF#i5Jy_nT6-_;!y5s3+Uv31&S!DtH?L zBE>FeTp|C@7Fn<74+h+s{tHh~1@Oybe<}$TyF8XArypLsIAzSbU4gH7*Er~TdsZ?y z@U1J*EMXkhpUPof4YCWJ&0TLGEWD7u1DHi6jL`ZQVrZskT3kb;a^JB#=ed}@;!47G zJh*Ihv3i5ZI1&`c4`BS|lhPpT&c2l$i(}b>VT7ovA)fG-_HN?7@JW9OoifP54JpOi zyIR=A$NEefTdKL}y5fA@k_3mawzkJ5fkahIry|Wxv_(% z?Rn?t1KDglzqW5!5^~{II#T0Ow}!NU#bBftl92MeW#-wIJ3#v&2-u1!qEc(Htn3uF)r1E>+p5+BY^Kkl`E)VO5&1u3CNxu|rRE}uO!VE0VYX1xt_f7P}S5u{m z9Ear&4(a>^!YF?zT*|On0}kkVG%_W>$cL6M@U>9sT$Epbe`Q%hM{=W-*!MAM9|@mp zQ>YfzO0q?ejfS!XbI8O(S<{m!1v*ak`L?$SK;d(TcDv1*4D{=|wj?O85;{nR#5}FW z+ekgWXThm)c89Mzcg->xxXv`1450;S2;_{Tz5BdG{oPIW<&KSX$1F19CysjqBPUKL zvVVtcRm$lR35f!yhQ8uT(L@4q@d-8Q$J+E5>_<*k9xyXbSWG5$3X5|WVt)vR8f+>d zs@icbJobcz*->7O9LKrqjuRW!7g;+oE{zTW0c1BTyeu=~W+uy0k!CjV$L~A_rEwtI zR~t;(&qqlg){S&tWo>Zcp6?ez{s)hhvs}#q5wmqWX9#A45&yW8n_tE-?-}>S6b)2C zdmLx4``n^Z6VG(U5zkEfa73eyi+-~F9WpW``{-dwzZ*0eie!o&E%ukKP9b^xoSz(z zVvS@z7h26N(`y>-#aPW!9)QKTi1k+~sNxR&Wlwhmmqeo(>L-|*eq}a5D|}qYMbX`R z#p*&3g?H$s9GmWDrK%il;1h!RHE1dN`q#5Ixo<0q_C<@uP`S)+H%VABie|X_vK(iR zU0(LCz~3e*oK^d{;2*VK@?TVCV4e1XC>`~Jw7mYBDD2mk%n>oFHlof4FLN}23&iUw z8uC}ONV9RB)Kl_~BDiOlr#vHAsAUWy|LNYa3}bU6?`;Pj=aQ6^cRUgUXUH+E<}3|hk()-DQ?0%5k@`&>HbMS86<+XD3aQoMy+i0S)9Jt^=Y~l9JaKsdHecMZI)z54C^rd^m+XZz=@Lg~1g(+&H_G0RryXgEmB;Cda#8rzM?&_e0 z$R5VXq|#$9XHsirPGPe-G__k-GEp7CHQFn^2NjCJ8u2`+!wnaei_#AB6y<3HUIX4V zJwapbxto;bie;p$g->yZWKdSl_0fthz9x0j}Fg4u{=f4NfYoN54mYT+3qh>M*@iOv57#|+1dPgD=R*N)4SAR2;CYv=jK z7210a6FV|D7kbl~z5iZeuWk;PIbnnQ~i? z#Q?H+$dVSpU;b*0c(sS&2lvtG1>t8z` zV%Uvc&74a;b``tS>(7T7yVkuOz{0S-o83D0S$Szo4M#mq_qMjCHHKlhBjy}z9b)c& zH+D|z#pc_Nz1WqSh&|4q2D@8t?sq5lIS0$0M;RqnvFK%3vazVKSHu zOvVC?3j>2mP=qWAx}XdOvK~m#_25B+1YHf(%3vB6B5SjlAs5@ED5?WS0;LB zKvyGr9v&jep%6t-XGM|YVXz(zXfL$)(TE@m;n9F#tcK&c9tBJkHK2=HjSL2Q9*qdP zB1oh1P`OAXDi00E17#k^^ROJ5213TZ{rH<^-^QmJnymm3ArPS9<940%-C)^anHj2V zARjQfP)rn)3q@w2U~-|zm8`;{vYINeiDAK1zyV%U4?#IpR{5h5iYaUKv7A*VGKSfR z?FuYoO3~;?WQHmmz_6Y&zA~aKrktHtvI^%vf&(SD05`j$AO3{pN`iW=WV0c1ZR}Oo z6WU`MtzXWyDa!*L(UW)NloA#D7p$$tg8x4T^xfF&VF2%QCiJPrgfPwC9|JI`5ri}Sr>XDl_{TaWeq zYTmwl2M}r^yzW-RX-wE(t!Hvhr1sd;80on(R)d1$c`nP59T=DljB8~uz_2(BOM+UN=5o+Lk>o(Z%2IYg z6s&~@1SrU0AU%;I!vKtEK`yqAM@skJd!H=3h&X$)$Cbf86A+*=FKn&fp>INN*~^y(Bo4KdpNuEP|6ZyK%>Es z00co0RI$Y}L5RuoHV|$$5P~X%plRc>dLzk!kTLAa+Y~y`JVauz=9FE2pO~vSP#_Qo z3Isw`5|FG>`cytRP#~G&K&d1s3I)UgL7?m|!UHLj9|)iXt6|~kEXe@`NCN^90SZsf zSnW;Ix3_z9eH*cBZ!fjDUT;)x_;v)H5l1SrzmKJZ&0b~t61R0c zBiJkK)pc`)$@%MQ!gBVnHo32^xEgY=lwrEPR$*zh|#it_9+QJQV+g_{q6nrW^wW+Rr ziTl>d$(0Y6v(^4IeFAeeK2?1J_GFqY@_tuBiSI{AO!daap7E*dnw--yrCe@KN_;AR zopy*w8{#idO`q)(J&8|QE@DZ1>LJpna&sV@({|N3IRM>J5lY_`pb_1Ui1svL+7E6aWBNoMv27HkOCNU?><21u+nW zFcBp5A``#+^pAX0DZ##*cE-5A5 zD7AU^qfreVgbUxRd~pKc8Qbm%tprybh@>qfAV6p{q?8LH#p7O_r64imQ<+Pw#V>oz zmS_j}*9G>bLifIh0VmcK@Xfxzm=-oqgo3vMs_v0ePWSoIwWKt-U3TL$d9%@iW%GM4B$%B!Z~Fqf;Bygwc-2fZH-QpZuJ3!m_S%yL327Tk>JLdR*B!= zd3@z{$2>Dja4naj#~!|Hg)q&dpNNu+iwyKPs3bCcw-~O;dTtxLI0SRo2caW0`s-E} zk@)N%K;cI5Y?Z}u#x0pQK8O+OJY`TW|T3Cay8 z^b0SP2>8W%idqeUno&}dR{FTG zR4ti&YVWMM;aaKpfxGutqneHlg)aX?2N0r@R&>=jy7SSEB$GNR5|Z?BQrJcTaV02m zZPm5aQ0^9M7M;gO=8QWRs>z9!o_XZ#0V?G5F*QY1Ot{}zh(P>6^TiZWi-sYRA6Be5 z%XtW5-m%eV@-9zHi3=;TZnKWb+Jm4Fs|FXnCiNnkoKT;cM*E31K+@<=-|{3@iAl0> zph9y!iH)IQSZ<%M5*}Z=keg1=#CCGK>ffRnp*OXqSR+wC!3_E;>QStqH?HO1I~oet z+hZ?CBzt3!WjaR1;~3u$UprOMN%Z`gO-)CxDhcd{&j%lQ6-mcof6Od_aO{ z^R`B4C5vw*eY$I(o_ja(_-Zosx@AQ$TC;T?SoI=->h7OqP*XH`2a%g%M2>&~h?>5s z=6IxEy=DS{3zQ%v2Ear>`s?2I^P zCDmE>10TfE?Sl#2Oom>k2*TB-4)p_ZBuKt(xJ|6L9AIzugxru8cv04n0cv2>Y|Vh? zeb{Fc&7^iTKyHY2;<%y0<1u4JvrjSTnHqxzqKZc6h}zf%v2ulq=|As6h*fgPzmp}A z){yX3REqAhW}Xm;(lYr9zS>Pk zpAMfV_ax0|Ovh80OmeQ+{`gvhgr;}97GIiYG`1jECVDVX)BN`%IlD$qWzO+|V>!T9 z8-e`}z;sN&;SwR;AA=aY-Iocgcfl=<9G%P(VUS)q6?A~2ho-{`-_69uTf!5rStnf6qK#@c?N zQ2mKj+T3tGR$Y&+?Xk*Rl%xO=R}1e6WZZAtLDR*e^bfgKL*R84|1%uI(3Bo|(#hdn zh4DyjgmrVJ*P0sdJsK~jX>!av)@(YbGzhcd8(9w2;y~a79~4{Q`ij2Hhb?(HC4P_v zdfOn1k-Wo@22$xzc^SD$tCgKgLKvuBKn+b9bEt z#t+{MD{=XPepb>Lv^{;mtzq-rU3N#TDv)r zohz~lZn)1<8Jij&h_~@I2#1pJJpC51E3Y+dlu|^E{1FQCNtNW;h;-o6%HM=Y!H0TA zFyHtKq0eH1d=Dp)`R%bNj<@_0v>z%bqu>29pZr8H5wW9)SOUb9@WK8sk;Jer9ofwk z4>GV7Pe=dVKFj%~g`Wt}^(1;B!nGP4Wr{YusE&?tG%9#@R6fIy6JX4SSI#REbwgV) z@B6~V#N7e}=3DLU^O-jNn?>wr>)@EDA8sehCLS;ov~uEYm=h&QQi3Es$>N;7lDuz2 zj)^=X5XHB5<=x%|#(|2P*Jhx|!Zny5BSmyM)WU3PtkhcibSyPbVZy%@DP0MY*3Hv9 zUr&tih&y6JH$^Z+Axkw#BfXv2N)##lQi5=YU=7fwfsh?hMpXUd&2djf^q|{bt8tSX z{R4u<`SA*MUMuTs(e*SAVwotKJ$NCZX(~^%1t$3ueJc7Dy0zbr7xAS z^RH!o;QG`Hfdjnyz-Dn_H%QlFh#R2`#|0Kb#Uaj(cO&wmzFJeBoCiES4FO(er) zLIS)H36ytL0|K}!TMHpk3Gpe?n8T03^ei$n;Q*NiosM_pw*3IXoQOsi606FopkURq z9Nqoj`Kt8qTw^hy!0~=n!OsY@6MT*77mbGIt091|a-8Dyd^O@sepQ=@{My8-)*RwL zY@a}D0ptexrAUGSa>tLm2kwq(@Yf|0iW6F$EfE|`tjLZ6*E+d@(IImE4oZ#fu!K;0P1xx;s_X%}># zct`*K)U)E;3owg5oskoY{Y-|MS~aFUIa-ZFKnSS z2sO{3Ap_LVa<0t^YnZ(Wj<07RN}Cc<-aHTGezKy#udF4R9Zy(VDu!@R4+rv4rzvk% zG+LbCH+9BFlp9#J2q}Mt>NQ?18DELML2_PKM+D`sRF6H8*h=7dAP85~ zRt=(3xyN^!tI({FLJf1~a7&eW*wTZ*B2>5~c#?I3y0+By-(Cwd0&pei5c0vFK<+{D zzwZ#GxPi)Uhp!RiuKb7Wj987JzZXar!YOb7Tl^=tTyk3NMNF6T!e>HlkPQm9Kg4Nx zzzquI)+fzIfDs=Ql^LmyeggKD^IIj>64ckMLQbN(l=^lN0+lcJ74IMqx1Nm~Buy9) z$e3gv`=V64o-K$?-Cz>!7nCV z?6*NBUmQ0VNRd&(L2zNQ#{8JA2?S9W|GK{PQOcg6_|=0#2(uOb4HiU0w!~l6q@8KqUArDtfUlecY_jqPfKZKI=Ov_Qq0^(F-m)pf@Mv`b=jGVkrg zyD`r!1*iydUq>wV_0v2pb-ET8<$N;Jnb`ui%07UHgOr;!p9(lF99Tg-Ixa}B$AD#i zp9X%bBf!vxJwalxcFsQsZkrE*0 za4Dz)Y;AGRz*{C37-5~D%yT0OD!A4BK-L8e{V9^RXu~p^DG&~-DWAEPI;O2spF%Q= zA3M=f0ukjc6w^MjO~*H_EETR}$sCO6+x%X_kjnE)Y~c(W)X0ZTb<32~wdC-e*=^S3 zaMfm30lDh~2VJR{5fNz&=n>6My(iEaA-oKmUAnr=XTG3VMOqT^o*mCF&jG04<_?BI zBxUg=sZfaOKmnnqvuZprKWco41jj%X77Z>65ByFiF5mu`8)93`n)}<=H?+$bzsiH()UR zG|s}l$m{X5+e^;hL}lmfPIS!Ye`Vip^TmA?SMOz>u}?{bp2|pA84YsU{%5uofn}vn zHL#vQQQF7Wlg+KzsSxN4T3PfgJ(CB@0vW0_3aIWD=)WMv!;*ml+X}Z=Y_ilhM7K$wKT~jFi4=mln1ALVIx&&Xzv~g(gD< z1sgzyX%z#Df}W+G5im}RM+_;kY*t4oGxlIflwC9N<~;?2_86|EU`4Tr2h#_%@N5oo ztd6`0-?h(blUX_sh@y^^D8?;KFxho?@qN1YbE5z;PUHL5Zi~F?Bn%6I%=xSQ?;`LS zRV*5q__9>Mx+s}GNM?H!m^q%t`HHKASi4tZ9N=Aq9)W-m@cKW8GgL-o{&U`N@E14u z2-CkEg%p>=g$E4`2B~QQ2c?N%>=47&gcD|FY7a2ndmpLlhJ|E8VF$8Rp)^2rqewug zB);2JbnWFP>Qv{8ZbN}y7au&#vz91N5tarM!LbndY%*iwfs}XZ)u{PnTFEm-HH)^8 zavP?$xrKl`T5~teiSRs1xa+SJoS?r@JLwuqfu>8|SY;xe)2NU*ezr*R17huKZN(sF zMLzcMGnG@2>?p@#qxnvlnD!=8&G%iRHST0+JcSph7c zP?$6Nc&g}Csu4(jL4e$_unk(efppx7eAaw1T$WihMG1 zrY?$uj?gM#!*VfZcUJWTAKU|@K9ABA81$@0oX*ee*SXT* zol-`vKrzAdXgKns03J-Qyq)8C7g3TweGbZjRB90Vb8GBGWuekU1E-FuW zWiZrJ*j2%a)p=jx>@gbFKn}mpbc|G1A!63)4ylCTUYEprWZE{c!-%a)fHFr+?{EZt zIf>?PJ^oL{CuTR_$dOUqSjJx1)^POTSKOD_uOZ$NU^?1ocG=;X{7g$S*q0^fRI5xzY?(4WdyTAz*#}ivq=b z3PG}qv<7UO8T#gKNm0B+Q!DPm^`UNTCDah-bj^ZbZhNU}oAyF-!132hxQ9fH4I-AZ ztBMBH-k@#tJOO?!%QrPF4m)$Fb=*m2i)g!Q(;^Xal4^;=G!ednIKVX}uu@1o6G@}}CX`$9JU*)aJHQcS4< zB<@@K1m~v>%>KpjOC^#_uiwuMFNy_T&!nha-unn{lnRFrLB zU>HRLZAB5Y^b~HFBIl>@hv^i3hypTdMc5SdNKy$|8nY_AgAWt~i?dagDP>|q&T|ms zpaxffbJ|!ps_A$%&JA zgH}vQ<6RYc68>3e>4_IJdl(~N{6ORlFtOc)U6{NCUdK-d*#T;SOlfBK2C<>#N5@gi z6ZUE**czOCt*O!k8xMA|w4X8K`lKc+y!~F%|EdXgi4u zna)G!3N$H@^$qIslCt!yh|`$A@L%!n9am8vVTuLOkRqFVkZyCxJo|pmGSkfLPZ=qD-4D5TudYw~xHIp#36!!FY#bP4EUcBi%WUh{V#2Bp(F(V9!iS zJwR-SH)jBZ^EeM|A=&uDc(^oNGLWYk`!w)z2j*k5!>%9DPdU;u$5tA?S&6iu7LF3e!+It#Uu0Cgkm&r_Hkm(8I%kFEEqs|}JvF{clCMDXXci78C)qax z$B1>hUqfR>F!o%XuqZDWfYlwCKx;m?tXW=bw@Qzw_)F|uRZ^l`PbAsOyKVr6Rl>)L zB5x|@8MKvLvIXClOy=fN(&vE_Ea1F?dcH*2VlIB{&9uYTKbK+uah%Eko>Gv6l!P!L zIK=j}3k$YKRs_38b1=aO)L!KRu52O+)FP7}G2N?@3t4T95Htk;stW9@TcuDsnCy*Y zSM-c(vZfGdbmf%C`v)hI#UbNx5<3SGt4uM_oC7-NUg`-y=~)1-V%v=b2MfacW;6d0 z($*AFlGU;GayfJ?u;vU>LHO$7bksfHTb!pWsu9Gh!D{ZbtXH9!p?XKWu+eCJx2<-t z+Mb-hZ3)0jV|%AON9^)256QNwDiH>aI-Y17U$;GAaY$ zT0YR+4dbi`6SD#oQh$=X~Y;+`LO0c*#KHkoYAtD z2!UI&xZPyiNs=_Dfc}HC_HTHkfau;HWe7!+Nw|2T4E|-*v6Vs12<~pK>W`lx9siP@ z5-x?~+EjH?D}s_OHaEZ!OtQ-M9vp5Cjw&^{GhkR6D2>f1N0N<5;6BD=1d$LvDXD;I zh;`H3Eof=itLUsCxkv zA`<7kwBjlFg@yYS4Ww-QhWGtBS+DpKdkS}g>=zVtEabw`%S^P^%;+MptfX}aWy2-r zJOGjg7S2d()vdr#uSvJ{Twip@^0`%cNuB3&(sYaD>RjOhYTm$>RAf*pp!AWiwHQWf1YaqA`rxNy--JvvT_~qwN~LE z=Bpe~#+?luX^>Xx-&)+T;f|cs^rP!QG?SNX^>e%$uXRA@SsOdozDHY!7@OfGrF|;A zZc;omP`np{G3|mA^;!(mq4{*LE3$%db|*2P`3xrBp479`3-ZnHS8$Gj*Y0cZ!z)9q zBOJIXPEDS>=d>*^Zq9ZHzf-hPa%5FD&i;(IyP`BAiJP{Zk>ntH-TRMe@|&9;aU>@! zRkO&1n<5ehoxER#B_>-_zjFEZyZ8bn46gy&2mLKGz=nuw8%Vpf$IBUsapC!wGr|t+An8iwF%8WnEg7N}`!sFbpg{4&iTMmXSl}NlAWddT-Rmbg zjgvPLgm2M6;2Q`mEZ;yt!SV(aK*3<400ePOSSTnUm|#GG00<@yV6hy)@{EBAjb#%} zNITa-3kLu|#_1lXPs&2_!@Y5#SM6l?bNUdM?{s83S_&V{f;uS|gR&LL#EDzN^Og@= z-0mEBSDbi0xXn}~oIzP7@J8IC9JhSIDcRn1J$$Leyqp8R#UAeW=F-L!*k>h*z>T!h z+hMZQr$c=@)TaY_$7n$#ENr#$xdr8|_Q90mD{@h%73UPjb#77m>0?vD>JHn_EywJ} z>li9rHw}`S7Q)w~)YBD-y~GRa^-y0Z$+T0}=93||PrR(Y4%ENRJW&hqydu;Wz7^q^ zI3|vXvh4`R1S0Z2H;-os`>gDvxppL*32-luWAYKX4~_{-921tbw&0ks;c}!pj^lJwwk@SN=QvUw$8pvqHg3mp9LI4S$8j8IQJQ(3Q^#?f)p#;} zsEKQgj^jKM36CUEcAl;~j`Qj`4o`~XIF94IRL7C(IF3|@`#r}*9mknSbsR_2)Nvfg zaUA7-Ko+Drj`Pl`V{>`pWR0}rOG1)N?EqPLjcC^4;flDGyki0<=w(TKH=giKDcl`l zpOt4DX9PyC9dCJIG6gQFkCXaHeWX58AE}SjN9yC4NPVO}QXi?0)W>Nh^^y8WeWX4r z^^y8WeOv=EZcF}NYB0v-_O6^`zUsIxrDLX>(t5t+N^zNQdy}#1H?UbV_h!x1`8U!= zOY*ED`{fmIxqOqoBt^gQF_wJB<>`DrY@hAQmK42BFAVsiH6i`i?%+_;9a9dvWEq1aq(V${K9cNA;NHN}40d&SKpp_iH_<9t13_A(Lj1;M3K zgB7pT*wn7#buq3cJ-XCj>*y{pE~zo8F>XyWx0$b4rBo+8HMoaSc!uE;PX`C|3l659FjIL4m7_V*Dn)P*u z>Y0XazKv#E&2@5<)VTbbyVIuArAv)lZDR{#0~Z80=tJYn%Qfm&wQ#c8oMIZOQ2+}8 z1D>J*1rQV_8fg5&rN9tSSTI-(-l5^KiFW#_+0tOpzyJ#tEYQs8y;A~=LV}|v8jA)N zg$4tP0}=#4K>`yEi^76uOOl6wG&n#cDv$>nB>v$5k!Xlms5m5AfqCiPF%L1XkI|nF zMu_hjDdkM{Ig2VzQ~sQlIkQI?YGbtdFaqd_{}Oa7RzE_@ML2RIAtYYxdl( z<7(DHsRE-eeFa=`KCZYKCcYVedMEjeOva^}nv|2wq?cR4EIq4mjCZ={nt}0kqcF06 z(lHS(#o%QroEk5G2;s}6qRYD~UM9udm*g2Wp8ecWwEk<~jBhTj)?@xQR0ZZ;tG6x_ zV{J_g1|vDRmv~W?I!T=*&3aOD+_)EMrOSICpBK)JYzO;IA18bbK98FEf>HD4eeX^7 zJu5bv&wRsvFuqP2=%S2_n8-_Al!-E{YF_W9#$1$PKOww4ZLKdg1~srkUwR9^HGS1? z`mrSr;XH@ zP8;ea%g!`smbZyo)LRsDKEGNKvLs0_>4kMdpP`yuu;PvQDc0CoH}g}ZvN2Yz%#ymKMyz?8x3RY`2;)1ZpEjQUFs@cE zL~WlM`#2q& zHiAAjPa2_SX`xMH!O@G08N9fBWh$0GUEpi<48X(#I80;(G%V4C3XvtUJcC6`AhIwl z2P9ZX38D!ZED|W7fWqQ{SXEV3MRbdcbxQ-jfCg{*NAeTMyM=f_DF3=+v|g@BfM;M> zSXh$)49S%8mDi}8kpfI8xh6|}VHsLOyrh%|qvAx<5%F+EB&A%IO8mpYgYlZ>3D5-c z4~C{0c;WL8zm zM*M>jt%`%nlIuZ5jeK+taXGmV7sEds2@^-fRUg{Aqg87J36sYJO*2G1TZ(csJTF(q z%~X`z@eX-mi$VDvlgPhr%EN>4k&hEToQMZw)0%;8gm=}6bdWq2V5?Du&qhl*{^3C7 zWAYP7*4>Z|6s6{u8H`#k#~gSNWLOt zPbyxHe=xLqDr!Vhip29^JeM9oM`YB>!)NjmPiuw;Lt%7)fIub?wth?BtzsfChhSha zBzd(l+Ikylp~~otNn2*QyE0_tWkd~XycoO;$+r2bK57iOVKiKZ>jxAN1QVZN^9d3t z000IS&~FslG_}dW!(l+-00agW29^d8Fh~IM3lJ2@17hJp0wM7cBrs4O91$QSG*BcC z5C1B6p2IPfd&VN#6KV=Nc^K=GLcjs z2Z+SuEJ$#GD3Ol8tR!^D0;zRQ%?tnl(+~h)U>q0?#v|fLBoqycWX*he&sB!_mdOe& z*?)}2c%VBDe-I|VhWc5(x0x*gx8lWr*9-lb7^v%|3wu8J~35Lg@Ec`FxP zJ93!`!GR1AojJpdVWB?3_zGQXxkic%xw>Nrmw+c&$jQMT?)>1Bq~lz@<|Oam5aR0r zcK+^^E9^9u?|(=C0gnc$Xof*DGeK9m=U{S3OFUh~b|2u_IE$bnnm$a-}=5bt7VI6eQx>>6Y$_F~T(xm6f5<|u3@u`u>d-6kOi-O3} zew*2J5ZSK-9S??ih(3PE`VgYb5Mu2^EFA5V*&)9W%eT~F=_1F)V3$0chI&7rJN83y zL%+#nDopGe+_#bG7T({ew^{{0-zYPcfe47v^WOU2 zWAMz=S|jrbwRUX7ZawksKhtR^k8v}B6?2iz4`A=guoSz+aDNd`OZ4%@9%KgqEA5ae zv9xu+{ivM$WP7dyF%}kPxAu3z{`qE2_4&SjneDa z^czp1t_T}LzyW`@_*_xsBVmCCDEpV}`q6G${Avr-Z#{DKLc3L6Zi7qKg-WGKoy%x= z6;|3?YTq=EePac?2NS>`OuRKu*OD=b&=Q~<)AKoSMdopE0a6<%5q@%IdweJ9oo|y~ z(xdc<34rh{vr8b~*x_vSjT~#f-xn~(yd_F@c#OzM2Zp>4m*R^|I9!13B*YD^rJwl86H~h}i0ZvX@N`Sx>^!#s4VF3>) z>#f{wn_5k#jMe(|YPGt8erX1pII2CMZcAQEzyH|7-^1HX6YQ}a{XW+c&&&2r1Ga^u zcTs1Fjzkv?-O6ATUM&3kKGrDOB_Ekgcgf|FBiBOGQWwTpdoWzOO5v_(P2)PLSys2c zw64;WW}pR7fRbL)m~V-bpPUW-|L9)Rbu%TFPD~$r&Z05JoBU(e+?VrJt@IBL^>e$O zU5W84SX3c90i5k)S187d>y^ZTODU~cx(2ksz)a>{O9Wo*j%I%yZ`lqJO2041QFg~g zOs}ZW(nzK^pa?Lpvo{k@9X(|fYLQr&YnF52tpgF^V*)zJAQO+ixu zlFB<6l*VST&6N}~-Nq$rHr3G>>2;L{=~L@`my6|>t8ju)-#-7JAr#*U*p;Nd6zYia)BjA-@&C=JEoQoCzSSv@eGo41V zDP+r0TT3;owiOB_^NQoz^%Ylqhsh8K6tTG(x~n0jJlx8qJ=Y1vyadO^Q7A#}SPqG2 zi{MJm$}!|{cam9D46p1kK;PzU=F@mj@y^`HK%pi+Z4QOD?6)}@hL!Q_%7oi^4nq%E z_7<*Sux7SCFD61AOx;CY9|S2DR4X2dvRUD}A97VjYDeu8(Di^R4cHgg7U=sl~iq^Zjml1bT%s|0OwQ044Ov9=le+HCVqIpmqz=#|)q*(#jKWf4ExeH(j#kIb zs}s!Vsz_ZDk}OXj*r8>R8#rskgGrKgOdp`f3HX`BfixHDLexNV=sv(V7)W6goRv%` z^;O69p9tsD*=;jIWl`#ENjsYMf z-1LKBQ1&mtTYG_p^51jN!G#_DcZf_F5k|{CaA(;X1re6e!HPux2U49iGeQlE=}b#v z6@u{RXl+UTvnp^R7@~A<_X|ZZpF2zQ3FGz@KOzqb453Dd!t^*so$Ynx@<%>?;pv^{ zW7QFuFc`Cb7HJZ(F^W@+#R48MtpEFOm(&E1HdbKBC(_|{3dExLBrX3>i3Nx0n@KZS zWLjV~90-$%6h}ZGk$JcIR>YMVf+n;TwJbg<#D0~8C&8Sv=J^ALr~a3}SnA`A`3k8m z_`&y9w!8N}|EQ7T;ZWjo+&vFc4?X>VTq+6sQ*otL2&3jVY#AFuK2EGQXA`g3ZhMlk z0A^eLe?52;gSG03%>`a_1Jb{=l-nz13$oLeP@=@i8-WL^?kr=8p24d`)1R;k8md=^ zuij(el98|)l7FR96vmUgDO=r7)TiV4X zGrio6`wh_abZt4+5qbo{r9Jf6gIpz4h+{HsDtC|&X4T-WT6WB?$;{-h8e4rFwsS{| z`!uk%NAhT?z%DD>gf(WXRB{Ag1? zt6_(}g8GDuyv+Suq{yeIqtP_go*h#3JcHt4X%;8Kp(I z?d2FW1H9>{%KQxXkq&XHLLD2cm?{d=fxY>eKWVe>+Hr<2wFe!V*6xoI&Qqr+Mw*1e z73zvI#4=AyzG6AGHf7ExvoSO=)Q$Di5A|2}p=9Fif41@sx;6jPjhP!b0SN}l0|cmy zQ1>?(_Co|nq_lM#*rnf?YrPC0wr0ZB7OiG54&BT^fF&ym*)J(auZ5sVE!_`nb`x{{ z75zpzkA?p0sXiBXVhX#G`@YE8=cp2N5v$!8+LtohWWt2RB$bX-3u+}+17o{m)ndL-SV((0)5GY#b9v%XR4 z^^unTVFlC5eDrGeOMYTnc3v)I0Q~ghph&RoInQ{)EbXXr5NOxJ$>E7w& z$GnTDcuo5TE-NX^qO+q!wsS`}Xr+W3_@SxS$MGwS(LTSLLBfI7u~uN@$cU7UsI7|X z#xg2A=W!3qQY(qPoaLPOh}kVPzxk*4;+==x|~qyx~p~$*RFn1vjyA zjn${raQ|jRv&dp2uwl6Z3$8F@Or8yt42{RxDJO2gq21TGpUWzW2%SGEyvV9hEa-`} zdZlS)l7hGS!Q>qr;>X~OX3!BY#)I71pFOrL98#7@6|)E%ABd5H?k50>s*voH>!Z02 zGeb{hwEhRBHg;BC(g%*{N+UKe>3VU4HIyz2QCiC>`km~EIJlbXnBzB9-Wt8_n2>Oz zeoUjSm6=~-W4W>%erae4|6w?z@QFISz0#&W)HzO74@F`HAi=YrNZQOs3 zPXMd(oLbP$x=o-SoXme8LN<;%0gIZ;<`miF;&2`Ia*b!wJFdOnz8Ze$ z6b*mG{Yy>rG?im*Jfh7KrPVy2eeIBhcWm`b%7PtoGN|8+2*M+lwFF%PRqL2~OHeRf zSXi5DL?FxrI8v#Kr;)|E#vLYH)9*4ANGWCKjOUY>N9!n9a@fFs0@xu@xJDPUw=(`C z6Nl;VT_EIFw9k2YOo$HPY=0;1Pn1$fG=XdC-^&aFiob&f$^?y|bE&;K#t}Ry-D9E; zGfdnktZ`S|j3Av+f8$Bd@k@ISSl)rIVSI5;5)CHmxa%2R8>4>lW{YaqdDm2d z#b|b1q+9zptWcwTPL0W<^e4&1(@%Sava^-fdn8>+2D+}0TYe5<+(^gJdX9-j20HAy4Xg^ zWSW!sE)|FdF11^+HSOrw=W(qh$=PDI92}pnQ%9WI0gPtDP#R-0Q6OTB(fA__tGfBC z>?giFdi0E|ITRT#aEHd3uE{dZd({jD1VUrMwHkBdwIj*JJsM#@iv4YK1~EaugDlZV z*%TmYBqJ{FG<9o8?Ur#x$)4Qm^?nmYkoD`7e#ih*L02cPiG0wjl z%Qb)ts433YbJeqjn4942L~@7M!6i|xw}S{UC7C5F4WLmRNiO_3#+brxiF__Um#pc# zev*vUlJ&F)R3TP!aK1D zC7U9jN?hTWUg5{NAth|LZphB2PPBA$y_UtmXeAVn6fxRD@Z;#^PD0rks#1KTyccCj825`X zl8hpm0E(T|IrWvHoj58tqAQKWO%_2JO84E7j@|`7SKGyH*o1j8-|`j(@L@| zRaq{F)Mdv;8C-cc5!6E7E2I}&2HK7L5{6FiJIXGx6WS=#bxX|duQ^0sqzvPzG}mj; z@DH}fBK4VNk3Ox*7LB?#9G9q8V599io{u_AOOzU~!b}rUrk1&JC0n`JQV2m63s@9L zw0LyVo2a|KNs_0-;tqpkPeYwo?}xR}LZ(@ls7mgiZK8mQbn+!)U)O5fn5gFX;`zix zPe>^ciLbduzG#;FurC*2>~Z8iMe%omG`$L4jnvxlrY43shx~W&U};Z7;CC}{!k&52 zRvg){fh^Fl!1D94-*IFfPu_A7CI-R(ar45t>k9`rSv+%geIU2t{OEE^R| zGT>;8%)rlCA*+IHB)7|c9>X)5Jem_H(=DbS4rC6P)}XndRfH2~GOyST$`*BuEpkJj zar{5PV7Dl2D!6|RUU_U#I1$M6dTTlALl3)rBY7eUZGa*zzqA%p>x%#0WU36U<={(w zPiO~DqEJQ&^ZQ2h&gkN-jjU#QvW2U=!dgpXVaQzw@x-PrUIP$9U4=urzz>Ep?ytxL zBms)Sa%pCEkQz&BO+0RfnAAA{`L2QAUf8jj29N8f^A$5At_dZ+62tM#?#(tgkoFM+ zyAWuQt{TYr&yp-<6!p0t{EOS7@uIePyGdJ2k;-e-3UO*dRgYW63!O8wgD#( zgDMR$XVybwOVfjudsdiT*-a(`cv2|XeK_q{&Lx>tUY;C==(A>&*a~Sgj$bJG%Vq@Sf?9EG%Rm~7xeADXlfKei zQH3xST#o5g`4HRw=BF9M=kat&n1gPqd;@S1LVDH~hnZ-RL5%k>tkZhsp-_;39joCS zixz=wy`SU&i+P%XKz(qfKUf0Rbqs`J3EQ2)%4~SW%~5jf=!X><42*P^3k4ge3xm!01?U&fSr~$q@PT z@8AbR1mTK97GLqSn)oLcjp}{TzOiLgWrM|44(Lv&WQOT$ZB=nv1{Y)b;+uRW+{Y~u zN)G`LV`sEp=;x%KvwEK^whmeUkq{Ca%Jp~Tdi-S~VxU1G9PPPQ%8_Ej#Na~77oCz1a2N4sfrP@E^Y0`0cX$!9)nvgnt!dxWes?q zeEUYl*-s3}Nm4TwbixAAC&-s!GL=pGX9G_GYbArHJZeTg7f5MB5bwOrz0_a7rbu6f z$ajhWUoE?3*yS@q?BkkF+-0VyBwfN>0{<`*>86<9px<)WPMVfu z50!ILQ{@+0#`P-G`JoX7#dk6Ee3NocDSw0So`H`u^IAvPaanAGE^q555sDUjerS0V zGv}wFY)Ld^xdL)BUYg}93gx4e~q}bf!F*-|^ z%DE&^3KlV)k;=AQ*N#{+5iK(&AwY9TqKYX6`w~Sej?GUBMKc}R*i}kVB9K@U;s9K3 zM5?+NCeG`RL=9nNGDl`H)(155!yb4KcpY z?v^m?lxJt4e*04VVjd9v<(zk-EUE6I1v=WEq>AouYJw+=!7rX#vo%;CU-ctmp{zh0 z7zl$!w@`n;mJ@uPQ48g68BPH` z+s5g@Z^X232n`U7LDTKe=1t2gDp?nU1)P~2sVYZFKX$UT4s5MEcx44>1g!{6)FvRNL`)SfXa74QeJc4A5 z*WPJ$y(5i$Q*k+dO*DO)~5(5=LedeUrB58jK{zBe^{(0?*5N@0CIWB@yf+fgI>a@Iw^M z6qHs7GnJ{ zg87OLj#D?`FX8J)s%_GQO|`HN14k-$5GQSjpJZhzX%9QNFs$A^fTz{Wnu8oXjDqoO z|K^7vDmIT#q=88mHwQagZ(1DCiKgXjPlAl4SpD<6V9BMmSuHE&nmjXhOtZ5FXlq~_ zxB+BDPH%L(3Kv#MEusy~5ONt6_1GwXhj}~lcZP#OhJzZLTh+fVQ)$4&Bnw4<}0v8BMAq zvQkg9Y7=rh{)H?;g($U8O@mHC%Bd}1^D+YftX4j<@m7<0E^UNSF@m|LMVnIEnMyIq z>d;+Abp~M6C19PsrB0&#j}j{vo3D0?)s!%G(h!|uwYLG1pBJ4|`KbMXd}30B9E!>~ zDECj2j{i6@O~cRwlzddz0eQFbB^Ol0uS$R!GsVU}oFww!TP%#}{*Y-5rU|~$b-1 z0WL219hYfeTsMnxWtnkthsE`A6Ia$37xz?LAGvWI^~EI`E{riEb&WOGo>AYSMU5$r zIy^5*LODjT$O1dWz5^f7=1Wn=|-Q| zQHv7-8p(Ej(jHnHkjVNS(R0?4E?Sc?(zYhIW@)-DhS~loU)x4{INuH|uAgcC0wA~V zEPZ_v?(e#*A4lUnAUz%!V|fbPdIwxY(3EvCGj|9)F_{W42(o^IFm_^L;SL{R^lke= z+`~_imBOBel_H%Q1W!X1yo#5v#qkogQ!ioE@n9D3Hdm6YLS{3JXt*eGs39$X(lY3M z9HL;Z0-cCJA#oN;!z)lt5by>uLspInW1W5$f7w*bnH@#drY2^Jves8~=>sKAI01n= zO1z^EKxqLBSID})dAk`(V_RwKVH0Zs?^{<{X6!F;b4+jZZBe zBw>I}sD=3OE(bb6=#}c%gdpf6Gr0s!do*VFCcGM9c_T>2#RFsPu>gQAo?YgXkyfBQ zDhZR(p*h?G@)&_}OTUS^QY!`YYd(qDsihBZHI9K8-Tx8~PBC10-Cb9r z^lWrN$`?s=ieSULa$#jf^4_fpvo-KujgFzto|!)DE1a(3qL?MhpbzmMO2DMdW04lZ z6CgTmVeuGa9w|17i^-Y#8Yqb00nSg2xUj&xEO2KtD#-0M;&$x%&JaD))41_CV315P zEe^rq#5xLan4u6rkz7_>&nWy!R#ky&iiTO#Kg~nfePm;0qEGXr!4=d=@PcvZygb%T zpO`XJD9^LUOj4y}TeEc$M_Xzo$H2;7l8*6%)zZD0#&vhQREcYI?v#2krQo;-5}{QK zd!_Mv@R873s)8#lxaaq$M)8@*e<7fK{wKsa=&=Ff-$}~^@%x4EXZ19Vm(z$9YH-GJ zWsFwo=lH*n0gDv0l~HMEhk-$X5Fl0yg1-)g+^vHfN;O+<|5R-c1Ij!gP>3g50t$p& zTm2LWk86kkdK#!@G~)@H{nZhGG55?$l3^LhTuN7_4F=Q#>4TwkX_wNKPzofGP`dU3 zVc>!kgM&`K(uLnAUHYlgg~yhzbbvwx%V|4lpcTSCc!FCFug4RJwp3m#zS!(xn@@bS(*$E`|$B7k7A{!*tQmba0e( zA!t~-@||^1qUBWLR0ObeoyD52iysKP&YOW}HjY0_HeKW;cCpafA0#(9U57oB3O&5a zAwsQBsB~?#bWwhecaghfx1?N4Iiiz~-yLAI*J4R+!C)u|W9U??NUKI=l49Y#-0D{{ zndHuG{PoBJ1qzOlA=^=<@nGq)xa!gso$>90rU;Wbn{@Gg40Zp((j|OY>54O0y7bc0 zwXLC)n>?AWrAy>0UC4&gm4{fm^n%j04Oi(R^|fAI4lfCCsAjQsuuOJ(Vh!YMlt55S zsizy30NfXe=+5?zluLdY@B$+l#mth2oF*`FyMF=LK>0Tl36S1R{4G6bczFB*rez-5Qt$<)ZYr2%7!_kg0yq z+K1l-yryot`uokERBxO+)oB|yL)uoTt>d7QU?N#4u05FAaOK7G~$%Q)*t0)6g$kkYFFn7BY-Bj2mpfiO5K>Y5H?Sv*=bs$ zEPdBZTSh5uJzIJL7?H4Qy-*G^T7sHMC@ zG~0Z}&X<9MCl9YP|uT4By3?!zIm{s9B9r;n+UhtB5ggmYsKzN1zf#pfd z2!A>&k17z=vfM0x3uwmvaX7*Joy?<-3b&%|IHqyU%(XzMjXwuex>t)7w=>9ic2H{< z3RI*#$S+tEj2RFPBww#7sD3%M<(=fnzK~c!57EerEj8dsEJc~NkrZM!1|bQfVmo8l zQxs(!+SCqU|?^Ex7=XhN6xwH)XJ&X+h-%MAte5LP0SIc z;>@4E=~PeFzG4pgBoY8DYr#u+iirZkcx9aMT@as`3dCPaM?9le-DSqCZ3C)Rg08_a z%c3Bq17$9#SKkd16v2j*21dE!i(+aQkU5)!=J*_IcWc!`j26Yd83aQZ=uz&B*NnJ(~ka*C-l639Ou)qh`4 z{ENC0Ep$5J6$>XEg;1ulzG_I^Qropjnw?n2XuCAV$+Tp>O1nCx3=z(uA7f4>FBUwU zuJKp=Y~DPOkRHNN!*r&IOZdb2x*L9!Bb;9jOgg?=XNnoj_5_ zIYTQaA9q9VovoDDT?HQhG?K+0PGVZ?Ywg#zP1;7OulL}DEpYXsiCmomp~ib3cFZP) zU%B7Geu!pS=MlO(fO2mA=9D>lV0R03b+L4V!5A}mWJKR0>`=I`drN0~u$`7$<2T{} zG5euGY0Fa%Tfpyv1D%Xtu+<{7M(Nk$y=Vs_R#k(Zi!H0blC#_R!1jRZK=6LVSW~J? zE(2+uPD2yY-wu}j<0n8G4w|<8`q4K(L?>6U!)`p}#9Aelm$7)BryQbG0t21CQC%YvKm1hQ~s24)1}uEIi%MN^*&-b3)rNFMCR`kAtp~) zU?BKthD}aqsT9bF(5VnL@v%~n?jqZnL>G@EsP^J*RM&_5-O{kOL{6J8YMG{R0tYRo ztMBn*6dGTg=-GqM(BLr#jY-ao;7s-DZ2jk%qU_n<$WILCh|tDz2&OxR>Xng$oyq{3wa1B)|Lk9$iEjfom1aKGa* zw&Us|Bx()T(sk1%V%!3b8c6P_$AsBANe=`@$zSj3aInZq-ThMhG%#hXeqw!qC(viC zj;GB4?A;r{#O@zZ2ltyQQDJLzLAE{01_OFvHY2PFGHc=g0`S7checPS+(wgPG}!g= z!hx`87x^j;{gzK$O91e;FF>*UKuI)h&GBD;j;CHce~%IZG-0(hWb%c%7nFf#3i`3=z;}%DumKh1m>EH z2#%r5ZiUdJu~|}karKFgOr=Tg?rbi-vcglHK~}+R!M`VYv{_I^C|o1MTug8!;qOSJ zv|L8pvlz;5-WiAZ`oplPkOfXv%q3!CxebS1Kp{L_M>kh-GhCosluzK!U}Righm04# z9V8kqbK!j$MjxOHAxu3-5_q&-H<3&)CD&P4VJk}DKMh(SXje)67A|$B%+#j}jtNT( z1gn~hZhiTJTNIQqU}5Wuk*ifW9Yk8rFb-|(m5BZ1Usn>2FS^!#InellW-ebc@7-ze~GTCnp$j}vPXHP z1+Igma+we;hHB)fVG*mU?4(O{Ry<^AB{(A5l0O_s#eI40{tJAAu7~kPXdt6uaDV8^ zQ>oqN!^oiR{CO2(Vm#(r&a_sZ3T%521Pt8!oso>=tV(5^$fh*z{!j8*Y6-e4V5>=w zw)`QlH9tdRsF;%6gP=GI*a2OKEExF1I5Ku1vCHnBBB;~j2Y@7hCB<0*kWOER4a)ZF zb55Mm`06ic!Kk(g{z)Ng#8q6;T!R2e%dBPdV^21+z(=Bv^+t+ccwx;?z|_ZxaTw^m z?~r8S2phB`b8u&<#x{l!2Jpy@iA}$uSGZ~8{jViedKZ$@i-BPl8KYd(!Rj~cml^nh}Q~I%}Ee_0YX>K#3NHJrt7t*2GhW`mlHg? z{!Tm;0{MZKxq#dR&MP@ooM_5le1^!qF;h4*aD)=E9{q?@gT5h!W~q-`3-FfrjdykD z89G+z8GecF9Pqn?0}t7z*9qj@^VKG=f4UJ(BYYv&uQ)|bzT5p=33}Sij?b`Q<`Iv# z&_gHqIs}7G$4?Qne1Nu|kQr68Nt?%NuuV4wiL&^cW=wFaGp|P{6K{yutoIcLS~;R# z*_N33M|6zBc8R@LM9ZEq(~e_ZJdDC<2O@=dvcZ@-`X?galyzDrhvSd;^dXsSNL7?? z7CFZK(s>d$+^Mkq3NtE$`@vCKO+%i)82V5Yu2wQ2C~J*3fXIVviO(Y!U%oZ1&(6Dl zZANi{)=+^kUuuVfO43UDpw5Y`fe$fo=H4H>=Q@wN0y`d98ZOg0K>KX6W@RH1A{&8- z3A)$``EVolY1p)aZ@X2jVc)Cm@?gM6wtxF6r6R^QIeXq(V}XV8yU6n2C=q5o5Cxf? z9GqBx*y%x+zl|hAkwdUuk4$#YD@DqHmdg~3^C1R3o^~i8X{N_n?C82&-9oF~b#x+U z;Sm#+rTkQd@~<0{F{lJ5G(yb$q~gFf9__m00!=F9%O4ghv412%g0qt4e_^mUt^7vr zR=$avu*5;XXh?oOdp!sPAiK~?WVS!|2@G_nhKx-kRKNUeT`fwT_Get11R1il zYBFtQDI0GFH-9HTZK1m)WlZxrnXYwl#-|^8Q%q8(*(l5TL-gltN|2xK4<3J2hO1Im zN>07)8Gpv)QGt_{S4IC|l5}{ME{6j{Lqi4+4(P8lfEeJw%>s-=DQis- zV1TwBEW`xl!l5QoMMVRNV#0$lEUZEsGSZ}OTjYWdgISS?9ga3SNdE6yzMs@-WXuV zw}9BW;BDjd$hhlqaY;lW5Q_`Ux2@K#g!UtWMAah%0zvNZn; zXN0tcNa@}KjX!p2{CR#^{4UZXkNiQ8BFxW>&+(U%X|x_W-p_*(!pZL@JR8f+eg zZmhQxJxOJco(gfX9ugEVl%utX3de<_o~1&0R-0Ilr5w#02O!$SdQhM+u^t#06RWj} z^@#A`_=pJaCpPSG`YbbgHbB7PHe_~b?{Y!m?ZQJ-C@e%wXb3!&D?ii(#Y0Vac#XZS zbF5?korj|TKdjMNj(u34>GVu1E6u1VTjvihspr;aCe!rdblpvo(kZTzQfw`4rm%^t zt}5A8LH*Js)s{3$Df#LCkd(5PN{YHVu`$8-`w3R}Xj_#YD*C8~C5@i5&siy%`YTH* z3)b4NEPja-&-Um|x+<ZFF8Yo@!jOk zakM6P=fv7bT=UlZNy^SP zzZ=k7t$h7n`H8G2#30E1L+wojG3%Jl7)g3MIvt&kPUbA`qjP@p&t{DA>8^FMXMFC1 z)j9o8KW3SB%GM371SJs=n~hq6+Gl>xY;s<$jC<7>uGGCm{YGuERu4K%<&K>~qo&`$va~^4odO(cX6) z@96;vfCDOCdreBF&xKqaS2&^n+KiRfe+|0Vl=iPV|JrM>!R23j?X}l>zSfTat1NLY zaqe7FclUqIcBB7VODbPumrP_L!!S19jEsNnwFoi9@x}LAYZw+PI95+4PX4vm?!We0 z&)05sUVAP6YwfkyVr0lcPX22bECx{5(ds1sn!jfMHTjzVYp*f?+P@}oPVq<%D`_*Z zEbQz>!p>-u$9KtNVq$v=?JrtI`-`Tuzi5s27Z)K~MEj-T8(*RJ^mhJt=|`E(Ag&FEzk zHzjUL+?4bK%{U|E9w_1wcM*5ATk=EOQa779^GVlAUE`O*$eJkK*~!?f9O@?d+LRfTRb0nn+u&F z0mrC7aTWwl`N*Lhy5<)1{6zJ!LPZU!((ik*_XjAsahyR4G7s&RC@-HSZ(P~1(}!o5 zs$q0M(qZl@&oL{~)%KL#{Ku*dAK-G`^O*vD;!6a1XG2#2v`0)P0I094#CYU2Uk6q# z!NM5{ftc6{;dj*Ow4M7+PzGHyXgyBTn+aeg*!)C8Af=6F)J9wk0Z=YC%bU*9)PCWQ zvtHBnasfFrvj?JQ0qQLd1_Edd;Brl`yq=y~ratK8?HSSY1{sHJj_V0IO7%ssg-qX0 zfe=K)dq)@LJ`icMIXci3&&9c^S`4hMe|cG$SOeMcE4S$f;`%tJ&7O7t`3MEYgwt_s z)Q4O7@P42@A}5Jl?em&u?j?hGS}V!_D|P4s1QJ}sNy^Zv#22UnLyA9Nrry4qKp{_a zJ^*>aJdT=XCG&!%ZZYKiUPLnkr4)B*Bnr_n$(?kynZl6p(^T|6JhuW3R?Fs8 zqS=hKA5@~*iS@BNYiLbE+Mfau3;Ml3zs}a)uMz1ir5=vI!MP<}cz&RlB2ziAY19!b z6msrBh>Dd-j~%m0>GhP+eO6k7!Knv%Px|5J!0qVJ;Ldr@VCMBQem_FDqzm+ZAq)G} zKV5olOo#x!dt);RT;l?fBQfxmHxYtdHT(NPUNNTp(rRTxdrZ2GIFYH29%E?BCSG7Qn4}4W$Db085_t0+ z6Zj#BpAap2@+6FZS`QruPb{e$c-Ih)EeC8Zr>-%_C{-lFsTvcO_q)DdDz z?lsx9V&lk{pFftidv&OM+7^R1_<jq*p&*%`3O$e$T5KN^S-=Mv!g zLks24-o_u1tMZpx`LVR}Cp^v{V;ukBU-)UDav#eU{{rn%|BR1-1n^IReg()sS}N-Y zvT2I=)6Gvam~Vm7Ib8jN;wSmYaV>;|eG-3|NjE1d!k;9>ur~6iExqy0{zCltkCtL^jjW&9DC_VYgV01O$6C5>Uss#xO3`<<7z*WY5ItSpC3t(+MxE+{l-W2GdQIB$&|h?T0kTPeD%YP z>qm7dev&E6M+hcCFP(F^#z7{9;~oCEX?c zK0SFATb9m90Q^Sa=+faPs6S9EMJ55(*@adns)dAT(V(wHtT_E5xH zaGTa0kKNQO*lqRMvB-t~FX?5#K`aOoGlB_0m4TJTiOMMmqtZ%A4#@j58b^R!=zUIY z$%UJEf6e*y)rl&CP~9n3)aBR>a+M}c+&o=*t7@f0Yx)4hdZn8xbzQ)K=5tI13SC<- z+E!0(1UuBOF}ZaBldyUdIAA*MH94S@q9uc8qnVxCBY$>GSMkJfYG`NF3D2)&zLF$^ zU7~=f&6u*6HZ~-sZ=?wlI##ru82n%pNm-V#xcxOlaxRg(o@#d5X0`8$T5G_KDDOtxxlf($D$2bHba`ITZ955msw1peZcL~50zjsLF2 zbsB;<|Ar`rp!5w!t|fvn6=r!70D@v2MMbLYW`*b|GS|cBZL4!8ij1kVVrGDYOhr$S z$#@k$AS@MOERzIEB$(LwPuk~HfE3-ZjS#eXw9VAbU$0H5j}?#98AA8QGGZ_REE3T^ z#B!=N)&+5^er)l%pF3<~ItE3}Dt<=YdbQ${oECP<^TVaaz?H*UxLLpbiLY1SNuVLa z6Mu%B<19Tu=cR(6Kq^LlDeFQmJxw_Gjaf=zzhnyYZwTX{fHdtAEwGyAsHrZM-aDDf zt4V_dofo^g#`M(TAJZTYL2La@RG_X>)D}eGb{TG%$~GL{UtHc~&ajaG&q*xdX-2^g zQM1$zQHO@qhm0343*T}QRY8Q)Yc8ZEft@>u9Qt3^Zw3gsf8AIy?5B-;rmfx3koAbs z+NuCH5)nnIx19@~7LV!+M$d3^J=sOs)&U@)bQ+sb?tr*C#Ady$U`t-AiZ$hcdh-2s zxxe~>d`AkcbaAR%(M|l-Gba{)B%fsi{U0Ga_VMeJTt(;|y0HrzX2mj$I{+9d!siC!kmpa)@)G$D8$tL{2i4SZJy&~w<7$5~wJ=}}&p zD@f43n7S51+{DG_an|?NZ`U|;#iaX2;yysIw})65y$p!RPhwkR1!^Rg6ik|bUelQq zGQ7fdB=&22*i;{|np(~onh0`&S_nsNVyll~9r{uD6$eOH2(Sc4dOV3c$MK&3dPWfy z=tVRt$+F~?!C(j9TE1QSez zRxgKnO2Pag{DwH@i4tFrg_pQEGVux>G7^QSJi**g+skqBbUU>9} z1*087f;-nEeQ=8kGqIC#b`0>Z7B)+R-5Gvt-g3;XcI2)M@mc+7 zv<_alvlg}zY(M$WF_SVmFs^{ezf9?40F#Ol`|rev%mh5O9TlJ*JZ{SSCBlbP3p2DY zGy4!KfCl42ewtkCxL+X-(#K^2osk#Xh8@5`B023-IgOF9MRYZw*W2`H- zT9dFm$b;u*vfGg#&TY*I4f{C?G6m7lPJUhsQb9&5iUO7P8{e`I`wnBEEO~h?Y;*<} z@fCW-C6=#<9I0~v$dobj@O60>dlI4ZGR^VvCVg+FS49$Rm79~tT91Feg1C~~qRRU> zXvbjUlbxP&#AYf1)Qlu6VIyU{eL8_URLS%u+*lb%ml#-z+McKN-!o~e5=FOjL<2z; z(Z~fSH#o53Q2rIsiiA(75Q)vfCMgPW2l_JCb}$2OE|KZY(|Lig=BZdpUFss`9JV0C ztO7J<4X7^B-Kv6i6H^H4MOr;3a|xY4J1Ixri8o$tFSt7`LOwY?gkstV6d3`y;;!_;Ypq* zfw6G`aDOEeuGLL?V(|R;@5Ti$ToQvSc!GYNY2Hm>|I8i6uevPtCnuC{_3~j!&l z&qje1U_=ZzAtE}*AmxCGLAhb+5`!ag1ZgMx{w^K4CWr-4e2l55UD2x!=K(yn1JWS_ zMD{;~XUhdbJISE|eo17Uf)1p>>eCvBU#oshOGSeeFK}2yJ;=opRwrw9Q|?{(ykfe| zZYgKk7w@kLiAmC%0mt$3oAYlhd{Sx4W$H{c2UE^cub7soVyWo?0Vy;uMMUfq&x%_L z5i2TIbdP;h^Y)x~3Z=7PXVNkahEWFG@CACnpH;K;p{j~>vG%>o*k)ks8FIE5qMJao zQmM-^*Sa5XoB~G{hKVpf1LPsu&bOl5BFZzcwA^d6K|Yn}dm~01PIpUeJaP!VjIx!f zVtv0){RTu2?H-zyijcY3NF+~4&uG)Yz)`0gQO`#0x1HRyLWEl=FIz|&oT~xno zmE?hn8ls6OzcB7ce%7!echY}A(#NuMDG&q-Ji<#Toj3Uv3P`mySlF53W0{(E3gSa5 zTq^!-j&)sBoJDgY1-nwZ!4{yIa73B-67A30+uv*^WRVL<152JJFyL5DeIuq;Y z-J25N2VIo2LeG>-bnmO9y9-_Z_?|O;Zp5z>CZL zWJ8DBb9L!-oK$m9b_((=4yzS`AYrmP_fA7QB7x1Y3Ut=vBSdUwNKH|NMha5HG(6Fd zQmaJxPa<_W0X6^F27(s?+?GEU+Qw&E=ny!D-_kPZPHhv~iSsl{CeyjZ#3{I24^`N3 zHrAPA5w1$n-@^&$w%2Q4iPqOX9QsFZ5Tpc*(JZH(~qnKHR%S=FSg_KhZfwcbP9#0>z6(^xnj>Uu0&V42k~yd(&sVA z^humdG?h~|qxnWhP@Ymp>I8%g;sY%{`y#G0C;C3Uu0<$-2kvT*?oS>V zF)@N}h%{_UiHlX~_a;r=jZFWU7^&DgZMQ^pfN{L|jP3B^IYEy?^D7qCn5&&bu1joRz9*85@D(xm6aR@aD71v=2PyxXxGJyxHpi+Kbu$Z#y@(OG4 zg}5SLN$eJ2dQK{H?(YD5hHICd(wWD2m%+u6t$>U7d>SGw+PE(fkq=YGi2XyN*7IDL z^&OmIeb|~K34hrTOvarh@NeF-GG5#6_BqC^c<&ztw1j0NBQb8|@Lp&R z7ac=kCW>;vr)9UglMC2BcH24Sg(pgV3lFka_GFWOBC-k6PLpK8XkDWQ$gcc2n6dQ^ zNx`4yyxB}cIPN$jr>-1uykk(DSdD5B#}oo2YW|6M*Zk*;VkW(W`f7&DOrH(S zPAb3E%%R`{M;rcq5~wLDs?XZzpeixOb$DGklr^!eyV>-HygGN$#^6erx#|;5;RN*$ zX#6YQRbllXTBHF(KHI=j0UTR17@m4eL`PmPsg~s+HPpw6KAPiCUyEf2Y zZ3v?0%qHpNMQO5SF;%8el9?k7=Mmf(=y@e4JchmJIQmu6swzUHmm5*mY-xMM#kHB6 zV-Up|8p|}OH4^pBCd_!;Ub9b&M=5hy3Zeu_0Q%-LNo|HoEM=#DJOcx15s#5tX2{ss zxxmfBgM0LJ6C{{s5#6ckCTVluJNuC#v-qLgYnoY1oK{ZB%$r=>`x#z{gift|^(C3x zk+0oiwhd$<&{Jo$6*ns6#yxvNgtIvm`I(zUcfL~sy@k9g&*nM~ErMi`wE`nbcHf0c zXvD35G%`PN_cdBrVSTwMZ)rE9NQ)~-sBFrcf-on8$YKCdb@{j6-!HWA|Di(*k&YBB zJX9>!U|xKXLDj^}xLO;jT|tVnMKSstkYIy|yK)Y^R#M&I>-vB57x*=)My&i3upvw- zv;gHR2&M)qj7DQjbrk(kY{RHeawWe_FCB!VHMsB*xE`_gO$j^EIKq5{NfH0(#LG2+ z-nQbmaC83fe3Xm`23H-Khp5TJ%IMb()=?NIC1q^#W@*Xqzyib|4@$gl)y2s5%|muD zpnL$w4vx5ar{OAJ-&6B{qY4}It}%MBTgftNoq!FIDnjqWRL)ulYBIv%f^11lfXH0C z`jxCo=VeSu#IE4~FLxvNRdTp`erceO!4Z4WF5TkC3I33%&SwH6oeR4=5&`3qpcTYM z$OgU4oKOdJi!bTuq*!oH#`_l(=sbS3c| z=0y>NUXv46V(_!KMiRY>LP=9^aE~^dD6ME|`OzT=6|>F`CKJv7=JNQH z*IF`-0j)Ev;z%NDd}#&Eq;)aC&uN4 z$LX{(j}8Xv`~gnT>VL4YARjtRag%h!cQn;TjoL!ug_3NG)}0c>_kY9_@3(KQrIoS*iGw%fcantetBgTe;3Hpc z3XXrL)dFfFz4+S5Y8q_`w+KZ#wdlfDWGuiVo1=#_LMyrw+mobpFfa@%3FY#vs#u4d z#0vpb|L&8-ca`vq_%#i^RjIb_!Q$4kseHE_1rm+|Zp}Wz16;=)i-vC~v%dB0A++-n z8$`@VWK?$SH0&mE&>0NrR zeMbx(;JkclY?!HuCbOUemm29s09ex8_QwB3cAES<49nKR3XQ;ChhdY2XDFZrerS*F zo^?sT_*| z4zZz~XiXl7pgf>?quCN^Uu(p#z?U7!o{HuuP(AS^LsqvqzRf9VOI#oFgcRXCsHU#} zLfV6UGPvnjUr1hA0JkxZM7s8H!WWgaV-p+bn_?IU>ga(s%ZC>622(A0SPp@LH-uh^>8K^gY7$0^d78*J8C>claWiBy%!uX=yioAj8MZF(}JaK2zf zjW$G{W5s=Wth2MjgyG%0Hs;IE-XsA_cwIVIKTm+QvoBfHL;Zq&>~{3kBIG~{Yi{7~ z=)h6Q4U{2j+tq6`CACw$0K3Sut>WO3@TUCjf0+gz)cj|f0nnU;6_Y8M7cj1Om%?ZuXi@IL`V46U$96D{|yV?yJk16bgdU?FrUD*K*SU@8v9g2eCF37ZEq4F{X=w z0PCm$uDr&?364;d7;Zl_|GpyDAP-ypgg9;h&QhLzX|MqB7i=sJg+xqNDw7Z|T3A1( zQNzE?t0llsoA;ME$f-&UnpODj^ab=Gxy#Mw#xY!4F9uplBsP0HmOa#f8ae;qkguzEHK&JM!d3;(6Mcr=5kM%?L zvFWK#mI8>&aQy)n9f#X#>`i%0g3Fz}tVl~nacKEsU?97vV z1~W}f+Rfkq%E7B?)?UikL4Pm;AiNM!*M(X_PXHfJ$WXaslL^YvXe&h4@Td0HWNVo zV2dPwlO--bSD^8cv-`8v!4!je7}xtM1omyx<3TxlJ@K9Dg}xgR_@9)4IL8MY={go= z57!i$(cYsOf{xNEcix=@oM-0mJ~~wDc~4_hmz`p<7I;-=6%dn82eGeRdvCM)2xuiV zFR5)hRpQ3v)$}N;g>{V=8lmbYV6HnsJ4%Op|D_jl|C@&`O z`r{kAagGkPoK=k&b(PsvJworCNYqA;s}rZ{_$1J3#Zs6$_rcF^5|Yrqh6a}LxNkuL zBmf7lWD@g9?255*6wKPT?%=;eq8e4Ul-b^~n*#8`P}RBw&PI^_U@<3et7GjXvZ{lr zJx@-|R*jK{!N=nf3zud-ZC8kGDUo~EJzvd>8Zrz( zDzCUFjXKfp*l(F`s#FzwQ~-WD6Y+zohSAeN10b9Z9Ux+Z8-*V8>*denBWXwn&_;)m z(C|P+{F{YwMYzl)4*b+udmuEQmHFCwr1yd0wOSL7u20vB(p3lSh-mxq0otQyY5U4V z+)}fUjA$2rMXYIE8#SR%*2%0rgy#yYF5=3i#^ewIQ~2JdS%h9jwU)zae)TA>JmR{9 z+_iyRrz3lgaB+e<`8!hcXIpt#8(%b_T+31Zdngn}fr^2sk2rCHXkVnUG1WjNPSb;& zQ3xNkM>sCRB10{7$ zOr5AVnWiZ9{)I>MZ>~Ac-3%NwCULK!lvFG9XF`eyw3n_rJgQeP5r#BC)h7(lR5%g= z!Bl}sas|fjM%b{`C+>2$2zd;K>bhvvDLK$D}H_2YYc>1}1`N=C!2oX3x%{MTUU%4>|u8?vXcQxT&X6Tw^;lH2LYakmDL-@H^tt$PJYXK!9Kv5^3}^MJ@d}#ulls;splJpU}9EOhuF+G zO@lQqq#%sBZzmems`s;}>wm3|F<*PNMU^<64+~p<;YJa{kkrJj_@6U+C*=Gw`aHR4 zPjU-WN}R@Q*mYM{n}vS8bc3=CZs>C*KE;m_yBt_qLLF0=hFDqpKhA>I!F5pqZvS@p zD-P3ua@@C5EVnUR>HsM<`^P1u3YGeRxOU)tegB0iPjJkH?@b|G&pUAwPbH&NFXn@A zS#p1s-1W1OdaJQ2Uyk-E3g$4Wm*Pd0U#-x_DOACcwaVj}W1&ieyd)uN=<+%=1P1&a#1%JP(Bg^@@l~f$QJ9KnzcT zg%Nv~L0#P5+AgApJTleqC%#Wxk-d3JeGrwdl=E(3JR79)`XG+EL3tmdsm5?!nAl1r z9Jzp`Tv4;Us0meWrwPeEYe9OHGn5(Ff|RB(fwPmg4B3J>!6idO4fr7GXQQxi7|+9* z=bQ7><{-#6)j*Dw>eCm(&GO?o2Hqj6)$1<*^_qd)ZQ1B;H2sGkGNs! z?~YY3{7R3L@O_J1Kw=wHK}};V7I_K43I|>U^%2$CRT4D6VJK1@Ykj|gHZD09hI-F2ssjm7EA4V*#iN6eCc82IYBkxeT-*NMOQBLvMQh zN`Z(?Gly6bY!HHpCoGc0XE{X5IvzN@70y_35Z62*zvz9C(xG((665IeB>|6#&6@aQ zGjodhq*Y36?~fGAIa9X4S|%faM3FjnEujRe93B~sOv_E?DNG62xJo3vT~A4X`ZPnX zryV=hl0SdL_+&lTZW*oWhxW3}xXy{htKR zEG>He6(}KJK>Kxm!}An>hlm~(i`_9uU-DFSzb{8b4431{<-%nQt7<9)Z<)gYznLOc z(5(PjxNpRzSLVKu#bVHTl{@WmMNJf?D4}{?yZTr~vv5%RVnISAmoz+W6 zuWeIGDKpaqwr$(Y?3|;D#bUAe|G#b9W@e@cA%v)6u~;nr|83j0y?VyXOcjg8|F&&2 zBTA{&vkC$M=pdK^Q4RwFp!BQv|F&)0%#JLs4u`|xU@#aAhLloDnVDHE7K_FIzir#L zS1--Xip65F`2T-`o~ZI<8>KaZ32GhA8DylYk|u2uU@)OrPo&I>Ay!PQ%p&&ylvbI$n1B-Loklkc7 zU&s4E3wz^Gc*fVb$zWC3%={&OoF(W19-N=NTn?U3o-8+pH^`Ic#(BzO;9V_6F|!41S%`J6zksAlWcxR$RY zHBwD}Yi#_rD~B|(=Go{Fc*~yXn?|g`zl{+Pph9$w2#RRY&>16KNMeh=pS~Q-Si5%G zQ6quK(;J-KWjG`LDidRoT_Jw^tM zMKJ!sK!7VVhncG;uC%x+<3eXYdI9OBmA72p$2<&sxz5nFv}egcOARe}dfW))My?u* zHQv?$%9<;Gx)lf|;Q2Ja?hWpEXr$*5ZBta4RJ;iwDxN_PAYW>R73t%DNm7Rk91RS@ zh_HAH>)%^l<>%j_pot>}pk~B2nbxa`F^f^9(dDlfPPN9?e?AVO0=bwM-Y_nWT^2p9 z|3Zn;D%qgDmT#Ghhb2h$K22*|h9uS?VIe3QVeu+B?e>SiDEglOVGyBk2VPY+kp((6 z8m7c8KE~|j!6!hUgw`3dleb$Zvr!6BDRQMuOYtt{#!`^(@*8-4$Qa3$oK39qXhsvh zE@p9|`R23CG_IIXtqpBAu3HcbmXo&1@IYCMyeEWf5+!GNH#q(NE66>whpa6qPS8!^ zb)H5k=2WbqCm!$BB-FQ}g+XUorQI&RIcf8w7#pn+U|Nf8l!T;sTef4u8ehiQmDUSx zL@q}12*0H69*%?b`G6JNFEiF# zImY%EM&0tjPDbO>Gt4zx^OJ>Qr3lUA%n6B;4AdgzX?*BN{gBW_wkoUD)!Y@6;FLNl z0V*^$3?-@EXvuEpRX(6w)%!D`wKMkWt49LUSPI*DE`eI4kR1doRAP)uvFp!kt5K$S zvwEeGc~)^Z;n@iLrzoNORCTbXx4~gX*;2GMK+8!qDmIVMv~_MYk#Q@S!^fmdUEZx+ zy=f_t^u&edvXwOL8xQ6e*V0Xk*OkDIUc)|3F{sdC0Qok8kf!9OWD26v62yT7K@bE%C>Q+z69M)B5EV$J z(LBa@kThR`R6oEYlgl3@5RXA1KB7br5)AV3!k%hKTmlq5o45tVjDiJ$%j7c@M|6?= zMNyxzETT)q&+==Naq*I zhoVP*{6hVkS3QIBi3?#C>_c^IA1mV0@uaELhBUsNPk3PP!{FiU|#vh6C19V4{aV zlcf({r%V_}*r%OclM zRpl!Y6ekG~%&&;@83hRtTqs{%l!qGGc{(50x`6M1_dES5ha@#lY~vz zUl{gKv`7zLIjpxP>m$i}s$y6b6tjut*+gPV9*P#qBa){YP?RDNr>F@OrN(qs8q*b- zd{$)`TzOt=?SmNr_s$Hn(PQ+S&Q@?J0v+>WVN28pd zmE*i8opQgW{?Oka_o4a9#b=M%YUxgO)$^ekB_4FY^F7njZlP^$ZjFE2H2Id}uI}hY zeOe8i9jRS=cir-1%y3#>JdCMwIu7@OmY{U{-3dvj^)_g`uHWagvEVys2|g6_SO2`c zXVyA)?v4J6v(+Tc`nx}^r@!y5_vNg8v|E2y*Lre(LpzCGIk~-gan9NYfOqsl(hsE| zU>zMmV=P#tdPtX-T$2Q;vOG3fu4uAENh1Q$d}F#?6Cu`1nvad?(ggC>&Z2fSLjwj4 zImo<&kKcfSfQuq#7@Xll9}0%ghJhj!A*wm=E~cg4;9-5xkgxT-wcWWx_0;(D#`4OX zDaQ9T6gd;tgW}hH+|SDSmb+?t;o7iTaC_w3+7*}vx2SU3tu4N}>W|Z@N4r+i%xU@S zmOJD8b=-XqogeL^951Atk6ClCCuhA_tH->3KP|`e(1piBreDTcgP%7mEtu!m?flxF zT*e)qUS~aZyE1clvvhOw!;o%mdgS(?m8ja|+IG`-LnZ7-gs8wn^gVYf>+eG7uasPcOlhHPjgNkNjvA_yQD3<`x| z9EV{LN0Kzv^#Kwtsw1!j5vLL0JHgx7VhhGMDc>I23lMDdMP!(9FAmQG8n%%N?o`RXe`+s?9Nw)Y`Ruv~t z=Uqjq(%7M7Y}len% z3(O3^n_q)|z>VhR$ac(T5Kf#Kwsi0=h(B&act=t^F!=r*Z^VMwOrOh+{MRnVfclfmATXHrl2J7$!f>hN&=I1Q>u}Bjf=Ptg_f5$G|FZ4ZSu+ zo+cE+W+R1dBhk1hE;ez;b&P4D5OuZ)v2-$(d?C&)qUTz2qk&`$|UH$WZdx7 zH28*tG-VbTtuJ^U-Jhn1d}{nw?pzTKLbIitO9c#x`TrrA{k2g_bh2= z3`r*cIivi=k}~zzpJ#)aV&QcPkrawh~vKOC8A~UyD9EfO+1Vw4$Hj%gs6C0&Cn3O{@EanP{_I(1kpOipApp_E`^p-WMno} zSWWvjfpF}z{izDaN#&JSj4q@;NKNsaDv;3oa3?oq^c;PiiIu^C&>SF%L(&)|prKzx zXB3ih6yy^m?bwhKSp|!YIG`JDet48r*aqI$`8_>YF@iMvjdXp{4VlW`0o)v*@Gtfd z5-1o0j!WhyC}S6qzGBc=4=GAc_xhWIj+$t*@*r#Lg5)M6mXHqWrrpyOg3Ozk)4rHG z+;T>kpH47oUD>JLf5-T(8ncs3-8QjPi)=*Mb=G@Qv>ou;)dq28cFU?OLh3(_PiJD( z;jM$DHwz;SbJhS7EqTWvv&X=y*qOU3O6w?wmTq!uWy)Y-TU^-KGX?WTeM zc4fW#I4YCCfb5p328}v00sow|U+6VbSL3BjvALp9QMAO`5fvJgYU8Wa=^sUL*^Acwa6pxs~J0 zBh3h>&t3->0tLtru(6KTr!4%vjEo@)k~T>)#Hss^`WizS*! zwnLv*zadh|_{s`S%O&8xA|(|iW^1)NekBo9h5&|%lS4+9A|;T((uyEvjuIns{(I)| zu%DO;wZmI`uTksEmEqwvLYQxBVUL>b{oAo1Z{MtWat{yRTPuF#7~Wke0fPHkn)k4h zxXI$!n3bBCIgMQj$;$E8e-cA5C2CU&9z%AP2!)8VJko+jhayj|Jf_5#G8_)5Y*Bf@ zds9l~_*ly#C@u3byvCxAxUrbrmZ1nf-mz2>5|H>RtRrkJFi*2a;SjZF#xmnR>4;74 zO!%WpZSy959)}5<941UqU5qSnifqt?z=gn0`11v6#Z-{l2FX?)x~yM>YZ3V?^N{r! zjx2`gAnXT(s1Rvz+yNanNr_x^MZ+t-?bl7^cLwC?1Oi}?*V%6f{9CL*WK3POSjUL@K zNeT8T7nNhZR&iF(*s*uEe3LLDPi8vk2Toc993nLLk+mg#G72wQ|BR;y>@2 zWEJ)Hc%nMi%~7w@mmSNK$9#DN6oTSX(SM4WE(3hjF;4{xVHu5U06rk!h##YmxF6K- zLsz$O+6FFknF7ffJ%|H3O;JOG5_Vq*8*^vw+hu5`1K@m2S)_#Vpn(n{6JhCvG2mb4 zeNj7715upqgpL5lkqZuUHn0o^tTq8U?yxXYpw3lw|1I)k0sLQ=Ou_1)VOhvB8~%O{ zjO-my;9JM?K0Wn(!?8mcwr#1MFKM?W|K6ItbO%Ss`n%6lGq;h1LnGf-zt*=t^)lgg zcpYAcS1RWM7X#)37lR92AmHFFp%YbA$*hTG(U!_$s?t66i&$g*`j)W9qU%y|btoGMAxU&STttg@LHKD<;~3VRadGO4`E0{A;n&*RC9S&lgeJEHPP3aBJ5>2H4AZBO*2}; zX0*IEb-ERHvFhR#z8}6S_?}AE1ds5=7vB)R9=@iL>9Z}%*L$yrF_kZtDl%LifPhM> zgv%18!YeJ-G7M*x%(lbIm+fbpZMJ_ZrLxV|%l5r&Ri!MVP+X%OFLkx(I=%;8$Jce# zb<}mNdF50}y(+4vkW3|AN6|Qz`NUqTG^4Vr=_p?N5@D!FMH7eDiZ2_AFJ_il9|l9J znTo<&Sw7Pj-uk~1rA#3_VwD_*BfPpcRnoAI!k^KR=@Nn^3A0=^s@(l~Shf7;ZDoxD#hT^j3fp68kWGm%UuC{;>UK?fFSpkz|A zPTT@pqR{8id7ilhL6C!+)FsLsJOKq>gAE`sGeaxl=KxbzE-nXTsNh-&ARs_PiA#wF zlg4Za5d;ETAW+HoeHC_Q(5sNXPnk-h84UC@Q-j9*AP@)yK_Ccv(8U)70=FV9W=;~MRJ8Z7i`(1et@5+1a z@NUD_;r&EndB3-^Jj?qmteWNho-FSz?^J6%%CL*JywltA8jmv>zGTb0#kXQjL;B&p zRifvGhLq+*(hu)eQ%yg-=M=Vg3xkDs6Z?H;zmu35vS(&?_RN0Q$=NJC*zY_*_6^T& zvENRxZ&&&LJ(oU zr?@!*JbR~hQ(@<961N&7?Dv}uWE0sp_B+o`ansp7_B#z6ix@Z%a5K2~8aN#|8@L#_ z7C08T_YiO%;9TI|bKq=nGq@SJ_Z7OD+)b_~_Z}qYBPXNFk$W$pGa>h0lPjU?ku#wa zl6yCytLZY(y{FLW$d%B&qtHDLnca#NGP@TxWOg-Vc7G$YOF`S|klFnUnH`O``yel9 zF^*_36GX_*x5zP4LXMGtA+zfNI4!MUD{-NVxDQgc!L&d*OFKF$!k!9ghWje7%pNs8AYwLmCJvbttU&8h3^ToqX=u+&-j+) z4Mk1nZ1ZSV9g2@NSyF4BuogIDfw5O8hT;pm$k)rnx1=Cw+VC}6G1J(sRt#w#O3xEuTvP%XDMvNE{f>c3_kR2ewhzub>fF&R_xRkhTD7mK?v-Fi~8Gfv! zG4byy7I1BBL)90zV6zA`hY}3~h*+1fTr>?U0~NT4v8!2hfDjwL0t-eI;4(l40YGRd z$s%etX>6up7>lS@mRY0tG0~(jEaI>vw3+2XUofYba~2^05e6(8^L@5vcu#YT`5s%B zrTL^Vx_YYfNwsyYe!MJ(6gge)x;t#EuPY@JQBzk{0% zxzTPqyLKbtLU?x07P3LOkuY(i*+RNP?|NZ*8$&=M_LTgN67CKqOF6D(&#C-etqPxVXHF=!Fy5;PURh+t^5| z-FrWI-n)rO(tEGfnz%G^>AmODd#5k&{d(`=^}_4D-#Yqe!#Y-%dA)az>+s z&pB+`dta@D-gOPVYZY{g*wDM{487|!q|eZMNvY^v!>Z^VyF{Y*@Qz>;y`M;>|OFCD#`bToRemyWlNUbd_=J9@{XcN%JnaeAn>7mwcWIr`CiNW-#{-l@K%$M}X# zU(&lKz1!IC#UbgvMi1#-Q<9pzTUH%w9qY-v*7oFey=Tmxyi=6-()$Mw#ZR8dOYdgs zolfv>%ev!JCrC+ow>0Jbg{Hjo_{_qTcS>5_K~GJ2x2}};(4Hyp_e}Y!@@`T~P4D3g zHN8`kn%*-tz29m&P4B1o@!qW9I=x?OahN37PVbk#XpE!YT`ko6hZ)srdZ*z< zy~j`!^-j{%J4V4~*3>&s549(WQ}5x-Ouggq(vyPs`n`wsd(YN>@7m(;y{!6sC&Bi8 z0n~E5HWx5nYidvg1H8>(zynx|3uMp`;)0vu%bDg(GtIP?)xxr^p%=XipC^VCv8DGI zQe^ZWR8l6-!wc!nOp^X3h9vz-tLYjq=`HM4GwE|#YgsccVXq29`p~{k?K&s;Jf4|O}^q4#gpO{xI%Q`{p9Pf#qbHt`Ec_@y8`h14;h5CG+ z+0tuYsL!Y;YmA1Jk}(=m%j1Jn|DuOAi_!0~exc^-$6M>U?z%i|t3S~*!w1W3YlaV{ z`LH}`%d*CRV4HEP-F|GIO~c3LIdRL`IQH{wB0Faf**75EaO`h^vw?Ggn}L(7$(@k< z8?~Lx4cg8{ZKvYriPT)EVRPh3P=Vwo2L=wVK^1@im1x*7gSA|f-iKGaTHcqX_qk@R zulEatMjHC?-qRdO8v0yGT!!9tZ|D?hxn(h=NJy-rw^mzw!^eiXVw&mbudK@Ki1ekm za`m!OD{_2_$fU;?o4lrF42>=3vDpn`BY)U59ZhWVHGJ%=#%7+pX=Brx#)d*_AMfc( zNqL%eCN)gOrPt80dFqQ({@&0j!g5z@#gHN?-=gxVK0mFXd?nMLpKEi29va)}YYZP6 z8;#+cQD62m^h>YhVGC&tPQ965l&U^oELO9szET<=&nM02i#6%@B`!-3y@fvy= zlTV9HYSP%~c(y+1fq8zhrc4jUWm!Xy;X`A)Hn!IHK6+~O&@xl)wI$PYYWqE`=8H)u zzo#ureotShd1~@?T9eXSv;LmO7#Upn@J6`8X0J_h%z0z#DyM8APMs-B zOt6KZC<>9OpOffnZ})RUE4JRXCKQ?*pr`*W+VmQ zpwjz6MQLVJSRkTd((K)3SKX$jkI6b@wVDYft=3Uy%K)l)(R@5B3nHpF?Mard_Y~3E zGMK^M%@f%H1u)*)9EQ=c@LwSCN1jsfod)nMiU@sM^f{JlqDHcZ4%>hA1s;8er#{2O zH_@SA;Tp@it<2;hjz`JXp2Yy^gJbZ&g2)GN(ye*$@MQ&yEQ3^FI6>Zo6g`q_cK0A9`ng3 zMH^Yw80vV#knl9&Cmpl%M>6!k`SIxP3UE<(!S?fVfD1*f%jN)lK1?yjxIU=U2)B4EM5o%8=2>qWF4S4!4(&N>ii`jLJoqIhrUWzgfv{)$_}{ zZO(t!(z@Cr|1{#>bzO2lbGi%T>XA4+=193sPm`M)6{(&Z*o(WWf8u2vrv^d2;GcX* zi%?yIhwKtpt2DD-iAqhXslo69KEH#rD_fVg;ojQ$R_TB;s@hrAp{1nkmMFRSN6mSw z-~FPkfjjh;8_8YJ8S_G#2ovCFL!Y7y9wLDVj>VVEt@Vhl-(;zM9n%qL6cvlQ_TwZ^ zp$dxt_q}cpE>hI9rQl0K^lzHIFzC~kE1x}`FMjkP#bh0C^f6Ea#+@jHc=@1ShYt%f zNmXDHj2$}Ofg_zZqG)|j(@Xx(r;-wL1*OrtR(#EStROIbxU&gVOEF!l%ts=6vMFW3 zZfsn7MNoTuON1yR7Y~+_(^FEf%>oL%JKSLX4YwYqxrUMDD0m7M7!hWh4eA5AwXsOe zZEQROqW1|_z#wQVl^LuGGpuiaQk@e6PaHqv+PC^eq2ew5h`odpuNh3wgRaXb}qnR+Cp#N)d7P+sYJ~A6M zfspVgih+4`;&Wjv#SrZfrs2;Mv3gJko)8AmLsk6MK^7%rQOs&PDG;7<5p@i(?XP1c z$!>6Rk=Yd3f-}mTL7?g;iqH1jgQv#wIY!!<3jYT>+%CkFgg2bA2%H@qzoN{jd&=2C zpmaCZoIs#ff7PRPocU|Bl~VcMd=fwY3<{ie@3vbJWMnyFKAHh{{ zHqt4eD8A-y6m;uuFVK%8^gc$FdZ)8WIug)Ui5aiel$s@cbds&FHwKk z30}XY1UNj56$tzkfb7kd7~-?+zYx&PM$vqiRQmz+NEMS1z4ae!L+sNn9BdMZ%wH8S zHPt@eN1MnON@Tb_d^-8HlVcon;T(X9@RorTD5UQUDK)nFDKwo^C9x}8Egqmtn$Oox z7R;ufa;Yp(fjR?A_$&J!DsF7ne zP|MX!X{zx7G=5rn7zM$aN`#B*0aiEDE+HZr;Rr?~emhGRd#YOXeAjb*5pRw-rPW{DjYW!I5T53S(VJM)PEC?N4?%`jpBj3`2P_oGo!JHE?v zxeLfXLrpn$2r27wX9MUtvl}=c7D0FoSHah~Z6rcf^V&&nY zlC&K2r6>(BjC%nS{K)%aal4bZ_<7SRD!QQ-x(+DcdJ}HAC3FSq2n7fgxJ%3nM@LG( zijW%lox$$B8yca?54x^4Cy=70s5)#XC}xjf(gnPDpoDnVbR-(o(bRF5XqM=ZM(F;! z0sgi+4)JRq*PDH*KTeLc;1cf_t?T*Kr^>QnHLH@{x9cubpK;QzvavN!!!(MDuggr zRaC>yk;dB6`QM-p+Eq7b#&g9ODW$qtgj9W`SI}m#h%Cxcf-`pcmWw~BsKTrqlf``^ zt|i+*%rr4GWnhqaA^cLC9J(@q?54+?kQCin=IWDz>C}%j9E=w?J_0u5CT@3%oQ$mB zs?)uehhZ?==Yomik3ZyLmcHluhjBIYyo6fF6Rp*NAHs_9+J+3K$l@`wB;m>*PEnaB zQ{oZSLxj#fucknE13m%AP+LWc9Iqiv@(KKU`{q#p5NZ-S`A{b4t@@jvm3gpCeNeCo zRohHF1LNWrI`@$&I7n@Xa4thzAyaf&wH>mHxs2e3xWws4nYpOEVL5cHOJaWf9rB*s zr=|B=x^joIQm5>|TqT`=+EWr_vRY}!r##X3?(`$weVTf#5pNI*<_^h>;CsE{X%Vo> z+2M#2l&%;!eXt%j;+WuyFlkPSknQD^2E9D*`GwfACiYacF1+rTR2}2;#`KJVu{#AV z;1%mJMz&C8(84rYnWOjtQtT!Pxe`^xvpiw6RMpfvF#`P-#XbFYLu zp~m%t_~L429dv8e0C%!n+REPqlkH~<8$QzkR0stB&_me7Aszeabl=qY@w4}`UDG#B z6EQ*fu34t;O0kGHgzn5|arERBj#8&khR=dGhI2!}Hrp64rDduAT?{(yyzMToa4O?0 zGZ1s{Dl59d%Pg+V@r3I1=i+we1kv3|wh+>_SMzLt3kxo>Z#4h*!JhG@tMgnG`>8I42o@f#%?^l z*6JZaI8RfIz8W)w<8fmLescw4&Rx<8_{~ zWuJ^z+Y;Gm%mUM;oYWt`O~%s~-NvZIGoAoQ+2#ORRqnUju3|VXO#-OSiIR7FoADlb zP%1Gxz}v|c4xq1?1`zoTec$>(_l`4@r9?g$11mwJIf zSACIlz)XxBn`dOUVSqjbJFJw_T04%dztIci((a#jbE621w0`$md5%WRMX;`r0Qrw! z<1viYND1hvob}CX*{M~Uga((A9Ptb^g_NAnPpEz_1+z2cE8^xrAV)g0u3!XhRY8$4 z6VRU99f=h58%-9|&U4kvQ4y2CtF*Ha=|9>G%fttTK{i;K=w*yB7pVf&3jA#F6%9_% zb5~}8Qqx+TDP3d+DBfD>(7`uV)K^?J$$45DmX4r2h>rc?ml8d>zJ1)$j427l3L{)C zY^-ElQ|fxpjqb!k+IY0Q(sHpWg1~#`uFJno!l(}2J{Qt~`mBg`%W{;)#83(q%@+FZ z5Tu79dBgbx;2r7hpDtQ39myu;ZxCE3^YF>R>9+*R`7%1RONsR8QM1!9bn+lezDAzI z9~Q8ohCLhRcBpbd=R_#Dfp~o-Ha`Ptp5r`!#`!}P33J4N#>ehZ<}JESp=_DrBg2rY zmGtKKr&>FZ9=@{|HHR=;%_~k?F#Kw|yDvB~_Szc1>>czodZ35*rRf2{Y8bG`EEPpnIA0>{I*HmP(`9 z1`msb;+PmZ{KfU^iumw~y7=EgEfl#8q8Ix@Kj_*ZI?51!y!af`2@eT0hb<cE=hy=5KdI!4C&52gP|P8L^E3{y!_znu_$H5 zYjU__L=1ljAj`^CkDP5Ui63#xwthU)=@|uMs>b`W(xpvbdyj%x;oZ;;Odq?_Osc+Z81jh6YVKLUb2N=YxZ z4*sB%J@K#nCI5k=MaX50pViM?>oGwVF`nWpxiv5oitK`JUasGzC-K@=eQ}HB|BgS zyhz8LgeI(w1Ryq&KfgpgW{twEftXDkEexox;nkcZFzK21cStW}K44(5Y9Na*%!)Eu zz0aZT1j`pBcSG8GincM$?}{h>e&FhEAG$)Y=d66PPz(1d22l(n_k6tK>Y$^QYyG(n zi@>Sv#{HNNRD-?dIzHL6adwkol8e|}fzjK?x%L_Y*<=`iXjBo`*)0!1#`sSx5m3hntRL;q@OCH7@Kf@kG$b{sdzt z`?i1szz!&a)Vkp$R$py(><-AhoG;eUF*P$Z<*BC@My2TQRt${uNAZ@=D>|k|CWDV$FT4BCz{VDfs`+cJ` zaF~Yvksv)xz@j4wvO^Nk5>~89F@-%->=L25`c+iP8KPpac!^Z^wa_ipwOcv=C2@42 z7VKME0FBZ`>rX~WwyeI5QW%y*ahkXba(j|PK@#s)egxm6R?4gE$YJ}YLMg1zkjfdutdNJgpM>X&phCEiBBxUz6Q8`^!1f5mqeEZLtOL131RX)^-dauJ}OxE!>&? zGzXCDfW{yV?kOB7!rh@Vopec6`D&7-4|84086M_?`5~V`22cG**g_zk*ih^BfQ}b? zHGJN+DWI>Xg{6vr2LhcGy3m>is9S~u${iTPp!Cfed_{^nTpcB`)PV<?77 zu&7qge3Ijt6F*=MMkm5@qQT~Y*jZ3H7bL(MCfRfuwm9!j5hiNFq)X4mKma%a*@K5m zV`dg`Vw+_$D%iV$`=%`9ZI8*d;*40+4ndeM9xDs zK?t=x880R9_uBpMCQy_OYuY3fuOcC3D5_U=bsRRE(<5Y?VWNGYpw;{qPbpS$1E=lQ z!SK%Gm$PSI9e==Rk_(cf$V+6V90kUG2kdjBnV<{L^M^+YO#BmLEY@x2wBc0z+(4ft z*70+X@iX5WKMO&r42_@DZ~P296HQ+P59~so_(|OHi*E7@f&s0#bJgEO`qh6(WQw2S zSmj~LuQ(#VIZEw2P5Ie6%a3FxKaw})M^O(RV}x9nRT0m(@a0LM%S0C@24Yzd($hOI z;xESzY_eLrdDHCzl(yu@jVdc5z)W0bDk=c<3&U;zj=4ojf>e7@vHYMuY_(YG)6a$o zyoNqhs?auYep^|#Ry+m0Aw=-6k+7MrDl1H~7N|agwb;kN8hY@O!zIwMVHzi*108t} zaREVnq@Kq#Pc9P~0&@qPS-2;C9;x3ye%E|_+Vu~Pgd%nmE~4{G*_g#_+Vw;@1X#W@tdZI<;L`$uqZItW>lbfgFaaHMWcKi4ssR8_7;O*{pyf=KIdONGLM&SS(oG zt_5uLtJ6+B$i`jWix~8ak)=wgQ)l|0Dcc#WtQD?nVSqzFeCIN)x?4<(|=&(qVV_}%YAVUfv5|Kbeq@W;4owNpC7rcWOU@I_mP>fgR}d4~5B6GDM%gkpf%nBV;{fcz9%{5BO^=KPg#D6|&iD<64xDKfuNWCYOC%K#3| zq2DY<$2$MkA;5c(>*^5pys`s;$8T8S|AdFM)bA(#V^qyoue+$?a(S6mqjXrwA|8- z+p@4dRpk+Xo^fYG!t^muZrlxzUtYLpDt~J8%VPf2;7%{x()U}H2o>`aGyn4C_Z0N6 z=;0XyfPc@kUB7rYj#=IL^55NaM|9YisNy*17|!|7+^WX>mY=sFr|ssAZmSp^CCM9N|M+Y#4>P%cZT=b$0^=7OPAd5u z#(QZf71q<=rN6=B`~Yh!lLEY(exp6b9sZLgO^7)p)jfNr#nW!;e=Xow;&@Qsw^ROR zf-+qte9zpT^B1$Xx0nY5`+fGV1?G;w9`V@=!mf7A=UdLo_zARJO=ll*eYBNtEq_g> z|1^KdJinatZ`CNbT-@lKw^jZ1sLqBCrI!sV-iSUX1j)F+&ClyZB{S9Kt% zWWcV}>j;5g*y51&>)kH?SNqjhjV@1a3L0mA^2i*oLhzs&FQs${z+ErvK;B-}|L)iQ zKMUUtZfQZz`R{Z@FB{!6fvbqzPVdi{cT0}T3wpDE4_s^CHWnCNuJ5z`+nw#t{X3|@ zcg}&Mf2ZJi9_-%)?VEx#QU1GQD%jWeT->6rCL;FZG&A6*^EWo1UwGo)PIvnGn|(Cl zH;Vpf)pUt&d(mmkHoDp9IGfF9JGndg z?B*LA|9#tAa?s#=5VS{%c5?PMyrjGNI}Ftx7T3FG9ENYpumNU&-R^8lyIw#6HF)VzO{$Z`Z-TX6nKLWsu zd$))+hv>3@;{Hcf|Ht=VsQ%UP@5KI4)aBgkO?!_4{rb;;;`|-EeFE(_%>Mk}A6!mW z++j`L%}Ix<>sRs#CnJO6LZ#r15joz%zxvrxYrplU|2xL3QS0#YS}($`DT}%Dza5^= z=~njnQXlo$>2vpq-#$-z0~u}exi(nrK9@`bBJw|nm^gMi*bUQj#C7039zY0}aVRFL zW4n&JG_qn(e8#^weQ!_fpLhGQ!n^#%^aTFc<`0hM(vYsstlM)JcRtXbIji&7wEW|p zAG@2p?(+e87rO0T|LpbtWmB<2c|NTB;ekcOCMbA(fr)*tAD2%tmKDW@w!_ zi+Zek;j=UTwlOxkj$C=traFme!VYt^&1%|%Wwb=8`a?3~Y0?EQ4;IOQ7WT)zk7YKk za^V{+tWW_ur??_hz|M$sVOs#U6ovi7s3;2d4xfHpKnpFv0d41Rj?)h7`Wu()izgKL z->bb%!aPOW%C^ZmeqiKb6+)u}Q{Zb)b_O0t`$Lgy!o?S>MNt$5rszN!0{H>t0U!v1 zKV}dFK@bEV1Xno(L9pX$G`#1neuM*U+UY}qpLg3yptf}*zInG@%pE{9TmAG@pC*UT z;gb^eh>3<0H4Ah?xOI{Y8$NHu`#8_`CZGQghY*ps_N2nTeIKZuP$)2jdtIuzOfPxv z%hLR^G{3CN()_YY6CJbWBsBk>HGj=V8LYYH@0yQUa}sN=x#pT{t~m?|g@Be9ml8_K zbO4Hn6pRYX$dpPAU@E0ZDlDVY2NDa)N$G%$hklN3tI$i(53lIj5ZsIZ`<22eRk zm0ns>U`8u0DHxX)l$8|eL}ev~;eb>EqtXY`%gB^U0dbOYDG~4{m8}G*2Bn=k|8G3~ z$8`XGzJ$Z0K&UFY<4|13p*DOrd`_s7P=N0^@7p$b-}VY9zzV5yNTnj7GRUa6CUmgd zo&rULW^2SoQPnh26l*dDlR9U$OmCTUy22zdn#J3a!CL2g?e(m4!0r9H&XKmG!s$V7v8>U^8V;20b= zUUZ*2zM+?8PhN={l*l^?Pr^sT54V`2==fubnrE5wMN<_`w;nfl?XEICh%jx$pz(qT zvj9p!wZAk)m?aTObn>81Zfar8aoVFclqWiUo)OWviKOYhsO26PVc0m38$qxm>6{A* zaoz8yz#xs3s33+wb+jcIb{>9wDe)yAKc-&(d zv79K;Sw8OLMDI`hQF zVXDHQQwFcFCRNcaSy@bJ$lcm$4zZY0>8!KNEoD$si~5G@7R8$qZ)!&W4zK2#>v8)y zlhfvP8c=@fPS3q)dsIhs+H`J#;FtThKoI=ZO+gTkcY`4K;7) z(u5-&$)wsN-4@ZxGbegU^rkzc&6pIg?mjyqCET;U#YgdYDVLoI4-M_`;ji8pGN9*@rZKd;H}KO?Ys!^bpv1jf5_ zlXN9wlCDJlJGamIbN-!sxUD1v`j8@^$92X#r+BA$Wz(#4s;d6;&QJ6F&QtZz{A6Bz z=hUBnq3`_boXj@`flBrbf&QkSV^th@;m=ss{1=JskWbg=ifPR33?l|)lw}n zdaC>XbCZ-5!TYb(``R*9$$Vw7h+h1;=(JYfym5+tZlA>dk>oSUhj7r7fJCoX9{+r4 z4$rK@=!^P(tI?kJ9REe%w&zH~p5vpYvoK1As!6&M5#deVJpSkQ9RL6I)%F}e$EYse z{5k)8qjH9UeH<=L)5pz_<8zNU>3ti1&ioN`F{<=}Bd)oo zaXw%(ivyd50GrtkV6zQivkYLf89rt*e9UIx%&ZKYSpzsT4tUJ$20UgN@R<47F}nf6 z?1LIXYzH-h*uV&4UAzba+u?$B?Qj9sLS|hJ$VOlxvn*K1U@K&{#tNB>6*B9A3fT-5 zGV4+y(;$V+x>Cq!*vPB|HnIq8WY&d^4Ca#AA1>Jrm(1#L$!fS{FkCYG!X*}$3kYlwra;!0MtoFyvn!?R$W!$V2+^n_&4%QPKtabz%s|^~fO+jOQ(O7Ma8SBjj zt98X#Z@^fsj2A152v+-n18WBktk#9i+5*M;0E*SJK(W41tk#8MP2siL9>DuT_KBYG=Gw3SO&~;I+nhtt(!uRqP~+4(uk!*0{-W*~qB?f*k7tf}9!;gV`rSmX#tDb6tEZy zSj_(T5kmndrUNHt0#1wuPRv?>6Po}hW?|sO7{G~H6F4y*C&Ws~5wj%Zh`~sR^$;P3 zf(S92Lxk7}IAT3+Vmey*!GiU{!VMN$0I?7NQ31r-06DRO4i$XBX5dHSi9GKf!WXb7 zF7=xGiM*;!Ue&&;t-|9tjwS%`Dot0bePR^NXkMY{DT6nMI@z)2zTh*voaB@}N==s2 zOaqH*sFW5rvLdn>0SJJk1A`C%aIjE3D3pdGkx(2Y4i{1f6aWB5fMi-cG9(hm0dXi8 z2!w)xP!Jdj2E#!R!(bE#p)3n(C%riU+qK$3sUq!#2<6~sV!zfCS#@}7KN~7Y=}?3C z9On5UdQL~AVj4_{VVy>NBOZf@X--i=IF%vrDEydd+46~v@#FUVw59)!=8NcfXTT9nqMtuyfH);%E%0F07;ps~9_8$Nl+adqOo zfRy3w$jn47sfSiz_rQBNlq%L(0M?{Gpy&fGr-B9*cni_{;zl=Bf{=wyPl(rq50)&o z9T!3vx?5~Z*c4lr5aCM@wgQKMb`~!u50EKTwju2`9*~9bp|?0HN9%@dPHhgrb&{YN z!z`$XqksR>Isd2y1Pv5WBf*Vf9!MZ~eq!b!R^Vrd?^)rk1;2aCmj~+%^C&)mN0A2) zm2#lzJq+VL7`69Mqk#`n1PhjpG|a480HP-jGmKeTy}h>HITl?c0X7&#Hz#ZcKPM!uHC{^Gw!Q1ilG(5~GJUAab zVj(=3kycRnb_BeoxUoUpWw)S;?;tu_lE6cFfx9Bc+Y}4eUN)Zlw-BgXkoz6Mq}sai zxrc+Zne=%VA!rkM^d{26CQ_MA-R~WG@4HEIYx9wPhgLh=bT zD>Ayeanj4pz*0}#XzFw;>g=b=m&}krqfV)dbUNbI7_TG)Rp5B_vtxW5r%L~#^U@V> zZRn@QdIx6|p|q^(SmUQiR*o=W`cevO4UmjJu;AAZMId`oJ$Hc!IK1*AX8I@lGZ2I` z%N&+k;TA#@Zt?#UM_`A{%2vZ#$fW0G_ENcLAE9uwPdz0t>zg3fq(0O!i6`<;OO3}o zOH|AHU0QV&Hg+Yc15cwm5d7&tsG2&ENm(7Z?+|q@5th}Vp_&dBDPO}etb?;f3o;{6 z2fNU+rj$+xJc2r$gselbbUL`=sRKf0I{1ly4Tue8sC!O_&kE}BY$F}6(~>~@9fKmi zl@a$>hxPeVaXUFMV<$8@qJxSb4%8VIR8M>jWSvj-idt}(HdFz0KnS=5@9!TCxh6GZfLC4!1hm6r(N?dbx{c#_uvy$wNcasD3;!G zhdoN1@Rb~O<-)AhaH=mbG=^31X4kINb@z|(4z(@gdNP}X6=rVQx7GlshKneAa{vw?r_CJnR5)!VwQGn| zAVDDy$LscVK&A0&p=v}wDXCTHf3RgYT0lq=ndD404}A{Dkj6w5&14uWcnGdN0*TfZ z1EMVMdNT)TIF!O`8RXgq3}vCF(lTR1ouZV5b|)b{xI9#{Xsf4_g}Bq8GD=8-XoMvC zw1CTpK6X~KKGE@S1*Sod=QObzcJ1ZxpmvTl>Uj4DXSy{1AX6ArFSe=$rQvp(fp-%! zs^!1?mtD|BKvb*wRp*6ch=!pBw0yJC{0?^<6g-Af%z>#+$FZOHEWZ4&MKZi5YDU-;6J>s@*|CPoW->r3hS_I zZML7+TaW2f@VZ5=;xYn3fSA2*U7U28iXvY}Xu9K^bJ^(OmZpwTCn6+J!-Lx!$}=Ebh|UG?Q9jBLTe2G&!p-n)L*YNNrT2``ywFtu%lavH z#HbB0&xwtzAuWyr7@VWNL7>pa*$D~xRFP;uUei28R*=ZilS976^su*Q?3^f~Lj+>~ zAJSqk+x{TWC%w-B_i-lRh};7cxRC(drCqWeYzVD~nTu4d(EOg;2&D*AmKHsMG`r-c z=D{OD{JP@}Oq1103S^&WYg}~iZ2}0oOHUp>E6Luqj_zw?w8{h~djB%9>tbrjq0F43vXlqRo zr+Zg<7zim0C~Hl{_zp&Ga72+aU(C~TZLSss@tI4Wxc)wWD7GQzB&0@umcuqEwIHvB z(W$-6Ay$=nML7RQC(?N3KC^%*7)pI5!A>>0^vPh=cce_)2W3$)w9W_qc0#EDmZLw& zj>NweSo4E4WMhv20mwsrN?9|5I{foq%Bn?J`?ai7B)d0j>{LkYkfR!%`tu9v1KlJZ zL{P}b%qOMSn1?U}%7$Xcve`c%O{+IJM{@7$iO9U^%9S5Fb`Q$Xt09n=dyf1@hCWi~ zk9z{pxV7NEtb(W07HCy^F}U@D(pEX7Klh#^Z}f+dQ_8{|@Iw&HPP6xvq*{ePYvpiCrCkVx}ZGB~Y(0vRPZ zpy(0+NV7wk`S22DlqFLsWGu3#9E;UwaV$e{AekkNwb+Qs1snd8*559lQ+NEGOQSFI zkVXKMJ${GvV(rB{ik<&URL~(@fh5?*f$(+l=LI1AU`BZIF*Q{7- z<&$a5lqBE_NA?cO2MiVhF}uCkj!|~%;HfRQbgji|1RhWLb}1U}v!dt7jcYvFCviLY z5$G9fe50P7+G@CGMvhMr3Fs$JXwM@!iw41)t`Ik>c#1Qt8|0JvNk%&>de2ubhTfa! zA1bE&EJ%V;sqdL?kRj$E5~qpowaY7olG`o zs$S~wC$F?|>$R9s>jRKrSb%Zu_eddx$wrevm=JB5?+DZI?4p=qb8Py6%0jneE9^4SqAIXAF@g9E8y}4sZD1eQ0;4HNASMh$Z1K=N0cT z0y>|Xj&3IThCs0|%d=th$^P+h2RmlBG1+RkNxFMRLhN0t8d%eOCR1C|O`1DM-uA~J z1ex3xentW@JIAlbuIP-NsEvu5+wC1`X8WF6E=#bK^T2{SBQDQt>xk{Fa>*oK1|BCH|(5|233w0nt%K@nQ0BOIoUBf zv`=PA55aQAp?_YiON^!X(C0Z}Bfj7fNd|gQ9UT$lY{$Xmz4J5AP=~GSr$gfY?Tbnx zCD(4^BL)yKH)%zxpIA1$Q#1)AqISD|5%%haMW;)j_AGZ~PMGOKwIEbvp!{(7&xrN| zFBL-q-d@8c1W+cr)rD&8O8ql$9N>W#m@Dxt0B2_(Xlm)mXDZBwp{{*G`C1;pMPS;Q zXcfxz8;nxmjdP1XktcS%*Xu+VfxmC1=R18}^98)$?Dil;RMeKE8tbI)bbzPEo66Cc ztaQFn#oqx_D2{J%zEWWr^V2peS|cMR;epqfTpgcgyYIb-|W_>lHP0x)qjN?b@h1;Fj6o zteUi`wrLs}^6>J^xdV-mzSRp+TxaX}d2 zEf&fPSs8|t5rXGO^{_AoLC=;Aae->YMFH?VzDKu%aHUW+_Fr*&L?09BR3%pzyWg7ERS|GgVEg1(MNMG1 zW>zbj*2$oEP1#=e#trv{tErZ!Ll#Sq^uv`?WasyxgN6*H26cB0gAT&`u^Dw8 zUq0|0IQ>hE%OFbm#DO~z;BUT|@SI^Jl8k*P=#h306Y)25KRj*=1`Qz5oaFMmn9ExA52hx!o$pL$A11}#RBW3|AmWkRMzXGO)SkGL5yv} zC%A8h%ccU(!H?GjGD>8IT8vS7r&x9PN%SaxADxQGPY&bMR-F9o6j!`oVzW*08J0%E zX{+sYfC=xAV$HAI!(jcvGZAwsd&6nUCWU*4`ngPIj(EiUOU>87I~y5<26*sQsrJGF z+7VrIHN1a&WNXAc)0AX6Uf6f4qQ9_qbFT1d!57NX!tOuT< zxCM&EIA;pmH}I`iEYjcg}^`Vy!CN_P zg7sv*D)jp|2@@iwi#B5dpF2}Epi2IKQpFEp9qoyc$YAZL$I~CwLKG=UaAg~`e-shr zy=aoRPE_1PN#MK_$G91WohkppO5yaFVzyyuK8}p5-dz(O+>)B zlKxU;BklnzHrPCw5@5=&S3zCJ}A59 zj{#3ifyT3#7W5f>#bg?(W)1}pj_Ddm@Xk-#_{y^~&03z_?4($k38eTr3e?z7be);5 zpKTp?XpcABB$61lS_B@xgguckBIcJ`c!4##;SA)nFqu&`x}6f_ufb#30c0Hsbi^p2icpsbl~vQAntdz0 zMt?p)+#(4KI5I=thEp0?T>mbGPq)V3T1Jgwtb5#!>Mn46Pu9Jp9TZ%QX~?t$SA(5^ zdGVroq(p`hQryvkOzk%T`MB{4L+W~D6rNZFbiiF3zIy(Bs^%GKfQ(njTQZ4a0G}_E z|9DXo&Fo9;QAa8S*nB`f+-h4T{*a=dti)hVu~nAZ5>r}4iW}93YHF?HG}R{}7`y)- z&br?RB}L%gn2gDyfV#~f4zREC2ZyB2n)t$_Oq$jTgWR6*gmN`&fYp94fOD*Atvg(q zmBU_zjA#*LDPBT2PUo#grNJ^`gtSkQ0(TkIE|FIl_@Y@=6zarxjUr-#E2-t~ylXLw zN)wGfUT*2{jM@iMB%wEGqOp2CiaRo>4g=tR4~Y%Pr%rN=m;pf!`AJi|dJ-HcSD^yzMVz(uq+?PrWXWvVn|QF?=Skf)3nV9SYlE?1oUX5FzA z3?>8H-Ds~jV8z~EqH1_!8H}p`duxauq+WHrsVQZWV-?+3+!GfD|A{K#@>OyCw`jeD zL|wK`0QB^CR}QY3`lo;toDhXL7GbqKOotgEbC=(8@a)^l-!L>M12gh>y9UCgHaFcg zx;r!aUawQ;RfqK`o_ET9+|4+qOE7E3uGTrJ!_q?hR&?mmoWSeMq0rE{zgC>WB>3>W zr2C*b%By6?zeBq3%z9WfvsZcvOHYod>qlBb)%%ooHe*FAfhTmg?uZpK_n0V&*|y1? z2A8oJGb-N`3qAnc5aav@e>^B=*5V7s&PnXlQbHif&0L)%AiKCfb2XVc0(N2^YZxpX z_+X~-2ZuhZy4iV)Ld3QLOrOVyMV2)>%n_$LopCNYC^IZ~>+OdD^c=mKaIdWby+>}N zelo?Qn2 z9wi_O<)_LzXUIS3aL1JvA{rAu(Q#)7;qT63Bx;QHoiEcxcoh$GFBDh~TO6O!5uNyj zUgN_dNc2-PEi4$Pg%B(J(w!TO-X&S165 zM%}Ld>;o4GzcatnSD*Vdy_I6iE$u@~IUHfLgf*EAWByCQc2aZp--Y4w>>E2Ed@)6o zd_g-Y%i}_(vMV@qMT8i?@<$a9$8mMdTBRbXK*+DfT*ai9{?M13VQ7m14 z0DWlQkn;^0_`Z$QS*2Jjm8f8*h@3IJ{>2LJ*I%Mqsto z3Q#F4IRd~Hmb*p&A27wrh`Xx0_7LY~baFGztf>fgl48E$7qPVA8oDk!246ViVBzIV zdzrir+xd%rs5-Dg#v?PFT0>LI%UGv_PRSw#<(i!&2%6VpAT=ZiO_9PX*Y7_0K`MVz ziJb=v;;*FgQLd^M?y`3i? zSrTRVD|y@2=a)eJ%LnVfaO63aD&LATD#q0q7C>LsK{rnYtVdBSZ2%5LnUjQ+qAk3^ z>EUoGt@xqDNW~QchVzLa9MH>y_GdSAe3HLK%=L;x+74}KN{`kP9w6g_Y&+>7A|-+V zAgrwUIBWx7g{8P1xr6GX>!e-|cYv#{Pn8$$aODS80BwmmCKMMjr)Kz&CE7#oqizJ| zr?43+p*QAm@wWWCO*A8V+DxAlt6U*k%o&2PC>Cy|aB47##Kw8H%Ql${dZsHTi>^6d zKAwrBn?ns(NUP*fD?9eo@o99xJY4qWV=R&PEtcFx;r(Fep-N8g2(5%iyqiii?Q3)$tgwSDE_O-zT zC${Iz?hoQABJXwzW_jDu^NW-WKzD*X>G`CMcVO9i14ESy+*!!Vmlt$)%%E1s zCC1lDil08j;`1nrNt(oqIF7cIWFzeTEIMk5W&g4!L{}|=T;z$(S1g0K#qd8Cw-FOF zcqc~KgT&sE5mOW(0&@~ENZ??I`55AzJcStl&14xk6uWg!Q&o}lD&r#LM9$^I_?d{S zKopa?5-|eA#I_WOsjI`w?GXp3*<>jO14G&!V#6e2(o&$u0f>DxBOa?eF=!yDY7k#E z*Tdhnh`HXI7#%@FY(T{@VSEfJi4m(0cUXSIyTQbS_F*kG5oeztE<1&oWxFtzqi~K6 zh{?GdUd?S`XW)!b98GTGLs#kku`S6k>O~HBMhlbY3L_R~#GW!uF*ht+w1xAdRpEFH z&EH9|SA{J)Hd-Qbwwp8UCa=AKCFOqe%6r5O+%F36Zg+b2dHU~6eW{647oOLA)ARfS zLmLsvQMt2_fY(BraET?Zdk`03LdgNx5-z67+EUeJ_JOP+X6q6zMD-jmLq30Lf{3PW zCPS^F9t480z2gc4Yh9tEKF`y-t^r$c%t{BvGEbr`N&ZEzu&91gQ%KB*UaFXX-fZo_ zT6Y}3sVlalTMrVcLq_#O3v;cfa6BMzjFz5jiNpoj>uB^>_e7*wuC#{|5XF$KeK%%l z)m-s>akYc9F)*jMf5GB^k$i5+*kC}n?fB=mdt5mp8gi#_tv3}9$3SrJb}0ksva)vm zTGrHX7!Zz}pj1+45YhMB4(GY**nuX*-A#=9V|}_A<6jEpr^%|?76td-Y4J_J=a`a| zty{rkj+`$q>9jA_%#Y`jYv%`geY%{L=Q8H^v|PS*{NF)zf%$Z8(z%cozjjlc4d9eeiBazy}34 z>ZWsmF`SDdnD;U)7`|*l2w=0T32#Bv&33@xk|HxXj(>4z6R;tI$pO9B6kj;Vfv|~< z18+hbzA8pOE1zfwjS}zbbV_Ikdb=ONvOpGKA_n&RV&iQ<4PK>pfLibYCey@|`K2nR zY2gVLlBIe@nPm{7c4pm=W;{BL|GL==tTkZ?514~muPgV%0Dc0f!+oq(0$}qbo{oUL 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